@pipeline-builder/pipeline-manager 3.4.127 → 3.4.128

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/README.md CHANGED
@@ -99,7 +99,7 @@ The underlying `bin/setup.sh` / `bin/shutdown.sh` scripts (and `aws cloudformati
99
99
  | Command | Purpose |
100
100
  | --- | --- |
101
101
  | `login` | Authenticate against the platform and persist the access token (supports `--refresh <token>` and `--org <orgId>` to switch organizations) |
102
- | `store-token` | Generate a long-lived JWT and store it in AWS Secrets Manager (used by the events Lambda and CodePipeline synth steps) |
102
+ | `store-token` | Generate a long-lived JWT and store it in AWS Secrets Manager (used by the events Lambda and CodePipeline synth steps). Add `--schedule` to also deploy a daily auto-renewal stack so the token never lapses |
103
103
  | `setup-events` | Deploy the EventBridge → SQS → Lambda stack that streams CodePipeline events into the platform's reporting service |
104
104
 
105
105
  ### Operator audits (cron-friendly)
@@ -1 +1 @@
1
- {"version":3,"file":"post-steps.d.ts","sourceRoot":"","sources":["../../src/agent/post-steps.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AAEH,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,QAAQ;IACvB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,oFAAoF;IACpF,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACjD;AAED,gEAAgE;AAChE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,yCAAyC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,+FAA+F;IAC/F,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,gFAAgF;IAChF,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB;;;qDAGiD;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,oFAAoF;IACpF,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AASD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,iBAAiB,CAmFzE"}
1
+ {"version":3,"file":"post-steps.d.ts","sourceRoot":"","sources":["../../src/agent/post-steps.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AAEH,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,QAAQ;IACvB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,oFAAoF;IACpF,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACjD;AAED,gEAAgE;AAChE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,yCAAyC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,+FAA+F;IAC/F,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,gFAAgF;IAChF,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB;;;qDAGiD;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,oFAAoF;IACpF,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AASD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,iBAAiB,CAqFzE"}
@@ -84,8 +84,10 @@ export function resolvePostSteps(opts) {
84
84
  const env = opts.target === 'ec2' && opts.url ? { PLATFORM_BASE_URL: opts.url } : undefined;
85
85
  steps.push({
86
86
  id: 'store-token',
87
- label: 'Store platform token in AWS Secrets Manager',
88
- command: `pipeline-manager store-token${region}`,
87
+ label: 'Store platform token in AWS Secrets Manager (+ daily auto-renewal)',
88
+ // --schedule: the event-ingestion Lambda reads this token, so install the
89
+ // renewal stack so it never lapses (store-token no longer deploys it by default).
90
+ command: `pipeline-manager store-token --schedule${region}`,
89
91
  env,
90
92
  });
91
93
  steps.push({
@@ -105,4 +107,4 @@ export function resolvePostSteps(opts) {
105
107
  });
106
108
  return { steps, skipped };
107
109
  }
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdC1zdGVwcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZ2VudC9wb3N0LXN0ZXBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7OztHQVNHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBaUIsTUFBTSxjQUFjLENBQUM7QUFnRHpELDJFQUEyRTtBQUMzRSxTQUFTLFdBQVcsQ0FBQyxjQUFpQyxFQUFFLGNBQXVCO0lBQzdFLE1BQU0sR0FBRyxHQUEyQixFQUFFLGVBQWUsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDcEYsS0FBSyxNQUFNLElBQUksSUFBSSxVQUFVO1FBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDNUYsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsSUFBcUI7SUFDcEQsTUFBTSxLQUFLLEdBQWUsRUFBRSxDQUFDO0lBQzdCLE1BQU0sT0FBTyxHQUFrQixFQUFFLENBQUM7SUFFbEMseUZBQXlGO0lBQ3pGLDZGQUE2RjtJQUM3RixpR0FBaUc7SUFDakcsTUFBTSxlQUFlLEdBQ25CLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQzFGLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLFVB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QUFzQztnQkFDN0MsT0FBTyxFQUFFLGdDQUFnQyxNQUFNLEVBQUU7Z0JBQ2pELEdBQUc7YUFDSixDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSw2QkFBNkIsSUFBSSxDQUFDLE1BQU0sa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBQ3JHLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDaEMsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtZQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDM0csQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQzVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBQb3N0LWluc3RhbGwgc3RlcHMuXG4gKlxuICogQWZ0ZXIgdGhlIHBsYXRmb3JtIGlzIGRlcGxveWVkICsgaGVhbHRoLWNoZWNrZWQsIHByb3Zpc2lvbiBydW5zIGFuIG9yZGVyZWQgc2V0XG4gKiBvZiBwb3N0LWluc3RhbGwgc3RlcHM6ICoqcmVnaXN0ZXIqKiAodGhlIGFkbWluLCB2aWEgYGluaXQtcGxhdGZvcm0uc2hgLCBkcml2ZW5cbiAqIG5vbi1pbnRlcmFjdGl2ZWx5IGJ5IGVudiDigJQgd2hpY2ggYWxzbyBwZXJmb3JtcyBhbnkgb3B0LWluIHBsdWdpbi9jb21wbGlhbmNlL1xuICogc2FtcGxlIGxvYWRzKSwgdGhlbiBhbiBvcHRpb25hbCAqKnNtb2tlLXRlc3QqKiwgKipldmVudHMqKiAoQVdTKSwgYW5kIGFueVxuICogb3BlcmF0b3IgKiotLXBvc3Qtc3RlcCoqIGNvbW1hbmRzLiBQdXJlLCBkZXRlcm1pbmlzdGljIGFzc2VtYmx5IGhlcmUg4oCUIHByb3Zpc2lvblxuICogcnVucyBlYWNoIHZpYSB0aGUgc2FtZSBnYXRlZCBgcnVuU2NyaXB0KClgIGFzIHRoZSBkZXBsb3kuXG4gKi9cblxuaW1wb3J0IHsgTE9BRF9TVEVQUywgdHlwZSBUYXJnZXRJZCB9IGZyb20gJy4vdGFyZ2V0cy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9zdFN0ZXAge1xuICAvKiogU3RhYmxlIGlkIChgcmVnaXN0ZXJgIC8gYHNtb2tlLXRlc3RgIC8gYGV2ZW50c2ApIG9yIGBjdXN0b20tTmAuICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIC8qKiBIdW1hbiBsYWJlbCBzaG93biBpbiB0aGUgcGxhbi4gKi9cbiAgcmVhZG9ubHkgbGFiZWw6IHN0cmluZztcbiAgLyoqIFRoZSBleGFjdCBjb21tYW5kIHRvIHJ1bi4gKi9cbiAgcmVhZG9ubHkgY29tbWFuZDogc3RyaW5nO1xuICAvKiogTm9uLXNlY3JldCBlbnYgYXBwbGllZCB0byB0aGUgY2hpbGQgZm9yIHRoaXMgc3RlcCAoZS5nLiBMT0FEXyogZm9yIHJlZ2lzdGVyKS4gKi9cbiAgcmVhZG9ubHkgZW52PzogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG59XG5cbi8qKiBBIHJlcXVlc3RlZCBzdGVwIHRoYXQgZG9lc24ndCBhcHBseSB0byB0aGUgY2hvc2VuIHRhcmdldC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2tpcHBlZFN0ZXAge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSByZWFzb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlZFBvc3RTdGVwcyB7XG4gIHJlYWRvbmx5IHN0ZXBzOiBQb3N0U3RlcFtdO1xuICByZWFkb25seSBza2lwcGVkOiBTa2lwcGVkU3RlcFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvc3RTdGVwT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHRhcmdldDogVGFyZ2V0SWQ7XG4gIC8qKiBCYXNlIFVSTCBvZiB0aGUgZGVwbG95ZWQgcGxhdGZvcm0gKGZyb20gZGVyaXZlSGVhbHRoVXJsKSwgb3IgbnVsbC4gKi9cbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmcgfCBudWxsO1xuICAvKiogQVdTIHJlZ2lvbiAoZWMyL2VrcyksIGlmIHByb3ZpZGVkLiAqL1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG4gIC8qKiBMb2FkLXN0ZXAgaWRzIGVuYWJsZWQgdmlhIGAtLXdpdGgtKmAgKGRyaXZlIGluaXQtcGxhdGZvcm0ncyBMT0FEXyogZW52cyArIHNwYXJzZSBwYXRocykuICovXG4gIHJlYWRvbmx5IGVuYWJsZWRMb2FkSWRzOiByZWFkb25seSBzdHJpbmdbXTtcbiAgLyoqIGAtLWJ1aWxkLWJvb3RzdHJhcGA6IGJ1aWxkIHRoZSBDb2RlQnVpbGQgYm9vdHN0cmFwIGltYWdlIGR1cmluZyByZWdpc3Rlci4gKi9cbiAgcmVhZG9ubHkgYnVpbGRCb290c3RyYXA6IGJvb2xlYW47XG4gIC8qKiBGYWxzZSB3aGVuIGAtLW5vLWluaXRgIOKAlCBza2lwcyB0aGUgcmVnaXN0ZXIgc3RlcCBlbnRpcmVseS4gKi9cbiAgcmVhZG9ubHkgaW5pdDogYm9vbGVhbjtcbiAgLyoqIFRydWUgZm9yIGAtLWluaXQgYXV0b2AgKHRoZSBkZWZhdWx0IG1vZGUpLiBPbiB0aGUgQVdTIHRhcmdldHMgdGhlIGRlcGxveSBzZWxmLXJ1bnNcbiAgICogIGluaXQtcGxhdGZvcm0gKGVjMiBvbiBmaXJzdCBib290LCBla3MgaW4gc2V0dXAuc2gncyBmaW5hbCBwaGFzZSksIHNvIHRoZSByZWdpc3RlciBzdGVwIGlzXG4gICAqICBOT1Qgc3VyZmFjZWQgaGVyZSDigJQgaXQgd291bGQgZHVwbGljYXRlIHRoYXQgZGVwbG95LW1hbmFnZWQgcnVuLiAobWluaWt1YmUvbG9jYWwgcnVuIGluaXRcbiAgICogIHZpYSBwcm92aXNpb24sIG5vdCBhIGRlcGxveS1tYW5hZ2VkIGluaXQuKSAqL1xuICByZWFkb25seSBhdXRvSW5pdD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNtb2tlVGVzdDogYm9vbGVhbjtcbiAgLyoqIGAtLXdpdGgtZXZlbnRzYDogdGhlIEFXUyBldmVudC1pbmdlc3Rpb24gYnVuZGxlIChzdG9yZS10b2tlbiDihpIgc2V0dXAtZXZlbnRzKS4gKi9cbiAgcmVhZG9ubHkgZXZlbnRzOiBib29sZWFuO1xuICAvKiogUmF3IG9wZXJhdG9yIGAtLXBvc3Qtc3RlcGAgY29tbWFuZHMsIGluIG9yZGVyLiAqL1xuICByZWFkb25seSBzdGVwczogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbi8qKiBDb21wdXRlIHRoZSBub24taW50ZXJhY3RpdmUgZW52IHRoYXQgZHJpdmVzIGluaXQtcGxhdGZvcm0ncyBwcm9tcHRzLiAqL1xuZnVuY3Rpb24gcmVnaXN0ZXJFbnYoZW5hYmxlZExvYWRJZHM6IHJlYWRvbmx5IHN0cmluZ1tdLCBidWlsZEJvb3RzdHJhcDogYm9vbGVhbik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7IEJVSUxEX0JPT1RTVFJBUDogYnVpbGRCb290c3RyYXAgPyAneScgOiAnbicgfTtcbiAgZm9yIChjb25zdCBzdGVwIG9mIExPQURfU1RFUFMpIGVudltzdGVwLmVudl0gPSBlbmFibGVkTG9hZElkcy5pbmNsdWRlcyhzdGVwLmlkKSA/ICd5JyA6ICduJztcbiAgcmV0dXJuIGVudjtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBvcmRlcmVkIHBvc3QtaW5zdGFsbCBzdGVwIGxpc3Q6IHJlZ2lzdGVyIOKGkiBzbW9rZS10ZXN0IOKGkiBldmVudHMg4oaSXG4gKiBjdXN0b20uIGByZWdpc3RlcmAgY2FycmllcyB0aGUgbG9hZCArIEJVSUxEX0JPT1RTVFJBUCBlbnYgc28gaW5pdC1wbGF0Zm9ybSBydW5zXG4gKiB0aGUgZW5hYmxlZCBsb2FkcyBub24taW50ZXJhY3RpdmVseS4gUmVxdWVzdGVkLWJ1dC1pbmFwcGxpY2FibGUgc3RlcHMgbGFuZCBpblxuICogYHNraXBwZWRgIHNvIHRoZSBjYWxsZXIgY2FuIHdhcm4gcmF0aGVyIHRoYW4gc2lsZW50bHkgZHJvcCB0aGVtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBvc3RTdGVwcyhvcHRzOiBQb3N0U3RlcE9wdGlvbnMpOiBSZXNvbHZlZFBvc3RTdGVwcyB7XG4gIGNvbnN0IHN0ZXBzOiBQb3N0U3RlcFtdID0gW107XG4gIGNvbnN0IHNraXBwZWQ6IFNraXBwZWRTdGVwW10gPSBbXTtcblxuICAvLyBgLS1pbml0IGF1dG9gICh0aGUgZGVmYXVsdCkgb24gdGhlIEFXUyB0YXJnZXRzOiB0aGUgZGVwbG95IHJ1bnMgaW5pdC1wbGF0Zm9ybSBpdHNlbGYg4oCUXG4gIC8vIGVjMiBvbiB0aGUgaW5zdGFuY2Ugb24gZmlyc3QgYm9vdCwgZWtzIGluIHNldHVwLnNoJ3MgZmluYWwgcGhhc2Ug4oCUIHNvIERPTidUIGFkZCBhIHJlZ2lzdGVyXG4gIC8vIHN0ZXAgaGVyZTsgaXQgd291bGQgZHVwbGljYXRlIHRoZSBkZXBsb3ktbWFuYWdlZCBydW4uIChtaW5pa3ViZS9sb2NhbCBydW4gaW5pdCB2aWEgcHJvdmlzaW9uLilcbiAgY29uc3QgYXV0b0luaXRNYW5hZ2VkID1cbiAgICBvcHRzLmluaXQgJiYgb3B0cy5hdXRvSW5pdCA9PT0gdHJ1ZSAmJiAob3B0cy50YXJnZXQgPT09ICdlYzInIHx8IG9wdHMudGFyZ2V0ID09PSAnZWtzJyk7XG4gIGlmIChvcHRzLmluaXQgJiYgIWF1dG9Jbml0TWFuYWdlZCkge1xuICAgIGNvbnN0IGVuYWJsZWQgPSBMT0FEX1NURVBTLmZpbHRlcigocykgPT4gb3B0cy5lbmFibGVkTG9hZElkcy5pbmNsdWRlcyhzLmlkKSkubWFwKChzKSA9PiBzLmlkKTtcbiAgICBjb25zdCBsb2FkcyA9IGVuYWJsZWQubGVuZ3RoID4gMCA/IGAgKCsgJHtlbmFibGVkLmpvaW4oJywgJyl9KWAgOiAnJztcbiAgICAvLyBSZWdpc3RlciBpcyBzdXJmYWNlZCBhcyBhIG1hbnVhbCBuZXh0LXN0ZXAgb24gQVdTIChzZWUgcnVuUG9zdFN0ZXBzKS4gVGhlIGNvbW1hbmQgZGlmZmVyczpcbiAgICAvLyAgLSBlYzI6IHJ1bnMgT04gdGhlIGJveCBhcyB0aGUgbWluaWt1YmUgdXNlciwgd2hlcmUgdGhlIGluLVZQQyBVUkwgcmVzb2x2ZXMg4oaSIGJha2UgUExBVEZPUk1fQkFTRV9VUkwuXG4gICAgLy8gIC0gZWtzOiBpbml0LXBsYXRmb3JtIHBvcnQtZm9yd2FyZHMgdG8gc3ZjL25naW54LCBzbyBpdCBydW5zIGZyb20gYW55d2hlcmUgd2l0aCBrdWJlY3RsIGFjY2VzcyDigJRcbiAgICAvLyAgICBkbyBOT1QgYmFrZSBQTEFURk9STV9CQVNFX1VSTCAodGhhdCB3b3VsZCBmb3JjZSB0aGUgcHVibGljIFVSTCBhbmQgd2FpdCBvbiB0aGUgQUxCL0ROUykuXG4gICAgLy8gIC0gbG9jYWwvbWluaWt1YmU6IHBsYWluIGNvbW1hbmQgKHRoZSBVUkwgaXMgbG9jYWxob3N0KS5cbiAgICBjb25zdCByZWdpc3RlckNvbW1hbmQgPSBvcHRzLnRhcmdldCA9PT0gJ2VjMicgJiYgb3B0cy51cmxcbiAgICAgID8gYFBMQVRGT1JNX0JBU0VfVVJMPSR7b3B0cy51cmx9IC4vZGVwbG95L2Jpbi9pbml0LXBsYXRmb3JtLnNoIGVjMmBcbiAgICAgIDogYC4vZGVwbG95L2Jpbi9pbml0LXBsYXRmb3JtLnNoICR7b3B0cy50YXJnZXR9YDtcbiAgICBzdGVwcy5wdXNoKHtcbiAgICAgIGlkOiAncmVnaXN0ZXInLFxuICAgICAgbGFiZWw6IGBSZWdpc3RlciBhZG1pbiR7bG9hZHN9YCxcbiAgICAgIGNvbW1hbmQ6IHJlZ2lzdGVyQ29tbWFuZCxcbiAgICAgIGVudjogcmVnaXN0ZXJFbnYob3B0cy5lbmFibGVkTG9hZElkcywgb3B0cy5idWlsZEJvb3RzdHJhcCksXG4gICAgfSk7XG4gIH1cblxuICBpZiAob3B0cy5zbW9rZVRlc3QpIHtcbiAgICBpZiAob3B0cy51cmwpIHtcbiAgICAgIC8vIC1rOiBsb2NhbC9taW5pa3ViZSBmcm9udCBhIHNlbGYtc2lnbmVkIGNlcnQ7IGhhcm1sZXNzIGFnYWluc3QgcmVhbC1jZXJ0IEFXUyBVUkxzLlxuICAgICAgLy8gUHJvYmUgL2hlYWx0aCDigJQgdGhlIG9uZSByb3V0ZSBndWFyYW50ZWVkIHRvIGV4aXN0IGFuZCBzZXJ2ZSB1bmF1dGhlbnRpY2F0ZWRcbiAgICAgIC8vIHRocm91Z2ggbmdpbnggKGV2ZXJ5IC9hcGkvKiByb3V0ZSByZXF1aXJlcyBhdXRoIOKGkiA0MDE7IC9hcGkvdmVyc2lvbiBkb2Vzbid0XG4gICAgICAvLyBleGlzdCBhbmQgd291bGQgZmFsbCB0aHJvdWdoIHRvIHRoZSBTUEEsIG1ha2luZyBgY3VybCAtZmAgbWVhbmluZ2xlc3MpLlxuICAgICAgc3RlcHMucHVzaCh7XG4gICAgICAgIGlkOiAnc21va2UtdGVzdCcsXG4gICAgICAgIGxhYmVsOiAnU21va2UgdGVzdCDigJQgZ2F0ZXdheS9BUEkgcmVhY2hhYmlsaXR5JyxcbiAgICAgICAgY29tbWFuZDogYGN1cmwgLWZzU2sgJHtvcHRzLnVybH0vaGVhbHRoICYmIGVjaG8gJ3Ntb2tlLXRlc3Q6IEFQSSByZWFjaGFibGUnYCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBza2lwcGVkLnB1c2goeyBpZDogJ3Ntb2tlLXRlc3QnLCByZWFzb246ICdubyBwbGF0Zm9ybSBVUkwgdG8gcHJvYmUgZm9yIHRoaXMgdGFyZ2V0JyB9KTtcbiAgICB9XG4gIH1cblxuICBpZiAob3B0cy5ldmVudHMpIHtcbiAgICBpZiAob3B0cy50YXJnZXQgPT09ICdlYzInIHx8IG9wdHMudGFyZ2V0ID09PSAnZWtzJykge1xuICAgICAgLy8gRXZlbnQgaW5nZXN0aW9uIG5lZWRzIGEgcGxhdGZvcm0gSldUIGluIFNlY3JldHMgTWFuYWdlciBCRUZPUkUgdGhlIExhbWJkYVxuICAgICAgLy8gaXMgd2lyZWQgdXAsIHNvIHRoaXMgaXMgYSB0d28tc3RlcCBidW5kbGU6IHN0b3JlLXRva2VuIHdyaXRlcyB0aGUgdG9rZW4sXG4gICAgICAvLyB0aGVuIHNldHVwLWV2ZW50cyBkZXBsb3lzIHRoZSBFdmVudEJyaWRnZSDihpIgU1FTIOKGkiBMYW1iZGEgdGhhdCByZWFkcyBpdC5cbiAgICAgIC8vIHN0b3JlLXRva2VuIGRlcml2ZXMgdGhlIHNlY3JldCBwYXRoIGZyb20gdGhlIEpXVCdzIG9yZyAoQ29yZUNvbnN0YW50cyBwYXR0ZXJuXG4gICAgICAvLyDihpIgcGlwZWxpbmUtYnVpbGRlci97b3JnSWR9L3BsYXRmb3JtKS4gTk9URTogc2V0dXAtZXZlbnRzIHN0aWxsIFJFUVVJUkVTIHRoYXRcbiAgICAgIC8vIG5hbWUgdmlhIC0tc2VjcmV0LW5hbWUgLyBQTEFURk9STV9TRUNSRVRfTkFNRSAoaXQgZG9lcyBub3QgeWV0IGRlcml2ZSBpdCksIHNvXG4gICAgICAvLyB0aGUgb3BlcmF0b3Igc3VwcGxpZXMgaXQgd2hlbiBydW5uaW5nIHRoaXMgYnVuZGxlLiBwcm92aXNpb24gc3VyZmFjZXMgKGRvZXMgbm90XG4gICAgICAvLyBhdXRvLXJ1bikgdGhlIGJ1bmRsZSBvbiBBV1Mg4oCUIGl0IG5lZWRzIGEgcmVnaXN0ZXJlZCwgaW4tVlBDIHBsYXRmb3JtLlxuICAgICAgY29uc3QgcmVnaW9uID0gb3B0cy5yZWdpb24gPyBgIC0tcmVnaW9uICR7b3B0cy5yZWdpb259YCA6ICcnO1xuICAgICAgLy8gTWlycm9yIHRoZSByZWdpc3RlciBicmFuY2gncyB0YXJnZXQgcnVsZTogYmFrZSBQTEFURk9STV9CQVNFX1VSTCBvbmx5IG9uXG4gICAgICAvLyBlYzIgKHRoZSBpbi1WUEMgVVJMIHJlc29sdmVzIG9uIHRoZSBib3gpLiBPbiBla3MgdGhlIHB1YmxpYyBBTEIvRE5TIGlzbid0XG4gICAgICAvLyB1cCB5ZXQsIHNvIGJha2luZyBpdCB3b3VsZCBwb2ludCBzdG9yZS10b2tlbi9zZXR1cC1ldmVudHMgYXQgYW5cbiAgICAgIC8vIHVucmVzb2x2YWJsZSBob3N0IOKAlCB0aGUgb3BlcmF0b3Igc2V0cyBQTEFURk9STV9CQVNFX1VSTCB3aGVuIHJ1bm5pbmcgdGhlXG4gICAgICAvLyBzdXJmYWNlZCBidW5kbGUsIG9uY2UgdGhlIEFMQiBpcyByZWFkeS5cbiAgICAgIGNvbnN0IGVudiA9IG9wdHMudGFyZ2V0ID09PSAnZWMyJyAmJiBvcHRzLnVybCA/IHsgUExBVEZPUk1fQkFTRV9VUkw6IG9wdHMudXJsIH0gOiB1bmRlZmluZWQ7XG4gICAgICBzdGVwcy5wdXNoKHtcbiAgICAgICAgaWQ6ICdzdG9yZS10b2tlbicsXG4gICAgICAgIGxhYmVsOiAnU3RvcmUgcGxhdGZvcm0gdG9rZW4gaW4gQVdTIFNlY3JldHMgTWFuYWdlcicsXG4gICAgICAgIGNvbW1hbmQ6IGBwaXBlbGluZS1tYW5hZ2VyIHN0b3JlLXRva2VuJHtyZWdpb259YCxcbiAgICAgICAgZW52LFxuICAgICAgfSk7XG4gICAgICBzdGVwcy5wdXNoKHtcbiAgICAgICAgaWQ6ICdldmVudHMnLFxuICAgICAgICBsYWJlbDogJ0V2ZW50QnJpZGdlIGluZ2VzdGlvbiAoc2V0dXAtZXZlbnRzKScsXG4gICAgICAgIGNvbW1hbmQ6IGBwaXBlbGluZS1tYW5hZ2VyIHNldHVwLWV2ZW50cyR7cmVnaW9ufWAsXG4gICAgICAgIGVudixcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBza2lwcGVkLnB1c2goeyBpZDogJ2V2ZW50cycsIHJlYXNvbjogYG5vdCBhcHBsaWNhYmxlIHRvIHRhcmdldCAnJHtvcHRzLnRhcmdldH0nIChlYzIvZWtzIG9ubHkpYCB9KTtcbiAgICB9XG4gIH1cblxuICBvcHRzLnN0ZXBzLmZvckVhY2goKGNvbW1hbmQsIGkpID0+IHtcbiAgICBpZiAoY29tbWFuZC50cmltKCkgIT09ICcnKSBzdGVwcy5wdXNoKHsgaWQ6IGBjdXN0b20tJHtpICsgMX1gLCBsYWJlbDogYEN1c3RvbSBzdGVwICR7aSArIDF9YCwgY29tbWFuZCB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHsgc3RlcHMsIHNraXBwZWQgfTtcbn1cbiJdfQ==
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdC1zdGVwcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZ2VudC9wb3N0LXN0ZXBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7OztHQVNHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBaUIsTUFBTSxjQUFjLENBQUM7QUFnRHpELDJFQUEyRTtBQUMzRSxTQUFTLFdBQVcsQ0FBQyxjQUFpQyxFQUFFLGNBQXVCO0lBQzdFLE1BQU0sR0FBRyxHQUEyQixFQUFFLGVBQWUsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDcEYsS0FBSyxNQUFNLElBQUksSUFBSSxVQUFVO1FBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDNUYsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsSUFBcUI7SUFDcEQsTUFBTSxLQUFLLEdBQWUsRUFBRSxDQUFDO0lBQzdCLE1BQU0sT0FBTyxHQUFrQixFQUFFLENBQUM7SUFFbEMseUZBQXlGO0lBQ3pGLDZGQUE2RjtJQUM3RixpR0FBaUc7SUFDakcsTUFBTSxlQUFlLEdBQ25CLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQzFGLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLFVB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RUFBRSxRQUFRO2dCQUNaLEtBQUssRUFBRSxzQ0FBc0M7Z0JBQzdDLE9BQU8sRUFBRSxnQ0FBZ0MsTUFBTSxFQUFFO2dCQUNqRCxHQUFHO2FBQ0osQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsNkJBQTZCLElBQUksQ0FBQyxNQUFNLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUNyRyxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ2hDLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7WUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzNHLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUM1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUG9zdC1pbnN0YWxsIHN0ZXBzLlxuICpcbiAqIEFmdGVyIHRoZSBwbGF0Zm9ybSBpcyBkZXBsb3llZCArIGhlYWx0aC1jaGVja2VkLCBwcm92aXNpb24gcnVucyBhbiBvcmRlcmVkIHNldFxuICogb2YgcG9zdC1pbnN0YWxsIHN0ZXBzOiAqKnJlZ2lzdGVyKiogKHRoZSBhZG1pbiwgdmlhIGBpbml0LXBsYXRmb3JtLnNoYCwgZHJpdmVuXG4gKiBub24taW50ZXJhY3RpdmVseSBieSBlbnYg4oCUIHdoaWNoIGFsc28gcGVyZm9ybXMgYW55IG9wdC1pbiBwbHVnaW4vY29tcGxpYW5jZS9cbiAqIHNhbXBsZSBsb2FkcyksIHRoZW4gYW4gb3B0aW9uYWwgKipzbW9rZS10ZXN0KiosICoqZXZlbnRzKiogKEFXUyksIGFuZCBhbnlcbiAqIG9wZXJhdG9yICoqLS1wb3N0LXN0ZXAqKiBjb21tYW5kcy4gUHVyZSwgZGV0ZXJtaW5pc3RpYyBhc3NlbWJseSBoZXJlIOKAlCBwcm92aXNpb25cbiAqIHJ1bnMgZWFjaCB2aWEgdGhlIHNhbWUgZ2F0ZWQgYHJ1blNjcmlwdCgpYCBhcyB0aGUgZGVwbG95LlxuICovXG5cbmltcG9ydCB7IExPQURfU1RFUFMsIHR5cGUgVGFyZ2V0SWQgfSBmcm9tICcuL3RhcmdldHMuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBvc3RTdGVwIHtcbiAgLyoqIFN0YWJsZSBpZCAoYHJlZ2lzdGVyYCAvIGBzbW9rZS10ZXN0YCAvIGBldmVudHNgKSBvciBgY3VzdG9tLU5gLiAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICAvKiogSHVtYW4gbGFiZWwgc2hvd24gaW4gdGhlIHBsYW4uICovXG4gIHJlYWRvbmx5IGxhYmVsOiBzdHJpbmc7XG4gIC8qKiBUaGUgZXhhY3QgY29tbWFuZCB0byBydW4uICovXG4gIHJlYWRvbmx5IGNvbW1hbmQ6IHN0cmluZztcbiAgLyoqIE5vbi1zZWNyZXQgZW52IGFwcGxpZWQgdG8gdGhlIGNoaWxkIGZvciB0aGlzIHN0ZXAgKGUuZy4gTE9BRF8qIGZvciByZWdpc3RlcikuICovXG4gIHJlYWRvbmx5IGVudj86IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+O1xufVxuXG4vKiogQSByZXF1ZXN0ZWQgc3RlcCB0aGF0IGRvZXNuJ3QgYXBwbHkgdG8gdGhlIGNob3NlbiB0YXJnZXQuICovXG5leHBvcnQgaW50ZXJmYWNlIFNraXBwZWRTdGVwIHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVhc29uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZWRQb3N0U3RlcHMge1xuICByZWFkb25seSBzdGVwczogUG9zdFN0ZXBbXTtcbiAgcmVhZG9ubHkgc2tpcHBlZDogU2tpcHBlZFN0ZXBbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb3N0U3RlcE9wdGlvbnMge1xuICByZWFkb25seSB0YXJnZXQ6IFRhcmdldElkO1xuICAvKiogQmFzZSBVUkwgb2YgdGhlIGRlcGxveWVkIHBsYXRmb3JtIChmcm9tIGRlcml2ZUhlYWx0aFVybCksIG9yIG51bGwuICovXG4gIHJlYWRvbmx5IHVybDogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIEFXUyByZWdpb24gKGVjMi9la3MpLCBpZiBwcm92aWRlZC4gKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuICAvKiogTG9hZC1zdGVwIGlkcyBlbmFibGVkIHZpYSBgLS13aXRoLSpgIChkcml2ZSBpbml0LXBsYXRmb3JtJ3MgTE9BRF8qIGVudnMgKyBzcGFyc2UgcGF0aHMpLiAqL1xuICByZWFkb25seSBlbmFibGVkTG9hZElkczogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKiBgLS1idWlsZC1ib290c3RyYXBgOiBidWlsZCB0aGUgQ29kZUJ1aWxkIGJvb3RzdHJhcCBpbWFnZSBkdXJpbmcgcmVnaXN0ZXIuICovXG4gIHJlYWRvbmx5IGJ1aWxkQm9vdHN0cmFwOiBib29sZWFuO1xuICAvKiogRmFsc2Ugd2hlbiBgLS1uby1pbml0YCDigJQgc2tpcHMgdGhlIHJlZ2lzdGVyIHN0ZXAgZW50aXJlbHkuICovXG4gIHJlYWRvbmx5IGluaXQ6IGJvb2xlYW47XG4gIC8qKiBUcnVlIGZvciBgLS1pbml0IGF1dG9gICh0aGUgZGVmYXVsdCBtb2RlKS4gT24gdGhlIEFXUyB0YXJnZXRzIHRoZSBkZXBsb3kgc2VsZi1ydW5zXG4gICAqICBpbml0LXBsYXRmb3JtIChlYzIgb24gZmlyc3QgYm9vdCwgZWtzIGluIHNldHVwLnNoJ3MgZmluYWwgcGhhc2UpLCBzbyB0aGUgcmVnaXN0ZXIgc3RlcCBpc1xuICAgKiAgTk9UIHN1cmZhY2VkIGhlcmUg4oCUIGl0IHdvdWxkIGR1cGxpY2F0ZSB0aGF0IGRlcGxveS1tYW5hZ2VkIHJ1bi4gKG1pbmlrdWJlL2xvY2FsIHJ1biBpbml0XG4gICAqICB2aWEgcHJvdmlzaW9uLCBub3QgYSBkZXBsb3ktbWFuYWdlZCBpbml0LikgKi9cbiAgcmVhZG9ubHkgYXV0b0luaXQ/OiBib29sZWFuO1xuICByZWFkb25seSBzbW9rZVRlc3Q6IGJvb2xlYW47XG4gIC8qKiBgLS13aXRoLWV2ZW50c2A6IHRoZSBBV1MgZXZlbnQtaW5nZXN0aW9uIGJ1bmRsZSAoc3RvcmUtdG9rZW4g4oaSIHNldHVwLWV2ZW50cykuICovXG4gIHJlYWRvbmx5IGV2ZW50czogYm9vbGVhbjtcbiAgLyoqIFJhdyBvcGVyYXRvciBgLS1wb3N0LXN0ZXBgIGNvbW1hbmRzLCBpbiBvcmRlci4gKi9cbiAgcmVhZG9ubHkgc3RlcHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKiogQ29tcHV0ZSB0aGUgbm9uLWludGVyYWN0aXZlIGVudiB0aGF0IGRyaXZlcyBpbml0LXBsYXRmb3JtJ3MgcHJvbXB0cy4gKi9cbmZ1bmN0aW9uIHJlZ2lzdGVyRW52KGVuYWJsZWRMb2FkSWRzOiByZWFkb25seSBzdHJpbmdbXSwgYnVpbGRCb290c3RyYXA6IGJvb2xlYW4pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgZW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyBCVUlMRF9CT09UU1RSQVA6IGJ1aWxkQm9vdHN0cmFwID8gJ3knIDogJ24nIH07XG4gIGZvciAoY29uc3Qgc3RlcCBvZiBMT0FEX1NURVBTKSBlbnZbc3RlcC5lbnZdID0gZW5hYmxlZExvYWRJZHMuaW5jbHVkZXMoc3RlcC5pZCkgPyAneScgOiAnbic7XG4gIHJldHVybiBlbnY7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgb3JkZXJlZCBwb3N0LWluc3RhbGwgc3RlcCBsaXN0OiByZWdpc3RlciDihpIgc21va2UtdGVzdCDihpIgZXZlbnRzIOKGklxuICogY3VzdG9tLiBgcmVnaXN0ZXJgIGNhcnJpZXMgdGhlIGxvYWQgKyBCVUlMRF9CT09UU1RSQVAgZW52IHNvIGluaXQtcGxhdGZvcm0gcnVuc1xuICogdGhlIGVuYWJsZWQgbG9hZHMgbm9uLWludGVyYWN0aXZlbHkuIFJlcXVlc3RlZC1idXQtaW5hcHBsaWNhYmxlIHN0ZXBzIGxhbmQgaW5cbiAqIGBza2lwcGVkYCBzbyB0aGUgY2FsbGVyIGNhbiB3YXJuIHJhdGhlciB0aGFuIHNpbGVudGx5IGRyb3AgdGhlbS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQb3N0U3RlcHMob3B0czogUG9zdFN0ZXBPcHRpb25zKTogUmVzb2x2ZWRQb3N0U3RlcHMge1xuICBjb25zdCBzdGVwczogUG9zdFN0ZXBbXSA9IFtdO1xuICBjb25zdCBza2lwcGVkOiBTa2lwcGVkU3RlcFtdID0gW107XG5cbiAgLy8gYC0taW5pdCBhdXRvYCAodGhlIGRlZmF1bHQpIG9uIHRoZSBBV1MgdGFyZ2V0czogdGhlIGRlcGxveSBydW5zIGluaXQtcGxhdGZvcm0gaXRzZWxmIOKAlFxuICAvLyBlYzIgb24gdGhlIGluc3RhbmNlIG9uIGZpcnN0IGJvb3QsIGVrcyBpbiBzZXR1cC5zaCdzIGZpbmFsIHBoYXNlIOKAlCBzbyBET04nVCBhZGQgYSByZWdpc3RlclxuICAvLyBzdGVwIGhlcmU7IGl0IHdvdWxkIGR1cGxpY2F0ZSB0aGUgZGVwbG95LW1hbmFnZWQgcnVuLiAobWluaWt1YmUvbG9jYWwgcnVuIGluaXQgdmlhIHByb3Zpc2lvbi4pXG4gIGNvbnN0IGF1dG9Jbml0TWFuYWdlZCA9XG4gICAgb3B0cy5pbml0ICYmIG9wdHMuYXV0b0luaXQgPT09IHRydWUgJiYgKG9wdHMudGFyZ2V0ID09PSAnZWMyJyB8fCBvcHRzLnRhcmdldCA9PT0gJ2VrcycpO1xuICBpZiAob3B0cy5pbml0ICYmICFhdXRvSW5pdE1hbmFnZWQpIHtcbiAgICBjb25zdCBlbmFibGVkID0gTE9BRF9TVEVQUy5maWx0ZXIoKHMpID0+IG9wdHMuZW5hYmxlZExvYWRJZHMuaW5jbHVkZXMocy5pZCkpLm1hcCgocykgPT4gcy5pZCk7XG4gICAgY29uc3QgbG9hZHMgPSBlbmFibGVkLmxlbmd0aCA+IDAgPyBgICgrICR7ZW5hYmxlZC5qb2luKCcsICcpfSlgIDogJyc7XG4gICAgLy8gUmVnaXN0ZXIgaXMgc3VyZmFjZWQgYXMgYSBtYW51YWwgbmV4dC1zdGVwIG9uIEFXUyAoc2VlIHJ1blBvc3RTdGVwcykuIFRoZSBjb21tYW5kIGRpZmZlcnM6XG4gICAgLy8gIC0gZWMyOiBydW5zIE9OIHRoZSBib3ggYXMgdGhlIG1pbmlrdWJlIHVzZXIsIHdoZXJlIHRoZSBpbi1WUEMgVVJMIHJlc29sdmVzIOKGkiBiYWtlIFBMQVRGT1JNX0JBU0VfVVJMLlxuICAgIC8vICAtIGVrczogaW5pdC1wbGF0Zm9ybSBwb3J0LWZvcndhcmRzIHRvIHN2Yy9uZ2lueCwgc28gaXQgcnVucyBmcm9tIGFueXdoZXJlIHdpdGgga3ViZWN0bCBhY2Nlc3Mg4oCUXG4gICAgLy8gICAgZG8gTk9UIGJha2UgUExBVEZPUk1fQkFTRV9VUkwgKHRoYXQgd291bGQgZm9yY2UgdGhlIHB1YmxpYyBVUkwgYW5kIHdhaXQgb24gdGhlIEFMQi9ETlMpLlxuICAgIC8vICAtIGxvY2FsL21pbmlrdWJlOiBwbGFpbiBjb21tYW5kICh0aGUgVVJMIGlzIGxvY2FsaG9zdCkuXG4gICAgY29uc3QgcmVnaXN0ZXJDb21tYW5kID0gb3B0cy50YXJnZXQgPT09ICdlYzInICYmIG9wdHMudXJsXG4gICAgICA/IGBQTEFURk9STV9CQVNFX1VSTD0ke29wdHMudXJsfSAuL2RlcGxveS9iaW4vaW5pdC1wbGF0Zm9ybS5zaCBlYzJgXG4gICAgICA6IGAuL2RlcGxveS9iaW4vaW5pdC1wbGF0Zm9ybS5zaCAke29wdHMudGFyZ2V0fWA7XG4gICAgc3RlcHMucHVzaCh7XG4gICAgICBpZDogJ3JlZ2lzdGVyJyxcbiAgICAgIGxhYmVsOiBgUmVnaXN0ZXIgYWRtaW4ke2xvYWRzfWAsXG4gICAgICBjb21tYW5kOiByZWdpc3RlckNvbW1hbmQsXG4gICAgICBlbnY6IHJlZ2lzdGVyRW52KG9wdHMuZW5hYmxlZExvYWRJZHMsIG9wdHMuYnVpbGRCb290c3RyYXApLFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKG9wdHMuc21va2VUZXN0KSB7XG4gICAgaWYgKG9wdHMudXJsKSB7XG4gICAgICAvLyAtazogbG9jYWwvbWluaWt1YmUgZnJvbnQgYSBzZWxmLXNpZ25lZCBjZXJ0OyBoYXJtbGVzcyBhZ2FpbnN0IHJlYWwtY2VydCBBV1MgVVJMcy5cbiAgICAgIC8vIFByb2JlIC9oZWFsdGgg4oCUIHRoZSBvbmUgcm91dGUgZ3VhcmFudGVlZCB0byBleGlzdCBhbmQgc2VydmUgdW5hdXRoZW50aWNhdGVkXG4gICAgICAvLyB0aHJvdWdoIG5naW54IChldmVyeSAvYXBpLyogcm91dGUgcmVxdWlyZXMgYXV0aCDihpIgNDAxOyAvYXBpL3ZlcnNpb24gZG9lc24ndFxuICAgICAgLy8gZXhpc3QgYW5kIHdvdWxkIGZhbGwgdGhyb3VnaCB0byB0aGUgU1BBLCBtYWtpbmcgYGN1cmwgLWZgIG1lYW5pbmdsZXNzKS5cbiAgICAgIHN0ZXBzLnB1c2goe1xuICAgICAgICBpZDogJ3Ntb2tlLXRlc3QnLFxuICAgICAgICBsYWJlbDogJ1Ntb2tlIHRlc3Qg4oCUIGdhdGV3YXkvQVBJIHJlYWNoYWJpbGl0eScsXG4gICAgICAgIGNvbW1hbmQ6IGBjdXJsIC1mc1NrICR7b3B0cy51cmx9L2hlYWx0aCAmJiBlY2hvICdzbW9rZS10ZXN0OiBBUEkgcmVhY2hhYmxlJ2AsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2tpcHBlZC5wdXNoKHsgaWQ6ICdzbW9rZS10ZXN0JywgcmVhc29uOiAnbm8gcGxhdGZvcm0gVVJMIHRvIHByb2JlIGZvciB0aGlzIHRhcmdldCcgfSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdHMuZXZlbnRzKSB7XG4gICAgaWYgKG9wdHMudGFyZ2V0ID09PSAnZWMyJyB8fCBvcHRzLnRhcmdldCA9PT0gJ2VrcycpIHtcbiAgICAgIC8vIEV2ZW50IGluZ2VzdGlvbiBuZWVkcyBhIHBsYXRmb3JtIEpXVCBpbiBTZWNyZXRzIE1hbmFnZXIgQkVGT1JFIHRoZSBMYW1iZGFcbiAgICAgIC8vIGlzIHdpcmVkIHVwLCBzbyB0aGlzIGlzIGEgdHdvLXN0ZXAgYnVuZGxlOiBzdG9yZS10b2tlbiB3cml0ZXMgdGhlIHRva2VuLFxuICAgICAgLy8gdGhlbiBzZXR1cC1ldmVudHMgZGVwbG95cyB0aGUgRXZlbnRCcmlkZ2Ug4oaSIFNRUyDihpIgTGFtYmRhIHRoYXQgcmVhZHMgaXQuXG4gICAgICAvLyBzdG9yZS10b2tlbiBkZXJpdmVzIHRoZSBzZWNyZXQgcGF0aCBmcm9tIHRoZSBKV1QncyBvcmcgKENvcmVDb25zdGFudHMgcGF0dGVyblxuICAgICAgLy8g4oaSIHBpcGVsaW5lLWJ1aWxkZXIve29yZ0lkfS9wbGF0Zm9ybSkuIE5PVEU6IHNldHVwLWV2ZW50cyBzdGlsbCBSRVFVSVJFUyB0aGF0XG4gICAgICAvLyBuYW1lIHZpYSAtLXNlY3JldC1uYW1lIC8gUExBVEZPUk1fU0VDUkVUX05BTUUgKGl0IGRvZXMgbm90IHlldCBkZXJpdmUgaXQpLCBzb1xuICAgICAgLy8gdGhlIG9wZXJhdG9yIHN1cHBsaWVzIGl0IHdoZW4gcnVubmluZyB0aGlzIGJ1bmRsZS4gcHJvdmlzaW9uIHN1cmZhY2VzIChkb2VzIG5vdFxuICAgICAgLy8gYXV0by1ydW4pIHRoZSBidW5kbGUgb24gQVdTIOKAlCBpdCBuZWVkcyBhIHJlZ2lzdGVyZWQsIGluLVZQQyBwbGF0Zm9ybS5cbiAgICAgIGNvbnN0IHJlZ2lvbiA9IG9wdHMucmVnaW9uID8gYCAtLXJlZ2lvbiAke29wdHMucmVnaW9ufWAgOiAnJztcbiAgICAgIC8vIE1pcnJvciB0aGUgcmVnaXN0ZXIgYnJhbmNoJ3MgdGFyZ2V0IHJ1bGU6IGJha2UgUExBVEZPUk1fQkFTRV9VUkwgb25seSBvblxuICAgICAgLy8gZWMyICh0aGUgaW4tVlBDIFVSTCByZXNvbHZlcyBvbiB0aGUgYm94KS4gT24gZWtzIHRoZSBwdWJsaWMgQUxCL0ROUyBpc24ndFxuICAgICAgLy8gdXAgeWV0LCBzbyBiYWtpbmcgaXQgd291bGQgcG9pbnQgc3RvcmUtdG9rZW4vc2V0dXAtZXZlbnRzIGF0IGFuXG4gICAgICAvLyB1bnJlc29sdmFibGUgaG9zdCDigJQgdGhlIG9wZXJhdG9yIHNldHMgUExBVEZPUk1fQkFTRV9VUkwgd2hlbiBydW5uaW5nIHRoZVxuICAgICAgLy8gc3VyZmFjZWQgYnVuZGxlLCBvbmNlIHRoZSBBTEIgaXMgcmVhZHkuXG4gICAgICBjb25zdCBlbnYgPSBvcHRzLnRhcmdldCA9PT0gJ2VjMicgJiYgb3B0cy51cmwgPyB7IFBMQVRGT1JNX0JBU0VfVVJMOiBvcHRzLnVybCB9IDogdW5kZWZpbmVkO1xuICAgICAgc3RlcHMucHVzaCh7XG4gICAgICAgIGlkOiAnc3RvcmUtdG9rZW4nLFxuICAgICAgICBsYWJlbDogJ1N0b3JlIHBsYXRmb3JtIHRva2VuIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIgKCsgZGFpbHkgYXV0by1yZW5ld2FsKScsXG4gICAgICAgIC8vIC0tc2NoZWR1bGU6IHRoZSBldmVudC1pbmdlc3Rpb24gTGFtYmRhIHJlYWRzIHRoaXMgdG9rZW4sIHNvIGluc3RhbGwgdGhlXG4gICAgICAgIC8vIHJlbmV3YWwgc3RhY2sgc28gaXQgbmV2ZXIgbGFwc2VzIChzdG9yZS10b2tlbiBubyBsb25nZXIgZGVwbG95cyBpdCBieSBkZWZhdWx0KS5cbiAgICAgICAgY29tbWFuZDogYHBpcGVsaW5lLW1hbmFnZXIgc3RvcmUtdG9rZW4gLS1zY2hlZHVsZSR7cmVnaW9ufWAsXG4gICAgICAgIGVudixcbiAgICAgIH0pO1xuICAgICAgc3RlcHMucHVzaCh7XG4gICAgICAgIGlkOiAnZXZlbnRzJyxcbiAgICAgICAgbGFiZWw6ICdFdmVudEJyaWRnZSBpbmdlc3Rpb24gKHNldHVwLWV2ZW50cyknLFxuICAgICAgICBjb21tYW5kOiBgcGlwZWxpbmUtbWFuYWdlciBzZXR1cC1ldmVudHMke3JlZ2lvbn1gLFxuICAgICAgICBlbnYsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2tpcHBlZC5wdXNoKHsgaWQ6ICdldmVudHMnLCByZWFzb246IGBub3QgYXBwbGljYWJsZSB0byB0YXJnZXQgJyR7b3B0cy50YXJnZXR9JyAoZWMyL2VrcyBvbmx5KWAgfSk7XG4gICAgfVxuICB9XG5cbiAgb3B0cy5zdGVwcy5mb3JFYWNoKChjb21tYW5kLCBpKSA9PiB7XG4gICAgaWYgKGNvbW1hbmQudHJpbSgpICE9PSAnJykgc3RlcHMucHVzaCh7IGlkOiBgY3VzdG9tLSR7aSArIDF9YCwgbGFiZWw6IGBDdXN0b20gc3RlcCAke2kgKyAxfWAsIGNvbW1hbmQgfSk7XG4gIH0pO1xuXG4gIHJldHVybiB7IHN0ZXBzLCBza2lwcGVkIH07XG59XG4iXX0=
@@ -7,10 +7,15 @@ import { Command } from 'commander';
7
7
  *
8
8
  * Requires PLATFORM_TOKEN to be set, or use --email/--password to login inline.
9
9
  *
10
+ * By default it ONLY writes the secret. Pass --schedule to also deploy the daily
11
+ * token-renewal stack (a Lambda that auto-renews this token before it expires).
12
+ *
10
13
  * @example
11
14
  * ```bash
12
15
  * pipeline-manager store-token --region us-east-1
13
16
  * pipeline-manager store-token --days 90 --region us-east-1
17
+ * pipeline-manager store-token --schedule --region us-east-1 # + daily auto-renewal
18
+ * pipeline-manager store-token --schedule --cron '0 3 * * *' # custom renewal time
14
19
  * pipeline-manager store-token --days 7 --secret-name my-custom-secret --no-verify-ssl
15
20
  * pipeline-manager store-token --dry-run
16
21
  * pipeline-manager store-token -e admin -p '***' --region us-east-1
@@ -1 +1 @@
1
- {"version":3,"file":"store-token.d.ts","sourceRoot":"","sources":["../../src/commands/store-token.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4FpC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuMjD"}
1
+ {"version":3,"file":"store-token.d.ts","sourceRoot":"","sources":["../../src/commands/store-token.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4FpC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwMjD"}
@@ -92,10 +92,15 @@ async function deployRenewSchedule(opts) {
92
92
  *
93
93
  * Requires PLATFORM_TOKEN to be set, or use --email/--password to login inline.
94
94
  *
95
+ * By default it ONLY writes the secret. Pass --schedule to also deploy the daily
96
+ * token-renewal stack (a Lambda that auto-renews this token before it expires).
97
+ *
95
98
  * @example
96
99
  * ```bash
97
100
  * pipeline-manager store-token --region us-east-1
98
101
  * pipeline-manager store-token --days 90 --region us-east-1
102
+ * pipeline-manager store-token --schedule --region us-east-1 # + daily auto-renewal
103
+ * pipeline-manager store-token --schedule --cron '0 3 * * *' # custom renewal time
99
104
  * pipeline-manager store-token --days 7 --secret-name my-custom-secret --no-verify-ssl
100
105
  * pipeline-manager store-token --dry-run
101
106
  * pipeline-manager store-token -e admin -p '***' --region us-east-1
@@ -112,8 +117,8 @@ export function storeToken(program) {
112
117
  .option('--secret-name <name>', 'Secrets Manager secret name (default: derived from token org)')
113
118
  .option('--region <region>', 'AWS region (defaults to AWS_REGION env)')
114
119
  .option('--profile <profile>', 'AWS CLI profile', 'default')
115
- .option('--cron <expr>', 'Renewal schedule as a 5-field cron (default: TOKEN_RENEW_SCHEDULE env or "0 0 * * *"; min every 15 minutes)')
116
- .option('--no-schedule', 'Skip deploying the daily token-renewal stack (it is installed by default)')
120
+ .option('--schedule', 'Also deploy the daily token-renewal stack that auto-renews this token (off by default)', false)
121
+ .option('--cron <expr>', 'Renewal schedule as a 5-field cron, used with --schedule (default: TOKEN_RENEW_SCHEDULE env or "0 0 * * *"; min every 15 minutes)')
117
122
  .option('--json', 'Output result as JSON', false)
118
123
  .option('--verify-ssl', 'Enable SSL certificate verification')
119
124
  .option('--no-verify-ssl', 'Disable SSL certificate verification')
@@ -212,11 +217,11 @@ export function storeToken(program) {
212
217
  const description = `Platform JWT token (renew by ${expiresAt})`;
213
218
  await upsertSecret(secretName, secretValue, description, { region, profile: options.profile });
214
219
  const arn = await getSecretArn(secretName, { region, profile: options.profile });
215
- // Install the once-a-day renewal stack so this token never lapses (default
216
- // on; opt out with --no-schedule). commander sets options.schedule=false for
217
- // --no-schedule, true otherwise.
220
+ // Optionally install the once-a-day renewal stack so this token never lapses.
221
+ // Off by default — opt in with --schedule (e.g. for the AWS event-ingestion
222
+ // bundle whose Lambda needs a non-expiring token).
218
223
  let scheduleExpression;
219
- if (options.schedule !== false) {
224
+ if (options.schedule) {
220
225
  const fiveFieldCron = options.cron || process.env.TOKEN_RENEW_SCHEDULE || DEFAULT_RENEW_CRON;
221
226
  scheduleExpression = await deployRenewSchedule({
222
227
  platformUrl: client.getBaseUrl(),
@@ -247,7 +252,7 @@ export function storeToken(program) {
247
252
  'Region': region,
248
253
  'Expires In': `${days} days`,
249
254
  'Renew By': expiresAt,
250
- 'Auto-Renew': scheduleExpression ? `✓ ${scheduleExpression}` : 'disabled (--no-schedule)',
255
+ 'Auto-Renew': scheduleExpression ? `✓ ${scheduleExpression}` : 'off (pass --schedule to enable)',
251
256
  'Status': '✓ Stored',
252
257
  });
253
258
  console.log('');
@@ -260,6 +265,7 @@ export function storeToken(program) {
260
265
  }
261
266
  else {
262
267
  printInfo(`Renew before ${expiresAt} with: pipeline-manager store-token --days ${days}`);
268
+ printInfo(' (or pass --schedule to install a daily auto-renewal stack)');
263
269
  }
264
270
  }
265
271
  }
@@ -276,4 +282,4 @@ export function storeToken(program) {
276
282
  }
277
283
  });
278
284
  }
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtdG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc3RvcmUtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFB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QU0sQ0FBQztvQkFDTixTQUFTLENBQUMsZ0JBQWdCLFNBQVMsOENBQThDLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQzNGLENBQUM7WUFDSCxDQUFDO1FBRUgsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRSxhQUFhO29CQUN0QixXQUFXO29CQUNYLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxJQUFJLHNCQUFzQjtpQkFDekQ7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGV4ZWNGaWxlU3luYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgTGFtYmRhQ2xpZW50LCBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWxhbWJkYSc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IEFQUF9WRVJTSU9OLCB2YWxpZGF0ZU51bWJlciB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IGF1ZGl0TG9nIH0gZnJvbSAnLi4vdXRpbHMvYXVkaXQtbG9nLmpzJztcbmltcG9ydCB7IGRlY29kZVRva2VuUGF5bG9hZCB9IGZyb20gJy4uL3V0aWxzL2F1dGgtZ3VhcmQuanMnO1xuaW1wb3J0IHsgdXBzZXJ0U2VjcmV0LCBnZXRTZWNyZXRBcm4gfSBmcm9tICcuLi91dGlscy9hd3Mtc2VjcmV0cy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMsIHByaW50Q29tbWFuZEhlYWRlciwgcHJpbnRTc2xXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyB0b0V2ZW50QnJpZGdlQ3JvbiB9IGZyb20gJy4uL3V0aWxzL2Nyb24uanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcbmltcG9ydCB7IGVuc3VyZVBsYXRmb3JtVG9rZW4sIHJlc29sdmVTZWNyZXROYW1lIH0gZnJvbSAnLi4vdXRpbHMvcGxhdGZvcm0tc2VjcmV0LmpzJztcblxuLy8gRVNNIGhhcyBubyBfX2Rpcm5hbWU7IGRlcml2ZSBpdCBmcm9tIHRoaXMgbW9kdWxlJ3MgVVJMLlxuY29uc3QgX19kaXJuYW1lID0gcGF0aC5kaXJuYW1lKGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKSk7XG5cbmNvbnN0IFJFTkVXX1NUQUNLX05BTUUgPSAncGlwZWxpbmUtYnVpbGRlci10b2tlbi1yZW5ldyc7XG4vLyBDRk4tbWFuYWdlZCBMYW1iZGEgZnVuY3Rpb24gbmFtZSDigJQga2VlcCBpbiBzeW5jIHdpdGggdG9rZW4tcmVuZXctc3RhY2suanNvbi5cbmNvbnN0IFJFTkVXX0xBTUJEQV9OQU1FID0gJ3BpcGVsaW5lLWJ1aWxkZXItdG9rZW4tcmVuZXcnO1xuLy8gRGVmYXVsdCA1LWZpZWxkIGNyb24gKGRhaWx5IGF0IG1pZG5pZ2h0KSB3aGVuIG5laXRoZXIgLS1jcm9uIG5vciBUT0tFTl9SRU5FV19TQ0hFRFVMRSBpcyBzZXQuXG5jb25zdCBERUZBVUxUX1JFTkVXX0NST04gPSAnMCAwICogKiAqJztcblxuLyoqXG4gKiBEZXBsb3kgKG9yIHVwZGF0ZSkgdGhlIG9uY2UtYS1kYXkgdG9rZW4tcmVuZXdhbCBzdGFjazogYSBzY2hlZHVsZWQgTGFtYmRhIHRoYXRcbiAqIHJlLW1pbnRzIHRoZSBwbGF0Zm9ybSBKV1QgaW4gdGhpcyBzYW1lIHNlY3JldCBiZWZvcmUgaXQgZXhwaXJlcy4gTWlycm9yc1xuICogc2V0dXAtZXZlbnRzIOKAlCBgYXdzIGNsb3VkZm9ybWF0aW9uIGRlcGxveWAgZm9yIHRoZSBpbmZyYSwgdGhlbiBhIGRpcmVjdFxuICogVXBkYXRlRnVuY3Rpb25Db2RlIHdpdGggdGhlIHRoaW4gb3JjaGVzdHJhdG9yIGhhbmRsZXIgY29tcGlsZWQgYWxvbmdzaWRlIHRoaXNcbiAqIENMSSAodGhlIGhhbmRsZXIgbnBtLWluc3RhbGxzIHBpcGVsaW5lLW1hbmFnZXIgYXQgcnVudGltZSBhbmQgcmUtcnVuc1xuICogc3RvcmUtdG9rZW47IHNlZSBzcmMvbGFtYmRhL3Rva2VuLXJlbmV3LWhhbmRsZXIudHMpLlxuICovXG5hc3luYyBmdW5jdGlvbiBkZXBsb3lSZW5ld1NjaGVkdWxlKG9wdHM6IHtcbiAgcGxhdGZvcm1Vcmw6IHN0cmluZztcbiAgc2VjcmV0TmFtZTogc3RyaW5nO1xuICBkYXlzOiBudW1iZXI7XG4gIGZpdmVGaWVsZENyb246IHN0cmluZztcbiAgcmVnaW9uOiBzdHJpbmc7XG4gIHByb2ZpbGU/OiBzdHJpbmc7XG59KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgc2NoZWR1bGVFeHByZXNzaW9uID0gdG9FdmVudEJyaWRnZUNyb24ob3B0cy5maXZlRmllbGRDcm9uKTsgLy8gdmFsaWRhdGVzICsgMTUtbWluIGd1YXJkXG5cbiAgcHJpbnRTZWN0aW9uKCdTY2hlZHVsZSBSZW5ld2FsJyk7XG4gIHByaW50SW5mbygnUGFyYW1ldGVycycsIHtcbiAgICBzdGFjazogUkVORVdfU1RBQ0tfTkFNRSxcbiAgICBzY2hlZHVsZTogb3B0cy5maXZlRmllbGRDcm9uLFxuICAgIGV2ZW50YnJpZGdlOiBzY2hlZHVsZUV4cHJlc3Npb24sXG4gICAgcmVuZXdEYXlzOiBvcHRzLmRheXMsXG4gIH0pO1xuXG4gIC8vIFN0ZXAgMTogaW5mcmEgKExhbWJkYSBnZXRzIHBsYWNlaG9sZGVyIGNvZGUgb24gZmlyc3QgY3JlYXRlKS5cbiAgY29uc3QgdGVtcGxhdGVQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL3RlbXBsYXRlcy90b2tlbi1yZW5ldy1zdGFjay5qc29uJyk7XG4gIGNvbnN0IGNmbkFyZ3MgPSBbXG4gICAgJ2Nsb3VkZm9ybWF0aW9uJywgJ2RlcGxveScsXG4gICAgJy0tc3RhY2stbmFtZScsIFJFTkVXX1NUQUNLX05BTUUsXG4gICAgJy0tdGVtcGxhdGUtZmlsZScsIHRlbXBsYXRlUGF0aCxcbiAgICAnLS1wYXJhbWV0ZXItb3ZlcnJpZGVzJyxcbiAgICBgUGxhdGZvcm1CYXNlVXJsPSR7b3B0cy5wbGF0Zm9ybVVybH1gLFxuICAgIGBQbGF0Zm9ybVNlY3JldE5hbWU9JHtvcHRzLnNlY3JldE5hbWV9YCxcbiAgICBgUmVuZXdEYXlzPSR7b3B0cy5kYXlzfWAsXG4gICAgYFNjaGVkdWxlRXhwcmVzc2lvbj0ke3NjaGVkdWxlRXhwcmVzc2lvbn1gLFxuICAgIC8vIFBpbiB0aGUgaGFuZGxlcidzIHJ1bnRpbWUgbnBtIGluc3RhbGwgdG8gVEhJUyBDTEkncyB2ZXJzaW9uIChyZXByb2R1Y2libGVcbiAgICAvLyByZW5ld2FscyBpbnN0ZWFkIG9mIGEgZmxvYXRpbmcgXCJsYXRlc3RcIikuXG4gICAgYFBpcGVsaW5lTWFuYWdlclZlcnNpb249JHtBUFBfVkVSU0lPTn1gLFxuICAgICctLWNhcGFiaWxpdGllcycsICdDQVBBQklMSVRZX05BTUVEX0lBTScsXG4gICAgJy0tbm8tZmFpbC1vbi1lbXB0eS1jaGFuZ2VzZXQnLFxuICAgICctLXJlZ2lvbicsIG9wdHMucmVnaW9uLFxuICBdO1xuICBpZiAob3B0cy5wcm9maWxlKSBjZm5BcmdzLnB1c2goJy0tcHJvZmlsZScsIG9wdHMucHJvZmlsZSk7XG4gIGV4ZWNGaWxlU3luYygnYXdzJywgY2ZuQXJncywgeyBzdGRpbzogJ2luaGVyaXQnIH0pO1xuXG4gIC8vIFN0ZXAgMjogdXBsb2FkIHRoZSByZWFsIGhhbmRsZXIuIEl0J3MgRVNNLCBzbyB0aGUgemlwIGVudHJ5IG11c3QgYmUgaW5kZXgubWpzXG4gIC8vIChIYW5kbGVyIHN0YXlzIGluZGV4LmhhbmRsZXIg4oCUIG5vZGVqczI0LnggcmVzb2x2ZXMgdGhlIC5tanMgZXh0ZW5zaW9uKS5cbiAgY29uc3QgaGFuZGxlclNyYyA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9sYW1iZGEvdG9rZW4tcmVuZXctaGFuZGxlci5qcycpO1xuICBpZiAoIWZzLmV4aXN0c1N5bmMoaGFuZGxlclNyYykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRva2VuLXJlbmV3IGhhbmRsZXIgbm90IGZvdW5kIGF0ICR7aGFuZGxlclNyY30g4oCUIHdhcyB0aGUgcGFja2FnZSBidWlsdD9gKTtcbiAgfVxuICBjb25zdCB0bXBEaXIgPSBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksICd0b2tlbi1yZW5ldy0nKSk7XG4gIHRyeSB7XG4gICAgZnMuY29weUZpbGVTeW5jKGhhbmRsZXJTcmMsIHBhdGguam9pbih0bXBEaXIsICdpbmRleC5tanMnKSk7XG4gICAgY29uc3QgemlwUGF0aCA9IHBhdGguam9pbih0bXBEaXIsICdpbmRleC56aXAnKTtcbiAgICBleGVjRmlsZVN5bmMoJ3ppcCcsIFsnLWonLCB6aXBQYXRoLCAnaW5kZXgubWpzJ10sIHsgY3dkOiB0bXBEaXIsIHN0ZGlvOiAncGlwZScgfSk7XG5cbiAgICBjb25zdCBsYW1iZGFDbGllbnQgPSBuZXcgTGFtYmRhQ2xpZW50KHsgcmVnaW9uOiBvcHRzLnJlZ2lvbiB9KTtcbiAgICBhd2FpdCBsYW1iZGFDbGllbnQuc2VuZChuZXcgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZCh7XG4gICAgICBGdW5jdGlvbk5hbWU6IFJFTkVXX0xBTUJEQV9OQU1FLFxuICAgICAgWmlwRmlsZTogZnMucmVhZEZpbGVTeW5jKHppcFBhdGgpLFxuICAgIH0pKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBmcy5ybVN5bmModG1wRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gIH1cblxuICBwcmludFN1Y2Nlc3MoYFJlbmV3YWwgc2NoZWR1bGVkICgke3NjaGVkdWxlRXhwcmVzc2lvbn0pYCk7XG4gIHJldHVybiBzY2hlZHVsZUV4cHJlc3Npb247XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgc3RvcmUtdG9rZW5gIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogR2VuZXJhdGVzIGEgbG9uZy1saXZlZCBKV1QgdG9rZW4gdmlhIHRoZSBwbGF0Zm9ybSBBUEkgYW5kIHN0b3JlcyBpdFxuICogaW4gQVdTIFNlY3JldHMgTWFuYWdlciBmb3IgdXNlIGJ5IHRoZSBzeW50aC9kZXBsb3kgLS1zdG9yZS10b2tlbnMgZmxhZy5cbiAqXG4gKiBSZXF1aXJlcyBQTEFURk9STV9UT0tFTiB0byBiZSBzZXQsIG9yIHVzZSAtLWVtYWlsLy0tcGFzc3dvcmQgdG8gbG9naW4gaW5saW5lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBiYXNoXG4gKiBwaXBlbGluZS1tYW5hZ2VyIHN0b3JlLXRva2VuIC0tcmVnaW9uIHVzLWVhc3QtMVxuICogcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbiAtLWRheXMgOTAgLS1yZWdpb24gdXMtZWFzdC0xXG4gKiBwaXBlbGluZS1tYW5hZ2VyIHN0b3JlLXRva2VuIC0tZGF5cyA3IC0tc2VjcmV0LW5hbWUgbXktY3VzdG9tLXNlY3JldCAtLW5vLXZlcmlmeS1zc2xcbiAqIHBpcGVsaW5lLW1hbmFnZXIgc3RvcmUtdG9rZW4gLS1kcnktcnVuXG4gKiBwaXBlbGluZS1tYW5hZ2VyIHN0b3JlLXRva2VuIC1lIGFkbWluIC1wICcqKionIC0tcmVnaW9uIHVzLWVhc3QtMVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdG9yZVRva2VuKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKCdzdG9yZS10b2tlbicpXG4gICAgLmRlc2NyaXB0aW9uKCdHZW5lcmF0ZSBKV1QgdG9rZW4gYW5kIHN0b3JlIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIgZm9yIENESyBkZXBsb3ltZW50cycpXG4gICAgLm9wdGlvbignLWUsIC0tZW1haWwgPGVtYWlsPicsICdMb2dpbiBlbWFpbCAoc2tpcHMgUExBVEZPUk1fVE9LRU4gcmVxdWlyZW1lbnQpJylcbiAgICAub3B0aW9uKCctcCwgLS1wYXNzd29yZCA8cGFzc3dvcmQ+JywgJ0xvZ2luIHBhc3N3b3JkICh1c2VkIHdpdGggLS1lbWFpbCknKVxuICAgIC5vcHRpb24oJy0tZGF5cyA8ZGF5cz4nLCAnVG9rZW4gbGlmZXRpbWUgaW4gZGF5cycsICczMCcpXG4gICAgLm9wdGlvbignLS1kcnktcnVuJywgJ1Nob3cgd2hhdCB3b3VsZCBiZSBzdG9yZWQgd2l0aG91dCB3cml0aW5nIHRvIFNlY3JldHMgTWFuYWdlcicsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tc2VjcmV0LW5hbWUgPG5hbWU+JywgJ1NlY3JldHMgTWFuYWdlciBzZWNyZXQgbmFtZSAoZGVmYXVsdDogZGVyaXZlZCBmcm9tIHRva2VuIG9yZyknKVxuICAgIC5vcHRpb24oJy0tcmVnaW9uIDxyZWdpb24+JywgJ0FXUyByZWdpb24gKGRlZmF1bHRzIHRvIEFXU19SRUdJT04gZW52KScpXG4gICAgLm9wdGlvbignLS1wcm9maWxlIDxwcm9maWxlPicsICdBV1MgQ0xJIHByb2ZpbGUnLCAnZGVmYXVsdCcpXG4gICAgLm9wdGlvbignLS1jcm9uIDxleHByPicsICdSZW5ld2FsIHNjaGVkdWxlIGFzIGEgNS1maWVsZCBjcm9uIChkZWZhdWx0OiBUT0tFTl9SRU5FV19TQ0hFRFVMRSBlbnYgb3IgXCIwIDAgKiAqICpcIjsgbWluIGV2ZXJ5IDE1IG1pbnV0ZXMpJylcbiAgICAub3B0aW9uKCctLW5vLXNjaGVkdWxlJywgJ1NraXAgZGVwbG95aW5nIHRoZSBkYWlseSB0b2tlbi1yZW5ld2FsIHN0YWNrIChpdCBpcyBpbnN0YWxsZWQgYnkgZGVmYXVsdCknKVxuICAgIC5vcHRpb24oJy0tanNvbicsICdPdXRwdXQgcmVzdWx0IGFzIEpTT04nLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLXZlcmlmeS1zc2wnLCAnRW5hYmxlIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24nKVxuICAgIC5vcHRpb24oJy0tbm8tdmVyaWZ5LXNzbCcsICdEaXNhYmxlIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24nKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdTdG9yZSBUb2tlbicpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICAgIGNvbnN0IHJlZ2lvbiA9IG9wdGlvbnMucmVnaW9uIHx8IHByb2Nlc3MuZW52LkFXU19SRUdJT04gfHwgcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfUkVHSU9OIHx8ICd1cy1lYXN0LTEnO1xuXG4gICAgICAgIGNvbnN0IGRheXMgPSB2YWxpZGF0ZU51bWJlcihvcHRpb25zLmRheXMsICdkYXlzJywgMSwgMzY1KTtcbiAgICAgICAgY29uc3QgZXhwaXJlc0luU2Vjb25kcyA9IGRheXMgKiAyNCAqIDYwICogNjA7XG5cbiAgICAgICAgLy8gU3RlcCAwOiBsb2cgaW4gZmlyc3Qgd2hlbiBjcmVkcyBhcmUgYXZhaWxhYmxlIGFuZCBubyBQTEFURk9STV9UT0tFTiBpcyBzZXRcbiAgICAgICAgLy8gKHNoYXJlZCB3aXRoIHNldHVwLWV2ZW50cykuIENyZWRzIGNvbWUgZnJvbSAtLWVtYWlsLy0tcGFzc3dvcmQgT1IgdGhlIGVudlxuICAgICAgICAvLyB2YXJzIFBMQVRGT1JNX0lERU5USUZJRVIvUExBVEZPUk1fUEFTU1dPUkQg4oCUIHRoZSBlbnYgcGF0aCBsZXRzIGNhbGxlcnMgbGlrZVxuICAgICAgICAvLyBgcHJvdmlzaW9uIC0td2l0aC1ldmVudHNgIHBhc3MgdGhlbSB3aXRob3V0IHB1dHRpbmcgdGhlIHBhc3N3b3JkIG9uIHRoZVxuICAgICAgICAvLyBjb21tYW5kIGxpbmUgKHdoZXJlIGl0IHdvdWxkIHNob3cgaW4gcGxhbnMvbG9ncykuXG4gICAgICAgIGF3YWl0IGVuc3VyZVBsYXRmb3JtVG9rZW4ob3B0aW9ucyk7XG5cbiAgICAgICAgLy8gU3RlcCAxOiBBdXRoZW50aWNhdGUgYW5kIGdlbmVyYXRlIGxvbmctbGl2ZWQgdG9rZW5cbiAgICAgICAgcHJpbnRTZWN0aW9uKCdHZW5lcmF0ZSBUb2tlbicpO1xuXG4gICAgICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYyhvcHRpb25zKTtcblxuICAgICAgICAvLyBSZXNvbHZlIHNlY3JldCBuYW1lIGZyb20gdG9rZW4ncyBvcmdhbml6YXRpb25JZCAodW5sZXNzIC0tc2VjcmV0LW5hbWUgd2FzIGV4cGxpY2l0bHkgc2V0KVxuICAgICAgICBjb25zdCBzZWNyZXROYW1lID0gb3B0aW9ucy5zZWNyZXROYW1lIHx8IHJlc29sdmVTZWNyZXROYW1lKHByb2Nlc3MuZW52LlBMQVRGT1JNX1RPS0VOISk7XG5cbiAgICAgICAgYXVkaXRMb2coJ3N0b3JlLXRva2VuJywgeyBleGVjdXRpb25JZCwgc2VjcmV0TmFtZSwgZGF5cywgZHJ5UnVuOiBvcHRpb25zLmRyeVJ1biB9KTtcblxuICAgICAgICBwcmludEluZm8oJ1BhcmFtZXRlcnMnLCB7XG4gICAgICAgICAgc2VjcmV0TmFtZSxcbiAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgZGF5cyxcbiAgICAgICAgICBleHBpcmVzSW46IGAke2V4cGlyZXNJblNlY29uZHN9c2AsXG4gICAgICAgICAgZHJ5UnVuOiBvcHRpb25zLmRyeVJ1bixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcHJpbnRJbmZvKCdSZXF1ZXN0aW5nIHRva2VuJywgeyBleHBpcmVzSW46IGAke2V4cGlyZXNJblNlY29uZHN9cyAoJHtkYXlzfSBkYXlzKWAgfSk7XG5cbiAgICAgICAgY29uc3QgdG9rZW5SZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgICAgICAgICAnL2FwaS91c2VyL2dlbmVyYXRlLXRva2VuJyxcbiAgICAgICAgICB7IGV4cGlyZXNJbjogZXhwaXJlc0luU2Vjb25kcyB9LFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHRva2VuRGF0YSA9ICh0b2tlblJlc3BvbnNlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8uZGF0YSA/PyB0b2tlblJlc3BvbnNlO1xuICAgICAgICBjb25zdCBhY2Nlc3NUb2tlbiA9ICh0b2tlbkRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pPy5hY2Nlc3NUb2tlbiBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHJlZnJlc2hUb2tlbiA9ICh0b2tlbkRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pPy5yZWZyZXNoVG9rZW4gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBhY3R1YWxFeHBpcmVzSW4gPSAoKHRva2VuRGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik/LmV4cGlyZXNJbiBhcyBudW1iZXIpID8/IGV4cGlyZXNJblNlY29uZHM7XG5cbiAgICAgICAgaWYgKCFhY2Nlc3NUb2tlbikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVG9rZW4gZ2VuZXJhdGlvbiBmYWlsZWQg4oCUIG5vIGFjY2VzcyB0b2tlbiBpbiByZXNwb25zZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJpbnRTdWNjZXNzKGBUb2tlbiBnZW5lcmF0ZWQgKGV4cGlyZXMgaW4gJHthY3R1YWxFeHBpcmVzSW59cylgKTtcblxuICAgICAgICBjb25zdCBleHBpcmVzQXQgPSBuZXcgRGF0ZShEYXRlLm5vdygpICsgYWN0dWFsRXhwaXJlc0luICogMTAwMCkudG9JU09TdHJpbmcoKTtcblxuICAgICAgICAvLyBTY2hlbWE6IHsgdXNlcm5hbWU6IG9yZ0lkLCBwYXNzd29yZDogSldULCAuLi5tZXRhZGF0YSB9XG4gICAgICAgIC8vIC0gdXNlcm5hbWUvcGFzc3dvcmQgZmllbGRzIHNhdGlzZnkgQ29kZUJ1aWxkJ3MgYHNlY3JldHNNYW5hZ2VyQ3JlZGVudGlhbHNgXG4gICAgICAgIC8vICAgKEhUVFAgQmFzaWMsIHNlbnQgdG8gcGlwZWxpbmUtaW1hZ2UtcmVnaXN0cnkncyAvdG9rZW4gZW5kcG9pbnQpXG4gICAgICAgIC8vIC0gVGhlIHNhbWUgSldUIGlzIGNvbnN1bWVkIGJ5IHRoZSBwbHVnaW4tbG9va3VwIExhbWJkYSBieSByZWFkaW5nXG4gICAgICAgIC8vICAgdGhlIGBwYXNzd29yZGAgZmllbGRcbiAgICAgICAgLy8gLSBPbmUgU2VjcmV0IHBlciBjdXN0b21lciBhY2NvdW50IHJlcGxhY2VzIHRoZSBwcmV2aW91cyB0d28tc2VjcmV0IG1vZGVsXG4gICAgICAgIC8vIERlY29kZSBKV1QgZm9yIG9yZ0lkIOKAlCBpdCdzIGEgc3RhYmxlIGlkZW50aWZpZXIgZm9yIHRoZSB1c2VybmFtZSBmaWVsZDtcbiAgICAgICAgLy8gdGhlIGFjdHVhbCBhdXRoIHVzZXMgdGhlIHBhc3N3b3JkIChKV1QpIHdoaWNoIHRoZSB0b2tlbiBzZXJ2aWNlIHZlcmlmaWVzLlxuICAgICAgICAvLyBgfHxgIChub3QgYD8/YCk6IGFuIEVNUFRZLXN0cmluZyBvcmdhbml6YXRpb25JZCBtdXN0IGFsc28gZmFsbCBiYWNrLiBBXG4gICAgICAgIC8vIHN5c2FkbWluL3N5c3RlbSB0b2tlbiBvZnRlbiBjYXJyaWVzIG9yZ2FuaXphdGlvbklkPVwiXCIsIGFuZCBDb2RlQnVpbGRcbiAgICAgICAgLy8gcmVqZWN0cyBhIHJlZ2lzdHJ5IGNyZWRlbnRpYWwgd2hvc2UgYHVzZXJuYW1lYCBmaWVsZCBpcyBlbXB0eSB3aXRoXG4gICAgICAgIC8vIFwiQXV0aG9yaXphdGlvbkRhdGEgaXMgbWFsZm9ybWVkLCBlbXB0eSBmaWVsZFwiIOKAlCBzbyB1c2VybmFtZSBtdXN0IGFsd2F5c1xuICAgICAgICAvLyBiZSBhIG5vbi1lbXB0eSB2YWx1ZS5cbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IGRlY29kZVRva2VuUGF5bG9hZChhY2Nlc3NUb2tlbik7XG4gICAgICAgIGNvbnN0IG9yZ0lkID0gcGF5bG9hZD8ub3JnYW5pemF0aW9uSWQ/LnRyaW0oKSB8fCAndW5rbm93bi1vcmcnO1xuXG4gICAgICAgIGNvbnN0IHNlY3JldFZhbHVlID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIHVzZXJuYW1lOiBvcmdJZCxcbiAgICAgICAgICBwYXNzd29yZDogYWNjZXNzVG9rZW4sXG4gICAgICAgICAgLi4uKHJlZnJlc2hUb2tlbiAmJiB7IHJlZnJlc2hUb2tlbiB9KSxcbiAgICAgICAgICBwbGF0Zm9ybVVybDogY2xpZW50LmdldEJhc2VVcmwoKSxcbiAgICAgICAgICBleHBpcmVzSW46IGFjdHVhbEV4cGlyZXNJbixcbiAgICAgICAgICBleHBpcmVzQXQsXG4gICAgICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIERyeS1ydW46IHNob3cgd2hhdCB3b3VsZCBiZSBzdG9yZWRcbiAgICAgICAgaWYgKG9wdGlvbnMuZHJ5UnVuKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuanNvbikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgICBkcnlSdW46IHRydWUsXG4gICAgICAgICAgICAgIHNlY3JldE5hbWUsXG4gICAgICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICAgICAgZXhwaXJlc0luRGF5czogZGF5cyxcbiAgICAgICAgICAgICAgZXhwaXJlc0F0LFxuICAgICAgICAgICAgICB0b2tlbkxlbmd0aDogYWNjZXNzVG9rZW4ubGVuZ3RoLFxuICAgICAgICAgICAgICBoYXNSZWZyZXNoVG9rZW46ICEhcmVmcmVzaFRva2VuLFxuICAgICAgICAgICAgfSwgbnVsbCwgMikpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgICBwcmludFNlY3Rpb24oJ0RyeSBSdW4g4oCUIE5vIENoYW5nZXMgTWFkZScpO1xuICAgICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICAgICdTZWNyZXQgTmFtZSc6IHNlY3JldE5hbWUsXG4gICAgICAgICAgICAgICdSZWdpb24nOiByZWdpb24sXG4gICAgICAgICAgICAgICdFeHBpcmVzIEluJzogYCR7ZGF5c30gZGF5c2AsXG4gICAgICAgICAgICAgICdSZW5ldyBCeSc6IGV4cGlyZXNBdCxcbiAgICAgICAgICAgICAgJ1Rva2VuIExlbmd0aCc6IGAke2FjY2Vzc1Rva2VuLmxlbmd0aH0gY2hhcnNgLFxuICAgICAgICAgICAgICAnSGFzIFJlZnJlc2ggVG9rZW4nOiByZWZyZXNoVG9rZW4gPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHByaW50U3VjY2VzcygnRHJ5IHJ1biBjb21wbGV0ZSDigJQgbm8gc2VjcmV0IHdhcyBjcmVhdGVkIG9yIHVwZGF0ZWQnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RlcCAyOiBTdG9yZSB0b2tlbiBpbiBTZWNyZXRzIE1hbmFnZXJcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdTdG9yZSBUb2tlbicpO1xuXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYFBsYXRmb3JtIEpXVCB0b2tlbiAocmVuZXcgYnkgJHtleHBpcmVzQXR9KWA7XG4gICAgICAgIGF3YWl0IHVwc2VydFNlY3JldChzZWNyZXROYW1lLCBzZWNyZXRWYWx1ZSwgZGVzY3JpcHRpb24sIHsgcmVnaW9uLCBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUgfSk7XG5cbiAgICAgICAgY29uc3QgYXJuID0gYXdhaXQgZ2V0U2VjcmV0QXJuKHNlY3JldE5hbWUsIHsgcmVnaW9uLCBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUgfSk7XG5cbiAgICAgICAgLy8gSW5zdGFsbCB0aGUgb25jZS1hLWRheSByZW5ld2FsIHN0YWNrIHNvIHRoaXMgdG9rZW4gbmV2ZXIgbGFwc2VzIChkZWZhdWx0XG4gICAgICAgIC8vIG9uOyBvcHQgb3V0IHdpdGggLS1uby1zY2hlZHVsZSkuIGNvbW1hbmRlciBzZXRzIG9wdGlvbnMuc2NoZWR1bGU9ZmFsc2UgZm9yXG4gICAgICAgIC8vIC0tbm8tc2NoZWR1bGUsIHRydWUgb3RoZXJ3aXNlLlxuICAgICAgICBsZXQgc2NoZWR1bGVFeHByZXNzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChvcHRpb25zLnNjaGVkdWxlICE9PSBmYWxzZSkge1xuICAgICAgICAgIGNvbnN0IGZpdmVGaWVsZENyb24gPSBvcHRpb25zLmNyb24gfHwgcHJvY2Vzcy5lbnYuVE9LRU5fUkVORVdfU0NIRURVTEUgfHwgREVGQVVMVF9SRU5FV19DUk9OO1xuICAgICAgICAgIHNjaGVkdWxlRXhwcmVzc2lvbiA9IGF3YWl0IGRlcGxveVJlbmV3U2NoZWR1bGUoe1xuICAgICAgICAgICAgcGxhdGZvcm1Vcmw6IGNsaWVudC5nZXRCYXNlVXJsKCksXG4gICAgICAgICAgICBzZWNyZXROYW1lLFxuICAgICAgICAgICAgZGF5cyxcbiAgICAgICAgICAgIGZpdmVGaWVsZENyb24sXG4gICAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgICBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5qc29uKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICAgIHNlY3JldE5hbWUsXG4gICAgICAgICAgICBzZWNyZXRBcm46IGFybixcbiAgICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICAgIGV4cGlyZXNJbkRheXM6IGRheXMsXG4gICAgICAgICAgICBleHBpcmVzQXQsXG4gICAgICAgICAgICBzY2hlZHVsZTogc2NoZWR1bGVFeHByZXNzaW9uID8/IG51bGwsXG4gICAgICAgICAgfSwgbnVsbCwgMikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgICBwcmludFNlY3Rpb24oJ1Rva2VuIFN0b3JlZCcpO1xuXG4gICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICAnU2VjcmV0IE5hbWUnOiBzZWNyZXROYW1lLFxuICAgICAgICAgICAgJ1NlY3JldCBBUk4nOiBhcm4sXG4gICAgICAgICAgICAnUmVnaW9uJzogcmVnaW9uLFxuICAgICAgICAgICAgJ0V4cGlyZXMgSW4nOiBgJHtkYXlzfSBkYXlzYCxcbiAgICAgICAgICAgICdSZW5ldyBCeSc6IGV4cGlyZXNBdCxcbiAgICAgICAgICAgICdBdXRvLVJlbmV3Jzogc2NoZWR1bGVFeHByZXNzaW9uID8gYOKckyAke3NjaGVkdWxlRXhwcmVzc2lvbn1gIDogJ2Rpc2FibGVkICgtLW5vLXNjaGVkdWxlKScsXG4gICAgICAgICAgICAnU3RhdHVzJzogJ+KckyBTdG9yZWQnLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50U3VjY2VzcygnVG9rZW4gc3RvcmVkLiBUbyB1c2Ugd2l0aCBzeW50aC9kZXBsb3k6Jyk7XG4gICAgICAgICAgcHJpbnRJbmZvKGAgIGV4cG9ydCBQTEFURk9STV9TRUNSRVRfTkFNRT0ke3NlY3JldE5hbWV9YCk7XG4gICAgICAgICAgcHJpbnRJbmZvKCcgIHBpcGVsaW5lLW1hbmFnZXIgc3ludGggLS1pZCA8cGlwZWxpbmUtaWQ+IC0tc3RvcmUtdG9rZW5zJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIGlmIChzY2hlZHVsZUV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIHByaW50SW5mbyhgQXV0by1yZW5ld2FsIGlzIGFjdGl2ZSAoJHtzY2hlZHVsZUV4cHJlc3Npb259KTsgdGhlIHNlY3JldCByZWZyZXNoZXMgYmVmb3JlICR7ZXhwaXJlc0F0fS5gKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJpbnRJbmZvKGBSZW5ldyBiZWZvcmUgJHtleHBpcmVzQXR9IHdpdGg6IHBpcGVsaW5lLW1hbmFnZXIgc3RvcmUtdG9rZW4gLS1kYXlzICR7ZGF5c31gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgY29tbWFuZDogJ3N0b3JlLXRva2VuJyxcbiAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgc2VjcmV0TmFtZTogb3B0aW9ucy5zZWNyZXROYW1lIHx8ICcoZGVyaXZlZCBmcm9tIHRva2VuKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtdG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc3RvcmUtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFB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QztxQkFBTSxDQUFDO29CQUNOLFNBQVMsQ0FBQyxnQkFBZ0IsU0FBUyw4Q0FBOEMsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDekYsU0FBUyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7Z0JBQzVFLENBQUM7WUFDSCxDQUFDO1FBRUgsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRSxhQUFhO29CQUN0QixXQUFXO29CQUNYLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxJQUFJLHNCQUFzQjtpQkFDekQ7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGV4ZWNGaWxlU3luYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgTGFtYmRhQ2xpZW50LCBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWxhbWJkYSc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IEFQUF9WRVJTSU9OLCB2YWxpZGF0ZU51bWJlciB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IGF1ZGl0TG9nIH0gZnJvbSAnLi4vdXRpbHMvYXVkaXQtbG9nLmpzJztcbmltcG9ydCB7IGRlY29kZVRva2VuUGF5bG9hZCB9IGZyb20gJy4uL3V0aWxzL2F1dGgtZ3VhcmQuanMnO1xuaW1wb3J0IHsgdXBzZXJ0U2VjcmV0LCBnZXRTZWNyZXRBcm4gfSBmcm9tICcuLi91dGlscy9hd3Mtc2VjcmV0cy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMsIHByaW50Q29tbWFuZEhlYWRlciwgcHJpbnRTc2xXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyB0b0V2ZW50QnJpZGdlQ3JvbiB9IGZyb20gJy4uL3V0aWxzL2Nyb24uanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcbmltcG9ydCB7IGVuc3VyZVBsYXRmb3JtVG9rZW4sIHJlc29sdmVTZWNyZXROYW1lIH0gZnJvbSAnLi4vdXRpbHMvcGxhdGZvcm0tc2VjcmV0LmpzJztcblxuLy8gRVNNIGhhcyBubyBfX2Rpcm5hbWU7IGRlcml2ZSBpdCBmcm9tIHRoaXMgbW9kdWxlJ3MgVVJMLlxuY29uc3QgX19kaXJuYW1lID0gcGF0aC5kaXJuYW1lKGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKSk7XG5cbmNvbnN0IFJFTkVXX1NUQUNLX05BTUUgPSAncGlwZWxpbmUtYnVpbGRlci10b2tlbi1yZW5ldyc7XG4vLyBDRk4tbWFuYWdlZCBMYW1iZGEgZnVuY3Rpb24gbmFtZSDigJQga2VlcCBpbiBzeW5jIHdpdGggdG9rZW4tcmVuZXctc3RhY2suanNvbi5cbmNvbnN0IFJFTkVXX0xBTUJEQV9OQU1FID0gJ3BpcGVsaW5lLWJ1aWxkZXItdG9rZW4tcmVuZXcnO1xuLy8gRGVmYXVsdCA1LWZpZWxkIGNyb24gKGRhaWx5IGF0IG1pZG5pZ2h0KSB3aGVuIG5laXRoZXIgLS1jcm9uIG5vciBUT0tFTl9SRU5FV19TQ0hFRFVMRSBpcyBzZXQuXG5jb25zdCBERUZBVUxUX1JFTkVXX0NST04gPSAnMCAwICogKiAqJztcblxuLyoqXG4gKiBEZXBsb3kgKG9yIHVwZGF0ZSkgdGhlIG9uY2UtYS1kYXkgdG9rZW4tcmVuZXdhbCBzdGFjazogYSBzY2hlZHVsZWQgTGFtYmRhIHRoYXRcbiAqIHJlLW1pbnRzIHRoZSBwbGF0Zm9ybSBKV1QgaW4gdGhpcyBzYW1lIHNlY3JldCBiZWZvcmUgaXQgZXhwaXJlcy4gTWlycm9yc1xuICogc2V0dXAtZXZlbnRzIOKAlCBgYXdzIGNsb3VkZm9ybWF0aW9uIGRlcGxveWAgZm9yIHRoZSBpbmZyYSwgdGhlbiBhIGRpcmVjdFxuICogVXBkYXRlRnVuY3Rpb25Db2RlIHdpdGggdGhlIHRoaW4gb3JjaGVzdHJhdG9yIGhhbmRsZXIgY29tcGlsZWQgYWxvbmdzaWRlIHRoaXNcbiAqIENMSSAodGhlIGhhbmRsZXIgbnBtLWluc3RhbGxzIHBpcGVsaW5lLW1hbmFnZXIgYXQgcnVudGltZSBhbmQgcmUtcnVuc1xuICogc3RvcmUtdG9rZW47IHNlZSBzcmMvbGFtYmRhL3Rva2VuLXJlbmV3LWhhbmRsZXIudHMpLlxuICovXG5hc3luYyBmdW5jdGlvbiBkZXBsb3lSZW5ld1NjaGVkdWxlKG9wdHM6IHtcbiAgcGxhdGZvcm1Vcmw6IHN0cmluZztcbiAgc2VjcmV0TmFtZTogc3RyaW5nO1xuICBkYXlzOiBudW1iZXI7XG4gIGZpdmVGaWVsZENyb246IHN0cmluZztcbiAgcmVnaW9uOiBzdHJpbmc7XG4gIHByb2ZpbGU/OiBzdHJpbmc7XG59KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgc2NoZWR1bGVFeHByZXNzaW9uID0gdG9FdmVudEJyaWRnZUNyb24ob3B0cy5maXZlRmllbGRDcm9uKTsgLy8gdmFsaWRhdGVzICsgMTUtbWluIGd1YXJkXG5cbiAgcHJpbnRTZWN0aW9uKCdTY2hlZHVsZSBSZW5ld2FsJyk7XG4gIHByaW50SW5mbygnUGFyYW1ldGVycycsIHtcbiAgICBzdGFjazogUkVORVdfU1RBQ0tfTkFNRSxcbiAgICBzY2hlZHVsZTogb3B0cy5maXZlRmllbGRDcm9uLFxuICAgIGV2ZW50YnJpZGdlOiBzY2hlZHVsZUV4cHJlc3Npb24sXG4gICAgcmVuZXdEYXlzOiBvcHRzLmRheXMsXG4gIH0pO1xuXG4gIC8vIFN0ZXAgMTogaW5mcmEgKExhbWJkYSBnZXRzIHBsYWNlaG9sZGVyIGNvZGUgb24gZmlyc3QgY3JlYXRlKS5cbiAgY29uc3QgdGVtcGxhdGVQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL3RlbXBsYXRlcy90b2tlbi1yZW5ldy1zdGFjay5qc29uJyk7XG4gIGNvbnN0IGNmbkFyZ3MgPSBbXG4gICAgJ2Nsb3VkZm9ybWF0aW9uJywgJ2RlcGxveScsXG4gICAgJy0tc3RhY2stbmFtZScsIFJFTkVXX1NUQUNLX05BTUUsXG4gICAgJy0tdGVtcGxhdGUtZmlsZScsIHRlbXBsYXRlUGF0aCxcbiAgICAnLS1wYXJhbWV0ZXItb3ZlcnJpZGVzJyxcbiAgICBgUGxhdGZvcm1CYXNlVXJsPSR7b3B0cy5wbGF0Zm9ybVVybH1gLFxuICAgIGBQbGF0Zm9ybVNlY3JldE5hbWU9JHtvcHRzLnNlY3JldE5hbWV9YCxcbiAgICBgUmVuZXdEYXlzPSR7b3B0cy5kYXlzfWAsXG4gICAgYFNjaGVkdWxlRXhwcmVzc2lvbj0ke3NjaGVkdWxlRXhwcmVzc2lvbn1gLFxuICAgIC8vIFBpbiB0aGUgaGFuZGxlcidzIHJ1bnRpbWUgbnBtIGluc3RhbGwgdG8gVEhJUyBDTEkncyB2ZXJzaW9uIChyZXByb2R1Y2libGVcbiAgICAvLyByZW5ld2FscyBpbnN0ZWFkIG9mIGEgZmxvYXRpbmcgXCJsYXRlc3RcIikuXG4gICAgYFBpcGVsaW5lTWFuYWdlclZlcnNpb249JHtBUFBfVkVSU0lPTn1gLFxuICAgICctLWNhcGFiaWxpdGllcycsICdDQVBBQklMSVRZX05BTUVEX0lBTScsXG4gICAgJy0tbm8tZmFpbC1vbi1lbXB0eS1jaGFuZ2VzZXQnLFxuICAgICctLXJlZ2lvbicsIG9wdHMucmVnaW9uLFxuICBdO1xuICBpZiAob3B0cy5wcm9maWxlKSBjZm5BcmdzLnB1c2goJy0tcHJvZmlsZScsIG9wdHMucHJvZmlsZSk7XG4gIGV4ZWNGaWxlU3luYygnYXdzJywgY2ZuQXJncywgeyBzdGRpbzogJ2luaGVyaXQnIH0pO1xuXG4gIC8vIFN0ZXAgMjogdXBsb2FkIHRoZSByZWFsIGhhbmRsZXIuIEl0J3MgRVNNLCBzbyB0aGUgemlwIGVudHJ5IG11c3QgYmUgaW5kZXgubWpzXG4gIC8vIChIYW5kbGVyIHN0YXlzIGluZGV4LmhhbmRsZXIg4oCUIG5vZGVqczI0LnggcmVzb2x2ZXMgdGhlIC5tanMgZXh0ZW5zaW9uKS5cbiAgY29uc3QgaGFuZGxlclNyYyA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9sYW1iZGEvdG9rZW4tcmVuZXctaGFuZGxlci5qcycpO1xuICBpZiAoIWZzLmV4aXN0c1N5bmMoaGFuZGxlclNyYykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRva2VuLXJlbmV3IGhhbmRsZXIgbm90IGZvdW5kIGF0ICR7aGFuZGxlclNyY30g4oCUIHdhcyB0aGUgcGFja2FnZSBidWlsdD9gKTtcbiAgfVxuICBjb25zdCB0bXBEaXIgPSBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksICd0b2tlbi1yZW5ldy0nKSk7XG4gIHRyeSB7XG4gICAgZnMuY29weUZpbGVTeW5jKGhhbmRsZXJTcmMsIHBhdGguam9pbih0bXBEaXIsICdpbmRleC5tanMnKSk7XG4gICAgY29uc3QgemlwUGF0aCA9IHBhdGguam9pbih0bXBEaXIsICdpbmRleC56aXAnKTtcbiAgICBleGVjRmlsZVN5bmMoJ3ppcCcsIFsnLWonLCB6aXBQYXRoLCAnaW5kZXgubWpzJ10sIHsgY3dkOiB0bXBEaXIsIHN0ZGlvOiAncGlwZScgfSk7XG5cbiAgICBjb25zdCBsYW1iZGFDbGllbnQgPSBuZXcgTGFtYmRhQ2xpZW50KHsgcmVnaW9uOiBvcHRzLnJlZ2lvbiB9KTtcbiAgICBhd2FpdCBsYW1iZGFDbGllbnQuc2VuZChuZXcgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZCh7XG4gICAgICBGdW5jdGlvbk5hbWU6IFJFTkVXX0xBTUJEQV9OQU1FLFxuICAgICAgWmlwRmlsZTogZnMucmVhZEZpbGVTeW5jKHppcFBhdGgpLFxuICAgIH0pKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBmcy5ybVN5bmModG1wRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gIH1cblxuICBwcmludFN1Y2Nlc3MoYFJlbmV3YWwgc2NoZWR1bGVkICgke3NjaGVkdWxlRXhwcmVzc2lvbn0pYCk7XG4gIHJldHVybiBzY2hlZHVsZUV4cHJlc3Npb247XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgc3RvcmUtdG9rZW5gIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogR2VuZXJhdGVzIGEgbG9uZy1saXZlZCBKV1QgdG9rZW4gdmlhIHRoZSBwbGF0Zm9ybSBBUEkgYW5kIHN0b3JlcyBpdFxuICogaW4gQVdTIFNlY3JldHMgTWFuYWdlciBmb3IgdXNlIGJ5IHRoZSBzeW50aC9kZXBsb3kgLS1zdG9yZS10b2tlbnMgZmxhZy5cbiAqXG4gKiBSZXF1aXJlcyBQTEFURk9STV9UT0tFTiB0byBiZSBzZXQsIG9yIHVzZSAtLWVtYWlsLy0tcGFzc3dvcmQgdG8gbG9naW4gaW5saW5lLlxuICpcbiAqIEJ5IGRlZmF1bHQgaXQgT05MWSB3cml0ZXMgdGhlIHNlY3JldC4gUGFzcyAtLXNjaGVkdWxlIHRvIGFsc28gZGVwbG95IHRoZSBkYWlseVxuICogdG9rZW4tcmVuZXdhbCBzdGFjayAoYSBMYW1iZGEgdGhhdCBhdXRvLXJlbmV3cyB0aGlzIHRva2VuIGJlZm9yZSBpdCBleHBpcmVzKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgYmFzaFxuICogcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbiAtLXJlZ2lvbiB1cy1lYXN0LTFcbiAqIHBpcGVsaW5lLW1hbmFnZXIgc3RvcmUtdG9rZW4gLS1kYXlzIDkwIC0tcmVnaW9uIHVzLWVhc3QtMVxuICogcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbiAtLXNjaGVkdWxlIC0tcmVnaW9uIHVzLWVhc3QtMSAgICAgICAgICAjICsgZGFpbHkgYXV0by1yZW5ld2FsXG4gKiBwaXBlbGluZS1tYW5hZ2VyIHN0b3JlLXRva2VuIC0tc2NoZWR1bGUgLS1jcm9uICcwIDMgKiAqIConICAgICAgICAgICMgY3VzdG9tIHJlbmV3YWwgdGltZVxuICogcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbiAtLWRheXMgNyAtLXNlY3JldC1uYW1lIG15LWN1c3RvbS1zZWNyZXQgLS1uby12ZXJpZnktc3NsXG4gKiBwaXBlbGluZS1tYW5hZ2VyIHN0b3JlLXRva2VuIC0tZHJ5LXJ1blxuICogcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbiAtZSBhZG1pbiAtcCAnKioqJyAtLXJlZ2lvbiB1cy1lYXN0LTFcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RvcmVUb2tlbihwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZCgnc3RvcmUtdG9rZW4nKVxuICAgIC5kZXNjcmlwdGlvbignR2VuZXJhdGUgSldUIHRva2VuIGFuZCBzdG9yZSBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyIGZvciBDREsgZGVwbG95bWVudHMnKVxuICAgIC5vcHRpb24oJy1lLCAtLWVtYWlsIDxlbWFpbD4nLCAnTG9naW4gZW1haWwgKHNraXBzIFBMQVRGT1JNX1RPS0VOIHJlcXVpcmVtZW50KScpXG4gICAgLm9wdGlvbignLXAsIC0tcGFzc3dvcmQgPHBhc3N3b3JkPicsICdMb2dpbiBwYXNzd29yZCAodXNlZCB3aXRoIC0tZW1haWwpJylcbiAgICAub3B0aW9uKCctLWRheXMgPGRheXM+JywgJ1Rva2VuIGxpZmV0aW1lIGluIGRheXMnLCAnMzAnKVxuICAgIC5vcHRpb24oJy0tZHJ5LXJ1bicsICdTaG93IHdoYXQgd291bGQgYmUgc3RvcmVkIHdpdGhvdXQgd3JpdGluZyB0byBTZWNyZXRzIE1hbmFnZXInLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLXNlY3JldC1uYW1lIDxuYW1lPicsICdTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IG5hbWUgKGRlZmF1bHQ6IGRlcml2ZWQgZnJvbSB0b2tlbiBvcmcpJylcbiAgICAub3B0aW9uKCctLXJlZ2lvbiA8cmVnaW9uPicsICdBV1MgcmVnaW9uIChkZWZhdWx0cyB0byBBV1NfUkVHSU9OIGVudiknKVxuICAgIC5vcHRpb24oJy0tcHJvZmlsZSA8cHJvZmlsZT4nLCAnQVdTIENMSSBwcm9maWxlJywgJ2RlZmF1bHQnKVxuICAgIC5vcHRpb24oJy0tc2NoZWR1bGUnLCAnQWxzbyBkZXBsb3kgdGhlIGRhaWx5IHRva2VuLXJlbmV3YWwgc3RhY2sgdGhhdCBhdXRvLXJlbmV3cyB0aGlzIHRva2VuIChvZmYgYnkgZGVmYXVsdCknLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLWNyb24gPGV4cHI+JywgJ1JlbmV3YWwgc2NoZWR1bGUgYXMgYSA1LWZpZWxkIGNyb24sIHVzZWQgd2l0aCAtLXNjaGVkdWxlIChkZWZhdWx0OiBUT0tFTl9SRU5FV19TQ0hFRFVMRSBlbnYgb3IgXCIwIDAgKiAqICpcIjsgbWluIGV2ZXJ5IDE1IG1pbnV0ZXMpJylcbiAgICAub3B0aW9uKCctLWpzb24nLCAnT3V0cHV0IHJlc3VsdCBhcyBKU09OJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS12ZXJpZnktc3NsJywgJ0VuYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLW5vLXZlcmlmeS1zc2wnLCAnRGlzYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignU3RvcmUgVG9rZW4nKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgcHJpbnRTc2xXYXJuaW5nKG9wdGlvbnMudmVyaWZ5U3NsKTtcblxuICAgICAgICBjb25zdCByZWdpb24gPSBvcHRpb25zLnJlZ2lvbiB8fCBwcm9jZXNzLmVudi5BV1NfUkVHSU9OIHx8IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTiB8fCAndXMtZWFzdC0xJztcblxuICAgICAgICBjb25zdCBkYXlzID0gdmFsaWRhdGVOdW1iZXIob3B0aW9ucy5kYXlzLCAnZGF5cycsIDEsIDM2NSk7XG4gICAgICAgIGNvbnN0IGV4cGlyZXNJblNlY29uZHMgPSBkYXlzICogMjQgKiA2MCAqIDYwO1xuXG4gICAgICAgIC8vIFN0ZXAgMDogbG9nIGluIGZpcnN0IHdoZW4gY3JlZHMgYXJlIGF2YWlsYWJsZSBhbmQgbm8gUExBVEZPUk1fVE9LRU4gaXMgc2V0XG4gICAgICAgIC8vIChzaGFyZWQgd2l0aCBzZXR1cC1ldmVudHMpLiBDcmVkcyBjb21lIGZyb20gLS1lbWFpbC8tLXBhc3N3b3JkIE9SIHRoZSBlbnZcbiAgICAgICAgLy8gdmFycyBQTEFURk9STV9JREVOVElGSUVSL1BMQVRGT1JNX1BBU1NXT1JEIOKAlCB0aGUgZW52IHBhdGggbGV0cyBjYWxsZXJzIGxpa2VcbiAgICAgICAgLy8gYHByb3Zpc2lvbiAtLXdpdGgtZXZlbnRzYCBwYXNzIHRoZW0gd2l0aG91dCBwdXR0aW5nIHRoZSBwYXNzd29yZCBvbiB0aGVcbiAgICAgICAgLy8gY29tbWFuZCBsaW5lICh3aGVyZSBpdCB3b3VsZCBzaG93IGluIHBsYW5zL2xvZ3MpLlxuICAgICAgICBhd2FpdCBlbnN1cmVQbGF0Zm9ybVRva2VuKG9wdGlvbnMpO1xuXG4gICAgICAgIC8vIFN0ZXAgMTogQXV0aGVudGljYXRlIGFuZCBnZW5lcmF0ZSBsb25nLWxpdmVkIHRva2VuXG4gICAgICAgIHByaW50U2VjdGlvbignR2VuZXJhdGUgVG9rZW4nKTtcblxuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMob3B0aW9ucyk7XG5cbiAgICAgICAgLy8gUmVzb2x2ZSBzZWNyZXQgbmFtZSBmcm9tIHRva2VuJ3Mgb3JnYW5pemF0aW9uSWQgKHVubGVzcyAtLXNlY3JldC1uYW1lIHdhcyBleHBsaWNpdGx5IHNldClcbiAgICAgICAgY29uc3Qgc2VjcmV0TmFtZSA9IG9wdGlvbnMuc2VjcmV0TmFtZSB8fCByZXNvbHZlU2VjcmV0TmFtZShwcm9jZXNzLmVudi5QTEFURk9STV9UT0tFTiEpO1xuXG4gICAgICAgIGF1ZGl0TG9nKCdzdG9yZS10b2tlbicsIHsgZXhlY3V0aW9uSWQsIHNlY3JldE5hbWUsIGRheXMsIGRyeVJ1bjogb3B0aW9ucy5kcnlSdW4gfSk7XG5cbiAgICAgICAgcHJpbnRJbmZvKCdQYXJhbWV0ZXJzJywge1xuICAgICAgICAgIHNlY3JldE5hbWUsXG4gICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgIGRheXMsXG4gICAgICAgICAgZXhwaXJlc0luOiBgJHtleHBpcmVzSW5TZWNvbmRzfXNgLFxuICAgICAgICAgIGRyeVJ1bjogb3B0aW9ucy5kcnlSdW4sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHByaW50SW5mbygnUmVxdWVzdGluZyB0b2tlbicsIHsgZXhwaXJlc0luOiBgJHtleHBpcmVzSW5TZWNvbmRzfXMgKCR7ZGF5c30gZGF5cylgIH0pO1xuXG4gICAgICAgIGNvbnN0IHRva2VuUmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgICAgICAgJy9hcGkvdXNlci9nZW5lcmF0ZS10b2tlbicsXG4gICAgICAgICAgeyBleHBpcmVzSW46IGV4cGlyZXNJblNlY29uZHMgfSxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB0b2tlbkRhdGEgPSAodG9rZW5SZXNwb25zZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik/LmRhdGEgPz8gdG9rZW5SZXNwb25zZTtcbiAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSAodG9rZW5EYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8uYWNjZXNzVG9rZW4gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCByZWZyZXNoVG9rZW4gPSAodG9rZW5EYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8ucmVmcmVzaFRva2VuIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgYWN0dWFsRXhwaXJlc0luID0gKCh0b2tlbkRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pPy5leHBpcmVzSW4gYXMgbnVtYmVyKSA/PyBleHBpcmVzSW5TZWNvbmRzO1xuXG4gICAgICAgIGlmICghYWNjZXNzVG9rZW4pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Rva2VuIGdlbmVyYXRpb24gZmFpbGVkIOKAlCBubyBhY2Nlc3MgdG9rZW4gaW4gcmVzcG9uc2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByaW50U3VjY2VzcyhgVG9rZW4gZ2VuZXJhdGVkIChleHBpcmVzIGluICR7YWN0dWFsRXhwaXJlc0lufXMpYCk7XG5cbiAgICAgICAgY29uc3QgZXhwaXJlc0F0ID0gbmV3IERhdGUoRGF0ZS5ub3coKSArIGFjdHVhbEV4cGlyZXNJbiAqIDEwMDApLnRvSVNPU3RyaW5nKCk7XG5cbiAgICAgICAgLy8gU2NoZW1hOiB7IHVzZXJuYW1lOiBvcmdJZCwgcGFzc3dvcmQ6IEpXVCwgLi4ubWV0YWRhdGEgfVxuICAgICAgICAvLyAtIHVzZXJuYW1lL3Bhc3N3b3JkIGZpZWxkcyBzYXRpc2Z5IENvZGVCdWlsZCdzIGBzZWNyZXRzTWFuYWdlckNyZWRlbnRpYWxzYFxuICAgICAgICAvLyAgIChIVFRQIEJhc2ljLCBzZW50IHRvIHBpcGVsaW5lLWltYWdlLXJlZ2lzdHJ5J3MgL3Rva2VuIGVuZHBvaW50KVxuICAgICAgICAvLyAtIFRoZSBzYW1lIEpXVCBpcyBjb25zdW1lZCBieSB0aGUgcGx1Z2luLWxvb2t1cCBMYW1iZGEgYnkgcmVhZGluZ1xuICAgICAgICAvLyAgIHRoZSBgcGFzc3dvcmRgIGZpZWxkXG4gICAgICAgIC8vIC0gT25lIFNlY3JldCBwZXIgY3VzdG9tZXIgYWNjb3VudCByZXBsYWNlcyB0aGUgcHJldmlvdXMgdHdvLXNlY3JldCBtb2RlbFxuICAgICAgICAvLyBEZWNvZGUgSldUIGZvciBvcmdJZCDigJQgaXQncyBhIHN0YWJsZSBpZGVudGlmaWVyIGZvciB0aGUgdXNlcm5hbWUgZmllbGQ7XG4gICAgICAgIC8vIHRoZSBhY3R1YWwgYXV0aCB1c2VzIHRoZSBwYXNzd29yZCAoSldUKSB3aGljaCB0aGUgdG9rZW4gc2VydmljZSB2ZXJpZmllcy5cbiAgICAgICAgLy8gYHx8YCAobm90IGA/P2ApOiBhbiBFTVBUWS1zdHJpbmcgb3JnYW5pemF0aW9uSWQgbXVzdCBhbHNvIGZhbGwgYmFjay4gQVxuICAgICAgICAvLyBzeXNhZG1pbi9zeXN0ZW0gdG9rZW4gb2Z0ZW4gY2FycmllcyBvcmdhbml6YXRpb25JZD1cIlwiLCBhbmQgQ29kZUJ1aWxkXG4gICAgICAgIC8vIHJlamVjdHMgYSByZWdpc3RyeSBjcmVkZW50aWFsIHdob3NlIGB1c2VybmFtZWAgZmllbGQgaXMgZW1wdHkgd2l0aFxuICAgICAgICAvLyBcIkF1dGhvcml6YXRpb25EYXRhIGlzIG1hbGZvcm1lZCwgZW1wdHkgZmllbGRcIiDigJQgc28gdXNlcm5hbWUgbXVzdCBhbHdheXNcbiAgICAgICAgLy8gYmUgYSBub24tZW1wdHkgdmFsdWUuXG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBkZWNvZGVUb2tlblBheWxvYWQoYWNjZXNzVG9rZW4pO1xuICAgICAgICBjb25zdCBvcmdJZCA9IHBheWxvYWQ/Lm9yZ2FuaXphdGlvbklkPy50cmltKCkgfHwgJ3Vua25vd24tb3JnJztcblxuICAgICAgICBjb25zdCBzZWNyZXRWYWx1ZSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICB1c2VybmFtZTogb3JnSWQsXG4gICAgICAgICAgcGFzc3dvcmQ6IGFjY2Vzc1Rva2VuLFxuICAgICAgICAgIC4uLihyZWZyZXNoVG9rZW4gJiYgeyByZWZyZXNoVG9rZW4gfSksXG4gICAgICAgICAgcGxhdGZvcm1Vcmw6IGNsaWVudC5nZXRCYXNlVXJsKCksXG4gICAgICAgICAgZXhwaXJlc0luOiBhY3R1YWxFeHBpcmVzSW4sXG4gICAgICAgICAgZXhwaXJlc0F0LFxuICAgICAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBEcnktcnVuOiBzaG93IHdoYXQgd291bGQgYmUgc3RvcmVkXG4gICAgICAgIGlmIChvcHRpb25zLmRyeVJ1bikge1xuICAgICAgICAgIGlmIChvcHRpb25zLmpzb24pIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICAgICAgZHJ5UnVuOiB0cnVlLFxuICAgICAgICAgICAgICBzZWNyZXROYW1lLFxuICAgICAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgICAgIGV4cGlyZXNJbkRheXM6IGRheXMsXG4gICAgICAgICAgICAgIGV4cGlyZXNBdCxcbiAgICAgICAgICAgICAgdG9rZW5MZW5ndGg6IGFjY2Vzc1Rva2VuLmxlbmd0aCxcbiAgICAgICAgICAgICAgaGFzUmVmcmVzaFRva2VuOiAhIXJlZnJlc2hUb2tlbixcbiAgICAgICAgICAgIH0sIG51bGwsIDIpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgICAgcHJpbnRTZWN0aW9uKCdEcnkgUnVuIOKAlCBObyBDaGFuZ2VzIE1hZGUnKTtcbiAgICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgICAnU2VjcmV0IE5hbWUnOiBzZWNyZXROYW1lLFxuICAgICAgICAgICAgICAnUmVnaW9uJzogcmVnaW9uLFxuICAgICAgICAgICAgICAnRXhwaXJlcyBJbic6IGAke2RheXN9IGRheXNgLFxuICAgICAgICAgICAgICAnUmVuZXcgQnknOiBleHBpcmVzQXQsXG4gICAgICAgICAgICAgICdUb2tlbiBMZW5ndGgnOiBgJHthY2Nlc3NUb2tlbi5sZW5ndGh9IGNoYXJzYCxcbiAgICAgICAgICAgICAgJ0hhcyBSZWZyZXNoIFRva2VuJzogcmVmcmVzaFRva2VuID8gJ1llcycgOiAnTm8nLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBwcmludFN1Y2Nlc3MoJ0RyeSBydW4gY29tcGxldGUg4oCUIG5vIHNlY3JldCB3YXMgY3JlYXRlZCBvciB1cGRhdGVkJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0ZXAgMjogU3RvcmUgdG9rZW4gaW4gU2VjcmV0cyBNYW5hZ2VyXG4gICAgICAgIHByaW50U2VjdGlvbignU3RvcmUgVG9rZW4nKTtcblxuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGBQbGF0Zm9ybSBKV1QgdG9rZW4gKHJlbmV3IGJ5ICR7ZXhwaXJlc0F0fSlgO1xuICAgICAgICBhd2FpdCB1cHNlcnRTZWNyZXQoc2VjcmV0TmFtZSwgc2VjcmV0VmFsdWUsIGRlc2NyaXB0aW9uLCB7IHJlZ2lvbiwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuXG4gICAgICAgIGNvbnN0IGFybiA9IGF3YWl0IGdldFNlY3JldEFybihzZWNyZXROYW1lLCB7IHJlZ2lvbiwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuXG4gICAgICAgIC8vIE9wdGlvbmFsbHkgaW5zdGFsbCB0aGUgb25jZS1hLWRheSByZW5ld2FsIHN0YWNrIHNvIHRoaXMgdG9rZW4gbmV2ZXIgbGFwc2VzLlxuICAgICAgICAvLyBPZmYgYnkgZGVmYXVsdCDigJQgb3B0IGluIHdpdGggLS1zY2hlZHVsZSAoZS5nLiBmb3IgdGhlIEFXUyBldmVudC1pbmdlc3Rpb25cbiAgICAgICAgLy8gYnVuZGxlIHdob3NlIExhbWJkYSBuZWVkcyBhIG5vbi1leHBpcmluZyB0b2tlbikuXG4gICAgICAgIGxldCBzY2hlZHVsZUV4cHJlc3Npb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKG9wdGlvbnMuc2NoZWR1bGUpIHtcbiAgICAgICAgICBjb25zdCBmaXZlRmllbGRDcm9uID0gb3B0aW9ucy5jcm9uIHx8IHByb2Nlc3MuZW52LlRPS0VOX1JFTkVXX1NDSEVEVUxFIHx8IERFRkFVTFRfUkVORVdfQ1JPTjtcbiAgICAgICAgICBzY2hlZHVsZUV4cHJlc3Npb24gPSBhd2FpdCBkZXBsb3lSZW5ld1NjaGVkdWxlKHtcbiAgICAgICAgICAgIHBsYXRmb3JtVXJsOiBjbGllbnQuZ2V0QmFzZVVybCgpLFxuICAgICAgICAgICAgc2VjcmV0TmFtZSxcbiAgICAgICAgICAgIGRheXMsXG4gICAgICAgICAgICBmaXZlRmllbGRDcm9uLFxuICAgICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgICAgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuanNvbikge1xuICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgICBzZWNyZXROYW1lLFxuICAgICAgICAgICAgc2VjcmV0QXJuOiBhcm4sXG4gICAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgICBleHBpcmVzSW5EYXlzOiBkYXlzLFxuICAgICAgICAgICAgZXhwaXJlc0F0LFxuICAgICAgICAgICAgc2NoZWR1bGU6IHNjaGVkdWxlRXhwcmVzc2lvbiA/PyBudWxsLFxuICAgICAgICAgIH0sIG51bGwsIDIpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRTZWN0aW9uKCdUb2tlbiBTdG9yZWQnKTtcblxuICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgJ1NlY3JldCBOYW1lJzogc2VjcmV0TmFtZSxcbiAgICAgICAgICAgICdTZWNyZXQgQVJOJzogYXJuLFxuICAgICAgICAgICAgJ1JlZ2lvbic6IHJlZ2lvbixcbiAgICAgICAgICAgICdFeHBpcmVzIEluJzogYCR7ZGF5c30gZGF5c2AsXG4gICAgICAgICAgICAnUmVuZXcgQnknOiBleHBpcmVzQXQsXG4gICAgICAgICAgICAnQXV0by1SZW5ldyc6IHNjaGVkdWxlRXhwcmVzc2lvbiA/IGDinJMgJHtzY2hlZHVsZUV4cHJlc3Npb259YCA6ICdvZmYgKHBhc3MgLS1zY2hlZHVsZSB0byBlbmFibGUpJyxcbiAgICAgICAgICAgICdTdGF0dXMnOiAn4pyTIFN0b3JlZCcsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRTdWNjZXNzKCdUb2tlbiBzdG9yZWQuIFRvIHVzZSB3aXRoIHN5bnRoL2RlcGxveTonKTtcbiAgICAgICAgICBwcmludEluZm8oYCAgZXhwb3J0IFBMQVRGT1JNX1NFQ1JFVF9OQU1FPSR7c2VjcmV0TmFtZX1gKTtcbiAgICAgICAgICBwcmludEluZm8oJyAgcGlwZWxpbmUtbWFuYWdlciBzeW50aCAtLWlkIDxwaXBlbGluZS1pZD4gLS1zdG9yZS10b2tlbnMnKTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgaWYgKHNjaGVkdWxlRXhwcmVzc2lvbikge1xuICAgICAgICAgICAgcHJpbnRJbmZvKGBBdXRvLXJlbmV3YWwgaXMgYWN0aXZlICgke3NjaGVkdWxlRXhwcmVzc2lvbn0pOyB0aGUgc2VjcmV0IHJlZnJlc2hlcyBiZWZvcmUgJHtleHBpcmVzQXR9LmApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcmludEluZm8oYFJlbmV3IGJlZm9yZSAke2V4cGlyZXNBdH0gd2l0aDogcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbiAtLWRheXMgJHtkYXlzfWApO1xuICAgICAgICAgICAgcHJpbnRJbmZvKCcgIChvciBwYXNzIC0tc2NoZWR1bGUgdG8gaW5zdGFsbCBhIGRhaWx5IGF1dG8tcmVuZXdhbCBzdGFjayknKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgY29tbWFuZDogJ3N0b3JlLXRva2VuJyxcbiAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgc2VjcmV0TmFtZTogb3B0aW9ucy5zZWNyZXROYW1lIHx8ICcoZGVyaXZlZCBmcm9tIHRva2VuKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"token-renew-handler.d.ts","sourceRoot":"","sources":["../../src/lambda/token-renew-handler.ts"],"names":[],"mappings":"AAwCA,eAAO,MAAM,OAAO,QAAa,OAAO,CAAC,IAAI,CA4C5C,CAAC"}
1
+ {"version":3,"file":"token-renew-handler.d.ts","sourceRoot":"","sources":["../../src/lambda/token-renew-handler.ts"],"names":[],"mappings":"AAwCA,eAAO,MAAM,OAAO,QAAa,OAAO,CAAC,IAAI,CA6C5C,CAAC"}
@@ -2,9 +2,9 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  /**
4
4
  * Lambda handler that re-mints the platform JWT in Secrets Manager so it never
5
- * lapses. Deployed + scheduled by `pipeline-manager store-token` (default once a
6
- * day). Rather than re-implementing the token flow, it is a thin orchestrator
7
- * that reuses the tested CLI — each run:
5
+ * lapses. Deployed + scheduled (once a day) by `pipeline-manager store-token
6
+ * --schedule`. Rather than re-implementing the token flow, it is a thin
7
+ * orchestrator that reuses the tested CLI — each run:
8
8
  *
9
9
  * 1. Point the `@pipeline-builder` npm scope at public npm.
10
10
  * 2. Download `@pipeline-builder/pipeline-manager` from npm into /tmp.
@@ -13,8 +13,8 @@
13
13
  * via /api/user/generate-token and writes it back to the same secret.
14
14
  *
15
15
  * `/tmp` is the only writable path in Lambda, so npm's HOME/cache/prefix all live
16
- * there. `--no-schedule` is passed so store-token does NOT redeploy this stack
17
- * (which would recurse).
16
+ * there. store-token does NOT deploy the renewal stack by default (no --schedule),
17
+ * so the renewal run never redeploys/recurses into its own stack.
18
18
  *
19
19
  * Env: PLATFORM_SECRET_NAME, PLATFORM_BASE_URL, RENEW_DAYS (default 30),
20
20
  * PIPELINE_MANAGER_VERSION (default "latest"), PLATFORM_VERIFY_SSL ("false"
@@ -60,9 +60,10 @@ export const handler = async () => {
60
60
  const jwt = JSON.parse(current.SecretString).password;
61
61
  if (!jwt)
62
62
  throw new Error(`Secret "${secretName}" missing password (JWT)`);
63
- // 4. Run store-token. --no-schedule: do NOT redeploy this stack (avoids
64
- // recursion). It writes the renewed secret via the Lambda role's creds.
65
- const args = ['store-token', '--no-schedule', '--secret-name', secretName, '--region', region, '--days', days];
63
+ // 4. Run store-token (without --schedule, the default) so it ONLY re-mints and
64
+ // writes the secret it must not redeploy this stack (would recurse). The
65
+ // write uses the Lambda role's creds.
66
+ const args = ['store-token', '--secret-name', secretName, '--region', region, '--days', days];
66
67
  if (process.env.PLATFORM_VERIFY_SSL === 'false')
67
68
  args.push('--no-verify-ssl');
68
69
  execFileSync('node', [CLI, ...args], {
@@ -72,4 +73,4 @@ export const handler = async () => {
72
73
  // eslint-disable-next-line no-console
73
74
  console.log(JSON.stringify({ level: 'INFO', msg: 'platform token renewed', secretName }));
74
75
  };
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tcmVuZXctaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYW1iZGEvdG9rZW4tcmVuZXctaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTlGLE1BQU0sVUFBVSxHQUFHLG9DQUFvQyxDQUFDO0FBQ3hELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQztBQUNuQixNQUFNLFNBQVMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQzlCLE1BQU0sU0FBUyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUM7QUFDaEMsTUFBTSxLQUFLLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQztBQUM5QixNQUFNLEdBQUcsR0FBRyxHQUFHLFNBQVMsaUJBQWlCLFVBQVUsY0FBYyxDQUFDO0FBRWxFLFNBQVMsUUFBUSxDQUFDLElBQVk7SUFDNUIsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixJQUFJLENBQUMsQ0FBQztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLG1DQUFtQyxDQUFDLENBQUM7SUFDcEUsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEtBQUssSUFBbUIsRUFBRTtJQUMvQyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUNwRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsbUJBQW1C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Q0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogTGFtYmRhIGhhbmRsZXIgdGhhdCByZS1taW50cyB0aGUgcGxhdGZvcm0gSldUIGluIFNlY3JldHMgTWFuYWdlciBzbyBpdCBuZXZlclxuICogbGFwc2VzLiBEZXBsb3llZCArIHNjaGVkdWxlZCBieSBgcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbmAgKGRlZmF1bHQgb25jZSBhXG4gKiBkYXkpLiBSYXRoZXIgdGhhbiByZS1pbXBsZW1lbnRpbmcgdGhlIHRva2VuIGZsb3csIGl0IGlzIGEgdGhpbiBvcmNoZXN0cmF0b3JcbiAqIHRoYXQgcmV1c2VzIHRoZSB0ZXN0ZWQgQ0xJIOKAlCBlYWNoIHJ1bjpcbiAqXG4gKiAgIDEuIFBvaW50IHRoZSBgQHBpcGVsaW5lLWJ1aWxkZXJgIG5wbSBzY29wZSBhdCBwdWJsaWMgbnBtLlxuICogICAyLiBEb3dubG9hZCBgQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtbWFuYWdlcmAgZnJvbSBucG0gaW50byAvdG1wLlxuICogICAzLiBSZWFkIHRoZSBjdXJyZW50IHBsYXRmb3JtIEpXVCBmcm9tIHRoZSBzZWNyZXQuXG4gKiAgIDQuIFJ1biBgcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbmAsIHdoaWNoIG1pbnRzIGEgZnJlc2ggbG9uZy1saXZlZCB0b2tlblxuICogICAgICB2aWEgL2FwaS91c2VyL2dlbmVyYXRlLXRva2VuIGFuZCB3cml0ZXMgaXQgYmFjayB0byB0aGUgc2FtZSBzZWNyZXQuXG4gKlxuICogYC90bXBgIGlzIHRoZSBvbmx5IHdyaXRhYmxlIHBhdGggaW4gTGFtYmRhLCBzbyBucG0ncyBIT01FL2NhY2hlL3ByZWZpeCBhbGwgbGl2ZVxuICogdGhlcmUuIGAtLW5vLXNjaGVkdWxlYCBpcyBwYXNzZWQgc28gc3RvcmUtdG9rZW4gZG9lcyBOT1QgcmVkZXBsb3kgdGhpcyBzdGFja1xuICogKHdoaWNoIHdvdWxkIHJlY3Vyc2UpLlxuICpcbiAqIEVudjogUExBVEZPUk1fU0VDUkVUX05BTUUsIFBMQVRGT1JNX0JBU0VfVVJMLCBSRU5FV19EQVlTIChkZWZhdWx0IDMwKSxcbiAqICAgICAgUElQRUxJTkVfTUFOQUdFUl9WRVJTSU9OIChkZWZhdWx0IFwibGF0ZXN0XCIpLCBQTEFURk9STV9WRVJJRllfU1NMIChcImZhbHNlXCJcbiAqICAgICAgdG8gZGlzYWJsZSBUTFMgdmVyaWZpY2F0aW9uKS5cbiAqL1xuaW1wb3J0IHsgZXhlY0ZpbGVTeW5jIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IG1rZGlyU3luYywgd3JpdGVGaWxlU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgU2VjcmV0c01hbmFnZXJDbGllbnQsIEdldFNlY3JldFZhbHVlQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zZWNyZXRzLW1hbmFnZXInO1xuXG5jb25zdCBQTV9QQUNLQUdFID0gJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLW1hbmFnZXInO1xuY29uc3QgVE1QID0gJy90bXAnO1xuY29uc3QgUE1fUFJFRklYID0gYCR7VE1QfS9wbWA7XG5jb25zdCBOUE1fQ0FDSEUgPSBgJHtUTVB9Ly5ucG1gO1xuY29uc3QgTlBNUkMgPSBgJHtUTVB9Ly5ucG1yY2A7XG5jb25zdCBDTEkgPSBgJHtQTV9QUkVGSVh9L25vZGVfbW9kdWxlcy8ke1BNX1BBQ0tBR0V9L2Rpc3QvY2xpLmpzYDtcblxuZnVuY3Rpb24gcmVxdWlyZWQobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgdiA9IHByb2Nlc3MuZW52W25hbWVdO1xuICBpZiAoIXYpIHRocm93IG5ldyBFcnJvcihgJHtuYW1lfSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyByZXF1aXJlZGApO1xuICByZXR1cm4gdjtcbn1cblxuZXhwb3J0IGNvbnN0IGhhbmRsZXIgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHNlY3JldE5hbWUgPSByZXF1aXJlZCgnUExBVEZPUk1fU0VDUkVUX05BTUUnKTtcbiAgY29uc3QgcGxhdGZvcm1VcmwgPSByZXF1aXJlZCgnUExBVEZPUk1fQkFTRV9VUkwnKS5yZXBsYWNlKC9cXC8kLywgJycpO1xuICBjb25zdCBkYXlzID0gcHJvY2Vzcy5lbnYuUkVORVdfREFZUyB8fCAnMzAnO1xuICBjb25zdCB2ZXJzaW9uID0gcHJvY2Vzcy5lbnYuUElQRUxJTkVfTUFOQUdFUl9WRVJTSU9OIHx8ICdsYXRlc3QnO1xuICBjb25zdCByZWdpb24gPSBwcm9jZXNzLmVudi5BV1NfUkVHSU9OIHx8ICd1cy1lYXN0LTEnO1xuXG4gIC8vIG5wbSBpbiBMYW1iZGEgY2FuIG9ubHkgd3JpdGUgdW5kZXIgL3RtcDsgSE9NRS9jYWNoZS91c2VyY29uZmlnIHBvaW50IHRoZXJlLlxuICBjb25zdCBucG1FbnYgPSB7IC4uLnByb2Nlc3MuZW52LCBIT01FOiBUTVAsIG5wbV9jb25maWdfY2FjaGU6IE5QTV9DQUNIRSB9O1xuXG4gIC8vIDEuIFNjb3BlIGNvbmZpZzogcmVzb2x2ZSBAcGlwZWxpbmUtYnVpbGRlciBmcm9tIHB1YmxpYyBucG0gcmVnYXJkbGVzcyBvZiBhbnlcbiAgLy8gICAgaW5oZXJpdGVkIHJlZ2lzdHJ5LiBXcml0dGVuIGFzIGEgdXNlcmNvbmZpZyBmaWxlIChlbnYgbWFwcGluZyBvZiBzY29wZWRcbiAgLy8gICAga2V5cyBpcyB1bnJlbGlhYmxlKS5cbiAgd3JpdGVGaWxlU3luYyhOUE1SQywgJ0BwaXBlbGluZS1idWlsZGVyOnJlZ2lzdHJ5PWh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL1xcbicpO1xuXG4gIC8vIDIuIERvd25sb2FkIHBpcGVsaW5lLW1hbmFnZXIgaW50byAvdG1wLlxuICBta2RpclN5bmMoUE1fUFJFRklYLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoeyBsZXZlbDogJ0lORk8nLCBtc2c6ICdpbnN0YWxsaW5nIHBpcGVsaW5lLW1hbmFnZXInLCBwYWNrYWdlOiBgJHtQTV9QQUNLQUdFfUAke3ZlcnNpb259YCB9KSk7XG4gIGV4ZWNGaWxlU3luYyhcbiAgICAnbnBtJyxcbiAgICBbJ2luc3RhbGwnLCAnLS1wcmVmaXgnLCBQTV9QUkVGSVgsICctLW5vLWF1ZGl0JywgJy0tbm8tZnVuZCcsICctLXVzZXJjb25maWcnLCBOUE1SQywgYCR7UE1fUEFDS0FHRX1AJHt2ZXJzaW9ufWBdLFxuICAgIHsgZW52OiBucG1FbnYsIHN0ZGlvOiAnaW5oZXJpdCcgfSxcbiAgKTtcblxuICAvLyAzLiBSZWFkIHRoZSBjdXJyZW50IHBsYXRmb3JtIEpXVCDigJQgaXQgYXV0aGVudGljYXRlcyB0aGUgcmVuZXdhbCByZXF1ZXN0LlxuICBjb25zdCBzbSA9IG5ldyBTZWNyZXRzTWFuYWdlckNsaWVudCh7IHJlZ2lvbiB9KTtcbiAgY29uc3QgY3VycmVudCA9IGF3YWl0IHNtLnNlbmQobmV3IEdldFNlY3JldFZhbHVlQ29tbWFuZCh7IFNlY3JldElkOiBzZWNyZXROYW1lIH0pKTtcbiAgaWYgKCFjdXJyZW50LlNlY3JldFN0cmluZykgdGhyb3cgbmV3IEVycm9yKGBTZWNyZXQgXCIke3NlY3JldE5hbWV9XCIgaXMgZW1wdHlgKTtcbiAgY29uc3Qgand0ID0gKEpTT04ucGFyc2UoY3VycmVudC5TZWNyZXRTdHJpbmcpIGFzIHsgcGFzc3dvcmQ/OiBzdHJpbmcgfSkucGFzc3dvcmQ7XG4gIGlmICghand0KSB0aHJvdyBuZXcgRXJyb3IoYFNlY3JldCBcIiR7c2VjcmV0TmFtZX1cIiBtaXNzaW5nIHBhc3N3b3JkIChKV1QpYCk7XG5cbiAgLy8gNC4gUnVuIHN0b3JlLXRva2VuLiAtLW5vLXNjaGVkdWxlOiBkbyBOT1QgcmVkZXBsb3kgdGhpcyBzdGFjayAoYXZvaWRzXG4gIC8vICAgIHJlY3Vyc2lvbikuIEl0IHdyaXRlcyB0aGUgcmVuZXdlZCBzZWNyZXQgdmlhIHRoZSBMYW1iZGEgcm9sZSdzIGNyZWRzLlxuICBjb25zdCBhcmdzID0gWydzdG9yZS10b2tlbicsICctLW5vLXNjaGVkdWxlJywgJy0tc2VjcmV0LW5hbWUnLCBzZWNyZXROYW1lLCAnLS1yZWdpb24nLCByZWdpb24sICctLWRheXMnLCBkYXlzXTtcbiAgaWYgKHByb2Nlc3MuZW52LlBMQVRGT1JNX1ZFUklGWV9TU0wgPT09ICdmYWxzZScpIGFyZ3MucHVzaCgnLS1uby12ZXJpZnktc3NsJyk7XG5cbiAgZXhlY0ZpbGVTeW5jKCdub2RlJywgW0NMSSwgLi4uYXJnc10sIHtcbiAgICBlbnY6IHsgLi4ubnBtRW52LCBQTEFURk9STV9UT0tFTjogand0LCBQTEFURk9STV9CQVNFX1VSTDogcGxhdGZvcm1VcmwgfSxcbiAgICBzdGRpbzogJ2luaGVyaXQnLFxuICB9KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7IGxldmVsOiAnSU5GTycsIG1zZzogJ3BsYXRmb3JtIHRva2VuIHJlbmV3ZWQnLCBzZWNyZXROYW1lIH0pKTtcbn07XG4iXX0=
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tcmVuZXctaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYW1iZGEvdG9rZW4tcmVuZXctaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTlGLE1BQU0sVUFBVSxHQUFHLG9DQUFvQyxDQUFDO0FBQ3hELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQztBQUNuQixNQUFNLFNBQVMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQzlCLE1BQU0sU0FBUyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUM7QUFDaEMsTUFBTSxLQUFLLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQztBQUM5QixNQUFNLEdBQUcsR0FBRyxHQUFHLFNBQVMsaUJBQWlCLFVBQVUsY0FBYyxDQUFDO0FBRWxFLFNBQVMsUUFBUSxDQUFDLElBQVk7SUFDNUIsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixJQUFJLENBQUMsQ0FBQztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLG1DQUFtQyxDQUFDLENBQUM7SUFDcEUsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEtBQUssSUFBbUIsRUFBRTtJQUMvQyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUNwRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsbUJBQW1C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NUYsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogTGFtYmRhIGhhbmRsZXIgdGhhdCByZS1taW50cyB0aGUgcGxhdGZvcm0gSldUIGluIFNlY3JldHMgTWFuYWdlciBzbyBpdCBuZXZlclxuICogbGFwc2VzLiBEZXBsb3llZCArIHNjaGVkdWxlZCAob25jZSBhIGRheSkgYnkgYHBpcGVsaW5lLW1hbmFnZXIgc3RvcmUtdG9rZW5cbiAqIC0tc2NoZWR1bGVgLiBSYXRoZXIgdGhhbiByZS1pbXBsZW1lbnRpbmcgdGhlIHRva2VuIGZsb3csIGl0IGlzIGEgdGhpblxuICogb3JjaGVzdHJhdG9yIHRoYXQgcmV1c2VzIHRoZSB0ZXN0ZWQgQ0xJIOKAlCBlYWNoIHJ1bjpcbiAqXG4gKiAgIDEuIFBvaW50IHRoZSBgQHBpcGVsaW5lLWJ1aWxkZXJgIG5wbSBzY29wZSBhdCBwdWJsaWMgbnBtLlxuICogICAyLiBEb3dubG9hZCBgQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtbWFuYWdlcmAgZnJvbSBucG0gaW50byAvdG1wLlxuICogICAzLiBSZWFkIHRoZSBjdXJyZW50IHBsYXRmb3JtIEpXVCBmcm9tIHRoZSBzZWNyZXQuXG4gKiAgIDQuIFJ1biBgcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbmAsIHdoaWNoIG1pbnRzIGEgZnJlc2ggbG9uZy1saXZlZCB0b2tlblxuICogICAgICB2aWEgL2FwaS91c2VyL2dlbmVyYXRlLXRva2VuIGFuZCB3cml0ZXMgaXQgYmFjayB0byB0aGUgc2FtZSBzZWNyZXQuXG4gKlxuICogYC90bXBgIGlzIHRoZSBvbmx5IHdyaXRhYmxlIHBhdGggaW4gTGFtYmRhLCBzbyBucG0ncyBIT01FL2NhY2hlL3ByZWZpeCBhbGwgbGl2ZVxuICogdGhlcmUuIHN0b3JlLXRva2VuIGRvZXMgTk9UIGRlcGxveSB0aGUgcmVuZXdhbCBzdGFjayBieSBkZWZhdWx0IChubyAtLXNjaGVkdWxlKSxcbiAqIHNvIHRoZSByZW5ld2FsIHJ1biBuZXZlciByZWRlcGxveXMvcmVjdXJzZXMgaW50byBpdHMgb3duIHN0YWNrLlxuICpcbiAqIEVudjogUExBVEZPUk1fU0VDUkVUX05BTUUsIFBMQVRGT1JNX0JBU0VfVVJMLCBSRU5FV19EQVlTIChkZWZhdWx0IDMwKSxcbiAqICAgICAgUElQRUxJTkVfTUFOQUdFUl9WRVJTSU9OIChkZWZhdWx0IFwibGF0ZXN0XCIpLCBQTEFURk9STV9WRVJJRllfU1NMIChcImZhbHNlXCJcbiAqICAgICAgdG8gZGlzYWJsZSBUTFMgdmVyaWZpY2F0aW9uKS5cbiAqL1xuaW1wb3J0IHsgZXhlY0ZpbGVTeW5jIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IG1rZGlyU3luYywgd3JpdGVGaWxlU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgU2VjcmV0c01hbmFnZXJDbGllbnQsIEdldFNlY3JldFZhbHVlQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zZWNyZXRzLW1hbmFnZXInO1xuXG5jb25zdCBQTV9QQUNLQUdFID0gJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLW1hbmFnZXInO1xuY29uc3QgVE1QID0gJy90bXAnO1xuY29uc3QgUE1fUFJFRklYID0gYCR7VE1QfS9wbWA7XG5jb25zdCBOUE1fQ0FDSEUgPSBgJHtUTVB9Ly5ucG1gO1xuY29uc3QgTlBNUkMgPSBgJHtUTVB9Ly5ucG1yY2A7XG5jb25zdCBDTEkgPSBgJHtQTV9QUkVGSVh9L25vZGVfbW9kdWxlcy8ke1BNX1BBQ0tBR0V9L2Rpc3QvY2xpLmpzYDtcblxuZnVuY3Rpb24gcmVxdWlyZWQobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgdiA9IHByb2Nlc3MuZW52W25hbWVdO1xuICBpZiAoIXYpIHRocm93IG5ldyBFcnJvcihgJHtuYW1lfSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyByZXF1aXJlZGApO1xuICByZXR1cm4gdjtcbn1cblxuZXhwb3J0IGNvbnN0IGhhbmRsZXIgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHNlY3JldE5hbWUgPSByZXF1aXJlZCgnUExBVEZPUk1fU0VDUkVUX05BTUUnKTtcbiAgY29uc3QgcGxhdGZvcm1VcmwgPSByZXF1aXJlZCgnUExBVEZPUk1fQkFTRV9VUkwnKS5yZXBsYWNlKC9cXC8kLywgJycpO1xuICBjb25zdCBkYXlzID0gcHJvY2Vzcy5lbnYuUkVORVdfREFZUyB8fCAnMzAnO1xuICBjb25zdCB2ZXJzaW9uID0gcHJvY2Vzcy5lbnYuUElQRUxJTkVfTUFOQUdFUl9WRVJTSU9OIHx8ICdsYXRlc3QnO1xuICBjb25zdCByZWdpb24gPSBwcm9jZXNzLmVudi5BV1NfUkVHSU9OIHx8ICd1cy1lYXN0LTEnO1xuXG4gIC8vIG5wbSBpbiBMYW1iZGEgY2FuIG9ubHkgd3JpdGUgdW5kZXIgL3RtcDsgSE9NRS9jYWNoZS91c2VyY29uZmlnIHBvaW50IHRoZXJlLlxuICBjb25zdCBucG1FbnYgPSB7IC4uLnByb2Nlc3MuZW52LCBIT01FOiBUTVAsIG5wbV9jb25maWdfY2FjaGU6IE5QTV9DQUNIRSB9O1xuXG4gIC8vIDEuIFNjb3BlIGNvbmZpZzogcmVzb2x2ZSBAcGlwZWxpbmUtYnVpbGRlciBmcm9tIHB1YmxpYyBucG0gcmVnYXJkbGVzcyBvZiBhbnlcbiAgLy8gICAgaW5oZXJpdGVkIHJlZ2lzdHJ5LiBXcml0dGVuIGFzIGEgdXNlcmNvbmZpZyBmaWxlIChlbnYgbWFwcGluZyBvZiBzY29wZWRcbiAgLy8gICAga2V5cyBpcyB1bnJlbGlhYmxlKS5cbiAgd3JpdGVGaWxlU3luYyhOUE1SQywgJ0BwaXBlbGluZS1idWlsZGVyOnJlZ2lzdHJ5PWh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL1xcbicpO1xuXG4gIC8vIDIuIERvd25sb2FkIHBpcGVsaW5lLW1hbmFnZXIgaW50byAvdG1wLlxuICBta2RpclN5bmMoUE1fUFJFRklYLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoeyBsZXZlbDogJ0lORk8nLCBtc2c6ICdpbnN0YWxsaW5nIHBpcGVsaW5lLW1hbmFnZXInLCBwYWNrYWdlOiBgJHtQTV9QQUNLQUdFfUAke3ZlcnNpb259YCB9KSk7XG4gIGV4ZWNGaWxlU3luYyhcbiAgICAnbnBtJyxcbiAgICBbJ2luc3RhbGwnLCAnLS1wcmVmaXgnLCBQTV9QUkVGSVgsICctLW5vLWF1ZGl0JywgJy0tbm8tZnVuZCcsICctLXVzZXJjb25maWcnLCBOUE1SQywgYCR7UE1fUEFDS0FHRX1AJHt2ZXJzaW9ufWBdLFxuICAgIHsgZW52OiBucG1FbnYsIHN0ZGlvOiAnaW5oZXJpdCcgfSxcbiAgKTtcblxuICAvLyAzLiBSZWFkIHRoZSBjdXJyZW50IHBsYXRmb3JtIEpXVCDigJQgaXQgYXV0aGVudGljYXRlcyB0aGUgcmVuZXdhbCByZXF1ZXN0LlxuICBjb25zdCBzbSA9IG5ldyBTZWNyZXRzTWFuYWdlckNsaWVudCh7IHJlZ2lvbiB9KTtcbiAgY29uc3QgY3VycmVudCA9IGF3YWl0IHNtLnNlbmQobmV3IEdldFNlY3JldFZhbHVlQ29tbWFuZCh7IFNlY3JldElkOiBzZWNyZXROYW1lIH0pKTtcbiAgaWYgKCFjdXJyZW50LlNlY3JldFN0cmluZykgdGhyb3cgbmV3IEVycm9yKGBTZWNyZXQgXCIke3NlY3JldE5hbWV9XCIgaXMgZW1wdHlgKTtcbiAgY29uc3Qgand0ID0gKEpTT04ucGFyc2UoY3VycmVudC5TZWNyZXRTdHJpbmcpIGFzIHsgcGFzc3dvcmQ/OiBzdHJpbmcgfSkucGFzc3dvcmQ7XG4gIGlmICghand0KSB0aHJvdyBuZXcgRXJyb3IoYFNlY3JldCBcIiR7c2VjcmV0TmFtZX1cIiBtaXNzaW5nIHBhc3N3b3JkIChKV1QpYCk7XG5cbiAgLy8gNC4gUnVuIHN0b3JlLXRva2VuICh3aXRob3V0IC0tc2NoZWR1bGUsIHRoZSBkZWZhdWx0KSBzbyBpdCBPTkxZIHJlLW1pbnRzIGFuZFxuICAvLyAgICB3cml0ZXMgdGhlIHNlY3JldCDigJQgaXQgbXVzdCBub3QgcmVkZXBsb3kgdGhpcyBzdGFjayAod291bGQgcmVjdXJzZSkuIFRoZVxuICAvLyAgICB3cml0ZSB1c2VzIHRoZSBMYW1iZGEgcm9sZSdzIGNyZWRzLlxuICBjb25zdCBhcmdzID0gWydzdG9yZS10b2tlbicsICctLXNlY3JldC1uYW1lJywgc2VjcmV0TmFtZSwgJy0tcmVnaW9uJywgcmVnaW9uLCAnLS1kYXlzJywgZGF5c107XG4gIGlmIChwcm9jZXNzLmVudi5QTEFURk9STV9WRVJJRllfU1NMID09PSAnZmFsc2UnKSBhcmdzLnB1c2goJy0tbm8tdmVyaWZ5LXNzbCcpO1xuXG4gIGV4ZWNGaWxlU3luYygnbm9kZScsIFtDTEksIC4uLmFyZ3NdLCB7XG4gICAgZW52OiB7IC4uLm5wbUVudiwgUExBVEZPUk1fVE9LRU46IGp3dCwgUExBVEZPUk1fQkFTRV9VUkw6IHBsYXRmb3JtVXJsIH0sXG4gICAgc3RkaW86ICdpbmhlcml0JyxcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoeyBsZXZlbDogJ0lORk8nLCBtc2c6ICdwbGF0Zm9ybSB0b2tlbiByZW5ld2VkJywgc2VjcmV0TmFtZSB9KSk7XG59O1xuIl19
package/package.json CHANGED
@@ -97,7 +97,7 @@
97
97
  "access": "public",
98
98
  "registry": "https://registry.npmjs.org/"
99
99
  },
100
- "version": "3.4.127",
100
+ "version": "3.4.128",
101
101
  "bugs": {
102
102
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
103
103
  },