testcafe 2.5.0-rc.1 → 2.5.0-rc.2
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/lib/cli/argument-parser/index.js +2 -2
- package/lib/client/core/index.js +1 -1
- package/lib/client/core/index.min.js +1 -1
- package/lib/configuration/option-names.js +2 -2
- package/lib/configuration/run-option-names.js +2 -2
- package/lib/configuration/testcafe-configuration.js +5 -5
- package/lib/errors/runtime/templates.js +2 -2
- package/lib/runner/bootstrapper.js +3 -3
- package/lib/runner/task/index.js +2 -2
- package/lib/test-run/commands/actions.js +2 -2
- package/lib/test-run/index.js +2 -2
- package/lib/test-run/session-controller.js +2 -2
- package/package.json +1 -1
- package/ts-defs/index.d.ts +2 -2
- package/ts-defs/selectors.d.ts +2 -2
- package/ts-defs/testcafe-scripts.d.ts +2 -2
|
@@ -114,7 +114,7 @@ class CLIArgumentParser {
|
|
|
114
114
|
.option('--test-meta <key=value[,key2=value2,...]>', 'filter tests by metadata')
|
|
115
115
|
.option('--fixture-meta <key=value[,key2=value2,...]>', 'filter fixtures by metadata')
|
|
116
116
|
.option('--debug-on-fail', 'pause tests on failure')
|
|
117
|
-
.option('--
|
|
117
|
+
.option('--native-automation', 'enable native automation')
|
|
118
118
|
.option('--app-init-delay <ms>', 'specify your application`s initialization time')
|
|
119
119
|
.option('--selector-timeout <ms>', 'specify the maximum Selector resolution time')
|
|
120
120
|
.option('--assertion-timeout <ms>', 'specify the maximum Assertion resolution time')
|
|
@@ -387,4 +387,4 @@ class CLIArgumentParser {
|
|
|
387
387
|
}
|
|
388
388
|
exports.default = CLIArgumentParser;
|
|
389
389
|
module.exports = exports.default;
|
|
390
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2FyZ3VtZW50LXBhcnNlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQWtDO0FBRWxDLHVEQUdtQjtBQUVuQixvREFBNEI7QUFDNUIsa0RBQW9EO0FBQ3BELDhDQUFvRDtBQUNwRCwwRUFBc0U7QUFDdEUsd0ZBQThEO0FBQzlELCtDQUErRDtBQUMvRCx5REFVaUM7QUFFakMsOEVBQW9EO0FBQ3BELDBHQUFrRjtBQUNsRiw0RkFBb0U7QUFNcEUsMEdBQWtGO0FBQ2xGLG9FQUF1RTtBQUN2RSw0RkFBa0U7QUFDbEUsK0NBQTJEO0FBQzNELG9FQUE0QztBQUU1QyxpR0FBNkc7QUFFN0csTUFBTSxlQUFlLEdBQUcscUJBQXFCLENBQUM7QUFFOUMsTUFBTSxXQUFXLEdBQUcsSUFBQSxnQkFBTSxFQUFDOzs7Ozs7Ozs7OztDQVcxQixDQUFDLENBQUM7QUF5Q0gsTUFBcUIsaUJBQWlCO0lBU2xDLFlBQW9CLEdBQVk7UUFDNUIsSUFBSSxDQUFDLEdBQUcsR0FBVyxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQVUsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQVUsRUFBRSxDQUFDO1FBRXRCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLGVBQWUsR0FBTSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUVyRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVDLGlCQUFpQixDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVPLE1BQU0sQ0FBQyxpQkFBaUI7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LE1BQU0sSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDdkMsTUFBTSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUNyQyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDbkMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM3QixNQUFNLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTSxhQUFhO1FBQ2hCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkMsMEJBQWdCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ2xDLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJO2dCQUN2QiwyREFBMkQ7Z0JBQzNELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUEwQixDQUFDO0lBQ3RDLENBQUM7Q0FDSjtBQXphRCxvQ0F5YUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoYXMsIHNldCB9IGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCBwcm9ncmFtLCB7XG4gICAgQ29tbWFuZCxcbiAgICBPcHRpb24sXG59IGZyb20gJ2NvbW1hbmRlcic7XG5cbmltcG9ydCBkZWRlbnQgZnJvbSAnZGVkZW50JztcbmltcG9ydCB7IEdlbmVyYWxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCB7IGFzc2VydFR5cGUsIGlzIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3J1bnRpbWUvdHlwZS1hc3NlcnRpb25zJztcbmltcG9ydCBnZXRWaWV3UG9ydFdpZHRoIGZyb20gJy4uLy4uL3V0aWxzL2dldC12aWV3cG9ydC13aWR0aCc7XG5pbXBvcnQgeyB3b3JkV3JhcCwgc3BsaXRRdW90ZWRUZXh0IH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyaW5nJztcbmltcG9ydCB7XG4gICAgZ2V0U1NMT3B0aW9ucyxcbiAgICBnZXRRdWFyYW50aW5lT3B0aW9ucyxcbiAgICBnZXRTY3JlZW5zaG90T3B0aW9ucyxcbiAgICBnZXRTa2lwSnNFcnJvcnNPcHRpb25zLFxuICAgIGdldFZpZGVvT3B0aW9ucyxcbiAgICBnZXRNZXRhT3B0aW9ucyxcbiAgICBnZXRHcmVwT3B0aW9ucyxcbiAgICBnZXRDb21waWxlck9wdGlvbnMsXG4gICAgZ2V0RGFzaGJvYXJkT3B0aW9ucyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0LW9wdGlvbnMnO1xuXG5pbXBvcnQgZ2V0RmlsdGVyRm4gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0LWZpbHRlci1mbic7XG5pbXBvcnQgU0NSRUVOU0hPVF9PUFRJT05fTkFNRVMgZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9zY3JlZW5zaG90LW9wdGlvbi1uYW1lcyc7XG5pbXBvcnQgUlVOX09QVElPTl9OQU1FUyBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL3J1bi1vcHRpb24tbmFtZXMnO1xuaW1wb3J0IHtcbiAgICBEaWN0aW9uYXJ5LFxuICAgIFJlcG9ydGVyT3B0aW9uLFxuICAgIFJ1bm5lclJ1bk9wdGlvbnMsXG59IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vaW50ZXJmYWNlcyc7XG5pbXBvcnQgUVVBUkFOVElORV9PUFRJT05fTkFNRVMgZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9xdWFyYW50aW5lLW9wdGlvbi1uYW1lcyc7XG5pbXBvcnQgeyBleHRyYWN0Tm9kZVByb2Nlc3NBcmd1bWVudHMgfSBmcm9tICcuLi9ub2RlLWFyZ3VtZW50cy1maWx0ZXInO1xuaW1wb3J0IGdldFRlc3RjYWZlVmVyc2lvbiBmcm9tICcuLi8uLi91dGlscy9nZXQtdGVzdGNhZmUtdmVyc2lvbic7XG5pbXBvcnQgeyBwYXJzZVBvcnROdW1iZXIsIHBhcnNlTGlzdCB9IGZyb20gJy4vcGFyc2UtdXRpbHMnO1xuaW1wb3J0IENPTU1BTkRfTkFNRVMgZnJvbSAnLi9jb21tYW5kLW5hbWVzJztcbmltcG9ydCB7IFNlbmRSZXBvcnRTdGF0ZSB9IGZyb20gJy4uLy4uL2Rhc2hib2FyZC9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFNLSVBfSlNfRVJST1JTX09QVElPTlNfT0JKRUNUX09QVElPTl9OQU1FUyB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vc2tpcC1qcy1lcnJvcnMtb3B0aW9uLW5hbWVzJztcblxuY29uc3QgUkVNT1RFX0FMSUFTX1JFID0gL15yZW1vdGUoPzo6KFxcZCopKT8kLztcblxuY29uc3QgREVTQ1JJUFRJT04gPSBkZWRlbnQoYFxuXG4gICAgVG8gc2VsZWN0IGEgYnJvd3Nlciwgc3BlY2lmeSBhbiBhbGlhcyAoXCJpZVwiLCBcImNocm9tZVwiLCBldGMuKSBvciB0aGUgcGF0aCB0byB0aGUgYnJvd3NlciBleGVjdXRhYmxlLiBZb3UgY2FuIHNlbGVjdCBtb3JlIHRoYW4gb25lIGJyb3dzZXIuXG5cbiAgICBVc2UgdGhlIFwiYWxsXCIgYWxpYXMgdG8gcnVuIHRlc3RzIGFnYWluc3QgYWxsIGF2YWlsYWJsZSBicm93c2Vycy5cbiAgICBVc2UgdGhlIFwicmVtb3RlXCIgYWxpYXMgdG8gcnVuIHRlc3RzIG9uIHJlbW90ZSBkZXZpY2VzLCBsaWtlIHNtYXJ0cGhvbmVzIG9yIHRhYmxldHMuIFNwZWNpZnkgdGhlIG51bWJlciBvZiByZW1vdGUgYnJvd3NlcnMgYWZ0ZXIgdGhlIHNlbWljb2xvbiAoXCJyZW1vdGU6M1wiKS5cbiAgICBJZiB5b3UgdXNlIGEgYnJvd3NlciBwcm92aWRlciBwbHVnaW4sIHNwZWNpZnkgYm90aCB0aGUgbmFtZSBvZiB0aGUgcGx1Z2luIGFuZCB0aGUgbmFtZSBvZiB0aGUgYnJvd3Nlci4gU2VwYXJhdGUgdGhlIHR3byB3aXRoIGEgc2VtaWNvbG9uIChcInNhdWNlbGFiczpjaHJvbWVANTFcIikuXG5cbiAgICBUbyBleGVjdXRlIG11bHRpcGxlIHRlc3QgZmlsZXMsIHNwZWNpZnkgbXVsdGlwbGUgZmlsZSBwYXRocyBvciBnbG9iIHBhdHRlcm5zLlxuXG4gICAgRnVsbCBkb2N1bWVudGF0aW9uOiBodHRwczovL3Rlc3RjYWZlLmlvL2RvY3VtZW50YXRpb24vNDAyNjM5L3JlZmVyZW5jZS9jb21tYW5kLWxpbmUtaW50ZXJmYWNlXG5gKTtcblxuaW50ZXJmYWNlIENvbW1hbmRMaW5lT3B0aW9ucyB7XG4gICAgdGVzdEdyZXA/OiBzdHJpbmcgfCBSZWdFeHA7XG4gICAgZml4dHVyZUdyZXA/OiBzdHJpbmcgfCBSZWdFeHA7XG4gICAgc3JjPzogc3RyaW5nW107XG4gICAgYnJvd3NlcnM/OiBzdHJpbmdbXTtcbiAgICBsaXN0QnJvd3NlcnM/OiBib29sZWFuIHwgc3RyaW5nO1xuICAgIHRlc3RNZXRhPzogc3RyaW5nIHwgRGljdGlvbmFyeTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcbiAgICBmaXh0dXJlTWV0YT86IHN0cmluZyB8IERpY3Rpb25hcnk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj47XG4gICAgZmlsdGVyPzogRnVuY3Rpb247XG4gICAgYXBwSW5pdERlbGF5Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGFzc2VydGlvblRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgc2VsZWN0b3JUaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHNwZWVkPzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHBhZ2VMb2FkVGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBwYWdlUmVxdWVzdFRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgYWpheFJlcXVlc3RUaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGJyb3dzZXJJbml0VGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICB0ZXN0RXhlY3V0aW9uVGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBydW5FeGVjdXRpb25UaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGNvbmN1cnJlbmN5Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHF1YXJhbnRpbmVNb2RlPzogYm9vbGVhbiB8IERpY3Rpb25hcnk8c3RyaW5nIHwgbnVtYmVyPjtcbiAgICBwb3J0cz86IHN0cmluZyB8IG51bWJlcltdO1xuICAgIHByb3ZpZGVyTmFtZT86IHN0cmluZztcbiAgICBzc2w/OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+O1xuICAgIHJlcG9ydGVyPzogc3RyaW5nIHwgUmVwb3J0ZXJPcHRpb25bXTtcbiAgICBzY3JlZW5zaG90cz86IERpY3Rpb25hcnk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4gfCBzdHJpbmc7XG4gICAgc2NyZWVuc2hvdFBhdGhQYXR0ZXJuPzogc3RyaW5nO1xuICAgIHNjcmVlbnNob3RzT25GYWlscz86IGJvb2xlYW47XG4gICAgdmlkZW9PcHRpb25zPzogc3RyaW5nIHwgRGljdGlvbmFyeTxudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuPjtcbiAgICB2aWRlb0VuY29kaW5nT3B0aW9ucz86IHN0cmluZyB8IERpY3Rpb25hcnk8bnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbj47XG4gICAgY29tcGlsZXJPcHRpb25zPzogc3RyaW5nIHwgRGljdGlvbmFyeTxudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuPjtcbiAgICBjb25maWdGaWxlPzogc3RyaW5nO1xuICAgIHByb3h5bGVzcz86IGJvb2xlYW47XG4gICAgdjhGbGFncz86IHN0cmluZ1tdO1xuICAgIGRhc2hib2FyZE9wdGlvbnM/OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXI+O1xuICAgIGJhc2VVcmw/OiBzdHJpbmc7XG4gICAgc2tpcEpzRXJyb3JzPzogYm9vbGVhbiB8IERpY3Rpb25hcnk8UmVnRXhwIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ0xJQXJndW1lbnRQYXJzZXIge1xuICAgIHByaXZhdGUgY3dkOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZW1vdGVDb3VudDogbnVtYmVyO1xuICAgIHB1YmxpYyBpc0Rhc2hib2FyZENvbW1hbmQ6IGJvb2xlYW47XG4gICAgcHVibGljIHNlbmRSZXBvcnRTdGF0ZTogU2VuZFJlcG9ydFN0YXRlO1xuICAgIHB1YmxpYyBvcHRzOiBDb21tYW5kTGluZU9wdGlvbnM7XG4gICAgcHVibGljIGFyZ3M6IHN0cmluZ1tdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVzdENhZmVDb21tYW5kOiBDb21tYW5kO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChjd2Q/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jd2QgICAgICAgICA9IGN3ZCB8fCBwcm9jZXNzLmN3ZCgpO1xuICAgICAgICB0aGlzLnJlbW90ZUNvdW50ID0gMDtcbiAgICAgICAgdGhpcy5vcHRzICAgICAgICA9IHt9O1xuICAgICAgICB0aGlzLmFyZ3MgICAgICAgID0gW107XG5cbiAgICAgICAgdGhpcy5pc0Rhc2hib2FyZENvbW1hbmQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50ZXN0Q2FmZUNvbW1hbmQgICAgPSB0aGlzLl9hZGRUZXN0Q2FmZUNvbW1hbmQoKTtcblxuICAgICAgICB0aGlzLl9wYXRjaEhlbHBPdXRwdXQodGhpcy50ZXN0Q2FmZUNvbW1hbmQpO1xuICAgICAgICBDTElBcmd1bWVudFBhcnNlci5fc2V0dXBSb290Q29tbWFuZCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9zZXR1cFJvb3RDb21tYW5kICgpOiB2b2lkIHtcbiAgICAgICAgLy8gTk9URTogV2UgYXJlIGZvcmNlZCB0byBzZXQgdGhlIG5hbWUgb2YgdGhlIHJvb3QgY29tbWFuZCB0byAndGVzdGNhZmUnXG4gICAgICAgIC8vIHRvIGF2b2lkIHRoZSBhdXRvbWF0aWMgY29tbWFuZCBuYW1lIGNhbGN1bGF0aW9uIHVzaW5nIHRoZSBleGVjdXRlZCBmaWxlIHBhdGguXG4gICAgICAgIC8vIEl0J3MgbmVjZXNzYXJ5IHRvIGNvcnJlY3QgY29tbWFuZCBkZXNjcmlwdGlvbiBmb3IgbmVzdGVkIGNvbW1hbmRzLlxuICAgICAgICAocHJvZ3JhbSBhcyB1bmtub3duIGFzIENvbW1hbmQpLm5hbWUoQ09NTUFORF9OQU1FUy5UZXN0Q2FmZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX3JlbW92ZUNvbW1hbmRJZkV4aXN0cyAobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIC8vIE5PVEU6IEJ1ZyBpbiB0aGUgJ2NvbW1hbmRlcicgbW9kdWxlLlxuICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRvIGFkZCBhIGZldyBjb21tYW5kcyB3aXRoIHRoZSBzYW1lIG5hbWUuXG4gICAgICAgIC8vIEFsc28sIHJlbW92aW5nIGlzIGEgYmV0dGVyIHRoYW4gY29uZGl0aW9uYWxseSBhZGRpbmdcbiAgICAgICAgLy8gYmVjYXVzZSBpdCBhbGxvd3MgYXZvaWRpbmcgdGhlIHBhcnNlZCBvcHRpb24gZHVwbGljYXRlcy5cbiAgICAgICAgY29uc3QgaW5kZXggPSAocHJvZ3JhbSBhcyB1bmtub3duIGFzIENvbW1hbmQpLmNvbW1hbmRzLmZpbmRJbmRleChjbWQgPT4gY21kLm5hbWUoKSA9PT0gbmFtZSk7XG5cbiAgICAgICAgaWYgKGluZGV4ID4gLTEpXG4gICAgICAgICAgICAocHJvZ3JhbSBhcyB1bmtub3duIGFzIENvbW1hbmQpLmNvbW1hbmRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX2dldERlc2NyaXB0aW9uICgpOiBzdHJpbmcge1xuICAgICAgICAvLyBOT1RFOiBhZGQgZW1wdHkgbGluZSB0byB3b3JrYXJvdW5kIGNvbW1hbmRlci1mb3JjZWQgaW5kZW50YXRpb24gb24gdGhlIGZpcnN0IGxpbmUuXG4gICAgICAgIHJldHVybiAnXFxuJyArIHdvcmRXcmFwKERFU0NSSVBUSU9OLCAyLCBnZXRWaWV3UG9ydFdpZHRoKHByb2Nlc3Muc3Rkb3V0KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYWRkVGVzdENhZmVDb21tYW5kICgpOiBDb21tYW5kIHtcbiAgICAgICAgQ0xJQXJndW1lbnRQYXJzZXIuX3JlbW92ZUNvbW1hbmRJZkV4aXN0cyhDT01NQU5EX05BTUVTLlRlc3RDYWZlKTtcblxuICAgICAgICByZXR1cm4gKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKVxuICAgICAgICAgICAgLmNvbW1hbmQoQ09NTUFORF9OQU1FUy5UZXN0Q2FmZSwgeyBpc0RlZmF1bHQ6IHRydWUgfSlcbiAgICAgICAgICAgIC52ZXJzaW9uKGdldFRlc3RjYWZlVmVyc2lvbigpLCAnLXYsIC0tdmVyc2lvbicpXG4gICAgICAgICAgICAudXNhZ2UoJ1tvcHRpb25zXSA8Y29tbWEtc2VwYXJhdGVkLWJyb3dzZXItbGlzdD4gPGZpbGUtb3ItZ2xvYiAuLi4+JylcbiAgICAgICAgICAgIC5kZXNjcmlwdGlvbihDTElBcmd1bWVudFBhcnNlci5fZ2V0RGVzY3JpcHRpb24oKSlcblxuICAgICAgICAgICAgLmFsbG93VW5rbm93bk9wdGlvbigpXG4gICAgICAgICAgICAub3B0aW9uKCctYiwgLS1saXN0LWJyb3dzZXJzIFtwcm92aWRlcl0nLCAnZGlzcGxheSB0aGUgbGlzdCBvZiBhbGlhc2VzIGZvciBhdmFpbGFibGUgYnJvd3NlcnMgYW5kIGJyb3dzZXIgcHJvdmlkZXJzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1yLCAtLXJlcG9ydGVyIDxuYW1lWzpvdXRwdXRGaWxlXVssLi4uXT4nLCAnc3BlY2lmeSByZXBvcnRlcnMgYW5kIHJlcG9ydCBmaWxlbmFtZXMnKVxuICAgICAgICAgICAgLm9wdGlvbignLXMsIC0tc2NyZWVuc2hvdHMgPG9wdGlvbj12YWx1ZVssLi4uXT4nLCAnc3BlY2lmeSBzY3JlZW5zaG90IG9wdGlvbnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLVMsIC0tc2NyZWVuc2hvdHMtb24tZmFpbHMnLCAndGFrZSBhIHNjcmVlbnNob3Qgb24gdGVzdCBmYWlsdXJlJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1wLCAtLXNjcmVlbnNob3QtcGF0aC1wYXR0ZXJuIDxwYXR0ZXJuPicsICdzcGVjaWZ5IHRoZSBuYW1pbmcgc2NoZW1hIGZvciBzY3JlZW5zaG90IGZpbGVuYW1lcyBhbmQgcGF0aHM6ICR7QlJPV1NFUn0sICR7QlJPV1NFUl9WRVJTSU9OfSwgJHtPU30sIGV0Yy4nKVxuICAgICAgICAgICAgLm9wdGlvbignLXEsIC0tcXVhcmFudGluZS1tb2RlIFtvcHRpb249dmFsdWUsLi4uXScsICdlbmFibGUgYW5kIGNvbmZpZ3VyZSBxdWFyYW50aW5lIG1vZGUnKVxuICAgICAgICAgICAgLm9wdGlvbignLWQsIC0tZGVidWctbW9kZScsICdlbmFibGUgZGVidWcgbW9kZS4gV2hlbiB5b3UgcnVuIFRlc3RDYWZlIGluIGRlYnVnIG1vZGUsIGl0IGV4ZWN1dGVzIHRlc3Qgc3RlcHMgb25lIGJ5IG9uZSwgYW5kIHBhdXNlcyB0aGUgdGVzdCBhZnRlciBlYWNoIHN0ZXAuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1lLCAtLXNraXAtanMtZXJyb3JzIFtvcHRpb249dmFsdWUsLi4uXScsICdpZ25vcmUgSmF2YVNjcmlwdCBlcnJvcnMgdGhhdCBtYXRjaCB0aGUgc3BlY2lmaWVkIGNyaXRlcmlhJylcbiAgICAgICAgICAgIC5vcHRpb24oJy11LCAtLXNraXAtdW5jYXVnaHQtZXJyb3JzJywgJ2lnbm9yZSB1bmNhdWdodCBlcnJvcnMgYW5kIHVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLXQsIC0tdGVzdCA8bmFtZT4nLCAnZmlsdGVyIHRlc3RzIGJ5IG5hbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLVQsIC0tdGVzdC1ncmVwIDxwYXR0ZXJuPicsICdmaWx0ZXIgdGVzdHMgYnkgcmVndWxhciBleHByZXNzaW9uJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1mLCAtLWZpeHR1cmUgPG5hbWU+JywgJ2ZpbHRlciBmaXh0dXJlcyBieSBuYW1lJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1GLCAtLWZpeHR1cmUtZ3JlcCA8cGF0dGVybj4nLCAnZmlsdGVyIGZpeHR1cmVzIGJ5IHJlZ3VsYXIgZXhwcmVzc2lvbicpXG4gICAgICAgICAgICAub3B0aW9uKCctYSwgLS1hcHAgPGNvbW1hbmQ+JywgJ2V4ZWN1dGUgYSBzaGVsbCBjb21tYW5kIG9uIHN0YXJ0dXAgdG8gbGF1bmNoIGEgd2ViIGFwcGxpY2F0aW9uIG9yIHBlcmZvcm0gb3RoZXIgcHJlcGFyYXRvcnkgdGFza3MnKVxuICAgICAgICAgICAgLm9wdGlvbignLWMsIC0tY29uY3VycmVuY3kgPG51bWJlcj4nLCAncnVuIHRlc3RzIGNvbmN1cnJlbnRseScpXG4gICAgICAgICAgICAub3B0aW9uKCctTCwgLS1saXZlJywgJ2VuYWJsZSBsaXZlIG1vZGUuIExpdmUgbW9kZSByZXN0YXJ0cyB0ZXN0cyB3aGVuIHlvdSBtYWtlIGNoYW5nZXMgdG8gdGVzdCBmaWxlcy4nKVxuICAgICAgICAgICAgLm9wdGlvbignLS10ZXN0LW1ldGEgPGtleT12YWx1ZVssa2V5Mj12YWx1ZTIsLi4uXT4nLCAnZmlsdGVyIHRlc3RzIGJ5IG1ldGFkYXRhJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZml4dHVyZS1tZXRhIDxrZXk9dmFsdWVbLGtleTI9dmFsdWUyLC4uLl0+JywgJ2ZpbHRlciBmaXh0dXJlcyBieSBtZXRhZGF0YScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRlYnVnLW9uLWZhaWwnLCAncGF1c2UgdGVzdHMgb24gZmFpbHVyZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLXByb3h5bGVzcycsICdlbmFibGUgcHJveHlsZXNzIG1vZGUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1hcHAtaW5pdC1kZWxheSA8bXM+JywgJ3NwZWNpZnkgeW91ciBhcHBsaWNhdGlvbmBzIGluaXRpYWxpemF0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zZWxlY3Rvci10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgbWF4aW11bSBTZWxlY3RvciByZXNvbHV0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1hc3NlcnRpb24tdGltZW91dCA8bXM+JywgJ3NwZWNpZnkgdGhlIG1heGltdW0gQXNzZXJ0aW9uIHJlc29sdXRpb24gdGltZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLXBhZ2UtbG9hZC10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgbWF4aW11bSB0aW1lIGJldHdlZW4gdGhlIHdpbmRvdy5sb2FkIGV2ZW50IGFuZCB0aGUgRE9NQ29udGVudExvYWRlZCBldmVudCAobXMpJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcGFnZS1yZXF1ZXN0LXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSBtYXhpbXVtIHBhZ2UgcmVxdWVzdCByZXNvbHV0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1hamF4LXJlcXVlc3QtdGltZW91dCA8bXM+JywgJ3NwZWNpZnkgdGhlIG1heGltdW0gQUpBWCByZXF1ZXN0IHJlc29sdXRpb24gdGltZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWJyb3dzZXItaW5pdC10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgbWF4aW11bSBicm93c2VyIHN0YXJ0dXAgdGltZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLXRlc3QtZXhlY3V0aW9uLXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSBtYXhpbXVtIHRlc3QgZXhlY3V0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1ydW4tZXhlY3V0aW9uLXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSBtYXhpbXVtIHRlc3QgcnVuIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zcGVlZCA8ZmFjdG9yPicsICdzZXQgdGVzdCBleGVjdXRpb24gc3BlZWQgKDAuMDEgLi4uIDEpJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcG9ydHMgPHBvcnQxLHBvcnQyPicsICdzcGVjaWZ5IG5ldHdvcmsgcG9ydHMgdG8gdXNlIGR1cmluZyB0aGUgdGVzdCBydW4uIFRoZSBzZWNvbmQgcG9ydCBpcyBuZWNlc3NhcnkgdG8gYWNjZXNzIGNyb3NzLWRvbWFpbiByZXNvdXJjZXMuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0taG9zdG5hbWUgPG5hbWU+JywgYHNwZWNpZnkgeW91ciBob3N0bmFtZS4gTmVjZXNzYXJ5IHRvIHJ1biB0ZXN0cyBpbiByZW1vdGUgYnJvd3NlcnMuYClcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcHJveHkgPGhvc3Q+JywgJ3NwZWNpZnkgdGhlIHByb3h5IHNlcnZlciBob3N0bmFtZSBvciBJUCBhZGRyZXNzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcHJveHktYnlwYXNzIDxydWxlcz4nLCAnc3BlY2lmeSBVUkxzIHRoYXQgYnlwYXNzIHRoZSBwcm94eSBzZXJ2ZXInKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zc2wgPG9wdGlvbnM+JywgJ3NwZWNpZnkgU1NMIG9wdGlvbnMgdG8gcnVuIFRlc3RDYWZlIG92ZXIgSFRUUFMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS12aWRlbyA8cGF0aD4nLCAncmVjb3JkIHZpZGVvcyBvZiB0ZXN0IHJ1bnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS12aWRlby1vcHRpb25zIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgdmlkZW8gcmVjb3JkaW5nIG9wdGlvbnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS12aWRlby1lbmNvZGluZy1vcHRpb25zIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgdmlkZW8gZW5jb2Rpbmcgb3B0aW9ucycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRldicsICdsb2cgYW5kIGRpYWdub3NlIFRlc3RDYWZlIGVycm9ycycpXG4gICAgICAgICAgICAub3B0aW9uKCctLXFyLWNvZGUnLCAnb3V0cHV0IFFSIGNvZGVzIHdpdGggVVJMcyBmb3IgcmVtb3RlIGJyb3dzZXIgY29ubmVjdGlvbnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zZiwgLS1zdG9wLW9uLWZpcnN0LWZhaWwnLCAnc3RvcCB0aGUgdGVzdCBydW4gaWYgYW55IHRlc3QgZmFpbHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1jb25maWctZmlsZSA8cGF0aD4nLCAnc3BlY2lmeSBhIGN1c3RvbSBwYXRoIHRvIHRoZSB0ZXN0Y2FmZSBjb25maWd1cmF0aW9uIGZpbGUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS10cy1jb25maWctcGF0aCA8cGF0aD4nLCAnc3BlY2lmeSB0aGUgcGF0aCB0byBhIGN1c3RvbSBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWNzLCAtLWNsaWVudC1zY3JpcHRzIDxwYXRocz4nLCAnaW5qZWN0IGNsaWVudC1zaWRlIHNjcmlwdHMgaW50byB0aGUgcGFnZScsIHBhcnNlTGlzdCwgW10pXG4gICAgICAgICAgICAub3B0aW9uKCctLWRpc2FibGUtcGFnZS1jYWNoaW5nJywgJ2RvIG5vdCBjYWNoZSBwYWdlcycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRpc2FibGUtcGFnZS1yZWxvYWRzJywgJ2RvIG5vdCByZWxvYWQgcGFnZXMgYmV0d2VlbiB0ZXN0cycpXG4gICAgICAgICAgICAub3B0aW9uKCctLXJldHJ5LXRlc3QtcGFnZXMnLCAncmV0cnkgcGFnZSByZXF1ZXN0cyBpbiBjYXNlIG9mIGZhaWx1cmUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kaXNhYmxlLXNjcmVlbnNob3RzJywgJ2Rpc2FibGUgc2NyZWVuc2hvdHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zY3JlZW5zaG90cy1mdWxsLXBhZ2UnLCAnZW5hYmxlIGZ1bGwtcGFnZSBzY3JlZW5zaG90cycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWNvbXBpbGVyLW9wdGlvbnMgPG9wdGlvbj12YWx1ZVssLi4uXT4nLCAnc3BlY2lmeSB0ZXN0IGNvbXBpbGF0aW9uIHNldHRpbmdzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZGlzYWJsZS1tdWx0aXBsZS13aW5kb3dzJywgJ2Rpc2FibGUgdGhlIG11bHRpLXdpbmRvdyBtb2RlJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZGlzYWJsZS1odHRwMicsICdmb3JjZSB0aGUgcHJveHkgdG8gaXNzdWUgSFRUUC8xLjEgcmVxdWVzdHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1jYWNoZScsICdjYWNoZSB3ZWIgYXNzZXRzIGJldHdlZW4gdGVzdCBydW5zJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tYmFzZS11cmwgPHVybD4nLCAnc2V0IHRoZSBiYXNlIHVybCBmb3IgdGhlIHRlc3QgcnVuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZXNtJywgJ2VuYWJsZSBFU00gbW9kdWxlIHN1cHBvcnQnKVxuXG4gICAgICAgICAgICAvLyBOT1RFOiB0aGVzZSBvcHRpb25zIHdpbGwgYmUgaGFuZGxlZCBieSBjaGFsayBpbnRlcm5hbGx5XG4gICAgICAgICAgICAub3B0aW9uKCctLWNvbG9yJywgJ2ZvcmNlIFRlc3RDYWZlIHRvIGZvcm1hdCBDTEkgb3V0cHV0IHdpdGggY29sb3InKVxuICAgICAgICAgICAgLm9wdGlvbignLS1uby1jb2xvcicsICdkaXNhYmxlIHRleHQgY29sb3IgZm9ybWF0dGluZyBpbiB0aGUgQ0xJJylcblxuICAgICAgICAgICAgLy8gTk9URTogVGVtcG9yYXJpbHkgZXhjbHVkZSBleHBlcmltZW50YWwgb3B0aW9ucyBmcm9tIC0taGVscCBvdXRwdXRcbiAgICAgICAgICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1leHBlcmltZW50YWwtZGVidWcnLCAnZW5hYmxlIGV4cGVyaW1lbnRhbCB0aGUgZGVidWcgbW9kZScpLmhpZGVIZWxwKCkpXG4gICAgICAgICAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZGlzYWJsZS1jcm9zcy1kb21haW4nLCAnZXhwZXJpbWVudGFsJykuaGlkZUhlbHAoKSlcbiAgICAgICAgICAgIC5hY3Rpb24oKG9wdHM6IENvbW1hbmRMaW5lT3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub3B0cyA9IG9wdHM7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXRjaEhlbHBPdXRwdXQgKGRlZmF1bHRTdWJDb21tYW5kOiBDb21tYW5kKTogdm9pZCB7XG4gICAgICAgIC8vIE5PVEU6IEluIHRoZSBmdXR1cmUgdmVyc2lvbnMgb2YgdGhlICdjb21tYW5kZXInIG1vZHVsZVxuICAgICAgICAvLyBuZWVkIHRvIGludmVzdGlnYXRlIGhvdyB0byByZW1vdmUgdGhpcyBoYWNrLlxuICAgICAgICAocHJvZ3JhbSBhcyB1bmtub3duIGFzIENvbW1hbmQpLm91dHB1dEhlbHAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjb25zdCBzdG9yZWRQYXJlbnQgPSBkZWZhdWx0U3ViQ29tbWFuZC5wYXJlbnQ7XG5cbiAgICAgICAgICAgIGRlZmF1bHRTdWJDb21tYW5kLnBhcmVudCA9IG51bGw7XG5cbiAgICAgICAgICAgIGRlZmF1bHRTdWJDb21tYW5kLm91dHB1dEhlbHAoKTtcblxuICAgICAgICAgICAgZGVmYXVsdFN1YkNvbW1hbmQucGFyZW50ID0gc3RvcmVkUGFyZW50O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NoZWNrQW5kQ291bnRSZW1vdGVzIChicm93c2VyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgcmVtb3RlTWF0Y2ggPSBicm93c2VyLm1hdGNoKFJFTU9URV9BTElBU19SRSk7XG5cbiAgICAgICAgaWYgKHJlbW90ZU1hdGNoKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW90ZUNvdW50ICs9IHBhcnNlSW50KHJlbW90ZU1hdGNoWzFdLCAxMCkgfHwgMTtcblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIF9wYXJzZUZpbHRlcmluZ09wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnRlc3RHcmVwKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnRlc3RHcmVwID0gZ2V0R3JlcE9wdGlvbnMoJy0tdGVzdC1ncmVwJywgdGhpcy5vcHRzLnRlc3RHcmVwIGFzIHN0cmluZyk7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0cy5maXh0dXJlR3JlcClcbiAgICAgICAgICAgIHRoaXMub3B0cy5maXh0dXJlR3JlcCA9IGdldEdyZXBPcHRpb25zKCctLWZpeHR1cmUtZ3JlcCcsIHRoaXMub3B0cy5maXh0dXJlR3JlcCBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdHMudGVzdE1ldGEpXG4gICAgICAgICAgICB0aGlzLm9wdHMudGVzdE1ldGEgPSBhd2FpdCBnZXRNZXRhT3B0aW9ucygnLS10ZXN0LW1ldGEnLCB0aGlzLm9wdHMudGVzdE1ldGEgYXMgc3RyaW5nKTtcblxuICAgICAgICBpZiAodGhpcy5vcHRzLmZpeHR1cmVNZXRhKVxuICAgICAgICAgICAgdGhpcy5vcHRzLmZpeHR1cmVNZXRhID0gYXdhaXQgZ2V0TWV0YU9wdGlvbnMoJy0tZml4dHVyZS1tZXRhJywgdGhpcy5vcHRzLmZpeHR1cmVNZXRhIGFzIHN0cmluZyk7XG5cbiAgICAgICAgdGhpcy5vcHRzLmZpbHRlciA9IGdldEZpbHRlckZuKHRoaXMub3B0cyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VBcHBJbml0RGVsYXkgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLmFwcEluaXREZWxheSkge1xuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSB0ZXN0ZWQgYXBwIGluaXRpYWxpemF0aW9uIGRlbGF5JywgdGhpcy5vcHRzLmFwcEluaXREZWxheSk7XG5cbiAgICAgICAgICAgIHRoaXMub3B0cy5hcHBJbml0RGVsYXkgPSBwYXJzZUludCh0aGlzLm9wdHMuYXBwSW5pdERlbGF5IGFzIHN0cmluZywgMTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VTZWxlY3RvclRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnNlbGVjdG9yVGltZW91dCkge1xuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBTZWxlY3RvciB0aW1lb3V0JywgdGhpcy5vcHRzLnNlbGVjdG9yVGltZW91dCk7XG5cbiAgICAgICAgICAgIHRoaXMub3B0cy5zZWxlY3RvclRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMuc2VsZWN0b3JUaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VBc3NlcnRpb25UaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5hc3NlcnRpb25UaW1lb3V0KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIGFzc2VydGlvbiB0aW1lb3V0JywgdGhpcy5vcHRzLmFzc2VydGlvblRpbWVvdXQpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMuYXNzZXJ0aW9uVGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5hc3NlcnRpb25UaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VQYWdlTG9hZFRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnBhZ2VMb2FkVGltZW91dCkge1xuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBwYWdlIGxvYWQgdGltZW91dCcsIHRoaXMub3B0cy5wYWdlTG9hZFRpbWVvdXQpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMucGFnZUxvYWRUaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLnBhZ2VMb2FkVGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlUGFnZVJlcXVlc3RUaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdHMucGFnZVJlcXVlc3RUaW1lb3V0KVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgcGFnZSByZXF1ZXN0IHRpbWVvdXQnLCB0aGlzLm9wdHMucGFnZVJlcXVlc3RUaW1lb3V0KTtcblxuICAgICAgICB0aGlzLm9wdHMucGFnZVJlcXVlc3RUaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLnBhZ2VSZXF1ZXN0VGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUFqYXhSZXF1ZXN0VGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vcHRzLmFqYXhSZXF1ZXN0VGltZW91dClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIEFKQVggcmVxdWVzdCB0aW1lb3V0JywgdGhpcy5vcHRzLmFqYXhSZXF1ZXN0VGltZW91dCk7XG5cbiAgICAgICAgdGhpcy5vcHRzLmFqYXhSZXF1ZXN0VGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5hamF4UmVxdWVzdFRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VCcm93c2VySW5pdFRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMub3B0cy5icm93c2VySW5pdFRpbWVvdXQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBicm93c2VyIGluaXRpYWxpemF0aW9uIHRpbWVvdXQnLCB0aGlzLm9wdHMuYnJvd3NlckluaXRUaW1lb3V0KTtcblxuICAgICAgICB0aGlzLm9wdHMuYnJvd3NlckluaXRUaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLmJyb3dzZXJJbml0VGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVRlc3RFeGVjdXRpb25UaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy50ZXN0RXhlY3V0aW9uVGltZW91dCkge1xuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSB0ZXN0IGV4ZWN1dGlvbiB0aW1lb3V0JywgdGhpcy5vcHRzLnRlc3RFeGVjdXRpb25UaW1lb3V0KTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLnRlc3RFeGVjdXRpb25UaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLnRlc3RFeGVjdXRpb25UaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VSdW5FeGVjdXRpb25UaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5ydW5FeGVjdXRpb25UaW1lb3V0KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIHJ1biBleGVjdXRpb24gdGltZW91dCcsIHRoaXMub3B0cy5ydW5FeGVjdXRpb25UaW1lb3V0KTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLnJ1bkV4ZWN1dGlvblRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMucnVuRXhlY3V0aW9uVGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlU3BlZWQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnNwZWVkKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnNwZWVkID0gcGFyc2VGbG9hdCh0aGlzLm9wdHMuc3BlZWQgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUNvbmN1cnJlbmN5ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5jb25jdXJyZW5jeSlcbiAgICAgICAgICAgIHRoaXMub3B0cy5jb25jdXJyZW5jeSA9IHBhcnNlSW50KHRoaXMub3B0cy5jb25jdXJyZW5jeSBhcyBzdHJpbmcsIDEwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wYXJzZVF1YXJhbnRpbmVPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5xdWFyYW50aW5lTW9kZSlcbiAgICAgICAgICAgIHRoaXMub3B0cy5xdWFyYW50aW5lTW9kZSA9IGF3YWl0IGdldFF1YXJhbnRpbmVPcHRpb25zKCctLXF1YXJhbnRpbmUtbW9kZScsIHRoaXMub3B0cy5xdWFyYW50aW5lTW9kZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VTa2lwSnNFcnJvcnNPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5za2lwSnNFcnJvcnMpXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2tpcEpzRXJyb3JzID0gYXdhaXQgZ2V0U2tpcEpzRXJyb3JzT3B0aW9ucygnLS1za2lwLWpzLWVycm9ycycsIHRoaXMub3B0cy5za2lwSnNFcnJvcnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlUG9ydHMgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnBvcnRzKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRQb3J0cyA9ICh0aGlzLm9wdHMucG9ydHMgYXMgc3RyaW5nKSAvKiBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWV4dHJhLXBhcmVucyAqL1xuICAgICAgICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgLm1hcChwYXJzZVBvcnROdW1iZXIpO1xuXG4gICAgICAgICAgICBpZiAocGFyc2VkUG9ydHMubGVuZ3RoIDwgMilcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLnBvcnRzT3B0aW9uUmVxdWlyZXNUd29OdW1iZXJzKTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLnBvcnRzID0gcGFyc2VkUG9ydHMgYXMgbnVtYmVyW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUJyb3dzZXJzRnJvbUFyZ3MgKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBicm93c2Vyc0FyZyA9IHRoaXMudGVzdENhZmVDb21tYW5kLmFyZ3NbMF0gfHwgJyc7XG5cbiAgICAgICAgdGhpcy5vcHRzLmJyb3dzZXJzID0gc3BsaXRRdW90ZWRUZXh0KGJyb3dzZXJzQXJnLCAnLCcpXG4gICAgICAgICAgICAuZmlsdGVyKGJyb3dzZXIgPT4gYnJvd3NlciAmJiB0aGlzLl9jaGVja0FuZENvdW50UmVtb3Rlcyhicm93c2VyKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIF9wYXJzZVNzbE9wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnNzbClcbiAgICAgICAgICAgIHRoaXMub3B0cy5zc2wgPSBhd2FpdCBnZXRTU0xPcHRpb25zKHRoaXMub3B0cy5zc2wgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wYXJzZVJlcG9ydGVycyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHJlcG9ydGVycyA9IHRoaXMub3B0cy5yZXBvcnRlciA/ICh0aGlzLm9wdHMucmVwb3J0ZXIgYXMgc3RyaW5nKS5zcGxpdCgnLCcpIDogW107IC8qIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZXh0cmEtcGFyZW5zKi9cblxuICAgICAgICB0aGlzLm9wdHMucmVwb3J0ZXIgPSByZXBvcnRlcnMubWFwKChyZXBvcnRlcjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXBhcmF0b3JJbmRleCA9IHJlcG9ydGVyLmluZGV4T2YoJzonKTtcblxuICAgICAgICAgICAgaWYgKHNlcGFyYXRvckluZGV4IDwgMClcbiAgICAgICAgICAgICAgICByZXR1cm4geyBuYW1lOiByZXBvcnRlciB9O1xuXG4gICAgICAgICAgICBjb25zdCBuYW1lICAgPSByZXBvcnRlci5zdWJzdHJpbmcoMCwgc2VwYXJhdG9ySW5kZXgpO1xuICAgICAgICAgICAgY29uc3Qgb3V0cHV0ID0gcmVwb3J0ZXIuc3Vic3RyaW5nKHNlcGFyYXRvckluZGV4ICsgMSk7XG5cbiAgICAgICAgICAgIHJldHVybiB7IG5hbWUsIG91dHB1dCB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUZpbGVMaXN0ICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcHRzLnNyYyA9IHRoaXMudGVzdENhZmVDb21tYW5kLmFyZ3Muc2xpY2UoMSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VTY3JlZW5zaG90T3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuc2NyZWVuc2hvdHMpXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2NyZWVuc2hvdHMgPSBhd2FpdCBnZXRTY3JlZW5zaG90T3B0aW9ucyh0aGlzLm9wdHMuc2NyZWVuc2hvdHMpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2NyZWVuc2hvdHMgPSB7fTtcblxuICAgICAgICBpZiAoIWhhcyh0aGlzLm9wdHMuc2NyZWVuc2hvdHMsIFNDUkVFTlNIT1RfT1BUSU9OX05BTUVTLnBhdGhQYXR0ZXJuKSAmJiB0aGlzLm9wdHMuc2NyZWVuc2hvdFBhdGhQYXR0ZXJuKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnNjcmVlbnNob3RzW1NDUkVFTlNIT1RfT1BUSU9OX05BTUVTLnBhdGhQYXR0ZXJuXSA9IHRoaXMub3B0cy5zY3JlZW5zaG90UGF0aFBhdHRlcm47XG5cbiAgICAgICAgaWYgKCFoYXModGhpcy5vcHRzLnNjcmVlbnNob3RzLCBTQ1JFRU5TSE9UX09QVElPTl9OQU1FUy50YWtlT25GYWlscykgJiYgdGhpcy5vcHRzLnNjcmVlbnNob3RzT25GYWlscylcbiAgICAgICAgICAgIHRoaXMub3B0cy5zY3JlZW5zaG90c1tTQ1JFRU5TSE9UX09QVElPTl9OQU1FUy50YWtlT25GYWlsc10gPSB0aGlzLm9wdHMuc2NyZWVuc2hvdHNPbkZhaWxzO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3BhcnNlVmlkZW9PcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy52aWRlb09wdGlvbnMpXG4gICAgICAgICAgICB0aGlzLm9wdHMudmlkZW9PcHRpb25zID0gYXdhaXQgZ2V0VmlkZW9PcHRpb25zKHRoaXMub3B0cy52aWRlb09wdGlvbnMgYXMgc3RyaW5nKTtcblxuICAgICAgICBpZiAodGhpcy5vcHRzLnZpZGVvRW5jb2RpbmdPcHRpb25zKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnZpZGVvRW5jb2RpbmdPcHRpb25zID0gYXdhaXQgZ2V0VmlkZW9PcHRpb25zKHRoaXMub3B0cy52aWRlb0VuY29kaW5nT3B0aW9ucyBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3BhcnNlQ29tcGlsZXJPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdHMuY29tcGlsZXJPcHRpb25zKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHBhcnNlZENvbXBpbGVyT3B0aW9ucyA9IGF3YWl0IGdldENvbXBpbGVyT3B0aW9ucyh0aGlzLm9wdHMuY29tcGlsZXJPcHRpb25zIGFzIHN0cmluZyk7XG4gICAgICAgIGNvbnN0IHJlc3VsdENvbXBpbGVyT3B0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGFyc2VkQ29tcGlsZXJPcHRpb25zKSlcbiAgICAgICAgICAgIHNldChyZXN1bHRDb21waWxlck9wdGlvbnMsIGtleSwgdmFsdWUpO1xuXG4gICAgICAgIHRoaXMub3B0cy5jb21waWxlck9wdGlvbnMgPSByZXN1bHRDb21waWxlck9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VEYXNoYm9hcmRPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5kYXNoYm9hcmRPcHRpb25zKVxuICAgICAgICAgICAgdGhpcy5vcHRzLmRhc2hib2FyZE9wdGlvbnMgPSBhd2FpdCBnZXREYXNoYm9hcmRPcHRpb25zKHRoaXMub3B0cy5kYXNoYm9hcmRPcHRpb25zIGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VMaXN0QnJvd3NlcnMgKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBsaXN0QnJvd3Nlck9wdGlvbiA9IHRoaXMub3B0cy5saXN0QnJvd3NlcnM7XG5cbiAgICAgICAgdGhpcy5vcHRzLmxpc3RCcm93c2VycyA9ICEhdGhpcy5vcHRzLmxpc3RCcm93c2VycztcblxuICAgICAgICBpZiAoIXRoaXMub3B0cy5saXN0QnJvd3NlcnMpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5vcHRzLnByb3ZpZGVyTmFtZSA9IHR5cGVvZiBsaXN0QnJvd3Nlck9wdGlvbiA9PT0gJ3N0cmluZycgPyBsaXN0QnJvd3Nlck9wdGlvbiA6ICdsb2NhbGx5LWluc3RhbGxlZCc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX3ByZXBhcmVCb29sZWFuT3JPYmplY3RPcHRpb24gKGFyZ3Y6IHN0cmluZ1tdLCBvcHRpb25OYW1lczogc3RyaW5nW10sIHN1Yk9wdGlvbnNOYW1lczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgLy8gTk9URTogbW92ZSBvcHRpb25zIHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5IHRvIGNvcnJlY3RseSBwYXJzZSBib3RoIEJvb2xlYW4gYW5kIE9iamVjdCB0eXBlIGFyZ3VtZW50cyAoR0gtNjIzMSlcbiAgICAgICAgY29uc3Qgb3B0aW9uSW5kZXggPSBhcmd2LmZpbmRJbmRleChcbiAgICAgICAgICAgIGVsID0+IG9wdGlvbk5hbWVzLnNvbWUob3B0ID0+IGVsLnN0YXJ0c1dpdGgob3B0KSkpO1xuXG4gICAgICAgIGlmIChvcHRpb25JbmRleCA+IC0xKSB7XG4gICAgICAgICAgICBjb25zdCBpc05vdExhc3RPcHRpb24gICAgICAgPSBvcHRpb25JbmRleCA8IGFyZ3YubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZE1vdmVPcHRpb25Ub0VuZCA9IGlzTm90TGFzdE9wdGlvbiAmJlxuICAgICAgICAgICAgICAgICFzdWJPcHRpb25zTmFtZXMuc29tZShvcHQgPT4gYXJndltvcHRpb25JbmRleCArIDFdLnN0YXJ0c1dpdGgob3B0KSk7XG5cbiAgICAgICAgICAgIGlmIChzaG91bGRNb3ZlT3B0aW9uVG9FbmQpXG4gICAgICAgICAgICAgICAgYXJndi5wdXNoKGFyZ3Yuc3BsaWNlKG9wdGlvbkluZGV4LCAxKVswXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcGFyc2UgKGFyZ3Y6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIENMSUFyZ3VtZW50UGFyc2VyLl9wcmVwYXJlQm9vbGVhbk9yT2JqZWN0T3B0aW9uKGFyZ3YsIFsnLXEnLCAnLS1xdWFyYW50aW5lLW1vZGUnXSwgT2JqZWN0LnZhbHVlcyhRVUFSQU5USU5FX09QVElPTl9OQU1FUykpO1xuICAgICAgICBDTElBcmd1bWVudFBhcnNlci5fcHJlcGFyZUJvb2xlYW5Pck9iamVjdE9wdGlvbihhcmd2LCBbJy1lJywgJy0tc2tpcC1qcy1lcnJvcnMnXSwgT2JqZWN0LnZhbHVlcyhTS0lQX0pTX0VSUk9SU19PUFRJT05TX09CSkVDVF9PUFRJT05fTkFNRVMpKTtcblxuICAgICAgICBjb25zdCB7IGFyZ3MsIHY4RmxhZ3MgfSA9IGV4dHJhY3ROb2RlUHJvY2Vzc0FyZ3VtZW50cyhhcmd2KTtcblxuICAgICAgICAocHJvZ3JhbSBhcyB1bmtub3duIGFzIENvbW1hbmQpLnBhcnNlKGFyZ3MpO1xuXG4gICAgICAgIHRoaXMuYXJncyA9IChwcm9ncmFtIGFzIHVua25vd24gYXMgQ29tbWFuZCkuYXJncztcbiAgICAgICAgdGhpcy5vcHRzID0gT2JqZWN0LmFzc2lnbih0aGlzLm9wdHMsIHsgdjhGbGFncyB9KTtcblxuICAgICAgICB0aGlzLl9wYXJzZUxpc3RCcm93c2VycygpO1xuXG4gICAgICAgIC8vIE5PVEU6IHRoZSAnLS1saXN0LWJyb3dzZXJzJyBvcHRpb24gb25seSBsaXN0cyBicm93c2VycyBhbmQgaW1tZWRpYXRlbHkgZXhpdHMgdGhlIGFwcC5cbiAgICAgICAgLy8gVGhlcmVmb3JlLCB3ZSBkb24ndCBuZWVkIHRvIHByb2Nlc3Mgb3RoZXIgYXJndW1lbnRzLlxuICAgICAgICBpZiAodGhpcy5vcHRzLmxpc3RCcm93c2VycylcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLl9wYXJzZVNlbGVjdG9yVGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZUFzc2VydGlvblRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VQYWdlTG9hZFRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VQYWdlUmVxdWVzdFRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VBamF4UmVxdWVzdFRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VCcm93c2VySW5pdFRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VUZXN0RXhlY3V0aW9uVGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZVJ1bkV4ZWN1dGlvblRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VBcHBJbml0RGVsYXkoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VTcGVlZCgpO1xuICAgICAgICB0aGlzLl9wYXJzZVBvcnRzKCk7XG4gICAgICAgIHRoaXMuX3BhcnNlQnJvd3NlcnNGcm9tQXJncygpO1xuICAgICAgICB0aGlzLl9wYXJzZUNvbmN1cnJlbmN5KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlRmlsZUxpc3QoKTtcblxuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZUZpbHRlcmluZ09wdGlvbnMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fcGFyc2VRdWFyYW50aW5lT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVNraXBKc0Vycm9yc09wdGlvbnMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fcGFyc2VTY3JlZW5zaG90T3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVZpZGVvT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZUNvbXBpbGVyT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVNzbE9wdGlvbnMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fcGFyc2VSZXBvcnRlcnMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fcGFyc2VEYXNoYm9hcmRPcHRpb25zKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJ1bk9wdGlvbnMgKCk6IFJ1bm5lclJ1bk9wdGlvbnMge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgICAgIFJVTl9PUFRJT05fTkFNRVMuZm9yRWFjaChvcHRpb25OYW1lID0+IHtcbiAgICAgICAgICAgIGlmIChvcHRpb25OYW1lIGluIHRoaXMub3B0cylcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIGEgaGFjayB0byBhZGQgYW4gaW5kZXggc2lnbmF0dXJlIHRvIGludGVyZmFjZVxuICAgICAgICAgICAgICAgIHJlc3VsdFtvcHRpb25OYW1lXSA9IHRoaXMub3B0c1tvcHRpb25OYW1lXTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBSdW5uZXJSdW5PcHRpb25zO1xuICAgIH1cbn1cbiJdfQ==
|
|
390
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2FyZ3VtZW50LXBhcnNlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQWtDO0FBRWxDLHVEQUdtQjtBQUVuQixvREFBNEI7QUFDNUIsa0RBQW9EO0FBQ3BELDhDQUFvRDtBQUNwRCwwRUFBc0U7QUFDdEUsd0ZBQThEO0FBQzlELCtDQUErRDtBQUMvRCx5REFVaUM7QUFFakMsOEVBQW9EO0FBQ3BELDBHQUFrRjtBQUNsRiw0RkFBb0U7QUFNcEUsMEdBQWtGO0FBQ2xGLG9FQUF1RTtBQUN2RSw0RkFBa0U7QUFDbEUsK0NBQTJEO0FBQzNELG9FQUE0QztBQUU1QyxpR0FBNkc7QUFFN0csTUFBTSxlQUFlLEdBQUcscUJBQXFCLENBQUM7QUFFOUMsTUFBTSxXQUFXLEdBQUcsSUFBQSxnQkFBTSxFQUFDOzs7Ozs7Ozs7OztDQVcxQixDQUFDLENBQUM7QUF5Q0gsTUFBcUIsaUJBQWlCO0lBU2xDLFlBQW9CLEdBQVk7UUFDNUIsSUFBSSxDQUFDLEdBQUcsR0FBVyxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQVUsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQVUsRUFBRSxDQUFDO1FBRXRCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLGVBQWUsR0FBTSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUVyRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVDLGlCQUFpQixDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVPLE1BQU0sQ0FBQyxpQkFBaUI7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ckMsTUFBTSxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUN2QyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzdCLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVNLGFBQWE7UUFDaEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuQywwQkFBZ0IsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDbEMsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLElBQUk7Z0JBQ3ZCLDJEQUEyRDtnQkFDM0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQTBCLENBQUM7SUFDdEMsQ0FBQztDQUNKO0FBemFELG9DQXlhQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGhhcywgc2V0IH0gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHByb2dyYW0sIHtcbiAgICBDb21tYW5kLFxuICAgIE9wdGlvbixcbn0gZnJvbSAnY29tbWFuZGVyJztcblxuaW1wb3J0IGRlZGVudCBmcm9tICdkZWRlbnQnO1xuaW1wb3J0IHsgR2VuZXJhbEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuLi8uLi9lcnJvcnMvdHlwZXMnO1xuaW1wb3J0IHsgYXNzZXJ0VHlwZSwgaXMgfSBmcm9tICcuLi8uLi9lcnJvcnMvcnVudGltZS90eXBlLWFzc2VydGlvbnMnO1xuaW1wb3J0IGdldFZpZXdQb3J0V2lkdGggZnJvbSAnLi4vLi4vdXRpbHMvZ2V0LXZpZXdwb3J0LXdpZHRoJztcbmltcG9ydCB7IHdvcmRXcmFwLCBzcGxpdFF1b3RlZFRleHQgfSBmcm9tICcuLi8uLi91dGlscy9zdHJpbmcnO1xuaW1wb3J0IHtcbiAgICBnZXRTU0xPcHRpb25zLFxuICAgIGdldFF1YXJhbnRpbmVPcHRpb25zLFxuICAgIGdldFNjcmVlbnNob3RPcHRpb25zLFxuICAgIGdldFNraXBKc0Vycm9yc09wdGlvbnMsXG4gICAgZ2V0VmlkZW9PcHRpb25zLFxuICAgIGdldE1ldGFPcHRpb25zLFxuICAgIGdldEdyZXBPcHRpb25zLFxuICAgIGdldENvbXBpbGVyT3B0aW9ucyxcbiAgICBnZXREYXNoYm9hcmRPcHRpb25zLFxufSBmcm9tICcuLi8uLi91dGlscy9nZXQtb3B0aW9ucyc7XG5cbmltcG9ydCBnZXRGaWx0ZXJGbiBmcm9tICcuLi8uLi91dGlscy9nZXQtZmlsdGVyLWZuJztcbmltcG9ydCBTQ1JFRU5TSE9UX09QVElPTl9OQU1FUyBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL3NjcmVlbnNob3Qtb3B0aW9uLW5hbWVzJztcbmltcG9ydCBSVU5fT1BUSU9OX05BTUVTIGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vcnVuLW9wdGlvbi1uYW1lcyc7XG5pbXBvcnQge1xuICAgIERpY3Rpb25hcnksXG4gICAgUmVwb3J0ZXJPcHRpb24sXG4gICAgUnVubmVyUnVuT3B0aW9ucyxcbn0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9pbnRlcmZhY2VzJztcbmltcG9ydCBRVUFSQU5USU5FX09QVElPTl9OQU1FUyBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL3F1YXJhbnRpbmUtb3B0aW9uLW5hbWVzJztcbmltcG9ydCB7IGV4dHJhY3ROb2RlUHJvY2Vzc0FyZ3VtZW50cyB9IGZyb20gJy4uL25vZGUtYXJndW1lbnRzLWZpbHRlcic7XG5pbXBvcnQgZ2V0VGVzdGNhZmVWZXJzaW9uIGZyb20gJy4uLy4uL3V0aWxzL2dldC10ZXN0Y2FmZS12ZXJzaW9uJztcbmltcG9ydCB7IHBhcnNlUG9ydE51bWJlciwgcGFyc2VMaXN0IH0gZnJvbSAnLi9wYXJzZS11dGlscyc7XG5pbXBvcnQgQ09NTUFORF9OQU1FUyBmcm9tICcuL2NvbW1hbmQtbmFtZXMnO1xuaW1wb3J0IHsgU2VuZFJlcG9ydFN0YXRlIH0gZnJvbSAnLi4vLi4vZGFzaGJvYXJkL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgU0tJUF9KU19FUlJPUlNfT1BUSU9OU19PQkpFQ1RfT1BUSU9OX05BTUVTIH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9za2lwLWpzLWVycm9ycy1vcHRpb24tbmFtZXMnO1xuXG5jb25zdCBSRU1PVEVfQUxJQVNfUkUgPSAvXnJlbW90ZSg/OjooXFxkKikpPyQvO1xuXG5jb25zdCBERVNDUklQVElPTiA9IGRlZGVudChgXG5cbiAgICBUbyBzZWxlY3QgYSBicm93c2VyLCBzcGVjaWZ5IGFuIGFsaWFzIChcImllXCIsIFwiY2hyb21lXCIsIGV0Yy4pIG9yIHRoZSBwYXRoIHRvIHRoZSBicm93c2VyIGV4ZWN1dGFibGUuIFlvdSBjYW4gc2VsZWN0IG1vcmUgdGhhbiBvbmUgYnJvd3Nlci5cblxuICAgIFVzZSB0aGUgXCJhbGxcIiBhbGlhcyB0byBydW4gdGVzdHMgYWdhaW5zdCBhbGwgYXZhaWxhYmxlIGJyb3dzZXJzLlxuICAgIFVzZSB0aGUgXCJyZW1vdGVcIiBhbGlhcyB0byBydW4gdGVzdHMgb24gcmVtb3RlIGRldmljZXMsIGxpa2Ugc21hcnRwaG9uZXMgb3IgdGFibGV0cy4gU3BlY2lmeSB0aGUgbnVtYmVyIG9mIHJlbW90ZSBicm93c2VycyBhZnRlciB0aGUgc2VtaWNvbG9uIChcInJlbW90ZTozXCIpLlxuICAgIElmIHlvdSB1c2UgYSBicm93c2VyIHByb3ZpZGVyIHBsdWdpbiwgc3BlY2lmeSBib3RoIHRoZSBuYW1lIG9mIHRoZSBwbHVnaW4gYW5kIHRoZSBuYW1lIG9mIHRoZSBicm93c2VyLiBTZXBhcmF0ZSB0aGUgdHdvIHdpdGggYSBzZW1pY29sb24gKFwic2F1Y2VsYWJzOmNocm9tZUA1MVwiKS5cblxuICAgIFRvIGV4ZWN1dGUgbXVsdGlwbGUgdGVzdCBmaWxlcywgc3BlY2lmeSBtdWx0aXBsZSBmaWxlIHBhdGhzIG9yIGdsb2IgcGF0dGVybnMuXG5cbiAgICBGdWxsIGRvY3VtZW50YXRpb246IGh0dHBzOi8vdGVzdGNhZmUuaW8vZG9jdW1lbnRhdGlvbi80MDI2MzkvcmVmZXJlbmNlL2NvbW1hbmQtbGluZS1pbnRlcmZhY2VcbmApO1xuXG5pbnRlcmZhY2UgQ29tbWFuZExpbmVPcHRpb25zIHtcbiAgICB0ZXN0R3JlcD86IHN0cmluZyB8IFJlZ0V4cDtcbiAgICBmaXh0dXJlR3JlcD86IHN0cmluZyB8IFJlZ0V4cDtcbiAgICBzcmM/OiBzdHJpbmdbXTtcbiAgICBicm93c2Vycz86IHN0cmluZ1tdO1xuICAgIGxpc3RCcm93c2Vycz86IGJvb2xlYW4gfCBzdHJpbmc7XG4gICAgdGVzdE1ldGE/OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+O1xuICAgIGZpeHR1cmVNZXRhPzogc3RyaW5nIHwgRGljdGlvbmFyeTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcbiAgICBmaWx0ZXI/OiBGdW5jdGlvbjtcbiAgICBhcHBJbml0RGVsYXk/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgYXNzZXJ0aW9uVGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBzZWxlY3RvclRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgc3BlZWQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgcGFnZUxvYWRUaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHBhZ2VSZXF1ZXN0VGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBhamF4UmVxdWVzdFRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgYnJvd3NlckluaXRUaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHRlc3RFeGVjdXRpb25UaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHJ1bkV4ZWN1dGlvblRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgY29uY3VycmVuY3k/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgcXVhcmFudGluZU1vZGU/OiBib29sZWFuIHwgRGljdGlvbmFyeTxzdHJpbmcgfCBudW1iZXI+O1xuICAgIHBvcnRzPzogc3RyaW5nIHwgbnVtYmVyW107XG4gICAgcHJvdmlkZXJOYW1lPzogc3RyaW5nO1xuICAgIHNzbD86IHN0cmluZyB8IERpY3Rpb25hcnk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj47XG4gICAgcmVwb3J0ZXI/OiBzdHJpbmcgfCBSZXBvcnRlck9wdGlvbltdO1xuICAgIHNjcmVlbnNob3RzPzogRGljdGlvbmFyeTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPiB8IHN0cmluZztcbiAgICBzY3JlZW5zaG90UGF0aFBhdHRlcm4/OiBzdHJpbmc7XG4gICAgc2NyZWVuc2hvdHNPbkZhaWxzPzogYm9vbGVhbjtcbiAgICB2aWRlb09wdGlvbnM/OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW4+O1xuICAgIHZpZGVvRW5jb2RpbmdPcHRpb25zPzogc3RyaW5nIHwgRGljdGlvbmFyeTxudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuPjtcbiAgICBjb21waWxlck9wdGlvbnM/OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW4+O1xuICAgIGNvbmZpZ0ZpbGU/OiBzdHJpbmc7XG4gICAgcHJveHlsZXNzPzogYm9vbGVhbjtcbiAgICB2OEZsYWdzPzogc3RyaW5nW107XG4gICAgZGFzaGJvYXJkT3B0aW9ucz86IHN0cmluZyB8IERpY3Rpb25hcnk8c3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlcj47XG4gICAgYmFzZVVybD86IHN0cmluZztcbiAgICBza2lwSnNFcnJvcnM/OiBib29sZWFuIHwgRGljdGlvbmFyeTxSZWdFeHAgfCBzdHJpbmc+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDTElBcmd1bWVudFBhcnNlciB7XG4gICAgcHJpdmF0ZSBjd2Q6IHN0cmluZztcbiAgICBwcml2YXRlIHJlbW90ZUNvdW50OiBudW1iZXI7XG4gICAgcHVibGljIGlzRGFzaGJvYXJkQ29tbWFuZDogYm9vbGVhbjtcbiAgICBwdWJsaWMgc2VuZFJlcG9ydFN0YXRlOiBTZW5kUmVwb3J0U3RhdGU7XG4gICAgcHVibGljIG9wdHM6IENvbW1hbmRMaW5lT3B0aW9ucztcbiAgICBwdWJsaWMgYXJnczogc3RyaW5nW107XG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXN0Q2FmZUNvbW1hbmQ6IENvbW1hbmQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGN3ZD86IHN0cmluZykge1xuICAgICAgICB0aGlzLmN3ZCAgICAgICAgID0gY3dkIHx8IHByb2Nlc3MuY3dkKCk7XG4gICAgICAgIHRoaXMucmVtb3RlQ291bnQgPSAwO1xuICAgICAgICB0aGlzLm9wdHMgICAgICAgID0ge307XG4gICAgICAgIHRoaXMuYXJncyAgICAgICAgPSBbXTtcblxuICAgICAgICB0aGlzLmlzRGFzaGJvYXJkQ29tbWFuZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRlc3RDYWZlQ29tbWFuZCAgICA9IHRoaXMuX2FkZFRlc3RDYWZlQ29tbWFuZCgpO1xuXG4gICAgICAgIHRoaXMuX3BhdGNoSGVscE91dHB1dCh0aGlzLnRlc3RDYWZlQ29tbWFuZCk7XG4gICAgICAgIENMSUFyZ3VtZW50UGFyc2VyLl9zZXR1cFJvb3RDb21tYW5kKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX3NldHVwUm9vdENvbW1hbmQgKCk6IHZvaWQge1xuICAgICAgICAvLyBOT1RFOiBXZSBhcmUgZm9yY2VkIHRvIHNldCB0aGUgbmFtZSBvZiB0aGUgcm9vdCBjb21tYW5kIHRvICd0ZXN0Y2FmZSdcbiAgICAgICAgLy8gdG8gYXZvaWQgdGhlIGF1dG9tYXRpYyBjb21tYW5kIG5hbWUgY2FsY3VsYXRpb24gdXNpbmcgdGhlIGV4ZWN1dGVkIGZpbGUgcGF0aC5cbiAgICAgICAgLy8gSXQncyBuZWNlc3NhcnkgdG8gY29ycmVjdCBjb21tYW5kIGRlc2NyaXB0aW9uIGZvciBuZXN0ZWQgY29tbWFuZHMuXG4gICAgICAgIChwcm9ncmFtIGFzIHVua25vd24gYXMgQ29tbWFuZCkubmFtZShDT01NQU5EX05BTUVTLlRlc3RDYWZlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfcmVtb3ZlQ29tbWFuZElmRXhpc3RzIChuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy8gTk9URTogQnVnIGluIHRoZSAnY29tbWFuZGVyJyBtb2R1bGUuXG4gICAgICAgIC8vIEl0J3MgcG9zc2libGUgdG8gYWRkIGEgZmV3IGNvbW1hbmRzIHdpdGggdGhlIHNhbWUgbmFtZS5cbiAgICAgICAgLy8gQWxzbywgcmVtb3ZpbmcgaXMgYSBiZXR0ZXIgdGhhbiBjb25kaXRpb25hbGx5IGFkZGluZ1xuICAgICAgICAvLyBiZWNhdXNlIGl0IGFsbG93cyBhdm9pZGluZyB0aGUgcGFyc2VkIG9wdGlvbiBkdXBsaWNhdGVzLlxuICAgICAgICBjb25zdCBpbmRleCA9IChwcm9ncmFtIGFzIHVua25vd24gYXMgQ29tbWFuZCkuY29tbWFuZHMuZmluZEluZGV4KGNtZCA9PiBjbWQubmFtZSgpID09PSBuYW1lKTtcblxuICAgICAgICBpZiAoaW5kZXggPiAtMSlcbiAgICAgICAgICAgIChwcm9ncmFtIGFzIHVua25vd24gYXMgQ29tbWFuZCkuY29tbWFuZHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfZ2V0RGVzY3JpcHRpb24gKCk6IHN0cmluZyB7XG4gICAgICAgIC8vIE5PVEU6IGFkZCBlbXB0eSBsaW5lIHRvIHdvcmthcm91bmQgY29tbWFuZGVyLWZvcmNlZCBpbmRlbnRhdGlvbiBvbiB0aGUgZmlyc3QgbGluZS5cbiAgICAgICAgcmV0dXJuICdcXG4nICsgd29yZFdyYXAoREVTQ1JJUFRJT04sIDIsIGdldFZpZXdQb3J0V2lkdGgocHJvY2Vzcy5zdGRvdXQpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9hZGRUZXN0Q2FmZUNvbW1hbmQgKCk6IENvbW1hbmQge1xuICAgICAgICBDTElBcmd1bWVudFBhcnNlci5fcmVtb3ZlQ29tbWFuZElmRXhpc3RzKENPTU1BTkRfTkFNRVMuVGVzdENhZmUpO1xuXG4gICAgICAgIHJldHVybiAocHJvZ3JhbSBhcyB1bmtub3duIGFzIENvbW1hbmQpXG4gICAgICAgICAgICAuY29tbWFuZChDT01NQU5EX05BTUVTLlRlc3RDYWZlLCB7IGlzRGVmYXVsdDogdHJ1ZSB9KVxuICAgICAgICAgICAgLnZlcnNpb24oZ2V0VGVzdGNhZmVWZXJzaW9uKCksICctdiwgLS12ZXJzaW9uJylcbiAgICAgICAgICAgIC51c2FnZSgnW29wdGlvbnNdIDxjb21tYS1zZXBhcmF0ZWQtYnJvd3Nlci1saXN0PiA8ZmlsZS1vci1nbG9iIC4uLj4nKVxuICAgICAgICAgICAgLmRlc2NyaXB0aW9uKENMSUFyZ3VtZW50UGFyc2VyLl9nZXREZXNjcmlwdGlvbigpKVxuXG4gICAgICAgICAgICAuYWxsb3dVbmtub3duT3B0aW9uKClcbiAgICAgICAgICAgIC5vcHRpb24oJy1iLCAtLWxpc3QtYnJvd3NlcnMgW3Byb3ZpZGVyXScsICdkaXNwbGF5IHRoZSBsaXN0IG9mIGFsaWFzZXMgZm9yIGF2YWlsYWJsZSBicm93c2VycyBhbmQgYnJvd3NlciBwcm92aWRlcnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLXIsIC0tcmVwb3J0ZXIgPG5hbWVbOm91dHB1dEZpbGVdWywuLi5dPicsICdzcGVjaWZ5IHJlcG9ydGVycyBhbmQgcmVwb3J0IGZpbGVuYW1lcycpXG4gICAgICAgICAgICAub3B0aW9uKCctcywgLS1zY3JlZW5zaG90cyA8b3B0aW9uPXZhbHVlWywuLi5dPicsICdzcGVjaWZ5IHNjcmVlbnNob3Qgb3B0aW9ucycpXG4gICAgICAgICAgICAub3B0aW9uKCctUywgLS1zY3JlZW5zaG90cy1vbi1mYWlscycsICd0YWtlIGEgc2NyZWVuc2hvdCBvbiB0ZXN0IGZhaWx1cmUnKVxuICAgICAgICAgICAgLm9wdGlvbignLXAsIC0tc2NyZWVuc2hvdC1wYXRoLXBhdHRlcm4gPHBhdHRlcm4+JywgJ3NwZWNpZnkgdGhlIG5hbWluZyBzY2hlbWEgZm9yIHNjcmVlbnNob3QgZmlsZW5hbWVzIGFuZCBwYXRoczogJHtCUk9XU0VSfSwgJHtCUk9XU0VSX1ZFUlNJT059LCAke09TfSwgZXRjLicpXG4gICAgICAgICAgICAub3B0aW9uKCctcSwgLS1xdWFyYW50aW5lLW1vZGUgW29wdGlvbj12YWx1ZSwuLi5dJywgJ2VuYWJsZSBhbmQgY29uZmlndXJlIHF1YXJhbnRpbmUgbW9kZScpXG4gICAgICAgICAgICAub3B0aW9uKCctZCwgLS1kZWJ1Zy1tb2RlJywgJ2VuYWJsZSBkZWJ1ZyBtb2RlLiBXaGVuIHlvdSBydW4gVGVzdENhZmUgaW4gZGVidWcgbW9kZSwgaXQgZXhlY3V0ZXMgdGVzdCBzdGVwcyBvbmUgYnkgb25lLCBhbmQgcGF1c2VzIHRoZSB0ZXN0IGFmdGVyIGVhY2ggc3RlcC4nKVxuICAgICAgICAgICAgLm9wdGlvbignLWUsIC0tc2tpcC1qcy1lcnJvcnMgW29wdGlvbj12YWx1ZSwuLi5dJywgJ2lnbm9yZSBKYXZhU2NyaXB0IGVycm9ycyB0aGF0IG1hdGNoIHRoZSBzcGVjaWZpZWQgY3JpdGVyaWEnKVxuICAgICAgICAgICAgLm9wdGlvbignLXUsIC0tc2tpcC11bmNhdWdodC1lcnJvcnMnLCAnaWdub3JlIHVuY2F1Z2h0IGVycm9ycyBhbmQgdW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9ucycpXG4gICAgICAgICAgICAub3B0aW9uKCctdCwgLS10ZXN0IDxuYW1lPicsICdmaWx0ZXIgdGVzdHMgYnkgbmFtZScpXG4gICAgICAgICAgICAub3B0aW9uKCctVCwgLS10ZXN0LWdyZXAgPHBhdHRlcm4+JywgJ2ZpbHRlciB0ZXN0cyBieSByZWd1bGFyIGV4cHJlc3Npb24nKVxuICAgICAgICAgICAgLm9wdGlvbignLWYsIC0tZml4dHVyZSA8bmFtZT4nLCAnZmlsdGVyIGZpeHR1cmVzIGJ5IG5hbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLUYsIC0tZml4dHVyZS1ncmVwIDxwYXR0ZXJuPicsICdmaWx0ZXIgZml4dHVyZXMgYnkgcmVndWxhciBleHByZXNzaW9uJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1hLCAtLWFwcCA8Y29tbWFuZD4nLCAnZXhlY3V0ZSBhIHNoZWxsIGNvbW1hbmQgb24gc3RhcnR1cCB0byBsYXVuY2ggYSB3ZWIgYXBwbGljYXRpb24gb3IgcGVyZm9ybSBvdGhlciBwcmVwYXJhdG9yeSB0YXNrcycpXG4gICAgICAgICAgICAub3B0aW9uKCctYywgLS1jb25jdXJyZW5jeSA8bnVtYmVyPicsICdydW4gdGVzdHMgY29uY3VycmVudGx5JylcbiAgICAgICAgICAgIC5vcHRpb24oJy1MLCAtLWxpdmUnLCAnZW5hYmxlIGxpdmUgbW9kZS4gTGl2ZSBtb2RlIHJlc3RhcnRzIHRlc3RzIHdoZW4geW91IG1ha2UgY2hhbmdlcyB0byB0ZXN0IGZpbGVzLicpXG4gICAgICAgICAgICAub3B0aW9uKCctLXRlc3QtbWV0YSA8a2V5PXZhbHVlWyxrZXkyPXZhbHVlMiwuLi5dPicsICdmaWx0ZXIgdGVzdHMgYnkgbWV0YWRhdGEnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1maXh0dXJlLW1ldGEgPGtleT12YWx1ZVssa2V5Mj12YWx1ZTIsLi4uXT4nLCAnZmlsdGVyIGZpeHR1cmVzIGJ5IG1ldGFkYXRhJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZGVidWctb24tZmFpbCcsICdwYXVzZSB0ZXN0cyBvbiBmYWlsdXJlJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tbmF0aXZlLWF1dG9tYXRpb24nLCAnZW5hYmxlIG5hdGl2ZSBhdXRvbWF0aW9uJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tYXBwLWluaXQtZGVsYXkgPG1zPicsICdzcGVjaWZ5IHlvdXIgYXBwbGljYXRpb25gcyBpbml0aWFsaXphdGlvbiB0aW1lJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tc2VsZWN0b3ItdGltZW91dCA8bXM+JywgJ3NwZWNpZnkgdGhlIG1heGltdW0gU2VsZWN0b3IgcmVzb2x1dGlvbiB0aW1lJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tYXNzZXJ0aW9uLXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSBtYXhpbXVtIEFzc2VydGlvbiByZXNvbHV0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1wYWdlLWxvYWQtdGltZW91dCA8bXM+JywgJ3NwZWNpZnkgdGhlIG1heGltdW0gdGltZSBiZXR3ZWVuIHRoZSB3aW5kb3cubG9hZCBldmVudCBhbmQgdGhlIERPTUNvbnRlbnRMb2FkZWQgZXZlbnQgKG1zKScpXG4gICAgICAgICAgICAub3B0aW9uKCctLXBhZ2UtcmVxdWVzdC10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgbWF4aW11bSBwYWdlIHJlcXVlc3QgcmVzb2x1dGlvbiB0aW1lJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tYWpheC1yZXF1ZXN0LXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSBtYXhpbXVtIEFKQVggcmVxdWVzdCByZXNvbHV0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1icm93c2VyLWluaXQtdGltZW91dCA8bXM+JywgJ3NwZWNpZnkgdGhlIG1heGltdW0gYnJvd3NlciBzdGFydHVwIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS10ZXN0LWV4ZWN1dGlvbi10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgbWF4aW11bSB0ZXN0IGV4ZWN1dGlvbiB0aW1lJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcnVuLWV4ZWN1dGlvbi10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgbWF4aW11bSB0ZXN0IHJ1biB0aW1lJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tc3BlZWQgPGZhY3Rvcj4nLCAnc2V0IHRlc3QgZXhlY3V0aW9uIHNwZWVkICgwLjAxIC4uLiAxKScpXG4gICAgICAgICAgICAub3B0aW9uKCctLXBvcnRzIDxwb3J0MSxwb3J0Mj4nLCAnc3BlY2lmeSBuZXR3b3JrIHBvcnRzIHRvIHVzZSBkdXJpbmcgdGhlIHRlc3QgcnVuLiBUaGUgc2Vjb25kIHBvcnQgaXMgbmVjZXNzYXJ5IHRvIGFjY2VzcyBjcm9zcy1kb21haW4gcmVzb3VyY2VzLicpXG4gICAgICAgICAgICAub3B0aW9uKCctLWhvc3RuYW1lIDxuYW1lPicsIGBzcGVjaWZ5IHlvdXIgaG9zdG5hbWUuIE5lY2Vzc2FyeSB0byBydW4gdGVzdHMgaW4gcmVtb3RlIGJyb3dzZXJzLmApXG4gICAgICAgICAgICAub3B0aW9uKCctLXByb3h5IDxob3N0PicsICdzcGVjaWZ5IHRoZSBwcm94eSBzZXJ2ZXIgaG9zdG5hbWUgb3IgSVAgYWRkcmVzcycpXG4gICAgICAgICAgICAub3B0aW9uKCctLXByb3h5LWJ5cGFzcyA8cnVsZXM+JywgJ3NwZWNpZnkgVVJMcyB0aGF0IGJ5cGFzcyB0aGUgcHJveHkgc2VydmVyJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tc3NsIDxvcHRpb25zPicsICdzcGVjaWZ5IFNTTCBvcHRpb25zIHRvIHJ1biBUZXN0Q2FmZSBvdmVyIEhUVFBTJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tdmlkZW8gPHBhdGg+JywgJ3JlY29yZCB2aWRlb3Mgb2YgdGVzdCBydW5zJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tdmlkZW8tb3B0aW9ucyA8b3B0aW9uPXZhbHVlWywuLi5dPicsICdzcGVjaWZ5IHZpZGVvIHJlY29yZGluZyBvcHRpb25zJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tdmlkZW8tZW5jb2Rpbmctb3B0aW9ucyA8b3B0aW9uPXZhbHVlWywuLi5dPicsICdzcGVjaWZ5IHZpZGVvIGVuY29kaW5nIG9wdGlvbnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kZXYnLCAnbG9nIGFuZCBkaWFnbm9zZSBUZXN0Q2FmZSBlcnJvcnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1xci1jb2RlJywgJ291dHB1dCBRUiBjb2RlcyB3aXRoIFVSTHMgZm9yIHJlbW90ZSBicm93c2VyIGNvbm5lY3Rpb25zJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tc2YsIC0tc3RvcC1vbi1maXJzdC1mYWlsJywgJ3N0b3AgdGhlIHRlc3QgcnVuIGlmIGFueSB0ZXN0IGZhaWxzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tY29uZmlnLWZpbGUgPHBhdGg+JywgJ3NwZWNpZnkgYSBjdXN0b20gcGF0aCB0byB0aGUgdGVzdGNhZmUgY29uZmlndXJhdGlvbiBmaWxlJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tdHMtY29uZmlnLXBhdGggPHBhdGg+JywgJ3NwZWNpZnkgdGhlIHBhdGggdG8gYSBjdXN0b20gVHlwZVNjcmlwdCBjb25maWd1cmF0aW9uIGZpbGUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1jcywgLS1jbGllbnQtc2NyaXB0cyA8cGF0aHM+JywgJ2luamVjdCBjbGllbnQtc2lkZSBzY3JpcHRzIGludG8gdGhlIHBhZ2UnLCBwYXJzZUxpc3QsIFtdKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kaXNhYmxlLXBhZ2UtY2FjaGluZycsICdkbyBub3QgY2FjaGUgcGFnZXMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kaXNhYmxlLXBhZ2UtcmVsb2FkcycsICdkbyBub3QgcmVsb2FkIHBhZ2VzIGJldHdlZW4gdGVzdHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1yZXRyeS10ZXN0LXBhZ2VzJywgJ3JldHJ5IHBhZ2UgcmVxdWVzdHMgaW4gY2FzZSBvZiBmYWlsdXJlJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZGlzYWJsZS1zY3JlZW5zaG90cycsICdkaXNhYmxlIHNjcmVlbnNob3RzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tc2NyZWVuc2hvdHMtZnVsbC1wYWdlJywgJ2VuYWJsZSBmdWxsLXBhZ2Ugc2NyZWVuc2hvdHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1jb21waWxlci1vcHRpb25zIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgdGVzdCBjb21waWxhdGlvbiBzZXR0aW5ncycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRpc2FibGUtbXVsdGlwbGUtd2luZG93cycsICdkaXNhYmxlIHRoZSBtdWx0aS13aW5kb3cgbW9kZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRpc2FibGUtaHR0cDInLCAnZm9yY2UgdGhlIHByb3h5IHRvIGlzc3VlIEhUVFAvMS4xIHJlcXVlc3RzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tY2FjaGUnLCAnY2FjaGUgd2ViIGFzc2V0cyBiZXR3ZWVuIHRlc3QgcnVucycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWJhc2UtdXJsIDx1cmw+JywgJ3NldCB0aGUgYmFzZSB1cmwgZm9yIHRoZSB0ZXN0IHJ1bicpXG4gICAgICAgICAgICAub3B0aW9uKCctLWVzbScsICdlbmFibGUgRVNNIG1vZHVsZSBzdXBwb3J0JylcblxuICAgICAgICAgICAgLy8gTk9URTogdGhlc2Ugb3B0aW9ucyB3aWxsIGJlIGhhbmRsZWQgYnkgY2hhbGsgaW50ZXJuYWxseVxuICAgICAgICAgICAgLm9wdGlvbignLS1jb2xvcicsICdmb3JjZSBUZXN0Q2FmZSB0byBmb3JtYXQgQ0xJIG91dHB1dCB3aXRoIGNvbG9yJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tbm8tY29sb3InLCAnZGlzYWJsZSB0ZXh0IGNvbG9yIGZvcm1hdHRpbmcgaW4gdGhlIENMSScpXG5cbiAgICAgICAgICAgIC8vIE5PVEU6IFRlbXBvcmFyaWx5IGV4Y2x1ZGUgZXhwZXJpbWVudGFsIG9wdGlvbnMgZnJvbSAtLWhlbHAgb3V0cHV0XG4gICAgICAgICAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZXhwZXJpbWVudGFsLWRlYnVnJywgJ2VuYWJsZSBleHBlcmltZW50YWwgdGhlIGRlYnVnIG1vZGUnKS5oaWRlSGVscCgpKVxuICAgICAgICAgICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWRpc2FibGUtY3Jvc3MtZG9tYWluJywgJ2V4cGVyaW1lbnRhbCcpLmhpZGVIZWxwKCkpXG4gICAgICAgICAgICAuYWN0aW9uKChvcHRzOiBDb21tYW5kTGluZU9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wdHMgPSBvcHRzO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGF0Y2hIZWxwT3V0cHV0IChkZWZhdWx0U3ViQ29tbWFuZDogQ29tbWFuZCk6IHZvaWQge1xuICAgICAgICAvLyBOT1RFOiBJbiB0aGUgZnV0dXJlIHZlcnNpb25zIG9mIHRoZSAnY29tbWFuZGVyJyBtb2R1bGVcbiAgICAgICAgLy8gbmVlZCB0byBpbnZlc3RpZ2F0ZSBob3cgdG8gcmVtb3ZlIHRoaXMgaGFjay5cbiAgICAgICAgKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKS5vdXRwdXRIZWxwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY29uc3Qgc3RvcmVkUGFyZW50ID0gZGVmYXVsdFN1YkNvbW1hbmQucGFyZW50O1xuXG4gICAgICAgICAgICBkZWZhdWx0U3ViQ29tbWFuZC5wYXJlbnQgPSBudWxsO1xuXG4gICAgICAgICAgICBkZWZhdWx0U3ViQ29tbWFuZC5vdXRwdXRIZWxwKCk7XG5cbiAgICAgICAgICAgIGRlZmF1bHRTdWJDb21tYW5kLnBhcmVudCA9IHN0b3JlZFBhcmVudDtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jaGVja0FuZENvdW50UmVtb3RlcyAoYnJvd3Nlcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHJlbW90ZU1hdGNoID0gYnJvd3Nlci5tYXRjaChSRU1PVEVfQUxJQVNfUkUpO1xuXG4gICAgICAgIGlmIChyZW1vdGVNYXRjaCkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdGVDb3VudCArPSBwYXJzZUludChyZW1vdGVNYXRjaFsxXSwgMTApIHx8IDE7XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBfcGFyc2VGaWx0ZXJpbmdPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy50ZXN0R3JlcClcbiAgICAgICAgICAgIHRoaXMub3B0cy50ZXN0R3JlcCA9IGdldEdyZXBPcHRpb25zKCctLXRlc3QtZ3JlcCcsIHRoaXMub3B0cy50ZXN0R3JlcCBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdHMuZml4dHVyZUdyZXApXG4gICAgICAgICAgICB0aGlzLm9wdHMuZml4dHVyZUdyZXAgPSBnZXRHcmVwT3B0aW9ucygnLS1maXh0dXJlLWdyZXAnLCB0aGlzLm9wdHMuZml4dHVyZUdyZXAgYXMgc3RyaW5nKTtcblxuICAgICAgICBpZiAodGhpcy5vcHRzLnRlc3RNZXRhKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnRlc3RNZXRhID0gYXdhaXQgZ2V0TWV0YU9wdGlvbnMoJy0tdGVzdC1tZXRhJywgdGhpcy5vcHRzLnRlc3RNZXRhIGFzIHN0cmluZyk7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0cy5maXh0dXJlTWV0YSlcbiAgICAgICAgICAgIHRoaXMub3B0cy5maXh0dXJlTWV0YSA9IGF3YWl0IGdldE1ldGFPcHRpb25zKCctLWZpeHR1cmUtbWV0YScsIHRoaXMub3B0cy5maXh0dXJlTWV0YSBhcyBzdHJpbmcpO1xuXG4gICAgICAgIHRoaXMub3B0cy5maWx0ZXIgPSBnZXRGaWx0ZXJGbih0aGlzLm9wdHMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQXBwSW5pdERlbGF5ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5hcHBJbml0RGVsYXkpIHtcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgdGVzdGVkIGFwcCBpbml0aWFsaXphdGlvbiBkZWxheScsIHRoaXMub3B0cy5hcHBJbml0RGVsYXkpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMuYXBwSW5pdERlbGF5ID0gcGFyc2VJbnQodGhpcy5vcHRzLmFwcEluaXREZWxheSBhcyBzdHJpbmcsIDEwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlU2VsZWN0b3JUaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5zZWxlY3RvclRpbWVvdXQpIHtcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgU2VsZWN0b3IgdGltZW91dCcsIHRoaXMub3B0cy5zZWxlY3RvclRpbWVvdXQpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2VsZWN0b3JUaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLnNlbGVjdG9yVGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQXNzZXJ0aW9uVGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuYXNzZXJ0aW9uVGltZW91dCkge1xuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBhc3NlcnRpb24gdGltZW91dCcsIHRoaXMub3B0cy5hc3NlcnRpb25UaW1lb3V0KTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLmFzc2VydGlvblRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMuYXNzZXJ0aW9uVGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlUGFnZUxvYWRUaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5wYWdlTG9hZFRpbWVvdXQpIHtcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgcGFnZSBsb2FkIHRpbWVvdXQnLCB0aGlzLm9wdHMucGFnZUxvYWRUaW1lb3V0KTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLnBhZ2VMb2FkVGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5wYWdlTG9hZFRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVBhZ2VSZXF1ZXN0VGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vcHRzLnBhZ2VSZXF1ZXN0VGltZW91dClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIHBhZ2UgcmVxdWVzdCB0aW1lb3V0JywgdGhpcy5vcHRzLnBhZ2VSZXF1ZXN0VGltZW91dCk7XG5cbiAgICAgICAgdGhpcy5vcHRzLnBhZ2VSZXF1ZXN0VGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5wYWdlUmVxdWVzdFRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VBamF4UmVxdWVzdFRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMub3B0cy5hamF4UmVxdWVzdFRpbWVvdXQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBBSkFYIHJlcXVlc3QgdGltZW91dCcsIHRoaXMub3B0cy5hamF4UmVxdWVzdFRpbWVvdXQpO1xuXG4gICAgICAgIHRoaXMub3B0cy5hamF4UmVxdWVzdFRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMuYWpheFJlcXVlc3RUaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQnJvd3NlckluaXRUaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdHMuYnJvd3NlckluaXRUaW1lb3V0KVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgYnJvd3NlciBpbml0aWFsaXphdGlvbiB0aW1lb3V0JywgdGhpcy5vcHRzLmJyb3dzZXJJbml0VGltZW91dCk7XG5cbiAgICAgICAgdGhpcy5vcHRzLmJyb3dzZXJJbml0VGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5icm93c2VySW5pdFRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VUZXN0RXhlY3V0aW9uVGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMudGVzdEV4ZWN1dGlvblRpbWVvdXQpIHtcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgdGVzdCBleGVjdXRpb24gdGltZW91dCcsIHRoaXMub3B0cy50ZXN0RXhlY3V0aW9uVGltZW91dCk7XG5cbiAgICAgICAgICAgIHRoaXMub3B0cy50ZXN0RXhlY3V0aW9uVGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy50ZXN0RXhlY3V0aW9uVGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlUnVuRXhlY3V0aW9uVGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMucnVuRXhlY3V0aW9uVGltZW91dCkge1xuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBydW4gZXhlY3V0aW9uIHRpbWVvdXQnLCB0aGlzLm9wdHMucnVuRXhlY3V0aW9uVGltZW91dCk7XG5cbiAgICAgICAgICAgIHRoaXMub3B0cy5ydW5FeGVjdXRpb25UaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLnJ1bkV4ZWN1dGlvblRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVNwZWVkICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5zcGVlZClcbiAgICAgICAgICAgIHRoaXMub3B0cy5zcGVlZCA9IHBhcnNlRmxvYXQodGhpcy5vcHRzLnNwZWVkIGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VDb25jdXJyZW5jeSAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuY29uY3VycmVuY3kpXG4gICAgICAgICAgICB0aGlzLm9wdHMuY29uY3VycmVuY3kgPSBwYXJzZUludCh0aGlzLm9wdHMuY29uY3VycmVuY3kgYXMgc3RyaW5nLCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VRdWFyYW50aW5lT3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMucXVhcmFudGluZU1vZGUpXG4gICAgICAgICAgICB0aGlzLm9wdHMucXVhcmFudGluZU1vZGUgPSBhd2FpdCBnZXRRdWFyYW50aW5lT3B0aW9ucygnLS1xdWFyYW50aW5lLW1vZGUnLCB0aGlzLm9wdHMucXVhcmFudGluZU1vZGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3BhcnNlU2tpcEpzRXJyb3JzT3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuc2tpcEpzRXJyb3JzKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnNraXBKc0Vycm9ycyA9IGF3YWl0IGdldFNraXBKc0Vycm9yc09wdGlvbnMoJy0tc2tpcC1qcy1lcnJvcnMnLCB0aGlzLm9wdHMuc2tpcEpzRXJyb3JzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVBvcnRzICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5wb3J0cykge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkUG9ydHMgPSAodGhpcy5vcHRzLnBvcnRzIGFzIHN0cmluZykgLyogZXNsaW50LWRpc2FibGUtbGluZSBuby1leHRyYS1wYXJlbnMgKi9cbiAgICAgICAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgIC5tYXAocGFyc2VQb3J0TnVtYmVyKTtcblxuICAgICAgICAgICAgaWYgKHBhcnNlZFBvcnRzLmxlbmd0aCA8IDIpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEdlbmVyYWxFcnJvcihSVU5USU1FX0VSUk9SUy5wb3J0c09wdGlvblJlcXVpcmVzVHdvTnVtYmVycyk7XG5cbiAgICAgICAgICAgIHRoaXMub3B0cy5wb3J0cyA9IHBhcnNlZFBvcnRzIGFzIG51bWJlcltdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VCcm93c2Vyc0Zyb21BcmdzICgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYnJvd3NlcnNBcmcgPSB0aGlzLnRlc3RDYWZlQ29tbWFuZC5hcmdzWzBdIHx8ICcnO1xuXG4gICAgICAgIHRoaXMub3B0cy5icm93c2VycyA9IHNwbGl0UXVvdGVkVGV4dChicm93c2Vyc0FyZywgJywnKVxuICAgICAgICAgICAgLmZpbHRlcihicm93c2VyID0+IGJyb3dzZXIgJiYgdGhpcy5fY2hlY2tBbmRDb3VudFJlbW90ZXMoYnJvd3NlcikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBfcGFyc2VTc2xPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5zc2wpXG4gICAgICAgICAgICB0aGlzLm9wdHMuc3NsID0gYXdhaXQgZ2V0U1NMT3B0aW9ucyh0aGlzLm9wdHMuc3NsIGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VSZXBvcnRlcnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCByZXBvcnRlcnMgPSB0aGlzLm9wdHMucmVwb3J0ZXIgPyAodGhpcy5vcHRzLnJlcG9ydGVyIGFzIHN0cmluZykuc3BsaXQoJywnKSA6IFtdOyAvKiBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWV4dHJhLXBhcmVucyovXG5cbiAgICAgICAgdGhpcy5vcHRzLnJlcG9ydGVyID0gcmVwb3J0ZXJzLm1hcCgocmVwb3J0ZXI6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VwYXJhdG9ySW5kZXggPSByZXBvcnRlci5pbmRleE9mKCc6Jyk7XG5cbiAgICAgICAgICAgIGlmIChzZXBhcmF0b3JJbmRleCA8IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgbmFtZTogcmVwb3J0ZXIgfTtcblxuICAgICAgICAgICAgY29uc3QgbmFtZSAgID0gcmVwb3J0ZXIuc3Vic3RyaW5nKDAsIHNlcGFyYXRvckluZGV4KTtcbiAgICAgICAgICAgIGNvbnN0IG91dHB1dCA9IHJlcG9ydGVyLnN1YnN0cmluZyhzZXBhcmF0b3JJbmRleCArIDEpO1xuXG4gICAgICAgICAgICByZXR1cm4geyBuYW1lLCBvdXRwdXQgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VGaWxlTGlzdCAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3B0cy5zcmMgPSB0aGlzLnRlc3RDYWZlQ29tbWFuZC5hcmdzLnNsaWNlKDEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3BhcnNlU2NyZWVuc2hvdE9wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnNjcmVlbnNob3RzKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnNjcmVlbnNob3RzID0gYXdhaXQgZ2V0U2NyZWVuc2hvdE9wdGlvbnModGhpcy5vcHRzLnNjcmVlbnNob3RzKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5vcHRzLnNjcmVlbnNob3RzID0ge307XG5cbiAgICAgICAgaWYgKCFoYXModGhpcy5vcHRzLnNjcmVlbnNob3RzLCBTQ1JFRU5TSE9UX09QVElPTl9OQU1FUy5wYXRoUGF0dGVybikgJiYgdGhpcy5vcHRzLnNjcmVlbnNob3RQYXRoUGF0dGVybilcbiAgICAgICAgICAgIHRoaXMub3B0cy5zY3JlZW5zaG90c1tTQ1JFRU5TSE9UX09QVElPTl9OQU1FUy5wYXRoUGF0dGVybl0gPSB0aGlzLm9wdHMuc2NyZWVuc2hvdFBhdGhQYXR0ZXJuO1xuXG4gICAgICAgIGlmICghaGFzKHRoaXMub3B0cy5zY3JlZW5zaG90cywgU0NSRUVOU0hPVF9PUFRJT05fTkFNRVMudGFrZU9uRmFpbHMpICYmIHRoaXMub3B0cy5zY3JlZW5zaG90c09uRmFpbHMpXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2NyZWVuc2hvdHNbU0NSRUVOU0hPVF9PUFRJT05fTkFNRVMudGFrZU9uRmFpbHNdID0gdGhpcy5vcHRzLnNjcmVlbnNob3RzT25GYWlscztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wYXJzZVZpZGVvT3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMudmlkZW9PcHRpb25zKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnZpZGVvT3B0aW9ucyA9IGF3YWl0IGdldFZpZGVvT3B0aW9ucyh0aGlzLm9wdHMudmlkZW9PcHRpb25zIGFzIHN0cmluZyk7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0cy52aWRlb0VuY29kaW5nT3B0aW9ucylcbiAgICAgICAgICAgIHRoaXMub3B0cy52aWRlb0VuY29kaW5nT3B0aW9ucyA9IGF3YWl0IGdldFZpZGVvT3B0aW9ucyh0aGlzLm9wdHMudmlkZW9FbmNvZGluZ09wdGlvbnMgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wYXJzZUNvbXBpbGVyT3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy5vcHRzLmNvbXBpbGVyT3B0aW9ucylcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCBwYXJzZWRDb21waWxlck9wdGlvbnMgPSBhd2FpdCBnZXRDb21waWxlck9wdGlvbnModGhpcy5vcHRzLmNvbXBpbGVyT3B0aW9ucyBhcyBzdHJpbmcpO1xuICAgICAgICBjb25zdCByZXN1bHRDb21waWxlck9wdGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHBhcnNlZENvbXBpbGVyT3B0aW9ucykpXG4gICAgICAgICAgICBzZXQocmVzdWx0Q29tcGlsZXJPcHRpb25zLCBrZXksIHZhbHVlKTtcblxuICAgICAgICB0aGlzLm9wdHMuY29tcGlsZXJPcHRpb25zID0gcmVzdWx0Q29tcGlsZXJPcHRpb25zO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3BhcnNlRGFzaGJvYXJkT3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuZGFzaGJvYXJkT3B0aW9ucylcbiAgICAgICAgICAgIHRoaXMub3B0cy5kYXNoYm9hcmRPcHRpb25zID0gYXdhaXQgZ2V0RGFzaGJvYXJkT3B0aW9ucyh0aGlzLm9wdHMuZGFzaGJvYXJkT3B0aW9ucyBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlTGlzdEJyb3dzZXJzICgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGlzdEJyb3dzZXJPcHRpb24gPSB0aGlzLm9wdHMubGlzdEJyb3dzZXJzO1xuXG4gICAgICAgIHRoaXMub3B0cy5saXN0QnJvd3NlcnMgPSAhIXRoaXMub3B0cy5saXN0QnJvd3NlcnM7XG5cbiAgICAgICAgaWYgKCF0aGlzLm9wdHMubGlzdEJyb3dzZXJzKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMub3B0cy5wcm92aWRlck5hbWUgPSB0eXBlb2YgbGlzdEJyb3dzZXJPcHRpb24gPT09ICdzdHJpbmcnID8gbGlzdEJyb3dzZXJPcHRpb24gOiAnbG9jYWxseS1pbnN0YWxsZWQnO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9wcmVwYXJlQm9vbGVhbk9yT2JqZWN0T3B0aW9uIChhcmd2OiBzdHJpbmdbXSwgb3B0aW9uTmFtZXM6IHN0cmluZ1tdLCBzdWJPcHRpb25zTmFtZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIC8vIE5PVEU6IG1vdmUgb3B0aW9ucyB0byB0aGUgZW5kIG9mIHRoZSBhcnJheSB0byBjb3JyZWN0bHkgcGFyc2UgYm90aCBCb29sZWFuIGFuZCBPYmplY3QgdHlwZSBhcmd1bWVudHMgKEdILTYyMzEpXG4gICAgICAgIGNvbnN0IG9wdGlvbkluZGV4ID0gYXJndi5maW5kSW5kZXgoXG4gICAgICAgICAgICBlbCA9PiBvcHRpb25OYW1lcy5zb21lKG9wdCA9PiBlbC5zdGFydHNXaXRoKG9wdCkpKTtcblxuICAgICAgICBpZiAob3B0aW9uSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgY29uc3QgaXNOb3RMYXN0T3B0aW9uICAgICAgID0gb3B0aW9uSW5kZXggPCBhcmd2Lmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBjb25zdCBzaG91bGRNb3ZlT3B0aW9uVG9FbmQgPSBpc05vdExhc3RPcHRpb24gJiZcbiAgICAgICAgICAgICAgICAhc3ViT3B0aW9uc05hbWVzLnNvbWUob3B0ID0+IGFyZ3Zbb3B0aW9uSW5kZXggKyAxXS5zdGFydHNXaXRoKG9wdCkpO1xuXG4gICAgICAgICAgICBpZiAoc2hvdWxkTW92ZU9wdGlvblRvRW5kKVxuICAgICAgICAgICAgICAgIGFyZ3YucHVzaChhcmd2LnNwbGljZShvcHRpb25JbmRleCwgMSlbMF0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHBhcnNlIChhcmd2OiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBDTElBcmd1bWVudFBhcnNlci5fcHJlcGFyZUJvb2xlYW5Pck9iamVjdE9wdGlvbihhcmd2LCBbJy1xJywgJy0tcXVhcmFudGluZS1tb2RlJ10sIE9iamVjdC52YWx1ZXMoUVVBUkFOVElORV9PUFRJT05fTkFNRVMpKTtcbiAgICAgICAgQ0xJQXJndW1lbnRQYXJzZXIuX3ByZXBhcmVCb29sZWFuT3JPYmplY3RPcHRpb24oYXJndiwgWyctZScsICctLXNraXAtanMtZXJyb3JzJ10sIE9iamVjdC52YWx1ZXMoU0tJUF9KU19FUlJPUlNfT1BUSU9OU19PQkpFQ1RfT1BUSU9OX05BTUVTKSk7XG5cbiAgICAgICAgY29uc3QgeyBhcmdzLCB2OEZsYWdzIH0gPSBleHRyYWN0Tm9kZVByb2Nlc3NBcmd1bWVudHMoYXJndik7XG5cbiAgICAgICAgKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKS5wYXJzZShhcmdzKTtcblxuICAgICAgICB0aGlzLmFyZ3MgPSAocHJvZ3JhbSBhcyB1bmtub3duIGFzIENvbW1hbmQpLmFyZ3M7XG4gICAgICAgIHRoaXMub3B0cyA9IE9iamVjdC5hc3NpZ24odGhpcy5vcHRzLCB7IHY4RmxhZ3MgfSk7XG5cbiAgICAgICAgdGhpcy5fcGFyc2VMaXN0QnJvd3NlcnMoKTtcblxuICAgICAgICAvLyBOT1RFOiB0aGUgJy0tbGlzdC1icm93c2Vycycgb3B0aW9uIG9ubHkgbGlzdHMgYnJvd3NlcnMgYW5kIGltbWVkaWF0ZWx5IGV4aXRzIHRoZSBhcHAuXG4gICAgICAgIC8vIFRoZXJlZm9yZSwgd2UgZG9uJ3QgbmVlZCB0byBwcm9jZXNzIG90aGVyIGFyZ3VtZW50cy5cbiAgICAgICAgaWYgKHRoaXMub3B0cy5saXN0QnJvd3NlcnMpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5fcGFyc2VTZWxlY3RvclRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VBc3NlcnRpb25UaW1lb3V0KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlUGFnZUxvYWRUaW1lb3V0KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlUGFnZVJlcXVlc3RUaW1lb3V0KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlQWpheFJlcXVlc3RUaW1lb3V0KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlQnJvd3NlckluaXRUaW1lb3V0KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlVGVzdEV4ZWN1dGlvblRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VSdW5FeGVjdXRpb25UaW1lb3V0KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlQXBwSW5pdERlbGF5KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlU3BlZWQoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VQb3J0cygpO1xuICAgICAgICB0aGlzLl9wYXJzZUJyb3dzZXJzRnJvbUFyZ3MoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VDb25jdXJyZW5jeSgpO1xuICAgICAgICB0aGlzLl9wYXJzZUZpbGVMaXN0KCk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5fcGFyc2VGaWx0ZXJpbmdPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlUXVhcmFudGluZU9wdGlvbnMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fcGFyc2VTa2lwSnNFcnJvcnNPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlU2NyZWVuc2hvdE9wdGlvbnMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fcGFyc2VWaWRlb09wdGlvbnMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fcGFyc2VDb21waWxlck9wdGlvbnMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fcGFyc2VTc2xPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlUmVwb3J0ZXJzKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlRGFzaGJvYXJkT3B0aW9ucygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRSdW5PcHRpb25zICgpOiBSdW5uZXJSdW5PcHRpb25zIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgICAgICBSVU5fT1BUSU9OX05BTUVTLmZvckVhY2gob3B0aW9uTmFtZSA9PiB7XG4gICAgICAgICAgICBpZiAob3B0aW9uTmFtZSBpbiB0aGlzLm9wdHMpXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBhIGhhY2sgdG8gYWRkIGFuIGluZGV4IHNpZ25hdHVyZSB0byBpbnRlcmZhY2VcbiAgICAgICAgICAgICAgICByZXN1bHRbb3B0aW9uTmFtZV0gPSB0aGlzLm9wdHNbb3B0aW9uTmFtZV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQgYXMgUnVubmVyUnVuT3B0aW9ucztcbiAgICB9XG59XG4iXX0=
|
package/lib/client/core/index.js
CHANGED
|
@@ -3743,7 +3743,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
|
|
|
3743
3743
|
_a[RUNTIME_ERRORS.invalidCustomActionType] = "TestCafe cannot parse the \"{actionName}\" action, because the action definition is invalid. Format the definition in accordance with the custom actions guide: ".concat(DOCUMENTATION_LINKS.CUSTOM_ACTIONS),
|
|
3744
3744
|
_a[RUNTIME_ERRORS.cannotImportESMInCommonsJS] = 'Cannot import the {esModule} ECMAScript module from {targetFile}. Use a dynamic import() statement or enable the --esm CLI flag.',
|
|
3745
3745
|
_a[RUNTIME_ERRORS.proxyInitializedMoreThanOnce] = 'The proxy was initialized more than once.',
|
|
3746
|
-
_a[RUNTIME_ERRORS.setProxylessForUnsupportedBrowsers] = 'The
|
|
3746
|
+
_a[RUNTIME_ERRORS.setProxylessForUnsupportedBrowsers] = 'The following browser(s) do not support the Native Automation mode: {browsers}.',
|
|
3747
3747
|
_a);
|
|
3748
3748
|
|
|
3749
3749
|
var timeLimitedPromiseTimeoutExpiredTemplate = TEMPLATES[RUNTIME_ERRORS.timeLimitedPromiseTimeoutExpired];
|