@angular/compiler-cli 12.1.0-next.3 → 12.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/linker/src/file_linker/partial_linkers/partial_component_linker_1.js +2 -3
- package/linker/src/file_linker/partial_linkers/partial_linker_selector.js +2 -2
- package/linker/src/file_linker/partial_linkers/partial_linker_selector.mjs +2 -2
- package/ngcc/src/host/delegating_host.d.ts +1 -0
- package/ngcc/src/host/delegating_host.js +4 -1
- package/ngcc/src/host/delegating_host.mjs +4 -1
- package/ngcc/src/host/esm2015_host.js +7 -5
- package/ngcc/src/host/esm2015_host.mjs +6 -4
- package/ngcc/src/host/esm5_host.js +1 -1
- package/ngcc/src/host/esm5_host.mjs +3 -3
- package/ngcc/src/host/ngcc_host.d.ts +3 -2
- package/ngcc/src/host/ngcc_host.js +1 -1
- package/ngcc/src/host/ngcc_host.mjs +1 -1
- package/ngcc/src/host/umd_host.js +2 -2
- package/ngcc/src/host/umd_host.mjs +2 -2
- package/ngcc/src/packages/build_marker.d.ts +1 -1
- package/ngcc/src/packages/build_marker.js +1 -1
- package/ngcc/src/packages/build_marker.mjs +1 -1
- package/ngcc/src/packages/configuration.d.ts +7 -0
- package/ngcc/src/packages/configuration.js +8 -3
- package/ngcc/src/packages/configuration.mjs +8 -3
- package/ngcc/src/packages/entry_point_manifest.js +2 -2
- package/ngcc/src/packages/entry_point_manifest.mjs +2 -2
- package/package.json +4 -4
- package/src/ngtsc/annotations/src/component.d.ts +2 -0
- package/src/ngtsc/annotations/src/component.js +47 -11
- package/src/ngtsc/annotations/src/component.mjs +47 -11
- package/src/ngtsc/core/api/src/public_options.d.ts +12 -0
- package/src/ngtsc/core/api/src/public_options.js +1 -1
- package/src/ngtsc/core/api/src/public_options.mjs +1 -1
- package/src/ngtsc/core/index.js +1 -1
- package/src/ngtsc/core/index.mjs +1 -1
- package/src/ngtsc/core/src/compiler.d.ts +5 -1
- package/src/ngtsc/core/src/compiler.js +11 -17
- package/src/ngtsc/core/src/compiler.mjs +10 -15
- package/src/ngtsc/cycles/src/imports.js +7 -1
- package/src/ngtsc/cycles/src/imports.mjs +7 -1
- package/src/ngtsc/diagnostics/src/error_code.d.ts +5 -0
- package/src/ngtsc/diagnostics/src/error_code.js +7 -1
- package/src/ngtsc/diagnostics/src/error_code.mjs +7 -1
- package/src/ngtsc/imports/src/find_export.js +4 -1
- package/src/ngtsc/imports/src/find_export.mjs +4 -1
- package/src/ngtsc/incremental/src/incremental.js +7 -3
- package/src/ngtsc/incremental/src/incremental.mjs +7 -3
- package/src/ngtsc/incremental/src/state.d.ts +5 -3
- package/src/ngtsc/incremental/src/state.js +1 -1
- package/src/ngtsc/incremental/src/state.mjs +1 -1
- package/src/ngtsc/metadata/src/dts.js +2 -3
- package/src/ngtsc/metadata/src/inheritance.js +2 -7
- package/src/ngtsc/program.d.ts +1 -0
- package/src/ngtsc/program.js +26 -2
- package/src/ngtsc/program.mjs +26 -2
- package/src/ngtsc/reflection/src/host.d.ts +9 -0
- package/src/ngtsc/reflection/src/host.js +1 -1
- package/src/ngtsc/reflection/src/host.mjs +1 -1
- package/src/ngtsc/reflection/src/typescript.d.ts +5 -0
- package/src/ngtsc/reflection/src/typescript.js +72 -2
- package/src/ngtsc/reflection/src/typescript.mjs +72 -2
- package/src/ngtsc/scope/index.js +1 -1
- package/src/ngtsc/scope/index.mjs +1 -1
- package/src/ngtsc/scope/src/api.js +1 -1
- package/src/ngtsc/scope/src/api.mjs +1 -1
- package/src/ngtsc/scope/src/dependency.js +4 -1
- package/src/ngtsc/scope/src/dependency.mjs +4 -1
- package/src/ngtsc/transform/index.d.ts +1 -1
- package/src/ngtsc/transform/index.js +2 -3
- package/src/ngtsc/transform/index.mjs +2 -2
- package/src/ngtsc/transform/src/api.d.ts +6 -0
- package/src/ngtsc/transform/src/api.js +1 -1
- package/src/ngtsc/transform/src/api.mjs +1 -1
- package/src/ngtsc/transform/src/compilation.d.ts +3 -0
- package/src/ngtsc/transform/src/compilation.js +125 -54
- package/src/ngtsc/transform/src/compilation.mjs +32 -3
- package/src/ngtsc/transform/src/declaration.d.ts +0 -8
- package/src/ngtsc/transform/src/declaration.js +2 -53
- package/src/ngtsc/transform/src/declaration.mjs +1 -50
- package/src/ngtsc/translator/src/typescript_ast_factory.d.ts +1 -1
- package/src/ngtsc/typecheck/api/scope.d.ts +2 -1
- package/src/ngtsc/typecheck/api/scope.js +1 -1
- package/src/ngtsc/typecheck/api/scope.mjs +1 -1
- package/src/ngtsc/typecheck/api/symbols.d.ts +2 -1
- package/src/ngtsc/typecheck/api/symbols.js +1 -1
- package/src/ngtsc/typecheck/api/symbols.mjs +1 -1
- package/src/ngtsc/typecheck/src/checker.js +2 -2
- package/src/ngtsc/typecheck/src/checker.mjs +3 -3
- package/src/ngtsc/typecheck/src/expression.js +32 -4
- package/src/ngtsc/typecheck/src/expression.mjs +33 -5
- package/src/ngtsc/typecheck/src/template_symbol_builder.js +24 -10
- package/src/ngtsc/typecheck/src/template_symbol_builder.mjs +25 -10
- package/src/ngtsc/typecheck/src/type_emitter.d.ts +2 -1
- package/src/ngtsc/typecheck/src/type_emitter.js +35 -48
- package/src/ngtsc/typecheck/src/type_emitter.mjs +35 -48
- package/src/ngtsc/typecheck/src/type_parameter_emitter.d.ts +2 -0
- package/src/ngtsc/typecheck/src/type_parameter_emitter.js +21 -7
- package/src/ngtsc/typecheck/src/type_parameter_emitter.mjs +19 -6
- package/src/ngtsc/util/src/typescript.d.ts +8 -0
- package/src/ngtsc/util/src/typescript.js +10 -2
- package/src/ngtsc/util/src/typescript.mjs +8 -1
- package/src/ngtsc/{modulewithproviders → xi18n}/index.d.ts +2 -2
- package/src/ngtsc/{modulewithproviders → xi18n}/index.js +3 -3
- package/src/ngtsc/xi18n/index.mjs +9 -0
- package/src/ngtsc/xi18n/src/context.d.ts +26 -0
- package/src/ngtsc/xi18n/src/context.js +20 -0
- package/src/ngtsc/xi18n/src/context.mjs +9 -0
- package/src/ngtsc/{modulewithproviders/modulewithproviders.externs.js → xi18n/xi18n.externs.js} +0 -0
- package/src/transformers/api.d.ts +0 -3
- package/src/transformers/api.js +1 -1
- package/src/transformers/api.mjs +1 -1
- package/src/transformers/i18n.d.ts +14 -0
- package/src/transformers/i18n.js +76 -0
- package/src/transformers/i18n.mjs +59 -0
- package/src/transformers/program.d.ts +0 -4
- package/src/transformers/program.js +5 -56
- package/src/transformers/program.mjs +3 -51
- package/src/typescript_support.js +2 -2
- package/src/typescript_support.mjs +2 -2
- package/src/version.js +1 -1
- package/src/version.mjs +1 -1
- package/src/ngtsc/modulewithproviders/index.mjs +0 -9
- package/src/ngtsc/modulewithproviders/src/scanner.d.ts +0 -26
- package/src/ngtsc/modulewithproviders/src/scanner.js +0 -180
- package/src/ngtsc/modulewithproviders/src/scanner.mjs +0 -142
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import * as ts from 'typescript';
|
|
9
9
|
import { Reference } from '../../imports';
|
|
10
|
+
const INELIGIBLE = {};
|
|
10
11
|
/**
|
|
11
12
|
* Determines whether the provided type can be emitted, which means that it can be safely emitted
|
|
12
13
|
* into a different location.
|
|
@@ -18,13 +19,24 @@ import { Reference } from '../../imports';
|
|
|
18
19
|
export function canEmitType(type, resolver) {
|
|
19
20
|
return canEmitTypeWorker(type);
|
|
20
21
|
function canEmitTypeWorker(type) {
|
|
21
|
-
return
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
return visitNode(type) !== INELIGIBLE;
|
|
23
|
+
}
|
|
24
|
+
// To determine whether a type can be emitted, we have to recursively look through all type nodes.
|
|
25
|
+
// If a type reference node is found at any position within the type and that type reference
|
|
26
|
+
// cannot be emitted, then the `INELIGIBLE` constant is returned to stop the recursive walk as
|
|
27
|
+
// the type as a whole cannot be emitted in that case. Otherwise, the result of visiting all child
|
|
28
|
+
// nodes determines the result. If no ineligible type reference node is found then the walk
|
|
29
|
+
// returns `undefined`, indicating that no type node was visited that could not be emitted.
|
|
30
|
+
function visitNode(node) {
|
|
31
|
+
// Emitting a type reference node in a different context requires that an import for the type
|
|
32
|
+
// can be created. If a type reference node cannot be emitted, `INELIGIBLE` is returned to stop
|
|
33
|
+
// the walk.
|
|
34
|
+
if (ts.isTypeReferenceNode(node) && !canEmitTypeReference(node)) {
|
|
35
|
+
return INELIGIBLE;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
return ts.forEachChild(node, visitNode);
|
|
39
|
+
}
|
|
28
40
|
}
|
|
29
41
|
function canEmitTypeReference(type) {
|
|
30
42
|
const reference = resolver(type);
|
|
@@ -32,10 +44,9 @@ export function canEmitType(type, resolver) {
|
|
|
32
44
|
if (reference === null) {
|
|
33
45
|
return false;
|
|
34
46
|
}
|
|
35
|
-
// If the type is a reference
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return false;
|
|
47
|
+
// If the type is a reference, consider the type to be eligible for emitting.
|
|
48
|
+
if (reference instanceof Reference) {
|
|
49
|
+
return true;
|
|
39
50
|
}
|
|
40
51
|
// The type can be emitted if either it does not have any type arguments, or all of them can be
|
|
41
52
|
// emitted.
|
|
@@ -77,15 +88,18 @@ export class TypeEmitter {
|
|
|
77
88
|
this.emitReference = emitReference;
|
|
78
89
|
}
|
|
79
90
|
emitType(type) {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
91
|
+
const typeReferenceTransformer = context => {
|
|
92
|
+
const visitNode = (node) => {
|
|
93
|
+
if (ts.isTypeReferenceNode(node)) {
|
|
94
|
+
return this.emitTypeReference(node);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
return ts.visitEachChild(node, visitNode, context);
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
return node => ts.visitNode(node, visitNode);
|
|
101
|
+
};
|
|
102
|
+
return ts.transform(type, [typeReferenceTransformer]).transformed[0];
|
|
89
103
|
}
|
|
90
104
|
emitTypeReference(type) {
|
|
91
105
|
// Determine the reference that the type corresponds with.
|
|
@@ -101,9 +115,6 @@ export class TypeEmitter {
|
|
|
101
115
|
// Emit the type name.
|
|
102
116
|
let typeName = type.typeName;
|
|
103
117
|
if (reference instanceof Reference) {
|
|
104
|
-
if (!reference.hasOwningModuleGuess) {
|
|
105
|
-
throw new Error('A type reference to emit must be imported from an absolute module');
|
|
106
|
-
}
|
|
107
118
|
const emittedType = this.emitReference(reference);
|
|
108
119
|
if (!ts.isTypeReferenceNode(emittedType)) {
|
|
109
120
|
throw new Error(`Expected TypeReferenceNode for emitted reference, got ${ts.SyntaxKind[emittedType.kind]}`);
|
|
@@ -113,28 +124,4 @@ export class TypeEmitter {
|
|
|
113
124
|
return ts.updateTypeReferenceNode(type, typeName, typeArguments);
|
|
114
125
|
}
|
|
115
126
|
}
|
|
116
|
-
function visitTypeNode(type, visitor) {
|
|
117
|
-
if (ts.isTypeReferenceNode(type)) {
|
|
118
|
-
return visitor.visitTypeReferenceNode(type);
|
|
119
|
-
}
|
|
120
|
-
else if (ts.isArrayTypeNode(type)) {
|
|
121
|
-
return visitor.visitArrayTypeNode(type);
|
|
122
|
-
}
|
|
123
|
-
else if (ts.isLiteralTypeNode(type)) {
|
|
124
|
-
return visitor.visitLiteralType(type);
|
|
125
|
-
}
|
|
126
|
-
switch (type.kind) {
|
|
127
|
-
case ts.SyntaxKind.AnyKeyword:
|
|
128
|
-
case ts.SyntaxKind.UnknownKeyword:
|
|
129
|
-
case ts.SyntaxKind.NumberKeyword:
|
|
130
|
-
case ts.SyntaxKind.ObjectKeyword:
|
|
131
|
-
case ts.SyntaxKind.BooleanKeyword:
|
|
132
|
-
case ts.SyntaxKind.StringKeyword:
|
|
133
|
-
case ts.SyntaxKind.UndefinedKeyword:
|
|
134
|
-
case ts.SyntaxKind.NullKeyword:
|
|
135
|
-
return visitor.visitKeywordType(type);
|
|
136
|
-
default:
|
|
137
|
-
return visitor.visitOtherType(type);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZV9lbWl0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy90eXBlY2hlY2svc3JjL3R5cGVfZW1pdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNqQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBY3hDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQWlCLEVBQUUsUUFBK0I7SUFDNUUsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUvQixTQUFTLGlCQUFpQixDQUFDLElBQWlCO1FBQzFDLE9BQU8sYUFBYSxDQUFDLElBQUksRUFBRTtZQUN6QixzQkFBc0IsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQztZQUMxRCxrQkFBa0IsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDL0QsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSTtZQUM1QixnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJO1lBQzVCLGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLO1NBQzVCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTLG9CQUFvQixDQUFDLElBQTBCO1FBQ3RELE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqQyw0REFBNEQ7UUFDNUQsSUFBSSxTQUFTLEtBQUssSUFBSSxFQUFFO1lBQ3RCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCwrRkFBK0Y7UUFDL0YsWUFBWTtRQUNaLElBQUksU0FBUyxZQUFZLFNBQVMsSUFBSSxDQUFDLFNB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S0FDN0M7U0FBTSxJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDbkMsT0FBTyxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekM7U0FBTSxJQUFJLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNyQyxPQUFPLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN2QztJQUVELFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtRQUNqQixLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO1FBQzlCLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7UUFDbEMsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUNqQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQ2pDLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7UUFDbEMsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUNqQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUM7UUFDcEMsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVc7WUFDNUIsT0FBTyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBMEIsQ0FBQyxDQUFDO1FBQzlEO1lBQ0UsT0FBTyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3ZDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge1JlZmVyZW5jZX0gZnJvbSAnLi4vLi4vaW1wb3J0cyc7XG5cbi8qKlxuICogQSByZXNvbHZlZCB0eXBlIHJlZmVyZW5jZSBjYW4gZWl0aGVyIGJlIGEgYFJlZmVyZW5jZWAsIHRoZSBvcmlnaW5hbCBgdHMuVHlwZVJlZmVyZW5jZU5vZGVgIGl0c2VsZlxuICogb3IgbnVsbCB0byBpbmRpY2F0ZSB0aGUgbm8gcmVmZXJlbmNlIGNvdWxkIGJlIHJlc29sdmVkLlxuICovXG5leHBvcnQgdHlwZSBSZXNvbHZlZFR5cGVSZWZlcmVuY2UgPSBSZWZlcmVuY2V8dHMuVHlwZVJlZmVyZW5jZU5vZGV8bnVsbDtcblxuLyoqXG4gKiBBIHR5cGUgcmVmZXJlbmNlIHJlc29sdmVyIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBmaW5kaW5nIHRoZSBkZWNsYXJhdGlvbiBvZiB0aGUgdHlwZVxuICogcmVmZXJlbmNlIGFuZCB2ZXJpZnlpbmcgd2hldGhlciBpdCBjYW4gYmUgZW1pdHRlZC5cbiAqL1xuZXhwb3J0IHR5cGUgVHlwZVJlZmVyZW5jZVJlc29sdmVyID0gKHR5cGU6IHRzLlR5cGVSZWZlcmVuY2VOb2RlKSA9PiBSZXNvbHZlZFR5cGVSZWZlcmVuY2U7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwcm92aWRlZCB0eXBlIGNhbiBiZSBlbWl0dGVkLCB3aGljaCBtZWFucyB0aGF0IGl0IGNhbiBiZSBzYWZlbHkgZW1pdHRlZFxuICogaW50byBhIGRpZmZlcmVudCBsb2NhdGlvbi5cbiAqXG4gKiBJZiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSwgYSBgVHlwZUVtaXR0ZXJgIHNob3VsZCBiZSBhYmxlIHRvIHN1Y2NlZWQuIFZpY2UgdmVyc2EsIGlmIHRoaXNcbiAqIGZ1bmN0aW9uIHJldHVybnMgZmFsc2UsIHRoZW4gdXNpbmcgdGhlIGBUeXBlRW1pdHRlcmAgc2hvdWxkIG5vdCBiZSBhdHRlbXB0ZWQgYXMgaXQgaXMga25vd24gdG9cbiAqIGZhaWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYW5FbWl0VHlwZSh0eXBlOiB0cy5UeXBlTm9kZSwgcmVzb2x2ZXI6IFR5cGVSZWZlcmVuY2VSZXNvbHZlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gY2FuRW1pdFR5cGVXb3JrZXIodHlwZSk7XG5cbiAgZnVuY3Rpb24gY2FuRW1pdFR5cGVXb3JrZXIodHlwZTogdHMuVHlwZU5vZGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmlzaXRUeXBlTm9kZSh0eXBlLCB7XG4gICAgICB2aXNpdFR5cGVSZWZlcmVuY2VOb2RlOiB0eXBlID0+IGNhbkVtaXRUeXBlUmVmZXJlbmNlKHR5cGUpLFxuICAgICAgdmlzaXRBcnJheVR5cGVOb2RlOiB0eXBlID0+IGNhbkVtaXRUeXBlV29ya2VyKHR5cGUuZWxlbWVudFR5cGUpLFxuICAgICAgdmlzaXRLZXl3b3JkVHlwZTogKCkgPT4gdHJ1ZSxcbiAgICAgIHZpc2l0TGl0ZXJhbFR5cGU6ICgpID0+IHRydWUsXG4gICAgICB2aXNpdE90aGVyVHlwZTogKCkgPT4gZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBjYW5FbWl0VHlwZVJlZmVyZW5jZSh0eXBlOiB0cy5UeXBlUmVmZXJlbmNlTm9kZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlZmVyZW5jZSA9IHJlc29sdmVyKHR5cGUpO1xuXG4gICAgLy8gSWYgdGhlIHR5cGUgY291bGQgbm90IGJlIHJlc29sdmVkLCBpdCBjYW4gbm90IGJlIGVtaXR0ZWQuXG4gICAgaWYgKHJlZmVyZW5jZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSB0eXBlIGlzIGEgcmVmZXJlbmNlIHdpdGhvdXQgYSBvd25pbmcgbW9kdWxlLCBjb25zaWRlciB0aGUgdHlwZSBub3QgdG8gYmUgZWxpZ2libGUgZm9yXG4gICAgLy8gZW1pdHRpbmcuXG4gICAgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIFJlZmVyZW5jZSAmJiAhcmVmZXJlbmNlLmhhc093bmluZ01vZHVsZUd1ZXNzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gVGhlIHR5cGUgY2FuIGJlIGVtaXR0ZWQgaWYgZWl0aGVyIGl0IGRvZXMgbm90IGhhdmUgYW55IHR5cGUgYXJndW1lbnRzLCBvciBhbGwgb2YgdGhlbSBjYW4gYmVcbiAgICAvLyBlbWl0dGVkLlxuICAgIHJldHVybiB0eXBlLnR5cGVBcmd1bWVudHMgPT09IHVuZGVmaW5lZCB8fCB0eXBlLnR5cGVBcmd1bWVudHMuZXZlcnkoY2FuRW1pdFR5cGVXb3JrZXIpO1xuICB9XG59XG5cbi8qKlxuICogR2l2ZW4gYSBgdHMuVHlwZU5vZGVgLCB0aGlzIGNsYXNzIGRlcml2ZXMgYW4gZXF1aXZhbGVudCBgdHMuVHlwZU5vZGVgIHRoYXQgaGFzIGJlZW4gZW1pdHRlZCBpbnRvXG4gKiBhIGRpZmZlcmVudCBjb250ZXh0LlxuICpcbiAqIEZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIGNvZGU6XG4gKlxuICogYGBgXG4gKiBpbXBvcnQge05nSXRlcmFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuICpcbiAqIGNsYXNzIE5nRm9yT2Y8VCwgVSBleHRlbmRzIE5nSXRlcmFibGU8VD4+IHt9XG4gKiBgYGBcbiAqXG4gKiBIZXJlLCB0aGUgZ2VuZXJpYyB0eXBlIHBhcmFtZXRlcnMgYFRgIGFuZCBgVWAgY2FuIGJlIGVtaXR0ZWQgaW50byBhIGRpZmZlcmVudCBjb250ZXh0LCBhcyB0aGVcbiAqIHR5cGUgcmVmZXJlbmNlIHRvIGBOZ0l0ZXJhYmxlYCBvcmlnaW5hdGVzIGZyb20gYW4gYWJzb2x1dGUgbW9kdWxlIGltcG9ydCBzbyB0aGF0IGl0IGNhbiBiZVxuICogZW1pdHRlZCBhbnl3aGVyZSwgdXNpbmcgdGhhdCBzYW1lIG1vZHVsZSBpbXBvcnQuIFRoZSBwcm9jZXNzIG9mIGVtaXR0aW5nIHRyYW5zbGF0ZXMgdGhlXG4gKiBgTmdJdGVyYWJsZWAgdHlwZSByZWZlcmVuY2UgdG8gYSB0eXBlIHJlZmVyZW5jZSB0aGF0IGlzIHZhbGlkIGluIHRoZSBjb250ZXh0IGluIHdoaWNoIGl0IGlzXG4gKiBlbWl0dGVkLCBmb3IgZXhhbXBsZTpcbiAqXG4gKiBgYGBcbiAqIGltcG9ydCAqIGFzIGkwIGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuICogaW1wb3J0ICogYXMgaTEgZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbiAqXG4gKiBjb25zdCBfY3RvcjE6IDxULCBVIGV4dGVuZHMgaTAuTmdJdGVyYWJsZTxUPj4obzogUGljazxpMS5OZ0Zvck9mPFQsIFU+LCAnbmdGb3JPZic+KTpcbiAqIGkxLk5nRm9yT2Y8VCwgVT47XG4gKiBgYGBcbiAqXG4gKiBOb3RpY2UgaG93IHRoZSB0eXBlIHJlZmVyZW5jZSBmb3IgYE5nSXRlcmFibGVgIGhhcyBiZWVuIHRyYW5zbGF0ZWQgaW50byBhIHF1YWxpZmllZCBuYW1lLFxuICogcmVmZXJyaW5nIHRvIHRoZSBuYW1lc3BhY2UgaW1wb3J0IHRoYXQgd2FzIGNyZWF0ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlRW1pdHRlciB7XG4gIC8qKlxuICAgKiBSZXNvbHZlciBmdW5jdGlvbiB0aGF0IGNvbXB1dGVzIGEgYFJlZmVyZW5jZWAgY29ycmVzcG9uZGluZyB3aXRoIGEgYHRzLlR5cGVSZWZlcmVuY2VOb2RlYC5cbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZXI6IFR5cGVSZWZlcmVuY2VSZXNvbHZlcjtcblxuICAvKipcbiAgICogR2l2ZW4gYSBgUmVmZXJlbmNlYCwgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGFjdHVhbCBlbWl0dGluZyB3b3JrLiBJdCBzaG91bGRcbiAgICogcHJvZHVjZSBhIGB0cy5UeXBlTm9kZWAgdGhhdCBpcyB2YWxpZCB3aXRoaW4gdGhlIGRlc2lyZWQgY29udGV4dC5cbiAgICovXG4gIHByaXZhdGUgZW1pdFJlZmVyZW5jZTogKHJlZjogUmVmZXJlbmNlKSA9PiB0cy5UeXBlTm9kZTtcblxuICBjb25zdHJ1Y3RvcihyZXNvbHZlcjogVHlwZVJlZmVyZW5jZVJlc29sdmVyLCBlbWl0UmVmZXJlbmNlOiAocmVmOiBSZWZlcmVuY2UpID0+IHRzLlR5cGVOb2RlKSB7XG4gICAgdGhpcy5yZXNvbHZlciA9IHJlc29sdmVyO1xuICAgIHRoaXMuZW1pdFJlZmVyZW5jZSA9IGVtaXRSZWZlcmVuY2U7XG4gIH1cblxuICBlbWl0VHlwZSh0eXBlOiB0cy5UeXBlTm9kZSk6IHRzLlR5cGVOb2RlIHtcbiAgICByZXR1cm4gdmlzaXRUeXBlTm9kZSh0eXBlLCB7XG4gICAgICB2aXNpdFR5cGVSZWZlcmVuY2VOb2RlOiB0eXBlID0+IHRoaXMuZW1pdFR5cGVSZWZlcmVuY2UodHlwZSksXG4gICAgICB2aXNpdEFycmF5VHlwZU5vZGU6IHR5cGUgPT4gdHMudXBkYXRlQXJyYXlUeXBlTm9kZSh0eXBlLCB0aGlzLmVtaXRUeXBlKHR5cGUuZWxlbWVudFR5cGUpKSxcbiAgICAgIHZpc2l0S2V5d29yZFR5cGU6IHR5cGUgPT4gdHlwZSxcbiAgICAgIHZpc2l0TGl0ZXJhbFR5cGU6IHR5cGUgPT4gdHlwZSxcbiAgICAgIHZpc2l0T3RoZXJUeXBlOiAoKSA9PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGVtaXQgYSBjb21wbGV4IHR5cGUnKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRUeXBlUmVmZXJlbmNlKHR5cGU6IHRzLlR5cGVSZWZlcmVuY2VOb2RlKTogdHMuVHlwZU5vZGUge1xuICAgIC8vIERldGVybWluZSB0aGUgcmVmZXJlbmNlIHRoYXQgdGhlIHR5cGUgY29ycmVzcG9uZHMgd2l0aC5cbiAgICBjb25zdCByZWZlcmVuY2UgPSB0aGlzLnJlc29sdmVyKHR5cGUpO1xuICAgIGlmIChyZWZlcmVuY2UgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGVtaXQgYW4gdW5yZXNvbHZlZCByZWZlcmVuY2UnKTtcbiAgICB9XG5cbiAgICAvLyBFbWl0IHRoZSB0eXBlIGFyZ3VtZW50cywgaWYgYW55LlxuICAgIGxldCB0eXBlQXJndW1lbnRzOiB0cy5Ob2RlQXJyYXk8dHMuVHlwZU5vZGU+fHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAodHlwZS50eXBlQXJndW1lbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHR5cGVBcmd1bWVudHMgPSB0cy5jcmVhdGVOb2RlQXJyYXkodHlwZS50eXBlQXJndW1lbnRzLm1hcCh0eXBlQXJnID0+IHRoaXMuZW1pdFR5cGUodHlwZUFyZykpKTtcbiAgICB9XG5cbiAgICAvLyBFbWl0IHRoZSB0eXBlIG5hbWUuXG4gICAgbGV0IHR5cGVOYW1lID0gdHlwZS50eXBlTmFtZTtcbiAgICBpZiAocmVmZXJlbmNlIGluc3RhbmNlb2YgUmVmZXJlbmNlKSB7XG4gICAgICBpZiAoIXJlZmVyZW5jZS5oYXNPd25pbmdNb2R1bGVHdWVzcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0EgdHlwZSByZWZlcmVuY2UgdG8gZW1pdCBtdXN0IGJlIGltcG9ydGVkIGZyb20gYW4gYWJzb2x1dGUgbW9kdWxlJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVtaXR0ZWRUeXBlID0gdGhpcy5lbWl0UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG4gICAgICBpZiAoIXRzLmlzVHlwZVJlZmVyZW5jZU5vZGUoZW1pdHRlZFR5cGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgVHlwZVJlZmVyZW5jZU5vZGUgZm9yIGVtaXR0ZWQgcmVmZXJlbmNlLCBnb3QgJHtcbiAgICAgICAgICAgIHRzLlN5bnRheEtpbmRbZW1pdHRlZFR5cGUua2luZF19YCk7XG4gICAgICB9XG5cbiAgICAgIHR5cGVOYW1lID0gZW1pdHRlZFR5cGUudHlwZU5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRzLnVwZGF0ZVR5cGVSZWZlcmVuY2VOb2RlKHR5cGUsIHR5cGVOYW1lLCB0eXBlQXJndW1lbnRzKTtcbiAgfVxufVxuXG4vKipcbiAqIFZpc2l0b3IgaW50ZXJmYWNlIHRoYXQgYWxsb3dzIGZvciB1bmlmaWVkIHJlY29nbml0aW9uIG9mIHRoZSBkaWZmZXJlbnQgdHlwZXMgb2YgYHRzLlR5cGVOb2RlYHMsXG4gKiBzbyB0aGF0IGB2aXNpdFR5cGVOb2RlYCBpcyBhIGNlbnRyYWxpemVkIHBpZWNlIG9mIHJlY29nbml0aW9uIGxvZ2ljIHRvIGJlIHVzZWQgaW4gYm90aFxuICogYGNhbkVtaXRUeXBlYCBhbmQgYFR5cGVFbWl0dGVyYC5cbiAqL1xuaW50ZXJmYWNlIFR5cGVFbWl0dGVyVmlzaXRvcjxSPiB7XG4gIHZpc2l0VHlwZVJlZmVyZW5jZU5vZGUodHlwZTogdHMuVHlwZVJlZmVyZW5jZU5vZGUpOiBSO1xuICB2aXNpdEFycmF5VHlwZU5vZGUodHlwZTogdHMuQXJyYXlUeXBlTm9kZSk6IFI7XG4gIHZpc2l0S2V5d29yZFR5cGUodHlwZTogdHMuS2V5d29yZFR5cGVOb2RlKTogUjtcbiAgdmlzaXRMaXRlcmFsVHlwZSh0eXBlOiB0cy5MaXRlcmFsVHlwZU5vZGUpOiBSO1xuICB2aXNpdE90aGVyVHlwZSh0eXBlOiB0cy5UeXBlTm9kZSk6IFI7XG59XG5cbmZ1bmN0aW9uIHZpc2l0VHlwZU5vZGU8Uj4odHlwZTogdHMuVHlwZU5vZGUsIHZpc2l0b3I6IFR5cGVFbWl0dGVyVmlzaXRvcjxSPik6IFIge1xuICBpZiAodHMuaXNUeXBlUmVmZXJlbmNlTm9kZSh0eXBlKSkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VHlwZVJlZmVyZW5jZU5vZGUodHlwZSk7XG4gIH0gZWxzZSBpZiAodHMuaXNBcnJheVR5cGVOb2RlKHR5cGUpKSB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRBcnJheVR5cGVOb2RlKHR5cGUpO1xuICB9IGVsc2UgaWYgKHRzLmlzTGl0ZXJhbFR5cGVOb2RlKHR5cGUpKSB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRMaXRlcmFsVHlwZSh0eXBlKTtcbiAgfVxuXG4gIHN3aXRjaCAodHlwZS5raW5kKSB7XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLkFueUtleXdvcmQ6XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLlVua25vd25LZXl3b3JkOlxuICAgIGNhc2UgdHMuU3ludGF4S2luZC5OdW1iZXJLZXl3b3JkOlxuICAgIGNhc2UgdHMuU3ludGF4S2luZC5PYmplY3RLZXl3b3JkOlxuICAgIGNhc2UgdHMuU3ludGF4S2luZC5Cb29sZWFuS2V5d29yZDpcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuU3RyaW5nS2V5d29yZDpcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuVW5kZWZpbmVkS2V5d29yZDpcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuTnVsbEtleXdvcmQ6XG4gICAgICByZXR1cm4gdmlzaXRvci52aXNpdEtleXdvcmRUeXBlKHR5cGUgYXMgdHMuS2V5d29yZFR5cGVOb2RlKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRPdGhlclR5cGUodHlwZSk7XG4gIH1cbn1cbiJdfQ==
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZV9lbWl0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy90eXBlY2hlY2svc3JjL3R5cGVfZW1pdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNqQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBc0J4QyxNQUFNLFVBQVUsR0FBZSxFQUFnQixDQUFDO0FBRWhEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQWlCLEVBQUUsUUFBK0I7SUFDNUUsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUvQixTQUFTLGlCQUFpQixDQUFDLElBQWlCO1FBQzFDLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsa0dBQWtHO0lBQ2xHLDRGQUE0RjtJQUM1Riw4RkFBOEY7SUFDOUYsa0dBQWtHO0lBQ2xHLDJGQUEyRjtJQUMzRiwyRkFBMkY7SUFDM0YsU0FBUyxTQUFTLENBQUMsSUFBYTtRQUM5Qiw2RkFBNkY7UUFDN0YsK0ZBQStGO1FBQy9GLFlBQVk7UUFDWixJQUFJLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQy9ELE9BQU8sVUFBVSxDQUFDO1NBQ25CO2FBQU07WUFDTCxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQUVELFNBQVMsb0JBQW9CLENBQUMsSUFBMEI7UUFDdEQsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWpDLDREQUE0RDtRQUM1RCxJQUFJLFNBQVMsS0FBSyxJQUFJLEVBQUU7WUFDdEIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELDZFQUE2RTtRQUM3RSxJQUFJLFNBQVMsWUFBWSxTQUFTLEVBQUU7WUFDbEMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELCtGQUErRjtRQUMvRixXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQVl0QixZQUFZLFFBQStCLEVBQUUsYUFBOEM7UUFDekYsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDckMsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFpQjtRQUN4QixNQUFNLHdCQUF3QixHQUF1QyxPQUFPLENBQUMsRUFBRTtZQUM3RSxNQUFNLFNBQVMsR0FBRyxDQUFDLElBQWEsRUFBVyxFQUFFO2dCQUMzQyxJQUFJLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDaEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3JDO3FCQUFNO29CQUNMLE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2lCQUNwRDtZQUNILENBQUMsQ0FBQztZQUNGLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUM7UUFDRixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRU8saUJBQWlCLENBQUMsSUFBMEI7UUFDbEQsMERBQTBEO1FBQzFELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsSUFBSSxTQUFTLEtBQUssSUFBSSxFQUFFO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztTQUMzRDtRQUVELG1DQUFtQztRQUNuQyxJQUFJLGFBQWEsR0FBd0MsU0FBUyxDQUFDO1FBQ25FLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxTQUFTLEVBQUU7WUFDcEMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvRjtRQUVELHNCQUFzQjtRQUN0QixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzdCLElBQUksU0FBUyxZQUFZLFNBQVMsRUFBRTtZQUNsQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQ3hDLE1BQU0sSUFBSSxLQUFLLENBQUMseURBQ1osRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3hDO1lBRUQsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7U0FDakM7UUFFRCxPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge1JlZmVyZW5jZX0gZnJvbSAnLi4vLi4vaW1wb3J0cyc7XG5cbi8qKlxuICogQSByZXNvbHZlZCB0eXBlIHJlZmVyZW5jZSBjYW4gZWl0aGVyIGJlIGEgYFJlZmVyZW5jZWAsIHRoZSBvcmlnaW5hbCBgdHMuVHlwZVJlZmVyZW5jZU5vZGVgIGl0c2VsZlxuICogb3IgbnVsbC4gQSB2YWx1ZSBvZiBudWxsIGluZGljYXRlcyB0aGF0IG5vIHJlZmVyZW5jZSBjb3VsZCBiZSByZXNvbHZlZCBvciB0aGF0IHRoZSByZWZlcmVuY2UgY2FuXG4gKiBub3QgYmUgZW1pdHRlZC5cbiAqL1xuZXhwb3J0IHR5cGUgUmVzb2x2ZWRUeXBlUmVmZXJlbmNlID0gUmVmZXJlbmNlfHRzLlR5cGVSZWZlcmVuY2VOb2RlfG51bGw7XG5cbi8qKlxuICogQSB0eXBlIHJlZmVyZW5jZSByZXNvbHZlciBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZmluZGluZyB0aGUgZGVjbGFyYXRpb24gb2YgdGhlIHR5cGVcbiAqIHJlZmVyZW5jZSBhbmQgdmVyaWZ5aW5nIHdoZXRoZXIgaXQgY2FuIGJlIGVtaXR0ZWQuXG4gKi9cbmV4cG9ydCB0eXBlIFR5cGVSZWZlcmVuY2VSZXNvbHZlciA9ICh0eXBlOiB0cy5UeXBlUmVmZXJlbmNlTm9kZSkgPT4gUmVzb2x2ZWRUeXBlUmVmZXJlbmNlO1xuXG4vKipcbiAqIEEgbWFya2VyIHRvIGluZGljYXRlIHRoYXQgYSB0eXBlIHJlZmVyZW5jZSBpcyBpbmVsaWdpYmxlIGZvciBlbWl0dGluZy4gVGhpcyBuZWVkcyB0byBiZSB0cnV0aHlcbiAqIGFzIGl0J3MgcmV0dXJuZWQgZnJvbSBgdHMuZm9yRWFjaENoaWxkYCwgd2hpY2ggb25seSByZXR1cm5zIHRydXRoeSB2YWx1ZXMuXG4gKi9cbnR5cGUgSU5FTElHSUJMRSA9IHtcbiAgX19icmFuZDogJ2luZWxpZ2libGUnO1xufTtcbmNvbnN0IElORUxJR0lCTEU6IElORUxJR0lCTEUgPSB7fSBhcyBJTkVMSUdJQkxFO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgcHJvdmlkZWQgdHlwZSBjYW4gYmUgZW1pdHRlZCwgd2hpY2ggbWVhbnMgdGhhdCBpdCBjYW4gYmUgc2FmZWx5IGVtaXR0ZWRcbiAqIGludG8gYSBkaWZmZXJlbnQgbG9jYXRpb24uXG4gKlxuICogSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUsIGEgYFR5cGVFbWl0dGVyYCBzaG91bGQgYmUgYWJsZSB0byBzdWNjZWVkLiBWaWNlIHZlcnNhLCBpZiB0aGlzXG4gKiBmdW5jdGlvbiByZXR1cm5zIGZhbHNlLCB0aGVuIHVzaW5nIHRoZSBgVHlwZUVtaXR0ZXJgIHNob3VsZCBub3QgYmUgYXR0ZW1wdGVkIGFzIGl0IGlzIGtub3duIHRvXG4gKiBmYWlsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuRW1pdFR5cGUodHlwZTogdHMuVHlwZU5vZGUsIHJlc29sdmVyOiBUeXBlUmVmZXJlbmNlUmVzb2x2ZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNhbkVtaXRUeXBlV29ya2VyKHR5cGUpO1xuXG4gIGZ1bmN0aW9uIGNhbkVtaXRUeXBlV29ya2VyKHR5cGU6IHRzLlR5cGVOb2RlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHZpc2l0Tm9kZSh0eXBlKSAhPT0gSU5FTElHSUJMRTtcbiAgfVxuXG4gIC8vIFRvIGRldGVybWluZSB3aGV0aGVyIGEgdHlwZSBjYW4gYmUgZW1pdHRlZCwgd2UgaGF2ZSB0byByZWN1cnNpdmVseSBsb29rIHRocm91Z2ggYWxsIHR5cGUgbm9kZXMuXG4gIC8vIElmIGEgdHlwZSByZWZlcmVuY2Ugbm9kZSBpcyBmb3VuZCBhdCBhbnkgcG9zaXRpb24gd2l0aGluIHRoZSB0eXBlIGFuZCB0aGF0IHR5cGUgcmVmZXJlbmNlXG4gIC8vIGNhbm5vdCBiZSBlbWl0dGVkLCB0aGVuIHRoZSBgSU5FTElHSUJMRWAgY29uc3RhbnQgaXMgcmV0dXJuZWQgdG8gc3RvcCB0aGUgcmVjdXJzaXZlIHdhbGsgYXNcbiAgLy8gdGhlIHR5cGUgYXMgYSB3aG9sZSBjYW5ub3QgYmUgZW1pdHRlZCBpbiB0aGF0IGNhc2UuIE90aGVyd2lzZSwgdGhlIHJlc3VsdCBvZiB2aXNpdGluZyBhbGwgY2hpbGRcbiAgLy8gbm9kZXMgZGV0ZXJtaW5lcyB0aGUgcmVzdWx0LiBJZiBubyBpbmVsaWdpYmxlIHR5cGUgcmVmZXJlbmNlIG5vZGUgaXMgZm91bmQgdGhlbiB0aGUgd2Fsa1xuICAvLyByZXR1cm5zIGB1bmRlZmluZWRgLCBpbmRpY2F0aW5nIHRoYXQgbm8gdHlwZSBub2RlIHdhcyB2aXNpdGVkIHRoYXQgY291bGQgbm90IGJlIGVtaXR0ZWQuXG4gIGZ1bmN0aW9uIHZpc2l0Tm9kZShub2RlOiB0cy5Ob2RlKTogSU5FTElHSUJMRXx1bmRlZmluZWQge1xuICAgIC8vIEVtaXR0aW5nIGEgdHlwZSByZWZlcmVuY2Ugbm9kZSBpbiBhIGRpZmZlcmVudCBjb250ZXh0IHJlcXVpcmVzIHRoYXQgYW4gaW1wb3J0IGZvciB0aGUgdHlwZVxuICAgIC8vIGNhbiBiZSBjcmVhdGVkLiBJZiBhIHR5cGUgcmVmZXJlbmNlIG5vZGUgY2Fubm90IGJlIGVtaXR0ZWQsIGBJTkVMSUdJQkxFYCBpcyByZXR1cm5lZCB0byBzdG9wXG4gICAgLy8gdGhlIHdhbGsuXG4gICAgaWYgKHRzLmlzVHlwZVJlZmVyZW5jZU5vZGUobm9kZSkgJiYgIWNhbkVtaXRUeXBlUmVmZXJlbmNlKG5vZGUpKSB7XG4gICAgICByZXR1cm4gSU5FTElHSUJMRTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRzLmZvckVhY2hDaGlsZChub2RlLCB2aXNpdE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNhbkVtaXRUeXBlUmVmZXJlbmNlKHR5cGU6IHRzLlR5cGVSZWZlcmVuY2VOb2RlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVmZXJlbmNlID0gcmVzb2x2ZXIodHlwZSk7XG5cbiAgICAvLyBJZiB0aGUgdHlwZSBjb3VsZCBub3QgYmUgcmVzb2x2ZWQsIGl0IGNhbiBub3QgYmUgZW1pdHRlZC5cbiAgICBpZiAocmVmZXJlbmNlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIHR5cGUgaXMgYSByZWZlcmVuY2UsIGNvbnNpZGVyIHRoZSB0eXBlIHRvIGJlIGVsaWdpYmxlIGZvciBlbWl0dGluZy5cbiAgICBpZiAocmVmZXJlbmNlIGluc3RhbmNlb2YgUmVmZXJlbmNlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBUaGUgdHlwZSBjYW4gYmUgZW1pdHRlZCBpZiBlaXRoZXIgaXQgZG9lcyBub3QgaGF2ZSBhbnkgdHlwZSBhcmd1bWVudHMsIG9yIGFsbCBvZiB0aGVtIGNhbiBiZVxuICAgIC8vIGVtaXR0ZWQuXG4gICAgcmV0dXJuIHR5cGUudHlwZUFyZ3VtZW50cyA9PT0gdW5kZWZpbmVkIHx8IHR5cGUudHlwZUFyZ3VtZW50cy5ldmVyeShjYW5FbWl0VHlwZVdvcmtlcik7XG4gIH1cbn1cblxuLyoqXG4gKiBHaXZlbiBhIGB0cy5UeXBlTm9kZWAsIHRoaXMgY2xhc3MgZGVyaXZlcyBhbiBlcXVpdmFsZW50IGB0cy5UeXBlTm9kZWAgdGhhdCBoYXMgYmVlbiBlbWl0dGVkIGludG9cbiAqIGEgZGlmZmVyZW50IGNvbnRleHQuXG4gKlxuICogRm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgY29kZTpcbiAqXG4gKiBgYGBcbiAqIGltcG9ydCB7TmdJdGVyYWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4gKlxuICogY2xhc3MgTmdGb3JPZjxULCBVIGV4dGVuZHMgTmdJdGVyYWJsZTxUPj4ge31cbiAqIGBgYFxuICpcbiAqIEhlcmUsIHRoZSBnZW5lcmljIHR5cGUgcGFyYW1ldGVycyBgVGAgYW5kIGBVYCBjYW4gYmUgZW1pdHRlZCBpbnRvIGEgZGlmZmVyZW50IGNvbnRleHQsIGFzIHRoZVxuICogdHlwZSByZWZlcmVuY2UgdG8gYE5nSXRlcmFibGVgIG9yaWdpbmF0ZXMgZnJvbSBhbiBhYnNvbHV0ZSBtb2R1bGUgaW1wb3J0IHNvIHRoYXQgaXQgY2FuIGJlXG4gKiBlbWl0dGVkIGFueXdoZXJlLCB1c2luZyB0aGF0IHNhbWUgbW9kdWxlIGltcG9ydC4gVGhlIHByb2Nlc3Mgb2YgZW1pdHRpbmcgdHJhbnNsYXRlcyB0aGVcbiAqIGBOZ0l0ZXJhYmxlYCB0eXBlIHJlZmVyZW5jZSB0byBhIHR5cGUgcmVmZXJlbmNlIHRoYXQgaXMgdmFsaWQgaW4gdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQgaXNcbiAqIGVtaXR0ZWQsIGZvciBleGFtcGxlOlxuICpcbiAqIGBgYFxuICogaW1wb3J0ICogYXMgaTAgZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4gKiBpbXBvcnQgKiBhcyBpMSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuICpcbiAqIGNvbnN0IF9jdG9yMTogPFQsIFUgZXh0ZW5kcyBpMC5OZ0l0ZXJhYmxlPFQ+PihvOiBQaWNrPGkxLk5nRm9yT2Y8VCwgVT4sICduZ0Zvck9mJz4pOlxuICogaTEuTmdGb3JPZjxULCBVPjtcbiAqIGBgYFxuICpcbiAqIE5vdGljZSBob3cgdGhlIHR5cGUgcmVmZXJlbmNlIGZvciBgTmdJdGVyYWJsZWAgaGFzIGJlZW4gdHJhbnNsYXRlZCBpbnRvIGEgcXVhbGlmaWVkIG5hbWUsXG4gKiByZWZlcnJpbmcgdG8gdGhlIG5hbWVzcGFjZSBpbXBvcnQgdGhhdCB3YXMgY3JlYXRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVFbWl0dGVyIHtcbiAgLyoqXG4gICAqIFJlc29sdmVyIGZ1bmN0aW9uIHRoYXQgY29tcHV0ZXMgYSBgUmVmZXJlbmNlYCBjb3JyZXNwb25kaW5nIHdpdGggYSBgdHMuVHlwZVJlZmVyZW5jZU5vZGVgLlxuICAgKi9cbiAgcHJpdmF0ZSByZXNvbHZlcjogVHlwZVJlZmVyZW5jZVJlc29sdmVyO1xuXG4gIC8qKlxuICAgKiBHaXZlbiBhIGBSZWZlcmVuY2VgLCB0aGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgYWN0dWFsIGVtaXR0aW5nIHdvcmsuIEl0IHNob3VsZFxuICAgKiBwcm9kdWNlIGEgYHRzLlR5cGVOb2RlYCB0aGF0IGlzIHZhbGlkIHdpdGhpbiB0aGUgZGVzaXJlZCBjb250ZXh0LlxuICAgKi9cbiAgcHJpdmF0ZSBlbWl0UmVmZXJlbmNlOiAocmVmOiBSZWZlcmVuY2UpID0+IHRzLlR5cGVOb2RlO1xuXG4gIGNvbnN0cnVjdG9yKHJlc29sdmVyOiBUeXBlUmVmZXJlbmNlUmVzb2x2ZXIsIGVtaXRSZWZlcmVuY2U6IChyZWY6IFJlZmVyZW5jZSkgPT4gdHMuVHlwZU5vZGUpIHtcbiAgICB0aGlzLnJlc29sdmVyID0gcmVzb2x2ZXI7XG4gICAgdGhpcy5lbWl0UmVmZXJlbmNlID0gZW1pdFJlZmVyZW5jZTtcbiAgfVxuXG4gIGVtaXRUeXBlKHR5cGU6IHRzLlR5cGVOb2RlKTogdHMuVHlwZU5vZGUge1xuICAgIGNvbnN0IHR5cGVSZWZlcmVuY2VUcmFuc2Zvcm1lcjogdHMuVHJhbnNmb3JtZXJGYWN0b3J5PHRzLlR5cGVOb2RlPiA9IGNvbnRleHQgPT4ge1xuICAgICAgY29uc3QgdmlzaXROb2RlID0gKG5vZGU6IHRzLk5vZGUpOiB0cy5Ob2RlID0+IHtcbiAgICAgICAgaWYgKHRzLmlzVHlwZVJlZmVyZW5jZU5vZGUobm9kZSkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5lbWl0VHlwZVJlZmVyZW5jZShub2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdHMudmlzaXRFYWNoQ2hpbGQobm9kZSwgdmlzaXROb2RlLCBjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiBub2RlID0+IHRzLnZpc2l0Tm9kZShub2RlLCB2aXNpdE5vZGUpO1xuICAgIH07XG4gICAgcmV0dXJuIHRzLnRyYW5zZm9ybSh0eXBlLCBbdHlwZVJlZmVyZW5jZVRyYW5zZm9ybWVyXSkudHJhbnNmb3JtZWRbMF07XG4gIH1cblxuICBwcml2YXRlIGVtaXRUeXBlUmVmZXJlbmNlKHR5cGU6IHRzLlR5cGVSZWZlcmVuY2VOb2RlKTogdHMuVHlwZU5vZGUge1xuICAgIC8vIERldGVybWluZSB0aGUgcmVmZXJlbmNlIHRoYXQgdGhlIHR5cGUgY29ycmVzcG9uZHMgd2l0aC5cbiAgICBjb25zdCByZWZlcmVuY2UgPSB0aGlzLnJlc29sdmVyKHR5cGUpO1xuICAgIGlmIChyZWZlcmVuY2UgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGVtaXQgYW4gdW5yZXNvbHZlZCByZWZlcmVuY2UnKTtcbiAgICB9XG5cbiAgICAvLyBFbWl0IHRoZSB0eXBlIGFyZ3VtZW50cywgaWYgYW55LlxuICAgIGxldCB0eXBlQXJndW1lbnRzOiB0cy5Ob2RlQXJyYXk8dHMuVHlwZU5vZGU+fHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAodHlwZS50eXBlQXJndW1lbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHR5cGVBcmd1bWVudHMgPSB0cy5jcmVhdGVOb2RlQXJyYXkodHlwZS50eXBlQXJndW1lbnRzLm1hcCh0eXBlQXJnID0+IHRoaXMuZW1pdFR5cGUodHlwZUFyZykpKTtcbiAgICB9XG5cbiAgICAvLyBFbWl0IHRoZSB0eXBlIG5hbWUuXG4gICAgbGV0IHR5cGVOYW1lID0gdHlwZS50eXBlTmFtZTtcbiAgICBpZiAocmVmZXJlbmNlIGluc3RhbmNlb2YgUmVmZXJlbmNlKSB7XG4gICAgICBjb25zdCBlbWl0dGVkVHlwZSA9IHRoaXMuZW1pdFJlZmVyZW5jZShyZWZlcmVuY2UpO1xuICAgICAgaWYgKCF0cy5pc1R5cGVSZWZlcmVuY2VOb2RlKGVtaXR0ZWRUeXBlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIFR5cGVSZWZlcmVuY2VOb2RlIGZvciBlbWl0dGVkIHJlZmVyZW5jZSwgZ290ICR7XG4gICAgICAgICAgICB0cy5TeW50YXhLaW5kW2VtaXR0ZWRUeXBlLmtpbmRdfWApO1xuICAgICAgfVxuXG4gICAgICB0eXBlTmFtZSA9IGVtaXR0ZWRUeXBlLnR5cGVOYW1lO1xuICAgIH1cblxuICAgIHJldHVybiB0cy51cGRhdGVUeXBlUmVmZXJlbmNlTm9kZSh0eXBlLCB0eXBlTmFtZSwgdHlwZUFyZ3VtZW50cyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -22,10 +22,12 @@ export declare class TypeParameterEmitter {
|
|
|
22
22
|
* called, as it would fail.
|
|
23
23
|
*/
|
|
24
24
|
canEmit(): boolean;
|
|
25
|
+
private canEmitType;
|
|
25
26
|
/**
|
|
26
27
|
* Emits the type parameters using the provided emitter function for `Reference`s.
|
|
27
28
|
*/
|
|
28
29
|
emit(emitReference: (ref: Reference) => ts.TypeNode): ts.TypeParameterDeclaration[] | undefined;
|
|
29
30
|
private resolveTypeReference;
|
|
31
|
+
private isStaticallyExported;
|
|
30
32
|
private isLocalTypeParameter;
|
|
31
33
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
if (v !== undefined) module.exports = v;
|
|
5
5
|
}
|
|
6
6
|
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define("@angular/compiler-cli/src/ngtsc/typecheck/src/type_parameter_emitter", ["require", "exports", "typescript", "@angular/compiler-cli/src/ngtsc/imports", "@angular/compiler-cli/src/ngtsc/typecheck/src/type_emitter"], factory);
|
|
7
|
+
define("@angular/compiler-cli/src/ngtsc/typecheck/src/type_parameter_emitter", ["require", "exports", "typescript", "@angular/compiler-cli/src/ngtsc/imports", "@angular/compiler-cli/src/ngtsc/reflection", "@angular/compiler-cli/src/ngtsc/typecheck/src/type_emitter"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
*/
|
|
20
20
|
var ts = require("typescript");
|
|
21
21
|
var imports_1 = require("@angular/compiler-cli/src/ngtsc/imports");
|
|
22
|
+
var reflection_1 = require("@angular/compiler-cli/src/ngtsc/reflection");
|
|
22
23
|
var type_emitter_1 = require("@angular/compiler-cli/src/ngtsc/typecheck/src/type_emitter");
|
|
23
24
|
/**
|
|
24
25
|
* See `TypeEmitter` for more information on the emitting process.
|
|
@@ -39,12 +40,16 @@
|
|
|
39
40
|
return true;
|
|
40
41
|
}
|
|
41
42
|
return this.typeParameters.every(function (typeParam) {
|
|
42
|
-
|
|
43
|
-
return true;
|
|
44
|
-
}
|
|
45
|
-
return type_emitter_1.canEmitType(typeParam.constraint, function (type) { return _this.resolveTypeReference(type); });
|
|
43
|
+
return _this.canEmitType(typeParam.constraint) && _this.canEmitType(typeParam.default);
|
|
46
44
|
});
|
|
47
45
|
};
|
|
46
|
+
TypeParameterEmitter.prototype.canEmitType = function (type) {
|
|
47
|
+
var _this = this;
|
|
48
|
+
if (type === undefined) {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
return type_emitter_1.canEmitType(type, function (typeReference) { return _this.resolveTypeReference(typeReference); });
|
|
52
|
+
};
|
|
48
53
|
/**
|
|
49
54
|
* Emits the type parameters using the provided emitter function for `Reference`s.
|
|
50
55
|
*/
|
|
@@ -56,11 +61,12 @@
|
|
|
56
61
|
var emitter = new type_emitter_1.TypeEmitter(function (type) { return _this.resolveTypeReference(type); }, emitReference);
|
|
57
62
|
return this.typeParameters.map(function (typeParam) {
|
|
58
63
|
var constraint = typeParam.constraint !== undefined ? emitter.emitType(typeParam.constraint) : undefined;
|
|
64
|
+
var defaultType = typeParam.default !== undefined ? emitter.emitType(typeParam.default) : undefined;
|
|
59
65
|
return ts.updateTypeParameterDeclaration(
|
|
60
66
|
/* node */ typeParam,
|
|
61
67
|
/* name */ typeParam.name,
|
|
62
68
|
/* constraint */ constraint,
|
|
63
|
-
/* defaultType */
|
|
69
|
+
/* defaultType */ defaultType);
|
|
64
70
|
});
|
|
65
71
|
};
|
|
66
72
|
TypeParameterEmitter.prototype.resolveTypeReference = function (type) {
|
|
@@ -83,8 +89,16 @@
|
|
|
83
89
|
resolutionContext: type.getSourceFile().fileName,
|
|
84
90
|
};
|
|
85
91
|
}
|
|
92
|
+
// If no owning module is known, the reference needs to be exported to be able to emit an import
|
|
93
|
+
// statement for it. If the declaration is not exported, null is returned to prevent emit.
|
|
94
|
+
if (owningModule === null && !this.isStaticallyExported(declaration.node)) {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
86
97
|
return new imports_1.Reference(declaration.node, owningModule);
|
|
87
98
|
};
|
|
99
|
+
TypeParameterEmitter.prototype.isStaticallyExported = function (decl) {
|
|
100
|
+
return reflection_1.isNamedClassDeclaration(decl) && this.reflector.isStaticallyExported(decl);
|
|
101
|
+
};
|
|
88
102
|
TypeParameterEmitter.prototype.isLocalTypeParameter = function (decl) {
|
|
89
103
|
// Checking for local type parameters only occurs during resolution of type parameters, so it is
|
|
90
104
|
// guaranteed that type parameters are present.
|
|
@@ -94,4 +108,4 @@
|
|
|
94
108
|
}());
|
|
95
109
|
exports.TypeParameterEmitter = TypeParameterEmitter;
|
|
96
110
|
});
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZV9wYXJhbWV0ZXJfZW1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvdHlwZWNoZWNrL3NyYy90eXBlX3BhcmFtZXRlcl9lbWl0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7T0FNRztJQUNILCtCQUFpQztJQUVqQyxtRUFBc0Q7SUFDdEQseUVBQTBGO0lBRTFGLDJGQUErRTtJQUcvRTs7T0FFRztJQUNIO1FBQ0UsOEJBQ1ksY0FBbUUsRUFDbkUsU0FBeUI7WUFEekIsbUJBQWMsR0FBZCxjQUFjLENBQXFEO1lBQ25FLGNBQVMsR0FBVCxTQUFTLENBQWdCO1FBQUcsQ0FBQztRQUV6Qzs7OztXQUlHO1FBQ0gsc0NBQU8sR0FBUDtZQUFBLGlCQVFDO1lBUEMsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRTtnQkFDckMsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsVUFBQSxTQUFTO2dCQUN4QyxPQUFPLEtBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZGLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVPLDBDQUFXLEdBQW5CLFVBQW9CLElBQTJCO1lBQS9DLGlCQU1DO1lBTEMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO2dCQUN0QixPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsT0FBTywwQkFBVyxDQUFDLElBQUksRUFBRSxVQUFBLGFBQWEsSUFBSSxPQUFBLEtBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsRUFBeEMsQ0FBd0MsQ0FBQyxDQUFDO1FBQ3RGLENBQUM7UUFFRDs7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QUFLLEtBQUssSUFBSSxFQUFkLENBQWMsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFDSCwyQkFBQztJQUFELENBQUMsQUE5RkQsSUE4RkM7SUE5Rlksb0RBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtPd25pbmdNb2R1bGUsIFJlZmVyZW5jZX0gZnJvbSAnLi4vLi4vaW1wb3J0cyc7XG5pbXBvcnQge0RlY2xhcmF0aW9uTm9kZSwgaXNOYW1lZENsYXNzRGVjbGFyYXRpb24sIFJlZmxlY3Rpb25Ib3N0fSBmcm9tICcuLi8uLi9yZWZsZWN0aW9uJztcblxuaW1wb3J0IHtjYW5FbWl0VHlwZSwgUmVzb2x2ZWRUeXBlUmVmZXJlbmNlLCBUeXBlRW1pdHRlcn0gZnJvbSAnLi90eXBlX2VtaXR0ZXInO1xuXG5cbi8qKlxuICogU2VlIGBUeXBlRW1pdHRlcmAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGVtaXR0aW5nIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlUGFyYW1ldGVyRW1pdHRlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSB0eXBlUGFyYW1ldGVyczogdHMuTm9kZUFycmF5PHRzLlR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbj58dW5kZWZpbmVkLFxuICAgICAgcHJpdmF0ZSByZWZsZWN0b3I6IFJlZmxlY3Rpb25Ib3N0KSB7fVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHR5cGUgcGFyYW1ldGVycyBjYW4gYmUgZW1pdHRlZC4gSWYgdGhpcyByZXR1cm5zIHRydWUsIHRoZW4gYSBjYWxsIHRvXG4gICAqIGBlbWl0YCBpcyBrbm93biB0byBzdWNjZWVkLiBWaWNlIHZlcnNhLCBpZiBmYWxzZSBpcyByZXR1cm5lZCB0aGVuIGBlbWl0YCBzaG91bGQgbm90IGJlXG4gICAqIGNhbGxlZCwgYXMgaXQgd291bGQgZmFpbC5cbiAgICovXG4gIGNhbkVtaXQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMudHlwZVBhcmFtZXRlcnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudHlwZVBhcmFtZXRlcnMuZXZlcnkodHlwZVBhcmFtID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmNhbkVtaXRUeXBlKHR5cGVQYXJhbS5jb25zdHJhaW50KSAmJiB0aGlzLmNhbkVtaXRUeXBlKHR5cGVQYXJhbS5kZWZhdWx0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuRW1pdFR5cGUodHlwZTogdHMuVHlwZU5vZGV8dW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNhbkVtaXRUeXBlKHR5cGUsIHR5cGVSZWZlcmVuY2UgPT4gdGhpcy5yZXNvbHZlVHlwZVJlZmVyZW5jZSh0eXBlUmVmZXJlbmNlKSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIHR5cGUgcGFyYW1ldGVycyB1c2luZyB0aGUgcHJvdmlkZWQgZW1pdHRlciBmdW5jdGlvbiBmb3IgYFJlZmVyZW5jZWBzLlxuICAgKi9cbiAgZW1pdChlbWl0UmVmZXJlbmNlOiAocmVmOiBSZWZlcmVuY2UpID0+IHRzLlR5cGVOb2RlKTogdHMuVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uW118dW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy50eXBlUGFyYW1ldGVycyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IGVtaXR0ZXIgPSBuZXcgVHlwZUVtaXR0ZXIodHlwZSA9PiB0aGlzLnJlc29sdmVUeXBlUmVmZXJlbmNlKHR5cGUpLCBlbWl0UmVmZXJlbmNlKTtcblxuICAgIHJldHVybiB0aGlzLnR5cGVQYXJhbWV0ZXJzLm1hcCh0eXBlUGFyYW0gPT4ge1xuICAgICAgY29uc3QgY29uc3RyYWludCA9XG4gICAgICAgICAgdHlwZVBhcmFtLmNvbnN0cmFpbnQgIT09IHVuZGVmaW5lZCA/IGVtaXR0ZXIuZW1pdFR5cGUodHlwZVBhcmFtLmNvbnN0cmFpbnQpIDogdW5kZWZpbmVkO1xuICAgICAgY29uc3QgZGVmYXVsdFR5cGUgPVxuICAgICAgICAgIHR5cGVQYXJhbS5kZWZhdWx0ICE9PSB1bmRlZmluZWQgPyBlbWl0dGVyLmVtaXRUeXBlKHR5cGVQYXJhbS5kZWZhdWx0KSA6IHVuZGVmaW5lZDtcblxuICAgICAgcmV0dXJuIHRzLnVwZGF0ZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbihcbiAgICAgICAgICAvKiBub2RlICovIHR5cGVQYXJhbSxcbiAgICAgICAgICAvKiBuYW1lICovIHR5cGVQYXJhbS5uYW1lLFxuICAgICAgICAgIC8qIGNvbnN0cmFpbnQgKi8gY29uc3RyYWludCxcbiAgICAgICAgICAvKiBkZWZhdWx0VHlwZSAqLyBkZWZhdWx0VHlwZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVUeXBlUmVmZXJlbmNlKHR5cGU6IHRzLlR5cGVSZWZlcmVuY2VOb2RlKTogUmVzb2x2ZWRUeXBlUmVmZXJlbmNlIHtcbiAgICBjb25zdCB0YXJnZXQgPSB0cy5pc0lkZW50aWZpZXIodHlwZS50eXBlTmFtZSkgPyB0eXBlLnR5cGVOYW1lIDogdHlwZS50eXBlTmFtZS5yaWdodDtcbiAgICBjb25zdCBkZWNsYXJhdGlvbiA9IHRoaXMucmVmbGVjdG9yLmdldERlY2xhcmF0aW9uT2ZJZGVudGlmaWVyKHRhcmdldCk7XG5cbiAgICAvLyBJZiBubyBkZWNsYXJhdGlvbiBjb3VsZCBiZSByZXNvbHZlZCBvciBkb2VzIG5vdCBoYXZlIGEgYHRzLkRlY2xhcmF0aW9uYCwgdGhlIHR5cGUgY2Fubm90IGJlXG4gICAgLy8gcmVzb2x2ZWQuXG4gICAgaWYgKGRlY2xhcmF0aW9uID09PSBudWxsIHx8IGRlY2xhcmF0aW9uLm5vZGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBkZWNsYXJhdGlvbiBjb3JyZXNwb25kcyB3aXRoIGEgbG9jYWwgdHlwZSBwYXJhbWV0ZXIsIHRoZSB0eXBlIHJlZmVyZW5jZSBjYW4gYmUgdXNlZFxuICAgIC8vIGFzIGlzLlxuICAgIGlmICh0aGlzLmlzTG9jYWxUeXBlUGFyYW1ldGVyKGRlY2xhcmF0aW9uLm5vZGUpKSB7XG4gICAgICByZXR1cm4gdHlwZTtcbiAgICB9XG5cbiAgICBsZXQgb3duaW5nTW9kdWxlOiBPd25pbmdNb2R1bGV8bnVsbCA9IG51bGw7XG4gICAgaWYgKGRlY2xhcmF0aW9uLnZpYU1vZHVsZSAhPT0gbnVsbCkge1xuICAgICAgb3duaW5nTW9kdWxlID0ge1xuICAgICAgICBzcGVjaWZpZXI6IGRlY2xhcmF0aW9uLnZpYU1vZHVsZSxcbiAgICAgICAgcmVzb2x1dGlvbkNvbnRleHQ6IHR5cGUuZ2V0U291cmNlRmlsZSgpLmZpbGVOYW1lLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBJZiBubyBvd25pbmcgbW9kdWxlIGlzIGtub3duLCB0aGUgcmVmZXJlbmNlIG5lZWRzIHRvIGJlIGV4cG9ydGVkIHRvIGJlIGFibGUgdG8gZW1pdCBhbiBpbXBvcnRcbiAgICAvLyBzdGF0ZW1lbnQgZm9yIGl0LiBJZiB0aGUgZGVjbGFyYXRpb24gaXMgbm90IGV4cG9ydGVkLCBudWxsIGlzIHJldHVybmVkIHRvIHByZXZlbnQgZW1pdC5cbiAgICBpZiAob3duaW5nTW9kdWxlID09PSBudWxsICYmICF0aGlzLmlzU3RhdGljYWxseUV4cG9ydGVkKGRlY2xhcmF0aW9uLm5vZGUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJlZmVyZW5jZShkZWNsYXJhdGlvbi5ub2RlLCBvd25pbmdNb2R1bGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1N0YXRpY2FsbHlFeHBvcnRlZChkZWNsOiBEZWNsYXJhdGlvbk5vZGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNOYW1lZENsYXNzRGVjbGFyYXRpb24oZGVjbCkgJiYgdGhpcy5yZWZsZWN0b3IuaXNTdGF0aWNhbGx5RXhwb3J0ZWQoZGVjbCk7XG4gIH1cblxuICBwcml2YXRlIGlzTG9jYWxUeXBlUGFyYW1ldGVyKGRlY2w6IERlY2xhcmF0aW9uTm9kZSk6IGJvb2xlYW4ge1xuICAgIC8vIENoZWNraW5nIGZvciBsb2NhbCB0eXBlIHBhcmFtZXRlcnMgb25seSBvY2N1cnMgZHVyaW5nIHJlc29sdXRpb24gb2YgdHlwZSBwYXJhbWV0ZXJzLCBzbyBpdCBpc1xuICAgIC8vIGd1YXJhbnRlZWQgdGhhdCB0eXBlIHBhcmFtZXRlcnMgYXJlIHByZXNlbnQuXG4gICAgcmV0dXJuIHRoaXMudHlwZVBhcmFtZXRlcnMhLnNvbWUocGFyYW0gPT4gcGFyYW0gPT09IGRlY2wpO1xuICB9XG59XG4iXX0=
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import * as ts from 'typescript';
|
|
9
9
|
import { Reference } from '../../imports';
|
|
10
|
+
import { isNamedClassDeclaration } from '../../reflection';
|
|
10
11
|
import { canEmitType, TypeEmitter } from './type_emitter';
|
|
11
12
|
/**
|
|
12
13
|
* See `TypeEmitter` for more information on the emitting process.
|
|
@@ -26,12 +27,15 @@ export class TypeParameterEmitter {
|
|
|
26
27
|
return true;
|
|
27
28
|
}
|
|
28
29
|
return this.typeParameters.every(typeParam => {
|
|
29
|
-
|
|
30
|
-
return true;
|
|
31
|
-
}
|
|
32
|
-
return canEmitType(typeParam.constraint, type => this.resolveTypeReference(type));
|
|
30
|
+
return this.canEmitType(typeParam.constraint) && this.canEmitType(typeParam.default);
|
|
33
31
|
});
|
|
34
32
|
}
|
|
33
|
+
canEmitType(type) {
|
|
34
|
+
if (type === undefined) {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
return canEmitType(type, typeReference => this.resolveTypeReference(typeReference));
|
|
38
|
+
}
|
|
35
39
|
/**
|
|
36
40
|
* Emits the type parameters using the provided emitter function for `Reference`s.
|
|
37
41
|
*/
|
|
@@ -42,11 +46,12 @@ export class TypeParameterEmitter {
|
|
|
42
46
|
const emitter = new TypeEmitter(type => this.resolveTypeReference(type), emitReference);
|
|
43
47
|
return this.typeParameters.map(typeParam => {
|
|
44
48
|
const constraint = typeParam.constraint !== undefined ? emitter.emitType(typeParam.constraint) : undefined;
|
|
49
|
+
const defaultType = typeParam.default !== undefined ? emitter.emitType(typeParam.default) : undefined;
|
|
45
50
|
return ts.updateTypeParameterDeclaration(
|
|
46
51
|
/* node */ typeParam,
|
|
47
52
|
/* name */ typeParam.name,
|
|
48
53
|
/* constraint */ constraint,
|
|
49
|
-
/* defaultType */
|
|
54
|
+
/* defaultType */ defaultType);
|
|
50
55
|
});
|
|
51
56
|
}
|
|
52
57
|
resolveTypeReference(type) {
|
|
@@ -69,12 +74,20 @@ export class TypeParameterEmitter {
|
|
|
69
74
|
resolutionContext: type.getSourceFile().fileName,
|
|
70
75
|
};
|
|
71
76
|
}
|
|
77
|
+
// If no owning module is known, the reference needs to be exported to be able to emit an import
|
|
78
|
+
// statement for it. If the declaration is not exported, null is returned to prevent emit.
|
|
79
|
+
if (owningModule === null && !this.isStaticallyExported(declaration.node)) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
72
82
|
return new Reference(declaration.node, owningModule);
|
|
73
83
|
}
|
|
84
|
+
isStaticallyExported(decl) {
|
|
85
|
+
return isNamedClassDeclaration(decl) && this.reflector.isStaticallyExported(decl);
|
|
86
|
+
}
|
|
74
87
|
isLocalTypeParameter(decl) {
|
|
75
88
|
// Checking for local type parameters only occurs during resolution of type parameters, so it is
|
|
76
89
|
// guaranteed that type parameters are present.
|
|
77
90
|
return this.typeParameters.some(param => param === decl);
|
|
78
91
|
}
|
|
79
92
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZV9wYXJhbWV0ZXJfZW1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvdHlwZWNoZWNrL3NyYy90eXBlX3BhcmFtZXRlcl9lbWl0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpDLE9BQU8sRUFBZSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFrQix1QkFBdUIsRUFBaUIsTUFBTSxrQkFBa0IsQ0FBQztBQUUxRixPQUFPLEVBQUMsV0FBVyxFQUF5QixXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUcvRTs7R0FFRztBQUNILE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFDWSxjQUFtRSxFQUNuRSxTQUF5QjtRQUR6QixtQkFBYyxHQUFkLGNBQWMsQ0FBcUQ7UUFDbkUsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7SUFBRyxDQUFDO0lBRXpDOzs7O09BSUc7SUFDSCxPQUFPO1FBQ0wsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRTtZQUNyQyxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUMzQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFdBQVcsQ0FBQyxJQUEyQjtRQUM3QyxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDdEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sV0FBVyxDQUFDLElBQUks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LEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQzVELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7T3duaW5nTW9kdWxlLCBSZWZlcmVuY2V9IGZyb20gJy4uLy4uL2ltcG9ydHMnO1xuaW1wb3J0IHtEZWNsYXJhdGlvbk5vZGUsIGlzTmFtZWRDbGFzc0RlY2xhcmF0aW9uLCBSZWZsZWN0aW9uSG9zdH0gZnJvbSAnLi4vLi4vcmVmbGVjdGlvbic7XG5cbmltcG9ydCB7Y2FuRW1pdFR5cGUsIFJlc29sdmVkVHlwZVJlZmVyZW5jZSwgVHlwZUVtaXR0ZXJ9IGZyb20gJy4vdHlwZV9lbWl0dGVyJztcblxuXG4vKipcbiAqIFNlZSBgVHlwZUVtaXR0ZXJgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBlbWl0dGluZyBwcm9jZXNzLlxuICovXG5leHBvcnQgY2xhc3MgVHlwZVBhcmFtZXRlckVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgdHlwZVBhcmFtZXRlcnM6IHRzLk5vZGVBcnJheTx0cy5UeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24+fHVuZGVmaW5lZCxcbiAgICAgIHByaXZhdGUgcmVmbGVjdG9yOiBSZWZsZWN0aW9uSG9zdCkge31cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0eXBlIHBhcmFtZXRlcnMgY2FuIGJlIGVtaXR0ZWQuIElmIHRoaXMgcmV0dXJucyB0cnVlLCB0aGVuIGEgY2FsbCB0b1xuICAgKiBgZW1pdGAgaXMga25vd24gdG8gc3VjY2VlZC4gVmljZSB2ZXJzYSwgaWYgZmFsc2UgaXMgcmV0dXJuZWQgdGhlbiBgZW1pdGAgc2hvdWxkIG5vdCBiZVxuICAgKiBjYWxsZWQsIGFzIGl0IHdvdWxkIGZhaWwuXG4gICAqL1xuICBjYW5FbWl0KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnR5cGVQYXJhbWV0ZXJzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnR5cGVQYXJhbWV0ZXJzLmV2ZXJ5KHR5cGVQYXJhbSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5jYW5FbWl0VHlwZSh0eXBlUGFyYW0uY29uc3RyYWludCkgJiYgdGhpcy5jYW5FbWl0VHlwZSh0eXBlUGFyYW0uZGVmYXVsdCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNhbkVtaXRUeXBlKHR5cGU6IHRzLlR5cGVOb2RlfHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBjYW5FbWl0VHlwZSh0eXBlLCB0eXBlUmVmZXJlbmNlID0+IHRoaXMucmVzb2x2ZVR5cGVSZWZlcmVuY2UodHlwZVJlZmVyZW5jZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSB0eXBlIHBhcmFtZXRlcnMgdXNpbmcgdGhlIHByb3ZpZGVkIGVtaXR0ZXIgZnVuY3Rpb24gZm9yIGBSZWZlcmVuY2Vgcy5cbiAgICovXG4gIGVtaXQoZW1pdFJlZmVyZW5jZTogKHJlZjogUmVmZXJlbmNlKSA9PiB0cy5UeXBlTm9kZSk6IHRzLlR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbltdfHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMudHlwZVBhcmFtZXRlcnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBlbWl0dGVyID0gbmV3IFR5cGVFbWl0dGVyKHR5cGUgPT4gdGhpcy5yZXNvbHZlVHlwZVJlZmVyZW5jZSh0eXBlKSwgZW1pdFJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gdGhpcy50eXBlUGFyYW1ldGVycy5tYXAodHlwZVBhcmFtID0+IHtcbiAgICAgIGNvbnN0IGNvbnN0cmFpbnQgPVxuICAgICAgICAgIHR5cGVQYXJhbS5jb25zdHJhaW50ICE9PSB1bmRlZmluZWQgPyBlbWl0dGVyLmVtaXRUeXBlKHR5cGVQYXJhbS5jb25zdHJhaW50KSA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGRlZmF1bHRUeXBlID1cbiAgICAgICAgICB0eXBlUGFyYW0uZGVmYXVsdCAhPT0gdW5kZWZpbmVkID8gZW1pdHRlci5lbWl0VHlwZSh0eXBlUGFyYW0uZGVmYXVsdCkgOiB1bmRlZmluZWQ7XG5cbiAgICAgIHJldHVybiB0cy51cGRhdGVUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24oXG4gICAgICAgICAgLyogbm9kZSAqLyB0eXBlUGFyYW0sXG4gICAgICAgICAgLyogbmFtZSAqLyB0eXBlUGFyYW0ubmFtZSxcbiAgICAgICAgICAvKiBjb25zdHJhaW50ICovIGNvbnN0cmFpbnQsXG4gICAgICAgICAgLyogZGVmYXVsdFR5cGUgKi8gZGVmYXVsdFR5cGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlVHlwZVJlZmVyZW5jZSh0eXBlOiB0cy5UeXBlUmVmZXJlbmNlTm9kZSk6IFJlc29sdmVkVHlwZVJlZmVyZW5jZSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gdHMuaXNJZGVudGlmaWVyKHR5cGUudHlwZU5hbWUpID8gdHlwZS50eXBlTmFtZSA6IHR5cGUudHlwZU5hbWUucmlnaHQ7XG4gICAgY29uc3QgZGVjbGFyYXRpb24gPSB0aGlzLnJlZmxlY3Rvci5nZXREZWNsYXJhdGlvbk9mSWRlbnRpZmllcih0YXJnZXQpO1xuXG4gICAgLy8gSWYgbm8gZGVjbGFyYXRpb24gY291bGQgYmUgcmVzb2x2ZWQgb3IgZG9lcyBub3QgaGF2ZSBhIGB0cy5EZWNsYXJhdGlvbmAsIHRoZSB0eXBlIGNhbm5vdCBiZVxuICAgIC8vIHJlc29sdmVkLlxuICAgIGlmIChkZWNsYXJhdGlvbiA9PT0gbnVsbCB8fCBkZWNsYXJhdGlvbi5ub2RlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgZGVjbGFyYXRpb24gY29ycmVzcG9uZHMgd2l0aCBhIGxvY2FsIHR5cGUgcGFyYW1ldGVyLCB0aGUgdHlwZSByZWZlcmVuY2UgY2FuIGJlIHVzZWRcbiAgICAvLyBhcyBpcy5cbiAgICBpZiAodGhpcy5pc0xvY2FsVHlwZVBhcmFtZXRlcihkZWNsYXJhdGlvbi5ub2RlKSkge1xuICAgICAgcmV0dXJuIHR5cGU7XG4gICAgfVxuXG4gICAgbGV0IG93bmluZ01vZHVsZTogT3duaW5nTW9kdWxlfG51bGwgPSBudWxsO1xuICAgIGlmIChkZWNsYXJhdGlvbi52aWFNb2R1bGUgIT09IG51bGwpIHtcbiAgICAgIG93bmluZ01vZHVsZSA9IHtcbiAgICAgICAgc3BlY2lmaWVyOiBkZWNsYXJhdGlvbi52aWFNb2R1bGUsXG4gICAgICAgIHJlc29sdXRpb25Db250ZXh0OiB0eXBlLmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gSWYgbm8gb3duaW5nIG1vZHVsZSBpcyBrbm93biwgdGhlIHJlZmVyZW5jZSBuZWVkcyB0byBiZSBleHBvcnRlZCB0byBiZSBhYmxlIHRvIGVtaXQgYW4gaW1wb3J0XG4gICAgLy8gc3RhdGVtZW50IGZvciBpdC4gSWYgdGhlIGRlY2xhcmF0aW9uIGlzIG5vdCBleHBvcnRlZCwgbnVsbCBpcyByZXR1cm5lZCB0byBwcmV2ZW50IGVtaXQuXG4gICAgaWYgKG93bmluZ01vZHVsZSA9PT0gbnVsbCAmJiAhdGhpcy5pc1N0YXRpY2FsbHlFeHBvcnRlZChkZWNsYXJhdGlvbi5ub2RlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSZWZlcmVuY2UoZGVjbGFyYXRpb24ubm9kZSwgb3duaW5nTW9kdWxlKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNTdGF0aWNhbGx5RXhwb3J0ZWQoZGVjbDogRGVjbGFyYXRpb25Ob2RlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzTmFtZWRDbGFzc0RlY2xhcmF0aW9uKGRlY2wpICYmIHRoaXMucmVmbGVjdG9yLmlzU3RhdGljYWxseUV4cG9ydGVkKGRlY2wpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0xvY2FsVHlwZVBhcmFtZXRlcihkZWNsOiBEZWNsYXJhdGlvbk5vZGUpOiBib29sZWFuIHtcbiAgICAvLyBDaGVja2luZyBmb3IgbG9jYWwgdHlwZSBwYXJhbWV0ZXJzIG9ubHkgb2NjdXJzIGR1cmluZyByZXNvbHV0aW9uIG9mIHR5cGUgcGFyYW1ldGVycywgc28gaXQgaXNcbiAgICAvLyBndWFyYW50ZWVkIHRoYXQgdHlwZSBwYXJhbWV0ZXJzIGFyZSBwcmVzZW50LlxuICAgIHJldHVybiB0aGlzLnR5cGVQYXJhbWV0ZXJzIS5zb21lKHBhcmFtID0+IHBhcmFtID09PSBkZWNsKTtcbiAgfVxufVxuIl19
|
|
@@ -9,6 +9,14 @@
|
|
|
9
9
|
import * as ts from 'typescript';
|
|
10
10
|
import { AbsoluteFsPath } from '../../file_system';
|
|
11
11
|
import { DeclarationNode } from '../../reflection';
|
|
12
|
+
/**
|
|
13
|
+
* Type describing a symbol that is guaranteed to have a value declaration.
|
|
14
|
+
*/
|
|
15
|
+
export declare type SymbolWithValueDeclaration = ts.Symbol & {
|
|
16
|
+
valueDeclaration: ts.Declaration;
|
|
17
|
+
declarations: ts.Declaration[];
|
|
18
|
+
};
|
|
19
|
+
export declare function isSymbolWithValueDeclaration(symbol: ts.Symbol | null | undefined): symbol is SymbolWithValueDeclaration;
|
|
12
20
|
export declare function isDtsPath(filePath: string): boolean;
|
|
13
21
|
export declare function isNonDeclarationTsPath(filePath: string): boolean;
|
|
14
22
|
export declare function isFromDtsFile(node: ts.Node): boolean;
|
|
@@ -16,12 +16,20 @@
|
|
|
16
16
|
})(function (require, exports) {
|
|
17
17
|
"use strict";
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.toUnredirectedSourceFile = exports.isAssignment = exports.resolveModuleName = exports.nodeDebugInfo = exports.getRootDirs = exports.isExported = exports.isNamedDeclaration = exports.isTypeDeclaration = exports.isValueDeclaration = exports.isDeclaration = exports.identifierOfNode = exports.getTokenAtPosition = exports.getSourceFileOrNull = exports.getSourceFile = exports.nodeNameForError = exports.isFromDtsFile = exports.isNonDeclarationTsPath = exports.isDtsPath = void 0;
|
|
19
|
+
exports.toUnredirectedSourceFile = exports.isAssignment = exports.resolveModuleName = exports.nodeDebugInfo = exports.getRootDirs = exports.isExported = exports.isNamedDeclaration = exports.isTypeDeclaration = exports.isValueDeclaration = exports.isDeclaration = exports.identifierOfNode = exports.getTokenAtPosition = exports.getSourceFileOrNull = exports.getSourceFile = exports.nodeNameForError = exports.isFromDtsFile = exports.isNonDeclarationTsPath = exports.isDtsPath = exports.isSymbolWithValueDeclaration = void 0;
|
|
20
20
|
var tslib_1 = require("tslib");
|
|
21
21
|
var TS = /\.tsx?$/i;
|
|
22
22
|
var D_TS = /\.d\.ts$/i;
|
|
23
23
|
var ts = require("typescript");
|
|
24
24
|
var file_system_1 = require("@angular/compiler-cli/src/ngtsc/file_system");
|
|
25
|
+
function isSymbolWithValueDeclaration(symbol) {
|
|
26
|
+
// If there is a value declaration set, then the `declarations` property is never undefined. We
|
|
27
|
+
// still check for the property to exist as this matches with the type that `symbol` is narrowed
|
|
28
|
+
// to.
|
|
29
|
+
return symbol != null && symbol.valueDeclaration !== undefined &&
|
|
30
|
+
symbol.declarations !== undefined;
|
|
31
|
+
}
|
|
32
|
+
exports.isSymbolWithValueDeclaration = isSymbolWithValueDeclaration;
|
|
25
33
|
function isDtsPath(filePath) {
|
|
26
34
|
return D_TS.test(filePath);
|
|
27
35
|
}
|
|
@@ -165,4 +173,4 @@
|
|
|
165
173
|
}
|
|
166
174
|
exports.toUnredirectedSourceFile = toUnredirectedSourceFile;
|
|
167
175
|
});
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvdXRpbC9zcmMvdHlwZXNjcmlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7O0lBRUgsSUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDO0lBQ3RCLElBQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQztJQUV6QiwrQkFBaUM7SUFDakMsMkVBQWdFO0lBR2hFLFNBQWdCLFNBQVMsQ0FBQyxRQUFnQjtRQUN4QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUZELDhCQUVDO0lBRUQsU0FBZ0Isc0JBQXNCLENBQUMsUUFBZ0I7UUFDckQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRkQsd0RBRUM7SUFFRCxTQUFnQixhQUFhLENBQUMsSUFBYTtRQUN6QyxJQUFJLEVBQUUsR0FBNEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZELElBQUksRUFBRSxLQUFLLFNBQVMsRUFBRTtZQUNwQixFQUFFLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMvQztRQUNELE9BQU8sRUFBRSxLQUFLLFNBQVMsSUFBSSxFQUFFLENBQUMsaUJBQWlCLENBQUM7SUFDbEQsQ0FBQztJQU5ELHNDQU1DO0lBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsSUFBOEI7UUFDN0QsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN6RCxPQUFPLElBQUks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Q3hELElBQU0sWUFBWSxHQUFJLEVBQTJCLENBQUMsWUFBWSxDQUFDO1FBQy9ELElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRTtZQUM5QixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsT0FBTyxZQUFZLENBQUMsWUFBWSxDQUFDO0lBQ25DLENBQUM7SUFORCw0REFNQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5jb25zdCBUUyA9IC9cXC50c3g/JC9pO1xuY29uc3QgRF9UUyA9IC9cXC5kXFwudHMkL2k7XG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHtBYnNvbHV0ZUZzUGF0aCwgZ2V0RmlsZVN5c3RlbX0gZnJvbSAnLi4vLi4vZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtEZWNsYXJhdGlvbk5vZGV9IGZyb20gJy4uLy4uL3JlZmxlY3Rpb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNEdHNQYXRoKGZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIERfVFMudGVzdChmaWxlUGF0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vbkRlY2xhcmF0aW9uVHNQYXRoKGZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIFRTLnRlc3QoZmlsZVBhdGgpICYmICFEX1RTLnRlc3QoZmlsZVBhdGgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGcm9tRHRzRmlsZShub2RlOiB0cy5Ob2RlKTogYm9vbGVhbiB7XG4gIGxldCBzZjogdHMuU291cmNlRmlsZXx1bmRlZmluZWQgPSBub2RlLmdldFNvdXJjZUZpbGUoKTtcbiAgaWYgKHNmID09PSB1bmRlZmluZWQpIHtcbiAgICBzZiA9IHRzLmdldE9yaWdpbmFsTm9kZShub2RlKS5nZXRTb3VyY2VGaWxlKCk7XG4gIH1cbiAgcmV0dXJuIHNmICE9PSB1bmRlZmluZWQgJiYgc2YuaXNEZWNsYXJhdGlvbkZpbGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub2RlTmFtZUZvckVycm9yKG5vZGU6IHRzLk5vZGUme25hbWU/OiB0cy5Ob2RlfSk6IHN0cmluZyB7XG4gIGlmIChub2RlLm5hbWUgIT09IHVuZGVmaW5lZCAmJiB0cy5pc0lkZW50aWZpZXIobm9kZS5uYW1lKSkge1xuICAgIHJldHVybiBub2RlLm5hbWUudGV4dDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBraW5kID0gdHMuU3ludGF4S2luZFtub2RlLmtpbmRdO1xuICAgIGNvbnN0IHtsaW5lLCBjaGFyYWN0ZXJ9ID1cbiAgICAgICAgdHMuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24obm9kZS5nZXRTb3VyY2VGaWxlKCksIG5vZGUuZ2V0U3RhcnQoKSk7XG4gICAgcmV0dXJuIGAke2tpbmR9QCR7bGluZX06JHtjaGFyYWN0ZXJ9YDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U291cmNlRmlsZShub2RlOiB0cy5Ob2RlKTogdHMuU291cmNlRmlsZSB7XG4gIC8vIEluIGNlcnRhaW4gdHJhbnNmb3JtYXRpb24gY29udGV4dHMsIGB0cy5Ob2RlLmdldFNvdXJjZUZpbGUoKWAgY2FuIGFjdHVhbGx5IHJldHVybiBgdW5kZWZpbmVkYCxcbiAgLy8gZGVzcGl0ZSB0aGUgdHlwZSBzaWduYXR1cmUgbm90IGFsbG93aW5nIGl0LiBJbiB0aGF0IGV2ZW50LCBnZXQgdGhlIGB0cy5Tb3VyY2VGaWxlYCB2aWEgdGhlXG4gIC8vIG9yaWdpbmFsIG5vZGUgaW5zdGVhZCAod2hpY2ggd29ya3MpLlxuICBjb25zdCBkaXJlY3RTZiA9IG5vZGUuZ2V0U291cmNlRmlsZSgpIGFzIHRzLlNvdXJjZUZpbGUgfCB1bmRlZmluZWQ7XG4gIHJldHVybiBkaXJlY3RTZiAhPT0gdW5kZWZpbmVkID8gZGlyZWN0U2YgOiB0cy5nZXRPcmlnaW5hbE5vZGUobm9kZSkuZ2V0U291cmNlRmlsZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U291cmNlRmlsZU9yTnVsbChwcm9ncmFtOiB0cy5Qcm9ncmFtLCBmaWxlTmFtZTogQWJzb2x1dGVGc1BhdGgpOiB0cy5Tb3VyY2VGaWxlfFxuICAgIG51bGwge1xuICByZXR1cm4gcHJvZ3JhbS5nZXRTb3VyY2VGaWxlKGZpbGVOYW1lKSB8fCBudWxsO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb2tlbkF0UG9zaXRpb24oc2Y6IHRzLlNvdXJjZUZpbGUsIHBvczogbnVtYmVyKTogdHMuTm9kZSB7XG4gIC8vIGdldFRva2VuQXRQb3NpdGlvbiBpcyBwYXJ0IG9mIFR5cGVTY3JpcHQncyBwcml2YXRlIEFQSS5cbiAgcmV0dXJuICh0cyBhcyBhbnkpLmdldFRva2VuQXRQb3NpdGlvbihzZiwgcG9zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlkZW50aWZpZXJPZk5vZGUoZGVjbDogdHMuTm9kZSZ7bmFtZT86IHRzLk5vZGV9KTogdHMuSWRlbnRpZmllcnxudWxsIHtcbiAgaWYgKGRlY2wubmFtZSAhPT0gdW5kZWZpbmVkICYmIHRzLmlzSWRlbnRpZmllcihkZWNsLm5hbWUpKSB7XG4gICAgcmV0dXJuIGRlY2wubmFtZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEZWNsYXJhdGlvbihub2RlOiB0cy5Ob2RlKTogbm9kZSBpcyB0cy5EZWNsYXJhdGlvbiB7XG4gIHJldHVybiBpc1ZhbHVlRGVjbGFyYXRpb24obm9kZSkgfHwgaXNUeXBlRGVjbGFyYXRpb24obm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbHVlRGVjbGFyYXRpb24obm9kZTogdHMuTm9kZSk6IG5vZGUgaXMgdHMuQ2xhc3NEZWNsYXJhdGlvbnxcbiAgICB0cy5GdW5jdGlvbkRlY2xhcmF0aW9ufHRzLlZhcmlhYmxlRGVjbGFyYXRpb24ge1xuICByZXR1cm4gdHMuaXNDbGFzc0RlY2xhcmF0aW9uKG5vZGUpIHx8IHRzLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihub2RlKSB8fFxuICAgICAgdHMuaXNWYXJpYWJsZURlY2xhcmF0aW9uKG5vZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUeXBlRGVjbGFyYXRpb24obm9kZTogdHMuTm9kZSk6IG5vZGUgaXMgdHMuRW51bURlY2xhcmF0aW9ufFxuICAgIHRzLlR5cGVBbGlhc0RlY2xhcmF0aW9ufHRzLkludGVyZmFjZURlY2xhcmF0aW9uIHtcbiAgcmV0dXJuIHRzLmlzRW51bURlY2xhcmF0aW9uKG5vZGUpIHx8IHRzLmlzVHlwZUFsaWFzRGVjbGFyYXRpb24obm9kZSkgfHxcbiAgICAgIHRzLmlzSW50ZXJmYWNlRGVjbGFyYXRpb24obm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05hbWVkRGVjbGFyYXRpb24obm9kZTogdHMuTm9kZSk6IG5vZGUgaXMgdHMuRGVjbGFyYXRpb24me25hbWU6IHRzLklkZW50aWZpZXJ9IHtcbiAgY29uc3QgbmFtZWROb2RlID0gbm9kZSBhcyB7bmFtZT86IHRzLklkZW50aWZpZXJ9O1xuICByZXR1cm4gbmFtZWROb2RlLm5hbWUgIT09IHVuZGVmaW5lZCAmJiB0cy5pc0lkZW50aWZpZXIobmFtZWROb2RlLm5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFeHBvcnRlZChub2RlOiBEZWNsYXJhdGlvbk5vZGUpOiBib29sZWFuIHtcbiAgbGV0IHRvcExldmVsOiB0cy5Ob2RlID0gbm9kZTtcbiAgaWYgKHRzLmlzVmFyaWFibGVEZWNsYXJhdGlvbihub2RlKSAmJiB0cy5pc1ZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KG5vZGUucGFyZW50KSkge1xuICAgIHRvcExldmVsID0gbm9kZS5wYXJlbnQucGFyZW50O1xuICB9XG4gIHJldHVybiB0b3BMZXZlbC5tb2RpZmllcnMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdG9wTGV2ZWwubW9kaWZpZXJzLnNvbWUobW9kaWZpZXIgPT4gbW9kaWZpZXIua2luZCA9PT0gdHMuU3ludGF4S2luZC5FeHBvcnRLZXl3b3JkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvb3REaXJzKFxuICAgIGhvc3Q6IFBpY2s8dHMuQ29tcGlsZXJIb3N0LCAnZ2V0Q3VycmVudERpcmVjdG9yeSd8J2dldENhbm9uaWNhbEZpbGVOYW1lJz4sXG4gICAgb3B0aW9uczogdHMuQ29tcGlsZXJPcHRpb25zKTogQWJzb2x1dGVGc1BhdGhbXSB7XG4gIGNvbnN0IHJvb3REaXJzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBjd2QgPSBob3N0LmdldEN1cnJlbnREaXJlY3RvcnkoKTtcbiAgY29uc3QgZnMgPSBnZXRGaWxlU3lzdGVtKCk7XG4gIGlmIChvcHRpb25zLnJvb3REaXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICByb290RGlycy5wdXNoKC4uLm9wdGlvbnMucm9vdERpcnMpO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMucm9vdERpciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcm9vdERpcnMucHVzaChvcHRpb25zLnJvb3REaXIpO1xuICB9IGVsc2Uge1xuICAgIHJvb3REaXJzLnB1c2goY3dkKTtcbiAgfVxuXG4gIC8vIEluIFdpbmRvd3MgdGhlIGFib3ZlIG1pZ2h0IG5vdCBhbHdheXMgcmV0dXJuIHBvc2l4IHNlcGFyYXRlZCBwYXRoc1xuICAvLyBTZWU6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9ibG9iLzNmNzM1N2QzN2Y2NmM4NDJkNzBkODM1YmM5MjVlYzJhODczZWNmZWMvc3JjL2NvbXBpbGVyL3N5cy50cyNMNjUwXG4gIC8vIEFsc28gY29tcGlsZXIgb3B0aW9ucyBtaWdodCBiZSBzZXQgdmlhIGFuIEFQSSB3aGljaCBkb2Vzbid0IG5vcm1hbGl6ZSBwYXRoc1xuICByZXR1cm4gcm9vdERpcnMubWFwKHJvb3REaXIgPT4gZnMucmVzb2x2ZShjd2QsIGhvc3QuZ2V0Q2Fub25pY2FsRmlsZU5hbWUocm9vdERpcikpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGVEZWJ1Z0luZm8obm9kZTogdHMuTm9kZSk6IHN0cmluZyB7XG4gIGNvbnN0IHNmID0gZ2V0U291cmNlRmlsZShub2RlKTtcbiAgY29uc3Qge2xpbmUsIGNoYXJhY3Rlcn0gPSB0cy5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihzZiwgbm9kZS5wb3MpO1xuICByZXR1cm4gYFske3NmLmZpbGVOYW1lfTogJHt0cy5TeW50YXhLaW5kW25vZGUua2luZF19IEAgJHtsaW5lfToke2NoYXJhY3Rlcn1dYDtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBzcGVjaWZpZWQgYG1vZHVsZU5hbWVgIHVzaW5nIHRoZSBnaXZlbiBgY29tcGlsZXJPcHRpb25zYCBhbmQgYGNvbXBpbGVySG9zdGAuXG4gKlxuICogVGhpcyBoZWxwZXIgd2lsbCBhdHRlbXB0IHRvIHVzZSB0aGUgYENvbXBpbGVySG9zdC5yZXNvbHZlTW9kdWxlTmFtZXMoKWAgbWV0aG9kIGlmIGF2YWlsYWJsZS5cbiAqIE90aGVyd2lzZSBpdCB3aWxsIGZhbGxiYWNrIG9uIHRoZSBgdHMuUmVzb2x2ZU1vZHVsZU5hbWUoKWAgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTW9kdWxlTmFtZShcbiAgICBtb2R1bGVOYW1lOiBzdHJpbmcsIGNvbnRhaW5pbmdGaWxlOiBzdHJpbmcsIGNvbXBpbGVyT3B0aW9uczogdHMuQ29tcGlsZXJPcHRpb25zLFxuICAgIGNvbXBpbGVySG9zdDogdHMuTW9kdWxlUmVzb2x1dGlvbkhvc3QmUGljazx0cy5Db21waWxlckhvc3QsICdyZXNvbHZlTW9kdWxlTmFtZXMnPixcbiAgICBtb2R1bGVSZXNvbHV0aW9uQ2FjaGU6IHRzLk1vZHVsZVJlc29sdXRpb25DYWNoZXxudWxsKTogdHMuUmVzb2x2ZWRNb2R1bGV8dW5kZWZpbmVkIHtcbiAgaWYgKGNvbXBpbGVySG9zdC5yZXNvbHZlTW9kdWxlTmFtZXMpIHtcbiAgICByZXR1cm4gY29tcGlsZXJIb3N0LnJlc29sdmVNb2R1bGVOYW1lcyhcbiAgICAgICAgW21vZHVsZU5hbWVdLCBjb250YWluaW5nRmlsZSxcbiAgICAgICAgdW5kZWZpbmVkLCAgLy8gcmV1c2VkTmFtZXNcbiAgICAgICAgdW5kZWZpbmVkLCAgLy8gcmVkaXJlY3RlZFJlZmVyZW5jZVxuICAgICAgICBjb21waWxlck9wdGlvbnMpWzBdO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB0c1xuICAgICAgICAucmVzb2x2ZU1vZHVsZU5hbWUoXG4gICAgICAgICAgICBtb2R1bGVOYW1lLCBjb250YWluaW5nRmlsZSwgY29tcGlsZXJPcHRpb25zLCBjb21waWxlckhvc3QsXG4gICAgICAgICAgICBtb2R1bGVSZXNvbHV0aW9uQ2FjaGUgIT09IG51bGwgPyBtb2R1bGVSZXNvbHV0aW9uQ2FjaGUgOiB1bmRlZmluZWQpXG4gICAgICAgIC5yZXNvbHZlZE1vZHVsZTtcbiAgfVxufVxuXG4vKiogUmV0dXJucyB0cnVlIGlmIHRoZSBub2RlIGlzIGFuIGFzc2lnbm1lbnQgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fzc2lnbm1lbnQobm9kZTogdHMuTm9kZSk6IG5vZGUgaXMgdHMuQmluYXJ5RXhwcmVzc2lvbiB7XG4gIHJldHVybiB0cy5pc0JpbmFyeUV4cHJlc3Npb24obm9kZSkgJiYgbm9kZS5vcGVyYXRvclRva2VuLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuRXF1YWxzVG9rZW47XG59XG5cbi8qKlxuICogQXNzZXJ0cyB0aGF0IHRoZSBrZXlzIGBLYCBmb3JtIGEgc3Vic2V0IG9mIHRoZSBrZXlzIG9mIGBUYC5cbiAqL1xuZXhwb3J0IHR5cGUgU3Vic2V0T2ZLZXlzPFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IEs7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgdHlwZSBgVGAsIHdpdGggYSB0cmFuc2Zvcm1hdGlvbiBhcHBsaWVkIHRoYXQgdHVybnMgYWxsIG1ldGhvZHMgKGV2ZW4gb3B0aW9uYWxcbiAqIG9uZXMpIGludG8gcmVxdWlyZWQgZmllbGRzICh3aGljaCBtYXkgYmUgYHVuZGVmaW5lZGAsIGlmIHRoZSBtZXRob2Qgd2FzIG9wdGlvbmFsKS5cbiAqL1xuZXhwb3J0IHR5cGUgUmVxdWlyZWREZWxlZ2F0aW9uczxUPiA9IHtcbiAgW00gaW4ga2V5b2YgUmVxdWlyZWQ8VD5dOiBUW01dO1xufTtcblxuLyoqXG4gKiBTb3VyY2UgZmlsZXMgbWF5IGJlY29tZSByZWRpcmVjdHMgdG8gb3RoZXIgc291cmNlIGZpbGVzIHdoZW4gdGhlaXIgcGFja2FnZSBuYW1lIGFuZCB2ZXJzaW9uIGFyZVxuICogaWRlbnRpY2FsLiBUeXBlU2NyaXB0IGNyZWF0ZXMgYSBwcm94eSBzb3VyY2UgZmlsZSBmb3Igc3VjaCBzb3VyY2UgZmlsZXMgd2hpY2ggaGFzIGFuIGludGVybmFsXG4gKiBgcmVkaXJlY3RJbmZvYCBwcm9wZXJ0eSB0aGF0IHJlZmVycyB0byB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGUuXG4gKi9cbmludGVyZmFjZSBSZWRpcmVjdGVkU291cmNlRmlsZSBleHRlbmRzIHRzLlNvdXJjZUZpbGUge1xuICByZWRpcmVjdEluZm8/OiB7dW5yZWRpcmVjdGVkOiB0cy5Tb3VyY2VGaWxlO307XG59XG5cbi8qKlxuICogT2J0YWlucyB0aGUgbm9uLXJlZGlyZWN0ZWQgc291cmNlIGZpbGUgZm9yIGBzZmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1VucmVkaXJlY3RlZFNvdXJjZUZpbGUoc2Y6IHRzLlNvdXJjZUZpbGUpOiB0cy5Tb3VyY2VGaWxlIHtcbiAgY29uc3QgcmVkaXJlY3RJbmZvID0gKHNmIGFzIFJlZGlyZWN0ZWRTb3VyY2VGaWxlKS5yZWRpcmVjdEluZm87XG4gIGlmIChyZWRpcmVjdEluZm8gPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBzZjtcbiAgfVxuICByZXR1cm4gcmVkaXJlY3RJbmZvLnVucmVkaXJlY3RlZDtcbn1cbiJdfQ==
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvdXRpbC9zcmMvdHlwZXNjcmlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7O0lBRUgsSUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDO0lBQ3RCLElBQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQztJQUV6QiwrQkFBaUM7SUFDakMsMkVBQWdFO0lBV2hFLFNBQWdCLDRCQUE0QixDQUFDLE1BQ1M7UUFDcEQsK0ZBQStGO1FBQy9GLGdHQUFnRztRQUNoRyxNQUFNO1FBQ04sT0FBTyxNQUFNLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTO1lBQzFELE1BQU0sQ0FBQyxZQUFZLEtBQUssU0FBUyxDQUFDO0lBQ3hDLENBQUM7SUFQRCxvRUFPQztJQUVELFNBQWdCLFNBQVMsQ0FBQyxRQUFnQjtRQUN4QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUZELDhCQUVDO0lBRUQsU0FBZ0Isc0JBQXNCLENBQUMsUUFBZ0I7UUFDckQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRkQsd0RBRUM7SUFFRCxTQUFnQixhQUFhLENBQUMsSUFBYTtRQUN6QyxJQUFJLEVBQUUsR0FBNEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZELElBQUksRUFBRSxLQUFLLFNBQVMsRUFBRTtZQUNwQixFQUFFLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMvQztRQUNELE9BQU8sRUFBRSxLQUFLLFNBQVMs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QyxJQUFhO1FBQ3hDLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO0lBQzlGLENBQUM7SUFGRCxvQ0FFQztJQXdCRDs7T0FFRztJQUNILFNBQWdCLHdCQUF3QixDQUFDLEVBQWlCO1FBQ3hELElBQU0sWUFBWSxHQUFJLEVBQTJCLENBQUMsWUFBWSxDQUFDO1FBQy9ELElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRTtZQUM5QixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsT0FBTyxZQUFZLENBQUMsWUFBWSxDQUFDO0lBQ25DLENBQUM7SUFORCw0REFNQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5jb25zdCBUUyA9IC9cXC50c3g/JC9pO1xuY29uc3QgRF9UUyA9IC9cXC5kXFwudHMkL2k7XG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHtBYnNvbHV0ZUZzUGF0aCwgZ2V0RmlsZVN5c3RlbX0gZnJvbSAnLi4vLi4vZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtEZWNsYXJhdGlvbk5vZGV9IGZyb20gJy4uLy4uL3JlZmxlY3Rpb24nO1xuXG4vKipcbiAqIFR5cGUgZGVzY3JpYmluZyBhIHN5bWJvbCB0aGF0IGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBhIHZhbHVlIGRlY2xhcmF0aW9uLlxuICovXG5leHBvcnQgdHlwZSBTeW1ib2xXaXRoVmFsdWVEZWNsYXJhdGlvbiA9IHRzLlN5bWJvbCZ7XG4gIHZhbHVlRGVjbGFyYXRpb246IHRzLkRlY2xhcmF0aW9uO1xuICBkZWNsYXJhdGlvbnM6IHRzLkRlY2xhcmF0aW9uW107XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaXNTeW1ib2xXaXRoVmFsdWVEZWNsYXJhdGlvbihzeW1ib2w6IHRzLlN5bWJvbHxudWxsfFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkKTogc3ltYm9sIGlzIFN5bWJvbFdpdGhWYWx1ZURlY2xhcmF0aW9uIHtcbiAgLy8gSWYgdGhlcmUgaXMgYSB2YWx1ZSBkZWNsYXJhdGlvbiBzZXQsIHRoZW4gdGhlIGBkZWNsYXJhdGlvbnNgIHByb3BlcnR5IGlzIG5ldmVyIHVuZGVmaW5lZC4gV2VcbiAgLy8gc3RpbGwgY2hlY2sgZm9yIHRoZSBwcm9wZXJ0eSB0byBleGlzdCBhcyB0aGlzIG1hdGNoZXMgd2l0aCB0aGUgdHlwZSB0aGF0IGBzeW1ib2xgIGlzIG5hcnJvd2VkXG4gIC8vIHRvLlxuICByZXR1cm4gc3ltYm9sICE9IG51bGwgJiYgc3ltYm9sLnZhbHVlRGVjbGFyYXRpb24gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgc3ltYm9sLmRlY2xhcmF0aW9ucyAhPT0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEdHNQYXRoKGZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIERfVFMudGVzdChmaWxlUGF0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vbkRlY2xhcmF0aW9uVHNQYXRoKGZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIFRTLnRlc3QoZmlsZVBhdGgpICYmICFEX1RTLnRlc3QoZmlsZVBhdGgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGcm9tRHRzRmlsZShub2RlOiB0cy5Ob2RlKTogYm9vbGVhbiB7XG4gIGxldCBzZjogdHMuU291cmNlRmlsZXx1bmRlZmluZWQgPSBub2RlLmdldFNvdXJjZUZpbGUoKTtcbiAgaWYgKHNmID09PSB1bmRlZmluZWQpIHtcbiAgICBzZiA9IHRzLmdldE9yaWdpbmFsTm9kZShub2RlKS5nZXRTb3VyY2VGaWxlKCk7XG4gIH1cbiAgcmV0dXJuIHNmICE9PSB1bmRlZmluZWQgJiYgc2YuaXNEZWNsYXJhdGlvbkZpbGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub2RlTmFtZUZvckVycm9yKG5vZGU6IHRzLk5vZGUme25hbWU/OiB0cy5Ob2RlfSk6IHN0cmluZyB7XG4gIGlmIChub2RlLm5hbWUgIT09IHVuZGVmaW5lZCAmJiB0cy5pc0lkZW50aWZpZXIobm9kZS5uYW1lKSkge1xuICAgIHJldHVybiBub2RlLm5hbWUudGV4dDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBraW5kID0gdHMuU3ludGF4S2luZFtub2RlLmtpbmRdO1xuICAgIGNvbnN0IHtsaW5lLCBjaGFyYWN0ZXJ9ID1cbiAgICAgICAgdHMuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24obm9kZS5nZXRTb3VyY2VGaWxlKCksIG5vZGUuZ2V0U3RhcnQoKSk7XG4gICAgcmV0dXJuIGAke2tpbmR9QCR7bGluZX06JHtjaGFyYWN0ZXJ9YDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U291cmNlRmlsZShub2RlOiB0cy5Ob2RlKTogdHMuU291cmNlRmlsZSB7XG4gIC8vIEluIGNlcnRhaW4gdHJhbnNmb3JtYXRpb24gY29udGV4dHMsIGB0cy5Ob2RlLmdldFNvdXJjZUZpbGUoKWAgY2FuIGFjdHVhbGx5IHJldHVybiBgdW5kZWZpbmVkYCxcbiAgLy8gZGVzcGl0ZSB0aGUgdHlwZSBzaWduYXR1cmUgbm90IGFsbG93aW5nIGl0LiBJbiB0aGF0IGV2ZW50LCBnZXQgdGhlIGB0cy5Tb3VyY2VGaWxlYCB2aWEgdGhlXG4gIC8vIG9yaWdpbmFsIG5vZGUgaW5zdGVhZCAod2hpY2ggd29ya3MpLlxuICBjb25zdCBkaXJlY3RTZiA9IG5vZGUuZ2V0U291cmNlRmlsZSgpIGFzIHRzLlNvdXJjZUZpbGUgfCB1bmRlZmluZWQ7XG4gIHJldHVybiBkaXJlY3RTZiAhPT0gdW5kZWZpbmVkID8gZGlyZWN0U2YgOiB0cy5nZXRPcmlnaW5hbE5vZGUobm9kZSkuZ2V0U291cmNlRmlsZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U291cmNlRmlsZU9yTnVsbChwcm9ncmFtOiB0cy5Qcm9ncmFtLCBmaWxlTmFtZTogQWJzb2x1dGVGc1BhdGgpOiB0cy5Tb3VyY2VGaWxlfFxuICAgIG51bGwge1xuICByZXR1cm4gcHJvZ3JhbS5nZXRTb3VyY2VGaWxlKGZpbGVOYW1lKSB8fCBudWxsO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb2tlbkF0UG9zaXRpb24oc2Y6IHRzLlNvdXJjZUZpbGUsIHBvczogbnVtYmVyKTogdHMuTm9kZSB7XG4gIC8vIGdldFRva2VuQXRQb3NpdGlvbiBpcyBwYXJ0IG9mIFR5cGVTY3JpcHQncyBwcml2YXRlIEFQSS5cbiAgcmV0dXJuICh0cyBhcyBhbnkpLmdldFRva2VuQXRQb3NpdGlvbihzZiwgcG9zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlkZW50aWZpZXJPZk5vZGUoZGVjbDogdHMuTm9kZSZ7bmFtZT86IHRzLk5vZGV9KTogdHMuSWRlbnRpZmllcnxudWxsIHtcbiAgaWYgKGRlY2wubmFtZSAhPT0gdW5kZWZpbmVkICYmIHRzLmlzSWRlbnRpZmllcihkZWNsLm5hbWUpKSB7XG4gICAgcmV0dXJuIGRlY2wubmFtZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEZWNsYXJhdGlvbihub2RlOiB0cy5Ob2RlKTogbm9kZSBpcyB0cy5EZWNsYXJhdGlvbiB7XG4gIHJldHVybiBpc1ZhbHVlRGVjbGFyYXRpb24obm9kZSkgfHwgaXNUeXBlRGVjbGFyYXRpb24obm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbHVlRGVjbGFyYXRpb24obm9kZTogdHMuTm9kZSk6IG5vZGUgaXMgdHMuQ2xhc3NEZWNsYXJhdGlvbnxcbiAgICB0cy5GdW5jdGlvbkRlY2xhcmF0aW9ufHRzLlZhcmlhYmxlRGVjbGFyYXRpb24ge1xuICByZXR1cm4gdHMuaXNDbGFzc0RlY2xhcmF0aW9uKG5vZGUpIHx8IHRzLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihub2RlKSB8fFxuICAgICAgdHMuaXNWYXJpYWJsZURlY2xhcmF0aW9uKG5vZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUeXBlRGVjbGFyYXRpb24obm9kZTogdHMuTm9kZSk6IG5vZGUgaXMgdHMuRW51bURlY2xhcmF0aW9ufFxuICAgIHRzLlR5cGVBbGlhc0RlY2xhcmF0aW9ufHRzLkludGVyZmFjZURlY2xhcmF0aW9uIHtcbiAgcmV0dXJuIHRzLmlzRW51bURlY2xhcmF0aW9uKG5vZGUpIHx8IHRzLmlzVHlwZUFsaWFzRGVjbGFyYXRpb24obm9kZSkgfHxcbiAgICAgIHRzLmlzSW50ZXJmYWNlRGVjbGFyYXRpb24obm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05hbWVkRGVjbGFyYXRpb24obm9kZTogdHMuTm9kZSk6IG5vZGUgaXMgdHMuRGVjbGFyYXRpb24me25hbWU6IHRzLklkZW50aWZpZXJ9IHtcbiAgY29uc3QgbmFtZWROb2RlID0gbm9kZSBhcyB7bmFtZT86IHRzLklkZW50aWZpZXJ9O1xuICByZXR1cm4gbmFtZWROb2RlLm5hbWUgIT09IHVuZGVmaW5lZCAmJiB0cy5pc0lkZW50aWZpZXIobmFtZWROb2RlLm5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFeHBvcnRlZChub2RlOiBEZWNsYXJhdGlvbk5vZGUpOiBib29sZWFuIHtcbiAgbGV0IHRvcExldmVsOiB0cy5Ob2RlID0gbm9kZTtcbiAgaWYgKHRzLmlzVmFyaWFibGVEZWNsYXJhdGlvbihub2RlKSAmJiB0cy5pc1ZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KG5vZGUucGFyZW50KSkge1xuICAgIHRvcExldmVsID0gbm9kZS5wYXJlbnQucGFyZW50O1xuICB9XG4gIHJldHVybiB0b3BMZXZlbC5tb2RpZmllcnMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdG9wTGV2ZWwubW9kaWZpZXJzLnNvbWUobW9kaWZpZXIgPT4gbW9kaWZpZXIua2luZCA9PT0gdHMuU3ludGF4S2luZC5FeHBvcnRLZXl3b3JkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvb3REaXJzKFxuICAgIGhvc3Q6IFBpY2s8dHMuQ29tcGlsZXJIb3N0LCAnZ2V0Q3VycmVudERpcmVjdG9yeSd8J2dldENhbm9uaWNhbEZpbGVOYW1lJz4sXG4gICAgb3B0aW9uczogdHMuQ29tcGlsZXJPcHRpb25zKTogQWJzb2x1dGVGc1BhdGhbXSB7XG4gIGNvbnN0IHJvb3REaXJzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBjd2QgPSBob3N0LmdldEN1cnJlbnREaXJlY3RvcnkoKTtcbiAgY29uc3QgZnMgPSBnZXRGaWxlU3lzdGVtKCk7XG4gIGlmIChvcHRpb25zLnJvb3REaXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICByb290RGlycy5wdXNoKC4uLm9wdGlvbnMucm9vdERpcnMpO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMucm9vdERpciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcm9vdERpcnMucHVzaChvcHRpb25zLnJvb3REaXIpO1xuICB9IGVsc2Uge1xuICAgIHJvb3REaXJzLnB1c2goY3dkKTtcbiAgfVxuXG4gIC8vIEluIFdpbmRvd3MgdGhlIGFib3ZlIG1pZ2h0IG5vdCBhbHdheXMgcmV0dXJuIHBvc2l4IHNlcGFyYXRlZCBwYXRoc1xuICAvLyBTZWU6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9ibG9iLzNmNzM1N2QzN2Y2NmM4NDJkNzBkODM1YmM5MjVlYzJhODczZWNmZWMvc3JjL2NvbXBpbGVyL3N5cy50cyNMNjUwXG4gIC8vIEFsc28gY29tcGlsZXIgb3B0aW9ucyBtaWdodCBiZSBzZXQgdmlhIGFuIEFQSSB3aGljaCBkb2Vzbid0IG5vcm1hbGl6ZSBwYXRoc1xuICByZXR1cm4gcm9vdERpcnMubWFwKHJvb3REaXIgPT4gZnMucmVzb2x2ZShjd2QsIGhvc3QuZ2V0Q2Fub25pY2FsRmlsZU5hbWUocm9vdERpcikpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGVEZWJ1Z0luZm8obm9kZTogdHMuTm9kZSk6IHN0cmluZyB7XG4gIGNvbnN0IHNmID0gZ2V0U291cmNlRmlsZShub2RlKTtcbiAgY29uc3Qge2xpbmUsIGNoYXJhY3Rlcn0gPSB0cy5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihzZiwgbm9kZS5wb3MpO1xuICByZXR1cm4gYFske3NmLmZpbGVOYW1lfTogJHt0cy5TeW50YXhLaW5kW25vZGUua2luZF19IEAgJHtsaW5lfToke2NoYXJhY3Rlcn1dYDtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBzcGVjaWZpZWQgYG1vZHVsZU5hbWVgIHVzaW5nIHRoZSBnaXZlbiBgY29tcGlsZXJPcHRpb25zYCBhbmQgYGNvbXBpbGVySG9zdGAuXG4gKlxuICogVGhpcyBoZWxwZXIgd2lsbCBhdHRlbXB0IHRvIHVzZSB0aGUgYENvbXBpbGVySG9zdC5yZXNvbHZlTW9kdWxlTmFtZXMoKWAgbWV0aG9kIGlmIGF2YWlsYWJsZS5cbiAqIE90aGVyd2lzZSBpdCB3aWxsIGZhbGxiYWNrIG9uIHRoZSBgdHMuUmVzb2x2ZU1vZHVsZU5hbWUoKWAgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTW9kdWxlTmFtZShcbiAgICBtb2R1bGVOYW1lOiBzdHJpbmcsIGNvbnRhaW5pbmdGaWxlOiBzdHJpbmcsIGNvbXBpbGVyT3B0aW9uczogdHMuQ29tcGlsZXJPcHRpb25zLFxuICAgIGNvbXBpbGVySG9zdDogdHMuTW9kdWxlUmVzb2x1dGlvbkhvc3QmUGljazx0cy5Db21waWxlckhvc3QsICdyZXNvbHZlTW9kdWxlTmFtZXMnPixcbiAgICBtb2R1bGVSZXNvbHV0aW9uQ2FjaGU6IHRzLk1vZHVsZVJlc29sdXRpb25DYWNoZXxudWxsKTogdHMuUmVzb2x2ZWRNb2R1bGV8dW5kZWZpbmVkIHtcbiAgaWYgKGNvbXBpbGVySG9zdC5yZXNvbHZlTW9kdWxlTmFtZXMpIHtcbiAgICByZXR1cm4gY29tcGlsZXJIb3N0LnJlc29sdmVNb2R1bGVOYW1lcyhcbiAgICAgICAgW21vZHVsZU5hbWVdLCBjb250YWluaW5nRmlsZSxcbiAgICAgICAgdW5kZWZpbmVkLCAgLy8gcmV1c2VkTmFtZXNcbiAgICAgICAgdW5kZWZpbmVkLCAgLy8gcmVkaXJlY3RlZFJlZmVyZW5jZVxuICAgICAgICBjb21waWxlck9wdGlvbnMpWzBdO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB0c1xuICAgICAgICAucmVzb2x2ZU1vZHVsZU5hbWUoXG4gICAgICAgICAgICBtb2R1bGVOYW1lLCBjb250YWluaW5nRmlsZSwgY29tcGlsZXJPcHRpb25zLCBjb21waWxlckhvc3QsXG4gICAgICAgICAgICBtb2R1bGVSZXNvbHV0aW9uQ2FjaGUgIT09IG51bGwgPyBtb2R1bGVSZXNvbHV0aW9uQ2FjaGUgOiB1bmRlZmluZWQpXG4gICAgICAgIC5yZXNvbHZlZE1vZHVsZTtcbiAgfVxufVxuXG4vKiogUmV0dXJucyB0cnVlIGlmIHRoZSBub2RlIGlzIGFuIGFzc2lnbm1lbnQgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fzc2lnbm1lbnQobm9kZTogdHMuTm9kZSk6IG5vZGUgaXMgdHMuQmluYXJ5RXhwcmVzc2lvbiB7XG4gIHJldHVybiB0cy5pc0JpbmFyeUV4cHJlc3Npb24obm9kZSkgJiYgbm9kZS5vcGVyYXRvclRva2VuLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuRXF1YWxzVG9rZW47XG59XG5cbi8qKlxuICogQXNzZXJ0cyB0aGF0IHRoZSBrZXlzIGBLYCBmb3JtIGEgc3Vic2V0IG9mIHRoZSBrZXlzIG9mIGBUYC5cbiAqL1xuZXhwb3J0IHR5cGUgU3Vic2V0T2ZLZXlzPFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IEs7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgdHlwZSBgVGAsIHdpdGggYSB0cmFuc2Zvcm1hdGlvbiBhcHBsaWVkIHRoYXQgdHVybnMgYWxsIG1ldGhvZHMgKGV2ZW4gb3B0aW9uYWxcbiAqIG9uZXMpIGludG8gcmVxdWlyZWQgZmllbGRzICh3aGljaCBtYXkgYmUgYHVuZGVmaW5lZGAsIGlmIHRoZSBtZXRob2Qgd2FzIG9wdGlvbmFsKS5cbiAqL1xuZXhwb3J0IHR5cGUgUmVxdWlyZWREZWxlZ2F0aW9uczxUPiA9IHtcbiAgW00gaW4ga2V5b2YgUmVxdWlyZWQ8VD5dOiBUW01dO1xufTtcblxuLyoqXG4gKiBTb3VyY2UgZmlsZXMgbWF5IGJlY29tZSByZWRpcmVjdHMgdG8gb3RoZXIgc291cmNlIGZpbGVzIHdoZW4gdGhlaXIgcGFja2FnZSBuYW1lIGFuZCB2ZXJzaW9uIGFyZVxuICogaWRlbnRpY2FsLiBUeXBlU2NyaXB0IGNyZWF0ZXMgYSBwcm94eSBzb3VyY2UgZmlsZSBmb3Igc3VjaCBzb3VyY2UgZmlsZXMgd2hpY2ggaGFzIGFuIGludGVybmFsXG4gKiBgcmVkaXJlY3RJbmZvYCBwcm9wZXJ0eSB0aGF0IHJlZmVycyB0byB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGUuXG4gKi9cbmludGVyZmFjZSBSZWRpcmVjdGVkU291cmNlRmlsZSBleHRlbmRzIHRzLlNvdXJjZUZpbGUge1xuICByZWRpcmVjdEluZm8/OiB7dW5yZWRpcmVjdGVkOiB0cy5Tb3VyY2VGaWxlO307XG59XG5cbi8qKlxuICogT2J0YWlucyB0aGUgbm9uLXJlZGlyZWN0ZWQgc291cmNlIGZpbGUgZm9yIGBzZmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1VucmVkaXJlY3RlZFNvdXJjZUZpbGUoc2Y6IHRzLlNvdXJjZUZpbGUpOiB0cy5Tb3VyY2VGaWxlIHtcbiAgY29uc3QgcmVkaXJlY3RJbmZvID0gKHNmIGFzIFJlZGlyZWN0ZWRTb3VyY2VGaWxlKS5yZWRpcmVjdEluZm87XG4gIGlmIChyZWRpcmVjdEluZm8gPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBzZjtcbiAgfVxuICByZXR1cm4gcmVkaXJlY3RJbmZvLnVucmVkaXJlY3RlZDtcbn1cbiJdfQ==
|
|
@@ -9,6 +9,13 @@ const TS = /\.tsx?$/i;
|
|
|
9
9
|
const D_TS = /\.d\.ts$/i;
|
|
10
10
|
import * as ts from 'typescript';
|
|
11
11
|
import { getFileSystem } from '../../file_system';
|
|
12
|
+
export function isSymbolWithValueDeclaration(symbol) {
|
|
13
|
+
// If there is a value declaration set, then the `declarations` property is never undefined. We
|
|
14
|
+
// still check for the property to exist as this matches with the type that `symbol` is narrowed
|
|
15
|
+
// to.
|
|
16
|
+
return symbol != null && symbol.valueDeclaration !== undefined &&
|
|
17
|
+
symbol.declarations !== undefined;
|
|
18
|
+
}
|
|
12
19
|
export function isDtsPath(filePath) {
|
|
13
20
|
return D_TS.test(filePath);
|
|
14
21
|
}
|
|
@@ -133,4 +140,4 @@ export function toUnredirectedSourceFile(sf) {
|
|
|
133
140
|
}
|
|
134
141
|
return redirectInfo.unredirected;
|
|
135
142
|
}
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvdXRpbC9zcmMvdHlwZXNjcmlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUM7QUFDdEIsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDO0FBRXpCLE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pDLE9BQU8sRUFBaUIsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFHaEUsTUFBTSxVQUFVLFNBQVMsQ0FBQyxRQUFnQjtJQUN4QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxRQUFnQjtJQUNyRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLElBQWE7SUFDekMsSUFBSSxFQUFFLEdBQTRCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2RCxJQUFJLEVBQUUsS0FBSyxTQUFTLEVBQUU7UUFDcEIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7S0FDL0M7SUFDRCxPQUFPLEVBQUUsS0FBSyxTQUFTLElBQUksRUFBRSxDQUFDLGlCQUFpQixDQUFDO0FBQ2xELENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsSUFBOEI7SUFDN0QsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENB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WSxDQUFDLFlBQVksQ0FBQztBQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmNvbnN0IFRTID0gL1xcLnRzeD8kL2k7XG5jb25zdCBEX1RTID0gL1xcLmRcXC50cyQvaTtcblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge0Fic29sdXRlRnNQYXRoLCBnZXRGaWxlU3lzdGVtfSBmcm9tICcuLi8uLi9maWxlX3N5c3RlbSc7XG5pbXBvcnQge0RlY2xhcmF0aW9uTm9kZX0gZnJvbSAnLi4vLi4vcmVmbGVjdGlvbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0R0c1BhdGgoZmlsZVBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gRF9UUy50ZXN0KGZpbGVQYXRoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9uRGVjbGFyYXRpb25Uc1BhdGgoZmlsZVBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gVFMudGVzdChmaWxlUGF0aCkgJiYgIURfVFMudGVzdChmaWxlUGF0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Zyb21EdHNGaWxlKG5vZGU6IHRzLk5vZGUpOiBib29sZWFuIHtcbiAgbGV0IHNmOiB0cy5Tb3VyY2VGaWxlfHVuZGVmaW5lZCA9IG5vZGUuZ2V0U291cmNlRmlsZSgpO1xuICBpZiAoc2YgPT09IHVuZGVmaW5lZCkge1xuICAgIHNmID0gdHMuZ2V0T3JpZ2luYWxOb2RlKG5vZGUpLmdldFNvdXJjZUZpbGUoKTtcbiAgfVxuICByZXR1cm4gc2YgIT09IHVuZGVmaW5lZCAmJiBzZi5pc0RlY2xhcmF0aW9uRmlsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGVOYW1lRm9yRXJyb3Iobm9kZTogdHMuTm9kZSZ7bmFtZT86IHRzLk5vZGV9KTogc3RyaW5nIHtcbiAgaWYgKG5vZGUubmFtZSAhPT0gdW5kZWZpbmVkICYmIHRzLmlzSWRlbnRpZmllcihub2RlLm5hbWUpKSB7XG4gICAgcmV0dXJuIG5vZGUubmFtZS50ZXh0O1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGtpbmQgPSB0cy5TeW50YXhLaW5kW25vZGUua2luZF07XG4gICAgY29uc3Qge2xpbmUsIGNoYXJhY3Rlcn0gPVxuICAgICAgICB0cy5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihub2RlLmdldFNvdXJjZUZpbGUoKSwgbm9kZS5nZXRTdGFydCgpKTtcbiAgICByZXR1cm4gYCR7a2luZH1AJHtsaW5lfToke2NoYXJhY3Rlcn1gO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTb3VyY2VGaWxlKG5vZGU6IHRzLk5vZGUpOiB0cy5Tb3VyY2VGaWxlIHtcbiAgLy8gSW4gY2VydGFpbiB0cmFuc2Zvcm1hdGlvbiBjb250ZXh0cywgYHRzLk5vZGUuZ2V0U291cmNlRmlsZSgpYCBjYW4gYWN0dWFsbHkgcmV0dXJuIGB1bmRlZmluZWRgLFxuICAvLyBkZXNwaXRlIHRoZSB0eXBlIHNpZ25hdHVyZSBub3QgYWxsb3dpbmcgaXQuIEluIHRoYXQgZXZlbnQsIGdldCB0aGUgYHRzLlNvdXJjZUZpbGVgIHZpYSB0aGVcbiAgLy8gb3JpZ2luYWwgbm9kZSBpbnN0ZWFkICh3aGljaCB3b3JrcykuXG4gIGNvbnN0IGRpcmVjdFNmID0gbm9kZS5nZXRTb3VyY2VGaWxlKCkgYXMgdHMuU291cmNlRmlsZSB8IHVuZGVmaW5lZDtcbiAgcmV0dXJuIGRpcmVjdFNmICE9PSB1bmRlZmluZWQgPyBkaXJlY3RTZiA6IHRzLmdldE9yaWdpbmFsTm9kZShub2RlKS5nZXRTb3VyY2VGaWxlKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTb3VyY2VGaWxlT3JOdWxsKHByb2dyYW06IHRzLlByb2dyYW0sIGZpbGVOYW1lOiBBYnNvbHV0ZUZzUGF0aCk6IHRzLlNvdXJjZUZpbGV8XG4gICAgbnVsbCB7XG4gIHJldHVybiBwcm9ncmFtLmdldFNvdXJjZUZpbGUoZmlsZU5hbWUpIHx8IG51bGw7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRva2VuQXRQb3NpdGlvbihzZjogdHMuU291cmNlRmlsZSwgcG9zOiBudW1iZXIpOiB0cy5Ob2RlIHtcbiAgLy8gZ2V0VG9rZW5BdFBvc2l0aW9uIGlzIHBhcnQgb2YgVHlwZVNjcmlwdCdzIHByaXZhdGUgQVBJLlxuICByZXR1cm4gKHRzIGFzIGFueSkuZ2V0VG9rZW5BdFBvc2l0aW9uKHNmLCBwb3MpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpZmllck9mTm9kZShkZWNsOiB0cy5Ob2RlJntuYW1lPzogdHMuTm9kZX0pOiB0cy5JZGVudGlmaWVyfG51bGwge1xuICBpZiAoZGVjbC5uYW1lICE9PSB1bmRlZmluZWQgJiYgdHMuaXNJZGVudGlmaWVyKGRlY2wubmFtZSkpIHtcbiAgICByZXR1cm4gZGVjbC5uYW1lO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RlY2xhcmF0aW9uKG5vZGU6IHRzLk5vZGUpOiBub2RlIGlzIHRzLkRlY2xhcmF0aW9uIHtcbiAgcmV0dXJuIGlzVmFsdWVEZWNsYXJhdGlvbihub2RlKSB8fCBpc1R5cGVEZWNsYXJhdGlvbihub2RlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsdWVEZWNsYXJhdGlvbihub2RlOiB0cy5Ob2RlKTogbm9kZSBpcyB0cy5DbGFzc0RlY2xhcmF0aW9ufFxuICAgIHRzLkZ1bmN0aW9uRGVjbGFyYXRpb258dHMuVmFyaWFibGVEZWNsYXJhdGlvbiB7XG4gIHJldHVybiB0cy5pc0NsYXNzRGVjbGFyYXRpb24obm9kZSkgfHwgdHMuaXNGdW5jdGlvbkRlY2xhcmF0aW9uKG5vZGUpIHx8XG4gICAgICB0cy5pc1ZhcmlhYmxlRGVjbGFyYXRpb24obm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1R5cGVEZWNsYXJhdGlvbihub2RlOiB0cy5Ob2RlKTogbm9kZSBpcyB0cy5FbnVtRGVjbGFyYXRpb258XG4gICAgdHMuVHlwZUFsaWFzRGVjbGFyYXRpb258dHMuSW50ZXJmYWNlRGVjbGFyYXRpb24ge1xuICByZXR1cm4gdHMuaXNFbnVtRGVjbGFyYXRpb24obm9kZSkgfHwgdHMuaXNUeXBlQWxpYXNEZWNsYXJhdGlvbihub2RlKSB8fFxuICAgICAgdHMuaXNJbnRlcmZhY2VEZWNsYXJhdGlvbihub2RlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTmFtZWREZWNsYXJhdGlvbihub2RlOiB0cy5Ob2RlKTogbm9kZSBpcyB0cy5EZWNsYXJhdGlvbiZ7bmFtZTogdHMuSWRlbnRpZmllcn0ge1xuICBjb25zdCBuYW1lZE5vZGUgPSBub2RlIGFzIHtuYW1lPzogdHMuSWRlbnRpZmllcn07XG4gIHJldHVybiBuYW1lZE5vZGUubmFtZSAhPT0gdW5kZWZpbmVkICYmIHRzLmlzSWRlbnRpZmllcihuYW1lZE5vZGUubmFtZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0V4cG9ydGVkKG5vZGU6IERlY2xhcmF0aW9uTm9kZSk6IGJvb2xlYW4ge1xuICBsZXQgdG9wTGV2ZWw6IHRzLk5vZGUgPSBub2RlO1xuICBpZiAodHMuaXNWYXJpYWJsZURlY2xhcmF0aW9uKG5vZGUpICYmIHRzLmlzVmFyaWFibGVEZWNsYXJhdGlvbkxpc3Qobm9kZS5wYXJlbnQpKSB7XG4gICAgdG9wTGV2ZWwgPSBub2RlLnBhcmVudC5wYXJlbnQ7XG4gIH1cbiAgcmV0dXJuIHRvcExldmVsLm1vZGlmaWVycyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0b3BMZXZlbC5tb2RpZmllcnMuc29tZShtb2RpZmllciA9PiBtb2RpZmllci5raW5kID09PSB0cy5TeW50YXhLaW5kLkV4cG9ydEtleXdvcmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um9vdERpcnMoXG4gICAgaG9zdDogUGljazx0cy5Db21waWxlckhvc3QsICdnZXRDdXJyZW50RGlyZWN0b3J5J3wnZ2V0Q2Fub25pY2FsRmlsZU5hbWUnPixcbiAgICBvcHRpb25zOiB0cy5Db21waWxlck9wdGlvbnMpOiBBYnNvbHV0ZUZzUGF0aFtdIHtcbiAgY29uc3Qgcm9vdERpcnM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IGN3ZCA9IGhvc3QuZ2V0Q3VycmVudERpcmVjdG9yeSgpO1xuICBjb25zdCBmcyA9IGdldEZpbGVTeXN0ZW0oKTtcbiAgaWYgKG9wdGlvbnMucm9vdERpcnMgIT09IHVuZGVmaW5lZCkge1xuICAgIHJvb3REaXJzLnB1c2goLi4ub3B0aW9ucy5yb290RGlycyk7XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5yb290RGlyICE9PSB1bmRlZmluZWQpIHtcbiAgICByb290RGlycy5wdXNoKG9wdGlvbnMucm9vdERpcik7XG4gIH0gZWxzZSB7XG4gICAgcm9vdERpcnMucHVzaChjd2QpO1xuICB9XG5cbiAgLy8gSW4gV2luZG93cyB0aGUgYWJvdmUgbWlnaHQgbm90IGFsd2F5cyByZXR1cm4gcG9zaXggc2VwYXJhdGVkIHBhdGhzXG4gIC8vIFNlZTpcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2Jsb2IvM2Y3MzU3ZDM3ZjY2Yzg0MmQ3MGQ4MzViYzkyNWVjMmE4NzNlY2ZlYy9zcmMvY29tcGlsZXIvc3lzLnRzI0w2NTBcbiAgLy8gQWxzbyBjb21waWxlciBvcHRpb25zIG1pZ2h0IGJlIHNldCB2aWEgYW4gQVBJIHdoaWNoIGRvZXNuJ3Qgbm9ybWFsaXplIHBhdGhzXG4gIHJldHVybiByb290RGlycy5tYXAocm9vdERpciA9PiBmcy5yZXNvbHZlKGN3ZCwgaG9zdC5nZXRDYW5vbmljYWxGaWxlTmFtZShyb290RGlyKSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9kZURlYnVnSW5mbyhub2RlOiB0cy5Ob2RlKTogc3RyaW5nIHtcbiAgY29uc3Qgc2YgPSBnZXRTb3VyY2VGaWxlKG5vZGUpO1xuICBjb25zdCB7bGluZSwgY2hhcmFjdGVyfSA9IHRzLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKHNmLCBub2RlLnBvcyk7XG4gIHJldHVybiBgWyR7c2YuZmlsZU5hbWV9OiAke3RzLlN5bnRheEtpbmRbbm9kZS5raW5kXX0gQCAke2xpbmV9OiR7Y2hhcmFjdGVyfV1gO1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIHNwZWNpZmllZCBgbW9kdWxlTmFtZWAgdXNpbmcgdGhlIGdpdmVuIGBjb21waWxlck9wdGlvbnNgIGFuZCBgY29tcGlsZXJIb3N0YC5cbiAqXG4gKiBUaGlzIGhlbHBlciB3aWxsIGF0dGVtcHQgdG8gdXNlIHRoZSBgQ29tcGlsZXJIb3N0LnJlc29sdmVNb2R1bGVOYW1lcygpYCBtZXRob2QgaWYgYXZhaWxhYmxlLlxuICogT3RoZXJ3aXNlIGl0IHdpbGwgZmFsbGJhY2sgb24gdGhlIGB0cy5SZXNvbHZlTW9kdWxlTmFtZSgpYCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVNb2R1bGVOYW1lKFxuICAgIG1vZHVsZU5hbWU6IHN0cmluZywgY29udGFpbmluZ0ZpbGU6IHN0cmluZywgY29tcGlsZXJPcHRpb25zOiB0cy5Db21waWxlck9wdGlvbnMsXG4gICAgY29tcGlsZXJIb3N0OiB0cy5Nb2R1bGVSZXNvbHV0aW9uSG9zdCZQaWNrPHRzLkNvbXBpbGVySG9zdCwgJ3Jlc29sdmVNb2R1bGVOYW1lcyc+LFxuICAgIG1vZHVsZVJlc29sdXRpb25DYWNoZTogdHMuTW9kdWxlUmVzb2x1dGlvbkNhY2hlfG51bGwpOiB0cy5SZXNvbHZlZE1vZHVsZXx1bmRlZmluZWQge1xuICBpZiAoY29tcGlsZXJIb3N0LnJlc29sdmVNb2R1bGVOYW1lcykge1xuICAgIHJldHVybiBjb21waWxlckhvc3QucmVzb2x2ZU1vZHVsZU5hbWVzKFxuICAgICAgICBbbW9kdWxlTmFtZV0sIGNvbnRhaW5pbmdGaWxlLFxuICAgICAgICB1bmRlZmluZWQsICAvLyByZXVzZWROYW1lc1xuICAgICAgICB1bmRlZmluZWQsICAvLyByZWRpcmVjdGVkUmVmZXJlbmNlXG4gICAgICAgIGNvbXBpbGVyT3B0aW9ucylbMF07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRzXG4gICAgICAgIC5yZXNvbHZlTW9kdWxlTmFtZShcbiAgICAgICAgICAgIG1vZHVsZU5hbWUsIGNvbnRhaW5pbmdGaWxlLCBjb21waWxlck9wdGlvbnMsIGNvbXBpbGVySG9zdCxcbiAgICAgICAgICAgIG1vZHVsZVJlc29sdXRpb25DYWNoZSAhPT0gbnVsbCA/IG1vZHVsZVJlc29sdXRpb25DYWNoZSA6IHVuZGVmaW5lZClcbiAgICAgICAgLnJlc29sdmVkTW9kdWxlO1xuICB9XG59XG5cbi8qKiBSZXR1cm5zIHRydWUgaWYgdGhlIG5vZGUgaXMgYW4gYXNzaWdubWVudCBleHByZXNzaW9uLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQXNzaWdubWVudChub2RlOiB0cy5Ob2RlKTogbm9kZSBpcyB0cy5CaW5hcnlFeHByZXNzaW9uIHtcbiAgcmV0dXJuIHRzLmlzQmluYXJ5RXhwcmVzc2lvbihub2RlKSAmJiBub2RlLm9wZXJhdG9yVG9rZW4ua2luZCA9PT0gdHMuU3ludGF4S2luZC5FcXVhbHNUb2tlbjtcbn1cblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgdGhlIGtleXMgYEtgIGZvcm0gYSBzdWJzZXQgb2YgdGhlIGtleXMgb2YgYFRgLlxuICovXG5leHBvcnQgdHlwZSBTdWJzZXRPZktleXM8VCwgSyBleHRlbmRzIGtleW9mIFQ+ID0gSztcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSB0eXBlIGBUYCwgd2l0aCBhIHRyYW5zZm9ybWF0aW9uIGFwcGxpZWQgdGhhdCB0dXJucyBhbGwgbWV0aG9kcyAoZXZlbiBvcHRpb25hbFxuICogb25lcykgaW50byByZXF1aXJlZCBmaWVsZHMgKHdoaWNoIG1heSBiZSBgdW5kZWZpbmVkYCwgaWYgdGhlIG1ldGhvZCB3YXMgb3B0aW9uYWwpLlxuICovXG5leHBvcnQgdHlwZSBSZXF1aXJlZERlbGVnYXRpb25zPFQ+ID0ge1xuICBbTSBpbiBrZXlvZiBSZXF1aXJlZDxUPl06IFRbTV07XG59O1xuXG4vKipcbiAqIFNvdXJjZSBmaWxlcyBtYXkgYmVjb21lIHJlZGlyZWN0cyB0byBvdGhlciBzb3VyY2UgZmlsZXMgd2hlbiB0aGVpciBwYWNrYWdlIG5hbWUgYW5kIHZlcnNpb24gYXJlXG4gKiBpZGVudGljYWwuIFR5cGVTY3JpcHQgY3JlYXRlcyBhIHByb3h5IHNvdXJjZSBmaWxlIGZvciBzdWNoIHNvdXJjZSBmaWxlcyB3aGljaCBoYXMgYW4gaW50ZXJuYWxcbiAqIGByZWRpcmVjdEluZm9gIHByb3BlcnR5IHRoYXQgcmVmZXJzIHRvIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZS5cbiAqL1xuaW50ZXJmYWNlIFJlZGlyZWN0ZWRTb3VyY2VGaWxlIGV4dGVuZHMgdHMuU291cmNlRmlsZSB7XG4gIHJlZGlyZWN0SW5mbz86IHt1bnJlZGlyZWN0ZWQ6IHRzLlNvdXJjZUZpbGU7fTtcbn1cblxuLyoqXG4gKiBPYnRhaW5zIHRoZSBub24tcmVkaXJlY3RlZCBzb3VyY2UgZmlsZSBmb3IgYHNmYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvVW5yZWRpcmVjdGVkU291cmNlRmlsZShzZjogdHMuU291cmNlRmlsZSk6IHRzLlNvdXJjZUZpbGUge1xuICBjb25zdCByZWRpcmVjdEluZm8gPSAoc2YgYXMgUmVkaXJlY3RlZFNvdXJjZUZpbGUpLnJlZGlyZWN0SW5mbztcbiAgaWYgKHJlZGlyZWN0SW5mbyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHNmO1xuICB9XG4gIHJldHVybiByZWRpcmVjdEluZm8udW5yZWRpcmVjdGVkO1xufVxuIl19
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvdXRpbC9zcmMvdHlwZXNjcmlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUM7QUFDdEIsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDO0FBRXpCLE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pDLE9BQU8sRUFBaUIsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFXaEUsTUFBTSxVQUFVLDRCQUE0QixDQUFDLE1BQ1M7SUFDcEQsK0ZBQStGO0lBQy9GLGdHQUFnRztJQUNoRyxNQUFNO0lBQ04sT0FBTyxNQUFNLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTO1FBQzFELE1BQU0sQ0FBQyxZQUFZLEtBQUssU0FBUyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLFFBQWdCO0lBQ3hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLFFBQWdCO0lBQ3JELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsSUFBYTtJQUN6QyxJQUFJLEVBQUUsR0FBNEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZELElBQUksRUFBRSxLQUFLLFNBQVMsRUFBRTtRQUNwQixFQUFFLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztLQUMvQztJ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Q0FBQztBQUM5RixDQUFDO0FBd0JEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEVBQWlCO0lBQ3hELE1BQU0sWUFBWSxHQUFJLEVBQTJCLENBQUMsWUFBWSxDQUFDO0lBQy9ELElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRTtRQUM5QixPQUFPLEVBQUUsQ0FBQztLQUNYO0lBQ0QsT0FBTyxZQUFZLENBQUMsWUFBWSxDQUFDO0FBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuY29uc3QgVFMgPSAvXFwudHN4PyQvaTtcbmNvbnN0IERfVFMgPSAvXFwuZFxcLnRzJC9pO1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7QWJzb2x1dGVGc1BhdGgsIGdldEZpbGVTeXN0ZW19IGZyb20gJy4uLy4uL2ZpbGVfc3lzdGVtJztcbmltcG9ydCB7RGVjbGFyYXRpb25Ob2RlfSBmcm9tICcuLi8uLi9yZWZsZWN0aW9uJztcblxuLyoqXG4gKiBUeXBlIGRlc2NyaWJpbmcgYSBzeW1ib2wgdGhhdCBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYSB2YWx1ZSBkZWNsYXJhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgU3ltYm9sV2l0aFZhbHVlRGVjbGFyYXRpb24gPSB0cy5TeW1ib2wme1xuICB2YWx1ZURlY2xhcmF0aW9uOiB0cy5EZWNsYXJhdGlvbjtcbiAgZGVjbGFyYXRpb25zOiB0cy5EZWNsYXJhdGlvbltdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3ltYm9sV2l0aFZhbHVlRGVjbGFyYXRpb24oc3ltYm9sOiB0cy5TeW1ib2x8bnVsbHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCk6IHN5bWJvbCBpcyBTeW1ib2xXaXRoVmFsdWVEZWNsYXJhdGlvbiB7XG4gIC8vIElmIHRoZXJlIGlzIGEgdmFsdWUgZGVjbGFyYXRpb24gc2V0LCB0aGVuIHRoZSBgZGVjbGFyYXRpb25zYCBwcm9wZXJ0eSBpcyBuZXZlciB1bmRlZmluZWQuIFdlXG4gIC8vIHN0aWxsIGNoZWNrIGZvciB0aGUgcHJvcGVydHkgdG8gZXhpc3QgYXMgdGhpcyBtYXRjaGVzIHdpdGggdGhlIHR5cGUgdGhhdCBgc3ltYm9sYCBpcyBuYXJyb3dlZFxuICAvLyB0by5cbiAgcmV0dXJuIHN5bWJvbCAhPSBudWxsICYmIHN5bWJvbC52YWx1ZURlY2xhcmF0aW9uICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHN5bWJvbC5kZWNsYXJhdGlvbnMgIT09IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRHRzUGF0aChmaWxlUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBEX1RTLnRlc3QoZmlsZVBhdGgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb25EZWNsYXJhdGlvblRzUGF0aChmaWxlUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBUUy50ZXN0KGZpbGVQYXRoKSAmJiAhRF9UUy50ZXN0KGZpbGVQYXRoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRnJvbUR0c0ZpbGUobm9kZTogdHMuTm9kZSk6IGJvb2xlYW4ge1xuICBsZXQgc2Y6IHRzLlNvdXJjZUZpbGV8dW5kZWZpbmVkID0gbm9kZS5nZXRTb3VyY2VGaWxlKCk7XG4gIGlmIChzZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgc2YgPSB0cy5nZXRPcmlnaW5hbE5vZGUobm9kZSkuZ2V0U291cmNlRmlsZSgpO1xuICB9XG4gIHJldHVybiBzZiAhPT0gdW5kZWZpbmVkICYmIHNmLmlzRGVjbGFyYXRpb25GaWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9kZU5hbWVGb3JFcnJvcihub2RlOiB0cy5Ob2RlJntuYW1lPzogdHMuTm9kZX0pOiBzdHJpbmcge1xuICBpZiAobm9kZS5uYW1lICE9PSB1bmRlZmluZWQgJiYgdHMuaXNJZGVudGlmaWVyKG5vZGUubmFtZSkpIHtcbiAgICByZXR1cm4gbm9kZS5uYW1lLnRleHQ7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qga2luZCA9IHRzLlN5bnRheEtpbmRbbm9kZS5raW5kXTtcbiAgICBjb25zdCB7bGluZSwgY2hhcmFjdGVyfSA9XG4gICAgICAgIHRzLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKG5vZGUuZ2V0U291cmNlRmlsZSgpLCBub2RlLmdldFN0YXJ0KCkpO1xuICAgIHJldHVybiBgJHtraW5kfUAke2xpbmV9OiR7Y2hhcmFjdGVyfWA7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNvdXJjZUZpbGUobm9kZTogdHMuTm9kZSk6IHRzLlNvdXJjZUZpbGUge1xuICAvLyBJbiBjZXJ0YWluIHRyYW5zZm9ybWF0aW9uIGNvbnRleHRzLCBgdHMuTm9kZS5nZXRTb3VyY2VGaWxlKClgIGNhbiBhY3R1YWxseSByZXR1cm4gYHVuZGVmaW5lZGAsXG4gIC8vIGRlc3BpdGUgdGhlIHR5cGUgc2lnbmF0dXJlIG5vdCBhbGxvd2luZyBpdC4gSW4gdGhhdCBldmVudCwgZ2V0IHRoZSBgdHMuU291cmNlRmlsZWAgdmlhIHRoZVxuICAvLyBvcmlnaW5hbCBub2RlIGluc3RlYWQgKHdoaWNoIHdvcmtzKS5cbiAgY29uc3QgZGlyZWN0U2YgPSBub2RlLmdldFNvdXJjZUZpbGUoKSBhcyB0cy5Tb3VyY2VGaWxlIHwgdW5kZWZpbmVkO1xuICByZXR1cm4gZGlyZWN0U2YgIT09IHVuZGVmaW5lZCA/IGRpcmVjdFNmIDogdHMuZ2V0T3JpZ2luYWxOb2RlKG5vZGUpLmdldFNvdXJjZUZpbGUoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNvdXJjZUZpbGVPck51bGwocHJvZ3JhbTogdHMuUHJvZ3JhbSwgZmlsZU5hbWU6IEFic29sdXRlRnNQYXRoKTogdHMuU291cmNlRmlsZXxcbiAgICBudWxsIHtcbiAgcmV0dXJuIHByb2dyYW0uZ2V0U291cmNlRmlsZShmaWxlTmFtZSkgfHwgbnVsbDtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9rZW5BdFBvc2l0aW9uKHNmOiB0cy5Tb3VyY2VGaWxlLCBwb3M6IG51bWJlcik6IHRzLk5vZGUge1xuICAvLyBnZXRUb2tlbkF0UG9zaXRpb24gaXMgcGFydCBvZiBUeXBlU2NyaXB0J3MgcHJpdmF0ZSBBUEkuXG4gIHJldHVybiAodHMgYXMgYW55KS5nZXRUb2tlbkF0UG9zaXRpb24oc2YsIHBvcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyT2ZOb2RlKGRlY2w6IHRzLk5vZGUme25hbWU/OiB0cy5Ob2RlfSk6IHRzLklkZW50aWZpZXJ8bnVsbCB7XG4gIGlmIChkZWNsLm5hbWUgIT09IHVuZGVmaW5lZCAmJiB0cy5pc0lkZW50aWZpZXIoZGVjbC5uYW1lKSkge1xuICAgIHJldHVybiBkZWNsLm5hbWU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGVjbGFyYXRpb24obm9kZTogdHMuTm9kZSk6IG5vZGUgaXMgdHMuRGVjbGFyYXRpb24ge1xuICByZXR1cm4gaXNWYWx1ZURlY2xhcmF0aW9uKG5vZGUpIHx8IGlzVHlwZURlY2xhcmF0aW9uKG5vZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWx1ZURlY2xhcmF0aW9uKG5vZGU6IHRzLk5vZGUpOiBub2RlIGlzIHRzLkNsYXNzRGVjbGFyYXRpb258XG4gICAgdHMuRnVuY3Rpb25EZWNsYXJhdGlvbnx0cy5WYXJpYWJsZURlY2xhcmF0aW9uIHtcbiAgcmV0dXJuIHRzLmlzQ2xhc3NEZWNsYXJhdGlvbihub2RlKSB8fCB0cy5pc0Z1bmN0aW9uRGVjbGFyYXRpb24obm9kZSkgfHxcbiAgICAgIHRzLmlzVmFyaWFibGVEZWNsYXJhdGlvbihub2RlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVHlwZURlY2xhcmF0aW9uKG5vZGU6IHRzLk5vZGUpOiBub2RlIGlzIHRzLkVudW1EZWNsYXJhdGlvbnxcbiAgICB0cy5UeXBlQWxpYXNEZWNsYXJhdGlvbnx0cy5JbnRlcmZhY2VEZWNsYXJhdGlvbiB7XG4gIHJldHVybiB0cy5pc0VudW1EZWNsYXJhdGlvbihub2RlKSB8fCB0cy5pc1R5cGVBbGlhc0RlY2xhcmF0aW9uKG5vZGUpIHx8XG4gICAgICB0cy5pc0ludGVyZmFjZURlY2xhcmF0aW9uKG5vZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOYW1lZERlY2xhcmF0aW9uKG5vZGU6IHRzLk5vZGUpOiBub2RlIGlzIHRzLkRlY2xhcmF0aW9uJntuYW1lOiB0cy5JZGVudGlmaWVyfSB7XG4gIGNvbnN0IG5hbWVkTm9kZSA9IG5vZGUgYXMge25hbWU/OiB0cy5JZGVudGlmaWVyfTtcbiAgcmV0dXJuIG5hbWVkTm9kZS5uYW1lICE9PSB1bmRlZmluZWQgJiYgdHMuaXNJZGVudGlmaWVyKG5hbWVkTm9kZS5uYW1lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRXhwb3J0ZWQobm9kZTogRGVjbGFyYXRpb25Ob2RlKTogYm9vbGVhbiB7XG4gIGxldCB0b3BMZXZlbDogdHMuTm9kZSA9IG5vZGU7XG4gIGlmICh0cy5pc1ZhcmlhYmxlRGVjbGFyYXRpb24obm9kZSkgJiYgdHMuaXNWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChub2RlLnBhcmVudCkpIHtcbiAgICB0b3BMZXZlbCA9IG5vZGUucGFyZW50LnBhcmVudDtcbiAgfVxuICByZXR1cm4gdG9wTGV2ZWwubW9kaWZpZXJzICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRvcExldmVsLm1vZGlmaWVycy5zb21lKG1vZGlmaWVyID0+IG1vZGlmaWVyLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuRXhwb3J0S2V5d29yZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb290RGlycyhcbiAgICBob3N0OiBQaWNrPHRzLkNvbXBpbGVySG9zdCwgJ2dldEN1cnJlbnREaXJlY3RvcnknfCdnZXRDYW5vbmljYWxGaWxlTmFtZSc+LFxuICAgIG9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucyk6IEFic29sdXRlRnNQYXRoW10ge1xuICBjb25zdCByb290RGlyczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgY3dkID0gaG9zdC5nZXRDdXJyZW50RGlyZWN0b3J5KCk7XG4gIGNvbnN0IGZzID0gZ2V0RmlsZVN5c3RlbSgpO1xuICBpZiAob3B0aW9ucy5yb290RGlycyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcm9vdERpcnMucHVzaCguLi5vcHRpb25zLnJvb3REaXJzKTtcbiAgfSBlbHNlIGlmIChvcHRpb25zLnJvb3REaXIgIT09IHVuZGVmaW5lZCkge1xuICAgIHJvb3REaXJzLnB1c2gob3B0aW9ucy5yb290RGlyKTtcbiAgfSBlbHNlIHtcbiAgICByb290RGlycy5wdXNoKGN3ZCk7XG4gIH1cblxuICAvLyBJbiBXaW5kb3dzIHRoZSBhYm92ZSBtaWdodCBub3QgYWx3YXlzIHJldHVybiBwb3NpeCBzZXBhcmF0ZWQgcGF0aHNcbiAgLy8gU2VlOlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvYmxvYi8zZjczNTdkMzdmNjZjODQyZDcwZDgzNWJjOTI1ZWMyYTg3M2VjZmVjL3NyYy9jb21waWxlci9zeXMudHMjTDY1MFxuICAvLyBBbHNvIGNvbXBpbGVyIG9wdGlvbnMgbWlnaHQgYmUgc2V0IHZpYSBhbiBBUEkgd2hpY2ggZG9lc24ndCBub3JtYWxpemUgcGF0aHNcbiAgcmV0dXJuIHJvb3REaXJzLm1hcChyb290RGlyID0+IGZzLnJlc29sdmUoY3dkLCBob3N0LmdldENhbm9uaWNhbEZpbGVOYW1lKHJvb3REaXIpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub2RlRGVidWdJbmZvKG5vZGU6IHRzLk5vZGUpOiBzdHJpbmcge1xuICBjb25zdCBzZiA9IGdldFNvdXJjZUZpbGUobm9kZSk7XG4gIGNvbnN0IHtsaW5lLCBjaGFyYWN0ZXJ9ID0gdHMuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oc2YsIG5vZGUucG9zKTtcbiAgcmV0dXJuIGBbJHtzZi5maWxlTmFtZX06ICR7dHMuU3ludGF4S2luZFtub2RlLmtpbmRdfSBAICR7bGluZX06JHtjaGFyYWN0ZXJ9XWA7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgc3BlY2lmaWVkIGBtb2R1bGVOYW1lYCB1c2luZyB0aGUgZ2l2ZW4gYGNvbXBpbGVyT3B0aW9uc2AgYW5kIGBjb21waWxlckhvc3RgLlxuICpcbiAqIFRoaXMgaGVscGVyIHdpbGwgYXR0ZW1wdCB0byB1c2UgdGhlIGBDb21waWxlckhvc3QucmVzb2x2ZU1vZHVsZU5hbWVzKClgIG1ldGhvZCBpZiBhdmFpbGFibGUuXG4gKiBPdGhlcndpc2UgaXQgd2lsbCBmYWxsYmFjayBvbiB0aGUgYHRzLlJlc29sdmVNb2R1bGVOYW1lKClgIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU1vZHVsZU5hbWUoXG4gICAgbW9kdWxlTmFtZTogc3RyaW5nLCBjb250YWluaW5nRmlsZTogc3RyaW5nLCBjb21waWxlck9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucyxcbiAgICBjb21waWxlckhvc3Q6IHRzLk1vZHVsZVJlc29sdXRpb25Ib3N0JlBpY2s8dHMuQ29tcGlsZXJIb3N0LCAncmVzb2x2ZU1vZHVsZU5hbWVzJz4sXG4gICAgbW9kdWxlUmVzb2x1dGlvbkNhY2hlOiB0cy5Nb2R1bGVSZXNvbHV0aW9uQ2FjaGV8bnVsbCk6IHRzLlJlc29sdmVkTW9kdWxlfHVuZGVmaW5lZCB7XG4gIGlmIChjb21waWxlckhvc3QucmVzb2x2ZU1vZHVsZU5hbWVzKSB7XG4gICAgcmV0dXJuIGNvbXBpbGVySG9zdC5yZXNvbHZlTW9kdWxlTmFtZXMoXG4gICAgICAgIFttb2R1bGVOYW1lXSwgY29udGFpbmluZ0ZpbGUsXG4gICAgICAgIHVuZGVmaW5lZCwgIC8vIHJldXNlZE5hbWVzXG4gICAgICAgIHVuZGVmaW5lZCwgIC8vIHJlZGlyZWN0ZWRSZWZlcmVuY2VcbiAgICAgICAgY29tcGlsZXJPcHRpb25zKVswXTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdHNcbiAgICAgICAgLnJlc29sdmVNb2R1bGVOYW1lKFxuICAgICAgICAgICAgbW9kdWxlTmFtZSwgY29udGFpbmluZ0ZpbGUsIGNvbXBpbGVyT3B0aW9ucywgY29tcGlsZXJIb3N0LFxuICAgICAgICAgICAgbW9kdWxlUmVzb2x1dGlvbkNhY2hlICE9PSBudWxsID8gbW9kdWxlUmVzb2x1dGlvbkNhY2hlIDogdW5kZWZpbmVkKVxuICAgICAgICAucmVzb2x2ZWRNb2R1bGU7XG4gIH1cbn1cblxuLyoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgbm9kZSBpcyBhbiBhc3NpZ25tZW50IGV4cHJlc3Npb24uICovXG5leHBvcnQgZnVuY3Rpb24gaXNBc3NpZ25tZW50KG5vZGU6IHRzLk5vZGUpOiBub2RlIGlzIHRzLkJpbmFyeUV4cHJlc3Npb24ge1xuICByZXR1cm4gdHMuaXNCaW5hcnlFeHByZXNzaW9uKG5vZGUpICYmIG5vZGUub3BlcmF0b3JUb2tlbi5raW5kID09PSB0cy5TeW50YXhLaW5kLkVxdWFsc1Rva2VuO1xufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCB0aGUga2V5cyBgS2AgZm9ybSBhIHN1YnNldCBvZiB0aGUga2V5cyBvZiBgVGAuXG4gKi9cbmV4cG9ydCB0eXBlIFN1YnNldE9mS2V5czxULCBLIGV4dGVuZHMga2V5b2YgVD4gPSBLO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHR5cGUgYFRgLCB3aXRoIGEgdHJhbnNmb3JtYXRpb24gYXBwbGllZCB0aGF0IHR1cm5zIGFsbCBtZXRob2RzIChldmVuIG9wdGlvbmFsXG4gKiBvbmVzKSBpbnRvIHJlcXVpcmVkIGZpZWxkcyAod2hpY2ggbWF5IGJlIGB1bmRlZmluZWRgLCBpZiB0aGUgbWV0aG9kIHdhcyBvcHRpb25hbCkuXG4gKi9cbmV4cG9ydCB0eXBlIFJlcXVpcmVkRGVsZWdhdGlvbnM8VD4gPSB7XG4gIFtNIGluIGtleW9mIFJlcXVpcmVkPFQ+XTogVFtNXTtcbn07XG5cbi8qKlxuICogU291cmNlIGZpbGVzIG1heSBiZWNvbWUgcmVkaXJlY3RzIHRvIG90aGVyIHNvdXJjZSBmaWxlcyB3aGVuIHRoZWlyIHBhY2thZ2UgbmFtZSBhbmQgdmVyc2lvbiBhcmVcbiAqIGlkZW50aWNhbC4gVHlwZVNjcmlwdCBjcmVhdGVzIGEgcHJveHkgc291cmNlIGZpbGUgZm9yIHN1Y2ggc291cmNlIGZpbGVzIHdoaWNoIGhhcyBhbiBpbnRlcm5hbFxuICogYHJlZGlyZWN0SW5mb2AgcHJvcGVydHkgdGhhdCByZWZlcnMgdG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLlxuICovXG5pbnRlcmZhY2UgUmVkaXJlY3RlZFNvdXJjZUZpbGUgZXh0ZW5kcyB0cy5Tb3VyY2VGaWxlIHtcbiAgcmVkaXJlY3RJbmZvPzoge3VucmVkaXJlY3RlZDogdHMuU291cmNlRmlsZTt9O1xufVxuXG4vKipcbiAqIE9idGFpbnMgdGhlIG5vbi1yZWRpcmVjdGVkIHNvdXJjZSBmaWxlIGZvciBgc2ZgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9VbnJlZGlyZWN0ZWRTb3VyY2VGaWxlKHNmOiB0cy5Tb3VyY2VGaWxlKTogdHMuU291cmNlRmlsZSB7XG4gIGNvbnN0IHJlZGlyZWN0SW5mbyA9IChzZiBhcyBSZWRpcmVjdGVkU291cmNlRmlsZSkucmVkaXJlY3RJbmZvO1xuICBpZiAocmVkaXJlY3RJbmZvID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gc2Y7XG4gIH1cbiAgcmV0dXJuIHJlZGlyZWN0SW5mby51bnJlZGlyZWN0ZWQ7XG59XG4iXX0=
|