@angular-devkit/architect 0.1602.0 → 0.1700.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -3
- package/src/api.d.ts +1 -1
- package/src/api.js +2 -2
- package/src/architect.js +2 -2
- package/testing/test-project-host.js +2 -2
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@angular-devkit/architect",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1700.0-next.0",
|
|
4
4
|
"description": "Angular Build Facade",
|
|
5
5
|
"experimental": true,
|
|
6
6
|
"main": "src/index.js",
|
|
7
7
|
"typings": "src/index.d.ts",
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@angular-devkit/core": "
|
|
9
|
+
"@angular-devkit/core": "17.0.0-next.0",
|
|
10
10
|
"rxjs": "7.8.1"
|
|
11
11
|
},
|
|
12
12
|
"builders": "./builders/builders.json",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"url": "https://github.com/angular/angular-cli.git"
|
|
23
23
|
},
|
|
24
24
|
"engines": {
|
|
25
|
-
"node": "
|
|
25
|
+
"node": ">=18.13.0",
|
|
26
26
|
"npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
|
|
27
27
|
"yarn": ">= 1.13.0"
|
|
28
28
|
},
|
package/src/api.d.ts
CHANGED
|
@@ -254,7 +254,7 @@ export declare function targetStringFromTarget({ project, target, configuration
|
|
|
254
254
|
export declare function targetFromTargetString(str: string): Target;
|
|
255
255
|
/**
|
|
256
256
|
* Schedule a target, and forget about its run. This will return an observable of outputs, that
|
|
257
|
-
* as a
|
|
257
|
+
* as a teardown will stop the target from running. This means that the Run object this returns
|
|
258
258
|
* should not be shared.
|
|
259
259
|
*
|
|
260
260
|
* The reason this is not part of the Context interface is to keep the Context as normal form as
|
package/src/api.js
CHANGED
|
@@ -67,7 +67,7 @@ function targetFromTargetString(str) {
|
|
|
67
67
|
exports.targetFromTargetString = targetFromTargetString;
|
|
68
68
|
/**
|
|
69
69
|
* Schedule a target, and forget about its run. This will return an observable of outputs, that
|
|
70
|
-
* as a
|
|
70
|
+
* as a teardown will stop the target from running. This means that the Run object this returns
|
|
71
71
|
* should not be shared.
|
|
72
72
|
*
|
|
73
73
|
* The reason this is not part of the Context interface is to keep the Context as normal form as
|
|
@@ -94,4 +94,4 @@ function scheduleTargetAndForget(context, target, overrides, scheduleOptions) {
|
|
|
94
94
|
})));
|
|
95
95
|
}
|
|
96
96
|
exports.scheduleTargetAndForget = scheduleTargetAndForget;
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYXJjaGl0ZWN0L3NyYy9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBR0gsK0JBQWdGO0FBSWhGLHVEQUFpRztBQUd4RixxR0FIUyx1QkFBb0IsT0FHVDtBQWlQN0IsOERBQThEO0FBQzlELFNBQWdCLGVBQWUsQ0FBQyxHQUFRO0lBQ3RDLElBQUksQ0FBQyxHQUFHLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBSSxPQUFPLEdBQUcsQ0FBQyxTQUFTLEtBQUssVUFBVSxFQUFFO1FBQ2pGLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxJQUFJLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxVQUFVLEVBQUU7UUFDbkQsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELE9BQU8sT0FBTyxHQUFHLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQztBQUMxQyxDQUFDO0FBVkQsMENBVUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FBSSxRQUEwQjtJQUM3RCxPQUFPLElBQUksaUJBQVUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1FBQ25DLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3BFLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFDM0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQ25DLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFQRCw4Q0FPQztBQUVELEtBQUssVUFBVSxtQkFBbUIsQ0FDaEMsVUFBeUIsRUFDekIsUUFBMEI7SUFFMUIsTUFBTSxRQUFR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LCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsganNvbiwgbG9nZ2luZyB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIE9ic2VydmFibGVJbnB1dCwgU3Vic2NyaWJlciwgZnJvbSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTY2hlbWEgYXMgUmVhbEJ1aWxkZXJJbnB1dCwgVGFyZ2V0IGFzIFJlYWxUYXJnZXQgfSBmcm9tICcuL2lucHV0LXNjaGVtYSc7XG5pbXBvcnQgeyBSZWdpc3RyeSB9IGZyb20gJy4vam9icyc7XG5pbXBvcnQgeyBTY2hlbWEgYXMgUmVhbEJ1aWxkZXJPdXRwdXQgfSBmcm9tICcuL291dHB1dC1zY2hlbWEnO1xuaW1wb3J0IHsgU3RhdGUgYXMgQnVpbGRlclByb2dyZXNzU3RhdGUsIFNjaGVtYSBhcyBSZWFsQnVpbGRlclByb2dyZXNzIH0gZnJvbSAnLi9wcm9ncmVzcy1zY2hlbWEnO1xuXG5leHBvcnQgdHlwZSBUYXJnZXQgPSBqc29uLkpzb25PYmplY3QgJiBSZWFsVGFyZ2V0O1xuZXhwb3J0IHsgQnVpbGRlclByb2dyZXNzU3RhdGUgfTtcblxuLy8gVHlwZSBzaG9ydCBoYW5kcy5cbmV4cG9ydCB0eXBlIEJ1aWxkZXJSZWdpc3RyeSA9IFJlZ2lzdHJ5PGpzb24uSnNvbk9iamVjdCwgQnVpbGRlcklucHV0LCBCdWlsZGVyT3V0cHV0PjtcblxuLyoqXG4gKiBBbiBBUEkgdHlwZWQgQnVpbGRlclByb2dyZXNzLiBUaGUgaW50ZXJmYWNlIGdlbmVyYXRlZCBmcm9tIHRoZSBzY2hlbWEgaXMgdG9vIHBlcm1pc3NpdmUsXG4gKiBzbyB0aGlzIEFQSSBpcyB0aGUgb25lIHdlIHNob3cgaW4gb3VyIEFQSS4gUGxlYXNlIG5vdGUgdGhhdCBub3QgYWxsIGZpZWxkcyBhcmUgaW4gdGhlcmU7IHRoaXNcbiAqIGlzIGluIGFkZGl0aW9uIHRvIGZpZWxkcyBpbiB0aGUgc2NoZW1hLlxuICovXG5leHBvcnQgdHlwZSBUeXBlZEJ1aWxkZXJQcm9ncmVzcyA9XG4gIHwgeyBzdGF0ZTogQnVpbGRlclByb2dyZXNzU3RhdGUuU3RvcHBlZCB9XG4gIHwgeyBzdGF0ZTogQnVpbGRlclByb2dyZXNzU3RhdGUuRXJyb3I7IGVycm9yOiBqc29uLkpzb25WYWx1ZSB9XG4gIHwgeyBzdGF0ZTogQnVpbGRlclByb2dyZXNzU3RhdGUuV2FpdGluZzsgc3RhdHVzPzogc3RyaW5nIH1cbiAgfCB7IHN0YXRlOiBCdWlsZGVyUHJvZ3Jlc3NTdGF0ZS5SdW5uaW5nOyBzdGF0dXM/OiBzdHJpbmc7IGN1cnJlbnQ6IG51bWJlcjsgdG90YWw/OiBudW1iZXIgfTtcblxuLyoqXG4gKiBEZWNsYXJhdGlvbiBvZiB0aG9zZSB0eXBlcyBhcyBKc29uT2JqZWN0IGNvbXBhdGlibGUuIEpzb25PYmplY3QgaXMgbm90IGNvbXBhdGlibGUgd2l0aFxuICogb3B0aW9uYWwgbWVtYmVycywgc28gdGhvc2Ugd291bGRuJ3QgYmUgZGlyZWN0bHkgYXNzaWduYWJsZSB0byBvdXIgaW50ZXJuYWwgSnNvbiB0eXBpbmdzLlxuICogRm9yY2luZyB0aGUgdHlwZSB0byBiZSBib3RoIGEgSnNvbk9iamVjdCBhbmQgdGhlIHR5cGUgZnJvbSB0aGUgU2NoZW1hIHRlbGxzIFR5cGVzY3JpcHQgdGhleVxuICogYXJlIGNvbXBhdGlibGUgKHdoaWNoIHRoZXkgYXJlKS5cbiAqIFRoZXNlIHR5cGVzIHNob3VsZCBiZSB1c2VkIGV2ZXJ5d2hlcmUuXG4gKi9cbmV4cG9ydCB0eXBlIEJ1aWxkZXJJbnB1dCA9IGpzb24uSnNvbk9iamVjdCAmIFJlYWxCdWlsZGVySW5wdXQ7XG5leHBvcnQgdHlwZSBCdWlsZGVyT3V0cHV0ID0ganNvbi5Kc29uT2JqZWN0ICYgUmVhbEJ1aWxkZXJPdXRwdXQ7XG5leHBvcnQgdHlwZSBCdWlsZGVyUHJvZ3Jlc3MgPSBqc29uLkpzb25PYmplY3QgJiBSZWFsQnVpbGRlclByb2dyZXNzICYgVHlwZWRCdWlsZGVyUHJvZ3Jlc3M7XG5cbi8qKlxuICogQSBwcm9ncmVzcyByZXBvcnQgaXMgd2hhdCB0aGUgdG9vbGluZyB3aWxsIHJlY2VpdmUuIEl0IGNvbnRhaW5zIHRoZSBidWlsZGVyIGluZm8gYW5kIHRoZSB0YXJnZXQuXG4gKiBBbHRob3VnaCB0aGVzZSBhcmUgc2VyaWFsaXphYmxlLCB0aGV5IGFyZSBvbmx5IGV4cG9zZWQgdGhyb3VnaCB0aGUgdG9vbGluZyBpbnRlcmZhY2UsIG5vdCB0aGVcbiAqIGJ1aWxkZXIgaW50ZXJmYWNlLiBUaGUgd2F0Y2ggZG9nIHNlbmRzIEJ1aWxkZXJQcm9ncmVzcyBhbmQgdGhlIEJ1aWxkZXIgaGFzIGEgc2V0IG9mIGZ1bmN0aW9uc1xuICogdG8gbWFuYWdlIHRoZSBzdGF0ZS5cbiAqL1xuZXhwb3J0IHR5cGUgQnVpbGRlclByb2dyZXNzUmVwb3J0ID0gQnVpbGRlclByb2dyZXNzICYge1xuICB0YXJnZXQ/OiBUYXJnZXQ7XG4gIGJ1aWxkZXI6IEJ1aWxkZXJJbmZvO1xufTtcblxuLyoqXG4gKiBBIFJ1biwgd2hpY2ggaXMgd2hhdCBpcyByZXR1cm5lZCBieSBzY2hlZHVsZUJ1aWxkZXIgb3Igc2NoZWR1bGVUYXJnZXQgZnVuY3Rpb25zLiBUaGlzIHNob3VsZFxuICogYmUgcmVjb25zdHJ1Y3RlZCBhY3Jvc3MgbWVtb3J5IGJvdW5kYXJpZXMgKGl0J3Mgbm90IHNlcmlhbGl6YWJsZSBidXQgYWxsIGludGVybmFsIGluZm9ybWF0aW9uXG4gKiBhcmUpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkZXJSdW4ge1xuICAvKipcbiAgICogVW5pcXVlIGFtb25nc3QgcnVucy4gVGhpcyBpcyB0aGUgc2FtZSBJRCBhcyB0aGUgY29udGV4dCBnZW5lcmF0ZWQgZm9yIHRoZSBydW4uIEl0IGNhbiBiZVxuICAgKiB1c2VkIHRvIGlkZW50aWZ5IG11bHRpcGxlIHVuaXF1ZSBydW5zLiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBhIHJ1biBpcyBhIHNpbmdsZSBvdXRwdXQ7XG4gICAqIGEgYnVpbGRlciBjYW4gcmVidWlsZCBvbiBpdHMgb3duIGFuZCB3aWxsIGdlbmVyYXRlIG11bHRpcGxlIG91dHB1dHMuXG4gICAqL1xuICBpZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgYnVpbGRlciBpbmZvcm1hdGlvbi5cbiAgICovXG4gIGluZm86IEJ1aWxkZXJJbmZvO1xuXG4gIC8qKlxuICAgKiBUaGUgbmV4dCBvdXRwdXQgZnJvbSBhIGJ1aWxkZXIuIFRoaXMgaXMgcmVjb21tZW5kZWQgd2hlbiBzY2hlZHVsaW5nIGEgYnVpbGRlciBhbmQgb25seSBiZWluZ1xuICAgKiBpbnRlcmVzdGVkIGluIHRoZSByZXN1bHQgb2YgdGhhdCBzaW5nbGUgcnVuLCBub3Qgb2YgYSB3YXRjaC1tb2RlIGJ1aWxkZXIuXG4gICAqL1xuICByZXN1bHQ6IFByb21pc2U8QnVpbGRlck91dHB1dD47XG5cbiAgLyoqXG4gICAqIFRoZSBsYXN0IG91dHB1dCBmcm9tIGEgYnVpbGRlci4gVGhpcyBpcyByZWNvbW1lbmRlZCB3aGVuIHNjaGVkdWxpbmcgYSBidWlsZGVyIGFuZCBvbmx5IGJlaW5nXG4gICAqIGludGVyZXN0ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGF0IGxhc3QgcnVuLlxuICAgKi9cbiAgbGFzdE91dHB1dDogUHJvbWlzZTxCdWlsZGVyT3V0cHV0PjtcblxuICAvKipcbiAgICogVGhlIG91dHB1dChzKSBmcm9tIHRoZSBidWlsZGVyLiBBIGJ1aWxkZXIgY2FuIGhhdmUgbXVsdGlwbGUgb3V0cHV0cy5cbiAgICogVGhpcyBhbHdheXMgcmVwbGF5IHRoZSBsYXN0IG91dHB1dCB3aGVuIHN1YnNjcmliZWQuXG4gICAqL1xuICBvdXRwdXQ6IE9ic2VydmFibGU8QnVpbGRlck91dHB1dD47XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9ncmVzcyByZXBvcnQuIEEgcHJvZ3Jlc3MgYWxzbyBjb250YWlucyBhbiBJRCwgd2hpY2ggY2FuIGJlIGRpZmZlcmVudCB0aGFuIHRoaXMgcnVuJ3NcbiAgICogSUQgKGlmIHRoZSBidWlsZGVyIGNhbGxzIHNjaGVkdWxlQnVpbGRlciBvciBzY2hlZHVsZVRhcmdldCkuXG4gICAqIFRoaXMgd2lsbCBhbHdheXMgcmVwbGF5IHRoZSBsYXN0IHByb2dyZXNzIG9uIG5ldyBzdWJzY3JpcHRpb25zLlxuICAgKi9cbiAgcHJvZ3Jlc3M6IE9ic2VydmFibGU8QnVpbGRlclByb2dyZXNzUmVwb3J0PjtcblxuICAvKipcbiAgICogU3RvcCB0aGUgYnVpbGRlciBmcm9tIHJ1bm5pbmcuIFJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYnVpbGRlciBpcyBzdG9wcGVkLlxuICAgKiBTb21lIGJ1aWxkZXJzIG1pZ2h0IG5vdCBoYW5kbGUgc3RvcHBpbmcgcHJvcGVybHkgYW5kIHNob3VsZCBoYXZlIGEgdGltZW91dCBoZXJlLlxuICAgKi9cbiAgc3RvcCgpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIEFkZGl0aW9uYWwgb3B0aW9uYWwgc2NoZWR1bGluZyBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVkdWxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBMb2dnZXIgdG8gcGFzcyB0byB0aGUgYnVpbGRlci4gTm90ZSB0aGF0IG1lc3NhZ2VzIHdpbGwgc3RvcCBiZWluZyBmb3J3YXJkZWQsIGFuZCBpZiB5b3Ugd2FudFxuICAgKiB0byBsb2cgYSBidWlsZGVyIHNjaGVkdWxlZCBmcm9tIHlvdXIgYnVpbGRlciB5b3Ugc2hvdWxkIGZvcndhcmQgbG9nIGV2ZW50cyB5b3Vyc2VsZi5cbiAgICovXG4gIGxvZ2dlcj86IGxvZ2dpbmcuTG9nZ2VyO1xuXG4gIC8qKlxuICAgKiBUYXJnZXQgdG8gcGFzcyB0byB0aGUgYnVpbGRlci5cbiAgICovXG4gIHRhcmdldD86IFRhcmdldDtcbn1cblxuLyoqXG4gKiBUaGUgY29udGV4dCByZWNlaXZlZCBhcyBhIHNlY29uZCBhcmd1bWVudCBpbiB5b3VyIGJ1aWxkZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRlckNvbnRleHQge1xuICAvKipcbiAgICogVW5pcXVlIGFtb25nc3QgY29udGV4dHMuIENvbnRleHRzIGluc3RhbmNlcyBhcmUgbm90IGd1YXJhbnRlZWQgdG8gYmUgdGhlIHNhbWUgKGJ1dCBpdCBjb3VsZFxuICAgKiBiZSB0aGUgc2FtZSBjb250ZXh0KSwgYW5kIGFsbCB0aGUgZmllbGRzIGluIGEgY29udGV4dCBjb3VsZCBiZSB0aGUgc2FtZSwgeWV0IHRoZSBidWlsZGVyJ3NcbiAgICogY29udGV4dCBjb3VsZCBiZSBkaWZmZXJlbnQuIFRoaXMgaXMgdGhlIHNhbWUgSUQgYXMgdGhlIGNvcnJlc3BvbmRpbmcgcnVuLlxuICAgKi9cbiAgaWQ6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGJ1aWxkZXIgaW5mbyB0aGF0IGNhbGxlZCB5b3VyIGZ1bmN0aW9uLiBTaW5jZSB0aGUgYnVpbGRlciBpbmZvIGlzIGZyb20gdGhlIGJ1aWxkZXIuanNvblxuICAgKiAob3IgdGhlIGhvc3QpLCBpdCBjb3VsZCBjb250YWluIGluZm9ybWF0aW9uIHRoYXQgaXMgZGlmZmVyZW50IHRoYW4gZXhwZWN0ZWQuXG4gICAqL1xuICBidWlsZGVyOiBCdWlsZGVySW5mbztcblxuICAvKipcbiAgICogQSBsb2dnZXIgdGhhdCBhcHBlbmRzIG1lc3NhZ2VzIHRvIGEgbG9nLiBUaGlzIGNvdWxkIGJlIGEgc2VwYXJhdGUgaW50ZXJmYWNlIG9yIGNvbXBsZXRlbHlcbiAgICogaWdub3JlZC4gYGNvbnNvbGUubG9nYCBjb3VsZCBhbHNvIGJlIGNvbXBsZXRlbHkgaWdub3JlZC5cbiAgICovXG4gIGxvZ2dlcjogbG9nZ2luZy5Mb2dnZXJBcGk7XG5cbiAgLyoqXG4gICAqIFRoZSBhYnNvbHV0ZSB3b3Jrc3BhY2Ugcm9vdCBvZiB0aGlzIHJ1bi4gVGhpcyBpcyBhIHN5c3RlbSBwYXRoIGFuZCB3aWxsIG5vdCBiZSBub3JtYWxpemVkO1xuICAgKiBpZS4gb24gV2luZG93cyBpdCB3aWxsIHN0YXJ0cyB3aXRoIGBDOlxcXFxgIChvciB3aGF0ZXZlciBkcml2ZSkuXG4gICAqL1xuICB3b3Jrc3BhY2VSb290OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGRpcmVjdG9yeSB0aGUgdXNlciBpcyBpbi4gVGhpcyBjb3VsZCBiZSBvdXRzaWRlIHRoZSB3b3Jrc3BhY2Ugcm9vdC4gVGhpcyBpcyBhXG4gICAqIHN5c3RlbSBwYXRoIGFuZCB3aWxsIG5vdCBiZSBub3JtYWxpemVkOyBpZS4gb24gV2luZG93cyBpdCB3aWxsIHN0YXJ0cyB3aXRoIGBDOlxcXFxgIChvclxuICAgKiB3aGF0ZXZlciBkcml2ZSkuXG4gICAqL1xuICBjdXJyZW50RGlyZWN0b3J5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQgdGhhdCB3YXMgdXNlZCB0byBydW4gdGhpcyBidWlsZGVyLlxuICAgKiBUYXJnZXQgaXMgb3B0aW9uYWwgaWYgYSBidWlsZGVyIHdhcyByYW4gdXNpbmcgYHNjaGVkdWxlQnVpbGRlcigpYC5cbiAgICovXG4gIHRhcmdldD86IFRhcmdldDtcblxuICAvKipcbiAgICogU2NoZWR1bGUgYSB0YXJnZXQgaW4gdGhlIHNhbWUgd29ya3NwYWNlLiBUaGlzIGNhbiBiZSB0aGUgc2FtZSB0YXJnZXQgdGhhdCBpcyBiZWluZyBleGVjdXRlZFxuICAgKiByaWdodCBub3csIGJ1dCB0YXJnZXRzIG9mIHRoZSBzYW1lIG5hbWUgYXJlIHNlcmlhbGl6ZWQuXG4gICAqIFJ1bm5pbmcgdGhlIHNhbWUgdGFyZ2V0IGFuZCB3YWl0aW5nIGZvciBpdCB0byBlbmQgd2lsbCByZXN1bHQgaW4gYSBkZWFkbG9ja2luZyBzY2VuYXJpby5cbiAgICogVGFyZ2V0cyBhcmUgY29uc2lkZXJlZCB0aGUgc2FtZSBpZiB0aGUgcHJvamVjdCwgdGhlIHRhcmdldCBBTkQgdGhlIGNvbmZpZ3VyYXRpb24gYXJlIHRoZSBzYW1lLlxuICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgdG8gc2NoZWR1bGUuXG4gICAqIEBwYXJhbSBvdmVycmlkZXMgQSBzZXQgb2Ygb3B0aW9ucyB0byBvdmVycmlkZSB0aGUgd29ya3NwYWNlIHNldCBvZiBvcHRpb25zLlxuICAgKiBAcGFyYW0gc2NoZWR1bGVPcHRpb25zIEFkZGl0aW9uYWwgb3B0aW9uYWwgc2NoZWR1bGluZyBvcHRpb25zLlxuICAgKiBAcmV0dXJuIEEgcHJvbWlzZSBvZiBhIHJ1bi4gSXQgd2lsbCByZXNvbHZlIHdoZW4gYWxsIHRoZSBtZW1iZXJzIG9mIHRoZSBydW4gYXJlIGF2YWlsYWJsZS5cbiAgICovXG4gIHNjaGVkdWxlVGFyZ2V0KFxuICAgIHRhcmdldDogVGFyZ2V0LFxuICAgIG92ZXJyaWRlcz86IGpzb24uSnNvbk9iamVjdCxcbiAgICBzY2hlZHVsZU9wdGlvbnM/OiBTY2hlZHVsZU9wdGlvbnMsXG4gICk6IFByb21pc2U8QnVpbGRlclJ1bj47XG5cbiAgLyoqXG4gICAqIFNjaGVkdWxlIGEgYnVpbGRlciBieSBpdHMgbmFtZS4gVGhpcyBjYW4gYmUgdGhlIHNhbWUgYnVpbGRlciB0aGF0IGlzIGJlaW5nIGV4ZWN1dGVkLlxuICAgKiBAcGFyYW0gYnVpbGRlck5hbWUgVGhlIG5hbWUgb2YgdGhlIGJ1aWxkZXIsIGllLiBpdHMgYHBhY2thZ2VOYW1lOmJ1aWxkZXJOYW1lYCB0dXBsZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgQWxsIG9wdGlvbnMgdG8gdXNlIGZvciB0aGUgYnVpbGRlciAoYnkgZGVmYXVsdCBlbXB0eSBvYmplY3QpLiBUaGVyZSBpcyBub1xuICAgKiAgICAgYWRkaXRpb25hbCBvcHRpb25zIGFkZGVkLCBlLmcuIGZyb20gdGhlIHdvcmtzcGFjZS5cbiAgICogQHBhcmFtIHNjaGVkdWxlT3B0aW9ucyBBZGRpdGlvbmFsIG9wdGlvbmFsIHNjaGVkdWxpbmcgb3B0aW9ucy5cbiAgICogQHJldHVybiBBIHByb21pc2Ugb2YgYSBydW4uIEl0IHdpbGwgcmVzb2x2ZSB3aGVuIGFsbCB0aGUgbWVtYmVycyBvZiB0aGUgcnVuIGFyZSBhdmFpbGFibGUuXG4gICAqL1xuICBzY2hlZHVsZUJ1aWxkZXIoXG4gICAgYnVpbGRlck5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zPzoganNvbi5Kc29uT2JqZWN0LFxuICAgIHNjaGVkdWxlT3B0aW9ucz86IFNjaGVkdWxlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxCdWlsZGVyUnVuPjtcblxuICAvKipcbiAgICogUmVzb2x2ZSBhbmQgcmV0dXJuIG9wdGlvbnMgZm9yIGEgc3BlY2lmaWVkIHRhcmdldC4gSWYgdGhlIHRhcmdldCBpc24ndCBkZWZpbmVkIGluIHRoZVxuICAgKiB3b3Jrc3BhY2UgdGhpcyB3aWxsIHJlamVjdCB0aGUgcHJvbWlzZS4gVGhpcyBvYmplY3Qgd2lsbCBiZSByZWFkIGRpcmVjdGx5IGZyb20gdGhlIHdvcmtzcGFjZVxuICAgKiBidXQgbm90IHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBidWlsZGVyIG9mIHRoZSB0YXJnZXQuXG4gICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCB0byByZXNvbHZlIHRoZSBvcHRpb25zIG9mLlxuICAgKiBAcmV0dXJuIEEgbm9uLXZhbGlkYXRlZCBvYmplY3QgcmVzb2x2ZWQgZnJvbSB0aGUgd29ya3NwYWNlLlxuICAgKi9cbiAgZ2V0VGFyZ2V0T3B0aW9ucyh0YXJnZXQ6IFRhcmdldCk6IFByb21pc2U8anNvbi5Kc29uT2JqZWN0PjtcblxuICBnZXRQcm9qZWN0TWV0YWRhdGEocHJvamVjdE5hbWU6IHN0cmluZyk6IFByb21pc2U8anNvbi5Kc29uT2JqZWN0PjtcbiAgZ2V0UHJvamVjdE1ldGFkYXRhKHRhcmdldDogVGFyZ2V0KTogUHJvbWlzZTxqc29uLkpzb25PYmplY3Q+O1xuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhbmQgcmV0dXJuIGEgYnVpbGRlciBuYW1lLiBUaGUgZXhhY3QgZm9ybWF0IG9mIHRoZSBuYW1lIGlzIHVwIHRvIHRoZSBob3N0LFxuICAgKiBzbyBpdCBzaG91bGQgbm90IGJlIHBhcnNlZCB0byBnYXRoZXIgaW5mb3JtYXRpb24gKGl0J3MgZnJlZSBmb3JtKS4gVGhpcyBzdHJpbmcgY2FuIGJlXG4gICAqIHVzZWQgdG8gdmFsaWRhdGUgb3B0aW9ucyBvciBzY2hlZHVsZSBhIGJ1aWxkZXIgZGlyZWN0bHkuXG4gICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCB0byByZXNvbHZlIHRoZSBidWlsZGVyIG5hbWUuXG4gICAqL1xuICBnZXRCdWlsZGVyTmFtZUZvclRhcmdldCh0YXJnZXQ6IFRhcmdldCk6IFByb21pc2U8c3RyaW5nPjtcblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBvcHRpb25zIGFnYWluc3QgYSBidWlsZGVyIHNjaGVtYS4gVGhpcyB1c2VzIHRoZSBzYW1lIG1ldGhvZHMgYXMgdGhlXG4gICAqIHNjaGVkdWxlVGFyZ2V0IGFuZCBzY2hlZHVsZUJyb3dzZXIgbWV0aG9kcyB0byB2YWxpZGF0ZSBhbmQgYXBwbHkgZGVmYXVsdHMgdG8gdGhlIG9wdGlvbnMuXG4gICAqIEl0IGNhbiBiZSBnZW5lcmljYWxseSB0eXBlZCwgaWYgeW91IGtub3cgd2hpY2ggaW50ZXJmYWNlIGl0IGlzIHN1cHBvc2VkIHRvIHZhbGlkYXRlIGFnYWluc3QuXG4gICAqIEBwYXJhbSBvcHRpb25zIEEgZ2VuZXJpYyBvcHRpb24gb2JqZWN0IHRvIHZhbGlkYXRlLlxuICAgKiBAcGFyYW0gYnVpbGRlck5hbWUgVGhlIG5hbWUgb2YgYSBidWlsZGVyIHRvIHVzZS4gVGhpcyBjYW4gYmUgZ290dGVuIGZvciBhIHRhcmdldCBieSB1c2luZyB0aGVcbiAgICogICAgICAgICAgICAgICAgICAgIGdldEJ1aWxkZXJGb3JUYXJnZXQoKSBtZXRob2Qgb24gdGhlIGNvbnRleHQuXG4gICAqL1xuICB2YWxpZGF0ZU9wdGlvbnM8VCBleHRlbmRzIGpzb24uSnNvbk9iamVjdCA9IGpzb24uSnNvbk9iamVjdD4oXG4gICAgb3B0aW9uczoganNvbi5Kc29uT2JqZWN0LFxuICAgIGJ1aWxkZXJOYW1lOiBzdHJpbmcsXG4gICk6IFByb21pc2U8VD47XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgYnVpbGRlciB0byBydW5uaW5nLiBUaGlzIHNob3VsZCBiZSB1c2VkIGlmIGFuIGV4dGVybmFsIGV2ZW50IHRyaWdnZXJlZCBhIHJlLXJ1bixcbiAgICogZS5nLiBhIGZpbGUgd2F0Y2hlZCB3YXMgY2hhbmdlZC5cbiAgICovXG4gIHJlcG9ydFJ1bm5pbmcoKTogdm9pZDtcblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBzdGF0dXMgc3RyaW5nIHNob3duIG9uIHRoZSBpbnRlcmZhY2UuXG4gICAqIEBwYXJhbSBzdGF0dXMgVGhlIHN0YXR1cyB0byBzZXQgaXQgdG8uIEFuIGVtcHR5IHN0cmluZyBjYW4gYmUgdXNlZCB0byByZW1vdmUgdGhlIHN0YXR1cy5cbiAgICovXG4gIHJlcG9ydFN0YXR1cyhzdGF0dXM6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcHJvZ3Jlc3MgZm9yIHRoaXMgYnVpbGRlciBydW4uXG4gICAqIEBwYXJhbSBjdXJyZW50IFRoZSBjdXJyZW50IHByb2dyZXNzLiBUaGlzIHdpbGwgYmUgYmV0d2VlbiAwIGFuZCB0b3RhbC5cbiAgICogQHBhcmFtIHRvdGFsIEEgbmV3IHRvdGFsIHRvIHNldC4gQnkgZGVmYXVsdCBhdCB0aGUgc3RhcnQgb2YgYSBydW4gdGhpcyBpcyAxLiBJZiBvbWl0dGVkIGl0XG4gICAqICAgICB3aWxsIHVzZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgbGFzdCB0b3RhbC5cbiAgICogQHBhcmFtIHN0YXR1cyBVcGRhdGUgdGhlIHN0YXR1cyBzdHJpbmcuIElmIG9taXR0ZWQgdGhlIHN0YXR1cyBzdHJpbmcgaXMgbm90IG1vZGlmaWVkLlxuICAgKi9cbiAgcmVwb3J0UHJvZ3Jlc3MoY3VycmVudDogbnVtYmVyLCB0b3RhbD86IG51bWJlciwgc3RhdHVzPzogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogQWRkIHRlYXJkb3duIGxvZ2ljIHRvIHRoaXMgQ29udGV4dCwgc28gdGhhdCB3aGVuIGl0J3MgYmVpbmcgc3RvcHBlZCBpdCB3aWxsIGV4ZWN1dGUgdGVhcmRvd24uXG4gICAqL1xuICBhZGRUZWFyZG93bih0ZWFyZG93bjogKCkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQpOiB2b2lkO1xufVxuXG4vKipcbiAqIEFuIGFjY2VwdGVkIHJldHVybiB2YWx1ZSBmcm9tIGEgYnVpbGRlci4gQ2FuIGJlIGVpdGhlciBhbiBPYnNlcnZhYmxlLCBhIFByb21pc2Ugb3IgYSB2ZWN0b3IuXG4gKi9cbmV4cG9ydCB0eXBlIEJ1aWxkZXJPdXRwdXRMaWtlID0gT2JzZXJ2YWJsZUlucHV0PEJ1aWxkZXJPdXRwdXQ+IHwgQnVpbGRlck91dHB1dDtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiBpc0J1aWxkZXJPdXRwdXQob2JqOiBhbnkpOiBvYmogaXMgQnVpbGRlck91dHB1dCB7XG4gIGlmICghb2JqIHx8IHR5cGVvZiBvYmoudGhlbiA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2Ygb2JqLnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0eXBlb2Ygb2JqLnN1Y2Nlc3MgPT09ICdib29sZWFuJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21Bc3luY0l0ZXJhYmxlPFQ+KGl0ZXJhYmxlOiBBc3luY0l0ZXJhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiB7XG4gIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic2NyaWJlcikgPT4ge1xuICAgIGhhbmRsZUFzeW5jSXRlcmF0b3Ioc3Vic2NyaWJlciwgaXRlcmFibGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkpLnRoZW4oXG4gICAgICAoKSA9PiBzdWJzY3JpYmVyLmNvbXBsZXRlKCksXG4gICAgICAoZXJyb3IpID0+IHN1YnNjcmliZXIuZXJyb3IoZXJyb3IpLFxuICAgICk7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYW5kbGVBc3luY0l0ZXJhdG9yPFQ+KFxuICBzdWJzY3JpYmVyOiBTdWJzY3JpYmVyPFQ+LFxuICBpdGVyYXRvcjogQXN5bmNJdGVyYXRvcjxUPixcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB0ZWFyZG93biA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiBzdWJzY3JpYmVyLmFkZCgoKSA9PiByZXNvbHZlKCkpKTtcblxuICB0cnkge1xuICAgIHdoaWxlICghc3Vic2NyaWJlci5jbG9zZWQpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UucmFjZShbdGVhcmRvd24sIGl0ZXJhdG9yLm5leHQoKV0pO1xuICAgICAgaWYgKCFyZXN1bHQgfHwgcmVzdWx0LmRvbmUpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHN1YnNjcmliZXIubmV4dChyZXN1bHQudmFsdWUpO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBpdGVyYXRvci5yZXR1cm4/LigpO1xuICB9XG59XG5cbi8qKlxuICogQSBidWlsZGVyIGhhbmRsZXIgZnVuY3Rpb24uIFRoZSBmdW5jdGlvbiBzaWduYXR1cmUgcGFzc2VkIHRvIGBjcmVhdGVCdWlsZGVyKClgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkZXJIYW5kbGVyRm48QT4ge1xuICAvKipcbiAgICogQnVpbGRlcnMgYXJlIGRlZmluZWQgYnkgdXNlcnMgdG8gcGVyZm9ybSBhbnkga2luZCBvZiB0YXNrLCBsaWtlIGJ1aWxkaW5nLCB0ZXN0aW5nIG9yIGxpbnRpbmcsXG4gICAqIGFuZCBzaG91bGQgdXNlIHRoaXMgaW50ZXJmYWNlLlxuICAgKiBAcGFyYW0gaW5wdXQgVGhlIG9wdGlvbnMgKGEgSnNvbk9iamVjdCksIHZhbGlkYXRlZCBieSB0aGUgc2NoZW1hIGFuZCByZWNlaXZlZCBieSB0aGVcbiAgICogICAgIGJ1aWxkZXIuIFRoaXMgY2FuIGluY2x1ZGUgcmVzb2x2ZWQgb3B0aW9ucyBmcm9tIHRoZSBDTEkgb3IgdGhlIHdvcmtzcGFjZS5cbiAgICogQHBhcmFtIGNvbnRleHQgQSBjb250ZXh0IHRoYXQgY2FuIGJlIHVzZWQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgQXJjaGl0ZWN0IGZyYW1ld29yay5cbiAgICogQHJldHVybiBPbmUgb3IgbWFueSBidWlsZGVyIG91dHB1dC5cbiAgICovXG4gIChpbnB1dDogQSwgY29udGV4dDogQnVpbGRlckNvbnRleHQpOiBCdWlsZGVyT3V0cHV0TGlrZTtcbn1cblxuLyoqXG4gKiBBIEJ1aWxkZXIgZ2VuZXJhbCBpbmZvcm1hdGlvbi4gVGhpcyBpcyBnZW5lcmF0ZWQgYnkgdGhlIGhvc3QgYW5kIGlzIGV4cGFuZGVkIGJ5IHRoZSBob3N0LCBidXRcbiAqIHRoZSBwdWJsaWMgQVBJIGNvbnRhaW5zIHRob3NlIGZpZWxkcy5cbiAqL1xuZXhwb3J0IHR5cGUgQnVpbGRlckluZm8gPSBqc29uLkpzb25PYmplY3QgJiB7XG4gIGJ1aWxkZXJOYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIG9wdGlvblNjaGVtYToganNvbi5zY2hlbWEuSnNvblNjaGVtYTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhIHN0cmluZyBvZiBcInByb2plY3Q6dGFyZ2V0Wzpjb25maWd1cmF0aW9uXVwiIGZvciB0aGUgdGFyZ2V0IG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRhcmdldFN0cmluZ0Zyb21UYXJnZXQoeyBwcm9qZWN0LCB0YXJnZXQsIGNvbmZpZ3VyYXRpb24gfTogVGFyZ2V0KSB7XG4gIHJldHVybiBgJHtwcm9qZWN0fToke3RhcmdldH0ke2NvbmZpZ3VyYXRpb24gIT09IHVuZGVmaW5lZCA/ICc6JyArIGNvbmZpZ3VyYXRpb24gOiAnJ31gO1xufVxuXG4vKipcbiAqIFJldHVybiBhIFRhcmdldCB0dXBsZSBmcm9tIGEgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdGFyZ2V0RnJvbVRhcmdldFN0cmluZyhzdHI6IHN0cmluZyk6IFRhcmdldCB7XG4gIGNvbnN0IHR1cGxlID0gc3RyLnNwbGl0KC86LywgMyk7XG4gIGlmICh0dXBsZS5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRhcmdldCBzdHJpbmc6ICcgKyBKU09OLnN0cmluZ2lmeShzdHIpKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcHJvamVjdDogdHVwbGVbMF0sXG4gICAgdGFyZ2V0OiB0dXBsZVsxXSxcbiAgICAuLi4odHVwbGVbMl0gIT09IHVuZGVmaW5lZCAmJiB7IGNvbmZpZ3VyYXRpb246IHR1cGxlWzJdIH0pLFxuICB9O1xufVxuXG4vKipcbiAqIFNjaGVkdWxlIGEgdGFyZ2V0LCBhbmQgZm9yZ2V0IGFib3V0IGl0cyBydW4uIFRoaXMgd2lsbCByZXR1cm4gYW4gb2JzZXJ2YWJsZSBvZiBvdXRwdXRzLCB0aGF0XG4gKiBhcyBhIGEgdGVhcmRvd24gd2lsbCBzdG9wIHRoZSB0YXJnZXQgZnJvbSBydW5uaW5nLiBUaGlzIG1lYW5zIHRoYXQgdGhlIFJ1biBvYmplY3QgdGhpcyByZXR1cm5zXG4gKiBzaG91bGQgbm90IGJlIHNoYXJlZC5cbiAqXG4gKiBUaGUgcmVhc29uIHRoaXMgaXMgbm90IHBhcnQgb2YgdGhlIENvbnRleHQgaW50ZXJmYWNlIGlzIHRvIGtlZXAgdGhlIENvbnRleHQgYXMgbm9ybWFsIGZvcm0gYXNcbiAqIHBvc3NpYmxlLiBUaGlzIGlzIHJlYWxseSBhbiB1dGlsaXR5IHRoYXQgcGVvcGxlIHdvdWxkIGltcGxlbWVudCBpbiB0aGVpciBwcm9qZWN0LlxuICpcbiAqIEBwYXJhbSBjb250ZXh0IFRoZSBjb250ZXh0IG9mIHlvdXIgY3VycmVudCBleGVjdXRpb24uXG4gKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgdG8gc2NoZWR1bGUuXG4gKiBAcGFyYW0gb3ZlcnJpZGVzIE92ZXJyaWRlcyB0aGF0IGFyZSB1c2VkIGluIHRoZSB0YXJnZXQuXG4gKiBAcGFyYW0gc2NoZWR1bGVPcHRpb25zIEFkZGl0aW9uYWwgc2NoZWR1bGluZyBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2NoZWR1bGVUYXJnZXRBbmRGb3JnZXQoXG4gIGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0LFxuICB0YXJnZXQ6IFRhcmdldCxcbiAgb3ZlcnJpZGVzPzoganNvbi5Kc29uT2JqZWN0LFxuICBzY2hlZHVsZU9wdGlvbnM/OiBTY2hlZHVsZU9wdGlvbnMsXG4pOiBPYnNlcnZhYmxlPEJ1aWxkZXJPdXRwdXQ+IHtcbiAgbGV0IHJlc29sdmU6ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHIpID0+IChyZXNvbHZlID0gcikpO1xuICBjb250ZXh0LmFkZFRlYXJkb3duKCgpID0+IHByb21pc2UpO1xuXG4gIHJldHVybiBmcm9tKGNvbnRleHQuc2NoZWR1bGVUYXJnZXQodGFyZ2V0LCBvdmVycmlkZXMsIHNjaGVkdWxlT3B0aW9ucykpLnBpcGUoXG4gICAgc3dpdGNoTWFwKFxuICAgICAgKHJ1bikgPT5cbiAgICAgICAgbmV3IE9ic2VydmFibGU8QnVpbGRlck91dHB1dD4oKG9ic2VydmVyKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gcnVuLm91dHB1dC5zdWJzY3JpYmUob2JzZXJ2ZXIpO1xuXG4gICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgLy8gV2UgY2FuIHByb3Blcmx5IGlnbm9yZSB0aGUgZmxvYXRpbmcgcHJvbWlzZSBhcyBpdCdzIGEgXCJyZXZlcnNlXCIgcHJvbWlzZTsgdGhlIHRlYXJkb3duXG4gICAgICAgICAgICAvLyBpcyB3YWl0aW5nIGZvciB0aGUgcmVzb2x2ZS5cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICAgICAgICAgIHJ1bi5zdG9wKCkudGhlbihyZXNvbHZlKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9KSxcbiAgICApLFxuICApO1xufVxuIl19
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYXJjaGl0ZWN0L3NyYy9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBR0gsK0JBQWdGO0FBSWhGLHVEQUFpRztBQUd4RixxR0FIUyx1QkFBb0IsT0FHVDtBQWlQN0IsOERBQThEO0FBQzlELFNBQWdCLGVBQWUsQ0FBQyxHQUFRO0lBQ3RDLElBQUksQ0FBQyxHQUFHLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBSSxPQUFPLEdBQUcsQ0FBQyxTQUFTLEtBQUssVUFBVSxFQUFFO1FBQ2pGLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxJQUFJLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxVQUFVLEVBQUU7UUFDbkQsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELE9BQU8sT0FBTyxHQUFHLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQztBQUMxQyxDQUFDO0FBVkQsMENBVUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FBSSxRQUEwQjtJQUM3RCxPQUFPLElBQUksaUJBQVUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1FBQ25DLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3BFLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFDM0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQ25DLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFQRCw4Q0FPQztBQUVELEtBQUssVUFBVSxtQkFBbUIsQ0FDaEMsVUFBeUIsRUFDekIsUUFBMEI7SUFFMUIsTUFBTSxRQUFR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LCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsganNvbiwgbG9nZ2luZyB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIE9ic2VydmFibGVJbnB1dCwgU3Vic2NyaWJlciwgZnJvbSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTY2hlbWEgYXMgUmVhbEJ1aWxkZXJJbnB1dCwgVGFyZ2V0IGFzIFJlYWxUYXJnZXQgfSBmcm9tICcuL2lucHV0LXNjaGVtYSc7XG5pbXBvcnQgeyBSZWdpc3RyeSB9IGZyb20gJy4vam9icyc7XG5pbXBvcnQgeyBTY2hlbWEgYXMgUmVhbEJ1aWxkZXJPdXRwdXQgfSBmcm9tICcuL291dHB1dC1zY2hlbWEnO1xuaW1wb3J0IHsgU3RhdGUgYXMgQnVpbGRlclByb2dyZXNzU3RhdGUsIFNjaGVtYSBhcyBSZWFsQnVpbGRlclByb2dyZXNzIH0gZnJvbSAnLi9wcm9ncmVzcy1zY2hlbWEnO1xuXG5leHBvcnQgdHlwZSBUYXJnZXQgPSBqc29uLkpzb25PYmplY3QgJiBSZWFsVGFyZ2V0O1xuZXhwb3J0IHsgQnVpbGRlclByb2dyZXNzU3RhdGUgfTtcblxuLy8gVHlwZSBzaG9ydCBoYW5kcy5cbmV4cG9ydCB0eXBlIEJ1aWxkZXJSZWdpc3RyeSA9IFJlZ2lzdHJ5PGpzb24uSnNvbk9iamVjdCwgQnVpbGRlcklucHV0LCBCdWlsZGVyT3V0cHV0PjtcblxuLyoqXG4gKiBBbiBBUEkgdHlwZWQgQnVpbGRlclByb2dyZXNzLiBUaGUgaW50ZXJmYWNlIGdlbmVyYXRlZCBmcm9tIHRoZSBzY2hlbWEgaXMgdG9vIHBlcm1pc3NpdmUsXG4gKiBzbyB0aGlzIEFQSSBpcyB0aGUgb25lIHdlIHNob3cgaW4gb3VyIEFQSS4gUGxlYXNlIG5vdGUgdGhhdCBub3QgYWxsIGZpZWxkcyBhcmUgaW4gdGhlcmU7IHRoaXNcbiAqIGlzIGluIGFkZGl0aW9uIHRvIGZpZWxkcyBpbiB0aGUgc2NoZW1hLlxuICovXG5leHBvcnQgdHlwZSBUeXBlZEJ1aWxkZXJQcm9ncmVzcyA9XG4gIHwgeyBzdGF0ZTogQnVpbGRlclByb2dyZXNzU3RhdGUuU3RvcHBlZCB9XG4gIHwgeyBzdGF0ZTogQnVpbGRlclByb2dyZXNzU3RhdGUuRXJyb3I7IGVycm9yOiBqc29uLkpzb25WYWx1ZSB9XG4gIHwgeyBzdGF0ZTogQnVpbGRlclByb2dyZXNzU3RhdGUuV2FpdGluZzsgc3RhdHVzPzogc3RyaW5nIH1cbiAgfCB7IHN0YXRlOiBCdWlsZGVyUHJvZ3Jlc3NTdGF0ZS5SdW5uaW5nOyBzdGF0dXM/OiBzdHJpbmc7IGN1cnJlbnQ6IG51bWJlcjsgdG90YWw/OiBudW1iZXIgfTtcblxuLyoqXG4gKiBEZWNsYXJhdGlvbiBvZiB0aG9zZSB0eXBlcyBhcyBKc29uT2JqZWN0IGNvbXBhdGlibGUuIEpzb25PYmplY3QgaXMgbm90IGNvbXBhdGlibGUgd2l0aFxuICogb3B0aW9uYWwgbWVtYmVycywgc28gdGhvc2Ugd291bGRuJ3QgYmUgZGlyZWN0bHkgYXNzaWduYWJsZSB0byBvdXIgaW50ZXJuYWwgSnNvbiB0eXBpbmdzLlxuICogRm9yY2luZyB0aGUgdHlwZSB0byBiZSBib3RoIGEgSnNvbk9iamVjdCBhbmQgdGhlIHR5cGUgZnJvbSB0aGUgU2NoZW1hIHRlbGxzIFR5cGVzY3JpcHQgdGhleVxuICogYXJlIGNvbXBhdGlibGUgKHdoaWNoIHRoZXkgYXJlKS5cbiAqIFRoZXNlIHR5cGVzIHNob3VsZCBiZSB1c2VkIGV2ZXJ5d2hlcmUuXG4gKi9cbmV4cG9ydCB0eXBlIEJ1aWxkZXJJbnB1dCA9IGpzb24uSnNvbk9iamVjdCAmIFJlYWxCdWlsZGVySW5wdXQ7XG5leHBvcnQgdHlwZSBCdWlsZGVyT3V0cHV0ID0ganNvbi5Kc29uT2JqZWN0ICYgUmVhbEJ1aWxkZXJPdXRwdXQ7XG5leHBvcnQgdHlwZSBCdWlsZGVyUHJvZ3Jlc3MgPSBqc29uLkpzb25PYmplY3QgJiBSZWFsQnVpbGRlclByb2dyZXNzICYgVHlwZWRCdWlsZGVyUHJvZ3Jlc3M7XG5cbi8qKlxuICogQSBwcm9ncmVzcyByZXBvcnQgaXMgd2hhdCB0aGUgdG9vbGluZyB3aWxsIHJlY2VpdmUuIEl0IGNvbnRhaW5zIHRoZSBidWlsZGVyIGluZm8gYW5kIHRoZSB0YXJnZXQuXG4gKiBBbHRob3VnaCB0aGVzZSBhcmUgc2VyaWFsaXphYmxlLCB0aGV5IGFyZSBvbmx5IGV4cG9zZWQgdGhyb3VnaCB0aGUgdG9vbGluZyBpbnRlcmZhY2UsIG5vdCB0aGVcbiAqIGJ1aWxkZXIgaW50ZXJmYWNlLiBUaGUgd2F0Y2ggZG9nIHNlbmRzIEJ1aWxkZXJQcm9ncmVzcyBhbmQgdGhlIEJ1aWxkZXIgaGFzIGEgc2V0IG9mIGZ1bmN0aW9uc1xuICogdG8gbWFuYWdlIHRoZSBzdGF0ZS5cbiAqL1xuZXhwb3J0IHR5cGUgQnVpbGRlclByb2dyZXNzUmVwb3J0ID0gQnVpbGRlclByb2dyZXNzICYge1xuICB0YXJnZXQ/OiBUYXJnZXQ7XG4gIGJ1aWxkZXI6IEJ1aWxkZXJJbmZvO1xufTtcblxuLyoqXG4gKiBBIFJ1biwgd2hpY2ggaXMgd2hhdCBpcyByZXR1cm5lZCBieSBzY2hlZHVsZUJ1aWxkZXIgb3Igc2NoZWR1bGVUYXJnZXQgZnVuY3Rpb25zLiBUaGlzIHNob3VsZFxuICogYmUgcmVjb25zdHJ1Y3RlZCBhY3Jvc3MgbWVtb3J5IGJvdW5kYXJpZXMgKGl0J3Mgbm90IHNlcmlhbGl6YWJsZSBidXQgYWxsIGludGVybmFsIGluZm9ybWF0aW9uXG4gKiBhcmUpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkZXJSdW4ge1xuICAvKipcbiAgICogVW5pcXVlIGFtb25nc3QgcnVucy4gVGhpcyBpcyB0aGUgc2FtZSBJRCBhcyB0aGUgY29udGV4dCBnZW5lcmF0ZWQgZm9yIHRoZSBydW4uIEl0IGNhbiBiZVxuICAgKiB1c2VkIHRvIGlkZW50aWZ5IG11bHRpcGxlIHVuaXF1ZSBydW5zLiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBhIHJ1biBpcyBhIHNpbmdsZSBvdXRwdXQ7XG4gICAqIGEgYnVpbGRlciBjYW4gcmVidWlsZCBvbiBpdHMgb3duIGFuZCB3aWxsIGdlbmVyYXRlIG11bHRpcGxlIG91dHB1dHMuXG4gICAqL1xuICBpZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgYnVpbGRlciBpbmZvcm1hdGlvbi5cbiAgICovXG4gIGluZm86IEJ1aWxkZXJJbmZvO1xuXG4gIC8qKlxuICAgKiBUaGUgbmV4dCBvdXRwdXQgZnJvbSBhIGJ1aWxkZXIuIFRoaXMgaXMgcmVjb21tZW5kZWQgd2hlbiBzY2hlZHVsaW5nIGEgYnVpbGRlciBhbmQgb25seSBiZWluZ1xuICAgKiBpbnRlcmVzdGVkIGluIHRoZSByZXN1bHQgb2YgdGhhdCBzaW5nbGUgcnVuLCBub3Qgb2YgYSB3YXRjaC1tb2RlIGJ1aWxkZXIuXG4gICAqL1xuICByZXN1bHQ6IFByb21pc2U8QnVpbGRlck91dHB1dD47XG5cbiAgLyoqXG4gICAqIFRoZSBsYXN0IG91dHB1dCBmcm9tIGEgYnVpbGRlci4gVGhpcyBpcyByZWNvbW1lbmRlZCB3aGVuIHNjaGVkdWxpbmcgYSBidWlsZGVyIGFuZCBvbmx5IGJlaW5nXG4gICAqIGludGVyZXN0ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGF0IGxhc3QgcnVuLlxuICAgKi9cbiAgbGFzdE91dHB1dDogUHJvbWlzZTxCdWlsZGVyT3V0cHV0PjtcblxuICAvKipcbiAgICogVGhlIG91dHB1dChzKSBmcm9tIHRoZSBidWlsZGVyLiBBIGJ1aWxkZXIgY2FuIGhhdmUgbXVsdGlwbGUgb3V0cHV0cy5cbiAgICogVGhpcyBhbHdheXMgcmVwbGF5IHRoZSBsYXN0IG91dHB1dCB3aGVuIHN1YnNjcmliZWQuXG4gICAqL1xuICBvdXRwdXQ6IE9ic2VydmFibGU8QnVpbGRlck91dHB1dD47XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9ncmVzcyByZXBvcnQuIEEgcHJvZ3Jlc3MgYWxzbyBjb250YWlucyBhbiBJRCwgd2hpY2ggY2FuIGJlIGRpZmZlcmVudCB0aGFuIHRoaXMgcnVuJ3NcbiAgICogSUQgKGlmIHRoZSBidWlsZGVyIGNhbGxzIHNjaGVkdWxlQnVpbGRlciBvciBzY2hlZHVsZVRhcmdldCkuXG4gICAqIFRoaXMgd2lsbCBhbHdheXMgcmVwbGF5IHRoZSBsYXN0IHByb2dyZXNzIG9uIG5ldyBzdWJzY3JpcHRpb25zLlxuICAgKi9cbiAgcHJvZ3Jlc3M6IE9ic2VydmFibGU8QnVpbGRlclByb2dyZXNzUmVwb3J0PjtcblxuICAvKipcbiAgICogU3RvcCB0aGUgYnVpbGRlciBmcm9tIHJ1bm5pbmcuIFJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYnVpbGRlciBpcyBzdG9wcGVkLlxuICAgKiBTb21lIGJ1aWxkZXJzIG1pZ2h0IG5vdCBoYW5kbGUgc3RvcHBpbmcgcHJvcGVybHkgYW5kIHNob3VsZCBoYXZlIGEgdGltZW91dCBoZXJlLlxuICAgKi9cbiAgc3RvcCgpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIEFkZGl0aW9uYWwgb3B0aW9uYWwgc2NoZWR1bGluZyBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVkdWxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBMb2dnZXIgdG8gcGFzcyB0byB0aGUgYnVpbGRlci4gTm90ZSB0aGF0IG1lc3NhZ2VzIHdpbGwgc3RvcCBiZWluZyBmb3J3YXJkZWQsIGFuZCBpZiB5b3Ugd2FudFxuICAgKiB0byBsb2cgYSBidWlsZGVyIHNjaGVkdWxlZCBmcm9tIHlvdXIgYnVpbGRlciB5b3Ugc2hvdWxkIGZvcndhcmQgbG9nIGV2ZW50cyB5b3Vyc2VsZi5cbiAgICovXG4gIGxvZ2dlcj86IGxvZ2dpbmcuTG9nZ2VyO1xuXG4gIC8qKlxuICAgKiBUYXJnZXQgdG8gcGFzcyB0byB0aGUgYnVpbGRlci5cbiAgICovXG4gIHRhcmdldD86IFRhcmdldDtcbn1cblxuLyoqXG4gKiBUaGUgY29udGV4dCByZWNlaXZlZCBhcyBhIHNlY29uZCBhcmd1bWVudCBpbiB5b3VyIGJ1aWxkZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRlckNvbnRleHQge1xuICAvKipcbiAgICogVW5pcXVlIGFtb25nc3QgY29udGV4dHMuIENvbnRleHRzIGluc3RhbmNlcyBhcmUgbm90IGd1YXJhbnRlZWQgdG8gYmUgdGhlIHNhbWUgKGJ1dCBpdCBjb3VsZFxuICAgKiBiZSB0aGUgc2FtZSBjb250ZXh0KSwgYW5kIGFsbCB0aGUgZmllbGRzIGluIGEgY29udGV4dCBjb3VsZCBiZSB0aGUgc2FtZSwgeWV0IHRoZSBidWlsZGVyJ3NcbiAgICogY29udGV4dCBjb3VsZCBiZSBkaWZmZXJlbnQuIFRoaXMgaXMgdGhlIHNhbWUgSUQgYXMgdGhlIGNvcnJlc3BvbmRpbmcgcnVuLlxuICAgKi9cbiAgaWQ6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGJ1aWxkZXIgaW5mbyB0aGF0IGNhbGxlZCB5b3VyIGZ1bmN0aW9uLiBTaW5jZSB0aGUgYnVpbGRlciBpbmZvIGlzIGZyb20gdGhlIGJ1aWxkZXIuanNvblxuICAgKiAob3IgdGhlIGhvc3QpLCBpdCBjb3VsZCBjb250YWluIGluZm9ybWF0aW9uIHRoYXQgaXMgZGlmZmVyZW50IHRoYW4gZXhwZWN0ZWQuXG4gICAqL1xuICBidWlsZGVyOiBCdWlsZGVySW5mbztcblxuICAvKipcbiAgICogQSBsb2dnZXIgdGhhdCBhcHBlbmRzIG1lc3NhZ2VzIHRvIGEgbG9nLiBUaGlzIGNvdWxkIGJlIGEgc2VwYXJhdGUgaW50ZXJmYWNlIG9yIGNvbXBsZXRlbHlcbiAgICogaWdub3JlZC4gYGNvbnNvbGUubG9nYCBjb3VsZCBhbHNvIGJlIGNvbXBsZXRlbHkgaWdub3JlZC5cbiAgICovXG4gIGxvZ2dlcjogbG9nZ2luZy5Mb2dnZXJBcGk7XG5cbiAgLyoqXG4gICAqIFRoZSBhYnNvbHV0ZSB3b3Jrc3BhY2Ugcm9vdCBvZiB0aGlzIHJ1bi4gVGhpcyBpcyBhIHN5c3RlbSBwYXRoIGFuZCB3aWxsIG5vdCBiZSBub3JtYWxpemVkO1xuICAgKiBpZS4gb24gV2luZG93cyBpdCB3aWxsIHN0YXJ0cyB3aXRoIGBDOlxcXFxgIChvciB3aGF0ZXZlciBkcml2ZSkuXG4gICAqL1xuICB3b3Jrc3BhY2VSb290OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGRpcmVjdG9yeSB0aGUgdXNlciBpcyBpbi4gVGhpcyBjb3VsZCBiZSBvdXRzaWRlIHRoZSB3b3Jrc3BhY2Ugcm9vdC4gVGhpcyBpcyBhXG4gICAqIHN5c3RlbSBwYXRoIGFuZCB3aWxsIG5vdCBiZSBub3JtYWxpemVkOyBpZS4gb24gV2luZG93cyBpdCB3aWxsIHN0YXJ0cyB3aXRoIGBDOlxcXFxgIChvclxuICAgKiB3aGF0ZXZlciBkcml2ZSkuXG4gICAqL1xuICBjdXJyZW50RGlyZWN0b3J5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQgdGhhdCB3YXMgdXNlZCB0byBydW4gdGhpcyBidWlsZGVyLlxuICAgKiBUYXJnZXQgaXMgb3B0aW9uYWwgaWYgYSBidWlsZGVyIHdhcyByYW4gdXNpbmcgYHNjaGVkdWxlQnVpbGRlcigpYC5cbiAgICovXG4gIHRhcmdldD86IFRhcmdldDtcblxuICAvKipcbiAgICogU2NoZWR1bGUgYSB0YXJnZXQgaW4gdGhlIHNhbWUgd29ya3NwYWNlLiBUaGlzIGNhbiBiZSB0aGUgc2FtZSB0YXJnZXQgdGhhdCBpcyBiZWluZyBleGVjdXRlZFxuICAgKiByaWdodCBub3csIGJ1dCB0YXJnZXRzIG9mIHRoZSBzYW1lIG5hbWUgYXJlIHNlcmlhbGl6ZWQuXG4gICAqIFJ1bm5pbmcgdGhlIHNhbWUgdGFyZ2V0IGFuZCB3YWl0aW5nIGZvciBpdCB0byBlbmQgd2lsbCByZXN1bHQgaW4gYSBkZWFkbG9ja2luZyBzY2VuYXJpby5cbiAgICogVGFyZ2V0cyBhcmUgY29uc2lkZXJlZCB0aGUgc2FtZSBpZiB0aGUgcHJvamVjdCwgdGhlIHRhcmdldCBBTkQgdGhlIGNvbmZpZ3VyYXRpb24gYXJlIHRoZSBzYW1lLlxuICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgdG8gc2NoZWR1bGUuXG4gICAqIEBwYXJhbSBvdmVycmlkZXMgQSBzZXQgb2Ygb3B0aW9ucyB0byBvdmVycmlkZSB0aGUgd29ya3NwYWNlIHNldCBvZiBvcHRpb25zLlxuICAgKiBAcGFyYW0gc2NoZWR1bGVPcHRpb25zIEFkZGl0aW9uYWwgb3B0aW9uYWwgc2NoZWR1bGluZyBvcHRpb25zLlxuICAgKiBAcmV0dXJuIEEgcHJvbWlzZSBvZiBhIHJ1bi4gSXQgd2lsbCByZXNvbHZlIHdoZW4gYWxsIHRoZSBtZW1iZXJzIG9mIHRoZSBydW4gYXJlIGF2YWlsYWJsZS5cbiAgICovXG4gIHNjaGVkdWxlVGFyZ2V0KFxuICAgIHRhcmdldDogVGFyZ2V0LFxuICAgIG92ZXJyaWRlcz86IGpzb24uSnNvbk9iamVjdCxcbiAgICBzY2hlZHVsZU9wdGlvbnM/OiBTY2hlZHVsZU9wdGlvbnMsXG4gICk6IFByb21pc2U8QnVpbGRlclJ1bj47XG5cbiAgLyoqXG4gICAqIFNjaGVkdWxlIGEgYnVpbGRlciBieSBpdHMgbmFtZS4gVGhpcyBjYW4gYmUgdGhlIHNhbWUgYnVpbGRlciB0aGF0IGlzIGJlaW5nIGV4ZWN1dGVkLlxuICAgKiBAcGFyYW0gYnVpbGRlck5hbWUgVGhlIG5hbWUgb2YgdGhlIGJ1aWxkZXIsIGllLiBpdHMgYHBhY2thZ2VOYW1lOmJ1aWxkZXJOYW1lYCB0dXBsZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgQWxsIG9wdGlvbnMgdG8gdXNlIGZvciB0aGUgYnVpbGRlciAoYnkgZGVmYXVsdCBlbXB0eSBvYmplY3QpLiBUaGVyZSBpcyBub1xuICAgKiAgICAgYWRkaXRpb25hbCBvcHRpb25zIGFkZGVkLCBlLmcuIGZyb20gdGhlIHdvcmtzcGFjZS5cbiAgICogQHBhcmFtIHNjaGVkdWxlT3B0aW9ucyBBZGRpdGlvbmFsIG9wdGlvbmFsIHNjaGVkdWxpbmcgb3B0aW9ucy5cbiAgICogQHJldHVybiBBIHByb21pc2Ugb2YgYSBydW4uIEl0IHdpbGwgcmVzb2x2ZSB3aGVuIGFsbCB0aGUgbWVtYmVycyBvZiB0aGUgcnVuIGFyZSBhdmFpbGFibGUuXG4gICAqL1xuICBzY2hlZHVsZUJ1aWxkZXIoXG4gICAgYnVpbGRlck5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zPzoganNvbi5Kc29uT2JqZWN0LFxuICAgIHNjaGVkdWxlT3B0aW9ucz86IFNjaGVkdWxlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxCdWlsZGVyUnVuPjtcblxuICAvKipcbiAgICogUmVzb2x2ZSBhbmQgcmV0dXJuIG9wdGlvbnMgZm9yIGEgc3BlY2lmaWVkIHRhcmdldC4gSWYgdGhlIHRhcmdldCBpc24ndCBkZWZpbmVkIGluIHRoZVxuICAgKiB3b3Jrc3BhY2UgdGhpcyB3aWxsIHJlamVjdCB0aGUgcHJvbWlzZS4gVGhpcyBvYmplY3Qgd2lsbCBiZSByZWFkIGRpcmVjdGx5IGZyb20gdGhlIHdvcmtzcGFjZVxuICAgKiBidXQgbm90IHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBidWlsZGVyIG9mIHRoZSB0YXJnZXQuXG4gICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCB0byByZXNvbHZlIHRoZSBvcHRpb25zIG9mLlxuICAgKiBAcmV0dXJuIEEgbm9uLXZhbGlkYXRlZCBvYmplY3QgcmVzb2x2ZWQgZnJvbSB0aGUgd29ya3NwYWNlLlxuICAgKi9cbiAgZ2V0VGFyZ2V0T3B0aW9ucyh0YXJnZXQ6IFRhcmdldCk6IFByb21pc2U8anNvbi5Kc29uT2JqZWN0PjtcblxuICBnZXRQcm9qZWN0TWV0YWRhdGEocHJvamVjdE5hbWU6IHN0cmluZyk6IFByb21pc2U8anNvbi5Kc29uT2JqZWN0PjtcbiAgZ2V0UHJvamVjdE1ldGFkYXRhKHRhcmdldDogVGFyZ2V0KTogUHJvbWlzZTxqc29uLkpzb25PYmplY3Q+O1xuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhbmQgcmV0dXJuIGEgYnVpbGRlciBuYW1lLiBUaGUgZXhhY3QgZm9ybWF0IG9mIHRoZSBuYW1lIGlzIHVwIHRvIHRoZSBob3N0LFxuICAgKiBzbyBpdCBzaG91bGQgbm90IGJlIHBhcnNlZCB0byBnYXRoZXIgaW5mb3JtYXRpb24gKGl0J3MgZnJlZSBmb3JtKS4gVGhpcyBzdHJpbmcgY2FuIGJlXG4gICAqIHVzZWQgdG8gdmFsaWRhdGUgb3B0aW9ucyBvciBzY2hlZHVsZSBhIGJ1aWxkZXIgZGlyZWN0bHkuXG4gICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCB0byByZXNvbHZlIHRoZSBidWlsZGVyIG5hbWUuXG4gICAqL1xuICBnZXRCdWlsZGVyTmFtZUZvclRhcmdldCh0YXJnZXQ6IFRhcmdldCk6IFByb21pc2U8c3RyaW5nPjtcblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBvcHRpb25zIGFnYWluc3QgYSBidWlsZGVyIHNjaGVtYS4gVGhpcyB1c2VzIHRoZSBzYW1lIG1ldGhvZHMgYXMgdGhlXG4gICAqIHNjaGVkdWxlVGFyZ2V0IGFuZCBzY2hlZHVsZUJyb3dzZXIgbWV0aG9kcyB0byB2YWxpZGF0ZSBhbmQgYXBwbHkgZGVmYXVsdHMgdG8gdGhlIG9wdGlvbnMuXG4gICAqIEl0IGNhbiBiZSBnZW5lcmljYWxseSB0eXBlZCwgaWYgeW91IGtub3cgd2hpY2ggaW50ZXJmYWNlIGl0IGlzIHN1cHBvc2VkIHRvIHZhbGlkYXRlIGFnYWluc3QuXG4gICAqIEBwYXJhbSBvcHRpb25zIEEgZ2VuZXJpYyBvcHRpb24gb2JqZWN0IHRvIHZhbGlkYXRlLlxuICAgKiBAcGFyYW0gYnVpbGRlck5hbWUgVGhlIG5hbWUgb2YgYSBidWlsZGVyIHRvIHVzZS4gVGhpcyBjYW4gYmUgZ290dGVuIGZvciBhIHRhcmdldCBieSB1c2luZyB0aGVcbiAgICogICAgICAgICAgICAgICAgICAgIGdldEJ1aWxkZXJGb3JUYXJnZXQoKSBtZXRob2Qgb24gdGhlIGNvbnRleHQuXG4gICAqL1xuICB2YWxpZGF0ZU9wdGlvbnM8VCBleHRlbmRzIGpzb24uSnNvbk9iamVjdCA9IGpzb24uSnNvbk9iamVjdD4oXG4gICAgb3B0aW9uczoganNvbi5Kc29uT2JqZWN0LFxuICAgIGJ1aWxkZXJOYW1lOiBzdHJpbmcsXG4gICk6IFByb21pc2U8VD47XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgYnVpbGRlciB0byBydW5uaW5nLiBUaGlzIHNob3VsZCBiZSB1c2VkIGlmIGFuIGV4dGVybmFsIGV2ZW50IHRyaWdnZXJlZCBhIHJlLXJ1bixcbiAgICogZS5nLiBhIGZpbGUgd2F0Y2hlZCB3YXMgY2hhbmdlZC5cbiAgICovXG4gIHJlcG9ydFJ1bm5pbmcoKTogdm9pZDtcblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBzdGF0dXMgc3RyaW5nIHNob3duIG9uIHRoZSBpbnRlcmZhY2UuXG4gICAqIEBwYXJhbSBzdGF0dXMgVGhlIHN0YXR1cyB0byBzZXQgaXQgdG8uIEFuIGVtcHR5IHN0cmluZyBjYW4gYmUgdXNlZCB0byByZW1vdmUgdGhlIHN0YXR1cy5cbiAgICovXG4gIHJlcG9ydFN0YXR1cyhzdGF0dXM6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcHJvZ3Jlc3MgZm9yIHRoaXMgYnVpbGRlciBydW4uXG4gICAqIEBwYXJhbSBjdXJyZW50IFRoZSBjdXJyZW50IHByb2dyZXNzLiBUaGlzIHdpbGwgYmUgYmV0d2VlbiAwIGFuZCB0b3RhbC5cbiAgICogQHBhcmFtIHRvdGFsIEEgbmV3IHRvdGFsIHRvIHNldC4gQnkgZGVmYXVsdCBhdCB0aGUgc3RhcnQgb2YgYSBydW4gdGhpcyBpcyAxLiBJZiBvbWl0dGVkIGl0XG4gICAqICAgICB3aWxsIHVzZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgbGFzdCB0b3RhbC5cbiAgICogQHBhcmFtIHN0YXR1cyBVcGRhdGUgdGhlIHN0YXR1cyBzdHJpbmcuIElmIG9taXR0ZWQgdGhlIHN0YXR1cyBzdHJpbmcgaXMgbm90IG1vZGlmaWVkLlxuICAgKi9cbiAgcmVwb3J0UHJvZ3Jlc3MoY3VycmVudDogbnVtYmVyLCB0b3RhbD86IG51bWJlciwgc3RhdHVzPzogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogQWRkIHRlYXJkb3duIGxvZ2ljIHRvIHRoaXMgQ29udGV4dCwgc28gdGhhdCB3aGVuIGl0J3MgYmVpbmcgc3RvcHBlZCBpdCB3aWxsIGV4ZWN1dGUgdGVhcmRvd24uXG4gICAqL1xuICBhZGRUZWFyZG93bih0ZWFyZG93bjogKCkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQpOiB2b2lkO1xufVxuXG4vKipcbiAqIEFuIGFjY2VwdGVkIHJldHVybiB2YWx1ZSBmcm9tIGEgYnVpbGRlci4gQ2FuIGJlIGVpdGhlciBhbiBPYnNlcnZhYmxlLCBhIFByb21pc2Ugb3IgYSB2ZWN0b3IuXG4gKi9cbmV4cG9ydCB0eXBlIEJ1aWxkZXJPdXRwdXRMaWtlID0gT2JzZXJ2YWJsZUlucHV0PEJ1aWxkZXJPdXRwdXQ+IHwgQnVpbGRlck91dHB1dDtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiBpc0J1aWxkZXJPdXRwdXQob2JqOiBhbnkpOiBvYmogaXMgQnVpbGRlck91dHB1dCB7XG4gIGlmICghb2JqIHx8IHR5cGVvZiBvYmoudGhlbiA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2Ygb2JqLnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0eXBlb2Ygb2JqLnN1Y2Nlc3MgPT09ICdib29sZWFuJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21Bc3luY0l0ZXJhYmxlPFQ+KGl0ZXJhYmxlOiBBc3luY0l0ZXJhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiB7XG4gIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic2NyaWJlcikgPT4ge1xuICAgIGhhbmRsZUFzeW5jSXRlcmF0b3Ioc3Vic2NyaWJlciwgaXRlcmFibGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkpLnRoZW4oXG4gICAgICAoKSA9PiBzdWJzY3JpYmVyLmNvbXBsZXRlKCksXG4gICAgICAoZXJyb3IpID0+IHN1YnNjcmliZXIuZXJyb3IoZXJyb3IpLFxuICAgICk7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYW5kbGVBc3luY0l0ZXJhdG9yPFQ+KFxuICBzdWJzY3JpYmVyOiBTdWJzY3JpYmVyPFQ+LFxuICBpdGVyYXRvcjogQXN5bmNJdGVyYXRvcjxUPixcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB0ZWFyZG93biA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiBzdWJzY3JpYmVyLmFkZCgoKSA9PiByZXNvbHZlKCkpKTtcblxuICB0cnkge1xuICAgIHdoaWxlICghc3Vic2NyaWJlci5jbG9zZWQpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UucmFjZShbdGVhcmRvd24sIGl0ZXJhdG9yLm5leHQoKV0pO1xuICAgICAgaWYgKCFyZXN1bHQgfHwgcmVzdWx0LmRvbmUpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHN1YnNjcmliZXIubmV4dChyZXN1bHQudmFsdWUpO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBpdGVyYXRvci5yZXR1cm4/LigpO1xuICB9XG59XG5cbi8qKlxuICogQSBidWlsZGVyIGhhbmRsZXIgZnVuY3Rpb24uIFRoZSBmdW5jdGlvbiBzaWduYXR1cmUgcGFzc2VkIHRvIGBjcmVhdGVCdWlsZGVyKClgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkZXJIYW5kbGVyRm48QT4ge1xuICAvKipcbiAgICogQnVpbGRlcnMgYXJlIGRlZmluZWQgYnkgdXNlcnMgdG8gcGVyZm9ybSBhbnkga2luZCBvZiB0YXNrLCBsaWtlIGJ1aWxkaW5nLCB0ZXN0aW5nIG9yIGxpbnRpbmcsXG4gICAqIGFuZCBzaG91bGQgdXNlIHRoaXMgaW50ZXJmYWNlLlxuICAgKiBAcGFyYW0gaW5wdXQgVGhlIG9wdGlvbnMgKGEgSnNvbk9iamVjdCksIHZhbGlkYXRlZCBieSB0aGUgc2NoZW1hIGFuZCByZWNlaXZlZCBieSB0aGVcbiAgICogICAgIGJ1aWxkZXIuIFRoaXMgY2FuIGluY2x1ZGUgcmVzb2x2ZWQgb3B0aW9ucyBmcm9tIHRoZSBDTEkgb3IgdGhlIHdvcmtzcGFjZS5cbiAgICogQHBhcmFtIGNvbnRleHQgQSBjb250ZXh0IHRoYXQgY2FuIGJlIHVzZWQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgQXJjaGl0ZWN0IGZyYW1ld29yay5cbiAgICogQHJldHVybiBPbmUgb3IgbWFueSBidWlsZGVyIG91dHB1dC5cbiAgICovXG4gIChpbnB1dDogQSwgY29udGV4dDogQnVpbGRlckNvbnRleHQpOiBCdWlsZGVyT3V0cHV0TGlrZTtcbn1cblxuLyoqXG4gKiBBIEJ1aWxkZXIgZ2VuZXJhbCBpbmZvcm1hdGlvbi4gVGhpcyBpcyBnZW5lcmF0ZWQgYnkgdGhlIGhvc3QgYW5kIGlzIGV4cGFuZGVkIGJ5IHRoZSBob3N0LCBidXRcbiAqIHRoZSBwdWJsaWMgQVBJIGNvbnRhaW5zIHRob3NlIGZpZWxkcy5cbiAqL1xuZXhwb3J0IHR5cGUgQnVpbGRlckluZm8gPSBqc29uLkpzb25PYmplY3QgJiB7XG4gIGJ1aWxkZXJOYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIG9wdGlvblNjaGVtYToganNvbi5zY2hlbWEuSnNvblNjaGVtYTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhIHN0cmluZyBvZiBcInByb2plY3Q6dGFyZ2V0Wzpjb25maWd1cmF0aW9uXVwiIGZvciB0aGUgdGFyZ2V0IG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRhcmdldFN0cmluZ0Zyb21UYXJnZXQoeyBwcm9qZWN0LCB0YXJnZXQsIGNvbmZpZ3VyYXRpb24gfTogVGFyZ2V0KSB7XG4gIHJldHVybiBgJHtwcm9qZWN0fToke3RhcmdldH0ke2NvbmZpZ3VyYXRpb24gIT09IHVuZGVmaW5lZCA/ICc6JyArIGNvbmZpZ3VyYXRpb24gOiAnJ31gO1xufVxuXG4vKipcbiAqIFJldHVybiBhIFRhcmdldCB0dXBsZSBmcm9tIGEgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdGFyZ2V0RnJvbVRhcmdldFN0cmluZyhzdHI6IHN0cmluZyk6IFRhcmdldCB7XG4gIGNvbnN0IHR1cGxlID0gc3RyLnNwbGl0KC86LywgMyk7XG4gIGlmICh0dXBsZS5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRhcmdldCBzdHJpbmc6ICcgKyBKU09OLnN0cmluZ2lmeShzdHIpKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcHJvamVjdDogdHVwbGVbMF0sXG4gICAgdGFyZ2V0OiB0dXBsZVsxXSxcbiAgICAuLi4odHVwbGVbMl0gIT09IHVuZGVmaW5lZCAmJiB7IGNvbmZpZ3VyYXRpb246IHR1cGxlWzJdIH0pLFxuICB9O1xufVxuXG4vKipcbiAqIFNjaGVkdWxlIGEgdGFyZ2V0LCBhbmQgZm9yZ2V0IGFib3V0IGl0cyBydW4uIFRoaXMgd2lsbCByZXR1cm4gYW4gb2JzZXJ2YWJsZSBvZiBvdXRwdXRzLCB0aGF0XG4gKiBhcyBhIHRlYXJkb3duIHdpbGwgc3RvcCB0aGUgdGFyZ2V0IGZyb20gcnVubmluZy4gVGhpcyBtZWFucyB0aGF0IHRoZSBSdW4gb2JqZWN0IHRoaXMgcmV0dXJuc1xuICogc2hvdWxkIG5vdCBiZSBzaGFyZWQuXG4gKlxuICogVGhlIHJlYXNvbiB0aGlzIGlzIG5vdCBwYXJ0IG9mIHRoZSBDb250ZXh0IGludGVyZmFjZSBpcyB0byBrZWVwIHRoZSBDb250ZXh0IGFzIG5vcm1hbCBmb3JtIGFzXG4gKiBwb3NzaWJsZS4gVGhpcyBpcyByZWFsbHkgYW4gdXRpbGl0eSB0aGF0IHBlb3BsZSB3b3VsZCBpbXBsZW1lbnQgaW4gdGhlaXIgcHJvamVjdC5cbiAqXG4gKiBAcGFyYW0gY29udGV4dCBUaGUgY29udGV4dCBvZiB5b3VyIGN1cnJlbnQgZXhlY3V0aW9uLlxuICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IHRvIHNjaGVkdWxlLlxuICogQHBhcmFtIG92ZXJyaWRlcyBPdmVycmlkZXMgdGhhdCBhcmUgdXNlZCBpbiB0aGUgdGFyZ2V0LlxuICogQHBhcmFtIHNjaGVkdWxlT3B0aW9ucyBBZGRpdGlvbmFsIHNjaGVkdWxpbmcgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNjaGVkdWxlVGFyZ2V0QW5kRm9yZ2V0KFxuICBjb250ZXh0OiBCdWlsZGVyQ29udGV4dCxcbiAgdGFyZ2V0OiBUYXJnZXQsXG4gIG92ZXJyaWRlcz86IGpzb24uSnNvbk9iamVjdCxcbiAgc2NoZWR1bGVPcHRpb25zPzogU2NoZWR1bGVPcHRpb25zLFxuKTogT2JzZXJ2YWJsZTxCdWlsZGVyT3V0cHV0PiB7XG4gIGxldCByZXNvbHZlOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyKSA9PiAocmVzb2x2ZSA9IHIpKTtcbiAgY29udGV4dC5hZGRUZWFyZG93bigoKSA9PiBwcm9taXNlKTtcblxuICByZXR1cm4gZnJvbShjb250ZXh0LnNjaGVkdWxlVGFyZ2V0KHRhcmdldCwgb3ZlcnJpZGVzLCBzY2hlZHVsZU9wdGlvbnMpKS5waXBlKFxuICAgIHN3aXRjaE1hcChcbiAgICAgIChydW4pID0+XG4gICAgICAgIG5ldyBPYnNlcnZhYmxlPEJ1aWxkZXJPdXRwdXQ+KChvYnNlcnZlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHJ1bi5vdXRwdXQuc3Vic2NyaWJlKG9ic2VydmVyKTtcblxuICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIC8vIFdlIGNhbiBwcm9wZXJseSBpZ25vcmUgdGhlIGZsb2F0aW5nIHByb21pc2UgYXMgaXQncyBhIFwicmV2ZXJzZVwiIHByb21pc2U7IHRoZSB0ZWFyZG93blxuICAgICAgICAgICAgLy8gaXMgd2FpdGluZyBmb3IgdGhlIHJlc29sdmUuXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWZsb2F0aW5nLXByb21pc2VzXG4gICAgICAgICAgICBydW4uc3RvcCgpLnRoZW4ocmVzb2x2ZSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfSksXG4gICAgKSxcbiAgKTtcbn1cbiJdfQ==
|
package/src/architect.js
CHANGED
|
@@ -71,7 +71,7 @@ function _createJobHandlerFromBuilderInfo(info, target, host, registry, baseOpti
|
|
|
71
71
|
}
|
|
72
72
|
}));
|
|
73
73
|
}),
|
|
74
|
-
// Share subscriptions to the output, otherwise the
|
|
74
|
+
// Share subscriptions to the output, otherwise the handler will be re-run.
|
|
75
75
|
(0, rxjs_1.shareReplay)());
|
|
76
76
|
// Separate the errors from the inbound bus into their own observable that completes when the
|
|
77
77
|
// builder output does.
|
|
@@ -276,4 +276,4 @@ class Architect {
|
|
|
276
276
|
}
|
|
277
277
|
}
|
|
278
278
|
exports.Architect = Architect;
|
|
279
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl0ZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYXJjaGl0ZWN0L3NyYy9hcmNoaXRlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsK0NBQXFEO0FBQ3JELCtCQWFjO0FBQ2QsK0JBUWU7QUFFZixpQ0FhZ0I7QUFDaEIseURBQXNFO0FBRXRFLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ25ELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBRXJELFNBQVMsZ0NBQWdDLENBQ3ZDLElBQWlCLEVBQ2pCLE1BQTBCLEVBQzFCLElBQW1CLEVBQ25CLFFBQW9DLEVBQ3BDLFdBQTRCO0lBRTVCLE1BQU0sY0FBYyxHQUF1QjtRQUN6QyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUEsNEJBQXNCLEVBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVc7UUFDdkUsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtRQUM1QixLQUFLLEVBQUUsV0FBVztRQUNsQixNQUFNLEVBQUUsWUFBWTtRQUNwQixJQUFJO0tBQ0wsQ0FBQztJQUVGLFNBQVMsT0FBTyxDQUFDLFFBQXlCLEVBQUUsT0FBMEI7UUFDcEUsMkNBQTJDO1FBQzNDLE1BQU0sNkJBQTZCLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQzNELElBQUEsZ0JBQVMsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDMUIsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLDRCQUFxQixDQUFDLEtBQUssRUFBRTtnQkFDaEQsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQXFCLENBQUM7Z0JBQ3hDLE1BQU0sT0FBTyxH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LFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMxQixNQUFNLEVBQUUsZUFBZSxDQUFDLE1BQU0sSUFBSSxJQUFJLGNBQU8sQ0FBQyxVQUFVLEVBQUU7WUFDMUQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsRUFBRTtZQUNsRCxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRTtTQUM3QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsY0FBYyxDQUNaLE1BQWMsRUFDZCxZQUE2QixFQUFFLEVBQy9CLGtCQUFtQyxFQUFFO1FBRXJDLE9BQU8sSUFBQSxtQ0FBZ0IsRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFFO1lBQ3pDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMxQixNQUFNLEVBQUUsZUFBZSxDQUFDLE1BQU0sSUFBSSxJQUFJLGNBQU8sQ0FBQyxVQUFVLEVBQUU7WUFDMUQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsRUFBRTtZQUNsRCxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRTtTQUM3QyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUE1REQsOEJBNERDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IGpzb24sIGxvZ2dpbmcgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvY29yZSc7XG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxuICBjb25jYXRNYXAsXG4gIGZpcnN0LFxuICBmcm9tLFxuICBpZ25vcmVFbGVtZW50cyxcbiAgbGFzdCxcbiAgbWFwLFxuICBtZXJnZSxcbiAgb2YsXG4gIG9uRXJyb3JSZXN1bWVOZXh0LFxuICBzaGFyZVJlcGxheSxcbiAgdGFrZVVudGlsLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEJ1aWxkZXJJbmZvLFxuICBCdWlsZGVySW5wdXQsXG4gIEJ1aWxkZXJPdXRwdXQsXG4gIEJ1aWxkZXJSZWdpc3RyeSxcbiAgQnVpbGRlclJ1bixcbiAgVGFyZ2V0LFxuICB0YXJnZXRTdHJpbmdGcm9tVGFyZ2V0LFxufSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBBcmNoaXRlY3RIb3N0LCBCdWlsZGVyRGVzY3JpcHRpb24sIEJ1aWxkZXJKb2JIYW5kbGVyIH0gZnJvbSAnLi9pbnRlcm5hbCc7XG5pbXBvcnQge1xuICBGYWxsYmFja1JlZ2lzdHJ5LFxuICBKb2JIYW5kbGVyLFxuICBKb2JIYW5kbGVyQ29udGV4dCxcbiAgSm9iSW5ib3VuZE1lc3NhZ2UsXG4gIEpvYkluYm91bmRNZXNzYWdlS2luZCxcbiAgSm9iTmFtZSxcbiAgSm9iT3V0Ym91bmRNZXNzYWdlS2luZCxcbiAgUmVnaXN0cnksXG4gIFNjaGVkdWxlcixcbiAgU2ltcGxlSm9iUmVnaXN0cnksXG4gIFNpbXBsZVNjaGVkdWxlcixcbiAgY3JlYXRlSm9iSGFuZGxlcixcbn0gZnJvbSAnLi9qb2JzJztcbmltcG9ydCB7IHNjaGVkdWxlQnlOYW1lLCBzY2hlZHVsZUJ5VGFyZ2V0IH0gZnJvbSAnLi9zY2hlZHVsZS1ieS1uYW1lJztcblxuY29uc3QgaW5wdXRTY2hlbWEgPSByZXF1aXJlKCcuL2lucHV0LXNjaGVtYS5qc29uJyk7XG5jb25zdCBvdXRwdXRTY2hlbWEgPSByZXF1aXJlKCcuL291dHB1dC1zY2hlbWEuanNvbicpO1xuXG5mdW5jdGlvbiBfY3JlYXRlSm9iSGFuZGxlckZyb21CdWlsZGVySW5mbyhcbiAgaW5mbzogQnVpbGRlckluZm8sXG4gIHRhcmdldDogVGFyZ2V0IHwgdW5kZWZpbmVkLFxuICBob3N0OiBBcmNoaXRlY3RIb3N0LFxuICByZWdpc3RyeToganNvbi5zY2hlbWEuU2NoZW1hUmVnaXN0cnksXG4gIGJhc2VPcHRpb25zOiBqc29uLkpzb25PYmplY3QsXG4pOiBPYnNlcnZhYmxlPEJ1aWxkZXJKb2JIYW5kbGVyPiB7XG4gIGNvbnN0IGpvYkRlc2NyaXB0aW9uOiBCdWlsZGVyRGVzY3JpcHRpb24gPSB7XG4gICAgbmFtZTogdGFyZ2V0ID8gYHske3RhcmdldFN0cmluZ0Zyb21UYXJnZXQodGFyZ2V0KX19YCA6IGluZm8uYnVpbGRlck5hbWUsXG4gICAgYXJndW1lbnQ6IHsgdHlwZTogJ29iamVjdCcgfSxcbiAgICBpbnB1dDogaW5wdXRTY2hlbWEsXG4gICAgb3V0cHV0OiBvdXRwdXRTY2hlbWEsXG4gICAgaW5mbyxcbiAgfTtcblxuICBmdW5jdGlvbiBoYW5kbGVyKGFyZ3VtZW50OiBqc29uLkpzb25PYmplY3QsIGNvbnRleHQ6IEpvYkhhbmRsZXJDb250ZXh0KSB7XG4gICAgLy8gQWRkIGlucHV0IHZhbGlkYXRpb24gdG8gdGhlIGluYm91bmQgYnVzLlxuICAgIGNvbnN0IGluYm91bmRCdXNXaXRoSW5wdXRWYWxpZGF0aW9uID0gY29udGV4dC5pbmJvdW5kQnVzLnBpcGUoXG4gICAgICBjb25jYXRNYXAoYXN5bmMgKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2Uua2luZCA9PT0gSm9iSW5ib3VuZE1lc3NhZ2VLaW5kLklucHV0KSB7XG4gICAgICAgICAgY29uc3QgdiA9IG1lc3NhZ2UudmFsdWUgYXMgQnVpbGRlcklucHV0O1xuICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAuLi5iYXNlT3B0aW9ucyxcbiAgICAgICAgICAgIC4uLnYub3B0aW9ucyxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgLy8gVmFsaWRhdGUgdiBhZ2FpbnN0IHRoZSBvcHRpb25zIHNjaGVtYS5cbiAgICAgICAgICBjb25zdCB2YWxpZGF0aW9uID0gYXdhaXQgcmVnaXN0cnkuY29tcGlsZShpbmZvLm9wdGlvblNjaGVtYSk7XG4gICAgICAgICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IGF3YWl0IHZhbGlkYXRpb24ob3B0aW9ucyk7XG4gICAgICAgICAgY29uc3QgeyBkYXRhLCBzdWNjZXNzLCBlcnJvcnMgfSA9IHZhbGlkYXRpb25SZXN1bHQ7XG5cbiAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBqc29uLnNjaGVtYS5TY2hlbWFWYWxpZGF0aW9uRXhjZXB0aW9uKGVycm9ycyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHsgLi4ubWVzc2FnZSwgdmFsdWU6IHsgLi4udiwgb3B0aW9uczogZGF0YSB9IH0gYXMgSm9iSW5ib3VuZE1lc3NhZ2U8QnVpbGRlcklucHV0PjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbWVzc2FnZSBhcyBKb2JJbmJvdW5kTWVzc2FnZTxCdWlsZGVySW5wdXQ+O1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIC8vIFVzaW5nIGEgc2hhcmUgcmVwbGF5IGJlY2F1c2UgdGhlIGpvYiBtaWdodCBiZSBzeW5jaHJvbm91c2x5IHNlbmRpbmcgaW5wdXQsIGJ1dFxuICAgICAgLy8gYXN5bmNocm9ub3VzbHkgbGlzdGVuaW5nIHRvIGl0LlxuICAgICAgc2hhcmVSZXBsYXkoMSksXG4gICAgKTtcblxuICAgIC8vIE1ha2UgYW4gaW5ib3VuZEJ1cyB0aGF0IGNvbXBsZXRlcyBpbnN0ZWFkIG9mIGVycm9yaW5nIG91dC5cbiAgICAvLyBXZSdsbCBtZXJnZSB0aGUgZXJyb3JzIGludG8gdGhlIG91dHB1dCBpbnN0ZWFkLlxuICAgIGNvbnN0IGluYm91bmRCdXMgPSBvbkVycm9yUmVzdW1lTmV4dChpbmJvdW5kQnVzV2l0aElucHV0VmFsaWRhdGlvbik7XG5cbiAgICBjb25zdCBvdXRwdXQgPSBmcm9tKGhvc3QubG9hZEJ1aWxkZXIoaW5mbykpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKGJ1aWxkZXIpID0+IHtcbiAgICAgICAgaWYgKGJ1aWxkZXIgPT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBsb2FkIGJ1aWxkZXIgZm9yIGJ1aWxkZXJJbmZvICR7SlNPTi5zdHJpbmdpZnkoaW5mbywgbnVsbCwgMil9YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYnVpbGRlci5oYW5kbGVyKGFyZ3VtZW50LCB7IC4uLmNvbnRleHQsIGluYm91bmRCdXMgfSkucGlwZShcbiAgICAgICAgICBtYXAoKG91dHB1dCkgPT4ge1xuICAgICAgICAgICAgaWYgKG91dHB1dC5raW5kID09PSBKb2JPdXRib3VuZE1lc3NhZ2VLaW5kLk91dHB1dCkge1xuICAgICAgICAgICAgICAvLyBBZGQgdGFyZ2V0IHRvIGl0LlxuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgLi4ub3V0cHV0LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgLi4uKHRhcmdldCA/IHsgdGFyZ2V0IH0gOiAwKSxcbiAgICAgICAgICAgICAgICB9IGFzIHVua25vd24gYXMganNvbi5Kc29uT2JqZWN0LFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgLy8gU2hhcmUgc3Vic2NyaXB0aW9ucyB0byB0aGUgb3V0cHV0LCBvdGhlcndpc2UgdGhlIHRoZSBoYW5kbGVyIHdpbGwgYmUgcmUtcnVuLlxuICAgICAgc2hhcmVSZXBsYXkoKSxcbiAgICApO1xuXG4gICAgLy8gU2VwYXJhdGUgdGhlIGVycm9ycyBmcm9tIHRoZSBpbmJvdW5kIGJ1cyBpbnRvIHRoZWlyIG93biBvYnNlcnZhYmxlIHRoYXQgY29tcGxldGVzIHdoZW4gdGhlXG4gICAgLy8gYnVpbGRlciBvdXRwdXQgZG9lcy5cbiAgICBjb25zdCBpbmJvdW5kQnVzRXJyb3JzID0gaW5ib3VuZEJ1c1dpdGhJbnB1dFZhbGlkYXRpb24ucGlwZShcbiAgICAgIGlnbm9yZUVsZW1lbnRzKCksXG4gICAgICB0YWtlVW50aWwob25FcnJvclJlc3VtZU5leHQob3V0cHV0LnBpcGUobGFzdCgpKSkpLFxuICAgICk7XG5cbiAgICAvLyBSZXR1cm4gdGhlIGJ1aWxkZXIgb3V0cHV0IHBsdXMgYW55IGlucHV0IGVycm9ycy5cbiAgICByZXR1cm4gbWVyZ2UoaW5ib3VuZEJ1c0Vycm9ycywgb3V0cHV0KTtcbiAgfVxuXG4gIHJldHVybiBvZihPYmplY3QuYXNzaWduKGhhbmRsZXIsIHsgam9iRGVzY3JpcHRpb24gfSkgYXMgQnVpbGRlckpvYkhhbmRsZXIpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVkdWxlT3B0aW9ucyB7XG4gIGxvZ2dlcj86IGxvZ2dpbmcuTG9nZ2VyO1xufVxuXG4vKipcbiAqIEEgSm9iUmVnaXN0cnkgdGhhdCByZXNvbHZlcyBidWlsZGVyIHRhcmdldHMgZnJvbSB0aGUgaG9zdC5cbiAqL1xuY2xhc3MgQXJjaGl0ZWN0QnVpbGRlckpvYlJlZ2lzdHJ5IGltcGxlbWVudHMgQnVpbGRlclJlZ2lzdHJ5IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIF9ob3N0OiBBcmNoaXRlY3RIb3N0LFxuICAgIHByb3RlY3RlZCBfcmVnaXN0cnk6IGpzb24uc2NoZW1hLlNjaGVtYVJlZ2lzdHJ5LFxuICAgIHByb3RlY3RlZCBfam9iQ2FjaGU/OiBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPEJ1aWxkZXJKb2JIYW5kbGVyIHwgbnVsbD4+LFxuICAgIHByb3RlY3RlZCBfaW5mb0NhY2hlPzogTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxCdWlsZGVySW5mbyB8IG51bGw+PixcbiAgKSB7fVxuXG4gIHByb3RlY3RlZCBfcmVzb2x2ZUJ1aWxkZXIobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxCdWlsZGVySW5mbyB8IG51bGw+IHtcbiAgICBjb25zdCBjYWNoZSA9IHRoaXMuX2luZm9DYWNoZTtcbiAgICBpZiAoY2FjaGUpIHtcbiAgICAgIGNvbnN0IG1heWJlQ2FjaGUgPSBjYWNoZS5nZXQobmFtZSk7XG4gICAgICBpZiAobWF5YmVDYWNoZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBtYXliZUNhY2hlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpbmZvID0gZnJvbSh0aGlzLl9ob3N0LnJlc29sdmVCdWlsZGVyKG5hbWUpKS5waXBlKHNoYXJlUmVwbGF5KDEpKTtcbiAgICAgIGNhY2hlLnNldChuYW1lLCBpbmZvKTtcblxuICAgICAgcmV0dXJuIGluZm87XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyb20odGhpcy5faG9zdC5yZXNvbHZlQnVpbGRlcihuYW1lKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2NyZWF0ZUJ1aWxkZXIoXG4gICAgaW5mbzogQnVpbGRlckluZm8sXG4gICAgdGFyZ2V0PzogVGFyZ2V0LFxuICAgIG9wdGlvbnM/OiBqc29uLkpzb25PYmplY3QsXG4gICk6IE9ic2VydmFibGU8QnVpbGRlckpvYkhhbmRsZXIgfCBudWxsPiB7XG4gICAgY29uc3QgY2FjaGUgPSB0aGlzLl9qb2JDYWNoZTtcbiAgICBpZiAodGFyZ2V0KSB7XG4gICAgICBjb25zdCBtYXliZUhpdCA9IGNhY2hlICYmIGNhY2hlLmdldCh0YXJnZXRTdHJpbmdGcm9tVGFyZ2V0KHRhcmdldCkpO1xuICAgICAgaWYgKG1heWJlSGl0KSB7XG4gICAgICAgIHJldHVybiBtYXliZUhpdDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWF5YmVIaXQgPSBjYWNoZSAmJiBjYWNoZS5nZXQoaW5mby5idWlsZGVyTmFtZSk7XG4gICAgICBpZiAobWF5YmVIaXQpIHtcbiAgICAgICAgcmV0dXJuIG1heWJlSGl0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IF9jcmVhdGVKb2JIYW5kbGVyRnJvbUJ1aWxkZXJJbmZvKFxuICAgICAgaW5mbyxcbiAgICAgIHRhcmdldCxcbiAgICAgIHRoaXMuX2hvc3QsXG4gICAgICB0aGlzLl9yZWdpc3RyeSxcbiAgICAgIG9wdGlvbnMgfHwge30sXG4gICAgKTtcblxuICAgIGlmIChjYWNoZSkge1xuICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICBjYWNoZS5zZXQodGFyZ2V0U3RyaW5nRnJvbVRhcmdldCh0YXJnZXQpLCByZXN1bHQucGlwZShzaGFyZVJlcGxheSgxKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FjaGUuc2V0KGluZm8uYnVpbGRlck5hbWUsIHJlc3VsdC5waXBlKHNoYXJlUmVwbGF5KDEpKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldDxBIGV4dGVuZHMganNvbi5Kc29uT2JqZWN0LCBJIGV4dGVuZHMgQnVpbGRlcklucHV0LCBPIGV4dGVuZHMgQnVpbGRlck91dHB1dD4oXG4gICAgbmFtZTogc3RyaW5nLFxuICApOiBPYnNlcnZhYmxlPEpvYkhhbmRsZXI8QSwgSSwgTz4gfCBudWxsPiB7XG4gICAgY29uc3QgbSA9IG5hbWUubWF0Y2goL14oW146XSspOihbXjpdKykkL2kpO1xuICAgIGlmICghbSkge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cblxuICAgIHJldHVybiBmcm9tKHRoaXMuX3Jlc29sdmVCdWlsZGVyKG5hbWUpKS5waXBlKFxuICAgICAgY29uY2F0TWFwKChidWlsZGVySW5mbykgPT4gKGJ1aWxkZXJJbmZvID8gdGhpcy5fY3JlYXRlQnVpbGRlcihidWlsZGVySW5mbykgOiBvZihudWxsKSkpLFxuICAgICAgZmlyc3QobnVsbCwgbnVsbCksXG4gICAgKSBhcyBPYnNlcnZhYmxlPEpvYkhhbmRsZXI8QSwgSSwgTz4gfCBudWxsPjtcbiAgfVxufVxuXG4vKipcbiAqIEEgSm9iUmVnaXN0cnkgdGhhdCByZXNvbHZlcyB0YXJnZXRzIGZyb20gdGhlIGhvc3QuXG4gKi9cbmNsYXNzIEFyY2hpdGVjdFRhcmdldEpvYlJlZ2lzdHJ5IGV4dGVuZHMgQXJjaGl0ZWN0QnVpbGRlckpvYlJlZ2lzdHJ5IHtcbiAgb3ZlcnJpZGUgZ2V0PEEgZXh0ZW5kcyBqc29uLkpzb25PYmplY3QsIEkgZXh0ZW5kcyBCdWlsZGVySW5wdXQsIE8gZXh0ZW5kcyBCdWlsZGVyT3V0cHV0PihcbiAgICBuYW1lOiBzdHJpbmcsXG4gICk6IE9ic2VydmFibGU8Sm9iSGFuZGxlcjxBLCBJLCBPPiB8IG51bGw+IHtcbiAgICBjb25zdCBtID0gbmFtZS5tYXRjaCgvXnsoW146XSspOihbXjpdKykoPzo6KFteOl0qKSk/fSQvaSk7XG4gICAgaWYgKCFtKSB7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0ID0ge1xuICAgICAgcHJvamVjdDogbVsxXSxcbiAgICAgIHRhcmdldDogbVsyXSxcbiAgICAgIGNvbmZpZ3VyYXRpb246IG1bM10sXG4gICAgfTtcblxuICAgIHJldHVybiBmcm9tKFxuICAgICAgUHJvbWlzZS5hbGwoW1xuICAgICAgICB0aGlzLl9ob3N0LmdldEJ1aWxkZXJOYW1lRm9yVGFyZ2V0KHRhcmdldCksXG4gICAgICAgIHRoaXMuX2hvc3QuZ2V0T3B0aW9uc0ZvclRhcmdldCh0YXJnZXQpLFxuICAgICAgXSksXG4gICAgKS5waXBlKFxuICAgICAgY29uY2F0TWFwKChbYnVpbGRlclN0ciwgb3B0aW9uc10pID0+IHtcbiAgICAgICAgaWYgKGJ1aWxkZXJTdHIgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvbHZlQnVpbGRlcihidWlsZGVyU3RyKS5waXBlKFxuICAgICAgICAgIGNvbmNhdE1hcCgoYnVpbGRlckluZm8pID0+IHtcbiAgICAgICAgICAgIGlmIChidWlsZGVySW5mbyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVCdWlsZGVyKGJ1aWxkZXJJbmZvLCB0YXJnZXQsIG9wdGlvbnMpO1xuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBmaXJzdChudWxsLCBudWxsKSxcbiAgICApIGFzIE9ic2VydmFibGU8Sm9iSGFuZGxlcjxBLCBJLCBPPiB8IG51bGw+O1xuICB9XG59XG5cbmZ1bmN0aW9uIF9nZXRUYXJnZXRPcHRpb25zRmFjdG9yeShob3N0OiBBcmNoaXRlY3RIb3N0KSB7XG4gIHJldHVybiBjcmVhdGVKb2JIYW5kbGVyPFRhcmdldCwganNvbi5Kc29uVmFsdWUsIGpzb24uSnNvbk9iamVjdD4oXG4gICAgKHRhcmdldCkgPT4ge1xuICAgICAgcmV0dXJuIGhvc3QuZ2V0T3B0aW9uc0ZvclRhcmdldCh0YXJnZXQpLnRoZW4oKG9wdGlvbnMpID0+IHtcbiAgICAgICAgaWYgKG9wdGlvbnMgPT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGFyZ2V0OiAke0pTT04uc3RyaW5naWZ5KHRhcmdldCl9LmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICcuLmdldFRhcmdldE9wdGlvbnMnLFxuICAgICAgb3V0cHV0OiB7IHR5cGU6ICdvYmplY3QnIH0sXG4gICAgICBhcmd1bWVudDogaW5wdXRTY2hlbWEucHJvcGVydGllcy50YXJnZXQsXG4gICAgfSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gX2dldFByb2plY3RNZXRhZGF0YUZhY3RvcnkoaG9zdDogQXJjaGl0ZWN0SG9zdCkge1xuICByZXR1cm4gY3JlYXRlSm9iSGFuZGxlcjxUYXJnZXQsIGpzb24uSnNvblZhbHVlLCBqc29uLkpzb25PYmplY3Q+KFxuICAgICh0YXJnZXQpID0+IHtcbiAgICAgIHJldHVybiBob3N0LmdldFByb2plY3RNZXRhZGF0YSh0YXJnZXQpLnRoZW4oKG9wdGlvbnMpID0+IHtcbiAgICAgICAgaWYgKG9wdGlvbnMgPT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGFyZ2V0OiAke0pTT04uc3RyaW5naWZ5KHRhcmdldCl9LmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICcuLmdldFByb2plY3RNZXRhZGF0YScsXG4gICAgICBvdXRwdXQ6IHsgdHlwZTogJ29iamVjdCcgfSxcbiAgICAgIGFyZ3VtZW50OiB7XG4gICAgICAgIG9uZU9mOiBbeyB0eXBlOiAnc3RyaW5nJyB9LCBpbnB1dFNjaGVtYS5wcm9wZXJ0aWVzLnRhcmdldF0sXG4gICAgICB9LFxuICAgIH0sXG4gICk7XG59XG5cbmZ1bmN0aW9uIF9nZXRCdWlsZGVyTmFtZUZvclRhcmdldEZhY3RvcnkoaG9zdDogQXJjaGl0ZWN0SG9zdCkge1xuICByZXR1cm4gY3JlYXRlSm9iSGFuZGxlcjxUYXJnZXQsIG5ldmVyLCBzdHJpbmc+KFxuICAgIGFzeW5jICh0YXJnZXQpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXJOYW1lID0gYXdhaXQgaG9zdC5nZXRCdWlsZGVyTmFtZUZvclRhcmdldCh0YXJnZXQpO1xuICAgICAgaWYgKCFidWlsZGVyTmFtZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGJ1aWxkZXIgd2VyZSBmb3VuZCBmb3IgdGFyZ2V0ICR7dGFyZ2V0U3RyaW5nRnJvbVRhcmdldCh0YXJnZXQpfS5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGJ1aWxkZXJOYW1lO1xuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJy4uZ2V0QnVpbGRlck5hbWVGb3JUYXJnZXQnLFxuICAgICAgb3V0cHV0OiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICBhcmd1bWVudDogaW5wdXRTY2hlbWEucHJvcGVydGllcy50YXJnZXQsXG4gICAgfSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gX3ZhbGlkYXRlT3B0aW9uc0ZhY3RvcnkoaG9zdDogQXJjaGl0ZWN0SG9zdCwgcmVnaXN0cnk6IGpzb24uc2NoZW1hLlNjaGVtYVJlZ2lzdHJ5KSB7XG4gIHJldHVybiBjcmVhdGVKb2JIYW5kbGVyPFtzdHJpbmcsIGpzb24uSnNvbk9iamVjdF0sIG5ldmVyLCBqc29uLkpzb25PYmplY3Q+KFxuICAgIGFzeW5jIChbYnVpbGRlck5hbWUsIG9wdGlvbnNdKSA9PiB7XG4gICAgICAvLyBHZXQgb3B0aW9uIHNjaGVtYSBmcm9tIHRoZSBob3N0LlxuICAgICAgY29uc3QgYnVpbGRlckluZm8gPSBhd2FpdCBob3N0LnJlc29sdmVCdWlsZGVyKGJ1aWxkZXJOYW1lKTtcbiAgICAgIGlmICghYnVpbGRlckluZm8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBidWlsZGVyIGluZm8gd2VyZSBmb3VuZCBmb3IgYnVpbGRlciAke0pTT04uc3RyaW5naWZ5KGJ1aWxkZXJOYW1lKX0uYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhbGlkYXRpb24gPSBhd2FpdCByZWdpc3RyeS5jb21waWxlKGJ1aWxkZXJJbmZvLm9wdGlvblNjaGVtYSk7XG4gICAgICBjb25zdCB7IGRhdGEsIHN1Y2Nlc3MsIGVycm9ycyB9ID0gYXdhaXQgdmFsaWRhdGlvbihvcHRpb25zKTtcblxuICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgIHRocm93IG5ldyBqc29uLnNjaGVtYS5TY2hlbWFWYWxpZGF0aW9uRXhjZXB0aW9uKGVycm9ycyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkYXRhIGFzIGpzb24uSnNvbk9iamVjdDtcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICcuLnZhbGlkYXRlT3B0aW9ucycsXG4gICAgICBvdXRwdXQ6IHsgdHlwZTogJ29iamVjdCcgfSxcbiAgICAgIGFyZ3VtZW50OiB7XG4gICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIGl0ZW1zOiBbeyB0eXBlOiAnc3RyaW5nJyB9LCB7IHR5cGU6ICdvYmplY3QnIH1dLFxuICAgICAgfSxcbiAgICB9LFxuICApO1xufVxuXG5leHBvcnQgY2xhc3MgQXJjaGl0ZWN0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2NoZWR1bGVyOiBTY2hlZHVsZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2pvYkNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8QnVpbGRlckpvYkhhbmRsZXI+PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbmZvQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxCdWlsZGVySW5mbz4+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfaG9zdDogQXJjaGl0ZWN0SG9zdCxcbiAgICByZWdpc3RyeToganNvbi5zY2hlbWEuU2NoZW1hUmVnaXN0cnkgPSBuZXcganNvbi5zY2hlbWEuQ29yZVNjaGVtYVJlZ2lzdHJ5KCksXG4gICAgYWRkaXRpb25hbEpvYlJlZ2lzdHJ5PzogUmVnaXN0cnksXG4gICkge1xuICAgIGNvbnN0IHByaXZhdGVBcmNoaXRlY3RKb2JSZWdpc3RyeSA9IG5ldyBTaW1wbGVKb2JSZWdpc3RyeSgpO1xuICAgIC8vIENyZWF0ZSBwcml2YXRlIGpvYnMuXG4gICAgcHJpdmF0ZUFyY2hpdGVjdEpvYlJlZ2lzdHJ5LnJlZ2lzdGVyKF9nZXRUYXJnZXRPcHRpb25zRmFjdG9yeShfaG9zdCkpO1xuICAgIHByaXZhdGVBcmNoaXRlY3RKb2JSZWdpc3RyeS5yZWdpc3RlcihfZ2V0QnVpbGRlck5hbWVGb3JUYXJnZXRGYWN0b3J5KF9ob3N0KSk7XG4gICAgcHJpdmF0ZUFyY2hpdGVjdEpvYlJlZ2lzdHJ5LnJlZ2lzdGVyKF92YWxpZGF0ZU9wdGlvbnNGYWN0b3J5KF9ob3N0LCByZWdpc3RyeSkpO1xuICAgIHByaXZhdGVBcmNoaXRlY3RKb2JSZWdpc3RyeS5yZWdpc3RlcihfZ2V0UHJvamVjdE1ldGFkYXRhRmFjdG9yeShfaG9zdCkpO1xuXG4gICAgY29uc3Qgam9iUmVnaXN0cnkgPSBuZXcgRmFsbGJhY2tSZWdpc3RyeShbXG4gICAgICBuZXcgQXJjaGl0ZWN0VGFyZ2V0Sm9iUmVnaXN0cnkoX2hvc3QsIHJlZ2lzdHJ5LCB0aGlzLl9qb2JDYWNoZSwgdGhpcy5faW5mb0NhY2hlKSxcbiAgICAgIG5ldyBBcmNoaXRlY3RCdWlsZGVySm9iUmVnaXN0cnkoX2hvc3QsIHJlZ2lzdHJ5LCB0aGlzLl9qb2JDYWNoZSwgdGhpcy5faW5mb0NhY2hlKSxcbiAgICAgIHByaXZhdGVBcmNoaXRlY3RKb2JSZWdpc3RyeSxcbiAgICAgIC4uLihhZGRpdGlvbmFsSm9iUmVnaXN0cnkgPyBbYWRkaXRpb25hbEpvYlJlZ2lzdHJ5XSA6IFtdKSxcbiAgICBdIGFzIFJlZ2lzdHJ5W10pO1xuXG4gICAgdGhpcy5fc2NoZWR1bGVyID0gbmV3IFNpbXBsZVNjaGVkdWxlcihqb2JSZWdpc3RyeSwgcmVnaXN0cnkpO1xuICB9XG5cbiAgaGFzKG5hbWU6IEpvYk5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5fc2NoZWR1bGVyLmhhcyhuYW1lKTtcbiAgfVxuXG4gIHNjaGVkdWxlQnVpbGRlcihcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9uczoganNvbi5Kc29uT2JqZWN0LFxuICAgIHNjaGVkdWxlT3B0aW9uczogU2NoZWR1bGVPcHRpb25zID0ge30sXG4gICk6IFByb21pc2U8QnVpbGRlclJ1bj4ge1xuICAgIC8vIFRoZSBiZWxvdyB3aWxsIG1hdGNoICdwcm9qZWN0OnRhcmdldDpjb25maWd1cmF0aW9uJ1xuICAgIGlmICghL15bXjpdKzpbXjpdKyg6W146XSspPyQvLnRlc3QobmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBidWlsZGVyIG5hbWU6ICcgKyBKU09OLnN0cmluZ2lmeShuYW1lKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjaGVkdWxlQnlOYW1lKG5hbWUsIG9wdGlvbnMsIHtcbiAgICAgIHNjaGVkdWxlcjogdGhpcy5fc2NoZWR1bGVyLFxuICAgICAgbG9nZ2VyOiBzY2hlZHVsZU9wdGlvbnMubG9nZ2VyIHx8IG5ldyBsb2dnaW5nLk51bGxMb2dnZXIoKSxcbiAgICAgIGN1cnJlbnREaXJlY3Rvcnk6IHRoaXMuX2hvc3QuZ2V0Q3VycmVudERpcmVjdG9yeSgpLFxuICAgICAgd29ya3NwYWNlUm9vdDogdGhpcy5faG9zdC5nZXRXb3Jrc3BhY2VSb290KCksXG4gICAgfSk7XG4gIH1cbiAgc2NoZWR1bGVUYXJnZXQoXG4gICAgdGFyZ2V0OiBUYXJnZXQsXG4gICAgb3ZlcnJpZGVzOiBqc29uLkpzb25PYmplY3QgPSB7fSxcbiAgICBzY2hlZHVsZU9wdGlvbnM6IFNjaGVkdWxlT3B0aW9ucyA9IHt9LFxuICApOiBQcm9taXNlPEJ1aWxkZXJSdW4+IHtcbiAgICByZXR1cm4gc2NoZWR1bGVCeVRhcmdldCh0YXJnZXQsIG92ZXJyaWRlcywge1xuICAgICAgc2NoZWR1bGVyOiB0aGlzLl9zY2hlZHVsZXIsXG4gICAgICBsb2dnZXI6IHNjaGVkdWxlT3B0aW9ucy5sb2dnZXIgfHwgbmV3IGxvZ2dpbmcuTnVsbExvZ2dlcigpLFxuICAgICAgY3VycmVudERpcmVjdG9yeTogdGhpcy5faG9zdC5nZXRDdXJyZW50RGlyZWN0b3J5KCksXG4gICAgICB3b3Jrc3BhY2VSb290OiB0aGlzLl9ob3N0LmdldFdvcmtzcGFjZVJvb3QoKSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
279
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl0ZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYXJjaGl0ZWN0L3NyYy9hcmNoaXRlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsK0NBQXFEO0FBQ3JELCtCQWFjO0FBQ2QsK0JBUWU7QUFFZixpQ0FhZ0I7QUFDaEIseURBQXNFO0FBRXRFLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ25ELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBRXJELFNBQVMsZ0NBQWdDLENBQ3ZDLElBQWlCLEVBQ2pCLE1BQTBCLEVBQzFCLElBQW1CLEVBQ25CLFFBQW9DLEVBQ3BDLFdBQTRCO0lBRTVCLE1BQU0sY0FBYyxHQUF1QjtRQUN6QyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUEsNEJBQXNCLEVBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVc7UUFDdkUsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtRQUM1QixLQUFLLEVBQUUsV0FBVztRQUNsQixNQUFNLEVBQUUsWUFBWTtRQUNwQixJQUFJO0tBQ0wsQ0FBQztJQUVGLFNBQVMsT0FBTyxDQUFDLFFBQXlCLEVBQUUsT0FBMEI7UUFDcEUsMkNBQTJDO1FBQzNDLE1BQU0sNkJBQTZCLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQzNELElBQUEsZ0JBQVMsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDMUIsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLDRCQUFxQixDQUFDLEtBQUssRUFBRTtnQkFDaEQsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQXFCLENBQUM7Z0JBQ3hDLE1BQU0sT0FBTyxH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LFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMxQixNQUFNLEVBQUUsZUFBZSxDQUFDLE1BQU0sSUFBSSxJQUFJLGNBQU8sQ0FBQyxVQUFVLEVBQUU7WUFDMUQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsRUFBRTtZQUNsRCxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRTtTQUM3QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsY0FBYyxDQUNaLE1BQWMsRUFDZCxZQUE2QixFQUFFLEVBQy9CLGtCQUFtQyxFQUFFO1FBRXJDLE9BQU8sSUFBQSxtQ0FBZ0IsRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFFO1lBQ3pDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMxQixNQUFNLEVBQUUsZUFBZSxDQUFDLE1BQU0sSUFBSSxJQUFJLGNBQU8sQ0FBQyxVQUFVLEVBQUU7WUFDMUQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsRUFBRTtZQUNsRCxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRTtTQUM3QyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUE1REQsOEJBNERDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IGpzb24sIGxvZ2dpbmcgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvY29yZSc7XG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxuICBjb25jYXRNYXAsXG4gIGZpcnN0LFxuICBmcm9tLFxuICBpZ25vcmVFbGVtZW50cyxcbiAgbGFzdCxcbiAgbWFwLFxuICBtZXJnZSxcbiAgb2YsXG4gIG9uRXJyb3JSZXN1bWVOZXh0LFxuICBzaGFyZVJlcGxheSxcbiAgdGFrZVVudGlsLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEJ1aWxkZXJJbmZvLFxuICBCdWlsZGVySW5wdXQsXG4gIEJ1aWxkZXJPdXRwdXQsXG4gIEJ1aWxkZXJSZWdpc3RyeSxcbiAgQnVpbGRlclJ1bixcbiAgVGFyZ2V0LFxuICB0YXJnZXRTdHJpbmdGcm9tVGFyZ2V0LFxufSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBBcmNoaXRlY3RIb3N0LCBCdWlsZGVyRGVzY3JpcHRpb24sIEJ1aWxkZXJKb2JIYW5kbGVyIH0gZnJvbSAnLi9pbnRlcm5hbCc7XG5pbXBvcnQge1xuICBGYWxsYmFja1JlZ2lzdHJ5LFxuICBKb2JIYW5kbGVyLFxuICBKb2JIYW5kbGVyQ29udGV4dCxcbiAgSm9iSW5ib3VuZE1lc3NhZ2UsXG4gIEpvYkluYm91bmRNZXNzYWdlS2luZCxcbiAgSm9iTmFtZSxcbiAgSm9iT3V0Ym91bmRNZXNzYWdlS2luZCxcbiAgUmVnaXN0cnksXG4gIFNjaGVkdWxlcixcbiAgU2ltcGxlSm9iUmVnaXN0cnksXG4gIFNpbXBsZVNjaGVkdWxlcixcbiAgY3JlYXRlSm9iSGFuZGxlcixcbn0gZnJvbSAnLi9qb2JzJztcbmltcG9ydCB7IHNjaGVkdWxlQnlOYW1lLCBzY2hlZHVsZUJ5VGFyZ2V0IH0gZnJvbSAnLi9zY2hlZHVsZS1ieS1uYW1lJztcblxuY29uc3QgaW5wdXRTY2hlbWEgPSByZXF1aXJlKCcuL2lucHV0LXNjaGVtYS5qc29uJyk7XG5jb25zdCBvdXRwdXRTY2hlbWEgPSByZXF1aXJlKCcuL291dHB1dC1zY2hlbWEuanNvbicpO1xuXG5mdW5jdGlvbiBfY3JlYXRlSm9iSGFuZGxlckZyb21CdWlsZGVySW5mbyhcbiAgaW5mbzogQnVpbGRlckluZm8sXG4gIHRhcmdldDogVGFyZ2V0IHwgdW5kZWZpbmVkLFxuICBob3N0OiBBcmNoaXRlY3RIb3N0LFxuICByZWdpc3RyeToganNvbi5zY2hlbWEuU2NoZW1hUmVnaXN0cnksXG4gIGJhc2VPcHRpb25zOiBqc29uLkpzb25PYmplY3QsXG4pOiBPYnNlcnZhYmxlPEJ1aWxkZXJKb2JIYW5kbGVyPiB7XG4gIGNvbnN0IGpvYkRlc2NyaXB0aW9uOiBCdWlsZGVyRGVzY3JpcHRpb24gPSB7XG4gICAgbmFtZTogdGFyZ2V0ID8gYHske3RhcmdldFN0cmluZ0Zyb21UYXJnZXQodGFyZ2V0KX19YCA6IGluZm8uYnVpbGRlck5hbWUsXG4gICAgYXJndW1lbnQ6IHsgdHlwZTogJ29iamVjdCcgfSxcbiAgICBpbnB1dDogaW5wdXRTY2hlbWEsXG4gICAgb3V0cHV0OiBvdXRwdXRTY2hlbWEsXG4gICAgaW5mbyxcbiAgfTtcblxuICBmdW5jdGlvbiBoYW5kbGVyKGFyZ3VtZW50OiBqc29uLkpzb25PYmplY3QsIGNvbnRleHQ6IEpvYkhhbmRsZXJDb250ZXh0KSB7XG4gICAgLy8gQWRkIGlucHV0IHZhbGlkYXRpb24gdG8gdGhlIGluYm91bmQgYnVzLlxuICAgIGNvbnN0IGluYm91bmRCdXNXaXRoSW5wdXRWYWxpZGF0aW9uID0gY29udGV4dC5pbmJvdW5kQnVzLnBpcGUoXG4gICAgICBjb25jYXRNYXAoYXN5bmMgKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2Uua2luZCA9PT0gSm9iSW5ib3VuZE1lc3NhZ2VLaW5kLklucHV0KSB7XG4gICAgICAgICAgY29uc3QgdiA9IG1lc3NhZ2UudmFsdWUgYXMgQnVpbGRlcklucHV0O1xuICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAuLi5iYXNlT3B0aW9ucyxcbiAgICAgICAgICAgIC4uLnYub3B0aW9ucyxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgLy8gVmFsaWRhdGUgdiBhZ2FpbnN0IHRoZSBvcHRpb25zIHNjaGVtYS5cbiAgICAgICAgICBjb25zdCB2YWxpZGF0aW9uID0gYXdhaXQgcmVnaXN0cnkuY29tcGlsZShpbmZvLm9wdGlvblNjaGVtYSk7XG4gICAgICAgICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IGF3YWl0IHZhbGlkYXRpb24ob3B0aW9ucyk7XG4gICAgICAgICAgY29uc3QgeyBkYXRhLCBzdWNjZXNzLCBlcnJvcnMgfSA9IHZhbGlkYXRpb25SZXN1bHQ7XG5cbiAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBqc29uLnNjaGVtYS5TY2hlbWFWYWxpZGF0aW9uRXhjZXB0aW9uKGVycm9ycyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHsgLi4ubWVzc2FnZSwgdmFsdWU6IHsgLi4udiwgb3B0aW9uczogZGF0YSB9IH0gYXMgSm9iSW5ib3VuZE1lc3NhZ2U8QnVpbGRlcklucHV0PjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbWVzc2FnZSBhcyBKb2JJbmJvdW5kTWVzc2FnZTxCdWlsZGVySW5wdXQ+O1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIC8vIFVzaW5nIGEgc2hhcmUgcmVwbGF5IGJlY2F1c2UgdGhlIGpvYiBtaWdodCBiZSBzeW5jaHJvbm91c2x5IHNlbmRpbmcgaW5wdXQsIGJ1dFxuICAgICAgLy8gYXN5bmNocm9ub3VzbHkgbGlzdGVuaW5nIHRvIGl0LlxuICAgICAgc2hhcmVSZXBsYXkoMSksXG4gICAgKTtcblxuICAgIC8vIE1ha2UgYW4gaW5ib3VuZEJ1cyB0aGF0IGNvbXBsZXRlcyBpbnN0ZWFkIG9mIGVycm9yaW5nIG91dC5cbiAgICAvLyBXZSdsbCBtZXJnZSB0aGUgZXJyb3JzIGludG8gdGhlIG91dHB1dCBpbnN0ZWFkLlxuICAgIGNvbnN0IGluYm91bmRCdXMgPSBvbkVycm9yUmVzdW1lTmV4dChpbmJvdW5kQnVzV2l0aElucHV0VmFsaWRhdGlvbik7XG5cbiAgICBjb25zdCBvdXRwdXQgPSBmcm9tKGhvc3QubG9hZEJ1aWxkZXIoaW5mbykpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKGJ1aWxkZXIpID0+IHtcbiAgICAgICAgaWYgKGJ1aWxkZXIgPT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBsb2FkIGJ1aWxkZXIgZm9yIGJ1aWxkZXJJbmZvICR7SlNPTi5zdHJpbmdpZnkoaW5mbywgbnVsbCwgMil9YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYnVpbGRlci5oYW5kbGVyKGFyZ3VtZW50LCB7IC4uLmNvbnRleHQsIGluYm91bmRCdXMgfSkucGlwZShcbiAgICAgICAgICBtYXAoKG91dHB1dCkgPT4ge1xuICAgICAgICAgICAgaWYgKG91dHB1dC5raW5kID09PSBKb2JPdXRib3VuZE1lc3NhZ2VLaW5kLk91dHB1dCkge1xuICAgICAgICAgICAgICAvLyBBZGQgdGFyZ2V0IHRvIGl0LlxuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgLi4ub3V0cHV0LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgLi4uKHRhcmdldCA/IHsgdGFyZ2V0IH0gOiAwKSxcbiAgICAgICAgICAgICAgICB9IGFzIHVua25vd24gYXMganNvbi5Kc29uT2JqZWN0LFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgLy8gU2hhcmUgc3Vic2NyaXB0aW9ucyB0byB0aGUgb3V0cHV0LCBvdGhlcndpc2UgdGhlIGhhbmRsZXIgd2lsbCBiZSByZS1ydW4uXG4gICAgICBzaGFyZVJlcGxheSgpLFxuICAgICk7XG5cbiAgICAvLyBTZXBhcmF0ZSB0aGUgZXJyb3JzIGZyb20gdGhlIGluYm91bmQgYnVzIGludG8gdGhlaXIgb3duIG9ic2VydmFibGUgdGhhdCBjb21wbGV0ZXMgd2hlbiB0aGVcbiAgICAvLyBidWlsZGVyIG91dHB1dCBkb2VzLlxuICAgIGNvbnN0IGluYm91bmRCdXNFcnJvcnMgPSBpbmJvdW5kQnVzV2l0aElucHV0VmFsaWRhdGlvbi5waXBlKFxuICAgICAgaWdub3JlRWxlbWVudHMoKSxcbiAgICAgIHRha2VVbnRpbChvbkVycm9yUmVzdW1lTmV4dChvdXRwdXQucGlwZShsYXN0KCkpKSksXG4gICAgKTtcblxuICAgIC8vIFJldHVybiB0aGUgYnVpbGRlciBvdXRwdXQgcGx1cyBhbnkgaW5wdXQgZXJyb3JzLlxuICAgIHJldHVybiBtZXJnZShpbmJvdW5kQnVzRXJyb3JzLCBvdXRwdXQpO1xuICB9XG5cbiAgcmV0dXJuIG9mKE9iamVjdC5hc3NpZ24oaGFuZGxlciwgeyBqb2JEZXNjcmlwdGlvbiB9KSBhcyBCdWlsZGVySm9iSGFuZGxlcik7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZWR1bGVPcHRpb25zIHtcbiAgbG9nZ2VyPzogbG9nZ2luZy5Mb2dnZXI7XG59XG5cbi8qKlxuICogQSBKb2JSZWdpc3RyeSB0aGF0IHJlc29sdmVzIGJ1aWxkZXIgdGFyZ2V0cyBmcm9tIHRoZSBob3N0LlxuICovXG5jbGFzcyBBcmNoaXRlY3RCdWlsZGVySm9iUmVnaXN0cnkgaW1wbGVtZW50cyBCdWlsZGVyUmVnaXN0cnkge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgX2hvc3Q6IEFyY2hpdGVjdEhvc3QsXG4gICAgcHJvdGVjdGVkIF9yZWdpc3RyeToganNvbi5zY2hlbWEuU2NoZW1hUmVnaXN0cnksXG4gICAgcHJvdGVjdGVkIF9qb2JDYWNoZT86IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8QnVpbGRlckpvYkhhbmRsZXIgfCBudWxsPj4sXG4gICAgcHJvdGVjdGVkIF9pbmZvQ2FjaGU/OiBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPEJ1aWxkZXJJbmZvIHwgbnVsbD4+LFxuICApIHt9XG5cbiAgcHJvdGVjdGVkIF9yZXNvbHZlQnVpbGRlcihuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEJ1aWxkZXJJbmZvIHwgbnVsbD4ge1xuICAgIGNvbnN0IGNhY2hlID0gdGhpcy5faW5mb0NhY2hlO1xuICAgIGlmIChjYWNoZSkge1xuICAgICAgY29uc3QgbWF5YmVDYWNoZSA9IGNhY2hlLmdldChuYW1lKTtcbiAgICAgIGlmIChtYXliZUNhY2hlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIG1heWJlQ2FjaGU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGluZm8gPSBmcm9tKHRoaXMuX2hvc3QucmVzb2x2ZUJ1aWxkZXIobmFtZSkpLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuICAgICAgY2FjaGUuc2V0KG5hbWUsIGluZm8pO1xuXG4gICAgICByZXR1cm4gaW5mbztcbiAgICB9XG5cbiAgICByZXR1cm4gZnJvbSh0aGlzLl9ob3N0LnJlc29sdmVCdWlsZGVyKG5hbWUpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfY3JlYXRlQnVpbGRlcihcbiAgICBpbmZvOiBCdWlsZGVySW5mbyxcbiAgICB0YXJnZXQ/OiBUYXJnZXQsXG4gICAgb3B0aW9ucz86IGpzb24uSnNvbk9iamVjdCxcbiAgKTogT2JzZXJ2YWJsZTxCdWlsZGVySm9iSGFuZGxlciB8IG51bGw+IHtcbiAgICBjb25zdCBjYWNoZSA9IHRoaXMuX2pvYkNhY2hlO1xuICAgIGlmICh0YXJnZXQpIHtcbiAgICAgIGNvbnN0IG1heWJlSGl0ID0gY2FjaGUgJiYgY2FjaGUuZ2V0KHRhcmdldFN0cmluZ0Zyb21UYXJnZXQodGFyZ2V0KSk7XG4gICAgICBpZiAobWF5YmVIaXQpIHtcbiAgICAgICAgcmV0dXJuIG1heWJlSGl0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtYXliZUhpdCA9IGNhY2hlICYmIGNhY2hlLmdldChpbmZvLmJ1aWxkZXJOYW1lKTtcbiAgICAgIGlmIChtYXliZUhpdCkge1xuICAgICAgICByZXR1cm4gbWF5YmVIaXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gX2NyZWF0ZUpvYkhhbmRsZXJGcm9tQnVpbGRlckluZm8oXG4gICAgICBpbmZvLFxuICAgICAgdGFyZ2V0LFxuICAgICAgdGhpcy5faG9zdCxcbiAgICAgIHRoaXMuX3JlZ2lzdHJ5LFxuICAgICAgb3B0aW9ucyB8fCB7fSxcbiAgICApO1xuXG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgIGNhY2hlLnNldCh0YXJnZXRTdHJpbmdGcm9tVGFyZ2V0KHRhcmdldCksIHJlc3VsdC5waXBlKHNoYXJlUmVwbGF5KDEpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYWNoZS5zZXQoaW5mby5idWlsZGVyTmFtZSwgcmVzdWx0LnBpcGUoc2hhcmVSZXBsYXkoMSkpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZ2V0PEEgZXh0ZW5kcyBqc29uLkpzb25PYmplY3QsIEkgZXh0ZW5kcyBCdWlsZGVySW5wdXQsIE8gZXh0ZW5kcyBCdWlsZGVyT3V0cHV0PihcbiAgICBuYW1lOiBzdHJpbmcsXG4gICk6IE9ic2VydmFibGU8Sm9iSGFuZGxlcjxBLCBJLCBPPiB8IG51bGw+IHtcbiAgICBjb25zdCBtID0gbmFtZS5tYXRjaCgvXihbXjpdKyk6KFteOl0rKSQvaSk7XG4gICAgaWYgKCFtKSB7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyb20odGhpcy5fcmVzb2x2ZUJ1aWxkZXIobmFtZSkpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKGJ1aWxkZXJJbmZvKSA9PiAoYnVpbGRlckluZm8gPyB0aGlzLl9jcmVhdGVCdWlsZGVyKGJ1aWxkZXJJbmZvKSA6IG9mKG51bGwpKSksXG4gICAgICBmaXJzdChudWxsLCBudWxsKSxcbiAgICApIGFzIE9ic2VydmFibGU8Sm9iSGFuZGxlcjxBLCBJLCBPPiB8IG51bGw+O1xuICB9XG59XG5cbi8qKlxuICogQSBKb2JSZWdpc3RyeSB0aGF0IHJlc29sdmVzIHRhcmdldHMgZnJvbSB0aGUgaG9zdC5cbiAqL1xuY2xhc3MgQXJjaGl0ZWN0VGFyZ2V0Sm9iUmVnaXN0cnkgZXh0ZW5kcyBBcmNoaXRlY3RCdWlsZGVySm9iUmVnaXN0cnkge1xuICBvdmVycmlkZSBnZXQ8QSBleHRlbmRzIGpzb24uSnNvbk9iamVjdCwgSSBleHRlbmRzIEJ1aWxkZXJJbnB1dCwgTyBleHRlbmRzIEJ1aWxkZXJPdXRwdXQ+KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgKTogT2JzZXJ2YWJsZTxKb2JIYW5kbGVyPEEsIEksIE8+IHwgbnVsbD4ge1xuICAgIGNvbnN0IG0gPSBuYW1lLm1hdGNoKC9eeyhbXjpdKyk6KFteOl0rKSg/OjooW146XSopKT99JC9pKTtcbiAgICBpZiAoIW0pIHtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXQgPSB7XG4gICAgICBwcm9qZWN0OiBtWzFdLFxuICAgICAgdGFyZ2V0OiBtWzJdLFxuICAgICAgY29uZmlndXJhdGlvbjogbVszXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGZyb20oXG4gICAgICBQcm9taXNlLmFsbChbXG4gICAgICAgIHRoaXMuX2hvc3QuZ2V0QnVpbGRlck5hbWVGb3JUYXJnZXQodGFyZ2V0KSxcbiAgICAgICAgdGhpcy5faG9zdC5nZXRPcHRpb25zRm9yVGFyZ2V0KHRhcmdldCksXG4gICAgICBdKSxcbiAgICApLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKFtidWlsZGVyU3RyLCBvcHRpb25zXSkgPT4ge1xuICAgICAgICBpZiAoYnVpbGRlclN0ciA9PT0gbnVsbCB8fCBvcHRpb25zID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVCdWlsZGVyKGJ1aWxkZXJTdHIpLnBpcGUoXG4gICAgICAgICAgY29uY2F0TWFwKChidWlsZGVySW5mbykgPT4ge1xuICAgICAgICAgICAgaWYgKGJ1aWxkZXJJbmZvID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUJ1aWxkZXIoYnVpbGRlckluZm8sIHRhcmdldCwgb3B0aW9ucyk7XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAgIGZpcnN0KG51bGwsIG51bGwpLFxuICAgICkgYXMgT2JzZXJ2YWJsZTxKb2JIYW5kbGVyPEEsIEksIE8+IHwgbnVsbD47XG4gIH1cbn1cblxuZnVuY3Rpb24gX2dldFRhcmdldE9wdGlvbnNGYWN0b3J5KGhvc3Q6IEFyY2hpdGVjdEhvc3QpIHtcbiAgcmV0dXJuIGNyZWF0ZUpvYkhhbmRsZXI8VGFyZ2V0LCBqc29uLkpzb25WYWx1ZSwganNvbi5Kc29uT2JqZWN0PihcbiAgICAodGFyZ2V0KSA9PiB7XG4gICAgICByZXR1cm4gaG9zdC5nZXRPcHRpb25zRm9yVGFyZ2V0KHRhcmdldCkudGhlbigob3B0aW9ucykgPT4ge1xuICAgICAgICBpZiAob3B0aW9ucyA9PT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0YXJnZXQ6ICR7SlNPTi5zdHJpbmdpZnkodGFyZ2V0KX0uYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICAgIH0pO1xuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJy4uZ2V0VGFyZ2V0T3B0aW9ucycsXG4gICAgICBvdXRwdXQ6IHsgdHlwZTogJ29iamVjdCcgfSxcbiAgICAgIGFyZ3VtZW50OiBpbnB1dFNjaGVtYS5wcm9wZXJ0aWVzLnRhcmdldCxcbiAgICB9LFxuICApO1xufVxuXG5mdW5jdGlvbiBfZ2V0UHJvamVjdE1ldGFkYXRhRmFjdG9yeShob3N0OiBBcmNoaXRlY3RIb3N0KSB7XG4gIHJldHVybiBjcmVhdGVKb2JIYW5kbGVyPFRhcmdldCwganNvbi5Kc29uVmFsdWUsIGpzb24uSnNvbk9iamVjdD4oXG4gICAgKHRhcmdldCkgPT4ge1xuICAgICAgcmV0dXJuIGhvc3QuZ2V0UHJvamVjdE1ldGFkYXRhKHRhcmdldCkudGhlbigob3B0aW9ucykgPT4ge1xuICAgICAgICBpZiAob3B0aW9ucyA9PT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0YXJnZXQ6ICR7SlNPTi5zdHJpbmdpZnkodGFyZ2V0KX0uYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICAgIH0pO1xuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJy4uZ2V0UHJvamVjdE1ldGFkYXRhJyxcbiAgICAgIG91dHB1dDogeyB0eXBlOiAnb2JqZWN0JyB9LFxuICAgICAgYXJndW1lbnQ6IHtcbiAgICAgICAgb25lT2Y6IFt7IHR5cGU6ICdzdHJpbmcnIH0sIGlucHV0U2NoZW1hLnByb3BlcnRpZXMudGFyZ2V0XSxcbiAgICAgIH0sXG4gICAgfSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gX2dldEJ1aWxkZXJOYW1lRm9yVGFyZ2V0RmFjdG9yeShob3N0OiBBcmNoaXRlY3RIb3N0KSB7XG4gIHJldHVybiBjcmVhdGVKb2JIYW5kbGVyPFRhcmdldCwgbmV2ZXIsIHN0cmluZz4oXG4gICAgYXN5bmMgKHRhcmdldCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlck5hbWUgPSBhd2FpdCBob3N0LmdldEJ1aWxkZXJOYW1lRm9yVGFyZ2V0KHRhcmdldCk7XG4gICAgICBpZiAoIWJ1aWxkZXJOYW1lKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gYnVpbGRlciB3ZXJlIGZvdW5kIGZvciB0YXJnZXQgJHt0YXJnZXRTdHJpbmdGcm9tVGFyZ2V0KHRhcmdldCl9LmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYnVpbGRlck5hbWU7XG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnLi5nZXRCdWlsZGVyTmFtZUZvclRhcmdldCcsXG4gICAgICBvdXRwdXQ6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgIGFyZ3VtZW50OiBpbnB1dFNjaGVtYS5wcm9wZXJ0aWVzLnRhcmdldCxcbiAgICB9LFxuICApO1xufVxuXG5mdW5jdGlvbiBfdmFsaWRhdGVPcHRpb25zRmFjdG9yeShob3N0OiBBcmNoaXRlY3RIb3N0LCByZWdpc3RyeToganNvbi5zY2hlbWEuU2NoZW1hUmVnaXN0cnkpIHtcbiAgcmV0dXJuIGNyZWF0ZUpvYkhhbmRsZXI8W3N0cmluZywganNvbi5Kc29uT2JqZWN0XSwgbmV2ZXIsIGpzb24uSnNvbk9iamVjdD4oXG4gICAgYXN5bmMgKFtidWlsZGVyTmFtZSwgb3B0aW9uc10pID0+IHtcbiAgICAgIC8vIEdldCBvcHRpb24gc2NoZW1hIGZyb20gdGhlIGhvc3QuXG4gICAgICBjb25zdCBidWlsZGVySW5mbyA9IGF3YWl0IGhvc3QucmVzb2x2ZUJ1aWxkZXIoYnVpbGRlck5hbWUpO1xuICAgICAgaWYgKCFidWlsZGVySW5mbykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGJ1aWxkZXIgaW5mbyB3ZXJlIGZvdW5kIGZvciBidWlsZGVyICR7SlNPTi5zdHJpbmdpZnkoYnVpbGRlck5hbWUpfS5gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFsaWRhdGlvbiA9IGF3YWl0IHJlZ2lzdHJ5LmNvbXBpbGUoYnVpbGRlckluZm8ub3B0aW9uU2NoZW1hKTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgc3VjY2VzcywgZXJyb3JzIH0gPSBhd2FpdCB2YWxpZGF0aW9uKG9wdGlvbnMpO1xuXG4gICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgdGhyb3cgbmV3IGpzb24uc2NoZW1hLlNjaGVtYVZhbGlkYXRpb25FeGNlcHRpb24oZXJyb3JzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRhdGEgYXMganNvbi5Kc29uT2JqZWN0O1xuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJy4udmFsaWRhdGVPcHRpb25zJyxcbiAgICAgIG91dHB1dDogeyB0eXBlOiAnb2JqZWN0JyB9LFxuICAgICAgYXJndW1lbnQ6IHtcbiAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgaXRlbXM6IFt7IHR5cGU6ICdzdHJpbmcnIH0sIHsgdHlwZTogJ29iamVjdCcgfV0sXG4gICAgICB9LFxuICAgIH0sXG4gICk7XG59XG5cbmV4cG9ydCBjbGFzcyBBcmNoaXRlY3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zY2hlZHVsZXI6IFNjaGVkdWxlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfam9iQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxCdWlsZGVySm9iSGFuZGxlcj4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2luZm9DYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPEJ1aWxkZXJJbmZvPj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9ob3N0OiBBcmNoaXRlY3RIb3N0LFxuICAgIHJlZ2lzdHJ5OiBqc29uLnNjaGVtYS5TY2hlbWFSZWdpc3RyeSA9IG5ldyBqc29uLnNjaGVtYS5Db3JlU2NoZW1hUmVnaXN0cnkoKSxcbiAgICBhZGRpdGlvbmFsSm9iUmVnaXN0cnk/OiBSZWdpc3RyeSxcbiAgKSB7XG4gICAgY29uc3QgcHJpdmF0ZUFyY2hpdGVjdEpvYlJlZ2lzdHJ5ID0gbmV3IFNpbXBsZUpvYlJlZ2lzdHJ5KCk7XG4gICAgLy8gQ3JlYXRlIHByaXZhdGUgam9icy5cbiAgICBwcml2YXRlQXJjaGl0ZWN0Sm9iUmVnaXN0cnkucmVnaXN0ZXIoX2dldFRhcmdldE9wdGlvbnNGYWN0b3J5KF9ob3N0KSk7XG4gICAgcHJpdmF0ZUFyY2hpdGVjdEpvYlJlZ2lzdHJ5LnJlZ2lzdGVyKF9nZXRCdWlsZGVyTmFtZUZvclRhcmdldEZhY3RvcnkoX2hvc3QpKTtcbiAgICBwcml2YXRlQXJjaGl0ZWN0Sm9iUmVnaXN0cnkucmVnaXN0ZXIoX3ZhbGlkYXRlT3B0aW9uc0ZhY3RvcnkoX2hvc3QsIHJlZ2lzdHJ5KSk7XG4gICAgcHJpdmF0ZUFyY2hpdGVjdEpvYlJlZ2lzdHJ5LnJlZ2lzdGVyKF9nZXRQcm9qZWN0TWV0YWRhdGFGYWN0b3J5KF9ob3N0KSk7XG5cbiAgICBjb25zdCBqb2JSZWdpc3RyeSA9IG5ldyBGYWxsYmFja1JlZ2lzdHJ5KFtcbiAgICAgIG5ldyBBcmNoaXRlY3RUYXJnZXRKb2JSZWdpc3RyeShfaG9zdCwgcmVnaXN0cnksIHRoaXMuX2pvYkNhY2hlLCB0aGlzLl9pbmZvQ2FjaGUpLFxuICAgICAgbmV3IEFyY2hpdGVjdEJ1aWxkZXJKb2JSZWdpc3RyeShfaG9zdCwgcmVnaXN0cnksIHRoaXMuX2pvYkNhY2hlLCB0aGlzLl9pbmZvQ2FjaGUpLFxuICAgICAgcHJpdmF0ZUFyY2hpdGVjdEpvYlJlZ2lzdHJ5LFxuICAgICAgLi4uKGFkZGl0aW9uYWxKb2JSZWdpc3RyeSA/IFthZGRpdGlvbmFsSm9iUmVnaXN0cnldIDogW10pLFxuICAgIF0gYXMgUmVnaXN0cnlbXSk7XG5cbiAgICB0aGlzLl9zY2hlZHVsZXIgPSBuZXcgU2ltcGxlU2NoZWR1bGVyKGpvYlJlZ2lzdHJ5LCByZWdpc3RyeSk7XG4gIH1cblxuICBoYXMobmFtZTogSm9iTmFtZSkge1xuICAgIHJldHVybiB0aGlzLl9zY2hlZHVsZXIuaGFzKG5hbWUpO1xuICB9XG5cbiAgc2NoZWR1bGVCdWlsZGVyKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zOiBqc29uLkpzb25PYmplY3QsXG4gICAgc2NoZWR1bGVPcHRpb25zOiBTY2hlZHVsZU9wdGlvbnMgPSB7fSxcbiAgKTogUHJvbWlzZTxCdWlsZGVyUnVuPiB7XG4gICAgLy8gVGhlIGJlbG93IHdpbGwgbWF0Y2ggJ3Byb2plY3Q6dGFyZ2V0OmNvbmZpZ3VyYXRpb24nXG4gICAgaWYgKCEvXlteOl0rOlteOl0rKDpbXjpdKyk/JC8udGVzdChuYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGJ1aWxkZXIgbmFtZTogJyArIEpTT04uc3RyaW5naWZ5KG5hbWUpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2NoZWR1bGVCeU5hbWUobmFtZSwgb3B0aW9ucywge1xuICAgICAgc2NoZWR1bGVyOiB0aGlzLl9zY2hlZHVsZXIsXG4gICAgICBsb2dnZXI6IHNjaGVkdWxlT3B0aW9ucy5sb2dnZXIgfHwgbmV3IGxvZ2dpbmcuTnVsbExvZ2dlcigpLFxuICAgICAgY3VycmVudERpcmVjdG9yeTogdGhpcy5faG9zdC5nZXRDdXJyZW50RGlyZWN0b3J5KCksXG4gICAgICB3b3Jrc3BhY2VSb290OiB0aGlzLl9ob3N0LmdldFdvcmtzcGFjZVJvb3QoKSxcbiAgICB9KTtcbiAgfVxuICBzY2hlZHVsZVRhcmdldChcbiAgICB0YXJnZXQ6IFRhcmdldCxcbiAgICBvdmVycmlkZXM6IGpzb24uSnNvbk9iamVjdCA9IHt9LFxuICAgIHNjaGVkdWxlT3B0aW9uczogU2NoZWR1bGVPcHRpb25zID0ge30sXG4gICk6IFByb21pc2U8QnVpbGRlclJ1bj4ge1xuICAgIHJldHVybiBzY2hlZHVsZUJ5VGFyZ2V0KHRhcmdldCwgb3ZlcnJpZGVzLCB7XG4gICAgICBzY2hlZHVsZXI6IHRoaXMuX3NjaGVkdWxlcixcbiAgICAgIGxvZ2dlcjogc2NoZWR1bGVPcHRpb25zLmxvZ2dlciB8fCBuZXcgbG9nZ2luZy5OdWxsTG9nZ2VyKCksXG4gICAgICBjdXJyZW50RGlyZWN0b3J5OiB0aGlzLl9ob3N0LmdldEN1cnJlbnREaXJlY3RvcnkoKSxcbiAgICAgIHdvcmtzcGFjZVJvb3Q6IHRoaXMuX2hvc3QuZ2V0V29ya3NwYWNlUm9vdCgpLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -41,7 +41,7 @@ class TestProjectHost extends node_1.NodeJsSyncHost {
|
|
|
41
41
|
(0, rxjs_1.map)((fragment) => (0, core_1.join)(path, fragment)),
|
|
42
42
|
// Emit directory content paths instead of the directory path.
|
|
43
43
|
(0, rxjs_1.mergeMap)((path) => this.isDirectory(path).pipe((0, rxjs_1.concatMap)((isDir) => (isDir ? recursiveList(path) : (0, rxjs_1.of)(path))))));
|
|
44
|
-
// Find a unique folder that we can write to
|
|
44
|
+
// Find a unique folder that we can write to use as current root.
|
|
45
45
|
return this.findUniqueFolderPath().pipe(
|
|
46
46
|
// Save the path and create a scoped host for it.
|
|
47
47
|
(0, rxjs_1.tap)((newFolderPath) => {
|
|
@@ -106,4 +106,4 @@ class TestProjectHost extends node_1.NodeJsSyncHost {
|
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
exports.TestProjectHost = TestProjectHost;
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1wcm9qZWN0LWhvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9hcmNoaXRlY3QvdGVzdGluZy90ZXN0LXByb2plY3QtaG9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCwrQ0FTOEI7QUFDOUIsb0RBQTJEO0FBRTNELCtCQVljO0FBRWQ7O0dBRUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEscUJBQWM7SUFJakQsWUFBc0IsYUFBbUI7UUFDdkMsS0FBSyxFQUFFLENBQUM7UUFEWSxrQkFBYSxHQUFiLGFBQWEsQ0FBTTtRQUhqQyxpQkFBWSxHQUFnQixJQUFJLENBQUM7UUFDakMsb0JBQWUsR0FBNkMsSUFBSSxDQUFDO0lBSXpFLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRTtZQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7U0FDM0U7UUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxFQUFFO1lBQy9ELE1BQU0sSUFBSSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztTQUMzRTtRQUVELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsVUFBVTtRQUNSLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBVSxFQUFvQixFQUFFLENBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSTtRQUNsQixtQ0FBbUM7UUFDbkMsSUFBQSxnQkFBUyxFQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFBLFdBQUksRUFBQyxTQUFTLENBQUMsQ0FB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QyxJQUFBLGdCQUFTLEVBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBQSxTQUFFLEVBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUNsRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBL0hELDBDQStIQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1xuICBQYXRoLFxuICBQYXRoRnJhZ21lbnQsXG4gIGJhc2VuYW1lLFxuICBkaXJuYW1lLFxuICBqb2luLFxuICBub3JtYWxpemUsXG4gIHJlbGF0aXZlLFxuICB2aXJ0dWFsRnMsXG59IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCB7IE5vZGVKc1N5bmNIb3N0IH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUvbm9kZSc7XG5pbXBvcnQgeyBTdGF0cyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7XG4gIEVNUFRZLFxuICBPYnNlcnZhYmxlLFxuICBjb25jYXRNYXAsXG4gIGRlbGF5LFxuICBmaW5hbGl6ZSxcbiAgZnJvbSxcbiAgbWFwLFxuICBtZXJnZU1hcCxcbiAgb2YsXG4gIHJldHJ5LFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjbGFzcyBUZXN0UHJvamVjdEhvc3QgZXh0ZW5kcyBOb2RlSnNTeW5jSG9zdCB7XG4gIHByaXZhdGUgX2N1cnJlbnRSb290OiBQYXRoIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3Njb3BlZFN5bmNIb3N0OiB2aXJ0dWFsRnMuU3luY0RlbGVnYXRlSG9zdDxTdGF0cz4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX3RlbXBsYXRlUm9vdDogUGF0aCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICByb290KCk6IFBhdGgge1xuICAgIGlmICh0aGlzLl9jdXJyZW50Um9vdCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUZXN0UHJvamVjdEhvc3QgbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgdXNlZC4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFJvb3Q7XG4gIH1cblxuICBzY29wZWRTeW5jKCk6IHZpcnR1YWxGcy5TeW5jRGVsZWdhdGVIb3N0PFN0YXRzPiB7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnRSb290ID09PSBudWxsIHx8IHRoaXMuX3Njb3BlZFN5bmNIb3N0ID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Rlc3RQcm9qZWN0SG9zdCBtdXN0IGJlIGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyB1c2VkLicpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zY29wZWRTeW5jSG9zdDtcbiAgfVxuXG4gIGluaXRpYWxpemUoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgcmVjdXJzaXZlTGlzdCA9IChwYXRoOiBQYXRoKTogT2JzZXJ2YWJsZTxQYXRoPiA9PlxuICAgICAgdGhpcy5saXN0KHBhdGgpLnBpcGUoXG4gICAgICAgIC8vIEVtaXQgZWFjaCBmcmFnbWVudCBpbmRpdmlkdWFsbHkuXG4gICAgICAgIGNvbmNhdE1hcCgoZnJhZ21lbnRzKSA9PiBmcm9tKGZyYWdtZW50cykpLFxuICAgICAgICAvLyBKb2luIHRoZSBwYXRoIHdpdGggZnJhZ21lbnQuXG4gICAgICAgIG1hcCgoZnJhZ21lbnQpID0+IGpvaW4ocGF0aCwgZnJhZ21lbnQpKSxcbiAgICAgICAgLy8gRW1pdCBkaXJlY3RvcnkgY29udGVudCBwYXRocyBpbnN0ZWFkIG9mIHRoZSBkaXJlY3RvcnkgcGF0aC5cbiAgICAgICAgbWVyZ2VNYXAoKHBhdGgpID0+XG4gICAgICAgICAgdGhpcy5pc0RpcmVjdG9yeShwYXRoKS5waXBlKFxuICAgICAgICAgICAgY29uY2F0TWFwKChpc0RpcikgPT4gKGlzRGlyID8gcmVjdXJzaXZlTGlzdChwYXRoKSA6IG9mKHBhdGgpKSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG5cbiAgICAvLyBGaW5kIGEgdW5pcXVlIGZvbGRlciB0aGF0IHdlIGNhbiB3cml0ZSB0byB0byB1c2UgYXMgY3VycmVudCByb290LlxuICAgIHJldHVybiB0aGlzLmZpbmRVbmlxdWVGb2xkZXJQYXRoKCkucGlwZShcbiAgICAgIC8vIFNhdmUgdGhlIHBhdGggYW5kIGNyZWF0ZSBhIHNjb3BlZCBob3N0IGZvciBpdC5cbiAgICAgIHRhcCgobmV3Rm9sZGVyUGF0aCkgPT4ge1xuICAgICAgICB0aGlzLl9jdXJyZW50Um9vdCA9IG5ld0ZvbGRlclBhdGg7XG4gICAgICAgIHRoaXMuX3Njb3BlZFN5bmNIb3N0ID0gbmV3IHZpcnR1YWxGcy5TeW5jRGVsZWdhdGVIb3N0KFxuICAgICAgICAgIG5ldyB2aXJ0dWFsRnMuU2NvcGVkSG9zdCh0aGlzLCB0aGlzLnJvb3QoKSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAgIC8vIExpc3QgYWxsIGZpbGVzIGluIHJvb3QuXG4gICAgICBjb25jYXRNYXAoKCkgPT4gcmVjdXJzaXZlTGlzdCh0aGlzLl90ZW1wbGF0ZVJvb3QpKSxcbiAgICAgIC8vIENvcHkgdGhlbSBvdmVyIHRvIHRoZSBjdXJyZW50IHJvb3QuXG4gICAgICBjb25jYXRNYXAoKGZyb20pID0+IHtcbiAgICAgICAgY29uc3QgdG8gPSBqb2luKHRoaXMucm9vdCgpLCByZWxhdGl2ZSh0aGlzLl90ZW1wbGF0ZVJvb3QsIGZyb20pKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5yZWFkKGZyb20pLnBpcGUoY29uY2F0TWFwKChidWZmZXIpID0+IHRoaXMud3JpdGUodG8sIGJ1ZmZlcikpKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKCgpID0+IHt9KSxcbiAgICApO1xuICB9XG5cbiAgcmVzdG9yZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fY3VycmVudFJvb3QgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBFTVBUWTtcbiAgICB9XG5cbiAgICAvLyBEZWxldGUgdGhlIGN1cnJlbnQgcm9vdCBhbmQgY2xlYXIgdGhlIHZhcmlhYmxlcy5cbiAgICAvLyBXYWl0IDUwbXMgYW5kIHJldHJ5IHVwIHRvIDEwIHRpbWVzLCB0byBnaXZlIHRpbWUgZm9yIGZpbGUgbG9ja3MgdG8gY2xlYXIuXG4gICAgcmV0dXJuIHRoaXMuZXhpc3RzKHRoaXMucm9vdCgpKS5waXBlKFxuICAgICAgZGVsYXkoNTApLFxuICAgICAgY29uY2F0TWFwKChleGlzdHMpID0+IChleGlzdHMgPyB0aGlzLmRlbGV0ZSh0aGlzLnJvb3QoKSkgOiBFTVBUWSkpLFxuICAgICAgcmV0cnkoMTApLFxuICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9jdXJyZW50Um9vdCA9IG51bGw7XG4gICAgICAgIHRoaXMuX3Njb3BlZFN5bmNIb3N0ID0gbnVsbDtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICB3cml0ZU11bHRpcGxlRmlsZXMoZmlsZXM6IHsgW3BhdGg6IHN0cmluZ106IHN0cmluZyB8IEFycmF5QnVmZmVyTGlrZSB8IEJ1ZmZlciB9KTogdm9pZCB7XG4gICAgT2JqZWN0LmtleXMoZmlsZXMpLmZvckVhY2goKGZpbGVOYW1lKSA9PiB7XG4gICAgICBsZXQgY29udGVudCA9IGZpbGVzW2ZpbGVOYW1lXTtcbiAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PSAnc3RyaW5nJykge1xuICAgICAgICBjb250ZW50ID0gdmlydHVhbEZzLnN0cmluZ1RvRmlsZUJ1ZmZlcihjb250ZW50KTtcbiAgICAgIH0gZWxzZSBpZiAoY29udGVudCBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgICBjb250ZW50ID0gY29udGVudC5idWZmZXIuc2xpY2UoY29udGVudC5ieXRlT2Zmc2V0LCBjb250ZW50LmJ5dGVPZmZzZXQgKyBjb250ZW50LmJ5dGVMZW5ndGgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNjb3BlZFN5bmMoKS53cml0ZShub3JtYWxpemUoZmlsZU5hbWUpLCBjb250ZW50KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlcGxhY2VJbkZpbGUocGF0aDogc3RyaW5nLCBtYXRjaDogUmVnRXhwIHwgc3RyaW5nLCByZXBsYWNlbWVudDogc3RyaW5nKSB7XG4gICAgY29uc3QgY29udGVudCA9IHZpcnR1YWxGcy5maWxlQnVmZmVyVG9TdHJpbmcodGhpcy5zY29wZWRTeW5jKCkucmVhZChub3JtYWxpemUocGF0aCkpKTtcbiAgICB0aGlzLnNjb3BlZFN5bmMoKS53cml0ZShcbiAgICAgIG5vcm1hbGl6ZShwYXRoKSxcbiAgICAgIHZpcnR1YWxGcy5zdHJpbmdUb0ZpbGVCdWZmZXIoY29udGVudC5yZXBsYWNlKG1hdGNoLCByZXBsYWNlbWVudCkpLFxuICAgICk7XG4gIH1cblxuICBhcHBlbmRUb0ZpbGUocGF0aDogc3RyaW5nLCBzdHI6IHN0cmluZykge1xuICAgIGNvbnN0IGNvbnRlbnQgPSB2aXJ0dWFsRnMuZmlsZUJ1ZmZlclRvU3RyaW5nKHRoaXMuc2NvcGVkU3luYygpLnJlYWQobm9ybWFsaXplKHBhdGgpKSk7XG4gICAgdGhpcy5zY29wZWRTeW5jKCkud3JpdGUobm9ybWFsaXplKHBhdGgpLCB2aXJ0dWFsRnMuc3RyaW5nVG9GaWxlQnVmZmVyKGNvbnRlbnQuY29uY2F0KHN0cikpKTtcbiAgfVxuXG4gIGZpbGVNYXRjaEV4aXN0cyhkaXI6IHN0cmluZywgcmVnZXg6IFJlZ0V4cCk6IFBhdGhGcmFnbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgW2ZpbGVOYW1lXSA9IHRoaXMuc2NvcGVkU3luYygpXG4gICAgICAubGlzdChub3JtYWxpemUoZGlyKSlcbiAgICAgIC5maWx0ZXIoKG5hbWUpID0+IG5hbWUubWF0Y2gocmVnZXgpKTtcblxuICAgIHJldHVybiBmaWxlTmFtZSB8fCB1bmRlZmluZWQ7XG4gIH1cblxuICBjb3B5RmlsZShmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5zY29wZWRTeW5jKCkucmVhZChub3JtYWxpemUoZnJvbSkpO1xuICAgIHRoaXMuc2NvcGVkU3luYygpLndyaXRlKG5vcm1hbGl6ZSh0byksIGNvbnRlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kVW5pcXVlRm9sZGVyUGF0aCgpOiBPYnNlcnZhYmxlPFBhdGg+IHtcbiAgICAvLyAxMSBjaGFyYWN0ZXIgYWxwaGFudW1lcmljIHN0cmluZy5cbiAgICBjb25zdCByYW5kb21TdHJpbmcgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTtcbiAgICBjb25zdCBuZXdGb2xkZXJOYW1lID0gYHRlc3QtcHJvamVjdC1ob3N0LSR7YmFzZW5hbWUodGhpcy5fdGVtcGxhdGVSb290KX0tJHtyYW5kb21TdHJpbmd9YDtcbiAgICBjb25zdCBuZXdGb2xkZXJQYXRoID0gam9pbihkaXJuYW1lKHRoaXMuX3RlbXBsYXRlUm9vdCksIG5ld0ZvbGRlck5hbWUpO1xuXG4gICAgcmV0dXJuIHRoaXMuZXhpc3RzKG5ld0ZvbGRlclBhdGgpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKGV4aXN0cykgPT4gKGV4aXN0cyA/IHRoaXMuZmluZFVuaXF1ZUZvbGRlclBhdGgoKSA6IG9mKG5ld0ZvbGRlclBhdGgpKSksXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1wcm9qZWN0LWhvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9hcmNoaXRlY3QvdGVzdGluZy90ZXN0LXByb2plY3QtaG9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCwrQ0FTOEI7QUFDOUIsb0RBQTJEO0FBRTNELCtCQVljO0FBRWQ7O0dBRUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEscUJBQWM7SUFJakQsWUFBc0IsYUFBbUI7UUFDdkMsS0FBSyxFQUFFLENBQUM7UUFEWSxrQkFBYSxHQUFiLGFBQWEsQ0FBTTtRQUhqQyxpQkFBWSxHQUFnQixJQUFJLENBQUM7UUFDakMsb0JBQWUsR0FBNkMsSUFBSSxDQUFDO0lBSXpFLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRTtZQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7U0FDM0U7UUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxFQUFFO1lBQy9ELE1BQU0sSUFBSSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztTQUMzRTtRQUVELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsVUFBVTtRQUNSLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBVSxFQUFvQixFQUFFLENBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSTtRQUNsQixtQ0FBbUM7UUFDbkMsSUFBQSxnQkFBUyxFQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFBLFdBQUksRUFBQyxTQUFTLENBQUMsQ0FBQztRQUN6QywrQkFBK0I7UUFDL0IsSUFBQSxVQUFHLEVBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUEsV0FBSSxFQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2Qyw4REFBOEQ7UUFDOUQsSUFBQSxlQUFRLEVBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDekIsSUFBQSxnQkFBUyxFQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLFNBQUUsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQy9ELENBQ0YsQ0FDRixDQUFDO1FBRUosaUVBQWlFO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsSUFBSTtRQUNyQyxpREFBaUQ7UUFDakQsSUFBQSxVQUFHLEVBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLGFBQWEsQ0FBQztZQUNsQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksZ0JBQVMsQ0FBQyxnQkFBZ0IsQ0FDbkQsSUFBSSxnQkFBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQzVDLENBQUM7UUFDSixDQUFDLENBQUM7UUFDRiwwQkFBMEI7UUFDMUIsSUFBQSxnQkFBUyxFQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEQsc0NBQXNDO1FBQ3RDLElBQUEsZ0JBQVMsRUFBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2pCLE1BQU0sRUFBRSxHQUFHLElBQUEsV0FBSSxFQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFBLGVBQVEsRUFBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFFakUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFBLGdCQUFTLEVBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RSxDQUFDLENBQUMsRUFDRixJQUFBLFVBQUcsRUFBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxFQUFFO1lBQzlCLE9BQU8sWUFBSyxDQUFDO1NBQ2Q7UUFFRCxtREFBbUQ7UUFDbkQsNEVBQTRFO1FBQzVFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ2xDLElBQUEsWUFBSyxFQUFDLEVBQUUsQ0FBQyxFQUNULElBQUEsZ0JBQVMsRUFBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQUssQ0FBQyxDQUFDLEVBQ2xFLElBQUEsWUFBSyxFQUFDLEVBQUUsQ0FBQyxFQUNULElBQUEsZUFBUSxFQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBNEQ7UUFDN0UsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN0QyxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUIsSUFBSSxPQUFPLE9BQU8sSUFBSSxRQUFRLEVBQUU7Z0JBQzlCLE9BQU8sR0FBRyxnQkFBUyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ2pEO2lCQUFNLElBQUksT0FBTyxZQUFZLE1BQU0sRUFBRTtnQkFDcEMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDN0Y7WUFFRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUEsZ0JBQVMsRUFBQyxRQUFRLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBWSxFQUFFLEtBQXNCLEVBQUUsV0FBbUI7UUFDckUsTUFBTSxPQUFPLEdBQUcsZ0JBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUEsZ0JBQVMsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEYsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FDckIsSUFBQSxnQkFBUyxFQUFDLElBQUksQ0FBQyxFQUNmLGdCQUFTLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FDbEUsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBWSxFQUFFLEdBQVc7UUFDcEMsTUFBTSxPQUFPLEdBQUcsZ0JBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUEsZ0JBQVMsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEYsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFBLGdCQUFTLEVBQUMsSUFBSSxDQUFDLEVBQUUsZ0JBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQ3hDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFO2FBQ2pDLElBQUksQ0FBQyxJQUFBLGdCQUFTLEVBQUMsR0FBRyxDQUFDLENBQUM7YUFDcEIsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFdkMsT0FBTyxRQUFRLElBQUksU0FBUyxDQUFDO0lBQy9CLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBWSxFQUFFLEVBQVU7UUFDL0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFBLGdCQUFTLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUEsZ0JBQVMsRUFBQyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLG9DQUFvQztRQUNwQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RCxNQUFNLGFBQWEsR0FBRyxxQkFBcUIsSUFBQSxlQUFRLEVBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzFGLE1BQU0sYUFBYSxHQUFHLElBQUEsV0FBSSxFQUFDLElBQUEsY0FBTyxFQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUV2RSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUNwQyxJQUFBLGdCQUFTLEVBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBQSxTQUFFLEVBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUNsRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBL0hELDBDQStIQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1xuICBQYXRoLFxuICBQYXRoRnJhZ21lbnQsXG4gIGJhc2VuYW1lLFxuICBkaXJuYW1lLFxuICBqb2luLFxuICBub3JtYWxpemUsXG4gIHJlbGF0aXZlLFxuICB2aXJ0dWFsRnMsXG59IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCB7IE5vZGVKc1N5bmNIb3N0IH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUvbm9kZSc7XG5pbXBvcnQgeyBTdGF0cyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7XG4gIEVNUFRZLFxuICBPYnNlcnZhYmxlLFxuICBjb25jYXRNYXAsXG4gIGRlbGF5LFxuICBmaW5hbGl6ZSxcbiAgZnJvbSxcbiAgbWFwLFxuICBtZXJnZU1hcCxcbiAgb2YsXG4gIHJldHJ5LFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjbGFzcyBUZXN0UHJvamVjdEhvc3QgZXh0ZW5kcyBOb2RlSnNTeW5jSG9zdCB7XG4gIHByaXZhdGUgX2N1cnJlbnRSb290OiBQYXRoIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3Njb3BlZFN5bmNIb3N0OiB2aXJ0dWFsRnMuU3luY0RlbGVnYXRlSG9zdDxTdGF0cz4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX3RlbXBsYXRlUm9vdDogUGF0aCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICByb290KCk6IFBhdGgge1xuICAgIGlmICh0aGlzLl9jdXJyZW50Um9vdCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUZXN0UHJvamVjdEhvc3QgbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgdXNlZC4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFJvb3Q7XG4gIH1cblxuICBzY29wZWRTeW5jKCk6IHZpcnR1YWxGcy5TeW5jRGVsZWdhdGVIb3N0PFN0YXRzPiB7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnRSb290ID09PSBudWxsIHx8IHRoaXMuX3Njb3BlZFN5bmNIb3N0ID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Rlc3RQcm9qZWN0SG9zdCBtdXN0IGJlIGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyB1c2VkLicpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zY29wZWRTeW5jSG9zdDtcbiAgfVxuXG4gIGluaXRpYWxpemUoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgcmVjdXJzaXZlTGlzdCA9IChwYXRoOiBQYXRoKTogT2JzZXJ2YWJsZTxQYXRoPiA9PlxuICAgICAgdGhpcy5saXN0KHBhdGgpLnBpcGUoXG4gICAgICAgIC8vIEVtaXQgZWFjaCBmcmFnbWVudCBpbmRpdmlkdWFsbHkuXG4gICAgICAgIGNvbmNhdE1hcCgoZnJhZ21lbnRzKSA9PiBmcm9tKGZyYWdtZW50cykpLFxuICAgICAgICAvLyBKb2luIHRoZSBwYXRoIHdpdGggZnJhZ21lbnQuXG4gICAgICAgIG1hcCgoZnJhZ21lbnQpID0+IGpvaW4ocGF0aCwgZnJhZ21lbnQpKSxcbiAgICAgICAgLy8gRW1pdCBkaXJlY3RvcnkgY29udGVudCBwYXRocyBpbnN0ZWFkIG9mIHRoZSBkaXJlY3RvcnkgcGF0aC5cbiAgICAgICAgbWVyZ2VNYXAoKHBhdGgpID0+XG4gICAgICAgICAgdGhpcy5pc0RpcmVjdG9yeShwYXRoKS5waXBlKFxuICAgICAgICAgICAgY29uY2F0TWFwKChpc0RpcikgPT4gKGlzRGlyID8gcmVjdXJzaXZlTGlzdChwYXRoKSA6IG9mKHBhdGgpKSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG5cbiAgICAvLyBGaW5kIGEgdW5pcXVlIGZvbGRlciB0aGF0IHdlIGNhbiB3cml0ZSB0byB1c2UgYXMgY3VycmVudCByb290LlxuICAgIHJldHVybiB0aGlzLmZpbmRVbmlxdWVGb2xkZXJQYXRoKCkucGlwZShcbiAgICAgIC8vIFNhdmUgdGhlIHBhdGggYW5kIGNyZWF0ZSBhIHNjb3BlZCBob3N0IGZvciBpdC5cbiAgICAgIHRhcCgobmV3Rm9sZGVyUGF0aCkgPT4ge1xuICAgICAgICB0aGlzLl9jdXJyZW50Um9vdCA9IG5ld0ZvbGRlclBhdGg7XG4gICAgICAgIHRoaXMuX3Njb3BlZFN5bmNIb3N0ID0gbmV3IHZpcnR1YWxGcy5TeW5jRGVsZWdhdGVIb3N0KFxuICAgICAgICAgIG5ldyB2aXJ0dWFsRnMuU2NvcGVkSG9zdCh0aGlzLCB0aGlzLnJvb3QoKSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAgIC8vIExpc3QgYWxsIGZpbGVzIGluIHJvb3QuXG4gICAgICBjb25jYXRNYXAoKCkgPT4gcmVjdXJzaXZlTGlzdCh0aGlzLl90ZW1wbGF0ZVJvb3QpKSxcbiAgICAgIC8vIENvcHkgdGhlbSBvdmVyIHRvIHRoZSBjdXJyZW50IHJvb3QuXG4gICAgICBjb25jYXRNYXAoKGZyb20pID0+IHtcbiAgICAgICAgY29uc3QgdG8gPSBqb2luKHRoaXMucm9vdCgpLCByZWxhdGl2ZSh0aGlzLl90ZW1wbGF0ZVJvb3QsIGZyb20pKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5yZWFkKGZyb20pLnBpcGUoY29uY2F0TWFwKChidWZmZXIpID0+IHRoaXMud3JpdGUodG8sIGJ1ZmZlcikpKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKCgpID0+IHt9KSxcbiAgICApO1xuICB9XG5cbiAgcmVzdG9yZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fY3VycmVudFJvb3QgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBFTVBUWTtcbiAgICB9XG5cbiAgICAvLyBEZWxldGUgdGhlIGN1cnJlbnQgcm9vdCBhbmQgY2xlYXIgdGhlIHZhcmlhYmxlcy5cbiAgICAvLyBXYWl0IDUwbXMgYW5kIHJldHJ5IHVwIHRvIDEwIHRpbWVzLCB0byBnaXZlIHRpbWUgZm9yIGZpbGUgbG9ja3MgdG8gY2xlYXIuXG4gICAgcmV0dXJuIHRoaXMuZXhpc3RzKHRoaXMucm9vdCgpKS5waXBlKFxuICAgICAgZGVsYXkoNTApLFxuICAgICAgY29uY2F0TWFwKChleGlzdHMpID0+IChleGlzdHMgPyB0aGlzLmRlbGV0ZSh0aGlzLnJvb3QoKSkgOiBFTVBUWSkpLFxuICAgICAgcmV0cnkoMTApLFxuICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9jdXJyZW50Um9vdCA9IG51bGw7XG4gICAgICAgIHRoaXMuX3Njb3BlZFN5bmNIb3N0ID0gbnVsbDtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICB3cml0ZU11bHRpcGxlRmlsZXMoZmlsZXM6IHsgW3BhdGg6IHN0cmluZ106IHN0cmluZyB8IEFycmF5QnVmZmVyTGlrZSB8IEJ1ZmZlciB9KTogdm9pZCB7XG4gICAgT2JqZWN0LmtleXMoZmlsZXMpLmZvckVhY2goKGZpbGVOYW1lKSA9PiB7XG4gICAgICBsZXQgY29udGVudCA9IGZpbGVzW2ZpbGVOYW1lXTtcbiAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PSAnc3RyaW5nJykge1xuICAgICAgICBjb250ZW50ID0gdmlydHVhbEZzLnN0cmluZ1RvRmlsZUJ1ZmZlcihjb250ZW50KTtcbiAgICAgIH0gZWxzZSBpZiAoY29udGVudCBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgICBjb250ZW50ID0gY29udGVudC5idWZmZXIuc2xpY2UoY29udGVudC5ieXRlT2Zmc2V0LCBjb250ZW50LmJ5dGVPZmZzZXQgKyBjb250ZW50LmJ5dGVMZW5ndGgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNjb3BlZFN5bmMoKS53cml0ZShub3JtYWxpemUoZmlsZU5hbWUpLCBjb250ZW50KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlcGxhY2VJbkZpbGUocGF0aDogc3RyaW5nLCBtYXRjaDogUmVnRXhwIHwgc3RyaW5nLCByZXBsYWNlbWVudDogc3RyaW5nKSB7XG4gICAgY29uc3QgY29udGVudCA9IHZpcnR1YWxGcy5maWxlQnVmZmVyVG9TdHJpbmcodGhpcy5zY29wZWRTeW5jKCkucmVhZChub3JtYWxpemUocGF0aCkpKTtcbiAgICB0aGlzLnNjb3BlZFN5bmMoKS53cml0ZShcbiAgICAgIG5vcm1hbGl6ZShwYXRoKSxcbiAgICAgIHZpcnR1YWxGcy5zdHJpbmdUb0ZpbGVCdWZmZXIoY29udGVudC5yZXBsYWNlKG1hdGNoLCByZXBsYWNlbWVudCkpLFxuICAgICk7XG4gIH1cblxuICBhcHBlbmRUb0ZpbGUocGF0aDogc3RyaW5nLCBzdHI6IHN0cmluZykge1xuICAgIGNvbnN0IGNvbnRlbnQgPSB2aXJ0dWFsRnMuZmlsZUJ1ZmZlclRvU3RyaW5nKHRoaXMuc2NvcGVkU3luYygpLnJlYWQobm9ybWFsaXplKHBhdGgpKSk7XG4gICAgdGhpcy5zY29wZWRTeW5jKCkud3JpdGUobm9ybWFsaXplKHBhdGgpLCB2aXJ0dWFsRnMuc3RyaW5nVG9GaWxlQnVmZmVyKGNvbnRlbnQuY29uY2F0KHN0cikpKTtcbiAgfVxuXG4gIGZpbGVNYXRjaEV4aXN0cyhkaXI6IHN0cmluZywgcmVnZXg6IFJlZ0V4cCk6IFBhdGhGcmFnbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgW2ZpbGVOYW1lXSA9IHRoaXMuc2NvcGVkU3luYygpXG4gICAgICAubGlzdChub3JtYWxpemUoZGlyKSlcbiAgICAgIC5maWx0ZXIoKG5hbWUpID0+IG5hbWUubWF0Y2gocmVnZXgpKTtcblxuICAgIHJldHVybiBmaWxlTmFtZSB8fCB1bmRlZmluZWQ7XG4gIH1cblxuICBjb3B5RmlsZShmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5zY29wZWRTeW5jKCkucmVhZChub3JtYWxpemUoZnJvbSkpO1xuICAgIHRoaXMuc2NvcGVkU3luYygpLndyaXRlKG5vcm1hbGl6ZSh0byksIGNvbnRlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kVW5pcXVlRm9sZGVyUGF0aCgpOiBPYnNlcnZhYmxlPFBhdGg+IHtcbiAgICAvLyAxMSBjaGFyYWN0ZXIgYWxwaGFudW1lcmljIHN0cmluZy5cbiAgICBjb25zdCByYW5kb21TdHJpbmcgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTtcbiAgICBjb25zdCBuZXdGb2xkZXJOYW1lID0gYHRlc3QtcHJvamVjdC1ob3N0LSR7YmFzZW5hbWUodGhpcy5fdGVtcGxhdGVSb290KX0tJHtyYW5kb21TdHJpbmd9YDtcbiAgICBjb25zdCBuZXdGb2xkZXJQYXRoID0gam9pbihkaXJuYW1lKHRoaXMuX3RlbXBsYXRlUm9vdCksIG5ld0ZvbGRlck5hbWUpO1xuXG4gICAgcmV0dXJuIHRoaXMuZXhpc3RzKG5ld0ZvbGRlclBhdGgpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKGV4aXN0cykgPT4gKGV4aXN0cyA/IHRoaXMuZmluZFVuaXF1ZUZvbGRlclBhdGgoKSA6IG9mKG5ld0ZvbGRlclBhdGgpKSksXG4gICAgKTtcbiAgfVxufVxuIl19
|