From f1904a93f5ccfbd69b436d68795e94c3525ee33d Mon Sep 17 00:00:00 2001 From: kingwl <805037171@163.com> Date: Mon, 16 Oct 2017 15:50:04 +0800 Subject: [PATCH 001/173] fix completions for string literal types with template string (#19162) --- src/services/completions.ts | 4 ++-- ...rStringLiteralTypeWithNoSubstitutionTemplateLiteral.ts | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 tests/cases/fourslash/completionListAfterStringLiteralTypeWithNoSubstitutionTemplateLiteral.ts diff --git a/src/services/completions.ts b/src/services/completions.ts index 3c233f4dbe8..f1f37e46356 100644 --- a/src/services/completions.ts +++ b/src/services/completions.ts @@ -213,7 +213,7 @@ namespace ts.Completions { function getStringLiteralCompletionEntries(sourceFile: SourceFile, position: number, typeChecker: TypeChecker, compilerOptions: CompilerOptions, host: LanguageServiceHost, log: Log): CompletionInfo | undefined { const node = findPrecedingToken(position, sourceFile); - if (!node || node.kind !== SyntaxKind.StringLiteral) { + if (!node || (node.kind !== SyntaxKind.StringLiteral && node.kind !== SyntaxKind.NoSubstitutionTemplateLiteral)) { return undefined; } @@ -278,7 +278,7 @@ namespace ts.Completions { // Get completion for string literal from string literal type // i.e. var x: "hi" | "hello" = "/*completion position*/" - return getStringLiteralCompletionEntriesFromType(typeChecker.getContextualType(node), typeChecker); + return getStringLiteralCompletionEntriesFromType(typeChecker.getContextualType(node), typeChecker); } } diff --git a/tests/cases/fourslash/completionListAfterStringLiteralTypeWithNoSubstitutionTemplateLiteral.ts b/tests/cases/fourslash/completionListAfterStringLiteralTypeWithNoSubstitutionTemplateLiteral.ts new file mode 100644 index 00000000000..c5deac5123e --- /dev/null +++ b/tests/cases/fourslash/completionListAfterStringLiteralTypeWithNoSubstitutionTemplateLiteral.ts @@ -0,0 +1,8 @@ +/// + +////let count: 'one' | 'two'; +////count = `/**/` + +goTo.marker(); +verify.completionListContains('one'); +verify.completionListContains('two'); From dc24f77741c5be2c48b69f8b816eff75ffcb04d2 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Fri, 1 Dec 2017 15:00:07 -0800 Subject: [PATCH 002/173] Limit recursive structured type resolution --- src/compiler/checker.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 0b8ba29a710..7897d5c0ece 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -6171,6 +6171,7 @@ namespace ts { function resolveStructuredTypeMembers(type: StructuredType): ResolvedType { if (!(type).members) { + setStructuredTypeMembers(type, emptySymbols, emptyArray, emptyArray, undefined, undefined); if (type.flags & TypeFlags.Object) { if ((type).objectFlags & ObjectFlags.Reference) { resolveTypeReferenceMembers(type); From 7cfe6a4cdbed168fc670945a16b24cc3ae51ed93 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Fri, 1 Dec 2017 15:00:37 -0800 Subject: [PATCH 003/173] Test:Mutually recursive types do not recur infinitely --- .../mutuallyRecursiveInference.errors.txt | 10 ++++++++++ .../reference/mutuallyRecursiveInference.js | 7 +++++++ .../mutuallyRecursiveInference.symbols | 18 ++++++++++++++++++ .../reference/mutuallyRecursiveInference.types | 18 ++++++++++++++++++ .../compiler/mutuallyRecursiveInference.ts | 3 +++ 5 files changed, 56 insertions(+) create mode 100644 tests/baselines/reference/mutuallyRecursiveInference.errors.txt create mode 100644 tests/baselines/reference/mutuallyRecursiveInference.js create mode 100644 tests/baselines/reference/mutuallyRecursiveInference.symbols create mode 100644 tests/baselines/reference/mutuallyRecursiveInference.types create mode 100644 tests/cases/compiler/mutuallyRecursiveInference.ts diff --git a/tests/baselines/reference/mutuallyRecursiveInference.errors.txt b/tests/baselines/reference/mutuallyRecursiveInference.errors.txt new file mode 100644 index 00000000000..ac6b66c7b5c --- /dev/null +++ b/tests/baselines/reference/mutuallyRecursiveInference.errors.txt @@ -0,0 +1,10 @@ +tests/cases/compiler/mutuallyRecursiveInference.ts(2,27): error TS2536: Type '"a"' cannot be used to index type 'RT'. + + +==== tests/cases/compiler/mutuallyRecursiveInference.ts (1 errors) ==== + interface T { a: A } + interface L extends T {} + ~~~~~~~ +!!! error TS2536: Type '"a"' cannot be used to index type 'RT'. + interface X extends L {} + \ No newline at end of file diff --git a/tests/baselines/reference/mutuallyRecursiveInference.js b/tests/baselines/reference/mutuallyRecursiveInference.js new file mode 100644 index 00000000000..1a12d8b3c2a --- /dev/null +++ b/tests/baselines/reference/mutuallyRecursiveInference.js @@ -0,0 +1,7 @@ +//// [mutuallyRecursiveInference.ts] +interface T { a: A } +interface L extends T {} +interface X extends L {} + + +//// [mutuallyRecursiveInference.js] diff --git a/tests/baselines/reference/mutuallyRecursiveInference.symbols b/tests/baselines/reference/mutuallyRecursiveInference.symbols new file mode 100644 index 00000000000..e956811b48b --- /dev/null +++ b/tests/baselines/reference/mutuallyRecursiveInference.symbols @@ -0,0 +1,18 @@ +=== tests/cases/compiler/mutuallyRecursiveInference.ts === +interface T { a: A } +>T : Symbol(T, Decl(mutuallyRecursiveInference.ts, 0, 0)) +>A : Symbol(A, Decl(mutuallyRecursiveInference.ts, 0, 12)) +>a : Symbol(T.a, Decl(mutuallyRecursiveInference.ts, 0, 16)) +>A : Symbol(A, Decl(mutuallyRecursiveInference.ts, 0, 12)) + +interface L extends T {} +>L : Symbol(L, Decl(mutuallyRecursiveInference.ts, 0, 23)) +>RT : Symbol(RT, Decl(mutuallyRecursiveInference.ts, 1, 12)) +>T : Symbol(T, Decl(mutuallyRecursiveInference.ts, 0, 0)) +>RT : Symbol(RT, Decl(mutuallyRecursiveInference.ts, 1, 12)) + +interface X extends L {} +>X : Symbol(X, Decl(mutuallyRecursiveInference.ts, 1, 37)) +>L : Symbol(L, Decl(mutuallyRecursiveInference.ts, 0, 23)) +>X : Symbol(X, Decl(mutuallyRecursiveInference.ts, 1, 37)) + diff --git a/tests/baselines/reference/mutuallyRecursiveInference.types b/tests/baselines/reference/mutuallyRecursiveInference.types new file mode 100644 index 00000000000..3c0b77e00bf --- /dev/null +++ b/tests/baselines/reference/mutuallyRecursiveInference.types @@ -0,0 +1,18 @@ +=== tests/cases/compiler/mutuallyRecursiveInference.ts === +interface T { a: A } +>T : T +>A : A +>a : A +>A : A + +interface L extends T {} +>L : L +>RT : RT +>T : T +>RT : RT + +interface X extends L {} +>X : X +>L : L +>X : X + diff --git a/tests/cases/compiler/mutuallyRecursiveInference.ts b/tests/cases/compiler/mutuallyRecursiveInference.ts new file mode 100644 index 00000000000..41cef0f54c1 --- /dev/null +++ b/tests/cases/compiler/mutuallyRecursiveInference.ts @@ -0,0 +1,3 @@ +interface T { a: A } +interface L extends T {} +interface X extends L {} From eb5d8d0dd73ef1847d09cee8354f74e494b59168 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 2 Dec 2017 20:56:35 -0800 Subject: [PATCH 004/173] Prettified timestamps and error reports in --pretty Timestamps look like Gulp's, with grey times inside white brackets. Files have cyan filenames, yellow line and column numbers, and grey TS{####} errors. I wonder if those are actually useful for folks using the --pretty CLI: are they used for anything outside Visual Studio... Can we just get rid of them? Re-uses compiler/program's color logic in compiler/watch. The relevant variables are now exported and marked `@internal`. Is there a preferred way of re-using this code in both those files? --- src/compiler/program.ts | 41 ++++++++++++++++++++++++++--------------- src/compiler/watch.ts | 10 +++++++++- 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 4088a6951a1..4c743ce89d0 100755 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -241,22 +241,27 @@ namespace ts { return errorMessage; } - const redForegroundEscapeSequence = "\u001b[91m"; - const yellowForegroundEscapeSequence = "\u001b[93m"; - const blueForegroundEscapeSequence = "\u001b[93m"; + /** @internal */ + export const foregroundColorEscapeSequences = { + grey: "\u001b[90m", + red: "\u001b[91m", + yellow: "\u001b[93m", + cyan: "\u001b[96m" + }; const gutterStyleSequence = "\u001b[30;47m"; const gutterSeparator = " "; const resetEscapeSequence = "\u001b[0m"; const ellipsis = "..."; function getCategoryFormat(category: DiagnosticCategory): string { switch (category) { - case DiagnosticCategory.Warning: return yellowForegroundEscapeSequence; - case DiagnosticCategory.Error: return redForegroundEscapeSequence; - case DiagnosticCategory.Message: return blueForegroundEscapeSequence; + case DiagnosticCategory.Warning: return foregroundColorEscapeSequences.yellow; + case DiagnosticCategory.Error: return foregroundColorEscapeSequences.red; + case DiagnosticCategory.Message: return foregroundColorEscapeSequences.yellow; } } - function formatAndReset(text: string, formatStyle: string) { + /** @internal */ + export function formatColorAndReset(text: string, formatStyle: string) { return formatStyle + text + resetEscapeSequence; } @@ -289,7 +294,7 @@ namespace ts { // If the error spans over 5 lines, we'll only show the first 2 and last 2 lines, // so we'll skip ahead to the second-to-last line. if (hasMoreThanFiveLines && firstLine + 1 < i && i < lastLine - 1) { - context += formatAndReset(padLeft(ellipsis, gutterWidth), gutterStyleSequence) + gutterSeparator + host.getNewLine(); + context += formatColorAndReset(padLeft(ellipsis, gutterWidth), gutterStyleSequence) + gutterSeparator + host.getNewLine(); i = lastLine - 1; } @@ -300,12 +305,12 @@ namespace ts { lineContent = lineContent.replace("\t", " "); // convert tabs to single spaces // Output the gutter and the actual contents of the line. - context += formatAndReset(padLeft(i + 1 + "", gutterWidth), gutterStyleSequence) + gutterSeparator; + context += formatColorAndReset(padLeft(i + 1 + "", gutterWidth), gutterStyleSequence) + gutterSeparator; context += lineContent + host.getNewLine(); // Output the gutter and the error span for the line using tildes. - context += formatAndReset(padLeft("", gutterWidth), gutterStyleSequence) + gutterSeparator; - context += redForegroundEscapeSequence; + context += formatColorAndReset(padLeft("", gutterWidth), gutterStyleSequence) + gutterSeparator; + context += foregroundColorEscapeSequences.red; if (i === firstLine) { // If we're on the last line, then limit it to the last character of the last line. // Otherwise, we'll just squiggle the rest of the line, giving 'slice' no end position. @@ -324,13 +329,19 @@ namespace ts { context += resetEscapeSequence; } - output += host.getNewLine(); - output += `${ relativeFileName }(${ firstLine + 1 },${ firstLineChar + 1 }): `; + output += formatColorAndReset(relativeFileName, foregroundColorEscapeSequences.cyan); + output += "("; + output += formatColorAndReset(`${ firstLine + 1 }`, foregroundColorEscapeSequences.yellow); + output += ","; + output += formatColorAndReset(`${ firstLineChar + 1 }`, foregroundColorEscapeSequences.yellow); + output += "): "; } const categoryColor = getCategoryFormat(diagnostic.category); const category = DiagnosticCategory[diagnostic.category].toLowerCase(); - output += `${ formatAndReset(category, categoryColor) } TS${ diagnostic.code }: ${ flattenDiagnosticMessageText(diagnostic.messageText, host.getNewLine()) }`; + output += formatColorAndReset(category, categoryColor); + output += formatColorAndReset(` TS${ diagnostic.code }: `, foregroundColorEscapeSequences.grey); + output += flattenDiagnosticMessageText(diagnostic.messageText, host.getNewLine()); if (diagnostic.file) { output += host.getNewLine(); @@ -339,7 +350,7 @@ namespace ts { output += host.getNewLine(); } - return output; + return output + host.getNewLine(); } export function flattenDiagnosticMessageText(messageText: string | DiagnosticMessageChain, newLine: string): string { diff --git a/src/compiler/watch.ts b/src/compiler/watch.ts index a9e5fab2026..94cf7d87256 100644 --- a/src/compiler/watch.ts +++ b/src/compiler/watch.ts @@ -48,6 +48,14 @@ namespace ts { }; } + export function createWatchDiagnosticReporterWithColor(system = sys): DiagnosticReporter { + return diagnostic => { + let output = `[${ formatColorAndReset(new Date().toLocaleTimeString(), foregroundColorEscapeSequences.grey) }] `; + output += `${flattenDiagnosticMessageText(diagnostic.messageText, system.newLine)}${system.newLine + system.newLine + system.newLine}`; + system.write(output); + }; + } + export function reportDiagnostics(diagnostics: Diagnostic[], reportDiagnostic: DiagnosticReporter): void { for (const diagnostic of diagnostics) { reportDiagnostic(diagnostic); @@ -131,7 +139,7 @@ namespace ts { reportWatchDiagnostic?: DiagnosticReporter ): WatchingSystemHost { reportDiagnostic = reportDiagnostic || createDiagnosticReporter(system, pretty ? reportDiagnosticWithColorAndContext : reportDiagnosticSimply); - reportWatchDiagnostic = reportWatchDiagnostic || createWatchDiagnosticReporter(system); + reportWatchDiagnostic = reportWatchDiagnostic || pretty ? createWatchDiagnosticReporterWithColor(system) : createWatchDiagnosticReporter(system); parseConfigFile = parseConfigFile || ts.parseConfigFile; return { system, From ff7510dc928be449f27ad2be033d8dd05a2e1b12 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 2 Dec 2017 21:36:36 -0800 Subject: [PATCH 005/173] Fixed prettyContextNotDebugAssertion.errors baseline --- .../reference/prettyContextNotDebugAssertion.errors.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/baselines/reference/prettyContextNotDebugAssertion.errors.txt b/tests/baselines/reference/prettyContextNotDebugAssertion.errors.txt index a621d52ebef..f03b87ba947 100644 --- a/tests/baselines/reference/prettyContextNotDebugAssertion.errors.txt +++ b/tests/baselines/reference/prettyContextNotDebugAssertion.errors.txt @@ -1,10 +1,10 @@ - -tests/cases/compiler/index.ts(2,1): error TS1005: '}' expected. +tests/cases/compiler/index.ts(2,1): error TS1005: '}' expected. 2    + ==== tests/cases/compiler/index.ts (1 errors) ==== if (true) { From 988f9ac641128cc3b201c0399332ca24fffa4bae Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Mon, 4 Dec 2017 13:29:51 -0800 Subject: [PATCH 006/173] Fill "empty" structured type marker with early symbols The same way that getResolvedMembersOrExportsOfSymbol does. That functionality may not be needed anymore, in fact. --- src/compiler/checker.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 7897d5c0ece..b608dd1c5e8 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -6171,7 +6171,8 @@ namespace ts { function resolveStructuredTypeMembers(type: StructuredType): ResolvedType { if (!(type).members) { - setStructuredTypeMembers(type, emptySymbols, emptyArray, emptyArray, undefined, undefined); + const earlySymbols = (type.symbol && type.symbol.members) || emptySymbols; + setStructuredTypeMembers(type, earlySymbols, emptyArray, emptyArray, undefined, undefined); if (type.flags & TypeFlags.Object) { if ((type).objectFlags & ObjectFlags.Reference) { resolveTypeReferenceMembers(type); From 98b64db811b01302c550783b72fdc4840db468ac Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Mon, 4 Dec 2017 22:28:56 -0800 Subject: [PATCH 007/173] Re-added blue color, with corrected 94m code --- src/compiler/program.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 4c743ce89d0..6dfd63cb9d3 100755 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -246,6 +246,7 @@ namespace ts { grey: "\u001b[90m", red: "\u001b[91m", yellow: "\u001b[93m", + blue: "\u001b[94m", cyan: "\u001b[96m" }; const gutterStyleSequence = "\u001b[30;47m"; @@ -256,7 +257,7 @@ namespace ts { switch (category) { case DiagnosticCategory.Warning: return foregroundColorEscapeSequences.yellow; case DiagnosticCategory.Error: return foregroundColorEscapeSequences.red; - case DiagnosticCategory.Message: return foregroundColorEscapeSequences.yellow; + case DiagnosticCategory.Message: return foregroundColorEscapeSequences.blue; } } From 472f087e69947368e22c8002576e46c8ddf40178 Mon Sep 17 00:00:00 2001 From: Charles Pierce Date: Tue, 5 Dec 2017 21:18:31 -0800 Subject: [PATCH 008/173] Add new error message when class implements class #19793 --- src/compiler/checker.ts | 7 +++++- src/compiler/diagnosticMessages.json | 4 ++++ .../fixClassIncorrectlyImplementsInterface.ts | 3 ++- .../classImplementsClass2.errors.txt | 6 ++--- .../classImplementsClass4.errors.txt | 6 ++--- .../classImplementsClass5.errors.txt | 6 ++--- .../classImplementsClass7.errors.txt | 14 +++++++++++ .../reference/classImplementsClass7.js | 19 +++++++++++++++ .../reference/classImplementsClass7.symbols | 12 ++++++++++ .../reference/classImplementsClass7.types | 12 ++++++++++ ...sImplementsMergedClassInterface.errors.txt | 18 +++++++------- ...endAndImplementTheSameBaseType2.errors.txt | 10 ++++---- .../genericSpecializations2.errors.txt | 24 +++++++++---------- tests/cases/compiler/classImplementsClass7.ts | 5 ++++ 14 files changed, 109 insertions(+), 37 deletions(-) create mode 100644 tests/baselines/reference/classImplementsClass7.errors.txt create mode 100644 tests/baselines/reference/classImplementsClass7.js create mode 100644 tests/baselines/reference/classImplementsClass7.symbols create mode 100644 tests/baselines/reference/classImplementsClass7.types create mode 100644 tests/cases/compiler/classImplementsClass7.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 25d967795a7..70c3ba395d7 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -22657,7 +22657,12 @@ namespace ts { const t = getTypeFromTypeNode(typeRefNode); if (t !== unknownType) { if (isValidBaseType(t)) { - checkTypeAssignableTo(typeWithThis, getTypeWithThisArgument(t, type.thisType), node.name || node, Diagnostics.Class_0_incorrectly_implements_interface_1); + checkTypeAssignableTo(typeWithThis, + getTypeWithThisArgument(t, type.thisType), + node.name || node, + t.symbol.flags & SymbolFlags.Class ? + Diagnostics.Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass : + Diagnostics.Class_0_incorrectly_implements_interface_1); } else { error(typeRefNode, Diagnostics.A_class_may_only_implement_another_class_or_interface); diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index fab7583d90c..a224be9e6d9 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -2276,6 +2276,10 @@ "category": "Error", "code": 2719 }, + "Class '{0}' incorrectly implements class '{1}'. Did you mean to extend '{1}' and inherit its members as a subclass?": { + "category": "Error", + "code": 2720 + }, "Import declaration '{0}' is using private name '{1}'.": { "category": "Error", diff --git a/src/services/codefixes/fixClassIncorrectlyImplementsInterface.ts b/src/services/codefixes/fixClassIncorrectlyImplementsInterface.ts index 1a0cf17bbd6..9b400b3bdcf 100644 --- a/src/services/codefixes/fixClassIncorrectlyImplementsInterface.ts +++ b/src/services/codefixes/fixClassIncorrectlyImplementsInterface.ts @@ -1,7 +1,8 @@ /* @internal */ namespace ts.codefix { registerCodeFix({ - errorCodes: [Diagnostics.Class_0_incorrectly_implements_interface_1.code], + errorCodes: [Diagnostics.Class_0_incorrectly_implements_interface_1.code, + Diagnostics.Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass.code], getCodeActions: getActionForClassLikeIncorrectImplementsInterface }); diff --git a/tests/baselines/reference/classImplementsClass2.errors.txt b/tests/baselines/reference/classImplementsClass2.errors.txt index 49eeed75fe0..4d82142e5ba 100644 --- a/tests/baselines/reference/classImplementsClass2.errors.txt +++ b/tests/baselines/reference/classImplementsClass2.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/classImplementsClass2.ts(2,7): error TS2420: Class 'C' incorrectly implements interface 'A'. +tests/cases/compiler/classImplementsClass2.ts(2,7): error TS2720: Class 'C' incorrectly implements class 'A'. Did you mean to extend 'A' and inherit its members as a subclass? Property 'foo' is missing in type 'C'. tests/cases/compiler/classImplementsClass2.ts(13,1): error TS2322: Type 'C' is not assignable to type 'C2'. Property 'foo' is missing in type 'C'. @@ -8,8 +8,8 @@ tests/cases/compiler/classImplementsClass2.ts(13,1): error TS2322: Type 'C' is n class A { foo(): number { return 1; } } class C implements A {} // error ~ -!!! error TS2420: Class 'C' incorrectly implements interface 'A'. -!!! error TS2420: Property 'foo' is missing in type 'C'. +!!! error TS2720: Class 'C' incorrectly implements class 'A'. Did you mean to extend 'A' and inherit its members as a subclass? +!!! error TS2720: Property 'foo' is missing in type 'C'. class C2 extends A { foo() { diff --git a/tests/baselines/reference/classImplementsClass4.errors.txt b/tests/baselines/reference/classImplementsClass4.errors.txt index ecc9d6d8582..2ac005ca40a 100644 --- a/tests/baselines/reference/classImplementsClass4.errors.txt +++ b/tests/baselines/reference/classImplementsClass4.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/classImplementsClass4.ts(5,7): error TS2420: Class 'C' incorrectly implements interface 'A'. +tests/cases/compiler/classImplementsClass4.ts(5,7): error TS2720: Class 'C' incorrectly implements class 'A'. Did you mean to extend 'A' and inherit its members as a subclass? Property 'x' is missing in type 'C'. tests/cases/compiler/classImplementsClass4.ts(16,1): error TS2322: Type 'C' is not assignable to type 'C2'. Property 'x' is missing in type 'C'. @@ -11,8 +11,8 @@ tests/cases/compiler/classImplementsClass4.ts(16,1): error TS2322: Type 'C' is n } class C implements A { ~ -!!! error TS2420: Class 'C' incorrectly implements interface 'A'. -!!! error TS2420: Property 'x' is missing in type 'C'. +!!! error TS2720: Class 'C' incorrectly implements class 'A'. Did you mean to extend 'A' and inherit its members as a subclass? +!!! error TS2720: Property 'x' is missing in type 'C'. foo() { return 1; } diff --git a/tests/baselines/reference/classImplementsClass5.errors.txt b/tests/baselines/reference/classImplementsClass5.errors.txt index 076120fdbaf..a291da15407 100644 --- a/tests/baselines/reference/classImplementsClass5.errors.txt +++ b/tests/baselines/reference/classImplementsClass5.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/classImplementsClass5.ts(5,7): error TS2420: Class 'C' incorrectly implements interface 'A'. +tests/cases/compiler/classImplementsClass5.ts(5,7): error TS2720: Class 'C' incorrectly implements class 'A'. Did you mean to extend 'A' and inherit its members as a subclass? Types have separate declarations of a private property 'x'. tests/cases/compiler/classImplementsClass5.ts(16,1): error TS2322: Type 'C2' is not assignable to type 'C'. Types have separate declarations of a private property 'x'. @@ -13,8 +13,8 @@ tests/cases/compiler/classImplementsClass5.ts(17,1): error TS2322: Type 'C' is n } class C implements A { ~ -!!! error TS2420: Class 'C' incorrectly implements interface 'A'. -!!! error TS2420: Types have separate declarations of a private property 'x'. +!!! error TS2720: Class 'C' incorrectly implements class 'A'. Did you mean to extend 'A' and inherit its members as a subclass? +!!! error TS2720: Types have separate declarations of a private property 'x'. private x = 1; foo() { return 1; diff --git a/tests/baselines/reference/classImplementsClass7.errors.txt b/tests/baselines/reference/classImplementsClass7.errors.txt new file mode 100644 index 00000000000..fef48518dc9 --- /dev/null +++ b/tests/baselines/reference/classImplementsClass7.errors.txt @@ -0,0 +1,14 @@ +tests/cases/compiler/classImplementsClass7.ts(5,7): error TS2720: Class 'B' incorrectly implements class 'A'. Did you mean to extend 'A' and inherit its members as a subclass? + Property 'x' is missing in type 'B'. + + +==== tests/cases/compiler/classImplementsClass7.ts (1 errors) ==== + class A { + private x: number; + } + + class B implements A {} + ~ +!!! error TS2720: Class 'B' incorrectly implements class 'A'. Did you mean to extend 'A' and inherit its members as a subclass? +!!! error TS2720: Property 'x' is missing in type 'B'. + \ No newline at end of file diff --git a/tests/baselines/reference/classImplementsClass7.js b/tests/baselines/reference/classImplementsClass7.js new file mode 100644 index 00000000000..bbb2fde3391 --- /dev/null +++ b/tests/baselines/reference/classImplementsClass7.js @@ -0,0 +1,19 @@ +//// [classImplementsClass7.ts] +class A { + private x: number; +} + +class B implements A {} + + +//// [classImplementsClass7.js] +var A = /** @class */ (function () { + function A() { + } + return A; +}()); +var B = /** @class */ (function () { + function B() { + } + return B; +}()); diff --git a/tests/baselines/reference/classImplementsClass7.symbols b/tests/baselines/reference/classImplementsClass7.symbols new file mode 100644 index 00000000000..b72e9dc049f --- /dev/null +++ b/tests/baselines/reference/classImplementsClass7.symbols @@ -0,0 +1,12 @@ +=== tests/cases/compiler/classImplementsClass7.ts === +class A { +>A : Symbol(A, Decl(classImplementsClass7.ts, 0, 0)) + + private x: number; +>x : Symbol(A.x, Decl(classImplementsClass7.ts, 0, 9)) +} + +class B implements A {} +>B : Symbol(B, Decl(classImplementsClass7.ts, 2, 1)) +>A : Symbol(A, Decl(classImplementsClass7.ts, 0, 0)) + diff --git a/tests/baselines/reference/classImplementsClass7.types b/tests/baselines/reference/classImplementsClass7.types new file mode 100644 index 00000000000..42def37193c --- /dev/null +++ b/tests/baselines/reference/classImplementsClass7.types @@ -0,0 +1,12 @@ +=== tests/cases/compiler/classImplementsClass7.ts === +class A { +>A : A + + private x: number; +>x : number +} + +class B implements A {} +>B : B +>A : A + diff --git a/tests/baselines/reference/classImplementsMergedClassInterface.errors.txt b/tests/baselines/reference/classImplementsMergedClassInterface.errors.txt index 3e62e72be84..3d2e721a955 100644 --- a/tests/baselines/reference/classImplementsMergedClassInterface.errors.txt +++ b/tests/baselines/reference/classImplementsMergedClassInterface.errors.txt @@ -1,8 +1,8 @@ -tests/cases/conformance/classes/classDeclarations/classImplementsMergedClassInterface.ts(9,7): error TS2420: Class 'C2' incorrectly implements interface 'C1'. +tests/cases/conformance/classes/classDeclarations/classImplementsMergedClassInterface.ts(9,7): error TS2720: Class 'C2' incorrectly implements class 'C1'. Did you mean to extend 'C1' and inherit its members as a subclass? Property 'x' is missing in type 'C2'. -tests/cases/conformance/classes/classDeclarations/classImplementsMergedClassInterface.ts(12,7): error TS2420: Class 'C3' incorrectly implements interface 'C1'. +tests/cases/conformance/classes/classDeclarations/classImplementsMergedClassInterface.ts(12,7): error TS2720: Class 'C3' incorrectly implements class 'C1'. Did you mean to extend 'C1' and inherit its members as a subclass? Property 'y' is missing in type 'C3'. -tests/cases/conformance/classes/classDeclarations/classImplementsMergedClassInterface.ts(16,7): error TS2420: Class 'C4' incorrectly implements interface 'C1'. +tests/cases/conformance/classes/classDeclarations/classImplementsMergedClassInterface.ts(16,7): error TS2720: Class 'C4' incorrectly implements class 'C1'. Did you mean to extend 'C1' and inherit its members as a subclass? Property 'x' is missing in type 'C4'. @@ -17,21 +17,21 @@ tests/cases/conformance/classes/classDeclarations/classImplementsMergedClassInte class C2 implements C1 { // error -- missing x ~~ -!!! error TS2420: Class 'C2' incorrectly implements interface 'C1'. -!!! error TS2420: Property 'x' is missing in type 'C2'. +!!! error TS2720: Class 'C2' incorrectly implements class 'C1'. Did you mean to extend 'C1' and inherit its members as a subclass? +!!! error TS2720: Property 'x' is missing in type 'C2'. } class C3 implements C1 { // error -- missing y ~~ -!!! error TS2420: Class 'C3' incorrectly implements interface 'C1'. -!!! error TS2420: Property 'y' is missing in type 'C3'. +!!! error TS2720: Class 'C3' incorrectly implements class 'C1'. Did you mean to extend 'C1' and inherit its members as a subclass? +!!! error TS2720: Property 'y' is missing in type 'C3'. x : number; } class C4 implements C1 { // error -- missing x ~~ -!!! error TS2420: Class 'C4' incorrectly implements interface 'C1'. -!!! error TS2420: Property 'x' is missing in type 'C4'. +!!! error TS2720: Class 'C4' incorrectly implements class 'C1'. Did you mean to extend 'C1' and inherit its members as a subclass? +!!! error TS2720: Property 'x' is missing in type 'C4'. y : number; } diff --git a/tests/baselines/reference/extendAndImplementTheSameBaseType2.errors.txt b/tests/baselines/reference/extendAndImplementTheSameBaseType2.errors.txt index a44c95377dc..799fc7bb8b0 100644 --- a/tests/baselines/reference/extendAndImplementTheSameBaseType2.errors.txt +++ b/tests/baselines/reference/extendAndImplementTheSameBaseType2.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/extendAndImplementTheSameBaseType2.ts(7,7): error TS2420: Class 'D' incorrectly implements interface 'C'. +tests/cases/compiler/extendAndImplementTheSameBaseType2.ts(7,7): error TS2720: Class 'D' incorrectly implements class 'C'. Did you mean to extend 'C' and inherit its members as a subclass? Types of property 'bar' are incompatible. Type '() => string' is not assignable to type '() => number'. Type 'string' is not assignable to type 'number'. @@ -15,10 +15,10 @@ tests/cases/compiler/extendAndImplementTheSameBaseType2.ts(16,5): error TS2322: } class D extends C implements C { ~ -!!! error TS2420: Class 'D' incorrectly implements interface 'C'. -!!! error TS2420: Types of property 'bar' are incompatible. -!!! error TS2420: Type '() => string' is not assignable to type '() => number'. -!!! error TS2420: Type 'string' is not assignable to type 'number'. +!!! error TS2720: Class 'D' incorrectly implements class 'C'. Did you mean to extend 'C' and inherit its members as a subclass? +!!! error TS2720: Types of property 'bar' are incompatible. +!!! error TS2720: Type '() => string' is not assignable to type '() => number'. +!!! error TS2720: Type 'string' is not assignable to type 'number'. baz() { } } diff --git a/tests/baselines/reference/genericSpecializations2.errors.txt b/tests/baselines/reference/genericSpecializations2.errors.txt index e570adb7912..99a6e2a6985 100644 --- a/tests/baselines/reference/genericSpecializations2.errors.txt +++ b/tests/baselines/reference/genericSpecializations2.errors.txt @@ -1,10 +1,10 @@ -tests/cases/compiler/genericSpecializations2.ts(7,7): error TS2420: Class 'IntFooBad' incorrectly implements interface 'IFoo'. +tests/cases/compiler/genericSpecializations2.ts(7,7): error TS2720: Class 'IntFooBad' incorrectly implements class 'IFoo'. Did you mean to extend 'IFoo' and inherit its members as a subclass? Types of property 'foo' are incompatible. Type '(x: string) => string' is not assignable to type '(x: T) => T'. Types of parameters 'x' and 'x' are incompatible. Type 'T' is not assignable to type 'string'. tests/cases/compiler/genericSpecializations2.ts(8,9): error TS2368: Type parameter name cannot be 'string'. -tests/cases/compiler/genericSpecializations2.ts(11,7): error TS2420: Class 'StringFoo2' incorrectly implements interface 'IFoo'. +tests/cases/compiler/genericSpecializations2.ts(11,7): error TS2720: Class 'StringFoo2' incorrectly implements class 'IFoo'. Did you mean to extend 'IFoo' and inherit its members as a subclass? Types of property 'foo' are incompatible. Type '(x: string) => string' is not assignable to type '(x: T) => T'. Types of parameters 'x' and 'x' are incompatible. @@ -21,11 +21,11 @@ tests/cases/compiler/genericSpecializations2.ts(12,9): error TS2368: Type parame class IntFooBad implements IFoo { ~~~~~~~~~ -!!! error TS2420: Class 'IntFooBad' incorrectly implements interface 'IFoo'. -!!! error TS2420: Types of property 'foo' are incompatible. -!!! error TS2420: Type '(x: string) => string' is not assignable to type '(x: T) => T'. -!!! error TS2420: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2420: Type 'T' is not assignable to type 'string'. +!!! error TS2720: Class 'IntFooBad' incorrectly implements class 'IFoo'. Did you mean to extend 'IFoo' and inherit its members as a subclass? +!!! error TS2720: Types of property 'foo' are incompatible. +!!! error TS2720: Type '(x: string) => string' is not assignable to type '(x: T) => T'. +!!! error TS2720: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2720: Type 'T' is not assignable to type 'string'. foo(x: string): string { return null; } ~~~~~~ !!! error TS2368: Type parameter name cannot be 'string'. @@ -33,11 +33,11 @@ tests/cases/compiler/genericSpecializations2.ts(12,9): error TS2368: Type parame class StringFoo2 implements IFoo { ~~~~~~~~~~ -!!! error TS2420: Class 'StringFoo2' incorrectly implements interface 'IFoo'. -!!! error TS2420: Types of property 'foo' are incompatible. -!!! error TS2420: Type '(x: string) => string' is not assignable to type '(x: T) => T'. -!!! error TS2420: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2420: Type 'T' is not assignable to type 'string'. +!!! error TS2720: Class 'StringFoo2' incorrectly implements class 'IFoo'. Did you mean to extend 'IFoo' and inherit its members as a subclass? +!!! error TS2720: Types of property 'foo' are incompatible. +!!! error TS2720: Type '(x: string) => string' is not assignable to type '(x: T) => T'. +!!! error TS2720: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2720: Type 'T' is not assignable to type 'string'. foo(x: string): string { return null; } ~~~~~~ !!! error TS2368: Type parameter name cannot be 'string'. diff --git a/tests/cases/compiler/classImplementsClass7.ts b/tests/cases/compiler/classImplementsClass7.ts new file mode 100644 index 00000000000..ab56cae56ce --- /dev/null +++ b/tests/cases/compiler/classImplementsClass7.ts @@ -0,0 +1,5 @@ +class A { + private x: number; +} + +class B implements A {} From 6e74f7ee11ae47fb2481dd07b998bc523aec75a5 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Wed, 6 Dec 2017 15:58:50 -0800 Subject: [PATCH 009/173] Fix #20523 --- src/services/codefixes/inferFromUsage.ts | 5 +++++ tests/cases/fourslash/incompleteFunctionCallCodefix.ts | 9 +++++++++ 2 files changed, 14 insertions(+) create mode 100644 tests/cases/fourslash/incompleteFunctionCallCodefix.ts diff --git a/src/services/codefixes/inferFromUsage.ts b/src/services/codefixes/inferFromUsage.ts index 9782619d41d..d7bfd1b621f 100644 --- a/src/services/codefixes/inferFromUsage.ts +++ b/src/services/codefixes/inferFromUsage.ts @@ -148,6 +148,11 @@ namespace ts.codefix { containingFunction.parameters.map(p => isIdentifier(p.name) ? inferTypeForVariableFromUsage(p.name, sourceFile, program, cancellationToken) : undefined); if (!types) return undefined; + // We didn't actually find a set of type inference positions matching each parameter position + if (containingFunction.parameters.length !== types.length) { + return undefined; + } + const textChanges = arrayFrom(mapDefinedIterator(zipToIterator(containingFunction.parameters, types), ([parameter, type]) => type && !parameter.type && !parameter.initializer ? makeChange(containingFunction, parameter.end, type, program) : undefined)); return textChanges.length ? { declaration: parameterDeclaration, textChanges } : undefined; diff --git a/tests/cases/fourslash/incompleteFunctionCallCodefix.ts b/tests/cases/fourslash/incompleteFunctionCallCodefix.ts new file mode 100644 index 00000000000..007eaa20f7f --- /dev/null +++ b/tests/cases/fourslash/incompleteFunctionCallCodefix.ts @@ -0,0 +1,9 @@ +/// + +// @noImplicitAny: true +//// function f(/*1*/x) { +//// } +//// f( + +verify.not.codeFixAvailable([]); + From 2cf7295c4ee1a1864742287138416c502ec84f55 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Wed, 6 Dec 2017 16:21:18 -0800 Subject: [PATCH 010/173] Fix #20520 --- src/services/codefixes/inferFromUsage.ts | 9 +++++++-- tests/cases/fourslash/incompleteFunctionCallCodefix2.ts | 7 +++++++ 2 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 tests/cases/fourslash/incompleteFunctionCallCodefix2.ts diff --git a/src/services/codefixes/inferFromUsage.ts b/src/services/codefixes/inferFromUsage.ts index d7bfd1b621f..25236318612 100644 --- a/src/services/codefixes/inferFromUsage.ts +++ b/src/services/codefixes/inferFromUsage.ts @@ -196,8 +196,9 @@ namespace ts.codefix { sourceFile, token.getStart(sourceFile)); - Debug.assert(!!references, "Found no references!"); - Debug.assert(references.length === 1, "Found more references than expected"); + if (!references || references.length !== 1) { + return []; + } return references[0].references.map(r => getTokenAtPosition(program.getSourceFile(r.fileName), r.textSpan.start, /*includeJsDocComment*/ false)); } @@ -286,6 +287,10 @@ namespace ts.codefix { } export function inferTypeForParametersFromReferences(references: Identifier[], declaration: FunctionLikeDeclaration, checker: TypeChecker, cancellationToken: CancellationToken): (Type | undefined)[] | undefined { + if (references.length === 0) { + return undefined; + } + if (declaration.parameters) { const usageContext: UsageContext = {}; for (const reference of references) { diff --git a/tests/cases/fourslash/incompleteFunctionCallCodefix2.ts b/tests/cases/fourslash/incompleteFunctionCallCodefix2.ts new file mode 100644 index 00000000000..c1bc731541f --- /dev/null +++ b/tests/cases/fourslash/incompleteFunctionCallCodefix2.ts @@ -0,0 +1,7 @@ +/// + +// @noImplicitAny: true +//// function f(new C(100, 3, undefined) + +verify.not.codeFixAvailable([]); + From b7b43fe601babb77e55d5b6b0d94231e39ed0f12 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Thu, 7 Dec 2017 12:16:29 -0800 Subject: [PATCH 011/173] Fixes #20527 --- src/services/codefixes/inferFromUsage.ts | 4 ++++ tests/cases/fourslash/incompleteFunctionCallCodefix3.ts | 7 +++++++ 2 files changed, 11 insertions(+) create mode 100644 tests/cases/fourslash/incompleteFunctionCallCodefix3.ts diff --git a/src/services/codefixes/inferFromUsage.ts b/src/services/codefixes/inferFromUsage.ts index 25236318612..992770dbd01 100644 --- a/src/services/codefixes/inferFromUsage.ts +++ b/src/services/codefixes/inferFromUsage.ts @@ -71,6 +71,10 @@ namespace ts.codefix { } const containingFunction = getContainingFunction(token); + if (containingFunction === undefined) { + // Possible in certain syntax error cases + return undefined; + } switch (errorCode) { // Variable and Property declarations case Diagnostics.Member_0_implicitly_has_an_1_type.code: diff --git a/tests/cases/fourslash/incompleteFunctionCallCodefix3.ts b/tests/cases/fourslash/incompleteFunctionCallCodefix3.ts new file mode 100644 index 00000000000..3c0261e48a7 --- /dev/null +++ b/tests/cases/fourslash/incompleteFunctionCallCodefix3.ts @@ -0,0 +1,7 @@ +/// + +// @noImplicitAny: true +//// function ...q) {}} f(10); + +verify.not.codeFixAvailable([]); + From 5c99c67b4bd7b15f86db75909929b79d433e4b71 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Thu, 7 Dec 2017 12:16:53 -0800 Subject: [PATCH 012/173] Fixes #20542 --- src/compiler/checker.ts | 7 ++++++- tests/cases/fourslash/typeToStringCrashInCodeFix.ts | 6 ++++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 tests/cases/fourslash/typeToStringCrashInCodeFix.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 269c55145ec..5b481ef4721 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -3951,7 +3951,12 @@ namespace ts { writePunctuation(writer, SyntaxKind.CloseBracketToken); writePunctuation(writer, SyntaxKind.ColonToken); writeSpace(writer); - buildTypeDisplay(info.type, writer, enclosingDeclaration, globalFlags, symbolStack); + if (info.type) { + buildTypeDisplay(info.type, writer, enclosingDeclaration, globalFlags, symbolStack); + } + else { + writeKeyword(writer, SyntaxKind.AnyKeyword); + } writePunctuation(writer, SyntaxKind.SemicolonToken); writer.writeLine(); } diff --git a/tests/cases/fourslash/typeToStringCrashInCodeFix.ts b/tests/cases/fourslash/typeToStringCrashInCodeFix.ts new file mode 100644 index 00000000000..05cf00cb4ce --- /dev/null +++ b/tests/cases/fourslash/typeToStringCrashInCodeFix.ts @@ -0,0 +1,6 @@ +/// + +// @noImplicitAny: true +//// function f(y, z = { p: y[ + +verify.getAndApplyCodeFix(); From fa988eacbdf9f17e6ef415db929efa2be650210f Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Thu, 7 Dec 2017 12:33:40 -0800 Subject: [PATCH 013/173] Fixes #20475 (no repro found yet) --- src/services/symbolDisplay.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/symbolDisplay.ts b/src/services/symbolDisplay.ts index fe04342b8f7..caf38306bec 100644 --- a/src/services/symbolDisplay.ts +++ b/src/services/symbolDisplay.ts @@ -496,7 +496,7 @@ namespace ts.SymbolDisplay { addNewLineIfDisplayPartsExist(); if (symbolKind) { pushTypePart(symbolKind); - if (!some(symbol.declarations, d => isArrowFunction(d) || (isFunctionExpression(d) || isClassExpression(d)) && !d.name)) { + if (symbol && !some(symbol.declarations, d => isArrowFunction(d) || (isFunctionExpression(d) || isClassExpression(d)) && !d.name)) { displayParts.push(spacePart()); addFullSymbolName(symbol); } From 92c3b23a32344037828e407bfc82818136c7d6bc Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Thu, 7 Dec 2017 14:27:46 -0800 Subject: [PATCH 014/173] Bail at the correct point when containingFunction is undefined --- src/services/codefixes/inferFromUsage.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/services/codefixes/inferFromUsage.ts b/src/services/codefixes/inferFromUsage.ts index 992770dbd01..e5177991b34 100644 --- a/src/services/codefixes/inferFromUsage.ts +++ b/src/services/codefixes/inferFromUsage.ts @@ -70,11 +70,6 @@ namespace ts.codefix { return undefined; } - const containingFunction = getContainingFunction(token); - if (containingFunction === undefined) { - // Possible in certain syntax error cases - return undefined; - } switch (errorCode) { // Variable and Property declarations case Diagnostics.Member_0_implicitly_has_an_1_type.code: @@ -85,6 +80,13 @@ namespace ts.codefix { const symbol = program.getTypeChecker().getSymbolAtLocation(token); return symbol && symbol.valueDeclaration && getCodeActionForVariableDeclaration(symbol.valueDeclaration, sourceFile, program, cancellationToken); } + } + + const containingFunction = getContainingFunction(token); + if (containingFunction === undefined) { + return undefined; + } + switch (errorCode) { // Parameter declarations case Diagnostics.Parameter_0_implicitly_has_an_1_type.code: @@ -156,7 +158,7 @@ namespace ts.codefix { if (containingFunction.parameters.length !== types.length) { return undefined; } - + const textChanges = arrayFrom(mapDefinedIterator(zipToIterator(containingFunction.parameters, types), ([parameter, type]) => type && !parameter.type && !parameter.initializer ? makeChange(containingFunction, parameter.end, type, program) : undefined)); return textChanges.length ? { declaration: parameterDeclaration, textChanges } : undefined; From de304f537ed2492278b66c87aa76fc01ea9b0071 Mon Sep 17 00:00:00 2001 From: csigs Date: Fri, 8 Dec 2017 17:10:26 +0000 Subject: [PATCH 015/173] LEGO: check in for master to temporary branch. --- .../diagnosticMessages.generated.json.lcl | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/loc/lcl/jpn/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/jpn/diagnosticMessages/diagnosticMessages.generated.json.lcl index 37d536d4029..0dda83cc233 100644 --- a/src/loc/lcl/jpn/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/jpn/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -145,7 +145,7 @@ - + @@ -154,7 +154,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -172,7 +172,7 @@ - + @@ -181,7 +181,7 @@ - + @@ -532,7 +532,7 @@ - + @@ -541,7 +541,7 @@ - + @@ -796,7 +796,7 @@ - + @@ -6639,6 +6639,9 @@ + + + @@ -8920,7 +8923,7 @@ - + @@ -8929,7 +8932,7 @@ - + @@ -8938,7 +8941,7 @@ - + From 47c1fc402235586dfe367a6e282e1f528c66b4e8 Mon Sep 17 00:00:00 2001 From: Andy Date: Fri, 8 Dec 2017 14:06:23 -0800 Subject: [PATCH 016/173] Remove unused internal function (#20582) --- src/compiler/core.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/compiler/core.ts b/src/compiler/core.ts index 6bc8c1f758b..b11750c25af 100644 --- a/src/compiler/core.ts +++ b/src/compiler/core.ts @@ -1992,11 +1992,6 @@ namespace ts { return /^\.\.?($|[\\/])/.test(path); } - /** @deprecated Use `!isExternalModuleNameRelative(moduleName)` instead. */ - export function moduleHasNonRelativeName(moduleName: string): boolean { - return !isExternalModuleNameRelative(moduleName); - } - export function getEmitScriptTarget(compilerOptions: CompilerOptions) { return compilerOptions.target || ScriptTarget.ES3; } From 2343cbb43ce2c2c9c725b60f683b55e902fdb81d Mon Sep 17 00:00:00 2001 From: csigs Date: Fri, 8 Dec 2017 23:10:14 +0000 Subject: [PATCH 017/173] LEGO: check in for master to temporary branch. --- .../diagnosticMessages/diagnosticMessages.generated.json.lcl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/loc/lcl/trk/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/trk/diagnosticMessages/diagnosticMessages.generated.json.lcl index 41eb3440c33..2515c17f3c1 100644 --- a/src/loc/lcl/trk/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/trk/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -6632,6 +6632,9 @@ + + + From 9e51882d9cb1efdd164e27e98f3de2d5294b8257 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Fri, 8 Dec 2017 20:20:18 -0500 Subject: [PATCH 018/173] Numeric separators (#20324) * Add support into octal and binary literals * Add hex support * And finally support all numeric literals and fix spelling * Update error message * Refactor error in scanner to take a position * Scan no separators in escape sequences, add escape sequence tests * More decimal tests from the spec presentation examples * Permissive scanning of excess separators * Remove unnecessary assignment * Make code easier to follow --- src/compiler/diagnosticMessages.json | 4 + src/compiler/scanner.ts | 129 +++++-- src/compiler/types.ts | 3 +- src/compiler/utilities.ts | 2 +- .../parser.numericSeparators.binary.js | 12 + .../parser.numericSeparators.binary.symbols | 7 + .../parser.numericSeparators.binary.types | 13 + ...umericSeparators.binaryNegative.errors.txt | 50 +++ ...parser.numericSeparators.binaryNegative.js | 34 ++ ...r.numericSeparators.binaryNegative.symbols | 19 + ...ser.numericSeparators.binaryNegative.types | 25 ++ .../parser.numericSeparators.decimal.js | 32 ++ .../parser.numericSeparators.decimal.symbols | 17 + .../parser.numericSeparators.decimal.types | 43 +++ ...mericSeparators.decmialNegative.errors.txt | 329 ++++++++++++++++++ ...arser.numericSeparators.decmialNegative.js | 262 ++++++++++++++ ....numericSeparators.decmialNegative.symbols | 154 ++++++++ ...er.numericSeparators.decmialNegative.types | 212 +++++++++++ .../reference/parser.numericSeparators.hex.js | 12 + .../parser.numericSeparators.hex.symbols | 7 + .../parser.numericSeparators.hex.types | 13 + ...r.numericSeparators.hexNegative.errors.txt | 50 +++ .../parser.numericSeparators.hexNegative.js | 34 ++ ...rser.numericSeparators.hexNegative.symbols | 19 + ...parser.numericSeparators.hexNegative.types | 25 ++ .../parser.numericSeparators.octal.js | 12 + .../parser.numericSeparators.octal.symbols | 7 + .../parser.numericSeparators.octal.types | 13 + ...numericSeparators.octalNegative.errors.txt | 50 +++ .../parser.numericSeparators.octalNegative.js | 34 ++ ...er.numericSeparators.octalNegative.symbols | 19 + ...rser.numericSeparators.octalNegative.types | 25 ++ ...numericSeparators.unicodeEscape.errors.txt | 236 +++++++++++++ .../parser.numericSeparators.unicodeEscape.js | 243 +++++++++++++ ...er.numericSeparators.unicodeEscape.symbols | 145 ++++++++ ...rser.numericSeparators.unicodeEscape.types | 192 ++++++++++ .../parser.numericSeparators.binary.ts | 4 + ...parser.numericSeparators.binaryNegative.ts | 18 + .../parser.numericSeparators.decimal.ts | 14 + ...arser.numericSeparators.decmialNegative.ts | 152 ++++++++ .../parser.numericSeparators.hex.ts | 4 + .../parser.numericSeparators.hexNegative.ts | 18 + .../parser.numericSeparators.octal.ts | 4 + .../parser.numericSeparators.octalNegative.ts | 18 + .../parser.numericSeparators.unicodeEscape.ts | 143 ++++++++ 45 files changed, 2835 insertions(+), 23 deletions(-) create mode 100644 tests/baselines/reference/parser.numericSeparators.binary.js create mode 100644 tests/baselines/reference/parser.numericSeparators.binary.symbols create mode 100644 tests/baselines/reference/parser.numericSeparators.binary.types create mode 100644 tests/baselines/reference/parser.numericSeparators.binaryNegative.errors.txt create mode 100644 tests/baselines/reference/parser.numericSeparators.binaryNegative.js create mode 100644 tests/baselines/reference/parser.numericSeparators.binaryNegative.symbols create mode 100644 tests/baselines/reference/parser.numericSeparators.binaryNegative.types create mode 100644 tests/baselines/reference/parser.numericSeparators.decimal.js create mode 100644 tests/baselines/reference/parser.numericSeparators.decimal.symbols create mode 100644 tests/baselines/reference/parser.numericSeparators.decimal.types create mode 100644 tests/baselines/reference/parser.numericSeparators.decmialNegative.errors.txt create mode 100644 tests/baselines/reference/parser.numericSeparators.decmialNegative.js create mode 100644 tests/baselines/reference/parser.numericSeparators.decmialNegative.symbols create mode 100644 tests/baselines/reference/parser.numericSeparators.decmialNegative.types create mode 100644 tests/baselines/reference/parser.numericSeparators.hex.js create mode 100644 tests/baselines/reference/parser.numericSeparators.hex.symbols create mode 100644 tests/baselines/reference/parser.numericSeparators.hex.types create mode 100644 tests/baselines/reference/parser.numericSeparators.hexNegative.errors.txt create mode 100644 tests/baselines/reference/parser.numericSeparators.hexNegative.js create mode 100644 tests/baselines/reference/parser.numericSeparators.hexNegative.symbols create mode 100644 tests/baselines/reference/parser.numericSeparators.hexNegative.types create mode 100644 tests/baselines/reference/parser.numericSeparators.octal.js create mode 100644 tests/baselines/reference/parser.numericSeparators.octal.symbols create mode 100644 tests/baselines/reference/parser.numericSeparators.octal.types create mode 100644 tests/baselines/reference/parser.numericSeparators.octalNegative.errors.txt create mode 100644 tests/baselines/reference/parser.numericSeparators.octalNegative.js create mode 100644 tests/baselines/reference/parser.numericSeparators.octalNegative.symbols create mode 100644 tests/baselines/reference/parser.numericSeparators.octalNegative.types create mode 100644 tests/baselines/reference/parser.numericSeparators.unicodeEscape.errors.txt create mode 100644 tests/baselines/reference/parser.numericSeparators.unicodeEscape.js create mode 100644 tests/baselines/reference/parser.numericSeparators.unicodeEscape.symbols create mode 100644 tests/baselines/reference/parser.numericSeparators.unicodeEscape.types create mode 100644 tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.binary.ts create mode 100644 tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.binaryNegative.ts create mode 100644 tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.decimal.ts create mode 100644 tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.decmialNegative.ts create mode 100644 tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.hex.ts create mode 100644 tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.hexNegative.ts create mode 100644 tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.octal.ts create mode 100644 tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.octalNegative.ts create mode 100644 tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.unicodeEscape.ts diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index fab7583d90c..7bec6b82577 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -3420,6 +3420,10 @@ "category": "Message", "code": 6187 }, + "Numeric separators are not allowed here.": { + "category": "Error", + "code": 6188 + }, "Variable '{0}' implicitly has an '{1}' type.": { "category": "Error", "code": 7005 diff --git a/src/compiler/scanner.ts b/src/compiler/scanner.ts index f085c3ffc06..f9d30fdd581 100644 --- a/src/compiler/scanner.ts +++ b/src/compiler/scanner.ts @@ -561,9 +561,9 @@ namespace ts { return false; } - function scanConflictMarkerTrivia(text: string, pos: number, error?: ErrorCallback) { + function scanConflictMarkerTrivia(text: string, pos: number, error?: (diag: DiagnosticMessage, pos?: number, len?: number) => void) { if (error) { - error(Diagnostics.Merge_conflict_marker_encountered, mergeConflictMarkerLength); + error(Diagnostics.Merge_conflict_marker_encountered, pos, mergeConflictMarkerLength); } const ch = text.charCodeAt(pos); @@ -852,34 +852,86 @@ namespace ts { scanRange, }; - function error(message: DiagnosticMessage, length?: number): void { + function error(message: DiagnosticMessage): void; + function error(message: DiagnosticMessage, errPos: number, length: number): void; + function error(message: DiagnosticMessage, errPos: number = pos, length?: number): void { if (onError) { + const oldPos = pos; + pos = errPos; onError(message, length || 0); + pos = oldPos; } } + function scanNumberFragment(): string { + let start = pos; + let allowSeparator = false; + let result = ""; + while (true) { + const ch = text.charCodeAt(pos); + if (ch === CharacterCodes._) { + tokenFlags |= TokenFlags.ContainsSeparator; + if (allowSeparator) { + allowSeparator = false; + result += text.substring(start, pos); + } + else { + error(Diagnostics.Numeric_separators_are_not_allowed_here, pos, 1); + } + pos++; + start = pos; + continue; + } + if (isDigit(ch)) { + allowSeparator = true; + pos++; + continue; + } + break; + } + if (text.charCodeAt(pos - 1) === CharacterCodes._) { + error(Diagnostics.Numeric_separators_are_not_allowed_here, pos - 1, 1); + } + return result + text.substring(start, pos); + } + function scanNumber(): string { const start = pos; - while (isDigit(text.charCodeAt(pos))) pos++; + const mainFragment = scanNumberFragment(); + let decimalFragment: string; + let scientificFragment: string; if (text.charCodeAt(pos) === CharacterCodes.dot) { pos++; - while (isDigit(text.charCodeAt(pos))) pos++; + decimalFragment = scanNumberFragment(); } let end = pos; if (text.charCodeAt(pos) === CharacterCodes.E || text.charCodeAt(pos) === CharacterCodes.e) { pos++; tokenFlags |= TokenFlags.Scientific; if (text.charCodeAt(pos) === CharacterCodes.plus || text.charCodeAt(pos) === CharacterCodes.minus) pos++; - if (isDigit(text.charCodeAt(pos))) { - pos++; - while (isDigit(text.charCodeAt(pos))) pos++; - end = pos; - } - else { + const preNumericPart = pos; + const finalFragment = scanNumberFragment(); + if (!finalFragment) { error(Diagnostics.Digit_expected); } + else { + scientificFragment = text.substring(end, preNumericPart) + finalFragment; + end = pos; + } + } + if (tokenFlags & TokenFlags.ContainsSeparator) { + let result = mainFragment; + if (decimalFragment) { + result += "." + decimalFragment; + } + if (scientificFragment) { + result += scientificFragment; + } + return "" + +result; + } + else { + return "" + +(text.substring(start, end)); // No need to use all the fragments; no _ removal needed } - return "" + +(text.substring(start, end)); } function scanOctalDigits(): number { @@ -894,23 +946,36 @@ namespace ts { * Scans the given number of hexadecimal digits in the text, * returning -1 if the given number is unavailable. */ - function scanExactNumberOfHexDigits(count: number): number { - return scanHexDigits(/*minCount*/ count, /*scanAsManyAsPossible*/ false); + function scanExactNumberOfHexDigits(count: number, canHaveSeparators: boolean): number { + return scanHexDigits(/*minCount*/ count, /*scanAsManyAsPossible*/ false, canHaveSeparators); } /** * Scans as many hexadecimal digits as are available in the text, * returning -1 if the given number of digits was unavailable. */ - function scanMinimumNumberOfHexDigits(count: number): number { - return scanHexDigits(/*minCount*/ count, /*scanAsManyAsPossible*/ true); + function scanMinimumNumberOfHexDigits(count: number, canHaveSeparators: boolean): number { + return scanHexDigits(/*minCount*/ count, /*scanAsManyAsPossible*/ true, canHaveSeparators); } - function scanHexDigits(minCount: number, scanAsManyAsPossible: boolean): number { + function scanHexDigits(minCount: number, scanAsManyAsPossible: boolean, canHaveSeparators: boolean): number { let digits = 0; let value = 0; + let allowSeparator = false; while (digits < minCount || scanAsManyAsPossible) { const ch = text.charCodeAt(pos); + if (canHaveSeparators && ch === CharacterCodes._) { + tokenFlags |= TokenFlags.ContainsSeparator; + if (allowSeparator) { + allowSeparator = false; + } + else { + error(Diagnostics.Numeric_separators_are_not_allowed_here, pos, 1); + } + pos++; + continue; + } + allowSeparator = canHaveSeparators; if (ch >= CharacterCodes._0 && ch <= CharacterCodes._9) { value = value * 16 + ch - CharacterCodes._0; } @@ -929,6 +994,9 @@ namespace ts { if (digits < minCount) { value = -1; } + if (text.charCodeAt(pos - 1) === CharacterCodes._) { + error(Diagnostics.Numeric_separators_are_not_allowed_here, pos - 1, 1); + } return value; } @@ -1097,7 +1165,7 @@ namespace ts { } function scanHexadecimalEscape(numDigits: number): string { - const escapedValue = scanExactNumberOfHexDigits(numDigits); + const escapedValue = scanExactNumberOfHexDigits(numDigits, /*canHaveSeparators*/ false); if (escapedValue >= 0) { return String.fromCharCode(escapedValue); @@ -1109,7 +1177,7 @@ namespace ts { } function scanExtendedUnicodeEscape(): string { - const escapedValue = scanMinimumNumberOfHexDigits(1); + const escapedValue = scanMinimumNumberOfHexDigits(1, /*canHaveSeparators*/ false); let isInvalidExtendedEscape = false; // Validate the value of the digit @@ -1162,7 +1230,7 @@ namespace ts { if (pos + 5 < end && text.charCodeAt(pos + 1) === CharacterCodes.u) { const start = pos; pos += 2; - const value = scanExactNumberOfHexDigits(4); + const value = scanExactNumberOfHexDigits(4, /*canHaveSeparators*/ false); pos = start; return value; } @@ -1218,8 +1286,22 @@ namespace ts { // For counting number of digits; Valid binaryIntegerLiteral must have at least one binary digit following B or b. // Similarly valid octalIntegerLiteral must have at least one octal digit following o or O. let numberOfDigits = 0; + let separatorAllowed = false; while (true) { const ch = text.charCodeAt(pos); + // Numeric seperators are allowed anywhere within a numeric literal, except not at the beginning, or following another separator + if (ch === CharacterCodes._) { + tokenFlags |= TokenFlags.ContainsSeparator; + if (separatorAllowed) { + separatorAllowed = false; + } + else { + error(Diagnostics.Numeric_separators_are_not_allowed_here, pos, 1); + } + pos++; + continue; + } + separatorAllowed = true; const valueOfCh = ch - CharacterCodes._0; if (!isDigit(ch) || valueOfCh >= base) { break; @@ -1232,6 +1314,11 @@ namespace ts { if (numberOfDigits === 0) { return -1; } + if (text.charCodeAt(pos - 1) === CharacterCodes._) { + // Literal ends with underscore - not allowed + error(Diagnostics.Numeric_separators_are_not_allowed_here, pos - 1, 1); + return value; + } return value; } @@ -1435,7 +1522,7 @@ namespace ts { case CharacterCodes._0: if (pos + 2 < end && (text.charCodeAt(pos + 1) === CharacterCodes.X || text.charCodeAt(pos + 1) === CharacterCodes.x)) { pos += 2; - let value = scanMinimumNumberOfHexDigits(1); + let value = scanMinimumNumberOfHexDigits(1, /*canHaveSeparators*/ true); if (value < 0) { error(Diagnostics.Hexadecimal_digit_expected); value = 0; diff --git a/src/compiler/types.ts b/src/compiler/types.ts index ee7e9f774d8..db53db2aecb 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -1490,8 +1490,9 @@ namespace ts { HexSpecifier = 1 << 6, // e.g. `0x00000000` BinarySpecifier = 1 << 7, // e.g. `0b0110010000000000` OctalSpecifier = 1 << 8, // e.g. `0o777` + ContainsSeparator = 1 << 9, // e.g. `0b1100_0101` BinaryOrOctalSpecifier = BinarySpecifier | OctalSpecifier, - NumericLiteralFlags = Scientific | Octal | HexSpecifier | BinarySpecifier | OctalSpecifier + NumericLiteralFlags = Scientific | Octal | HexSpecifier | BinarySpecifier | OctalSpecifier | ContainsSeparator } export interface NumericLiteral extends LiteralExpression { diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index eac101c028a..4a7b46a8b0e 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -346,7 +346,7 @@ namespace ts { export function getLiteralText(node: LiteralLikeNode, sourceFile: SourceFile) { // If we don't need to downlevel and we can reach the original source text using // the node's parent reference, then simply get the text as it was originally written. - if (!nodeIsSynthesized(node) && node.parent) { + if (!nodeIsSynthesized(node) && node.parent && !(isNumericLiteral(node) && node.numericLiteralFlags & TokenFlags.ContainsSeparator)) { return getSourceTextOfNodeFromSourceFile(sourceFile, node); } diff --git a/tests/baselines/reference/parser.numericSeparators.binary.js b/tests/baselines/reference/parser.numericSeparators.binary.js new file mode 100644 index 00000000000..dada25e96e6 --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.binary.js @@ -0,0 +1,12 @@ +//// [parser.numericSeparators.binary.ts] +0b00_11; +0B0_1; +0b1100_0011; +0B0_11_0101; + + +//// [parser.numericSeparators.binary.js] +3; +1; +195; +53; diff --git a/tests/baselines/reference/parser.numericSeparators.binary.symbols b/tests/baselines/reference/parser.numericSeparators.binary.symbols new file mode 100644 index 00000000000..548836c3a3a --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.binary.symbols @@ -0,0 +1,7 @@ +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.binary.ts === +0b00_11; +No type information for this code.0B0_1; +No type information for this code.0b1100_0011; +No type information for this code.0B0_11_0101; +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/parser.numericSeparators.binary.types b/tests/baselines/reference/parser.numericSeparators.binary.types new file mode 100644 index 00000000000..44a859385f0 --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.binary.types @@ -0,0 +1,13 @@ +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.binary.ts === +0b00_11; +>0b00_11 : 3 + +0B0_1; +>0B0_1 : 1 + +0b1100_0011; +>0b1100_0011 : 195 + +0B0_11_0101; +>0B0_11_0101 : 53 + diff --git a/tests/baselines/reference/parser.numericSeparators.binaryNegative.errors.txt b/tests/baselines/reference/parser.numericSeparators.binaryNegative.errors.txt new file mode 100644 index 00000000000..afb39489b2b --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.binaryNegative.errors.txt @@ -0,0 +1,50 @@ +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/1.ts(1,5): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts(1,3): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,2): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,3): error TS1005: ';' expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,3): error TS2304: Cannot find name 'B0101'. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts(1,6): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts(1,13): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,3): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,4): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,5): error TS6188: Numeric separators are not allowed here. + + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/1.ts (1 errors) ==== + 0b00_ + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts (1 errors) ==== + 0b_110 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts (3 errors) ==== + 0_B0101 + ~ +!!! error TS6188: Numeric separators are not allowed here. + ~~~~~ +!!! error TS1005: ';' expected. + ~~~~~ +!!! error TS2304: Cannot find name 'B0101'. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts (1 errors) ==== + 0b01__11 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts (1 errors) ==== + 0B0110_0110__ + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts (3 errors) ==== + 0b___0111010_0101_1 + ~ +!!! error TS6188: Numeric separators are not allowed here. + ~ +!!! error TS6188: Numeric separators are not allowed here. + ~ +!!! error TS6188: Numeric separators are not allowed here. + \ No newline at end of file diff --git a/tests/baselines/reference/parser.numericSeparators.binaryNegative.js b/tests/baselines/reference/parser.numericSeparators.binaryNegative.js new file mode 100644 index 00000000000..b6cce556f78 --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.binaryNegative.js @@ -0,0 +1,34 @@ +//// [tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.binaryNegative.ts] //// + +//// [1.ts] +0b00_ + +//// [2.ts] +0b_110 + +//// [3.ts] +0_B0101 + +//// [4.ts] +0b01__11 + +//// [5.ts] +0B0110_0110__ + +//// [6.ts] +0b___0111010_0101_1 + + +//// [1.js] +0; +//// [2.js] +6; +//// [3.js] +0; +B0101; +//// [4.js] +7; +//// [5.js] +102; +//// [6.js] +1867; diff --git a/tests/baselines/reference/parser.numericSeparators.binaryNegative.symbols b/tests/baselines/reference/parser.numericSeparators.binaryNegative.symbols new file mode 100644 index 00000000000..a637eaa687a --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.binaryNegative.symbols @@ -0,0 +1,19 @@ +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/1.ts === +0b00_ +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts === +0b_110 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts === +0_B0101 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts === +0b01__11 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts === +0B0110_0110__ +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts === +0b___0111010_0101_1 +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/parser.numericSeparators.binaryNegative.types b/tests/baselines/reference/parser.numericSeparators.binaryNegative.types new file mode 100644 index 00000000000..14747bae17c --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.binaryNegative.types @@ -0,0 +1,25 @@ +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/1.ts === +0b00_ +>0b00_ : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts === +0b_110 +>0b_110 : 6 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts === +0_B0101 +>0_ : 0 +>B0101 : any + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts === +0b01__11 +>0b01__11 : 7 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts === +0B0110_0110__ +>0B0110_0110__ : 102 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts === +0b___0111010_0101_1 +>0b___0111010_0101_1 : 1867 + diff --git a/tests/baselines/reference/parser.numericSeparators.decimal.js b/tests/baselines/reference/parser.numericSeparators.decimal.js new file mode 100644 index 00000000000..9def2bf47f7 --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.decimal.js @@ -0,0 +1,32 @@ +//// [parser.numericSeparators.decimal.ts] +1_000_000_000 +1.1_00_01 +1e1_0 +1e+1_0 +1e-1_0 +1.1e10_0 +1.1e+10_0 +1.1e-10_0 +12_34_56 +1_22_333 +1_2.3_4 +1_2.3_4e5_6 +1_2.3_4e+5_6 +1_2.3_4e-5_6 + + +//// [parser.numericSeparators.decimal.js] +1000000000; +1.10001; +10000000000; +10000000000; +1e-10; +1.1e+100; +1.1e+100; +1.1e-100; +123456; +122333; +12.34; +1.234e+57; +1.234e+57; +1.234e-55; diff --git a/tests/baselines/reference/parser.numericSeparators.decimal.symbols b/tests/baselines/reference/parser.numericSeparators.decimal.symbols new file mode 100644 index 00000000000..0e0cf2d1742 --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.decimal.symbols @@ -0,0 +1,17 @@ +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.decimal.ts === +1_000_000_000 +No type information for this code.1.1_00_01 +No type information for this code.1e1_0 +No type information for this code.1e+1_0 +No type information for this code.1e-1_0 +No type information for this code.1.1e10_0 +No type information for this code.1.1e+10_0 +No type information for this code.1.1e-10_0 +No type information for this code.12_34_56 +No type information for this code.1_22_333 +No type information for this code.1_2.3_4 +No type information for this code.1_2.3_4e5_6 +No type information for this code.1_2.3_4e+5_6 +No type information for this code.1_2.3_4e-5_6 +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/parser.numericSeparators.decimal.types b/tests/baselines/reference/parser.numericSeparators.decimal.types new file mode 100644 index 00000000000..f8537553dd0 --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.decimal.types @@ -0,0 +1,43 @@ +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.decimal.ts === +1_000_000_000 +>1_000_000_000 : 1000000000 + +1.1_00_01 +>1.1_00_01 : 1.10001 + +1e1_0 +>1e1_0 : 10000000000 + +1e+1_0 +>1e+1_0 : 10000000000 + +1e-1_0 +>1e-1_0 : 1e-10 + +1.1e10_0 +>1.1e10_0 : 1.1e+100 + +1.1e+10_0 +>1.1e+10_0 : 1.1e+100 + +1.1e-10_0 +>1.1e-10_0 : 1.1e-100 + +12_34_56 +>12_34_56 : 123456 + +1_22_333 +>1_22_333 : 122333 + +1_2.3_4 +>1_2.3_4 : 12.34 + +1_2.3_4e5_6 +>1_2.3_4e5_6 : 1.234e+57 + +1_2.3_4e+5_6 +>1_2.3_4e+5_6 : 1.234e+57 + +1_2.3_4e-5_6 +>1_2.3_4e-5_6 : 1.234e-55 + diff --git a/tests/baselines/reference/parser.numericSeparators.decmialNegative.errors.txt b/tests/baselines/reference/parser.numericSeparators.decmialNegative.errors.txt new file mode 100644 index 00000000000..ab0262fd863 --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.decmialNegative.errors.txt @@ -0,0 +1,329 @@ +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/1.ts(1,1): error TS2304: Cannot find name '_10'. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/10.ts(1,4): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/11.ts(1,5): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/12.ts(1,2): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/13.ts(1,3): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/14.ts(1,4): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/15.ts(1,5): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/16.ts(1,1): error TS2304: Cannot find name '_0'. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/16.ts(1,3): error TS1005: ';' expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/17.ts(1,6): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/18.ts(1,3): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/19.ts(1,5): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts(1,3): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/20.ts(1,8): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/21.ts(1,2): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/22.ts(1,4): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/23.ts(1,5): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/24.ts(1,6): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/25.ts(1,2): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/26.ts(1,3): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/27.ts(1,4): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/28.ts(1,6): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/29.ts(1,1): error TS2304: Cannot find name '_0'. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/29.ts(1,3): error TS1005: ';' expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,3): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/30.ts(1,7): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/31.ts(1,3): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/32.ts(1,5): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/33.ts(1,9): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/34.ts(1,2): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/35.ts(1,4): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/36.ts(1,5): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/37.ts(1,6): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/38.ts(1,2): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/39.ts(1,3): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts(1,2): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/40.ts(1,4): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/41.ts(1,6): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/42.ts(1,1): error TS2304: Cannot find name '_0'. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/42.ts(1,3): error TS1005: ';' expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/43.ts(1,7): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/44.ts(1,3): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/45.ts(1,5): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/46.ts(1,9): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/47.ts(1,1): error TS1128: Declaration or statement expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/47.ts(1,2): error TS2304: Cannot find name '_'. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/48.ts(1,2): error TS1005: ';' expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/48.ts(1,2): error TS2304: Cannot find name '\u005F01234'. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/49.ts(1,5): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/49.ts(1,6): error TS1124: Digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts(1,3): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/50.ts(1,5): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/50.ts(1,6): error TS1124: Digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/51.ts(1,3): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,5): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/7.ts(1,5): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/8.ts(1,2): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/9.ts(1,3): error TS6188: Numeric separators are not allowed here. + + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/1.ts (1 errors) ==== + _10 + ~~~ +!!! error TS2304: Cannot find name '_10'. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts (1 errors) ==== + 10_ + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts (1 errors) ==== + 1__0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts (1 errors) ==== + 0_.0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts (1 errors) ==== + 0._0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts (1 errors) ==== + 0.0__0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/7.ts (1 errors) ==== + 0.0__ + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/8.ts (1 errors) ==== + 0_e0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/9.ts (1 errors) ==== + 0e_0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/10.ts (1 errors) ==== + 0e0_ + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/11.ts (1 errors) ==== + 0e0__0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/12.ts (1 errors) ==== + 0_.0e0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/13.ts (1 errors) ==== + 0._0e0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/14.ts (1 errors) ==== + 0.0_e0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/15.ts (1 errors) ==== + 0.0e_0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/16.ts (2 errors) ==== + _0.0e0 + ~~ +!!! error TS2304: Cannot find name '_0'. + ~~~~ +!!! error TS1005: ';' expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/17.ts (1 errors) ==== + 0.0e0_ + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/18.ts (1 errors) ==== + 0__0.0e0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/19.ts (1 errors) ==== + 0.0__0e0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/20.ts (1 errors) ==== + 0.00e0__0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/21.ts (1 errors) ==== + 0_e+0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/22.ts (1 errors) ==== + 0e+_0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/23.ts (1 errors) ==== + 0e+0_ + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/24.ts (1 errors) ==== + 0e+0__0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/25.ts (1 errors) ==== + 0_.0e+0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/26.ts (1 errors) ==== + 0._0e+0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/27.ts (1 errors) ==== + 0.0_e+0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/28.ts (1 errors) ==== + 0.0e+_0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/29.ts (2 errors) ==== + _0.0e+0 + ~~ +!!! error TS2304: Cannot find name '_0'. + ~~~~~ +!!! error TS1005: ';' expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/30.ts (1 errors) ==== + 0.0e+0_ + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/31.ts (1 errors) ==== + 0__0.0e+0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/32.ts (1 errors) ==== + 0.0__0e+0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/33.ts (1 errors) ==== + 0.00e+0__0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/34.ts (1 errors) ==== + 0_e+0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/35.ts (1 errors) ==== + 0e-_0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/36.ts (1 errors) ==== + 0e-0_ + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/37.ts (1 errors) ==== + 0e-0__0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/38.ts (1 errors) ==== + 0_.0e-0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/39.ts (1 errors) ==== + 0._0e-0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/40.ts (1 errors) ==== + 0.0_e-0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/41.ts (1 errors) ==== + 0.0e-_0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/42.ts (2 errors) ==== + _0.0e-0 + ~~ +!!! error TS2304: Cannot find name '_0'. + ~~~~~ +!!! error TS1005: ';' expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/43.ts (1 errors) ==== + 0.0e-0_ + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/44.ts (1 errors) ==== + 0__0.0e-0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/45.ts (1 errors) ==== + 0.0__0e-0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/46.ts (1 errors) ==== + 0.00e-0__0 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/47.ts (2 errors) ==== + ._ + ~ +!!! error TS1128: Declaration or statement expected. + ~ +!!! error TS2304: Cannot find name '_'. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/48.ts (2 errors) ==== + 1\u005F01234 + ~~~~~~~~~~~ +!!! error TS1005: ';' expected. + ~~~~~~~~~~~ +!!! error TS2304: Cannot find name '\u005F01234'. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/49.ts (2 errors) ==== + 1.0e_+10 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +!!! error TS1124: Digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/50.ts (2 errors) ==== + 1.0e_-10 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +!!! error TS1124: Digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/51.ts (1 errors) ==== + 0._ + ~ +!!! error TS6188: Numeric separators are not allowed here. + \ No newline at end of file diff --git a/tests/baselines/reference/parser.numericSeparators.decmialNegative.js b/tests/baselines/reference/parser.numericSeparators.decmialNegative.js new file mode 100644 index 00000000000..2ccffcc1460 --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.decmialNegative.js @@ -0,0 +1,262 @@ +//// [tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.decmialNegative.ts] //// + +//// [1.ts] +_10 + +//// [2.ts] +10_ + +//// [3.ts] +1__0 + +//// [4.ts] +0_.0 + +//// [5.ts] +0._0 + +//// [6.ts] +0.0__0 + +//// [7.ts] +0.0__ + +//// [8.ts] +0_e0 + +//// [9.ts] +0e_0 + +//// [10.ts] +0e0_ + +//// [11.ts] +0e0__0 + +//// [12.ts] +0_.0e0 + +//// [13.ts] +0._0e0 + +//// [14.ts] +0.0_e0 + +//// [15.ts] +0.0e_0 + +//// [16.ts] +_0.0e0 + +//// [17.ts] +0.0e0_ + +//// [18.ts] +0__0.0e0 + +//// [19.ts] +0.0__0e0 + +//// [20.ts] +0.00e0__0 + +//// [21.ts] +0_e+0 + +//// [22.ts] +0e+_0 + +//// [23.ts] +0e+0_ + +//// [24.ts] +0e+0__0 + +//// [25.ts] +0_.0e+0 + +//// [26.ts] +0._0e+0 + +//// [27.ts] +0.0_e+0 + +//// [28.ts] +0.0e+_0 + +//// [29.ts] +_0.0e+0 + +//// [30.ts] +0.0e+0_ + +//// [31.ts] +0__0.0e+0 + +//// [32.ts] +0.0__0e+0 + +//// [33.ts] +0.00e+0__0 + +//// [34.ts] +0_e+0 + +//// [35.ts] +0e-_0 + +//// [36.ts] +0e-0_ + +//// [37.ts] +0e-0__0 + +//// [38.ts] +0_.0e-0 + +//// [39.ts] +0._0e-0 + +//// [40.ts] +0.0_e-0 + +//// [41.ts] +0.0e-_0 + +//// [42.ts] +_0.0e-0 + +//// [43.ts] +0.0e-0_ + +//// [44.ts] +0__0.0e-0 + +//// [45.ts] +0.0__0e-0 + +//// [46.ts] +0.00e-0__0 + +//// [47.ts] +._ + +//// [48.ts] +1\u005F01234 + +//// [49.ts] +1.0e_+10 + +//// [50.ts] +1.0e_-10 + +//// [51.ts] +0._ + + +//// [1.js] +_10; +//// [2.js] +10; +//// [3.js] +10; +//// [4.js] +0; +//// [5.js] +0; +//// [6.js] +0; +//// [7.js] +0; +//// [8.js] +0; +//// [9.js] +0; +//// [10.js] +0; +//// [11.js] +0; +//// [12.js] +0; +//// [13.js] +0; +//// [14.js] +0; +//// [15.js] +0; +//// [16.js] +_0; +.0e0; +//// [17.js] +0; +//// [18.js] +0; +//// [19.js] +0; +//// [20.js] +0; +//// [21.js] +0; +//// [22.js] +0; +//// [23.js] +0; +//// [24.js] +0; +//// [25.js] +0; +//// [26.js] +0; +//// [27.js] +0; +//// [28.js] +0; +//// [29.js] +_0; +.0e+0; +//// [30.js] +0; +//// [31.js] +0; +//// [32.js] +0; +//// [33.js] +0; +//// [34.js] +0; +//// [35.js] +0; +//// [36.js] +0; +//// [37.js] +0; +//// [38.js] +0; +//// [39.js] +0; +//// [40.js] +0; +//// [41.js] +0; +//// [42.js] +_0; +.0e-0; +//// [43.js] +0; +//// [44.js] +0; +//// [45.js] +0; +//// [46.js] +0; +//// [47.js] +_; +//// [48.js] +1; +\u005F01234; +//// [49.js] +1 + 10; +//// [50.js] +1 - 10; +//// [51.js] +0; diff --git a/tests/baselines/reference/parser.numericSeparators.decmialNegative.symbols b/tests/baselines/reference/parser.numericSeparators.decmialNegative.symbols new file mode 100644 index 00000000000..daa418358b9 --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.decmialNegative.symbols @@ -0,0 +1,154 @@ +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/1.ts === +_10 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts === +10_ +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts === +1__0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts === +0_.0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts === +0._0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts === +0.0__0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/7.ts === +0.0__ +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/8.ts === +0_e0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/9.ts === +0e_0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/10.ts === +0e0_ +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/11.ts === +0e0__0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/12.ts === +0_.0e0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/13.ts === +0._0e0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/14.ts === +0.0_e0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/15.ts === +0.0e_0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/16.ts === +_0.0e0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/17.ts === +0.0e0_ +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/18.ts === +0__0.0e0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/19.ts === +0.0__0e0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/20.ts === +0.00e0__0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/21.ts === +0_e+0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/22.ts === +0e+_0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/23.ts === +0e+0_ +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/24.ts === +0e+0__0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/25.ts === +0_.0e+0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/26.ts === +0._0e+0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/27.ts === +0.0_e+0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/28.ts === +0.0e+_0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/29.ts === +_0.0e+0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/30.ts === +0.0e+0_ +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/31.ts === +0__0.0e+0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/32.ts === +0.0__0e+0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/33.ts === +0.00e+0__0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/34.ts === +0_e+0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/35.ts === +0e-_0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/36.ts === +0e-0_ +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/37.ts === +0e-0__0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/38.ts === +0_.0e-0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/39.ts === +0._0e-0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/40.ts === +0.0_e-0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/41.ts === +0.0e-_0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/42.ts === +_0.0e-0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/43.ts === +0.0e-0_ +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/44.ts === +0__0.0e-0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/45.ts === +0.0__0e-0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/46.ts === +0.00e-0__0 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/47.ts === +._ +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/48.ts === +1\u005F01234 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/49.ts === +1.0e_+10 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/50.ts === +1.0e_-10 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/51.ts === +0._ +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/parser.numericSeparators.decmialNegative.types b/tests/baselines/reference/parser.numericSeparators.decmialNegative.types new file mode 100644 index 00000000000..84ab9b585b9 --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.decmialNegative.types @@ -0,0 +1,212 @@ +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/1.ts === +_10 +>_10 : any + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts === +10_ +>10_ : 10 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts === +1__0 +>1__0 : 10 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts === +0_.0 +>0_.0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts === +0._0 +>0._0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts === +0.0__0 +>0.0__0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/7.ts === +0.0__ +>0.0__ : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/8.ts === +0_e0 +>0_e0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/9.ts === +0e_0 +>0e_0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/10.ts === +0e0_ +>0e0_ : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/11.ts === +0e0__0 +>0e0__0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/12.ts === +0_.0e0 +>0_.0e0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/13.ts === +0._0e0 +>0._0e0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/14.ts === +0.0_e0 +>0.0_e0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/15.ts === +0.0e_0 +>0.0e_0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/16.ts === +_0.0e0 +>_0 : any +>.0e0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/17.ts === +0.0e0_ +>0.0e0_ : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/18.ts === +0__0.0e0 +>0__0.0e0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/19.ts === +0.0__0e0 +>0.0__0e0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/20.ts === +0.00e0__0 +>0.00e0__0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/21.ts === +0_e+0 +>0_e+0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/22.ts === +0e+_0 +>0e+_0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/23.ts === +0e+0_ +>0e+0_ : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/24.ts === +0e+0__0 +>0e+0__0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/25.ts === +0_.0e+0 +>0_.0e+0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/26.ts === +0._0e+0 +>0._0e+0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/27.ts === +0.0_e+0 +>0.0_e+0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/28.ts === +0.0e+_0 +>0.0e+_0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/29.ts === +_0.0e+0 +>_0 : any +>.0e+0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/30.ts === +0.0e+0_ +>0.0e+0_ : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/31.ts === +0__0.0e+0 +>0__0.0e+0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/32.ts === +0.0__0e+0 +>0.0__0e+0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/33.ts === +0.00e+0__0 +>0.00e+0__0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/34.ts === +0_e+0 +>0_e+0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/35.ts === +0e-_0 +>0e-_0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/36.ts === +0e-0_ +>0e-0_ : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/37.ts === +0e-0__0 +>0e-0__0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/38.ts === +0_.0e-0 +>0_.0e-0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/39.ts === +0._0e-0 +>0._0e-0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/40.ts === +0.0_e-0 +>0.0_e-0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/41.ts === +0.0e-_0 +>0.0e-_0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/42.ts === +_0.0e-0 +>_0 : any +>.0e-0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/43.ts === +0.0e-0_ +>0.0e-0_ : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/44.ts === +0__0.0e-0 +>0__0.0e-0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/45.ts === +0.0__0e-0 +>0.0__0e-0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/46.ts === +0.00e-0__0 +>0.00e-0__0 : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/47.ts === +._ +>_ : any + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/48.ts === +1\u005F01234 +>1 : 1 +>\u005F01234 : any + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/49.ts === +1.0e_+10 +>1.0e_+10 : number +>1.0e_ : 1 +>10 : 10 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/50.ts === +1.0e_-10 +>1.0e_-10 : number +>1.0e_ : 1 +>10 : 10 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/51.ts === +0._ +>0._ : 0 + diff --git a/tests/baselines/reference/parser.numericSeparators.hex.js b/tests/baselines/reference/parser.numericSeparators.hex.js new file mode 100644 index 00000000000..ffa64ec552d --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.hex.js @@ -0,0 +1,12 @@ +//// [parser.numericSeparators.hex.ts] +0x00_11; +0X0_1; +0x1100_0011; +0X0_11_0101; + + +//// [parser.numericSeparators.hex.js] +17; +1; +285212689; +1114369; diff --git a/tests/baselines/reference/parser.numericSeparators.hex.symbols b/tests/baselines/reference/parser.numericSeparators.hex.symbols new file mode 100644 index 00000000000..9c8a5176cda --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.hex.symbols @@ -0,0 +1,7 @@ +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.hex.ts === +0x00_11; +No type information for this code.0X0_1; +No type information for this code.0x1100_0011; +No type information for this code.0X0_11_0101; +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/parser.numericSeparators.hex.types b/tests/baselines/reference/parser.numericSeparators.hex.types new file mode 100644 index 00000000000..25830f414b1 --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.hex.types @@ -0,0 +1,13 @@ +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.hex.ts === +0x00_11; +>0x00_11 : 17 + +0X0_1; +>0X0_1 : 1 + +0x1100_0011; +>0x1100_0011 : 285212689 + +0X0_11_0101; +>0X0_11_0101 : 1114369 + diff --git a/tests/baselines/reference/parser.numericSeparators.hexNegative.errors.txt b/tests/baselines/reference/parser.numericSeparators.hexNegative.errors.txt new file mode 100644 index 00000000000..4fff6f288fb --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.hexNegative.errors.txt @@ -0,0 +1,50 @@ +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/1.ts(1,5): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts(1,3): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,2): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,3): error TS1005: ';' expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,3): error TS2304: Cannot find name 'X0101'. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts(1,6): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts(1,13): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,3): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,4): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,5): error TS6188: Numeric separators are not allowed here. + + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/1.ts (1 errors) ==== + 0x00_ + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts (1 errors) ==== + 0x_110 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts (3 errors) ==== + 0_X0101 + ~ +!!! error TS6188: Numeric separators are not allowed here. + ~~~~~ +!!! error TS1005: ';' expected. + ~~~~~ +!!! error TS2304: Cannot find name 'X0101'. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts (1 errors) ==== + 0x01__11 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts (1 errors) ==== + 0X0110_0110__ + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts (3 errors) ==== + 0x___0111010_0101_1 + ~ +!!! error TS6188: Numeric separators are not allowed here. + ~ +!!! error TS6188: Numeric separators are not allowed here. + ~ +!!! error TS6188: Numeric separators are not allowed here. + \ No newline at end of file diff --git a/tests/baselines/reference/parser.numericSeparators.hexNegative.js b/tests/baselines/reference/parser.numericSeparators.hexNegative.js new file mode 100644 index 00000000000..8ac48fcb144 --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.hexNegative.js @@ -0,0 +1,34 @@ +//// [tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.hexNegative.ts] //// + +//// [1.ts] +0x00_ + +//// [2.ts] +0x_110 + +//// [3.ts] +0_X0101 + +//// [4.ts] +0x01__11 + +//// [5.ts] +0X0110_0110__ + +//// [6.ts] +0x___0111010_0101_1 + + +//// [1.js] +0; +//// [2.js] +272; +//// [3.js] +0; +X0101; +//// [4.js] +273; +//// [5.js] +17826064; +//// [6.js] +1172542853137; diff --git a/tests/baselines/reference/parser.numericSeparators.hexNegative.symbols b/tests/baselines/reference/parser.numericSeparators.hexNegative.symbols new file mode 100644 index 00000000000..f69f51519fb --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.hexNegative.symbols @@ -0,0 +1,19 @@ +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/1.ts === +0x00_ +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts === +0x_110 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts === +0_X0101 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts === +0x01__11 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts === +0X0110_0110__ +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts === +0x___0111010_0101_1 +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/parser.numericSeparators.hexNegative.types b/tests/baselines/reference/parser.numericSeparators.hexNegative.types new file mode 100644 index 00000000000..fa48c933bdc --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.hexNegative.types @@ -0,0 +1,25 @@ +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/1.ts === +0x00_ +>0x00_ : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts === +0x_110 +>0x_110 : 272 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts === +0_X0101 +>0_ : 0 +>X0101 : any + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts === +0x01__11 +>0x01__11 : 273 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts === +0X0110_0110__ +>0X0110_0110__ : 17826064 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts === +0x___0111010_0101_1 +>0x___0111010_0101_1 : 1172542853137 + diff --git a/tests/baselines/reference/parser.numericSeparators.octal.js b/tests/baselines/reference/parser.numericSeparators.octal.js new file mode 100644 index 00000000000..fa8d49db8fd --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.octal.js @@ -0,0 +1,12 @@ +//// [parser.numericSeparators.octal.ts] +0o00_11; +0O0_1; +0o1100_0011; +0O0_11_0101; + + +//// [parser.numericSeparators.octal.js] +9; +1; +2359305; +36929; diff --git a/tests/baselines/reference/parser.numericSeparators.octal.symbols b/tests/baselines/reference/parser.numericSeparators.octal.symbols new file mode 100644 index 00000000000..a69900ae50f --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.octal.symbols @@ -0,0 +1,7 @@ +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.octal.ts === +0o00_11; +No type information for this code.0O0_1; +No type information for this code.0o1100_0011; +No type information for this code.0O0_11_0101; +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/parser.numericSeparators.octal.types b/tests/baselines/reference/parser.numericSeparators.octal.types new file mode 100644 index 00000000000..18f0b5bd0f2 --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.octal.types @@ -0,0 +1,13 @@ +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.octal.ts === +0o00_11; +>0o00_11 : 9 + +0O0_1; +>0O0_1 : 1 + +0o1100_0011; +>0o1100_0011 : 2359305 + +0O0_11_0101; +>0O0_11_0101 : 36929 + diff --git a/tests/baselines/reference/parser.numericSeparators.octalNegative.errors.txt b/tests/baselines/reference/parser.numericSeparators.octalNegative.errors.txt new file mode 100644 index 00000000000..6f877a6c752 --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.octalNegative.errors.txt @@ -0,0 +1,50 @@ +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/1.ts(1,5): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts(1,3): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,2): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,3): error TS1005: ';' expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,3): error TS2304: Cannot find name 'O0101'. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts(1,6): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts(1,13): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,3): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,4): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,5): error TS6188: Numeric separators are not allowed here. + + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/1.ts (1 errors) ==== + 0o00_ + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts (1 errors) ==== + 0o_110 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts (3 errors) ==== + 0_O0101 + ~ +!!! error TS6188: Numeric separators are not allowed here. + ~~~~~ +!!! error TS1005: ';' expected. + ~~~~~ +!!! error TS2304: Cannot find name 'O0101'. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts (1 errors) ==== + 0o01__11 + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts (1 errors) ==== + 0O0110_0110__ + ~ +!!! error TS6188: Numeric separators are not allowed here. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts (3 errors) ==== + 0o___0111010_0101_1 + ~ +!!! error TS6188: Numeric separators are not allowed here. + ~ +!!! error TS6188: Numeric separators are not allowed here. + ~ +!!! error TS6188: Numeric separators are not allowed here. + \ No newline at end of file diff --git a/tests/baselines/reference/parser.numericSeparators.octalNegative.js b/tests/baselines/reference/parser.numericSeparators.octalNegative.js new file mode 100644 index 00000000000..d265869d1e4 --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.octalNegative.js @@ -0,0 +1,34 @@ +//// [tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.octalNegative.ts] //// + +//// [1.ts] +0o00_ + +//// [2.ts] +0o_110 + +//// [3.ts] +0_O0101 + +//// [4.ts] +0o01__11 + +//// [5.ts] +0O0110_0110__ + +//// [6.ts] +0o___0111010_0101_1 + + +//// [1.js] +0; +//// [2.js] +72; +//// [3.js] +0; +O0101; +//// [4.js] +73; +//// [5.js] +294984; +//// [6.js] +1224999433; diff --git a/tests/baselines/reference/parser.numericSeparators.octalNegative.symbols b/tests/baselines/reference/parser.numericSeparators.octalNegative.symbols new file mode 100644 index 00000000000..212331d0010 --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.octalNegative.symbols @@ -0,0 +1,19 @@ +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/1.ts === +0o00_ +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts === +0o_110 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts === +0_O0101 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts === +0o01__11 +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts === +0O0110_0110__ +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts === +0o___0111010_0101_1 +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/parser.numericSeparators.octalNegative.types b/tests/baselines/reference/parser.numericSeparators.octalNegative.types new file mode 100644 index 00000000000..5479030d794 --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.octalNegative.types @@ -0,0 +1,25 @@ +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/1.ts === +0o00_ +>0o00_ : 0 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts === +0o_110 +>0o_110 : 72 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts === +0_O0101 +>0_ : 0 +>O0101 : any + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts === +0o01__11 +>0o01__11 : 73 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts === +0O0110_0110__ +>0O0110_0110__ : 294984 + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts === +0o___0111010_0101_1 +>0o___0111010_0101_1 : 1224999433 + diff --git a/tests/baselines/reference/parser.numericSeparators.unicodeEscape.errors.txt b/tests/baselines/reference/parser.numericSeparators.unicodeEscape.errors.txt new file mode 100644 index 00000000000..6ba8c2efdf7 --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.unicodeEscape.errors.txt @@ -0,0 +1,236 @@ +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/1.ts(1,7): error TS1199: Unterminated Unicode escape sequence. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/10.ts(1,5): error TS1125: Hexadecimal digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/11.ts(1,5): error TS1125: Hexadecimal digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/13.ts(1,5): error TS1125: Hexadecimal digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/14.ts(1,5): error TS1125: Hexadecimal digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/15.ts(1,5): error TS1125: Hexadecimal digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/17.ts(1,4): error TS1125: Hexadecimal digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/18.ts(1,4): error TS1125: Hexadecimal digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/19.ts(1,4): error TS1125: Hexadecimal digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts(1,7): error TS1199: Unterminated Unicode escape sequence. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/21.ts(1,4): error TS1125: Hexadecimal digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/22.ts(1,4): error TS1125: Hexadecimal digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/23.ts(1,4): error TS1125: Hexadecimal digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/25.ts(1,11): error TS1199: Unterminated Unicode escape sequence. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/26.ts(1,11): error TS1199: Unterminated Unicode escape sequence. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/27.ts(1,11): error TS1199: Unterminated Unicode escape sequence. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,7): error TS1199: Unterminated Unicode escape sequence. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/37.ts(1,7): error TS1199: Unterminated Unicode escape sequence. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/38.ts(1,7): error TS1199: Unterminated Unicode escape sequence. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/39.ts(1,7): error TS1199: Unterminated Unicode escape sequence. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/41.ts(1,6): error TS1125: Hexadecimal digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/42.ts(1,6): error TS1125: Hexadecimal digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/43.ts(1,6): error TS1125: Hexadecimal digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/45.ts(1,5): error TS1125: Hexadecimal digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/46.ts(1,5): error TS1125: Hexadecimal digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/47.ts(1,5): error TS1125: Hexadecimal digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts(1,6): error TS1125: Hexadecimal digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,6): error TS1125: Hexadecimal digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/7.ts(1,6): error TS1125: Hexadecimal digit expected. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/9.ts(1,5): error TS1125: Hexadecimal digit expected. + + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/1.ts (1 errors) ==== + "\u{10_ffff}" + +!!! error TS1199: Unterminated Unicode escape sequence. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts (1 errors) ==== + '\u{10_ffff}' + +!!! error TS1199: Unterminated Unicode escape sequence. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts (1 errors) ==== + `\u{10_ffff}` + +!!! error TS1199: Unterminated Unicode escape sequence. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts (0 errors) ==== + /\u{10_ffff}/u + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts (1 errors) ==== + "\uff_ff" + +!!! error TS1125: Hexadecimal digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts (1 errors) ==== + '\uff_ff' + +!!! error TS1125: Hexadecimal digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/7.ts (1 errors) ==== + `\uff_ff` + +!!! error TS1125: Hexadecimal digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/8.ts (0 errors) ==== + /\uff_ff/u + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/9.ts (1 errors) ==== + "\xf_f" + +!!! error TS1125: Hexadecimal digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/10.ts (1 errors) ==== + '\xf_f' + +!!! error TS1125: Hexadecimal digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/11.ts (1 errors) ==== + `\xf_f` + +!!! error TS1125: Hexadecimal digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/12.ts (0 errors) ==== + /\xf_f/u + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/13.ts (1 errors) ==== + "\u{_10ffff}" + +!!! error TS1125: Hexadecimal digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/14.ts (1 errors) ==== + '\u{_10ffff}' + +!!! error TS1125: Hexadecimal digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/15.ts (1 errors) ==== + `\u{_10ffff}` + +!!! error TS1125: Hexadecimal digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/16.ts (0 errors) ==== + /\u{_10ffff}/u + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/17.ts (1 errors) ==== + "\u_ffff" + +!!! error TS1125: Hexadecimal digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/18.ts (1 errors) ==== + '\u_ffff' + +!!! error TS1125: Hexadecimal digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/19.ts (1 errors) ==== + `\u_ffff` + +!!! error TS1125: Hexadecimal digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/20.ts (0 errors) ==== + /\u_ffff/u + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/21.ts (1 errors) ==== + "\x_ff" + +!!! error TS1125: Hexadecimal digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/22.ts (1 errors) ==== + '\x_ff' + +!!! error TS1125: Hexadecimal digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/23.ts (1 errors) ==== + `\x_ff` + +!!! error TS1125: Hexadecimal digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/24.ts (0 errors) ==== + /\x_ff/u + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/25.ts (1 errors) ==== + "\u{10ffff_}" + +!!! error TS1199: Unterminated Unicode escape sequence. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/26.ts (1 errors) ==== + '\u{10ffff_}' + +!!! error TS1199: Unterminated Unicode escape sequence. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/27.ts (1 errors) ==== + `\u{10ffff_}` + +!!! error TS1199: Unterminated Unicode escape sequence. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/28.ts (0 errors) ==== + /\u{10ffff_}/u + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/29.ts (0 errors) ==== + "\uffff_" + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/30.ts (0 errors) ==== + '\uffff_' + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/31.ts (0 errors) ==== + `\uffff_` + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/32.ts (0 errors) ==== + /\uffff_/u + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/33.ts (0 errors) ==== + "\xff_" + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/34.ts (0 errors) ==== + '\xff_' + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/35.ts (0 errors) ==== + `\xff_` + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/36.ts (0 errors) ==== + /\xff_/u + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/37.ts (1 errors) ==== + "\u{10__ffff}" + +!!! error TS1199: Unterminated Unicode escape sequence. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/38.ts (1 errors) ==== + '\u{10__ffff}' + +!!! error TS1199: Unterminated Unicode escape sequence. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/39.ts (1 errors) ==== + `\u{10__ffff}` + +!!! error TS1199: Unterminated Unicode escape sequence. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/40.ts (0 errors) ==== + /\u{10__ffff}/u + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/41.ts (1 errors) ==== + "\uff__ff" + +!!! error TS1125: Hexadecimal digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/42.ts (1 errors) ==== + '\uff__ff' + +!!! error TS1125: Hexadecimal digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/43.ts (1 errors) ==== + `\uff__ff` + +!!! error TS1125: Hexadecimal digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/44.ts (0 errors) ==== + /\uff__ff/u + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/45.ts (1 errors) ==== + "\xf__f" + +!!! error TS1125: Hexadecimal digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/46.ts (1 errors) ==== + '\xf__f' + +!!! error TS1125: Hexadecimal digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/47.ts (1 errors) ==== + `\xf__f` + +!!! error TS1125: Hexadecimal digit expected. + +==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/48.ts (0 errors) ==== + /\xf__f/u + \ No newline at end of file diff --git a/tests/baselines/reference/parser.numericSeparators.unicodeEscape.js b/tests/baselines/reference/parser.numericSeparators.unicodeEscape.js new file mode 100644 index 00000000000..8e19ba99949 --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.unicodeEscape.js @@ -0,0 +1,243 @@ +//// [tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.unicodeEscape.ts] //// + +//// [1.ts] +"\u{10_ffff}" + +//// [2.ts] +'\u{10_ffff}' + +//// [3.ts] +`\u{10_ffff}` + +//// [4.ts] +/\u{10_ffff}/u + +//// [5.ts] +"\uff_ff" + +//// [6.ts] +'\uff_ff' + +//// [7.ts] +`\uff_ff` + +//// [8.ts] +/\uff_ff/u + +//// [9.ts] +"\xf_f" + +//// [10.ts] +'\xf_f' + +//// [11.ts] +`\xf_f` + +//// [12.ts] +/\xf_f/u + +//// [13.ts] +"\u{_10ffff}" + +//// [14.ts] +'\u{_10ffff}' + +//// [15.ts] +`\u{_10ffff}` + +//// [16.ts] +/\u{_10ffff}/u + +//// [17.ts] +"\u_ffff" + +//// [18.ts] +'\u_ffff' + +//// [19.ts] +`\u_ffff` + +//// [20.ts] +/\u_ffff/u + +//// [21.ts] +"\x_ff" + +//// [22.ts] +'\x_ff' + +//// [23.ts] +`\x_ff` + +//// [24.ts] +/\x_ff/u + +//// [25.ts] +"\u{10ffff_}" + +//// [26.ts] +'\u{10ffff_}' + +//// [27.ts] +`\u{10ffff_}` + +//// [28.ts] +/\u{10ffff_}/u + +//// [29.ts] +"\uffff_" + +//// [30.ts] +'\uffff_' + +//// [31.ts] +`\uffff_` + +//// [32.ts] +/\uffff_/u + +//// [33.ts] +"\xff_" + +//// [34.ts] +'\xff_' + +//// [35.ts] +`\xff_` + +//// [36.ts] +/\xff_/u + +//// [37.ts] +"\u{10__ffff}" + +//// [38.ts] +'\u{10__ffff}' + +//// [39.ts] +`\u{10__ffff}` + +//// [40.ts] +/\u{10__ffff}/u + +//// [41.ts] +"\uff__ff" + +//// [42.ts] +'\uff__ff' + +//// [43.ts] +`\uff__ff` + +//// [44.ts] +/\uff__ff/u + +//// [45.ts] +"\xf__f" + +//// [46.ts] +'\xf__f' + +//// [47.ts] +`\xf__f` + +//// [48.ts] +/\xf__f/u + + +//// [1.js] +"\u{10_ffff}"; +//// [2.js] +'\u{10_ffff}'; +//// [3.js] +"_ffff}"; +//// [4.js] +/\u{10_ffff}/u; +//// [5.js] +"\uff_ff"; +//// [6.js] +'\uff_ff'; +//// [7.js] +"_ff"; +//// [8.js] +/\uff_ff/u; +//// [9.js] +"\xf_f"; +//// [10.js] +'\xf_f'; +//// [11.js] +"_f"; +//// [12.js] +/\xf_f/u; +//// [13.js] +"\u{_10ffff}"; +//// [14.js] +'\u{_10ffff}'; +//// [15.js] +"_10ffff}"; +//// [16.js] +/\u{_10ffff}/u; +//// [17.js] +"\u_ffff"; +//// [18.js] +'\u_ffff'; +//// [19.js] +"_ffff"; +//// [20.js] +/\u_ffff/u; +//// [21.js] +"\x_ff"; +//// [22.js] +'\x_ff'; +//// [23.js] +"_ff"; +//// [24.js] +/\x_ff/u; +//// [25.js] +"\u{10ffff_}"; +//// [26.js] +'\u{10ffff_}'; +//// [27.js] +"_}"; +//// [28.js] +/\u{10ffff_}/u; +//// [29.js] +"\uffff_"; +//// [30.js] +'\uffff_'; +//// [31.js] +"\uFFFF_"; +//// [32.js] +/\uffff_/u; +//// [33.js] +"\xff_"; +//// [34.js] +'\xff_'; +//// [35.js] +"\u00FF_"; +//// [36.js] +/\xff_/u; +//// [37.js] +"\u{10__ffff}"; +//// [38.js] +'\u{10__ffff}'; +//// [39.js] +"__ffff}"; +//// [40.js] +/\u{10__ffff}/u; +//// [41.js] +"\uff__ff"; +//// [42.js] +'\uff__ff'; +//// [43.js] +"__ff"; +//// [44.js] +/\uff__ff/u; +//// [45.js] +"\xf__f"; +//// [46.js] +'\xf__f'; +//// [47.js] +"__f"; +//// [48.js] +/\xf__f/u; diff --git a/tests/baselines/reference/parser.numericSeparators.unicodeEscape.symbols b/tests/baselines/reference/parser.numericSeparators.unicodeEscape.symbols new file mode 100644 index 00000000000..908e05065a7 --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.unicodeEscape.symbols @@ -0,0 +1,145 @@ +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/1.ts === +"\u{10_ffff}" +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts === +'\u{10_ffff}' +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts === +`\u{10_ffff}` +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts === +/\u{10_ffff}/u +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts === +"\uff_ff" +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts === +'\uff_ff' +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/7.ts === +`\uff_ff` +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/8.ts === +/\uff_ff/u +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/9.ts === +"\xf_f" +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/10.ts === +'\xf_f' +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/11.ts === +`\xf_f` +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/12.ts === +/\xf_f/u +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/13.ts === +"\u{_10ffff}" +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/14.ts === +'\u{_10ffff}' +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/15.ts === +`\u{_10ffff}` +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/16.ts === +/\u{_10ffff}/u +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/17.ts === +"\u_ffff" +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/18.ts === +'\u_ffff' +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/19.ts === +`\u_ffff` +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/20.ts === +/\u_ffff/u +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/21.ts === +"\x_ff" +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/22.ts === +'\x_ff' +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/23.ts === +`\x_ff` +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/24.ts === +/\x_ff/u +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/25.ts === +"\u{10ffff_}" +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/26.ts === +'\u{10ffff_}' +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/27.ts === +`\u{10ffff_}` +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/28.ts === +/\u{10ffff_}/u +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/29.ts === +"\uffff_" +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/30.ts === +'\uffff_' +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/31.ts === +`\uffff_` +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/32.ts === +/\uffff_/u +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/33.ts === +"\xff_" +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/34.ts === +'\xff_' +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/35.ts === +`\xff_` +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/36.ts === +/\xff_/u +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/37.ts === +"\u{10__ffff}" +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/38.ts === +'\u{10__ffff}' +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/39.ts === +`\u{10__ffff}` +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/40.ts === +/\u{10__ffff}/u +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/41.ts === +"\uff__ff" +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/42.ts === +'\uff__ff' +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/43.ts === +`\uff__ff` +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/44.ts === +/\uff__ff/u +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/45.ts === +"\xf__f" +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/46.ts === +'\xf__f' +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/47.ts === +`\xf__f` +No type information for this code. +No type information for this code.=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/48.ts === +/\xf__f/u +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/parser.numericSeparators.unicodeEscape.types b/tests/baselines/reference/parser.numericSeparators.unicodeEscape.types new file mode 100644 index 00000000000..052fc3c09cd --- /dev/null +++ b/tests/baselines/reference/parser.numericSeparators.unicodeEscape.types @@ -0,0 +1,192 @@ +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/1.ts === +"\u{10_ffff}" +>"\u{10_ffff}" : "_ffff}" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts === +'\u{10_ffff}' +>'\u{10_ffff}' : "_ffff}" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts === +`\u{10_ffff}` +>`\u{10_ffff}` : "_ffff}" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts === +/\u{10_ffff}/u +>/\u{10_ffff}/u : RegExp + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts === +"\uff_ff" +>"\uff_ff" : "_ff" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts === +'\uff_ff' +>'\uff_ff' : "_ff" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/7.ts === +`\uff_ff` +>`\uff_ff` : "_ff" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/8.ts === +/\uff_ff/u +>/\uff_ff/u : RegExp + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/9.ts === +"\xf_f" +>"\xf_f" : "_f" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/10.ts === +'\xf_f' +>'\xf_f' : "_f" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/11.ts === +`\xf_f` +>`\xf_f` : "_f" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/12.ts === +/\xf_f/u +>/\xf_f/u : RegExp + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/13.ts === +"\u{_10ffff}" +>"\u{_10ffff}" : "_10ffff}" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/14.ts === +'\u{_10ffff}' +>'\u{_10ffff}' : "_10ffff}" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/15.ts === +`\u{_10ffff}` +>`\u{_10ffff}` : "_10ffff}" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/16.ts === +/\u{_10ffff}/u +>/\u{_10ffff}/u : RegExp + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/17.ts === +"\u_ffff" +>"\u_ffff" : "_ffff" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/18.ts === +'\u_ffff' +>'\u_ffff' : "_ffff" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/19.ts === +`\u_ffff` +>`\u_ffff` : "_ffff" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/20.ts === +/\u_ffff/u +>/\u_ffff/u : RegExp + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/21.ts === +"\x_ff" +>"\x_ff" : "_ff" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/22.ts === +'\x_ff' +>'\x_ff' : "_ff" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/23.ts === +`\x_ff` +>`\x_ff` : "_ff" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/24.ts === +/\x_ff/u +>/\x_ff/u : RegExp + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/25.ts === +"\u{10ffff_}" +>"\u{10ffff_}" : "_}" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/26.ts === +'\u{10ffff_}' +>'\u{10ffff_}' : "_}" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/27.ts === +`\u{10ffff_}` +>`\u{10ffff_}` : "_}" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/28.ts === +/\u{10ffff_}/u +>/\u{10ffff_}/u : RegExp + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/29.ts === +"\uffff_" +>"\uffff_" : "￿_" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/30.ts === +'\uffff_' +>'\uffff_' : "￿_" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/31.ts === +`\uffff_` +>`\uffff_` : "￿_" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/32.ts === +/\uffff_/u +>/\uffff_/u : RegExp + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/33.ts === +"\xff_" +>"\xff_" : "ÿ_" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/34.ts === +'\xff_' +>'\xff_' : "ÿ_" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/35.ts === +`\xff_` +>`\xff_` : "ÿ_" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/36.ts === +/\xff_/u +>/\xff_/u : RegExp + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/37.ts === +"\u{10__ffff}" +>"\u{10__ffff}" : "__ffff}" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/38.ts === +'\u{10__ffff}' +>'\u{10__ffff}' : "__ffff}" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/39.ts === +`\u{10__ffff}` +>`\u{10__ffff}` : "__ffff}" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/40.ts === +/\u{10__ffff}/u +>/\u{10__ffff}/u : RegExp + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/41.ts === +"\uff__ff" +>"\uff__ff" : "__ff" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/42.ts === +'\uff__ff' +>'\uff__ff' : "__ff" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/43.ts === +`\uff__ff` +>`\uff__ff` : "__ff" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/44.ts === +/\uff__ff/u +>/\uff__ff/u : RegExp + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/45.ts === +"\xf__f" +>"\xf__f" : "__f" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/46.ts === +'\xf__f' +>'\xf__f' : "__f" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/47.ts === +`\xf__f` +>`\xf__f` : "__f" + +=== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/48.ts === +/\xf__f/u +>/\xf__f/u : RegExp + diff --git a/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.binary.ts b/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.binary.ts new file mode 100644 index 00000000000..ece8cba27c7 --- /dev/null +++ b/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.binary.ts @@ -0,0 +1,4 @@ +0b00_11; +0B0_1; +0b1100_0011; +0B0_11_0101; diff --git a/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.binaryNegative.ts b/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.binaryNegative.ts new file mode 100644 index 00000000000..f979ce1b3a0 --- /dev/null +++ b/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.binaryNegative.ts @@ -0,0 +1,18 @@ +// @filename: 1.ts +0b00_ + +// @filename: 2.ts +0b_110 + +// @filename: 3.ts +0_B0101 + +// @filename: 4.ts +0b01__11 + +// @filename: 5.ts + +0B0110_0110__ + +// @filename: 6.ts +0b___0111010_0101_1 diff --git a/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.decimal.ts b/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.decimal.ts new file mode 100644 index 00000000000..e8b6d5440cf --- /dev/null +++ b/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.decimal.ts @@ -0,0 +1,14 @@ +1_000_000_000 +1.1_00_01 +1e1_0 +1e+1_0 +1e-1_0 +1.1e10_0 +1.1e+10_0 +1.1e-10_0 +12_34_56 +1_22_333 +1_2.3_4 +1_2.3_4e5_6 +1_2.3_4e+5_6 +1_2.3_4e-5_6 diff --git a/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.decmialNegative.ts b/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.decmialNegative.ts new file mode 100644 index 00000000000..3c294148c19 --- /dev/null +++ b/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.decmialNegative.ts @@ -0,0 +1,152 @@ +// @filename: 1.ts +_10 + +// @filename: 2.ts +10_ + +// @filename: 3.ts +1__0 + +// @filename: 4.ts +0_.0 + +// @filename: 5.ts +0._0 + +// @filename: 6.ts +0.0__0 + +// @filename: 7.ts +0.0__ + +// @filename: 8.ts +0_e0 + +// @filename: 9.ts +0e_0 + +// @filename: 10.ts +0e0_ + +// @filename: 11.ts +0e0__0 + +// @filename: 12.ts +0_.0e0 + +// @filename: 13.ts +0._0e0 + +// @filename: 14.ts +0.0_e0 + +// @filename: 15.ts +0.0e_0 + +// @filename: 16.ts +_0.0e0 + +// @filename: 17.ts +0.0e0_ + +// @filename: 18.ts +0__0.0e0 + +// @filename: 19.ts +0.0__0e0 + +// @filename: 20.ts +0.00e0__0 + +// @filename: 21.ts +0_e+0 + +// @filename: 22.ts +0e+_0 + +// @filename: 23.ts +0e+0_ + +// @filename: 24.ts +0e+0__0 + +// @filename: 25.ts +0_.0e+0 + +// @filename: 26.ts +0._0e+0 + +// @filename: 27.ts +0.0_e+0 + +// @filename: 28.ts +0.0e+_0 + +// @filename: 29.ts +_0.0e+0 + +// @filename: 30.ts +0.0e+0_ + +// @filename: 31.ts +0__0.0e+0 + +// @filename: 32.ts +0.0__0e+0 + +// @filename: 33.ts +0.00e+0__0 + +// @filename: 34.ts +0_e+0 + +// @filename: 35.ts +0e-_0 + +// @filename: 36.ts +0e-0_ + +// @filename: 37.ts +0e-0__0 + +// @filename: 38.ts +0_.0e-0 + +// @filename: 39.ts +0._0e-0 + +// @filename: 40.ts +0.0_e-0 + +// @filename: 41.ts +0.0e-_0 + +// @filename: 42.ts +_0.0e-0 + +// @filename: 43.ts +0.0e-0_ + +// @filename: 44.ts +0__0.0e-0 + +// @filename: 45.ts +0.0__0e-0 + +// @filename: 46.ts +0.00e-0__0 + +// @filename: 47.ts +._ + +// @filename: 48.ts +1\u005F01234 + +// @filename: 49.ts +1.0e_+10 + +// @filename: 50.ts +1.0e_-10 + +// @filename: 51.ts +0._ diff --git a/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.hex.ts b/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.hex.ts new file mode 100644 index 00000000000..03a7de3eae1 --- /dev/null +++ b/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.hex.ts @@ -0,0 +1,4 @@ +0x00_11; +0X0_1; +0x1100_0011; +0X0_11_0101; diff --git a/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.hexNegative.ts b/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.hexNegative.ts new file mode 100644 index 00000000000..96725fd56b3 --- /dev/null +++ b/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.hexNegative.ts @@ -0,0 +1,18 @@ +// @filename: 1.ts +0x00_ + +// @filename: 2.ts +0x_110 + +// @filename: 3.ts +0_X0101 + +// @filename: 4.ts +0x01__11 + +// @filename: 5.ts + +0X0110_0110__ + +// @filename: 6.ts +0x___0111010_0101_1 diff --git a/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.octal.ts b/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.octal.ts new file mode 100644 index 00000000000..96372751c7f --- /dev/null +++ b/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.octal.ts @@ -0,0 +1,4 @@ +0o00_11; +0O0_1; +0o1100_0011; +0O0_11_0101; diff --git a/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.octalNegative.ts b/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.octalNegative.ts new file mode 100644 index 00000000000..e7b7f7648b7 --- /dev/null +++ b/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.octalNegative.ts @@ -0,0 +1,18 @@ +// @filename: 1.ts +0o00_ + +// @filename: 2.ts +0o_110 + +// @filename: 3.ts +0_O0101 + +// @filename: 4.ts +0o01__11 + +// @filename: 5.ts + +0O0110_0110__ + +// @filename: 6.ts +0o___0111010_0101_1 diff --git a/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.unicodeEscape.ts b/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.unicodeEscape.ts new file mode 100644 index 00000000000..ae143939aa7 --- /dev/null +++ b/tests/cases/conformance/parser/ecmascriptnext/numericSeparators/parser.numericSeparators.unicodeEscape.ts @@ -0,0 +1,143 @@ +// @filename: 1.ts +"\u{10_ffff}" + +// @filename: 2.ts +'\u{10_ffff}' + +// @filename: 3.ts +`\u{10_ffff}` + +// @filename: 4.ts +/\u{10_ffff}/u + +// @filename: 5.ts +"\uff_ff" + +// @filename: 6.ts +'\uff_ff' + +// @filename: 7.ts +`\uff_ff` + +// @filename: 8.ts +/\uff_ff/u + +// @filename: 9.ts +"\xf_f" + +// @filename: 10.ts +'\xf_f' + +// @filename: 11.ts +`\xf_f` + +// @filename: 12.ts +/\xf_f/u + +// @filename: 13.ts +"\u{_10ffff}" + +// @filename: 14.ts +'\u{_10ffff}' + +// @filename: 15.ts +`\u{_10ffff}` + +// @filename: 16.ts +/\u{_10ffff}/u + +// @filename: 17.ts +"\u_ffff" + +// @filename: 18.ts +'\u_ffff' + +// @filename: 19.ts +`\u_ffff` + +// @filename: 20.ts +/\u_ffff/u + +// @filename: 21.ts +"\x_ff" + +// @filename: 22.ts +'\x_ff' + +// @filename: 23.ts +`\x_ff` + +// @filename: 24.ts +/\x_ff/u + +// @filename: 25.ts +"\u{10ffff_}" + +// @filename: 26.ts +'\u{10ffff_}' + +// @filename: 27.ts +`\u{10ffff_}` + +// @filename: 28.ts +/\u{10ffff_}/u + +// @filename: 29.ts +"\uffff_" + +// @filename: 30.ts +'\uffff_' + +// @filename: 31.ts +`\uffff_` + +// @filename: 32.ts +/\uffff_/u + +// @filename: 33.ts +"\xff_" + +// @filename: 34.ts +'\xff_' + +// @filename: 35.ts +`\xff_` + +// @filename: 36.ts +/\xff_/u + +// @filename: 37.ts +"\u{10__ffff}" + +// @filename: 38.ts +'\u{10__ffff}' + +// @filename: 39.ts +`\u{10__ffff}` + +// @filename: 40.ts +/\u{10__ffff}/u + +// @filename: 41.ts +"\uff__ff" + +// @filename: 42.ts +'\uff__ff' + +// @filename: 43.ts +`\uff__ff` + +// @filename: 44.ts +/\uff__ff/u + +// @filename: 45.ts +"\xf__f" + +// @filename: 46.ts +'\xf__f' + +// @filename: 47.ts +`\xf__f` + +// @filename: 48.ts +/\xf__f/u From b554a3691d527930259a5e33db3aa8306afa1425 Mon Sep 17 00:00:00 2001 From: andy-ms Date: Sun, 10 Dec 2017 16:58:17 -0800 Subject: [PATCH 019/173] Ensure getRootSymbols always works recursively --- src/compiler/checker.ts | 42 +++++++------------ src/compiler/core.ts | 6 ++- src/services/utilities.ts | 4 -- .../cases/fourslash/findAllRefsRootSymbols.ts | 17 ++++++++ 4 files changed, 38 insertions(+), 31 deletions(-) create mode 100644 tests/cases/fourslash/findAllRefsRootSymbols.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 4cc0bb79531..26bd364ad0f 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -24587,36 +24587,26 @@ namespace ts { } function getRootSymbols(symbol: Symbol): Symbol[] { + const roots = getImmediateRootSymbols(symbol); + return roots === undefined ? [symbol] : flatMap(roots, getRootSymbols); + } + function getImmediateRootSymbols(symbol: Symbol): ReadonlyArray | undefined { if (getCheckFlags(symbol) & CheckFlags.Synthetic) { - const symbols: Symbol[] = []; - const name = symbol.escapedName; - forEach(getSymbolLinks(symbol).containingType.types, t => { - const symbol = getPropertyOfType(t, name); - if (symbol) { - symbols.push(symbol); - } - }); - return symbols; + return mapDefined(getSymbolLinks(symbol).containingType.types, type => getPropertyOfType(type, symbol.escapedName)); } else if (symbol.flags & SymbolFlags.Transient) { - const transient = symbol as TransientSymbol; - if (transient.leftSpread) { - return [...getRootSymbols(transient.leftSpread), ...getRootSymbols(transient.rightSpread)]; - } - if (transient.syntheticOrigin) { - return getRootSymbols(transient.syntheticOrigin); - } - - let target: Symbol; - let next = symbol; - while (next = getSymbolLinks(next).target) { - target = next; - } - if (target) { - return [target]; - } + const { leftSpread, rightSpread, syntheticOrigin } = symbol as TransientSymbol; + return leftSpread ? [leftSpread, rightSpread] : syntheticOrigin ? [syntheticOrigin] : singleElementArray(tryGetAliasTarget(symbol)); } - return [symbol]; + return undefined; + } + function tryGetAliasTarget(symbol: Symbol): Symbol | undefined { + let target: Symbol | undefined; + let next = symbol; + while (next = getSymbolLinks(next).target) { + target = next; + } + return target; } // Emitter support diff --git a/src/compiler/core.ts b/src/compiler/core.ts index b11750c25af..188cd250605 100644 --- a/src/compiler/core.ts +++ b/src/compiler/core.ts @@ -1417,8 +1417,8 @@ namespace ts { return Array.isArray ? Array.isArray(value) : value instanceof Array; } - export function toArray(value: T | ReadonlyArray): ReadonlyArray; export function toArray(value: T | T[]): T[]; + export function toArray(value: T | ReadonlyArray): ReadonlyArray; export function toArray(value: T | T[]): T[] { return isArray(value) ? value : [value]; } @@ -3261,4 +3261,8 @@ namespace ts { cachedReadDirectoryResult.clear(); } } + + export function singleElementArray(t: T | undefined): T[] { + return t === undefined ? undefined : [t]; + } } diff --git a/src/services/utilities.ts b/src/services/utilities.ts index 358db5e8b4b..d8fe5bd3848 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -1110,10 +1110,6 @@ namespace ts { return true; } - export function singleElementArray(t: T | undefined): T[] { - return t === undefined ? undefined : [t]; - } - export function getFirstChildOfKind(node: Node, sourceFile: SourceFile, kind: SyntaxKind): Node | undefined { return find(node.getChildren(sourceFile), c => c.kind === kind); } diff --git a/tests/cases/fourslash/findAllRefsRootSymbols.ts b/tests/cases/fourslash/findAllRefsRootSymbols.ts new file mode 100644 index 00000000000..f72dcb54aef --- /dev/null +++ b/tests/cases/fourslash/findAllRefsRootSymbols.ts @@ -0,0 +1,17 @@ +/// + +////interface I { [|{| "isWriteAccess": true, "isDefinition": true |}x|]: {}; } +////interface J { [|{| "isWriteAccess": true, "isDefinition": true |}x|]: {}; } +////declare const o: (I | J) & { [|{| "isWriteAccess": true, "isDefinition": true |}x|]: string }; +////o.[|x|]; + +const [r0, r1, r2, r3] = test.ranges(); +verify.referenceGroups(r0, [{ definition: "(property) I.x: {}", ranges: [r0, r3] }]); +verify.referenceGroups(r1, [{ definition: "(property) J.x: {}", ranges: [r1, r3] }]); +verify.referenceGroups(r2, [{ definition: "(property) x: string", ranges: [r2, r3] }]); +verify.referenceGroups(r3, [ + { definition: "(property) I.x: {}", ranges: [r0] }, + { definition: "(property) J.x: {}", ranges: [r1] }, + { definition: "(property) x: string", ranges: [r2] }, + { definition: "(property) x: string & {}", ranges: [r3] }, +]); From 153cc7d0591032ebd6c4b4df14b6a95a3799920b Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Mon, 11 Dec 2017 06:50:55 -0800 Subject: [PATCH 020/173] Fix return type --- src/compiler/core.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/core.ts b/src/compiler/core.ts index 188cd250605..5fcf69ed514 100644 --- a/src/compiler/core.ts +++ b/src/compiler/core.ts @@ -3262,7 +3262,7 @@ namespace ts { } } - export function singleElementArray(t: T | undefined): T[] { + export function singleElementArray(t: T | undefined): T[] | undefined { return t === undefined ? undefined : [t]; } } From 73d7de6b8fee1961b24c2f7a8ff8d3f3b617588a Mon Sep 17 00:00:00 2001 From: csigs Date: Mon, 11 Dec 2017 17:10:08 +0000 Subject: [PATCH 021/173] LEGO: check in for master to temporary branch. --- .../diagnosticMessages.generated.json.lcl | 110 ++++++++++-------- 1 file changed, 64 insertions(+), 46 deletions(-) diff --git a/src/loc/lcl/plk/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/plk/diagnosticMessages/diagnosticMessages.generated.json.lcl index 42e692a9cd2..b36833660ef 100644 --- a/src/loc/lcl/plk/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/plk/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -857,8 +857,8 @@ - - + + @@ -869,8 +869,8 @@ - - + + @@ -881,8 +881,8 @@ - - + + @@ -893,8 +893,8 @@ - - + + @@ -905,6 +905,9 @@ + + + @@ -1535,8 +1538,8 @@ - - + + @@ -1952,8 +1955,8 @@ - - + + @@ -1976,8 +1979,8 @@ - - + + @@ -2354,8 +2357,8 @@ - - + + @@ -2366,8 +2369,8 @@ - - + + @@ -2378,8 +2381,8 @@ - - + + @@ -2390,8 +2393,8 @@ - - + + @@ -2474,8 +2477,8 @@ - - + + @@ -3746,8 +3749,8 @@ - - + + @@ -3770,8 +3773,8 @@ - - + + @@ -3791,8 +3794,8 @@ - - + + @@ -3944,8 +3947,8 @@ - - + + @@ -3956,8 +3959,8 @@ - - + + @@ -3968,8 +3971,8 @@ - - + + @@ -3980,8 +3983,8 @@ - - + + @@ -4517,8 +4520,8 @@ - - + + @@ -4829,6 +4832,12 @@ + + + + + + @@ -5432,8 +5441,8 @@ - - + + @@ -5888,8 +5897,8 @@ - - + + @@ -6314,8 +6323,8 @@ - - + + @@ -6434,6 +6443,9 @@ + + + @@ -6542,6 +6554,9 @@ + + + @@ -7397,6 +7412,9 @@ + + + From b629ff4204b50835ece228cd889aeaa1ab2fd2df Mon Sep 17 00:00:00 2001 From: Andy Date: Mon, 11 Dec 2017 09:45:20 -0800 Subject: [PATCH 022/173] Fix bug: FunctionDeclaration may have missing name (#20618) --- src/services/refactors/extractSymbol.ts | 7 +++---- ...ethod-in-anonymous-function-declaration.ts | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 tests/cases/fourslash/extract-method-in-anonymous-function-declaration.ts diff --git a/src/services/refactors/extractSymbol.ts b/src/services/refactors/extractSymbol.ts index f1a461b0088..d2e97c80813 100644 --- a/src/services/refactors/extractSymbol.ts +++ b/src/services/refactors/extractSymbol.ts @@ -658,11 +658,10 @@ namespace ts.refactor.extractSymbol { case SyntaxKind.Constructor: return "constructor"; case SyntaxKind.FunctionExpression: - return scope.name - ? `function expression '${scope.name.text}'` - : "anonymous function expression"; case SyntaxKind.FunctionDeclaration: - return `function '${scope.name.text}'`; + return scope.name + ? `function '${scope.name.text}'` + : "anonymous function"; case SyntaxKind.ArrowFunction: return "arrow function"; case SyntaxKind.MethodDeclaration: diff --git a/tests/cases/fourslash/extract-method-in-anonymous-function-declaration.ts b/tests/cases/fourslash/extract-method-in-anonymous-function-declaration.ts new file mode 100644 index 00000000000..6566d129874 --- /dev/null +++ b/tests/cases/fourslash/extract-method-in-anonymous-function-declaration.ts @@ -0,0 +1,20 @@ +/// + +////export default function() { +//// /*start*/0/*end*/ +////} + +goTo.select('start', 'end') +edit.applyRefactor({ + refactorName: "Extract Symbol", + actionName: "function_scope_0", + actionDescription: "Extract to inner function in anonymous function", + newContent: +`export default function() { + /*RENAME*/newFunction(); + + function newFunction() { + 0; + } +}` +}); From 484758a3d3a252bd0c117b91aad37c94c851fea3 Mon Sep 17 00:00:00 2001 From: Andy Date: Mon, 11 Dec 2017 09:45:36 -0800 Subject: [PATCH 023/173] Handle `!` following a keyword in isClassMemberStart (#20617) * Handle `!` following a keyword in isClassMemberStart * Fix test --- src/compiler/parser.ts | 1 + .../baselines/reference/parserIsClassMemberStart.js | 12 ++++++++++++ .../reference/parserIsClassMemberStart.symbols | 8 ++++++++ .../reference/parserIsClassMemberStart.types | 8 ++++++++ tests/cases/compiler/parserIsClassMemberStart.ts | 3 +++ 5 files changed, 32 insertions(+) create mode 100644 tests/baselines/reference/parserIsClassMemberStart.js create mode 100644 tests/baselines/reference/parserIsClassMemberStart.symbols create mode 100644 tests/baselines/reference/parserIsClassMemberStart.types create mode 100644 tests/cases/compiler/parserIsClassMemberStart.ts diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index cb28be4677a..52776f8e6a2 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -5462,6 +5462,7 @@ namespace ts { switch (token()) { case SyntaxKind.OpenParenToken: // Method declaration case SyntaxKind.LessThanToken: // Generic Method declaration + case SyntaxKind.ExclamationToken: // Non-null assertion on property name case SyntaxKind.ColonToken: // Type Annotation for declaration case SyntaxKind.EqualsToken: // Initializer for declaration case SyntaxKind.QuestionToken: // Not valid, but permitted so that it gets caught later on. diff --git a/tests/baselines/reference/parserIsClassMemberStart.js b/tests/baselines/reference/parserIsClassMemberStart.js new file mode 100644 index 00000000000..7d57132aee9 --- /dev/null +++ b/tests/baselines/reference/parserIsClassMemberStart.js @@ -0,0 +1,12 @@ +//// [parserIsClassMemberStart.ts] +class C { + type!: number; +} + + +//// [parserIsClassMemberStart.js] +var C = /** @class */ (function () { + function C() { + } + return C; +}()); diff --git a/tests/baselines/reference/parserIsClassMemberStart.symbols b/tests/baselines/reference/parserIsClassMemberStart.symbols new file mode 100644 index 00000000000..72f73375921 --- /dev/null +++ b/tests/baselines/reference/parserIsClassMemberStart.symbols @@ -0,0 +1,8 @@ +=== tests/cases/compiler/parserIsClassMemberStart.ts === +class C { +>C : Symbol(C, Decl(parserIsClassMemberStart.ts, 0, 0)) + + type!: number; +>type : Symbol(C.type, Decl(parserIsClassMemberStart.ts, 0, 9)) +} + diff --git a/tests/baselines/reference/parserIsClassMemberStart.types b/tests/baselines/reference/parserIsClassMemberStart.types new file mode 100644 index 00000000000..b6ad5974274 --- /dev/null +++ b/tests/baselines/reference/parserIsClassMemberStart.types @@ -0,0 +1,8 @@ +=== tests/cases/compiler/parserIsClassMemberStart.ts === +class C { +>C : C + + type!: number; +>type : number +} + diff --git a/tests/cases/compiler/parserIsClassMemberStart.ts b/tests/cases/compiler/parserIsClassMemberStart.ts new file mode 100644 index 00000000000..b277451b345 --- /dev/null +++ b/tests/cases/compiler/parserIsClassMemberStart.ts @@ -0,0 +1,3 @@ +class C { + type!: number; +} From d01f4d140a6f70b89147fcce9b19a8bac4c404f3 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Mon, 11 Dec 2017 13:32:16 -0500 Subject: [PATCH 024/173] Reimplement #20320 differently to handle multiple check orders better (#20588) * Reimplement #20320 less elegantly but handle odd check orders better * Consolidate 2 of 3 conditions --- src/compiler/checker.ts | 28 ++++---- .../reference/importAliasFromNamespace.js | 68 +++++++++++++++++++ .../importAliasFromNamespace.symbols | 52 ++++++++++++++ .../reference/importAliasFromNamespace.types | 56 +++++++++++++++ .../compiler/importAliasFromNamespace.ts | 21 ++++++ 5 files changed, 213 insertions(+), 12 deletions(-) create mode 100644 tests/baselines/reference/importAliasFromNamespace.js create mode 100644 tests/baselines/reference/importAliasFromNamespace.symbols create mode 100644 tests/baselines/reference/importAliasFromNamespace.types create mode 100644 tests/cases/compiler/importAliasFromNamespace.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 4cc0bb79531..319caa180c3 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -13123,6 +13123,12 @@ namespace ts { return type; } + function markAliasReferenced(symbol: Symbol, location: Node) { + if (isNonLocalAlias(symbol, /*excludes*/ SymbolFlags.Value) && !isInTypeQuery(location) && !isConstEnumOrConstEnumOnlyModule(resolveAlias(symbol))) { + markAliasSymbolAsReferenced(symbol); + } + } + function checkIdentifier(node: Identifier): Type { const symbol = getResolvedSymbol(node); if (symbol === unknownSymbol) { @@ -13151,9 +13157,9 @@ namespace ts { } // We should only mark aliases as referenced if there isn't a local value declaration - // for the symbol. - if (isNonLocalAlias(symbol, /*excludes*/ SymbolFlags.Value) && !isInTypeQuery(node) && !isConstEnumOrConstEnumOnlyModule(resolveAlias(symbol))) { - markAliasSymbolAsReferenced(symbol); + // for the symbol. Also, don't mark any property access expression LHS - checkPropertyAccessExpression will handle that + if (!(node.parent && isPropertyAccessExpression(node.parent) && node.parent.expression === node)) { + markAliasReferenced(symbol, node); } const localOrExportSymbol = getExportSymbolOfValueSymbolIfExported(symbol); @@ -15711,15 +15717,20 @@ namespace ts { function checkPropertyAccessExpressionOrQualifiedName(node: PropertyAccessExpression | QualifiedName, left: Expression | QualifiedName, right: Identifier) { let propType: Type; - let leftSymbol = getNodeLinks(left) && getNodeLinks(left).resolvedSymbol; - const leftWasReferenced = leftSymbol && getSymbolLinks(leftSymbol).referenced; const leftType = checkNonNullExpression(left); + const parentSymbol = getNodeLinks(left).resolvedSymbol; const apparentType = getApparentType(getWidenedType(leftType)); if (isTypeAny(apparentType) || apparentType === silentNeverType) { + if (isIdentifier(left) && parentSymbol) { + markAliasReferenced(parentSymbol, node); + } return apparentType; } const assignmentKind = getAssignmentTargetKind(node); const prop = getPropertyOfType(apparentType, right.escapedText); + if (isIdentifier(left) && parentSymbol && !(prop && isConstEnumOrConstEnumOnlyModule(prop))) { + markAliasReferenced(parentSymbol, node); + } if (!prop) { const indexInfo = getIndexInfoOfType(apparentType, IndexKind.String); if (!(indexInfo && indexInfo.type)) { @@ -15736,13 +15747,6 @@ namespace ts { else { checkPropertyNotUsedBeforeDeclaration(prop, node, right); markPropertyAsReferenced(prop, node, left.kind === SyntaxKind.ThisKeyword); - // Reset the referenced-ness of the LHS expression if this access refers to a const enum or const enum only module - leftSymbol = getNodeLinks(left) && getNodeLinks(left).resolvedSymbol; - if (leftSymbol && !leftWasReferenced && getSymbolLinks(leftSymbol).referenced && - !(isNonLocalAlias(leftSymbol, /*excludes*/ SymbolFlags.Value) && !isInTypeQuery(node) && !isConstEnumOrConstEnumOnlyModule(prop)) - ) { - getSymbolLinks(leftSymbol).referenced = undefined; - } getNodeLinks(node).resolvedSymbol = prop; checkPropertyAccessibility(node, left, apparentType, prop); if (assignmentKind) { diff --git a/tests/baselines/reference/importAliasFromNamespace.js b/tests/baselines/reference/importAliasFromNamespace.js new file mode 100644 index 00000000000..57bfab58d9a --- /dev/null +++ b/tests/baselines/reference/importAliasFromNamespace.js @@ -0,0 +1,68 @@ +//// [tests/cases/compiler/importAliasFromNamespace.ts] //// + +//// [internal.ts] +namespace My.Internal { + export function getThing(): void {} + export const enum WhichThing { + A, B, C + } +} + +//// [usage.ts] +/// +namespace SomeOther.Thing { + import Internal = My.Internal; + export class Foo { + private _which: Internal.WhichThing; + constructor() { + Internal.getThing(); + Internal.WhichThing.A ? "foo" : "bar"; + } + } +} + +//// [internal.js] +var My; +(function (My) { + var Internal; + (function (Internal) { + function getThing() { } + Internal.getThing = getThing; + })(Internal = My.Internal || (My.Internal = {})); +})(My || (My = {})); +//// [usage.js] +/// +var SomeOther; +(function (SomeOther) { + var Thing; + (function (Thing) { + var Internal = My.Internal; + var Foo = /** @class */ (function () { + function Foo() { + Internal.getThing(); + 0 /* A */ ? "foo" : "bar"; + } + return Foo; + }()); + Thing.Foo = Foo; + })(Thing = SomeOther.Thing || (SomeOther.Thing = {})); +})(SomeOther || (SomeOther = {})); + + +//// [internal.d.ts] +declare namespace My.Internal { + function getThing(): void; + const enum WhichThing { + A = 0, + B = 1, + C = 2, + } +} +//// [usage.d.ts] +/// +declare namespace SomeOther.Thing { + class Foo { + private _which; + constructor(); + } +} diff --git a/tests/baselines/reference/importAliasFromNamespace.symbols b/tests/baselines/reference/importAliasFromNamespace.symbols new file mode 100644 index 00000000000..11cbb52d895 --- /dev/null +++ b/tests/baselines/reference/importAliasFromNamespace.symbols @@ -0,0 +1,52 @@ +=== tests/cases/compiler/usage.ts === +/// +namespace SomeOther.Thing { +>SomeOther : Symbol(SomeOther, Decl(usage.ts, 0, 0)) +>Thing : Symbol(Thing, Decl(usage.ts, 1, 20)) + + import Internal = My.Internal; +>Internal : Symbol(Internal, Decl(usage.ts, 1, 27)) +>My : Symbol(My, Decl(internal.ts, 0, 0)) +>Internal : Symbol(Internal, Decl(internal.ts, 0, 13)) + + export class Foo { +>Foo : Symbol(Foo, Decl(usage.ts, 2, 34)) + + private _which: Internal.WhichThing; +>_which : Symbol(Foo._which, Decl(usage.ts, 3, 22)) +>Internal : Symbol(Internal, Decl(usage.ts, 1, 27)) +>WhichThing : Symbol(Internal.WhichThing, Decl(internal.ts, 1, 39)) + + constructor() { + Internal.getThing(); +>Internal.getThing : Symbol(Internal.getThing, Decl(internal.ts, 0, 23)) +>Internal : Symbol(Internal, Decl(usage.ts, 1, 27)) +>getThing : Symbol(Internal.getThing, Decl(internal.ts, 0, 23)) + + Internal.WhichThing.A ? "foo" : "bar"; +>Internal.WhichThing.A : Symbol(Internal.WhichThing.A, Decl(internal.ts, 2, 34)) +>Internal.WhichThing : Symbol(Internal.WhichThing, Decl(internal.ts, 1, 39)) +>Internal : Symbol(Internal, Decl(usage.ts, 1, 27)) +>WhichThing : Symbol(Internal.WhichThing, Decl(internal.ts, 1, 39)) +>A : Symbol(Internal.WhichThing.A, Decl(internal.ts, 2, 34)) + } + } +} +=== tests/cases/compiler/internal.ts === +namespace My.Internal { +>My : Symbol(My, Decl(internal.ts, 0, 0)) +>Internal : Symbol(Internal, Decl(internal.ts, 0, 13)) + + export function getThing(): void {} +>getThing : Symbol(getThing, Decl(internal.ts, 0, 23)) + + export const enum WhichThing { +>WhichThing : Symbol(WhichThing, Decl(internal.ts, 1, 39)) + + A, B, C +>A : Symbol(WhichThing.A, Decl(internal.ts, 2, 34)) +>B : Symbol(WhichThing.B, Decl(internal.ts, 3, 10)) +>C : Symbol(WhichThing.C, Decl(internal.ts, 3, 13)) + } +} + diff --git a/tests/baselines/reference/importAliasFromNamespace.types b/tests/baselines/reference/importAliasFromNamespace.types new file mode 100644 index 00000000000..9bc6cbf0d18 --- /dev/null +++ b/tests/baselines/reference/importAliasFromNamespace.types @@ -0,0 +1,56 @@ +=== tests/cases/compiler/usage.ts === +/// +namespace SomeOther.Thing { +>SomeOther : typeof SomeOther +>Thing : typeof Thing + + import Internal = My.Internal; +>Internal : typeof Internal +>My : typeof My +>Internal : typeof Internal + + export class Foo { +>Foo : Foo + + private _which: Internal.WhichThing; +>_which : Internal.WhichThing +>Internal : any +>WhichThing : Internal.WhichThing + + constructor() { + Internal.getThing(); +>Internal.getThing() : void +>Internal.getThing : () => void +>Internal : typeof Internal +>getThing : () => void + + Internal.WhichThing.A ? "foo" : "bar"; +>Internal.WhichThing.A ? "foo" : "bar" : "foo" | "bar" +>Internal.WhichThing.A : Internal.WhichThing.A +>Internal.WhichThing : typeof Internal.WhichThing +>Internal : typeof Internal +>WhichThing : typeof Internal.WhichThing +>A : Internal.WhichThing.A +>"foo" : "foo" +>"bar" : "bar" + } + } +} +=== tests/cases/compiler/internal.ts === +namespace My.Internal { +>My : typeof My +>Internal : typeof Internal + + export function getThing(): void {} +>getThing : () => void + + export const enum WhichThing { +>WhichThing : WhichThing + + A, B, C +>A : WhichThing.A +>B : WhichThing.B +>C : WhichThing.C + } +} + diff --git a/tests/cases/compiler/importAliasFromNamespace.ts b/tests/cases/compiler/importAliasFromNamespace.ts new file mode 100644 index 00000000000..c7958be7e2c --- /dev/null +++ b/tests/cases/compiler/importAliasFromNamespace.ts @@ -0,0 +1,21 @@ +// @declaration: true +// @filename: internal.ts +namespace My.Internal { + export function getThing(): void {} + export const enum WhichThing { + A, B, C + } +} + +// @filename: usage.ts +/// +namespace SomeOther.Thing { + import Internal = My.Internal; + export class Foo { + private _which: Internal.WhichThing; + constructor() { + Internal.getThing(); + Internal.WhichThing.A ? "foo" : "bar"; + } + } +} \ No newline at end of file From eba15b599005a2a351004d146b364b3a1d79e588 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Mon, 11 Dec 2017 18:03:38 -0500 Subject: [PATCH 025/173] Preserve literal types in contextual unions (#19966) * Cherrypick non-comparability related changes from prolific literals PR * Renames and other style changes * Accept changes to new tests * Exclude the domain root from contextual typing literals except for type variables * Readd simple preservation fix * Add huge map test * Revert changes to widening on destructuring initalizers * Use tristate for subtype-reduction type * Rename type and argument * Move longer-running test to user suite --- src/compiler/checker.ts | 90 +- src/compiler/types.ts | 9 +- src/services/codefixes/inferFromUsage.ts | 8 +- .../contextualTypeShouldBeLiteral.js | 136 + .../contextualTypeShouldBeLiteral.symbols | 229 + .../contextualTypeShouldBeLiteral.types | 248 + .../nestedTypeVariableInfersLiteral.js | 32 + .../nestedTypeVariableInfersLiteral.symbols | 78 + .../nestedTypeVariableInfersLiteral.types | 100 + .../compiler/contextualTypeShouldBeLiteral.ts | 96 + .../nestedTypeVariableInfersLiteral.ts | 18 + .../TypeScript-Node-Starter | 2 +- tests/cases/user/literal-no-oom/index.ts | 10004 ++++++++++++++++ tests/cases/user/literal-no-oom/tsconfig.json | 6 + 14 files changed, 11007 insertions(+), 49 deletions(-) create mode 100644 tests/baselines/reference/contextualTypeShouldBeLiteral.js create mode 100644 tests/baselines/reference/contextualTypeShouldBeLiteral.symbols create mode 100644 tests/baselines/reference/contextualTypeShouldBeLiteral.types create mode 100644 tests/baselines/reference/nestedTypeVariableInfersLiteral.js create mode 100644 tests/baselines/reference/nestedTypeVariableInfersLiteral.symbols create mode 100644 tests/baselines/reference/nestedTypeVariableInfersLiteral.types create mode 100644 tests/cases/compiler/contextualTypeShouldBeLiteral.ts create mode 100644 tests/cases/compiler/nestedTypeVariableInfersLiteral.ts create mode 100644 tests/cases/user/literal-no-oom/index.ts create mode 100644 tests/cases/user/literal-no-oom/tsconfig.json diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 319caa180c3..1b193ad3c2e 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -4338,7 +4338,7 @@ namespace ts { type = getTypeWithFacts(type, TypeFacts.NEUndefined); } return declaration.initializer ? - getUnionType([type, checkExpressionCached(declaration.initializer)], /*subtypeReduction*/ true) : + getUnionType([type, checkExpressionCached(declaration.initializer)], UnionReduction.Subtype) : type; } @@ -4506,7 +4506,7 @@ namespace ts { } } - const type = jsDocType || getUnionType(types, /*subtypeReduction*/ true); + const type = jsDocType || getUnionType(types, UnionReduction.Subtype); return getWidenedType(addOptionality(type, definedInMethod && !definedInConstructor)); } @@ -5339,7 +5339,7 @@ namespace ts { } } if (memberTypeList.length) { - const enumType = getUnionType(memberTypeList, /*subtypeReduction*/ false, symbol, /*aliasTypeArguments*/ undefined); + const enumType = getUnionType(memberTypeList, UnionReduction.Literal, symbol, /*aliasTypeArguments*/ undefined); if (enumType.flags & TypeFlags.Union) { enumType.flags |= TypeFlags.EnumLiteral; enumType.symbol = symbol; @@ -5902,7 +5902,7 @@ namespace ts { if (unionSignatures.length > 1) { let thisParameter = signature.thisParameter; if (forEach(unionSignatures, sig => sig.thisParameter)) { - const thisType = getUnionType(map(unionSignatures, sig => getTypeOfSymbol(sig.thisParameter) || anyType), /*subtypeReduction*/ true); + const thisType = getUnionType(map(unionSignatures, sig => getTypeOfSymbol(sig.thisParameter) || anyType), UnionReduction.Subtype); thisParameter = createSymbolWithType(signature.thisParameter, thisType); } s = cloneSignature(signature); @@ -5928,7 +5928,7 @@ namespace ts { indexTypes.push(indexInfo.type); isAnyReadonly = isAnyReadonly || indexInfo.isReadonly; } - return createIndexInfo(getUnionType(indexTypes, /*subtypeReduction*/ true), isAnyReadonly); + return createIndexInfo(getUnionType(indexTypes, UnionReduction.Subtype), isAnyReadonly); } function resolveUnionTypeMembers(type: UnionType) { @@ -6616,7 +6616,7 @@ namespace ts { } } if (propTypes.length) { - return getUnionType(propTypes, /*subtypeReduction*/ true); + return getUnionType(propTypes, UnionReduction.Subtype); } } return undefined; @@ -7003,7 +7003,7 @@ namespace ts { type = instantiateType(getReturnTypeOfSignature(signature.target), signature.mapper); } else if (signature.unionSignatures) { - type = getUnionType(map(signature.unionSignatures, getReturnTypeOfSignature), /*subtypeReduction*/ true); + type = getUnionType(map(signature.unionSignatures, getReturnTypeOfSignature), UnionReduction.Subtype); } else { type = getReturnTypeFromBody(signature.declaration); @@ -7845,7 +7845,7 @@ namespace ts { // expression constructs such as array literals and the || and ?: operators). Named types can // circularly reference themselves and therefore cannot be subtype reduced during their declaration. // For example, "type Item = string | (() => Item" is a named type that circularly references itself. - function getUnionType(types: Type[], subtypeReduction?: boolean, aliasSymbol?: Symbol, aliasTypeArguments?: Type[]): Type { + function getUnionType(types: Type[], unionReduction: UnionReduction = UnionReduction.Literal, aliasSymbol?: Symbol, aliasTypeArguments?: Type[]): Type { if (types.length === 0) { return neverType; } @@ -7857,11 +7857,15 @@ namespace ts { if (typeSet.containsAny) { return anyType; } - if (subtypeReduction) { - removeSubtypes(typeSet); - } - else if (typeSet.containsLiteralOrUniqueESSymbol) { - removeRedundantLiteralTypes(typeSet); + switch (unionReduction) { + case UnionReduction.Literal: + if (typeSet.containsLiteralOrUniqueESSymbol) { + removeRedundantLiteralTypes(typeSet); + } + break; + case UnionReduction.Subtype: + removeSubtypes(typeSet); + break; } if (typeSet.length === 0) { return typeSet.containsNull ? typeSet.containsNonWideningType ? nullType : nullWideningType : @@ -7937,7 +7941,7 @@ namespace ts { function getTypeFromUnionTypeNode(node: UnionTypeNode): Type { const links = getNodeLinks(node); if (!links.resolvedType) { - links.resolvedType = getUnionType(map(node.types, getTypeFromTypeNode), /*subtypeReduction*/ false, + links.resolvedType = getUnionType(map(node.types, getTypeFromTypeNode), UnionReduction.Literal, getAliasSymbolForTypeNode(node), getAliasTypeArgumentsForTypeNode(node)); } return links.resolvedType; @@ -8012,7 +8016,7 @@ namespace ts { // the form X & A & Y | X & B & Y and recursively reduce until no union type constituents remain. const unionType = typeSet[unionIndex]; return getUnionType(map(unionType.types, t => getIntersectionType(replaceElement(typeSet, unionIndex, t))), - /*subtypeReduction*/ false, aliasSymbol, aliasTypeArguments); + UnionReduction.Literal, aliasSymbol, aliasTypeArguments); } const id = getTypeListId(typeSet); let type = intersectionTypes.get(id); @@ -8851,7 +8855,7 @@ namespace ts { } } if (type.flags & TypeFlags.Union && !(type.flags & TypeFlags.Primitive)) { - return getUnionType(instantiateTypes((type).types, mapper), /*subtypeReduction*/ false, type.aliasSymbol, instantiateTypes(type.aliasTypeArguments, mapper)); + return getUnionType(instantiateTypes((type).types, mapper), UnionReduction.Literal, type.aliasSymbol, instantiateTypes(type.aliasTypeArguments, mapper)); } if (type.flags & TypeFlags.Intersection) { return getIntersectionType(instantiateTypes((type).types, mapper), type.aliasSymbol, instantiateTypes(type.aliasTypeArguments, mapper)); @@ -10713,7 +10717,7 @@ namespace ts { const primaryTypes = filter(types, t => !(t.flags & TypeFlags.Nullable)); return primaryTypes.length ? getNullableType(getSupertypeOrUnion(primaryTypes), getFalsyFlagsOfTypes(types) & TypeFlags.Nullable) : - getUnionType(types, /*subtypeReduction*/ true); + getUnionType(types, UnionReduction.Subtype); } // Return the leftmost type for which no type to the right is a subtype. @@ -11004,7 +11008,7 @@ namespace ts { // Widening an empty object literal transitions from a highly restrictive type to // a highly inclusive one. For that reason we perform subtype reduction here if the // union includes empty object types (e.g. reducing {} | string to just {}). - return getUnionType(widenedTypes, some(widenedTypes, isEmptyObjectType)); + return getUnionType(widenedTypes, some(widenedTypes, isEmptyObjectType) ? UnionReduction.Subtype : UnionReduction.Literal); } if (isArrayType(type) || isTupleType(type)) { return createTypeReference((type).target, sameMap((type).typeArguments, getWidenedType)); @@ -11251,7 +11255,7 @@ namespace ts { function inferTargetType(sourceType: Type): Type { inference.candidates = undefined; inferTypes(inferences, sourceType, templateType, 0, mappedTypeStack); - return inference.candidates ? getUnionType(inference.candidates, /*subtypeReduction*/ true) : emptyObjectType; + return inference.candidates ? getUnionType(inference.candidates, UnionReduction.Subtype) : emptyObjectType; } } @@ -11610,7 +11614,7 @@ namespace ts { if (candidates.length > 1) { const objectLiterals = filter(candidates, isObjectLiteralType); if (objectLiterals.length) { - const objectLiteralsType = getWidenedType(getUnionType(objectLiterals, /*subtypeReduction*/ true)); + const objectLiteralsType = getWidenedType(getUnionType(objectLiterals, UnionReduction.Subtype)); return concatenate(filter(candidates, t => !isObjectLiteralType(t)), [objectLiteralsType]); } } @@ -11637,7 +11641,7 @@ namespace ts { // union types were requested or if all inferences were made from the return type position, infer a // union type. Otherwise, infer a common supertype. const unwidenedType = inference.priority & InferencePriority.Contravariant ? getCommonSubtype(baseCandidates) : - context.flags & InferenceFlags.InferUnionTypes || inference.priority & InferencePriority.ReturnType ? getUnionType(baseCandidates, /*subtypeReduction*/ true) : + context.flags & InferenceFlags.InferUnionTypes || inference.priority & InferencePriority.ReturnType ? getUnionType(baseCandidates, UnionReduction.Subtype) : getCommonSupertype(baseCandidates); inferredType = getWidenedType(unwidenedType); } @@ -12211,7 +12215,7 @@ namespace ts { // Apply a mapping function to a type and return the resulting type. If the source type // is a union type, the mapping function is applied to each constituent type and a union // of the resulting types is returned. - function mapType(type: Type, mapper: (t: Type) => Type): Type { + function mapType(type: Type, mapper: (t: Type) => Type, noReductions?: boolean): Type { if (!(type.flags & TypeFlags.Union)) { return mapper(type); } @@ -12232,7 +12236,7 @@ namespace ts { } } } - return mappedTypes ? getUnionType(mappedTypes) : mappedType; + return mappedTypes ? getUnionType(mappedTypes, noReductions ? UnionReduction.None : UnionReduction.Literal) : mappedType; } function extractTypesOfKind(type: Type, kind: TypeFlags) { @@ -12291,7 +12295,7 @@ namespace ts { return elementType.flags & TypeFlags.Never ? autoArrayType : createArrayType(elementType.flags & TypeFlags.Union ? - getUnionType((elementType).types, /*subtypeReduction*/ true) : + getUnionType((elementType).types, UnionReduction.Subtype) : elementType); } @@ -12324,7 +12328,7 @@ namespace ts { // At flow control branch or loop junctions, if the type along every antecedent code path // is an evolving array type, we construct a combined evolving array type. Otherwise we // finalize all evolving array types. - function getUnionOrEvolvingArrayType(types: Type[], subtypeReduction: boolean) { + function getUnionOrEvolvingArrayType(types: Type[], subtypeReduction: UnionReduction) { return isEvolvingArrayTypeList(types) ? getEvolvingArrayType(getUnionType(map(types, getElementTypeOfEvolvingArrayType))) : getUnionType(sameMap(types, finalizeEvolvingArrayType), subtypeReduction); @@ -12616,7 +12620,7 @@ namespace ts { seenIncomplete = true; } } - return createFlowType(getUnionOrEvolvingArrayType(antecedentTypes, subtypeReduction), seenIncomplete); + return createFlowType(getUnionOrEvolvingArrayType(antecedentTypes, subtypeReduction ? UnionReduction.Subtype : UnionReduction.Literal), seenIncomplete); } function getTypeAtFlowLoopLabel(flow: FlowLabel): FlowType { @@ -12645,7 +12649,7 @@ namespace ts { // path that leads to the top. for (let i = flowLoopStart; i < flowLoopCount; i++) { if (flowLoopNodes[i] === flow && flowLoopKeys[i] === key && flowLoopTypes[i].length) { - return createFlowType(getUnionOrEvolvingArrayType(flowLoopTypes[i], /*subtypeReduction*/ false), /*incomplete*/ true); + return createFlowType(getUnionOrEvolvingArrayType(flowLoopTypes[i], UnionReduction.Literal), /*incomplete*/ true); } } // Add the flow loop junction and reference to the in-process stack and analyze @@ -12687,7 +12691,7 @@ namespace ts { } // The result is incomplete if the first antecedent (the non-looping control flow path) // is incomplete. - const result = getUnionOrEvolvingArrayType(antecedentTypes, subtypeReduction); + const result = getUnionOrEvolvingArrayType(antecedentTypes, subtypeReduction ? UnionReduction.Subtype : UnionReduction.Literal); if (isIncomplete(firstAntecedentType)) { return createFlowType(result, /*incomplete*/ true); } @@ -14052,11 +14056,11 @@ namespace ts { return mapType(type, t => { const prop = t.flags & TypeFlags.StructuredType ? getPropertyOfType(t, name) : undefined; return prop ? getTypeOfSymbol(prop) : undefined; - }); + }, /*noReductions*/ true); } function getIndexTypeOfContextualType(type: Type, kind: IndexKind) { - return mapType(type, t => getIndexTypeOfStructuredType(t, kind)); + return mapType(type, t => getIndexTypeOfStructuredType(t, kind), /*noReductions*/ true); } // Return true if the given contextual type is a tuple-like type @@ -14463,7 +14467,7 @@ namespace ts { } } return createArrayType(elementTypes.length ? - getUnionType(elementTypes, /*subtypeReduction*/ true) : + getUnionType(elementTypes, UnionReduction.Subtype) : strictNullChecks ? implicitNeverType : undefinedWideningType); } @@ -14542,7 +14546,7 @@ namespace ts { propTypes.push(getTypeOfSymbol(properties[i])); } } - const unionType = propTypes.length ? getUnionType(propTypes, /*subtypeReduction*/ true) : undefinedType; + const unionType = propTypes.length ? getUnionType(propTypes, UnionReduction.Subtype) : undefinedType; return createIndexInfo(unionType, /*isReadonly*/ false); } @@ -14889,7 +14893,7 @@ namespace ts { const childrenPropSymbol = createSymbol(SymbolFlags.Property | SymbolFlags.Transient, jsxChildrenPropertyName); childrenPropSymbol.type = childrenTypes.length === 1 ? childrenTypes[0] : - createArrayType(getUnionType(childrenTypes, /*subtypeReduction*/ false)); + createArrayType(getUnionType(childrenTypes)); attributesTable.set(jsxChildrenPropertyName, childrenPropSymbol); } } @@ -15025,7 +15029,7 @@ namespace ts { } } - return getUnionType(map(instantiatedSignatures, getReturnTypeOfSignature), /*subtypeReduction*/ true); + return getUnionType(map(instantiatedSignatures, getReturnTypeOfSignature), UnionReduction.Subtype); } /** @@ -15217,7 +15221,7 @@ namespace ts { const types = (elementType as UnionType).types; return getUnionType(types.map(type => { return resolveCustomJsxElementAttributesType(openingLikeElement, shouldIncludeAllStatelessAttributesType, type, elementClassType); - }), /*subtypeReduction*/ true); + }), UnionReduction.Subtype); } // If the elemType is a string type, we have to return anyType to prevent an error downstream as we will try to find construct or call signature of the type @@ -17968,7 +17972,7 @@ namespace ts { } // Return a union of the return expression types. - type = getUnionType(types, /*subtypeReduction*/ true); + type = getUnionType(types, UnionReduction.Subtype); } if (!contextualSignature) { @@ -18876,7 +18880,7 @@ namespace ts { leftType; case SyntaxKind.BarBarToken: return getTypeFacts(leftType) & TypeFacts.Falsy ? - getUnionType([removeDefinitelyFalsyTypes(leftType), rightType], /*subtypeReduction*/ true) : + getUnionType([removeDefinitelyFalsyTypes(leftType), rightType], UnionReduction.Subtype) : leftType; case SyntaxKind.EqualsToken: checkAssignmentOperator(rightType); @@ -19036,7 +19040,7 @@ namespace ts { checkExpression(node.condition); const type1 = checkExpression(node.whenTrue, checkMode); const type2 = checkExpression(node.whenFalse, checkMode); - return getUnionType([type1, type2], /*subtypeReduction*/ true); + return getUnionType([type1, type2], UnionReduction.Subtype); } function checkTemplateExpression(node: TemplateExpression): Type { @@ -20477,7 +20481,7 @@ namespace ts { return undefined; } - return typeAsPromise.promisedTypeOfPromise = getUnionType(map(onfulfilledParameterSignatures, getTypeOfFirstParameterOfSignature), /*subtypeReduction*/ true); + return typeAsPromise.promisedTypeOfPromise = getUnionType(map(onfulfilledParameterSignatures, getTypeOfFirstParameterOfSignature), UnionReduction.Subtype); } /** @@ -21908,7 +21912,7 @@ namespace ts { const arrayTypes = (inputType).types; const filteredTypes = filter(arrayTypes, t => !(t.flags & TypeFlags.StringLike)); if (filteredTypes !== arrayTypes) { - arrayType = getUnionType(filteredTypes, /*subtypeReduction*/ true); + arrayType = getUnionType(filteredTypes, UnionReduction.Subtype); } } else if (arrayType.flags & TypeFlags.StringLike) { @@ -21958,7 +21962,7 @@ namespace ts { return stringType; } - return getUnionType([arrayElementType, stringType], /*subtypeReduction*/ true); + return getUnionType([arrayElementType, stringType], UnionReduction.Subtype); } return arrayElementType; @@ -22056,7 +22060,7 @@ namespace ts { return undefined; } - const returnType = getUnionType(map(signatures, getReturnTypeOfSignature), /*subtypeReduction*/ true); + const returnType = getUnionType(map(signatures, getReturnTypeOfSignature), UnionReduction.Subtype); const iteratedType = getIteratedTypeOfIterator(returnType, errorNode, /*isAsyncIterator*/ !!asyncMethodType); if (checkAssignability && errorNode && iteratedType) { // If `checkAssignability` was specified, we were called from @@ -22131,7 +22135,7 @@ namespace ts { return undefined; } - let nextResult = getUnionType(map(nextMethodSignatures, getReturnTypeOfSignature), /*subtypeReduction*/ true); + let nextResult = getUnionType(map(nextMethodSignatures, getReturnTypeOfSignature), UnionReduction.Subtype); if (isTypeAny(nextResult)) { return undefined; } diff --git a/src/compiler/types.ts b/src/compiler/types.ts index db53db2aecb..54f2ebfae42 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2787,7 +2787,7 @@ namespace ts { /* @internal */ getNullType(): Type; /* @internal */ getESSymbolType(): Type; /* @internal */ getNeverType(): Type; - /* @internal */ getUnionType(types: Type[], subtypeReduction?: boolean): Type; + /* @internal */ getUnionType(types: Type[], subtypeReduction?: UnionReduction): Type; /* @internal */ createArrayType(elementType: Type): Type; /* @internal */ createPromiseType(type: Type): Type; @@ -2842,6 +2842,13 @@ namespace ts { /* @internal */ getAccessibleSymbolChain(symbol: Symbol, enclosingDeclaration: Node | undefined, meaning: SymbolFlags, useOnlyExternalAliasing: boolean): Symbol[] | undefined; } + /* @internal */ + export const enum UnionReduction { + None = 0, + Literal, + Subtype + } + export enum NodeBuilderFlags { None = 0, // Options diff --git a/src/services/codefixes/inferFromUsage.ts b/src/services/codefixes/inferFromUsage.ts index 9782619d41d..96a0777c2c1 100644 --- a/src/services/codefixes/inferFromUsage.ts +++ b/src/services/codefixes/inferFromUsage.ts @@ -305,7 +305,7 @@ namespace ts.codefix { } } if (types.length) { - const type = checker.getWidenedType(checker.getUnionType(types, /*subtypeReduction*/ true)); + const type = checker.getWidenedType(checker.getUnionType(types, UnionReduction.Subtype)); paramTypes[parameterIndex] = isRestParameter ? checker.createArrayType(type) : type; } } @@ -542,12 +542,12 @@ namespace ts.codefix { return checker.getStringType(); } else if (usageContext.candidateTypes) { - return checker.getWidenedType(checker.getUnionType(map(usageContext.candidateTypes, t => checker.getBaseTypeOfLiteralType(t)), /*subtypeReduction*/ true)); + return checker.getWidenedType(checker.getUnionType(map(usageContext.candidateTypes, t => checker.getBaseTypeOfLiteralType(t)), UnionReduction.Subtype)); } else if (usageContext.properties && hasCallContext(usageContext.properties.get("then" as __String))) { const paramType = getParameterTypeFromCallContexts(0, usageContext.properties.get("then" as __String).callContexts, /*isRestParameter*/ false, checker); const types = paramType.getCallSignatures().map(c => c.getReturnType()); - return checker.createPromiseType(types.length ? checker.getUnionType(types, /*subtypeReduction*/ true) : checker.getAnyType()); + return checker.createPromiseType(types.length ? checker.getUnionType(types, UnionReduction.Subtype) : checker.getAnyType()); } else if (usageContext.properties && hasCallContext(usageContext.properties.get("push" as __String))) { return checker.createArrayType(getParameterTypeFromCallContexts(0, usageContext.properties.get("push" as __String).callContexts, /*isRestParameter*/ false, checker)); @@ -610,7 +610,7 @@ namespace ts.codefix { } if (types.length) { - const type = checker.getWidenedType(checker.getUnionType(types, /*subtypeReduction*/ true)); + const type = checker.getWidenedType(checker.getUnionType(types, UnionReduction.Subtype)); return isRestParameter ? checker.createArrayType(type) : type; } return undefined; diff --git a/tests/baselines/reference/contextualTypeShouldBeLiteral.js b/tests/baselines/reference/contextualTypeShouldBeLiteral.js new file mode 100644 index 00000000000..dcb9da993c1 --- /dev/null +++ b/tests/baselines/reference/contextualTypeShouldBeLiteral.js @@ -0,0 +1,136 @@ +//// [contextualTypeShouldBeLiteral.ts] +interface X { + type: 'x'; + value: string; + method(): void; +} + +interface Y { + type: 'y'; + value: 'none' | 'done'; + method(): void; +} + +function foo(bar: X | Y) { } + +foo({ + type: 'y', + value: 'done', + method() { + this; + this.type; + this.value; + } +}); + +interface X2 { + type1: 'x'; + value: string; + method(): void; +} + +interface Y2 { + type2: 'y'; + value: 'none' | 'done'; + method(): void; +} + +function foo2(bar: X2 | Y2) { } + +foo2({ + type2: 'y', + value: 'done', + method() { + this; + this.value; + } +}); + +interface X3 { + type: 'x'; + value: 1 | 2 | 3; + xtra: number; +} + +interface Y3 { + type: 'y'; + value: 11 | 12 | 13; + ytra: number; +} + +let xy: X3 | Y3 = { + type: 'y', + value: 11, + ytra: 12 +}; + +xy; + + +interface LikeA { + x: 'x'; + y: 'y'; + value: string; + method(): void; +} + +interface LikeB { + x: 'xx'; + y: 'yy'; + value: number; + method(): void; +} + +let xyz: LikeA | LikeB = { + x: 'x', + y: 'y', + value: "foo", + method() { + this; + this.x; + this.y; + this.value; + } +}; + +xyz; + +//// [contextualTypeShouldBeLiteral.js] +"use strict"; +function foo(bar) { } +foo({ + type: 'y', + value: 'done', + method: function () { + this; + this.type; + this.value; + } +}); +function foo2(bar) { } +foo2({ + type2: 'y', + value: 'done', + method: function () { + this; + this.value; + } +}); +var xy = { + type: 'y', + value: 11, + ytra: 12 +}; +xy; +var xyz = { + x: 'x', + y: 'y', + value: "foo", + method: function () { + this; + this.x; + this.y; + this.value; + } +}; +xyz; diff --git a/tests/baselines/reference/contextualTypeShouldBeLiteral.symbols b/tests/baselines/reference/contextualTypeShouldBeLiteral.symbols new file mode 100644 index 00000000000..314117b509d --- /dev/null +++ b/tests/baselines/reference/contextualTypeShouldBeLiteral.symbols @@ -0,0 +1,229 @@ +=== tests/cases/compiler/contextualTypeShouldBeLiteral.ts === +interface X { +>X : Symbol(X, Decl(contextualTypeShouldBeLiteral.ts, 0, 0)) + + type: 'x'; +>type : Symbol(X.type, Decl(contextualTypeShouldBeLiteral.ts, 0, 13)) + + value: string; +>value : Symbol(X.value, Decl(contextualTypeShouldBeLiteral.ts, 1, 14)) + + method(): void; +>method : Symbol(X.method, Decl(contextualTypeShouldBeLiteral.ts, 2, 18)) +} + +interface Y { +>Y : Symbol(Y, Decl(contextualTypeShouldBeLiteral.ts, 4, 1)) + + type: 'y'; +>type : Symbol(Y.type, Decl(contextualTypeShouldBeLiteral.ts, 6, 13)) + + value: 'none' | 'done'; +>value : Symbol(Y.value, Decl(contextualTypeShouldBeLiteral.ts, 7, 14)) + + method(): void; +>method : Symbol(Y.method, Decl(contextualTypeShouldBeLiteral.ts, 8, 27)) +} + +function foo(bar: X | Y) { } +>foo : Symbol(foo, Decl(contextualTypeShouldBeLiteral.ts, 10, 1)) +>bar : Symbol(bar, Decl(contextualTypeShouldBeLiteral.ts, 12, 13)) +>X : Symbol(X, Decl(contextualTypeShouldBeLiteral.ts, 0, 0)) +>Y : Symbol(Y, Decl(contextualTypeShouldBeLiteral.ts, 4, 1)) + +foo({ +>foo : Symbol(foo, Decl(contextualTypeShouldBeLiteral.ts, 10, 1)) + + type: 'y', +>type : Symbol(type, Decl(contextualTypeShouldBeLiteral.ts, 14, 5)) + + value: 'done', +>value : Symbol(value, Decl(contextualTypeShouldBeLiteral.ts, 15, 14)) + + method() { +>method : Symbol(method, Decl(contextualTypeShouldBeLiteral.ts, 16, 18)) + + this; +>this : Symbol(Y, Decl(contextualTypeShouldBeLiteral.ts, 4, 1)) + + this.type; +>this.type : Symbol(Y.type, Decl(contextualTypeShouldBeLiteral.ts, 6, 13)) +>this : Symbol(Y, Decl(contextualTypeShouldBeLiteral.ts, 4, 1)) +>type : Symbol(Y.type, Decl(contextualTypeShouldBeLiteral.ts, 6, 13)) + + this.value; +>this.value : Symbol(Y.value, Decl(contextualTypeShouldBeLiteral.ts, 7, 14)) +>this : Symbol(Y, Decl(contextualTypeShouldBeLiteral.ts, 4, 1)) +>value : Symbol(Y.value, Decl(contextualTypeShouldBeLiteral.ts, 7, 14)) + } +}); + +interface X2 { +>X2 : Symbol(X2, Decl(contextualTypeShouldBeLiteral.ts, 22, 3)) + + type1: 'x'; +>type1 : Symbol(X2.type1, Decl(contextualTypeShouldBeLiteral.ts, 24, 14)) + + value: string; +>value : Symbol(X2.value, Decl(contextualTypeShouldBeLiteral.ts, 25, 15)) + + method(): void; +>method : Symbol(X2.method, Decl(contextualTypeShouldBeLiteral.ts, 26, 18)) +} + +interface Y2 { +>Y2 : Symbol(Y2, Decl(contextualTypeShouldBeLiteral.ts, 28, 1)) + + type2: 'y'; +>type2 : Symbol(Y2.type2, Decl(contextualTypeShouldBeLiteral.ts, 30, 14)) + + value: 'none' | 'done'; +>value : Symbol(Y2.value, Decl(contextualTypeShouldBeLiteral.ts, 31, 15)) + + method(): void; +>method : Symbol(Y2.method, Decl(contextualTypeShouldBeLiteral.ts, 32, 27)) +} + +function foo2(bar: X2 | Y2) { } +>foo2 : Symbol(foo2, Decl(contextualTypeShouldBeLiteral.ts, 34, 1)) +>bar : Symbol(bar, Decl(contextualTypeShouldBeLiteral.ts, 36, 14)) +>X2 : Symbol(X2, Decl(contextualTypeShouldBeLiteral.ts, 22, 3)) +>Y2 : Symbol(Y2, Decl(contextualTypeShouldBeLiteral.ts, 28, 1)) + +foo2({ +>foo2 : Symbol(foo2, Decl(contextualTypeShouldBeLiteral.ts, 34, 1)) + + type2: 'y', +>type2 : Symbol(type2, Decl(contextualTypeShouldBeLiteral.ts, 38, 6)) + + value: 'done', +>value : Symbol(value, Decl(contextualTypeShouldBeLiteral.ts, 39, 15)) + + method() { +>method : Symbol(method, Decl(contextualTypeShouldBeLiteral.ts, 40, 18)) + + this; + this.value; +>this.value : Symbol(value, Decl(contextualTypeShouldBeLiteral.ts, 25, 15), Decl(contextualTypeShouldBeLiteral.ts, 31, 15)) +>value : Symbol(value, Decl(contextualTypeShouldBeLiteral.ts, 25, 15), Decl(contextualTypeShouldBeLiteral.ts, 31, 15)) + } +}); + +interface X3 { +>X3 : Symbol(X3, Decl(contextualTypeShouldBeLiteral.ts, 45, 3)) + + type: 'x'; +>type : Symbol(X3.type, Decl(contextualTypeShouldBeLiteral.ts, 47, 14)) + + value: 1 | 2 | 3; +>value : Symbol(X3.value, Decl(contextualTypeShouldBeLiteral.ts, 48, 14)) + + xtra: number; +>xtra : Symbol(X3.xtra, Decl(contextualTypeShouldBeLiteral.ts, 49, 21)) +} + +interface Y3 { +>Y3 : Symbol(Y3, Decl(contextualTypeShouldBeLiteral.ts, 51, 1)) + + type: 'y'; +>type : Symbol(Y3.type, Decl(contextualTypeShouldBeLiteral.ts, 53, 14)) + + value: 11 | 12 | 13; +>value : Symbol(Y3.value, Decl(contextualTypeShouldBeLiteral.ts, 54, 14)) + + ytra: number; +>ytra : Symbol(Y3.ytra, Decl(contextualTypeShouldBeLiteral.ts, 55, 24)) +} + +let xy: X3 | Y3 = { +>xy : Symbol(xy, Decl(contextualTypeShouldBeLiteral.ts, 59, 3)) +>X3 : Symbol(X3, Decl(contextualTypeShouldBeLiteral.ts, 45, 3)) +>Y3 : Symbol(Y3, Decl(contextualTypeShouldBeLiteral.ts, 51, 1)) + + type: 'y', +>type : Symbol(type, Decl(contextualTypeShouldBeLiteral.ts, 59, 19)) + + value: 11, +>value : Symbol(value, Decl(contextualTypeShouldBeLiteral.ts, 60, 14)) + + ytra: 12 +>ytra : Symbol(ytra, Decl(contextualTypeShouldBeLiteral.ts, 61, 14)) + +}; + +xy; +>xy : Symbol(xy, Decl(contextualTypeShouldBeLiteral.ts, 59, 3)) + + +interface LikeA { +>LikeA : Symbol(LikeA, Decl(contextualTypeShouldBeLiteral.ts, 65, 3)) + + x: 'x'; +>x : Symbol(LikeA.x, Decl(contextualTypeShouldBeLiteral.ts, 68, 17)) + + y: 'y'; +>y : Symbol(LikeA.y, Decl(contextualTypeShouldBeLiteral.ts, 69, 11)) + + value: string; +>value : Symbol(LikeA.value, Decl(contextualTypeShouldBeLiteral.ts, 70, 11)) + + method(): void; +>method : Symbol(LikeA.method, Decl(contextualTypeShouldBeLiteral.ts, 71, 18)) +} + +interface LikeB { +>LikeB : Symbol(LikeB, Decl(contextualTypeShouldBeLiteral.ts, 73, 1)) + + x: 'xx'; +>x : Symbol(LikeB.x, Decl(contextualTypeShouldBeLiteral.ts, 75, 17)) + + y: 'yy'; +>y : Symbol(LikeB.y, Decl(contextualTypeShouldBeLiteral.ts, 76, 12)) + + value: number; +>value : Symbol(LikeB.value, Decl(contextualTypeShouldBeLiteral.ts, 77, 12)) + + method(): void; +>method : Symbol(LikeB.method, Decl(contextualTypeShouldBeLiteral.ts, 78, 18)) +} + +let xyz: LikeA | LikeB = { +>xyz : Symbol(xyz, Decl(contextualTypeShouldBeLiteral.ts, 82, 3)) +>LikeA : Symbol(LikeA, Decl(contextualTypeShouldBeLiteral.ts, 65, 3)) +>LikeB : Symbol(LikeB, Decl(contextualTypeShouldBeLiteral.ts, 73, 1)) + + x: 'x', +>x : Symbol(x, Decl(contextualTypeShouldBeLiteral.ts, 82, 26)) + + y: 'y', +>y : Symbol(y, Decl(contextualTypeShouldBeLiteral.ts, 83, 11)) + + value: "foo", +>value : Symbol(value, Decl(contextualTypeShouldBeLiteral.ts, 84, 11)) + + method() { +>method : Symbol(method, Decl(contextualTypeShouldBeLiteral.ts, 85, 17)) + + this; +>this : Symbol(LikeA, Decl(contextualTypeShouldBeLiteral.ts, 65, 3)) + + this.x; +>this.x : Symbol(LikeA.x, Decl(contextualTypeShouldBeLiteral.ts, 68, 17)) +>this : Symbol(LikeA, Decl(contextualTypeShouldBeLiteral.ts, 65, 3)) +>x : Symbol(LikeA.x, Decl(contextualTypeShouldBeLiteral.ts, 68, 17)) + + this.y; +>this.y : Symbol(LikeA.y, Decl(contextualTypeShouldBeLiteral.ts, 69, 11)) +>this : Symbol(LikeA, Decl(contextualTypeShouldBeLiteral.ts, 65, 3)) +>y : Symbol(LikeA.y, Decl(contextualTypeShouldBeLiteral.ts, 69, 11)) + + this.value; +>this.value : Symbol(LikeA.value, Decl(contextualTypeShouldBeLiteral.ts, 70, 11)) +>this : Symbol(LikeA, Decl(contextualTypeShouldBeLiteral.ts, 65, 3)) +>value : Symbol(LikeA.value, Decl(contextualTypeShouldBeLiteral.ts, 70, 11)) + } +}; + +xyz; +>xyz : Symbol(xyz, Decl(contextualTypeShouldBeLiteral.ts, 82, 3)) + diff --git a/tests/baselines/reference/contextualTypeShouldBeLiteral.types b/tests/baselines/reference/contextualTypeShouldBeLiteral.types new file mode 100644 index 00000000000..8ab09df66b8 --- /dev/null +++ b/tests/baselines/reference/contextualTypeShouldBeLiteral.types @@ -0,0 +1,248 @@ +=== tests/cases/compiler/contextualTypeShouldBeLiteral.ts === +interface X { +>X : X + + type: 'x'; +>type : "x" + + value: string; +>value : string + + method(): void; +>method : () => void +} + +interface Y { +>Y : Y + + type: 'y'; +>type : "y" + + value: 'none' | 'done'; +>value : "none" | "done" + + method(): void; +>method : () => void +} + +function foo(bar: X | Y) { } +>foo : (bar: X | Y) => void +>bar : X | Y +>X : X +>Y : Y + +foo({ +>foo({ type: 'y', value: 'done', method() { this; this.type; this.value; }}) : void +>foo : (bar: X | Y) => void +>{ type: 'y', value: 'done', method() { this; this.type; this.value; }} : { type: "y"; value: "done"; method(): void; } + + type: 'y', +>type : string +>'y' : "y" + + value: 'done', +>value : string +>'done' : "done" + + method() { +>method : () => void + + this; +>this : Y + + this.type; +>this.type : "y" +>this : Y +>type : "y" + + this.value; +>this.value : "none" | "done" +>this : Y +>value : "none" | "done" + } +}); + +interface X2 { +>X2 : X2 + + type1: 'x'; +>type1 : "x" + + value: string; +>value : string + + method(): void; +>method : () => void +} + +interface Y2 { +>Y2 : Y2 + + type2: 'y'; +>type2 : "y" + + value: 'none' | 'done'; +>value : "none" | "done" + + method(): void; +>method : () => void +} + +function foo2(bar: X2 | Y2) { } +>foo2 : (bar: X2 | Y2) => void +>bar : X2 | Y2 +>X2 : X2 +>Y2 : Y2 + +foo2({ +>foo2({ type2: 'y', value: 'done', method() { this; this.value; }}) : void +>foo2 : (bar: X2 | Y2) => void +>{ type2: 'y', value: 'done', method() { this; this.value; }} : { type2: "y"; value: "done"; method(): void; } + + type2: 'y', +>type2 : string +>'y' : "y" + + value: 'done', +>value : string +>'done' : "done" + + method() { +>method : () => void + + this; +>this : X2 | Y2 + + this.value; +>this.value : string +>this : X2 | Y2 +>value : string + } +}); + +interface X3 { +>X3 : X3 + + type: 'x'; +>type : "x" + + value: 1 | 2 | 3; +>value : 1 | 2 | 3 + + xtra: number; +>xtra : number +} + +interface Y3 { +>Y3 : Y3 + + type: 'y'; +>type : "y" + + value: 11 | 12 | 13; +>value : 11 | 12 | 13 + + ytra: number; +>ytra : number +} + +let xy: X3 | Y3 = { +>xy : X3 | Y3 +>X3 : X3 +>Y3 : Y3 +>{ type: 'y', value: 11, ytra: 12} : { type: "y"; value: 11; ytra: number; } + + type: 'y', +>type : string +>'y' : "y" + + value: 11, +>value : number +>11 : 11 + + ytra: 12 +>ytra : number +>12 : 12 + +}; + +xy; +>xy : Y3 + + +interface LikeA { +>LikeA : LikeA + + x: 'x'; +>x : "x" + + y: 'y'; +>y : "y" + + value: string; +>value : string + + method(): void; +>method : () => void +} + +interface LikeB { +>LikeB : LikeB + + x: 'xx'; +>x : "xx" + + y: 'yy'; +>y : "yy" + + value: number; +>value : number + + method(): void; +>method : () => void +} + +let xyz: LikeA | LikeB = { +>xyz : LikeA | LikeB +>LikeA : LikeA +>LikeB : LikeB +>{ x: 'x', y: 'y', value: "foo", method() { this; this.x; this.y; this.value; }} : { x: "x"; y: "y"; value: string; method(): void; } + + x: 'x', +>x : string +>'x' : "x" + + y: 'y', +>y : string +>'y' : "y" + + value: "foo", +>value : string +>"foo" : "foo" + + method() { +>method : () => void + + this; +>this : LikeA + + this.x; +>this.x : "x" +>this : LikeA +>x : "x" + + this.y; +>this.y : "y" +>this : LikeA +>y : "y" + + this.value; +>this.value : string +>this : LikeA +>value : string + } +}; + +xyz; +>xyz : LikeA + diff --git a/tests/baselines/reference/nestedTypeVariableInfersLiteral.js b/tests/baselines/reference/nestedTypeVariableInfersLiteral.js new file mode 100644 index 00000000000..d5628e6913d --- /dev/null +++ b/tests/baselines/reference/nestedTypeVariableInfersLiteral.js @@ -0,0 +1,32 @@ +//// [nestedTypeVariableInfersLiteral.ts] +// https://github.com/Microsoft/TypeScript/issues/19632 +declare function direct(a: A | A[]): Record +declare function nested(a: { fields: A }): Record +declare function nestedUnion(a: { fields: A | A[] }): Record + +const directUnionSingle = direct("z") +const directUnionArray = direct(["z", "y"]) +const nestedSingle = nested({fields: "z"}) +const nestedUnionSingle = nestedUnion({fields: "z"}) +const nestedUnionArray = nestedUnion({fields: ["z", "y"]}) + +declare function hasZField(arg: { z: string }): void + +hasZField(directUnionSingle) // ok +hasZField(directUnionArray) // ok +hasZField(nestedSingle) // ok +hasZField(nestedUnionSingle) // ok +hasZField(nestedUnionArray) // ok + + +//// [nestedTypeVariableInfersLiteral.js] +var directUnionSingle = direct("z"); +var directUnionArray = direct(["z", "y"]); +var nestedSingle = nested({ fields: "z" }); +var nestedUnionSingle = nestedUnion({ fields: "z" }); +var nestedUnionArray = nestedUnion({ fields: ["z", "y"] }); +hasZField(directUnionSingle); // ok +hasZField(directUnionArray); // ok +hasZField(nestedSingle); // ok +hasZField(nestedUnionSingle); // ok +hasZField(nestedUnionArray); // ok diff --git a/tests/baselines/reference/nestedTypeVariableInfersLiteral.symbols b/tests/baselines/reference/nestedTypeVariableInfersLiteral.symbols new file mode 100644 index 00000000000..ce9e4915e3f --- /dev/null +++ b/tests/baselines/reference/nestedTypeVariableInfersLiteral.symbols @@ -0,0 +1,78 @@ +=== tests/cases/compiler/nestedTypeVariableInfersLiteral.ts === +// https://github.com/Microsoft/TypeScript/issues/19632 +declare function direct(a: A | A[]): Record +>direct : Symbol(direct, Decl(nestedTypeVariableInfersLiteral.ts, 0, 0)) +>A : Symbol(A, Decl(nestedTypeVariableInfersLiteral.ts, 1, 24)) +>a : Symbol(a, Decl(nestedTypeVariableInfersLiteral.ts, 1, 42)) +>A : Symbol(A, Decl(nestedTypeVariableInfersLiteral.ts, 1, 24)) +>A : Symbol(A, Decl(nestedTypeVariableInfersLiteral.ts, 1, 24)) +>Record : Symbol(Record, Decl(lib.d.ts, --, --)) +>A : Symbol(A, Decl(nestedTypeVariableInfersLiteral.ts, 1, 24)) + +declare function nested(a: { fields: A }): Record +>nested : Symbol(nested, Decl(nestedTypeVariableInfersLiteral.ts, 1, 72)) +>A : Symbol(A, Decl(nestedTypeVariableInfersLiteral.ts, 2, 24)) +>a : Symbol(a, Decl(nestedTypeVariableInfersLiteral.ts, 2, 42)) +>fields : Symbol(fields, Decl(nestedTypeVariableInfersLiteral.ts, 2, 46)) +>A : Symbol(A, Decl(nestedTypeVariableInfersLiteral.ts, 2, 24)) +>Record : Symbol(Record, Decl(lib.d.ts, --, --)) +>A : Symbol(A, Decl(nestedTypeVariableInfersLiteral.ts, 2, 24)) + +declare function nestedUnion(a: { fields: A | A[] }): Record +>nestedUnion : Symbol(nestedUnion, Decl(nestedTypeVariableInfersLiteral.ts, 2, 78)) +>A : Symbol(A, Decl(nestedTypeVariableInfersLiteral.ts, 3, 29)) +>a : Symbol(a, Decl(nestedTypeVariableInfersLiteral.ts, 3, 47)) +>fields : Symbol(fields, Decl(nestedTypeVariableInfersLiteral.ts, 3, 51)) +>A : Symbol(A, Decl(nestedTypeVariableInfersLiteral.ts, 3, 29)) +>A : Symbol(A, Decl(nestedTypeVariableInfersLiteral.ts, 3, 29)) +>Record : Symbol(Record, Decl(lib.d.ts, --, --)) +>A : Symbol(A, Decl(nestedTypeVariableInfersLiteral.ts, 3, 29)) + +const directUnionSingle = direct("z") +>directUnionSingle : Symbol(directUnionSingle, Decl(nestedTypeVariableInfersLiteral.ts, 5, 5)) +>direct : Symbol(direct, Decl(nestedTypeVariableInfersLiteral.ts, 0, 0)) + +const directUnionArray = direct(["z", "y"]) +>directUnionArray : Symbol(directUnionArray, Decl(nestedTypeVariableInfersLiteral.ts, 6, 5)) +>direct : Symbol(direct, Decl(nestedTypeVariableInfersLiteral.ts, 0, 0)) + +const nestedSingle = nested({fields: "z"}) +>nestedSingle : Symbol(nestedSingle, Decl(nestedTypeVariableInfersLiteral.ts, 7, 5)) +>nested : Symbol(nested, Decl(nestedTypeVariableInfersLiteral.ts, 1, 72)) +>fields : Symbol(fields, Decl(nestedTypeVariableInfersLiteral.ts, 7, 29)) + +const nestedUnionSingle = nestedUnion({fields: "z"}) +>nestedUnionSingle : Symbol(nestedUnionSingle, Decl(nestedTypeVariableInfersLiteral.ts, 8, 5)) +>nestedUnion : Symbol(nestedUnion, Decl(nestedTypeVariableInfersLiteral.ts, 2, 78)) +>fields : Symbol(fields, Decl(nestedTypeVariableInfersLiteral.ts, 8, 39)) + +const nestedUnionArray = nestedUnion({fields: ["z", "y"]}) +>nestedUnionArray : Symbol(nestedUnionArray, Decl(nestedTypeVariableInfersLiteral.ts, 9, 5)) +>nestedUnion : Symbol(nestedUnion, Decl(nestedTypeVariableInfersLiteral.ts, 2, 78)) +>fields : Symbol(fields, Decl(nestedTypeVariableInfersLiteral.ts, 9, 38)) + +declare function hasZField(arg: { z: string }): void +>hasZField : Symbol(hasZField, Decl(nestedTypeVariableInfersLiteral.ts, 9, 58)) +>arg : Symbol(arg, Decl(nestedTypeVariableInfersLiteral.ts, 11, 27)) +>z : Symbol(z, Decl(nestedTypeVariableInfersLiteral.ts, 11, 33)) + +hasZField(directUnionSingle) // ok +>hasZField : Symbol(hasZField, Decl(nestedTypeVariableInfersLiteral.ts, 9, 58)) +>directUnionSingle : Symbol(directUnionSingle, Decl(nestedTypeVariableInfersLiteral.ts, 5, 5)) + +hasZField(directUnionArray) // ok +>hasZField : Symbol(hasZField, Decl(nestedTypeVariableInfersLiteral.ts, 9, 58)) +>directUnionArray : Symbol(directUnionArray, Decl(nestedTypeVariableInfersLiteral.ts, 6, 5)) + +hasZField(nestedSingle) // ok +>hasZField : Symbol(hasZField, Decl(nestedTypeVariableInfersLiteral.ts, 9, 58)) +>nestedSingle : Symbol(nestedSingle, Decl(nestedTypeVariableInfersLiteral.ts, 7, 5)) + +hasZField(nestedUnionSingle) // ok +>hasZField : Symbol(hasZField, Decl(nestedTypeVariableInfersLiteral.ts, 9, 58)) +>nestedUnionSingle : Symbol(nestedUnionSingle, Decl(nestedTypeVariableInfersLiteral.ts, 8, 5)) + +hasZField(nestedUnionArray) // ok +>hasZField : Symbol(hasZField, Decl(nestedTypeVariableInfersLiteral.ts, 9, 58)) +>nestedUnionArray : Symbol(nestedUnionArray, Decl(nestedTypeVariableInfersLiteral.ts, 9, 5)) + diff --git a/tests/baselines/reference/nestedTypeVariableInfersLiteral.types b/tests/baselines/reference/nestedTypeVariableInfersLiteral.types new file mode 100644 index 00000000000..ed52dbb41b5 --- /dev/null +++ b/tests/baselines/reference/nestedTypeVariableInfersLiteral.types @@ -0,0 +1,100 @@ +=== tests/cases/compiler/nestedTypeVariableInfersLiteral.ts === +// https://github.com/Microsoft/TypeScript/issues/19632 +declare function direct(a: A | A[]): Record +>direct : (a: A | A[]) => Record +>A : A +>a : A | A[] +>A : A +>A : A +>Record : Record +>A : A + +declare function nested(a: { fields: A }): Record +>nested : (a: { fields: A; }) => Record +>A : A +>a : { fields: A; } +>fields : A +>A : A +>Record : Record +>A : A + +declare function nestedUnion(a: { fields: A | A[] }): Record +>nestedUnion : (a: { fields: A | A[]; }) => Record +>A : A +>a : { fields: A | A[]; } +>fields : A | A[] +>A : A +>A : A +>Record : Record +>A : A + +const directUnionSingle = direct("z") +>directUnionSingle : Record<"z", string> +>direct("z") : Record<"z", string> +>direct : (a: A | A[]) => Record +>"z" : "z" + +const directUnionArray = direct(["z", "y"]) +>directUnionArray : Record<"z" | "y", string> +>direct(["z", "y"]) : Record<"z" | "y", string> +>direct : (a: A | A[]) => Record +>["z", "y"] : ("z" | "y")[] +>"z" : "z" +>"y" : "y" + +const nestedSingle = nested({fields: "z"}) +>nestedSingle : Record<"z", string> +>nested({fields: "z"}) : Record<"z", string> +>nested : (a: { fields: A; }) => Record +>{fields: "z"} : { fields: "z"; } +>fields : string +>"z" : "z" + +const nestedUnionSingle = nestedUnion({fields: "z"}) +>nestedUnionSingle : Record<"z", string> +>nestedUnion({fields: "z"}) : Record<"z", string> +>nestedUnion : (a: { fields: A | A[]; }) => Record +>{fields: "z"} : { fields: "z"; } +>fields : string +>"z" : "z" + +const nestedUnionArray = nestedUnion({fields: ["z", "y"]}) +>nestedUnionArray : Record<"z" | "y", string> +>nestedUnion({fields: ["z", "y"]}) : Record<"z" | "y", string> +>nestedUnion : (a: { fields: A | A[]; }) => Record +>{fields: ["z", "y"]} : { fields: ("z" | "y")[]; } +>fields : ("z" | "y")[] +>["z", "y"] : ("z" | "y")[] +>"z" : "z" +>"y" : "y" + +declare function hasZField(arg: { z: string }): void +>hasZField : (arg: { z: string; }) => void +>arg : { z: string; } +>z : string + +hasZField(directUnionSingle) // ok +>hasZField(directUnionSingle) : void +>hasZField : (arg: { z: string; }) => void +>directUnionSingle : Record<"z", string> + +hasZField(directUnionArray) // ok +>hasZField(directUnionArray) : void +>hasZField : (arg: { z: string; }) => void +>directUnionArray : Record<"z" | "y", string> + +hasZField(nestedSingle) // ok +>hasZField(nestedSingle) : void +>hasZField : (arg: { z: string; }) => void +>nestedSingle : Record<"z", string> + +hasZField(nestedUnionSingle) // ok +>hasZField(nestedUnionSingle) : void +>hasZField : (arg: { z: string; }) => void +>nestedUnionSingle : Record<"z", string> + +hasZField(nestedUnionArray) // ok +>hasZField(nestedUnionArray) : void +>hasZField : (arg: { z: string; }) => void +>nestedUnionArray : Record<"z" | "y", string> + diff --git a/tests/cases/compiler/contextualTypeShouldBeLiteral.ts b/tests/cases/compiler/contextualTypeShouldBeLiteral.ts new file mode 100644 index 00000000000..1012c567a71 --- /dev/null +++ b/tests/cases/compiler/contextualTypeShouldBeLiteral.ts @@ -0,0 +1,96 @@ +// @strict: true +interface X { + type: 'x'; + value: string; + method(): void; +} + +interface Y { + type: 'y'; + value: 'none' | 'done'; + method(): void; +} + +function foo(bar: X | Y) { } + +foo({ + type: 'y', + value: 'done', + method() { + this; + this.type; + this.value; + } +}); + +interface X2 { + type1: 'x'; + value: string; + method(): void; +} + +interface Y2 { + type2: 'y'; + value: 'none' | 'done'; + method(): void; +} + +function foo2(bar: X2 | Y2) { } + +foo2({ + type2: 'y', + value: 'done', + method() { + this; + this.value; + } +}); + +interface X3 { + type: 'x'; + value: 1 | 2 | 3; + xtra: number; +} + +interface Y3 { + type: 'y'; + value: 11 | 12 | 13; + ytra: number; +} + +let xy: X3 | Y3 = { + type: 'y', + value: 11, + ytra: 12 +}; + +xy; + + +interface LikeA { + x: 'x'; + y: 'y'; + value: string; + method(): void; +} + +interface LikeB { + x: 'xx'; + y: 'yy'; + value: number; + method(): void; +} + +let xyz: LikeA | LikeB = { + x: 'x', + y: 'y', + value: "foo", + method() { + this; + this.x; + this.y; + this.value; + } +}; + +xyz; \ No newline at end of file diff --git a/tests/cases/compiler/nestedTypeVariableInfersLiteral.ts b/tests/cases/compiler/nestedTypeVariableInfersLiteral.ts new file mode 100644 index 00000000000..2c42be56015 --- /dev/null +++ b/tests/cases/compiler/nestedTypeVariableInfersLiteral.ts @@ -0,0 +1,18 @@ +// https://github.com/Microsoft/TypeScript/issues/19632 +declare function direct(a: A | A[]): Record +declare function nested(a: { fields: A }): Record +declare function nestedUnion(a: { fields: A | A[] }): Record + +const directUnionSingle = direct("z") +const directUnionArray = direct(["z", "y"]) +const nestedSingle = nested({fields: "z"}) +const nestedUnionSingle = nestedUnion({fields: "z"}) +const nestedUnionArray = nestedUnion({fields: ["z", "y"]}) + +declare function hasZField(arg: { z: string }): void + +hasZField(directUnionSingle) // ok +hasZField(directUnionArray) // ok +hasZField(nestedSingle) // ok +hasZField(nestedUnionSingle) // ok +hasZField(nestedUnionArray) // ok diff --git a/tests/cases/user/TypeScript-Node-Starter/TypeScript-Node-Starter b/tests/cases/user/TypeScript-Node-Starter/TypeScript-Node-Starter index ed149eb0c78..9c8f67f596e 160000 --- a/tests/cases/user/TypeScript-Node-Starter/TypeScript-Node-Starter +++ b/tests/cases/user/TypeScript-Node-Starter/TypeScript-Node-Starter @@ -1 +1 @@ -Subproject commit ed149eb0c787b1195a95b44105822c64bb6eb636 +Subproject commit 9c8f67f596e23283f7fe452d67372233d2e4e5d6 diff --git a/tests/cases/user/literal-no-oom/index.ts b/tests/cases/user/literal-no-oom/index.ts new file mode 100644 index 00000000000..1f7f2095ff1 --- /dev/null +++ b/tests/cases/user/literal-no-oom/index.ts @@ -0,0 +1,10004 @@ +// This is a regression test to ensure we don't run OOM while creating a type for the ES6 map below +// https://github.com/Microsoft/TypeScript/issues/20279 +const m = new Map([ + ['0', ['0', false]], + ['1', ['1', false]], + ['2', ['2', false]], + ['3', ['3', false]], + ['4', ['4', false]], + ['5', ['5', false]], + ['6', ['6', false]], + ['7', ['7', false]], + ['8', ['8', false]], + ['9', ['9', false]], + ['10', ['10', false]], + ['11', ['11', false]], + ['12', ['12', false]], + ['13', ['13', false]], + ['14', ['14', false]], + ['15', ['15', false]], + ['16', ['16', false]], + ['17', ['17', false]], + ['18', ['18', false]], + ['19', ['19', false]], + ['20', ['20', false]], + ['21', ['21', false]], + ['22', ['22', false]], + ['23', ['23', false]], + ['24', ['24', false]], + ['25', ['25', false]], + ['26', ['26', false]], + ['27', ['27', false]], + ['28', ['28', false]], + ['29', ['29', false]], + ['30', ['30', false]], + ['31', ['31', false]], + ['32', ['32', false]], + ['33', ['33', false]], + ['34', ['34', false]], + ['35', ['35', false]], + ['36', ['36', false]], + ['37', ['37', false]], + ['38', ['38', false]], + ['39', ['39', false]], + ['40', ['40', false]], + ['41', ['41', false]], + ['42', ['42', false]], + ['43', ['43', false]], + ['44', ['44', false]], + ['45', ['45', false]], + ['46', ['46', false]], + ['47', ['47', false]], + ['48', ['48', false]], + ['49', ['49', false]], + ['50', ['50', false]], + ['51', ['51', false]], + ['52', ['52', false]], + ['53', ['53', false]], + ['54', ['54', false]], + ['55', ['55', false]], + ['56', ['56', false]], + ['57', ['57', false]], + ['58', ['58', false]], + ['59', ['59', false]], + ['60', ['60', false]], + ['61', ['61', false]], + ['62', ['62', false]], + ['63', ['63', false]], + ['64', ['64', false]], + ['65', ['65', false]], + ['66', ['66', false]], + ['67', ['67', false]], + ['68', ['68', false]], + ['69', ['69', false]], + ['70', ['70', false]], + ['71', ['71', false]], + ['72', ['72', false]], + ['73', ['73', false]], + ['74', ['74', false]], + ['75', ['75', false]], + ['76', ['76', false]], + ['77', ['77', false]], + ['78', ['78', false]], + ['79', ['79', false]], + ['80', ['80', false]], + ['81', ['81', false]], + ['82', ['82', false]], + ['83', ['83', false]], + ['84', ['84', false]], + ['85', ['85', false]], + ['86', ['86', false]], + ['87', ['87', false]], + ['88', ['88', false]], + ['89', ['89', false]], + ['90', ['90', false]], + ['91', ['91', false]], + ['92', ['92', false]], + ['93', ['93', false]], + ['94', ['94', false]], + ['95', ['95', false]], + ['96', ['96', false]], + ['97', ['97', false]], + ['98', ['98', false]], + ['99', ['99', false]], + ['100', ['100', false]], + ['101', ['101', false]], + ['102', ['102', false]], + ['103', ['103', false]], + ['104', ['104', false]], + ['105', ['105', false]], + ['106', ['106', false]], + ['107', ['107', false]], + ['108', ['108', false]], + ['109', ['109', false]], + ['110', ['110', false]], + ['111', ['111', false]], + ['112', ['112', false]], + ['113', ['113', false]], + ['114', ['114', false]], + ['115', ['115', false]], + ['116', ['116', false]], + ['117', ['117', false]], + ['118', ['118', false]], + ['119', ['119', false]], + ['120', ['120', false]], + ['121', ['121', false]], + ['122', ['122', false]], + ['123', ['123', false]], + ['124', ['124', false]], + ['125', ['125', false]], + ['126', ['126', false]], + ['127', ['127', false]], + ['128', ['128', false]], + ['129', ['129', false]], + ['130', ['130', false]], + ['131', ['131', false]], + ['132', ['132', false]], + ['133', ['133', false]], + ['134', ['134', false]], + ['135', ['135', false]], + ['136', ['136', false]], + ['137', ['137', false]], + ['138', ['138', false]], + ['139', ['139', false]], + ['140', ['140', false]], + ['141', ['141', false]], + ['142', ['142', false]], + ['143', ['143', false]], + ['144', ['144', false]], + ['145', ['145', false]], + ['146', ['146', false]], + ['147', ['147', false]], + ['148', ['148', false]], + ['149', ['149', false]], + ['150', ['150', false]], + ['151', ['151', false]], + ['152', ['152', false]], + ['153', ['153', false]], + ['154', ['154', false]], + ['155', ['155', false]], + ['156', ['156', false]], + ['157', ['157', false]], + ['158', ['158', false]], + ['159', ['159', false]], + ['160', ['160', false]], + ['161', ['161', false]], + ['162', ['162', false]], + ['163', ['163', false]], + ['164', ['164', false]], + ['165', ['165', false]], + ['166', ['166', false]], + ['167', ['167', false]], + ['168', ['168', false]], + ['169', ['169', false]], + ['170', ['170', false]], + ['171', ['171', false]], + ['172', ['172', false]], + ['173', ['173', false]], + ['174', ['174', false]], + ['175', ['175', false]], + ['176', ['176', false]], + ['177', ['177', false]], + ['178', ['178', false]], + ['179', ['179', false]], + ['180', ['180', false]], + ['181', ['181', false]], + ['182', ['182', false]], + ['183', ['183', false]], + ['184', ['184', false]], + ['185', ['185', false]], + ['186', ['186', false]], + ['187', ['187', false]], + ['188', ['188', false]], + ['189', ['189', false]], + ['190', ['190', false]], + ['191', ['191', false]], + ['192', ['192', false]], + ['193', ['193', false]], + ['194', ['194', false]], + ['195', ['195', false]], + ['196', ['196', false]], + ['197', ['197', false]], + ['198', ['198', false]], + ['199', ['199', false]], + ['200', ['200', false]], + ['201', ['201', false]], + ['202', ['202', false]], + ['203', ['203', false]], + ['204', ['204', false]], + ['205', ['205', false]], + ['206', ['206', false]], + ['207', ['207', false]], + ['208', ['208', false]], + ['209', ['209', false]], + ['210', ['210', false]], + ['211', ['211', false]], + ['212', ['212', false]], + ['213', ['213', false]], + ['214', ['214', false]], + ['215', ['215', false]], + ['216', ['216', false]], + ['217', ['217', false]], + ['218', ['218', false]], + ['219', ['219', false]], + ['220', ['220', false]], + ['221', ['221', false]], + ['222', ['222', false]], + ['223', ['223', false]], + ['224', ['224', false]], + ['225', ['225', false]], + ['226', ['226', false]], + ['227', ['227', false]], + ['228', ['228', false]], + ['229', ['229', false]], + ['230', ['230', false]], + ['231', ['231', false]], + ['232', ['232', false]], + ['233', ['233', false]], + ['234', ['234', false]], + ['235', ['235', false]], + ['236', ['236', false]], + ['237', ['237', false]], + ['238', ['238', false]], + ['239', ['239', false]], + ['240', ['240', false]], + ['241', ['241', false]], + ['242', ['242', false]], + ['243', ['243', false]], + ['244', ['244', false]], + ['245', ['245', false]], + ['246', ['246', false]], + ['247', ['247', false]], + ['248', ['248', false]], + ['249', ['249', false]], + ['250', ['250', false]], + ['251', ['251', false]], + ['252', ['252', false]], + ['253', ['253', false]], + ['254', ['254', false]], + ['255', ['255', false]], + ['256', ['256', false]], + ['257', ['257', false]], + ['258', ['258', false]], + ['259', ['259', false]], + ['260', ['260', false]], + ['261', ['261', false]], + ['262', ['262', false]], + ['263', ['263', false]], + ['264', ['264', false]], + ['265', ['265', false]], + ['266', ['266', false]], + ['267', ['267', false]], + ['268', ['268', false]], + ['269', ['269', false]], + ['270', ['270', false]], + ['271', ['271', false]], + ['272', ['272', false]], + ['273', ['273', false]], + ['274', ['274', false]], + ['275', ['275', false]], + ['276', ['276', false]], + ['277', ['277', false]], + ['278', ['278', false]], + ['279', ['279', false]], + ['280', ['280', false]], + ['281', ['281', false]], + ['282', ['282', false]], + ['283', ['283', false]], + ['284', ['284', false]], + ['285', ['285', false]], + ['286', ['286', false]], + ['287', ['287', false]], + ['288', ['288', false]], + ['289', ['289', false]], + ['290', ['290', false]], + ['291', ['291', false]], + ['292', ['292', false]], + ['293', ['293', false]], + ['294', ['294', false]], + ['295', ['295', false]], + ['296', ['296', false]], + ['297', ['297', false]], + ['298', ['298', false]], + ['299', ['299', false]], + ['300', ['300', false]], + ['301', ['301', false]], + ['302', ['302', false]], + ['303', ['303', false]], + ['304', ['304', false]], + ['305', ['305', false]], + ['306', ['306', false]], + ['307', ['307', false]], + ['308', ['308', false]], + ['309', ['309', false]], + ['310', ['310', false]], + ['311', ['311', false]], + ['312', ['312', false]], + ['313', ['313', false]], + ['314', ['314', false]], + ['315', ['315', false]], + ['316', ['316', false]], + ['317', ['317', false]], + ['318', ['318', false]], + ['319', ['319', false]], + ['320', ['320', false]], + ['321', ['321', false]], + ['322', ['322', false]], + ['323', ['323', false]], + ['324', ['324', false]], + ['325', ['325', false]], + ['326', ['326', false]], + ['327', ['327', false]], + ['328', ['328', false]], + ['329', ['329', false]], + ['330', ['330', false]], + ['331', ['331', false]], + ['332', ['332', false]], + ['333', ['333', false]], + ['334', ['334', false]], + ['335', ['335', false]], + ['336', ['336', false]], + ['337', ['337', false]], + ['338', ['338', false]], + ['339', ['339', false]], + ['340', ['340', false]], + ['341', ['341', false]], + ['342', ['342', false]], + ['343', ['343', false]], + ['344', ['344', false]], + ['345', ['345', false]], + ['346', ['346', false]], + ['347', ['347', false]], + ['348', ['348', false]], + ['349', ['349', false]], + ['350', ['350', false]], + ['351', ['351', false]], + ['352', ['352', false]], + ['353', ['353', false]], + ['354', ['354', false]], + ['355', ['355', false]], + ['356', ['356', false]], + ['357', ['357', false]], + ['358', ['358', false]], + ['359', ['359', false]], + ['360', ['360', false]], + ['361', ['361', false]], + ['362', ['362', false]], + ['363', ['363', false]], + ['364', ['364', false]], + ['365', ['365', false]], + ['366', ['366', false]], + ['367', ['367', false]], + ['368', ['368', false]], + ['369', ['369', false]], + ['370', ['370', false]], + ['371', ['371', false]], + ['372', ['372', false]], + ['373', ['373', false]], + ['374', ['374', false]], + ['375', ['375', false]], + ['376', ['376', false]], + ['377', ['377', false]], + ['378', ['378', false]], + ['379', ['379', false]], + ['380', ['380', false]], + ['381', ['381', false]], + ['382', ['382', false]], + ['383', ['383', false]], + ['384', ['384', false]], + ['385', ['385', false]], + ['386', ['386', false]], + ['387', ['387', false]], + ['388', ['388', false]], + ['389', ['389', false]], + ['390', ['390', false]], + ['391', ['391', false]], + ['392', ['392', false]], + ['393', ['393', false]], + ['394', ['394', false]], + ['395', ['395', false]], + ['396', ['396', false]], + ['397', ['397', false]], + ['398', ['398', false]], + ['399', ['399', false]], + ['400', ['400', false]], + ['401', ['401', false]], + ['402', ['402', false]], + ['403', ['403', false]], + ['404', ['404', false]], + ['405', ['405', false]], + ['406', ['406', false]], + ['407', ['407', false]], + ['408', ['408', false]], + ['409', ['409', false]], + ['410', ['410', false]], + ['411', ['411', false]], + ['412', ['412', false]], + ['413', ['413', false]], + ['414', ['414', false]], + ['415', ['415', false]], + ['416', ['416', false]], + ['417', ['417', false]], + ['418', ['418', false]], + ['419', ['419', false]], + ['420', ['420', false]], + ['421', ['421', false]], + ['422', ['422', false]], + ['423', ['423', false]], + ['424', ['424', false]], + ['425', ['425', false]], + ['426', ['426', false]], + ['427', ['427', false]], + ['428', ['428', false]], + ['429', ['429', false]], + ['430', ['430', false]], + ['431', ['431', false]], + ['432', ['432', false]], + ['433', ['433', false]], + ['434', ['434', false]], + ['435', ['435', false]], + ['436', ['436', false]], + ['437', ['437', false]], + ['438', ['438', false]], + ['439', ['439', false]], + ['440', ['440', false]], + ['441', ['441', false]], + ['442', ['442', false]], + ['443', ['443', false]], + ['444', ['444', false]], + ['445', ['445', false]], + ['446', ['446', false]], + ['447', ['447', false]], + ['448', ['448', false]], + ['449', ['449', false]], + ['450', ['450', false]], + ['451', ['451', false]], + ['452', ['452', false]], + ['453', ['453', false]], + ['454', ['454', false]], + ['455', ['455', false]], + ['456', ['456', false]], + ['457', ['457', false]], + ['458', ['458', false]], + ['459', ['459', false]], + ['460', ['460', false]], + ['461', ['461', false]], + ['462', ['462', false]], + ['463', ['463', false]], + ['464', ['464', false]], + ['465', ['465', false]], + ['466', ['466', false]], + ['467', ['467', false]], + ['468', ['468', false]], + ['469', ['469', false]], + ['470', ['470', false]], + ['471', ['471', false]], + ['472', ['472', false]], + ['473', ['473', false]], + ['474', ['474', false]], + ['475', ['475', false]], + ['476', ['476', false]], + ['477', ['477', false]], + ['478', ['478', false]], + ['479', ['479', false]], + ['480', ['480', false]], + ['481', ['481', false]], + ['482', ['482', false]], + ['483', ['483', false]], + ['484', ['484', false]], + ['485', ['485', false]], + ['486', ['486', false]], + ['487', ['487', false]], + ['488', ['488', false]], + ['489', ['489', false]], + ['490', ['490', false]], + ['491', ['491', false]], + ['492', ['492', false]], + ['493', ['493', false]], + ['494', ['494', false]], + ['495', ['495', false]], + ['496', ['496', false]], + ['497', ['497', false]], + ['498', ['498', false]], + ['499', ['499', false]], + ['500', ['500', false]], + ['501', ['501', false]], + ['502', ['502', false]], + ['503', ['503', false]], + ['504', ['504', false]], + ['505', ['505', false]], + ['506', ['506', false]], + ['507', ['507', false]], + ['508', ['508', false]], + ['509', ['509', false]], + ['510', ['510', false]], + ['511', ['511', false]], + ['512', ['512', false]], + ['513', ['513', false]], + ['514', ['514', false]], + ['515', ['515', false]], + ['516', ['516', false]], + ['517', ['517', false]], + ['518', ['518', false]], + ['519', ['519', false]], + ['520', ['520', false]], + ['521', ['521', false]], + ['522', ['522', false]], + ['523', ['523', false]], + ['524', ['524', false]], + ['525', ['525', false]], + ['526', ['526', false]], + ['527', ['527', false]], + ['528', ['528', false]], + ['529', ['529', false]], + ['530', ['530', false]], + ['531', ['531', false]], + ['532', ['532', false]], + ['533', ['533', false]], + ['534', ['534', false]], + ['535', ['535', false]], + ['536', ['536', false]], + ['537', ['537', false]], + ['538', ['538', false]], + ['539', ['539', false]], + ['540', ['540', false]], + ['541', ['541', false]], + ['542', ['542', false]], + ['543', ['543', false]], + ['544', ['544', false]], + ['545', ['545', false]], + ['546', ['546', false]], + ['547', ['547', false]], + ['548', ['548', false]], + ['549', ['549', false]], + ['550', ['550', false]], + ['551', ['551', false]], + ['552', ['552', false]], + ['553', ['553', false]], + ['554', ['554', false]], + ['555', ['555', false]], + ['556', ['556', false]], + ['557', ['557', false]], + ['558', ['558', false]], + ['559', ['559', false]], + ['560', ['560', false]], + ['561', ['561', false]], + ['562', ['562', false]], + ['563', ['563', false]], + ['564', ['564', false]], + ['565', ['565', false]], + ['566', ['566', false]], + ['567', ['567', false]], + ['568', ['568', false]], + ['569', ['569', false]], + ['570', ['570', false]], + ['571', ['571', false]], + ['572', ['572', false]], + ['573', ['573', false]], + ['574', ['574', false]], + ['575', ['575', false]], + ['576', ['576', false]], + ['577', ['577', false]], + ['578', ['578', false]], + ['579', ['579', false]], + ['580', ['580', false]], + ['581', ['581', false]], + ['582', ['582', false]], + ['583', ['583', false]], + ['584', ['584', false]], + ['585', ['585', false]], + ['586', ['586', false]], + ['587', ['587', false]], + ['588', ['588', false]], + ['589', ['589', false]], + ['590', ['590', false]], + ['591', ['591', false]], + ['592', ['592', false]], + ['593', ['593', false]], + ['594', ['594', false]], + ['595', ['595', false]], + ['596', ['596', false]], + ['597', ['597', false]], + ['598', ['598', false]], + ['599', ['599', false]], + ['600', ['600', false]], + ['601', ['601', false]], + ['602', ['602', false]], + ['603', ['603', false]], + ['604', ['604', false]], + ['605', ['605', false]], + ['606', ['606', false]], + ['607', ['607', false]], + ['608', ['608', false]], + ['609', ['609', false]], + ['610', ['610', false]], + ['611', ['611', false]], + ['612', ['612', false]], + ['613', ['613', false]], + ['614', ['614', false]], + ['615', ['615', false]], + ['616', ['616', false]], + ['617', ['617', false]], + ['618', ['618', false]], + ['619', ['619', false]], + ['620', ['620', false]], + ['621', ['621', false]], + ['622', ['622', false]], + ['623', ['623', false]], + ['624', ['624', false]], + ['625', ['625', false]], + ['626', ['626', false]], + ['627', ['627', false]], + ['628', ['628', false]], + ['629', ['629', false]], + ['630', ['630', false]], + ['631', ['631', false]], + ['632', ['632', false]], + ['633', ['633', false]], + ['634', ['634', false]], + ['635', ['635', false]], + ['636', ['636', false]], + ['637', ['637', false]], + ['638', ['638', false]], + ['639', ['639', false]], + ['640', ['640', false]], + ['641', ['641', false]], + ['642', ['642', false]], + ['643', ['643', false]], + ['644', ['644', false]], + ['645', ['645', false]], + ['646', ['646', false]], + ['647', ['647', false]], + ['648', ['648', false]], + ['649', ['649', false]], + ['650', ['650', false]], + ['651', ['651', false]], + ['652', ['652', false]], + ['653', ['653', false]], + ['654', ['654', false]], + ['655', ['655', false]], + ['656', ['656', false]], + ['657', ['657', false]], + ['658', ['658', false]], + ['659', ['659', false]], + ['660', ['660', false]], + ['661', ['661', false]], + ['662', ['662', false]], + ['663', ['663', false]], + ['664', ['664', false]], + ['665', ['665', false]], + ['666', ['666', false]], + ['667', ['667', false]], + ['668', ['668', false]], + ['669', ['669', false]], + ['670', ['670', false]], + ['671', ['671', false]], + ['672', ['672', false]], + ['673', ['673', false]], + ['674', ['674', false]], + ['675', ['675', false]], + ['676', ['676', false]], + ['677', ['677', false]], + ['678', ['678', false]], + ['679', ['679', false]], + ['680', ['680', false]], + ['681', ['681', false]], + ['682', ['682', false]], + ['683', ['683', false]], + ['684', ['684', false]], + ['685', ['685', false]], + ['686', ['686', false]], + ['687', ['687', false]], + ['688', ['688', false]], + ['689', ['689', false]], + ['690', ['690', false]], + ['691', ['691', false]], + ['692', ['692', false]], + ['693', ['693', false]], + ['694', ['694', false]], + ['695', ['695', false]], + ['696', ['696', false]], + ['697', ['697', false]], + ['698', ['698', false]], + ['699', ['699', false]], + ['700', ['700', false]], + ['701', ['701', false]], + ['702', ['702', false]], + ['703', ['703', false]], + ['704', ['704', false]], + ['705', ['705', false]], + ['706', ['706', false]], + ['707', ['707', false]], + ['708', ['708', false]], + ['709', ['709', false]], + ['710', ['710', false]], + ['711', ['711', false]], + ['712', ['712', false]], + ['713', ['713', false]], + ['714', ['714', false]], + ['715', ['715', false]], + ['716', ['716', false]], + ['717', ['717', false]], + ['718', ['718', false]], + ['719', ['719', false]], + ['720', ['720', false]], + ['721', ['721', false]], + ['722', ['722', false]], + ['723', ['723', false]], + ['724', ['724', false]], + ['725', ['725', false]], + ['726', ['726', false]], + ['727', ['727', false]], + ['728', ['728', false]], + ['729', ['729', false]], + ['730', ['730', false]], + ['731', ['731', false]], + ['732', ['732', false]], + ['733', ['733', false]], + ['734', ['734', false]], + ['735', ['735', false]], + ['736', ['736', false]], + ['737', ['737', false]], + ['738', ['738', false]], + ['739', ['739', false]], + ['740', ['740', false]], + ['741', ['741', false]], + ['742', ['742', false]], + ['743', ['743', false]], + ['744', ['744', false]], + ['745', ['745', false]], + ['746', ['746', false]], + ['747', ['747', false]], + ['748', ['748', false]], + ['749', ['749', false]], + ['750', ['750', false]], + ['751', ['751', false]], + ['752', ['752', false]], + ['753', ['753', false]], + ['754', ['754', false]], + ['755', ['755', false]], + ['756', ['756', false]], + ['757', ['757', false]], + ['758', ['758', false]], + ['759', ['759', false]], + ['760', ['760', false]], + ['761', ['761', false]], + ['762', ['762', false]], + ['763', ['763', false]], + ['764', ['764', false]], + ['765', ['765', false]], + ['766', ['766', false]], + ['767', ['767', false]], + ['768', ['768', false]], + ['769', ['769', false]], + ['770', ['770', false]], + ['771', ['771', false]], + ['772', ['772', false]], + ['773', ['773', false]], + ['774', ['774', false]], + ['775', ['775', false]], + ['776', ['776', false]], + ['777', ['777', false]], + ['778', ['778', false]], + ['779', ['779', false]], + ['780', ['780', false]], + ['781', ['781', false]], + ['782', ['782', false]], + ['783', ['783', false]], + ['784', ['784', false]], + ['785', ['785', false]], + ['786', ['786', false]], + ['787', ['787', false]], + ['788', ['788', false]], + ['789', ['789', false]], + ['790', ['790', false]], + ['791', ['791', false]], + ['792', ['792', false]], + ['793', ['793', false]], + ['794', ['794', false]], + ['795', ['795', false]], + ['796', ['796', false]], + ['797', ['797', false]], + ['798', ['798', false]], + ['799', ['799', false]], + ['800', ['800', false]], + ['801', ['801', false]], + ['802', ['802', false]], + ['803', ['803', false]], + ['804', ['804', false]], + ['805', ['805', false]], + ['806', ['806', false]], + ['807', ['807', false]], + ['808', ['808', false]], + ['809', ['809', false]], + ['810', ['810', false]], + ['811', ['811', false]], + ['812', ['812', false]], + ['813', ['813', false]], + ['814', ['814', false]], + ['815', ['815', false]], + ['816', ['816', false]], + ['817', ['817', false]], + ['818', ['818', false]], + ['819', ['819', false]], + ['820', ['820', false]], + ['821', ['821', false]], + ['822', ['822', false]], + ['823', ['823', false]], + ['824', ['824', false]], + ['825', ['825', false]], + ['826', ['826', false]], + ['827', ['827', false]], + ['828', ['828', false]], + ['829', ['829', false]], + ['830', ['830', false]], + ['831', ['831', false]], + ['832', ['832', false]], + ['833', ['833', false]], + ['834', ['834', false]], + ['835', ['835', false]], + ['836', ['836', false]], + ['837', ['837', false]], + ['838', ['838', false]], + ['839', ['839', false]], + ['840', ['840', false]], + ['841', ['841', false]], + ['842', ['842', false]], + ['843', ['843', false]], + ['844', ['844', false]], + ['845', ['845', false]], + ['846', ['846', false]], + ['847', ['847', false]], + ['848', ['848', false]], + ['849', ['849', false]], + ['850', ['850', false]], + ['851', ['851', false]], + ['852', ['852', false]], + ['853', ['853', false]], + ['854', ['854', false]], + ['855', ['855', false]], + ['856', ['856', false]], + ['857', ['857', false]], + ['858', ['858', false]], + ['859', ['859', false]], + ['860', ['860', false]], + ['861', ['861', false]], + ['862', ['862', false]], + ['863', ['863', false]], + ['864', ['864', false]], + ['865', ['865', false]], + ['866', ['866', false]], + ['867', ['867', false]], + ['868', ['868', false]], + ['869', ['869', false]], + ['870', ['870', false]], + ['871', ['871', false]], + ['872', ['872', false]], + ['873', ['873', false]], + ['874', ['874', false]], + ['875', ['875', false]], + ['876', ['876', false]], + ['877', ['877', false]], + ['878', ['878', false]], + ['879', ['879', false]], + ['880', ['880', false]], + ['881', ['881', false]], + ['882', ['882', false]], + ['883', ['883', false]], + ['884', ['884', false]], + ['885', ['885', false]], + ['886', ['886', false]], + ['887', ['887', false]], + ['888', ['888', false]], + ['889', ['889', false]], + ['890', ['890', false]], + ['891', ['891', false]], + ['892', ['892', false]], + ['893', ['893', false]], + ['894', ['894', false]], + ['895', ['895', false]], + ['896', ['896', false]], + ['897', ['897', false]], + ['898', ['898', false]], + ['899', ['899', false]], + ['900', ['900', false]], + ['901', ['901', false]], + ['902', ['902', false]], + ['903', ['903', false]], + ['904', ['904', false]], + ['905', ['905', false]], + ['906', ['906', false]], + ['907', ['907', false]], + ['908', ['908', false]], + ['909', ['909', false]], + ['910', ['910', false]], + ['911', ['911', false]], + ['912', ['912', false]], + ['913', ['913', false]], + ['914', ['914', false]], + ['915', ['915', false]], + ['916', ['916', false]], + ['917', ['917', false]], + ['918', ['918', false]], + ['919', ['919', false]], + ['920', ['920', false]], + ['921', ['921', false]], + ['922', ['922', false]], + ['923', ['923', false]], + ['924', ['924', false]], + ['925', ['925', false]], + ['926', ['926', false]], + ['927', ['927', false]], + ['928', ['928', false]], + ['929', ['929', false]], + ['930', ['930', false]], + ['931', ['931', false]], + ['932', ['932', false]], + ['933', ['933', false]], + ['934', ['934', false]], + ['935', ['935', false]], + ['936', ['936', false]], + ['937', ['937', false]], + ['938', ['938', false]], + ['939', ['939', false]], + ['940', ['940', false]], + ['941', ['941', false]], + ['942', ['942', false]], + ['943', ['943', false]], + ['944', ['944', false]], + ['945', ['945', false]], + ['946', ['946', false]], + ['947', ['947', false]], + ['948', ['948', false]], + ['949', ['949', false]], + ['950', ['950', false]], + ['951', ['951', false]], + ['952', ['952', false]], + ['953', ['953', false]], + ['954', ['954', false]], + ['955', ['955', false]], + ['956', ['956', false]], + ['957', ['957', false]], + ['958', ['958', false]], + ['959', ['959', false]], + ['960', ['960', false]], + ['961', ['961', false]], + ['962', ['962', false]], + ['963', ['963', false]], + ['964', ['964', false]], + ['965', ['965', false]], + ['966', ['966', false]], + ['967', ['967', false]], + ['968', ['968', false]], + ['969', ['969', false]], + ['970', ['970', false]], + ['971', ['971', false]], + ['972', ['972', false]], + ['973', ['973', false]], + ['974', ['974', false]], + ['975', ['975', false]], + ['976', ['976', false]], + ['977', ['977', false]], + ['978', ['978', false]], + ['979', ['979', false]], + ['980', ['980', false]], + ['981', ['981', false]], + ['982', ['982', false]], + ['983', ['983', false]], + ['984', ['984', false]], + ['985', ['985', false]], + ['986', ['986', false]], + ['987', ['987', false]], + ['988', ['988', false]], + ['989', ['989', false]], + ['990', ['990', false]], + ['991', ['991', false]], + ['992', ['992', false]], + ['993', ['993', false]], + ['994', ['994', false]], + ['995', ['995', false]], + ['996', ['996', false]], + ['997', ['997', false]], + ['998', ['998', false]], + ['999', ['999', false]], + ['1000', ['1000', false]], + ['1001', ['1001', false]], + ['1002', ['1002', false]], + ['1003', ['1003', false]], + ['1004', ['1004', false]], + ['1005', ['1005', false]], + ['1006', ['1006', false]], + ['1007', ['1007', false]], + ['1008', ['1008', false]], + ['1009', ['1009', false]], + ['1010', ['1010', false]], + ['1011', ['1011', false]], + ['1012', ['1012', false]], + ['1013', ['1013', false]], + ['1014', ['1014', false]], + ['1015', ['1015', false]], + ['1016', ['1016', false]], + ['1017', ['1017', false]], + ['1018', ['1018', false]], + ['1019', ['1019', false]], + ['1020', ['1020', false]], + ['1021', ['1021', false]], + ['1022', ['1022', false]], + ['1023', ['1023', false]], + ['1024', ['1024', false]], + ['1025', ['1025', false]], + ['1026', ['1026', false]], + ['1027', ['1027', false]], + ['1028', ['1028', false]], + ['1029', ['1029', false]], + ['1030', ['1030', false]], + ['1031', ['1031', false]], + ['1032', ['1032', false]], + ['1033', ['1033', false]], + ['1034', ['1034', false]], + ['1035', ['1035', false]], + ['1036', ['1036', false]], + ['1037', ['1037', false]], + ['1038', ['1038', false]], + ['1039', ['1039', false]], + ['1040', ['1040', false]], + ['1041', ['1041', false]], + ['1042', ['1042', false]], + ['1043', ['1043', false]], + ['1044', ['1044', false]], + ['1045', ['1045', false]], + ['1046', ['1046', false]], + ['1047', ['1047', false]], + ['1048', ['1048', false]], + ['1049', ['1049', false]], + ['1050', ['1050', false]], + ['1051', ['1051', false]], + ['1052', ['1052', false]], + ['1053', ['1053', false]], + ['1054', ['1054', false]], + ['1055', ['1055', false]], + ['1056', ['1056', false]], + ['1057', ['1057', false]], + ['1058', ['1058', false]], + ['1059', ['1059', false]], + ['1060', ['1060', false]], + ['1061', ['1061', false]], + ['1062', ['1062', false]], + ['1063', ['1063', false]], + ['1064', ['1064', false]], + ['1065', ['1065', false]], + ['1066', ['1066', false]], + ['1067', ['1067', false]], + ['1068', ['1068', false]], + ['1069', ['1069', false]], + ['1070', ['1070', false]], + ['1071', ['1071', false]], + ['1072', ['1072', false]], + ['1073', ['1073', false]], + ['1074', ['1074', false]], + ['1075', ['1075', false]], + ['1076', ['1076', false]], + ['1077', ['1077', false]], + ['1078', ['1078', false]], + ['1079', ['1079', false]], + ['1080', ['1080', false]], + ['1081', ['1081', false]], + ['1082', ['1082', false]], + ['1083', ['1083', false]], + ['1084', ['1084', false]], + ['1085', ['1085', false]], + ['1086', ['1086', false]], + ['1087', ['1087', false]], + ['1088', ['1088', false]], + ['1089', ['1089', false]], + ['1090', ['1090', false]], + ['1091', ['1091', false]], + ['1092', ['1092', false]], + ['1093', ['1093', false]], + ['1094', ['1094', false]], + ['1095', ['1095', false]], + ['1096', ['1096', false]], + ['1097', ['1097', false]], + ['1098', ['1098', false]], + ['1099', ['1099', false]], + ['1100', ['1100', false]], + ['1101', ['1101', false]], + ['1102', ['1102', false]], + ['1103', ['1103', false]], + ['1104', ['1104', false]], + ['1105', ['1105', false]], + ['1106', ['1106', false]], + ['1107', ['1107', false]], + ['1108', ['1108', false]], + ['1109', ['1109', false]], + ['1110', ['1110', false]], + ['1111', ['1111', false]], + ['1112', ['1112', false]], + ['1113', ['1113', false]], + ['1114', ['1114', false]], + ['1115', ['1115', false]], + ['1116', ['1116', false]], + ['1117', ['1117', false]], + ['1118', ['1118', false]], + ['1119', ['1119', false]], + ['1120', ['1120', false]], + ['1121', ['1121', false]], + ['1122', ['1122', false]], + ['1123', ['1123', false]], + ['1124', ['1124', false]], + ['1125', ['1125', false]], + ['1126', ['1126', false]], + ['1127', ['1127', false]], + ['1128', ['1128', false]], + ['1129', ['1129', false]], + ['1130', ['1130', false]], + ['1131', ['1131', false]], + ['1132', ['1132', false]], + ['1133', ['1133', false]], + ['1134', ['1134', false]], + ['1135', ['1135', false]], + ['1136', ['1136', false]], + ['1137', ['1137', false]], + ['1138', ['1138', false]], + ['1139', ['1139', false]], + ['1140', ['1140', false]], + ['1141', ['1141', false]], + ['1142', ['1142', false]], + ['1143', ['1143', false]], + ['1144', ['1144', false]], + ['1145', ['1145', false]], + ['1146', ['1146', false]], + ['1147', ['1147', false]], + ['1148', ['1148', false]], + ['1149', ['1149', false]], + ['1150', ['1150', false]], + ['1151', ['1151', false]], + ['1152', ['1152', false]], + ['1153', ['1153', false]], + ['1154', ['1154', false]], + ['1155', ['1155', false]], + ['1156', ['1156', false]], + ['1157', ['1157', false]], + ['1158', ['1158', false]], + ['1159', ['1159', false]], + ['1160', ['1160', false]], + ['1161', ['1161', false]], + ['1162', ['1162', false]], + ['1163', ['1163', false]], + ['1164', ['1164', false]], + ['1165', ['1165', false]], + ['1166', ['1166', false]], + ['1167', ['1167', false]], + ['1168', ['1168', false]], + ['1169', ['1169', false]], + ['1170', ['1170', false]], + ['1171', ['1171', false]], + ['1172', ['1172', false]], + ['1173', ['1173', false]], + ['1174', ['1174', false]], + ['1175', ['1175', false]], + ['1176', ['1176', false]], + ['1177', ['1177', false]], + ['1178', ['1178', false]], + ['1179', ['1179', false]], + ['1180', ['1180', false]], + ['1181', ['1181', false]], + ['1182', ['1182', false]], + ['1183', ['1183', false]], + ['1184', ['1184', false]], + ['1185', ['1185', false]], + ['1186', ['1186', false]], + ['1187', ['1187', false]], + ['1188', ['1188', false]], + ['1189', ['1189', false]], + ['1190', ['1190', false]], + ['1191', ['1191', false]], + ['1192', ['1192', false]], + ['1193', ['1193', false]], + ['1194', ['1194', false]], + ['1195', ['1195', false]], + ['1196', ['1196', false]], + ['1197', ['1197', false]], + ['1198', ['1198', false]], + ['1199', ['1199', false]], + ['1200', ['1200', false]], + ['1201', ['1201', false]], + ['1202', ['1202', false]], + ['1203', ['1203', false]], + ['1204', ['1204', false]], + ['1205', ['1205', false]], + ['1206', ['1206', false]], + ['1207', ['1207', false]], + ['1208', ['1208', false]], + ['1209', ['1209', false]], + ['1210', ['1210', false]], + ['1211', ['1211', false]], + ['1212', ['1212', false]], + ['1213', ['1213', false]], + ['1214', ['1214', false]], + ['1215', ['1215', false]], + ['1216', ['1216', false]], + ['1217', ['1217', false]], + ['1218', ['1218', false]], + ['1219', ['1219', false]], + ['1220', ['1220', false]], + ['1221', ['1221', false]], + ['1222', ['1222', false]], + ['1223', ['1223', false]], + ['1224', ['1224', false]], + ['1225', ['1225', false]], + ['1226', ['1226', false]], + ['1227', ['1227', false]], + ['1228', ['1228', false]], + ['1229', ['1229', false]], + ['1230', ['1230', false]], + ['1231', ['1231', false]], + ['1232', ['1232', false]], + ['1233', ['1233', false]], + ['1234', ['1234', false]], + ['1235', ['1235', false]], + ['1236', ['1236', false]], + ['1237', ['1237', false]], + ['1238', ['1238', false]], + ['1239', ['1239', false]], + ['1240', ['1240', false]], + ['1241', ['1241', false]], + ['1242', ['1242', false]], + ['1243', ['1243', false]], + ['1244', ['1244', false]], + ['1245', ['1245', false]], + ['1246', ['1246', false]], + ['1247', ['1247', false]], + ['1248', ['1248', false]], + ['1249', ['1249', false]], + ['1250', ['1250', false]], + ['1251', ['1251', false]], + ['1252', ['1252', false]], + ['1253', ['1253', false]], + ['1254', ['1254', false]], + ['1255', ['1255', false]], + ['1256', ['1256', false]], + ['1257', ['1257', false]], + ['1258', ['1258', false]], + ['1259', ['1259', false]], + ['1260', ['1260', false]], + ['1261', ['1261', false]], + ['1262', ['1262', false]], + ['1263', ['1263', false]], + ['1264', ['1264', false]], + ['1265', ['1265', false]], + ['1266', ['1266', false]], + ['1267', ['1267', false]], + ['1268', ['1268', false]], + ['1269', ['1269', false]], + ['1270', ['1270', false]], + ['1271', ['1271', false]], + ['1272', ['1272', false]], + ['1273', ['1273', false]], + ['1274', ['1274', false]], + ['1275', ['1275', false]], + ['1276', ['1276', false]], + ['1277', ['1277', false]], + ['1278', ['1278', false]], + ['1279', ['1279', false]], + ['1280', ['1280', false]], + ['1281', ['1281', false]], + ['1282', ['1282', false]], + ['1283', ['1283', false]], + ['1284', ['1284', false]], + ['1285', ['1285', false]], + ['1286', ['1286', false]], + ['1287', ['1287', false]], + ['1288', ['1288', false]], + ['1289', ['1289', false]], + ['1290', ['1290', false]], + ['1291', ['1291', false]], + ['1292', ['1292', false]], + ['1293', ['1293', false]], + ['1294', ['1294', false]], + ['1295', ['1295', false]], + ['1296', ['1296', false]], + ['1297', ['1297', false]], + ['1298', ['1298', false]], + ['1299', ['1299', false]], + ['1300', ['1300', false]], + ['1301', ['1301', false]], + ['1302', ['1302', false]], + ['1303', ['1303', false]], + ['1304', ['1304', false]], + ['1305', ['1305', false]], + ['1306', ['1306', false]], + ['1307', ['1307', false]], + ['1308', ['1308', false]], + ['1309', ['1309', false]], + ['1310', ['1310', false]], + ['1311', ['1311', false]], + ['1312', ['1312', false]], + ['1313', ['1313', false]], + ['1314', ['1314', false]], + ['1315', ['1315', false]], + ['1316', ['1316', false]], + ['1317', ['1317', false]], + ['1318', ['1318', false]], + ['1319', ['1319', false]], + ['1320', ['1320', false]], + ['1321', ['1321', false]], + ['1322', ['1322', false]], + ['1323', ['1323', false]], + ['1324', ['1324', false]], + ['1325', ['1325', false]], + ['1326', ['1326', false]], + ['1327', ['1327', false]], + ['1328', ['1328', false]], + ['1329', ['1329', false]], + ['1330', ['1330', false]], + ['1331', ['1331', false]], + ['1332', ['1332', false]], + ['1333', ['1333', false]], + ['1334', ['1334', false]], + ['1335', ['1335', false]], + ['1336', ['1336', false]], + ['1337', ['1337', false]], + ['1338', ['1338', false]], + ['1339', ['1339', false]], + ['1340', ['1340', false]], + ['1341', ['1341', false]], + ['1342', ['1342', false]], + ['1343', ['1343', false]], + ['1344', ['1344', false]], + ['1345', ['1345', false]], + ['1346', ['1346', false]], + ['1347', ['1347', false]], + ['1348', ['1348', false]], + ['1349', ['1349', false]], + ['1350', ['1350', false]], + ['1351', ['1351', false]], + ['1352', ['1352', false]], + ['1353', ['1353', false]], + ['1354', ['1354', false]], + ['1355', ['1355', false]], + ['1356', ['1356', false]], + ['1357', ['1357', false]], + ['1358', ['1358', false]], + ['1359', ['1359', false]], + ['1360', ['1360', false]], + ['1361', ['1361', false]], + ['1362', ['1362', false]], + ['1363', ['1363', false]], + ['1364', ['1364', false]], + ['1365', ['1365', false]], + ['1366', ['1366', false]], + ['1367', ['1367', false]], + ['1368', ['1368', false]], + ['1369', ['1369', false]], + ['1370', ['1370', false]], + ['1371', ['1371', false]], + ['1372', ['1372', false]], + ['1373', ['1373', false]], + ['1374', ['1374', false]], + ['1375', ['1375', false]], + ['1376', ['1376', false]], + ['1377', ['1377', false]], + ['1378', ['1378', false]], + ['1379', ['1379', false]], + ['1380', ['1380', false]], + ['1381', ['1381', false]], + ['1382', ['1382', false]], + ['1383', ['1383', false]], + ['1384', ['1384', false]], + ['1385', ['1385', false]], + ['1386', ['1386', false]], + ['1387', ['1387', false]], + ['1388', ['1388', false]], + ['1389', ['1389', false]], + ['1390', ['1390', false]], + ['1391', ['1391', false]], + ['1392', ['1392', false]], + ['1393', ['1393', false]], + ['1394', ['1394', false]], + ['1395', ['1395', false]], + ['1396', ['1396', false]], + ['1397', ['1397', false]], + ['1398', ['1398', false]], + ['1399', ['1399', false]], + ['1400', ['1400', false]], + ['1401', ['1401', false]], + ['1402', ['1402', false]], + ['1403', ['1403', false]], + ['1404', ['1404', false]], + ['1405', ['1405', false]], + ['1406', ['1406', false]], + ['1407', ['1407', false]], + ['1408', ['1408', false]], + ['1409', ['1409', false]], + ['1410', ['1410', false]], + ['1411', ['1411', false]], + ['1412', ['1412', false]], + ['1413', ['1413', false]], + ['1414', ['1414', false]], + ['1415', ['1415', false]], + ['1416', ['1416', false]], + ['1417', ['1417', false]], + ['1418', ['1418', false]], + ['1419', ['1419', false]], + ['1420', ['1420', false]], + ['1421', ['1421', false]], + ['1422', ['1422', false]], + ['1423', ['1423', false]], + ['1424', ['1424', false]], + ['1425', ['1425', false]], + ['1426', ['1426', false]], + ['1427', ['1427', false]], + ['1428', ['1428', false]], + ['1429', ['1429', false]], + ['1430', ['1430', false]], + ['1431', ['1431', false]], + ['1432', ['1432', false]], + ['1433', ['1433', false]], + ['1434', ['1434', false]], + ['1435', ['1435', false]], + ['1436', ['1436', false]], + ['1437', ['1437', false]], + ['1438', ['1438', false]], + ['1439', ['1439', false]], + ['1440', ['1440', false]], + ['1441', ['1441', false]], + ['1442', ['1442', false]], + ['1443', ['1443', false]], + ['1444', ['1444', false]], + ['1445', ['1445', false]], + ['1446', ['1446', false]], + ['1447', ['1447', false]], + ['1448', ['1448', false]], + ['1449', ['1449', false]], + ['1450', ['1450', false]], + ['1451', ['1451', false]], + ['1452', ['1452', false]], + ['1453', ['1453', false]], + ['1454', ['1454', false]], + ['1455', ['1455', false]], + ['1456', ['1456', false]], + ['1457', ['1457', false]], + ['1458', ['1458', false]], + ['1459', ['1459', false]], + ['1460', ['1460', false]], + ['1461', ['1461', false]], + ['1462', ['1462', false]], + ['1463', ['1463', false]], + ['1464', ['1464', false]], + ['1465', ['1465', false]], + ['1466', ['1466', false]], + ['1467', ['1467', false]], + ['1468', ['1468', false]], + ['1469', ['1469', false]], + ['1470', ['1470', false]], + ['1471', ['1471', false]], + ['1472', ['1472', false]], + ['1473', ['1473', false]], + ['1474', ['1474', false]], + ['1475', ['1475', false]], + ['1476', ['1476', false]], + ['1477', ['1477', false]], + ['1478', ['1478', false]], + ['1479', ['1479', false]], + ['1480', ['1480', false]], + ['1481', ['1481', false]], + ['1482', ['1482', false]], + ['1483', ['1483', false]], + ['1484', ['1484', false]], + ['1485', ['1485', false]], + ['1486', ['1486', false]], + ['1487', ['1487', false]], + ['1488', ['1488', false]], + ['1489', ['1489', false]], + ['1490', ['1490', false]], + ['1491', ['1491', false]], + ['1492', ['1492', false]], + ['1493', ['1493', false]], + ['1494', ['1494', false]], + ['1495', ['1495', false]], + ['1496', ['1496', false]], + ['1497', ['1497', false]], + ['1498', ['1498', false]], + ['1499', ['1499', false]], + ['1500', ['1500', false]], + ['1501', ['1501', false]], + ['1502', ['1502', false]], + ['1503', ['1503', false]], + ['1504', ['1504', false]], + ['1505', ['1505', false]], + ['1506', ['1506', false]], + ['1507', ['1507', false]], + ['1508', ['1508', false]], + ['1509', ['1509', false]], + ['1510', ['1510', false]], + ['1511', ['1511', false]], + ['1512', ['1512', false]], + ['1513', ['1513', false]], + ['1514', ['1514', false]], + ['1515', ['1515', false]], + ['1516', ['1516', false]], + ['1517', ['1517', false]], + ['1518', ['1518', false]], + ['1519', ['1519', false]], + ['1520', ['1520', false]], + ['1521', ['1521', false]], + ['1522', ['1522', false]], + ['1523', ['1523', false]], + ['1524', ['1524', false]], + ['1525', ['1525', false]], + ['1526', ['1526', false]], + ['1527', ['1527', false]], + ['1528', ['1528', false]], + ['1529', ['1529', false]], + ['1530', ['1530', false]], + ['1531', ['1531', false]], + ['1532', ['1532', false]], + ['1533', ['1533', false]], + ['1534', ['1534', false]], + ['1535', ['1535', false]], + ['1536', ['1536', false]], + ['1537', ['1537', false]], + ['1538', ['1538', false]], + ['1539', ['1539', false]], + ['1540', ['1540', false]], + ['1541', ['1541', false]], + ['1542', ['1542', false]], + ['1543', ['1543', false]], + ['1544', ['1544', false]], + ['1545', ['1545', false]], + ['1546', ['1546', false]], + ['1547', ['1547', false]], + ['1548', ['1548', false]], + ['1549', ['1549', false]], + ['1550', ['1550', false]], + ['1551', ['1551', false]], + ['1552', ['1552', false]], + ['1553', ['1553', false]], + ['1554', ['1554', false]], + ['1555', ['1555', false]], + ['1556', ['1556', false]], + ['1557', ['1557', false]], + ['1558', ['1558', false]], + ['1559', ['1559', false]], + ['1560', ['1560', false]], + ['1561', ['1561', false]], + ['1562', ['1562', false]], + ['1563', ['1563', false]], + ['1564', ['1564', false]], + ['1565', ['1565', false]], + ['1566', ['1566', false]], + ['1567', ['1567', false]], + ['1568', ['1568', false]], + ['1569', ['1569', false]], + ['1570', ['1570', false]], + ['1571', ['1571', false]], + ['1572', ['1572', false]], + ['1573', ['1573', false]], + ['1574', ['1574', false]], + ['1575', ['1575', false]], + ['1576', ['1576', false]], + ['1577', ['1577', false]], + ['1578', ['1578', false]], + ['1579', ['1579', false]], + ['1580', ['1580', false]], + ['1581', ['1581', false]], + ['1582', ['1582', false]], + ['1583', ['1583', false]], + ['1584', ['1584', false]], + ['1585', ['1585', false]], + ['1586', ['1586', false]], + ['1587', ['1587', false]], + ['1588', ['1588', false]], + ['1589', ['1589', false]], + ['1590', ['1590', false]], + ['1591', ['1591', false]], + ['1592', ['1592', false]], + ['1593', ['1593', false]], + ['1594', ['1594', false]], + ['1595', ['1595', false]], + ['1596', ['1596', false]], + ['1597', ['1597', false]], + ['1598', ['1598', false]], + ['1599', ['1599', false]], + ['1600', ['1600', false]], + ['1601', ['1601', false]], + ['1602', ['1602', false]], + ['1603', ['1603', false]], + ['1604', ['1604', false]], + ['1605', ['1605', false]], + ['1606', ['1606', false]], + ['1607', ['1607', false]], + ['1608', ['1608', false]], + ['1609', ['1609', false]], + ['1610', ['1610', false]], + ['1611', ['1611', false]], + ['1612', ['1612', false]], + ['1613', ['1613', false]], + ['1614', ['1614', false]], + ['1615', ['1615', false]], + ['1616', ['1616', false]], + ['1617', ['1617', false]], + ['1618', ['1618', false]], + ['1619', ['1619', false]], + ['1620', ['1620', false]], + ['1621', ['1621', false]], + ['1622', ['1622', false]], + ['1623', ['1623', false]], + ['1624', ['1624', false]], + ['1625', ['1625', false]], + ['1626', ['1626', false]], + ['1627', ['1627', false]], + ['1628', ['1628', false]], + ['1629', ['1629', false]], + ['1630', ['1630', false]], + ['1631', ['1631', false]], + ['1632', ['1632', false]], + ['1633', ['1633', false]], + ['1634', ['1634', false]], + ['1635', ['1635', false]], + ['1636', ['1636', false]], + ['1637', ['1637', false]], + ['1638', ['1638', false]], + ['1639', ['1639', false]], + ['1640', ['1640', false]], + ['1641', ['1641', false]], + ['1642', ['1642', false]], + ['1643', ['1643', false]], + ['1644', ['1644', false]], + ['1645', ['1645', false]], + ['1646', ['1646', false]], + ['1647', ['1647', false]], + ['1648', ['1648', false]], + ['1649', ['1649', false]], + ['1650', ['1650', false]], + ['1651', ['1651', false]], + ['1652', ['1652', false]], + ['1653', ['1653', false]], + ['1654', ['1654', false]], + ['1655', ['1655', false]], + ['1656', ['1656', false]], + ['1657', ['1657', false]], + ['1658', ['1658', false]], + ['1659', ['1659', false]], + ['1660', ['1660', false]], + ['1661', ['1661', false]], + ['1662', ['1662', false]], + ['1663', ['1663', false]], + ['1664', ['1664', false]], + ['1665', ['1665', false]], + ['1666', ['1666', false]], + ['1667', ['1667', false]], + ['1668', ['1668', false]], + ['1669', ['1669', false]], + ['1670', ['1670', false]], + ['1671', ['1671', false]], + ['1672', ['1672', false]], + ['1673', ['1673', false]], + ['1674', ['1674', false]], + ['1675', ['1675', false]], + ['1676', ['1676', false]], + ['1677', ['1677', false]], + ['1678', ['1678', false]], + ['1679', ['1679', false]], + ['1680', ['1680', false]], + ['1681', ['1681', false]], + ['1682', ['1682', false]], + ['1683', ['1683', false]], + ['1684', ['1684', false]], + ['1685', ['1685', false]], + ['1686', ['1686', false]], + ['1687', ['1687', false]], + ['1688', ['1688', false]], + ['1689', ['1689', false]], + ['1690', ['1690', false]], + ['1691', ['1691', false]], + ['1692', ['1692', false]], + ['1693', ['1693', false]], + ['1694', ['1694', false]], + ['1695', ['1695', false]], + ['1696', ['1696', false]], + ['1697', ['1697', false]], + ['1698', ['1698', false]], + ['1699', ['1699', false]], + ['1700', ['1700', false]], + ['1701', ['1701', false]], + ['1702', ['1702', false]], + ['1703', ['1703', false]], + ['1704', ['1704', false]], + ['1705', ['1705', false]], + ['1706', ['1706', false]], + ['1707', ['1707', false]], + ['1708', ['1708', false]], + ['1709', ['1709', false]], + ['1710', ['1710', false]], + ['1711', ['1711', false]], + ['1712', ['1712', false]], + ['1713', ['1713', false]], + ['1714', ['1714', false]], + ['1715', ['1715', false]], + ['1716', ['1716', false]], + ['1717', ['1717', false]], + ['1718', ['1718', false]], + ['1719', ['1719', false]], + ['1720', ['1720', false]], + ['1721', ['1721', false]], + ['1722', ['1722', false]], + ['1723', ['1723', false]], + ['1724', ['1724', false]], + ['1725', ['1725', false]], + ['1726', ['1726', false]], + ['1727', ['1727', false]], + ['1728', ['1728', false]], + ['1729', ['1729', false]], + ['1730', ['1730', false]], + ['1731', ['1731', false]], + ['1732', ['1732', false]], + ['1733', ['1733', false]], + ['1734', ['1734', false]], + ['1735', ['1735', false]], + ['1736', ['1736', false]], + ['1737', ['1737', false]], + ['1738', ['1738', false]], + ['1739', ['1739', false]], + ['1740', ['1740', false]], + ['1741', ['1741', false]], + ['1742', ['1742', false]], + ['1743', ['1743', false]], + ['1744', ['1744', false]], + ['1745', ['1745', false]], + ['1746', ['1746', false]], + ['1747', ['1747', false]], + ['1748', ['1748', false]], + ['1749', ['1749', false]], + ['1750', ['1750', false]], + ['1751', ['1751', false]], + ['1752', ['1752', false]], + ['1753', ['1753', false]], + ['1754', ['1754', false]], + ['1755', ['1755', false]], + ['1756', ['1756', false]], + ['1757', ['1757', false]], + ['1758', ['1758', false]], + ['1759', ['1759', false]], + ['1760', ['1760', false]], + ['1761', ['1761', false]], + ['1762', ['1762', false]], + ['1763', ['1763', false]], + ['1764', ['1764', false]], + ['1765', ['1765', false]], + ['1766', ['1766', false]], + ['1767', ['1767', false]], + ['1768', ['1768', false]], + ['1769', ['1769', false]], + ['1770', ['1770', false]], + ['1771', ['1771', false]], + ['1772', ['1772', false]], + ['1773', ['1773', false]], + ['1774', ['1774', false]], + ['1775', ['1775', false]], + ['1776', ['1776', false]], + ['1777', ['1777', false]], + ['1778', ['1778', false]], + ['1779', ['1779', false]], + ['1780', ['1780', false]], + ['1781', ['1781', false]], + ['1782', ['1782', false]], + ['1783', ['1783', false]], + ['1784', ['1784', false]], + ['1785', ['1785', false]], + ['1786', ['1786', false]], + ['1787', ['1787', false]], + ['1788', ['1788', false]], + ['1789', ['1789', false]], + ['1790', ['1790', false]], + ['1791', ['1791', false]], + ['1792', ['1792', false]], + ['1793', ['1793', false]], + ['1794', ['1794', false]], + ['1795', ['1795', false]], + ['1796', ['1796', false]], + ['1797', ['1797', false]], + ['1798', ['1798', false]], + ['1799', ['1799', false]], + ['1800', ['1800', false]], + ['1801', ['1801', false]], + ['1802', ['1802', false]], + ['1803', ['1803', false]], + ['1804', ['1804', false]], + ['1805', ['1805', false]], + ['1806', ['1806', false]], + ['1807', ['1807', false]], + ['1808', ['1808', false]], + ['1809', ['1809', false]], + ['1810', ['1810', false]], + ['1811', ['1811', false]], + ['1812', ['1812', false]], + ['1813', ['1813', false]], + ['1814', ['1814', false]], + ['1815', ['1815', false]], + ['1816', ['1816', false]], + ['1817', ['1817', false]], + ['1818', ['1818', false]], + ['1819', ['1819', false]], + ['1820', ['1820', false]], + ['1821', ['1821', false]], + ['1822', ['1822', false]], + ['1823', ['1823', false]], + ['1824', ['1824', false]], + ['1825', ['1825', false]], + ['1826', ['1826', false]], + ['1827', ['1827', false]], + ['1828', ['1828', false]], + ['1829', ['1829', false]], + ['1830', ['1830', false]], + ['1831', ['1831', false]], + ['1832', ['1832', false]], + ['1833', ['1833', false]], + ['1834', ['1834', false]], + ['1835', ['1835', false]], + ['1836', ['1836', false]], + ['1837', ['1837', false]], + ['1838', ['1838', false]], + ['1839', ['1839', false]], + ['1840', ['1840', false]], + ['1841', ['1841', false]], + ['1842', ['1842', false]], + ['1843', ['1843', false]], + ['1844', ['1844', false]], + ['1845', ['1845', false]], + ['1846', ['1846', false]], + ['1847', ['1847', false]], + ['1848', ['1848', false]], + ['1849', ['1849', false]], + ['1850', ['1850', false]], + ['1851', ['1851', false]], + ['1852', ['1852', false]], + ['1853', ['1853', false]], + ['1854', ['1854', false]], + ['1855', ['1855', false]], + ['1856', ['1856', false]], + ['1857', ['1857', false]], + ['1858', ['1858', false]], + ['1859', ['1859', false]], + ['1860', ['1860', false]], + ['1861', ['1861', false]], + ['1862', ['1862', false]], + ['1863', ['1863', false]], + ['1864', ['1864', false]], + ['1865', ['1865', false]], + ['1866', ['1866', false]], + ['1867', ['1867', false]], + ['1868', ['1868', false]], + ['1869', ['1869', false]], + ['1870', ['1870', false]], + ['1871', ['1871', false]], + ['1872', ['1872', false]], + ['1873', ['1873', false]], + ['1874', ['1874', false]], + ['1875', ['1875', false]], + ['1876', ['1876', false]], + ['1877', ['1877', false]], + ['1878', ['1878', false]], + ['1879', ['1879', false]], + ['1880', ['1880', false]], + ['1881', ['1881', false]], + ['1882', ['1882', false]], + ['1883', ['1883', false]], + ['1884', ['1884', false]], + ['1885', ['1885', false]], + ['1886', ['1886', false]], + ['1887', ['1887', false]], + ['1888', ['1888', false]], + ['1889', ['1889', false]], + ['1890', ['1890', false]], + ['1891', ['1891', false]], + ['1892', ['1892', false]], + ['1893', ['1893', false]], + ['1894', ['1894', false]], + ['1895', ['1895', false]], + ['1896', ['1896', false]], + ['1897', ['1897', false]], + ['1898', ['1898', false]], + ['1899', ['1899', false]], + ['1900', ['1900', false]], + ['1901', ['1901', false]], + ['1902', ['1902', false]], + ['1903', ['1903', false]], + ['1904', ['1904', false]], + ['1905', ['1905', false]], + ['1906', ['1906', false]], + ['1907', ['1907', false]], + ['1908', ['1908', false]], + ['1909', ['1909', false]], + ['1910', ['1910', false]], + ['1911', ['1911', false]], + ['1912', ['1912', false]], + ['1913', ['1913', false]], + ['1914', ['1914', false]], + ['1915', ['1915', false]], + ['1916', ['1916', false]], + ['1917', ['1917', false]], + ['1918', ['1918', false]], + ['1919', ['1919', false]], + ['1920', ['1920', false]], + ['1921', ['1921', false]], + ['1922', ['1922', false]], + ['1923', ['1923', false]], + ['1924', ['1924', false]], + ['1925', ['1925', false]], + ['1926', ['1926', false]], + ['1927', ['1927', false]], + ['1928', ['1928', false]], + ['1929', ['1929', false]], + ['1930', ['1930', false]], + ['1931', ['1931', false]], + ['1932', ['1932', false]], + ['1933', ['1933', false]], + ['1934', ['1934', false]], + ['1935', ['1935', false]], + ['1936', ['1936', false]], + ['1937', ['1937', false]], + ['1938', ['1938', false]], + ['1939', ['1939', false]], + ['1940', ['1940', false]], + ['1941', ['1941', false]], + ['1942', ['1942', false]], + ['1943', ['1943', false]], + ['1944', ['1944', false]], + ['1945', ['1945', false]], + ['1946', ['1946', false]], + ['1947', ['1947', false]], + ['1948', ['1948', false]], + ['1949', ['1949', false]], + ['1950', ['1950', false]], + ['1951', ['1951', false]], + ['1952', ['1952', false]], + ['1953', ['1953', false]], + ['1954', ['1954', false]], + ['1955', ['1955', false]], + ['1956', ['1956', false]], + ['1957', ['1957', false]], + ['1958', ['1958', false]], + ['1959', ['1959', false]], + ['1960', ['1960', false]], + ['1961', ['1961', false]], + ['1962', ['1962', false]], + ['1963', ['1963', false]], + ['1964', ['1964', false]], + ['1965', ['1965', false]], + ['1966', ['1966', false]], + ['1967', ['1967', false]], + ['1968', ['1968', false]], + ['1969', ['1969', false]], + ['1970', ['1970', false]], + ['1971', ['1971', false]], + ['1972', ['1972', false]], + ['1973', ['1973', false]], + ['1974', ['1974', false]], + ['1975', ['1975', false]], + ['1976', ['1976', false]], + ['1977', ['1977', false]], + ['1978', ['1978', false]], + ['1979', ['1979', false]], + ['1980', ['1980', false]], + ['1981', ['1981', false]], + ['1982', ['1982', false]], + ['1983', ['1983', false]], + ['1984', ['1984', false]], + ['1985', ['1985', false]], + ['1986', ['1986', false]], + ['1987', ['1987', false]], + ['1988', ['1988', false]], + ['1989', ['1989', false]], + ['1990', ['1990', false]], + ['1991', ['1991', false]], + ['1992', ['1992', false]], + ['1993', ['1993', false]], + ['1994', ['1994', false]], + ['1995', ['1995', false]], + ['1996', ['1996', false]], + ['1997', ['1997', false]], + ['1998', ['1998', false]], + ['1999', ['1999', false]], + ['2000', ['2000', false]], + ['2001', ['2001', false]], + ['2002', ['2002', false]], + ['2003', ['2003', false]], + ['2004', ['2004', false]], + ['2005', ['2005', false]], + ['2006', ['2006', false]], + ['2007', ['2007', false]], + ['2008', ['2008', false]], + ['2009', ['2009', false]], + ['2010', ['2010', false]], + ['2011', ['2011', false]], + ['2012', ['2012', false]], + ['2013', ['2013', false]], + ['2014', ['2014', false]], + ['2015', ['2015', false]], + ['2016', ['2016', false]], + ['2017', ['2017', false]], + ['2018', ['2018', false]], + ['2019', ['2019', false]], + ['2020', ['2020', false]], + ['2021', ['2021', false]], + ['2022', ['2022', false]], + ['2023', ['2023', false]], + ['2024', ['2024', false]], + ['2025', ['2025', false]], + ['2026', ['2026', false]], + ['2027', ['2027', false]], + ['2028', ['2028', false]], + ['2029', ['2029', false]], + ['2030', ['2030', false]], + ['2031', ['2031', false]], + ['2032', ['2032', false]], + ['2033', ['2033', false]], + ['2034', ['2034', false]], + ['2035', ['2035', false]], + ['2036', ['2036', false]], + ['2037', ['2037', false]], + ['2038', ['2038', false]], + ['2039', ['2039', false]], + ['2040', ['2040', false]], + ['2041', ['2041', false]], + ['2042', ['2042', false]], + ['2043', ['2043', false]], + ['2044', ['2044', false]], + ['2045', ['2045', false]], + ['2046', ['2046', false]], + ['2047', ['2047', false]], + ['2048', ['2048', false]], + ['2049', ['2049', false]], + ['2050', ['2050', false]], + ['2051', ['2051', false]], + ['2052', ['2052', false]], + ['2053', ['2053', false]], + ['2054', ['2054', false]], + ['2055', ['2055', false]], + ['2056', ['2056', false]], + ['2057', ['2057', false]], + ['2058', ['2058', false]], + ['2059', ['2059', false]], + ['2060', ['2060', false]], + ['2061', ['2061', false]], + ['2062', ['2062', false]], + ['2063', ['2063', false]], + ['2064', ['2064', false]], + ['2065', ['2065', false]], + ['2066', ['2066', false]], + ['2067', ['2067', false]], + ['2068', ['2068', false]], + ['2069', ['2069', false]], + ['2070', ['2070', false]], + ['2071', ['2071', false]], + ['2072', ['2072', false]], + ['2073', ['2073', false]], + ['2074', ['2074', false]], + ['2075', ['2075', false]], + ['2076', ['2076', false]], + ['2077', ['2077', false]], + ['2078', ['2078', false]], + ['2079', ['2079', false]], + ['2080', ['2080', false]], + ['2081', ['2081', false]], + ['2082', ['2082', false]], + ['2083', ['2083', false]], + ['2084', ['2084', false]], + ['2085', ['2085', false]], + ['2086', ['2086', false]], + ['2087', ['2087', false]], + ['2088', ['2088', false]], + ['2089', ['2089', false]], + ['2090', ['2090', false]], + ['2091', ['2091', false]], + ['2092', ['2092', false]], + ['2093', ['2093', false]], + ['2094', ['2094', false]], + ['2095', ['2095', false]], + ['2096', ['2096', false]], + ['2097', ['2097', false]], + ['2098', ['2098', false]], + ['2099', ['2099', false]], + ['2100', ['2100', false]], + ['2101', ['2101', false]], + ['2102', ['2102', false]], + ['2103', ['2103', false]], + ['2104', ['2104', false]], + ['2105', ['2105', false]], + ['2106', ['2106', false]], + ['2107', ['2107', false]], + ['2108', ['2108', false]], + ['2109', ['2109', false]], + ['2110', ['2110', false]], + ['2111', ['2111', false]], + ['2112', ['2112', false]], + ['2113', ['2113', false]], + ['2114', ['2114', false]], + ['2115', ['2115', false]], + ['2116', ['2116', false]], + ['2117', ['2117', false]], + ['2118', ['2118', false]], + ['2119', ['2119', false]], + ['2120', ['2120', false]], + ['2121', ['2121', false]], + ['2122', ['2122', false]], + ['2123', ['2123', false]], + ['2124', ['2124', false]], + ['2125', ['2125', false]], + ['2126', ['2126', false]], + ['2127', ['2127', false]], + ['2128', ['2128', false]], + ['2129', ['2129', false]], + ['2130', ['2130', false]], + ['2131', ['2131', false]], + ['2132', ['2132', false]], + ['2133', ['2133', false]], + ['2134', ['2134', false]], + ['2135', ['2135', false]], + ['2136', ['2136', false]], + ['2137', ['2137', false]], + ['2138', ['2138', false]], + ['2139', ['2139', false]], + ['2140', ['2140', false]], + ['2141', ['2141', false]], + ['2142', ['2142', false]], + ['2143', ['2143', false]], + ['2144', ['2144', false]], + ['2145', ['2145', false]], + ['2146', ['2146', false]], + ['2147', ['2147', false]], + ['2148', ['2148', false]], + ['2149', ['2149', false]], + ['2150', ['2150', false]], + ['2151', ['2151', false]], + ['2152', ['2152', false]], + ['2153', ['2153', false]], + ['2154', ['2154', false]], + ['2155', ['2155', false]], + ['2156', ['2156', false]], + ['2157', ['2157', false]], + ['2158', ['2158', false]], + ['2159', ['2159', false]], + ['2160', ['2160', false]], + ['2161', ['2161', false]], + ['2162', ['2162', false]], + ['2163', ['2163', false]], + ['2164', ['2164', false]], + ['2165', ['2165', false]], + ['2166', ['2166', false]], + ['2167', ['2167', false]], + ['2168', ['2168', false]], + ['2169', ['2169', false]], + ['2170', ['2170', false]], + ['2171', ['2171', false]], + ['2172', ['2172', false]], + ['2173', ['2173', false]], + ['2174', ['2174', false]], + ['2175', ['2175', false]], + ['2176', ['2176', false]], + ['2177', ['2177', false]], + ['2178', ['2178', false]], + ['2179', ['2179', false]], + ['2180', ['2180', false]], + ['2181', ['2181', false]], + ['2182', ['2182', false]], + ['2183', ['2183', false]], + ['2184', ['2184', false]], + ['2185', ['2185', false]], + ['2186', ['2186', false]], + ['2187', ['2187', false]], + ['2188', ['2188', false]], + ['2189', ['2189', false]], + ['2190', ['2190', false]], + ['2191', ['2191', false]], + ['2192', ['2192', false]], + ['2193', ['2193', false]], + ['2194', ['2194', false]], + ['2195', ['2195', false]], + ['2196', ['2196', false]], + ['2197', ['2197', false]], + ['2198', ['2198', false]], + ['2199', ['2199', false]], + ['2200', ['2200', false]], + ['2201', ['2201', false]], + ['2202', ['2202', false]], + ['2203', ['2203', false]], + ['2204', ['2204', false]], + ['2205', ['2205', false]], + ['2206', ['2206', false]], + ['2207', ['2207', false]], + ['2208', ['2208', false]], + ['2209', ['2209', false]], + ['2210', ['2210', false]], + ['2211', ['2211', false]], + ['2212', ['2212', false]], + ['2213', ['2213', false]], + ['2214', ['2214', false]], + ['2215', ['2215', false]], + ['2216', ['2216', false]], + ['2217', ['2217', false]], + ['2218', ['2218', false]], + ['2219', ['2219', false]], + ['2220', ['2220', false]], + ['2221', ['2221', false]], + ['2222', ['2222', false]], + ['2223', ['2223', false]], + ['2224', ['2224', false]], + ['2225', ['2225', false]], + ['2226', ['2226', false]], + ['2227', ['2227', false]], + ['2228', ['2228', false]], + ['2229', ['2229', false]], + ['2230', ['2230', false]], + ['2231', ['2231', false]], + ['2232', ['2232', false]], + ['2233', ['2233', false]], + ['2234', ['2234', false]], + ['2235', ['2235', false]], + ['2236', ['2236', false]], + ['2237', ['2237', false]], + ['2238', ['2238', false]], + ['2239', ['2239', false]], + ['2240', ['2240', false]], + ['2241', ['2241', false]], + ['2242', ['2242', false]], + ['2243', ['2243', false]], + ['2244', ['2244', false]], + ['2245', ['2245', false]], + ['2246', ['2246', false]], + ['2247', ['2247', false]], + ['2248', ['2248', false]], + ['2249', ['2249', false]], + ['2250', ['2250', false]], + ['2251', ['2251', false]], + ['2252', ['2252', false]], + ['2253', ['2253', false]], + ['2254', ['2254', false]], + ['2255', ['2255', false]], + ['2256', ['2256', false]], + ['2257', ['2257', false]], + ['2258', ['2258', false]], + ['2259', ['2259', false]], + ['2260', ['2260', false]], + ['2261', ['2261', false]], + ['2262', ['2262', false]], + ['2263', ['2263', false]], + ['2264', ['2264', false]], + ['2265', ['2265', false]], + ['2266', ['2266', false]], + ['2267', ['2267', false]], + ['2268', ['2268', false]], + ['2269', ['2269', false]], + ['2270', ['2270', false]], + ['2271', ['2271', false]], + ['2272', ['2272', false]], + ['2273', ['2273', false]], + ['2274', ['2274', false]], + ['2275', ['2275', false]], + ['2276', ['2276', false]], + ['2277', ['2277', false]], + ['2278', ['2278', false]], + ['2279', ['2279', false]], + ['2280', ['2280', false]], + ['2281', ['2281', false]], + ['2282', ['2282', false]], + ['2283', ['2283', false]], + ['2284', ['2284', false]], + ['2285', ['2285', false]], + ['2286', ['2286', false]], + ['2287', ['2287', false]], + ['2288', ['2288', false]], + ['2289', ['2289', false]], + ['2290', ['2290', false]], + ['2291', ['2291', false]], + ['2292', ['2292', false]], + ['2293', ['2293', false]], + ['2294', ['2294', false]], + ['2295', ['2295', false]], + ['2296', ['2296', false]], + ['2297', ['2297', false]], + ['2298', ['2298', false]], + ['2299', ['2299', false]], + ['2300', ['2300', false]], + ['2301', ['2301', false]], + ['2302', ['2302', false]], + ['2303', ['2303', false]], + ['2304', ['2304', false]], + ['2305', ['2305', false]], + ['2306', ['2306', false]], + ['2307', ['2307', false]], + ['2308', ['2308', false]], + ['2309', ['2309', false]], + ['2310', ['2310', false]], + ['2311', ['2311', false]], + ['2312', ['2312', false]], + ['2313', ['2313', false]], + ['2314', ['2314', false]], + ['2315', ['2315', false]], + ['2316', ['2316', false]], + ['2317', ['2317', false]], + ['2318', ['2318', false]], + ['2319', ['2319', false]], + ['2320', ['2320', false]], + ['2321', ['2321', false]], + ['2322', ['2322', false]], + ['2323', ['2323', false]], + ['2324', ['2324', false]], + ['2325', ['2325', false]], + ['2326', ['2326', false]], + ['2327', ['2327', false]], + ['2328', ['2328', false]], + ['2329', ['2329', false]], + ['2330', ['2330', false]], + ['2331', ['2331', false]], + ['2332', ['2332', false]], + ['2333', ['2333', false]], + ['2334', ['2334', false]], + ['2335', ['2335', false]], + ['2336', ['2336', false]], + ['2337', ['2337', false]], + ['2338', ['2338', false]], + ['2339', ['2339', false]], + ['2340', ['2340', false]], + ['2341', ['2341', false]], + ['2342', ['2342', false]], + ['2343', ['2343', false]], + ['2344', ['2344', false]], + ['2345', ['2345', false]], + ['2346', ['2346', false]], + ['2347', ['2347', false]], + ['2348', ['2348', false]], + ['2349', ['2349', false]], + ['2350', ['2350', false]], + ['2351', ['2351', false]], + ['2352', ['2352', false]], + ['2353', ['2353', false]], + ['2354', ['2354', false]], + ['2355', ['2355', false]], + ['2356', ['2356', false]], + ['2357', ['2357', false]], + ['2358', ['2358', false]], + ['2359', ['2359', false]], + ['2360', ['2360', false]], + ['2361', ['2361', false]], + ['2362', ['2362', false]], + ['2363', ['2363', false]], + ['2364', ['2364', false]], + ['2365', ['2365', false]], + ['2366', ['2366', false]], + ['2367', ['2367', false]], + ['2368', ['2368', false]], + ['2369', ['2369', false]], + ['2370', ['2370', false]], + ['2371', ['2371', false]], + ['2372', ['2372', false]], + ['2373', ['2373', false]], + ['2374', ['2374', false]], + ['2375', ['2375', false]], + ['2376', ['2376', false]], + ['2377', ['2377', false]], + ['2378', ['2378', false]], + ['2379', ['2379', false]], + ['2380', ['2380', false]], + ['2381', ['2381', false]], + ['2382', ['2382', false]], + ['2383', ['2383', false]], + ['2384', ['2384', false]], + ['2385', ['2385', false]], + ['2386', ['2386', false]], + ['2387', ['2387', false]], + ['2388', ['2388', false]], + ['2389', ['2389', false]], + ['2390', ['2390', false]], + ['2391', ['2391', false]], + ['2392', ['2392', false]], + ['2393', ['2393', false]], + ['2394', ['2394', false]], + ['2395', ['2395', false]], + ['2396', ['2396', false]], + ['2397', ['2397', false]], + ['2398', ['2398', false]], + ['2399', ['2399', false]], + ['2400', ['2400', false]], + ['2401', ['2401', false]], + ['2402', ['2402', false]], + ['2403', ['2403', false]], + ['2404', ['2404', false]], + ['2405', ['2405', false]], + ['2406', ['2406', false]], + ['2407', ['2407', false]], + ['2408', ['2408', false]], + ['2409', ['2409', false]], + ['2410', ['2410', false]], + ['2411', ['2411', false]], + ['2412', ['2412', false]], + ['2413', ['2413', false]], + ['2414', ['2414', false]], + ['2415', ['2415', false]], + ['2416', ['2416', false]], + ['2417', ['2417', false]], + ['2418', ['2418', false]], + ['2419', ['2419', false]], + ['2420', ['2420', false]], + ['2421', ['2421', false]], + ['2422', ['2422', false]], + ['2423', ['2423', false]], + ['2424', ['2424', false]], + ['2425', ['2425', false]], + ['2426', ['2426', false]], + ['2427', ['2427', false]], + ['2428', ['2428', false]], + ['2429', ['2429', false]], + ['2430', ['2430', false]], + ['2431', ['2431', false]], + ['2432', ['2432', false]], + ['2433', ['2433', false]], + ['2434', ['2434', false]], + ['2435', ['2435', false]], + ['2436', ['2436', false]], + ['2437', ['2437', false]], + ['2438', ['2438', false]], + ['2439', ['2439', false]], + ['2440', ['2440', false]], + ['2441', ['2441', false]], + ['2442', ['2442', false]], + ['2443', ['2443', false]], + ['2444', ['2444', false]], + ['2445', ['2445', false]], + ['2446', ['2446', false]], + ['2447', ['2447', false]], + ['2448', ['2448', false]], + ['2449', ['2449', false]], + ['2450', ['2450', false]], + ['2451', ['2451', false]], + ['2452', ['2452', false]], + ['2453', ['2453', false]], + ['2454', ['2454', false]], + ['2455', ['2455', false]], + ['2456', ['2456', false]], + ['2457', ['2457', false]], + ['2458', ['2458', false]], + ['2459', ['2459', false]], + ['2460', ['2460', false]], + ['2461', ['2461', false]], + ['2462', ['2462', false]], + ['2463', ['2463', false]], + ['2464', ['2464', false]], + ['2465', ['2465', false]], + ['2466', ['2466', false]], + ['2467', ['2467', false]], + ['2468', ['2468', false]], + ['2469', ['2469', false]], + ['2470', ['2470', false]], + ['2471', ['2471', false]], + ['2472', ['2472', false]], + ['2473', ['2473', false]], + ['2474', ['2474', false]], + ['2475', ['2475', false]], + ['2476', ['2476', false]], + ['2477', ['2477', false]], + ['2478', ['2478', false]], + ['2479', ['2479', false]], + ['2480', ['2480', false]], + ['2481', ['2481', false]], + ['2482', ['2482', false]], + ['2483', ['2483', false]], + ['2484', ['2484', false]], + ['2485', ['2485', false]], + ['2486', ['2486', false]], + ['2487', ['2487', false]], + ['2488', ['2488', false]], + ['2489', ['2489', false]], + ['2490', ['2490', false]], + ['2491', ['2491', false]], + ['2492', ['2492', false]], + ['2493', ['2493', false]], + ['2494', ['2494', false]], + ['2495', ['2495', false]], + ['2496', ['2496', false]], + ['2497', ['2497', false]], + ['2498', ['2498', false]], + ['2499', ['2499', false]], + ['2500', ['2500', false]], + ['2501', ['2501', false]], + ['2502', ['2502', false]], + ['2503', ['2503', false]], + ['2504', ['2504', false]], + ['2505', ['2505', false]], + ['2506', ['2506', false]], + ['2507', ['2507', false]], + ['2508', ['2508', false]], + ['2509', ['2509', false]], + ['2510', ['2510', false]], + ['2511', ['2511', false]], + ['2512', ['2512', false]], + ['2513', ['2513', false]], + ['2514', ['2514', false]], + ['2515', ['2515', false]], + ['2516', ['2516', false]], + ['2517', ['2517', false]], + ['2518', ['2518', false]], + ['2519', ['2519', false]], + ['2520', ['2520', false]], + ['2521', ['2521', false]], + ['2522', ['2522', false]], + ['2523', ['2523', false]], + ['2524', ['2524', false]], + ['2525', ['2525', false]], + ['2526', ['2526', false]], + ['2527', ['2527', false]], + ['2528', ['2528', false]], + ['2529', ['2529', false]], + ['2530', ['2530', false]], + ['2531', ['2531', false]], + ['2532', ['2532', false]], + ['2533', ['2533', false]], + ['2534', ['2534', false]], + ['2535', ['2535', false]], + ['2536', ['2536', false]], + ['2537', ['2537', false]], + ['2538', ['2538', false]], + ['2539', ['2539', false]], + ['2540', ['2540', false]], + ['2541', ['2541', false]], + ['2542', ['2542', false]], + ['2543', ['2543', false]], + ['2544', ['2544', false]], + ['2545', ['2545', false]], + ['2546', ['2546', false]], + ['2547', ['2547', false]], + ['2548', ['2548', false]], + ['2549', ['2549', false]], + ['2550', ['2550', false]], + ['2551', ['2551', false]], + ['2552', ['2552', false]], + ['2553', ['2553', false]], + ['2554', ['2554', false]], + ['2555', ['2555', false]], + ['2556', ['2556', false]], + ['2557', ['2557', false]], + ['2558', ['2558', false]], + ['2559', ['2559', false]], + ['2560', ['2560', false]], + ['2561', ['2561', false]], + ['2562', ['2562', false]], + ['2563', ['2563', false]], + ['2564', ['2564', false]], + ['2565', ['2565', false]], + ['2566', ['2566', false]], + ['2567', ['2567', false]], + ['2568', ['2568', false]], + ['2569', ['2569', false]], + ['2570', ['2570', false]], + ['2571', ['2571', false]], + ['2572', ['2572', false]], + ['2573', ['2573', false]], + ['2574', ['2574', false]], + ['2575', ['2575', false]], + ['2576', ['2576', false]], + ['2577', ['2577', false]], + ['2578', ['2578', false]], + ['2579', ['2579', false]], + ['2580', ['2580', false]], + ['2581', ['2581', false]], + ['2582', ['2582', false]], + ['2583', ['2583', false]], + ['2584', ['2584', false]], + ['2585', ['2585', false]], + ['2586', ['2586', false]], + ['2587', ['2587', false]], + ['2588', ['2588', false]], + ['2589', ['2589', false]], + ['2590', ['2590', false]], + ['2591', ['2591', false]], + ['2592', ['2592', false]], + ['2593', ['2593', false]], + ['2594', ['2594', false]], + ['2595', ['2595', false]], + ['2596', ['2596', false]], + ['2597', ['2597', false]], + ['2598', ['2598', false]], + ['2599', ['2599', false]], + ['2600', ['2600', false]], + ['2601', ['2601', false]], + ['2602', ['2602', false]], + ['2603', ['2603', false]], + ['2604', ['2604', false]], + ['2605', ['2605', false]], + ['2606', ['2606', false]], + ['2607', ['2607', false]], + ['2608', ['2608', false]], + ['2609', ['2609', false]], + ['2610', ['2610', false]], + ['2611', ['2611', false]], + ['2612', ['2612', false]], + ['2613', ['2613', false]], + ['2614', ['2614', false]], + ['2615', ['2615', false]], + ['2616', ['2616', false]], + ['2617', ['2617', false]], + ['2618', ['2618', false]], + ['2619', ['2619', false]], + ['2620', ['2620', false]], + ['2621', ['2621', false]], + ['2622', ['2622', false]], + ['2623', ['2623', false]], + ['2624', ['2624', false]], + ['2625', ['2625', false]], + ['2626', ['2626', false]], + ['2627', ['2627', false]], + ['2628', ['2628', false]], + ['2629', ['2629', false]], + ['2630', ['2630', false]], + ['2631', ['2631', false]], + ['2632', ['2632', false]], + ['2633', ['2633', false]], + ['2634', ['2634', false]], + ['2635', ['2635', false]], + ['2636', ['2636', false]], + ['2637', ['2637', false]], + ['2638', ['2638', false]], + ['2639', ['2639', false]], + ['2640', ['2640', false]], + ['2641', ['2641', false]], + ['2642', ['2642', false]], + ['2643', ['2643', false]], + ['2644', ['2644', false]], + ['2645', ['2645', false]], + ['2646', ['2646', false]], + ['2647', ['2647', false]], + ['2648', ['2648', false]], + ['2649', ['2649', false]], + ['2650', ['2650', false]], + ['2651', ['2651', false]], + ['2652', ['2652', false]], + ['2653', ['2653', false]], + ['2654', ['2654', false]], + ['2655', ['2655', false]], + ['2656', ['2656', false]], + ['2657', ['2657', false]], + ['2658', ['2658', false]], + ['2659', ['2659', false]], + ['2660', ['2660', false]], + ['2661', ['2661', false]], + ['2662', ['2662', false]], + ['2663', ['2663', false]], + ['2664', ['2664', false]], + ['2665', ['2665', false]], + ['2666', ['2666', false]], + ['2667', ['2667', false]], + ['2668', ['2668', false]], + ['2669', ['2669', false]], + ['2670', ['2670', false]], + ['2671', ['2671', false]], + ['2672', ['2672', false]], + ['2673', ['2673', false]], + ['2674', ['2674', false]], + ['2675', ['2675', false]], + ['2676', ['2676', false]], + ['2677', ['2677', false]], + ['2678', ['2678', false]], + ['2679', ['2679', false]], + ['2680', ['2680', false]], + ['2681', ['2681', false]], + ['2682', ['2682', false]], + ['2683', ['2683', false]], + ['2684', ['2684', false]], + ['2685', ['2685', false]], + ['2686', ['2686', false]], + ['2687', ['2687', false]], + ['2688', ['2688', false]], + ['2689', ['2689', false]], + ['2690', ['2690', false]], + ['2691', ['2691', false]], + ['2692', ['2692', false]], + ['2693', ['2693', false]], + ['2694', ['2694', false]], + ['2695', ['2695', false]], + ['2696', ['2696', false]], + ['2697', ['2697', false]], + ['2698', ['2698', false]], + ['2699', ['2699', false]], + ['2700', ['2700', false]], + ['2701', ['2701', false]], + ['2702', ['2702', false]], + ['2703', ['2703', false]], + ['2704', ['2704', false]], + ['2705', ['2705', false]], + ['2706', ['2706', false]], + ['2707', ['2707', false]], + ['2708', ['2708', false]], + ['2709', ['2709', false]], + ['2710', ['2710', false]], + ['2711', ['2711', false]], + ['2712', ['2712', false]], + ['2713', ['2713', false]], + ['2714', ['2714', false]], + ['2715', ['2715', false]], + ['2716', ['2716', false]], + ['2717', ['2717', false]], + ['2718', ['2718', false]], + ['2719', ['2719', false]], + ['2720', ['2720', false]], + ['2721', ['2721', false]], + ['2722', ['2722', false]], + ['2723', ['2723', false]], + ['2724', ['2724', false]], + ['2725', ['2725', false]], + ['2726', ['2726', false]], + ['2727', ['2727', false]], + ['2728', ['2728', false]], + ['2729', ['2729', false]], + ['2730', ['2730', false]], + ['2731', ['2731', false]], + ['2732', ['2732', false]], + ['2733', ['2733', false]], + ['2734', ['2734', false]], + ['2735', ['2735', false]], + ['2736', ['2736', false]], + ['2737', ['2737', false]], + ['2738', ['2738', false]], + ['2739', ['2739', false]], + ['2740', ['2740', false]], + ['2741', ['2741', false]], + ['2742', ['2742', false]], + ['2743', ['2743', false]], + ['2744', ['2744', false]], + ['2745', ['2745', false]], + ['2746', ['2746', false]], + ['2747', ['2747', false]], + ['2748', ['2748', false]], + ['2749', ['2749', false]], + ['2750', ['2750', false]], + ['2751', ['2751', false]], + ['2752', ['2752', false]], + ['2753', ['2753', false]], + ['2754', ['2754', false]], + ['2755', ['2755', false]], + ['2756', ['2756', false]], + ['2757', ['2757', false]], + ['2758', ['2758', false]], + ['2759', ['2759', false]], + ['2760', ['2760', false]], + ['2761', ['2761', false]], + ['2762', ['2762', false]], + ['2763', ['2763', false]], + ['2764', ['2764', false]], + ['2765', ['2765', false]], + ['2766', ['2766', false]], + ['2767', ['2767', false]], + ['2768', ['2768', false]], + ['2769', ['2769', false]], + ['2770', ['2770', false]], + ['2771', ['2771', false]], + ['2772', ['2772', false]], + ['2773', ['2773', false]], + ['2774', ['2774', false]], + ['2775', ['2775', false]], + ['2776', ['2776', false]], + ['2777', ['2777', false]], + ['2778', ['2778', false]], + ['2779', ['2779', false]], + ['2780', ['2780', false]], + ['2781', ['2781', false]], + ['2782', ['2782', false]], + ['2783', ['2783', false]], + ['2784', ['2784', false]], + ['2785', ['2785', false]], + ['2786', ['2786', false]], + ['2787', ['2787', false]], + ['2788', ['2788', false]], + ['2789', ['2789', false]], + ['2790', ['2790', false]], + ['2791', ['2791', false]], + ['2792', ['2792', false]], + ['2793', ['2793', false]], + ['2794', ['2794', false]], + ['2795', ['2795', false]], + ['2796', ['2796', false]], + ['2797', ['2797', false]], + ['2798', ['2798', false]], + ['2799', ['2799', false]], + ['2800', ['2800', false]], + ['2801', ['2801', false]], + ['2802', ['2802', false]], + ['2803', ['2803', false]], + ['2804', ['2804', false]], + ['2805', ['2805', false]], + ['2806', ['2806', false]], + ['2807', ['2807', false]], + ['2808', ['2808', false]], + ['2809', ['2809', false]], + ['2810', ['2810', false]], + ['2811', ['2811', false]], + ['2812', ['2812', false]], + ['2813', ['2813', false]], + ['2814', ['2814', false]], + ['2815', ['2815', false]], + ['2816', ['2816', false]], + ['2817', ['2817', false]], + ['2818', ['2818', false]], + ['2819', ['2819', false]], + ['2820', ['2820', false]], + ['2821', ['2821', false]], + ['2822', ['2822', false]], + ['2823', ['2823', false]], + ['2824', ['2824', false]], + ['2825', ['2825', false]], + ['2826', ['2826', false]], + ['2827', ['2827', false]], + ['2828', ['2828', false]], + ['2829', ['2829', false]], + ['2830', ['2830', false]], + ['2831', ['2831', false]], + ['2832', ['2832', false]], + ['2833', ['2833', false]], + ['2834', ['2834', false]], + ['2835', ['2835', false]], + ['2836', ['2836', false]], + ['2837', ['2837', false]], + ['2838', ['2838', false]], + ['2839', ['2839', false]], + ['2840', ['2840', false]], + ['2841', ['2841', false]], + ['2842', ['2842', false]], + ['2843', ['2843', false]], + ['2844', ['2844', false]], + ['2845', ['2845', false]], + ['2846', ['2846', false]], + ['2847', ['2847', false]], + ['2848', ['2848', false]], + ['2849', ['2849', false]], + ['2850', ['2850', false]], + ['2851', ['2851', false]], + ['2852', ['2852', false]], + ['2853', ['2853', false]], + ['2854', ['2854', false]], + ['2855', ['2855', false]], + ['2856', ['2856', false]], + ['2857', ['2857', false]], + ['2858', ['2858', false]], + ['2859', ['2859', false]], + ['2860', ['2860', false]], + ['2861', ['2861', false]], + ['2862', ['2862', false]], + ['2863', ['2863', false]], + ['2864', ['2864', false]], + ['2865', ['2865', false]], + ['2866', ['2866', false]], + ['2867', ['2867', false]], + ['2868', ['2868', false]], + ['2869', ['2869', false]], + ['2870', ['2870', false]], + ['2871', ['2871', false]], + ['2872', ['2872', false]], + ['2873', ['2873', false]], + ['2874', ['2874', false]], + ['2875', ['2875', false]], + ['2876', ['2876', false]], + ['2877', ['2877', false]], + ['2878', ['2878', false]], + ['2879', ['2879', false]], + ['2880', ['2880', false]], + ['2881', ['2881', false]], + ['2882', ['2882', false]], + ['2883', ['2883', false]], + ['2884', ['2884', false]], + ['2885', ['2885', false]], + ['2886', ['2886', false]], + ['2887', ['2887', false]], + ['2888', ['2888', false]], + ['2889', ['2889', false]], + ['2890', ['2890', false]], + ['2891', ['2891', false]], + ['2892', ['2892', false]], + ['2893', ['2893', false]], + ['2894', ['2894', false]], + ['2895', ['2895', false]], + ['2896', ['2896', false]], + ['2897', ['2897', false]], + ['2898', ['2898', false]], + ['2899', ['2899', false]], + ['2900', ['2900', false]], + ['2901', ['2901', false]], + ['2902', ['2902', false]], + ['2903', ['2903', false]], + ['2904', ['2904', false]], + ['2905', ['2905', false]], + ['2906', ['2906', false]], + ['2907', ['2907', false]], + ['2908', ['2908', false]], + ['2909', ['2909', false]], + ['2910', ['2910', false]], + ['2911', ['2911', false]], + ['2912', ['2912', false]], + ['2913', ['2913', false]], + ['2914', ['2914', false]], + ['2915', ['2915', false]], + ['2916', ['2916', false]], + ['2917', ['2917', false]], + ['2918', ['2918', false]], + ['2919', ['2919', false]], + ['2920', ['2920', false]], + ['2921', ['2921', false]], + ['2922', ['2922', false]], + ['2923', ['2923', false]], + ['2924', ['2924', false]], + ['2925', ['2925', false]], + ['2926', ['2926', false]], + ['2927', ['2927', false]], + ['2928', ['2928', false]], + ['2929', ['2929', false]], + ['2930', ['2930', false]], + ['2931', ['2931', false]], + ['2932', ['2932', false]], + ['2933', ['2933', false]], + ['2934', ['2934', false]], + ['2935', ['2935', false]], + ['2936', ['2936', false]], + ['2937', ['2937', false]], + ['2938', ['2938', false]], + ['2939', ['2939', false]], + ['2940', ['2940', false]], + ['2941', ['2941', false]], + ['2942', ['2942', false]], + ['2943', ['2943', false]], + ['2944', ['2944', false]], + ['2945', ['2945', false]], + ['2946', ['2946', false]], + ['2947', ['2947', false]], + ['2948', ['2948', false]], + ['2949', ['2949', false]], + ['2950', ['2950', false]], + ['2951', ['2951', false]], + ['2952', ['2952', false]], + ['2953', ['2953', false]], + ['2954', ['2954', false]], + ['2955', ['2955', false]], + ['2956', ['2956', false]], + ['2957', ['2957', false]], + ['2958', ['2958', false]], + ['2959', ['2959', false]], + ['2960', ['2960', false]], + ['2961', ['2961', false]], + ['2962', ['2962', false]], + ['2963', ['2963', false]], + ['2964', ['2964', false]], + ['2965', ['2965', false]], + ['2966', ['2966', false]], + ['2967', ['2967', false]], + ['2968', ['2968', false]], + ['2969', ['2969', false]], + ['2970', ['2970', false]], + ['2971', ['2971', false]], + ['2972', ['2972', false]], + ['2973', ['2973', false]], + ['2974', ['2974', false]], + ['2975', ['2975', false]], + ['2976', ['2976', false]], + ['2977', ['2977', false]], + ['2978', ['2978', false]], + ['2979', ['2979', false]], + ['2980', ['2980', false]], + ['2981', ['2981', false]], + ['2982', ['2982', false]], + ['2983', ['2983', false]], + ['2984', ['2984', false]], + ['2985', ['2985', false]], + ['2986', ['2986', false]], + ['2987', ['2987', false]], + ['2988', ['2988', false]], + ['2989', ['2989', false]], + ['2990', ['2990', false]], + ['2991', ['2991', false]], + ['2992', ['2992', false]], + ['2993', ['2993', false]], + ['2994', ['2994', false]], + ['2995', ['2995', false]], + ['2996', ['2996', false]], + ['2997', ['2997', false]], + ['2998', ['2998', false]], + ['2999', ['2999', false]], + ['3000', ['3000', false]], + ['3001', ['3001', false]], + ['3002', ['3002', false]], + ['3003', ['3003', false]], + ['3004', ['3004', false]], + ['3005', ['3005', false]], + ['3006', ['3006', false]], + ['3007', ['3007', false]], + ['3008', ['3008', false]], + ['3009', ['3009', false]], + ['3010', ['3010', false]], + ['3011', ['3011', false]], + ['3012', ['3012', false]], + ['3013', ['3013', false]], + ['3014', ['3014', false]], + ['3015', ['3015', false]], + ['3016', ['3016', false]], + ['3017', ['3017', false]], + ['3018', ['3018', false]], + ['3019', ['3019', false]], + ['3020', ['3020', false]], + ['3021', ['3021', false]], + ['3022', ['3022', false]], + ['3023', ['3023', false]], + ['3024', ['3024', false]], + ['3025', ['3025', false]], + ['3026', ['3026', false]], + ['3027', ['3027', false]], + ['3028', ['3028', false]], + ['3029', ['3029', false]], + ['3030', ['3030', false]], + ['3031', ['3031', false]], + ['3032', ['3032', false]], + ['3033', ['3033', false]], + ['3034', ['3034', false]], + ['3035', ['3035', false]], + ['3036', ['3036', false]], + ['3037', ['3037', false]], + ['3038', ['3038', false]], + ['3039', ['3039', false]], + ['3040', ['3040', false]], + ['3041', ['3041', false]], + ['3042', ['3042', false]], + ['3043', ['3043', false]], + ['3044', ['3044', false]], + ['3045', ['3045', false]], + ['3046', ['3046', false]], + ['3047', ['3047', false]], + ['3048', ['3048', false]], + ['3049', ['3049', false]], + ['3050', ['3050', false]], + ['3051', ['3051', false]], + ['3052', ['3052', false]], + ['3053', ['3053', false]], + ['3054', ['3054', false]], + ['3055', ['3055', false]], + ['3056', ['3056', false]], + ['3057', ['3057', false]], + ['3058', ['3058', false]], + ['3059', ['3059', false]], + ['3060', ['3060', false]], + ['3061', ['3061', false]], + ['3062', ['3062', false]], + ['3063', ['3063', false]], + ['3064', ['3064', false]], + ['3065', ['3065', false]], + ['3066', ['3066', false]], + ['3067', ['3067', false]], + ['3068', ['3068', false]], + ['3069', ['3069', false]], + ['3070', ['3070', false]], + ['3071', ['3071', false]], + ['3072', ['3072', false]], + ['3073', ['3073', false]], + ['3074', ['3074', false]], + ['3075', ['3075', false]], + ['3076', ['3076', false]], + ['3077', ['3077', false]], + ['3078', ['3078', false]], + ['3079', ['3079', false]], + ['3080', ['3080', false]], + ['3081', ['3081', false]], + ['3082', ['3082', false]], + ['3083', ['3083', false]], + ['3084', ['3084', false]], + ['3085', ['3085', false]], + ['3086', ['3086', false]], + ['3087', ['3087', false]], + ['3088', ['3088', false]], + ['3089', ['3089', false]], + ['3090', ['3090', false]], + ['3091', ['3091', false]], + ['3092', ['3092', false]], + ['3093', ['3093', false]], + ['3094', ['3094', false]], + ['3095', ['3095', false]], + ['3096', ['3096', false]], + ['3097', ['3097', false]], + ['3098', ['3098', false]], + ['3099', ['3099', false]], + ['3100', ['3100', false]], + ['3101', ['3101', false]], + ['3102', ['3102', false]], + ['3103', ['3103', false]], + ['3104', ['3104', false]], + ['3105', ['3105', false]], + ['3106', ['3106', false]], + ['3107', ['3107', false]], + ['3108', ['3108', false]], + ['3109', ['3109', false]], + ['3110', ['3110', false]], + ['3111', ['3111', false]], + ['3112', ['3112', false]], + ['3113', ['3113', false]], + ['3114', ['3114', false]], + ['3115', ['3115', false]], + ['3116', ['3116', false]], + ['3117', ['3117', false]], + ['3118', ['3118', false]], + ['3119', ['3119', false]], + ['3120', ['3120', false]], + ['3121', ['3121', false]], + ['3122', ['3122', false]], + ['3123', ['3123', false]], + ['3124', ['3124', false]], + ['3125', ['3125', false]], + ['3126', ['3126', false]], + ['3127', ['3127', false]], + ['3128', ['3128', false]], + ['3129', ['3129', false]], + ['3130', ['3130', false]], + ['3131', ['3131', false]], + ['3132', ['3132', false]], + ['3133', ['3133', false]], + ['3134', ['3134', false]], + ['3135', ['3135', false]], + ['3136', ['3136', false]], + ['3137', ['3137', false]], + ['3138', ['3138', false]], + ['3139', ['3139', false]], + ['3140', ['3140', false]], + ['3141', ['3141', false]], + ['3142', ['3142', false]], + ['3143', ['3143', false]], + ['3144', ['3144', false]], + ['3145', ['3145', false]], + ['3146', ['3146', false]], + ['3147', ['3147', false]], + ['3148', ['3148', false]], + ['3149', ['3149', false]], + ['3150', ['3150', false]], + ['3151', ['3151', false]], + ['3152', ['3152', false]], + ['3153', ['3153', false]], + ['3154', ['3154', false]], + ['3155', ['3155', false]], + ['3156', ['3156', false]], + ['3157', ['3157', false]], + ['3158', ['3158', false]], + ['3159', ['3159', false]], + ['3160', ['3160', false]], + ['3161', ['3161', false]], + ['3162', ['3162', false]], + ['3163', ['3163', false]], + ['3164', ['3164', false]], + ['3165', ['3165', false]], + ['3166', ['3166', false]], + ['3167', ['3167', false]], + ['3168', ['3168', false]], + ['3169', ['3169', false]], + ['3170', ['3170', false]], + ['3171', ['3171', false]], + ['3172', ['3172', false]], + ['3173', ['3173', false]], + ['3174', ['3174', false]], + ['3175', ['3175', false]], + ['3176', ['3176', false]], + ['3177', ['3177', false]], + ['3178', ['3178', false]], + ['3179', ['3179', false]], + ['3180', ['3180', false]], + ['3181', ['3181', false]], + ['3182', ['3182', false]], + ['3183', ['3183', false]], + ['3184', ['3184', false]], + ['3185', ['3185', false]], + ['3186', ['3186', false]], + ['3187', ['3187', false]], + ['3188', ['3188', false]], + ['3189', ['3189', false]], + ['3190', ['3190', false]], + ['3191', ['3191', false]], + ['3192', ['3192', false]], + ['3193', ['3193', false]], + ['3194', ['3194', false]], + ['3195', ['3195', false]], + ['3196', ['3196', false]], + ['3197', ['3197', false]], + ['3198', ['3198', false]], + ['3199', ['3199', false]], + ['3200', ['3200', false]], + ['3201', ['3201', false]], + ['3202', ['3202', false]], + ['3203', ['3203', false]], + ['3204', ['3204', false]], + ['3205', ['3205', false]], + ['3206', ['3206', false]], + ['3207', ['3207', false]], + ['3208', ['3208', false]], + ['3209', ['3209', false]], + ['3210', ['3210', false]], + ['3211', ['3211', false]], + ['3212', ['3212', false]], + ['3213', ['3213', false]], + ['3214', ['3214', false]], + ['3215', ['3215', false]], + ['3216', ['3216', false]], + ['3217', ['3217', false]], + ['3218', ['3218', false]], + ['3219', ['3219', false]], + ['3220', ['3220', false]], + ['3221', ['3221', false]], + ['3222', ['3222', false]], + ['3223', ['3223', false]], + ['3224', ['3224', false]], + ['3225', ['3225', false]], + ['3226', ['3226', false]], + ['3227', ['3227', false]], + ['3228', ['3228', false]], + ['3229', ['3229', false]], + ['3230', ['3230', false]], + ['3231', ['3231', false]], + ['3232', ['3232', false]], + ['3233', ['3233', false]], + ['3234', ['3234', false]], + ['3235', ['3235', false]], + ['3236', ['3236', false]], + ['3237', ['3237', false]], + ['3238', ['3238', false]], + ['3239', ['3239', false]], + ['3240', ['3240', false]], + ['3241', ['3241', false]], + ['3242', ['3242', false]], + ['3243', ['3243', false]], + ['3244', ['3244', false]], + ['3245', ['3245', false]], + ['3246', ['3246', false]], + ['3247', ['3247', false]], + ['3248', ['3248', false]], + ['3249', ['3249', false]], + ['3250', ['3250', false]], + ['3251', ['3251', false]], + ['3252', ['3252', false]], + ['3253', ['3253', false]], + ['3254', ['3254', false]], + ['3255', ['3255', false]], + ['3256', ['3256', false]], + ['3257', ['3257', false]], + ['3258', ['3258', false]], + ['3259', ['3259', false]], + ['3260', ['3260', false]], + ['3261', ['3261', false]], + ['3262', ['3262', false]], + ['3263', ['3263', false]], + ['3264', ['3264', false]], + ['3265', ['3265', false]], + ['3266', ['3266', false]], + ['3267', ['3267', false]], + ['3268', ['3268', false]], + ['3269', ['3269', false]], + ['3270', ['3270', false]], + ['3271', ['3271', false]], + ['3272', ['3272', false]], + ['3273', ['3273', false]], + ['3274', ['3274', false]], + ['3275', ['3275', false]], + ['3276', ['3276', false]], + ['3277', ['3277', false]], + ['3278', ['3278', false]], + ['3279', ['3279', false]], + ['3280', ['3280', false]], + ['3281', ['3281', false]], + ['3282', ['3282', false]], + ['3283', ['3283', false]], + ['3284', ['3284', false]], + ['3285', ['3285', false]], + ['3286', ['3286', false]], + ['3287', ['3287', false]], + ['3288', ['3288', false]], + ['3289', ['3289', false]], + ['3290', ['3290', false]], + ['3291', ['3291', false]], + ['3292', ['3292', false]], + ['3293', ['3293', false]], + ['3294', ['3294', false]], + ['3295', ['3295', false]], + ['3296', ['3296', false]], + ['3297', ['3297', false]], + ['3298', ['3298', false]], + ['3299', ['3299', false]], + ['3300', ['3300', false]], + ['3301', ['3301', false]], + ['3302', ['3302', false]], + ['3303', ['3303', false]], + ['3304', ['3304', false]], + ['3305', ['3305', false]], + ['3306', ['3306', false]], + ['3307', ['3307', false]], + ['3308', ['3308', false]], + ['3309', ['3309', false]], + ['3310', ['3310', false]], + ['3311', ['3311', false]], + ['3312', ['3312', false]], + ['3313', ['3313', false]], + ['3314', ['3314', false]], + ['3315', ['3315', false]], + ['3316', ['3316', false]], + ['3317', ['3317', false]], + ['3318', ['3318', false]], + ['3319', ['3319', false]], + ['3320', ['3320', false]], + ['3321', ['3321', false]], + ['3322', ['3322', false]], + ['3323', ['3323', false]], + ['3324', ['3324', false]], + ['3325', ['3325', false]], + ['3326', ['3326', false]], + ['3327', ['3327', false]], + ['3328', ['3328', false]], + ['3329', ['3329', false]], + ['3330', ['3330', false]], + ['3331', ['3331', false]], + ['3332', ['3332', false]], + ['3333', ['3333', false]], + ['3334', ['3334', false]], + ['3335', ['3335', false]], + ['3336', ['3336', false]], + ['3337', ['3337', false]], + ['3338', ['3338', false]], + ['3339', ['3339', false]], + ['3340', ['3340', false]], + ['3341', ['3341', false]], + ['3342', ['3342', false]], + ['3343', ['3343', false]], + ['3344', ['3344', false]], + ['3345', ['3345', false]], + ['3346', ['3346', false]], + ['3347', ['3347', false]], + ['3348', ['3348', false]], + ['3349', ['3349', false]], + ['3350', ['3350', false]], + ['3351', ['3351', false]], + ['3352', ['3352', false]], + ['3353', ['3353', false]], + ['3354', ['3354', false]], + ['3355', ['3355', false]], + ['3356', ['3356', false]], + ['3357', ['3357', false]], + ['3358', ['3358', false]], + ['3359', ['3359', false]], + ['3360', ['3360', false]], + ['3361', ['3361', false]], + ['3362', ['3362', false]], + ['3363', ['3363', false]], + ['3364', ['3364', false]], + ['3365', ['3365', false]], + ['3366', ['3366', false]], + ['3367', ['3367', false]], + ['3368', ['3368', false]], + ['3369', ['3369', false]], + ['3370', ['3370', false]], + ['3371', ['3371', false]], + ['3372', ['3372', false]], + ['3373', ['3373', false]], + ['3374', ['3374', false]], + ['3375', ['3375', false]], + ['3376', ['3376', false]], + ['3377', ['3377', false]], + ['3378', ['3378', false]], + ['3379', ['3379', false]], + ['3380', ['3380', false]], + ['3381', ['3381', false]], + ['3382', ['3382', false]], + ['3383', ['3383', false]], + ['3384', ['3384', false]], + ['3385', ['3385', false]], + ['3386', ['3386', false]], + ['3387', ['3387', false]], + ['3388', ['3388', false]], + ['3389', ['3389', false]], + ['3390', ['3390', false]], + ['3391', ['3391', false]], + ['3392', ['3392', false]], + ['3393', ['3393', false]], + ['3394', ['3394', false]], + ['3395', ['3395', false]], + ['3396', ['3396', false]], + ['3397', ['3397', false]], + ['3398', ['3398', false]], + ['3399', ['3399', false]], + ['3400', ['3400', false]], + ['3401', ['3401', false]], + ['3402', ['3402', false]], + ['3403', ['3403', false]], + ['3404', ['3404', false]], + ['3405', ['3405', false]], + ['3406', ['3406', false]], + ['3407', ['3407', false]], + ['3408', ['3408', false]], + ['3409', ['3409', false]], + ['3410', ['3410', false]], + ['3411', ['3411', false]], + ['3412', ['3412', false]], + ['3413', ['3413', false]], + ['3414', ['3414', false]], + ['3415', ['3415', false]], + ['3416', ['3416', false]], + ['3417', ['3417', false]], + ['3418', ['3418', false]], + ['3419', ['3419', false]], + ['3420', ['3420', false]], + ['3421', ['3421', false]], + ['3422', ['3422', false]], + ['3423', ['3423', false]], + ['3424', ['3424', false]], + ['3425', ['3425', false]], + ['3426', ['3426', false]], + ['3427', ['3427', false]], + ['3428', ['3428', false]], + ['3429', ['3429', false]], + ['3430', ['3430', false]], + ['3431', ['3431', false]], + ['3432', ['3432', false]], + ['3433', ['3433', false]], + ['3434', ['3434', false]], + ['3435', ['3435', false]], + ['3436', ['3436', false]], + ['3437', ['3437', false]], + ['3438', ['3438', false]], + ['3439', ['3439', false]], + ['3440', ['3440', false]], + ['3441', ['3441', false]], + ['3442', ['3442', false]], + ['3443', ['3443', false]], + ['3444', ['3444', false]], + ['3445', ['3445', false]], + ['3446', ['3446', false]], + ['3447', ['3447', false]], + ['3448', ['3448', false]], + ['3449', ['3449', false]], + ['3450', ['3450', false]], + ['3451', ['3451', false]], + ['3452', ['3452', false]], + ['3453', ['3453', false]], + ['3454', ['3454', false]], + ['3455', ['3455', false]], + ['3456', ['3456', false]], + ['3457', ['3457', false]], + ['3458', ['3458', false]], + ['3459', ['3459', false]], + ['3460', ['3460', false]], + ['3461', ['3461', false]], + ['3462', ['3462', false]], + ['3463', ['3463', false]], + ['3464', ['3464', false]], + ['3465', ['3465', false]], + ['3466', ['3466', false]], + ['3467', ['3467', false]], + ['3468', ['3468', false]], + ['3469', ['3469', false]], + ['3470', ['3470', false]], + ['3471', ['3471', false]], + ['3472', ['3472', false]], + ['3473', ['3473', false]], + ['3474', ['3474', false]], + ['3475', ['3475', false]], + ['3476', ['3476', false]], + ['3477', ['3477', false]], + ['3478', ['3478', false]], + ['3479', ['3479', false]], + ['3480', ['3480', false]], + ['3481', ['3481', false]], + ['3482', ['3482', false]], + ['3483', ['3483', false]], + ['3484', ['3484', false]], + ['3485', ['3485', false]], + ['3486', ['3486', false]], + ['3487', ['3487', false]], + ['3488', ['3488', false]], + ['3489', ['3489', false]], + ['3490', ['3490', false]], + ['3491', ['3491', false]], + ['3492', ['3492', false]], + ['3493', ['3493', false]], + ['3494', ['3494', false]], + ['3495', ['3495', false]], + ['3496', ['3496', false]], + ['3497', ['3497', false]], + ['3498', ['3498', false]], + ['3499', ['3499', false]], + ['3500', ['3500', false]], + ['3501', ['3501', false]], + ['3502', ['3502', false]], + ['3503', ['3503', false]], + ['3504', ['3504', false]], + ['3505', ['3505', false]], + ['3506', ['3506', false]], + ['3507', ['3507', false]], + ['3508', ['3508', false]], + ['3509', ['3509', false]], + ['3510', ['3510', false]], + ['3511', ['3511', false]], + ['3512', ['3512', false]], + ['3513', ['3513', false]], + ['3514', ['3514', false]], + ['3515', ['3515', false]], + ['3516', ['3516', false]], + ['3517', ['3517', false]], + ['3518', ['3518', false]], + ['3519', ['3519', false]], + ['3520', ['3520', false]], + ['3521', ['3521', false]], + ['3522', ['3522', false]], + ['3523', ['3523', false]], + ['3524', ['3524', false]], + ['3525', ['3525', false]], + ['3526', ['3526', false]], + ['3527', ['3527', false]], + ['3528', ['3528', false]], + ['3529', ['3529', false]], + ['3530', ['3530', false]], + ['3531', ['3531', false]], + ['3532', ['3532', false]], + ['3533', ['3533', false]], + ['3534', ['3534', false]], + ['3535', ['3535', false]], + ['3536', ['3536', false]], + ['3537', ['3537', false]], + ['3538', ['3538', false]], + ['3539', ['3539', false]], + ['3540', ['3540', false]], + ['3541', ['3541', false]], + ['3542', ['3542', false]], + ['3543', ['3543', false]], + ['3544', ['3544', false]], + ['3545', ['3545', false]], + ['3546', ['3546', false]], + ['3547', ['3547', false]], + ['3548', ['3548', false]], + ['3549', ['3549', false]], + ['3550', ['3550', false]], + ['3551', ['3551', false]], + ['3552', ['3552', false]], + ['3553', ['3553', false]], + ['3554', ['3554', false]], + ['3555', ['3555', false]], + ['3556', ['3556', false]], + ['3557', ['3557', false]], + ['3558', ['3558', false]], + ['3559', ['3559', false]], + ['3560', ['3560', false]], + ['3561', ['3561', false]], + ['3562', ['3562', false]], + ['3563', ['3563', false]], + ['3564', ['3564', false]], + ['3565', ['3565', false]], + ['3566', ['3566', false]], + ['3567', ['3567', false]], + ['3568', ['3568', false]], + ['3569', ['3569', false]], + ['3570', ['3570', false]], + ['3571', ['3571', false]], + ['3572', ['3572', false]], + ['3573', ['3573', false]], + ['3574', ['3574', false]], + ['3575', ['3575', false]], + ['3576', ['3576', false]], + ['3577', ['3577', false]], + ['3578', ['3578', false]], + ['3579', ['3579', false]], + ['3580', ['3580', false]], + ['3581', ['3581', false]], + ['3582', ['3582', false]], + ['3583', ['3583', false]], + ['3584', ['3584', false]], + ['3585', ['3585', false]], + ['3586', ['3586', false]], + ['3587', ['3587', false]], + ['3588', ['3588', false]], + ['3589', ['3589', false]], + ['3590', ['3590', false]], + ['3591', ['3591', false]], + ['3592', ['3592', false]], + ['3593', ['3593', false]], + ['3594', ['3594', false]], + ['3595', ['3595', false]], + ['3596', ['3596', false]], + ['3597', ['3597', false]], + ['3598', ['3598', false]], + ['3599', ['3599', false]], + ['3600', ['3600', false]], + ['3601', ['3601', false]], + ['3602', ['3602', false]], + ['3603', ['3603', false]], + ['3604', ['3604', false]], + ['3605', ['3605', false]], + ['3606', ['3606', false]], + ['3607', ['3607', false]], + ['3608', ['3608', false]], + ['3609', ['3609', false]], + ['3610', ['3610', false]], + ['3611', ['3611', false]], + ['3612', ['3612', false]], + ['3613', ['3613', false]], + ['3614', ['3614', false]], + ['3615', ['3615', false]], + ['3616', ['3616', false]], + ['3617', ['3617', false]], + ['3618', ['3618', false]], + ['3619', ['3619', false]], + ['3620', ['3620', false]], + ['3621', ['3621', false]], + ['3622', ['3622', false]], + ['3623', ['3623', false]], + ['3624', ['3624', false]], + ['3625', ['3625', false]], + ['3626', ['3626', false]], + ['3627', ['3627', false]], + ['3628', ['3628', false]], + ['3629', ['3629', false]], + ['3630', ['3630', false]], + ['3631', ['3631', false]], + ['3632', ['3632', false]], + ['3633', ['3633', false]], + ['3634', ['3634', false]], + ['3635', ['3635', false]], + ['3636', ['3636', false]], + ['3637', ['3637', false]], + ['3638', ['3638', false]], + ['3639', ['3639', false]], + ['3640', ['3640', false]], + ['3641', ['3641', false]], + ['3642', ['3642', false]], + ['3643', ['3643', false]], + ['3644', ['3644', false]], + ['3645', ['3645', false]], + ['3646', ['3646', false]], + ['3647', ['3647', false]], + ['3648', ['3648', false]], + ['3649', ['3649', false]], + ['3650', ['3650', false]], + ['3651', ['3651', false]], + ['3652', ['3652', false]], + ['3653', ['3653', false]], + ['3654', ['3654', false]], + ['3655', ['3655', false]], + ['3656', ['3656', false]], + ['3657', ['3657', false]], + ['3658', ['3658', false]], + ['3659', ['3659', false]], + ['3660', ['3660', false]], + ['3661', ['3661', false]], + ['3662', ['3662', false]], + ['3663', ['3663', false]], + ['3664', ['3664', false]], + ['3665', ['3665', false]], + ['3666', ['3666', false]], + ['3667', ['3667', false]], + ['3668', ['3668', false]], + ['3669', ['3669', false]], + ['3670', ['3670', false]], + ['3671', ['3671', false]], + ['3672', ['3672', false]], + ['3673', ['3673', false]], + ['3674', ['3674', false]], + ['3675', ['3675', false]], + ['3676', ['3676', false]], + ['3677', ['3677', false]], + ['3678', ['3678', false]], + ['3679', ['3679', false]], + ['3680', ['3680', false]], + ['3681', ['3681', false]], + ['3682', ['3682', false]], + ['3683', ['3683', false]], + ['3684', ['3684', false]], + ['3685', ['3685', false]], + ['3686', ['3686', false]], + ['3687', ['3687', false]], + ['3688', ['3688', false]], + ['3689', ['3689', false]], + ['3690', ['3690', false]], + ['3691', ['3691', false]], + ['3692', ['3692', false]], + ['3693', ['3693', false]], + ['3694', ['3694', false]], + ['3695', ['3695', false]], + ['3696', ['3696', false]], + ['3697', ['3697', false]], + ['3698', ['3698', false]], + ['3699', ['3699', false]], + ['3700', ['3700', false]], + ['3701', ['3701', false]], + ['3702', ['3702', false]], + ['3703', ['3703', false]], + ['3704', ['3704', false]], + ['3705', ['3705', false]], + ['3706', ['3706', false]], + ['3707', ['3707', false]], + ['3708', ['3708', false]], + ['3709', ['3709', false]], + ['3710', ['3710', false]], + ['3711', ['3711', false]], + ['3712', ['3712', false]], + ['3713', ['3713', false]], + ['3714', ['3714', false]], + ['3715', ['3715', false]], + ['3716', ['3716', false]], + ['3717', ['3717', false]], + ['3718', ['3718', false]], + ['3719', ['3719', false]], + ['3720', ['3720', false]], + ['3721', ['3721', false]], + ['3722', ['3722', false]], + ['3723', ['3723', false]], + ['3724', ['3724', false]], + ['3725', ['3725', false]], + ['3726', ['3726', false]], + ['3727', ['3727', false]], + ['3728', ['3728', false]], + ['3729', ['3729', false]], + ['3730', ['3730', false]], + ['3731', ['3731', false]], + ['3732', ['3732', false]], + ['3733', ['3733', false]], + ['3734', ['3734', false]], + ['3735', ['3735', false]], + ['3736', ['3736', false]], + ['3737', ['3737', false]], + ['3738', ['3738', false]], + ['3739', ['3739', false]], + ['3740', ['3740', false]], + ['3741', ['3741', false]], + ['3742', ['3742', false]], + ['3743', ['3743', false]], + ['3744', ['3744', false]], + ['3745', ['3745', false]], + ['3746', ['3746', false]], + ['3747', ['3747', false]], + ['3748', ['3748', false]], + ['3749', ['3749', false]], + ['3750', ['3750', false]], + ['3751', ['3751', false]], + ['3752', ['3752', false]], + ['3753', ['3753', false]], + ['3754', ['3754', false]], + ['3755', ['3755', false]], + ['3756', ['3756', false]], + ['3757', ['3757', false]], + ['3758', ['3758', false]], + ['3759', ['3759', false]], + ['3760', ['3760', false]], + ['3761', ['3761', false]], + ['3762', ['3762', false]], + ['3763', ['3763', false]], + ['3764', ['3764', false]], + ['3765', ['3765', false]], + ['3766', ['3766', false]], + ['3767', ['3767', false]], + ['3768', ['3768', false]], + ['3769', ['3769', false]], + ['3770', ['3770', false]], + ['3771', ['3771', false]], + ['3772', ['3772', false]], + ['3773', ['3773', false]], + ['3774', ['3774', false]], + ['3775', ['3775', false]], + ['3776', ['3776', false]], + ['3777', ['3777', false]], + ['3778', ['3778', false]], + ['3779', ['3779', false]], + ['3780', ['3780', false]], + ['3781', ['3781', false]], + ['3782', ['3782', false]], + ['3783', ['3783', false]], + ['3784', ['3784', false]], + ['3785', ['3785', false]], + ['3786', ['3786', false]], + ['3787', ['3787', false]], + ['3788', ['3788', false]], + ['3789', ['3789', false]], + ['3790', ['3790', false]], + ['3791', ['3791', false]], + ['3792', ['3792', false]], + ['3793', ['3793', false]], + ['3794', ['3794', false]], + ['3795', ['3795', false]], + ['3796', ['3796', false]], + ['3797', ['3797', false]], + ['3798', ['3798', false]], + ['3799', ['3799', false]], + ['3800', ['3800', false]], + ['3801', ['3801', false]], + ['3802', ['3802', false]], + ['3803', ['3803', false]], + ['3804', ['3804', false]], + ['3805', ['3805', false]], + ['3806', ['3806', false]], + ['3807', ['3807', false]], + ['3808', ['3808', false]], + ['3809', ['3809', false]], + ['3810', ['3810', false]], + ['3811', ['3811', false]], + ['3812', ['3812', false]], + ['3813', ['3813', false]], + ['3814', ['3814', false]], + ['3815', ['3815', false]], + ['3816', ['3816', false]], + ['3817', ['3817', false]], + ['3818', ['3818', false]], + ['3819', ['3819', false]], + ['3820', ['3820', false]], + ['3821', ['3821', false]], + ['3822', ['3822', false]], + ['3823', ['3823', false]], + ['3824', ['3824', false]], + ['3825', ['3825', false]], + ['3826', ['3826', false]], + ['3827', ['3827', false]], + ['3828', ['3828', false]], + ['3829', ['3829', false]], + ['3830', ['3830', false]], + ['3831', ['3831', false]], + ['3832', ['3832', false]], + ['3833', ['3833', false]], + ['3834', ['3834', false]], + ['3835', ['3835', false]], + ['3836', ['3836', false]], + ['3837', ['3837', false]], + ['3838', ['3838', false]], + ['3839', ['3839', false]], + ['3840', ['3840', false]], + ['3841', ['3841', false]], + ['3842', ['3842', false]], + ['3843', ['3843', false]], + ['3844', ['3844', false]], + ['3845', ['3845', false]], + ['3846', ['3846', false]], + ['3847', ['3847', false]], + ['3848', ['3848', false]], + ['3849', ['3849', false]], + ['3850', ['3850', false]], + ['3851', ['3851', false]], + ['3852', ['3852', false]], + ['3853', ['3853', false]], + ['3854', ['3854', false]], + ['3855', ['3855', false]], + ['3856', ['3856', false]], + ['3857', ['3857', false]], + ['3858', ['3858', false]], + ['3859', ['3859', false]], + ['3860', ['3860', false]], + ['3861', ['3861', false]], + ['3862', ['3862', false]], + ['3863', ['3863', false]], + ['3864', ['3864', false]], + ['3865', ['3865', false]], + ['3866', ['3866', false]], + ['3867', ['3867', false]], + ['3868', ['3868', false]], + ['3869', ['3869', false]], + ['3870', ['3870', false]], + ['3871', ['3871', false]], + ['3872', ['3872', false]], + ['3873', ['3873', false]], + ['3874', ['3874', false]], + ['3875', ['3875', false]], + ['3876', ['3876', false]], + ['3877', ['3877', false]], + ['3878', ['3878', false]], + ['3879', ['3879', false]], + ['3880', ['3880', false]], + ['3881', ['3881', false]], + ['3882', ['3882', false]], + ['3883', ['3883', false]], + ['3884', ['3884', false]], + ['3885', ['3885', false]], + ['3886', ['3886', false]], + ['3887', ['3887', false]], + ['3888', ['3888', false]], + ['3889', ['3889', false]], + ['3890', ['3890', false]], + ['3891', ['3891', false]], + ['3892', ['3892', false]], + ['3893', ['3893', false]], + ['3894', ['3894', false]], + ['3895', ['3895', false]], + ['3896', ['3896', false]], + ['3897', ['3897', false]], + ['3898', ['3898', false]], + ['3899', ['3899', false]], + ['3900', ['3900', false]], + ['3901', ['3901', false]], + ['3902', ['3902', false]], + ['3903', ['3903', false]], + ['3904', ['3904', false]], + ['3905', ['3905', false]], + ['3906', ['3906', false]], + ['3907', ['3907', false]], + ['3908', ['3908', false]], + ['3909', ['3909', false]], + ['3910', ['3910', false]], + ['3911', ['3911', false]], + ['3912', ['3912', false]], + ['3913', ['3913', false]], + ['3914', ['3914', false]], + ['3915', ['3915', false]], + ['3916', ['3916', false]], + ['3917', ['3917', false]], + ['3918', ['3918', false]], + ['3919', ['3919', false]], + ['3920', ['3920', false]], + ['3921', ['3921', false]], + ['3922', ['3922', false]], + ['3923', ['3923', false]], + ['3924', ['3924', false]], + ['3925', ['3925', false]], + ['3926', ['3926', false]], + ['3927', ['3927', false]], + ['3928', ['3928', false]], + ['3929', ['3929', false]], + ['3930', ['3930', false]], + ['3931', ['3931', false]], + ['3932', ['3932', false]], + ['3933', ['3933', false]], + ['3934', ['3934', false]], + ['3935', ['3935', false]], + ['3936', ['3936', false]], + ['3937', ['3937', false]], + ['3938', ['3938', false]], + ['3939', ['3939', false]], + ['3940', ['3940', false]], + ['3941', ['3941', false]], + ['3942', ['3942', false]], + ['3943', ['3943', false]], + ['3944', ['3944', false]], + ['3945', ['3945', false]], + ['3946', ['3946', false]], + ['3947', ['3947', false]], + ['3948', ['3948', false]], + ['3949', ['3949', false]], + ['3950', ['3950', false]], + ['3951', ['3951', false]], + ['3952', ['3952', false]], + ['3953', ['3953', false]], + ['3954', ['3954', false]], + ['3955', ['3955', false]], + ['3956', ['3956', false]], + ['3957', ['3957', false]], + ['3958', ['3958', false]], + ['3959', ['3959', false]], + ['3960', ['3960', false]], + ['3961', ['3961', false]], + ['3962', ['3962', false]], + ['3963', ['3963', false]], + ['3964', ['3964', false]], + ['3965', ['3965', false]], + ['3966', ['3966', false]], + ['3967', ['3967', false]], + ['3968', ['3968', false]], + ['3969', ['3969', false]], + ['3970', ['3970', false]], + ['3971', ['3971', false]], + ['3972', ['3972', false]], + ['3973', ['3973', false]], + ['3974', ['3974', false]], + ['3975', ['3975', false]], + ['3976', ['3976', false]], + ['3977', ['3977', false]], + ['3978', ['3978', false]], + ['3979', ['3979', false]], + ['3980', ['3980', false]], + ['3981', ['3981', false]], + ['3982', ['3982', false]], + ['3983', ['3983', false]], + ['3984', ['3984', false]], + ['3985', ['3985', false]], + ['3986', ['3986', false]], + ['3987', ['3987', false]], + ['3988', ['3988', false]], + ['3989', ['3989', false]], + ['3990', ['3990', false]], + ['3991', ['3991', false]], + ['3992', ['3992', false]], + ['3993', ['3993', false]], + ['3994', ['3994', false]], + ['3995', ['3995', false]], + ['3996', ['3996', false]], + ['3997', ['3997', false]], + ['3998', ['3998', false]], + ['3999', ['3999', false]], + ['4000', ['4000', false]], + ['4001', ['4001', false]], + ['4002', ['4002', false]], + ['4003', ['4003', false]], + ['4004', ['4004', false]], + ['4005', ['4005', false]], + ['4006', ['4006', false]], + ['4007', ['4007', false]], + ['4008', ['4008', false]], + ['4009', ['4009', false]], + ['4010', ['4010', false]], + ['4011', ['4011', false]], + ['4012', ['4012', false]], + ['4013', ['4013', false]], + ['4014', ['4014', false]], + ['4015', ['4015', false]], + ['4016', ['4016', false]], + ['4017', ['4017', false]], + ['4018', ['4018', false]], + ['4019', ['4019', false]], + ['4020', ['4020', false]], + ['4021', ['4021', false]], + ['4022', ['4022', false]], + ['4023', ['4023', false]], + ['4024', ['4024', false]], + ['4025', ['4025', false]], + ['4026', ['4026', false]], + ['4027', ['4027', false]], + ['4028', ['4028', false]], + ['4029', ['4029', false]], + ['4030', ['4030', false]], + ['4031', ['4031', false]], + ['4032', ['4032', false]], + ['4033', ['4033', false]], + ['4034', ['4034', false]], + ['4035', ['4035', false]], + ['4036', ['4036', false]], + ['4037', ['4037', false]], + ['4038', ['4038', false]], + ['4039', ['4039', false]], + ['4040', ['4040', false]], + ['4041', ['4041', false]], + ['4042', ['4042', false]], + ['4043', ['4043', false]], + ['4044', ['4044', false]], + ['4045', ['4045', false]], + ['4046', ['4046', false]], + ['4047', ['4047', false]], + ['4048', ['4048', false]], + ['4049', ['4049', false]], + ['4050', ['4050', false]], + ['4051', ['4051', false]], + ['4052', ['4052', false]], + ['4053', ['4053', false]], + ['4054', ['4054', false]], + ['4055', ['4055', false]], + ['4056', ['4056', false]], + ['4057', ['4057', false]], + ['4058', ['4058', false]], + ['4059', ['4059', false]], + ['4060', ['4060', false]], + ['4061', ['4061', false]], + ['4062', ['4062', false]], + ['4063', ['4063', false]], + ['4064', ['4064', false]], + ['4065', ['4065', false]], + ['4066', ['4066', false]], + ['4067', ['4067', false]], + ['4068', ['4068', false]], + ['4069', ['4069', false]], + ['4070', ['4070', false]], + ['4071', ['4071', false]], + ['4072', ['4072', false]], + ['4073', ['4073', false]], + ['4074', ['4074', false]], + ['4075', ['4075', false]], + ['4076', ['4076', false]], + ['4077', ['4077', false]], + ['4078', ['4078', false]], + ['4079', ['4079', false]], + ['4080', ['4080', false]], + ['4081', ['4081', false]], + ['4082', ['4082', false]], + ['4083', ['4083', false]], + ['4084', ['4084', false]], + ['4085', ['4085', false]], + ['4086', ['4086', false]], + ['4087', ['4087', false]], + ['4088', ['4088', false]], + ['4089', ['4089', false]], + ['4090', ['4090', false]], + ['4091', ['4091', false]], + ['4092', ['4092', false]], + ['4093', ['4093', false]], + ['4094', ['4094', false]], + ['4095', ['4095', false]], + ['4096', ['4096', false]], + ['4097', ['4097', false]], + ['4098', ['4098', false]], + ['4099', ['4099', false]], + ['4100', ['4100', false]], + ['4101', ['4101', false]], + ['4102', ['4102', false]], + ['4103', ['4103', false]], + ['4104', ['4104', false]], + ['4105', ['4105', false]], + ['4106', ['4106', false]], + ['4107', ['4107', false]], + ['4108', ['4108', false]], + ['4109', ['4109', false]], + ['4110', ['4110', false]], + ['4111', ['4111', false]], + ['4112', ['4112', false]], + ['4113', ['4113', false]], + ['4114', ['4114', false]], + ['4115', ['4115', false]], + ['4116', ['4116', false]], + ['4117', ['4117', false]], + ['4118', ['4118', false]], + ['4119', ['4119', false]], + ['4120', ['4120', false]], + ['4121', ['4121', false]], + ['4122', ['4122', false]], + ['4123', ['4123', false]], + ['4124', ['4124', false]], + ['4125', ['4125', false]], + ['4126', ['4126', false]], + ['4127', ['4127', false]], + ['4128', ['4128', false]], + ['4129', ['4129', false]], + ['4130', ['4130', false]], + ['4131', ['4131', false]], + ['4132', ['4132', false]], + ['4133', ['4133', false]], + ['4134', ['4134', false]], + ['4135', ['4135', false]], + ['4136', ['4136', false]], + ['4137', ['4137', false]], + ['4138', ['4138', false]], + ['4139', ['4139', false]], + ['4140', ['4140', false]], + ['4141', ['4141', false]], + ['4142', ['4142', false]], + ['4143', ['4143', false]], + ['4144', ['4144', false]], + ['4145', ['4145', false]], + ['4146', ['4146', false]], + ['4147', ['4147', false]], + ['4148', ['4148', false]], + ['4149', ['4149', false]], + ['4150', ['4150', false]], + ['4151', ['4151', false]], + ['4152', ['4152', false]], + ['4153', ['4153', false]], + ['4154', ['4154', false]], + ['4155', ['4155', false]], + ['4156', ['4156', false]], + ['4157', ['4157', false]], + ['4158', ['4158', false]], + ['4159', ['4159', false]], + ['4160', ['4160', false]], + ['4161', ['4161', false]], + ['4162', ['4162', false]], + ['4163', ['4163', false]], + ['4164', ['4164', false]], + ['4165', ['4165', false]], + ['4166', ['4166', false]], + ['4167', ['4167', false]], + ['4168', ['4168', false]], + ['4169', ['4169', false]], + ['4170', ['4170', false]], + ['4171', ['4171', false]], + ['4172', ['4172', false]], + ['4173', ['4173', false]], + ['4174', ['4174', false]], + ['4175', ['4175', false]], + ['4176', ['4176', false]], + ['4177', ['4177', false]], + ['4178', ['4178', false]], + ['4179', ['4179', false]], + ['4180', ['4180', false]], + ['4181', ['4181', false]], + ['4182', ['4182', false]], + ['4183', ['4183', false]], + ['4184', ['4184', false]], + ['4185', ['4185', false]], + ['4186', ['4186', false]], + ['4187', ['4187', false]], + ['4188', ['4188', false]], + ['4189', ['4189', false]], + ['4190', ['4190', false]], + ['4191', ['4191', false]], + ['4192', ['4192', false]], + ['4193', ['4193', false]], + ['4194', ['4194', false]], + ['4195', ['4195', false]], + ['4196', ['4196', false]], + ['4197', ['4197', false]], + ['4198', ['4198', false]], + ['4199', ['4199', false]], + ['4200', ['4200', false]], + ['4201', ['4201', false]], + ['4202', ['4202', false]], + ['4203', ['4203', false]], + ['4204', ['4204', false]], + ['4205', ['4205', false]], + ['4206', ['4206', false]], + ['4207', ['4207', false]], + ['4208', ['4208', false]], + ['4209', ['4209', false]], + ['4210', ['4210', false]], + ['4211', ['4211', false]], + ['4212', ['4212', false]], + ['4213', ['4213', false]], + ['4214', ['4214', false]], + ['4215', ['4215', false]], + ['4216', ['4216', false]], + ['4217', ['4217', false]], + ['4218', ['4218', false]], + ['4219', ['4219', false]], + ['4220', ['4220', false]], + ['4221', ['4221', false]], + ['4222', ['4222', false]], + ['4223', ['4223', false]], + ['4224', ['4224', false]], + ['4225', ['4225', false]], + ['4226', ['4226', false]], + ['4227', ['4227', false]], + ['4228', ['4228', false]], + ['4229', ['4229', false]], + ['4230', ['4230', false]], + ['4231', ['4231', false]], + ['4232', ['4232', false]], + ['4233', ['4233', false]], + ['4234', ['4234', false]], + ['4235', ['4235', false]], + ['4236', ['4236', false]], + ['4237', ['4237', false]], + ['4238', ['4238', false]], + ['4239', ['4239', false]], + ['4240', ['4240', false]], + ['4241', ['4241', false]], + ['4242', ['4242', false]], + ['4243', ['4243', false]], + ['4244', ['4244', false]], + ['4245', ['4245', false]], + ['4246', ['4246', false]], + ['4247', ['4247', false]], + ['4248', ['4248', false]], + ['4249', ['4249', false]], + ['4250', ['4250', false]], + ['4251', ['4251', false]], + ['4252', ['4252', false]], + ['4253', ['4253', false]], + ['4254', ['4254', false]], + ['4255', ['4255', false]], + ['4256', ['4256', false]], + ['4257', ['4257', false]], + ['4258', ['4258', false]], + ['4259', ['4259', false]], + ['4260', ['4260', false]], + ['4261', ['4261', false]], + ['4262', ['4262', false]], + ['4263', ['4263', false]], + ['4264', ['4264', false]], + ['4265', ['4265', false]], + ['4266', ['4266', false]], + ['4267', ['4267', false]], + ['4268', ['4268', false]], + ['4269', ['4269', false]], + ['4270', ['4270', false]], + ['4271', ['4271', false]], + ['4272', ['4272', false]], + ['4273', ['4273', false]], + ['4274', ['4274', false]], + ['4275', ['4275', false]], + ['4276', ['4276', false]], + ['4277', ['4277', false]], + ['4278', ['4278', false]], + ['4279', ['4279', false]], + ['4280', ['4280', false]], + ['4281', ['4281', false]], + ['4282', ['4282', false]], + ['4283', ['4283', false]], + ['4284', ['4284', false]], + ['4285', ['4285', false]], + ['4286', ['4286', false]], + ['4287', ['4287', false]], + ['4288', ['4288', false]], + ['4289', ['4289', false]], + ['4290', ['4290', false]], + ['4291', ['4291', false]], + ['4292', ['4292', false]], + ['4293', ['4293', false]], + ['4294', ['4294', false]], + ['4295', ['4295', false]], + ['4296', ['4296', false]], + ['4297', ['4297', false]], + ['4298', ['4298', false]], + ['4299', ['4299', false]], + ['4300', ['4300', false]], + ['4301', ['4301', false]], + ['4302', ['4302', false]], + ['4303', ['4303', false]], + ['4304', ['4304', false]], + ['4305', ['4305', false]], + ['4306', ['4306', false]], + ['4307', ['4307', false]], + ['4308', ['4308', false]], + ['4309', ['4309', false]], + ['4310', ['4310', false]], + ['4311', ['4311', false]], + ['4312', ['4312', false]], + ['4313', ['4313', false]], + ['4314', ['4314', false]], + ['4315', ['4315', false]], + ['4316', ['4316', false]], + ['4317', ['4317', false]], + ['4318', ['4318', false]], + ['4319', ['4319', false]], + ['4320', ['4320', false]], + ['4321', ['4321', false]], + ['4322', ['4322', false]], + ['4323', ['4323', false]], + ['4324', ['4324', false]], + ['4325', ['4325', false]], + ['4326', ['4326', false]], + ['4327', ['4327', false]], + ['4328', ['4328', false]], + ['4329', ['4329', false]], + ['4330', ['4330', false]], + ['4331', ['4331', false]], + ['4332', ['4332', false]], + ['4333', ['4333', false]], + ['4334', ['4334', false]], + ['4335', ['4335', false]], + ['4336', ['4336', false]], + ['4337', ['4337', false]], + ['4338', ['4338', false]], + ['4339', ['4339', false]], + ['4340', ['4340', false]], + ['4341', ['4341', false]], + ['4342', ['4342', false]], + ['4343', ['4343', false]], + ['4344', ['4344', false]], + ['4345', ['4345', false]], + ['4346', ['4346', false]], + ['4347', ['4347', false]], + ['4348', ['4348', false]], + ['4349', ['4349', false]], + ['4350', ['4350', false]], + ['4351', ['4351', false]], + ['4352', ['4352', false]], + ['4353', ['4353', false]], + ['4354', ['4354', false]], + ['4355', ['4355', false]], + ['4356', ['4356', false]], + ['4357', ['4357', false]], + ['4358', ['4358', false]], + ['4359', ['4359', false]], + ['4360', ['4360', false]], + ['4361', ['4361', false]], + ['4362', ['4362', false]], + ['4363', ['4363', false]], + ['4364', ['4364', false]], + ['4365', ['4365', false]], + ['4366', ['4366', false]], + ['4367', ['4367', false]], + ['4368', ['4368', false]], + ['4369', ['4369', false]], + ['4370', ['4370', false]], + ['4371', ['4371', false]], + ['4372', ['4372', false]], + ['4373', ['4373', false]], + ['4374', ['4374', false]], + ['4375', ['4375', false]], + ['4376', ['4376', false]], + ['4377', ['4377', false]], + ['4378', ['4378', false]], + ['4379', ['4379', false]], + ['4380', ['4380', false]], + ['4381', ['4381', false]], + ['4382', ['4382', false]], + ['4383', ['4383', false]], + ['4384', ['4384', false]], + ['4385', ['4385', false]], + ['4386', ['4386', false]], + ['4387', ['4387', false]], + ['4388', ['4388', false]], + ['4389', ['4389', false]], + ['4390', ['4390', false]], + ['4391', ['4391', false]], + ['4392', ['4392', false]], + ['4393', ['4393', false]], + ['4394', ['4394', false]], + ['4395', ['4395', false]], + ['4396', ['4396', false]], + ['4397', ['4397', false]], + ['4398', ['4398', false]], + ['4399', ['4399', false]], + ['4400', ['4400', false]], + ['4401', ['4401', false]], + ['4402', ['4402', false]], + ['4403', ['4403', false]], + ['4404', ['4404', false]], + ['4405', ['4405', false]], + ['4406', ['4406', false]], + ['4407', ['4407', false]], + ['4408', ['4408', false]], + ['4409', ['4409', false]], + ['4410', ['4410', false]], + ['4411', ['4411', false]], + ['4412', ['4412', false]], + ['4413', ['4413', false]], + ['4414', ['4414', false]], + ['4415', ['4415', false]], + ['4416', ['4416', false]], + ['4417', ['4417', false]], + ['4418', ['4418', false]], + ['4419', ['4419', false]], + ['4420', ['4420', false]], + ['4421', ['4421', false]], + ['4422', ['4422', false]], + ['4423', ['4423', false]], + ['4424', ['4424', false]], + ['4425', ['4425', false]], + ['4426', ['4426', false]], + ['4427', ['4427', false]], + ['4428', ['4428', false]], + ['4429', ['4429', false]], + ['4430', ['4430', false]], + ['4431', ['4431', false]], + ['4432', ['4432', false]], + ['4433', ['4433', false]], + ['4434', ['4434', false]], + ['4435', ['4435', false]], + ['4436', ['4436', false]], + ['4437', ['4437', false]], + ['4438', ['4438', false]], + ['4439', ['4439', false]], + ['4440', ['4440', false]], + ['4441', ['4441', false]], + ['4442', ['4442', false]], + ['4443', ['4443', false]], + ['4444', ['4444', false]], + ['4445', ['4445', false]], + ['4446', ['4446', false]], + ['4447', ['4447', false]], + ['4448', ['4448', false]], + ['4449', ['4449', false]], + ['4450', ['4450', false]], + ['4451', ['4451', false]], + ['4452', ['4452', false]], + ['4453', ['4453', false]], + ['4454', ['4454', false]], + ['4455', ['4455', false]], + ['4456', ['4456', false]], + ['4457', ['4457', false]], + ['4458', ['4458', false]], + ['4459', ['4459', false]], + ['4460', ['4460', false]], + ['4461', ['4461', false]], + ['4462', ['4462', false]], + ['4463', ['4463', false]], + ['4464', ['4464', false]], + ['4465', ['4465', false]], + ['4466', ['4466', false]], + ['4467', ['4467', false]], + ['4468', ['4468', false]], + ['4469', ['4469', false]], + ['4470', ['4470', false]], + ['4471', ['4471', false]], + ['4472', ['4472', false]], + ['4473', ['4473', false]], + ['4474', ['4474', false]], + ['4475', ['4475', false]], + ['4476', ['4476', false]], + ['4477', ['4477', false]], + ['4478', ['4478', false]], + ['4479', ['4479', false]], + ['4480', ['4480', false]], + ['4481', ['4481', false]], + ['4482', ['4482', false]], + ['4483', ['4483', false]], + ['4484', ['4484', false]], + ['4485', ['4485', false]], + ['4486', ['4486', false]], + ['4487', ['4487', false]], + ['4488', ['4488', false]], + ['4489', ['4489', false]], + ['4490', ['4490', false]], + ['4491', ['4491', false]], + ['4492', ['4492', false]], + ['4493', ['4493', false]], + ['4494', ['4494', false]], + ['4495', ['4495', false]], + ['4496', ['4496', false]], + ['4497', ['4497', false]], + ['4498', ['4498', false]], + ['4499', ['4499', false]], + ['4500', ['4500', false]], + ['4501', ['4501', false]], + ['4502', ['4502', false]], + ['4503', ['4503', false]], + ['4504', ['4504', false]], + ['4505', ['4505', false]], + ['4506', ['4506', false]], + ['4507', ['4507', false]], + ['4508', ['4508', false]], + ['4509', ['4509', false]], + ['4510', ['4510', false]], + ['4511', ['4511', false]], + ['4512', ['4512', false]], + ['4513', ['4513', false]], + ['4514', ['4514', false]], + ['4515', ['4515', false]], + ['4516', ['4516', false]], + ['4517', ['4517', false]], + ['4518', ['4518', false]], + ['4519', ['4519', false]], + ['4520', ['4520', false]], + ['4521', ['4521', false]], + ['4522', ['4522', false]], + ['4523', ['4523', false]], + ['4524', ['4524', false]], + ['4525', ['4525', false]], + ['4526', ['4526', false]], + ['4527', ['4527', false]], + ['4528', ['4528', false]], + ['4529', ['4529', false]], + ['4530', ['4530', false]], + ['4531', ['4531', false]], + ['4532', ['4532', false]], + ['4533', ['4533', false]], + ['4534', ['4534', false]], + ['4535', ['4535', false]], + ['4536', ['4536', false]], + ['4537', ['4537', false]], + ['4538', ['4538', false]], + ['4539', ['4539', false]], + ['4540', ['4540', false]], + ['4541', ['4541', false]], + ['4542', ['4542', false]], + ['4543', ['4543', false]], + ['4544', ['4544', false]], + ['4545', ['4545', false]], + ['4546', ['4546', false]], + ['4547', ['4547', false]], + ['4548', ['4548', false]], + ['4549', ['4549', false]], + ['4550', ['4550', false]], + ['4551', ['4551', false]], + ['4552', ['4552', false]], + ['4553', ['4553', false]], + ['4554', ['4554', false]], + ['4555', ['4555', false]], + ['4556', ['4556', false]], + ['4557', ['4557', false]], + ['4558', ['4558', false]], + ['4559', ['4559', false]], + ['4560', ['4560', false]], + ['4561', ['4561', false]], + ['4562', ['4562', false]], + ['4563', ['4563', false]], + ['4564', ['4564', false]], + ['4565', ['4565', false]], + ['4566', ['4566', false]], + ['4567', ['4567', false]], + ['4568', ['4568', false]], + ['4569', ['4569', false]], + ['4570', ['4570', false]], + ['4571', ['4571', false]], + ['4572', ['4572', false]], + ['4573', ['4573', false]], + ['4574', ['4574', false]], + ['4575', ['4575', false]], + ['4576', ['4576', false]], + ['4577', ['4577', false]], + ['4578', ['4578', false]], + ['4579', ['4579', false]], + ['4580', ['4580', false]], + ['4581', ['4581', false]], + ['4582', ['4582', false]], + ['4583', ['4583', false]], + ['4584', ['4584', false]], + ['4585', ['4585', false]], + ['4586', ['4586', false]], + ['4587', ['4587', false]], + ['4588', ['4588', false]], + ['4589', ['4589', false]], + ['4590', ['4590', false]], + ['4591', ['4591', false]], + ['4592', ['4592', false]], + ['4593', ['4593', false]], + ['4594', ['4594', false]], + ['4595', ['4595', false]], + ['4596', ['4596', false]], + ['4597', ['4597', false]], + ['4598', ['4598', false]], + ['4599', ['4599', false]], + ['4600', ['4600', false]], + ['4601', ['4601', false]], + ['4602', ['4602', false]], + ['4603', ['4603', false]], + ['4604', ['4604', false]], + ['4605', ['4605', false]], + ['4606', ['4606', false]], + ['4607', ['4607', false]], + ['4608', ['4608', false]], + ['4609', ['4609', false]], + ['4610', ['4610', false]], + ['4611', ['4611', false]], + ['4612', ['4612', false]], + ['4613', ['4613', false]], + ['4614', ['4614', false]], + ['4615', ['4615', false]], + ['4616', ['4616', false]], + ['4617', ['4617', false]], + ['4618', ['4618', false]], + ['4619', ['4619', false]], + ['4620', ['4620', false]], + ['4621', ['4621', false]], + ['4622', ['4622', false]], + ['4623', ['4623', false]], + ['4624', ['4624', false]], + ['4625', ['4625', false]], + ['4626', ['4626', false]], + ['4627', ['4627', false]], + ['4628', ['4628', false]], + ['4629', ['4629', false]], + ['4630', ['4630', false]], + ['4631', ['4631', false]], + ['4632', ['4632', false]], + ['4633', ['4633', false]], + ['4634', ['4634', false]], + ['4635', ['4635', false]], + ['4636', ['4636', false]], + ['4637', ['4637', false]], + ['4638', ['4638', false]], + ['4639', ['4639', false]], + ['4640', ['4640', false]], + ['4641', ['4641', false]], + ['4642', ['4642', false]], + ['4643', ['4643', false]], + ['4644', ['4644', false]], + ['4645', ['4645', false]], + ['4646', ['4646', false]], + ['4647', ['4647', false]], + ['4648', ['4648', false]], + ['4649', ['4649', false]], + ['4650', ['4650', false]], + ['4651', ['4651', false]], + ['4652', ['4652', false]], + ['4653', ['4653', false]], + ['4654', ['4654', false]], + ['4655', ['4655', false]], + ['4656', ['4656', false]], + ['4657', ['4657', false]], + ['4658', ['4658', false]], + ['4659', ['4659', false]], + ['4660', ['4660', false]], + ['4661', ['4661', false]], + ['4662', ['4662', false]], + ['4663', ['4663', false]], + ['4664', ['4664', false]], + ['4665', ['4665', false]], + ['4666', ['4666', false]], + ['4667', ['4667', false]], + ['4668', ['4668', false]], + ['4669', ['4669', false]], + ['4670', ['4670', false]], + ['4671', ['4671', false]], + ['4672', ['4672', false]], + ['4673', ['4673', false]], + ['4674', ['4674', false]], + ['4675', ['4675', false]], + ['4676', ['4676', false]], + ['4677', ['4677', false]], + ['4678', ['4678', false]], + ['4679', ['4679', false]], + ['4680', ['4680', false]], + ['4681', ['4681', false]], + ['4682', ['4682', false]], + ['4683', ['4683', false]], + ['4684', ['4684', false]], + ['4685', ['4685', false]], + ['4686', ['4686', false]], + ['4687', ['4687', false]], + ['4688', ['4688', false]], + ['4689', ['4689', false]], + ['4690', ['4690', false]], + ['4691', ['4691', false]], + ['4692', ['4692', false]], + ['4693', ['4693', false]], + ['4694', ['4694', false]], + ['4695', ['4695', false]], + ['4696', ['4696', false]], + ['4697', ['4697', false]], + ['4698', ['4698', false]], + ['4699', ['4699', false]], + ['4700', ['4700', false]], + ['4701', ['4701', false]], + ['4702', ['4702', false]], + ['4703', ['4703', false]], + ['4704', ['4704', false]], + ['4705', ['4705', false]], + ['4706', ['4706', false]], + ['4707', ['4707', false]], + ['4708', ['4708', false]], + ['4709', ['4709', false]], + ['4710', ['4710', false]], + ['4711', ['4711', false]], + ['4712', ['4712', false]], + ['4713', ['4713', false]], + ['4714', ['4714', false]], + ['4715', ['4715', false]], + ['4716', ['4716', false]], + ['4717', ['4717', false]], + ['4718', ['4718', false]], + ['4719', ['4719', false]], + ['4720', ['4720', false]], + ['4721', ['4721', false]], + ['4722', ['4722', false]], + ['4723', ['4723', false]], + ['4724', ['4724', false]], + ['4725', ['4725', false]], + ['4726', ['4726', false]], + ['4727', ['4727', false]], + ['4728', ['4728', false]], + ['4729', ['4729', false]], + ['4730', ['4730', false]], + ['4731', ['4731', false]], + ['4732', ['4732', false]], + ['4733', ['4733', false]], + ['4734', ['4734', false]], + ['4735', ['4735', false]], + ['4736', ['4736', false]], + ['4737', ['4737', false]], + ['4738', ['4738', false]], + ['4739', ['4739', false]], + ['4740', ['4740', false]], + ['4741', ['4741', false]], + ['4742', ['4742', false]], + ['4743', ['4743', false]], + ['4744', ['4744', false]], + ['4745', ['4745', false]], + ['4746', ['4746', false]], + ['4747', ['4747', false]], + ['4748', ['4748', false]], + ['4749', ['4749', false]], + ['4750', ['4750', false]], + ['4751', ['4751', false]], + ['4752', ['4752', false]], + ['4753', ['4753', false]], + ['4754', ['4754', false]], + ['4755', ['4755', false]], + ['4756', ['4756', false]], + ['4757', ['4757', false]], + ['4758', ['4758', false]], + ['4759', ['4759', false]], + ['4760', ['4760', false]], + ['4761', ['4761', false]], + ['4762', ['4762', false]], + ['4763', ['4763', false]], + ['4764', ['4764', false]], + ['4765', ['4765', false]], + ['4766', ['4766', false]], + ['4767', ['4767', false]], + ['4768', ['4768', false]], + ['4769', ['4769', false]], + ['4770', ['4770', false]], + ['4771', ['4771', false]], + ['4772', ['4772', false]], + ['4773', ['4773', false]], + ['4774', ['4774', false]], + ['4775', ['4775', false]], + ['4776', ['4776', false]], + ['4777', ['4777', false]], + ['4778', ['4778', false]], + ['4779', ['4779', false]], + ['4780', ['4780', false]], + ['4781', ['4781', false]], + ['4782', ['4782', false]], + ['4783', ['4783', false]], + ['4784', ['4784', false]], + ['4785', ['4785', false]], + ['4786', ['4786', false]], + ['4787', ['4787', false]], + ['4788', ['4788', false]], + ['4789', ['4789', false]], + ['4790', ['4790', false]], + ['4791', ['4791', false]], + ['4792', ['4792', false]], + ['4793', ['4793', false]], + ['4794', ['4794', false]], + ['4795', ['4795', false]], + ['4796', ['4796', false]], + ['4797', ['4797', false]], + ['4798', ['4798', false]], + ['4799', ['4799', false]], + ['4800', ['4800', false]], + ['4801', ['4801', false]], + ['4802', ['4802', false]], + ['4803', ['4803', false]], + ['4804', ['4804', false]], + ['4805', ['4805', false]], + ['4806', ['4806', false]], + ['4807', ['4807', false]], + ['4808', ['4808', false]], + ['4809', ['4809', false]], + ['4810', ['4810', false]], + ['4811', ['4811', false]], + ['4812', ['4812', false]], + ['4813', ['4813', false]], + ['4814', ['4814', false]], + ['4815', ['4815', false]], + ['4816', ['4816', false]], + ['4817', ['4817', false]], + ['4818', ['4818', false]], + ['4819', ['4819', false]], + ['4820', ['4820', false]], + ['4821', ['4821', false]], + ['4822', ['4822', false]], + ['4823', ['4823', false]], + ['4824', ['4824', false]], + ['4825', ['4825', false]], + ['4826', ['4826', false]], + ['4827', ['4827', false]], + ['4828', ['4828', false]], + ['4829', ['4829', false]], + ['4830', ['4830', false]], + ['4831', ['4831', false]], + ['4832', ['4832', false]], + ['4833', ['4833', false]], + ['4834', ['4834', false]], + ['4835', ['4835', false]], + ['4836', ['4836', false]], + ['4837', ['4837', false]], + ['4838', ['4838', false]], + ['4839', ['4839', false]], + ['4840', ['4840', false]], + ['4841', ['4841', false]], + ['4842', ['4842', false]], + ['4843', ['4843', false]], + ['4844', ['4844', false]], + ['4845', ['4845', false]], + ['4846', ['4846', false]], + ['4847', ['4847', false]], + ['4848', ['4848', false]], + ['4849', ['4849', false]], + ['4850', ['4850', false]], + ['4851', ['4851', false]], + ['4852', ['4852', false]], + ['4853', ['4853', false]], + ['4854', ['4854', false]], + ['4855', ['4855', false]], + ['4856', ['4856', false]], + ['4857', ['4857', false]], + ['4858', ['4858', false]], + ['4859', ['4859', false]], + ['4860', ['4860', false]], + ['4861', ['4861', false]], + ['4862', ['4862', false]], + ['4863', ['4863', false]], + ['4864', ['4864', false]], + ['4865', ['4865', false]], + ['4866', ['4866', false]], + ['4867', ['4867', false]], + ['4868', ['4868', false]], + ['4869', ['4869', false]], + ['4870', ['4870', false]], + ['4871', ['4871', false]], + ['4872', ['4872', false]], + ['4873', ['4873', false]], + ['4874', ['4874', false]], + ['4875', ['4875', false]], + ['4876', ['4876', false]], + ['4877', ['4877', false]], + ['4878', ['4878', false]], + ['4879', ['4879', false]], + ['4880', ['4880', false]], + ['4881', ['4881', false]], + ['4882', ['4882', false]], + ['4883', ['4883', false]], + ['4884', ['4884', false]], + ['4885', ['4885', false]], + ['4886', ['4886', false]], + ['4887', ['4887', false]], + ['4888', ['4888', false]], + ['4889', ['4889', false]], + ['4890', ['4890', false]], + ['4891', ['4891', false]], + ['4892', ['4892', false]], + ['4893', ['4893', false]], + ['4894', ['4894', false]], + ['4895', ['4895', false]], + ['4896', ['4896', false]], + ['4897', ['4897', false]], + ['4898', ['4898', false]], + ['4899', ['4899', false]], + ['4900', ['4900', false]], + ['4901', ['4901', false]], + ['4902', ['4902', false]], + ['4903', ['4903', false]], + ['4904', ['4904', false]], + ['4905', ['4905', false]], + ['4906', ['4906', false]], + ['4907', ['4907', false]], + ['4908', ['4908', false]], + ['4909', ['4909', false]], + ['4910', ['4910', false]], + ['4911', ['4911', false]], + ['4912', ['4912', false]], + ['4913', ['4913', false]], + ['4914', ['4914', false]], + ['4915', ['4915', false]], + ['4916', ['4916', false]], + ['4917', ['4917', false]], + ['4918', ['4918', false]], + ['4919', ['4919', false]], + ['4920', ['4920', false]], + ['4921', ['4921', false]], + ['4922', ['4922', false]], + ['4923', ['4923', false]], + ['4924', ['4924', false]], + ['4925', ['4925', false]], + ['4926', ['4926', false]], + ['4927', ['4927', false]], + ['4928', ['4928', false]], + ['4929', ['4929', false]], + ['4930', ['4930', false]], + ['4931', ['4931', false]], + ['4932', ['4932', false]], + ['4933', ['4933', false]], + ['4934', ['4934', false]], + ['4935', ['4935', false]], + ['4936', ['4936', false]], + ['4937', ['4937', false]], + ['4938', ['4938', false]], + ['4939', ['4939', false]], + ['4940', ['4940', false]], + ['4941', ['4941', false]], + ['4942', ['4942', false]], + ['4943', ['4943', false]], + ['4944', ['4944', false]], + ['4945', ['4945', false]], + ['4946', ['4946', false]], + ['4947', ['4947', false]], + ['4948', ['4948', false]], + ['4949', ['4949', false]], + ['4950', ['4950', false]], + ['4951', ['4951', false]], + ['4952', ['4952', false]], + ['4953', ['4953', false]], + ['4954', ['4954', false]], + ['4955', ['4955', false]], + ['4956', ['4956', false]], + ['4957', ['4957', false]], + ['4958', ['4958', false]], + ['4959', ['4959', false]], + ['4960', ['4960', false]], + ['4961', ['4961', false]], + ['4962', ['4962', false]], + ['4963', ['4963', false]], + ['4964', ['4964', false]], + ['4965', ['4965', false]], + ['4966', ['4966', false]], + ['4967', ['4967', false]], + ['4968', ['4968', false]], + ['4969', ['4969', false]], + ['4970', ['4970', false]], + ['4971', ['4971', false]], + ['4972', ['4972', false]], + ['4973', ['4973', false]], + ['4974', ['4974', false]], + ['4975', ['4975', false]], + ['4976', ['4976', false]], + ['4977', ['4977', false]], + ['4978', ['4978', false]], + ['4979', ['4979', false]], + ['4980', ['4980', false]], + ['4981', ['4981', false]], + ['4982', ['4982', false]], + ['4983', ['4983', false]], + ['4984', ['4984', false]], + ['4985', ['4985', false]], + ['4986', ['4986', false]], + ['4987', ['4987', false]], + ['4988', ['4988', false]], + ['4989', ['4989', false]], + ['4990', ['4990', false]], + ['4991', ['4991', false]], + ['4992', ['4992', false]], + ['4993', ['4993', false]], + ['4994', ['4994', false]], + ['4995', ['4995', false]], + ['4996', ['4996', false]], + ['4997', ['4997', false]], + ['4998', ['4998', false]], + ['4999', ['4999', false]], + ['5000', ['5000', false]], + ['5001', ['5001', false]], + ['5002', ['5002', false]], + ['5003', ['5003', false]], + ['5004', ['5004', false]], + ['5005', ['5005', false]], + ['5006', ['5006', false]], + ['5007', ['5007', false]], + ['5008', ['5008', false]], + ['5009', ['5009', false]], + ['5010', ['5010', false]], + ['5011', ['5011', false]], + ['5012', ['5012', false]], + ['5013', ['5013', false]], + ['5014', ['5014', false]], + ['5015', ['5015', false]], + ['5016', ['5016', false]], + ['5017', ['5017', false]], + ['5018', ['5018', false]], + ['5019', ['5019', false]], + ['5020', ['5020', false]], + ['5021', ['5021', false]], + ['5022', ['5022', false]], + ['5023', ['5023', false]], + ['5024', ['5024', false]], + ['5025', ['5025', false]], + ['5026', ['5026', false]], + ['5027', ['5027', false]], + ['5028', ['5028', false]], + ['5029', ['5029', false]], + ['5030', ['5030', false]], + ['5031', ['5031', false]], + ['5032', ['5032', false]], + ['5033', ['5033', false]], + ['5034', ['5034', false]], + ['5035', ['5035', false]], + ['5036', ['5036', false]], + ['5037', ['5037', false]], + ['5038', ['5038', false]], + ['5039', ['5039', false]], + ['5040', ['5040', false]], + ['5041', ['5041', false]], + ['5042', ['5042', false]], + ['5043', ['5043', false]], + ['5044', ['5044', false]], + ['5045', ['5045', false]], + ['5046', ['5046', false]], + ['5047', ['5047', false]], + ['5048', ['5048', false]], + ['5049', ['5049', false]], + ['5050', ['5050', false]], + ['5051', ['5051', false]], + ['5052', ['5052', false]], + ['5053', ['5053', false]], + ['5054', ['5054', false]], + ['5055', ['5055', false]], + ['5056', ['5056', false]], + ['5057', ['5057', false]], + ['5058', ['5058', false]], + ['5059', ['5059', false]], + ['5060', ['5060', false]], + ['5061', ['5061', false]], + ['5062', ['5062', false]], + ['5063', ['5063', false]], + ['5064', ['5064', false]], + ['5065', ['5065', false]], + ['5066', ['5066', false]], + ['5067', ['5067', false]], + ['5068', ['5068', false]], + ['5069', ['5069', false]], + ['5070', ['5070', false]], + ['5071', ['5071', false]], + ['5072', ['5072', false]], + ['5073', ['5073', false]], + ['5074', ['5074', false]], + ['5075', ['5075', false]], + ['5076', ['5076', false]], + ['5077', ['5077', false]], + ['5078', ['5078', false]], + ['5079', ['5079', false]], + ['5080', ['5080', false]], + ['5081', ['5081', false]], + ['5082', ['5082', false]], + ['5083', ['5083', false]], + ['5084', ['5084', false]], + ['5085', ['5085', false]], + ['5086', ['5086', false]], + ['5087', ['5087', false]], + ['5088', ['5088', false]], + ['5089', ['5089', false]], + ['5090', ['5090', false]], + ['5091', ['5091', false]], + ['5092', ['5092', false]], + ['5093', ['5093', false]], + ['5094', ['5094', false]], + ['5095', ['5095', false]], + ['5096', ['5096', false]], + ['5097', ['5097', false]], + ['5098', ['5098', false]], + ['5099', ['5099', false]], + ['5100', ['5100', false]], + ['5101', ['5101', false]], + ['5102', ['5102', false]], + ['5103', ['5103', false]], + ['5104', ['5104', false]], + ['5105', ['5105', false]], + ['5106', ['5106', false]], + ['5107', ['5107', false]], + ['5108', ['5108', false]], + ['5109', ['5109', false]], + ['5110', ['5110', false]], + ['5111', ['5111', false]], + ['5112', ['5112', false]], + ['5113', ['5113', false]], + ['5114', ['5114', false]], + ['5115', ['5115', false]], + ['5116', ['5116', false]], + ['5117', ['5117', false]], + ['5118', ['5118', false]], + ['5119', ['5119', false]], + ['5120', ['5120', false]], + ['5121', ['5121', false]], + ['5122', ['5122', false]], + ['5123', ['5123', false]], + ['5124', ['5124', false]], + ['5125', ['5125', false]], + ['5126', ['5126', false]], + ['5127', ['5127', false]], + ['5128', ['5128', false]], + ['5129', ['5129', false]], + ['5130', ['5130', false]], + ['5131', ['5131', false]], + ['5132', ['5132', false]], + ['5133', ['5133', false]], + ['5134', ['5134', false]], + ['5135', ['5135', false]], + ['5136', ['5136', false]], + ['5137', ['5137', false]], + ['5138', ['5138', false]], + ['5139', ['5139', false]], + ['5140', ['5140', false]], + ['5141', ['5141', false]], + ['5142', ['5142', false]], + ['5143', ['5143', false]], + ['5144', ['5144', false]], + ['5145', ['5145', false]], + ['5146', ['5146', false]], + ['5147', ['5147', false]], + ['5148', ['5148', false]], + ['5149', ['5149', false]], + ['5150', ['5150', false]], + ['5151', ['5151', false]], + ['5152', ['5152', false]], + ['5153', ['5153', false]], + ['5154', ['5154', false]], + ['5155', ['5155', false]], + ['5156', ['5156', false]], + ['5157', ['5157', false]], + ['5158', ['5158', false]], + ['5159', ['5159', false]], + ['5160', ['5160', false]], + ['5161', ['5161', false]], + ['5162', ['5162', false]], + ['5163', ['5163', false]], + ['5164', ['5164', false]], + ['5165', ['5165', false]], + ['5166', ['5166', false]], + ['5167', ['5167', false]], + ['5168', ['5168', false]], + ['5169', ['5169', false]], + ['5170', ['5170', false]], + ['5171', ['5171', false]], + ['5172', ['5172', false]], + ['5173', ['5173', false]], + ['5174', ['5174', false]], + ['5175', ['5175', false]], + ['5176', ['5176', false]], + ['5177', ['5177', false]], + ['5178', ['5178', false]], + ['5179', ['5179', false]], + ['5180', ['5180', false]], + ['5181', ['5181', false]], + ['5182', ['5182', false]], + ['5183', ['5183', false]], + ['5184', ['5184', false]], + ['5185', ['5185', false]], + ['5186', ['5186', false]], + ['5187', ['5187', false]], + ['5188', ['5188', false]], + ['5189', ['5189', false]], + ['5190', ['5190', false]], + ['5191', ['5191', false]], + ['5192', ['5192', false]], + ['5193', ['5193', false]], + ['5194', ['5194', false]], + ['5195', ['5195', false]], + ['5196', ['5196', false]], + ['5197', ['5197', false]], + ['5198', ['5198', false]], + ['5199', ['5199', false]], + ['5200', ['5200', false]], + ['5201', ['5201', false]], + ['5202', ['5202', false]], + ['5203', ['5203', false]], + ['5204', ['5204', false]], + ['5205', ['5205', false]], + ['5206', ['5206', false]], + ['5207', ['5207', false]], + ['5208', ['5208', false]], + ['5209', ['5209', false]], + ['5210', ['5210', false]], + ['5211', ['5211', false]], + ['5212', ['5212', false]], + ['5213', ['5213', false]], + ['5214', ['5214', false]], + ['5215', ['5215', false]], + ['5216', ['5216', false]], + ['5217', ['5217', false]], + ['5218', ['5218', false]], + ['5219', ['5219', false]], + ['5220', ['5220', false]], + ['5221', ['5221', false]], + ['5222', ['5222', false]], + ['5223', ['5223', false]], + ['5224', ['5224', false]], + ['5225', ['5225', false]], + ['5226', ['5226', false]], + ['5227', ['5227', false]], + ['5228', ['5228', false]], + ['5229', ['5229', false]], + ['5230', ['5230', false]], + ['5231', ['5231', false]], + ['5232', ['5232', false]], + ['5233', ['5233', false]], + ['5234', ['5234', false]], + ['5235', ['5235', false]], + ['5236', ['5236', false]], + ['5237', ['5237', false]], + ['5238', ['5238', false]], + ['5239', ['5239', false]], + ['5240', ['5240', false]], + ['5241', ['5241', false]], + ['5242', ['5242', false]], + ['5243', ['5243', false]], + ['5244', ['5244', false]], + ['5245', ['5245', false]], + ['5246', ['5246', false]], + ['5247', ['5247', false]], + ['5248', ['5248', false]], + ['5249', ['5249', false]], + ['5250', ['5250', false]], + ['5251', ['5251', false]], + ['5252', ['5252', false]], + ['5253', ['5253', false]], + ['5254', ['5254', false]], + ['5255', ['5255', false]], + ['5256', ['5256', false]], + ['5257', ['5257', false]], + ['5258', ['5258', false]], + ['5259', ['5259', false]], + ['5260', ['5260', false]], + ['5261', ['5261', false]], + ['5262', ['5262', false]], + ['5263', ['5263', false]], + ['5264', ['5264', false]], + ['5265', ['5265', false]], + ['5266', ['5266', false]], + ['5267', ['5267', false]], + ['5268', ['5268', false]], + ['5269', ['5269', false]], + ['5270', ['5270', false]], + ['5271', ['5271', false]], + ['5272', ['5272', false]], + ['5273', ['5273', false]], + ['5274', ['5274', false]], + ['5275', ['5275', false]], + ['5276', ['5276', false]], + ['5277', ['5277', false]], + ['5278', ['5278', false]], + ['5279', ['5279', false]], + ['5280', ['5280', false]], + ['5281', ['5281', false]], + ['5282', ['5282', false]], + ['5283', ['5283', false]], + ['5284', ['5284', false]], + ['5285', ['5285', false]], + ['5286', ['5286', false]], + ['5287', ['5287', false]], + ['5288', ['5288', false]], + ['5289', ['5289', false]], + ['5290', ['5290', false]], + ['5291', ['5291', false]], + ['5292', ['5292', false]], + ['5293', ['5293', false]], + ['5294', ['5294', false]], + ['5295', ['5295', false]], + ['5296', ['5296', false]], + ['5297', ['5297', false]], + ['5298', ['5298', false]], + ['5299', ['5299', false]], + ['5300', ['5300', false]], + ['5301', ['5301', false]], + ['5302', ['5302', false]], + ['5303', ['5303', false]], + ['5304', ['5304', false]], + ['5305', ['5305', false]], + ['5306', ['5306', false]], + ['5307', ['5307', false]], + ['5308', ['5308', false]], + ['5309', ['5309', false]], + ['5310', ['5310', false]], + ['5311', ['5311', false]], + ['5312', ['5312', false]], + ['5313', ['5313', false]], + ['5314', ['5314', false]], + ['5315', ['5315', false]], + ['5316', ['5316', false]], + ['5317', ['5317', false]], + ['5318', ['5318', false]], + ['5319', ['5319', false]], + ['5320', ['5320', false]], + ['5321', ['5321', false]], + ['5322', ['5322', false]], + ['5323', ['5323', false]], + ['5324', ['5324', false]], + ['5325', ['5325', false]], + ['5326', ['5326', false]], + ['5327', ['5327', false]], + ['5328', ['5328', false]], + ['5329', ['5329', false]], + ['5330', ['5330', false]], + ['5331', ['5331', false]], + ['5332', ['5332', false]], + ['5333', ['5333', false]], + ['5334', ['5334', false]], + ['5335', ['5335', false]], + ['5336', ['5336', false]], + ['5337', ['5337', false]], + ['5338', ['5338', false]], + ['5339', ['5339', false]], + ['5340', ['5340', false]], + ['5341', ['5341', false]], + ['5342', ['5342', false]], + ['5343', ['5343', false]], + ['5344', ['5344', false]], + ['5345', ['5345', false]], + ['5346', ['5346', false]], + ['5347', ['5347', false]], + ['5348', ['5348', false]], + ['5349', ['5349', false]], + ['5350', ['5350', false]], + ['5351', ['5351', false]], + ['5352', ['5352', false]], + ['5353', ['5353', false]], + ['5354', ['5354', false]], + ['5355', ['5355', false]], + ['5356', ['5356', false]], + ['5357', ['5357', false]], + ['5358', ['5358', false]], + ['5359', ['5359', false]], + ['5360', ['5360', false]], + ['5361', ['5361', false]], + ['5362', ['5362', false]], + ['5363', ['5363', false]], + ['5364', ['5364', false]], + ['5365', ['5365', false]], + ['5366', ['5366', false]], + ['5367', ['5367', false]], + ['5368', ['5368', false]], + ['5369', ['5369', false]], + ['5370', ['5370', false]], + ['5371', ['5371', false]], + ['5372', ['5372', false]], + ['5373', ['5373', false]], + ['5374', ['5374', false]], + ['5375', ['5375', false]], + ['5376', ['5376', false]], + ['5377', ['5377', false]], + ['5378', ['5378', false]], + ['5379', ['5379', false]], + ['5380', ['5380', false]], + ['5381', ['5381', false]], + ['5382', ['5382', false]], + ['5383', ['5383', false]], + ['5384', ['5384', false]], + ['5385', ['5385', false]], + ['5386', ['5386', false]], + ['5387', ['5387', false]], + ['5388', ['5388', false]], + ['5389', ['5389', false]], + ['5390', ['5390', false]], + ['5391', ['5391', false]], + ['5392', ['5392', false]], + ['5393', ['5393', false]], + ['5394', ['5394', false]], + ['5395', ['5395', false]], + ['5396', ['5396', false]], + ['5397', ['5397', false]], + ['5398', ['5398', false]], + ['5399', ['5399', false]], + ['5400', ['5400', false]], + ['5401', ['5401', false]], + ['5402', ['5402', false]], + ['5403', ['5403', false]], + ['5404', ['5404', false]], + ['5405', ['5405', false]], + ['5406', ['5406', false]], + ['5407', ['5407', false]], + ['5408', ['5408', false]], + ['5409', ['5409', false]], + ['5410', ['5410', false]], + ['5411', ['5411', false]], + ['5412', ['5412', false]], + ['5413', ['5413', false]], + ['5414', ['5414', false]], + ['5415', ['5415', false]], + ['5416', ['5416', false]], + ['5417', ['5417', false]], + ['5418', ['5418', false]], + ['5419', ['5419', false]], + ['5420', ['5420', false]], + ['5421', ['5421', false]], + ['5422', ['5422', false]], + ['5423', ['5423', false]], + ['5424', ['5424', false]], + ['5425', ['5425', false]], + ['5426', ['5426', false]], + ['5427', ['5427', false]], + ['5428', ['5428', false]], + ['5429', ['5429', false]], + ['5430', ['5430', false]], + ['5431', ['5431', false]], + ['5432', ['5432', false]], + ['5433', ['5433', false]], + ['5434', ['5434', false]], + ['5435', ['5435', false]], + ['5436', ['5436', false]], + ['5437', ['5437', false]], + ['5438', ['5438', false]], + ['5439', ['5439', false]], + ['5440', ['5440', false]], + ['5441', ['5441', false]], + ['5442', ['5442', false]], + ['5443', ['5443', false]], + ['5444', ['5444', false]], + ['5445', ['5445', false]], + ['5446', ['5446', false]], + ['5447', ['5447', false]], + ['5448', ['5448', false]], + ['5449', ['5449', false]], + ['5450', ['5450', false]], + ['5451', ['5451', false]], + ['5452', ['5452', false]], + ['5453', ['5453', false]], + ['5454', ['5454', false]], + ['5455', ['5455', false]], + ['5456', ['5456', false]], + ['5457', ['5457', false]], + ['5458', ['5458', false]], + ['5459', ['5459', false]], + ['5460', ['5460', false]], + ['5461', ['5461', false]], + ['5462', ['5462', false]], + ['5463', ['5463', false]], + ['5464', ['5464', false]], + ['5465', ['5465', false]], + ['5466', ['5466', false]], + ['5467', ['5467', false]], + ['5468', ['5468', false]], + ['5469', ['5469', false]], + ['5470', ['5470', false]], + ['5471', ['5471', false]], + ['5472', ['5472', false]], + ['5473', ['5473', false]], + ['5474', ['5474', false]], + ['5475', ['5475', false]], + ['5476', ['5476', false]], + ['5477', ['5477', false]], + ['5478', ['5478', false]], + ['5479', ['5479', false]], + ['5480', ['5480', false]], + ['5481', ['5481', false]], + ['5482', ['5482', false]], + ['5483', ['5483', false]], + ['5484', ['5484', false]], + ['5485', ['5485', false]], + ['5486', ['5486', false]], + ['5487', ['5487', false]], + ['5488', ['5488', false]], + ['5489', ['5489', false]], + ['5490', ['5490', false]], + ['5491', ['5491', false]], + ['5492', ['5492', false]], + ['5493', ['5493', false]], + ['5494', ['5494', false]], + ['5495', ['5495', false]], + ['5496', ['5496', false]], + ['5497', ['5497', false]], + ['5498', ['5498', false]], + ['5499', ['5499', false]], + ['5500', ['5500', false]], + ['5501', ['5501', false]], + ['5502', ['5502', false]], + ['5503', ['5503', false]], + ['5504', ['5504', false]], + ['5505', ['5505', false]], + ['5506', ['5506', false]], + ['5507', ['5507', false]], + ['5508', ['5508', false]], + ['5509', ['5509', false]], + ['5510', ['5510', false]], + ['5511', ['5511', false]], + ['5512', ['5512', false]], + ['5513', ['5513', false]], + ['5514', ['5514', false]], + ['5515', ['5515', false]], + ['5516', ['5516', false]], + ['5517', ['5517', false]], + ['5518', ['5518', false]], + ['5519', ['5519', false]], + ['5520', ['5520', false]], + ['5521', ['5521', false]], + ['5522', ['5522', false]], + ['5523', ['5523', false]], + ['5524', ['5524', false]], + ['5525', ['5525', false]], + ['5526', ['5526', false]], + ['5527', ['5527', false]], + ['5528', ['5528', false]], + ['5529', ['5529', false]], + ['5530', ['5530', false]], + ['5531', ['5531', false]], + ['5532', ['5532', false]], + ['5533', ['5533', false]], + ['5534', ['5534', false]], + ['5535', ['5535', false]], + ['5536', ['5536', false]], + ['5537', ['5537', false]], + ['5538', ['5538', false]], + ['5539', ['5539', false]], + ['5540', ['5540', false]], + ['5541', ['5541', false]], + ['5542', ['5542', false]], + ['5543', ['5543', false]], + ['5544', ['5544', false]], + ['5545', ['5545', false]], + ['5546', ['5546', false]], + ['5547', ['5547', false]], + ['5548', ['5548', false]], + ['5549', ['5549', false]], + ['5550', ['5550', false]], + ['5551', ['5551', false]], + ['5552', ['5552', false]], + ['5553', ['5553', false]], + ['5554', ['5554', false]], + ['5555', ['5555', false]], + ['5556', ['5556', false]], + ['5557', ['5557', false]], + ['5558', ['5558', false]], + ['5559', ['5559', false]], + ['5560', ['5560', false]], + ['5561', ['5561', false]], + ['5562', ['5562', false]], + ['5563', ['5563', false]], + ['5564', ['5564', false]], + ['5565', ['5565', false]], + ['5566', ['5566', false]], + ['5567', ['5567', false]], + ['5568', ['5568', false]], + ['5569', ['5569', false]], + ['5570', ['5570', false]], + ['5571', ['5571', false]], + ['5572', ['5572', false]], + ['5573', ['5573', false]], + ['5574', ['5574', false]], + ['5575', ['5575', false]], + ['5576', ['5576', false]], + ['5577', ['5577', false]], + ['5578', ['5578', false]], + ['5579', ['5579', false]], + ['5580', ['5580', false]], + ['5581', ['5581', false]], + ['5582', ['5582', false]], + ['5583', ['5583', false]], + ['5584', ['5584', false]], + ['5585', ['5585', false]], + ['5586', ['5586', false]], + ['5587', ['5587', false]], + ['5588', ['5588', false]], + ['5589', ['5589', false]], + ['5590', ['5590', false]], + ['5591', ['5591', false]], + ['5592', ['5592', false]], + ['5593', ['5593', false]], + ['5594', ['5594', false]], + ['5595', ['5595', false]], + ['5596', ['5596', false]], + ['5597', ['5597', false]], + ['5598', ['5598', false]], + ['5599', ['5599', false]], + ['5600', ['5600', false]], + ['5601', ['5601', false]], + ['5602', ['5602', false]], + ['5603', ['5603', false]], + ['5604', ['5604', false]], + ['5605', ['5605', false]], + ['5606', ['5606', false]], + ['5607', ['5607', false]], + ['5608', ['5608', false]], + ['5609', ['5609', false]], + ['5610', ['5610', false]], + ['5611', ['5611', false]], + ['5612', ['5612', false]], + ['5613', ['5613', false]], + ['5614', ['5614', false]], + ['5615', ['5615', false]], + ['5616', ['5616', false]], + ['5617', ['5617', false]], + ['5618', ['5618', false]], + ['5619', ['5619', false]], + ['5620', ['5620', false]], + ['5621', ['5621', false]], + ['5622', ['5622', false]], + ['5623', ['5623', false]], + ['5624', ['5624', false]], + ['5625', ['5625', false]], + ['5626', ['5626', false]], + ['5627', ['5627', false]], + ['5628', ['5628', false]], + ['5629', ['5629', false]], + ['5630', ['5630', false]], + ['5631', ['5631', false]], + ['5632', ['5632', false]], + ['5633', ['5633', false]], + ['5634', ['5634', false]], + ['5635', ['5635', false]], + ['5636', ['5636', false]], + ['5637', ['5637', false]], + ['5638', ['5638', false]], + ['5639', ['5639', false]], + ['5640', ['5640', false]], + ['5641', ['5641', false]], + ['5642', ['5642', false]], + ['5643', ['5643', false]], + ['5644', ['5644', false]], + ['5645', ['5645', false]], + ['5646', ['5646', false]], + ['5647', ['5647', false]], + ['5648', ['5648', false]], + ['5649', ['5649', false]], + ['5650', ['5650', false]], + ['5651', ['5651', false]], + ['5652', ['5652', false]], + ['5653', ['5653', false]], + ['5654', ['5654', false]], + ['5655', ['5655', false]], + ['5656', ['5656', false]], + ['5657', ['5657', false]], + ['5658', ['5658', false]], + ['5659', ['5659', false]], + ['5660', ['5660', false]], + ['5661', ['5661', false]], + ['5662', ['5662', false]], + ['5663', ['5663', false]], + ['5664', ['5664', false]], + ['5665', ['5665', false]], + ['5666', ['5666', false]], + ['5667', ['5667', false]], + ['5668', ['5668', false]], + ['5669', ['5669', false]], + ['5670', ['5670', false]], + ['5671', ['5671', false]], + ['5672', ['5672', false]], + ['5673', ['5673', false]], + ['5674', ['5674', false]], + ['5675', ['5675', false]], + ['5676', ['5676', false]], + ['5677', ['5677', false]], + ['5678', ['5678', false]], + ['5679', ['5679', false]], + ['5680', ['5680', false]], + ['5681', ['5681', false]], + ['5682', ['5682', false]], + ['5683', ['5683', false]], + ['5684', ['5684', false]], + ['5685', ['5685', false]], + ['5686', ['5686', false]], + ['5687', ['5687', false]], + ['5688', ['5688', false]], + ['5689', ['5689', false]], + ['5690', ['5690', false]], + ['5691', ['5691', false]], + ['5692', ['5692', false]], + ['5693', ['5693', false]], + ['5694', ['5694', false]], + ['5695', ['5695', false]], + ['5696', ['5696', false]], + ['5697', ['5697', false]], + ['5698', ['5698', false]], + ['5699', ['5699', false]], + ['5700', ['5700', false]], + ['5701', ['5701', false]], + ['5702', ['5702', false]], + ['5703', ['5703', false]], + ['5704', ['5704', false]], + ['5705', ['5705', false]], + ['5706', ['5706', false]], + ['5707', ['5707', false]], + ['5708', ['5708', false]], + ['5709', ['5709', false]], + ['5710', ['5710', false]], + ['5711', ['5711', false]], + ['5712', ['5712', false]], + ['5713', ['5713', false]], + ['5714', ['5714', false]], + ['5715', ['5715', false]], + ['5716', ['5716', false]], + ['5717', ['5717', false]], + ['5718', ['5718', false]], + ['5719', ['5719', false]], + ['5720', ['5720', false]], + ['5721', ['5721', false]], + ['5722', ['5722', false]], + ['5723', ['5723', false]], + ['5724', ['5724', false]], + ['5725', ['5725', false]], + ['5726', ['5726', false]], + ['5727', ['5727', false]], + ['5728', ['5728', false]], + ['5729', ['5729', false]], + ['5730', ['5730', false]], + ['5731', ['5731', false]], + ['5732', ['5732', false]], + ['5733', ['5733', false]], + ['5734', ['5734', false]], + ['5735', ['5735', false]], + ['5736', ['5736', false]], + ['5737', ['5737', false]], + ['5738', ['5738', false]], + ['5739', ['5739', false]], + ['5740', ['5740', false]], + ['5741', ['5741', false]], + ['5742', ['5742', false]], + ['5743', ['5743', false]], + ['5744', ['5744', false]], + ['5745', ['5745', false]], + ['5746', ['5746', false]], + ['5747', ['5747', false]], + ['5748', ['5748', false]], + ['5749', ['5749', false]], + ['5750', ['5750', false]], + ['5751', ['5751', false]], + ['5752', ['5752', false]], + ['5753', ['5753', false]], + ['5754', ['5754', false]], + ['5755', ['5755', false]], + ['5756', ['5756', false]], + ['5757', ['5757', false]], + ['5758', ['5758', false]], + ['5759', ['5759', false]], + ['5760', ['5760', false]], + ['5761', ['5761', false]], + ['5762', ['5762', false]], + ['5763', ['5763', false]], + ['5764', ['5764', false]], + ['5765', ['5765', false]], + ['5766', ['5766', false]], + ['5767', ['5767', false]], + ['5768', ['5768', false]], + ['5769', ['5769', false]], + ['5770', ['5770', false]], + ['5771', ['5771', false]], + ['5772', ['5772', false]], + ['5773', ['5773', false]], + ['5774', ['5774', false]], + ['5775', ['5775', false]], + ['5776', ['5776', false]], + ['5777', ['5777', false]], + ['5778', ['5778', false]], + ['5779', ['5779', false]], + ['5780', ['5780', false]], + ['5781', ['5781', false]], + ['5782', ['5782', false]], + ['5783', ['5783', false]], + ['5784', ['5784', false]], + ['5785', ['5785', false]], + ['5786', ['5786', false]], + ['5787', ['5787', false]], + ['5788', ['5788', false]], + ['5789', ['5789', false]], + ['5790', ['5790', false]], + ['5791', ['5791', false]], + ['5792', ['5792', false]], + ['5793', ['5793', false]], + ['5794', ['5794', false]], + ['5795', ['5795', false]], + ['5796', ['5796', false]], + ['5797', ['5797', false]], + ['5798', ['5798', false]], + ['5799', ['5799', false]], + ['5800', ['5800', false]], + ['5801', ['5801', false]], + ['5802', ['5802', false]], + ['5803', ['5803', false]], + ['5804', ['5804', false]], + ['5805', ['5805', false]], + ['5806', ['5806', false]], + ['5807', ['5807', false]], + ['5808', ['5808', false]], + ['5809', ['5809', false]], + ['5810', ['5810', false]], + ['5811', ['5811', false]], + ['5812', ['5812', false]], + ['5813', ['5813', false]], + ['5814', ['5814', false]], + ['5815', ['5815', false]], + ['5816', ['5816', false]], + ['5817', ['5817', false]], + ['5818', ['5818', false]], + ['5819', ['5819', false]], + ['5820', ['5820', false]], + ['5821', ['5821', false]], + ['5822', ['5822', false]], + ['5823', ['5823', false]], + ['5824', ['5824', false]], + ['5825', ['5825', false]], + ['5826', ['5826', false]], + ['5827', ['5827', false]], + ['5828', ['5828', false]], + ['5829', ['5829', false]], + ['5830', ['5830', false]], + ['5831', ['5831', false]], + ['5832', ['5832', false]], + ['5833', ['5833', false]], + ['5834', ['5834', false]], + ['5835', ['5835', false]], + ['5836', ['5836', false]], + ['5837', ['5837', false]], + ['5838', ['5838', false]], + ['5839', ['5839', false]], + ['5840', ['5840', false]], + ['5841', ['5841', false]], + ['5842', ['5842', false]], + ['5843', ['5843', false]], + ['5844', ['5844', false]], + ['5845', ['5845', false]], + ['5846', ['5846', false]], + ['5847', ['5847', false]], + ['5848', ['5848', false]], + ['5849', ['5849', false]], + ['5850', ['5850', false]], + ['5851', ['5851', false]], + ['5852', ['5852', false]], + ['5853', ['5853', false]], + ['5854', ['5854', false]], + ['5855', ['5855', false]], + ['5856', ['5856', false]], + ['5857', ['5857', false]], + ['5858', ['5858', false]], + ['5859', ['5859', false]], + ['5860', ['5860', false]], + ['5861', ['5861', false]], + ['5862', ['5862', false]], + ['5863', ['5863', false]], + ['5864', ['5864', false]], + ['5865', ['5865', false]], + ['5866', ['5866', false]], + ['5867', ['5867', false]], + ['5868', ['5868', false]], + ['5869', ['5869', false]], + ['5870', ['5870', false]], + ['5871', ['5871', false]], + ['5872', ['5872', false]], + ['5873', ['5873', false]], + ['5874', ['5874', false]], + ['5875', ['5875', false]], + ['5876', ['5876', false]], + ['5877', ['5877', false]], + ['5878', ['5878', false]], + ['5879', ['5879', false]], + ['5880', ['5880', false]], + ['5881', ['5881', false]], + ['5882', ['5882', false]], + ['5883', ['5883', false]], + ['5884', ['5884', false]], + ['5885', ['5885', false]], + ['5886', ['5886', false]], + ['5887', ['5887', false]], + ['5888', ['5888', false]], + ['5889', ['5889', false]], + ['5890', ['5890', false]], + ['5891', ['5891', false]], + ['5892', ['5892', false]], + ['5893', ['5893', false]], + ['5894', ['5894', false]], + ['5895', ['5895', false]], + ['5896', ['5896', false]], + ['5897', ['5897', false]], + ['5898', ['5898', false]], + ['5899', ['5899', false]], + ['5900', ['5900', false]], + ['5901', ['5901', false]], + ['5902', ['5902', false]], + ['5903', ['5903', false]], + ['5904', ['5904', false]], + ['5905', ['5905', false]], + ['5906', ['5906', false]], + ['5907', ['5907', false]], + ['5908', ['5908', false]], + ['5909', ['5909', false]], + ['5910', ['5910', false]], + ['5911', ['5911', false]], + ['5912', ['5912', false]], + ['5913', ['5913', false]], + ['5914', ['5914', false]], + ['5915', ['5915', false]], + ['5916', ['5916', false]], + ['5917', ['5917', false]], + ['5918', ['5918', false]], + ['5919', ['5919', false]], + ['5920', ['5920', false]], + ['5921', ['5921', false]], + ['5922', ['5922', false]], + ['5923', ['5923', false]], + ['5924', ['5924', false]], + ['5925', ['5925', false]], + ['5926', ['5926', false]], + ['5927', ['5927', false]], + ['5928', ['5928', false]], + ['5929', ['5929', false]], + ['5930', ['5930', false]], + ['5931', ['5931', false]], + ['5932', ['5932', false]], + ['5933', ['5933', false]], + ['5934', ['5934', false]], + ['5935', ['5935', false]], + ['5936', ['5936', false]], + ['5937', ['5937', false]], + ['5938', ['5938', false]], + ['5939', ['5939', false]], + ['5940', ['5940', false]], + ['5941', ['5941', false]], + ['5942', ['5942', false]], + ['5943', ['5943', false]], + ['5944', ['5944', false]], + ['5945', ['5945', false]], + ['5946', ['5946', false]], + ['5947', ['5947', false]], + ['5948', ['5948', false]], + ['5949', ['5949', false]], + ['5950', ['5950', false]], + ['5951', ['5951', false]], + ['5952', ['5952', false]], + ['5953', ['5953', false]], + ['5954', ['5954', false]], + ['5955', ['5955', false]], + ['5956', ['5956', false]], + ['5957', ['5957', false]], + ['5958', ['5958', false]], + ['5959', ['5959', false]], + ['5960', ['5960', false]], + ['5961', ['5961', false]], + ['5962', ['5962', false]], + ['5963', ['5963', false]], + ['5964', ['5964', false]], + ['5965', ['5965', false]], + ['5966', ['5966', false]], + ['5967', ['5967', false]], + ['5968', ['5968', false]], + ['5969', ['5969', false]], + ['5970', ['5970', false]], + ['5971', ['5971', false]], + ['5972', ['5972', false]], + ['5973', ['5973', false]], + ['5974', ['5974', false]], + ['5975', ['5975', false]], + ['5976', ['5976', false]], + ['5977', ['5977', false]], + ['5978', ['5978', false]], + ['5979', ['5979', false]], + ['5980', ['5980', false]], + ['5981', ['5981', false]], + ['5982', ['5982', false]], + ['5983', ['5983', false]], + ['5984', ['5984', false]], + ['5985', ['5985', false]], + ['5986', ['5986', false]], + ['5987', ['5987', false]], + ['5988', ['5988', false]], + ['5989', ['5989', false]], + ['5990', ['5990', false]], + ['5991', ['5991', false]], + ['5992', ['5992', false]], + ['5993', ['5993', false]], + ['5994', ['5994', false]], + ['5995', ['5995', false]], + ['5996', ['5996', false]], + ['5997', ['5997', false]], + ['5998', ['5998', false]], + ['5999', ['5999', false]], + ['6000', ['6000', false]], + ['6001', ['6001', false]], + ['6002', ['6002', false]], + ['6003', ['6003', false]], + ['6004', ['6004', false]], + ['6005', ['6005', false]], + ['6006', ['6006', false]], + ['6007', ['6007', false]], + ['6008', ['6008', false]], + ['6009', ['6009', false]], + ['6010', ['6010', false]], + ['6011', ['6011', false]], + ['6012', ['6012', false]], + ['6013', ['6013', false]], + ['6014', ['6014', false]], + ['6015', ['6015', false]], + ['6016', ['6016', false]], + ['6017', ['6017', false]], + ['6018', ['6018', false]], + ['6019', ['6019', false]], + ['6020', ['6020', false]], + ['6021', ['6021', false]], + ['6022', ['6022', false]], + ['6023', ['6023', false]], + ['6024', ['6024', false]], + ['6025', ['6025', false]], + ['6026', ['6026', false]], + ['6027', ['6027', false]], + ['6028', ['6028', false]], + ['6029', ['6029', false]], + ['6030', ['6030', false]], + ['6031', ['6031', false]], + ['6032', ['6032', false]], + ['6033', ['6033', false]], + ['6034', ['6034', false]], + ['6035', ['6035', false]], + ['6036', ['6036', false]], + ['6037', ['6037', false]], + ['6038', ['6038', false]], + ['6039', ['6039', false]], + ['6040', ['6040', false]], + ['6041', ['6041', false]], + ['6042', ['6042', false]], + ['6043', ['6043', false]], + ['6044', ['6044', false]], + ['6045', ['6045', false]], + ['6046', ['6046', false]], + ['6047', ['6047', false]], + ['6048', ['6048', false]], + ['6049', ['6049', false]], + ['6050', ['6050', false]], + ['6051', ['6051', false]], + ['6052', ['6052', false]], + ['6053', ['6053', false]], + ['6054', ['6054', false]], + ['6055', ['6055', false]], + ['6056', ['6056', false]], + ['6057', ['6057', false]], + ['6058', ['6058', false]], + ['6059', ['6059', false]], + ['6060', ['6060', false]], + ['6061', ['6061', false]], + ['6062', ['6062', false]], + ['6063', ['6063', false]], + ['6064', ['6064', false]], + ['6065', ['6065', false]], + ['6066', ['6066', false]], + ['6067', ['6067', false]], + ['6068', ['6068', false]], + ['6069', ['6069', false]], + ['6070', ['6070', false]], + ['6071', ['6071', false]], + ['6072', ['6072', false]], + ['6073', ['6073', false]], + ['6074', ['6074', false]], + ['6075', ['6075', false]], + ['6076', ['6076', false]], + ['6077', ['6077', false]], + ['6078', ['6078', false]], + ['6079', ['6079', false]], + ['6080', ['6080', false]], + ['6081', ['6081', false]], + ['6082', ['6082', false]], + ['6083', ['6083', false]], + ['6084', ['6084', false]], + ['6085', ['6085', false]], + ['6086', ['6086', false]], + ['6087', ['6087', false]], + ['6088', ['6088', false]], + ['6089', ['6089', false]], + ['6090', ['6090', false]], + ['6091', ['6091', false]], + ['6092', ['6092', false]], + ['6093', ['6093', false]], + ['6094', ['6094', false]], + ['6095', ['6095', false]], + ['6096', ['6096', false]], + ['6097', ['6097', false]], + ['6098', ['6098', false]], + ['6099', ['6099', false]], + ['6100', ['6100', false]], + ['6101', ['6101', false]], + ['6102', ['6102', false]], + ['6103', ['6103', false]], + ['6104', ['6104', false]], + ['6105', ['6105', false]], + ['6106', ['6106', false]], + ['6107', ['6107', false]], + ['6108', ['6108', false]], + ['6109', ['6109', false]], + ['6110', ['6110', false]], + ['6111', ['6111', false]], + ['6112', ['6112', false]], + ['6113', ['6113', false]], + ['6114', ['6114', false]], + ['6115', ['6115', false]], + ['6116', ['6116', false]], + ['6117', ['6117', false]], + ['6118', ['6118', false]], + ['6119', ['6119', false]], + ['6120', ['6120', false]], + ['6121', ['6121', false]], + ['6122', ['6122', false]], + ['6123', ['6123', false]], + ['6124', ['6124', false]], + ['6125', ['6125', false]], + ['6126', ['6126', false]], + ['6127', ['6127', false]], + ['6128', ['6128', false]], + ['6129', ['6129', false]], + ['6130', ['6130', false]], + ['6131', ['6131', false]], + ['6132', ['6132', false]], + ['6133', ['6133', false]], + ['6134', ['6134', false]], + ['6135', ['6135', false]], + ['6136', ['6136', false]], + ['6137', ['6137', false]], + ['6138', ['6138', false]], + ['6139', ['6139', false]], + ['6140', ['6140', false]], + ['6141', ['6141', false]], + ['6142', ['6142', false]], + ['6143', ['6143', false]], + ['6144', ['6144', false]], + ['6145', ['6145', false]], + ['6146', ['6146', false]], + ['6147', ['6147', false]], + ['6148', ['6148', false]], + ['6149', ['6149', false]], + ['6150', ['6150', false]], + ['6151', ['6151', false]], + ['6152', ['6152', false]], + ['6153', ['6153', false]], + ['6154', ['6154', false]], + ['6155', ['6155', false]], + ['6156', ['6156', false]], + ['6157', ['6157', false]], + ['6158', ['6158', false]], + ['6159', ['6159', false]], + ['6160', ['6160', false]], + ['6161', ['6161', false]], + ['6162', ['6162', false]], + ['6163', ['6163', false]], + ['6164', ['6164', false]], + ['6165', ['6165', false]], + ['6166', ['6166', false]], + ['6167', ['6167', false]], + ['6168', ['6168', false]], + ['6169', ['6169', false]], + ['6170', ['6170', false]], + ['6171', ['6171', false]], + ['6172', ['6172', false]], + ['6173', ['6173', false]], + ['6174', ['6174', false]], + ['6175', ['6175', false]], + ['6176', ['6176', false]], + ['6177', ['6177', false]], + ['6178', ['6178', false]], + ['6179', ['6179', false]], + ['6180', ['6180', false]], + ['6181', ['6181', false]], + ['6182', ['6182', false]], + ['6183', ['6183', false]], + ['6184', ['6184', false]], + ['6185', ['6185', false]], + ['6186', ['6186', false]], + ['6187', ['6187', false]], + ['6188', ['6188', false]], + ['6189', ['6189', false]], + ['6190', ['6190', false]], + ['6191', ['6191', false]], + ['6192', ['6192', false]], + ['6193', ['6193', false]], + ['6194', ['6194', false]], + ['6195', ['6195', false]], + ['6196', ['6196', false]], + ['6197', ['6197', false]], + ['6198', ['6198', false]], + ['6199', ['6199', false]], + ['6200', ['6200', false]], + ['6201', ['6201', false]], + ['6202', ['6202', false]], + ['6203', ['6203', false]], + ['6204', ['6204', false]], + ['6205', ['6205', false]], + ['6206', ['6206', false]], + ['6207', ['6207', false]], + ['6208', ['6208', false]], + ['6209', ['6209', false]], + ['6210', ['6210', false]], + ['6211', ['6211', false]], + ['6212', ['6212', false]], + ['6213', ['6213', false]], + ['6214', ['6214', false]], + ['6215', ['6215', false]], + ['6216', ['6216', false]], + ['6217', ['6217', false]], + ['6218', ['6218', false]], + ['6219', ['6219', false]], + ['6220', ['6220', false]], + ['6221', ['6221', false]], + ['6222', ['6222', false]], + ['6223', ['6223', false]], + ['6224', ['6224', false]], + ['6225', ['6225', false]], + ['6226', ['6226', false]], + ['6227', ['6227', false]], + ['6228', ['6228', false]], + ['6229', ['6229', false]], + ['6230', ['6230', false]], + ['6231', ['6231', false]], + ['6232', ['6232', false]], + ['6233', ['6233', false]], + ['6234', ['6234', false]], + ['6235', ['6235', false]], + ['6236', ['6236', false]], + ['6237', ['6237', false]], + ['6238', ['6238', false]], + ['6239', ['6239', false]], + ['6240', ['6240', false]], + ['6241', ['6241', false]], + ['6242', ['6242', false]], + ['6243', ['6243', false]], + ['6244', ['6244', false]], + ['6245', ['6245', false]], + ['6246', ['6246', false]], + ['6247', ['6247', false]], + ['6248', ['6248', false]], + ['6249', ['6249', false]], + ['6250', ['6250', false]], + ['6251', ['6251', false]], + ['6252', ['6252', false]], + ['6253', ['6253', false]], + ['6254', ['6254', false]], + ['6255', ['6255', false]], + ['6256', ['6256', false]], + ['6257', ['6257', false]], + ['6258', ['6258', false]], + ['6259', ['6259', false]], + ['6260', ['6260', false]], + ['6261', ['6261', false]], + ['6262', ['6262', false]], + ['6263', ['6263', false]], + ['6264', ['6264', false]], + ['6265', ['6265', false]], + ['6266', ['6266', false]], + ['6267', ['6267', false]], + ['6268', ['6268', false]], + ['6269', ['6269', false]], + ['6270', ['6270', false]], + ['6271', ['6271', false]], + ['6272', ['6272', false]], + ['6273', ['6273', false]], + ['6274', ['6274', false]], + ['6275', ['6275', false]], + ['6276', ['6276', false]], + ['6277', ['6277', false]], + ['6278', ['6278', false]], + ['6279', ['6279', false]], + ['6280', ['6280', false]], + ['6281', ['6281', false]], + ['6282', ['6282', false]], + ['6283', ['6283', false]], + ['6284', ['6284', false]], + ['6285', ['6285', false]], + ['6286', ['6286', false]], + ['6287', ['6287', false]], + ['6288', ['6288', false]], + ['6289', ['6289', false]], + ['6290', ['6290', false]], + ['6291', ['6291', false]], + ['6292', ['6292', false]], + ['6293', ['6293', false]], + ['6294', ['6294', false]], + ['6295', ['6295', false]], + ['6296', ['6296', false]], + ['6297', ['6297', false]], + ['6298', ['6298', false]], + ['6299', ['6299', false]], + ['6300', ['6300', false]], + ['6301', ['6301', false]], + ['6302', ['6302', false]], + ['6303', ['6303', false]], + ['6304', ['6304', false]], + ['6305', ['6305', false]], + ['6306', ['6306', false]], + ['6307', ['6307', false]], + ['6308', ['6308', false]], + ['6309', ['6309', false]], + ['6310', ['6310', false]], + ['6311', ['6311', false]], + ['6312', ['6312', false]], + ['6313', ['6313', false]], + ['6314', ['6314', false]], + ['6315', ['6315', false]], + ['6316', ['6316', false]], + ['6317', ['6317', false]], + ['6318', ['6318', false]], + ['6319', ['6319', false]], + ['6320', ['6320', false]], + ['6321', ['6321', false]], + ['6322', ['6322', false]], + ['6323', ['6323', false]], + ['6324', ['6324', false]], + ['6325', ['6325', false]], + ['6326', ['6326', false]], + ['6327', ['6327', false]], + ['6328', ['6328', false]], + ['6329', ['6329', false]], + ['6330', ['6330', false]], + ['6331', ['6331', false]], + ['6332', ['6332', false]], + ['6333', ['6333', false]], + ['6334', ['6334', false]], + ['6335', ['6335', false]], + ['6336', ['6336', false]], + ['6337', ['6337', false]], + ['6338', ['6338', false]], + ['6339', ['6339', false]], + ['6340', ['6340', false]], + ['6341', ['6341', false]], + ['6342', ['6342', false]], + ['6343', ['6343', false]], + ['6344', ['6344', false]], + ['6345', ['6345', false]], + ['6346', ['6346', false]], + ['6347', ['6347', false]], + ['6348', ['6348', false]], + ['6349', ['6349', false]], + ['6350', ['6350', false]], + ['6351', ['6351', false]], + ['6352', ['6352', false]], + ['6353', ['6353', false]], + ['6354', ['6354', false]], + ['6355', ['6355', false]], + ['6356', ['6356', false]], + ['6357', ['6357', false]], + ['6358', ['6358', false]], + ['6359', ['6359', false]], + ['6360', ['6360', false]], + ['6361', ['6361', false]], + ['6362', ['6362', false]], + ['6363', ['6363', false]], + ['6364', ['6364', false]], + ['6365', ['6365', false]], + ['6366', ['6366', false]], + ['6367', ['6367', false]], + ['6368', ['6368', false]], + ['6369', ['6369', false]], + ['6370', ['6370', false]], + ['6371', ['6371', false]], + ['6372', ['6372', false]], + ['6373', ['6373', false]], + ['6374', ['6374', false]], + ['6375', ['6375', false]], + ['6376', ['6376', false]], + ['6377', ['6377', false]], + ['6378', ['6378', false]], + ['6379', ['6379', false]], + ['6380', ['6380', false]], + ['6381', ['6381', false]], + ['6382', ['6382', false]], + ['6383', ['6383', false]], + ['6384', ['6384', false]], + ['6385', ['6385', false]], + ['6386', ['6386', false]], + ['6387', ['6387', false]], + ['6388', ['6388', false]], + ['6389', ['6389', false]], + ['6390', ['6390', false]], + ['6391', ['6391', false]], + ['6392', ['6392', false]], + ['6393', ['6393', false]], + ['6394', ['6394', false]], + ['6395', ['6395', false]], + ['6396', ['6396', false]], + ['6397', ['6397', false]], + ['6398', ['6398', false]], + ['6399', ['6399', false]], + ['6400', ['6400', false]], + ['6401', ['6401', false]], + ['6402', ['6402', false]], + ['6403', ['6403', false]], + ['6404', ['6404', false]], + ['6405', ['6405', false]], + ['6406', ['6406', false]], + ['6407', ['6407', false]], + ['6408', ['6408', false]], + ['6409', ['6409', false]], + ['6410', ['6410', false]], + ['6411', ['6411', false]], + ['6412', ['6412', false]], + ['6413', ['6413', false]], + ['6414', ['6414', false]], + ['6415', ['6415', false]], + ['6416', ['6416', false]], + ['6417', ['6417', false]], + ['6418', ['6418', false]], + ['6419', ['6419', false]], + ['6420', ['6420', false]], + ['6421', ['6421', false]], + ['6422', ['6422', false]], + ['6423', ['6423', false]], + ['6424', ['6424', false]], + ['6425', ['6425', false]], + ['6426', ['6426', false]], + ['6427', ['6427', false]], + ['6428', ['6428', false]], + ['6429', ['6429', false]], + ['6430', ['6430', false]], + ['6431', ['6431', false]], + ['6432', ['6432', false]], + ['6433', ['6433', false]], + ['6434', ['6434', false]], + ['6435', ['6435', false]], + ['6436', ['6436', false]], + ['6437', ['6437', false]], + ['6438', ['6438', false]], + ['6439', ['6439', false]], + ['6440', ['6440', false]], + ['6441', ['6441', false]], + ['6442', ['6442', false]], + ['6443', ['6443', false]], + ['6444', ['6444', false]], + ['6445', ['6445', false]], + ['6446', ['6446', false]], + ['6447', ['6447', false]], + ['6448', ['6448', false]], + ['6449', ['6449', false]], + ['6450', ['6450', false]], + ['6451', ['6451', false]], + ['6452', ['6452', false]], + ['6453', ['6453', false]], + ['6454', ['6454', false]], + ['6455', ['6455', false]], + ['6456', ['6456', false]], + ['6457', ['6457', false]], + ['6458', ['6458', false]], + ['6459', ['6459', false]], + ['6460', ['6460', false]], + ['6461', ['6461', false]], + ['6462', ['6462', false]], + ['6463', ['6463', false]], + ['6464', ['6464', false]], + ['6465', ['6465', false]], + ['6466', ['6466', false]], + ['6467', ['6467', false]], + ['6468', ['6468', false]], + ['6469', ['6469', false]], + ['6470', ['6470', false]], + ['6471', ['6471', false]], + ['6472', ['6472', false]], + ['6473', ['6473', false]], + ['6474', ['6474', false]], + ['6475', ['6475', false]], + ['6476', ['6476', false]], + ['6477', ['6477', false]], + ['6478', ['6478', false]], + ['6479', ['6479', false]], + ['6480', ['6480', false]], + ['6481', ['6481', false]], + ['6482', ['6482', false]], + ['6483', ['6483', false]], + ['6484', ['6484', false]], + ['6485', ['6485', false]], + ['6486', ['6486', false]], + ['6487', ['6487', false]], + ['6488', ['6488', false]], + ['6489', ['6489', false]], + ['6490', ['6490', false]], + ['6491', ['6491', false]], + ['6492', ['6492', false]], + ['6493', ['6493', false]], + ['6494', ['6494', false]], + ['6495', ['6495', false]], + ['6496', ['6496', false]], + ['6497', ['6497', false]], + ['6498', ['6498', false]], + ['6499', ['6499', false]], + ['6500', ['6500', false]], + ['6501', ['6501', false]], + ['6502', ['6502', false]], + ['6503', ['6503', false]], + ['6504', ['6504', false]], + ['6505', ['6505', false]], + ['6506', ['6506', false]], + ['6507', ['6507', false]], + ['6508', ['6508', false]], + ['6509', ['6509', false]], + ['6510', ['6510', false]], + ['6511', ['6511', false]], + ['6512', ['6512', false]], + ['6513', ['6513', false]], + ['6514', ['6514', false]], + ['6515', ['6515', false]], + ['6516', ['6516', false]], + ['6517', ['6517', false]], + ['6518', ['6518', false]], + ['6519', ['6519', false]], + ['6520', ['6520', false]], + ['6521', ['6521', false]], + ['6522', ['6522', false]], + ['6523', ['6523', false]], + ['6524', ['6524', false]], + ['6525', ['6525', false]], + ['6526', ['6526', false]], + ['6527', ['6527', false]], + ['6528', ['6528', false]], + ['6529', ['6529', false]], + ['6530', ['6530', false]], + ['6531', ['6531', false]], + ['6532', ['6532', false]], + ['6533', ['6533', false]], + ['6534', ['6534', false]], + ['6535', ['6535', false]], + ['6536', ['6536', false]], + ['6537', ['6537', false]], + ['6538', ['6538', false]], + ['6539', ['6539', false]], + ['6540', ['6540', false]], + ['6541', ['6541', false]], + ['6542', ['6542', false]], + ['6543', ['6543', false]], + ['6544', ['6544', false]], + ['6545', ['6545', false]], + ['6546', ['6546', false]], + ['6547', ['6547', false]], + ['6548', ['6548', false]], + ['6549', ['6549', false]], + ['6550', ['6550', false]], + ['6551', ['6551', false]], + ['6552', ['6552', false]], + ['6553', ['6553', false]], + ['6554', ['6554', false]], + ['6555', ['6555', false]], + ['6556', ['6556', false]], + ['6557', ['6557', false]], + ['6558', ['6558', false]], + ['6559', ['6559', false]], + ['6560', ['6560', false]], + ['6561', ['6561', false]], + ['6562', ['6562', false]], + ['6563', ['6563', false]], + ['6564', ['6564', false]], + ['6565', ['6565', false]], + ['6566', ['6566', false]], + ['6567', ['6567', false]], + ['6568', ['6568', false]], + ['6569', ['6569', false]], + ['6570', ['6570', false]], + ['6571', ['6571', false]], + ['6572', ['6572', false]], + ['6573', ['6573', false]], + ['6574', ['6574', false]], + ['6575', ['6575', false]], + ['6576', ['6576', false]], + ['6577', ['6577', false]], + ['6578', ['6578', false]], + ['6579', ['6579', false]], + ['6580', ['6580', false]], + ['6581', ['6581', false]], + ['6582', ['6582', false]], + ['6583', ['6583', false]], + ['6584', ['6584', false]], + ['6585', ['6585', false]], + ['6586', ['6586', false]], + ['6587', ['6587', false]], + ['6588', ['6588', false]], + ['6589', ['6589', false]], + ['6590', ['6590', false]], + ['6591', ['6591', false]], + ['6592', ['6592', false]], + ['6593', ['6593', false]], + ['6594', ['6594', false]], + ['6595', ['6595', false]], + ['6596', ['6596', false]], + ['6597', ['6597', false]], + ['6598', ['6598', false]], + ['6599', ['6599', false]], + ['6600', ['6600', false]], + ['6601', ['6601', false]], + ['6602', ['6602', false]], + ['6603', ['6603', false]], + ['6604', ['6604', false]], + ['6605', ['6605', false]], + ['6606', ['6606', false]], + ['6607', ['6607', false]], + ['6608', ['6608', false]], + ['6609', ['6609', false]], + ['6610', ['6610', false]], + ['6611', ['6611', false]], + ['6612', ['6612', false]], + ['6613', ['6613', false]], + ['6614', ['6614', false]], + ['6615', ['6615', false]], + ['6616', ['6616', false]], + ['6617', ['6617', false]], + ['6618', ['6618', false]], + ['6619', ['6619', false]], + ['6620', ['6620', false]], + ['6621', ['6621', false]], + ['6622', ['6622', false]], + ['6623', ['6623', false]], + ['6624', ['6624', false]], + ['6625', ['6625', false]], + ['6626', ['6626', false]], + ['6627', ['6627', false]], + ['6628', ['6628', false]], + ['6629', ['6629', false]], + ['6630', ['6630', false]], + ['6631', ['6631', false]], + ['6632', ['6632', false]], + ['6633', ['6633', false]], + ['6634', ['6634', false]], + ['6635', ['6635', false]], + ['6636', ['6636', false]], + ['6637', ['6637', false]], + ['6638', ['6638', false]], + ['6639', ['6639', false]], + ['6640', ['6640', false]], + ['6641', ['6641', false]], + ['6642', ['6642', false]], + ['6643', ['6643', false]], + ['6644', ['6644', false]], + ['6645', ['6645', false]], + ['6646', ['6646', false]], + ['6647', ['6647', false]], + ['6648', ['6648', false]], + ['6649', ['6649', false]], + ['6650', ['6650', false]], + ['6651', ['6651', false]], + ['6652', ['6652', false]], + ['6653', ['6653', false]], + ['6654', ['6654', false]], + ['6655', ['6655', false]], + ['6656', ['6656', false]], + ['6657', ['6657', false]], + ['6658', ['6658', false]], + ['6659', ['6659', false]], + ['6660', ['6660', false]], + ['6661', ['6661', false]], + ['6662', ['6662', false]], + ['6663', ['6663', false]], + ['6664', ['6664', false]], + ['6665', ['6665', false]], + ['6666', ['6666', false]], + ['6667', ['6667', false]], + ['6668', ['6668', false]], + ['6669', ['6669', false]], + ['6670', ['6670', false]], + ['6671', ['6671', false]], + ['6672', ['6672', false]], + ['6673', ['6673', false]], + ['6674', ['6674', false]], + ['6675', ['6675', false]], + ['6676', ['6676', false]], + ['6677', ['6677', false]], + ['6678', ['6678', false]], + ['6679', ['6679', false]], + ['6680', ['6680', false]], + ['6681', ['6681', false]], + ['6682', ['6682', false]], + ['6683', ['6683', false]], + ['6684', ['6684', false]], + ['6685', ['6685', false]], + ['6686', ['6686', false]], + ['6687', ['6687', false]], + ['6688', ['6688', false]], + ['6689', ['6689', false]], + ['6690', ['6690', false]], + ['6691', ['6691', false]], + ['6692', ['6692', false]], + ['6693', ['6693', false]], + ['6694', ['6694', false]], + ['6695', ['6695', false]], + ['6696', ['6696', false]], + ['6697', ['6697', false]], + ['6698', ['6698', false]], + ['6699', ['6699', false]], + ['6700', ['6700', false]], + ['6701', ['6701', false]], + ['6702', ['6702', false]], + ['6703', ['6703', false]], + ['6704', ['6704', false]], + ['6705', ['6705', false]], + ['6706', ['6706', false]], + ['6707', ['6707', false]], + ['6708', ['6708', false]], + ['6709', ['6709', false]], + ['6710', ['6710', false]], + ['6711', ['6711', false]], + ['6712', ['6712', false]], + ['6713', ['6713', false]], + ['6714', ['6714', false]], + ['6715', ['6715', false]], + ['6716', ['6716', false]], + ['6717', ['6717', false]], + ['6718', ['6718', false]], + ['6719', ['6719', false]], + ['6720', ['6720', false]], + ['6721', ['6721', false]], + ['6722', ['6722', false]], + ['6723', ['6723', false]], + ['6724', ['6724', false]], + ['6725', ['6725', false]], + ['6726', ['6726', false]], + ['6727', ['6727', false]], + ['6728', ['6728', false]], + ['6729', ['6729', false]], + ['6730', ['6730', false]], + ['6731', ['6731', false]], + ['6732', ['6732', false]], + ['6733', ['6733', false]], + ['6734', ['6734', false]], + ['6735', ['6735', false]], + ['6736', ['6736', false]], + ['6737', ['6737', false]], + ['6738', ['6738', false]], + ['6739', ['6739', false]], + ['6740', ['6740', false]], + ['6741', ['6741', false]], + ['6742', ['6742', false]], + ['6743', ['6743', false]], + ['6744', ['6744', false]], + ['6745', ['6745', false]], + ['6746', ['6746', false]], + ['6747', ['6747', false]], + ['6748', ['6748', false]], + ['6749', ['6749', false]], + ['6750', ['6750', false]], + ['6751', ['6751', false]], + ['6752', ['6752', false]], + ['6753', ['6753', false]], + ['6754', ['6754', false]], + ['6755', ['6755', false]], + ['6756', ['6756', false]], + ['6757', ['6757', false]], + ['6758', ['6758', false]], + ['6759', ['6759', false]], + ['6760', ['6760', false]], + ['6761', ['6761', false]], + ['6762', ['6762', false]], + ['6763', ['6763', false]], + ['6764', ['6764', false]], + ['6765', ['6765', false]], + ['6766', ['6766', false]], + ['6767', ['6767', false]], + ['6768', ['6768', false]], + ['6769', ['6769', false]], + ['6770', ['6770', false]], + ['6771', ['6771', false]], + ['6772', ['6772', false]], + ['6773', ['6773', false]], + ['6774', ['6774', false]], + ['6775', ['6775', false]], + ['6776', ['6776', false]], + ['6777', ['6777', false]], + ['6778', ['6778', false]], + ['6779', ['6779', false]], + ['6780', ['6780', false]], + ['6781', ['6781', false]], + ['6782', ['6782', false]], + ['6783', ['6783', false]], + ['6784', ['6784', false]], + ['6785', ['6785', false]], + ['6786', ['6786', false]], + ['6787', ['6787', false]], + ['6788', ['6788', false]], + ['6789', ['6789', false]], + ['6790', ['6790', false]], + ['6791', ['6791', false]], + ['6792', ['6792', false]], + ['6793', ['6793', false]], + ['6794', ['6794', false]], + ['6795', ['6795', false]], + ['6796', ['6796', false]], + ['6797', ['6797', false]], + ['6798', ['6798', false]], + ['6799', ['6799', false]], + ['6800', ['6800', false]], + ['6801', ['6801', false]], + ['6802', ['6802', false]], + ['6803', ['6803', false]], + ['6804', ['6804', false]], + ['6805', ['6805', false]], + ['6806', ['6806', false]], + ['6807', ['6807', false]], + ['6808', ['6808', false]], + ['6809', ['6809', false]], + ['6810', ['6810', false]], + ['6811', ['6811', false]], + ['6812', ['6812', false]], + ['6813', ['6813', false]], + ['6814', ['6814', false]], + ['6815', ['6815', false]], + ['6816', ['6816', false]], + ['6817', ['6817', false]], + ['6818', ['6818', false]], + ['6819', ['6819', false]], + ['6820', ['6820', false]], + ['6821', ['6821', false]], + ['6822', ['6822', false]], + ['6823', ['6823', false]], + ['6824', ['6824', false]], + ['6825', ['6825', false]], + ['6826', ['6826', false]], + ['6827', ['6827', false]], + ['6828', ['6828', false]], + ['6829', ['6829', false]], + ['6830', ['6830', false]], + ['6831', ['6831', false]], + ['6832', ['6832', false]], + ['6833', ['6833', false]], + ['6834', ['6834', false]], + ['6835', ['6835', false]], + ['6836', ['6836', false]], + ['6837', ['6837', false]], + ['6838', ['6838', false]], + ['6839', ['6839', false]], + ['6840', ['6840', false]], + ['6841', ['6841', false]], + ['6842', ['6842', false]], + ['6843', ['6843', false]], + ['6844', ['6844', false]], + ['6845', ['6845', false]], + ['6846', ['6846', false]], + ['6847', ['6847', false]], + ['6848', ['6848', false]], + ['6849', ['6849', false]], + ['6850', ['6850', false]], + ['6851', ['6851', false]], + ['6852', ['6852', false]], + ['6853', ['6853', false]], + ['6854', ['6854', false]], + ['6855', ['6855', false]], + ['6856', ['6856', false]], + ['6857', ['6857', false]], + ['6858', ['6858', false]], + ['6859', ['6859', false]], + ['6860', ['6860', false]], + ['6861', ['6861', false]], + ['6862', ['6862', false]], + ['6863', ['6863', false]], + ['6864', ['6864', false]], + ['6865', ['6865', false]], + ['6866', ['6866', false]], + ['6867', ['6867', false]], + ['6868', ['6868', false]], + ['6869', ['6869', false]], + ['6870', ['6870', false]], + ['6871', ['6871', false]], + ['6872', ['6872', false]], + ['6873', ['6873', false]], + ['6874', ['6874', false]], + ['6875', ['6875', false]], + ['6876', ['6876', false]], + ['6877', ['6877', false]], + ['6878', ['6878', false]], + ['6879', ['6879', false]], + ['6880', ['6880', false]], + ['6881', ['6881', false]], + ['6882', ['6882', false]], + ['6883', ['6883', false]], + ['6884', ['6884', false]], + ['6885', ['6885', false]], + ['6886', ['6886', false]], + ['6887', ['6887', false]], + ['6888', ['6888', false]], + ['6889', ['6889', false]], + ['6890', ['6890', false]], + ['6891', ['6891', false]], + ['6892', ['6892', false]], + ['6893', ['6893', false]], + ['6894', ['6894', false]], + ['6895', ['6895', false]], + ['6896', ['6896', false]], + ['6897', ['6897', false]], + ['6898', ['6898', false]], + ['6899', ['6899', false]], + ['6900', ['6900', false]], + ['6901', ['6901', false]], + ['6902', ['6902', false]], + ['6903', ['6903', false]], + ['6904', ['6904', false]], + ['6905', ['6905', false]], + ['6906', ['6906', false]], + ['6907', ['6907', false]], + ['6908', ['6908', false]], + ['6909', ['6909', false]], + ['6910', ['6910', false]], + ['6911', ['6911', false]], + ['6912', ['6912', false]], + ['6913', ['6913', false]], + ['6914', ['6914', false]], + ['6915', ['6915', false]], + ['6916', ['6916', false]], + ['6917', ['6917', false]], + ['6918', ['6918', false]], + ['6919', ['6919', false]], + ['6920', ['6920', false]], + ['6921', ['6921', false]], + ['6922', ['6922', false]], + ['6923', ['6923', false]], + ['6924', ['6924', false]], + ['6925', ['6925', false]], + ['6926', ['6926', false]], + ['6927', ['6927', false]], + ['6928', ['6928', false]], + ['6929', ['6929', false]], + ['6930', ['6930', false]], + ['6931', ['6931', false]], + ['6932', ['6932', false]], + ['6933', ['6933', false]], + ['6934', ['6934', false]], + ['6935', ['6935', false]], + ['6936', ['6936', false]], + ['6937', ['6937', false]], + ['6938', ['6938', false]], + ['6939', ['6939', false]], + ['6940', ['6940', false]], + ['6941', ['6941', false]], + ['6942', ['6942', false]], + ['6943', ['6943', false]], + ['6944', ['6944', false]], + ['6945', ['6945', false]], + ['6946', ['6946', false]], + ['6947', ['6947', false]], + ['6948', ['6948', false]], + ['6949', ['6949', false]], + ['6950', ['6950', false]], + ['6951', ['6951', false]], + ['6952', ['6952', false]], + ['6953', ['6953', false]], + ['6954', ['6954', false]], + ['6955', ['6955', false]], + ['6956', ['6956', false]], + ['6957', ['6957', false]], + ['6958', ['6958', false]], + ['6959', ['6959', false]], + ['6960', ['6960', false]], + ['6961', ['6961', false]], + ['6962', ['6962', false]], + ['6963', ['6963', false]], + ['6964', ['6964', false]], + ['6965', ['6965', false]], + ['6966', ['6966', false]], + ['6967', ['6967', false]], + ['6968', ['6968', false]], + ['6969', ['6969', false]], + ['6970', ['6970', false]], + ['6971', ['6971', false]], + ['6972', ['6972', false]], + ['6973', ['6973', false]], + ['6974', ['6974', false]], + ['6975', ['6975', false]], + ['6976', ['6976', false]], + ['6977', ['6977', false]], + ['6978', ['6978', false]], + ['6979', ['6979', false]], + ['6980', ['6980', false]], + ['6981', ['6981', false]], + ['6982', ['6982', false]], + ['6983', ['6983', false]], + ['6984', ['6984', false]], + ['6985', ['6985', false]], + ['6986', ['6986', false]], + ['6987', ['6987', false]], + ['6988', ['6988', false]], + ['6989', ['6989', false]], + ['6990', ['6990', false]], + ['6991', ['6991', false]], + ['6992', ['6992', false]], + ['6993', ['6993', false]], + ['6994', ['6994', false]], + ['6995', ['6995', false]], + ['6996', ['6996', false]], + ['6997', ['6997', false]], + ['6998', ['6998', false]], + ['6999', ['6999', false]], + ['7000', ['7000', false]], + ['7001', ['7001', false]], + ['7002', ['7002', false]], + ['7003', ['7003', false]], + ['7004', ['7004', false]], + ['7005', ['7005', false]], + ['7006', ['7006', false]], + ['7007', ['7007', false]], + ['7008', ['7008', false]], + ['7009', ['7009', false]], + ['7010', ['7010', false]], + ['7011', ['7011', false]], + ['7012', ['7012', false]], + ['7013', ['7013', false]], + ['7014', ['7014', false]], + ['7015', ['7015', false]], + ['7016', ['7016', false]], + ['7017', ['7017', false]], + ['7018', ['7018', false]], + ['7019', ['7019', false]], + ['7020', ['7020', false]], + ['7021', ['7021', false]], + ['7022', ['7022', false]], + ['7023', ['7023', false]], + ['7024', ['7024', false]], + ['7025', ['7025', false]], + ['7026', ['7026', false]], + ['7027', ['7027', false]], + ['7028', ['7028', false]], + ['7029', ['7029', false]], + ['7030', ['7030', false]], + ['7031', ['7031', false]], + ['7032', ['7032', false]], + ['7033', ['7033', false]], + ['7034', ['7034', false]], + ['7035', ['7035', false]], + ['7036', ['7036', false]], + ['7037', ['7037', false]], + ['7038', ['7038', false]], + ['7039', ['7039', false]], + ['7040', ['7040', false]], + ['7041', ['7041', false]], + ['7042', ['7042', false]], + ['7043', ['7043', false]], + ['7044', ['7044', false]], + ['7045', ['7045', false]], + ['7046', ['7046', false]], + ['7047', ['7047', false]], + ['7048', ['7048', false]], + ['7049', ['7049', false]], + ['7050', ['7050', false]], + ['7051', ['7051', false]], + ['7052', ['7052', false]], + ['7053', ['7053', false]], + ['7054', ['7054', false]], + ['7055', ['7055', false]], + ['7056', ['7056', false]], + ['7057', ['7057', false]], + ['7058', ['7058', false]], + ['7059', ['7059', false]], + ['7060', ['7060', false]], + ['7061', ['7061', false]], + ['7062', ['7062', false]], + ['7063', ['7063', false]], + ['7064', ['7064', false]], + ['7065', ['7065', false]], + ['7066', ['7066', false]], + ['7067', ['7067', false]], + ['7068', ['7068', false]], + ['7069', ['7069', false]], + ['7070', ['7070', false]], + ['7071', ['7071', false]], + ['7072', ['7072', false]], + ['7073', ['7073', false]], + ['7074', ['7074', false]], + ['7075', ['7075', false]], + ['7076', ['7076', false]], + ['7077', ['7077', false]], + ['7078', ['7078', false]], + ['7079', ['7079', false]], + ['7080', ['7080', false]], + ['7081', ['7081', false]], + ['7082', ['7082', false]], + ['7083', ['7083', false]], + ['7084', ['7084', false]], + ['7085', ['7085', false]], + ['7086', ['7086', false]], + ['7087', ['7087', false]], + ['7088', ['7088', false]], + ['7089', ['7089', false]], + ['7090', ['7090', false]], + ['7091', ['7091', false]], + ['7092', ['7092', false]], + ['7093', ['7093', false]], + ['7094', ['7094', false]], + ['7095', ['7095', false]], + ['7096', ['7096', false]], + ['7097', ['7097', false]], + ['7098', ['7098', false]], + ['7099', ['7099', false]], + ['7100', ['7100', false]], + ['7101', ['7101', false]], + ['7102', ['7102', false]], + ['7103', ['7103', false]], + ['7104', ['7104', false]], + ['7105', ['7105', false]], + ['7106', ['7106', false]], + ['7107', ['7107', false]], + ['7108', ['7108', false]], + ['7109', ['7109', false]], + ['7110', ['7110', false]], + ['7111', ['7111', false]], + ['7112', ['7112', false]], + ['7113', ['7113', false]], + ['7114', ['7114', false]], + ['7115', ['7115', false]], + ['7116', ['7116', false]], + ['7117', ['7117', false]], + ['7118', ['7118', false]], + ['7119', ['7119', false]], + ['7120', ['7120', false]], + ['7121', ['7121', false]], + ['7122', ['7122', false]], + ['7123', ['7123', false]], + ['7124', ['7124', false]], + ['7125', ['7125', false]], + ['7126', ['7126', false]], + ['7127', ['7127', false]], + ['7128', ['7128', false]], + ['7129', ['7129', false]], + ['7130', ['7130', false]], + ['7131', ['7131', false]], + ['7132', ['7132', false]], + ['7133', ['7133', false]], + ['7134', ['7134', false]], + ['7135', ['7135', false]], + ['7136', ['7136', false]], + ['7137', ['7137', false]], + ['7138', ['7138', false]], + ['7139', ['7139', false]], + ['7140', ['7140', false]], + ['7141', ['7141', false]], + ['7142', ['7142', false]], + ['7143', ['7143', false]], + ['7144', ['7144', false]], + ['7145', ['7145', false]], + ['7146', ['7146', false]], + ['7147', ['7147', false]], + ['7148', ['7148', false]], + ['7149', ['7149', false]], + ['7150', ['7150', false]], + ['7151', ['7151', false]], + ['7152', ['7152', false]], + ['7153', ['7153', false]], + ['7154', ['7154', false]], + ['7155', ['7155', false]], + ['7156', ['7156', false]], + ['7157', ['7157', false]], + ['7158', ['7158', false]], + ['7159', ['7159', false]], + ['7160', ['7160', false]], + ['7161', ['7161', false]], + ['7162', ['7162', false]], + ['7163', ['7163', false]], + ['7164', ['7164', false]], + ['7165', ['7165', false]], + ['7166', ['7166', false]], + ['7167', ['7167', false]], + ['7168', ['7168', false]], + ['7169', ['7169', false]], + ['7170', ['7170', false]], + ['7171', ['7171', false]], + ['7172', ['7172', false]], + ['7173', ['7173', false]], + ['7174', ['7174', false]], + ['7175', ['7175', false]], + ['7176', ['7176', false]], + ['7177', ['7177', false]], + ['7178', ['7178', false]], + ['7179', ['7179', false]], + ['7180', ['7180', false]], + ['7181', ['7181', false]], + ['7182', ['7182', false]], + ['7183', ['7183', false]], + ['7184', ['7184', false]], + ['7185', ['7185', false]], + ['7186', ['7186', false]], + ['7187', ['7187', false]], + ['7188', ['7188', false]], + ['7189', ['7189', false]], + ['7190', ['7190', false]], + ['7191', ['7191', false]], + ['7192', ['7192', false]], + ['7193', ['7193', false]], + ['7194', ['7194', false]], + ['7195', ['7195', false]], + ['7196', ['7196', false]], + ['7197', ['7197', false]], + ['7198', ['7198', false]], + ['7199', ['7199', false]], + ['7200', ['7200', false]], + ['7201', ['7201', false]], + ['7202', ['7202', false]], + ['7203', ['7203', false]], + ['7204', ['7204', false]], + ['7205', ['7205', false]], + ['7206', ['7206', false]], + ['7207', ['7207', false]], + ['7208', ['7208', false]], + ['7209', ['7209', false]], + ['7210', ['7210', false]], + ['7211', ['7211', false]], + ['7212', ['7212', false]], + ['7213', ['7213', false]], + ['7214', ['7214', false]], + ['7215', ['7215', false]], + ['7216', ['7216', false]], + ['7217', ['7217', false]], + ['7218', ['7218', false]], + ['7219', ['7219', false]], + ['7220', ['7220', false]], + ['7221', ['7221', false]], + ['7222', ['7222', false]], + ['7223', ['7223', false]], + ['7224', ['7224', false]], + ['7225', ['7225', false]], + ['7226', ['7226', false]], + ['7227', ['7227', false]], + ['7228', ['7228', false]], + ['7229', ['7229', false]], + ['7230', ['7230', false]], + ['7231', ['7231', false]], + ['7232', ['7232', false]], + ['7233', ['7233', false]], + ['7234', ['7234', false]], + ['7235', ['7235', false]], + ['7236', ['7236', false]], + ['7237', ['7237', false]], + ['7238', ['7238', false]], + ['7239', ['7239', false]], + ['7240', ['7240', false]], + ['7241', ['7241', false]], + ['7242', ['7242', false]], + ['7243', ['7243', false]], + ['7244', ['7244', false]], + ['7245', ['7245', false]], + ['7246', ['7246', false]], + ['7247', ['7247', false]], + ['7248', ['7248', false]], + ['7249', ['7249', false]], + ['7250', ['7250', false]], + ['7251', ['7251', false]], + ['7252', ['7252', false]], + ['7253', ['7253', false]], + ['7254', ['7254', false]], + ['7255', ['7255', false]], + ['7256', ['7256', false]], + ['7257', ['7257', false]], + ['7258', ['7258', false]], + ['7259', ['7259', false]], + ['7260', ['7260', false]], + ['7261', ['7261', false]], + ['7262', ['7262', false]], + ['7263', ['7263', false]], + ['7264', ['7264', false]], + ['7265', ['7265', false]], + ['7266', ['7266', false]], + ['7267', ['7267', false]], + ['7268', ['7268', false]], + ['7269', ['7269', false]], + ['7270', ['7270', false]], + ['7271', ['7271', false]], + ['7272', ['7272', false]], + ['7273', ['7273', false]], + ['7274', ['7274', false]], + ['7275', ['7275', false]], + ['7276', ['7276', false]], + ['7277', ['7277', false]], + ['7278', ['7278', false]], + ['7279', ['7279', false]], + ['7280', ['7280', false]], + ['7281', ['7281', false]], + ['7282', ['7282', false]], + ['7283', ['7283', false]], + ['7284', ['7284', false]], + ['7285', ['7285', false]], + ['7286', ['7286', false]], + ['7287', ['7287', false]], + ['7288', ['7288', false]], + ['7289', ['7289', false]], + ['7290', ['7290', false]], + ['7291', ['7291', false]], + ['7292', ['7292', false]], + ['7293', ['7293', false]], + ['7294', ['7294', false]], + ['7295', ['7295', false]], + ['7296', ['7296', false]], + ['7297', ['7297', false]], + ['7298', ['7298', false]], + ['7299', ['7299', false]], + ['7300', ['7300', false]], + ['7301', ['7301', false]], + ['7302', ['7302', false]], + ['7303', ['7303', false]], + ['7304', ['7304', false]], + ['7305', ['7305', false]], + ['7306', ['7306', false]], + ['7307', ['7307', false]], + ['7308', ['7308', false]], + ['7309', ['7309', false]], + ['7310', ['7310', false]], + ['7311', ['7311', false]], + ['7312', ['7312', false]], + ['7313', ['7313', false]], + ['7314', ['7314', false]], + ['7315', ['7315', false]], + ['7316', ['7316', false]], + ['7317', ['7317', false]], + ['7318', ['7318', false]], + ['7319', ['7319', false]], + ['7320', ['7320', false]], + ['7321', ['7321', false]], + ['7322', ['7322', false]], + ['7323', ['7323', false]], + ['7324', ['7324', false]], + ['7325', ['7325', false]], + ['7326', ['7326', false]], + ['7327', ['7327', false]], + ['7328', ['7328', false]], + ['7329', ['7329', false]], + ['7330', ['7330', false]], + ['7331', ['7331', false]], + ['7332', ['7332', false]], + ['7333', ['7333', false]], + ['7334', ['7334', false]], + ['7335', ['7335', false]], + ['7336', ['7336', false]], + ['7337', ['7337', false]], + ['7338', ['7338', false]], + ['7339', ['7339', false]], + ['7340', ['7340', false]], + ['7341', ['7341', false]], + ['7342', ['7342', false]], + ['7343', ['7343', false]], + ['7344', ['7344', false]], + ['7345', ['7345', false]], + ['7346', ['7346', false]], + ['7347', ['7347', false]], + ['7348', ['7348', false]], + ['7349', ['7349', false]], + ['7350', ['7350', false]], + ['7351', ['7351', false]], + ['7352', ['7352', false]], + ['7353', ['7353', false]], + ['7354', ['7354', false]], + ['7355', ['7355', false]], + ['7356', ['7356', false]], + ['7357', ['7357', false]], + ['7358', ['7358', false]], + ['7359', ['7359', false]], + ['7360', ['7360', false]], + ['7361', ['7361', false]], + ['7362', ['7362', false]], + ['7363', ['7363', false]], + ['7364', ['7364', false]], + ['7365', ['7365', false]], + ['7366', ['7366', false]], + ['7367', ['7367', false]], + ['7368', ['7368', false]], + ['7369', ['7369', false]], + ['7370', ['7370', false]], + ['7371', ['7371', false]], + ['7372', ['7372', false]], + ['7373', ['7373', false]], + ['7374', ['7374', false]], + ['7375', ['7375', false]], + ['7376', ['7376', false]], + ['7377', ['7377', false]], + ['7378', ['7378', false]], + ['7379', ['7379', false]], + ['7380', ['7380', false]], + ['7381', ['7381', false]], + ['7382', ['7382', false]], + ['7383', ['7383', false]], + ['7384', ['7384', false]], + ['7385', ['7385', false]], + ['7386', ['7386', false]], + ['7387', ['7387', false]], + ['7388', ['7388', false]], + ['7389', ['7389', false]], + ['7390', ['7390', false]], + ['7391', ['7391', false]], + ['7392', ['7392', false]], + ['7393', ['7393', false]], + ['7394', ['7394', false]], + ['7395', ['7395', false]], + ['7396', ['7396', false]], + ['7397', ['7397', false]], + ['7398', ['7398', false]], + ['7399', ['7399', false]], + ['7400', ['7400', false]], + ['7401', ['7401', false]], + ['7402', ['7402', false]], + ['7403', ['7403', false]], + ['7404', ['7404', false]], + ['7405', ['7405', false]], + ['7406', ['7406', false]], + ['7407', ['7407', false]], + ['7408', ['7408', false]], + ['7409', ['7409', false]], + ['7410', ['7410', false]], + ['7411', ['7411', false]], + ['7412', ['7412', false]], + ['7413', ['7413', false]], + ['7414', ['7414', false]], + ['7415', ['7415', false]], + ['7416', ['7416', false]], + ['7417', ['7417', false]], + ['7418', ['7418', false]], + ['7419', ['7419', false]], + ['7420', ['7420', false]], + ['7421', ['7421', false]], + ['7422', ['7422', false]], + ['7423', ['7423', false]], + ['7424', ['7424', false]], + ['7425', ['7425', false]], + ['7426', ['7426', false]], + ['7427', ['7427', false]], + ['7428', ['7428', false]], + ['7429', ['7429', false]], + ['7430', ['7430', false]], + ['7431', ['7431', false]], + ['7432', ['7432', false]], + ['7433', ['7433', false]], + ['7434', ['7434', false]], + ['7435', ['7435', false]], + ['7436', ['7436', false]], + ['7437', ['7437', false]], + ['7438', ['7438', false]], + ['7439', ['7439', false]], + ['7440', ['7440', false]], + ['7441', ['7441', false]], + ['7442', ['7442', false]], + ['7443', ['7443', false]], + ['7444', ['7444', false]], + ['7445', ['7445', false]], + ['7446', ['7446', false]], + ['7447', ['7447', false]], + ['7448', ['7448', false]], + ['7449', ['7449', false]], + ['7450', ['7450', false]], + ['7451', ['7451', false]], + ['7452', ['7452', false]], + ['7453', ['7453', false]], + ['7454', ['7454', false]], + ['7455', ['7455', false]], + ['7456', ['7456', false]], + ['7457', ['7457', false]], + ['7458', ['7458', false]], + ['7459', ['7459', false]], + ['7460', ['7460', false]], + ['7461', ['7461', false]], + ['7462', ['7462', false]], + ['7463', ['7463', false]], + ['7464', ['7464', false]], + ['7465', ['7465', false]], + ['7466', ['7466', false]], + ['7467', ['7467', false]], + ['7468', ['7468', false]], + ['7469', ['7469', false]], + ['7470', ['7470', false]], + ['7471', ['7471', false]], + ['7472', ['7472', false]], + ['7473', ['7473', false]], + ['7474', ['7474', false]], + ['7475', ['7475', false]], + ['7476', ['7476', false]], + ['7477', ['7477', false]], + ['7478', ['7478', false]], + ['7479', ['7479', false]], + ['7480', ['7480', false]], + ['7481', ['7481', false]], + ['7482', ['7482', false]], + ['7483', ['7483', false]], + ['7484', ['7484', false]], + ['7485', ['7485', false]], + ['7486', ['7486', false]], + ['7487', ['7487', false]], + ['7488', ['7488', false]], + ['7489', ['7489', false]], + ['7490', ['7490', false]], + ['7491', ['7491', false]], + ['7492', ['7492', false]], + ['7493', ['7493', false]], + ['7494', ['7494', false]], + ['7495', ['7495', false]], + ['7496', ['7496', false]], + ['7497', ['7497', false]], + ['7498', ['7498', false]], + ['7499', ['7499', false]], + ['7500', ['7500', false]], + ['7501', ['7501', false]], + ['7502', ['7502', false]], + ['7503', ['7503', false]], + ['7504', ['7504', false]], + ['7505', ['7505', false]], + ['7506', ['7506', false]], + ['7507', ['7507', false]], + ['7508', ['7508', false]], + ['7509', ['7509', false]], + ['7510', ['7510', false]], + ['7511', ['7511', false]], + ['7512', ['7512', false]], + ['7513', ['7513', false]], + ['7514', ['7514', false]], + ['7515', ['7515', false]], + ['7516', ['7516', false]], + ['7517', ['7517', false]], + ['7518', ['7518', false]], + ['7519', ['7519', false]], + ['7520', ['7520', false]], + ['7521', ['7521', false]], + ['7522', ['7522', false]], + ['7523', ['7523', false]], + ['7524', ['7524', false]], + ['7525', ['7525', false]], + ['7526', ['7526', false]], + ['7527', ['7527', false]], + ['7528', ['7528', false]], + ['7529', ['7529', false]], + ['7530', ['7530', false]], + ['7531', ['7531', false]], + ['7532', ['7532', false]], + ['7533', ['7533', false]], + ['7534', ['7534', false]], + ['7535', ['7535', false]], + ['7536', ['7536', false]], + ['7537', ['7537', false]], + ['7538', ['7538', false]], + ['7539', ['7539', false]], + ['7540', ['7540', false]], + ['7541', ['7541', false]], + ['7542', ['7542', false]], + ['7543', ['7543', false]], + ['7544', ['7544', false]], + ['7545', ['7545', false]], + ['7546', ['7546', false]], + ['7547', ['7547', false]], + ['7548', ['7548', false]], + ['7549', ['7549', false]], + ['7550', ['7550', false]], + ['7551', ['7551', false]], + ['7552', ['7552', false]], + ['7553', ['7553', false]], + ['7554', ['7554', false]], + ['7555', ['7555', false]], + ['7556', ['7556', false]], + ['7557', ['7557', false]], + ['7558', ['7558', false]], + ['7559', ['7559', false]], + ['7560', ['7560', false]], + ['7561', ['7561', false]], + ['7562', ['7562', false]], + ['7563', ['7563', false]], + ['7564', ['7564', false]], + ['7565', ['7565', false]], + ['7566', ['7566', false]], + ['7567', ['7567', false]], + ['7568', ['7568', false]], + ['7569', ['7569', false]], + ['7570', ['7570', false]], + ['7571', ['7571', false]], + ['7572', ['7572', false]], + ['7573', ['7573', false]], + ['7574', ['7574', false]], + ['7575', ['7575', false]], + ['7576', ['7576', false]], + ['7577', ['7577', false]], + ['7578', ['7578', false]], + ['7579', ['7579', false]], + ['7580', ['7580', false]], + ['7581', ['7581', false]], + ['7582', ['7582', false]], + ['7583', ['7583', false]], + ['7584', ['7584', false]], + ['7585', ['7585', false]], + ['7586', ['7586', false]], + ['7587', ['7587', false]], + ['7588', ['7588', false]], + ['7589', ['7589', false]], + ['7590', ['7590', false]], + ['7591', ['7591', false]], + ['7592', ['7592', false]], + ['7593', ['7593', false]], + ['7594', ['7594', false]], + ['7595', ['7595', false]], + ['7596', ['7596', false]], + ['7597', ['7597', false]], + ['7598', ['7598', false]], + ['7599', ['7599', false]], + ['7600', ['7600', false]], + ['7601', ['7601', false]], + ['7602', ['7602', false]], + ['7603', ['7603', false]], + ['7604', ['7604', false]], + ['7605', ['7605', false]], + ['7606', ['7606', false]], + ['7607', ['7607', false]], + ['7608', ['7608', false]], + ['7609', ['7609', false]], + ['7610', ['7610', false]], + ['7611', ['7611', false]], + ['7612', ['7612', false]], + ['7613', ['7613', false]], + ['7614', ['7614', false]], + ['7615', ['7615', false]], + ['7616', ['7616', false]], + ['7617', ['7617', false]], + ['7618', ['7618', false]], + ['7619', ['7619', false]], + ['7620', ['7620', false]], + ['7621', ['7621', false]], + ['7622', ['7622', false]], + ['7623', ['7623', false]], + ['7624', ['7624', false]], + ['7625', ['7625', false]], + ['7626', ['7626', false]], + ['7627', ['7627', false]], + ['7628', ['7628', false]], + ['7629', ['7629', false]], + ['7630', ['7630', false]], + ['7631', ['7631', false]], + ['7632', ['7632', false]], + ['7633', ['7633', false]], + ['7634', ['7634', false]], + ['7635', ['7635', false]], + ['7636', ['7636', false]], + ['7637', ['7637', false]], + ['7638', ['7638', false]], + ['7639', ['7639', false]], + ['7640', ['7640', false]], + ['7641', ['7641', false]], + ['7642', ['7642', false]], + ['7643', ['7643', false]], + ['7644', ['7644', false]], + ['7645', ['7645', false]], + ['7646', ['7646', false]], + ['7647', ['7647', false]], + ['7648', ['7648', false]], + ['7649', ['7649', false]], + ['7650', ['7650', false]], + ['7651', ['7651', false]], + ['7652', ['7652', false]], + ['7653', ['7653', false]], + ['7654', ['7654', false]], + ['7655', ['7655', false]], + ['7656', ['7656', false]], + ['7657', ['7657', false]], + ['7658', ['7658', false]], + ['7659', ['7659', false]], + ['7660', ['7660', false]], + ['7661', ['7661', false]], + ['7662', ['7662', false]], + ['7663', ['7663', false]], + ['7664', ['7664', false]], + ['7665', ['7665', false]], + ['7666', ['7666', false]], + ['7667', ['7667', false]], + ['7668', ['7668', false]], + ['7669', ['7669', false]], + ['7670', ['7670', false]], + ['7671', ['7671', false]], + ['7672', ['7672', false]], + ['7673', ['7673', false]], + ['7674', ['7674', false]], + ['7675', ['7675', false]], + ['7676', ['7676', false]], + ['7677', ['7677', false]], + ['7678', ['7678', false]], + ['7679', ['7679', false]], + ['7680', ['7680', false]], + ['7681', ['7681', false]], + ['7682', ['7682', false]], + ['7683', ['7683', false]], + ['7684', ['7684', false]], + ['7685', ['7685', false]], + ['7686', ['7686', false]], + ['7687', ['7687', false]], + ['7688', ['7688', false]], + ['7689', ['7689', false]], + ['7690', ['7690', false]], + ['7691', ['7691', false]], + ['7692', ['7692', false]], + ['7693', ['7693', false]], + ['7694', ['7694', false]], + ['7695', ['7695', false]], + ['7696', ['7696', false]], + ['7697', ['7697', false]], + ['7698', ['7698', false]], + ['7699', ['7699', false]], + ['7700', ['7700', false]], + ['7701', ['7701', false]], + ['7702', ['7702', false]], + ['7703', ['7703', false]], + ['7704', ['7704', false]], + ['7705', ['7705', false]], + ['7706', ['7706', false]], + ['7707', ['7707', false]], + ['7708', ['7708', false]], + ['7709', ['7709', false]], + ['7710', ['7710', false]], + ['7711', ['7711', false]], + ['7712', ['7712', false]], + ['7713', ['7713', false]], + ['7714', ['7714', false]], + ['7715', ['7715', false]], + ['7716', ['7716', false]], + ['7717', ['7717', false]], + ['7718', ['7718', false]], + ['7719', ['7719', false]], + ['7720', ['7720', false]], + ['7721', ['7721', false]], + ['7722', ['7722', false]], + ['7723', ['7723', false]], + ['7724', ['7724', false]], + ['7725', ['7725', false]], + ['7726', ['7726', false]], + ['7727', ['7727', false]], + ['7728', ['7728', false]], + ['7729', ['7729', false]], + ['7730', ['7730', false]], + ['7731', ['7731', false]], + ['7732', ['7732', false]], + ['7733', ['7733', false]], + ['7734', ['7734', false]], + ['7735', ['7735', false]], + ['7736', ['7736', false]], + ['7737', ['7737', false]], + ['7738', ['7738', false]], + ['7739', ['7739', false]], + ['7740', ['7740', false]], + ['7741', ['7741', false]], + ['7742', ['7742', false]], + ['7743', ['7743', false]], + ['7744', ['7744', false]], + ['7745', ['7745', false]], + ['7746', ['7746', false]], + ['7747', ['7747', false]], + ['7748', ['7748', false]], + ['7749', ['7749', false]], + ['7750', ['7750', false]], + ['7751', ['7751', false]], + ['7752', ['7752', false]], + ['7753', ['7753', false]], + ['7754', ['7754', false]], + ['7755', ['7755', false]], + ['7756', ['7756', false]], + ['7757', ['7757', false]], + ['7758', ['7758', false]], + ['7759', ['7759', false]], + ['7760', ['7760', false]], + ['7761', ['7761', false]], + ['7762', ['7762', false]], + ['7763', ['7763', false]], + ['7764', ['7764', false]], + ['7765', ['7765', false]], + ['7766', ['7766', false]], + ['7767', ['7767', false]], + ['7768', ['7768', false]], + ['7769', ['7769', false]], + ['7770', ['7770', false]], + ['7771', ['7771', false]], + ['7772', ['7772', false]], + ['7773', ['7773', false]], + ['7774', ['7774', false]], + ['7775', ['7775', false]], + ['7776', ['7776', false]], + ['7777', ['7777', false]], + ['7778', ['7778', false]], + ['7779', ['7779', false]], + ['7780', ['7780', false]], + ['7781', ['7781', false]], + ['7782', ['7782', false]], + ['7783', ['7783', false]], + ['7784', ['7784', false]], + ['7785', ['7785', false]], + ['7786', ['7786', false]], + ['7787', ['7787', false]], + ['7788', ['7788', false]], + ['7789', ['7789', false]], + ['7790', ['7790', false]], + ['7791', ['7791', false]], + ['7792', ['7792', false]], + ['7793', ['7793', false]], + ['7794', ['7794', false]], + ['7795', ['7795', false]], + ['7796', ['7796', false]], + ['7797', ['7797', false]], + ['7798', ['7798', false]], + ['7799', ['7799', false]], + ['7800', ['7800', false]], + ['7801', ['7801', false]], + ['7802', ['7802', false]], + ['7803', ['7803', false]], + ['7804', ['7804', false]], + ['7805', ['7805', false]], + ['7806', ['7806', false]], + ['7807', ['7807', false]], + ['7808', ['7808', false]], + ['7809', ['7809', false]], + ['7810', ['7810', false]], + ['7811', ['7811', false]], + ['7812', ['7812', false]], + ['7813', ['7813', false]], + ['7814', ['7814', false]], + ['7815', ['7815', false]], + ['7816', ['7816', false]], + ['7817', ['7817', false]], + ['7818', ['7818', false]], + ['7819', ['7819', false]], + ['7820', ['7820', false]], + ['7821', ['7821', false]], + ['7822', ['7822', false]], + ['7823', ['7823', false]], + ['7824', ['7824', false]], + ['7825', ['7825', false]], + ['7826', ['7826', false]], + ['7827', ['7827', false]], + ['7828', ['7828', false]], + ['7829', ['7829', false]], + ['7830', ['7830', false]], + ['7831', ['7831', false]], + ['7832', ['7832', false]], + ['7833', ['7833', false]], + ['7834', ['7834', false]], + ['7835', ['7835', false]], + ['7836', ['7836', false]], + ['7837', ['7837', false]], + ['7838', ['7838', false]], + ['7839', ['7839', false]], + ['7840', ['7840', false]], + ['7841', ['7841', false]], + ['7842', ['7842', false]], + ['7843', ['7843', false]], + ['7844', ['7844', false]], + ['7845', ['7845', false]], + ['7846', ['7846', false]], + ['7847', ['7847', false]], + ['7848', ['7848', false]], + ['7849', ['7849', false]], + ['7850', ['7850', false]], + ['7851', ['7851', false]], + ['7852', ['7852', false]], + ['7853', ['7853', false]], + ['7854', ['7854', false]], + ['7855', ['7855', false]], + ['7856', ['7856', false]], + ['7857', ['7857', false]], + ['7858', ['7858', false]], + ['7859', ['7859', false]], + ['7860', ['7860', false]], + ['7861', ['7861', false]], + ['7862', ['7862', false]], + ['7863', ['7863', false]], + ['7864', ['7864', false]], + ['7865', ['7865', false]], + ['7866', ['7866', false]], + ['7867', ['7867', false]], + ['7868', ['7868', false]], + ['7869', ['7869', false]], + ['7870', ['7870', false]], + ['7871', ['7871', false]], + ['7872', ['7872', false]], + ['7873', ['7873', false]], + ['7874', ['7874', false]], + ['7875', ['7875', false]], + ['7876', ['7876', false]], + ['7877', ['7877', false]], + ['7878', ['7878', false]], + ['7879', ['7879', false]], + ['7880', ['7880', false]], + ['7881', ['7881', false]], + ['7882', ['7882', false]], + ['7883', ['7883', false]], + ['7884', ['7884', false]], + ['7885', ['7885', false]], + ['7886', ['7886', false]], + ['7887', ['7887', false]], + ['7888', ['7888', false]], + ['7889', ['7889', false]], + ['7890', ['7890', false]], + ['7891', ['7891', false]], + ['7892', ['7892', false]], + ['7893', ['7893', false]], + ['7894', ['7894', false]], + ['7895', ['7895', false]], + ['7896', ['7896', false]], + ['7897', ['7897', false]], + ['7898', ['7898', false]], + ['7899', ['7899', false]], + ['7900', ['7900', false]], + ['7901', ['7901', false]], + ['7902', ['7902', false]], + ['7903', ['7903', false]], + ['7904', ['7904', false]], + ['7905', ['7905', false]], + ['7906', ['7906', false]], + ['7907', ['7907', false]], + ['7908', ['7908', false]], + ['7909', ['7909', false]], + ['7910', ['7910', false]], + ['7911', ['7911', false]], + ['7912', ['7912', false]], + ['7913', ['7913', false]], + ['7914', ['7914', false]], + ['7915', ['7915', false]], + ['7916', ['7916', false]], + ['7917', ['7917', false]], + ['7918', ['7918', false]], + ['7919', ['7919', false]], + ['7920', ['7920', false]], + ['7921', ['7921', false]], + ['7922', ['7922', false]], + ['7923', ['7923', false]], + ['7924', ['7924', false]], + ['7925', ['7925', false]], + ['7926', ['7926', false]], + ['7927', ['7927', false]], + ['7928', ['7928', false]], + ['7929', ['7929', false]], + ['7930', ['7930', false]], + ['7931', ['7931', false]], + ['7932', ['7932', false]], + ['7933', ['7933', false]], + ['7934', ['7934', false]], + ['7935', ['7935', false]], + ['7936', ['7936', false]], + ['7937', ['7937', false]], + ['7938', ['7938', false]], + ['7939', ['7939', false]], + ['7940', ['7940', false]], + ['7941', ['7941', false]], + ['7942', ['7942', false]], + ['7943', ['7943', false]], + ['7944', ['7944', false]], + ['7945', ['7945', false]], + ['7946', ['7946', false]], + ['7947', ['7947', false]], + ['7948', ['7948', false]], + ['7949', ['7949', false]], + ['7950', ['7950', false]], + ['7951', ['7951', false]], + ['7952', ['7952', false]], + ['7953', ['7953', false]], + ['7954', ['7954', false]], + ['7955', ['7955', false]], + ['7956', ['7956', false]], + ['7957', ['7957', false]], + ['7958', ['7958', false]], + ['7959', ['7959', false]], + ['7960', ['7960', false]], + ['7961', ['7961', false]], + ['7962', ['7962', false]], + ['7963', ['7963', false]], + ['7964', ['7964', false]], + ['7965', ['7965', false]], + ['7966', ['7966', false]], + ['7967', ['7967', false]], + ['7968', ['7968', false]], + ['7969', ['7969', false]], + ['7970', ['7970', false]], + ['7971', ['7971', false]], + ['7972', ['7972', false]], + ['7973', ['7973', false]], + ['7974', ['7974', false]], + ['7975', ['7975', false]], + ['7976', ['7976', false]], + ['7977', ['7977', false]], + ['7978', ['7978', false]], + ['7979', ['7979', false]], + ['7980', ['7980', false]], + ['7981', ['7981', false]], + ['7982', ['7982', false]], + ['7983', ['7983', false]], + ['7984', ['7984', false]], + ['7985', ['7985', false]], + ['7986', ['7986', false]], + ['7987', ['7987', false]], + ['7988', ['7988', false]], + ['7989', ['7989', false]], + ['7990', ['7990', false]], + ['7991', ['7991', false]], + ['7992', ['7992', false]], + ['7993', ['7993', false]], + ['7994', ['7994', false]], + ['7995', ['7995', false]], + ['7996', ['7996', false]], + ['7997', ['7997', false]], + ['7998', ['7998', false]], + ['7999', ['7999', false]], + ['8000', ['8000', false]], + ['8001', ['8001', false]], + ['8002', ['8002', false]], + ['8003', ['8003', false]], + ['8004', ['8004', false]], + ['8005', ['8005', false]], + ['8006', ['8006', false]], + ['8007', ['8007', false]], + ['8008', ['8008', false]], + ['8009', ['8009', false]], + ['8010', ['8010', false]], + ['8011', ['8011', false]], + ['8012', ['8012', false]], + ['8013', ['8013', false]], + ['8014', ['8014', false]], + ['8015', ['8015', false]], + ['8016', ['8016', false]], + ['8017', ['8017', false]], + ['8018', ['8018', false]], + ['8019', ['8019', false]], + ['8020', ['8020', false]], + ['8021', ['8021', false]], + ['8022', ['8022', false]], + ['8023', ['8023', false]], + ['8024', ['8024', false]], + ['8025', ['8025', false]], + ['8026', ['8026', false]], + ['8027', ['8027', false]], + ['8028', ['8028', false]], + ['8029', ['8029', false]], + ['8030', ['8030', false]], + ['8031', ['8031', false]], + ['8032', ['8032', false]], + ['8033', ['8033', false]], + ['8034', ['8034', false]], + ['8035', ['8035', false]], + ['8036', ['8036', false]], + ['8037', ['8037', false]], + ['8038', ['8038', false]], + ['8039', ['8039', false]], + ['8040', ['8040', false]], + ['8041', ['8041', false]], + ['8042', ['8042', false]], + ['8043', ['8043', false]], + ['8044', ['8044', false]], + ['8045', ['8045', false]], + ['8046', ['8046', false]], + ['8047', ['8047', false]], + ['8048', ['8048', false]], + ['8049', ['8049', false]], + ['8050', ['8050', false]], + ['8051', ['8051', false]], + ['8052', ['8052', false]], + ['8053', ['8053', false]], + ['8054', ['8054', false]], + ['8055', ['8055', false]], + ['8056', ['8056', false]], + ['8057', ['8057', false]], + ['8058', ['8058', false]], + ['8059', ['8059', false]], + ['8060', ['8060', false]], + ['8061', ['8061', false]], + ['8062', ['8062', false]], + ['8063', ['8063', false]], + ['8064', ['8064', false]], + ['8065', ['8065', false]], + ['8066', ['8066', false]], + ['8067', ['8067', false]], + ['8068', ['8068', false]], + ['8069', ['8069', false]], + ['8070', ['8070', false]], + ['8071', ['8071', false]], + ['8072', ['8072', false]], + ['8073', ['8073', false]], + ['8074', ['8074', false]], + ['8075', ['8075', false]], + ['8076', ['8076', false]], + ['8077', ['8077', false]], + ['8078', ['8078', false]], + ['8079', ['8079', false]], + ['8080', ['8080', false]], + ['8081', ['8081', false]], + ['8082', ['8082', false]], + ['8083', ['8083', false]], + ['8084', ['8084', false]], + ['8085', ['8085', false]], + ['8086', ['8086', false]], + ['8087', ['8087', false]], + ['8088', ['8088', false]], + ['8089', ['8089', false]], + ['8090', ['8090', false]], + ['8091', ['8091', false]], + ['8092', ['8092', false]], + ['8093', ['8093', false]], + ['8094', ['8094', false]], + ['8095', ['8095', false]], + ['8096', ['8096', false]], + ['8097', ['8097', false]], + ['8098', ['8098', false]], + ['8099', ['8099', false]], + ['8100', ['8100', false]], + ['8101', ['8101', false]], + ['8102', ['8102', false]], + ['8103', ['8103', false]], + ['8104', ['8104', false]], + ['8105', ['8105', false]], + ['8106', ['8106', false]], + ['8107', ['8107', false]], + ['8108', ['8108', false]], + ['8109', ['8109', false]], + ['8110', ['8110', false]], + ['8111', ['8111', false]], + ['8112', ['8112', false]], + ['8113', ['8113', false]], + ['8114', ['8114', false]], + ['8115', ['8115', false]], + ['8116', ['8116', false]], + ['8117', ['8117', false]], + ['8118', ['8118', false]], + ['8119', ['8119', false]], + ['8120', ['8120', false]], + ['8121', ['8121', false]], + ['8122', ['8122', false]], + ['8123', ['8123', false]], + ['8124', ['8124', false]], + ['8125', ['8125', false]], + ['8126', ['8126', false]], + ['8127', ['8127', false]], + ['8128', ['8128', false]], + ['8129', ['8129', false]], + ['8130', ['8130', false]], + ['8131', ['8131', false]], + ['8132', ['8132', false]], + ['8133', ['8133', false]], + ['8134', ['8134', false]], + ['8135', ['8135', false]], + ['8136', ['8136', false]], + ['8137', ['8137', false]], + ['8138', ['8138', false]], + ['8139', ['8139', false]], + ['8140', ['8140', false]], + ['8141', ['8141', false]], + ['8142', ['8142', false]], + ['8143', ['8143', false]], + ['8144', ['8144', false]], + ['8145', ['8145', false]], + ['8146', ['8146', false]], + ['8147', ['8147', false]], + ['8148', ['8148', false]], + ['8149', ['8149', false]], + ['8150', ['8150', false]], + ['8151', ['8151', false]], + ['8152', ['8152', false]], + ['8153', ['8153', false]], + ['8154', ['8154', false]], + ['8155', ['8155', false]], + ['8156', ['8156', false]], + ['8157', ['8157', false]], + ['8158', ['8158', false]], + ['8159', ['8159', false]], + ['8160', ['8160', false]], + ['8161', ['8161', false]], + ['8162', ['8162', false]], + ['8163', ['8163', false]], + ['8164', ['8164', false]], + ['8165', ['8165', false]], + ['8166', ['8166', false]], + ['8167', ['8167', false]], + ['8168', ['8168', false]], + ['8169', ['8169', false]], + ['8170', ['8170', false]], + ['8171', ['8171', false]], + ['8172', ['8172', false]], + ['8173', ['8173', false]], + ['8174', ['8174', false]], + ['8175', ['8175', false]], + ['8176', ['8176', false]], + ['8177', ['8177', false]], + ['8178', ['8178', false]], + ['8179', ['8179', false]], + ['8180', ['8180', false]], + ['8181', ['8181', false]], + ['8182', ['8182', false]], + ['8183', ['8183', false]], + ['8184', ['8184', false]], + ['8185', ['8185', false]], + ['8186', ['8186', false]], + ['8187', ['8187', false]], + ['8188', ['8188', false]], + ['8189', ['8189', false]], + ['8190', ['8190', false]], + ['8191', ['8191', false]], + ['8192', ['8192', false]], + ['8193', ['8193', false]], + ['8194', ['8194', false]], + ['8195', ['8195', false]], + ['8196', ['8196', false]], + ['8197', ['8197', false]], + ['8198', ['8198', false]], + ['8199', ['8199', false]], + ['8200', ['8200', false]], + ['8201', ['8201', false]], + ['8202', ['8202', false]], + ['8203', ['8203', false]], + ['8204', ['8204', false]], + ['8205', ['8205', false]], + ['8206', ['8206', false]], + ['8207', ['8207', false]], + ['8208', ['8208', false]], + ['8209', ['8209', false]], + ['8210', ['8210', false]], + ['8211', ['8211', false]], + ['8212', ['8212', false]], + ['8213', ['8213', false]], + ['8214', ['8214', false]], + ['8215', ['8215', false]], + ['8216', ['8216', false]], + ['8217', ['8217', false]], + ['8218', ['8218', false]], + ['8219', ['8219', false]], + ['8220', ['8220', false]], + ['8221', ['8221', false]], + ['8222', ['8222', false]], + ['8223', ['8223', false]], + ['8224', ['8224', false]], + ['8225', ['8225', false]], + ['8226', ['8226', false]], + ['8227', ['8227', false]], + ['8228', ['8228', false]], + ['8229', ['8229', false]], + ['8230', ['8230', false]], + ['8231', ['8231', false]], + ['8232', ['8232', false]], + ['8233', ['8233', false]], + ['8234', ['8234', false]], + ['8235', ['8235', false]], + ['8236', ['8236', false]], + ['8237', ['8237', false]], + ['8238', ['8238', false]], + ['8239', ['8239', false]], + ['8240', ['8240', false]], + ['8241', ['8241', false]], + ['8242', ['8242', false]], + ['8243', ['8243', false]], + ['8244', ['8244', false]], + ['8245', ['8245', false]], + ['8246', ['8246', false]], + ['8247', ['8247', false]], + ['8248', ['8248', false]], + ['8249', ['8249', false]], + ['8250', ['8250', false]], + ['8251', ['8251', false]], + ['8252', ['8252', false]], + ['8253', ['8253', false]], + ['8254', ['8254', false]], + ['8255', ['8255', false]], + ['8256', ['8256', false]], + ['8257', ['8257', false]], + ['8258', ['8258', false]], + ['8259', ['8259', false]], + ['8260', ['8260', false]], + ['8261', ['8261', false]], + ['8262', ['8262', false]], + ['8263', ['8263', false]], + ['8264', ['8264', false]], + ['8265', ['8265', false]], + ['8266', ['8266', false]], + ['8267', ['8267', false]], + ['8268', ['8268', false]], + ['8269', ['8269', false]], + ['8270', ['8270', false]], + ['8271', ['8271', false]], + ['8272', ['8272', false]], + ['8273', ['8273', false]], + ['8274', ['8274', false]], + ['8275', ['8275', false]], + ['8276', ['8276', false]], + ['8277', ['8277', false]], + ['8278', ['8278', false]], + ['8279', ['8279', false]], + ['8280', ['8280', false]], + ['8281', ['8281', false]], + ['8282', ['8282', false]], + ['8283', ['8283', false]], + ['8284', ['8284', false]], + ['8285', ['8285', false]], + ['8286', ['8286', false]], + ['8287', ['8287', false]], + ['8288', ['8288', false]], + ['8289', ['8289', false]], + ['8290', ['8290', false]], + ['8291', ['8291', false]], + ['8292', ['8292', false]], + ['8293', ['8293', false]], + ['8294', ['8294', false]], + ['8295', ['8295', false]], + ['8296', ['8296', false]], + ['8297', ['8297', false]], + ['8298', ['8298', false]], + ['8299', ['8299', false]], + ['8300', ['8300', false]], + ['8301', ['8301', false]], + ['8302', ['8302', false]], + ['8303', ['8303', false]], + ['8304', ['8304', false]], + ['8305', ['8305', false]], + ['8306', ['8306', false]], + ['8307', ['8307', false]], + ['8308', ['8308', false]], + ['8309', ['8309', false]], + ['8310', ['8310', false]], + ['8311', ['8311', false]], + ['8312', ['8312', false]], + ['8313', ['8313', false]], + ['8314', ['8314', false]], + ['8315', ['8315', false]], + ['8316', ['8316', false]], + ['8317', ['8317', false]], + ['8318', ['8318', false]], + ['8319', ['8319', false]], + ['8320', ['8320', false]], + ['8321', ['8321', false]], + ['8322', ['8322', false]], + ['8323', ['8323', false]], + ['8324', ['8324', false]], + ['8325', ['8325', false]], + ['8326', ['8326', false]], + ['8327', ['8327', false]], + ['8328', ['8328', false]], + ['8329', ['8329', false]], + ['8330', ['8330', false]], + ['8331', ['8331', false]], + ['8332', ['8332', false]], + ['8333', ['8333', false]], + ['8334', ['8334', false]], + ['8335', ['8335', false]], + ['8336', ['8336', false]], + ['8337', ['8337', false]], + ['8338', ['8338', false]], + ['8339', ['8339', false]], + ['8340', ['8340', false]], + ['8341', ['8341', false]], + ['8342', ['8342', false]], + ['8343', ['8343', false]], + ['8344', ['8344', false]], + ['8345', ['8345', false]], + ['8346', ['8346', false]], + ['8347', ['8347', false]], + ['8348', ['8348', false]], + ['8349', ['8349', false]], + ['8350', ['8350', false]], + ['8351', ['8351', false]], + ['8352', ['8352', false]], + ['8353', ['8353', false]], + ['8354', ['8354', false]], + ['8355', ['8355', false]], + ['8356', ['8356', false]], + ['8357', ['8357', false]], + ['8358', ['8358', false]], + ['8359', ['8359', false]], + ['8360', ['8360', false]], + ['8361', ['8361', false]], + ['8362', ['8362', false]], + ['8363', ['8363', false]], + ['8364', ['8364', false]], + ['8365', ['8365', false]], + ['8366', ['8366', false]], + ['8367', ['8367', false]], + ['8368', ['8368', false]], + ['8369', ['8369', false]], + ['8370', ['8370', false]], + ['8371', ['8371', false]], + ['8372', ['8372', false]], + ['8373', ['8373', false]], + ['8374', ['8374', false]], + ['8375', ['8375', false]], + ['8376', ['8376', false]], + ['8377', ['8377', false]], + ['8378', ['8378', false]], + ['8379', ['8379', false]], + ['8380', ['8380', false]], + ['8381', ['8381', false]], + ['8382', ['8382', false]], + ['8383', ['8383', false]], + ['8384', ['8384', false]], + ['8385', ['8385', false]], + ['8386', ['8386', false]], + ['8387', ['8387', false]], + ['8388', ['8388', false]], + ['8389', ['8389', false]], + ['8390', ['8390', false]], + ['8391', ['8391', false]], + ['8392', ['8392', false]], + ['8393', ['8393', false]], + ['8394', ['8394', false]], + ['8395', ['8395', false]], + ['8396', ['8396', false]], + ['8397', ['8397', false]], + ['8398', ['8398', false]], + ['8399', ['8399', false]], + ['8400', ['8400', false]], + ['8401', ['8401', false]], + ['8402', ['8402', false]], + ['8403', ['8403', false]], + ['8404', ['8404', false]], + ['8405', ['8405', false]], + ['8406', ['8406', false]], + ['8407', ['8407', false]], + ['8408', ['8408', false]], + ['8409', ['8409', false]], + ['8410', ['8410', false]], + ['8411', ['8411', false]], + ['8412', ['8412', false]], + ['8413', ['8413', false]], + ['8414', ['8414', false]], + ['8415', ['8415', false]], + ['8416', ['8416', false]], + ['8417', ['8417', false]], + ['8418', ['8418', false]], + ['8419', ['8419', false]], + ['8420', ['8420', false]], + ['8421', ['8421', false]], + ['8422', ['8422', false]], + ['8423', ['8423', false]], + ['8424', ['8424', false]], + ['8425', ['8425', false]], + ['8426', ['8426', false]], + ['8427', ['8427', false]], + ['8428', ['8428', false]], + ['8429', ['8429', false]], + ['8430', ['8430', false]], + ['8431', ['8431', false]], + ['8432', ['8432', false]], + ['8433', ['8433', false]], + ['8434', ['8434', false]], + ['8435', ['8435', false]], + ['8436', ['8436', false]], + ['8437', ['8437', false]], + ['8438', ['8438', false]], + ['8439', ['8439', false]], + ['8440', ['8440', false]], + ['8441', ['8441', false]], + ['8442', ['8442', false]], + ['8443', ['8443', false]], + ['8444', ['8444', false]], + ['8445', ['8445', false]], + ['8446', ['8446', false]], + ['8447', ['8447', false]], + ['8448', ['8448', false]], + ['8449', ['8449', false]], + ['8450', ['8450', false]], + ['8451', ['8451', false]], + ['8452', ['8452', false]], + ['8453', ['8453', false]], + ['8454', ['8454', false]], + ['8455', ['8455', false]], + ['8456', ['8456', false]], + ['8457', ['8457', false]], + ['8458', ['8458', false]], + ['8459', ['8459', false]], + ['8460', ['8460', false]], + ['8461', ['8461', false]], + ['8462', ['8462', false]], + ['8463', ['8463', false]], + ['8464', ['8464', false]], + ['8465', ['8465', false]], + ['8466', ['8466', false]], + ['8467', ['8467', false]], + ['8468', ['8468', false]], + ['8469', ['8469', false]], + ['8470', ['8470', false]], + ['8471', ['8471', false]], + ['8472', ['8472', false]], + ['8473', ['8473', false]], + ['8474', ['8474', false]], + ['8475', ['8475', false]], + ['8476', ['8476', false]], + ['8477', ['8477', false]], + ['8478', ['8478', false]], + ['8479', ['8479', false]], + ['8480', ['8480', false]], + ['8481', ['8481', false]], + ['8482', ['8482', false]], + ['8483', ['8483', false]], + ['8484', ['8484', false]], + ['8485', ['8485', false]], + ['8486', ['8486', false]], + ['8487', ['8487', false]], + ['8488', ['8488', false]], + ['8489', ['8489', false]], + ['8490', ['8490', false]], + ['8491', ['8491', false]], + ['8492', ['8492', false]], + ['8493', ['8493', false]], + ['8494', ['8494', false]], + ['8495', ['8495', false]], + ['8496', ['8496', false]], + ['8497', ['8497', false]], + ['8498', ['8498', false]], + ['8499', ['8499', false]], + ['8500', ['8500', false]], + ['8501', ['8501', false]], + ['8502', ['8502', false]], + ['8503', ['8503', false]], + ['8504', ['8504', false]], + ['8505', ['8505', false]], + ['8506', ['8506', false]], + ['8507', ['8507', false]], + ['8508', ['8508', false]], + ['8509', ['8509', false]], + ['8510', ['8510', false]], + ['8511', ['8511', false]], + ['8512', ['8512', false]], + ['8513', ['8513', false]], + ['8514', ['8514', false]], + ['8515', ['8515', false]], + ['8516', ['8516', false]], + ['8517', ['8517', false]], + ['8518', ['8518', false]], + ['8519', ['8519', false]], + ['8520', ['8520', false]], + ['8521', ['8521', false]], + ['8522', ['8522', false]], + ['8523', ['8523', false]], + ['8524', ['8524', false]], + ['8525', ['8525', false]], + ['8526', ['8526', false]], + ['8527', ['8527', false]], + ['8528', ['8528', false]], + ['8529', ['8529', false]], + ['8530', ['8530', false]], + ['8531', ['8531', false]], + ['8532', ['8532', false]], + ['8533', ['8533', false]], + ['8534', ['8534', false]], + ['8535', ['8535', false]], + ['8536', ['8536', false]], + ['8537', ['8537', false]], + ['8538', ['8538', false]], + ['8539', ['8539', false]], + ['8540', ['8540', false]], + ['8541', ['8541', false]], + ['8542', ['8542', false]], + ['8543', ['8543', false]], + ['8544', ['8544', false]], + ['8545', ['8545', false]], + ['8546', ['8546', false]], + ['8547', ['8547', false]], + ['8548', ['8548', false]], + ['8549', ['8549', false]], + ['8550', ['8550', false]], + ['8551', ['8551', false]], + ['8552', ['8552', false]], + ['8553', ['8553', false]], + ['8554', ['8554', false]], + ['8555', ['8555', false]], + ['8556', ['8556', false]], + ['8557', ['8557', false]], + ['8558', ['8558', false]], + ['8559', ['8559', false]], + ['8560', ['8560', false]], + ['8561', ['8561', false]], + ['8562', ['8562', false]], + ['8563', ['8563', false]], + ['8564', ['8564', false]], + ['8565', ['8565', false]], + ['8566', ['8566', false]], + ['8567', ['8567', false]], + ['8568', ['8568', false]], + ['8569', ['8569', false]], + ['8570', ['8570', false]], + ['8571', ['8571', false]], + ['8572', ['8572', false]], + ['8573', ['8573', false]], + ['8574', ['8574', false]], + ['8575', ['8575', false]], + ['8576', ['8576', false]], + ['8577', ['8577', false]], + ['8578', ['8578', false]], + ['8579', ['8579', false]], + ['8580', ['8580', false]], + ['8581', ['8581', false]], + ['8582', ['8582', false]], + ['8583', ['8583', false]], + ['8584', ['8584', false]], + ['8585', ['8585', false]], + ['8586', ['8586', false]], + ['8587', ['8587', false]], + ['8588', ['8588', false]], + ['8589', ['8589', false]], + ['8590', ['8590', false]], + ['8591', ['8591', false]], + ['8592', ['8592', false]], + ['8593', ['8593', false]], + ['8594', ['8594', false]], + ['8595', ['8595', false]], + ['8596', ['8596', false]], + ['8597', ['8597', false]], + ['8598', ['8598', false]], + ['8599', ['8599', false]], + ['8600', ['8600', false]], + ['8601', ['8601', false]], + ['8602', ['8602', false]], + ['8603', ['8603', false]], + ['8604', ['8604', false]], + ['8605', ['8605', false]], + ['8606', ['8606', false]], + ['8607', ['8607', false]], + ['8608', ['8608', false]], + ['8609', ['8609', false]], + ['8610', ['8610', false]], + ['8611', ['8611', false]], + ['8612', ['8612', false]], + ['8613', ['8613', false]], + ['8614', ['8614', false]], + ['8615', ['8615', false]], + ['8616', ['8616', false]], + ['8617', ['8617', false]], + ['8618', ['8618', false]], + ['8619', ['8619', false]], + ['8620', ['8620', false]], + ['8621', ['8621', false]], + ['8622', ['8622', false]], + ['8623', ['8623', false]], + ['8624', ['8624', false]], + ['8625', ['8625', false]], + ['8626', ['8626', false]], + ['8627', ['8627', false]], + ['8628', ['8628', false]], + ['8629', ['8629', false]], + ['8630', ['8630', false]], + ['8631', ['8631', false]], + ['8632', ['8632', false]], + ['8633', ['8633', false]], + ['8634', ['8634', false]], + ['8635', ['8635', false]], + ['8636', ['8636', false]], + ['8637', ['8637', false]], + ['8638', ['8638', false]], + ['8639', ['8639', false]], + ['8640', ['8640', false]], + ['8641', ['8641', false]], + ['8642', ['8642', false]], + ['8643', ['8643', false]], + ['8644', ['8644', false]], + ['8645', ['8645', false]], + ['8646', ['8646', false]], + ['8647', ['8647', false]], + ['8648', ['8648', false]], + ['8649', ['8649', false]], + ['8650', ['8650', false]], + ['8651', ['8651', false]], + ['8652', ['8652', false]], + ['8653', ['8653', false]], + ['8654', ['8654', false]], + ['8655', ['8655', false]], + ['8656', ['8656', false]], + ['8657', ['8657', false]], + ['8658', ['8658', false]], + ['8659', ['8659', false]], + ['8660', ['8660', false]], + ['8661', ['8661', false]], + ['8662', ['8662', false]], + ['8663', ['8663', false]], + ['8664', ['8664', false]], + ['8665', ['8665', false]], + ['8666', ['8666', false]], + ['8667', ['8667', false]], + ['8668', ['8668', false]], + ['8669', ['8669', false]], + ['8670', ['8670', false]], + ['8671', ['8671', false]], + ['8672', ['8672', false]], + ['8673', ['8673', false]], + ['8674', ['8674', false]], + ['8675', ['8675', false]], + ['8676', ['8676', false]], + ['8677', ['8677', false]], + ['8678', ['8678', false]], + ['8679', ['8679', false]], + ['8680', ['8680', false]], + ['8681', ['8681', false]], + ['8682', ['8682', false]], + ['8683', ['8683', false]], + ['8684', ['8684', false]], + ['8685', ['8685', false]], + ['8686', ['8686', false]], + ['8687', ['8687', false]], + ['8688', ['8688', false]], + ['8689', ['8689', false]], + ['8690', ['8690', false]], + ['8691', ['8691', false]], + ['8692', ['8692', false]], + ['8693', ['8693', false]], + ['8694', ['8694', false]], + ['8695', ['8695', false]], + ['8696', ['8696', false]], + ['8697', ['8697', false]], + ['8698', ['8698', false]], + ['8699', ['8699', false]], + ['8700', ['8700', false]], + ['8701', ['8701', false]], + ['8702', ['8702', false]], + ['8703', ['8703', false]], + ['8704', ['8704', false]], + ['8705', ['8705', false]], + ['8706', ['8706', false]], + ['8707', ['8707', false]], + ['8708', ['8708', false]], + ['8709', ['8709', false]], + ['8710', ['8710', false]], + ['8711', ['8711', false]], + ['8712', ['8712', false]], + ['8713', ['8713', false]], + ['8714', ['8714', false]], + ['8715', ['8715', false]], + ['8716', ['8716', false]], + ['8717', ['8717', false]], + ['8718', ['8718', false]], + ['8719', ['8719', false]], + ['8720', ['8720', false]], + ['8721', ['8721', false]], + ['8722', ['8722', false]], + ['8723', ['8723', false]], + ['8724', ['8724', false]], + ['8725', ['8725', false]], + ['8726', ['8726', false]], + ['8727', ['8727', false]], + ['8728', ['8728', false]], + ['8729', ['8729', false]], + ['8730', ['8730', false]], + ['8731', ['8731', false]], + ['8732', ['8732', false]], + ['8733', ['8733', false]], + ['8734', ['8734', false]], + ['8735', ['8735', false]], + ['8736', ['8736', false]], + ['8737', ['8737', false]], + ['8738', ['8738', false]], + ['8739', ['8739', false]], + ['8740', ['8740', false]], + ['8741', ['8741', false]], + ['8742', ['8742', false]], + ['8743', ['8743', false]], + ['8744', ['8744', false]], + ['8745', ['8745', false]], + ['8746', ['8746', false]], + ['8747', ['8747', false]], + ['8748', ['8748', false]], + ['8749', ['8749', false]], + ['8750', ['8750', false]], + ['8751', ['8751', false]], + ['8752', ['8752', false]], + ['8753', ['8753', false]], + ['8754', ['8754', false]], + ['8755', ['8755', false]], + ['8756', ['8756', false]], + ['8757', ['8757', false]], + ['8758', ['8758', false]], + ['8759', ['8759', false]], + ['8760', ['8760', false]], + ['8761', ['8761', false]], + ['8762', ['8762', false]], + ['8763', ['8763', false]], + ['8764', ['8764', false]], + ['8765', ['8765', false]], + ['8766', ['8766', false]], + ['8767', ['8767', false]], + ['8768', ['8768', false]], + ['8769', ['8769', false]], + ['8770', ['8770', false]], + ['8771', ['8771', false]], + ['8772', ['8772', false]], + ['8773', ['8773', false]], + ['8774', ['8774', false]], + ['8775', ['8775', false]], + ['8776', ['8776', false]], + ['8777', ['8777', false]], + ['8778', ['8778', false]], + ['8779', ['8779', false]], + ['8780', ['8780', false]], + ['8781', ['8781', false]], + ['8782', ['8782', false]], + ['8783', ['8783', false]], + ['8784', ['8784', false]], + ['8785', ['8785', false]], + ['8786', ['8786', false]], + ['8787', ['8787', false]], + ['8788', ['8788', false]], + ['8789', ['8789', false]], + ['8790', ['8790', false]], + ['8791', ['8791', false]], + ['8792', ['8792', false]], + ['8793', ['8793', false]], + ['8794', ['8794', false]], + ['8795', ['8795', false]], + ['8796', ['8796', false]], + ['8797', ['8797', false]], + ['8798', ['8798', false]], + ['8799', ['8799', false]], + ['8800', ['8800', false]], + ['8801', ['8801', false]], + ['8802', ['8802', false]], + ['8803', ['8803', false]], + ['8804', ['8804', false]], + ['8805', ['8805', false]], + ['8806', ['8806', false]], + ['8807', ['8807', false]], + ['8808', ['8808', false]], + ['8809', ['8809', false]], + ['8810', ['8810', false]], + ['8811', ['8811', false]], + ['8812', ['8812', false]], + ['8813', ['8813', false]], + ['8814', ['8814', false]], + ['8815', ['8815', false]], + ['8816', ['8816', false]], + ['8817', ['8817', false]], + ['8818', ['8818', false]], + ['8819', ['8819', false]], + ['8820', ['8820', false]], + ['8821', ['8821', false]], + ['8822', ['8822', false]], + ['8823', ['8823', false]], + ['8824', ['8824', false]], + ['8825', ['8825', false]], + ['8826', ['8826', false]], + ['8827', ['8827', false]], + ['8828', ['8828', false]], + ['8829', ['8829', false]], + ['8830', ['8830', false]], + ['8831', ['8831', false]], + ['8832', ['8832', false]], + ['8833', ['8833', false]], + ['8834', ['8834', false]], + ['8835', ['8835', false]], + ['8836', ['8836', false]], + ['8837', ['8837', false]], + ['8838', ['8838', false]], + ['8839', ['8839', false]], + ['8840', ['8840', false]], + ['8841', ['8841', false]], + ['8842', ['8842', false]], + ['8843', ['8843', false]], + ['8844', ['8844', false]], + ['8845', ['8845', false]], + ['8846', ['8846', false]], + ['8847', ['8847', false]], + ['8848', ['8848', false]], + ['8849', ['8849', false]], + ['8850', ['8850', false]], + ['8851', ['8851', false]], + ['8852', ['8852', false]], + ['8853', ['8853', false]], + ['8854', ['8854', false]], + ['8855', ['8855', false]], + ['8856', ['8856', false]], + ['8857', ['8857', false]], + ['8858', ['8858', false]], + ['8859', ['8859', false]], + ['8860', ['8860', false]], + ['8861', ['8861', false]], + ['8862', ['8862', false]], + ['8863', ['8863', false]], + ['8864', ['8864', false]], + ['8865', ['8865', false]], + ['8866', ['8866', false]], + ['8867', ['8867', false]], + ['8868', ['8868', false]], + ['8869', ['8869', false]], + ['8870', ['8870', false]], + ['8871', ['8871', false]], + ['8872', ['8872', false]], + ['8873', ['8873', false]], + ['8874', ['8874', false]], + ['8875', ['8875', false]], + ['8876', ['8876', false]], + ['8877', ['8877', false]], + ['8878', ['8878', false]], + ['8879', ['8879', false]], + ['8880', ['8880', false]], + ['8881', ['8881', false]], + ['8882', ['8882', false]], + ['8883', ['8883', false]], + ['8884', ['8884', false]], + ['8885', ['8885', false]], + ['8886', ['8886', false]], + ['8887', ['8887', false]], + ['8888', ['8888', false]], + ['8889', ['8889', false]], + ['8890', ['8890', false]], + ['8891', ['8891', false]], + ['8892', ['8892', false]], + ['8893', ['8893', false]], + ['8894', ['8894', false]], + ['8895', ['8895', false]], + ['8896', ['8896', false]], + ['8897', ['8897', false]], + ['8898', ['8898', false]], + ['8899', ['8899', false]], + ['8900', ['8900', false]], + ['8901', ['8901', false]], + ['8902', ['8902', false]], + ['8903', ['8903', false]], + ['8904', ['8904', false]], + ['8905', ['8905', false]], + ['8906', ['8906', false]], + ['8907', ['8907', false]], + ['8908', ['8908', false]], + ['8909', ['8909', false]], + ['8910', ['8910', false]], + ['8911', ['8911', false]], + ['8912', ['8912', false]], + ['8913', ['8913', false]], + ['8914', ['8914', false]], + ['8915', ['8915', false]], + ['8916', ['8916', false]], + ['8917', ['8917', false]], + ['8918', ['8918', false]], + ['8919', ['8919', false]], + ['8920', ['8920', false]], + ['8921', ['8921', false]], + ['8922', ['8922', false]], + ['8923', ['8923', false]], + ['8924', ['8924', false]], + ['8925', ['8925', false]], + ['8926', ['8926', false]], + ['8927', ['8927', false]], + ['8928', ['8928', false]], + ['8929', ['8929', false]], + ['8930', ['8930', false]], + ['8931', ['8931', false]], + ['8932', ['8932', false]], + ['8933', ['8933', false]], + ['8934', ['8934', false]], + ['8935', ['8935', false]], + ['8936', ['8936', false]], + ['8937', ['8937', false]], + ['8938', ['8938', false]], + ['8939', ['8939', false]], + ['8940', ['8940', false]], + ['8941', ['8941', false]], + ['8942', ['8942', false]], + ['8943', ['8943', false]], + ['8944', ['8944', false]], + ['8945', ['8945', false]], + ['8946', ['8946', false]], + ['8947', ['8947', false]], + ['8948', ['8948', false]], + ['8949', ['8949', false]], + ['8950', ['8950', false]], + ['8951', ['8951', false]], + ['8952', ['8952', false]], + ['8953', ['8953', false]], + ['8954', ['8954', false]], + ['8955', ['8955', false]], + ['8956', ['8956', false]], + ['8957', ['8957', false]], + ['8958', ['8958', false]], + ['8959', ['8959', false]], + ['8960', ['8960', false]], + ['8961', ['8961', false]], + ['8962', ['8962', false]], + ['8963', ['8963', false]], + ['8964', ['8964', false]], + ['8965', ['8965', false]], + ['8966', ['8966', false]], + ['8967', ['8967', false]], + ['8968', ['8968', false]], + ['8969', ['8969', false]], + ['8970', ['8970', false]], + ['8971', ['8971', false]], + ['8972', ['8972', false]], + ['8973', ['8973', false]], + ['8974', ['8974', false]], + ['8975', ['8975', false]], + ['8976', ['8976', false]], + ['8977', ['8977', false]], + ['8978', ['8978', false]], + ['8979', ['8979', false]], + ['8980', ['8980', false]], + ['8981', ['8981', false]], + ['8982', ['8982', false]], + ['8983', ['8983', false]], + ['8984', ['8984', false]], + ['8985', ['8985', false]], + ['8986', ['8986', false]], + ['8987', ['8987', false]], + ['8988', ['8988', false]], + ['8989', ['8989', false]], + ['8990', ['8990', false]], + ['8991', ['8991', false]], + ['8992', ['8992', false]], + ['8993', ['8993', false]], + ['8994', ['8994', false]], + ['8995', ['8995', false]], + ['8996', ['8996', false]], + ['8997', ['8997', false]], + ['8998', ['8998', false]], + ['8999', ['8999', false]], + ['9000', ['9000', false]], + ['9001', ['9001', false]], + ['9002', ['9002', false]], + ['9003', ['9003', false]], + ['9004', ['9004', false]], + ['9005', ['9005', false]], + ['9006', ['9006', false]], + ['9007', ['9007', false]], + ['9008', ['9008', false]], + ['9009', ['9009', false]], + ['9010', ['9010', false]], + ['9011', ['9011', false]], + ['9012', ['9012', false]], + ['9013', ['9013', false]], + ['9014', ['9014', false]], + ['9015', ['9015', false]], + ['9016', ['9016', false]], + ['9017', ['9017', false]], + ['9018', ['9018', false]], + ['9019', ['9019', false]], + ['9020', ['9020', false]], + ['9021', ['9021', false]], + ['9022', ['9022', false]], + ['9023', ['9023', false]], + ['9024', ['9024', false]], + ['9025', ['9025', false]], + ['9026', ['9026', false]], + ['9027', ['9027', false]], + ['9028', ['9028', false]], + ['9029', ['9029', false]], + ['9030', ['9030', false]], + ['9031', ['9031', false]], + ['9032', ['9032', false]], + ['9033', ['9033', false]], + ['9034', ['9034', false]], + ['9035', ['9035', false]], + ['9036', ['9036', false]], + ['9037', ['9037', false]], + ['9038', ['9038', false]], + ['9039', ['9039', false]], + ['9040', ['9040', false]], + ['9041', ['9041', false]], + ['9042', ['9042', false]], + ['9043', ['9043', false]], + ['9044', ['9044', false]], + ['9045', ['9045', false]], + ['9046', ['9046', false]], + ['9047', ['9047', false]], + ['9048', ['9048', false]], + ['9049', ['9049', false]], + ['9050', ['9050', false]], + ['9051', ['9051', false]], + ['9052', ['9052', false]], + ['9053', ['9053', false]], + ['9054', ['9054', false]], + ['9055', ['9055', false]], + ['9056', ['9056', false]], + ['9057', ['9057', false]], + ['9058', ['9058', false]], + ['9059', ['9059', false]], + ['9060', ['9060', false]], + ['9061', ['9061', false]], + ['9062', ['9062', false]], + ['9063', ['9063', false]], + ['9064', ['9064', false]], + ['9065', ['9065', false]], + ['9066', ['9066', false]], + ['9067', ['9067', false]], + ['9068', ['9068', false]], + ['9069', ['9069', false]], + ['9070', ['9070', false]], + ['9071', ['9071', false]], + ['9072', ['9072', false]], + ['9073', ['9073', false]], + ['9074', ['9074', false]], + ['9075', ['9075', false]], + ['9076', ['9076', false]], + ['9077', ['9077', false]], + ['9078', ['9078', false]], + ['9079', ['9079', false]], + ['9080', ['9080', false]], + ['9081', ['9081', false]], + ['9082', ['9082', false]], + ['9083', ['9083', false]], + ['9084', ['9084', false]], + ['9085', ['9085', false]], + ['9086', ['9086', false]], + ['9087', ['9087', false]], + ['9088', ['9088', false]], + ['9089', ['9089', false]], + ['9090', ['9090', false]], + ['9091', ['9091', false]], + ['9092', ['9092', false]], + ['9093', ['9093', false]], + ['9094', ['9094', false]], + ['9095', ['9095', false]], + ['9096', ['9096', false]], + ['9097', ['9097', false]], + ['9098', ['9098', false]], + ['9099', ['9099', false]], + ['9100', ['9100', false]], + ['9101', ['9101', false]], + ['9102', ['9102', false]], + ['9103', ['9103', false]], + ['9104', ['9104', false]], + ['9105', ['9105', false]], + ['9106', ['9106', false]], + ['9107', ['9107', false]], + ['9108', ['9108', false]], + ['9109', ['9109', false]], + ['9110', ['9110', false]], + ['9111', ['9111', false]], + ['9112', ['9112', false]], + ['9113', ['9113', false]], + ['9114', ['9114', false]], + ['9115', ['9115', false]], + ['9116', ['9116', false]], + ['9117', ['9117', false]], + ['9118', ['9118', false]], + ['9119', ['9119', false]], + ['9120', ['9120', false]], + ['9121', ['9121', false]], + ['9122', ['9122', false]], + ['9123', ['9123', false]], + ['9124', ['9124', false]], + ['9125', ['9125', false]], + ['9126', ['9126', false]], + ['9127', ['9127', false]], + ['9128', ['9128', false]], + ['9129', ['9129', false]], + ['9130', ['9130', false]], + ['9131', ['9131', false]], + ['9132', ['9132', false]], + ['9133', ['9133', false]], + ['9134', ['9134', false]], + ['9135', ['9135', false]], + ['9136', ['9136', false]], + ['9137', ['9137', false]], + ['9138', ['9138', false]], + ['9139', ['9139', false]], + ['9140', ['9140', false]], + ['9141', ['9141', false]], + ['9142', ['9142', false]], + ['9143', ['9143', false]], + ['9144', ['9144', false]], + ['9145', ['9145', false]], + ['9146', ['9146', false]], + ['9147', ['9147', false]], + ['9148', ['9148', false]], + ['9149', ['9149', false]], + ['9150', ['9150', false]], + ['9151', ['9151', false]], + ['9152', ['9152', false]], + ['9153', ['9153', false]], + ['9154', ['9154', false]], + ['9155', ['9155', false]], + ['9156', ['9156', false]], + ['9157', ['9157', false]], + ['9158', ['9158', false]], + ['9159', ['9159', false]], + ['9160', ['9160', false]], + ['9161', ['9161', false]], + ['9162', ['9162', false]], + ['9163', ['9163', false]], + ['9164', ['9164', false]], + ['9165', ['9165', false]], + ['9166', ['9166', false]], + ['9167', ['9167', false]], + ['9168', ['9168', false]], + ['9169', ['9169', false]], + ['9170', ['9170', false]], + ['9171', ['9171', false]], + ['9172', ['9172', false]], + ['9173', ['9173', false]], + ['9174', ['9174', false]], + ['9175', ['9175', false]], + ['9176', ['9176', false]], + ['9177', ['9177', false]], + ['9178', ['9178', false]], + ['9179', ['9179', false]], + ['9180', ['9180', false]], + ['9181', ['9181', false]], + ['9182', ['9182', false]], + ['9183', ['9183', false]], + ['9184', ['9184', false]], + ['9185', ['9185', false]], + ['9186', ['9186', false]], + ['9187', ['9187', false]], + ['9188', ['9188', false]], + ['9189', ['9189', false]], + ['9190', ['9190', false]], + ['9191', ['9191', false]], + ['9192', ['9192', false]], + ['9193', ['9193', false]], + ['9194', ['9194', false]], + ['9195', ['9195', false]], + ['9196', ['9196', false]], + ['9197', ['9197', false]], + ['9198', ['9198', false]], + ['9199', ['9199', false]], + ['9200', ['9200', false]], + ['9201', ['9201', false]], + ['9202', ['9202', false]], + ['9203', ['9203', false]], + ['9204', ['9204', false]], + ['9205', ['9205', false]], + ['9206', ['9206', false]], + ['9207', ['9207', false]], + ['9208', ['9208', false]], + ['9209', ['9209', false]], + ['9210', ['9210', false]], + ['9211', ['9211', false]], + ['9212', ['9212', false]], + ['9213', ['9213', false]], + ['9214', ['9214', false]], + ['9215', ['9215', false]], + ['9216', ['9216', false]], + ['9217', ['9217', false]], + ['9218', ['9218', false]], + ['9219', ['9219', false]], + ['9220', ['9220', false]], + ['9221', ['9221', false]], + ['9222', ['9222', false]], + ['9223', ['9223', false]], + ['9224', ['9224', false]], + ['9225', ['9225', false]], + ['9226', ['9226', false]], + ['9227', ['9227', false]], + ['9228', ['9228', false]], + ['9229', ['9229', false]], + ['9230', ['9230', false]], + ['9231', ['9231', false]], + ['9232', ['9232', false]], + ['9233', ['9233', false]], + ['9234', ['9234', false]], + ['9235', ['9235', false]], + ['9236', ['9236', false]], + ['9237', ['9237', false]], + ['9238', ['9238', false]], + ['9239', ['9239', false]], + ['9240', ['9240', false]], + ['9241', ['9241', false]], + ['9242', ['9242', false]], + ['9243', ['9243', false]], + ['9244', ['9244', false]], + ['9245', ['9245', false]], + ['9246', ['9246', false]], + ['9247', ['9247', false]], + ['9248', ['9248', false]], + ['9249', ['9249', false]], + ['9250', ['9250', false]], + ['9251', ['9251', false]], + ['9252', ['9252', false]], + ['9253', ['9253', false]], + ['9254', ['9254', false]], + ['9255', ['9255', false]], + ['9256', ['9256', false]], + ['9257', ['9257', false]], + ['9258', ['9258', false]], + ['9259', ['9259', false]], + ['9260', ['9260', false]], + ['9261', ['9261', false]], + ['9262', ['9262', false]], + ['9263', ['9263', false]], + ['9264', ['9264', false]], + ['9265', ['9265', false]], + ['9266', ['9266', false]], + ['9267', ['9267', false]], + ['9268', ['9268', false]], + ['9269', ['9269', false]], + ['9270', ['9270', false]], + ['9271', ['9271', false]], + ['9272', ['9272', false]], + ['9273', ['9273', false]], + ['9274', ['9274', false]], + ['9275', ['9275', false]], + ['9276', ['9276', false]], + ['9277', ['9277', false]], + ['9278', ['9278', false]], + ['9279', ['9279', false]], + ['9280', ['9280', false]], + ['9281', ['9281', false]], + ['9282', ['9282', false]], + ['9283', ['9283', false]], + ['9284', ['9284', false]], + ['9285', ['9285', false]], + ['9286', ['9286', false]], + ['9287', ['9287', false]], + ['9288', ['9288', false]], + ['9289', ['9289', false]], + ['9290', ['9290', false]], + ['9291', ['9291', false]], + ['9292', ['9292', false]], + ['9293', ['9293', false]], + ['9294', ['9294', false]], + ['9295', ['9295', false]], + ['9296', ['9296', false]], + ['9297', ['9297', false]], + ['9298', ['9298', false]], + ['9299', ['9299', false]], + ['9300', ['9300', false]], + ['9301', ['9301', false]], + ['9302', ['9302', false]], + ['9303', ['9303', false]], + ['9304', ['9304', false]], + ['9305', ['9305', false]], + ['9306', ['9306', false]], + ['9307', ['9307', false]], + ['9308', ['9308', false]], + ['9309', ['9309', false]], + ['9310', ['9310', false]], + ['9311', ['9311', false]], + ['9312', ['9312', false]], + ['9313', ['9313', false]], + ['9314', ['9314', false]], + ['9315', ['9315', false]], + ['9316', ['9316', false]], + ['9317', ['9317', false]], + ['9318', ['9318', false]], + ['9319', ['9319', false]], + ['9320', ['9320', false]], + ['9321', ['9321', false]], + ['9322', ['9322', false]], + ['9323', ['9323', false]], + ['9324', ['9324', false]], + ['9325', ['9325', false]], + ['9326', ['9326', false]], + ['9327', ['9327', false]], + ['9328', ['9328', false]], + ['9329', ['9329', false]], + ['9330', ['9330', false]], + ['9331', ['9331', false]], + ['9332', ['9332', false]], + ['9333', ['9333', false]], + ['9334', ['9334', false]], + ['9335', ['9335', false]], + ['9336', ['9336', false]], + ['9337', ['9337', false]], + ['9338', ['9338', false]], + ['9339', ['9339', false]], + ['9340', ['9340', false]], + ['9341', ['9341', false]], + ['9342', ['9342', false]], + ['9343', ['9343', false]], + ['9344', ['9344', false]], + ['9345', ['9345', false]], + ['9346', ['9346', false]], + ['9347', ['9347', false]], + ['9348', ['9348', false]], + ['9349', ['9349', false]], + ['9350', ['9350', false]], + ['9351', ['9351', false]], + ['9352', ['9352', false]], + ['9353', ['9353', false]], + ['9354', ['9354', false]], + ['9355', ['9355', false]], + ['9356', ['9356', false]], + ['9357', ['9357', false]], + ['9358', ['9358', false]], + ['9359', ['9359', false]], + ['9360', ['9360', false]], + ['9361', ['9361', false]], + ['9362', ['9362', false]], + ['9363', ['9363', false]], + ['9364', ['9364', false]], + ['9365', ['9365', false]], + ['9366', ['9366', false]], + ['9367', ['9367', false]], + ['9368', ['9368', false]], + ['9369', ['9369', false]], + ['9370', ['9370', false]], + ['9371', ['9371', false]], + ['9372', ['9372', false]], + ['9373', ['9373', false]], + ['9374', ['9374', false]], + ['9375', ['9375', false]], + ['9376', ['9376', false]], + ['9377', ['9377', false]], + ['9378', ['9378', false]], + ['9379', ['9379', false]], + ['9380', ['9380', false]], + ['9381', ['9381', false]], + ['9382', ['9382', false]], + ['9383', ['9383', false]], + ['9384', ['9384', false]], + ['9385', ['9385', false]], + ['9386', ['9386', false]], + ['9387', ['9387', false]], + ['9388', ['9388', false]], + ['9389', ['9389', false]], + ['9390', ['9390', false]], + ['9391', ['9391', false]], + ['9392', ['9392', false]], + ['9393', ['9393', false]], + ['9394', ['9394', false]], + ['9395', ['9395', false]], + ['9396', ['9396', false]], + ['9397', ['9397', false]], + ['9398', ['9398', false]], + ['9399', ['9399', false]], + ['9400', ['9400', false]], + ['9401', ['9401', false]], + ['9402', ['9402', false]], + ['9403', ['9403', false]], + ['9404', ['9404', false]], + ['9405', ['9405', false]], + ['9406', ['9406', false]], + ['9407', ['9407', false]], + ['9408', ['9408', false]], + ['9409', ['9409', false]], + ['9410', ['9410', false]], + ['9411', ['9411', false]], + ['9412', ['9412', false]], + ['9413', ['9413', false]], + ['9414', ['9414', false]], + ['9415', ['9415', false]], + ['9416', ['9416', false]], + ['9417', ['9417', false]], + ['9418', ['9418', false]], + ['9419', ['9419', false]], + ['9420', ['9420', false]], + ['9421', ['9421', false]], + ['9422', ['9422', false]], + ['9423', ['9423', false]], + ['9424', ['9424', false]], + ['9425', ['9425', false]], + ['9426', ['9426', false]], + ['9427', ['9427', false]], + ['9428', ['9428', false]], + ['9429', ['9429', false]], + ['9430', ['9430', false]], + ['9431', ['9431', false]], + ['9432', ['9432', false]], + ['9433', ['9433', false]], + ['9434', ['9434', false]], + ['9435', ['9435', false]], + ['9436', ['9436', false]], + ['9437', ['9437', false]], + ['9438', ['9438', false]], + ['9439', ['9439', false]], + ['9440', ['9440', false]], + ['9441', ['9441', false]], + ['9442', ['9442', false]], + ['9443', ['9443', false]], + ['9444', ['9444', false]], + ['9445', ['9445', false]], + ['9446', ['9446', false]], + ['9447', ['9447', false]], + ['9448', ['9448', false]], + ['9449', ['9449', false]], + ['9450', ['9450', false]], + ['9451', ['9451', false]], + ['9452', ['9452', false]], + ['9453', ['9453', false]], + ['9454', ['9454', false]], + ['9455', ['9455', false]], + ['9456', ['9456', false]], + ['9457', ['9457', false]], + ['9458', ['9458', false]], + ['9459', ['9459', false]], + ['9460', ['9460', false]], + ['9461', ['9461', false]], + ['9462', ['9462', false]], + ['9463', ['9463', false]], + ['9464', ['9464', false]], + ['9465', ['9465', false]], + ['9466', ['9466', false]], + ['9467', ['9467', false]], + ['9468', ['9468', false]], + ['9469', ['9469', false]], + ['9470', ['9470', false]], + ['9471', ['9471', false]], + ['9472', ['9472', false]], + ['9473', ['9473', false]], + ['9474', ['9474', false]], + ['9475', ['9475', false]], + ['9476', ['9476', false]], + ['9477', ['9477', false]], + ['9478', ['9478', false]], + ['9479', ['9479', false]], + ['9480', ['9480', false]], + ['9481', ['9481', false]], + ['9482', ['9482', false]], + ['9483', ['9483', false]], + ['9484', ['9484', false]], + ['9485', ['9485', false]], + ['9486', ['9486', false]], + ['9487', ['9487', false]], + ['9488', ['9488', false]], + ['9489', ['9489', false]], + ['9490', ['9490', false]], + ['9491', ['9491', false]], + ['9492', ['9492', false]], + ['9493', ['9493', false]], + ['9494', ['9494', false]], + ['9495', ['9495', false]], + ['9496', ['9496', false]], + ['9497', ['9497', false]], + ['9498', ['9498', false]], + ['9499', ['9499', false]], + ['9500', ['9500', false]], + ['9501', ['9501', false]], + ['9502', ['9502', false]], + ['9503', ['9503', false]], + ['9504', ['9504', false]], + ['9505', ['9505', false]], + ['9506', ['9506', false]], + ['9507', ['9507', false]], + ['9508', ['9508', false]], + ['9509', ['9509', false]], + ['9510', ['9510', false]], + ['9511', ['9511', false]], + ['9512', ['9512', false]], + ['9513', ['9513', false]], + ['9514', ['9514', false]], + ['9515', ['9515', false]], + ['9516', ['9516', false]], + ['9517', ['9517', false]], + ['9518', ['9518', false]], + ['9519', ['9519', false]], + ['9520', ['9520', false]], + ['9521', ['9521', false]], + ['9522', ['9522', false]], + ['9523', ['9523', false]], + ['9524', ['9524', false]], + ['9525', ['9525', false]], + ['9526', ['9526', false]], + ['9527', ['9527', false]], + ['9528', ['9528', false]], + ['9529', ['9529', false]], + ['9530', ['9530', false]], + ['9531', ['9531', false]], + ['9532', ['9532', false]], + ['9533', ['9533', false]], + ['9534', ['9534', false]], + ['9535', ['9535', false]], + ['9536', ['9536', false]], + ['9537', ['9537', false]], + ['9538', ['9538', false]], + ['9539', ['9539', false]], + ['9540', ['9540', false]], + ['9541', ['9541', false]], + ['9542', ['9542', false]], + ['9543', ['9543', false]], + ['9544', ['9544', false]], + ['9545', ['9545', false]], + ['9546', ['9546', false]], + ['9547', ['9547', false]], + ['9548', ['9548', false]], + ['9549', ['9549', false]], + ['9550', ['9550', false]], + ['9551', ['9551', false]], + ['9552', ['9552', false]], + ['9553', ['9553', false]], + ['9554', ['9554', false]], + ['9555', ['9555', false]], + ['9556', ['9556', false]], + ['9557', ['9557', false]], + ['9558', ['9558', false]], + ['9559', ['9559', false]], + ['9560', ['9560', false]], + ['9561', ['9561', false]], + ['9562', ['9562', false]], + ['9563', ['9563', false]], + ['9564', ['9564', false]], + ['9565', ['9565', false]], + ['9566', ['9566', false]], + ['9567', ['9567', false]], + ['9568', ['9568', false]], + ['9569', ['9569', false]], + ['9570', ['9570', false]], + ['9571', ['9571', false]], + ['9572', ['9572', false]], + ['9573', ['9573', false]], + ['9574', ['9574', false]], + ['9575', ['9575', false]], + ['9576', ['9576', false]], + ['9577', ['9577', false]], + ['9578', ['9578', false]], + ['9579', ['9579', false]], + ['9580', ['9580', false]], + ['9581', ['9581', false]], + ['9582', ['9582', false]], + ['9583', ['9583', false]], + ['9584', ['9584', false]], + ['9585', ['9585', false]], + ['9586', ['9586', false]], + ['9587', ['9587', false]], + ['9588', ['9588', false]], + ['9589', ['9589', false]], + ['9590', ['9590', false]], + ['9591', ['9591', false]], + ['9592', ['9592', false]], + ['9593', ['9593', false]], + ['9594', ['9594', false]], + ['9595', ['9595', false]], + ['9596', ['9596', false]], + ['9597', ['9597', false]], + ['9598', ['9598', false]], + ['9599', ['9599', false]], + ['9600', ['9600', false]], + ['9601', ['9601', false]], + ['9602', ['9602', false]], + ['9603', ['9603', false]], + ['9604', ['9604', false]], + ['9605', ['9605', false]], + ['9606', ['9606', false]], + ['9607', ['9607', false]], + ['9608', ['9608', false]], + ['9609', ['9609', false]], + ['9610', ['9610', false]], + ['9611', ['9611', false]], + ['9612', ['9612', false]], + ['9613', ['9613', false]], + ['9614', ['9614', false]], + ['9615', ['9615', false]], + ['9616', ['9616', false]], + ['9617', ['9617', false]], + ['9618', ['9618', false]], + ['9619', ['9619', false]], + ['9620', ['9620', false]], + ['9621', ['9621', false]], + ['9622', ['9622', false]], + ['9623', ['9623', false]], + ['9624', ['9624', false]], + ['9625', ['9625', false]], + ['9626', ['9626', false]], + ['9627', ['9627', false]], + ['9628', ['9628', false]], + ['9629', ['9629', false]], + ['9630', ['9630', false]], + ['9631', ['9631', false]], + ['9632', ['9632', false]], + ['9633', ['9633', false]], + ['9634', ['9634', false]], + ['9635', ['9635', false]], + ['9636', ['9636', false]], + ['9637', ['9637', false]], + ['9638', ['9638', false]], + ['9639', ['9639', false]], + ['9640', ['9640', false]], + ['9641', ['9641', false]], + ['9642', ['9642', false]], + ['9643', ['9643', false]], + ['9644', ['9644', false]], + ['9645', ['9645', false]], + ['9646', ['9646', false]], + ['9647', ['9647', false]], + ['9648', ['9648', false]], + ['9649', ['9649', false]], + ['9650', ['9650', false]], + ['9651', ['9651', false]], + ['9652', ['9652', false]], + ['9653', ['9653', false]], + ['9654', ['9654', false]], + ['9655', ['9655', false]], + ['9656', ['9656', false]], + ['9657', ['9657', false]], + ['9658', ['9658', false]], + ['9659', ['9659', false]], + ['9660', ['9660', false]], + ['9661', ['9661', false]], + ['9662', ['9662', false]], + ['9663', ['9663', false]], + ['9664', ['9664', false]], + ['9665', ['9665', false]], + ['9666', ['9666', false]], + ['9667', ['9667', false]], + ['9668', ['9668', false]], + ['9669', ['9669', false]], + ['9670', ['9670', false]], + ['9671', ['9671', false]], + ['9672', ['9672', false]], + ['9673', ['9673', false]], + ['9674', ['9674', false]], + ['9675', ['9675', false]], + ['9676', ['9676', false]], + ['9677', ['9677', false]], + ['9678', ['9678', false]], + ['9679', ['9679', false]], + ['9680', ['9680', false]], + ['9681', ['9681', false]], + ['9682', ['9682', false]], + ['9683', ['9683', false]], + ['9684', ['9684', false]], + ['9685', ['9685', false]], + ['9686', ['9686', false]], + ['9687', ['9687', false]], + ['9688', ['9688', false]], + ['9689', ['9689', false]], + ['9690', ['9690', false]], + ['9691', ['9691', false]], + ['9692', ['9692', false]], + ['9693', ['9693', false]], + ['9694', ['9694', false]], + ['9695', ['9695', false]], + ['9696', ['9696', false]], + ['9697', ['9697', false]], + ['9698', ['9698', false]], + ['9699', ['9699', false]], + ['9700', ['9700', false]], + ['9701', ['9701', false]], + ['9702', ['9702', false]], + ['9703', ['9703', false]], + ['9704', ['9704', false]], + ['9705', ['9705', false]], + ['9706', ['9706', false]], + ['9707', ['9707', false]], + ['9708', ['9708', false]], + ['9709', ['9709', false]], + ['9710', ['9710', false]], + ['9711', ['9711', false]], + ['9712', ['9712', false]], + ['9713', ['9713', false]], + ['9714', ['9714', false]], + ['9715', ['9715', false]], + ['9716', ['9716', false]], + ['9717', ['9717', false]], + ['9718', ['9718', false]], + ['9719', ['9719', false]], + ['9720', ['9720', false]], + ['9721', ['9721', false]], + ['9722', ['9722', false]], + ['9723', ['9723', false]], + ['9724', ['9724', false]], + ['9725', ['9725', false]], + ['9726', ['9726', false]], + ['9727', ['9727', false]], + ['9728', ['9728', false]], + ['9729', ['9729', false]], + ['9730', ['9730', false]], + ['9731', ['9731', false]], + ['9732', ['9732', false]], + ['9733', ['9733', false]], + ['9734', ['9734', false]], + ['9735', ['9735', false]], + ['9736', ['9736', false]], + ['9737', ['9737', false]], + ['9738', ['9738', false]], + ['9739', ['9739', false]], + ['9740', ['9740', false]], + ['9741', ['9741', false]], + ['9742', ['9742', false]], + ['9743', ['9743', false]], + ['9744', ['9744', false]], + ['9745', ['9745', false]], + ['9746', ['9746', false]], + ['9747', ['9747', false]], + ['9748', ['9748', false]], + ['9749', ['9749', false]], + ['9750', ['9750', false]], + ['9751', ['9751', false]], + ['9752', ['9752', false]], + ['9753', ['9753', false]], + ['9754', ['9754', false]], + ['9755', ['9755', false]], + ['9756', ['9756', false]], + ['9757', ['9757', false]], + ['9758', ['9758', false]], + ['9759', ['9759', false]], + ['9760', ['9760', false]], + ['9761', ['9761', false]], + ['9762', ['9762', false]], + ['9763', ['9763', false]], + ['9764', ['9764', false]], + ['9765', ['9765', false]], + ['9766', ['9766', false]], + ['9767', ['9767', false]], + ['9768', ['9768', false]], + ['9769', ['9769', false]], + ['9770', ['9770', false]], + ['9771', ['9771', false]], + ['9772', ['9772', false]], + ['9773', ['9773', false]], + ['9774', ['9774', false]], + ['9775', ['9775', false]], + ['9776', ['9776', false]], + ['9777', ['9777', false]], + ['9778', ['9778', false]], + ['9779', ['9779', false]], + ['9780', ['9780', false]], + ['9781', ['9781', false]], + ['9782', ['9782', false]], + ['9783', ['9783', false]], + ['9784', ['9784', false]], + ['9785', ['9785', false]], + ['9786', ['9786', false]], + ['9787', ['9787', false]], + ['9788', ['9788', false]], + ['9789', ['9789', false]], + ['9790', ['9790', false]], + ['9791', ['9791', false]], + ['9792', ['9792', false]], + ['9793', ['9793', false]], + ['9794', ['9794', false]], + ['9795', ['9795', false]], + ['9796', ['9796', false]], + ['9797', ['9797', false]], + ['9798', ['9798', false]], + ['9799', ['9799', false]], + ['9800', ['9800', false]], + ['9801', ['9801', false]], + ['9802', ['9802', false]], + ['9803', ['9803', false]], + ['9804', ['9804', false]], + ['9805', ['9805', false]], + ['9806', ['9806', false]], + ['9807', ['9807', false]], + ['9808', ['9808', false]], + ['9809', ['9809', false]], + ['9810', ['9810', false]], + ['9811', ['9811', false]], + ['9812', ['9812', false]], + ['9813', ['9813', false]], + ['9814', ['9814', false]], + ['9815', ['9815', false]], + ['9816', ['9816', false]], + ['9817', ['9817', false]], + ['9818', ['9818', false]], + ['9819', ['9819', false]], + ['9820', ['9820', false]], + ['9821', ['9821', false]], + ['9822', ['9822', false]], + ['9823', ['9823', false]], + ['9824', ['9824', false]], + ['9825', ['9825', false]], + ['9826', ['9826', false]], + ['9827', ['9827', false]], + ['9828', ['9828', false]], + ['9829', ['9829', false]], + ['9830', ['9830', false]], + ['9831', ['9831', false]], + ['9832', ['9832', false]], + ['9833', ['9833', false]], + ['9834', ['9834', false]], + ['9835', ['9835', false]], + ['9836', ['9836', false]], + ['9837', ['9837', false]], + ['9838', ['9838', false]], + ['9839', ['9839', false]], + ['9840', ['9840', false]], + ['9841', ['9841', false]], + ['9842', ['9842', false]], + ['9843', ['9843', false]], + ['9844', ['9844', false]], + ['9845', ['9845', false]], + ['9846', ['9846', false]], + ['9847', ['9847', false]], + ['9848', ['9848', false]], + ['9849', ['9849', false]], + ['9850', ['9850', false]], + ['9851', ['9851', false]], + ['9852', ['9852', false]], + ['9853', ['9853', false]], + ['9854', ['9854', false]], + ['9855', ['9855', false]], + ['9856', ['9856', false]], + ['9857', ['9857', false]], + ['9858', ['9858', false]], + ['9859', ['9859', false]], + ['9860', ['9860', false]], + ['9861', ['9861', false]], + ['9862', ['9862', false]], + ['9863', ['9863', false]], + ['9864', ['9864', false]], + ['9865', ['9865', false]], + ['9866', ['9866', false]], + ['9867', ['9867', false]], + ['9868', ['9868', false]], + ['9869', ['9869', false]], + ['9870', ['9870', false]], + ['9871', ['9871', false]], + ['9872', ['9872', false]], + ['9873', ['9873', false]], + ['9874', ['9874', false]], + ['9875', ['9875', false]], + ['9876', ['9876', false]], + ['9877', ['9877', false]], + ['9878', ['9878', false]], + ['9879', ['9879', false]], + ['9880', ['9880', false]], + ['9881', ['9881', false]], + ['9882', ['9882', false]], + ['9883', ['9883', false]], + ['9884', ['9884', false]], + ['9885', ['9885', false]], + ['9886', ['9886', false]], + ['9887', ['9887', false]], + ['9888', ['9888', false]], + ['9889', ['9889', false]], + ['9890', ['9890', false]], + ['9891', ['9891', false]], + ['9892', ['9892', false]], + ['9893', ['9893', false]], + ['9894', ['9894', false]], + ['9895', ['9895', false]], + ['9896', ['9896', false]], + ['9897', ['9897', false]], + ['9898', ['9898', false]], + ['9899', ['9899', false]], + ['9900', ['9900', false]], + ['9901', ['9901', false]], + ['9902', ['9902', false]], + ['9903', ['9903', false]], + ['9904', ['9904', false]], + ['9905', ['9905', false]], + ['9906', ['9906', false]], + ['9907', ['9907', false]], + ['9908', ['9908', false]], + ['9909', ['9909', false]], + ['9910', ['9910', false]], + ['9911', ['9911', false]], + ['9912', ['9912', false]], + ['9913', ['9913', false]], + ['9914', ['9914', false]], + ['9915', ['9915', false]], + ['9916', ['9916', false]], + ['9917', ['9917', false]], + ['9918', ['9918', false]], + ['9919', ['9919', false]], + ['9920', ['9920', false]], + ['9921', ['9921', false]], + ['9922', ['9922', false]], + ['9923', ['9923', false]], + ['9924', ['9924', false]], + ['9925', ['9925', false]], + ['9926', ['9926', false]], + ['9927', ['9927', false]], + ['9928', ['9928', false]], + ['9929', ['9929', false]], + ['9930', ['9930', false]], + ['9931', ['9931', false]], + ['9932', ['9932', false]], + ['9933', ['9933', false]], + ['9934', ['9934', false]], + ['9935', ['9935', false]], + ['9936', ['9936', false]], + ['9937', ['9937', false]], + ['9938', ['9938', false]], + ['9939', ['9939', false]], + ['9940', ['9940', false]], + ['9941', ['9941', false]], + ['9942', ['9942', false]], + ['9943', ['9943', false]], + ['9944', ['9944', false]], + ['9945', ['9945', false]], + ['9946', ['9946', false]], + ['9947', ['9947', false]], + ['9948', ['9948', false]], + ['9949', ['9949', false]], + ['9950', ['9950', false]], + ['9951', ['9951', false]], + ['9952', ['9952', false]], + ['9953', ['9953', false]], + ['9954', ['9954', false]], + ['9955', ['9955', false]], + ['9956', ['9956', false]], + ['9957', ['9957', false]], + ['9958', ['9958', false]], + ['9959', ['9959', false]], + ['9960', ['9960', false]], + ['9961', ['9961', false]], + ['9962', ['9962', false]], + ['9963', ['9963', false]], + ['9964', ['9964', false]], + ['9965', ['9965', false]], + ['9966', ['9966', false]], + ['9967', ['9967', false]], + ['9968', ['9968', false]], + ['9969', ['9969', false]], + ['9970', ['9970', false]], + ['9971', ['9971', false]], + ['9972', ['9972', false]], + ['9973', ['9973', false]], + ['9974', ['9974', false]], + ['9975', ['9975', false]], + ['9976', ['9976', false]], + ['9977', ['9977', false]], + ['9978', ['9978', false]], + ['9979', ['9979', false]], + ['9980', ['9980', false]], + ['9981', ['9981', false]], + ['9982', ['9982', false]], + ['9983', ['9983', false]], + ['9984', ['9984', false]], + ['9985', ['9985', false]], + ['9986', ['9986', false]], + ['9987', ['9987', false]], + ['9988', ['9988', false]], + ['9989', ['9989', false]], + ['9990', ['9990', false]], + ['9991', ['9991', false]], + ['9992', ['9992', false]], + ['9993', ['9993', false]], + ['9994', ['9994', false]], + ['9995', ['9995', false]], + ['9996', ['9996', false]], + ['9997', ['9997', false]], + ['9998', ['9998', false]], + ['9999', ['9999', false]], +]); \ No newline at end of file diff --git a/tests/cases/user/literal-no-oom/tsconfig.json b/tests/cases/user/literal-no-oom/tsconfig.json new file mode 100644 index 00000000000..eca78590e90 --- /dev/null +++ b/tests/cases/user/literal-no-oom/tsconfig.json @@ -0,0 +1,6 @@ +{ + "compilerOptions": { + "target": "es6", + "types": [] + } +} \ No newline at end of file From 792b8bb78efdb91612784ad2b0241612a3efef22 Mon Sep 17 00:00:00 2001 From: Yuichi Nukiyama Date: Mon, 11 Dec 2017 23:05:49 +0000 Subject: [PATCH 026/173] Fix error messeage (#20601) * Fix error messeage * delete extra lint --- src/compiler/diagnosticMessages.json | 4 ++ src/compiler/scanner.ts | 18 ++++++ ...umericSeparators.binaryNegative.errors.txt | 8 +-- ...mericSeparators.decmialNegative.errors.txt | 60 +++++++++---------- ...r.numericSeparators.hexNegative.errors.txt | 8 +-- ...numericSeparators.octalNegative.errors.txt | 8 +-- 6 files changed, 64 insertions(+), 42 deletions(-) diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 7bec6b82577..2cb068f0efb 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -3424,6 +3424,10 @@ "category": "Error", "code": 6188 }, + "Multiple consecutive numeric separators are not permitted.": { + "category": "Error", + "code": 6189 + }, "Variable '{0}' implicitly has an '{1}' type.": { "category": "Error", "code": 7005 diff --git a/src/compiler/scanner.ts b/src/compiler/scanner.ts index f9d30fdd581..1cd64931153 100644 --- a/src/compiler/scanner.ts +++ b/src/compiler/scanner.ts @@ -866,6 +866,7 @@ namespace ts { function scanNumberFragment(): string { let start = pos; let allowSeparator = false; + let isPreviousTokenSeparator = false; let result = ""; while (true) { const ch = text.charCodeAt(pos); @@ -873,8 +874,12 @@ namespace ts { tokenFlags |= TokenFlags.ContainsSeparator; if (allowSeparator) { allowSeparator = false; + isPreviousTokenSeparator = true; result += text.substring(start, pos); } + else if (isPreviousTokenSeparator) { + error(Diagnostics.Multiple_consecutive_numeric_separators_are_not_permitted, pos, 1); + } else { error(Diagnostics.Numeric_separators_are_not_allowed_here, pos, 1); } @@ -884,6 +889,7 @@ namespace ts { } if (isDigit(ch)) { allowSeparator = true; + isPreviousTokenSeparator = false; pos++; continue; } @@ -962,12 +968,17 @@ namespace ts { let digits = 0; let value = 0; let allowSeparator = false; + let isPreviousTokenSeparator = false; while (digits < minCount || scanAsManyAsPossible) { const ch = text.charCodeAt(pos); if (canHaveSeparators && ch === CharacterCodes._) { tokenFlags |= TokenFlags.ContainsSeparator; if (allowSeparator) { allowSeparator = false; + isPreviousTokenSeparator = true; + } + else if (isPreviousTokenSeparator) { + error(Diagnostics.Multiple_consecutive_numeric_separators_are_not_permitted, pos, 1); } else { error(Diagnostics.Numeric_separators_are_not_allowed_here, pos, 1); @@ -990,6 +1001,7 @@ namespace ts { } pos++; digits++; + isPreviousTokenSeparator = false; } if (digits < minCount) { value = -1; @@ -1287,6 +1299,7 @@ namespace ts { // Similarly valid octalIntegerLiteral must have at least one octal digit following o or O. let numberOfDigits = 0; let separatorAllowed = false; + let isPreviousTokenSeparator = false; while (true) { const ch = text.charCodeAt(pos); // Numeric seperators are allowed anywhere within a numeric literal, except not at the beginning, or following another separator @@ -1294,6 +1307,10 @@ namespace ts { tokenFlags |= TokenFlags.ContainsSeparator; if (separatorAllowed) { separatorAllowed = false; + isPreviousTokenSeparator = true; + } + else if (isPreviousTokenSeparator) { + error(Diagnostics.Multiple_consecutive_numeric_separators_are_not_permitted, pos, 1); } else { error(Diagnostics.Numeric_separators_are_not_allowed_here, pos, 1); @@ -1309,6 +1326,7 @@ namespace ts { value = value * base + valueOfCh; pos++; numberOfDigits++; + isPreviousTokenSeparator = false; } // Invalid binaryIntegerLiteral or octalIntegerLiteral if (numberOfDigits === 0) { diff --git a/tests/baselines/reference/parser.numericSeparators.binaryNegative.errors.txt b/tests/baselines/reference/parser.numericSeparators.binaryNegative.errors.txt index afb39489b2b..15e08088b1e 100644 --- a/tests/baselines/reference/parser.numericSeparators.binaryNegative.errors.txt +++ b/tests/baselines/reference/parser.numericSeparators.binaryNegative.errors.txt @@ -3,8 +3,8 @@ tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts(1,3): error tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,2): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,3): error TS1005: ';' expected. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,3): error TS2304: Cannot find name 'B0101'. -tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts(1,6): error TS6188: Numeric separators are not allowed here. -tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts(1,13): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts(1,6): error TS6189: Multiple consecutive numeric separators are not permitted. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts(1,13): error TS6189: Multiple consecutive numeric separators are not permitted. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,3): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,4): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,5): error TS6188: Numeric separators are not allowed here. @@ -32,12 +32,12 @@ tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,5): error ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts (1 errors) ==== 0b01__11 ~ -!!! error TS6188: Numeric separators are not allowed here. +!!! error TS6189: Multiple consecutive numeric separators are not permitted. ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts (1 errors) ==== 0B0110_0110__ ~ -!!! error TS6188: Numeric separators are not allowed here. +!!! error TS6189: Multiple consecutive numeric separators are not permitted. ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts (3 errors) ==== 0b___0111010_0101_1 diff --git a/tests/baselines/reference/parser.numericSeparators.decmialNegative.errors.txt b/tests/baselines/reference/parser.numericSeparators.decmialNegative.errors.txt index ab0262fd863..8e48e7c1750 100644 --- a/tests/baselines/reference/parser.numericSeparators.decmialNegative.errors.txt +++ b/tests/baselines/reference/parser.numericSeparators.decmialNegative.errors.txt @@ -1,6 +1,6 @@ tests/cases/conformance/parser/ecmascriptnext/numericSeparators/1.ts(1,1): error TS2304: Cannot find name '_10'. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/10.ts(1,4): error TS6188: Numeric separators are not allowed here. -tests/cases/conformance/parser/ecmascriptnext/numericSeparators/11.ts(1,5): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/11.ts(1,5): error TS6189: Multiple consecutive numeric separators are not permitted. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/12.ts(1,2): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/13.ts(1,3): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/14.ts(1,4): error TS6188: Numeric separators are not allowed here. @@ -8,29 +8,29 @@ tests/cases/conformance/parser/ecmascriptnext/numericSeparators/15.ts(1,5): erro tests/cases/conformance/parser/ecmascriptnext/numericSeparators/16.ts(1,1): error TS2304: Cannot find name '_0'. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/16.ts(1,3): error TS1005: ';' expected. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/17.ts(1,6): error TS6188: Numeric separators are not allowed here. -tests/cases/conformance/parser/ecmascriptnext/numericSeparators/18.ts(1,3): error TS6188: Numeric separators are not allowed here. -tests/cases/conformance/parser/ecmascriptnext/numericSeparators/19.ts(1,5): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/18.ts(1,3): error TS6189: Multiple consecutive numeric separators are not permitted. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/19.ts(1,5): error TS6189: Multiple consecutive numeric separators are not permitted. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts(1,3): error TS6188: Numeric separators are not allowed here. -tests/cases/conformance/parser/ecmascriptnext/numericSeparators/20.ts(1,8): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/20.ts(1,8): error TS6189: Multiple consecutive numeric separators are not permitted. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/21.ts(1,2): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/22.ts(1,4): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/23.ts(1,5): error TS6188: Numeric separators are not allowed here. -tests/cases/conformance/parser/ecmascriptnext/numericSeparators/24.ts(1,6): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/24.ts(1,6): error TS6189: Multiple consecutive numeric separators are not permitted. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/25.ts(1,2): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/26.ts(1,3): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/27.ts(1,4): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/28.ts(1,6): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/29.ts(1,1): error TS2304: Cannot find name '_0'. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/29.ts(1,3): error TS1005: ';' expected. -tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,3): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,3): error TS6189: Multiple consecutive numeric separators are not permitted. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/30.ts(1,7): error TS6188: Numeric separators are not allowed here. -tests/cases/conformance/parser/ecmascriptnext/numericSeparators/31.ts(1,3): error TS6188: Numeric separators are not allowed here. -tests/cases/conformance/parser/ecmascriptnext/numericSeparators/32.ts(1,5): error TS6188: Numeric separators are not allowed here. -tests/cases/conformance/parser/ecmascriptnext/numericSeparators/33.ts(1,9): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/31.ts(1,3): error TS6189: Multiple consecutive numeric separators are not permitted. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/32.ts(1,5): error TS6189: Multiple consecutive numeric separators are not permitted. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/33.ts(1,9): error TS6189: Multiple consecutive numeric separators are not permitted. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/34.ts(1,2): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/35.ts(1,4): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/36.ts(1,5): error TS6188: Numeric separators are not allowed here. -tests/cases/conformance/parser/ecmascriptnext/numericSeparators/37.ts(1,6): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/37.ts(1,6): error TS6189: Multiple consecutive numeric separators are not permitted. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/38.ts(1,2): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/39.ts(1,3): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts(1,2): error TS6188: Numeric separators are not allowed here. @@ -39,9 +39,9 @@ tests/cases/conformance/parser/ecmascriptnext/numericSeparators/41.ts(1,6): erro tests/cases/conformance/parser/ecmascriptnext/numericSeparators/42.ts(1,1): error TS2304: Cannot find name '_0'. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/42.ts(1,3): error TS1005: ';' expected. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/43.ts(1,7): error TS6188: Numeric separators are not allowed here. -tests/cases/conformance/parser/ecmascriptnext/numericSeparators/44.ts(1,3): error TS6188: Numeric separators are not allowed here. -tests/cases/conformance/parser/ecmascriptnext/numericSeparators/45.ts(1,5): error TS6188: Numeric separators are not allowed here. -tests/cases/conformance/parser/ecmascriptnext/numericSeparators/46.ts(1,9): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/44.ts(1,3): error TS6189: Multiple consecutive numeric separators are not permitted. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/45.ts(1,5): error TS6189: Multiple consecutive numeric separators are not permitted. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/46.ts(1,9): error TS6189: Multiple consecutive numeric separators are not permitted. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/47.ts(1,1): error TS1128: Declaration or statement expected. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/47.ts(1,2): error TS2304: Cannot find name '_'. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/48.ts(1,2): error TS1005: ';' expected. @@ -52,8 +52,8 @@ tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts(1,3): error tests/cases/conformance/parser/ecmascriptnext/numericSeparators/50.ts(1,5): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/50.ts(1,6): error TS1124: Digit expected. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/51.ts(1,3): error TS6188: Numeric separators are not allowed here. -tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,5): error TS6188: Numeric separators are not allowed here. -tests/cases/conformance/parser/ecmascriptnext/numericSeparators/7.ts(1,5): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,5): error TS6189: Multiple consecutive numeric separators are not permitted. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/7.ts(1,5): error TS6189: Multiple consecutive numeric separators are not permitted. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/8.ts(1,2): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/9.ts(1,3): error TS6188: Numeric separators are not allowed here. @@ -71,7 +71,7 @@ tests/cases/conformance/parser/ecmascriptnext/numericSeparators/9.ts(1,3): error ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts (1 errors) ==== 1__0 ~ -!!! error TS6188: Numeric separators are not allowed here. +!!! error TS6189: Multiple consecutive numeric separators are not permitted. ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts (1 errors) ==== 0_.0 @@ -86,12 +86,12 @@ tests/cases/conformance/parser/ecmascriptnext/numericSeparators/9.ts(1,3): error ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts (1 errors) ==== 0.0__0 ~ -!!! error TS6188: Numeric separators are not allowed here. +!!! error TS6189: Multiple consecutive numeric separators are not permitted. ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/7.ts (1 errors) ==== 0.0__ ~ -!!! error TS6188: Numeric separators are not allowed here. +!!! error TS6189: Multiple consecutive numeric separators are not permitted. ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/8.ts (1 errors) ==== 0_e0 @@ -111,7 +111,7 @@ tests/cases/conformance/parser/ecmascriptnext/numericSeparators/9.ts(1,3): error ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/11.ts (1 errors) ==== 0e0__0 ~ -!!! error TS6188: Numeric separators are not allowed here. +!!! error TS6189: Multiple consecutive numeric separators are not permitted. ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/12.ts (1 errors) ==== 0_.0e0 @@ -148,17 +148,17 @@ tests/cases/conformance/parser/ecmascriptnext/numericSeparators/9.ts(1,3): error ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/18.ts (1 errors) ==== 0__0.0e0 ~ -!!! error TS6188: Numeric separators are not allowed here. +!!! error TS6189: Multiple consecutive numeric separators are not permitted. ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/19.ts (1 errors) ==== 0.0__0e0 ~ -!!! error TS6188: Numeric separators are not allowed here. +!!! error TS6189: Multiple consecutive numeric separators are not permitted. ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/20.ts (1 errors) ==== 0.00e0__0 ~ -!!! error TS6188: Numeric separators are not allowed here. +!!! error TS6189: Multiple consecutive numeric separators are not permitted. ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/21.ts (1 errors) ==== 0_e+0 @@ -178,7 +178,7 @@ tests/cases/conformance/parser/ecmascriptnext/numericSeparators/9.ts(1,3): error ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/24.ts (1 errors) ==== 0e+0__0 ~ -!!! error TS6188: Numeric separators are not allowed here. +!!! error TS6189: Multiple consecutive numeric separators are not permitted. ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/25.ts (1 errors) ==== 0_.0e+0 @@ -215,17 +215,17 @@ tests/cases/conformance/parser/ecmascriptnext/numericSeparators/9.ts(1,3): error ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/31.ts (1 errors) ==== 0__0.0e+0 ~ -!!! error TS6188: Numeric separators are not allowed here. +!!! error TS6189: Multiple consecutive numeric separators are not permitted. ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/32.ts (1 errors) ==== 0.0__0e+0 ~ -!!! error TS6188: Numeric separators are not allowed here. +!!! error TS6189: Multiple consecutive numeric separators are not permitted. ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/33.ts (1 errors) ==== 0.00e+0__0 ~ -!!! error TS6188: Numeric separators are not allowed here. +!!! error TS6189: Multiple consecutive numeric separators are not permitted. ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/34.ts (1 errors) ==== 0_e+0 @@ -245,7 +245,7 @@ tests/cases/conformance/parser/ecmascriptnext/numericSeparators/9.ts(1,3): error ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/37.ts (1 errors) ==== 0e-0__0 ~ -!!! error TS6188: Numeric separators are not allowed here. +!!! error TS6189: Multiple consecutive numeric separators are not permitted. ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/38.ts (1 errors) ==== 0_.0e-0 @@ -282,17 +282,17 @@ tests/cases/conformance/parser/ecmascriptnext/numericSeparators/9.ts(1,3): error ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/44.ts (1 errors) ==== 0__0.0e-0 ~ -!!! error TS6188: Numeric separators are not allowed here. +!!! error TS6189: Multiple consecutive numeric separators are not permitted. ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/45.ts (1 errors) ==== 0.0__0e-0 ~ -!!! error TS6188: Numeric separators are not allowed here. +!!! error TS6189: Multiple consecutive numeric separators are not permitted. ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/46.ts (1 errors) ==== 0.00e-0__0 ~ -!!! error TS6188: Numeric separators are not allowed here. +!!! error TS6189: Multiple consecutive numeric separators are not permitted. ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/47.ts (2 errors) ==== ._ diff --git a/tests/baselines/reference/parser.numericSeparators.hexNegative.errors.txt b/tests/baselines/reference/parser.numericSeparators.hexNegative.errors.txt index 4fff6f288fb..2fe62bc06d3 100644 --- a/tests/baselines/reference/parser.numericSeparators.hexNegative.errors.txt +++ b/tests/baselines/reference/parser.numericSeparators.hexNegative.errors.txt @@ -3,8 +3,8 @@ tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts(1,3): error tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,2): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,3): error TS1005: ';' expected. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,3): error TS2304: Cannot find name 'X0101'. -tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts(1,6): error TS6188: Numeric separators are not allowed here. -tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts(1,13): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts(1,6): error TS6189: Multiple consecutive numeric separators are not permitted. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts(1,13): error TS6189: Multiple consecutive numeric separators are not permitted. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,3): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,4): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,5): error TS6188: Numeric separators are not allowed here. @@ -32,12 +32,12 @@ tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,5): error ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts (1 errors) ==== 0x01__11 ~ -!!! error TS6188: Numeric separators are not allowed here. +!!! error TS6189: Multiple consecutive numeric separators are not permitted. ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts (1 errors) ==== 0X0110_0110__ ~ -!!! error TS6188: Numeric separators are not allowed here. +!!! error TS6189: Multiple consecutive numeric separators are not permitted. ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts (3 errors) ==== 0x___0111010_0101_1 diff --git a/tests/baselines/reference/parser.numericSeparators.octalNegative.errors.txt b/tests/baselines/reference/parser.numericSeparators.octalNegative.errors.txt index 6f877a6c752..e4c05472106 100644 --- a/tests/baselines/reference/parser.numericSeparators.octalNegative.errors.txt +++ b/tests/baselines/reference/parser.numericSeparators.octalNegative.errors.txt @@ -3,8 +3,8 @@ tests/cases/conformance/parser/ecmascriptnext/numericSeparators/2.ts(1,3): error tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,2): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,3): error TS1005: ';' expected. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/3.ts(1,3): error TS2304: Cannot find name 'O0101'. -tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts(1,6): error TS6188: Numeric separators are not allowed here. -tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts(1,13): error TS6188: Numeric separators are not allowed here. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts(1,6): error TS6189: Multiple consecutive numeric separators are not permitted. +tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts(1,13): error TS6189: Multiple consecutive numeric separators are not permitted. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,3): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,4): error TS6188: Numeric separators are not allowed here. tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,5): error TS6188: Numeric separators are not allowed here. @@ -32,12 +32,12 @@ tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts(1,5): error ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/4.ts (1 errors) ==== 0o01__11 ~ -!!! error TS6188: Numeric separators are not allowed here. +!!! error TS6189: Multiple consecutive numeric separators are not permitted. ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/5.ts (1 errors) ==== 0O0110_0110__ ~ -!!! error TS6188: Numeric separators are not allowed here. +!!! error TS6189: Multiple consecutive numeric separators are not permitted. ==== tests/cases/conformance/parser/ecmascriptnext/numericSeparators/6.ts (3 errors) ==== 0o___0111010_0101_1 From 72f2136080427d4b452ff3a177ba7ec073c95317 Mon Sep 17 00:00:00 2001 From: csigs Date: Mon, 11 Dec 2017 23:11:30 +0000 Subject: [PATCH 027/173] LEGO: check in for master to temporary branch. --- .../diagnosticMessages.generated.json.lcl | 110 ++++++++++-------- 1 file changed, 64 insertions(+), 46 deletions(-) diff --git a/src/loc/lcl/ita/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/ita/diagnosticMessages/diagnosticMessages.generated.json.lcl index fc1b53929eb..0a58746d335 100644 --- a/src/loc/lcl/ita/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/ita/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -867,8 +867,8 @@ - - + + @@ -879,8 +879,8 @@ - - + + @@ -891,8 +891,8 @@ - - + + @@ -903,8 +903,8 @@ - - + + @@ -915,6 +915,9 @@ + + + @@ -1545,8 +1548,8 @@ - - + + @@ -1962,8 +1965,8 @@ - - + + @@ -1986,8 +1989,8 @@ - - + + @@ -2364,8 +2367,8 @@ - - + + @@ -2376,8 +2379,8 @@ - - + + @@ -2388,8 +2391,8 @@ - - + + @@ -2400,8 +2403,8 @@ - - + + @@ -2484,8 +2487,8 @@ - - + + @@ -3756,8 +3759,8 @@ - - + + @@ -3780,8 +3783,8 @@ - - + + @@ -3801,8 +3804,8 @@ - - + + @@ -3954,8 +3957,8 @@ - - + + @@ -3966,8 +3969,8 @@ - - + + @@ -3978,8 +3981,8 @@ - - + + @@ -3990,8 +3993,8 @@ - - + + @@ -4527,8 +4530,8 @@ - - + + @@ -4839,6 +4842,12 @@ + + + + + + @@ -5445,8 +5454,8 @@ - - + + @@ -5901,8 +5910,8 @@ - - + + @@ -6330,8 +6339,8 @@ - - + + @@ -6450,6 +6459,9 @@ + + + @@ -6558,6 +6570,9 @@ + + + @@ -7413,6 +7428,9 @@ + + + From 03b036b63096a4aad5a7f82408c1a4f00a38c2a0 Mon Sep 17 00:00:00 2001 From: uniqueiniquity Date: Mon, 11 Dec 2017 15:56:31 -0800 Subject: [PATCH 028/173] Revert "Loosen restrictions on jsdoc completion locations" This reverts commit 612616a1058d7aa9fc181126f83041549bfbe295. --- src/services/jsDoc.ts | 68 ++++++++++++------- .../fourslash/docCommentTemplateEmptyFile.ts | 2 +- ...ommentTemplateInsideFunctionDeclaration.ts | 10 +-- .../fourslash/docCommentTemplateJSXText.ts | 12 ---- ...ocCommentTemplateNamespacesAndModules02.ts | 4 +- .../fourslash/docCommentTemplateRegex.ts | 8 +-- 6 files changed, 53 insertions(+), 51 deletions(-) delete mode 100644 tests/cases/fourslash/docCommentTemplateJSXText.ts diff --git a/src/services/jsDoc.ts b/src/services/jsDoc.ts index 79b08780226..1e312caaf5d 100644 --- a/src/services/jsDoc.ts +++ b/src/services/jsDoc.ts @@ -1,6 +1,5 @@ /* @internal */ namespace ts.JsDoc { - const singleLineTemplate = { newText: "/** */", caretOffset: 3 }; const jsDocTagNames = [ "augments", "author", @@ -197,9 +196,15 @@ namespace ts.JsDoc { /** * Checks if position points to a valid position to add JSDoc comments, and if so, * returns the appropriate template. Otherwise returns an empty string. - * Invalid positions are - * - within comments, strings (including template literals and regex), and JSXText - * - within a token + * Valid positions are + * - outside of comments, statements, and expressions, and + * - preceding a: + * - function/constructor/method declaration + * - class declarations + * - variable statements + * - namespace declarations + * - interface declarations + * - method signatures * * Hosts should ideally check that: * - The line is all whitespace up to 'position' before performing the insertion. @@ -225,19 +230,17 @@ namespace ts.JsDoc { const commentOwnerInfo = getCommentOwnerInfo(tokenAtPos); if (!commentOwnerInfo) { - // if climbing the tree did not find a declaration with parameters, complete to a single line comment - return singleLineTemplate; + return undefined; } const { commentOwner, parameters } = commentOwnerInfo; - - if (commentOwner.kind === SyntaxKind.JsxText) { + if (commentOwner.getStart() < position) { return undefined; } - if (commentOwner.getStart() < position || parameters.length === 0) { - // if climbing the tree found a declaration with parameters but the request was made inside it - // or if there are no parameters, complete to a single line comment - return singleLineTemplate; + if (!parameters || parameters.length === 0) { + // if there are no parameters, just complete to a single line JSDoc comment + const singleLineResult = "/** */"; + return { newText: singleLineResult, caretOffset: 3 }; } const posLineAndChar = sourceFile.getLineAndCharacterOfPosition(position); @@ -247,11 +250,19 @@ namespace ts.JsDoc { const indentationStr = sourceFile.text.substr(lineStart, posLineAndChar.character).replace(/\S/i, () => " "); const isJavaScriptFile = hasJavaScriptFileExtension(sourceFile.fileName); - const docParams = parameters.map(({name}, i) => { - const nameText = isIdentifier(name) ? name.text : `param${i}`; - const type = isJavaScriptFile ? "{any} " : ""; - return `${indentationStr} * @param ${type}${nameText}${newLine}`; - }).join(""); + let docParams = ""; + for (let i = 0; i < parameters.length; i++) { + const currentName = parameters[i].name; + const paramName = currentName.kind === SyntaxKind.Identifier ? + (currentName).escapedText : + "param" + i; + if (isJavaScriptFile) { + docParams += `${indentationStr} * @param {any} ${paramName}${newLine}`; + } + else { + docParams += `${indentationStr} * @param ${paramName}${newLine}`; + } + } // A doc comment consists of the following // * The opening comment line @@ -273,7 +284,7 @@ namespace ts.JsDoc { interface CommentOwnerInfo { readonly commentOwner: Node; - readonly parameters: ReadonlyArray; + readonly parameters?: ReadonlyArray; } function getCommentOwnerInfo(tokenAtPos: Node): CommentOwnerInfo | undefined { for (let commentOwner = tokenAtPos; commentOwner; commentOwner = commentOwner.parent) { @@ -285,18 +296,32 @@ namespace ts.JsDoc { const { parameters } = commentOwner as FunctionDeclaration | MethodDeclaration | ConstructorDeclaration | MethodSignature; return { commentOwner, parameters }; + case SyntaxKind.ClassDeclaration: + case SyntaxKind.InterfaceDeclaration: + case SyntaxKind.PropertySignature: + case SyntaxKind.EnumDeclaration: + case SyntaxKind.EnumMember: + case SyntaxKind.TypeAliasDeclaration: + return { commentOwner }; + case SyntaxKind.VariableStatement: { const varStatement = commentOwner; const varDeclarations = varStatement.declarationList.declarations; const parameters = varDeclarations.length === 1 && varDeclarations[0].initializer ? getParametersFromRightHandSideOfAssignment(varDeclarations[0].initializer) : undefined; - return parameters ? { commentOwner, parameters } : undefined; + return { commentOwner, parameters }; } case SyntaxKind.SourceFile: return undefined; + case SyntaxKind.ModuleDeclaration: + // If in walking up the tree, we hit a a nested namespace declaration, + // then we must be somewhere within a dotted namespace name; however we don't + // want to give back a JSDoc template for the 'b' or 'c' in 'namespace a.b.c { }'. + return commentOwner.parent.kind === SyntaxKind.ModuleDeclaration ? undefined : { commentOwner }; + case SyntaxKind.BinaryExpression: { const be = commentOwner as BinaryExpression; if (getSpecialPropertyAssignmentKind(be) === ts.SpecialPropertyAssignmentKind.None) { @@ -305,11 +330,6 @@ namespace ts.JsDoc { const parameters = isFunctionLike(be.right) ? be.right.parameters : emptyArray; return { commentOwner, parameters }; } - - case SyntaxKind.JsxText: { - const parameters: ReadonlyArray = emptyArray; - return { commentOwner, parameters }; - } } } } diff --git a/tests/cases/fourslash/docCommentTemplateEmptyFile.ts b/tests/cases/fourslash/docCommentTemplateEmptyFile.ts index 064306e3fbd..f04653dc328 100644 --- a/tests/cases/fourslash/docCommentTemplateEmptyFile.ts +++ b/tests/cases/fourslash/docCommentTemplateEmptyFile.ts @@ -3,4 +3,4 @@ // @Filename: emptyFile.ts /////*0*/ -verify.docCommentTemplateAt("0", 3, "/** */"); +verify.noDocCommentTemplateAt("0"); diff --git a/tests/cases/fourslash/docCommentTemplateInsideFunctionDeclaration.ts b/tests/cases/fourslash/docCommentTemplateInsideFunctionDeclaration.ts index 67a11a27133..e0ebc00dc39 100644 --- a/tests/cases/fourslash/docCommentTemplateInsideFunctionDeclaration.ts +++ b/tests/cases/fourslash/docCommentTemplateInsideFunctionDeclaration.ts @@ -3,10 +3,6 @@ // @Filename: functionDecl.ts ////f/*0*/unction /*1*/foo/*2*/(/*3*/) /*4*/{ /*5*/} -verify.noDocCommentTemplateAt("0"); - -verify.docCommentTemplateAt("1", 3, "/** */"); -verify.docCommentTemplateAt("2", 3, "/** */"); -verify.docCommentTemplateAt("3", 3, "/** */"); -verify.docCommentTemplateAt("4", 3, "/** */"); -verify.docCommentTemplateAt("5", 3, "/** */"); +for (const marker of test.markers()) { + verify.noDocCommentTemplateAt(marker); +} diff --git a/tests/cases/fourslash/docCommentTemplateJSXText.ts b/tests/cases/fourslash/docCommentTemplateJSXText.ts deleted file mode 100644 index 845f969f4e3..00000000000 --- a/tests/cases/fourslash/docCommentTemplateJSXText.ts +++ /dev/null @@ -1,12 +0,0 @@ -/// - -//@Filename: file.tsx -//// -//// var x =
-//// /*0*/hello/*1*/ -//// /*2*/goodbye/*3*/ -////
; - -for (const marker in test.markers()) { - verify.noDocCommentTemplateAt(marker); -} \ No newline at end of file diff --git a/tests/cases/fourslash/docCommentTemplateNamespacesAndModules02.ts b/tests/cases/fourslash/docCommentTemplateNamespacesAndModules02.ts index 3beb9368661..787e9f04481 100644 --- a/tests/cases/fourslash/docCommentTemplateNamespacesAndModules02.ts +++ b/tests/cases/fourslash/docCommentTemplateNamespacesAndModules02.ts @@ -9,6 +9,6 @@ verify.docCommentTemplateAt("top", /*indentation*/ 3, "/** */"); -verify.docCommentTemplateAt("n2", 3, "/** */"); +verify.noDocCommentTemplateAt("n2"); -verify.docCommentTemplateAt("n3", 3, "/** */"); +verify.noDocCommentTemplateAt("n3"); diff --git a/tests/cases/fourslash/docCommentTemplateRegex.ts b/tests/cases/fourslash/docCommentTemplateRegex.ts index c1368190ca2..685c1ca5aef 100644 --- a/tests/cases/fourslash/docCommentTemplateRegex.ts +++ b/tests/cases/fourslash/docCommentTemplateRegex.ts @@ -3,8 +3,6 @@ // @Filename: regex.ts ////var regex = /*0*///*1*/asdf/*2*/ /*3*///*4*/; -verify.docCommentTemplateAt("0", 3, "/** */"); -verify.noDocCommentTemplateAt("1"); -verify.noDocCommentTemplateAt("2"); -verify.noDocCommentTemplateAt("3"); -verify.docCommentTemplateAt("4", 3, "/** */"); \ No newline at end of file +for (const marker of test.markers()) { + verify.noDocCommentTemplateAt(marker); +} From 97a573984f808a89deb7cc20910f77c7398bce90 Mon Sep 17 00:00:00 2001 From: uniqueiniquity Date: Mon, 11 Dec 2017 16:15:32 -0800 Subject: [PATCH 029/173] Add type alias declarations to inclusion list docs --- src/services/jsDoc.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/services/jsDoc.ts b/src/services/jsDoc.ts index 1e312caaf5d..33d84763d44 100644 --- a/src/services/jsDoc.ts +++ b/src/services/jsDoc.ts @@ -205,6 +205,7 @@ namespace ts.JsDoc { * - namespace declarations * - interface declarations * - method signatures + * - type alias declarations * * Hosts should ideally check that: * - The line is all whitespace up to 'position' before performing the insertion. From 3aa192a870a3d81575ed1431d2d16ebb3a3db079 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Mon, 11 Dec 2017 19:26:42 -0500 Subject: [PATCH 030/173] Unshallow submodule clones, update submodule ref (#20636) --- .gitmodules | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.gitmodules b/.gitmodules index e5cf4c016e9..bd4620625cf 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,24 +2,19 @@ path = tests/cases/user/TypeScript-React-Starter/TypeScript-React-Starter url = https://github.com/Microsoft/TypeScript-React-Starter ignore = all - shallow = true [submodule "tests/cases/user/TypeScript-Node-Starter/TypeScript-Node-Starter"] path = tests/cases/user/TypeScript-Node-Starter/TypeScript-Node-Starter url = https://github.com/Microsoft/TypeScript-Node-Starter.git ignore = all - shallow = true [submodule "tests/cases/user/TypeScript-React-Native-Starter/TypeScript-React-Native-Starter"] path = tests/cases/user/TypeScript-React-Native-Starter/TypeScript-React-Native-Starter url = https://github.com/Microsoft/TypeScript-React-Native-Starter.git ignore = all - shallow = true [submodule "tests/cases/user/TypeScript-Vue-Starter/TypeScript-Vue-Starter"] path = tests/cases/user/TypeScript-Vue-Starter/TypeScript-Vue-Starter url = https://github.com/Microsoft/TypeScript-Vue-Starter.git ignore = all - shallow = true [submodule "tests/cases/user/TypeScript-WeChat-Starter/TypeScript-WeChat-Starter"] path = tests/cases/user/TypeScript-WeChat-Starter/TypeScript-WeChat-Starter url = https://github.com/Microsoft/TypeScript-WeChat-Starter.git ignore = all - shallow = true From d53af092c70a343e33846ac54abdf42c44d0793b Mon Sep 17 00:00:00 2001 From: Andy Date: Tue, 12 Dec 2017 07:50:11 -0800 Subject: [PATCH 031/173] Always check a return expression in a generator (#20621) --- src/compiler/checker.ts | 81 ++++++++++--------- ...eratorReturnExpressionIsChecked.errors.txt | 10 +++ .../generatorReturnExpressionIsChecked.js | 10 +++ ...generatorReturnExpressionIsChecked.symbols | 8 ++ .../generatorReturnExpressionIsChecked.types | 9 +++ .../generatorReturnExpressionIsChecked.ts | 5 ++ 6 files changed, 83 insertions(+), 40 deletions(-) create mode 100644 tests/baselines/reference/generatorReturnExpressionIsChecked.errors.txt create mode 100644 tests/baselines/reference/generatorReturnExpressionIsChecked.js create mode 100644 tests/baselines/reference/generatorReturnExpressionIsChecked.symbols create mode 100644 tests/baselines/reference/generatorReturnExpressionIsChecked.types create mode 100644 tests/cases/compiler/generatorReturnExpressionIsChecked.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 1b193ad3c2e..95c7d33d5aa 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -22199,57 +22199,58 @@ namespace ts { function checkReturnStatement(node: ReturnStatement) { // Grammar checking - if (!checkGrammarStatementInAmbientContext(node)) { - const functionBlock = getContainingFunction(node); - if (!functionBlock) { - grammarErrorOnFirstToken(node, Diagnostics.A_return_statement_can_only_be_used_within_a_function_body); - } + if (checkGrammarStatementInAmbientContext(node)) { + return; } const func = getContainingFunction(node); - if (func) { - const signature = getSignatureFromDeclaration(func); - const returnType = getReturnTypeOfSignature(signature); - const functionFlags = getFunctionFlags(func); - if (functionFlags & FunctionFlags.Generator) { // AsyncGenerator function or Generator function + if (!func) { + grammarErrorOnFirstToken(node, Diagnostics.A_return_statement_can_only_be_used_within_a_function_body); + return; + } + + const signature = getSignatureFromDeclaration(func); + const returnType = getReturnTypeOfSignature(signature); + const functionFlags = getFunctionFlags(func); + const isGenerator = functionFlags & FunctionFlags.Generator; + if (strictNullChecks || node.expression || returnType.flags & TypeFlags.Never) { + const exprType = node.expression ? checkExpressionCached(node.expression) : undefinedType; + if (isGenerator) { // AsyncGenerator function or Generator function // A generator does not need its return expressions checked against its return type. // Instead, the yield expressions are checked against the element type. - // TODO: Check return expressions of generators when return type tracking is added + // TODO: Check return types of generators when return type tracking is added // for generators. return; } - if (strictNullChecks || node.expression || returnType.flags & TypeFlags.Never) { - const exprType = node.expression ? checkExpressionCached(node.expression) : undefinedType; - if (func.kind === SyntaxKind.SetAccessor) { - if (node.expression) { - error(node, Diagnostics.Setters_cannot_return_a_value); - } - } - else if (func.kind === SyntaxKind.Constructor) { - if (node.expression && !checkTypeAssignableTo(exprType, returnType, node)) { - error(node, Diagnostics.Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class); - } - } - else if (getEffectiveReturnTypeNode(func) || isGetAccessorWithAnnotatedSetAccessor(func)) { - if (functionFlags & FunctionFlags.Async) { // Async function - const promisedType = getPromisedTypeOfPromise(returnType); - const awaitedType = checkAwaitedType(exprType, node, Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member); - if (promisedType) { - // If the function has a return type, but promisedType is - // undefined, an error will be reported in checkAsyncFunctionReturnType - // so we don't need to report one here. - checkTypeAssignableTo(awaitedType, promisedType, node); - } - } - else { - checkTypeAssignableTo(exprType, returnType, node); - } + else if (func.kind === SyntaxKind.SetAccessor) { + if (node.expression) { + error(node, Diagnostics.Setters_cannot_return_a_value); } } - else if (func.kind !== SyntaxKind.Constructor && compilerOptions.noImplicitReturns && !isUnwrappedReturnTypeVoidOrAny(func, returnType)) { - // The function has a return type, but the return statement doesn't have an expression. - error(node, Diagnostics.Not_all_code_paths_return_a_value); + else if (func.kind === SyntaxKind.Constructor) { + if (node.expression && !checkTypeAssignableTo(exprType, returnType, node)) { + error(node, Diagnostics.Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class); + } } + else if (getEffectiveReturnTypeNode(func) || isGetAccessorWithAnnotatedSetAccessor(func)) { + if (functionFlags & FunctionFlags.Async) { // Async function + const promisedType = getPromisedTypeOfPromise(returnType); + const awaitedType = checkAwaitedType(exprType, node, Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member); + if (promisedType) { + // If the function has a return type, but promisedType is + // undefined, an error will be reported in checkAsyncFunctionReturnType + // so we don't need to report one here. + checkTypeAssignableTo(awaitedType, promisedType, node); + } + } + else { + checkTypeAssignableTo(exprType, returnType, node); + } + } + } + else if (func.kind !== SyntaxKind.Constructor && compilerOptions.noImplicitReturns && !isUnwrappedReturnTypeVoidOrAny(func, returnType) && !isGenerator) { + // The function has a return type, but the return statement doesn't have an expression. + error(node, Diagnostics.Not_all_code_paths_return_a_value); } } diff --git a/tests/baselines/reference/generatorReturnExpressionIsChecked.errors.txt b/tests/baselines/reference/generatorReturnExpressionIsChecked.errors.txt new file mode 100644 index 00000000000..a1fc28ddb45 --- /dev/null +++ b/tests/baselines/reference/generatorReturnExpressionIsChecked.errors.txt @@ -0,0 +1,10 @@ +tests/cases/compiler/generatorReturnExpressionIsChecked.ts(2,12): error TS2304: Cannot find name 'invalid'. + + +==== tests/cases/compiler/generatorReturnExpressionIsChecked.ts (1 errors) ==== + function* f(): Iterator { + return invalid; + ~~~~~~~ +!!! error TS2304: Cannot find name 'invalid'. + } + \ No newline at end of file diff --git a/tests/baselines/reference/generatorReturnExpressionIsChecked.js b/tests/baselines/reference/generatorReturnExpressionIsChecked.js new file mode 100644 index 00000000000..58eb6f90442 --- /dev/null +++ b/tests/baselines/reference/generatorReturnExpressionIsChecked.js @@ -0,0 +1,10 @@ +//// [generatorReturnExpressionIsChecked.ts] +function* f(): Iterator { + return invalid; +} + + +//// [generatorReturnExpressionIsChecked.js] +function* f() { + return invalid; +} diff --git a/tests/baselines/reference/generatorReturnExpressionIsChecked.symbols b/tests/baselines/reference/generatorReturnExpressionIsChecked.symbols new file mode 100644 index 00000000000..cd3fc96637c --- /dev/null +++ b/tests/baselines/reference/generatorReturnExpressionIsChecked.symbols @@ -0,0 +1,8 @@ +=== tests/cases/compiler/generatorReturnExpressionIsChecked.ts === +function* f(): Iterator { +>f : Symbol(f, Decl(generatorReturnExpressionIsChecked.ts, 0, 0)) +>Iterator : Symbol(Iterator, Decl(lib.es2015.iterable.d.ts, --, --)) + + return invalid; +} + diff --git a/tests/baselines/reference/generatorReturnExpressionIsChecked.types b/tests/baselines/reference/generatorReturnExpressionIsChecked.types new file mode 100644 index 00000000000..13bb5f83a94 --- /dev/null +++ b/tests/baselines/reference/generatorReturnExpressionIsChecked.types @@ -0,0 +1,9 @@ +=== tests/cases/compiler/generatorReturnExpressionIsChecked.ts === +function* f(): Iterator { +>f : () => Iterator +>Iterator : Iterator + + return invalid; +>invalid : any +} + diff --git a/tests/cases/compiler/generatorReturnExpressionIsChecked.ts b/tests/cases/compiler/generatorReturnExpressionIsChecked.ts new file mode 100644 index 00000000000..06153163868 --- /dev/null +++ b/tests/cases/compiler/generatorReturnExpressionIsChecked.ts @@ -0,0 +1,5 @@ +// @target: esnext + +function* f(): Iterator { + return invalid; +} From 43a5a271eef08aaeb10cb8808a93699d32e84e48 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Tue, 12 Dec 2017 08:34:36 -0800 Subject: [PATCH 032/173] `object` spreads to {} Specifically, when spreading `object` on the right, spread now returns the left of the spread; previously it returned `object`, which loses everything to the left. --- src/compiler/checker.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 95c7d33d5aa..6a1d6b52abb 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -8327,10 +8327,7 @@ namespace ts { if (right.flags & TypeFlags.Union) { return mapType(right, t => getSpreadType(left, t, symbol, propagatedFlags)); } - if (right.flags & TypeFlags.NonPrimitive) { - return nonPrimitiveType; - } - if (right.flags & (TypeFlags.BooleanLike | TypeFlags.NumberLike | TypeFlags.StringLike | TypeFlags.EnumLike)) { + if (right.flags & (TypeFlags.BooleanLike | TypeFlags.NumberLike | TypeFlags.StringLike | TypeFlags.EnumLike | TypeFlags.NonPrimitive)) { return left; } From 4bc0d85d29f6533f07368b93f7002b8f179b71bd Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Tue, 12 Dec 2017 08:37:34 -0800 Subject: [PATCH 033/173] Test:spread `object` retains lefthandside 1. Make sure that spreading `object` doesn't lose everything to the left. 2. Update baselines to show that `{ ...object }` is now `{}`. --- tests/baselines/reference/objectSpread.types | 4 ++-- .../reference/objectSpreadNegative.errors.txt | 4 ++-- .../reference/objectSpreadNegative.types | 6 +++--- tests/baselines/reference/spreadNonPrimitive.js | 15 +++++++++++++++ .../reference/spreadNonPrimitive.symbols | 12 ++++++++++++ .../baselines/reference/spreadNonPrimitive.types | 15 +++++++++++++++ .../types/spread/spreadNonPrimitive.ts | 2 ++ 7 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 tests/baselines/reference/spreadNonPrimitive.js create mode 100644 tests/baselines/reference/spreadNonPrimitive.symbols create mode 100644 tests/baselines/reference/spreadNonPrimitive.types create mode 100644 tests/cases/conformance/types/spread/spreadNonPrimitive.ts diff --git a/tests/baselines/reference/objectSpread.types b/tests/baselines/reference/objectSpread.types index 2d9bada571b..1f87ed4930d 100644 --- a/tests/baselines/reference/objectSpread.types +++ b/tests/baselines/reference/objectSpread.types @@ -571,8 +571,8 @@ let shortCutted: { a: number, b: string } = { ...o, a } // non primitive let spreadNonPrimitive = { ...{}}; ->spreadNonPrimitive : object ->{ ...{}} : object +>spreadNonPrimitive : {} +>{ ...{}} : {} >{} : object >{} : {} diff --git a/tests/baselines/reference/objectSpreadNegative.errors.txt b/tests/baselines/reference/objectSpreadNegative.errors.txt index 5b78f10f281..92225755c71 100644 --- a/tests/baselines/reference/objectSpreadNegative.errors.txt +++ b/tests/baselines/reference/objectSpreadNegative.errors.txt @@ -15,7 +15,7 @@ tests/cases/conformance/types/spread/objectSpreadNegative.ts(38,19): error TS269 tests/cases/conformance/types/spread/objectSpreadNegative.ts(43,1): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type '{}' has no compatible call signatures. tests/cases/conformance/types/spread/objectSpreadNegative.ts(47,12): error TS2339: Property 'b' does not exist on type '{}'. tests/cases/conformance/types/spread/objectSpreadNegative.ts(53,9): error TS2339: Property 'm' does not exist on type '{ p: number; }'. -tests/cases/conformance/types/spread/objectSpreadNegative.ts(58,11): error TS2339: Property 'a' does not exist on type 'object'. +tests/cases/conformance/types/spread/objectSpreadNegative.ts(58,11): error TS2339: Property 'a' does not exist on type '{}'. tests/cases/conformance/types/spread/objectSpreadNegative.ts(62,14): error TS2698: Spread types may only be created from object types. tests/cases/conformance/types/spread/objectSpreadNegative.ts(65,14): error TS2698: Spread types may only be created from object types. tests/cases/conformance/types/spread/objectSpreadNegative.ts(79,37): error TS2322: Type '{ a: string; b: string; extra: string; }' is not assignable to type 'A'. @@ -117,7 +117,7 @@ tests/cases/conformance/types/spread/objectSpreadNegative.ts(84,7): error TS2322 let spreadObj = { ...obj }; spreadObj.a; // error 'a' is not in {} ~ -!!! error TS2339: Property 'a' does not exist on type 'object'. +!!! error TS2339: Property 'a' does not exist on type '{}'. // generics function f(t: T, u: U) { diff --git a/tests/baselines/reference/objectSpreadNegative.types b/tests/baselines/reference/objectSpreadNegative.types index 2e42453f41c..5c3abb041f8 100644 --- a/tests/baselines/reference/objectSpreadNegative.types +++ b/tests/baselines/reference/objectSpreadNegative.types @@ -222,13 +222,13 @@ let obj: object = { a: 123 }; >123 : 123 let spreadObj = { ...obj }; ->spreadObj : object ->{ ...obj } : object +>spreadObj : {} +>{ ...obj } : {} >obj : object spreadObj.a; // error 'a' is not in {} >spreadObj.a : any ->spreadObj : object +>spreadObj : {} >a : any // generics diff --git a/tests/baselines/reference/spreadNonPrimitive.js b/tests/baselines/reference/spreadNonPrimitive.js new file mode 100644 index 00000000000..3f5774197e4 --- /dev/null +++ b/tests/baselines/reference/spreadNonPrimitive.js @@ -0,0 +1,15 @@ +//// [spreadNonPrimitive.ts] +declare let o: object; +const x: { a: number, b: number } = { a: 1, ...o, b: 2 }; + + +//// [spreadNonPrimitive.js] +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; +var x = __assign({ a: 1 }, o, { b: 2 }); diff --git a/tests/baselines/reference/spreadNonPrimitive.symbols b/tests/baselines/reference/spreadNonPrimitive.symbols new file mode 100644 index 00000000000..1cc15865fa0 --- /dev/null +++ b/tests/baselines/reference/spreadNonPrimitive.symbols @@ -0,0 +1,12 @@ +=== tests/cases/conformance/types/spread/spreadNonPrimitive.ts === +declare let o: object; +>o : Symbol(o, Decl(spreadNonPrimitive.ts, 0, 11)) + +const x: { a: number, b: number } = { a: 1, ...o, b: 2 }; +>x : Symbol(x, Decl(spreadNonPrimitive.ts, 1, 5)) +>a : Symbol(a, Decl(spreadNonPrimitive.ts, 1, 10)) +>b : Symbol(b, Decl(spreadNonPrimitive.ts, 1, 21)) +>a : Symbol(a, Decl(spreadNonPrimitive.ts, 1, 37)) +>o : Symbol(o, Decl(spreadNonPrimitive.ts, 0, 11)) +>b : Symbol(b, Decl(spreadNonPrimitive.ts, 1, 49)) + diff --git a/tests/baselines/reference/spreadNonPrimitive.types b/tests/baselines/reference/spreadNonPrimitive.types new file mode 100644 index 00000000000..1bc263c1136 --- /dev/null +++ b/tests/baselines/reference/spreadNonPrimitive.types @@ -0,0 +1,15 @@ +=== tests/cases/conformance/types/spread/spreadNonPrimitive.ts === +declare let o: object; +>o : object + +const x: { a: number, b: number } = { a: 1, ...o, b: 2 }; +>x : { a: number; b: number; } +>a : number +>b : number +>{ a: 1, ...o, b: 2 } : { b: number; a: number; } +>a : number +>1 : 1 +>o : object +>b : number +>2 : 2 + diff --git a/tests/cases/conformance/types/spread/spreadNonPrimitive.ts b/tests/cases/conformance/types/spread/spreadNonPrimitive.ts new file mode 100644 index 00000000000..b7dac95713e --- /dev/null +++ b/tests/cases/conformance/types/spread/spreadNonPrimitive.ts @@ -0,0 +1,2 @@ +declare let o: object; +const x: { a: number, b: number } = { a: 1, ...o, b: 2 }; From 0d8856cf4708b0ea966c7ed06fdb22f197669fc2 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 12 Dec 2017 08:45:39 -0800 Subject: [PATCH 034/173] Update chrome devtools user test baseline (#20641) --- .../user/chrome-devtools-frontend.log | 2204 ++++++++--------- 1 file changed, 1082 insertions(+), 1122 deletions(-) diff --git a/tests/baselines/reference/user/chrome-devtools-frontend.log b/tests/baselines/reference/user/chrome-devtools-frontend.log index 5828e7a36b9..c997005026f 100644 --- a/tests/baselines/reference/user/chrome-devtools-frontend.log +++ b/tests/baselines/reference/user/chrome-devtools-frontend.log @@ -12,8 +12,8 @@ Standard output: ../../../../built/local/lib.dom.d.ts(9253,13): error TS2300: Duplicate identifier 'Request'. ../../../../built/local/lib.dom.d.ts(13511,11): error TS2300: Duplicate identifier 'Window'. ../../../../built/local/lib.dom.d.ts(13700,13): error TS2300: Duplicate identifier 'Window'. -../../../../built/local/lib.es5.d.ts(1321,11): error TS2300: Duplicate identifier 'ArrayLike'. -../../../../built/local/lib.es5.d.ts(1350,6): error TS2300: Duplicate identifier 'Record'. +../../../../built/local/lib.es5.d.ts(1322,11): error TS2300: Duplicate identifier 'ArrayLike'. +../../../../built/local/lib.es5.d.ts(1351,6): error TS2300: Duplicate identifier 'Record'. node_modules/chrome-devtools-frontend/front_end/Runtime.js(43,8): error TS2339: Property '_importScriptPathPrefix' does not exist on type 'Window'. node_modules/chrome-devtools-frontend/front_end/Runtime.js(95,28): error TS2339: Property 'response' does not exist on type 'EventTarget'. node_modules/chrome-devtools-frontend/front_end/Runtime.js(147,37): error TS2339: Property '_importScriptPathPrefix' does not exist on type 'Window'. @@ -160,34 +160,34 @@ node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeV node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(62,61): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(78,26): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(88,45): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(90,55): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(113,5): error TS2346: Call target does not contain any signatures. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(118,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(134,20): error TS2339: Property '_originalTextContent' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(142,18): error TS2339: Property 'setTextContentTruncatedIfNeeded' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(144,18): error TS2339: Property 'title' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(155,24): error TS2339: Property 'type' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(156,24): error TS2339: Property 'title' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(168,19): error TS2339: Property 'title' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(179,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(201,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(212,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(222,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(267,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(271,5): error TS2346: Call target does not contain any signatures. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(303,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(307,5): error TS2346: Call target does not contain any signatures. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(320,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(333,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(361,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(382,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(396,23): error TS2339: Property 'title' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(408,23): error TS2339: Property 'title' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(462,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(465,5): error TS2346: Call target does not contain any signatures. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(493,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(537,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. -node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(541,5): error TS2346: Call target does not contain any signatures. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(92,56): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(127,5): error TS2346: Call target does not contain any signatures. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(132,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(148,20): error TS2339: Property '_originalTextContent' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(156,18): error TS2339: Property 'setTextContentTruncatedIfNeeded' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(158,18): error TS2339: Property 'title' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(169,24): error TS2339: Property 'type' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(170,24): error TS2339: Property 'title' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(182,19): error TS2339: Property 'title' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(193,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(215,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(226,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(236,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(281,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(285,5): error TS2346: Call target does not contain any signatures. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(317,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(321,5): error TS2346: Call target does not contain any signatures. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(334,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(347,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(375,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(396,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(410,23): error TS2339: Property 'title' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(422,23): error TS2339: Property 'title' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(476,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(479,5): error TS2346: Call target does not contain any signatures. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(507,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(551,24): error TS2694: Namespace 'Protocol' has no exported member 'Accessibility'. +node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilityNodeView.js(555,5): error TS2346: Call target does not contain any signatures. node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilitySidebarView.js(9,5): error TS2346: Call target does not contain any signatures. node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilitySidebarView.js(129,22): error TS2694: Namespace 'Common' has no exported member 'Event'. node_modules/chrome-devtools-frontend/front_end/accessibility/AccessibilitySidebarView.js(141,22): error TS2694: Namespace 'Common' has no exported member 'Event'. @@ -517,7 +517,7 @@ node_modules/chrome-devtools-frontend/front_end/audits/AuditsPanel.js(242,14): e node_modules/chrome-devtools-frontend/front_end/audits/AuditsPanel.js(245,16): error TS2339: Property 'worked' does not exist on type '() => void'. node_modules/chrome-devtools-frontend/front_end/audits/AuditsPanel.js(247,18): error TS2339: Property 'done' does not exist on type '() => void'. node_modules/chrome-devtools-frontend/front_end/audits/AuditsPanel.js(250,21): error TS2339: Property 'isCanceled' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/audits/AuditsPanel.js(260,14): error TS2551: Property 'initialize' does not exist on type '(Anonymous class)'. Did you mean '_initialized'? +node_modules/chrome-devtools-frontend/front_end/audits/AuditsPanel.js(260,14): error TS2339: Property 'initialize' does not exist on type 'never'. node_modules/chrome-devtools-frontend/front_end/audits/AuditsPanel.js(279,7): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. node_modules/chrome-devtools-frontend/front_end/audits/AuditsPanel.js(283,7): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. node_modules/chrome-devtools-frontend/front_end/audits/AuditsPanel.js(288,22): error TS2694: Namespace 'Audits' has no exported member 'AuditRule'. @@ -3470,8 +3470,8 @@ node_modules/chrome-devtools-frontend/front_end/bindings_test_runner/BindingsTes node_modules/chrome-devtools-frontend/front_end/bindings_test_runner/BindingsTestRunner.js(108,11): error TS2339: Property 'src' does not exist on type 'HTMLElement'. node_modules/chrome-devtools-frontend/front_end/bindings_test_runner/BindingsTestRunner.js(169,25): error TS2495: Type 'IterableIterator' is not an array type or a string type. node_modules/chrome-devtools-frontend/front_end/bindings_test_runner/IsolatedFilesystemTestRunner.js(113,7): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. -node_modules/chrome-devtools-frontend/front_end/bindings_test_runner/OverridesTestRunner.js(7,13): error TS1055: Type '{ isolatedFileSystem: (Anonymous class); project: () => void; testFileSystem: { root: any; fileSy...' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/bindings_test_runner/OverridesTestRunner.js(7,88): error TS2694: Namespace 'Workspace' has no exported member 'Project'. +node_modules/chrome-devtools-frontend/front_end/bindings_test_runner/OverridesTestRunner.js(7,13): error TS1055: Type '() => void' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/bindings_test_runner/OverridesTestRunner.js(7,24): error TS2694: Namespace 'Workspace' has no exported member 'Project'. node_modules/chrome-devtools-frontend/front_end/bindings_test_runner/PersistenceTestRunner.js(84,25): error TS2495: Type 'Set' is not an array type or a string type. node_modules/chrome-devtools-frontend/front_end/bindings_test_runner/PersistenceTestRunner.js(106,25): error TS2495: Type 'Set' is not an array type or a string type. node_modules/chrome-devtools-frontend/front_end/changes/ChangesHighlighter.js(7,39): error TS2694: Namespace 'Changes' has no exported member 'ChangesView'. @@ -3825,7 +3825,7 @@ node_modules/chrome-devtools-frontend/front_end/color_picker/Contrast.js(27,19): node_modules/chrome-devtools-frontend/front_end/color_picker/Contrast.js(216,41): error TS2339: Property 'createSVGChild' does not exist on type 'Element'. node_modules/chrome-devtools-frontend/front_end/color_picker/Contrast.js(219,46): error TS2339: Property 'createChild' does not exist on type 'Element'. node_modules/chrome-devtools-frontend/front_end/color_picker/Contrast.js(250,19): error TS2694: Namespace 'SDK' has no exported member 'CSSModel'. -node_modules/chrome-devtools-frontend/front_end/color_picker/Contrast.js(332,36): error TS2339: Property 'button' does not exist on type 'Event'. +node_modules/chrome-devtools-frontend/front_end/color_picker/Contrast.js(332,36): error TS2339: Property 'button' does not exist on type 'never'. node_modules/chrome-devtools-frontend/front_end/color_picker/Contrast.js(334,11): error TS2339: Property 'consume' does not exist on type 'Event'. node_modules/chrome-devtools-frontend/front_end/color_picker/Contrast.js(344,15): error TS2339: Property 'screenX' does not exist on type 'Event'. node_modules/chrome-devtools-frontend/front_end/color_picker/Contrast.js(344,32): error TS2339: Property 'screenY' does not exist on type 'Event'. @@ -4270,56 +4270,56 @@ node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(606,28): node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(609,28): error TS2339: Property 'ConsoleGroupViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(611,28): error TS2339: Property 'ConsoleViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(655,18): error TS2339: Property 'sprintf' does not exist on type 'StringConstructor'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(683,27): error TS2339: Property 'sprintf' does not exist on type 'StringConstructor'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(702,38): error TS2339: Property 'toExportString' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(760,30): error TS2339: Property 'ConsoleGroup' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(808,22): error TS2339: Property 'addAll' does not exist on type 'Set<(Anonymous class)>'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(825,72): error TS2339: Property 'peekLast' does not exist on type '(Anonymous class)[]'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(851,37): error TS2339: Property 'enclosingNodeOrSelfWithClass' does not exist on type 'EventTarget'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(917,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(940,22): error TS2694: Namespace 'Common' has no exported member 'Event'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(944,123): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(948,61): error TS2339: Property 'ConsoleView' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(977,18): error TS2694: Namespace 'UI' has no exported member 'SearchableView'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1109,19): error TS2339: Property 'scrollIntoViewIfNeeded' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1167,9): error TS2339: Property 'ConsoleView' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1169,9): error TS2339: Property 'ConsoleViewFilter' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1177,48): error TS2339: Property 'ConsoleViewFilter' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1189,44): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1196,39): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(679,27): error TS2339: Property 'sprintf' does not exist on type 'StringConstructor'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(698,38): error TS2339: Property 'toExportString' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(756,30): error TS2339: Property 'ConsoleGroup' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(804,22): error TS2339: Property 'addAll' does not exist on type 'Set<(Anonymous class)>'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(821,72): error TS2339: Property 'peekLast' does not exist on type '(Anonymous class)[]'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(847,37): error TS2339: Property 'enclosingNodeOrSelfWithClass' does not exist on type 'EventTarget'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(913,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(936,22): error TS2694: Namespace 'Common' has no exported member 'Event'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(940,123): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(944,61): error TS2339: Property 'ConsoleView' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(973,18): error TS2694: Namespace 'UI' has no exported member 'SearchableView'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1105,19): error TS2339: Property 'scrollIntoViewIfNeeded' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1163,9): error TS2339: Property 'ConsoleView' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1165,9): error TS2339: Property 'ConsoleViewFilter' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1173,48): error TS2339: Property 'ConsoleViewFilter' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1185,44): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1192,39): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1217,47): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1219,47): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1221,47): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1223,47): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1225,47): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1232,73): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1240,22): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1248,22): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1255,60): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1272,28): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1273,32): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1293,22): error TS2694: Namespace 'Common' has no exported member 'Event'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1304,63): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1364,50): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1376,9): error TS2339: Property 'ConsoleCommand' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1376,48): error TS2339: Property 'ConsoleViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1397,28): error TS2339: Property 'message' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1400,49): error TS2339: Property 'text' does not exist on type '(Anonymous class)'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1403,63): error TS2339: Property 'ConsoleCommand' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1410,12): error TS2339: Property 'updateTimestamp' does not exist on type '(Anonymous class)'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1416,10): error TS2339: Property 'setSearchRegex' does not exist on type '(Anonymous class)'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1416,30): error TS2339: Property 'searchRegex' does not exist on type '(Anonymous class)'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1425,9): error TS2339: Property 'ConsoleCommand' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1427,9): error TS2339: Property 'ConsoleCommandResult' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1427,54): error TS2339: Property 'ConsoleViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1446,16): error TS2339: Property 'consoleMessage' does not exist on type '(Anonymous class)'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1455,9): error TS2339: Property 'ConsoleGroup' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1464,38): error TS2339: Property 'collapsed' does not exist on type '(Anonymous class)'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1471,24): error TS2339: Property 'ConsoleGroup' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1499,9): error TS2339: Property 'ConsoleView' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1513,17): error TS2339: Property 'ConsoleView' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1516,17): error TS2339: Property 'ConsoleView' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1525,2): error TS1003: Identifier expected. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1526,9): error TS2339: Property 'ConsoleView' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1529,9): error TS2339: Property 'ConsoleView' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1228,73): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1236,22): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1244,22): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1251,60): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1268,28): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1269,32): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1289,22): error TS2694: Namespace 'Common' has no exported member 'Event'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1300,63): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1360,50): error TS2339: Property 'ConsoleFilter' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1372,9): error TS2339: Property 'ConsoleCommand' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1372,48): error TS2339: Property 'ConsoleViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1393,28): error TS2339: Property 'message' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1396,49): error TS2339: Property 'text' does not exist on type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1399,63): error TS2339: Property 'ConsoleCommand' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1406,12): error TS2339: Property 'updateTimestamp' does not exist on type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1412,10): error TS2339: Property 'setSearchRegex' does not exist on type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1412,30): error TS2339: Property 'searchRegex' does not exist on type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1421,9): error TS2339: Property 'ConsoleCommand' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1423,9): error TS2339: Property 'ConsoleCommandResult' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1423,54): error TS2339: Property 'ConsoleViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1442,16): error TS2339: Property 'consoleMessage' does not exist on type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1451,9): error TS2339: Property 'ConsoleGroup' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1460,38): error TS2339: Property 'collapsed' does not exist on type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1467,24): error TS2339: Property 'ConsoleGroup' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1495,9): error TS2339: Property 'ConsoleView' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1509,17): error TS2339: Property 'ConsoleView' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1512,17): error TS2339: Property 'ConsoleView' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1521,2): error TS1003: Identifier expected. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1522,9): error TS2339: Property 'ConsoleView' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleView.js(1525,9): error TS2339: Property 'ConsoleView' does not exist on type '{ new (): Console; prototype: Console; }'. node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(34,9): error TS2339: Property 'ConsoleViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(49,26): error TS2694: Namespace 'DataGrid' has no exported member 'DataGrid'. node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(86,48): error TS2339: Property 'offsetHeight' does not exist on type 'Element'. @@ -4385,132 +4385,130 @@ node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(13 node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1346,18): error TS2339: Property 'ConsoleViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1361,15): error TS2339: Property 'ConsoleViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1362,15): error TS2339: Property 'ConsoleViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1364,33): error TS2339: Property 'ConsoleViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1366,76): error TS2339: Property 'ConsoleViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1368,55): error TS2339: Property 'ConsoleViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1384,26): error TS2339: Property 'ConsoleViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1406,9): error TS2339: Property 'ConsoleGroupViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1406,57): error TS2339: Property 'ConsoleViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1442,15): error TS2339: Property '_element' does not exist on type '(Anonymous class)'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1445,16): error TS2339: Property '_repeatCountElement' does not exist on type '(Anonymous class)'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1446,14): error TS2339: Property '_repeatCountElement' does not exist on type '(Anonymous class)'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1446,75): error TS2339: Property '_repeatCountElement' does not exist on type '(Anonymous class)'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1448,14): error TS2339: Property '_element' does not exist on type '(Anonymous class)'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1448,64): error TS2339: Property '_contentElement' does not exist on type '(Anonymous class)'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1451,17): error TS2339: Property '_element' does not exist on type '(Anonymous class)'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1459,14): error TS2339: Property '_repeatCountElement' does not exist on type '(Anonymous class)'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1460,12): error TS2339: Property '_repeatCountElement' does not exist on type '(Anonymous class)'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1460,73): error TS2339: Property '_repeatCountElement' does not exist on type '(Anonymous class)'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1468,9): error TS2339: Property 'ConsoleViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1470,9): error TS2339: Property 'ConsoleViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1365,76): error TS2339: Property 'ConsoleViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1367,55): error TS2339: Property 'ConsoleViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1383,26): error TS2339: Property 'ConsoleViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1405,9): error TS2339: Property 'ConsoleGroupViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1405,57): error TS2339: Property 'ConsoleViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1441,15): error TS2339: Property '_element' does not exist on type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1444,16): error TS2339: Property '_repeatCountElement' does not exist on type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1445,14): error TS2339: Property '_repeatCountElement' does not exist on type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1445,75): error TS2339: Property '_repeatCountElement' does not exist on type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1447,14): error TS2339: Property '_element' does not exist on type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1447,64): error TS2339: Property '_contentElement' does not exist on type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1450,17): error TS2339: Property '_element' does not exist on type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1458,14): error TS2339: Property '_repeatCountElement' does not exist on type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1459,12): error TS2339: Property '_repeatCountElement' does not exist on type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1459,73): error TS2339: Property '_repeatCountElement' does not exist on type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewMessage.js(1467,9): error TS2339: Property 'ConsoleViewMessage' does not exist on type '{ new (): Console; prototype: Console; }'. node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(34,9): error TS2339: Property 'ConsoleViewport' does not exist on type '{ new (): Console; prototype: Console; }'. node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(36,23): error TS2694: Namespace 'Console' has no exported member 'ConsoleViewportProvider'. node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(40,18): error TS2339: Property 'style' does not exist on type 'Element'. node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(41,40): error TS2339: Property 'createChild' does not exist on type 'Element'. node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(44,41): error TS2339: Property 'createChild' does not exist on type 'Element'. node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(45,43): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(109,11): error TS2339: Property 'clipboardData' does not exist on type 'Event'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(119,11): error TS2339: Property 'dataTransfer' does not exist on type 'Event'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(120,11): error TS2339: Property 'dataTransfer' does not exist on type 'Event'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(121,11): error TS2339: Property 'dataTransfer' does not exist on type 'Event'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(134,38): error TS2339: Property 'itemCount' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(141,24): error TS2694: Namespace 'Console' has no exported member 'ConsoleViewportElement'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(148,32): error TS2339: Property 'itemElement' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(163,34): error TS2339: Property 'fastHeight' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(205,58): error TS2339: Property 'hasSelection' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(216,17): error TS2339: Property 'intersectsNode' does not exist on type 'Range'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(224,7): error TS2322: Type '{ item: number; node: Node; offset: number; }' is not assignable to type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(226,7): error TS2322: Type '{ item: number; node: Node; offset: number; }' is not assignable to type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(229,28): error TS2339: Property 'intersectsNode' does not exist on type 'Range'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(230,31): error TS2339: Property 'intersectsNode' does not exist on type 'Range'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(247,7): error TS2322: Type 'number | { item: number; node: Node; offset: number; }' is not assignable to type 'number'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(100,11): error TS2339: Property 'clipboardData' does not exist on type 'Event'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(110,11): error TS2339: Property 'dataTransfer' does not exist on type 'Event'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(111,11): error TS2339: Property 'dataTransfer' does not exist on type 'Event'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(112,11): error TS2339: Property 'dataTransfer' does not exist on type 'Event'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(125,38): error TS2339: Property 'itemCount' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(132,24): error TS2694: Namespace 'Console' has no exported member 'ConsoleViewportElement'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(139,32): error TS2339: Property 'itemElement' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(154,34): error TS2339: Property 'fastHeight' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(196,58): error TS2339: Property 'hasSelection' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(207,17): error TS2339: Property 'intersectsNode' does not exist on type 'Range'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(215,7): error TS2322: Type '{ item: number; node: Node; offset: number; }' is not assignable to type 'number'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(217,7): error TS2322: Type '{ item: number; node: Node; offset: number; }' is not assignable to type 'number'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(220,28): error TS2339: Property 'intersectsNode' does not exist on type 'Range'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(221,31): error TS2339: Property 'intersectsNode' does not exist on type 'Range'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(238,7): error TS2322: Type 'number | { item: number; node: Node; offset: number; }' is not assignable to type 'number'. Type '{ item: number; node: Node; offset: number; }' is not assignable to type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(247,37): error TS2339: Property 'item' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(247,59): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(238,37): error TS2339: Property 'item' does not exist on type 'number'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(238,59): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'item' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(248,7): error TS2322: Type 'number | { item: number; node: Node; offset: number; }' is not assignable to type 'number'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(239,7): error TS2322: Type 'number | { item: number; node: Node; offset: number; }' is not assignable to type 'number'. Type '{ item: number; node: Node; offset: number; }' is not assignable to type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(248,35): error TS2339: Property 'item' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(248,55): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(239,35): error TS2339: Property 'item' does not exist on type 'number'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(239,55): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'item' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(250,7): error TS2322: Type 'number | { item: number; node: Node; offset: number; }' is not assignable to type 'number'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(241,7): error TS2322: Type 'number | { item: number; node: Node; offset: number; }' is not assignable to type 'number'. Type '{ item: number; node: Node; offset: number; }' is not assignable to type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(251,7): error TS2322: Type 'number | { item: number; node: Node; offset: number; }' is not assignable to type 'number'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(242,7): error TS2322: Type 'number | { item: number; node: Node; offset: number; }' is not assignable to type 'number'. Type '{ item: number; node: Node; offset: number; }' is not assignable to type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(253,7): error TS2322: Type 'number | { item: number; node: Node; offset: number; }' is not assignable to type 'number'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(244,7): error TS2322: Type 'number | { item: number; node: Node; offset: number; }' is not assignable to type 'number'. Type '{ item: number; node: Node; offset: number; }' is not assignable to type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(255,7): error TS2322: Type 'number | { item: number; node: Node; offset: number; }' is not assignable to type 'number'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(246,7): error TS2322: Type 'number | { item: number; node: Node; offset: number; }' is not assignable to type 'number'. Type '{ item: number; node: Node; offset: number; }' is not assignable to type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(275,57): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(266,57): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'item' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(275,87): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(266,87): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'item' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(276,45): error TS2339: Property 'node' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(267,45): error TS2339: Property 'node' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'node' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(277,44): error TS2339: Property 'offset' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(268,44): error TS2339: Property 'offset' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'offset' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(279,33): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(270,33): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'item' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(281,38): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(272,38): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'item' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(288,55): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(279,55): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'item' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(288,83): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(279,83): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'item' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(289,41): error TS2339: Property 'node' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(280,41): error TS2339: Property 'node' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'node' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(290,40): error TS2339: Property 'offset' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(281,40): error TS2339: Property 'offset' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'offset' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(292,31): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(283,31): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'item' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(294,36): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(285,36): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'item' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(325,34): error TS2339: Property 'getComponentSelection' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(345,78): error TS2339: Property 'minimumRowHeight' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(349,32): error TS2339: Property 'lowerBound' does not exist on type 'Int32Array'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(353,96): error TS2339: Property 'minimumRowHeight' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(397,33): error TS2495: Type 'Set' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(417,45): error TS2339: Property 'getComponentSelection' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(432,33): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(316,34): error TS2339: Property 'getComponentSelection' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(336,78): error TS2339: Property 'minimumRowHeight' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(340,32): error TS2339: Property 'lowerBound' does not exist on type 'Int32Array'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(344,96): error TS2339: Property 'minimumRowHeight' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(388,33): error TS2495: Type 'Set' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(408,45): error TS2339: Property 'getComponentSelection' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(423,33): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'item' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(432,57): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(423,57): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'item' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(433,46): error TS2339: Property 'element' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(438,66): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(424,46): error TS2339: Property 'element' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(429,66): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'item' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(438,72): error TS2339: Property 'element' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(439,22): error TS2339: Property 'node' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(429,72): error TS2339: Property 'element' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(430,22): error TS2339: Property 'node' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'node' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(439,43): error TS2339: Property 'node' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(430,43): error TS2339: Property 'node' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'node' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(440,85): error TS2339: Property 'node' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(431,85): error TS2339: Property 'node' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'node' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(440,104): error TS2339: Property 'offset' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(431,104): error TS2339: Property 'offset' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'offset' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(441,51): error TS2339: Property 'peekLast' does not exist on type 'any[]'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(444,70): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(432,51): error TS2339: Property 'peekLast' does not exist on type 'any[]'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(435,70): error TS2339: Property 'item' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'item' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(444,76): error TS2339: Property 'element' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(445,24): error TS2339: Property 'node' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(435,76): error TS2339: Property 'element' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(436,24): error TS2339: Property 'node' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'node' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(445,47): error TS2339: Property 'node' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(436,47): error TS2339: Property 'node' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'node' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(446,89): error TS2339: Property 'node' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(437,89): error TS2339: Property 'node' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'node' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(446,110): error TS2339: Property 'offset' does not exist on type 'number | { item: number; node: Node; offset: number; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(437,110): error TS2339: Property 'offset' does not exist on type 'number | { item: number; node: Node; offset: number; }'. Property 'offset' does not exist on type 'number'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(472,25): error TS2339: Property 'traverseNextNode' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(497,39): error TS2339: Property 'lowerBound' does not exist on type 'Int32Array'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(510,87): error TS2339: Property 'minimumRowHeight' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(549,22): error TS2339: Property 'isScrolledToBottom' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(560,22): error TS2339: Property 'isScrolledToBottom' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(570,25): error TS2339: Property 'offsetHeight' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(577,9): error TS2339: Property 'ConsoleViewportProvider' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(579,9): error TS2339: Property 'ConsoleViewportProvider' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(604,24): error TS2694: Namespace 'Console' has no exported member 'ConsoleViewportElement'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(614,9): error TS2339: Property 'ConsoleViewportElement' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(615,9): error TS2339: Property 'ConsoleViewportElement' does not exist on type '{ new (): Console; prototype: Console; }'. -node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(621,15): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(463,25): error TS2339: Property 'traverseNextNode' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(488,39): error TS2339: Property 'lowerBound' does not exist on type 'Int32Array'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(501,87): error TS2339: Property 'minimumRowHeight' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(540,22): error TS2339: Property 'isScrolledToBottom' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(551,22): error TS2339: Property 'isScrolledToBottom' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(561,25): error TS2339: Property 'offsetHeight' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(568,9): error TS2339: Property 'ConsoleViewportProvider' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(570,9): error TS2339: Property 'ConsoleViewportProvider' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(595,24): error TS2694: Namespace 'Console' has no exported member 'ConsoleViewportElement'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(605,9): error TS2339: Property 'ConsoleViewportElement' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(606,9): error TS2339: Property 'ConsoleViewportElement' does not exist on type '{ new (): Console; prototype: Console; }'. +node_modules/chrome-devtools-frontend/front_end/console/ConsoleViewport.js(612,15): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value. node_modules/chrome-devtools-frontend/front_end/console_counters/WarningErrorCounter.js(42,21): error TS2339: Property 'createChild' does not exist on type 'Element'. node_modules/chrome-devtools-frontend/front_end/console_counters/WarningErrorCounter.js(58,5): error TS2322: Type 'number' is not assignable to type 'string'. node_modules/chrome-devtools-frontend/front_end/console_counters/WarningErrorCounter.js(84,19): error TS2339: Property 'title' does not exist on type 'Element'. @@ -4543,9 +4541,9 @@ node_modules/chrome-devtools-frontend/front_end/console_model/ConsoleModel.js(43 node_modules/chrome-devtools-frontend/front_end/console_model/ConsoleModel.js(448,26): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. node_modules/chrome-devtools-frontend/front_end/console_model/ConsoleModel.js(481,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. node_modules/chrome-devtools-frontend/front_end/console_model/ConsoleModel.js(514,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/console_model/ConsoleModel.js(578,54): error TS2339: Property '_pageLoadSequenceNumber' does not exist on type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/console_model/ConsoleModel.js(577,54): error TS2339: Property '_pageLoadSequenceNumber' does not exist on type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/console_model/ConsoleModel.js(614,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. node_modules/chrome-devtools-frontend/front_end/console_model/ConsoleModel.js(615,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/console_model/ConsoleModel.js(616,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. node_modules/chrome-devtools-frontend/front_end/console_test_runner/ConsoleTestRunner.js(10,73): error TS1003: Identifier expected. node_modules/chrome-devtools-frontend/front_end/console_test_runner/ConsoleTestRunner.js(16,31): error TS2694: Namespace 'ConsoleTestRunner' has no exported member 'Formatter'. node_modules/chrome-devtools-frontend/front_end/console_test_runner/ConsoleTestRunner.js(26,31): error TS2694: Namespace 'ConsoleTestRunner' has no exported member 'Formatter'. @@ -4574,7 +4572,6 @@ node_modules/chrome-devtools-frontend/front_end/console_test_runner/ConsoleTestR node_modules/chrome-devtools-frontend/front_end/console_test_runner/ConsoleTestRunner.js(516,51): error TS2339: Property 'traverseNextTextNode' does not exist on type 'Node'. node_modules/chrome-devtools-frontend/front_end/console_test_runner/ConsoleTestRunner.js(520,25): error TS2339: Property 'traverseNextTextNode' does not exist on type 'Node'. node_modules/chrome-devtools-frontend/front_end/console_test_runner/ConsoleTestRunner.js(549,22): error TS2522: The 'arguments' object cannot be referenced in an async function or method in ES3 and ES5. Consider using a standard function or method. -node_modules/chrome-devtools-frontend/front_end/console_test_runner/ConsoleTestRunner.js(555,30): error TS2339: Property 'ConsoleView' does not exist on type '{ new (): Console; prototype: Console; }'. node_modules/chrome-devtools-frontend/front_end/cookie_table/CookiesTable.js(39,36): error TS1138: Parameter declaration expected. node_modules/chrome-devtools-frontend/front_end/cookie_table/CookiesTable.js(39,36): error TS8024: JSDoc '@param' tag has name 'function', but there is no parameter with that name. node_modules/chrome-devtools-frontend/front_end/cookie_table/CookiesTable.js(42,5): error TS2346: Call target does not contain any signatures. @@ -4678,12 +4675,10 @@ node_modules/chrome-devtools-frontend/front_end/coverage/CoverageView.js(7,5): e node_modules/chrome-devtools-frontend/front_end/coverage/CoverageView.js(187,55): error TS2339: Property 'bytesToString' does not exist on type 'NumberConstructor'. node_modules/chrome-devtools-frontend/front_end/coverage/CoverageView.js(187,85): error TS2339: Property 'bytesToString' does not exist on type 'NumberConstructor'. node_modules/chrome-devtools-frontend/front_end/coverage_test_runner/CoverageTestRunner.js(12,27): error TS2339: Property 'runtime' does not exist on type 'Window'. -node_modules/chrome-devtools-frontend/front_end/coverage_test_runner/CoverageTestRunner.js(20,27): error TS2339: Property 'runtime' does not exist on type 'Window'. -node_modules/chrome-devtools-frontend/front_end/coverage_test_runner/CoverageTestRunner.js(28,27): error TS2339: Property 'runtime' does not exist on type 'Window'. -node_modules/chrome-devtools-frontend/front_end/coverage_test_runner/CoverageTestRunner.js(33,13): error TS1055: Type 'Promise<(Anonymous class)>' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/coverage_test_runner/CoverageTestRunner.js(49,23): error TS2694: Namespace 'DataGrid' has no exported member 'DataGridNode'. -node_modules/chrome-devtools-frontend/front_end/coverage_test_runner/CoverageTestRunner.js(52,31): error TS2339: Property 'runtime' does not exist on type 'Window'. -node_modules/chrome-devtools-frontend/front_end/coverage_test_runner/CoverageTestRunner.js(87,31): error TS2339: Property 'runtime' does not exist on type 'Window'. +node_modules/chrome-devtools-frontend/front_end/coverage_test_runner/CoverageTestRunner.js(17,27): error TS2339: Property 'runtime' does not exist on type 'Window'. +node_modules/chrome-devtools-frontend/front_end/coverage_test_runner/CoverageTestRunner.js(22,27): error TS2339: Property 'runtime' does not exist on type 'Window'. +node_modules/chrome-devtools-frontend/front_end/coverage_test_runner/CoverageTestRunner.js(40,31): error TS2339: Property 'runtime' does not exist on type 'Window'. +node_modules/chrome-devtools-frontend/front_end/coverage_test_runner/CoverageTestRunner.js(75,31): error TS2339: Property 'runtime' does not exist on type 'Window'. node_modules/chrome-devtools-frontend/front_end/data_grid/DataGrid.js(32,32): error TS2694: Namespace 'DataGrid' has no exported member 'DataGrid'. node_modules/chrome-devtools-frontend/front_end/data_grid/DataGrid.js(38,5): error TS2346: Call target does not contain any signatures. node_modules/chrome-devtools-frontend/front_end/data_grid/DataGrid.js(41,18): error TS2339: Property 'tabIndex' does not exist on type 'Element'. @@ -5389,58 +5384,58 @@ node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js( node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(443,36): error TS2339: Property 'enclosingNodeOrSelfWithClass' does not exist on type 'Element'. node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(467,34): error TS2339: Property 'enclosingNodeOrSelfWithClass' does not exist on type 'EventTarget'. node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(468,37): error TS2339: Property 'enclosingNodeOrSelfWithClass' does not exist on type 'EventTarget'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(575,10): error TS2339: Property 'style' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(576,10): error TS2339: Property 'style' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(580,10): error TS2339: Property 'scrollIntoViewIfNeeded' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(673,37): error TS2339: Property 'enclosingNodeOrSelfWithClass' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(772,10): error TS2339: Property 'runtime' does not exist on type 'Window'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(775,20): error TS2694: Namespace 'UI' has no exported member 'TextEditorFactory'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(779,28): error TS2339: Property 'createEditor' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(851,18): error TS2339: Property 'altKey' does not exist on type 'Event'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(851,35): error TS2339: Property 'shiftKey' does not exist on type 'Event'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(852,55): error TS2339: Property 'isMetaOrCtrlForTest' does not exist on type 'Event'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(572,10): error TS2339: Property 'style' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(573,10): error TS2339: Property 'style' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(577,10): error TS2339: Property 'scrollIntoViewIfNeeded' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(670,37): error TS2339: Property 'enclosingNodeOrSelfWithClass' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(769,10): error TS2339: Property 'runtime' does not exist on type 'Window'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(772,20): error TS2694: Namespace 'UI' has no exported member 'TextEditorFactory'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(776,28): error TS2339: Property 'createEditor' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(848,18): error TS2339: Property 'altKey' does not exist on type 'Event'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(848,35): error TS2339: Property 'shiftKey' does not exist on type 'Event'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(849,55): error TS2339: Property 'isMetaOrCtrlForTest' does not exist on type 'Event'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(850,15): error TS2339: Property 'consume' does not exist on type 'Event'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(852,24): error TS2339: Property 'keyCode' does not exist on type 'Event'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(852,79): error TS2339: Property 'key' does not exist on type 'Event'. node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(853,15): error TS2339: Property 'consume' does not exist on type 'Event'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(855,24): error TS2339: Property 'keyCode' does not exist on type 'Event'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(855,79): error TS2339: Property 'key' does not exist on type 'Event'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(856,15): error TS2339: Property 'consume' does not exist on type 'Event'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(868,26): error TS2694: Namespace 'Protocol' has no exported member 'Error'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(925,5): error TS2554: Expected 1-2 arguments, but got 0. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1003,5): error TS2554: Expected 1-2 arguments, but got 0. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1027,24): error TS2694: Namespace 'Elements' has no exported member 'ElementsTreeOutline'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1109,47): error TS2554: Expected 2-3 arguments, but got 1. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1135,28): error TS2694: Namespace 'Components' has no exported member 'DOMPresentationUtils'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1161,35): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1170,30): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1173,28): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1192,27): error TS2495: Type 'Set' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1209,24): error TS2694: Namespace 'Elements' has no exported member 'ElementsTreeOutline'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1247,15): error TS2339: Property 'setTextContentTruncatedIfNeeded' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1252,41): error TS2339: Property 'createChild' does not exist on type 'Node'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1314,20): error TS2339: Property 'createTextChild' does not exist on type 'DocumentFragment'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1337,22): error TS2339: Property 'createTextChild' does not exist on type 'DocumentFragment'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1343,20): error TS2339: Property 'createTextChild' does not exist on type 'DocumentFragment'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1355,39): error TS2339: Property 'createChild' does not exist on type 'Node'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1357,19): error TS2339: Property 'createTextChild' does not exist on type 'Node'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1365,24): error TS2694: Namespace 'Elements' has no exported member 'ElementsTreeOutline'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1372,36): error TS2339: Property 'createChild' does not exist on type 'Node'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1395,19): error TS2339: Property 'createTextChild' does not exist on type 'Node'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1423,24): error TS2694: Namespace 'Elements' has no exported member 'ElementsTreeOutline'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1453,44): error TS2339: Property 'createChild' does not exist on type 'DocumentFragment'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1455,22): error TS2339: Property 'createTextChild' does not exist on type 'DocumentFragment'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1462,42): error TS2339: Property 'createChild' does not exist on type 'DocumentFragment'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1466,20): error TS2339: Property 'createTextChild' does not exist on type 'DocumentFragment'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1481,34): error TS2339: Property 'createChild' does not exist on type 'DocumentFragment'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1488,34): error TS2339: Property 'createChild' does not exist on type 'DocumentFragment'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1495,20): error TS2339: Property 'createTextChild' does not exist on type 'DocumentFragment'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1496,42): error TS2339: Property 'createChild' does not exist on type 'DocumentFragment'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1500,20): error TS2339: Property 'createTextChild' does not exist on type 'DocumentFragment'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1507,39): error TS2339: Property 'createChild' does not exist on type 'DocumentFragment'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1512,39): error TS2339: Property 'createChild' does not exist on type 'DocumentFragment'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1529,37): error TS2339: Property 'createChild' does not exist on type 'DocumentFragment'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1534,40): error TS2339: Property 'createChild' does not exist on type 'DocumentFragment'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1538,18): error TS2339: Property 'createTextChild' does not exist on type 'DocumentFragment'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1578,26): error TS2694: Namespace 'Protocol' has no exported member 'Error'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1654,100): error TS1003: Identifier expected. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(865,26): error TS2694: Namespace 'Protocol' has no exported member 'Error'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(922,5): error TS2554: Expected 1-2 arguments, but got 0. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1000,5): error TS2554: Expected 1-2 arguments, but got 0. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1024,24): error TS2694: Namespace 'Elements' has no exported member 'ElementsTreeOutline'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1106,47): error TS2554: Expected 2-3 arguments, but got 1. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1132,28): error TS2694: Namespace 'Components' has no exported member 'DOMPresentationUtils'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1158,35): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1167,30): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1170,28): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1189,27): error TS2495: Type 'Set' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1206,24): error TS2694: Namespace 'Elements' has no exported member 'ElementsTreeOutline'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1244,15): error TS2339: Property 'setTextContentTruncatedIfNeeded' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1249,41): error TS2339: Property 'createChild' does not exist on type 'Node'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1311,20): error TS2339: Property 'createTextChild' does not exist on type 'DocumentFragment'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1334,22): error TS2339: Property 'createTextChild' does not exist on type 'DocumentFragment'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1340,20): error TS2339: Property 'createTextChild' does not exist on type 'DocumentFragment'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1352,39): error TS2339: Property 'createChild' does not exist on type 'Node'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1354,19): error TS2339: Property 'createTextChild' does not exist on type 'Node'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1362,24): error TS2694: Namespace 'Elements' has no exported member 'ElementsTreeOutline'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1369,36): error TS2339: Property 'createChild' does not exist on type 'Node'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1392,19): error TS2339: Property 'createTextChild' does not exist on type 'Node'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1420,24): error TS2694: Namespace 'Elements' has no exported member 'ElementsTreeOutline'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1450,44): error TS2339: Property 'createChild' does not exist on type 'DocumentFragment'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1452,22): error TS2339: Property 'createTextChild' does not exist on type 'DocumentFragment'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1459,42): error TS2339: Property 'createChild' does not exist on type 'DocumentFragment'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1463,20): error TS2339: Property 'createTextChild' does not exist on type 'DocumentFragment'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1478,34): error TS2339: Property 'createChild' does not exist on type 'DocumentFragment'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1485,34): error TS2339: Property 'createChild' does not exist on type 'DocumentFragment'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1492,20): error TS2339: Property 'createTextChild' does not exist on type 'DocumentFragment'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1493,42): error TS2339: Property 'createChild' does not exist on type 'DocumentFragment'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1497,20): error TS2339: Property 'createTextChild' does not exist on type 'DocumentFragment'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1504,39): error TS2339: Property 'createChild' does not exist on type 'DocumentFragment'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1509,39): error TS2339: Property 'createChild' does not exist on type 'DocumentFragment'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1526,37): error TS2339: Property 'createChild' does not exist on type 'DocumentFragment'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1531,40): error TS2339: Property 'createChild' does not exist on type 'DocumentFragment'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1535,18): error TS2339: Property 'createTextChild' does not exist on type 'DocumentFragment'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1575,26): error TS2694: Namespace 'Protocol' has no exported member 'Error'. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElement.js(1651,100): error TS1003: Identifier expected. node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElementHighlighter.js(24,22): error TS2694: Namespace 'Common' has no exported member 'Event'. node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeElementHighlighter.js(77,38): error TS2345: Argument of type '(Anonymous class)' is not assignable to parameter of type '(Anonymous class)'. Property 'treeOutline' is missing in type '(Anonymous class)'. @@ -7259,17 +7254,17 @@ node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(169,45): error TS2339: Property 'wheelDeltaY' does not exist on type 'Event'. node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(256,16): error TS2315: Type '(Anonymous class)' is not generic. node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(256,51): error TS2694: Namespace 'Network' has no exported member 'NetworkNode'. -node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(331,23): error TS2694: Namespace 'Network' has no exported member 'NetworkLogViewColumns'. -node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(345,34): error TS2345: Argument of type '{ [x: string]: any; }' is not assignable to parameter of type 'V'. -node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(370,14): error TS2339: Property 'createTextChild' does not exist on type 'DocumentFragment'. -node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(371,32): error TS2339: Property 'createChild' does not exist on type 'DocumentFragment'. -node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(418,25): error TS2694: Namespace 'Network' has no exported member 'NetworkLogViewColumns'. -node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(469,24): error TS2694: Namespace 'Network' has no exported member 'NetworkLogViewColumns'. -node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(481,44): error TS2694: Namespace 'Network' has no exported member 'NetworkLogViewColumns'. -node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(522,19): error TS2694: Namespace 'UI' has no exported member 'PopoverRequest'. -node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(531,31): error TS2339: Property 'enclosingNodeOrSelfWithClass' does not exist on type 'EventTarget'. -node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(601,2): error TS1131: Property or signature expected. -node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(616,31): error TS2300: Duplicate identifier 'Descriptor'. +node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(330,23): error TS2694: Namespace 'Network' has no exported member 'NetworkLogViewColumns'. +node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(344,34): error TS2345: Argument of type '{ [x: string]: any; }' is not assignable to parameter of type 'V'. +node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(369,14): error TS2339: Property 'createTextChild' does not exist on type 'DocumentFragment'. +node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(370,32): error TS2339: Property 'createChild' does not exist on type 'DocumentFragment'. +node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(417,25): error TS2694: Namespace 'Network' has no exported member 'NetworkLogViewColumns'. +node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(468,24): error TS2694: Namespace 'Network' has no exported member 'NetworkLogViewColumns'. +node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(480,44): error TS2694: Namespace 'Network' has no exported member 'NetworkLogViewColumns'. +node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(521,19): error TS2694: Namespace 'UI' has no exported member 'PopoverRequest'. +node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(530,31): error TS2339: Property 'enclosingNodeOrSelfWithClass' does not exist on type 'EventTarget'. +node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(600,2): error TS1131: Property or signature expected. +node_modules/chrome-devtools-frontend/front_end/network/NetworkLogViewColumns.js(615,31): error TS2300: Duplicate identifier 'Descriptor'. node_modules/chrome-devtools-frontend/front_end/network/NetworkManageCustomHeadersView.js(18,5): error TS2346: Call target does not contain any signatures. node_modules/chrome-devtools-frontend/front_end/network/NetworkManageCustomHeadersView.js(70,26): error TS2339: Property 'createChild' does not exist on type 'Element'. node_modules/chrome-devtools-frontend/front_end/network/NetworkManageCustomHeadersView.js(90,18): error TS2694: Namespace 'UI' has no exported member 'ListWidget'. @@ -7513,10 +7508,10 @@ node_modules/chrome-devtools-frontend/front_end/network_priorities/NetworkPriori node_modules/chrome-devtools-frontend/front_end/network_priorities/NetworkPriorities.js(35,29): error TS2694: Namespace 'Protocol' has no exported member 'Network'. node_modules/chrome-devtools-frontend/front_end/network_priorities/NetworkPriorities.js(53,28): error TS2694: Namespace 'Protocol' has no exported member 'Network'. node_modules/chrome-devtools-frontend/front_end/network_priorities/NetworkPriorities.js(56,29): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/network_test_runner/NetworkTestRunner.js(69,8): error TS2304: Cannot find name 'i'. -node_modules/chrome-devtools-frontend/front_end/network_test_runner/NetworkTestRunner.js(69,15): error TS2304: Cannot find name 'i'. -node_modules/chrome-devtools-frontend/front_end/network_test_runner/NetworkTestRunner.js(69,36): error TS2304: Cannot find name 'i'. -node_modules/chrome-devtools-frontend/front_end/network_test_runner/NetworkTestRunner.js(70,35): error TS2304: Cannot find name 'i'. +node_modules/chrome-devtools-frontend/front_end/network_test_runner/NetworkTestRunner.js(65,8): error TS2304: Cannot find name 'i'. +node_modules/chrome-devtools-frontend/front_end/network_test_runner/NetworkTestRunner.js(65,15): error TS2304: Cannot find name 'i'. +node_modules/chrome-devtools-frontend/front_end/network_test_runner/NetworkTestRunner.js(65,36): error TS2304: Cannot find name 'i'. +node_modules/chrome-devtools-frontend/front_end/network_test_runner/NetworkTestRunner.js(66,35): error TS2304: Cannot find name 'i'. node_modules/chrome-devtools-frontend/front_end/object_ui/CustomPreviewComponent.js(31,20): error TS2339: Property 'classList' does not exist on type 'Node'. node_modules/chrome-devtools-frontend/front_end/object_ui/CustomPreviewComponent.js(94,30): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. node_modules/chrome-devtools-frontend/front_end/object_ui/CustomPreviewComponent.js(116,11): error TS2339: Property 'consume' does not exist on type 'Event'. @@ -7876,9 +7871,9 @@ node_modules/chrome-devtools-frontend/front_end/perf_ui/TimelineOverviewPane.js( node_modules/chrome-devtools-frontend/front_end/perf_ui/TimelineOverviewPane.js(381,15): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value. node_modules/chrome-devtools-frontend/front_end/perf_ui/TimelineOverviewPane.js(392,5): error TS2346: Call target does not contain any signatures. node_modules/chrome-devtools-frontend/front_end/perf_ui/TimelineOverviewPane.js(508,61): error TS2339: Property 'boxInWindow' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/performance_test_runner/TimelineTestRunner.js(232,44): error TS2339: Property 'peekLast' does not exist on type 'any[]'. -node_modules/chrome-devtools-frontend/front_end/performance_test_runner/TimelineTestRunner.js(333,20): error TS2339: Property 'set' does not exist on type '{ _map: Map>; }'. -node_modules/chrome-devtools-frontend/front_end/performance_test_runner/TimelineTestRunner.js(347,36): error TS2339: Property 'get' does not exist on type '{ _map: Map>; }'. +node_modules/chrome-devtools-frontend/front_end/performance_test_runner/TimelineTestRunner.js(231,44): error TS2339: Property 'peekLast' does not exist on type 'any[]'. +node_modules/chrome-devtools-frontend/front_end/performance_test_runner/TimelineTestRunner.js(332,20): error TS2339: Property 'set' does not exist on type '{ _map: Map>; }'. +node_modules/chrome-devtools-frontend/front_end/performance_test_runner/TimelineTestRunner.js(346,36): error TS2339: Property 'get' does not exist on type '{ _map: Map>; }'. node_modules/chrome-devtools-frontend/front_end/persistence/Automapping.js(44,63): error TS2694: Namespace 'Workspace' has no exported member 'Project'. node_modules/chrome-devtools-frontend/front_end/persistence/Automapping.js(47,65): error TS2694: Namespace 'Workspace' has no exported member 'Project'. node_modules/chrome-devtools-frontend/front_end/persistence/Automapping.js(67,40): error TS2339: Property 'valuesArray' does not exist on type 'Set<(Anonymous class)>'. @@ -8025,56 +8020,37 @@ node_modules/chrome-devtools-frontend/front_end/persistence/IsolatedFileSystemMa node_modules/chrome-devtools-frontend/front_end/persistence/IsolatedFileSystemManager.js(319,97): error TS1003: Identifier expected. node_modules/chrome-devtools-frontend/front_end/persistence/IsolatedFileSystemManager.js(322,88): error TS1003: Identifier expected. node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(10,5): error TS2346: Call target does not contain any signatures. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(28,27): error TS2694: Namespace 'Workspace' has no exported member 'Project'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(30,27): error TS2694: Namespace 'Workspace' has no exported member 'Project'. node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(37,31): error TS2694: Namespace 'Common' has no exported member 'EventTarget'. node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(57,25): error TS2694: Namespace 'Workspace' has no exported member 'Project'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(60,88): error TS2339: Property 'id' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(73,38): error TS2339: Property 'uiSourceCodes' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(79,26): error TS2694: Namespace 'Workspace' has no exported member 'Project'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(86,25): error TS2694: Namespace 'Workspace' has no exported member 'Project'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(90,17): error TS2339: Property 'type' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(92,88): error TS2339: Property 'id' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(100,26): error TS2694: Namespace 'Workspace' has no exported member 'Project'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(112,26): error TS2694: Namespace 'Workspace' has no exported member 'Project'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(120,28): error TS2694: Namespace 'Persistence' has no exported member 'FileSystemWorkspaceBinding'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(125,36): error TS2694: Namespace 'Persistence' has no exported member 'FileSystemWorkspaceBinding'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(137,65): error TS2694: Namespace 'Workspace' has no exported member 'Project'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(140,67): error TS2694: Namespace 'Workspace' has no exported member 'Project'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(178,25): error TS2694: Namespace 'Workspace' has no exported member 'Project'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(186,18): error TS2339: Property 'uiSourceCodes' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(188,15): error TS2339: Property 'uiSourceCodes' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(192,24): error TS2339: Property 'uiSourceCodes' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(210,97): error TS2339: Property 'id' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(219,55): error TS2339: Property 'hashCode' does not exist on type 'StringConstructor'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(313,58): error TS2339: Property 'type' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(329,31): error TS2339: Property 'createFile' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(359,32): error TS2339: Property 'type' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(363,56): error TS2339: Property 'uiSourceCodeForURL' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(364,31): error TS2339: Property 'fileSystemPath' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(424,32): error TS2339: Property 'type' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(434,25): error TS2694: Namespace 'Workspace' has no exported member 'Project'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(437,17): error TS2339: Property 'type' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(440,88): error TS2339: Property 'id' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(448,25): error TS2694: Namespace 'Workspace' has no exported member 'Project'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(453,38): error TS2339: Property 'uiSourceCodes' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(459,19): error TS2694: Namespace 'SDK' has no exported member 'MultitargetNetworkManager'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(460,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(466,36): error TS2339: Property 'fileSystemPath' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(467,54): error TS2339: Property 'uiSourceCodeForURL' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(483,43): error TS2694: Namespace 'Persistence' has no exported member 'FileSystemWorkspaceBinding'. -node_modules/chrome-devtools-frontend/front_end/persistence/OverridesSettingsTab.js(10,5): error TS2346: Call target does not contain any signatures. -node_modules/chrome-devtools-frontend/front_end/persistence/OverridesSettingsTab.js(36,49): error TS2694: Namespace 'Persistence' has no exported member 'FileSystemWorkspaceBinding'. -node_modules/chrome-devtools-frontend/front_end/persistence/OverridesSettingsTab.js(70,43): error TS2694: Namespace 'Persistence' has no exported member 'FileSystemWorkspaceBinding'. -node_modules/chrome-devtools-frontend/front_end/persistence/OverridesSettingsTab.js(73,31): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/persistence/OverridesSettingsTab.js(79,13): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/persistence/OverridesSettingsTab.js(81,33): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/persistence/OverridesSettingsTab.js(94,43): error TS2694: Namespace 'Persistence' has no exported member 'FileSystemWorkspaceBinding'. -node_modules/chrome-devtools-frontend/front_end/persistence/OverridesSettingsTab.js(103,18): error TS2694: Namespace 'UI' has no exported member 'ListWidget'. -node_modules/chrome-devtools-frontend/front_end/persistence/OverridesSettingsTab.js(107,43): error TS2694: Namespace 'Persistence' has no exported member 'FileSystemWorkspaceBinding'. -node_modules/chrome-devtools-frontend/front_end/persistence/OverridesSettingsTab.js(114,19): error TS2694: Namespace 'UI' has no exported member 'ListWidget'. -node_modules/chrome-devtools-frontend/front_end/persistence/OverridesSettingsTab.js(117,43): error TS2694: Namespace 'Persistence' has no exported member 'FileSystemWorkspaceBinding'. -node_modules/chrome-devtools-frontend/front_end/persistence/OverridesSettingsTab.js(138,27): error TS2694: Namespace 'Persistence' has no exported member 'FileSystemWorkspaceBinding'. -node_modules/chrome-devtools-frontend/front_end/persistence/OverridesSettingsTab.js(139,19): error TS2694: Namespace 'UI' has no exported member 'ListWidget'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(62,88): error TS2339: Property 'id' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(68,38): error TS2339: Property 'uiSourceCodes' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(74,26): error TS2694: Namespace 'Workspace' has no exported member 'Project'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(81,25): error TS2694: Namespace 'Workspace' has no exported member 'Project'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(85,17): error TS2339: Property 'type' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(87,88): error TS2339: Property 'id' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(95,26): error TS2694: Namespace 'Workspace' has no exported member 'Project'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(107,26): error TS2694: Namespace 'Workspace' has no exported member 'Project'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(118,65): error TS2694: Namespace 'Workspace' has no exported member 'Project'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(121,67): error TS2694: Namespace 'Workspace' has no exported member 'Project'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(144,24): error TS2339: Property 'uiSourceCodes' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(163,25): error TS2694: Namespace 'Workspace' has no exported member 'Project'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(171,18): error TS2339: Property 'uiSourceCodes' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(173,15): error TS2339: Property 'uiSourceCodes' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(282,58): error TS2339: Property 'type' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(303,25): error TS2339: Property 'createFile' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(319,102): error TS2339: Property 'id' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(334,32): error TS2339: Property 'type' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(351,14): error TS2403: Subsequent variable declarations must have the same type. Variable 'url' must be of type 'any', but here has type 'string'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(379,32): error TS2339: Property 'type' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(400,25): error TS2694: Namespace 'Workspace' has no exported member 'Project'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(403,17): error TS2339: Property 'type' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(406,88): error TS2339: Property 'id' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(414,25): error TS2694: Namespace 'Workspace' has no exported member 'Project'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(419,38): error TS2339: Property 'uiSourceCodes' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(425,19): error TS2694: Namespace 'SDK' has no exported member 'MultitargetNetworkManager'. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(426,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/persistence/NetworkPersistenceManager.js(439,43): error TS2694: Namespace 'Persistence' has no exported member 'FileSystemWorkspaceBinding'. node_modules/chrome-devtools-frontend/front_end/persistence/Persistence.js(15,5): error TS2346: Call target does not contain any signatures. node_modules/chrome-devtools-frontend/front_end/persistence/Persistence.js(21,51): error TS1005: '>' expected. node_modules/chrome-devtools-frontend/front_end/persistence/Persistence.js(58,23): error TS1138: Parameter declaration expected. @@ -8099,11 +8075,9 @@ node_modules/chrome-devtools-frontend/front_end/persistence/PersistenceUtils.js( node_modules/chrome-devtools-frontend/front_end/persistence/PersistenceUtils.js(49,1): error TS8022: JSDoc '@extends' is not attached to a class. node_modules/chrome-devtools-frontend/front_end/persistence/PersistenceUtils.js(54,5): error TS2346: Call target does not contain any signatures. node_modules/chrome-devtools-frontend/front_end/persistence/PersistenceUtils.js(60,22): error TS2694: Namespace 'Common' has no exported member 'Event'. -node_modules/chrome-devtools-frontend/front_end/persistence/WorkspaceSettingsTab.js(7,5): error TS2346: Call target does not contain any signatures. -node_modules/chrome-devtools-frontend/front_end/persistence/WorkspaceSettingsTab.js(25,37): error TS2694: Namespace 'Persistence' has no exported member 'FileSystemWorkspaceBinding'. -node_modules/chrome-devtools-frontend/front_end/persistence/WorkspaceSettingsTab.js(62,26): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/persistence/WorkspaceSettingsTab.js(115,26): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/persistence/WorkspaceSettingsTab.js(167,27): error TS2694: Namespace 'Persistence' has no exported member 'FileSystemWorkspaceBinding'. +node_modules/chrome-devtools-frontend/front_end/persistence/WorkspaceSettingsTab.js(10,5): error TS2346: Call target does not contain any signatures. +node_modules/chrome-devtools-frontend/front_end/persistence/WorkspaceSettingsTab.js(58,26): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/persistence/WorkspaceSettingsTab.js(109,26): error TS2339: Property 'createChild' does not exist on type 'Element'. node_modules/chrome-devtools-frontend/front_end/platform/utilities.js(30,58): error TS1003: Identifier expected. node_modules/chrome-devtools-frontend/front_end/platform/utilities.js(31,5): error TS2300: Duplicate identifier 'ArrayLike'. node_modules/chrome-devtools-frontend/front_end/platform/utilities.js(46,18): error TS2339: Property 'findAll' does not exist on type 'String'. @@ -9066,42 +9040,42 @@ node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkerCacheView node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(9,5): error TS2346: Call target does not contain any signatures. node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(20,64): error TS2694: Namespace 'Resources' has no exported member 'ServiceWorkersView'. node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(63,63): error TS2694: Namespace 'Common' has no exported member 'EventTarget'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(79,30): error TS2495: Type 'IterableIterator<(Anonymous class)>' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(112,25): error TS2495: Type 'IterableIterator' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(78,30): error TS2495: Type 'IterableIterator<(Anonymous class)>' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(111,25): error TS2495: Type 'IterableIterator' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(113,7): error TS2447: The '|=' operator is not allowed for boolean types. Consider using '||' instead. node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(114,7): error TS2447: The '|=' operator is not allowed for boolean types. Consider using '||' instead. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(115,7): error TS2447: The '|=' operator is not allowed for boolean types. Consider using '||' instead. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(131,25): error TS2495: Type 'IterableIterator' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(144,22): error TS2694: Namespace 'Common' has no exported member 'Event'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(155,30): error TS2495: Type 'IterableIterator<(Anonymous class)>' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(167,30): error TS2495: Type 'IterableIterator<(Anonymous class)>' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(205,22): error TS2694: Namespace 'Common' has no exported member 'Event'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(232,24): error TS2339: Property 'filterRegex' does not exist on type 'StringConstructor'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(256,30): error TS2339: Property 'asParsedURL' does not exist on type 'string'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(271,18): error TS2694: Namespace 'UI' has no exported member 'ReportView'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(302,39): error TS2694: Namespace 'Protocol' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(309,21): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(332,21): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(357,20): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(373,41): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(383,24): error TS2339: Property 'removeChildren' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(386,48): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(389,51): error TS2694: Namespace 'Protocol' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(399,23): error TS2339: Property 'removeChildren' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(401,34): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(409,23): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(434,23): error TS2339: Property 'removeChildren' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(435,43): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(463,20): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(471,23): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(484,25): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(493,22): error TS2694: Namespace 'Common' has no exported member 'Event'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(500,22): error TS2694: Namespace 'Common' has no exported member 'Event'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(525,24): error TS2694: Namespace 'Protocol' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(536,24): error TS2694: Namespace 'Protocol' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(540,15): error TS2339: Property 'createTextChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(543,13): error TS2339: Property 'removeChildren' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(544,13): error TS2339: Property 'createTextChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(545,30): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(130,25): error TS2495: Type 'IterableIterator' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(142,22): error TS2694: Namespace 'Common' has no exported member 'Event'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(153,30): error TS2495: Type 'IterableIterator<(Anonymous class)>' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(165,30): error TS2495: Type 'IterableIterator<(Anonymous class)>' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(203,22): error TS2694: Namespace 'Common' has no exported member 'Event'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(230,24): error TS2339: Property 'filterRegex' does not exist on type 'StringConstructor'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(254,30): error TS2339: Property 'asParsedURL' does not exist on type 'string'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(265,18): error TS2694: Namespace 'UI' has no exported member 'ReportView'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(296,39): error TS2694: Namespace 'Protocol' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(303,21): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(326,21): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(351,20): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(367,41): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(377,24): error TS2339: Property 'removeChildren' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(380,48): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(383,51): error TS2694: Namespace 'Protocol' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(393,23): error TS2339: Property 'removeChildren' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(395,34): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(403,23): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(428,23): error TS2339: Property 'removeChildren' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(429,43): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(457,20): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(465,23): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(478,25): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(487,22): error TS2694: Namespace 'Common' has no exported member 'Event'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(494,22): error TS2694: Namespace 'Common' has no exported member 'Event'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(519,24): error TS2694: Namespace 'Protocol' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(530,24): error TS2694: Namespace 'Protocol' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(534,15): error TS2339: Property 'createTextChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(537,13): error TS2339: Property 'removeChildren' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(538,13): error TS2339: Property 'createTextChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/resources/ServiceWorkersView.js(539,30): error TS2339: Property 'createChild' does not exist on type 'Element'. node_modules/chrome-devtools-frontend/front_end/resources/StorageItemsView.js(11,5): error TS2346: Call target does not contain any signatures. node_modules/chrome-devtools-frontend/front_end/resources/StorageItemsView.js(54,22): error TS2694: Namespace 'Common' has no exported member 'Event'. node_modules/chrome-devtools-frontend/front_end/screencast/InputModel.js(7,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. @@ -9212,67 +9186,67 @@ node_modules/chrome-devtools-frontend/front_end/sdk/CSSMetadata.js(197,24): erro node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(36,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(39,5): error TS2346: Call target does not contain any signatures. node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(41,17): error TS2315: Type '(Anonymous class)' is not generic. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(67,16): error TS2315: Type '(Anonymous class)' is not generic. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(102,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(127,21): error TS2694: Namespace 'SDK' has no exported member 'SourceMap'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(155,21): error TS2694: Namespace 'SDK' has no exported member 'SourceMap'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(203,31): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(207,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(239,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(242,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(263,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(266,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(291,41): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(305,15): error TS1055: Type 'Promise<(Anonymous class)[]>' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(320,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(329,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(330,15): error TS1055: Type 'Promise<(Anonymous class)>' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(349,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(357,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(366,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(366,29): error TS2694: Namespace 'SDK' has no exported member 'CSSModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(378,41): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(388,45): error TS2339: Property 'valuesArray' does not exist on type 'Map'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(407,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(408,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(408,29): error TS2694: Namespace 'SDK' has no exported member 'CSSModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(461,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(464,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(485,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(488,15): error TS1055: Type 'Promise<(Anonymous class)>' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(508,15): error TS1055: Type 'Promise<(Anonymous class)>' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(512,46): error TS2339: Property 'valuesArray' does not exist on type 'Map'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(534,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(545,39): error TS2339: Property 'valuesArray' does not exist on type 'Map'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(549,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(550,19): error TS2694: Namespace 'SDK' has no exported member 'CSSModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(557,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(588,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(609,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(613,20): error TS2345: Argument of type '(Anonymous class)' is not assignable to parameter of type 'boolean'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(616,32): error TS2339: Property 'remove' does not exist on type 'Map'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(618,46): error TS2315: Type 'any' is not generic. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(618,64): error TS2694: Namespace 'Protocol' has no exported member 'Page'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(618,96): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(625,35): error TS2339: Property 'remove' does not exist on type 'Map'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(627,34): error TS2339: Property 'remove' does not exist on type 'Map<(Anonymous class), Promise>'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(634,33): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(648,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(651,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(655,20): error TS2345: Argument of type '(Anonymous class)' is not assignable to parameter of type 'boolean'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(676,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(677,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(689,46): error TS2339: Property 'valuesArray' does not exist on type 'Map'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(709,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(753,112): error TS1003: Identifier expected. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(756,136): error TS1003: Identifier expected. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(780,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(850,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(858,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(866,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(882,31): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(887,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(899,33): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(66,16): error TS2315: Type '(Anonymous class)' is not generic. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(101,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(126,21): error TS2694: Namespace 'SDK' has no exported member 'SourceMap'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(154,21): error TS2694: Namespace 'SDK' has no exported member 'SourceMap'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(202,31): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(206,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(238,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(241,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(262,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(265,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(290,41): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(304,15): error TS1055: Type 'Promise<(Anonymous class)[]>' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(319,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(328,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(329,15): error TS1055: Type 'Promise<(Anonymous class)>' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(348,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(356,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(365,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(365,29): error TS2694: Namespace 'SDK' has no exported member 'CSSModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(377,41): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(387,45): error TS2339: Property 'valuesArray' does not exist on type 'Map'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(406,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(407,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(407,29): error TS2694: Namespace 'SDK' has no exported member 'CSSModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(460,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(463,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(484,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(487,15): error TS1055: Type 'Promise<(Anonymous class)>' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(507,15): error TS1055: Type 'Promise<(Anonymous class)>' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(511,46): error TS2339: Property 'valuesArray' does not exist on type 'Map'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(533,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(544,39): error TS2339: Property 'valuesArray' does not exist on type 'Map'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(548,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(549,19): error TS2694: Namespace 'SDK' has no exported member 'CSSModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(556,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(587,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(608,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(612,20): error TS2345: Argument of type '(Anonymous class)' is not assignable to parameter of type 'boolean'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(615,32): error TS2339: Property 'remove' does not exist on type 'Map'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(617,46): error TS2315: Type 'any' is not generic. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(617,64): error TS2694: Namespace 'Protocol' has no exported member 'Page'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(617,96): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(624,35): error TS2339: Property 'remove' does not exist on type 'Map'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(626,34): error TS2339: Property 'remove' does not exist on type 'Map<(Anonymous class), Promise>'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(633,33): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(647,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(650,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(654,20): error TS2345: Argument of type '(Anonymous class)' is not assignable to parameter of type 'boolean'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(675,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(676,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(688,46): error TS2339: Property 'valuesArray' does not exist on type 'Map'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(708,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(752,112): error TS1003: Identifier expected. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(755,136): error TS1003: Identifier expected. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(779,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(849,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(857,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(865,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(881,31): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(886,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/CSSModel.js(898,33): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. node_modules/chrome-devtools-frontend/front_end/sdk/CSSProperty.js(18,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. node_modules/chrome-devtools-frontend/front_end/sdk/CSSProperty.js(39,24): error TS2694: Namespace 'Protocol' has no exported member 'CSS'. node_modules/chrome-devtools-frontend/front_end/sdk/CSSProperty.js(107,19): error TS2694: Namespace 'SDK' has no exported member 'CSSModel'. @@ -9403,186 +9377,179 @@ node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(854,24): error T node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(866,15): error TS1055: Type 'Promise<(Anonymous class)>' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(874,34): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(890,7): error TS2322: Type '(Anonymous class)' is not assignable to type 'this'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(963,66): error TS1003: Identifier expected. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(971,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(987,15): error TS1055: Type 'Promise<(Anonymous class)>' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1014,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1032,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1035,5): error TS2346: Call target does not contain any signatures. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1047,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1050,5): error TS2346: Call target does not contain any signatures. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1155,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1156,15): error TS1055: Type 'Promise<(Anonymous class)>' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1166,34): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1174,15): error TS1055: Type 'Promise>' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1178,46): error TS2339: Property 'valuesArray' does not exist on type 'Set'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1193,34): error TS2694: Namespace 'Protocol' has no exported member 'Error'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1198,26): error TS2694: Namespace 'Protocol' has no exported member 'Error'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1204,16): error TS2345: Argument of type 'T' is not assignable to parameter of type 'T'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1210,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1225,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1238,31): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1241,32): error TS2339: Property 'addAll' does not exist on type 'Set'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1248,24): error TS2495: Type 'Set' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1267,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1278,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1290,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1302,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1312,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1313,32): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1326,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1337,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1338,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1339,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1351,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1352,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1364,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1365,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1380,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1381,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1397,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1398,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1414,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1415,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1431,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1432,32): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1453,23): error TS2495: Type 'IterableIterator<(Anonymous class)>' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1462,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1473,15): error TS1055: Type 'Promise<(Anonymous class)>' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1490,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1498,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1500,34): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1507,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1509,41): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1607,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1617,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1626,32): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1634,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1643,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1644,32): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1652,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1661,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1662,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1663,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1671,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1672,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1680,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1681,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1689,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1690,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1698,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1699,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1707,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1708,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1716,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1717,32): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(943,66): error TS1003: Identifier expected. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(951,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(967,15): error TS1055: Type 'Promise<(Anonymous class)>' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(994,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1012,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1015,5): error TS2346: Call target does not contain any signatures. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1027,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1030,5): error TS2346: Call target does not contain any signatures. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1134,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1135,15): error TS1055: Type 'Promise<(Anonymous class)>' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1145,34): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1153,15): error TS1055: Type 'Promise>' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1157,46): error TS2339: Property 'valuesArray' does not exist on type 'Set'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1172,34): error TS2694: Namespace 'Protocol' has no exported member 'Error'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1177,26): error TS2694: Namespace 'Protocol' has no exported member 'Error'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1183,16): error TS2345: Argument of type 'T' is not assignable to parameter of type 'T'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1189,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1204,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1217,31): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1220,32): error TS2339: Property 'addAll' does not exist on type 'Set'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1227,24): error TS2495: Type 'Set' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1246,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1257,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1269,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1281,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1291,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1292,32): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1305,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1316,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1317,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1318,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1330,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1331,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1343,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1344,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1359,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1360,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1376,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1377,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1393,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1394,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1410,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1411,32): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1432,23): error TS2495: Type 'IterableIterator<(Anonymous class)>' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1441,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1452,15): error TS1055: Type 'Promise<(Anonymous class)>' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1469,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1477,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1479,34): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1486,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1488,41): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1586,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1596,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1605,32): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1613,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1622,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1623,32): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1631,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1640,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1641,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1642,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1650,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1651,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1659,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1660,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1668,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1669,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1677,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1678,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1686,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1687,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1695,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/DOMModel.js(1696,32): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(36,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(39,5): error TS2346: Call target does not contain any signatures. node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(45,17): error TS2315: Type '(Anonymous class)' is not generic. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(90,16): error TS2315: Type '(Anonymous class)' is not generic. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(240,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(240,29): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(271,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(271,29): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(294,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(294,29): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(309,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(310,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(319,19): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(320,19): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(322,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(322,36): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(336,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(337,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(337,34): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(345,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(346,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(361,37): error TS2495: Type 'IterableIterator<(Anonymous class)>' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(379,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(401,24): error TS2495: Type 'IterableIterator<(Anonymous class)>' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(409,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(411,33): error TS2694: Namespace 'Protocol' has no exported member 'Error'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(419,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(421,33): error TS2694: Namespace 'Protocol' has no exported member 'Error'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(421,50): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(422,24): error TS2694: Namespace 'Protocol' has no exported member 'Error'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(423,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(424,32): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(425,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(426,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(446,28): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(448,7): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(488,32): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(492,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(89,16): error TS2315: Type '(Anonymous class)' is not generic. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(219,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(219,29): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(250,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(250,29): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(273,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(273,29): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(288,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(289,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(298,19): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(299,19): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(301,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(301,36): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(312,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(313,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(328,37): error TS2495: Type 'IterableIterator<(Anonymous class)>' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(346,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(368,24): error TS2495: Type 'IterableIterator<(Anonymous class)>' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(376,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(378,33): error TS2694: Namespace 'Protocol' has no exported member 'Error'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(386,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(388,33): error TS2694: Namespace 'Protocol' has no exported member 'Error'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(388,50): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(389,24): error TS2694: Namespace 'Protocol' has no exported member 'Error'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(390,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(391,32): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(392,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(418,28): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(420,7): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(460,32): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(464,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(487,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(493,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(516,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(522,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(645,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(655,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(676,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(679,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(687,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(688,27): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(722,19): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(732,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(739,19): error TS2694: Namespace 'SDK' has no exported member 'RuntimeModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(740,29): error TS2694: Namespace 'SDK' has no exported member 'RuntimeModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(748,29): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(756,22): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(792,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(794,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(805,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(806,31): error TS2694: Namespace 'Common' has no exported member 'Event'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(814,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(815,31): error TS2694: Namespace 'Common' has no exported member 'Event'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(824,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(847,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(855,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(880,78): error TS1003: Identifier expected. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(940,2): error TS1131: Property or signature expected. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(960,32): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(964,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(965,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(981,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(987,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(989,14): error TS8024: JSDoc '@param' tag has name '', but there is no parameter with that name. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(989,14): error TS1110: Type expected. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1006,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1012,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1014,14): error TS8024: JSDoc '@param' tag has name '', but there is no parameter with that name. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1014,14): error TS1110: Type expected. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1030,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1031,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1057,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1058,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1065,25): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1120,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1123,5): error TS2346: Call target does not contain any signatures. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1130,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1131,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1146,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1167,32): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1168,28): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1184,7): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1191,7): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1196,28): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1203,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1227,7): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1232,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1239,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1246,19): error TS2694: Namespace 'SDK' has no exported member 'RuntimeModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1247,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1247,29): error TS2694: Namespace 'SDK' has no exported member 'RuntimeModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1284,19): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1302,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1349,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1356,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1398,32): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1402,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1403,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1424,30): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1428,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1429,25): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(616,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(626,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(647,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(650,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(658,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(659,27): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(693,19): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(703,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(710,19): error TS2694: Namespace 'SDK' has no exported member 'RuntimeModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(711,29): error TS2694: Namespace 'SDK' has no exported member 'RuntimeModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(719,29): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(727,22): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(763,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(765,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(776,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(777,31): error TS2694: Namespace 'Common' has no exported member 'Event'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(785,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(786,31): error TS2694: Namespace 'Common' has no exported member 'Event'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(795,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(817,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(825,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(847,78): error TS1003: Identifier expected. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(907,2): error TS1131: Property or signature expected. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(927,32): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(931,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(946,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(952,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(954,14): error TS8024: JSDoc '@param' tag has name '', but there is no parameter with that name. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(954,14): error TS1110: Type expected. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(971,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(977,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(979,14): error TS8024: JSDoc '@param' tag has name '', but there is no parameter with that name. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(979,14): error TS1110: Type expected. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(995,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(996,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1022,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1023,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1030,25): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1085,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1088,5): error TS2346: Call target does not contain any signatures. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1095,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1096,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1111,24): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1132,32): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1133,28): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1149,7): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1156,7): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1161,28): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1168,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1192,7): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1197,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1204,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1211,19): error TS2694: Namespace 'SDK' has no exported member 'RuntimeModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1212,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1212,29): error TS2694: Namespace 'SDK' has no exported member 'RuntimeModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1249,19): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1267,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1314,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1321,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1363,32): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1367,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1387,30): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1391,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/DebuggerModel.js(1392,25): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. node_modules/chrome-devtools-frontend/front_end/sdk/EmulationModel.js(7,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. node_modules/chrome-devtools-frontend/front_end/sdk/EmulationModel.js(10,5): error TS2346: Call target does not contain any signatures. node_modules/chrome-devtools-frontend/front_end/sdk/EmulationModel.js(51,24): error TS2694: Namespace 'Protocol' has no exported member 'PageAgent'. @@ -9663,134 +9630,133 @@ node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(61,19): er node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(69,19): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(78,19): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(88,19): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(92,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(92,39): error TS2694: Namespace 'Common' has no exported member 'ContentProvider'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(104,19): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(105,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(105,29): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(121,19): error TS2694: Namespace 'SDK' has no exported member 'NetworkManager'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(122,25): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(159,20): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(166,22): error TS2694: Namespace 'Common' has no exported member 'Event'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(198,71): error TS1003: Identifier expected. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(214,2): error TS1131: Property or signature expected. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(220,20): error TS2300: Duplicate identifier 'Conditions'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(254,48): error TS1003: Identifier expected. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(271,37): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(276,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(277,28): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(290,19): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(291,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(303,19): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(304,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(352,19): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(89,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(89,29): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(105,19): error TS2694: Namespace 'SDK' has no exported member 'NetworkManager'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(106,25): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(143,20): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(150,22): error TS2694: Namespace 'Common' has no exported member 'Event'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(182,71): error TS1003: Identifier expected. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(198,2): error TS1131: Property or signature expected. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(204,20): error TS2300: Duplicate identifier 'Conditions'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(238,48): error TS1003: Identifier expected. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(255,37): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(260,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(261,28): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(274,19): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(275,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(287,19): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(288,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(336,19): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(366,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(367,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(368,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(378,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(379,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(381,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(382,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(383,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(384,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(394,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(395,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(397,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(398,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(399,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(400,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(401,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(402,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(403,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(385,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(386,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(387,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(414,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(426,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(427,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(428,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(429,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(430,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(442,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(443,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(444,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(445,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(446,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(447,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(486,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(487,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(506,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(507,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(519,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(520,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(521,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(524,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(431,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(470,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(471,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(490,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(491,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(503,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(504,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(505,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(508,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(532,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(534,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(545,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(546,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(547,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(548,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(550,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(561,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(562,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(563,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(564,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(580,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(581,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(582,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(605,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(565,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(566,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(589,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(590,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(591,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(606,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(607,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(622,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(608,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(623,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(624,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(639,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(640,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(656,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(657,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(641,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(652,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(653,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(667,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(668,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(669,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(683,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(684,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(685,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(686,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(689,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(690,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(692,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(703,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(704,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(706,20): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(669,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(670,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(673,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(674,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(676,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(687,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(688,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(690,20): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(708,19): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(717,19): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(724,19): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(733,19): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(740,19): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(741,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(766,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(768,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(771,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(786,5): error TS2346: Call target does not contain any signatures. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(788,31): error TS2694: Namespace 'Protocol' has no exported member 'NetworkAgent'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(790,21): error TS2694: Namespace 'SDK' has no exported member 'NetworkManager'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(801,31): error TS2694: Namespace 'SDK' has no exported member 'MultitargetNetworkManager'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(801,82): error TS2694: Namespace 'SDK' has no exported member 'MultitargetNetworkManager'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(816,21): error TS2339: Property 'sprintf' does not exist on type 'StringConstructor'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(822,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(833,75): error TS2339: Property 'valuesArray' does not exist on type '{ _map: Map>; }'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(841,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(863,19): error TS2694: Namespace 'SDK' has no exported member 'NetworkManager'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(867,23): error TS2495: Type 'Set' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(873,20): error TS2694: Namespace 'SDK' has no exported member 'NetworkManager'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(880,24): error TS2694: Namespace 'Protocol' has no exported member 'NetworkAgent'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(894,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(898,23): error TS2495: Type 'Set' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(911,23): error TS2495: Type 'Set' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(944,27): error TS2694: Namespace 'SDK' has no exported member 'NetworkManager'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(965,26): error TS2694: Namespace 'SDK' has no exported member 'NetworkManager'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(996,23): error TS2495: Type 'Set' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1004,46): error TS2339: Property 'size' does not exist on type '{ _map: Map>; }'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1008,26): error TS2694: Namespace 'SDK' has no exported member 'MultitargetNetworkManager'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1009,19): error TS2694: Namespace 'SDK' has no exported member 'MultitargetNetworkManager'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1014,37): error TS2339: Property 'deleteAll' does not exist on type '{ _map: Map>; }'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1016,39): error TS2339: Property 'set' does not exist on type '{ _map: Map>; }'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1038,23): error TS2495: Type 'Set' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1039,82): error TS2339: Property 'valuesArray' does not exist on type '{ _map: Map>; }'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1045,19): error TS2694: Namespace 'SDK' has no exported member 'MultitargetNetworkManager'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1048,68): error TS2339: Property 'keysArray' does not exist on type '{ _map: Map>; }'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1058,23): error TS2495: Type 'Set' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1063,23): error TS2495: Type 'Set' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1104,24): error TS2694: Namespace 'Protocol' has no exported member 'NetworkAgent'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1105,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1106,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1107,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1108,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(725,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(750,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(752,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(755,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(770,5): error TS2346: Call target does not contain any signatures. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(772,31): error TS2694: Namespace 'Protocol' has no exported member 'NetworkAgent'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(774,21): error TS2694: Namespace 'SDK' has no exported member 'NetworkManager'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(785,39): error TS2694: Namespace 'SDK' has no exported member 'MultitargetNetworkManager'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(787,31): error TS2694: Namespace 'SDK' has no exported member 'MultitargetNetworkManager'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(802,21): error TS2339: Property 'sprintf' does not exist on type 'StringConstructor'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(808,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(820,39): error TS2339: Property 'keysArray' does not exist on type '{ _map: Map>; }'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(829,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(851,19): error TS2694: Namespace 'SDK' has no exported member 'NetworkManager'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(855,23): error TS2495: Type 'Set' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(861,20): error TS2694: Namespace 'SDK' has no exported member 'NetworkManager'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(868,24): error TS2694: Namespace 'Protocol' has no exported member 'NetworkAgent'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(882,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(886,23): error TS2495: Type 'Set' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(899,23): error TS2495: Type 'Set' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(932,27): error TS2694: Namespace 'SDK' has no exported member 'NetworkManager'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(953,26): error TS2694: Namespace 'SDK' has no exported member 'NetworkManager'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(984,23): error TS2495: Type 'Set' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(992,42): error TS2339: Property 'size' does not exist on type '{ _map: Map>; }'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(997,19): error TS2694: Namespace 'SDK' has no exported member 'MultitargetNetworkManager'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1001,55): error TS2339: Property 'get' does not exist on type '{ _map: Map>; }'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1004,37): error TS2339: Property 'delete' does not exist on type '{ _map: Map>; }'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1007,37): error TS2339: Property 'deleteAll' does not exist on type '{ _map: Map>; }'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1009,39): error TS2339: Property 'set' does not exist on type '{ _map: Map>; }'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1010,35): error TS2339: Property 'set' does not exist on type '{ _map: Map>; }'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1033,23): error TS2495: Type 'Set' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1036,39): error TS2339: Property 'keysArray' does not exist on type '{ _map: Map>; }'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1044,19): error TS2694: Namespace 'SDK' has no exported member 'MultitargetNetworkManager'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1048,59): error TS2339: Property 'get' does not exist on type '{ _map: Map>; }'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1053,40): error TS2339: Property 'hasValue' does not exist on type '{ _map: Map>; }'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1064,23): error TS2495: Type 'Set' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1069,23): error TS2495: Type 'Set' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1110,24): error TS2694: Namespace 'Protocol' has no exported member 'NetworkAgent'. node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1111,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1112,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1114,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1158,17): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1185,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1194,94): error TS1003: Identifier expected. -node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1197,86): error TS1003: Identifier expected. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1113,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1114,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1117,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1118,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1120,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1164,17): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1191,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/sdk/NetworkManager.js(1200,86): error TS1003: Identifier expected. node_modules/chrome-devtools-frontend/front_end/sdk/NetworkRequest.js(36,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. node_modules/chrome-devtools-frontend/front_end/sdk/NetworkRequest.js(39,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. node_modules/chrome-devtools-frontend/front_end/sdk/NetworkRequest.js(40,24): error TS2694: Namespace 'Protocol' has no exported member 'Network'. @@ -9899,36 +9865,36 @@ node_modules/chrome-devtools-frontend/front_end/sdk/NetworkRequest.js(1130,82): node_modules/chrome-devtools-frontend/front_end/sdk/NetworkRequest.js(1133,70): error TS1003: Identifier expected. node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(10,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(13,5): error TS2346: Call target does not contain any signatures. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(116,19): error TS2694: Namespace 'SDK' has no exported member 'OverlayModel'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(123,24): error TS2694: Namespace 'Protocol' has no exported member 'Overlay'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(124,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(114,19): error TS2694: Namespace 'SDK' has no exported member 'OverlayModel'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(121,24): error TS2694: Namespace 'Protocol' has no exported member 'Overlay'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(122,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(139,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(141,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(143,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(144,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(147,45): error TS2345: Argument of type '{ mode: string; }' is not assignable to parameter of type '{ mode: string; showInfo: boolean; selectors: string; }'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(142,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(145,45): error TS2345: Argument of type '{ mode: string; }' is not assignable to parameter of type '{ mode: string; showInfo: boolean; selectors: string; }'. Property 'showInfo' is missing in type '{ mode: string; }'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(149,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(151,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(153,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(154,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(173,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(181,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(191,25): error TS2694: Namespace 'Protocol' has no exported member 'Overlay'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(224,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(234,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(243,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(268,24): error TS2694: Namespace 'Protocol' has no exported member 'Overlay'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(269,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(270,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(275,24): error TS2694: Namespace 'Protocol' has no exported member 'Overlay'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(276,24): error TS2694: Namespace 'Protocol' has no exported member 'Overlay'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(277,15): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(282,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(301,24): error TS2694: Namespace 'Protocol' has no exported member 'Overlay'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(302,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(303,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(316,24): error TS2694: Namespace 'Protocol' has no exported member 'Overlay'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(317,24): error TS2694: Namespace 'Protocol' has no exported member 'Overlay'. -node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(326,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(152,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(171,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(179,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(189,25): error TS2694: Namespace 'Protocol' has no exported member 'Overlay'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(222,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(232,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(241,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(266,24): error TS2694: Namespace 'Protocol' has no exported member 'Overlay'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(267,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(268,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(273,24): error TS2694: Namespace 'Protocol' has no exported member 'Overlay'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(274,24): error TS2694: Namespace 'Protocol' has no exported member 'Overlay'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(275,15): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(280,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(299,24): error TS2694: Namespace 'Protocol' has no exported member 'Overlay'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(300,24): error TS2694: Namespace 'Protocol' has no exported member 'DOM'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(301,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(314,24): error TS2694: Namespace 'Protocol' has no exported member 'Overlay'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(315,24): error TS2694: Namespace 'Protocol' has no exported member 'Overlay'. +node_modules/chrome-devtools-frontend/front_end/sdk/OverlayModel.js(324,24): error TS2694: Namespace 'Protocol' has no exported member 'Page'. node_modules/chrome-devtools-frontend/front_end/sdk/PaintProfiler.js(33,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. node_modules/chrome-devtools-frontend/front_end/sdk/PaintProfiler.js(36,5): error TS2346: Call target does not contain any signatures. node_modules/chrome-devtools-frontend/front_end/sdk/PaintProfiler.js(41,27): error TS2694: Namespace 'SDK' has no exported member 'PictureFragment'. @@ -10066,7 +10032,7 @@ node_modules/chrome-devtools-frontend/front_end/sdk/Resource.js(158,7): error TS node_modules/chrome-devtools-frontend/front_end/sdk/Resource.js(182,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. node_modules/chrome-devtools-frontend/front_end/sdk/Resource.js(217,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. node_modules/chrome-devtools-frontend/front_end/sdk/Resource.js(217,39): error TS2694: Namespace 'Common' has no exported member 'ContentProvider'. -node_modules/chrome-devtools-frontend/front_end/sdk/Resource.js(241,13): error TS2339: Property 'src' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/sdk/Resource.js(239,13): error TS2339: Property 'src' does not exist on type 'Element'. node_modules/chrome-devtools-frontend/front_end/sdk/ResourceTreeModel.js(33,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. node_modules/chrome-devtools-frontend/front_end/sdk/ResourceTreeModel.js(36,5): error TS2346: Call target does not contain any signatures. node_modules/chrome-devtools-frontend/front_end/sdk/ResourceTreeModel.js(63,19): error TS2694: Namespace 'SDK' has no exported member 'NetworkRequest'. @@ -10189,7 +10155,6 @@ node_modules/chrome-devtools-frontend/front_end/sdk/Script.js(190,33): error TS2 node_modules/chrome-devtools-frontend/front_end/sdk/Script.js(190,50): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. node_modules/chrome-devtools-frontend/front_end/sdk/Script.js(190,95): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. node_modules/chrome-devtools-frontend/front_end/sdk/Script.js(190,127): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/sdk/Script.js(190,158): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. node_modules/chrome-devtools-frontend/front_end/sdk/Script.js(218,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. node_modules/chrome-devtools-frontend/front_end/sdk/Script.js(247,31): error TS2694: Namespace 'Protocol' has no exported member 'Debugger'. node_modules/chrome-devtools-frontend/front_end/sdk/Script.js(248,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. @@ -10319,22 +10284,20 @@ node_modules/chrome-devtools-frontend/front_end/sdk/SourceMapManager.js(234,38): node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(12,19): error TS2694: Namespace 'SDK' has no exported member 'TargetManager'. node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(16,24): error TS2694: Namespace 'Protocol' has no exported member 'InspectorBackend'. node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(17,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(20,15): error TS2502: 'targetManager' is referenced directly or indirectly in its own type annotation. -node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(20,77): error TS2502: 'parentTarget' is referenced directly or indirectly in its own type annotation. -node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(21,5): error TS2346: Call target does not contain any signatures. -node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(72,20): error TS2694: Namespace 'SDK' has no exported member 'TargetManager'. -node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(137,20): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(148,48): error TS2339: Property 'valuesArray' does not exist on type 'Map'. -node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(153,35): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(173,20): error TS1005: '>' expected. -node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(191,34): error TS2339: Property 'asParsedURL' does not exist on type 'string'. -node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(209,23): error TS2495: Type 'IterableIterator' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(223,23): error TS2495: Type 'IterableIterator' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(264,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(267,5): error TS2346: Call target does not contain any signatures. -node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(272,20): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(298,44): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(308,17): error TS1005: '>' expected. +node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(19,15): error TS2502: 'targetManager' is referenced directly or indirectly in its own type annotation. +node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(19,77): error TS2502: 'parentTarget' is referenced directly or indirectly in its own type annotation. +node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(20,5): error TS2346: Call target does not contain any signatures. +node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(70,20): error TS2694: Namespace 'SDK' has no exported member 'TargetManager'. +node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(135,20): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(146,48): error TS2339: Property 'valuesArray' does not exist on type 'Map'. +node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(151,35): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(171,20): error TS1005: '>' expected. +node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(189,34): error TS2339: Property 'asParsedURL' does not exist on type 'string'. +node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(227,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(230,5): error TS2346: Call target does not contain any signatures. +node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(235,20): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(261,44): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/Target.js(271,17): error TS1005: '>' expected. node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(9,5): error TS2346: Call target does not contain any signatures. node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(10,29): error TS2694: Namespace 'SDK' has no exported member 'Target'. node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(11,5): error TS2502: '_targets' is referenced directly or indirectly in its own type annotation. @@ -10344,50 +10307,50 @@ node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(17,21): err node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(21,26): error TS2694: Namespace 'SDK' has no exported member 'Target'. node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(22,5): error TS2502: '_childTargetManagers' is referenced directly or indirectly in its own type annotation. node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(25,26): error TS2694: Namespace 'Protocol' has no exported member 'InspectorBackend'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(77,34): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(99,34): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(100,19): error TS2694: Namespace 'SDK' has no exported member 'SDKModelObserver'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(108,16): error TS2339: Property 'modelAdded' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(112,34): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(113,19): error TS2694: Namespace 'SDK' has no exported member 'SDKModelObserver'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(126,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(127,45): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(138,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(139,45): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(152,31): error TS2694: Namespace 'Common' has no exported member 'Event'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(169,31): error TS2694: Namespace 'Common' has no exported member 'Event'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(193,19): error TS2694: Namespace 'SDK' has no exported member 'TargetManager'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(205,19): error TS2694: Namespace 'SDK' has no exported member 'TargetManager'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(209,21): error TS2339: Property 'remove' does not exist on type 'any[]'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(216,24): error TS2694: Namespace 'Protocol' has no exported member 'InspectorBackend'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(217,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(218,20): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(234,22): error TS2495: Type 'Map any; }[]>' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(247,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(248,27): error TS2694: Namespace 'SDK' has no exported member 'TargetManager'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(256,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(276,22): error TS2495: Type 'Map any; }[]>' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(288,28): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(300,20): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(312,20): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(356,24): error TS2694: Namespace 'Protocol' has no exported member 'InspectorBackend'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(357,25): error TS2694: Namespace 'Protocol' has no exported member 'InspectorBackend'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(382,34): error TS2694: Namespace 'Protocol' has no exported member 'InspectorBackend'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(395,19): error TS2694: Namespace 'SDK' has no exported member 'TargetManager'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(396,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(424,22): error TS2694: Namespace 'Common' has no exported member 'Event'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(427,30): error TS2503: Cannot find namespace 'Adb'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(458,27): error TS2495: Type 'IterableIterator' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(483,24): error TS2694: Namespace 'Protocol' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(501,24): error TS2694: Namespace 'Protocol' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(530,24): error TS2694: Namespace 'Protocol' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(581,24): error TS2694: Namespace 'Protocol' has no exported member 'TargetAgent'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(583,24): error TS2694: Namespace 'Protocol' has no exported member 'InspectorBackend'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(584,25): error TS2694: Namespace 'Protocol' has no exported member 'InspectorBackend'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(598,24): error TS2694: Namespace 'Protocol' has no exported member 'TargetAgent'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(600,24): error TS2694: Namespace 'Protocol' has no exported member 'InspectorBackend'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(641,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(646,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(79,34): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(101,34): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(102,19): error TS2694: Namespace 'SDK' has no exported member 'SDKModelObserver'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(110,16): error TS2339: Property 'modelAdded' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(114,34): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(115,19): error TS2694: Namespace 'SDK' has no exported member 'SDKModelObserver'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(128,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(129,45): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(140,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(141,45): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(154,31): error TS2694: Namespace 'Common' has no exported member 'Event'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(171,31): error TS2694: Namespace 'Common' has no exported member 'Event'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(195,19): error TS2694: Namespace 'SDK' has no exported member 'TargetManager'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(207,19): error TS2694: Namespace 'SDK' has no exported member 'TargetManager'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(211,21): error TS2339: Property 'remove' does not exist on type 'any[]'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(218,24): error TS2694: Namespace 'Protocol' has no exported member 'InspectorBackend'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(219,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(220,20): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(236,22): error TS2495: Type 'Map any; }[]>' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(249,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(250,27): error TS2694: Namespace 'SDK' has no exported member 'TargetManager'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(258,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(278,22): error TS2495: Type 'Map any; }[]>' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(290,28): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(302,20): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(314,20): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(358,24): error TS2694: Namespace 'Protocol' has no exported member 'InspectorBackend'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(359,25): error TS2694: Namespace 'Protocol' has no exported member 'InspectorBackend'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(384,34): error TS2694: Namespace 'Protocol' has no exported member 'InspectorBackend'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(397,19): error TS2694: Namespace 'SDK' has no exported member 'TargetManager'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(398,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(426,22): error TS2694: Namespace 'Common' has no exported member 'Event'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(429,30): error TS2503: Cannot find namespace 'Adb'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(460,27): error TS2495: Type 'IterableIterator' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(485,24): error TS2694: Namespace 'Protocol' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(503,24): error TS2694: Namespace 'Protocol' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(532,24): error TS2694: Namespace 'Protocol' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(583,24): error TS2694: Namespace 'Protocol' has no exported member 'TargetAgent'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(585,24): error TS2694: Namespace 'Protocol' has no exported member 'InspectorBackend'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(586,25): error TS2694: Namespace 'Protocol' has no exported member 'InspectorBackend'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(600,24): error TS2694: Namespace 'Protocol' has no exported member 'TargetAgent'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(602,24): error TS2694: Namespace 'Protocol' has no exported member 'InspectorBackend'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(643,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/sdk/TargetManager.js(648,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. node_modules/chrome-devtools-frontend/front_end/sdk/TracingManager.js(13,27): error TS2694: Namespace 'SDK' has no exported member 'TracingManager'. node_modules/chrome-devtools-frontend/front_end/sdk/TracingManager.js(32,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. node_modules/chrome-devtools-frontend/front_end/sdk/TracingManager.js(35,5): error TS2346: Call target does not contain any signatures. @@ -10817,34 +10780,32 @@ node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js( node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(42,39): error TS2694: Namespace 'Sources' has no exported member 'CallStackSidebarPane'. node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(44,17): error TS2315: Type '(Anonymous class)' is not generic. node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(44,41): error TS2694: Namespace 'Sources' has no exported member 'CallStackSidebarPane'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(77,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(104,31): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(132,33): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(182,23): error TS2694: Namespace 'Sources' has no exported member 'CallStackSidebarPane'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(187,25): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(200,28): error TS2694: Namespace 'Bindings' has no exported member 'LiveLocation'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(202,16): error TS1251: Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. Class definitions are automatically in strict mode. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(203,39): error TS2339: Property 'uiLocation' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(211,33): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(221,23): error TS2694: Namespace 'Sources' has no exported member 'CallStackSidebarPane'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(231,23): error TS2694: Namespace 'Sources' has no exported member 'CallStackSidebarPane'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(240,23): error TS2694: Namespace 'Sources' has no exported member 'CallStackSidebarPane'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(241,23): error TS2694: Namespace 'Sources' has no exported member 'CallStackSidebarPane'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(255,23): error TS2694: Namespace 'Sources' has no exported member 'CallStackSidebarPane'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(269,23): error TS2694: Namespace 'Sources' has no exported member 'CallStackSidebarPane'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(270,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(289,13): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(290,31): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(304,13): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(305,31): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(342,23): error TS2694: Namespace 'Sources' has no exported member 'CallStackSidebarPane'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(364,32): error TS2339: Property 'type' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(368,50): error TS2339: Property 'type' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(421,35): error TS2694: Namespace 'UI' has no exported member 'KeyboardShortcut'. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(421,65): error TS1138: Parameter declaration expected. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(421,65): error TS8024: JSDoc '@param' tag has name 'function', but there is no parameter with that name. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(435,2): error TS1131: Property or signature expected. -node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(442,30): error TS2300: Duplicate identifier 'Item'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(90,31): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(111,33): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(118,33): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(150,23): error TS2694: Namespace 'Sources' has no exported member 'CallStackSidebarPane'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(155,25): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(168,28): error TS2694: Namespace 'Bindings' has no exported member 'LiveLocation'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(170,16): error TS1251: Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. Class definitions are automatically in strict mode. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(171,39): error TS2339: Property 'uiLocation' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(179,33): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(189,23): error TS2694: Namespace 'Sources' has no exported member 'CallStackSidebarPane'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(199,23): error TS2694: Namespace 'Sources' has no exported member 'CallStackSidebarPane'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(208,23): error TS2694: Namespace 'Sources' has no exported member 'CallStackSidebarPane'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(209,23): error TS2694: Namespace 'Sources' has no exported member 'CallStackSidebarPane'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(223,23): error TS2694: Namespace 'Sources' has no exported member 'CallStackSidebarPane'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(237,23): error TS2694: Namespace 'Sources' has no exported member 'CallStackSidebarPane'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(238,20): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(255,13): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(256,31): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(293,23): error TS2694: Namespace 'Sources' has no exported member 'CallStackSidebarPane'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(315,32): error TS2339: Property 'type' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(319,50): error TS2339: Property 'type' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(372,35): error TS2694: Namespace 'UI' has no exported member 'KeyboardShortcut'. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(372,65): error TS1138: Parameter declaration expected. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(372,65): error TS8024: JSDoc '@param' tag has name 'function', but there is no parameter with that name. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(384,2): error TS1131: Property or signature expected. +node_modules/chrome-devtools-frontend/front_end/sources/CallStackSidebarPane.js(390,30): error TS2300: Duplicate identifier 'Item'. node_modules/chrome-devtools-frontend/front_end/sources/DebuggerPausedMessage.js(86,40): error TS2339: Property 'createChild' does not exist on type 'Element'. node_modules/chrome-devtools-frontend/front_end/sources/DebuggerPausedMessage.js(91,41): error TS2339: Property 'createChild' does not exist on type 'Element'. node_modules/chrome-devtools-frontend/front_end/sources/EditingLocationHistoryManager.js(54,22): error TS2694: Namespace 'Common' has no exported member 'Event'. @@ -10920,60 +10881,60 @@ node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(558,28): error TS2495: Type 'IterableIterator' is not an array type or a string type. node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(593,24): error TS2694: Namespace 'Bindings' has no exported member 'BreakpointManager'. node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(627,41): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(701,28): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(786,18): error TS2339: Property 'startColumn' does not exist on type 'never'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(788,15): error TS2339: Property 'type' does not exist on type 'never'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(797,15): error TS2339: Property 'type' does not exist on type 'never'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(800,15): error TS2339: Property 'type' does not exist on type 'never'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(800,48): error TS2339: Property 'type' does not exist on type 'never'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(836,19): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(852,19): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(863,25): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(877,24): error TS2495: Type 'IterableIterator' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(943,14): error TS2339: Property 'style' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(944,14): error TS2339: Property '__nameToToken' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(947,24): error TS2495: Type 'Set' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(953,18): error TS2339: Property 'createTextChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(954,36): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(955,16): error TS2339: Property '__nameToToken' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(972,33): error TS2339: Property '__nameToToken' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(973,35): error TS2339: Property '__nameToToken' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(973,71): error TS2339: Property '__nameToToken' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(974,32): error TS2339: Property '__nameToToken' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(974,65): error TS2339: Property '__nameToToken' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(979,49): error TS2339: Property '__nameToToken' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1008,24): error TS2495: Type 'IterableIterator' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1018,30): error TS2495: Type 'IterableIterator' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1037,31): error TS2694: Namespace 'Sources' has no exported member 'JavaScriptSourceFrame'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1047,24): error TS2694: Namespace 'Sources' has no exported member 'JavaScriptSourceFrame'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1050,28): error TS2495: Type 'Set' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1061,23): error TS2694: Namespace 'Sources' has no exported member 'JavaScriptSourceFrame'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1065,32): error TS2694: Namespace 'Sources' has no exported member 'JavaScriptSourceFrame'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1084,30): error TS2495: Type 'Set' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1099,32): error TS2694: Namespace 'Sources' has no exported member 'JavaScriptSourceFrame'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1117,32): error TS2694: Namespace 'Sources' has no exported member 'JavaScriptSourceFrame'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1151,23): error TS2694: Namespace 'Sources' has no exported member 'JavaScriptSourceFrame'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1155,11): error TS2339: Property 'consume' does not exist on type 'Event'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1157,17): error TS2339: Property 'shiftKey' does not exist on type 'Event'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1170,23): error TS2694: Namespace 'Sources' has no exported member 'JavaScriptSourceFrame'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1174,11): error TS2339: Property 'consume' does not exist on type 'Event'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1195,22): error TS2694: Namespace 'Common' has no exported member 'Event'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1206,56): error TS2339: Property 'valuesArray' does not exist on type 'Map<(Anonymous class), (Anonymous class)>'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1215,22): error TS2694: Namespace 'Common' has no exported member 'Event'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1221,43): error TS2694: Namespace 'Bindings' has no exported member 'BreakpointManager'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1227,24): error TS2694: Namespace 'Bindings' has no exported member 'BreakpointManager'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1275,16): error TS2403: Subsequent variable declarations must have the same type. Variable 'location' must be of type 'any', but here has type '(Anonymous class)'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1291,22): error TS2694: Namespace 'Common' has no exported member 'Event'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1297,43): error TS2694: Namespace 'Bindings' has no exported member 'BreakpointManager'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1331,60): error TS2339: Property 'valuesArray' does not exist on type 'Set'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1430,56): error TS2339: Property 'valuesArray' does not exist on type 'Map<(Anonymous class), (Anonymous class)>'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1468,22): error TS2694: Namespace 'Common' has no exported member 'Event'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1474,45): error TS2694: Namespace 'SourceFrame' has no exported member 'SourcesTextEditor'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1624,26): error TS2694: Namespace 'TextEditor' has no exported member 'TextEditorPositionHandle'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1627,24): error TS2694: Namespace 'Bindings' has no exported member 'BreakpointManager'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1643,23): error TS2694: Namespace 'Sources' has no exported member 'JavaScriptSourceFrame'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1644,23): error TS2694: Namespace 'Sources' has no exported member 'JavaScriptSourceFrame'. -node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1666,32): error TS2339: Property 'resolve' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(711,28): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(796,18): error TS2339: Property 'startColumn' does not exist on type 'never'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(798,15): error TS2339: Property 'type' does not exist on type 'never'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(807,15): error TS2339: Property 'type' does not exist on type 'never'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(810,15): error TS2339: Property 'type' does not exist on type 'never'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(810,48): error TS2339: Property 'type' does not exist on type 'never'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(846,19): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(862,19): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(873,25): error TS2694: Namespace 'SDK' has no exported member 'DebuggerModel'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(887,24): error TS2495: Type 'IterableIterator' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(953,14): error TS2339: Property 'style' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(954,14): error TS2339: Property '__nameToToken' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(957,24): error TS2495: Type 'Set' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(963,18): error TS2339: Property 'createTextChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(964,36): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(965,16): error TS2339: Property '__nameToToken' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(982,33): error TS2339: Property '__nameToToken' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(983,35): error TS2339: Property '__nameToToken' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(983,71): error TS2339: Property '__nameToToken' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(984,32): error TS2339: Property '__nameToToken' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(984,65): error TS2339: Property '__nameToToken' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(989,49): error TS2339: Property '__nameToToken' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1018,24): error TS2495: Type 'IterableIterator' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1028,30): error TS2495: Type 'IterableIterator' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1047,31): error TS2694: Namespace 'Sources' has no exported member 'JavaScriptSourceFrame'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1057,24): error TS2694: Namespace 'Sources' has no exported member 'JavaScriptSourceFrame'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1060,28): error TS2495: Type 'Set' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1071,23): error TS2694: Namespace 'Sources' has no exported member 'JavaScriptSourceFrame'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1075,32): error TS2694: Namespace 'Sources' has no exported member 'JavaScriptSourceFrame'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1094,30): error TS2495: Type 'Set' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1109,32): error TS2694: Namespace 'Sources' has no exported member 'JavaScriptSourceFrame'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1127,32): error TS2694: Namespace 'Sources' has no exported member 'JavaScriptSourceFrame'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1161,23): error TS2694: Namespace 'Sources' has no exported member 'JavaScriptSourceFrame'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1165,11): error TS2339: Property 'consume' does not exist on type 'Event'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1167,17): error TS2339: Property 'shiftKey' does not exist on type 'Event'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1180,23): error TS2694: Namespace 'Sources' has no exported member 'JavaScriptSourceFrame'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1184,11): error TS2339: Property 'consume' does not exist on type 'Event'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1205,22): error TS2694: Namespace 'Common' has no exported member 'Event'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1216,56): error TS2339: Property 'valuesArray' does not exist on type 'Map<(Anonymous class), (Anonymous class)>'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1225,22): error TS2694: Namespace 'Common' has no exported member 'Event'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1231,43): error TS2694: Namespace 'Bindings' has no exported member 'BreakpointManager'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1237,24): error TS2694: Namespace 'Bindings' has no exported member 'BreakpointManager'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1285,16): error TS2403: Subsequent variable declarations must have the same type. Variable 'location' must be of type 'any', but here has type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1301,22): error TS2694: Namespace 'Common' has no exported member 'Event'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1307,43): error TS2694: Namespace 'Bindings' has no exported member 'BreakpointManager'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1341,60): error TS2339: Property 'valuesArray' does not exist on type 'Set'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1440,56): error TS2339: Property 'valuesArray' does not exist on type 'Map<(Anonymous class), (Anonymous class)>'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1478,22): error TS2694: Namespace 'Common' has no exported member 'Event'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1484,45): error TS2694: Namespace 'SourceFrame' has no exported member 'SourcesTextEditor'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1634,26): error TS2694: Namespace 'TextEditor' has no exported member 'TextEditorPositionHandle'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1637,24): error TS2694: Namespace 'Bindings' has no exported member 'BreakpointManager'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1653,23): error TS2694: Namespace 'Sources' has no exported member 'JavaScriptSourceFrame'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1654,23): error TS2694: Namespace 'Sources' has no exported member 'JavaScriptSourceFrame'. +node_modules/chrome-devtools-frontend/front_end/sources/JavaScriptSourceFrame.js(1676,32): error TS2339: Property 'resolve' does not exist on type '() => void'. node_modules/chrome-devtools-frontend/front_end/sources/NavigatorView.js(34,5): error TS2346: Call target does not contain any signatures. node_modules/chrome-devtools-frontend/front_end/sources/NavigatorView.js(43,60): error TS2694: Namespace 'Sources' has no exported member 'NavigatorUISourceCodeTreeNode'. node_modules/chrome-devtools-frontend/front_end/sources/NavigatorView.js(44,5): error TS2502: '_uiSourceCodeNodes' is referenced directly or indirectly in its own type annotation. @@ -11726,64 +11687,63 @@ node_modules/chrome-devtools-frontend/front_end/terminal/xterm.js/build/xterm.js node_modules/chrome-devtools-frontend/front_end/terminal/xterm.js/build/xterm.js(4210,10): error TS2339: Property 'tabs' does not exist on type '{ colors: any; options: any; parent: any; cols: any; rows: any; geometry: any[]; ybase: number; y...'. node_modules/chrome-devtools-frontend/front_end/terminal/xterm.js/build/xterm.js(4312,1): error TS2309: An export assignment cannot be used in a module with other exported elements. node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(13,6): error TS2339: Property 'testRunner' does not exist on type 'Window'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(20,19): error TS2339: Property 'testRunner' does not exist on type 'Window'. node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(25,21): error TS2339: Property 'testRunner' does not exist on type 'Window'. node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(28,18): error TS2339: Property 'eval' does not exist on type 'Window'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(33,33): error TS2339: Property 'trimRight' does not exist on type 'string'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(64,12): error TS2339: Property 'test' does not exist on type 'Window'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(73,8): error TS2339: Property 'testRunner' does not exist on type 'Window'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(114,13): error TS2315: Type 'any[]' is not generic. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(114,18): error TS1099: Type argument list cannot be empty. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(114,19): error TS1005: '>' expected. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(114,19): error TS8024: JSDoc '@param' tag has name 'function', but there is no parameter with that name. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(201,13): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(205,14): error TS2339: Property 'runtime' does not exist on type 'Window'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(284,22): error TS2339: Property 'traverseNextNode' does not exist on type 'Node'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(285,31): error TS2339: Property 'traverseNextNode' does not exist on type 'Node'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(294,33): error TS2339: Property 'traverseNextNode' does not exist on type 'Node'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(296,28): error TS2339: Property 'classList' does not exist on type 'Node'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(296,53): error TS2339: Property 'classList' does not exist on type 'Node'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(310,22): error TS2339: Property 'traverseNextNode' does not exist on type 'Node'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(311,31): error TS2339: Property 'traverseNextNode' does not exist on type 'Node'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(315,33): error TS2339: Property 'traverseNextNode' does not exist on type 'Node'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(321,17): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(387,13): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(392,5): error TS2322: Type 'void' is not assignable to type 'undefined'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(409,13): error TS1055: Type 'Promise<(Anonymous class)>' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(597,59): error TS2339: Property 'testRunner' does not exist on type 'Window'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(597,92): error TS2339: Property 'testRunner' does not exist on type 'Window'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(639,28): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(668,2): error TS1003: Identifier expected. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(673,24): error TS2694: Namespace 'TestRunner' has no exported member 'CustomFormatters'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(704,24): error TS2694: Namespace 'TestRunner' has no exported member 'CustomFormatters'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(741,14): error TS2339: Property 'shadowRoot' does not exist on type 'Node'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(742,39): error TS2339: Property 'shadowRoot' does not exist on type 'Node'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(761,12): error TS2339: Property 'shadowRoot' does not exist on type 'Node'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(762,44): error TS2339: Property 'shadowRoot' does not exist on type 'Node'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(768,24): error TS2694: Namespace 'TestRunner' has no exported member 'CustomFormatters'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(795,78): error TS2339: Property 'deepTextContent' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(798,43): error TS2339: Property 'property' does not exist on type '(Anonymous class)'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(819,24): error TS2694: Namespace 'Common' has no exported member 'Event'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(831,26): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(832,27): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(841,36): error TS2694: Namespace 'SDK' has no exported member 'TargetManager'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(970,13): error TS2315: Type 'any[]' is not generic. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(970,18): error TS1099: Type argument list cannot be empty. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(970,19): error TS1005: '>' expected. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(970,19): error TS8024: JSDoc '@param' tag has name 'function', but there is no parameter with that name. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1079,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1127,15): error TS2339: Property 'runtime' does not exist on type 'Window'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1138,19): error TS2339: Property 'naturalOrderComparator' does not exist on type 'StringConstructor'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1152,17): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1160,17): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1169,17): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1184,23): error TS2694: Namespace 'Workspace' has no exported member 'projectTypes'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1193,47): error TS2339: Property 'type' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1195,48): error TS2339: Property 'type' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1248,30): error TS2551: Property 'getAttribute' does not exist on type 'Node'. Did you mean 'attributes'? -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1249,44): error TS2551: Property 'getAttribute' does not exist on type 'Node'. Did you mean 'attributes'? -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1294,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1307,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1330,16): error TS2339: Property 'testRunner' does not exist on type 'Window'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(49,12): error TS2339: Property 'test' does not exist on type 'Window'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(58,8): error TS2339: Property 'testRunner' does not exist on type 'Window'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(99,13): error TS2315: Type 'any[]' is not generic. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(99,18): error TS1099: Type argument list cannot be empty. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(99,19): error TS1005: '>' expected. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(99,19): error TS8024: JSDoc '@param' tag has name 'function', but there is no parameter with that name. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(186,13): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(190,14): error TS2339: Property 'runtime' does not exist on type 'Window'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(269,22): error TS2339: Property 'traverseNextNode' does not exist on type 'Node'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(270,31): error TS2339: Property 'traverseNextNode' does not exist on type 'Node'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(279,33): error TS2339: Property 'traverseNextNode' does not exist on type 'Node'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(281,28): error TS2339: Property 'classList' does not exist on type 'Node'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(281,53): error TS2339: Property 'classList' does not exist on type 'Node'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(295,22): error TS2339: Property 'traverseNextNode' does not exist on type 'Node'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(296,31): error TS2339: Property 'traverseNextNode' does not exist on type 'Node'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(300,33): error TS2339: Property 'traverseNextNode' does not exist on type 'Node'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(306,17): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(372,13): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(377,5): error TS2322: Type 'void' is not assignable to type 'undefined'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(394,13): error TS1055: Type 'Promise<(Anonymous class)>' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(571,59): error TS2339: Property 'testRunner' does not exist on type 'Window'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(571,92): error TS2339: Property 'testRunner' does not exist on type 'Window'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(613,28): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(642,2): error TS1003: Identifier expected. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(647,24): error TS2694: Namespace 'TestRunner' has no exported member 'CustomFormatters'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(678,24): error TS2694: Namespace 'TestRunner' has no exported member 'CustomFormatters'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(715,14): error TS2339: Property 'shadowRoot' does not exist on type 'Node'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(716,39): error TS2339: Property 'shadowRoot' does not exist on type 'Node'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(735,12): error TS2339: Property 'shadowRoot' does not exist on type 'Node'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(736,44): error TS2339: Property 'shadowRoot' does not exist on type 'Node'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(742,24): error TS2694: Namespace 'TestRunner' has no exported member 'CustomFormatters'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(769,78): error TS2339: Property 'deepTextContent' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(772,43): error TS2339: Property 'property' does not exist on type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(793,24): error TS2694: Namespace 'Common' has no exported member 'Event'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(805,26): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(806,27): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(815,36): error TS2694: Namespace 'SDK' has no exported member 'TargetManager'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(944,13): error TS2315: Type 'any[]' is not generic. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(944,18): error TS1099: Type argument list cannot be empty. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(944,19): error TS1005: '>' expected. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(944,19): error TS8024: JSDoc '@param' tag has name 'function', but there is no parameter with that name. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1053,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1101,15): error TS2339: Property 'runtime' does not exist on type 'Window'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1112,19): error TS2339: Property 'naturalOrderComparator' does not exist on type 'StringConstructor'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1126,17): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1134,17): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1143,17): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1158,23): error TS2694: Namespace 'Workspace' has no exported member 'projectTypes'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1167,47): error TS2339: Property 'type' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1169,48): error TS2339: Property 'type' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1222,30): error TS2551: Property 'getAttribute' does not exist on type 'Node'. Did you mean 'attributes'? +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1223,44): error TS2551: Property 'getAttribute' does not exist on type 'Node'. Did you mean 'attributes'? +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1266,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/test_runner/TestRunner.js(1278,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. node_modules/chrome-devtools-frontend/front_end/text_editor/CodeMirrorTextEditor.js(36,18): error TS2694: Namespace 'UI' has no exported member 'TextEditor'. node_modules/chrome-devtools-frontend/front_end/text_editor/CodeMirrorTextEditor.js(39,5): error TS2346: Call target does not contain any signatures. node_modules/chrome-devtools-frontend/front_end/text_editor/CodeMirrorTextEditor.js(47,35): error TS2339: Property 'CodeMirror' does not exist on type 'Window'. @@ -11928,28 +11888,28 @@ node_modules/chrome-devtools-frontend/front_end/text_utils/TextUtils.js(340,15): node_modules/chrome-devtools-frontend/front_end/text_utils/TextUtils.js(340,32): error TS1138: Parameter declaration expected. node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(36,24): error TS2694: Namespace 'Timeline' has no exported member 'TimelineModeViewDelegate'. node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(39,5): error TS2346: Call target does not contain any signatures. -node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(75,98): error TS2339: Property 'bytesToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(73,98): error TS2339: Property 'bytesToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(75,9): error TS2554: Expected 4 arguments, but got 3. node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(77,9): error TS2554: Expected 4 arguments, but got 3. node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(79,9): error TS2554: Expected 4 arguments, but got 3. -node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(81,9): error TS2554: Expected 4 arguments, but got 3. -node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(84,16): error TS2339: Property 'bytesToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(132,25): error TS2694: Namespace 'Timeline' has no exported member 'CountersGraph'. -node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(144,19): error TS2694: Namespace 'UI' has no exported member 'Widget'. -node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(195,19): error TS2339: Property 'x' does not exist on type 'Event'. -node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(210,22): error TS2339: Property 'selectEntryAtTime' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(230,19): error TS2339: Property 'x' does not exist on type 'Event'. -node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(255,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(282,43): error TS2339: Property 'peekLast' does not exist on type 'any[]'. -node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(324,24): error TS2694: Namespace 'Timeline' has no exported member 'CountersGraph'. -node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(331,33): error TS2339: Property 'constrain' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(331,54): error TS2339: Property 'upperBound' does not exist on type 'any[]'. -node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(334,33): error TS2339: Property 'constrain' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(334,54): error TS2339: Property 'lowerBound' does not exist on type 'any[]'. -node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(365,24): error TS2694: Namespace 'Timeline' has no exported member 'CountersGraph'. -node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(371,43): error TS2339: Property 'withThousandsSeparator' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(414,22): error TS2694: Namespace 'Common' has no exported member 'Event'. -node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(438,24): error TS2339: Property 'withThousandsSeparator' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(563,19): error TS2339: Property 'preciseMillisToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(82,16): error TS2339: Property 'bytesToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(130,25): error TS2694: Namespace 'Timeline' has no exported member 'CountersGraph'. +node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(142,19): error TS2694: Namespace 'UI' has no exported member 'Widget'. +node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(193,19): error TS2339: Property 'x' does not exist on type 'Event'. +node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(208,22): error TS2339: Property 'selectEntryAtTime' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(228,19): error TS2339: Property 'x' does not exist on type 'Event'. +node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(253,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(280,43): error TS2339: Property 'peekLast' does not exist on type 'any[]'. +node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(322,24): error TS2694: Namespace 'Timeline' has no exported member 'CountersGraph'. +node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(329,33): error TS2339: Property 'constrain' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(329,54): error TS2339: Property 'upperBound' does not exist on type 'any[]'. +node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(332,33): error TS2339: Property 'constrain' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(332,54): error TS2339: Property 'lowerBound' does not exist on type 'any[]'. +node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(363,24): error TS2694: Namespace 'Timeline' has no exported member 'CountersGraph'. +node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(369,43): error TS2339: Property 'withThousandsSeparator' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(413,22): error TS2694: Namespace 'Common' has no exported member 'Event'. +node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(437,24): error TS2339: Property 'withThousandsSeparator' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/CountersGraph.js(562,19): error TS2339: Property 'preciseMillisToString' does not exist on type 'NumberConstructor'. node_modules/chrome-devtools-frontend/front_end/timeline/EventsTimelineTreeView.js(11,24): error TS2694: Namespace 'Timeline' has no exported member 'TimelineModeViewDelegate'. node_modules/chrome-devtools-frontend/front_end/timeline/EventsTimelineTreeView.js(14,5): error TS2346: Call target does not contain any signatures. node_modules/chrome-devtools-frontend/front_end/timeline/EventsTimelineTreeView.js(34,35): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. @@ -12294,139 +12254,139 @@ node_modules/chrome-devtools-frontend/front_end/timeline/TimelineTreeView.js(103 node_modules/chrome-devtools-frontend/front_end/timeline/TimelineTreeView.js(1034,29): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineProfileTree'. node_modules/chrome-devtools-frontend/front_end/timeline/TimelineTreeView.js(1051,30): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineProfileTree'. node_modules/chrome-devtools-frontend/front_end/timeline/TimelineTreeView.js(1055,49): error TS2694: Namespace 'Timeline' has no exported member 'TimelineTreeView'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(214,29): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineIRModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(255,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(273,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(307,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(322,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(336,37): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineIRModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(348,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(361,31): error TS2694: Namespace 'ProductRegistry' has no exported member 'Registry'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(364,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(376,51): error TS2339: Property 'nameForUrl' does not exist on type '() => void'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(390,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(438,29): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineIRModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(446,29): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineIRModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(454,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(462,29): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(463,25): error TS2694: Namespace 'Timeline' has no exported member 'TimelineUIUtils'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(493,24): error TS2694: Namespace 'Timeline' has no exported member 'TimelineUIUtils'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(513,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(514,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(526,62): error TS2339: Property 'bytesToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(658,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(659,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(703,17): error TS2339: Property 'createTextChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(707,19): error TS2339: Property 'createTextChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(758,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(763,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(770,36): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(815,73): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(816,72): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(824,74): error TS2339: Property 'bytesToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(838,74): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(977,54): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1003,18): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1040,31): error TS2339: Property 'asParsedURL' does not exist on type 'string'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1058,56): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1058,92): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1075,43): error TS2339: Property 'lowerBound' does not exist on type 'any[]'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1076,42): error TS2339: Property 'lowerBound' does not exist on type 'any[]'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1105,26): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1118,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1128,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1138,29): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1159,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1168,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1179,29): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1183,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1197,71): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1202,69): error TS2694: Namespace 'Protocol' has no exported member 'Network'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1213,30): error TS2339: Property 'bytesToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1216,75): error TS2339: Property 'bytesToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1246,31): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1247,25): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1250,33): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1254,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1255,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1302,74): error TS2339: Property 'preciseMillisToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1308,71): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1322,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1323,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1345,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1403,37): error TS2339: Property 'valuesArray' does not exist on type 'Map'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1412,13): error TS2339: Property 'addAll' does not exist on type 'Set'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1418,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1425,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1431,24): error TS2339: Property 'binaryIndexOf' does not exist on type 'any[]'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1455,18): error TS2403: Subsequent variable declarations must have the same type. Variable 'categoryName' must be of type 'any', but here has type 'string'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1465,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1466,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1467,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1481,25): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1483,41): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1492,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1498,28): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1499,18): error TS2339: Property 'title' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1502,20): error TS2339: Property 'style' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1564,29): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1590,61): error TS2339: Property 'preciseMillisToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1593,37): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1595,33): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1609,18): error TS2339: Property 'preciseMillisToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1641,19): error TS2694: Namespace 'SDK' has no exported member 'FilmStripModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1652,69): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1669,21): error TS2694: Namespace 'SDK' has no exported member 'FilmStripModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1684,30): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1685,16): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1687,13): error TS2339: Property 'createTextChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1690,13): error TS2339: Property 'createTextChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1693,13): error TS2339: Property 'createTextChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1732,33): error TS2694: Namespace 'Timeline' has no exported member 'TimelineUIUtils'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1758,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1759,25): error TS2694: Namespace 'Timeline' has no exported member 'TimelineMarkerStyle'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1815,25): error TS2694: Namespace 'Timeline' has no exported member 'TimelineMarkerStyle'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1842,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1861,14): error TS2339: Property 'createTextChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1866,20): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1869,70): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1872,80): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1877,14): error TS2339: Property 'createTextChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1886,29): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1934,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1940,5): error TS2346: Call target does not contain any signatures. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1953,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1963,13): error TS2339: Property 'createTextChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1965,13): error TS2339: Property 'createTextChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1970,13): error TS2339: Property 'createTextChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1971,25): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1991,27): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1997,13): error TS2339: Property 'createTextChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1998,28): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2053,21): error TS2339: Property 'createTextChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2057,21): error TS2339: Property 'createTextChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2059,21): error TS2339: Property 'createTextChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2078,23): error TS2339: Property 'createTextChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2114,5): error TS2346: Call target does not contain any signatures. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2126,7): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2133,7): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2146,2): error TS1131: Property or signature expected. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2167,15): error TS2339: Property 'colSpan' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2186,10): error TS2339: Property 'createTextChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2191,5): error TS2322: Type 'string | number' is not assignable to type 'string'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(189,29): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineIRModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(230,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(248,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(282,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(297,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(311,37): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineIRModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(323,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(336,31): error TS2694: Namespace 'ProductRegistry' has no exported member 'Registry'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(339,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(351,51): error TS2339: Property 'nameForUrl' does not exist on type '() => void'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(365,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(413,29): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineIRModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(421,29): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineIRModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(429,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(437,29): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(438,25): error TS2694: Namespace 'Timeline' has no exported member 'TimelineUIUtils'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(468,24): error TS2694: Namespace 'Timeline' has no exported member 'TimelineUIUtils'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(488,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(489,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(501,62): error TS2339: Property 'bytesToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(631,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(632,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(676,17): error TS2339: Property 'createTextChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(680,19): error TS2339: Property 'createTextChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(728,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(733,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(740,36): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(785,73): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(786,72): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(794,74): error TS2339: Property 'bytesToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(808,74): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(944,54): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(970,18): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1007,31): error TS2339: Property 'asParsedURL' does not exist on type 'string'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1025,56): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1025,92): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1042,43): error TS2339: Property 'lowerBound' does not exist on type 'any[]'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1043,42): error TS2339: Property 'lowerBound' does not exist on type 'any[]'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1072,26): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1085,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1095,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1105,29): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1126,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1135,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1146,29): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1150,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1164,71): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1169,69): error TS2694: Namespace 'Protocol' has no exported member 'Network'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1180,30): error TS2339: Property 'bytesToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1183,75): error TS2339: Property 'bytesToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1213,31): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1214,25): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1217,33): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1221,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1222,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1269,74): error TS2339: Property 'preciseMillisToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1275,71): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1289,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1290,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1312,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1370,37): error TS2339: Property 'valuesArray' does not exist on type 'Map'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1379,13): error TS2339: Property 'addAll' does not exist on type 'Set'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1385,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1392,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1398,24): error TS2339: Property 'binaryIndexOf' does not exist on type 'any[]'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1422,18): error TS2403: Subsequent variable declarations must have the same type. Variable 'categoryName' must be of type 'any', but here has type 'string'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1432,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1433,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1434,15): error TS1055: Type 'Promise' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1448,25): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1450,41): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1459,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1465,28): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1466,18): error TS2339: Property 'title' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1469,20): error TS2339: Property 'style' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1531,29): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1557,61): error TS2339: Property 'preciseMillisToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1560,37): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1562,33): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1576,18): error TS2339: Property 'preciseMillisToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1608,19): error TS2694: Namespace 'SDK' has no exported member 'FilmStripModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1619,69): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1636,21): error TS2694: Namespace 'SDK' has no exported member 'FilmStripModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1651,30): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1652,16): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1654,13): error TS2339: Property 'createTextChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1657,13): error TS2339: Property 'createTextChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1660,13): error TS2339: Property 'createTextChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1699,33): error TS2694: Namespace 'Timeline' has no exported member 'TimelineUIUtils'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1725,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1726,25): error TS2694: Namespace 'Timeline' has no exported member 'TimelineMarkerStyle'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1782,25): error TS2694: Namespace 'Timeline' has no exported member 'TimelineMarkerStyle'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1809,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1828,14): error TS2339: Property 'createTextChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1833,20): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1836,70): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1839,80): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1844,14): error TS2339: Property 'createTextChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1853,29): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1901,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1907,5): error TS2346: Call target does not contain any signatures. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1920,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1930,13): error TS2339: Property 'createTextChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1932,13): error TS2339: Property 'createTextChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1937,13): error TS2339: Property 'createTextChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1938,25): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1958,27): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1964,13): error TS2339: Property 'createTextChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1965,28): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2020,21): error TS2339: Property 'createTextChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2024,21): error TS2339: Property 'createTextChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2026,21): error TS2339: Property 'createTextChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2045,23): error TS2339: Property 'createTextChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2081,5): error TS2346: Call target does not contain any signatures. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2093,7): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2100,7): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2113,2): error TS1131: Property or signature expected. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2134,15): error TS2339: Property 'colSpan' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2153,10): error TS2339: Property 'createTextChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2158,5): error TS2322: Type 'string | number' is not assignable to type 'string'. Type 'number' is not assignable to type 'string'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2219,12): error TS2339: Property 'createTextChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2230,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2240,39): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2250,20): error TS2339: Property 'removeChildren' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2257,39): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2263,39): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2334,21): error TS2339: Property 'createTextChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2334,44): error TS2339: Property 'sprintf' does not exist on type 'StringConstructor'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2340,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2353,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2360,23): error TS2339: Property 'createChild' does not exist on type 'Element'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2367,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2186,12): error TS2339: Property 'createTextChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2197,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2207,39): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2217,20): error TS2339: Property 'removeChildren' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2224,39): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2230,39): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2301,21): error TS2339: Property 'createTextChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2301,44): error TS2339: Property 'sprintf' does not exist on type 'StringConstructor'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2307,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2320,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2327,23): error TS2339: Property 'createChild' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(2334,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineFrameModel.js(36,28): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineFrameModel.js(73,29): error TS2339: Property 'lowerBound' does not exist on type 'any[]'. node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineFrameModel.js(74,28): error TS2339: Property 'lowerBound' does not exist on type 'any[]'. @@ -12474,20 +12434,20 @@ node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(51,26): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(52,26): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(62,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(86,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(85,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(95,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(96,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(97,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(106,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(118,46): error TS2339: Property 'peekLast' does not exist on type 'any[]'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(142,33): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(168,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(172,35): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(179,35): error TS2339: Property 'peekLast' does not exist on type 'any[]'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(209,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(218,30): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineJSProfileProcessor'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(230,27): error TS2694: Namespace 'SDK' has no exported member 'TracingManager'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(289,22): error TS2694: Namespace 'SDK' has no exported member 'TracingManager'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(292,35): error TS2694: Namespace 'SDK' has no exported member 'TracingManager'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(105,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(117,46): error TS2339: Property 'peekLast' does not exist on type 'any[]'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(141,33): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(167,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(171,35): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(178,35): error TS2339: Property 'peekLast' does not exist on type 'any[]'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(208,24): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(217,30): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineJSProfileProcessor'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(229,27): error TS2694: Namespace 'SDK' has no exported member 'TracingManager'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(288,22): error TS2694: Namespace 'SDK' has no exported member 'TracingManager'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineJSProfile.js(291,35): error TS2694: Namespace 'SDK' has no exported member 'TracingManager'. node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(40,26): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(41,28): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(42,28): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. @@ -12568,49 +12528,49 @@ node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js( node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1015,43): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1017,38): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1019,38): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1245,28): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1247,36): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1247,79): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1259,99): error TS1003: Identifier expected. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1265,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1275,31): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1291,29): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1307,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1314,28): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1328,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1385,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1392,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1423,31): error TS2694: Namespace 'TimelineModel' has no exported member 'InvalidationCause'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1433,82): error TS1003: Identifier expected. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1438,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1440,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1447,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1515,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1524,30): error TS2495: Type 'Iterator<(Anonymous class)>' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1532,22): error TS2339: Property 'linkedRecalcStyleEvent' does not exist on type '(Anonymous class)'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1548,18): error TS2339: Property 'linkedRecalcStyleEvent' does not exist on type '(Anonymous class)'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1552,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1588,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1605,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1609,30): error TS2495: Type 'Iterator<(Anonymous class)>' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1619,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1642,30): error TS2495: Type 'Iterator<(Anonymous class)>' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1649,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1707,36): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1707,80): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1733,23): error TS2495: Type 'Map' is not an array type or a string type. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1741,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1745,35): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1748,49): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1755,34): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1780,33): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1782,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1784,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1792,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1804,20): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1811,25): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1819,32): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. -node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1826,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1232,28): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1234,36): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1234,79): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1246,99): error TS1003: Identifier expected. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1252,19): error TS2694: Namespace 'SDK' has no exported member 'Target'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1262,31): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1278,29): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1294,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1301,28): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1315,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1372,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1379,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1410,31): error TS2694: Namespace 'TimelineModel' has no exported member 'InvalidationCause'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1420,82): error TS1003: Identifier expected. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1425,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1427,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1434,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1502,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1511,30): error TS2495: Type 'Iterator<(Anonymous class)>' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1519,22): error TS2339: Property 'linkedRecalcStyleEvent' does not exist on type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1535,18): error TS2339: Property 'linkedRecalcStyleEvent' does not exist on type '(Anonymous class)'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1539,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1575,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1592,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1596,30): error TS2495: Type 'Iterator<(Anonymous class)>' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1606,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1629,30): error TS2495: Type 'Iterator<(Anonymous class)>' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1636,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1694,36): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1694,80): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1720,23): error TS2495: Type 'Map' is not an array type or a string type. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1728,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1732,35): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1735,49): error TS2694: Namespace 'TimelineModel' has no exported member 'TimelineModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1742,34): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1767,33): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1769,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1771,21): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1779,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1791,20): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1798,25): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1806,32): error TS2694: Namespace 'Protocol' has no exported member 'Runtime'. +node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModel.js(1813,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModelFilter.js(7,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModelFilter.js(20,5): error TS2346: Call target does not contain any signatures. node_modules/chrome-devtools-frontend/front_end/timeline_model/TimelineModelFilter.js(26,19): error TS2694: Namespace 'SDK' has no exported member 'TracingModel'. From ea1e4102f51b730b5a6f3688fc0e94aada8cd6b5 Mon Sep 17 00:00:00 2001 From: csigs Date: Tue, 12 Dec 2017 17:10:08 +0000 Subject: [PATCH 035/173] LEGO: check in for master to temporary branch. --- .../diagnosticMessages.generated.json.lcl | 110 ++++++++++------- .../diagnosticMessages.generated.json.lcl | 116 +++++++++++------- .../diagnosticMessages.generated.json.lcl | 98 +++++++++------ .../diagnosticMessages.generated.json.lcl | 112 ++++++++++------- .../diagnosticMessages.generated.json.lcl | 116 +++++++++++------- .../diagnosticMessages.generated.json.lcl | 116 +++++++++++------- .../diagnosticMessages.generated.json.lcl | 34 +++-- 7 files changed, 426 insertions(+), 276 deletions(-) diff --git a/src/loc/lcl/chs/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/chs/diagnosticMessages/diagnosticMessages.generated.json.lcl index d7800b1c397..ddf6864d45c 100644 --- a/src/loc/lcl/chs/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/chs/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -867,8 +867,8 @@ - - + + @@ -879,8 +879,8 @@ - - + + @@ -891,8 +891,8 @@ - - + + @@ -903,8 +903,8 @@ - - + + @@ -915,6 +915,9 @@ + + + @@ -1545,8 +1548,8 @@ - - + + @@ -1962,8 +1965,8 @@ - - + + @@ -1986,8 +1989,8 @@ - - + + @@ -2364,8 +2367,8 @@ - - + + @@ -2376,8 +2379,8 @@ - - + + @@ -2388,8 +2391,8 @@ - - + + @@ -2400,8 +2403,8 @@ - - + + @@ -2484,8 +2487,8 @@ - - + + @@ -3756,8 +3759,8 @@ - - + + @@ -3780,8 +3783,8 @@ - - + + @@ -3801,8 +3804,8 @@ - - + + @@ -3954,8 +3957,8 @@ - - + + @@ -3966,8 +3969,8 @@ - - + + @@ -3978,8 +3981,8 @@ - - + + @@ -3990,8 +3993,8 @@ - - + + @@ -4527,8 +4530,8 @@ - - + + @@ -4839,6 +4842,12 @@ + + + + + + @@ -5445,8 +5454,8 @@ - - + + @@ -5901,8 +5910,8 @@ - - + + @@ -6330,8 +6339,8 @@ - - + + @@ -6450,6 +6459,9 @@ + + + @@ -6558,6 +6570,9 @@ + + + @@ -7413,6 +7428,9 @@ + + + diff --git a/src/loc/lcl/cht/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/cht/diagnosticMessages/diagnosticMessages.generated.json.lcl index 7349ab473c9..cfdfc5bc1ec 100644 --- a/src/loc/lcl/cht/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/cht/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -867,8 +867,8 @@ - - + + @@ -879,8 +879,8 @@ - - + + @@ -891,8 +891,8 @@ - - + + @@ -903,8 +903,8 @@ - - + + @@ -915,6 +915,9 @@ + + + @@ -1545,8 +1548,8 @@ - - + + @@ -1962,8 +1965,8 @@ - - + + @@ -1986,8 +1989,8 @@ - - + + @@ -2364,8 +2367,8 @@ - - + + @@ -2376,8 +2379,8 @@ - - + + @@ -2388,8 +2391,8 @@ - - + + @@ -2400,8 +2403,8 @@ - - + + @@ -2484,8 +2487,8 @@ - - + + @@ -3756,8 +3759,8 @@ - - + + @@ -3780,8 +3783,8 @@ - - + + @@ -3801,8 +3804,8 @@ - - + + @@ -3954,8 +3957,8 @@ - - + + @@ -3966,8 +3969,8 @@ - - + + @@ -3978,8 +3981,8 @@ - - + + @@ -3990,8 +3993,8 @@ - - + + @@ -4527,8 +4530,8 @@ - - + + @@ -4749,6 +4752,12 @@ + + + + + + @@ -4839,6 +4848,12 @@ + + + + + + @@ -5445,8 +5460,8 @@ - - + + @@ -5901,8 +5916,8 @@ - - + + @@ -6330,8 +6345,8 @@ - - + + @@ -6450,6 +6465,9 @@ + + + @@ -6558,6 +6576,9 @@ + + + @@ -7413,6 +7434,9 @@ + + + diff --git a/src/loc/lcl/csy/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/csy/diagnosticMessages/diagnosticMessages.generated.json.lcl index 17076cc9ae0..3e4ef40ad57 100644 --- a/src/loc/lcl/csy/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/csy/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -876,8 +876,8 @@ - - + + @@ -888,7 +888,7 @@ - + @@ -900,8 +900,8 @@ - - + + @@ -912,8 +912,8 @@ - - + + @@ -924,6 +924,9 @@ + + + @@ -1554,8 +1557,8 @@ - - + + @@ -1971,7 +1974,7 @@ - + @@ -1995,7 +1998,7 @@ - + @@ -2373,8 +2376,8 @@ - - + + @@ -2385,8 +2388,8 @@ - - + + @@ -2397,8 +2400,8 @@ - - + + @@ -2409,8 +2412,8 @@ - - + + @@ -2493,7 +2496,7 @@ - + @@ -3765,7 +3768,7 @@ - + @@ -3789,8 +3792,8 @@ - - + + @@ -3810,8 +3813,8 @@ - - + + @@ -3963,8 +3966,8 @@ - - + + @@ -3975,8 +3978,8 @@ - - + + @@ -3987,7 +3990,7 @@ - + @@ -3999,7 +4002,7 @@ - + @@ -4536,7 +4539,7 @@ - + @@ -4758,6 +4761,12 @@ + + + + + + @@ -4848,6 +4857,12 @@ + + + + + + @@ -5454,7 +5469,7 @@ - + @@ -5910,8 +5925,8 @@ - - + + @@ -6339,8 +6354,8 @@ - - + + @@ -6459,6 +6474,9 @@ + + + @@ -6567,6 +6585,9 @@ + + + @@ -7422,6 +7443,9 @@ + + + diff --git a/src/loc/lcl/deu/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/deu/diagnosticMessages/diagnosticMessages.generated.json.lcl index be79110aafd..5666e13708f 100644 --- a/src/loc/lcl/deu/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/deu/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -864,8 +864,8 @@ - - + + @@ -876,8 +876,8 @@ - - + + @@ -888,8 +888,8 @@ - - + + @@ -900,8 +900,8 @@ - - + + @@ -912,6 +912,9 @@ + + + @@ -1542,8 +1545,8 @@ - - + + @@ -1959,8 +1962,8 @@ - - + + @@ -1983,8 +1986,8 @@ - - + + @@ -2361,8 +2364,8 @@ - - + + @@ -2373,8 +2376,8 @@ - - + + @@ -2385,8 +2388,8 @@ - - + + @@ -2397,8 +2400,8 @@ - - + + @@ -2481,8 +2484,8 @@ - - + + @@ -3753,8 +3756,8 @@ - - + + @@ -3777,7 +3780,7 @@ - + @@ -3798,8 +3801,8 @@ - - + + @@ -3951,8 +3954,8 @@ - - + + @@ -3963,8 +3966,8 @@ - - + + @@ -3975,8 +3978,8 @@ - - + + @@ -3987,8 +3990,8 @@ - - + + @@ -4524,8 +4527,8 @@ - - + + @@ -4746,6 +4749,12 @@ + + + + + + @@ -4836,6 +4845,12 @@ + + + + + + @@ -5439,8 +5454,8 @@ - - + + @@ -5895,7 +5910,7 @@ - + @@ -6321,8 +6336,8 @@ - - + + @@ -6441,6 +6456,9 @@ + + + @@ -6549,6 +6567,9 @@ + + + @@ -7404,6 +7425,9 @@ + + + diff --git a/src/loc/lcl/jpn/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/jpn/diagnosticMessages/diagnosticMessages.generated.json.lcl index 0dda83cc233..59baa069721 100644 --- a/src/loc/lcl/jpn/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/jpn/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -867,8 +867,8 @@ - - + + @@ -879,8 +879,8 @@ - - + + @@ -891,8 +891,8 @@ - - + + @@ -903,8 +903,8 @@ - - + + @@ -915,6 +915,9 @@ + + + @@ -1545,8 +1548,8 @@ - - + + @@ -1962,8 +1965,8 @@ - - + + @@ -1986,8 +1989,8 @@ - - + + @@ -2364,8 +2367,8 @@ - - + + @@ -2376,8 +2379,8 @@ - - + + @@ -2388,8 +2391,8 @@ - - + + @@ -2400,8 +2403,8 @@ - - + + @@ -2484,8 +2487,8 @@ - - + + @@ -3756,8 +3759,8 @@ - - + + @@ -3780,8 +3783,8 @@ - - + + @@ -3801,8 +3804,8 @@ - - + + @@ -3954,8 +3957,8 @@ - - + + @@ -3966,8 +3969,8 @@ - - + + @@ -3978,8 +3981,8 @@ - - + + @@ -3990,8 +3993,8 @@ - - + + @@ -4527,8 +4530,8 @@ - - + + @@ -4749,6 +4752,12 @@ + + + + + + @@ -4839,6 +4848,12 @@ + + + + + + @@ -5445,8 +5460,8 @@ - - + + @@ -5901,8 +5916,8 @@ - - + + @@ -6330,8 +6345,8 @@ - - + + @@ -6450,6 +6465,9 @@ + + + @@ -6558,6 +6576,9 @@ + + + @@ -7413,6 +7434,9 @@ + + + diff --git a/src/loc/lcl/kor/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/kor/diagnosticMessages/diagnosticMessages.generated.json.lcl index 66c672fa88f..d19f6502fdc 100644 --- a/src/loc/lcl/kor/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/kor/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -867,8 +867,8 @@ - - + + @@ -879,8 +879,8 @@ - - + + @@ -891,8 +891,8 @@ - - + + @@ -903,8 +903,8 @@ - - + + @@ -915,6 +915,9 @@ + + + @@ -1545,8 +1548,8 @@ - - + + @@ -1962,8 +1965,8 @@ - - + + @@ -1986,8 +1989,8 @@ - - + + @@ -2364,8 +2367,8 @@ - - + + @@ -2376,8 +2379,8 @@ - - + + @@ -2388,8 +2391,8 @@ - - + + @@ -2400,8 +2403,8 @@ - - + + @@ -2484,8 +2487,8 @@ - - + + @@ -3756,8 +3759,8 @@ - - + + @@ -3780,8 +3783,8 @@ - - + + @@ -3801,8 +3804,8 @@ - - + + @@ -3954,8 +3957,8 @@ - - + + @@ -3966,8 +3969,8 @@ - - + + @@ -3978,8 +3981,8 @@ - - + + @@ -3990,8 +3993,8 @@ - - + + @@ -4527,8 +4530,8 @@ - - + + @@ -4749,6 +4752,12 @@ + + + + + + @@ -4839,6 +4848,12 @@ + + + + + + @@ -5445,8 +5460,8 @@ - - + + @@ -5901,8 +5916,8 @@ - - + + @@ -6330,8 +6345,8 @@ - - + + @@ -6450,6 +6465,9 @@ + + + @@ -6558,6 +6576,9 @@ + + + @@ -7413,6 +7434,9 @@ + + + diff --git a/src/loc/lcl/rus/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/rus/diagnosticMessages/diagnosticMessages.generated.json.lcl index e0f7c039abd..a3389c54f91 100644 --- a/src/loc/lcl/rus/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/rus/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -144,7 +144,7 @@ - + @@ -153,7 +153,7 @@ - + @@ -162,7 +162,7 @@ - + @@ -171,7 +171,7 @@ - + @@ -180,7 +180,7 @@ - + @@ -531,7 +531,7 @@ - + @@ -540,7 +540,7 @@ - + @@ -795,7 +795,7 @@ - + @@ -4748,6 +4748,12 @@ + + + + + + @@ -4838,6 +4844,12 @@ + + + + + + @@ -8922,7 +8934,7 @@ - + @@ -8931,7 +8943,7 @@ - + @@ -8940,7 +8952,7 @@ - + From 21ff2cd5010343d499c7c745c3e850565eb939f7 Mon Sep 17 00:00:00 2001 From: Andy Date: Tue, 12 Dec 2017 11:25:58 -0800 Subject: [PATCH 036/173] Remove unnecessary `getFirstChildOfKind` helper function (#20647) --- src/services/codefixes/inferFromUsage.ts | 4 ++-- src/services/findAllReferences.ts | 2 +- src/services/utilities.ts | 22 ++++++++-------------- 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/src/services/codefixes/inferFromUsage.ts b/src/services/codefixes/inferFromUsage.ts index 96a0777c2c1..e74c1c74911 100644 --- a/src/services/codefixes/inferFromUsage.ts +++ b/src/services/codefixes/inferFromUsage.ts @@ -170,7 +170,7 @@ namespace ts.codefix { } const type = inferTypeForVariableFromUsage(getAccessorDeclaration.name, sourceFile, program, cancellationToken); - const closeParenToken = getFirstChildOfKind(getAccessorDeclaration, sourceFile, SyntaxKind.CloseParenToken); + const closeParenToken = findChildOfKind(getAccessorDeclaration, SyntaxKind.CloseParenToken, sourceFile); return makeFix(getAccessorDeclaration, closeParenToken.getEnd(), type, program); } @@ -209,7 +209,7 @@ namespace ts.codefix { case SyntaxKind.MethodDeclaration: const isConstructor = containingFunction.kind === SyntaxKind.Constructor; const searchToken = isConstructor ? - >getFirstChildOfKind(containingFunction, sourceFile, SyntaxKind.ConstructorKeyword) : + findChildOfKind>(containingFunction, SyntaxKind.ConstructorKeyword, sourceFile) : containingFunction.name; if (searchToken) { return InferFromReference.inferTypeForParametersFromReferences(getReferences(searchToken, sourceFile, program, cancellationToken), containingFunction, program.getTypeChecker(), cancellationToken); diff --git a/src/services/findAllReferences.ts b/src/services/findAllReferences.ts index 86db21e3225..59353cb8686 100644 --- a/src/services/findAllReferences.ts +++ b/src/services/findAllReferences.ts @@ -992,7 +992,7 @@ namespace ts.FindAllReferences.Core { */ function findOwnConstructorReferences(classSymbol: Symbol, sourceFile: SourceFile, addNode: (node: Node) => void): void { for (const decl of classSymbol.members.get(InternalSymbolName.Constructor).declarations) { - const ctrKeyword = ts.findChildOfKind(decl, ts.SyntaxKind.ConstructorKeyword, sourceFile)!; + const ctrKeyword = findChildOfKind(decl, ts.SyntaxKind.ConstructorKeyword, sourceFile)!; Debug.assert(decl.kind === SyntaxKind.Constructor && !!ctrKeyword); addNode(ctrKeyword); } diff --git a/src/services/utilities.ts b/src/services/utilities.ts index 358db5e8b4b..af5ad0c1033 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -445,7 +445,7 @@ namespace ts { return position < candidate.end || !isCompletedNode(candidate, sourceFile); } - export function isCompletedNode(n: Node, sourceFile: SourceFile): boolean { + function isCompletedNode(n: Node, sourceFile: SourceFile): boolean { if (nodeIsMissing(n)) { return false; } @@ -512,7 +512,7 @@ namespace ts { case SyntaxKind.ExpressionStatement: return isCompletedNode((n).expression, sourceFile) || - hasChildOfKind(n, SyntaxKind.SemicolonToken); + hasChildOfKind(n, SyntaxKind.SemicolonToken, sourceFile); case SyntaxKind.ArrayLiteralExpression: case SyntaxKind.ArrayBindingPattern: @@ -540,11 +540,9 @@ namespace ts { return isCompletedNode((n).statement, sourceFile); case SyntaxKind.DoStatement: // rough approximation: if DoStatement has While keyword - then if node is completed is checking the presence of ')'; - const hasWhileKeyword = findChildOfKind(n, SyntaxKind.WhileKeyword, sourceFile); - if (hasWhileKeyword) { - return nodeEndsWith(n, SyntaxKind.CloseParenToken, sourceFile); - } - return isCompletedNode((n).statement, sourceFile); + return hasChildOfKind(n, SyntaxKind.WhileKeyword, sourceFile) + ? nodeEndsWith(n, SyntaxKind.CloseParenToken, sourceFile) + : isCompletedNode((n).statement, sourceFile); case SyntaxKind.TypeQuery: return isCompletedNode((n).exprName, sourceFile); @@ -619,12 +617,12 @@ namespace ts { }; } - export function hasChildOfKind(n: Node, kind: SyntaxKind, sourceFile?: SourceFile): boolean { + export function hasChildOfKind(n: Node, kind: SyntaxKind, sourceFile: SourceFile): boolean { return !!findChildOfKind(n, kind, sourceFile); } - export function findChildOfKind(n: Node, kind: SyntaxKind, sourceFile?: SourceFileLike): Node | undefined { - return forEach(n.getChildren(sourceFile), c => c.kind === kind && c); + export function findChildOfKind(n: Node, kind: T["kind"], sourceFile: SourceFileLike): T | undefined { + return find(n.getChildren(sourceFile), (c): c is T => c.kind === kind); } export function findContainingList(node: Node): SyntaxList | undefined { @@ -1113,10 +1111,6 @@ namespace ts { export function singleElementArray(t: T | undefined): T[] { return t === undefined ? undefined : [t]; } - - export function getFirstChildOfKind(node: Node, sourceFile: SourceFile, kind: SyntaxKind): Node | undefined { - return find(node.getChildren(sourceFile), c => c.kind === kind); - } } // Display-part writer helpers From 8ad4aeece15477e1b869b45bbedbf217a219ba5c Mon Sep 17 00:00:00 2001 From: Andy Date: Tue, 12 Dec 2017 12:23:13 -0800 Subject: [PATCH 037/173] Make ChangeTracker#newLineCharacter public, to avoid having to pass newLineCharacter around as a parameter (#20574) * Make ChangeTracker#newLineCharacter public, to avoid having to pass newLineCharacter around as a parameter * Don't require newLineCharacter as input to ChangeTracker methods, and make it private again --- src/compiler/core.ts | 2 + src/harness/unittests/textChanges.ts | 60 ++++---- src/services/codefixes/fixAddMissingMember.ts | 38 ++--- ...sDoesntImplementInheritedAbstractMember.ts | 8 +- .../fixClassIncorrectlyImplementsInterface.ts | 11 +- .../fixClassSuperMustPrecedeThisAccess.ts | 14 +- .../fixConstructorForDerivedNeedSuperCall.ts | 12 +- src/services/codefixes/importFixes.ts | 6 +- .../refactors/convertFunctionToEs6Class.ts | 3 +- src/services/refactors/extractSymbol.ts | 40 ++--- src/services/textChanges.ts | 145 ++++++++++++++---- src/services/utilities.ts | 42 ----- ...ractConstant_VariableList_MultipleLines.js | 2 +- ...ractConstant_VariableList_MultipleLines.ts | 2 +- .../reference/textChanges/insertNodeAfter2.js | 2 +- ... => insertNodeAfterVariableDeclaration.js} | 2 +- ...eAtConstructorStart-block with newline.js} | 1 - ...er3.js => insertNodeAtConstructorStart.js} | 0 ...{insertNodeAt1.js => insertNodeBefore3.js} | 2 +- .../fourslash/codeFixAddMissingMember4.ts | 2 +- .../fourslash/codeFixAddMissingMember6.ts | 2 +- .../codeFixAddMissingMember_all_js.ts | 7 +- .../fourslash/extract-method-uniqueName.ts | 2 - .../importNameCodeFixNewImportAmbient2.ts | 1 + .../importNameCodeFixNewImportFile1.ts | 1 + ...portNameCodeFixNewImportFileAllComments.ts | 1 + .../fourslash/importNameCodeFixShebang.ts | 1 + 27 files changed, 220 insertions(+), 189 deletions(-) rename tests/baselines/reference/textChanges/{insertNodeAt2.js => insertNodeAfterVariableDeclaration.js} (88%) rename tests/baselines/reference/textChanges/{insertNodeAfter3-block with newline.js => insertNodeAtConstructorStart-block with newline.js} (99%) rename tests/baselines/reference/textChanges/{insertNodeAfter3.js => insertNodeAtConstructorStart.js} (100%) rename tests/baselines/reference/textChanges/{insertNodeAt1.js => insertNodeBefore3.js} (93%) diff --git a/src/compiler/core.ts b/src/compiler/core.ts index b11750c25af..0b82a3967dd 100644 --- a/src/compiler/core.ts +++ b/src/compiler/core.ts @@ -288,6 +288,8 @@ namespace ts { return undefined; } + export function findLast(array: ReadonlyArray, predicate: (element: T, index: number) => element is U): U | undefined; + export function findLast(array: ReadonlyArray, predicate: (element: T, index: number) => boolean): T | undefined; export function findLast(array: ReadonlyArray, predicate: (element: T, index: number) => boolean): T | undefined { for (let i = array.length - 1; i >= 0; i--) { const value = array[i]; diff --git a/src/harness/unittests/textChanges.ts b/src/harness/unittests/textChanges.ts index ed571b37399..934da4e3ba1 100644 --- a/src/harness/unittests/textChanges.ts +++ b/src/harness/unittests/textChanges.ts @@ -103,7 +103,7 @@ namespace M /*body */ createBlock(statements) ); - changeTracker.insertNodeBefore(sourceFile, /*before*/findChild("M2", sourceFile), newFunction, { suffix: newLineCharacter }); + changeTracker.insertNodeBefore(sourceFile, /*before*/findChild("M2", sourceFile), newFunction); // replace statements with return statement const newStatement = createReturn( @@ -129,12 +129,11 @@ function bar() { changeTracker.deleteRange(sourceFile, { pos: text.indexOf("function foo"), end: text.indexOf("function bar") }); }); } - function findVariableStatementContaining(name: string, sourceFile: SourceFile) { - const varDecl = findChild(name, sourceFile); - assert.equal(varDecl.kind, SyntaxKind.VariableDeclaration); - const varStatement = varDecl.parent.parent; - assert.equal(varStatement.kind, SyntaxKind.VariableStatement); - return varStatement; + function findVariableStatementContaining(name: string, sourceFile: SourceFile): VariableStatement { + return cast(findVariableDeclarationContaining(name, sourceFile).parent.parent, isVariableStatement); + } + function findVariableDeclarationContaining(name: string, sourceFile: SourceFile): VariableDeclaration { + return cast(findChild(name, sourceFile), isVariableDeclaration); } { const text = ` @@ -306,11 +305,11 @@ var y; // comment 4 var z = 3; // comment 5 // comment 6 var a = 4; // comment 7`; - runSingleFileTest("insertNodeAt1", /*placeOpenBraceOnNewLineForFunctions*/ true, text, /*validateNodes*/ true, (sourceFile, changeTracker) => { - changeTracker.insertNodeAt(sourceFile, text.indexOf("var y"), createTestClass(), { suffix: newLineCharacter }); + runSingleFileTest("insertNodeBefore3", /*placeOpenBraceOnNewLineForFunctions*/ true, text, /*validateNodes*/ true, (sourceFile, changeTracker) => { + changeTracker.insertNodeBefore(sourceFile, findVariableStatementContaining("y", sourceFile), createTestClass()); }); - runSingleFileTest("insertNodeAt2", /*placeOpenBraceOnNewLineForFunctions*/ true, text, /*validateNodes*/ false, (sourceFile, changeTracker) => { - changeTracker.insertNodeAt(sourceFile, text.indexOf("; // comment 4"), createTestVariableDeclaration("z1")); + runSingleFileTest("insertNodeAfterVariableDeclaration", /*placeOpenBraceOnNewLineForFunctions*/ true, text, /*validateNodes*/ false, (sourceFile, changeTracker) => { + changeTracker.insertNodeAfter(sourceFile, findVariableDeclarationContaining("y", sourceFile), createTestVariableDeclaration("z1")); }); } { @@ -325,23 +324,22 @@ namespace M { var a = 4; // comment 7 }`; runSingleFileTest("insertNodeBefore1", /*placeOpenBraceOnNewLineForFunctions*/ true, text, /*validateNodes*/ true, (sourceFile, changeTracker) => { - changeTracker.insertNodeBefore(sourceFile, findVariableStatementContaining("y", sourceFile), createTestClass(), { suffix: newLineCharacter }); + changeTracker.insertNodeBefore(sourceFile, findVariableStatementContaining("y", sourceFile), createTestClass()); }); runSingleFileTest("insertNodeBefore2", /*placeOpenBraceOnNewLineForFunctions*/ true, text, /*validateNodes*/ true, (sourceFile, changeTracker) => { - changeTracker.insertNodeBefore(sourceFile, findChild("M", sourceFile), createTestClass(), { suffix: newLineCharacter }); + changeTracker.insertNodeBefore(sourceFile, findChild("M", sourceFile), createTestClass()); }); runSingleFileTest("insertNodeAfter1", /*placeOpenBraceOnNewLineForFunctions*/ true, text, /*validateNodes*/ true, (sourceFile, changeTracker) => { - changeTracker.insertNodeAfter(sourceFile, findVariableStatementContaining("y", sourceFile), createTestClass(), { suffix: newLineCharacter }); + changeTracker.insertNodeAfter(sourceFile, findVariableStatementContaining("y", sourceFile), createTestClass()); }); runSingleFileTest("insertNodeAfter2", /*placeOpenBraceOnNewLineForFunctions*/ true, text, /*validateNodes*/ true, (sourceFile, changeTracker) => { - changeTracker.insertNodeAfter(sourceFile, findChild("M", sourceFile), createTestClass(), { prefix: newLineCharacter }); + changeTracker.insertNodeAfter(sourceFile, findChild("M", sourceFile), createTestClass()); }); } - function findOpenBraceForConstructor(sourceFile: SourceFile) { + function findConstructor(sourceFile: SourceFile): ConstructorDeclaration { const classDecl = sourceFile.statements[0]; - const constructorDecl = forEach(classDecl.members, m => m.kind === SyntaxKind.Constructor && (m).body && m); - return constructorDecl.body.getFirstToken(); + return find(classDecl.members, (m): m is ConstructorDeclaration => isConstructorDeclaration(m) && !!m.body)!; } function createTestSuperCall() { const superCall = createCall( @@ -359,8 +357,8 @@ class A { } } `; - runSingleFileTest("insertNodeAfter3", /*placeOpenBraceOnNewLineForFunctions*/ false, text1, /*validateNodes*/ false, (sourceFile, changeTracker) => { - changeTracker.insertNodeAfter(sourceFile, findOpenBraceForConstructor(sourceFile), createTestSuperCall(), { suffix: newLineCharacter }); + runSingleFileTest("insertNodeAtConstructorStart", /*placeOpenBraceOnNewLineForFunctions*/ false, text1, /*validateNodes*/ false, (sourceFile, changeTracker) => { + changeTracker.insertNodeAtConstructorStart(sourceFile, findConstructor(sourceFile), createTestSuperCall()); }); const text2 = ` class A { @@ -370,7 +368,7 @@ class A { } `; runSingleFileTest("insertNodeAfter4", /*placeOpenBraceOnNewLineForFunctions*/ false, text2, /*validateNodes*/ false, (sourceFile, changeTracker) => { - changeTracker.insertNodeAfter(sourceFile, findVariableStatementContaining("x", sourceFile), createTestSuperCall(), { suffix: newLineCharacter }); + changeTracker.insertNodeAfter(sourceFile, findVariableStatementContaining("x", sourceFile), createTestSuperCall()); }); const text3 = ` class A { @@ -379,8 +377,8 @@ class A { } } `; - runSingleFileTest("insertNodeAfter3-block with newline", /*placeOpenBraceOnNewLineForFunctions*/ false, text3, /*validateNodes*/ false, (sourceFile, changeTracker) => { - changeTracker.insertNodeAfter(sourceFile, findOpenBraceForConstructor(sourceFile), createTestSuperCall(), { suffix: newLineCharacter }); + runSingleFileTest("insertNodeAtConstructorStart-block with newline", /*placeOpenBraceOnNewLineForFunctions*/ false, text3, /*validateNodes*/ false, (sourceFile, changeTracker) => { + changeTracker.insertNodeAtConstructorStart(sourceFile, findConstructor(sourceFile), createTestSuperCall()); }); } { @@ -638,7 +636,7 @@ class A { } const insertAfter = findChild("x", sourceFile); for (const newNode of newNodes) { - changeTracker.insertNodeAfter(sourceFile, insertAfter, newNode, { suffix: newLineCharacter }); + changeTracker.insertNodeAfter(sourceFile, insertAfter, newNode); } }); } @@ -649,7 +647,7 @@ class A { } `; runSingleFileTest("insertNodeAfterInClass1", /*placeOpenBraceOnNewLineForFunctions*/ false, text, /*validateNodes*/ false, (sourceFile, changeTracker) => { - changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), createProperty(undefined, undefined, "a", undefined, createKeywordTypeNode(SyntaxKind.BooleanKeyword), undefined), { suffix: newLineCharacter }); + changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), createProperty(undefined, undefined, "a", undefined, createKeywordTypeNode(SyntaxKind.BooleanKeyword), undefined)); }); } { @@ -659,7 +657,7 @@ class A { } `; runSingleFileTest("insertNodeAfterInClass2", /*placeOpenBraceOnNewLineForFunctions*/ false, text, /*validateNodes*/ false, (sourceFile, changeTracker) => { - changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), createProperty(undefined, undefined, "a", undefined, createKeywordTypeNode(SyntaxKind.BooleanKeyword), undefined), { suffix: newLineCharacter }); + changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), createProperty(undefined, undefined, "a", undefined, createKeywordTypeNode(SyntaxKind.BooleanKeyword), undefined)); }); } { @@ -698,7 +696,7 @@ class A { /*questionToken*/ undefined, createKeywordTypeNode(SyntaxKind.AnyKeyword), /*initializer*/ undefined); - changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), newNode, { suffix: newLineCharacter }); + changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), newNode); }); } { @@ -716,7 +714,7 @@ class A { /*questionToken*/ undefined, createKeywordTypeNode(SyntaxKind.AnyKeyword), /*initializer*/ undefined); - changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), newNode, { suffix: newLineCharacter }); + changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), newNode); }); } { @@ -733,7 +731,7 @@ interface A { /*questionToken*/ undefined, createKeywordTypeNode(SyntaxKind.AnyKeyword), /*initializer*/ undefined); - changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), newNode, { suffix: newLineCharacter }); + changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), newNode); }); } { @@ -750,7 +748,7 @@ interface A { /*questionToken*/ undefined, createKeywordTypeNode(SyntaxKind.AnyKeyword), /*initializer*/ undefined); - changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), newNode, { suffix: newLineCharacter }); + changeTracker.insertNodeAfter(sourceFile, findChild("x", sourceFile), newNode); }); } { @@ -759,7 +757,7 @@ let x = foo `; runSingleFileTest("insertNodeInStatementListAfterNodeWithoutSeparator1", /*placeOpenBraceOnNewLineForFunctions*/ false, text, /*validateNodes*/ false, (sourceFile, changeTracker) => { const newNode = createStatement(createParen(createLiteral(1))); - changeTracker.insertNodeAfter(sourceFile, findVariableStatementContaining("x", sourceFile), newNode, { suffix: newLineCharacter }); + changeTracker.insertNodeAfter(sourceFile, findVariableStatementContaining("x", sourceFile), newNode); }); } }); diff --git a/src/services/codefixes/fixAddMissingMember.ts b/src/services/codefixes/fixAddMissingMember.ts index e20bdf0fb5b..0fc6a430e19 100644 --- a/src/services/codefixes/fixAddMissingMember.ts +++ b/src/services/codefixes/fixAddMissingMember.ts @@ -21,8 +21,8 @@ namespace ts.codefix { getAllCodeActions: context => { const seenNames = createMap(); return codeFixAll(context, errorCodes, (changes, diag) => { - const { newLineCharacter, program } = context; - const info = getInfo(diag.file!, diag.start!, context.program.getTypeChecker()); + const { program } = context; + const info = getInfo(diag.file!, diag.start!, program.getTypeChecker()); if (!info) return; const { classDeclaration, classDeclarationSourceFile, inJs, makeStatic, token, call } = info; if (!addToSeen(seenNames, token.text)) { @@ -31,15 +31,15 @@ namespace ts.codefix { // Always prefer to add a method declaration if possible. if (call) { - addMethodDeclaration(changes, classDeclarationSourceFile, classDeclaration, token, call, newLineCharacter, makeStatic, inJs); + addMethodDeclaration(changes, classDeclarationSourceFile, classDeclaration, token, call, makeStatic, inJs); } else { if (inJs) { - addMissingMemberInJs(changes, classDeclarationSourceFile, classDeclaration, token.text, makeStatic, newLineCharacter); + addMissingMemberInJs(changes, classDeclarationSourceFile, classDeclaration, token.text, makeStatic); } else { const typeNode = getTypeNode(program.getTypeChecker(), classDeclaration, token); - addPropertyDeclaration(changes, classDeclarationSourceFile, classDeclaration, token.text, typeNode, makeStatic, newLineCharacter); + addPropertyDeclaration(changes, classDeclarationSourceFile, classDeclaration, token.text, typeNode, makeStatic); } } }); @@ -96,20 +96,20 @@ namespace ts.codefix { } function getActionsForAddMissingMemberInJavaScriptFile(context: CodeFixContext, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, tokenName: string, makeStatic: boolean): CodeFixAction | undefined { - const changes = textChanges.ChangeTracker.with(context, t => addMissingMemberInJs(t, classDeclarationSourceFile, classDeclaration, tokenName, makeStatic, context.newLineCharacter)); + const changes = textChanges.ChangeTracker.with(context, t => addMissingMemberInJs(t, classDeclarationSourceFile, classDeclaration, tokenName, makeStatic)); if (changes.length === 0) return undefined; const description = formatStringFromArgs(getLocaleSpecificMessage(makeStatic ? Diagnostics.Initialize_static_property_0 : Diagnostics.Initialize_property_0_in_the_constructor), [tokenName]); return { description, changes, fixId }; } - function addMissingMemberInJs(changeTracker: textChanges.ChangeTracker, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, tokenName: string, makeStatic: boolean, newLineCharacter: string): void { + function addMissingMemberInJs(changeTracker: textChanges.ChangeTracker, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, tokenName: string, makeStatic: boolean): void { if (makeStatic) { if (classDeclaration.kind === SyntaxKind.ClassExpression) { return; } const className = classDeclaration.name.getText(); const staticInitialization = initializePropertyToUndefined(createIdentifier(className), tokenName); - changeTracker.insertNodeAfter(classDeclarationSourceFile, classDeclaration, staticInitialization, { prefix: newLineCharacter, suffix: newLineCharacter }); + changeTracker.insertNodeAfter(classDeclarationSourceFile, classDeclaration, staticInitialization); } else { const classConstructor = getFirstConstructorWithBody(classDeclaration); @@ -117,7 +117,7 @@ namespace ts.codefix { return; } const propertyInitialization = initializePropertyToUndefined(createThis(), tokenName); - changeTracker.insertNodeBefore(classDeclarationSourceFile, classConstructor.body.getLastToken(), propertyInitialization, { suffix: newLineCharacter }); + changeTracker.insertNodeAtConstructorEnd(classDeclarationSourceFile, classConstructor, propertyInitialization); } } @@ -142,13 +142,13 @@ namespace ts.codefix { return typeNode || createKeywordTypeNode(SyntaxKind.AnyKeyword); } - function createAddPropertyDeclarationAction(context: CodeFixContext, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, makeStatic: boolean, tokenName: string, typeNode: TypeNode): CodeFixAction { + function createAddPropertyDeclarationAction(context: textChanges.TextChangesContext, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, makeStatic: boolean, tokenName: string, typeNode: TypeNode): CodeFixAction { const description = formatStringFromArgs(getLocaleSpecificMessage(makeStatic ? Diagnostics.Declare_static_property_0 : Diagnostics.Declare_property_0), [tokenName]); - const changes = textChanges.ChangeTracker.with(context, t => addPropertyDeclaration(t, classDeclarationSourceFile, classDeclaration, tokenName, typeNode, makeStatic, context.newLineCharacter)); + const changes = textChanges.ChangeTracker.with(context, t => addPropertyDeclaration(t, classDeclarationSourceFile, classDeclaration, tokenName, typeNode, makeStatic)); return { description, changes, fixId }; } - function addPropertyDeclaration(changeTracker: textChanges.ChangeTracker, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, tokenName: string, typeNode: TypeNode, makeStatic: boolean, newLineCharacter: string): void { + function addPropertyDeclaration(changeTracker: textChanges.ChangeTracker, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, tokenName: string, typeNode: TypeNode, makeStatic: boolean): void { const property = createProperty( /*decorators*/ undefined, /*modifiers*/ makeStatic ? [createToken(SyntaxKind.StaticKeyword)] : undefined, @@ -156,10 +156,10 @@ namespace ts.codefix { /*questionToken*/ undefined, typeNode, /*initializer*/ undefined); - changeTracker.insertNodeAtClassStart(classDeclarationSourceFile, classDeclaration, property, newLineCharacter); + changeTracker.insertNodeAtClassStart(classDeclarationSourceFile, classDeclaration, property); } - function createAddIndexSignatureAction(context: CodeFixContext, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, tokenName: string, typeNode: TypeNode): CodeFixAction { + function createAddIndexSignatureAction(context: textChanges.TextChangesContext, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, tokenName: string, typeNode: TypeNode): CodeFixAction { // Index signatures cannot have the static modifier. const stringTypeNode = createKeywordTypeNode(SyntaxKind.StringKeyword); const indexingParameter = createParameter( @@ -176,19 +176,19 @@ namespace ts.codefix { [indexingParameter], typeNode); - const changes = textChanges.ChangeTracker.with(context, t => t.insertNodeAtClassStart(classDeclarationSourceFile, classDeclaration, indexSignature, context.newLineCharacter)); + const changes = textChanges.ChangeTracker.with(context, t => t.insertNodeAtClassStart(classDeclarationSourceFile, classDeclaration, indexSignature)); // No fixId here because code-fix-all currently only works on adding individual named properties. return { description: formatStringFromArgs(getLocaleSpecificMessage(Diagnostics.Add_index_signature_for_property_0), [tokenName]), changes, fixId: undefined }; } - function getActionForMethodDeclaration(context: CodeFixContext, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, token: Identifier, callExpression: CallExpression, makeStatic: boolean, inJs: boolean): CodeFixAction | undefined { + function getActionForMethodDeclaration(context: textChanges.TextChangesContext, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, token: Identifier, callExpression: CallExpression, makeStatic: boolean, inJs: boolean): CodeFixAction | undefined { const description = formatStringFromArgs(getLocaleSpecificMessage(makeStatic ? Diagnostics.Declare_static_method_0 : Diagnostics.Declare_method_0), [token.text]); - const changes = textChanges.ChangeTracker.with(context, t => addMethodDeclaration(t, classDeclarationSourceFile, classDeclaration, token, callExpression, context.newLineCharacter, makeStatic, inJs)); + const changes = textChanges.ChangeTracker.with(context, t => addMethodDeclaration(t, classDeclarationSourceFile, classDeclaration, token, callExpression, makeStatic, inJs)); return { description, changes, fixId }; } - function addMethodDeclaration(changeTracker: textChanges.ChangeTracker, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, token: Identifier, callExpression: CallExpression, newLineCharacter: string, makeStatic: boolean, inJs: boolean) { + function addMethodDeclaration(changeTracker: textChanges.ChangeTracker, classDeclarationSourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, token: Identifier, callExpression: CallExpression, makeStatic: boolean, inJs: boolean) { const methodDeclaration = createMethodFromCallExpression(callExpression, token.text, inJs, makeStatic); - changeTracker.insertNodeAtClassStart(classDeclarationSourceFile, classDeclaration, methodDeclaration, newLineCharacter); + changeTracker.insertNodeAtClassStart(classDeclarationSourceFile, classDeclaration, methodDeclaration); } } diff --git a/src/services/codefixes/fixClassDoesntImplementInheritedAbstractMember.ts b/src/services/codefixes/fixClassDoesntImplementInheritedAbstractMember.ts index 754735a9d63..da3685339ab 100644 --- a/src/services/codefixes/fixClassDoesntImplementInheritedAbstractMember.ts +++ b/src/services/codefixes/fixClassDoesntImplementInheritedAbstractMember.ts @@ -10,12 +10,12 @@ namespace ts.codefix { getCodeActions(context) { const { program, sourceFile, span } = context; const changes = textChanges.ChangeTracker.with(context, t => - addMissingMembers(getClass(sourceFile, span.start), sourceFile, program.getTypeChecker(), context.newLineCharacter, t)); + addMissingMembers(getClass(sourceFile, span.start), sourceFile, program.getTypeChecker(), t)); return changes.length === 0 ? undefined : [{ description: getLocaleSpecificMessage(Diagnostics.Implement_inherited_abstract_class), changes, fixId }]; }, fixIds: [fixId], getAllCodeActions: context => codeFixAll(context, errorCodes, (changes, diag) => { - addMissingMembers(getClass(diag.file!, diag.start!), context.sourceFile, context.program.getTypeChecker(), context.newLineCharacter, changes); + addMissingMembers(getClass(diag.file!, diag.start!), context.sourceFile, context.program.getTypeChecker(), changes); }), }); @@ -28,7 +28,7 @@ namespace ts.codefix { return classDeclaration as ClassLikeDeclaration; } - function addMissingMembers(classDeclaration: ClassLikeDeclaration, sourceFile: SourceFile, checker: TypeChecker, newLineCharacter: string, changeTracker: textChanges.ChangeTracker): void { + function addMissingMembers(classDeclaration: ClassLikeDeclaration, sourceFile: SourceFile, checker: TypeChecker, changeTracker: textChanges.ChangeTracker): void { const extendsNode = getClassExtendsHeritageClauseElement(classDeclaration); const instantiatedExtendsType = checker.getTypeAtLocation(extendsNode); @@ -36,7 +36,7 @@ namespace ts.codefix { // so duplicates cannot occur. const abstractAndNonPrivateExtendsSymbols = checker.getPropertiesOfType(instantiatedExtendsType).filter(symbolPointsToNonPrivateAndAbstractMember); - createMissingMemberNodes(classDeclaration, abstractAndNonPrivateExtendsSymbols, checker, member => changeTracker.insertNodeAtClassStart(sourceFile, classDeclaration, member, newLineCharacter)); + createMissingMemberNodes(classDeclaration, abstractAndNonPrivateExtendsSymbols, checker, member => changeTracker.insertNodeAtClassStart(sourceFile, classDeclaration, member)); } function symbolPointsToNonPrivateAndAbstractMember(symbol: Symbol): boolean { diff --git a/src/services/codefixes/fixClassIncorrectlyImplementsInterface.ts b/src/services/codefixes/fixClassIncorrectlyImplementsInterface.ts index 7076f7da344..f7d5a4b9342 100644 --- a/src/services/codefixes/fixClassIncorrectlyImplementsInterface.ts +++ b/src/services/codefixes/fixClassIncorrectlyImplementsInterface.ts @@ -5,11 +5,11 @@ namespace ts.codefix { registerCodeFix({ errorCodes, getCodeActions(context) { - const { newLineCharacter, program, sourceFile, span } = context; + const { program, sourceFile, span } = context; const classDeclaration = getClass(sourceFile, span.start); const checker = program.getTypeChecker(); return mapDefined(getClassImplementsHeritageClauseElements(classDeclaration), implementedTypeNode => { - const changes = textChanges.ChangeTracker.with(context, t => addMissingDeclarations(checker, implementedTypeNode, sourceFile, classDeclaration, newLineCharacter, t)); + const changes = textChanges.ChangeTracker.with(context, t => addMissingDeclarations(checker, implementedTypeNode, sourceFile, classDeclaration, t)); if (changes.length === 0) return undefined; const description = formatStringFromArgs(getLocaleSpecificMessage(Diagnostics.Implement_interface_0), [implementedTypeNode.getText()]); return { description, changes, fixId }; @@ -22,7 +22,7 @@ namespace ts.codefix { const classDeclaration = getClass(diag.file!, diag.start!); if (addToSeen(seenClassDeclarations, getNodeId(classDeclaration))) { for (const implementedTypeNode of getClassImplementsHeritageClauseElements(classDeclaration)) { - addMissingDeclarations(context.program.getTypeChecker(), implementedTypeNode, diag.file!, classDeclaration, context.newLineCharacter, changes); + addMissingDeclarations(context.program.getTypeChecker(), implementedTypeNode, diag.file!, classDeclaration, changes); } } }); @@ -40,7 +40,6 @@ namespace ts.codefix { implementedTypeNode: ExpressionWithTypeArguments, sourceFile: SourceFile, classDeclaration: ClassLikeDeclaration, - newLineCharacter: string, changeTracker: textChanges.ChangeTracker ): void { // Note that this is ultimately derived from a map indexed by symbol names, @@ -58,12 +57,12 @@ namespace ts.codefix { createMissingIndexSignatureDeclaration(implementedType, IndexKind.String); } - createMissingMemberNodes(classDeclaration, nonPrivateMembers, checker, member => changeTracker.insertNodeAtClassStart(sourceFile, classDeclaration, member, newLineCharacter)); + createMissingMemberNodes(classDeclaration, nonPrivateMembers, checker, member => changeTracker.insertNodeAtClassStart(sourceFile, classDeclaration, member)); function createMissingIndexSignatureDeclaration(type: InterfaceType, kind: IndexKind): void { const indexInfoOfKind = checker.getIndexInfoOfType(type, kind); if (indexInfoOfKind) { - changeTracker.insertNodeAtClassStart(sourceFile, classDeclaration, checker.indexInfoToIndexSignatureDeclaration(indexInfoOfKind, kind, classDeclaration), newLineCharacter); + changeTracker.insertNodeAtClassStart(sourceFile, classDeclaration, checker.indexInfoToIndexSignatureDeclaration(indexInfoOfKind, kind, classDeclaration)); } } } diff --git a/src/services/codefixes/fixClassSuperMustPrecedeThisAccess.ts b/src/services/codefixes/fixClassSuperMustPrecedeThisAccess.ts index 9b67c3469cf..1595bbf3c13 100644 --- a/src/services/codefixes/fixClassSuperMustPrecedeThisAccess.ts +++ b/src/services/codefixes/fixClassSuperMustPrecedeThisAccess.ts @@ -5,30 +5,30 @@ namespace ts.codefix { registerCodeFix({ errorCodes, getCodeActions(context) { - const { sourceFile } = context; - const nodes = getNodes(sourceFile, context.span.start); + const { sourceFile, span } = context; + const nodes = getNodes(sourceFile, span.start); if (!nodes) return undefined; const { constructor, superCall } = nodes; - const changes = textChanges.ChangeTracker.with(context, t => doChange(t, sourceFile, constructor, superCall, context.newLineCharacter)); + const changes = textChanges.ChangeTracker.with(context, t => doChange(t, sourceFile, constructor, superCall)); return [{ description: getLocaleSpecificMessage(Diagnostics.Make_super_call_the_first_statement_in_the_constructor), changes, fixId }]; }, fixIds: [fixId], getAllCodeActions(context) { - const { newLineCharacter, sourceFile } = context; + const { sourceFile } = context; const seenClasses = createMap(); // Ensure we only do this once per class. return codeFixAll(context, errorCodes, (changes, diag) => { const nodes = getNodes(diag.file!, diag.start!); if (!nodes) return; const { constructor, superCall } = nodes; if (addToSeen(seenClasses, getNodeId(constructor.parent))) { - doChange(changes, sourceFile, constructor, superCall, newLineCharacter); + doChange(changes, sourceFile, constructor, superCall); } }); }, }); - function doChange(changes: textChanges.ChangeTracker, sourceFile: SourceFile, constructor: ConstructorDeclaration, superCall: ExpressionStatement, newLineCharacter: string): void { - changes.insertNodeAtConstructorStart(sourceFile, constructor, superCall, newLineCharacter); + function doChange(changes: textChanges.ChangeTracker, sourceFile: SourceFile, constructor: ConstructorDeclaration, superCall: ExpressionStatement): void { + changes.insertNodeAtConstructorStart(sourceFile, constructor, superCall); changes.deleteNode(sourceFile, superCall); } diff --git a/src/services/codefixes/fixConstructorForDerivedNeedSuperCall.ts b/src/services/codefixes/fixConstructorForDerivedNeedSuperCall.ts index 4c5b24fb0ec..8fe2e8458a8 100644 --- a/src/services/codefixes/fixConstructorForDerivedNeedSuperCall.ts +++ b/src/services/codefixes/fixConstructorForDerivedNeedSuperCall.ts @@ -5,14 +5,14 @@ namespace ts.codefix { registerCodeFix({ errorCodes, getCodeActions(context) { - const { sourceFile } = context; - const ctr = getNode(sourceFile, context.span.start); - const changes = textChanges.ChangeTracker.with(context, t => doChange(t, sourceFile, ctr, context.newLineCharacter)); + const { sourceFile, span } = context; + const ctr = getNode(sourceFile, span.start); + const changes = textChanges.ChangeTracker.with(context, t => doChange(t, sourceFile, ctr)); return [{ description: getLocaleSpecificMessage(Diagnostics.Add_missing_super_call), changes, fixId }]; }, fixIds: [fixId], getAllCodeActions: context => codeFixAll(context, errorCodes, (changes, diag) => - doChange(changes, context.sourceFile, getNode(diag.file, diag.start!), context.newLineCharacter)), + doChange(changes, context.sourceFile, getNode(diag.file, diag.start!))), }); function getNode(sourceFile: SourceFile, pos: number): ConstructorDeclaration { @@ -21,8 +21,8 @@ namespace ts.codefix { return token.parent as ConstructorDeclaration; } - function doChange(changes: textChanges.ChangeTracker, sourceFile: SourceFile, ctr: ConstructorDeclaration, newLineCharacter: string) { + function doChange(changes: textChanges.ChangeTracker, sourceFile: SourceFile, ctr: ConstructorDeclaration) { const superCall = createStatement(createCall(createSuper(), /*typeArguments*/ undefined, /*argumentsArray*/ emptyArray)); - changes.insertNodeAtConstructorStart(sourceFile, ctr, superCall, newLineCharacter); + changes.insertNodeAtConstructorStart(sourceFile, ctr, superCall); } } diff --git a/src/services/codefixes/importFixes.ts b/src/services/codefixes/importFixes.ts index 05a92edf12a..0dd7cf2ca25 100644 --- a/src/services/codefixes/importFixes.ts +++ b/src/services/codefixes/importFixes.ts @@ -257,7 +257,7 @@ namespace ts.codefix { } function getCodeActionForNewImport(context: SymbolContext & { kind: ImportKind }, moduleSpecifier: string): ImportCodeAction { - const { kind, sourceFile, newLineCharacter, symbolName } = context; + const { kind, sourceFile, symbolName } = context; const lastImportDeclaration = findLast(sourceFile.statements, isAnyImportSyntax); const moduleSpecifierWithoutQuotes = stripQuotes(moduleSpecifier); @@ -276,10 +276,10 @@ namespace ts.codefix { const changes = ChangeTracker.with(context, changeTracker => { if (lastImportDeclaration) { - changeTracker.insertNodeAfter(sourceFile, lastImportDeclaration, importDecl, { suffix: newLineCharacter }); + changeTracker.insertNodeAfter(sourceFile, lastImportDeclaration, importDecl); } else { - changeTracker.insertNodeAt(sourceFile, getSourceFileImportLocation(sourceFile), importDecl, { suffix: `${newLineCharacter}${newLineCharacter}` }); + changeTracker.insertNodeAtTopOfFile(sourceFile, importDecl); } }); diff --git a/src/services/refactors/convertFunctionToEs6Class.ts b/src/services/refactors/convertFunctionToEs6Class.ts index b66d14ee449..cddf40ae017 100644 --- a/src/services/refactors/convertFunctionToEs6Class.ts +++ b/src/services/refactors/convertFunctionToEs6Class.ts @@ -50,7 +50,6 @@ namespace ts.refactor.convertFunctionToES6Class { const { file: sourceFile } = context; const ctorSymbol = getConstructorSymbol(context); - const newLine = context.formatContext.options.newLineCharacter; const deletedNodes: Node[] = []; const deletes: (() => any)[] = []; @@ -88,7 +87,7 @@ namespace ts.refactor.convertFunctionToES6Class { } // Because the preceding node could be touched, we need to insert nodes before delete nodes. - changeTracker.insertNodeAfter(sourceFile, precedingNode, newClassDeclaration, { suffix: newLine }); + changeTracker.insertNodeAfter(sourceFile, precedingNode, newClassDeclaration); for (const deleteCallback of deletes) { deleteCallback(); } diff --git a/src/services/refactors/extractSymbol.ts b/src/services/refactors/extractSymbol.ts index d2e97c80813..b3c671f93c1 100644 --- a/src/services/refactors/extractSymbol.ts +++ b/src/services/refactors/extractSymbol.ts @@ -810,13 +810,10 @@ namespace ts.refactor.extractSymbol { const minInsertionPos = (isReadonlyArray(range.range) ? last(range.range) : range.range).end; const nodeToInsertBefore = getNodeToInsertFunctionBefore(minInsertionPos, scope); if (nodeToInsertBefore) { - changeTracker.insertNodeBefore(context.file, nodeToInsertBefore, newFunction, { suffix: context.newLineCharacter + context.newLineCharacter }); + changeTracker.insertNodeBefore(context.file, nodeToInsertBefore, newFunction, /*blankLineBetween*/ true); } else { - changeTracker.insertNodeBefore(context.file, scope.getLastToken(), newFunction, { - prefix: isLineBreak(file.text.charCodeAt(scope.getLastToken().pos)) ? context.newLineCharacter : context.newLineCharacter + context.newLineCharacter, - suffix: context.newLineCharacter - }); + changeTracker.insertNodeAtEndOfScope(context.file, scope, newFunction); } const newNodes: Node[] = []; @@ -959,10 +956,12 @@ namespace ts.refactor.extractSymbol { } } - const replacementRange = isReadonlyArray(range.range) - ? { pos: first(range.range).getStart(), end: last(range.range).end } - : { pos: range.range.getStart(), end: range.range.end }; - changeTracker.replaceRangeWithNodes(context.file, replacementRange, newNodes, { nodeSeparator: context.newLineCharacter }); + if (isReadonlyArray(range.range)) { + changeTracker.replaceNodesWithNodes(context.file, range.range, newNodes); + } + else { + changeTracker.replaceNodeWithNodes(context.file, range.range, newNodes); + } const edits = changeTracker.getChanges(); const renameRange = isReadonlyArray(range.range) ? first(range.range) : range.range; @@ -1040,7 +1039,7 @@ namespace ts.refactor.extractSymbol { // Declare const maxInsertionPos = node.pos; const nodeToInsertBefore = getNodeToInsertPropertyBefore(maxInsertionPos, scope); - changeTracker.insertNodeBefore(context.file, nodeToInsertBefore, newVariable, { suffix: context.newLineCharacter + context.newLineCharacter }); + changeTracker.insertNodeBefore(context.file, nodeToInsertBefore, newVariable, /*blankLineBetween*/ true); // Consume changeTracker.replaceRange(context.file, { pos: node.getStart(), end: node.end }, localReference); @@ -1055,8 +1054,8 @@ namespace ts.refactor.extractSymbol { const oldVariableDeclaration = getContainingVariableDeclarationIfInList(node, scope); if (oldVariableDeclaration) { // Declare - // CONSIDER: could detect that each is on a separate line - changeTracker.insertNodeAt(context.file, oldVariableDeclaration.getStart(), newVariableDeclaration, { suffix: ", " }); + // CONSIDER: could detect that each is on a separate line (See `extractConstant_VariableList_MultipleLines` in `extractConstants.ts`) + changeTracker.insertNodeBefore(context.file, oldVariableDeclaration, newVariableDeclaration); // Consume const localReference = createIdentifier(localNameText); @@ -1078,17 +1077,10 @@ namespace ts.refactor.extractSymbol { // Declare const nodeToInsertBefore = getNodeToInsertConstantBefore(node, scope); if (nodeToInsertBefore.pos === 0) { - // If we're at the beginning of the file, we need to take care not to insert before header comments - // (e.g. copyright, triple-slash references). Fortunately, this problem has already been solved - // for imports. - const insertionPos = getSourceFileImportLocation(file); - changeTracker.insertNodeAt(context.file, insertionPos, newVariableStatement, { - prefix: insertionPos === 0 ? undefined : context.newLineCharacter, - suffix: isLineBreak(file.text.charCodeAt(insertionPos)) ? context.newLineCharacter : context.newLineCharacter + context.newLineCharacter - }); + changeTracker.insertNodeAtTopOfFile(context.file, newVariableStatement); } else { - changeTracker.insertNodeBefore(context.file, nodeToInsertBefore, newVariableStatement, { suffix: context.newLineCharacter + context.newLineCharacter }); + changeTracker.insertNodeBefore(context.file, nodeToInsertBefore, newVariableStatement, /*blankLineBetween*/ true); } // Consume @@ -1285,12 +1277,12 @@ namespace ts.refactor.extractSymbol { * If `scope` contains a function after `minPos`, then return the first such function. * Otherwise, return `undefined`. */ - function getNodeToInsertFunctionBefore(minPos: number, scope: Scope): Node | undefined { + function getNodeToInsertFunctionBefore(minPos: number, scope: Scope): Statement | ClassElement | undefined { return find(getStatementsOrClassElements(scope), child => child.pos >= minPos && isFunctionLikeDeclaration(child) && !isConstructorDeclaration(child)); } - function getNodeToInsertPropertyBefore(maxPos: number, scope: ClassLikeDeclaration): Node { + function getNodeToInsertPropertyBefore(maxPos: number, scope: ClassLikeDeclaration): ClassElement { const members = scope.members; Debug.assert(members.length > 0); // There must be at least one child, since we extracted from one. @@ -1316,7 +1308,7 @@ namespace ts.refactor.extractSymbol { return prevMember; } - function getNodeToInsertConstantBefore(node: Node, scope: Scope): Node { + function getNodeToInsertConstantBefore(node: Node, scope: Scope): Statement { Debug.assert(!isClassLike(scope)); let prevScope: Scope | undefined = undefined; diff --git a/src/services/textChanges.ts b/src/services/textChanges.ts index ee4b9091565..d9c592488e2 100644 --- a/src/services/textChanges.ts +++ b/src/services/textChanges.ts @@ -117,7 +117,7 @@ namespace ts.textChanges { readonly options?: never; } - export interface ChangeMultipleNodesOptions extends ChangeNodeOptions { + interface ChangeMultipleNodesOptions extends ChangeNodeOptions { nodeSeparator: string; } interface ReplaceWithMultipleNodes extends BaseChange { @@ -192,7 +192,7 @@ namespace ts.textChanges { } export class ChangeTracker { - private changes: Change[] = []; + private readonly changes: Change[] = []; private readonly newLineCharacter: string; private readonly deletedNodesInLists: true[] = []; // Stores ids of nodes in lists that we already deleted. Used to avoid deleting `, ` twice in `a, b`. // Map from class id to nodes to insert at the start @@ -319,49 +319,75 @@ namespace ts.textChanges { return this; } - public replaceNodeWithNodes(sourceFile: SourceFile, oldNode: Node, newNodes: ReadonlyArray, options: ChangeMultipleNodesOptions) { - const startPosition = getAdjustedStartPosition(sourceFile, oldNode, options, Position.Start); - const endPosition = getAdjustedEndPosition(sourceFile, oldNode, options); - return this.replaceWithMultiple(sourceFile, startPosition, endPosition, newNodes, options); + public replaceNodeWithNodes(sourceFile: SourceFile, oldNode: Node, newNodes: ReadonlyArray): void { + this.replaceWithMultiple(sourceFile, oldNode.getStart(sourceFile), oldNode.getEnd(), newNodes, { nodeSeparator: this.newLineCharacter }); } - public replaceNodesWithNodes(sourceFile: SourceFile, oldNodes: ReadonlyArray, newNodes: ReadonlyArray, options: ChangeMultipleNodesOptions) { - const startPosition = getAdjustedStartPosition(sourceFile, oldNodes[0], options, Position.Start); - const endPosition = getAdjustedEndPosition(sourceFile, lastOrUndefined(oldNodes), options); - return this.replaceWithMultiple(sourceFile, startPosition, endPosition, newNodes, options); + public replaceNodesWithNodes(sourceFile: SourceFile, oldNodes: ReadonlyArray, newNodes: ReadonlyArray): void { + this.replaceWithMultiple(sourceFile, first(oldNodes).getStart(sourceFile), last(oldNodes).getEnd(), newNodes, { nodeSeparator: this.newLineCharacter }); } - public replaceRangeWithNodes(sourceFile: SourceFile, range: TextRange, newNodes: ReadonlyArray, options: ChangeMultipleNodesOptions) { - return this.replaceWithMultiple(sourceFile, range.pos, range.end, newNodes, options); - } - - public replaceNodeRangeWithNodes(sourceFile: SourceFile, startNode: Node, endNode: Node, newNodes: ReadonlyArray, options: ChangeMultipleNodesOptions) { - const startPosition = getAdjustedStartPosition(sourceFile, startNode, options, Position.Start); - const endPosition = getAdjustedEndPosition(sourceFile, endNode, options); - return this.replaceWithMultiple(sourceFile, startPosition, endPosition, newNodes, options); - } - - public insertNodeAt(sourceFile: SourceFile, pos: number, newNode: Node, options: InsertNodeOptions = {}) { + private insertNodeAt(sourceFile: SourceFile, pos: number, newNode: Node, options: InsertNodeOptions = {}) { this.changes.push({ kind: ChangeKind.ReplaceWithSingleNode, sourceFile, options, node: newNode, range: { pos, end: pos } }); return this; } - public insertNodeBefore(sourceFile: SourceFile, before: Node, newNode: Node, options: InsertNodeOptions & ConfigurableStart = {}) { - const startPosition = getAdjustedStartPosition(sourceFile, before, options, Position.Start); - return this.replaceWithSingle(sourceFile, startPosition, startPosition, newNode, options); + public insertNodeAtTopOfFile(sourceFile: SourceFile, newNode: Statement): void { + const pos = getInsertionPositionAtSourceFileTop(sourceFile); + this.insertNodeAt(sourceFile, pos, newNode, { + prefix: pos === 0 ? undefined : this.newLineCharacter, + suffix: isLineBreak(sourceFile.text.charCodeAt(pos)) ? this.newLineCharacter : this.newLineCharacter + this.newLineCharacter, + }); } - public insertNodeAtConstructorStart(sourceFile: SourceFile, ctr: ConstructorDeclaration, newStatement: Statement, newLineCharacter: string): void { + public insertNodeBefore(sourceFile: SourceFile, before: Node, newNode: Node, blankLineBetween = false) { + const startPosition = getAdjustedStartPosition(sourceFile, before, {}, Position.Start); + return this.replaceWithSingle(sourceFile, startPosition, startPosition, newNode, this.getOptionsForInsertNodeBefore(before, blankLineBetween)); + } + + private getOptionsForInsertNodeBefore(before: Node, doubleNewlines: boolean): ChangeNodeOptions { + if (isStatement(before) || isClassElement(before)) { + return { suffix: doubleNewlines ? this.newLineCharacter + this.newLineCharacter : this.newLineCharacter }; + } + else if (isVariableDeclaration(before)) { // insert `x = 1, ` into `const x = 1, y = 2; + return { suffix: ", " }; + } + throw Debug.failBadSyntaxKind(before); // We haven't handled this kind of node yet -- add it + } + + public insertNodeAtConstructorStart(sourceFile: SourceFile, ctr: ConstructorDeclaration, newStatement: Statement): void { const firstStatement = firstOrUndefined(ctr.body.statements); if (!firstStatement || !ctr.body.multiLine) { - this.replaceNode(sourceFile, ctr.body, createBlock([newStatement, ...ctr.body.statements], /*multiLine*/ true), { useNonAdjustedEndPosition: true }); + this.replaceConstructorBody(sourceFile, ctr, [newStatement, ...ctr.body.statements]); } else { - this.insertNodeBefore(sourceFile, firstStatement, newStatement, { suffix: newLineCharacter }); + this.insertNodeBefore(sourceFile, firstStatement, newStatement); } } - public insertNodeAtClassStart(sourceFile: SourceFile, cls: ClassLikeDeclaration, newElement: ClassElement, newLineCharacter: string): void { + public insertNodeAtConstructorEnd(sourceFile: SourceFile, ctr: ConstructorDeclaration, newStatement: Statement): void { + const lastStatement = lastOrUndefined(ctr.body.statements); + if (!lastStatement || !ctr.body.multiLine) { + this.replaceConstructorBody(sourceFile, ctr, [...ctr.body.statements, newStatement]); + } + else { + this.insertNodeAfter(sourceFile, lastStatement, newStatement); + } + } + + private replaceConstructorBody(sourceFile: SourceFile, ctr: ConstructorDeclaration, statements: ReadonlyArray): void { + this.replaceNode(sourceFile, ctr.body, createBlock(statements, /*multiLine*/ true), { useNonAdjustedEndPosition: true }); + } + + public insertNodeAtEndOfScope(sourceFile: SourceFile, scope: Node, newNode: Node): void { + const startPosition = getAdjustedStartPosition(sourceFile, scope.getLastToken(), {}, Position.Start); + this.replaceWithSingle(sourceFile, startPosition, startPosition, newNode, { + prefix: isLineBreak(sourceFile.text.charCodeAt(scope.getLastToken().pos)) ? this.newLineCharacter : this.newLineCharacter + this.newLineCharacter, + suffix: this.newLineCharacter + }); + } + + public insertNodeAtClassStart(sourceFile: SourceFile, cls: ClassLikeDeclaration, newElement: ClassElement): void { const firstMember = firstOrUndefined(cls.members); if (!firstMember) { const id = getNodeId(cls).toString(); @@ -375,11 +401,11 @@ namespace ts.textChanges { } } else { - this.insertNodeBefore(sourceFile, firstMember, newElement, { suffix: newLineCharacter }); + this.insertNodeBefore(sourceFile, firstMember, newElement); } } - public insertNodeAfter(sourceFile: SourceFile, after: Node, newNode: Node, options: InsertNodeOptions & ConfigurableEnd = {}): this { + public insertNodeAfter(sourceFile: SourceFile, after: Node, newNode: Node): this { if (isStatementButNotDeclaration(after) || after.kind === SyntaxKind.PropertyDeclaration || after.kind === SyntaxKind.PropertySignature || @@ -396,8 +422,21 @@ namespace ts.textChanges { }); } } - const endPosition = getAdjustedEndPosition(sourceFile, after, options); - return this.replaceWithSingle(sourceFile, endPosition, endPosition, newNode, options); + const endPosition = getAdjustedEndPosition(sourceFile, after, {}); + return this.replaceWithSingle(sourceFile, endPosition, endPosition, newNode, this.getInsertNodeAfterOptions(after)); + } + + private getInsertNodeAfterOptions(node: Node): InsertNodeOptions { + if (isClassDeclaration(node) || isModuleDeclaration(node)) { + return { prefix: this.newLineCharacter, suffix: this.newLineCharacter }; + } + else if (isStatement(node) || isClassElement(node) || isTypeElement(node)) { + return { suffix: this.newLineCharacter }; + } + else if (isVariableDeclaration(node)) { + return { prefix: ", " }; + } + throw Debug.failBadSyntaxKind(node); // We haven't handled this kind of node yet -- add it } /** @@ -804,4 +843,46 @@ namespace ts.textChanges { this.lastNonTriviaPosition = 0; } } + + function getInsertionPositionAtSourceFileTop({ text }: SourceFile): number { + const shebang = getShebang(text); + let position = 0; + if (shebang !== undefined) { + position = shebang.length; + advancePastLineBreak(); + } + + // For a source file, it is possible there are detached comments we should not skip + let ranges = getLeadingCommentRanges(text, position); + if (!ranges) return position; + // However we should still skip a pinned comment at the top + if (ranges.length && ranges[0].kind === SyntaxKind.MultiLineCommentTrivia && isPinnedComment(text, ranges[0])) { + position = ranges[0].end; + advancePastLineBreak(); + ranges = ranges.slice(1); + } + // As well as any triple slash references + for (const range of ranges) { + if (range.kind === SyntaxKind.SingleLineCommentTrivia && isRecognizedTripleSlashComment(text, range.pos, range.end)) { + position = range.end; + advancePastLineBreak(); + continue; + } + break; + } + return position; + + function advancePastLineBreak() { + if (position < text.length) { + const charCode = text.charCodeAt(position); + if (isLineBreak(charCode)) { + position++; + + if (position < text.length && charCode === CharacterCodes.carriageReturn && text.charCodeAt(position) === CharacterCodes.lineFeed) { + position++; + } + } + } + } + } } diff --git a/src/services/utilities.ts b/src/services/utilities.ts index af5ad0c1033..140873dc06d 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -1332,48 +1332,6 @@ namespace ts { return position; } - export function getSourceFileImportLocation({ text }: SourceFile) { - const shebang = getShebang(text); - let position = 0; - if (shebang !== undefined) { - position = shebang.length; - advancePastLineBreak(); - } - - // For a source file, it is possible there are detached comments we should not skip - let ranges = getLeadingCommentRanges(text, position); - if (!ranges) return position; - // However we should still skip a pinned comment at the top - if (ranges.length && ranges[0].kind === SyntaxKind.MultiLineCommentTrivia && isPinnedComment(text, ranges[0])) { - position = ranges[0].end; - advancePastLineBreak(); - ranges = ranges.slice(1); - } - // As well as any triple slash references - for (const range of ranges) { - if (range.kind === SyntaxKind.SingleLineCommentTrivia && isRecognizedTripleSlashComment(text, range.pos, range.end)) { - position = range.end; - advancePastLineBreak(); - continue; - } - break; - } - return position; - - function advancePastLineBreak() { - if (position < text.length) { - const charCode = text.charCodeAt(position); - if (isLineBreak(charCode)) { - position++; - - if (position < text.length && charCode === CharacterCodes.carriageReturn && text.charCodeAt(position) === CharacterCodes.lineFeed) { - position++; - } - } - } - } - } - /** * Creates a deep, memberwise clone of a node with no source map location. * diff --git a/tests/baselines/reference/extractConstant/extractConstant_VariableList_MultipleLines.js b/tests/baselines/reference/extractConstant/extractConstant_VariableList_MultipleLines.js index 7112dc6313d..70229e77c25 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_VariableList_MultipleLines.js +++ b/tests/baselines/reference/extractConstant/extractConstant_VariableList_MultipleLines.js @@ -3,4 +3,4 @@ const /*About A*/a = 1, /*About B*/b = /*[#|*/a + 1/*|]*/; // ==SCOPE::Extract to constant in enclosing scope== const /*About A*/a = 1, - /*About B*/newLocal = a + 1, b = /*RENAME*/newLocal; \ No newline at end of file + newLocal = a + 1, /*About B*/b = /*RENAME*/newLocal; \ No newline at end of file diff --git a/tests/baselines/reference/extractConstant/extractConstant_VariableList_MultipleLines.ts b/tests/baselines/reference/extractConstant/extractConstant_VariableList_MultipleLines.ts index 7112dc6313d..70229e77c25 100644 --- a/tests/baselines/reference/extractConstant/extractConstant_VariableList_MultipleLines.ts +++ b/tests/baselines/reference/extractConstant/extractConstant_VariableList_MultipleLines.ts @@ -3,4 +3,4 @@ const /*About A*/a = 1, /*About B*/b = /*[#|*/a + 1/*|]*/; // ==SCOPE::Extract to constant in enclosing scope== const /*About A*/a = 1, - /*About B*/newLocal = a + 1, b = /*RENAME*/newLocal; \ No newline at end of file + newLocal = a + 1, /*About B*/b = /*RENAME*/newLocal; \ No newline at end of file diff --git a/tests/baselines/reference/textChanges/insertNodeAfter2.js b/tests/baselines/reference/textChanges/insertNodeAfter2.js index 7c027e35b50..fbd24e2b75e 100644 --- a/tests/baselines/reference/textChanges/insertNodeAfter2.js +++ b/tests/baselines/reference/textChanges/insertNodeAfter2.js @@ -23,4 +23,4 @@ namespace M { public class class1 implements interface1 { property1: boolean; -} \ No newline at end of file +} diff --git a/tests/baselines/reference/textChanges/insertNodeAt2.js b/tests/baselines/reference/textChanges/insertNodeAfterVariableDeclaration.js similarity index 88% rename from tests/baselines/reference/textChanges/insertNodeAt2.js rename to tests/baselines/reference/textChanges/insertNodeAfterVariableDeclaration.js index 81c3e2afc35..3dd0b1882f9 100644 --- a/tests/baselines/reference/textChanges/insertNodeAt2.js +++ b/tests/baselines/reference/textChanges/insertNodeAfterVariableDeclaration.js @@ -12,7 +12,7 @@ var a = 4; // comment 7 // comment 1 var x = 1; // comment 2 // comment 3 -var yz1 = { +var y, z1 = { p1: 1 }; // comment 4 var z = 3; // comment 5 diff --git a/tests/baselines/reference/textChanges/insertNodeAfter3-block with newline.js b/tests/baselines/reference/textChanges/insertNodeAtConstructorStart-block with newline.js similarity index 99% rename from tests/baselines/reference/textChanges/insertNodeAfter3-block with newline.js rename to tests/baselines/reference/textChanges/insertNodeAtConstructorStart-block with newline.js index 41bfb72b574..d1b7783769f 100644 --- a/tests/baselines/reference/textChanges/insertNodeAfter3-block with newline.js +++ b/tests/baselines/reference/textChanges/insertNodeAtConstructorStart-block with newline.js @@ -11,6 +11,5 @@ class A { class A { constructor() { super(); - } } diff --git a/tests/baselines/reference/textChanges/insertNodeAfter3.js b/tests/baselines/reference/textChanges/insertNodeAtConstructorStart.js similarity index 100% rename from tests/baselines/reference/textChanges/insertNodeAfter3.js rename to tests/baselines/reference/textChanges/insertNodeAtConstructorStart.js diff --git a/tests/baselines/reference/textChanges/insertNodeAt1.js b/tests/baselines/reference/textChanges/insertNodeBefore3.js similarity index 93% rename from tests/baselines/reference/textChanges/insertNodeAt1.js rename to tests/baselines/reference/textChanges/insertNodeBefore3.js index 9c7ac46f8a8..3fa5eb5d66f 100644 --- a/tests/baselines/reference/textChanges/insertNodeAt1.js +++ b/tests/baselines/reference/textChanges/insertNodeBefore3.js @@ -11,11 +11,11 @@ var a = 4; // comment 7 // comment 1 var x = 1; // comment 2 -// comment 3 public class class1 implements interface1 { property1: boolean; } +// comment 3 var y; // comment 4 var z = 3; // comment 5 // comment 6 diff --git a/tests/cases/fourslash/codeFixAddMissingMember4.ts b/tests/cases/fourslash/codeFixAddMissingMember4.ts index d5525dc5c3b..97a17959d26 100644 --- a/tests/cases/fourslash/codeFixAddMissingMember4.ts +++ b/tests/cases/fourslash/codeFixAddMissingMember4.ts @@ -17,7 +17,7 @@ verify.codeFix({ index: 0, // TODO: GH#18445 newFileContent: `class C { - constructor() { + constructor() {\r this.foo = undefined;\r } method() { diff --git a/tests/cases/fourslash/codeFixAddMissingMember6.ts b/tests/cases/fourslash/codeFixAddMissingMember6.ts index 7eb360ab170..a04a14c9ce5 100644 --- a/tests/cases/fourslash/codeFixAddMissingMember6.ts +++ b/tests/cases/fourslash/codeFixAddMissingMember6.ts @@ -15,7 +15,7 @@ verify.codeFix({ index: 0, // TODO: GH#18445 newFileContent: `class C { - constructor() { + constructor() {\r this.foo = undefined;\r } prop = ()=>{ this.foo === 10 }; diff --git a/tests/cases/fourslash/codeFixAddMissingMember_all_js.ts b/tests/cases/fourslash/codeFixAddMissingMember_all_js.ts index 9c8eb2377e3..1bc0d03c211 100644 --- a/tests/cases/fourslash/codeFixAddMissingMember_all_js.ts +++ b/tests/cases/fourslash/codeFixAddMissingMember_all_js.ts @@ -16,13 +16,14 @@ verify.codeFixAll({ fixId: "addMissingMember", newFileContent: - // TODO: GH#18445 GH#20073 + // TODO: GH#18445 `class C { y() {\r throw new Error("Method not implemented.");\r }\r - constructor() {this.x = undefined;\r -} + constructor() {\r + this.x = undefined;\r + } method() { this.x; this.y(); diff --git a/tests/cases/fourslash/extract-method-uniqueName.ts b/tests/cases/fourslash/extract-method-uniqueName.ts index a02b2c5ec96..ae62f4ba7e7 100644 --- a/tests/cases/fourslash/extract-method-uniqueName.ts +++ b/tests/cases/fourslash/extract-method-uniqueName.ts @@ -3,8 +3,6 @@ ////// newFunction /////*start*/1 + 1/*end*/; -// NOTE: '// newFunction' should be included, but due to incorrect handling of trivia, -// it's omitted right now. goTo.select('start', 'end') edit.applyRefactor({ refactorName: "Extract Symbol", diff --git a/tests/cases/fourslash/importNameCodeFixNewImportAmbient2.ts b/tests/cases/fourslash/importNameCodeFixNewImportAmbient2.ts index 64a8c28b3f8..1e3cd83e793 100644 --- a/tests/cases/fourslash/importNameCodeFixNewImportAmbient2.ts +++ b/tests/cases/fourslash/importNameCodeFixNewImportAmbient2.ts @@ -15,6 +15,7 @@ verify.importFixAtPosition([ `/*! * I'm a license or something */ + import { f1 } from "ambient-module"; f1();` diff --git a/tests/cases/fourslash/importNameCodeFixNewImportFile1.ts b/tests/cases/fourslash/importNameCodeFixNewImportFile1.ts index b98345db9f6..a7c69213ee9 100644 --- a/tests/cases/fourslash/importNameCodeFixNewImportFile1.ts +++ b/tests/cases/fourslash/importNameCodeFixNewImportFile1.ts @@ -12,6 +12,7 @@ verify.importFixAtPosition([ `/// + import { f1 } from "./Module"; f1();` diff --git a/tests/cases/fourslash/importNameCodeFixNewImportFileAllComments.ts b/tests/cases/fourslash/importNameCodeFixNewImportFileAllComments.ts index 9dc914ba693..34cfac99d00 100644 --- a/tests/cases/fourslash/importNameCodeFixNewImportFileAllComments.ts +++ b/tests/cases/fourslash/importNameCodeFixNewImportFileAllComments.ts @@ -24,6 +24,7 @@ verify.importFixAtPosition([ /// /// /// + import { f1 } from "./module"; /** diff --git a/tests/cases/fourslash/importNameCodeFixShebang.ts b/tests/cases/fourslash/importNameCodeFixShebang.ts index 1ef7be11625..f15c8440275 100644 --- a/tests/cases/fourslash/importNameCodeFixShebang.ts +++ b/tests/cases/fourslash/importNameCodeFixShebang.ts @@ -12,6 +12,7 @@ goTo.file("/b.ts"); verify.importFixAtPosition([ `#!/usr/bin/env node + import { foo } from "./a"; foo`, From ef23eb71befd90e8f1f02a81ca2ec5b2e729f995 Mon Sep 17 00:00:00 2001 From: csigs Date: Tue, 12 Dec 2017 23:11:33 +0000 Subject: [PATCH 038/173] LEGO: check in for master to temporary branch. --- .../diagnosticMessages.generated.json.lcl | 116 +++++++++++------- .../diagnosticMessages.generated.json.lcl | 116 +++++++++++------- .../diagnosticMessages.generated.json.lcl | 104 +++++++++------- 3 files changed, 198 insertions(+), 138 deletions(-) diff --git a/src/loc/lcl/esn/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/esn/diagnosticMessages/diagnosticMessages.generated.json.lcl index 1b1ece74cb2..9c479b4388a 100644 --- a/src/loc/lcl/esn/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/esn/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -876,8 +876,8 @@ - - + + @@ -888,8 +888,8 @@ - - + + @@ -900,8 +900,8 @@ - - + + @@ -912,8 +912,8 @@ - - + + @@ -924,6 +924,9 @@ + + + @@ -1554,8 +1557,8 @@ - - + + @@ -1971,8 +1974,8 @@ - - + + @@ -1995,8 +1998,8 @@ - - + + @@ -2373,8 +2376,8 @@ - - + + @@ -2385,8 +2388,8 @@ - - + + @@ -2397,8 +2400,8 @@ - - + + @@ -2409,8 +2412,8 @@ - - + + @@ -2493,8 +2496,8 @@ - - + + @@ -3765,8 +3768,8 @@ - - + + @@ -3789,8 +3792,8 @@ - - + + @@ -3810,8 +3813,8 @@ - - + + @@ -3963,8 +3966,8 @@ - - + + @@ -3975,8 +3978,8 @@ - - + + @@ -3987,8 +3990,8 @@ - - + + @@ -3999,8 +4002,8 @@ - - + + @@ -4536,8 +4539,8 @@ - - + + @@ -4758,6 +4761,12 @@ + + + + + + @@ -4848,6 +4857,12 @@ + + + + + + @@ -5454,8 +5469,8 @@ - - + + @@ -5910,8 +5925,8 @@ - - + + @@ -6339,8 +6354,8 @@ - - + + @@ -6459,6 +6474,9 @@ + + + @@ -6567,6 +6585,9 @@ + + + @@ -7422,6 +7443,9 @@ + + + diff --git a/src/loc/lcl/ptb/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/ptb/diagnosticMessages/diagnosticMessages.generated.json.lcl index 4d32384aa27..21ef70226c9 100644 --- a/src/loc/lcl/ptb/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/ptb/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -857,8 +857,8 @@ - - + + @@ -869,8 +869,8 @@ - - + + @@ -881,8 +881,8 @@ - - + + @@ -893,8 +893,8 @@ - - + + @@ -905,6 +905,9 @@ + + + @@ -1535,8 +1538,8 @@ - - + + @@ -1952,8 +1955,8 @@ - - + + @@ -1976,8 +1979,8 @@ - - + + @@ -2354,8 +2357,8 @@ - - + + @@ -2366,8 +2369,8 @@ - - + + @@ -2378,8 +2381,8 @@ - - + + @@ -2390,8 +2393,8 @@ - - + + @@ -2474,8 +2477,8 @@ - - + + @@ -3746,8 +3749,8 @@ - - + + @@ -3770,8 +3773,8 @@ - - + + @@ -3791,8 +3794,8 @@ - - + + @@ -3944,8 +3947,8 @@ - - + + @@ -3956,8 +3959,8 @@ - - + + @@ -3968,8 +3971,8 @@ - - + + @@ -3980,8 +3983,8 @@ - - + + @@ -4517,8 +4520,8 @@ - - + + @@ -4739,6 +4742,12 @@ + + + + + + @@ -4829,6 +4838,12 @@ + + + + + + @@ -5432,8 +5447,8 @@ - - + + @@ -5888,8 +5903,8 @@ - - + + @@ -6314,8 +6329,8 @@ - - + + @@ -6434,6 +6449,9 @@ + + + @@ -6542,6 +6560,9 @@ + + + @@ -7397,6 +7418,9 @@ + + + diff --git a/src/loc/lcl/rus/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/rus/diagnosticMessages/diagnosticMessages.generated.json.lcl index a3389c54f91..e6f043dcafd 100644 --- a/src/loc/lcl/rus/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/rus/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -866,8 +866,8 @@ - - + + @@ -878,8 +878,8 @@ - - + + @@ -890,8 +890,8 @@ - - + + @@ -902,8 +902,8 @@ - - + + @@ -914,6 +914,9 @@ + + + @@ -1544,8 +1547,8 @@ - - + + @@ -1961,8 +1964,8 @@ - - + + @@ -1985,8 +1988,8 @@ - - + + @@ -2363,8 +2366,8 @@ - - + + @@ -2375,8 +2378,8 @@ - - + + @@ -2387,8 +2390,8 @@ - - + + @@ -2399,8 +2402,8 @@ - - + + @@ -2483,8 +2486,8 @@ - - + + @@ -3755,8 +3758,8 @@ - - + + @@ -3779,8 +3782,8 @@ - - + + @@ -3800,8 +3803,8 @@ - - + + @@ -3953,8 +3956,8 @@ - - + + @@ -3965,8 +3968,8 @@ - - + + @@ -3977,8 +3980,8 @@ - - + + @@ -3989,8 +3992,8 @@ - - + + @@ -4526,8 +4529,8 @@ - - + + @@ -5456,8 +5459,8 @@ - - + + @@ -5912,8 +5915,8 @@ - - + + @@ -6341,8 +6344,8 @@ - - + + @@ -6461,6 +6464,9 @@ + + + @@ -6569,6 +6575,9 @@ + + + @@ -7424,6 +7433,9 @@ + + + From bd3a27ed5219e94cb83401b125aee923d19aaf4d Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Tue, 12 Dec 2017 16:11:37 -0800 Subject: [PATCH 039/173] Clear the module resolution cache when new @types appear --- src/server/editorServices.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index a5b09c6a63f..b147a5c3e92 100644 --- a/src/server/editorServices.ts +++ b/src/server/editorServices.ts @@ -547,9 +547,11 @@ namespace ts.server { } switch (response.kind) { case ActionSet: + project.resolutionCache.clear(); this.typingsCache.updateTypingsForProject(response.projectName, response.compilerOptions, response.typeAcquisition, response.unresolvedImports, response.typings); break; case ActionInvalidate: + project.resolutionCache.clear(); this.typingsCache.deleteTypingsForProject(response.projectName); break; } From 40029a0523d52e9e7fedbe24f11cfa5c643ede14 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 12 Dec 2017 16:32:55 -0800 Subject: [PATCH 040/173] Use TypeFlags.UnionOrIntersection not TypeFlags.Union (#20662) --- src/compiler/checker.ts | 2 +- .../literalIntersectionYieldsLiteral.js | 23 ++++++++++++ .../literalIntersectionYieldsLiteral.symbols | 35 ++++++++++++++++++ .../literalIntersectionYieldsLiteral.types | 37 +++++++++++++++++++ .../literalIntersectionYieldsLiteral.ts | 14 +++++++ 5 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/literalIntersectionYieldsLiteral.js create mode 100644 tests/baselines/reference/literalIntersectionYieldsLiteral.symbols create mode 100644 tests/baselines/reference/literalIntersectionYieldsLiteral.types create mode 100644 tests/cases/compiler/literalIntersectionYieldsLiteral.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 6a1d6b52abb..d4b8c3b8a8c 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -19094,7 +19094,7 @@ namespace ts { function isLiteralOfContextualType(candidateType: Type, contextualType: Type): boolean { if (contextualType) { - if (contextualType.flags & TypeFlags.Union && !(contextualType.flags & TypeFlags.Boolean)) { + if (contextualType.flags & TypeFlags.UnionOrIntersection && !(contextualType.flags & TypeFlags.Boolean)) { // If the contextual type is a union containing both of the 'true' and 'false' types we // don't consider it a literal context for boolean literals. const types = (contextualType).types; diff --git a/tests/baselines/reference/literalIntersectionYieldsLiteral.js b/tests/baselines/reference/literalIntersectionYieldsLiteral.js new file mode 100644 index 00000000000..7781ad9bd39 --- /dev/null +++ b/tests/baselines/reference/literalIntersectionYieldsLiteral.js @@ -0,0 +1,23 @@ +//// [literalIntersectionYieldsLiteral.ts] +export type BaseAttribute = { + type?: string; +} +export type StringAttribute = BaseAttribute & { + type: "string"; +} +export type NumberAttribute = BaseAttribute & { + type: "number"; +} +export type Attribute = StringAttribute | NumberAttribute; + +const foo: Attribute = { + type: "string" +} + + +//// [literalIntersectionYieldsLiteral.js] +"use strict"; +exports.__esModule = true; +var foo = { + type: "string" +}; diff --git a/tests/baselines/reference/literalIntersectionYieldsLiteral.symbols b/tests/baselines/reference/literalIntersectionYieldsLiteral.symbols new file mode 100644 index 00000000000..2b2c2072705 --- /dev/null +++ b/tests/baselines/reference/literalIntersectionYieldsLiteral.symbols @@ -0,0 +1,35 @@ +=== tests/cases/compiler/literalIntersectionYieldsLiteral.ts === +export type BaseAttribute = { +>BaseAttribute : Symbol(BaseAttribute, Decl(literalIntersectionYieldsLiteral.ts, 0, 0)) +>T : Symbol(T, Decl(literalIntersectionYieldsLiteral.ts, 0, 26)) + + type?: string; +>type : Symbol(type, Decl(literalIntersectionYieldsLiteral.ts, 0, 32)) +} +export type StringAttribute = BaseAttribute & { +>StringAttribute : Symbol(StringAttribute, Decl(literalIntersectionYieldsLiteral.ts, 2, 1)) +>BaseAttribute : Symbol(BaseAttribute, Decl(literalIntersectionYieldsLiteral.ts, 0, 0)) + + type: "string"; +>type : Symbol(type, Decl(literalIntersectionYieldsLiteral.ts, 3, 55)) +} +export type NumberAttribute = BaseAttribute & { +>NumberAttribute : Symbol(NumberAttribute, Decl(literalIntersectionYieldsLiteral.ts, 5, 1)) +>BaseAttribute : Symbol(BaseAttribute, Decl(literalIntersectionYieldsLiteral.ts, 0, 0)) + + type: "number"; +>type : Symbol(type, Decl(literalIntersectionYieldsLiteral.ts, 6, 55)) +} +export type Attribute = StringAttribute | NumberAttribute; +>Attribute : Symbol(Attribute, Decl(literalIntersectionYieldsLiteral.ts, 8, 1)) +>StringAttribute : Symbol(StringAttribute, Decl(literalIntersectionYieldsLiteral.ts, 2, 1)) +>NumberAttribute : Symbol(NumberAttribute, Decl(literalIntersectionYieldsLiteral.ts, 5, 1)) + +const foo: Attribute = { +>foo : Symbol(foo, Decl(literalIntersectionYieldsLiteral.ts, 11, 5)) +>Attribute : Symbol(Attribute, Decl(literalIntersectionYieldsLiteral.ts, 8, 1)) + + type: "string" +>type : Symbol(type, Decl(literalIntersectionYieldsLiteral.ts, 11, 24)) +} + diff --git a/tests/baselines/reference/literalIntersectionYieldsLiteral.types b/tests/baselines/reference/literalIntersectionYieldsLiteral.types new file mode 100644 index 00000000000..2230f14af1a --- /dev/null +++ b/tests/baselines/reference/literalIntersectionYieldsLiteral.types @@ -0,0 +1,37 @@ +=== tests/cases/compiler/literalIntersectionYieldsLiteral.ts === +export type BaseAttribute = { +>BaseAttribute : BaseAttribute +>T : T + + type?: string; +>type : string +} +export type StringAttribute = BaseAttribute & { +>StringAttribute : StringAttribute +>BaseAttribute : BaseAttribute + + type: "string"; +>type : "string" +} +export type NumberAttribute = BaseAttribute & { +>NumberAttribute : NumberAttribute +>BaseAttribute : BaseAttribute + + type: "number"; +>type : "number" +} +export type Attribute = StringAttribute | NumberAttribute; +>Attribute : Attribute +>StringAttribute : StringAttribute +>NumberAttribute : NumberAttribute + +const foo: Attribute = { +>foo : Attribute +>Attribute : Attribute +>{ type: "string"} : { type: "string"; } + + type: "string" +>type : string +>"string" : "string" +} + diff --git a/tests/cases/compiler/literalIntersectionYieldsLiteral.ts b/tests/cases/compiler/literalIntersectionYieldsLiteral.ts new file mode 100644 index 00000000000..3b65201d3a3 --- /dev/null +++ b/tests/cases/compiler/literalIntersectionYieldsLiteral.ts @@ -0,0 +1,14 @@ +export type BaseAttribute = { + type?: string; +} +export type StringAttribute = BaseAttribute & { + type: "string"; +} +export type NumberAttribute = BaseAttribute & { + type: "number"; +} +export type Attribute = StringAttribute | NumberAttribute; + +const foo: Attribute = { + type: "string" +} From 9e122d030586dadbaf41f60a93c85816a027bbd7 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Tue, 12 Dec 2017 17:22:41 -0800 Subject: [PATCH 041/173] Fix test --- src/harness/unittests/typingsInstaller.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/harness/unittests/typingsInstaller.ts b/src/harness/unittests/typingsInstaller.ts index cb2d350744c..f7820434469 100644 --- a/src/harness/unittests/typingsInstaller.ts +++ b/src/harness/unittests/typingsInstaller.ts @@ -1009,7 +1009,7 @@ namespace ts.projectSystem { installer.installAll(/*expectedCount*/ 1); }); - it("cached unresolved typings are not recomputed if program structure did not change", () => { + it("should recompute resolutions after typings are installed", () => { const host = createServerHost([]); const session = createSession(host); const f = { @@ -1051,7 +1051,7 @@ namespace ts.projectSystem { session.executeCommand(changeRequest); host.checkTimeoutQueueLengthAndRun(2); // This enqueues the updategraph and refresh inferred projects const version2 = proj.getCachedUnresolvedImportsPerFile_TestOnly().getVersion(); - assert.equal(version1, version2, "set of unresolved imports should not change"); + assert.notEqual(version1, version2, "set of unresolved imports should change"); }); }); From dbceefd05ad34ca8d8ccefa4df97922134ce7daf Mon Sep 17 00:00:00 2001 From: csigs Date: Wed, 13 Dec 2017 05:10:08 +0000 Subject: [PATCH 042/173] LEGO: check in for master to temporary branch. --- .../diagnosticMessages.generated.json.lcl | 116 +++++++++++------- 1 file changed, 70 insertions(+), 46 deletions(-) diff --git a/src/loc/lcl/trk/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/trk/diagnosticMessages/diagnosticMessages.generated.json.lcl index 2515c17f3c1..148048bac32 100644 --- a/src/loc/lcl/trk/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/trk/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -860,8 +860,8 @@ - - + + @@ -872,8 +872,8 @@ - - + + @@ -884,8 +884,8 @@ - - + + @@ -896,8 +896,8 @@ - - + + @@ -908,6 +908,9 @@ + + + @@ -1538,8 +1541,8 @@ - - + + @@ -1955,8 +1958,8 @@ - - + + @@ -1979,8 +1982,8 @@ - - + + @@ -2357,8 +2360,8 @@ - - + + @@ -2369,8 +2372,8 @@ - - + + @@ -2381,8 +2384,8 @@ - - + + @@ -2393,8 +2396,8 @@ - - + + @@ -2477,8 +2480,8 @@ - - + + @@ -3749,8 +3752,8 @@ - - + + @@ -3773,8 +3776,8 @@ - - + + @@ -3794,8 +3797,8 @@ - - + + @@ -3947,8 +3950,8 @@ - - + + @@ -3959,8 +3962,8 @@ - - + + @@ -3971,8 +3974,8 @@ - - + + @@ -3983,8 +3986,8 @@ - - + + @@ -4520,8 +4523,8 @@ - - + + @@ -4742,6 +4745,12 @@ + + + + + + @@ -4832,6 +4841,12 @@ + + + + + + @@ -5438,8 +5453,8 @@ - - + + @@ -5894,8 +5909,8 @@ - - + + @@ -6323,8 +6338,8 @@ - - + + @@ -6443,6 +6458,9 @@ + + + @@ -6551,6 +6569,9 @@ + + + @@ -7406,6 +7427,9 @@ + + + From 7125cad406771378118254fc6fb3b86e54378049 Mon Sep 17 00:00:00 2001 From: csigs Date: Wed, 13 Dec 2017 11:10:32 +0000 Subject: [PATCH 043/173] LEGO: check in for master to temporary branch. --- .../diagnosticMessages.generated.json.lcl | 116 +++++++++++------- 1 file changed, 70 insertions(+), 46 deletions(-) diff --git a/src/loc/lcl/fra/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/fra/diagnosticMessages/diagnosticMessages.generated.json.lcl index 4ae94d84fc8..a0b4d9364e1 100644 --- a/src/loc/lcl/fra/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/fra/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -876,8 +876,8 @@ - - + + @@ -888,8 +888,8 @@ - - + + @@ -900,8 +900,8 @@ - - + + @@ -912,8 +912,8 @@ - - + + @@ -924,6 +924,9 @@ + + + @@ -1554,8 +1557,8 @@ - - + + @@ -1971,8 +1974,8 @@ - - + + @@ -1995,8 +1998,8 @@ - - + + @@ -2373,8 +2376,8 @@ - - + + @@ -2385,8 +2388,8 @@ - - + + @@ -2397,8 +2400,8 @@ - - + + @@ -2409,8 +2412,8 @@ - - + + @@ -2493,8 +2496,8 @@ - - + + @@ -3765,8 +3768,8 @@ - - + + @@ -3789,8 +3792,8 @@ - - + + @@ -3810,8 +3813,8 @@ - - + + @@ -3963,8 +3966,8 @@ - - + + @@ -3975,8 +3978,8 @@ - - + + @@ -3987,8 +3990,8 @@ - - + + @@ -3999,8 +4002,8 @@ - - + + @@ -4536,8 +4539,8 @@ - - + + @@ -4758,6 +4761,12 @@ + + + + + + @@ -4848,6 +4857,12 @@ + + + + + + @@ -5454,8 +5469,8 @@ - - + + @@ -5910,8 +5925,8 @@ - - + + @@ -6339,8 +6354,8 @@ - - + + @@ -6459,6 +6474,9 @@ + + + @@ -6567,6 +6585,9 @@ + + + @@ -7422,6 +7443,9 @@ + + + From 79a1240a1978044560e08470e86363ed90fc1909 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 13 Dec 2017 06:49:50 -0800 Subject: [PATCH 044/173] Revert merge pull request #20429 (removing chai) (#20654) * Revert "Merge pull request #20429 from Microsoft/unchai" This reverts commit 66ec938164b61a7a9e14214f36bf58edc11c7609, reversing changes made to 37a40561ac4c4cb1f970ade5fff2389d954593f6. * Update lockfile --- Jakefile.js | 2 +- package-lock.json | 215 ++++++++++------- package.json | 2 + src/harness/fourslash.ts | 17 +- src/harness/harness.ts | 74 ++---- src/harness/harnessLanguageService.ts | 5 +- src/harness/sourceMapRecorder.ts | 6 +- src/harness/tsconfig.json | 2 +- src/harness/unittests/commandLineParsing.ts | 4 +- src/harness/unittests/compileOnSave.ts | 18 +- .../unittests/configurationExtension.ts | 2 +- .../convertCompilerOptionsFromJson.ts | 10 +- .../convertTypeAcquisitionFromJson.ts | 8 +- src/harness/unittests/extractRanges.ts | 2 +- src/harness/unittests/hostNewLineSupport.ts | 2 +- src/harness/unittests/incrementalParser.ts | 2 +- src/harness/unittests/jsDocParsing.ts | 6 +- src/harness/unittests/languageService.ts | 2 +- src/harness/unittests/moduleResolution.ts | 14 +- src/harness/unittests/programMissingFiles.ts | 2 +- src/harness/unittests/projectErrors.ts | 18 +- .../unittests/reuseProgramStructure.ts | 22 +- .../unittests/services/colorization.ts | 2 +- .../unittests/services/patternMatcher.ts | 40 ++-- .../unittests/services/preProcessFile.ts | 2 +- src/harness/unittests/session.ts | 73 +++--- src/harness/unittests/textStorage.ts | 18 +- src/harness/unittests/tscWatchMode.ts | 26 +-- src/harness/unittests/tsconfigParsing.ts | 22 +- .../unittests/tsserverProjectSystem.ts | 220 +++++++++--------- src/harness/unittests/typingsInstaller.ts | 26 +-- src/harness/unittests/versionCache.ts | 8 +- src/harness/virtualFileSystemWithWatch.ts | 2 +- 33 files changed, 446 insertions(+), 428 deletions(-) diff --git a/Jakefile.js b/Jakefile.js index 1544ccec0a3..b68e869aaee 100644 --- a/Jakefile.js +++ b/Jakefile.js @@ -795,7 +795,7 @@ compileFile( /*prereqs*/[builtLocalDirectory, tscFile, tsserverLibraryFile].concat(libraryTargets).concat(servicesSources).concat(harnessSources), /*prefixes*/[], /*useBuiltCompiler:*/ true, - /*opts*/ { types: ["node", "mocha"], lib: "es6" }); + /*opts*/ { types: ["node", "mocha", "chai"], lib: "es6" }); var internalTests = "internal/"; diff --git a/package-lock.json b/package-lock.json index 5dc35c5bb26..eb1414c125a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,6 +35,12 @@ "through2": "2.0.3" } }, + "@types/arrify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/arrify/-/arrify-1.0.2.tgz", + "integrity": "sha512-gB1Oqypj/WbMjnWyCcvQdynRyfusKtqzUpt+EN/OtgFcjikC7ZV4qzS3SLbO1Ai2B0iVSgWvwR9A49lZGfivYg==", + "dev": true + }, "@types/browserify": { "version": "12.0.33", "resolved": "https://registry.npmjs.org/@types/browserify/-/browserify-12.0.33.tgz", @@ -42,13 +48,13 @@ "dev": true, "requires": { "@types/insert-module-globals": "7.0.0", - "@types/node": "8.0.54" + "@types/node": "8.0.58" } }, "@types/chai": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.0.7.tgz", - "integrity": "sha512-OsFOcyJH0SViMMHzDKZdapG8sfoH7qcpYgKhgyw9xn5MgkCvAplkf0FUaRFB+HTrVH6gQ/GU7sbIUDM1usVEUA==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.0.10.tgz", + "integrity": "sha512-Ejh1AXTY8lm+x91X/yar3G2z4x9RyKwdTVdyyu7Xj3dNB35fMNCnEWqTO9FgS3zjzlRNqk1MruYhgb8yhRN9rA==", "dev": true }, "@types/colors": { @@ -69,9 +75,15 @@ "integrity": "sha512-18mSs54BvzV8+TTQxt0ancig6tsuPZySnhp3cQkWFFDmDMavU4pmWwR+bHHqRBWODYqpzIzVkqKLuk/fP6yypQ==", "dev": true, "requires": { - "@types/glob": "5.0.33" + "@types/glob": "5.0.34" } }, + "@types/diff": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/diff/-/diff-3.2.2.tgz", + "integrity": "sha512-q3zfJvaTroV5BjAAR+peTHEGAAhGrPX0z2EzCzpt2mwFA+qzUn2nigJLqSekXRtdULKmT8am7zjvTMZSapIgHw==", + "dev": true + }, "@types/events": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@types/events/-/events-1.1.0.tgz", @@ -79,13 +91,14 @@ "dev": true }, "@types/glob": { - "version": "5.0.33", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.33.tgz", - "integrity": "sha512-BcD4yyWz+qmCggaYMSFF0Xn7GkO6tgwm3Fh9Gxk/kQmEU3Z7flQTnVlMyKBUNvXXNTCCyjqK4XT4/2hLd1gQ2A==", + "version": "5.0.34", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.34.tgz", + "integrity": "sha512-sUvpieq+HsWTLdkeOI8Mi8u22Ag3AoGuM3sv+XMP1bKtbaIAHpEA2f52K2mz6vK5PVhTa3bFyRZLZMqTxOo2Cw==", "dev": true, "requires": { + "@types/events": "1.1.0", "@types/minimatch": "3.0.1", - "@types/node": "8.0.54" + "@types/node": "8.0.58" } }, "@types/gulp": { @@ -94,7 +107,7 @@ "integrity": "sha512-h9clNJu8X6+zW74ZLa5zhh5HP0LxnvlelVXdXby6pM/DDEj/gKqmmFXKwjzvupZKlMpof02jr6c3JokPbHXQgg==", "dev": true, "requires": { - "@types/node": "8.0.54", + "@types/node": "8.0.58", "@types/orchestrator": "0.3.2", "@types/vinyl": "2.0.1" } @@ -105,7 +118,7 @@ "integrity": "sha512-CUCFADlITzzBfBa2bdGzhKtvBr4eFh+evb+4igVbvPoO5RyPfHifmyQlZl6lM7q19+OKncRlFXDU7B4X9Ayo2g==", "dev": true, "requires": { - "@types/node": "8.0.54" + "@types/node": "8.0.58" } }, "@types/gulp-help": { @@ -115,7 +128,7 @@ "dev": true, "requires": { "@types/gulp": "3.8.35", - "@types/node": "8.0.54", + "@types/node": "8.0.58", "@types/orchestrator": "0.3.2" } }, @@ -125,7 +138,7 @@ "integrity": "sha512-e7J/Zv5Wd7CC0WpuA2syWVitgwrkG0u221e41w7r07XUR6hMH6kHPkq9tUrusHkbeW8QbuLbis5fODOwQCyggQ==", "dev": true, "requires": { - "@types/node": "8.0.54" + "@types/node": "8.0.58" } }, "@types/gulp-sourcemaps": { @@ -134,7 +147,7 @@ "integrity": "sha512-+7BAmptW2bxyJnJcCEuie7vLoop3FwWgCdBMzyv7MYXED/HeNMeQuX7uPCkp4vfU1TTu4CYFH0IckNPvo0VePA==", "dev": true, "requires": { - "@types/node": "8.0.54" + "@types/node": "8.0.58" } }, "@types/insert-module-globals": { @@ -143,7 +156,7 @@ "integrity": "sha512-zudCJPwluh1VUDB6Gl/OQdRp+fYy3+47huJB/JMQubMS2p+sH18MCVK4WUz3FqaWLB12yh5ELxVR/+tqwlm/qA==", "dev": true, "requires": { - "@types/node": "8.0.54" + "@types/node": "8.0.58" } }, "@types/merge2": { @@ -152,7 +165,7 @@ "integrity": "sha512-GjaXY4OultxbaOOk7lCLO7xvEcFpdjExC605YmfI6X29vhHKpJfMWKCDZd3x+BITrZaXKg97DgV/SdGVSwdzxA==", "dev": true, "requires": { - "@types/node": "8.0.54" + "@types/node": "8.0.58" } }, "@types/minimatch": { @@ -173,7 +186,7 @@ "integrity": "sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==", "dev": true, "requires": { - "@types/node": "8.0.54" + "@types/node": "8.0.58" } }, "@types/mocha": { @@ -183,13 +196,10 @@ "dev": true }, "@types/node": { - "version": "8.0.54", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.54.tgz", - "integrity": "sha512-qetMdTv3Ytz9u9ESLdcYs45LPI0mczYZIbC184n7kY0jczOqPNQsabBfVCh+na3B2shAfvC459JqHV771A8Rxg==", - "dev": true, - "requires": { - "@types/events": "1.1.0" - } + "version": "8.0.58", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.58.tgz", + "integrity": "sha512-V746iUU7eHNdzQipoACuguDlVhC7IHK8CES1jSkuFt352wwA84BCWPXaGekBd7R5XdNK5ReHONDVKxlL9IreAw==", + "dev": true }, "@types/orchestrator": { "version": "0.3.2", @@ -197,7 +207,7 @@ "integrity": "sha512-cKB4yTX0wGaRCSkdHDX2fkGQbMAA8UOshC2U7DQky1CE5o+5q2iQQ8VkbPbE/88uaTtsusvBPMcCX7dgmjxBhQ==", "dev": true, "requires": { - "@types/node": "8.0.54", + "@types/node": "8.0.58", "@types/q": "1.0.6" } }, @@ -214,25 +224,50 @@ "dev": true, "requires": { "@types/gulp": "3.8.35", - "@types/node": "8.0.54" + "@types/node": "8.0.58" } }, + "@types/source-map-support": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@types/source-map-support/-/source-map-support-0.4.0.tgz", + "integrity": "sha512-9oVAi1Jlr274pbMGPEe0S3IPImV9knVNafa6E4MookD/fjOZAE6EmLkFX5ZjtZ9OXNPi2FCIZzUSMvwAUUKeSg==", + "dev": true, + "requires": { + "@types/node": "8.0.58" + } + }, + "@types/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=", + "dev": true + }, + "@types/strip-json-comments": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", + "dev": true + }, "@types/through2": { "version": "2.0.33", "resolved": "https://registry.npmjs.org/@types/through2/-/through2-2.0.33.tgz", "integrity": "sha1-H/LoihAN+1sUDnu5h5HxGUQA0TE=", "dev": true, "requires": { - "@types/node": "8.0.54" + "@types/node": "8.0.58" } }, + "@types/v8flags": { + "version": "github:types/npm-v8flags#de224ae1cd5fd7dbb4e7158a6cc7a29e5315930d", + "dev": true + }, "@types/vinyl": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.1.tgz", "integrity": "sha512-Joudabfn2ZofU2usW04y8OLmN75u7ZQkW0MCT3AnoBf5oUBp5iQ3Pgfz9+y1RdWkzhCPZo9/wBJ7FMWW2JrY0g==", "dev": true, "requires": { - "@types/node": "8.0.54" + "@types/node": "8.0.58" } }, "@types/xml2js": { @@ -241,18 +276,12 @@ "integrity": "sha512-8aKUBSj3oGcnuiBmDLm3BIk09RYg01mz9HlQ2u4aS17oJ25DxjQrEUVGFSBVNOfM45pQW4OjcBPplq6r/exJdA==", "dev": true, "requires": { - "@types/node": "8.0.54" + "@types/node": "8.0.58" } }, - "JSONStream": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", - "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", - "dev": true, - "requires": { - "jsonparse": "1.3.1", - "through": "2.3.8" - } + "@types/yn": { + "version": "github:types/npm-yn#ca75f6c82940fae6a06fb41d2d37a6aa9b4ea8e9", + "dev": true }, "abbrev": { "version": "1.0.9", @@ -283,6 +312,15 @@ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -295,6 +333,12 @@ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, "archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", @@ -509,9 +553,9 @@ "integrity": "sha1-+GzWzvT1MAyOY+B6TVEvZfv/RTE=", "dev": true, "requires": { - "JSONStream": "1.3.1", "combine-source-map": "0.7.2", "defined": "1.0.0", + "JSONStream": "1.3.1", "through2": "2.0.3", "umd": "3.0.1" } @@ -537,7 +581,6 @@ "integrity": "sha512-gKfOsNQv/toWz+60nSPfYzuwSEdzvV2WdxrVPUbPD/qui44rAkB3t3muNtmmGYHqrG56FGwX9SUEQmzNLAeS7g==", "dev": true, "requires": { - "JSONStream": "1.3.1", "assert": "1.4.1", "browser-pack": "6.0.2", "browser-resolve": "1.11.2", @@ -559,6 +602,7 @@ "https-browserify": "1.0.0", "inherits": "2.0.3", "insert-module-globals": "7.0.1", + "JSONStream": "1.3.1", "labeled-stream-splicer": "2.0.0", "module-deps": "4.1.1", "os-browserify": "0.3.0", @@ -1056,9 +1100,9 @@ } }, "debug-fabulous": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-0.2.1.tgz", - "integrity": "sha512-u0TV6HcfLsZ03xLBhdhSViQMldaiQ2o+8/nSILaXkuNSWvxkx66vYJUAam0Eu7gAilJRX/69J4kKdqajQPaPyw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.0.0.tgz", + "integrity": "sha512-dsd50qQ1atDeurcxL7XOjPp4nZCGZzWIONDujDXzl1atSyC3hMbZD+v6440etw+Vt0Pr8ce4TQzHfX3KZM05Mw==", "dev": true, "requires": { "debug": "3.1.0", @@ -1452,12 +1496,12 @@ } }, "fancy-log": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", - "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.1.tgz", + "integrity": "sha1-xKNGK6FK3137q3lzH9OESiBpy7s=", "dev": true, "requires": { - "chalk": "1.1.3", + "ansi-gray": "0.1.1", "time-stamp": "1.1.0" } }, @@ -1848,7 +1892,7 @@ "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", "dev": true, "requires": { - "natives": "1.1.0" + "natives": "1.1.1" } }, "growl": { @@ -2183,7 +2227,7 @@ "acorn": "4.0.13", "convert-source-map": "1.5.1", "css": "2.2.1", - "debug-fabulous": "0.2.1", + "debug-fabulous": "1.0.0", "detect-newline": "2.1.0", "graceful-fs": "4.1.11", "source-map": "0.5.7", @@ -2419,7 +2463,7 @@ "beeper": "1.1.1", "chalk": "1.1.3", "dateformat": "2.2.0", - "fancy-log": "1.3.0", + "fancy-log": "1.3.1", "gulplog": "1.0.0", "has-gulplog": "0.1.0", "lodash._reescape": "3.0.0", @@ -2645,10 +2689,10 @@ "integrity": "sha1-wDv04BywhtW15azorQr+eInWOMM=", "dev": true, "requires": { - "JSONStream": "1.3.1", "combine-source-map": "0.7.2", "concat-stream": "1.5.2", "is-buffer": "1.1.6", + "JSONStream": "1.3.1", "lexical-scope": "1.2.0", "process": "0.11.10", "through2": "2.0.3", @@ -3003,6 +3047,16 @@ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true }, + "JSONStream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", + "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", + "dev": true, + "requires": { + "jsonparse": "1.3.1", + "through": "2.3.8" + } + }, "kew": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", @@ -3641,7 +3695,6 @@ "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=", "dev": true, "requires": { - "JSONStream": "1.3.1", "browser-resolve": "1.11.2", "cached-path-relative": "1.0.1", "concat-stream": "1.5.2", @@ -3649,6 +3702,7 @@ "detective": "4.7.0", "duplexer2": "0.1.4", "inherits": "2.0.3", + "JSONStream": "1.3.1", "parents": "1.0.1", "readable-stream": "2.3.3", "resolve": "1.1.7", @@ -3709,9 +3763,9 @@ } }, "natives": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz", - "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.1.tgz", + "integrity": "sha512-8eRaxn8u/4wN8tGkhlc2cgwwvOLMLUMUn4IYTexMgWd+LyUDfeXVkk2ygQR0hvIHbJQXgHujia3ieUUDwNGkEA==", "dev": true }, "next-tick": { @@ -4846,19 +4900,27 @@ "dev": true }, "ts-node": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-3.3.0.tgz", - "integrity": "sha1-wTxqMCTjC+EYDdUwOPwgkonUv2k=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-4.0.1.tgz", + "integrity": "sha512-F9AHAfL7QO+W8QPnEY4dzjCV2RPDK76mzYkQVB/7BuGOJWFxJgGezdyvCdtfVtE1QOOen3DnJONsenzIqIKqYQ==", "dev": true, "requires": { + "@types/arrify": "1.0.2", + "@types/diff": "3.2.2", + "@types/minimist": "1.2.0", + "@types/mkdirp": "0.5.2", + "@types/node": "8.0.58", + "@types/source-map-support": "0.4.0", + "@types/v8flags": "github:types/npm-v8flags#de224ae1cd5fd7dbb4e7158a6cc7a29e5315930d", + "@types/yn": "github:types/npm-yn#ca75f6c82940fae6a06fb41d2d37a6aa9b4ea8e9", "arrify": "1.0.1", "chalk": "2.3.0", "diff": "3.3.1", "make-error": "1.3.0", "minimist": "1.2.0", "mkdirp": "0.5.1", - "source-map-support": "0.4.18", - "tsconfig": "6.0.0", + "source-map-support": "0.5.0", + "tsconfig": "7.0.0", "v8flags": "3.0.1", "yn": "2.0.0" }, @@ -4889,15 +4951,6 @@ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "0.5.7" - } - }, "supports-color": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", @@ -4919,11 +4972,13 @@ } }, "tsconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-6.0.0.tgz", - "integrity": "sha1-aw6DdgA9evGGT434+J3QBZ/80DI=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", + "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", "dev": true, "requires": { + "@types/strip-bom": "3.0.0", + "@types/strip-json-comments": "0.0.30", "strip-bom": "3.0.0", "strip-json-comments": "2.0.1" }, @@ -4937,9 +4992,9 @@ } }, "tslib": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.8.0.tgz", - "integrity": "sha512-ymKWWZJST0/CkgduC2qkzjMOWr4bouhuURNXCn/inEX0L57BnRG6FhX76o7FOnsjHazCjfU2LKeSrlS2sIKQJg==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.8.1.tgz", + "integrity": "sha1-aUavLR1lGnsYY7Ux1uWvpBqkTqw=", "dev": true }, "tslint": { @@ -4957,7 +5012,7 @@ "minimatch": "3.0.4", "resolve": "1.5.0", "semver": "5.4.1", - "tslib": "1.8.0", + "tslib": "1.8.1", "tsutils": "2.13.0" }, "dependencies": { @@ -5019,7 +5074,7 @@ "integrity": "sha512-FuWzNJbMsp3gcZMbI3b5DomhW4Ia41vMxjN63nKWI0t7f+I3UmHfRl0TrXJTwI2LUduDG+eR1Mksp3pvtlyCFQ==", "dev": true, "requires": { - "tslib": "1.8.0" + "tslib": "1.8.1" } }, "tty-browserify": { @@ -5050,9 +5105,9 @@ "dev": true }, "typescript": { - "version": "2.7.0-dev.20171203", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.0-dev.20171203.tgz", - "integrity": "sha512-FyhV7OvieIXzjktOb9YmixEIR8olL8IrnonCmJQWGnj8Wt6eoQQKQlkXWPy8mpwEaSIXw/nQO0NpGQ+nWokhRw==", + "version": "2.7.0-dev.20171212", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.0-dev.20171212.tgz", + "integrity": "sha512-D9eP7T4QjfsoFNi35iOYTgLgwQE+OrVkWFQ2p+MbgKd0W2Qupqe6COyyQPoUeXvOrB5rbaIkeomh+VFMOPjtKg==", "dev": true }, "uglify-js": { diff --git a/package.json b/package.json index b3c76e6d515..e329db05d85 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ }, "devDependencies": { "@types/browserify": "latest", + "@types/chai": "latest", "@types/colors": "latest", "@types/convert-source-map": "latest", "@types/del": "latest", @@ -52,6 +53,7 @@ "xml2js": "^0.4.19", "browser-resolve": "^1.11.2", "browserify": "latest", + "chai": "latest", "convert-source-map": "latest", "del": "latest", "gulp": "3.X", diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index 0d5216d62b5..fefee7ca3bd 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -297,7 +297,7 @@ namespace FourSlash { const host = new Utils.MockParseConfigHost(baseDir, /*ignoreCase*/ false, this.inputFiles); const configJsonObj = ts.parseConfigFileTextToJson(configFileName, this.inputFiles.get(configFileName)); - assert(configJsonObj.config !== undefined); + assert.isTrue(configJsonObj.config !== undefined); const { options, errors } = ts.parseJsonConfigFileContent(configJsonObj.config, host, baseDir); @@ -443,7 +443,7 @@ namespace FourSlash { public goToEachMarker(action: () => void) { const markers = this.getMarkers(); - assert(markers.length !== 0); + assert(markers.length); for (const marker of markers) { this.goToMarker(marker); action(); @@ -452,7 +452,7 @@ namespace FourSlash { public goToEachRange(action: () => void) { const ranges = this.getRanges(); - assert(ranges.length !== 0); + assert(ranges.length); for (const range of ranges) { this.goToRangeStart(range); action(); @@ -799,7 +799,7 @@ namespace FourSlash { } const entries = this.getCompletionListAtCaret().entries; - assert(items.length <= entries.length, `Amount of expected items in completion list [ ${items.length} ] is greater than actual number of items in list [ ${entries.length} ]`); + assert.isTrue(items.length <= entries.length, `Amount of expected items in completion list [ ${items.length} ] is greater than actual number of items in list [ ${entries.length} ]`); ts.zipWith(entries, items, (entry, item) => { assert.equal(entry.name, item, `Unexpected item in completion list`); }); @@ -953,7 +953,7 @@ namespace FourSlash { public verifyCompletionEntryDetails(entryName: string, expectedText: string, expectedDocumentation?: string, kind?: string, tags?: ts.JSDocTagInfo[]) { const details = this.getCompletionEntryDetails(entryName); - assert.isDefined(details, "no completion entry available"); + assert(details, "no completion entry available"); assert.equal(ts.displayPartsToString(details.displayParts), expectedText, this.assertionMessageAtLastKnownMarker("completion entry details text")); @@ -1088,7 +1088,7 @@ namespace FourSlash { public verifyRangesReferenceEachOther(ranges?: Range[]) { ranges = ranges || this.getRanges(); - assert(ranges.length !== 0); + assert(ranges.length); for (const range of ranges) { this.verifyReferencesOf(range, ranges); } @@ -1374,6 +1374,7 @@ Actual: ${stringify(fullActual)}`); public verifyCurrentParameterIsVariable(isVariable: boolean) { const signature = this.getActiveSignatureHelpItem(); + assert.isOk(signature); assert.equal(isVariable, signature.isVariadic); } @@ -2024,7 +2025,7 @@ Actual: ${stringify(fullActual)}`); const implementations = this.languageService.getImplementationAtPosition(this.activeFile.fileName, this.currentCaretPosition); if (negative) { - assert(implementations && implementations.length > 0, "Expected at least one implementation but got 0"); + assert.isTrue(implementations && implementations.length > 0, "Expected at least one implementation but got 0"); } else { assert.isUndefined(implementations, "Expected implementation list to be empty but implementations returned"); @@ -3128,7 +3129,7 @@ Actual: ${stringify(fullActual)}`); if (spanIndex !== undefined) { const span = this.getTextSpanForRangeAtIndex(spanIndex); - assert(TestState.textSpansEqual(span, item.replacementSpan), this.assertionMessageAtLastKnownMarker(stringify(span) + " does not equal " + stringify(item.replacementSpan) + " replacement span for " + entryId)); + assert.isTrue(TestState.textSpansEqual(span, item.replacementSpan), this.assertionMessageAtLastKnownMarker(stringify(span) + " does not equal " + stringify(item.replacementSpan) + " replacement span for " + entryId)); } assert.equal(item.hasAction, hasAction); diff --git a/src/harness/harness.ts b/src/harness/harness.ts index 8f56a239943..f4a58352b16 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -23,60 +23,18 @@ /// /// /// +/// + // Block scoped definitions work poorly for global variables, temporarily enable var /* tslint:disable:no-var-keyword */ -function assert(expr: boolean, msg?: string | (() => string)): void { - if (!expr) { - throw new Error(typeof msg === "string" ? msg : msg()); - } -} -namespace assert { - export function isFalse(expr: boolean, msg = "Expected value to be false."): void { - assert(!expr, msg); - } - export function equal(a: T, b: T, msg?: string): void { - assert(a === b, msg || (() => `Expected to be equal:\nExpected:\n${JSON.stringify(a)}\nActual:\n${JSON.stringify(b)}`)); - } - export function notEqual(a: T, b: T, msg = "Expected values to not be equal."): void { - assert(a !== b, msg); - } - export function isDefined(x: {} | null | undefined, msg = "Expected value to be defined."): void { - assert(x !== undefined && x !== null, msg); - } - export function isUndefined(x: {} | null | undefined, msg = "Expected value to be undefined."): void { - assert(x === undefined, msg); - } - export function deepEqual(a: T, b: T, msg?: string): void { - assert(isDeepEqual(a, b), msg || (() => `Expected values to be deeply equal:\nExpected:\n${JSON.stringify(a, undefined, 4)}\nActual:\n${JSON.stringify(b, undefined, 4)}`)); - } - export function lengthOf(a: ReadonlyArray<{}>, length: number, msg = "Expected length to match."): void { - assert(a.length === length, msg); - } - export function throws(cb: () => void, msg = "Expected callback to throw"): void { - let threw = false; - try { - cb(); - } - catch { - threw = true; - } - assert(threw, msg); - } - - function isDeepEqual(a: T, b: T): boolean { - if (a === b) { - return true; - } - if (typeof a !== "object" || typeof b !== "object" || a === null || b === null) { - return false; - } - const aKeys = Object.keys(a).sort(); - const bKeys = Object.keys(b).sort(); - return aKeys.length === bKeys.length && aKeys.every((key, i) => bKeys[i] === key && isDeepEqual((a as any)[key], (b as any)[key])); - } -} +// this will work in the browser via browserify +var _chai: typeof chai = require("chai"); +var assert: typeof _chai.assert = _chai.assert; +// chai's builtin `assert.isFalse` is featureful but slow - we don't use those features, +// so we'll just overwrite it as an alterative to migrating a bunch of code off of chai +assert.isFalse = (expr, msg) => { if (expr as any as boolean !== false) throw new Error(msg); }; declare var __dirname: string; // Node-specific var global: NodeJS.Global = Function("return this").call(undefined); @@ -389,8 +347,8 @@ namespace Utils { return; } - assert(!!array1, "array1"); - assert(!!array2, "array2"); + assert(array1, "array1"); + assert(array2, "array2"); assert.equal(array1.length, array2.length, "array1.length !== array2.length"); @@ -413,8 +371,8 @@ namespace Utils { return; } - assert(!!node1, "node1"); - assert(!!node2, "node2"); + assert(node1, "node1"); + assert(node2, "node2"); assert.equal(node1.pos, node2.pos, "node1.pos !== node2.pos"); assert.equal(node1.end, node2.end, "node1.end !== node2.end"); assert.equal(node1.kind, node2.kind, "node1.kind !== node2.kind"); @@ -444,8 +402,8 @@ namespace Utils { return; } - assert(!!array1, "array1"); - assert(!!array2, "array2"); + assert(array1, "array1"); + assert(array2, "array2"); assert.equal(array1.pos, array2.pos, "array1.pos !== array2.pos"); assert.equal(array1.end, array2.end, "array1.end !== array2.end"); assert.equal(array1.length, array2.length, "array1.length !== array2.length"); @@ -1301,7 +1259,7 @@ namespace Harness { function findResultCodeFile(fileName: string) { const sourceFile = result.program.getSourceFile(fileName); - assert.isDefined(sourceFile, "Program has no source file with name '" + fileName + "'"); + assert(sourceFile, "Program has no source file with name '" + fileName + "'"); // Is this file going to be emitted separately let sourceFileName: string; const outFile = options.outFile || options.out; @@ -1984,7 +1942,7 @@ namespace Harness { const data = testUnitData[i]; if (ts.getBaseFileName(data.name).toLowerCase() === "tsconfig.json") { const configJson = ts.parseJsonText(data.name, data.content); - assert(configJson.endOfFileToken !== undefined); + assert.isTrue(configJson.endOfFileToken !== undefined); let baseDir = ts.normalizePath(ts.getDirectoryPath(data.name)); if (rootDir) { baseDir = ts.getNormalizedAbsolutePath(baseDir, rootDir); diff --git a/src/harness/harnessLanguageService.ts b/src/harness/harnessLanguageService.ts index 393b8b95081..d51517c159b 100644 --- a/src/harness/harnessLanguageService.ts +++ b/src/harness/harnessLanguageService.ts @@ -176,7 +176,8 @@ namespace Harness.LanguageService { */ public positionToLineAndCharacter(fileName: string, position: number): ts.LineAndCharacter { const script: ScriptInfo = this.getScriptInfo(fileName); - assert(!!script); + assert.isOk(script); + return ts.computeLineAndCharacterOfPosition(script.getLineMap(), position); } } @@ -378,7 +379,7 @@ namespace Harness.LanguageService { classification: parseInt(result[i + 1]) }; - assert(t.length > 0, "Result length should be greater than 0, got :" + t.length); + assert.isTrue(t.length > 0, "Result length should be greater than 0, got :" + t.length); position += t.length; } const finalLexState = parseInt(result[result.length - 1]); diff --git a/src/harness/sourceMapRecorder.ts b/src/harness/sourceMapRecorder.ts index 5ab8407067e..606d4e67acd 100644 --- a/src/harness/sourceMapRecorder.ts +++ b/src/harness/sourceMapRecorder.ts @@ -285,10 +285,10 @@ namespace Harness.SourceMapRecorder { } export function recordNewSourceFileSpan(sourceMapSpan: ts.SourceMapSpan, newSourceFileCode: string) { - assert(spansOnSingleLine.length === 0 || spansOnSingleLine[0].sourceMapSpan.emittedLine !== sourceMapSpan.emittedLine, "new file source map span should be on new line. We currently handle only that scenario"); + assert.isTrue(spansOnSingleLine.length === 0 || spansOnSingleLine[0].sourceMapSpan.emittedLine !== sourceMapSpan.emittedLine, "new file source map span should be on new line. We currently handle only that scenario"); recordSourceMapSpan(sourceMapSpan); - assert(spansOnSingleLine.length === 1); + assert.isTrue(spansOnSingleLine.length === 1); sourceMapRecorder.WriteLine("-------------------------------------------------------------------"); sourceMapRecorder.WriteLine("emittedFile:" + jsFile.fileName); sourceMapRecorder.WriteLine("sourceFile:" + sourceMapSources[spansOnSingleLine[0].sourceMapSpan.sourceIndex]); @@ -331,7 +331,7 @@ namespace Harness.SourceMapRecorder { function getMarkerId(markerIndex: number) { let markerId = ""; if (spanMarkerContinues) { - assert(markerIndex === 0); + assert.isTrue(markerIndex === 0); markerId = "1->"; } else { diff --git a/src/harness/tsconfig.json b/src/harness/tsconfig.json index 7353f3f7efc..db38b95ba6a 100644 --- a/src/harness/tsconfig.json +++ b/src/harness/tsconfig.json @@ -5,7 +5,7 @@ "outFile": "../../built/local/run.js", "declaration": false, "types": [ - "node", "mocha" + "node", "mocha", "chai" ], "lib": [ "es6", diff --git a/src/harness/unittests/commandLineParsing.ts b/src/harness/unittests/commandLineParsing.ts index 5f0cc2acc78..82c2af7f64e 100644 --- a/src/harness/unittests/commandLineParsing.ts +++ b/src/harness/unittests/commandLineParsing.ts @@ -12,7 +12,7 @@ namespace ts { const parsedErrors = parsed.errors; const expectedErrors = expectedParsedCommandLine.errors; - assert(parsedErrors.length === expectedErrors.length, `Expected error: ${JSON.stringify(expectedErrors)}. Actual error: ${JSON.stringify(parsedErrors)}.`); + assert.isTrue(parsedErrors.length === expectedErrors.length, `Expected error: ${JSON.stringify(expectedErrors)}. Actual error: ${JSON.stringify(parsedErrors)}.`); for (let i = 0; i < parsedErrors.length; i++) { const parsedError = parsedErrors[i]; const expectedError = expectedErrors[i]; @@ -23,7 +23,7 @@ namespace ts { const parsedFileNames = parsed.fileNames; const expectedFileNames = expectedParsedCommandLine.fileNames; - assert(parsedFileNames.length === expectedFileNames.length, `Expected fileNames: [${JSON.stringify(expectedFileNames)}]. Actual fileNames: [${JSON.stringify(parsedFileNames)}].`); + assert.isTrue(parsedFileNames.length === expectedFileNames.length, `Expected fileNames: [${JSON.stringify(expectedFileNames)}]. Actual fileNames: [${JSON.stringify(parsedFileNames)}].`); for (let i = 0; i < parsedFileNames.length; i++) { const parsedFileName = parsedFileNames[i]; const expectedFileName = expectedFileNames[i]; diff --git a/src/harness/unittests/compileOnSave.ts b/src/harness/unittests/compileOnSave.ts index 808e03a0689..a64d7bdd2a5 100644 --- a/src/harness/unittests/compileOnSave.ts +++ b/src/harness/unittests/compileOnSave.ts @@ -25,7 +25,7 @@ namespace ts.projectSystem { const actualResultSingleProjectFileNameList = actualResultSingleProject.fileNames.sort(); const expectedResultSingleProjectFileNameList = map(expectedResultSingleProject.files, f => f.path).sort(); - assert( + assert.isTrue( arrayIsEqualTo(actualResultSingleProjectFileNameList, expectedResultSingleProjectFileNameList), `For project ${actualResultSingleProject.projectFileName}, the actual result is ${actualResultSingleProjectFileNameList}, while expected ${expectedResultSingleProjectFileNameList}`); } @@ -563,7 +563,7 @@ namespace ts.projectSystem { session.executeCommand(compileFileRequest); const expectedEmittedFileName = "/a/b/f1.js"; - assert(host.fileExists(expectedEmittedFileName)); + assert.isTrue(host.fileExists(expectedEmittedFileName)); assert.equal(host.readFile(expectedEmittedFileName), `"use strict";\r\nexports.__esModule = true;\r\nfunction Foo() { return 10; }\r\nexports.Foo = Foo;\r\n`); }); @@ -600,11 +600,11 @@ namespace ts.projectSystem { session.executeCommand(emitRequest); const expectedOutFileName = "/a/b/dist.js"; - assert(host.fileExists(expectedOutFileName)); + assert.isTrue(host.fileExists(expectedOutFileName)); const outFileContent = host.readFile(expectedOutFileName); - assert(outFileContent.indexOf(file1.content) !== -1); - assert(outFileContent.indexOf(file2.content) === -1); - assert(outFileContent.indexOf(file3.content) === -1); + assert.isTrue(outFileContent.indexOf(file1.content) !== -1); + assert.isTrue(outFileContent.indexOf(file2.content) === -1); + assert.isTrue(outFileContent.indexOf(file3.content) === -1); }); it("should use project root as current directory so that compile on save results in correct file mapping", () => { @@ -634,19 +634,19 @@ namespace ts.projectSystem { // Verify js file const expectedOutFileName = "/root/TypeScriptProject3/TypeScriptProject3/" + outFileName; - assert(host.fileExists(expectedOutFileName)); + assert.isTrue(host.fileExists(expectedOutFileName)); const outFileContent = host.readFile(expectedOutFileName); verifyContentHasString(outFileContent, file1.content); verifyContentHasString(outFileContent, `//# ${"sourceMappingURL"}=${outFileName}.map`); // Sometimes tools can sometimes see this line as a source mapping url comment, so we obfuscate it a little // Verify map file const expectedMapFileName = expectedOutFileName + ".map"; - assert(host.fileExists(expectedMapFileName)); + assert.isTrue(host.fileExists(expectedMapFileName)); const mapFileContent = host.readFile(expectedMapFileName); verifyContentHasString(mapFileContent, `"sources":["${inputFileName}"]`); function verifyContentHasString(content: string, str: string) { - assert(stringContains(content, str), `Expected "${content}" to have "${str}"`); + assert.isTrue(stringContains(content, str), `Expected "${content}" to have "${str}"`); } }); }); diff --git a/src/harness/unittests/configurationExtension.ts b/src/harness/unittests/configurationExtension.ts index ebe5b631059..5a1b155fbcf 100644 --- a/src/harness/unittests/configurationExtension.ts +++ b/src/harness/unittests/configurationExtension.ts @@ -113,7 +113,7 @@ namespace ts { const caseSensitiveHost = new Utils.MockParseConfigHost(caseSensitiveBasePath, /*useCaseSensitiveFileNames*/ true, testContents); function verifyDiagnostics(actual: Diagnostic[], expected: {code: number, category: DiagnosticCategory, messageText: string}[]) { - assert(expected.length === actual.length, `Expected error: ${JSON.stringify(expected)}. Actual error: ${JSON.stringify(actual)}.`); + assert.isTrue(expected.length === actual.length, `Expected error: ${JSON.stringify(expected)}. Actual error: ${JSON.stringify(actual)}.`); for (let i = 0; i < actual.length; i++) { const actualError = actual[i]; const expectedError = expected[i]; diff --git a/src/harness/unittests/convertCompilerOptionsFromJson.ts b/src/harness/unittests/convertCompilerOptionsFromJson.ts index 9f5ca179efd..2a8f1fe3a89 100644 --- a/src/harness/unittests/convertCompilerOptionsFromJson.ts +++ b/src/harness/unittests/convertCompilerOptionsFromJson.ts @@ -16,7 +16,7 @@ namespace ts { assert.equal(parsedCompilerOptions, expectedCompilerOptions); const expectedErrors = expectedResult.errors; - assert(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`); + assert.isTrue(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`); for (let i = 0; i < actualErrors.length; i++) { const actualError = actualErrors[i]; const expectedError = expectedErrors[i]; @@ -42,15 +42,15 @@ namespace ts { const actualErrors = filter(actualParseErrors, error => error.code !== Diagnostics.No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2.code); const expectedErrors = expectedResult.errors; - assert(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`); + assert.isTrue(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`); for (let i = 0; i < actualErrors.length; i++) { const actualError = actualErrors[i]; const expectedError = expectedErrors[i]; assert.equal(actualError.code, expectedError.code, `Expected error-code: ${JSON.stringify(expectedError.code)}. Actual error-code: ${JSON.stringify(actualError.code)}.`); assert.equal(actualError.category, expectedError.category, `Expected error-category: ${JSON.stringify(expectedError.category)}. Actual error-category: ${JSON.stringify(actualError.category)}.`); - assert.isDefined(actualError.file); - assert(actualError.start > 0); - assert(actualError.length > 0); + assert(actualError.file); + assert(actualError.start); + assert(actualError.length); } } diff --git a/src/harness/unittests/convertTypeAcquisitionFromJson.ts b/src/harness/unittests/convertTypeAcquisitionFromJson.ts index ddeec6b9869..be1ada10a97 100644 --- a/src/harness/unittests/convertTypeAcquisitionFromJson.ts +++ b/src/harness/unittests/convertTypeAcquisitionFromJson.ts @@ -17,16 +17,16 @@ namespace ts { function verifyErrors(actualErrors: Diagnostic[], expectedResult: ExpectedResult, hasLocation?: boolean) { const expectedErrors = expectedResult.errors; - assert(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`); + assert.isTrue(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`); for (let i = 0; i < actualErrors.length; i++) { const actualError = actualErrors[i]; const expectedError = expectedErrors[i]; assert.equal(actualError.code, expectedError.code, `Expected error-code: ${JSON.stringify(expectedError.code)}. Actual error-code: ${JSON.stringify(actualError.code)}.`); assert.equal(actualError.category, expectedError.category, `Expected error-category: ${JSON.stringify(expectedError.category)}. Actual error-category: ${JSON.stringify(actualError.category)}.`); if (hasLocation) { - assert.isDefined(actualError.file); - assert(actualError.start > 0); - assert(actualError.length > 0); + assert(actualError.file); + assert(actualError.start); + assert(actualError.length); } } } diff --git a/src/harness/unittests/extractRanges.ts b/src/harness/unittests/extractRanges.ts index 08bae357f0e..493c9639c3d 100644 --- a/src/harness/unittests/extractRanges.ts +++ b/src/harness/unittests/extractRanges.ts @@ -39,7 +39,7 @@ namespace ts { assert.equal(end, expectedRange.end, "incorrect end of range"); } else { - assert(!result.targetRange, `expected range to extract to be undefined`); + assert.isTrue(!result.targetRange, `expected range to extract to be undefined`); } } diff --git a/src/harness/unittests/hostNewLineSupport.ts b/src/harness/unittests/hostNewLineSupport.ts index ac5031ed56b..95a05f101f7 100644 --- a/src/harness/unittests/hostNewLineSupport.ts +++ b/src/harness/unittests/hostNewLineSupport.ts @@ -47,7 +47,7 @@ namespace ts { assert(!result.emitSkipped, "emit was skipped"); assert(result.outputFiles.length === 1, "a number of files other than 1 was output"); assert(result.outputFiles[0].name === "input.js", `Expected output file name input.js, but got ${result.outputFiles[0].name}`); - assert.isDefined(result.outputFiles[0].text.match(options.newLine === NewLineKind.CarriageReturnLineFeed ? /\r\n/ : /[^\r]\n/), "expected to find appropriate newlines"); + assert(result.outputFiles[0].text.match(options.newLine === NewLineKind.CarriageReturnLineFeed ? /\r\n/ : /[^\r]\n/), "expected to find appropriate newlines"); assert(!result.outputFiles[0].text.match(options.newLine === NewLineKind.CarriageReturnLineFeed ? /[^\r]\n/ : /\r\n/), "expected not to find inappropriate newlines"); } diff --git a/src/harness/unittests/incrementalParser.ts b/src/harness/unittests/incrementalParser.ts index 2facc4aa152..c71b89d3da6 100644 --- a/src/harness/unittests/incrementalParser.ts +++ b/src/harness/unittests/incrementalParser.ts @@ -66,7 +66,7 @@ namespace ts { assertSameDiagnostics(newTree, incrementalNewTree); // There should be no reused nodes between two trees that are fully parsed. - assert(reusedElements(oldTree, newTree) === 0); + assert.isTrue(reusedElements(oldTree, newTree) === 0); assert.equal(newTree.fileName, incrementalNewTree.fileName, "newTree.fileName !== incrementalNewTree.fileName"); assert.equal(newTree.text, incrementalNewTree.text, "newTree.text !== incrementalNewTree.text"); diff --git a/src/harness/unittests/jsDocParsing.ts b/src/harness/unittests/jsDocParsing.ts index 51647c46368..b7215f5ea35 100644 --- a/src/harness/unittests/jsDocParsing.ts +++ b/src/harness/unittests/jsDocParsing.ts @@ -7,7 +7,7 @@ namespace ts { function parsesCorrectly(name: string, content: string) { it(name, () => { const typeAndDiagnostics = ts.parseJSDocTypeExpressionForTests(content); - assert(typeAndDiagnostics && typeAndDiagnostics.diagnostics.length === 0, "no errors issued"); + assert.isTrue(typeAndDiagnostics && typeAndDiagnostics.diagnostics.length === 0, "no errors issued"); Harness.Baseline.runBaseline("JSDocParsing/TypeExpressions.parsesCorrectly." + name + ".json", () => Utils.sourceFileToJSON(typeAndDiagnostics.jsDocTypeExpression.type)); @@ -17,7 +17,7 @@ namespace ts { function parsesIncorrectly(name: string, content: string) { it(name, () => { const type = ts.parseJSDocTypeExpressionForTests(content); - assert(!type || type.diagnostics.length > 0); + assert.isTrue(!type || type.diagnostics.length > 0); }); } @@ -106,7 +106,7 @@ namespace ts { function parsesIncorrectly(name: string, content: string) { it(name, () => { const type = parseIsolatedJSDocComment(content); - assert(!type || type.diagnostics.length > 0); + assert.isTrue(!type || type.diagnostics.length > 0); }); } diff --git a/src/harness/unittests/languageService.ts b/src/harness/unittests/languageService.ts index 2760df63c8c..f14b9daad82 100644 --- a/src/harness/unittests/languageService.ts +++ b/src/harness/unittests/languageService.ts @@ -42,7 +42,7 @@ export function Component(x: Config): any;` }, }); const definitions = languageService.getDefinitionAtPosition("foo.ts", 160); // 160 is the latter `vueTemplateHtml` position - assert.isDefined(definitions); + expect(definitions).to.exist; // tslint:disable-line no-unused-expression }); }); } \ No newline at end of file diff --git a/src/harness/unittests/moduleResolution.ts b/src/harness/unittests/moduleResolution.ts index 1c18ac273ae..d9a39aeba65 100644 --- a/src/harness/unittests/moduleResolution.ts +++ b/src/harness/unittests/moduleResolution.ts @@ -4,9 +4,9 @@ namespace ts { export function checkResolvedModule(expected: ResolvedModuleFull, actual: ResolvedModuleFull): boolean { if (!expected === !actual) { if (expected) { - assert(expected.resolvedFileName === actual.resolvedFileName, `'resolvedFileName': expected '${expected.resolvedFileName}' to be equal to '${actual.resolvedFileName}'`); - assert(expected.extension === actual.extension, `'ext': expected '${expected.extension}' to be equal to '${actual.extension}'`); - assert(expected.isExternalLibraryImport === actual.isExternalLibraryImport, `'isExternalLibraryImport': expected '${expected.isExternalLibraryImport}' to be equal to '${actual.isExternalLibraryImport}'`); + assert.isTrue(expected.resolvedFileName === actual.resolvedFileName, `'resolvedFileName': expected '${expected.resolvedFileName}' to be equal to '${actual.resolvedFileName}'`); + assert.isTrue(expected.extension === actual.extension, `'ext': expected '${expected.extension}' to be equal to '${actual.extension}'`); + assert.isTrue(expected.isExternalLibraryImport === actual.isExternalLibraryImport, `'isExternalLibraryImport': expected '${expected.isExternalLibraryImport}' to be equal to '${actual.isExternalLibraryImport}'`); } return true; } @@ -14,7 +14,7 @@ namespace ts { } export function checkResolvedModuleWithFailedLookupLocations(actual: ResolvedModuleWithFailedLookupLocations, expectedResolvedModule: ResolvedModuleFull, expectedFailedLookupLocations: string[]): void { - assert(actual.resolvedModule !== undefined, "module should be resolved"); + assert.isTrue(actual.resolvedModule !== undefined, "module should be resolved"); checkResolvedModule(actual.resolvedModule, expectedResolvedModule); assert.deepEqual(actual.failedLookupLocations, expectedFailedLookupLocations); } @@ -58,7 +58,7 @@ namespace ts { realpath, directoryExists: path => directories.has(path), fileExists: path => { - assert(directories.has(getDirectoryPath(path)), `'fileExists' '${path}' request in non-existing directory`); + assert.isTrue(directories.has(getDirectoryPath(path)), `'fileExists' '${path}' request in non-existing directory`); return map.has(path); } }; @@ -351,7 +351,7 @@ namespace ts { // try to get file using a relative name for (const relativeFileName of relativeNamesToCheck) { - assert(program.getSourceFile(relativeFileName) !== undefined, `expected to get file by relative name, got undefined`); + assert.isTrue(program.getSourceFile(relativeFileName) !== undefined, `expected to get file by relative name, got undefined`); } } @@ -1074,7 +1074,7 @@ import b = require("./moduleB"); assert.equal(diagnostics1.length, 1, "expected one diagnostic"); createProgram(names, {}, compilerHost, program1); - assert(program1.structureIsReused === StructureIsReused.Completely); + assert.isTrue(program1.structureIsReused === StructureIsReused.Completely); const diagnostics2 = program1.getFileProcessingDiagnostics().getDiagnostics(); assert.equal(diagnostics2.length, 1, "expected one diagnostic"); assert.equal(diagnostics1[0].messageText, diagnostics2[0].messageText, "expected one diagnostic"); diff --git a/src/harness/unittests/programMissingFiles.ts b/src/harness/unittests/programMissingFiles.ts index e6e2b9af714..2a7f6d24ea7 100644 --- a/src/harness/unittests/programMissingFiles.ts +++ b/src/harness/unittests/programMissingFiles.ts @@ -6,7 +6,7 @@ namespace ts { const map = arrayToSet(expected) as Map; for (const missing of missingPaths) { const value = map.get(missing); - assert(value, `${missing} to be ${value === undefined ? "not present" : "present only once"}, in actual: ${missingPaths} expected: ${expected}`); + assert.isTrue(value, `${missing} to be ${value === undefined ? "not present" : "present only once"}, in actual: ${missingPaths} expected: ${expected}`); map.set(missing, false); } const notFound = arrayFrom(mapDefinedIterator(map.keys(), k => map.get(k) === true ? k : undefined)); diff --git a/src/harness/unittests/projectErrors.ts b/src/harness/unittests/projectErrors.ts index d146b3af080..dae465a3ef3 100644 --- a/src/harness/unittests/projectErrors.ts +++ b/src/harness/unittests/projectErrors.ts @@ -5,7 +5,7 @@ namespace ts.projectSystem { describe("Project errors", () => { function checkProjectErrors(projectFiles: server.ProjectFilesWithTSDiagnostics, expectedErrors: ReadonlyArray): void { - assert(projectFiles !== undefined, "missing project files"); + assert.isTrue(projectFiles !== undefined, "missing project files"); checkProjectErrorsWorker(projectFiles.projectErrors, expectedErrors); } @@ -15,7 +15,7 @@ namespace ts.projectSystem { for (let i = 0; i < errors.length; i++) { const actualMessage = flattenDiagnosticMessageText(errors[i].messageText, "\n"); const expectedMessage = expectedErrors[i]; - assert(actualMessage.indexOf(expectedMessage) === 0, `error message does not match, expected ${actualMessage} to start with ${expectedMessage}`); + assert.isTrue(actualMessage.indexOf(expectedMessage) === 0, `error message does not match, expected ${actualMessage} to start with ${expectedMessage}`); } } } @@ -24,7 +24,7 @@ namespace ts.projectSystem { assert.equal(errors ? errors.length : 0, expectedErrors.length, `expected ${expectedErrors.length} error in the list`); if (expectedErrors.length) { zipWith(errors, expectedErrors, ({ message: actualMessage }, expectedMessage) => { - assert(startsWith(actualMessage, actualMessage), `error message does not match, expected ${actualMessage} to start with ${expectedMessage}`); + assert.isTrue(startsWith(actualMessage, actualMessage), `error message does not match, expected ${actualMessage} to start with ${expectedMessage}`); }); } } @@ -137,13 +137,13 @@ namespace ts.projectSystem { { projectService.checkNumberOfProjects({ configuredProjects: 1 }); const configuredProject = forEach(projectService.synchronizeProjectList([]), f => f.info.projectName === corruptedConfig.path && f); - assert(configuredProject !== undefined, "should find configured project"); + assert.isTrue(configuredProject !== undefined, "should find configured project"); checkProjectErrors(configuredProject, []); const projectErrors = configuredProjectAt(projectService, 0).getAllProjectErrors(); checkProjectErrorsWorker(projectErrors, [ "'{' expected." ]); - assert.isDefined(projectErrors[0].file); + assert.isNotNull(projectErrors[0].file); assert.equal(projectErrors[0].file.fileName, corruptedConfig.path); } // fix config and trigger watcher @@ -151,7 +151,7 @@ namespace ts.projectSystem { { projectService.checkNumberOfProjects({ configuredProjects: 1 }); const configuredProject = forEach(projectService.synchronizeProjectList([]), f => f.info.projectName === corruptedConfig.path && f); - assert(configuredProject !== undefined, "should find configured project"); + assert.isTrue(configuredProject !== undefined, "should find configured project"); checkProjectErrors(configuredProject, []); const projectErrors = configuredProjectAt(projectService, 0).getAllProjectErrors(); checkProjectErrorsWorker(projectErrors, []); @@ -182,7 +182,7 @@ namespace ts.projectSystem { { projectService.checkNumberOfProjects({ configuredProjects: 1 }); const configuredProject = forEach(projectService.synchronizeProjectList([]), f => f.info.projectName === corruptedConfig.path && f); - assert(configuredProject !== undefined, "should find configured project"); + assert.isTrue(configuredProject !== undefined, "should find configured project"); checkProjectErrors(configuredProject, []); const projectErrors = configuredProjectAt(projectService, 0).getAllProjectErrors(); checkProjectErrorsWorker(projectErrors, []); @@ -192,13 +192,13 @@ namespace ts.projectSystem { { projectService.checkNumberOfProjects({ configuredProjects: 1 }); const configuredProject = forEach(projectService.synchronizeProjectList([]), f => f.info.projectName === corruptedConfig.path && f); - assert(configuredProject !== undefined, "should find configured project"); + assert.isTrue(configuredProject !== undefined, "should find configured project"); checkProjectErrors(configuredProject, []); const projectErrors = configuredProjectAt(projectService, 0).getAllProjectErrors(); checkProjectErrorsWorker(projectErrors, [ "'{' expected." ]); - assert.isDefined(projectErrors[0].file); + assert.isNotNull(projectErrors[0].file); assert.equal(projectErrors[0].file.fileName, corruptedConfig.path); } }); diff --git a/src/harness/unittests/reuseProgramStructure.ts b/src/harness/unittests/reuseProgramStructure.ts index a7298c835cd..1c0a210f442 100644 --- a/src/harness/unittests/reuseProgramStructure.ts +++ b/src/harness/unittests/reuseProgramStructure.ts @@ -193,14 +193,14 @@ namespace ts { function checkCache(caption: string, program: Program, fileName: string, expectedContent: Map, getCache: (f: SourceFile) => Map, entryChecker: (expected: T, original: T) => boolean): void { const file = program.getSourceFile(fileName); - assert(file !== undefined, `cannot find file ${fileName}`); + assert.isTrue(file !== undefined, `cannot find file ${fileName}`); const cache = getCache(file); if (expectedContent === undefined) { - assert(cache === undefined, `expected ${caption} to be undefined`); + assert.isTrue(cache === undefined, `expected ${caption} to be undefined`); } else { - assert(cache !== undefined, `expected ${caption} to be set`); - assert(mapsAreEqual(expectedContent, cache, entryChecker), `contents of ${caption} did not match the expected contents.`); + assert.isTrue(cache !== undefined, `expected ${caption} to be set`); + assert.isTrue(mapsAreEqual(expectedContent, cache, entryChecker), `contents of ${caption} did not match the expected contents.`); } } @@ -329,7 +329,7 @@ namespace ts { const options: CompilerOptions = { target, noLib: true }; const program1 = newProgram(files, ["a.ts"], options); - assert(program1.getMissingFilePaths().length !== 0); + assert.notDeepEqual(emptyArray, program1.getMissingFilePaths()); const program2 = updateProgram(program1, ["a.ts"], options, noop); assert.deepEqual(program1.getMissingFilePaths(), program2.getMissingFilePaths()); @@ -341,11 +341,11 @@ namespace ts { const options: CompilerOptions = { target, noLib: true }; const program1 = newProgram(files, ["a.ts"], options); - assert(program1.getMissingFilePaths().length !== 0); + assert.notDeepEqual(emptyArray, program1.getMissingFilePaths()); const newTexts: NamedSourceText[] = files.concat([{ name: "non-existing-file.ts", text: SourceText.New("", "", `var x = 1`) }]); const program2 = updateProgram(program1, ["a.ts"], options, noop, newTexts); - assert.lengthOf(program2.getMissingFilePaths(), 0); + assert.deepEqual(emptyArray, program2.getMissingFilePaths()); assert.equal(StructureIsReused.Not, program1.structureIsReused); }); @@ -839,12 +839,12 @@ namespace ts { updateProgramText(files, root, "const x = 1;"); }); assert.equal(program1.structureIsReused, StructureIsReused.Completely); - assert.lengthOf(program2.getSemanticDiagnostics(), 0); + assert.deepEqual(program2.getSemanticDiagnostics(), emptyArray); }); it("Target changes -> redirect broken", () => { const program1 = createRedirectProgram(); - assert.lengthOf(program1.getSemanticDiagnostics(), 0); + assert.deepEqual(program1.getSemanticDiagnostics(), emptyArray); const program2 = updateRedirectProgram(program1, files => { updateProgramText(files, axIndex, "export default class X { private x: number; private y: number; }"); @@ -873,7 +873,7 @@ namespace ts { updateProgramText(files, bxPackage, JSON.stringify({ name: "x", version: "1.2.3" })); }); assert.equal(program1.structureIsReused, StructureIsReused.Not); - assert.lengthOf(program2.getSemanticDiagnostics(), 0); + assert.deepEqual(program2.getSemanticDiagnostics(), []); }); }); }); @@ -901,7 +901,7 @@ namespace ts { /*hasInvalidatedResolution*/ returnFalse, /*hasChangedAutomaticTypeDirectiveNames*/ false ); - assert(actual); + assert.isTrue(actual); } function duplicate(options: CompilerOptions): CompilerOptions; diff --git a/src/harness/unittests/services/colorization.ts b/src/harness/unittests/services/colorization.ts index b03285d3333..17d4132e9e5 100644 --- a/src/harness/unittests/services/colorization.ts +++ b/src/harness/unittests/services/colorization.ts @@ -50,7 +50,7 @@ describe("Colorization", () => { const actualEntry = getEntryAtPosition(result, actualEntryPosition); - assert.isDefined(actualEntry, "Could not find classification entry for '" + expectedEntry.value + "' at position: " + actualEntryPosition); + assert(actualEntry, "Could not find classification entry for '" + expectedEntry.value + "' at position: " + actualEntryPosition); assert.equal(actualEntry.classification, expectedEntry.classification, "Classification class does not match expected. Expected: " + ts.TokenClass[expectedEntry.classification] + ", Actual: " + ts.TokenClass[actualEntry.classification]); assert.equal(actualEntry.length, expectedEntry.value.length, "Classification length does not match expected. Expected: " + ts.TokenClass[expectedEntry.value.length] + ", Actual: " + ts.TokenClass[actualEntry.length]); } diff --git a/src/harness/unittests/services/patternMatcher.ts b/src/harness/unittests/services/patternMatcher.ts index 62946afde37..fef382e8a3b 100644 --- a/src/harness/unittests/services/patternMatcher.ts +++ b/src/harness/unittests/services/patternMatcher.ts @@ -140,25 +140,25 @@ describe("PatternMatcher", () => { it("PreferCaseSensitiveCamelCaseMatchToLongPattern1", () => { const match = getFirstMatch("FogBar", "FBB"); - assert(match === undefined); + assert.isTrue(match === undefined); }); it("PreferCaseSensitiveCamelCaseMatchToLongPattern2", () => { const match = getFirstMatch("FogBar", "FoooB"); - assert(match === undefined); + assert.isTrue(match === undefined); }); it("CamelCaseMatchPartiallyUnmatched", () => { const match = getFirstMatch("FogBarBaz", "FZ"); - assert(match === undefined); + assert.isTrue(match === undefined); }); it("CamelCaseMatchCompletelyUnmatched", () => { const match = getFirstMatch("FogBarBaz", "ZZ"); - assert(match === undefined); + assert.isTrue(match === undefined); }); it("TwoUppercaseCharacters", () => { @@ -220,7 +220,7 @@ describe("PatternMatcher", () => { it("PreferCaseSensitiveMiddleUnderscore3", () => { const match = getFirstMatch("Fog_Bar", "F__B"); - assert(undefined === match); + assert.isTrue(undefined === match); }); it("PreferCaseSensitiveMiddleUnderscore4", () => { @@ -264,25 +264,25 @@ describe("PatternMatcher", () => { it("AllLowerPattern1", () => { const match = getFirstMatch("FogBarChangedEventArgs", "changedeventargs"); - assert(undefined !== match); + assert.isTrue(undefined !== match); }); it("AllLowerPattern2", () => { const match = getFirstMatch("FogBarChangedEventArgs", "changedeventarrrgh"); - assert(undefined === match); + assert.isTrue(undefined === match); }); it("AllLowerPattern3", () => { const match = getFirstMatch("ABCDEFGH", "bcd"); - assert(undefined !== match); + assert.isTrue(undefined !== match); }); it("AllLowerPattern4", () => { const match = getFirstMatch("AbcdefghijEfgHij", "efghij"); - assert(undefined === match); + assert.isTrue(undefined === match); }); }); @@ -370,13 +370,13 @@ describe("PatternMatcher", () => { it("BlankPattern", () => { const matches = getAllMatches("AddMetadataReference", ""); - assert(matches === undefined); + assert.isTrue(matches === undefined); }); it("WhitespaceOnlyPattern", () => { const matches = getAllMatches("AddMetadataReference", " "); - assert(matches === undefined); + assert.isTrue(matches === undefined); }); it("EachWordSeparately1", () => { @@ -403,13 +403,13 @@ describe("PatternMatcher", () => { it("MixedCasing", () => { const matches = getAllMatches("AddMetadataReference", "mEta"); - assert(matches === undefined); + assert.isTrue(matches === undefined); }); it("MixedCasing2", () => { const matches = getAllMatches("AddMetadataReference", "Data"); - assert(matches === undefined); + assert.isTrue(matches === undefined); }); it("AsteriskSplit", () => { @@ -421,7 +421,7 @@ describe("PatternMatcher", () => { it("LowercaseSubstring1", () => { const matches = getAllMatches("Operator", "a"); - assert(matches === undefined); + assert.isTrue(matches === undefined); }); it("LowercaseSubstring2", () => { @@ -441,7 +441,7 @@ describe("PatternMatcher", () => { it("DottedPattern2", () => { const match = getFirstMatchForDottedPattern("Foo.Bar.Baz", "Quux", "C.Q"); - assert(match === undefined); + assert.isTrue(match === undefined); }); it("DottedPattern3", () => { @@ -464,13 +464,13 @@ describe("PatternMatcher", () => { it("DottedPattern6", () => { const match = getFirstMatchForDottedPattern("Foo.Bar.Baz", "Quux", "F.F.B.B.Quux"); - assert(match === undefined); + assert.isTrue(match === undefined); }); it("DottedPattern7", () => { let match = getFirstMatch("UIElement", "UIElement"); match = getFirstMatch("GetKeyword", "UIElement"); - assert(match === undefined); + assert.isTrue(match === undefined); }); }); @@ -508,8 +508,8 @@ describe("PatternMatcher", () => { } function assertInRange(val: number, low: number, high: number) { - assert(val >= low); - assert(val <= high); + assert.isTrue(val >= low); + assert.isTrue(val <= high); } function verifyBreakIntoCharacterSpans(original: string, ...parts: string[]): void { @@ -521,6 +521,6 @@ describe("PatternMatcher", () => { } function assertContainsKind(kind: ts.PatternMatchKind, results: ts.PatternMatch[]) { - assert(ts.forEach(results, r => r.kind === kind)); + assert.isTrue(ts.forEach(results, r => r.kind === kind)); } }); diff --git a/src/harness/unittests/services/preProcessFile.ts b/src/harness/unittests/services/preProcessFile.ts index acbb8edd67c..1e13bc3e345 100644 --- a/src/harness/unittests/services/preProcessFile.ts +++ b/src/harness/unittests/services/preProcessFile.ts @@ -18,7 +18,7 @@ describe("PreProcessFile:", () => { return; } if (!expected) { - assert(false, `Expected ${JSON.stringify(expected)}, got ${JSON.stringify(actual)}`); + assert.isTrue(false, `Expected ${JSON.stringify(expected)}, got ${JSON.stringify(actual)}`); } assert.equal(actual.length, expected.length, `[${kind}] Actual array's length does not match expected length. Expected files: ${JSON.stringify(expected)}, actual files: ${JSON.stringify(actual)}`); diff --git a/src/harness/unittests/session.ts b/src/harness/unittests/session.ts index 75660f75f32..f46e173716c 100644 --- a/src/harness/unittests/session.ts +++ b/src/harness/unittests/session.ts @@ -1,5 +1,7 @@ /// +const expect: typeof _chai.expect = _chai.expect; + namespace ts.server { let lastWrittenToHost: string; const mockHost: ServerHost = { @@ -80,7 +82,7 @@ namespace ts.server { } }; - assert.throws(() => session.executeCommand(req)); + expect(() => session.executeCommand(req)).to.throw(); }); it("should output an error response when a command does not exist", () => { const req: protocol.Request = { @@ -99,7 +101,7 @@ namespace ts.server { request_seq: 0, success: false }; - assert.deepEqual(lastSent, expected); + expect(lastSent).to.deep.equal(expected); }); it("should return a tuple containing the response and if a response is required on success", () => { const req: protocol.ConfigureRequest = { @@ -114,18 +116,17 @@ namespace ts.server { } }; - assert.deepEqual(session.executeCommand(req), { + expect(session.executeCommand(req)).to.deep.equal({ responseRequired: false }); - const expected: protocol.Response = { + expect(lastSent).to.deep.equal({ command: CommandNames.Configure, type: "response", success: true, request_seq: 0, seq: 0, body: undefined - }; - assert.deepEqual(lastSent, expected); + }); }); it("should handle literal types in request", () => { const configureRequest: protocol.ConfigureRequest = { @@ -310,15 +311,14 @@ namespace ts.server { session.onMessage(JSON.stringify(req)); - const expected: protocol.ConfigureResponse = { + expect(lastSent).to.deep.equal({ command: CommandNames.Configure, type: "response", success: true, request_seq: 0, seq: 0, body: undefined - }; - assert.deepEqual(lastSent, expected); + }); }); }); @@ -330,9 +330,9 @@ namespace ts.server { const resultMsg = `Content-Length: ${len}\r\n\r\n${strmsg}\n`; session.send = Session.prototype.send; - assert.isDefined(session.send); - session.send(msg); - assert.equal(lastWrittenToHost, resultMsg); + assert(session.send); + expect(session.send(msg)).to.not.exist; // tslint:disable-line no-unused-expression + expect(lastWrittenToHost).to.equal(resultMsg); }); }); @@ -349,7 +349,11 @@ namespace ts.server { session.addProtocolHandler(command, () => result); - assert.deepEqual(session.executeCommand({ command, seq: 0, type: "request" }), result); + expect(session.executeCommand({ + command, + seq: 0, + type: "request" + })).to.deep.equal(result); }); it("throws when a duplicate handler is passed", () => { const respBody = { @@ -363,7 +367,8 @@ namespace ts.server { session.addProtocolHandler(command, () => resp); - assert.throws(() => session.addProtocolHandler(command, () => resp), `Protocol handler already exists for command "${command}"`); + expect(() => session.addProtocolHandler(command, () => resp)) + .to.throw(`Protocol handler already exists for command "${command}"`); }); }); @@ -376,13 +381,12 @@ namespace ts.server { session.event(info, evt); - const expected: protocol.Event = { + expect(lastSent).to.deep.equal({ type: "event", seq: 0, event: evt, body: info - }; - assert.deepEqual(lastSent, expected); + }); }); }); @@ -397,15 +401,14 @@ namespace ts.server { session.output(body, command, /*reqSeq*/ 0); - const expected: protocol.Response = { + expect(lastSent).to.deep.equal({ seq: 0, request_seq: 0, type: "response", command, body, success: true - }; - assert.deepEqual(lastSent, expected); + }); }); }); }); @@ -466,16 +469,14 @@ namespace ts.server { session.onMessage(JSON.stringify(request)); const lastSent = session.lastSent as protocol.Response; - assert.deepEqual({ ...lastSent, message: undefined }, { - request_seq: 0, + expect(lastSent).to.contain({ seq: 0, type: "response", command, - success: false, - message: undefined, + success: false }); - assert(ts.stringContains(lastSent.message, "myMessage") && ts.stringContains(lastSent.message, "f1")); + expect(lastSent.message).has.string("myMessage").and.has.string("f1"); }); }); @@ -515,24 +516,23 @@ namespace ts.server { session.output(body, command, /*reqSeq*/ 0); - const expected: protocol.Response = { + expect(session.lastSent).to.deep.equal({ seq: 0, request_seq: 0, type: "response", command, body, success: true - }; - assert.deepEqual(session.lastSent, expected); + }); }); it("can add and respond to new protocol handlers", () => { const session = new TestSession(); - assert.deepEqual(session.executeCommand({ + expect(session.executeCommand({ seq: 0, type: "request", command: session.customHandler - }), { + })).to.deep.equal({ response: undefined, responseRequired: true }); @@ -542,7 +542,8 @@ namespace ts.server { new class extends TestSession { constructor() { super(); - assert(this.projectService instanceof ProjectService); + assert(this.projectService); + expect(this.projectService).to.be.instanceOf(ProjectService); } }(); }); @@ -666,9 +667,9 @@ namespace ts.server { // Add an event handler cli.on("testevent", (eventinfo) => { - assert.equal(eventinfo, toEvent); + expect(eventinfo).to.equal(toEvent); responses++; - assert.equal(responses, 1); + expect(responses).to.equal(1); }); // Trigger said event from the server @@ -678,8 +679,8 @@ namespace ts.server { cli.execute("echo", toEcho, (resp) => { assert(resp.success, resp.message); responses++; - assert.equal(responses, 2); - assert.deepEqual(resp.body, toEcho); + expect(responses).to.equal(2); + expect(resp.body).to.deep.equal(toEcho); }); // Queue a configure command @@ -691,7 +692,7 @@ namespace ts.server { }, (resp) => { assert(resp.success, resp.message); responses++; - assert.equal(responses, 3); + expect(responses).to.equal(3); done(); }); diff --git a/src/harness/unittests/textStorage.ts b/src/harness/unittests/textStorage.ts index 78a736487cc..aa8231aa31a 100644 --- a/src/harness/unittests/textStorage.ts +++ b/src/harness/unittests/textStorage.ts @@ -33,20 +33,20 @@ namespace ts.textStorage { for (let offset = 0; offset < end - start; offset++) { const pos1 = ts1.lineOffsetToPosition(line + 1, offset + 1); const pos2 = ts2.lineOffsetToPosition(line + 1, offset + 1); - assert(pos1 === pos2, `lineOffsetToPosition ${line + 1}-${offset + 1}: expected ${pos1} to equal ${pos2}`); + assert.isTrue(pos1 === pos2, `lineOffsetToPosition ${line + 1}-${offset + 1}: expected ${pos1} to equal ${pos2}`); } const {start: start1, length: length1 } = ts1.lineToTextSpan(line); const {start: start2, length: length2 } = ts2.lineToTextSpan(line); - assert(start1 === start2, `lineToTextSpan ${line}::start:: expected ${start1} to equal ${start2}`); - assert(length1 === length2, `lineToTextSpan ${line}::length:: expected ${length1} to equal ${length2}`); + assert.isTrue(start1 === start2, `lineToTextSpan ${line}::start:: expected ${start1} to equal ${start2}`); + assert.isTrue(length1 === length2, `lineToTextSpan ${line}::length:: expected ${length1} to equal ${length2}`); } for (let pos = 0; pos < f.content.length; pos++) { const { line: line1, offset: offset1 } = ts1.positionToLineOffset(pos); const { line: line2, offset: offset2 } = ts2.positionToLineOffset(pos); - assert(line1 === line2, `positionToLineOffset ${pos}::line:: expected ${line1} to equal ${line2}`); - assert(offset1 === offset2, `positionToLineOffset ${pos}::offset:: expected ${offset1} to equal ${offset2}`); + assert.isTrue(line1 === line2, `positionToLineOffset ${pos}::line:: expected ${line1} to equal ${line2}`); + assert.isTrue(offset1 === offset2, `positionToLineOffset ${pos}::offset:: expected ${offset1} to equal ${offset2}`); } }); @@ -55,16 +55,16 @@ namespace ts.textStorage { const ts1 = new server.TextStorage(host, server.asNormalizedPath(f.path)); ts1.getSnapshot(); - assert(!ts1.hasScriptVersionCache_TestOnly(), "should not have script version cache - 1"); + assert.isTrue(!ts1.hasScriptVersionCache_TestOnly(), "should not have script version cache - 1"); ts1.edit(0, 5, " "); - assert(ts1.hasScriptVersionCache_TestOnly(), "have script version cache - 1"); + assert.isTrue(ts1.hasScriptVersionCache_TestOnly(), "have script version cache - 1"); ts1.useText(); - assert(!ts1.hasScriptVersionCache_TestOnly(), "should not have script version cache - 2"); + assert.isTrue(!ts1.hasScriptVersionCache_TestOnly(), "should not have script version cache - 2"); ts1.getLineInfo(0); - assert(ts1.hasScriptVersionCache_TestOnly(), "have script version cache - 2"); + assert.isTrue(ts1.hasScriptVersionCache_TestOnly(), "have script version cache - 2"); }); }); } diff --git a/src/harness/unittests/tscWatchMode.ts b/src/harness/unittests/tscWatchMode.ts index bab45765a96..758a55b8f95 100644 --- a/src/harness/unittests/tscWatchMode.ts +++ b/src/harness/unittests/tscWatchMode.ts @@ -133,7 +133,7 @@ namespace ts.tscWatch { function assertWatchDiagnosticAt(host: WatchedSystem, outputAt: number, diagnosticMessage: DiagnosticMessage) { const output = host.getOutput()[outputAt]; - assert(endsWith(output, getWatchDiagnosticWithoutDate(host, diagnosticMessage)), "outputs[" + outputAt + "] is " + output); + assert.isTrue(endsWith(output, getWatchDiagnosticWithoutDate(host, diagnosticMessage)), "outputs[" + outputAt + "] is " + output); } function getWatchDiagnosticWithoutDate(host: WatchedSystem, diagnosticMessage: DiagnosticMessage) { @@ -1543,11 +1543,11 @@ namespace ts.tscWatch { function verifyEmittedFiles(host: WatchedSystem, emittedFiles: EmittedFile[]) { for (const { path, content, shouldBeWritten } of emittedFiles) { if (shouldBeWritten) { - assert(host.fileExists(path), `Expected file ${path} to be present`); + assert.isTrue(host.fileExists(path), `Expected file ${path} to be present`); assert.equal(host.readFile(path), content, `Contents of file ${path} do not match`); } else { - assert(!host.fileExists(path), `Expected file ${path} to be absent`); + assert.isNotTrue(host.fileExists(path), `Expected file ${path} to be absent`); } } } @@ -1723,7 +1723,7 @@ namespace ts.tscWatch { return false; } fileExistsIsCalled = true; - assert(fileName.indexOf("/f2.") !== -1); + assert.isTrue(fileName.indexOf("/f2.") !== -1); return originalFileExists.call(host, fileName); }; @@ -1738,7 +1738,7 @@ namespace ts.tscWatch { getDiagnosticModuleNotFoundOfFile(watch(), root, "f2") ], /*errorsPosition*/ ExpectedOutputErrorsPosition.AfterFileChangeDetected); - assert(fileExistsIsCalled); + assert.isTrue(fileExistsIsCalled); } { let fileExistsCalled = false; @@ -1747,7 +1747,7 @@ namespace ts.tscWatch { return false; } fileExistsCalled = true; - assert(fileName.indexOf("/f1.") !== -1); + assert.isTrue(fileName.indexOf("/f1.") !== -1); return originalFileExists.call(host, fileName); }; @@ -1758,7 +1758,7 @@ namespace ts.tscWatch { host.runQueuedTimeoutCallbacks(); checkOutputErrors(host, [f1IsNotModule, cannotFindFoo], /*errorsPosition*/ ExpectedOutputErrorsPosition.AfterFileChangeDetected); - assert(fileExistsCalled); + assert.isTrue(fileExistsCalled); } }); @@ -1791,7 +1791,7 @@ namespace ts.tscWatch { const watch = createWatchModeWithoutConfigFile([root.path], host, { module: ModuleKind.AMD }); - assert(fileExistsCalledForBar, "'fileExists' should be called"); + assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called"); checkOutputErrors(host, [ getDiagnosticModuleNotFoundOfFile(watch(), root, "bar") ], /*errorsPosition*/ ExpectedOutputErrorsPosition.AfterCompilationStarting); @@ -1802,7 +1802,7 @@ namespace ts.tscWatch { host.runQueuedTimeoutCallbacks(); checkOutputErrors(host, emptyArray, /*errorsPosition*/ ExpectedOutputErrorsPosition.AfterFileChangeDetected); - assert(fileExistsCalledForBar, "'fileExists' should be called."); + assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called."); }); it("should compile correctly when resolved module goes missing and then comes back (module is not part of the root)", () => { @@ -1833,13 +1833,13 @@ namespace ts.tscWatch { const watch = createWatchModeWithoutConfigFile([root.path], host, { module: ModuleKind.AMD }); - assert(fileExistsCalledForBar, "'fileExists' should be called"); + assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called"); checkOutputErrors(host, emptyArray, /*errorsPosition*/ ExpectedOutputErrorsPosition.AfterCompilationStarting); fileExistsCalledForBar = false; host.reloadFS(files); host.runQueuedTimeoutCallbacks(); - assert(fileExistsCalledForBar, "'fileExists' should be called."); + assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called."); checkOutputErrors(host, [ getDiagnosticModuleNotFoundOfFile(watch(), root, "bar") ], /*errorsPosition*/ ExpectedOutputErrorsPosition.AfterFileChangeDetected); @@ -1848,7 +1848,7 @@ namespace ts.tscWatch { host.reloadFS(filesWithImported); host.checkTimeoutQueueLengthAndRun(1); checkOutputErrors(host, emptyArray, /*errorsPosition*/ ExpectedOutputErrorsPosition.AfterFileChangeDetected); - assert(fileExistsCalledForBar, "'fileExists' should be called."); + assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called."); }); it("works when module resolution changes to ambient module", () => { @@ -2050,7 +2050,7 @@ declare module "fs" { checkProgramActualFiles(watch(), mapDefined(files, f => f === configFile ? undefined : f.path)); const outputFile1 = changeExtension((outputFolder + getBaseFileName(file1.path)), ".js"); - assert(host.fileExists(outputFile1)); + assert.isTrue(host.fileExists(outputFile1)); assert.equal(host.readFile(outputFile1), file1.content + host.newLine); }); }); diff --git a/src/harness/unittests/tsconfigParsing.ts b/src/harness/unittests/tsconfigParsing.ts index 0f03b5630b3..8d56360bba5 100644 --- a/src/harness/unittests/tsconfigParsing.ts +++ b/src/harness/unittests/tsconfigParsing.ts @@ -11,20 +11,20 @@ namespace ts { function assertParseError(jsonText: string) { const parsed = ts.parseConfigFileTextToJson("/apath/tsconfig.json", jsonText); assert.deepEqual(parsed.config, {}); - assert(undefined !== parsed.error); + assert.isTrue(undefined !== parsed.error); } function assertParseErrorWithExcludesKeyword(jsonText: string) { { const parsed = ts.parseConfigFileTextToJson("/apath/tsconfig.json", jsonText); const parsedCommand = ts.parseJsonConfigFileContent(parsed.config, ts.sys, "tests/cases/unittests"); - assert(parsedCommand.errors && parsedCommand.errors.length === 1 && + assert.isTrue(parsedCommand.errors && parsedCommand.errors.length === 1 && parsedCommand.errors[0].code === ts.Diagnostics.Unknown_option_excludes_Did_you_mean_exclude.code); } { const parsed = ts.parseJsonText("/apath/tsconfig.json", jsonText); const parsedCommand = ts.parseJsonSourceFileConfigFileContent(parsed, ts.sys, "tests/cases/unittests"); - assert(parsedCommand.errors && parsedCommand.errors.length === 1 && + assert.isTrue(parsedCommand.errors && parsedCommand.errors.length === 1 && parsedCommand.errors[0].code === ts.Diagnostics.Unknown_option_excludes_Did_you_mean_exclude.code); } } @@ -44,26 +44,26 @@ namespace ts { function assertParseFileList(jsonText: string, configFileName: string, basePath: string, allFileList: string[], expectedFileList: string[]) { { const parsed = getParsedCommandJson(jsonText, configFileName, basePath, allFileList); - assert(arrayIsEqualTo(parsed.fileNames.sort(), expectedFileList.sort())); + assert.isTrue(arrayIsEqualTo(parsed.fileNames.sort(), expectedFileList.sort())); } { const parsed = getParsedCommandJsonNode(jsonText, configFileName, basePath, allFileList); - assert(arrayIsEqualTo(parsed.fileNames.sort(), expectedFileList.sort())); + assert.isTrue(arrayIsEqualTo(parsed.fileNames.sort(), expectedFileList.sort())); } } function assertParseFileDiagnostics(jsonText: string, configFileName: string, basePath: string, allFileList: string[], expectedDiagnosticCode: number, noLocation?: boolean) { { const parsed = getParsedCommandJson(jsonText, configFileName, basePath, allFileList); - assert(parsed.errors.length >= 0); - assert(parsed.errors.filter(e => e.code === expectedDiagnosticCode).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)}`); + assert.isTrue(parsed.errors.length >= 0); + assert.isTrue(parsed.errors.filter(e => e.code === expectedDiagnosticCode).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)}`); } { const parsed = getParsedCommandJsonNode(jsonText, configFileName, basePath, allFileList); - assert(parsed.errors.length >= 0); - assert(parsed.errors.filter(e => e.code === expectedDiagnosticCode).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)}`); + assert.isTrue(parsed.errors.length >= 0); + assert.isTrue(parsed.errors.filter(e => e.code === expectedDiagnosticCode).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)}`); if (!noLocation) { - assert(parsed.errors.filter(e => e.code === expectedDiagnosticCode && e.file && e.start && e.length).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)} with location information`); + assert.isTrue(parsed.errors.filter(e => e.code === expectedDiagnosticCode && e.file && e.start && e.length).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)} with location information`); } } } @@ -241,7 +241,7 @@ namespace ts { }, files: ["file1.ts"] }; - assert(diagnostics.length === 2); + assert.isTrue(diagnostics.length === 2); assert.equal(JSON.stringify(configJsonObject), JSON.stringify(expectedResult)); }); diff --git a/src/harness/unittests/tsserverProjectSystem.ts b/src/harness/unittests/tsserverProjectSystem.ts index 39dde23b28a..6ced12b221f 100644 --- a/src/harness/unittests/tsserverProjectSystem.ts +++ b/src/harness/unittests/tsserverProjectSystem.ts @@ -468,8 +468,8 @@ namespace ts.projectSystem { assert.equal(outputs[index], server.formatMessage(expectedEvent, nullLogger, Utils.byteLength, session.host.newLine)); if (isMostRecent) { - assert.equal(events.length, index + 1, JSON.stringify(events)); - assert.equal(outputs.length, index + 1, JSON.stringify(outputs)); + assert.strictEqual(events.length, index + 1, JSON.stringify(events)); + assert.strictEqual(outputs.length, index + 1, JSON.stringify(outputs)); } } @@ -572,8 +572,8 @@ namespace ts.projectSystem { const projectService = createProjectService(host); const { configFileName, configFileErrors } = projectService.openClientFile(file1.path); - assert.isDefined(configFileName, "should find config file"); - assert(!configFileErrors || configFileErrors.length === 0, `expect no errors in config file, got ${JSON.stringify(configFileErrors)}`); + assert(configFileName, "should find config file"); + assert.isTrue(!configFileErrors || configFileErrors.length === 0, `expect no errors in config file, got ${JSON.stringify(configFileErrors)}`); checkNumberOfInferredProjects(projectService, 0); checkNumberOfConfiguredProjects(projectService, 1); @@ -612,8 +612,8 @@ namespace ts.projectSystem { const projectService = createProjectService(host); const { configFileName, configFileErrors } = projectService.openClientFile(file1.path); - assert.isDefined(configFileName, "should find config file"); - assert(!configFileErrors || configFileErrors.length === 0, `expect no errors in config file, got ${JSON.stringify(configFileErrors)}`); + assert(configFileName, "should find config file"); + assert.isTrue(!configFileErrors || configFileErrors.length === 0, `expect no errors in config file, got ${JSON.stringify(configFileErrors)}`); checkNumberOfInferredProjects(projectService, 0); checkNumberOfConfiguredProjects(projectService, 1); @@ -821,7 +821,7 @@ namespace ts.projectSystem { host.reloadFS([file1, commonFile2, libFile]); host.runQueuedTimeoutCallbacks(); checkNumberOfInferredProjects(projectService, 1); - assert.equal(projectService.inferredProjects[0], project, "Inferred project should be same"); + assert.strictEqual(projectService.inferredProjects[0], project, "Inferred project should be same"); checkProjectRootFiles(project, [file1.path]); checkProjectActualFiles(project, [file1.path, libFile.path, commonFile2.path]); diags = session.executeCommand(getErrRequest).response as server.protocol.Diagnostic[]; @@ -1024,11 +1024,11 @@ namespace ts.projectSystem { projectService.openExternalProject({ rootFiles: toExternalFiles([file1.path]), options: {}, projectFileName: proj1name }); const proj1 = projectService.findProject(proj1name); - assert(proj1.languageServiceEnabled); + assert.isTrue(proj1.languageServiceEnabled); projectService.openExternalProject({ rootFiles: toExternalFiles([file2.path]), options: {}, projectFileName: proj2name }); const proj2 = projectService.findProject(proj2name); - assert(proj2.languageServiceEnabled); + assert.isTrue(proj2.languageServiceEnabled); projectService.openExternalProject({ rootFiles: toExternalFiles([file3.path]), options: {}, projectFileName: proj3name }); const proj3 = projectService.findProject(proj3name); @@ -1100,18 +1100,18 @@ namespace ts.projectSystem { projectService.openClientFile(file1.path); checkNumberOfConfiguredProjects(projectService, 1); const project = projectService.configuredProjects.get(configFile.path); - assert(project.hasOpenRef()); // file1 + assert.isTrue(project.hasOpenRef()); // file1 projectService.closeClientFile(file1.path); checkNumberOfConfiguredProjects(projectService, 1); - assert.equal(projectService.configuredProjects.get(configFile.path), project); + assert.strictEqual(projectService.configuredProjects.get(configFile.path), project); assert.isFalse(project.hasOpenRef()); // No open files assert.isFalse(project.isClosed()); projectService.openClientFile(file2.path); checkNumberOfConfiguredProjects(projectService, 1); - assert.equal(projectService.configuredProjects.get(configFile.path), project); - assert(project.hasOpenRef()); // file2 + assert.strictEqual(projectService.configuredProjects.get(configFile.path), project); + assert.isTrue(project.hasOpenRef()); // file2 assert.isFalse(project.isClosed()); }); @@ -1134,18 +1134,18 @@ namespace ts.projectSystem { projectService.openClientFile(file1.path); checkNumberOfConfiguredProjects(projectService, 1); const project = projectService.configuredProjects.get(configFile.path); - assert(project.hasOpenRef()); // file1 + assert.isTrue(project.hasOpenRef()); // file1 projectService.closeClientFile(file1.path); checkNumberOfConfiguredProjects(projectService, 1); - assert.equal(projectService.configuredProjects.get(configFile.path), project); + assert.strictEqual(projectService.configuredProjects.get(configFile.path), project); assert.isFalse(project.hasOpenRef()); // No files assert.isFalse(project.isClosed()); projectService.openClientFile(libFile.path); checkNumberOfConfiguredProjects(projectService, 0); assert.isFalse(project.hasOpenRef()); // No files + project closed - assert(project.isClosed()); + assert.isTrue(project.isClosed()); }); it("should not close external project with no open files", () => { @@ -1233,28 +1233,28 @@ namespace ts.projectSystem { // open client file - should not lead to creation of inferred project projectService.openClientFile(file1.path, file1.content); checkNumberOfProjects(projectService, { configuredProjects: 2 }); - assert.equal(projectService.configuredProjects.get(config1.path), proj1); - assert.equal(projectService.configuredProjects.get(config2.path), proj2); + assert.strictEqual(projectService.configuredProjects.get(config1.path), proj1); + assert.strictEqual(projectService.configuredProjects.get(config2.path), proj2); projectService.openClientFile(file3.path, file3.content); checkNumberOfProjects(projectService, { configuredProjects: 2, inferredProjects: 1 }); - assert.equal(projectService.configuredProjects.get(config1.path), proj1); - assert.equal(projectService.configuredProjects.get(config2.path), proj2); + assert.strictEqual(projectService.configuredProjects.get(config1.path), proj1); + assert.strictEqual(projectService.configuredProjects.get(config2.path), proj2); projectService.closeExternalProject(externalProjectName); // open file 'file1' from configured project keeps project alive checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects: 1 }); - assert.equal(projectService.configuredProjects.get(config1.path), proj1); + assert.strictEqual(projectService.configuredProjects.get(config1.path), proj1); assert.isUndefined(projectService.configuredProjects.get(config2.path)); projectService.closeClientFile(file3.path); checkNumberOfProjects(projectService, { configuredProjects: 1 }); - assert.equal(projectService.configuredProjects.get(config1.path), proj1); + assert.strictEqual(projectService.configuredProjects.get(config1.path), proj1); assert.isUndefined(projectService.configuredProjects.get(config2.path)); projectService.closeClientFile(file1.path); checkNumberOfProjects(projectService, { configuredProjects: 1 }); - assert.equal(projectService.configuredProjects.get(config1.path), proj1); + assert.strictEqual(projectService.configuredProjects.get(config1.path), proj1); assert.isUndefined(projectService.configuredProjects.get(config2.path)); projectService.openClientFile(file2.path, file2.content); @@ -1286,14 +1286,14 @@ namespace ts.projectSystem { const completions1 = service.externalProjects[0].getLanguageService().getCompletionsAtPosition(f1.path, 2, { includeExternalModuleExports: false }); // should contain completions for string - assert(completions1.entries.some(e => e.name === "charAt"), "should contain 'charAt'"); + assert.isTrue(completions1.entries.some(e => e.name === "charAt"), "should contain 'charAt'"); assert.isFalse(completions1.entries.some(e => e.name === "toExponential"), "should not contain 'toExponential'"); service.closeClientFile(f2.path); const completions2 = service.externalProjects[0].getLanguageService().getCompletionsAtPosition(f1.path, 2, { includeExternalModuleExports: false }); // should contain completions for string assert.isFalse(completions2.entries.some(e => e.name === "charAt"), "should not contain 'charAt'"); - assert(completions2.entries.some(e => e.name === "toExponential"), "should contain 'toExponential'"); + assert.isTrue(completions2.entries.some(e => e.name === "toExponential"), "should contain 'toExponential'"); }); it("clear mixed content file after closing", () => { @@ -1317,7 +1317,7 @@ namespace ts.projectSystem { checkProjectActualFiles(service.externalProjects[0], [f1.path, f2.path, libFile.path]); const completions1 = service.externalProjects[0].getLanguageService().getCompletionsAtPosition(f1.path, 0, { includeExternalModuleExports: false }); - assert(completions1.entries.some(e => e.name === "somelongname"), "should contain 'somelongname'"); + assert.isTrue(completions1.entries.some(e => e.name === "somelongname"), "should contain 'somelongname'"); service.closeClientFile(f2.path); const completions2 = service.externalProjects[0].getLanguageService().getCompletionsAtPosition(f1.path, 0, { includeExternalModuleExports: false }); @@ -1387,16 +1387,16 @@ namespace ts.projectSystem { }); checkNumberOfProjects(projectService, { configuredProjects: 1 }); - assert.equal(projectService.configuredProjects.get(configFile.path), project); + assert.strictEqual(projectService.configuredProjects.get(configFile.path), project); projectService.closeExternalProject(externalProjectName); // configured project is alive since file is still open checkNumberOfProjects(projectService, { configuredProjects: 1 }); - assert.equal(projectService.configuredProjects.get(configFile.path), project); + assert.strictEqual(projectService.configuredProjects.get(configFile.path), project); projectService.closeClientFile(file1.path); checkNumberOfProjects(projectService, { configuredProjects: 1 }); - assert.equal(projectService.configuredProjects.get(configFile.path), project); + assert.strictEqual(projectService.configuredProjects.get(configFile.path), project); projectService.openClientFile(file2.path); checkNumberOfProjects(projectService, { inferredProjects: 1 }); @@ -1910,7 +1910,7 @@ namespace ts.projectSystem { // The configured project should now be updated to include html file checkNumberOfProjects(projectService, { configuredProjects: 1 }); - assert.equal(configuredProjectAt(projectService, 0), configuredProj, "Same configured project should be updated"); + assert.strictEqual(configuredProjectAt(projectService, 0), configuredProj, "Same configured project should be updated"); checkProjectActualFiles(configuredProjectAt(projectService, 0), [file1.path, file2.path, config.path]); // Open HTML file @@ -2176,18 +2176,18 @@ namespace ts.projectSystem { projectService.openClientFile(file2.path); checkNumberOfProjects(projectService, { configuredProjects: 1 }); const project1 = projectService.configuredProjects.get(tsconfig1.path); - assert(project1.hasOpenRef(), "Has open ref count in project1 - 1"); // file2 + assert.isTrue(project1.hasOpenRef(), "Has open ref count in project1 - 1"); // file2 assert.equal(project1.getScriptInfo(file2.path).containingProjects.length, 1, "containing projects count"); assert.isFalse(project1.isClosed()); projectService.openClientFile(file1.path); checkNumberOfProjects(projectService, { configuredProjects: 2 }); - assert(project1.hasOpenRef(), "Has open ref count in project1 - 2"); // file2 - assert.equal(projectService.configuredProjects.get(tsconfig1.path), project1); + assert.isTrue(project1.hasOpenRef(), "Has open ref count in project1 - 2"); // file2 + assert.strictEqual(projectService.configuredProjects.get(tsconfig1.path), project1); assert.isFalse(project1.isClosed()); const project2 = projectService.configuredProjects.get(tsconfig2.path); - assert(project2.hasOpenRef(), "Has open ref count in project2 - 2"); // file1 + assert.isTrue(project2.hasOpenRef(), "Has open ref count in project2 - 2"); // file1 assert.isFalse(project2.isClosed()); assert.equal(project1.getScriptInfo(file1.path).containingProjects.length, 2, `${file1.path} containing projects count`); @@ -2196,9 +2196,9 @@ namespace ts.projectSystem { projectService.closeClientFile(file2.path); checkNumberOfProjects(projectService, { configuredProjects: 2 }); assert.isFalse(project1.hasOpenRef(), "Has open ref count in project1 - 3"); // No files - assert(project2.hasOpenRef(), "Has open ref count in project2 - 3"); // file1 - assert.equal(projectService.configuredProjects.get(tsconfig1.path), project1); - assert.equal(projectService.configuredProjects.get(tsconfig2.path), project2); + assert.isTrue(project2.hasOpenRef(), "Has open ref count in project2 - 3"); // file1 + assert.strictEqual(projectService.configuredProjects.get(tsconfig1.path), project1); + assert.strictEqual(projectService.configuredProjects.get(tsconfig2.path), project2); assert.isFalse(project1.isClosed()); assert.isFalse(project2.isClosed()); @@ -2206,18 +2206,18 @@ namespace ts.projectSystem { checkNumberOfProjects(projectService, { configuredProjects: 2 }); assert.isFalse(project1.hasOpenRef(), "Has open ref count in project1 - 4"); // No files assert.isFalse(project2.hasOpenRef(), "Has open ref count in project2 - 4"); // No files - assert.equal(projectService.configuredProjects.get(tsconfig1.path), project1); - assert.equal(projectService.configuredProjects.get(tsconfig2.path), project2); + assert.strictEqual(projectService.configuredProjects.get(tsconfig1.path), project1); + assert.strictEqual(projectService.configuredProjects.get(tsconfig2.path), project2); assert.isFalse(project1.isClosed()); assert.isFalse(project2.isClosed()); projectService.openClientFile(file2.path); checkNumberOfProjects(projectService, { configuredProjects: 1 }); - assert.equal(projectService.configuredProjects.get(tsconfig1.path), project1); + assert.strictEqual(projectService.configuredProjects.get(tsconfig1.path), project1); assert.isUndefined(projectService.configuredProjects.get(tsconfig2.path)); - assert(project1.hasOpenRef(), "Has open ref count in project1 - 5"); // file2 + assert.isTrue(project1.hasOpenRef(), "Has open ref count in project1 - 5"); // file2 assert.isFalse(project1.isClosed()); - assert(project2.isClosed()); + assert.isTrue(project2.isClosed()); }); it("Open ref of configured project when open file gets added to the project as part of configured file update", () => { @@ -2255,7 +2255,7 @@ namespace ts.projectSystem { checkOpenFiles(projectService, files); checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects: 2 }); const configProject1 = projectService.configuredProjects.get(configFile.path); - assert(configProject1.hasOpenRef()); // file1 and file3 + assert.isTrue(configProject1.hasOpenRef()); // file1 and file3 checkProjectActualFiles(configProject1, [file1.path, file3.path, configFile.path]); const inferredProject1 = projectService.inferredProjects[0]; checkProjectActualFiles(inferredProject1, [file2.path]); @@ -2272,7 +2272,7 @@ namespace ts.projectSystem { checkNumberOfInferredProjects(projectService, 1); const inferredProject3 = projectService.inferredProjects[0]; checkProjectActualFiles(inferredProject3, [file4.path]); - assert.equal(inferredProject3, inferredProject2); + assert.strictEqual(inferredProject3, inferredProject2); projectService.closeClientFile(file1.path); projectService.closeClientFile(file2.path); @@ -2298,7 +2298,7 @@ namespace ts.projectSystem { checkNumberOfInferredProjects(projectService, 1); const inferredProject5 = projectService.inferredProjects[0]; checkProjectActualFiles(inferredProject4, [file4.path]); - assert.equal(inferredProject5, inferredProject4); + assert.strictEqual(inferredProject5, inferredProject4); const file5: FileOrFolder = { path: "/file5.ts", @@ -2307,13 +2307,13 @@ namespace ts.projectSystem { host.reloadFS(files.concat(configFile, file5)); projectService.openClientFile(file5.path); verifyScriptInfosAreUndefined([file1, file2, file3]); - assert.equal(projectService.getScriptInfoForPath(file4.path as Path), find(infos, info => info.path === file4.path)); + assert.strictEqual(projectService.getScriptInfoForPath(file4.path as Path), find(infos, info => info.path === file4.path)); assert.isDefined(projectService.getScriptInfoForPath(file5.path as Path)); checkOpenFiles(projectService, [file4, file5]); checkNumberOfConfiguredProjects(projectService, 0); function verifyScriptInfos() { - infos.forEach(info => assert.equal(projectService.getScriptInfoForPath(info.path), info)); + infos.forEach(info => assert.strictEqual(projectService.getScriptInfoForPath(info.path), info)); } function verifyScriptInfosAreUndefined(files: FileOrFolder[]) { @@ -2325,7 +2325,7 @@ namespace ts.projectSystem { function verifyConfiguredProjectStateAfterUpdate(hasOpenRef: boolean) { checkNumberOfConfiguredProjects(projectService, 1); const configProject2 = projectService.configuredProjects.get(configFile.path); - assert.equal(configProject2, configProject1); + assert.strictEqual(configProject2, configProject1); checkProjectActualFiles(configProject2, [file1.path, file2.path, file3.path, configFile.path]); assert.equal(configProject2.hasOpenRef(), hasOpenRef); } @@ -2364,7 +2364,7 @@ namespace ts.projectSystem { checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects: 1 }); const configuredProject = projectService.configuredProjects.get(configFile.path); - assert(configuredProject.hasOpenRef()); // file1 and file3 + assert.isTrue(configuredProject.hasOpenRef()); // file1 and file3 checkProjectActualFiles(configuredProject, [file1.path, file3.path, configFile.path]); const inferredProject1 = projectService.inferredProjects[0]; checkProjectActualFiles(inferredProject1, [file2.path]); @@ -2376,23 +2376,23 @@ namespace ts.projectSystem { configFile.content = "{}"; host.reloadFS(files.concat(configFile)); // Time out is not yet run so there is project update pending - assert(configuredProject.hasOpenRef()); // Pending update and file2 might get into the project + assert.isTrue(configuredProject.hasOpenRef()); // Pending update and file2 might get into the project projectService.openClientFile(file4.path); checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects: 2 }); - assert.equal(projectService.configuredProjects.get(configFile.path), configuredProject); - assert(configuredProject.hasOpenRef()); // Pending update and F2 might get into the project - assert.equal(projectService.inferredProjects[0], inferredProject1); + assert.strictEqual(projectService.configuredProjects.get(configFile.path), configuredProject); + assert.isTrue(configuredProject.hasOpenRef()); // Pending update and F2 might get into the project + assert.strictEqual(projectService.inferredProjects[0], inferredProject1); const inferredProject2 = projectService.inferredProjects[1]; checkProjectActualFiles(inferredProject2, [file4.path]); host.runQueuedTimeoutCallbacks(); checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects: 1 }); - assert.equal(projectService.configuredProjects.get(configFile.path), configuredProject); - assert(configuredProject.hasOpenRef()); // file2 + assert.strictEqual(projectService.configuredProjects.get(configFile.path), configuredProject); + assert.isTrue(configuredProject.hasOpenRef()); // file2 checkProjectActualFiles(configuredProject, [file1.path, file2.path, file3.path, configFile.path]); - assert.equal(projectService.inferredProjects[0], inferredProject2); + assert.strictEqual(projectService.inferredProjects[0], inferredProject2); checkProjectActualFiles(inferredProject2, [file4.path]); }); @@ -2427,7 +2427,7 @@ namespace ts.projectSystem { options: {} }); service.checkNumberOfProjects({ externalProjects: 1 }); - assert(service.externalProjects[0].languageServiceEnabled, "language service should be enabled"); + assert.isTrue(service.externalProjects[0].languageServiceEnabled, "language service should be enabled"); service.openExternalProject({ projectFileName, @@ -2464,12 +2464,12 @@ namespace ts.projectSystem { projectService.openClientFile(f1.path); projectService.checkNumberOfProjects({ configuredProjects: 1 }); const project = projectService.configuredProjects.get(config.path); - assert(project.hasOpenRef()); // f1 + assert.isTrue(project.hasOpenRef()); // f1 assert.isFalse(project.isClosed()); projectService.closeClientFile(f1.path); projectService.checkNumberOfProjects({ configuredProjects: 1 }); - assert.equal(projectService.configuredProjects.get(config.path), project); + assert.strictEqual(projectService.configuredProjects.get(config.path), project); assert.isFalse(project.hasOpenRef()); // No files assert.isFalse(project.isClosed()); @@ -2488,7 +2488,7 @@ namespace ts.projectSystem { projectService.openClientFile(f4.path); projectService.checkNumberOfProjects({ inferredProjects: 1 }); assert.isFalse(project.hasOpenRef()); // No files - assert(project.isClosed()); + assert.isTrue(project.isClosed()); for (const f of [f1, f2, f3]) { // All the script infos should not be present since the project is closed and orphan script infos are collected @@ -2540,7 +2540,7 @@ namespace ts.projectSystem { checkNumberOfProjects(projectService, { configuredProjects: 1 }); const project = configuredProjectAt(projectService, 0); assert.isFalse(project.languageServiceEnabled, "Language service enabled"); - assert(!!lastEvent, "should receive event"); + assert.isTrue(!!lastEvent, "should receive event"); assert.equal(lastEvent.data.project, project, "project name"); assert.equal(lastEvent.data.project.getProjectName(), config.path, "config path"); assert.isFalse(lastEvent.data.languageServiceEnabled, "Language service state"); @@ -2548,9 +2548,9 @@ namespace ts.projectSystem { host.reloadFS([f1, f2, configWithExclude]); host.checkTimeoutQueueLengthAndRun(2); checkNumberOfProjects(projectService, { configuredProjects: 1 }); - assert(project.languageServiceEnabled, "Language service enabled"); + assert.isTrue(project.languageServiceEnabled, "Language service enabled"); assert.equal(lastEvent.data.project, project, "project"); - assert(lastEvent.data.languageServiceEnabled, "Language service state"); + assert.isTrue(lastEvent.data.languageServiceEnabled, "Language service state"); }); it("syntactic features work even if language service is disabled", () => { @@ -2592,7 +2592,7 @@ namespace ts.projectSystem { checkNumberOfProjects(projectService, { configuredProjects: 1 }); const project = configuredProjectAt(projectService, 0); assert.isFalse(project.languageServiceEnabled, "Language service enabled"); - assert(!!lastEvent, "should receive event"); + assert.isTrue(!!lastEvent, "should receive event"); assert.equal(lastEvent.data.project, project, "project name"); assert.isFalse(lastEvent.data.languageServiceEnabled, "Language service state"); @@ -2747,7 +2747,7 @@ namespace ts.projectSystem { host.runQueuedTimeoutCallbacks(); watchedRecursiveDirectories.pop(); checkNumberOfProjects(projectService, { configuredProjects: 1 }); - assert.equal(projectService.configuredProjects.get(configFile.path), project); + assert.strictEqual(projectService.configuredProjects.get(configFile.path), project); checkProjectActualFiles(project, mapDefined(files, file => file === file2a ? undefined : file.path)); checkWatchedFiles(host, mapDefined(files, file => file === file1 ? undefined : file.path)); checkWatchedDirectories(host, [], /*recursive*/ false); @@ -2756,7 +2756,7 @@ namespace ts.projectSystem { // On next file open the files file2a should be closed and not watched any more projectService.openClientFile(file2.path); checkNumberOfProjects(projectService, { configuredProjects: 1 }); - assert.equal(projectService.configuredProjects.get(configFile.path), project); + assert.strictEqual(projectService.configuredProjects.get(configFile.path), project); checkProjectActualFiles(project, mapDefined(files, file => file === file2a ? undefined : file.path)); checkWatchedFiles(host, [libFile.path, configFile.path]); checkWatchedDirectories(host, [], /*recursive*/ false); @@ -2979,7 +2979,7 @@ namespace ts.projectSystem { }); projectService.checkNumberOfProjects({ externalProjects: 1 }); const typeAcquisition = projectService.externalProjects[0].getTypeAcquisition(); - assert(typeAcquisition.enable, "Typine acquisition should be enabled"); + assert.isTrue(typeAcquisition.enable, "Typine acquisition should be enabled"); }); }); @@ -3050,7 +3050,7 @@ namespace ts.projectSystem { const localFunctionNavToRequst = makeSessionRequest(CommandNames.Navto, { searchValue: "foo", file: file1.path, projectFileName: configFile.path }); const items2 = session.executeCommand(localFunctionNavToRequst).response as protocol.NavtoItem[]; - assert(containsNavToItem(items2, "foo", "function"), `Cannot find function symbol "foo".`); + assert.isTrue(containsNavToItem(items2, "foo", "function"), `Cannot find function symbol "foo".`); }); }); @@ -3264,18 +3264,18 @@ namespace ts.projectSystem { projectService.openClientFile(f.path); projectService.checkNumberOfProjects({ configuredProjects: 1 }); const project = projectService.configuredProjects.get(config.path); - assert(project.hasOpenRef()); // f + assert.isTrue(project.hasOpenRef()); // f projectService.closeClientFile(f.path); projectService.checkNumberOfProjects({ configuredProjects: 1 }); - assert.equal(projectService.configuredProjects.get(config.path), project); + assert.strictEqual(projectService.configuredProjects.get(config.path), project); assert.isFalse(project.hasOpenRef()); // No files assert.isFalse(project.isClosed()); projectService.openClientFile(f.path); projectService.checkNumberOfProjects({ configuredProjects: 1 }); - assert.equal(projectService.configuredProjects.get(config.path), project); - assert(project.hasOpenRef()); // f + assert.strictEqual(projectService.configuredProjects.get(config.path), project); + assert.isTrue(project.hasOpenRef()); // f assert.isFalse(project.isClosed()); }); }); @@ -3872,16 +3872,16 @@ namespace ts.projectSystem { { file: file2.path } ); let errorResult = session.executeCommand(file2GetErrRequest).response; - assert(errorResult.length === 0); + assert.isTrue(errorResult.length === 0); const closeFileRequest = makeSessionRequest(CommandNames.Close, { file: file1.path }); session.executeCommand(closeFileRequest); errorResult = session.executeCommand(file2GetErrRequest).response; - assert(errorResult.length !== 0); + assert.isTrue(errorResult.length !== 0); openFilesForSession([file1], session); errorResult = session.executeCommand(file2GetErrRequest).response; - assert(errorResult.length === 0); + assert.isTrue(errorResult.length === 0); }); it("should be turned on for js-only external projects", () => { @@ -3917,7 +3917,7 @@ namespace ts.projectSystem { { file: dTsFile.path } ); const errorResult = session.executeCommand(dTsFileGetErrRequest).response; - assert(errorResult.length === 0); + assert.isTrue(errorResult.length === 0); }); it("should be turned on for js-only external projects with skipLibCheck=false", () => { @@ -3953,7 +3953,7 @@ namespace ts.projectSystem { { file: dTsFile.path } ); const errorResult = session.executeCommand(dTsFileGetErrRequest).response; - assert(errorResult.length === 0); + assert.isTrue(errorResult.length === 0); }); it("should not report bind errors for declaration files with skipLibCheck=true", () => { @@ -3984,14 +3984,14 @@ namespace ts.projectSystem { { file: dTsFile1.path } ); const error1Result = session.executeCommand(dTsFile1GetErrRequest).response; - assert(error1Result.length === 0); + assert.isTrue(error1Result.length === 0); const dTsFile2GetErrRequest = makeSessionRequest( CommandNames.SemanticDiagnosticsSync, { file: dTsFile2.path } ); const error2Result = session.executeCommand(dTsFile2GetErrRequest).response; - assert(error2Result.length === 0); + assert.isTrue(error2Result.length === 0); }); it("should report semanitc errors for loose JS files with '// @ts-check' and skipLibCheck=true", () => { @@ -4012,7 +4012,7 @@ namespace ts.projectSystem { { file: jsFile.path } ); const errorResult = session.executeCommand(getErrRequest).response; - assert(errorResult.length === 1); + assert.isTrue(errorResult.length === 1); assert.equal(errorResult[0].code, Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2.code); }); @@ -4039,7 +4039,7 @@ namespace ts.projectSystem { { file: jsFile.path } ); const errorResult = session.executeCommand(getErrRequest).response; - assert(errorResult.length === 1); + assert.isTrue(errorResult.length === 1); assert.equal(errorResult[0].code, Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2.code); }); @@ -4068,7 +4068,7 @@ namespace ts.projectSystem { { file: jsFile.path } ); const errorResult = session.executeCommand(getErrRequest).response; - assert(errorResult.length === 1); + assert.isTrue(errorResult.length === 1); assert.equal(errorResult[0].code, Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2.code); }); }); @@ -4096,7 +4096,7 @@ namespace ts.projectSystem { checkNumberOfInferredProjects(projectService, 1); const inferredProject = projectService.inferredProjects[0]; - assert(inferredProject.containsFile(file1.path)); + assert.isTrue(inferredProject.containsFile(file1.path)); }); it("should be able to handle @types if input file list is empty", () => { @@ -4236,7 +4236,7 @@ namespace ts.projectSystem { arguments: { file: f1.path } }); checkScriptInfoAndProjects(0, f1.content, "contents of closed file"); - assert.equal(info.getSnapshot(), snap); + assert.strictEqual(info.getSnapshot(), snap); // reload from temp file session.executeCommandSeq({ @@ -4244,7 +4244,7 @@ namespace ts.projectSystem { arguments: { file: f1.path, tmpfile: tmp.path } }); checkScriptInfoAndProjects(0, tmp.content, "contents of temp file"); - assert.notEqual(info.getSnapshot(), snap); + assert.notStrictEqual(info.getSnapshot(), snap); // reload from own file session.executeCommandSeq({ @@ -4252,11 +4252,11 @@ namespace ts.projectSystem { arguments: { file: f1.path } }); checkScriptInfoAndProjects(0, f1.content, "contents of closed file"); - assert.notEqual(info.getSnapshot(), snap); + assert.notStrictEqual(info.getSnapshot(), snap); function checkScriptInfoAndProjects(inferredProjects: number, contentsOfInfo: string, captionForContents: string) { checkNumberOfProjects(projectService, { inferredProjects }); - assert.equal(projectService.getScriptInfo(f1.path), info); + assert.strictEqual(projectService.getScriptInfo(f1.path), info); checkScriptInfoContents(contentsOfInfo, captionForContents); } @@ -4515,7 +4515,7 @@ namespace ts.projectSystem { seq: 2, arguments: { projectFileName: projectName } }).response as ReadonlyArray; - assert(diags.length === 0); + assert.isTrue(diags.length === 0); session.executeCommand({ type: "request", @@ -4529,7 +4529,7 @@ namespace ts.projectSystem { seq: 4, arguments: { projectFileName: projectName } }).response as ReadonlyArray; - assert(diagsAfterUpdate.length === 0); + assert.isTrue(diagsAfterUpdate.length === 0); }); it("for external project", () => { @@ -4556,7 +4556,7 @@ namespace ts.projectSystem { seq: 2, arguments: { projectFileName } }).response as ReadonlyArray; - assert(diags.length === 0); + assert.isTrue(diags.length === 0); session.executeCommand({ type: "request", @@ -4574,7 +4574,7 @@ namespace ts.projectSystem { seq: 4, arguments: { projectFileName } }).response as ReadonlyArray; - assert(diagsAfterUpdate.length === 0); + assert.isTrue(diagsAfterUpdate.length === 0); }); }); @@ -4758,7 +4758,7 @@ namespace ts.projectSystem { isCancellationRequested: () => false, setRequest: requestId => { if (expectedRequestId === undefined) { - assert(false, "unexpected call"); + assert.isTrue(false, "unexpected call"); } assert.equal(requestId, expectedRequestId); }, @@ -5017,7 +5017,7 @@ namespace ts.projectSystem { ); const highlightResponse = session.executeCommand(highlightRequest).response as protocol.OccurrencesResponseItem[]; const firstOccurence = highlightResponse[0]; - assert(firstOccurence.isInString, "Highlights should be marked with isInString"); + assert.isTrue(firstOccurence.isInString, "Highlights should be marked with isInString"); } { @@ -5026,7 +5026,7 @@ namespace ts.projectSystem { { file: file1.path, line: 3, offset: 13 } ); const highlightResponse = session.executeCommand(highlightRequest).response as protocol.OccurrencesResponseItem[]; - assert(highlightResponse.length === 2); + assert.isTrue(highlightResponse.length === 2); const firstOccurence = highlightResponse[0]; assert.isUndefined(firstOccurence.isInString, "Highlights should not be marked with isInString if on property name"); } @@ -5037,7 +5037,7 @@ namespace ts.projectSystem { { file: file1.path, line: 4, offset: 14 } ); const highlightResponse = session.executeCommand(highlightRequest).response as protocol.OccurrencesResponseItem[]; - assert(highlightResponse.length === 2); + assert.isTrue(highlightResponse.length === 2); const firstOccurence = highlightResponse[0]; assert.isUndefined(firstOccurence.isInString, "Highlights should not be marked with isInString if on indexer"); } @@ -5061,13 +5061,13 @@ namespace ts.projectSystem { let project = projectService.inferredProjects[0]; let options = project.getCompilationSettings(); - assert(options.maxNodeModuleJsDepth === 2); + assert.isTrue(options.maxNodeModuleJsDepth === 2); // Assert the option sticks projectService.setCompilerOptionsForInferredProjects({ target: ScriptTarget.ES2016 }); project = projectService.inferredProjects[0]; options = project.getCompilationSettings(); - assert(options.maxNodeModuleJsDepth === 2); + assert.isTrue(options.maxNodeModuleJsDepth === 2); }); it("should return to normal state when all js root files are removed from project", () => { @@ -5090,7 +5090,7 @@ namespace ts.projectSystem { projectService.openClientFile(file2.path); project = projectService.inferredProjects[0]; - assert(project.getCompilationSettings().maxNodeModuleJsDepth === 2); + assert.isTrue(project.getCompilationSettings().maxNodeModuleJsDepth === 2); projectService.closeClientFile(file2.path); project = projectService.inferredProjects[0]; @@ -5134,7 +5134,7 @@ namespace ts.projectSystem { seq: 2, arguments: { file: configFile.path, projectFileName: projectName, includeLinePosition: true } }).response as ReadonlyArray; - assert(diags.length === 2); + assert.isTrue(diags.length === 2); configFile.content = configFileContentWithoutCommentLine; host.reloadFS([file, configFile]); @@ -5145,7 +5145,7 @@ namespace ts.projectSystem { seq: 2, arguments: { file: configFile.path, projectFileName: projectName, includeLinePosition: true } }).response as ReadonlyArray; - assert(diagsAfterEdit.length === 2); + assert.isTrue(diagsAfterEdit.length === 2); verifyDiagnostic(diags[0], diagsAfterEdit[0]); verifyDiagnostic(diags[1], diagsAfterEdit[1]); @@ -5271,7 +5271,7 @@ namespace ts.projectSystem { function verifyCalledOn(callback: CalledMaps, name: string) { const calledMap = calledMaps[callback]; const result = calledMap.get(name); - assert(result && !!result.length, `${callback} should be called with name: ${name}: ${arrayFrom(calledMap.keys())}`); + assert.isTrue(result && !!result.length, `${callback} should be called with name: ${name}: ${arrayFrom(calledMap.keys())}`); } function verifyNoCall(callback: CalledMaps) { @@ -5283,7 +5283,7 @@ namespace ts.projectSystem { const calledMap = calledMaps[callback]; ts.TestFSWithWatch.verifyMapSize(callback, calledMap, arrayFrom(expectedKeys.keys())); expectedKeys.forEach((called, name) => { - assert(calledMap.has(name), `${callback} is expected to contain ${name}, actual keys: ${arrayFrom(calledMap.keys())}`); + assert.isTrue(calledMap.has(name), `${callback} is expected to contain ${name}, actual keys: ${arrayFrom(calledMap.keys())}`); assert.equal(calledMap.get(name).length, called, `${callback} is expected to be called ${called} times with ${name}. Actual entry: ${calledMap.get(name)}`); }); } @@ -5356,10 +5356,10 @@ namespace ts.projectSystem { try { // trigger synchronization to make sure that LSHost will try to find 'f2' module on disk verifyImportedDiagnostics(); - assert(false, `should not find file '${imported.path}'`); + assert.isTrue(false, `should not find file '${imported.path}'`); } catch (e) { - assert(e.message.indexOf(`Could not find file: '${imported.path}'.`) === 0); + assert.isTrue(e.message.indexOf(`Could not find file: '${imported.path}'.`) === 0); } const f2Lookups = getLocationsForModuleLookup("f2"); callsTrackingHost.verifyCalledOnEachEntryNTimes(CalledMapsWithSingleArg.fileExists, f2Lookups, 1); @@ -5544,7 +5544,7 @@ namespace ts.projectSystem { callsTrackingHost.verifyNoHostCallsExceptFileExistsOnce(["/a/b/models/tsconfig.json", "/a/b/models/jsconfig.json"]); checkNumberOfConfiguredProjects(projectService, 1); - assert.equal(projectService.configuredProjects.get(tsconfigFile.path), project); + assert.strictEqual(projectService.configuredProjects.get(tsconfigFile.path), project); }); describe("WatchDirectories for config file with", () => { @@ -5631,7 +5631,7 @@ namespace ts.projectSystem { callsTrackingHost.verifyNoCall(CalledMapsWithFiveArgs.readDirectory); checkNumberOfConfiguredProjects(projectService, 1); - assert.equal(projectService.configuredProjects.get(canonicalConfigPath), project); + assert.strictEqual(projectService.configuredProjects.get(canonicalConfigPath), project); verifyProjectAndWatchedDirectories(); callsTrackingHost.clear(); @@ -5640,7 +5640,7 @@ namespace ts.projectSystem { assert.equal(configFile2, configFileName); checkNumberOfConfiguredProjects(projectService, 1); - assert.equal(projectService.configuredProjects.get(canonicalConfigPath), project); + assert.strictEqual(projectService.configuredProjects.get(canonicalConfigPath), project); verifyProjectAndWatchedDirectories(); callsTrackingHost.verifyNoHostCalls(); @@ -5842,7 +5842,7 @@ namespace ts.projectSystem { forEach(actual, f => { assert.isFalse(seen.has(f), `${caption}: Found duplicate ${f}. Actual: ${actual} Expected: ${expected}`); seen.set(f, true); - assert(contains(expected, f), `${caption}: Expected not to contain ${f}. Actual: ${actual} Expected: ${expected}`); + assert.isTrue(contains(expected, f), `${caption}: Expected not to contain ${f}. Actual: ${actual} Expected: ${expected}`); }); } @@ -6313,7 +6313,7 @@ namespace ts.projectSystem { else { // file2 addition wont be detected projectFiles.pop(); - assert(host.fileExists(file2.path)); + assert.isTrue(host.fileExists(file2.path)); } verifyProject(); @@ -6380,7 +6380,7 @@ namespace ts.projectSystem { assert.equal(projectChangedEvents.length, expectedEvents.length, `Incorrect number of events Actual: ${eventsToString(projectChangedEvents)} Expected: ${eventsToString(expectedEvents)}`); forEach(projectChangedEvents, (actualEvent, i) => { const expectedEvent = expectedEvents[i]; - assert.equal(actualEvent.eventName, expectedEvent.eventName); + assert.strictEqual(actualEvent.eventName, expectedEvent.eventName); verifyFiles("openFiles", actualEvent.data.openFiles, expectedEvent.data.openFiles); }); diff --git a/src/harness/unittests/typingsInstaller.ts b/src/harness/unittests/typingsInstaller.ts index cb2d350744c..77c7f8e17f3 100644 --- a/src/harness/unittests/typingsInstaller.ts +++ b/src/harness/unittests/typingsInstaller.ts @@ -323,7 +323,7 @@ namespace ts.projectSystem { typeAcquisition: { enable: true, include: ["jquery"] } }); - assert(enqueueIsCalled, "expected enqueueIsCalled to be true"); + assert.isTrue(enqueueIsCalled, "expected enqueueIsCalled to be true"); installer.installAll(/*expectedCount*/ 1); // auto is set in type acquisition - use it even if project contains only .ts files @@ -629,7 +629,7 @@ namespace ts.projectSystem { installer.executePendingCommands(); // expected all typings file to exist for (const f of typingFiles) { - assert(host.fileExists(f.path), `expected file ${f.path} to exist`); + assert.isTrue(host.fileExists(f.path), `expected file ${f.path} to exist`); } host.checkTimeoutQueueLengthAndRun(2); checkNumberOfProjects(projectService, { externalProjects: 1 }); @@ -965,8 +965,8 @@ namespace ts.projectSystem { installer.installAll(/*expectedCount*/1); - assert(host.fileExists(node.path), "typings for 'node' should be created"); - assert(host.fileExists(commander.path), "typings for 'commander' should be created"); + assert.isTrue(host.fileExists(node.path), "typings for 'node' should be created"); + assert.isTrue(host.fileExists(commander.path), "typings for 'commander' should be created"); checkProjectActualFiles(service.inferredProjects[0], [file.path, node.path, commander.path]); }); @@ -1107,7 +1107,7 @@ namespace ts.projectSystem { projectService.openClientFile(f1.path); installer.checkPendingCommands(/*expectedCount*/ 0); - assert(messages.indexOf("Package name '; say ‘Hello from TypeScript!’ #' contains non URI safe characters") > 0, "should find package with invalid name"); + assert.isTrue(messages.indexOf("Package name '; say ‘Hello from TypeScript!’ #' contains non URI safe characters") > 0, "should find package with invalid name"); }); }); @@ -1256,7 +1256,7 @@ namespace ts.projectSystem { installer.installAll(/*expectedCount*/ 1); - assert(seenTelemetryEvent); + assert.isTrue(seenTelemetryEvent); host.checkTimeoutQueueLengthAndRun(2); checkNumberOfProjects(projectService, { inferredProjects: 1 }); checkProjectActualFiles(projectService.inferredProjects[0], [f1.path, commander.path]); @@ -1307,10 +1307,10 @@ namespace ts.projectSystem { installer.installAll(/*expectedCount*/ 1); - assert(!!beginEvent); - assert(!!endEvent); - assert(beginEvent.eventId === endEvent.eventId); - assert(endEvent.installSuccess); + assert.isTrue(!!beginEvent); + assert.isTrue(!!endEvent); + assert.isTrue(beginEvent.eventId === endEvent.eventId); + assert.isTrue(endEvent.installSuccess); host.checkTimeoutQueueLengthAndRun(2); checkNumberOfProjects(projectService, { inferredProjects: 1 }); checkProjectActualFiles(projectService.inferredProjects[0], [f1.path, commander.path]); @@ -1353,9 +1353,9 @@ namespace ts.projectSystem { installer.installAll(/*expectedCount*/ 1); - assert(!!beginEvent); - assert(!!endEvent); - assert(beginEvent.eventId === endEvent.eventId); + assert.isTrue(!!beginEvent); + assert.isTrue(!!endEvent); + assert.isTrue(beginEvent.eventId === endEvent.eventId); assert.isFalse(endEvent.installSuccess); checkNumberOfProjects(projectService, { inferredProjects: 1 }); checkProjectActualFiles(projectService.inferredProjects[0], [f1.path]); diff --git a/src/harness/unittests/versionCache.ts b/src/harness/unittests/versionCache.ts index 60b478d4869..bbd23f25dac 100644 --- a/src/harness/unittests/versionCache.ts +++ b/src/harness/unittests/versionCache.ts @@ -34,7 +34,7 @@ var p:Point=new Point(); var q:Point=p;`; const { lines } = server.LineIndex.linesFromText(testContent); - assert(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line"); + assert.isTrue(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line"); const lineIndex = new server.LineIndex(); lineIndex.load(lines); @@ -94,7 +94,7 @@ that was purple at the tips and grew 1cm per day`; ({ lines, lineMap } = server.LineIndex.linesFromText(testContent)); - assert(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line"); + assert.isTrue(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line"); const lineIndex = new server.LineIndex(); lineIndex.load(lines); @@ -203,10 +203,10 @@ and grew 1cm per day`; const testFileName = "src/compiler/scanner.ts"; testContent = Harness.IO.readFile(testFileName); const totalChars = testContent.length; - assert(totalChars > 0, "Failed to read test file."); + assert.isTrue(totalChars > 0, "Failed to read test file."); ({ lines, lineMap } = server.LineIndex.linesFromText(testContent)); - assert(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line"); + assert.isTrue(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line"); lineIndex = new server.LineIndex(); lineIndex.load(lines); diff --git a/src/harness/virtualFileSystemWithWatch.ts b/src/harness/virtualFileSystemWithWatch.ts index 3cf480ead83..a6fe27ca9c6 100644 --- a/src/harness/virtualFileSystemWithWatch.ts +++ b/src/harness/virtualFileSystemWithWatch.ts @@ -139,7 +139,7 @@ interface Array {}` function checkMapKeys(caption: string, map: Map, expectedKeys: ReadonlyArray) { verifyMapSize(caption, map, expectedKeys); for (const name of expectedKeys) { - assert(map.has(name), `${caption} is expected to contain ${name}, actual keys: ${arrayFrom(map.keys())}`); + assert.isTrue(map.has(name), `${caption} is expected to contain ${name}, actual keys: ${arrayFrom(map.keys())}`); } } From 100262537a683b7c3f1a47b21be2eb7dddba8d03 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Wed, 13 Dec 2017 10:58:04 -0800 Subject: [PATCH 045/173] Remove TODO --- src/lib/es5.d.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib/es5.d.ts b/src/lib/es5.d.ts index 14687838f6e..0f1a68de4c2 100644 --- a/src/lib/es5.d.ts +++ b/src/lib/es5.d.ts @@ -992,7 +992,6 @@ interface ReadonlyArray { * Combines two or more arrays. * @param items Additional items to add to the end of array1. */ - // TODO: https://github.com/Microsoft/TypeScript/issues/20454 concat(...items: (T[] | ReadonlyArray)[]): T[]; /** * Combines two or more arrays. From 6fbeced0254dcdaca6824342bb660d5ddd994e39 Mon Sep 17 00:00:00 2001 From: Andy Date: Wed, 13 Dec 2017 11:03:37 -0800 Subject: [PATCH 046/173] Simplify test case (#20675) --- .../literalIntersectionYieldsLiteral.js | 21 +--------- .../literalIntersectionYieldsLiteral.symbols | 38 +++---------------- .../literalIntersectionYieldsLiteral.types | 34 ++--------------- .../literalIntersectionYieldsLiteral.ts | 15 +------- 4 files changed, 11 insertions(+), 97 deletions(-) diff --git a/tests/baselines/reference/literalIntersectionYieldsLiteral.js b/tests/baselines/reference/literalIntersectionYieldsLiteral.js index 7781ad9bd39..e0cd514fcbd 100644 --- a/tests/baselines/reference/literalIntersectionYieldsLiteral.js +++ b/tests/baselines/reference/literalIntersectionYieldsLiteral.js @@ -1,23 +1,6 @@ //// [literalIntersectionYieldsLiteral.ts] -export type BaseAttribute = { - type?: string; -} -export type StringAttribute = BaseAttribute & { - type: "string"; -} -export type NumberAttribute = BaseAttribute & { - type: "number"; -} -export type Attribute = StringAttribute | NumberAttribute; - -const foo: Attribute = { - type: "string" -} +const x: { type: string } & { type: "string" } = { type: "string" }; //// [literalIntersectionYieldsLiteral.js] -"use strict"; -exports.__esModule = true; -var foo = { - type: "string" -}; +var x = { type: "string" }; diff --git a/tests/baselines/reference/literalIntersectionYieldsLiteral.symbols b/tests/baselines/reference/literalIntersectionYieldsLiteral.symbols index 2b2c2072705..85b6ab537ce 100644 --- a/tests/baselines/reference/literalIntersectionYieldsLiteral.symbols +++ b/tests/baselines/reference/literalIntersectionYieldsLiteral.symbols @@ -1,35 +1,7 @@ === tests/cases/compiler/literalIntersectionYieldsLiteral.ts === -export type BaseAttribute = { ->BaseAttribute : Symbol(BaseAttribute, Decl(literalIntersectionYieldsLiteral.ts, 0, 0)) ->T : Symbol(T, Decl(literalIntersectionYieldsLiteral.ts, 0, 26)) - - type?: string; ->type : Symbol(type, Decl(literalIntersectionYieldsLiteral.ts, 0, 32)) -} -export type StringAttribute = BaseAttribute & { ->StringAttribute : Symbol(StringAttribute, Decl(literalIntersectionYieldsLiteral.ts, 2, 1)) ->BaseAttribute : Symbol(BaseAttribute, Decl(literalIntersectionYieldsLiteral.ts, 0, 0)) - - type: "string"; ->type : Symbol(type, Decl(literalIntersectionYieldsLiteral.ts, 3, 55)) -} -export type NumberAttribute = BaseAttribute & { ->NumberAttribute : Symbol(NumberAttribute, Decl(literalIntersectionYieldsLiteral.ts, 5, 1)) ->BaseAttribute : Symbol(BaseAttribute, Decl(literalIntersectionYieldsLiteral.ts, 0, 0)) - - type: "number"; ->type : Symbol(type, Decl(literalIntersectionYieldsLiteral.ts, 6, 55)) -} -export type Attribute = StringAttribute | NumberAttribute; ->Attribute : Symbol(Attribute, Decl(literalIntersectionYieldsLiteral.ts, 8, 1)) ->StringAttribute : Symbol(StringAttribute, Decl(literalIntersectionYieldsLiteral.ts, 2, 1)) ->NumberAttribute : Symbol(NumberAttribute, Decl(literalIntersectionYieldsLiteral.ts, 5, 1)) - -const foo: Attribute = { ->foo : Symbol(foo, Decl(literalIntersectionYieldsLiteral.ts, 11, 5)) ->Attribute : Symbol(Attribute, Decl(literalIntersectionYieldsLiteral.ts, 8, 1)) - - type: "string" ->type : Symbol(type, Decl(literalIntersectionYieldsLiteral.ts, 11, 24)) -} +const x: { type: string } & { type: "string" } = { type: "string" }; +>x : Symbol(x, Decl(literalIntersectionYieldsLiteral.ts, 0, 5)) +>type : Symbol(type, Decl(literalIntersectionYieldsLiteral.ts, 0, 10)) +>type : Symbol(type, Decl(literalIntersectionYieldsLiteral.ts, 0, 29)) +>type : Symbol(type, Decl(literalIntersectionYieldsLiteral.ts, 0, 50)) diff --git a/tests/baselines/reference/literalIntersectionYieldsLiteral.types b/tests/baselines/reference/literalIntersectionYieldsLiteral.types index 2230f14af1a..b169a19aef8 100644 --- a/tests/baselines/reference/literalIntersectionYieldsLiteral.types +++ b/tests/baselines/reference/literalIntersectionYieldsLiteral.types @@ -1,37 +1,9 @@ === tests/cases/compiler/literalIntersectionYieldsLiteral.ts === -export type BaseAttribute = { ->BaseAttribute : BaseAttribute ->T : T - - type?: string; +const x: { type: string } & { type: "string" } = { type: "string" }; +>x : { type: string; } & { type: "string"; } >type : string -} -export type StringAttribute = BaseAttribute & { ->StringAttribute : StringAttribute ->BaseAttribute : BaseAttribute - - type: "string"; >type : "string" -} -export type NumberAttribute = BaseAttribute & { ->NumberAttribute : NumberAttribute ->BaseAttribute : BaseAttribute - - type: "number"; ->type : "number" -} -export type Attribute = StringAttribute | NumberAttribute; ->Attribute : Attribute ->StringAttribute : StringAttribute ->NumberAttribute : NumberAttribute - -const foo: Attribute = { ->foo : Attribute ->Attribute : Attribute ->{ type: "string"} : { type: "string"; } - - type: "string" +>{ type: "string" } : { type: "string"; } >type : string >"string" : "string" -} diff --git a/tests/cases/compiler/literalIntersectionYieldsLiteral.ts b/tests/cases/compiler/literalIntersectionYieldsLiteral.ts index 3b65201d3a3..11ab5d6d6b5 100644 --- a/tests/cases/compiler/literalIntersectionYieldsLiteral.ts +++ b/tests/cases/compiler/literalIntersectionYieldsLiteral.ts @@ -1,14 +1 @@ -export type BaseAttribute = { - type?: string; -} -export type StringAttribute = BaseAttribute & { - type: "string"; -} -export type NumberAttribute = BaseAttribute & { - type: "number"; -} -export type Attribute = StringAttribute | NumberAttribute; - -const foo: Attribute = { - type: "string" -} +const x: { type: string } & { type: "string" } = { type: "string" }; From 84eb25c561af37e833ac377d0dc31abdbcd04545 Mon Sep 17 00:00:00 2001 From: Andy Date: Wed, 13 Dec 2017 11:50:53 -0800 Subject: [PATCH 047/173] Handle arrays with properties in assert.deepEqual (#20674) * Handle arrays with properties in assert.deepEqual * Fix tests --- Jakefile.js | 1 + src/harness/harness.ts | 27 ++++++++++++++++--- src/harness/tsconfig.json | 1 + src/harness/unittests/asserts.ts | 11 ++++++++ .../unittests/reuseProgramStructure.ts | 6 ++--- 5 files changed, 40 insertions(+), 6 deletions(-) create mode 100644 src/harness/unittests/asserts.ts diff --git a/Jakefile.js b/Jakefile.js index b68e869aaee..e016c1bd0bd 100644 --- a/Jakefile.js +++ b/Jakefile.js @@ -130,6 +130,7 @@ var harnessSources = harnessCoreSources.concat([ "textStorage.ts", "moduleResolution.ts", "tsconfigParsing.ts", + "asserts.ts", "builder.ts", "commandLineParsing.ts", "configurationExtension.ts", diff --git a/src/harness/harness.ts b/src/harness/harness.ts index f4a58352b16..b38bd523fae 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -32,9 +32,30 @@ // this will work in the browser via browserify var _chai: typeof chai = require("chai"); var assert: typeof _chai.assert = _chai.assert; -// chai's builtin `assert.isFalse` is featureful but slow - we don't use those features, -// so we'll just overwrite it as an alterative to migrating a bunch of code off of chai -assert.isFalse = (expr, msg) => { if (expr as any as boolean !== false) throw new Error(msg); }; +{ + // chai's builtin `assert.isFalse` is featureful but slow - we don't use those features, + // so we'll just overwrite it as an alterative to migrating a bunch of code off of chai + assert.isFalse = (expr, msg) => { if (expr as any as boolean !== false) throw new Error(msg); }; + + const assertDeepImpl = assert.deepEqual; + assert.deepEqual = (a, b, msg) => { + if (ts.isArray(a) && ts.isArray(b)) { + assertDeepImpl(arrayExtraKeysObject(a), arrayExtraKeysObject(b), "Array extra keys differ"); + } + assertDeepImpl(a, b, msg); + + function arrayExtraKeysObject(a: ReadonlyArray<{} | null | undefined>): object { + const obj: { [key: string]: {} | null | undefined } = {}; + for (const key in a) { + if (Number.isNaN(Number(key))) { + obj[key] = a[key]; + } + } + return obj; + } + }; +} + declare var __dirname: string; // Node-specific var global: NodeJS.Global = Function("return this").call(undefined); diff --git a/src/harness/tsconfig.json b/src/harness/tsconfig.json index db38b95ba6a..25642ab5179 100644 --- a/src/harness/tsconfig.json +++ b/src/harness/tsconfig.json @@ -108,6 +108,7 @@ "./unittests/reuseProgramStructure.ts", "./unittests/moduleResolution.ts", "./unittests/tsconfigParsing.ts", + "./unittests/asserts.ts", "./unittests/builder.ts", "./unittests/commandLineParsing.ts", "./unittests/configurationExtension.ts", diff --git a/src/harness/unittests/asserts.ts b/src/harness/unittests/asserts.ts new file mode 100644 index 00000000000..ec274c44c22 --- /dev/null +++ b/src/harness/unittests/asserts.ts @@ -0,0 +1,11 @@ +/// + +namespace ts { + describe("assert", () => { + it("deepEqual", () => { + assert.throws(() => assert.deepEqual(createNodeArray([createIdentifier("A")]), createNodeArray([createIdentifier("B")]))); + assert.throws(() => assert.deepEqual(createNodeArray([], /*hasTrailingComma*/ true), createNodeArray([], /*hasTrailingComma*/ false))); + assert.deepEqual(createNodeArray([createIdentifier("A")], /*hasTrailingComma*/ true), createNodeArray([createIdentifier("A")], /*hasTrailingComma*/ true)); + }); + }); +} diff --git a/src/harness/unittests/reuseProgramStructure.ts b/src/harness/unittests/reuseProgramStructure.ts index 1c0a210f442..4a76a479b18 100644 --- a/src/harness/unittests/reuseProgramStructure.ts +++ b/src/harness/unittests/reuseProgramStructure.ts @@ -345,7 +345,7 @@ namespace ts { const newTexts: NamedSourceText[] = files.concat([{ name: "non-existing-file.ts", text: SourceText.New("", "", `var x = 1`) }]); const program2 = updateProgram(program1, ["a.ts"], options, noop, newTexts); - assert.deepEqual(emptyArray, program2.getMissingFilePaths()); + assert.lengthOf(program2.getMissingFilePaths(), 0); assert.equal(StructureIsReused.Not, program1.structureIsReused); }); @@ -839,12 +839,12 @@ namespace ts { updateProgramText(files, root, "const x = 1;"); }); assert.equal(program1.structureIsReused, StructureIsReused.Completely); - assert.deepEqual(program2.getSemanticDiagnostics(), emptyArray); + assert.lengthOf(program2.getSemanticDiagnostics(), 0); }); it("Target changes -> redirect broken", () => { const program1 = createRedirectProgram(); - assert.deepEqual(program1.getSemanticDiagnostics(), emptyArray); + assert.lengthOf(program1.getSemanticDiagnostics(), 0); const program2 = updateRedirectProgram(program1, files => { updateProgramText(files, axIndex, "export default class X { private x: number; private y: number; }"); From ceb0502914c85aaed32f00dbe294cceb3fda2b9e Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Wed, 13 Dec 2017 12:28:13 -0800 Subject: [PATCH 048/173] Code review --- src/compiler/checker.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 63daa7605cf..182ae24776f 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -24594,7 +24594,7 @@ namespace ts { function getRootSymbols(symbol: Symbol): Symbol[] { const roots = getImmediateRootSymbols(symbol); - return roots === undefined ? [symbol] : flatMap(roots, getRootSymbols); + return roots ? flatMap(roots, getRootSymbols) : [symbol]; } function getImmediateRootSymbols(symbol: Symbol): ReadonlyArray | undefined { if (getCheckFlags(symbol) & CheckFlags.Synthetic) { @@ -24602,7 +24602,9 @@ namespace ts { } else if (symbol.flags & SymbolFlags.Transient) { const { leftSpread, rightSpread, syntheticOrigin } = symbol as TransientSymbol; - return leftSpread ? [leftSpread, rightSpread] : syntheticOrigin ? [syntheticOrigin] : singleElementArray(tryGetAliasTarget(symbol)); + return leftSpread ? [leftSpread, rightSpread] + : syntheticOrigin ? [syntheticOrigin] + : singleElementArray(tryGetAliasTarget(symbol)); } return undefined; } From 2c6501db52ee7792f0fa764d047af09f013caf8c Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 13 Dec 2017 12:57:16 -0800 Subject: [PATCH 049/173] Allow multiple star-star globs in one pattern (#20639) * Allow multiple starglobs in one pattern * Add extra test case --- src/compiler/commandLineParser.ts | 18 ------- src/compiler/core.ts | 6 --- src/compiler/diagnosticMessages.json | 4 -- src/harness/unittests/matchFiles.ts | 78 ++++++++++++++++++++++++---- 4 files changed, 67 insertions(+), 39 deletions(-) diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index da0ea4aee56..a0f91e3d0e9 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -1906,21 +1906,6 @@ namespace ts { */ const invalidTrailingRecursionPattern = /(^|\/)\*\*\/?$/; - /** - * Tests for a path with multiple recursive directory wildcards. - * Matches **\** and **\a\**, but not **\a**b. - * - * NOTE: used \ in place of / above to avoid issues with multiline comments. - * - * Breakdown: - * (^|\/) # matches either the beginning of the string or a directory separator. - * \*\*\/ # matches a recursive directory wildcard "**" followed by a directory separator. - * (.*\/)? # optionally matches any number of characters followed by a directory separator. - * \*\* # matches a recursive directory wildcard "**" - * ($|\/) # matches either the end of the string or a directory separator. - */ - const invalidMultipleRecursionPatterns = /(^|\/)\*\*\/(.*\/)?\*\*($|\/)/; - /** * Tests for a path where .. appears after a recursive directory wildcard. * Matches **\..\*, **\a\..\*, and **\.., but not ..\**\* @@ -2115,9 +2100,6 @@ namespace ts { if (!allowTrailingRecursion && invalidTrailingRecursionPattern.test(spec)) { return Diagnostics.File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0; } - else if (invalidMultipleRecursionPatterns.test(spec)) { - return Diagnostics.File_specification_cannot_contain_multiple_recursive_directory_wildcards_Asterisk_Asterisk_Colon_0; - } else if (invalidDotDotAfterRecursiveWildcardPattern.test(spec)) { return Diagnostics.File_specification_cannot_contain_a_parent_directory_that_appears_after_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0; } diff --git a/src/compiler/core.ts b/src/compiler/core.ts index 0b82a3967dd..a79a3751db6 100644 --- a/src/compiler/core.ts +++ b/src/compiler/core.ts @@ -2376,7 +2376,6 @@ namespace ts { function getSubPatternFromSpec(spec: string, basePath: string, usage: "files" | "directories" | "exclude", { singleAsteriskRegexFragment, doubleAsteriskRegexFragment, replaceWildcardCharacter }: WildcardMatcher): string | undefined { let subpattern = ""; - let hasRecursiveDirectoryWildcard = false; let hasWrittenComponent = false; const components = getNormalizedPathComponents(spec, basePath); const lastComponent = lastOrUndefined(components); @@ -2395,12 +2394,7 @@ namespace ts { let optionalCount = 0; for (let component of components) { if (component === "**") { - if (hasRecursiveDirectoryWildcard) { - return undefined; - } - subpattern += doubleAsteriskRegexFragment; - hasRecursiveDirectoryWildcard = true; } else { if (usage === "directories") { diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 2cb068f0efb..336def7ea52 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -2623,10 +2623,6 @@ "category": "Error", "code": 5010 }, - "File specification cannot contain multiple recursive directory wildcards ('**'): '{0}'.": { - "category": "Error", - "code": 5011 - }, "Cannot read file '{0}': {1}.": { "category": "Error", "code": 5012 diff --git a/src/harness/unittests/matchFiles.ts b/src/harness/unittests/matchFiles.ts index f2c2369ef37..17a0db04fdf 100644 --- a/src/harness/unittests/matchFiles.ts +++ b/src/harness/unittests/matchFiles.ts @@ -50,6 +50,7 @@ namespace ts { "/dev/x/b.ts", "/dev/x/y/a.ts", "/dev/x/y/b.ts", + "/dev/q/a/c/b/d.ts", "/dev/js/a.js", "/dev/js/b.js", ]); @@ -1171,13 +1172,17 @@ namespace ts { }; const expected: ts.ParsedCommandLine = { options: {}, - errors: [ - createDiagnosticForConfigFile(json, 12, 11, ts.Diagnostics.File_specification_cannot_contain_multiple_recursive_directory_wildcards_Asterisk_Asterisk_Colon_0, "**/x/**/*"), - ts.createCompilerDiagnostic(ts.Diagnostics.No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2, - caseInsensitiveTsconfigPath, JSON.stringify(json.include), "[]") + errors: [], + fileNames: [ + "c:/dev/x/a.ts", + "c:/dev/x/aa.ts", + "c:/dev/x/b.ts", + "c:/dev/x/y/a.ts", + "c:/dev/x/y/b.ts", ], - fileNames: [], - wildcardDirectories: {} + wildcardDirectories: { + "c:/dev": ts.WatchDirectoryFlags.Recursive + } }; validateMatches(expected, json, caseInsensitiveHost, caseInsensitiveBasePath, /*existingOptions*/ undefined, caseInsensitiveTsconfigPath); }); @@ -1192,13 +1197,9 @@ namespace ts { }; const expected: ts.ParsedCommandLine = { options: {}, - errors: [ - createDiagnosticForConfigFile(json, 34, 9, ts.Diagnostics.File_specification_cannot_contain_multiple_recursive_directory_wildcards_Asterisk_Asterisk_Colon_0, "**/x/**") - ], + errors: [], fileNames: [ "c:/dev/a.ts", - "c:/dev/x/a.ts", - "c:/dev/x/y/a.ts", "c:/dev/z/a.ts" ], wildcardDirectories: { @@ -1426,5 +1427,60 @@ namespace ts { }); }); }); + + describe("exclude or include patterns which start with **", () => { + it("can exclude dirs whose pattern starts with **", () => { + const json = { + exclude: [ + "**/x" + ] + }; + const expected: ts.ParsedCommandLine = { + options: {}, + errors: [], + fileNames: [ + "/dev/A.ts", + "/dev/B.ts", + "/dev/a.ts", + "/dev/b.ts", + "/dev/c.d.ts", + "/dev/q/a/c/b/d.ts", + "/dev/z/a.ts", + "/dev/z/aba.ts", + "/dev/z/abz.ts", + "/dev/z/b.ts", + "/dev/z/bba.ts", + "/dev/z/bbz.ts", + ], + wildcardDirectories: { + "/dev": ts.WatchDirectoryFlags.Recursive + } + }; + validateMatches(expected, json, caseSensitiveHost, caseSensitiveBasePath); + }); + it("can include dirs whose pattern starts with **", () => { + const json = { + include: [ + "**/x", + "**/a/**/b" + ] + }; + const expected: ts.ParsedCommandLine = { + options: {}, + errors: [], + fileNames: [ + "/dev/x/a.ts", + "/dev/x/b.ts", + "/dev/x/y/a.ts", + "/dev/x/y/b.ts", + "/dev/q/a/c/b/d.ts", + ], + wildcardDirectories: { + "/dev": ts.WatchDirectoryFlags.Recursive + } + }; + validateMatches(expected, json, caseSensitiveHost, caseSensitiveBasePath); + }); + }); }); } From e1278f091c42f2587ec55f892bdc9729b8036e90 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 13 Dec 2017 14:01:23 -0800 Subject: [PATCH 050/173] Get resolved module exports in symbol chain and not raw exports (#20661) * Actually get module exports and not module exports sans export stars * style update * Trim test a bit --- src/compiler/checker.ts | 3 +- .../declarationEmitAliasExportStar.js | 31 +++++++++++++++++++ .../declarationEmitAliasExportStar.symbols | 16 ++++++++++ .../declarationEmitAliasExportStar.types | 18 +++++++++++ .../declarationEmitAliasExportStar.ts | 8 +++++ 5 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/declarationEmitAliasExportStar.js create mode 100644 tests/baselines/reference/declarationEmitAliasExportStar.symbols create mode 100644 tests/baselines/reference/declarationEmitAliasExportStar.types create mode 100644 tests/cases/compiler/declarationEmitAliasExportStar.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index e8cf80cb1fe..c1b57e5def7 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2216,7 +2216,8 @@ namespace ts { // Look in the exported members, if we can find accessibleSymbolChain, symbol is accessible using this chain // but only if the symbolFromSymbolTable can be qualified - const accessibleSymbolsFromExports = resolvedImportedSymbol.exports ? getAccessibleSymbolChainFromSymbolTable(resolvedImportedSymbol.exports) : undefined; + const candidateTable = getExportsOfSymbol(resolvedImportedSymbol); + const accessibleSymbolsFromExports = candidateTable && getAccessibleSymbolChainFromSymbolTable(candidateTable); if (accessibleSymbolsFromExports && canQualifySymbol(symbolFromSymbolTable, getQualifiedLeftMeaning(meaning))) { return [symbolFromSymbolTable].concat(accessibleSymbolsFromExports); } diff --git a/tests/baselines/reference/declarationEmitAliasExportStar.js b/tests/baselines/reference/declarationEmitAliasExportStar.js new file mode 100644 index 00000000000..a7f8932cbf9 --- /dev/null +++ b/tests/baselines/reference/declarationEmitAliasExportStar.js @@ -0,0 +1,31 @@ +//// [tests/cases/compiler/declarationEmitAliasExportStar.ts] //// + +//// [thingB.ts] +export interface ThingB { } +//// [things.ts] +export * from "./thingB"; +//// [index.ts] +import * as things from "./things"; +export const thing2 = (param: things.ThingB) => null; + + +//// [thingB.js] +"use strict"; +exports.__esModule = true; +//// [things.js] +"use strict"; +exports.__esModule = true; +//// [index.js] +"use strict"; +exports.__esModule = true; +exports.thing2 = function (param) { return null; }; + + +//// [thingB.d.ts] +export interface ThingB { +} +//// [things.d.ts] +export * from "./thingB"; +//// [index.d.ts] +import * as things from "./things"; +export declare const thing2: (param: things.ThingB) => any; diff --git a/tests/baselines/reference/declarationEmitAliasExportStar.symbols b/tests/baselines/reference/declarationEmitAliasExportStar.symbols new file mode 100644 index 00000000000..8f86cf3dc8c --- /dev/null +++ b/tests/baselines/reference/declarationEmitAliasExportStar.symbols @@ -0,0 +1,16 @@ +=== tests/cases/compiler/thingB.ts === +export interface ThingB { } +>ThingB : Symbol(ThingB, Decl(thingB.ts, 0, 0)) + +=== tests/cases/compiler/things.ts === +export * from "./thingB"; +No type information for this code.=== tests/cases/compiler/index.ts === +import * as things from "./things"; +>things : Symbol(things, Decl(index.ts, 0, 6)) + +export const thing2 = (param: things.ThingB) => null; +>thing2 : Symbol(thing2, Decl(index.ts, 1, 12)) +>param : Symbol(param, Decl(index.ts, 1, 23)) +>things : Symbol(things, Decl(index.ts, 0, 6)) +>ThingB : Symbol(things.ThingB, Decl(thingB.ts, 0, 0)) + diff --git a/tests/baselines/reference/declarationEmitAliasExportStar.types b/tests/baselines/reference/declarationEmitAliasExportStar.types new file mode 100644 index 00000000000..30be7c9ff28 --- /dev/null +++ b/tests/baselines/reference/declarationEmitAliasExportStar.types @@ -0,0 +1,18 @@ +=== tests/cases/compiler/thingB.ts === +export interface ThingB { } +>ThingB : ThingB + +=== tests/cases/compiler/things.ts === +export * from "./thingB"; +No type information for this code.=== tests/cases/compiler/index.ts === +import * as things from "./things"; +>things : typeof things + +export const thing2 = (param: things.ThingB) => null; +>thing2 : (param: things.ThingB) => any +>(param: things.ThingB) => null : (param: things.ThingB) => any +>param : things.ThingB +>things : any +>ThingB : things.ThingB +>null : null + diff --git a/tests/cases/compiler/declarationEmitAliasExportStar.ts b/tests/cases/compiler/declarationEmitAliasExportStar.ts new file mode 100644 index 00000000000..f556e35aa0b --- /dev/null +++ b/tests/cases/compiler/declarationEmitAliasExportStar.ts @@ -0,0 +1,8 @@ +// @declaration: true +// @filename: thingB.ts +export interface ThingB { } +// @filename: things.ts +export * from "./thingB"; +// @filename: index.ts +import * as things from "./things"; +export const thing2 = (param: things.ThingB) => null; From 5299e91be339ec0841a673be351ce083817d1077 Mon Sep 17 00:00:00 2001 From: csigs Date: Wed, 13 Dec 2017 23:10:50 +0000 Subject: [PATCH 051/173] LEGO: check in for master to temporary branch. --- .../diagnosticMessages.generated.json.lcl | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/loc/lcl/rus/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/rus/diagnosticMessages/diagnosticMessages.generated.json.lcl index e6f043dcafd..4aff7e0a2bd 100644 --- a/src/loc/lcl/rus/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/rus/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -4754,6 +4754,9 @@ + + + @@ -4850,6 +4853,9 @@ + + + From 7d1a980ad2db5a3be8fe1cabf5898e5bebf9d6f9 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Wed, 13 Dec 2017 16:29:36 -0800 Subject: [PATCH 052/173] First attempt. Basically broken. --- src/compiler/checker.ts | 85 ++++++++++++++++++++++------------------- src/compiler/types.ts | 6 +++ 2 files changed, 51 insertions(+), 40 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index c1b57e5def7..d333424dcb3 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -334,6 +334,7 @@ namespace ts { const jsObjectLiteralIndexInfo = createIndexInfo(anyType, /*isReadonly*/ false); const globals = createSymbolTable(); + const deferredInferenceCache = createMap(); let ambientModulesCache: Symbol[] | undefined; /** * List of every ambient module with a "*" wildcard. @@ -4867,6 +4868,9 @@ namespace ts { if (getCheckFlags(symbol) & CheckFlags.Instantiated) { return getTypeOfInstantiatedSymbol(symbol); } + if (getCheckFlags(symbol) & CheckFlags.DeferredInferred) { + return inferTargetType((symbol as DeferredTransientSymbol).propertyType, (symbol as DeferredTransientSymbol).mappedType); + } if (symbol.flags & (SymbolFlags.Variable | SymbolFlags.Property)) { return getTypeOfVariableOrParameterOrProperty(symbol); } @@ -11224,42 +11228,49 @@ namespace ts { * property is computed by inferring from the source property type to X for the type * variable T[P] (i.e. we treat the type T[P] as the type variable we're inferring for). */ - function inferTypeForHomomorphicMappedType(source: Type, target: MappedType, mappedTypeStack: string[]): Type { - const properties = getPropertiesOfType(source); - let indexInfo = getIndexInfoOfType(source, IndexKind.String); - if (properties.length === 0 && !indexInfo) { - return undefined; + function inferTypeForHomomorphicMappedType(source: Type, target: MappedType): Type { + const key = source.id + "," + target.id; + if (deferredInferenceCache.has(key)) { + return deferredInferenceCache.get(key); } - const typeParameter = getIndexedAccessType((getConstraintTypeFromMappedType(target)).type, getTypeParameterFromMappedType(target)); - const inference = createInferenceInfo(typeParameter); - const inferences = [inference]; - const templateType = getTemplateTypeFromMappedType(target); - const readonlyMask = target.declaration.readonlyToken ? false : true; - const optionalMask = target.declaration.questionToken ? 0 : SymbolFlags.Optional; - const members = createSymbolTable(); - for (const prop of properties) { - const propType = getTypeOfSymbol(prop); - // If any property contains context sensitive functions that have been skipped, the source type - // is incomplete and we can't infer a meaningful input type. - if (propType.flags & TypeFlags.ContainsAnyFunctionType) { + deferredInferenceCache.set(key, function() { + const properties = getPropertiesOfType(source); + let indexInfo = getIndexInfoOfType(source, IndexKind.String); + if (properties.length === 0 && !indexInfo) { return undefined; } - const checkFlags = readonlyMask && isReadonlySymbol(prop) ? CheckFlags.Readonly : 0; - const inferredProp = createSymbol(SymbolFlags.Property | prop.flags & optionalMask, prop.escapedName, checkFlags); - inferredProp.declarations = prop.declarations; - inferredProp.type = inferTargetType(propType); - members.set(prop.escapedName, inferredProp); - } - if (indexInfo) { - indexInfo = createIndexInfo(inferTargetType(indexInfo.type), readonlyMask && indexInfo.isReadonly); - } - return createAnonymousType(undefined, members, emptyArray, emptyArray, indexInfo, undefined); + const readonlyMask = target.declaration.readonlyToken ? false : true; + const optionalMask = target.declaration.questionToken ? 0 : SymbolFlags.Optional; + const members = createSymbolTable(); + for (const prop of properties) { + const propType = getTypeOfSymbol(prop); + // If any property contains context sensitive functions that have been skipped, the source type + // is incomplete and we can't infer a meaningful input type. + if (propType.flags & TypeFlags.ContainsAnyFunctionType) { + return undefined; + } + const checkFlags = CheckFlags.DeferredInferred | (readonlyMask && isReadonlySymbol(prop) ? CheckFlags.Readonly : 0); + const inferredProp = createSymbol(SymbolFlags.Property | prop.flags & optionalMask, prop.escapedName, checkFlags) as DeferredTransientSymbol; + inferredProp.declarations = prop.declarations; + inferredProp.propertyType = propType; // not sure I need this. + inferredProp.mappedType = target; + members.set(prop.escapedName, inferredProp); + } + if (indexInfo) { + // TODO: Defer this too. BARREL OF LAUGHS RIGHT THERE + indexInfo = createIndexInfo(inferTargetType(indexInfo.type, target), readonlyMask && indexInfo.isReadonly); + } + return createAnonymousType(undefined, members, emptyArray, emptyArray, indexInfo, undefined); + }()); + } - function inferTargetType(sourceType: Type): Type { - inference.candidates = undefined; - inferTypes(inferences, sourceType, templateType, 0, mappedTypeStack); - return inference.candidates ? getUnionType(inference.candidates, UnionReduction.Subtype) : emptyObjectType; - } + function inferTargetType(sourceType: Type, target: MappedType): Type { + const typeParameter = getIndexedAccessType((getConstraintTypeFromMappedType(target)).type, getTypeParameterFromMappedType(target)); + const templateType = getTemplateTypeFromMappedType(target); + const inference = createInferenceInfo(typeParameter); + inference.candidates = undefined; + inferTypes([inference], sourceType, templateType); + return inference.candidates ? getUnionType(inference.candidates, UnionReduction.Subtype) : emptyObjectType; } function getUnmatchedProperty(source: Type, target: Type, requireOptionalProperties: boolean) { @@ -11275,7 +11286,7 @@ namespace ts { return undefined; } - function inferTypes(inferences: InferenceInfo[], originalSource: Type, originalTarget: Type, priority: InferencePriority = 0, mappedTypeStack?: string[]) { + function inferTypes(inferences: InferenceInfo[], originalSource: Type, originalTarget: Type, priority: InferencePriority = 0) { let symbolStack: Symbol[]; let visited: Map; inferFromTypes(originalSource, originalTarget); @@ -11492,13 +11503,7 @@ namespace ts { // such that direct inferences to T get priority over inferences to Partial, for example. const inference = getInferenceInfoForType((constraintType).type); if (inference && !inference.isFixed) { - const key = (source.symbol ? getSymbolId(source.symbol) + "," : "") + getSymbolId(target.symbol); - if (contains(mappedTypeStack, key)) { - return; - } - (mappedTypeStack || (mappedTypeStack = [])).push(key); - const inferredType = inferTypeForHomomorphicMappedType(source, target, mappedTypeStack); - mappedTypeStack.pop(); + const inferredType = inferTypeForHomomorphicMappedType(source, target); if (inferredType) { const savePriority = priority; priority |= InferencePriority.MappedType; diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 54f2ebfae42..16f546cecb2 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -3217,6 +3217,7 @@ namespace ts { ContainsPrivate = 1 << 8, // Synthetic property with private constituent(s) ContainsStatic = 1 << 9, // Synthetic property with static constituent(s) Late = 1 << 10, // Late-bound symbol for a computed property with a dynamic name + DeferredInferred = 1 << 11, // Deferred inferred property of homomorphic mapped type. It is HILARIOUS. Synthetic = SyntheticProperty | SyntheticMethod } @@ -3226,6 +3227,11 @@ namespace ts { isRestParameter?: boolean; } + export interface DeferredTransientSymbol extends TransientSymbol { + propertyType: Type; + mappedType: MappedType; + } + export const enum InternalSymbolName { Call = "__call", // Call signatures Constructor = "__constructor", // Constructor implementations From 064d9345e14d1e900deb116c56214d9366443cff Mon Sep 17 00:00:00 2001 From: csigs Date: Thu, 14 Dec 2017 05:10:09 +0000 Subject: [PATCH 053/173] LEGO: check in for master to temporary branch. --- .../diagnosticMessages.generated.json.lcl | 6 ++++++ .../diagnosticMessages.generated.json.lcl | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/loc/lcl/fra/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/fra/diagnosticMessages/diagnosticMessages.generated.json.lcl index a0b4d9364e1..52f4f60a857 100644 --- a/src/loc/lcl/fra/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/fra/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -4764,6 +4764,9 @@ + + + @@ -4860,6 +4863,9 @@ + + + diff --git a/src/loc/lcl/trk/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/trk/diagnosticMessages/diagnosticMessages.generated.json.lcl index 148048bac32..059258c5a0a 100644 --- a/src/loc/lcl/trk/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/trk/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -4748,6 +4748,9 @@ + + + @@ -4844,6 +4847,9 @@ + + + From 309468396d0a72ce3c20424081ca351f535a569c Mon Sep 17 00:00:00 2001 From: csigs Date: Thu, 14 Dec 2017 11:10:40 +0000 Subject: [PATCH 054/173] LEGO: check in for master to temporary branch. --- .../diagnosticMessages.generated.json.lcl | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/loc/lcl/esn/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/esn/diagnosticMessages/diagnosticMessages.generated.json.lcl index 9c479b4388a..0ef3945d275 100644 --- a/src/loc/lcl/esn/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/esn/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -4764,6 +4764,9 @@ + + + @@ -4860,6 +4863,9 @@ + + + From f6a383e3e4f67c16d8200f85ce59377980f58da2 Mon Sep 17 00:00:00 2001 From: csigs Date: Thu, 14 Dec 2017 17:10:08 +0000 Subject: [PATCH 055/173] LEGO: check in for master to temporary branch. --- .../diagnosticMessages.generated.json.lcl | 21 +++++++++++-------- .../diagnosticMessages.generated.json.lcl | 12 +++-------- .../diagnosticMessages.generated.json.lcl | 21 +++++++++++-------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/loc/lcl/chs/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/chs/diagnosticMessages/diagnosticMessages.generated.json.lcl index ddf6864d45c..751c7b8a741 100644 --- a/src/loc/lcl/chs/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/chs/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -3456,15 +3456,6 @@ - - - - - - - - - @@ -4752,6 +4743,15 @@ + + + + + + + + + @@ -4845,6 +4845,9 @@ + + + diff --git a/src/loc/lcl/cht/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/cht/diagnosticMessages/diagnosticMessages.generated.json.lcl index cfdfc5bc1ec..bc7690375b8 100644 --- a/src/loc/lcl/cht/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/cht/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -3456,15 +3456,6 @@ - - - - - - - - - @@ -4755,6 +4746,9 @@ + + + diff --git a/src/loc/lcl/ita/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/ita/diagnosticMessages/diagnosticMessages.generated.json.lcl index 0a58746d335..17e755bb6f9 100644 --- a/src/loc/lcl/ita/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/ita/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -3456,15 +3456,6 @@ - - - - - - - - - @@ -4752,6 +4743,15 @@ + + + + + + + + + @@ -4845,6 +4845,9 @@ + + + From 05de0a7da392e5385192f7638adeb249d98e695b Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Thu, 14 Dec 2017 13:33:02 -0800 Subject: [PATCH 056/173] Get it working: 1. Actually return the cached result! 2. Unnest worker function. 3. Improve all the names. 4. Pre-set the cache to undefined to avoid loops. (Not sure this is needed, though.) 5. Make the new type internal to avoid baseline changes. 6. Cut off recursion in the printing of recursive deferred mapped types. Note that (6) required introducing a new stack that is exactly like mappedTypeStack. I think the cache may actually be needed here, not in the creation of the deferred type. --- src/compiler/checker.ts | 41 +++++++++++++++---- src/compiler/types.ts | 1 + .../mappedTypeRecursiveInference.types | 4 +- 3 files changed, 37 insertions(+), 9 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index d333424dcb3..dbc12b1461a 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -335,6 +335,7 @@ namespace ts { const globals = createSymbolTable(); const deferredInferenceCache = createMap(); + const deferredMappedTypeInstantiationStack: string[] = []; let ambientModulesCache: Symbol[] | undefined; /** * List of every ambient module with a "*" wildcard. @@ -2867,7 +2868,23 @@ namespace ts { } for (const propertySymbol of properties) { - const propertyType = getTypeOfSymbol(propertySymbol); + let propertyType: Type; + if (getCheckFlags(propertySymbol) & CheckFlags.DeferredInferred) { + const deferred = propertySymbol as DeferredTransientSymbol; + const key = deferred.propertyType.id + "," + (deferred.mappedType.symbol ? deferred.mappedType.symbol.id : ""); + // Temporary solution to recursive printing: zero out repeated types. + if (contains(deferredMappedTypeInstantiationStack, key)) { + // TODO: Could probably be an actual cache that returns {} when it contains undefined. + propertyType = emptyObjectType; + } + else { + deferredMappedTypeInstantiationStack.push(key) + propertyType = getTypeOfSymbol(propertySymbol); + } + } + else { + propertyType = getTypeOfSymbol(propertySymbol); + } const saveEnclosingDeclaration = context.enclosingDeclaration; context.enclosingDeclaration = undefined; const propertyName = symbolToName(propertySymbol, context, SymbolFlags.Value, /*expectsIdentifier*/ true); @@ -2894,6 +2911,9 @@ namespace ts { /*initializer*/ undefined); typeElements.push(propertySignature); } + if (getCheckFlags(propertySymbol) & CheckFlags.DeferredInferred) { + deferredMappedTypeInstantiationStack.pop(); + } } return typeElements.length ? typeElements : undefined; } @@ -4869,7 +4889,7 @@ namespace ts { return getTypeOfInstantiatedSymbol(symbol); } if (getCheckFlags(symbol) & CheckFlags.DeferredInferred) { - return inferTargetType((symbol as DeferredTransientSymbol).propertyType, (symbol as DeferredTransientSymbol).mappedType); + return inferDeferredMappedType((symbol as DeferredTransientSymbol).propertyType, (symbol as DeferredTransientSymbol).mappedType); } if (symbol.flags & (SymbolFlags.Variable | SymbolFlags.Property)) { return getTypeOfVariableOrParameterOrProperty(symbol); @@ -11233,7 +11253,13 @@ namespace ts { if (deferredInferenceCache.has(key)) { return deferredInferenceCache.get(key); } - deferredInferenceCache.set(key, function() { + deferredInferenceCache.set(key, undefined); + const type = createDeferredMappedType(source, target); + deferredInferenceCache.set(key, type); + return type; + } + + function createDeferredMappedType(source: Type, target: MappedType) { const properties = getPropertiesOfType(source); let indexInfo = getIndexInfoOfType(source, IndexKind.String); if (properties.length === 0 && !indexInfo) { @@ -11257,14 +11283,15 @@ namespace ts { members.set(prop.escapedName, inferredProp); } if (indexInfo) { - // TODO: Defer this too. BARREL OF LAUGHS RIGHT THERE - indexInfo = createIndexInfo(inferTargetType(indexInfo.type, target), readonlyMask && indexInfo.isReadonly); + // TODO: Defer this too. + // (probably the simplest way is to have a special type that defers the creation of (at least) its index info in + // resolveStructuredTypeMembers + indexInfo = createIndexInfo(inferDeferredMappedType(indexInfo.type, target), readonlyMask && indexInfo.isReadonly); } return createAnonymousType(undefined, members, emptyArray, emptyArray, indexInfo, undefined); - }()); } - function inferTargetType(sourceType: Type, target: MappedType): Type { + function inferDeferredMappedType(sourceType: Type, target: MappedType): Type { const typeParameter = getIndexedAccessType((getConstraintTypeFromMappedType(target)).type, getTypeParameterFromMappedType(target)); const templateType = getTemplateTypeFromMappedType(target); const inference = createInferenceInfo(typeParameter); diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 16f546cecb2..dc8c6d71618 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -3227,6 +3227,7 @@ namespace ts { isRestParameter?: boolean; } + /* @internal */ export interface DeferredTransientSymbol extends TransientSymbol { propertyType: Type; mappedType: MappedType; diff --git a/tests/baselines/reference/mappedTypeRecursiveInference.types b/tests/baselines/reference/mappedTypeRecursiveInference.types index 382135591d5..0da9029f379 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference.types +++ b/tests/baselines/reference/mappedTypeRecursiveInference.types @@ -26,8 +26,8 @@ declare function foo(deep: Deep): T; >T : T const out = foo(a); ->out : { a: {}; } ->foo(a) : { a: {}; } +>out : { a: { a: {}; }; } +>foo(a) : { a: { a: {}; }; } >foo : (deep: Deep) => T >a : A From 6b024f64955bea7d2d6720bb28df5af355590dc6 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Mon, 11 Dec 2017 09:47:04 -0800 Subject: [PATCH 057/173] Test:XMLHttpRequest inference to PartialDeep Compilation didn't finish before! Now it does. --- .../reference/mappedTypeRecursiveInference.js | 5 +++++ .../reference/mappedTypeRecursiveInference.symbols | 9 +++++++++ .../reference/mappedTypeRecursiveInference.types | 10 ++++++++++ tests/cases/compiler/mappedTypeRecursiveInference.ts | 4 ++++ 4 files changed, 28 insertions(+) diff --git a/tests/baselines/reference/mappedTypeRecursiveInference.js b/tests/baselines/reference/mappedTypeRecursiveInference.js index 5b7631818bc..eda4d0b618e 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference.js +++ b/tests/baselines/reference/mappedTypeRecursiveInference.js @@ -4,7 +4,12 @@ declare let a: A; type Deep = { [K in keyof T]: Deep } declare function foo(deep: Deep): T; const out = foo(a); + +let xhr: XMLHttpRequest; +const out2 = foo(xhr); //// [mappedTypeRecursiveInference.js] var out = foo(a); +var xhr; +var out2 = foo(xhr); diff --git a/tests/baselines/reference/mappedTypeRecursiveInference.symbols b/tests/baselines/reference/mappedTypeRecursiveInference.symbols index a3fa3722551..96ed980c4c2 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference.symbols +++ b/tests/baselines/reference/mappedTypeRecursiveInference.symbols @@ -30,3 +30,12 @@ const out = foo(a); >foo : Symbol(foo, Decl(mappedTypeRecursiveInference.ts, 2, 45)) >a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 1, 11)) +let xhr: XMLHttpRequest; +>xhr : Symbol(xhr, Decl(mappedTypeRecursiveInference.ts, 6, 3)) +>XMLHttpRequest : Symbol(XMLHttpRequest, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --)) + +const out2 = foo(xhr); +>out2 : Symbol(out2, Decl(mappedTypeRecursiveInference.ts, 7, 5)) +>foo : Symbol(foo, Decl(mappedTypeRecursiveInference.ts, 2, 45)) +>xhr : Symbol(xhr, Decl(mappedTypeRecursiveInference.ts, 6, 3)) + diff --git a/tests/baselines/reference/mappedTypeRecursiveInference.types b/tests/baselines/reference/mappedTypeRecursiveInference.types index 0da9029f379..8dbc33e0b2a 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference.types +++ b/tests/baselines/reference/mappedTypeRecursiveInference.types @@ -31,3 +31,13 @@ const out = foo(a); >foo : (deep: Deep) => T >a : A +let xhr: XMLHttpRequest; +>xhr : XMLHttpRequest +>XMLHttpRequest : XMLHttpRequest + +const out2 = foo(xhr); +>out2 : { onreadystatechange: {}; readonly readyState: { toString: {}; toFixed: {}; toExponential: {}; toPrecision: {}; valueOf: {}; toLocaleString: {}; }; readonly response: {}; readonly responseText: { toString: {}; charAt: {}; charCodeAt: {}; concat: {}; indexOf: {}; lastIndexOf: {}; localeCompare: {}; match: {}; replace: {}; search: {}; slice: {}; split: {}; substring: {}; toLowerCase: {}; toLocaleLowerCase: {}; toUpperCase: {}; toLocaleUpperCase: {}; trim: {}; readonly length: {}; substr: {}; valueOf: {}; [Symbol.iterator]: {}; codePointAt: {}; includes: {}; endsWith: {}; normalize: {}; repeat: {}; startsWith: {}; anchor: {}; big: {}; blink: {}; bold: {}; fixed: {}; fontcolor: {}; fontsize: {}; italics: {}; link: {}; small: {}; strike: {}; sub: {}; sup: {}; }; responseType: {}; readonly responseURL: {}; readonly responseXML: { readonly activeElement: { readonly classList: { readonly length: {}; add: {}; contains: {}; item: {}; remove: {}; toggle: {}; toString: {}; }; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: { name: {}; assignedNodes: {}; accessKey: {}; readonly children: { namedItem: {}; readonly length: {}; item: {}; }; contentEditable: {}; readonly dataset: { [x: string]: {}; }; dir: {}; draggable: { valueOf: {}; }; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: { alignContent: {}; alignItems: {}; alignmentBaseline: {}; alignSelf: {}; animation: {}; animationDelay: {}; animationDirection: {}; animationDuration: {}; animationFillMode: {}; animationIterationCount: {}; animationName: {}; animationPlayState: {}; animationTimingFunction: {}; backfaceVisibility: {}; background: {}; backgroundAttachment: {}; backgroundClip: {}; backgroundColor: {}; backgroundImage: {}; backgroundOrigin: {}; backgroundPosition: {}; backgroundPositionX: {}; backgroundPositionY: {}; backgroundRepeat: {}; backgroundSize: {}; baselineShift: {}; border: {}; borderBottom: {}; borderBottomColor: {}; borderBottomLeftRadius: {}; borderBottomRightRadius: {}; borderBottomStyle: {}; borderBottomWidth: {}; borderCollapse: {}; borderColor: {}; borderImage: {}; borderImageOutset: {}; borderImageRepeat: {}; borderImageSlice: {}; borderImageSource: {}; borderImageWidth: {}; borderLeft: {}; borderLeftColor: {}; borderLeftStyle: {}; borderLeftWidth: {}; borderRadius: {}; borderRight: {}; borderRightColor: {}; borderRightStyle: {}; borderRightWidth: {}; borderSpacing: {}; borderStyle: {}; borderTop: {}; borderTopColor: {}; borderTopLeftRadius: {}; borderTopRightRadius: {}; borderTopStyle: {}; borderTopWidth: {}; borderWidth: {}; bottom: {}; boxShadow: {}; boxSizing: {}; breakAfter: {}; breakBefore: {}; breakInside: {}; captionSide: {}; clear: {}; clip: {}; clipPath: {}; clipRule: {}; color: {}; colorInterpolationFilters: {}; columnCount: {}; columnFill: {}; columnGap: {}; columnRule: {}; columnRuleColor: {}; columnRuleStyle: {}; columnRuleWidth: {}; columns: {}; columnSpan: {}; columnWidth: {}; content: {}; counterIncrement: {}; counterReset: {}; cssFloat: {}; cssText: {}; cursor: {}; direction: {}; display: {}; dominantBaseline: {}; emptyCells: {}; enableBackground: {}; fill: {}; fillOpacity: {}; fillRule: {}; filter: {}; flex: {}; flexBasis: {}; flexDirection: {}; flexFlow: {}; flexGrow: {}; flexShrink: {}; flexWrap: {}; floodColor: {}; floodOpacity: {}; font: {}; fontFamily: {}; fontFeatureSettings: {}; fontSize: {}; fontSizeAdjust: {}; fontStretch: {}; fontStyle: {}; fontVariant: {}; fontWeight: {}; glyphOrientationHorizontal: {}; glyphOrientationVertical: {}; height: {}; imeMode: {}; justifyContent: {}; kerning: {}; layoutGrid: {}; layoutGridChar: {}; layoutGridLine: {}; layoutGridMode: {}; layoutGridType: {}; left: {}; readonly length: {}; letterSpacing: {}; lightingColor: {}; lineBreak: {}; lineHeight: {}; listStyle: {}; listStyleImage: {}; listStylePosition: {}; listStyleType: {}; margin: {}; marginBottom: {}; marginLeft: {}; marginRight: {}; marginTop: {}; marker: {}; markerEnd: {}; markerMid: {}; markerStart: {}; mask: {}; maxHeight: {}; maxWidth: {}; minHeight: {}; minWidth: {}; msContentZoomChaining: {}; msContentZooming: {}; msContentZoomLimit: {}; msContentZoomLimitMax: {}; msContentZoomLimitMin: {}; msContentZoomSnap: {}; msContentZoomSnapPoints: {}; msContentZoomSnapType: {}; msFlowFrom: {}; msFlowInto: {}; msFontFeatureSettings: {}; msGridColumn: {}; msGridColumnAlign: {}; msGridColumns: {}; msGridColumnSpan: {}; msGridRow: {}; msGridRowAlign: {}; msGridRows: {}; msGridRowSpan: {}; msHighContrastAdjust: {}; msHyphenateLimitChars: {}; msHyphenateLimitLines: {}; msHyphenateLimitZone: {}; msHyphens: {}; msImeAlign: {}; msOverflowStyle: {}; msScrollChaining: {}; msScrollLimit: {}; msScrollLimitXMax: {}; msScrollLimitXMin: {}; msScrollLimitYMax: {}; msScrollLimitYMin: {}; msScrollRails: {}; msScrollSnapPointsX: {}; msScrollSnapPointsY: {}; msScrollSnapType: {}; msScrollSnapX: {}; msScrollSnapY: {}; msScrollTranslation: {}; msTextCombineHorizontal: {}; msTextSizeAdjust: {}; msTouchAction: {}; msTouchSelect: {}; msUserSelect: {}; msWrapFlow: {}; msWrapMargin: {}; msWrapThrough: {}; opacity: {}; order: {}; orphans: {}; outline: {}; outlineColor: {}; outlineOffset: {}; outlineStyle: {}; outlineWidth: {}; overflow: {}; overflowX: {}; overflowY: {}; padding: {}; paddingBottom: {}; paddingLeft: {}; paddingRight: {}; paddingTop: {}; pageBreakAfter: {}; pageBreakBefore: {}; pageBreakInside: {}; readonly parentRule: { cssText: {}; readonly parentRule: {}; readonly parentStyleSheet: { readonly cssRules: { readonly length: {}; item: {}; }; cssText: {}; readonly id: {}; readonly imports: { readonly length: {}; item: {}; }; readonly isAlternate: {}; readonly isPrefAlternate: {}; readonly ownerRule: {}; readonly owningElement: {}; readonly pages: { readonly length: {}; item: {}; }; readonly readOnly: {}; readonly rules: {}; addImport: {}; addPageRule: {}; addRule: {}; deleteRule: {}; insertRule: {}; removeImport: {}; removeRule: {}; disabled: {}; readonly href: {}; readonly media: { readonly length: {}; mediaText: {}; appendMedium: {}; deleteMedium: {}; item: {}; toString: {}; }; readonly ownerNode: { readonly attributes: { readonly length: {}; getNamedItem: {}; getNamedItemNS: {}; item: {}; removeNamedItem: {}; removeNamedItemNS: {}; setNamedItem: {}; setNamedItemNS: {}; }; readonly baseURI: {}; readonly childNodes: { readonly length: {}; item: {}; }; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: { accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: { readonly host: {}; innerHTML: {}; readonly activeElement: {}; readonly stylesheets: {}; getSelection: {}; elementFromPoint: {}; elementsFromPoint: {}; getElementById: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; querySelector: {}; querySelectorAll: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; }; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; }; readonly parentStyleSheet: { disabled: {}; readonly href: {}; readonly media: {}; readonly ownerNode: {}; readonly parentStyleSheet: {}; readonly title: {}; readonly type: {}; }; readonly title: {}; readonly type: {}; }; readonly type: {}; readonly CHARSET_RULE: {}; readonly FONT_FACE_RULE: {}; readonly IMPORT_RULE: {}; readonly KEYFRAME_RULE: {}; readonly KEYFRAMES_RULE: {}; readonly MEDIA_RULE: {}; readonly NAMESPACE_RULE: {}; readonly PAGE_RULE: {}; readonly STYLE_RULE: {}; readonly SUPPORTS_RULE: {}; readonly UNKNOWN_RULE: {}; readonly VIEWPORT_RULE: {}; }; perspective: {}; perspectiveOrigin: {}; pointerEvents: {}; position: {}; quotes: {}; right: {}; rotate: {}; rubyAlign: {}; rubyOverhang: {}; rubyPosition: {}; scale: {}; stopColor: {}; stopOpacity: {}; stroke: {}; strokeDasharray: {}; strokeDashoffset: {}; strokeLinecap: {}; strokeLinejoin: {}; strokeMiterlimit: {}; strokeOpacity: {}; strokeWidth: {}; tableLayout: {}; textAlign: {}; textAlignLast: {}; textAnchor: {}; textDecoration: {}; textIndent: {}; textJustify: {}; textKashida: {}; textKashidaSpace: {}; textOverflow: {}; textShadow: {}; textTransform: {}; textUnderlinePosition: {}; top: {}; touchAction: {}; transform: {}; transformOrigin: {}; transformStyle: {}; transition: {}; transitionDelay: {}; transitionDuration: {}; transitionProperty: {}; transitionTimingFunction: {}; translate: {}; unicodeBidi: {}; verticalAlign: {}; visibility: {}; webkitAlignContent: {}; webkitAlignItems: {}; webkitAlignSelf: {}; webkitAnimation: {}; webkitAnimationDelay: {}; webkitAnimationDirection: {}; webkitAnimationDuration: {}; webkitAnimationFillMode: {}; webkitAnimationIterationCount: {}; webkitAnimationName: {}; webkitAnimationPlayState: {}; webkitAnimationTimingFunction: {}; webkitAppearance: {}; webkitBackfaceVisibility: {}; webkitBackgroundClip: {}; webkitBackgroundOrigin: {}; webkitBackgroundSize: {}; webkitBorderBottomLeftRadius: {}; webkitBorderBottomRightRadius: {}; webkitBorderImage: {}; webkitBorderRadius: {}; webkitBorderTopLeftRadius: {}; webkitBorderTopRightRadius: {}; webkitBoxAlign: {}; webkitBoxDirection: {}; webkitBoxFlex: {}; webkitBoxOrdinalGroup: {}; webkitBoxOrient: {}; webkitBoxPack: {}; webkitBoxSizing: {}; webkitColumnBreakAfter: {}; webkitColumnBreakBefore: {}; webkitColumnBreakInside: {}; webkitColumnCount: {}; webkitColumnGap: {}; webkitColumnRule: {}; webkitColumnRuleColor: {}; webkitColumnRuleStyle: {}; webkitColumnRuleWidth: {}; webkitColumns: {}; webkitColumnSpan: {}; webkitColumnWidth: {}; webkitFilter: {}; webkitFlex: {}; webkitFlexBasis: {}; webkitFlexDirection: {}; webkitFlexFlow: {}; webkitFlexGrow: {}; webkitFlexShrink: {}; webkitFlexWrap: {}; webkitJustifyContent: {}; webkitOrder: {}; webkitPerspective: {}; webkitPerspectiveOrigin: {}; webkitTapHighlightColor: {}; webkitTextFillColor: {}; webkitTextSizeAdjust: {}; webkitTextStroke: {}; webkitTextStrokeColor: {}; webkitTextStrokeWidth: {}; webkitTransform: {}; webkitTransformOrigin: {}; webkitTransformStyle: {}; webkitTransition: {}; webkitTransitionDelay: {}; webkitTransitionDuration: {}; webkitTransitionProperty: {}; webkitTransitionTimingFunction: {}; webkitUserModify: {}; webkitUserSelect: {}; webkitWritingMode: {}; whiteSpace: {}; widows: {}; width: {}; wordBreak: {}; wordSpacing: {}; wordWrap: {}; writingMode: {}; zIndex: {}; zoom: {}; resize: {}; userSelect: {}; getPropertyPriority: {}; getPropertyValue: {}; item: {}; removeProperty: {}; setProperty: {}; }; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; }; alinkColor: {}; readonly all: { readonly length: {}; item: {}; namedItem: {}; }; anchors: { item: {}; namedItem: {}; readonly length: {}; }; applets: {}; bgColor: {}; body: {}; readonly characterSet: {}; charset: {}; readonly compatMode: {}; cookie: {}; readonly currentScript: { async: {}; charset: {}; crossOrigin: {}; defer: {}; event: {}; htmlFor: {}; src: {}; text: {}; type: {}; integrity: {}; addEventListener: {}; removeEventListener: {}; accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; } | { type: {}; addEventListener: {}; removeEventListener: {}; className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: { contentScriptType: {}; contentStyleType: {}; currentScale: {}; readonly currentTranslate: { x: {}; y: {}; matrixTransform: {}; }; readonly height: { readonly animVal: { readonly unitType: {}; value: {}; valueAsString: {}; valueInSpecifiedUnits: {}; convertToSpecifiedUnits: {}; newValueSpecifiedUnits: {}; readonly SVG_LENGTHTYPE_CM: {}; readonly SVG_LENGTHTYPE_EMS: {}; readonly SVG_LENGTHTYPE_EXS: {}; readonly SVG_LENGTHTYPE_IN: {}; readonly SVG_LENGTHTYPE_MM: {}; readonly SVG_LENGTHTYPE_NUMBER: {}; readonly SVG_LENGTHTYPE_PC: {}; readonly SVG_LENGTHTYPE_PERCENTAGE: {}; readonly SVG_LENGTHTYPE_PT: {}; readonly SVG_LENGTHTYPE_PX: {}; readonly SVG_LENGTHTYPE_UNKNOWN: {}; }; readonly baseVal: {}; }; onabort: {}; onerror: {}; onresize: {}; onscroll: {}; onunload: {}; onzoom: {}; readonly pixelUnitToMillimeterX: {}; readonly pixelUnitToMillimeterY: {}; readonly screenPixelToMillimeterX: {}; readonly screenPixelToMillimeterY: {}; readonly viewport: { height: {}; width: {}; x: {}; y: {}; }; readonly width: {}; readonly x: {}; readonly y: {}; checkEnclosure: {}; checkIntersection: {}; createSVGAngle: {}; createSVGLength: {}; createSVGMatrix: {}; createSVGNumber: {}; createSVGPoint: {}; createSVGRect: {}; createSVGTransform: {}; createSVGTransformFromMatrix: {}; deselectAll: {}; forceRedraw: {}; getComputedStyle: {}; getCurrentTime: {}; getElementById: {}; getEnclosureList: {}; getIntersectionList: {}; pauseAnimations: {}; setCurrentTime: {}; suspendRedraw: {}; unpauseAnimations: {}; unsuspendRedraw: {}; unsuspendRedrawAll: {}; addEventListener: {}; removeEventListener: {}; readonly farthestViewportElement: { className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: {}; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; }; readonly nearestViewportElement: {}; readonly transform: { readonly animVal: { readonly numberOfItems: {}; appendItem: {}; clear: {}; consolidate: {}; createSVGTransformFromMatrix: {}; getItem: {}; initialize: {}; insertItemBefore: {}; removeItem: {}; replaceItem: {}; }; readonly baseVal: {}; }; getBBox: {}; getCTM: {}; getScreenCTM: {}; getTransformToElement: {}; className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: {}; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; readonly requiredExtensions: { readonly numberOfItems: {}; appendItem: {}; clear: {}; getItem: {}; initialize: {}; insertItemBefore: {}; removeItem: {}; replaceItem: {}; }; readonly requiredFeatures: {}; readonly systemLanguage: {}; hasExtension: {}; createEvent: {}; readonly preserveAspectRatio: { readonly animVal: { align: {}; meetOrSlice: {}; readonly SVG_MEETORSLICE_MEET: {}; readonly SVG_MEETORSLICE_SLICE: {}; readonly SVG_MEETORSLICE_UNKNOWN: {}; readonly SVG_PRESERVEASPECTRATIO_NONE: {}; readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: {}; }; readonly baseVal: {}; }; readonly viewBox: { readonly animVal: {}; readonly baseVal: {}; }; readonly zoomAndPan: {}; }; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; readonly href: { readonly animVal: {}; baseVal: {}; }; }; readonly defaultView: { readonly applicationCache: { oncached: {}; onchecking: {}; ondownloading: {}; onerror: {}; onnoupdate: {}; onobsolete: {}; onprogress: {}; onupdateready: {}; readonly status: {}; abort: {}; swapCache: {}; update: {}; readonly CHECKING: {}; readonly DOWNLOADING: {}; readonly IDLE: {}; readonly OBSOLETE: {}; readonly UNCACHED: {}; readonly UPDATEREADY: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly caches: { delete: {}; has: {}; keys: {}; match: {}; open: {}; }; readonly clientInformation: { readonly authentication: { getAssertion: {}; makeCredential: {}; }; readonly cookieEnabled: {}; gamepadInputEmulation: {}; readonly language: {}; readonly maxTouchPoints: {}; readonly mimeTypes: { readonly length: {}; item: {}; namedItem: {}; }; readonly msManipulationViewsEnabled: {}; readonly msMaxTouchPoints: {}; readonly msPointerEnabled: {}; readonly plugins: { readonly length: {}; item: {}; namedItem: {}; refresh: {}; }; readonly pointerEnabled: {}; readonly serviceWorker: { readonly controller: { onstatechange: {}; readonly scriptURL: {}; readonly state: {}; postMessage: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onerror: {}; }; oncontrollerchange: {}; onmessage: {}; readonly ready: { then: {}; catch: {}; readonly [Symbol.toStringTag]: {}; }; getRegistration: {}; getRegistrations: {}; register: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly webdriver: {}; readonly doNotTrack: {}; readonly hardwareConcurrency: {}; readonly languages: { length: {}; toString: {}; toLocaleString: {}; push: {}; pop: {}; concat: {}; join: {}; reverse: {}; shift: {}; slice: {}; sort: {}; splice: {}; unshift: {}; indexOf: {}; lastIndexOf: {}; every: {}; some: {}; forEach: {}; map: {}; filter: {}; reduce: {}; reduceRight: {}; [Symbol.unscopables]: {}; [Symbol.iterator]: {}; entries: {}; keys: {}; values: {}; find: {}; findIndex: {}; fill: {}; copyWithin: {}; }; getGamepads: {}; javaEnabled: {}; msLaunchUri: {}; requestMediaKeySystemAccess: {}; vibrate: {}; constructor: { apply: {}; call: {}; bind: {}; toString: {}; prototype: {}; readonly length: {}; arguments: {}; caller: {}; [Symbol.hasInstance]: {}; readonly name: {}; }; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; readonly appCodeName: {}; readonly appName: {}; readonly appVersion: {}; readonly platform: {}; readonly product: {}; readonly productSub: {}; readonly userAgent: {}; readonly vendor: {}; readonly vendorSub: {}; readonly onLine: {}; readonly geolocation: { clearWatch: {}; getCurrentPosition: {}; watchPosition: {}; }; confirmSiteSpecificTrackingException: {}; confirmWebWideTrackingException: {}; removeSiteSpecificTrackingException: {}; removeWebWideTrackingException: {}; storeSiteSpecificTrackingException: {}; storeWebWideTrackingException: {}; msSaveBlob: {}; msSaveOrOpenBlob: {}; sendBeacon: {}; readonly mediaDevices: { ondevicechange: {}; enumerateDevices: {}; getSupportedConstraints: {}; getUserMedia: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; getUserMedia: {}; }; readonly closed: {}; readonly crypto: { readonly subtle: { decrypt: {}; deriveBits: {}; deriveKey: {}; digest: {}; encrypt: {}; exportKey: {}; generateKey: {}; importKey: {}; sign: {}; unwrapKey: {}; verify: {}; wrapKey: {}; }; constructor: {}; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; getRandomValues: {}; }; defaultStatus: {}; readonly devicePixelRatio: {}; readonly document: {}; readonly doNotTrack: {}; event: { readonly bubbles: {}; readonly cancelable: {}; cancelBubble: {}; readonly currentTarget: { addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; }; readonly defaultPrevented: {}; readonly eventPhase: {}; readonly isTrusted: {}; returnValue: {}; readonly srcElement: {}; readonly target: {}; readonly timeStamp: {}; readonly type: {}; readonly scoped: {}; initEvent: {}; preventDefault: {}; stopImmediatePropagation: {}; stopPropagation: {}; deepPath: {}; readonly AT_TARGET: {}; readonly BUBBLING_PHASE: {}; readonly CAPTURING_PHASE: {}; }; readonly external: {}; readonly frameElement: {}; readonly frames: {}; readonly history: { readonly length: {}; readonly state: {}; scrollRestoration: {}; back: {}; forward: {}; go: {}; pushState: {}; replaceState: {}; }; readonly innerHeight: {}; readonly innerWidth: {}; readonly isSecureContext: {}; readonly length: {}; readonly location: { hash: {}; host: {}; hostname: {}; href: {}; readonly origin: {}; pathname: {}; port: {}; protocol: {}; search: {}; assign: {}; reload: {}; replace: {}; toString: {}; }; readonly locationbar: { readonly visible: {}; }; readonly menubar: {}; readonly msContentScript: { extensionIdToShortId: {}; fireExtensionApiTelemetry: {}; genericFunction: {}; genericSynchronousFunction: {}; getExtensionId: {}; registerGenericFunctionCallbackHandler: {}; registerGenericPersistentCallbackHandler: {}; }; readonly msCredentials: { getAssertion: {}; makeCredential: {}; }; name: {}; readonly navigator: {}; offscreenBuffering: {}; onabort: {}; onafterprint: {}; onbeforeprint: {}; onbeforeunload: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncompassneedscalibration: {}; oncontextmenu: {}; ondblclick: {}; ondevicelight: {}; ondevicemotion: {}; ondeviceorientation: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onhashchange: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmessage: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onoffline: {}; ononline: {}; onorientationchange: {}; onpagehide: {}; onpageshow: {}; onpause: {}; onplay: {}; onplaying: {}; onpopstate: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onresize: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onstalled: {}; onstorage: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onunload: {}; onvolumechange: {}; onwaiting: {}; opener: {}; orientation: {}; readonly outerHeight: {}; readonly outerWidth: {}; readonly pageXOffset: {}; readonly pageYOffset: {}; readonly parent: {}; readonly performance: { readonly navigation: { readonly redirectCount: {}; readonly type: {}; toJSON: {}; readonly TYPE_BACK_FORWARD: {}; readonly TYPE_NAVIGATE: {}; readonly TYPE_RELOAD: {}; readonly TYPE_RESERVED: {}; }; readonly timing: { readonly connectEnd: {}; readonly connectStart: {}; readonly domainLookupEnd: {}; readonly domainLookupStart: {}; readonly domComplete: {}; readonly domContentLoadedEventEnd: {}; readonly domContentLoadedEventStart: {}; readonly domInteractive: {}; readonly domLoading: {}; readonly fetchStart: {}; readonly loadEventEnd: {}; readonly loadEventStart: {}; readonly msFirstPaint: {}; readonly navigationStart: {}; readonly redirectEnd: {}; readonly redirectStart: {}; readonly requestStart: {}; readonly responseEnd: {}; readonly responseStart: {}; readonly unloadEventEnd: {}; readonly unloadEventStart: {}; readonly secureConnectionStart: {}; toJSON: {}; }; clearMarks: {}; clearMeasures: {}; clearResourceTimings: {}; getEntries: {}; getEntriesByName: {}; getEntriesByType: {}; getMarks: {}; getMeasures: {}; mark: {}; measure: {}; now: {}; setResourceTimingBufferSize: {}; toJSON: {}; }; readonly personalbar: {}; readonly screen: { readonly availHeight: {}; readonly availWidth: {}; bufferDepth: {}; readonly colorDepth: {}; readonly deviceXDPI: {}; readonly deviceYDPI: {}; readonly fontSmoothingEnabled: {}; readonly height: {}; readonly logicalXDPI: {}; readonly logicalYDPI: {}; readonly msOrientation: {}; onmsorientationchange: {}; readonly pixelDepth: {}; readonly systemXDPI: {}; readonly systemYDPI: {}; readonly width: {}; msLockOrientation: {}; msUnlockOrientation: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly screenLeft: {}; readonly screenTop: {}; readonly screenX: {}; readonly screenY: {}; readonly scrollbars: {}; readonly scrollX: {}; readonly scrollY: {}; readonly self: {}; readonly speechSynthesis: { onvoiceschanged: {}; readonly paused: {}; readonly pending: {}; readonly speaking: {}; cancel: {}; getVoices: {}; pause: {}; resume: {}; speak: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; status: {}; readonly statusbar: {}; readonly styleMedia: { readonly type: {}; matchMedium: {}; }; readonly toolbar: {}; readonly top: {}; readonly window: {}; URL: { prototype: { hash: {}; host: {}; hostname: {}; href: {}; readonly origin: {}; password: {}; pathname: {}; port: {}; protocol: {}; search: {}; username: {}; readonly searchParams: { append: {}; delete: {}; get: {}; getAll: {}; has: {}; set: {}; }; toString: {}; }; createObjectURL: {}; revokeObjectURL: {}; }; URLSearchParams: { prototype: {}; }; Blob: { prototype: { readonly size: {}; readonly type: {}; msClose: {}; msDetachStream: {}; slice: {}; }; }; customElements: { define: {}; get: {}; whenDefined: {}; }; alert: {}; blur: {}; cancelAnimationFrame: {}; captureEvents: {}; close: {}; confirm: {}; departFocus: {}; focus: {}; getComputedStyle: {}; getMatchedCSSRules: {}; getSelection: {}; matchMedia: {}; moveBy: {}; moveTo: {}; msWriteProfilerMark: {}; open: {}; postMessage: {}; print: {}; prompt: {}; releaseEvents: {}; requestAnimationFrame: {}; resizeBy: {}; resizeTo: {}; scroll: {}; scrollBy: {}; scrollTo: {}; stop: {}; webkitCancelAnimationFrame: {}; webkitConvertPointFromNodeToPage: {}; webkitConvertPointFromPageToNode: {}; webkitRequestAnimationFrame: {}; createImageBitmap: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; clearInterval: {}; clearTimeout: {}; setInterval: {}; setTimeout: {}; constructor: {}; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; clearImmediate: {}; setImmediate: {}; readonly sessionStorage: { [x: string]: {}; readonly length: {}; clear: {}; getItem: {}; key: {}; removeItem: {}; setItem: {}; }; readonly localStorage: {}; readonly console: { assert: {}; clear: {}; count: {}; debug: {}; dir: {}; dirxml: {}; error: {}; exception: {}; group: {}; groupCollapsed: {}; groupEnd: {}; info: {}; log: {}; msIsIndependentlyComposed: {}; profile: {}; profileEnd: {}; select: {}; table: {}; time: {}; timeEnd: {}; trace: {}; warn: {}; }; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly indexedDB: { cmp: {}; deleteDatabase: {}; open: {}; }; atob: {}; btoa: {}; fetch: {}; }; designMode: {}; dir: {}; readonly doctype: { readonly entities: {}; readonly internalSubset: {}; readonly name: {}; readonly notations: {}; readonly publicId: {}; readonly systemId: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; remove: {}; }; documentElement: {}; domain: {}; embeds: {}; fgColor: {}; forms: {}; readonly fullscreenElement: {}; readonly fullscreenEnabled: {}; readonly head: { profile: {}; addEventListener: {}; removeEventListener: {}; accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; readonly hidden: {}; images: {}; readonly implementation: { createDocument: {}; createDocumentType: {}; createHTMLDocument: {}; hasFeature: {}; }; readonly inputEncoding: {}; readonly lastModified: {}; linkColor: {}; links: {}; readonly location: {}; msCapsLockWarningOff: {}; msCSSOMElementFloatMetrics: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforedeactivate: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onfullscreenchange: {}; onfullscreenerror: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmsmanipulationstatechanged: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onmssitemodejumplistitemremoved: {}; onmsthumbnailclick: {}; onpause: {}; onplay: {}; onplaying: {}; onpointerlockchange: {}; onpointerlockerror: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectionchange: {}; onselectstart: {}; onstalled: {}; onstop: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onvolumechange: {}; onwaiting: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; plugins: {}; readonly pointerLockElement: {}; readonly readyState: {}; readonly referrer: {}; readonly rootElement: {}; scripts: {}; readonly scrollingElement: {}; readonly styleSheets: {}; title: {}; readonly URL: {}; readonly URLUnencoded: {}; readonly visibilityState: {}; vlinkColor: {}; readonly webkitCurrentFullScreenElement: {}; readonly webkitFullscreenElement: {}; readonly webkitFullscreenEnabled: {}; readonly webkitIsFullScreen: {}; readonly xmlEncoding: {}; xmlStandalone: {}; xmlVersion: {}; adoptNode: {}; captureEvents: {}; caretRangeFromPoint: {}; clear: {}; close: {}; createAttribute: {}; createAttributeNS: {}; createCDATASection: {}; createComment: {}; createDocumentFragment: {}; createElement: {}; createElementNS: {}; createExpression: {}; createNodeIterator: {}; createNSResolver: {}; createProcessingInstruction: {}; createRange: {}; createTextNode: {}; createTouch: {}; createTouchList: {}; createTreeWalker: {}; elementFromPoint: {}; evaluate: {}; execCommand: {}; execCommandShowHelp: {}; exitFullscreen: {}; exitPointerLock: {}; focus: {}; getElementById: {}; getElementsByClassName: {}; getElementsByName: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; getSelection: {}; hasFocus: {}; importNode: {}; msElementsFromPoint: {}; msElementsFromRect: {}; open: {}; queryCommandEnabled: {}; queryCommandIndeterm: {}; queryCommandState: {}; queryCommandSupported: {}; queryCommandText: {}; queryCommandValue: {}; releaseEvents: {}; updateSettings: {}; webkitCancelFullScreen: {}; webkitExitFullscreen: {}; write: {}; writeln: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; querySelector: {}; querySelectorAll: {}; createEvent: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; readonly stylesheets: {}; elementsFromPoint: {}; }; readonly status: {}; readonly statusText: {}; timeout: {}; readonly upload: { addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; }; withCredentials: {}; msCaching?: {}; abort: {}; getAllResponseHeaders: {}; getResponseHeader: {}; msCachingEnabled: {}; open: {}; overrideMimeType: {}; send: {}; setRequestHeader: {}; readonly DONE: {}; readonly HEADERS_RECEIVED: {}; readonly LOADING: {}; readonly OPENED: {}; readonly UNSENT: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; } +>foo(xhr) : { onreadystatechange: {}; readonly readyState: { toString: {}; toFixed: {}; toExponential: {}; toPrecision: {}; valueOf: {}; toLocaleString: {}; }; readonly response: {}; readonly responseText: { toString: {}; charAt: {}; charCodeAt: {}; concat: {}; indexOf: {}; lastIndexOf: {}; localeCompare: {}; match: {}; replace: {}; search: {}; slice: {}; split: {}; substring: {}; toLowerCase: {}; toLocaleLowerCase: {}; toUpperCase: {}; toLocaleUpperCase: {}; trim: {}; readonly length: {}; substr: {}; valueOf: {}; [Symbol.iterator]: {}; codePointAt: {}; includes: {}; endsWith: {}; normalize: {}; repeat: {}; startsWith: {}; anchor: {}; big: {}; blink: {}; bold: {}; fixed: {}; fontcolor: {}; fontsize: {}; italics: {}; link: {}; small: {}; strike: {}; sub: {}; sup: {}; }; responseType: {}; readonly responseURL: {}; readonly responseXML: { readonly activeElement: { readonly classList: { readonly length: {}; add: {}; contains: {}; item: {}; remove: {}; toggle: {}; toString: {}; }; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: { name: {}; assignedNodes: {}; accessKey: {}; readonly children: { namedItem: {}; readonly length: {}; item: {}; }; contentEditable: {}; readonly dataset: { [x: string]: {}; }; dir: {}; draggable: { valueOf: {}; }; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: { alignContent: {}; alignItems: {}; alignmentBaseline: {}; alignSelf: {}; animation: {}; animationDelay: {}; animationDirection: {}; animationDuration: {}; animationFillMode: {}; animationIterationCount: {}; animationName: {}; animationPlayState: {}; animationTimingFunction: {}; backfaceVisibility: {}; background: {}; backgroundAttachment: {}; backgroundClip: {}; backgroundColor: {}; backgroundImage: {}; backgroundOrigin: {}; backgroundPosition: {}; backgroundPositionX: {}; backgroundPositionY: {}; backgroundRepeat: {}; backgroundSize: {}; baselineShift: {}; border: {}; borderBottom: {}; borderBottomColor: {}; borderBottomLeftRadius: {}; borderBottomRightRadius: {}; borderBottomStyle: {}; borderBottomWidth: {}; borderCollapse: {}; borderColor: {}; borderImage: {}; borderImageOutset: {}; borderImageRepeat: {}; borderImageSlice: {}; borderImageSource: {}; borderImageWidth: {}; borderLeft: {}; borderLeftColor: {}; borderLeftStyle: {}; borderLeftWidth: {}; borderRadius: {}; borderRight: {}; borderRightColor: {}; borderRightStyle: {}; borderRightWidth: {}; borderSpacing: {}; borderStyle: {}; borderTop: {}; borderTopColor: {}; borderTopLeftRadius: {}; borderTopRightRadius: {}; borderTopStyle: {}; borderTopWidth: {}; borderWidth: {}; bottom: {}; boxShadow: {}; boxSizing: {}; breakAfter: {}; breakBefore: {}; breakInside: {}; captionSide: {}; clear: {}; clip: {}; clipPath: {}; clipRule: {}; color: {}; colorInterpolationFilters: {}; columnCount: {}; columnFill: {}; columnGap: {}; columnRule: {}; columnRuleColor: {}; columnRuleStyle: {}; columnRuleWidth: {}; columns: {}; columnSpan: {}; columnWidth: {}; content: {}; counterIncrement: {}; counterReset: {}; cssFloat: {}; cssText: {}; cursor: {}; direction: {}; display: {}; dominantBaseline: {}; emptyCells: {}; enableBackground: {}; fill: {}; fillOpacity: {}; fillRule: {}; filter: {}; flex: {}; flexBasis: {}; flexDirection: {}; flexFlow: {}; flexGrow: {}; flexShrink: {}; flexWrap: {}; floodColor: {}; floodOpacity: {}; font: {}; fontFamily: {}; fontFeatureSettings: {}; fontSize: {}; fontSizeAdjust: {}; fontStretch: {}; fontStyle: {}; fontVariant: {}; fontWeight: {}; glyphOrientationHorizontal: {}; glyphOrientationVertical: {}; height: {}; imeMode: {}; justifyContent: {}; kerning: {}; layoutGrid: {}; layoutGridChar: {}; layoutGridLine: {}; layoutGridMode: {}; layoutGridType: {}; left: {}; readonly length: {}; letterSpacing: {}; lightingColor: {}; lineBreak: {}; lineHeight: {}; listStyle: {}; listStyleImage: {}; listStylePosition: {}; listStyleType: {}; margin: {}; marginBottom: {}; marginLeft: {}; marginRight: {}; marginTop: {}; marker: {}; markerEnd: {}; markerMid: {}; markerStart: {}; mask: {}; maxHeight: {}; maxWidth: {}; minHeight: {}; minWidth: {}; msContentZoomChaining: {}; msContentZooming: {}; msContentZoomLimit: {}; msContentZoomLimitMax: {}; msContentZoomLimitMin: {}; msContentZoomSnap: {}; msContentZoomSnapPoints: {}; msContentZoomSnapType: {}; msFlowFrom: {}; msFlowInto: {}; msFontFeatureSettings: {}; msGridColumn: {}; msGridColumnAlign: {}; msGridColumns: {}; msGridColumnSpan: {}; msGridRow: {}; msGridRowAlign: {}; msGridRows: {}; msGridRowSpan: {}; msHighContrastAdjust: {}; msHyphenateLimitChars: {}; msHyphenateLimitLines: {}; msHyphenateLimitZone: {}; msHyphens: {}; msImeAlign: {}; msOverflowStyle: {}; msScrollChaining: {}; msScrollLimit: {}; msScrollLimitXMax: {}; msScrollLimitXMin: {}; msScrollLimitYMax: {}; msScrollLimitYMin: {}; msScrollRails: {}; msScrollSnapPointsX: {}; msScrollSnapPointsY: {}; msScrollSnapType: {}; msScrollSnapX: {}; msScrollSnapY: {}; msScrollTranslation: {}; msTextCombineHorizontal: {}; msTextSizeAdjust: {}; msTouchAction: {}; msTouchSelect: {}; msUserSelect: {}; msWrapFlow: {}; msWrapMargin: {}; msWrapThrough: {}; opacity: {}; order: {}; orphans: {}; outline: {}; outlineColor: {}; outlineOffset: {}; outlineStyle: {}; outlineWidth: {}; overflow: {}; overflowX: {}; overflowY: {}; padding: {}; paddingBottom: {}; paddingLeft: {}; paddingRight: {}; paddingTop: {}; pageBreakAfter: {}; pageBreakBefore: {}; pageBreakInside: {}; readonly parentRule: { cssText: {}; readonly parentRule: {}; readonly parentStyleSheet: { readonly cssRules: { readonly length: {}; item: {}; }; cssText: {}; readonly id: {}; readonly imports: { readonly length: {}; item: {}; }; readonly isAlternate: {}; readonly isPrefAlternate: {}; readonly ownerRule: {}; readonly owningElement: {}; readonly pages: { readonly length: {}; item: {}; }; readonly readOnly: {}; readonly rules: {}; addImport: {}; addPageRule: {}; addRule: {}; deleteRule: {}; insertRule: {}; removeImport: {}; removeRule: {}; disabled: {}; readonly href: {}; readonly media: { readonly length: {}; mediaText: {}; appendMedium: {}; deleteMedium: {}; item: {}; toString: {}; }; readonly ownerNode: { readonly attributes: { readonly length: {}; getNamedItem: {}; getNamedItemNS: {}; item: {}; removeNamedItem: {}; removeNamedItemNS: {}; setNamedItem: {}; setNamedItemNS: {}; }; readonly baseURI: {}; readonly childNodes: { readonly length: {}; item: {}; }; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: { accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: { readonly host: {}; innerHTML: {}; readonly activeElement: {}; readonly stylesheets: {}; getSelection: {}; elementFromPoint: {}; elementsFromPoint: {}; getElementById: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; querySelector: {}; querySelectorAll: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; }; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; }; readonly parentStyleSheet: { disabled: {}; readonly href: {}; readonly media: {}; readonly ownerNode: {}; readonly parentStyleSheet: {}; readonly title: {}; readonly type: {}; }; readonly title: {}; readonly type: {}; }; readonly type: {}; readonly CHARSET_RULE: {}; readonly FONT_FACE_RULE: {}; readonly IMPORT_RULE: {}; readonly KEYFRAME_RULE: {}; readonly KEYFRAMES_RULE: {}; readonly MEDIA_RULE: {}; readonly NAMESPACE_RULE: {}; readonly PAGE_RULE: {}; readonly STYLE_RULE: {}; readonly SUPPORTS_RULE: {}; readonly UNKNOWN_RULE: {}; readonly VIEWPORT_RULE: {}; }; perspective: {}; perspectiveOrigin: {}; pointerEvents: {}; position: {}; quotes: {}; right: {}; rotate: {}; rubyAlign: {}; rubyOverhang: {}; rubyPosition: {}; scale: {}; stopColor: {}; stopOpacity: {}; stroke: {}; strokeDasharray: {}; strokeDashoffset: {}; strokeLinecap: {}; strokeLinejoin: {}; strokeMiterlimit: {}; strokeOpacity: {}; strokeWidth: {}; tableLayout: {}; textAlign: {}; textAlignLast: {}; textAnchor: {}; textDecoration: {}; textIndent: {}; textJustify: {}; textKashida: {}; textKashidaSpace: {}; textOverflow: {}; textShadow: {}; textTransform: {}; textUnderlinePosition: {}; top: {}; touchAction: {}; transform: {}; transformOrigin: {}; transformStyle: {}; transition: {}; transitionDelay: {}; transitionDuration: {}; transitionProperty: {}; transitionTimingFunction: {}; translate: {}; unicodeBidi: {}; verticalAlign: {}; visibility: {}; webkitAlignContent: {}; webkitAlignItems: {}; webkitAlignSelf: {}; webkitAnimation: {}; webkitAnimationDelay: {}; webkitAnimationDirection: {}; webkitAnimationDuration: {}; webkitAnimationFillMode: {}; webkitAnimationIterationCount: {}; webkitAnimationName: {}; webkitAnimationPlayState: {}; webkitAnimationTimingFunction: {}; webkitAppearance: {}; webkitBackfaceVisibility: {}; webkitBackgroundClip: {}; webkitBackgroundOrigin: {}; webkitBackgroundSize: {}; webkitBorderBottomLeftRadius: {}; webkitBorderBottomRightRadius: {}; webkitBorderImage: {}; webkitBorderRadius: {}; webkitBorderTopLeftRadius: {}; webkitBorderTopRightRadius: {}; webkitBoxAlign: {}; webkitBoxDirection: {}; webkitBoxFlex: {}; webkitBoxOrdinalGroup: {}; webkitBoxOrient: {}; webkitBoxPack: {}; webkitBoxSizing: {}; webkitColumnBreakAfter: {}; webkitColumnBreakBefore: {}; webkitColumnBreakInside: {}; webkitColumnCount: {}; webkitColumnGap: {}; webkitColumnRule: {}; webkitColumnRuleColor: {}; webkitColumnRuleStyle: {}; webkitColumnRuleWidth: {}; webkitColumns: {}; webkitColumnSpan: {}; webkitColumnWidth: {}; webkitFilter: {}; webkitFlex: {}; webkitFlexBasis: {}; webkitFlexDirection: {}; webkitFlexFlow: {}; webkitFlexGrow: {}; webkitFlexShrink: {}; webkitFlexWrap: {}; webkitJustifyContent: {}; webkitOrder: {}; webkitPerspective: {}; webkitPerspectiveOrigin: {}; webkitTapHighlightColor: {}; webkitTextFillColor: {}; webkitTextSizeAdjust: {}; webkitTextStroke: {}; webkitTextStrokeColor: {}; webkitTextStrokeWidth: {}; webkitTransform: {}; webkitTransformOrigin: {}; webkitTransformStyle: {}; webkitTransition: {}; webkitTransitionDelay: {}; webkitTransitionDuration: {}; webkitTransitionProperty: {}; webkitTransitionTimingFunction: {}; webkitUserModify: {}; webkitUserSelect: {}; webkitWritingMode: {}; whiteSpace: {}; widows: {}; width: {}; wordBreak: {}; wordSpacing: {}; wordWrap: {}; writingMode: {}; zIndex: {}; zoom: {}; resize: {}; userSelect: {}; getPropertyPriority: {}; getPropertyValue: {}; item: {}; removeProperty: {}; setProperty: {}; }; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; }; alinkColor: {}; readonly all: { readonly length: {}; item: {}; namedItem: {}; }; anchors: { item: {}; namedItem: {}; readonly length: {}; }; applets: {}; bgColor: {}; body: {}; readonly characterSet: {}; charset: {}; readonly compatMode: {}; cookie: {}; readonly currentScript: { async: {}; charset: {}; crossOrigin: {}; defer: {}; event: {}; htmlFor: {}; src: {}; text: {}; type: {}; integrity: {}; addEventListener: {}; removeEventListener: {}; accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; } | { type: {}; addEventListener: {}; removeEventListener: {}; className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: { contentScriptType: {}; contentStyleType: {}; currentScale: {}; readonly currentTranslate: { x: {}; y: {}; matrixTransform: {}; }; readonly height: { readonly animVal: { readonly unitType: {}; value: {}; valueAsString: {}; valueInSpecifiedUnits: {}; convertToSpecifiedUnits: {}; newValueSpecifiedUnits: {}; readonly SVG_LENGTHTYPE_CM: {}; readonly SVG_LENGTHTYPE_EMS: {}; readonly SVG_LENGTHTYPE_EXS: {}; readonly SVG_LENGTHTYPE_IN: {}; readonly SVG_LENGTHTYPE_MM: {}; readonly SVG_LENGTHTYPE_NUMBER: {}; readonly SVG_LENGTHTYPE_PC: {}; readonly SVG_LENGTHTYPE_PERCENTAGE: {}; readonly SVG_LENGTHTYPE_PT: {}; readonly SVG_LENGTHTYPE_PX: {}; readonly SVG_LENGTHTYPE_UNKNOWN: {}; }; readonly baseVal: {}; }; onabort: {}; onerror: {}; onresize: {}; onscroll: {}; onunload: {}; onzoom: {}; readonly pixelUnitToMillimeterX: {}; readonly pixelUnitToMillimeterY: {}; readonly screenPixelToMillimeterX: {}; readonly screenPixelToMillimeterY: {}; readonly viewport: { height: {}; width: {}; x: {}; y: {}; }; readonly width: {}; readonly x: {}; readonly y: {}; checkEnclosure: {}; checkIntersection: {}; createSVGAngle: {}; createSVGLength: {}; createSVGMatrix: {}; createSVGNumber: {}; createSVGPoint: {}; createSVGRect: {}; createSVGTransform: {}; createSVGTransformFromMatrix: {}; deselectAll: {}; forceRedraw: {}; getComputedStyle: {}; getCurrentTime: {}; getElementById: {}; getEnclosureList: {}; getIntersectionList: {}; pauseAnimations: {}; setCurrentTime: {}; suspendRedraw: {}; unpauseAnimations: {}; unsuspendRedraw: {}; unsuspendRedrawAll: {}; addEventListener: {}; removeEventListener: {}; readonly farthestViewportElement: { className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: {}; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; }; readonly nearestViewportElement: {}; readonly transform: { readonly animVal: { readonly numberOfItems: {}; appendItem: {}; clear: {}; consolidate: {}; createSVGTransformFromMatrix: {}; getItem: {}; initialize: {}; insertItemBefore: {}; removeItem: {}; replaceItem: {}; }; readonly baseVal: {}; }; getBBox: {}; getCTM: {}; getScreenCTM: {}; getTransformToElement: {}; className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: {}; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; readonly requiredExtensions: { readonly numberOfItems: {}; appendItem: {}; clear: {}; getItem: {}; initialize: {}; insertItemBefore: {}; removeItem: {}; replaceItem: {}; }; readonly requiredFeatures: {}; readonly systemLanguage: {}; hasExtension: {}; createEvent: {}; readonly preserveAspectRatio: { readonly animVal: { align: {}; meetOrSlice: {}; readonly SVG_MEETORSLICE_MEET: {}; readonly SVG_MEETORSLICE_SLICE: {}; readonly SVG_MEETORSLICE_UNKNOWN: {}; readonly SVG_PRESERVEASPECTRATIO_NONE: {}; readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: {}; }; readonly baseVal: {}; }; readonly viewBox: { readonly animVal: {}; readonly baseVal: {}; }; readonly zoomAndPan: {}; }; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; readonly href: { readonly animVal: {}; baseVal: {}; }; }; readonly defaultView: { readonly applicationCache: { oncached: {}; onchecking: {}; ondownloading: {}; onerror: {}; onnoupdate: {}; onobsolete: {}; onprogress: {}; onupdateready: {}; readonly status: {}; abort: {}; swapCache: {}; update: {}; readonly CHECKING: {}; readonly DOWNLOADING: {}; readonly IDLE: {}; readonly OBSOLETE: {}; readonly UNCACHED: {}; readonly UPDATEREADY: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly caches: { delete: {}; has: {}; keys: {}; match: {}; open: {}; }; readonly clientInformation: { readonly authentication: { getAssertion: {}; makeCredential: {}; }; readonly cookieEnabled: {}; gamepadInputEmulation: {}; readonly language: {}; readonly maxTouchPoints: {}; readonly mimeTypes: { readonly length: {}; item: {}; namedItem: {}; }; readonly msManipulationViewsEnabled: {}; readonly msMaxTouchPoints: {}; readonly msPointerEnabled: {}; readonly plugins: { readonly length: {}; item: {}; namedItem: {}; refresh: {}; }; readonly pointerEnabled: {}; readonly serviceWorker: { readonly controller: { onstatechange: {}; readonly scriptURL: {}; readonly state: {}; postMessage: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onerror: {}; }; oncontrollerchange: {}; onmessage: {}; readonly ready: { then: {}; catch: {}; readonly [Symbol.toStringTag]: {}; }; getRegistration: {}; getRegistrations: {}; register: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly webdriver: {}; readonly doNotTrack: {}; readonly hardwareConcurrency: {}; readonly languages: { length: {}; toString: {}; toLocaleString: {}; push: {}; pop: {}; concat: {}; join: {}; reverse: {}; shift: {}; slice: {}; sort: {}; splice: {}; unshift: {}; indexOf: {}; lastIndexOf: {}; every: {}; some: {}; forEach: {}; map: {}; filter: {}; reduce: {}; reduceRight: {}; [Symbol.unscopables]: {}; [Symbol.iterator]: {}; entries: {}; keys: {}; values: {}; find: {}; findIndex: {}; fill: {}; copyWithin: {}; }; getGamepads: {}; javaEnabled: {}; msLaunchUri: {}; requestMediaKeySystemAccess: {}; vibrate: {}; constructor: { apply: {}; call: {}; bind: {}; toString: {}; prototype: {}; readonly length: {}; arguments: {}; caller: {}; [Symbol.hasInstance]: {}; readonly name: {}; }; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; readonly appCodeName: {}; readonly appName: {}; readonly appVersion: {}; readonly platform: {}; readonly product: {}; readonly productSub: {}; readonly userAgent: {}; readonly vendor: {}; readonly vendorSub: {}; readonly onLine: {}; readonly geolocation: { clearWatch: {}; getCurrentPosition: {}; watchPosition: {}; }; confirmSiteSpecificTrackingException: {}; confirmWebWideTrackingException: {}; removeSiteSpecificTrackingException: {}; removeWebWideTrackingException: {}; storeSiteSpecificTrackingException: {}; storeWebWideTrackingException: {}; msSaveBlob: {}; msSaveOrOpenBlob: {}; sendBeacon: {}; readonly mediaDevices: { ondevicechange: {}; enumerateDevices: {}; getSupportedConstraints: {}; getUserMedia: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; getUserMedia: {}; }; readonly closed: {}; readonly crypto: { readonly subtle: { decrypt: {}; deriveBits: {}; deriveKey: {}; digest: {}; encrypt: {}; exportKey: {}; generateKey: {}; importKey: {}; sign: {}; unwrapKey: {}; verify: {}; wrapKey: {}; }; constructor: {}; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; getRandomValues: {}; }; defaultStatus: {}; readonly devicePixelRatio: {}; readonly document: {}; readonly doNotTrack: {}; event: { readonly bubbles: {}; readonly cancelable: {}; cancelBubble: {}; readonly currentTarget: { addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; }; readonly defaultPrevented: {}; readonly eventPhase: {}; readonly isTrusted: {}; returnValue: {}; readonly srcElement: {}; readonly target: {}; readonly timeStamp: {}; readonly type: {}; readonly scoped: {}; initEvent: {}; preventDefault: {}; stopImmediatePropagation: {}; stopPropagation: {}; deepPath: {}; readonly AT_TARGET: {}; readonly BUBBLING_PHASE: {}; readonly CAPTURING_PHASE: {}; }; readonly external: {}; readonly frameElement: {}; readonly frames: {}; readonly history: { readonly length: {}; readonly state: {}; scrollRestoration: {}; back: {}; forward: {}; go: {}; pushState: {}; replaceState: {}; }; readonly innerHeight: {}; readonly innerWidth: {}; readonly isSecureContext: {}; readonly length: {}; readonly location: { hash: {}; host: {}; hostname: {}; href: {}; readonly origin: {}; pathname: {}; port: {}; protocol: {}; search: {}; assign: {}; reload: {}; replace: {}; toString: {}; }; readonly locationbar: { readonly visible: {}; }; readonly menubar: {}; readonly msContentScript: { extensionIdToShortId: {}; fireExtensionApiTelemetry: {}; genericFunction: {}; genericSynchronousFunction: {}; getExtensionId: {}; registerGenericFunctionCallbackHandler: {}; registerGenericPersistentCallbackHandler: {}; }; readonly msCredentials: { getAssertion: {}; makeCredential: {}; }; name: {}; readonly navigator: {}; offscreenBuffering: {}; onabort: {}; onafterprint: {}; onbeforeprint: {}; onbeforeunload: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncompassneedscalibration: {}; oncontextmenu: {}; ondblclick: {}; ondevicelight: {}; ondevicemotion: {}; ondeviceorientation: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onhashchange: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmessage: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onoffline: {}; ononline: {}; onorientationchange: {}; onpagehide: {}; onpageshow: {}; onpause: {}; onplay: {}; onplaying: {}; onpopstate: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onresize: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onstalled: {}; onstorage: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onunload: {}; onvolumechange: {}; onwaiting: {}; opener: {}; orientation: {}; readonly outerHeight: {}; readonly outerWidth: {}; readonly pageXOffset: {}; readonly pageYOffset: {}; readonly parent: {}; readonly performance: { readonly navigation: { readonly redirectCount: {}; readonly type: {}; toJSON: {}; readonly TYPE_BACK_FORWARD: {}; readonly TYPE_NAVIGATE: {}; readonly TYPE_RELOAD: {}; readonly TYPE_RESERVED: {}; }; readonly timing: { readonly connectEnd: {}; readonly connectStart: {}; readonly domainLookupEnd: {}; readonly domainLookupStart: {}; readonly domComplete: {}; readonly domContentLoadedEventEnd: {}; readonly domContentLoadedEventStart: {}; readonly domInteractive: {}; readonly domLoading: {}; readonly fetchStart: {}; readonly loadEventEnd: {}; readonly loadEventStart: {}; readonly msFirstPaint: {}; readonly navigationStart: {}; readonly redirectEnd: {}; readonly redirectStart: {}; readonly requestStart: {}; readonly responseEnd: {}; readonly responseStart: {}; readonly unloadEventEnd: {}; readonly unloadEventStart: {}; readonly secureConnectionStart: {}; toJSON: {}; }; clearMarks: {}; clearMeasures: {}; clearResourceTimings: {}; getEntries: {}; getEntriesByName: {}; getEntriesByType: {}; getMarks: {}; getMeasures: {}; mark: {}; measure: {}; now: {}; setResourceTimingBufferSize: {}; toJSON: {}; }; readonly personalbar: {}; readonly screen: { readonly availHeight: {}; readonly availWidth: {}; bufferDepth: {}; readonly colorDepth: {}; readonly deviceXDPI: {}; readonly deviceYDPI: {}; readonly fontSmoothingEnabled: {}; readonly height: {}; readonly logicalXDPI: {}; readonly logicalYDPI: {}; readonly msOrientation: {}; onmsorientationchange: {}; readonly pixelDepth: {}; readonly systemXDPI: {}; readonly systemYDPI: {}; readonly width: {}; msLockOrientation: {}; msUnlockOrientation: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly screenLeft: {}; readonly screenTop: {}; readonly screenX: {}; readonly screenY: {}; readonly scrollbars: {}; readonly scrollX: {}; readonly scrollY: {}; readonly self: {}; readonly speechSynthesis: { onvoiceschanged: {}; readonly paused: {}; readonly pending: {}; readonly speaking: {}; cancel: {}; getVoices: {}; pause: {}; resume: {}; speak: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; status: {}; readonly statusbar: {}; readonly styleMedia: { readonly type: {}; matchMedium: {}; }; readonly toolbar: {}; readonly top: {}; readonly window: {}; URL: { prototype: { hash: {}; host: {}; hostname: {}; href: {}; readonly origin: {}; password: {}; pathname: {}; port: {}; protocol: {}; search: {}; username: {}; readonly searchParams: { append: {}; delete: {}; get: {}; getAll: {}; has: {}; set: {}; }; toString: {}; }; createObjectURL: {}; revokeObjectURL: {}; }; URLSearchParams: { prototype: {}; }; Blob: { prototype: { readonly size: {}; readonly type: {}; msClose: {}; msDetachStream: {}; slice: {}; }; }; customElements: { define: {}; get: {}; whenDefined: {}; }; alert: {}; blur: {}; cancelAnimationFrame: {}; captureEvents: {}; close: {}; confirm: {}; departFocus: {}; focus: {}; getComputedStyle: {}; getMatchedCSSRules: {}; getSelection: {}; matchMedia: {}; moveBy: {}; moveTo: {}; msWriteProfilerMark: {}; open: {}; postMessage: {}; print: {}; prompt: {}; releaseEvents: {}; requestAnimationFrame: {}; resizeBy: {}; resizeTo: {}; scroll: {}; scrollBy: {}; scrollTo: {}; stop: {}; webkitCancelAnimationFrame: {}; webkitConvertPointFromNodeToPage: {}; webkitConvertPointFromPageToNode: {}; webkitRequestAnimationFrame: {}; createImageBitmap: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; clearInterval: {}; clearTimeout: {}; setInterval: {}; setTimeout: {}; constructor: {}; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; clearImmediate: {}; setImmediate: {}; readonly sessionStorage: { [x: string]: {}; readonly length: {}; clear: {}; getItem: {}; key: {}; removeItem: {}; setItem: {}; }; readonly localStorage: {}; readonly console: { assert: {}; clear: {}; count: {}; debug: {}; dir: {}; dirxml: {}; error: {}; exception: {}; group: {}; groupCollapsed: {}; groupEnd: {}; info: {}; log: {}; msIsIndependentlyComposed: {}; profile: {}; profileEnd: {}; select: {}; table: {}; time: {}; timeEnd: {}; trace: {}; warn: {}; }; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly indexedDB: { cmp: {}; deleteDatabase: {}; open: {}; }; atob: {}; btoa: {}; fetch: {}; }; designMode: {}; dir: {}; readonly doctype: { readonly entities: {}; readonly internalSubset: {}; readonly name: {}; readonly notations: {}; readonly publicId: {}; readonly systemId: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; remove: {}; }; documentElement: {}; domain: {}; embeds: {}; fgColor: {}; forms: {}; readonly fullscreenElement: {}; readonly fullscreenEnabled: {}; readonly head: { profile: {}; addEventListener: {}; removeEventListener: {}; accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; readonly hidden: {}; images: {}; readonly implementation: { createDocument: {}; createDocumentType: {}; createHTMLDocument: {}; hasFeature: {}; }; readonly inputEncoding: {}; readonly lastModified: {}; linkColor: {}; links: {}; readonly location: {}; msCapsLockWarningOff: {}; msCSSOMElementFloatMetrics: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforedeactivate: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onfullscreenchange: {}; onfullscreenerror: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmsmanipulationstatechanged: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onmssitemodejumplistitemremoved: {}; onmsthumbnailclick: {}; onpause: {}; onplay: {}; onplaying: {}; onpointerlockchange: {}; onpointerlockerror: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectionchange: {}; onselectstart: {}; onstalled: {}; onstop: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onvolumechange: {}; onwaiting: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; plugins: {}; readonly pointerLockElement: {}; readonly readyState: {}; readonly referrer: {}; readonly rootElement: {}; scripts: {}; readonly scrollingElement: {}; readonly styleSheets: {}; title: {}; readonly URL: {}; readonly URLUnencoded: {}; readonly visibilityState: {}; vlinkColor: {}; readonly webkitCurrentFullScreenElement: {}; readonly webkitFullscreenElement: {}; readonly webkitFullscreenEnabled: {}; readonly webkitIsFullScreen: {}; readonly xmlEncoding: {}; xmlStandalone: {}; xmlVersion: {}; adoptNode: {}; captureEvents: {}; caretRangeFromPoint: {}; clear: {}; close: {}; createAttribute: {}; createAttributeNS: {}; createCDATASection: {}; createComment: {}; createDocumentFragment: {}; createElement: {}; createElementNS: {}; createExpression: {}; createNodeIterator: {}; createNSResolver: {}; createProcessingInstruction: {}; createRange: {}; createTextNode: {}; createTouch: {}; createTouchList: {}; createTreeWalker: {}; elementFromPoint: {}; evaluate: {}; execCommand: {}; execCommandShowHelp: {}; exitFullscreen: {}; exitPointerLock: {}; focus: {}; getElementById: {}; getElementsByClassName: {}; getElementsByName: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; getSelection: {}; hasFocus: {}; importNode: {}; msElementsFromPoint: {}; msElementsFromRect: {}; open: {}; queryCommandEnabled: {}; queryCommandIndeterm: {}; queryCommandState: {}; queryCommandSupported: {}; queryCommandText: {}; queryCommandValue: {}; releaseEvents: {}; updateSettings: {}; webkitCancelFullScreen: {}; webkitExitFullscreen: {}; write: {}; writeln: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; querySelector: {}; querySelectorAll: {}; createEvent: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; readonly stylesheets: {}; elementsFromPoint: {}; }; readonly status: {}; readonly statusText: {}; timeout: {}; readonly upload: { addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; }; withCredentials: {}; msCaching?: {}; abort: {}; getAllResponseHeaders: {}; getResponseHeader: {}; msCachingEnabled: {}; open: {}; overrideMimeType: {}; send: {}; setRequestHeader: {}; readonly DONE: {}; readonly HEADERS_RECEIVED: {}; readonly LOADING: {}; readonly OPENED: {}; readonly UNSENT: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; } +>foo : (deep: Deep) => T +>xhr : XMLHttpRequest + diff --git a/tests/cases/compiler/mappedTypeRecursiveInference.ts b/tests/cases/compiler/mappedTypeRecursiveInference.ts index d7a9cf3a0be..e264244095d 100644 --- a/tests/cases/compiler/mappedTypeRecursiveInference.ts +++ b/tests/cases/compiler/mappedTypeRecursiveInference.ts @@ -1,5 +1,9 @@ +// @lib: es6, dom interface A { a: A } declare let a: A; type Deep = { [K in keyof T]: Deep } declare function foo(deep: Deep): T; const out = foo(a); + +let xhr: XMLHttpRequest; +const out2 = foo(xhr); From 955db84f2c556fddc459bab28440c681fa3d7d81 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Thu, 14 Dec 2017 15:03:12 -0800 Subject: [PATCH 058/173] Simplify printing of deferred mapped types Just print {} for the type of deferred symbols. This is simple although it loses fidelity pretty badly. It will not be sufficient for projects that want to export the result of an inference. I don't think any such projects exist right now, though. --- src/compiler/checker.ts | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index dbc12b1461a..6fc9ae48ae2 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -335,7 +335,6 @@ namespace ts { const globals = createSymbolTable(); const deferredInferenceCache = createMap(); - const deferredMappedTypeInstantiationStack: string[] = []; let ambientModulesCache: Symbol[] | undefined; /** * List of every ambient module with a "*" wildcard. @@ -2868,23 +2867,7 @@ namespace ts { } for (const propertySymbol of properties) { - let propertyType: Type; - if (getCheckFlags(propertySymbol) & CheckFlags.DeferredInferred) { - const deferred = propertySymbol as DeferredTransientSymbol; - const key = deferred.propertyType.id + "," + (deferred.mappedType.symbol ? deferred.mappedType.symbol.id : ""); - // Temporary solution to recursive printing: zero out repeated types. - if (contains(deferredMappedTypeInstantiationStack, key)) { - // TODO: Could probably be an actual cache that returns {} when it contains undefined. - propertyType = emptyObjectType; - } - else { - deferredMappedTypeInstantiationStack.push(key) - propertyType = getTypeOfSymbol(propertySymbol); - } - } - else { - propertyType = getTypeOfSymbol(propertySymbol); - } + const propertyType = getCheckFlags(propertySymbol) & CheckFlags.DeferredInferred ? emptyObjectType : getTypeOfSymbol(propertySymbol); const saveEnclosingDeclaration = context.enclosingDeclaration; context.enclosingDeclaration = undefined; const propertyName = symbolToName(propertySymbol, context, SymbolFlags.Value, /*expectsIdentifier*/ true); @@ -2911,9 +2894,6 @@ namespace ts { /*initializer*/ undefined); typeElements.push(propertySignature); } - if (getCheckFlags(propertySymbol) & CheckFlags.DeferredInferred) { - deferredMappedTypeInstantiationStack.pop(); - } } return typeElements.length ? typeElements : undefined; } @@ -11278,7 +11258,7 @@ namespace ts { const checkFlags = CheckFlags.DeferredInferred | (readonlyMask && isReadonlySymbol(prop) ? CheckFlags.Readonly : 0); const inferredProp = createSymbol(SymbolFlags.Property | prop.flags & optionalMask, prop.escapedName, checkFlags) as DeferredTransientSymbol; inferredProp.declarations = prop.declarations; - inferredProp.propertyType = propType; // not sure I need this. + inferredProp.propertyType = propType; inferredProp.mappedType = target; members.set(prop.escapedName, inferredProp); } @@ -11295,7 +11275,6 @@ namespace ts { const typeParameter = getIndexedAccessType((getConstraintTypeFromMappedType(target)).type, getTypeParameterFromMappedType(target)); const templateType = getTemplateTypeFromMappedType(target); const inference = createInferenceInfo(typeParameter); - inference.candidates = undefined; inferTypes([inference], sourceType, templateType); return inference.candidates ? getUnionType(inference.candidates, UnionReduction.Subtype) : emptyObjectType; } From be1d6da123a08be2d9238bae3880d76ae92e7c8b Mon Sep 17 00:00:00 2001 From: csigs Date: Thu, 14 Dec 2017 23:10:37 +0000 Subject: [PATCH 059/173] LEGO: check in for master to temporary branch. --- .../diagnosticMessages.generated.json.lcl | 3 +++ .../diagnosticMessages.generated.json.lcl | 15 ++++++------- .../diagnosticMessages.generated.json.lcl | 15 ++++++------- .../diagnosticMessages.generated.json.lcl | 21 +++++++++++-------- .../diagnosticMessages.generated.json.lcl | 15 ++++++------- 5 files changed, 33 insertions(+), 36 deletions(-) diff --git a/src/loc/lcl/cht/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/cht/diagnosticMessages/diagnosticMessages.generated.json.lcl index bc7690375b8..1dc3c392642 100644 --- a/src/loc/lcl/cht/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/cht/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -4845,6 +4845,9 @@ + + + diff --git a/src/loc/lcl/csy/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/csy/diagnosticMessages/diagnosticMessages.generated.json.lcl index 3e4ef40ad57..79f083c545b 100644 --- a/src/loc/lcl/csy/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/csy/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -3465,15 +3465,6 @@ - - - - - - - - - @@ -4764,6 +4755,9 @@ + + + @@ -4860,6 +4854,9 @@ + + + diff --git a/src/loc/lcl/kor/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/kor/diagnosticMessages/diagnosticMessages.generated.json.lcl index d19f6502fdc..0081b6ef284 100644 --- a/src/loc/lcl/kor/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/kor/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -3456,15 +3456,6 @@ - - - - - - - - - @@ -4755,6 +4746,9 @@ + + + @@ -4851,6 +4845,9 @@ + + + diff --git a/src/loc/lcl/plk/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/plk/diagnosticMessages/diagnosticMessages.generated.json.lcl index b36833660ef..cbe3ce88321 100644 --- a/src/loc/lcl/plk/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/plk/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -3446,15 +3446,6 @@ - - - - - - - - - @@ -4742,6 +4733,15 @@ + + + + + + + + + @@ -4835,6 +4835,9 @@ + + + diff --git a/src/loc/lcl/ptb/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/ptb/diagnosticMessages/diagnosticMessages.generated.json.lcl index 21ef70226c9..c43b4d8409b 100644 --- a/src/loc/lcl/ptb/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/ptb/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -3446,15 +3446,6 @@ - - - - - - - - - @@ -4745,6 +4736,9 @@ + + + @@ -4841,6 +4835,9 @@ + + + From 5b45cf3db17e592b7415536b1b09e24c94ae08e1 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Thu, 14 Dec 2017 15:11:29 -0800 Subject: [PATCH 060/173] Update spelling --- src/compiler/checker.ts | 6 +++--- src/compiler/types.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 6fc9ae48ae2..8833afbf32c 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2867,7 +2867,7 @@ namespace ts { } for (const propertySymbol of properties) { - const propertyType = getCheckFlags(propertySymbol) & CheckFlags.DeferredInferred ? emptyObjectType : getTypeOfSymbol(propertySymbol); + const propertyType = getCheckFlags(propertySymbol) & CheckFlags.Deferred ? emptyObjectType : getTypeOfSymbol(propertySymbol); const saveEnclosingDeclaration = context.enclosingDeclaration; context.enclosingDeclaration = undefined; const propertyName = symbolToName(propertySymbol, context, SymbolFlags.Value, /*expectsIdentifier*/ true); @@ -4868,7 +4868,7 @@ namespace ts { if (getCheckFlags(symbol) & CheckFlags.Instantiated) { return getTypeOfInstantiatedSymbol(symbol); } - if (getCheckFlags(symbol) & CheckFlags.DeferredInferred) { + if (getCheckFlags(symbol) & CheckFlags.Deferred) { return inferDeferredMappedType((symbol as DeferredTransientSymbol).propertyType, (symbol as DeferredTransientSymbol).mappedType); } if (symbol.flags & (SymbolFlags.Variable | SymbolFlags.Property)) { @@ -11255,7 +11255,7 @@ namespace ts { if (propType.flags & TypeFlags.ContainsAnyFunctionType) { return undefined; } - const checkFlags = CheckFlags.DeferredInferred | (readonlyMask && isReadonlySymbol(prop) ? CheckFlags.Readonly : 0); + const checkFlags = CheckFlags.Deferred | (readonlyMask && isReadonlySymbol(prop) ? CheckFlags.Readonly : 0); const inferredProp = createSymbol(SymbolFlags.Property | prop.flags & optionalMask, prop.escapedName, checkFlags) as DeferredTransientSymbol; inferredProp.declarations = prop.declarations; inferredProp.propertyType = propType; diff --git a/src/compiler/types.ts b/src/compiler/types.ts index dc8c6d71618..afa62c0a382 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -3217,7 +3217,7 @@ namespace ts { ContainsPrivate = 1 << 8, // Synthetic property with private constituent(s) ContainsStatic = 1 << 9, // Synthetic property with static constituent(s) Late = 1 << 10, // Late-bound symbol for a computed property with a dynamic name - DeferredInferred = 1 << 11, // Deferred inferred property of homomorphic mapped type. It is HILARIOUS. + Deferred = 1 << 11, // Deferred inferred property of homomorphic mapped type. Synthetic = SyntheticProperty | SyntheticMethod } From dd941e5665a8dd5742217fd255e7fc560001f967 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Thu, 14 Dec 2017 15:11:49 -0800 Subject: [PATCH 061/173] Add more tests of deferred mapped types --- .../isomorphicMappedTypeInference.types | 38 ++++++------- .../reference/keyofAndIndexedAccess.types | 4 +- .../mappedTypeInferenceErrors.errors.txt | 12 ++--- .../reference/mappedTypeRecursiveInference.js | 10 ++++ .../mappedTypeRecursiveInference.symbols | 51 ++++++++++++++++-- .../mappedTypeRecursiveInference.types | 53 +++++++++++++++++-- .../reference/thisTypeInObjectLiterals2.types | 30 +++++------ .../compiler/mappedTypeRecursiveInference.ts | 5 ++ 8 files changed, 154 insertions(+), 49 deletions(-) diff --git a/tests/baselines/reference/isomorphicMappedTypeInference.types b/tests/baselines/reference/isomorphicMappedTypeInference.types index e60e1fb7b4c..a7e4011109a 100644 --- a/tests/baselines/reference/isomorphicMappedTypeInference.types +++ b/tests/baselines/reference/isomorphicMappedTypeInference.types @@ -203,15 +203,15 @@ function f2() { }; let v = unboxify(b); ->v : { a: number; b: string; c: boolean; } ->unboxify(b) : { a: number; b: string; c: boolean; } +>v : { a: {}; b: {}; c: {}; } +>unboxify(b) : { a: {}; b: {}; c: {}; } >unboxify : (obj: Boxified) => T >b : { a: Box; b: Box; c: Box; } let x: number = v.a; >x : number >v.a : number ->v : { a: number; b: string; c: boolean; } +>v : { a: {}; b: {}; c: {}; } >a : number } @@ -277,11 +277,11 @@ function f4() { }; b = boxify(unboxify(b)); ->b = boxify(unboxify(b)) : Boxified<{ a: number; b: string; c: boolean; }> +>b = boxify(unboxify(b)) : Boxified<{ a: {}; b: {}; c: {}; }> >b : { a: Box; b: Box; c: Box; } ->boxify(unboxify(b)) : Boxified<{ a: number; b: string; c: boolean; }> +>boxify(unboxify(b)) : Boxified<{ a: {}; b: {}; c: {}; }> >boxify : (obj: T) => Boxified ->unboxify(b) : { a: number; b: string; c: boolean; } +>unboxify(b) : { a: {}; b: {}; c: {}; } >unboxify : (obj: Boxified) => T >b : { a: Box; b: Box; c: Box; } @@ -338,15 +338,15 @@ function f5(s: string) { }); let v = unboxify(b); ->v : { a: string | number | boolean; b: string | number | boolean; c: string | number | boolean; } ->unboxify(b) : { a: string | number | boolean; b: string | number | boolean; c: string | number | boolean; } +>v : { a: {}; b: {}; c: {}; } +>unboxify(b) : { a: {}; b: {}; c: {}; } >unboxify : (obj: Boxified) => T >b : { a: Box | Box | Box; b: Box | Box | Box; c: Box | Box | Box; } let x: string | number | boolean = v.a; >x : string | number | boolean >v.a : string | number | boolean ->v : { a: string | number | boolean; b: string | number | boolean; c: string | number | boolean; } +>v : { a: {}; b: {}; c: {}; } >a : string | number | boolean } @@ -449,20 +449,20 @@ function f10(foo: Foo) { >Foo : Foo let x = validate(foo); // { a: number, readonly b: string } ->x : { a: number; readonly b: string; } ->validate(foo) : { a: number; readonly b: string; } +>x : { a: {}; readonly b: {}; } +>validate(foo) : { a: {}; readonly b: {}; } >validate : (obj: { [P in keyof T]?: T[P] | undefined; }) => T >foo : Foo let y = clone(foo); // { a?: number, b: string } ->y : { a?: number | undefined; b: string; } ->clone(foo) : { a?: number | undefined; b: string; } +>y : { a?: {}; b: {}; } +>clone(foo) : { a?: {}; b: {}; } >clone : (obj: { readonly [P in keyof T]: T[P]; }) => T >foo : Foo let z = validateAndClone(foo); // { a: number, b: string } ->z : { a: number; b: string; } ->validateAndClone(foo) : { a: number; b: string; } +>z : { a: {}; b: {}; } +>validateAndClone(foo) : { a: {}; b: {}; } >validateAndClone : (obj: { readonly [P in keyof T]?: T[P] | undefined; }) => T >foo : Foo } @@ -507,8 +507,8 @@ declare function applySpec(obj: Spec): (...args: any[]) => T; // Infers g1: (...args: any[]) => { sum: number, nested: { mul: string } } var g1 = applySpec({ ->g1 : (...args: any[]) => { sum: number; nested: { mul: string; }; } ->applySpec({ sum: (a: any) => 3, nested: { mul: (b: any) => "n" }}) : (...args: any[]) => { sum: number; nested: { mul: string; }; } +>g1 : (...args: any[]) => { sum: {}; nested: {}; } +>applySpec({ sum: (a: any) => 3, nested: { mul: (b: any) => "n" }}) : (...args: any[]) => { sum: {}; nested: {}; } >applySpec : (obj: Spec) => (...args: any[]) => T >{ sum: (a: any) => 3, nested: { mul: (b: any) => "n" }} : { sum: (a: any) => number; nested: { mul: (b: any) => string; }; } @@ -532,8 +532,8 @@ var g1 = applySpec({ // Infers g2: (...args: any[]) => { foo: { bar: { baz: boolean } } } var g2 = applySpec({ foo: { bar: { baz: (x: any) => true } } }); ->g2 : (...args: any[]) => { foo: { bar: { baz: boolean; }; }; } ->applySpec({ foo: { bar: { baz: (x: any) => true } } }) : (...args: any[]) => { foo: { bar: { baz: boolean; }; }; } +>g2 : (...args: any[]) => { foo: {}; } +>applySpec({ foo: { bar: { baz: (x: any) => true } } }) : (...args: any[]) => { foo: {}; } >applySpec : (obj: Spec) => (...args: any[]) => T >{ foo: { bar: { baz: (x: any) => true } } } : { foo: { bar: { baz: (x: any) => boolean; }; }; } >foo : { bar: { baz: (x: any) => boolean; }; } diff --git a/tests/baselines/reference/keyofAndIndexedAccess.types b/tests/baselines/reference/keyofAndIndexedAccess.types index bf95972be76..9e09c2a3c35 100644 --- a/tests/baselines/reference/keyofAndIndexedAccess.types +++ b/tests/baselines/reference/keyofAndIndexedAccess.types @@ -1801,8 +1801,8 @@ var hashOfEmpty1 = on({ test: () => {} }); // {} >() => {} : () => void var hashOfEmpty2 = on({ test: (x: boolean) => {} }); // { test: boolean } ->hashOfEmpty2 : { test: boolean; } ->on({ test: (x: boolean) => {} }) : { test: boolean; } +>hashOfEmpty2 : { test: {}; } +>on({ test: (x: boolean) => {} }) : { test: {}; } >on : (handlerHash: Handlers) => T >{ test: (x: boolean) => {} } : { test: (x: boolean) => void; } >test : (x: boolean) => void diff --git a/tests/baselines/reference/mappedTypeInferenceErrors.errors.txt b/tests/baselines/reference/mappedTypeInferenceErrors.errors.txt index 28bc188f7b6..2293fd6bfd5 100644 --- a/tests/baselines/reference/mappedTypeInferenceErrors.errors.txt +++ b/tests/baselines/reference/mappedTypeInferenceErrors.errors.txt @@ -1,7 +1,7 @@ -tests/cases/conformance/types/mapped/mappedTypeInferenceErrors.ts(9,5): error TS2345: Argument of type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to parameter of type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: number; baz: {}; }>; } & ThisType<{ x: number; y: number; } & { bar: number; baz: {}; }>'. - Type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: number; baz: {}; }>; }'. +tests/cases/conformance/types/mapped/mappedTypeInferenceErrors.ts(9,5): error TS2345: Argument of type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to parameter of type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: {}; baz: {}; }>; } & ThisType<{ x: number; y: number; } & { bar: {}; baz: {}; }>'. + Type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: {}; baz: {}; }>; }'. Types of property 'computed' are incompatible. - Type '{ bar(): number; baz: number; }' is not assignable to type 'ComputedOf<{ bar: number; baz: {}; }>'. + Type '{ bar(): number; baz: number; }' is not assignable to type 'ComputedOf<{ bar: {}; baz: {}; }>'. Types of property 'baz' are incompatible. Type 'number' is not assignable to type '() => {}'. @@ -35,10 +35,10 @@ tests/cases/conformance/types/mapped/mappedTypeInferenceErrors.ts(9,5): error TS ~~~~~ }); ~ -!!! error TS2345: Argument of type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to parameter of type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: number; baz: {}; }>; } & ThisType<{ x: number; y: number; } & { bar: number; baz: {}; }>'. -!!! error TS2345: Type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: number; baz: {}; }>; }'. +!!! error TS2345: Argument of type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to parameter of type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: {}; baz: {}; }>; } & ThisType<{ x: number; y: number; } & { bar: {}; baz: {}; }>'. +!!! error TS2345: Type '{ props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; }' is not assignable to type '{ props: { x: number; y: number; }; computed: ComputedOf<{ bar: {}; baz: {}; }>; }'. !!! error TS2345: Types of property 'computed' are incompatible. -!!! error TS2345: Type '{ bar(): number; baz: number; }' is not assignable to type 'ComputedOf<{ bar: number; baz: {}; }>'. +!!! error TS2345: Type '{ bar(): number; baz: number; }' is not assignable to type 'ComputedOf<{ bar: {}; baz: {}; }>'. !!! error TS2345: Types of property 'baz' are incompatible. !!! error TS2345: Type 'number' is not assignable to type '() => {}'. \ No newline at end of file diff --git a/tests/baselines/reference/mappedTypeRecursiveInference.js b/tests/baselines/reference/mappedTypeRecursiveInference.js index eda4d0b618e..c1b5bc6f7bf 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference.js +++ b/tests/baselines/reference/mappedTypeRecursiveInference.js @@ -4,12 +4,22 @@ declare let a: A; type Deep = { [K in keyof T]: Deep } declare function foo(deep: Deep): T; const out = foo(a); +out.a +out.a.a +out.a.a.a.a.a.a.a let xhr: XMLHttpRequest; const out2 = foo(xhr); +out2.responseXML +out2.responseXML.activeElement.className.length //// [mappedTypeRecursiveInference.js] var out = foo(a); +out.a; +out.a.a; +out.a.a.a.a.a.a.a; var xhr; var out2 = foo(xhr); +out2.responseXML; +out2.responseXML.activeElement.className.length; diff --git a/tests/baselines/reference/mappedTypeRecursiveInference.symbols b/tests/baselines/reference/mappedTypeRecursiveInference.symbols index 96ed980c4c2..089468d4aa8 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference.symbols +++ b/tests/baselines/reference/mappedTypeRecursiveInference.symbols @@ -30,12 +30,57 @@ const out = foo(a); >foo : Symbol(foo, Decl(mappedTypeRecursiveInference.ts, 2, 45)) >a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 1, 11)) +out.a +>out.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>out : Symbol(out, Decl(mappedTypeRecursiveInference.ts, 4, 5)) +>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) + +out.a.a +>out.a.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>out.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>out : Symbol(out, Decl(mappedTypeRecursiveInference.ts, 4, 5)) +>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) + +out.a.a.a.a.a.a.a +>out.a.a.a.a.a.a.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>out.a.a.a.a.a.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>out.a.a.a.a.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>out.a.a.a.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>out.a.a.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>out.a.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>out.a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>out : Symbol(out, Decl(mappedTypeRecursiveInference.ts, 4, 5)) +>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) +>a : Symbol(a, Decl(mappedTypeRecursiveInference.ts, 0, 13)) + let xhr: XMLHttpRequest; ->xhr : Symbol(xhr, Decl(mappedTypeRecursiveInference.ts, 6, 3)) +>xhr : Symbol(xhr, Decl(mappedTypeRecursiveInference.ts, 9, 3)) >XMLHttpRequest : Symbol(XMLHttpRequest, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --)) const out2 = foo(xhr); ->out2 : Symbol(out2, Decl(mappedTypeRecursiveInference.ts, 7, 5)) +>out2 : Symbol(out2, Decl(mappedTypeRecursiveInference.ts, 10, 5)) >foo : Symbol(foo, Decl(mappedTypeRecursiveInference.ts, 2, 45)) ->xhr : Symbol(xhr, Decl(mappedTypeRecursiveInference.ts, 6, 3)) +>xhr : Symbol(xhr, Decl(mappedTypeRecursiveInference.ts, 9, 3)) + +out2.responseXML +>out2.responseXML : Symbol(responseXML, Decl(lib.dom.d.ts, --, --)) +>out2 : Symbol(out2, Decl(mappedTypeRecursiveInference.ts, 10, 5)) +>responseXML : Symbol(responseXML, Decl(lib.dom.d.ts, --, --)) + +out2.responseXML.activeElement.className.length +>out2.responseXML.activeElement.className.length : Symbol(length, Decl(lib.es5.d.ts, --, --)) +>out2.responseXML.activeElement.className : Symbol(className, Decl(lib.dom.d.ts, --, --)) +>out2.responseXML.activeElement : Symbol(activeElement, Decl(lib.dom.d.ts, --, --)) +>out2.responseXML : Symbol(responseXML, Decl(lib.dom.d.ts, --, --)) +>out2 : Symbol(out2, Decl(mappedTypeRecursiveInference.ts, 10, 5)) +>responseXML : Symbol(responseXML, Decl(lib.dom.d.ts, --, --)) +>activeElement : Symbol(activeElement, Decl(lib.dom.d.ts, --, --)) +>className : Symbol(className, Decl(lib.dom.d.ts, --, --)) +>length : Symbol(length, Decl(lib.es5.d.ts, --, --)) diff --git a/tests/baselines/reference/mappedTypeRecursiveInference.types b/tests/baselines/reference/mappedTypeRecursiveInference.types index 8dbc33e0b2a..eccb4ff65a1 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference.types +++ b/tests/baselines/reference/mappedTypeRecursiveInference.types @@ -26,18 +26,63 @@ declare function foo(deep: Deep): T; >T : T const out = foo(a); ->out : { a: { a: {}; }; } ->foo(a) : { a: { a: {}; }; } +>out : { a: {}; } +>foo(a) : { a: {}; } >foo : (deep: Deep) => T >a : A +out.a +>out.a : { a: {}; } +>out : { a: {}; } +>a : { a: {}; } + +out.a.a +>out.a.a : { a: {}; } +>out.a : { a: {}; } +>out : { a: {}; } +>a : { a: {}; } +>a : { a: {}; } + +out.a.a.a.a.a.a.a +>out.a.a.a.a.a.a.a : { a: {}; } +>out.a.a.a.a.a.a : { a: {}; } +>out.a.a.a.a.a : { a: {}; } +>out.a.a.a.a : { a: {}; } +>out.a.a.a : { a: {}; } +>out.a.a : { a: {}; } +>out.a : { a: {}; } +>out : { a: {}; } +>a : { a: {}; } +>a : { a: {}; } +>a : { a: {}; } +>a : { a: {}; } +>a : { a: {}; } +>a : { a: {}; } +>a : { a: {}; } + let xhr: XMLHttpRequest; >xhr : XMLHttpRequest >XMLHttpRequest : XMLHttpRequest const out2 = foo(xhr); ->out2 : { onreadystatechange: {}; readonly readyState: { toString: {}; toFixed: {}; toExponential: {}; toPrecision: {}; valueOf: {}; toLocaleString: {}; }; readonly response: {}; readonly responseText: { toString: {}; charAt: {}; charCodeAt: {}; concat: {}; indexOf: {}; lastIndexOf: {}; localeCompare: {}; match: {}; replace: {}; search: {}; slice: {}; split: {}; substring: {}; toLowerCase: {}; toLocaleLowerCase: {}; toUpperCase: {}; toLocaleUpperCase: {}; trim: {}; readonly length: {}; substr: {}; valueOf: {}; [Symbol.iterator]: {}; codePointAt: {}; includes: {}; endsWith: {}; normalize: {}; repeat: {}; startsWith: {}; anchor: {}; big: {}; blink: {}; bold: {}; fixed: {}; fontcolor: {}; fontsize: {}; italics: {}; link: {}; small: {}; strike: {}; sub: {}; sup: {}; }; responseType: {}; readonly responseURL: {}; readonly responseXML: { readonly activeElement: { readonly classList: { readonly length: {}; add: {}; contains: {}; item: {}; remove: {}; toggle: {}; toString: {}; }; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: { name: {}; assignedNodes: {}; accessKey: {}; readonly children: { namedItem: {}; readonly length: {}; item: {}; }; contentEditable: {}; readonly dataset: { [x: string]: {}; }; dir: {}; draggable: { valueOf: {}; }; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: { alignContent: {}; alignItems: {}; alignmentBaseline: {}; alignSelf: {}; animation: {}; animationDelay: {}; animationDirection: {}; animationDuration: {}; animationFillMode: {}; animationIterationCount: {}; animationName: {}; animationPlayState: {}; animationTimingFunction: {}; backfaceVisibility: {}; background: {}; backgroundAttachment: {}; backgroundClip: {}; backgroundColor: {}; backgroundImage: {}; backgroundOrigin: {}; backgroundPosition: {}; backgroundPositionX: {}; backgroundPositionY: {}; backgroundRepeat: {}; backgroundSize: {}; baselineShift: {}; border: {}; borderBottom: {}; borderBottomColor: {}; borderBottomLeftRadius: {}; borderBottomRightRadius: {}; borderBottomStyle: {}; borderBottomWidth: {}; borderCollapse: {}; borderColor: {}; borderImage: {}; borderImageOutset: {}; borderImageRepeat: {}; borderImageSlice: {}; borderImageSource: {}; borderImageWidth: {}; borderLeft: {}; borderLeftColor: {}; borderLeftStyle: {}; borderLeftWidth: {}; borderRadius: {}; borderRight: {}; borderRightColor: {}; borderRightStyle: {}; borderRightWidth: {}; borderSpacing: {}; borderStyle: {}; borderTop: {}; borderTopColor: {}; borderTopLeftRadius: {}; borderTopRightRadius: {}; borderTopStyle: {}; borderTopWidth: {}; borderWidth: {}; bottom: {}; boxShadow: {}; boxSizing: {}; breakAfter: {}; breakBefore: {}; breakInside: {}; captionSide: {}; clear: {}; clip: {}; clipPath: {}; clipRule: {}; color: {}; colorInterpolationFilters: {}; columnCount: {}; columnFill: {}; columnGap: {}; columnRule: {}; columnRuleColor: {}; columnRuleStyle: {}; columnRuleWidth: {}; columns: {}; columnSpan: {}; columnWidth: {}; content: {}; counterIncrement: {}; counterReset: {}; cssFloat: {}; cssText: {}; cursor: {}; direction: {}; display: {}; dominantBaseline: {}; emptyCells: {}; enableBackground: {}; fill: {}; fillOpacity: {}; fillRule: {}; filter: {}; flex: {}; flexBasis: {}; flexDirection: {}; flexFlow: {}; flexGrow: {}; flexShrink: {}; flexWrap: {}; floodColor: {}; floodOpacity: {}; font: {}; fontFamily: {}; fontFeatureSettings: {}; fontSize: {}; fontSizeAdjust: {}; fontStretch: {}; fontStyle: {}; fontVariant: {}; fontWeight: {}; glyphOrientationHorizontal: {}; glyphOrientationVertical: {}; height: {}; imeMode: {}; justifyContent: {}; kerning: {}; layoutGrid: {}; layoutGridChar: {}; layoutGridLine: {}; layoutGridMode: {}; layoutGridType: {}; left: {}; readonly length: {}; letterSpacing: {}; lightingColor: {}; lineBreak: {}; lineHeight: {}; listStyle: {}; listStyleImage: {}; listStylePosition: {}; listStyleType: {}; margin: {}; marginBottom: {}; marginLeft: {}; marginRight: {}; marginTop: {}; marker: {}; markerEnd: {}; markerMid: {}; markerStart: {}; mask: {}; maxHeight: {}; maxWidth: {}; minHeight: {}; minWidth: {}; msContentZoomChaining: {}; msContentZooming: {}; msContentZoomLimit: {}; msContentZoomLimitMax: {}; msContentZoomLimitMin: {}; msContentZoomSnap: {}; msContentZoomSnapPoints: {}; msContentZoomSnapType: {}; msFlowFrom: {}; msFlowInto: {}; msFontFeatureSettings: {}; msGridColumn: {}; msGridColumnAlign: {}; msGridColumns: {}; msGridColumnSpan: {}; msGridRow: {}; msGridRowAlign: {}; msGridRows: {}; msGridRowSpan: {}; msHighContrastAdjust: {}; msHyphenateLimitChars: {}; msHyphenateLimitLines: {}; msHyphenateLimitZone: {}; msHyphens: {}; msImeAlign: {}; msOverflowStyle: {}; msScrollChaining: {}; msScrollLimit: {}; msScrollLimitXMax: {}; msScrollLimitXMin: {}; msScrollLimitYMax: {}; msScrollLimitYMin: {}; msScrollRails: {}; msScrollSnapPointsX: {}; msScrollSnapPointsY: {}; msScrollSnapType: {}; msScrollSnapX: {}; msScrollSnapY: {}; msScrollTranslation: {}; msTextCombineHorizontal: {}; msTextSizeAdjust: {}; msTouchAction: {}; msTouchSelect: {}; msUserSelect: {}; msWrapFlow: {}; msWrapMargin: {}; msWrapThrough: {}; opacity: {}; order: {}; orphans: {}; outline: {}; outlineColor: {}; outlineOffset: {}; outlineStyle: {}; outlineWidth: {}; overflow: {}; overflowX: {}; overflowY: {}; padding: {}; paddingBottom: {}; paddingLeft: {}; paddingRight: {}; paddingTop: {}; pageBreakAfter: {}; pageBreakBefore: {}; pageBreakInside: {}; readonly parentRule: { cssText: {}; readonly parentRule: {}; readonly parentStyleSheet: { readonly cssRules: { readonly length: {}; item: {}; }; cssText: {}; readonly id: {}; readonly imports: { readonly length: {}; item: {}; }; readonly isAlternate: {}; readonly isPrefAlternate: {}; readonly ownerRule: {}; readonly owningElement: {}; readonly pages: { readonly length: {}; item: {}; }; readonly readOnly: {}; readonly rules: {}; addImport: {}; addPageRule: {}; addRule: {}; deleteRule: {}; insertRule: {}; removeImport: {}; removeRule: {}; disabled: {}; readonly href: {}; readonly media: { readonly length: {}; mediaText: {}; appendMedium: {}; deleteMedium: {}; item: {}; toString: {}; }; readonly ownerNode: { readonly attributes: { readonly length: {}; getNamedItem: {}; getNamedItemNS: {}; item: {}; removeNamedItem: {}; removeNamedItemNS: {}; setNamedItem: {}; setNamedItemNS: {}; }; readonly baseURI: {}; readonly childNodes: { readonly length: {}; item: {}; }; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: { accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: { readonly host: {}; innerHTML: {}; readonly activeElement: {}; readonly stylesheets: {}; getSelection: {}; elementFromPoint: {}; elementsFromPoint: {}; getElementById: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; querySelector: {}; querySelectorAll: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; }; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; }; readonly parentStyleSheet: { disabled: {}; readonly href: {}; readonly media: {}; readonly ownerNode: {}; readonly parentStyleSheet: {}; readonly title: {}; readonly type: {}; }; readonly title: {}; readonly type: {}; }; readonly type: {}; readonly CHARSET_RULE: {}; readonly FONT_FACE_RULE: {}; readonly IMPORT_RULE: {}; readonly KEYFRAME_RULE: {}; readonly KEYFRAMES_RULE: {}; readonly MEDIA_RULE: {}; readonly NAMESPACE_RULE: {}; readonly PAGE_RULE: {}; readonly STYLE_RULE: {}; readonly SUPPORTS_RULE: {}; readonly UNKNOWN_RULE: {}; readonly VIEWPORT_RULE: {}; }; perspective: {}; perspectiveOrigin: {}; pointerEvents: {}; position: {}; quotes: {}; right: {}; rotate: {}; rubyAlign: {}; rubyOverhang: {}; rubyPosition: {}; scale: {}; stopColor: {}; stopOpacity: {}; stroke: {}; strokeDasharray: {}; strokeDashoffset: {}; strokeLinecap: {}; strokeLinejoin: {}; strokeMiterlimit: {}; strokeOpacity: {}; strokeWidth: {}; tableLayout: {}; textAlign: {}; textAlignLast: {}; textAnchor: {}; textDecoration: {}; textIndent: {}; textJustify: {}; textKashida: {}; textKashidaSpace: {}; textOverflow: {}; textShadow: {}; textTransform: {}; textUnderlinePosition: {}; top: {}; touchAction: {}; transform: {}; transformOrigin: {}; transformStyle: {}; transition: {}; transitionDelay: {}; transitionDuration: {}; transitionProperty: {}; transitionTimingFunction: {}; translate: {}; unicodeBidi: {}; verticalAlign: {}; visibility: {}; webkitAlignContent: {}; webkitAlignItems: {}; webkitAlignSelf: {}; webkitAnimation: {}; webkitAnimationDelay: {}; webkitAnimationDirection: {}; webkitAnimationDuration: {}; webkitAnimationFillMode: {}; webkitAnimationIterationCount: {}; webkitAnimationName: {}; webkitAnimationPlayState: {}; webkitAnimationTimingFunction: {}; webkitAppearance: {}; webkitBackfaceVisibility: {}; webkitBackgroundClip: {}; webkitBackgroundOrigin: {}; webkitBackgroundSize: {}; webkitBorderBottomLeftRadius: {}; webkitBorderBottomRightRadius: {}; webkitBorderImage: {}; webkitBorderRadius: {}; webkitBorderTopLeftRadius: {}; webkitBorderTopRightRadius: {}; webkitBoxAlign: {}; webkitBoxDirection: {}; webkitBoxFlex: {}; webkitBoxOrdinalGroup: {}; webkitBoxOrient: {}; webkitBoxPack: {}; webkitBoxSizing: {}; webkitColumnBreakAfter: {}; webkitColumnBreakBefore: {}; webkitColumnBreakInside: {}; webkitColumnCount: {}; webkitColumnGap: {}; webkitColumnRule: {}; webkitColumnRuleColor: {}; webkitColumnRuleStyle: {}; webkitColumnRuleWidth: {}; webkitColumns: {}; webkitColumnSpan: {}; webkitColumnWidth: {}; webkitFilter: {}; webkitFlex: {}; webkitFlexBasis: {}; webkitFlexDirection: {}; webkitFlexFlow: {}; webkitFlexGrow: {}; webkitFlexShrink: {}; webkitFlexWrap: {}; webkitJustifyContent: {}; webkitOrder: {}; webkitPerspective: {}; webkitPerspectiveOrigin: {}; webkitTapHighlightColor: {}; webkitTextFillColor: {}; webkitTextSizeAdjust: {}; webkitTextStroke: {}; webkitTextStrokeColor: {}; webkitTextStrokeWidth: {}; webkitTransform: {}; webkitTransformOrigin: {}; webkitTransformStyle: {}; webkitTransition: {}; webkitTransitionDelay: {}; webkitTransitionDuration: {}; webkitTransitionProperty: {}; webkitTransitionTimingFunction: {}; webkitUserModify: {}; webkitUserSelect: {}; webkitWritingMode: {}; whiteSpace: {}; widows: {}; width: {}; wordBreak: {}; wordSpacing: {}; wordWrap: {}; writingMode: {}; zIndex: {}; zoom: {}; resize: {}; userSelect: {}; getPropertyPriority: {}; getPropertyValue: {}; item: {}; removeProperty: {}; setProperty: {}; }; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; }; alinkColor: {}; readonly all: { readonly length: {}; item: {}; namedItem: {}; }; anchors: { item: {}; namedItem: {}; readonly length: {}; }; applets: {}; bgColor: {}; body: {}; readonly characterSet: {}; charset: {}; readonly compatMode: {}; cookie: {}; readonly currentScript: { async: {}; charset: {}; crossOrigin: {}; defer: {}; event: {}; htmlFor: {}; src: {}; text: {}; type: {}; integrity: {}; addEventListener: {}; removeEventListener: {}; accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; } | { type: {}; addEventListener: {}; removeEventListener: {}; className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: { contentScriptType: {}; contentStyleType: {}; currentScale: {}; readonly currentTranslate: { x: {}; y: {}; matrixTransform: {}; }; readonly height: { readonly animVal: { readonly unitType: {}; value: {}; valueAsString: {}; valueInSpecifiedUnits: {}; convertToSpecifiedUnits: {}; newValueSpecifiedUnits: {}; readonly SVG_LENGTHTYPE_CM: {}; readonly SVG_LENGTHTYPE_EMS: {}; readonly SVG_LENGTHTYPE_EXS: {}; readonly SVG_LENGTHTYPE_IN: {}; readonly SVG_LENGTHTYPE_MM: {}; readonly SVG_LENGTHTYPE_NUMBER: {}; readonly SVG_LENGTHTYPE_PC: {}; readonly SVG_LENGTHTYPE_PERCENTAGE: {}; readonly SVG_LENGTHTYPE_PT: {}; readonly SVG_LENGTHTYPE_PX: {}; readonly SVG_LENGTHTYPE_UNKNOWN: {}; }; readonly baseVal: {}; }; onabort: {}; onerror: {}; onresize: {}; onscroll: {}; onunload: {}; onzoom: {}; readonly pixelUnitToMillimeterX: {}; readonly pixelUnitToMillimeterY: {}; readonly screenPixelToMillimeterX: {}; readonly screenPixelToMillimeterY: {}; readonly viewport: { height: {}; width: {}; x: {}; y: {}; }; readonly width: {}; readonly x: {}; readonly y: {}; checkEnclosure: {}; checkIntersection: {}; createSVGAngle: {}; createSVGLength: {}; createSVGMatrix: {}; createSVGNumber: {}; createSVGPoint: {}; createSVGRect: {}; createSVGTransform: {}; createSVGTransformFromMatrix: {}; deselectAll: {}; forceRedraw: {}; getComputedStyle: {}; getCurrentTime: {}; getElementById: {}; getEnclosureList: {}; getIntersectionList: {}; pauseAnimations: {}; setCurrentTime: {}; suspendRedraw: {}; unpauseAnimations: {}; unsuspendRedraw: {}; unsuspendRedrawAll: {}; addEventListener: {}; removeEventListener: {}; readonly farthestViewportElement: { className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: {}; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; }; readonly nearestViewportElement: {}; readonly transform: { readonly animVal: { readonly numberOfItems: {}; appendItem: {}; clear: {}; consolidate: {}; createSVGTransformFromMatrix: {}; getItem: {}; initialize: {}; insertItemBefore: {}; removeItem: {}; replaceItem: {}; }; readonly baseVal: {}; }; getBBox: {}; getCTM: {}; getScreenCTM: {}; getTransformToElement: {}; className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: {}; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; readonly requiredExtensions: { readonly numberOfItems: {}; appendItem: {}; clear: {}; getItem: {}; initialize: {}; insertItemBefore: {}; removeItem: {}; replaceItem: {}; }; readonly requiredFeatures: {}; readonly systemLanguage: {}; hasExtension: {}; createEvent: {}; readonly preserveAspectRatio: { readonly animVal: { align: {}; meetOrSlice: {}; readonly SVG_MEETORSLICE_MEET: {}; readonly SVG_MEETORSLICE_SLICE: {}; readonly SVG_MEETORSLICE_UNKNOWN: {}; readonly SVG_PRESERVEASPECTRATIO_NONE: {}; readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: {}; }; readonly baseVal: {}; }; readonly viewBox: { readonly animVal: {}; readonly baseVal: {}; }; readonly zoomAndPan: {}; }; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; readonly href: { readonly animVal: {}; baseVal: {}; }; }; readonly defaultView: { readonly applicationCache: { oncached: {}; onchecking: {}; ondownloading: {}; onerror: {}; onnoupdate: {}; onobsolete: {}; onprogress: {}; onupdateready: {}; readonly status: {}; abort: {}; swapCache: {}; update: {}; readonly CHECKING: {}; readonly DOWNLOADING: {}; readonly IDLE: {}; readonly OBSOLETE: {}; readonly UNCACHED: {}; readonly UPDATEREADY: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly caches: { delete: {}; has: {}; keys: {}; match: {}; open: {}; }; readonly clientInformation: { readonly authentication: { getAssertion: {}; makeCredential: {}; }; readonly cookieEnabled: {}; gamepadInputEmulation: {}; readonly language: {}; readonly maxTouchPoints: {}; readonly mimeTypes: { readonly length: {}; item: {}; namedItem: {}; }; readonly msManipulationViewsEnabled: {}; readonly msMaxTouchPoints: {}; readonly msPointerEnabled: {}; readonly plugins: { readonly length: {}; item: {}; namedItem: {}; refresh: {}; }; readonly pointerEnabled: {}; readonly serviceWorker: { readonly controller: { onstatechange: {}; readonly scriptURL: {}; readonly state: {}; postMessage: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onerror: {}; }; oncontrollerchange: {}; onmessage: {}; readonly ready: { then: {}; catch: {}; readonly [Symbol.toStringTag]: {}; }; getRegistration: {}; getRegistrations: {}; register: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly webdriver: {}; readonly doNotTrack: {}; readonly hardwareConcurrency: {}; readonly languages: { length: {}; toString: {}; toLocaleString: {}; push: {}; pop: {}; concat: {}; join: {}; reverse: {}; shift: {}; slice: {}; sort: {}; splice: {}; unshift: {}; indexOf: {}; lastIndexOf: {}; every: {}; some: {}; forEach: {}; map: {}; filter: {}; reduce: {}; reduceRight: {}; [Symbol.unscopables]: {}; [Symbol.iterator]: {}; entries: {}; keys: {}; values: {}; find: {}; findIndex: {}; fill: {}; copyWithin: {}; }; getGamepads: {}; javaEnabled: {}; msLaunchUri: {}; requestMediaKeySystemAccess: {}; vibrate: {}; constructor: { apply: {}; call: {}; bind: {}; toString: {}; prototype: {}; readonly length: {}; arguments: {}; caller: {}; [Symbol.hasInstance]: {}; readonly name: {}; }; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; readonly appCodeName: {}; readonly appName: {}; readonly appVersion: {}; readonly platform: {}; readonly product: {}; readonly productSub: {}; readonly userAgent: {}; readonly vendor: {}; readonly vendorSub: {}; readonly onLine: {}; readonly geolocation: { clearWatch: {}; getCurrentPosition: {}; watchPosition: {}; }; confirmSiteSpecificTrackingException: {}; confirmWebWideTrackingException: {}; removeSiteSpecificTrackingException: {}; removeWebWideTrackingException: {}; storeSiteSpecificTrackingException: {}; storeWebWideTrackingException: {}; msSaveBlob: {}; msSaveOrOpenBlob: {}; sendBeacon: {}; readonly mediaDevices: { ondevicechange: {}; enumerateDevices: {}; getSupportedConstraints: {}; getUserMedia: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; getUserMedia: {}; }; readonly closed: {}; readonly crypto: { readonly subtle: { decrypt: {}; deriveBits: {}; deriveKey: {}; digest: {}; encrypt: {}; exportKey: {}; generateKey: {}; importKey: {}; sign: {}; unwrapKey: {}; verify: {}; wrapKey: {}; }; constructor: {}; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; getRandomValues: {}; }; defaultStatus: {}; readonly devicePixelRatio: {}; readonly document: {}; readonly doNotTrack: {}; event: { readonly bubbles: {}; readonly cancelable: {}; cancelBubble: {}; readonly currentTarget: { addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; }; readonly defaultPrevented: {}; readonly eventPhase: {}; readonly isTrusted: {}; returnValue: {}; readonly srcElement: {}; readonly target: {}; readonly timeStamp: {}; readonly type: {}; readonly scoped: {}; initEvent: {}; preventDefault: {}; stopImmediatePropagation: {}; stopPropagation: {}; deepPath: {}; readonly AT_TARGET: {}; readonly BUBBLING_PHASE: {}; readonly CAPTURING_PHASE: {}; }; readonly external: {}; readonly frameElement: {}; readonly frames: {}; readonly history: { readonly length: {}; readonly state: {}; scrollRestoration: {}; back: {}; forward: {}; go: {}; pushState: {}; replaceState: {}; }; readonly innerHeight: {}; readonly innerWidth: {}; readonly isSecureContext: {}; readonly length: {}; readonly location: { hash: {}; host: {}; hostname: {}; href: {}; readonly origin: {}; pathname: {}; port: {}; protocol: {}; search: {}; assign: {}; reload: {}; replace: {}; toString: {}; }; readonly locationbar: { readonly visible: {}; }; readonly menubar: {}; readonly msContentScript: { extensionIdToShortId: {}; fireExtensionApiTelemetry: {}; genericFunction: {}; genericSynchronousFunction: {}; getExtensionId: {}; registerGenericFunctionCallbackHandler: {}; registerGenericPersistentCallbackHandler: {}; }; readonly msCredentials: { getAssertion: {}; makeCredential: {}; }; name: {}; readonly navigator: {}; offscreenBuffering: {}; onabort: {}; onafterprint: {}; onbeforeprint: {}; onbeforeunload: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncompassneedscalibration: {}; oncontextmenu: {}; ondblclick: {}; ondevicelight: {}; ondevicemotion: {}; ondeviceorientation: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onhashchange: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmessage: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onoffline: {}; ononline: {}; onorientationchange: {}; onpagehide: {}; onpageshow: {}; onpause: {}; onplay: {}; onplaying: {}; onpopstate: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onresize: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onstalled: {}; onstorage: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onunload: {}; onvolumechange: {}; onwaiting: {}; opener: {}; orientation: {}; readonly outerHeight: {}; readonly outerWidth: {}; readonly pageXOffset: {}; readonly pageYOffset: {}; readonly parent: {}; readonly performance: { readonly navigation: { readonly redirectCount: {}; readonly type: {}; toJSON: {}; readonly TYPE_BACK_FORWARD: {}; readonly TYPE_NAVIGATE: {}; readonly TYPE_RELOAD: {}; readonly TYPE_RESERVED: {}; }; readonly timing: { readonly connectEnd: {}; readonly connectStart: {}; readonly domainLookupEnd: {}; readonly domainLookupStart: {}; readonly domComplete: {}; readonly domContentLoadedEventEnd: {}; readonly domContentLoadedEventStart: {}; readonly domInteractive: {}; readonly domLoading: {}; readonly fetchStart: {}; readonly loadEventEnd: {}; readonly loadEventStart: {}; readonly msFirstPaint: {}; readonly navigationStart: {}; readonly redirectEnd: {}; readonly redirectStart: {}; readonly requestStart: {}; readonly responseEnd: {}; readonly responseStart: {}; readonly unloadEventEnd: {}; readonly unloadEventStart: {}; readonly secureConnectionStart: {}; toJSON: {}; }; clearMarks: {}; clearMeasures: {}; clearResourceTimings: {}; getEntries: {}; getEntriesByName: {}; getEntriesByType: {}; getMarks: {}; getMeasures: {}; mark: {}; measure: {}; now: {}; setResourceTimingBufferSize: {}; toJSON: {}; }; readonly personalbar: {}; readonly screen: { readonly availHeight: {}; readonly availWidth: {}; bufferDepth: {}; readonly colorDepth: {}; readonly deviceXDPI: {}; readonly deviceYDPI: {}; readonly fontSmoothingEnabled: {}; readonly height: {}; readonly logicalXDPI: {}; readonly logicalYDPI: {}; readonly msOrientation: {}; onmsorientationchange: {}; readonly pixelDepth: {}; readonly systemXDPI: {}; readonly systemYDPI: {}; readonly width: {}; msLockOrientation: {}; msUnlockOrientation: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly screenLeft: {}; readonly screenTop: {}; readonly screenX: {}; readonly screenY: {}; readonly scrollbars: {}; readonly scrollX: {}; readonly scrollY: {}; readonly self: {}; readonly speechSynthesis: { onvoiceschanged: {}; readonly paused: {}; readonly pending: {}; readonly speaking: {}; cancel: {}; getVoices: {}; pause: {}; resume: {}; speak: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; status: {}; readonly statusbar: {}; readonly styleMedia: { readonly type: {}; matchMedium: {}; }; readonly toolbar: {}; readonly top: {}; readonly window: {}; URL: { prototype: { hash: {}; host: {}; hostname: {}; href: {}; readonly origin: {}; password: {}; pathname: {}; port: {}; protocol: {}; search: {}; username: {}; readonly searchParams: { append: {}; delete: {}; get: {}; getAll: {}; has: {}; set: {}; }; toString: {}; }; createObjectURL: {}; revokeObjectURL: {}; }; URLSearchParams: { prototype: {}; }; Blob: { prototype: { readonly size: {}; readonly type: {}; msClose: {}; msDetachStream: {}; slice: {}; }; }; customElements: { define: {}; get: {}; whenDefined: {}; }; alert: {}; blur: {}; cancelAnimationFrame: {}; captureEvents: {}; close: {}; confirm: {}; departFocus: {}; focus: {}; getComputedStyle: {}; getMatchedCSSRules: {}; getSelection: {}; matchMedia: {}; moveBy: {}; moveTo: {}; msWriteProfilerMark: {}; open: {}; postMessage: {}; print: {}; prompt: {}; releaseEvents: {}; requestAnimationFrame: {}; resizeBy: {}; resizeTo: {}; scroll: {}; scrollBy: {}; scrollTo: {}; stop: {}; webkitCancelAnimationFrame: {}; webkitConvertPointFromNodeToPage: {}; webkitConvertPointFromPageToNode: {}; webkitRequestAnimationFrame: {}; createImageBitmap: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; clearInterval: {}; clearTimeout: {}; setInterval: {}; setTimeout: {}; constructor: {}; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; clearImmediate: {}; setImmediate: {}; readonly sessionStorage: { [x: string]: {}; readonly length: {}; clear: {}; getItem: {}; key: {}; removeItem: {}; setItem: {}; }; readonly localStorage: {}; readonly console: { assert: {}; clear: {}; count: {}; debug: {}; dir: {}; dirxml: {}; error: {}; exception: {}; group: {}; groupCollapsed: {}; groupEnd: {}; info: {}; log: {}; msIsIndependentlyComposed: {}; profile: {}; profileEnd: {}; select: {}; table: {}; time: {}; timeEnd: {}; trace: {}; warn: {}; }; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly indexedDB: { cmp: {}; deleteDatabase: {}; open: {}; }; atob: {}; btoa: {}; fetch: {}; }; designMode: {}; dir: {}; readonly doctype: { readonly entities: {}; readonly internalSubset: {}; readonly name: {}; readonly notations: {}; readonly publicId: {}; readonly systemId: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; remove: {}; }; documentElement: {}; domain: {}; embeds: {}; fgColor: {}; forms: {}; readonly fullscreenElement: {}; readonly fullscreenEnabled: {}; readonly head: { profile: {}; addEventListener: {}; removeEventListener: {}; accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; readonly hidden: {}; images: {}; readonly implementation: { createDocument: {}; createDocumentType: {}; createHTMLDocument: {}; hasFeature: {}; }; readonly inputEncoding: {}; readonly lastModified: {}; linkColor: {}; links: {}; readonly location: {}; msCapsLockWarningOff: {}; msCSSOMElementFloatMetrics: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforedeactivate: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onfullscreenchange: {}; onfullscreenerror: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmsmanipulationstatechanged: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onmssitemodejumplistitemremoved: {}; onmsthumbnailclick: {}; onpause: {}; onplay: {}; onplaying: {}; onpointerlockchange: {}; onpointerlockerror: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectionchange: {}; onselectstart: {}; onstalled: {}; onstop: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onvolumechange: {}; onwaiting: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; plugins: {}; readonly pointerLockElement: {}; readonly readyState: {}; readonly referrer: {}; readonly rootElement: {}; scripts: {}; readonly scrollingElement: {}; readonly styleSheets: {}; title: {}; readonly URL: {}; readonly URLUnencoded: {}; readonly visibilityState: {}; vlinkColor: {}; readonly webkitCurrentFullScreenElement: {}; readonly webkitFullscreenElement: {}; readonly webkitFullscreenEnabled: {}; readonly webkitIsFullScreen: {}; readonly xmlEncoding: {}; xmlStandalone: {}; xmlVersion: {}; adoptNode: {}; captureEvents: {}; caretRangeFromPoint: {}; clear: {}; close: {}; createAttribute: {}; createAttributeNS: {}; createCDATASection: {}; createComment: {}; createDocumentFragment: {}; createElement: {}; createElementNS: {}; createExpression: {}; createNodeIterator: {}; createNSResolver: {}; createProcessingInstruction: {}; createRange: {}; createTextNode: {}; createTouch: {}; createTouchList: {}; createTreeWalker: {}; elementFromPoint: {}; evaluate: {}; execCommand: {}; execCommandShowHelp: {}; exitFullscreen: {}; exitPointerLock: {}; focus: {}; getElementById: {}; getElementsByClassName: {}; getElementsByName: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; getSelection: {}; hasFocus: {}; importNode: {}; msElementsFromPoint: {}; msElementsFromRect: {}; open: {}; queryCommandEnabled: {}; queryCommandIndeterm: {}; queryCommandState: {}; queryCommandSupported: {}; queryCommandText: {}; queryCommandValue: {}; releaseEvents: {}; updateSettings: {}; webkitCancelFullScreen: {}; webkitExitFullscreen: {}; write: {}; writeln: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; querySelector: {}; querySelectorAll: {}; createEvent: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; readonly stylesheets: {}; elementsFromPoint: {}; }; readonly status: {}; readonly statusText: {}; timeout: {}; readonly upload: { addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; }; withCredentials: {}; msCaching?: {}; abort: {}; getAllResponseHeaders: {}; getResponseHeader: {}; msCachingEnabled: {}; open: {}; overrideMimeType: {}; send: {}; setRequestHeader: {}; readonly DONE: {}; readonly HEADERS_RECEIVED: {}; readonly LOADING: {}; readonly OPENED: {}; readonly UNSENT: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; } ->foo(xhr) : { onreadystatechange: {}; readonly readyState: { toString: {}; toFixed: {}; toExponential: {}; toPrecision: {}; valueOf: {}; toLocaleString: {}; }; readonly response: {}; readonly responseText: { toString: {}; charAt: {}; charCodeAt: {}; concat: {}; indexOf: {}; lastIndexOf: {}; localeCompare: {}; match: {}; replace: {}; search: {}; slice: {}; split: {}; substring: {}; toLowerCase: {}; toLocaleLowerCase: {}; toUpperCase: {}; toLocaleUpperCase: {}; trim: {}; readonly length: {}; substr: {}; valueOf: {}; [Symbol.iterator]: {}; codePointAt: {}; includes: {}; endsWith: {}; normalize: {}; repeat: {}; startsWith: {}; anchor: {}; big: {}; blink: {}; bold: {}; fixed: {}; fontcolor: {}; fontsize: {}; italics: {}; link: {}; small: {}; strike: {}; sub: {}; sup: {}; }; responseType: {}; readonly responseURL: {}; readonly responseXML: { readonly activeElement: { readonly classList: { readonly length: {}; add: {}; contains: {}; item: {}; remove: {}; toggle: {}; toString: {}; }; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: { name: {}; assignedNodes: {}; accessKey: {}; readonly children: { namedItem: {}; readonly length: {}; item: {}; }; contentEditable: {}; readonly dataset: { [x: string]: {}; }; dir: {}; draggable: { valueOf: {}; }; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: { alignContent: {}; alignItems: {}; alignmentBaseline: {}; alignSelf: {}; animation: {}; animationDelay: {}; animationDirection: {}; animationDuration: {}; animationFillMode: {}; animationIterationCount: {}; animationName: {}; animationPlayState: {}; animationTimingFunction: {}; backfaceVisibility: {}; background: {}; backgroundAttachment: {}; backgroundClip: {}; backgroundColor: {}; backgroundImage: {}; backgroundOrigin: {}; backgroundPosition: {}; backgroundPositionX: {}; backgroundPositionY: {}; backgroundRepeat: {}; backgroundSize: {}; baselineShift: {}; border: {}; borderBottom: {}; borderBottomColor: {}; borderBottomLeftRadius: {}; borderBottomRightRadius: {}; borderBottomStyle: {}; borderBottomWidth: {}; borderCollapse: {}; borderColor: {}; borderImage: {}; borderImageOutset: {}; borderImageRepeat: {}; borderImageSlice: {}; borderImageSource: {}; borderImageWidth: {}; borderLeft: {}; borderLeftColor: {}; borderLeftStyle: {}; borderLeftWidth: {}; borderRadius: {}; borderRight: {}; borderRightColor: {}; borderRightStyle: {}; borderRightWidth: {}; borderSpacing: {}; borderStyle: {}; borderTop: {}; borderTopColor: {}; borderTopLeftRadius: {}; borderTopRightRadius: {}; borderTopStyle: {}; borderTopWidth: {}; borderWidth: {}; bottom: {}; boxShadow: {}; boxSizing: {}; breakAfter: {}; breakBefore: {}; breakInside: {}; captionSide: {}; clear: {}; clip: {}; clipPath: {}; clipRule: {}; color: {}; colorInterpolationFilters: {}; columnCount: {}; columnFill: {}; columnGap: {}; columnRule: {}; columnRuleColor: {}; columnRuleStyle: {}; columnRuleWidth: {}; columns: {}; columnSpan: {}; columnWidth: {}; content: {}; counterIncrement: {}; counterReset: {}; cssFloat: {}; cssText: {}; cursor: {}; direction: {}; display: {}; dominantBaseline: {}; emptyCells: {}; enableBackground: {}; fill: {}; fillOpacity: {}; fillRule: {}; filter: {}; flex: {}; flexBasis: {}; flexDirection: {}; flexFlow: {}; flexGrow: {}; flexShrink: {}; flexWrap: {}; floodColor: {}; floodOpacity: {}; font: {}; fontFamily: {}; fontFeatureSettings: {}; fontSize: {}; fontSizeAdjust: {}; fontStretch: {}; fontStyle: {}; fontVariant: {}; fontWeight: {}; glyphOrientationHorizontal: {}; glyphOrientationVertical: {}; height: {}; imeMode: {}; justifyContent: {}; kerning: {}; layoutGrid: {}; layoutGridChar: {}; layoutGridLine: {}; layoutGridMode: {}; layoutGridType: {}; left: {}; readonly length: {}; letterSpacing: {}; lightingColor: {}; lineBreak: {}; lineHeight: {}; listStyle: {}; listStyleImage: {}; listStylePosition: {}; listStyleType: {}; margin: {}; marginBottom: {}; marginLeft: {}; marginRight: {}; marginTop: {}; marker: {}; markerEnd: {}; markerMid: {}; markerStart: {}; mask: {}; maxHeight: {}; maxWidth: {}; minHeight: {}; minWidth: {}; msContentZoomChaining: {}; msContentZooming: {}; msContentZoomLimit: {}; msContentZoomLimitMax: {}; msContentZoomLimitMin: {}; msContentZoomSnap: {}; msContentZoomSnapPoints: {}; msContentZoomSnapType: {}; msFlowFrom: {}; msFlowInto: {}; msFontFeatureSettings: {}; msGridColumn: {}; msGridColumnAlign: {}; msGridColumns: {}; msGridColumnSpan: {}; msGridRow: {}; msGridRowAlign: {}; msGridRows: {}; msGridRowSpan: {}; msHighContrastAdjust: {}; msHyphenateLimitChars: {}; msHyphenateLimitLines: {}; msHyphenateLimitZone: {}; msHyphens: {}; msImeAlign: {}; msOverflowStyle: {}; msScrollChaining: {}; msScrollLimit: {}; msScrollLimitXMax: {}; msScrollLimitXMin: {}; msScrollLimitYMax: {}; msScrollLimitYMin: {}; msScrollRails: {}; msScrollSnapPointsX: {}; msScrollSnapPointsY: {}; msScrollSnapType: {}; msScrollSnapX: {}; msScrollSnapY: {}; msScrollTranslation: {}; msTextCombineHorizontal: {}; msTextSizeAdjust: {}; msTouchAction: {}; msTouchSelect: {}; msUserSelect: {}; msWrapFlow: {}; msWrapMargin: {}; msWrapThrough: {}; opacity: {}; order: {}; orphans: {}; outline: {}; outlineColor: {}; outlineOffset: {}; outlineStyle: {}; outlineWidth: {}; overflow: {}; overflowX: {}; overflowY: {}; padding: {}; paddingBottom: {}; paddingLeft: {}; paddingRight: {}; paddingTop: {}; pageBreakAfter: {}; pageBreakBefore: {}; pageBreakInside: {}; readonly parentRule: { cssText: {}; readonly parentRule: {}; readonly parentStyleSheet: { readonly cssRules: { readonly length: {}; item: {}; }; cssText: {}; readonly id: {}; readonly imports: { readonly length: {}; item: {}; }; readonly isAlternate: {}; readonly isPrefAlternate: {}; readonly ownerRule: {}; readonly owningElement: {}; readonly pages: { readonly length: {}; item: {}; }; readonly readOnly: {}; readonly rules: {}; addImport: {}; addPageRule: {}; addRule: {}; deleteRule: {}; insertRule: {}; removeImport: {}; removeRule: {}; disabled: {}; readonly href: {}; readonly media: { readonly length: {}; mediaText: {}; appendMedium: {}; deleteMedium: {}; item: {}; toString: {}; }; readonly ownerNode: { readonly attributes: { readonly length: {}; getNamedItem: {}; getNamedItemNS: {}; item: {}; removeNamedItem: {}; removeNamedItemNS: {}; setNamedItem: {}; setNamedItemNS: {}; }; readonly baseURI: {}; readonly childNodes: { readonly length: {}; item: {}; }; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: { accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: { readonly host: {}; innerHTML: {}; readonly activeElement: {}; readonly stylesheets: {}; getSelection: {}; elementFromPoint: {}; elementsFromPoint: {}; getElementById: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; querySelector: {}; querySelectorAll: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; }; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; }; readonly parentStyleSheet: { disabled: {}; readonly href: {}; readonly media: {}; readonly ownerNode: {}; readonly parentStyleSheet: {}; readonly title: {}; readonly type: {}; }; readonly title: {}; readonly type: {}; }; readonly type: {}; readonly CHARSET_RULE: {}; readonly FONT_FACE_RULE: {}; readonly IMPORT_RULE: {}; readonly KEYFRAME_RULE: {}; readonly KEYFRAMES_RULE: {}; readonly MEDIA_RULE: {}; readonly NAMESPACE_RULE: {}; readonly PAGE_RULE: {}; readonly STYLE_RULE: {}; readonly SUPPORTS_RULE: {}; readonly UNKNOWN_RULE: {}; readonly VIEWPORT_RULE: {}; }; perspective: {}; perspectiveOrigin: {}; pointerEvents: {}; position: {}; quotes: {}; right: {}; rotate: {}; rubyAlign: {}; rubyOverhang: {}; rubyPosition: {}; scale: {}; stopColor: {}; stopOpacity: {}; stroke: {}; strokeDasharray: {}; strokeDashoffset: {}; strokeLinecap: {}; strokeLinejoin: {}; strokeMiterlimit: {}; strokeOpacity: {}; strokeWidth: {}; tableLayout: {}; textAlign: {}; textAlignLast: {}; textAnchor: {}; textDecoration: {}; textIndent: {}; textJustify: {}; textKashida: {}; textKashidaSpace: {}; textOverflow: {}; textShadow: {}; textTransform: {}; textUnderlinePosition: {}; top: {}; touchAction: {}; transform: {}; transformOrigin: {}; transformStyle: {}; transition: {}; transitionDelay: {}; transitionDuration: {}; transitionProperty: {}; transitionTimingFunction: {}; translate: {}; unicodeBidi: {}; verticalAlign: {}; visibility: {}; webkitAlignContent: {}; webkitAlignItems: {}; webkitAlignSelf: {}; webkitAnimation: {}; webkitAnimationDelay: {}; webkitAnimationDirection: {}; webkitAnimationDuration: {}; webkitAnimationFillMode: {}; webkitAnimationIterationCount: {}; webkitAnimationName: {}; webkitAnimationPlayState: {}; webkitAnimationTimingFunction: {}; webkitAppearance: {}; webkitBackfaceVisibility: {}; webkitBackgroundClip: {}; webkitBackgroundOrigin: {}; webkitBackgroundSize: {}; webkitBorderBottomLeftRadius: {}; webkitBorderBottomRightRadius: {}; webkitBorderImage: {}; webkitBorderRadius: {}; webkitBorderTopLeftRadius: {}; webkitBorderTopRightRadius: {}; webkitBoxAlign: {}; webkitBoxDirection: {}; webkitBoxFlex: {}; webkitBoxOrdinalGroup: {}; webkitBoxOrient: {}; webkitBoxPack: {}; webkitBoxSizing: {}; webkitColumnBreakAfter: {}; webkitColumnBreakBefore: {}; webkitColumnBreakInside: {}; webkitColumnCount: {}; webkitColumnGap: {}; webkitColumnRule: {}; webkitColumnRuleColor: {}; webkitColumnRuleStyle: {}; webkitColumnRuleWidth: {}; webkitColumns: {}; webkitColumnSpan: {}; webkitColumnWidth: {}; webkitFilter: {}; webkitFlex: {}; webkitFlexBasis: {}; webkitFlexDirection: {}; webkitFlexFlow: {}; webkitFlexGrow: {}; webkitFlexShrink: {}; webkitFlexWrap: {}; webkitJustifyContent: {}; webkitOrder: {}; webkitPerspective: {}; webkitPerspectiveOrigin: {}; webkitTapHighlightColor: {}; webkitTextFillColor: {}; webkitTextSizeAdjust: {}; webkitTextStroke: {}; webkitTextStrokeColor: {}; webkitTextStrokeWidth: {}; webkitTransform: {}; webkitTransformOrigin: {}; webkitTransformStyle: {}; webkitTransition: {}; webkitTransitionDelay: {}; webkitTransitionDuration: {}; webkitTransitionProperty: {}; webkitTransitionTimingFunction: {}; webkitUserModify: {}; webkitUserSelect: {}; webkitWritingMode: {}; whiteSpace: {}; widows: {}; width: {}; wordBreak: {}; wordSpacing: {}; wordWrap: {}; writingMode: {}; zIndex: {}; zoom: {}; resize: {}; userSelect: {}; getPropertyPriority: {}; getPropertyValue: {}; item: {}; removeProperty: {}; setProperty: {}; }; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; }; alinkColor: {}; readonly all: { readonly length: {}; item: {}; namedItem: {}; }; anchors: { item: {}; namedItem: {}; readonly length: {}; }; applets: {}; bgColor: {}; body: {}; readonly characterSet: {}; charset: {}; readonly compatMode: {}; cookie: {}; readonly currentScript: { async: {}; charset: {}; crossOrigin: {}; defer: {}; event: {}; htmlFor: {}; src: {}; text: {}; type: {}; integrity: {}; addEventListener: {}; removeEventListener: {}; accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; } | { type: {}; addEventListener: {}; removeEventListener: {}; className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: { contentScriptType: {}; contentStyleType: {}; currentScale: {}; readonly currentTranslate: { x: {}; y: {}; matrixTransform: {}; }; readonly height: { readonly animVal: { readonly unitType: {}; value: {}; valueAsString: {}; valueInSpecifiedUnits: {}; convertToSpecifiedUnits: {}; newValueSpecifiedUnits: {}; readonly SVG_LENGTHTYPE_CM: {}; readonly SVG_LENGTHTYPE_EMS: {}; readonly SVG_LENGTHTYPE_EXS: {}; readonly SVG_LENGTHTYPE_IN: {}; readonly SVG_LENGTHTYPE_MM: {}; readonly SVG_LENGTHTYPE_NUMBER: {}; readonly SVG_LENGTHTYPE_PC: {}; readonly SVG_LENGTHTYPE_PERCENTAGE: {}; readonly SVG_LENGTHTYPE_PT: {}; readonly SVG_LENGTHTYPE_PX: {}; readonly SVG_LENGTHTYPE_UNKNOWN: {}; }; readonly baseVal: {}; }; onabort: {}; onerror: {}; onresize: {}; onscroll: {}; onunload: {}; onzoom: {}; readonly pixelUnitToMillimeterX: {}; readonly pixelUnitToMillimeterY: {}; readonly screenPixelToMillimeterX: {}; readonly screenPixelToMillimeterY: {}; readonly viewport: { height: {}; width: {}; x: {}; y: {}; }; readonly width: {}; readonly x: {}; readonly y: {}; checkEnclosure: {}; checkIntersection: {}; createSVGAngle: {}; createSVGLength: {}; createSVGMatrix: {}; createSVGNumber: {}; createSVGPoint: {}; createSVGRect: {}; createSVGTransform: {}; createSVGTransformFromMatrix: {}; deselectAll: {}; forceRedraw: {}; getComputedStyle: {}; getCurrentTime: {}; getElementById: {}; getEnclosureList: {}; getIntersectionList: {}; pauseAnimations: {}; setCurrentTime: {}; suspendRedraw: {}; unpauseAnimations: {}; unsuspendRedraw: {}; unsuspendRedrawAll: {}; addEventListener: {}; removeEventListener: {}; readonly farthestViewportElement: { className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: {}; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; addEventListener: {}; removeEventListener: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; }; readonly nearestViewportElement: {}; readonly transform: { readonly animVal: { readonly numberOfItems: {}; appendItem: {}; clear: {}; consolidate: {}; createSVGTransformFromMatrix: {}; getItem: {}; initialize: {}; insertItemBefore: {}; removeItem: {}; replaceItem: {}; }; readonly baseVal: {}; }; getBBox: {}; getCTM: {}; getScreenCTM: {}; getTransformToElement: {}; className: {}; onclick: {}; ondblclick: {}; onfocusin: {}; onfocusout: {}; onload: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; readonly ownerSVGElement: {}; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; readonly requiredExtensions: { readonly numberOfItems: {}; appendItem: {}; clear: {}; getItem: {}; initialize: {}; insertItemBefore: {}; removeItem: {}; replaceItem: {}; }; readonly requiredFeatures: {}; readonly systemLanguage: {}; hasExtension: {}; createEvent: {}; readonly preserveAspectRatio: { readonly animVal: { align: {}; meetOrSlice: {}; readonly SVG_MEETORSLICE_MEET: {}; readonly SVG_MEETORSLICE_SLICE: {}; readonly SVG_MEETORSLICE_UNKNOWN: {}; readonly SVG_PRESERVEASPECTRATIO_NONE: {}; readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMID: {}; readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: {}; }; readonly baseVal: {}; }; readonly viewBox: { readonly animVal: {}; readonly baseVal: {}; }; readonly zoomAndPan: {}; }; readonly style: {}; readonly viewportElement: {}; xmlbase: {}; readonly classList: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; readonly href: { readonly animVal: {}; baseVal: {}; }; }; readonly defaultView: { readonly applicationCache: { oncached: {}; onchecking: {}; ondownloading: {}; onerror: {}; onnoupdate: {}; onobsolete: {}; onprogress: {}; onupdateready: {}; readonly status: {}; abort: {}; swapCache: {}; update: {}; readonly CHECKING: {}; readonly DOWNLOADING: {}; readonly IDLE: {}; readonly OBSOLETE: {}; readonly UNCACHED: {}; readonly UPDATEREADY: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly caches: { delete: {}; has: {}; keys: {}; match: {}; open: {}; }; readonly clientInformation: { readonly authentication: { getAssertion: {}; makeCredential: {}; }; readonly cookieEnabled: {}; gamepadInputEmulation: {}; readonly language: {}; readonly maxTouchPoints: {}; readonly mimeTypes: { readonly length: {}; item: {}; namedItem: {}; }; readonly msManipulationViewsEnabled: {}; readonly msMaxTouchPoints: {}; readonly msPointerEnabled: {}; readonly plugins: { readonly length: {}; item: {}; namedItem: {}; refresh: {}; }; readonly pointerEnabled: {}; readonly serviceWorker: { readonly controller: { onstatechange: {}; readonly scriptURL: {}; readonly state: {}; postMessage: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onerror: {}; }; oncontrollerchange: {}; onmessage: {}; readonly ready: { then: {}; catch: {}; readonly [Symbol.toStringTag]: {}; }; getRegistration: {}; getRegistrations: {}; register: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly webdriver: {}; readonly doNotTrack: {}; readonly hardwareConcurrency: {}; readonly languages: { length: {}; toString: {}; toLocaleString: {}; push: {}; pop: {}; concat: {}; join: {}; reverse: {}; shift: {}; slice: {}; sort: {}; splice: {}; unshift: {}; indexOf: {}; lastIndexOf: {}; every: {}; some: {}; forEach: {}; map: {}; filter: {}; reduce: {}; reduceRight: {}; [Symbol.unscopables]: {}; [Symbol.iterator]: {}; entries: {}; keys: {}; values: {}; find: {}; findIndex: {}; fill: {}; copyWithin: {}; }; getGamepads: {}; javaEnabled: {}; msLaunchUri: {}; requestMediaKeySystemAccess: {}; vibrate: {}; constructor: { apply: {}; call: {}; bind: {}; toString: {}; prototype: {}; readonly length: {}; arguments: {}; caller: {}; [Symbol.hasInstance]: {}; readonly name: {}; }; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; readonly appCodeName: {}; readonly appName: {}; readonly appVersion: {}; readonly platform: {}; readonly product: {}; readonly productSub: {}; readonly userAgent: {}; readonly vendor: {}; readonly vendorSub: {}; readonly onLine: {}; readonly geolocation: { clearWatch: {}; getCurrentPosition: {}; watchPosition: {}; }; confirmSiteSpecificTrackingException: {}; confirmWebWideTrackingException: {}; removeSiteSpecificTrackingException: {}; removeWebWideTrackingException: {}; storeSiteSpecificTrackingException: {}; storeWebWideTrackingException: {}; msSaveBlob: {}; msSaveOrOpenBlob: {}; sendBeacon: {}; readonly mediaDevices: { ondevicechange: {}; enumerateDevices: {}; getSupportedConstraints: {}; getUserMedia: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; getUserMedia: {}; }; readonly closed: {}; readonly crypto: { readonly subtle: { decrypt: {}; deriveBits: {}; deriveKey: {}; digest: {}; encrypt: {}; exportKey: {}; generateKey: {}; importKey: {}; sign: {}; unwrapKey: {}; verify: {}; wrapKey: {}; }; constructor: {}; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; getRandomValues: {}; }; defaultStatus: {}; readonly devicePixelRatio: {}; readonly document: {}; readonly doNotTrack: {}; event: { readonly bubbles: {}; readonly cancelable: {}; cancelBubble: {}; readonly currentTarget: { addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; }; readonly defaultPrevented: {}; readonly eventPhase: {}; readonly isTrusted: {}; returnValue: {}; readonly srcElement: {}; readonly target: {}; readonly timeStamp: {}; readonly type: {}; readonly scoped: {}; initEvent: {}; preventDefault: {}; stopImmediatePropagation: {}; stopPropagation: {}; deepPath: {}; readonly AT_TARGET: {}; readonly BUBBLING_PHASE: {}; readonly CAPTURING_PHASE: {}; }; readonly external: {}; readonly frameElement: {}; readonly frames: {}; readonly history: { readonly length: {}; readonly state: {}; scrollRestoration: {}; back: {}; forward: {}; go: {}; pushState: {}; replaceState: {}; }; readonly innerHeight: {}; readonly innerWidth: {}; readonly isSecureContext: {}; readonly length: {}; readonly location: { hash: {}; host: {}; hostname: {}; href: {}; readonly origin: {}; pathname: {}; port: {}; protocol: {}; search: {}; assign: {}; reload: {}; replace: {}; toString: {}; }; readonly locationbar: { readonly visible: {}; }; readonly menubar: {}; readonly msContentScript: { extensionIdToShortId: {}; fireExtensionApiTelemetry: {}; genericFunction: {}; genericSynchronousFunction: {}; getExtensionId: {}; registerGenericFunctionCallbackHandler: {}; registerGenericPersistentCallbackHandler: {}; }; readonly msCredentials: { getAssertion: {}; makeCredential: {}; }; name: {}; readonly navigator: {}; offscreenBuffering: {}; onabort: {}; onafterprint: {}; onbeforeprint: {}; onbeforeunload: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncompassneedscalibration: {}; oncontextmenu: {}; ondblclick: {}; ondevicelight: {}; ondevicemotion: {}; ondeviceorientation: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onhashchange: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmessage: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onoffline: {}; ononline: {}; onorientationchange: {}; onpagehide: {}; onpageshow: {}; onpause: {}; onplay: {}; onplaying: {}; onpopstate: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onresize: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onstalled: {}; onstorage: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onunload: {}; onvolumechange: {}; onwaiting: {}; opener: {}; orientation: {}; readonly outerHeight: {}; readonly outerWidth: {}; readonly pageXOffset: {}; readonly pageYOffset: {}; readonly parent: {}; readonly performance: { readonly navigation: { readonly redirectCount: {}; readonly type: {}; toJSON: {}; readonly TYPE_BACK_FORWARD: {}; readonly TYPE_NAVIGATE: {}; readonly TYPE_RELOAD: {}; readonly TYPE_RESERVED: {}; }; readonly timing: { readonly connectEnd: {}; readonly connectStart: {}; readonly domainLookupEnd: {}; readonly domainLookupStart: {}; readonly domComplete: {}; readonly domContentLoadedEventEnd: {}; readonly domContentLoadedEventStart: {}; readonly domInteractive: {}; readonly domLoading: {}; readonly fetchStart: {}; readonly loadEventEnd: {}; readonly loadEventStart: {}; readonly msFirstPaint: {}; readonly navigationStart: {}; readonly redirectEnd: {}; readonly redirectStart: {}; readonly requestStart: {}; readonly responseEnd: {}; readonly responseStart: {}; readonly unloadEventEnd: {}; readonly unloadEventStart: {}; readonly secureConnectionStart: {}; toJSON: {}; }; clearMarks: {}; clearMeasures: {}; clearResourceTimings: {}; getEntries: {}; getEntriesByName: {}; getEntriesByType: {}; getMarks: {}; getMeasures: {}; mark: {}; measure: {}; now: {}; setResourceTimingBufferSize: {}; toJSON: {}; }; readonly personalbar: {}; readonly screen: { readonly availHeight: {}; readonly availWidth: {}; bufferDepth: {}; readonly colorDepth: {}; readonly deviceXDPI: {}; readonly deviceYDPI: {}; readonly fontSmoothingEnabled: {}; readonly height: {}; readonly logicalXDPI: {}; readonly logicalYDPI: {}; readonly msOrientation: {}; onmsorientationchange: {}; readonly pixelDepth: {}; readonly systemXDPI: {}; readonly systemYDPI: {}; readonly width: {}; msLockOrientation: {}; msUnlockOrientation: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; readonly screenLeft: {}; readonly screenTop: {}; readonly screenX: {}; readonly screenY: {}; readonly scrollbars: {}; readonly scrollX: {}; readonly scrollY: {}; readonly self: {}; readonly speechSynthesis: { onvoiceschanged: {}; readonly paused: {}; readonly pending: {}; readonly speaking: {}; cancel: {}; getVoices: {}; pause: {}; resume: {}; speak: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; }; status: {}; readonly statusbar: {}; readonly styleMedia: { readonly type: {}; matchMedium: {}; }; readonly toolbar: {}; readonly top: {}; readonly window: {}; URL: { prototype: { hash: {}; host: {}; hostname: {}; href: {}; readonly origin: {}; password: {}; pathname: {}; port: {}; protocol: {}; search: {}; username: {}; readonly searchParams: { append: {}; delete: {}; get: {}; getAll: {}; has: {}; set: {}; }; toString: {}; }; createObjectURL: {}; revokeObjectURL: {}; }; URLSearchParams: { prototype: {}; }; Blob: { prototype: { readonly size: {}; readonly type: {}; msClose: {}; msDetachStream: {}; slice: {}; }; }; customElements: { define: {}; get: {}; whenDefined: {}; }; alert: {}; blur: {}; cancelAnimationFrame: {}; captureEvents: {}; close: {}; confirm: {}; departFocus: {}; focus: {}; getComputedStyle: {}; getMatchedCSSRules: {}; getSelection: {}; matchMedia: {}; moveBy: {}; moveTo: {}; msWriteProfilerMark: {}; open: {}; postMessage: {}; print: {}; prompt: {}; releaseEvents: {}; requestAnimationFrame: {}; resizeBy: {}; resizeTo: {}; scroll: {}; scrollBy: {}; scrollTo: {}; stop: {}; webkitCancelAnimationFrame: {}; webkitConvertPointFromNodeToPage: {}; webkitConvertPointFromPageToNode: {}; webkitRequestAnimationFrame: {}; createImageBitmap: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; clearInterval: {}; clearTimeout: {}; setInterval: {}; setTimeout: {}; constructor: {}; toString: {}; toLocaleString: {}; valueOf: {}; hasOwnProperty: {}; isPrototypeOf: {}; propertyIsEnumerable: {}; clearImmediate: {}; setImmediate: {}; readonly sessionStorage: { [x: string]: {}; readonly length: {}; clear: {}; getItem: {}; key: {}; removeItem: {}; setItem: {}; }; readonly localStorage: {}; readonly console: { assert: {}; clear: {}; count: {}; debug: {}; dir: {}; dirxml: {}; error: {}; exception: {}; group: {}; groupCollapsed: {}; groupEnd: {}; info: {}; log: {}; msIsIndependentlyComposed: {}; profile: {}; profileEnd: {}; select: {}; table: {}; time: {}; timeEnd: {}; trace: {}; warn: {}; }; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly indexedDB: { cmp: {}; deleteDatabase: {}; open: {}; }; atob: {}; btoa: {}; fetch: {}; }; designMode: {}; dir: {}; readonly doctype: { readonly entities: {}; readonly internalSubset: {}; readonly name: {}; readonly notations: {}; readonly publicId: {}; readonly systemId: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; addEventListener: {}; dispatchEvent: {}; removeEventListener: {}; remove: {}; }; documentElement: {}; domain: {}; embeds: {}; fgColor: {}; forms: {}; readonly fullscreenElement: {}; readonly fullscreenEnabled: {}; readonly head: { profile: {}; addEventListener: {}; removeEventListener: {}; accessKey: {}; readonly children: {}; contentEditable: {}; readonly dataset: {}; dir: {}; draggable: {}; hidden: {}; hideFocus: {}; innerText: {}; readonly isContentEditable: {}; lang: {}; readonly offsetHeight: {}; readonly offsetLeft: {}; readonly offsetParent: {}; readonly offsetTop: {}; readonly offsetWidth: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforecopy: {}; onbeforecut: {}; onbeforedeactivate: {}; onbeforepaste: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; oncopy: {}; oncuechange: {}; oncut: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmouseenter: {}; onmouseleave: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsmanipulationstatechanged: {}; onpaste: {}; onpause: {}; onplay: {}; onplaying: {}; onprogress: {}; onratechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectstart: {}; onstalled: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; onvolumechange: {}; onwaiting: {}; outerText: {}; spellcheck: {}; readonly style: {}; tabIndex: {}; title: {}; blur: {}; click: {}; dragDrop: {}; focus: {}; msGetInputContext: {}; readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; }; readonly hidden: {}; images: {}; readonly implementation: { createDocument: {}; createDocumentType: {}; createHTMLDocument: {}; hasFeature: {}; }; readonly inputEncoding: {}; readonly lastModified: {}; linkColor: {}; links: {}; readonly location: {}; msCapsLockWarningOff: {}; msCSSOMElementFloatMetrics: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforedeactivate: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onfullscreenchange: {}; onfullscreenerror: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmsmanipulationstatechanged: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onmssitemodejumplistitemremoved: {}; onmsthumbnailclick: {}; onpause: {}; onplay: {}; onplaying: {}; onpointerlockchange: {}; onpointerlockerror: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectionchange: {}; onselectstart: {}; onstalled: {}; onstop: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onvolumechange: {}; onwaiting: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; plugins: {}; readonly pointerLockElement: {}; readonly readyState: {}; readonly referrer: {}; readonly rootElement: {}; scripts: {}; readonly scrollingElement: {}; readonly styleSheets: {}; title: {}; readonly URL: {}; readonly URLUnencoded: {}; readonly visibilityState: {}; vlinkColor: {}; readonly webkitCurrentFullScreenElement: {}; readonly webkitFullscreenElement: {}; readonly webkitFullscreenEnabled: {}; readonly webkitIsFullScreen: {}; readonly xmlEncoding: {}; xmlStandalone: {}; xmlVersion: {}; adoptNode: {}; captureEvents: {}; caretRangeFromPoint: {}; clear: {}; close: {}; createAttribute: {}; createAttributeNS: {}; createCDATASection: {}; createComment: {}; createDocumentFragment: {}; createElement: {}; createElementNS: {}; createExpression: {}; createNodeIterator: {}; createNSResolver: {}; createProcessingInstruction: {}; createRange: {}; createTextNode: {}; createTouch: {}; createTouchList: {}; createTreeWalker: {}; elementFromPoint: {}; evaluate: {}; execCommand: {}; execCommandShowHelp: {}; exitFullscreen: {}; exitPointerLock: {}; focus: {}; getElementById: {}; getElementsByClassName: {}; getElementsByName: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; getSelection: {}; hasFocus: {}; importNode: {}; msElementsFromPoint: {}; msElementsFromRect: {}; open: {}; queryCommandEnabled: {}; queryCommandIndeterm: {}; queryCommandState: {}; queryCommandSupported: {}; queryCommandText: {}; queryCommandValue: {}; releaseEvents: {}; updateSettings: {}; webkitCancelFullScreen: {}; webkitExitFullscreen: {}; write: {}; writeln: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; querySelector: {}; querySelectorAll: {}; createEvent: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; readonly stylesheets: {}; elementsFromPoint: {}; }; readonly status: {}; readonly statusText: {}; timeout: {}; readonly upload: { addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; }; withCredentials: {}; msCaching?: {}; abort: {}; getAllResponseHeaders: {}; getResponseHeader: {}; msCachingEnabled: {}; open: {}; overrideMimeType: {}; send: {}; setRequestHeader: {}; readonly DONE: {}; readonly HEADERS_RECEIVED: {}; readonly LOADING: {}; readonly OPENED: {}; readonly UNSENT: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; } +>out2 : { onreadystatechange: {}; readonly readyState: {}; readonly response: {}; readonly responseText: {}; responseType: {}; readonly responseURL: {}; readonly responseXML: {}; readonly status: {}; readonly statusText: {}; timeout: {}; readonly upload: {}; withCredentials: {}; msCaching?: {}; abort: {}; getAllResponseHeaders: {}; getResponseHeader: {}; msCachingEnabled: {}; open: {}; overrideMimeType: {}; send: {}; setRequestHeader: {}; readonly DONE: {}; readonly HEADERS_RECEIVED: {}; readonly LOADING: {}; readonly OPENED: {}; readonly UNSENT: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; } +>foo(xhr) : { onreadystatechange: {}; readonly readyState: {}; readonly response: {}; readonly responseText: {}; responseType: {}; readonly responseURL: {}; readonly responseXML: {}; readonly status: {}; readonly statusText: {}; timeout: {}; readonly upload: {}; withCredentials: {}; msCaching?: {}; abort: {}; getAllResponseHeaders: {}; getResponseHeader: {}; msCachingEnabled: {}; open: {}; overrideMimeType: {}; send: {}; setRequestHeader: {}; readonly DONE: {}; readonly HEADERS_RECEIVED: {}; readonly LOADING: {}; readonly OPENED: {}; readonly UNSENT: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; } >foo : (deep: Deep) => T >xhr : XMLHttpRequest +out2.responseXML +>out2.responseXML : { readonly activeElement: {}; alinkColor: {}; readonly all: {}; anchors: {}; applets: {}; bgColor: {}; body: {}; readonly characterSet: {}; charset: {}; readonly compatMode: {}; cookie: {}; readonly currentScript: {}; readonly defaultView: {}; designMode: {}; dir: {}; readonly doctype: {}; documentElement: {}; domain: {}; embeds: {}; fgColor: {}; forms: {}; readonly fullscreenElement: {}; readonly fullscreenEnabled: {}; readonly head: {}; readonly hidden: {}; images: {}; readonly implementation: {}; readonly inputEncoding: {}; readonly lastModified: {}; linkColor: {}; links: {}; readonly location: {}; msCapsLockWarningOff: {}; msCSSOMElementFloatMetrics: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforedeactivate: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onfullscreenchange: {}; onfullscreenerror: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmsmanipulationstatechanged: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onmssitemodejumplistitemremoved: {}; onmsthumbnailclick: {}; onpause: {}; onplay: {}; onplaying: {}; onpointerlockchange: {}; onpointerlockerror: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectionchange: {}; onselectstart: {}; onstalled: {}; onstop: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onvolumechange: {}; onwaiting: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; plugins: {}; readonly pointerLockElement: {}; readonly readyState: {}; readonly referrer: {}; readonly rootElement: {}; scripts: {}; readonly scrollingElement: {}; readonly styleSheets: {}; title: {}; readonly URL: {}; readonly URLUnencoded: {}; readonly visibilityState: {}; vlinkColor: {}; readonly webkitCurrentFullScreenElement: {}; readonly webkitFullscreenElement: {}; readonly webkitFullscreenEnabled: {}; readonly webkitIsFullScreen: {}; readonly xmlEncoding: {}; xmlStandalone: {}; xmlVersion: {}; adoptNode: {}; captureEvents: {}; caretRangeFromPoint: {}; clear: {}; close: {}; createAttribute: {}; createAttributeNS: {}; createCDATASection: {}; createComment: {}; createDocumentFragment: {}; createElement: {}; createElementNS: {}; createExpression: {}; createNodeIterator: {}; createNSResolver: {}; createProcessingInstruction: {}; createRange: {}; createTextNode: {}; createTouch: {}; createTouchList: {}; createTreeWalker: {}; elementFromPoint: {}; evaluate: {}; execCommand: {}; execCommandShowHelp: {}; exitFullscreen: {}; exitPointerLock: {}; focus: {}; getElementById: {}; getElementsByClassName: {}; getElementsByName: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; getSelection: {}; hasFocus: {}; importNode: {}; msElementsFromPoint: {}; msElementsFromRect: {}; open: {}; queryCommandEnabled: {}; queryCommandIndeterm: {}; queryCommandState: {}; queryCommandSupported: {}; queryCommandText: {}; queryCommandValue: {}; releaseEvents: {}; updateSettings: {}; webkitCancelFullScreen: {}; webkitExitFullscreen: {}; write: {}; writeln: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; querySelector: {}; querySelectorAll: {}; createEvent: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; readonly stylesheets: {}; elementsFromPoint: {}; } +>out2 : { onreadystatechange: {}; readonly readyState: {}; readonly response: {}; readonly responseText: {}; responseType: {}; readonly responseURL: {}; readonly responseXML: {}; readonly status: {}; readonly statusText: {}; timeout: {}; readonly upload: {}; withCredentials: {}; msCaching?: {}; abort: {}; getAllResponseHeaders: {}; getResponseHeader: {}; msCachingEnabled: {}; open: {}; overrideMimeType: {}; send: {}; setRequestHeader: {}; readonly DONE: {}; readonly HEADERS_RECEIVED: {}; readonly LOADING: {}; readonly OPENED: {}; readonly UNSENT: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; } +>responseXML : { readonly activeElement: {}; alinkColor: {}; readonly all: {}; anchors: {}; applets: {}; bgColor: {}; body: {}; readonly characterSet: {}; charset: {}; readonly compatMode: {}; cookie: {}; readonly currentScript: {}; readonly defaultView: {}; designMode: {}; dir: {}; readonly doctype: {}; documentElement: {}; domain: {}; embeds: {}; fgColor: {}; forms: {}; readonly fullscreenElement: {}; readonly fullscreenEnabled: {}; readonly head: {}; readonly hidden: {}; images: {}; readonly implementation: {}; readonly inputEncoding: {}; readonly lastModified: {}; linkColor: {}; links: {}; readonly location: {}; msCapsLockWarningOff: {}; msCSSOMElementFloatMetrics: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforedeactivate: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onfullscreenchange: {}; onfullscreenerror: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmsmanipulationstatechanged: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onmssitemodejumplistitemremoved: {}; onmsthumbnailclick: {}; onpause: {}; onplay: {}; onplaying: {}; onpointerlockchange: {}; onpointerlockerror: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectionchange: {}; onselectstart: {}; onstalled: {}; onstop: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onvolumechange: {}; onwaiting: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; plugins: {}; readonly pointerLockElement: {}; readonly readyState: {}; readonly referrer: {}; readonly rootElement: {}; scripts: {}; readonly scrollingElement: {}; readonly styleSheets: {}; title: {}; readonly URL: {}; readonly URLUnencoded: {}; readonly visibilityState: {}; vlinkColor: {}; readonly webkitCurrentFullScreenElement: {}; readonly webkitFullscreenElement: {}; readonly webkitFullscreenEnabled: {}; readonly webkitIsFullScreen: {}; readonly xmlEncoding: {}; xmlStandalone: {}; xmlVersion: {}; adoptNode: {}; captureEvents: {}; caretRangeFromPoint: {}; clear: {}; close: {}; createAttribute: {}; createAttributeNS: {}; createCDATASection: {}; createComment: {}; createDocumentFragment: {}; createElement: {}; createElementNS: {}; createExpression: {}; createNodeIterator: {}; createNSResolver: {}; createProcessingInstruction: {}; createRange: {}; createTextNode: {}; createTouch: {}; createTouchList: {}; createTreeWalker: {}; elementFromPoint: {}; evaluate: {}; execCommand: {}; execCommandShowHelp: {}; exitFullscreen: {}; exitPointerLock: {}; focus: {}; getElementById: {}; getElementsByClassName: {}; getElementsByName: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; getSelection: {}; hasFocus: {}; importNode: {}; msElementsFromPoint: {}; msElementsFromRect: {}; open: {}; queryCommandEnabled: {}; queryCommandIndeterm: {}; queryCommandState: {}; queryCommandSupported: {}; queryCommandText: {}; queryCommandValue: {}; releaseEvents: {}; updateSettings: {}; webkitCancelFullScreen: {}; webkitExitFullscreen: {}; write: {}; writeln: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; querySelector: {}; querySelectorAll: {}; createEvent: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; readonly stylesheets: {}; elementsFromPoint: {}; } + +out2.responseXML.activeElement.className.length +>out2.responseXML.activeElement.className.length : { toString: {}; toFixed: {}; toExponential: {}; toPrecision: {}; valueOf: {}; toLocaleString: {}; } +>out2.responseXML.activeElement.className : { toString: {}; charAt: {}; charCodeAt: {}; concat: {}; indexOf: {}; lastIndexOf: {}; localeCompare: {}; match: {}; replace: {}; search: {}; slice: {}; split: {}; substring: {}; toLowerCase: {}; toLocaleLowerCase: {}; toUpperCase: {}; toLocaleUpperCase: {}; trim: {}; readonly length: {}; substr: {}; valueOf: {}; [Symbol.iterator]: {}; codePointAt: {}; includes: {}; endsWith: {}; normalize: {}; repeat: {}; startsWith: {}; anchor: {}; big: {}; blink: {}; bold: {}; fixed: {}; fontcolor: {}; fontsize: {}; italics: {}; link: {}; small: {}; strike: {}; sub: {}; sup: {}; } +>out2.responseXML.activeElement : { readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; } +>out2.responseXML : { readonly activeElement: {}; alinkColor: {}; readonly all: {}; anchors: {}; applets: {}; bgColor: {}; body: {}; readonly characterSet: {}; charset: {}; readonly compatMode: {}; cookie: {}; readonly currentScript: {}; readonly defaultView: {}; designMode: {}; dir: {}; readonly doctype: {}; documentElement: {}; domain: {}; embeds: {}; fgColor: {}; forms: {}; readonly fullscreenElement: {}; readonly fullscreenEnabled: {}; readonly head: {}; readonly hidden: {}; images: {}; readonly implementation: {}; readonly inputEncoding: {}; readonly lastModified: {}; linkColor: {}; links: {}; readonly location: {}; msCapsLockWarningOff: {}; msCSSOMElementFloatMetrics: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforedeactivate: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onfullscreenchange: {}; onfullscreenerror: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmsmanipulationstatechanged: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onmssitemodejumplistitemremoved: {}; onmsthumbnailclick: {}; onpause: {}; onplay: {}; onplaying: {}; onpointerlockchange: {}; onpointerlockerror: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectionchange: {}; onselectstart: {}; onstalled: {}; onstop: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onvolumechange: {}; onwaiting: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; plugins: {}; readonly pointerLockElement: {}; readonly readyState: {}; readonly referrer: {}; readonly rootElement: {}; scripts: {}; readonly scrollingElement: {}; readonly styleSheets: {}; title: {}; readonly URL: {}; readonly URLUnencoded: {}; readonly visibilityState: {}; vlinkColor: {}; readonly webkitCurrentFullScreenElement: {}; readonly webkitFullscreenElement: {}; readonly webkitFullscreenEnabled: {}; readonly webkitIsFullScreen: {}; readonly xmlEncoding: {}; xmlStandalone: {}; xmlVersion: {}; adoptNode: {}; captureEvents: {}; caretRangeFromPoint: {}; clear: {}; close: {}; createAttribute: {}; createAttributeNS: {}; createCDATASection: {}; createComment: {}; createDocumentFragment: {}; createElement: {}; createElementNS: {}; createExpression: {}; createNodeIterator: {}; createNSResolver: {}; createProcessingInstruction: {}; createRange: {}; createTextNode: {}; createTouch: {}; createTouchList: {}; createTreeWalker: {}; elementFromPoint: {}; evaluate: {}; execCommand: {}; execCommandShowHelp: {}; exitFullscreen: {}; exitPointerLock: {}; focus: {}; getElementById: {}; getElementsByClassName: {}; getElementsByName: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; getSelection: {}; hasFocus: {}; importNode: {}; msElementsFromPoint: {}; msElementsFromRect: {}; open: {}; queryCommandEnabled: {}; queryCommandIndeterm: {}; queryCommandState: {}; queryCommandSupported: {}; queryCommandText: {}; queryCommandValue: {}; releaseEvents: {}; updateSettings: {}; webkitCancelFullScreen: {}; webkitExitFullscreen: {}; write: {}; writeln: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; querySelector: {}; querySelectorAll: {}; createEvent: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; readonly stylesheets: {}; elementsFromPoint: {}; } +>out2 : { onreadystatechange: {}; readonly readyState: {}; readonly response: {}; readonly responseText: {}; responseType: {}; readonly responseURL: {}; readonly responseXML: {}; readonly status: {}; readonly statusText: {}; timeout: {}; readonly upload: {}; withCredentials: {}; msCaching?: {}; abort: {}; getAllResponseHeaders: {}; getResponseHeader: {}; msCachingEnabled: {}; open: {}; overrideMimeType: {}; send: {}; setRequestHeader: {}; readonly DONE: {}; readonly HEADERS_RECEIVED: {}; readonly LOADING: {}; readonly OPENED: {}; readonly UNSENT: {}; addEventListener: {}; removeEventListener: {}; dispatchEvent: {}; onabort: {}; onerror: {}; onload: {}; onloadend: {}; onloadstart: {}; onprogress: {}; ontimeout: {}; } +>responseXML : { readonly activeElement: {}; alinkColor: {}; readonly all: {}; anchors: {}; applets: {}; bgColor: {}; body: {}; readonly characterSet: {}; charset: {}; readonly compatMode: {}; cookie: {}; readonly currentScript: {}; readonly defaultView: {}; designMode: {}; dir: {}; readonly doctype: {}; documentElement: {}; domain: {}; embeds: {}; fgColor: {}; forms: {}; readonly fullscreenElement: {}; readonly fullscreenEnabled: {}; readonly head: {}; readonly hidden: {}; images: {}; readonly implementation: {}; readonly inputEncoding: {}; readonly lastModified: {}; linkColor: {}; links: {}; readonly location: {}; msCapsLockWarningOff: {}; msCSSOMElementFloatMetrics: {}; onabort: {}; onactivate: {}; onbeforeactivate: {}; onbeforedeactivate: {}; onblur: {}; oncanplay: {}; oncanplaythrough: {}; onchange: {}; onclick: {}; oncontextmenu: {}; ondblclick: {}; ondeactivate: {}; ondrag: {}; ondragend: {}; ondragenter: {}; ondragleave: {}; ondragover: {}; ondragstart: {}; ondrop: {}; ondurationchange: {}; onemptied: {}; onended: {}; onerror: {}; onfocus: {}; onfullscreenchange: {}; onfullscreenerror: {}; oninput: {}; oninvalid: {}; onkeydown: {}; onkeypress: {}; onkeyup: {}; onload: {}; onloadeddata: {}; onloadedmetadata: {}; onloadstart: {}; onmousedown: {}; onmousemove: {}; onmouseout: {}; onmouseover: {}; onmouseup: {}; onmousewheel: {}; onmscontentzoom: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsinertiastart: {}; onmsmanipulationstatechanged: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; onmssitemodejumplistitemremoved: {}; onmsthumbnailclick: {}; onpause: {}; onplay: {}; onplaying: {}; onpointerlockchange: {}; onpointerlockerror: {}; onprogress: {}; onratechange: {}; onreadystatechange: {}; onreset: {}; onscroll: {}; onseeked: {}; onseeking: {}; onselect: {}; onselectionchange: {}; onselectstart: {}; onstalled: {}; onstop: {}; onsubmit: {}; onsuspend: {}; ontimeupdate: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onvolumechange: {}; onwaiting: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; plugins: {}; readonly pointerLockElement: {}; readonly readyState: {}; readonly referrer: {}; readonly rootElement: {}; scripts: {}; readonly scrollingElement: {}; readonly styleSheets: {}; title: {}; readonly URL: {}; readonly URLUnencoded: {}; readonly visibilityState: {}; vlinkColor: {}; readonly webkitCurrentFullScreenElement: {}; readonly webkitFullscreenElement: {}; readonly webkitFullscreenEnabled: {}; readonly webkitIsFullScreen: {}; readonly xmlEncoding: {}; xmlStandalone: {}; xmlVersion: {}; adoptNode: {}; captureEvents: {}; caretRangeFromPoint: {}; clear: {}; close: {}; createAttribute: {}; createAttributeNS: {}; createCDATASection: {}; createComment: {}; createDocumentFragment: {}; createElement: {}; createElementNS: {}; createExpression: {}; createNodeIterator: {}; createNSResolver: {}; createProcessingInstruction: {}; createRange: {}; createTextNode: {}; createTouch: {}; createTouchList: {}; createTreeWalker: {}; elementFromPoint: {}; evaluate: {}; execCommand: {}; execCommandShowHelp: {}; exitFullscreen: {}; exitPointerLock: {}; focus: {}; getElementById: {}; getElementsByClassName: {}; getElementsByName: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; getSelection: {}; hasFocus: {}; importNode: {}; msElementsFromPoint: {}; msElementsFromRect: {}; open: {}; queryCommandEnabled: {}; queryCommandIndeterm: {}; queryCommandState: {}; queryCommandSupported: {}; queryCommandText: {}; queryCommandValue: {}; releaseEvents: {}; updateSettings: {}; webkitCancelFullScreen: {}; webkitExitFullscreen: {}; write: {}; writeln: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; querySelector: {}; querySelectorAll: {}; createEvent: {}; readonly children: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly childElementCount: {}; readonly stylesheets: {}; elementsFromPoint: {}; } +>activeElement : { readonly classList: {}; className: {}; readonly clientHeight: {}; readonly clientLeft: {}; readonly clientTop: {}; readonly clientWidth: {}; id: {}; innerHTML: {}; msContentZoomFactor: {}; readonly msRegionOverflow: {}; onariarequest: {}; oncommand: {}; ongotpointercapture: {}; onlostpointercapture: {}; onmsgesturechange: {}; onmsgesturedoubletap: {}; onmsgestureend: {}; onmsgesturehold: {}; onmsgesturestart: {}; onmsgesturetap: {}; onmsgotpointercapture: {}; onmsinertiastart: {}; onmslostpointercapture: {}; onmspointercancel: {}; onmspointerdown: {}; onmspointerenter: {}; onmspointerleave: {}; onmspointermove: {}; onmspointerout: {}; onmspointerover: {}; onmspointerup: {}; ontouchcancel: {}; ontouchend: {}; ontouchmove: {}; ontouchstart: {}; onwebkitfullscreenchange: {}; onwebkitfullscreenerror: {}; outerHTML: {}; readonly prefix: {}; readonly scrollHeight: {}; scrollLeft: {}; scrollTop: {}; readonly scrollWidth: {}; readonly tagName: {}; readonly assignedSlot: {}; slot: {}; readonly shadowRoot: {}; getAttribute: {}; getAttributeNode: {}; getAttributeNodeNS: {}; getAttributeNS: {}; getBoundingClientRect: {}; getClientRects: {}; getElementsByTagName: {}; getElementsByTagNameNS: {}; hasAttribute: {}; hasAttributeNS: {}; msGetRegionContent: {}; msGetUntransformedBounds: {}; msMatchesSelector: {}; msReleasePointerCapture: {}; msSetPointerCapture: {}; msZoomTo: {}; releasePointerCapture: {}; removeAttribute: {}; removeAttributeNode: {}; removeAttributeNS: {}; requestFullscreen: {}; requestPointerLock: {}; setAttribute: {}; setAttributeNode: {}; setAttributeNodeNS: {}; setAttributeNS: {}; setPointerCapture: {}; webkitMatchesSelector: {}; webkitRequestFullscreen: {}; webkitRequestFullScreen: {}; getElementsByClassName: {}; matches: {}; closest: {}; scrollIntoView: {}; scroll: {}; scrollTo: {}; scrollBy: {}; insertAdjacentElement: {}; insertAdjacentHTML: {}; insertAdjacentText: {}; attachShadow: {}; addEventListener: {}; removeEventListener: {}; readonly attributes: {}; readonly baseURI: {}; readonly childNodes: {}; readonly firstChild: {}; readonly lastChild: {}; readonly localName: {}; readonly namespaceURI: {}; readonly nextSibling: {}; readonly nodeName: {}; readonly nodeType: {}; nodeValue: {}; readonly ownerDocument: {}; readonly parentElement: {}; readonly parentNode: {}; readonly previousSibling: {}; textContent: {}; appendChild: {}; cloneNode: {}; compareDocumentPosition: {}; contains: {}; hasAttributes: {}; hasChildNodes: {}; insertBefore: {}; isDefaultNamespace: {}; isEqualNode: {}; isSameNode: {}; lookupNamespaceURI: {}; lookupPrefix: {}; normalize: {}; removeChild: {}; replaceChild: {}; readonly ATTRIBUTE_NODE: {}; readonly CDATA_SECTION_NODE: {}; readonly COMMENT_NODE: {}; readonly DOCUMENT_FRAGMENT_NODE: {}; readonly DOCUMENT_NODE: {}; readonly DOCUMENT_POSITION_CONTAINED_BY: {}; readonly DOCUMENT_POSITION_CONTAINS: {}; readonly DOCUMENT_POSITION_DISCONNECTED: {}; readonly DOCUMENT_POSITION_FOLLOWING: {}; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {}; readonly DOCUMENT_POSITION_PRECEDING: {}; readonly DOCUMENT_TYPE_NODE: {}; readonly ELEMENT_NODE: {}; readonly ENTITY_NODE: {}; readonly ENTITY_REFERENCE_NODE: {}; readonly NOTATION_NODE: {}; readonly PROCESSING_INSTRUCTION_NODE: {}; readonly TEXT_NODE: {}; dispatchEvent: {}; onpointercancel: {}; onpointerdown: {}; onpointerenter: {}; onpointerleave: {}; onpointermove: {}; onpointerout: {}; onpointerover: {}; onpointerup: {}; onwheel: {}; readonly childElementCount: {}; readonly firstElementChild: {}; readonly lastElementChild: {}; readonly nextElementSibling: {}; readonly previousElementSibling: {}; querySelector: {}; querySelectorAll: {}; remove: {}; readonly children: {}; } +>className : { toString: {}; charAt: {}; charCodeAt: {}; concat: {}; indexOf: {}; lastIndexOf: {}; localeCompare: {}; match: {}; replace: {}; search: {}; slice: {}; split: {}; substring: {}; toLowerCase: {}; toLocaleLowerCase: {}; toUpperCase: {}; toLocaleUpperCase: {}; trim: {}; readonly length: {}; substr: {}; valueOf: {}; [Symbol.iterator]: {}; codePointAt: {}; includes: {}; endsWith: {}; normalize: {}; repeat: {}; startsWith: {}; anchor: {}; big: {}; blink: {}; bold: {}; fixed: {}; fontcolor: {}; fontsize: {}; italics: {}; link: {}; small: {}; strike: {}; sub: {}; sup: {}; } +>length : { toString: {}; toFixed: {}; toExponential: {}; toPrecision: {}; valueOf: {}; toLocaleString: {}; } + diff --git a/tests/baselines/reference/thisTypeInObjectLiterals2.types b/tests/baselines/reference/thisTypeInObjectLiterals2.types index 746ca0eb264..4a9ab16f9ea 100644 --- a/tests/baselines/reference/thisTypeInObjectLiterals2.types +++ b/tests/baselines/reference/thisTypeInObjectLiterals2.types @@ -672,8 +672,8 @@ p11.bar = p11.bar + 1; >1 : 1 let p12 = defineProps(p1, { ->p12 : Point & { foo: number; bar: number; } ->defineProps(p1, { foo: { value: 42 }, bar: { get(): number { return this.x; }, set(value: number) { this.x = value; } }}) : Point & { foo: number; bar: number; } +>p12 : Point & { foo: {}; bar: {}; } +>defineProps(p1, { foo: { value: 42 }, bar: { get(): number { return this.x; }, set(value: number) { this.x = value; } }}) : Point & { foo: {}; bar: {}; } >defineProps : (obj: T, descs: PropDescMap & ThisType) => T & U >p1 : Point >{ foo: { value: 42 }, bar: { get(): number { return this.x; }, set(value: number) { this.x = value; } }} : { foo: { value: number; }; bar: { get(): number; set(value: number): void; }; } @@ -716,22 +716,22 @@ let p12 = defineProps(p1, { p12.foo = p12.foo + 1; >p12.foo = p12.foo + 1 : number >p12.foo : number ->p12 : Point & { foo: number; bar: number; } +>p12 : Point & { foo: {}; bar: {}; } >foo : number >p12.foo + 1 : number >p12.foo : number ->p12 : Point & { foo: number; bar: number; } +>p12 : Point & { foo: {}; bar: {}; } >foo : number >1 : 1 p12.bar = p12.bar + 1; >p12.bar = p12.bar + 1 : number >p12.bar : number ->p12 : Point & { foo: number; bar: number; } +>p12 : Point & { foo: {}; bar: {}; } >bar : number >p12.bar + 1 : number >p12.bar : number ->p12 : Point & { foo: number; bar: number; } +>p12 : Point & { foo: {}; bar: {}; } >bar : number >1 : 1 @@ -808,8 +808,8 @@ declare const Vue: new (options: VueOptions) => D & M & P; >P : P let vue = new Vue({ ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } ->new Vue({ data: () => ({ x: 1, y: 2 }), methods: { f(x: string) { return this.x; } }, computed: { test(): number { return this.x; }, hello: { get() { return "hi"; }, set(value: string) { } } }}) : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } +>new Vue({ data: () => ({ x: 1, y: 2 }), methods: { f(x: string) { return this.x; } }, computed: { test(): number { return this.x; }, hello: { get() { return "hi"; }, set(value: string) { } } }}) : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } >Vue : new (options: VueOptions) => D & M & P >{ data: () => ({ x: 1, y: 2 }), methods: { f(x: string) { return this.x; } }, computed: { test(): number { return this.x; }, hello: { get() { return "hi"; }, set(value: string) { } } }} : { data: () => { x: number; y: number; }; methods: { f(x: string): number; }; computed: { test(): number; hello: { get(): string; set(value: string): void; }; }; } @@ -833,7 +833,7 @@ let vue = new Vue({ return this.x; >this.x : number ->this : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>this : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } >x : number } }, @@ -846,7 +846,7 @@ let vue = new Vue({ return this.x; >this.x : number ->this : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>this : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } >x : number }, @@ -870,27 +870,27 @@ let vue = new Vue({ }); vue; ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } vue.x; >vue.x : number ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } >x : number vue.f("abc"); >vue.f("abc") : number >vue.f : (x: string) => number ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } >f : (x: string) => number >"abc" : "abc" vue.test; >vue.test : number ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } >test : number vue.hello; >vue.hello : string ->vue : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } +>vue : { x: number; y: number; } & { f(x: string): number; } & { test: {}; hello: {}; } >hello : string diff --git a/tests/cases/compiler/mappedTypeRecursiveInference.ts b/tests/cases/compiler/mappedTypeRecursiveInference.ts index e264244095d..37b5b09d8a3 100644 --- a/tests/cases/compiler/mappedTypeRecursiveInference.ts +++ b/tests/cases/compiler/mappedTypeRecursiveInference.ts @@ -4,6 +4,11 @@ declare let a: A; type Deep = { [K in keyof T]: Deep } declare function foo(deep: Deep): T; const out = foo(a); +out.a +out.a.a +out.a.a.a.a.a.a.a let xhr: XMLHttpRequest; const out2 = foo(xhr); +out2.responseXML +out2.responseXML.activeElement.className.length From 423ab2e03dec6ede17beaa1aa02cb697d890fc88 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Thu, 14 Dec 2017 16:05:25 -0800 Subject: [PATCH 062/173] Removed colors devDependency (#20430) * Replaced colors with chalk * Used chalk's preferred import style --- package-lock.json | 421 +++++++++++------- package.json | 3 +- .../autolinkableStylishFormatter.ts | 6 +- 3 files changed, 266 insertions(+), 164 deletions(-) diff --git a/package-lock.json b/package-lock.json index eb1414c125a..2f651895c08 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,12 +35,6 @@ "through2": "2.0.3" } }, - "@types/arrify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/arrify/-/arrify-1.0.2.tgz", - "integrity": "sha512-gB1Oqypj/WbMjnWyCcvQdynRyfusKtqzUpt+EN/OtgFcjikC7ZV4qzS3SLbO1Ai2B0iVSgWvwR9A49lZGfivYg==", - "dev": true - }, "@types/browserify": { "version": "12.0.33", "resolved": "https://registry.npmjs.org/@types/browserify/-/browserify-12.0.33.tgz", @@ -48,7 +42,7 @@ "dev": true, "requires": { "@types/insert-module-globals": "7.0.0", - "@types/node": "8.0.58" + "@types/node": "8.0.54" } }, "@types/chai": { @@ -57,12 +51,6 @@ "integrity": "sha512-Ejh1AXTY8lm+x91X/yar3G2z4x9RyKwdTVdyyu7Xj3dNB35fMNCnEWqTO9FgS3zjzlRNqk1MruYhgb8yhRN9rA==", "dev": true }, - "@types/colors": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@types/colors/-/colors-1.1.3.tgz", - "integrity": "sha1-VBOwp6GxbdGL4OP9V9L+7Mgcx3Y=", - "dev": true - }, "@types/convert-source-map": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/@types/convert-source-map/-/convert-source-map-1.5.1.tgz", @@ -75,15 +63,9 @@ "integrity": "sha512-18mSs54BvzV8+TTQxt0ancig6tsuPZySnhp3cQkWFFDmDMavU4pmWwR+bHHqRBWODYqpzIzVkqKLuk/fP6yypQ==", "dev": true, "requires": { - "@types/glob": "5.0.34" + "@types/glob": "5.0.33" } }, - "@types/diff": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@types/diff/-/diff-3.2.2.tgz", - "integrity": "sha512-q3zfJvaTroV5BjAAR+peTHEGAAhGrPX0z2EzCzpt2mwFA+qzUn2nigJLqSekXRtdULKmT8am7zjvTMZSapIgHw==", - "dev": true - }, "@types/events": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@types/events/-/events-1.1.0.tgz", @@ -91,14 +73,13 @@ "dev": true }, "@types/glob": { - "version": "5.0.34", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.34.tgz", - "integrity": "sha512-sUvpieq+HsWTLdkeOI8Mi8u22Ag3AoGuM3sv+XMP1bKtbaIAHpEA2f52K2mz6vK5PVhTa3bFyRZLZMqTxOo2Cw==", + "version": "5.0.33", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.33.tgz", + "integrity": "sha512-BcD4yyWz+qmCggaYMSFF0Xn7GkO6tgwm3Fh9Gxk/kQmEU3Z7flQTnVlMyKBUNvXXNTCCyjqK4XT4/2hLd1gQ2A==", "dev": true, "requires": { - "@types/events": "1.1.0", "@types/minimatch": "3.0.1", - "@types/node": "8.0.58" + "@types/node": "8.0.54" } }, "@types/gulp": { @@ -107,7 +88,7 @@ "integrity": "sha512-h9clNJu8X6+zW74ZLa5zhh5HP0LxnvlelVXdXby6pM/DDEj/gKqmmFXKwjzvupZKlMpof02jr6c3JokPbHXQgg==", "dev": true, "requires": { - "@types/node": "8.0.58", + "@types/node": "8.0.54", "@types/orchestrator": "0.3.2", "@types/vinyl": "2.0.1" } @@ -118,7 +99,7 @@ "integrity": "sha512-CUCFADlITzzBfBa2bdGzhKtvBr4eFh+evb+4igVbvPoO5RyPfHifmyQlZl6lM7q19+OKncRlFXDU7B4X9Ayo2g==", "dev": true, "requires": { - "@types/node": "8.0.58" + "@types/node": "8.0.54" } }, "@types/gulp-help": { @@ -128,7 +109,7 @@ "dev": true, "requires": { "@types/gulp": "3.8.35", - "@types/node": "8.0.58", + "@types/node": "8.0.54", "@types/orchestrator": "0.3.2" } }, @@ -138,7 +119,7 @@ "integrity": "sha512-e7J/Zv5Wd7CC0WpuA2syWVitgwrkG0u221e41w7r07XUR6hMH6kHPkq9tUrusHkbeW8QbuLbis5fODOwQCyggQ==", "dev": true, "requires": { - "@types/node": "8.0.58" + "@types/node": "8.0.54" } }, "@types/gulp-sourcemaps": { @@ -147,7 +128,7 @@ "integrity": "sha512-+7BAmptW2bxyJnJcCEuie7vLoop3FwWgCdBMzyv7MYXED/HeNMeQuX7uPCkp4vfU1TTu4CYFH0IckNPvo0VePA==", "dev": true, "requires": { - "@types/node": "8.0.58" + "@types/node": "8.0.54" } }, "@types/insert-module-globals": { @@ -156,7 +137,7 @@ "integrity": "sha512-zudCJPwluh1VUDB6Gl/OQdRp+fYy3+47huJB/JMQubMS2p+sH18MCVK4WUz3FqaWLB12yh5ELxVR/+tqwlm/qA==", "dev": true, "requires": { - "@types/node": "8.0.58" + "@types/node": "8.0.54" } }, "@types/merge2": { @@ -165,7 +146,7 @@ "integrity": "sha512-GjaXY4OultxbaOOk7lCLO7xvEcFpdjExC605YmfI6X29vhHKpJfMWKCDZd3x+BITrZaXKg97DgV/SdGVSwdzxA==", "dev": true, "requires": { - "@types/node": "8.0.58" + "@types/node": "8.0.54" } }, "@types/minimatch": { @@ -186,7 +167,7 @@ "integrity": "sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==", "dev": true, "requires": { - "@types/node": "8.0.58" + "@types/node": "8.0.54" } }, "@types/mocha": { @@ -196,10 +177,13 @@ "dev": true }, "@types/node": { - "version": "8.0.58", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.58.tgz", - "integrity": "sha512-V746iUU7eHNdzQipoACuguDlVhC7IHK8CES1jSkuFt352wwA84BCWPXaGekBd7R5XdNK5ReHONDVKxlL9IreAw==", - "dev": true + "version": "8.0.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.54.tgz", + "integrity": "sha512-qetMdTv3Ytz9u9ESLdcYs45LPI0mczYZIbC184n7kY0jczOqPNQsabBfVCh+na3B2shAfvC459JqHV771A8Rxg==", + "dev": true, + "requires": { + "@types/events": "1.1.0" + } }, "@types/orchestrator": { "version": "0.3.2", @@ -207,7 +191,7 @@ "integrity": "sha512-cKB4yTX0wGaRCSkdHDX2fkGQbMAA8UOshC2U7DQky1CE5o+5q2iQQ8VkbPbE/88uaTtsusvBPMcCX7dgmjxBhQ==", "dev": true, "requires": { - "@types/node": "8.0.58", + "@types/node": "8.0.54", "@types/q": "1.0.6" } }, @@ -224,50 +208,25 @@ "dev": true, "requires": { "@types/gulp": "3.8.35", - "@types/node": "8.0.58" + "@types/node": "8.0.54" } }, - "@types/source-map-support": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@types/source-map-support/-/source-map-support-0.4.0.tgz", - "integrity": "sha512-9oVAi1Jlr274pbMGPEe0S3IPImV9knVNafa6E4MookD/fjOZAE6EmLkFX5ZjtZ9OXNPi2FCIZzUSMvwAUUKeSg==", - "dev": true, - "requires": { - "@types/node": "8.0.58" - } - }, - "@types/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=", - "dev": true - }, - "@types/strip-json-comments": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", - "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", - "dev": true - }, "@types/through2": { "version": "2.0.33", "resolved": "https://registry.npmjs.org/@types/through2/-/through2-2.0.33.tgz", "integrity": "sha1-H/LoihAN+1sUDnu5h5HxGUQA0TE=", "dev": true, "requires": { - "@types/node": "8.0.58" + "@types/node": "8.0.54" } }, - "@types/v8flags": { - "version": "github:types/npm-v8flags#de224ae1cd5fd7dbb4e7158a6cc7a29e5315930d", - "dev": true - }, "@types/vinyl": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.1.tgz", "integrity": "sha512-Joudabfn2ZofU2usW04y8OLmN75u7ZQkW0MCT3AnoBf5oUBp5iQ3Pgfz9+y1RdWkzhCPZo9/wBJ7FMWW2JrY0g==", "dev": true, "requires": { - "@types/node": "8.0.58" + "@types/node": "8.0.54" } }, "@types/xml2js": { @@ -276,12 +235,18 @@ "integrity": "sha512-8aKUBSj3oGcnuiBmDLm3BIk09RYg01mz9HlQ2u4aS17oJ25DxjQrEUVGFSBVNOfM45pQW4OjcBPplq6r/exJdA==", "dev": true, "requires": { - "@types/node": "8.0.58" + "@types/node": "8.0.54" } }, - "@types/yn": { - "version": "github:types/npm-yn#ca75f6c82940fae6a06fb41d2d37a6aa9b4ea8e9", - "dev": true + "JSONStream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", + "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", + "dev": true, + "requires": { + "jsonparse": "1.3.1", + "through": "2.3.8" + } }, "abbrev": { "version": "1.0.9", @@ -312,15 +277,6 @@ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -328,16 +284,13 @@ "dev": true }, "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "dev": true + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } }, "archy": { "version": "1.0.0", @@ -494,6 +447,33 @@ "chalk": "1.1.3", "esutils": "2.0.2", "js-tokens": "3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } } }, "balanced-match": { @@ -553,9 +533,9 @@ "integrity": "sha1-+GzWzvT1MAyOY+B6TVEvZfv/RTE=", "dev": true, "requires": { + "JSONStream": "1.3.1", "combine-source-map": "0.7.2", "defined": "1.0.0", - "JSONStream": "1.3.1", "through2": "2.0.3", "umd": "3.0.1" } @@ -581,6 +561,7 @@ "integrity": "sha512-gKfOsNQv/toWz+60nSPfYzuwSEdzvV2WdxrVPUbPD/qui44rAkB3t3muNtmmGYHqrG56FGwX9SUEQmzNLAeS7g==", "dev": true, "requires": { + "JSONStream": "1.3.1", "assert": "1.4.1", "browser-pack": "6.0.2", "browser-resolve": "1.11.2", @@ -602,7 +583,6 @@ "https-browserify": "1.0.0", "inherits": "2.0.3", "insert-module-globals": "7.0.1", - "JSONStream": "1.3.1", "labeled-stream-splicer": "2.0.0", "module-deps": "4.1.1", "os-browserify": "0.3.0", @@ -782,16 +762,14 @@ } }, "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { - "ansi-styles": "2.2.1", + "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "supports-color": "4.5.0" } }, "check-error": { @@ -875,12 +853,6 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, "combine-source-map": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.7.2.tgz", @@ -1100,9 +1072,9 @@ } }, "debug-fabulous": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.0.0.tgz", - "integrity": "sha512-dsd50qQ1atDeurcxL7XOjPp4nZCGZzWIONDujDXzl1atSyC3hMbZD+v6440etw+Vt0Pr8ce4TQzHfX3KZM05Mw==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-0.2.1.tgz", + "integrity": "sha512-u0TV6HcfLsZ03xLBhdhSViQMldaiQ2o+8/nSILaXkuNSWvxkx66vYJUAam0Eu7gAilJRX/69J4kKdqajQPaPyw==", "dev": true, "requires": { "debug": "3.1.0", @@ -1496,13 +1468,40 @@ } }, "fancy-log": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.1.tgz", - "integrity": "sha1-xKNGK6FK3137q3lzH9OESiBpy7s=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", + "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", "dev": true, "requires": { - "ansi-gray": "0.1.1", + "chalk": "1.1.3", "time-stamp": "1.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } } }, "fast-levenshtein": { @@ -1892,7 +1891,7 @@ "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", "dev": true, "requires": { - "natives": "1.1.1" + "natives": "1.1.0" } }, "growl": { @@ -1920,6 +1919,33 @@ "tildify": "1.2.0", "v8flags": "2.1.1", "vinyl-fs": "0.3.14" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } } }, "gulp-clone": { @@ -2161,11 +2187,36 @@ "object-assign": "3.0.0" }, "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, "object-assign": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, @@ -2227,7 +2278,7 @@ "acorn": "4.0.13", "convert-source-map": "1.5.1", "css": "2.2.1", - "debug-fabulous": "1.0.0", + "debug-fabulous": "0.2.1", "detect-newline": "2.1.0", "graceful-fs": "4.1.11", "source-map": "0.5.7", @@ -2463,7 +2514,7 @@ "beeper": "1.1.1", "chalk": "1.1.3", "dateformat": "2.2.0", - "fancy-log": "1.3.1", + "fancy-log": "1.3.0", "gulplog": "1.0.0", "has-gulplog": "0.1.0", "lodash._reescape": "3.0.0", @@ -2478,12 +2529,37 @@ "vinyl": "0.5.3" }, "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, "object-assign": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", "dev": true }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, "vinyl": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", @@ -2689,10 +2765,10 @@ "integrity": "sha1-wDv04BywhtW15azorQr+eInWOMM=", "dev": true, "requires": { + "JSONStream": "1.3.1", "combine-source-map": "0.7.2", "concat-stream": "1.5.2", "is-buffer": "1.1.6", - "JSONStream": "1.3.1", "lexical-scope": "1.2.0", "process": "0.11.10", "through2": "2.0.3", @@ -3047,16 +3123,6 @@ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true }, - "JSONStream": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", - "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", - "dev": true, - "requires": { - "jsonparse": "1.3.1", - "through": "2.3.8" - } - }, "kew": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", @@ -3695,6 +3761,7 @@ "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=", "dev": true, "requires": { + "JSONStream": "1.3.1", "browser-resolve": "1.11.2", "cached-path-relative": "1.0.1", "concat-stream": "1.5.2", @@ -3702,7 +3769,6 @@ "detective": "4.7.0", "duplexer2": "0.1.4", "inherits": "2.0.3", - "JSONStream": "1.3.1", "parents": "1.0.1", "readable-stream": "2.3.3", "resolve": "1.1.7", @@ -3763,9 +3829,9 @@ } }, "natives": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.1.tgz", - "integrity": "sha512-8eRaxn8u/4wN8tGkhlc2cgwwvOLMLUMUn4IYTexMgWd+LyUDfeXVkk2ygQR0hvIHbJQXgHujia3ieUUDwNGkEA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz", + "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=", "dev": true }, "next-tick": { @@ -4443,6 +4509,33 @@ "requires": { "chalk": "1.1.3", "gulp-util": "3.0.8" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } } }, "safe-buffer": { @@ -4798,10 +4891,21 @@ } }, "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + } + } }, "syntax-error": { "version": "1.3.0", @@ -4900,27 +5004,19 @@ "dev": true }, "ts-node": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-4.0.1.tgz", - "integrity": "sha512-F9AHAfL7QO+W8QPnEY4dzjCV2RPDK76mzYkQVB/7BuGOJWFxJgGezdyvCdtfVtE1QOOen3DnJONsenzIqIKqYQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-3.3.0.tgz", + "integrity": "sha1-wTxqMCTjC+EYDdUwOPwgkonUv2k=", "dev": true, "requires": { - "@types/arrify": "1.0.2", - "@types/diff": "3.2.2", - "@types/minimist": "1.2.0", - "@types/mkdirp": "0.5.2", - "@types/node": "8.0.58", - "@types/source-map-support": "0.4.0", - "@types/v8flags": "github:types/npm-v8flags#de224ae1cd5fd7dbb4e7158a6cc7a29e5315930d", - "@types/yn": "github:types/npm-yn#ca75f6c82940fae6a06fb41d2d37a6aa9b4ea8e9", "arrify": "1.0.1", "chalk": "2.3.0", "diff": "3.3.1", "make-error": "1.3.0", "minimist": "1.2.0", "mkdirp": "0.5.1", - "source-map-support": "0.5.0", - "tsconfig": "7.0.0", + "source-map-support": "0.4.18", + "tsconfig": "6.0.0", "v8flags": "3.0.1", "yn": "2.0.0" }, @@ -4951,6 +5047,15 @@ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, "supports-color": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", @@ -4972,13 +5077,11 @@ } }, "tsconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", - "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-6.0.0.tgz", + "integrity": "sha1-aw6DdgA9evGGT434+J3QBZ/80DI=", "dev": true, "requires": { - "@types/strip-bom": "3.0.0", - "@types/strip-json-comments": "0.0.30", "strip-bom": "3.0.0", "strip-json-comments": "2.0.1" }, @@ -4992,9 +5095,9 @@ } }, "tslib": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.8.1.tgz", - "integrity": "sha1-aUavLR1lGnsYY7Ux1uWvpBqkTqw=", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.8.0.tgz", + "integrity": "sha512-ymKWWZJST0/CkgduC2qkzjMOWr4bouhuURNXCn/inEX0L57BnRG6FhX76o7FOnsjHazCjfU2LKeSrlS2sIKQJg==", "dev": true }, "tslint": { @@ -5012,7 +5115,7 @@ "minimatch": "3.0.4", "resolve": "1.5.0", "semver": "5.4.1", - "tslib": "1.8.1", + "tslib": "1.8.0", "tsutils": "2.13.0" }, "dependencies": { @@ -5074,7 +5177,7 @@ "integrity": "sha512-FuWzNJbMsp3gcZMbI3b5DomhW4Ia41vMxjN63nKWI0t7f+I3UmHfRl0TrXJTwI2LUduDG+eR1Mksp3pvtlyCFQ==", "dev": true, "requires": { - "tslib": "1.8.1" + "tslib": "1.8.0" } }, "tty-browserify": { @@ -5105,9 +5208,9 @@ "dev": true }, "typescript": { - "version": "2.7.0-dev.20171212", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.0-dev.20171212.tgz", - "integrity": "sha512-D9eP7T4QjfsoFNi35iOYTgLgwQE+OrVkWFQ2p+MbgKd0W2Qupqe6COyyQPoUeXvOrB5rbaIkeomh+VFMOPjtKg==", + "version": "2.7.0-dev.20171209", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.0-dev.20171209.tgz", + "integrity": "sha512-4ETBmIehQBmJOVwb/awg+EHMjpq3esymYD+tKRvxHv3cW+1s9+t8kdozn3/Fk50vAH13YtOHxuOcvU7OXrdG5Q==", "dev": true }, "uglify-js": { diff --git a/package.json b/package.json index e329db05d85..c87650afa8c 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,6 @@ "devDependencies": { "@types/browserify": "latest", "@types/chai": "latest", - "@types/colors": "latest", "@types/convert-source-map": "latest", "@types/del": "latest", "@types/glob": "latest", @@ -80,7 +79,7 @@ "ts-node": "latest", "tslint": "latest", "vinyl": "latest", - "colors": "latest", + "chalk": "latest", "typescript": "next" }, "scripts": { diff --git a/scripts/tslint/formatters/autolinkableStylishFormatter.ts b/scripts/tslint/formatters/autolinkableStylishFormatter.ts index 6a02ec24f05..23e01bc8587 100644 --- a/scripts/tslint/formatters/autolinkableStylishFormatter.ts +++ b/scripts/tslint/formatters/autolinkableStylishFormatter.ts @@ -1,5 +1,5 @@ import * as Lint from "tslint"; -import * as colors from "colors"; +import chalk from "chalk"; import { sep } from "path"; function groupBy(array: ReadonlyArray | undefined, getGroupId: (elem: T, index: number) => number | string): T[][] { if (!array) { @@ -52,7 +52,7 @@ function getLink(failure: Lint.RuleFailure, color: boolean): string { if (path.indexOf("/") === -1 && path.indexOf("\\") === -1) { path = `.${sep}${path}`; } - return `${color ? (sev === "WARNING" ? colors.blue(sev) : colors.red(sev)) : sev}: ${path}:${lineAndCharacter.line + 1}:${lineAndCharacter.character + 1}`; + return `${color ? (sev === "WARNING" ? chalk.blue(sev) : chalk.red(sev)) : sev}: ${path}:${lineAndCharacter.line + 1}:${lineAndCharacter.character + 1}`; } function getLinkMaxSize(failures: Lint.RuleFailure[]): number { @@ -91,7 +91,7 @@ export class Formatter extends Lint.Formatters.AbstractFormatter { const nameMaxSize = getNameMaxSize(group); return ` ${currentFile} -${group.map(f => `${pad(getLink(f, /*color*/ true), getLink(f, /*color*/ false).length, linkMaxSize)} ${colors.grey(pad(f.getRuleName(), f.getRuleName().length, nameMaxSize))} ${colors.yellow(f.getFailure())}`).join("\n")}`; +${group.map(f => `${pad(getLink(f, /*color*/ true), getLink(f, /*color*/ false).length, linkMaxSize)} ${chalk.grey(pad(f.getRuleName(), f.getRuleName().length, nameMaxSize))} ${chalk.yellow(f.getFailure())}`).join("\n")}`; }).join("\n"); } } \ No newline at end of file From 8b0988543b9217a46fc06b2b35858f6ea6dbfb3a Mon Sep 17 00:00:00 2001 From: Andrew Casey Date: Thu, 14 Dec 2017 16:40:42 -0800 Subject: [PATCH 063/173] Stop assuming code fix test changes are in the originating file Triggering a fix in one file can result in changes in another file. Instead of passing around the originating file, retrieve an appropriate `ScriptInfo` for each `FileTextChanges`. Fixes #19165 --- src/server/session.ts | 8 ++++---- tests/baselines/reference/api/tsserverlibrary.d.ts | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/server/session.ts b/src/server/session.ts index 17c5777132f..9dcf58734a7 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -1230,7 +1230,7 @@ namespace ts.server { return project.getLanguageService().getCompletionEntryDetails(file, position, name, formattingOptions, source); }); return simplifiedResult - ? result.map(details => ({ ...details, codeActions: map(details.codeActions, action => this.mapCodeAction(action, scriptInfo)) })) + ? result.map(details => ({ ...details, codeActions: map(details.codeActions, action => this.mapCodeAction(project, action)) })) : result; } @@ -1560,7 +1560,7 @@ namespace ts.server { return undefined; } if (simplifiedResult) { - return codeActions.map(codeAction => this.mapCodeAction(codeAction, scriptInfo)); + return codeActions.map(codeAction => this.mapCodeAction(project, codeAction)); } else { return codeActions; @@ -1613,8 +1613,8 @@ namespace ts.server { return { startPosition, endPosition }; } - private mapCodeAction({ description, changes: unmappedChanges, commands }: CodeAction, scriptInfo: ScriptInfo): protocol.CodeAction { - const changes = unmappedChanges.map(change => this.mapTextChangesToCodeEditsUsingScriptinfo(change, scriptInfo)); + private mapCodeAction(project: Project, { description, changes: unmappedChanges, commands }: CodeAction): protocol.CodeAction { + const changes = unmappedChanges.map(change => this.mapTextChangesToCodeEditsUsingScriptinfo(change, project.getScriptInfoForNormalizedPath(toNormalizedPath(change.fileName)))); return { description, changes, commands }; } diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 464e70671f4..a22a2878638 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -7092,7 +7092,7 @@ declare namespace ts.server { private getCombinedCodeFix({scope, fixId}, simplifiedResult); private applyCodeActionCommand(args); private getStartAndEndPosition(args, scriptInfo); - private mapCodeAction({description, changes: unmappedChanges, commands}, scriptInfo); + private mapCodeAction(project, {description, changes: unmappedChanges, commands}); private mapTextChangesToCodeEdits(project, textChanges); private mapTextChangesToCodeEditsUsingScriptinfo(textChanges, scriptInfo); private convertTextChangeToCodeEdit(change, scriptInfo); From ed4bd2e5ab15a7c63a185ff822455f4323fa864d Mon Sep 17 00:00:00 2001 From: csigs Date: Fri, 15 Dec 2017 11:10:31 +0000 Subject: [PATCH 064/173] LEGO: check in for master to temporary branch. --- .../diagnosticMessages.generated.json.lcl | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/loc/lcl/jpn/diagnosticMessages/diagnosticMessages.generated.json.lcl b/src/loc/lcl/jpn/diagnosticMessages/diagnosticMessages.generated.json.lcl index 59baa069721..9d34467e790 100644 --- a/src/loc/lcl/jpn/diagnosticMessages/diagnosticMessages.generated.json.lcl +++ b/src/loc/lcl/jpn/diagnosticMessages/diagnosticMessages.generated.json.lcl @@ -3456,15 +3456,6 @@ - - - - - - - - - @@ -4755,6 +4746,9 @@ + + + @@ -4851,6 +4845,9 @@ + + + From d89d68f426a9381eb947c04063510c0c31d13416 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Fri, 15 Dec 2017 10:02:56 -0800 Subject: [PATCH 065/173] make jsx attributes mutable locations (#20710) --- src/compiler/checker.ts | 10 ++- .../checkJsxChildrenProperty14.errors.txt | 8 +-- .../checkJsxChildrenProperty2.errors.txt | 44 ++++++------ .../checkJsxChildrenProperty5.errors.txt | 28 ++++---- .../checkJsxChildrenProperty7.errors.txt | 24 +++---- .../reference/tsxAttributeErrors.errors.txt | 16 ++--- .../tsxAttributeResolution1.errors.txt | 36 +++++----- .../tsxAttributeResolution10.errors.txt | 8 +-- .../tsxAttributeResolution11.errors.txt | 4 +- .../tsxAttributeResolution14.errors.txt | 16 ++--- .../tsxAttributeResolution15.errors.txt | 4 +- .../tsxAttributeResolution6.errors.txt | 8 +-- .../tsxAttributeResolution7.errors.txt | 8 +-- .../tsxAttributeResolution9.errors.txt | 8 +-- .../tsxElementResolution11.errors.txt | 4 +- .../tsxElementResolution12.errors.txt | 8 +-- .../tsxElementResolution3.errors.txt | 8 +-- .../tsxElementResolution4.errors.txt | 8 +-- ...sxInferenceShouldNotYieldAnyOnUnions.types | 16 ++--- ...ponentWithDefaultTypeParameter2.errors.txt | 12 ++-- ...ponentWithDefaultTypeParameter3.errors.txt | 8 +-- ...tsxSpreadAttributesResolution10.errors.txt | 12 ++-- ...tsxSpreadAttributesResolution12.errors.txt | 24 +++---- .../tsxSpreadAttributesResolution2.errors.txt | 8 +-- .../tsxSpreadAttributesResolution6.errors.txt | 16 ++--- ...elessFunctionComponentOverload4.errors.txt | 72 +++++++++---------- ...elessFunctionComponentOverload5.errors.txt | 36 +++++----- ...ponentWithDefaultTypeParameter2.errors.txt | 12 ++-- ...tsxStatelessFunctionComponents1.errors.txt | 28 ++++---- ...tsxStatelessFunctionComponents2.errors.txt | 4 +- ...ionComponentsWithTypeArguments2.errors.txt | 12 ++-- .../reference/tsxUnionElementType2.errors.txt | 16 ++--- .../reference/tsxUnionElementType4.errors.txt | 4 +- .../reference/tsxUnionElementType6.errors.txt | 12 ++-- tests/cases/fourslash/tsxQuickInfo6.ts | 2 +- 35 files changed, 274 insertions(+), 270 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index c1b57e5def7..ca73d92e0c0 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -14802,6 +14802,12 @@ namespace ts { } } + function checkJsxAttribute(node: JsxAttribute, checkMode?: CheckMode) { + return node.initializer + ? checkExpressionForMutableLocation(node.initializer, checkMode) + : trueType; // is sugar for + } + /** * Get attributes type of the JSX opening-like element. The result is from resolving "attributes" property of the opening-like element. * @@ -14824,9 +14830,7 @@ namespace ts { for (const attributeDecl of attributes.properties) { const member = attributeDecl.symbol; if (isJsxAttribute(attributeDecl)) { - const exprType = attributeDecl.initializer ? - checkExpression(attributeDecl.initializer, checkMode) : - trueType; // is sugar for + const exprType = checkJsxAttribute(attributeDecl, checkMode); const attributeSymbol = createSymbol(SymbolFlags.Property | SymbolFlags.Transient | member.flags, member.escapedName); attributeSymbol.declarations = member.declarations; diff --git a/tests/baselines/reference/checkJsxChildrenProperty14.errors.txt b/tests/baselines/reference/checkJsxChildrenProperty14.errors.txt index ecae349e19e..ca12d59c2fd 100644 --- a/tests/baselines/reference/checkJsxChildrenProperty14.errors.txt +++ b/tests/baselines/reference/checkJsxChildrenProperty14.errors.txt @@ -1,5 +1,5 @@ -tests/cases/conformance/jsx/file.tsx(42,27): error TS2322: Type '{ a: 10; b: "hi"; children: Element[]; }' is not assignable to type 'IntrinsicAttributes & SingleChildProp'. - Type '{ a: 10; b: "hi"; children: Element[]; }' is not assignable to type 'SingleChildProp'. +tests/cases/conformance/jsx/file.tsx(42,27): error TS2322: Type '{ a: number; b: string; children: Element[]; }' is not assignable to type 'IntrinsicAttributes & SingleChildProp'. + Type '{ a: number; b: string; children: Element[]; }' is not assignable to type 'SingleChildProp'. Types of property 'children' are incompatible. Type 'Element[]' is not assignable to type 'Element'. Property 'type' is missing in type 'Element[]'. @@ -49,8 +49,8 @@ tests/cases/conformance/jsx/file.tsx(42,27): error TS2322: Type '{ a: 10; b: "hi // Error let k5 = <>