@wbce/projen-d9 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -299,11 +299,26 @@ class D9Project extends projen_1.javascript.NodeProject {
299
299
  }
300
300
  addDockerfile() {
301
301
  this.dockerfile = new projen_shared_1.Dockerfile(this)
302
+ // builder stage: dev dependencies are installed so `npx projen` runs the version locked in package-lock.json
303
+ .fromAs('node', '22-bookworm-slim', 'builder')
304
+ .step('builder-update-npm', 'Update npm to fix dependencies')
305
+ .run('npm install -g npm@11.8.0')
306
+ .step('builder-install-pnpm', 'install pnpm')
307
+ .run('npm install -g pnpm@10.33.0')
308
+ .step('builder-copy-package', 'Copy package.json and package-lock.json first to leverage Docker layer caching')
309
+ .copy('package*.json', '/app/')
310
+ .step('builder-workdir', 'Set working directory')
311
+ .workdir('/app')
312
+ .step('builder-install-deps', 'Install dependencies - with dev dependencies, for projen')
313
+ .run('npm ci')
314
+ .step('builder-copy-source', 'Copy the rest of the application code')
315
+ .copy('.', '.')
316
+ .step('build-extension', 'build extensions')
317
+ .run('npx projen build-extensions')
318
+ // final stage
302
319
  .from('node', '22-bookworm-slim')
303
320
  .step('update-npm', 'Update npm to fix dependencies')
304
321
  .run('npm install -g npm@11.8.0')
305
- .step('install-pnpm', 'install pnpm')
306
- .run('npm install -g pnpm@10.33.0')
307
322
  .step('copy-package', 'Copy package.json and package-lock.json first to leverage Docker layer caching')
308
323
  .copy('package*.json', '/app/')
309
324
  .step('workdir', 'Set working directory')
@@ -314,16 +329,17 @@ class D9Project extends projen_1.javascript.NodeProject {
314
329
  .run('rm -rf node_modules/tedious/benchmarks')
315
330
  .step('copy-source', 'Copy the rest of the application code')
316
331
  .copy('.', '.')
317
- .step('build-extension', 'build extensions')
318
- .run('npx projen build-extensions')
332
+ .step('copy-extensions', 'Copy the built extensions from the builder stage')
333
+ .copy('/app/extensions', './extensions', { from: 'builder' })
319
334
  .step('start', 'Start d9 server')
320
335
  .cmdExec(['npx', 'directus', 'start']);
336
+ this.dockerignore = new projen_1.IgnoreFile(this, '.dockerignore', { ignorePatterns: ['**/node_modules', '.git'] });
321
337
  return this.dockerfile;
322
338
  }
323
339
  }
324
340
  exports.D9Project = D9Project;
325
341
  _a = JSII_RTTI_SYMBOL_1;
326
- D9Project[_a] = { fqn: "@wbce/projen-d9.D9Project", version: "0.1.0" };
342
+ D9Project[_a] = { fqn: "@wbce/projen-d9.D9Project", version: "0.1.2" };
327
343
  /**
328
344
  * @deprecated Use {@link D9Project} instead. The package was renamed to `@wbce/projen-d9` to reflect that it targets the d9 fork, not upstream Directus.
329
345
  */
@@ -331,5 +347,5 @@ class DirectusProject extends D9Project {
331
347
  }
332
348
  exports.DirectusProject = DirectusProject;
333
349
  _b = JSII_RTTI_SYMBOL_1;
334
- DirectusProject[_b] = { fqn: "@wbce/projen-d9.DirectusProject", version: "0.1.0" };
335
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtRUFBa0c7QUFDbEcsdURBQW9GO0FBQ3BGLG1DQUEwSTtBQUMxSSx1RUFBa0U7QUFDbEUsc0RBQW9FO0FBK0RwRSxNQUFhLFNBQVUsU0FBUSxtQkFBVSxDQUFDLFdBQVc7SUFhbkQsWUFBc0IsT0FBeUI7UUFDN0MsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksU0FBUyxDQUFDO1FBQzNELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxJQUFJLE9BQU8sQ0FBQztRQUMvRCxLQUFLLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWMsSUFBSSxtQkFBVSxDQUFDLGtCQUFrQixDQUFDLEdBQUc7WUFDM0UsTUFBTSxFQUFFLEtBQUssRUFBRSxzQ0FBc0M7WUFDckQsV0FBVyxFQUFFLElBQUk7WUFDakIsa0JBQWtCLEVBQUU7Z0JBQ2xCLGVBQWUsRUFBRTtvQkFDZixRQUFRLEVBQUUsd0NBQTJCLENBQUMsS0FBSztpQkFDNUM7YUFDRjtZQUNELFFBQVEsRUFBRSxLQUFLO1lBQ2YsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUk7Z0JBQ3hCLFFBQVEsRUFBRTtvQkFDUixLQUFLLE9BQU8sQ0FBQyxJQUFJLEVBQUU7b0JBQ25CLEVBQUU7b0JBQ0YsZ1BBQWdQO29CQUNoUCxFQUFFO29CQUNGLHNCQUFzQjtvQkFDdEIsRUFBRTtvQkFDRixPQUFPO29CQUNQLGdEQUFnRDtvQkFDaEQsOERBQThEO29CQUM5RCxLQUFLO29CQUNMLEVBQUU7b0JBQ0YscUlBQXFJO29CQUNySSxFQUFFO29CQUNGLFdBQVc7b0JBQ1gsRUFBRTtvQkFDRixtRkFBbUY7b0JBQ25GLEVBQUU7b0JBQ0YsT0FBTztvQkFDUCw0Q0FBNEM7b0JB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QUMsY0FBYyxFQUFFLGdGQUFnRixDQUFDO2FBQ3RHLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDO2FBQzlCLElBQUksQ0FBQyxTQUFTLEVBQUUsdUJBQXVCLENBQUM7YUFDeEMsT0FBTyxDQUFDLE1BQU0sQ0FBQzthQUNmLElBQUksQ0FBQyxjQUFjLEVBQUUsaURBQWlELENBQUM7YUFDdkUsR0FBRyxDQUFDLGlDQUFpQyxDQUFDO2FBQ3RDLElBQUksQ0FBQyxTQUFTLEVBQUUsMkRBQTJELENBQUM7YUFDNUUsR0FBRyxDQUFDLHdDQUF3QyxDQUFDO2FBQzdDLElBQUksQ0FBQyxhQUFhLEVBQUUsdUNBQXVDLENBQUM7YUFDNUQsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7YUFDZCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUM7YUFDM0MsR0FBRyxDQUFDLDZCQUE2QixDQUFDO2FBQ2xDLElBQUksQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUM7YUFDaEMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDOztBQWhXSCw4QkFrV0M7OztBQVFEOztHQUVHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLFNBQVM7O0FBQTlDLDBDQUFpRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFkZEV4dGVuc2lvbk9wdGlvbnMsIEQ5RXh0ZW5zaW9uVHlwZSwgRXh0ZW5zaW9uRm9sZGVyIH0gZnJvbSAnQHdiY2UvcHJvamVuLWQ5LWV4dGVuc2lvbic7XG5pbXBvcnQgeyBHaXRIdWJDb25maWcsIEdpdEh1YkNvbmZpZ09wdGlvbnMsIERvY2tlcmZpbGUgfSBmcm9tICdAd2JjZS9wcm9qZW4tc2hhcmVkJztcbmltcG9ydCB7IEFpQWdlbnQsIEFpSW5zdHJ1Y3Rpb25zLCBEb2NrZXJDb21wb3NlLCBEb2NrZXJDb21wb3NlU2VydmljZSwgamF2YXNjcmlwdCwgSnNvbkZpbGUsIFNhbXBsZUZpbGUsIFRhc2ssIHR5cGVzY3JpcHQgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgSm9iUGVybWlzc2lvbiB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbCc7XG5pbXBvcnQgeyBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUgfSBmcm9tICdwcm9qZW4vbGliL2phdmFzY3JpcHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VWZXJzaW9ucyB7XG4gIHJlYWRvbmx5IGQ5Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIEF0bGFzIGJpbmFyeSBkb3dubG9hZGVkIGJ5IGQ5LXBsdW1iaW5nLlxuICAgKiBAZGVmYXVsdCBcIjEuMy4zXCJcbiAgICovXG4gIHJlYWRvbmx5IGF0bGFzPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFN0b3JhZ2Ugc2hhcmVkIGJldHdlZW4gZW52aXJvbm1lbnRzLCB1c2VkIGJ5IGBkOS1wbHVtYmluZyBzYXZlYCBhbmQgYGQ5LXBsdW1iaW5nIGFwcGx5LXNjaGVtYWAgdG8gdHJhbnNmZXIgZmlsZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJtZWRpYXRlU3RvcmFnZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHN0b3JhZ2UgZHJpdmVyOiBzMywgZ2NzLCBhenVyZSwgbG9jYWwgb3IgY2xvdWRpbmFyeS5cbiAgICovXG4gIHJlYWRvbmx5IGRyaXZlcjogc3RyaW5nO1xuICAvKipcbiAgICogTm9uLXNlY3JldCBkcml2ZXIgb3B0aW9ucyAocm9vdCwgYnVja2V0LCByZWdpb24sIGVuZHBvaW50Li4uKS5cbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAvKipcbiAgICogU2VjcmV0IGRyaXZlciBvcHRpb25zLCBtYXBwaW5nIGVhY2ggb3B0aW9uIG5hbWUgdG8gdGhlIG5hbWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGhvbGRpbmcgaXRzIHZhbHVlLlxuICAgKiBPbmx5IHRoZSB2YXJpYWJsZSBuYW1lIGlzIHdyaXR0ZW4gdG8gYGQ5LXBsdW1iaW5nLmpzb25gLCBuZXZlciB0aGUgdmFsdWU6IGl0IGlzIHJlYWQgZnJvbSB0aGUgZW52aXJvbm1lbnQgKG9yIGAuZW52YCkgYXQgcnVudGltZS5cbiAgICogQGV4YW1wbGUgeyBrZXk6ICdTM19BQ0NFU1NfS0VZX0lEX0VOVl9WQVInLCBzZWNyZXQ6ICdTM19TRUNSRVRfQUNDRVNTX0tFWV9FTlZfVkFSJyB9IC8vIHRoZSBgc2VjcmV0YCBvcHRpb24gaXMgcmVhZCBmcm9tICRTM19TRUNSRVRfQUNDRVNTX0tFWV9FTlZfVkFSXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRFbnY/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb2YgdGhlIGQ5LXBsdW1iaW5nIENMSSwgd3JpdHRlbiB0byBgZDktcGx1bWJpbmcuanNvbmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1bWJpbmdPcHRpb25zIHtcbiAgLyoqXG4gICAqIFN0b3JhZ2Ugc2hhcmVkIGJldHdlZW4gZW52aXJvbm1lbnRzLlxuICAgKiBAZGVmYXVsdCAtIG5vbmUsIHRoZSBpbnRlcm1lZGlhdGUgc3RvcmFnZSBpcyBjb25maWd1cmVkIHdpdGggSU5URVJNRURJQVRFX1NUT1JBR0VfKiB2YXJpYWJsZXMgb3IgZmxhZ3NcbiAgICovXG4gIHJlYWRvbmx5IGludGVybWVkaWF0ZVN0b3JhZ2U/OiBJbnRlcm1lZGlhdGVTdG9yYWdlT3B0aW9ucztcbiAgLyoqXG4gICAqIERlZmF1bHQgbG9nIGxldmVsIG9mIHRoZSBDTEksIG92ZXJyaWRkZW4gYnkgdGhlIExPR19MRVZFTCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICogQGRlZmF1bHQgXCJkZWJ1Z1wiXG4gICAqL1xuICByZWFkb25seSBsb2dMZXZlbD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEOVByb2plY3RPcHRpb25zIGV4dGVuZHMgdHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMge1xuICAvKipcbiAgICogT3B0aW9ucyBmb3IgdGhlIEdpdEh1YiBjb25maWd1cmF0aW9uLlxuICAgKiBTZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBHaXRIdWIgY29uZmlnIGVudGlyZWx5LlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgR2l0SHViQ29uZmlnIHdpdGggcHJvamVjdCBkZWZhdWx0c1xuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViQ29uZmlnPzogR2l0SHViQ29uZmlnT3B0aW9ucyB8IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9ucyBmb2xkZXIuXG4gICAqIEBkZWZhdWx0IFwiZXh0ZW5zaW9uLXBhY2thZ2VzXCJcbiAgICovXG4gIHJlYWRvbmx5IGV4dGVuc2lvbnNGb2xkZXJOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBwYWNrYWdlVmVyc2lvbnM/OiBQYWNrYWdlVmVyc2lvbnM7XG59XG5cbmV4cG9ydCBjbGFzcyBEOVByb2plY3QgZXh0ZW5kcyBqYXZhc2NyaXB0Lk5vZGVQcm9qZWN0IHtcblxuICBwdWJsaWMgcmVhZG9ubHkgZ2l0aHViQ29uZmlnPzogR2l0SHViQ29uZmlnO1xuICBwdWJsaWMgZXh0ZW5zaW9ucyE6IEV4dGVuc2lvbkZvbGRlcjtcbiAgcHVibGljIGV4dGVuc2lvbkZvbGRlciE6IHN0cmluZztcbiAgcHVibGljIGJ1aWxkRXh0ZW5zaW9uVGFzayE6IFRhc2s7XG4gIHB1YmxpYyBkb2NrZXJmaWxlITogRG9ja2VyZmlsZTtcbiAgcHVibGljIGRvY2tlckNvbXBvc2VGaWxlITogRG9ja2VyQ29tcG9zZTtcbiAgcHVibGljIGQ5U2VydmljZSE6IERvY2tlckNvbXBvc2VTZXJ2aWNlO1xuICBwdWJsaWMgZGF0YWJhc2VTZXJ2aWNlITogRG9ja2VyQ29tcG9zZVNlcnZpY2U7XG4gIHB1YmxpYyBjYWNoZVNlcnZpY2UhOiBEb2NrZXJDb21wb3NlU2VydmljZTtcbiAgcHJpdmF0ZSBwbHVtYmluZ0NvbmZpZyE6IEpzb25GaWxlO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBvcHRpb25zOiBEOVByb2plY3RPcHRpb25zKSB7XG4gICAgY29uc3QgZDlWZXJzaW9uID0gb3B0aW9ucy5wYWNrYWdlVmVyc2lvbnM/LmQ5IHx8ICcxMi4wLjE1JztcbiAgICBjb25zdCBhdGxhc1ZlcnNpb24gPSBvcHRpb25zLnBhY2thZ2VWZXJzaW9ucz8uYXRsYXMgfHwgJzEuMy4zJztcbiAgICBzdXBlcih7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgcGFja2FnZU1hbmFnZXI6IG9wdGlvbnMucGFja2FnZU1hbmFnZXIgPz8gamF2YXNjcmlwdC5Ob2RlUGFja2FnZU1hbmFnZXIuTlBNLFxuICAgICAgZ2l0aHViOiBmYWxzZSwgLy8gV2UgdXNlIG91ciBvd24gR2l0SHViQ29uZmlnIGluc3RlYWRcbiAgICAgIGRlcHNVcGdyYWRlOiB0cnVlLFxuICAgICAgZGVwc1VwZ3JhZGVPcHRpb25zOiB7XG4gICAgICAgIHdvcmtmbG93T3B0aW9uczoge1xuICAgICAgICAgIHNjaGVkdWxlOiBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUuREFJTFksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbGljZW5zZWQ6IGZhbHNlLFxuICAgICAgcmVhZG1lOiBvcHRpb25zLnJlYWRtZSA/PyB7XG4gICAgICAgIGNvbnRlbnRzOiBbXG4gICAgICAgICAgYCMgJHtvcHRpb25zLm5hbWV9YCxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnQSBbZDldKGh0dHBzOi8vZ2l0aHViLmNvbS9MYVdlYmNhcHN1bGUvZDkpIChEaXJlY3R1cyA5IGZvcmspIHByb2plY3Qgc2NhZmZvbGRlZCB3aXRoIFtgQHdiY2UvcHJvamVuLWQ5YF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQHdiY2UvcHJvamVuLWQ5KS4gRGV2ZWxvcCBsb2NhbGx5IGFnYWluc3QgRG9ja2VyIENvbXBvc2UsIHRoZW4gYnVpbGQgYSBEb2NrZXIgaW1hZ2UgdG8gZGVwbG95IGFueXdoZXJlLicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMjIExvY2FsIGRldmVsb3BtZW50JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnYGBgc2gnLFxuICAgICAgICAgICducHggcHJvamVuIGluc3RhbGwgICAgICAjIGluc3RhbGwgZGVwZW5kZW5jaWVzJyxcbiAgICAgICAgICAnbnB4IHByb2plbiBmaXJzdC1ydW4gICAgIyBib290IHN0YWNrLCBjcmVhdGUgYWRtaW4sIHN0YXJ0IGQ5JyxcbiAgICAgICAgICAnYGBgJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnT3BlbiBodHRwOi8vbG9jYWxob3N0OjgwNTUgYW5kIHNpZ24gaW4gYXMgYGFkbWluQGV4YW1wbGUuY29tYCAvIGB0b3RvdG90b2AuIEV4dGVuc2lvbnMgYXV0by1yZWxvYWQgKGBFWFRFTlNJT05TX0FVVE9fUkVMT0FEPXRydWVgKS4nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICcjIyBEZXBsb3knLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdBIGBEb2NrZXJmaWxlYCBpcyBpbmNsdWRlZC4gQnVpbGQgYW5kIHB1c2ggdGhlIGltYWdlIGZvciB5b3VyIHRhcmdldCBlbnZpcm9ubWVudDonLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdgYGBzaCcsXG4gICAgICAgICAgJ2RvY2tlciBidWlsZCAtdCA8cmVnaXN0cnk+LzxpbWFnZT46PHRhZz4gLicsXG4gICAgICAgICAgJ2RvY2tlciBwdXNoIDxyZWdpc3RyeT4vPGltYWdlPjo8dGFnPicsXG4gICAgICAgICAgJ2BgYCcsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ0NvbmZpZ3VyZSB0aGUgZGVwbG95ZWQgaW5zdGFuY2Ugd2l0aCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGRhdGFiYXNlLCBjYWNoZSwgc2VjcmV0cykg4oCUIHNlZSB0aGUgZDkgZG9jcy4nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICcjIyBDb21tb24gdGFza3MnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICd8IFRhc2sgfCBEZXNjcmlwdGlvbiB8JyxcbiAgICAgICAgICAnfCAtLS0gfCAtLS0gfCcsXG4gICAgICAgICAgJ3wgYG5weCBwcm9qZW4gcnVuYCB8IFN0YXJ0IGQ5IChgZG9ja2VyIGNvbXBvc2UgdXAgZDlgKSB8JyxcbiAgICAgICAgICAnfCBgbnB4IHByb2plbiBidWlsZC1leHRlbnNpb25zIFtuYW1lXWAgfCBJbnN0YWxsIGFuZCBidWlsZCBhbGwgZXh0ZW5zaW9ucyAob3Igb25seSBgbmFtZWApIHwnLFxuICAgICAgICAgICd8IGBucHggcHJvamVuIGNyZWF0ZS1hbi1hZG1pbmAgfCBDcmVhdGUgdGhlIGRlZmF1bHQgYWRtaW4gdXNlciB8JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnU2VlIGAucHJvamVuL3Rhc2tzLmpzb25gIGZvciB0aGUgZnVsbCBsaXN0LicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMjIENvbmZpZ3VyYXRpb24nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdFZGl0IGAucHJvamVucmMuanNgIGFuZCBydW4gYG5weCBwcm9qZW5gIHRvIHJlZ2VuZXJhdGUgcHJvamVjdCBmaWxlcy4gTG9jYWwgZW52aXJvbm1lbnQgb3ZlcnJpZGVzIGdvIGluIGAuZW52LmxvY2FsYC4nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICcjIyBFeHRlbnNpb25zJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnRXh0ZW5zaW9ucyBsaXZlIHVuZGVyIGAuL3BsdWdpbnMvYC4gQWRkIG5ldyBvbmVzIGluIGAucHJvamVucmMuanNgOicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ2BgYGpzJyxcbiAgICAgICAgICBcImltcG9ydCB7IEQ5RXh0ZW5zaW9uVHlwZSB9IGZyb20gJ0B3YmNlL3Byb2plbi1kOS1leHRlbnNpb24nO1wiLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIFwicHJvamVjdC5hZGRFeHRlbnNpb24oJ215LWhvb2snLCBbRDlFeHRlbnNpb25UeXBlLkhPT0tdKTtcIixcbiAgICAgICAgICAnYGBgJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnVGhlbiBgbnB4IHByb2plbiAmJiBucHggcHJvamVuIGJ1aWxkLWV4dGVuc2lvbnNgLicsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICB9LFxuICAgICAgZGV2RGVwczogW1xuICAgICAgICAnQHdiY2UvcHJvamVuLWQ5JyxcbiAgICAgICAgJ0B3YmNlL3Byb2plbi1kOS1leHRlbnNpb24nLFxuICAgICAgICAuLi4ob3B0aW9ucy5kZXZEZXBzID8/IFtdKSxcbiAgICAgIF0sXG4gICAgICBkZXBzOiBbYEB3YmNlLWQ5L2RpcmVjdHVzOUAke2Q5VmVyc2lvbn1gXSxcbiAgICB9KTtcblxuICAgIC8vIE5vIHRzY29uZmlnIG1lYW5zIG5vIHRzYyAtLWJ1aWxkIGluIGNvbXBpbGVcbiAgICB0aGlzLmNvbXBpbGVUYXNrLnJlc2V0KCk7XG5cbiAgICB0aGlzLnBsdW1iaW5nQ29uZmlnID0gbmV3IEpzb25GaWxlKHRoaXMsICdkOS1wbHVtYmluZy5qc29uJywge1xuICAgICAgb2JqOiB7IGF0bGFzVmVyc2lvbiB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRFeHRlbnNpb25Gb2xkZXIoKTtcbiAgICB0aGlzLmFkZERvY2tlckNvbXBvc2UoKTtcbiAgICB0aGlzLmFkZEZpcnN0UnVuVGFzaygpO1xuICAgIHRoaXMuYWRkQnVpbGRFeHRlbnNpb25UYXNrKCk7XG4gICAgdGhpcy5hZGRSdW5UYXNrKCk7XG4gICAgdGhpcy5hZGREOVBsdW1iaW5nVGFzaygpO1xuICAgIHRoaXMuYWRkRG9ja2VyZmlsZSgpO1xuICAgIHRoaXMuYWRkQ3JlYXRlQWRtaW5Vc2VyVGFzaygpO1xuXG4gICAgbmV3IEFpSW5zdHJ1Y3Rpb25zKHRoaXMsIHtcbiAgICAgIGFnZW50czogW0FpQWdlbnQuQ0xBVURFXSxcbiAgICB9KTtcblxuICAgIGlmIChvcHRpb25zLmdpdGh1YkNvbmZpZyAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuZ2l0aHViQ29uZmlnID0gbmV3IEdpdEh1YkNvbmZpZyh0aGlzLCBvcHRpb25zLmdpdGh1YkNvbmZpZyk7XG4gICAgICB0aGlzLmFkZFNhdmVCcmFuY2hXb3JrZmxvdygpO1xuICAgIH1cbiAgICB0aGlzLmdpdGlnbm9yZS5hZGRQYXR0ZXJucygndXBsb2FkcycpO1xuICAgIHRoaXMuZ2l0aWdub3JlLmFkZFBhdHRlcm5zKCcqKi8uRFNfU3RvcmUnKTtcbiAgICB0aGlzLmdpdGlnbm9yZS5hZGRQYXR0ZXJucygnLmVudi5sb2NhbCcpO1xuXG4gICAgLy8gQ3JlYXRlIGFuIGVtcHR5IC5lbnYubG9jYWwgaWYgaXQgZG9lc24ndCBleGlzdCwgc28gRG9ja2VyIGRvZXNuJ3QgbW91bnQgYSBkaXJlY3RvcnlcbiAgICBuZXcgU2FtcGxlRmlsZSh0aGlzLCAnLmVudi5sb2NhbCcsIHsgY29udGVudHM6ICcjIExvY2FsIGVudmlyb25tZW50IG92ZXJyaWRlcyBmb3IgZDknIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFeHRlbnNpb25Gb2xkZXIoKSB7XG4gICAgY29uc3QgZm9sZGVyTmFtZSA9IHRoaXMub3B0aW9ucy5leHRlbnNpb25zRm9sZGVyTmFtZSA/PyAncGx1Z2lucyc7XG4gICAgdGhpcy5leHRlbnNpb25zID0gbmV3IEV4dGVuc2lvbkZvbGRlcih7IHBhcmVudDogdGhpcywgbmFtZTogZm9sZGVyTmFtZSB9KTtcbiAgICB0aGlzLmV4dGVuc2lvbkZvbGRlciA9IGZvbGRlck5hbWU7XG4gICAgdGhpcy5naXRpZ25vcmUuZXhjbHVkZSgnZXh0ZW5zaW9ucy8qJyk7XG4gICAgdGhpcy5naXRpZ25vcmUuaW5jbHVkZSgnZXh0ZW5zaW9ucy90ZW1wbGF0ZXMvJyk7XG4gIH1cblxuICBwdWJsaWMgYWRkRXh0ZW5zaW9uKG5hbWU6IHN0cmluZywgZXh0ZW5zaW9uVHlwZXM6IEQ5RXh0ZW5zaW9uVHlwZVtdLCBvcHRpb25zPzogQWRkRXh0ZW5zaW9uT3B0aW9ucyApIHtcbiAgICByZXR1cm4gdGhpcy5leHRlbnNpb25zLmFkZChuYW1lLCBleHRlbnNpb25UeXBlcywgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgY29uZmlndXJlUGx1bWJpbmcob3B0aW9uczogUGx1bWJpbmdPcHRpb25zKSB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob3B0aW9ucykpIHtcbiAgICAgIHRoaXMucGx1bWJpbmdDb25maWcuYWRkT3ZlcnJpZGUoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRGaXJzdFJ1blRhc2soKSB7XG4gICAgY29uc3QgdGFzayA9IHRoaXMuYWRkVGFzaygnZmlyc3QtcnVuJywge1xuICAgICAgZGVzY3JpcHRpb246ICdJbml0aWFsaXplIGFuZCBzdGFydCBhIGZyZXNoIGQ5IGluc3RhbmNlJyxcbiAgICB9KTtcbiAgICBjb25zdCBhZG1pbkVtYWlsID0gJ2FkbWluQGV4YW1wbGUuY29tJztcbiAgICBjb25zdCB1c2VyTm90RXhpc3RzQ29uZGl0aW9uID0gYGRvY2tlciBjb21wb3NlIGV4ZWMgZGF0YWJhc2UgcHNxbCAtVSBkOSAtZCBkOSAtdEFjIFwiU0VMRUNUIGNvdW50KCopIEZST00gZGlyZWN0dXNfdXNlcnMgV0hFUkUgZW1haWwgPSAnJHthZG1pbkVtYWlsfSdcIiB8IGdyZXAgLXEgJ14wJCdgO1xuICAgIGNvbnN0IGVtcHR5RGF0YWJhc2VDb25kaXRpb24gPSAnZG9ja2VyIGNvbXBvc2UgZXhlYyBkYXRhYmFzZSBwc3FsIC1VIGQ5IC1kIGQ5IC10QWMgXCJTRUxFQ1QgY291bnQoKikgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIFdIRVJFIHRhYmxlX25hbWUgTElLRSBcXCdkaXJlY3R1c18lXFwnXCIgfCBncmVwIC1xIFxcJ14wJFxcJyc7XG4gICAgdGFzay5leGVjKCdkb2NrZXIgY29tcG9zZSB1cCAtZCAtLXdhaXQgZGF0YWJhc2UgY2FjaGUnKTtcbiAgICB0YXNrLmV4ZWMoJ25weCBkOS1wbHVtYmluZyBmaXJzdC1pbXBvcnQgLS1ob3N0IGxvY2FsaG9zdCAtLXVzZXIgZDkgLS1wYXNzd29yZCBkOSAtLWRhdGFiYXNlIGQ5Jywge1xuICAgICAgY29uZGl0aW9uOiAndGVzdCAtZCAuL3NxbCcsXG4gICAgfSk7XG4gICAgdGFzay5leGVjKCdkb2NrZXIgY29tcG9zZSBydW4gLS1ybSBkOSBucHggZGlyZWN0dXMgYm9vdHN0cmFwJywge1xuICAgICAgY29uZGl0aW9uOiBgdGVzdCAhIC1kIC4vc3FsICYmICR7ZW1wdHlEYXRhYmFzZUNvbmRpdGlvbn1gLFxuICAgIH0pO1xuICAgIHRhc2suZXhlYyhgQURNSU5fUk9MRV9JRD0kKGRvY2tlciBjb21wb3NlIGV4ZWMgZGF0YWJhc2UgcHNxbCAtVSBkOSAtZCBkOSAtdEFjIFwiU0VMRUNUIGlkIEZST00gZGlyZWN0dXNfcm9sZXMgV0hFUkUgYWRtaW5fYWNjZXNzID0gdHJ1ZSBMSU1JVCAxXCIpICYmIGRvY2tlciBjb21wb3NlIHJ1biAtLXJtIGQ5IG5weCBkaXJlY3R1cyB1c2VycyBjcmVhdGUgLS1lbWFpbCAke2FkbWluRW1haWx9IC0tcGFzc3dvcmQgdG90b3RvdG8gLS1yb2xlIFwiJEFETUlOX1JPTEVfSURcImAsIHtcbiAgICAgIGNvbmRpdGlvbjogdXNlck5vdEV4aXN0c0NvbmRpdGlvbixcbiAgICB9KTtcbiAgICB0YXNrLnNheShgVXNlciAke2FkbWluRW1haWx9IGhhcyBiZWVuIGNyZWF0ZWQgd2l0aCBwYXNzd29yZCB0b3RvdG90b2AsIHtcbiAgICAgIGNvbmRpdGlvbjogdXNlck5vdEV4aXN0c0NvbmRpdGlvbixcbiAgICB9KTtcbiAgICB0YXNrLnNheShgVXNlciAke2FkbWluRW1haWx9IGFscmVhZHkgZXhpc3RzLCBza2lwcGluZyBjcmVhdGlvbmAsIHtcbiAgICAgIGNvbmRpdGlvbjogYCEgJHt1c2VyTm90RXhpc3RzQ29uZGl0aW9ufWAsXG4gICAgfSk7XG4gICAgdGFzay5leGVjKCdkb2NrZXIgY29tcG9zZSB1cCBkOScpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRDcmVhdGVBZG1pblVzZXJUYXNrKCkge1xuICAgIGNvbnN0IHRhc2sgPSB0aGlzLmFkZFRhc2soJ2NyZWF0ZS1hbi1hZG1pbicsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ3JlYXRlIGFuIGFkbWluIHVzZXInLFxuICAgIH0pO1xuICAgIGNvbnN0IGFkbWluRW1haWwgPSAnYWRtaW5AZXhhbXBsZS5jb20nO1xuICAgIGNvbnN0IHVzZXJOb3RFeGlzdHNDb25kaXRpb24gPSBgZG9ja2VyIGNvbXBvc2UgZXhlYyBkYXRhYmFzZSBwc3FsIC1VIGQ5IC1kIGQ5IC10QWMgXCJTRUxFQ1QgY291bnQoKikgRlJPTSBkaXJlY3R1c191c2VycyBXSEVSRSBlbWFpbCA9ICcke2FkbWluRW1haWx9J1wiIHwgZ3JlcCAtcSAnXjAkJ2A7XG4gICAgdGFzay5leGVjKCdkb2NrZXIgY29tcG9zZSB1cCAtZCAtLXdhaXQgZGF0YWJhc2UgY2FjaGUnKTtcbiAgICB0YXNrLmV4ZWMoYEFETUlOX1JPTEVfSUQ9JChkb2NrZXIgY29tcG9zZSBleGVjIGRhdGFiYXNlIHBzcWwgLVUgZDkgLWQgZDkgLXRBYyBcIlNFTEVDVCBpZCBGUk9NIGRpcmVjdHVzX3JvbGVzIFdIRVJFIGFkbWluX2FjY2VzcyA9IHRydWUgTElNSVQgMVwiKSAmJiBkb2NrZXIgY29tcG9zZSBydW4gLS1ybSBkOSBucHggZGlyZWN0dXMgdXNlcnMgY3JlYXRlIC0tZW1haWwgJHthZG1pbkVtYWlsfSAtLXBhc3N3b3JkIHRvdG90b3RvIC0tcm9sZSBcIiRBRE1JTl9ST0xFX0lEXCJgLCB7XG4gICAgICBjb25kaXRpb246IHVzZXJOb3RFeGlzdHNDb25kaXRpb24sXG4gICAgfSk7XG4gICAgdGFzay5zYXkoYFVzZXIgJHthZG1pbkVtYWlsfSBoYXMgYmVlbiBjcmVhdGVkIHdpdGggcGFzc3dvcmQgdG90b3RvdG9gLCB7XG4gICAgICBjb25kaXRpb246IHVzZXJOb3RFeGlzdHNDb25kaXRpb24sXG4gICAgfSk7XG4gICAgdGFzay5zYXkoYFVzZXIgJHthZG1pbkVtYWlsfSBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmcgY3JlYXRpb25gLCB7XG4gICAgICBjb25kaXRpb246IGAhICR7dXNlck5vdEV4aXN0c0NvbmRpdGlvbn1gLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRSdW5UYXNrKCkge1xuICAgIGNvbnN0IHRhc2sgPSB0aGlzLmFkZFRhc2soJ3J1bicsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnc3RhcnQgdGhlIGQ5IGluc3RhbmNlJyxcbiAgICB9KTtcbiAgICB0YXNrLmV4ZWMoJ2RvY2tlciBjb21wb3NlIHVwIGQ5Jyk7XG4gIH1cblxuICBwcml2YXRlIGFkZEQ5UGx1bWJpbmdUYXNrKCkge1xuICAgIGNvbnN0IHRhc2sgPSB0aGlzLmFkZFRhc2soJ2Q5LXBsdW1iaW5nJywge1xuICAgICAgZGVzY3JpcHRpb246ICdSdW4gdGhlIGQ5LXBsdW1iaW5nIENMSSAoc2F2ZSwgYXBwbHktc2NoZW1hLCBmaXJzdC1pbXBvcnQuLi4pLiBVc2UgLS1oZWxwIHRvIGxpc3QgYWxsIHN1YmNvbW1hbmRzLicsXG4gICAgfSk7XG4gICAgdGFzay5zYXkoJ1RpcDogeW91IGNhbiBhbHNvIGNhbGwgaXQgZGlyZWN0bHkgd2l0aCBgbnB4IGQ5LXBsdW1iaW5nIDxjb21tYW5kPmAnKTtcbiAgICB0YXNrLmV4ZWMoJ25weCBkOS1wbHVtYmluZyBcIiRAXCInLCB7IHJlY2VpdmVBcmdzOiB0cnVlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRCdWlsZEV4dGVuc2lvblRhc2soKSB7XG4gICAgdGhpcy5idWlsZEV4dGVuc2lvblRhc2sgPSB0aGlzLmFkZFRhc2soJ2J1aWxkLWV4dGVuc2lvbnMnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0J1aWxkIHRoZSBkOSBleHRlbnNpb25zJyxcbiAgICB9KTtcbiAgICB0aGlzLmJ1aWxkRXh0ZW5zaW9uVGFzay5leGVjKGBjZCAke3RoaXMuZXh0ZW5zaW9uRm9sZGVyfSAmJiBwbnBtIGluc3RhbGxgKTtcbiAgICAvLyBwcm9qZW4gcmVwbGFjZXMgXCIkQFwiIHdpdGggdGhlIHF1b3RlZCB0YXNrIGFyZ3M7IGBzZXQgLS1gIHR1cm5zIHRoZW0gYmFjayBpbnRvICQxXG4gICAgdGhpcy5idWlsZEV4dGVuc2lvblRhc2suZXhlYyhcbiAgICAgIGBjZCAke3RoaXMuZXh0ZW5zaW9uRm9sZGVyfSAmJiBzZXQgLS0gXCIkQFwiICYmIGlmIFsgLW4gXCIkMVwiIF07IHRoZW4gcG5wbSAtLXJlY3Vyc2l2ZSAtLWZpbHRlciBcIiQxLi4uXCIgcnVuIGJ1aWxkOyBlbHNlIHBucG0gcnVuIC0tcmVjdXJzaXZlIGJ1aWxkOyBmaWAsXG4gICAgICB7IHJlY2VpdmVBcmdzOiB0cnVlIH0sXG4gICAgKTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBhZGREb2NrZXJDb21wb3NlKCkge1xuICAgIGNvbnN0IGRjID0gbmV3IERvY2tlckNvbXBvc2UodGhpcyk7XG5cbiAgICB0aGlzLmRhdGFiYXNlU2VydmljZSA9IGRjLmFkZFNlcnZpY2UoJ2RhdGFiYXNlJywge1xuICAgICAgaW1hZ2U6ICdwb3N0Z2lzL3Bvc3RnaXM6MTMtbWFzdGVyJyxcbiAgICAgIHZvbHVtZXM6IFtcbiAgICAgICAgRG9ja2VyQ29tcG9zZS5uYW1lZFZvbHVtZSgncGdkYXRhJywgJy92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScpLFxuICAgICAgXSxcbiAgICAgIHBvcnRzOiBbXG4gICAgICAgIERvY2tlckNvbXBvc2UucG9ydE1hcHBpbmcoNTQzMiwgNTQzMiksXG4gICAgICBdLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgUE9TVEdSRVNfVVNFUjogJ2Q5JyxcbiAgICAgICAgUE9TVEdSRVNfUEFTU1dPUkQ6ICdkOScsXG4gICAgICAgIFBPU1RHUkVTX0RCOiAnZDknLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuY2FjaGVTZXJ2aWNlID0gZGMuYWRkU2VydmljZSgnY2FjaGUnLCB7XG4gICAgICBpbWFnZTogJ3JlZGlzOjYnLFxuICAgICAgdm9sdW1lczogW1xuICAgICAgICBEb2NrZXJDb21wb3NlLm5hbWVkVm9sdW1lKCdyZWRpc19zdG9yYWdlJywgJy9kYXRhJyksXG4gICAgICBdLFxuICAgICAgcG9ydHM6IFtcbiAgICAgICAgRG9ja2VyQ29tcG9zZS5wb3J0TWFwcGluZyg2Mzc5LCA2Mzc5KSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmQ5U2VydmljZSA9IGRjLmFkZFNlcnZpY2UoJ2Q5Jywge1xuICAgICAgaW1hZ2VCdWlsZDogeyBjb250ZXh0OiAnLicgfSxcbiAgICAgIHBvcnRzOiBbXG4gICAgICAgIERvY2tlckNvbXBvc2UucG9ydE1hcHBpbmcoODA1NSwgODA1NSksXG4gICAgICBdLFxuICAgICAgdm9sdW1lczogW1xuICAgICAgICBEb2NrZXJDb21wb3NlLmJpbmRWb2x1bWUoJy4vdXBsb2FkcycsICcvYXBwL3VwbG9hZHMnKSxcbiAgICAgICAgRG9ja2VyQ29tcG9zZS5iaW5kVm9sdW1lKCcuL2V4dGVuc2lvbnMnLCAnL2FwcC9leHRlbnNpb25zJyksXG4gICAgICBdLFxuICAgICAgLy8gZGVwZW5kc09uIGlzIHNldCB2aWEgYWRkT3ZlcnJpZGUgYmVsb3cgd2l0aCBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgS0VZOiAnc29tZS1yYW5kb20ta2V5JyxcbiAgICAgICAgU0VDUkVUOiAnYW5vdGhlci1yYW5kb20ta2V5JyxcbiAgICAgICAgQ09ORklHX1BBVEg6ICcuZW52LmxvY2FsJyxcbiAgICAgICAgREJfQ0xJRU5UOiAncGcnLFxuICAgICAgICBEQl9IT1NUOiAnZGF0YWJhc2UnLFxuICAgICAgICBEQl9QT1JUOiAnNTQzMicsXG4gICAgICAgIERCX0RBVEFCQVNFOiAnZDknLFxuICAgICAgICBEQl9VU0VSOiAnZDknLFxuICAgICAgICBEQl9QQVNTV09SRDogJ2Q5JyxcbiAgICAgICAgQ0FDSEVfRU5BQkxFRDogJ2ZhbHNlJyxcbiAgICAgICAgQ0FDSEVfU1RPUkU6ICdyZWRpcycsXG4gICAgICAgIENBQ0hFX1JFRElTX0hPU1Q6ICdjYWNoZScsXG4gICAgICAgIE1FU1NFTkdFUl9TVE9SRTogJ3JlZGlzJyxcbiAgICAgICAgTUVTU0VOR0VSX1JFRElTOiAncmVkaXM6Ly9jYWNoZTo2Mzc5JyxcbiAgICAgICAgQ0FDSEVfU1RBVFVTX0hFQURFUjogJ2NhY2hlLWhpdCcsXG4gICAgICAgIENPUlNfRU5BQkxFRDogJ3RydWUnLFxuICAgICAgICBDT1JTX09SSUdJTjogJ3RydWUnLFxuICAgICAgICBMT0dfTEVWRUw6ICdpbmZvJyxcbiAgICAgICAgQURNSU5fRU1BSUw6ICdhZG1pbkBleGFtcGxlLmNvbScsXG4gICAgICAgIEFETUlOX1BBU1NXT1JEOiAndG90b3RvdG8nLFxuICAgICAgICBFWFRFTlNJT05TX0FVVE9fUkVMT0FEOiAndHJ1ZScsXG4gICAgICAgIFZBTElEQVRFX0VOVElUSUVTX1RPS0VOU19BUElfS0VZOiAndG90bycsXG4gICAgICAgIEFXU19LTVNfS0VZX0lEOiAndHV0dScsXG4gICAgICB9LFxuICAgICAgY29tbWFuZDogWydzaCcsICctYycsICducHggZGlyZWN0dXMgc3RhcnQnXSxcbiAgICB9KTtcblxuICAgIHRoaXMuZDlTZXJ2aWNlLmFkZFZvbHVtZShEb2NrZXJDb21wb3NlLmJpbmRWb2x1bWUoJy4vLmVudi5sb2NhbCcsICcvYXBwLy5lbnYubG9jYWwnKSk7XG5cbiAgICAvLyBBZGQgaGVhbHRoY2hlY2sgZm9yIGRhdGFiYXNlIChub3QgbmF0aXZlbHkgc3VwcG9ydGVkIGJ5IHByb2plbiBEb2NrZXJDb21wb3NlKVxuICAgIGRjLmZpbGUuYWRkT3ZlcnJpZGUoJ3NlcnZpY2VzLmRhdGFiYXNlLmhlYWx0aGNoZWNrJywge1xuICAgICAgdGVzdDogWydDTUQnLCAncGdfaXNyZWFkeScsICctLWhvc3Q9bG9jYWxob3N0JywgJy0tdXNlcm5hbWU9ZDknXSxcbiAgICAgIGludGVydmFsOiAnMTBzJyxcbiAgICAgIHRpbWVvdXQ6ICc1cycsXG4gICAgICByZXRyaWVzOiA1LFxuICAgICAgc3RhcnRfaW50ZXJ2YWw6ICc1cycsXG4gICAgICBzdGFydF9wZXJpb2Q6ICczMHMnLFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIGhlYWx0aGNoZWNrIGZvciBjYWNoZVxuICAgIGRjLmZpbGUuYWRkT3ZlcnJpZGUoJ3NlcnZpY2VzLmNhY2hlLmhlYWx0aGNoZWNrJywge1xuICAgICAgdGVzdDogWydDTUQtU0hFTEwnLCAnWyAkKHJlZGlzLWNsaSBwaW5nKSA9IFxcJ1BPTkdcXCcgXSddLFxuICAgICAgaW50ZXJ2YWw6ICcxMHMnLFxuICAgICAgdGltZW91dDogJzVzJyxcbiAgICAgIHJldHJpZXM6IDUsXG4gICAgICBzdGFydF9pbnRlcnZhbDogJzVzJyxcbiAgICAgIHN0YXJ0X3BlcmlvZDogJzMwcycsXG4gICAgfSk7XG5cbiAgICAvLyBPdmVycmlkZSBkZXBlbmRzX29uIHRvIHVzZSBjb25kaXRpb24gc3ludGF4XG4gICAgZGMuZmlsZS5hZGRPdmVycmlkZSgnc2VydmljZXMuZDkuZGVwZW5kc19vbicsIHtcbiAgICAgIGNhY2hlOiB7IGNvbmRpdGlvbjogJ3NlcnZpY2VfaGVhbHRoeScgfSxcbiAgICAgIGRhdGFiYXNlOiB7IGNvbmRpdGlvbjogJ3NlcnZpY2VfaGVhbHRoeScgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuZG9ja2VyQ29tcG9zZUZpbGUgPSBkYztcblxuICAgIHJldHVybiBkYztcbiAgfVxuXG4gIHByaXZhdGUgYWRkU2F2ZUJyYW5jaFdvcmtmbG93KCkge1xuICAgIGNvbnN0IHdvcmtmbG93ID0gdGhpcy5naXRodWJDb25maWchLmFkZFdvcmtmbG93KCdzYXZlLWJyYW5jaCcpO1xuICAgIHdvcmtmbG93Lm9uKHsgcHVzaDogeyBicmFuY2hlczogWycqLXNhdmUnXSB9IH0pO1xuICAgIHdvcmtmbG93LmFkZEpvYignY3JlYXRlLXByJywge1xuICAgICAgbmFtZTogJ0NyZWF0ZSBQdWxsIFJlcXVlc3QnLFxuICAgICAgcnVuc09uOiBbJ3VidW50dS1sYXRlc3QnXSxcbiAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgIHB1bGxSZXF1ZXN0czogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgIH0sXG4gICAgICBzdGVwczogW1xuICAgICAgICB7IG5hbWU6ICdDaGVja291dCcsIHVzZXM6ICdhY3Rpb25zL2NoZWNrb3V0QHY0JyB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0NyZWF0ZSBQdWxsIFJlcXVlc3QnLFxuICAgICAgICAgIHJ1bjogJ2doIHByIGNyZWF0ZSAtLXRpdGxlIFwiU2F2ZTogJHtHSVRIVUJfUkVGX05BTUUlLXNhdmV9XCIgLS1ib2R5IFwiQXV0by1nZW5lcmF0ZWQgUFIgZnJvbSBicmFuY2ggXFxcXGAke0dJVEhVQl9SRUZfTkFNRSUtc2F2ZX1cXFxcYFwiIC0tYmFzZSBcIiR7R0lUSFVCX1JFRl9OQU1FJS1zYXZlfVwiIHx8IGVjaG8gXCJQUiBhbHJlYWR5IGV4aXN0c1wiJyxcbiAgICAgICAgICBlbnY6IHsgR0hfVE9LRU46ICcke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX0nIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREb2NrZXJmaWxlKCkge1xuICAgIHRoaXMuZG9ja2VyZmlsZSA9IG5ldyBEb2NrZXJmaWxlKHRoaXMpXG4gICAgICAuZnJvbSgnbm9kZScsICcyMi1ib29rd29ybS1zbGltJylcbiAgICAgIC5zdGVwKCd1cGRhdGUtbnBtJywgJ1VwZGF0ZSBucG0gdG8gZml4IGRlcGVuZGVuY2llcycpXG4gICAgICAucnVuKCducG0gaW5zdGFsbCAtZyBucG1AMTEuOC4wJylcbiAgICAgIC5zdGVwKCdpbnN0YWxsLXBucG0nLCAnaW5zdGFsbCBwbnBtJylcbiAgICAgIC5ydW4oJ25wbSBpbnN0YWxsIC1nIHBucG1AMTAuMzMuMCcpXG4gICAgICAuc3RlcCgnY29weS1wYWNrYWdlJywgJ0NvcHkgcGFja2FnZS5qc29uIGFuZCBwYWNrYWdlLWxvY2suanNvbiBmaXJzdCB0byBsZXZlcmFnZSBEb2NrZXIgbGF5ZXIgY2FjaGluZycpXG4gICAgICAuY29weSgncGFja2FnZSouanNvbicsICcvYXBwLycpXG4gICAgICAuc3RlcCgnd29ya2RpcicsICdTZXQgd29ya2luZyBkaXJlY3RvcnknKVxuICAgICAgLndvcmtkaXIoJy9hcHAnKVxuICAgICAgLnN0ZXAoJ2luc3RhbGwtZGVwcycsICdJbnN0YWxsIGRlcGVuZGVuY2llcyAtIHdpdGhvdXQgZGV2IGRlcGVuZGVuY2llcycpXG4gICAgICAucnVuKCdOT0RFX0VOVj1wcm9kdWN0aW9uIG5wbSBpbnN0YWxsJylcbiAgICAgIC5zdGVwKCdjbGVhbnVwJywgJ0NsZWFuaW5nIGJlbmNobWFya3MgZm9sZGVyIGluIHRlZGlvdXMgbW9kdWxlIGZvciBzZWN1cml0eScpXG4gICAgICAucnVuKCdybSAtcmYgbm9kZV9tb2R1bGVzL3RlZGlvdXMvYmVuY2htYXJrcycpXG4gICAgICAuc3RlcCgnY29weS1zb3VyY2UnLCAnQ29weSB0aGUgcmVzdCBvZiB0aGUgYXBwbGljYXRpb24gY29kZScpXG4gICAgICAuY29weSgnLicsICcuJylcbiAgICAgIC5zdGVwKCdidWlsZC1leHRlbnNpb24nLCAnYnVpbGQgZXh0ZW5zaW9ucycpXG4gICAgICAucnVuKCducHggcHJvamVuIGJ1aWxkLWV4dGVuc2lvbnMnKVxuICAgICAgLnN0ZXAoJ3N0YXJ0JywgJ1N0YXJ0IGQ5IHNlcnZlcicpXG4gICAgICAuY21kRXhlYyhbJ25weCcsICdkaXJlY3R1cycsICdzdGFydCddKTtcbiAgICByZXR1cm4gdGhpcy5kb2NrZXJmaWxlO1xuICB9XG5cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rIEQ5UHJvamVjdE9wdGlvbnN9IGluc3RlYWQuIFRoZSBwYWNrYWdlIHdhcyByZW5hbWVkIHRvIGBAd2JjZS9wcm9qZW4tZDlgIHRvIHJlZmxlY3QgdGhhdCBpdCB0YXJnZXRzIHRoZSBkOSBmb3JrLCBub3QgdXBzdHJlYW0gRGlyZWN0dXMuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0dXNQcm9qZWN0T3B0aW9ucyBleHRlbmRzIEQ5UHJvamVjdE9wdGlvbnMge31cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rIEQ5UHJvamVjdH0gaW5zdGVhZC4gVGhlIHBhY2thZ2Ugd2FzIHJlbmFtZWQgdG8gYEB3YmNlL3Byb2plbi1kOWAgdG8gcmVmbGVjdCB0aGF0IGl0IHRhcmdldHMgdGhlIGQ5IGZvcmssIG5vdCB1cHN0cmVhbSBEaXJlY3R1cy5cbiAqL1xuZXhwb3J0IGNsYXNzIERpcmVjdHVzUHJvamVjdCBleHRlbmRzIEQ5UHJvamVjdCB7fVxuIl19
350
+ DirectusProject[_b] = { fqn: "@wbce/projen-d9.DirectusProject", version: "0.1.2" };
351
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtRUFBa0c7QUFDbEcsdURBQW9GO0FBQ3BGLG1DQUFzSjtBQUN0Six1RUFBa0U7QUFDbEUsc0RBQW9FO0FBb0VwRSxNQUFhLFNBQVUsU0FBUSxtQkFBVSxDQUFDLFdBQVc7SUFjbkQsWUFBc0IsT0FBeUI7UUFDN0MsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksU0FBUyxDQUFDO1FBQzNELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxJQUFJLE9BQU8sQ0FBQztRQUMvRCxLQUFLLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWMsSUFBSSxtQkFBVSxDQUFDLGtCQUFrQixDQUFDLEdBQUc7WUFDM0UsTUFBTSxFQUFFLEtBQUssRUFBRSxzQ0FBc0M7WUFDckQsV0FBVyxFQUFFLElBQUk7WUFDakIsa0JBQWtCLEVBQUU7Z0JBQ2xCLGVBQWUsRUFBRTtvQkFDZixRQUFRLEVBQUUsd0NBQTJCLENBQUMsS0FBSztpQkFDNUM7YUFDRjtZQUNELFFBQVEsRUFBRSxLQUFLO1lBQ2YsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUk7Z0JBQ3hCLFFBQVEsRUFBRTtvQkFDUixLQUFLLE9BQU8sQ0FBQyxJQUFJLEVBQUU7b0JBQ25CLEVBQUU7b0JBQ0YsZ1BBQWdQO29CQUNoUCxFQUFFO29CQUNGLHNCQUFzQjtvQkFDdEIsRUFBRTtvQkFDRixPQUFPO29CQUNQLGdEQUFnRDtvQkFDaEQsOERBQThEO29CQUM5RCxLQUFLO29CQUNMLEVBQUU7b0JBQ0YscUlBQXFJO29CQUNySSxFQUFFO29CQUNGLFdBQVc7b0JBQ1gsRUFBRTtvQkFDRixtRkFBbUY7b0JBQ25GLEVBQUU7b0JBQ0YsT0FBTztvQkFDUCw0Q0FBNEM7b0JB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RSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7YUFDNUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQzthQUNoQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLG1CQUFVLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxFQUFFLGNBQWMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzRyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQzs7QUFqWEgsOEJBbVhDOzs7QUFRRDs7R0FFRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxTQUFTOztBQUE5QywwQ0FBaUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZGRFeHRlbnNpb25PcHRpb25zLCBEOUV4dGVuc2lvblR5cGUsIEV4dGVuc2lvbkZvbGRlciB9IGZyb20gJ0B3YmNlL3Byb2plbi1kOS1leHRlbnNpb24nO1xuaW1wb3J0IHsgR2l0SHViQ29uZmlnLCBHaXRIdWJDb25maWdPcHRpb25zLCBEb2NrZXJmaWxlIH0gZnJvbSAnQHdiY2UvcHJvamVuLXNoYXJlZCc7XG5pbXBvcnQgeyBBaUFnZW50LCBBaUluc3RydWN0aW9ucywgRG9ja2VyQ29tcG9zZSwgRG9ja2VyQ29tcG9zZVNlcnZpY2UsIElnbm9yZUZpbGUsIGphdmFzY3JpcHQsIEpzb25GaWxlLCBTYW1wbGVGaWxlLCBUYXNrLCB0eXBlc2NyaXB0IH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IEpvYlBlcm1pc3Npb24gfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWwnO1xuaW1wb3J0IHsgVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlIH0gZnJvbSAncHJvamVuL2xpYi9qYXZhc2NyaXB0JztcblxuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlVmVyc2lvbnMge1xuICByZWFkb25seSBkOT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBBdGxhcyBiaW5hcnkgZG93bmxvYWRlZCBieSBkOS1wbHVtYmluZy5cbiAgICogQGRlZmF1bHQgXCIxLjMuM1wiXG4gICAqL1xuICByZWFkb25seSBhdGxhcz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBTdG9yYWdlIHNoYXJlZCBiZXR3ZWVuIGVudmlyb25tZW50cywgdXNlZCBieSBgZDktcGx1bWJpbmcgc2F2ZWAgYW5kIGBkOS1wbHVtYmluZyBhcHBseS1zY2hlbWFgIHRvIHRyYW5zZmVyIGZpbGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVybWVkaWF0ZVN0b3JhZ2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBzdG9yYWdlIGRyaXZlcjogczMsIGdjcywgYXp1cmUsIGxvY2FsIG9yIGNsb3VkaW5hcnkuXG4gICAqL1xuICByZWFkb25seSBkcml2ZXI6IHN0cmluZztcbiAgLyoqXG4gICAqIE5vbi1zZWNyZXQgZHJpdmVyIG9wdGlvbnMgKHJvb3QsIGJ1Y2tldCwgcmVnaW9uLCBlbmRwb2ludC4uLikuXG4gICAqL1xuICByZWFkb25seSBvcHRpb25zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgLyoqXG4gICAqIFNlY3JldCBkcml2ZXIgb3B0aW9ucywgbWFwcGluZyBlYWNoIG9wdGlvbiBuYW1lIHRvIHRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBob2xkaW5nIGl0cyB2YWx1ZS5cbiAgICogT25seSB0aGUgdmFyaWFibGUgbmFtZSBpcyB3cml0dGVuIHRvIGBkOS1wbHVtYmluZy5qc29uYCwgbmV2ZXIgdGhlIHZhbHVlOiBpdCBpcyByZWFkIGZyb20gdGhlIGVudmlyb25tZW50IChvciBgLmVudmApIGF0IHJ1bnRpbWUuXG4gICAqIEBleGFtcGxlIHsga2V5OiAnUzNfQUNDRVNTX0tFWV9JRF9FTlZfVkFSJywgc2VjcmV0OiAnUzNfU0VDUkVUX0FDQ0VTU19LRVlfRU5WX1ZBUicgfSAvLyB0aGUgYHNlY3JldGAgb3B0aW9uIGlzIHJlYWQgZnJvbSAkUzNfU0VDUkVUX0FDQ0VTU19LRVlfRU5WX1ZBUlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0RW52PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9mIHRoZSBkOS1wbHVtYmluZyBDTEksIHdyaXR0ZW4gdG8gYGQ5LXBsdW1iaW5nLmpzb25gLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdW1iaW5nT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTdG9yYWdlIHNoYXJlZCBiZXR3ZWVuIGVudmlyb25tZW50cy5cbiAgICogQGRlZmF1bHQgLSBub25lLCB0aGUgaW50ZXJtZWRpYXRlIHN0b3JhZ2UgaXMgY29uZmlndXJlZCB3aXRoIElOVEVSTUVESUFURV9TVE9SQUdFXyogdmFyaWFibGVzIG9yIGZsYWdzXG4gICAqL1xuICByZWFkb25seSBpbnRlcm1lZGlhdGVTdG9yYWdlPzogSW50ZXJtZWRpYXRlU3RvcmFnZU9wdGlvbnM7XG4gIC8qKlxuICAgKiBEZWZhdWx0IGxvZyBsZXZlbCBvZiB0aGUgQ0xJLCBvdmVycmlkZGVuIGJ5IHRoZSBMT0dfTEVWRUwgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqIEBkZWZhdWx0IFwiZGVidWdcIlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nTGV2ZWw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBkOSBmb2xkZXIga2VwdCBpbiB0aGUgc25hcHNob3QsIG92ZXJyaWRkZW4gYnkgdGhlIENPTU1PTl9GT0xERVJfTkFNRSBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICogQGRlZmF1bHQgXCJkOS1wbHVtYmluZy1jb21tb25cIlxuICAgKi9cbiAgcmVhZG9ubHkgY29tbW9uRm9sZGVyTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEOVByb2plY3RPcHRpb25zIGV4dGVuZHMgdHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMge1xuICAvKipcbiAgICogT3B0aW9ucyBmb3IgdGhlIEdpdEh1YiBjb25maWd1cmF0aW9uLlxuICAgKiBTZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBHaXRIdWIgY29uZmlnIGVudGlyZWx5LlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgR2l0SHViQ29uZmlnIHdpdGggcHJvamVjdCBkZWZhdWx0c1xuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViQ29uZmlnPzogR2l0SHViQ29uZmlnT3B0aW9ucyB8IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9ucyBmb2xkZXIuXG4gICAqIEBkZWZhdWx0IFwiZXh0ZW5zaW9uLXBhY2thZ2VzXCJcbiAgICovXG4gIHJlYWRvbmx5IGV4dGVuc2lvbnNGb2xkZXJOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBwYWNrYWdlVmVyc2lvbnM/OiBQYWNrYWdlVmVyc2lvbnM7XG59XG5cbmV4cG9ydCBjbGFzcyBEOVByb2plY3QgZXh0ZW5kcyBqYXZhc2NyaXB0Lk5vZGVQcm9qZWN0IHtcblxuICBwdWJsaWMgcmVhZG9ubHkgZ2l0aHViQ29uZmlnPzogR2l0SHViQ29uZmlnO1xuICBwdWJsaWMgZXh0ZW5zaW9ucyE6IEV4dGVuc2lvbkZvbGRlcjtcbiAgcHVibGljIGV4dGVuc2lvbkZvbGRlciE6IHN0cmluZztcbiAgcHVibGljIGJ1aWxkRXh0ZW5zaW9uVGFzayE6IFRhc2s7XG4gIHB1YmxpYyBkb2NrZXJmaWxlITogRG9ja2VyZmlsZTtcbiAgcHVibGljIGRvY2tlcmlnbm9yZSE6IElnbm9yZUZpbGU7XG4gIHB1YmxpYyBkb2NrZXJDb21wb3NlRmlsZSE6IERvY2tlckNvbXBvc2U7XG4gIHB1YmxpYyBkOVNlcnZpY2UhOiBEb2NrZXJDb21wb3NlU2VydmljZTtcbiAgcHVibGljIGRhdGFiYXNlU2VydmljZSE6IERvY2tlckNvbXBvc2VTZXJ2aWNlO1xuICBwdWJsaWMgY2FjaGVTZXJ2aWNlITogRG9ja2VyQ29tcG9zZVNlcnZpY2U7XG4gIHByaXZhdGUgcGx1bWJpbmdDb25maWchOiBKc29uRmlsZTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgb3B0aW9uczogRDlQcm9qZWN0T3B0aW9ucykge1xuICAgIGNvbnN0IGQ5VmVyc2lvbiA9IG9wdGlvbnMucGFja2FnZVZlcnNpb25zPy5kOSB8fCAnMTIuMC4xNSc7XG4gICAgY29uc3QgYXRsYXNWZXJzaW9uID0gb3B0aW9ucy5wYWNrYWdlVmVyc2lvbnM/LmF0bGFzIHx8ICcxLjMuMyc7XG4gICAgc3VwZXIoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHBhY2thZ2VNYW5hZ2VyOiBvcHRpb25zLnBhY2thZ2VNYW5hZ2VyID8/IGphdmFzY3JpcHQuTm9kZVBhY2thZ2VNYW5hZ2VyLk5QTSxcbiAgICAgIGdpdGh1YjogZmFsc2UsIC8vIFdlIHVzZSBvdXIgb3duIEdpdEh1YkNvbmZpZyBpbnN0ZWFkXG4gICAgICBkZXBzVXBncmFkZTogdHJ1ZSxcbiAgICAgIGRlcHNVcGdyYWRlT3B0aW9uczoge1xuICAgICAgICB3b3JrZmxvd09wdGlvbnM6IHtcbiAgICAgICAgICBzY2hlZHVsZTogVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlLkRBSUxZLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGxpY2Vuc2VkOiBmYWxzZSxcbiAgICAgIHJlYWRtZTogb3B0aW9ucy5yZWFkbWUgPz8ge1xuICAgICAgICBjb250ZW50czogW1xuICAgICAgICAgIGAjICR7b3B0aW9ucy5uYW1lfWAsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ0EgW2Q5XShodHRwczovL2dpdGh1Yi5jb20vTGFXZWJjYXBzdWxlL2Q5KSAoRGlyZWN0dXMgOSBmb3JrKSBwcm9qZWN0IHNjYWZmb2xkZWQgd2l0aCBbYEB3YmNlL3Byb2plbi1kOWBdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0B3YmNlL3Byb2plbi1kOSkuIERldmVsb3AgbG9jYWxseSBhZ2FpbnN0IERvY2tlciBDb21wb3NlLCB0aGVuIGJ1aWxkIGEgRG9ja2VyIGltYWdlIHRvIGRlcGxveSBhbnl3aGVyZS4nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICcjIyBMb2NhbCBkZXZlbG9wbWVudCcsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ2BgYHNoJyxcbiAgICAgICAgICAnbnB4IHByb2plbiBpbnN0YWxsICAgICAgIyBpbnN0YWxsIGRlcGVuZGVuY2llcycsXG4gICAgICAgICAgJ25weCBwcm9qZW4gZmlyc3QtcnVuICAgICMgYm9vdCBzdGFjaywgY3JlYXRlIGFkbWluLCBzdGFydCBkOScsXG4gICAgICAgICAgJ2BgYCcsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ09wZW4gaHR0cDovL2xvY2FsaG9zdDo4MDU1IGFuZCBzaWduIGluIGFzIGBhZG1pbkBleGFtcGxlLmNvbWAgLyBgdG90b3RvdG9gLiBFeHRlbnNpb25zIGF1dG8tcmVsb2FkIChgRVhURU5TSU9OU19BVVRPX1JFTE9BRD10cnVlYCkuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMgRGVwbG95JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnQSBgRG9ja2VyZmlsZWAgaXMgaW5jbHVkZWQuIEJ1aWxkIGFuZCBwdXNoIHRoZSBpbWFnZSBmb3IgeW91ciB0YXJnZXQgZW52aXJvbm1lbnQ6JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnYGBgc2gnLFxuICAgICAgICAgICdkb2NrZXIgYnVpbGQgLXQgPHJlZ2lzdHJ5Pi88aW1hZ2U+Ojx0YWc+IC4nLFxuICAgICAgICAgICdkb2NrZXIgcHVzaCA8cmVnaXN0cnk+LzxpbWFnZT46PHRhZz4nLFxuICAgICAgICAgICdgYGAnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdDb25maWd1cmUgdGhlIGRlcGxveWVkIGluc3RhbmNlIHdpdGggZW52aXJvbm1lbnQgdmFyaWFibGVzIChkYXRhYmFzZSwgY2FjaGUsIHNlY3JldHMpIOKAlCBzZWUgdGhlIGQ5IGRvY3MuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMgQ29tbW9uIHRhc2tzJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnfCBUYXNrIHwgRGVzY3JpcHRpb24gfCcsXG4gICAgICAgICAgJ3wgLS0tIHwgLS0tIHwnLFxuICAgICAgICAgICd8IGBucHggcHJvamVuIHJ1bmAgfCBTdGFydCBkOSAoYGRvY2tlciBjb21wb3NlIHVwIGQ5YCkgfCcsXG4gICAgICAgICAgJ3wgYG5weCBwcm9qZW4gYnVpbGQtZXh0ZW5zaW9ucyBbbmFtZV1gIHwgSW5zdGFsbCBhbmQgYnVpbGQgYWxsIGV4dGVuc2lvbnMgKG9yIG9ubHkgYG5hbWVgKSB8JyxcbiAgICAgICAgICAnfCBgbnB4IHByb2plbiBjcmVhdGUtYW4tYWRtaW5gIHwgQ3JlYXRlIHRoZSBkZWZhdWx0IGFkbWluIHVzZXIgfCcsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ1NlZSBgLnByb2plbi90YXNrcy5qc29uYCBmb3IgdGhlIGZ1bGwgbGlzdC4nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICcjIyBDb25maWd1cmF0aW9uJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnRWRpdCBgLnByb2plbnJjLmpzYCBhbmQgcnVuIGBucHggcHJvamVuYCB0byByZWdlbmVyYXRlIHByb2plY3QgZmlsZXMuIExvY2FsIGVudmlyb25tZW50IG92ZXJyaWRlcyBnbyBpbiBgLmVudi5sb2NhbGAuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMgRXh0ZW5zaW9ucycsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ0V4dGVuc2lvbnMgbGl2ZSB1bmRlciBgLi9wbHVnaW5zL2AuIEFkZCBuZXcgb25lcyBpbiBgLnByb2plbnJjLmpzYDonLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdgYGBqcycsXG4gICAgICAgICAgXCJpbXBvcnQgeyBEOUV4dGVuc2lvblR5cGUgfSBmcm9tICdAd2JjZS9wcm9qZW4tZDktZXh0ZW5zaW9uJztcIixcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBcInByb2plY3QuYWRkRXh0ZW5zaW9uKCdteS1ob29rJywgW0Q5RXh0ZW5zaW9uVHlwZS5IT09LXSk7XCIsXG4gICAgICAgICAgJ2BgYCcsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ1RoZW4gYG5weCBwcm9qZW4gJiYgbnB4IHByb2plbiBidWlsZC1leHRlbnNpb25zYC4nLFxuICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgfSxcbiAgICAgIGRldkRlcHM6IFtcbiAgICAgICAgJ0B3YmNlL3Byb2plbi1kOScsXG4gICAgICAgICdAd2JjZS9wcm9qZW4tZDktZXh0ZW5zaW9uJyxcbiAgICAgICAgLi4uKG9wdGlvbnMuZGV2RGVwcyA/PyBbXSksXG4gICAgICBdLFxuICAgICAgZGVwczogW2BAd2JjZS1kOS9kaXJlY3R1czlAJHtkOVZlcnNpb259YF0sXG4gICAgfSk7XG5cbiAgICAvLyBObyB0c2NvbmZpZyBtZWFucyBubyB0c2MgLS1idWlsZCBpbiBjb21waWxlXG4gICAgdGhpcy5jb21waWxlVGFzay5yZXNldCgpO1xuXG4gICAgdGhpcy5wbHVtYmluZ0NvbmZpZyA9IG5ldyBKc29uRmlsZSh0aGlzLCAnZDktcGx1bWJpbmcuanNvbicsIHtcbiAgICAgIG9iajogeyBhdGxhc1ZlcnNpb24gfSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkRXh0ZW5zaW9uRm9sZGVyKCk7XG4gICAgdGhpcy5hZGREb2NrZXJDb21wb3NlKCk7XG4gICAgdGhpcy5hZGRGaXJzdFJ1blRhc2soKTtcbiAgICB0aGlzLmFkZEJ1aWxkRXh0ZW5zaW9uVGFzaygpO1xuICAgIHRoaXMuYWRkUnVuVGFzaygpO1xuICAgIHRoaXMuYWRkRDlQbHVtYmluZ1Rhc2soKTtcbiAgICB0aGlzLmFkZERvY2tlcmZpbGUoKTtcbiAgICB0aGlzLmFkZENyZWF0ZUFkbWluVXNlclRhc2soKTtcblxuICAgIG5ldyBBaUluc3RydWN0aW9ucyh0aGlzLCB7XG4gICAgICBhZ2VudHM6IFtBaUFnZW50LkNMQVVERV0sXG4gICAgfSk7XG5cbiAgICBpZiAob3B0aW9ucy5naXRodWJDb25maWcgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmdpdGh1YkNvbmZpZyA9IG5ldyBHaXRIdWJDb25maWcodGhpcywgb3B0aW9ucy5naXRodWJDb25maWcpO1xuICAgICAgdGhpcy5hZGRTYXZlQnJhbmNoV29ya2Zsb3coKTtcbiAgICB9XG4gICAgdGhpcy5naXRpZ25vcmUuYWRkUGF0dGVybnMoJ3VwbG9hZHMnKTtcbiAgICB0aGlzLmdpdGlnbm9yZS5hZGRQYXR0ZXJucygnKiovLkRTX1N0b3JlJyk7XG4gICAgdGhpcy5naXRpZ25vcmUuYWRkUGF0dGVybnMoJy5lbnYubG9jYWwnKTtcblxuICAgIC8vIENyZWF0ZSBhbiBlbXB0eSAuZW52LmxvY2FsIGlmIGl0IGRvZXNuJ3QgZXhpc3QsIHNvIERvY2tlciBkb2Vzbid0IG1vdW50IGEgZGlyZWN0b3J5XG4gICAgbmV3IFNhbXBsZUZpbGUodGhpcywgJy5lbnYubG9jYWwnLCB7IGNvbnRlbnRzOiAnIyBMb2NhbCBlbnZpcm9ubWVudCBvdmVycmlkZXMgZm9yIGQ5JyB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRXh0ZW5zaW9uRm9sZGVyKCkge1xuICAgIGNvbnN0IGZvbGRlck5hbWUgPSB0aGlzLm9wdGlvbnMuZXh0ZW5zaW9uc0ZvbGRlck5hbWUgPz8gJ3BsdWdpbnMnO1xuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IG5ldyBFeHRlbnNpb25Gb2xkZXIoeyBwYXJlbnQ6IHRoaXMsIG5hbWU6IGZvbGRlck5hbWUgfSk7XG4gICAgdGhpcy5leHRlbnNpb25Gb2xkZXIgPSBmb2xkZXJOYW1lO1xuICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoJ2V4dGVuc2lvbnMvKicpO1xuICAgIHRoaXMuZ2l0aWdub3JlLmluY2x1ZGUoJ2V4dGVuc2lvbnMvdGVtcGxhdGVzLycpO1xuICB9XG5cbiAgcHVibGljIGFkZEV4dGVuc2lvbihuYW1lOiBzdHJpbmcsIGV4dGVuc2lvblR5cGVzOiBEOUV4dGVuc2lvblR5cGVbXSwgb3B0aW9ucz86IEFkZEV4dGVuc2lvbk9wdGlvbnMgKSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5hZGQobmFtZSwgZXh0ZW5zaW9uVHlwZXMsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGNvbmZpZ3VyZVBsdW1iaW5nKG9wdGlvbnM6IFBsdW1iaW5nT3B0aW9ucykge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9wdGlvbnMpKSB7XG4gICAgICB0aGlzLnBsdW1iaW5nQ29uZmlnLmFkZE92ZXJyaWRlKGtleSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkRmlyc3RSdW5UYXNrKCkge1xuICAgIGNvbnN0IHRhc2sgPSB0aGlzLmFkZFRhc2soJ2ZpcnN0LXJ1bicsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnSW5pdGlhbGl6ZSBhbmQgc3RhcnQgYSBmcmVzaCBkOSBpbnN0YW5jZScsXG4gICAgfSk7XG4gICAgY29uc3QgYWRtaW5FbWFpbCA9ICdhZG1pbkBleGFtcGxlLmNvbSc7XG4gICAgY29uc3QgdXNlck5vdEV4aXN0c0NvbmRpdGlvbiA9IGBkb2NrZXIgY29tcG9zZSBleGVjIGRhdGFiYXNlIHBzcWwgLVUgZDkgLWQgZDkgLXRBYyBcIlNFTEVDVCBjb3VudCgqKSBGUk9NIGRpcmVjdHVzX3VzZXJzIFdIRVJFIGVtYWlsID0gJyR7YWRtaW5FbWFpbH0nXCIgfCBncmVwIC1xICdeMCQnYDtcbiAgICBjb25zdCBlbXB0eURhdGFiYXNlQ29uZGl0aW9uID0gJ2RvY2tlciBjb21wb3NlIGV4ZWMgZGF0YWJhc2UgcHNxbCAtVSBkOSAtZCBkOSAtdEFjIFwiU0VMRUNUIGNvdW50KCopIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnRhYmxlcyBXSEVSRSB0YWJsZV9uYW1lIExJS0UgXFwnZGlyZWN0dXNfJVxcJ1wiIHwgZ3JlcCAtcSBcXCdeMCRcXCcnO1xuICAgIHRhc2suZXhlYygnZG9ja2VyIGNvbXBvc2UgdXAgLWQgLS13YWl0IGRhdGFiYXNlIGNhY2hlJyk7XG4gICAgdGFzay5leGVjKCducHggZDktcGx1bWJpbmcgZmlyc3QtaW1wb3J0IC0taG9zdCBsb2NhbGhvc3QgLS11c2VyIGQ5IC0tcGFzc3dvcmQgZDkgLS1kYXRhYmFzZSBkOScsIHtcbiAgICAgIGNvbmRpdGlvbjogJ3Rlc3QgLWQgLi9zcWwnLFxuICAgIH0pO1xuICAgIHRhc2suZXhlYygnZG9ja2VyIGNvbXBvc2UgcnVuIC0tcm0gZDkgbnB4IGRpcmVjdHVzIGJvb3RzdHJhcCcsIHtcbiAgICAgIGNvbmRpdGlvbjogYHRlc3QgISAtZCAuL3NxbCAmJiAke2VtcHR5RGF0YWJhc2VDb25kaXRpb259YCxcbiAgICB9KTtcbiAgICB0YXNrLmV4ZWMoYEFETUlOX1JPTEVfSUQ9JChkb2NrZXIgY29tcG9zZSBleGVjIGRhdGFiYXNlIHBzcWwgLVUgZDkgLWQgZDkgLXRBYyBcIlNFTEVDVCBpZCBGUk9NIGRpcmVjdHVzX3JvbGVzIFdIRVJFIGFkbWluX2FjY2VzcyA9IHRydWUgTElNSVQgMVwiKSAmJiBkb2NrZXIgY29tcG9zZSBydW4gLS1ybSBkOSBucHggZGlyZWN0dXMgdXNlcnMgY3JlYXRlIC0tZW1haWwgJHthZG1pbkVtYWlsfSAtLXBhc3N3b3JkIHRvdG90b3RvIC0tcm9sZSBcIiRBRE1JTl9ST0xFX0lEXCJgLCB7XG4gICAgICBjb25kaXRpb246IHVzZXJOb3RFeGlzdHNDb25kaXRpb24sXG4gICAgfSk7XG4gICAgdGFzay5zYXkoYFVzZXIgJHthZG1pbkVtYWlsfSBoYXMgYmVlbiBjcmVhdGVkIHdpdGggcGFzc3dvcmQgdG90b3RvdG9gLCB7XG4gICAgICBjb25kaXRpb246IHVzZXJOb3RFeGlzdHNDb25kaXRpb24sXG4gICAgfSk7XG4gICAgdGFzay5zYXkoYFVzZXIgJHthZG1pbkVtYWlsfSBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmcgY3JlYXRpb25gLCB7XG4gICAgICBjb25kaXRpb246IGAhICR7dXNlck5vdEV4aXN0c0NvbmRpdGlvbn1gLFxuICAgIH0pO1xuICAgIHRhc2suZXhlYygnZG9ja2VyIGNvbXBvc2UgdXAgZDknKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQ3JlYXRlQWRtaW5Vc2VyVGFzaygpIHtcbiAgICBjb25zdCB0YXNrID0gdGhpcy5hZGRUYXNrKCdjcmVhdGUtYW4tYWRtaW4nLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0NyZWF0ZSBhbiBhZG1pbiB1c2VyJyxcbiAgICB9KTtcbiAgICBjb25zdCBhZG1pbkVtYWlsID0gJ2FkbWluQGV4YW1wbGUuY29tJztcbiAgICBjb25zdCB1c2VyTm90RXhpc3RzQ29uZGl0aW9uID0gYGRvY2tlciBjb21wb3NlIGV4ZWMgZGF0YWJhc2UgcHNxbCAtVSBkOSAtZCBkOSAtdEFjIFwiU0VMRUNUIGNvdW50KCopIEZST00gZGlyZWN0dXNfdXNlcnMgV0hFUkUgZW1haWwgPSAnJHthZG1pbkVtYWlsfSdcIiB8IGdyZXAgLXEgJ14wJCdgO1xuICAgIHRhc2suZXhlYygnZG9ja2VyIGNvbXBvc2UgdXAgLWQgLS13YWl0IGRhdGFiYXNlIGNhY2hlJyk7XG4gICAgdGFzay5leGVjKGBBRE1JTl9ST0xFX0lEPSQoZG9ja2VyIGNvbXBvc2UgZXhlYyBkYXRhYmFzZSBwc3FsIC1VIGQ5IC1kIGQ5IC10QWMgXCJTRUxFQ1QgaWQgRlJPTSBkaXJlY3R1c19yb2xlcyBXSEVSRSBhZG1pbl9hY2Nlc3MgPSB0cnVlIExJTUlUIDFcIikgJiYgZG9ja2VyIGNvbXBvc2UgcnVuIC0tcm0gZDkgbnB4IGRpcmVjdHVzIHVzZXJzIGNyZWF0ZSAtLWVtYWlsICR7YWRtaW5FbWFpbH0gLS1wYXNzd29yZCB0b3RvdG90byAtLXJvbGUgXCIkQURNSU5fUk9MRV9JRFwiYCwge1xuICAgICAgY29uZGl0aW9uOiB1c2VyTm90RXhpc3RzQ29uZGl0aW9uLFxuICAgIH0pO1xuICAgIHRhc2suc2F5KGBVc2VyICR7YWRtaW5FbWFpbH0gaGFzIGJlZW4gY3JlYXRlZCB3aXRoIHBhc3N3b3JkIHRvdG90b3RvYCwge1xuICAgICAgY29uZGl0aW9uOiB1c2VyTm90RXhpc3RzQ29uZGl0aW9uLFxuICAgIH0pO1xuICAgIHRhc2suc2F5KGBVc2VyICR7YWRtaW5FbWFpbH0gYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nIGNyZWF0aW9uYCwge1xuICAgICAgY29uZGl0aW9uOiBgISAke3VzZXJOb3RFeGlzdHNDb25kaXRpb259YCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkUnVuVGFzaygpIHtcbiAgICBjb25zdCB0YXNrID0gdGhpcy5hZGRUYXNrKCdydW4nLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ3N0YXJ0IHRoZSBkOSBpbnN0YW5jZScsXG4gICAgfSk7XG4gICAgdGFzay5leGVjKCdkb2NrZXIgY29tcG9zZSB1cCBkOScpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREOVBsdW1iaW5nVGFzaygpIHtcbiAgICBjb25zdCB0YXNrID0gdGhpcy5hZGRUYXNrKCdkOS1wbHVtYmluZycsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUnVuIHRoZSBkOS1wbHVtYmluZyBDTEkgKHNhdmUsIGFwcGx5LXNjaGVtYSwgZmlyc3QtaW1wb3J0Li4uKS4gVXNlIC0taGVscCB0byBsaXN0IGFsbCBzdWJjb21tYW5kcy4nLFxuICAgIH0pO1xuICAgIHRhc2suc2F5KCdUaXA6IHlvdSBjYW4gYWxzbyBjYWxsIGl0IGRpcmVjdGx5IHdpdGggYG5weCBkOS1wbHVtYmluZyA8Y29tbWFuZD5gJyk7XG4gICAgdGFzay5leGVjKCducHggZDktcGx1bWJpbmcgXCIkQFwiJywgeyByZWNlaXZlQXJnczogdHJ1ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQnVpbGRFeHRlbnNpb25UYXNrKCkge1xuICAgIHRoaXMuYnVpbGRFeHRlbnNpb25UYXNrID0gdGhpcy5hZGRUYXNrKCdidWlsZC1leHRlbnNpb25zJywge1xuICAgICAgZGVzY3JpcHRpb246ICdCdWlsZCB0aGUgZDkgZXh0ZW5zaW9ucycsXG4gICAgfSk7XG4gICAgdGhpcy5idWlsZEV4dGVuc2lvblRhc2suZXhlYyhgY2QgJHt0aGlzLmV4dGVuc2lvbkZvbGRlcn0gJiYgcG5wbSBpbnN0YWxsYCk7XG4gICAgLy8gcHJvamVuIHJlcGxhY2VzIFwiJEBcIiB3aXRoIHRoZSBxdW90ZWQgdGFzayBhcmdzOyBgc2V0IC0tYCB0dXJucyB0aGVtIGJhY2sgaW50byAkMVxuICAgIHRoaXMuYnVpbGRFeHRlbnNpb25UYXNrLmV4ZWMoXG4gICAgICBgY2QgJHt0aGlzLmV4dGVuc2lvbkZvbGRlcn0gJiYgc2V0IC0tIFwiJEBcIiAmJiBpZiBbIC1uIFwiJDFcIiBdOyB0aGVuIHBucG0gLS1yZWN1cnNpdmUgLS1maWx0ZXIgXCIkMS4uLlwiIHJ1biBidWlsZDsgZWxzZSBwbnBtIHJ1biAtLXJlY3Vyc2l2ZSBidWlsZDsgZmlgLFxuICAgICAgeyByZWNlaXZlQXJnczogdHJ1ZSB9LFxuICAgICk7XG4gIH1cblxuXG4gIHByaXZhdGUgYWRkRG9ja2VyQ29tcG9zZSgpIHtcbiAgICBjb25zdCBkYyA9IG5ldyBEb2NrZXJDb21wb3NlKHRoaXMpO1xuXG4gICAgdGhpcy5kYXRhYmFzZVNlcnZpY2UgPSBkYy5hZGRTZXJ2aWNlKCdkYXRhYmFzZScsIHtcbiAgICAgIGltYWdlOiAncG9zdGdpcy9wb3N0Z2lzOjEzLW1hc3RlcicsXG4gICAgICB2b2x1bWVzOiBbXG4gICAgICAgIERvY2tlckNvbXBvc2UubmFtZWRWb2x1bWUoJ3BnZGF0YScsICcvdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnKSxcbiAgICAgIF0sXG4gICAgICBwb3J0czogW1xuICAgICAgICBEb2NrZXJDb21wb3NlLnBvcnRNYXBwaW5nKDU0MzIsIDU0MzIpLFxuICAgICAgXSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIFBPU1RHUkVTX1VTRVI6ICdkOScsXG4gICAgICAgIFBPU1RHUkVTX1BBU1NXT1JEOiAnZDknLFxuICAgICAgICBQT1NUR1JFU19EQjogJ2Q5JyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmNhY2hlU2VydmljZSA9IGRjLmFkZFNlcnZpY2UoJ2NhY2hlJywge1xuICAgICAgaW1hZ2U6ICdyZWRpczo2JyxcbiAgICAgIHZvbHVtZXM6IFtcbiAgICAgICAgRG9ja2VyQ29tcG9zZS5uYW1lZFZvbHVtZSgncmVkaXNfc3RvcmFnZScsICcvZGF0YScpLFxuICAgICAgXSxcbiAgICAgIHBvcnRzOiBbXG4gICAgICAgIERvY2tlckNvbXBvc2UucG9ydE1hcHBpbmcoNjM3OSwgNjM3OSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kOVNlcnZpY2UgPSBkYy5hZGRTZXJ2aWNlKCdkOScsIHtcbiAgICAgIGltYWdlQnVpbGQ6IHsgY29udGV4dDogJy4nIH0sXG4gICAgICBwb3J0czogW1xuICAgICAgICBEb2NrZXJDb21wb3NlLnBvcnRNYXBwaW5nKDgwNTUsIDgwNTUpLFxuICAgICAgXSxcbiAgICAgIHZvbHVtZXM6IFtcbiAgICAgICAgRG9ja2VyQ29tcG9zZS5iaW5kVm9sdW1lKCcuL3VwbG9hZHMnLCAnL2FwcC91cGxvYWRzJyksXG4gICAgICAgIERvY2tlckNvbXBvc2UuYmluZFZvbHVtZSgnLi9leHRlbnNpb25zJywgJy9hcHAvZXh0ZW5zaW9ucycpLFxuICAgICAgXSxcbiAgICAgIC8vIGRlcGVuZHNPbiBpcyBzZXQgdmlhIGFkZE92ZXJyaWRlIGJlbG93IHdpdGggY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHlcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIEtFWTogJ3NvbWUtcmFuZG9tLWtleScsXG4gICAgICAgIFNFQ1JFVDogJ2Fub3RoZXItcmFuZG9tLWtleScsXG4gICAgICAgIENPTkZJR19QQVRIOiAnLmVudi5sb2NhbCcsXG4gICAgICAgIERCX0NMSUVOVDogJ3BnJyxcbiAgICAgICAgREJfSE9TVDogJ2RhdGFiYXNlJyxcbiAgICAgICAgREJfUE9SVDogJzU0MzInLFxuICAgICAgICBEQl9EQVRBQkFTRTogJ2Q5JyxcbiAgICAgICAgREJfVVNFUjogJ2Q5JyxcbiAgICAgICAgREJfUEFTU1dPUkQ6ICdkOScsXG4gICAgICAgIENBQ0hFX0VOQUJMRUQ6ICdmYWxzZScsXG4gICAgICAgIENBQ0hFX1NUT1JFOiAncmVkaXMnLFxuICAgICAgICBDQUNIRV9SRURJU19IT1NUOiAnY2FjaGUnLFxuICAgICAgICBNRVNTRU5HRVJfU1RPUkU6ICdyZWRpcycsXG4gICAgICAgIE1FU1NFTkdFUl9SRURJUzogJ3JlZGlzOi8vY2FjaGU6NjM3OScsXG4gICAgICAgIENBQ0hFX1NUQVRVU19IRUFERVI6ICdjYWNoZS1oaXQnLFxuICAgICAgICBDT1JTX0VOQUJMRUQ6ICd0cnVlJyxcbiAgICAgICAgQ09SU19PUklHSU46ICd0cnVlJyxcbiAgICAgICAgTE9HX0xFVkVMOiAnaW5mbycsXG4gICAgICAgIEFETUlOX0VNQUlMOiAnYWRtaW5AZXhhbXBsZS5jb20nLFxuICAgICAgICBBRE1JTl9QQVNTV09SRDogJ3RvdG90b3RvJyxcbiAgICAgICAgRVhURU5TSU9OU19BVVRPX1JFTE9BRDogJ3RydWUnLFxuICAgICAgICBWQUxJREFURV9FTlRJVElFU19UT0tFTlNfQVBJX0tFWTogJ3RvdG8nLFxuICAgICAgICBBV1NfS01TX0tFWV9JRDogJ3R1dHUnLFxuICAgICAgfSxcbiAgICAgIGNvbW1hbmQ6IFsnc2gnLCAnLWMnLCAnbnB4IGRpcmVjdHVzIHN0YXJ0J10sXG4gICAgfSk7XG5cbiAgICB0aGlzLmQ5U2VydmljZS5hZGRWb2x1bWUoRG9ja2VyQ29tcG9zZS5iaW5kVm9sdW1lKCcuLy5lbnYubG9jYWwnLCAnL2FwcC8uZW52LmxvY2FsJykpO1xuXG4gICAgLy8gQWRkIGhlYWx0aGNoZWNrIGZvciBkYXRhYmFzZSAobm90IG5hdGl2ZWx5IHN1cHBvcnRlZCBieSBwcm9qZW4gRG9ja2VyQ29tcG9zZSlcbiAgICBkYy5maWxlLmFkZE92ZXJyaWRlKCdzZXJ2aWNlcy5kYXRhYmFzZS5oZWFsdGhjaGVjaycsIHtcbiAgICAgIHRlc3Q6IFsnQ01EJywgJ3BnX2lzcmVhZHknLCAnLS1ob3N0PWxvY2FsaG9zdCcsICctLXVzZXJuYW1lPWQ5J10sXG4gICAgICBpbnRlcnZhbDogJzEwcycsXG4gICAgICB0aW1lb3V0OiAnNXMnLFxuICAgICAgcmV0cmllczogNSxcbiAgICAgIHN0YXJ0X2ludGVydmFsOiAnNXMnLFxuICAgICAgc3RhcnRfcGVyaW9kOiAnMzBzJyxcbiAgICB9KTtcblxuICAgIC8vIEFkZCBoZWFsdGhjaGVjayBmb3IgY2FjaGVcbiAgICBkYy5maWxlLmFkZE92ZXJyaWRlKCdzZXJ2aWNlcy5jYWNoZS5oZWFsdGhjaGVjaycsIHtcbiAgICAgIHRlc3Q6IFsnQ01ELVNIRUxMJywgJ1sgJChyZWRpcy1jbGkgcGluZykgPSBcXCdQT05HXFwnIF0nXSxcbiAgICAgIGludGVydmFsOiAnMTBzJyxcbiAgICAgIHRpbWVvdXQ6ICc1cycsXG4gICAgICByZXRyaWVzOiA1LFxuICAgICAgc3RhcnRfaW50ZXJ2YWw6ICc1cycsXG4gICAgICBzdGFydF9wZXJpb2Q6ICczMHMnLFxuICAgIH0pO1xuXG4gICAgLy8gT3ZlcnJpZGUgZGVwZW5kc19vbiB0byB1c2UgY29uZGl0aW9uIHN5bnRheFxuICAgIGRjLmZpbGUuYWRkT3ZlcnJpZGUoJ3NlcnZpY2VzLmQ5LmRlcGVuZHNfb24nLCB7XG4gICAgICBjYWNoZTogeyBjb25kaXRpb246ICdzZXJ2aWNlX2hlYWx0aHknIH0sXG4gICAgICBkYXRhYmFzZTogeyBjb25kaXRpb246ICdzZXJ2aWNlX2hlYWx0aHknIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmRvY2tlckNvbXBvc2VGaWxlID0gZGM7XG5cbiAgICByZXR1cm4gZGM7XG4gIH1cblxuICBwcml2YXRlIGFkZFNhdmVCcmFuY2hXb3JrZmxvdygpIHtcbiAgICBjb25zdCB3b3JrZmxvdyA9IHRoaXMuZ2l0aHViQ29uZmlnIS5hZGRXb3JrZmxvdygnc2F2ZS1icmFuY2gnKTtcbiAgICB3b3JrZmxvdy5vbih7IHB1c2g6IHsgYnJhbmNoZXM6IFsnKi1zYXZlJ10gfSB9KTtcbiAgICB3b3JrZmxvdy5hZGRKb2IoJ2NyZWF0ZS1wcicsIHtcbiAgICAgIG5hbWU6ICdDcmVhdGUgUHVsbCBSZXF1ZXN0JyxcbiAgICAgIHJ1bnNPbjogWyd1YnVudHUtbGF0ZXN0J10sXG4gICAgICBwZXJtaXNzaW9uczoge1xuICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICBwdWxsUmVxdWVzdHM6IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICB9LFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAgeyBuYW1lOiAnQ2hlY2tvdXQnLCB1c2VzOiAnYWN0aW9ucy9jaGVja291dEB2NCcgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdDcmVhdGUgUHVsbCBSZXF1ZXN0JyxcbiAgICAgICAgICBydW46ICdnaCBwciBjcmVhdGUgLS10aXRsZSBcIlNhdmU6ICR7R0lUSFVCX1JFRl9OQU1FJS1zYXZlfVwiIC0tYm9keSBcIkF1dG8tZ2VuZXJhdGVkIFBSIGZyb20gYnJhbmNoIFxcXFxgJHtHSVRIVUJfUkVGX05BTUUlLXNhdmV9XFxcXGBcIiAtLWJhc2UgXCIke0dJVEhVQl9SRUZfTkFNRSUtc2F2ZX1cIiB8fCBlY2hvIFwiUFIgYWxyZWFkeSBleGlzdHNcIicsXG4gICAgICAgICAgZW52OiB7IEdIX1RPS0VOOiAnJHt7IHNlY3JldHMuR0lUSFVCX1RPS0VOIH19JyB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRG9ja2VyZmlsZSgpIHtcbiAgICB0aGlzLmRvY2tlcmZpbGUgPSBuZXcgRG9ja2VyZmlsZSh0aGlzKVxuICAgICAgLy8gYnVpbGRlciBzdGFnZTogZGV2IGRlcGVuZGVuY2llcyBhcmUgaW5zdGFsbGVkIHNvIGBucHggcHJvamVuYCBydW5zIHRoZSB2ZXJzaW9uIGxvY2tlZCBpbiBwYWNrYWdlLWxvY2suanNvblxuICAgICAgLmZyb21Bcygnbm9kZScsICcyMi1ib29rd29ybS1zbGltJywgJ2J1aWxkZXInKVxuICAgICAgLnN0ZXAoJ2J1aWxkZXItdXBkYXRlLW5wbScsICdVcGRhdGUgbnBtIHRvIGZpeCBkZXBlbmRlbmNpZXMnKVxuICAgICAgLnJ1bignbnBtIGluc3RhbGwgLWcgbnBtQDExLjguMCcpXG4gICAgICAuc3RlcCgnYnVpbGRlci1pbnN0YWxsLXBucG0nLCAnaW5zdGFsbCBwbnBtJylcbiAgICAgIC5ydW4oJ25wbSBpbnN0YWxsIC1nIHBucG1AMTAuMzMuMCcpXG4gICAgICAuc3RlcCgnYnVpbGRlci1jb3B5LXBhY2thZ2UnLCAnQ29weSBwYWNrYWdlLmpzb24gYW5kIHBhY2thZ2UtbG9jay5qc29uIGZpcnN0IHRvIGxldmVyYWdlIERvY2tlciBsYXllciBjYWNoaW5nJylcbiAgICAgIC5jb3B5KCdwYWNrYWdlKi5qc29uJywgJy9hcHAvJylcbiAgICAgIC5zdGVwKCdidWlsZGVyLXdvcmtkaXInLCAnU2V0IHdvcmtpbmcgZGlyZWN0b3J5JylcbiAgICAgIC53b3JrZGlyKCcvYXBwJylcbiAgICAgIC5zdGVwKCdidWlsZGVyLWluc3RhbGwtZGVwcycsICdJbnN0YWxsIGRlcGVuZGVuY2llcyAtIHdpdGggZGV2IGRlcGVuZGVuY2llcywgZm9yIHByb2plbicpXG4gICAgICAucnVuKCducG0gY2knKVxuICAgICAgLnN0ZXAoJ2J1aWxkZXItY29weS1zb3VyY2UnLCAnQ29weSB0aGUgcmVzdCBvZiB0aGUgYXBwbGljYXRpb24gY29kZScpXG4gICAgICAuY29weSgnLicsICcuJylcbiAgICAgIC5zdGVwKCdidWlsZC1leHRlbnNpb24nLCAnYnVpbGQgZXh0ZW5zaW9ucycpXG4gICAgICAucnVuKCducHggcHJvamVuIGJ1aWxkLWV4dGVuc2lvbnMnKVxuICAgICAgLy8gZmluYWwgc3RhZ2VcbiAgICAgIC5mcm9tKCdub2RlJywgJzIyLWJvb2t3b3JtLXNsaW0nKVxuICAgICAgLnN0ZXAoJ3VwZGF0ZS1ucG0nLCAnVXBkYXRlIG5wbSB0byBmaXggZGVwZW5kZW5jaWVzJylcbiAgICAgIC5ydW4oJ25wbSBpbnN0YWxsIC1nIG5wbUAxMS44LjAnKVxuICAgICAgLnN0ZXAoJ2NvcHktcGFja2FnZScsICdDb3B5IHBhY2thZ2UuanNvbiBhbmQgcGFja2FnZS1sb2NrLmpzb24gZmlyc3QgdG8gbGV2ZXJhZ2UgRG9ja2VyIGxheWVyIGNhY2hpbmcnKVxuICAgICAgLmNvcHkoJ3BhY2thZ2UqLmpzb24nLCAnL2FwcC8nKVxuICAgICAgLnN0ZXAoJ3dvcmtkaXInLCAnU2V0IHdvcmtpbmcgZGlyZWN0b3J5JylcbiAgICAgIC53b3JrZGlyKCcvYXBwJylcbiAgICAgIC5zdGVwKCdpbnN0YWxsLWRlcHMnLCAnSW5zdGFsbCBkZXBlbmRlbmNpZXMgLSB3aXRob3V0IGRldiBkZXBlbmRlbmNpZXMnKVxuICAgICAgLnJ1bignTk9ERV9FTlY9cHJvZHVjdGlvbiBucG0gaW5zdGFsbCcpXG4gICAgICAuc3RlcCgnY2xlYW51cCcsICdDbGVhbmluZyBiZW5jaG1hcmtzIGZvbGRlciBpbiB0ZWRpb3VzIG1vZHVsZSBmb3Igc2VjdXJpdHknKVxuICAgICAgLnJ1bigncm0gLXJmIG5vZGVfbW9kdWxlcy90ZWRpb3VzL2JlbmNobWFya3MnKVxuICAgICAgLnN0ZXAoJ2NvcHktc291cmNlJywgJ0NvcHkgdGhlIHJlc3Qgb2YgdGhlIGFwcGxpY2F0aW9uIGNvZGUnKVxuICAgICAgLmNvcHkoJy4nLCAnLicpXG4gICAgICAuc3RlcCgnY29weS1leHRlbnNpb25zJywgJ0NvcHkgdGhlIGJ1aWx0IGV4dGVuc2lvbnMgZnJvbSB0aGUgYnVpbGRlciBzdGFnZScpXG4gICAgICAuY29weSgnL2FwcC9leHRlbnNpb25zJywgJy4vZXh0ZW5zaW9ucycsIHsgZnJvbTogJ2J1aWxkZXInIH0pXG4gICAgICAuc3RlcCgnc3RhcnQnLCAnU3RhcnQgZDkgc2VydmVyJylcbiAgICAgIC5jbWRFeGVjKFsnbnB4JywgJ2RpcmVjdHVzJywgJ3N0YXJ0J10pO1xuICAgIHRoaXMuZG9ja2VyaWdub3JlID0gbmV3IElnbm9yZUZpbGUodGhpcywgJy5kb2NrZXJpZ25vcmUnLCB7IGlnbm9yZVBhdHRlcm5zOiBbJyoqL25vZGVfbW9kdWxlcycsICcuZ2l0J10gfSk7XG4gICAgcmV0dXJuIHRoaXMuZG9ja2VyZmlsZTtcbiAgfVxuXG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBEOVByb2plY3RPcHRpb25zfSBpbnN0ZWFkLiBUaGUgcGFja2FnZSB3YXMgcmVuYW1lZCB0byBgQHdiY2UvcHJvamVuLWQ5YCB0byByZWZsZWN0IHRoYXQgaXQgdGFyZ2V0cyB0aGUgZDkgZm9yaywgbm90IHVwc3RyZWFtIERpcmVjdHVzLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIERpcmVjdHVzUHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBEOVByb2plY3RPcHRpb25zIHt9XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBEOVByb2plY3R9IGluc3RlYWQuIFRoZSBwYWNrYWdlIHdhcyByZW5hbWVkIHRvIGBAd2JjZS9wcm9qZW4tZDlgIHRvIHJlZmxlY3QgdGhhdCBpdCB0YXJnZXRzIHRoZSBkOSBmb3JrLCBub3QgdXBzdHJlYW0gRGlyZWN0dXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEaXJlY3R1c1Byb2plY3QgZXh0ZW5kcyBEOVByb2plY3Qge31cbiJdfQ==
package/package.json CHANGED
@@ -68,7 +68,7 @@
68
68
  "publishConfig": {
69
69
  "access": "public"
70
70
  },
71
- "version": "0.1.0",
71
+ "version": "0.1.2",
72
72
  "jest": {
73
73
  "coverageProvider": "v8",
74
74
  "testMatch": [