@angular/compiler-cli 10.1.3 → 10.2.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/ngcc/src/analysis/module_with_providers_analyzer.d.ts +2 -2
- package/ngcc/src/analysis/module_with_providers_analyzer.js +1 -1
- package/ngcc/src/analysis/ngcc_references_registry.d.ts +3 -3
- package/ngcc/src/analysis/ngcc_references_registry.js +2 -2
- package/ngcc/src/analysis/private_declarations_analyzer.js +1 -1
- package/ngcc/src/dependencies/commonjs_dependency_host.js +1 -1
- package/ngcc/src/dependencies/dependency_host.d.ts +15 -0
- package/ngcc/src/dependencies/dependency_host.js +42 -9
- package/ngcc/src/entry_point_finder/program_based_entry_point_finder.js +4 -6
- package/ngcc/src/host/commonjs_host.d.ts +0 -1
- package/ngcc/src/host/commonjs_host.js +28 -19
- package/ngcc/src/host/commonjs_umd_utils.d.ts +59 -12
- package/ngcc/src/host/commonjs_umd_utils.js +57 -15
- package/ngcc/src/host/delegating_host.d.ts +3 -3
- package/ngcc/src/host/delegating_host.js +1 -1
- package/ngcc/src/host/esm2015_host.d.ts +82 -27
- package/ngcc/src/host/esm2015_host.js +129 -107
- package/ngcc/src/host/esm5_host.js +7 -7
- package/ngcc/src/host/umd_host.d.ts +16 -1
- package/ngcc/src/host/umd_host.js +190 -25
- package/ngcc/src/migrations/missing_injectable_migration.js +1 -1
- package/ngcc/src/migrations/undecorated_parent_migration.js +1 -1
- package/ngcc/src/migrations/utils.d.ts +1 -1
- package/ngcc/src/migrations/utils.js +1 -1
- package/ngcc/src/packages/build_marker.d.ts +1 -1
- package/ngcc/src/packages/build_marker.js +1 -1
- package/ngcc/src/utils.d.ts +3 -3
- package/ngcc/src/utils.js +1 -1
- package/package.json +2 -2
- package/src/ngtsc/annotations/src/component.js +1 -1
- package/src/ngtsc/annotations/src/directive.js +9 -3
- package/src/ngtsc/annotations/src/metadata.d.ts +2 -3
- package/src/ngtsc/annotations/src/metadata.js +1 -1
- package/src/ngtsc/annotations/src/ng_module.js +4 -9
- package/src/ngtsc/annotations/src/references_registry.d.ts +3 -3
- package/src/ngtsc/annotations/src/references_registry.js +1 -1
- package/src/ngtsc/core/src/compiler.d.ts +2 -1
- package/src/ngtsc/core/src/compiler.js +5 -1
- package/src/ngtsc/entry_point/src/private_export_checker.js +1 -1
- package/src/ngtsc/entry_point/src/reference_graph.d.ts +2 -2
- package/src/ngtsc/entry_point/src/reference_graph.js +1 -1
- package/src/ngtsc/file_system/testing/src/mock_file_system.d.ts +3 -1
- package/src/ngtsc/file_system/testing/src/mock_file_system.js +29 -10
- package/src/ngtsc/imports/src/emitter.d.ts +2 -2
- package/src/ngtsc/imports/src/emitter.js +2 -6
- package/src/ngtsc/indexer/src/api.d.ts +2 -3
- package/src/ngtsc/indexer/src/api.js +1 -1
- package/src/ngtsc/indexer/src/transform.d.ts +2 -2
- package/src/ngtsc/indexer/src/transform.js +1 -1
- package/src/ngtsc/partial_evaluator/src/interpreter.d.ts +1 -0
- package/src/ngtsc/partial_evaluator/src/interpreter.js +13 -20
- package/src/ngtsc/perf/src/api.d.ts +3 -3
- package/src/ngtsc/perf/src/api.js +1 -1
- package/src/ngtsc/perf/src/noop.d.ts +0 -7
- package/src/ngtsc/perf/src/noop.js +1 -8
- package/src/ngtsc/perf/src/tracking.d.ts +3 -2
- package/src/ngtsc/perf/src/tracking.js +1 -1
- package/src/ngtsc/program.d.ts +2 -1
- package/src/ngtsc/program.js +1 -1
- package/src/ngtsc/reflection/src/host.d.ts +39 -22
- package/src/ngtsc/reflection/src/host.js +10 -2
- package/src/ngtsc/reflection/src/typescript.d.ts +3 -3
- package/src/ngtsc/reflection/src/typescript.js +4 -2
- package/src/ngtsc/reflection/src/util.js +7 -4
- package/src/ngtsc/scope/src/local.js +1 -1
- package/src/ngtsc/sourcemaps/src/source_file.d.ts +3 -2
- package/src/ngtsc/sourcemaps/src/source_file.js +8 -7
- package/src/ngtsc/sourcemaps/src/source_file_loader.js +4 -5
- package/src/ngtsc/transform/src/compilation.d.ts +3 -3
- package/src/ngtsc/transform/src/compilation.js +1 -1
- package/src/ngtsc/typecheck/api/api.d.ts +5 -0
- package/src/ngtsc/typecheck/api/api.js +1 -1
- package/src/ngtsc/typecheck/diagnostics/src/id.d.ts +2 -2
- package/src/ngtsc/typecheck/diagnostics/src/id.js +1 -1
- package/src/ngtsc/typecheck/src/host.d.ts +41 -11
- package/src/ngtsc/typecheck/src/host.js +53 -36
- package/src/ngtsc/typecheck/src/type_check_block.js +60 -1
- package/src/ngtsc/typecheck/src/type_parameter_emitter.js +1 -1
- package/src/ngtsc/util/src/typescript.d.ts +4 -1
- package/src/ngtsc/util/src/typescript.js +7 -2
- package/src/version.js +1 -1
|
@@ -123,9 +123,13 @@
|
|
|
123
123
|
var e_1, _a;
|
|
124
124
|
var _this = this;
|
|
125
125
|
var segments = this.splitPath(path).map(function (segment) { return _this.getCanonicalPath(segment); });
|
|
126
|
-
var current = this._fileTree;
|
|
127
126
|
// Convert the root folder to a canonical empty string `''` (on Windows it would be `'C:'`).
|
|
128
127
|
segments[0] = '';
|
|
128
|
+
if (segments.length > 1 && segments[segments.length - 1] === '') {
|
|
129
|
+
// Remove a trailing slash (unless the path was only `/`)
|
|
130
|
+
segments.pop();
|
|
131
|
+
}
|
|
132
|
+
var current = this._fileTree;
|
|
129
133
|
try {
|
|
130
134
|
for (var segments_1 = tslib_1.__values(segments), segments_1_1 = segments_1.next(); !segments_1_1.done; segments_1_1 = segments_1.next()) {
|
|
131
135
|
var segment = segments_1_1.value;
|
|
@@ -145,6 +149,7 @@
|
|
|
145
149
|
}
|
|
146
150
|
finally { if (e_1) throw e_1.error; }
|
|
147
151
|
}
|
|
152
|
+
return current;
|
|
148
153
|
};
|
|
149
154
|
MockFileSystem.prototype.removeDeep = function (path) {
|
|
150
155
|
var _a = tslib_1.__read(this.splitIntoFolderAndFile(path), 2), folderPath = _a[0], basename = _a[1];
|
|
@@ -200,27 +205,41 @@
|
|
|
200
205
|
return topLevelNodeModules;
|
|
201
206
|
};
|
|
202
207
|
MockFileSystem.prototype.dump = function () {
|
|
203
|
-
|
|
208
|
+
var entity = this.findFromPath(this.resolve('/')).entity;
|
|
209
|
+
if (entity === null || !isFolder(entity)) {
|
|
210
|
+
return {};
|
|
211
|
+
}
|
|
212
|
+
return this.cloneFolder(entity);
|
|
204
213
|
};
|
|
205
214
|
MockFileSystem.prototype.init = function (folder) {
|
|
206
|
-
this.
|
|
215
|
+
this.mount(this.resolve('/'), folder);
|
|
216
|
+
};
|
|
217
|
+
MockFileSystem.prototype.mount = function (path, folder) {
|
|
218
|
+
if (this.exists(path)) {
|
|
219
|
+
throw new Error("Unable to mount in '" + path + "' as it already exists.");
|
|
220
|
+
}
|
|
221
|
+
var mountFolder = this.ensureDir(path);
|
|
222
|
+
this.copyInto(folder, mountFolder);
|
|
207
223
|
};
|
|
208
224
|
MockFileSystem.prototype.cloneFolder = function (folder) {
|
|
209
225
|
var clone = {};
|
|
210
|
-
|
|
211
|
-
|
|
226
|
+
this.copyInto(folder, clone);
|
|
227
|
+
return clone;
|
|
228
|
+
};
|
|
229
|
+
MockFileSystem.prototype.copyInto = function (from, to) {
|
|
230
|
+
for (var path in from) {
|
|
231
|
+
var item = from[path];
|
|
212
232
|
var canonicalPath = this.getCanonicalPath(path);
|
|
213
233
|
if (isSymLink(item)) {
|
|
214
|
-
|
|
234
|
+
to[canonicalPath] = new SymLink(this.getCanonicalPath(item.path));
|
|
215
235
|
}
|
|
216
236
|
else if (isFolder(item)) {
|
|
217
|
-
|
|
237
|
+
to[canonicalPath] = this.cloneFolder(item);
|
|
218
238
|
}
|
|
219
239
|
else {
|
|
220
|
-
|
|
240
|
+
to[canonicalPath] = from[path];
|
|
221
241
|
}
|
|
222
242
|
}
|
|
223
|
-
return clone;
|
|
224
243
|
};
|
|
225
244
|
MockFileSystem.prototype.findFromPath = function (path, options) {
|
|
226
245
|
var followSymLinks = !!options && options.followSymLinks;
|
|
@@ -311,4 +330,4 @@
|
|
|
311
330
|
}
|
|
312
331
|
exports.isFolder = isFolder;
|
|
313
332
|
});
|
|
314
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19maWxlX3N5c3RlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0vdGVzdGluZy9zcmMvbW9ja19maWxlX3N5c3RlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7O0lBRUgsbUZBQTZEO0lBRzdEOztPQUVHO0lBQ0g7UUFLRSx3QkFBb0IsZ0JBQXdCLEVBQUUsR0FBMkM7WUFBckUsaUNBQUEsRUFBQSx3QkFBd0I7WUFBRSxvQkFBQSxFQUFBLE1BQXNCLEdBQXFCO1lBQXJFLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtZQUpwQyxjQUFTLEdBQVcsRUFBRSxDQUFDO1lBSzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBRUQsd0NBQWUsR0FBZjtZQUNFLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQy9CLENBQUM7UUFFRCwrQkFBTSxHQUFOLFVBQU8sSUFBb0I7WUFDekIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUM7UUFDakQsQ0FBQztRQUVELGlDQUFRLEdBQVIsVUFBUyxJQUFvQjtZQUNwQixJQUFBLE1BQU0sR0FBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUEzQixDQUE0QjtZQUN6QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDbEIsT0FBTyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDMUI7aUJBQU07Z0JBQ0wsTUFBTSxJQUFJLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsWUFBUyxJQUFJLHVCQUFtQixDQUFDLENBQUM7YUFDakY7UUFDSCxDQUFDO1FBRUQsdUNBQWMsR0FBZCxVQUFlLElBQW9CO1lBQzFCLElBQUEsTUFBTSxHQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQTNCLENBQTRCO1lBQ3pDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNsQixPQUFPLE1BQU0sWUFBWSxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDbkU7aUJBQU07Z0JBQ0wsTUFBTSxJQUFJLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsWUFBUyxJQUFJLHVCQUFtQixDQUFDLENBQUM7YUFDakY7UUFDSCxDQUFDO1FBRUQsa0NBQVMsR0FBVCxVQUFVLElBQW9CLEVBQUUsSUFBdUIsRUFBRSxTQUEwQjtZQUExQiwwQkFBQSxFQUFBLGlCQUEwQjtZQUMzRSxJQUFBLEtBQUEsZUFBeUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFBLEVBQXpELFVBQVUsUUFBQSxFQUFFLFFBQVEsUUFBcUMsQ0FBQztZQUMxRCxJQUFBLE1BQU0sR0FBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFqQyxDQUFrQztZQUMvQyxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3hDLE1BQU0sSUFBSSxtQkFBbUIsQ0FDekIsUUFBUSxFQUFFLElBQUksRUFBRSw0QkFBeUIsSUFBSSw4Q0FBMEMsQ0FBQyxDQUFDO2FBQzlGO1lBQ0QsSUFBSSxTQUFTLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLFNBQVMsRUFBRTtnQkFDL0MsTUFBTSxJQUFJLG1CQUFtQixDQUN6QixRQUFRLEVBQUUsSUFBSSxFQUFFLHdDQUFxQyxJQUFJLGlDQUE2QixDQUFDLENBQUM7YUFDN0Y7WUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzFCLENBQUM7UUFFRCxtQ0FBVSxHQUFWLFVBQVcsSUFBb0I7WUFDdkIsSUFBQSxLQUFBLGVBQXlCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBQSxFQUF6RCxVQUFVLFFBQUEsRUFBRSxRQUFRLFFBQXFDLENBQUM7WUFDMUQsSUFBQSxNQUFNLEdBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBakMsQ0FBa0M7WUFDL0MsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUN4QyxNQUFNLElBQUksbUJBQW1CLENBQ3pCLFFBQVEsRUFBRSxJQUFJLEVBQUUsNkJBQTBCLElBQUksOENBQTBDLENBQUMsQ0FBQzthQUMvRjtZQUNELElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFO2dCQUM5QixNQUFNLElBQUksbUJBQW1CLENBQ3pCLFFBQVEsRUFBRSxJQUFJLEVBQUUsNkJBQTBCLElBQUksd0NBQW9DLENBQUMsQ0FBQzthQUN6RjtZQUNELE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFFRCxnQ0FBTyxHQUFQLFVBQVEsTUFBc0IsRUFBRSxJQUFvQjtZQUM1QyxJQUFBLEtBQUEsZUFBeUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFBLEVBQXpELFVBQVUsUUFBQSxFQUFFLFFBQVEsUUFBcUMsQ0FBQztZQUMxRCxJQUFBLE1BQU0sR0FBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFqQyxDQUFrQztZQUMvQyxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3hDLE1BQU0sSUFBSSxtQkFBbUIsQ0FDekIsUUFBUSxFQUFFLElBQUksRUFDZCxtQ0FBZ0MsSUFBSSw4Q0FBMEMsQ0FBQyxDQUFDO2FBQ3JGO1lBQ0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxnQ0FBTyxHQUFQLFVBQVEsSUFBb0I7WUFDbkIsSUFBQSxNQUFNLEdBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBM0IsQ0FBNEI7WUFDekMsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO2dCQUNuQixNQUFNLElBQUksbUJBQW1CLENBQ3pCLFFBQVEsRUFBRSxJQUFJLEVBQUUsZ0NBQTZCLElBQUksMkJBQXVCLENBQUMsQ0FBQzthQUMvRTtZQUNELElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNsQixNQUFNLElBQUksbUJBQW1CLENBQ3pCLFNBQVMsRUFBRSxJQUFJLEVBQUUsZ0NBQTZCLElBQUksc0JBQWtCLENBQUMsQ0FBQzthQUMzRTtZQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQWtCLENBQUM7UUFDOUMsQ0FBQztRQUVELDhCQUFLLEdBQUwsVUFBTSxJQUFvQjtZQUNqQixJQUFBLE1BQU0sR0FBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUEzQixDQUE0QjtZQUN6QyxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7Z0JBQ25CLE1BQU0sSUFBSSxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFlBQVMsSUFBSSx1QkFBbUIsQ0FBQyxDQUFDO2FBQ2pGO1lBQ0QsT0FBTyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsNkJBQUksR0FBSixVQUFLLElBQW9CO1lBQ2hCLElBQUEsTUFBTSxHQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUMsY0FBYyxFQUFFLElBQUksRUFBQyxDQUFDLE9BQW5ELENBQW9EO1lBQ2pFLElBQUksTUFBTSxLQUFLLElBQUksRUFBRTtnQkFDbkIsTUFBTSxJQUFJLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsWUFBUyxJQUFJLHVCQUFtQixDQUFDLENBQUM7YUFDakY7WUFDRCxPQUFPLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxpQ0FBUSxHQUFSLFVBQVMsSUFBb0IsRUFBRSxFQUFrQjtZQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELGlDQUFRLEdBQVIsVUFBUyxJQUFvQixFQUFFLEVBQWtCO1lBQy9DLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN4QyxJQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNoRCxJQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBZ0IsQ0FBQztZQUN2QyxJQUFNLElBQUksR0FBRyxrQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFFRCxrQ0FBUyxHQUFULFVBQVUsSUFBb0I7O1lBQTlCLGlCQWVDO1lBZEMsSUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBQSxPQUFPLElBQUksT0FBQSxLQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQTlCLENBQThCLENBQUMsQ0FBQztZQUNyRixJQUFJLE9BQU8sR0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBRXJDLDRGQUE0RjtZQUM1RixRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDOztnQkFDakIsS0FBc0IsSUFBQSxhQUFBLGlCQUFBLFFBQVEsQ0FBQSxrQ0FBQSx3REFBRTtvQkFBM0IsSUFBTSxPQUFPLHFCQUFBO29CQUNoQixJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRTt3QkFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO3FCQUNyRDtvQkFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUNyQixPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO3FCQUN2QjtvQkFDRCxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBVyxDQUFDO2lCQUN0Qzs7Ozs7Ozs7O1FBQ0gsQ0FBQztRQUVELG1DQUFVLEdBQVYsVUFBVyxJQUFvQjtZQUN2QixJQUFBLEtBQUEsZUFBeUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFBLEVBQXpELFVBQVUsUUFBQSxFQUFFLFFBQVEsUUFBcUMsQ0FBQztZQUMxRCxJQUFBLE1BQU0sR0FBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFqQyxDQUFrQztZQUMvQyxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3hDLE1BQU0sSUFBSSxtQkFBbUIsQ0FDekIsUUFBUSxFQUFFLElBQUksRUFDZCwrQkFBNEIsSUFBSSw4Q0FBMEMsQ0FBQyxDQUFDO2FBQ2pGO1lBQ0QsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUVELCtCQUFNLEdBQU4sVUFBTyxJQUFvQjtZQUN6QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDO1FBQ3JDLENBQUM7UUFFRCxnQ0FBTyxHQUFQLFVBQVEsSUFBZ0M7WUFDdEMsSUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QyxPQUFPLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3hDLENBQUM7UUFFRCxpQ0FBUSxHQUFSLFVBQVMsUUFBd0I7WUFDL0IsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFBQyxjQUFjLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztZQUNuRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssSUFBSSxFQUFFO2dCQUMxQixNQUFNLElBQUksbUJBQW1CLENBQ3pCLFFBQVEsRUFBRSxRQUFRLEVBQUUsdUNBQW9DLFFBQVEsMkJBQXVCLENBQUMsQ0FBQzthQUM5RjtpQkFBTTtnQkFDTCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7YUFDcEI7UUFDSCxDQUFDO1FBRUQsNEJBQUcsR0FBSDtZQUNFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztRQUNuQixDQUFDO1FBRUQsOEJBQUssR0FBTCxVQUFNLElBQW9CO1lBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsOENBQXFCLEdBQXJCO1lBQ0UsMkZBQTJGO1lBQzNGLGdFQUFnRTtZQUNoRSxpRkFBaUY7WUFDakYseUNBQXlDO1lBRXpDLElBQUksSUFBSSxHQUFHLDZCQUE2QixDQUFDO1lBQ3pDLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdEMsa0ZBQWtGO1lBQ2xGLElBQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFFckQsT0FBTyxZQUFZLEtBQUssbUJBQW1CLEVBQUU7Z0JBQzNDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRTtvQkFDN0IsT0FBTyxZQUFZLENBQUM7aUJBQ3JCO2dCQUVELG1DQUFtQztnQkFDbkMsSUFBSSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25DO1lBRUQsNkZBQTZGO1lBQzdGLDRGQUE0RjtZQUM1RixnR0FBZ0c7WUFDaEcsK0VBQStFO1lBQy9FLE9BQU8sbUJBQW1CLENBQUM7UUFDN0IsQ0FBQztRQVdELDZCQUFJLEdBQUo7WUFDRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCw2QkFBSSxHQUFKLFVBQUssTUFBYztZQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUVPLG9DQUFXLEdBQW5CLFVBQW9CLE1BQWM7WUFDaEMsSUFBTSxLQUFLLEdBQVcsRUFBRSxDQUFDO1lBQ3pCLEtBQUssSUFBTSxJQUFJLElBQUksTUFBTSxFQUFFO2dCQUN6QixJQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzFCLElBQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ25CLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7aUJBQ3RFO3FCQUFNLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUN6QixLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDL0M7cUJBQU07b0JBQ0wsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDckM7YUFDRjtZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUdTLHFDQUFZLEdBQXRCLFVBQXVCLElBQW9CLEVBQUUsT0FBbUM7WUFDOUUsSUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDO1lBQzNELElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEMsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQy9ELHlEQUF5RDtnQkFDekQsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO2FBQ2hCO1lBQ0QsMEZBQTBGO1lBQzFGLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDakIsSUFBSSxPQUFPLEdBQWdCLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDMUMsT0FBTyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUN0QixPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM1RCxJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUU7b0JBQ3pCLE9BQU8sRUFBQyxJQUFJLE1BQUEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDLENBQUM7aUJBQzdCO2dCQUNELElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFO29CQUMvQyxPQUFPLEdBQUcsSUFBSSxDQUFDO29CQUNmLE1BQU07aUJBQ1A7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ25CLE1BQU07aUJBQ1A7Z0JBQ0QsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ3RCLElBQUksY0FBYyxFQUFFO3dCQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQU8saUNBQUMsT0FBTyxDQUFDLElBQUksR0FBSyxRQUFRLElBQUcsRUFBQyxjQUFjLGdCQUFBLEVBQUMsQ0FBQyxDQUFDO3FCQUNoRjt5QkFBTTt3QkFDTCxNQUFNO3FCQUNQO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLEVBQUMsSUFBSSxNQUFBLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBQyxDQUFDO1FBQ2pDLENBQUM7UUFFUywrQ0FBc0IsR0FBaEMsVUFBaUMsSUFBb0I7WUFDbkQsSUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM3RCxJQUFNLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFHLENBQUM7WUFDN0IsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQW1CLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEYsQ0FBQztRQUVTLHlDQUFnQixHQUExQixVQUE2QyxDQUFJO1lBQy9DLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQU8sQ0FBQztRQUMzRCxDQUFDO1FBQ0gscUJBQUM7SUFBRCxDQUFDLEFBbFJELElBa1JDO0lBbFJxQix3Q0FBYztJQTRScEM7UUFDRSxpQkFBbUIsSUFBb0I7WUFBcEIsU0FBSSxHQUFKLElBQUksQ0FBZ0I7UUFBRyxDQUFDO1FBQzdDLGNBQUM7SUFBRCxDQUFDLEFBRkQsSUFFQztJQUZZLDBCQUFPO0lBSXBCO1FBQ0UsdUJBQW9CLE1BQWM7WUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQUcsQ0FBQztRQUN0Qyw4QkFBTSxHQUFOO1lBQ0UsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFDRCxtQ0FBVyxHQUFYO1lBQ0UsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFDRCxzQ0FBYyxHQUFkO1lBQ0UsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDSCxvQkFBQztJQUFELENBQUMsQUFYRCxJQVdDO0lBRUQ7UUFBa0MsK0NBQUs7UUFDckMsNkJBQW1CLElBQVksRUFBUyxJQUFZLEVBQUUsT0FBZTtZQUFyRSxZQUNFLGtCQUFNLE9BQU8sQ0FBQyxTQUNmO1lBRmtCLFVBQUksR0FBSixJQUFJLENBQVE7WUFBUyxVQUFJLEdBQUosSUFBSSxDQUFROztRQUVwRCxDQUFDO1FBQ0gsMEJBQUM7SUFBRCxDQUFDLEFBSkQsQ0FBa0MsS0FBSyxHQUl0QztJQUVELFNBQWdCLE1BQU0sQ0FBQyxJQUFpQjtRQUN0QyxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDO0lBQzNELENBQUM7SUFGRCx3QkFFQztJQUVELFNBQWdCLFNBQVMsQ0FBQyxJQUFpQjtRQUN6QyxPQUFPLElBQUksWUFBWSxPQUFPLENBQUM7SUFDakMsQ0FBQztJQUZELDhCQUVDO0lBRUQsU0FBZ0IsUUFBUSxDQUFDLElBQWlCO1FBQ3hDLE9BQU8sSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRkQsNEJBRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtiYXNlbmFtZSwgZGlybmFtZSwgcmVzb2x2ZX0gZnJvbSAnLi4vLi4vc3JjL2hlbHBlcnMnO1xuaW1wb3J0IHtBYnNvbHV0ZUZzUGF0aCwgRmlsZVN0YXRzLCBGaWxlU3lzdGVtLCBQYXRoU2VnbWVudCwgUGF0aFN0cmluZ30gZnJvbSAnLi4vLi4vc3JjL3R5cGVzJztcblxuLyoqXG4gKiBBbiBpbi1tZW1vcnkgZmlsZSBzeXN0ZW0gdGhhdCBjYW4gYmUgdXNlZCBpbiB1bml0IHRlc3RzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0gaW1wbGVtZW50cyBGaWxlU3lzdGVtIHtcbiAgcHJpdmF0ZSBfZmlsZVRyZWU6IEZvbGRlciA9IHt9O1xuICBwcml2YXRlIF9jd2Q6IEFic29sdXRlRnNQYXRoO1xuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaXNDYXNlU2Vuc2l0aXZlID0gZmFsc2UsIGN3ZDogQWJzb2x1dGVGc1BhdGggPSAnLycgYXMgQWJzb2x1dGVGc1BhdGgpIHtcbiAgICB0aGlzLl9jd2QgPSB0aGlzLm5vcm1hbGl6ZShjd2QpO1xuICB9XG5cbiAgaXNDYXNlU2Vuc2l0aXZlKCkge1xuICAgIHJldHVybiB0aGlzLl9pc0Nhc2VTZW5zaXRpdmU7XG4gIH1cblxuICBleGlzdHMocGF0aDogQWJzb2x1dGVGc1BhdGgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maW5kRnJvbVBhdGgocGF0aCkuZW50aXR5ICE9PSBudWxsO1xuICB9XG5cbiAgcmVhZEZpbGUocGF0aDogQWJzb2x1dGVGc1BhdGgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHtlbnRpdHl9ID0gdGhpcy5maW5kRnJvbVBhdGgocGF0aCk7XG4gICAgaWYgKGlzRmlsZShlbnRpdHkpKSB7XG4gICAgICByZXR1cm4gZW50aXR5LnRvU3RyaW5nKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBNb2NrRmlsZVN5c3RlbUVycm9yKCdFTk9FTlQnLCBwYXRoLCBgRmlsZSBcIiR7cGF0aH1cIiBkb2VzIG5vdCBleGlzdC5gKTtcbiAgICB9XG4gIH1cblxuICByZWFkRmlsZUJ1ZmZlcihwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IFVpbnQ4QXJyYXkge1xuICAgIGNvbnN0IHtlbnRpdHl9ID0gdGhpcy5maW5kRnJvbVBhdGgocGF0aCk7XG4gICAgaWYgKGlzRmlsZShlbnRpdHkpKSB7XG4gICAgICByZXR1cm4gZW50aXR5IGluc3RhbmNlb2YgVWludDhBcnJheSA/IGVudGl0eSA6IG5ldyBCdWZmZXIoZW50aXR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IE1vY2tGaWxlU3lzdGVtRXJyb3IoJ0VOT0VOVCcsIHBhdGgsIGBGaWxlIFwiJHtwYXRofVwiIGRvZXMgbm90IGV4aXN0LmApO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlRmlsZShwYXRoOiBBYnNvbHV0ZUZzUGF0aCwgZGF0YTogc3RyaW5nfFVpbnQ4QXJyYXksIGV4Y2x1c2l2ZTogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3QgW2ZvbGRlclBhdGgsIGJhc2VuYW1lXSA9IHRoaXMuc3BsaXRJbnRvRm9sZGVyQW5kRmlsZShwYXRoKTtcbiAgICBjb25zdCB7ZW50aXR5fSA9IHRoaXMuZmluZEZyb21QYXRoKGZvbGRlclBhdGgpO1xuICAgIGlmIChlbnRpdHkgPT09IG51bGwgfHwgIWlzRm9sZGVyKGVudGl0eSkpIHtcbiAgICAgIHRocm93IG5ldyBNb2NrRmlsZVN5c3RlbUVycm9yKFxuICAgICAgICAgICdFTk9FTlQnLCBwYXRoLCBgVW5hYmxlIHRvIHdyaXRlIGZpbGUgXCIke3BhdGh9XCIuIFRoZSBjb250YWluaW5nIGZvbGRlciBkb2VzIG5vdCBleGlzdC5gKTtcbiAgICB9XG4gICAgaWYgKGV4Y2x1c2l2ZSAmJiBlbnRpdHlbYmFzZW5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBNb2NrRmlsZVN5c3RlbUVycm9yKFxuICAgICAgICAgICdFRVhJU1QnLCBwYXRoLCBgVW5hYmxlIHRvIGV4Y2x1c2l2ZWx5IHdyaXRlIGZpbGUgXCIke3BhdGh9XCIuIFRoZSBmaWxlIGFscmVhZHkgZXhpc3RzLmApO1xuICAgIH1cbiAgICBlbnRpdHlbYmFzZW5hbWVdID0gZGF0YTtcbiAgfVxuXG4gIHJlbW92ZUZpbGUocGF0aDogQWJzb2x1dGVGc1BhdGgpOiB2b2lkIHtcbiAgICBjb25zdCBbZm9sZGVyUGF0aCwgYmFzZW5hbWVdID0gdGhpcy5zcGxpdEludG9Gb2xkZXJBbmRGaWxlKHBhdGgpO1xuICAgIGNvbnN0IHtlbnRpdHl9ID0gdGhpcy5maW5kRnJvbVBhdGgoZm9sZGVyUGF0aCk7XG4gICAgaWYgKGVudGl0eSA9PT0gbnVsbCB8fCAhaXNGb2xkZXIoZW50aXR5KSkge1xuICAgICAgdGhyb3cgbmV3IE1vY2tGaWxlU3lzdGVtRXJyb3IoXG4gICAgICAgICAgJ0VOT0VOVCcsIHBhdGgsIGBVbmFibGUgdG8gcmVtb3ZlIGZpbGUgXCIke3BhdGh9XCIuIFRoZSBjb250YWluaW5nIGZvbGRlciBkb2VzIG5vdCBleGlzdC5gKTtcbiAgICB9XG4gICAgaWYgKGlzRm9sZGVyKGVudGl0eVtiYXNlbmFtZV0pKSB7XG4gICAgICB0aHJvdyBuZXcgTW9ja0ZpbGVTeXN0ZW1FcnJvcihcbiAgICAgICAgICAnRUlTRElSJywgcGF0aCwgYFVuYWJsZSB0byByZW1vdmUgZmlsZSBcIiR7cGF0aH1cIi4gVGhlIHBhdGggdG8gcmVtb3ZlIGlzIGEgZm9sZGVyLmApO1xuICAgIH1cbiAgICBkZWxldGUgZW50aXR5W2Jhc2VuYW1lXTtcbiAgfVxuXG4gIHN5bWxpbmsodGFyZ2V0OiBBYnNvbHV0ZUZzUGF0aCwgcGF0aDogQWJzb2x1dGVGc1BhdGgpOiB2b2lkIHtcbiAgICBjb25zdCBbZm9sZGVyUGF0aCwgYmFzZW5hbWVdID0gdGhpcy5zcGxpdEludG9Gb2xkZXJBbmRGaWxlKHBhdGgpO1xuICAgIGNvbnN0IHtlbnRpdHl9ID0gdGhpcy5maW5kRnJvbVBhdGgoZm9sZGVyUGF0aCk7XG4gICAgaWYgKGVudGl0eSA9PT0gbnVsbCB8fCAhaXNGb2xkZXIoZW50aXR5KSkge1xuICAgICAgdGhyb3cgbmV3IE1vY2tGaWxlU3lzdGVtRXJyb3IoXG4gICAgICAgICAgJ0VOT0VOVCcsIHBhdGgsXG4gICAgICAgICAgYFVuYWJsZSB0byBjcmVhdGUgc3ltbGluayBhdCBcIiR7cGF0aH1cIi4gVGhlIGNvbnRhaW5pbmcgZm9sZGVyIGRvZXMgbm90IGV4aXN0LmApO1xuICAgIH1cbiAgICBlbnRpdHlbYmFzZW5hbWVdID0gbmV3IFN5bUxpbmsodGFyZ2V0KTtcbiAgfVxuXG4gIHJlYWRkaXIocGF0aDogQWJzb2x1dGVGc1BhdGgpOiBQYXRoU2VnbWVudFtdIHtcbiAgICBjb25zdCB7ZW50aXR5fSA9IHRoaXMuZmluZEZyb21QYXRoKHBhdGgpO1xuICAgIGlmIChlbnRpdHkgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBNb2NrRmlsZVN5c3RlbUVycm9yKFxuICAgICAgICAgICdFTk9FTlQnLCBwYXRoLCBgVW5hYmxlIHRvIHJlYWQgZGlyZWN0b3J5IFwiJHtwYXRofVwiLiBJdCBkb2VzIG5vdCBleGlzdC5gKTtcbiAgICB9XG4gICAgaWYgKGlzRmlsZShlbnRpdHkpKSB7XG4gICAgICB0aHJvdyBuZXcgTW9ja0ZpbGVTeXN0ZW1FcnJvcihcbiAgICAgICAgICAnRU5PVERJUicsIHBhdGgsIGBVbmFibGUgdG8gcmVhZCBkaXJlY3RvcnkgXCIke3BhdGh9XCIuIEl0IGlzIGEgZmlsZS5gKTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGVudGl0eSkgYXMgUGF0aFNlZ21lbnRbXTtcbiAgfVxuXG4gIGxzdGF0KHBhdGg6IEFic29sdXRlRnNQYXRoKTogRmlsZVN0YXRzIHtcbiAgICBjb25zdCB7ZW50aXR5fSA9IHRoaXMuZmluZEZyb21QYXRoKHBhdGgpO1xuICAgIGlmIChlbnRpdHkgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBNb2NrRmlsZVN5c3RlbUVycm9yKCdFTk9FTlQnLCBwYXRoLCBgRmlsZSBcIiR7cGF0aH1cIiBkb2VzIG5vdCBleGlzdC5gKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBNb2NrRmlsZVN0YXRzKGVudGl0eSk7XG4gIH1cblxuICBzdGF0KHBhdGg6IEFic29sdXRlRnNQYXRoKTogRmlsZVN0YXRzIHtcbiAgICBjb25zdCB7ZW50aXR5fSA9IHRoaXMuZmluZEZyb21QYXRoKHBhdGgsIHtmb2xsb3dTeW1MaW5rczogdHJ1ZX0pO1xuICAgIGlmIChlbnRpdHkgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBNb2NrRmlsZVN5c3RlbUVycm9yKCdFTk9FTlQnLCBwYXRoLCBgRmlsZSBcIiR7cGF0aH1cIiBkb2VzIG5vdCBleGlzdC5gKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBNb2NrRmlsZVN0YXRzKGVudGl0eSk7XG4gIH1cblxuICBjb3B5RmlsZShmcm9tOiBBYnNvbHV0ZUZzUGF0aCwgdG86IEFic29sdXRlRnNQYXRoKTogdm9pZCB7XG4gICAgdGhpcy53cml0ZUZpbGUodG8sIHRoaXMucmVhZEZpbGUoZnJvbSkpO1xuICB9XG5cbiAgbW92ZUZpbGUoZnJvbTogQWJzb2x1dGVGc1BhdGgsIHRvOiBBYnNvbHV0ZUZzUGF0aCk6IHZvaWQge1xuICAgIHRoaXMud3JpdGVGaWxlKHRvLCB0aGlzLnJlYWRGaWxlKGZyb20pKTtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZpbmRGcm9tUGF0aChkaXJuYW1lKGZyb20pKTtcbiAgICBjb25zdCBmb2xkZXIgPSByZXN1bHQuZW50aXR5IGFzIEZvbGRlcjtcbiAgICBjb25zdCBuYW1lID0gYmFzZW5hbWUoZnJvbSk7XG4gICAgZGVsZXRlIGZvbGRlcltuYW1lXTtcbiAgfVxuXG4gIGVuc3VyZURpcihwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IHZvaWQge1xuICAgIGNvbnN0IHNlZ21lbnRzID0gdGhpcy5zcGxpdFBhdGgocGF0aCkubWFwKHNlZ21lbnQgPT4gdGhpcy5nZXRDYW5vbmljYWxQYXRoKHNlZ21lbnQpKTtcbiAgICBsZXQgY3VycmVudDogRm9sZGVyID0gdGhpcy5fZmlsZVRyZWU7XG5cbiAgICAvLyBDb252ZXJ0IHRoZSByb290IGZvbGRlciB0byBhIGNhbm9uaWNhbCBlbXB0eSBzdHJpbmcgYCcnYCAob24gV2luZG93cyBpdCB3b3VsZCBiZSBgJ0M6J2ApLlxuICAgIHNlZ21lbnRzWzBdID0gJyc7XG4gICAgZm9yIChjb25zdCBzZWdtZW50IG9mIHNlZ21lbnRzKSB7XG4gICAgICBpZiAoaXNGaWxlKGN1cnJlbnRbc2VnbWVudF0pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRm9sZGVyIGFscmVhZHkgZXhpc3RzIGFzIGEgZmlsZS5gKTtcbiAgICAgIH1cbiAgICAgIGlmICghY3VycmVudFtzZWdtZW50XSkge1xuICAgICAgICBjdXJyZW50W3NlZ21lbnRdID0ge307XG4gICAgICB9XG4gICAgICBjdXJyZW50ID0gY3VycmVudFtzZWdtZW50XSBhcyBGb2xkZXI7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlRGVlcChwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IHZvaWQge1xuICAgIGNvbnN0IFtmb2xkZXJQYXRoLCBiYXNlbmFtZV0gPSB0aGlzLnNwbGl0SW50b0ZvbGRlckFuZEZpbGUocGF0aCk7XG4gICAgY29uc3Qge2VudGl0eX0gPSB0aGlzLmZpbmRGcm9tUGF0aChmb2xkZXJQYXRoKTtcbiAgICBpZiAoZW50aXR5ID09PSBudWxsIHx8ICFpc0ZvbGRlcihlbnRpdHkpKSB7XG4gICAgICB0aHJvdyBuZXcgTW9ja0ZpbGVTeXN0ZW1FcnJvcihcbiAgICAgICAgICAnRU5PRU5UJywgcGF0aCxcbiAgICAgICAgICBgVW5hYmxlIHRvIHJlbW92ZSBmb2xkZXIgXCIke3BhdGh9XCIuIFRoZSBjb250YWluaW5nIGZvbGRlciBkb2VzIG5vdCBleGlzdC5gKTtcbiAgICB9XG4gICAgZGVsZXRlIGVudGl0eVtiYXNlbmFtZV07XG4gIH1cblxuICBpc1Jvb3QocGF0aDogQWJzb2x1dGVGc1BhdGgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaXJuYW1lKHBhdGgpID09PSBwYXRoO1xuICB9XG5cbiAgZXh0bmFtZShwYXRoOiBBYnNvbHV0ZUZzUGF0aHxQYXRoU2VnbWVudCk6IHN0cmluZyB7XG4gICAgY29uc3QgbWF0Y2ggPSAvLisoXFwuW14uXSopJC8uZXhlYyhwYXRoKTtcbiAgICByZXR1cm4gbWF0Y2ggIT09IG51bGwgPyBtYXRjaFsxXSA6ICcnO1xuICB9XG5cbiAgcmVhbHBhdGgoZmlsZVBhdGg6IEFic29sdXRlRnNQYXRoKTogQWJzb2x1dGVGc1BhdGgge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmluZEZyb21QYXRoKGZpbGVQYXRoLCB7Zm9sbG93U3ltTGlua3M6IHRydWV9KTtcbiAgICBpZiAocmVzdWx0LmVudGl0eSA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IE1vY2tGaWxlU3lzdGVtRXJyb3IoXG4gICAgICAgICAgJ0VOT0VOVCcsIGZpbGVQYXRoLCBgVW5hYmxlIHRvIGZpbmQgdGhlIHJlYWwgcGF0aCBvZiBcIiR7ZmlsZVBhdGh9XCIuIEl0IGRvZXMgbm90IGV4aXN0LmApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVzdWx0LnBhdGg7XG4gICAgfVxuICB9XG5cbiAgcHdkKCk6IEFic29sdXRlRnNQYXRoIHtcbiAgICByZXR1cm4gdGhpcy5fY3dkO1xuICB9XG5cbiAgY2hkaXIocGF0aDogQWJzb2x1dGVGc1BhdGgpOiB2b2lkIHtcbiAgICB0aGlzLl9jd2QgPSB0aGlzLm5vcm1hbGl6ZShwYXRoKTtcbiAgfVxuXG4gIGdldERlZmF1bHRMaWJMb2NhdGlvbigpOiBBYnNvbHV0ZUZzUGF0aCB7XG4gICAgLy8gTWltaWMgdGhlIG5vZGUgbW9kdWxlIHJlc29sdXRpb24gYWxnb3JpdGhtIGFuZCBzdGFydCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnksIHRoZW4gbG9va1xuICAgIC8vIHByb2dyZXNzaXZlbHkgZnVydGhlciB1cCB0aGUgdHJlZSB1bnRpbCByZWFjaGluZyB0aGUgRlMgcm9vdC5cbiAgICAvLyBFLmcuIGlmIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpcyAvZm9vL2JhciwgbG9vayBpbiAvZm9vL2Jhci9ub2RlX21vZHVsZXMsIHRoZW5cbiAgICAvLyAvZm9vL25vZGVfbW9kdWxlcywgdGhlbiAvbm9kZV9tb2R1bGVzLlxuXG4gICAgbGV0IHBhdGggPSAnbm9kZV9tb2R1bGVzL3R5cGVzY3JpcHQvbGliJztcbiAgICBsZXQgcmVzb2x2ZWRQYXRoID0gdGhpcy5yZXNvbHZlKHBhdGgpO1xuXG4gICAgLy8gQ29uc3RydWN0IGEgcGF0aCBmb3IgdGhlIHRvcC1sZXZlbCBub2RlX21vZHVsZXMgdG8gaWRlbnRpZnkgdGhlIHN0b3BwaW5nIHBvaW50LlxuICAgIGNvbnN0IHRvcExldmVsTm9kZU1vZHVsZXMgPSB0aGlzLnJlc29sdmUoJy8nICsgcGF0aCk7XG5cbiAgICB3aGlsZSAocmVzb2x2ZWRQYXRoICE9PSB0b3BMZXZlbE5vZGVNb2R1bGVzKSB7XG4gICAgICBpZiAodGhpcy5leGlzdHMocmVzb2x2ZWRQYXRoKSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZWRQYXRoO1xuICAgICAgfVxuXG4gICAgICAvLyBOb3QgaGVyZSwgbG9vayBvbmUgbGV2ZWwgaGlnaGVyLlxuICAgICAgcGF0aCA9ICcuLi8nICsgcGF0aDtcbiAgICAgIHJlc29sdmVkUGF0aCA9IHRoaXMucmVzb2x2ZShwYXRoKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgbG9vcCBleGl0cyBiZWZvcmUgY2hlY2tpbmcgdGhlIGV4aXN0ZW5jZSBvZiAvbm9kZV9tb2R1bGVzL3R5cGVzY3JpcHQgYXQgdGhlIHRvcCBsZXZlbC5cbiAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsIC0gaWYgbm8gL25vZGVfbW9kdWxlcy90eXBlc2NyaXB0IGV4aXN0cyBhbnl3aGVyZSBpbiB0aGUgdHJlZSwgdGhlcmUnc1xuICAgIC8vIG5vdGhpbmcgdGhpcyBmdW5jdGlvbiBjYW4gZG8gYWJvdXQgaXQsIGFuZCBUUyBtYXkgZXJyb3IgbGF0ZXIgaWYgaXQgbG9va3MgZm9yIGEgbGliLmQudHMgZmlsZVxuICAgIC8vIHdpdGhpbiB0aGlzIGRpcmVjdG9yeS4gSXQgbWlnaHQgYmUgb2theSwgdGhvdWdoLCBpZiBUUyBuZXZlciBjaGVja3MgZm9yIG9uZS5cbiAgICByZXR1cm4gdG9wTGV2ZWxOb2RlTW9kdWxlcztcbiAgfVxuXG4gIGFic3RyYWN0IHJlc29sdmUoLi4ucGF0aHM6IHN0cmluZ1tdKTogQWJzb2x1dGVGc1BhdGg7XG4gIGFic3RyYWN0IGRpcm5hbWU8VCBleHRlbmRzIHN0cmluZz4oZmlsZTogVCk6IFQ7XG4gIGFic3RyYWN0IGpvaW48VCBleHRlbmRzIHN0cmluZz4oYmFzZVBhdGg6IFQsIC4uLnBhdGhzOiBzdHJpbmdbXSk6IFQ7XG4gIGFic3RyYWN0IHJlbGF0aXZlPFQgZXh0ZW5kcyBQYXRoU3RyaW5nPihmcm9tOiBULCB0bzogVCk6IFBhdGhTZWdtZW50fEFic29sdXRlRnNQYXRoO1xuICBhYnN0cmFjdCBiYXNlbmFtZShmaWxlUGF0aDogc3RyaW5nLCBleHRlbnNpb24/OiBzdHJpbmcpOiBQYXRoU2VnbWVudDtcbiAgYWJzdHJhY3QgaXNSb290ZWQocGF0aDogc3RyaW5nKTogYm9vbGVhbjtcbiAgYWJzdHJhY3Qgbm9ybWFsaXplPFQgZXh0ZW5kcyBQYXRoU3RyaW5nPihwYXRoOiBUKTogVDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNwbGl0UGF0aDxUIGV4dGVuZHMgUGF0aFN0cmluZz4ocGF0aDogVCk6IHN0cmluZ1tdO1xuXG4gIGR1bXAoKTogRm9sZGVyIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZUZvbGRlcih0aGlzLl9maWxlVHJlZSk7XG4gIH1cbiAgaW5pdChmb2xkZXI6IEZvbGRlcik6IHZvaWQge1xuICAgIHRoaXMuX2ZpbGVUcmVlID0gdGhpcy5jbG9uZUZvbGRlcihmb2xkZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9uZUZvbGRlcihmb2xkZXI6IEZvbGRlcik6IEZvbGRlciB7XG4gICAgY29uc3QgY2xvbmU6IEZvbGRlciA9IHt9O1xuICAgIGZvciAoY29uc3QgcGF0aCBpbiBmb2xkZXIpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSBmb2xkZXJbcGF0aF07XG4gICAgICBjb25zdCBjYW5vbmljYWxQYXRoID0gdGhpcy5nZXRDYW5vbmljYWxQYXRoKHBhdGgpO1xuICAgICAgaWYgKGlzU3ltTGluayhpdGVtKSkge1xuICAgICAgICBjbG9uZVtjYW5vbmljYWxQYXRoXSA9IG5ldyBTeW1MaW5rKHRoaXMuZ2V0Q2Fub25pY2FsUGF0aChpdGVtLnBhdGgpKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNGb2xkZXIoaXRlbSkpIHtcbiAgICAgICAgY2xvbmVbY2Fub25pY2FsUGF0aF0gPSB0aGlzLmNsb25lRm9sZGVyKGl0ZW0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xvbmVbY2Fub25pY2FsUGF0aF0gPSBmb2xkZXJbcGF0aF07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjbG9uZTtcbiAgfVxuXG5cbiAgcHJvdGVjdGVkIGZpbmRGcm9tUGF0aChwYXRoOiBBYnNvbHV0ZUZzUGF0aCwgb3B0aW9ucz86IHtmb2xsb3dTeW1MaW5rczogYm9vbGVhbn0pOiBGaW5kUmVzdWx0IHtcbiAgICBjb25zdCBmb2xsb3dTeW1MaW5rcyA9ICEhb3B0aW9ucyAmJiBvcHRpb25zLmZvbGxvd1N5bUxpbmtzO1xuICAgIGNvbnN0IHNlZ21lbnRzID0gdGhpcy5zcGxpdFBhdGgocGF0aCk7XG4gICAgaWYgKHNlZ21lbnRzLmxlbmd0aCA+IDEgJiYgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMV0gPT09ICcnKSB7XG4gICAgICAvLyBSZW1vdmUgYSB0cmFpbGluZyBzbGFzaCAodW5sZXNzIHRoZSBwYXRoIHdhcyBvbmx5IGAvYClcbiAgICAgIHNlZ21lbnRzLnBvcCgpO1xuICAgIH1cbiAgICAvLyBDb252ZXJ0IHRoZSByb290IGZvbGRlciB0byBhIGNhbm9uaWNhbCBlbXB0eSBzdHJpbmcgYFwiXCJgIChvbiBXaW5kb3dzIGl0IHdvdWxkIGJlIGBDOmApLlxuICAgIHNlZ21lbnRzWzBdID0gJyc7XG4gICAgbGV0IGN1cnJlbnQ6IEVudGl0eXxudWxsID0gdGhpcy5fZmlsZVRyZWU7XG4gICAgd2hpbGUgKHNlZ21lbnRzLmxlbmd0aCkge1xuICAgICAgY3VycmVudCA9IGN1cnJlbnRbdGhpcy5nZXRDYW5vbmljYWxQYXRoKHNlZ21lbnRzLnNoaWZ0KCkhKV07XG4gICAgICBpZiAoY3VycmVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB7cGF0aCwgZW50aXR5OiBudWxsfTtcbiAgICAgIH1cbiAgICAgIGlmIChzZWdtZW50cy5sZW5ndGggPiAwICYmICghaXNGb2xkZXIoY3VycmVudCkpKSB7XG4gICAgICAgIGN1cnJlbnQgPSBudWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChpc0ZpbGUoY3VycmVudCkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoaXNTeW1MaW5rKGN1cnJlbnQpKSB7XG4gICAgICAgIGlmIChmb2xsb3dTeW1MaW5rcykge1xuICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRGcm9tUGF0aChyZXNvbHZlKGN1cnJlbnQucGF0aCwgLi4uc2VnbWVudHMpLCB7Zm9sbG93U3ltTGlua3N9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge3BhdGgsIGVudGl0eTogY3VycmVudH07XG4gIH1cblxuICBwcm90ZWN0ZWQgc3BsaXRJbnRvRm9sZGVyQW5kRmlsZShwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IFtBYnNvbHV0ZUZzUGF0aCwgc3RyaW5nXSB7XG4gICAgY29uc3Qgc2VnbWVudHMgPSB0aGlzLnNwbGl0UGF0aCh0aGlzLmdldENhbm9uaWNhbFBhdGgocGF0aCkpO1xuICAgIGNvbnN0IGZpbGUgPSBzZWdtZW50cy5wb3AoKSE7XG4gICAgcmV0dXJuIFtwYXRoLnN1YnN0cmluZygwLCBwYXRoLmxlbmd0aCAtIGZpbGUubGVuZ3RoIC0gMSkgYXMgQWJzb2x1dGVGc1BhdGgsIGZpbGVdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldENhbm9uaWNhbFBhdGg8VCBleHRlbmRzIHN0cmluZz4ocDogVCk6IFQge1xuICAgIHJldHVybiB0aGlzLmlzQ2FzZVNlbnNpdGl2ZSgpID8gcCA6IHAudG9Mb3dlckNhc2UoKSBhcyBUO1xuICB9XG59XG5leHBvcnQgaW50ZXJmYWNlIEZpbmRSZXN1bHQge1xuICBwYXRoOiBBYnNvbHV0ZUZzUGF0aDtcbiAgZW50aXR5OiBFbnRpdHl8bnVsbDtcbn1cbmV4cG9ydCB0eXBlIEVudGl0eSA9IEZvbGRlcnxGaWxlfFN5bUxpbms7XG5leHBvcnQgaW50ZXJmYWNlIEZvbGRlciB7XG4gIFtwYXRoU2VnbWVudHM6IHN0cmluZ106IEVudGl0eTtcbn1cbmV4cG9ydCB0eXBlIEZpbGUgPSBzdHJpbmd8VWludDhBcnJheTtcbmV4cG9ydCBjbGFzcyBTeW1MaW5rIHtcbiAgY29uc3RydWN0b3IocHVibGljIHBhdGg6IEFic29sdXRlRnNQYXRoKSB7fVxufVxuXG5jbGFzcyBNb2NrRmlsZVN0YXRzIGltcGxlbWVudHMgRmlsZVN0YXRzIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbnRpdHk6IEVudGl0eSkge31cbiAgaXNGaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0ZpbGUodGhpcy5lbnRpdHkpO1xuICB9XG4gIGlzRGlyZWN0b3J5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0ZvbGRlcih0aGlzLmVudGl0eSk7XG4gIH1cbiAgaXNTeW1ib2xpY0xpbmsoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzU3ltTGluayh0aGlzLmVudGl0eSk7XG4gIH1cbn1cblxuY2xhc3MgTW9ja0ZpbGVTeXN0ZW1FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IocHVibGljIGNvZGU6IHN0cmluZywgcHVibGljIHBhdGg6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRmlsZShpdGVtOiBFbnRpdHl8bnVsbCk6IGl0ZW0gaXMgRmlsZSB7XG4gIHJldHVybiBCdWZmZXIuaXNCdWZmZXIoaXRlbSkgfHwgdHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTeW1MaW5rKGl0ZW06IEVudGl0eXxudWxsKTogaXRlbSBpcyBTeW1MaW5rIHtcbiAgcmV0dXJuIGl0ZW0gaW5zdGFuY2VvZiBTeW1MaW5rO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGb2xkZXIoaXRlbTogRW50aXR5fG51bGwpOiBpdGVtIGlzIEZvbGRlciB7XG4gIHJldHVybiBpdGVtICE9PSBudWxsICYmICFpc0ZpbGUoaXRlbSkgJiYgIWlzU3ltTGluayhpdGVtKTtcbn1cbiJdfQ==
|
|
333
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19maWxlX3N5c3RlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0vdGVzdGluZy9zcmMvbW9ja19maWxlX3N5c3RlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7O0lBRUgsbUZBQTZEO0lBRzdEOztPQUVHO0lBQ0g7UUFLRSx3QkFBb0IsZ0JBQXdCLEVBQUUsR0FBMkM7WUFBckUsaUNBQUEsRUFBQSx3QkFBd0I7WUFBRSxvQkFBQSxFQUFBLE1BQXNCLEdBQXFCO1lBQXJFLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtZQUpwQyxjQUFTLEdBQVcsRUFBRSxDQUFDO1lBSzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBRUQsd0NBQWUsR0FBZjtZQUNFLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQy9CLENBQUM7UUFFRCwrQkFBTSxHQUFOLFVBQU8sSUFBb0I7WUFDekIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUM7UUFDakQsQ0FBQztRQUVELGlDQUFRLEdBQVIsVUFBUyxJQUFvQjtZQUNwQixJQUFBLE1BQU0sR0FBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUEzQixDQUE0QjtZQUN6QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDbEIsT0FBTyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDMUI7aUJBQU07Z0JBQ0wsTUFBTSxJQUFJLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsWUFBUyxJQUFJLHVCQUFtQixDQUFDLENBQUM7YUFDakY7UUFDSCxDQUFDO1FB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QUssR0FJdEM7SUFFRCxTQUFnQixNQUFNLENBQUMsSUFBaUI7UUFDdEMsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQztJQUMzRCxDQUFDO0lBRkQsd0JBRUM7SUFFRCxTQUFnQixTQUFTLENBQUMsSUFBaUI7UUFDekMsT0FBTyxJQUFJLFlBQVksT0FBTyxDQUFDO0lBQ2pDLENBQUM7SUFGRCw4QkFFQztJQUVELFNBQWdCLFFBQVEsQ0FBQyxJQUFpQjtRQUN4QyxPQUFPLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUZELDRCQUVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7YmFzZW5hbWUsIGRpcm5hbWUsIHJlc29sdmV9IGZyb20gJy4uLy4uL3NyYy9oZWxwZXJzJztcbmltcG9ydCB7QWJzb2x1dGVGc1BhdGgsIEZpbGVTdGF0cywgRmlsZVN5c3RlbSwgUGF0aFNlZ21lbnQsIFBhdGhTdHJpbmd9IGZyb20gJy4uLy4uL3NyYy90eXBlcyc7XG5cbi8qKlxuICogQW4gaW4tbWVtb3J5IGZpbGUgc3lzdGVtIHRoYXQgY2FuIGJlIHVzZWQgaW4gdW5pdCB0ZXN0cy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1vY2tGaWxlU3lzdGVtIGltcGxlbWVudHMgRmlsZVN5c3RlbSB7XG4gIHByaXZhdGUgX2ZpbGVUcmVlOiBGb2xkZXIgPSB7fTtcbiAgcHJpdmF0ZSBfY3dkOiBBYnNvbHV0ZUZzUGF0aDtcblxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2lzQ2FzZVNlbnNpdGl2ZSA9IGZhbHNlLCBjd2Q6IEFic29sdXRlRnNQYXRoID0gJy8nIGFzIEFic29sdXRlRnNQYXRoKSB7XG4gICAgdGhpcy5fY3dkID0gdGhpcy5ub3JtYWxpemUoY3dkKTtcbiAgfVxuXG4gIGlzQ2FzZVNlbnNpdGl2ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNDYXNlU2Vuc2l0aXZlO1xuICB9XG5cbiAgZXhpc3RzKHBhdGg6IEFic29sdXRlRnNQYXRoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmluZEZyb21QYXRoKHBhdGgpLmVudGl0eSAhPT0gbnVsbDtcbiAgfVxuXG4gIHJlYWRGaWxlKHBhdGg6IEFic29sdXRlRnNQYXRoKTogc3RyaW5nIHtcbiAgICBjb25zdCB7ZW50aXR5fSA9IHRoaXMuZmluZEZyb21QYXRoKHBhdGgpO1xuICAgIGlmIChpc0ZpbGUoZW50aXR5KSkge1xuICAgICAgcmV0dXJuIGVudGl0eS50b1N0cmluZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgTW9ja0ZpbGVTeXN0ZW1FcnJvcignRU5PRU5UJywgcGF0aCwgYEZpbGUgXCIke3BhdGh9XCIgZG9lcyBub3QgZXhpc3QuYCk7XG4gICAgfVxuICB9XG5cbiAgcmVhZEZpbGVCdWZmZXIocGF0aDogQWJzb2x1dGVGc1BhdGgpOiBVaW50OEFycmF5IHtcbiAgICBjb25zdCB7ZW50aXR5fSA9IHRoaXMuZmluZEZyb21QYXRoKHBhdGgpO1xuICAgIGlmIChpc0ZpbGUoZW50aXR5KSkge1xuICAgICAgcmV0dXJuIGVudGl0eSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkgPyBlbnRpdHkgOiBuZXcgQnVmZmVyKGVudGl0eSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBNb2NrRmlsZVN5c3RlbUVycm9yKCdFTk9FTlQnLCBwYXRoLCBgRmlsZSBcIiR7cGF0aH1cIiBkb2VzIG5vdCBleGlzdC5gKTtcbiAgICB9XG4gIH1cblxuICB3cml0ZUZpbGUocGF0aDogQWJzb2x1dGVGc1BhdGgsIGRhdGE6IHN0cmluZ3xVaW50OEFycmF5LCBleGNsdXNpdmU6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIGNvbnN0IFtmb2xkZXJQYXRoLCBiYXNlbmFtZV0gPSB0aGlzLnNwbGl0SW50b0ZvbGRlckFuZEZpbGUocGF0aCk7XG4gICAgY29uc3Qge2VudGl0eX0gPSB0aGlzLmZpbmRGcm9tUGF0aChmb2xkZXJQYXRoKTtcbiAgICBpZiAoZW50aXR5ID09PSBudWxsIHx8ICFpc0ZvbGRlcihlbnRpdHkpKSB7XG4gICAgICB0aHJvdyBuZXcgTW9ja0ZpbGVTeXN0ZW1FcnJvcihcbiAgICAgICAgICAnRU5PRU5UJywgcGF0aCwgYFVuYWJsZSB0byB3cml0ZSBmaWxlIFwiJHtwYXRofVwiLiBUaGUgY29udGFpbmluZyBmb2xkZXIgZG9lcyBub3QgZXhpc3QuYCk7XG4gICAgfVxuICAgIGlmIChleGNsdXNpdmUgJiYgZW50aXR5W2Jhc2VuYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgTW9ja0ZpbGVTeXN0ZW1FcnJvcihcbiAgICAgICAgICAnRUVYSVNUJywgcGF0aCwgYFVuYWJsZSB0byBleGNsdXNpdmVseSB3cml0ZSBmaWxlIFwiJHtwYXRofVwiLiBUaGUgZmlsZSBhbHJlYWR5IGV4aXN0cy5gKTtcbiAgICB9XG4gICAgZW50aXR5W2Jhc2VuYW1lXSA9IGRhdGE7XG4gIH1cblxuICByZW1vdmVGaWxlKHBhdGg6IEFic29sdXRlRnNQYXRoKTogdm9pZCB7XG4gICAgY29uc3QgW2ZvbGRlclBhdGgsIGJhc2VuYW1lXSA9IHRoaXMuc3BsaXRJbnRvRm9sZGVyQW5kRmlsZShwYXRoKTtcbiAgICBjb25zdCB7ZW50aXR5fSA9IHRoaXMuZmluZEZyb21QYXRoKGZvbGRlclBhdGgpO1xuICAgIGlmIChlbnRpdHkgPT09IG51bGwgfHwgIWlzRm9sZGVyKGVudGl0eSkpIHtcbiAgICAgIHRocm93IG5ldyBNb2NrRmlsZVN5c3RlbUVycm9yKFxuICAgICAgICAgICdFTk9FTlQnLCBwYXRoLCBgVW5hYmxlIHRvIHJlbW92ZSBmaWxlIFwiJHtwYXRofVwiLiBUaGUgY29udGFpbmluZyBmb2xkZXIgZG9lcyBub3QgZXhpc3QuYCk7XG4gICAgfVxuICAgIGlmIChpc0ZvbGRlcihlbnRpdHlbYmFzZW5hbWVdKSkge1xuICAgICAgdGhyb3cgbmV3IE1vY2tGaWxlU3lzdGVtRXJyb3IoXG4gICAgICAgICAgJ0VJU0RJUicsIHBhdGgsIGBVbmFibGUgdG8gcmVtb3ZlIGZpbGUgXCIke3BhdGh9XCIuIFRoZSBwYXRoIHRvIHJlbW92ZSBpcyBhIGZvbGRlci5gKTtcbiAgICB9XG4gICAgZGVsZXRlIGVudGl0eVtiYXNlbmFtZV07XG4gIH1cblxuICBzeW1saW5rKHRhcmdldDogQWJzb2x1dGVGc1BhdGgsIHBhdGg6IEFic29sdXRlRnNQYXRoKTogdm9pZCB7XG4gICAgY29uc3QgW2ZvbGRlclBhdGgsIGJhc2VuYW1lXSA9IHRoaXMuc3BsaXRJbnRvRm9sZGVyQW5kRmlsZShwYXRoKTtcbiAgICBjb25zdCB7ZW50aXR5fSA9IHRoaXMuZmluZEZyb21QYXRoKGZvbGRlclBhdGgpO1xuICAgIGlmIChlbnRpdHkgPT09IG51bGwgfHwgIWlzRm9sZGVyKGVudGl0eSkpIHtcbiAgICAgIHRocm93IG5ldyBNb2NrRmlsZVN5c3RlbUVycm9yKFxuICAgICAgICAgICdFTk9FTlQnLCBwYXRoLFxuICAgICAgICAgIGBVbmFibGUgdG8gY3JlYXRlIHN5bWxpbmsgYXQgXCIke3BhdGh9XCIuIFRoZSBjb250YWluaW5nIGZvbGRlciBkb2VzIG5vdCBleGlzdC5gKTtcbiAgICB9XG4gICAgZW50aXR5W2Jhc2VuYW1lXSA9IG5ldyBTeW1MaW5rKHRhcmdldCk7XG4gIH1cblxuICByZWFkZGlyKHBhdGg6IEFic29sdXRlRnNQYXRoKTogUGF0aFNlZ21lbnRbXSB7XG4gICAgY29uc3Qge2VudGl0eX0gPSB0aGlzLmZpbmRGcm9tUGF0aChwYXRoKTtcbiAgICBpZiAoZW50aXR5ID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgTW9ja0ZpbGVTeXN0ZW1FcnJvcihcbiAgICAgICAgICAnRU5PRU5UJywgcGF0aCwgYFVuYWJsZSB0byByZWFkIGRpcmVjdG9yeSBcIiR7cGF0aH1cIi4gSXQgZG9lcyBub3QgZXhpc3QuYCk7XG4gICAgfVxuICAgIGlmIChpc0ZpbGUoZW50aXR5KSkge1xuICAgICAgdGhyb3cgbmV3IE1vY2tGaWxlU3lzdGVtRXJyb3IoXG4gICAgICAgICAgJ0VOT1RESVInLCBwYXRoLCBgVW5hYmxlIHRvIHJlYWQgZGlyZWN0b3J5IFwiJHtwYXRofVwiLiBJdCBpcyBhIGZpbGUuYCk7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3Qua2V5cyhlbnRpdHkpIGFzIFBhdGhTZWdtZW50W107XG4gIH1cblxuICBsc3RhdChwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IEZpbGVTdGF0cyB7XG4gICAgY29uc3Qge2VudGl0eX0gPSB0aGlzLmZpbmRGcm9tUGF0aChwYXRoKTtcbiAgICBpZiAoZW50aXR5ID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgTW9ja0ZpbGVTeXN0ZW1FcnJvcignRU5PRU5UJywgcGF0aCwgYEZpbGUgXCIke3BhdGh9XCIgZG9lcyBub3QgZXhpc3QuYCk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgTW9ja0ZpbGVTdGF0cyhlbnRpdHkpO1xuICB9XG5cbiAgc3RhdChwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IEZpbGVTdGF0cyB7XG4gICAgY29uc3Qge2VudGl0eX0gPSB0aGlzLmZpbmRGcm9tUGF0aChwYXRoLCB7Zm9sbG93U3ltTGlua3M6IHRydWV9KTtcbiAgICBpZiAoZW50aXR5ID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgTW9ja0ZpbGVTeXN0ZW1FcnJvcignRU5PRU5UJywgcGF0aCwgYEZpbGUgXCIke3BhdGh9XCIgZG9lcyBub3QgZXhpc3QuYCk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgTW9ja0ZpbGVTdGF0cyhlbnRpdHkpO1xuICB9XG5cbiAgY29weUZpbGUoZnJvbTogQWJzb2x1dGVGc1BhdGgsIHRvOiBBYnNvbHV0ZUZzUGF0aCk6IHZvaWQge1xuICAgIHRoaXMud3JpdGVGaWxlKHRvLCB0aGlzLnJlYWRGaWxlKGZyb20pKTtcbiAgfVxuXG4gIG1vdmVGaWxlKGZyb206IEFic29sdXRlRnNQYXRoLCB0bzogQWJzb2x1dGVGc1BhdGgpOiB2b2lkIHtcbiAgICB0aGlzLndyaXRlRmlsZSh0bywgdGhpcy5yZWFkRmlsZShmcm9tKSk7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5maW5kRnJvbVBhdGgoZGlybmFtZShmcm9tKSk7XG4gICAgY29uc3QgZm9sZGVyID0gcmVzdWx0LmVudGl0eSBhcyBGb2xkZXI7XG4gICAgY29uc3QgbmFtZSA9IGJhc2VuYW1lKGZyb20pO1xuICAgIGRlbGV0ZSBmb2xkZXJbbmFtZV07XG4gIH1cblxuICBlbnN1cmVEaXIocGF0aDogQWJzb2x1dGVGc1BhdGgpOiBGb2xkZXIge1xuICAgIGNvbnN0IHNlZ21lbnRzID0gdGhpcy5zcGxpdFBhdGgocGF0aCkubWFwKHNlZ21lbnQgPT4gdGhpcy5nZXRDYW5vbmljYWxQYXRoKHNlZ21lbnQpKTtcblxuICAgIC8vIENvbnZlcnQgdGhlIHJvb3QgZm9sZGVyIHRvIGEgY2Fub25pY2FsIGVtcHR5IHN0cmluZyBgJydgIChvbiBXaW5kb3dzIGl0IHdvdWxkIGJlIGAnQzonYCkuXG4gICAgc2VnbWVudHNbMF0gPSAnJztcbiAgICBpZiAoc2VnbWVudHMubGVuZ3RoID4gMSAmJiBzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAxXSA9PT0gJycpIHtcbiAgICAgIC8vIFJlbW92ZSBhIHRyYWlsaW5nIHNsYXNoICh1bmxlc3MgdGhlIHBhdGggd2FzIG9ubHkgYC9gKVxuICAgICAgc2VnbWVudHMucG9wKCk7XG4gICAgfVxuXG4gICAgbGV0IGN1cnJlbnQ6IEZvbGRlciA9IHRoaXMuX2ZpbGVUcmVlO1xuICAgIGZvciAoY29uc3Qgc2VnbWVudCBvZiBzZWdtZW50cykge1xuICAgICAgaWYgKGlzRmlsZShjdXJyZW50W3NlZ21lbnRdKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZvbGRlciBhbHJlYWR5IGV4aXN0cyBhcyBhIGZpbGUuYCk7XG4gICAgICB9XG4gICAgICBpZiAoIWN1cnJlbnRbc2VnbWVudF0pIHtcbiAgICAgICAgY3VycmVudFtzZWdtZW50XSA9IHt9O1xuICAgICAgfVxuICAgICAgY3VycmVudCA9IGN1cnJlbnRbc2VnbWVudF0gYXMgRm9sZGVyO1xuICAgIH1cbiAgICByZXR1cm4gY3VycmVudDtcbiAgfVxuXG4gIHJlbW92ZURlZXAocGF0aDogQWJzb2x1dGVGc1BhdGgpOiB2b2lkIHtcbiAgICBjb25zdCBbZm9sZGVyUGF0aCwgYmFzZW5hbWVdID0gdGhpcy5zcGxpdEludG9Gb2xkZXJBbmRGaWxlKHBhdGgpO1xuICAgIGNvbnN0IHtlbnRpdHl9ID0gdGhpcy5maW5kRnJvbVBhdGgoZm9sZGVyUGF0aCk7XG4gICAgaWYgKGVudGl0eSA9PT0gbnVsbCB8fCAhaXNGb2xkZXIoZW50aXR5KSkge1xuICAgICAgdGhyb3cgbmV3IE1vY2tGaWxlU3lzdGVtRXJyb3IoXG4gICAgICAgICAgJ0VOT0VOVCcsIHBhdGgsXG4gICAgICAgICAgYFVuYWJsZSB0byByZW1vdmUgZm9sZGVyIFwiJHtwYXRofVwiLiBUaGUgY29udGFpbmluZyBmb2xkZXIgZG9lcyBub3QgZXhpc3QuYCk7XG4gICAgfVxuICAgIGRlbGV0ZSBlbnRpdHlbYmFzZW5hbWVdO1xuICB9XG5cbiAgaXNSb290KHBhdGg6IEFic29sdXRlRnNQYXRoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlybmFtZShwYXRoKSA9PT0gcGF0aDtcbiAgfVxuXG4gIGV4dG5hbWUocGF0aDogQWJzb2x1dGVGc1BhdGh8UGF0aFNlZ21lbnQpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1hdGNoID0gLy4rKFxcLlteLl0qKSQvLmV4ZWMocGF0aCk7XG4gICAgcmV0dXJuIG1hdGNoICE9PSBudWxsID8gbWF0Y2hbMV0gOiAnJztcbiAgfVxuXG4gIHJlYWxwYXRoKGZpbGVQYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IEFic29sdXRlRnNQYXRoIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZpbmRGcm9tUGF0aChmaWxlUGF0aCwge2ZvbGxvd1N5bUxpbmtzOiB0cnVlfSk7XG4gICAgaWYgKHJlc3VsdC5lbnRpdHkgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBNb2NrRmlsZVN5c3RlbUVycm9yKFxuICAgICAgICAgICdFTk9FTlQnLCBmaWxlUGF0aCwgYFVuYWJsZSB0byBmaW5kIHRoZSByZWFsIHBhdGggb2YgXCIke2ZpbGVQYXRofVwiLiBJdCBkb2VzIG5vdCBleGlzdC5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlc3VsdC5wYXRoO1xuICAgIH1cbiAgfVxuXG4gIHB3ZCgpOiBBYnNvbHV0ZUZzUGF0aCB7XG4gICAgcmV0dXJuIHRoaXMuX2N3ZDtcbiAgfVxuXG4gIGNoZGlyKHBhdGg6IEFic29sdXRlRnNQYXRoKTogdm9pZCB7XG4gICAgdGhpcy5fY3dkID0gdGhpcy5ub3JtYWxpemUocGF0aCk7XG4gIH1cblxuICBnZXREZWZhdWx0TGliTG9jYXRpb24oKTogQWJzb2x1dGVGc1BhdGgge1xuICAgIC8vIE1pbWljIHRoZSBub2RlIG1vZHVsZSByZXNvbHV0aW9uIGFsZ29yaXRobSBhbmQgc3RhcnQgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCB0aGVuIGxvb2tcbiAgICAvLyBwcm9ncmVzc2l2ZWx5IGZ1cnRoZXIgdXAgdGhlIHRyZWUgdW50aWwgcmVhY2hpbmcgdGhlIEZTIHJvb3QuXG4gICAgLy8gRS5nLiBpZiB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgL2Zvby9iYXIsIGxvb2sgaW4gL2Zvby9iYXIvbm9kZV9tb2R1bGVzLCB0aGVuXG4gICAgLy8gL2Zvby9ub2RlX21vZHVsZXMsIHRoZW4gL25vZGVfbW9kdWxlcy5cblxuICAgIGxldCBwYXRoID0gJ25vZGVfbW9kdWxlcy90eXBlc2NyaXB0L2xpYic7XG4gICAgbGV0IHJlc29sdmVkUGF0aCA9IHRoaXMucmVzb2x2ZShwYXRoKTtcblxuICAgIC8vIENvbnN0cnVjdCBhIHBhdGggZm9yIHRoZSB0b3AtbGV2ZWwgbm9kZV9tb2R1bGVzIHRvIGlkZW50aWZ5IHRoZSBzdG9wcGluZyBwb2ludC5cbiAgICBjb25zdCB0b3BMZXZlbE5vZGVNb2R1bGVzID0gdGhpcy5yZXNvbHZlKCcvJyArIHBhdGgpO1xuXG4gICAgd2hpbGUgKHJlc29sdmVkUGF0aCAhPT0gdG9wTGV2ZWxOb2RlTW9kdWxlcykge1xuICAgICAgaWYgKHRoaXMuZXhpc3RzKHJlc29sdmVkUGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVkUGF0aDtcbiAgICAgIH1cblxuICAgICAgLy8gTm90IGhlcmUsIGxvb2sgb25lIGxldmVsIGhpZ2hlci5cbiAgICAgIHBhdGggPSAnLi4vJyArIHBhdGg7XG4gICAgICByZXNvbHZlZFBhdGggPSB0aGlzLnJlc29sdmUocGF0aCk7XG4gICAgfVxuXG4gICAgLy8gVGhlIGxvb3AgZXhpdHMgYmVmb3JlIGNoZWNraW5nIHRoZSBleGlzdGVuY2Ugb2YgL25vZGVfbW9kdWxlcy90eXBlc2NyaXB0IGF0IHRoZSB0b3AgbGV2ZWwuXG4gICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbCAtIGlmIG5vIC9ub2RlX21vZHVsZXMvdHlwZXNjcmlwdCBleGlzdHMgYW55d2hlcmUgaW4gdGhlIHRyZWUsIHRoZXJlJ3NcbiAgICAvLyBub3RoaW5nIHRoaXMgZnVuY3Rpb24gY2FuIGRvIGFib3V0IGl0LCBhbmQgVFMgbWF5IGVycm9yIGxhdGVyIGlmIGl0IGxvb2tzIGZvciBhIGxpYi5kLnRzIGZpbGVcbiAgICAvLyB3aXRoaW4gdGhpcyBkaXJlY3RvcnkuIEl0IG1pZ2h0IGJlIG9rYXksIHRob3VnaCwgaWYgVFMgbmV2ZXIgY2hlY2tzIGZvciBvbmUuXG4gICAgcmV0dXJuIHRvcExldmVsTm9kZU1vZHVsZXM7XG4gIH1cblxuICBhYnN0cmFjdCByZXNvbHZlKC4uLnBhdGhzOiBzdHJpbmdbXSk6IEFic29sdXRlRnNQYXRoO1xuICBhYnN0cmFjdCBkaXJuYW1lPFQgZXh0ZW5kcyBzdHJpbmc+KGZpbGU6IFQpOiBUO1xuICBhYnN0cmFjdCBqb2luPFQgZXh0ZW5kcyBzdHJpbmc+KGJhc2VQYXRoOiBULCAuLi5wYXRoczogc3RyaW5nW10pOiBUO1xuICBhYnN0cmFjdCByZWxhdGl2ZTxUIGV4dGVuZHMgUGF0aFN0cmluZz4oZnJvbTogVCwgdG86IFQpOiBQYXRoU2VnbWVudHxBYnNvbHV0ZUZzUGF0aDtcbiAgYWJzdHJhY3QgYmFzZW5hbWUoZmlsZVBhdGg6IHN0cmluZywgZXh0ZW5zaW9uPzogc3RyaW5nKTogUGF0aFNlZ21lbnQ7XG4gIGFic3RyYWN0IGlzUm9vdGVkKHBhdGg6IHN0cmluZyk6IGJvb2xlYW47XG4gIGFic3RyYWN0IG5vcm1hbGl6ZTxUIGV4dGVuZHMgUGF0aFN0cmluZz4ocGF0aDogVCk6IFQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzcGxpdFBhdGg8VCBleHRlbmRzIFBhdGhTdHJpbmc+KHBhdGg6IFQpOiBzdHJpbmdbXTtcblxuICBkdW1wKCk6IEZvbGRlciB7XG4gICAgY29uc3Qge2VudGl0eX0gPSB0aGlzLmZpbmRGcm9tUGF0aCh0aGlzLnJlc29sdmUoJy8nKSk7XG4gICAgaWYgKGVudGl0eSA9PT0gbnVsbCB8fCAhaXNGb2xkZXIoZW50aXR5KSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNsb25lRm9sZGVyKGVudGl0eSk7XG4gIH1cblxuICBpbml0KGZvbGRlcjogRm9sZGVyKTogdm9pZCB7XG4gICAgdGhpcy5tb3VudCh0aGlzLnJlc29sdmUoJy8nKSwgZm9sZGVyKTtcbiAgfVxuXG4gIG1vdW50KHBhdGg6IEFic29sdXRlRnNQYXRoLCBmb2xkZXI6IEZvbGRlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmV4aXN0cyhwYXRoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gbW91bnQgaW4gJyR7cGF0aH0nIGFzIGl0IGFscmVhZHkgZXhpc3RzLmApO1xuICAgIH1cbiAgICBjb25zdCBtb3VudEZvbGRlciA9IHRoaXMuZW5zdXJlRGlyKHBhdGgpO1xuXG4gICAgdGhpcy5jb3B5SW50byhmb2xkZXIsIG1vdW50Rm9sZGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvbmVGb2xkZXIoZm9sZGVyOiBGb2xkZXIpOiBGb2xkZXIge1xuICAgIGNvbnN0IGNsb25lOiBGb2xkZXIgPSB7fTtcbiAgICB0aGlzLmNvcHlJbnRvKGZvbGRlciwgY2xvbmUpO1xuICAgIHJldHVybiBjbG9uZTtcbiAgfVxuXG4gIHByaXZhdGUgY29weUludG8oZnJvbTogRm9sZGVyLCB0bzogRm9sZGVyKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBwYXRoIGluIGZyb20pIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSBmcm9tW3BhdGhdO1xuICAgICAgY29uc3QgY2Fub25pY2FsUGF0aCA9IHRoaXMuZ2V0Q2Fub25pY2FsUGF0aChwYXRoKTtcbiAgICAgIGlmIChpc1N5bUxpbmsoaXRlbSkpIHtcbiAgICAgICAgdG9bY2Fub25pY2FsUGF0aF0gPSBuZXcgU3ltTGluayh0aGlzLmdldENhbm9uaWNhbFBhdGgoaXRlbS5wYXRoKSk7XG4gICAgICB9IGVsc2UgaWYgKGlzRm9sZGVyKGl0ZW0pKSB7XG4gICAgICAgIHRvW2Nhbm9uaWNhbFBhdGhdID0gdGhpcy5jbG9uZUZvbGRlcihpdGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRvW2Nhbm9uaWNhbFBhdGhdID0gZnJvbVtwYXRoXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG4gIHByb3RlY3RlZCBmaW5kRnJvbVBhdGgocGF0aDogQWJzb2x1dGVGc1BhdGgsIG9wdGlvbnM/OiB7Zm9sbG93U3ltTGlua3M6IGJvb2xlYW59KTogRmluZFJlc3VsdCB7XG4gICAgY29uc3QgZm9sbG93U3ltTGlua3MgPSAhIW9wdGlvbnMgJiYgb3B0aW9ucy5mb2xsb3dTeW1MaW5rcztcbiAgICBjb25zdCBzZWdtZW50cyA9IHRoaXMuc3BsaXRQYXRoKHBhdGgpO1xuICAgIGlmIChzZWdtZW50cy5sZW5ndGggPiAxICYmIHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDFdID09PSAnJykge1xuICAgICAgLy8gUmVtb3ZlIGEgdHJhaWxpbmcgc2xhc2ggKHVubGVzcyB0aGUgcGF0aCB3YXMgb25seSBgL2ApXG4gICAgICBzZWdtZW50cy5wb3AoKTtcbiAgICB9XG4gICAgLy8gQ29udmVydCB0aGUgcm9vdCBmb2xkZXIgdG8gYSBjYW5vbmljYWwgZW1wdHkgc3RyaW5nIGBcIlwiYCAob24gV2luZG93cyBpdCB3b3VsZCBiZSBgQzpgKS5cbiAgICBzZWdtZW50c1swXSA9ICcnO1xuICAgIGxldCBjdXJyZW50OiBFbnRpdHl8bnVsbCA9IHRoaXMuX2ZpbGVUcmVlO1xuICAgIHdoaWxlIChzZWdtZW50cy5sZW5ndGgpIHtcbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50W3RoaXMuZ2V0Q2Fub25pY2FsUGF0aChzZWdtZW50cy5zaGlmdCgpISldO1xuICAgICAgaWYgKGN1cnJlbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4ge3BhdGgsIGVudGl0eTogbnVsbH07XG4gICAgICB9XG4gICAgICBpZiAoc2VnbWVudHMubGVuZ3RoID4gMCAmJiAoIWlzRm9sZGVyKGN1cnJlbnQpKSkge1xuICAgICAgICBjdXJyZW50ID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoaXNGaWxlKGN1cnJlbnQpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGlzU3ltTGluayhjdXJyZW50KSkge1xuICAgICAgICBpZiAoZm9sbG93U3ltTGlua3MpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5maW5kRnJvbVBhdGgocmVzb2x2ZShjdXJyZW50LnBhdGgsIC4uLnNlZ21lbnRzKSwge2ZvbGxvd1N5bUxpbmtzfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtwYXRoLCBlbnRpdHk6IGN1cnJlbnR9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHNwbGl0SW50b0ZvbGRlckFuZEZpbGUocGF0aDogQWJzb2x1dGVGc1BhdGgpOiBbQWJzb2x1dGVGc1BhdGgsIHN0cmluZ10ge1xuICAgIGNvbnN0IHNlZ21lbnRzID0gdGhpcy5zcGxpdFBhdGgodGhpcy5nZXRDYW5vbmljYWxQYXRoKHBhdGgpKTtcbiAgICBjb25zdCBmaWxlID0gc2VnbWVudHMucG9wKCkhO1xuICAgIHJldHVybiBbcGF0aC5zdWJzdHJpbmcoMCwgcGF0aC5sZW5ndGggLSBmaWxlLmxlbmd0aCAtIDEpIGFzIEFic29sdXRlRnNQYXRoLCBmaWxlXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDYW5vbmljYWxQYXRoPFQgZXh0ZW5kcyBzdHJpbmc+KHA6IFQpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5pc0Nhc2VTZW5zaXRpdmUoKSA/IHAgOiBwLnRvTG93ZXJDYXNlKCkgYXMgVDtcbiAgfVxufVxuZXhwb3J0IGludGVyZmFjZSBGaW5kUmVzdWx0IHtcbiAgcGF0aDogQWJzb2x1dGVGc1BhdGg7XG4gIGVudGl0eTogRW50aXR5fG51bGw7XG59XG5leHBvcnQgdHlwZSBFbnRpdHkgPSBGb2xkZXJ8RmlsZXxTeW1MaW5rO1xuZXhwb3J0IGludGVyZmFjZSBGb2xkZXIge1xuICBbcGF0aFNlZ21lbnRzOiBzdHJpbmddOiBFbnRpdHk7XG59XG5leHBvcnQgdHlwZSBGaWxlID0gc3RyaW5nfFVpbnQ4QXJyYXk7XG5leHBvcnQgY2xhc3MgU3ltTGluayB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXRoOiBBYnNvbHV0ZUZzUGF0aCkge31cbn1cblxuY2xhc3MgTW9ja0ZpbGVTdGF0cyBpbXBsZW1lbnRzIEZpbGVTdGF0cyB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZW50aXR5OiBFbnRpdHkpIHt9XG4gIGlzRmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNGaWxlKHRoaXMuZW50aXR5KTtcbiAgfVxuICBpc0RpcmVjdG9yeSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNGb2xkZXIodGhpcy5lbnRpdHkpO1xuICB9XG4gIGlzU3ltYm9saWNMaW5rKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1N5bUxpbmsodGhpcy5lbnRpdHkpO1xuICB9XG59XG5cbmNsYXNzIE1vY2tGaWxlU3lzdGVtRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb2RlOiBzdHJpbmcsIHB1YmxpYyBwYXRoOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ZpbGUoaXRlbTogRW50aXR5fG51bGwpOiBpdGVtIGlzIEZpbGUge1xuICByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKGl0ZW0pIHx8IHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3ltTGluayhpdGVtOiBFbnRpdHl8bnVsbCk6IGl0ZW0gaXMgU3ltTGluayB7XG4gIHJldHVybiBpdGVtIGluc3RhbmNlb2YgU3ltTGluaztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRm9sZGVyKGl0ZW06IEVudGl0eXxudWxsKTogaXRlbSBpcyBGb2xkZXIge1xuICByZXR1cm4gaXRlbSAhPT0gbnVsbCAmJiAhaXNGaWxlKGl0ZW0pICYmICFpc1N5bUxpbmsoaXRlbSk7XG59XG4iXX0=
|
|
@@ -10,7 +10,7 @@ import { Expression } from '@angular/compiler';
|
|
|
10
10
|
import * as ts from 'typescript';
|
|
11
11
|
import { UnifiedModulesHost } from '../../core/api';
|
|
12
12
|
import { LogicalFileSystem } from '../../file_system';
|
|
13
|
-
import { ReflectionHost } from '../../reflection';
|
|
13
|
+
import { DeclarationNode, ReflectionHost } from '../../reflection';
|
|
14
14
|
import { Reference } from './references';
|
|
15
15
|
import { ModuleResolver } from './resolver';
|
|
16
16
|
/**
|
|
@@ -106,7 +106,7 @@ export declare class AbsoluteModuleStrategy implements ReferenceEmitStrategy {
|
|
|
106
106
|
emit(ref: Reference<ts.Node>, context: ts.SourceFile, importFlags: ImportFlags): Expression | null;
|
|
107
107
|
private resolveImportName;
|
|
108
108
|
private getExportsOfModule;
|
|
109
|
-
protected enumerateExportsOfModule(specifier: string, fromFile: string): Map<
|
|
109
|
+
protected enumerateExportsOfModule(specifier: string, fromFile: string): Map<DeclarationNode, string> | null;
|
|
110
110
|
}
|
|
111
111
|
/**
|
|
112
112
|
* A `ReferenceEmitStrategy` which will refer to declarations via relative paths, provided they're
|
|
@@ -185,11 +185,7 @@
|
|
|
185
185
|
}
|
|
186
186
|
var exportMap = new Map();
|
|
187
187
|
exports.forEach(function (declaration, name) {
|
|
188
|
-
|
|
189
|
-
// ts.Declaration anyway.
|
|
190
|
-
if (declaration.node !== null) {
|
|
191
|
-
exportMap.set(declaration.node, name);
|
|
192
|
-
}
|
|
188
|
+
exportMap.set(declaration.node, name);
|
|
193
189
|
});
|
|
194
190
|
return exportMap;
|
|
195
191
|
};
|
|
@@ -281,4 +277,4 @@
|
|
|
281
277
|
}());
|
|
282
278
|
exports.UnifiedModulesStrategy = UnifiedModulesStrategy;
|
|
283
279
|
});
|
|
284
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvaW1wb3J0cy9zcmMvZW1pdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7OztPQU1HO0lBQ0gsOENBQStGO0lBQy9GLCtCQUFpQztJQUdqQywyRUFBcUk7SUFDckksNkVBQTBEO0lBRTFELGtGQUE0RztJQUU1Ryx1RkFBcUQ7SUFLckQ7O09BRUc7SUFDSCxJQUFZLFdBMkJYO0lBM0JELFdBQVksV0FBVztRQUNyQiw2Q0FBVyxDQUFBO1FBRVg7Ozs7O1dBS0c7UUFDSCxpRUFBcUIsQ0FBQTtRQUVyQjs7Ozs7V0FLRztRQUNILHlEQUFpQixDQUFBO1FBRWpCOzs7Ozs7V0FNRztRQUNILHFFQUF1QixDQUFBO0lBQ3pCLENBQUMsRUEzQlcsV0FBVyxHQUFYLG1CQUFXLEtBQVgsbUJBQVcsUUEyQnRCO0lBMkJEOzs7OztPQUtHO0lBQ0g7UUFDRSwwQkFBb0IsVUFBbUM7WUFBbkMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFBRyxDQUFDO1FBRTNELCtCQUFJLEdBQUosVUFBSyxHQUFjLEVBQUUsT0FBc0IsRUFBRSxXQUEyQzs7WUFBM0MsNEJBQUEsRUFBQSxjQUEyQixXQUFXLENBQUMsSUFBSTs7Z0JBRXRGLEtBQXVCLElBQUEsS0FBQSxpQkFBQSxJQUFJLENBQUMsVUFBVSxDQUFBLGdCQUFBLDRCQUFFO29CQUFuQyxJQUFNLFFBQVEsV0FBQTtvQkFDakIsSUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO29CQUN6RCxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7d0JBQ3BCLE9BQU8sT0FBTyxDQUFDO3FCQUNoQjtpQkFDRjs7Ozs7Ozs7O1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBa0MsNkJBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUN4RSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsY0FBUyxPQUFPLENBQUMsUUFBVSxDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUNILHVCQUFDO0lBQUQsQ0FBQyxBQWRELElBY0M7SUFkWSw0Q0FBZ0I7SUFnQjdCOzs7T0FHRztJQUNIO1FBQUE7UUFrQkEsQ0FBQztRQWpCQyxzQ0FBSSxHQUFKLFVBQUssR0FBdUIsRUFBRSxPQUFzQixFQUFFLFdBQXdCO1lBQzVFLDZGQUE2RjtZQUM3Riw0RkFBNEY7WUFDNUYsSUFBSSxXQUFXLEdBQUcsV0FBVyxDQUFDLGNBQWM7Z0JBQ3hDLDBCQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLDBCQUFhLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3RELE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFFRCx5RkFBeUY7WUFDekYsNENBQTRDO1lBQzVDLElBQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUMsSUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFO2dCQUN2QixPQUFPLElBQUksMEJBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN4QztpQkFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQzthQUNiO1FBQ0gsQ0FBQztRQUNILDhCQUFDO0lBQUQsQ0FBQyxBQWxCRCxJQWtCQztJQWxCWSwwREFBdUI7SUFvQnBDOzs7Ozs7OztPQVFHO0lBQ0g7UUFPRSxnQ0FDYyxPQUFtQixFQUFZLE9BQXVCLEVBQ3RELGNBQThCLEVBQVUsY0FBOEI7WUFEdEUsWUFBTyxHQUFQLE9BQU8sQ0FBWTtZQUFZLFlBQU8sR0FBUCxPQUFPLENBQWdCO1lBQ3RELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtZQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtZQVJwRjs7O2VBR0c7WUFDSyx1QkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBNEMsQ0FBQztRQUlNLENBQUM7UUFFeEYscUNBQUksR0FBSixVQUFLLEdBQXVCLEVBQUUsT0FBc0IsRUFBRSxXQUF3QjtZQUM1RSxJQUFJLEdBQUcsQ0FBQyxxQkFBcUIsS0FBSyxJQUFJLEVBQUU7Z0JBQ3RDLHdGQUF3RjtnQkFDeEYsaUJBQWlCO2dCQUNqQixPQUFPLElBQUksQ0FBQzthQUNiO2lCQUFNLElBQUksQ0FBQywwQkFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbkMsbUVBQW1FO2dCQUNuRSxNQUFNLElBQUksS0FBSyxDQUFDLDJFQUNaLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBRyxDQUFDLENBQUM7YUFDdEM7aUJBQU0sSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksOEJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM1RixNQUFNLElBQUksS0FBSyxDQUFDLCtDQUNaLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMseUNBQXNDLENBQUMsQ0FBQzthQUN6RTtZQUVELHlFQUF5RTtZQUNuRSxJQUFBLEtBQWlDLEdBQUcsQ0FBQyxxQkFBcUIsRUFBekQsU0FBUyxlQUFBLEVBQUUsaUJBQWlCLHVCQUE2QixDQUFDO1lBQ2pFLElBQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2xGLElBQUksVUFBVSxLQUFLLElBQUksRUFBRTtnQkFDdkIsOEZBQThGO2dCQUM5RixhQUFhO2dCQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBVSxHQUFHLENBQUMsU0FBUyxxQkFDbkMsMEJBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSw4QkFBeUIsU0FBUyxzQkFDbEUsT0FBTyxDQUFDLFFBQVEsTUFBRyxDQUFDLENBQUM7YUFDMUI7WUFFRCxPQUFPLElBQUksdUJBQVksQ0FBQyxJQUFJLDRCQUFpQixDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFTyxrREFBaUIsR0FBekIsVUFBMEIsVUFBa0IsRUFBRSxNQUFzQixFQUFFLFFBQWdCO1lBRXBGLElBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDOUQsSUFBSSxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzNDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUUsQ0FBQzthQUM3QjtpQkFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQzthQUNiO1FBQ0gsQ0FBQztRQUVPLG1EQUFrQixHQUExQixVQUEyQixVQUFrQixFQUFFLFFBQWdCO1lBRTdELElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUM1QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7YUFDOUY7WUFDRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFFLENBQUM7UUFDbEQsQ0FBQztRQUVTLHlEQUF3QixHQUFsQyxVQUFtQyxTQUFpQixFQUFFLFFBQWdCO1lBRXBFLHdGQUF3RjtZQUN4RixJQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDOUUsSUFBSSxjQUFjLEtBQUssSUFBSSxFQUFFO2dCQUMzQixPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN2RSxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7Z0JBQ3BCLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxJQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBMEIsQ0FBQztZQUNwRCxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQUMsV0FBVyxFQUFFLElBQUk7Z0JBQ2hDLDRGQUE0RjtnQkFDNUYseUJBQXlCO2dCQUN6QixJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO29CQUM3QixTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQ3ZDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0gsNkJBQUM7SUFBRCxDQUFDLEFBL0VELElBK0VDO0lBL0VZLHdEQUFzQjtJQWlGbkM7Ozs7Ozs7T0FPRztJQUNIO1FBQ0UsZ0NBQW9CLFNBQXlCLEVBQVUsU0FBNEI7WUFBL0QsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7WUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQUFHLENBQUM7UUFFdkYscUNBQUksR0FBSixVQUFLLEdBQXVCLEVBQUUsT0FBc0I7WUFDbEQsSUFBTSxNQUFNLEdBQUcsMEJBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdkMsNkZBQTZGO1lBQzdGLHVGQUF1RjtZQUN2RixJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4RCxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUU7Z0JBQ3JCLGtFQUFrRTtnQkFDbEUsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELElBQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNELElBQUksVUFBVSxLQUFLLElBQUksRUFBRTtnQkFDdkIsTUFBTSxJQUFJLEtBQUssQ0FDWCwwQ0FBd0MsT0FBTyxDQUFDLFFBQVEsbUNBQWdDLENBQUMsQ0FBQzthQUMvRjtZQUVELHFFQUFxRTtZQUNyRSxJQUFJLFFBQVEsS0FBSyxVQUFVLEVBQUU7Z0JBQzNCLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFFRCxJQUFNLElBQUksR0FBRyxvQ0FBc0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdEUsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUNqQiwwRkFBMEY7Z0JBQzFGLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFFRCwrRkFBK0Y7WUFDL0YsK0JBQStCO1lBQy9CLElBQU0sVUFBVSxHQUFHLGdDQUFrQixDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNoRixPQUFPLElBQUksdUJBQVksQ0FBQyxFQUFDLFVBQVUsWUFBQSxFQUFFLElBQUksTUFBQSxFQUFDLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0gsNkJBQUM7SUFBRCxDQUFDLEFBcENELElBb0NDO0lBcENZLHdEQUFzQjtJQXNDbkM7Ozs7O09BS0c7SUFDSDtRQUNFLDhCQUFvQixTQUF5QjtZQUF6QixjQUFTLEdBQVQsU0FBUyxDQUFnQjtRQUFHLENBQUM7UUFFakQsbUNBQUksR0FBSixVQUFLLEdBQXVCLEVBQUUsT0FBc0I7WUFDbEQsSUFBTSxNQUFNLEdBQUcsMEJBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkMsSUFBTSxZQUFZLEdBQ2Qsc0JBQVEsQ0FBQyxxQkFBTyxDQUFDLG9DQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsb0NBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUN2RixJQUFNLFVBQVUsR0FBRyw4QkFBZ0IsQ0FBQyxxQkFBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFFbEUsSUFBTSxJQUFJLEdBQUcsb0NBQXNCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RFLE9BQU8sSUFBSSx1QkFBWSxDQUFDLEVBQUMsVUFBVSxZQUFBLEVBQUUsSUFBSSxNQUFBLEVBQUMsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDSCwyQkFBQztJQUFELENBQUMsQUFaRCxJQVlDO0lBWlksb0RBQW9CO0lBY2pDOzs7T0FHRztJQUNIO1FBQ0UsZ0NBQW9CLFNBQXlCLEVBQVUsa0JBQXNDO1lBQXpFLGNBQVMsR0FBVCxTQUFTLENBQWdCO1lBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUFHLENBQUM7UUFFakcscUNBQUksR0FBSixVQUFLLEdBQXVCLEVBQUUsT0FBc0I7WUFDbEQsSUFBTSxNQUFNLEdBQUcsMEJBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkMsSUFBTSxJQUFJLEdBQUcsb0NBQXNCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RFLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDakIsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELElBQU0sVUFBVSxHQUNaLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVwRixPQUFPLElBQUksdUJBQVksQ0FBQyxFQUFDLFVBQVUsWUFBQSxFQUFFLElBQUksTUFBQSxFQUFDLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0gsNkJBQUM7SUFBRCxDQUFDLEFBZkQsSUFlQztJQWZZLHdEQUFzQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtFeHByZXNzaW9uLCBFeHRlcm5hbEV4cHIsIEV4dGVybmFsUmVmZXJlbmNlLCBXcmFwcGVkTm9kZUV4cHJ9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge1VuaWZpZWRNb2R1bGVzSG9zdH0gZnJvbSAnLi4vLi4vY29yZS9hcGknO1xuaW1wb3J0IHthYnNvbHV0ZUZyb21Tb3VyY2VGaWxlLCBkaXJuYW1lLCBMb2dpY2FsRmlsZVN5c3RlbSwgTG9naWNhbFByb2plY3RQYXRoLCByZWxhdGl2ZSwgdG9SZWxhdGl2ZUltcG9ydH0gZnJvbSAnLi4vLi4vZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtzdHJpcEV4dGVuc2lvbn0gZnJvbSAnLi4vLi4vZmlsZV9zeXN0ZW0vc3JjL3V0aWwnO1xuaW1wb3J0IHtSZWZsZWN0aW9uSG9zdH0gZnJvbSAnLi4vLi4vcmVmbGVjdGlvbic7XG5pbXBvcnQge2dldFNvdXJjZUZpbGUsIGlzRGVjbGFyYXRpb24sIGlzVHlwZURlY2xhcmF0aW9uLCBub2RlTmFtZUZvckVycm9yfSBmcm9tICcuLi8uLi91dGlsL3NyYy90eXBlc2NyaXB0JztcblxuaW1wb3J0IHtmaW5kRXhwb3J0ZWROYW1lT2ZOb2RlfSBmcm9tICcuL2ZpbmRfZXhwb3J0JztcbmltcG9ydCB7UmVmZXJlbmNlfSBmcm9tICcuL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHtNb2R1bGVSZXNvbHZlcn0gZnJvbSAnLi9yZXNvbHZlcic7XG5cblxuLyoqXG4gKiBGbGFncyB3aGljaCBhbHRlciB0aGUgaW1wb3J0cyBnZW5lcmF0ZWQgYnkgdGhlIGBSZWZlcmVuY2VFbWl0dGVyYC5cbiAqL1xuZXhwb3J0IGVudW0gSW1wb3J0RmxhZ3Mge1xuICBOb25lID0gMHgwMCxcblxuICAvKipcbiAgICogRm9yY2UgdGhlIGdlbmVyYXRpb24gb2YgYSBuZXcgaW1wb3J0IHdoZW4gZ2VuZXJhdGluZyBhIHJlZmVyZW5jZSwgZXZlbiBpZiBhbiBpZGVudGlmaWVyIGFscmVhZHlcbiAgICogZXhpc3RzIGluIHRoZSB0YXJnZXQgZmlsZSB3aGljaCBjb3VsZCBiZSB1c2VkIGluc3RlYWQuXG4gICAqXG4gICAqIFRoaXMgaXMgc29tZXRpbWVzIHJlcXVpcmVkIGlmIHRoZXJlJ3MgYSByaXNrIFR5cGVTY3JpcHQgbWlnaHQgcmVtb3ZlIGltcG9ydHMgZHVyaW5nIGVtaXQuXG4gICAqL1xuICBGb3JjZU5ld0ltcG9ydCA9IDB4MDEsXG5cbiAgLyoqXG4gICAqIERvbid0IG1ha2UgdXNlIG9mIGFueSBhbGlhc2luZyBpbmZvcm1hdGlvbiB3aGVuIGVtaXR0aW5nIGEgcmVmZXJlbmNlLlxuICAgKlxuICAgKiBUaGlzIGlzIHNvbWV0aW1lcyByZXF1aXJlZCBpZiBlbWl0dGluZyBpbnRvIGEgY29udGV4dCB3aGVyZSBnZW5lcmF0ZWQgcmVmZXJlbmNlcyB3aWxsIGJlIGZlZFxuICAgKiBpbnRvIFR5cGVTY3JpcHQgYW5kIHR5cGUtY2hlY2tlZCAoc3VjaCBhcyBpbiB0ZW1wbGF0ZSB0eXBlLWNoZWNraW5nKS5cbiAgICovXG4gIE5vQWxpYXNpbmcgPSAweDAyLFxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCBhbiBpbXBvcnQgdG8gYSB0eXBlLW9ubHkgZGVjbGFyYXRpb24gaXMgYWxsb3dlZC5cbiAgICpcbiAgICogRm9yIHJlZmVyZW5jZXMgdGhhdCBvY2N1ciBpbiB0eXBlLXBvc2l0aW9ucywgdGhlIHJlZmVycmVkIGRlY2xhcmF0aW9uIG1heSBiZSBhIHR5cGUtb25seVxuICAgKiBkZWNsYXJhdGlvbiB0aGF0IGlzIG5vdCByZXRhaW5lZCBkdXJpbmcgZW1pdC4gSW5jbHVkaW5nIHRoaXMgZmxhZyBhbGxvd3MgdG8gZW1pdCByZWZlcmVuY2VzIHRvXG4gICAqIHR5cGUtb25seSBkZWNsYXJhdGlvbnMgYXMgdXNlZCBpbiBlLmcuIHRlbXBsYXRlIHR5cGUtY2hlY2tpbmcuXG4gICAqL1xuICBBbGxvd1R5cGVJbXBvcnRzID0gMHgwNCxcbn1cblxuLyoqXG4gKiBBIHBhcnRpY3VsYXIgc3RyYXRlZ3kgZm9yIGdlbmVyYXRpbmcgYW4gZXhwcmVzc2lvbiB3aGljaCByZWZlcnMgdG8gYSBgUmVmZXJlbmNlYC5cbiAqXG4gKiBUaGVyZSBhcmUgbWFueSBwb3RlbnRpYWwgd2F5cyBhIGdpdmVuIGBSZWZlcmVuY2VgIGNvdWxkIGJlIHJlZmVycmVkIHRvIGluIHRoZSBjb250ZXh0IG9mIGEgZ2l2ZW5cbiAqIGZpbGUuIEEgbG9jYWwgZGVjbGFyYXRpb24gY291bGQgYmUgYXZhaWxhYmxlLCB0aGUgYFJlZmVyZW5jZWAgY291bGQgYmUgaW1wb3J0YWJsZSB2aWEgYSByZWxhdGl2ZVxuICogaW1wb3J0IHdpdGhpbiB0aGUgcHJvamVjdCwgb3IgYW4gYWJzb2x1dGUgaW1wb3J0IGludG8gYG5vZGVfbW9kdWxlc2AgbWlnaHQgYmUgbmVjZXNzYXJ5LlxuICpcbiAqIERpZmZlcmVudCBgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5YCBpbXBsZW1lbnRhdGlvbnMgaW1wbGVtZW50IHNwZWNpZmljIGxvZ2ljIGZvciBnZW5lcmF0aW5nIHN1Y2hcbiAqIHJlZmVyZW5jZXMuIEEgc2luZ2xlIHN0cmF0ZWd5IChzdWNoIGFzIHVzaW5nIGEgbG9jYWwgZGVjbGFyYXRpb24pIG1heSBub3QgYWx3YXlzIGJlIGFibGUgdG9cbiAqIGdlbmVyYXRlIGFuIGV4cHJlc3Npb24gZm9yIGV2ZXJ5IGBSZWZlcmVuY2VgIChmb3IgZXhhbXBsZSwgaWYgbm8gbG9jYWwgaWRlbnRpZmllciBpcyBhdmFpbGFibGUpLFxuICogYW5kIG1heSByZXR1cm4gYG51bGxgIGluIHN1Y2ggYSBjYXNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZmVyZW5jZUVtaXRTdHJhdGVneSB7XG4gIC8qKlxuICAgKiBFbWl0IGFuIGBFeHByZXNzaW9uYCB3aGljaCByZWZlcnMgdG8gdGhlIGdpdmVuIGBSZWZlcmVuY2VgIGluIHRoZSBjb250ZXh0IG9mIGEgcGFydGljdWxhclxuICAgKiBzb3VyY2UgZmlsZSwgaWYgcG9zc2libGUuXG4gICAqXG4gICAqIEBwYXJhbSByZWYgdGhlIGBSZWZlcmVuY2VgIGZvciB3aGljaCB0byBnZW5lcmF0ZSBhbiBleHByZXNzaW9uXG4gICAqIEBwYXJhbSBjb250ZXh0IHRoZSBzb3VyY2UgZmlsZSBpbiB3aGljaCB0aGUgYEV4cHJlc3Npb25gIG11c3QgYmUgdmFsaWRcbiAgICogQHBhcmFtIGltcG9ydEZsYWdzIGEgZmxhZyB3aGljaCBjb250cm9scyB3aGV0aGVyIGltcG9ydHMgc2hvdWxkIGJlIGdlbmVyYXRlZCBvciBub3RcbiAgICogQHJldHVybnMgYW4gYEV4cHJlc3Npb25gIHdoaWNoIHJlZmVycyB0byB0aGUgYFJlZmVyZW5jZWAsIG9yIGBudWxsYCBpZiBub25lIGNhbiBiZSBnZW5lcmF0ZWRcbiAgICovXG4gIGVtaXQocmVmOiBSZWZlcmVuY2UsIGNvbnRleHQ6IHRzLlNvdXJjZUZpbGUsIGltcG9ydEZsYWdzOiBJbXBvcnRGbGFncyk6IEV4cHJlc3Npb258bnVsbDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYEV4cHJlc3Npb25gcyB3aGljaCByZWZlciB0byBgUmVmZXJlbmNlYHMgaW4gYSBnaXZlbiBjb250ZXh0LlxuICpcbiAqIEEgYFJlZmVyZW5jZUVtaXR0ZXJgIHVzZXMgb25lIG9yIG1vcmUgYFJlZmVyZW5jZUVtaXRTdHJhdGVneWAgaW1wbGVtZW50YXRpb25zIHRvIHByb2R1Y2UgYW5cbiAqIGBFeHByZXNzaW9uYCB3aGljaCByZWZlcnMgdG8gYSBgUmVmZXJlbmNlYCBpbiB0aGUgY29udGV4dCBvZiBhIHBhcnRpY3VsYXIgZmlsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlZmVyZW5jZUVtaXR0ZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0cmF0ZWdpZXM6IFJlZmVyZW5jZUVtaXRTdHJhdGVneVtdKSB7fVxuXG4gIGVtaXQocmVmOiBSZWZlcmVuY2UsIGNvbnRleHQ6IHRzLlNvdXJjZUZpbGUsIGltcG9ydEZsYWdzOiBJbXBvcnRGbGFnc8KgPSBJbXBvcnRGbGFncy5Ob25lKTpcbiAgICAgIEV4cHJlc3Npb24ge1xuICAgIGZvciAoY29uc3Qgc3RyYXRlZ3kgb2YgdGhpcy5zdHJhdGVnaWVzKSB7XG4gICAgICBjb25zdCBlbWl0dGVkID0gc3RyYXRlZ3kuZW1pdChyZWYsIGNvbnRleHQsIGltcG9ydEZsYWdzKTtcbiAgICAgIGlmIChlbWl0dGVkICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBlbWl0dGVkO1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byB3cml0ZSBhIHJlZmVyZW5jZSB0byAke25vZGVOYW1lRm9yRXJyb3IocmVmLm5vZGUpfSBpbiAke1xuICAgICAgICByZWYubm9kZS5nZXRTb3VyY2VGaWxlKCkuZmlsZU5hbWV9IGZyb20gJHtjb250ZXh0LmZpbGVOYW1lfWApO1xuICB9XG59XG5cbi8qKlxuICogQSBgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5YCB3aGljaCB3aWxsIHJlZmVyIHRvIGRlY2xhcmF0aW9ucyBieSBhbnkgbG9jYWwgYHRzLklkZW50aWZpZXJgcywgaWZcbiAqIHN1Y2ggaWRlbnRpZmllcnMgYXJlIGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIExvY2FsSWRlbnRpZmllclN0cmF0ZWd5IGltcGxlbWVudHMgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5IHtcbiAgZW1pdChyZWY6IFJlZmVyZW5jZTx0cy5Ob2RlPiwgY29udGV4dDogdHMuU291cmNlRmlsZSwgaW1wb3J0RmxhZ3M6IEltcG9ydEZsYWdzKTogRXhwcmVzc2lvbnxudWxsIHtcbiAgICAvLyBJZiB0aGUgZW1pdHRlciBoYXMgc3BlY2lmaWVkIEZvcmNlTmV3SW1wb3J0LCB0aGVuIExvY2FsSWRlbnRpZmllclN0cmF0ZWd5IHNob3VsZCBub3QgdXNlIGFcbiAgICAvLyBsb2NhbCBpZGVudGlmaWVyIGF0IGFsbCwgKmV4Y2VwdCogaW4gdGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRoZSBub2RlIGlzIGFjdHVhbGx5IGRlY2xhcmVkLlxuICAgIGlmIChpbXBvcnRGbGFncyAmIEltcG9ydEZsYWdzLkZvcmNlTmV3SW1wb3J0ICYmXG4gICAgICAgIGdldFNvdXJjZUZpbGUocmVmLm5vZGUpICE9PSBnZXRTb3VyY2VGaWxlKGNvbnRleHQpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBBIFJlZmVyZW5jZSBjYW4gaGF2ZSBtdWx0aXBsZSBpZGVudGl0aWVzIGluIGRpZmZlcmVudCBmaWxlcywgc28gaXQgbWF5IGFscmVhZHkgaGF2ZSBhblxuICAgIC8vIElkZW50aWZpZXIgaW4gdGhlIHJlcXVlc3RlZCBjb250ZXh0IGZpbGUuXG4gICAgY29uc3QgaWRlbnRpZmllciA9IHJlZi5nZXRJZGVudGl0eUluKGNvbnRleHQpO1xuICAgIGlmIChpZGVudGlmaWVyICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbmV3IFdyYXBwZWROb2RlRXhwcihpZGVudGlmaWVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQSBgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5YCB3aGljaCB3aWxsIHJlZmVyIHRvIGRlY2xhcmF0aW9ucyB0aGF0IGNvbWUgZnJvbSBgbm9kZV9tb2R1bGVzYCB1c2luZ1xuICogYW4gYWJzb2x1dGUgaW1wb3J0LlxuICpcbiAqIFBhcnQgb2YgdGhpcyBzdHJhdGVneSBpbnZvbHZlcyBsb29raW5nIGF0IHRoZSB0YXJnZXQgZW50cnkgcG9pbnQgYW5kIGlkZW50aWZ5aW5nIHRoZSBleHBvcnRlZFxuICogbmFtZSBvZiB0aGUgdGFyZ2V0ZWQgZGVjbGFyYXRpb24sIGFzIGl0IG1pZ2h0IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBkZWNsYXJlZCBuYW1lIChlLmcuIGFcbiAqIGRpcmVjdGl2ZSBtaWdodCBiZSBkZWNsYXJlZCBhcyBGb29EaXJJbXBsLCBidXQgZXhwb3J0ZWQgYXMgRm9vRGlyKS4gSWYgbm8gZXhwb3J0IGNhbiBiZSBmb3VuZFxuICogd2hpY2ggbWFwcyBiYWNrIHRvIHRoZSBvcmlnaW5hbCBkaXJlY3RpdmUsIGFuIGVycm9yIGlzIHRocm93bi5cbiAqL1xuZXhwb3J0IGNsYXNzIEFic29sdXRlTW9kdWxlU3RyYXRlZ3kgaW1wbGVtZW50cyBSZWZlcmVuY2VFbWl0U3RyYXRlZ3kge1xuICAvKipcbiAgICogQSBjYWNoZSBvZiB0aGUgZXhwb3J0cyBvZiBzcGVjaWZpYyBtb2R1bGVzLCBiZWNhdXNlIHJlc29sdmluZyBhIG1vZHVsZSB0byBpdHMgZXhwb3J0cyBpcyBhXG4gICAqIGNvc3RseSBvcGVyYXRpb24uXG4gICAqL1xuICBwcml2YXRlIG1vZHVsZUV4cG9ydHNDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBNYXA8dHMuRGVjbGFyYXRpb24sIHN0cmluZz58bnVsbD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByb3RlY3RlZCBwcm9ncmFtOiB0cy5Qcm9ncmFtLCBwcm90ZWN0ZWQgY2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsXG4gICAgICBwcm90ZWN0ZWQgbW9kdWxlUmVzb2x2ZXI6IE1vZHVsZVJlc29sdmVyLCBwcml2YXRlIHJlZmxlY3Rpb25Ib3N0OiBSZWZsZWN0aW9uSG9zdCkge31cblxuICBlbWl0KHJlZjogUmVmZXJlbmNlPHRzLk5vZGU+LCBjb250ZXh0OiB0cy5Tb3VyY2VGaWxlLCBpbXBvcnRGbGFnczogSW1wb3J0RmxhZ3MpOiBFeHByZXNzaW9ufG51bGwge1xuICAgIGlmIChyZWYuYmVzdEd1ZXNzT3duaW5nTW9kdWxlID09PSBudWxsKSB7XG4gICAgICAvLyBUaGVyZSBpcyBubyBtb2R1bGUgbmFtZSBhdmFpbGFibGUgZm9yIHRoaXMgUmVmZXJlbmNlLCBtZWFuaW5nIGl0IHdhcyBhcnJpdmVkIGF0IHZpYSBhXG4gICAgICAvLyByZWxhdGl2ZSBwYXRoLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmICghaXNEZWNsYXJhdGlvbihyZWYubm9kZSkpIHtcbiAgICAgIC8vIEl0J3Mgbm90IHBvc3NpYmxlIHRvIGltcG9ydCBzb21ldGhpbmcgd2hpY2ggaXNuJ3QgYSBkZWNsYXJhdGlvbi5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGVidWcgYXNzZXJ0OiB1bmFibGUgdG8gaW1wb3J0IGEgUmVmZXJlbmNlIHRvIG5vbi1kZWNsYXJhdGlvbiBvZiB0eXBlICR7XG4gICAgICAgICAgdHMuU3ludGF4S2luZFtyZWYubm9kZS5raW5kXX0uYCk7XG4gICAgfSBlbHNlIGlmICgoaW1wb3J0RmxhZ3MgJiBJbXBvcnRGbGFncy5BbGxvd1R5cGVJbXBvcnRzKSA9PT0gMCAmJiBpc1R5cGVEZWNsYXJhdGlvbihyZWYubm9kZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW1wb3J0aW5nIGEgdHlwZS1vbmx5IGRlY2xhcmF0aW9uIG9mIHR5cGUgJHtcbiAgICAgICAgICB0cy5TeW50YXhLaW5kW3JlZi5ub2RlLmtpbmRdfSBpbiBhIHZhbHVlIHBvc2l0aW9uIGlzIG5vdCBhbGxvd2VkLmApO1xuICAgIH1cblxuICAgIC8vIFRyeSB0byBmaW5kIHRoZSBleHBvcnRlZCBuYW1lIG9mIHRoZSBkZWNsYXJhdGlvbiwgaWYgb25lIGlzIGF2YWlsYWJsZS5cbiAgICBjb25zdCB7c3BlY2lmaWVyLCByZXNvbHV0aW9uQ29udGV4dH0gPSByZWYuYmVzdEd1ZXNzT3duaW5nTW9kdWxlO1xuICAgIGNvbnN0IHN5bWJvbE5hbWUgPSB0aGlzLnJlc29sdmVJbXBvcnROYW1lKHNwZWNpZmllciwgcmVmLm5vZGUsIHJlc29sdXRpb25Db250ZXh0KTtcbiAgICBpZiAoc3ltYm9sTmFtZSA9PT0gbnVsbCkge1xuICAgICAgLy8gVE9ETyhhbHhodWIpOiBtYWtlIHRoaXMgZXJyb3IgYSB0cy5EaWFnbm9zdGljIHBvaW50aW5nIGF0IHdoYXRldmVyIGNhdXNlZCB0aGlzIGltcG9ydCB0byBiZVxuICAgICAgLy8gdHJpZ2dlcmVkLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTeW1ib2wgJHtyZWYuZGVidWdOYW1lfSBkZWNsYXJlZCBpbiAke1xuICAgICAgICAgIGdldFNvdXJjZUZpbGUocmVmLm5vZGUpLmZpbGVOYW1lfSBpcyBub3QgZXhwb3J0ZWQgZnJvbSAke3NwZWNpZmllcn0gKGltcG9ydCBpbnRvICR7XG4gICAgICAgICAgY29udGV4dC5maWxlTmFtZX0pYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBFeHRlcm5hbEV4cHIobmV3IEV4dGVybmFsUmVmZXJlbmNlKHNwZWNpZmllciwgc3ltYm9sTmFtZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlSW1wb3J0TmFtZShtb2R1bGVOYW1lOiBzdHJpbmcsIHRhcmdldDogdHMuRGVjbGFyYXRpb24sIGZyb21GaWxlOiBzdHJpbmcpOiBzdHJpbmdcbiAgICAgIHxudWxsIHtcbiAgICBjb25zdCBleHBvcnRzID0gdGhpcy5nZXRFeHBvcnRzT2ZNb2R1bGUobW9kdWxlTmFtZSwgZnJvbUZpbGUpO1xuICAgIGlmIChleHBvcnRzICE9PSBudWxsICYmIGV4cG9ydHMuaGFzKHRhcmdldCkpIHtcbiAgICAgIHJldHVybiBleHBvcnRzLmdldCh0YXJnZXQpITtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRFeHBvcnRzT2ZNb2R1bGUobW9kdWxlTmFtZTogc3RyaW5nLCBmcm9tRmlsZTogc3RyaW5nKTpcbiAgICAgIE1hcDx0cy5EZWNsYXJhdGlvbiwgc3RyaW5nPnxudWxsIHtcbiAgICBpZiAoIXRoaXMubW9kdWxlRXhwb3J0c0NhY2hlLmhhcyhtb2R1bGVOYW1lKSkge1xuICAgICAgdGhpcy5tb2R1bGVFeHBvcnRzQ2FjaGUuc2V0KG1vZHVsZU5hbWUsIHRoaXMuZW51bWVyYXRlRXhwb3J0c09mTW9kdWxlKG1vZHVsZU5hbWUsIGZyb21GaWxlKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm1vZHVsZUV4cG9ydHNDYWNoZS5nZXQobW9kdWxlTmFtZSkhO1xuICB9XG5cbiAgcHJvdGVjdGVkIGVudW1lcmF0ZUV4cG9ydHNPZk1vZHVsZShzcGVjaWZpZXI6IHN0cmluZywgZnJvbUZpbGU6IHN0cmluZyk6XG4gICAgICBNYXA8dHMuRGVjbGFyYXRpb24sIHN0cmluZz58bnVsbCB7XG4gICAgLy8gRmlyc3QsIHJlc29sdmUgdGhlIG1vZHVsZSBzcGVjaWZpZXIgdG8gaXRzIGVudHJ5IHBvaW50LCBhbmQgZ2V0IHRoZSB0cy5TeW1ib2wgZm9yIGl0LlxuICAgIGNvbnN0IGVudHJ5UG9pbnRGaWxlID0gdGhpcy5tb2R1bGVSZXNvbHZlci5yZXNvbHZlTW9kdWxlKHNwZWNpZmllciwgZnJvbUZpbGUpO1xuICAgIGlmIChlbnRyeVBvaW50RmlsZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZXhwb3J0cyA9IHRoaXMucmVmbGVjdGlvbkhvc3QuZ2V0RXhwb3J0c09mTW9kdWxlKGVudHJ5UG9pbnRGaWxlKTtcbiAgICBpZiAoZXhwb3J0cyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGV4cG9ydE1hcCA9IG5ldyBNYXA8dHMuRGVjbGFyYXRpb24sIHN0cmluZz4oKTtcbiAgICBleHBvcnRzLmZvckVhY2goKGRlY2xhcmF0aW9uLCBuYW1lKSA9PiB7XG4gICAgICAvLyBJdCdzIG9rYXkgdG8gc2tpcCBpbmxpbmUgZGVjbGFyYXRpb25zLCBzaW5jZSBieSBkZWZpbml0aW9uIHRoZXkncmUgbm90IHRhcmdldC1hYmxlIHdpdGggYVxuICAgICAgLy8gdHMuRGVjbGFyYXRpb24gYW55d2F5LlxuICAgICAgaWYgKGRlY2xhcmF0aW9uLm5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgZXhwb3J0TWFwLnNldChkZWNsYXJhdGlvbi5ub2RlLCBuYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZXhwb3J0TWFwO1xuICB9XG59XG5cbi8qKlxuICogQSBgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5YCB3aGljaCB3aWxsIHJlZmVyIHRvIGRlY2xhcmF0aW9ucyB2aWEgcmVsYXRpdmUgcGF0aHMsIHByb3ZpZGVkIHRoZXkncmVcbiAqIGJvdGggaW4gdGhlIGxvZ2ljYWwgcHJvamVjdCBcInNwYWNlXCIgb2YgcGF0aHMuXG4gKlxuICogVGhpcyBpcyB0cmlja2llciB0aGFuIGl0IHNvdW5kcywgYXMgdGhlIHR3byBmaWxlcyBtYXkgYmUgaW4gZGlmZmVyZW50IHJvb3QgZGlyZWN0b3JpZXMgaW4gdGhlXG4gKiBwcm9qZWN0LiBTaW1wbHkgY2FsY3VsYXRpbmcgYSBmaWxlIHN5c3RlbSByZWxhdGl2ZSBwYXRoIGJldHdlZW4gdGhlIHR3byBpcyBub3Qgc3VmZmljaWVudC5cbiAqIEluc3RlYWQsIGBMb2dpY2FsUHJvamVjdFBhdGhgcyBhcmUgdXNlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIExvZ2ljYWxQcm9qZWN0U3RyYXRlZ3kgaW1wbGVtZW50cyBSZWZlcmVuY2VFbWl0U3RyYXRlZ3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZmxlY3RvcjogUmVmbGVjdGlvbkhvc3QsIHByaXZhdGUgbG9naWNhbEZzOiBMb2dpY2FsRmlsZVN5c3RlbSkge31cblxuICBlbWl0KHJlZjogUmVmZXJlbmNlPHRzLk5vZGU+LCBjb250ZXh0OiB0cy5Tb3VyY2VGaWxlKTogRXhwcmVzc2lvbnxudWxsIHtcbiAgICBjb25zdCBkZXN0U2YgPSBnZXRTb3VyY2VGaWxlKHJlZi5ub2RlKTtcblxuICAgIC8vIENvbXB1dGUgdGhlIHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgaW1wb3J0aW5nIGZpbGUgdG8gdGhlIGZpbGUgYmVpbmcgaW1wb3J0ZWQuIFRoaXMgaXMgZG9uZVxuICAgIC8vIGFzIGEgbG9naWNhbCBwYXRoIGNvbXB1dGF0aW9uLCBiZWNhdXNlIHRoZSB0d28gZmlsZXMgbWlnaHQgYmUgaW4gZGlmZmVyZW50IHJvb3REaXJzLlxuICAgIGNvbnN0IGRlc3RQYXRoID0gdGhpcy5sb2dpY2FsRnMubG9naWNhbFBhdGhPZlNmKGRlc3RTZik7XG4gICAgaWYgKGRlc3RQYXRoID09PSBudWxsKSB7XG4gICAgICAvLyBUaGUgaW1wb3J0ZWQgZmlsZSBpcyBub3Qgd2l0aGluIHRoZSBsb2dpY2FsIHByb2plY3QgZmlsZXN5c3RlbS5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG9yaWdpblBhdGggPSB0aGlzLmxvZ2ljYWxGcy5sb2dpY2FsUGF0aE9mU2YoY29udGV4dCk7XG4gICAgaWYgKG9yaWdpblBhdGggPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgRGVidWcgYXNzZXJ0OiBhdHRlbXB0IHRvIGltcG9ydCBmcm9tICR7Y29udGV4dC5maWxlTmFtZX0gYnV0IGl0J3Mgb3V0c2lkZSB0aGUgcHJvZ3JhbT9gKTtcbiAgICB9XG5cbiAgICAvLyBUaGVyZSdzIG5vIHdheSB0byBlbWl0IGEgcmVsYXRpdmUgcmVmZXJlbmNlIGZyb20gYSBmaWxlIHRvIGl0c2VsZi5cbiAgICBpZiAoZGVzdFBhdGggPT09IG9yaWdpblBhdGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG5hbWUgPSBmaW5kRXhwb3J0ZWROYW1lT2ZOb2RlKHJlZi5ub2RlLCBkZXN0U2YsIHRoaXMucmVmbGVjdG9yKTtcbiAgICBpZiAobmFtZSA9PT0gbnVsbCkge1xuICAgICAgLy8gVGhlIHRhcmdldCBkZWNsYXJhdGlvbiBpc24ndCBleHBvcnRlZCBmcm9tIHRoZSBmaWxlIGl0J3MgZGVjbGFyZWQgaW4uIFRoaXMgaXMgYW4gaXNzdWUhXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBXaXRoIGJvdGggZmlsZXMgZXhwcmVzc2VkIGFzIExvZ2ljYWxQcm9qZWN0UGF0aHMsIGdldHRpbmcgdGhlIG1vZHVsZSBzcGVjaWZpZXIgYXMgYSByZWxhdGl2ZVxuICAgIC8vIHBhdGggaXMgbm93IHN0cmFpZ2h0Zm9yd2FyZC5cbiAgICBjb25zdCBtb2R1bGVOYW1lID0gTG9naWNhbFByb2plY3RQYXRoLnJlbGF0aXZlUGF0aEJldHdlZW4ob3JpZ2luUGF0aCwgZGVzdFBhdGgpO1xuICAgIHJldHVybiBuZXcgRXh0ZXJuYWxFeHByKHttb2R1bGVOYW1lLCBuYW1lfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIGBSZWZlcmVuY2VFbWl0U3RyYXRlZ3lgIHdoaWNoIGNvbnN0cnVjdHMgcmVsYXRpdmVzIHBhdGhzIGJldHdlZW4gYHRzLlNvdXJjZUZpbGVgcy5cbiAqXG4gKiBUaGlzIHN0cmF0ZWd5IGNhbiBiZSB1c2VkIGlmIHRoZXJlIGlzIG5vIGByb290RGlyYC9gcm9vdERpcnNgIHN0cnVjdHVyZSBmb3IgdGhlIHByb2plY3Qgd2hpY2hcbiAqIG5lY2Vzc2l0YXRlcyB0aGUgc3Ryb25nZXIgbG9naWMgb2YgYExvZ2ljYWxQcm9qZWN0U3RyYXRlZ3lgLlxuICovXG5leHBvcnQgY2xhc3MgUmVsYXRpdmVQYXRoU3RyYXRlZ3kgaW1wbGVtZW50cyBSZWZlcmVuY2VFbWl0U3RyYXRlZ3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZmxlY3RvcjogUmVmbGVjdGlvbkhvc3QpIHt9XG5cbiAgZW1pdChyZWY6IFJlZmVyZW5jZTx0cy5Ob2RlPiwgY29udGV4dDogdHMuU291cmNlRmlsZSk6IEV4cHJlc3Npb258bnVsbCB7XG4gICAgY29uc3QgZGVzdFNmID0gZ2V0U291cmNlRmlsZShyZWYubm9kZSk7XG4gICAgY29uc3QgcmVsYXRpdmVQYXRoID1cbiAgICAgICAgcmVsYXRpdmUoZGlybmFtZShhYnNvbHV0ZUZyb21Tb3VyY2VGaWxlKGNvbnRleHQpKSwgYWJzb2x1dGVGcm9tU291cmNlRmlsZShkZXN0U2YpKTtcbiAgICBjb25zdCBtb2R1bGVOYW1lID0gdG9SZWxhdGl2ZUltcG9ydChzdHJpcEV4dGVuc2lvbihyZWxhdGl2ZVBhdGgpKTtcblxuICAgIGNvbnN0IG5hbWUgPSBmaW5kRXhwb3J0ZWROYW1lT2ZOb2RlKHJlZi5ub2RlLCBkZXN0U2YsIHRoaXMucmVmbGVjdG9yKTtcbiAgICByZXR1cm4gbmV3IEV4dGVybmFsRXhwcih7bW9kdWxlTmFtZSwgbmFtZX0pO1xuICB9XG59XG5cbi8qKlxuICogQSBgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5YCB3aGljaCB1c2VzIGEgYFVuaWZpZWRNb2R1bGVzSG9zdGAgdG8gZ2VuZXJhdGUgYWJzb2x1dGUgaW1wb3J0XG4gKiByZWZlcmVuY2VzLlxuICovXG5leHBvcnQgY2xhc3MgVW5pZmllZE1vZHVsZXNTdHJhdGVneSBpbXBsZW1lbnRzIFJlZmVyZW5jZUVtaXRTdHJhdGVneSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmbGVjdG9yOiBSZWZsZWN0aW9uSG9zdCwgcHJpdmF0ZSB1bmlmaWVkTW9kdWxlc0hvc3Q6IFVuaWZpZWRNb2R1bGVzSG9zdCkge31cblxuICBlbWl0KHJlZjogUmVmZXJlbmNlPHRzLk5vZGU+LCBjb250ZXh0OiB0cy5Tb3VyY2VGaWxlKTogRXhwcmVzc2lvbnxudWxsIHtcbiAgICBjb25zdCBkZXN0U2YgPSBnZXRTb3VyY2VGaWxlKHJlZi5ub2RlKTtcbiAgICBjb25zdCBuYW1lID0gZmluZEV4cG9ydGVkTmFtZU9mTm9kZShyZWYubm9kZSwgZGVzdFNmLCB0aGlzLnJlZmxlY3Rvcik7XG4gICAgaWYgKG5hbWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZHVsZU5hbWUgPVxuICAgICAgICB0aGlzLnVuaWZpZWRNb2R1bGVzSG9zdC5maWxlTmFtZVRvTW9kdWxlTmFtZShkZXN0U2YuZmlsZU5hbWUsIGNvbnRleHQuZmlsZU5hbWUpO1xuXG4gICAgcmV0dXJuIG5ldyBFeHRlcm5hbEV4cHIoe21vZHVsZU5hbWUsIG5hbWV9KTtcbiAgfVxufVxuIl19
|
|
280
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvaW1wb3J0cy9zcmMvZW1pdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7OztPQU1HO0lBQ0gsOENBQStGO0lBQy9GLCtCQUFpQztJQUdqQywyRUFBcUk7SUFDckksNkVBQTBEO0lBRTFELGtGQUE0RztJQUU1Ryx1RkFBcUQ7SUFLckQ7O09BRUc7SUFDSCxJQUFZLFdBMkJYO0lBM0JELFdBQVksV0FBVztRQUNyQiw2Q0FBVyxDQUFBO1FBRVg7Ozs7O1dBS0c7UUFDSCxpRUFBcUIsQ0FBQTtRQUVyQjs7Ozs7V0FLRztRQUNILHlEQUFpQixDQUFBO1FBRWpCOzs7Ozs7V0FNRztRQUNILHFFQUF1QixDQUFBO0lBQ3pCLENBQUMsRUEzQlcsV0FBVyxHQUFYLG1CQUFXLEtBQVgsbUJBQVcsUUEyQnRCO0lBMkJEOzs7OztPQUtHO0lBQ0g7UUFDRSwwQkFBb0IsVUFBbUM7WUFBbkMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFBRyxDQUFDO1FBRTNELCtCQUFJLEdBQUosVUFBSyxHQUFjLEVBQUUsT0FBc0IsRUFBRSxXQUEyQzs7WUFBM0MsNEJBQUEsRUFBQSxjQUEyQixXQUFXLENBQUMsSUFBSTs7Z0JBRXRGLEtBQXVCLElBQUEsS0FBQSxpQkFBQSxJQUFJLENBQUMsVUFBVSxDQUFBLGdCQUFBLDRCQUFFO29CQUFuQyxJQUFNLFFBQVEsV0FBQTtvQkFDakIsSUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO29CQUN6RCxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7d0JBQ3BCLE9BQU8sT0FBTyxDQUFDO3FCQUNoQjtpQkFDRjs7Ozs7Ozs7O1lBQ0QsTUFBTSxJQUFJLEtBQUss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QUEsRUFBQyxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNILDJCQUFDO0lBQUQsQ0FBQyxBQVpELElBWUM7SUFaWSxvREFBb0I7SUFjakM7OztPQUdHO0lBQ0g7UUFDRSxnQ0FBb0IsU0FBeUIsRUFBVSxrQkFBc0M7WUFBekUsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7WUFBVSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQUcsQ0FBQztRQUVqRyxxQ0FBSSxHQUFKLFVBQUssR0FBdUIsRUFBRSxPQUFzQjtZQUNsRCxJQUFNLE1BQU0sR0FBRywwQkFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QyxJQUFNLElBQUksR0FBRyxvQ0FBc0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdEUsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUNqQixPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsSUFBTSxVQUFVLEdBQ1osSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXBGLE9BQU8sSUFBSSx1QkFBWSxDQUFDLEVBQUMsVUFBVSxZQUFBLEVBQUUsSUFBSSxNQUFBLEVBQUMsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDSCw2QkFBQztJQUFELENBQUMsQUFmRCxJQWVDO0lBZlksd0RBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge0V4cHJlc3Npb24sIEV4dGVybmFsRXhwciwgRXh0ZXJuYWxSZWZlcmVuY2UsIFdyYXBwZWROb2RlRXhwcn0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7VW5pZmllZE1vZHVsZXNIb3N0fSBmcm9tICcuLi8uLi9jb3JlL2FwaSc7XG5pbXBvcnQge2Fic29sdXRlRnJvbVNvdXJjZUZpbGUsIGRpcm5hbWUsIExvZ2ljYWxGaWxlU3lzdGVtLCBMb2dpY2FsUHJvamVjdFBhdGgsIHJlbGF0aXZlLCB0b1JlbGF0aXZlSW1wb3J0fSBmcm9tICcuLi8uLi9maWxlX3N5c3RlbSc7XG5pbXBvcnQge3N0cmlwRXh0ZW5zaW9ufSBmcm9tICcuLi8uLi9maWxlX3N5c3RlbS9zcmMvdXRpbCc7XG5pbXBvcnQge0RlY2xhcmF0aW9uTm9kZSwgaXNDb25jcmV0ZURlY2xhcmF0aW9uLCBSZWZsZWN0aW9uSG9zdH0gZnJvbSAnLi4vLi4vcmVmbGVjdGlvbic7XG5pbXBvcnQge2dldFNvdXJjZUZpbGUsIGlzRGVjbGFyYXRpb24sIGlzVHlwZURlY2xhcmF0aW9uLCBub2RlTmFtZUZvckVycm9yfSBmcm9tICcuLi8uLi91dGlsL3NyYy90eXBlc2NyaXB0JztcblxuaW1wb3J0IHtmaW5kRXhwb3J0ZWROYW1lT2ZOb2RlfSBmcm9tICcuL2ZpbmRfZXhwb3J0JztcbmltcG9ydCB7UmVmZXJlbmNlfSBmcm9tICcuL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHtNb2R1bGVSZXNvbHZlcn0gZnJvbSAnLi9yZXNvbHZlcic7XG5cblxuLyoqXG4gKiBGbGFncyB3aGljaCBhbHRlciB0aGUgaW1wb3J0cyBnZW5lcmF0ZWQgYnkgdGhlIGBSZWZlcmVuY2VFbWl0dGVyYC5cbiAqL1xuZXhwb3J0IGVudW0gSW1wb3J0RmxhZ3Mge1xuICBOb25lID0gMHgwMCxcblxuICAvKipcbiAgICogRm9yY2UgdGhlIGdlbmVyYXRpb24gb2YgYSBuZXcgaW1wb3J0IHdoZW4gZ2VuZXJhdGluZyBhIHJlZmVyZW5jZSwgZXZlbiBpZiBhbiBpZGVudGlmaWVyIGFscmVhZHlcbiAgICogZXhpc3RzIGluIHRoZSB0YXJnZXQgZmlsZSB3aGljaCBjb3VsZCBiZSB1c2VkIGluc3RlYWQuXG4gICAqXG4gICAqIFRoaXMgaXMgc29tZXRpbWVzIHJlcXVpcmVkIGlmIHRoZXJlJ3MgYSByaXNrIFR5cGVTY3JpcHQgbWlnaHQgcmVtb3ZlIGltcG9ydHMgZHVyaW5nIGVtaXQuXG4gICAqL1xuICBGb3JjZU5ld0ltcG9ydCA9IDB4MDEsXG5cbiAgLyoqXG4gICAqIERvbid0IG1ha2UgdXNlIG9mIGFueSBhbGlhc2luZyBpbmZvcm1hdGlvbiB3aGVuIGVtaXR0aW5nIGEgcmVmZXJlbmNlLlxuICAgKlxuICAgKiBUaGlzIGlzIHNvbWV0aW1lcyByZXF1aXJlZCBpZiBlbWl0dGluZyBpbnRvIGEgY29udGV4dCB3aGVyZSBnZW5lcmF0ZWQgcmVmZXJlbmNlcyB3aWxsIGJlIGZlZFxuICAgKiBpbnRvIFR5cGVTY3JpcHQgYW5kIHR5cGUtY2hlY2tlZCAoc3VjaCBhcyBpbiB0ZW1wbGF0ZSB0eXBlLWNoZWNraW5nKS5cbiAgICovXG4gIE5vQWxpYXNpbmcgPSAweDAyLFxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCBhbiBpbXBvcnQgdG8gYSB0eXBlLW9ubHkgZGVjbGFyYXRpb24gaXMgYWxsb3dlZC5cbiAgICpcbiAgICogRm9yIHJlZmVyZW5jZXMgdGhhdCBvY2N1ciBpbiB0eXBlLXBvc2l0aW9ucywgdGhlIHJlZmVycmVkIGRlY2xhcmF0aW9uIG1heSBiZSBhIHR5cGUtb25seVxuICAgKiBkZWNsYXJhdGlvbiB0aGF0IGlzIG5vdCByZXRhaW5lZCBkdXJpbmcgZW1pdC4gSW5jbHVkaW5nIHRoaXMgZmxhZyBhbGxvd3MgdG8gZW1pdCByZWZlcmVuY2VzIHRvXG4gICAqIHR5cGUtb25seSBkZWNsYXJhdGlvbnMgYXMgdXNlZCBpbiBlLmcuIHRlbXBsYXRlIHR5cGUtY2hlY2tpbmcuXG4gICAqL1xuICBBbGxvd1R5cGVJbXBvcnRzID0gMHgwNCxcbn1cblxuLyoqXG4gKiBBIHBhcnRpY3VsYXIgc3RyYXRlZ3kgZm9yIGdlbmVyYXRpbmcgYW4gZXhwcmVzc2lvbiB3aGljaCByZWZlcnMgdG8gYSBgUmVmZXJlbmNlYC5cbiAqXG4gKiBUaGVyZSBhcmUgbWFueSBwb3RlbnRpYWwgd2F5cyBhIGdpdmVuIGBSZWZlcmVuY2VgIGNvdWxkIGJlIHJlZmVycmVkIHRvIGluIHRoZSBjb250ZXh0IG9mIGEgZ2l2ZW5cbiAqIGZpbGUuIEEgbG9jYWwgZGVjbGFyYXRpb24gY291bGQgYmUgYXZhaWxhYmxlLCB0aGUgYFJlZmVyZW5jZWAgY291bGQgYmUgaW1wb3J0YWJsZSB2aWEgYSByZWxhdGl2ZVxuICogaW1wb3J0IHdpdGhpbiB0aGUgcHJvamVjdCwgb3IgYW4gYWJzb2x1dGUgaW1wb3J0IGludG8gYG5vZGVfbW9kdWxlc2AgbWlnaHQgYmUgbmVjZXNzYXJ5LlxuICpcbiAqIERpZmZlcmVudCBgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5YCBpbXBsZW1lbnRhdGlvbnMgaW1wbGVtZW50IHNwZWNpZmljIGxvZ2ljIGZvciBnZW5lcmF0aW5nIHN1Y2hcbiAqIHJlZmVyZW5jZXMuIEEgc2luZ2xlIHN0cmF0ZWd5IChzdWNoIGFzIHVzaW5nIGEgbG9jYWwgZGVjbGFyYXRpb24pIG1heSBub3QgYWx3YXlzIGJlIGFibGUgdG9cbiAqIGdlbmVyYXRlIGFuIGV4cHJlc3Npb24gZm9yIGV2ZXJ5IGBSZWZlcmVuY2VgIChmb3IgZXhhbXBsZSwgaWYgbm8gbG9jYWwgaWRlbnRpZmllciBpcyBhdmFpbGFibGUpLFxuICogYW5kIG1heSByZXR1cm4gYG51bGxgIGluIHN1Y2ggYSBjYXNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZmVyZW5jZUVtaXRTdHJhdGVneSB7XG4gIC8qKlxuICAgKiBFbWl0IGFuIGBFeHByZXNzaW9uYCB3aGljaCByZWZlcnMgdG8gdGhlIGdpdmVuIGBSZWZlcmVuY2VgIGluIHRoZSBjb250ZXh0IG9mIGEgcGFydGljdWxhclxuICAgKiBzb3VyY2UgZmlsZSwgaWYgcG9zc2libGUuXG4gICAqXG4gICAqIEBwYXJhbSByZWYgdGhlIGBSZWZlcmVuY2VgIGZvciB3aGljaCB0byBnZW5lcmF0ZSBhbiBleHByZXNzaW9uXG4gICAqIEBwYXJhbSBjb250ZXh0IHRoZSBzb3VyY2UgZmlsZSBpbiB3aGljaCB0aGUgYEV4cHJlc3Npb25gIG11c3QgYmUgdmFsaWRcbiAgICogQHBhcmFtIGltcG9ydEZsYWdzIGEgZmxhZyB3aGljaCBjb250cm9scyB3aGV0aGVyIGltcG9ydHMgc2hvdWxkIGJlIGdlbmVyYXRlZCBvciBub3RcbiAgICogQHJldHVybnMgYW4gYEV4cHJlc3Npb25gIHdoaWNoIHJlZmVycyB0byB0aGUgYFJlZmVyZW5jZWAsIG9yIGBudWxsYCBpZiBub25lIGNhbiBiZSBnZW5lcmF0ZWRcbiAgICovXG4gIGVtaXQocmVmOiBSZWZlcmVuY2UsIGNvbnRleHQ6IHRzLlNvdXJjZUZpbGUsIGltcG9ydEZsYWdzOiBJbXBvcnRGbGFncyk6IEV4cHJlc3Npb258bnVsbDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYEV4cHJlc3Npb25gcyB3aGljaCByZWZlciB0byBgUmVmZXJlbmNlYHMgaW4gYSBnaXZlbiBjb250ZXh0LlxuICpcbiAqIEEgYFJlZmVyZW5jZUVtaXR0ZXJgIHVzZXMgb25lIG9yIG1vcmUgYFJlZmVyZW5jZUVtaXRTdHJhdGVneWAgaW1wbGVtZW50YXRpb25zIHRvIHByb2R1Y2UgYW5cbiAqIGBFeHByZXNzaW9uYCB3aGljaCByZWZlcnMgdG8gYSBgUmVmZXJlbmNlYCBpbiB0aGUgY29udGV4dCBvZiBhIHBhcnRpY3VsYXIgZmlsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlZmVyZW5jZUVtaXR0ZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0cmF0ZWdpZXM6IFJlZmVyZW5jZUVtaXRTdHJhdGVneVtdKSB7fVxuXG4gIGVtaXQocmVmOiBSZWZlcmVuY2UsIGNvbnRleHQ6IHRzLlNvdXJjZUZpbGUsIGltcG9ydEZsYWdzOiBJbXBvcnRGbGFnc8KgPSBJbXBvcnRGbGFncy5Ob25lKTpcbiAgICAgIEV4cHJlc3Npb24ge1xuICAgIGZvciAoY29uc3Qgc3RyYXRlZ3kgb2YgdGhpcy5zdHJhdGVnaWVzKSB7XG4gICAgICBjb25zdCBlbWl0dGVkID0gc3RyYXRlZ3kuZW1pdChyZWYsIGNvbnRleHQsIGltcG9ydEZsYWdzKTtcbiAgICAgIGlmIChlbWl0dGVkICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBlbWl0dGVkO1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byB3cml0ZSBhIHJlZmVyZW5jZSB0byAke25vZGVOYW1lRm9yRXJyb3IocmVmLm5vZGUpfSBpbiAke1xuICAgICAgICByZWYubm9kZS5nZXRTb3VyY2VGaWxlKCkuZmlsZU5hbWV9IGZyb20gJHtjb250ZXh0LmZpbGVOYW1lfWApO1xuICB9XG59XG5cbi8qKlxuICogQSBgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5YCB3aGljaCB3aWxsIHJlZmVyIHRvIGRlY2xhcmF0aW9ucyBieSBhbnkgbG9jYWwgYHRzLklkZW50aWZpZXJgcywgaWZcbiAqIHN1Y2ggaWRlbnRpZmllcnMgYXJlIGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIExvY2FsSWRlbnRpZmllclN0cmF0ZWd5IGltcGxlbWVudHMgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5IHtcbiAgZW1pdChyZWY6IFJlZmVyZW5jZTx0cy5Ob2RlPiwgY29udGV4dDogdHMuU291cmNlRmlsZSwgaW1wb3J0RmxhZ3M6IEltcG9ydEZsYWdzKTogRXhwcmVzc2lvbnxudWxsIHtcbiAgICAvLyBJZiB0aGUgZW1pdHRlciBoYXMgc3BlY2lmaWVkIEZvcmNlTmV3SW1wb3J0LCB0aGVuIExvY2FsSWRlbnRpZmllclN0cmF0ZWd5IHNob3VsZCBub3QgdXNlIGFcbiAgICAvLyBsb2NhbCBpZGVudGlmaWVyIGF0IGFsbCwgKmV4Y2VwdCogaW4gdGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRoZSBub2RlIGlzIGFjdHVhbGx5IGRlY2xhcmVkLlxuICAgIGlmIChpbXBvcnRGbGFncyAmIEltcG9ydEZsYWdzLkZvcmNlTmV3SW1wb3J0ICYmXG4gICAgICAgIGdldFNvdXJjZUZpbGUocmVmLm5vZGUpICE9PSBnZXRTb3VyY2VGaWxlKGNvbnRleHQpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBBIFJlZmVyZW5jZSBjYW4gaGF2ZSBtdWx0aXBsZSBpZGVudGl0aWVzIGluIGRpZmZlcmVudCBmaWxlcywgc28gaXQgbWF5IGFscmVhZHkgaGF2ZSBhblxuICAgIC8vIElkZW50aWZpZXIgaW4gdGhlIHJlcXVlc3RlZCBjb250ZXh0IGZpbGUuXG4gICAgY29uc3QgaWRlbnRpZmllciA9IHJlZi5nZXRJZGVudGl0eUluKGNvbnRleHQpO1xuICAgIGlmIChpZGVudGlmaWVyICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbmV3IFdyYXBwZWROb2RlRXhwcihpZGVudGlmaWVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQSBgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5YCB3aGljaCB3aWxsIHJlZmVyIHRvIGRlY2xhcmF0aW9ucyB0aGF0IGNvbWUgZnJvbSBgbm9kZV9tb2R1bGVzYCB1c2luZ1xuICogYW4gYWJzb2x1dGUgaW1wb3J0LlxuICpcbiAqIFBhcnQgb2YgdGhpcyBzdHJhdGVneSBpbnZvbHZlcyBsb29raW5nIGF0IHRoZSB0YXJnZXQgZW50cnkgcG9pbnQgYW5kIGlkZW50aWZ5aW5nIHRoZSBleHBvcnRlZFxuICogbmFtZSBvZiB0aGUgdGFyZ2V0ZWQgZGVjbGFyYXRpb24sIGFzIGl0IG1pZ2h0IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBkZWNsYXJlZCBuYW1lIChlLmcuIGFcbiAqIGRpcmVjdGl2ZSBtaWdodCBiZSBkZWNsYXJlZCBhcyBGb29EaXJJbXBsLCBidXQgZXhwb3J0ZWQgYXMgRm9vRGlyKS4gSWYgbm8gZXhwb3J0IGNhbiBiZSBmb3VuZFxuICogd2hpY2ggbWFwcyBiYWNrIHRvIHRoZSBvcmlnaW5hbCBkaXJlY3RpdmUsIGFuIGVycm9yIGlzIHRocm93bi5cbiAqL1xuZXhwb3J0IGNsYXNzIEFic29sdXRlTW9kdWxlU3RyYXRlZ3kgaW1wbGVtZW50cyBSZWZlcmVuY2VFbWl0U3RyYXRlZ3kge1xuICAvKipcbiAgICogQSBjYWNoZSBvZiB0aGUgZXhwb3J0cyBvZiBzcGVjaWZpYyBtb2R1bGVzLCBiZWNhdXNlIHJlc29sdmluZyBhIG1vZHVsZSB0byBpdHMgZXhwb3J0cyBpcyBhXG4gICAqIGNvc3RseSBvcGVyYXRpb24uXG4gICAqL1xuICBwcml2YXRlIG1vZHVsZUV4cG9ydHNDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBNYXA8RGVjbGFyYXRpb25Ob2RlLCBzdHJpbmc+fG51bGw+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcm90ZWN0ZWQgcHJvZ3JhbTogdHMuUHJvZ3JhbSwgcHJvdGVjdGVkIGNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLFxuICAgICAgcHJvdGVjdGVkIG1vZHVsZVJlc29sdmVyOiBNb2R1bGVSZXNvbHZlciwgcHJpdmF0ZSByZWZsZWN0aW9uSG9zdDogUmVmbGVjdGlvbkhvc3QpIHt9XG5cbiAgZW1pdChyZWY6IFJlZmVyZW5jZTx0cy5Ob2RlPiwgY29udGV4dDogdHMuU291cmNlRmlsZSwgaW1wb3J0RmxhZ3M6IEltcG9ydEZsYWdzKTogRXhwcmVzc2lvbnxudWxsIHtcbiAgICBpZiAocmVmLmJlc3RHdWVzc093bmluZ01vZHVsZSA9PT0gbnVsbCkge1xuICAgICAgLy8gVGhlcmUgaXMgbm8gbW9kdWxlIG5hbWUgYXZhaWxhYmxlIGZvciB0aGlzIFJlZmVyZW5jZSwgbWVhbmluZyBpdCB3YXMgYXJyaXZlZCBhdCB2aWEgYVxuICAgICAgLy8gcmVsYXRpdmUgcGF0aC5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAoIWlzRGVjbGFyYXRpb24ocmVmLm5vZGUpKSB7XG4gICAgICAvLyBJdCdzIG5vdCBwb3NzaWJsZSB0byBpbXBvcnQgc29tZXRoaW5nIHdoaWNoIGlzbid0IGEgZGVjbGFyYXRpb24uXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERlYnVnIGFzc2VydDogdW5hYmxlIHRvIGltcG9ydCBhIFJlZmVyZW5jZSB0byBub24tZGVjbGFyYXRpb24gb2YgdHlwZSAke1xuICAgICAgICAgIHRzLlN5bnRheEtpbmRbcmVmLm5vZGUua2luZF19LmApO1xuICAgIH0gZWxzZSBpZiAoKGltcG9ydEZsYWdzICYgSW1wb3J0RmxhZ3MuQWxsb3dUeXBlSW1wb3J0cykgPT09IDAgJiYgaXNUeXBlRGVjbGFyYXRpb24ocmVmLm5vZGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEltcG9ydGluZyBhIHR5cGUtb25seSBkZWNsYXJhdGlvbiBvZiB0eXBlICR7XG4gICAgICAgICAgdHMuU3ludGF4S2luZFtyZWYubm9kZS5raW5kXX0gaW4gYSB2YWx1ZSBwb3NpdGlvbiBpcyBub3QgYWxsb3dlZC5gKTtcbiAgICB9XG5cbiAgICAvLyBUcnkgdG8gZmluZCB0aGUgZXhwb3J0ZWQgbmFtZSBvZiB0aGUgZGVjbGFyYXRpb24sIGlmIG9uZSBpcyBhdmFpbGFibGUuXG4gICAgY29uc3Qge3NwZWNpZmllciwgcmVzb2x1dGlvbkNvbnRleHR9ID0gcmVmLmJlc3RHdWVzc093bmluZ01vZHVsZTtcbiAgICBjb25zdCBzeW1ib2xOYW1lID0gdGhpcy5yZXNvbHZlSW1wb3J0TmFtZShzcGVjaWZpZXIsIHJlZi5ub2RlLCByZXNvbHV0aW9uQ29udGV4dCk7XG4gICAgaWYgKHN5bWJvbE5hbWUgPT09IG51bGwpIHtcbiAgICAgIC8vIFRPRE8oYWx4aHViKTogbWFrZSB0aGlzIGVycm9yIGEgdHMuRGlhZ25vc3RpYyBwb2ludGluZyBhdCB3aGF0ZXZlciBjYXVzZWQgdGhpcyBpbXBvcnQgdG8gYmVcbiAgICAgIC8vIHRyaWdnZXJlZC5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgU3ltYm9sICR7cmVmLmRlYnVnTmFtZX0gZGVjbGFyZWQgaW4gJHtcbiAgICAgICAgICBnZXRTb3VyY2VGaWxlKHJlZi5ub2RlKS5maWxlTmFtZX0gaXMgbm90IGV4cG9ydGVkIGZyb20gJHtzcGVjaWZpZXJ9IChpbXBvcnQgaW50byAke1xuICAgICAgICAgIGNvbnRleHQuZmlsZU5hbWV9KWApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgRXh0ZXJuYWxFeHByKG5ldyBFeHRlcm5hbFJlZmVyZW5jZShzcGVjaWZpZXIsIHN5bWJvbE5hbWUpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUltcG9ydE5hbWUobW9kdWxlTmFtZTogc3RyaW5nLCB0YXJnZXQ6IERlY2xhcmF0aW9uTm9kZSwgZnJvbUZpbGU6IHN0cmluZyk6IHN0cmluZ1xuICAgICAgfG51bGwge1xuICAgIGNvbnN0IGV4cG9ydHMgPSB0aGlzLmdldEV4cG9ydHNPZk1vZHVsZShtb2R1bGVOYW1lLCBmcm9tRmlsZSk7XG4gICAgaWYgKGV4cG9ydHMgIT09IG51bGwgJiYgZXhwb3J0cy5oYXModGFyZ2V0KSkge1xuICAgICAgcmV0dXJuIGV4cG9ydHMuZ2V0KHRhcmdldCkhO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEV4cG9ydHNPZk1vZHVsZShtb2R1bGVOYW1lOiBzdHJpbmcsIGZyb21GaWxlOiBzdHJpbmcpOlxuICAgICAgTWFwPERlY2xhcmF0aW9uTm9kZSwgc3RyaW5nPnxudWxsIHtcbiAgICBpZiAoIXRoaXMubW9kdWxlRXhwb3J0c0NhY2hlLmhhcyhtb2R1bGVOYW1lKSkge1xuICAgICAgdGhpcy5tb2R1bGVFeHBvcnRzQ2FjaGUuc2V0KG1vZHVsZU5hbWUsIHRoaXMuZW51bWVyYXRlRXhwb3J0c09mTW9kdWxlKG1vZHVsZU5hbWUsIGZyb21GaWxlKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm1vZHVsZUV4cG9ydHNDYWNoZS5nZXQobW9kdWxlTmFtZSkhO1xuICB9XG5cbiAgcHJvdGVjdGVkIGVudW1lcmF0ZUV4cG9ydHNPZk1vZHVsZShzcGVjaWZpZXI6IHN0cmluZywgZnJvbUZpbGU6IHN0cmluZyk6XG4gICAgICBNYXA8RGVjbGFyYXRpb25Ob2RlLCBzdHJpbmc+fG51bGwge1xuICAgIC8vIEZpcnN0LCByZXNvbHZlIHRoZSBtb2R1bGUgc3BlY2lmaWVyIHRvIGl0cyBlbnRyeSBwb2ludCwgYW5kIGdldCB0aGUgdHMuU3ltYm9sIGZvciBpdC5cbiAgICBjb25zdCBlbnRyeVBvaW50RmlsZSA9IHRoaXMubW9kdWxlUmVzb2x2ZXIucmVzb2x2ZU1vZHVsZShzcGVjaWZpZXIsIGZyb21GaWxlKTtcbiAgICBpZiAoZW50cnlQb2ludEZpbGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cG9ydHMgPSB0aGlzLnJlZmxlY3Rpb25Ib3N0LmdldEV4cG9ydHNPZk1vZHVsZShlbnRyeVBvaW50RmlsZSk7XG4gICAgaWYgKGV4cG9ydHMgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBleHBvcnRNYXAgPSBuZXcgTWFwPERlY2xhcmF0aW9uTm9kZSwgc3RyaW5nPigpO1xuICAgIGV4cG9ydHMuZm9yRWFjaCgoZGVjbGFyYXRpb24sIG5hbWUpID0+IHtcbiAgICAgIGV4cG9ydE1hcC5zZXQoZGVjbGFyYXRpb24ubm9kZSwgbmFtZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGV4cG9ydE1hcDtcbiAgfVxufVxuXG4vKipcbiAqIEEgYFJlZmVyZW5jZUVtaXRTdHJhdGVneWAgd2hpY2ggd2lsbCByZWZlciB0byBkZWNsYXJhdGlvbnMgdmlhIHJlbGF0aXZlIHBhdGhzLCBwcm92aWRlZCB0aGV5J3JlXG4gKiBib3RoIGluIHRoZSBsb2dpY2FsIHByb2plY3QgXCJzcGFjZVwiIG9mIHBhdGhzLlxuICpcbiAqIFRoaXMgaXMgdHJpY2tpZXIgdGhhbiBpdCBzb3VuZHMsIGFzIHRoZSB0d28gZmlsZXMgbWF5IGJlIGluIGRpZmZlcmVudCByb290IGRpcmVjdG9yaWVzIGluIHRoZVxuICogcHJvamVjdC4gU2ltcGx5IGNhbGN1bGF0aW5nIGEgZmlsZSBzeXN0ZW0gcmVsYXRpdmUgcGF0aCBiZXR3ZWVuIHRoZSB0d28gaXMgbm90IHN1ZmZpY2llbnQuXG4gKiBJbnN0ZWFkLCBgTG9naWNhbFByb2plY3RQYXRoYHMgYXJlIHVzZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBMb2dpY2FsUHJvamVjdFN0cmF0ZWd5IGltcGxlbWVudHMgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWZsZWN0b3I6IFJlZmxlY3Rpb25Ib3N0LCBwcml2YXRlIGxvZ2ljYWxGczogTG9naWNhbEZpbGVTeXN0ZW0pIHt9XG5cbiAgZW1pdChyZWY6IFJlZmVyZW5jZTx0cy5Ob2RlPiwgY29udGV4dDogdHMuU291cmNlRmlsZSk6IEV4cHJlc3Npb258bnVsbCB7XG4gICAgY29uc3QgZGVzdFNmID0gZ2V0U291cmNlRmlsZShyZWYubm9kZSk7XG5cbiAgICAvLyBDb21wdXRlIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gdGhlIGltcG9ydGluZyBmaWxlIHRvIHRoZSBmaWxlIGJlaW5nIGltcG9ydGVkLiBUaGlzIGlzIGRvbmVcbiAgICAvLyBhcyBhIGxvZ2ljYWwgcGF0aCBjb21wdXRhdGlvbiwgYmVjYXVzZSB0aGUgdHdvIGZpbGVzIG1pZ2h0IGJlIGluIGRpZmZlcmVudCByb290RGlycy5cbiAgICBjb25zdCBkZXN0UGF0aCA9IHRoaXMubG9naWNhbEZzLmxvZ2ljYWxQYXRoT2ZTZihkZXN0U2YpO1xuICAgIGlmIChkZXN0UGF0aCA9PT0gbnVsbCkge1xuICAgICAgLy8gVGhlIGltcG9ydGVkIGZpbGUgaXMgbm90IHdpdGhpbiB0aGUgbG9naWNhbCBwcm9qZWN0IGZpbGVzeXN0ZW0uXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5QYXRoID0gdGhpcy5sb2dpY2FsRnMubG9naWNhbFBhdGhPZlNmKGNvbnRleHQpO1xuICAgIGlmIChvcmlnaW5QYXRoID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYERlYnVnIGFzc2VydDogYXR0ZW1wdCB0byBpbXBvcnQgZnJvbSAke2NvbnRleHQuZmlsZU5hbWV9IGJ1dCBpdCdzIG91dHNpZGUgdGhlIHByb2dyYW0/YCk7XG4gICAgfVxuXG4gICAgLy8gVGhlcmUncyBubyB3YXkgdG8gZW1pdCBhIHJlbGF0aXZlIHJlZmVyZW5jZSBmcm9tIGEgZmlsZSB0byBpdHNlbGYuXG4gICAgaWYgKGRlc3RQYXRoID09PSBvcmlnaW5QYXRoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBuYW1lID0gZmluZEV4cG9ydGVkTmFtZU9mTm9kZShyZWYubm9kZSwgZGVzdFNmLCB0aGlzLnJlZmxlY3Rvcik7XG4gICAgaWYgKG5hbWUgPT09IG51bGwpIHtcbiAgICAgIC8vIFRoZSB0YXJnZXQgZGVjbGFyYXRpb24gaXNuJ3QgZXhwb3J0ZWQgZnJvbSB0aGUgZmlsZSBpdCdzIGRlY2xhcmVkIGluLiBUaGlzIGlzIGFuIGlzc3VlIVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gV2l0aCBib3RoIGZpbGVzIGV4cHJlc3NlZCBhcyBMb2dpY2FsUHJvamVjdFBhdGhzLCBnZXR0aW5nIHRoZSBtb2R1bGUgc3BlY2lmaWVyIGFzIGEgcmVsYXRpdmVcbiAgICAvLyBwYXRoIGlzIG5vdyBzdHJhaWdodGZvcndhcmQuXG4gICAgY29uc3QgbW9kdWxlTmFtZSA9IExvZ2ljYWxQcm9qZWN0UGF0aC5yZWxhdGl2ZVBhdGhCZXR3ZWVuKG9yaWdpblBhdGgsIGRlc3RQYXRoKTtcbiAgICByZXR1cm4gbmV3IEV4dGVybmFsRXhwcih7bW9kdWxlTmFtZSwgbmFtZX0pO1xuICB9XG59XG5cbi8qKlxuICogQSBgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5YCB3aGljaCBjb25zdHJ1Y3RzIHJlbGF0aXZlcyBwYXRocyBiZXR3ZWVuIGB0cy5Tb3VyY2VGaWxlYHMuXG4gKlxuICogVGhpcyBzdHJhdGVneSBjYW4gYmUgdXNlZCBpZiB0aGVyZSBpcyBubyBgcm9vdERpcmAvYHJvb3REaXJzYCBzdHJ1Y3R1cmUgZm9yIHRoZSBwcm9qZWN0IHdoaWNoXG4gKiBuZWNlc3NpdGF0ZXMgdGhlIHN0cm9uZ2VyIGxvZ2ljIG9mIGBMb2dpY2FsUHJvamVjdFN0cmF0ZWd5YC5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlbGF0aXZlUGF0aFN0cmF0ZWd5IGltcGxlbWVudHMgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWZsZWN0b3I6IFJlZmxlY3Rpb25Ib3N0KSB7fVxuXG4gIGVtaXQocmVmOiBSZWZlcmVuY2U8dHMuTm9kZT4sIGNvbnRleHQ6IHRzLlNvdXJjZUZpbGUpOiBFeHByZXNzaW9ufG51bGwge1xuICAgIGNvbnN0IGRlc3RTZiA9IGdldFNvdXJjZUZpbGUocmVmLm5vZGUpO1xuICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9XG4gICAgICAgIHJlbGF0aXZlKGRpcm5hbWUoYWJzb2x1dGVGcm9tU291cmNlRmlsZShjb250ZXh0KSksIGFic29sdXRlRnJvbVNvdXJjZUZpbGUoZGVzdFNmKSk7XG4gICAgY29uc3QgbW9kdWxlTmFtZSA9IHRvUmVsYXRpdmVJbXBvcnQoc3RyaXBFeHRlbnNpb24ocmVsYXRpdmVQYXRoKSk7XG5cbiAgICBjb25zdCBuYW1lID0gZmluZEV4cG9ydGVkTmFtZU9mTm9kZShyZWYubm9kZSwgZGVzdFNmLCB0aGlzLnJlZmxlY3Rvcik7XG4gICAgcmV0dXJuIG5ldyBFeHRlcm5hbEV4cHIoe21vZHVsZU5hbWUsIG5hbWV9KTtcbiAgfVxufVxuXG4vKipcbiAqIEEgYFJlZmVyZW5jZUVtaXRTdHJhdGVneWAgd2hpY2ggdXNlcyBhIGBVbmlmaWVkTW9kdWxlc0hvc3RgIHRvIGdlbmVyYXRlIGFic29sdXRlIGltcG9ydFxuICogcmVmZXJlbmNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFVuaWZpZWRNb2R1bGVzU3RyYXRlZ3kgaW1wbGVtZW50cyBSZWZlcmVuY2VFbWl0U3RyYXRlZ3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZmxlY3RvcjogUmVmbGVjdGlvbkhvc3QsIHByaXZhdGUgdW5pZmllZE1vZHVsZXNIb3N0OiBVbmlmaWVkTW9kdWxlc0hvc3QpIHt9XG5cbiAgZW1pdChyZWY6IFJlZmVyZW5jZTx0cy5Ob2RlPiwgY29udGV4dDogdHMuU291cmNlRmlsZSk6IEV4cHJlc3Npb258bnVsbCB7XG4gICAgY29uc3QgZGVzdFNmID0gZ2V0U291cmNlRmlsZShyZWYubm9kZSk7XG4gICAgY29uc3QgbmFtZSA9IGZpbmRFeHBvcnRlZE5hbWVPZk5vZGUocmVmLm5vZGUsIGRlc3RTZiwgdGhpcy5yZWZsZWN0b3IpO1xuICAgIGlmIChuYW1lID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBtb2R1bGVOYW1lID1cbiAgICAgICAgdGhpcy51bmlmaWVkTW9kdWxlc0hvc3QuZmlsZU5hbWVUb01vZHVsZU5hbWUoZGVzdFNmLmZpbGVOYW1lLCBjb250ZXh0LmZpbGVOYW1lKTtcblxuICAgIHJldHVybiBuZXcgRXh0ZXJuYWxFeHByKHttb2R1bGVOYW1lLCBuYW1lfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -7,8 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
/// <amd-module name="@angular/compiler-cli/src/ngtsc/indexer/src/api" />
|
|
9
9
|
import { ParseSourceFile } from '@angular/compiler';
|
|
10
|
-
import
|
|
11
|
-
import { ClassDeclaration } from '../../reflection';
|
|
10
|
+
import { ClassDeclaration, DeclarationNode } from '../../reflection';
|
|
12
11
|
/**
|
|
13
12
|
* Describes the kind of identifier found in a template.
|
|
14
13
|
*/
|
|
@@ -114,7 +113,7 @@ export interface IndexedComponent {
|
|
|
114
113
|
file: ParseSourceFile;
|
|
115
114
|
template: {
|
|
116
115
|
identifiers: Set<TopLevelIdentifier>;
|
|
117
|
-
usedComponents: Set<
|
|
116
|
+
usedComponents: Set<DeclarationNode>;
|
|
118
117
|
isInline: boolean;
|
|
119
118
|
file: ParseSourceFile;
|
|
120
119
|
};
|
|
@@ -42,4 +42,4 @@
|
|
|
42
42
|
}());
|
|
43
43
|
exports.AbsoluteSourceSpan = AbsoluteSourceSpan;
|
|
44
44
|
});
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9pbmRleGVyL3NyYy9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7O0lBS0g7O09BRUc7SUFDSCxJQUFZLGNBUVg7SUFSRCxXQUFZLGNBQWM7UUFDeEIsMkRBQVEsQ0FBQTtRQUNSLHVEQUFNLENBQUE7UUFDTix5REFBTyxDQUFBO1FBQ1AsMkRBQVEsQ0FBQTtRQUNSLDZEQUFTLENBQUE7UUFDVCw2REFBUyxDQUFBO1FBQ1QsMkRBQVEsQ0FBQTtJQUNWLENBQUMsRUFSVyxjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQVF6QjtJQTRGRDs7T0FFRztJQUNIO1FBQ0UsNEJBQW1CLEtBQWEsRUFBUyxHQUFXO1lBQWpDLFVBQUssR0FBTCxLQUFLLENBQVE7WUFBUyxRQUFHLEdBQUgsR0FBRyxDQUFRO1FBQUcsQ0FBQztRQUMxRCx5QkFBQztJQUFELENBQUMsQUFGRCxJQUVDO0lBRlksZ0RBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UGFyc2VTb3VyY2VGaWxlfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XG5pbXBvcnQge0NsYXNzRGVjbGFyYXRpb24sIERlY2xhcmF0aW9uTm9kZX0gZnJvbSAnLi4vLi4vcmVmbGVjdGlvbic7XG5cbi8qKlxuICogRGVzY3JpYmVzIHRoZSBraW5kIG9mIGlkZW50aWZpZXIgZm91bmQgaW4gYSB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGVudW0gSWRlbnRpZmllcktpbmQge1xuICBQcm9wZXJ0eSxcbiAgTWV0aG9kLFxuICBFbGVtZW50LFxuICBUZW1wbGF0ZSxcbiAgQXR0cmlidXRlLFxuICBSZWZlcmVuY2UsXG4gIFZhcmlhYmxlLFxufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhIHNlbWFudGljYWxseS1pbnRlcmVzdGluZyBpZGVudGlmaWVyIGluIGEgdGVtcGxhdGUsIHN1Y2ggYXMgYW4gaW50ZXJwb2xhdGVkIHZhcmlhYmxlXG4gKiBvciBzZWxlY3Rvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZUlkZW50aWZpZXIge1xuICBuYW1lOiBzdHJpbmc7XG4gIHNwYW46IEFic29sdXRlU291cmNlU3BhbjtcbiAga2luZDogSWRlbnRpZmllcktpbmQ7XG59XG5cbi8qKiBEZXNjcmliZXMgYSB0ZW1wbGF0ZSBleHByZXNzaW9uLCB3aGljaCBtYXkgaGF2ZSBhIHRlbXBsYXRlIHJlZmVyZW5jZSBvciB2YXJpYWJsZSB0YXJnZXQuICovXG5pbnRlcmZhY2UgRXhwcmVzc2lvbklkZW50aWZpZXIgZXh0ZW5kcyBUZW1wbGF0ZUlkZW50aWZpZXIge1xuICAvKipcbiAgICogUmVmZXJlbmNlSWRlbnRpZmllciBvciBWYXJpYWJsZUlkZW50aWZpZXIgaW4gdGhlIHRlbXBsYXRlIHRoYXQgdGhpcyBpZGVudGlmaWVyIHRhcmdldHMsIGlmXG4gICAqIGFueS4gSWYgdGhlIHRhcmdldCBpcyBgbnVsbGAsIGl0IHBvaW50cyB0byBhIGRlY2xhcmF0aW9uIG9uIHRoZSBjb21wb25lbnQgY2xhc3MuXG4gICAqICovXG4gIHRhcmdldDogUmVmZXJlbmNlSWRlbnRpZmllcnxWYXJpYWJsZUlkZW50aWZpZXJ8bnVsbDtcbn1cblxuLyoqIERlc2NyaWJlcyBhIHByb3BlcnR5IGFjY2Vzc2VkIGluIGEgdGVtcGxhdGUuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5SWRlbnRpZmllciBleHRlbmRzIEV4cHJlc3Npb25JZGVudGlmaWVyIHtcbiAga2luZDogSWRlbnRpZmllcktpbmQuUHJvcGVydHk7XG59XG5cbi8qKiBEZXNjcmliZXMgYSBtZXRob2QgYWNjZXNzZWQgaW4gYSB0ZW1wbGF0ZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0aG9kSWRlbnRpZmllciBleHRlbmRzIEV4cHJlc3Npb25JZGVudGlmaWVyIHtcbiAga2luZDogSWRlbnRpZmllcktpbmQuTWV0aG9kO1xufVxuXG4vKiogRGVzY3JpYmVzIGFuIGVsZW1lbnQgYXR0cmlidXRlIGluIGEgdGVtcGxhdGUuICovXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZUlkZW50aWZpZXIgZXh0ZW5kcyBUZW1wbGF0ZUlkZW50aWZpZXIge1xuICBraW5kOiBJZGVudGlmaWVyS2luZC5BdHRyaWJ1dGU7XG59XG5cbi8qKiBBIHJlZmVyZW5jZSB0byBhIGRpcmVjdGl2ZSBub2RlIGFuZCBpdHMgc2VsZWN0b3IuICovXG5pbnRlcmZhY2UgRGlyZWN0aXZlUmVmZXJlbmNlIHtcbiAgbm9kZTogQ2xhc3NEZWNsYXJhdGlvbjtcbiAgc2VsZWN0b3I6IHN0cmluZztcbn1cbi8qKiBBIGJhc2UgaW50ZXJmYWNlIGZvciBlbGVtZW50IGFuZCB0ZW1wbGF0ZSBpZGVudGlmaWVycy4gKi9cbmludGVyZmFjZSBCYXNlRWxlbWVudE9yVGVtcGxhdGVJZGVudGlmaWVyIGV4dGVuZHMgVGVtcGxhdGVJZGVudGlmaWVyIHtcbiAgLyoqIEF0dHJpYnV0ZXMgb24gYW4gZWxlbWVudCBvciB0ZW1wbGF0ZS4gKi9cbiAgYXR0cmlidXRlczogU2V0PEF0dHJpYnV0ZUlkZW50aWZpZXI+O1xuXG4gIC8qKiBEaXJlY3RpdmVzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCBvciB0ZW1wbGF0ZS4gKi9cbiAgdXNlZERpcmVjdGl2ZXM6IFNldDxEaXJlY3RpdmVSZWZlcmVuY2U+O1xufVxuLyoqXG4gKiBEZXNjcmliZXMgYW4gaW5kZXhlZCBlbGVtZW50IGluIGEgdGVtcGxhdGUuIFRoZSBuYW1lIG9mIGFuIGBFbGVtZW50SWRlbnRpZmllcmAgaXMgdGhlIGVudGlyZVxuICogZWxlbWVudCB0YWcsIHdoaWNoIGNhbiBiZSBwYXJzZWQgYnkgYW4gaW5kZXhlciB0byBkZXRlcm1pbmUgd2hlcmUgdXNlZCBkaXJlY3RpdmVzIHNob3VsZCBiZVxuICogcmVmZXJlbmNlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50SWRlbnRpZmllciBleHRlbmRzIEJhc2VFbGVtZW50T3JUZW1wbGF0ZUlkZW50aWZpZXIge1xuICBraW5kOiBJZGVudGlmaWVyS2luZC5FbGVtZW50O1xufVxuXG4vKiogRGVzY3JpYmVzIGFuIGluZGV4ZWQgdGVtcGxhdGUgbm9kZSBpbiBhIGNvbXBvbmVudCB0ZW1wbGF0ZSBmaWxlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZU5vZGVJZGVudGlmaWVyIGV4dGVuZHMgQmFzZUVsZW1lbnRPclRlbXBsYXRlSWRlbnRpZmllciB7XG4gIGtpbmQ6IElkZW50aWZpZXJLaW5kLlRlbXBsYXRlO1xufVxuXG4vKiogRGVzY3JpYmVzIGEgcmVmZXJlbmNlIGluIGEgdGVtcGxhdGUgbGlrZSBcImZvb1wiIGluIGA8ZGl2ICNmb28+PC9kaXY+YC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVmZXJlbmNlSWRlbnRpZmllciBleHRlbmRzIFRlbXBsYXRlSWRlbnRpZmllciB7XG4gIGtpbmQ6IElkZW50aWZpZXJLaW5kLlJlZmVyZW5jZTtcblxuICAvKiogVGhlIHRhcmdldCBvZiB0aGlzIHJlZmVyZW5jZS4gSWYgdGhlIHRhcmdldCBpcyBub3Qga25vd24sIHRoaXMgaXMgYG51bGxgLiAqL1xuICB0YXJnZXQ6IHtcbiAgICAvKiogVGhlIHRlbXBsYXRlIEFTVCBub2RlIHRoYXQgdGhlIHJlZmVyZW5jZSB0YXJnZXRzLiAqL1xuICAgIG5vZGU6IEVsZW1lbnRJZGVudGlmaWVyfFRlbXBsYXRlSWRlbnRpZmllcjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBkaXJlY3RpdmUgb24gYG5vZGVgIHRoYXQgdGhlIHJlZmVyZW5jZSB0YXJnZXRzLiBJZiBubyBkaXJlY3RpdmUgaXMgdGFyZ2V0ZWQsIHRoaXMgaXNcbiAgICAgKiBgbnVsbGAuXG4gICAgICovXG4gICAgZGlyZWN0aXZlOiBDbGFzc0RlY2xhcmF0aW9uIHwgbnVsbDtcbiAgfXxudWxsO1xufVxuXG4vKiogRGVzY3JpYmVzIGEgdGVtcGxhdGUgdmFyaWFibGUgbGlrZSBcImZvb1wiIGluIGA8ZGl2ICpuZ0Zvcj1cImxldCBmb28gb2YgZm9vc1wiPjwvZGl2PmAuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhcmlhYmxlSWRlbnRpZmllciBleHRlbmRzIFRlbXBsYXRlSWRlbnRpZmllciB7XG4gIGtpbmQ6IElkZW50aWZpZXJLaW5kLlZhcmlhYmxlO1xufVxuXG4vKipcbiAqIElkZW50aWZpZXJzIHJlY29yZGVkIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIHRlbXBsYXRlLCB3aXRob3V0IGFueSBjb250ZXh0IGFib3V0IHRoZSBIVE1MIG5vZGVzXG4gKiB0aGV5IHdlcmUgZGlzY292ZXJlZCBpbi5cbiAqL1xuZXhwb3J0IHR5cGUgVG9wTGV2ZWxJZGVudGlmaWVyID0gUHJvcGVydHlJZGVudGlmaWVyfE1ldGhvZElkZW50aWZpZXJ8RWxlbWVudElkZW50aWZpZXJ8XG4gICAgVGVtcGxhdGVOb2RlSWRlbnRpZmllcnxSZWZlcmVuY2VJZGVudGlmaWVyfFZhcmlhYmxlSWRlbnRpZmllcjtcblxuLyoqXG4gKiBEZXNjcmliZXMgdGhlIGFic29sdXRlIGJ5dGUgb2Zmc2V0cyBvZiBhIHRleHQgYW5jaG9yIGluIGEgc291cmNlIGNvZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBBYnNvbHV0ZVNvdXJjZVNwYW4ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3RhcnQ6IG51bWJlciwgcHVibGljIGVuZDogbnVtYmVyKSB7fVxufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhbiBhbmFseXplZCwgaW5kZXhlZCBjb21wb25lbnQgYW5kIGl0cyB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmRleGVkQ29tcG9uZW50IHtcbiAgbmFtZTogc3RyaW5nO1xuICBzZWxlY3Rvcjogc3RyaW5nfG51bGw7XG4gIGZpbGU6IFBhcnNlU291cmNlRmlsZTtcbiAgdGVtcGxhdGU6IHtcbiAgICBpZGVudGlmaWVyczogU2V0PFRvcExldmVsSWRlbnRpZmllcj4sXG4gICAgdXNlZENvbXBvbmVudHM6IFNldDxEZWNsYXJhdGlvbk5vZGU+LFxuICAgIGlzSW5saW5lOiBib29sZWFuLFxuICAgIGZpbGU6IFBhcnNlU291cmNlRmlsZTtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
|
7
7
|
*/
|
|
8
8
|
/// <amd-module name="@angular/compiler-cli/src/ngtsc/indexer/src/transform" />
|
|
9
|
-
import
|
|
9
|
+
import { DeclarationNode } from '../../reflection';
|
|
10
10
|
import { IndexedComponent } from './api';
|
|
11
11
|
import { IndexingContext } from './context';
|
|
12
12
|
/**
|
|
@@ -15,4 +15,4 @@ import { IndexingContext } from './context';
|
|
|
15
15
|
*
|
|
16
16
|
* The context must be populated before `generateAnalysis` is called.
|
|
17
17
|
*/
|
|
18
|
-
export declare function generateAnalysis(context: IndexingContext): Map<
|
|
18
|
+
export declare function generateAnalysis(context: IndexingContext): Map<DeclarationNode, IndexedComponent>;
|
|
@@ -63,4 +63,4 @@
|
|
|
63
63
|
}
|
|
64
64
|
exports.generateAnalysis = generateAnalysis;
|
|
65
65
|
});
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9pbmRleGVyL3NyYy90cmFuc2Zvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7O0lBRUgsOENBQWtEO0lBSWxELGlGQUFrRDtJQUVsRDs7Ozs7T0FLRztJQUNILFNBQWdCLGdCQUFnQixDQUFDLE9BQXdCO1FBQ3ZELElBQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFxQyxDQUFDO1FBRTlELE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQUMsRUFBb0Q7Z0JBQW5ELFdBQVcsaUJBQUEsRUFBRSxRQUFRLGNBQUEsRUFBRSxhQUFhLG1CQUFBLEVBQUUsWUFBWSxrQkFBQTtZQUM3RSxJQUFNLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRXhDLElBQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO1lBQ2xELElBQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ25ELFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHO2dCQUNsQixJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUU7b0JBQ25CLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDbEM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILDZGQUE2RjtZQUM3RiwyQkFBMkI7WUFDM0IsSUFBTSxhQUFhLEdBQUcsSUFBSSwwQkFBZSxDQUNyQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JGLElBQUksWUFBNkIsQ0FBQztZQUNsQyxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3pCLFlBQVksR0FBRyxhQUFhLENBQUM7YUFDOUI7aUJBQU07Z0JBQ0wsWUFBWSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7YUFDbEM7WUFFRCxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRTtnQkFDeEIsSUFBSSxNQUFBO2dCQUNKLFFBQVEsVUFBQTtnQkFDUixJQUFJLEVBQUUsYUFBYTtnQkFDbkIsUUFBUSxFQUFFO29CQUNSLFdBQVcsRUFBRSxpQ0FBc0IsQ0FBQyxhQUFhLENBQUM7b0JBQ2xELGNBQWMsZ0JBQUE7b0JBQ2QsUUFBUSxFQUFFLFlBQVksQ0FBQyxRQUFRO29CQUMvQixJQUFJLEVBQUUsWUFBWTtpQkFDbkI7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUF2Q0QsNENBdUNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UGFyc2VTb3VyY2VGaWxlfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XG5pbXBvcnQge0RlY2xhcmF0aW9uTm9kZX0gZnJvbSAnLi4vLi4vcmVmbGVjdGlvbic7XG5pbXBvcnQge0luZGV4ZWRDb21wb25lbnR9IGZyb20gJy4vYXBpJztcbmltcG9ydCB7SW5kZXhpbmdDb250ZXh0fSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHtnZXRUZW1wbGF0ZUlkZW50aWZpZXJzfSBmcm9tICcuL3RlbXBsYXRlJztcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYEluZGV4ZWRDb21wb25lbnRgIGVudHJpZXMgZnJvbSBhIGBJbmRleGluZ0NvbnRleHRgLCB3aGljaCBoYXMgaW5mb3JtYXRpb25cbiAqIGFib3V0IGNvbXBvbmVudHMgZGlzY292ZXJlZCBpbiB0aGUgcHJvZ3JhbSByZWdpc3RlcmVkIGluIGl0LlxuICpcbiAqIFRoZSBjb250ZXh0IG11c3QgYmUgcG9wdWxhdGVkIGJlZm9yZSBgZ2VuZXJhdGVBbmFseXNpc2AgaXMgY2FsbGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVBbmFseXNpcyhjb250ZXh0OiBJbmRleGluZ0NvbnRleHQpOiBNYXA8RGVjbGFyYXRpb25Ob2RlLCBJbmRleGVkQ29tcG9uZW50PiB7XG4gIGNvbnN0IGFuYWx5c2lzID0gbmV3IE1hcDxEZWNsYXJhdGlvbk5vZGUsIEluZGV4ZWRDb21wb25lbnQ+KCk7XG5cbiAgY29udGV4dC5jb21wb25lbnRzLmZvckVhY2goKHtkZWNsYXJhdGlvbiwgc2VsZWN0b3IsIGJvdW5kVGVtcGxhdGUsIHRlbXBsYXRlTWV0YX0pID0+IHtcbiAgICBjb25zdCBuYW1lID0gZGVjbGFyYXRpb24ubmFtZS5nZXRUZXh0KCk7XG5cbiAgICBjb25zdCB1c2VkQ29tcG9uZW50cyA9IG5ldyBTZXQ8RGVjbGFyYXRpb25Ob2RlPigpO1xuICAgIGNvbnN0IHVzZWREaXJzID0gYm91bmRUZW1wbGF0ZS5nZXRVc2VkRGlyZWN0aXZlcygpO1xuICAgIHVzZWREaXJzLmZvckVhY2goZGlyID0+IHtcbiAgICAgIGlmIChkaXIuaXNDb21wb25lbnQpIHtcbiAgICAgICAgdXNlZENvbXBvbmVudHMuYWRkKGRpci5yZWYubm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBHZXQgc291cmNlIGZpbGVzIGZvciB0aGUgY29tcG9uZW50IGFuZCB0aGUgdGVtcGxhdGUuIElmIHRoZSB0ZW1wbGF0ZSBpcyBpbmxpbmUsIGl0cyBzb3VyY2VcbiAgICAvLyBmaWxlIGlzIHRoZSBjb21wb25lbnQncy5cbiAgICBjb25zdCBjb21wb25lbnRGaWxlID0gbmV3IFBhcnNlU291cmNlRmlsZShcbiAgICAgICAgZGVjbGFyYXRpb24uZ2V0U291cmNlRmlsZSgpLmdldEZ1bGxUZXh0KCksIGRlY2xhcmF0aW9uLmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZSk7XG4gICAgbGV0IHRlbXBsYXRlRmlsZTogUGFyc2VTb3VyY2VGaWxlO1xuICAgIGlmICh0ZW1wbGF0ZU1ldGEuaXNJbmxpbmUpIHtcbiAgICAgIHRlbXBsYXRlRmlsZSA9IGNvbXBvbmVudEZpbGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRlbXBsYXRlRmlsZSA9IHRlbXBsYXRlTWV0YS5maWxlO1xuICAgIH1cblxuICAgIGFuYWx5c2lzLnNldChkZWNsYXJhdGlvbiwge1xuICAgICAgbmFtZSxcbiAgICAgIHNlbGVjdG9yLFxuICAgICAgZmlsZTogY29tcG9uZW50RmlsZSxcbiAgICAgIHRlbXBsYXRlOiB7XG4gICAgICAgIGlkZW50aWZpZXJzOiBnZXRUZW1wbGF0ZUlkZW50aWZpZXJzKGJvdW5kVGVtcGxhdGUpLFxuICAgICAgICB1c2VkQ29tcG9uZW50cyxcbiAgICAgICAgaXNJbmxpbmU6IHRlbXBsYXRlTWV0YS5pc0lubGluZSxcbiAgICAgICAgZmlsZTogdGVtcGxhdGVGaWxlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGFuYWx5c2lzO1xufVxuIl19
|