testcafe 1.18.5 → 1.18.6
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/CHANGELOG.md +23 -11
- package/lib/cli/argument-parser.js +5 -5
- package/lib/cli/cli.js +2 -2
- package/lib/client/automation/index.js +2 -1
- package/lib/client/automation/index.min.js +1 -1
- package/lib/runner/dashboard-config-storage/base.js +13 -0
- package/lib/runner/dashboard-config-storage/index.js +13 -0
- package/lib/runner/index.js +18 -3
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v1.18.6 (2022-04-18)
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* Faulty processing of client-side option chains leads to test execution errors ([testcafe-hammerhead/#2714](https://github.com/DevExpress/testcafe-hammerhead/issues/2714))
|
|
8
|
+
|
|
9
|
+
* Poor Brotli compression performance ([testcafe-hammerhead/#2743](https://github.com/DevExpress/testcafe-hammerhead/issues/2743))
|
|
10
|
+
|
|
11
|
+
* User Roles break when navigating to a new URL in a new window ([PR testcafe-hammerhead/#2754](https://github.com/DevExpress/testcafe-hammerhead/pull/2754))
|
|
12
|
+
|
|
13
|
+
* The t.maximizeWindow method doesn't maximise browser windows on macOS ([testcafe-browser-tools/#222](https://github.com/DevExpress/testcafe-browser-tools/issues/222))
|
|
14
|
+
|
|
3
15
|
## v1.18.5 (2022-03-31)
|
|
4
16
|
|
|
5
17
|
### Bug Fixes
|
|
@@ -12,11 +24,11 @@
|
|
|
12
24
|
|
|
13
25
|
* TestCafe cannot take screenshots when using the LambdaTest browser provider ([#6887](https://github.com/DevExpress/testcafe/issues/6887))
|
|
14
26
|
|
|
15
|
-
* Pages that target a missing `<iframe>`([testcafe-hammerhead
|
|
27
|
+
* Pages that target a missing `<iframe>`([testcafe-hammerhead/#2178](https://github.com/DevExpress/testcafe-hammerhead/issues/2178) element with the `Element.focus` method yield a ""TypeError: window.location.toString is not a function" error.
|
|
16
28
|
|
|
17
|
-
* TestCafe causes errors when it encounters XMLHTTPRequest calls that fetch resources from `blob:` URLs ([testcafe-hammerhead
|
|
29
|
+
* TestCafe causes errors when it encounters XMLHTTPRequest calls that fetch resources from `blob:` URLs ([testcafe-hammerhead/#2634](https://github.com/DevExpress/testcafe-hammerhead/issues/2634))
|
|
18
30
|
|
|
19
|
-
* `HTMLElement.removeAttributeNode` method calls yield unjustified exceptions (PR
|
|
31
|
+
* `HTMLElement.removeAttributeNode` method calls yield unjustified exceptions ([PR testcafe-hammerhead/#2742](https://github.com/DevExpress/testcafe-hammerhead/pull/2742) by @TrevorKarjanis)
|
|
20
32
|
|
|
21
33
|
## v1.18.4 (2022-02-21)
|
|
22
34
|
|
|
@@ -24,11 +36,11 @@
|
|
|
24
36
|
|
|
25
37
|
* TestCafe does not display reporter output during initialization ([#6842](https://github.com/DevExpress/testcafe/issues/6842))
|
|
26
38
|
|
|
27
|
-
* TestCafe uses outdated automation scripts after cache expiration ([testcafe-hammerhead
|
|
39
|
+
* TestCafe uses outdated automation scripts after cache expiration ([testcafe-hammerhead/#2738](https://github.com/DevExpress/testcafe-hammerhead/issues/2738), [PR](https://github.com/DevExpress/testcafe-hammerhead/issues/2739) by @rr13k)
|
|
28
40
|
|
|
29
|
-
* The `Node.append` method causes the `Illegal invocation` error (PR
|
|
41
|
+
* The `Node.append` method causes the `Illegal invocation` error ([PR testcafe-hammerhead/#2730](https://github.com/DevExpress/testcafe-hammerhead/pull/2730) by @danieltroger)
|
|
30
42
|
|
|
31
|
-
* Scripts in SVG documents cause the `Illegal invocation` error ([testcafe-hammerhead
|
|
43
|
+
* Scripts in SVG documents cause the `Illegal invocation` error ([testcafe-hammerhead/#2735](https://github.com/DevExpress/testcafe-hammerhead/issues/2735
|
|
32
44
|
))
|
|
33
45
|
|
|
34
46
|
## v1.18.3 (2022-01-25)
|
|
@@ -270,10 +282,10 @@ test('Type text', async t => {
|
|
|
270
282
|
* TestCafe raises the blur event when you focus a non-focusable element ([#6236](https://github.com/DevExpress/testcafe/pull/6236)).
|
|
271
283
|
* TestCafe test hangs when you click a link within a cross-domain iframe ([#6331](https://github.com/DevExpress/testcafe/pull/6331)).
|
|
272
284
|
* TestCafe loads the Babel compiler libraries multiple times ([#6310](https://github.com/DevExpress/testcafe/pull/6310)).
|
|
273
|
-
* TestCafe incorrectly parses the meta refresh tags ([
|
|
274
|
-
* TestCafe incorrectly processes iframe elements with the "srcdoc" attribute ([
|
|
275
|
-
* TestCafe incorrectly specifies the Referer HTTP request header if you use the "navigateTo" action ([
|
|
276
|
-
* An error related to the [bug in Node.js](https://github.com/nodejs/node/issues/37849) occurs ([
|
|
285
|
+
* TestCafe incorrectly parses the meta refresh tags ([PR testcafe-hammerhead/#2663](https://github.com/DevExpress/testcafe-hammerhead/pull/2663))
|
|
286
|
+
* TestCafe incorrectly processes iframe elements with the "srcdoc" attribute ([testcafe-hammerhead/#2647](https://github.com/DevExpress/testcafe-hammerhead/issues/2647)).
|
|
287
|
+
* TestCafe incorrectly specifies the Referer HTTP request header if you use the "navigateTo" action ([testcafe-hammerhead/#2607](https://github.com/DevExpress/testcafe-hammerhead/issues/2607)).
|
|
288
|
+
* An error related to the [bug in Node.js](https://github.com/nodejs/node/issues/37849) occurs ([testcafe-hammerhead/#2655](https://github.com/DevExpress/testcafe-hammerhead/pull/2655)).
|
|
277
289
|
|
|
278
290
|
## v1.15.0 (2021-07-08)
|
|
279
291
|
|
|
@@ -346,7 +358,7 @@ TestCafe now has the capability to proxy non-HTML documents such as XML and text
|
|
|
346
358
|
* Added a type definition for the `disableScreenshots` Runner option ([#5735](https://github.com/DevExpress/testcafe/issues/5735))
|
|
347
359
|
* Fixed a multi-window mode bug that caused TestCafe to launch an empty browser window and then hang ([#6132](https://github.com/DevExpress/testcafe/issues/6132))
|
|
348
360
|
* Fixed a bug that denied users access to iframes with `srcdoc` attributes ([#6033](https://github.com/DevExpress/testcafe/issues/6033))
|
|
349
|
-
* Fixed a bug that interfered with the loading of Word Online documents in Firefox ([testcafe-hammerhead
|
|
361
|
+
* Fixed a bug that interfered with the loading of Word Online documents in Firefox ([testcafe-hammerhead/#2287](https://github.com/DevExpress/testcafe-hammerhead/issues/2287))
|
|
350
362
|
|
|
351
363
|
## v1.14.0 (2021-4-7)
|
|
352
364
|
|
|
@@ -109,13 +109,13 @@ class CLIArgumentParser {
|
|
|
109
109
|
.option('--disable-multiple-windows', 'disable multiple windows mode')
|
|
110
110
|
.option('--disable-http2', 'disable the HTTP/2 proxy backend and force the proxy to use only HTTP/1.1 requests')
|
|
111
111
|
.option('--cache', 'cache web assets between test runs')
|
|
112
|
+
.option('-D, --dashboard-options <option=value[,...]>', 'specify Dashboard options')
|
|
112
113
|
// NOTE: these options will be handled by chalk internally
|
|
113
114
|
.option('--color', 'force colors in command line')
|
|
114
115
|
.option('--no-color', 'disable colors in command line')
|
|
115
116
|
// NOTE: temporary hide experimental options from --help command
|
|
116
117
|
.addOption(new commander_1.Option('--proxyless', 'experimental').hideHelp())
|
|
117
|
-
.addOption(new commander_1.Option('--experimental-debug', 'enable experimental debug mode').hideHelp())
|
|
118
|
-
.option('-D, --dashboard <option=value[,...]>', 'specify Dashboard options');
|
|
118
|
+
.addOption(new commander_1.Option('--experimental-debug', 'enable experimental debug mode').hideHelp());
|
|
119
119
|
}
|
|
120
120
|
_parseList(val) {
|
|
121
121
|
return val.split(',');
|
|
@@ -264,8 +264,8 @@ class CLIArgumentParser {
|
|
|
264
264
|
this.opts.compilerOptions = resultCompilerOptions;
|
|
265
265
|
}
|
|
266
266
|
async _parseDashboardOptions() {
|
|
267
|
-
if (this.opts.
|
|
268
|
-
this.opts.
|
|
267
|
+
if (this.opts.dashboardOptions)
|
|
268
|
+
this.opts.dashboardOptions = await get_options_1.getDashboardOptions(this.opts.dashboardOptions);
|
|
269
269
|
}
|
|
270
270
|
_parseListBrowsers() {
|
|
271
271
|
const listBrowserOption = this.opts.listBrowsers;
|
|
@@ -331,4 +331,4 @@ class CLIArgumentParser {
|
|
|
331
331
|
}
|
|
332
332
|
exports.default = CLIArgumentParser;
|
|
333
333
|
module.exports = exports.default;
|
|
334
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJndW1lbnQtcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS9hcmd1bWVudC1wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBa0M7QUFDbEMseUNBQTRDO0FBQzVDLG9EQUE0QjtBQUM1QiwyREFBc0Q7QUFDdEQsK0NBQWlEO0FBQ2pELDJDQUFpRDtBQUNqRCx1RUFBbUU7QUFDbkUscUZBQTJEO0FBQzNELDRDQUE0RDtBQUM1RCxzREFTOEI7QUFFOUIsMkVBQWlEO0FBQ2pELHVHQUErRTtBQUMvRSx5RkFBaUU7QUFNakUsdUdBQStFO0FBQy9FLG1FQUFzRTtBQUd0RSxNQUFNLGVBQWUsR0FBRyxxQkFBcUIsQ0FBQztBQUU5QyxNQUFNLFdBQVcsR0FBRyxnQkFBTSxDQUFDOzs7Ozs7Ozs7Ozs7O0NBYTFCLENBQUMsQ0FBQztBQXVDSCxNQUFxQixpQkFBaUI7SUFPbEMsWUFBb0IsR0FBWTtRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFRLElBQUksbUJBQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsR0FBRyxHQUFZLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLFdBQVcsR0FBSSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBVyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBVyxFQUFFLENBQUM7UUFFdkIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBRSxLQUFhO1FBQzFDLDRCQUFVLENBQUMsb0JBQUUsQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdkUsT0FBTyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTyxNQUFN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bkMsMEJBQWdCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ2xDLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJO2dCQUN2QiwyREFBMkQ7Z0JBQzNELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUEwQixDQUFDO0lBQ3RDLENBQUM7Q0FDSjtBQWxZRCxvQ0FrWUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoYXMsIHNldCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBDb21tYW5kLCBPcHRpb24gfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IGRlZGVudCBmcm9tICdkZWRlbnQnO1xuaW1wb3J0IHsgcmVhZFN5bmMgYXMgcmVhZCB9IGZyb20gJ3JlYWQtZmlsZS1yZWxhdGl2ZSc7XG5pbXBvcnQgeyBHZW5lcmFsRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uL2Vycm9ycy90eXBlcyc7XG5pbXBvcnQgeyBhc3NlcnRUeXBlLCBpcyB9IGZyb20gJy4uL2Vycm9ycy9ydW50aW1lL3R5cGUtYXNzZXJ0aW9ucyc7XG5pbXBvcnQgZ2V0Vmlld1BvcnRXaWR0aCBmcm9tICcuLi91dGlscy9nZXQtdmlld3BvcnQtd2lkdGgnO1xuaW1wb3J0IHsgd29yZFdyYXAsIHNwbGl0UXVvdGVkVGV4dCB9IGZyb20gJy4uL3V0aWxzL3N0cmluZyc7XG5pbXBvcnQge1xuICAgIGdldFNTTE9wdGlvbnMsXG4gICAgZ2V0UXVhcmFudGluZU9wdGlvbnMsXG4gICAgZ2V0U2NyZWVuc2hvdE9wdGlvbnMsXG4gICAgZ2V0VmlkZW9PcHRpb25zLFxuICAgIGdldE1ldGFPcHRpb25zLFxuICAgIGdldEdyZXBPcHRpb25zLFxuICAgIGdldENvbXBpbGVyT3B0aW9ucyxcbiAgICBnZXREYXNoYm9hcmRPcHRpb25zLFxufSBmcm9tICcuLi91dGlscy9nZXQtb3B0aW9ucyc7XG5cbmltcG9ydCBnZXRGaWx0ZXJGbiBmcm9tICcuLi91dGlscy9nZXQtZmlsdGVyLWZuJztcbmltcG9ydCBTQ1JFRU5TSE9UX09QVElPTl9OQU1FUyBmcm9tICcuLi9jb25maWd1cmF0aW9uL3NjcmVlbnNob3Qtb3B0aW9uLW5hbWVzJztcbmltcG9ydCBSVU5fT1BUSU9OX05BTUVTIGZyb20gJy4uL2NvbmZpZ3VyYXRpb24vcnVuLW9wdGlvbi1uYW1lcyc7XG5pbXBvcnQge1xuICAgIERpY3Rpb25hcnksXG4gICAgUmVwb3J0ZXJPcHRpb24sXG4gICAgUnVubmVyUnVuT3B0aW9ucyxcbn0gZnJvbSAnLi4vY29uZmlndXJhdGlvbi9pbnRlcmZhY2VzJztcbmltcG9ydCBRVUFSQU5USU5FX09QVElPTl9OQU1FUyBmcm9tICcuLi9jb25maWd1cmF0aW9uL3F1YXJhbnRpbmUtb3B0aW9uLW5hbWVzJztcbmltcG9ydCB7IGV4dHJhY3ROb2RlUHJvY2Vzc0FyZ3VtZW50cyB9IGZyb20gJy4vbm9kZS1hcmd1bWVudHMtZmlsdGVyJztcblxuXG5jb25zdCBSRU1PVEVfQUxJQVNfUkUgPSAvXnJlbW90ZSg/OjooXFxkKikpPyQvO1xuXG5jb25zdCBERVNDUklQVElPTiA9IGRlZGVudChgXG4gICAgSW4gdGhlIGJyb3dzZXIgbGlzdCwgeW91IGNhbiB1c2UgYnJvd3NlciBuYW1lcyAoZS5nLiBcImllXCIsIFwiY2hyb21lXCIsIGV0Yy4pIGFzIHdlbGwgYXMgcGF0aHMgdG8gZXhlY3V0YWJsZXMuXG5cbiAgICBUbyBydW4gdGVzdHMgYWdhaW5zdCBhbGwgaW5zdGFsbGVkIGJyb3dzZXJzLCB1c2UgdGhlIFwiYWxsXCIgYWxpYXMuXG5cbiAgICBUbyB1c2UgYSByZW1vdGUgYnJvd3NlciBjb25uZWN0aW9uIChlLmcuLCB0byBjb25uZWN0IGEgbW9iaWxlIGRldmljZSksIHNwZWNpZnkgXCJyZW1vdGVcIiBhcyB0aGUgYnJvd3NlciBhbGlhcy5cbiAgICBJZiB5b3UgbmVlZCB0byBjb25uZWN0IG11bHRpcGxlIGRldmljZXMsIGFkZCBhIGNvbG9uIGFuZCB0aGUgbnVtYmVyIG9mIGJyb3dzZXJzIHlvdSB3YW50IHRvIGNvbm5lY3QgKGUuZy4sIFwicmVtb3RlOjNcIikuXG5cbiAgICBUbyBydW4gdGVzdHMgaW4gYSBicm93c2VyIGFjY2Vzc2VkIHRocm91Z2ggYSBicm93c2VyIHByb3ZpZGVyIHBsdWdpbiwgc3BlY2lmeSBhIGJyb3dzZXIgYWxpYXMgdGhhdCBjb25zaXN0cyBvZiB0d28gcGFydHMgLSB0aGUgYnJvd3NlciBwcm92aWRlciBuYW1lIHByZWZpeCBhbmQgdGhlIG5hbWUgb2YgdGhlIGJyb3dzZXIgaXRzZWxmOyBmb3IgZXhhbXBsZSwgXCJzYXVjZWxhYnM6Y2hyb21lQDUxXCIuXG5cbiAgICBZb3UgY2FuIHVzZSBvbmUgb3IgbW9yZSBmaWxlIHBhdGhzIG9yIGdsb2IgcGF0dGVybnMgdG8gc3BlY2lmeSB3aGljaCB0ZXN0cyB0byBydW4uXG5cbiAgICBNb3JlIGluZm86IGh0dHBzOi8vZGV2ZXhwcmVzcy5naXRodWIuaW8vdGVzdGNhZmUvZG9jdW1lbnRhdGlvblxuYCk7XG5cbmludGVyZmFjZSBDb21tYW5kTGluZU9wdGlvbnMge1xuICAgIHRlc3RHcmVwPzogc3RyaW5nIHwgUmVnRXhwO1xuICAgIGZpeHR1cmVHcmVwPzogc3RyaW5nIHwgUmVnRXhwO1xuICAgIHNyYz86IHN0cmluZ1tdO1xuICAgIGJyb3dzZXJzPzogc3RyaW5nW107XG4gICAgbGlzdEJyb3dzZXJzPzogYm9vbGVhbiB8IHN0cmluZztcbiAgICB0ZXN0TWV0YT86IHN0cmluZyB8IERpY3Rpb25hcnk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj47XG4gICAgZml4dHVyZU1ldGE/OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+O1xuICAgIGZpbHRlcj86IEZ1bmN0aW9uO1xuICAgIGFwcEluaXREZWxheT86IHN0cmluZyB8IG51bWJlcjtcbiAgICBhc3NlcnRpb25UaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHNlbGVjdG9yVGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBzcGVlZD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBwYWdlTG9hZFRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgcGFnZVJlcXVlc3RUaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGFqYXhSZXF1ZXN0VGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBicm93c2VySW5pdFRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgdGVzdEV4ZWN1dGlvblRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgcnVuRXhlY3V0aW9uVGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBjb25jdXJyZW5jeT86IHN0cmluZyB8IG51bWJlcjtcbiAgICBxdWFyYW50aW5lTW9kZT86IGJvb2xlYW4gfCBEaWN0aW9uYXJ5PHN0cmluZyB8IG51bWJlcj47XG4gICAgcG9ydHM/OiBzdHJpbmcgfCBudW1iZXJbXTtcbiAgICBwcm92aWRlck5hbWU/OiBzdHJpbmc7XG4gICAgc3NsPzogc3RyaW5nIHwgRGljdGlvbmFyeTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuID47XG4gICAgcmVwb3J0ZXI/OiBzdHJpbmcgfCBSZXBvcnRlck9wdGlvbltdO1xuICAgIHNjcmVlbnNob3RzPzogRGljdGlvbmFyeTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPiB8IHN0cmluZztcbiAgICBzY3JlZW5zaG90UGF0aFBhdHRlcm4/OiBzdHJpbmc7XG4gICAgc2NyZWVuc2hvdHNPbkZhaWxzPzogYm9vbGVhbjtcbiAgICB2aWRlb09wdGlvbnM/OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW4+O1xuICAgIHZpZGVvRW5jb2RpbmdPcHRpb25zPzogc3RyaW5nIHwgRGljdGlvbmFyeTxudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuPjtcbiAgICBjb21waWxlck9wdGlvbnM/OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW4+O1xuICAgIGNvbmZpZ0ZpbGU/OiBzdHJpbmc7XG4gICAgcHJveHlsZXNzPzogYm9vbGVhbjtcbiAgICB2OEZsYWdzPzogc3RyaW5nW107XG4gICAgZGFzaGJvYXJkPyA6IHN0cmluZyB8IERpY3Rpb25hcnk8c3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlcj47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENMSUFyZ3VtZW50UGFyc2VyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2dyYW06IENvbW1hbmQ7XG4gICAgcHJpdmF0ZSBjd2Q6IHN0cmluZztcbiAgICBwcml2YXRlIHJlbW90ZUNvdW50OiBudW1iZXI7XG4gICAgcHVibGljIG9wdHM6IENvbW1hbmRMaW5lT3B0aW9ucztcbiAgICBwdWJsaWMgYXJnczogc3RyaW5nW107XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGN3ZD86IHN0cmluZykge1xuICAgICAgICB0aGlzLnByb2dyYW0gICAgICA9IG5ldyBDb21tYW5kKCd0ZXN0Y2FmZScpO1xuICAgICAgICB0aGlzLmN3ZCAgICAgICAgICA9IGN3ZCB8fCBwcm9jZXNzLmN3ZCgpO1xuICAgICAgICB0aGlzLnJlbW90ZUNvdW50ICA9IDA7XG4gICAgICAgIHRoaXMub3B0cyAgICAgICAgID0ge307XG4gICAgICAgIHRoaXMuYXJncyAgICAgICAgID0gW107XG5cbiAgICAgICAgdGhpcy5fZGVzY3JpYmVQcm9ncmFtKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX3BhcnNlUG9ydE51bWJlciAodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgcG9ydCBudW1iZXInLCB2YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX2dldERlc2NyaXB0aW9uICgpOiBzdHJpbmcge1xuICAgICAgICAvLyBOT1RFOiBhZGQgZW1wdHkgbGluZSB0byB3b3JrYXJvdW5kIGNvbW1hbmRlci1mb3JjZWQgaW5kZW50YXRpb24gb24gdGhlIGZpcnN0IGxpbmUuXG4gICAgICAgIHJldHVybiAnXFxuJyArIHdvcmRXcmFwKERFU0NSSVBUSU9OLCAyLCBnZXRWaWV3UG9ydFdpZHRoKHByb2Nlc3Muc3Rkb3V0KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGVzY3JpYmVQcm9ncmFtICgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmVyc2lvbiA9IEpTT04ucGFyc2UocmVhZCgnLi4vLi4vcGFja2FnZS5qc29uJykgYXMgc3RyaW5nKS52ZXJzaW9uO1xuXG4gICAgICAgIHRoaXMucHJvZ3JhbVxuICAgICAgICAgICAgLnZlcnNpb24odmVyc2lvbiwgJy12LCAtLXZlcnNpb24nKVxuICAgICAgICAgICAgLnVzYWdlKCdbb3B0aW9uc10gPGNvbW1hLXNlcGFyYXRlZC1icm93c2VyLWxpc3Q+IDxmaWxlLW9yLWdsb2IgLi4uPicpXG4gICAgICAgICAgICAuZGVzY3JpcHRpb24oQ0xJQXJndW1lbnRQYXJzZXIuX2dldERlc2NyaXB0aW9uKCkpXG5cbiAgICAgICAgICAgIC5hbGxvd1Vua25vd25PcHRpb24oKVxuICAgICAgICAgICAgLm9wdGlvbignLWIsIC0tbGlzdC1icm93c2VycyBbcHJvdmlkZXJdJywgJ291dHB1dCB0aGUgYWxpYXNlcyBmb3IgbG9jYWwgYnJvd3NlcnMgb3IgYnJvd3NlcnMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIHNwZWNpZmllZCBicm93c2VyIHByb3ZpZGVyJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1yLCAtLXJlcG9ydGVyIDxuYW1lWzpvdXRwdXRGaWxlXVssLi4uXT4nLCAnc3BlY2lmeSB0aGUgcmVwb3J0ZXJzIGFuZCBvcHRpb25hbGx5IGZpbGVzIHdoZXJlIHJlcG9ydHMgYXJlIHNhdmVkJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1zLCAtLXNjcmVlbnNob3RzIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgc2NyZWVuc2hvdCBvcHRpb25zJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1TLCAtLXNjcmVlbnNob3RzLW9uLWZhaWxzJywgJ3Rha2UgYSBzY3JlZW5zaG90IHdoZW5ldmVyIGEgdGVzdCBmYWlscycpXG4gICAgICAgICAgICAub3B0aW9uKCctcCwgLS1zY3JlZW5zaG90LXBhdGgtcGF0dGVybiA8cGF0dGVybj4nLCAndXNlIHBhdHRlcm5zIHRvIGNvbXBvc2Ugc2NyZWVuc2hvdCBmaWxlIG5hbWVzIGFuZCBwYXRoczogJHtCUk9XU0VSfSwgJHtCUk9XU0VSX1ZFUlNJT059LCAke09TfSwgZXRjLicpXG4gICAgICAgICAgICAub3B0aW9uKCctcSwgLS1xdWFyYW50aW5lLW1vZGUgW29wdGlvbj12YWx1ZSwuLi5dJywgJ2VuYWJsZSBxdWFyYW50aW5lIG1vZGUgYW5kIChvcHRpb25hbGx5KSBtb2RpZnkgcXVhcmFudGluZSBtb2RlIHNldHRpbmdzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1kLCAtLWRlYnVnLW1vZGUnLCAnZXhlY3V0ZSB0ZXN0IHN0ZXBzIG9uZSBieSBvbmUgcGF1c2luZyB0aGUgdGVzdCBhZnRlciBlYWNoIHN0ZXAnKVxuICAgICAgICAgICAgLm9wdGlvbignLWUsIC0tc2tpcC1qcy1lcnJvcnMnLCAnbWFrZSB0ZXN0cyBub3QgZmFpbCB3aGVuIGEgSlMgZXJyb3IgaGFwcGVucyBvbiBhIHBhZ2UnKVxuICAgICAgICAgICAgLm9wdGlvbignLXUsIC0tc2tpcC11bmNhdWdodC1lcnJvcnMnLCAnaWdub3JlIHVuY2F1Z2h0IGVycm9ycyBhbmQgdW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9ucywgd2hpY2ggb2NjdXIgZHVyaW5nIHRlc3QgZXhlY3V0aW9uJylcbiAgICAgICAgICAgIC5vcHRpb24oJy10LCAtLXRlc3QgPG5hbWU+JywgJ3J1biBvbmx5IHRlc3RzIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1ULCAtLXRlc3QtZ3JlcCA8cGF0dGVybj4nLCAncnVuIG9ubHkgdGVzdHMgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCBwYXR0ZXJuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1mLCAtLWZpeHR1cmUgPG5hbWU+JywgJ3J1biBvbmx5IGZpeHR1cmVzIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1GLCAtLWZpeHR1cmUtZ3JlcCA8cGF0dGVybj4nLCAncnVuIG9ubHkgZml4dHVyZXMgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCBwYXR0ZXJuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1hLCAtLWFwcCA8Y29tbWFuZD4nLCAnbGF1bmNoIHRoZSB0ZXN0ZWQgYXBwIHVzaW5nIHRoZSBzcGVjaWZpZWQgY29tbWFuZCBiZWZvcmUgcnVubmluZyB0ZXN0cycpXG4gICAgICAgICAgICAub3B0aW9uKCctYywgLS1jb25jdXJyZW5jeSA8bnVtYmVyPicsICdydW4gdGVzdHMgY29uY3VycmVudGx5JylcbiAgICAgICAgICAgIC5vcHRpb24oJy1MLCAtLWxpdmUnLCAnZW5hYmxlIGxpdmUgbW9kZS4gSW4gdGhpcyBtb2RlLCBUZXN0Q2FmZSB3YXRjaGVzIGZvciBjaGFuZ2VzIHlvdSBtYWtlIGluIHRoZSB0ZXN0IGZpbGVzLiBUaGVzZSBjaGFuZ2VzIGltbWVkaWF0ZWx5IHJlc3RhcnQgdGhlIHRlc3RzIHNvIHRoYXQgeW91IGNhbiBzZWUgdGhlIGVmZmVjdC4nKVxuICAgICAgICAgICAgLm9wdGlvbignLS10ZXN0LW1ldGEgPGtleT12YWx1ZVssa2V5Mj12YWx1ZTIsLi4uXT4nLCAncnVuIG9ubHkgdGVzdHMgd2l0aCBtYXRjaGluZyBtZXRhZGF0YScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWZpeHR1cmUtbWV0YSA8a2V5PXZhbHVlWyxrZXkyPXZhbHVlMiwuLi5dPicsICdydW4gb25seSBmaXh0dXJlcyB3aXRoIG1hdGNoaW5nIG1ldGFkYXRhJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZGVidWctb24tZmFpbCcsICdwYXVzZSB0aGUgdGVzdCBpZiBpdCBmYWlscycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWFwcC1pbml0LWRlbGF5IDxtcz4nLCAnc3BlY2lmeSBob3cgbXVjaCB0aW1lIGl0IHRha2VzIGZvciB0aGUgdGVzdGVkIGFwcCB0byBpbml0aWFsaXplJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tc2VsZWN0b3ItdGltZW91dCA8bXM+JywgJ3NwZWNpZnkgdGhlIHRpbWUgd2l0aGluIHdoaWNoIHNlbGVjdG9ycyBtYWtlIGF0dGVtcHRzIHRvIG9idGFpbiBhIG5vZGUgdG8gYmUgcmV0dXJuZWQnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1hc3NlcnRpb24tdGltZW91dCA8bXM+JywgJ3NwZWNpZnkgdGhlIHRpbWUgd2l0aGluIHdoaWNoIGFzc2VydGlvbiBzaG91bGQgcGFzcycpXG4gICAgICAgICAgICAub3B0aW9uKCctLXBhZ2UtbG9hZC10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgdGltZSB3aXRoaW4gd2hpY2ggVGVzdENhZmUgd2FpdHMgZm9yIHRoZSBgd2luZG93LmxvYWRgIGV2ZW50IHRvIGZpcmUgb24gcGFnZSBsb2FkIGJlZm9yZSBwcm9jZWVkaW5nIHRvIHRoZSBuZXh0IHRlc3QgYWN0aW9uJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcGFnZS1yZXF1ZXN0LXRpbWVvdXQgPG1zPicsIFwic3BlY2lmaWVzIHRoZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyB0byBjb21wbGV0ZSB0aGUgcmVxdWVzdCBmb3IgdGhlIHBhZ2UncyBIVE1MXCIpXG4gICAgICAgICAgICAub3B0aW9uKCctLWFqYXgtcmVxdWVzdC10aW1lb3V0IDxtcz4nLCAnc3BlY2lmaWVzIHRoZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyB0byBjb21wbGV0ZSB0aGUgQUpBWCByZXF1ZXN0cyAoWEhSIG9yIGZldGNoKScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWJyb3dzZXItaW5pdC10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgdGltZSAoaW4gbWlsbGlzZWNvbmRzKSBUZXN0Q2FmZSB3YWl0cyBmb3IgdGhlIGJyb3dzZXIgdG8gc3RhcnQnKVxuICAgICAgICAgICAgLm9wdGlvbignLS10ZXN0LWV4ZWN1dGlvbi10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgdGltZSAoaW4gbWlsbGlzZWNvbmRzKSBUZXN0Q2FmZSB3YWl0cyBmb3IgdGhlIHRlc3QgZXhlY3V0ZWQnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1ydW4tZXhlY3V0aW9uLXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSB0aW1lIChpbiBtaWxsaXNlY29uZHMpIFRlc3RDYWZlIHdhaXRzIGZvciB0aGUgYWxsIHRlc3QgZXhlY3V0ZWQnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zcGVlZCA8ZmFjdG9yPicsICdzZXQgdGhlIHNwZWVkIG9mIHRlc3QgZXhlY3V0aW9uICgwLjAxIC4uLiAxKScpXG4gICAgICAgICAgICAub3B0aW9uKCctLXBvcnRzIDxwb3J0MSxwb3J0Mj4nLCAnc3BlY2lmeSBjdXN0b20gcG9ydCBudW1iZXJzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0taG9zdG5hbWUgPG5hbWU+JywgJ3NwZWNpZnkgdGhlIGhvc3RuYW1lJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcHJveHkgPGhvc3Q+JywgJ3NwZWNpZnkgdGhlIGhvc3Qgb2YgdGhlIHByb3h5IHNlcnZlcicpXG4gICAgICAgICAgICAub3B0aW9uKCctLXByb3h5LWJ5cGFzcyA8cnVsZXM+JywgJ3NwZWNpZnkgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBydWxlcyB0aGF0IGRlZmluZSBVUkxzIGFjY2Vzc2VkIGJ5cGFzc2luZyB0aGUgcHJveHkgc2VydmVyJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tc3NsIDxvcHRpb25zPicsICdzcGVjaWZ5IFNTTCBvcHRpb25zIHRvIHJ1biBUZXN0Q2FmZSBwcm94eSBzZXJ2ZXIgb3ZlciB0aGUgSFRUUFMgcHJvdG9jb2wnKVxuICAgICAgICAgICAgLm9wdGlvbignLS12aWRlbyA8cGF0aD4nLCAncmVjb3JkIHZpZGVvcyBvZiB0ZXN0IHJ1bnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS12aWRlby1vcHRpb25zIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgdmlkZW8gcmVjb3JkaW5nIG9wdGlvbnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS12aWRlby1lbmNvZGluZy1vcHRpb25zIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgZW5jb2Rpbmcgb3B0aW9ucycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRldicsICdlbmFibGVzIG1lY2hhbmlzbXMgdG8gbG9nIGFuZCBkaWFnbm9zZSBlcnJvcnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1xci1jb2RlJywgJ291dHB1dHMgUVItY29kZSB0aGF0IHJlcGVhdHMgVVJMcyB1c2VkIHRvIGNvbm5lY3QgdGhlIHJlbW90ZSBicm93c2VycycpXG4gICAgICAgICAgICAub3B0aW9uKCctLXNmLCAtLXN0b3Atb24tZmlyc3QtZmFpbCcsICdzdG9wIGFuIGVudGlyZSB0ZXN0IHJ1biBpZiBhbnkgdGVzdCBmYWlscycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWNvbmZpZy1maWxlIDxwYXRoPicsICdzcGVjaWZ5IGEgY3VzdG9tIHBhdGggdG8gdGhlIHRlc3RjYWZlIGNvbmZpZ3VyYXRpb24gZmlsZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLXRzLWNvbmZpZy1wYXRoIDxwYXRoPicsICd1c2UgYSBjdXN0b20gVHlwZVNjcmlwdCBjb25maWd1cmF0aW9uIGZpbGUgYW5kIHNwZWNpZnkgaXRzIGxvY2F0aW9uJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tY3MsIC0tY2xpZW50LXNjcmlwdHMgPHBhdGhzPicsICdpbmplY3Qgc2NyaXB0cyBpbnRvIHRlc3RlZCBwYWdlcycsIHRoaXMuX3BhcnNlTGlzdCwgW10pXG4gICAgICAgICAgICAub3B0aW9uKCctLWRpc2FibGUtcGFnZS1jYWNoaW5nJywgJ2Rpc2FibGUgcGFnZSBjYWNoaW5nIGR1cmluZyB0ZXN0IGV4ZWN1dGlvbicpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRpc2FibGUtcGFnZS1yZWxvYWRzJywgJ2Rpc2FibGUgcGFnZSByZWxvYWRzIGJldHdlZW4gdGVzdHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1yZXRyeS10ZXN0LXBhZ2VzJywgJ3JldHJ5IG5ldHdvcmsgcmVxdWVzdHMgdG8gdGVzdCBwYWdlcyBkdXJpbmcgdGVzdCBleGVjdXRpb24nKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kaXNhYmxlLXNjcmVlbnNob3RzJywgJ2Rpc2FibGUgc2NyZWVuc2hvdHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zY3JlZW5zaG90cy1mdWxsLXBhZ2UnLCAnZW5hYmxlIGZ1bGwtcGFnZSBzY3JlZW5zaG90cycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWNvbXBpbGVyLW9wdGlvbnMgPG9wdGlvbj12YWx1ZVssLi4uXT4nLCAnc3BlY2lmeSB0ZXN0IGZpbGUgY29tcGlsZXIgb3B0aW9ucycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRpc2FibGUtbXVsdGlwbGUtd2luZG93cycsICdkaXNhYmxlIG11bHRpcGxlIHdpbmRvd3MgbW9kZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRpc2FibGUtaHR0cDInLCAnZGlzYWJsZSB0aGUgSFRUUC8yIHByb3h5IGJhY2tlbmQgYW5kIGZvcmNlIHRoZSBwcm94eSB0byB1c2Ugb25seSBIVFRQLzEuMSByZXF1ZXN0cycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWNhY2hlJywgJ2NhY2hlIHdlYiBhc3NldHMgYmV0d2VlbiB0ZXN0IHJ1bnMnKVxuXG4gICAgICAgICAgICAvLyBOT1RFOiB0aGVzZSBvcHRpb25zIHdpbGwgYmUgaGFuZGxlZCBieSBjaGFsayBpbnRlcm5hbGx5XG4gICAgICAgICAgICAub3B0aW9uKCctLWNvbG9yJywgJ2ZvcmNlIGNvbG9ycyBpbiBjb21tYW5kIGxpbmUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1uby1jb2xvcicsICdkaXNhYmxlIGNvbG9ycyBpbiBjb21tYW5kIGxpbmUnKVxuXG4gICAgICAgICAgICAvLyBOT1RFOiB0ZW1wb3JhcnkgaGlkZSBleHBlcmltZW50YWwgb3B0aW9ucyBmcm9tIC0taGVscCBjb21tYW5kXG4gICAgICAgICAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tcHJveHlsZXNzJywgJ2V4cGVyaW1lbnRhbCcpLmhpZGVIZWxwKCkpXG4gICAgICAgICAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZXhwZXJpbWVudGFsLWRlYnVnJywgJ2VuYWJsZSBleHBlcmltZW50YWwgZGVidWcgbW9kZScpLmhpZGVIZWxwKCkpXG5cbiAgICAgICAgICAgIC5vcHRpb24oJy1ELCAtLWRhc2hib2FyZCA8b3B0aW9uPXZhbHVlWywuLi5dPicsICdzcGVjaWZ5IERhc2hib2FyZCBvcHRpb25zJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VMaXN0ICh2YWw6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHZhbC5zcGxpdCgnLCcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NoZWNrQW5kQ291bnRSZW1vdGVzIChicm93c2VyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgcmVtb3RlTWF0Y2ggPSBicm93c2VyLm1hdGNoKFJFTU9URV9BTElBU19SRSk7XG5cbiAgICAgICAgaWYgKHJlbW90ZU1hdGNoKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW90ZUNvdW50ICs9IHBhcnNlSW50KHJlbW90ZU1hdGNoWzFdLCAxMCkgfHwgMTtcblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIF9wYXJzZUZpbHRlcmluZ09wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnRlc3RHcmVwKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnRlc3RHcmVwID0gZ2V0R3JlcE9wdGlvbnMoJy0tdGVzdC1ncmVwJywgdGhpcy5vcHRzLnRlc3RHcmVwIGFzIHN0cmluZyk7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0cy5maXh0dXJlR3JlcClcbiAgICAgICAgICAgIHRoaXMub3B0cy5maXh0dXJlR3JlcCA9IGdldEdyZXBPcHRpb25zKCctLWZpeHR1cmUtZ3JlcCcsIHRoaXMub3B0cy5maXh0dXJlR3JlcCBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdHMudGVzdE1ldGEpXG4gICAgICAgICAgICB0aGlzLm9wdHMudGVzdE1ldGEgPSBhd2FpdCBnZXRNZXRhT3B0aW9ucygnLS10ZXN0LW1ldGEnLCB0aGlzLm9wdHMudGVzdE1ldGEgYXMgc3RyaW5nKTtcblxuICAgICAgICBpZiAodGhpcy5vcHRzLmZpeHR1cmVNZXRhKVxuICAgICAgICAgICAgdGhpcy5vcHRzLmZpeHR1cmVNZXRhID0gYXdhaXQgZ2V0TWV0YU9wdGlvbnMoJy0tZml4dHVyZS1tZXRhJywgdGhpcy5vcHRzLmZpeHR1cmVNZXRhIGFzIHN0cmluZyk7XG5cbiAgICAgICAgdGhpcy5vcHRzLmZpbHRlciA9IGdldEZpbHRlckZuKHRoaXMub3B0cyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VBcHBJbml0RGVsYXkgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLmFwcEluaXREZWxheSkge1xuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSB0ZXN0ZWQgYXBwIGluaXRpYWxpemF0aW9uIGRlbGF5JywgdGhpcy5vcHRzLmFwcEluaXREZWxheSk7XG5cbiAgICAgICAgICAgIHRoaXMub3B0cy5hcHBJbml0RGVsYXkgPSBwYXJzZUludCh0aGlzLm9wdHMuYXBwSW5pdERlbGF5IGFzIHN0cmluZywgMTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VTZWxlY3RvclRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnNlbGVjdG9yVGltZW91dCkge1xuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBTZWxlY3RvciB0aW1lb3V0JywgdGhpcy5vcHRzLnNlbGVjdG9yVGltZW91dCk7XG5cbiAgICAgICAgICAgIHRoaXMub3B0cy5zZWxlY3RvclRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMuc2VsZWN0b3JUaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VBc3NlcnRpb25UaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5hc3NlcnRpb25UaW1lb3V0KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIGFzc2VydGlvbiB0aW1lb3V0JywgdGhpcy5vcHRzLmFzc2VydGlvblRpbWVvdXQpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMuYXNzZXJ0aW9uVGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5hc3NlcnRpb25UaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VQYWdlTG9hZFRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnBhZ2VMb2FkVGltZW91dCkge1xuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBwYWdlIGxvYWQgdGltZW91dCcsIHRoaXMub3B0cy5wYWdlTG9hZFRpbWVvdXQpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMucGFnZUxvYWRUaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLnBhZ2VMb2FkVGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlUGFnZVJlcXVlc3RUaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdHMucGFnZVJlcXVlc3RUaW1lb3V0KVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgcGFnZSByZXF1ZXN0IHRpbWVvdXQnLCB0aGlzLm9wdHMucGFnZVJlcXVlc3RUaW1lb3V0KTtcblxuICAgICAgICB0aGlzLm9wdHMucGFnZVJlcXVlc3RUaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLnBhZ2VSZXF1ZXN0VGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUFqYXhSZXF1ZXN0VGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vcHRzLmFqYXhSZXF1ZXN0VGltZW91dClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIEFKQVggcmVxdWVzdCB0aW1lb3V0JywgdGhpcy5vcHRzLmFqYXhSZXF1ZXN0VGltZW91dCk7XG5cbiAgICAgICAgdGhpcy5vcHRzLmFqYXhSZXF1ZXN0VGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5hamF4UmVxdWVzdFRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VCcm93c2VySW5pdFRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMub3B0cy5icm93c2VySW5pdFRpbWVvdXQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBicm93c2VyIGluaXRpYWxpemF0aW9uIHRpbWVvdXQnLCB0aGlzLm9wdHMuYnJvd3NlckluaXRUaW1lb3V0KTtcblxuICAgICAgICB0aGlzLm9wdHMuYnJvd3NlckluaXRUaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLmJyb3dzZXJJbml0VGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVRlc3RFeGVjdXRpb25UaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy50ZXN0RXhlY3V0aW9uVGltZW91dCkge1xuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSB0ZXN0IGV4ZWN1dGlvbiB0aW1lb3V0JywgdGhpcy5vcHRzLnRlc3RFeGVjdXRpb25UaW1lb3V0KTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLnRlc3RFeGVjdXRpb25UaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLnRlc3RFeGVjdXRpb25UaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VSdW5FeGVjdXRpb25UaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5ydW5FeGVjdXRpb25UaW1lb3V0KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIHJ1biBleGVjdXRpb24gdGltZW91dCcsIHRoaXMub3B0cy5ydW5FeGVjdXRpb25UaW1lb3V0KTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLnJ1bkV4ZWN1dGlvblRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMucnVuRXhlY3V0aW9uVGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlU3BlZWQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnNwZWVkKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnNwZWVkID0gcGFyc2VGbG9hdCh0aGlzLm9wdHMuc3BlZWQgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUNvbmN1cnJlbmN5ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5jb25jdXJyZW5jeSlcbiAgICAgICAgICAgIHRoaXMub3B0cy5jb25jdXJyZW5jeSA9IHBhcnNlSW50KHRoaXMub3B0cy5jb25jdXJyZW5jeSBhcyBzdHJpbmcsIDEwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wYXJzZVF1YXJhbnRpbmVPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5xdWFyYW50aW5lTW9kZSlcbiAgICAgICAgICAgIHRoaXMub3B0cy5xdWFyYW50aW5lTW9kZSA9IGF3YWl0IGdldFF1YXJhbnRpbmVPcHRpb25zKCctLXF1YXJhbnRpbmUtbW9kZScsIHRoaXMub3B0cy5xdWFyYW50aW5lTW9kZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VQb3J0cyAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMucG9ydHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZFBvcnRzID0gKHRoaXMub3B0cy5wb3J0cyBhcyBzdHJpbmcpIC8qIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZXh0cmEtcGFyZW5zICovXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAubWFwKENMSUFyZ3VtZW50UGFyc2VyLl9wYXJzZVBvcnROdW1iZXIpO1xuXG4gICAgICAgICAgICBpZiAocGFyc2VkUG9ydHMubGVuZ3RoIDwgMilcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLnBvcnRzT3B0aW9uUmVxdWlyZXNUd29OdW1iZXJzKTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLnBvcnRzID0gcGFyc2VkUG9ydHMgYXMgbnVtYmVyW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUJyb3dzZXJzRnJvbUFyZ3MgKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBicm93c2Vyc0FyZyA9IHRoaXMucHJvZ3JhbS5hcmdzWzBdIHx8ICcnO1xuXG4gICAgICAgIHRoaXMub3B0cy5icm93c2VycyA9IHNwbGl0UXVvdGVkVGV4dChicm93c2Vyc0FyZywgJywnKVxuICAgICAgICAgICAgLmZpbHRlcihicm93c2VyID0+IGJyb3dzZXIgJiYgdGhpcy5fY2hlY2tBbmRDb3VudFJlbW90ZXMoYnJvd3NlcikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBfcGFyc2VTc2xPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5zc2wpXG4gICAgICAgICAgICB0aGlzLm9wdHMuc3NsID0gYXdhaXQgZ2V0U1NMT3B0aW9ucyh0aGlzLm9wdHMuc3NsIGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VSZXBvcnRlcnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCByZXBvcnRlcnMgPSB0aGlzLm9wdHMucmVwb3J0ZXIgPyAodGhpcy5vcHRzLnJlcG9ydGVyIGFzIHN0cmluZykuc3BsaXQoJywnKSA6IFtdOyAvKiBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWV4dHJhLXBhcmVucyovXG5cbiAgICAgICAgdGhpcy5vcHRzLnJlcG9ydGVyID0gcmVwb3J0ZXJzLm1hcCgocmVwb3J0ZXI6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VwYXJhdG9ySW5kZXggPSByZXBvcnRlci5pbmRleE9mKCc6Jyk7XG5cbiAgICAgICAgICAgIGlmIChzZXBhcmF0b3JJbmRleCA8IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgbmFtZTogcmVwb3J0ZXIgfTtcblxuICAgICAgICAgICAgY29uc3QgbmFtZSAgID0gcmVwb3J0ZXIuc3Vic3RyaW5nKDAsIHNlcGFyYXRvckluZGV4KTtcbiAgICAgICAgICAgIGNvbnN0IG91dHB1dCA9IHJlcG9ydGVyLnN1YnN0cmluZyhzZXBhcmF0b3JJbmRleCArIDEpO1xuXG4gICAgICAgICAgICByZXR1cm4geyBuYW1lLCBvdXRwdXQgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VGaWxlTGlzdCAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3B0cy5zcmMgPSB0aGlzLnByb2dyYW0uYXJncy5zbGljZSgxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wYXJzZVNjcmVlbnNob3RPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5zY3JlZW5zaG90cylcbiAgICAgICAgICAgIHRoaXMub3B0cy5zY3JlZW5zaG90cyA9IGF3YWl0IGdldFNjcmVlbnNob3RPcHRpb25zKHRoaXMub3B0cy5zY3JlZW5zaG90cyk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMub3B0cy5zY3JlZW5zaG90cyA9IHt9O1xuXG4gICAgICAgIGlmICghaGFzKHRoaXMub3B0cy5zY3JlZW5zaG90cywgU0NSRUVOU0hPVF9PUFRJT05fTkFNRVMucGF0aFBhdHRlcm4pICYmIHRoaXMub3B0cy5zY3JlZW5zaG90UGF0aFBhdHRlcm4pXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2NyZWVuc2hvdHNbU0NSRUVOU0hPVF9PUFRJT05fTkFNRVMucGF0aFBhdHRlcm5dID0gdGhpcy5vcHRzLnNjcmVlbnNob3RQYXRoUGF0dGVybjtcblxuICAgICAgICBpZiAoIWhhcyh0aGlzLm9wdHMuc2NyZWVuc2hvdHMsIFNDUkVFTlNIT1RfT1BUSU9OX05BTUVTLnRha2VPbkZhaWxzKSAmJiB0aGlzLm9wdHMuc2NyZWVuc2hvdHNPbkZhaWxzKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnNjcmVlbnNob3RzW1NDUkVFTlNIT1RfT1BUSU9OX05BTUVTLnRha2VPbkZhaWxzXSA9IHRoaXMub3B0cy5zY3JlZW5zaG90c09uRmFpbHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VWaWRlb09wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnZpZGVvT3B0aW9ucylcbiAgICAgICAgICAgIHRoaXMub3B0cy52aWRlb09wdGlvbnMgPSBhd2FpdCBnZXRWaWRlb09wdGlvbnModGhpcy5vcHRzLnZpZGVvT3B0aW9ucyBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdHMudmlkZW9FbmNvZGluZ09wdGlvbnMpXG4gICAgICAgICAgICB0aGlzLm9wdHMudmlkZW9FbmNvZGluZ09wdGlvbnMgPSBhd2FpdCBnZXRWaWRlb09wdGlvbnModGhpcy5vcHRzLnZpZGVvRW5jb2RpbmdPcHRpb25zIGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VDb21waWxlck9wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXRoaXMub3B0cy5jb21waWxlck9wdGlvbnMpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcGFyc2VkQ29tcGlsZXJPcHRpb25zID0gYXdhaXQgZ2V0Q29tcGlsZXJPcHRpb25zKHRoaXMub3B0cy5jb21waWxlck9wdGlvbnMgYXMgc3RyaW5nKTtcbiAgICAgICAgY29uc3QgcmVzdWx0Q29tcGlsZXJPcHRpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJzZWRDb21waWxlck9wdGlvbnMpKVxuICAgICAgICAgICAgc2V0KHJlc3VsdENvbXBpbGVyT3B0aW9ucywga2V5LCB2YWx1ZSk7XG5cbiAgICAgICAgdGhpcy5vcHRzLmNvbXBpbGVyT3B0aW9ucyA9IHJlc3VsdENvbXBpbGVyT3B0aW9ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wYXJzZURhc2hib2FyZE9wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLmRhc2hib2FyZClcbiAgICAgICAgICAgIHRoaXMub3B0cy5kYXNoYm9hcmQgPSBhd2FpdCBnZXREYXNoYm9hcmRPcHRpb25zKHRoaXMub3B0cy5kYXNoYm9hcmQgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUxpc3RCcm93c2VycyAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxpc3RCcm93c2VyT3B0aW9uID0gdGhpcy5vcHRzLmxpc3RCcm93c2VycztcblxuICAgICAgICB0aGlzLm9wdHMubGlzdEJyb3dzZXJzID0gISF0aGlzLm9wdHMubGlzdEJyb3dzZXJzO1xuXG4gICAgICAgIGlmICghdGhpcy5vcHRzLmxpc3RCcm93c2VycylcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLm9wdHMucHJvdmlkZXJOYW1lID0gdHlwZW9mIGxpc3RCcm93c2VyT3B0aW9uID09PSAnc3RyaW5nJyA/IGxpc3RCcm93c2VyT3B0aW9uIDogJ2xvY2FsbHktaW5zdGFsbGVkJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfcHJlcGFyZVF1YXJhbnRpbmVPcHRpb25zIChhcmd2OiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICAvLyBOT1RFOiBtb3ZlIHRoZSBxdWFyYW50aW5lIG1vZGUgb3B0aW9ucyB0byB0aGUgZW5kIG9mIHRoZSBhcnJheSB0byBhdm9pZCB0aGUgd3JvbmcgcXVhcmFudGluZSBtb2RlIENMSSBvcHRpb25zIHBhcnNpbmcgKEdILTYyMzEpXG4gICAgICAgIGNvbnN0IHF1YXJhbnRpbmVPcHRpb25JbmRleCA9IGFyZ3YuZmluZEluZGV4KFxuICAgICAgICAgICAgZWwgPT4gWyctcScsICctLXF1YXJhbnRpbmUtbW9kZSddLnNvbWUob3B0ID0+IGVsLnN0YXJ0c1dpdGgob3B0KSkpO1xuXG4gICAgICAgIGlmIChxdWFyYW50aW5lT3B0aW9uSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgY29uc3QgaXNOb3RMYXN0T3B0aW9uICAgICAgID0gcXVhcmFudGluZU9wdGlvbkluZGV4IDwgYXJndi5sZW5ndGggLSAxO1xuICAgICAgICAgICAgY29uc3Qgc2hvdWxkTW92ZU9wdGlvblRvRW5kID0gaXNOb3RMYXN0T3B0aW9uICYmXG4gICAgICAgICAgICAgICAgIVtRVUFSQU5USU5FX09QVElPTl9OQU1FUy5hdHRlbXB0TGltaXQsIFFVQVJBTlRJTkVfT1BUSU9OX05BTUVTLnN1Y2Nlc3NUaHJlc2hvbGRdLnNvbWUob3B0ID0+IGFyZ3ZbcXVhcmFudGluZU9wdGlvbkluZGV4ICsgMV0uc3RhcnRzV2l0aChvcHQpKTtcblxuICAgICAgICAgICAgaWYgKHNob3VsZE1vdmVPcHRpb25Ub0VuZClcbiAgICAgICAgICAgICAgICBhcmd2LnB1c2goYXJndi5zcGxpY2UocXVhcmFudGluZU9wdGlvbkluZGV4LCAxKVswXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcGFyc2UgKGFyZ3Y6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIENMSUFyZ3VtZW50UGFyc2VyLl9wcmVwYXJlUXVhcmFudGluZU9wdGlvbnMoYXJndik7XG5cbiAgICAgICAgY29uc3QgeyBhcmdzLCB2OEZsYWdzIH0gPSBleHRyYWN0Tm9kZVByb2Nlc3NBcmd1bWVudHMoYXJndik7XG5cbiAgICAgICAgdGhpcy5wcm9ncmFtLnBhcnNlKGFyZ3MpO1xuXG4gICAgICAgIHRoaXMuYXJncyA9IHRoaXMucHJvZ3JhbS5hcmdzO1xuICAgICAgICB0aGlzLm9wdHMgPSBPYmplY3QuYXNzaWduKHRoaXMucHJvZ3JhbS5vcHRzKCksIHsgdjhGbGFncyB9KTtcblxuICAgICAgICB0aGlzLl9wYXJzZUxpc3RCcm93c2VycygpO1xuXG4gICAgICAgIC8vIE5PVEU6IHRoZSAnLS1saXN0LWJyb3dzZXJzJyBvcHRpb24gb25seSBsaXN0cyBicm93c2VycyBhbmQgaW1tZWRpYXRlbHkgZXhpdHMgdGhlIGFwcC5cbiAgICAgICAgLy8gVGhlcmVmb3JlLCB3ZSBkb24ndCBuZWVkIHRvIHByb2Nlc3Mgb3RoZXIgYXJndW1lbnRzLlxuICAgICAgICBpZiAodGhpcy5vcHRzLmxpc3RCcm93c2VycylcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLl9wYXJzZVNlbGVjdG9yVGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZUFzc2VydGlvblRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VQYWdlTG9hZFRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VQYWdlUmVxdWVzdFRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VBamF4UmVxdWVzdFRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VCcm93c2VySW5pdFRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VUZXN0RXhlY3V0aW9uVGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZVJ1bkV4ZWN1dGlvblRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VBcHBJbml0RGVsYXkoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VTcGVlZCgpO1xuICAgICAgICB0aGlzLl9wYXJzZVBvcnRzKCk7XG4gICAgICAgIHRoaXMuX3BhcnNlQnJvd3NlcnNGcm9tQXJncygpO1xuICAgICAgICB0aGlzLl9wYXJzZUNvbmN1cnJlbmN5KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlRmlsZUxpc3QoKTtcblxuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZUZpbHRlcmluZ09wdGlvbnMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fcGFyc2VRdWFyYW50aW5lT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVNjcmVlbnNob3RPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlVmlkZW9PcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlQ29tcGlsZXJPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlU3NsT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVJlcG9ydGVycygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZURhc2hib2FyZE9wdGlvbnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UnVuT3B0aW9ucyAoKTogUnVubmVyUnVuT3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgICAgUlVOX09QVElPTl9OQU1FUy5mb3JFYWNoKG9wdGlvbk5hbWUgPT4ge1xuICAgICAgICAgICAgaWYgKG9wdGlvbk5hbWUgaW4gdGhpcy5vcHRzKVxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgYSBoYWNrIHRvIGFkZCBhbiBpbmRleCBzaWduYXR1cmUgdG8gaW50ZXJmYWNlXG4gICAgICAgICAgICAgICAgcmVzdWx0W29wdGlvbk5hbWVdID0gdGhpcy5vcHRzW29wdGlvbk5hbWVdO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0IGFzIFJ1bm5lclJ1bk9wdGlvbnM7XG4gICAgfVxufVxuIl19
|
|
334
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJndW1lbnQtcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS9hcmd1bWVudC1wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBa0M7QUFDbEMseUNBQTRDO0FBQzVDLG9EQUE0QjtBQUM1QiwyREFBc0Q7QUFDdEQsK0NBQWlEO0FBQ2pELDJDQUFpRDtBQUNqRCx1RUFBbUU7QUFDbkUscUZBQTJEO0FBQzNELDRDQUE0RDtBQUM1RCxzREFTOEI7QUFFOUIsMkVBQWlEO0FBQ2pELHVHQUErRTtBQUMvRSx5RkFBaUU7QUFNakUsdUdBQStFO0FBQy9FLG1FQUFzRTtBQUd0RSxNQUFNLGVBQWUsR0FBRyxxQkFBcUIsQ0FBQztBQUU5QyxNQUFNLFdBQVcsR0FBRyxnQkFBTSxDQUFDOzs7Ozs7Ozs7Ozs7O0NBYTFCLENBQUMsQ0FBQztBQXVDSCxNQUFxQixpQkFBaUI7SUFPbEMsWUFBb0IsR0FBWTtRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFRLElBQUksbUJBQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsR0FBRyxHQUFZLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLFdBQVcsR0FBSSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBVyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBVyxFQUFFLENBQUM7UUFFdkIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBRSxLQUFhO1FBQzFDLDRCQUFVLENBQUMsb0JBQUUsQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdkUsT0FBTyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTyxNQUFN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QztRQUVuQywwQkFBZ0IsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDbEMsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLElBQUk7Z0JBQ3ZCLDJEQUEyRDtnQkFDM0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQTBCLENBQUM7SUFDdEMsQ0FBQztDQUNKO0FBallELG9DQWlZQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGhhcywgc2V0IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IENvbW1hbmQsIE9wdGlvbiB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgZGVkZW50IGZyb20gJ2RlZGVudCc7XG5pbXBvcnQgeyByZWFkU3luYyBhcyByZWFkIH0gZnJvbSAncmVhZC1maWxlLXJlbGF0aXZlJztcbmltcG9ydCB7IEdlbmVyYWxFcnJvciB9IGZyb20gJy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCB7IGFzc2VydFR5cGUsIGlzIH0gZnJvbSAnLi4vZXJyb3JzL3J1bnRpbWUvdHlwZS1hc3NlcnRpb25zJztcbmltcG9ydCBnZXRWaWV3UG9ydFdpZHRoIGZyb20gJy4uL3V0aWxzL2dldC12aWV3cG9ydC13aWR0aCc7XG5pbXBvcnQgeyB3b3JkV3JhcCwgc3BsaXRRdW90ZWRUZXh0IH0gZnJvbSAnLi4vdXRpbHMvc3RyaW5nJztcbmltcG9ydCB7XG4gICAgZ2V0U1NMT3B0aW9ucyxcbiAgICBnZXRRdWFyYW50aW5lT3B0aW9ucyxcbiAgICBnZXRTY3JlZW5zaG90T3B0aW9ucyxcbiAgICBnZXRWaWRlb09wdGlvbnMsXG4gICAgZ2V0TWV0YU9wdGlvbnMsXG4gICAgZ2V0R3JlcE9wdGlvbnMsXG4gICAgZ2V0Q29tcGlsZXJPcHRpb25zLFxuICAgIGdldERhc2hib2FyZE9wdGlvbnMsXG59IGZyb20gJy4uL3V0aWxzL2dldC1vcHRpb25zJztcblxuaW1wb3J0IGdldEZpbHRlckZuIGZyb20gJy4uL3V0aWxzL2dldC1maWx0ZXItZm4nO1xuaW1wb3J0IFNDUkVFTlNIT1RfT1BUSU9OX05BTUVTIGZyb20gJy4uL2NvbmZpZ3VyYXRpb24vc2NyZWVuc2hvdC1vcHRpb24tbmFtZXMnO1xuaW1wb3J0IFJVTl9PUFRJT05fTkFNRVMgZnJvbSAnLi4vY29uZmlndXJhdGlvbi9ydW4tb3B0aW9uLW5hbWVzJztcbmltcG9ydCB7XG4gICAgRGljdGlvbmFyeSxcbiAgICBSZXBvcnRlck9wdGlvbixcbiAgICBSdW5uZXJSdW5PcHRpb25zLFxufSBmcm9tICcuLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IFFVQVJBTlRJTkVfT1BUSU9OX05BTUVTIGZyb20gJy4uL2NvbmZpZ3VyYXRpb24vcXVhcmFudGluZS1vcHRpb24tbmFtZXMnO1xuaW1wb3J0IHsgZXh0cmFjdE5vZGVQcm9jZXNzQXJndW1lbnRzIH0gZnJvbSAnLi9ub2RlLWFyZ3VtZW50cy1maWx0ZXInO1xuXG5cbmNvbnN0IFJFTU9URV9BTElBU19SRSA9IC9ecmVtb3RlKD86OihcXGQqKSk/JC87XG5cbmNvbnN0IERFU0NSSVBUSU9OID0gZGVkZW50KGBcbiAgICBJbiB0aGUgYnJvd3NlciBsaXN0LCB5b3UgY2FuIHVzZSBicm93c2VyIG5hbWVzIChlLmcuIFwiaWVcIiwgXCJjaHJvbWVcIiwgZXRjLikgYXMgd2VsbCBhcyBwYXRocyB0byBleGVjdXRhYmxlcy5cblxuICAgIFRvIHJ1biB0ZXN0cyBhZ2FpbnN0IGFsbCBpbnN0YWxsZWQgYnJvd3NlcnMsIHVzZSB0aGUgXCJhbGxcIiBhbGlhcy5cblxuICAgIFRvIHVzZSBhIHJlbW90ZSBicm93c2VyIGNvbm5lY3Rpb24gKGUuZy4sIHRvIGNvbm5lY3QgYSBtb2JpbGUgZGV2aWNlKSwgc3BlY2lmeSBcInJlbW90ZVwiIGFzIHRoZSBicm93c2VyIGFsaWFzLlxuICAgIElmIHlvdSBuZWVkIHRvIGNvbm5lY3QgbXVsdGlwbGUgZGV2aWNlcywgYWRkIGEgY29sb24gYW5kIHRoZSBudW1iZXIgb2YgYnJvd3NlcnMgeW91IHdhbnQgdG8gY29ubmVjdCAoZS5nLiwgXCJyZW1vdGU6M1wiKS5cblxuICAgIFRvIHJ1biB0ZXN0cyBpbiBhIGJyb3dzZXIgYWNjZXNzZWQgdGhyb3VnaCBhIGJyb3dzZXIgcHJvdmlkZXIgcGx1Z2luLCBzcGVjaWZ5IGEgYnJvd3NlciBhbGlhcyB0aGF0IGNvbnNpc3RzIG9mIHR3byBwYXJ0cyAtIHRoZSBicm93c2VyIHByb3ZpZGVyIG5hbWUgcHJlZml4IGFuZCB0aGUgbmFtZSBvZiB0aGUgYnJvd3NlciBpdHNlbGY7IGZvciBleGFtcGxlLCBcInNhdWNlbGFiczpjaHJvbWVANTFcIi5cblxuICAgIFlvdSBjYW4gdXNlIG9uZSBvciBtb3JlIGZpbGUgcGF0aHMgb3IgZ2xvYiBwYXR0ZXJucyB0byBzcGVjaWZ5IHdoaWNoIHRlc3RzIHRvIHJ1bi5cblxuICAgIE1vcmUgaW5mbzogaHR0cHM6Ly9kZXZleHByZXNzLmdpdGh1Yi5pby90ZXN0Y2FmZS9kb2N1bWVudGF0aW9uXG5gKTtcblxuaW50ZXJmYWNlIENvbW1hbmRMaW5lT3B0aW9ucyB7XG4gICAgdGVzdEdyZXA/OiBzdHJpbmcgfCBSZWdFeHA7XG4gICAgZml4dHVyZUdyZXA/OiBzdHJpbmcgfCBSZWdFeHA7XG4gICAgc3JjPzogc3RyaW5nW107XG4gICAgYnJvd3NlcnM/OiBzdHJpbmdbXTtcbiAgICBsaXN0QnJvd3NlcnM/OiBib29sZWFuIHwgc3RyaW5nO1xuICAgIHRlc3RNZXRhPzogc3RyaW5nIHwgRGljdGlvbmFyeTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcbiAgICBmaXh0dXJlTWV0YT86IHN0cmluZyB8IERpY3Rpb25hcnk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj47XG4gICAgZmlsdGVyPzogRnVuY3Rpb247XG4gICAgYXBwSW5pdERlbGF5Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGFzc2VydGlvblRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgc2VsZWN0b3JUaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHNwZWVkPzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHBhZ2VMb2FkVGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBwYWdlUmVxdWVzdFRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgYWpheFJlcXVlc3RUaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGJyb3dzZXJJbml0VGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICB0ZXN0RXhlY3V0aW9uVGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBydW5FeGVjdXRpb25UaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGNvbmN1cnJlbmN5Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHF1YXJhbnRpbmVNb2RlPzogYm9vbGVhbiB8IERpY3Rpb25hcnk8c3RyaW5nIHwgbnVtYmVyPjtcbiAgICBwb3J0cz86IHN0cmluZyB8IG51bWJlcltdO1xuICAgIHByb3ZpZGVyTmFtZT86IHN0cmluZztcbiAgICBzc2w/OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gPjtcbiAgICByZXBvcnRlcj86IHN0cmluZyB8IFJlcG9ydGVyT3B0aW9uW107XG4gICAgc2NyZWVuc2hvdHM/OiBEaWN0aW9uYXJ5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+IHwgc3RyaW5nO1xuICAgIHNjcmVlbnNob3RQYXRoUGF0dGVybj86IHN0cmluZztcbiAgICBzY3JlZW5zaG90c09uRmFpbHM/OiBib29sZWFuO1xuICAgIHZpZGVvT3B0aW9ucz86IHN0cmluZyB8IERpY3Rpb25hcnk8bnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbj47XG4gICAgdmlkZW9FbmNvZGluZ09wdGlvbnM/OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW4+O1xuICAgIGNvbXBpbGVyT3B0aW9ucz86IHN0cmluZyB8IERpY3Rpb25hcnk8bnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbj47XG4gICAgY29uZmlnRmlsZT86IHN0cmluZztcbiAgICBwcm94eWxlc3M/OiBib29sZWFuO1xuICAgIHY4RmxhZ3M/OiBzdHJpbmdbXTtcbiAgICBkYXNoYm9hcmRPcHRpb25zPyA6IHN0cmluZyB8IERpY3Rpb25hcnk8c3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlcj47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENMSUFyZ3VtZW50UGFyc2VyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2dyYW06IENvbW1hbmQ7XG4gICAgcHJpdmF0ZSBjd2Q6IHN0cmluZztcbiAgICBwcml2YXRlIHJlbW90ZUNvdW50OiBudW1iZXI7XG4gICAgcHVibGljIG9wdHM6IENvbW1hbmRMaW5lT3B0aW9ucztcbiAgICBwdWJsaWMgYXJnczogc3RyaW5nW107XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGN3ZD86IHN0cmluZykge1xuICAgICAgICB0aGlzLnByb2dyYW0gICAgICA9IG5ldyBDb21tYW5kKCd0ZXN0Y2FmZScpO1xuICAgICAgICB0aGlzLmN3ZCAgICAgICAgICA9IGN3ZCB8fCBwcm9jZXNzLmN3ZCgpO1xuICAgICAgICB0aGlzLnJlbW90ZUNvdW50ICA9IDA7XG4gICAgICAgIHRoaXMub3B0cyAgICAgICAgID0ge307XG4gICAgICAgIHRoaXMuYXJncyAgICAgICAgID0gW107XG5cbiAgICAgICAgdGhpcy5fZGVzY3JpYmVQcm9ncmFtKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX3BhcnNlUG9ydE51bWJlciAodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgcG9ydCBudW1iZXInLCB2YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX2dldERlc2NyaXB0aW9uICgpOiBzdHJpbmcge1xuICAgICAgICAvLyBOT1RFOiBhZGQgZW1wdHkgbGluZSB0byB3b3JrYXJvdW5kIGNvbW1hbmRlci1mb3JjZWQgaW5kZW50YXRpb24gb24gdGhlIGZpcnN0IGxpbmUuXG4gICAgICAgIHJldHVybiAnXFxuJyArIHdvcmRXcmFwKERFU0NSSVBUSU9OLCAyLCBnZXRWaWV3UG9ydFdpZHRoKHByb2Nlc3Muc3Rkb3V0KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGVzY3JpYmVQcm9ncmFtICgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmVyc2lvbiA9IEpTT04ucGFyc2UocmVhZCgnLi4vLi4vcGFja2FnZS5qc29uJykgYXMgc3RyaW5nKS52ZXJzaW9uO1xuXG4gICAgICAgIHRoaXMucHJvZ3JhbVxuICAgICAgICAgICAgLnZlcnNpb24odmVyc2lvbiwgJy12LCAtLXZlcnNpb24nKVxuICAgICAgICAgICAgLnVzYWdlKCdbb3B0aW9uc10gPGNvbW1hLXNlcGFyYXRlZC1icm93c2VyLWxpc3Q+IDxmaWxlLW9yLWdsb2IgLi4uPicpXG4gICAgICAgICAgICAuZGVzY3JpcHRpb24oQ0xJQXJndW1lbnRQYXJzZXIuX2dldERlc2NyaXB0aW9uKCkpXG5cbiAgICAgICAgICAgIC5hbGxvd1Vua25vd25PcHRpb24oKVxuICAgICAgICAgICAgLm9wdGlvbignLWIsIC0tbGlzdC1icm93c2VycyBbcHJvdmlkZXJdJywgJ291dHB1dCB0aGUgYWxpYXNlcyBmb3IgbG9jYWwgYnJvd3NlcnMgb3IgYnJvd3NlcnMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIHNwZWNpZmllZCBicm93c2VyIHByb3ZpZGVyJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1yLCAtLXJlcG9ydGVyIDxuYW1lWzpvdXRwdXRGaWxlXVssLi4uXT4nLCAnc3BlY2lmeSB0aGUgcmVwb3J0ZXJzIGFuZCBvcHRpb25hbGx5IGZpbGVzIHdoZXJlIHJlcG9ydHMgYXJlIHNhdmVkJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1zLCAtLXNjcmVlbnNob3RzIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgc2NyZWVuc2hvdCBvcHRpb25zJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1TLCAtLXNjcmVlbnNob3RzLW9uLWZhaWxzJywgJ3Rha2UgYSBzY3JlZW5zaG90IHdoZW5ldmVyIGEgdGVzdCBmYWlscycpXG4gICAgICAgICAgICAub3B0aW9uKCctcCwgLS1zY3JlZW5zaG90LXBhdGgtcGF0dGVybiA8cGF0dGVybj4nLCAndXNlIHBhdHRlcm5zIHRvIGNvbXBvc2Ugc2NyZWVuc2hvdCBmaWxlIG5hbWVzIGFuZCBwYXRoczogJHtCUk9XU0VSfSwgJHtCUk9XU0VSX1ZFUlNJT059LCAke09TfSwgZXRjLicpXG4gICAgICAgICAgICAub3B0aW9uKCctcSwgLS1xdWFyYW50aW5lLW1vZGUgW29wdGlvbj12YWx1ZSwuLi5dJywgJ2VuYWJsZSBxdWFyYW50aW5lIG1vZGUgYW5kIChvcHRpb25hbGx5KSBtb2RpZnkgcXVhcmFudGluZSBtb2RlIHNldHRpbmdzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1kLCAtLWRlYnVnLW1vZGUnLCAnZXhlY3V0ZSB0ZXN0IHN0ZXBzIG9uZSBieSBvbmUgcGF1c2luZyB0aGUgdGVzdCBhZnRlciBlYWNoIHN0ZXAnKVxuICAgICAgICAgICAgLm9wdGlvbignLWUsIC0tc2tpcC1qcy1lcnJvcnMnLCAnbWFrZSB0ZXN0cyBub3QgZmFpbCB3aGVuIGEgSlMgZXJyb3IgaGFwcGVucyBvbiBhIHBhZ2UnKVxuICAgICAgICAgICAgLm9wdGlvbignLXUsIC0tc2tpcC11bmNhdWdodC1lcnJvcnMnLCAnaWdub3JlIHVuY2F1Z2h0IGVycm9ycyBhbmQgdW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9ucywgd2hpY2ggb2NjdXIgZHVyaW5nIHRlc3QgZXhlY3V0aW9uJylcbiAgICAgICAgICAgIC5vcHRpb24oJy10LCAtLXRlc3QgPG5hbWU+JywgJ3J1biBvbmx5IHRlc3RzIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1ULCAtLXRlc3QtZ3JlcCA8cGF0dGVybj4nLCAncnVuIG9ubHkgdGVzdHMgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCBwYXR0ZXJuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1mLCAtLWZpeHR1cmUgPG5hbWU+JywgJ3J1biBvbmx5IGZpeHR1cmVzIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1GLCAtLWZpeHR1cmUtZ3JlcCA8cGF0dGVybj4nLCAncnVuIG9ubHkgZml4dHVyZXMgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCBwYXR0ZXJuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1hLCAtLWFwcCA8Y29tbWFuZD4nLCAnbGF1bmNoIHRoZSB0ZXN0ZWQgYXBwIHVzaW5nIHRoZSBzcGVjaWZpZWQgY29tbWFuZCBiZWZvcmUgcnVubmluZyB0ZXN0cycpXG4gICAgICAgICAgICAub3B0aW9uKCctYywgLS1jb25jdXJyZW5jeSA8bnVtYmVyPicsICdydW4gdGVzdHMgY29uY3VycmVudGx5JylcbiAgICAgICAgICAgIC5vcHRpb24oJy1MLCAtLWxpdmUnLCAnZW5hYmxlIGxpdmUgbW9kZS4gSW4gdGhpcyBtb2RlLCBUZXN0Q2FmZSB3YXRjaGVzIGZvciBjaGFuZ2VzIHlvdSBtYWtlIGluIHRoZSB0ZXN0IGZpbGVzLiBUaGVzZSBjaGFuZ2VzIGltbWVkaWF0ZWx5IHJlc3RhcnQgdGhlIHRlc3RzIHNvIHRoYXQgeW91IGNhbiBzZWUgdGhlIGVmZmVjdC4nKVxuICAgICAgICAgICAgLm9wdGlvbignLS10ZXN0LW1ldGEgPGtleT12YWx1ZVssa2V5Mj12YWx1ZTIsLi4uXT4nLCAncnVuIG9ubHkgdGVzdHMgd2l0aCBtYXRjaGluZyBtZXRhZGF0YScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWZpeHR1cmUtbWV0YSA8a2V5PXZhbHVlWyxrZXkyPXZhbHVlMiwuLi5dPicsICdydW4gb25seSBmaXh0dXJlcyB3aXRoIG1hdGNoaW5nIG1ldGFkYXRhJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZGVidWctb24tZmFpbCcsICdwYXVzZSB0aGUgdGVzdCBpZiBpdCBmYWlscycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWFwcC1pbml0LWRlbGF5IDxtcz4nLCAnc3BlY2lmeSBob3cgbXVjaCB0aW1lIGl0IHRha2VzIGZvciB0aGUgdGVzdGVkIGFwcCB0byBpbml0aWFsaXplJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tc2VsZWN0b3ItdGltZW91dCA8bXM+JywgJ3NwZWNpZnkgdGhlIHRpbWUgd2l0aGluIHdoaWNoIHNlbGVjdG9ycyBtYWtlIGF0dGVtcHRzIHRvIG9idGFpbiBhIG5vZGUgdG8gYmUgcmV0dXJuZWQnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1hc3NlcnRpb24tdGltZW91dCA8bXM+JywgJ3NwZWNpZnkgdGhlIHRpbWUgd2l0aGluIHdoaWNoIGFzc2VydGlvbiBzaG91bGQgcGFzcycpXG4gICAgICAgICAgICAub3B0aW9uKCctLXBhZ2UtbG9hZC10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgdGltZSB3aXRoaW4gd2hpY2ggVGVzdENhZmUgd2FpdHMgZm9yIHRoZSBgd2luZG93LmxvYWRgIGV2ZW50IHRvIGZpcmUgb24gcGFnZSBsb2FkIGJlZm9yZSBwcm9jZWVkaW5nIHRvIHRoZSBuZXh0IHRlc3QgYWN0aW9uJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcGFnZS1yZXF1ZXN0LXRpbWVvdXQgPG1zPicsIFwic3BlY2lmaWVzIHRoZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyB0byBjb21wbGV0ZSB0aGUgcmVxdWVzdCBmb3IgdGhlIHBhZ2UncyBIVE1MXCIpXG4gICAgICAgICAgICAub3B0aW9uKCctLWFqYXgtcmVxdWVzdC10aW1lb3V0IDxtcz4nLCAnc3BlY2lmaWVzIHRoZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyB0byBjb21wbGV0ZSB0aGUgQUpBWCByZXF1ZXN0cyAoWEhSIG9yIGZldGNoKScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWJyb3dzZXItaW5pdC10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgdGltZSAoaW4gbWlsbGlzZWNvbmRzKSBUZXN0Q2FmZSB3YWl0cyBmb3IgdGhlIGJyb3dzZXIgdG8gc3RhcnQnKVxuICAgICAgICAgICAgLm9wdGlvbignLS10ZXN0LWV4ZWN1dGlvbi10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgdGltZSAoaW4gbWlsbGlzZWNvbmRzKSBUZXN0Q2FmZSB3YWl0cyBmb3IgdGhlIHRlc3QgZXhlY3V0ZWQnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1ydW4tZXhlY3V0aW9uLXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSB0aW1lIChpbiBtaWxsaXNlY29uZHMpIFRlc3RDYWZlIHdhaXRzIGZvciB0aGUgYWxsIHRlc3QgZXhlY3V0ZWQnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zcGVlZCA8ZmFjdG9yPicsICdzZXQgdGhlIHNwZWVkIG9mIHRlc3QgZXhlY3V0aW9uICgwLjAxIC4uLiAxKScpXG4gICAgICAgICAgICAub3B0aW9uKCctLXBvcnRzIDxwb3J0MSxwb3J0Mj4nLCAnc3BlY2lmeSBjdXN0b20gcG9ydCBudW1iZXJzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0taG9zdG5hbWUgPG5hbWU+JywgJ3NwZWNpZnkgdGhlIGhvc3RuYW1lJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcHJveHkgPGhvc3Q+JywgJ3NwZWNpZnkgdGhlIGhvc3Qgb2YgdGhlIHByb3h5IHNlcnZlcicpXG4gICAgICAgICAgICAub3B0aW9uKCctLXByb3h5LWJ5cGFzcyA8cnVsZXM+JywgJ3NwZWNpZnkgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBydWxlcyB0aGF0IGRlZmluZSBVUkxzIGFjY2Vzc2VkIGJ5cGFzc2luZyB0aGUgcHJveHkgc2VydmVyJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tc3NsIDxvcHRpb25zPicsICdzcGVjaWZ5IFNTTCBvcHRpb25zIHRvIHJ1biBUZXN0Q2FmZSBwcm94eSBzZXJ2ZXIgb3ZlciB0aGUgSFRUUFMgcHJvdG9jb2wnKVxuICAgICAgICAgICAgLm9wdGlvbignLS12aWRlbyA8cGF0aD4nLCAncmVjb3JkIHZpZGVvcyBvZiB0ZXN0IHJ1bnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS12aWRlby1vcHRpb25zIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgdmlkZW8gcmVjb3JkaW5nIG9wdGlvbnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS12aWRlby1lbmNvZGluZy1vcHRpb25zIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgZW5jb2Rpbmcgb3B0aW9ucycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRldicsICdlbmFibGVzIG1lY2hhbmlzbXMgdG8gbG9nIGFuZCBkaWFnbm9zZSBlcnJvcnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1xci1jb2RlJywgJ291dHB1dHMgUVItY29kZSB0aGF0IHJlcGVhdHMgVVJMcyB1c2VkIHRvIGNvbm5lY3QgdGhlIHJlbW90ZSBicm93c2VycycpXG4gICAgICAgICAgICAub3B0aW9uKCctLXNmLCAtLXN0b3Atb24tZmlyc3QtZmFpbCcsICdzdG9wIGFuIGVudGlyZSB0ZXN0IHJ1biBpZiBhbnkgdGVzdCBmYWlscycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWNvbmZpZy1maWxlIDxwYXRoPicsICdzcGVjaWZ5IGEgY3VzdG9tIHBhdGggdG8gdGhlIHRlc3RjYWZlIGNvbmZpZ3VyYXRpb24gZmlsZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLXRzLWNvbmZpZy1wYXRoIDxwYXRoPicsICd1c2UgYSBjdXN0b20gVHlwZVNjcmlwdCBjb25maWd1cmF0aW9uIGZpbGUgYW5kIHNwZWNpZnkgaXRzIGxvY2F0aW9uJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tY3MsIC0tY2xpZW50LXNjcmlwdHMgPHBhdGhzPicsICdpbmplY3Qgc2NyaXB0cyBpbnRvIHRlc3RlZCBwYWdlcycsIHRoaXMuX3BhcnNlTGlzdCwgW10pXG4gICAgICAgICAgICAub3B0aW9uKCctLWRpc2FibGUtcGFnZS1jYWNoaW5nJywgJ2Rpc2FibGUgcGFnZSBjYWNoaW5nIGR1cmluZyB0ZXN0IGV4ZWN1dGlvbicpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRpc2FibGUtcGFnZS1yZWxvYWRzJywgJ2Rpc2FibGUgcGFnZSByZWxvYWRzIGJldHdlZW4gdGVzdHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1yZXRyeS10ZXN0LXBhZ2VzJywgJ3JldHJ5IG5ldHdvcmsgcmVxdWVzdHMgdG8gdGVzdCBwYWdlcyBkdXJpbmcgdGVzdCBleGVjdXRpb24nKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kaXNhYmxlLXNjcmVlbnNob3RzJywgJ2Rpc2FibGUgc2NyZWVuc2hvdHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zY3JlZW5zaG90cy1mdWxsLXBhZ2UnLCAnZW5hYmxlIGZ1bGwtcGFnZSBzY3JlZW5zaG90cycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWNvbXBpbGVyLW9wdGlvbnMgPG9wdGlvbj12YWx1ZVssLi4uXT4nLCAnc3BlY2lmeSB0ZXN0IGZpbGUgY29tcGlsZXIgb3B0aW9ucycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRpc2FibGUtbXVsdGlwbGUtd2luZG93cycsICdkaXNhYmxlIG11bHRpcGxlIHdpbmRvd3MgbW9kZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRpc2FibGUtaHR0cDInLCAnZGlzYWJsZSB0aGUgSFRUUC8yIHByb3h5IGJhY2tlbmQgYW5kIGZvcmNlIHRoZSBwcm94eSB0byB1c2Ugb25seSBIVFRQLzEuMSByZXF1ZXN0cycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWNhY2hlJywgJ2NhY2hlIHdlYiBhc3NldHMgYmV0d2VlbiB0ZXN0IHJ1bnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLUQsIC0tZGFzaGJvYXJkLW9wdGlvbnMgPG9wdGlvbj12YWx1ZVssLi4uXT4nLCAnc3BlY2lmeSBEYXNoYm9hcmQgb3B0aW9ucycpXG5cbiAgICAgICAgICAgIC8vIE5PVEU6IHRoZXNlIG9wdGlvbnMgd2lsbCBiZSBoYW5kbGVkIGJ5IGNoYWxrIGludGVybmFsbHlcbiAgICAgICAgICAgIC5vcHRpb24oJy0tY29sb3InLCAnZm9yY2UgY29sb3JzIGluIGNvbW1hbmQgbGluZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLW5vLWNvbG9yJywgJ2Rpc2FibGUgY29sb3JzIGluIGNvbW1hbmQgbGluZScpXG5cbiAgICAgICAgICAgIC8vIE5PVEU6IHRlbXBvcmFyeSBoaWRlIGV4cGVyaW1lbnRhbCBvcHRpb25zIGZyb20gLS1oZWxwIGNvbW1hbmRcbiAgICAgICAgICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1wcm94eWxlc3MnLCAnZXhwZXJpbWVudGFsJykuaGlkZUhlbHAoKSlcbiAgICAgICAgICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1leHBlcmltZW50YWwtZGVidWcnLCAnZW5hYmxlIGV4cGVyaW1lbnRhbCBkZWJ1ZyBtb2RlJykuaGlkZUhlbHAoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VMaXN0ICh2YWw6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHZhbC5zcGxpdCgnLCcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NoZWNrQW5kQ291bnRSZW1vdGVzIChicm93c2VyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgcmVtb3RlTWF0Y2ggPSBicm93c2VyLm1hdGNoKFJFTU9URV9BTElBU19SRSk7XG5cbiAgICAgICAgaWYgKHJlbW90ZU1hdGNoKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW90ZUNvdW50ICs9IHBhcnNlSW50KHJlbW90ZU1hdGNoWzFdLCAxMCkgfHwgMTtcblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIF9wYXJzZUZpbHRlcmluZ09wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnRlc3RHcmVwKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnRlc3RHcmVwID0gZ2V0R3JlcE9wdGlvbnMoJy0tdGVzdC1ncmVwJywgdGhpcy5vcHRzLnRlc3RHcmVwIGFzIHN0cmluZyk7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0cy5maXh0dXJlR3JlcClcbiAgICAgICAgICAgIHRoaXMub3B0cy5maXh0dXJlR3JlcCA9IGdldEdyZXBPcHRpb25zKCctLWZpeHR1cmUtZ3JlcCcsIHRoaXMub3B0cy5maXh0dXJlR3JlcCBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdHMudGVzdE1ldGEpXG4gICAgICAgICAgICB0aGlzLm9wdHMudGVzdE1ldGEgPSBhd2FpdCBnZXRNZXRhT3B0aW9ucygnLS10ZXN0LW1ldGEnLCB0aGlzLm9wdHMudGVzdE1ldGEgYXMgc3RyaW5nKTtcblxuICAgICAgICBpZiAodGhpcy5vcHRzLmZpeHR1cmVNZXRhKVxuICAgICAgICAgICAgdGhpcy5vcHRzLmZpeHR1cmVNZXRhID0gYXdhaXQgZ2V0TWV0YU9wdGlvbnMoJy0tZml4dHVyZS1tZXRhJywgdGhpcy5vcHRzLmZpeHR1cmVNZXRhIGFzIHN0cmluZyk7XG5cbiAgICAgICAgdGhpcy5vcHRzLmZpbHRlciA9IGdldEZpbHRlckZuKHRoaXMub3B0cyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VBcHBJbml0RGVsYXkgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLmFwcEluaXREZWxheSkge1xuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSB0ZXN0ZWQgYXBwIGluaXRpYWxpemF0aW9uIGRlbGF5JywgdGhpcy5vcHRzLmFwcEluaXREZWxheSk7XG5cbiAgICAgICAgICAgIHRoaXMub3B0cy5hcHBJbml0RGVsYXkgPSBwYXJzZUludCh0aGlzLm9wdHMuYXBwSW5pdERlbGF5IGFzIHN0cmluZywgMTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VTZWxlY3RvclRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnNlbGVjdG9yVGltZW91dCkge1xuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBTZWxlY3RvciB0aW1lb3V0JywgdGhpcy5vcHRzLnNlbGVjdG9yVGltZW91dCk7XG5cbiAgICAgICAgICAgIHRoaXMub3B0cy5zZWxlY3RvclRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMuc2VsZWN0b3JUaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VBc3NlcnRpb25UaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5hc3NlcnRpb25UaW1lb3V0KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIGFzc2VydGlvbiB0aW1lb3V0JywgdGhpcy5vcHRzLmFzc2VydGlvblRpbWVvdXQpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMuYXNzZXJ0aW9uVGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5hc3NlcnRpb25UaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VQYWdlTG9hZFRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnBhZ2VMb2FkVGltZW91dCkge1xuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBwYWdlIGxvYWQgdGltZW91dCcsIHRoaXMub3B0cy5wYWdlTG9hZFRpbWVvdXQpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMucGFnZUxvYWRUaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLnBhZ2VMb2FkVGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlUGFnZVJlcXVlc3RUaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdHMucGFnZVJlcXVlc3RUaW1lb3V0KVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgcGFnZSByZXF1ZXN0IHRpbWVvdXQnLCB0aGlzLm9wdHMucGFnZVJlcXVlc3RUaW1lb3V0KTtcblxuICAgICAgICB0aGlzLm9wdHMucGFnZVJlcXVlc3RUaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLnBhZ2VSZXF1ZXN0VGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUFqYXhSZXF1ZXN0VGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vcHRzLmFqYXhSZXF1ZXN0VGltZW91dClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIEFKQVggcmVxdWVzdCB0aW1lb3V0JywgdGhpcy5vcHRzLmFqYXhSZXF1ZXN0VGltZW91dCk7XG5cbiAgICAgICAgdGhpcy5vcHRzLmFqYXhSZXF1ZXN0VGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5hamF4UmVxdWVzdFRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VCcm93c2VySW5pdFRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMub3B0cy5icm93c2VySW5pdFRpbWVvdXQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBicm93c2VyIGluaXRpYWxpemF0aW9uIHRpbWVvdXQnLCB0aGlzLm9wdHMuYnJvd3NlckluaXRUaW1lb3V0KTtcblxuICAgICAgICB0aGlzLm9wdHMuYnJvd3NlckluaXRUaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLmJyb3dzZXJJbml0VGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVRlc3RFeGVjdXRpb25UaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy50ZXN0RXhlY3V0aW9uVGltZW91dCkge1xuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSB0ZXN0IGV4ZWN1dGlvbiB0aW1lb3V0JywgdGhpcy5vcHRzLnRlc3RFeGVjdXRpb25UaW1lb3V0KTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLnRlc3RFeGVjdXRpb25UaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLnRlc3RFeGVjdXRpb25UaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VSdW5FeGVjdXRpb25UaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5ydW5FeGVjdXRpb25UaW1lb3V0KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIHJ1biBleGVjdXRpb24gdGltZW91dCcsIHRoaXMub3B0cy5ydW5FeGVjdXRpb25UaW1lb3V0KTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLnJ1bkV4ZWN1dGlvblRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMucnVuRXhlY3V0aW9uVGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlU3BlZWQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnNwZWVkKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnNwZWVkID0gcGFyc2VGbG9hdCh0aGlzLm9wdHMuc3BlZWQgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUNvbmN1cnJlbmN5ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5jb25jdXJyZW5jeSlcbiAgICAgICAgICAgIHRoaXMub3B0cy5jb25jdXJyZW5jeSA9IHBhcnNlSW50KHRoaXMub3B0cy5jb25jdXJyZW5jeSBhcyBzdHJpbmcsIDEwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wYXJzZVF1YXJhbnRpbmVPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5xdWFyYW50aW5lTW9kZSlcbiAgICAgICAgICAgIHRoaXMub3B0cy5xdWFyYW50aW5lTW9kZSA9IGF3YWl0IGdldFF1YXJhbnRpbmVPcHRpb25zKCctLXF1YXJhbnRpbmUtbW9kZScsIHRoaXMub3B0cy5xdWFyYW50aW5lTW9kZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VQb3J0cyAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMucG9ydHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZFBvcnRzID0gKHRoaXMub3B0cy5wb3J0cyBhcyBzdHJpbmcpIC8qIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZXh0cmEtcGFyZW5zICovXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAubWFwKENMSUFyZ3VtZW50UGFyc2VyLl9wYXJzZVBvcnROdW1iZXIpO1xuXG4gICAgICAgICAgICBpZiAocGFyc2VkUG9ydHMubGVuZ3RoIDwgMilcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLnBvcnRzT3B0aW9uUmVxdWlyZXNUd29OdW1iZXJzKTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLnBvcnRzID0gcGFyc2VkUG9ydHMgYXMgbnVtYmVyW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUJyb3dzZXJzRnJvbUFyZ3MgKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBicm93c2Vyc0FyZyA9IHRoaXMucHJvZ3JhbS5hcmdzWzBdIHx8ICcnO1xuXG4gICAgICAgIHRoaXMub3B0cy5icm93c2VycyA9IHNwbGl0UXVvdGVkVGV4dChicm93c2Vyc0FyZywgJywnKVxuICAgICAgICAgICAgLmZpbHRlcihicm93c2VyID0+IGJyb3dzZXIgJiYgdGhpcy5fY2hlY2tBbmRDb3VudFJlbW90ZXMoYnJvd3NlcikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBfcGFyc2VTc2xPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5zc2wpXG4gICAgICAgICAgICB0aGlzLm9wdHMuc3NsID0gYXdhaXQgZ2V0U1NMT3B0aW9ucyh0aGlzLm9wdHMuc3NsIGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VSZXBvcnRlcnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCByZXBvcnRlcnMgPSB0aGlzLm9wdHMucmVwb3J0ZXIgPyAodGhpcy5vcHRzLnJlcG9ydGVyIGFzIHN0cmluZykuc3BsaXQoJywnKSA6IFtdOyAvKiBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWV4dHJhLXBhcmVucyovXG5cbiAgICAgICAgdGhpcy5vcHRzLnJlcG9ydGVyID0gcmVwb3J0ZXJzLm1hcCgocmVwb3J0ZXI6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VwYXJhdG9ySW5kZXggPSByZXBvcnRlci5pbmRleE9mKCc6Jyk7XG5cbiAgICAgICAgICAgIGlmIChzZXBhcmF0b3JJbmRleCA8IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgbmFtZTogcmVwb3J0ZXIgfTtcblxuICAgICAgICAgICAgY29uc3QgbmFtZSAgID0gcmVwb3J0ZXIuc3Vic3RyaW5nKDAsIHNlcGFyYXRvckluZGV4KTtcbiAgICAgICAgICAgIGNvbnN0IG91dHB1dCA9IHJlcG9ydGVyLnN1YnN0cmluZyhzZXBhcmF0b3JJbmRleCArIDEpO1xuXG4gICAgICAgICAgICByZXR1cm4geyBuYW1lLCBvdXRwdXQgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VGaWxlTGlzdCAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3B0cy5zcmMgPSB0aGlzLnByb2dyYW0uYXJncy5zbGljZSgxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wYXJzZVNjcmVlbnNob3RPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5zY3JlZW5zaG90cylcbiAgICAgICAgICAgIHRoaXMub3B0cy5zY3JlZW5zaG90cyA9IGF3YWl0IGdldFNjcmVlbnNob3RPcHRpb25zKHRoaXMub3B0cy5zY3JlZW5zaG90cyk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMub3B0cy5zY3JlZW5zaG90cyA9IHt9O1xuXG4gICAgICAgIGlmICghaGFzKHRoaXMub3B0cy5zY3JlZW5zaG90cywgU0NSRUVOU0hPVF9PUFRJT05fTkFNRVMucGF0aFBhdHRlcm4pICYmIHRoaXMub3B0cy5zY3JlZW5zaG90UGF0aFBhdHRlcm4pXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2NyZWVuc2hvdHNbU0NSRUVOU0hPVF9PUFRJT05fTkFNRVMucGF0aFBhdHRlcm5dID0gdGhpcy5vcHRzLnNjcmVlbnNob3RQYXRoUGF0dGVybjtcblxuICAgICAgICBpZiAoIWhhcyh0aGlzLm9wdHMuc2NyZWVuc2hvdHMsIFNDUkVFTlNIT1RfT1BUSU9OX05BTUVTLnRha2VPbkZhaWxzKSAmJiB0aGlzLm9wdHMuc2NyZWVuc2hvdHNPbkZhaWxzKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnNjcmVlbnNob3RzW1NDUkVFTlNIT1RfT1BUSU9OX05BTUVTLnRha2VPbkZhaWxzXSA9IHRoaXMub3B0cy5zY3JlZW5zaG90c09uRmFpbHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VWaWRlb09wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnZpZGVvT3B0aW9ucylcbiAgICAgICAgICAgIHRoaXMub3B0cy52aWRlb09wdGlvbnMgPSBhd2FpdCBnZXRWaWRlb09wdGlvbnModGhpcy5vcHRzLnZpZGVvT3B0aW9ucyBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdHMudmlkZW9FbmNvZGluZ09wdGlvbnMpXG4gICAgICAgICAgICB0aGlzLm9wdHMudmlkZW9FbmNvZGluZ09wdGlvbnMgPSBhd2FpdCBnZXRWaWRlb09wdGlvbnModGhpcy5vcHRzLnZpZGVvRW5jb2RpbmdPcHRpb25zIGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VDb21waWxlck9wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXRoaXMub3B0cy5jb21waWxlck9wdGlvbnMpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcGFyc2VkQ29tcGlsZXJPcHRpb25zID0gYXdhaXQgZ2V0Q29tcGlsZXJPcHRpb25zKHRoaXMub3B0cy5jb21waWxlck9wdGlvbnMgYXMgc3RyaW5nKTtcbiAgICAgICAgY29uc3QgcmVzdWx0Q29tcGlsZXJPcHRpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJzZWRDb21waWxlck9wdGlvbnMpKVxuICAgICAgICAgICAgc2V0KHJlc3VsdENvbXBpbGVyT3B0aW9ucywga2V5LCB2YWx1ZSk7XG5cbiAgICAgICAgdGhpcy5vcHRzLmNvbXBpbGVyT3B0aW9ucyA9IHJlc3VsdENvbXBpbGVyT3B0aW9ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wYXJzZURhc2hib2FyZE9wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLmRhc2hib2FyZE9wdGlvbnMpXG4gICAgICAgICAgICB0aGlzLm9wdHMuZGFzaGJvYXJkT3B0aW9ucyA9IGF3YWl0IGdldERhc2hib2FyZE9wdGlvbnModGhpcy5vcHRzLmRhc2hib2FyZE9wdGlvbnMgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUxpc3RCcm93c2VycyAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxpc3RCcm93c2VyT3B0aW9uID0gdGhpcy5vcHRzLmxpc3RCcm93c2VycztcblxuICAgICAgICB0aGlzLm9wdHMubGlzdEJyb3dzZXJzID0gISF0aGlzLm9wdHMubGlzdEJyb3dzZXJzO1xuXG4gICAgICAgIGlmICghdGhpcy5vcHRzLmxpc3RCcm93c2VycylcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLm9wdHMucHJvdmlkZXJOYW1lID0gdHlwZW9mIGxpc3RCcm93c2VyT3B0aW9uID09PSAnc3RyaW5nJyA/IGxpc3RCcm93c2VyT3B0aW9uIDogJ2xvY2FsbHktaW5zdGFsbGVkJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfcHJlcGFyZVF1YXJhbnRpbmVPcHRpb25zIChhcmd2OiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICAvLyBOT1RFOiBtb3ZlIHRoZSBxdWFyYW50aW5lIG1vZGUgb3B0aW9ucyB0byB0aGUgZW5kIG9mIHRoZSBhcnJheSB0byBhdm9pZCB0aGUgd3JvbmcgcXVhcmFudGluZSBtb2RlIENMSSBvcHRpb25zIHBhcnNpbmcgKEdILTYyMzEpXG4gICAgICAgIGNvbnN0IHF1YXJhbnRpbmVPcHRpb25JbmRleCA9IGFyZ3YuZmluZEluZGV4KFxuICAgICAgICAgICAgZWwgPT4gWyctcScsICctLXF1YXJhbnRpbmUtbW9kZSddLnNvbWUob3B0ID0+IGVsLnN0YXJ0c1dpdGgob3B0KSkpO1xuXG4gICAgICAgIGlmIChxdWFyYW50aW5lT3B0aW9uSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgY29uc3QgaXNOb3RMYXN0T3B0aW9uICAgICAgID0gcXVhcmFudGluZU9wdGlvbkluZGV4IDwgYXJndi5sZW5ndGggLSAxO1xuICAgICAgICAgICAgY29uc3Qgc2hvdWxkTW92ZU9wdGlvblRvRW5kID0gaXNOb3RMYXN0T3B0aW9uICYmXG4gICAgICAgICAgICAgICAgIVtRVUFSQU5USU5FX09QVElPTl9OQU1FUy5hdHRlbXB0TGltaXQsIFFVQVJBTlRJTkVfT1BUSU9OX05BTUVTLnN1Y2Nlc3NUaHJlc2hvbGRdLnNvbWUob3B0ID0+IGFyZ3ZbcXVhcmFudGluZU9wdGlvbkluZGV4ICsgMV0uc3RhcnRzV2l0aChvcHQpKTtcblxuICAgICAgICAgICAgaWYgKHNob3VsZE1vdmVPcHRpb25Ub0VuZClcbiAgICAgICAgICAgICAgICBhcmd2LnB1c2goYXJndi5zcGxpY2UocXVhcmFudGluZU9wdGlvbkluZGV4LCAxKVswXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcGFyc2UgKGFyZ3Y6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIENMSUFyZ3VtZW50UGFyc2VyLl9wcmVwYXJlUXVhcmFudGluZU9wdGlvbnMoYXJndik7XG5cbiAgICAgICAgY29uc3QgeyBhcmdzLCB2OEZsYWdzIH0gPSBleHRyYWN0Tm9kZVByb2Nlc3NBcmd1bWVudHMoYXJndik7XG5cbiAgICAgICAgdGhpcy5wcm9ncmFtLnBhcnNlKGFyZ3MpO1xuXG4gICAgICAgIHRoaXMuYXJncyA9IHRoaXMucHJvZ3JhbS5hcmdzO1xuICAgICAgICB0aGlzLm9wdHMgPSBPYmplY3QuYXNzaWduKHRoaXMucHJvZ3JhbS5vcHRzKCksIHsgdjhGbGFncyB9KTtcblxuICAgICAgICB0aGlzLl9wYXJzZUxpc3RCcm93c2VycygpO1xuXG4gICAgICAgIC8vIE5PVEU6IHRoZSAnLS1saXN0LWJyb3dzZXJzJyBvcHRpb24gb25seSBsaXN0cyBicm93c2VycyBhbmQgaW1tZWRpYXRlbHkgZXhpdHMgdGhlIGFwcC5cbiAgICAgICAgLy8gVGhlcmVmb3JlLCB3ZSBkb24ndCBuZWVkIHRvIHByb2Nlc3Mgb3RoZXIgYXJndW1lbnRzLlxuICAgICAgICBpZiAodGhpcy5vcHRzLmxpc3RCcm93c2VycylcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLl9wYXJzZVNlbGVjdG9yVGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZUFzc2VydGlvblRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VQYWdlTG9hZFRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VQYWdlUmVxdWVzdFRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VBamF4UmVxdWVzdFRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VCcm93c2VySW5pdFRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VUZXN0RXhlY3V0aW9uVGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZVJ1bkV4ZWN1dGlvblRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VBcHBJbml0RGVsYXkoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VTcGVlZCgpO1xuICAgICAgICB0aGlzLl9wYXJzZVBvcnRzKCk7XG4gICAgICAgIHRoaXMuX3BhcnNlQnJvd3NlcnNGcm9tQXJncygpO1xuICAgICAgICB0aGlzLl9wYXJzZUNvbmN1cnJlbmN5KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlRmlsZUxpc3QoKTtcblxuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZUZpbHRlcmluZ09wdGlvbnMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fcGFyc2VRdWFyYW50aW5lT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVNjcmVlbnNob3RPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlVmlkZW9PcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlQ29tcGlsZXJPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlU3NsT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVJlcG9ydGVycygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZURhc2hib2FyZE9wdGlvbnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UnVuT3B0aW9ucyAoKTogUnVubmVyUnVuT3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgICAgUlVOX09QVElPTl9OQU1FUy5mb3JFYWNoKG9wdGlvbk5hbWUgPT4ge1xuICAgICAgICAgICAgaWYgKG9wdGlvbk5hbWUgaW4gdGhpcy5vcHRzKVxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgYSBoYWNrIHRvIGFkZCBhbiBpbmRleCBzaWduYXR1cmUgdG8gaW50ZXJmYWNlXG4gICAgICAgICAgICAgICAgcmVzdWx0W29wdGlvbk5hbWVdID0gdGhpcy5vcHRzW29wdGlvbk5hbWVdO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0IGFzIFJ1bm5lclJ1bk9wdGlvbnM7XG4gICAgfVxufVxuIl19
|
package/lib/cli/cli.js
CHANGED
|
@@ -94,7 +94,7 @@ async function runTests(argParser) {
|
|
|
94
94
|
.startApp(opts.app, opts.appInitDelay)
|
|
95
95
|
.clientScripts(argParser.opts.clientScripts)
|
|
96
96
|
.compilerOptions(argParser.opts.compilerOptions)
|
|
97
|
-
.dashboard(argParser.opts.
|
|
97
|
+
.dashboard(argParser.opts.dashboardOptions);
|
|
98
98
|
runner.once('done-bootstrapping', () => log_1.default.hideSpinner());
|
|
99
99
|
try {
|
|
100
100
|
const runOpts = argParser.getRunOptions();
|
|
@@ -140,4 +140,4 @@ async function listBrowsers(providerName) {
|
|
|
140
140
|
error(err);
|
|
141
141
|
}
|
|
142
142
|
})();
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS9jbGkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsK0NBQTJEO0FBQzNELDJDQUFpRDtBQUNqRCx3RUFBa0Q7QUFDbEQsZ0ZBQXVEO0FBQ3ZELGdEQUF3QjtBQUN4QixzRUFBNkM7QUFDN0Msa0dBQXVFO0FBQ3ZFLDRDQUFpQztBQUNqQyxrREFBMEI7QUFDMUIsbUVBQTBDO0FBRTFDLE1BQU0sTUFBTSxHQUFHLGVBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUVyQyw2REFBNkQ7QUFDN0QsTUFBTSxXQUFXLEdBQVcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzVELE1BQU0sbUJBQW1CLEdBQUcsV0FBVyxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFFcEUsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDN0IsSUFBSSxnQkFBZ0IsR0FBSSxLQUFLLENBQUM7QUFDOUIsSUFBSSxPQUFPLEdBQWEsS0FBSyxDQUFDO0FBRTlCLFNBQVMsV0FBVyxDQUFFLGdCQUFnQjtJQUNsQyxJQUFJLGlCQUFpQixJQUFJLENBQUMsZ0JBQWdCLEVBQUU7UUFDeEMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBRXhCLGFBQUcsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUVsQyxPQUFPLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxhQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDbkQ7SUFFRCxJQUFJLE9BQU8sSUFBSSxnQkFBZ0IsR0FBRyxDQUFDO1FBQy9CLE9BQU87SUFFWCxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBRWYsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1osQ0FBQztBQUVELFNBQVMsSUFBSSxDQUFFLElBQUk7SUFDZixhQUFH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TUFBTSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUMzQixNQUFNLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDOztZQUVoRCxNQUFNLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNqQztJQUNELE9BQU8sR0FBRyxFQUFFO1FBQ1IsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNkO0FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyBHZW5lcmFsRXJyb3IsIEFQSUVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuLi9lcnJvcnMvdHlwZXMnO1xuaW1wb3J0IENsaUFyZ3VtZW50UGFyc2VyIGZyb20gJy4vYXJndW1lbnQtcGFyc2VyJztcbmltcG9ydCBUZXJtaW5hdGlvbkhhbmRsZXIgZnJvbSAnLi90ZXJtaW5hdGlvbi1oYW5kbGVyJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2cnO1xuaW1wb3J0IHJlbW90ZXNXaXphcmQgZnJvbSAnLi9yZW1vdGVzLXdpemFyZCc7XG5pbXBvcnQgY29ycmVjdEJyb3dzZXJzQW5kU291cmNlcyBmcm9tICcuL2NvcnJlY3QtYnJvd3NlcnMtYW5kLXNvdXJjZXMnO1xuaW1wb3J0IGNyZWF0ZVRlc3RDYWZlIGZyb20gJy4uLyc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IGxvZ0VudHJ5IGZyb20gJy4uL3V0aWxzL2xvZy1lbnRyeSc7XG5cbmNvbnN0IExPR0dFUiA9IGRlYnVnKCd0ZXN0Y2FmZTpjbGknKTtcblxuLy8gTk9URTogTG9hZCB0aGUgcHJvdmlkZXIgcG9vbCBsYXppbHkgdG8gcmVkdWNlIHN0YXJ0dXAgdGltZVxuY29uc3QgbGF6eVJlcXVpcmUgICAgICAgICA9IHJlcXVpcmUoJ2ltcG9ydC1sYXp5JykocmVxdWlyZSk7XG5jb25zdCBicm93c2VyUHJvdmlkZXJQb29sID0gbGF6eVJlcXVpcmUoJy4uL2Jyb3dzZXIvcHJvdmlkZXIvcG9vbCcpO1xuXG5sZXQgc2hvd01lc3NhZ2VPbkV4aXQgPSB0cnVlO1xubGV0IGV4aXRNZXNzYWdlU2hvd24gID0gZmFsc2U7XG5sZXQgZXhpdGluZyAgICAgICAgICAgPSBmYWxzZTtcblxuZnVuY3Rpb24gZXhpdEhhbmRsZXIgKHRlcm1pbmF0aW9uTGV2ZWwpIHtcbiAgICBpZiAoc2hvd01lc3NhZ2VPbkV4aXQgJiYgIWV4aXRNZXNzYWdlU2hvd24pIHtcbiAgICAgICAgZXhpdE1lc3NhZ2VTaG93biA9IHRydWU7XG5cbiAgICAgICAgbG9nLndyaXRlKCdTdG9wcGluZyBUZXN0Q2FmZS4uLicpO1xuXG4gICAgICAgIHByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiBsb2cuaGlkZVNwaW5uZXIodHJ1ZSkpO1xuICAgIH1cblxuICAgIGlmIChleGl0aW5nIHx8IHRlcm1pbmF0aW9uTGV2ZWwgPCAyKVxuICAgICAgICByZXR1cm47XG5cbiAgICBleGl0aW5nID0gdHJ1ZTtcblxuICAgIGV4aXQoMCk7XG59XG5cbmZ1bmN0aW9uIGV4aXQgKGNvZGUpIHtcbiAgICBsb2cuaGlkZVNwaW5uZXIodHJ1ZSk7XG5cbiAgICAvLyBOT1RFOiBnaXZlIGEgcHJvY2VzcyB0aW1lIHRvIGZsdXNoIHRoZSBvdXRwdXQuXG4gICAgLy8gSXQncyBuZWNlc3NhcnkgaW4gc29tZSBlbnZpcm9ubWVudHMuXG4gICAgc2V0VGltZW91dCgoKSA9PiBwcm9jZXNzLmV4aXQoY29kZSksIDApO1xufVxuXG5mdW5jdGlvbiBlcnJvciAoZXJyKSB7XG4gICAgbG9nLmhpZGVTcGlubmVyKCk7XG5cbiAgICBsZXQgbWVzc2FnZSA9IG51bGw7XG5cbiAgICBpZiAoZXJyIGluc3RhbmNlb2YgR2VuZXJhbEVycm9yKVxuICAgICAgICBtZXNzYWdlID0gZXJyLm1lc3NhZ2U7XG5cbiAgICBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBBUElFcnJvcilcbiAgICAgICAgbWVzc2FnZSA9IGVyci5jb2xvcmVkU3RhY2s7XG5cbiAgICBlbHNlXG4gICAgICAgIG1lc3NhZ2UgPSBlcnIuc3RhY2s7XG5cbiAgICBsb2cud3JpdGUoY2hhbGsucmVkKCdFUlJPUiAnKSArIG1lc3NhZ2UgKyAnXFxuJyk7XG4gICAgbG9nLndyaXRlKGNoYWxrLmdyYXkoJ1R5cGUgXCJ0ZXN0Y2FmZSAtaFwiIGZvciBoZWxwLicpKTtcblxuICAgIGV4aXQoMSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RzIChhcmdQYXJzZXIpIHtcbiAgICBjb25zdCBvcHRzICAgICAgICAgICAgICA9IGFyZ1BhcnNlci5vcHRzO1xuICAgIGNvbnN0IHBvcnQxICAgICAgICAgICAgID0gb3B0cy5wb3J0cyAmJiBvcHRzLnBvcnRzWzBdO1xuICAgIGNvbnN0IHBvcnQyICAgICAgICAgICAgID0gb3B0cy5wb3J0cyAmJiBvcHRzLnBvcnRzWzFdO1xuICAgIGNvbnN0IHByb3h5ICAgICAgICAgICAgID0gb3B0cy5wcm94eTtcbiAgICBjb25zdCBwcm94eUJ5cGFzcyAgICAgICA9IG9wdHMucHJveHlCeXBhc3M7XG4gICAgY29uc3QgY29uZmlnRmlsZSAgICAgICAgPSBvcHRzLmNvbmZpZ0ZpbGU7XG5cbiAgICBsb2cuc2hvd1NwaW5uZXIoKTtcblxuICAgIGNvbnN0IHsgaG9zdG5hbWUsIHNzbCwgZGV2LCBleHBlcmltZW50YWxEZWJ1ZywgcmV0cnlUZXN0UGFnZXMsIGNhY2hlLCBkaXNhYmxlSHR0cDIsIHY4RmxhZ3MgfSA9IG9wdHM7XG5cbiAgICBjb25zdCB0ZXN0Q2FmZSA9IGF3YWl0IGNyZWF0ZVRlc3RDYWZlKHtcbiAgICAgICAgZGV2ZWxvcG1lbnRNb2RlOiBkZXYsXG5cbiAgICAgICAgaG9zdG5hbWUsXG4gICAgICAgIHBvcnQxLFxuICAgICAgICBwb3J0MixcbiAgICAgICAgc3NsLFxuICAgICAgICBleHBlcmltZW50YWxEZWJ1ZyxcbiAgICAgICAgcmV0cnlUZXN0UGFnZXMsXG4gICAgICAgIGNhY2hlLFxuICAgICAgICBjb25maWdGaWxlLFxuICAgICAgICBkaXNhYmxlSHR0cDIsXG4gICAgICAgIHY4RmxhZ3MsXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb3JyZWN0ZWRCcm93c2Vyc0FuZFNvdXJjZXMgPSBhd2FpdCBjb3JyZWN0QnJvd3NlcnNBbmRTb3VyY2VzKGFyZ1BhcnNlciwgdGVzdENhZmUuY29uZmlndXJhdGlvbik7XG4gICAgY29uc3QgYXV0b21hdGVkQnJvd3NlcnMgICAgICAgICAgID0gY29ycmVjdGVkQnJvd3NlcnNBbmRTb3VyY2VzLmJyb3dzZXJzO1xuICAgIGNvbnN0IHJlbW90ZUJyb3dzZXJzICAgICAgICAgICAgICA9IGF3YWl0IHJlbW90ZXNXaXphcmQodGVzdENhZmUsIGFyZ1BhcnNlci5yZW1vdGVDb3VudCwgb3B0cy5xckNvZGUpO1xuICAgIGNvbnN0IGJyb3dzZXJzICAgICAgICAgICAgICAgICAgICA9IGF1dG9tYXRlZEJyb3dzZXJzLmNvbmNhdChyZW1vdGVCcm93c2Vycyk7XG4gICAgY29uc3Qgc291cmNlcyAgICAgICAgICAgICAgICAgICAgID0gY29ycmVjdGVkQnJvd3NlcnNBbmRTb3VyY2VzLnNvdXJjZXM7XG5cbiAgICBjb25zdCBydW5uZXIgPSBvcHRzLmxpdmUgPyB0ZXN0Q2FmZS5jcmVhdGVMaXZlTW9kZVJ1bm5lcigpIDogdGVzdENhZmUuY3JlYXRlUnVubmVyKCk7XG5cbiAgICBsZXQgZmFpbGVkID0gMDtcblxuICAgIHJ1bm5lci5pc0NsaSA9IHRydWU7XG5cbiAgICBydW5uZXJcbiAgICAgICAgLnVzZVByb3h5KHByb3h5LCBwcm94eUJ5cGFzcylcbiAgICAgICAgLnNyYyhzb3VyY2VzKVxuICAgICAgICAudHNDb25maWdQYXRoKGFyZ1BhcnNlci5vcHRzLnRzQ29uZmlnUGF0aClcbiAgICAgICAgLmJyb3dzZXJzKGJyb3dzZXJzKVxuICAgICAgICAucmVwb3J0ZXIoYXJnUGFyc2VyLm9wdHMucmVwb3J0ZXIpXG4gICAgICAgIC5jb25jdXJyZW5jeShhcmdQYXJzZXIub3B0cy5jb25jdXJyZW5jeSlcbiAgICAgICAgLmZpbHRlcihhcmdQYXJzZXIub3B0cy5maWx0ZXIpXG4gICAgICAgIC52aWRlbyhvcHRzLnZpZGVvLCBvcHRzLnZpZGVvT3B0aW9ucywgb3B0cy52aWRlb0VuY29kaW5nT3B0aW9ucylcbiAgICAgICAgLnNjcmVlbnNob3RzKG9wdHMuc2NyZWVuc2hvdHMpXG4gICAgICAgIC5zdGFydEFwcChvcHRzLmFwcCwgb3B0cy5hcHBJbml0RGVsYXkpXG4gICAgICAgIC5jbGllbnRTY3JpcHRzKGFyZ1BhcnNlci5vcHRzLmNsaWVudFNjcmlwdHMpXG4gICAgICAgIC5jb21waWxlck9wdGlvbnMoYXJnUGFyc2VyLm9wdHMuY29tcGlsZXJPcHRpb25zKVxuICAgICAgICAuZGFzaGJvYXJkKGFyZ1BhcnNlci5vcHRzLmRhc2hib2FyZCk7XG5cbiAgICBydW5uZXIub25jZSgnZG9uZS1ib290c3RyYXBwaW5nJywgKCkgPT4gbG9nLmhpZGVTcGlubmVyKCkpO1xuXG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcnVuT3B0cyA9IGFyZ1BhcnNlci5nZXRSdW5PcHRpb25zKCk7XG5cbiAgICAgICAgZmFpbGVkID0gYXdhaXQgcnVubmVyLnJ1bihydW5PcHRzKTtcbiAgICB9XG5cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgc2hvd01lc3NhZ2VPbkV4aXQgPSBmYWxzZTtcbiAgICAgICAgYXdhaXQgdGVzdENhZmUuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBleGl0KGZhaWxlZCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxpc3RCcm93c2VycyAocHJvdmlkZXJOYW1lKSB7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBhd2FpdCBicm93c2VyUHJvdmlkZXJQb29sLmdldFByb3ZpZGVyKHByb3ZpZGVyTmFtZSk7XG5cbiAgICBpZiAoIXByb3ZpZGVyKVxuICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLmJyb3dzZXJQcm92aWRlck5vdEZvdW5kLCBwcm92aWRlck5hbWUpO1xuXG4gICAgaWYgKHByb3ZpZGVyLmlzTXVsdGlCcm93c2VyKSB7XG4gICAgICAgIGNvbnN0IGJyb3dzZXJOYW1lcyA9IGF3YWl0IHByb3ZpZGVyLmdldEJyb3dzZXJMaXN0KCk7XG5cbiAgICAgICAgYXdhaXQgYnJvd3NlclByb3ZpZGVyUG9vbC5kaXNwb3NlKCk7XG5cbiAgICAgICAgaWYgKHByb3ZpZGVyTmFtZSA9PT0gJ2xvY2FsbHktaW5zdGFsbGVkJylcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGJyb3dzZXJOYW1lcy5qb2luKCdcXG4nKSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGJyb3dzZXJOYW1lcy5tYXAoYnJvd3Nlck5hbWUgPT4gYFwiJHtwcm92aWRlck5hbWV9OiR7YnJvd3Nlck5hbWV9XCJgKS5qb2luKCdcXG4nKSk7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgICAgY29uc29sZS5sb2coYFwiJHtwcm92aWRlck5hbWV9XCJgKTtcblxuICAgIGV4aXQoMCk7XG59XG5cbihhc3luYyBmdW5jdGlvbiBjbGkgKCkge1xuICAgIGNvbnN0IHRlcm1pbmF0aW9uSGFuZGxlciA9IG5ldyBUZXJtaW5hdGlvbkhhbmRsZXIoKTtcblxuICAgIHRlcm1pbmF0aW9uSGFuZGxlci5vbihUZXJtaW5hdGlvbkhhbmRsZXIuVEVSTUlOQVRJT05fTEVWRUxfSU5DUkVBU0VEX0VWRU5ULCBleGl0SGFuZGxlcik7XG5cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBhcmdQYXJzZXIgPSBuZXcgQ2xpQXJndW1lbnRQYXJzZXIoKTtcblxuICAgICAgICBsb2dFbnRyeShMT0dHRVIsIHByb2Nlc3MuYXJndik7XG5cbiAgICAgICAgYXdhaXQgYXJnUGFyc2VyLnBhcnNlKHByb2Nlc3MuYXJndik7XG5cbiAgICAgICAgbG9nRW50cnkoTE9HR0VSLCBhcmdQYXJzZXIub3B0cyk7XG5cbiAgICAgICAgaWYgKGFyZ1BhcnNlci5vcHRzLmxpc3RCcm93c2VycylcbiAgICAgICAgICAgIGF3YWl0IGxpc3RCcm93c2VycyhhcmdQYXJzZXIub3B0cy5wcm92aWRlck5hbWUpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBhd2FpdCBydW5UZXN0cyhhcmdQYXJzZXIpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHNob3dNZXNzYWdlT25FeGl0ID0gZmFsc2U7XG4gICAgICAgIGVycm9yKGVycik7XG4gICAgfVxufSkoKTtcblxuIl19
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS9jbGkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsK0NBQTJEO0FBQzNELDJDQUFpRDtBQUNqRCx3RUFBa0Q7QUFDbEQsZ0ZBQXVEO0FBQ3ZELGdEQUF3QjtBQUN4QixzRUFBNkM7QUFDN0Msa0dBQXVFO0FBQ3ZFLDRDQUFpQztBQUNqQyxrREFBMEI7QUFDMUIsbUVBQTBDO0FBRTFDLE1BQU0sTUFBTSxHQUFHLGVBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUVyQyw2REFBNkQ7QUFDN0QsTUFBTSxXQUFXLEdBQVcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzVELE1BQU0sbUJBQW1CLEdBQUcsV0FBVyxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFFcEUsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDN0IsSUFBSSxnQkFBZ0IsR0FBSSxLQUFLLENBQUM7QUFDOUIsSUFBSSxPQUFPLEdBQWEsS0FBSyxDQUFDO0FBRTlCLFNBQVMsV0FBVyxDQUFFLGdCQUFnQjtJQUNsQyxJQUFJLGlCQUFpQixJQUFJLENBQUMsZ0JBQWdCLEVBQUU7UUFDeEMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBRXhCLGFBQUcsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUVsQyxPQUFPLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxhQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDbkQ7SUFFRCxJQUFJLE9BQU8sSUFBSSxnQkFBZ0IsR0FBRyxDQUFDO1FBQy9CLE9BQU87SUFFWCxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBRWYsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1osQ0FBQztBQUVELFNBQVMsSUFBSSxDQUFFLElBQUk7SUFDZixhQUFH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QyxNQUFNLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWpDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQzNCLE1BQU0sWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7O1lBRWhELE1BQU0sUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQ2pDO0lBQ0QsT0FBTyxHQUFHLEVBQUU7UUFDUixpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ2Q7QUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7IEdlbmVyYWxFcnJvciwgQVBJRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uL2Vycm9ycy90eXBlcyc7XG5pbXBvcnQgQ2xpQXJndW1lbnRQYXJzZXIgZnJvbSAnLi9hcmd1bWVudC1wYXJzZXInO1xuaW1wb3J0IFRlcm1pbmF0aW9uSGFuZGxlciBmcm9tICcuL3Rlcm1pbmF0aW9uLWhhbmRsZXInO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZyc7XG5pbXBvcnQgcmVtb3Rlc1dpemFyZCBmcm9tICcuL3JlbW90ZXMtd2l6YXJkJztcbmltcG9ydCBjb3JyZWN0QnJvd3NlcnNBbmRTb3VyY2VzIGZyb20gJy4vY29ycmVjdC1icm93c2Vycy1hbmQtc291cmNlcyc7XG5pbXBvcnQgY3JlYXRlVGVzdENhZmUgZnJvbSAnLi4vJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgbG9nRW50cnkgZnJvbSAnLi4vdXRpbHMvbG9nLWVudHJ5JztcblxuY29uc3QgTE9HR0VSID0gZGVidWcoJ3Rlc3RjYWZlOmNsaScpO1xuXG4vLyBOT1RFOiBMb2FkIHRoZSBwcm92aWRlciBwb29sIGxhemlseSB0byByZWR1Y2Ugc3RhcnR1cCB0aW1lXG5jb25zdCBsYXp5UmVxdWlyZSAgICAgICAgID0gcmVxdWlyZSgnaW1wb3J0LWxhenknKShyZXF1aXJlKTtcbmNvbnN0IGJyb3dzZXJQcm92aWRlclBvb2wgPSBsYXp5UmVxdWlyZSgnLi4vYnJvd3Nlci9wcm92aWRlci9wb29sJyk7XG5cbmxldCBzaG93TWVzc2FnZU9uRXhpdCA9IHRydWU7XG5sZXQgZXhpdE1lc3NhZ2VTaG93biAgPSBmYWxzZTtcbmxldCBleGl0aW5nICAgICAgICAgICA9IGZhbHNlO1xuXG5mdW5jdGlvbiBleGl0SGFuZGxlciAodGVybWluYXRpb25MZXZlbCkge1xuICAgIGlmIChzaG93TWVzc2FnZU9uRXhpdCAmJiAhZXhpdE1lc3NhZ2VTaG93bikge1xuICAgICAgICBleGl0TWVzc2FnZVNob3duID0gdHJ1ZTtcblxuICAgICAgICBsb2cud3JpdGUoJ1N0b3BwaW5nIFRlc3RDYWZlLi4uJyk7XG5cbiAgICAgICAgcHJvY2Vzcy5vbignZXhpdCcsICgpID0+IGxvZy5oaWRlU3Bpbm5lcih0cnVlKSk7XG4gICAgfVxuXG4gICAgaWYgKGV4aXRpbmcgfHwgdGVybWluYXRpb25MZXZlbCA8IDIpXG4gICAgICAgIHJldHVybjtcblxuICAgIGV4aXRpbmcgPSB0cnVlO1xuXG4gICAgZXhpdCgwKTtcbn1cblxuZnVuY3Rpb24gZXhpdCAoY29kZSkge1xuICAgIGxvZy5oaWRlU3Bpbm5lcih0cnVlKTtcblxuICAgIC8vIE5PVEU6IGdpdmUgYSBwcm9jZXNzIHRpbWUgdG8gZmx1c2ggdGhlIG91dHB1dC5cbiAgICAvLyBJdCdzIG5lY2Vzc2FyeSBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHByb2Nlc3MuZXhpdChjb2RlKSwgMCk7XG59XG5cbmZ1bmN0aW9uIGVycm9yIChlcnIpIHtcbiAgICBsb2cuaGlkZVNwaW5uZXIoKTtcblxuICAgIGxldCBtZXNzYWdlID0gbnVsbDtcblxuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBHZW5lcmFsRXJyb3IpXG4gICAgICAgIG1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcblxuICAgIGVsc2UgaWYgKGVyciBpbnN0YW5jZW9mIEFQSUVycm9yKVxuICAgICAgICBtZXNzYWdlID0gZXJyLmNvbG9yZWRTdGFjaztcblxuICAgIGVsc2VcbiAgICAgICAgbWVzc2FnZSA9IGVyci5zdGFjaztcblxuICAgIGxvZy53cml0ZShjaGFsay5yZWQoJ0VSUk9SICcpICsgbWVzc2FnZSArICdcXG4nKTtcbiAgICBsb2cud3JpdGUoY2hhbGsuZ3JheSgnVHlwZSBcInRlc3RjYWZlIC1oXCIgZm9yIGhlbHAuJykpO1xuXG4gICAgZXhpdCgxKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuVGVzdHMgKGFyZ1BhcnNlcikge1xuICAgIGNvbnN0IG9wdHMgICAgICAgICAgICAgID0gYXJnUGFyc2VyLm9wdHM7XG4gICAgY29uc3QgcG9ydDEgICAgICAgICAgICAgPSBvcHRzLnBvcnRzICYmIG9wdHMucG9ydHNbMF07XG4gICAgY29uc3QgcG9ydDIgICAgICAgICAgICAgPSBvcHRzLnBvcnRzICYmIG9wdHMucG9ydHNbMV07XG4gICAgY29uc3QgcHJveHkgICAgICAgICAgICAgPSBvcHRzLnByb3h5O1xuICAgIGNvbnN0IHByb3h5QnlwYXNzICAgICAgID0gb3B0cy5wcm94eUJ5cGFzcztcbiAgICBjb25zdCBjb25maWdGaWxlICAgICAgICA9IG9wdHMuY29uZmlnRmlsZTtcblxuICAgIGxvZy5zaG93U3Bpbm5lcigpO1xuXG4gICAgY29uc3QgeyBob3N0bmFtZSwgc3NsLCBkZXYsIGV4cGVyaW1lbnRhbERlYnVnLCByZXRyeVRlc3RQYWdlcywgY2FjaGUsIGRpc2FibGVIdHRwMiwgdjhGbGFncyB9ID0gb3B0cztcblxuICAgIGNvbnN0IHRlc3RDYWZlID0gYXdhaXQgY3JlYXRlVGVzdENhZmUoe1xuICAgICAgICBkZXZlbG9wbWVudE1vZGU6IGRldixcblxuICAgICAgICBob3N0bmFtZSxcbiAgICAgICAgcG9ydDEsXG4gICAgICAgIHBvcnQyLFxuICAgICAgICBzc2wsXG4gICAgICAgIGV4cGVyaW1lbnRhbERlYnVnLFxuICAgICAgICByZXRyeVRlc3RQYWdlcyxcbiAgICAgICAgY2FjaGUsXG4gICAgICAgIGNvbmZpZ0ZpbGUsXG4gICAgICAgIGRpc2FibGVIdHRwMixcbiAgICAgICAgdjhGbGFncyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvcnJlY3RlZEJyb3dzZXJzQW5kU291cmNlcyA9IGF3YWl0IGNvcnJlY3RCcm93c2Vyc0FuZFNvdXJjZXMoYXJnUGFyc2VyLCB0ZXN0Q2FmZS5jb25maWd1cmF0aW9uKTtcbiAgICBjb25zdCBhdXRvbWF0ZWRCcm93c2VycyAgICAgICAgICAgPSBjb3JyZWN0ZWRCcm93c2Vyc0FuZFNvdXJjZXMuYnJvd3NlcnM7XG4gICAgY29uc3QgcmVtb3RlQnJvd3NlcnMgICAgICAgICAgICAgID0gYXdhaXQgcmVtb3Rlc1dpemFyZCh0ZXN0Q2FmZSwgYXJnUGFyc2VyLnJlbW90ZUNvdW50LCBvcHRzLnFyQ29kZSk7XG4gICAgY29uc3QgYnJvd3NlcnMgICAgICAgICAgICAgICAgICAgID0gYXV0b21hdGVkQnJvd3NlcnMuY29uY2F0KHJlbW90ZUJyb3dzZXJzKTtcbiAgICBjb25zdCBzb3VyY2VzICAgICAgICAgICAgICAgICAgICAgPSBjb3JyZWN0ZWRCcm93c2Vyc0FuZFNvdXJjZXMuc291cmNlcztcblxuICAgIGNvbnN0IHJ1bm5lciA9IG9wdHMubGl2ZSA/IHRlc3RDYWZlLmNyZWF0ZUxpdmVNb2RlUnVubmVyKCkgOiB0ZXN0Q2FmZS5jcmVhdGVSdW5uZXIoKTtcblxuICAgIGxldCBmYWlsZWQgPSAwO1xuXG4gICAgcnVubmVyLmlzQ2xpID0gdHJ1ZTtcblxuICAgIHJ1bm5lclxuICAgICAgICAudXNlUHJveHkocHJveHksIHByb3h5QnlwYXNzKVxuICAgICAgICAuc3JjKHNvdXJjZXMpXG4gICAgICAgIC50c0NvbmZpZ1BhdGgoYXJnUGFyc2VyLm9wdHMudHNDb25maWdQYXRoKVxuICAgICAgICAuYnJvd3NlcnMoYnJvd3NlcnMpXG4gICAgICAgIC5yZXBvcnRlcihhcmdQYXJzZXIub3B0cy5yZXBvcnRlcilcbiAgICAgICAgLmNvbmN1cnJlbmN5KGFyZ1BhcnNlci5vcHRzLmNvbmN1cnJlbmN5KVxuICAgICAgICAuZmlsdGVyKGFyZ1BhcnNlci5vcHRzLmZpbHRlcilcbiAgICAgICAgLnZpZGVvKG9wdHMudmlkZW8sIG9wdHMudmlkZW9PcHRpb25zLCBvcHRzLnZpZGVvRW5jb2RpbmdPcHRpb25zKVxuICAgICAgICAuc2NyZWVuc2hvdHMob3B0cy5zY3JlZW5zaG90cylcbiAgICAgICAgLnN0YXJ0QXBwKG9wdHMuYXBwLCBvcHRzLmFwcEluaXREZWxheSlcbiAgICAgICAgLmNsaWVudFNjcmlwdHMoYXJnUGFyc2VyLm9wdHMuY2xpZW50U2NyaXB0cylcbiAgICAgICAgLmNvbXBpbGVyT3B0aW9ucyhhcmdQYXJzZXIub3B0cy5jb21waWxlck9wdGlvbnMpXG4gICAgICAgIC5kYXNoYm9hcmQoYXJnUGFyc2VyLm9wdHMuZGFzaGJvYXJkT3B0aW9ucyk7XG5cbiAgICBydW5uZXIub25jZSgnZG9uZS1ib290c3RyYXBwaW5nJywgKCkgPT4gbG9nLmhpZGVTcGlubmVyKCkpO1xuXG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcnVuT3B0cyA9IGFyZ1BhcnNlci5nZXRSdW5PcHRpb25zKCk7XG5cbiAgICAgICAgZmFpbGVkID0gYXdhaXQgcnVubmVyLnJ1bihydW5PcHRzKTtcbiAgICB9XG5cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgc2hvd01lc3NhZ2VPbkV4aXQgPSBmYWxzZTtcbiAgICAgICAgYXdhaXQgdGVzdENhZmUuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBleGl0KGZhaWxlZCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxpc3RCcm93c2VycyAocHJvdmlkZXJOYW1lKSB7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBhd2FpdCBicm93c2VyUHJvdmlkZXJQb29sLmdldFByb3ZpZGVyKHByb3ZpZGVyTmFtZSk7XG5cbiAgICBpZiAoIXByb3ZpZGVyKVxuICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLmJyb3dzZXJQcm92aWRlck5vdEZvdW5kLCBwcm92aWRlck5hbWUpO1xuXG4gICAgaWYgKHByb3ZpZGVyLmlzTXVsdGlCcm93c2VyKSB7XG4gICAgICAgIGNvbnN0IGJyb3dzZXJOYW1lcyA9IGF3YWl0IHByb3ZpZGVyLmdldEJyb3dzZXJMaXN0KCk7XG5cbiAgICAgICAgYXdhaXQgYnJvd3NlclByb3ZpZGVyUG9vbC5kaXNwb3NlKCk7XG5cbiAgICAgICAgaWYgKHByb3ZpZGVyTmFtZSA9PT0gJ2xvY2FsbHktaW5zdGFsbGVkJylcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGJyb3dzZXJOYW1lcy5qb2luKCdcXG4nKSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGJyb3dzZXJOYW1lcy5tYXAoYnJvd3Nlck5hbWUgPT4gYFwiJHtwcm92aWRlck5hbWV9OiR7YnJvd3Nlck5hbWV9XCJgKS5qb2luKCdcXG4nKSk7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgICAgY29uc29sZS5sb2coYFwiJHtwcm92aWRlck5hbWV9XCJgKTtcblxuICAgIGV4aXQoMCk7XG59XG5cbihhc3luYyBmdW5jdGlvbiBjbGkgKCkge1xuICAgIGNvbnN0IHRlcm1pbmF0aW9uSGFuZGxlciA9IG5ldyBUZXJtaW5hdGlvbkhhbmRsZXIoKTtcblxuICAgIHRlcm1pbmF0aW9uSGFuZGxlci5vbihUZXJtaW5hdGlvbkhhbmRsZXIuVEVSTUlOQVRJT05fTEVWRUxfSU5DUkVBU0VEX0VWRU5ULCBleGl0SGFuZGxlcik7XG5cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBhcmdQYXJzZXIgPSBuZXcgQ2xpQXJndW1lbnRQYXJzZXIoKTtcblxuICAgICAgICBsb2dFbnRyeShMT0dHRVIsIHByb2Nlc3MuYXJndik7XG5cbiAgICAgICAgYXdhaXQgYXJnUGFyc2VyLnBhcnNlKHByb2Nlc3MuYXJndik7XG5cbiAgICAgICAgbG9nRW50cnkoTE9HR0VSLCBhcmdQYXJzZXIub3B0cyk7XG5cbiAgICAgICAgaWYgKGFyZ1BhcnNlci5vcHRzLmxpc3RCcm93c2VycylcbiAgICAgICAgICAgIGF3YWl0IGxpc3RCcm93c2VycyhhcmdQYXJzZXIub3B0cy5wcm92aWRlck5hbWUpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBhd2FpdCBydW5UZXN0cyhhcmdQYXJzZXIpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHNob3dNZXNzYWdlT25FeGl0ID0gZmFsc2U7XG4gICAgICAgIGVycm9yKGVycik7XG4gICAgfVxufSkoKTtcblxuIl19
|
|
@@ -4170,7 +4170,8 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
4170
4170
|
var isButton = testCafeCore.domUtils.isButtonElement(activeElement);
|
|
4171
4171
|
var isSafariWithAutoRaisedClick = browserUtils$a.isSafari &&
|
|
4172
4172
|
browserUtils$a.compareVersions([browserUtils$a.webkitVersion, '603.1.30']) >= 0;
|
|
4173
|
-
var
|
|
4173
|
+
var isKeyActivatedInputInFirefox = browserUtils$a.isFirefox && isKeyActivatedInput;
|
|
4174
|
+
var raiseClickOnEnter = (!browserUtils$a.isFirefox || isKeyActivatedInputInFirefox) && !isSafariWithAutoRaisedClick
|
|
4174
4175
|
&& (isKeyActivatedInput || isButton);
|
|
4175
4176
|
if (raiseClickOnEnter && this.sanitizedKey === 'enter')
|
|
4176
4177
|
activeElement.click();
|