@pipeline-builder/pipeline-manager 3.4.187 → 3.4.189
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/dist/agent/targets.d.ts.map +1 -1
- package/dist/agent/targets.js +3 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +6 -1
- package/dist/commands/audit-stacks.d.ts.map +1 -1
- package/dist/commands/audit-stacks.js +6 -2
- package/dist/commands/audit-tokens.d.ts.map +1 -1
- package/dist/commands/audit-tokens.js +6 -3
- package/dist/commands/bootstrap.d.ts.map +1 -1
- package/dist/commands/bootstrap.js +4 -3
- package/dist/commands/create-pipeline.d.ts.map +1 -1
- package/dist/commands/create-pipeline.js +79 -18
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +16 -110
- package/dist/commands/redrive-events.d.ts.map +1 -1
- package/dist/commands/redrive-events.js +3 -2
- package/dist/commands/setup-events.d.ts.map +1 -1
- package/dist/commands/setup-events.js +3 -2
- package/dist/config/cli.constants.d.ts +15 -1
- package/dist/config/cli.constants.d.ts.map +1 -1
- package/dist/config/cli.constants.js +24 -1
- package/dist/types/config.d.ts +11 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +1 -1
- package/dist/utils/deploy-runner.d.ts +38 -0
- package/dist/utils/deploy-runner.d.ts.map +1 -0
- package/dist/utils/deploy-runner.js +112 -0
- package/dist/utils/error-handler.d.ts.map +1 -1
- package/dist/utils/error-handler.js +61 -6
- package/dist/utils/list-command-utils.d.ts.map +1 -1
- package/dist/utils/list-command-utils.js +5 -3
- package/dist/utils/registry.d.ts.map +1 -1
- package/dist/utils/registry.js +5 -6
- package/package.json +4 -4
|
@@ -51,8 +51,11 @@ export function auditTokens(program) {
|
|
|
51
51
|
// never report "all clear" from an incomplete scan (mirrors audit-stacks).
|
|
52
52
|
printWarning('Secret listing was TRUNCATED (paging cap hit) — results may be INCOMPLETE and an expiring token could be missed. Narrow by --prefix/--region.');
|
|
53
53
|
}
|
|
54
|
-
//
|
|
55
|
-
|
|
54
|
+
// Audit both the full-privilege platform token (`<prefix>/<orgId>/platform`)
|
|
55
|
+
// AND the scoped event-ingestion token (`.../reporting-ingest`, minted by
|
|
56
|
+
// `store-token --scope reporting:ingest`) — both expire and both are
|
|
57
|
+
// auto-renewed, so a stalled renewal on either must surface here.
|
|
58
|
+
const platformSecrets = secrets.filter((s) => s.name.endsWith('/platform') || s.name.endsWith('/reporting-ingest'));
|
|
56
59
|
const entries = [];
|
|
57
60
|
const now = Date.now();
|
|
58
61
|
const warnCutoff = now + warnDays * 24 * 60 * 60 * 1000;
|
|
@@ -147,4 +150,4 @@ export function auditTokens(program) {
|
|
|
147
150
|
}
|
|
148
151
|
});
|
|
149
152
|
}
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtdG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2F1ZGl0LXRva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBVTNHOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsT0FBZ0I7SUFDMUMsaUJBQWlCLENBQ2YsZ0JBQWdCLENBQUMsT0FBTztTQUNyQixPQUFPLENBQUMsUUFBUSxDQUFDO1NBQ2pCLFdBQVcsQ0FBQyxvRkFBb0YsQ0FBQyxDQUFDLENBQ3RHO1NBQ0UsTUFBTSxDQUFDLG9CQUFvQixFQUFFLCtDQUErQyxFQUFFLEdBQUcsQ0FBQztTQUNsRixNQUFNLENBQUMsbUJBQW1CLEVBQUUscUNBQXFDLEVBQUUsR0FBRyxhQUFhLENBQUMsbUJBQW1CLEdBQUcsQ0FBQztTQUMzRyxNQUFNLENBQUMsUUFBUSxFQUFFLHdCQUF3QixFQUFF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LEtBQUssRUFBRSxXQUFXLENBQUMsV0FBVyxFQUFFO2dCQUMxQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUs7Z0JBQzNCLElBQUksRUFBRSxLQUFLO2dCQUNYLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFO2FBQ2xELENBQUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtY29yZSc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGRlY29kZVRva2VuUGF5bG9hZCB9IGZyb20gJy4uL3V0aWxzL2F1dGgtZ3VhcmQuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZUF3c1JlZ2lvbiB9IGZyb20gJy4uL3V0aWxzL2F3cy1lbnYuanMnO1xuaW1wb3J0IHsgZ2V0U2VjcmV0VmFsdWUsIGxpc3RTZWNyZXRzIH0gZnJvbSAnLi4vdXRpbHMvYXdzLXNlY3JldHMuanMnO1xuaW1wb3J0IHsgcHJpbnRDb21tYW5kSGVhZGVyLCB3aXRoUHJvZmlsZU9wdGlvbiwgd2l0aFJlZ2lvbk9wdGlvbiB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuXG5pbnRlcmZhY2UgVG9rZW5BdWRpdEVudHJ5IHtcbiAgc2VjcmV0TmFtZTogc3RyaW5nO1xuICBhcm46IHN0cmluZztcbiAgZXhwaXJlc0F0OiBEYXRlO1xuICBkYXlzVW50aWxFeHBpcnk6IG51bWJlcjtcbiAgc3RhdHVzOiAnZXhwaXJlZCcgfCAnZXhwaXJpbmctc29vbicgfCAnb2snO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYGF1ZGl0LXRva2Vuc2AgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBTY2FucyBBV1MgU2VjcmV0cyBNYW5hZ2VyIGZvciBzdG9yZWQgcGxhdGZvcm0gSldUcyAobWF0Y2hpbmcgdGhlXG4gKiBgcGlwZWxpbmUtYnVpbGRlci88b3JnSWQ+L3BsYXRmb3JtYCBuYW1pbmcgY29udmVudGlvbiB1c2VkIGJ5IGBzdG9yZS10b2tlbmApXG4gKiBhbmQgcmVwb3J0cyB3aGljaCBzZWNyZXRzIGFyZSBleHBpcmVkIG9yIGNsb3NlIHRvIGV4cGlyaW5nLlxuICpcbiAqIERlc2lnbmVkIGZvciBjcm9uIHVzZTpcbiAqICAgLSBFeGl0cyAwIHdoZW4gbm90aGluZyBpcyBhdC1yaXNrLlxuICogICAtIEV4aXRzIDEgd2hlbiBhdCBsZWFzdCBvbmUgc2VjcmV0IGlzIGV4cGlyZWQgb3IgZXhwaXJlcyB3aXRoaW4gYC0td2Fybi1kYXlzYC5cbiAqICAgLSBFeGl0cyAyIG9uIEFXUyBlcnJvcnMgLyBzY2FuIGZhaWx1cmVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBiYXNoXG4gKiBwaXBlbGluZS1tYW5hZ2VyIGF1ZGl0IHRva2VucyAtLXJlZ2lvbiB1cy1lYXN0LTEgLS13YXJuLWRheXMgN1xuICogcGlwZWxpbmUtbWFuYWdlciBhdWRpdCB0b2tlbnMgLS1yZWdpb24gdXMtZWFzdC0xIC0tanNvblxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdWRpdFRva2Vucyhwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHdpdGhQcm9maWxlT3B0aW9uKFxuICAgIHdpdGhSZWdpb25PcHRpb24ocHJvZ3JhbVxuICAgICAgLmNvbW1hbmQoJ3Rva2VucycpXG4gICAgICAuZGVzY3JpcHRpb24oJ1NjYW4gc3RvcmVkIHBsYXRmb3JtIHRva2VucyBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyIGFuZCByZXBvcnQgdXBjb21pbmcgZXhwaXJhdGlvbnMnKSksXG4gIClcbiAgICAub3B0aW9uKCctLXdhcm4tZGF5cyA8ZGF5cz4nLCAnRmxhZyB0b2tlbnMgZXhwaXJpbmcgd2l0aGluIE4gZGF5cyBhcyBhdC1yaXNrJywgJzcnKVxuICAgIC5vcHRpb24oJy0tcHJlZml4IDxwcmVmaXg+JywgJ1NlY3JldHMgTWFuYWdlciBuYW1lIHByZWZpeCB0byBzY2FuJywgYCR7Q29yZUNvbnN0YW50cy5TRUNSRVRTX1BBVEhfUFJFRklYfS9gKVxuICAgIC5vcHRpb24oJy0tanNvbicsICdPdXRwdXQgcmVzdWx0cyBhcyBKU09OJywgZmFsc2UpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgZXhlY3V0aW9uSWQgPSBwcmludENvbW1hbmRIZWFkZXIoJ0F1ZGl0IFRva2VucycsIHVuZGVmaW5lZCwgeyBxdWlldDogb3B0aW9ucy5qc29uIH0pO1xuICAgICAgY29uc3QgcmVnaW9uID0gcmVzb2x2ZUF3c1JlZ2lvbihvcHRpb25zLnJlZ2lvbik7XG4gICAgICBjb25zdCB3YXJuRGF5cyA9IHBhcnNlSW50KG9wdGlvbnMud2FybkRheXMsIDEwKTtcbiAgICAgIGlmICghTnVtYmVyLmlzRmluaXRlKHdhcm5EYXlzKSB8fCB3YXJuRGF5cyA8IDApIHtcbiAgICAgICAgcHJpbnRFcnJvcignSW52YWxpZCAtLXdhcm4tZGF5cyB2YWx1ZScsIHsgcHJvdmlkZWQ6IG9wdGlvbnMud2FybkRheXMgfSk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gUHJvZ3Jlc3MgZ29lcyB0byBzdGRvdXQsIHNvIHN1cHByZXNzIGl0IGluIC0tanNvbiBtb2RlIHRvIGtlZXAgdGhlIEpTT04gcGF5bG9hZCBjbGVhbiBmb3IgcGlwaW5nLlxuICAgICAgICBpZiAoIW9wdGlvbnMuanNvbikgcHJpbnRJbmZvKCdMaXN0aW5nIHNlY3JldHMnLCB7IHJlZ2lvbiwgcHJlZml4OiBvcHRpb25zLnByZWZpeCB9KTtcbiAgICAgICAgY29uc3QgeyBzZWNyZXRzLCB0cnVuY2F0ZWQgfSA9IGF3YWl0IGxpc3RTZWNyZXRzKG9wdGlvbnMucHJlZml4LCB7IHJlZ2lvbiwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuICAgICAgICBpZiAodHJ1bmNhdGVkKSB7XG4gICAgICAgICAgLy8gQSB0cnVuY2F0ZWQgc3dlZXAgbWVhbnMgYW4gZXhwaXJpbmcgdG9rZW4gcGFzdCB0aGUgY2FwIGNvdWxkIGJlIG1pc3NlZCDigJRcbiAgICAgICAgICAvLyBuZXZlciByZXBvcnQgXCJhbGwgY2xlYXJcIiBmcm9tIGFuIGluY29tcGxldGUgc2NhbiAobWlycm9ycyBhdWRpdC1zdGFja3MpLlxuICAgICAgICAgIHByaW50V2FybmluZygnU2VjcmV0IGxpc3Rpbmcgd2FzIFRSVU5DQVRFRCAocGFnaW5nIGNhcCBoaXQpIOKAlCByZXN1bHRzIG1heSBiZSBJTkNPTVBMRVRFIGFuZCBhbiBleHBpcmluZyB0b2tlbiBjb3VsZCBiZSBtaXNzZWQuIE5hcnJvdyBieSAtLXByZWZpeC8tLXJlZ2lvbi4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpbHRlciB0byBvbmVzIGZvbGxvd2luZyB0aGUgYDxwcmVmaXg+LzxvcmdJZD4vcGxhdGZvcm1gIHBhdHRlcm4uXG4gICAgICAgIGNvbnN0IHBsYXRmb3JtU2VjcmV0cyA9IHNlY3JldHMuZmlsdGVyKChzKSA9PiBzLm5hbWUuZW5kc1dpdGgoJy9wbGF0Zm9ybScpKTtcblxuICAgICAgICBjb25zdCBlbnRyaWVzOiBUb2tlbkF1ZGl0RW50cnlbXSA9IFtdO1xuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCB3YXJuQ3V0b2ZmID0gbm93ICsgd2FybkRheXMgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG4gICAgICAgIGZvciAoY29uc3QgcyBvZiBwbGF0Zm9ybVNlY3JldHMpIHtcbiAgICAgICAgICBsZXQgcmF3OiBzdHJpbmc7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJhdyA9IGF3YWl0IGdldFNlY3JldFZhbHVlKHMubmFtZSwgeyByZWdpb24sIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSB9KTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHByaW50V2FybmluZyhgQ291bGQgbm90IHJlYWQgJHtzLm5hbWV9OiAke2VyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKX1gKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCBwYXJzZWQ6IHsgcGFzc3dvcmQ/OiBzdHJpbmc7IGV4cGlyZXNBdD86IHN0cmluZyB9O1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBwYXJzZWQgPSBKU09OLnBhcnNlKHJhdyk7XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICBwcmludFdhcm5pbmcoYFNlY3JldCAke3MubmFtZX0gaXMgbm90IHZhbGlkIEpTT04sIHNraXBwaW5nYCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBQcmVmZXIgdGhlIGV4cGxpY2l0IGV4cGlyZXNBdCBmaWVsZCB3cml0dGVuIGJ5IHN0b3JlLXRva2VuOyBmYWxsIGJhY2tcbiAgICAgICAgICAvLyB0byBkZWNvZGluZyB0aGUgSldUJ3MgZXhwIGNsYWltIGlmIHRoZSBmaWVsZCBpcyBtaXNzaW5nLlxuICAgICAgICAgIGxldCBleHBpcmVzQXQ6IERhdGUgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHBhcnNlZC5leHBpcmVzQXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShwYXJzZWQuZXhwaXJlc0F0KTtcbiAgICAgICAgICAgIGlmICghTnVtYmVyLmlzTmFOKGQuZ2V0VGltZSgpKSkgZXhwaXJlc0F0ID0gZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gYHN0b3JlLXRva2VuYCB3cml0ZXMgdGhlIEpXVCB0byB0aGUgY2Fub25pY2FsIGBwYXNzd29yZGAgZmllbGQuXG4gICAgICAgICAgaWYgKCFleHBpcmVzQXQgJiYgcGFyc2VkLnBhc3N3b3JkKSB7XG4gICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gZGVjb2RlVG9rZW5QYXlsb2FkKHBhcnNlZC5wYXNzd29yZCk7XG4gICAgICAgICAgICBpZiAocGF5bG9hZD8uZXhwICYmIHR5cGVvZiBwYXlsb2FkLmV4cCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgZXhwaXJlc0F0ID0gbmV3IERhdGUocGF5bG9hZC5leHAgKiAxMDAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFleHBpcmVzQXQpIHtcbiAgICAgICAgICAgIHByaW50V2FybmluZyhgU2VjcmV0ICR7cy5uYW1lfSBoYXMgbm8gZXhwaXJ5IGluZm9ybWF0aW9uLCBza2lwcGluZ2ApO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZGF5c1VudGlsRXhwaXJ5ID0gTWF0aC5mbG9vcigoZXhwaXJlc0F0LmdldFRpbWUoKSAtIG5vdykgLyAoMjQgKiA2MCAqIDYwICogMTAwMCkpO1xuICAgICAgICAgIGNvbnN0IHN0YXR1czogVG9rZW5BdWRpdEVudHJ5WydzdGF0dXMnXSA9XG4gICAgICAgICAgICBleHBpcmVzQXQuZ2V0VGltZSgpIDwgbm93ID8gJ2V4cGlyZWQnXG4gICAgICAgICAgICAgIDogZXhwaXJlc0F0LmdldFRpbWUoKSA8IHdhcm5DdXRvZmYgPyAnZXhwaXJpbmctc29vbidcbiAgICAgICAgICAgICAgICA6ICdvayc7XG4gICAgICAgICAgZW50cmllcy5wdXNoKHsgc2VjcmV0TmFtZTogcy5uYW1lLCBhcm46IHMuYXJuLCBleHBpcmVzQXQsIGRheXNVbnRpbEV4cGlyeSwgc3RhdHVzIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXRSaXNrID0gZW50cmllcy5maWx0ZXIoKGUpID0+IGUuc3RhdHVzICE9PSAnb2snKTtcbiAgICAgICAgLy8gQSB0cnVuY2F0ZWQgc2NhbiBpcyBpdHNlbGYgYSBmYWlsdXJlIGNvbmRpdGlvbjogZXhpdCBub24temVybyBzbyBjcm9uXG4gICAgICAgIC8vIGRvZXNuJ3QgcmVhZCBhbiBpbmNvbXBsZXRlIFwiYWxsIGNsZWFyXCIgYXMgc3VjY2Vzcy5cbiAgICAgICAgY29uc3QgZXhpdENvZGUgPSAoYXRSaXNrLmxlbmd0aCA+IDAgfHwgdHJ1bmNhdGVkKSA/IDEgOiAwO1xuXG4gICAgICAgIGlmIChvcHRpb25zLmpzb24pIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBzY2FubmVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICAgIHdhcm5EYXlzLFxuICAgICAgICAgICAgdG90YWxTY2FubmVkOiBlbnRyaWVzLmxlbmd0aCxcbiAgICAgICAgICAgIGF0Umlza0NvdW50OiBhdFJpc2subGVuZ3RoLFxuICAgICAgICAgICAgdHJ1bmNhdGVkLFxuICAgICAgICAgICAgZW50cmllczogZW50cmllcy5tYXAoKGUpID0+ICh7IC4uLmUsIGV4cGlyZXNBdDogZS5leHBpcmVzQXQudG9JU09TdHJpbmcoKSB9KSksXG4gICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICB9LCBudWxsLCAyKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJpbnRTZWN0aW9uKCdBdWRpdCBSZXN1bHRzJyk7XG4gICAgICAgICAgcHJpbnRJbmZvKGBTY2FubmVkICR7ZW50cmllcy5sZW5ndGh9IHBsYXRmb3JtIHNlY3JldCR7ZW50cmllcy5sZW5ndGggPT09IDEgPyAnJyA6ICdzJ31gKTtcbiAgICAgICAgICBpZiAoYXRSaXNrLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKHRydW5jYXRlZCkge1xuICAgICAgICAgICAgICBwcmludFdhcm5pbmcoJ05vIGF0LXJpc2sgdG9rZW5zIGluIHRoZSBzY2FubmVkIHBhZ2VzLCBidXQgdGhlIHNjYW4gd2FzIHRydW5jYXRlZCDigJQgc29tZSBzZWNyZXRzIHdlcmUgbm90IGNoZWNrZWQuJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwcmludFN1Y2Nlc3MoYEFsbCB0b2tlbnMgdmFsaWQgZm9yIGF0IGxlYXN0ICR7d2FybkRheXN9IGRheXNgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIGF0Umlzaykge1xuICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGUuc3RhdHVzID09PSAnZXhwaXJlZCdcbiAgICAgICAgICAgICAgICA/IGBFWFBJUkVEICR7TWF0aC5hYnMoZS5kYXlzVW50aWxFeHBpcnkpfSBkYXkke2UuZGF5c1VudGlsRXhwaXJ5ID09PSAtMSA/ICcnIDogJ3MnfSBhZ29gXG4gICAgICAgICAgICAgICAgOiBgZXhwaXJlcyBpbiAke2UuZGF5c1VudGlsRXhwaXJ5fSBkYXkke2UuZGF5c1VudGlsRXhwaXJ5ID09PSAxID8gJycgOiAncyd9YDtcbiAgICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGAke2Uuc2VjcmV0TmFtZX0g4oCUICR7bGFiZWx9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmludEVycm9yKGAke2F0Umlzay5sZW5ndGh9IHNlY3JldCR7YXRSaXNrLmxlbmd0aCA9PT0gMSA/ICcnIDogJ3MnfSBuZWVkIHJvdGF0aW9uLiBSdW4gXFxgcGlwZWxpbmUtbWFuYWdlciBpbmZyYSBzdG9yZS10b2tlbiAtLWRheXMgPE4+XFxgIHRvIHJlZnJlc2guYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHByb2Nlc3MuZXhpdChleGl0Q29kZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogZmFsc2UsXG4gICAgICAgICAgY29udGV4dDogeyBjb21tYW5kOiAnYXVkaXQtdG9rZW5zJywgZXhlY3V0aW9uSWQgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtdG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2F1ZGl0LXRva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBVTNHOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsT0FBZ0I7SUFDMUMsaUJBQWlCLENBQ2YsZ0JBQWdCLENBQUMsT0FBTztTQUNyQixPQUFPLENBQUMsUUFBUSxDQUFDO1NBQ2pCLFdBQVcsQ0FBQyxvRkFBb0YsQ0FBQyxDQUFDLENBQ3RHO1NBQ0UsTUFBTSxDQUFDLG9CQUFvQixFQUFFLCtDQUErQyxFQUFFLEdBQUcsQ0FBQztTQUNsRixNQUFNLENBQUMsbUJBQW1CLEVBQUUscUNBQXFDLEVBQUUsR0FBRyxhQUFhLENBQUMsbUJBQW1CLEdBQUcsQ0FBQztTQUMzRyxNQUFNLENBQUMsUUFBUSxFQUFFLHdCQUF3QixFQUFF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LE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUU7YUFDbEQsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IENvcmVDb25zdGFudHMgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1jb3JlJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgZGVjb2RlVG9rZW5QYXlsb2FkIH0gZnJvbSAnLi4vdXRpbHMvYXV0aC1ndWFyZC5qcyc7XG5pbXBvcnQgeyByZXNvbHZlQXdzUmVnaW9uIH0gZnJvbSAnLi4vdXRpbHMvYXdzLWVudi5qcyc7XG5pbXBvcnQgeyBnZXRTZWNyZXRWYWx1ZSwgbGlzdFNlY3JldHMgfSBmcm9tICcuLi91dGlscy9hd3Mtc2VjcmV0cy5qcyc7XG5pbXBvcnQgeyBwcmludENvbW1hbmRIZWFkZXIsIHdpdGhQcm9maWxlT3B0aW9uLCB3aXRoUmVnaW9uT3B0aW9uIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MsIHByaW50V2FybmluZyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5cbmludGVyZmFjZSBUb2tlbkF1ZGl0RW50cnkge1xuICBzZWNyZXROYW1lOiBzdHJpbmc7XG4gIGFybjogc3RyaW5nO1xuICBleHBpcmVzQXQ6IERhdGU7XG4gIGRheXNVbnRpbEV4cGlyeTogbnVtYmVyO1xuICBzdGF0dXM6ICdleHBpcmVkJyB8ICdleHBpcmluZy1zb29uJyB8ICdvayc7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgYXVkaXQtdG9rZW5zYCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIFNjYW5zIEFXUyBTZWNyZXRzIE1hbmFnZXIgZm9yIHN0b3JlZCBwbGF0Zm9ybSBKV1RzIChtYXRjaGluZyB0aGVcbiAqIGBwaXBlbGluZS1idWlsZGVyLzxvcmdJZD4vcGxhdGZvcm1gIG5hbWluZyBjb252ZW50aW9uIHVzZWQgYnkgYHN0b3JlLXRva2VuYClcbiAqIGFuZCByZXBvcnRzIHdoaWNoIHNlY3JldHMgYXJlIGV4cGlyZWQgb3IgY2xvc2UgdG8gZXhwaXJpbmcuXG4gKlxuICogRGVzaWduZWQgZm9yIGNyb24gdXNlOlxuICogICAtIEV4aXRzIDAgd2hlbiBub3RoaW5nIGlzIGF0LXJpc2suXG4gKiAgIC0gRXhpdHMgMSB3aGVuIGF0IGxlYXN0IG9uZSBzZWNyZXQgaXMgZXhwaXJlZCBvciBleHBpcmVzIHdpdGhpbiBgLS13YXJuLWRheXNgLlxuICogICAtIEV4aXRzIDIgb24gQVdTIGVycm9ycyAvIHNjYW4gZmFpbHVyZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGJhc2hcbiAqIHBpcGVsaW5lLW1hbmFnZXIgYXVkaXQgdG9rZW5zIC0tcmVnaW9uIHVzLWVhc3QtMSAtLXdhcm4tZGF5cyA3XG4gKiBwaXBlbGluZS1tYW5hZ2VyIGF1ZGl0IHRva2VucyAtLXJlZ2lvbiB1cy1lYXN0LTEgLS1qc29uXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF1ZGl0VG9rZW5zKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgd2l0aFByb2ZpbGVPcHRpb24oXG4gICAgd2l0aFJlZ2lvbk9wdGlvbihwcm9ncmFtXG4gICAgICAuY29tbWFuZCgndG9rZW5zJylcbiAgICAgIC5kZXNjcmlwdGlvbignU2NhbiBzdG9yZWQgcGxhdGZvcm0gdG9rZW5zIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIgYW5kIHJlcG9ydCB1cGNvbWluZyBleHBpcmF0aW9ucycpKSxcbiAgKVxuICAgIC5vcHRpb24oJy0td2Fybi1kYXlzIDxkYXlzPicsICdGbGFnIHRva2VucyBleHBpcmluZyB3aXRoaW4gTiBkYXlzIGFzIGF0LXJpc2snLCAnNycpXG4gICAgLm9wdGlvbignLS1wcmVmaXggPHByZWZpeD4nLCAnU2VjcmV0cyBNYW5hZ2VyIG5hbWUgcHJlZml4IHRvIHNjYW4nLCBgJHtDb3JlQ29uc3RhbnRzLlNFQ1JFVFNfUEFUSF9QUkVGSVh9L2ApXG4gICAgLm9wdGlvbignLS1qc29uJywgJ091dHB1dCByZXN1bHRzIGFzIEpTT04nLCBmYWxzZSlcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignQXVkaXQgVG9rZW5zJywgdW5kZWZpbmVkLCB7IHF1aWV0OiBvcHRpb25zLmpzb24gfSk7XG4gICAgICBjb25zdCByZWdpb24gPSByZXNvbHZlQXdzUmVnaW9uKG9wdGlvbnMucmVnaW9uKTtcbiAgICAgIGNvbnN0IHdhcm5EYXlzID0gcGFyc2VJbnQob3B0aW9ucy53YXJuRGF5cywgMTApO1xuICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUod2FybkRheXMpIHx8IHdhcm5EYXlzIDwgMCkge1xuICAgICAgICBwcmludEVycm9yKCdJbnZhbGlkIC0td2Fybi1kYXlzIHZhbHVlJywgeyBwcm92aWRlZDogb3B0aW9ucy53YXJuRGF5cyB9KTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDIpO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBQcm9ncmVzcyBnb2VzIHRvIHN0ZG91dCwgc28gc3VwcHJlc3MgaXQgaW4gLS1qc29uIG1vZGUgdG8ga2VlcCB0aGUgSlNPTiBwYXlsb2FkIGNsZWFuIGZvciBwaXBpbmcuXG4gICAgICAgIGlmICghb3B0aW9ucy5qc29uKSBwcmludEluZm8oJ0xpc3Rpbmcgc2VjcmV0cycsIHsgcmVnaW9uLCBwcmVmaXg6IG9wdGlvbnMucHJlZml4IH0pO1xuICAgICAgICBjb25zdCB7IHNlY3JldHMsIHRydW5jYXRlZCB9ID0gYXdhaXQgbGlzdFNlY3JldHMob3B0aW9ucy5wcmVmaXgsIHsgcmVnaW9uLCBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUgfSk7XG4gICAgICAgIGlmICh0cnVuY2F0ZWQpIHtcbiAgICAgICAgICAvLyBBIHRydW5jYXRlZCBzd2VlcCBtZWFucyBhbiBleHBpcmluZyB0b2tlbiBwYXN0IHRoZSBjYXAgY291bGQgYmUgbWlzc2VkIOKAlFxuICAgICAgICAgIC8vIG5ldmVyIHJlcG9ydCBcImFsbCBjbGVhclwiIGZyb20gYW4gaW5jb21wbGV0ZSBzY2FuIChtaXJyb3JzIGF1ZGl0LXN0YWNrcykuXG4gICAgICAgICAgcHJpbnRXYXJuaW5nKCdTZWNyZXQgbGlzdGluZyB3YXMgVFJVTkNBVEVEIChwYWdpbmcgY2FwIGhpdCkg4oCUIHJlc3VsdHMgbWF5IGJlIElOQ09NUExFVEUgYW5kIGFuIGV4cGlyaW5nIHRva2VuIGNvdWxkIGJlIG1pc3NlZC4gTmFycm93IGJ5IC0tcHJlZml4Ly0tcmVnaW9uLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXVkaXQgYm90aCB0aGUgZnVsbC1wcml2aWxlZ2UgcGxhdGZvcm0gdG9rZW4gKGA8cHJlZml4Pi88b3JnSWQ+L3BsYXRmb3JtYClcbiAgICAgICAgLy8gQU5EIHRoZSBzY29wZWQgZXZlbnQtaW5nZXN0aW9uIHRva2VuIChgLi4uL3JlcG9ydGluZy1pbmdlc3RgLCBtaW50ZWQgYnlcbiAgICAgICAgLy8gYHN0b3JlLXRva2VuIC0tc2NvcGUgcmVwb3J0aW5nOmluZ2VzdGApIOKAlCBib3RoIGV4cGlyZSBhbmQgYm90aCBhcmVcbiAgICAgICAgLy8gYXV0by1yZW5ld2VkLCBzbyBhIHN0YWxsZWQgcmVuZXdhbCBvbiBlaXRoZXIgbXVzdCBzdXJmYWNlIGhlcmUuXG4gICAgICAgIGNvbnN0IHBsYXRmb3JtU2VjcmV0cyA9IHNlY3JldHMuZmlsdGVyKChzKSA9PiBzLm5hbWUuZW5kc1dpdGgoJy9wbGF0Zm9ybScpIHx8IHMubmFtZS5lbmRzV2l0aCgnL3JlcG9ydGluZy1pbmdlc3QnKSk7XG5cbiAgICAgICAgY29uc3QgZW50cmllczogVG9rZW5BdWRpdEVudHJ5W10gPSBbXTtcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3Qgd2FybkN1dG9mZiA9IG5vdyArIHdhcm5EYXlzICogMjQgKiA2MCAqIDYwICogMTAwMDtcblxuICAgICAgICBmb3IgKGNvbnN0IHMgb2YgcGxhdGZvcm1TZWNyZXRzKSB7XG4gICAgICAgICAgbGV0IHJhdzogc3RyaW5nO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByYXcgPSBhd2FpdCBnZXRTZWNyZXRWYWx1ZShzLm5hbWUsIHsgcmVnaW9uLCBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBwcmludFdhcm5pbmcoYENvdWxkIG5vdCByZWFkICR7cy5uYW1lfTogJHtlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycil9YCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgcGFyc2VkOiB7IHBhc3N3b3JkPzogc3RyaW5nOyBleHBpcmVzQXQ/OiBzdHJpbmcgfTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcGFyc2VkID0gSlNPTi5wYXJzZShyYXcpO1xuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGBTZWNyZXQgJHtzLm5hbWV9IGlzIG5vdCB2YWxpZCBKU09OLCBza2lwcGluZ2ApO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gUHJlZmVyIHRoZSBleHBsaWNpdCBleHBpcmVzQXQgZmllbGQgd3JpdHRlbiBieSBzdG9yZS10b2tlbjsgZmFsbCBiYWNrXG4gICAgICAgICAgLy8gdG8gZGVjb2RpbmcgdGhlIEpXVCdzIGV4cCBjbGFpbSBpZiB0aGUgZmllbGQgaXMgbWlzc2luZy5cbiAgICAgICAgICBsZXQgZXhwaXJlc0F0OiBEYXRlIHwgdW5kZWZpbmVkO1xuICAgICAgICAgIGlmIChwYXJzZWQuZXhwaXJlc0F0KSB7XG4gICAgICAgICAgICBjb25zdCBkID0gbmV3IERhdGUocGFyc2VkLmV4cGlyZXNBdCk7XG4gICAgICAgICAgICBpZiAoIU51bWJlci5pc05hTihkLmdldFRpbWUoKSkpIGV4cGlyZXNBdCA9IGQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGBzdG9yZS10b2tlbmAgd3JpdGVzIHRoZSBKV1QgdG8gdGhlIGNhbm9uaWNhbCBgcGFzc3dvcmRgIGZpZWxkLlxuICAgICAgICAgIGlmICghZXhwaXJlc0F0ICYmIHBhcnNlZC5wYXNzd29yZCkge1xuICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGRlY29kZVRva2VuUGF5bG9hZChwYXJzZWQucGFzc3dvcmQpO1xuICAgICAgICAgICAgaWYgKHBheWxvYWQ/LmV4cCAmJiB0eXBlb2YgcGF5bG9hZC5leHAgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgIGV4cGlyZXNBdCA9IG5ldyBEYXRlKHBheWxvYWQuZXhwICogMTAwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZXhwaXJlc0F0KSB7XG4gICAgICAgICAgICBwcmludFdhcm5pbmcoYFNlY3JldCAke3MubmFtZX0gaGFzIG5vIGV4cGlyeSBpbmZvcm1hdGlvbiwgc2tpcHBpbmdgKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGRheXNVbnRpbEV4cGlyeSA9IE1hdGguZmxvb3IoKGV4cGlyZXNBdC5nZXRUaW1lKCkgLSBub3cpIC8gKDI0ICogNjAgKiA2MCAqIDEwMDApKTtcbiAgICAgICAgICBjb25zdCBzdGF0dXM6IFRva2VuQXVkaXRFbnRyeVsnc3RhdHVzJ10gPVxuICAgICAgICAgICAgZXhwaXJlc0F0LmdldFRpbWUoKSA8IG5vdyA/ICdleHBpcmVkJ1xuICAgICAgICAgICAgICA6IGV4cGlyZXNBdC5nZXRUaW1lKCkgPCB3YXJuQ3V0b2ZmID8gJ2V4cGlyaW5nLXNvb24nXG4gICAgICAgICAgICAgICAgOiAnb2snO1xuICAgICAgICAgIGVudHJpZXMucHVzaCh7IHNlY3JldE5hbWU6IHMubmFtZSwgYXJuOiBzLmFybiwgZXhwaXJlc0F0LCBkYXlzVW50aWxFeHBpcnksIHN0YXR1cyB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGF0UmlzayA9IGVudHJpZXMuZmlsdGVyKChlKSA9PiBlLnN0YXR1cyAhPT0gJ29rJyk7XG4gICAgICAgIC8vIEEgdHJ1bmNhdGVkIHNjYW4gaXMgaXRzZWxmIGEgZmFpbHVyZSBjb25kaXRpb246IGV4aXQgbm9uLXplcm8gc28gY3JvblxuICAgICAgICAvLyBkb2Vzbid0IHJlYWQgYW4gaW5jb21wbGV0ZSBcImFsbCBjbGVhclwiIGFzIHN1Y2Nlc3MuXG4gICAgICAgIGNvbnN0IGV4aXRDb2RlID0gKGF0Umlzay5sZW5ndGggPiAwIHx8IHRydW5jYXRlZCkgPyAxIDogMDtcblxuICAgICAgICBpZiAob3B0aW9ucy5qc29uKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgc2Nhbm5lZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgICB3YXJuRGF5cyxcbiAgICAgICAgICAgIHRvdGFsU2Nhbm5lZDogZW50cmllcy5sZW5ndGgsXG4gICAgICAgICAgICBhdFJpc2tDb3VudDogYXRSaXNrLmxlbmd0aCxcbiAgICAgICAgICAgIHRydW5jYXRlZCxcbiAgICAgICAgICAgIGVudHJpZXM6IGVudHJpZXMubWFwKChlKSA9PiAoeyAuLi5lLCBleHBpcmVzQXQ6IGUuZXhwaXJlc0F0LnRvSVNPU3RyaW5nKCkgfSkpLFxuICAgICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgfSwgbnVsbCwgMikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByaW50U2VjdGlvbignQXVkaXQgUmVzdWx0cycpO1xuICAgICAgICAgIHByaW50SW5mbyhgU2Nhbm5lZCAke2VudHJpZXMubGVuZ3RofSBwbGF0Zm9ybSBzZWNyZXQke2VudHJpZXMubGVuZ3RoID09PSAxID8gJycgOiAncyd9YCk7XG4gICAgICAgICAgaWYgKGF0Umlzay5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGlmICh0cnVuY2F0ZWQpIHtcbiAgICAgICAgICAgICAgcHJpbnRXYXJuaW5nKCdObyBhdC1yaXNrIHRva2VucyBpbiB0aGUgc2Nhbm5lZCBwYWdlcywgYnV0IHRoZSBzY2FuIHdhcyB0cnVuY2F0ZWQg4oCUIHNvbWUgc2VjcmV0cyB3ZXJlIG5vdCBjaGVja2VkLicpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcHJpbnRTdWNjZXNzKGBBbGwgdG9rZW5zIHZhbGlkIGZvciBhdCBsZWFzdCAke3dhcm5EYXlzfSBkYXlzYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiBhdFJpc2spIHtcbiAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBlLnN0YXR1cyA9PT0gJ2V4cGlyZWQnXG4gICAgICAgICAgICAgICAgPyBgRVhQSVJFRCAke01hdGguYWJzKGUuZGF5c1VudGlsRXhwaXJ5KX0gZGF5JHtlLmRheXNVbnRpbEV4cGlyeSA9PT0gLTEgPyAnJyA6ICdzJ30gYWdvYFxuICAgICAgICAgICAgICAgIDogYGV4cGlyZXMgaW4gJHtlLmRheXNVbnRpbEV4cGlyeX0gZGF5JHtlLmRheXNVbnRpbEV4cGlyeSA9PT0gMSA/ICcnIDogJ3MnfWA7XG4gICAgICAgICAgICAgIHByaW50V2FybmluZyhgJHtlLnNlY3JldE5hbWV9IOKAlCAke2xhYmVsfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJpbnRFcnJvcihgJHthdFJpc2subGVuZ3RofSBzZWNyZXQke2F0Umlzay5sZW5ndGggPT09IDEgPyAnJyA6ICdzJ30gbmVlZCByb3RhdGlvbi4gUnVuIFxcYHBpcGVsaW5lLW1hbmFnZXIgaW5mcmEgc3RvcmUtdG9rZW4gLS1kYXlzIDxOPlxcYCB0byByZWZyZXNoLmApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwcm9jZXNzLmV4aXQoZXhpdENvZGUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IGZhbHNlLFxuICAgICAgICAgIGNvbnRleHQ6IHsgY29tbWFuZDogJ2F1ZGl0LXRva2VucycsIGV4ZWN1dGlvbklkIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMik7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/commands/bootstrap.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/commands/bootstrap.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4EpC;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgGhD"}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { Command } from 'commander';
|
|
4
4
|
import pico from 'picocolors';
|
|
5
|
-
import {
|
|
5
|
+
import { assertShellSafe } from '../config/cli.constants.js';
|
|
6
6
|
import { auditLog } from '../utils/audit-log.js';
|
|
7
|
+
import { resolveAwsRegion } from '../utils/aws-env.js';
|
|
7
8
|
import { executeCdkShellCommand } from '../utils/cdk-utils.js';
|
|
8
9
|
import { printCommandHeader, withProfileOption, withRegionOption } from '../utils/command-utils.js';
|
|
9
10
|
import { ERROR_CODES, handleError } from '../utils/error-handler.js';
|
|
@@ -23,7 +24,7 @@ export function resolveAccount(optionValue) {
|
|
|
23
24
|
*/
|
|
24
25
|
/** @internal Exported for testing only */
|
|
25
26
|
export function resolveRegion(optionValue) {
|
|
26
|
-
return optionValue
|
|
27
|
+
return resolveAwsRegion(optionValue);
|
|
27
28
|
}
|
|
28
29
|
/**
|
|
29
30
|
* Builds the `cdk bootstrap` command string from the resolved options.
|
|
@@ -155,4 +156,4 @@ export function bootstrap(program) {
|
|
|
155
156
|
}
|
|
156
157
|
});
|
|
157
158
|
}
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2Jvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlGLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUVqQzs7O0dBR0c7QUFDSCwwQ0FBMEM7QUFDMUMsTUFBTSxVQUFVLGNBQWMsQ0FBQyxXQUFvQjtJQUNqRCxPQUFPLFdBQVcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDO0FBQ3RGLENBQUM7QUFFRDs7O0dBR0c7QUFDSCwwQ0FBMEM7QUFDMUMsTUFBTSxVQUFVLGFBQWEsQ0FBQyxXQUFvQjtJQUNoRCxPQUFPLFdBQVcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUMsR0FB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TUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2lCQUN2QjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7IEVOVl9WQVJTLCBhc3NlcnRTaGVsbFNhZmUgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyBhdWRpdExvZyB9IGZyb20gJy4uL3V0aWxzL2F1ZGl0LWxvZy5qcyc7XG5pbXBvcnQgeyBleGVjdXRlQ2RrU2hlbGxDb21tYW5kIH0gZnJvbSAnLi4vdXRpbHMvY2RrLXV0aWxzLmpzJztcbmltcG9ydCB7IHByaW50Q29tbWFuZEhlYWRlciwgd2l0aFByb2ZpbGVPcHRpb24sIHdpdGhSZWdpb25PcHRpb24gfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludEtleVZhbHVlLCBwcmludFNlY3Rpb24gfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuXG5jb25zdCB7IGJvbGQsIGN5YW4sIGRpbSB9ID0gcGljbztcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgQVdTIGFjY291bnQgSUQgZnJvbSB0aGUgQ0xJIG9wdGlvbiBvciBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAqIEByZXR1cm5zIFRoZSBhY2NvdW50IElEIHN0cmluZywgb3IgYHVuZGVmaW5lZGAgaWYgbm90IGF2YWlsYWJsZS5cbiAqL1xuLyoqIEBpbnRlcm5hbCBFeHBvcnRlZCBmb3IgdGVzdGluZyBvbmx5ICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFjY291bnQob3B0aW9uVmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gb3B0aW9uVmFsdWUgfHwgcHJvY2Vzcy5lbnYuQVdTX0FDQ09VTlRfSUQgfHwgcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfQUNDT1VOVDtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgQVdTIHJlZ2lvbiBmcm9tIHRoZSBDTEkgb3B0aW9uIG9yIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICogQHJldHVybnMgVGhlIHJlZ2lvbiBzdHJpbmcsIG9yIGB1bmRlZmluZWRgIGlmIG5vdCBhdmFpbGFibGUuXG4gKi9cbi8qKiBAaW50ZXJuYWwgRXhwb3J0ZWQgZm9yIHRlc3Rpbmcgb25seSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSZWdpb24ob3B0aW9uVmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gb3B0aW9uVmFsdWUgfHwgcHJvY2Vzcy5lbnZbRU5WX1ZBUlMuQVdTX1JFR0lPTl0gfHwgcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfUkVHSU9OIHx8ICd1cy1lYXN0LTEnO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgYGNkayBib290c3RyYXBgIGNvbW1hbmQgc3RyaW5nIGZyb20gdGhlIHJlc29sdmVkIG9wdGlvbnMuXG4gKi9cbi8qKiBAaW50ZXJuYWwgRXhwb3J0ZWQgZm9yIHRlc3Rpbmcgb25seSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQm9vdHN0cmFwQ29tbWFuZChvcHRpb25zOiB7XG4gIGFjY291bnQ6IHN0cmluZztcbiAgcmVnaW9uOiBzdHJpbmc7XG4gIHByb2ZpbGU/OiBzdHJpbmc7XG4gIHF1YWxpZmllcj86IHN0cmluZztcbiAgdHJ1c3Q/OiBzdHJpbmc7XG4gIGNsb3VkZm9ybWF0aW9uRXhlY3V0aW9uUG9saWNpZXM/OiBzdHJpbmc7XG59KTogc3RyaW5nIHtcbiAgLy8gRXZlcnkgdmFsdWUgYmVsb3cgaXMgaW50ZXJwb2xhdGVkIGludG8gYSBzdHJpbmcgcnVuIHZpYSBgZXhlY1N5bmNgIChhIHNoZWxsKSxcbiAgLy8gc28gdmFsaWRhdGUgQUxMIG9wZXJhdG9yLXN1cHBsaWVkIGlucHV0cyDigJQgbm90IGp1c3QgYWNjb3VudC9yZWdpb24vcHJvZmlsZS5cbiAgYXNzZXJ0U2hlbGxTYWZlKG9wdGlvbnMuYWNjb3VudCwgJ2FjY291bnQnKTtcbiAgYXNzZXJ0U2hlbGxTYWZlKG9wdGlvbnMucmVnaW9uLCAncmVnaW9uJyk7XG4gIGlmIChvcHRpb25zLnByb2ZpbGUpIGFzc2VydFNoZWxsU2FmZShvcHRpb25zLnByb2ZpbGUsICdwcm9maWxlJyk7XG4gIGlmIChvcHRpb25zLnF1YWxpZmllcikgYXNzZXJ0U2hlbGxTYWZlKG9wdGlvbnMucXVhbGlmaWVyLCAncXVhbGlmaWVyJyk7XG4gIGlmIChvcHRpb25zLnRydXN0KSBhc3NlcnRTaGVsbFNhZmUob3B0aW9ucy50cnVzdCwgJ3RydXN0Jyk7XG4gIGlmIChvcHRpb25zLmNsb3VkZm9ybWF0aW9uRXhlY3V0aW9uUG9saWNpZXMpIGFzc2VydFNoZWxsU2FmZShvcHRpb25zLmNsb3VkZm9ybWF0aW9uRXhlY3V0aW9uUG9saWNpZXMsICdjbG91ZGZvcm1hdGlvbi1leGVjdXRpb24tcG9saWNpZXMnKTtcblxuICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXG4gICAgJ2NkaycsXG4gICAgJ2Jvb3RzdHJhcCcsXG4gICAgYGF3czovLyR7b3B0aW9ucy5hY2NvdW50fS8ke29wdGlvbnMucmVnaW9ufWAsXG4gIF07XG5cbiAgaWYgKG9wdGlvbnMucHJvZmlsZSkge1xuICAgIHBhcnRzLnB1c2goYC0tcHJvZmlsZT0ke29wdGlvbnMucHJvZmlsZX1gKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLnF1YWxpZmllcikge1xuICAgIHBhcnRzLnB1c2goYC0tcXVhbGlmaWVyPSR7b3B0aW9ucy5xdWFsaWZpZXJ9YCk7XG4gIH1cblxuICBpZiAob3B0aW9ucy50cnVzdCkge1xuICAgIHBhcnRzLnB1c2goYC0tdHJ1c3Q9JHtvcHRpb25zLnRydXN0fWApO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuY2xvdWRmb3JtYXRpb25FeGVjdXRpb25Qb2xpY2llcykge1xuICAgIHBhcnRzLnB1c2goYC0tY2xvdWRmb3JtYXRpb24tZXhlY3V0aW9uLXBvbGljaWVzPSR7b3B0aW9ucy5jbG91ZGZvcm1hdGlvbkV4ZWN1dGlvblBvbGljaWVzfWApO1xuICB9XG5cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJyAnKTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBib290c3RyYXBgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogUHJvdmlzaW9ucyB0aGUgQ0RLIHRvb2xraXQgc3RhY2sgaW4gdGhlIHRhcmdldCBBV1MgYWNjb3VudC9yZWdpb25cbiAqIHNvIHRoYXQgQ0RLIGRlcGxveW1lbnRzIGNhbiBwcm9jZWVkLlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHJvb3QgQ29tbWFuZGVyIHByb2dyYW0gaW5zdGFuY2UgdG8gYXR0YWNoIHRoZSBjb21tYW5kIHRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYm9vdHN0cmFwKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgd2l0aFByb2ZpbGVPcHRpb24oXG4gICAgd2l0aFJlZ2lvbk9wdGlvbihwcm9ncmFtXG4gICAgICAuY29tbWFuZCgnYm9vdHN0cmFwJylcbiAgICAgIC5kZXNjcmlwdGlvbignQm9vdHN0cmFwIEFXUyBDREsgdG9vbGtpdCBzdGFjayBpbiB0YXJnZXQgYWNjb3VudC9yZWdpb24nKVxuICAgICAgLm9wdGlvbignLS1hY2NvdW50IDxpZD4nLCAnQVdTIGFjY291bnQgSUQgKGRlZmF1bHRzIHRvIEFXU19BQ0NPVU5UX0lEIG9yIENES19ERUZBVUxUX0FDQ09VTlQgZW52KScpKSxcbiAgKVxuICAgIC5vcHRpb24oJy0tcXVhbGlmaWVyIDxxdWFsaWZpZXI+JywgJ0Jvb3RzdHJhcCBxdWFsaWZpZXIgZm9yIGVudmlyb25tZW50IGlzb2xhdGlvbicpXG4gICAgLm9wdGlvbignLS10cnVzdCA8YWNjb3VudHM+JywgJ0NvbW1hLXNlcGFyYXRlZCBhY2NvdW50IElEcyB0byB0cnVzdCBmb3IgY3Jvc3MtYWNjb3VudCBkZXBsb3ltZW50cycpXG4gICAgLm9wdGlvbignLS1jbG91ZGZvcm1hdGlvbi1leGVjdXRpb24tcG9saWNpZXMgPGFybnM+JywgJ0lBTSBwb2xpY3kgQVJOcyBmb3IgQ2xvdWRGb3JtYXRpb24gZXhlY3V0aW9uIHJvbGUnKVxuICAgIC5vcHRpb24oJy0tanNvbicsICdPdXRwdXQgcmVzdWx0IGFzIEpTT04nLCBmYWxzZSlcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignQ0RLIEJvb3RzdHJhcCcsIHVuZGVmaW5lZCwgeyBxdWlldDogb3B0aW9ucy5qc29uIH0pO1xuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBOZXZlciBwZXJzaXN0IHRoZSBBV1MgYWNjb3VudCBpZCB0byB0aGUgb24tZGlzayBhdWRpdCBsb2cgKH4vLnBpcGVsaW5lLW1hbmFnZXIvYXVkaXQubG9nKS5cbiAgICAgICAgLy8gVGhlIGF1ZGl0IG1vZHVsZSByZWNvcmRzIG9wZXJhdGlvbiBtZXRhZGF0YSBvbmx5IOKAlCByZWdpb24vcHJvZmlsZSBhcmUgc2FmZTsgdGhlIGFjY291bnQgaWQgaXMgbm90LlxuICAgICAgICBhdWRpdExvZygnYm9vdHN0cmFwJywgeyBleGVjdXRpb25JZCwgcmVnaW9uOiBvcHRpb25zLnJlZ2lvbiwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuXG4gICAgICAgIC8vIFJlc29sdmUgYWNjb3VudCBhbmQgcmVnaW9uXG4gICAgICAgIGNvbnN0IGFjY291bnQgPSByZXNvbHZlQWNjb3VudChvcHRpb25zLmFjY291bnQpO1xuICAgICAgICBjb25zdCByZWdpb24gPSByZXNvbHZlUmVnaW9uKG9wdGlvbnMucmVnaW9uKTtcblxuICAgICAgICBpZiAoIWFjY291bnQpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdBV1MgYWNjb3VudCBJRCBpcyByZXF1aXJlZCcpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGRpbSgnUHJvdmlkZSAtLWFjY291bnQgPGlkPiBvciBzZXQgQVdTX0FDQ09VTlRfSUQgLyBDREtfREVGQVVMVF9BQ0NPVU5UIGVudmlyb25tZW50IHZhcmlhYmxlJykpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQVdTIGFjY291bnQgSUQgbm90IHByb3ZpZGVkJyk7XG4gICAgICAgIH1cblxuICAgICAgICBwcmludEluZm8oJ0Jvb3RzdHJhcCBwYXJhbWV0ZXJzJywge1xuICAgICAgICAgIGFjY291bnQsXG4gICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSxcbiAgICAgICAgICBxdWFsaWZpZXI6IG9wdGlvbnMucXVhbGlmaWVyIHx8ICcoZGVmYXVsdCknLFxuICAgICAgICAgIHRydXN0OiBvcHRpb25zLnRydXN0IHx8ICcobm9uZSknLFxuICAgICAgICAgIGNsb3VkZm9ybWF0aW9uRXhlY3V0aW9uUG9saWNpZXM6IG9wdGlvbnMuY2xvdWRmb3JtYXRpb25FeGVjdXRpb25Qb2xpY2llcyB8fCAnKG5vbmUpJyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQ0RLIGF2YWlsYWJpbGl0eSBpcyB2ZXJpZmllZCB1cCBmcm9udCBieSB0aGUgQ0xJJ3MgcHJlQWN0aW9uIGhvb2suXG5cbiAgICAgICAgLy8gQnVpbGQgYm9vdHN0cmFwIGNvbW1hbmRcbiAgICAgICAgY29uc3QgY29tbWFuZCA9IGJ1aWxkQm9vdHN0cmFwQ29tbWFuZCh7XG4gICAgICAgICAgYWNjb3VudCxcbiAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlLFxuICAgICAgICAgIHF1YWxpZmllcjogb3B0aW9ucy5xdWFsaWZpZXIsXG4gICAgICAgICAgdHJ1c3Q6IG9wdGlvbnMudHJ1c3QsXG4gICAgICAgICAgY2xvdWRmb3JtYXRpb25FeGVjdXRpb25Qb2xpY2llczogb3B0aW9ucy5jbG91ZGZvcm1hdGlvbkV4ZWN1dGlvblBvbGljaWVzLFxuICAgICAgICB9KTtcblxuICAgICAgICBwcmludFNlY3Rpb24oJ0NESyBFeGVjdXRpb24nKTtcbiAgICAgICAgY29uc29sZS5sb2coY3lhbihib2xkKCdDb21tYW5kOicpKSwgZGltKGNvbW1hbmQpKTtcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuXG4gICAgICAgIC8vIEV4ZWN1dGUgYm9vdHN0cmFwXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGV4ZWN1dGVDZGtTaGVsbENvbW1hbmQoY29tbWFuZCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBzaG93T3V0cHV0OiB0cnVlLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignQm9vdHN0cmFwIENvbXBsZXRlJyk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuanNvbikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgICAgYWNjb3VudCxcbiAgICAgICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgICAgICBkdXJhdGlvbjogcmVzdWx0LmR1cmF0aW9uLFxuICAgICAgICAgICAgfSwgbnVsbCwgMikpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgICAgJ0V4ZWN1dGlvbiBJRCc6IGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgICAnQWNjb3VudCc6IGFjY291bnQsXG4gICAgICAgICAgICAgICdSZWdpb24nOiByZWdpb24sXG4gICAgICAgICAgICAgICdEdXJhdGlvbic6IGAke3Jlc3VsdC5kdXJhdGlvbn1tc2AsXG4gICAgICAgICAgICAgICdTdGF0dXMnOiAn4pyTIFN1Y2Nlc3MnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5WQUxJREFUSU9OLCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgY29tbWFuZDogJ2Jvb3RzdHJhcCcsXG4gICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgIGFjY291bnQ6IG9wdGlvbnMuYWNjb3VudCxcbiAgICAgICAgICAgIHJlZ2lvbjogb3B0aW9ucy5yZWdpb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2Jvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFOUYsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRWpDOzs7R0FHRztBQUNILDBDQUEwQztBQUMxQyxNQUFNLFVBQVUsY0FBYyxDQUFDLFdBQW9CO0lBQ2pELE9BQU8sV0FBVyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUM7QUFDdEYsQ0FBQztBQUVEOzs7R0FHRztBQUNILDBDQUEwQztBQUMxQyxNQUFNLFVBQVUsYUFBYSxDQUFDLFdBQW9CO0lBQ2hELE9BQU8sZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDdkMs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RixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyBhc3NlcnRTaGVsbFNhZmUgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyBhdWRpdExvZyB9IGZyb20gJy4uL3V0aWxzL2F1ZGl0LWxvZy5qcyc7XG5pbXBvcnQgeyByZXNvbHZlQXdzUmVnaW9uIH0gZnJvbSAnLi4vdXRpbHMvYXdzLWVudi5qcyc7XG5pbXBvcnQgeyBleGVjdXRlQ2RrU2hlbGxDb21tYW5kIH0gZnJvbSAnLi4vdXRpbHMvY2RrLXV0aWxzLmpzJztcbmltcG9ydCB7IHByaW50Q29tbWFuZEhlYWRlciwgd2l0aFByb2ZpbGVPcHRpb24sIHdpdGhSZWdpb25PcHRpb24gfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludEtleVZhbHVlLCBwcmludFNlY3Rpb24gfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuXG5jb25zdCB7IGJvbGQsIGN5YW4sIGRpbSB9ID0gcGljbztcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgQVdTIGFjY291bnQgSUQgZnJvbSB0aGUgQ0xJIG9wdGlvbiBvciBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAqIEByZXR1cm5zIFRoZSBhY2NvdW50IElEIHN0cmluZywgb3IgYHVuZGVmaW5lZGAgaWYgbm90IGF2YWlsYWJsZS5cbiAqL1xuLyoqIEBpbnRlcm5hbCBFeHBvcnRlZCBmb3IgdGVzdGluZyBvbmx5ICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFjY291bnQob3B0aW9uVmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gb3B0aW9uVmFsdWUgfHwgcHJvY2Vzcy5lbnYuQVdTX0FDQ09VTlRfSUQgfHwgcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfQUNDT1VOVDtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgQVdTIHJlZ2lvbiBmcm9tIHRoZSBDTEkgb3B0aW9uIG9yIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICogQHJldHVybnMgVGhlIHJlZ2lvbiBzdHJpbmcsIG9yIGB1bmRlZmluZWRgIGlmIG5vdCBhdmFpbGFibGUuXG4gKi9cbi8qKiBAaW50ZXJuYWwgRXhwb3J0ZWQgZm9yIHRlc3Rpbmcgb25seSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSZWdpb24ob3B0aW9uVmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVzb2x2ZUF3c1JlZ2lvbihvcHRpb25WYWx1ZSk7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBgY2RrIGJvb3RzdHJhcGAgY29tbWFuZCBzdHJpbmcgZnJvbSB0aGUgcmVzb2x2ZWQgb3B0aW9ucy5cbiAqL1xuLyoqIEBpbnRlcm5hbCBFeHBvcnRlZCBmb3IgdGVzdGluZyBvbmx5ICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRCb290c3RyYXBDb21tYW5kKG9wdGlvbnM6IHtcbiAgYWNjb3VudDogc3RyaW5nO1xuICByZWdpb246IHN0cmluZztcbiAgcHJvZmlsZT86IHN0cmluZztcbiAgcXVhbGlmaWVyPzogc3RyaW5nO1xuICB0cnVzdD86IHN0cmluZztcbiAgY2xvdWRmb3JtYXRpb25FeGVjdXRpb25Qb2xpY2llcz86IHN0cmluZztcbn0pOiBzdHJpbmcge1xuICAvLyBFdmVyeSB2YWx1ZSBiZWxvdyBpcyBpbnRlcnBvbGF0ZWQgaW50byBhIHN0cmluZyBydW4gdmlhIGBleGVjU3luY2AgKGEgc2hlbGwpLFxuICAvLyBzbyB2YWxpZGF0ZSBBTEwgb3BlcmF0b3Itc3VwcGxpZWQgaW5wdXRzIOKAlCBub3QganVzdCBhY2NvdW50L3JlZ2lvbi9wcm9maWxlLlxuICBhc3NlcnRTaGVsbFNhZmUob3B0aW9ucy5hY2NvdW50LCAnYWNjb3VudCcpO1xuICBhc3NlcnRTaGVsbFNhZmUob3B0aW9ucy5yZWdpb24sICdyZWdpb24nKTtcbiAgaWYgKG9wdGlvbnMucHJvZmlsZSkgYXNzZXJ0U2hlbGxTYWZlKG9wdGlvbnMucHJvZmlsZSwgJ3Byb2ZpbGUnKTtcbiAgaWYgKG9wdGlvbnMucXVhbGlmaWVyKSBhc3NlcnRTaGVsbFNhZmUob3B0aW9ucy5xdWFsaWZpZXIsICdxdWFsaWZpZXInKTtcbiAgaWYgKG9wdGlvbnMudHJ1c3QpIGFzc2VydFNoZWxsU2FmZShvcHRpb25zLnRydXN0LCAndHJ1c3QnKTtcbiAgaWYgKG9wdGlvbnMuY2xvdWRmb3JtYXRpb25FeGVjdXRpb25Qb2xpY2llcykgYXNzZXJ0U2hlbGxTYWZlKG9wdGlvbnMuY2xvdWRmb3JtYXRpb25FeGVjdXRpb25Qb2xpY2llcywgJ2Nsb3VkZm9ybWF0aW9uLWV4ZWN1dGlvbi1wb2xpY2llcycpO1xuXG4gIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtcbiAgICAnY2RrJyxcbiAgICAnYm9vdHN0cmFwJyxcbiAgICBgYXdzOi8vJHtvcHRpb25zLmFjY291bnR9LyR7b3B0aW9ucy5yZWdpb259YCxcbiAgXTtcblxuICBpZiAob3B0aW9ucy5wcm9maWxlKSB7XG4gICAgcGFydHMucHVzaChgLS1wcm9maWxlPSR7b3B0aW9ucy5wcm9maWxlfWApO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMucXVhbGlmaWVyKSB7XG4gICAgcGFydHMucHVzaChgLS1xdWFsaWZpZXI9JHtvcHRpb25zLnF1YWxpZmllcn1gKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLnRydXN0KSB7XG4gICAgcGFydHMucHVzaChgLS10cnVzdD0ke29wdGlvbnMudHJ1c3R9YCk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5jbG91ZGZvcm1hdGlvbkV4ZWN1dGlvblBvbGljaWVzKSB7XG4gICAgcGFydHMucHVzaChgLS1jbG91ZGZvcm1hdGlvbi1leGVjdXRpb24tcG9saWNpZXM9JHtvcHRpb25zLmNsb3VkZm9ybWF0aW9uRXhlY3V0aW9uUG9saWNpZXN9YCk7XG4gIH1cblxuICByZXR1cm4gcGFydHMuam9pbignICcpO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYGJvb3RzdHJhcGAgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBQcm92aXNpb25zIHRoZSBDREsgdG9vbGtpdCBzdGFjayBpbiB0aGUgdGFyZ2V0IEFXUyBhY2NvdW50L3JlZ2lvblxuICogc28gdGhhdCBDREsgZGVwbG95bWVudHMgY2FuIHByb2NlZWQuXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcm9vdCBDb21tYW5kZXIgcHJvZ3JhbSBpbnN0YW5jZSB0byBhdHRhY2ggdGhlIGNvbW1hbmQgdG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBib290c3RyYXAocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICB3aXRoUHJvZmlsZU9wdGlvbihcbiAgICB3aXRoUmVnaW9uT3B0aW9uKHByb2dyYW1cbiAgICAgIC5jb21tYW5kKCdib290c3RyYXAnKVxuICAgICAgLmRlc2NyaXB0aW9uKCdCb290c3RyYXAgQVdTIENESyB0b29sa2l0IHN0YWNrIGluIHRhcmdldCBhY2NvdW50L3JlZ2lvbicpXG4gICAgICAub3B0aW9uKCctLWFjY291bnQgPGlkPicsICdBV1MgYWNjb3VudCBJRCAoZGVmYXVsdHMgdG8gQVdTX0FDQ09VTlRfSUQgb3IgQ0RLX0RFRkFVTFRfQUNDT1VOVCBlbnYpJykpLFxuICApXG4gICAgLm9wdGlvbignLS1xdWFsaWZpZXIgPHF1YWxpZmllcj4nLCAnQm9vdHN0cmFwIHF1YWxpZmllciBmb3IgZW52aXJvbm1lbnQgaXNvbGF0aW9uJylcbiAgICAub3B0aW9uKCctLXRydXN0IDxhY2NvdW50cz4nLCAnQ29tbWEtc2VwYXJhdGVkIGFjY291bnQgSURzIHRvIHRydXN0IGZvciBjcm9zcy1hY2NvdW50IGRlcGxveW1lbnRzJylcbiAgICAub3B0aW9uKCctLWNsb3VkZm9ybWF0aW9uLWV4ZWN1dGlvbi1wb2xpY2llcyA8YXJucz4nLCAnSUFNIHBvbGljeSBBUk5zIGZvciBDbG91ZEZvcm1hdGlvbiBleGVjdXRpb24gcm9sZScpXG4gICAgLm9wdGlvbignLS1qc29uJywgJ091dHB1dCByZXN1bHQgYXMgSlNPTicsIGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdDREsgQm9vdHN0cmFwJywgdW5kZWZpbmVkLCB7IHF1aWV0OiBvcHRpb25zLmpzb24gfSk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIE5ldmVyIHBlcnNpc3QgdGhlIEFXUyBhY2NvdW50IGlkIHRvIHRoZSBvbi1kaXNrIGF1ZGl0IGxvZyAofi8ucGlwZWxpbmUtbWFuYWdlci9hdWRpdC5sb2cpLlxuICAgICAgICAvLyBUaGUgYXVkaXQgbW9kdWxlIHJlY29yZHMgb3BlcmF0aW9uIG1ldGFkYXRhIG9ubHkg4oCUIHJlZ2lvbi9wcm9maWxlIGFyZSBzYWZlOyB0aGUgYWNjb3VudCBpZCBpcyBub3QuXG4gICAgICAgIGF1ZGl0TG9nKCdib290c3RyYXAnLCB7IGV4ZWN1dGlvbklkLCByZWdpb246IG9wdGlvbnMucmVnaW9uLCBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUgfSk7XG5cbiAgICAgICAgLy8gUmVzb2x2ZSBhY2NvdW50IGFuZCByZWdpb25cbiAgICAgICAgY29uc3QgYWNjb3VudCA9IHJlc29sdmVBY2NvdW50KG9wdGlvbnMuYWNjb3VudCk7XG4gICAgICAgIGNvbnN0IHJlZ2lvbiA9IHJlc29sdmVSZWdpb24ob3B0aW9ucy5yZWdpb24pO1xuXG4gICAgICAgIGlmICghYWNjb3VudCkge1xuICAgICAgICAgIHByaW50RXJyb3IoJ0FXUyBhY2NvdW50IElEIGlzIHJlcXVpcmVkJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coZGltKCdQcm92aWRlIC0tYWNjb3VudCA8aWQ+IG9yIHNldCBBV1NfQUNDT1VOVF9JRCAvIENES19ERUZBVUxUX0FDQ09VTlQgZW52aXJvbm1lbnQgdmFyaWFibGUnKSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBV1MgYWNjb3VudCBJRCBub3QgcHJvdmlkZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByaW50SW5mbygnQm9vdHN0cmFwIHBhcmFtZXRlcnMnLCB7XG4gICAgICAgICAgYWNjb3VudCxcbiAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlLFxuICAgICAgICAgIHF1YWxpZmllcjogb3B0aW9ucy5xdWFsaWZpZXIgfHwgJyhkZWZhdWx0KScsXG4gICAgICAgICAgdHJ1c3Q6IG9wdGlvbnMudHJ1c3QgfHwgJyhub25lKScsXG4gICAgICAgICAgY2xvdWRmb3JtYXRpb25FeGVjdXRpb25Qb2xpY2llczogb3B0aW9ucy5jbG91ZGZvcm1hdGlvbkV4ZWN1dGlvblBvbGljaWVzIHx8ICcobm9uZSknLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBDREsgYXZhaWxhYmlsaXR5IGlzIHZlcmlmaWVkIHVwIGZyb250IGJ5IHRoZSBDTEkncyBwcmVBY3Rpb24gaG9vay5cblxuICAgICAgICAvLyBCdWlsZCBib290c3RyYXAgY29tbWFuZFxuICAgICAgICBjb25zdCBjb21tYW5kID0gYnVpbGRCb290c3RyYXBDb21tYW5kKHtcbiAgICAgICAgICBhY2NvdW50LFxuICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUsXG4gICAgICAgICAgcXVhbGlmaWVyOiBvcHRpb25zLnF1YWxpZmllcixcbiAgICAgICAgICB0cnVzdDogb3B0aW9ucy50cnVzdCxcbiAgICAgICAgICBjbG91ZGZvcm1hdGlvbkV4ZWN1dGlvblBvbGljaWVzOiBvcHRpb25zLmNsb3VkZm9ybWF0aW9uRXhlY3V0aW9uUG9saWNpZXMsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHByaW50U2VjdGlvbignQ0RLIEV4ZWN1dGlvbicpO1xuICAgICAgICBjb25zb2xlLmxvZyhjeWFuKGJvbGQoJ0NvbW1hbmQ6JykpLCBkaW0oY29tbWFuZCkpO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG5cbiAgICAgICAgLy8gRXhlY3V0ZSBib290c3RyYXBcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZXhlY3V0ZUNka1NoZWxsQ29tbWFuZChjb21tYW5kLCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIHNob3dPdXRwdXQ6IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdCb290c3RyYXAgQ29tcGxldGUnKTtcblxuICAgICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5qc29uKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgICBhY2NvdW50LFxuICAgICAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiByZXN1bHQuZHVyYXRpb24sXG4gICAgICAgICAgICB9LCBudWxsLCAyKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgICAnRXhlY3V0aW9uIElEJzogZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICAgICdBY2NvdW50JzogYWNjb3VudCxcbiAgICAgICAgICAgICAgJ1JlZ2lvbic6IHJlZ2lvbixcbiAgICAgICAgICAgICAgJ0R1cmF0aW9uJzogYCR7cmVzdWx0LmR1cmF0aW9ufW1zYCxcbiAgICAgICAgICAgICAgJ1N0YXR1cyc6ICfinJMgU3VjY2VzcycsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLlZBTElEQVRJT04sIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICBjb21tYW5kOiAnYm9vdHN0cmFwJyxcbiAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgYWNjb3VudDogb3B0aW9ucy5hY2NvdW50LFxuICAgICAgICAgICAgcmVnaW9uOiBvcHRpb25zLnJlZ2lvbixcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-pipeline.d.ts","sourceRoot":"","sources":["../../src/commands/create-pipeline.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"create-pipeline.d.ts","sourceRoot":"","sources":["../../src/commands/create-pipeline.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuUrD"}
|
|
@@ -5,12 +5,15 @@ import * as path from 'path';
|
|
|
5
5
|
import { Command } from 'commander';
|
|
6
6
|
import ora from 'ora';
|
|
7
7
|
import pico from 'picocolors';
|
|
8
|
-
import { formatDuration, formatFileSize, FILE_SIZE_LIMITS } from '../config/cli.constants.js';
|
|
8
|
+
import { formatDuration, formatFileSize, FILE_SIZE_LIMITS, defaultPipelineName } from '../config/cli.constants.js';
|
|
9
9
|
import {} from '../types/index.js';
|
|
10
|
-
import { printCommandHeader, printSslWarning, createAuthenticatedClient, withSslOptions } from '../utils/command-utils.js';
|
|
11
|
-
import {
|
|
10
|
+
import { printCommandHeader, printSslWarning, createAuthenticatedClient, createAuthenticatedClientAsync, withSslOptions, withProfileOption, withRegionOption } from '../utils/command-utils.js';
|
|
11
|
+
import { runDeploy } from '../utils/deploy-runner.js';
|
|
12
|
+
import { ERROR_CODES, handleError, ValidationError } from '../utils/error-handler.js';
|
|
12
13
|
import { ensureOutputDirectory, printError, printInfo, printKeyValue, printSection, printSuccess, printWarning } from '../utils/output-utils.js';
|
|
14
|
+
import { fetchPipelineProps } from '../utils/pipeline-config.js';
|
|
13
15
|
import { extractSingleResponse } from '../utils/response-utils.js';
|
|
16
|
+
import { relaxTlsForCli } from '../utils/tls.js';
|
|
14
17
|
const { bold, cyan, dim, green } = pico;
|
|
15
18
|
/**
|
|
16
19
|
* Registers the `create-pipeline` command with the CLI program.
|
|
@@ -22,9 +25,9 @@ const { bold, cyan, dim, green } = pico;
|
|
|
22
25
|
* @param program - The root Commander program instance to attach the command to.
|
|
23
26
|
*/
|
|
24
27
|
export function createPipeline(program) {
|
|
25
|
-
withSslOptions(program
|
|
28
|
+
withSslOptions(withRegionOption(withProfileOption(program
|
|
26
29
|
.command('create')
|
|
27
|
-
.description('Create a new pipeline
|
|
30
|
+
.description('Create a new pipeline — and optionally deploy it with --deploy')
|
|
28
31
|
.requiredOption('-f, --file <file>', 'Path to pipeline properties JSON file')
|
|
29
32
|
.option('-p, --project <project>', 'Project name (falls back to value in props file)')
|
|
30
33
|
.option('-o, --organization <organization>', 'Organization name (falls back to value in props file)')
|
|
@@ -32,7 +35,14 @@ export function createPipeline(program) {
|
|
|
32
35
|
.option('-a, --access <modifier>', 'Access modifier (public|private)', 'private')
|
|
33
36
|
.option('--default', 'Set as default pipeline', false)
|
|
34
37
|
.option('--active', 'Set pipeline as active', true)
|
|
35
|
-
.option('--no-active', 'Create the pipeline as inactive')
|
|
38
|
+
.option('--no-active', 'Create the pipeline as inactive')
|
|
39
|
+
// --deploy: after creating the record, run the same CDK deploy + ARN
|
|
40
|
+
// registration as `pipeline deploy --id` (shared runDeploy). The flags
|
|
41
|
+
// below apply only with --deploy.
|
|
42
|
+
.option('--deploy', 'Deploy the pipeline with AWS CDK immediately after creating it', false)
|
|
43
|
+
.option('--require-approval <approval>', 'Deploy approval level: never|any-change|broadening (with --deploy)', 'never')
|
|
44
|
+
.option('--output <dir>', 'CDK output directory (with --deploy)', 'cdk.out')
|
|
45
|
+
.option('--store-tokens', 'Deploy auth via AWS Secrets Manager token (with --deploy; requires PLATFORM_SECRET_NAME)', false))))
|
|
36
46
|
.option('--dry-run', 'Validate inputs without creating pipeline', false)
|
|
37
47
|
.action(async (options) => {
|
|
38
48
|
const executionId = printCommandHeader('Create Pipeline', 'Creating Pipeline');
|
|
@@ -47,6 +57,7 @@ export function createPipeline(program) {
|
|
|
47
57
|
'Access Modifier': options.access,
|
|
48
58
|
'Default Pipeline': options.default ? 'Yes' : 'No',
|
|
49
59
|
'Active': options.active ? 'Yes' : 'No',
|
|
60
|
+
'Deploy After Create': options.deploy ? `Yes (profile: ${options.profile || 'default'})` : 'No',
|
|
50
61
|
'Properties File': options.file,
|
|
51
62
|
'SSL Verification': options.verifySsl === false ? 'Disabled' : 'Enabled',
|
|
52
63
|
'Dry Run': options.dryRun ? 'Yes' : 'No',
|
|
@@ -58,7 +69,7 @@ export function createPipeline(program) {
|
|
|
58
69
|
// Validate file exists
|
|
59
70
|
if (!fs.existsSync(options.file)) {
|
|
60
71
|
printError('Properties file not found', { path: options.file });
|
|
61
|
-
throw new
|
|
72
|
+
throw new ValidationError(`File not found: ${options.file}`, 'file');
|
|
62
73
|
}
|
|
63
74
|
// Check file extension
|
|
64
75
|
const fileExt = path.extname(options.file).toLowerCase();
|
|
@@ -72,7 +83,7 @@ export function createPipeline(program) {
|
|
|
72
83
|
size: formatFileSize(fileStats.size),
|
|
73
84
|
limit: formatFileSize(FILE_SIZE_LIMITS.PIPELINE_PROPS),
|
|
74
85
|
});
|
|
75
|
-
throw new
|
|
86
|
+
throw new ValidationError('Properties file exceeds size limit', 'file');
|
|
76
87
|
}
|
|
77
88
|
printSuccess('File validation passed');
|
|
78
89
|
printKeyValue({
|
|
@@ -93,7 +104,7 @@ export function createPipeline(program) {
|
|
|
93
104
|
error: error instanceof Error ? error.message : String(error),
|
|
94
105
|
hint: 'Ensure the file contains valid JSON syntax',
|
|
95
106
|
});
|
|
96
|
-
throw new
|
|
107
|
+
throw new ValidationError('Properties file must contain valid JSON', 'file');
|
|
97
108
|
}
|
|
98
109
|
// Validate properties structure
|
|
99
110
|
if (typeof props !== 'object' || props === null) {
|
|
@@ -101,7 +112,7 @@ export function createPipeline(program) {
|
|
|
101
112
|
type: typeof props,
|
|
102
113
|
hint: 'Properties must be a JSON object',
|
|
103
114
|
});
|
|
104
|
-
throw new
|
|
115
|
+
throw new ValidationError('Properties must be a valid object', 'file');
|
|
105
116
|
}
|
|
106
117
|
const propCount = Object.keys(props).length;
|
|
107
118
|
printSuccess('Properties parsed successfully');
|
|
@@ -121,20 +132,19 @@ export function createPipeline(program) {
|
|
|
121
132
|
printError('Project is required', {
|
|
122
133
|
hint: 'Provide -p/--project flag or include "project" in the props file',
|
|
123
134
|
});
|
|
124
|
-
throw new
|
|
135
|
+
throw new ValidationError('Project is required', 'project');
|
|
125
136
|
}
|
|
126
137
|
if (!resolvedOrganization) {
|
|
127
138
|
printError('Organization is required', {
|
|
128
139
|
hint: 'Provide -o/--organization flag or include "organization" in the props file',
|
|
129
140
|
});
|
|
130
|
-
throw new
|
|
141
|
+
throw new ValidationError('Organization is required', 'organization');
|
|
131
142
|
}
|
|
132
|
-
//
|
|
133
|
-
//
|
|
134
|
-
const sanitize = (s) => s.replace(/[^a-zA-Z0-9]/g, '_').toLowerCase();
|
|
143
|
+
// Resolve pipelineName with the shared default (mirrors pipeline-core's
|
|
144
|
+
// pipeline-configuration.ts) so create + registry + CDK all agree.
|
|
135
145
|
const resolvedPipelineName = options.name
|
|
136
146
|
?? props.pipelineName
|
|
137
|
-
??
|
|
147
|
+
?? defaultPipelineName(resolvedOrganization, resolvedProject);
|
|
138
148
|
const payload = {
|
|
139
149
|
project: resolvedProject,
|
|
140
150
|
organization: resolvedOrganization,
|
|
@@ -159,6 +169,13 @@ export function createPipeline(program) {
|
|
|
159
169
|
console.log('');
|
|
160
170
|
printSuccess('✓ Validation complete - no pipeline created (dry run mode)');
|
|
161
171
|
console.log('');
|
|
172
|
+
if (options.deploy) {
|
|
173
|
+
printInfo('With --deploy, the pipeline would be deployed via CDK after creation', {
|
|
174
|
+
profile: options.profile || '(default)',
|
|
175
|
+
region: options.region || '(default)',
|
|
176
|
+
requireApproval: options.requireApproval,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
162
179
|
printInfo('To create the pipeline, run the command without --dry-run');
|
|
163
180
|
return;
|
|
164
181
|
}
|
|
@@ -225,11 +242,55 @@ export function createPipeline(program) {
|
|
|
225
242
|
'Output File': outputFile,
|
|
226
243
|
'File Size': formatFileSize(fs.statSync(outputFile).size),
|
|
227
244
|
});
|
|
245
|
+
// ── Optional deploy (--deploy) ──
|
|
246
|
+
// The record now exists and is authoritative. If the deploy fails we KEEP
|
|
247
|
+
// it and surface the exact retry rather than rolling back (never false-green).
|
|
248
|
+
if (options.deploy) {
|
|
249
|
+
console.log('');
|
|
250
|
+
printSection('Deploying Pipeline');
|
|
251
|
+
try {
|
|
252
|
+
// Deploy touches the AWS SDK + the CDK synth subprocess; relax TLS the
|
|
253
|
+
// same way `deploy` does (refused in production by relaxTlsForCli).
|
|
254
|
+
relaxTlsForCli(options.verifySsl, printWarning);
|
|
255
|
+
// The async client adds --store-tokens (Secrets Manager) support and
|
|
256
|
+
// backs BOTH the props fetch and the registry callback.
|
|
257
|
+
const deployClient = await createAuthenticatedClientAsync(options);
|
|
258
|
+
const deployConfig = deployClient.getConfig();
|
|
259
|
+
// Re-fetch the just-created pipeline so plugins are resolved and the
|
|
260
|
+
// registry host is baked EXACTLY as `deploy --id` does — no drift.
|
|
261
|
+
const fetched = await fetchPipelineProps(deployClient, pipeline.id);
|
|
262
|
+
await runDeploy({
|
|
263
|
+
pipeline: fetched.pipeline,
|
|
264
|
+
propsWithIds: fetched.propsWithIds,
|
|
265
|
+
profile: options.profile,
|
|
266
|
+
region: options.region,
|
|
267
|
+
requireApproval: options.requireApproval,
|
|
268
|
+
output: options.output,
|
|
269
|
+
debug: program.opts().debug,
|
|
270
|
+
executionId,
|
|
271
|
+
platformClient: deployClient,
|
|
272
|
+
platformPipelineUrl: deployConfig.api.pipelineUrl,
|
|
273
|
+
platformBaseUrl: deployConfig.api.baseUrl,
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
catch (deployError) {
|
|
277
|
+
printError('Pipeline was created but the deploy failed', {
|
|
278
|
+
pipelineId: pipeline.id,
|
|
279
|
+
error: deployError instanceof Error ? deployError.message : String(deployError),
|
|
280
|
+
retry: `pipeline-manager pipeline deploy --id ${pipeline.id}`,
|
|
281
|
+
});
|
|
282
|
+
// Re-throw so the process exits non-zero. The record is intentionally
|
|
283
|
+
// retained — re-run the deploy with the command above.
|
|
284
|
+
throw deployError;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
228
287
|
// Next steps
|
|
229
288
|
console.log('');
|
|
230
289
|
printSection('Next Steps');
|
|
231
290
|
console.log(dim('You can now:'));
|
|
232
|
-
|
|
291
|
+
if (!options.deploy) {
|
|
292
|
+
console.log(` ${cyan('•')} Deploy: ${bold(`deploy --id ${pipeline.id}`)}`);
|
|
293
|
+
}
|
|
233
294
|
console.log(` ${cyan('•')} View: ${bold(`get-pipeline --id ${pipeline.id}`)}`);
|
|
234
295
|
console.log(` ${cyan('•')} API: ${config.api.baseUrl}${config.api.pipelineUrl}/${pipeline.id}`);
|
|
235
296
|
console.log('');
|
|
@@ -251,4 +312,4 @@ export function createPipeline(program) {
|
|
|
251
312
|
}
|
|
252
313
|
});
|
|
253
314
|
}
|
|
254
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBpcGVsaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2NyZWF0ZS1waXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQ3RCLE9BQU8sSUFBSSxNQUFNLFlBQVksQ0FBQztBQUM5QixPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlGLE9BQU8sRUFBb0UsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNILE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDakosT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbkUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztBQUV4Qzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBZ0I7SUFDN0MsY0FBYyxDQUFDLE9BQU87U0FDbkIsT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUNqQixXQUFXLENBQUMsdURBQXVE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QyxJQUFJO29CQUNsQixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7b0JBQzVCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtpQkFDdkI7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCBvcmEgZnJvbSAnb3JhJztcbmltcG9ydCBwaWNvIGZyb20gJ3BpY29jb2xvcnMnO1xuaW1wb3J0IHsgZm9ybWF0RHVyYXRpb24sIGZvcm1hdEZpbGVTaXplLCBGSUxFX1NJWkVfTElNSVRTIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgdHlwZSBQaXBlbGluZSwgdHlwZSBQaXBlbGluZVJlc3BvbnNlLCB0eXBlIENyZWF0ZVBpcGVsaW5lUmVxdWVzdCB9IGZyb20gJy4uL3R5cGVzL2luZGV4LmpzJztcbmltcG9ydCB7IHByaW50Q29tbWFuZEhlYWRlciwgcHJpbnRTc2xXYXJuaW5nLCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50LCB3aXRoU3NsT3B0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBlbnN1cmVPdXRwdXREaXJlY3RvcnksIHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MsIHByaW50V2FybmluZyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5pbXBvcnQgeyBleHRyYWN0U2luZ2xlUmVzcG9uc2UgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS11dGlscy5qcyc7XG5cbmNvbnN0IHsgYm9sZCwgY3lhbiwgZGltLCBncmVlbiB9ID0gcGljbztcblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBjcmVhdGUtcGlwZWxpbmVgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogQWNjZXB0cyBhIHBpcGVsaW5lIHByb3BlcnRpZXMgSlNPTiBmaWxlLCB2YWxpZGF0ZXMgaXQsIHJlc29sdmVzXG4gKiBwcm9qZWN0L29yZ2FuaXphdGlvbiBmcm9tIENMSSBmbGFncyBvciB0aGUgcHJvcHMgZmlsZSwgYW5kXG4gKiBjcmVhdGVzIHRoZSBwaXBlbGluZSB2aWEgdGhlIHBsYXRmb3JtIEFQSS5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSByb290IENvbW1hbmRlciBwcm9ncmFtIGluc3RhbmNlIHRvIGF0dGFjaCB0aGUgY29tbWFuZCB0by5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBpcGVsaW5lKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgd2l0aFNzbE9wdGlvbnMocHJvZ3JhbVxuICAgIC5jb21tYW5kKCdjcmVhdGUnKVxuICAgIC5kZXNjcmlwdGlvbignQ3JlYXRlIGEgbmV3IHBpcGVsaW5lIHdpdGggdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb24nKVxuICAgIC5yZXF1aXJlZE9wdGlvbignLWYsIC0tZmlsZSA8ZmlsZT4nLCAnUGF0aCB0byBwaXBlbGluZSBwcm9wZXJ0aWVzIEpTT04gZmlsZScpXG4gICAgLm9wdGlvbignLXAsIC0tcHJvamVjdCA8cHJvamVjdD4nLCAnUHJvamVjdCBuYW1lIChmYWxscyBiYWNrIHRvIHZhbHVlIGluIHByb3BzIGZpbGUpJylcbiAgICAub3B0aW9uKCctbywgLS1vcmdhbml6YXRpb24gPG9yZ2FuaXphdGlvbj4nLCAnT3JnYW5pemF0aW9uIG5hbWUgKGZhbGxzIGJhY2sgdG8gdmFsdWUgaW4gcHJvcHMgZmlsZSknKVxuICAgIC5vcHRpb24oJy1uLCAtLW5hbWUgPG5hbWU+JywgJ1BpcGVsaW5lIG5hbWUnKVxuICAgIC5vcHRpb24oJy1hLCAtLWFjY2VzcyA8bW9kaWZpZXI+JywgJ0FjY2VzcyBtb2RpZmllciAocHVibGljfHByaXZhdGUpJywgJ3ByaXZhdGUnKVxuICAgIC5vcHRpb24oJy0tZGVmYXVsdCcsICdTZXQgYXMgZGVmYXVsdCBwaXBlbGluZScsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tYWN0aXZlJywgJ1NldCBwaXBlbGluZSBhcyBhY3RpdmUnLCB0cnVlKVxuICAgIC5vcHRpb24oJy0tbm8tYWN0aXZlJywgJ0NyZWF0ZSB0aGUgcGlwZWxpbmUgYXMgaW5hY3RpdmUnKSlcbiAgICAub3B0aW9uKCctLWRyeS1ydW4nLCAnVmFsaWRhdGUgaW5wdXRzIHdpdGhvdXQgY3JlYXRpbmcgcGlwZWxpbmUnLCBmYWxzZSlcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignQ3JlYXRlIFBpcGVsaW5lJywgJ0NyZWF0aW5nIFBpcGVsaW5lJyk7XG4gICAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgICB0cnkge1xuXG4gICAgICAgIC8vIERpc3BsYXkgcGFyYW1ldGVyc1xuICAgICAgICBwcmludEluZm8oJ0NvbmZpZ3VyYXRpb24nKTtcbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ1Byb2plY3QnOiBvcHRpb25zLnByb2plY3QgfHwgJyhmcm9tIHByb3BzIGZpbGUpJyxcbiAgICAgICAgICAnT3JnYW5pemF0aW9uJzogb3B0aW9ucy5vcmdhbml6YXRpb24gfHwgJyhmcm9tIHByb3BzIGZpbGUpJyxcbiAgICAgICAgICAnTmFtZSc6IG9wdGlvbnMubmFtZSB8fCAnKG5vdCBzZXQpJyxcbiAgICAgICAgICAnQWNjZXNzIE1vZGlmaWVyJzogb3B0aW9ucy5hY2Nlc3MsXG4gICAgICAgICAgJ0RlZmF1bHQgUGlwZWxpbmUnOiBvcHRpb25zLmRlZmF1bHQgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgJ0FjdGl2ZSc6IG9wdGlvbnMuYWN0aXZlID8gJ1llcycgOiAnTm8nLFxuICAgICAgICAgICdQcm9wZXJ0aWVzIEZpbGUnOiBvcHRpb25zLmZpbGUsXG4gICAgICAgICAgJ1NTTCBWZXJpZmljYXRpb24nOiBvcHRpb25zLnZlcmlmeVNzbCA9PT0gZmFsc2UgPyAnRGlzYWJsZWQnIDogJ0VuYWJsZWQnLFxuICAgICAgICAgICdEcnkgUnVuJzogb3B0aW9ucy5kcnlSdW4gPyAnWWVzJyA6ICdObycsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNlY3VyaXR5IHdhcm5pbmcgZm9yIFNTTCB2ZXJpZmljYXRpb24gZGlzYWJsZWRcbiAgICAgICAgcHJpbnRTc2xXYXJuaW5nKG9wdGlvbnMudmVyaWZ5U3NsKTtcblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignRmlsZSBWYWxpZGF0aW9uJyk7XG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZmlsZSBleGlzdHNcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKG9wdGlvbnMuZmlsZSkpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdQcm9wZXJ0aWVzIGZpbGUgbm90IGZvdW5kJywgeyBwYXRoOiBvcHRpb25zLmZpbGUgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtvcHRpb25zLmZpbGV9YCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBmaWxlIGV4dGVuc2lvblxuICAgICAgICBjb25zdCBmaWxlRXh0ID0gcGF0aC5leHRuYW1lKG9wdGlvbnMuZmlsZSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKGZpbGVFeHQgIT09ICcuanNvbicpIHtcbiAgICAgICAgICBwcmludFdhcm5pbmcoJ0ZpbGUgZXh0ZW5zaW9uIGlzIG5vdCAuanNvbicsIHsgZXh0ZW5zaW9uOiBmaWxlRXh0IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsZVN0YXRzID0gZnMuc3RhdFN5bmMob3B0aW9ucy5maWxlKTtcblxuICAgICAgICAvLyBDaGVjayBmaWxlIHNpemVcbiAgICAgICAgaWYgKGZpbGVTdGF0cy5zaXplID4gRklMRV9TSVpFX0xJTUlUUy5QSVBFTElORV9QUk9QUykge1xuICAgICAgICAgIHByaW50RXJyb3IoJ1Byb3BlcnRpZXMgZmlsZSBpcyB0b28gbGFyZ2UnLCB7XG4gICAgICAgICAgICBzaXplOiBmb3JtYXRGaWxlU2l6ZShmaWxlU3RhdHMuc2l6ZSksXG4gICAgICAgICAgICBsaW1pdDogZm9ybWF0RmlsZVNpemUoRklMRV9TSVpFX0xJTUlUUy5QSVBFTElORV9QUk9QUyksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9wZXJ0aWVzIGZpbGUgZXhjZWVkcyBzaXplIGxpbWl0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBwcmludFN1Y2Nlc3MoJ0ZpbGUgdmFsaWRhdGlvbiBwYXNzZWQnKTtcbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ0ZpbGUgUGF0aCc6IG9wdGlvbnMuZmlsZSxcbiAgICAgICAgICAnRmlsZSBTaXplJzogZm9ybWF0RmlsZVNpemUoZmlsZVN0YXRzLnNpemUpLFxuICAgICAgICAgICdFeHRlbnNpb24nOiBmaWxlRXh0LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBSZWFkIGFuZCBwYXJzZSBwcm9wZXJ0aWVzIGZpbGVcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludEluZm8oJ1JlYWRpbmcgcGlwZWxpbmUgcHJvcGVydGllcy4uLicpO1xuXG4gICAgICAgIGNvbnN0IGZpbGVDb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKG9wdGlvbnMuZmlsZSwgJ3V0Zi04Jyk7XG5cbiAgICAgICAgbGV0IHByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBwcm9wcyA9IEpTT04ucGFyc2UoZmlsZUNvbnRlbnQpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHByaW50RXJyb3IoJ0ludmFsaWQgSlNPTiBpbiBwcm9wZXJ0aWVzIGZpbGUnLCB7XG4gICAgICAgICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpLFxuICAgICAgICAgICAgaGludDogJ0Vuc3VyZSB0aGUgZmlsZSBjb250YWlucyB2YWxpZCBKU09OIHN5bnRheCcsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9wZXJ0aWVzIGZpbGUgbXVzdCBjb250YWluIHZhbGlkIEpTT04nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIHByb3BlcnRpZXMgc3RydWN0dXJlXG4gICAgICAgIGlmICh0eXBlb2YgcHJvcHMgIT09ICdvYmplY3QnIHx8IHByb3BzID09PSBudWxsKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignSW52YWxpZCBwcm9wZXJ0aWVzIGZvcm1hdCcsIHtcbiAgICAgICAgICAgIHR5cGU6IHR5cGVvZiBwcm9wcyxcbiAgICAgICAgICAgIGhpbnQ6ICdQcm9wZXJ0aWVzIG11c3QgYmUgYSBKU09OIG9iamVjdCcsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9wZXJ0aWVzIG11c3QgYmUgYSB2YWxpZCBvYmplY3QnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb3BDb3VudCA9IE9iamVjdC5rZXlzKHByb3BzKS5sZW5ndGg7XG5cbiAgICAgICAgcHJpbnRTdWNjZXNzKCdQcm9wZXJ0aWVzIHBhcnNlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ1RvdGFsIEtleXMnOiBwcm9wQ291bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICAnU2FtcGxlIEtleXMnOiBPYmplY3Qua2V5cyhwcm9wcykuc2xpY2UoMCwgNSkuam9pbignLCAnKSArIChwcm9wQ291bnQgPiA1ID8gJy4uLicgOiAnJyksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFZhbGlkYXRlIHByb3BlcnRpZXMgY29udGVudFxuICAgICAgICBpZiAocHJvcENvdW50ID09PSAwKSB7XG4gICAgICAgICAgcHJpbnRXYXJuaW5nKCdQcm9wZXJ0aWVzIG9iamVjdCBpcyBlbXB0eSAtIHBpcGVsaW5lIHdpbGwgaGF2ZSBubyBjb25maWd1cmF0aW9uJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXNvbHZlIHByb2plY3QgJiBvcmdhbml6YXRpb246IHByZWZlciBDTEkgZmxhZ3MsIGZhbGwgYmFjayB0b1xuICAgICAgICAvLyB2YWx1ZXMgZW1iZWRkZWQgaW5zaWRlIHRoZSBwcm9wcyBmaWxlIChidWlsZGVyUHJvcHMpLlxuICAgICAgICBjb25zdCByZXNvbHZlZFByb2plY3QgPSBvcHRpb25zLnByb2plY3QgPz8gKHByb3BzLnByb2plY3QgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRPcmdhbml6YXRpb24gPSBvcHRpb25zLm9yZ2FuaXphdGlvbiA/PyAocHJvcHMub3JnYW5pemF0aW9uIGFzIHN0cmluZyB8IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgaWYgKCFyZXNvbHZlZFByb2plY3QpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdQcm9qZWN0IGlzIHJlcXVpcmVkJywge1xuICAgICAgICAgICAgaGludDogJ1Byb3ZpZGUgLXAvLS1wcm9qZWN0IGZsYWcgb3IgaW5jbHVkZSBcInByb2plY3RcIiBpbiB0aGUgcHJvcHMgZmlsZScsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9qZWN0IGlzIHJlcXVpcmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyZXNvbHZlZE9yZ2FuaXphdGlvbikge1xuICAgICAgICAgIHByaW50RXJyb3IoJ09yZ2FuaXphdGlvbiBpcyByZXF1aXJlZCcsIHtcbiAgICAgICAgICAgIGhpbnQ6ICdQcm92aWRlIC1vLy0tb3JnYW5pemF0aW9uIGZsYWcgb3IgaW5jbHVkZSBcIm9yZ2FuaXphdGlvblwiIGluIHRoZSBwcm9wcyBmaWxlJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ09yZ2FuaXphdGlvbiBpcyByZXF1aXJlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQnVpbGQgcmVxdWVzdCBwYXlsb2FkIOKAlCByZXNvbHZlIHBpcGVsaW5lTmFtZSB1c2luZyBzYW1lIHN0cmF0ZWd5IGFzIHBpcGVsaW5lLWJ1aWxkZXIudHM6XG4gICAgICAgIC8vICAgcHJvcHMucGlwZWxpbmVOYW1lID8/IGAke29yZ2FuaXphdGlvbn0tJHtwcm9qZWN0fS1waXBlbGluZWBcbiAgICAgICAgY29uc3Qgc2FuaXRpemUgPSAoczogc3RyaW5nKSA9PiBzLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCAnXycpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkUGlwZWxpbmVOYW1lID0gb3B0aW9ucy5uYW1lXG4gICAgICAgICAgPz8gKHByb3BzLnBpcGVsaW5lTmFtZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQpXG4gICAgICAgICAgPz8gYCR7c2FuaXRpemUocmVzb2x2ZWRPcmdhbml6YXRpb24pfS0ke3Nhbml0aXplKHJlc29sdmVkUHJvamVjdCl9LXBpcGVsaW5lYDtcblxuICAgICAgICBjb25zdCBwYXlsb2FkOiBDcmVhdGVQaXBlbGluZVJlcXVlc3QgPSB7XG4gICAgICAgICAgcHJvamVjdDogcmVzb2x2ZWRQcm9qZWN0LFxuICAgICAgICAgIG9yZ2FuaXphdGlvbjogcmVzb2x2ZWRPcmdhbml6YXRpb24sXG4gICAgICAgICAgcGlwZWxpbmVOYW1lOiByZXNvbHZlZFBpcGVsaW5lTmFtZSxcbiAgICAgICAgICBwcm9wcyxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBBZGQgb3B0aW9uYWwgZmllbGRzIG9ubHkgaWYgcHJvdmlkZWRcbiAgICAgICAgaWYgKG9wdGlvbnMuYWNjZXNzKSB7XG4gICAgICAgICAgcGF5bG9hZC5hY2Nlc3NNb2RpZmllciA9IG9wdGlvbnMuYWNjZXNzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmRlZmF1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHBheWxvYWQuaXNEZWZhdWx0ID0gb3B0aW9ucy5kZWZhdWx0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmFjdGl2ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcGF5bG9hZC5pc0FjdGl2ZSA9IG9wdGlvbnMuYWN0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRHJ5IHJ1biBtb2RlXG4gICAgICAgIGlmIChvcHRpb25zLmRyeVJ1bikge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgICBwcmludFNlY3Rpb24oJ0RyeSBSdW4gLSBSZXF1ZXN0IFByZXZpZXcnKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShwYXlsb2FkLCBudWxsLCAyKSk7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50U3VjY2Vzcygn4pyTIFZhbGlkYXRpb24gY29tcGxldGUgLSBubyBwaXBlbGluZSBjcmVhdGVkIChkcnkgcnVuIG1vZGUpJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50SW5mbygnVG8gY3JlYXRlIHRoZSBwaXBlbGluZSwgcnVuIHRoZSBjb21tYW5kIHdpdGhvdXQgLS1kcnktcnVuJyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIGF1dGhlbnRpY2F0ZWQgQVBJIGNsaWVudFxuICAgICAgICBjb25zdCBjbGllbnQgPSBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50KG9wdGlvbnMpO1xuICAgICAgICBjb25zdCBjb25maWcgPSBjbGllbnQuZ2V0Q29uZmlnKCk7XG5cbiAgICAgICAgLy8gQ3JlYXRlIHBpcGVsaW5lXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdDcmVhdGluZyBQaXBlbGluZScpO1xuXG4gICAgICAgIGNvbnN0IHNwaW5uZXIgPSBvcmEoJ0NyZWF0aW5nIHBpcGVsaW5lLi4uJykuc3RhcnQoKTtcbiAgICAgICAgbGV0IHJhd1Jlc3BvbnNlOiBQaXBlbGluZVJlc3BvbnNlO1xuICAgICAgICBsZXQgcmVxdWVzdER1cmF0aW9uOiBudW1iZXI7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVxdWVzdFN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICByYXdSZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PFBpcGVsaW5lUmVzcG9uc2U+KFxuICAgICAgICAgICAgY29uZmlnLmFwaS5waXBlbGluZVVybCxcbiAgICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXF1ZXN0RHVyYXRpb24gPSBEYXRlLm5vdygpIC0gcmVxdWVzdFN0YXJ0O1xuICAgICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnUGlwZWxpbmUgY3JlYXRlZCcpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHNwaW5uZXIuZmFpbCgnUGlwZWxpbmUgY3JlYXRpb24gZmFpbGVkJyk7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwaXBlbGluZSA9IGV4dHJhY3RTaW5nbGVSZXNwb25zZTxQaXBlbGluZT4ocmF3UmVzcG9uc2UsICdwaXBlbGluZScsICdpZCcpO1xuXG4gICAgICAgIGlmICghcGlwZWxpbmU/LmlkKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignSW52YWxpZCBwaXBlbGluZSByZXNwb25zZScsIHtcbiAgICAgICAgICAgIHJlc3BvbnNlS2V5czogcmF3UmVzcG9uc2UgPyBPYmplY3Qua2V5cyhyYXdSZXNwb25zZSkgOiAnKG51bGwpJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BpcGVsaW5lIGNyZWF0aW9uIGZhaWxlZCAtIG5vIHZhbGlkIHBpcGVsaW5lIGRhdGEgcmVjZWl2ZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCfinJMgUGlwZWxpbmUgQ3JlYXRlZCBTdWNjZXNzZnVsbHknKTtcblxuICAgICAgICAvLyBEaXNwbGF5IGNyZWF0ZWQgcGlwZWxpbmUgaW5mb1xuICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAnUGlwZWxpbmUgSUQnOiBncmVlbihib2xkKHBpcGVsaW5lLmlkKSksXG4gICAgICAgICAgJ1Byb2plY3QnOiBwaXBlbGluZS5wcm9qZWN0LFxuICAgICAgICAgICdPcmdhbml6YXRpb24nOiBwaXBlbGluZS5vcmdhbml6YXRpb24sXG4gICAgICAgICAgJ05hbWUnOiBwaXBlbGluZS5waXBlbGluZU5hbWUgfHwgJyhub3Qgc2V0KScsXG4gICAgICAgICAgJ0FjY2Vzcyc6IHBpcGVsaW5lLmFjY2Vzc01vZGlmaWVyIHx8ICdwcml2YXRlJyxcbiAgICAgICAgICAnRGVmYXVsdCc6IHBpcGVsaW5lLmlzRGVmYXVsdCA/ICdZZXMnIDogJ05vJyxcbiAgICAgICAgICAnQWN0aXZlJzogcGlwZWxpbmUuaXNBY3RpdmUgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgJ1Byb3BlcnRpZXMnOiBwaXBlbGluZS5wcm9wcyA/IGAke09iamVjdC5rZXlzKHBpcGVsaW5lLnByb3BzKS5sZW5ndGh9IGtleXNgIDogJyhub3QgcmV0dXJuZWQpJyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHBpcGVsaW5lLmNyZWF0ZWRBdCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgICdDcmVhdGVkIEF0JzogcGlwZWxpbmUuY3JlYXRlZEF0LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUGVyZm9ybWFuY2UgbWV0cmljc1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICdFeGVjdXRpb24gSUQnOiBleGVjdXRpb25JZCxcbiAgICAgICAgICAnUmVxdWVzdCBEdXJhdGlvbic6IGZvcm1hdER1cmF0aW9uKHJlcXVlc3REdXJhdGlvbiksXG4gICAgICAgICAgJ1RvdGFsIER1cmF0aW9uJzogZm9ybWF0RHVyYXRpb24oRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNhdmUgcGlwZWxpbmUgaW5mbyB0byBmaWxlXG4gICAgICAgIGNvbnN0IG91dHB1dERpciA9ICcuL291dHB1dCc7XG4gICAgICAgIGVuc3VyZU91dHB1dERpcmVjdG9yeShvdXRwdXREaXIpO1xuXG4gICAgICAgIGNvbnN0IG91dHB1dEZpbGUgPSBwYXRoLmpvaW4ob3V0cHV0RGlyLCBgcGlwZWxpbmUtJHtwaXBlbGluZS5pZH0uanNvbmApO1xuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKG91dHB1dEZpbGUsIEpTT04uc3RyaW5naWZ5KHBpcGVsaW5lLCBudWxsLCAyKSk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludFN1Y2Nlc3MoJ1BpcGVsaW5lIGRldGFpbHMgc2F2ZWQgdG8gZmlsZScpO1xuICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAnT3V0cHV0IEZpbGUnOiBvdXRwdXRGaWxlLFxuICAgICAgICAgICdGaWxlIFNpemUnOiBmb3JtYXRGaWxlU2l6ZShmcy5zdGF0U3luYyhvdXRwdXRGaWxlKS5zaXplKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gTmV4dCBzdGVwc1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignTmV4dCBTdGVwcycpO1xuICAgICAgICBjb25zb2xlLmxvZyhkaW0oJ1lvdSBjYW4gbm93OicpKTtcbiAgICAgICAgY29uc29sZS5sb2coYCAgJHtjeWFuKCfigKInKX0gRGVwbG95OiAke2JvbGQoYGRlcGxveSAtLWlkICR7cGlwZWxpbmUuaWR9YCl9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKGAgICR7Y3lhbign4oCiJyl9IFZpZXc6ICR7Ym9sZChgZ2V0LXBpcGVsaW5lIC0taWQgJHtwaXBlbGluZS5pZH1gKX1gKTtcbiAgICAgICAgY29uc29sZS5sb2coYCAgJHtjeWFuKCfigKInKX0gQVBJOiAke2NvbmZpZy5hcGkuYmFzZVVybH0ke2NvbmZpZy5hcGkucGlwZWxpbmVVcmx9LyR7cGlwZWxpbmUuaWR9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgY29tbWFuZDogJ2NyZWF0ZS1waXBlbGluZScsXG4gICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgIHByb2plY3Q6IG9wdGlvbnMucHJvamVjdCxcbiAgICAgICAgICAgIG9yZ2FuaXphdGlvbjogb3B0aW9ucy5vcmdhbml6YXRpb24sXG4gICAgICAgICAgICBmaWxlOiBvcHRpb25zLmZpbGUsXG4gICAgICAgICAgICB2ZXJpZnlTc2w6IG9wdGlvbnMudmVyaWZ5U3NsLFxuICAgICAgICAgICAgZHJ5UnVuOiBvcHRpb25zLmRyeVJ1bixcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn0iXX0=
|
|
315
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBpcGVsaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2NyZWF0ZS1waXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQ3RCLE9BQU8sSUFBSSxNQUFNLFlBQVksQ0FBQztBQUM5QixPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25ILE9BQU8sRUFBK0YsTUFBTSxtQkFBbUIsQ0FBQztBQUNoSSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixFQUFFLDhCQUE4QixFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hNLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqSixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7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QUMzQixJQUFJLEVBQUUsSUFBSTtnQkFDVixPQUFPLEVBQUU7b0JBQ1AsT0FBTyxFQUFFLGlCQUFpQjtvQkFDMUIsV0FBVztvQkFDWCxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87b0JBQ3hCLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtvQkFDbEMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7b0JBQzVCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtpQkFDdkI7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCBvcmEgZnJvbSAnb3JhJztcbmltcG9ydCBwaWNvIGZyb20gJ3BpY29jb2xvcnMnO1xuaW1wb3J0IHsgZm9ybWF0RHVyYXRpb24sIGZvcm1hdEZpbGVTaXplLCBGSUxFX1NJWkVfTElNSVRTLCBkZWZhdWx0UGlwZWxpbmVOYW1lIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgdHlwZSBQaXBlbGluZSwgdHlwZSBQaXBlbGluZVJlc3BvbnNlLCB0eXBlIENyZWF0ZVBpcGVsaW5lUmVxdWVzdCwgdHlwZSBQbGF0Zm9ybURlcGxveUNvbmZpZyB9IGZyb20gJy4uL3R5cGVzL2luZGV4LmpzJztcbmltcG9ydCB7IHByaW50Q29tbWFuZEhlYWRlciwgcHJpbnRTc2xXYXJuaW5nLCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50LCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMsIHdpdGhTc2xPcHRpb25zLCB3aXRoUHJvZmlsZU9wdGlvbiwgd2l0aFJlZ2lvbk9wdGlvbiB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgcnVuRGVwbG95IH0gZnJvbSAnLi4vdXRpbHMvZGVwbG95LXJ1bm5lci5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IsIFZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgZW5zdXJlT3V0cHV0RGlyZWN0b3J5LCBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgZmV0Y2hQaXBlbGluZVByb3BzIH0gZnJvbSAnLi4vdXRpbHMvcGlwZWxpbmUtY29uZmlnLmpzJztcbmltcG9ydCB7IGV4dHJhY3RTaW5nbGVSZXNwb25zZSB9IGZyb20gJy4uL3V0aWxzL3Jlc3BvbnNlLXV0aWxzLmpzJztcbmltcG9ydCB7IHJlbGF4VGxzRm9yQ2xpIH0gZnJvbSAnLi4vdXRpbHMvdGxzLmpzJztcblxuY29uc3QgeyBib2xkLCBjeWFuLCBkaW0sIGdyZWVuIH0gPSBwaWNvO1xuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYGNyZWF0ZS1waXBlbGluZWAgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBBY2NlcHRzIGEgcGlwZWxpbmUgcHJvcGVydGllcyBKU09OIGZpbGUsIHZhbGlkYXRlcyBpdCwgcmVzb2x2ZXNcbiAqIHByb2plY3Qvb3JnYW5pemF0aW9uIGZyb20gQ0xJIGZsYWdzIG9yIHRoZSBwcm9wcyBmaWxlLCBhbmRcbiAqIGNyZWF0ZXMgdGhlIHBpcGVsaW5lIHZpYSB0aGUgcGxhdGZvcm0gQVBJLlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHJvb3QgQ29tbWFuZGVyIHByb2dyYW0gaW5zdGFuY2UgdG8gYXR0YWNoIHRoZSBjb21tYW5kIHRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGlwZWxpbmUocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICB3aXRoU3NsT3B0aW9ucyhcbiAgICB3aXRoUmVnaW9uT3B0aW9uKFxuICAgICAgd2l0aFByb2ZpbGVPcHRpb24ocHJvZ3JhbVxuICAgICAgICAuY29tbWFuZCgnY3JlYXRlJylcbiAgICAgICAgLmRlc2NyaXB0aW9uKCdDcmVhdGUgYSBuZXcgcGlwZWxpbmUg4oCUIGFuZCBvcHRpb25hbGx5IGRlcGxveSBpdCB3aXRoIC0tZGVwbG95JylcbiAgICAgICAgLnJlcXVpcmVkT3B0aW9uKCctZiwgLS1maWxlIDxmaWxlPicsICdQYXRoIHRvIHBpcGVsaW5lIHByb3BlcnRpZXMgSlNPTiBmaWxlJylcbiAgICAgICAgLm9wdGlvbignLXAsIC0tcHJvamVjdCA8cHJvamVjdD4nLCAnUHJvamVjdCBuYW1lIChmYWxscyBiYWNrIHRvIHZhbHVlIGluIHByb3BzIGZpbGUpJylcbiAgICAgICAgLm9wdGlvbignLW8sIC0tb3JnYW5pemF0aW9uIDxvcmdhbml6YXRpb24+JywgJ09yZ2FuaXphdGlvbiBuYW1lIChmYWxscyBiYWNrIHRvIHZhbHVlIGluIHByb3BzIGZpbGUpJylcbiAgICAgICAgLm9wdGlvbignLW4sIC0tbmFtZSA8bmFtZT4nLCAnUGlwZWxpbmUgbmFtZScpXG4gICAgICAgIC5vcHRpb24oJy1hLCAtLWFjY2VzcyA8bW9kaWZpZXI+JywgJ0FjY2VzcyBtb2RpZmllciAocHVibGljfHByaXZhdGUpJywgJ3ByaXZhdGUnKVxuICAgICAgICAub3B0aW9uKCctLWRlZmF1bHQnLCAnU2V0IGFzIGRlZmF1bHQgcGlwZWxpbmUnLCBmYWxzZSlcbiAgICAgICAgLm9wdGlvbignLS1hY3RpdmUnLCAnU2V0IHBpcGVsaW5lIGFzIGFjdGl2ZScsIHRydWUpXG4gICAgICAgIC5vcHRpb24oJy0tbm8tYWN0aXZlJywgJ0NyZWF0ZSB0aGUgcGlwZWxpbmUgYXMgaW5hY3RpdmUnKVxuICAgICAgICAvLyAtLWRlcGxveTogYWZ0ZXIgY3JlYXRpbmcgdGhlIHJlY29yZCwgcnVuIHRoZSBzYW1lIENESyBkZXBsb3kgKyBBUk5cbiAgICAgICAgLy8gcmVnaXN0cmF0aW9uIGFzIGBwaXBlbGluZSBkZXBsb3kgLS1pZGAgKHNoYXJlZCBydW5EZXBsb3kpLiBUaGUgZmxhZ3NcbiAgICAgICAgLy8gYmVsb3cgYXBwbHkgb25seSB3aXRoIC0tZGVwbG95LlxuICAgICAgICAub3B0aW9uKCctLWRlcGxveScsICdEZXBsb3kgdGhlIHBpcGVsaW5lIHdpdGggQVdTIENESyBpbW1lZGlhdGVseSBhZnRlciBjcmVhdGluZyBpdCcsIGZhbHNlKVxuICAgICAgICAub3B0aW9uKCctLXJlcXVpcmUtYXBwcm92YWwgPGFwcHJvdmFsPicsICdEZXBsb3kgYXBwcm92YWwgbGV2ZWw6IG5ldmVyfGFueS1jaGFuZ2V8YnJvYWRlbmluZyAod2l0aCAtLWRlcGxveSknLCAnbmV2ZXInKVxuICAgICAgICAub3B0aW9uKCctLW91dHB1dCA8ZGlyPicsICdDREsgb3V0cHV0IGRpcmVjdG9yeSAod2l0aCAtLWRlcGxveSknLCAnY2RrLm91dCcpXG4gICAgICAgIC5vcHRpb24oJy0tc3RvcmUtdG9rZW5zJywgJ0RlcGxveSBhdXRoIHZpYSBBV1MgU2VjcmV0cyBNYW5hZ2VyIHRva2VuICh3aXRoIC0tZGVwbG95OyByZXF1aXJlcyBQTEFURk9STV9TRUNSRVRfTkFNRSknLCBmYWxzZSkpLFxuICAgICksXG4gIClcbiAgICAub3B0aW9uKCctLWRyeS1ydW4nLCAnVmFsaWRhdGUgaW5wdXRzIHdpdGhvdXQgY3JlYXRpbmcgcGlwZWxpbmUnLCBmYWxzZSlcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignQ3JlYXRlIFBpcGVsaW5lJywgJ0NyZWF0aW5nIFBpcGVsaW5lJyk7XG4gICAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgICB0cnkge1xuXG4gICAgICAgIC8vIERpc3BsYXkgcGFyYW1ldGVyc1xuICAgICAgICBwcmludEluZm8oJ0NvbmZpZ3VyYXRpb24nKTtcbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ1Byb2plY3QnOiBvcHRpb25zLnByb2plY3QgfHwgJyhmcm9tIHByb3BzIGZpbGUpJyxcbiAgICAgICAgICAnT3JnYW5pemF0aW9uJzogb3B0aW9ucy5vcmdhbml6YXRpb24gfHwgJyhmcm9tIHByb3BzIGZpbGUpJyxcbiAgICAgICAgICAnTmFtZSc6IG9wdGlvbnMubmFtZSB8fCAnKG5vdCBzZXQpJyxcbiAgICAgICAgICAnQWNjZXNzIE1vZGlmaWVyJzogb3B0aW9ucy5hY2Nlc3MsXG4gICAgICAgICAgJ0RlZmF1bHQgUGlwZWxpbmUnOiBvcHRpb25zLmRlZmF1bHQgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgJ0FjdGl2ZSc6IG9wdGlvbnMuYWN0aXZlID8gJ1llcycgOiAnTm8nLFxuICAgICAgICAgICdEZXBsb3kgQWZ0ZXIgQ3JlYXRlJzogb3B0aW9ucy5kZXBsb3kgPyBgWWVzIChwcm9maWxlOiAke29wdGlvbnMucHJvZmlsZSB8fCAnZGVmYXVsdCd9KWAgOiAnTm8nLFxuICAgICAgICAgICdQcm9wZXJ0aWVzIEZpbGUnOiBvcHRpb25zLmZpbGUsXG4gICAgICAgICAgJ1NTTCBWZXJpZmljYXRpb24nOiBvcHRpb25zLnZlcmlmeVNzbCA9PT0gZmFsc2UgPyAnRGlzYWJsZWQnIDogJ0VuYWJsZWQnLFxuICAgICAgICAgICdEcnkgUnVuJzogb3B0aW9ucy5kcnlSdW4gPyAnWWVzJyA6ICdObycsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNlY3VyaXR5IHdhcm5pbmcgZm9yIFNTTCB2ZXJpZmljYXRpb24gZGlzYWJsZWRcbiAgICAgICAgcHJpbnRTc2xXYXJuaW5nKG9wdGlvbnMudmVyaWZ5U3NsKTtcblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignRmlsZSBWYWxpZGF0aW9uJyk7XG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZmlsZSBleGlzdHNcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKG9wdGlvbnMuZmlsZSkpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdQcm9wZXJ0aWVzIGZpbGUgbm90IGZvdW5kJywgeyBwYXRoOiBvcHRpb25zLmZpbGUgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7b3B0aW9ucy5maWxlfWAsICdmaWxlJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBmaWxlIGV4dGVuc2lvblxuICAgICAgICBjb25zdCBmaWxlRXh0ID0gcGF0aC5leHRuYW1lKG9wdGlvbnMuZmlsZSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKGZpbGVFeHQgIT09ICcuanNvbicpIHtcbiAgICAgICAgICBwcmludFdhcm5pbmcoJ0ZpbGUgZXh0ZW5zaW9uIGlzIG5vdCAuanNvbicsIHsgZXh0ZW5zaW9uOiBmaWxlRXh0IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsZVN0YXRzID0gZnMuc3RhdFN5bmMob3B0aW9ucy5maWxlKTtcblxuICAgICAgICAvLyBDaGVjayBmaWxlIHNpemVcbiAgICAgICAgaWYgKGZpbGVTdGF0cy5zaXplID4gRklMRV9TSVpFX0xJTUlUUy5QSVBFTElORV9QUk9QUykge1xuICAgICAgICAgIHByaW50RXJyb3IoJ1Byb3BlcnRpZXMgZmlsZSBpcyB0b28gbGFyZ2UnLCB7XG4gICAgICAgICAgICBzaXplOiBmb3JtYXRGaWxlU2l6ZShmaWxlU3RhdHMuc2l6ZSksXG4gICAgICAgICAgICBsaW1pdDogZm9ybWF0RmlsZVNpemUoRklMRV9TSVpFX0xJTUlUUy5QSVBFTElORV9QUk9QUyksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUHJvcGVydGllcyBmaWxlIGV4Y2VlZHMgc2l6ZSBsaW1pdCcsICdmaWxlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBwcmludFN1Y2Nlc3MoJ0ZpbGUgdmFsaWRhdGlvbiBwYXNzZWQnKTtcbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ0ZpbGUgUGF0aCc6IG9wdGlvbnMuZmlsZSxcbiAgICAgICAgICAnRmlsZSBTaXplJzogZm9ybWF0RmlsZVNpemUoZmlsZVN0YXRzLnNpemUpLFxuICAgICAgICAgICdFeHRlbnNpb24nOiBmaWxlRXh0LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBSZWFkIGFuZCBwYXJzZSBwcm9wZXJ0aWVzIGZpbGVcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludEluZm8oJ1JlYWRpbmcgcGlwZWxpbmUgcHJvcGVydGllcy4uLicpO1xuXG4gICAgICAgIGNvbnN0IGZpbGVDb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKG9wdGlvbnMuZmlsZSwgJ3V0Zi04Jyk7XG5cbiAgICAgICAgbGV0IHByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBwcm9wcyA9IEpTT04ucGFyc2UoZmlsZUNvbnRlbnQpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHByaW50RXJyb3IoJ0ludmFsaWQgSlNPTiBpbiBwcm9wZXJ0aWVzIGZpbGUnLCB7XG4gICAgICAgICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpLFxuICAgICAgICAgICAgaGludDogJ0Vuc3VyZSB0aGUgZmlsZSBjb250YWlucyB2YWxpZCBKU09OIHN5bnRheCcsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUHJvcGVydGllcyBmaWxlIG11c3QgY29udGFpbiB2YWxpZCBKU09OJywgJ2ZpbGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIHByb3BlcnRpZXMgc3RydWN0dXJlXG4gICAgICAgIGlmICh0eXBlb2YgcHJvcHMgIT09ICdvYmplY3QnIHx8IHByb3BzID09PSBudWxsKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignSW52YWxpZCBwcm9wZXJ0aWVzIGZvcm1hdCcsIHtcbiAgICAgICAgICAgIHR5cGU6IHR5cGVvZiBwcm9wcyxcbiAgICAgICAgICAgIGhpbnQ6ICdQcm9wZXJ0aWVzIG11c3QgYmUgYSBKU09OIG9iamVjdCcsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUHJvcGVydGllcyBtdXN0IGJlIGEgdmFsaWQgb2JqZWN0JywgJ2ZpbGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb3BDb3VudCA9IE9iamVjdC5rZXlzKHByb3BzKS5sZW5ndGg7XG5cbiAgICAgICAgcHJpbnRTdWNjZXNzKCdQcm9wZXJ0aWVzIHBhcnNlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ1RvdGFsIEtleXMnOiBwcm9wQ291bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICAnU2FtcGxlIEtleXMnOiBPYmplY3Qua2V5cyhwcm9wcykuc2xpY2UoMCwgNSkuam9pbignLCAnKSArIChwcm9wQ291bnQgPiA1ID8gJy4uLicgOiAnJyksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFZhbGlkYXRlIHByb3BlcnRpZXMgY29udGVudFxuICAgICAgICBpZiAocHJvcENvdW50ID09PSAwKSB7XG4gICAgICAgICAgcHJpbnRXYXJuaW5nKCdQcm9wZXJ0aWVzIG9iamVjdCBpcyBlbXB0eSAtIHBpcGVsaW5lIHdpbGwgaGF2ZSBubyBjb25maWd1cmF0aW9uJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXNvbHZlIHByb2plY3QgJiBvcmdhbml6YXRpb246IHByZWZlciBDTEkgZmxhZ3MsIGZhbGwgYmFjayB0b1xuICAgICAgICAvLyB2YWx1ZXMgZW1iZWRkZWQgaW5zaWRlIHRoZSBwcm9wcyBmaWxlIChidWlsZGVyUHJvcHMpLlxuICAgICAgICBjb25zdCByZXNvbHZlZFByb2plY3QgPSBvcHRpb25zLnByb2plY3QgPz8gKHByb3BzLnByb2plY3QgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRPcmdhbml6YXRpb24gPSBvcHRpb25zLm9yZ2FuaXphdGlvbiA/PyAocHJvcHMub3JnYW5pemF0aW9uIGFzIHN0cmluZyB8IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgaWYgKCFyZXNvbHZlZFByb2plY3QpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdQcm9qZWN0IGlzIHJlcXVpcmVkJywge1xuICAgICAgICAgICAgaGludDogJ1Byb3ZpZGUgLXAvLS1wcm9qZWN0IGZsYWcgb3IgaW5jbHVkZSBcInByb2plY3RcIiBpbiB0aGUgcHJvcHMgZmlsZScsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUHJvamVjdCBpcyByZXF1aXJlZCcsICdwcm9qZWN0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyZXNvbHZlZE9yZ2FuaXphdGlvbikge1xuICAgICAgICAgIHByaW50RXJyb3IoJ09yZ2FuaXphdGlvbiBpcyByZXF1aXJlZCcsIHtcbiAgICAgICAgICAgIGhpbnQ6ICdQcm92aWRlIC1vLy0tb3JnYW5pemF0aW9uIGZsYWcgb3IgaW5jbHVkZSBcIm9yZ2FuaXphdGlvblwiIGluIHRoZSBwcm9wcyBmaWxlJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdPcmdhbml6YXRpb24gaXMgcmVxdWlyZWQnLCAnb3JnYW5pemF0aW9uJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXNvbHZlIHBpcGVsaW5lTmFtZSB3aXRoIHRoZSBzaGFyZWQgZGVmYXVsdCAobWlycm9ycyBwaXBlbGluZS1jb3JlJ3NcbiAgICAgICAgLy8gcGlwZWxpbmUtY29uZmlndXJhdGlvbi50cykgc28gY3JlYXRlICsgcmVnaXN0cnkgKyBDREsgYWxsIGFncmVlLlxuICAgICAgICBjb25zdCByZXNvbHZlZFBpcGVsaW5lTmFtZSA9IG9wdGlvbnMubmFtZVxuICAgICAgICAgID8/IChwcm9wcy5waXBlbGluZU5hbWUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKVxuICAgICAgICAgID8/IGRlZmF1bHRQaXBlbGluZU5hbWUocmVzb2x2ZWRPcmdhbml6YXRpb24sIHJlc29sdmVkUHJvamVjdCk7XG5cbiAgICAgICAgY29uc3QgcGF5bG9hZDogQ3JlYXRlUGlwZWxpbmVSZXF1ZXN0ID0ge1xuICAgICAgICAgIHByb2plY3Q6IHJlc29sdmVkUHJvamVjdCxcbiAgICAgICAgICBvcmdhbml6YXRpb246IHJlc29sdmVkT3JnYW5pemF0aW9uLFxuICAgICAgICAgIHBpcGVsaW5lTmFtZTogcmVzb2x2ZWRQaXBlbGluZU5hbWUsXG4gICAgICAgICAgcHJvcHMsXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gQWRkIG9wdGlvbmFsIGZpZWxkcyBvbmx5IGlmIHByb3ZpZGVkXG4gICAgICAgIGlmIChvcHRpb25zLmFjY2Vzcykge1xuICAgICAgICAgIHBheWxvYWQuYWNjZXNzTW9kaWZpZXIgPSBvcHRpb25zLmFjY2VzcztcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5kZWZhdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBwYXlsb2FkLmlzRGVmYXVsdCA9IG9wdGlvbnMuZGVmYXVsdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5hY3RpdmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHBheWxvYWQuaXNBY3RpdmUgPSBvcHRpb25zLmFjdGl2ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERyeSBydW4gbW9kZVxuICAgICAgICBpZiAob3B0aW9ucy5kcnlSdW4pIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRTZWN0aW9uKCdEcnkgUnVuIC0gUmVxdWVzdCBQcmV2aWV3Jyk7XG4gICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocGF5bG9hZCwgbnVsbCwgMikpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgICBwcmludFN1Y2Nlc3MoJ+KckyBWYWxpZGF0aW9uIGNvbXBsZXRlIC0gbm8gcGlwZWxpbmUgY3JlYXRlZCAoZHJ5IHJ1biBtb2RlKScpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgICBpZiAob3B0aW9ucy5kZXBsb3kpIHtcbiAgICAgICAgICAgIHByaW50SW5mbygnV2l0aCAtLWRlcGxveSwgdGhlIHBpcGVsaW5lIHdvdWxkIGJlIGRlcGxveWVkIHZpYSBDREsgYWZ0ZXIgY3JlYXRpb24nLCB7XG4gICAgICAgICAgICAgIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSB8fCAnKGRlZmF1bHQpJyxcbiAgICAgICAgICAgICAgcmVnaW9uOiBvcHRpb25zLnJlZ2lvbiB8fCAnKGRlZmF1bHQpJyxcbiAgICAgICAgICAgICAgcmVxdWlyZUFwcHJvdmFsOiBvcHRpb25zLnJlcXVpcmVBcHByb3ZhbCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwcmludEluZm8oJ1RvIGNyZWF0ZSB0aGUgcGlwZWxpbmUsIHJ1biB0aGUgY29tbWFuZCB3aXRob3V0IC0tZHJ5LXJ1bicpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBhdXRoZW50aWNhdGVkIEFQSSBjbGllbnRcbiAgICAgICAgY29uc3QgY2xpZW50ID0gY3JlYXRlQXV0aGVudGljYXRlZENsaWVudChvcHRpb25zKTtcbiAgICAgICAgY29uc3QgY29uZmlnID0gY2xpZW50LmdldENvbmZpZygpO1xuXG4gICAgICAgIC8vIENyZWF0ZSBwaXBlbGluZVxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignQ3JlYXRpbmcgUGlwZWxpbmUnKTtcblxuICAgICAgICBjb25zdCBzcGlubmVyID0gb3JhKCdDcmVhdGluZyBwaXBlbGluZS4uLicpLnN0YXJ0KCk7XG4gICAgICAgIGxldCByYXdSZXNwb25zZTogUGlwZWxpbmVSZXNwb25zZTtcbiAgICAgICAgbGV0IHJlcXVlc3REdXJhdGlvbjogbnVtYmVyO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlcXVlc3RTdGFydCA9IERhdGUubm93KCk7XG4gICAgICAgICAgcmF3UmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdDxQaXBlbGluZVJlc3BvbnNlPihcbiAgICAgICAgICAgIGNvbmZpZy5hcGkucGlwZWxpbmVVcmwsXG4gICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmVxdWVzdER1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHJlcXVlc3RTdGFydDtcbiAgICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ1BpcGVsaW5lIGNyZWF0ZWQnKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBzcGlubmVyLmZhaWwoJ1BpcGVsaW5lIGNyZWF0aW9uIGZhaWxlZCcpO1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGlwZWxpbmUgPSBleHRyYWN0U2luZ2xlUmVzcG9uc2U8UGlwZWxpbmU+KHJhd1Jlc3BvbnNlLCAncGlwZWxpbmUnLCAnaWQnKTtcblxuICAgICAgICBpZiAoIXBpcGVsaW5lPy5pZCkge1xuICAgICAgICAgIHByaW50RXJyb3IoJ0ludmFsaWQgcGlwZWxpbmUgcmVzcG9uc2UnLCB7XG4gICAgICAgICAgICByZXNwb25zZUtleXM6IHJhd1Jlc3BvbnNlID8gT2JqZWN0LmtleXMocmF3UmVzcG9uc2UpIDogJyhudWxsKScsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQaXBlbGluZSBjcmVhdGlvbiBmYWlsZWQgLSBubyB2YWxpZCBwaXBlbGluZSBkYXRhIHJlY2VpdmVkJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbign4pyTIFBpcGVsaW5lIENyZWF0ZWQgU3VjY2Vzc2Z1bGx5Jyk7XG5cbiAgICAgICAgLy8gRGlzcGxheSBjcmVhdGVkIHBpcGVsaW5lIGluZm9cbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ1BpcGVsaW5lIElEJzogZ3JlZW4oYm9sZChwaXBlbGluZS5pZCkpLFxuICAgICAgICAgICdQcm9qZWN0JzogcGlwZWxpbmUucHJvamVjdCxcbiAgICAgICAgICAnT3JnYW5pemF0aW9uJzogcGlwZWxpbmUub3JnYW5pemF0aW9uLFxuICAgICAgICAgICdOYW1lJzogcGlwZWxpbmUucGlwZWxpbmVOYW1lIHx8ICcobm90IHNldCknLFxuICAgICAgICAgICdBY2Nlc3MnOiBwaXBlbGluZS5hY2Nlc3NNb2RpZmllciB8fCAncHJpdmF0ZScsXG4gICAgICAgICAgJ0RlZmF1bHQnOiBwaXBlbGluZS5pc0RlZmF1bHQgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgJ0FjdGl2ZSc6IHBpcGVsaW5lLmlzQWN0aXZlID8gJ1llcycgOiAnTm8nLFxuICAgICAgICAgICdQcm9wZXJ0aWVzJzogcGlwZWxpbmUucHJvcHMgPyBgJHtPYmplY3Qua2V5cyhwaXBlbGluZS5wcm9wcykubGVuZ3RofSBrZXlzYCA6ICcobm90IHJldHVybmVkKScsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChwaXBlbGluZS5jcmVhdGVkQXQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICAnQ3JlYXRlZCBBdCc6IHBpcGVsaW5lLmNyZWF0ZWRBdCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBlcmZvcm1hbmNlIG1ldHJpY3NcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAnRXhlY3V0aW9uIElEJzogZXhlY3V0aW9uSWQsXG4gICAgICAgICAgJ1JlcXVlc3QgRHVyYXRpb24nOiBmb3JtYXREdXJhdGlvbihyZXF1ZXN0RHVyYXRpb24pLFxuICAgICAgICAgICdUb3RhbCBEdXJhdGlvbic6IGZvcm1hdER1cmF0aW9uKERhdGUubm93KCkgLSBzdGFydFRpbWUpLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTYXZlIHBpcGVsaW5lIGluZm8gdG8gZmlsZVxuICAgICAgICBjb25zdCBvdXRwdXREaXIgPSAnLi9vdXRwdXQnO1xuICAgICAgICBlbnN1cmVPdXRwdXREaXJlY3Rvcnkob3V0cHV0RGlyKTtcblxuICAgICAgICBjb25zdCBvdXRwdXRGaWxlID0gcGF0aC5qb2luKG91dHB1dERpciwgYHBpcGVsaW5lLSR7cGlwZWxpbmUuaWR9Lmpzb25gKTtcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhvdXRwdXRGaWxlLCBKU09OLnN0cmluZ2lmeShwaXBlbGluZSwgbnVsbCwgMikpO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTdWNjZXNzKCdQaXBlbGluZSBkZXRhaWxzIHNhdmVkIHRvIGZpbGUnKTtcbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ091dHB1dCBGaWxlJzogb3V0cHV0RmlsZSxcbiAgICAgICAgICAnRmlsZSBTaXplJzogZm9ybWF0RmlsZVNpemUoZnMuc3RhdFN5bmMob3V0cHV0RmlsZSkuc2l6ZSksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIOKUgOKUgCBPcHRpb25hbCBkZXBsb3kgKC0tZGVwbG95KSDilIDilIBcbiAgICAgICAgLy8gVGhlIHJlY29yZCBub3cgZXhpc3RzIGFuZCBpcyBhdXRob3JpdGF0aXZlLiBJZiB0aGUgZGVwbG95IGZhaWxzIHdlIEtFRVBcbiAgICAgICAgLy8gaXQgYW5kIHN1cmZhY2UgdGhlIGV4YWN0IHJldHJ5IHJhdGhlciB0aGFuIHJvbGxpbmcgYmFjayAobmV2ZXIgZmFsc2UtZ3JlZW4pLlxuICAgICAgICBpZiAob3B0aW9ucy5kZXBsb3kpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRTZWN0aW9uKCdEZXBsb3lpbmcgUGlwZWxpbmUnKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gRGVwbG95IHRvdWNoZXMgdGhlIEFXUyBTREsgKyB0aGUgQ0RLIHN5bnRoIHN1YnByb2Nlc3M7IHJlbGF4IFRMUyB0aGVcbiAgICAgICAgICAgIC8vIHNhbWUgd2F5IGBkZXBsb3lgIGRvZXMgKHJlZnVzZWQgaW4gcHJvZHVjdGlvbiBieSByZWxheFRsc0ZvckNsaSkuXG4gICAgICAgICAgICByZWxheFRsc0ZvckNsaShvcHRpb25zLnZlcmlmeVNzbCwgcHJpbnRXYXJuaW5nKTtcbiAgICAgICAgICAgIC8vIFRoZSBhc3luYyBjbGllbnQgYWRkcyAtLXN0b3JlLXRva2VucyAoU2VjcmV0cyBNYW5hZ2VyKSBzdXBwb3J0IGFuZFxuICAgICAgICAgICAgLy8gYmFja3MgQk9USCB0aGUgcHJvcHMgZmV0Y2ggYW5kIHRoZSByZWdpc3RyeSBjYWxsYmFjay5cbiAgICAgICAgICAgIGNvbnN0IGRlcGxveUNsaWVudCA9IGF3YWl0IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYyhvcHRpb25zKTtcbiAgICAgICAgICAgIGNvbnN0IGRlcGxveUNvbmZpZyA9IGRlcGxveUNsaWVudC5nZXRDb25maWcoKSBhcyBQbGF0Zm9ybURlcGxveUNvbmZpZztcbiAgICAgICAgICAgIC8vIFJlLWZldGNoIHRoZSBqdXN0LWNyZWF0ZWQgcGlwZWxpbmUgc28gcGx1Z2lucyBhcmUgcmVzb2x2ZWQgYW5kIHRoZVxuICAgICAgICAgICAgLy8gcmVnaXN0cnkgaG9zdCBpcyBiYWtlZCBFWEFDVExZIGFzIGBkZXBsb3kgLS1pZGAgZG9lcyDigJQgbm8gZHJpZnQuXG4gICAgICAgICAgICBjb25zdCBmZXRjaGVkID0gYXdhaXQgZmV0Y2hQaXBlbGluZVByb3BzKGRlcGxveUNsaWVudCwgcGlwZWxpbmUuaWQpO1xuICAgICAgICAgICAgYXdhaXQgcnVuRGVwbG95KHtcbiAgICAgICAgICAgICAgcGlwZWxpbmU6IGZldGNoZWQucGlwZWxpbmUsXG4gICAgICAgICAgICAgIHByb3BzV2l0aElkczogZmV0Y2hlZC5wcm9wc1dpdGhJZHMsXG4gICAgICAgICAgICAgIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSxcbiAgICAgICAgICAgICAgcmVnaW9uOiBvcHRpb25zLnJlZ2lvbixcbiAgICAgICAgICAgICAgcmVxdWlyZUFwcHJvdmFsOiBvcHRpb25zLnJlcXVpcmVBcHByb3ZhbCxcbiAgICAgICAgICAgICAgb3V0cHV0OiBvcHRpb25zLm91dHB1dCxcbiAgICAgICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgICAgcGxhdGZvcm1DbGllbnQ6IGRlcGxveUNsaWVudCxcbiAgICAgICAgICAgICAgcGxhdGZvcm1QaXBlbGluZVVybDogZGVwbG95Q29uZmlnLmFwaS5waXBlbGluZVVybCxcbiAgICAgICAgICAgICAgcGxhdGZvcm1CYXNlVXJsOiBkZXBsb3lDb25maWcuYXBpLmJhc2VVcmwsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIChkZXBsb3lFcnJvcikge1xuICAgICAgICAgICAgcHJpbnRFcnJvcignUGlwZWxpbmUgd2FzIGNyZWF0ZWQgYnV0IHRoZSBkZXBsb3kgZmFpbGVkJywge1xuICAgICAgICAgICAgICBwaXBlbGluZUlkOiBwaXBlbGluZS5pZCxcbiAgICAgICAgICAgICAgZXJyb3I6IGRlcGxveUVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBkZXBsb3lFcnJvci5tZXNzYWdlIDogU3RyaW5nKGRlcGxveUVycm9yKSxcbiAgICAgICAgICAgICAgcmV0cnk6IGBwaXBlbGluZS1tYW5hZ2VyIHBpcGVsaW5lIGRlcGxveSAtLWlkICR7cGlwZWxpbmUuaWR9YCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gUmUtdGhyb3cgc28gdGhlIHByb2Nlc3MgZXhpdHMgbm9uLXplcm8uIFRoZSByZWNvcmQgaXMgaW50ZW50aW9uYWxseVxuICAgICAgICAgICAgLy8gcmV0YWluZWQg4oCUIHJlLXJ1biB0aGUgZGVwbG95IHdpdGggdGhlIGNvbW1hbmQgYWJvdmUuXG4gICAgICAgICAgICB0aHJvdyBkZXBsb3lFcnJvcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOZXh0IHN0ZXBzXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdOZXh0IFN0ZXBzJyk7XG4gICAgICAgIGNvbnNvbGUubG9nKGRpbSgnWW91IGNhbiBub3c6JykpO1xuICAgICAgICBpZiAoIW9wdGlvbnMuZGVwbG95KSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgJHtjeWFuKCfigKInKX0gRGVwbG95OiAke2JvbGQoYGRlcGxveSAtLWlkICR7cGlwZWxpbmUuaWR9YCl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coYCAgJHtjeWFuKCfigKInKX0gVmlldzogJHtib2xkKGBnZXQtcGlwZWxpbmUgLS1pZCAke3BpcGVsaW5lLmlkfWApfWApO1xuICAgICAgICBjb25zb2xlLmxvZyhgICAke2N5YW4oJ+KAoicpfSBBUEk6ICR7Y29uZmlnLmFwaS5iYXNlVXJsfSR7Y29uZmlnLmFwaS5waXBlbGluZVVybH0vJHtwaXBlbGluZS5pZH1gKTtcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICBjb21tYW5kOiAnY3JlYXRlLXBpcGVsaW5lJyxcbiAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgcHJvamVjdDogb3B0aW9ucy5wcm9qZWN0LFxuICAgICAgICAgICAgb3JnYW5pemF0aW9uOiBvcHRpb25zLm9yZ2FuaXphdGlvbixcbiAgICAgICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcbiAgICAgICAgICAgIHZlcmlmeVNzbDogb3B0aW9ucy52ZXJpZnlTc2wsXG4gICAgICAgICAgICBkcnlSdW46IG9wdGlvbnMuZHJ5UnVuLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xufSJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiJ7C"}
|