@pipeline-builder/pipeline-manager 3.4.177 → 3.4.178

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.
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkP7C"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoP7C"}
@@ -8,7 +8,7 @@ import pico from 'picocolors';
8
8
  import { assertShellSafe } from '../config/cli.constants.js';
9
9
  import {} from '../types/index.js';
10
10
  import { auditLog } from '../utils/audit-log.js';
11
- import { ensureCdkAvailable, executeCdkShellCommand, resolveBoilerplatePath } from '../utils/cdk-utils.js';
11
+ import { ensureBundlerAvailable, ensureCdkAvailable, executeCdkShellCommand, resolveBoilerplatePath } from '../utils/cdk-utils.js';
12
12
  import { printCommandHeader, printSslWarning, createAuthenticatedClientAsync } from '../utils/command-utils.js';
13
13
  import { ERROR_CODES, handleError } from '../utils/error-handler.js';
14
14
  import { ensureOutputDirectory, printInfo, printKeyValue, printSection, printSuccess, printWarning } from '../utils/output-utils.js';
@@ -71,6 +71,7 @@ export function deploy(program) {
71
71
  relaxTlsForCli(options.verifySsl, printWarning);
72
72
  ensureCdkAvailable();
73
73
  printSuccess('AWS CDK is available');
74
+ ensureBundlerAvailable();
74
75
  let pipeline;
75
76
  let propsWithIds;
76
77
  // Remote-mode registry-post handles — null in --local-spec mode.
@@ -252,4 +253,4 @@ export function deploy(program) {
252
253
  }
253
254
  });
254
255
  }
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2RlcGxveS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLElBQUksTUFBTSxZQUFZLENBQUM7QUFDOUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBaUIsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0csT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNySSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsTUFBTSxFQUFF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UCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyBhc3NlcnRTaGVsbFNhZmUgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyB0eXBlIFBpcGVsaW5lIH0gZnJvbSAnLi4vdHlwZXMvaW5kZXguanMnO1xuaW1wb3J0IHsgYXVkaXRMb2cgfSBmcm9tICcuLi91dGlscy9hdWRpdC1sb2cuanMnO1xuaW1wb3J0IHsgZW5zdXJlQ2RrQXZhaWxhYmxlLCBleGVjdXRlQ2RrU2hlbGxDb21tYW5kLCByZXNvbHZlQm9pbGVycGxhdGVQYXRoIH0gZnJvbSAnLi4vdXRpbHMvY2RrLXV0aWxzLmpzJztcbmltcG9ydCB7IHByaW50Q29tbWFuZEhlYWRlciwgcHJpbnRTc2xXYXJuaW5nLCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgZW5zdXJlT3V0cHV0RGlyZWN0b3J5LCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgZmV0Y2hQaXBlbGluZVByb3BzLCBwcmludFJlc29sdmVkT3JFeGl0IH0gZnJvbSAnLi4vdXRpbHMvcGlwZWxpbmUtY29uZmlnLmpzJztcbmltcG9ydCB7IGJ1aWxkUmVnaXN0cnlQYXlsb2FkLCB3cml0ZVBlbmRpbmdJbnRlbnQgfSBmcm9tICcuLi91dGlscy9yZWdpc3RyeS5qcyc7XG5pbXBvcnQgeyByZWxheFRsc0ZvckNsaSB9IGZyb20gJy4uL3V0aWxzL3Rscy5qcyc7XG5cbmNvbnN0IHsgYm9sZCwgY3lhbiwgZGltIH0gPSBwaWNvO1xuXG4vLyBFU00gaGFzIG5vIF9fZGlybmFtZTsgZGVyaXZlIGl0IGZyb20gdGhpcyBtb2R1bGUncyBVUkwuXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKTtcblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBkZXBsb3lgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogRmV0Y2hlcyBwaXBlbGluZSBwcm9wZXJ0aWVzIGJ5IElEIGZyb20gdGhlIHBsYXRmb3JtIEFQSSwgdGhlblxuICogcnVucyBgY2RrIGRlcGxveWAgdG8gcHJvdmlzaW9uIHRoZSBwaXBlbGluZSBpbmZyYXN0cnVjdHVyZSBpbiBBV1MuXG4gKiBGb3Igc3ludGhlc2lzIG9ubHksIHVzZSBgcGlwZWxpbmUtbWFuYWdlciBwaXBlbGluZSBzeW50aGAuXG4gKlxuICogUmVxdWlyZXMgc2VydmljZSBjcmVkZW50aWFscyB0byBiZSBwcmUtc3RvcmVkIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIuXG4gKiBDcmVhdGUgdGhlbSBmaXJzdCB3aXRoOiBgcGlwZWxpbmUtbWFuYWdlciBpbmZyYSBzdG9yZS10b2tlbmBcbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSByb290IENvbW1hbmRlciBwcm9ncmFtIGluc3RhbmNlIHRvIGF0dGFjaCB0aGUgY29tbWFuZCB0by5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlcGxveShwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZCgnZGVwbG95JylcbiAgICAuZGVzY3JpcHRpb24oJ0RlcGxveSBwaXBlbGluZSBieSBJRCB1c2luZyBBV1MgQ0RLLCBvciAtLWxvY2FsLXNwZWMgdG8gZGVwbG95IGEgbG9jYWwgcGlwZWxpbmUuanNvbiB3aXRob3V0IHRoZSBwbGF0Zm9ybScpXG4gICAgLm9wdGlvbignLWksIC0taWQgPGlkPicsICdQaXBlbGluZSBJRCAoZmV0Y2hlcyBjb25maWcgZnJvbSB0aGUgcGxhdGZvcm0pJylcbiAgICAub3B0aW9uKCctLWxvY2FsLXNwZWMgPHBhdGg+JywgJ1BhdGggdG8gYSBsb2NhbCBwaXBlbGluZS5qc29uIOKAlCBkZXBsb3lzIHdpdGhvdXQgY29udGFjdGluZyB0aGUgcGxhdGZvcm0gKG5vIGF1dGgsIG5vIGNvbXBsaWFuY2UsIG5vIHBsdWdpbiBsb29rdXApJylcbiAgICAub3B0aW9uKCctLXByb2ZpbGUgPHByb2ZpbGU+JywgJ0FXUyBwcm9maWxlJywgJ2RlZmF1bHQnKVxuICAgIC5vcHRpb24oJy0tcmVxdWlyZS1hcHByb3ZhbCA8YXBwcm92YWw+JywgJ0FwcHJvdmFsIGxldmVsOiBuZXZlcnxhbnktY2hhbmdlfGJyb2FkZW5pbmcnLCAnbmV2ZXInKVxuICAgIC5vcHRpb24oJy0tb3V0cHV0IDxkaXI+JywgJ0NESyBvdXRwdXQgZGlyZWN0b3J5JywgJ2Nkay5vdXQnKVxuICAgIC5vcHRpb24oJy0tc3RvcmUtdG9rZW5zJywgJ0F1dGhlbnRpY2F0ZSB1c2luZyB0b2tlbiBmcm9tIEFXUyBTZWNyZXRzIE1hbmFnZXIgKHJlcXVpcmVzIFBMQVRGT1JNX1NFQ1JFVF9OQU1FIGVudiB2YXIpJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS1yZWdpb24gPHJlZ2lvbj4nLCAnQVdTIHJlZ2lvbiAoZm9yIC0tc3RvcmUtdG9rZW5zKScpXG4gICAgLm9wdGlvbignLS12ZXJpZnktc3NsJywgJ0VuYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLW5vLXZlcmlmeS1zc2wnLCAnRGlzYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLXNob3ctcmVzb2x2ZWQnLCAnUHJpbnQgdGhlIHJlc29sdmVkIHBpcGVsaW5lIGNvbmZpZyAod2l0aCB7eyAuLi4gfX0gdGVtcGxhdGVzIGV4cGFuZGVkKSBhbmQgZXhpdCB3aXRob3V0IGRlcGxveWluZycsIGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdQaXBlbGluZSBEZXBsb3knKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gTXV0dWFsbHkgZXhjbHVzaXZlIGlucHV0IHNvdXJjZXMg4oCUIHZhbGlkYXRlZCBJTlNJREUgdGhlIHRyeSBzbyBmYWlsdXJlcyByb3V0ZVxuICAgICAgICAvLyB0aHJvdWdoIGhhbmRsZUVycm9yIChjb25zaXN0ZW50IGV4aXQgY29kZS9mb3JtYXQpIGxpa2UgZXZlcnkgb3RoZXIgY29tbWFuZC5cbiAgICAgICAgaWYgKCFvcHRpb25zLmlkICYmICFvcHRpb25zLmxvY2FsU3BlYykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRWl0aGVyIC0taWQgPHBpcGVsaW5lLWlkPiBvciAtLWxvY2FsLXNwZWMgPHBhdGg+IGlzIHJlcXVpcmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuaWQgJiYgb3B0aW9ucy5sb2NhbFNwZWMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJy0taWQgYW5kIC0tbG9jYWwtc3BlYyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBhdWRpdExvZygnZGVwbG95JywgeyBleGVjdXRpb25JZCwgcGlwZWxpbmVJZDogb3B0aW9ucy5pZCwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuXG4gICAgICAgIHByaW50SW5mbygnRGVwbG95bWVudCBwYXJhbWV0ZXJzJywge1xuICAgICAgICAgIGlkOiBvcHRpb25zLmlkLFxuICAgICAgICAgIGF3c1Byb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSxcbiAgICAgICAgICBvdXRwdXREaXI6IG9wdGlvbnMub3V0cHV0LFxuICAgICAgICAgIHJlcXVpcmVBcHByb3ZhbDogb3B0aW9ucy5yZXF1aXJlQXBwcm92YWwsXG4gICAgICAgICAgdmVyaWZ5U3NsOiBvcHRpb25zLnZlcmlmeVNzbCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU2VjdXJpdHkgd2FybmluZyBmb3IgU1NMIHZlcmlmaWNhdGlvbiBkaXNhYmxlZFxuICAgICAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICAgIC8vIFByb3BhZ2F0ZSB0byBwcm9jZXNzLmVudiBzbyBDREsgY29uc3RydWN0cyAoTGFtYmRhLCBDb2RlQnVpbGQpIGluaGVyaXQgaXQsXG4gICAgICAgIC8vIGJ1dCByZWZ1c2UgaW4gcHJvZHVjdGlvbiAoc2VlIHJlbGF4VGxzRm9yQ2xpKSDigJQgdGhlIGZsYWcgZGlzYWJsZXMgY2VydFxuICAgICAgICAvLyB2YWxpZGF0aW9uIGZvciBBTEwgb3V0Ym91bmQgVExTLCBpbmNsdWRpbmcgdGhlIEFXUyBTREsuXG4gICAgICAgIHJlbGF4VGxzRm9yQ2xpKG9wdGlvbnMudmVyaWZ5U3NsLCBwcmludFdhcm5pbmcpO1xuXG4gICAgICAgIGVuc3VyZUNka0F2YWlsYWJsZSgpO1xuICAgICAgICBwcmludFN1Y2Nlc3MoJ0FXUyBDREsgaXMgYXZhaWxhYmxlJyk7XG5cbiAgICAgICAgbGV0IHBpcGVsaW5lOiBQaXBlbGluZTtcbiAgICAgICAgbGV0IHByb3BzV2l0aElkczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICAgIC8vIFJlbW90ZS1tb2RlIHJlZ2lzdHJ5LXBvc3QgaGFuZGxlcyDigJQgbnVsbCBpbiAtLWxvY2FsLXNwZWMgbW9kZS5cbiAgICAgICAgbGV0IHBsYXRmb3JtQ2xpZW50OiBBd2FpdGVkPFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYz4+IHwgdW5kZWZpbmVkO1xuICAgICAgICBsZXQgcGxhdGZvcm1Db25maWc6IHsgYXBpOiB7IHBpcGVsaW5lVXJsOiBzdHJpbmc7IGJhc2VVcmw6IHN0cmluZyB9IH0gfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMubG9jYWxTcGVjKSB7XG4gICAgICAgICAgLy8gLS1sb2NhbC1zcGVjOiByZWFkIHBpcGVsaW5lLmpzb24gZnJvbSBkaXNrOyBubyBwbGF0Zm9ybSBjb250YWN0LlxuICAgICAgICAgIC8vIENvbXBsaWFuY2UgLyBxdW90YSAvIHBsdWdpbi1sb29rdXAgZmVhdHVyZXMgYWxsIHJlcXVpcmUgdGhlIHBsYXRmb3JtIOKAlFxuICAgICAgICAgIC8vIHRoaXMgbW9kZSBpcyBmb3IgYWlyLWdhcHBlZCBvciBzaW1wbGUgc3RhbmRhbG9uZSBDREsgZGVwbG95bWVudHMuXG4gICAgICAgICAgY29uc3QgYWJzUGF0aCA9IHBhdGgucmVzb2x2ZShvcHRpb25zLmxvY2FsU3BlYyk7XG4gICAgICAgICAgcHJpbnRJbmZvKCdMb2FkaW5nIGxvY2FsIHBpcGVsaW5lIHNwZWMnLCB7IHBhdGg6IGFic1BhdGggfSk7XG4gICAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGFic1BhdGgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYExvY2FsIHNwZWMgZmlsZSBub3QgZm91bmQ6ICR7YWJzUGF0aH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcmF3ID0gZnMucmVhZEZpbGVTeW5jKGFic1BhdGgsICd1dGYtOCcpO1xuICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocmF3KSBhcyBQYXJ0aWFsPFBpcGVsaW5lPiAmIHsgcHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9O1xuICAgICAgICAgIGlmICghcGFyc2VkLnByb3BzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYExvY2FsIHNwZWMgZmlsZSBpcyBtaXNzaW5nIHJlcXVpcmVkICdwcm9wcycgZmllbGQ6ICR7YWJzUGF0aH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcGlwZWxpbmUgPSB7XG4gICAgICAgICAgICBpZDogcGFyc2VkLmlkID8/ICdsb2NhbCcsXG4gICAgICAgICAgICBwcm9qZWN0OiBwYXJzZWQucHJvamVjdCA/PyAnbG9jYWwtcHJvamVjdCcsXG4gICAgICAgICAgICBvcmdhbml6YXRpb246IHBhcnNlZC5vcmdhbml6YXRpb24gPz8gJ2xvY2FsLW9yZycsXG4gICAgICAgICAgICBvcmdJZDogcGFyc2VkLm9yZ0lkLFxuICAgICAgICAgICAgaXNEZWZhdWx0OiBwYXJzZWQuaXNEZWZhdWx0ID8/IGZhbHNlLFxuICAgICAgICAgICAgaXNBY3RpdmU6IHBhcnNlZC5pc0FjdGl2ZSA/PyB0cnVlLFxuICAgICAgICAgICAgcHJvcHM6IHBhcnNlZC5wcm9wcyxcbiAgICAgICAgICB9IGFzIFBpcGVsaW5lO1xuICAgICAgICAgIHByaW50U3VjY2VzcygnTG9jYWwgc3BlYyBsb2FkZWQnKTtcbiAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgIFNvdXJjZTogYWJzUGF0aCxcbiAgICAgICAgICAgIFByb2plY3Q6IHBpcGVsaW5lLnByb2plY3QsXG4gICAgICAgICAgICBPcmdhbml6YXRpb246IHBpcGVsaW5lLm9yZ2FuaXphdGlvbixcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwcm9wc1dpdGhJZHMgPSB7XG4gICAgICAgICAgICAuLi5waXBlbGluZS5wcm9wcyxcbiAgICAgICAgICAgIC4uLihwaXBlbGluZS5vcmdJZCAmJiB7IG9yZ0lkOiBwaXBlbGluZS5vcmdJZCB9KSxcbiAgICAgICAgICAgIHBpcGVsaW5lSWQ6IHBpcGVsaW5lLmlkLFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUmVtb3RlIHBhdGg6IGZldGNoIGNvbmZpZyBmcm9tIHBsYXRmb3JtIEFQSS4gZmV0Y2hQaXBlbGluZVByb3BzIGRvZXNcbiAgICAgICAgICAvLyB0aGUgZmV0Y2ggKyBwbHVnaW4gcHJlLXJlc29sdXRpb24gKyByZWdpc3RyeSBwdWxsLWhvc3QgYmFrZSDigJQgc2hhcmVkXG4gICAgICAgICAgLy8gdmVyYmF0aW0gd2l0aCBgc3ludGhgIHNvIHRoZSB0d28gbmV2ZXIgZHJpZnQuXG4gICAgICAgICAgcGxhdGZvcm1DbGllbnQgPSBhd2FpdCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMob3B0aW9ucyk7XG4gICAgICAgICAgcGxhdGZvcm1Db25maWcgPSBwbGF0Zm9ybUNsaWVudC5nZXRDb25maWcoKSBhcyB7IGFwaTogeyBwaXBlbGluZVVybDogc3RyaW5nOyBiYXNlVXJsOiBzdHJpbmcgfSB9O1xuXG4gICAgICAgICAgcHJpbnRJbmZvKCdGZXRjaGluZyBwaXBlbGluZSBjb25maWd1cmF0aW9uJywgeyBpZDogb3B0aW9ucy5pZCB9KTtcbiAgICAgICAgICBjb25zdCBmZXRjaGVkID0gYXdhaXQgZmV0Y2hQaXBlbGluZVByb3BzKHBsYXRmb3JtQ2xpZW50LCBvcHRpb25zLmlkKTtcbiAgICAgICAgICBwaXBlbGluZSA9IGZldGNoZWQucGlwZWxpbmU7XG4gICAgICAgICAgcHJvcHNXaXRoSWRzID0gZmV0Y2hlZC5wcm9wc1dpdGhJZHM7XG5cbiAgICAgICAgICBwcmludFN1Y2Nlc3MoJ1BpcGVsaW5lIGNvbmZpZ3VyYXRpb24gcmV0cmlldmVkJyk7XG4gICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICAnSUQnOiBwaXBlbGluZS5pZCxcbiAgICAgICAgICAgICdQcm9qZWN0JzogcGlwZWxpbmUucHJvamVjdCxcbiAgICAgICAgICAgICdPcmdhbml6YXRpb24nOiBwaXBlbGluZS5vcmdhbml6YXRpb24sXG4gICAgICAgICAgICAnSXMgRGVmYXVsdCc6IHBpcGVsaW5lLmlzRGVmYXVsdCxcbiAgICAgICAgICAgICdJcyBBY3RpdmUnOiBwaXBlbGluZS5pc0FjdGl2ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIC0tc2hvdy1yZXNvbHZlZDogcHJpbnQgcmVzb2x2ZWQgY29uZmlnIGFuZCBleGl0IChubyBDREsgZGVwbG95KVxuICAgICAgICBpZiAoKG9wdGlvbnMgYXMgeyBzaG93UmVzb2x2ZWQ/OiBib29sZWFuIH0pLnNob3dSZXNvbHZlZCkge1xuICAgICAgICAgIGF3YWl0IHByaW50UmVzb2x2ZWRPckV4aXQocHJvcHNXaXRoSWRzKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbmNvZGVkID0gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkocHJvcHNXaXRoSWRzKSwgJ3V0Zi04JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgICBjb25zdCBvdXRwdXRQYXRoID0gb3B0aW9ucy5vdXRwdXQ7XG5cbiAgICAgICAgLy8gRW5zdXJlIG91dHB1dCBkaXJlY3RvcnkgZXhpc3RzXG4gICAgICAgIHByaW50SW5mbygnUHJlcGFyaW5nIG91dHB1dCBkaXJlY3RvcnknLCB7IHBhdGg6IG91dHB1dFBhdGggfSk7XG4gICAgICAgIGVuc3VyZU91dHB1dERpcmVjdG9yeShvdXRwdXRQYXRoKTtcblxuICAgICAgICAvLyBCdWlsZCBDREsgY29tbWFuZCAodmFsaWRhdGUgRVZFUlkgaW5wdXQgdGhhdCBmbG93cyBpbnRvIHRoZSBzaGVsbCkuXG4gICAgICAgIC8vIHJlcXVpcmVBcHByb3ZhbCBpcyBpbnRlcnBvbGF0ZWQgdW5xdW90ZWQgaW50byB0aGUgY29tbWFuZCBiZWxvdywgc28gYVxuICAgICAgICAvLyB2YWx1ZSBsaWtlIGBuZXZlcjsgcm0gLXJmIH5gIHdvdWxkIG90aGVyd2lzZSBleGVjdXRlIOKAlCB2YWxpZGF0ZSBpdCB0b28uXG4gICAgICAgIGlmIChvcHRpb25zLnByb2ZpbGUpIGFzc2VydFNoZWxsU2FmZShvcHRpb25zLnByb2ZpbGUsICdwcm9maWxlJyk7XG4gICAgICAgIGFzc2VydFNoZWxsU2FmZShvdXRwdXRQYXRoLCAnb3V0cHV0Jyk7XG4gICAgICAgIGFzc2VydFNoZWxsU2FmZShvcHRpb25zLnJlcXVpcmVBcHByb3ZhbCwgJ3JlcXVpcmUtYXBwcm92YWwnKTtcblxuICAgICAgICBjb25zdCBzY3JpcHRQYXRoID0gcmVzb2x2ZUJvaWxlcnBsYXRlUGF0aChfX2Rpcm5hbWUpO1xuICAgICAgICBjb25zdCBwcm9maWxlQXJnID0gb3B0aW9ucy5wcm9maWxlID8gYC0tcHJvZmlsZT0ke29wdGlvbnMucHJvZmlsZX1gIDogJyc7XG4gICAgICAgIGNvbnN0IG91dHB1dEFyZyA9IGAtLW91dHB1dD0ke291dHB1dFBhdGh9YDtcbiAgICAgICAgY29uc3QgYXBwQXJnID0gYC0tYXBwPVwibm9kZSAke3NjcmlwdFBhdGh9XCJgO1xuXG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBgY2RrIGRlcGxveSAke3Byb2ZpbGVBcmd9IC0tcmVxdWlyZS1hcHByb3ZhbD0ke29wdGlvbnMucmVxdWlyZUFwcHJvdmFsfSAke291dHB1dEFyZ30gLS1ub3RpY2VzPWZhbHNlICR7YXBwQXJnfWA7XG5cbiAgICAgICAgcHJpbnRTZWN0aW9uKCdDREsgRXhlY3V0aW9uJyk7XG4gICAgICAgIGNvbnNvbGUubG9nKGN5YW4oYm9sZCgnQ29tbWFuZDonKSksIGRpbShjb21tYW5kLnNwbGl0KCcgLS0nKVswXSArICcgLi4uJykpO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcblxuICAgICAgICAvLyBGb3J3YXJkIHRoZSBwbGF0Zm9ybSBiYXNlIFVSTCB0aGUgZGVwbG95IGFjdHVhbGx5IHJlc29sdmVkIChmcm9tXG4gICAgICAgIC8vIH4vLnBpcGVsaW5lLW1hbmFnZXIvY29uZmlnLnltbCBvciB0aGUgUExBVEZPUk1fQkFTRV9VUkwgZW52IHZhcikgaW50b1xuICAgICAgICAvLyB0aGUgQ0RLIHN5bnRoIHN1YnByb2Nlc3MsIHdoaWNoIHJlYWRzIG9ubHkgcHJvY2Vzcy5lbnYuIFRoZSBzeW50aCB1c2VzXG4gICAgICAgIC8vIGl0IGZvciBzZXJ2ZXJDb25maWcucGxhdGZvcm1VcmwgKHRoZSBQbHVnaW5Mb29rdXAgTGFtYmRhJ3MgcGxhdGZvcm1cbiAgICAgICAgLy8gZW5kcG9pbnQpIGFuZCBhcyB0aGUgbG9hZFJlZ2lzdHJ5Q29uZmlnIHB1bGwtaG9zdCBmYWxsYmFjay4gVGhlIHJlZ2lzdHJ5XG4gICAgICAgIC8vIHB1bGwgaG9zdCBpdHNlbGYgaXMgYmFrZWQgZXhwbGljaXRseSB2aWEgcHJvcHMucmVnaXN0cnkgYWJvdmU7IHRoaXNcbiAgICAgICAgLy8gY292ZXJzIHRoZSBMYW1iZGEgVVJMIGFuZCBhbnkgZGlyZWN0IENvbmZpZy5nZXQoJ3JlZ2lzdHJ5JykgcmVhZHMuXG4gICAgICAgIC8vIC0tbG9jYWwtc3BlYyBtb2RlIGhhcyBubyBwbGF0Zm9ybUNvbmZpZywgc28gdGhpcyBpcyByZW1vdGUtb25seS5cbiAgICAgICAgY29uc3QgY2RrRW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyBQSVBFTElORV9QUk9QUzogZW5jb2RlZCB9O1xuICAgICAgICBpZiAocGxhdGZvcm1Db25maWc/LmFwaS5iYXNlVXJsKSB7XG4gICAgICAgICAgY2RrRW52LlBMQVRGT1JNX0JBU0VfVVJMID0gcGxhdGZvcm1Db25maWcuYXBpLmJhc2VVcmw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFeGVjdXRlIENESyBjb21tYW5kXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGV4ZWN1dGVDZGtTaGVsbENvbW1hbmQoY29tbWFuZCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBzaG93T3V0cHV0OiB0cnVlLFxuICAgICAgICAgIGVudjogY2RrRW52LFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdEZXBsb3ltZW50IENvbXBsZXRlJyk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICAnRXhlY3V0aW9uIElEJzogZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICAnRHVyYXRpb24nOiBgJHtyZXN1bHQuZHVyYXRpb259bXNgLFxuICAgICAgICAgICAgJ091dHB1dCBEaXJlY3RvcnknOiBvdXRwdXRQYXRoLFxuICAgICAgICAgICAgJ1N0YXR1cyc6ICfinJMgU3VjY2VzcycsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvLyBSZWdpc3RlciBwaXBlbGluZSBBUk4gZm9yIGV2ZW50IHJlcG9ydGluZyAobm9uLWJsb2NraW5nKS5cbiAgICAgICAgICAvLyBTa2lwcGVkIGluIC0tbG9jYWwtc3BlYyBtb2RlIHNpbmNlIHRoZXJlJ3Mgbm8gcGxhdGZvcm0gdG8gcmVnaXN0ZXIgd2l0aC5cbiAgICAgICAgICBpZiAoIXBsYXRmb3JtQ2xpZW50IHx8ICFwbGF0Zm9ybUNvbmZpZykge1xuICAgICAgICAgICAgcHJpbnRJbmZvKCdTa2lwcGluZyBwaXBlbGluZSByZWdpc3RyeSAobG9jYWwtc3BlYyBtb2RlKScpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBCdWlsZCB0aGUgcGF5bG9hZCB1cC1mcm9udCBzbyBhIHJlZ2lzdHJhdGlvbiBQT1NUIGZhaWx1cmUgY2FuIHdyaXRlXG4gICAgICAgICAgLy8gdGhlIHNhbWUgcGF5bG9hZCB0byBhIHBlbmRpbmctaW50ZW50IGZpbGUgZm9yIGBwaXBlbGluZS1tYW5hZ2VyXG4gICAgICAgICAgLy8gcGlwZWxpbmUgcmVnaXN0ZXJgIHRvIGRyYWluIGxhdGVyLiBXZSBuZXZlciB3YW50IHRvIHJldHJ5IFNUUyBsb29rdXBzIOKAlFxuICAgICAgICAgIC8vIHRoZXkgY2FuIGZhaWwgdG9vIChlLmcuIGNyZWRlbnRpYWwgcm90YXRpb24pIGFuZCB3b3VsZCBjb21wb3VuZFxuICAgICAgICAgIC8vIHRoZSBpc3N1ZS5cbiAgICAgICAgICBpZiAoIXBpcGVsaW5lLm9yZ0lkKSB7XG4gICAgICAgICAgICBwcmludFdhcm5pbmcoJ1BpcGVsaW5lIGhhcyBubyBvcmdJZCDigJQgc2tpcHBpbmcgcmVnaXN0cmF0aW9uJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBwYXlsb2FkO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBwYXlsb2FkID0gYXdhaXQgYnVpbGRSZWdpc3RyeVBheWxvYWQoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogcGlwZWxpbmUuaWQsXG4gICAgICAgICAgICAgICAgb3JnSWQ6IHBpcGVsaW5lLm9yZ0lkLFxuICAgICAgICAgICAgICAgIHBpcGVsaW5lTmFtZTogcGlwZWxpbmUucGlwZWxpbmVOYW1lLFxuICAgICAgICAgICAgICAgIHByb2plY3Q6IHBpcGVsaW5lLnByb2plY3QsXG4gICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uOiBwaXBlbGluZS5vcmdhbml6YXRpb24sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9wdGlvbnMucmVnaW9uLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGNhdGNoIChidWlsZEVycm9yKSB7XG4gICAgICAgICAgICBwcmludFdhcm5pbmcoJ0NvdWxkIG5vdCBidWlsZCByZWdpc3RyeSBwYXlsb2FkIOKAlCBza2lwcGluZyByZWdpc3RyYXRpb24nLCB7XG4gICAgICAgICAgICAgIGVycm9yOiBidWlsZEVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBidWlsZEVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoYnVpbGRFcnJvciksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgcGxhdGZvcm1DbGllbnQucG9zdChgJHtwbGF0Zm9ybUNvbmZpZy5hcGkucGlwZWxpbmVVcmx9L3JlZ2lzdHJ5YCwgcGF5bG9hZCk7XG4gICAgICAgICAgICBwcmludFN1Y2Nlc3MoJ1BpcGVsaW5lIHJlZ2lzdGVyZWQgZm9yIGV2ZW50IHJlcG9ydGluZycsIHsgcGlwZWxpbmVJZDogcGF5bG9hZC5waXBlbGluZUlkIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKHJlZ0Vycm9yKSB7XG4gICAgICAgICAgICAvLyBQZXJzaXN0IGZvciByZXRyeS4gVGhlIHVzZXIgY2FuIGRyYWluIHdpdGggYHBpcGVsaW5lLW1hbmFnZXJcbiAgICAgICAgICAgIC8vIHBpcGVsaW5lIHJlZ2lzdGVyYCAob3IganVzdCByZS1ydW4gdGhhdCBjb21tYW5kIGF0IGFueSB0aW1lIOKAlCBpdCdzXG4gICAgICAgICAgICAvLyBpZGVtcG90ZW50KS4gVGhlIGRlcGxveSBpdHNlbGYgZG9lcyBOT1QgZmFpbC5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGludGVudFBhdGggPSBhd2FpdCB3cml0ZVBlbmRpbmdJbnRlbnQocGF5bG9hZCk7XG4gICAgICAgICAgICAgIHByaW50V2FybmluZygnUGlwZWxpbmUgcmVnaXN0cnkgdXBkYXRlIGZhaWxlZDsgcXVldWVkIGZvciByZXRyeScsIHtcbiAgICAgICAgICAgICAgICBlcnJvcjogcmVnRXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IHJlZ0Vycm9yLm1lc3NhZ2UgOiBTdHJpbmcocmVnRXJyb3IpLFxuICAgICAgICAgICAgICAgIHJldHJ5OiAncGlwZWxpbmUtbWFuYWdlciBwaXBlbGluZSByZWdpc3RlcicsXG4gICAgICAgICAgICAgICAgaW50ZW50OiBpbnRlbnRQYXRoLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKHdyaXRlRXJyKSB7XG4gICAgICAgICAgICAgIHByaW50V2FybmluZygnUGlwZWxpbmUgcmVnaXN0cnkgdXBkYXRlIGZhaWxlZCAocmV0cnkgcXVldWUgYWxzbyBmYWlsZWQpJywge1xuICAgICAgICAgICAgICAgIGVycm9yOiByZWdFcnJvciBpbnN0YW5jZW9mIEVycm9yID8gcmVnRXJyb3IubWVzc2FnZSA6IFN0cmluZyhyZWdFcnJvciksXG4gICAgICAgICAgICAgICAgcXVldWVFcnJvcjogd3JpdGVFcnIgaW5zdGFuY2VvZiBFcnJvciA/IHdyaXRlRXJyLm1lc3NhZ2UgOiBTdHJpbmcod3JpdGVFcnIpLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgY29tbWFuZDogJ2RlcGxveScsXG4gICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgIHBpcGVsaW5lSWQ6IG9wdGlvbnMuaWQsXG4gICAgICAgICAgICB2ZXJpZnlTc2w6IG9wdGlvbnMudmVyaWZ5U3NsLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xufVxuIl19
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2RlcGxveS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLElBQUksTUFBTSxZQUFZLENBQUM7QUFDOUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBaUIsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkksT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNySSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFF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QztRQUNMLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7IGFzc2VydFNoZWxsU2FmZSB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IHR5cGUgUGlwZWxpbmUgfSBmcm9tICcuLi90eXBlcy9pbmRleC5qcyc7XG5pbXBvcnQgeyBhdWRpdExvZyB9IGZyb20gJy4uL3V0aWxzL2F1ZGl0LWxvZy5qcyc7XG5pbXBvcnQgeyBlbnN1cmVCdW5kbGVyQXZhaWxhYmxlLCBlbnN1cmVDZGtBdmFpbGFibGUsIGV4ZWN1dGVDZGtTaGVsbENvbW1hbmQsIHJlc29sdmVCb2lsZXJwbGF0ZVBhdGggfSBmcm9tICcuLi91dGlscy9jZGstdXRpbHMuanMnO1xuaW1wb3J0IHsgcHJpbnRDb21tYW5kSGVhZGVyLCBwcmludFNzbFdhcm5pbmcsIGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYyB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBlbnN1cmVPdXRwdXREaXJlY3RvcnksIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MsIHByaW50V2FybmluZyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5pbXBvcnQgeyBmZXRjaFBpcGVsaW5lUHJvcHMsIHByaW50UmVzb2x2ZWRPckV4aXQgfSBmcm9tICcuLi91dGlscy9waXBlbGluZS1jb25maWcuanMnO1xuaW1wb3J0IHsgYnVpbGRSZWdpc3RyeVBheWxvYWQsIHdyaXRlUGVuZGluZ0ludGVudCB9IGZyb20gJy4uL3V0aWxzL3JlZ2lzdHJ5LmpzJztcbmltcG9ydCB7IHJlbGF4VGxzRm9yQ2xpIH0gZnJvbSAnLi4vdXRpbHMvdGxzLmpzJztcblxuY29uc3QgeyBib2xkLCBjeWFuLCBkaW0gfSA9IHBpY287XG5cbi8vIEVTTSBoYXMgbm8gX19kaXJuYW1lOyBkZXJpdmUgaXQgZnJvbSB0aGlzIG1vZHVsZSdzIFVSTC5cbmNvbnN0IF9fZGlybmFtZSA9IHBhdGguZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYGRlcGxveWAgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBGZXRjaGVzIHBpcGVsaW5lIHByb3BlcnRpZXMgYnkgSUQgZnJvbSB0aGUgcGxhdGZvcm0gQVBJLCB0aGVuXG4gKiBydW5zIGBjZGsgZGVwbG95YCB0byBwcm92aXNpb24gdGhlIHBpcGVsaW5lIGluZnJhc3RydWN0dXJlIGluIEFXUy5cbiAqIEZvciBzeW50aGVzaXMgb25seSwgdXNlIGBwaXBlbGluZS1tYW5hZ2VyIHBpcGVsaW5lIHN5bnRoYC5cbiAqXG4gKiBSZXF1aXJlcyBzZXJ2aWNlIGNyZWRlbnRpYWxzIHRvIGJlIHByZS1zdG9yZWQgaW4gQVdTIFNlY3JldHMgTWFuYWdlci5cbiAqIENyZWF0ZSB0aGVtIGZpcnN0IHdpdGg6IGBwaXBlbGluZS1tYW5hZ2VyIGluZnJhIHN0b3JlLXRva2VuYFxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHJvb3QgQ29tbWFuZGVyIHByb2dyYW0gaW5zdGFuY2UgdG8gYXR0YWNoIHRoZSBjb21tYW5kIHRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVwbG95KHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKCdkZXBsb3knKVxuICAgIC5kZXNjcmlwdGlvbignRGVwbG95IHBpcGVsaW5lIGJ5IElEIHVzaW5nIEFXUyBDREssIG9yIC0tbG9jYWwtc3BlYyB0byBkZXBsb3kgYSBsb2NhbCBwaXBlbGluZS5qc29uIHdpdGhvdXQgdGhlIHBsYXRmb3JtJylcbiAgICAub3B0aW9uKCctaSwgLS1pZCA8aWQ+JywgJ1BpcGVsaW5lIElEIChmZXRjaGVzIGNvbmZpZyBmcm9tIHRoZSBwbGF0Zm9ybSknKVxuICAgIC5vcHRpb24oJy0tbG9jYWwtc3BlYyA8cGF0aD4nLCAnUGF0aCB0byBhIGxvY2FsIHBpcGVsaW5lLmpzb24g4oCUIGRlcGxveXMgd2l0aG91dCBjb250YWN0aW5nIHRoZSBwbGF0Zm9ybSAobm8gYXV0aCwgbm8gY29tcGxpYW5jZSwgbm8gcGx1Z2luIGxvb2t1cCknKVxuICAgIC5vcHRpb24oJy0tcHJvZmlsZSA8cHJvZmlsZT4nLCAnQVdTIHByb2ZpbGUnLCAnZGVmYXVsdCcpXG4gICAgLm9wdGlvbignLS1yZXF1aXJlLWFwcHJvdmFsIDxhcHByb3ZhbD4nLCAnQXBwcm92YWwgbGV2ZWw6IG5ldmVyfGFueS1jaGFuZ2V8YnJvYWRlbmluZycsICduZXZlcicpXG4gICAgLm9wdGlvbignLS1vdXRwdXQgPGRpcj4nLCAnQ0RLIG91dHB1dCBkaXJlY3RvcnknLCAnY2RrLm91dCcpXG4gICAgLm9wdGlvbignLS1zdG9yZS10b2tlbnMnLCAnQXV0aGVudGljYXRlIHVzaW5nIHRva2VuIGZyb20gQVdTIFNlY3JldHMgTWFuYWdlciAocmVxdWlyZXMgUExBVEZPUk1fU0VDUkVUX05BTUUgZW52IHZhciknLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLXJlZ2lvbiA8cmVnaW9uPicsICdBV1MgcmVnaW9uIChmb3IgLS1zdG9yZS10b2tlbnMpJylcbiAgICAub3B0aW9uKCctLXZlcmlmeS1zc2wnLCAnRW5hYmxlIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24nKVxuICAgIC5vcHRpb24oJy0tbm8tdmVyaWZ5LXNzbCcsICdEaXNhYmxlIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24nKVxuICAgIC5vcHRpb24oJy0tc2hvdy1yZXNvbHZlZCcsICdQcmludCB0aGUgcmVzb2x2ZWQgcGlwZWxpbmUgY29uZmlnICh3aXRoIHt7IC4uLiB9fSB0ZW1wbGF0ZXMgZXhwYW5kZWQpIGFuZCBleGl0IHdpdGhvdXQgZGVwbG95aW5nJywgZmFsc2UpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgZXhlY3V0aW9uSWQgPSBwcmludENvbW1hbmRIZWFkZXIoJ1BpcGVsaW5lIERlcGxveScpO1xuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBNdXR1YWxseSBleGNsdXNpdmUgaW5wdXQgc291cmNlcyDigJQgdmFsaWRhdGVkIElOU0lERSB0aGUgdHJ5IHNvIGZhaWx1cmVzIHJvdXRlXG4gICAgICAgIC8vIHRocm91Z2ggaGFuZGxlRXJyb3IgKGNvbnNpc3RlbnQgZXhpdCBjb2RlL2Zvcm1hdCkgbGlrZSBldmVyeSBvdGhlciBjb21tYW5kLlxuICAgICAgICBpZiAoIW9wdGlvbnMuaWQgJiYgIW9wdGlvbnMubG9jYWxTcGVjKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFaXRoZXIgLS1pZCA8cGlwZWxpbmUtaWQ+IG9yIC0tbG9jYWwtc3BlYyA8cGF0aD4gaXMgcmVxdWlyZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5pZCAmJiBvcHRpb25zLmxvY2FsU3BlYykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignLS1pZCBhbmQgLS1sb2NhbC1zcGVjIGFyZSBtdXR1YWxseSBleGNsdXNpdmUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF1ZGl0TG9nKCdkZXBsb3knLCB7IGV4ZWN1dGlvbklkLCBwaXBlbGluZUlkOiBvcHRpb25zLmlkLCBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUgfSk7XG5cbiAgICAgICAgcHJpbnRJbmZvKCdEZXBsb3ltZW50IHBhcmFtZXRlcnMnLCB7XG4gICAgICAgICAgaWQ6IG9wdGlvbnMuaWQsXG4gICAgICAgICAgYXdzUHJvZmlsZTogb3B0aW9ucy5wcm9maWxlLFxuICAgICAgICAgIG91dHB1dERpcjogb3B0aW9ucy5vdXRwdXQsXG4gICAgICAgICAgcmVxdWlyZUFwcHJvdmFsOiBvcHRpb25zLnJlcXVpcmVBcHByb3ZhbCxcbiAgICAgICAgICB2ZXJpZnlTc2w6IG9wdGlvbnMudmVyaWZ5U3NsLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTZWN1cml0eSB3YXJuaW5nIGZvciBTU0wgdmVyaWZpY2F0aW9uIGRpc2FibGVkXG4gICAgICAgIHByaW50U3NsV2FybmluZyhvcHRpb25zLnZlcmlmeVNzbCk7XG5cbiAgICAgICAgLy8gUHJvcGFnYXRlIHRvIHByb2Nlc3MuZW52IHNvIENESyBjb25zdHJ1Y3RzIChMYW1iZGEsIENvZGVCdWlsZCkgaW5oZXJpdCBpdCxcbiAgICAgICAgLy8gYnV0IHJlZnVzZSBpbiBwcm9kdWN0aW9uIChzZWUgcmVsYXhUbHNGb3JDbGkpIOKAlCB0aGUgZmxhZyBkaXNhYmxlcyBjZXJ0XG4gICAgICAgIC8vIHZhbGlkYXRpb24gZm9yIEFMTCBvdXRib3VuZCBUTFMsIGluY2x1ZGluZyB0aGUgQVdTIFNESy5cbiAgICAgICAgcmVsYXhUbHNGb3JDbGkob3B0aW9ucy52ZXJpZnlTc2wsIHByaW50V2FybmluZyk7XG5cbiAgICAgICAgZW5zdXJlQ2RrQXZhaWxhYmxlKCk7XG4gICAgICAgIHByaW50U3VjY2VzcygnQVdTIENESyBpcyBhdmFpbGFibGUnKTtcblxuICAgICAgICBlbnN1cmVCdW5kbGVyQXZhaWxhYmxlKCk7XG5cbiAgICAgICAgbGV0IHBpcGVsaW5lOiBQaXBlbGluZTtcbiAgICAgICAgbGV0IHByb3BzV2l0aElkczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICAgIC8vIFJlbW90ZS1tb2RlIHJlZ2lzdHJ5LXBvc3QgaGFuZGxlcyDigJQgbnVsbCBpbiAtLWxvY2FsLXNwZWMgbW9kZS5cbiAgICAgICAgbGV0IHBsYXRmb3JtQ2xpZW50OiBBd2FpdGVkPFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYz4+IHwgdW5kZWZpbmVkO1xuICAgICAgICBsZXQgcGxhdGZvcm1Db25maWc6IHsgYXBpOiB7IHBpcGVsaW5lVXJsOiBzdHJpbmc7IGJhc2VVcmw6IHN0cmluZyB9IH0gfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMubG9jYWxTcGVjKSB7XG4gICAgICAgICAgLy8gLS1sb2NhbC1zcGVjOiByZWFkIHBpcGVsaW5lLmpzb24gZnJvbSBkaXNrOyBubyBwbGF0Zm9ybSBjb250YWN0LlxuICAgICAgICAgIC8vIENvbXBsaWFuY2UgLyBxdW90YSAvIHBsdWdpbi1sb29rdXAgZmVhdHVyZXMgYWxsIHJlcXVpcmUgdGhlIHBsYXRmb3JtIOKAlFxuICAgICAgICAgIC8vIHRoaXMgbW9kZSBpcyBmb3IgYWlyLWdhcHBlZCBvciBzaW1wbGUgc3RhbmRhbG9uZSBDREsgZGVwbG95bWVudHMuXG4gICAgICAgICAgY29uc3QgYWJzUGF0aCA9IHBhdGgucmVzb2x2ZShvcHRpb25zLmxvY2FsU3BlYyk7XG4gICAgICAgICAgcHJpbnRJbmZvKCdMb2FkaW5nIGxvY2FsIHBpcGVsaW5lIHNwZWMnLCB7IHBhdGg6IGFic1BhdGggfSk7XG4gICAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGFic1BhdGgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYExvY2FsIHNwZWMgZmlsZSBub3QgZm91bmQ6ICR7YWJzUGF0aH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcmF3ID0gZnMucmVhZEZpbGVTeW5jKGFic1BhdGgsICd1dGYtOCcpO1xuICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocmF3KSBhcyBQYXJ0aWFsPFBpcGVsaW5lPiAmIHsgcHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9O1xuICAgICAgICAgIGlmICghcGFyc2VkLnByb3BzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYExvY2FsIHNwZWMgZmlsZSBpcyBtaXNzaW5nIHJlcXVpcmVkICdwcm9wcycgZmllbGQ6ICR7YWJzUGF0aH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcGlwZWxpbmUgPSB7XG4gICAgICAgICAgICBpZDogcGFyc2VkLmlkID8/ICdsb2NhbCcsXG4gICAgICAgICAgICBwcm9qZWN0OiBwYXJzZWQucHJvamVjdCA/PyAnbG9jYWwtcHJvamVjdCcsXG4gICAgICAgICAgICBvcmdhbml6YXRpb246IHBhcnNlZC5vcmdhbml6YXRpb24gPz8gJ2xvY2FsLW9yZycsXG4gICAgICAgICAgICBvcmdJZDogcGFyc2VkLm9yZ0lkLFxuICAgICAgICAgICAgaXNEZWZhdWx0OiBwYXJzZWQuaXNEZWZhdWx0ID8/IGZhbHNlLFxuICAgICAgICAgICAgaXNBY3RpdmU6IHBhcnNlZC5pc0FjdGl2ZSA/PyB0cnVlLFxuICAgICAgICAgICAgcHJvcHM6IHBhcnNlZC5wcm9wcyxcbiAgICAgICAgICB9IGFzIFBpcGVsaW5lO1xuICAgICAgICAgIHByaW50U3VjY2VzcygnTG9jYWwgc3BlYyBsb2FkZWQnKTtcbiAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgIFNvdXJjZTogYWJzUGF0aCxcbiAgICAgICAgICAgIFByb2plY3Q6IHBpcGVsaW5lLnByb2plY3QsXG4gICAgICAgICAgICBPcmdhbml6YXRpb246IHBpcGVsaW5lLm9yZ2FuaXphdGlvbixcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwcm9wc1dpdGhJZHMgPSB7XG4gICAgICAgICAgICAuLi5waXBlbGluZS5wcm9wcyxcbiAgICAgICAgICAgIC4uLihwaXBlbGluZS5vcmdJZCAmJiB7IG9yZ0lkOiBwaXBlbGluZS5vcmdJZCB9KSxcbiAgICAgICAgICAgIHBpcGVsaW5lSWQ6IHBpcGVsaW5lLmlkLFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUmVtb3RlIHBhdGg6IGZldGNoIGNvbmZpZyBmcm9tIHBsYXRmb3JtIEFQSS4gZmV0Y2hQaXBlbGluZVByb3BzIGRvZXNcbiAgICAgICAgICAvLyB0aGUgZmV0Y2ggKyBwbHVnaW4gcHJlLXJlc29sdXRpb24gKyByZWdpc3RyeSBwdWxsLWhvc3QgYmFrZSDigJQgc2hhcmVkXG4gICAgICAgICAgLy8gdmVyYmF0aW0gd2l0aCBgc3ludGhgIHNvIHRoZSB0d28gbmV2ZXIgZHJpZnQuXG4gICAgICAgICAgcGxhdGZvcm1DbGllbnQgPSBhd2FpdCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMob3B0aW9ucyk7XG4gICAgICAgICAgcGxhdGZvcm1Db25maWcgPSBwbGF0Zm9ybUNsaWVudC5nZXRDb25maWcoKSBhcyB7IGFwaTogeyBwaXBlbGluZVVybDogc3RyaW5nOyBiYXNlVXJsOiBzdHJpbmcgfSB9O1xuXG4gICAgICAgICAgcHJpbnRJbmZvKCdGZXRjaGluZyBwaXBlbGluZSBjb25maWd1cmF0aW9uJywgeyBpZDogb3B0aW9ucy5pZCB9KTtcbiAgICAgICAgICBjb25zdCBmZXRjaGVkID0gYXdhaXQgZmV0Y2hQaXBlbGluZVByb3BzKHBsYXRmb3JtQ2xpZW50LCBvcHRpb25zLmlkKTtcbiAgICAgICAgICBwaXBlbGluZSA9IGZldGNoZWQucGlwZWxpbmU7XG4gICAgICAgICAgcHJvcHNXaXRoSWRzID0gZmV0Y2hlZC5wcm9wc1dpdGhJZHM7XG5cbiAgICAgICAgICBwcmludFN1Y2Nlc3MoJ1BpcGVsaW5lIGNvbmZpZ3VyYXRpb24gcmV0cmlldmVkJyk7XG4gICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICAnSUQnOiBwaXBlbGluZS5pZCxcbiAgICAgICAgICAgICdQcm9qZWN0JzogcGlwZWxpbmUucHJvamVjdCxcbiAgICAgICAgICAgICdPcmdhbml6YXRpb24nOiBwaXBlbGluZS5vcmdhbml6YXRpb24sXG4gICAgICAgICAgICAnSXMgRGVmYXVsdCc6IHBpcGVsaW5lLmlzRGVmYXVsdCxcbiAgICAgICAgICAgICdJcyBBY3RpdmUnOiBwaXBlbGluZS5pc0FjdGl2ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIC0tc2hvdy1yZXNvbHZlZDogcHJpbnQgcmVzb2x2ZWQgY29uZmlnIGFuZCBleGl0IChubyBDREsgZGVwbG95KVxuICAgICAgICBpZiAoKG9wdGlvbnMgYXMgeyBzaG93UmVzb2x2ZWQ/OiBib29sZWFuIH0pLnNob3dSZXNvbHZlZCkge1xuICAgICAgICAgIGF3YWl0IHByaW50UmVzb2x2ZWRPckV4aXQocHJvcHNXaXRoSWRzKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbmNvZGVkID0gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkocHJvcHNXaXRoSWRzKSwgJ3V0Zi04JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgICBjb25zdCBvdXRwdXRQYXRoID0gb3B0aW9ucy5vdXRwdXQ7XG5cbiAgICAgICAgLy8gRW5zdXJlIG91dHB1dCBkaXJlY3RvcnkgZXhpc3RzXG4gICAgICAgIHByaW50SW5mbygnUHJlcGFyaW5nIG91dHB1dCBkaXJlY3RvcnknLCB7IHBhdGg6IG91dHB1dFBhdGggfSk7XG4gICAgICAgIGVuc3VyZU91dHB1dERpcmVjdG9yeShvdXRwdXRQYXRoKTtcblxuICAgICAgICAvLyBCdWlsZCBDREsgY29tbWFuZCAodmFsaWRhdGUgRVZFUlkgaW5wdXQgdGhhdCBmbG93cyBpbnRvIHRoZSBzaGVsbCkuXG4gICAgICAgIC8vIHJlcXVpcmVBcHByb3ZhbCBpcyBpbnRlcnBvbGF0ZWQgdW5xdW90ZWQgaW50byB0aGUgY29tbWFuZCBiZWxvdywgc28gYVxuICAgICAgICAvLyB2YWx1ZSBsaWtlIGBuZXZlcjsgcm0gLXJmIH5gIHdvdWxkIG90aGVyd2lzZSBleGVjdXRlIOKAlCB2YWxpZGF0ZSBpdCB0b28uXG4gICAgICAgIGlmIChvcHRpb25zLnByb2ZpbGUpIGFzc2VydFNoZWxsU2FmZShvcHRpb25zLnByb2ZpbGUsICdwcm9maWxlJyk7XG4gICAgICAgIGFzc2VydFNoZWxsU2FmZShvdXRwdXRQYXRoLCAnb3V0cHV0Jyk7XG4gICAgICAgIGFzc2VydFNoZWxsU2FmZShvcHRpb25zLnJlcXVpcmVBcHByb3ZhbCwgJ3JlcXVpcmUtYXBwcm92YWwnKTtcblxuICAgICAgICBjb25zdCBzY3JpcHRQYXRoID0gcmVzb2x2ZUJvaWxlcnBsYXRlUGF0aChfX2Rpcm5hbWUpO1xuICAgICAgICBjb25zdCBwcm9maWxlQXJnID0gb3B0aW9ucy5wcm9maWxlID8gYC0tcHJvZmlsZT0ke29wdGlvbnMucHJvZmlsZX1gIDogJyc7XG4gICAgICAgIGNvbnN0IG91dHB1dEFyZyA9IGAtLW91dHB1dD0ke291dHB1dFBhdGh9YDtcbiAgICAgICAgY29uc3QgYXBwQXJnID0gYC0tYXBwPVwibm9kZSAke3NjcmlwdFBhdGh9XCJgO1xuXG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBgY2RrIGRlcGxveSAke3Byb2ZpbGVBcmd9IC0tcmVxdWlyZS1hcHByb3ZhbD0ke29wdGlvbnMucmVxdWlyZUFwcHJvdmFsfSAke291dHB1dEFyZ30gLS1ub3RpY2VzPWZhbHNlICR7YXBwQXJnfWA7XG5cbiAgICAgICAgcHJpbnRTZWN0aW9uKCdDREsgRXhlY3V0aW9uJyk7XG4gICAgICAgIGNvbnNvbGUubG9nKGN5YW4oYm9sZCgnQ29tbWFuZDonKSksIGRpbShjb21tYW5kLnNwbGl0KCcgLS0nKVswXSArICcgLi4uJykpO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcblxuICAgICAgICAvLyBGb3J3YXJkIHRoZSBwbGF0Zm9ybSBiYXNlIFVSTCB0aGUgZGVwbG95IGFjdHVhbGx5IHJlc29sdmVkIChmcm9tXG4gICAgICAgIC8vIH4vLnBpcGVsaW5lLW1hbmFnZXIvY29uZmlnLnltbCBvciB0aGUgUExBVEZPUk1fQkFTRV9VUkwgZW52IHZhcikgaW50b1xuICAgICAgICAvLyB0aGUgQ0RLIHN5bnRoIHN1YnByb2Nlc3MsIHdoaWNoIHJlYWRzIG9ubHkgcHJvY2Vzcy5lbnYuIFRoZSBzeW50aCB1c2VzXG4gICAgICAgIC8vIGl0IGZvciBzZXJ2ZXJDb25maWcucGxhdGZvcm1VcmwgKHRoZSBQbHVnaW5Mb29rdXAgTGFtYmRhJ3MgcGxhdGZvcm1cbiAgICAgICAgLy8gZW5kcG9pbnQpIGFuZCBhcyB0aGUgbG9hZFJlZ2lzdHJ5Q29uZmlnIHB1bGwtaG9zdCBmYWxsYmFjay4gVGhlIHJlZ2lzdHJ5XG4gICAgICAgIC8vIHB1bGwgaG9zdCBpdHNlbGYgaXMgYmFrZWQgZXhwbGljaXRseSB2aWEgcHJvcHMucmVnaXN0cnkgYWJvdmU7IHRoaXNcbiAgICAgICAgLy8gY292ZXJzIHRoZSBMYW1iZGEgVVJMIGFuZCBhbnkgZGlyZWN0IENvbmZpZy5nZXQoJ3JlZ2lzdHJ5JykgcmVhZHMuXG4gICAgICAgIC8vIC0tbG9jYWwtc3BlYyBtb2RlIGhhcyBubyBwbGF0Zm9ybUNvbmZpZywgc28gdGhpcyBpcyByZW1vdGUtb25seS5cbiAgICAgICAgY29uc3QgY2RrRW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyBQSVBFTElORV9QUk9QUzogZW5jb2RlZCB9O1xuICAgICAgICBpZiAocGxhdGZvcm1Db25maWc/LmFwaS5iYXNlVXJsKSB7XG4gICAgICAgICAgY2RrRW52LlBMQVRGT1JNX0JBU0VfVVJMID0gcGxhdGZvcm1Db25maWcuYXBpLmJhc2VVcmw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFeGVjdXRlIENESyBjb21tYW5kXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGV4ZWN1dGVDZGtTaGVsbENvbW1hbmQoY29tbWFuZCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBzaG93T3V0cHV0OiB0cnVlLFxuICAgICAgICAgIGVudjogY2RrRW52LFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdEZXBsb3ltZW50IENvbXBsZXRlJyk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICAnRXhlY3V0aW9uIElEJzogZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICAnRHVyYXRpb24nOiBgJHtyZXN1bHQuZHVyYXRpb259bXNgLFxuICAgICAgICAgICAgJ091dHB1dCBEaXJlY3RvcnknOiBvdXRwdXRQYXRoLFxuICAgICAgICAgICAgJ1N0YXR1cyc6ICfinJMgU3VjY2VzcycsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvLyBSZWdpc3RlciBwaXBlbGluZSBBUk4gZm9yIGV2ZW50IHJlcG9ydGluZyAobm9uLWJsb2NraW5nKS5cbiAgICAgICAgICAvLyBTa2lwcGVkIGluIC0tbG9jYWwtc3BlYyBtb2RlIHNpbmNlIHRoZXJlJ3Mgbm8gcGxhdGZvcm0gdG8gcmVnaXN0ZXIgd2l0aC5cbiAgICAgICAgICBpZiAoIXBsYXRmb3JtQ2xpZW50IHx8ICFwbGF0Zm9ybUNvbmZpZykge1xuICAgICAgICAgICAgcHJpbnRJbmZvKCdTa2lwcGluZyBwaXBlbGluZSByZWdpc3RyeSAobG9jYWwtc3BlYyBtb2RlKScpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBCdWlsZCB0aGUgcGF5bG9hZCB1cC1mcm9udCBzbyBhIHJlZ2lzdHJhdGlvbiBQT1NUIGZhaWx1cmUgY2FuIHdyaXRlXG4gICAgICAgICAgLy8gdGhlIHNhbWUgcGF5bG9hZCB0byBhIHBlbmRpbmctaW50ZW50IGZpbGUgZm9yIGBwaXBlbGluZS1tYW5hZ2VyXG4gICAgICAgICAgLy8gcGlwZWxpbmUgcmVnaXN0ZXJgIHRvIGRyYWluIGxhdGVyLiBXZSBuZXZlciB3YW50IHRvIHJldHJ5IFNUUyBsb29rdXBzIOKAlFxuICAgICAgICAgIC8vIHRoZXkgY2FuIGZhaWwgdG9vIChlLmcuIGNyZWRlbnRpYWwgcm90YXRpb24pIGFuZCB3b3VsZCBjb21wb3VuZFxuICAgICAgICAgIC8vIHRoZSBpc3N1ZS5cbiAgICAgICAgICBpZiAoIXBpcGVsaW5lLm9yZ0lkKSB7XG4gICAgICAgICAgICBwcmludFdhcm5pbmcoJ1BpcGVsaW5lIGhhcyBubyBvcmdJZCDigJQgc2tpcHBpbmcgcmVnaXN0cmF0aW9uJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBwYXlsb2FkO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBwYXlsb2FkID0gYXdhaXQgYnVpbGRSZWdpc3RyeVBheWxvYWQoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogcGlwZWxpbmUuaWQsXG4gICAgICAgICAgICAgICAgb3JnSWQ6IHBpcGVsaW5lLm9yZ0lkLFxuICAgICAgICAgICAgICAgIHBpcGVsaW5lTmFtZTogcGlwZWxpbmUucGlwZWxpbmVOYW1lLFxuICAgICAgICAgICAgICAgIHByb2plY3Q6IHBpcGVsaW5lLnByb2plY3QsXG4gICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uOiBwaXBlbGluZS5vcmdhbml6YXRpb24sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9wdGlvbnMucmVnaW9uLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGNhdGNoIChidWlsZEVycm9yKSB7XG4gICAgICAgICAgICBwcmludFdhcm5pbmcoJ0NvdWxkIG5vdCBidWlsZCByZWdpc3RyeSBwYXlsb2FkIOKAlCBza2lwcGluZyByZWdpc3RyYXRpb24nLCB7XG4gICAgICAgICAgICAgIGVycm9yOiBidWlsZEVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBidWlsZEVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoYnVpbGRFcnJvciksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgcGxhdGZvcm1DbGllbnQucG9zdChgJHtwbGF0Zm9ybUNvbmZpZy5hcGkucGlwZWxpbmVVcmx9L3JlZ2lzdHJ5YCwgcGF5bG9hZCk7XG4gICAgICAgICAgICBwcmludFN1Y2Nlc3MoJ1BpcGVsaW5lIHJlZ2lzdGVyZWQgZm9yIGV2ZW50IHJlcG9ydGluZycsIHsgcGlwZWxpbmVJZDogcGF5bG9hZC5waXBlbGluZUlkIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKHJlZ0Vycm9yKSB7XG4gICAgICAgICAgICAvLyBQZXJzaXN0IGZvciByZXRyeS4gVGhlIHVzZXIgY2FuIGRyYWluIHdpdGggYHBpcGVsaW5lLW1hbmFnZXJcbiAgICAgICAgICAgIC8vIHBpcGVsaW5lIHJlZ2lzdGVyYCAob3IganVzdCByZS1ydW4gdGhhdCBjb21tYW5kIGF0IGFueSB0aW1lIOKAlCBpdCdzXG4gICAgICAgICAgICAvLyBpZGVtcG90ZW50KS4gVGhlIGRlcGxveSBpdHNlbGYgZG9lcyBOT1QgZmFpbC5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGludGVudFBhdGggPSBhd2FpdCB3cml0ZVBlbmRpbmdJbnRlbnQocGF5bG9hZCk7XG4gICAgICAgICAgICAgIHByaW50V2FybmluZygnUGlwZWxpbmUgcmVnaXN0cnkgdXBkYXRlIGZhaWxlZDsgcXVldWVkIGZvciByZXRyeScsIHtcbiAgICAgICAgICAgICAgICBlcnJvcjogcmVnRXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IHJlZ0Vycm9yLm1lc3NhZ2UgOiBTdHJpbmcocmVnRXJyb3IpLFxuICAgICAgICAgICAgICAgIHJldHJ5OiAncGlwZWxpbmUtbWFuYWdlciBwaXBlbGluZSByZWdpc3RlcicsXG4gICAgICAgICAgICAgICAgaW50ZW50OiBpbnRlbnRQYXRoLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKHdyaXRlRXJyKSB7XG4gICAgICAgICAgICAgIHByaW50V2FybmluZygnUGlwZWxpbmUgcmVnaXN0cnkgdXBkYXRlIGZhaWxlZCAocmV0cnkgcXVldWUgYWxzbyBmYWlsZWQpJywge1xuICAgICAgICAgICAgICAgIGVycm9yOiByZWdFcnJvciBpbnN0YW5jZW9mIEVycm9yID8gcmVnRXJyb3IubWVzc2FnZSA6IFN0cmluZyhyZWdFcnJvciksXG4gICAgICAgICAgICAgICAgcXVldWVFcnJvcjogd3JpdGVFcnIgaW5zdGFuY2VvZiBFcnJvciA/IHdyaXRlRXJyLm1lc3NhZ2UgOiBTdHJpbmcod3JpdGVFcnIpLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgY29tbWFuZDogJ2RlcGxveScsXG4gICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgIHBpcGVsaW5lSWQ6IG9wdGlvbnMuaWQsXG4gICAgICAgICAgICB2ZXJpZnlTc2w6IG9wdGlvbnMudmVyaWZ5U3NsLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"synth.d.ts","sourceRoot":"","sources":["../../src/commands/synth.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsCpC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsG5C"}
1
+ {"version":3,"file":"synth.d.ts","sourceRoot":"","sources":["../../src/commands/synth.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsCpC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwG5C"}
@@ -5,7 +5,7 @@ import { fileURLToPath } from 'node:url';
5
5
  import { Command } from 'commander';
6
6
  import { assertShellSafe } from '../config/cli.constants.js';
7
7
  import { auditLog } from '../utils/audit-log.js';
8
- import { ensureCdkAvailable, executeCdkShellCommand, resolveBoilerplatePath } from '../utils/cdk-utils.js';
8
+ import { ensureBundlerAvailable, ensureCdkAvailable, executeCdkShellCommand, resolveBoilerplatePath } from '../utils/cdk-utils.js';
9
9
  import { createAuthenticatedClientAsync, printCommandHeader, printSslWarning } from '../utils/command-utils.js';
10
10
  import { ERROR_CODES, handleError } from '../utils/error-handler.js';
11
11
  import { printInfo, printKeyValue, printSection, printSuccess, printWarning } from '../utils/output-utils.js';
@@ -91,6 +91,7 @@ export function synth(program) {
91
91
  }
92
92
  ensureCdkAvailable();
93
93
  printSuccess('AWS CDK is available');
94
+ ensureBundlerAvailable();
94
95
  // Build cdk synth command
95
96
  if (options.output)
96
97
  assertShellSafe(options.output, 'output');
@@ -159,4 +160,4 @@ async function showResolvedPipeline(pipelineId, options) {
159
160
  const { propsWithIds } = await fetchPipelineProps(client, pipelineId);
160
161
  await printResolvedOrExit(propsWithIds);
161
162
  }
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ludGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc3ludGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoSCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELDBEQUEwRDtBQUMxRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFMUQ7OztHQUdHO0FBQ0gsS0FBSyxVQUFVLG1CQUFtQixDQUNoQyxVQUFrQixFQUNsQixPQUEwRjtJQUUxRixNQUFNLE1BQU0sR0FBRyxNQUFNLDhCQUE4QixD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RUFBRSxDQUFDLEtBQUs7Z0JBQzNCLElBQUksRUFBRSxJQUFJO2dCQUNWLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO2FBQ25FLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsS0FBSyxVQUFVLG9CQUFvQixDQUNqQyxVQUE4QixFQUM5QixPQUEwRjtJQUUxRixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxNQUFNLDhCQUE4QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdELE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxNQUFNLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN0RSxNQUFNLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgZGlybmFtZSB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBhc3NlcnRTaGVsbFNhZmUgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyBhdWRpdExvZyB9IGZyb20gJy4uL3V0aWxzL2F1ZGl0LWxvZy5qcyc7XG5pbXBvcnQgeyBlbnN1cmVDZGtBdmFpbGFibGUsIGV4ZWN1dGVDZGtTaGVsbENvbW1hbmQsIHJlc29sdmVCb2lsZXJwbGF0ZVBhdGggfSBmcm9tICcuLi91dGlscy9jZGstdXRpbHMuanMnO1xuaW1wb3J0IHsgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jLCBwcmludENvbW1hbmRIZWFkZXIsIHByaW50U3NsV2FybmluZyB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgZmV0Y2hQaXBlbGluZVByb3BzLCBwcmludFJlc29sdmVkT3JFeGl0IH0gZnJvbSAnLi4vdXRpbHMvcGlwZWxpbmUtY29uZmlnLmpzJztcbmltcG9ydCB7IHJlbGF4VGxzRm9yQ2xpIH0gZnJvbSAnLi4vdXRpbHMvdGxzLmpzJztcblxuLy8gRVNNIGhhcyBubyBfX2Rpcm5hbWU7IGRlcml2ZSBpdCBmcm9tIHRoaXMgbW9kdWxlJ3MgVVJMLlxuY29uc3QgX19kaXJuYW1lID0gZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuXG4vKipcbiAqIEZldGNoIHBpcGVsaW5lIGNvbmZpZyBhbmQgc2V0IFBJUEVMSU5FX1BST1BTIGVudiB2YXIgZm9yIHRoZSBib2lsZXJwbGF0ZSBhcHAuXG4gKiBVc2VzIGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYyB3aGljaCBzdXBwb3J0cyBhbGwgdGhyZWUgYXV0aCBtZXRob2RzLlxuICovXG5hc3luYyBmdW5jdGlvbiBmZXRjaFBpcGVsaW5lQ29uZmlnKFxuICBwaXBlbGluZUlkOiBzdHJpbmcsXG4gIG9wdGlvbnM6IHsgc3RvcmVUb2tlbnM/OiBib29sZWFuOyB2ZXJpZnlTc2w/OiBib29sZWFuOyByZWdpb24/OiBzdHJpbmc7IHByb2ZpbGU/OiBzdHJpbmcgfSxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBjbGllbnQgPSBhd2FpdCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMob3B0aW9ucyk7XG4gIGNvbnN0IHsgcHJvcHNXaXRoSWRzLCBiYXNlVXJsIH0gPSBhd2FpdCBmZXRjaFBpcGVsaW5lUHJvcHMoY2xpZW50LCBwaXBlbGluZUlkKTtcblxuICBwcm9jZXNzLmVudi5QSVBFTElORV9QUk9QUyA9IEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KHByb3BzV2l0aElkcykpLnRvU3RyaW5nKCdiYXNlNjQnKTtcblxuICAvLyBQcm9wYWdhdGUgdGhlIHJlc29sdmVkIHBsYXRmb3JtIGJhc2UgVVJMIGludG8gdGhlIGJvaWxlcnBsYXRlIHN5bnRoICh3aGljaFxuICAvLyBpbmhlcml0cyBwcm9jZXNzLmVudikuIFRoZSBzeW50aCB1c2VzIGl0IGZvciBzZXJ2ZXJDb25maWcucGxhdGZvcm1VcmwgKHRoZVxuICAvLyBQbHVnaW5Mb29rdXAgTGFtYmRhIGVuZHBvaW50KSBhbmQgYXMgdGhlIGxvYWRSZWdpc3RyeUNvbmZpZyBwdWxsLWhvc3RcbiAgLy8gZmFsbGJhY2suIFdpdGhvdXQgdGhpcywgYSBVUkwgY29uZmlndXJlZCB2aWEgfi8ucGlwZWxpbmUtbWFuYWdlci9jb25maWcueW1sXG4gIC8vIGlzIGludmlzaWJsZSB0byB0aGUgc3ludGggc3VicHJvY2VzcyAoaXQgcmVhZHMgb25seSB0aGUgZW52KS5cbiAgaWYgKGJhc2VVcmwpIHtcbiAgICBwcm9jZXNzLmVudi5QTEFURk9STV9CQVNFX1VSTCA9IGJhc2VVcmw7XG4gIH1cblxuICBwcmludFN1Y2Nlc3MoJ1BpcGVsaW5lIGNvbmZpZ3VyYXRpb24gbG9hZGVkJyk7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgc3ludGhgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogUnVucyBDREsgc3ludGhlc2lzIHVzaW5nIHRoZSBib2lsZXJwbGF0ZSBhcHAuIFBpcGVsaW5lIGNvbmZpZyBpcyByZXNvbHZlZCBmcm9tOlxuICogMS4gLS1pZCBmbGFnIG9yIFBJUEVMSU5FX0lEIGVudiB2YXIg4oaSIGZldGNoZXMgY29uZmlnIGZyb20gcGxhdGZvcm0gQVBJXG4gKiAyLiBQSVBFTElORV9QUk9QUyBlbnYgdmFyIChwcmUtZW5jb2RlZCwgZnJvbSBkZXBsb3kgY29tbWFuZClcbiAqXG4gKiBBdXRoZW50aWNhdGlvbiBtZXRob2RzIChpbiBwcmlvcml0eSBvcmRlcik6XG4gKiAtIFBMQVRGT1JNX1RPS0VOIGVudiB2YXJcbiAqIC0gLS1zdG9yZS10b2tlbnMg4oaSIGZldGNoIGZyb20gQVdTIFNlY3JldHMgTWFuYWdlclxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBiYXNoXG4gKiBwaXBlbGluZS1tYW5hZ2VyIHBpcGVsaW5lIHN5bnRoIC0taWQgPHBpcGVsaW5lLWlkPiAtLW5vLXZlcmlmeS1zc2xcbiAqIHBpcGVsaW5lLW1hbmFnZXIgcGlwZWxpbmUgc3ludGggLS1pZCA8cGlwZWxpbmUtaWQ+IC0tc3RvcmUtdG9rZW5zXG4gKiBwaXBlbGluZS1tYW5hZ2VyIHBpcGVsaW5lIHN5bnRoIC0tcXVpZXQgLS1uby1ub3RpY2VzICAgICAgICAgICMgQ29kZVBpcGVsaW5lICh1c2VzIGVudiB2YXJzKVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzeW50aChwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZCgnc3ludGgnKVxuICAgIC5kZXNjcmlwdGlvbignUnVuIENESyBzeW50aGVzaXMgdXNpbmcgcGlwZWxpbmUgY29uZmlndXJhdGlvbicpXG4gICAgLm9wdGlvbignLWksIC0taWQgPGlkPicsICdQaXBlbGluZSBJRCAob3Igc2V0IFBJUEVMSU5FX0lEIGVudiB2YXIpJylcbiAgICAub3B0aW9uKCctLXN0b3JlLXRva2VucycsICdBdXRoZW50aWNhdGUgdXNpbmcgdG9rZW4gZnJvbSBBV1MgU2VjcmV0cyBNYW5hZ2VyIChyZXF1aXJlcyBQTEFURk9STV9TRUNSRVRfTkFNRSBlbnYgdmFyKScsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tb3V0cHV0IDxkaXI+JywgJ0NESyBvdXRwdXQgZGlyZWN0b3J5JywgJ2Nkay5vdXQnKVxuICAgIC5vcHRpb24oJy0tcHJvZmlsZSA8cHJvZmlsZT4nLCAnQVdTIHByb2ZpbGUnKVxuICAgIC5vcHRpb24oJy0tcmVnaW9uIDxyZWdpb24+JywgJ0FXUyByZWdpb24gKGZvciAtLXN0b3JlLXRva2VucyknKVxuICAgIC5vcHRpb24oJy0tcXVpZXQnLCAnU3VwcHJlc3MgQ0RLIG91dHB1dCcsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tbm8tbm90aWNlcycsICdTdXBwcmVzcyBDREsgbm90aWNlcycpXG4gICAgLm9wdGlvbignLS12ZXJib3NlJywgJ1Nob3cgdmVyYm9zZSBDREsgb3V0cHV0JywgZmFsc2UpXG4gICAgLm9wdGlvbignLS1qc29uJywgJ091dHB1dCByZXN1bHQgYXMgSlNPTicsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tdmVyaWZ5LXNzbCcsICdFbmFibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1uby12ZXJpZnktc3NsJywgJ0Rpc2FibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1zaG93LXJlc29sdmVkJywgJ1ByaW50IHRoZSByZXNvbHZlZCBwaXBlbGluZSBjb25maWcgKHdpdGgge3sgLi4uIH19IHRlbXBsYXRlcyBleHBhbmRlZCkgYW5kIGV4aXQgd2l0aG91dCBydW5uaW5nIENESycsIGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdDREsgU3ludGhlc2lzJyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWQgPSBvcHRpb25zLmlkIHx8IHByb2Nlc3MuZW52LlBJUEVMSU5FX0lEO1xuXG4gICAgICAgIC8vIC0tc2hvdy1yZXNvbHZlZDogcHJldmlldyB0ZW1wbGF0ZXMgYW5kIGV4aXRcbiAgICAgICAgaWYgKG9wdGlvbnMuc2hvd1Jlc29sdmVkKSB7XG4gICAgICAgICAgYXdhaXQgc2hvd1Jlc29sdmVkUGlwZWxpbmUocGlwZWxpbmVJZCwgb3B0aW9ucyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgYXVkaXRMb2coJ3N5bnRoJywgeyBleGVjdXRpb25JZCwgcGlwZWxpbmVJZCwgb3V0cHV0OiBvcHRpb25zLm91dHB1dCwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuICAgICAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICAgIC8vIFByb3BhZ2F0ZSB0byBwcm9jZXNzLmVudiBzbyBDREsgY29uc3RydWN0cyAoTGFtYmRhLCBDb2RlQnVpbGQpIGluaGVyaXQgaXQsXG4gICAgICAgIC8vIGJ1dCByZWZ1c2UgaW4gcHJvZHVjdGlvbiAoc2VlIHJlbGF4VGxzRm9yQ2xpKSDigJQgdGhlIGZsYWcgZGlzYWJsZXMgY2VydFxuICAgICAgICAvLyB2YWxpZGF0aW9uIGZvciBBTEwgb3V0Ym91bmQgVExTLCBpbmNsdWRpbmcgdGhlIEFXUyBTREsuXG4gICAgICAgIHJlbGF4VGxzRm9yQ2xpKG9wdGlvbnMudmVyaWZ5U3NsLCBwcmludFdhcm5pbmcpO1xuXG4gICAgICAgIC8vIEZldGNoIHBpcGVsaW5lIGNvbmZpZyBpZiBJRCBpcyBhdmFpbGFibGUgYW5kIFBJUEVMSU5FX1BST1BTIG5vdCBhbHJlYWR5IHNldFxuICAgICAgICBpZiAocGlwZWxpbmVJZCAmJiAhcHJvY2Vzcy5lbnYuUElQRUxJTkVfUFJPUFMpIHtcbiAgICAgICAgICBwcmludEluZm8oJ0ZldGNoaW5nIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24nLCB7IGlkOiBwaXBlbGluZUlkIH0pO1xuICAgICAgICAgIGF3YWl0IGZldGNoUGlwZWxpbmVDb25maWcocGlwZWxpbmVJZCwgb3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXBpcGVsaW5lSWQgJiYgIXByb2Nlc3MuZW52LlBJUEVMSU5FX1BST1BTKSB7XG4gICAgICAgICAgcHJpbnRXYXJuaW5nKCdObyBwaXBlbGluZSBJRCBvciBQSVBFTElORV9QUk9QUyBzZXQnKTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BpcGVsaW5lIElEIGlzIHJlcXVpcmVkLiBVc2UgLS1pZCA8aWQ+IG9yIHNldCBQSVBFTElORV9JRCBlbnYgdmFyLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgZW5zdXJlQ2RrQXZhaWxhYmxlKCk7XG4gICAgICAgIHByaW50U3VjY2VzcygnQVdTIENESyBpcyBhdmFpbGFibGUnKTtcblxuICAgICAgICAvLyBCdWlsZCBjZGsgc3ludGggY29tbWFuZFxuICAgICAgICBpZiAob3B0aW9ucy5vdXRwdXQpIGFzc2VydFNoZWxsU2FmZShvcHRpb25zLm91dHB1dCwgJ291dHB1dCcpO1xuICAgICAgICBpZiAob3B0aW9ucy5wcm9maWxlKSBhc3NlcnRTaGVsbFNhZmUob3B0aW9ucy5wcm9maWxlLCAncHJvZmlsZScpO1xuXG4gICAgICAgIGNvbnN0IGJvaWxlcnBsYXRlUGF0aCA9IHJlc29sdmVCb2lsZXJwbGF0ZVBhdGgoX19kaXJuYW1lKTtcbiAgICAgICAgY29uc3QgcGFydHMgPSBbXG4gICAgICAgICAgJ2NkayBzeW50aCcsXG4gICAgICAgICAgYC0tYXBwPVwibm9kZSAke2JvaWxlcnBsYXRlUGF0aH1cImAsXG4gICAgICAgICAgYC0tb3V0cHV0PSR7b3B0aW9ucy5vdXRwdXR9YCxcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAob3B0aW9ucy5wcm9maWxlKSBwYXJ0cy5wdXNoKGAtLXByb2ZpbGU9JHtvcHRpb25zLnByb2ZpbGV9YCk7XG4gICAgICAgIGlmIChvcHRpb25zLnF1aWV0KSBwYXJ0cy5wdXNoKCctLXF1aWV0Jyk7XG4gICAgICAgIGlmIChvcHRpb25zLm5vdGljZXMgPT09IGZhbHNlKSBwYXJ0cy5wdXNoKCctLW5vLW5vdGljZXMnKTtcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkgcGFydHMucHVzaCgnLS12ZXJib3NlJyk7XG5cbiAgICAgICAgY29uc3QgY29tbWFuZCA9IHBhcnRzLmpvaW4oJyAnKTtcblxuICAgICAgICBwcmludEluZm8oJ0V4ZWN1dGluZycsIHsgY29tbWFuZDogKGNvbW1hbmQuc3BsaXQoJy0tYXBwJylbMF0gPz8gJycpLnRyaW0oKSArICcgLi4uJyB9KTtcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGV4ZWN1dGVDZGtTaGVsbENvbW1hbmQoY29tbWFuZCwge1xuICAgICAgICAgIHNob3dPdXRwdXQ6ICFvcHRpb25zLnF1aWV0LFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignU3ludGhlc2lzIENvbXBsZXRlJyk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuanNvbikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgICAgZHVyYXRpb246IHJlc3VsdC5kdXJhdGlvbixcbiAgICAgICAgICAgICAgb3V0cHV0OiBvcHRpb25zLm91dHB1dCxcbiAgICAgICAgICAgIH0sIG51bGwsIDIpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICAgICdFeGVjdXRpb24gSUQnOiBleGVjdXRpb25JZCxcbiAgICAgICAgICAgICAgJ0R1cmF0aW9uJzogYCR7cmVzdWx0LmR1cmF0aW9ufW1zYCxcbiAgICAgICAgICAgICAgJ091dHB1dCc6IG9wdGlvbnMub3V0cHV0LFxuICAgICAgICAgICAgICAnU3RhdHVzJzogJ+KckyBTdWNjZXNzJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7IGNvbW1hbmQ6ICdzeW50aCcsIGV4ZWN1dGlvbklkLCBwaXBlbGluZUlkOiBvcHRpb25zLmlkIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xufVxuXG4vKipcbiAqIEZldGNoIHRoZSBwaXBlbGluZSBieSBJRCwgYXBwbHkgcGFzcy0xIHNlbGYtcmVmZXJlbmNpbmcgdGVtcGxhdGVcbiAqIHJlc29sdXRpb24sIGFuZCBwcmludCBpdCB0byBzdGRvdXQuIFVzZWQgYnkgYHN5bnRoIC0tc2hvdy1yZXNvbHZlZGBcbiAqIGFuZCBgZGVwbG95IC0tc2hvdy1yZXNvbHZlZGAgdG8gcHJldmlldyBzdWJzdGl0dXRpb24gYmVmb3JlIHJ1bm5pbmcgQ0RLLlxuICovXG5hc3luYyBmdW5jdGlvbiBzaG93UmVzb2x2ZWRQaXBlbGluZShcbiAgcGlwZWxpbmVJZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zOiB7IHByb2ZpbGU/OiBzdHJpbmc7IHJlZ2lvbj86IHN0cmluZzsgc3RvcmVUb2tlbnM/OiBib29sZWFuOyB2ZXJpZnlTc2w/OiBib29sZWFuIH0sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFwaXBlbGluZUlkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCctLXNob3ctcmVzb2x2ZWQgcmVxdWlyZXMgLS1pZCBvciBQSVBFTElORV9JRCBlbnYgdmFyJyk7XG4gIH1cbiAgY29uc3QgY2xpZW50ID0gYXdhaXQgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jKG9wdGlvbnMpO1xuICBjb25zdCB7IHByb3BzV2l0aElkcyB9ID0gYXdhaXQgZmV0Y2hQaXBlbGluZVByb3BzKGNsaWVudCwgcGlwZWxpbmVJZCk7XG4gIGF3YWl0IHByaW50UmVzb2x2ZWRPckV4aXQocHJvcHNXaXRoSWRzKTtcbn1cbiJdfQ==
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ludGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc3ludGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25JLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoSCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELDBEQUEwRDtBQUMxRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFMUQ7OztHQUdHO0FBQ0gsS0FBSyxVQUFVLG1CQUFtQixDQUNoQyxVQUFrQixFQUNsQixPQUEwRjtJQUUxRixNQUFNLE1BQU0sR0FBRyxN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QUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUU7YUFDbkUsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxLQUFLLFVBQVUsb0JBQW9CLENBQ2pDLFVBQThCLEVBQzlCLE9BQTBGO0lBRTFGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sOEJBQThCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0QsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLE1BQU0sa0JBQWtCLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICdub2RlOnVybCc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGFzc2VydFNoZWxsU2FmZSB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IGF1ZGl0TG9nIH0gZnJvbSAnLi4vdXRpbHMvYXVkaXQtbG9nLmpzJztcbmltcG9ydCB7IGVuc3VyZUJ1bmRsZXJBdmFpbGFibGUsIGVuc3VyZUNka0F2YWlsYWJsZSwgZXhlY3V0ZUNka1NoZWxsQ29tbWFuZCwgcmVzb2x2ZUJvaWxlcnBsYXRlUGF0aCB9IGZyb20gJy4uL3V0aWxzL2Nkay11dGlscy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMsIHByaW50Q29tbWFuZEhlYWRlciwgcHJpbnRTc2xXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MsIHByaW50V2FybmluZyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5pbXBvcnQgeyBmZXRjaFBpcGVsaW5lUHJvcHMsIHByaW50UmVzb2x2ZWRPckV4aXQgfSBmcm9tICcuLi91dGlscy9waXBlbGluZS1jb25maWcuanMnO1xuaW1wb3J0IHsgcmVsYXhUbHNGb3JDbGkgfSBmcm9tICcuLi91dGlscy90bHMuanMnO1xuXG4vLyBFU00gaGFzIG5vIF9fZGlybmFtZTsgZGVyaXZlIGl0IGZyb20gdGhpcyBtb2R1bGUncyBVUkwuXG5jb25zdCBfX2Rpcm5hbWUgPSBkaXJuYW1lKGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKSk7XG5cbi8qKlxuICogRmV0Y2ggcGlwZWxpbmUgY29uZmlnIGFuZCBzZXQgUElQRUxJTkVfUFJPUFMgZW52IHZhciBmb3IgdGhlIGJvaWxlcnBsYXRlIGFwcC5cbiAqIFVzZXMgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jIHdoaWNoIHN1cHBvcnRzIGFsbCB0aHJlZSBhdXRoIG1ldGhvZHMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGZldGNoUGlwZWxpbmVDb25maWcoXG4gIHBpcGVsaW5lSWQ6IHN0cmluZyxcbiAgb3B0aW9uczogeyBzdG9yZVRva2Vucz86IGJvb2xlYW47IHZlcmlmeVNzbD86IGJvb2xlYW47IHJlZ2lvbj86IHN0cmluZzsgcHJvZmlsZT86IHN0cmluZyB9LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGNsaWVudCA9IGF3YWl0IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYyhvcHRpb25zKTtcbiAgY29uc3QgeyBwcm9wc1dpdGhJZHMsIGJhc2VVcmwgfSA9IGF3YWl0IGZldGNoUGlwZWxpbmVQcm9wcyhjbGllbnQsIHBpcGVsaW5lSWQpO1xuXG4gIHByb2Nlc3MuZW52LlBJUEVMSU5FX1BST1BTID0gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkocHJvcHNXaXRoSWRzKSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuXG4gIC8vIFByb3BhZ2F0ZSB0aGUgcmVzb2x2ZWQgcGxhdGZvcm0gYmFzZSBVUkwgaW50byB0aGUgYm9pbGVycGxhdGUgc3ludGggKHdoaWNoXG4gIC8vIGluaGVyaXRzIHByb2Nlc3MuZW52KS4gVGhlIHN5bnRoIHVzZXMgaXQgZm9yIHNlcnZlckNvbmZpZy5wbGF0Zm9ybVVybCAodGhlXG4gIC8vIFBsdWdpbkxvb2t1cCBMYW1iZGEgZW5kcG9pbnQpIGFuZCBhcyB0aGUgbG9hZFJlZ2lzdHJ5Q29uZmlnIHB1bGwtaG9zdFxuICAvLyBmYWxsYmFjay4gV2l0aG91dCB0aGlzLCBhIFVSTCBjb25maWd1cmVkIHZpYSB+Ly5waXBlbGluZS1tYW5hZ2VyL2NvbmZpZy55bWxcbiAgLy8gaXMgaW52aXNpYmxlIHRvIHRoZSBzeW50aCBzdWJwcm9jZXNzIChpdCByZWFkcyBvbmx5IHRoZSBlbnYpLlxuICBpZiAoYmFzZVVybCkge1xuICAgIHByb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMID0gYmFzZVVybDtcbiAgfVxuXG4gIHByaW50U3VjY2VzcygnUGlwZWxpbmUgY29uZmlndXJhdGlvbiBsb2FkZWQnKTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBzeW50aGAgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBSdW5zIENESyBzeW50aGVzaXMgdXNpbmcgdGhlIGJvaWxlcnBsYXRlIGFwcC4gUGlwZWxpbmUgY29uZmlnIGlzIHJlc29sdmVkIGZyb206XG4gKiAxLiAtLWlkIGZsYWcgb3IgUElQRUxJTkVfSUQgZW52IHZhciDihpIgZmV0Y2hlcyBjb25maWcgZnJvbSBwbGF0Zm9ybSBBUElcbiAqIDIuIFBJUEVMSU5FX1BST1BTIGVudiB2YXIgKHByZS1lbmNvZGVkLCBmcm9tIGRlcGxveSBjb21tYW5kKVxuICpcbiAqIEF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgKGluIHByaW9yaXR5IG9yZGVyKTpcbiAqIC0gUExBVEZPUk1fVE9LRU4gZW52IHZhclxuICogLSAtLXN0b3JlLXRva2VucyDihpIgZmV0Y2ggZnJvbSBBV1MgU2VjcmV0cyBNYW5hZ2VyXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGJhc2hcbiAqIHBpcGVsaW5lLW1hbmFnZXIgcGlwZWxpbmUgc3ludGggLS1pZCA8cGlwZWxpbmUtaWQ+IC0tbm8tdmVyaWZ5LXNzbFxuICogcGlwZWxpbmUtbWFuYWdlciBwaXBlbGluZSBzeW50aCAtLWlkIDxwaXBlbGluZS1pZD4gLS1zdG9yZS10b2tlbnNcbiAqIHBpcGVsaW5lLW1hbmFnZXIgcGlwZWxpbmUgc3ludGggLS1xdWlldCAtLW5vLW5vdGljZXMgICAgICAgICAgIyBDb2RlUGlwZWxpbmUgKHVzZXMgZW52IHZhcnMpXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN5bnRoKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKCdzeW50aCcpXG4gICAgLmRlc2NyaXB0aW9uKCdSdW4gQ0RLIHN5bnRoZXNpcyB1c2luZyBwaXBlbGluZSBjb25maWd1cmF0aW9uJylcbiAgICAub3B0aW9uKCctaSwgLS1pZCA8aWQ+JywgJ1BpcGVsaW5lIElEIChvciBzZXQgUElQRUxJTkVfSUQgZW52IHZhciknKVxuICAgIC5vcHRpb24oJy0tc3RvcmUtdG9rZW5zJywgJ0F1dGhlbnRpY2F0ZSB1c2luZyB0b2tlbiBmcm9tIEFXUyBTZWNyZXRzIE1hbmFnZXIgKHJlcXVpcmVzIFBMQVRGT1JNX1NFQ1JFVF9OQU1FIGVudiB2YXIpJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS1vdXRwdXQgPGRpcj4nLCAnQ0RLIG91dHB1dCBkaXJlY3RvcnknLCAnY2RrLm91dCcpXG4gICAgLm9wdGlvbignLS1wcm9maWxlIDxwcm9maWxlPicsICdBV1MgcHJvZmlsZScpXG4gICAgLm9wdGlvbignLS1yZWdpb24gPHJlZ2lvbj4nLCAnQVdTIHJlZ2lvbiAoZm9yIC0tc3RvcmUtdG9rZW5zKScpXG4gICAgLm9wdGlvbignLS1xdWlldCcsICdTdXBwcmVzcyBDREsgb3V0cHV0JywgZmFsc2UpXG4gICAgLm9wdGlvbignLS1uby1ub3RpY2VzJywgJ1N1cHByZXNzIENESyBub3RpY2VzJylcbiAgICAub3B0aW9uKCctLXZlcmJvc2UnLCAnU2hvdyB2ZXJib3NlIENESyBvdXRwdXQnLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLWpzb24nLCAnT3V0cHV0IHJlc3VsdCBhcyBKU09OJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS12ZXJpZnktc3NsJywgJ0VuYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLW5vLXZlcmlmeS1zc2wnLCAnRGlzYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLXNob3ctcmVzb2x2ZWQnLCAnUHJpbnQgdGhlIHJlc29sdmVkIHBpcGVsaW5lIGNvbmZpZyAod2l0aCB7eyAuLi4gfX0gdGVtcGxhdGVzIGV4cGFuZGVkKSBhbmQgZXhpdCB3aXRob3V0IHJ1bm5pbmcgQ0RLJywgZmFsc2UpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgZXhlY3V0aW9uSWQgPSBwcmludENvbW1hbmRIZWFkZXIoJ0NESyBTeW50aGVzaXMnKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGlwZWxpbmVJZCA9IG9wdGlvbnMuaWQgfHwgcHJvY2Vzcy5lbnYuUElQRUxJTkVfSUQ7XG5cbiAgICAgICAgLy8gLS1zaG93LXJlc29sdmVkOiBwcmV2aWV3IHRlbXBsYXRlcyBhbmQgZXhpdFxuICAgICAgICBpZiAob3B0aW9ucy5zaG93UmVzb2x2ZWQpIHtcbiAgICAgICAgICBhd2FpdCBzaG93UmVzb2x2ZWRQaXBlbGluZShwaXBlbGluZUlkLCBvcHRpb25zKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBhdWRpdExvZygnc3ludGgnLCB7IGV4ZWN1dGlvbklkLCBwaXBlbGluZUlkLCBvdXRwdXQ6IG9wdGlvbnMub3V0cHV0LCBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUgfSk7XG4gICAgICAgIHByaW50U3NsV2FybmluZyhvcHRpb25zLnZlcmlmeVNzbCk7XG5cbiAgICAgICAgLy8gUHJvcGFnYXRlIHRvIHByb2Nlc3MuZW52IHNvIENESyBjb25zdHJ1Y3RzIChMYW1iZGEsIENvZGVCdWlsZCkgaW5oZXJpdCBpdCxcbiAgICAgICAgLy8gYnV0IHJlZnVzZSBpbiBwcm9kdWN0aW9uIChzZWUgcmVsYXhUbHNGb3JDbGkpIOKAlCB0aGUgZmxhZyBkaXNhYmxlcyBjZXJ0XG4gICAgICAgIC8vIHZhbGlkYXRpb24gZm9yIEFMTCBvdXRib3VuZCBUTFMsIGluY2x1ZGluZyB0aGUgQVdTIFNESy5cbiAgICAgICAgcmVsYXhUbHNGb3JDbGkob3B0aW9ucy52ZXJpZnlTc2wsIHByaW50V2FybmluZyk7XG5cbiAgICAgICAgLy8gRmV0Y2ggcGlwZWxpbmUgY29uZmlnIGlmIElEIGlzIGF2YWlsYWJsZSBhbmQgUElQRUxJTkVfUFJPUFMgbm90IGFscmVhZHkgc2V0XG4gICAgICAgIGlmIChwaXBlbGluZUlkICYmICFwcm9jZXNzLmVudi5QSVBFTElORV9QUk9QUykge1xuICAgICAgICAgIHByaW50SW5mbygnRmV0Y2hpbmcgcGlwZWxpbmUgY29uZmlndXJhdGlvbicsIHsgaWQ6IHBpcGVsaW5lSWQgfSk7XG4gICAgICAgICAgYXdhaXQgZmV0Y2hQaXBlbGluZUNvbmZpZyhwaXBlbGluZUlkLCBvcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIGlmICghcGlwZWxpbmVJZCAmJiAhcHJvY2Vzcy5lbnYuUElQRUxJTkVfUFJPUFMpIHtcbiAgICAgICAgICBwcmludFdhcm5pbmcoJ05vIHBpcGVsaW5lIElEIG9yIFBJUEVMSU5FX1BST1BTIHNldCcpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUGlwZWxpbmUgSUQgaXMgcmVxdWlyZWQuIFVzZSAtLWlkIDxpZD4gb3Igc2V0IFBJUEVMSU5FX0lEIGVudiB2YXIuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBlbnN1cmVDZGtBdmFpbGFibGUoKTtcbiAgICAgICAgcHJpbnRTdWNjZXNzKCdBV1MgQ0RLIGlzIGF2YWlsYWJsZScpO1xuXG4gICAgICAgIGVuc3VyZUJ1bmRsZXJBdmFpbGFibGUoKTtcblxuICAgICAgICAvLyBCdWlsZCBjZGsgc3ludGggY29tbWFuZFxuICAgICAgICBpZiAob3B0aW9ucy5vdXRwdXQpIGFzc2VydFNoZWxsU2FmZShvcHRpb25zLm91dHB1dCwgJ291dHB1dCcpO1xuICAgICAgICBpZiAob3B0aW9ucy5wcm9maWxlKSBhc3NlcnRTaGVsbFNhZmUob3B0aW9ucy5wcm9maWxlLCAncHJvZmlsZScpO1xuXG4gICAgICAgIGNvbnN0IGJvaWxlcnBsYXRlUGF0aCA9IHJlc29sdmVCb2lsZXJwbGF0ZVBhdGgoX19kaXJuYW1lKTtcbiAgICAgICAgY29uc3QgcGFydHMgPSBbXG4gICAgICAgICAgJ2NkayBzeW50aCcsXG4gICAgICAgICAgYC0tYXBwPVwibm9kZSAke2JvaWxlcnBsYXRlUGF0aH1cImAsXG4gICAgICAgICAgYC0tb3V0cHV0PSR7b3B0aW9ucy5vdXRwdXR9YCxcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAob3B0aW9ucy5wcm9maWxlKSBwYXJ0cy5wdXNoKGAtLXByb2ZpbGU9JHtvcHRpb25zLnByb2ZpbGV9YCk7XG4gICAgICAgIGlmIChvcHRpb25zLnF1aWV0KSBwYXJ0cy5wdXNoKCctLXF1aWV0Jyk7XG4gICAgICAgIGlmIChvcHRpb25zLm5vdGljZXMgPT09IGZhbHNlKSBwYXJ0cy5wdXNoKCctLW5vLW5vdGljZXMnKTtcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkgcGFydHMucHVzaCgnLS12ZXJib3NlJyk7XG5cbiAgICAgICAgY29uc3QgY29tbWFuZCA9IHBhcnRzLmpvaW4oJyAnKTtcblxuICAgICAgICBwcmludEluZm8oJ0V4ZWN1dGluZycsIHsgY29tbWFuZDogKGNvbW1hbmQuc3BsaXQoJy0tYXBwJylbMF0gPz8gJycpLnRyaW0oKSArICcgLi4uJyB9KTtcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGV4ZWN1dGVDZGtTaGVsbENvbW1hbmQoY29tbWFuZCwge1xuICAgICAgICAgIHNob3dPdXRwdXQ6ICFvcHRpb25zLnF1aWV0LFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignU3ludGhlc2lzIENvbXBsZXRlJyk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuanNvbikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgICAgZHVyYXRpb246IHJlc3VsdC5kdXJhdGlvbixcbiAgICAgICAgICAgICAgb3V0cHV0OiBvcHRpb25zLm91dHB1dCxcbiAgICAgICAgICAgIH0sIG51bGwsIDIpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICAgICdFeGVjdXRpb24gSUQnOiBleGVjdXRpb25JZCxcbiAgICAgICAgICAgICAgJ0R1cmF0aW9uJzogYCR7cmVzdWx0LmR1cmF0aW9ufW1zYCxcbiAgICAgICAgICAgICAgJ091dHB1dCc6IG9wdGlvbnMub3V0cHV0LFxuICAgICAgICAgICAgICAnU3RhdHVzJzogJ+KckyBTdWNjZXNzJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7IGNvbW1hbmQ6ICdzeW50aCcsIGV4ZWN1dGlvbklkLCBwaXBlbGluZUlkOiBvcHRpb25zLmlkIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xufVxuXG4vKipcbiAqIEZldGNoIHRoZSBwaXBlbGluZSBieSBJRCwgYXBwbHkgcGFzcy0xIHNlbGYtcmVmZXJlbmNpbmcgdGVtcGxhdGVcbiAqIHJlc29sdXRpb24sIGFuZCBwcmludCBpdCB0byBzdGRvdXQuIFVzZWQgYnkgYHN5bnRoIC0tc2hvdy1yZXNvbHZlZGBcbiAqIGFuZCBgZGVwbG95IC0tc2hvdy1yZXNvbHZlZGAgdG8gcHJldmlldyBzdWJzdGl0dXRpb24gYmVmb3JlIHJ1bm5pbmcgQ0RLLlxuICovXG5hc3luYyBmdW5jdGlvbiBzaG93UmVzb2x2ZWRQaXBlbGluZShcbiAgcGlwZWxpbmVJZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zOiB7IHByb2ZpbGU/OiBzdHJpbmc7IHJlZ2lvbj86IHN0cmluZzsgc3RvcmVUb2tlbnM/OiBib29sZWFuOyB2ZXJpZnlTc2w/OiBib29sZWFuIH0sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFwaXBlbGluZUlkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCctLXNob3ctcmVzb2x2ZWQgcmVxdWlyZXMgLS1pZCBvciBQSVBFTElORV9JRCBlbnYgdmFyJyk7XG4gIH1cbiAgY29uc3QgY2xpZW50ID0gYXdhaXQgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jKG9wdGlvbnMpO1xuICBjb25zdCB7IHByb3BzV2l0aElkcyB9ID0gYXdhaXQgZmV0Y2hQaXBlbGluZVByb3BzKGNsaWVudCwgcGlwZWxpbmVJZCk7XG4gIGF3YWl0IHByaW50UmVzb2x2ZWRPckV4aXQocHJvcHNXaXRoSWRzKTtcbn1cbiJdfQ==
@@ -9,13 +9,17 @@ export interface CdkInfo {
9
9
  error?: string;
10
10
  }
11
11
  /**
12
- * Checks whether the AWS CDK CLI is installed and returns its version.
12
+ * Checks whether a CLI tool is installed and returns its version output.
13
13
  *
14
- * Tries `cdk --version` first. If that fails (typically because the user has
15
- * cdk on PATH via their shell rc but execSync's default `/bin/sh` doesn't
16
- * source it), falls back to running through the user's interactive shell
17
- * (`$SHELL -i -c`) so node version managers like nvm/asdf and homebrew paths
18
- * become visible.
14
+ * Tries `<tool> <versionArg>` first. If that fails (typically because the tool
15
+ * is on PATH via the user's shell rc but execSync's default `/bin/sh` doesn't
16
+ * source it), falls back to running through the user's login+interactive shell
17
+ * (`$SHELL -ilc`) so node version managers like nvm/asdf and homebrew paths
18
+ * become visible. stdin is ignored so an interactive shell can't block on input.
19
+ */
20
+ export declare function getToolInfo(tool: string, versionArg?: string): CdkInfo;
21
+ /**
22
+ * Checks whether the AWS CDK CLI is installed and returns its version.
19
23
  */
20
24
  export declare function getCdkInfo(): CdkInfo;
21
25
  /**
@@ -28,6 +32,19 @@ export declare function checkCdkAvailable(): boolean;
28
32
  * shells out to `cdk`.
29
33
  */
30
34
  export declare function ensureCdkAvailable(): void;
35
+ /**
36
+ * Asserts that the local toolchain CDK needs to bundle the PluginLookup Lambda
37
+ * is present. Synth builds that Lambda via `NodejsFunction` (esbuild); when
38
+ * esbuild isn't on PATH, CDK silently falls back to **Docker bundling**, which
39
+ * can't resolve the handler's cross-directory imports and dies with an opaque
40
+ * `Could not resolve "axios"` / `"../config/handler-constants.js"`. pnpm is also
41
+ * required because the handler's lockfile is `pnpm-lock.yaml`, so CDK drives
42
+ * esbuild through pnpm. Fail fast here with the fix instead of deep in a bundle.
43
+ *
44
+ * Bypass with `SKIP_BUNDLER_CHECK=1` (e.g. an environment that intentionally
45
+ * bundles in Docker with a working mount scope).
46
+ */
47
+ export declare function ensureBundlerAvailable(): void;
31
48
  /**
32
49
  * Options for executing a CDK shell command.
33
50
  */
@@ -1 +1 @@
1
- {"version":3,"file":"cdk-utils.d.ts","sourceRoot":"","sources":["../../src/utils/cdk-utils.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,IAAI,OAAO,CA6BpC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yFAAyF;IACzF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,eAAoB,GAC5B,cAAc,CA2ChB"}
1
+ {"version":3,"file":"cdk-utils.d.ts","sourceRoot":"","sources":["../../src/utils/cdk-utils.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,SAAc,GAAG,OAAO,CAwB3E;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAqB7C;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yFAAyF;IACzF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,eAAoB,GAC5B,cAAc,CA2ChB"}
@@ -2,7 +2,7 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import { execSync } from 'child_process';
4
4
  import path from 'path';
5
- import { printError } from './output-utils.js';
5
+ import { printError, printSuccess } from './output-utils.js';
6
6
  /**
7
7
  * Path to dist/boilerplate.js. tsc emits commands at dist/commands/, so
8
8
  * boilerplate is one level up.
@@ -11,30 +11,25 @@ export function resolveBoilerplatePath(callerDir) {
11
11
  return path.join(callerDir, '..', 'boilerplate.js');
12
12
  }
13
13
  /**
14
- * Checks whether the AWS CDK CLI is installed and returns its version.
14
+ * Checks whether a CLI tool is installed and returns its version output.
15
15
  *
16
- * Tries `cdk --version` first. If that fails (typically because the user has
17
- * cdk on PATH via their shell rc but execSync's default `/bin/sh` doesn't
18
- * source it), falls back to running through the user's interactive shell
19
- * (`$SHELL -i -c`) so node version managers like nvm/asdf and homebrew paths
20
- * become visible.
16
+ * Tries `<tool> <versionArg>` first. If that fails (typically because the tool
17
+ * is on PATH via the user's shell rc but execSync's default `/bin/sh` doesn't
18
+ * source it), falls back to running through the user's login+interactive shell
19
+ * (`$SHELL -ilc`) so node version managers like nvm/asdf and homebrew paths
20
+ * become visible. stdin is ignored so an interactive shell can't block on input.
21
21
  */
22
- export function getCdkInfo() {
22
+ export function getToolInfo(tool, versionArg = '--version') {
23
+ const cmd = `${tool} ${versionArg}`;
23
24
  try {
24
- const output = execSync('cdk --version', { encoding: 'utf-8', stdio: 'pipe' });
25
+ const output = execSync(cmd, { encoding: 'utf-8', stdio: 'pipe' });
25
26
  return { available: true, version: output.trim() };
26
27
  }
27
28
  catch (firstError) {
28
- // Fallback: run through the user's shell as login + interactive (`-ilc`) so
29
- // it actually sources their profile/rc (nvm/asdf/homebrew PATH). The previous
30
- // `shell: userShell` option only changed which binary ran `-c` (still
31
- // non-login/non-interactive → rc not sourced). stdin is ignored so an
32
- // interactive shell can't block waiting for input. Skip when SHELL is unset
33
- // or /bin/sh (same as the default attempt above).
34
29
  const userShell = process.env.SHELL;
35
30
  if (userShell && !userShell.endsWith('/sh')) {
36
31
  try {
37
- const output = execSync(`${userShell} -ilc 'cdk --version'`, {
32
+ const output = execSync(`${userShell} -ilc '${cmd}'`, {
38
33
  encoding: 'utf-8',
39
34
  stdio: ['ignore', 'pipe', 'pipe'],
40
35
  });
@@ -51,6 +46,12 @@ export function getCdkInfo() {
51
46
  };
52
47
  }
53
48
  }
49
+ /**
50
+ * Checks whether the AWS CDK CLI is installed and returns its version.
51
+ */
52
+ export function getCdkInfo() {
53
+ return getToolInfo('cdk');
54
+ }
54
55
  /**
55
56
  * Checks whether the AWS CDK CLI is installed and accessible on the PATH.
56
57
  */
@@ -69,6 +70,39 @@ export function ensureCdkAvailable() {
69
70
  console.log('Install CDK with: npm install -g aws-cdk');
70
71
  throw new Error('AWS CDK not found');
71
72
  }
73
+ /**
74
+ * Asserts that the local toolchain CDK needs to bundle the PluginLookup Lambda
75
+ * is present. Synth builds that Lambda via `NodejsFunction` (esbuild); when
76
+ * esbuild isn't on PATH, CDK silently falls back to **Docker bundling**, which
77
+ * can't resolve the handler's cross-directory imports and dies with an opaque
78
+ * `Could not resolve "axios"` / `"../config/handler-constants.js"`. pnpm is also
79
+ * required because the handler's lockfile is `pnpm-lock.yaml`, so CDK drives
80
+ * esbuild through pnpm. Fail fast here with the fix instead of deep in a bundle.
81
+ *
82
+ * Bypass with `SKIP_BUNDLER_CHECK=1` (e.g. an environment that intentionally
83
+ * bundles in Docker with a working mount scope).
84
+ */
85
+ export function ensureBundlerAvailable() {
86
+ if (process.env.SKIP_BUNDLER_CHECK === '1')
87
+ return;
88
+ const missing = ['esbuild', 'pnpm'].filter((tool) => !getToolInfo(tool).available);
89
+ if (missing.length === 0) {
90
+ printSuccess('Bundler (esbuild + pnpm) is available');
91
+ return;
92
+ }
93
+ printError(`Missing local bundling prerequisite${missing.length > 1 ? 's' : ''}: ${missing.join(', ')}`);
94
+ console.log('');
95
+ console.log('Synth bundles the PluginLookup Lambda via esbuild (CDK NodejsFunction).');
96
+ console.log('Without esbuild + pnpm on PATH, CDK falls back to Docker bundling, which');
97
+ console.log('fails with: Could not resolve "axios" / "../config/handler-constants.js".');
98
+ console.log('');
99
+ console.log('Install with:');
100
+ console.log(' npm install -g esbuild@0.28.1 pnpm@10.33.0');
101
+ console.log('');
102
+ console.log('Docs: pipeline-manager.md#prerequisites-for-local-pipeline-deploys');
103
+ console.log('(Set SKIP_BUNDLER_CHECK=1 to bypass this check.)');
104
+ throw new Error(`Missing bundler prerequisites: ${missing.join(', ')}`);
105
+ }
72
106
  /**
73
107
  * Executes a CDK CLI command as a child process.
74
108
  *
@@ -117,4 +151,4 @@ export function executeCdkShellCommand(command, options = {}) {
117
151
  throw error;
118
152
  }
119
153
  }
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2Nkay11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUvQzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsU0FBaUI7SUFDdEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBUUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsVUFBVTtJQUN4QixJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsZUFBZSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMvRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUFDLE9BQU8sVUFBVSxFQUFFLENBQUM7UUFDcEIsNEVBQTRFO1FBQzVFLDhFQUE4RTtRQUM5RSxzRUFBc0U7UUFDdEUsc0VBQXNFO1FBQ3RFLDRFQUE0RTtRQUM1RSxrREFBa0Q7UUFDbEQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDcEMsSUFBSSxTQUFTLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDO2dCQUNILE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLFNBQVMsdUJBQXVC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LENBQUM7Z0JBQ25DLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxTQUFTLENBQUMsTUFBTSxXQUFXLFFBQVEsS0FBSyxDQUFDLENBQUM7WUFDeEUsQ0FBQztRQUNILENBQUM7YUFBTSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgcHJpbnRFcnJvciB9IGZyb20gJy4vb3V0cHV0LXV0aWxzLmpzJztcblxuLyoqXG4gKiBQYXRoIHRvIGRpc3QvYm9pbGVycGxhdGUuanMuIHRzYyBlbWl0cyBjb21tYW5kcyBhdCBkaXN0L2NvbW1hbmRzLywgc29cbiAqIGJvaWxlcnBsYXRlIGlzIG9uZSBsZXZlbCB1cC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVCb2lsZXJwbGF0ZVBhdGgoY2FsbGVyRGlyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcGF0aC5qb2luKGNhbGxlckRpciwgJy4uJywgJ2JvaWxlcnBsYXRlLmpzJyk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrSW5mbyB7XG4gIGF2YWlsYWJsZTogYm9vbGVhbjtcbiAgdmVyc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgZXJyb3I/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIEFXUyBDREsgQ0xJIGlzIGluc3RhbGxlZCBhbmQgcmV0dXJucyBpdHMgdmVyc2lvbi5cbiAqXG4gKiBUcmllcyBgY2RrIC0tdmVyc2lvbmAgZmlyc3QuIElmIHRoYXQgZmFpbHMgKHR5cGljYWxseSBiZWNhdXNlIHRoZSB1c2VyIGhhc1xuICogY2RrIG9uIFBBVEggdmlhIHRoZWlyIHNoZWxsIHJjIGJ1dCBleGVjU3luYydzIGRlZmF1bHQgYC9iaW4vc2hgIGRvZXNuJ3RcbiAqIHNvdXJjZSBpdCksIGZhbGxzIGJhY2sgdG8gcnVubmluZyB0aHJvdWdoIHRoZSB1c2VyJ3MgaW50ZXJhY3RpdmUgc2hlbGxcbiAqIChgJFNIRUxMIC1pIC1jYCkgc28gbm9kZSB2ZXJzaW9uIG1hbmFnZXJzIGxpa2UgbnZtL2FzZGYgYW5kIGhvbWVicmV3IHBhdGhzXG4gKiBiZWNvbWUgdmlzaWJsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENka0luZm8oKTogQ2RrSW5mbyB7XG4gIHRyeSB7XG4gICAgY29uc3Qgb3V0cHV0ID0gZXhlY1N5bmMoJ2NkayAtLXZlcnNpb24nLCB7IGVuY29kaW5nOiAndXRmLTgnLCBzdGRpbzogJ3BpcGUnIH0pO1xuICAgIHJldHVybiB7IGF2YWlsYWJsZTogdHJ1ZSwgdmVyc2lvbjogb3V0cHV0LnRyaW0oKSB9O1xuICB9IGNhdGNoIChmaXJzdEVycm9yKSB7XG4gICAgLy8gRmFsbGJhY2s6IHJ1biB0aHJvdWdoIHRoZSB1c2VyJ3Mgc2hlbGwgYXMgbG9naW4gKyBpbnRlcmFjdGl2ZSAoYC1pbGNgKSBzb1xuICAgIC8vIGl0IGFjdHVhbGx5IHNvdXJjZXMgdGhlaXIgcHJvZmlsZS9yYyAobnZtL2FzZGYvaG9tZWJyZXcgUEFUSCkuIFRoZSBwcmV2aW91c1xuICAgIC8vIGBzaGVsbDogdXNlclNoZWxsYCBvcHRpb24gb25seSBjaGFuZ2VkIHdoaWNoIGJpbmFyeSByYW4gYC1jYCAoc3RpbGxcbiAgICAvLyBub24tbG9naW4vbm9uLWludGVyYWN0aXZlIOKGkiByYyBub3Qgc291cmNlZCkuIHN0ZGluIGlzIGlnbm9yZWQgc28gYW5cbiAgICAvLyBpbnRlcmFjdGl2ZSBzaGVsbCBjYW4ndCBibG9jayB3YWl0aW5nIGZvciBpbnB1dC4gU2tpcCB3aGVuIFNIRUxMIGlzIHVuc2V0XG4gICAgLy8gb3IgL2Jpbi9zaCAoc2FtZSBhcyB0aGUgZGVmYXVsdCBhdHRlbXB0IGFib3ZlKS5cbiAgICBjb25zdCB1c2VyU2hlbGwgPSBwcm9jZXNzLmVudi5TSEVMTDtcbiAgICBpZiAodXNlclNoZWxsICYmICF1c2VyU2hlbGwuZW5kc1dpdGgoJy9zaCcpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBvdXRwdXQgPSBleGVjU3luYyhgJHt1c2VyU2hlbGx9IC1pbGMgJ2NkayAtLXZlcnNpb24nYCwge1xuICAgICAgICAgIGVuY29kaW5nOiAndXRmLTgnLFxuICAgICAgICAgIHN0ZGlvOiBbJ2lnbm9yZScsICdwaXBlJywgJ3BpcGUnXSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7IGF2YWlsYWJsZTogdHJ1ZSwgdmVyc2lvbjogb3V0cHV0LnRyaW0oKSB9O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIGZhbGwgdGhyb3VnaCB0byB0aGUgb3JpZ2luYWwgZXJyb3JcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGF2YWlsYWJsZTogZmFsc2UsXG4gICAgICB2ZXJzaW9uOiBudWxsLFxuICAgICAgZXJyb3I6IGZpcnN0RXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGZpcnN0RXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIEFXUyBDREsgQ0xJIGlzIGluc3RhbGxlZCBhbmQgYWNjZXNzaWJsZSBvbiB0aGUgUEFUSC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQ2RrQXZhaWxhYmxlKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0Q2RrSW5mbygpLmF2YWlsYWJsZTtcbn1cblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgdGhlIEFXUyBDREsgQ0xJIGlzIGluc3RhbGxlZDsgdGhyb3dzIHdpdGggYSB1c2VyLWZyaWVuZGx5XG4gKiBtZXNzYWdlICsgaW5zdGFsbCBoaW50IHdoZW4gaXQgaXNuJ3QuIFVzZSBhdCB0aGUgdG9wIG9mIGFueSBjb21tYW5kIHRoYXRcbiAqIHNoZWxscyBvdXQgdG8gYGNka2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVDZGtBdmFpbGFibGUoKTogdm9pZCB7XG4gIGlmIChjaGVja0Nka0F2YWlsYWJsZSgpKSByZXR1cm47XG4gIHByaW50RXJyb3IoJ0FXUyBDREsgaXMgbm90IGluc3RhbGxlZCBvciBub3QgYWNjZXNzaWJsZScpO1xuICBjb25zb2xlLmxvZygnSW5zdGFsbCBDREsgd2l0aDogbnBtIGluc3RhbGwgLWcgYXdzLWNkaycpO1xuICB0aHJvdyBuZXcgRXJyb3IoJ0FXUyBDREsgbm90IGZvdW5kJyk7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgZXhlY3V0aW5nIGEgQ0RLIHNoZWxsIGNvbW1hbmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrU2hlbGxPcHRpb25zIHtcbiAgLyoqIFdoZW4gYHRydWVgLCBwcmludHMgdGhlIGVycm9yIHRvIHN0ZGVyciBvbiBmYWlsdXJlLiAqL1xuICBkZWJ1Zz86IGJvb2xlYW47XG4gIC8qKiBXaGVuIGB0cnVlYCwgaW5oZXJpdHMgc3RkaW8gc28gb3V0cHV0IHN0cmVhbXMgdG8gdGhlIHRlcm1pbmFsLiBEZWZhdWx0cyB0byBgdHJ1ZWAuICovXG4gIHNob3dPdXRwdXQ/OiBib29sZWFuO1xuICAvKiogQWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gaW5qZWN0LiAqL1xuICBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vKipcbiAqIFJlc3VsdCBvZiBhIENESyBzaGVsbCBjb21tYW5kIGV4ZWN1dGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZGtTaGVsbFJlc3VsdCB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIGR1cmF0aW9uOiBudW1iZXI7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBDREsgQ0xJIGNvbW1hbmQgYXMgYSBjaGlsZCBwcm9jZXNzLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGZ1bGwgQ0RLIENMSSBjb21tYW5kIHN0cmluZyAoZS5nLiwgYGNkayBib290c3RyYXAgLi4uYCkuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGV4ZWN1dGlvbiBzZXR0aW5ncy5cbiAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIGBzdWNjZXNzYCBhbmQgYGR1cmF0aW9uYCBpbiBtcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWN1dGVDZGtTaGVsbENvbW1hbmQoXG4gIGNvbW1hbmQ6IHN0cmluZyxcbiAgb3B0aW9uczogQ2RrU2hlbGxPcHRpb25zID0ge30sXG4pOiBDZGtTaGVsbFJlc3VsdCB7XG4gIGNvbnN0IHsgZGVidWcgPSBmYWxzZSwgc2hvd091dHB1dCA9IHRydWUsIGVudjogZXh0cmFFbnYgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBlbnYgPSB7XG4gICAgICAuLi5wcm9jZXNzLmVudixcbiAgICAgIC4uLmV4dHJhRW52LFxuICAgIH07XG5cbiAgICBleGVjU3luYyhjb21tYW5kLCB7XG4gICAgICBzdGRpbzogc2hvd091dHB1dCA/IFsnaW5oZXJpdCcsICdpbmhlcml0JywgJ3BpcGUnXSA6ICdwaXBlJyxcbiAgICAgIGVudixcbiAgICB9KTtcblxuICAgIGNvbnN0IGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgZHVyYXRpb24sXG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzdGFydFRpbWU7XG5cbiAgICAvLyBFeHRyYWN0IHN0ZGVyci9zdGRvdXQgZnJvbSBleGVjU3luYyBlcnJvciB3aGVuIGF2YWlsYWJsZVxuICAgIGlmIChlcnJvciAmJiB0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmICdzdGRlcnInIGluIGVycm9yKSB7XG4gICAgICBjb25zdCBleGVjRXJyb3IgPSBlcnJvciBhcyB7IHN0ZGVycj86IEJ1ZmZlciB8IHN0cmluZzsgc3Rkb3V0PzogQnVmZmVyIHwgc3RyaW5nOyBzdGF0dXM/OiBudW1iZXIgfTtcbiAgICAgIGNvbnN0IHN0ZGVyciA9IGV4ZWNFcnJvci5zdGRlcnI/LnRvU3RyaW5nKCkudHJpbSgpO1xuICAgICAgY29uc3Qgc3Rkb3V0ID0gZXhlY0Vycm9yLnN0ZG91dD8udG9TdHJpbmcoKS50cmltKCk7XG5cbiAgICAgIGNvbnNvbGUuZXJyb3IoJycpO1xuICAgICAgY29uc29sZS5lcnJvcignQ0RLIGRlcGxveW1lbnQgZmFpbGVkOicpO1xuICAgICAgaWYgKHN0ZGVycikgY29uc29sZS5lcnJvcihzdGRlcnIpO1xuICAgICAgaWYgKHN0ZG91dCkgY29uc29sZS5lcnJvcihzdGRvdXQpO1xuICAgICAgaWYgKGV4ZWNFcnJvci5zdGF0dXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBFeGl0IGNvZGU6ICR7ZXhlY0Vycm9yLnN0YXR1c30gKGFmdGVyICR7ZHVyYXRpb259bXMpYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5lcnJvcignQ0RLIGV4ZWN1dGlvbiBmYWlsZWQ6JywgZXJyb3IpO1xuICAgIH1cblxuICAgIHRocm93IGVycm9yO1xuICB9XG59XG4iXX0=
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2Nkay11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFN0Q7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFDLFNBQWlCO0lBQ3RELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDdEQsQ0FBQztBQVFEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxJQUFZLEVBQUUsVUFBVSxHQUFHLFdBQVc7SUFDaEUsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksVUFBVSxFQUFFLENBQUM7SUFDcEMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFBQyxPQUFPLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQ3BDLElBQUksU0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQztnQkFDSCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxTQUFTLFVBQVUsR0FBRyxHQUFHLEVBQUU7b0JBQ3BELFFBQVEsRUFBRSxPQUFPO29CQUNqQixLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztpQkFDbEMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNyRCxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLHFDQUFxQztZQUN2QyxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU87WUFDTCxTQUFTLEVBQUUsS0FBSztZQUNoQixPQUFPLEVBQUUsSUFBSTtZQUNiLEtBQUssRUFBRSxVQUFVLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlO1NBQzFFLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFVBQVU7SUFDeEIsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixPQUFPLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQztBQUNoQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxrQkFBa0I7SUFDaEMsSUFBSSxpQkFBaUIsRUFBRTtRQUFFLE9BQU87SUFDaEMsVUFBVSxDQUFDLDRDQUE0QyxDQUFDLENBQUM7SUFDekQsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCO0lBQ3BDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsS0FBSyxHQUFHO1FBQUUsT0FBTztJQUVuRCxNQUFNLE9BQU8sR0FBRyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25GLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixZQUFZLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUN0RCxPQUFPO0lBQ1QsQ0FBQztJQUVELFVBQVUsQ0FBQyxzQ0FBc0MsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pHLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5RUFBeUUsQ0FBQyxDQUFDO0lBQ3ZGLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEVBQTBFLENBQUMsQ0FBQztJQUN4RixPQUFPLENBQUMsR0FBRyxDQUFDLDJFQUEyRSxDQUFDLENBQUM7SUFDekYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsOENBQThDLENBQUMsQ0FBQztJQUM1RCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0VBQW9FLENBQUMsQ0FBQztJQUNsRixPQUFPLENBQUMsR0FBRyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7SUFDaEUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDMUUsQ0FBQztBQXNCRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLE9BQWUsRUFDZixPQUFPLEdBQW9CLEVBQUU7SUFFN0IsTUFBTSxFQUFFLEtBQUssR0FBRyxLQUFLLEVBQUUsVUFBVSxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ3BFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUU3QixJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBRztZQUNWLEdBQUcsT0FBTyxDQUFDLEdBQUc7WUFDZCxHQUFHLFFBQVE7U0FDWixDQUFDO1FBRUYsUUFBUSxDQUFDLE9BQU8sRUFBRTtZQUNoQixLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07WUFDM0QsR0FBRztTQUNKLENBQUMsQ0FBQztRQUVILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUM7UUFFeEMsT0FBTztZQUNMLE9BQU8sRUFBRSxJQUFJO1lBQ2IsUUFBUTtTQUNULENBQUM7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUM7UUFFeEMsMkRBQTJEO1FBQzNELElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxRQUFRLElBQUksS0FBSyxFQUFFLENBQUM7WUFDNUQsTUFBTSxTQUFTLEdBQUcsS0FBZ0YsQ0FBQztZQUNuRyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25ELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFbkQsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNsQixPQUFPLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDeEMsSUFBSSxNQUFNO2dCQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEMsSUFBSSxNQUFNO2dCQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEMsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNuQyxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsU0FBUyxDQUFDLE1BQU0sV0FBVyxRQUFRLEtBQUssQ0FBQyxDQUFDO1lBQ3hFLENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHByaW50RXJyb3IsIHByaW50U3VjY2VzcyB9IGZyb20gJy4vb3V0cHV0LXV0aWxzLmpzJztcblxuLyoqXG4gKiBQYXRoIHRvIGRpc3QvYm9pbGVycGxhdGUuanMuIHRzYyBlbWl0cyBjb21tYW5kcyBhdCBkaXN0L2NvbW1hbmRzLywgc29cbiAqIGJvaWxlcnBsYXRlIGlzIG9uZSBsZXZlbCB1cC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVCb2lsZXJwbGF0ZVBhdGgoY2FsbGVyRGlyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcGF0aC5qb2luKGNhbGxlckRpciwgJy4uJywgJ2JvaWxlcnBsYXRlLmpzJyk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrSW5mbyB7XG4gIGF2YWlsYWJsZTogYm9vbGVhbjtcbiAgdmVyc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgZXJyb3I/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBDTEkgdG9vbCBpcyBpbnN0YWxsZWQgYW5kIHJldHVybnMgaXRzIHZlcnNpb24gb3V0cHV0LlxuICpcbiAqIFRyaWVzIGA8dG9vbD4gPHZlcnNpb25Bcmc+YCBmaXJzdC4gSWYgdGhhdCBmYWlscyAodHlwaWNhbGx5IGJlY2F1c2UgdGhlIHRvb2xcbiAqIGlzIG9uIFBBVEggdmlhIHRoZSB1c2VyJ3Mgc2hlbGwgcmMgYnV0IGV4ZWNTeW5jJ3MgZGVmYXVsdCBgL2Jpbi9zaGAgZG9lc24ndFxuICogc291cmNlIGl0KSwgZmFsbHMgYmFjayB0byBydW5uaW5nIHRocm91Z2ggdGhlIHVzZXIncyBsb2dpbitpbnRlcmFjdGl2ZSBzaGVsbFxuICogKGAkU0hFTEwgLWlsY2ApIHNvIG5vZGUgdmVyc2lvbiBtYW5hZ2VycyBsaWtlIG52bS9hc2RmIGFuZCBob21lYnJldyBwYXRoc1xuICogYmVjb21lIHZpc2libGUuIHN0ZGluIGlzIGlnbm9yZWQgc28gYW4gaW50ZXJhY3RpdmUgc2hlbGwgY2FuJ3QgYmxvY2sgb24gaW5wdXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb29sSW5mbyh0b29sOiBzdHJpbmcsIHZlcnNpb25BcmcgPSAnLS12ZXJzaW9uJyk6IENka0luZm8ge1xuICBjb25zdCBjbWQgPSBgJHt0b29sfSAke3ZlcnNpb25Bcmd9YDtcbiAgdHJ5IHtcbiAgICBjb25zdCBvdXRwdXQgPSBleGVjU3luYyhjbWQsIHsgZW5jb2Rpbmc6ICd1dGYtOCcsIHN0ZGlvOiAncGlwZScgfSk7XG4gICAgcmV0dXJuIHsgYXZhaWxhYmxlOiB0cnVlLCB2ZXJzaW9uOiBvdXRwdXQudHJpbSgpIH07XG4gIH0gY2F0Y2ggKGZpcnN0RXJyb3IpIHtcbiAgICBjb25zdCB1c2VyU2hlbGwgPSBwcm9jZXNzLmVudi5TSEVMTDtcbiAgICBpZiAodXNlclNoZWxsICYmICF1c2VyU2hlbGwuZW5kc1dpdGgoJy9zaCcpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBvdXRwdXQgPSBleGVjU3luYyhgJHt1c2VyU2hlbGx9IC1pbGMgJyR7Y21kfSdgLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6ICd1dGYtOCcsXG4gICAgICAgICAgc3RkaW86IFsnaWdub3JlJywgJ3BpcGUnLCAncGlwZSddLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsgYXZhaWxhYmxlOiB0cnVlLCB2ZXJzaW9uOiBvdXRwdXQudHJpbSgpIH07XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gZmFsbCB0aHJvdWdoIHRvIHRoZSBvcmlnaW5hbCBlcnJvclxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgYXZhaWxhYmxlOiBmYWxzZSxcbiAgICAgIHZlcnNpb246IG51bGwsXG4gICAgICBlcnJvcjogZmlyc3RFcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZmlyc3RFcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgQVdTIENESyBDTEkgaXMgaW5zdGFsbGVkIGFuZCByZXR1cm5zIGl0cyB2ZXJzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2RrSW5mbygpOiBDZGtJbmZvIHtcbiAgcmV0dXJuIGdldFRvb2xJbmZvKCdjZGsnKTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgQVdTIENESyBDTEkgaXMgaW5zdGFsbGVkIGFuZCBhY2Nlc3NpYmxlIG9uIHRoZSBQQVRILlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tDZGtBdmFpbGFibGUoKTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRDZGtJbmZvKCkuYXZhaWxhYmxlO1xufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCB0aGUgQVdTIENESyBDTEkgaXMgaW5zdGFsbGVkOyB0aHJvd3Mgd2l0aCBhIHVzZXItZnJpZW5kbHlcbiAqIG1lc3NhZ2UgKyBpbnN0YWxsIGhpbnQgd2hlbiBpdCBpc24ndC4gVXNlIGF0IHRoZSB0b3Agb2YgYW55IGNvbW1hbmQgdGhhdFxuICogc2hlbGxzIG91dCB0byBgY2RrYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUNka0F2YWlsYWJsZSgpOiB2b2lkIHtcbiAgaWYgKGNoZWNrQ2RrQXZhaWxhYmxlKCkpIHJldHVybjtcbiAgcHJpbnRFcnJvcignQVdTIENESyBpcyBub3QgaW5zdGFsbGVkIG9yIG5vdCBhY2Nlc3NpYmxlJyk7XG4gIGNvbnNvbGUubG9nKCdJbnN0YWxsIENESyB3aXRoOiBucG0gaW5zdGFsbCAtZyBhd3MtY2RrJyk7XG4gIHRocm93IG5ldyBFcnJvcignQVdTIENESyBub3QgZm91bmQnKTtcbn1cblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgdGhlIGxvY2FsIHRvb2xjaGFpbiBDREsgbmVlZHMgdG8gYnVuZGxlIHRoZSBQbHVnaW5Mb29rdXAgTGFtYmRhXG4gKiBpcyBwcmVzZW50LiBTeW50aCBidWlsZHMgdGhhdCBMYW1iZGEgdmlhIGBOb2RlanNGdW5jdGlvbmAgKGVzYnVpbGQpOyB3aGVuXG4gKiBlc2J1aWxkIGlzbid0IG9uIFBBVEgsIENESyBzaWxlbnRseSBmYWxscyBiYWNrIHRvICoqRG9ja2VyIGJ1bmRsaW5nKiosIHdoaWNoXG4gKiBjYW4ndCByZXNvbHZlIHRoZSBoYW5kbGVyJ3MgY3Jvc3MtZGlyZWN0b3J5IGltcG9ydHMgYW5kIGRpZXMgd2l0aCBhbiBvcGFxdWVcbiAqIGBDb3VsZCBub3QgcmVzb2x2ZSBcImF4aW9zXCJgIC8gYFwiLi4vY29uZmlnL2hhbmRsZXItY29uc3RhbnRzLmpzXCJgLiBwbnBtIGlzIGFsc29cbiAqIHJlcXVpcmVkIGJlY2F1c2UgdGhlIGhhbmRsZXIncyBsb2NrZmlsZSBpcyBgcG5wbS1sb2NrLnlhbWxgLCBzbyBDREsgZHJpdmVzXG4gKiBlc2J1aWxkIHRocm91Z2ggcG5wbS4gRmFpbCBmYXN0IGhlcmUgd2l0aCB0aGUgZml4IGluc3RlYWQgb2YgZGVlcCBpbiBhIGJ1bmRsZS5cbiAqXG4gKiBCeXBhc3Mgd2l0aCBgU0tJUF9CVU5ETEVSX0NIRUNLPTFgIChlLmcuIGFuIGVudmlyb25tZW50IHRoYXQgaW50ZW50aW9uYWxseVxuICogYnVuZGxlcyBpbiBEb2NrZXIgd2l0aCBhIHdvcmtpbmcgbW91bnQgc2NvcGUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQnVuZGxlckF2YWlsYWJsZSgpOiB2b2lkIHtcbiAgaWYgKHByb2Nlc3MuZW52LlNLSVBfQlVORExFUl9DSEVDSyA9PT0gJzEnKSByZXR1cm47XG5cbiAgY29uc3QgbWlzc2luZyA9IFsnZXNidWlsZCcsICdwbnBtJ10uZmlsdGVyKCh0b29sKSA9PiAhZ2V0VG9vbEluZm8odG9vbCkuYXZhaWxhYmxlKTtcbiAgaWYgKG1pc3NpbmcubGVuZ3RoID09PSAwKSB7XG4gICAgcHJpbnRTdWNjZXNzKCdCdW5kbGVyIChlc2J1aWxkICsgcG5wbSkgaXMgYXZhaWxhYmxlJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJpbnRFcnJvcihgTWlzc2luZyBsb2NhbCBidW5kbGluZyBwcmVyZXF1aXNpdGUke21pc3NpbmcubGVuZ3RoID4gMSA/ICdzJyA6ICcnfTogJHttaXNzaW5nLmpvaW4oJywgJyl9YCk7XG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgY29uc29sZS5sb2coJ1N5bnRoIGJ1bmRsZXMgdGhlIFBsdWdpbkxvb2t1cCBMYW1iZGEgdmlhIGVzYnVpbGQgKENESyBOb2RlanNGdW5jdGlvbikuJyk7XG4gIGNvbnNvbGUubG9nKCdXaXRob3V0IGVzYnVpbGQgKyBwbnBtIG9uIFBBVEgsIENESyBmYWxscyBiYWNrIHRvIERvY2tlciBidW5kbGluZywgd2hpY2gnKTtcbiAgY29uc29sZS5sb2coJ2ZhaWxzIHdpdGg6IENvdWxkIG5vdCByZXNvbHZlIFwiYXhpb3NcIiAvIFwiLi4vY29uZmlnL2hhbmRsZXItY29uc3RhbnRzLmpzXCIuJyk7XG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgY29uc29sZS5sb2coJ0luc3RhbGwgd2l0aDonKTtcbiAgY29uc29sZS5sb2coJyAgbnBtIGluc3RhbGwgLWcgZXNidWlsZEAwLjI4LjEgcG5wbUAxMC4zMy4wJyk7XG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgY29uc29sZS5sb2coJ0RvY3M6IHBpcGVsaW5lLW1hbmFnZXIubWQjcHJlcmVxdWlzaXRlcy1mb3ItbG9jYWwtcGlwZWxpbmUtZGVwbG95cycpO1xuICBjb25zb2xlLmxvZygnKFNldCBTS0lQX0JVTkRMRVJfQ0hFQ0s9MSB0byBieXBhc3MgdGhpcyBjaGVjay4pJyk7XG4gIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyBidW5kbGVyIHByZXJlcXVpc2l0ZXM6ICR7bWlzc2luZy5qb2luKCcsICcpfWApO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGV4ZWN1dGluZyBhIENESyBzaGVsbCBjb21tYW5kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENka1NoZWxsT3B0aW9ucyB7XG4gIC8qKiBXaGVuIGB0cnVlYCwgcHJpbnRzIHRoZSBlcnJvciB0byBzdGRlcnIgb24gZmFpbHVyZS4gKi9cbiAgZGVidWc/OiBib29sZWFuO1xuICAvKiogV2hlbiBgdHJ1ZWAsIGluaGVyaXRzIHN0ZGlvIHNvIG91dHB1dCBzdHJlYW1zIHRvIHRoZSB0ZXJtaW5hbC4gRGVmYXVsdHMgdG8gYHRydWVgLiAqL1xuICBzaG93T3V0cHV0PzogYm9vbGVhbjtcbiAgLyoqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGluamVjdC4gKi9cbiAgZW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgYSBDREsgc2hlbGwgY29tbWFuZCBleGVjdXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrU2hlbGxSZXN1bHQge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBkdXJhdGlvbjogbnVtYmVyO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGEgQ0RLIENMSSBjb21tYW5kIGFzIGEgY2hpbGQgcHJvY2Vzcy5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBmdWxsIENESyBDTEkgY29tbWFuZCBzdHJpbmcgKGUuZy4sIGBjZGsgYm9vdHN0cmFwIC4uLmApLlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBleGVjdXRpb24gc2V0dGluZ3MuXG4gKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCBgc3VjY2Vzc2AgYW5kIGBkdXJhdGlvbmAgaW4gbXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGVjdXRlQ2RrU2hlbGxDb21tYW5kKFxuICBjb21tYW5kOiBzdHJpbmcsXG4gIG9wdGlvbnM6IENka1NoZWxsT3B0aW9ucyA9IHt9LFxuKTogQ2RrU2hlbGxSZXN1bHQge1xuICBjb25zdCB7IGRlYnVnID0gZmFsc2UsIHNob3dPdXRwdXQgPSB0cnVlLCBlbnY6IGV4dHJhRW52IH0gPSBvcHRpb25zO1xuICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZW52ID0ge1xuICAgICAgLi4ucHJvY2Vzcy5lbnYsXG4gICAgICAuLi5leHRyYUVudixcbiAgICB9O1xuXG4gICAgZXhlY1N5bmMoY29tbWFuZCwge1xuICAgICAgc3RkaW86IHNob3dPdXRwdXQgPyBbJ2luaGVyaXQnLCAnaW5oZXJpdCcsICdwaXBlJ10gOiAncGlwZScsXG4gICAgICBlbnYsXG4gICAgfSk7XG5cbiAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzdGFydFRpbWU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGR1cmF0aW9uLFxuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lO1xuXG4gICAgLy8gRXh0cmFjdCBzdGRlcnIvc3Rkb3V0IGZyb20gZXhlY1N5bmMgZXJyb3Igd2hlbiBhdmFpbGFibGVcbiAgICBpZiAoZXJyb3IgJiYgdHlwZW9mIGVycm9yID09PSAnb2JqZWN0JyAmJiAnc3RkZXJyJyBpbiBlcnJvcikge1xuICAgICAgY29uc3QgZXhlY0Vycm9yID0gZXJyb3IgYXMgeyBzdGRlcnI/OiBCdWZmZXIgfCBzdHJpbmc7IHN0ZG91dD86IEJ1ZmZlciB8IHN0cmluZzsgc3RhdHVzPzogbnVtYmVyIH07XG4gICAgICBjb25zdCBzdGRlcnIgPSBleGVjRXJyb3Iuc3RkZXJyPy50b1N0cmluZygpLnRyaW0oKTtcbiAgICAgIGNvbnN0IHN0ZG91dCA9IGV4ZWNFcnJvci5zdGRvdXQ/LnRvU3RyaW5nKCkudHJpbSgpO1xuXG4gICAgICBjb25zb2xlLmVycm9yKCcnKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0NESyBkZXBsb3ltZW50IGZhaWxlZDonKTtcbiAgICAgIGlmIChzdGRlcnIpIGNvbnNvbGUuZXJyb3Ioc3RkZXJyKTtcbiAgICAgIGlmIChzdGRvdXQpIGNvbnNvbGUuZXJyb3Ioc3Rkb3V0KTtcbiAgICAgIGlmIChleGVjRXJyb3Iuc3RhdHVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRXhpdCBjb2RlOiAke2V4ZWNFcnJvci5zdGF0dXN9IChhZnRlciAke2R1cmF0aW9ufW1zKWApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZGVidWcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0NESyBleGVjdXRpb24gZmFpbGVkOicsIGVycm9yKTtcbiAgICB9XG5cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -43,8 +43,8 @@
43
43
  "typescript": "npm:@typescript/typescript6@^6.0.2",
44
44
  "yaml": "2.9.0",
45
45
  "zod": "4.4.3",
46
- "@pipeline-builder/api-core": "3.4.118",
47
46
  "@pipeline-builder/ai-core": "3.4.118",
47
+ "@pipeline-builder/api-core": "3.4.118",
48
48
  "@pipeline-builder/pipeline-core": "3.4.138"
49
49
  },
50
50
  "keywords": [
@@ -100,7 +100,7 @@
100
100
  "access": "public",
101
101
  "registry": "https://registry.npmjs.org/"
102
102
  },
103
- "version": "3.4.177",
103
+ "version": "3.4.178",
104
104
  "bugs": {
105
105
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
106
106
  },