@pipeline-builder/pipeline-manager 3.4.138 → 3.4.140

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,18 +1,3 @@
1
- /**
2
- * Bootstrap the platform repo (sparse, partial clone).
3
- *
4
- * `provision` normally runs from a checkout of this repo, because the deploy
5
- * scripts live under `deploy/`. To provision a fresh machine in one command, the
6
- * operator passes `--repo`: provision git-clones the platform repo first, then
7
- * runs every subsequent step (deploy, init-platform, post-steps) from the clone.
8
- *
9
- * A full clone is wasteful — the repo carries `packages/`, `api/`, `platform/`,
10
- * `frontend/`, … none of which the deploy stack needs. So the clone is a
11
- * **partial** (`--filter=blob:none`) + **cone sparse-checkout** that materializes
12
- * only the deploy folders the selected target + options actually use. Pure
13
- * command assembly here — no git is run; the caller executes the command via the
14
- * same gated `runScript()` as the deploy.
15
- */
16
1
  /** Canonical upstream platform repo, used when `--repo` is given without a value. */
17
2
  export declare const DEFAULT_REPO = "https://github.com/mwashburn160/pipeline-builder.git";
18
3
  /** Default ref to check out when bootstrapping (a branch or tag — see below). */
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/agent/bootstrap.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;GAcG;AAEH,qFAAqF;AACrF,eAAO,MAAM,YAAY,yDAAyD,CAAC;AACnF,iFAAiF;AACjF,eAAO,MAAM,WAAW,SAAS,CAAC;AAClC,kDAAkD;AAClD,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B,wBAAwB;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kFAAkF;IAClF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,uFAAuF;IACvF,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,sFAAsF;AACtF,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EACvE,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,aAAa,CAUf;AAOD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CA0B5D"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/agent/bootstrap.ts"],"names":[],"mappings":"AAqBA,qFAAqF;AACrF,eAAO,MAAM,YAAY,yDAAyD,CAAC;AACnF,iFAAiF;AACjF,eAAO,MAAM,WAAW,SAAS,CAAC;AAClC,kDAAkD;AAClD,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B,wBAAwB;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kFAAkF;IAClF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,uFAAuF;IACvF,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,sFAAsF;AACtF,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EACvE,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,aAAa,CAUf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CA0B5D"}
@@ -15,6 +15,7 @@
15
15
  * command assembly here — no git is run; the caller executes the command via the
16
16
  * same gated `runScript()` as the deploy.
17
17
  */
18
+ import { shellQuote } from '../config/cli.constants.js';
18
19
  /** Canonical upstream platform repo, used when `--repo` is given without a value. */
19
20
  export const DEFAULT_REPO = 'https://github.com/mwashburn160/pipeline-builder.git';
20
21
  /** Default ref to check out when bootstrapping (a branch or tag — see below). */
@@ -32,10 +33,6 @@ export function resolveBootstrap(opts, paths) {
32
33
  full: opts.full ?? false,
33
34
  };
34
35
  }
35
- /** Single-quote a value for safe shell interpolation (handles embedded quotes). */
36
- function shellQuote(value) {
37
- return `'${value.replace(/'/g, "'\\''")}'`;
38
- }
39
36
  /**
40
37
  * Assemble the idempotent bootstrap command. Re-runnable, and **additive** across
41
38
  * runs: if `<workdir>` is already a checkout it `sparse-checkout add`s the current
@@ -66,4 +63,4 @@ export function bootstrapCommand(spec) {
66
63
  // Additive: keep folders from earlier targets/options already in the cone.
67
64
  `git -C ${dir} sparse-checkout add ${paths} && git -C ${dir} fetch --filter=blob:none --depth 1 origin ${ref} && git -C ${dir} checkout ${ref} && ${reset};`, `git clone --filter=blob:none --no-checkout --depth 1 ${repo} ${dir} && git -C ${dir} sparse-checkout set --cone ${paths} && git -C ${dir} checkout ${ref};`);
68
65
  }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FnZW50L2Jvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgscUZBQXFGO0FBQ3JGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxzREFBc0QsQ0FBQztBQUNuRixpRkFBaUY7QUFDakYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQztBQUNsQyxrREFBa0Q7QUFDbEQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDO0FBZWxELHNGQUFzRjtBQUN0RixNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLElBQXVFLEVBQ3ZFLEtBQXdCO0lBRXhCLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBcUIsRUFBRSxRQUFnQixFQUFVLEVBQUUsQ0FDL0QsT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ2pFLE9BQU87UUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDO1FBQ25DLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUM7UUFDaEMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQztRQUM1QyxLQUFLO1FBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSztLQUN6QixDQUFDO0FBQ0osQ0FBQztBQUVELG1GQUFtRjtBQUNuRixTQUFTLFVBQVUsQ0FBQyxLQUFhO0lBQy9CLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDO0FBQzdDLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFtQjtJQUNsRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFVBQVUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDbkQsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFbkQsbUZBQW1GO0lBQ25GLE1BQU0sS0FBSyxHQUFHLFlBQVksR0FBRyxpQkFBaUIsU0FBUywwQkFBMEIsR0FBRyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDOUcsMkVBQTJFO0lBQzNFLE1BQU0sS0FBSyxHQUFHLENBQUMsUUFBZ0IsRUFBRSxLQUFhLEVBQVUsRUFBRSxDQUN4RCxDQUFDLFdBQVcsR0FBRyxlQUFlLEVBQUUsS0FBSyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFMUYsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCwwREFBMEQ7UUFDMUQsT0FBTyxLQUFLLENBQ1YsVUFBVSxHQUFHLHlDQUF5QyxHQUFHLGFBQWEsR0FBRyxPQUFPLEtBQUssR0FBRyxFQUN4RixhQUFhLElBQUksSUFBSSxHQUFHLGNBQWMsR0FBRyxhQUFhLEdBQUcsR0FBRyxDQUM3RCxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sS0FBSztJQUNWLDJFQUEyRTtJQUMzRSxVQUFVLEdBQUcsd0JBQXdCLEtBQUssY0FBYyxHQUFHLDhDQUE4QyxHQUFHLGNBQWMsR0FBRyxhQUFhLEdBQUcsT0FBTyxLQUFLLEdBQUcsRUFDNUosd0RBQXdELElBQUksSUFBSSxHQUFHLGNBQWMsR0FBRywrQkFBK0IsS0FBSyxjQUFjLEdBQUcsYUFBYSxHQUFHLEdBQUcsQ0FDN0osQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBCb290c3RyYXAgdGhlIHBsYXRmb3JtIHJlcG8gKHNwYXJzZSwgcGFydGlhbCBjbG9uZSkuXG4gKlxuICogYHByb3Zpc2lvbmAgbm9ybWFsbHkgcnVucyBmcm9tIGEgY2hlY2tvdXQgb2YgdGhpcyByZXBvLCBiZWNhdXNlIHRoZSBkZXBsb3lcbiAqIHNjcmlwdHMgbGl2ZSB1bmRlciBgZGVwbG95L2AuIFRvIHByb3Zpc2lvbiBhIGZyZXNoIG1hY2hpbmUgaW4gb25lIGNvbW1hbmQsIHRoZVxuICogb3BlcmF0b3IgcGFzc2VzIGAtLXJlcG9gOiBwcm92aXNpb24gZ2l0LWNsb25lcyB0aGUgcGxhdGZvcm0gcmVwbyBmaXJzdCwgdGhlblxuICogcnVucyBldmVyeSBzdWJzZXF1ZW50IHN0ZXAgKGRlcGxveSwgaW5pdC1wbGF0Zm9ybSwgcG9zdC1zdGVwcykgZnJvbSB0aGUgY2xvbmUuXG4gKlxuICogQSBmdWxsIGNsb25lIGlzIHdhc3RlZnVsIOKAlCB0aGUgcmVwbyBjYXJyaWVzIGBwYWNrYWdlcy9gLCBgYXBpL2AsIGBwbGF0Zm9ybS9gLFxuICogYGZyb250ZW5kL2AsIOKApiBub25lIG9mIHdoaWNoIHRoZSBkZXBsb3kgc3RhY2sgbmVlZHMuIFNvIHRoZSBjbG9uZSBpcyBhXG4gKiAqKnBhcnRpYWwqKiAoYC0tZmlsdGVyPWJsb2I6bm9uZWApICsgKipjb25lIHNwYXJzZS1jaGVja291dCoqIHRoYXQgbWF0ZXJpYWxpemVzXG4gKiBvbmx5IHRoZSBkZXBsb3kgZm9sZGVycyB0aGUgc2VsZWN0ZWQgdGFyZ2V0ICsgb3B0aW9ucyBhY3R1YWxseSB1c2UuIFB1cmVcbiAqIGNvbW1hbmQgYXNzZW1ibHkgaGVyZSDigJQgbm8gZ2l0IGlzIHJ1bjsgdGhlIGNhbGxlciBleGVjdXRlcyB0aGUgY29tbWFuZCB2aWEgdGhlXG4gKiBzYW1lIGdhdGVkIGBydW5TY3JpcHQoKWAgYXMgdGhlIGRlcGxveS5cbiAqL1xuXG4vKiogQ2Fub25pY2FsIHVwc3RyZWFtIHBsYXRmb3JtIHJlcG8sIHVzZWQgd2hlbiBgLS1yZXBvYCBpcyBnaXZlbiB3aXRob3V0IGEgdmFsdWUuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9SRVBPID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9td2FzaGJ1cm4xNjAvcGlwZWxpbmUtYnVpbGRlci5naXQnO1xuLyoqIERlZmF1bHQgcmVmIHRvIGNoZWNrIG91dCB3aGVuIGJvb3RzdHJhcHBpbmcgKGEgYnJhbmNoIG9yIHRhZyDigJQgc2VlIGJlbG93KS4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1JFRiA9ICdtYWluJztcbi8qKiBEZWZhdWx0IGRpcmVjdG9yeSB0byBjbG9uZSBpbnRvIC8gcnVuIGZyb20uICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9XT1JLRElSID0gJ3BpcGVsaW5lLWJ1aWxkZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJvb3RzdHJhcFNwZWMge1xuICAvKiogR2l0IFVSTCB0byBjbG9uZS4gKi9cbiAgcmVhZG9ubHkgcmVwbzogc3RyaW5nO1xuICAvKiogQnJhbmNoIG9yIHRhZyB0byBjaGVjayBvdXQuIChBcmJpdHJhcnkgU0hBcyBtYXkgbm90IGZldGNoIHVuZGVyIC0tZGVwdGggMS4pICovXG4gIHJlYWRvbmx5IHJlZjogc3RyaW5nO1xuICAvKiogRGlyZWN0b3J5IHRvIGNsb25lIGludG8gLyBydW4gZnJvbSAocmVsYXRpdmUgdG8gdGhlIGxhdW5jaCBjd2QpLiAqL1xuICByZWFkb25seSB3b3JrZGlyOiBzdHJpbmc7XG4gIC8qKiBEZXBsb3kgZm9sZGVycyB0byBtYXRlcmlhbGl6ZSAoY29uZSBzcGFyc2UtY2hlY2tvdXQgcGF0aHMpLiAqL1xuICByZWFkb25seSBwYXRoczogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKiBXaGVuIHRydWUsIHNraXAgdGhlIHBhcnRpYWwvc3BhcnNlIGZsYWdzIGFuZCBkbyBhIHBsYWluIGZ1bGwgY2xvbmUgKGdpdCA8IDIuMjcpLiAqL1xuICByZWFkb25seSBmdWxsPzogYm9vbGVhbjtcbn1cblxuLyoqIEZpbGwgcGFydGlhbCBib290c3RyYXAgaW5wdXRzIHdpdGggZGVmYXVsdHM7IGBwYXRoc2AgaXMgc3VwcGxpZWQgYnkgdGhlIGNhbGxlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQm9vdHN0cmFwKFxuICBvcHRzOiB7IHJlcG8/OiBzdHJpbmc7IHJlZj86IHN0cmluZzsgd29ya2Rpcj86IHN0cmluZzsgZnVsbD86IGJvb2xlYW4gfSxcbiAgcGF0aHM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuKTogQm9vdHN0cmFwU3BlYyB7XG4gIGNvbnN0IHBpY2sgPSAodjogc3RyaW5nIHwgdW5kZWZpbmVkLCBmYWxsYmFjazogc3RyaW5nKTogc3RyaW5nID0+XG4gICAgdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYudHJpbSgpICE9PSAnJyA/IHYudHJpbSgpIDogZmFsbGJhY2s7XG4gIHJldHVybiB7XG4gICAgcmVwbzogcGljayhvcHRzLnJlcG8sIERFRkFVTFRfUkVQTyksXG4gICAgcmVmOiBwaWNrKG9wdHMucmVmLCBERUZBVUxUX1JFRiksXG4gICAgd29ya2RpcjogcGljayhvcHRzLndvcmtkaXIsIERFRkFVTFRfV09SS0RJUiksXG4gICAgcGF0aHMsXG4gICAgZnVsbDogb3B0cy5mdWxsID8/IGZhbHNlLFxuICB9O1xufVxuXG4vKiogU2luZ2xlLXF1b3RlIGEgdmFsdWUgZm9yIHNhZmUgc2hlbGwgaW50ZXJwb2xhdGlvbiAoaGFuZGxlcyBlbWJlZGRlZCBxdW90ZXMpLiAqL1xuZnVuY3Rpb24gc2hlbGxRdW90ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAnJHt2YWx1ZS5yZXBsYWNlKC8nL2csIFwiJ1xcXFwnJ1wiKX0nYDtcbn1cblxuLyoqXG4gKiBBc3NlbWJsZSB0aGUgaWRlbXBvdGVudCBib290c3RyYXAgY29tbWFuZC4gUmUtcnVubmFibGUsIGFuZCAqKmFkZGl0aXZlKiogYWNyb3NzXG4gKiBydW5zOiBpZiBgPHdvcmtkaXI+YCBpcyBhbHJlYWR5IGEgY2hlY2tvdXQgaXQgYHNwYXJzZS1jaGVja291dCBhZGRgcyB0aGUgY3VycmVudFxuICogcGF0aHMgKHNvIGZvbGRlcnMgZnJvbSBwcmV2aW91c2x5LXByb3Zpc2lvbmVkIHRhcmdldHMvb3B0aW9ucyBhcmUgcmV0YWluZWQpIGFuZFxuICogcmUtc3luY3MgdG8gYDxyZWY+YDsgb3RoZXJ3aXNlIGl0IHBhcnRpYWwtY2xvbmVzLCBzZXRzIHRoZSBjb25lLCBhbmQgY2hlY2tzIG91dC5cbiAqXG4gKiAtIGAtLWZpbHRlcj1ibG9iOm5vbmVgIGxhemlseSBmZXRjaGVzIGJsb2JzOyBgLS1uby1jaGVja291dGAgKyBjb25lIHNwYXJzZS1jaGVja291dFxuICogICDih5Igb25seSB0aGUgbGlzdGVkIGRlcGxveSBmb2xkZXJzIGxhbmQgb24gZGlzayAoZ2l0IOKJpSAyLjI3KS5cbiAqIC0gYHNwZWMuZnVsbGAgZmFsbHMgYmFjayB0byBhIHBsYWluIGZ1bGwgY2xvbmUgKG9sZGVyIGdpdCkuXG4gKiAtIEFsbCBpbnRlcnBvbGF0ZWQgdmFsdWVzIGFyZSBzaW5nbGUtcXVvdGVkLCBzbyBhIGhvc3RpbGUgcmVwby9yZWYvd29ya2Rpci9wYXRoXG4gKiAgIGNhbm5vdCBicmVhayBvdXQgb2YgdGhlIGNvbW1hbmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBib290c3RyYXBDb21tYW5kKHNwZWM6IEJvb3RzdHJhcFNwZWMpOiBzdHJpbmcge1xuICBjb25zdCByZXBvID0gc2hlbGxRdW90ZShzcGVjLnJlcG8pO1xuICBjb25zdCByZWYgPSBzaGVsbFF1b3RlKHNwZWMucmVmKTtcbiAgY29uc3Qgb3JpZ2luUmVmID0gc2hlbGxRdW90ZShgb3JpZ2luLyR7c3BlYy5yZWZ9YCk7XG4gIGNvbnN0IGRpciA9IHNoZWxsUXVvdGUoc3BlYy53b3JrZGlyKTtcbiAgY29uc3QgcGF0aHMgPSBzcGVjLnBhdGhzLm1hcChzaGVsbFF1b3RlKS5qb2luKCcgJyk7XG5cbiAgLy8gU2hhcmVkIHJlLXN5bmMgdGFpbDogcHJlZmVyIHRoZSByZW1vdGUtdHJhY2tpbmcgcmVmLCBmYWxsIGJhY2sgdG8gdGhlIGxvY2FsIHJlZi5cbiAgY29uc3QgcmVzZXQgPSBgeyBnaXQgLUMgJHtkaXJ9IHJlc2V0IC0taGFyZCAke29yaWdpblJlZn0gMj4vZGV2L251bGwgfHwgZ2l0IC1DICR7ZGlyfSByZXNldCAtLWhhcmQgJHtyZWZ9OyB9YDtcbiAgLy8gU2hhcmVkIGlkZW1wb3RlbnQgZnJhbWU6IHJlLXN5bmMgYW4gZXhpc3RpbmcgY2hlY2tvdXQsIGVsc2UgZnJlc2gtY2xvbmUuXG4gIGNvbnN0IGZyYW1lID0gKGV4aXN0aW5nOiBzdHJpbmcsIGZyZXNoOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgICBbYGlmIFsgLWQgJHtkaXJ9Ly5naXQgXTsgdGhlbmAsIGAgICR7ZXhpc3Rpbmd9YCwgJ2Vsc2UnLCBgICAke2ZyZXNofWAsICdmaSddLmpvaW4oJ1xcbicpO1xuXG4gIGlmIChzcGVjLmZ1bGwpIHtcbiAgICAvLyBGdWxsLWNsb25lIGZhbGxiYWNrIChubyBwYXJ0aWFsL3NwYXJzZSkgZm9yIGdpdCA8IDIuMjcuXG4gICAgcmV0dXJuIGZyYW1lKFxuICAgICAgYGdpdCAtQyAke2Rpcn0gZmV0Y2ggLS1hbGwgLS10YWdzIC0tcHJ1bmUgJiYgZ2l0IC1DICR7ZGlyfSBjaGVja291dCAke3JlZn0gJiYgJHtyZXNldH07YCxcbiAgICAgIGBnaXQgY2xvbmUgJHtyZXBvfSAke2Rpcn0gJiYgZ2l0IC1DICR7ZGlyfSBjaGVja291dCAke3JlZn07YCxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGZyYW1lKFxuICAgIC8vIEFkZGl0aXZlOiBrZWVwIGZvbGRlcnMgZnJvbSBlYXJsaWVyIHRhcmdldHMvb3B0aW9ucyBhbHJlYWR5IGluIHRoZSBjb25lLlxuICAgIGBnaXQgLUMgJHtkaXJ9IHNwYXJzZS1jaGVja291dCBhZGQgJHtwYXRoc30gJiYgZ2l0IC1DICR7ZGlyfSBmZXRjaCAtLWZpbHRlcj1ibG9iOm5vbmUgLS1kZXB0aCAxIG9yaWdpbiAke3JlZn0gJiYgZ2l0IC1DICR7ZGlyfSBjaGVja291dCAke3JlZn0gJiYgJHtyZXNldH07YCxcbiAgICBgZ2l0IGNsb25lIC0tZmlsdGVyPWJsb2I6bm9uZSAtLW5vLWNoZWNrb3V0IC0tZGVwdGggMSAke3JlcG99ICR7ZGlyfSAmJiBnaXQgLUMgJHtkaXJ9IHNwYXJzZS1jaGVja291dCBzZXQgLS1jb25lICR7cGF0aHN9ICYmIGdpdCAtQyAke2Rpcn0gY2hlY2tvdXQgJHtyZWZ9O2AsXG4gICk7XG59XG4iXX0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FnZW50L2Jvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXhELHFGQUFxRjtBQUNyRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsc0RBQXNELENBQUM7QUFDbkYsaUZBQWlGO0FBQ2pGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUM7QUFDbEMsa0RBQWtEO0FBQ2xELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQztBQWVsRCxzRkFBc0Y7QUFDdEYsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixJQUF1RSxFQUN2RSxLQUF3QjtJQUV4QixNQUFNLElBQUksR0FBRyxDQUFDLENBQXFCLEVBQUUsUUFBZ0IsRUFBVSxFQUFFLENBQy9ELE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNqRSxPQUFPO1FBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQztRQUNuQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDO1FBQ2hDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUM7UUFDNUMsS0FBSztRQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUs7S0FDekIsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFtQjtJQUNsRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFVBQVUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDbkQsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFbkQsbUZBQW1GO0lBQ25GLE1BQU0sS0FBSyxHQUFHLFlBQVksR0FBRyxpQkFBaUIsU0FBUywwQkFBMEIsR0FBRyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDOUcsMkVBQTJFO0lBQzNFLE1BQU0sS0FBSyxHQUFHLENBQUMsUUFBZ0IsRUFBRSxLQUFhLEVBQVUsRUFBRSxDQUN4RCxDQUFDLFdBQVcsR0FBRyxlQUFlLEVBQUUsS0FBSyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFMUYsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCwwREFBMEQ7UUFDMUQsT0FBTyxLQUFLLENBQ1YsVUFBVSxHQUFHLHlDQUF5QyxHQUFHLGFBQWEsR0FBRyxPQUFPLEtBQUssR0FBRyxFQUN4RixhQUFhLElBQUksSUFBSSxHQUFHLGNBQWMsR0FBRyxhQUFhLEdBQUcsR0FBRyxDQUM3RCxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sS0FBSztJQUNWLDJFQUEyRTtJQUMzRSxVQUFVLEdBQUcsd0JBQXdCLEtBQUssY0FBYyxHQUFHLDhDQUE4QyxHQUFHLGNBQWMsR0FBRyxhQUFhLEdBQUcsT0FBTyxLQUFLLEdBQUcsRUFDNUosd0RBQXdELElBQUksSUFBSSxHQUFHLGNBQWMsR0FBRywrQkFBK0IsS0FBSyxjQUFjLEdBQUcsYUFBYSxHQUFHLEdBQUcsQ0FDN0osQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBCb290c3RyYXAgdGhlIHBsYXRmb3JtIHJlcG8gKHNwYXJzZSwgcGFydGlhbCBjbG9uZSkuXG4gKlxuICogYHByb3Zpc2lvbmAgbm9ybWFsbHkgcnVucyBmcm9tIGEgY2hlY2tvdXQgb2YgdGhpcyByZXBvLCBiZWNhdXNlIHRoZSBkZXBsb3lcbiAqIHNjcmlwdHMgbGl2ZSB1bmRlciBgZGVwbG95L2AuIFRvIHByb3Zpc2lvbiBhIGZyZXNoIG1hY2hpbmUgaW4gb25lIGNvbW1hbmQsIHRoZVxuICogb3BlcmF0b3IgcGFzc2VzIGAtLXJlcG9gOiBwcm92aXNpb24gZ2l0LWNsb25lcyB0aGUgcGxhdGZvcm0gcmVwbyBmaXJzdCwgdGhlblxuICogcnVucyBldmVyeSBzdWJzZXF1ZW50IHN0ZXAgKGRlcGxveSwgaW5pdC1wbGF0Zm9ybSwgcG9zdC1zdGVwcykgZnJvbSB0aGUgY2xvbmUuXG4gKlxuICogQSBmdWxsIGNsb25lIGlzIHdhc3RlZnVsIOKAlCB0aGUgcmVwbyBjYXJyaWVzIGBwYWNrYWdlcy9gLCBgYXBpL2AsIGBwbGF0Zm9ybS9gLFxuICogYGZyb250ZW5kL2AsIOKApiBub25lIG9mIHdoaWNoIHRoZSBkZXBsb3kgc3RhY2sgbmVlZHMuIFNvIHRoZSBjbG9uZSBpcyBhXG4gKiAqKnBhcnRpYWwqKiAoYC0tZmlsdGVyPWJsb2I6bm9uZWApICsgKipjb25lIHNwYXJzZS1jaGVja291dCoqIHRoYXQgbWF0ZXJpYWxpemVzXG4gKiBvbmx5IHRoZSBkZXBsb3kgZm9sZGVycyB0aGUgc2VsZWN0ZWQgdGFyZ2V0ICsgb3B0aW9ucyBhY3R1YWxseSB1c2UuIFB1cmVcbiAqIGNvbW1hbmQgYXNzZW1ibHkgaGVyZSDigJQgbm8gZ2l0IGlzIHJ1bjsgdGhlIGNhbGxlciBleGVjdXRlcyB0aGUgY29tbWFuZCB2aWEgdGhlXG4gKiBzYW1lIGdhdGVkIGBydW5TY3JpcHQoKWAgYXMgdGhlIGRlcGxveS5cbiAqL1xuXG5pbXBvcnQgeyBzaGVsbFF1b3RlIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuXG4vKiogQ2Fub25pY2FsIHVwc3RyZWFtIHBsYXRmb3JtIHJlcG8sIHVzZWQgd2hlbiBgLS1yZXBvYCBpcyBnaXZlbiB3aXRob3V0IGEgdmFsdWUuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9SRVBPID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9td2FzaGJ1cm4xNjAvcGlwZWxpbmUtYnVpbGRlci5naXQnO1xuLyoqIERlZmF1bHQgcmVmIHRvIGNoZWNrIG91dCB3aGVuIGJvb3RzdHJhcHBpbmcgKGEgYnJhbmNoIG9yIHRhZyDigJQgc2VlIGJlbG93KS4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1JFRiA9ICdtYWluJztcbi8qKiBEZWZhdWx0IGRpcmVjdG9yeSB0byBjbG9uZSBpbnRvIC8gcnVuIGZyb20uICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9XT1JLRElSID0gJ3BpcGVsaW5lLWJ1aWxkZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJvb3RzdHJhcFNwZWMge1xuICAvKiogR2l0IFVSTCB0byBjbG9uZS4gKi9cbiAgcmVhZG9ubHkgcmVwbzogc3RyaW5nO1xuICAvKiogQnJhbmNoIG9yIHRhZyB0byBjaGVjayBvdXQuIChBcmJpdHJhcnkgU0hBcyBtYXkgbm90IGZldGNoIHVuZGVyIC0tZGVwdGggMS4pICovXG4gIHJlYWRvbmx5IHJlZjogc3RyaW5nO1xuICAvKiogRGlyZWN0b3J5IHRvIGNsb25lIGludG8gLyBydW4gZnJvbSAocmVsYXRpdmUgdG8gdGhlIGxhdW5jaCBjd2QpLiAqL1xuICByZWFkb25seSB3b3JrZGlyOiBzdHJpbmc7XG4gIC8qKiBEZXBsb3kgZm9sZGVycyB0byBtYXRlcmlhbGl6ZSAoY29uZSBzcGFyc2UtY2hlY2tvdXQgcGF0aHMpLiAqL1xuICByZWFkb25seSBwYXRoczogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKiBXaGVuIHRydWUsIHNraXAgdGhlIHBhcnRpYWwvc3BhcnNlIGZsYWdzIGFuZCBkbyBhIHBsYWluIGZ1bGwgY2xvbmUgKGdpdCA8IDIuMjcpLiAqL1xuICByZWFkb25seSBmdWxsPzogYm9vbGVhbjtcbn1cblxuLyoqIEZpbGwgcGFydGlhbCBib290c3RyYXAgaW5wdXRzIHdpdGggZGVmYXVsdHM7IGBwYXRoc2AgaXMgc3VwcGxpZWQgYnkgdGhlIGNhbGxlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQm9vdHN0cmFwKFxuICBvcHRzOiB7IHJlcG8/OiBzdHJpbmc7IHJlZj86IHN0cmluZzsgd29ya2Rpcj86IHN0cmluZzsgZnVsbD86IGJvb2xlYW4gfSxcbiAgcGF0aHM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuKTogQm9vdHN0cmFwU3BlYyB7XG4gIGNvbnN0IHBpY2sgPSAodjogc3RyaW5nIHwgdW5kZWZpbmVkLCBmYWxsYmFjazogc3RyaW5nKTogc3RyaW5nID0+XG4gICAgdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYudHJpbSgpICE9PSAnJyA/IHYudHJpbSgpIDogZmFsbGJhY2s7XG4gIHJldHVybiB7XG4gICAgcmVwbzogcGljayhvcHRzLnJlcG8sIERFRkFVTFRfUkVQTyksXG4gICAgcmVmOiBwaWNrKG9wdHMucmVmLCBERUZBVUxUX1JFRiksXG4gICAgd29ya2RpcjogcGljayhvcHRzLndvcmtkaXIsIERFRkFVTFRfV09SS0RJUiksXG4gICAgcGF0aHMsXG4gICAgZnVsbDogb3B0cy5mdWxsID8/IGZhbHNlLFxuICB9O1xufVxuXG4vKipcbiAqIEFzc2VtYmxlIHRoZSBpZGVtcG90ZW50IGJvb3RzdHJhcCBjb21tYW5kLiBSZS1ydW5uYWJsZSwgYW5kICoqYWRkaXRpdmUqKiBhY3Jvc3NcbiAqIHJ1bnM6IGlmIGA8d29ya2Rpcj5gIGlzIGFscmVhZHkgYSBjaGVja291dCBpdCBgc3BhcnNlLWNoZWNrb3V0IGFkZGBzIHRoZSBjdXJyZW50XG4gKiBwYXRocyAoc28gZm9sZGVycyBmcm9tIHByZXZpb3VzbHktcHJvdmlzaW9uZWQgdGFyZ2V0cy9vcHRpb25zIGFyZSByZXRhaW5lZCkgYW5kXG4gKiByZS1zeW5jcyB0byBgPHJlZj5gOyBvdGhlcndpc2UgaXQgcGFydGlhbC1jbG9uZXMsIHNldHMgdGhlIGNvbmUsIGFuZCBjaGVja3Mgb3V0LlxuICpcbiAqIC0gYC0tZmlsdGVyPWJsb2I6bm9uZWAgbGF6aWx5IGZldGNoZXMgYmxvYnM7IGAtLW5vLWNoZWNrb3V0YCArIGNvbmUgc3BhcnNlLWNoZWNrb3V0XG4gKiAgIOKHkiBvbmx5IHRoZSBsaXN0ZWQgZGVwbG95IGZvbGRlcnMgbGFuZCBvbiBkaXNrIChnaXQg4omlIDIuMjcpLlxuICogLSBgc3BlYy5mdWxsYCBmYWxscyBiYWNrIHRvIGEgcGxhaW4gZnVsbCBjbG9uZSAob2xkZXIgZ2l0KS5cbiAqIC0gQWxsIGludGVycG9sYXRlZCB2YWx1ZXMgYXJlIHNpbmdsZS1xdW90ZWQsIHNvIGEgaG9zdGlsZSByZXBvL3JlZi93b3JrZGlyL3BhdGhcbiAqICAgY2Fubm90IGJyZWFrIG91dCBvZiB0aGUgY29tbWFuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJvb3RzdHJhcENvbW1hbmQoc3BlYzogQm9vdHN0cmFwU3BlYyk6IHN0cmluZyB7XG4gIGNvbnN0IHJlcG8gPSBzaGVsbFF1b3RlKHNwZWMucmVwbyk7XG4gIGNvbnN0IHJlZiA9IHNoZWxsUXVvdGUoc3BlYy5yZWYpO1xuICBjb25zdCBvcmlnaW5SZWYgPSBzaGVsbFF1b3RlKGBvcmlnaW4vJHtzcGVjLnJlZn1gKTtcbiAgY29uc3QgZGlyID0gc2hlbGxRdW90ZShzcGVjLndvcmtkaXIpO1xuICBjb25zdCBwYXRocyA9IHNwZWMucGF0aHMubWFwKHNoZWxsUXVvdGUpLmpvaW4oJyAnKTtcblxuICAvLyBTaGFyZWQgcmUtc3luYyB0YWlsOiBwcmVmZXIgdGhlIHJlbW90ZS10cmFja2luZyByZWYsIGZhbGwgYmFjayB0byB0aGUgbG9jYWwgcmVmLlxuICBjb25zdCByZXNldCA9IGB7IGdpdCAtQyAke2Rpcn0gcmVzZXQgLS1oYXJkICR7b3JpZ2luUmVmfSAyPi9kZXYvbnVsbCB8fCBnaXQgLUMgJHtkaXJ9IHJlc2V0IC0taGFyZCAke3JlZn07IH1gO1xuICAvLyBTaGFyZWQgaWRlbXBvdGVudCBmcmFtZTogcmUtc3luYyBhbiBleGlzdGluZyBjaGVja291dCwgZWxzZSBmcmVzaC1jbG9uZS5cbiAgY29uc3QgZnJhbWUgPSAoZXhpc3Rpbmc6IHN0cmluZywgZnJlc2g6IHN0cmluZyk6IHN0cmluZyA9PlxuICAgIFtgaWYgWyAtZCAke2Rpcn0vLmdpdCBdOyB0aGVuYCwgYCAgJHtleGlzdGluZ31gLCAnZWxzZScsIGAgICR7ZnJlc2h9YCwgJ2ZpJ10uam9pbignXFxuJyk7XG5cbiAgaWYgKHNwZWMuZnVsbCkge1xuICAgIC8vIEZ1bGwtY2xvbmUgZmFsbGJhY2sgKG5vIHBhcnRpYWwvc3BhcnNlKSBmb3IgZ2l0IDwgMi4yNy5cbiAgICByZXR1cm4gZnJhbWUoXG4gICAgICBgZ2l0IC1DICR7ZGlyfSBmZXRjaCAtLWFsbCAtLXRhZ3MgLS1wcnVuZSAmJiBnaXQgLUMgJHtkaXJ9IGNoZWNrb3V0ICR7cmVmfSAmJiAke3Jlc2V0fTtgLFxuICAgICAgYGdpdCBjbG9uZSAke3JlcG99ICR7ZGlyfSAmJiBnaXQgLUMgJHtkaXJ9IGNoZWNrb3V0ICR7cmVmfTtgLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gZnJhbWUoXG4gICAgLy8gQWRkaXRpdmU6IGtlZXAgZm9sZGVycyBmcm9tIGVhcmxpZXIgdGFyZ2V0cy9vcHRpb25zIGFscmVhZHkgaW4gdGhlIGNvbmUuXG4gICAgYGdpdCAtQyAke2Rpcn0gc3BhcnNlLWNoZWNrb3V0IGFkZCAke3BhdGhzfSAmJiBnaXQgLUMgJHtkaXJ9IGZldGNoIC0tZmlsdGVyPWJsb2I6bm9uZSAtLWRlcHRoIDEgb3JpZ2luICR7cmVmfSAmJiBnaXQgLUMgJHtkaXJ9IGNoZWNrb3V0ICR7cmVmfSAmJiAke3Jlc2V0fTtgLFxuICAgIGBnaXQgY2xvbmUgLS1maWx0ZXI9YmxvYjpub25lIC0tbm8tY2hlY2tvdXQgLS1kZXB0aCAxICR7cmVwb30gJHtkaXJ9ICYmIGdpdCAtQyAke2Rpcn0gc3BhcnNlLWNoZWNrb3V0IHNldCAtLWNvbmUgJHtwYXRoc30gJiYgZ2l0IC1DICR7ZGlyfSBjaGVja291dCAke3JlZn07YCxcbiAgKTtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../../src/agent/targets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../../src/agent/targets.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@
9
9
  * Keep this in lock-step with the flags the scripts accept — every target's
10
10
  * operator entrypoint is `bin/setup.sh` (deploy/<target>/bin/setup.sh).
11
11
  */
12
- import { assertShellSafe } from '../config/cli.constants.js';
12
+ import { assertShellSafe, shellQuote } from '../config/cli.constants.js';
13
13
  // --- Shared input specs -----------------------------------------------------
14
14
  const DOMAIN = { flag: 'domain', key: 'domain', description: 'Fully-qualified domain name (ALB ACM cert + SES DKIM)' };
15
15
  const HOSTED_ZONE = { flag: 'hosted-zone-id', key: 'hostedZoneId', description: 'Public Route 53 hosted zone ID authoritative for the domain' };
@@ -157,10 +157,6 @@ export function sparsePathsFor(target, enabledLoadIds) {
157
157
  }
158
158
  return [...paths];
159
159
  }
160
- /** POSIX single-quote a value (with embedded-quote escaping) for safe shell use. */
161
- function shellQuote(value) {
162
- return `'${value.replace(/'/g, "'\\''")}'`;
163
- }
164
160
  /**
165
161
  * Quote only when the value would otherwise be word-split or mis-parsed by the
166
162
  * shell (whitespace or embedded quotes). `assertShellSafe` already rejects the
@@ -261,4 +257,4 @@ export function teardownCommand(target, opts = {}) {
261
257
  }
262
258
  }
263
259
  }
264
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZ2VudC90YXJnZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFzRDdELCtFQUErRTtBQUUvRSxNQUFNLE1BQU0sR0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsdURBQXVELEVBQUUsQ0FBQztBQUNsSSxNQUFNLFdBQVcsR0FBYyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSw2REFBNkQsRUFBRSxDQUFDO0FBQzNKLE1BQU0sVUFBVSxHQUFjLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxzRUFBc0UsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDMUssTUFBTSxNQUFNLEdBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxDQUFDO0FBQ3ZGLE1BQU0sV0FBVyxHQUFjLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSw2REFBNkQsRUFBRSxDQUFDO0FBQ3RKLE1BQU0sUUFBUSxHQUFjLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxnRkFBZ0YsRUFBRSxDQUFDO0FBQ2hLLE1BQU0sYUFBYSxHQUFjLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSx3Q0FBd0MsRUFBRSxDQUFDO0FBQ3ZJLDRGQUE0RjtBQUM1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SSxRQUFRLENBQUM7WUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogRGV0ZXJtaW5pc3RpYyByZWdpc3RyeSBvZiBwbGF0Zm9ybSBkZXBsb3kgdGFyZ2V0cyDigJQgdGhlIHNvdXJjZSBvZiB0cnV0aCB0aGVcbiAqIGBwcm92aXNpb25gIGFkdmlzb3IgdXNlcyB0byBhc3NlbWJsZSB0aGUgRVhBQ1QgZGVwbG95IGNvbW1hbmQuIFRoZSBhZ2VudCBpcyBhXG4gKiB0aGluIHdyYXBwZXIgb3ZlciB0aGUgZXhpc3RpbmcgZGVwbG95IHNjcmlwdHM7IGl0IG5ldmVyIHJlaW1wbGVtZW50c1xuICogZGVwbG95bWVudCwgb25seSB2YWxpZGF0ZXMgaW5wdXRzIGFuZCBhc3NlbWJsZXMgdGhlIGNvbW1hbmQgdG8gcnVuLlxuICpcbiAqIEtlZXAgdGhpcyBpbiBsb2NrLXN0ZXAgd2l0aCB0aGUgZmxhZ3MgdGhlIHNjcmlwdHMgYWNjZXB0IOKAlCBldmVyeSB0YXJnZXQnc1xuICogb3BlcmF0b3IgZW50cnlwb2ludCBpcyBgYmluL3NldHVwLnNoYCAoZGVwbG95Lzx0YXJnZXQ+L2Jpbi9zZXR1cC5zaCkuXG4gKi9cblxuaW1wb3J0IHsgYXNzZXJ0U2hlbGxTYWZlIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuXG5leHBvcnQgdHlwZSBUYXJnZXRJZCA9ICdkb2NrZXInIHwgJ21pbmlrdWJlJyB8ICdlYzInIHwgJ2Vrcyc7XG5cbi8qKiBBIHNpbmdsZSBpbnB1dCB0aGUgdW5kZXJseWluZyBkZXBsb3kgc2NyaXB0IGFjY2VwdHMuICovXG5leHBvcnQgaW50ZXJmYWNlIElucHV0U3BlYyB7XG4gIC8qKiBGbGFnIG5hbWUgcGFzc2VkIHRvIHRoZSBzY3JpcHQgKHdpdGhvdXQgdGhlIGxlYWRpbmcgYC0tYCkuICovXG4gIHJlYWRvbmx5IGZsYWc6IHN0cmluZztcbiAgLyoqIEtleSBvbiB0aGUgcHJvdmlzaW9uIHBhcmFtcyBvYmplY3QuICovXG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuICAvKiogSHVtYW4gZGVzY3JpcHRpb24g4oCUIHNob3duIHdoZW4gYSByZXF1aXJlZCBpbnB1dCBpcyBtaXNzaW5nLiAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKiogU2VjcmV0IOKAlCBuZXZlciBwcmludGVkIGluIHRoZSBhc3NlbWJsZWQgY29tbWFuZCAobWFza2VkIGFzIGAqKipgKS4gKi9cbiAgcmVhZG9ubHkgc2VjcmV0PzogYm9vbGVhbjtcbiAgLyoqIEJvb2xlYW4gZmxhZyB3aXRoIG5vIHZhbHVlIChlLmcuIGAtLWVtYWlsYCkuICovXG4gIHJlYWRvbmx5IGJvb2xlYW4/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldFNwZWMge1xuICByZWFkb25seSBpZDogVGFyZ2V0SWQ7XG4gIHJlYWRvbmx5IGxhYmVsOiBzdHJpbmc7XG4gIC8qKiBEaXJlY3RvcnkgdGhlIGVudHJ5cG9pbnQgcnVucyBmcm9tIChyZWxhdGl2ZSB0byByZXBvIHJvb3QpLiAqL1xuICByZWFkb25seSBkaXI6IHN0cmluZztcbiAgLyoqIEVudHJ5cG9pbnQgc2NyaXB0IChyZWxhdGl2ZSB0byBgZGlyYCkuICovXG4gIHJlYWRvbmx5IGVudHJ5cG9pbnQ6IHN0cmluZztcbiAgLyoqIElucHV0cyB0aGUgc2NyaXB0IFJFUVVJUkVTIOKAlCB0aGUgYWR2aXNvciByZXBvcnRzIGFueSB0aGF0IGFyZSBtaXNzaW5nLiAqL1xuICByZWFkb25seSByZXF1aXJlZDogcmVhZG9ubHkgSW5wdXRTcGVjW107XG4gIC8qKiBPcHRpb25hbCBpbnB1dHMsIHBhc3NlZCB0aHJvdWdoIG9ubHkgd2hlbiBwcm92aWRlZC4gKi9cbiAgcmVhZG9ubHkgb3B0aW9uYWw6IHJlYWRvbmx5IElucHV0U3BlY1tdO1xuICAvKipcbiAgICogUmVwbyBmb2xkZXIocykgdGhpcyB0YXJnZXQncyBkZXBsb3kgbmVlZHMsIGZvciBhIHNwYXJzZSBgLS1yZXBvYCBib290c3RyYXAuXG4gICAqIENvbWJpbmVkIHdpdGggQ09NTU9OX1NQQVJTRV9QQVRIUyBhbmQgYW55IHNlbGVjdGVkIGxvYWQgc3RlcHMnIHBhdGhzLlxuICAgKi9cbiAgcmVhZG9ubHkgc3BhcnNlUGF0aHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKiogUG9zdC1kZXBsb3kgc3RlcCB0byBzdXJmYWNlIChyZWdpc3RlcnMgYWRtaW4gKyBsb2FkcyBwbHVnaW5zKS4gKi9cbiAgcmVhZG9ubHkgcG9zdERlcGxveT86IHN0cmluZztcbiAgLyoqIFJvdWdoIG1vbnRobHkgY29zdCAoZnJvbSBkb2NzKS4gKi9cbiAgcmVhZG9ubHkgY29zdDogc3RyaW5nO1xuICAvKiogT25lLWxpbmUgXCJiZXN0IGZvclwiLiAqL1xuICByZWFkb25seSBiZXN0Rm9yOiBzdHJpbmc7XG4gIC8qKiBXaGF0IHRoZSBkZXBsb3kgY3JlYXRlcyDigJQgc2hvd24gd2hlbiBkZXBsb3lpbmcgc28gXCJEZXBsb3lpbmdcIiBpc24ndCBvcGFxdWUuICovXG4gIHJlYWRvbmx5IGRlcGxveXM6IHN0cmluZztcbiAgLyoqIFdoYXQgYSB0ZWFyZG93biBvZiB0aGlzIHRhcmdldCBkZXN0cm95cyDigJQgc2hvd24gYmVmb3JlIGEgKGdhdGVkKSB0ZWFyZG93bi4gKi9cbiAgcmVhZG9ubHkgZGVzdHJveXM6IHN0cmluZztcbiAgLyoqXG4gICAqIEhvc3QgcG9ydHMgdGhlIGRlcGxveSBiaW5kcyDigJQgYSBGQUxMQkFDSyBvbmx5LiBUaGUgbGl2ZSBsaXN0IGlzIERFUklWRUQgZnJvbSB0aGVcbiAgICogY2xvbmVkIGRlcGxveSBzb3VyY2UgYXQgcnVudGltZSAocG9ydHMudHMgYGRpc2NvdmVySG9zdFBvcnRzYCk6IGxvY2FsIGZyb21cbiAgICogZG9ja2VyLWNvbXBvc2UueW1sJ3MgcHVibGlzaGVkIHBvcnRzLCBtaW5pa3ViZSBmcm9tIHNldHVwLnNoJ3MgcG9ydC1mb3J3YXJkcy4gVGhpc1xuICAgKiBzdGF0aWMgY29weSBpcyB1c2VkIG9ubHkgd2hlbiB0aGF0IHNvdXJjZSBjYW4ndCBiZSByZWFkLiBFbXB0eSBmb3IgcmVtb3RlIHRhcmdldHNcbiAgICogKGVjMi9la3MgYmluZCBub3RoaW5nIG9uIHRoZSBvcGVyYXRvcidzIG1hY2hpbmUpLlxuICAgKi9cbiAgcmVhZG9ubHkgaG9zdFBvcnRzOiByZWFkb25seSB7IHNlcnZpY2U6IHN0cmluZzsgcG9ydDogbnVtYmVyIH1bXTtcbn1cblxuLy8gLS0tIFNoYXJlZCBpbnB1dCBzcGVjcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jb25zdCBET01BSU46IElucHV0U3BlYyA9IHsgZmxhZzogJ2RvbWFpbicsIGtleTogJ2RvbWFpbicsIGRlc2NyaXB0aW9uOiAnRnVsbHktcXVhbGlmaWVkIGRvbWFpbiBuYW1lIChBTEIgQUNNIGNlcnQgKyBTRVMgREtJTSknIH07XG5jb25zdCBIT1NURURfWk9ORTogSW5wdXRTcGVjID0geyBmbGFnOiAnaG9zdGVkLXpvbmUtaWQnLCBrZXk6ICdob3N0ZWRab25lSWQnLCBkZXNjcmlwdGlvbjogJ1B1YmxpYyBSb3V0ZSA1MyBob3N0ZWQgem9uZSBJRCBhdXRob3JpdGF0aXZlIGZvciB0aGUgZG9tYWluJyB9O1xuY29uc3QgR0hDUl9UT0tFTjogSW5wdXRTcGVjID0geyBmbGFnOiAnZ2hjci10b2tlbicsIGtleTogJ2doY3JUb2tlbicsIGRlc2NyaXB0aW9uOiAnR2l0SHViIFBBVCB3aXRoIHJlYWQ6cGFja2FnZXMgKGF2b2lkcyBnaGNyLmlvIGFub255bW91cyByYXRlIGxpbWl0cyknLCBzZWNyZXQ6IHRydWUgfTtcbmNvbnN0IFJFR0lPTjogSW5wdXRTcGVjID0geyBmbGFnOiAncmVnaW9uJywga2V5OiAncmVnaW9uJywgZGVzY3JpcHRpb246ICdBV1MgcmVnaW9uJyB9O1xuY29uc3QgREVQTE9ZX01PREU6IElucHV0U3BlYyA9IHsgZmxhZzogJ2RlcGxveS1tb2RlJywga2V5OiAnZGVwbG95TW9kZScsIGRlc2NyaXB0aW9uOiAncHVibGljIChpbnRlcm5ldC1mYWNpbmcgQUxCKSBvciBwcml2YXRlIChpbnRlcm5hbCwgZGVmYXVsdCknIH07XG5jb25zdCBLRVlfUEFJUjogSW5wdXRTcGVjID0geyBmbGFnOiAna2V5LXBhaXInLCBrZXk6ICdrZXlQYWlyJywgZGVzY3JpcHRpb246ICdFQzIga2V5IHBhaXIgaW4gdGhlIHJlZ2lvbiAoYnJlYWstZ2xhc3Mgc2VyaWFsIGNvbnNvbGU7IHJvdXRpbmUgYWNjZXNzIGlzIFNTTSknIH07XG5jb25zdCBJTlNUQU5DRV9UWVBFOiBJbnB1dFNwZWMgPSB7IGZsYWc6ICdpbnN0YW5jZS10eXBlJywga2V5OiAnaW5zdGFuY2VUeXBlJywgZGVzY3JpcHRpb246ICdFQzIgaW5zdGFuY2UgdHlwZSAoZGVmYXVsdCB0My4yeGxhcmdlKScgfTtcbi8vIGVjMiBkZXBsb3kvdGVhcmRvd24gc3RhY2sgbmFtZSAoQ2xvdWRGb3JtYXRpb24pLiBUaGUgYHN0YWNrTmFtZWAgcGFyYW0ga2V5IGlzIGFsc28gcmV1c2VkXG4vLyBieSB0aGUgdGVhcmRvd24gcGF0aCBhcyB0aGUgcmVzb3VyY2UgaWRlbnRpZmllciAoZWMyIHN0YWNrIC8gZWtzIGNsdXN0ZXIgbmFtZSkuXG5jb25zdCBTVEFDS19OQU1FOiBJbnB1dFNwZWMgPSB7IGZsYWc6ICdzdGFjay1uYW1lJywga2V5OiAnc3RhY2tOYW1lJywgZGVzY3JpcHRpb246ICdDbG91ZEZvcm1hdGlvbiBzdGFjayBuYW1lIChkZWZhdWx0IHBpcGVsaW5lLWJ1aWxkZXIpIOKAlCBzZXQgdG8gcnVuIGEgc2Vjb25kIGVjMiBlbnZpcm9ubWVudCcgfTtcbi8vIGVrcyBjbHVzdGVyIG5hbWUgKGVrc2N0bCkuIFNldCB0byBydW4gYSBzZWNvbmQgRUtTIGVudmlyb25tZW50IGluIG9uZSBhY2NvdW50LlxuY29uc3QgQ0xVU1RFUl9OQU1FOiBJbnB1dFNwZWMgPSB7IGZsYWc6ICdjbHVzdGVyLW5hbWUnLCBrZXk6ICdjbHVzdGVyTmFtZScsIGRlc2NyaXB0aW9uOiAnRUtTIGNsdXN0ZXIgbmFtZSAoZGVmYXVsdCBwaXBlbGluZS1idWlsZGVyKScgfTtcbi8vIEF1dG8taW5pdCBpcyBPTiBCWSBERUZBVUxUIG9uIHRoZSBBV1MgdGFyZ2V0cyAoZWMyICsgZWtzIHNldHVwLnNoIGRlZmF1bHQgQVVUT19JTklUPXRydWUpLFxuLy8gc28gYC0tbm8tYXV0by1pbml0YCBpcyB0aGUgbG9hZC1iZWFyaW5nIG9wdC1vdXQgYW5kIGAtLWF1dG8taW5pdGAgaXMgYSBuby1vcCByZWFmZmlybSDigJRcbi8vIG1pcnJvcnMgLS1lbWFpbC8tLW5vLWVtYWlsLiBlYzIgc2VsZi1pbml0cyBvbiB0aGUgaW5zdGFuY2Ugb24gZmlyc3QgYm9vdDsgZWtzIHNlbGYtaW5pdHMgaW5cbi8vIHNldHVwLnNoJ3MgZmluYWwgcGhhc2UgKG92ZXIgYSBrdWJlY3RsIHBvcnQtZm9yd2FyZCkuIG1pbmlrdWJlL2xvY2FsIHJ1biBpbml0IHZpYSBwcm92aXNpb24uXG4vLyBOT1RFOiBgLS1uby1hdXRvLWluaXRgJ3Mga2V5IChub0F1dG9Jbml0KSBpcyBOT1QgZGVyaXZhYmxlIGZyb20gaXRzIGZsYWcgdGhlIHdheSB0aGUgb3RoZXJcbi8vIHNwZWNzJyBrZXlzIGFyZSAoY29tbWFuZGVyIGZvbGRzIC0teC8tLW5vLXggaW50byBhIHNpbmdsZSBgeGAgb3B0aW9uKTsgcHJvdmlzaW9uLnRzIGFzc2VtYmxlc1xuLy8gYm90aCBrZXlzIGV4cGxpY2l0bHkg4oCUIHNlZSB0aGUgcGFyYW0tYXNzZW1ibHkgdGhlcmUuXG5jb25zdCBBVVRPX0lOSVQ6IElucHV0U3BlYyA9IHsgZmxhZzogJ2F1dG8taW5pdCcsIGtleTogJ2F1dG9Jbml0JywgZGVzY3JpcHRpb246ICdlYzIvZWtzOiB0aGUgZGVwbG95IHNlbGYtcnVucyBpbml0LXBsYXRmb3JtIChyZWdpc3RlciArIGFsbCBsb2Fkcykg4oCUIHRoZSBERUZBVUxUIG9uIEFXUycsIGJvb2xlYW46IHRydWUgfTtcbmNvbnN0IE5PX0FVVE9fSU5JVDogSW5wdXRTcGVjID0geyBmbGFnOiAnbm8tYXV0by1pbml0Jywga2V5OiAnbm9BdXRvSW5pdCcsIGRlc2NyaXB0aW9uOiAnZWMyL2Vrczogc2tpcCB0aGUgZGVwbG95LW1hbmFnZWQgYXV0by1pbml0IGFuZCBydW4gaW5pdC1wbGF0Zm9ybSBtYW51YWxseSBpbnN0ZWFkJywgYm9vbGVhbjogdHJ1ZSB9O1xuXG4vLyBTRVMgLyBlbWFpbCBmYW1pbHkg4oCUIHNoYXJlZCBieSBlYzIgKyBla3MuIFNFUyBpcyBwcm92aXNpb25lZCBCWSBERUZBVUxUXG4vLyBvbiBBV1MgZGVwbG95czsgYC0tbm8tZW1haWxgIGlzIHRoZSBvcHQtb3V0IChgLS1lbWFpbGAgaXMgYSBoYXJtbGVzcyBuby1vcCBrZXB0XG4vLyBmb3IgYmFjay1jb21wYXQpLlxuY29uc3QgRU1BSUw6IHJlYWRvbmx5IElucHV0U3BlY1tdID0gW1xuICB7IGZsYWc6ICdlbWFpbCcsIGtleTogJ2VtYWlsJywgZGVzY3JpcHRpb246ICdFbmFibGUgU0VTIHRyYW5zYWN0aW9uYWwgZW1haWwgKG9uIGJ5IGRlZmF1bHQgZm9yIEFXUyknLCBib29sZWFuOiB0cnVlIH0sXG4gIHsgZmxhZzogJ25vLWVtYWlsJywga2V5OiAnbm9FbWFpbCcsIGRlc2NyaXB0aW9uOiAnU2tpcCBTRVMgKHRyYW5zYWN0aW9uYWwgZW1haWwgaXMgcHJvdmlzaW9uZWQgYnkgZGVmYXVsdCknLCBib29sZWFuOiB0cnVlIH0sXG4gIHsgZmxhZzogJ2VtYWlsLWZyb20nLCBrZXk6ICdlbWFpbEZyb20nLCBkZXNjcmlwdGlvbjogJ0Zyb20gYWRkcmVzcyAoZGVmYXVsdCBub3JlcGx5QDxkb21haW4+KScgfSxcbiAgeyBmbGFnOiAnZW1haWwtZnJvbS1uYW1lJywga2V5OiAnZW1haWxGcm9tTmFtZScsIGRlc2NyaXB0aW9uOiAnRGlzcGxheSBuYW1lIG9uIG91dGJvdW5kIGVtYWlsJyB9LFxuICB7IGZsYWc6ICdhbGVydC1lbWFpbCcsIGtleTogJ2FsZXJ0RW1haWwnLCBkZXNjcmlwdGlvbjogJ1N1YnNjcmliZSBhbiBhZGRyZXNzIHRvIHRoZSBib3VuY2UvY29tcGxhaW50IFNOUyB0b3BpYycgfSxcbiAgeyBmbGFnOiAnbm8tY3JlYXRlLXNlcy1pZGVudGl0eScsIGtleTogJ25vQ3JlYXRlU2VzSWRlbnRpdHknLCBkZXNjcmlwdGlvbjogJ1NraXAgU0VTIGlkZW50aXR5IGNyZWF0aW9uIChkb21haW4gYWxyZWFkeSB2ZXJpZmllZCknLCBib29sZWFuOiB0cnVlIH0sXG5dO1xuXG4vLyAtLS0gVGFyZ2V0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBjb25zdCBUQVJHRVRTOiBSZWFkb25seTxSZWNvcmQ8VGFyZ2V0SWQsIFRhcmdldFNwZWM+PiA9IHtcbiAgZG9ja2VyOiB7XG4gICAgaWQ6ICdkb2NrZXInLFxuICAgIGxhYmVsOiAnTG9jYWwgKERvY2tlciBDb21wb3NlKScsXG4gICAgZGlyOiAnZGVwbG95L2xvY2FsL2RvY2tlcicsXG4gICAgZW50cnlwb2ludDogJ2Jpbi9zZXR1cC5zaCcsXG4gICAgc3BhcnNlUGF0aHM6IFsnZGVwbG95L2xvY2FsL2RvY2tlciddLFxuICAgIHJlcXVpcmVkOiBbXSxcbiAgICBvcHRpb25hbDogW10sXG4gICAgcG9zdERlcGxveTogJy4vZGVwbG95L2Jpbi9pbml0LXBsYXRmb3JtLnNoIGRvY2tlcicsXG4gICAgY29zdDogJ0ZyZWUnLFxuICAgIGJlc3RGb3I6ICdEZXZlbG9wbWVudCcsXG4gICAgZGVwbG95czogJ3RoZSBwbGF0Zm9ybSBhcyBhIERvY2tlciBDb21wb3NlIHN0YWNrIOKAlCBhbiBuZ2lueCBUTFMgcHJveHksIHRoZSBBUEkgc2VydmljZXMgKHBsYXRmb3JtLCBwbHVnaW4sIHBpcGVsaW5lLCBtZXNzYWdlLCByZXBvcnRpbmcsIGNvbXBsaWFuY2UsIHF1b3RhLCBiaWxsaW5nLCBpbWFnZS1yZWdpc3RyeSksIHRoZSBmcm9udGVuZCwgYW5kIHBvc3RncmVzICsgbW9uZ28gKyByZWRpcy4gRmlyc3QgcnVuIHB1bGxzIHRoZSBnaGNyLmlvIGltYWdlcyBhbmQgZ2VuZXJhdGVzIGEgbG9jYWwgVExTIGNlcnQgKGEgZmV3IG1pbnV0ZXMpLicsXG4gICAgZGVzdHJveXM6ICdzdG9wcyBhbGwgY29udGFpbmVycyDigJQgZGF0YSB1bmRlciBkZXBsb3kvbG9jYWwvZG9ja2VyL2RhdGEgcGVyc2lzdHMgb24gZGlzayAoZGVsZXRlIGl0IG1hbnVhbGx5IGZvciBhIGNsZWFuIHNsYXRlKScsXG4gICAgLy8gTWlycm9ycyB0aGUgcHVibGlzaGVkIHBvcnRzIGluIGRlcGxveS9sb2NhbC9kb2NrZXIvZG9ja2VyLWNvbXBvc2UueW1sLlxuICAgIGhvc3RQb3J0czogW1xuICAgICAgeyBzZXJ2aWNlOiAnbmdpbngg4oCUIEhUVFBTIGdhdGV3YXkgKFVJL0FQSSknLCBwb3J0OiA4NDQzIH0sXG4gICAgICB7IHNlcnZpY2U6ICduZ2lueCDigJQgSFRUUCByZWRpcmVjdCcsIHBvcnQ6IDgwODAgfSxcbiAgICAgIHsgc2VydmljZTogJ3BnQWRtaW4gKFBvc3RncmVzIFVJKScsIHBvcnQ6IDU0ODAgfSxcbiAgICAgIHsgc2VydmljZTogJ01vbmdvIEV4cHJlc3MgKE1vbmdvIFVJKScsIHBvcnQ6IDI3MDgxIH0sXG4gICAgICB7IHNlcnZpY2U6ICdEb2NrZXIgcmVnaXN0cnknLCBwb3J0OiA1MDAwIH0sXG4gICAgICB7IHNlcnZpY2U6ICdKYWVnZXIgKHRyYWNpbmcgVUkpJywgcG9ydDogMTY2ODYgfSxcbiAgICBdLFxuICB9LFxuICBtaW5pa3ViZToge1xuICAgIGlkOiAnbWluaWt1YmUnLFxuICAgIGxhYmVsOiAnTWluaWt1YmUgKGxvY2FsIEt1YmVybmV0ZXMpJyxcbiAgICBkaXI6ICdkZXBsb3kvbG9jYWwvbWluaWt1YmUnLFxuICAgIGVudHJ5cG9pbnQ6ICdiaW4vc2V0dXAuc2gnLFxuICAgIHNwYXJzZVBhdGhzOiBbJ2RlcGxveS9sb2NhbC9taW5pa3ViZSddLFxuICAgIHJlcXVpcmVkOiBbXSxcbiAgICBvcHRpb25hbDogW10sXG4gICAgcG9zdERlcGxveTogJy4vZGVwbG95L2Jpbi9pbml0LXBsYXRmb3JtLnNoIG1pbmlrdWJlJyxcbiAgICBjb3N0OiAnRnJlZScsXG4gICAgYmVzdEZvcjogJ0xvY2FsIEt1YmVybmV0ZXMnLFxuICAgIGRlcGxveXM6ICd0aGUgcGxhdGZvcm0gb250byBhIGxvY2FsIE1pbmlrdWJlIGNsdXN0ZXIg4oCUIHRoZSBzYW1lIHNlcnZpY2VzIGFzIEt1YmVybmV0ZXMgRGVwbG95bWVudHMvU2VydmljZXMgYmVoaW5kIGFuIGluZ3Jlc3MsIHBsdXMgaW4tY2x1c3RlciBwb3N0Z3JlcyArIG1vbmdvICsgcmVkaXMuIEZpcnN0IHJ1biBwdWxscyBpbWFnZXMsIGJ1aWxkcyB0aGUgY2x1c3RlciwgYW5kIGdlbmVyYXRlcyBhIFRMUyBjZXJ0IChzZXZlcmFsIG1pbnV0ZXMpLicsXG4gICAgZGVzdHJveXM6ICdzdG9wcyB0aGUgbWluaWt1YmUgc3RhY2sg4oCUIHBlcnNpc3RlbnQgdm9sdW1lcyAoUFZDIGRhdGEpIHJlbWFpbiB1bnRpbCB0aGUgY2x1c3RlciBpcyBkZWxldGVkJyxcbiAgICAvLyBNaXJyb3JzIHRoZSBrdWJlY3RsIHBvcnQtZm9yd2FyZHMgc3RhcnRlZCBpbiBkZXBsb3kvbG9jYWwvbWluaWt1YmUvYmluL3NldHVwLnNoLlxuICAgIGhvc3RQb3J0czogW1xuICAgICAgeyBzZXJ2aWNlOiAnbmdpbngg4oCUIEhUVFBTIGdhdGV3YXkgKFVJL0FQSSknLCBwb3J0OiA4NDQzIH0sXG4gICAgICB7IHNlcnZpY2U6ICdNb25nbyBFeHByZXNzIChNb25nbyBVSSknLCBwb3J0OiA4MDgxIH0sXG4gICAgICB7IHNlcnZpY2U6ICdwZ0FkbWluIChQb3N0Z3JlcyBVSSknLCBwb3J0OiA1NDgwIH0sXG4gICAgXSxcbiAgfSxcbiAgZWMyOiB7XG4gICAgaWQ6ICdlYzInLFxuICAgIGxhYmVsOiAnQVdTIEVDMiAoc2luZ2xlIE1pbmlrdWJlIGluc3RhbmNlIGJlaGluZCBhbiBBTEIpJyxcbiAgICBkaXI6ICdkZXBsb3kvYXdzL2VjMicsXG4gICAgZW50cnlwb2ludDogJ2Jpbi9zZXR1cC5zaCcsXG4gICAgc3BhcnNlUGF0aHM6IFsnZGVwbG95L2F3cy9lYzInXSxcbiAgICByZXF1aXJlZDogW0tFWV9QQUlSLCBET01BSU4sIEhPU1RFRF9aT05FXSxcbiAgICBvcHRpb25hbDogW1JFR0lPTiwgREVQTE9ZX01PREUsIEdIQ1JfVE9LRU4sIElOU1RBTkNFX1RZUEUsIFNUQUNLX05BTUUsIEFVVE9fSU5JVCwgTk9fQVVUT19JTklULCAuLi5FTUFJTF0sXG4gICAgcG9zdERlcGxveTogJy4vZGVwbG95L2Jpbi9pbml0LXBsYXRmb3JtLnNoIGVjMiAgIyBhdXRvLXJ1bnMgb24gdGhlIGluc3RhbmNlIGJ5IGRlZmF1bHQ7IC0tbm8tYXV0by1pbml0IHRvIGRvIGl0IG1hbnVhbGx5JyxcbiAgICBjb3N0OiAnfiQxNDAtMjY1L21vJyxcbiAgICBiZXN0Rm9yOiAnRGV2IC8gc3RhZ2luZycsXG4gICAgZGVwbG95czogJ3RoZSBwbGF0Zm9ybSBvbiBhIHNpbmdsZSBFQzIgaW5zdGFuY2UgdmlhIENsb3VkRm9ybWF0aW9uIOKAlCBhIFZQQywgdGhlIGluc3RhbmNlIChydW5uaW5nIHRoZSBNaW5pa3ViZSBzdGFjayksIGFuIEFMQiwgYSBSb3V0ZSA1MyByZWNvcmQgKyBBQ00gY2VydCBmb3IgdGhlIGRvbWFpbiwgYW5kIChieSBkZWZhdWx0KSBTRVMgZW1haWwuIFRoZSBpbnN0YW5jZSBwdWxscyBpbWFnZXMgb24gZmlyc3QgYm9vdC4nLFxuICAgIGRlc3Ryb3lzOiAnREVMRVRFUyB0aGUgQ2xvdWRGb3JtYXRpb24gc3RhY2s6IHRoZSBWUEMsIEVDMiBpbnN0YW5jZSwgYW5kIGl0cyBFQlMgZGF0YSB2b2x1bWUgKGRhdGFiYXNlcywgcmVnaXN0cnksIHBsdWdpbiBidWlsZHMpLiBJcnJldmVyc2libGUuJyxcbiAgICBob3N0UG9ydHM6IFtdLCAvLyByZW1vdGUgKEFXUykg4oCUIGJpbmRzIG5vdGhpbmcgb24gdGhlIG9wZXJhdG9yJ3MgbWFjaGluZVxuICB9LFxuICBla3M6IHtcbiAgICBpZDogJ2VrcycsXG4gICAgbGFiZWw6ICdBV1MgRUtTIEF1dG8gTW9kZSAobWFuYWdlZCBLdWJlcm5ldGVzKScsXG4gICAgZGlyOiAnZGVwbG95L2F3cy9la3MnLFxuICAgIGVudHJ5cG9pbnQ6ICdiaW4vc2V0dXAuc2gnLFxuICAgIHNwYXJzZVBhdGhzOiBbJ2RlcGxveS9hd3MvZWtzJ10sXG4gICAgcmVxdWlyZWQ6IFtET01BSU4sIEhPU1RFRF9aT05FXSxcbiAgICBvcHRpb25hbDogW1JFR0lPTiwgREVQTE9ZX01PREUsIEdIQ1JfVE9LRU4sIENMVVNURVJfTkFNRSwgQVVUT19JTklULCBOT19BVVRPX0lOSVQsIC4uLkVNQUlMXSxcbiAgICBwb3N0RGVwbG95OiAnLi9kZXBsb3kvYmluL2luaXQtcGxhdGZvcm0uc2ggZWtzICAjIGF1dG8tcnVucyBhdCB0aGUgZW5kIG9mIHNldHVwLnNoIGJ5IGRlZmF1bHQ7IC0tbm8tYXV0by1pbml0IHRvIGRvIGl0IG1hbnVhbGx5JyxcbiAgICBjb3N0OiAnfiQxNTAtNDAwL21vJyxcbiAgICBiZXN0Rm9yOiAnUHJvZHVjdGlvbicsXG4gICAgZGVwbG95czogJ3RoZSBwbGF0Zm9ybSBvbiBBbWF6b24gRUtTIEF1dG8gTW9kZSDigJQgYW4gQVdTLW1hbmFnZWQgS3ViZXJuZXRlcyBjbHVzdGVyIChLYXJwZW50ZXItc2NhbGVkIEVDMiBub2RlcywgQVdTIExvYWQgQmFsYW5jZXIgQ29udHJvbGxlciwgRUJTL0VGUyBDU0kpLCB0aGUgc2FtZSBLdWJlcm5ldGVzIHdvcmtsb2FkcyBhcyB0aGUgb3RoZXIgazhzIHRhcmdldHMsIGFuIEFMQiBJbmdyZXNzICsgQUNNIGZvciB0aGUgZG9tYWluLCBhbmQgKGJ5IGRlZmF1bHQpIFNFUyBlbWFpbC4gUGx1Z2luIGJ1aWxkcyBydW4gb24gdGhlIGluLWNsdXN0ZXIgcm9vdGxlc3MgYnVpbGRraXRkIChFQzIgbm9kZXMgYWxsb3cgaXQpLicsXG4gICAgZGVzdHJveXM6ICdSdW5zIGJpbi9zaHV0ZG93bi5zaDogREVMRVRFUyB0aGUgRUtTIGNsdXN0ZXIgKyBub2RlcyAoZWtzY3RsKSwgdGhlIEVGUyBmaWxlc3lzdGVtLCBhbmQg4oCUIHdoZW4gLS1kb21haW4gaXMgc2V0IOKAlCB0aGUgQUNNIGNlcnQgKyBSb3V0ZSA1MyBhbGlhcy4gRUJTIHZvbHVtZXMgb24gdGhlIFJldGFpbiBTdG9yYWdlQ2xhc3MgYXJlIE5PVCBhdXRvLWRlbGV0ZWQgKHJlcG9ydGVkIGF0IHRoZSBlbmQpLiBJcnJldmVyc2libGUuJyxcbiAgICBob3N0UG9ydHM6IFtdLCAvLyByZW1vdGUgKEFXUykg4oCUIGJpbmRzIG5vdGhpbmcgb24gdGhlIG9wZXJhdG9yJ3MgbWFjaGluZVxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IFRBUkdFVF9JRFM6IHJlYWRvbmx5IFRhcmdldElkW10gPSBbJ2RvY2tlcicsICdtaW5pa3ViZScsICdlYzInLCAnZWtzJ107XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RhcmdldElkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgVGFyZ2V0SWQge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAoVEFSR0VUX0lEUyBhcyByZWFkb25seSBzdHJpbmdbXSkuaW5jbHVkZXModmFsdWUpO1xufVxuXG4vLyAtLS0gU3BhcnNlIGJvb3RzdHJhcCBwYXRocyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogRm9sZGVycyBldmVyeSBgLS1yZXBvYCBib290c3RyYXAgbmVlZHMgcmVnYXJkbGVzcyBvZiB0YXJnZXQ6IHRoZSBvcmNoZXN0cmF0aW9uXG4gKiBzY3JpcHRzLiBFYWNoIHRhcmdldCdzIHNldHVwLnNoICsgaW5pdC1wbGF0Zm9ybS5zaCBsaXZlIGluIC8gZHJpdmUgdGhlc2UuXG4gKiBEZWxpYmVyYXRlbHkgbWluaW1hbCDigJQgaGVhdmllciBmb2xkZXJzIChwbHVnaW5zL2NvbXBsaWFuY2Uvc2FtcGxlcykgYXJlIHB1bGxlZFxuICogaW4gb25seSB3aGVuIHRoZWlyIHBvc3QtaW5zdGFsbCBvcHRpb24gaXMgc2VsZWN0ZWQgKHNlZSBMT0FEX1NURVBTKS5cbiAqL1xuZXhwb3J0IGNvbnN0IENPTU1PTl9TUEFSU0VfUEFUSFM6IHJlYWRvbmx5IHN0cmluZ1tdID0gWydkZXBsb3kvYmluJ107XG5cbi8qKlxuICogT3B0LWluIHBvc3QtaW5zdGFsbCBsb2FkIHN0ZXBzLiBFYWNoIG1hcHMgYSBwcm92aXNpb24gYC0td2l0aC0qYCBmbGFnIHRvIHRoZVxuICogaW5pdC1wbGF0Zm9ybSBlbnYgdmFyIHRoYXQgZW5hYmxlcyBpdCBBTkQgdGhlIHJlcG8gZm9sZGVyKHMpIGl0IHJlYWRzIOKAlCBzbyB0aGVcbiAqIHNwYXJzZSBjaGVja291dCBncm93cyBleGFjdGx5IHdpdGggdGhlIHNlbGVjdGVkIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBMT0FEX1NURVBTID0gW1xuICAvLyBUaGUgcGx1Z2luIGJ1aWxkIHJlYWRzIGRlcGxveS9wbHVnaW5zL19iYXNlIEFORCBkZXBsb3kvY29kZWJ1aWxkL2Jvb3RzdHJhcC5cbiAgeyBpZDogJ3BsdWdpbnMnLCBmbGFnOiAnd2l0aFBsdWdpbnMnLCBlbnY6ICdMT0FEX1BMVUdJTlMnLCBwYXRoczogWydkZXBsb3kvcGx1Z2lucycsICdkZXBsb3kvY29kZWJ1aWxkJ10gfSxcbiAgeyBpZDogJ2NvbXBsaWFuY2UnLCBmbGFnOiAnd2l0aENvbXBsaWFuY2UnLCBlbnY6ICdMT0FEX0NPTVBMSUFOQ0UnLCBwYXRoczogWydkZXBsb3kvY29tcGxpYW5jZSddIH0sXG4gIHsgaWQ6ICdzYW1wbGVzJywgZmxhZzogJ3dpdGhTYW1wbGVzJywgZW52OiAnTE9BRF9QSVBFTElORVMnLCBwYXRoczogWydkZXBsb3kvc2FtcGxlcyddIH0sXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBMb2FkU3RlcElkID0gKHR5cGVvZiBMT0FEX1NURVBTKVtudW1iZXJdWydpZCddO1xuXG4vKipcbiAqIFRoZSBkZS1kdXBsaWNhdGVkIHNldCBvZiBzcGFyc2UgcGF0aHMgZm9yIGEgdGFyZ2V0IHBsdXMgdGhlIGVuYWJsZWQgbG9hZFxuICogc3RlcHM6IGNvbW1vbiBiYXNlIOKIqiB0YXJnZXQgZm9sZGVyKHMpIOKIqiBlYWNoIGVuYWJsZWQgc3RlcCdzIGZvbGRlcihzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwYXJzZVBhdGhzRm9yKHRhcmdldDogVGFyZ2V0SWQsIGVuYWJsZWRMb2FkSWRzOiByZWFkb25seSBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcGF0aHMgPSBuZXcgU2V0PHN0cmluZz4oQ09NTU9OX1NQQVJTRV9QQVRIUyk7XG4gIGZvciAoY29uc3QgcCBvZiBUQVJHRVRTW3RhcmdldF0uc3BhcnNlUGF0aHMpIHBhdGhzLmFkZChwKTtcbiAgZm9yIChjb25zdCBzdGVwIG9mIExPQURfU1RFUFMpIHtcbiAgICBpZiAoZW5hYmxlZExvYWRJZHMuaW5jbHVkZXMoc3RlcC5pZCkpIGZvciAoY29uc3QgcCBvZiBzdGVwLnBhdGhzKSBwYXRocy5hZGQocCk7XG4gIH1cbiAgcmV0dXJuIFsuLi5wYXRoc107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZW1ibGVSZXN1bHQge1xuICAvKiogVGhlIGV4YWN0IGNvbW1hbmQgdG8gcnVuIOKAlCBzZWNyZXRzIG1hc2tlZCBhcyBgKioqYC4gKi9cbiAgcmVhZG9ubHkgY29tbWFuZDogc3RyaW5nO1xuICAvKiogUmVxdWlyZWQgaW5wdXRzIHRoYXQgd2VyZSBub3Qgc3VwcGxpZWQuICovXG4gIHJlYWRvbmx5IG1pc3Npbmc6IHJlYWRvbmx5IElucHV0U3BlY1tdO1xufVxuXG4vKiogUE9TSVggc2luZ2xlLXF1b3RlIGEgdmFsdWUgKHdpdGggZW1iZWRkZWQtcXVvdGUgZXNjYXBpbmcpIGZvciBzYWZlIHNoZWxsIHVzZS4gKi9cbmZ1bmN0aW9uIHNoZWxsUXVvdGUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgJyR7dmFsdWUucmVwbGFjZSgvJy9nLCBcIidcXFxcJydcIil9J2A7XG59XG5cbi8qKlxuICogUXVvdGUgb25seSB3aGVuIHRoZSB2YWx1ZSB3b3VsZCBvdGhlcndpc2UgYmUgd29yZC1zcGxpdCBvciBtaXMtcGFyc2VkIGJ5IHRoZVxuICogc2hlbGwgKHdoaXRlc3BhY2Ugb3IgZW1iZWRkZWQgcXVvdGVzKS4gYGFzc2VydFNoZWxsU2FmZWAgYWxyZWFkeSByZWplY3RzIHRoZVxuICogZGFuZ2Vyb3VzIG1ldGFjaGFyYWN0ZXJzLCBzbyBzaW1wbGUgdG9rZW5zIHN0YXkgdW5xdW90ZWQgZm9yIHJlYWRhYmlsaXR5LlxuICovXG5mdW5jdGlvbiBtYXliZVNoZWxsUXVvdGUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiAvW1xccydcIl0vLnRlc3QodmFsdWUpID8gc2hlbGxRdW90ZSh2YWx1ZSkgOiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBBc3NlbWJsZSB0aGUgZGVwbG95IGNvbW1hbmQgZm9yIGEgdGFyZ2V0IGZyb20gdGhlIHByb3ZpZGVkIHBhcmFtcy4gUHVyZSBhbmRcbiAqIGRldGVybWluaXN0aWMg4oCUIG5vIHNoZWxsLCBubyBMTE0uIE1pc3NpbmcgcmVxdWlyZWQgaW5wdXRzIGFyZSByZXBvcnRlZCAobmV2ZXJcbiAqIGd1ZXNzZWQpLiBCeSBkZWZhdWx0IHNlY3JldHMgYXJlIG1hc2tlZCAoYCoqKmApIGZvciBESVNQTEFZOyBwYXNzIGBtYXNrOiBmYWxzZWBcbiAqIHRvIGJ1aWxkIHRoZSByZWFsIGNvbW1hbmQgZm9yIEVYRUNVVElPTiDigJQgdGhhdCBzdHJpbmcgbXVzdCBuZXZlciBiZSBsb2dnZWQgb3JcbiAqIHNob3duIHRvIHRoZSBtb2RlbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VtYmxlQ29tbWFuZChcbiAgdGFyZ2V0OiBUYXJnZXRTcGVjLFxuICBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBvcHRzOiB7IG1hc2s/OiBib29sZWFuIH0gPSB7fSxcbik6IEFzc2VtYmxlUmVzdWx0IHtcbiAgY29uc3QgbWFzayA9IG9wdHMubWFzayA/PyB0cnVlO1xuICBjb25zdCBwcm92aWRlZCA9IChzcGVjOiBJbnB1dFNwZWMpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCB2ID0gcGFyYW1zW3NwZWMua2V5XTtcbiAgICByZXR1cm4gdiAhPT0gdW5kZWZpbmVkICYmIHYgIT09ICcnICYmIHYgIT09IGZhbHNlO1xuICB9O1xuXG4gIGNvbnN0IG1pc3NpbmcgPSB0YXJnZXQucmVxdWlyZWQuZmlsdGVyKChzcGVjKSA9PiAhcHJvdmlkZWQoc3BlYykpO1xuXG4gIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtgY2QgJHt0YXJnZXQuZGlyfSAmJiBiYXNoICR7dGFyZ2V0LmVudHJ5cG9pbnR9YF07XG4gIGZvciAoY29uc3Qgc3BlYyBvZiBbLi4udGFyZ2V0LnJlcXVpcmVkLCAuLi50YXJnZXQub3B0aW9uYWxdKSB7XG4gICAgaWYgKCFwcm92aWRlZChzcGVjKSkgY29udGludWU7XG4gICAgaWYgKHNwZWMuYm9vbGVhbikge1xuICAgICAgcGFydHMucHVzaChgLS0ke3NwZWMuZmxhZ31gKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCByYXcgPSBTdHJpbmcocGFyYW1zW3NwZWMua2V5XSk7XG4gICAgLy8gVGhlIGFzc2VtYmxlZCBjb21tYW5kIGlzIGV4ZWN1dGVkIHZpYSBhIHNoZWxsIChydW5TY3JpcHQpLCBzbyBhIHBhcmFtXG4gICAgLy8gdmFsdWUgY2Fycnlpbmcgc2hlbGwgbWV0YWNoYXJhY3RlcnMgd291bGQgYmUgY29tbWFuZCBpbmplY3Rpb24uIFZhbGlkYXRlXG4gICAgLy8gdGhlIFJFQUwgdmFsdWUgZXZlbiB3aGVuIG1hc2tpbmcgZm9yIGRpc3BsYXkg4oCUIHRoZSBleGVjdXRlZCBjb21tYW5kIHVzZXNcbiAgICAvLyB0aGUgdW5tYXNrZWQgdmFsdWUuIFJlZGFjdCBzZWNyZXRzIHNvIHRoZSBlcnJvciBuZXZlciBlY2hvZXMgYSB0b2tlbi5cbiAgICBhc3NlcnRTaGVsbFNhZmUocmF3LCBgLS0ke3NwZWMuZmxhZ31gLCB7IHJlZGFjdFZhbHVlOiBzcGVjLnNlY3JldCB9KTtcbiAgICAvLyBhc3NlcnRTaGVsbFNhZmUgc3RpbGwgcGVybWl0cyBzcGFjZXMgYW5kIHF1b3RlcyAoZS5nLiAtLWVtYWlsLWZyb20tbmFtZVxuICAgIC8vIFwiUGlwZWxpbmUgQnVpbGRlclwiLCBvciBPJ0JyaWVuKSwgd2hpY2ggd291bGQgd29yZC1zcGxpdCB3aGVuIGVtaXR0ZWQgYmFyZTtcbiAgICAvLyBxdW90ZSB0aG9zZSBzbyB0aGUgdmFsdWUgcmVhY2hlcyB0aGUgc2NyaXB0IGFzIGEgc2luZ2xlIGFyZ3VtZW50LlxuICAgIGNvbnN0IHZhbHVlID0gc3BlYy5zZWNyZXQgJiYgbWFzayA/ICcqKionIDogbWF5YmVTaGVsbFF1b3RlKHJhdyk7XG4gICAgcGFydHMucHVzaChgLS0ke3NwZWMuZmxhZ30gJHt2YWx1ZX1gKTtcbiAgfVxuXG4gIHJldHVybiB7IGNvbW1hbmQ6IHBhcnRzLmpvaW4oJyBcXFxcXFxuICAnKSwgbWlzc2luZyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlYXJkb3duUmVzdWx0IHtcbiAgLyoqIFRoZSBleGFjdCB0ZWFyZG93biBjb21tYW5kIHRvIHJ1bi4gKi9cbiAgcmVhZG9ubHkgY29tbWFuZDogc3RyaW5nO1xuICAvKiogV2hldGhlciB0aGlzIHRlYXJkb3duIGlycmV2ZXJzaWJseSBkZXN0cm95cyBkYXRhIChBV1MgdGFyZ2V0cykuICovXG4gIHJlYWRvbmx5IGRlc3RydWN0aXZlOiBib29sZWFuO1xufVxuXG4vKiogQ2xvdWRGb3JtYXRpb24gc3RhY2sgbmFtZSB0aGUgRUMyIHNldHVwLnNoIGRlZmF1bHRzIHRvLiAqL1xuY29uc3QgREVGQVVMVF9FQzJfU1RBQ0sgPSAncGlwZWxpbmUtYnVpbGRlcic7XG4vKiogRUtTIGNsdXN0ZXIgbmFtZSBla3NjdGwgZGVmYXVsdHMgdG8uICovXG5jb25zdCBERUZBVUxUX0VLU19DTFVTVEVSID0gJ3BpcGVsaW5lLWJ1aWxkZXInO1xuXG4vKipcbiAqIEFzc2VtYmxlIHRoZSB0ZWFyZG93biBjb21tYW5kIGZvciBhIHRhcmdldC4gUHVyZSBhbmQgZGV0ZXJtaW5pc3RpYyDigJQgbWlycm9yc1xuICogYGFzc2VtYmxlQ29tbWFuZGAgZm9yIHRoZSBkZXN0cm95IHBhdGguIGxvY2FsL21pbmlrdWJlIFNUT1AgdGhlIHN0YWNrXG4gKiAobm9uLWRlc3RydWN0aXZlIOKAlCBvbi1kaXNrIC8gUFZDIGRhdGEgc3Vydml2ZXMpOyBlYzIgREVMRVRFcyBpdHMgQ2xvdWRGb3JtYXRpb25cbiAqIHN0YWNrIGFuZCBla3MgREVMRVRFcyBpdHMgY2x1c3RlciAoZWtzY3RsKSDigJQgYm90aCBpcnJldmVyc2libGUuIEVDMiBgZGVsZXRlLXN0YWNrYFxuICogYW5kIGBla3NjdGwgZGVsZXRlIGNsdXN0ZXJgIGhhdmUgbm8gbmF0aXZlIHByb21wdCwgd2hpY2ggaXMgZXhhY3RseSB3aHkgdGhlIGFnZW50J3NcbiAqIHR5cGVkLWNvbmZpcm1hdGlvbiBnYXRlIGlzIG1hbmRhdG9yeSB0aGVyZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlYXJkb3duQ29tbWFuZChcbiAgdGFyZ2V0OiBUYXJnZXRJZCxcbiAgb3B0czogeyBzdGFja05hbWU/OiBzdHJpbmc7IGNsdXN0ZXJOYW1lPzogc3RyaW5nOyByZWdpb24/OiBzdHJpbmc7IGRvbWFpbj86IHN0cmluZzsgaG9zdGVkWm9uZUlkPzogc3RyaW5nOyBhc3N1bWVZZXM/OiBib29sZWFuIH0gPSB7fSxcbik6IFRlYXJkb3duUmVzdWx0IHtcbiAgY29uc3QgcmVnaW9uID0gb3B0cy5yZWdpb24gfHwgcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTiB8fCAndXMtZWFzdC0xJztcbiAgLy8gQW55dGhpbmcgZmxvd2luZyB1bnF1b3RlZCBpbnRvIGEgc2hlbGwtZXhlY3V0ZWQgdGVhcmRvd24gY29tbWFuZCBpcyByZWplY3RlZFxuICAvLyBmb3Igc2hlbGwgbWV0YWNoYXJhY3RlcnMgKG1pcnJvcnMgYXNzZW1ibGVDb21tYW5kKS5cbiAgYXNzZXJ0U2hlbGxTYWZlKHJlZ2lvbiwgJ3JlZ2lvbicpO1xuICBpZiAob3B0cy5zdGFja05hbWUpIGFzc2VydFNoZWxsU2FmZShvcHRzLnN0YWNrTmFtZSwgJ3N0YWNrLW5hbWUnKTtcbiAgaWYgKG9wdHMuY2x1c3Rlck5hbWUpIGFzc2VydFNoZWxsU2FmZShvcHRzLmNsdXN0ZXJOYW1lLCAnY2x1c3Rlci1uYW1lJyk7XG4gIGlmIChvcHRzLmRvbWFpbikgYXNzZXJ0U2hlbGxTYWZlKG9wdHMuZG9tYWluLCAnZG9tYWluJyk7XG4gIGlmIChvcHRzLmhvc3RlZFpvbmVJZCkgYXNzZXJ0U2hlbGxTYWZlKG9wdHMuaG9zdGVkWm9uZUlkLCAnaG9zdGVkLXpvbmUtaWQnKTtcbiAgc3dpdGNoICh0YXJnZXQpIHtcbiAgICBjYXNlICdkb2NrZXInOlxuICAgICAgcmV0dXJuIHsgY29tbWFuZDogJ2NkIGRlcGxveS9sb2NhbC9kb2NrZXIgJiYgYmFzaCBiaW4vc2h1dGRvd24uc2gnLCBkZXN0cnVjdGl2ZTogZmFsc2UgfTtcbiAgICBjYXNlICdtaW5pa3ViZSc6XG4gICAgICByZXR1cm4geyBjb21tYW5kOiAnY2QgZGVwbG95L2xvY2FsL21pbmlrdWJlICYmIGJhc2ggYmluL3NodXRkb3duLnNoJywgZGVzdHJ1Y3RpdmU6IGZhbHNlIH07XG4gICAgY2FzZSAnZWMyJzoge1xuICAgICAgY29uc3Qgc3RhY2sgPSBvcHRzLnN0YWNrTmFtZSB8fCBERUZBVUxUX0VDMl9TVEFDSztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbW1hbmQ6XG4gICAgICAgICAgYGF3cyBjbG91ZGZvcm1hdGlvbiBkZWxldGUtc3RhY2sgLS1zdGFjay1uYW1lICR7c3RhY2t9IC0tcmVnaW9uICR7cmVnaW9ufSAmJiBgICtcbiAgICAgICAgICBgYXdzIGNsb3VkZm9ybWF0aW9uIHdhaXQgc3RhY2stZGVsZXRlLWNvbXBsZXRlIC0tc3RhY2stbmFtZSAke3N0YWNrfSAtLXJlZ2lvbiAke3JlZ2lvbn1gLFxuICAgICAgICBkZXN0cnVjdGl2ZTogdHJ1ZSxcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgJ2Vrcyc6IHtcbiAgICAgIC8vIGVrcyB0ZWFycyBkb3duIHZpYSBiaW4vc2h1dGRvd24uc2ggKGxpa2UgbG9jYWwvbWluaWt1YmUgdXNlIGJpbi9zaHV0ZG93bi5zaCk6XG4gICAgICAvLyBpdCBkZWxldGVzIHRoZSBjbHVzdGVyIEFORCB0aGUgcmVzb3VyY2VzIGVrc2N0bCBhbG9uZSB3b3VsZCBvcnBoYW4g4oCUIHRoZSBFRlNcbiAgICAgIC8vIGZpbGVzeXN0ZW0gYW5kLCB3aGVuIC0tZG9tYWluIGlzIGdpdmVuLCB0aGUgQUNNIGNlcnQgKyBSb3V0ZSA1MyBhbGlhcy4gVGhlXG4gICAgICAvLyBhZ2VudCdzIHR5cGVkLWNvbmZpcm1hdGlvbiBnYXRlIGFscmVhZHkgcmFuLCBzbyBwYXNzIC0teWVzIHRvIHNraXAgdGhlXG4gICAgICAvLyBzY3JpcHQncyBvd24gcHJvbXB0LlxuICAgICAgY29uc3QgY2x1c3RlciA9IG9wdHMuY2x1c3Rlck5hbWUgfHwgREVGQVVMVF9FS1NfQ0xVU1RFUjtcbiAgICAgIGxldCBjb21tYW5kID0gYGNkIGRlcGxveS9hd3MvZWtzICYmIGJhc2ggYmluL3NodXRkb3duLnNoIC0tY2x1c3Rlci1uYW1lICR7Y2x1c3Rlcn0gLS1yZWdpb24gJHtyZWdpb259YDtcbiAgICAgIGlmIChvcHRzLmRvbWFpbikgY29tbWFuZCArPSBgIC0tZG9tYWluICR7b3B0cy5kb21haW59YDtcbiAgICAgIGlmIChvcHRzLmhvc3RlZFpvbmVJZCkgY29tbWFuZCArPSBgIC0taG9zdGVkLXpvbmUtaWQgJHtvcHRzLmhvc3RlZFpvbmVJZH1gO1xuICAgICAgaWYgKG9wdHMuYXNzdW1lWWVzKSBjb21tYW5kICs9ICcgLS15ZXMnO1xuICAgICAgcmV0dXJuIHsgY29tbWFuZCwgZGVzdHJ1Y3RpdmU6IHRydWUgfTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZ2VudC90YXJnZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBc0R6RSwrRUFBK0U7QUFFL0UsTUFBTSxNQUFNLEdBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLHVEQUF1RCxFQUFFLENBQUM7QUFDbEksTUFBTSxXQUFXLEdBQWMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsNkRBQTZELEVBQUUsQ0FBQztBQUMzSixNQUFNLFVBQVUsR0FBYyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsc0VBQXNFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO0FBQzFLLE1BQU0sTUFBTSxHQUFjLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsQ0FBQztBQUN2RixNQUFNLFdBQVcsR0FBYyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsNkRBQTZELEVBQUUsQ0FBQztBQUN0SixNQUFNLFFBQVEsR0FBYyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsZ0ZBQWdGLEVBQUUsQ0FBQztBQUNoSyxNQUFNLGFBQWEsR0FBYyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsd0NBQXdDLEVBQUUsQ0FBQztBQUN2SSw0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bnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogRGV0ZXJtaW5pc3RpYyByZWdpc3RyeSBvZiBwbGF0Zm9ybSBkZXBsb3kgdGFyZ2V0cyDigJQgdGhlIHNvdXJjZSBvZiB0cnV0aCB0aGVcbiAqIGBwcm92aXNpb25gIGFkdmlzb3IgdXNlcyB0byBhc3NlbWJsZSB0aGUgRVhBQ1QgZGVwbG95IGNvbW1hbmQuIFRoZSBhZ2VudCBpcyBhXG4gKiB0aGluIHdyYXBwZXIgb3ZlciB0aGUgZXhpc3RpbmcgZGVwbG95IHNjcmlwdHM7IGl0IG5ldmVyIHJlaW1wbGVtZW50c1xuICogZGVwbG95bWVudCwgb25seSB2YWxpZGF0ZXMgaW5wdXRzIGFuZCBhc3NlbWJsZXMgdGhlIGNvbW1hbmQgdG8gcnVuLlxuICpcbiAqIEtlZXAgdGhpcyBpbiBsb2NrLXN0ZXAgd2l0aCB0aGUgZmxhZ3MgdGhlIHNjcmlwdHMgYWNjZXB0IOKAlCBldmVyeSB0YXJnZXQnc1xuICogb3BlcmF0b3IgZW50cnlwb2ludCBpcyBgYmluL3NldHVwLnNoYCAoZGVwbG95Lzx0YXJnZXQ+L2Jpbi9zZXR1cC5zaCkuXG4gKi9cblxuaW1wb3J0IHsgYXNzZXJ0U2hlbGxTYWZlLCBzaGVsbFF1b3RlIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuXG5leHBvcnQgdHlwZSBUYXJnZXRJZCA9ICdkb2NrZXInIHwgJ21pbmlrdWJlJyB8ICdlYzInIHwgJ2Vrcyc7XG5cbi8qKiBBIHNpbmdsZSBpbnB1dCB0aGUgdW5kZXJseWluZyBkZXBsb3kgc2NyaXB0IGFjY2VwdHMuICovXG5leHBvcnQgaW50ZXJmYWNlIElucHV0U3BlYyB7XG4gIC8qKiBGbGFnIG5hbWUgcGFzc2VkIHRvIHRoZSBzY3JpcHQgKHdpdGhvdXQgdGhlIGxlYWRpbmcgYC0tYCkuICovXG4gIHJlYWRvbmx5IGZsYWc6IHN0cmluZztcbiAgLyoqIEtleSBvbiB0aGUgcHJvdmlzaW9uIHBhcmFtcyBvYmplY3QuICovXG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuICAvKiogSHVtYW4gZGVzY3JpcHRpb24g4oCUIHNob3duIHdoZW4gYSByZXF1aXJlZCBpbnB1dCBpcyBtaXNzaW5nLiAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKiogU2VjcmV0IOKAlCBuZXZlciBwcmludGVkIGluIHRoZSBhc3NlbWJsZWQgY29tbWFuZCAobWFza2VkIGFzIGAqKipgKS4gKi9cbiAgcmVhZG9ubHkgc2VjcmV0PzogYm9vbGVhbjtcbiAgLyoqIEJvb2xlYW4gZmxhZyB3aXRoIG5vIHZhbHVlIChlLmcuIGAtLWVtYWlsYCkuICovXG4gIHJlYWRvbmx5IGJvb2xlYW4/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldFNwZWMge1xuICByZWFkb25seSBpZDogVGFyZ2V0SWQ7XG4gIHJlYWRvbmx5IGxhYmVsOiBzdHJpbmc7XG4gIC8qKiBEaXJlY3RvcnkgdGhlIGVudHJ5cG9pbnQgcnVucyBmcm9tIChyZWxhdGl2ZSB0byByZXBvIHJvb3QpLiAqL1xuICByZWFkb25seSBkaXI6IHN0cmluZztcbiAgLyoqIEVudHJ5cG9pbnQgc2NyaXB0IChyZWxhdGl2ZSB0byBgZGlyYCkuICovXG4gIHJlYWRvbmx5IGVudHJ5cG9pbnQ6IHN0cmluZztcbiAgLyoqIElucHV0cyB0aGUgc2NyaXB0IFJFUVVJUkVTIOKAlCB0aGUgYWR2aXNvciByZXBvcnRzIGFueSB0aGF0IGFyZSBtaXNzaW5nLiAqL1xuICByZWFkb25seSByZXF1aXJlZDogcmVhZG9ubHkgSW5wdXRTcGVjW107XG4gIC8qKiBPcHRpb25hbCBpbnB1dHMsIHBhc3NlZCB0aHJvdWdoIG9ubHkgd2hlbiBwcm92aWRlZC4gKi9cbiAgcmVhZG9ubHkgb3B0aW9uYWw6IHJlYWRvbmx5IElucHV0U3BlY1tdO1xuICAvKipcbiAgICogUmVwbyBmb2xkZXIocykgdGhpcyB0YXJnZXQncyBkZXBsb3kgbmVlZHMsIGZvciBhIHNwYXJzZSBgLS1yZXBvYCBib290c3RyYXAuXG4gICAqIENvbWJpbmVkIHdpdGggQ09NTU9OX1NQQVJTRV9QQVRIUyBhbmQgYW55IHNlbGVjdGVkIGxvYWQgc3RlcHMnIHBhdGhzLlxuICAgKi9cbiAgcmVhZG9ubHkgc3BhcnNlUGF0aHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKiogUG9zdC1kZXBsb3kgc3RlcCB0byBzdXJmYWNlIChyZWdpc3RlcnMgYWRtaW4gKyBsb2FkcyBwbHVnaW5zKS4gKi9cbiAgcmVhZG9ubHkgcG9zdERlcGxveT86IHN0cmluZztcbiAgLyoqIFJvdWdoIG1vbnRobHkgY29zdCAoZnJvbSBkb2NzKS4gKi9cbiAgcmVhZG9ubHkgY29zdDogc3RyaW5nO1xuICAvKiogT25lLWxpbmUgXCJiZXN0IGZvclwiLiAqL1xuICByZWFkb25seSBiZXN0Rm9yOiBzdHJpbmc7XG4gIC8qKiBXaGF0IHRoZSBkZXBsb3kgY3JlYXRlcyDigJQgc2hvd24gd2hlbiBkZXBsb3lpbmcgc28gXCJEZXBsb3lpbmdcIiBpc24ndCBvcGFxdWUuICovXG4gIHJlYWRvbmx5IGRlcGxveXM6IHN0cmluZztcbiAgLyoqIFdoYXQgYSB0ZWFyZG93biBvZiB0aGlzIHRhcmdldCBkZXN0cm95cyDigJQgc2hvd24gYmVmb3JlIGEgKGdhdGVkKSB0ZWFyZG93bi4gKi9cbiAgcmVhZG9ubHkgZGVzdHJveXM6IHN0cmluZztcbiAgLyoqXG4gICAqIEhvc3QgcG9ydHMgdGhlIGRlcGxveSBiaW5kcyDigJQgYSBGQUxMQkFDSyBvbmx5LiBUaGUgbGl2ZSBsaXN0IGlzIERFUklWRUQgZnJvbSB0aGVcbiAgICogY2xvbmVkIGRlcGxveSBzb3VyY2UgYXQgcnVudGltZSAocG9ydHMudHMgYGRpc2NvdmVySG9zdFBvcnRzYCk6IGxvY2FsIGZyb21cbiAgICogZG9ja2VyLWNvbXBvc2UueW1sJ3MgcHVibGlzaGVkIHBvcnRzLCBtaW5pa3ViZSBmcm9tIHNldHVwLnNoJ3MgcG9ydC1mb3J3YXJkcy4gVGhpc1xuICAgKiBzdGF0aWMgY29weSBpcyB1c2VkIG9ubHkgd2hlbiB0aGF0IHNvdXJjZSBjYW4ndCBiZSByZWFkLiBFbXB0eSBmb3IgcmVtb3RlIHRhcmdldHNcbiAgICogKGVjMi9la3MgYmluZCBub3RoaW5nIG9uIHRoZSBvcGVyYXRvcidzIG1hY2hpbmUpLlxuICAgKi9cbiAgcmVhZG9ubHkgaG9zdFBvcnRzOiByZWFkb25seSB7IHNlcnZpY2U6IHN0cmluZzsgcG9ydDogbnVtYmVyIH1bXTtcbn1cblxuLy8gLS0tIFNoYXJlZCBpbnB1dCBzcGVjcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jb25zdCBET01BSU46IElucHV0U3BlYyA9IHsgZmxhZzogJ2RvbWFpbicsIGtleTogJ2RvbWFpbicsIGRlc2NyaXB0aW9uOiAnRnVsbHktcXVhbGlmaWVkIGRvbWFpbiBuYW1lIChBTEIgQUNNIGNlcnQgKyBTRVMgREtJTSknIH07XG5jb25zdCBIT1NURURfWk9ORTogSW5wdXRTcGVjID0geyBmbGFnOiAnaG9zdGVkLXpvbmUtaWQnLCBrZXk6ICdob3N0ZWRab25lSWQnLCBkZXNjcmlwdGlvbjogJ1B1YmxpYyBSb3V0ZSA1MyBob3N0ZWQgem9uZSBJRCBhdXRob3JpdGF0aXZlIGZvciB0aGUgZG9tYWluJyB9O1xuY29uc3QgR0hDUl9UT0tFTjogSW5wdXRTcGVjID0geyBmbGFnOiAnZ2hjci10b2tlbicsIGtleTogJ2doY3JUb2tlbicsIGRlc2NyaXB0aW9uOiAnR2l0SHViIFBBVCB3aXRoIHJlYWQ6cGFja2FnZXMgKGF2b2lkcyBnaGNyLmlvIGFub255bW91cyByYXRlIGxpbWl0cyknLCBzZWNyZXQ6IHRydWUgfTtcbmNvbnN0IFJFR0lPTjogSW5wdXRTcGVjID0geyBmbGFnOiAncmVnaW9uJywga2V5OiAncmVnaW9uJywgZGVzY3JpcHRpb246ICdBV1MgcmVnaW9uJyB9O1xuY29uc3QgREVQTE9ZX01PREU6IElucHV0U3BlYyA9IHsgZmxhZzogJ2RlcGxveS1tb2RlJywga2V5OiAnZGVwbG95TW9kZScsIGRlc2NyaXB0aW9uOiAncHVibGljIChpbnRlcm5ldC1mYWNpbmcgQUxCKSBvciBwcml2YXRlIChpbnRlcm5hbCwgZGVmYXVsdCknIH07XG5jb25zdCBLRVlfUEFJUjogSW5wdXRTcGVjID0geyBmbGFnOiAna2V5LXBhaXInLCBrZXk6ICdrZXlQYWlyJywgZGVzY3JpcHRpb246ICdFQzIga2V5IHBhaXIgaW4gdGhlIHJlZ2lvbiAoYnJlYWstZ2xhc3Mgc2VyaWFsIGNvbnNvbGU7IHJvdXRpbmUgYWNjZXNzIGlzIFNTTSknIH07XG5jb25zdCBJTlNUQU5DRV9UWVBFOiBJbnB1dFNwZWMgPSB7IGZsYWc6ICdpbnN0YW5jZS10eXBlJywga2V5OiAnaW5zdGFuY2VUeXBlJywgZGVzY3JpcHRpb246ICdFQzIgaW5zdGFuY2UgdHlwZSAoZGVmYXVsdCB0My4yeGxhcmdlKScgfTtcbi8vIGVjMiBkZXBsb3kvdGVhcmRvd24gc3RhY2sgbmFtZSAoQ2xvdWRGb3JtYXRpb24pLiBUaGUgYHN0YWNrTmFtZWAgcGFyYW0ga2V5IGlzIGFsc28gcmV1c2VkXG4vLyBieSB0aGUgdGVhcmRvd24gcGF0aCBhcyB0aGUgcmVzb3VyY2UgaWRlbnRpZmllciAoZWMyIHN0YWNrIC8gZWtzIGNsdXN0ZXIgbmFtZSkuXG5jb25zdCBTVEFDS19OQU1FOiBJbnB1dFNwZWMgPSB7IGZsYWc6ICdzdGFjay1uYW1lJywga2V5OiAnc3RhY2tOYW1lJywgZGVzY3JpcHRpb246ICdDbG91ZEZvcm1hdGlvbiBzdGFjayBuYW1lIChkZWZhdWx0IHBpcGVsaW5lLWJ1aWxkZXIpIOKAlCBzZXQgdG8gcnVuIGEgc2Vjb25kIGVjMiBlbnZpcm9ubWVudCcgfTtcbi8vIGVrcyBjbHVzdGVyIG5hbWUgKGVrc2N0bCkuIFNldCB0byBydW4gYSBzZWNvbmQgRUtTIGVudmlyb25tZW50IGluIG9uZSBhY2NvdW50LlxuY29uc3QgQ0xVU1RFUl9OQU1FOiBJbnB1dFNwZWMgPSB7IGZsYWc6ICdjbHVzdGVyLW5hbWUnLCBrZXk6ICdjbHVzdGVyTmFtZScsIGRlc2NyaXB0aW9uOiAnRUtTIGNsdXN0ZXIgbmFtZSAoZGVmYXVsdCBwaXBlbGluZS1idWlsZGVyKScgfTtcbi8vIEF1dG8taW5pdCBpcyBPTiBCWSBERUZBVUxUIG9uIHRoZSBBV1MgdGFyZ2V0cyAoZWMyICsgZWtzIHNldHVwLnNoIGRlZmF1bHQgQVVUT19JTklUPXRydWUpLFxuLy8gc28gYC0tbm8tYXV0by1pbml0YCBpcyB0aGUgbG9hZC1iZWFyaW5nIG9wdC1vdXQgYW5kIGAtLWF1dG8taW5pdGAgaXMgYSBuby1vcCByZWFmZmlybSDigJRcbi8vIG1pcnJvcnMgLS1lbWFpbC8tLW5vLWVtYWlsLiBlYzIgc2VsZi1pbml0cyBvbiB0aGUgaW5zdGFuY2Ugb24gZmlyc3QgYm9vdDsgZWtzIHNlbGYtaW5pdHMgaW5cbi8vIHNldHVwLnNoJ3MgZmluYWwgcGhhc2UgKG92ZXIgYSBrdWJlY3RsIHBvcnQtZm9yd2FyZCkuIG1pbmlrdWJlL2xvY2FsIHJ1biBpbml0IHZpYSBwcm92aXNpb24uXG4vLyBOT1RFOiBgLS1uby1hdXRvLWluaXRgJ3Mga2V5IChub0F1dG9Jbml0KSBpcyBOT1QgZGVyaXZhYmxlIGZyb20gaXRzIGZsYWcgdGhlIHdheSB0aGUgb3RoZXJcbi8vIHNwZWNzJyBrZXlzIGFyZSAoY29tbWFuZGVyIGZvbGRzIC0teC8tLW5vLXggaW50byBhIHNpbmdsZSBgeGAgb3B0aW9uKTsgcHJvdmlzaW9uLnRzIGFzc2VtYmxlc1xuLy8gYm90aCBrZXlzIGV4cGxpY2l0bHkg4oCUIHNlZSB0aGUgcGFyYW0tYXNzZW1ibHkgdGhlcmUuXG5jb25zdCBBVVRPX0lOSVQ6IElucHV0U3BlYyA9IHsgZmxhZzogJ2F1dG8taW5pdCcsIGtleTogJ2F1dG9Jbml0JywgZGVzY3JpcHRpb246ICdlYzIvZWtzOiB0aGUgZGVwbG95IHNlbGYtcnVucyBpbml0LXBsYXRmb3JtIChyZWdpc3RlciArIGFsbCBsb2Fkcykg4oCUIHRoZSBERUZBVUxUIG9uIEFXUycsIGJvb2xlYW46IHRydWUgfTtcbmNvbnN0IE5PX0FVVE9fSU5JVDogSW5wdXRTcGVjID0geyBmbGFnOiAnbm8tYXV0by1pbml0Jywga2V5OiAnbm9BdXRvSW5pdCcsIGRlc2NyaXB0aW9uOiAnZWMyL2Vrczogc2tpcCB0aGUgZGVwbG95LW1hbmFnZWQgYXV0by1pbml0IGFuZCBydW4gaW5pdC1wbGF0Zm9ybSBtYW51YWxseSBpbnN0ZWFkJywgYm9vbGVhbjogdHJ1ZSB9O1xuXG4vLyBTRVMgLyBlbWFpbCBmYW1pbHkg4oCUIHNoYXJlZCBieSBlYzIgKyBla3MuIFNFUyBpcyBwcm92aXNpb25lZCBCWSBERUZBVUxUXG4vLyBvbiBBV1MgZGVwbG95czsgYC0tbm8tZW1haWxgIGlzIHRoZSBvcHQtb3V0IChgLS1lbWFpbGAgaXMgYSBoYXJtbGVzcyBuby1vcCBrZXB0XG4vLyBmb3IgYmFjay1jb21wYXQpLlxuY29uc3QgRU1BSUw6IHJlYWRvbmx5IElucHV0U3BlY1tdID0gW1xuICB7IGZsYWc6ICdlbWFpbCcsIGtleTogJ2VtYWlsJywgZGVzY3JpcHRpb246ICdFbmFibGUgU0VTIHRyYW5zYWN0aW9uYWwgZW1haWwgKG9uIGJ5IGRlZmF1bHQgZm9yIEFXUyknLCBib29sZWFuOiB0cnVlIH0sXG4gIHsgZmxhZzogJ25vLWVtYWlsJywga2V5OiAnbm9FbWFpbCcsIGRlc2NyaXB0aW9uOiAnU2tpcCBTRVMgKHRyYW5zYWN0aW9uYWwgZW1haWwgaXMgcHJvdmlzaW9uZWQgYnkgZGVmYXVsdCknLCBib29sZWFuOiB0cnVlIH0sXG4gIHsgZmxhZzogJ2VtYWlsLWZyb20nLCBrZXk6ICdlbWFpbEZyb20nLCBkZXNjcmlwdGlvbjogJ0Zyb20gYWRkcmVzcyAoZGVmYXVsdCBub3JlcGx5QDxkb21haW4+KScgfSxcbiAgeyBmbGFnOiAnZW1haWwtZnJvbS1uYW1lJywga2V5OiAnZW1haWxGcm9tTmFtZScsIGRlc2NyaXB0aW9uOiAnRGlzcGxheSBuYW1lIG9uIG91dGJvdW5kIGVtYWlsJyB9LFxuICB7IGZsYWc6ICdhbGVydC1lbWFpbCcsIGtleTogJ2FsZXJ0RW1haWwnLCBkZXNjcmlwdGlvbjogJ1N1YnNjcmliZSBhbiBhZGRyZXNzIHRvIHRoZSBib3VuY2UvY29tcGxhaW50IFNOUyB0b3BpYycgfSxcbiAgeyBmbGFnOiAnbm8tY3JlYXRlLXNlcy1pZGVudGl0eScsIGtleTogJ25vQ3JlYXRlU2VzSWRlbnRpdHknLCBkZXNjcmlwdGlvbjogJ1NraXAgU0VTIGlkZW50aXR5IGNyZWF0aW9uIChkb21haW4gYWxyZWFkeSB2ZXJpZmllZCknLCBib29sZWFuOiB0cnVlIH0sXG5dO1xuXG4vLyAtLS0gVGFyZ2V0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBjb25zdCBUQVJHRVRTOiBSZWFkb25seTxSZWNvcmQ8VGFyZ2V0SWQsIFRhcmdldFNwZWM+PiA9IHtcbiAgZG9ja2VyOiB7XG4gICAgaWQ6ICdkb2NrZXInLFxuICAgIGxhYmVsOiAnTG9jYWwgKERvY2tlciBDb21wb3NlKScsXG4gICAgZGlyOiAnZGVwbG95L2xvY2FsL2RvY2tlcicsXG4gICAgZW50cnlwb2ludDogJ2Jpbi9zZXR1cC5zaCcsXG4gICAgc3BhcnNlUGF0aHM6IFsnZGVwbG95L2xvY2FsL2RvY2tlciddLFxuICAgIHJlcXVpcmVkOiBbXSxcbiAgICBvcHRpb25hbDogW10sXG4gICAgcG9zdERlcGxveTogJy4vZGVwbG95L2Jpbi9pbml0LXBsYXRmb3JtLnNoIGRvY2tlcicsXG4gICAgY29zdDogJ0ZyZWUnLFxuICAgIGJlc3RGb3I6ICdEZXZlbG9wbWVudCcsXG4gICAgZGVwbG95czogJ3RoZSBwbGF0Zm9ybSBhcyBhIERvY2tlciBDb21wb3NlIHN0YWNrIOKAlCBhbiBuZ2lueCBUTFMgcHJveHksIHRoZSBBUEkgc2VydmljZXMgKHBsYXRmb3JtLCBwbHVnaW4sIHBpcGVsaW5lLCBtZXNzYWdlLCByZXBvcnRpbmcsIGNvbXBsaWFuY2UsIHF1b3RhLCBiaWxsaW5nLCBpbWFnZS1yZWdpc3RyeSksIHRoZSBmcm9udGVuZCwgYW5kIHBvc3RncmVzICsgbW9uZ28gKyByZWRpcy4gRmlyc3QgcnVuIHB1bGxzIHRoZSBnaGNyLmlvIGltYWdlcyBhbmQgZ2VuZXJhdGVzIGEgbG9jYWwgVExTIGNlcnQgKGEgZmV3IG1pbnV0ZXMpLicsXG4gICAgZGVzdHJveXM6ICdzdG9wcyBhbGwgY29udGFpbmVycyDigJQgZGF0YSB1bmRlciBkZXBsb3kvbG9jYWwvZG9ja2VyL2RhdGEgcGVyc2lzdHMgb24gZGlzayAoZGVsZXRlIGl0IG1hbnVhbGx5IGZvciBhIGNsZWFuIHNsYXRlKScsXG4gICAgLy8gTWlycm9ycyB0aGUgcHVibGlzaGVkIHBvcnRzIGluIGRlcGxveS9sb2NhbC9kb2NrZXIvZG9ja2VyLWNvbXBvc2UueW1sLlxuICAgIGhvc3RQb3J0czogW1xuICAgICAgeyBzZXJ2aWNlOiAnbmdpbngg4oCUIEhUVFBTIGdhdGV3YXkgKFVJL0FQSSknLCBwb3J0OiA4NDQzIH0sXG4gICAgICB7IHNlcnZpY2U6ICduZ2lueCDigJQgSFRUUCByZWRpcmVjdCcsIHBvcnQ6IDgwODAgfSxcbiAgICAgIHsgc2VydmljZTogJ3BnQWRtaW4gKFBvc3RncmVzIFVJKScsIHBvcnQ6IDU0ODAgfSxcbiAgICAgIHsgc2VydmljZTogJ01vbmdvIEV4cHJlc3MgKE1vbmdvIFVJKScsIHBvcnQ6IDI3MDgxIH0sXG4gICAgICB7IHNlcnZpY2U6ICdEb2NrZXIgcmVnaXN0cnknLCBwb3J0OiA1MDAwIH0sXG4gICAgICB7IHNlcnZpY2U6ICdKYWVnZXIgKHRyYWNpbmcgVUkpJywgcG9ydDogMTY2ODYgfSxcbiAgICBdLFxuICB9LFxuICBtaW5pa3ViZToge1xuICAgIGlkOiAnbWluaWt1YmUnLFxuICAgIGxhYmVsOiAnTWluaWt1YmUgKGxvY2FsIEt1YmVybmV0ZXMpJyxcbiAgICBkaXI6ICdkZXBsb3kvbG9jYWwvbWluaWt1YmUnLFxuICAgIGVudHJ5cG9pbnQ6ICdiaW4vc2V0dXAuc2gnLFxuICAgIHNwYXJzZVBhdGhzOiBbJ2RlcGxveS9sb2NhbC9taW5pa3ViZSddLFxuICAgIHJlcXVpcmVkOiBbXSxcbiAgICBvcHRpb25hbDogW10sXG4gICAgcG9zdERlcGxveTogJy4vZGVwbG95L2Jpbi9pbml0LXBsYXRmb3JtLnNoIG1pbmlrdWJlJyxcbiAgICBjb3N0OiAnRnJlZScsXG4gICAgYmVzdEZvcjogJ0xvY2FsIEt1YmVybmV0ZXMnLFxuICAgIGRlcGxveXM6ICd0aGUgcGxhdGZvcm0gb250byBhIGxvY2FsIE1pbmlrdWJlIGNsdXN0ZXIg4oCUIHRoZSBzYW1lIHNlcnZpY2VzIGFzIEt1YmVybmV0ZXMgRGVwbG95bWVudHMvU2VydmljZXMgYmVoaW5kIGFuIGluZ3Jlc3MsIHBsdXMgaW4tY2x1c3RlciBwb3N0Z3JlcyArIG1vbmdvICsgcmVkaXMuIEZpcnN0IHJ1biBwdWxscyBpbWFnZXMsIGJ1aWxkcyB0aGUgY2x1c3RlciwgYW5kIGdlbmVyYXRlcyBhIFRMUyBjZXJ0IChzZXZlcmFsIG1pbnV0ZXMpLicsXG4gICAgZGVzdHJveXM6ICdzdG9wcyB0aGUgbWluaWt1YmUgc3RhY2sg4oCUIHBlcnNpc3RlbnQgdm9sdW1lcyAoUFZDIGRhdGEpIHJlbWFpbiB1bnRpbCB0aGUgY2x1c3RlciBpcyBkZWxldGVkJyxcbiAgICAvLyBNaXJyb3JzIHRoZSBrdWJlY3RsIHBvcnQtZm9yd2FyZHMgc3RhcnRlZCBpbiBkZXBsb3kvbG9jYWwvbWluaWt1YmUvYmluL3NldHVwLnNoLlxuICAgIGhvc3RQb3J0czogW1xuICAgICAgeyBzZXJ2aWNlOiAnbmdpbngg4oCUIEhUVFBTIGdhdGV3YXkgKFVJL0FQSSknLCBwb3J0OiA4NDQzIH0sXG4gICAgICB7IHNlcnZpY2U6ICdNb25nbyBFeHByZXNzIChNb25nbyBVSSknLCBwb3J0OiA4MDgxIH0sXG4gICAgICB7IHNlcnZpY2U6ICdwZ0FkbWluIChQb3N0Z3JlcyBVSSknLCBwb3J0OiA1NDgwIH0sXG4gICAgXSxcbiAgfSxcbiAgZWMyOiB7XG4gICAgaWQ6ICdlYzInLFxuICAgIGxhYmVsOiAnQVdTIEVDMiAoc2luZ2xlIE1pbmlrdWJlIGluc3RhbmNlIGJlaGluZCBhbiBBTEIpJyxcbiAgICBkaXI6ICdkZXBsb3kvYXdzL2VjMicsXG4gICAgZW50cnlwb2ludDogJ2Jpbi9zZXR1cC5zaCcsXG4gICAgc3BhcnNlUGF0aHM6IFsnZGVwbG95L2F3cy9lYzInXSxcbiAgICByZXF1aXJlZDogW0tFWV9QQUlSLCBET01BSU4sIEhPU1RFRF9aT05FXSxcbiAgICBvcHRpb25hbDogW1JFR0lPTiwgREVQTE9ZX01PREUsIEdIQ1JfVE9LRU4sIElOU1RBTkNFX1RZUEUsIFNUQUNLX05BTUUsIEFVVE9fSU5JVCwgTk9fQVVUT19JTklULCAuLi5FTUFJTF0sXG4gICAgcG9zdERlcGxveTogJy4vZGVwbG95L2Jpbi9pbml0LXBsYXRmb3JtLnNoIGVjMiAgIyBhdXRvLXJ1bnMgb24gdGhlIGluc3RhbmNlIGJ5IGRlZmF1bHQ7IC0tbm8tYXV0by1pbml0IHRvIGRvIGl0IG1hbnVhbGx5JyxcbiAgICBjb3N0OiAnfiQxNDAtMjY1L21vJyxcbiAgICBiZXN0Rm9yOiAnRGV2IC8gc3RhZ2luZycsXG4gICAgZGVwbG95czogJ3RoZSBwbGF0Zm9ybSBvbiBhIHNpbmdsZSBFQzIgaW5zdGFuY2UgdmlhIENsb3VkRm9ybWF0aW9uIOKAlCBhIFZQQywgdGhlIGluc3RhbmNlIChydW5uaW5nIHRoZSBNaW5pa3ViZSBzdGFjayksIGFuIEFMQiwgYSBSb3V0ZSA1MyByZWNvcmQgKyBBQ00gY2VydCBmb3IgdGhlIGRvbWFpbiwgYW5kIChieSBkZWZhdWx0KSBTRVMgZW1haWwuIFRoZSBpbnN0YW5jZSBwdWxscyBpbWFnZXMgb24gZmlyc3QgYm9vdC4nLFxuICAgIGRlc3Ryb3lzOiAnREVMRVRFUyB0aGUgQ2xvdWRGb3JtYXRpb24gc3RhY2s6IHRoZSBWUEMsIEVDMiBpbnN0YW5jZSwgYW5kIGl0cyBFQlMgZGF0YSB2b2x1bWUgKGRhdGFiYXNlcywgcmVnaXN0cnksIHBsdWdpbiBidWlsZHMpLiBJcnJldmVyc2libGUuJyxcbiAgICBob3N0UG9ydHM6IFtdLCAvLyByZW1vdGUgKEFXUykg4oCUIGJpbmRzIG5vdGhpbmcgb24gdGhlIG9wZXJhdG9yJ3MgbWFjaGluZVxuICB9LFxuICBla3M6IHtcbiAgICBpZDogJ2VrcycsXG4gICAgbGFiZWw6ICdBV1MgRUtTIEF1dG8gTW9kZSAobWFuYWdlZCBLdWJlcm5ldGVzKScsXG4gICAgZGlyOiAnZGVwbG95L2F3cy9la3MnLFxuICAgIGVudHJ5cG9pbnQ6ICdiaW4vc2V0dXAuc2gnLFxuICAgIHNwYXJzZVBhdGhzOiBbJ2RlcGxveS9hd3MvZWtzJ10sXG4gICAgcmVxdWlyZWQ6IFtET01BSU4sIEhPU1RFRF9aT05FXSxcbiAgICBvcHRpb25hbDogW1JFR0lPTiwgREVQTE9ZX01PREUsIEdIQ1JfVE9LRU4sIENMVVNURVJfTkFNRSwgQVVUT19JTklULCBOT19BVVRPX0lOSVQsIC4uLkVNQUlMXSxcbiAgICBwb3N0RGVwbG95OiAnLi9kZXBsb3kvYmluL2luaXQtcGxhdGZvcm0uc2ggZWtzICAjIGF1dG8tcnVucyBhdCB0aGUgZW5kIG9mIHNldHVwLnNoIGJ5IGRlZmF1bHQ7IC0tbm8tYXV0by1pbml0IHRvIGRvIGl0IG1hbnVhbGx5JyxcbiAgICBjb3N0OiAnfiQxNTAtNDAwL21vJyxcbiAgICBiZXN0Rm9yOiAnUHJvZHVjdGlvbicsXG4gICAgZGVwbG95czogJ3RoZSBwbGF0Zm9ybSBvbiBBbWF6b24gRUtTIEF1dG8gTW9kZSDigJQgYW4gQVdTLW1hbmFnZWQgS3ViZXJuZXRlcyBjbHVzdGVyIChLYXJwZW50ZXItc2NhbGVkIEVDMiBub2RlcywgQVdTIExvYWQgQmFsYW5jZXIgQ29udHJvbGxlciwgRUJTL0VGUyBDU0kpLCB0aGUgc2FtZSBLdWJlcm5ldGVzIHdvcmtsb2FkcyBhcyB0aGUgb3RoZXIgazhzIHRhcmdldHMsIGFuIEFMQiBJbmdyZXNzICsgQUNNIGZvciB0aGUgZG9tYWluLCBhbmQgKGJ5IGRlZmF1bHQpIFNFUyBlbWFpbC4gUGx1Z2luIGJ1aWxkcyBydW4gb24gdGhlIGluLWNsdXN0ZXIgcm9vdGxlc3MgYnVpbGRraXRkIChFQzIgbm9kZXMgYWxsb3cgaXQpLicsXG4gICAgZGVzdHJveXM6ICdSdW5zIGJpbi9zaHV0ZG93bi5zaDogREVMRVRFUyB0aGUgRUtTIGNsdXN0ZXIgKyBub2RlcyAoZWtzY3RsKSwgdGhlIEVGUyBmaWxlc3lzdGVtLCBhbmQg4oCUIHdoZW4gLS1kb21haW4gaXMgc2V0IOKAlCB0aGUgQUNNIGNlcnQgKyBSb3V0ZSA1MyBhbGlhcy4gRUJTIHZvbHVtZXMgb24gdGhlIFJldGFpbiBTdG9yYWdlQ2xhc3MgYXJlIE5PVCBhdXRvLWRlbGV0ZWQgKHJlcG9ydGVkIGF0IHRoZSBlbmQpLiBJcnJldmVyc2libGUuJyxcbiAgICBob3N0UG9ydHM6IFtdLCAvLyByZW1vdGUgKEFXUykg4oCUIGJpbmRzIG5vdGhpbmcgb24gdGhlIG9wZXJhdG9yJ3MgbWFjaGluZVxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IFRBUkdFVF9JRFM6IHJlYWRvbmx5IFRhcmdldElkW10gPSBbJ2RvY2tlcicsICdtaW5pa3ViZScsICdlYzInLCAnZWtzJ107XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RhcmdldElkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgVGFyZ2V0SWQge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAoVEFSR0VUX0lEUyBhcyByZWFkb25seSBzdHJpbmdbXSkuaW5jbHVkZXModmFsdWUpO1xufVxuXG4vLyAtLS0gU3BhcnNlIGJvb3RzdHJhcCBwYXRocyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogRm9sZGVycyBldmVyeSBgLS1yZXBvYCBib290c3RyYXAgbmVlZHMgcmVnYXJkbGVzcyBvZiB0YXJnZXQ6IHRoZSBvcmNoZXN0cmF0aW9uXG4gKiBzY3JpcHRzLiBFYWNoIHRhcmdldCdzIHNldHVwLnNoICsgaW5pdC1wbGF0Zm9ybS5zaCBsaXZlIGluIC8gZHJpdmUgdGhlc2UuXG4gKiBEZWxpYmVyYXRlbHkgbWluaW1hbCDigJQgaGVhdmllciBmb2xkZXJzIChwbHVnaW5zL2NvbXBsaWFuY2Uvc2FtcGxlcykgYXJlIHB1bGxlZFxuICogaW4gb25seSB3aGVuIHRoZWlyIHBvc3QtaW5zdGFsbCBvcHRpb24gaXMgc2VsZWN0ZWQgKHNlZSBMT0FEX1NURVBTKS5cbiAqL1xuZXhwb3J0IGNvbnN0IENPTU1PTl9TUEFSU0VfUEFUSFM6IHJlYWRvbmx5IHN0cmluZ1tdID0gWydkZXBsb3kvYmluJ107XG5cbi8qKlxuICogT3B0LWluIHBvc3QtaW5zdGFsbCBsb2FkIHN0ZXBzLiBFYWNoIG1hcHMgYSBwcm92aXNpb24gYC0td2l0aC0qYCBmbGFnIHRvIHRoZVxuICogaW5pdC1wbGF0Zm9ybSBlbnYgdmFyIHRoYXQgZW5hYmxlcyBpdCBBTkQgdGhlIHJlcG8gZm9sZGVyKHMpIGl0IHJlYWRzIOKAlCBzbyB0aGVcbiAqIHNwYXJzZSBjaGVja291dCBncm93cyBleGFjdGx5IHdpdGggdGhlIHNlbGVjdGVkIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBMT0FEX1NURVBTID0gW1xuICAvLyBUaGUgcGx1Z2luIGJ1aWxkIHJlYWRzIGRlcGxveS9wbHVnaW5zL19iYXNlIEFORCBkZXBsb3kvY29kZWJ1aWxkL2Jvb3RzdHJhcC5cbiAgeyBpZDogJ3BsdWdpbnMnLCBmbGFnOiAnd2l0aFBsdWdpbnMnLCBlbnY6ICdMT0FEX1BMVUdJTlMnLCBwYXRoczogWydkZXBsb3kvcGx1Z2lucycsICdkZXBsb3kvY29kZWJ1aWxkJ10gfSxcbiAgeyBpZDogJ2NvbXBsaWFuY2UnLCBmbGFnOiAnd2l0aENvbXBsaWFuY2UnLCBlbnY6ICdMT0FEX0NPTVBMSUFOQ0UnLCBwYXRoczogWydkZXBsb3kvY29tcGxpYW5jZSddIH0sXG4gIHsgaWQ6ICdzYW1wbGVzJywgZmxhZzogJ3dpdGhTYW1wbGVzJywgZW52OiAnTE9BRF9QSVBFTElORVMnLCBwYXRoczogWydkZXBsb3kvc2FtcGxlcyddIH0sXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBMb2FkU3RlcElkID0gKHR5cGVvZiBMT0FEX1NURVBTKVtudW1iZXJdWydpZCddO1xuXG4vKipcbiAqIFRoZSBkZS1kdXBsaWNhdGVkIHNldCBvZiBzcGFyc2UgcGF0aHMgZm9yIGEgdGFyZ2V0IHBsdXMgdGhlIGVuYWJsZWQgbG9hZFxuICogc3RlcHM6IGNvbW1vbiBiYXNlIOKIqiB0YXJnZXQgZm9sZGVyKHMpIOKIqiBlYWNoIGVuYWJsZWQgc3RlcCdzIGZvbGRlcihzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwYXJzZVBhdGhzRm9yKHRhcmdldDogVGFyZ2V0SWQsIGVuYWJsZWRMb2FkSWRzOiByZWFkb25seSBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcGF0aHMgPSBuZXcgU2V0PHN0cmluZz4oQ09NTU9OX1NQQVJTRV9QQVRIUyk7XG4gIGZvciAoY29uc3QgcCBvZiBUQVJHRVRTW3RhcmdldF0uc3BhcnNlUGF0aHMpIHBhdGhzLmFkZChwKTtcbiAgZm9yIChjb25zdCBzdGVwIG9mIExPQURfU1RFUFMpIHtcbiAgICBpZiAoZW5hYmxlZExvYWRJZHMuaW5jbHVkZXMoc3RlcC5pZCkpIGZvciAoY29uc3QgcCBvZiBzdGVwLnBhdGhzKSBwYXRocy5hZGQocCk7XG4gIH1cbiAgcmV0dXJuIFsuLi5wYXRoc107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZW1ibGVSZXN1bHQge1xuICAvKiogVGhlIGV4YWN0IGNvbW1hbmQgdG8gcnVuIOKAlCBzZWNyZXRzIG1hc2tlZCBhcyBgKioqYC4gKi9cbiAgcmVhZG9ubHkgY29tbWFuZDogc3RyaW5nO1xuICAvKiogUmVxdWlyZWQgaW5wdXRzIHRoYXQgd2VyZSBub3Qgc3VwcGxpZWQuICovXG4gIHJlYWRvbmx5IG1pc3Npbmc6IHJlYWRvbmx5IElucHV0U3BlY1tdO1xufVxuXG4vKipcbiAqIFF1b3RlIG9ubHkgd2hlbiB0aGUgdmFsdWUgd291bGQgb3RoZXJ3aXNlIGJlIHdvcmQtc3BsaXQgb3IgbWlzLXBhcnNlZCBieSB0aGVcbiAqIHNoZWxsICh3aGl0ZXNwYWNlIG9yIGVtYmVkZGVkIHF1b3RlcykuIGBhc3NlcnRTaGVsbFNhZmVgIGFscmVhZHkgcmVqZWN0cyB0aGVcbiAqIGRhbmdlcm91cyBtZXRhY2hhcmFjdGVycywgc28gc2ltcGxlIHRva2VucyBzdGF5IHVucXVvdGVkIGZvciByZWFkYWJpbGl0eS5cbiAqL1xuZnVuY3Rpb24gbWF5YmVTaGVsbFF1b3RlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gL1tcXHMnXCJdLy50ZXN0KHZhbHVlKSA/IHNoZWxsUXVvdGUodmFsdWUpIDogdmFsdWU7XG59XG5cbi8qKlxuICogQXNzZW1ibGUgdGhlIGRlcGxveSBjb21tYW5kIGZvciBhIHRhcmdldCBmcm9tIHRoZSBwcm92aWRlZCBwYXJhbXMuIFB1cmUgYW5kXG4gKiBkZXRlcm1pbmlzdGljIOKAlCBubyBzaGVsbCwgbm8gTExNLiBNaXNzaW5nIHJlcXVpcmVkIGlucHV0cyBhcmUgcmVwb3J0ZWQgKG5ldmVyXG4gKiBndWVzc2VkKS4gQnkgZGVmYXVsdCBzZWNyZXRzIGFyZSBtYXNrZWQgKGAqKipgKSBmb3IgRElTUExBWTsgcGFzcyBgbWFzazogZmFsc2VgXG4gKiB0byBidWlsZCB0aGUgcmVhbCBjb21tYW5kIGZvciBFWEVDVVRJT04g4oCUIHRoYXQgc3RyaW5nIG11c3QgbmV2ZXIgYmUgbG9nZ2VkIG9yXG4gKiBzaG93biB0byB0aGUgbW9kZWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlbWJsZUNvbW1hbmQoXG4gIHRhcmdldDogVGFyZ2V0U3BlYyxcbiAgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgb3B0czogeyBtYXNrPzogYm9vbGVhbiB9ID0ge30sXG4pOiBBc3NlbWJsZVJlc3VsdCB7XG4gIGNvbnN0IG1hc2sgPSBvcHRzLm1hc2sgPz8gdHJ1ZTtcbiAgY29uc3QgcHJvdmlkZWQgPSAoc3BlYzogSW5wdXRTcGVjKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgdiA9IHBhcmFtc1tzcGVjLmtleV07XG4gICAgcmV0dXJuIHYgIT09IHVuZGVmaW5lZCAmJiB2ICE9PSAnJyAmJiB2ICE9PSBmYWxzZTtcbiAgfTtcblxuICBjb25zdCBtaXNzaW5nID0gdGFyZ2V0LnJlcXVpcmVkLmZpbHRlcigoc3BlYykgPT4gIXByb3ZpZGVkKHNwZWMpKTtcblxuICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbYGNkICR7dGFyZ2V0LmRpcn0gJiYgYmFzaCAke3RhcmdldC5lbnRyeXBvaW50fWBdO1xuICBmb3IgKGNvbnN0IHNwZWMgb2YgWy4uLnRhcmdldC5yZXF1aXJlZCwgLi4udGFyZ2V0Lm9wdGlvbmFsXSkge1xuICAgIGlmICghcHJvdmlkZWQoc3BlYykpIGNvbnRpbnVlO1xuICAgIGlmIChzcGVjLmJvb2xlYW4pIHtcbiAgICAgIHBhcnRzLnB1c2goYC0tJHtzcGVjLmZsYWd9YCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgcmF3ID0gU3RyaW5nKHBhcmFtc1tzcGVjLmtleV0pO1xuICAgIC8vIFRoZSBhc3NlbWJsZWQgY29tbWFuZCBpcyBleGVjdXRlZCB2aWEgYSBzaGVsbCAocnVuU2NyaXB0KSwgc28gYSBwYXJhbVxuICAgIC8vIHZhbHVlIGNhcnJ5aW5nIHNoZWxsIG1ldGFjaGFyYWN0ZXJzIHdvdWxkIGJlIGNvbW1hbmQgaW5qZWN0aW9uLiBWYWxpZGF0ZVxuICAgIC8vIHRoZSBSRUFMIHZhbHVlIGV2ZW4gd2hlbiBtYXNraW5nIGZvciBkaXNwbGF5IOKAlCB0aGUgZXhlY3V0ZWQgY29tbWFuZCB1c2VzXG4gICAgLy8gdGhlIHVubWFza2VkIHZhbHVlLiBSZWRhY3Qgc2VjcmV0cyBzbyB0aGUgZXJyb3IgbmV2ZXIgZWNob2VzIGEgdG9rZW4uXG4gICAgYXNzZXJ0U2hlbGxTYWZlKHJhdywgYC0tJHtzcGVjLmZsYWd9YCwgeyByZWRhY3RWYWx1ZTogc3BlYy5zZWNyZXQgfSk7XG4gICAgLy8gYXNzZXJ0U2hlbGxTYWZlIHN0aWxsIHBlcm1pdHMgc3BhY2VzIGFuZCBxdW90ZXMgKGUuZy4gLS1lbWFpbC1mcm9tLW5hbWVcbiAgICAvLyBcIlBpcGVsaW5lIEJ1aWxkZXJcIiwgb3IgTydCcmllbiksIHdoaWNoIHdvdWxkIHdvcmQtc3BsaXQgd2hlbiBlbWl0dGVkIGJhcmU7XG4gICAgLy8gcXVvdGUgdGhvc2Ugc28gdGhlIHZhbHVlIHJlYWNoZXMgdGhlIHNjcmlwdCBhcyBhIHNpbmdsZSBhcmd1bWVudC5cbiAgICBjb25zdCB2YWx1ZSA9IHNwZWMuc2VjcmV0ICYmIG1hc2sgPyAnKioqJyA6IG1heWJlU2hlbGxRdW90ZShyYXcpO1xuICAgIHBhcnRzLnB1c2goYC0tJHtzcGVjLmZsYWd9ICR7dmFsdWV9YCk7XG4gIH1cblxuICByZXR1cm4geyBjb21tYW5kOiBwYXJ0cy5qb2luKCcgXFxcXFxcbiAgJyksIG1pc3NpbmcgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZWFyZG93blJlc3VsdCB7XG4gIC8qKiBUaGUgZXhhY3QgdGVhcmRvd24gY29tbWFuZCB0byBydW4uICovXG4gIHJlYWRvbmx5IGNvbW1hbmQ6IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgdGhpcyB0ZWFyZG93biBpcnJldmVyc2libHkgZGVzdHJveXMgZGF0YSAoQVdTIHRhcmdldHMpLiAqL1xuICByZWFkb25seSBkZXN0cnVjdGl2ZTogYm9vbGVhbjtcbn1cblxuLyoqIENsb3VkRm9ybWF0aW9uIHN0YWNrIG5hbWUgdGhlIEVDMiBzZXR1cC5zaCBkZWZhdWx0cyB0by4gKi9cbmNvbnN0IERFRkFVTFRfRUMyX1NUQUNLID0gJ3BpcGVsaW5lLWJ1aWxkZXInO1xuLyoqIEVLUyBjbHVzdGVyIG5hbWUgZWtzY3RsIGRlZmF1bHRzIHRvLiAqL1xuY29uc3QgREVGQVVMVF9FS1NfQ0xVU1RFUiA9ICdwaXBlbGluZS1idWlsZGVyJztcblxuLyoqXG4gKiBBc3NlbWJsZSB0aGUgdGVhcmRvd24gY29tbWFuZCBmb3IgYSB0YXJnZXQuIFB1cmUgYW5kIGRldGVybWluaXN0aWMg4oCUIG1pcnJvcnNcbiAqIGBhc3NlbWJsZUNvbW1hbmRgIGZvciB0aGUgZGVzdHJveSBwYXRoLiBsb2NhbC9taW5pa3ViZSBTVE9QIHRoZSBzdGFja1xuICogKG5vbi1kZXN0cnVjdGl2ZSDigJQgb24tZGlzayAvIFBWQyBkYXRhIHN1cnZpdmVzKTsgZWMyIERFTEVURXMgaXRzIENsb3VkRm9ybWF0aW9uXG4gKiBzdGFjayBhbmQgZWtzIERFTEVURXMgaXRzIGNsdXN0ZXIgKGVrc2N0bCkg4oCUIGJvdGggaXJyZXZlcnNpYmxlLiBFQzIgYGRlbGV0ZS1zdGFja2BcbiAqIGFuZCBgZWtzY3RsIGRlbGV0ZSBjbHVzdGVyYCBoYXZlIG5vIG5hdGl2ZSBwcm9tcHQsIHdoaWNoIGlzIGV4YWN0bHkgd2h5IHRoZSBhZ2VudCdzXG4gKiB0eXBlZC1jb25maXJtYXRpb24gZ2F0ZSBpcyBtYW5kYXRvcnkgdGhlcmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZWFyZG93bkNvbW1hbmQoXG4gIHRhcmdldDogVGFyZ2V0SWQsXG4gIG9wdHM6IHsgc3RhY2tOYW1lPzogc3RyaW5nOyBjbHVzdGVyTmFtZT86IHN0cmluZzsgcmVnaW9uPzogc3RyaW5nOyBkb21haW4/OiBzdHJpbmc7IGhvc3RlZFpvbmVJZD86IHN0cmluZzsgYXNzdW1lWWVzPzogYm9vbGVhbiB9ID0ge30sXG4pOiBUZWFyZG93blJlc3VsdCB7XG4gIGNvbnN0IHJlZ2lvbiA9IG9wdHMucmVnaW9uIHx8IHByb2Nlc3MuZW52LkFXU19SRUdJT04gfHwgJ3VzLWVhc3QtMSc7XG4gIC8vIEFueXRoaW5nIGZsb3dpbmcgdW5xdW90ZWQgaW50byBhIHNoZWxsLWV4ZWN1dGVkIHRlYXJkb3duIGNvbW1hbmQgaXMgcmVqZWN0ZWRcbiAgLy8gZm9yIHNoZWxsIG1ldGFjaGFyYWN0ZXJzIChtaXJyb3JzIGFzc2VtYmxlQ29tbWFuZCkuXG4gIGFzc2VydFNoZWxsU2FmZShyZWdpb24sICdyZWdpb24nKTtcbiAgaWYgKG9wdHMuc3RhY2tOYW1lKSBhc3NlcnRTaGVsbFNhZmUob3B0cy5zdGFja05hbWUsICdzdGFjay1uYW1lJyk7XG4gIGlmIChvcHRzLmNsdXN0ZXJOYW1lKSBhc3NlcnRTaGVsbFNhZmUob3B0cy5jbHVzdGVyTmFtZSwgJ2NsdXN0ZXItbmFtZScpO1xuICBpZiAob3B0cy5kb21haW4pIGFzc2VydFNoZWxsU2FmZShvcHRzLmRvbWFpbiwgJ2RvbWFpbicpO1xuICBpZiAob3B0cy5ob3N0ZWRab25lSWQpIGFzc2VydFNoZWxsU2FmZShvcHRzLmhvc3RlZFpvbmVJZCwgJ2hvc3RlZC16b25lLWlkJyk7XG4gIHN3aXRjaCAodGFyZ2V0KSB7XG4gICAgY2FzZSAnZG9ja2VyJzpcbiAgICAgIHJldHVybiB7IGNvbW1hbmQ6ICdjZCBkZXBsb3kvbG9jYWwvZG9ja2VyICYmIGJhc2ggYmluL3NodXRkb3duLnNoJywgZGVzdHJ1Y3RpdmU6IGZhbHNlIH07XG4gICAgY2FzZSAnbWluaWt1YmUnOlxuICAgICAgcmV0dXJuIHsgY29tbWFuZDogJ2NkIGRlcGxveS9sb2NhbC9taW5pa3ViZSAmJiBiYXNoIGJpbi9zaHV0ZG93bi5zaCcsIGRlc3RydWN0aXZlOiBmYWxzZSB9O1xuICAgIGNhc2UgJ2VjMic6IHtcbiAgICAgIGNvbnN0IHN0YWNrID0gb3B0cy5zdGFja05hbWUgfHwgREVGQVVMVF9FQzJfU1RBQ0s7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb21tYW5kOlxuICAgICAgICAgIGBhd3MgY2xvdWRmb3JtYXRpb24gZGVsZXRlLXN0YWNrIC0tc3RhY2stbmFtZSAke3N0YWNrfSAtLXJlZ2lvbiAke3JlZ2lvbn0gJiYgYCArXG4gICAgICAgICAgYGF3cyBjbG91ZGZvcm1hdGlvbiB3YWl0IHN0YWNrLWRlbGV0ZS1jb21wbGV0ZSAtLXN0YWNrLW5hbWUgJHtzdGFja30gLS1yZWdpb24gJHtyZWdpb259YCxcbiAgICAgICAgZGVzdHJ1Y3RpdmU6IHRydWUsXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlICdla3MnOiB7XG4gICAgICAvLyBla3MgdGVhcnMgZG93biB2aWEgYmluL3NodXRkb3duLnNoIChsaWtlIGxvY2FsL21pbmlrdWJlIHVzZSBiaW4vc2h1dGRvd24uc2gpOlxuICAgICAgLy8gaXQgZGVsZXRlcyB0aGUgY2x1c3RlciBBTkQgdGhlIHJlc291cmNlcyBla3NjdGwgYWxvbmUgd291bGQgb3JwaGFuIOKAlCB0aGUgRUZTXG4gICAgICAvLyBmaWxlc3lzdGVtIGFuZCwgd2hlbiAtLWRvbWFpbiBpcyBnaXZlbiwgdGhlIEFDTSBjZXJ0ICsgUm91dGUgNTMgYWxpYXMuIFRoZVxuICAgICAgLy8gYWdlbnQncyB0eXBlZC1jb25maXJtYXRpb24gZ2F0ZSBhbHJlYWR5IHJhbiwgc28gcGFzcyAtLXllcyB0byBza2lwIHRoZVxuICAgICAgLy8gc2NyaXB0J3Mgb3duIHByb21wdC5cbiAgICAgIGNvbnN0IGNsdXN0ZXIgPSBvcHRzLmNsdXN0ZXJOYW1lIHx8IERFRkFVTFRfRUtTX0NMVVNURVI7XG4gICAgICBsZXQgY29tbWFuZCA9IGBjZCBkZXBsb3kvYXdzL2VrcyAmJiBiYXNoIGJpbi9zaHV0ZG93bi5zaCAtLWNsdXN0ZXItbmFtZSAke2NsdXN0ZXJ9IC0tcmVnaW9uICR7cmVnaW9ufWA7XG4gICAgICBpZiAob3B0cy5kb21haW4pIGNvbW1hbmQgKz0gYCAtLWRvbWFpbiAke29wdHMuZG9tYWlufWA7XG4gICAgICBpZiAob3B0cy5ob3N0ZWRab25lSWQpIGNvbW1hbmQgKz0gYCAtLWhvc3RlZC16b25lLWlkICR7b3B0cy5ob3N0ZWRab25lSWR9YDtcbiAgICAgIGlmIChvcHRzLmFzc3VtZVllcykgY29tbWFuZCArPSAnIC0teWVzJztcbiAgICAgIHJldHVybiB7IGNvbW1hbmQsIGRlc3RydWN0aXZlOiB0cnVlIH07XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsL5C"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyL5C"}
@@ -153,8 +153,11 @@ export function login(program) {
153
153
  }
154
154
  }
155
155
  catch (error) {
156
+ // Key the failure to (identifier, url) like the check/success/no-token
157
+ // paths — a bad-password 401 throws to here, so keying it to the shared
158
+ // default bucket meant brute-force attempts never accrued toward lockout.
156
159
  if (!isRefresh)
157
- recordAuthFailure();
160
+ recordAuthFailure(identifier, options.url);
158
161
  // Provide a clear failure message for auth errors
159
162
  if (axios.isAxiosError(error)) {
160
163
  const status = error.response?.status;
@@ -178,4 +181,4 @@ export function login(program) {
178
181
  }
179
182
  });
180
183
  }
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvbG9naW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXBHLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFhNUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFnQjtJQUNwQyxPQUFPO1NBQ0osT0FBTyxDQUFDLE9BQU8sQ0FBQztTQUNoQixXQUFXLENBQUMsNERBQTRELENBQUM7U0FDekUsTUFBTSxDQUFDLCtCQUErQixFQUFFLG1CQUFtQixDQUFDO1NBQzVELE1BQU0sQ0FBQywyQkFBMkIsRUFBRSxVQUFVLENBQUM7U0FDL0MsTUFBTSxDQUFDLDBCQUEwQixFQUFFLGtEQUFrRCxDQUFDO1NBQ3RGLE1BQU0sQ0FBQyxlQUFlLEVBQUUsK0NBQStDLENBQUM7U0FDeEUsTUFB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LENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7Z0JBQ3RDLE1BQU0sT0FBTyxHQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBNkIsRUFBRSxPQUFPLENBQUM7Z0JBRXhFLFVBQVUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLFNBQVMsRUFBRTtvQkFDNUQsTUFBTSxFQUFFLE1BQU0sSUFBSSxhQUFhO29CQUMvQixHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7aUJBQ2hDLENBQUMsQ0FBQztnQkFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMzQyxDQUFDO1lBRUQsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsY0FBYyxFQUFFO2dCQUM3QyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUs7Z0JBQzNCLElBQUksRUFBRSxJQUFJO2dCQUNWLE9BQU8sRUFBRTtvQkFDUCxPQUFPLEVBQUUsT0FBTztvQkFDaEIsV0FBVztvQkFDWCxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7b0JBQzlCLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztpQkFDakI7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7IGdlbmVyYXRlRXhlY3V0aW9uSWQsIFRJTUVPVVRTIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBwcmludERlYnVnLCBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgY2hlY2tBdXRoUmF0ZUxpbWl0LCByZWNvcmRBdXRoRmFpbHVyZSwgcmVjb3JkQXV0aFN1Y2Nlc3MgfSBmcm9tICcuLi91dGlscy9yYXRlLWxpbWl0ZXIuanMnO1xuXG5jb25zdCB7IGJvbGQsIGN5YW4sIGdyZWVuLCBtYWdlbnRhIH0gPSBwaWNvO1xuXG4vKipcbiAqIEV4cGVjdGVkIHNoYXBlIG9mIHRoZSBsb2dpbi9yZWZyZXNoIEFQSSByZXNwb25zZS5cbiAqL1xuaW50ZXJmYWNlIExvZ2luUmVzcG9uc2Uge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBkYXRhOiB7XG4gICAgYWNjZXNzVG9rZW46IHN0cmluZztcbiAgICByZWZyZXNoVG9rZW46IHN0cmluZztcbiAgfTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBsb2dpbmAgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBBdXRoZW50aWNhdGVzIGFnYWluc3QgdGhlIHBsYXRmb3JtIEFQSSBhbmQgcHJpbnRzIGFuIGV4cG9ydCBzdGF0ZW1lbnRcbiAqIGZvciBgUExBVEZPUk1fVE9LRU5gIG9uIHN1Y2Nlc3MuICBEb2VzIE5PVCByZXF1aXJlIGBQTEFURk9STV9UT0tFTmBcbiAqIHRvIGJlIHNldCBiZWZvcmVoYW5kICh1bmxpa2Ugb3RoZXIgY29tbWFuZHMpLlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHJvb3QgQ29tbWFuZGVyIHByb2dyYW0gaW5zdGFuY2UgdG8gYXR0YWNoIHRoZSBjb21tYW5kIHRvLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBiYXNoXG4gKiBwaXBlbGluZS1tYW5hZ2VyIGxvZ2luIC0taWRlbnRpZmllciBhZG1pbkBleGFtcGxlLmNvbSAtLXBhc3N3b3JkIHNlY3JldFxuICogcGlwZWxpbmUtbWFuYWdlciBsb2dpbiAtdSBhZG1pbkBleGFtcGxlLmNvbSAtcCBzZWNyZXRcbiAqIHBpcGVsaW5lLW1hbmFnZXIgbG9naW4gLXUgYWRtaW5AZXhhbXBsZS5jb20gLXAgc2VjcmV0IC0tdXJsIGh0dHBzOi8vbXlob3N0Ojg0NDNcbiAqIGV2YWwgJChwaXBlbGluZS1tYW5hZ2VyIGxvZ2luIC11IGFkbWluQGV4YW1wbGUuY29tIC1wIHNlY3JldCAtLXF1aWV0KVxuICogcGlwZWxpbmUtbWFuYWdlciBsb2dpbiAtLXJlZnJlc2ggPHJlZnJlc2gtdG9rZW4+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvZ2luKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKCdsb2dpbicpXG4gICAgLmRlc2NyaXB0aW9uKCdBdXRoZW50aWNhdGUgd2l0aCB0aGUgcGxhdGZvcm0gYW5kIG9idGFpbiBhIFBMQVRGT1JNX1RPS0VOJylcbiAgICAub3B0aW9uKCctdSwgLS1pZGVudGlmaWVyIDxpZGVudGlmaWVyPicsICdVc2VybmFtZSBvciBlbWFpbCcpXG4gICAgLm9wdGlvbignLXAsIC0tcGFzc3dvcmQgPHBhc3N3b3JkPicsICdQYXNzd29yZCcpXG4gICAgLm9wdGlvbignLS1yZWZyZXNoIDxyZWZyZXNoVG9rZW4+JywgJ1VzZSBhIHJlZnJlc2ggdG9rZW4gaW5zdGVhZCBvZiBsb2dpbiBjcmVkZW50aWFscycpXG4gICAgLm9wdGlvbignLS1vcmcgPG9yZ0lkPicsICdTd2l0Y2ggdG8gYSBzcGVjaWZpYyBvcmdhbml6YXRpb24gYWZ0ZXIgbG9naW4nKVxuICAgIC5vcHRpb24oJy0tdXJsIDx1cmw+JywgJ1BsYXRmb3JtIGJhc2UgVVJMJywgcHJvY2Vzcy5lbnYuUExBVEZPUk1fQkFTRV9VUkwgfHwgJ2h0dHBzOi8vbG9jYWxob3N0Ojg0NDMnKVxuICAgIC5vcHRpb24oJy0tdmVyaWZ5LXNzbCcsICdFbmFibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1uby12ZXJpZnktc3NsJywgJ0Rpc2FibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1xdWlldCcsICdPbmx5IHByaW50IHRoZSBleHBvcnQgc3RhdGVtZW50ICh1c2VmdWwgZm9yIGV2YWwpJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IGdlbmVyYXRlRXhlY3V0aW9uSWQoKTtcbiAgICAgIGNvbnN0IGlzUmVmcmVzaCA9ICEhb3B0aW9ucy5yZWZyZXNoO1xuXG4gICAgICAvLyBDcmVkZW50aWFscyBtYXkgY29tZSBmcm9tIGZsYWdzIE9SIHRoZSBQTEFURk9STV9JREVOVElGSUVSL1BMQVRGT1JNX1BBU1NXT1JEXG4gICAgICAvLyBlbnYgdmFycyAoc28gdGhlIHBhc3N3b3JkIG5lZWQgbm90IGFwcGVhciBpbiBzaGVsbCBoaXN0b3J5IC8gYHBzYCkuXG4gICAgICBjb25zdCBpZGVudGlmaWVyID0gb3B0aW9ucy5pZGVudGlmaWVyIHx8IHByb2Nlc3MuZW52LlBMQVRGT1JNX0lERU5USUZJRVI7XG4gICAgICBjb25zdCBwYXNzd29yZCA9IG9wdGlvbnMucGFzc3dvcmQgfHwgcHJvY2Vzcy5lbnYuUExBVEZPUk1fUEFTU1dPUkQ7XG5cbiAgICAgIHRyeSB7XG5cbiAgICAgICAgLy8gVmFsaWRhdGUgcmVxdWlyZWQgb3B0aW9uc1xuICAgICAgICBpZiAoIWlzUmVmcmVzaCAmJiAoIWlkZW50aWZpZXIgfHwgIXBhc3N3b3JkKSkge1xuICAgICAgICAgIHByaW50RXJyb3IoJ0xvZ2luIHJlcXVpcmVzIC0taWRlbnRpZmllciBhbmQgLS1wYXNzd29yZCAob3IgUExBVEZPUk1fSURFTlRJRklFUi9QTEFURk9STV9QQVNTV09SRCBlbnYpLCBvciAtLXJlZnJlc2ggPHRva2VuPicpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1JlZnJlc2ggJiYgb3B0aW9ucy5wYXNzd29yZCkge1xuICAgICAgICAgIHByaW50V2FybmluZygnUGFzc2luZyAtLXBhc3N3b3JkIG9uIHRoZSBjb21tYW5kIGxpbmUgY2FuIGV4cG9zZSBpdCB2aWEgc2hlbGwgaGlzdG9yeTsgcHJlZmVyIHRoZSBQTEFURk9STV9QQVNTV09SRCBlbnYgdmFyLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmF0ZSBsaW1pdGluZyDigJQgcHJldmVudCBicnV0ZSBmb3JjZSAobG9naW4gb25seSlcbiAgICAgICAgaWYgKCFpc1JlZnJlc2gpIHtcbiAgICAgICAgICBjb25zdCByYXRlTGltaXRNc2cgPSBjaGVja0F1dGhSYXRlTGltaXQoaWRlbnRpZmllciwgb3B0aW9ucy51cmwpO1xuICAgICAgICAgIGlmIChyYXRlTGltaXRNc2cpIHtcbiAgICAgICAgICAgIHByaW50RXJyb3IocmF0ZUxpbWl0TXNnKTtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVpZXQgPSBvcHRpb25zLnF1aWV0ID8/IGZhbHNlO1xuXG4gICAgICAgIGlmICghcXVpZXQpIHtcbiAgICAgICAgICBwcmludFNlY3Rpb24oaXNSZWZyZXNoID8gJ1Rva2VuIFJlZnJlc2gnIDogJ0xvZ2luJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coYCR7bWFnZW50YShgW0VYRS0ke2V4ZWN1dGlvbklkfV1gKX0gJHtjeWFuKGJvbGQoaXNSZWZyZXNoID8gJ1Rva2VuIFJlZnJlc2gnIDogJ1BsYXRmb3JtIEF1dGhlbnRpY2F0aW9uJykpfWApO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgICBwcmludEluZm8oaXNSZWZyZXNoID8gJ1JlZnJlc2hpbmcgYWNjZXNzIHRva2VuJyA6ICdBdXRoZW50aWNhdGluZycsIHtcbiAgICAgICAgICAgIC4uLihpZGVudGlmaWVyID8geyBpZGVudGlmaWVyIH0gOiB7fSksXG4gICAgICAgICAgICB1cmw6IG9wdGlvbnMudXJsLFxuICAgICAgICAgICAgdmVyaWZ5U3NsOiBvcHRpb25zLnZlcmlmeVNzbCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGh0dHBzQWdlbnQgPSBuZXcgaHR0cHMuQWdlbnQoe1xuICAgICAgICAgIHJlamVjdFVuYXV0aG9yaXplZDogb3B0aW9ucy52ZXJpZnlTc2wgPz8gdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IHRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKGlzUmVmcmVzaCkge1xuICAgICAgICAgIGNvbnN0IHJlZnJlc2hVcmwgPSBgJHtvcHRpb25zLnVybH0vYXBpL2F1dGgvcmVmcmVzaGA7XG4gICAgICAgICAgcHJpbnREZWJ1ZygnUE9TVCcsIHsgdXJsOiByZWZyZXNoVXJsIH0pO1xuXG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0PExvZ2luUmVzcG9uc2U+KFxuICAgICAgICAgICAgcmVmcmVzaFVybCxcbiAgICAgICAgICAgIHsgcmVmcmVzaFRva2VuOiBvcHRpb25zLnJlZnJlc2ggfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgICAgICAgICAgIGh0dHBzQWdlbnQsXG4gICAgICAgICAgICAgIHRpbWVvdXQ6IFRJTUVPVVRTLkhUVFBfUkVRVUVTVCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHRva2VuID0gcmVzcG9uc2UuZGF0YT8uZGF0YT8uYWNjZXNzVG9rZW47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbG9naW5VcmwgPSBgJHtvcHRpb25zLnVybH0vYXBpL2F1dGgvbG9naW5gO1xuICAgICAgICAgIHByaW50RGVidWcoJ1BPU1QnLCB7IHVybDogbG9naW5VcmwgfSk7XG5cbiAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLnBvc3Q8TG9naW5SZXNwb25zZT4oXG4gICAgICAgICAgICBsb2dpblVybCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgcGFzc3dvcmQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICAgICAgICAgICAgaHR0cHNBZ2VudCxcbiAgICAgICAgICAgICAgdGltZW91dDogVElNRU9VVFMuSFRUUF9SRVFVRVNULFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdG9rZW4gPSByZXNwb25zZS5kYXRhPy5kYXRhPy5hY2Nlc3NUb2tlbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgICBpZiAoIWlzUmVmcmVzaCkgcmVjb3JkQXV0aEZhaWx1cmUoaWRlbnRpZmllciwgb3B0aW9ucy51cmwpO1xuICAgICAgICAgIHByaW50RXJyb3IoYCR7aXNSZWZyZXNoID8gJ1Rva2VuIHJlZnJlc2gnIDogJ0xvZ2luJ30gZmFpbGVkOiBubyBhY2Nlc3MgdG9rZW4gaW4gcmVzcG9uc2VgKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoRVJST1JfQ09ERVMuQVVUSEVOVElDQVRJT04pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc1JlZnJlc2gpIHJlY29yZEF1dGhTdWNjZXNzKGlkZW50aWZpZXIsIG9wdGlvbnMudXJsKTtcblxuICAgICAgICAvLyBTd2l0Y2ggdG8gYSBzcGVjaWZpYyBvcmdhbml6YXRpb24gaWYgLS1vcmcgaXMgcHJvdmlkZWRcbiAgICAgICAgaWYgKG9wdGlvbnMub3JnKSB7XG4gICAgICAgICAgaWYgKCFxdWlldCkge1xuICAgICAgICAgICAgcHJpbnRJbmZvKCdTd2l0Y2hpbmcgdG8gb3JnYW5pemF0aW9uJywgeyBvcmdJZDogb3B0aW9ucy5vcmcgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc3dpdGNoVXJsID0gYCR7b3B0aW9ucy51cmx9L2FwaS9hdXRoL3N3aXRjaC1vcmdgO1xuICAgICAgICAgIHByaW50RGVidWcoJ1BPU1QnLCB7IHVybDogc3dpdGNoVXJsIH0pO1xuXG4gICAgICAgICAgY29uc3Qgc3dpdGNoUmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0PExvZ2luUmVzcG9uc2U+KFxuICAgICAgICAgICAgc3dpdGNoVXJsLFxuICAgICAgICAgICAgeyBvcmdhbml6YXRpb25JZDogb3B0aW9ucy5vcmcgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaHR0cHNBZ2VudCxcbiAgICAgICAgICAgICAgdGltZW91dDogVElNRU9VVFMuSFRUUF9SRVFVRVNULFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3Qgc3dpdGNoZWRUb2tlbiA9IHN3aXRjaFJlc3BvbnNlLmRhdGE/LmRhdGE/LmFjY2Vzc1Rva2VuO1xuICAgICAgICAgIGlmICghc3dpdGNoZWRUb2tlbikge1xuICAgICAgICAgICAgcHJpbnRFcnJvcignT3JnYW5pemF0aW9uIHN3aXRjaCBmYWlsZWQ6IG5vIGFjY2VzcyB0b2tlbiBpbiByZXNwb25zZScpO1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0b2tlbiA9IHN3aXRjaGVkVG9rZW47XG5cbiAgICAgICAgICBpZiAoIXF1aWV0KSB7XG4gICAgICAgICAgICBwcmludFN1Y2Nlc3MoYFN3aXRjaGVkIHRvIG9yZ2FuaXphdGlvbiAke29wdGlvbnMub3JnfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcXVpZXQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRTdWNjZXNzKGlzUmVmcmVzaCA/ICdUb2tlbiByZWZyZXNoZWQgc3VjY2Vzc2Z1bGx5JyA6ICdMb2dpbiBzdWNjZXNzZnVsJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coYGV4cG9ydCBQTEFURk9STV9UT0tFTj0ke3Rva2VufWApO1xuXG4gICAgICAgIGlmICghcXVpZXQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRJbmZvKCdUaXA6IFJ1biB0aGUgZm9sbG93aW5nIHRvIHNldCB0aGUgdG9rZW4gaW4geW91ciBzaGVsbDonKTtcbiAgICAgICAgICBjb25zdCBvcmdGbGFnID0gb3B0aW9ucy5vcmcgPyBgIC0tb3JnICR7b3B0aW9ucy5vcmd9YCA6ICcnO1xuICAgICAgICAgIGlmIChpc1JlZnJlc2gpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGdyZWVuKGAgIGV2YWwgJChwaXBlbGluZS1tYW5hZ2VyIGxvZ2luIC0tcmVmcmVzaCAnPHJlZnJlc2gtdG9rZW4+JyR7b3JnRmxhZ30gLS1xdWlldClgKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGdyZWVuKGAgIGV2YWwgJChwaXBlbGluZS1tYW5hZ2VyIGxvZ2luIC11ICR7aWRlbnRpZmllcn0gLXAgJyoqKicke29yZ0ZsYWd9IC0tcXVpZXQpYCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKCFpc1JlZnJlc2gpIHJlY29yZEF1dGhGYWlsdXJlKCk7XG4gICAgICAgIC8vIFByb3ZpZGUgYSBjbGVhciBmYWlsdXJlIG1lc3NhZ2UgZm9yIGF1dGggZXJyb3JzXG4gICAgICAgIGlmIChheGlvcy5pc0F4aW9zRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgICAgY29uc3Qgc3RhdHVzID0gZXJyb3IucmVzcG9uc2U/LnN0YXR1cztcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gKGVycm9yLnJlc3BvbnNlPy5kYXRhIGFzIHsgbWVzc2FnZT86IHN0cmluZyB9KT8ubWVzc2FnZTtcblxuICAgICAgICAgIHByaW50RXJyb3IoYCR7aXNSZWZyZXNoID8gJ1Rva2VuIHJlZnJlc2gnIDogJ0xvZ2luJ30gZmFpbGVkYCwge1xuICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMgPz8gJ25vIHJlc3BvbnNlJyxcbiAgICAgICAgICAgIC4uLihtZXNzYWdlID8geyBtZXNzYWdlIH0gOiB7fSksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTiwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiB0cnVlLFxuICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgIGNvbW1hbmQ6ICdsb2dpbicsXG4gICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IG9wdGlvbnMuaWRlbnRpZmllcixcbiAgICAgICAgICAgIHVybDogb3B0aW9ucy51cmwsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvbG9naW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXBHLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFhNUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFnQjtJQUNwQyxPQUFPO1NBQ0osT0FBTyxDQUFDLE9BQU8sQ0FBQztTQUNoQixXQUFXLENBQUMsNERBQTRELENBQUM7U0FDekUsTUFBTSxDQUFDLCtCQUErQixFQUFFLG1CQUFtQixDQUFDO1NBQzVELE1BQU0sQ0FBQywyQkFBMkIsRUFBRSxVQUFVLENBQUM7U0FDL0MsTUFBTSxDQUFDLDBCQUEwQixFQUFFLGtEQUFrRCxDQUFDO1NBQ3RGLE1BQU0sQ0FBQyxlQUFlLEVBQUUsK0NBQStDLENBQUM7U0FDeEUsTUFB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LEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNELGtEQUFrRDtZQUNsRCxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7Z0JBQ3RDLE1BQU0sT0FBTyxHQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBNkIsRUFBRSxPQUFPLENBQUM7Z0JBRXhFLFVBQVUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLFNBQVMsRUFBRTtvQkFDNUQsTUFBTSxFQUFFLE1BQU0sSUFBSSxhQUFhO29CQUMvQixHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7aUJBQ2hDLENBQUMsQ0FBQztnQkFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMzQyxDQUFDO1lBRUQsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsY0FBYyxFQUFFO2dCQUM3QyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUs7Z0JBQzNCLElBQUksRUFBRSxJQUFJO2dCQUNWLE9BQU8sRUFBRTtvQkFDUCxPQUFPLEVBQUUsT0FBTztvQkFDaEIsV0FBVztvQkFDWCxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7b0JBQzlCLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztpQkFDakI7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7IGdlbmVyYXRlRXhlY3V0aW9uSWQsIFRJTUVPVVRTIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBwcmludERlYnVnLCBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgY2hlY2tBdXRoUmF0ZUxpbWl0LCByZWNvcmRBdXRoRmFpbHVyZSwgcmVjb3JkQXV0aFN1Y2Nlc3MgfSBmcm9tICcuLi91dGlscy9yYXRlLWxpbWl0ZXIuanMnO1xuXG5jb25zdCB7IGJvbGQsIGN5YW4sIGdyZWVuLCBtYWdlbnRhIH0gPSBwaWNvO1xuXG4vKipcbiAqIEV4cGVjdGVkIHNoYXBlIG9mIHRoZSBsb2dpbi9yZWZyZXNoIEFQSSByZXNwb25zZS5cbiAqL1xuaW50ZXJmYWNlIExvZ2luUmVzcG9uc2Uge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBkYXRhOiB7XG4gICAgYWNjZXNzVG9rZW46IHN0cmluZztcbiAgICByZWZyZXNoVG9rZW46IHN0cmluZztcbiAgfTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBsb2dpbmAgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBBdXRoZW50aWNhdGVzIGFnYWluc3QgdGhlIHBsYXRmb3JtIEFQSSBhbmQgcHJpbnRzIGFuIGV4cG9ydCBzdGF0ZW1lbnRcbiAqIGZvciBgUExBVEZPUk1fVE9LRU5gIG9uIHN1Y2Nlc3MuICBEb2VzIE5PVCByZXF1aXJlIGBQTEFURk9STV9UT0tFTmBcbiAqIHRvIGJlIHNldCBiZWZvcmVoYW5kICh1bmxpa2Ugb3RoZXIgY29tbWFuZHMpLlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHJvb3QgQ29tbWFuZGVyIHByb2dyYW0gaW5zdGFuY2UgdG8gYXR0YWNoIHRoZSBjb21tYW5kIHRvLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBiYXNoXG4gKiBwaXBlbGluZS1tYW5hZ2VyIGxvZ2luIC0taWRlbnRpZmllciBhZG1pbkBleGFtcGxlLmNvbSAtLXBhc3N3b3JkIHNlY3JldFxuICogcGlwZWxpbmUtbWFuYWdlciBsb2dpbiAtdSBhZG1pbkBleGFtcGxlLmNvbSAtcCBzZWNyZXRcbiAqIHBpcGVsaW5lLW1hbmFnZXIgbG9naW4gLXUgYWRtaW5AZXhhbXBsZS5jb20gLXAgc2VjcmV0IC0tdXJsIGh0dHBzOi8vbXlob3N0Ojg0NDNcbiAqIGV2YWwgJChwaXBlbGluZS1tYW5hZ2VyIGxvZ2luIC11IGFkbWluQGV4YW1wbGUuY29tIC1wIHNlY3JldCAtLXF1aWV0KVxuICogcGlwZWxpbmUtbWFuYWdlciBsb2dpbiAtLXJlZnJlc2ggPHJlZnJlc2gtdG9rZW4+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvZ2luKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKCdsb2dpbicpXG4gICAgLmRlc2NyaXB0aW9uKCdBdXRoZW50aWNhdGUgd2l0aCB0aGUgcGxhdGZvcm0gYW5kIG9idGFpbiBhIFBMQVRGT1JNX1RPS0VOJylcbiAgICAub3B0aW9uKCctdSwgLS1pZGVudGlmaWVyIDxpZGVudGlmaWVyPicsICdVc2VybmFtZSBvciBlbWFpbCcpXG4gICAgLm9wdGlvbignLXAsIC0tcGFzc3dvcmQgPHBhc3N3b3JkPicsICdQYXNzd29yZCcpXG4gICAgLm9wdGlvbignLS1yZWZyZXNoIDxyZWZyZXNoVG9rZW4+JywgJ1VzZSBhIHJlZnJlc2ggdG9rZW4gaW5zdGVhZCBvZiBsb2dpbiBjcmVkZW50aWFscycpXG4gICAgLm9wdGlvbignLS1vcmcgPG9yZ0lkPicsICdTd2l0Y2ggdG8gYSBzcGVjaWZpYyBvcmdhbml6YXRpb24gYWZ0ZXIgbG9naW4nKVxuICAgIC5vcHRpb24oJy0tdXJsIDx1cmw+JywgJ1BsYXRmb3JtIGJhc2UgVVJMJywgcHJvY2Vzcy5lbnYuUExBVEZPUk1fQkFTRV9VUkwgfHwgJ2h0dHBzOi8vbG9jYWxob3N0Ojg0NDMnKVxuICAgIC5vcHRpb24oJy0tdmVyaWZ5LXNzbCcsICdFbmFibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1uby12ZXJpZnktc3NsJywgJ0Rpc2FibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1xdWlldCcsICdPbmx5IHByaW50IHRoZSBleHBvcnQgc3RhdGVtZW50ICh1c2VmdWwgZm9yIGV2YWwpJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IGdlbmVyYXRlRXhlY3V0aW9uSWQoKTtcbiAgICAgIGNvbnN0IGlzUmVmcmVzaCA9ICEhb3B0aW9ucy5yZWZyZXNoO1xuXG4gICAgICAvLyBDcmVkZW50aWFscyBtYXkgY29tZSBmcm9tIGZsYWdzIE9SIHRoZSBQTEFURk9STV9JREVOVElGSUVSL1BMQVRGT1JNX1BBU1NXT1JEXG4gICAgICAvLyBlbnYgdmFycyAoc28gdGhlIHBhc3N3b3JkIG5lZWQgbm90IGFwcGVhciBpbiBzaGVsbCBoaXN0b3J5IC8gYHBzYCkuXG4gICAgICBjb25zdCBpZGVudGlmaWVyID0gb3B0aW9ucy5pZGVudGlmaWVyIHx8IHByb2Nlc3MuZW52LlBMQVRGT1JNX0lERU5USUZJRVI7XG4gICAgICBjb25zdCBwYXNzd29yZCA9IG9wdGlvbnMucGFzc3dvcmQgfHwgcHJvY2Vzcy5lbnYuUExBVEZPUk1fUEFTU1dPUkQ7XG5cbiAgICAgIHRyeSB7XG5cbiAgICAgICAgLy8gVmFsaWRhdGUgcmVxdWlyZWQgb3B0aW9uc1xuICAgICAgICBpZiAoIWlzUmVmcmVzaCAmJiAoIWlkZW50aWZpZXIgfHwgIXBhc3N3b3JkKSkge1xuICAgICAgICAgIHByaW50RXJyb3IoJ0xvZ2luIHJlcXVpcmVzIC0taWRlbnRpZmllciBhbmQgLS1wYXNzd29yZCAob3IgUExBVEZPUk1fSURFTlRJRklFUi9QTEFURk9STV9QQVNTV09SRCBlbnYpLCBvciAtLXJlZnJlc2ggPHRva2VuPicpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1JlZnJlc2ggJiYgb3B0aW9ucy5wYXNzd29yZCkge1xuICAgICAgICAgIHByaW50V2FybmluZygnUGFzc2luZyAtLXBhc3N3b3JkIG9uIHRoZSBjb21tYW5kIGxpbmUgY2FuIGV4cG9zZSBpdCB2aWEgc2hlbGwgaGlzdG9yeTsgcHJlZmVyIHRoZSBQTEFURk9STV9QQVNTV09SRCBlbnYgdmFyLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmF0ZSBsaW1pdGluZyDigJQgcHJldmVudCBicnV0ZSBmb3JjZSAobG9naW4gb25seSlcbiAgICAgICAgaWYgKCFpc1JlZnJlc2gpIHtcbiAgICAgICAgICBjb25zdCByYXRlTGltaXRNc2cgPSBjaGVja0F1dGhSYXRlTGltaXQoaWRlbnRpZmllciwgb3B0aW9ucy51cmwpO1xuICAgICAgICAgIGlmIChyYXRlTGltaXRNc2cpIHtcbiAgICAgICAgICAgIHByaW50RXJyb3IocmF0ZUxpbWl0TXNnKTtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVpZXQgPSBvcHRpb25zLnF1aWV0ID8/IGZhbHNlO1xuXG4gICAgICAgIGlmICghcXVpZXQpIHtcbiAgICAgICAgICBwcmludFNlY3Rpb24oaXNSZWZyZXNoID8gJ1Rva2VuIFJlZnJlc2gnIDogJ0xvZ2luJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coYCR7bWFnZW50YShgW0VYRS0ke2V4ZWN1dGlvbklkfV1gKX0gJHtjeWFuKGJvbGQoaXNSZWZyZXNoID8gJ1Rva2VuIFJlZnJlc2gnIDogJ1BsYXRmb3JtIEF1dGhlbnRpY2F0aW9uJykpfWApO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgICBwcmludEluZm8oaXNSZWZyZXNoID8gJ1JlZnJlc2hpbmcgYWNjZXNzIHRva2VuJyA6ICdBdXRoZW50aWNhdGluZycsIHtcbiAgICAgICAgICAgIC4uLihpZGVudGlmaWVyID8geyBpZGVudGlmaWVyIH0gOiB7fSksXG4gICAgICAgICAgICB1cmw6IG9wdGlvbnMudXJsLFxuICAgICAgICAgICAgdmVyaWZ5U3NsOiBvcHRpb25zLnZlcmlmeVNzbCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGh0dHBzQWdlbnQgPSBuZXcgaHR0cHMuQWdlbnQoe1xuICAgICAgICAgIHJlamVjdFVuYXV0aG9yaXplZDogb3B0aW9ucy52ZXJpZnlTc2wgPz8gdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IHRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKGlzUmVmcmVzaCkge1xuICAgICAgICAgIGNvbnN0IHJlZnJlc2hVcmwgPSBgJHtvcHRpb25zLnVybH0vYXBpL2F1dGgvcmVmcmVzaGA7XG4gICAgICAgICAgcHJpbnREZWJ1ZygnUE9TVCcsIHsgdXJsOiByZWZyZXNoVXJsIH0pO1xuXG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0PExvZ2luUmVzcG9uc2U+KFxuICAgICAgICAgICAgcmVmcmVzaFVybCxcbiAgICAgICAgICAgIHsgcmVmcmVzaFRva2VuOiBvcHRpb25zLnJlZnJlc2ggfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgICAgICAgICAgIGh0dHBzQWdlbnQsXG4gICAgICAgICAgICAgIHRpbWVvdXQ6IFRJTUVPVVRTLkhUVFBfUkVRVUVTVCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHRva2VuID0gcmVzcG9uc2UuZGF0YT8uZGF0YT8uYWNjZXNzVG9rZW47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbG9naW5VcmwgPSBgJHtvcHRpb25zLnVybH0vYXBpL2F1dGgvbG9naW5gO1xuICAgICAgICAgIHByaW50RGVidWcoJ1BPU1QnLCB7IHVybDogbG9naW5VcmwgfSk7XG5cbiAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLnBvc3Q8TG9naW5SZXNwb25zZT4oXG4gICAgICAgICAgICBsb2dpblVybCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgcGFzc3dvcmQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICAgICAgICAgICAgaHR0cHNBZ2VudCxcbiAgICAgICAgICAgICAgdGltZW91dDogVElNRU9VVFMuSFRUUF9SRVFVRVNULFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdG9rZW4gPSByZXNwb25zZS5kYXRhPy5kYXRhPy5hY2Nlc3NUb2tlbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgICBpZiAoIWlzUmVmcmVzaCkgcmVjb3JkQXV0aEZhaWx1cmUoaWRlbnRpZmllciwgb3B0aW9ucy51cmwpO1xuICAgICAgICAgIHByaW50RXJyb3IoYCR7aXNSZWZyZXNoID8gJ1Rva2VuIHJlZnJlc2gnIDogJ0xvZ2luJ30gZmFpbGVkOiBubyBhY2Nlc3MgdG9rZW4gaW4gcmVzcG9uc2VgKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoRVJST1JfQ09ERVMuQVVUSEVOVElDQVRJT04pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc1JlZnJlc2gpIHJlY29yZEF1dGhTdWNjZXNzKGlkZW50aWZpZXIsIG9wdGlvbnMudXJsKTtcblxuICAgICAgICAvLyBTd2l0Y2ggdG8gYSBzcGVjaWZpYyBvcmdhbml6YXRpb24gaWYgLS1vcmcgaXMgcHJvdmlkZWRcbiAgICAgICAgaWYgKG9wdGlvbnMub3JnKSB7XG4gICAgICAgICAgaWYgKCFxdWlldCkge1xuICAgICAgICAgICAgcHJpbnRJbmZvKCdTd2l0Y2hpbmcgdG8gb3JnYW5pemF0aW9uJywgeyBvcmdJZDogb3B0aW9ucy5vcmcgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc3dpdGNoVXJsID0gYCR7b3B0aW9ucy51cmx9L2FwaS9hdXRoL3N3aXRjaC1vcmdgO1xuICAgICAgICAgIHByaW50RGVidWcoJ1BPU1QnLCB7IHVybDogc3dpdGNoVXJsIH0pO1xuXG4gICAgICAgICAgY29uc3Qgc3dpdGNoUmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0PExvZ2luUmVzcG9uc2U+KFxuICAgICAgICAgICAgc3dpdGNoVXJsLFxuICAgICAgICAgICAgeyBvcmdhbml6YXRpb25JZDogb3B0aW9ucy5vcmcgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaHR0cHNBZ2VudCxcbiAgICAgICAgICAgICAgdGltZW91dDogVElNRU9VVFMuSFRUUF9SRVFVRVNULFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3Qgc3dpdGNoZWRUb2tlbiA9IHN3aXRjaFJlc3BvbnNlLmRhdGE/LmRhdGE/LmFjY2Vzc1Rva2VuO1xuICAgICAgICAgIGlmICghc3dpdGNoZWRUb2tlbikge1xuICAgICAgICAgICAgcHJpbnRFcnJvcignT3JnYW5pemF0aW9uIHN3aXRjaCBmYWlsZWQ6IG5vIGFjY2VzcyB0b2tlbiBpbiByZXNwb25zZScpO1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0b2tlbiA9IHN3aXRjaGVkVG9rZW47XG5cbiAgICAgICAgICBpZiAoIXF1aWV0KSB7XG4gICAgICAgICAgICBwcmludFN1Y2Nlc3MoYFN3aXRjaGVkIHRvIG9yZ2FuaXphdGlvbiAke29wdGlvbnMub3JnfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcXVpZXQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRTdWNjZXNzKGlzUmVmcmVzaCA/ICdUb2tlbiByZWZyZXNoZWQgc3VjY2Vzc2Z1bGx5JyA6ICdMb2dpbiBzdWNjZXNzZnVsJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coYGV4cG9ydCBQTEFURk9STV9UT0tFTj0ke3Rva2VufWApO1xuXG4gICAgICAgIGlmICghcXVpZXQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRJbmZvKCdUaXA6IFJ1biB0aGUgZm9sbG93aW5nIHRvIHNldCB0aGUgdG9rZW4gaW4geW91ciBzaGVsbDonKTtcbiAgICAgICAgICBjb25zdCBvcmdGbGFnID0gb3B0aW9ucy5vcmcgPyBgIC0tb3JnICR7b3B0aW9ucy5vcmd9YCA6ICcnO1xuICAgICAgICAgIGlmIChpc1JlZnJlc2gpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGdyZWVuKGAgIGV2YWwgJChwaXBlbGluZS1tYW5hZ2VyIGxvZ2luIC0tcmVmcmVzaCAnPHJlZnJlc2gtdG9rZW4+JyR7b3JnRmxhZ30gLS1xdWlldClgKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGdyZWVuKGAgIGV2YWwgJChwaXBlbGluZS1tYW5hZ2VyIGxvZ2luIC11ICR7aWRlbnRpZmllcn0gLXAgJyoqKicke29yZ0ZsYWd9IC0tcXVpZXQpYCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gS2V5IHRoZSBmYWlsdXJlIHRvIChpZGVudGlmaWVyLCB1cmwpIGxpa2UgdGhlIGNoZWNrL3N1Y2Nlc3Mvbm8tdG9rZW5cbiAgICAgICAgLy8gcGF0aHMg4oCUIGEgYmFkLXBhc3N3b3JkIDQwMSB0aHJvd3MgdG8gaGVyZSwgc28ga2V5aW5nIGl0IHRvIHRoZSBzaGFyZWRcbiAgICAgICAgLy8gZGVmYXVsdCBidWNrZXQgbWVhbnQgYnJ1dGUtZm9yY2UgYXR0ZW1wdHMgbmV2ZXIgYWNjcnVlZCB0b3dhcmQgbG9ja291dC5cbiAgICAgICAgaWYgKCFpc1JlZnJlc2gpIHJlY29yZEF1dGhGYWlsdXJlKGlkZW50aWZpZXIsIG9wdGlvbnMudXJsKTtcbiAgICAgICAgLy8gUHJvdmlkZSBhIGNsZWFyIGZhaWx1cmUgbWVzc2FnZSBmb3IgYXV0aCBlcnJvcnNcbiAgICAgICAgaWYgKGF4aW9zLmlzQXhpb3NFcnJvcihlcnJvcikpIHtcbiAgICAgICAgICBjb25zdCBzdGF0dXMgPSBlcnJvci5yZXNwb25zZT8uc3RhdHVzO1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAoZXJyb3IucmVzcG9uc2U/LmRhdGEgYXMgeyBtZXNzYWdlPzogc3RyaW5nIH0pPy5tZXNzYWdlO1xuXG4gICAgICAgICAgcHJpbnRFcnJvcihgJHtpc1JlZnJlc2ggPyAnVG9rZW4gcmVmcmVzaCcgOiAnTG9naW4nfSBmYWlsZWRgLCB7XG4gICAgICAgICAgICBzdGF0dXM6IHN0YXR1cyA/PyAnbm8gcmVzcG9uc2UnLFxuICAgICAgICAgICAgLi4uKG1lc3NhZ2UgPyB7IG1lc3NhZ2UgfSA6IHt9KSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoRVJST1JfQ09ERVMuQVVUSEVOVElDQVRJT04pO1xuICAgICAgICB9XG5cbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OLCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgY29tbWFuZDogJ2xvZ2luJyxcbiAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgaWRlbnRpZmllcjogb3B0aW9ucy5pZGVudGlmaWVyLFxuICAgICAgICAgICAgdXJsOiBvcHRpb25zLnVybCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"setup-events.d.ts","sourceRoot":"","sources":["../../src/commands/setup-events.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6IlD"}
1
+ {"version":3,"file":"setup-events.d.ts","sourceRoot":"","sources":["../../src/commands/setup-events.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoJlD"}
@@ -39,6 +39,7 @@ export function setupEvents(program) {
39
39
  .option('-p, --password <password>', 'Login password (used with --email)')
40
40
  .option('--region <region>', 'AWS region (default: us-east-1, or AWS_REGION env)')
41
41
  .option('--profile <profile>', 'AWS CLI profile', 'default')
42
+ .option('--scoped-ingest', 'Point the ingestion Lambda at the dedicated least-privilege reporting-ingest secret (provision it first: `store-token --scope reporting:ingest --schedule`, then set REPORTING_INGEST_ALLOW_LEGACY=false on the reporting service)')
42
43
  .action(async (options) => {
43
44
  const executionId = printCommandHeader('Setup Event Ingestion');
44
45
  try {
@@ -52,7 +53,13 @@ export function setupEvents(program) {
52
53
  // minted) when PLATFORM_SECRET_NAME isn't set — matching store-token, which
53
54
  // WROTE the secret at the same derived path. Logs in with
54
55
  // --email/--password or PLATFORM_IDENTIFIER/PLATFORM_PASSWORD if no token yet.
55
- const secretName = await resolvePlatformSecretName(options);
56
+ // With --scoped-ingest, point at the dedicated reporting-ingest secret
57
+ // (a least-privilege machine credential) instead of the shared platform
58
+ // token — provision it with `store-token --scope reporting:ingest`.
59
+ let secretName = await resolvePlatformSecretName(options);
60
+ if (options.scopedIngest) {
61
+ secretName = secretName.replace(/\/platform$/, '/reporting-ingest');
62
+ }
56
63
  printInfo('Parameters', {
57
64
  stack: STACK_NAME,
58
65
  region,
@@ -150,4 +157,4 @@ export function setupEvents(program) {
150
157
  }
151
158
  });
152
159
  }
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAtZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3NldHVwLWV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0YsT0FBTyxFQUFFLFlBQVksRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXhFLDBEQUEwRDtBQUMxRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFL0QsTUFBTSxVQUFVLEdBQUcseUJBQXlCLENBQUM7QUFDN0MscUZBQXFGO0FBQ3JGLE1BQU0sV0FBVyxHQUFHLGtDQUFrQyxDQUFDO0FB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QUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTthQUNyRSxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGV4ZWNGaWxlU3luYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQ2xvdWRGb3JtYXRpb25DbGllbnQsIERlc2NyaWJlU3RhY2tzQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBMYW1iZGFDbGllbnQsIFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtbGFtYmRhJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgcHJpbnRDb21tYW5kSGVhZGVyIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZVBsYXRmb3JtU2VjcmV0TmFtZSB9IGZyb20gJy4uL3V0aWxzL3BsYXRmb3JtLXNlY3JldC5qcyc7XG5cbi8vIEVTTSBoYXMgbm8gX19kaXJuYW1lOyBkZXJpdmUgaXQgZnJvbSB0aGlzIG1vZHVsZSdzIFVSTC5cbmNvbnN0IF9fZGlybmFtZSA9IHBhdGguZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuXG5jb25zdCBTVEFDS19OQU1FID0gJ3BpcGVsaW5lLWJ1aWxkZXItZXZlbnRzJztcbi8vIEV4aXN0aW5nIENGTi1tYW5hZ2VkIExhbWJkYSBmdW5jdGlvbiBuYW1lIOKAlCBkbyBOT1QgcmVuYW1lIHdpdGhvdXQgYSBtaWdyYXRpb24gcGxhblxuY29uc3QgTEFNQkRBX05BTUUgPSAncGlwZWxpbmUtYnVpbGRlci1ldmVudC1pbmdlc3Rpb24nO1xuY29uc3QgUEFDS0FHRV9OQU1FID0gJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWV2ZW50cyc7XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgc2V0dXAtZXZlbnRzYCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIERlcGxveXMgRXZlbnRCcmlkZ2Ug4oaSIFNRUyDihpIgTGFtYmRhIGluZnJhc3RydWN0dXJlIGZvciBwaXBlbGluZSByZXBvcnRpbmcuXG4gKlxuICogMS4gRGVwbG95cyBDbG91ZEZvcm1hdGlvbiBzdGFjayAocnVsZSArIHF1ZXVlICsgTGFtYmRhIHNoZWxsICsgSUFNKVxuICogMi4gRG93bmxvYWRzIEBwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWV2ZW50cyBmcm9tIG5wbSByZWdpc3RyeVxuICogMy4gVXBsb2FkcyBoYW5kbGVyIGNvZGUgZGlyZWN0bHkgdG8gTGFtYmRhIChubyBTMyBuZWVkZWQpXG4gKlxuICogVXNlcyBQTEFURk9STV9CQVNFX1VSTCBmcm9tIGVudmlyb25tZW50IChzYW1lIGFzIGFsbCBvdGhlciBjb21tYW5kcykuXG4gKiBJZGVtcG90ZW50IOKAlCBydW5uaW5nIGFnYWluIHVwZGF0ZXMgdGhlIHN0YWNrIGFuZCBjb2RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBFdmVudHMocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ3NldHVwLWV2ZW50cycpXG4gICAgLmRlc2NyaXB0aW9uKCdEZXBsb3kgRXZlbnRCcmlkZ2UgZXZlbnQgaW5nZXN0aW9uIGluZnJhc3RydWN0dXJlIGZvciBwaXBlbGluZSByZXBvcnRpbmcnKVxuICAgIC5vcHRpb24oJy0tcGFja2FnZS12ZXJzaW9uIDx2ZXJzaW9uPicsICdwaXBlbGluZS1ldmVudHMgcGFja2FnZSB2ZXJzaW9uIChkZWZhdWx0OiBsYXRlc3QpJylcbiAgICAub3B0aW9uKCctZSwgLS1lbWFpbCA8ZW1haWw+JywgJ0xvZ2luIGVtYWlsIHRvIG1pbnQgYSB0b2tlbiB3aGVuIFBMQVRGT1JNX1RPS0VOIGlzIHVuc2V0IChmb3IgZGVyaXZpbmcgdGhlIHNlY3JldCBuYW1lKScpXG4gICAgLm9wdGlvbignLXAsIC0tcGFzc3dvcmQgPHBhc3N3b3JkPicsICdMb2dpbiBwYXNzd29yZCAodXNlZCB3aXRoIC0tZW1haWwpJylcbiAgICAub3B0aW9uKCctLXJlZ2lvbiA8cmVnaW9uPicsICdBV1MgcmVnaW9uIChkZWZhdWx0OiB1cy1lYXN0LTEsIG9yIEFXU19SRUdJT04gZW52KScpXG4gICAgLm9wdGlvbignLS1wcm9maWxlIDxwcm9maWxlPicsICdBV1MgQ0xJIHByb2ZpbGUnLCAnZGVmYXVsdCcpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgZXhlY3V0aW9uSWQgPSBwcmludENvbW1hbmRIZWFkZXIoJ1NldHVwIEV2ZW50IEluZ2VzdGlvbicpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZWdpb24gPSBvcHRpb25zLnJlZ2lvbiB8fCBwcm9jZXNzLmVudi5BV1NfUkVHSU9OIHx8IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTiB8fCAndXMtZWFzdC0xJztcblxuICAgICAgICBjb25zdCBwbGF0Zm9ybVVybCA9IHByb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMO1xuICAgICAgICBpZiAoIXBsYXRmb3JtVXJsKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignUExBVEZPUk1fQkFTRV9VUkwgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgcmVxdWlyZWQnKTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BMQVRGT1JNX0JBU0VfVVJMIG5vdCBzZXQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERlcml2ZSB0aGUgc2VjcmV0IHBhdGggZnJvbSB0aGUgcGxhdGZvcm0gdG9rZW4gKHRoZSBvbmUgaW5pdC1wbGF0Zm9ybS5zaFxuICAgICAgICAvLyBtaW50ZWQpIHdoZW4gUExBVEZPUk1fU0VDUkVUX05BTUUgaXNuJ3Qgc2V0IOKAlCBtYXRjaGluZyBzdG9yZS10b2tlbiwgd2hpY2hcbiAgICAgICAgLy8gV1JPVEUgdGhlIHNlY3JldCBhdCB0aGUgc2FtZSBkZXJpdmVkIHBhdGguIExvZ3MgaW4gd2l0aFxuICAgICAgICAvLyAtLWVtYWlsLy0tcGFzc3dvcmQgb3IgUExBVEZPUk1fSURFTlRJRklFUi9QTEFURk9STV9QQVNTV09SRCBpZiBubyB0b2tlbiB5ZXQuXG4gICAgICAgIGNvbnN0IHNlY3JldE5hbWUgPSBhd2FpdCByZXNvbHZlUGxhdGZvcm1TZWNyZXROYW1lKG9wdGlvbnMpO1xuXG4gICAgICAgIHByaW50SW5mbygnUGFyYW1ldGVycycsIHtcbiAgICAgICAgICBzdGFjazogU1RBQ0tfTkFNRSxcbiAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgcGxhdGZvcm1VcmwsXG4gICAgICAgICAgc2VjcmV0TmFtZSxcbiAgICAgICAgICBwYWNrYWdlVmVyc2lvbjogb3B0aW9ucy5wYWNrYWdlVmVyc2lvbiB8fCAnbGF0ZXN0JyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU3RlcCAxOiBEZXBsb3kgQ2xvdWRGb3JtYXRpb24gKGluZnJhIG9ubHkg4oCUIExhbWJkYSBnZXRzIHBsYWNlaG9sZGVyIGNvZGUpXG4gICAgICAgIHByaW50U2VjdGlvbignRGVwbG95IEluZnJhc3RydWN0dXJlJyk7XG5cbiAgICAgICAgY29uc3QgdGVtcGxhdGVQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL3RlbXBsYXRlcy9ldmVudHMtc3RhY2suanNvbicpO1xuXG4gICAgICAgIGNvbnN0IGNmbkFyZ3MgPSBbXG4gICAgICAgICAgJ2Nsb3VkZm9ybWF0aW9uJywgJ2RlcGxveScsXG4gICAgICAgICAgJy0tc3RhY2stbmFtZScsIFNUQUNLX05BTUUsXG4gICAgICAgICAgJy0tdGVtcGxhdGUtZmlsZScsIHRlbXBsYXRlUGF0aCxcbiAgICAgICAgICAnLS1wYXJhbWV0ZXItb3ZlcnJpZGVzJyxcbiAgICAgICAgICBgUGxhdGZvcm1CYXNlVXJsPSR7cGxhdGZvcm1Vcmx9YCxcbiAgICAgICAgICBgUGxhdGZvcm1TZWNyZXROYW1lPSR7c2VjcmV0TmFtZX1gLFxuICAgICAgICAgICctLWNhcGFiaWxpdGllcycsICdDQVBBQklMSVRZX05BTUVEX0lBTScsXG4gICAgICAgICAgJy0tbm8tZmFpbC1vbi1lbXB0eS1jaGFuZ2VzZXQnLFxuICAgICAgICAgICctLXJlZ2lvbicsIHJlZ2lvbixcbiAgICAgICAgXTtcbiAgICAgICAgaWYgKG9wdGlvbnMucHJvZmlsZSkgY2ZuQXJncy5wdXNoKCctLXByb2ZpbGUnLCBvcHRpb25zLnByb2ZpbGUpO1xuXG4gICAgICAgIGV4ZWNGaWxlU3luYygnYXdzJywgY2ZuQXJncywgeyBzdGRpbzogJ2luaGVyaXQnIH0pO1xuXG4gICAgICAgIHByaW50U3VjY2VzcygnSW5mcmFzdHJ1Y3R1cmUgZGVwbG95ZWQnKTtcblxuICAgICAgICAvLyBTdGVwIDI6IERvd25sb2FkIGhhbmRsZXIgZnJvbSByZWdpc3RyeSBhbmQgdXBsb2FkIHRvIExhbWJkYVxuICAgICAgICBwcmludFNlY3Rpb24oJ0RlcGxveSBMYW1iZGEgQ29kZScpO1xuXG4gICAgICAgIGNvbnN0IHRtcERpciA9IGZzLm1rZHRlbXBTeW5jKHBhdGguam9pbihvcy50bXBkaXIoKSwgJ2V2ZW50LWluZ2VzdGlvbi0nKSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB2ZXJzaW9uU3BlYyA9IG9wdGlvbnMucGFja2FnZVZlcnNpb24gPyBgJHtQQUNLQUdFX05BTUV9QCR7b3B0aW9ucy5wYWNrYWdlVmVyc2lvbn1gIDogUEFDS0FHRV9OQU1FO1xuICAgICAgICAgIHByaW50SW5mbygnSW5zdGFsbGluZyBmcm9tIHJlZ2lzdHJ5JywgeyBwYWNrYWdlOiB2ZXJzaW9uU3BlYyB9KTtcblxuICAgICAgICAgIC8vIElzb2xhdGUgdGhlIG5wbSBjYWNoZSBpbnNpZGUgdGhlIHRlbXAgZGlyIHNvIHRoZSBkZXBsb3kgbmV2ZXIgZGVwZW5kcyBvblxuICAgICAgICAgIC8vIChvciB0cmlwcyBvdmVyKSBhIG1pc2NvbmZpZ3VyZWQgc2hhcmVkIH4vLm5wbSBjYWNoZSDigJQgZS5nLiBFQUNDRVMvRUVYSVNUXG4gICAgICAgICAgLy8gbGVmdCBiZWhpbmQgYnkgYSBwcmlvciBgc3VkbyBucG1gIHJ1bi4gTWlycm9ycyB0aGUgdG9rZW4tcmVuZXcgaGFuZGxlci5cbiAgICAgICAgICBleGVjRmlsZVN5bmMoJ25wbScsIFsnaW5zdGFsbCcsICctLXByZWZpeCcsIHRtcERpciwgJy0tbm8tYXVkaXQnLCAnLS1uby1mdW5kJywgdmVyc2lvblNwZWNdLCB7XG4gICAgICAgICAgICBzdGRpbzogJ3BpcGUnLFxuICAgICAgICAgICAgZW52OiB7IC4uLnByb2Nlc3MuZW52LCBucG1fY29uZmlnX2NhY2hlOiBwYXRoLmpvaW4odG1wRGlyLCAnLm5wbS1jYWNoZScpIH0sXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBoYW5kbGVyU3JjID0gcGF0aC5qb2luKHRtcERpciwgJ25vZGVfbW9kdWxlcycsIFBBQ0tBR0VfTkFNRSwgJ2xpYicsICdpbmRleC5qcycpO1xuICAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhoYW5kbGVyU3JjKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBIYW5kbGVyIG5vdCBmb3VuZCBhdCAke2hhbmRsZXJTcmN9LiBFbnN1cmUgdGhlIHBhY2thZ2UgaXMgcHVibGlzaGVkLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEdldCB2ZXJzaW9uIGZyb20gaW5zdGFsbGVkIHBhY2thZ2VcbiAgICAgICAgICBjb25zdCBwa2dKc29uUGF0aCA9IHBhdGguam9pbih0bXBEaXIsICdub2RlX21vZHVsZXMnLCBQQUNLQUdFX05BTUUsICdwYWNrYWdlLmpzb24nKTtcbiAgICAgICAgICBjb25zdCBwa2dKc29uID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMocGtnSnNvblBhdGgsICd1dGYtOCcpKTtcbiAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gcGtnSnNvbi52ZXJzaW9uIHx8ICd1bmtub3duJztcblxuICAgICAgICAgIC8vIHBpcGVsaW5lLWV2ZW50cyBpcyBFU00gKFwidHlwZVwiOlwibW9kdWxlXCIpLCBzbyB0aGUgTGFtYmRhIGVudHJ5IG11c3QgYmVcbiAgICAgICAgICAvLyBpbmRleC5tanMuIEEgcGxhaW4gaW5kZXguanMgd2l0aCBubyBwYWNrYWdlLmpzb24gaW4gdGhlIHppcCBpcyBsb2FkZWQgYXNcbiAgICAgICAgICAvLyBDb21tb25KUyBieSBub2RlanMyNC54IGFuZCBmYWlscyBhdCBpbml0IHdpdGggXCJDYW5ub3QgdXNlIGltcG9ydCBzdGF0ZW1lbnRcbiAgICAgICAgICAvLyBvdXRzaWRlIGEgbW9kdWxlXCIuIFRoZSAubWpzIGV4dGVuc2lvbiBmb3JjZXMgRVNNOyBIYW5kbGVyIHN0YXlzXG4gICAgICAgICAgLy8gaW5kZXguaGFuZGxlciAodGhlIHJ1bnRpbWUgcmVzb2x2ZXMgdGhlIC5tanMgZmlsZSkuIGxpYi9pbmRleC5qcyBpcyBhXG4gICAgICAgICAgLy8gc2VsZi1jb250YWluZWQgYnVuZGxlIChubyByZWxhdGl2ZSBpbXBvcnRzKSwgc28gdGhlIHNpbmdsZSBmaWxlIHN1ZmZpY2VzLlxuICAgICAgICAgIGNvbnN0IG1qc1BhdGggPSBwYXRoLmpvaW4odG1wRGlyLCAnaW5kZXgubWpzJyk7XG4gICAgICAgICAgZnMuY29weUZpbGVTeW5jKGhhbmRsZXJTcmMsIG1qc1BhdGgpO1xuICAgICAgICAgIGNvbnN0IHppcFBhdGggPSBwYXRoLmpvaW4odG1wRGlyLCAnaW5kZXguemlwJyk7XG4gICAgICAgICAgZXhlY0ZpbGVTeW5jKCd6aXAnLCBbJy1qJywgemlwUGF0aCwgJ2luZGV4Lm1qcyddLCB7IGN3ZDogdG1wRGlyLCBzdGRpbzogJ3BpcGUnIH0pO1xuXG4gICAgICAgICAgLy8gVXBsb2FkIGRpcmVjdGx5IHRvIExhbWJkYSB2aWEgU0RLIChubyBTMyBuZWVkZWQpXG4gICAgICAgICAgcHJpbnRJbmZvKCdVcGxvYWRpbmcgY29kZSB0byBMYW1iZGEnLCB7IGZ1bmN0aW9uOiBMQU1CREFfTkFNRSwgdmVyc2lvbiB9KTtcblxuICAgICAgICAgIGNvbnN0IGxhbWJkYUNsaWVudCA9IG5ldyBMYW1iZGFDbGllbnQoeyByZWdpb24gfSk7XG4gICAgICAgICAgYXdhaXQgbGFtYmRhQ2xpZW50LnNlbmQobmV3IFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmQoe1xuICAgICAgICAgICAgRnVuY3Rpb25OYW1lOiBMQU1CREFfTkFNRSxcbiAgICAgICAgICAgIFppcEZpbGU6IGZzLnJlYWRGaWxlU3luYyh6aXBQYXRoKSxcbiAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICBwcmludFN1Y2Nlc3MoYExhbWJkYSBjb2RlIGRlcGxveWVkICgke1BBQ0tBR0VfTkFNRX1AJHt2ZXJzaW9ufSlgKTtcblxuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGZzLnJtU3luYyh0bXBEaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0ZXAgMzogU2hvdyBvdXRwdXRzIHZpYSBTREtcbiAgICAgICAgY29uc3QgY2ZuQ2xpZW50ID0gbmV3IENsb3VkRm9ybWF0aW9uQ2xpZW50KHsgcmVnaW9uIH0pO1xuICAgICAgICBjb25zdCBkZXNjcmliZVJlc3VsdCA9IGF3YWl0IGNmbkNsaWVudC5zZW5kKG5ldyBEZXNjcmliZVN0YWNrc0NvbW1hbmQoeyBTdGFja05hbWU6IFNUQUNLX05BTUUgfSkpO1xuICAgICAgICBjb25zdCBvdXRwdXRzID0gZGVzY3JpYmVSZXN1bHQuU3RhY2tzPy5bMF0/Lk91dHB1dHMgPz8gW107XG4gICAgICAgIGNvbnN0IG91dHB1dE1hcCA9IE9iamVjdC5mcm9tRW50cmllcyhvdXRwdXRzLm1hcChvID0+IFtvLk91dHB1dEtleSA/PyAnJywgby5PdXRwdXRWYWx1ZSA/PyAnJ10pKTtcblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignRXZlbnQgSW5nZXN0aW9uIFJlYWR5Jyk7XG5cbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ1N0YWNrJzogU1RBQ0tfTkFNRSxcbiAgICAgICAgICAnUmVnaW9uJzogcmVnaW9uLFxuICAgICAgICAgICdQbGF0Zm9ybSBVUkwnOiBwbGF0Zm9ybVVybCxcbiAgICAgICAgICAnTGFtYmRhJzogb3V0cHV0TWFwLkxhbWJkYUZ1bmN0aW9uQXJuIHx8IExBTUJEQV9OQU1FLFxuICAgICAgICAgICdFdmVudCBRdWV1ZSc6IG91dHB1dE1hcC5FdmVudFF1ZXVlVXJsIHx8ICcoc2VlIEFXUyBjb25zb2xlKScsXG4gICAgICAgICAgJ0RlYWQgTGV0dGVyIFF1ZXVlJzogb3V0cHV0TWFwLkRlYWRMZXR0ZXJRdWV1ZVVybCB8fCAnKHNlZSBBV1MgY29uc29sZSknLFxuICAgICAgICAgICdFdmVudEJyaWRnZSBSdWxlJzogb3V0cHV0TWFwLkV2ZW50UnVsZU5hbWUgfHwgJyhzZWUgQVdTIGNvbnNvbGUpJyxcbiAgICAgICAgICAnU3RhdHVzJzogJ+KckyBEZXBsb3llZCcsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTdWNjZXNzKCdFdmVudEJyaWRnZSBldmVudCBpbmdlc3Rpb24gaXMgYWN0aXZlLicpO1xuXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7IGNvbW1hbmQ6ICdzZXR1cC1ldmVudHMnLCBleGVjdXRpb25JZCwgc3RhY2s6IFNUQUNLX05BTUUgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAtZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3NldHVwLWV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0YsT0FBTyxFQUFFLFlBQVksRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXhFLDBEQUEwRDtBQUMxRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFL0QsTUFBTSxVQUFVLEdBQUcseUJBQXlCLENBQUM7QUFDN0MscUZBQXFGO0FBQ3JGLE1BQU0sV0FBVyxHQUFHLGtDQUFrQyxDQUFDO0FB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WUFBWSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFFekQsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTthQUNyRSxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGV4ZWNGaWxlU3luYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQ2xvdWRGb3JtYXRpb25DbGllbnQsIERlc2NyaWJlU3RhY2tzQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBMYW1iZGFDbGllbnQsIFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtbGFtYmRhJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgcHJpbnRDb21tYW5kSGVhZGVyIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZVBsYXRmb3JtU2VjcmV0TmFtZSB9IGZyb20gJy4uL3V0aWxzL3BsYXRmb3JtLXNlY3JldC5qcyc7XG5cbi8vIEVTTSBoYXMgbm8gX19kaXJuYW1lOyBkZXJpdmUgaXQgZnJvbSB0aGlzIG1vZHVsZSdzIFVSTC5cbmNvbnN0IF9fZGlybmFtZSA9IHBhdGguZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuXG5jb25zdCBTVEFDS19OQU1FID0gJ3BpcGVsaW5lLWJ1aWxkZXItZXZlbnRzJztcbi8vIEV4aXN0aW5nIENGTi1tYW5hZ2VkIExhbWJkYSBmdW5jdGlvbiBuYW1lIOKAlCBkbyBOT1QgcmVuYW1lIHdpdGhvdXQgYSBtaWdyYXRpb24gcGxhblxuY29uc3QgTEFNQkRBX05BTUUgPSAncGlwZWxpbmUtYnVpbGRlci1ldmVudC1pbmdlc3Rpb24nO1xuY29uc3QgUEFDS0FHRV9OQU1FID0gJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWV2ZW50cyc7XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgc2V0dXAtZXZlbnRzYCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIERlcGxveXMgRXZlbnRCcmlkZ2Ug4oaSIFNRUyDihpIgTGFtYmRhIGluZnJhc3RydWN0dXJlIGZvciBwaXBlbGluZSByZXBvcnRpbmcuXG4gKlxuICogMS4gRGVwbG95cyBDbG91ZEZvcm1hdGlvbiBzdGFjayAocnVsZSArIHF1ZXVlICsgTGFtYmRhIHNoZWxsICsgSUFNKVxuICogMi4gRG93bmxvYWRzIEBwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWV2ZW50cyBmcm9tIG5wbSByZWdpc3RyeVxuICogMy4gVXBsb2FkcyBoYW5kbGVyIGNvZGUgZGlyZWN0bHkgdG8gTGFtYmRhIChubyBTMyBuZWVkZWQpXG4gKlxuICogVXNlcyBQTEFURk9STV9CQVNFX1VSTCBmcm9tIGVudmlyb25tZW50IChzYW1lIGFzIGFsbCBvdGhlciBjb21tYW5kcykuXG4gKiBJZGVtcG90ZW50IOKAlCBydW5uaW5nIGFnYWluIHVwZGF0ZXMgdGhlIHN0YWNrIGFuZCBjb2RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBFdmVudHMocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ3NldHVwLWV2ZW50cycpXG4gICAgLmRlc2NyaXB0aW9uKCdEZXBsb3kgRXZlbnRCcmlkZ2UgZXZlbnQgaW5nZXN0aW9uIGluZnJhc3RydWN0dXJlIGZvciBwaXBlbGluZSByZXBvcnRpbmcnKVxuICAgIC5vcHRpb24oJy0tcGFja2FnZS12ZXJzaW9uIDx2ZXJzaW9uPicsICdwaXBlbGluZS1ldmVudHMgcGFja2FnZSB2ZXJzaW9uIChkZWZhdWx0OiBsYXRlc3QpJylcbiAgICAub3B0aW9uKCctZSwgLS1lbWFpbCA8ZW1haWw+JywgJ0xvZ2luIGVtYWlsIHRvIG1pbnQgYSB0b2tlbiB3aGVuIFBMQVRGT1JNX1RPS0VOIGlzIHVuc2V0IChmb3IgZGVyaXZpbmcgdGhlIHNlY3JldCBuYW1lKScpXG4gICAgLm9wdGlvbignLXAsIC0tcGFzc3dvcmQgPHBhc3N3b3JkPicsICdMb2dpbiBwYXNzd29yZCAodXNlZCB3aXRoIC0tZW1haWwpJylcbiAgICAub3B0aW9uKCctLXJlZ2lvbiA8cmVnaW9uPicsICdBV1MgcmVnaW9uIChkZWZhdWx0OiB1cy1lYXN0LTEsIG9yIEFXU19SRUdJT04gZW52KScpXG4gICAgLm9wdGlvbignLS1wcm9maWxlIDxwcm9maWxlPicsICdBV1MgQ0xJIHByb2ZpbGUnLCAnZGVmYXVsdCcpXG4gICAgLm9wdGlvbignLS1zY29wZWQtaW5nZXN0JywgJ1BvaW50IHRoZSBpbmdlc3Rpb24gTGFtYmRhIGF0IHRoZSBkZWRpY2F0ZWQgbGVhc3QtcHJpdmlsZWdlIHJlcG9ydGluZy1pbmdlc3Qgc2VjcmV0IChwcm92aXNpb24gaXQgZmlyc3Q6IGBzdG9yZS10b2tlbiAtLXNjb3BlIHJlcG9ydGluZzppbmdlc3QgLS1zY2hlZHVsZWAsIHRoZW4gc2V0IFJFUE9SVElOR19JTkdFU1RfQUxMT1dfTEVHQUNZPWZhbHNlIG9uIHRoZSByZXBvcnRpbmcgc2VydmljZSknKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdTZXR1cCBFdmVudCBJbmdlc3Rpb24nKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVnaW9uID0gb3B0aW9ucy5yZWdpb24gfHwgcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTiB8fCBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT04gfHwgJ3VzLWVhc3QtMSc7XG5cbiAgICAgICAgY29uc3QgcGxhdGZvcm1VcmwgPSBwcm9jZXNzLmVudi5QTEFURk9STV9CQVNFX1VSTDtcbiAgICAgICAgaWYgKCFwbGF0Zm9ybVVybCkge1xuICAgICAgICAgIHByaW50RXJyb3IoJ1BMQVRGT1JNX0JBU0VfVVJMIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHJlcXVpcmVkJyk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQTEFURk9STV9CQVNFX1VSTCBub3Qgc2V0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZXJpdmUgdGhlIHNlY3JldCBwYXRoIGZyb20gdGhlIHBsYXRmb3JtIHRva2VuICh0aGUgb25lIGluaXQtcGxhdGZvcm0uc2hcbiAgICAgICAgLy8gbWludGVkKSB3aGVuIFBMQVRGT1JNX1NFQ1JFVF9OQU1FIGlzbid0IHNldCDigJQgbWF0Y2hpbmcgc3RvcmUtdG9rZW4sIHdoaWNoXG4gICAgICAgIC8vIFdST1RFIHRoZSBzZWNyZXQgYXQgdGhlIHNhbWUgZGVyaXZlZCBwYXRoLiBMb2dzIGluIHdpdGhcbiAgICAgICAgLy8gLS1lbWFpbC8tLXBhc3N3b3JkIG9yIFBMQVRGT1JNX0lERU5USUZJRVIvUExBVEZPUk1fUEFTU1dPUkQgaWYgbm8gdG9rZW4geWV0LlxuICAgICAgICAvLyBXaXRoIC0tc2NvcGVkLWluZ2VzdCwgcG9pbnQgYXQgdGhlIGRlZGljYXRlZCByZXBvcnRpbmctaW5nZXN0IHNlY3JldFxuICAgICAgICAvLyAoYSBsZWFzdC1wcml2aWxlZ2UgbWFjaGluZSBjcmVkZW50aWFsKSBpbnN0ZWFkIG9mIHRoZSBzaGFyZWQgcGxhdGZvcm1cbiAgICAgICAgLy8gdG9rZW4g4oCUIHByb3Zpc2lvbiBpdCB3aXRoIGBzdG9yZS10b2tlbiAtLXNjb3BlIHJlcG9ydGluZzppbmdlc3RgLlxuICAgICAgICBsZXQgc2VjcmV0TmFtZSA9IGF3YWl0IHJlc29sdmVQbGF0Zm9ybVNlY3JldE5hbWUob3B0aW9ucyk7XG4gICAgICAgIGlmIChvcHRpb25zLnNjb3BlZEluZ2VzdCkge1xuICAgICAgICAgIHNlY3JldE5hbWUgPSBzZWNyZXROYW1lLnJlcGxhY2UoL1xcL3BsYXRmb3JtJC8sICcvcmVwb3J0aW5nLWluZ2VzdCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJpbnRJbmZvKCdQYXJhbWV0ZXJzJywge1xuICAgICAgICAgIHN0YWNrOiBTVEFDS19OQU1FLFxuICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICBwbGF0Zm9ybVVybCxcbiAgICAgICAgICBzZWNyZXROYW1lLFxuICAgICAgICAgIHBhY2thZ2VWZXJzaW9uOiBvcHRpb25zLnBhY2thZ2VWZXJzaW9uIHx8ICdsYXRlc3QnLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTdGVwIDE6IERlcGxveSBDbG91ZEZvcm1hdGlvbiAoaW5mcmEgb25seSDigJQgTGFtYmRhIGdldHMgcGxhY2Vob2xkZXIgY29kZSlcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdEZXBsb3kgSW5mcmFzdHJ1Y3R1cmUnKTtcblxuICAgICAgICBjb25zdCB0ZW1wbGF0ZVBhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vdGVtcGxhdGVzL2V2ZW50cy1zdGFjay5qc29uJyk7XG5cbiAgICAgICAgY29uc3QgY2ZuQXJncyA9IFtcbiAgICAgICAgICAnY2xvdWRmb3JtYXRpb24nLCAnZGVwbG95JyxcbiAgICAgICAgICAnLS1zdGFjay1uYW1lJywgU1RBQ0tfTkFNRSxcbiAgICAgICAgICAnLS10ZW1wbGF0ZS1maWxlJywgdGVtcGxhdGVQYXRoLFxuICAgICAgICAgICctLXBhcmFtZXRlci1vdmVycmlkZXMnLFxuICAgICAgICAgIGBQbGF0Zm9ybUJhc2VVcmw9JHtwbGF0Zm9ybVVybH1gLFxuICAgICAgICAgIGBQbGF0Zm9ybVNlY3JldE5hbWU9JHtzZWNyZXROYW1lfWAsXG4gICAgICAgICAgJy0tY2FwYWJpbGl0aWVzJywgJ0NBUEFCSUxJVFlfTkFNRURfSUFNJyxcbiAgICAgICAgICAnLS1uby1mYWlsLW9uLWVtcHR5LWNoYW5nZXNldCcsXG4gICAgICAgICAgJy0tcmVnaW9uJywgcmVnaW9uLFxuICAgICAgICBdO1xuICAgICAgICBpZiAob3B0aW9ucy5wcm9maWxlKSBjZm5BcmdzLnB1c2goJy0tcHJvZmlsZScsIG9wdGlvbnMucHJvZmlsZSk7XG5cbiAgICAgICAgZXhlY0ZpbGVTeW5jKCdhd3MnLCBjZm5BcmdzLCB7IHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG5cbiAgICAgICAgcHJpbnRTdWNjZXNzKCdJbmZyYXN0cnVjdHVyZSBkZXBsb3llZCcpO1xuXG4gICAgICAgIC8vIFN0ZXAgMjogRG93bmxvYWQgaGFuZGxlciBmcm9tIHJlZ2lzdHJ5IGFuZCB1cGxvYWQgdG8gTGFtYmRhXG4gICAgICAgIHByaW50U2VjdGlvbignRGVwbG95IExhbWJkYSBDb2RlJyk7XG5cbiAgICAgICAgY29uc3QgdG1wRGlyID0gZnMubWtkdGVtcFN5bmMocGF0aC5qb2luKG9zLnRtcGRpcigpLCAnZXZlbnQtaW5nZXN0aW9uLScpKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHZlcnNpb25TcGVjID0gb3B0aW9ucy5wYWNrYWdlVmVyc2lvbiA/IGAke1BBQ0tBR0VfTkFNRX1AJHtvcHRpb25zLnBhY2thZ2VWZXJzaW9ufWAgOiBQQUNLQUdFX05BTUU7XG4gICAgICAgICAgcHJpbnRJbmZvKCdJbnN0YWxsaW5nIGZyb20gcmVnaXN0cnknLCB7IHBhY2thZ2U6IHZlcnNpb25TcGVjIH0pO1xuXG4gICAgICAgICAgLy8gSXNvbGF0ZSB0aGUgbnBtIGNhY2hlIGluc2lkZSB0aGUgdGVtcCBkaXIgc28gdGhlIGRlcGxveSBuZXZlciBkZXBlbmRzIG9uXG4gICAgICAgICAgLy8gKG9yIHRyaXBzIG92ZXIpIGEgbWlzY29uZmlndXJlZCBzaGFyZWQgfi8ubnBtIGNhY2hlIOKAlCBlLmcuIEVBQ0NFUy9FRVhJU1RcbiAgICAgICAgICAvLyBsZWZ0IGJlaGluZCBieSBhIHByaW9yIGBzdWRvIG5wbWAgcnVuLiBNaXJyb3JzIHRoZSB0b2tlbi1yZW5ldyBoYW5kbGVyLlxuICAgICAgICAgIGV4ZWNGaWxlU3luYygnbnBtJywgWydpbnN0YWxsJywgJy0tcHJlZml4JywgdG1wRGlyLCAnLS1uby1hdWRpdCcsICctLW5vLWZ1bmQnLCB2ZXJzaW9uU3BlY10sIHtcbiAgICAgICAgICAgIHN0ZGlvOiAncGlwZScsXG4gICAgICAgICAgICBlbnY6IHsgLi4ucHJvY2Vzcy5lbnYsIG5wbV9jb25maWdfY2FjaGU6IHBhdGguam9pbih0bXBEaXIsICcubnBtLWNhY2hlJykgfSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbnN0IGhhbmRsZXJTcmMgPSBwYXRoLmpvaW4odG1wRGlyLCAnbm9kZV9tb2R1bGVzJywgUEFDS0FHRV9OQU1FLCAnbGliJywgJ2luZGV4LmpzJyk7XG4gICAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGhhbmRsZXJTcmMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEhhbmRsZXIgbm90IGZvdW5kIGF0ICR7aGFuZGxlclNyY30uIEVuc3VyZSB0aGUgcGFja2FnZSBpcyBwdWJsaXNoZWQuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gR2V0IHZlcnNpb24gZnJvbSBpbnN0YWxsZWQgcGFja2FnZVxuICAgICAgICAgIGNvbnN0IHBrZ0pzb25QYXRoID0gcGF0aC5qb2luKHRtcERpciwgJ25vZGVfbW9kdWxlcycsIFBBQ0tBR0VfTkFNRSwgJ3BhY2thZ2UuanNvbicpO1xuICAgICAgICAgIGNvbnN0IHBrZ0pzb24gPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwa2dKc29uUGF0aCwgJ3V0Zi04JykpO1xuICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSBwa2dKc29uLnZlcnNpb24gfHwgJ3Vua25vd24nO1xuXG4gICAgICAgICAgLy8gcGlwZWxpbmUtZXZlbnRzIGlzIEVTTSAoXCJ0eXBlXCI6XCJtb2R1bGVcIiksIHNvIHRoZSBMYW1iZGEgZW50cnkgbXVzdCBiZVxuICAgICAgICAgIC8vIGluZGV4Lm1qcy4gQSBwbGFpbiBpbmRleC5qcyB3aXRoIG5vIHBhY2thZ2UuanNvbiBpbiB0aGUgemlwIGlzIGxvYWRlZCBhc1xuICAgICAgICAgIC8vIENvbW1vbkpTIGJ5IG5vZGVqczI0LnggYW5kIGZhaWxzIGF0IGluaXQgd2l0aCBcIkNhbm5vdCB1c2UgaW1wb3J0IHN0YXRlbWVudFxuICAgICAgICAgIC8vIG91dHNpZGUgYSBtb2R1bGVcIi4gVGhlIC5tanMgZXh0ZW5zaW9uIGZvcmNlcyBFU007IEhhbmRsZXIgc3RheXNcbiAgICAgICAgICAvLyBpbmRleC5oYW5kbGVyICh0aGUgcnVudGltZSByZXNvbHZlcyB0aGUgLm1qcyBmaWxlKS4gbGliL2luZGV4LmpzIGlzIGFcbiAgICAgICAgICAvLyBzZWxmLWNvbnRhaW5lZCBidW5kbGUgKG5vIHJlbGF0aXZlIGltcG9ydHMpLCBzbyB0aGUgc2luZ2xlIGZpbGUgc3VmZmljZXMuXG4gICAgICAgICAgY29uc3QgbWpzUGF0aCA9IHBhdGguam9pbih0bXBEaXIsICdpbmRleC5tanMnKTtcbiAgICAgICAgICBmcy5jb3B5RmlsZVN5bmMoaGFuZGxlclNyYywgbWpzUGF0aCk7XG4gICAgICAgICAgY29uc3QgemlwUGF0aCA9IHBhdGguam9pbih0bXBEaXIsICdpbmRleC56aXAnKTtcbiAgICAgICAgICBleGVjRmlsZVN5bmMoJ3ppcCcsIFsnLWonLCB6aXBQYXRoLCAnaW5kZXgubWpzJ10sIHsgY3dkOiB0bXBEaXIsIHN0ZGlvOiAncGlwZScgfSk7XG5cbiAgICAgICAgICAvLyBVcGxvYWQgZGlyZWN0bHkgdG8gTGFtYmRhIHZpYSBTREsgKG5vIFMzIG5lZWRlZClcbiAgICAgICAgICBwcmludEluZm8oJ1VwbG9hZGluZyBjb2RlIHRvIExhbWJkYScsIHsgZnVuY3Rpb246IExBTUJEQV9OQU1FLCB2ZXJzaW9uIH0pO1xuXG4gICAgICAgICAgY29uc3QgbGFtYmRhQ2xpZW50ID0gbmV3IExhbWJkYUNsaWVudCh7IHJlZ2lvbiB9KTtcbiAgICAgICAgICBhd2FpdCBsYW1iZGFDbGllbnQuc2VuZChuZXcgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZCh7XG4gICAgICAgICAgICBGdW5jdGlvbk5hbWU6IExBTUJEQV9OQU1FLFxuICAgICAgICAgICAgWmlwRmlsZTogZnMucmVhZEZpbGVTeW5jKHppcFBhdGgpLFxuICAgICAgICAgIH0pKTtcblxuICAgICAgICAgIHByaW50U3VjY2VzcyhgTGFtYmRhIGNvZGUgZGVwbG95ZWQgKCR7UEFDS0FHRV9OQU1FfUAke3ZlcnNpb259KWApO1xuXG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgZnMucm1TeW5jKHRtcERpciwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RlcCAzOiBTaG93IG91dHB1dHMgdmlhIFNES1xuICAgICAgICBjb25zdCBjZm5DbGllbnQgPSBuZXcgQ2xvdWRGb3JtYXRpb25DbGllbnQoeyByZWdpb24gfSk7XG4gICAgICAgIGNvbnN0IGRlc2NyaWJlUmVzdWx0ID0gYXdhaXQgY2ZuQ2xpZW50LnNlbmQobmV3IERlc2NyaWJlU3RhY2tzQ29tbWFuZCh7IFN0YWNrTmFtZTogU1RBQ0tfTkFNRSB9KSk7XG4gICAgICAgIGNvbnN0IG91dHB1dHMgPSBkZXNjcmliZVJlc3VsdC5TdGFja3M/LlswXT8uT3V0cHV0cyA/PyBbXTtcbiAgICAgICAgY29uc3Qgb3V0cHV0TWFwID0gT2JqZWN0LmZyb21FbnRyaWVzKG91dHB1dHMubWFwKG8gPT4gW28uT3V0cHV0S2V5ID8/ICcnLCBvLk91dHB1dFZhbHVlID8/ICcnXSkpO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdFdmVudCBJbmdlc3Rpb24gUmVhZHknKTtcblxuICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAnU3RhY2snOiBTVEFDS19OQU1FLFxuICAgICAgICAgICdSZWdpb24nOiByZWdpb24sXG4gICAgICAgICAgJ1BsYXRmb3JtIFVSTCc6IHBsYXRmb3JtVXJsLFxuICAgICAgICAgICdMYW1iZGEnOiBvdXRwdXRNYXAuTGFtYmRhRnVuY3Rpb25Bcm4gfHwgTEFNQkRBX05BTUUsXG4gICAgICAgICAgJ0V2ZW50IFF1ZXVlJzogb3V0cHV0TWFwLkV2ZW50UXVldWVVcmwgfHwgJyhzZWUgQVdTIGNvbnNvbGUpJyxcbiAgICAgICAgICAnRGVhZCBMZXR0ZXIgUXVldWUnOiBvdXRwdXRNYXAuRGVhZExldHRlclF1ZXVlVXJsIHx8ICcoc2VlIEFXUyBjb25zb2xlKScsXG4gICAgICAgICAgJ0V2ZW50QnJpZGdlIFJ1bGUnOiBvdXRwdXRNYXAuRXZlbnRSdWxlTmFtZSB8fCAnKHNlZSBBV1MgY29uc29sZSknLFxuICAgICAgICAgICdTdGF0dXMnOiAn4pyTIERlcGxveWVkJyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludFN1Y2Nlc3MoJ0V2ZW50QnJpZGdlIGV2ZW50IGluZ2VzdGlvbiBpcyBhY3RpdmUuJyk7XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiB0cnVlLFxuICAgICAgICAgIGNvbnRleHQ6IHsgY29tbWFuZDogJ3NldHVwLWV2ZW50cycsIGV4ZWN1dGlvbklkLCBzdGFjazogU1RBQ0tfTkFNRSB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqE7C"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiE7C"}
@@ -3,6 +3,7 @@
3
3
  import axios from 'axios';
4
4
  import { Command } from 'commander';
5
5
  import { ENV_VARS, TIMEOUTS } from '../config/cli.constants.js';
6
+ import { decodeTokenPayload } from '../utils/auth-guard.js';
6
7
  import { checkCdkAvailable } from '../utils/cdk-utils.js';
7
8
  import { printCommandHeader } from '../utils/command-utils.js';
8
9
  import { ERROR_CODES, handleError } from '../utils/error-handler.js';
@@ -47,22 +48,18 @@ export function status(program) {
47
48
  catch {
48
49
  results['Platform Health'] = 'unreachable';
49
50
  }
50
- // 5. Decode token expiry
51
+ // 5. Decode token expiry (shared decoder — same base64url + exp logic
52
+ // used by audit-tokens / api-client).
51
53
  if (token) {
52
- try {
53
- const parts = token.split('.');
54
- if (parts.length === 3 && parts[1]) {
55
- const payload = JSON.parse(Buffer.from(parts[1], 'base64url').toString('utf-8'));
56
- if (typeof payload.exp === 'number') {
57
- const expiresAt = new Date(payload.exp * 1000);
58
- results['Token Expires'] = expiresAt.toISOString();
59
- results['Token Expired'] = expiresAt.getTime() < Date.now() ? 'yes' : 'no';
60
- }
61
- }
62
- }
63
- catch {
54
+ const payload = decodeTokenPayload(token);
55
+ if (!payload) {
64
56
  results['Token Expires'] = 'unable to decode';
65
57
  }
58
+ else if (typeof payload.exp === 'number') {
59
+ const expiresAt = new Date(payload.exp * 1000);
60
+ results['Token Expires'] = expiresAt.toISOString();
61
+ results['Token Expired'] = expiresAt.getTime() < Date.now() ? 'yes' : 'no';
62
+ }
66
63
  }
67
64
  if (options.json) {
68
65
  console.log(JSON.stringify({ success: true, executionId, ...results }, null, 2));
@@ -81,4 +78,4 @@ export function status(program) {
81
78
  }
82
79
  });
83
80
  }
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3N0YXR1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRW5EOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFDLE9BQWdCO0lBQ3JDLE9BQU87U0FDSixPQUFPLENBQUMsUUFBUSxDQUFDO1NBQ2pCLFdBQVcsQ0FBQywwQ0FBMEMsQ0FBQztTQUN2RCxNQUFNLENBQUMsUUFBUSxFQUFFLHVCQUF1QixFQUFFLEtBQUssQ0FBQztTQUNoRCxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUEyQixFQUFFLENBQUM7WUFFM0MsMEJBQTBCO1lBQzFCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ25ELE9BQU8sQ0FBQyxjQUFj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QUFJLEVBQUUsQ0FBQyxLQUFLO2dCQUMzQixJQUFJLEVBQUUsSUFBSTtnQkFDVixPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTthQUM1QyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IEVOVl9WQVJTLCBUSU1FT1VUUyB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IGNoZWNrQ2RrQXZhaWxhYmxlIH0gZnJvbSAnLi4vdXRpbHMvY2RrLXV0aWxzLmpzJztcbmltcG9ydCB7IHByaW50Q29tbWFuZEhlYWRlciB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBwcmludEtleVZhbHVlLCBwcmludFNlY3Rpb24gfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgaHR0cHNBZ2VudEZvclVybCB9IGZyb20gJy4uL3V0aWxzL3Rscy5qcyc7XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgc3RhdHVzYCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIENoZWNrcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIENESyBhdmFpbGFiaWxpdHksIHBsYXRmb3JtIGNvbm5lY3Rpdml0eSxcbiAqIGFuZCB0b2tlbiBleHBpcnkgdG8gZ2l2ZSBhIHF1aWNrIG92ZXJ2aWV3IG9mIHRoZSBjdXJyZW50IHNldHVwLlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHJvb3QgQ29tbWFuZGVyIHByb2dyYW0gaW5zdGFuY2UgdG8gYXR0YWNoIHRoZSBjb21tYW5kIHRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhdHVzKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKCdzdGF0dXMnKVxuICAgIC5kZXNjcmlwdGlvbignU2hvdyBlbnZpcm9ubWVudCBhbmQgY29ubmVjdGl2aXR5IHN0YXR1cycpXG4gICAgLm9wdGlvbignLS1qc29uJywgJ091dHB1dCByZXN1bHQgYXMgSlNPTicsIGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdTdGF0dXMnKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzdWx0czogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gICAgICAgIC8vIDEuIENoZWNrIFBMQVRGT1JNX1RPS0VOXG4gICAgICAgIGNvbnN0IHRva2VuID0gcHJvY2Vzcy5lbnZbRU5WX1ZBUlMuUExBVEZPUk1fVE9LRU5dO1xuICAgICAgICByZXN1bHRzLlBMQVRGT1JNX1RPS0VOID0gdG9rZW4gPyAnc2V0JyA6ICdub3Qgc2V0JztcblxuICAgICAgICAvLyAyLiBDaGVjayBQTEFURk9STV9TRUNSRVRfTkFNRVxuICAgICAgICBjb25zdCBzZWNyZXROYW1lID0gcHJvY2Vzcy5lbnYuUExBVEZPUk1fU0VDUkVUX05BTUU7XG4gICAgICAgIHJlc3VsdHMuUExBVEZPUk1fU0VDUkVUX05BTUUgPSBzZWNyZXROYW1lIHx8ICdub3Qgc2V0JztcblxuICAgICAgICAvLyAzLiBDaGVjayBDREsgYXZhaWxhYmlsaXR5XG4gICAgICAgIHJlc3VsdHNbJ0NESyBBdmFpbGFibGUnXSA9IGNoZWNrQ2RrQXZhaWxhYmxlKCkgPyAneWVzJyA6ICdubyc7XG5cbiAgICAgICAgLy8gNC4gQ2hlY2sgcGxhdGZvcm0gaGVhbHRoXG4gICAgICAgIGNvbnN0IGJhc2VVcmwgPSBwcm9jZXNzLmVudltFTlZfVkFSUy5QTEFURk9STV9CQVNFX1VSTF0gfHwgJ2h0dHBzOi8vbG9jYWxob3N0Ojg0NDMnO1xuICAgICAgICByZXN1bHRzLlBMQVRGT1JNX0JBU0VfVVJMID0gYmFzZVVybDtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFNraXAgY2VydCB2ZXJpZmljYXRpb24gb25seSBmb3IgbG9jYWwvc2VsZi1zaWduZWQgaG9zdHM7IHZlcmlmeSByZWFsIGRvbWFpbnMuXG4gICAgICAgICAgYXdhaXQgYXhpb3MuZ2V0KGAke2Jhc2VVcmx9L2hlYWx0aGAsIHtcbiAgICAgICAgICAgIHRpbWVvdXQ6IFRJTUVPVVRTLkhFQUxUSF9DSEVDSyxcbiAgICAgICAgICAgIGh0dHBzQWdlbnQ6IGh0dHBzQWdlbnRGb3JVcmwoYmFzZVVybCksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmVzdWx0c1snUGxhdGZvcm0gSGVhbHRoJ10gPSAncmVhY2hhYmxlJztcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgcmVzdWx0c1snUGxhdGZvcm0gSGVhbHRoJ10gPSAndW5yZWFjaGFibGUnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gNS4gRGVjb2RlIHRva2VuIGV4cGlyeVxuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcGFydHMgPSB0b2tlbi5zcGxpdCgnLicpO1xuICAgICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMyAmJiBwYXJ0c1sxXSkge1xuICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gSlNPTi5wYXJzZShCdWZmZXIuZnJvbShwYXJ0c1sxXSwgJ2Jhc2U2NHVybCcpLnRvU3RyaW5nKCd1dGYtOCcpKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXlsb2FkLmV4cCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHBpcmVzQXQgPSBuZXcgRGF0ZShwYXlsb2FkLmV4cCAqIDEwMDApO1xuICAgICAgICAgICAgICAgIHJlc3VsdHNbJ1Rva2VuIEV4cGlyZXMnXSA9IGV4cGlyZXNBdC50b0lTT1N0cmluZygpO1xuICAgICAgICAgICAgICAgIHJlc3VsdHNbJ1Rva2VuIEV4cGlyZWQnXSA9IGV4cGlyZXNBdC5nZXRUaW1lKCkgPCBEYXRlLm5vdygpID8gJ3llcycgOiAnbm8nO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICByZXN1bHRzWydUb2tlbiBFeHBpcmVzJ10gPSAndW5hYmxlIHRvIGRlY29kZSc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuanNvbikge1xuICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHsgc3VjY2VzczogdHJ1ZSwgZXhlY3V0aW9uSWQsIC4uLnJlc3VsdHMgfSwgbnVsbCwgMikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByaW50U2VjdGlvbignRW52aXJvbm1lbnQgU3RhdHVzJyk7XG4gICAgICAgICAgcHJpbnRLZXlWYWx1ZShyZXN1bHRzKTtcbiAgICAgICAgfVxuXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuR0VORVJBTCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiB0cnVlLFxuICAgICAgICAgIGNvbnRleHQ6IHsgY29tbWFuZDogJ3N0YXR1cycsIGV4ZWN1dGlvbklkIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xufVxuIl19
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3N0YXR1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRW5EOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFDLE9BQWdCO0lBQ3JDLE9BQU87U0FDSixPQUFPLENBQUMsUUFBUSxDQUFDO1NBQ2pCLFdBQVcsQ0FBQywwQ0FBMEMsQ0FBQztTQUN2RCxNQUFNLENBQUMsUUFBUSxFQUFFLHVCQUF1QixFQUFFLEtBQUssQ0FBQztTQUNoRCxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUEyQixFQUFFLENBQUM7WUFFM0MsMEJBQTBCO1lBQzFCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ25ELE9BQU8sQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUVuRCxnQ0FBZ0M7WUFDaEMsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQztZQUNwRCxPQUFPLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxJQUFJLFNBQVMsQ0FBQztZQUV2RCw0QkFBNEI7WUFDNUIsT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBRTlELDJCQUEyQjtZQUMzQixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLHdCQUF3QixDQUFDO1lBQ3BGLE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUM7WUFFcEMsSUFBSSxDQUFDO2dCQUNILGdGQUFnRjtnQkFDaEYsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxTQUFTLEVBQUU7b0JBQ25DLE9BQU8sRUFBRSxRQUFRLENBQUMsWUFBWTtvQkFDOUIsVUFBVSxFQUFFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztpQkFDdEMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFdBQVcsQ0FBQztZQUMzQyxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLGFBQWEsQ0FBQztZQUM3QyxDQUFDO1lBRUQsc0VBQXNFO1lBQ3RFLHNDQUFzQztZQUN0QyxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2IsT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLGtCQUFrQixDQUFDO2dCQUNoRCxDQUFDO3FCQUFNLElBQUksT0FBTyxPQUFPLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUMzQyxNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO29CQUMvQyxPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUNuRCxPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzdFLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkYsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUNuQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUVILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsT0FBTyxFQUFFO2dCQUN0QyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUs7Z0JBQzNCLElBQUksRUFBRSxJQUFJO2dCQUNWLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO2FBQzVDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgRU5WX1ZBUlMsIFRJTUVPVVRTIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgZGVjb2RlVG9rZW5QYXlsb2FkIH0gZnJvbSAnLi4vdXRpbHMvYXV0aC1ndWFyZC5qcyc7XG5pbXBvcnQgeyBjaGVja0Nka0F2YWlsYWJsZSB9IGZyb20gJy4uL3V0aWxzL2Nkay11dGlscy5qcyc7XG5pbXBvcnQgeyBwcmludENvbW1hbmRIZWFkZXIgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcbmltcG9ydCB7IGh0dHBzQWdlbnRGb3JVcmwgfSBmcm9tICcuLi91dGlscy90bHMuanMnO1xuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYHN0YXR1c2AgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBDaGVja3MgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBDREsgYXZhaWxhYmlsaXR5LCBwbGF0Zm9ybSBjb25uZWN0aXZpdHksXG4gKiBhbmQgdG9rZW4gZXhwaXJ5IHRvIGdpdmUgYSBxdWljayBvdmVydmlldyBvZiB0aGUgY3VycmVudCBzZXR1cC5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSByb290IENvbW1hbmRlciBwcm9ncmFtIGluc3RhbmNlIHRvIGF0dGFjaCB0aGUgY29tbWFuZCB0by5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YXR1cyhwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZCgnc3RhdHVzJylcbiAgICAuZGVzY3JpcHRpb24oJ1Nob3cgZW52aXJvbm1lbnQgYW5kIGNvbm5lY3Rpdml0eSBzdGF0dXMnKVxuICAgIC5vcHRpb24oJy0tanNvbicsICdPdXRwdXQgcmVzdWx0IGFzIEpTT04nLCBmYWxzZSlcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignU3RhdHVzJyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICAgICAgICAvLyAxLiBDaGVjayBQTEFURk9STV9UT0tFTlxuICAgICAgICBjb25zdCB0b2tlbiA9IHByb2Nlc3MuZW52W0VOVl9WQVJTLlBMQVRGT1JNX1RPS0VOXTtcbiAgICAgICAgcmVzdWx0cy5QTEFURk9STV9UT0tFTiA9IHRva2VuID8gJ3NldCcgOiAnbm90IHNldCc7XG5cbiAgICAgICAgLy8gMi4gQ2hlY2sgUExBVEZPUk1fU0VDUkVUX05BTUVcbiAgICAgICAgY29uc3Qgc2VjcmV0TmFtZSA9IHByb2Nlc3MuZW52LlBMQVRGT1JNX1NFQ1JFVF9OQU1FO1xuICAgICAgICByZXN1bHRzLlBMQVRGT1JNX1NFQ1JFVF9OQU1FID0gc2VjcmV0TmFtZSB8fCAnbm90IHNldCc7XG5cbiAgICAgICAgLy8gMy4gQ2hlY2sgQ0RLIGF2YWlsYWJpbGl0eVxuICAgICAgICByZXN1bHRzWydDREsgQXZhaWxhYmxlJ10gPSBjaGVja0Nka0F2YWlsYWJsZSgpID8gJ3llcycgOiAnbm8nO1xuXG4gICAgICAgIC8vIDQuIENoZWNrIHBsYXRmb3JtIGhlYWx0aFxuICAgICAgICBjb25zdCBiYXNlVXJsID0gcHJvY2Vzcy5lbnZbRU5WX1ZBUlMuUExBVEZPUk1fQkFTRV9VUkxdIHx8ICdodHRwczovL2xvY2FsaG9zdDo4NDQzJztcbiAgICAgICAgcmVzdWx0cy5QTEFURk9STV9CQVNFX1VSTCA9IGJhc2VVcmw7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBTa2lwIGNlcnQgdmVyaWZpY2F0aW9uIG9ubHkgZm9yIGxvY2FsL3NlbGYtc2lnbmVkIGhvc3RzOyB2ZXJpZnkgcmVhbCBkb21haW5zLlxuICAgICAgICAgIGF3YWl0IGF4aW9zLmdldChgJHtiYXNlVXJsfS9oZWFsdGhgLCB7XG4gICAgICAgICAgICB0aW1lb3V0OiBUSU1FT1VUUy5IRUFMVEhfQ0hFQ0ssXG4gICAgICAgICAgICBodHRwc0FnZW50OiBodHRwc0FnZW50Rm9yVXJsKGJhc2VVcmwpLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJlc3VsdHNbJ1BsYXRmb3JtIEhlYWx0aCddID0gJ3JlYWNoYWJsZSc7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHJlc3VsdHNbJ1BsYXRmb3JtIEhlYWx0aCddID0gJ3VucmVhY2hhYmxlJztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDUuIERlY29kZSB0b2tlbiBleHBpcnkgKHNoYXJlZCBkZWNvZGVyIOKAlCBzYW1lIGJhc2U2NHVybCArIGV4cCBsb2dpY1xuICAgICAgICAvLyB1c2VkIGJ5IGF1ZGl0LXRva2VucyAvIGFwaS1jbGllbnQpLlxuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gZGVjb2RlVG9rZW5QYXlsb2FkKHRva2VuKTtcbiAgICAgICAgICBpZiAoIXBheWxvYWQpIHtcbiAgICAgICAgICAgIHJlc3VsdHNbJ1Rva2VuIEV4cGlyZXMnXSA9ICd1bmFibGUgdG8gZGVjb2RlJztcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwYXlsb2FkLmV4cCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4cGlyZXNBdCA9IG5ldyBEYXRlKHBheWxvYWQuZXhwICogMTAwMCk7XG4gICAgICAgICAgICByZXN1bHRzWydUb2tlbiBFeHBpcmVzJ10gPSBleHBpcmVzQXQudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgIHJlc3VsdHNbJ1Rva2VuIEV4cGlyZWQnXSA9IGV4cGlyZXNBdC5nZXRUaW1lKCkgPCBEYXRlLm5vdygpID8gJ3llcycgOiAnbm8nO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmpzb24pIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7IHN1Y2Nlc3M6IHRydWUsIGV4ZWN1dGlvbklkLCAuLi5yZXN1bHRzIH0sIG51bGwsIDIpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmludFNlY3Rpb24oJ0Vudmlyb25tZW50IFN0YXR1cycpO1xuICAgICAgICAgIHByaW50S2V5VmFsdWUocmVzdWx0cyk7XG4gICAgICAgIH1cblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkdFTkVSQUwsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7IGNvbW1hbmQ6ICdzdGF0dXMnLCBleGVjdXRpb25JZCB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
@@ -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;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8MjD"}
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;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsNjD"}
@@ -114,6 +114,7 @@ export function storeToken(program) {
114
114
  .option('-e, --email <email>', 'Login email (skips PLATFORM_TOKEN requirement)')
115
115
  .option('-p, --password <password>', 'Login password (used with --email)')
116
116
  .option('--days <days>', 'Token lifetime in days', '30')
117
+ .option('--scope <scope>', 'Mint a narrow-scope machine token (e.g. "reporting:ingest") and store it at a scope-specific secret path instead of the shared platform secret')
117
118
  .option('--dry-run', 'Show what would be stored without writing to Secrets Manager', false)
118
119
  .option('--region <region>', 'AWS region (default: us-east-1, or AWS_REGION env)')
119
120
  .option('--profile <profile>', 'AWS CLI profile', 'default')
@@ -141,7 +142,14 @@ export function storeToken(program) {
141
142
  // Resolve secret name from the token's organizationId. An explicit
142
143
  // PLATFORM_SECRET_NAME env wins (escape hatch for system/no-org tokens and
143
144
  // the renewal Lambda); otherwise derive `{prefix}/{orgId}/platform`.
144
- const secretName = process.env.PLATFORM_SECRET_NAME || resolveSecretName(process.env.PLATFORM_TOKEN);
145
+ // A `--scope` token is a distinct machine credential — store it at a
146
+ // scope-specific path (`.../reporting-ingest`) so it never clobbers the
147
+ // full-privilege platform token used by synth/deploy callbacks.
148
+ const scope = options.scope;
149
+ const baseSecretName = process.env.PLATFORM_SECRET_NAME || resolveSecretName(process.env.PLATFORM_TOKEN);
150
+ const secretName = scope && !process.env.PLATFORM_SECRET_NAME
151
+ ? baseSecretName.replace(/\/platform$/, `/${scope.replace(/[^a-z0-9]+/gi, '-')}`)
152
+ : baseSecretName;
145
153
  auditLog('store-token', { executionId, secretName, days, dryRun: options.dryRun });
146
154
  printInfo('Parameters', {
147
155
  secretName,
@@ -151,7 +159,7 @@ export function storeToken(program) {
151
159
  dryRun: options.dryRun,
152
160
  });
153
161
  printInfo('Requesting token', { expiresIn: `${expiresInSeconds}s (${days} days)` });
154
- const tokenResponse = await client.post('/api/user/generate-token', { expiresIn: expiresInSeconds });
162
+ const tokenResponse = await client.post('/api/user/generate-token', { expiresIn: expiresInSeconds, ...(scope ? { scope } : {}) });
155
163
  const tokenData = tokenResponse?.data ?? tokenResponse;
156
164
  const accessToken = tokenData?.accessToken;
157
165
  const refreshToken = tokenData?.refreshToken;
@@ -289,4 +297,4 @@ export function storeToken(program) {
289
297
  }
290
298
  });
291
299
  }
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtdG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc3RvcmUtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFB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QUN2QixTQUFTLENBQUMsMkJBQTJCLGtCQUFrQixrQ0FBa0MsU0FBUyxHQUFHLENBQUMsQ0FBQztnQkFDekcsQ0FBQztxQkFBTSxDQUFDO29CQUNOLFNBQVMsQ0FBQyxnQkFBZ0IsU0FBUyw4Q0FBOEMsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDekYsU0FBUyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7Z0JBQzVFLENBQUM7WUFDSCxDQUFDO1FBRUgsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRSxhQUFhO29CQUN0QixXQUFXO29CQUNYLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixJQUFJLHNCQUFzQjtpQkFDdkU7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGV4ZWNGaWxlU3luYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgTGFtYmRhQ2xpZW50LCBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWxhbWJkYSc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IEFQUF9WRVJTSU9OLCB2YWxpZGF0ZU51bWJlciB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IGF1ZGl0TG9nIH0gZnJvbSAnLi4vdXRpbHMvYXVkaXQtbG9nLmpzJztcbmltcG9ydCB7IGRlY29kZVRva2VuUGF5bG9hZCB9IGZyb20gJy4uL3V0aWxzL2F1dGgtZ3VhcmQuanMnO1xuaW1wb3J0IHsgdXBzZXJ0U2VjcmV0LCBnZXRTZWNyZXRBcm4gfSBmcm9tICcuLi91dGlscy9hd3Mtc2VjcmV0cy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMsIHByaW50Q29tbWFuZEhlYWRlciwgcHJpbnRTc2xXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyB0b0V2ZW50QnJpZGdlQ3JvbiB9IGZyb20gJy4uL3V0aWxzL2Nyb24uanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcbmltcG9ydCB7IGVuc3VyZVBsYXRmb3JtVG9rZW4sIHJlc29sdmVTZWNyZXROYW1lIH0gZnJvbSAnLi4vdXRpbHMvcGxhdGZvcm0tc2VjcmV0LmpzJztcblxuLy8gRVNNIGhhcyBubyBfX2Rpcm5hbWU7IGRlcml2ZSBpdCBmcm9tIHRoaXMgbW9kdWxlJ3MgVVJMLlxuY29uc3QgX19kaXJuYW1lID0gcGF0aC5kaXJuYW1lKGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKSk7XG5cbmNvbnN0IFJFTkVXX1NUQUNLX05BTUUgPSAncGlwZWxpbmUtYnVpbGRlci10b2tlbi1yZW5ldyc7XG4vLyBDRk4tbWFuYWdlZCBMYW1iZGEgZnVuY3Rpb24gbmFtZSDigJQga2VlcCBpbiBzeW5jIHdpdGggdG9rZW4tcmVuZXctc3RhY2suanNvbi5cbmNvbnN0IFJFTkVXX0xBTUJEQV9OQU1FID0gJ3BpcGVsaW5lLWJ1aWxkZXItdG9rZW4tcmVuZXcnO1xuLy8gRGVmYXVsdCA1LWZpZWxkIGNyb24gKGRhaWx5IGF0IG1pZG5pZ2h0KSB3aGVuIG5laXRoZXIgLS1jcm9uIG5vciBUT0tFTl9SRU5FV19TQ0hFRFVMRSBpcyBzZXQuXG5jb25zdCBERUZBVUxUX1JFTkVXX0NST04gPSAnMCAwICogKiAqJztcblxuLyoqXG4gKiBEZXBsb3kgKG9yIHVwZGF0ZSkgdGhlIG9uY2UtYS1kYXkgdG9rZW4tcmVuZXdhbCBzdGFjazogYSBzY2hlZHVsZWQgTGFtYmRhIHRoYXRcbiAqIHJlLW1pbnRzIHRoZSBwbGF0Zm9ybSBKV1QgaW4gdGhpcyBzYW1lIHNlY3JldCBiZWZvcmUgaXQgZXhwaXJlcy4gTWlycm9yc1xuICogc2V0dXAtZXZlbnRzIOKAlCBgYXdzIGNsb3VkZm9ybWF0aW9uIGRlcGxveWAgZm9yIHRoZSBpbmZyYSwgdGhlbiBhIGRpcmVjdFxuICogVXBkYXRlRnVuY3Rpb25Db2RlIHdpdGggdGhlIHRoaW4gb3JjaGVzdHJhdG9yIGhhbmRsZXIgY29tcGlsZWQgYWxvbmdzaWRlIHRoaXNcbiAqIENMSSAodGhlIGhhbmRsZXIgbnBtLWluc3RhbGxzIHBpcGVsaW5lLW1hbmFnZXIgYXQgcnVudGltZSBhbmQgcmUtcnVuc1xuICogc3RvcmUtdG9rZW47IHNlZSBzcmMvbGFtYmRhL3Rva2VuLXJlbmV3LWhhbmRsZXIudHMpLlxuICovXG5hc3luYyBmdW5jdGlvbiBkZXBsb3lSZW5ld1NjaGVkdWxlKG9wdHM6IHtcbiAgcGxhdGZvcm1Vcmw6IHN0cmluZztcbiAgc2VjcmV0TmFtZTogc3RyaW5nO1xuICBkYXlzOiBudW1iZXI7XG4gIGZpdmVGaWVsZENyb246IHN0cmluZztcbiAgcmVnaW9uOiBzdHJpbmc7XG4gIHByb2ZpbGU/OiBzdHJpbmc7XG59KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgc2NoZWR1bGVFeHByZXNzaW9uID0gdG9FdmVudEJyaWRnZUNyb24ob3B0cy5maXZlRmllbGRDcm9uKTsgLy8gdmFsaWRhdGVzICsgMTUtbWluIGd1YXJkXG5cbiAgcHJpbnRTZWN0aW9uKCdTY2hlZHVsZSBSZW5ld2FsJyk7XG4gIHByaW50SW5mbygnUGFyYW1ldGVycycsIHtcbiAgICBzdGFjazogUkVORVdfU1RBQ0tfTkFNRSxcbiAgICBzY2hlZHVsZTogb3B0cy5maXZlRmllbGRDcm9uLFxuICAgIGV2ZW50YnJpZGdlOiBzY2hlZHVsZUV4cHJlc3Npb24sXG4gICAgcmVuZXdEYXlzOiBvcHRzLmRheXMsXG4gIH0pO1xuXG4gIC8vIFN0ZXAgMTogaW5mcmEgKExhbWJkYSBnZXRzIHBsYWNlaG9sZGVyIGNvZGUgb24gZmlyc3QgY3JlYXRlKS5cbiAgY29uc3QgdGVtcGxhdGVQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL3RlbXBsYXRlcy90b2tlbi1yZW5ldy1zdGFjay5qc29uJyk7XG4gIGNvbnN0IGNmbkFyZ3MgPSBbXG4gICAgJ2Nsb3VkZm9ybWF0aW9uJywgJ2RlcGxveScsXG4gICAgJy0tc3RhY2stbmFtZScsIFJFTkVXX1NUQUNLX05BTUUsXG4gICAgJy0tdGVtcGxhdGUtZmlsZScsIHRlbXBsYXRlUGF0aCxcbiAgICAnLS1wYXJhbWV0ZXItb3ZlcnJpZGVzJyxcbiAgICBgUGxhdGZvcm1CYXNlVXJsPSR7b3B0cy5wbGF0Zm9ybVVybH1gLFxuICAgIGBQbGF0Zm9ybVNlY3JldE5hbWU9JHtvcHRzLnNlY3JldE5hbWV9YCxcbiAgICBgUmVuZXdEYXlzPSR7b3B0cy5kYXlzfWAsXG4gICAgYFNjaGVkdWxlRXhwcmVzc2lvbj0ke3NjaGVkdWxlRXhwcmVzc2lvbn1gLFxuICAgIC8vIFBpbiB0aGUgaGFuZGxlcidzIHJ1bnRpbWUgbnBtIGluc3RhbGwgdG8gVEhJUyBDTEkncyB2ZXJzaW9uIChyZXByb2R1Y2libGVcbiAgICAvLyByZW5ld2FscyBpbnN0ZWFkIG9mIGEgZmxvYXRpbmcgXCJsYXRlc3RcIikuXG4gICAgYFBpcGVsaW5lTWFuYWdlclZlcnNpb249JHtBUFBfVkVSU0lPTn1gLFxuICAgICctLWNhcGFiaWxpdGllcycsICdDQVBBQklMSVRZX05BTUVEX0lBTScsXG4gICAgJy0tbm8tZmFpbC1vbi1lbXB0eS1jaGFuZ2VzZXQnLFxuICAgICctLXJlZ2lvbicsIG9wdHMucmVnaW9uLFxuICBdO1xuICBpZiAob3B0cy5wcm9maWxlKSBjZm5BcmdzLnB1c2goJy0tcHJvZmlsZScsIG9wdHMucHJvZmlsZSk7XG4gIGV4ZWNGaWxlU3luYygnYXdzJywgY2ZuQXJncywgeyBzdGRpbzogJ2luaGVyaXQnIH0pO1xuXG4gIC8vIFN0ZXAgMjogdXBsb2FkIHRoZSByZWFsIGhhbmRsZXIuIEl0J3MgRVNNLCBzbyB0aGUgemlwIGVudHJ5IG11c3QgYmUgaW5kZXgubWpzXG4gIC8vIChIYW5kbGVyIHN0YXlzIGluZGV4LmhhbmRsZXIg4oCUIG5vZGVqczI0LnggcmVzb2x2ZXMgdGhlIC5tanMgZXh0ZW5zaW9uKS5cbiAgY29uc3QgaGFuZGxlclNyYyA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9sYW1iZGEvdG9rZW4tcmVuZXctaGFuZGxlci5qcycpO1xuICBpZiAoIWZzLmV4aXN0c1N5bmMoaGFuZGxlclNyYykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRva2VuLXJlbmV3IGhhbmRsZXIgbm90IGZvdW5kIGF0ICR7aGFuZGxlclNyY30g4oCUIHdhcyB0aGUgcGFja2FnZSBidWlsdD9gKTtcbiAgfVxuICBjb25zdCB0bXBEaXIgPSBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksICd0b2tlbi1yZW5ldy0nKSk7XG4gIHRyeSB7XG4gICAgZnMuY29weUZpbGVTeW5jKGhhbmRsZXJTcmMsIHBhdGguam9pbih0bXBEaXIsICdpbmRleC5tanMnKSk7XG4gICAgY29uc3QgemlwUGF0aCA9IHBhdGguam9pbih0bXBEaXIsICdpbmRleC56aXAnKTtcbiAgICBleGVjRmlsZVN5bmMoJ3ppcCcsIFsnLWonLCB6aXBQYXRoLCAnaW5kZXgubWpzJ10sIHsgY3dkOiB0bXBEaXIsIHN0ZGlvOiAncGlwZScgfSk7XG5cbiAgICBjb25zdCBsYW1iZGFDbGllbnQgPSBuZXcgTGFtYmRhQ2xpZW50KHsgcmVnaW9uOiBvcHRzLnJlZ2lvbiB9KTtcbiAgICBhd2FpdCBsYW1iZGFDbGllbnQuc2VuZChuZXcgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZCh7XG4gICAgICBGdW5jdGlvbk5hbWU6IFJFTkVXX0xBTUJEQV9OQU1FLFxuICAgICAgWmlwRmlsZTogZnMucmVhZEZpbGVTeW5jKHppcFBhdGgpLFxuICAgIH0pKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBmcy5ybVN5bmModG1wRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gIH1cblxuICBwcmludFN1Y2Nlc3MoYFJlbmV3YWwgc2NoZWR1bGVkICgke3NjaGVkdWxlRXhwcmVzc2lvbn0pYCk7XG4gIHJldHVybiBzY2hlZHVsZUV4cHJlc3Npb247XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgc3RvcmUtdG9rZW5gIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogR2VuZXJhdGVzIGEgbG9uZy1saXZlZCBKV1QgdG9rZW4gdmlhIHRoZSBwbGF0Zm9ybSBBUEkgYW5kIHN0b3JlcyBpdFxuICogaW4gQVdTIFNlY3JldHMgTWFuYWdlciBmb3IgdXNlIGJ5IHRoZSBzeW50aC9kZXBsb3kgLS1zdG9yZS10b2tlbnMgZmxhZy5cbiAqXG4gKiBSZXF1aXJlcyBQTEFURk9STV9UT0tFTiB0byBiZSBzZXQsIG9yIHVzZSAtLWVtYWlsLy0tcGFzc3dvcmQgdG8gbG9naW4gaW5saW5lLlxuICpcbiAqIEJ5IGRlZmF1bHQgaXQgT05MWSB3cml0ZXMgdGhlIHNlY3JldC4gUGFzcyAtLXNjaGVkdWxlIHRvIGFsc28gZGVwbG95IHRoZSBkYWlseVxuICogdG9rZW4tcmVuZXdhbCBzdGFjayAoYSBMYW1iZGEgdGhhdCBhdXRvLXJlbmV3cyB0aGlzIHRva2VuIGJlZm9yZSBpdCBleHBpcmVzKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgYmFzaFxuICogcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbiAtLXJlZ2lvbiB1cy1lYXN0LTFcbiAqIHBpcGVsaW5lLW1hbmFnZXIgc3RvcmUtdG9rZW4gLS1kYXlzIDkwIC0tcmVnaW9uIHVzLWVhc3QtMVxuICogcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbiAtLXNjaGVkdWxlIC0tcmVnaW9uIHVzLWVhc3QtMSAgICAgICAgICAjICsgZGFpbHkgYXV0by1yZW5ld2FsXG4gKiBwaXBlbGluZS1tYW5hZ2VyIHN0b3JlLXRva2VuIC0tc2NoZWR1bGUgLS1jcm9uICcwIDMgKiAqIConICAgICAgICAgICMgY3VzdG9tIHJlbmV3YWwgdGltZVxuICogcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbiAtLWRheXMgNyAtLW5vLXZlcmlmeS1zc2xcbiAqIFBMQVRGT1JNX1NFQ1JFVF9OQU1FPW15LWN1c3RvbS1zZWNyZXQgcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbiAgICMgb3ZlcnJpZGUgdGhlIGRlcml2ZWQgbmFtZVxuICogcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbiAtLWRyeS1ydW5cbiAqIHBpcGVsaW5lLW1hbmFnZXIgc3RvcmUtdG9rZW4gLWUgYWRtaW4gLXAgJyoqKicgLS1yZWdpb24gdXMtZWFzdC0xXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0b3JlVG9rZW4ocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ3N0b3JlLXRva2VuJylcbiAgICAuZGVzY3JpcHRpb24oJ0dlbmVyYXRlIEpXVCB0b2tlbiBhbmQgc3RvcmUgaW4gQVdTIFNlY3JldHMgTWFuYWdlciBmb3IgQ0RLIGRlcGxveW1lbnRzJylcbiAgICAub3B0aW9uKCctZSwgLS1lbWFpbCA8ZW1haWw+JywgJ0xvZ2luIGVtYWlsIChza2lwcyBQTEFURk9STV9UT0tFTiByZXF1aXJlbWVudCknKVxuICAgIC5vcHRpb24oJy1wLCAtLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnTG9naW4gcGFzc3dvcmQgKHVzZWQgd2l0aCAtLWVtYWlsKScpXG4gICAgLm9wdGlvbignLS1kYXlzIDxkYXlzPicsICdUb2tlbiBsaWZldGltZSBpbiBkYXlzJywgJzMwJylcbiAgICAub3B0aW9uKCctLWRyeS1ydW4nLCAnU2hvdyB3aGF0IHdvdWxkIGJlIHN0b3JlZCB3aXRob3V0IHdyaXRpbmcgdG8gU2VjcmV0cyBNYW5hZ2VyJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS1yZWdpb24gPHJlZ2lvbj4nLCAnQVdTIHJlZ2lvbiAoZGVmYXVsdDogdXMtZWFzdC0xLCBvciBBV1NfUkVHSU9OIGVudiknKVxuICAgIC5vcHRpb24oJy0tcHJvZmlsZSA8cHJvZmlsZT4nLCAnQVdTIENMSSBwcm9maWxlJywgJ2RlZmF1bHQnKVxuICAgIC5vcHRpb24oJy0tc2NoZWR1bGUnLCAnQWxzbyBkZXBsb3kgdGhlIGRhaWx5IHRva2VuLXJlbmV3YWwgc3RhY2sgdGhhdCBhdXRvLXJlbmV3cyB0aGlzIHRva2VuIChvZmYgYnkgZGVmYXVsdCknLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLWNyb24gPGV4cHI+JywgJ1JlbmV3YWwgc2NoZWR1bGUgYXMgYSA1LWZpZWxkIGNyb24sIHVzZWQgd2l0aCAtLXNjaGVkdWxlIChkZWZhdWx0OiBUT0tFTl9SRU5FV19TQ0hFRFVMRSBlbnYgb3IgXCIwIDAgKiAqICpcIjsgbWluIGV2ZXJ5IDE1IG1pbnV0ZXMpJylcbiAgICAub3B0aW9uKCctLWpzb24nLCAnT3V0cHV0IHJlc3VsdCBhcyBKU09OJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS12ZXJpZnktc3NsJywgJ0VuYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLW5vLXZlcmlmeS1zc2wnLCAnRGlzYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignU3RvcmUgVG9rZW4nKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgcHJpbnRTc2xXYXJuaW5nKG9wdGlvbnMudmVyaWZ5U3NsKTtcblxuICAgICAgICBjb25zdCByZWdpb24gPSBvcHRpb25zLnJlZ2lvbiB8fCBwcm9jZXNzLmVudi5BV1NfUkVHSU9OIHx8IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTiB8fCAndXMtZWFzdC0xJztcblxuICAgICAgICBjb25zdCBkYXlzID0gdmFsaWRhdGVOdW1iZXIob3B0aW9ucy5kYXlzLCAnZGF5cycsIDEsIDM2NSk7XG4gICAgICAgIGNvbnN0IGV4cGlyZXNJblNlY29uZHMgPSBkYXlzICogMjQgKiA2MCAqIDYwO1xuXG4gICAgICAgIC8vIFN0ZXAgMDogbG9nIGluIGZpcnN0IHdoZW4gY3JlZHMgYXJlIGF2YWlsYWJsZSBhbmQgbm8gUExBVEZPUk1fVE9LRU4gaXMgc2V0XG4gICAgICAgIC8vIChzaGFyZWQgd2l0aCBzZXR1cC1ldmVudHMpLiBDcmVkcyBjb21lIGZyb20gLS1lbWFpbC8tLXBhc3N3b3JkIE9SIHRoZSBlbnZcbiAgICAgICAgLy8gdmFycyBQTEFURk9STV9JREVOVElGSUVSL1BMQVRGT1JNX1BBU1NXT1JEIOKAlCB0aGUgZW52IHBhdGggbGV0cyBjYWxsZXJzIGxpa2VcbiAgICAgICAgLy8gYHByb3Zpc2lvbiAtLXdpdGgtZXZlbnRzYCBwYXNzIHRoZW0gd2l0aG91dCBwdXR0aW5nIHRoZSBwYXNzd29yZCBvbiB0aGVcbiAgICAgICAgLy8gY29tbWFuZCBsaW5lICh3aGVyZSBpdCB3b3VsZCBzaG93IGluIHBsYW5zL2xvZ3MpLlxuICAgICAgICBhd2FpdCBlbnN1cmVQbGF0Zm9ybVRva2VuKG9wdGlvbnMpO1xuXG4gICAgICAgIC8vIFN0ZXAgMTogQXV0aGVudGljYXRlIGFuZCBnZW5lcmF0ZSBsb25nLWxpdmVkIHRva2VuXG4gICAgICAgIHByaW50U2VjdGlvbignR2VuZXJhdGUgVG9rZW4nKTtcblxuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMob3B0aW9ucyk7XG5cbiAgICAgICAgLy8gUmVzb2x2ZSBzZWNyZXQgbmFtZSBmcm9tIHRoZSB0b2tlbidzIG9yZ2FuaXphdGlvbklkLiBBbiBleHBsaWNpdFxuICAgICAgICAvLyBQTEFURk9STV9TRUNSRVRfTkFNRSBlbnYgd2lucyAoZXNjYXBlIGhhdGNoIGZvciBzeXN0ZW0vbm8tb3JnIHRva2VucyBhbmRcbiAgICAgICAgLy8gdGhlIHJlbmV3YWwgTGFtYmRhKTsgb3RoZXJ3aXNlIGRlcml2ZSBge3ByZWZpeH0ve29yZ0lkfS9wbGF0Zm9ybWAuXG4gICAgICAgIGNvbnN0IHNlY3JldE5hbWUgPSBwcm9jZXNzLmVudi5QTEFURk9STV9TRUNSRVRfTkFNRSB8fCByZXNvbHZlU2VjcmV0TmFtZShwcm9jZXNzLmVudi5QTEFURk9STV9UT0tFTiEpO1xuXG4gICAgICAgIGF1ZGl0TG9nKCdzdG9yZS10b2tlbicsIHsgZXhlY3V0aW9uSWQsIHNlY3JldE5hbWUsIGRheXMsIGRyeVJ1bjogb3B0aW9ucy5kcnlSdW4gfSk7XG5cbiAgICAgICAgcHJpbnRJbmZvKCdQYXJhbWV0ZXJzJywge1xuICAgICAgICAgIHNlY3JldE5hbWUsXG4gICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgIGRheXMsXG4gICAgICAgICAgZXhwaXJlc0luOiBgJHtleHBpcmVzSW5TZWNvbmRzfXNgLFxuICAgICAgICAgIGRyeVJ1bjogb3B0aW9ucy5kcnlSdW4sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHByaW50SW5mbygnUmVxdWVzdGluZyB0b2tlbicsIHsgZXhwaXJlc0luOiBgJHtleHBpcmVzSW5TZWNvbmRzfXMgKCR7ZGF5c30gZGF5cylgIH0pO1xuXG4gICAgICAgIGNvbnN0IHRva2VuUmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgICAgICAgJy9hcGkvdXNlci9nZW5lcmF0ZS10b2tlbicsXG4gICAgICAgICAgeyBleHBpcmVzSW46IGV4cGlyZXNJblNlY29uZHMgfSxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB0b2tlbkRhdGEgPSAodG9rZW5SZXNwb25zZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik/LmRhdGEgPz8gdG9rZW5SZXNwb25zZTtcbiAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSAodG9rZW5EYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8uYWNjZXNzVG9rZW4gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCByZWZyZXNoVG9rZW4gPSAodG9rZW5EYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8ucmVmcmVzaFRva2VuIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgYWN0dWFsRXhwaXJlc0luID0gKCh0b2tlbkRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pPy5leHBpcmVzSW4gYXMgbnVtYmVyKSA/PyBleHBpcmVzSW5TZWNvbmRzO1xuXG4gICAgICAgIGlmICghYWNjZXNzVG9rZW4pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Rva2VuIGdlbmVyYXRpb24gZmFpbGVkIOKAlCBubyBhY2Nlc3MgdG9rZW4gaW4gcmVzcG9uc2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByaW50U3VjY2VzcyhgVG9rZW4gZ2VuZXJhdGVkIChleHBpcmVzIGluICR7YWN0dWFsRXhwaXJlc0lufXMpYCk7XG5cbiAgICAgICAgY29uc3QgZXhwaXJlc0F0ID0gbmV3IERhdGUoRGF0ZS5ub3coKSArIGFjdHVhbEV4cGlyZXNJbiAqIDEwMDApLnRvSVNPU3RyaW5nKCk7XG5cbiAgICAgICAgLy8gU2NoZW1hOiB7IHVzZXJuYW1lOiBvcmdJZCwgcGFzc3dvcmQ6IEpXVCwgLi4ubWV0YWRhdGEgfVxuICAgICAgICAvLyAtIHVzZXJuYW1lL3Bhc3N3b3JkIGZpZWxkcyBzYXRpc2Z5IENvZGVCdWlsZCdzIGBzZWNyZXRzTWFuYWdlckNyZWRlbnRpYWxzYFxuICAgICAgICAvLyAgIChIVFRQIEJhc2ljLCBzZW50IHRvIHBpcGVsaW5lLWltYWdlLXJlZ2lzdHJ5J3MgL3Rva2VuIGVuZHBvaW50KVxuICAgICAgICAvLyAtIFRoZSBzYW1lIEpXVCBpcyBjb25zdW1lZCBieSB0aGUgcGx1Z2luLWxvb2t1cCBMYW1iZGEgYnkgcmVhZGluZ1xuICAgICAgICAvLyAgIHRoZSBgcGFzc3dvcmRgIGZpZWxkXG4gICAgICAgIC8vIC0gT25lIFNlY3JldCBwZXIgY3VzdG9tZXIgYWNjb3VudCByZXBsYWNlcyB0aGUgcHJldmlvdXMgdHdvLXNlY3JldCBtb2RlbFxuICAgICAgICAvLyBEZWNvZGUgSldUIGZvciBvcmdJZCDigJQgaXQncyBhIHN0YWJsZSBpZGVudGlmaWVyIGZvciB0aGUgdXNlcm5hbWUgZmllbGQ7XG4gICAgICAgIC8vIHRoZSBhY3R1YWwgYXV0aCB1c2VzIHRoZSBwYXNzd29yZCAoSldUKSB3aGljaCB0aGUgdG9rZW4gc2VydmljZSB2ZXJpZmllcy5cbiAgICAgICAgLy8gYHx8YCAobm90IGA/P2ApOiBhbiBFTVBUWS1zdHJpbmcgb3JnYW5pemF0aW9uSWQgbXVzdCBhbHNvIGZhbGwgYmFjay4gQVxuICAgICAgICAvLyBzeXNhZG1pbi9zeXN0ZW0gdG9rZW4gb2Z0ZW4gY2FycmllcyBvcmdhbml6YXRpb25JZD1cIlwiLCBhbmQgQ29kZUJ1aWxkXG4gICAgICAgIC8vIHJlamVjdHMgYSByZWdpc3RyeSBjcmVkZW50aWFsIHdob3NlIGB1c2VybmFtZWAgZmllbGQgaXMgZW1wdHkgd2l0aFxuICAgICAgICAvLyBcIkF1dGhvcml6YXRpb25EYXRhIGlzIG1hbGZvcm1lZCwgZW1wdHkgZmllbGRcIiDigJQgc28gdXNlcm5hbWUgbXVzdCBhbHdheXNcbiAgICAgICAgLy8gYmUgYSBub24tZW1wdHkgdmFsdWUuXG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBkZWNvZGVUb2tlblBheWxvYWQoYWNjZXNzVG9rZW4pO1xuICAgICAgICBjb25zdCBvcmdJZCA9IHBheWxvYWQ/Lm9yZ2FuaXphdGlvbklkPy50cmltKCkgfHwgJ3Vua25vd24tb3JnJztcblxuICAgICAgICBjb25zdCBzZWNyZXRWYWx1ZSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICB1c2VybmFtZTogb3JnSWQsXG4gICAgICAgICAgcGFzc3dvcmQ6IGFjY2Vzc1Rva2VuLFxuICAgICAgICAgIC8vIGBhY2Nlc3NUb2tlbmAgZHVwbGljYXRlcyB0aGUgSldUIHVuZGVyIHRoZSBuYW1lIHRoZSBldmVudC1pbmdlc3Rpb25cbiAgICAgICAgICAvLyBMYW1iZGEgcmVhZHMsIHNvIGFuIGFscmVhZHktZGVwbG95ZWQgZXZlbnRzIHN0YWNrIHdvcmtzIGFmdGVyIGEgcGxhaW5cbiAgICAgICAgICAvLyBzdG9yZS10b2tlbiByZS1ydW4gKG5vIHBpcGVsaW5lLWV2ZW50cyByZXB1Ymxpc2ggbmVlZGVkKS4gYHBhc3N3b3JkYFxuICAgICAgICAgIC8vIHJlbWFpbnMgY2Fub25pY2FsIChDb2RlQnVpbGQgY3JlZHMsIHBsdWdpbi1sb29rdXAsIHRva2VuLXJlbmV3KS5cbiAgICAgICAgICBhY2Nlc3NUb2tlbixcbiAgICAgICAgICAuLi4ocmVmcmVzaFRva2VuICYmIHsgcmVmcmVzaFRva2VuIH0pLFxuICAgICAgICAgIHBsYXRmb3JtVXJsOiBjbGllbnQuZ2V0QmFzZVVybCgpLFxuICAgICAgICAgIGV4cGlyZXNJbjogYWN0dWFsRXhwaXJlc0luLFxuICAgICAgICAgIGV4cGlyZXNBdCxcbiAgICAgICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRHJ5LXJ1bjogc2hvdyB3aGF0IHdvdWxkIGJlIHN0b3JlZFxuICAgICAgICBpZiAob3B0aW9ucy5kcnlSdW4pIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5qc29uKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgICAgIGRyeVJ1bjogdHJ1ZSxcbiAgICAgICAgICAgICAgc2VjcmV0TmFtZSxcbiAgICAgICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgICAgICBleHBpcmVzSW5EYXlzOiBkYXlzLFxuICAgICAgICAgICAgICBleHBpcmVzQXQsXG4gICAgICAgICAgICAgIHRva2VuTGVuZ3RoOiBhY2Nlc3NUb2tlbi5sZW5ndGgsXG4gICAgICAgICAgICAgIGhhc1JlZnJlc2hUb2tlbjogISFyZWZyZXNoVG9rZW4sXG4gICAgICAgICAgICB9LCBudWxsLCAyKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgICAgIHByaW50U2VjdGlvbignRHJ5IFJ1biDigJQgTm8gQ2hhbmdlcyBNYWRlJyk7XG4gICAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgICAgJ1NlY3JldCBOYW1lJzogc2VjcmV0TmFtZSxcbiAgICAgICAgICAgICAgJ1JlZ2lvbic6IHJlZ2lvbixcbiAgICAgICAgICAgICAgJ0V4cGlyZXMgSW4nOiBgJHtkYXlzfSBkYXlzYCxcbiAgICAgICAgICAgICAgJ1JlbmV3IEJ5JzogZXhwaXJlc0F0LFxuICAgICAgICAgICAgICAnVG9rZW4gTGVuZ3RoJzogYCR7YWNjZXNzVG9rZW4ubGVuZ3RofSBjaGFyc2AsXG4gICAgICAgICAgICAgICdIYXMgUmVmcmVzaCBUb2tlbic6IHJlZnJlc2hUb2tlbiA/ICdZZXMnIDogJ05vJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcHJpbnRTdWNjZXNzKCdEcnkgcnVuIGNvbXBsZXRlIOKAlCBubyBzZWNyZXQgd2FzIGNyZWF0ZWQgb3IgdXBkYXRlZCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdGVwIDI6IFN0b3JlIHRva2VuIGluIFNlY3JldHMgTWFuYWdlclxuICAgICAgICBwcmludFNlY3Rpb24oJ1N0b3JlIFRva2VuJyk7XG5cbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBgUGxhdGZvcm0gSldUIHRva2VuIChyZW5ldyBieSAke2V4cGlyZXNBdH0pYDtcbiAgICAgICAgYXdhaXQgdXBzZXJ0U2VjcmV0KHNlY3JldE5hbWUsIHNlY3JldFZhbHVlLCBkZXNjcmlwdGlvbiwgeyByZWdpb24sIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSB9KTtcblxuICAgICAgICBjb25zdCBhcm4gPSBhd2FpdCBnZXRTZWNyZXRBcm4oc2VjcmV0TmFtZSwgeyByZWdpb24sIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSB9KTtcblxuICAgICAgICAvLyBPcHRpb25hbGx5IGluc3RhbGwgdGhlIG9uY2UtYS1kYXkgcmVuZXdhbCBzdGFjayBzbyB0aGlzIHRva2VuIG5ldmVyIGxhcHNlcy5cbiAgICAgICAgLy8gT2ZmIGJ5IGRlZmF1bHQg4oCUIG9wdCBpbiB3aXRoIC0tc2NoZWR1bGUgKGUuZy4gZm9yIHRoZSBBV1MgZXZlbnQtaW5nZXN0aW9uXG4gICAgICAgIC8vIGJ1bmRsZSB3aG9zZSBMYW1iZGEgbmVlZHMgYSBub24tZXhwaXJpbmcgdG9rZW4pLlxuICAgICAgICBsZXQgc2NoZWR1bGVFeHByZXNzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChvcHRpb25zLnNjaGVkdWxlKSB7XG4gICAgICAgICAgY29uc3QgZml2ZUZpZWxkQ3JvbiA9IG9wdGlvbnMuY3JvbiB8fCBwcm9jZXNzLmVudi5UT0tFTl9SRU5FV19TQ0hFRFVMRSB8fCBERUZBVUxUX1JFTkVXX0NST047XG4gICAgICAgICAgc2NoZWR1bGVFeHByZXNzaW9uID0gYXdhaXQgZGVwbG95UmVuZXdTY2hlZHVsZSh7XG4gICAgICAgICAgICBwbGF0Zm9ybVVybDogY2xpZW50LmdldEJhc2VVcmwoKSxcbiAgICAgICAgICAgIHNlY3JldE5hbWUsXG4gICAgICAgICAgICBkYXlzLFxuICAgICAgICAgICAgZml2ZUZpZWxkQ3JvbixcbiAgICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICAgIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmpzb24pIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgc2VjcmV0TmFtZSxcbiAgICAgICAgICAgIHNlY3JldEFybjogYXJuLFxuICAgICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgICAgZXhwaXJlc0luRGF5czogZGF5cyxcbiAgICAgICAgICAgIGV4cGlyZXNBdCxcbiAgICAgICAgICAgIHNjaGVkdWxlOiBzY2hlZHVsZUV4cHJlc3Npb24gPz8gbnVsbCxcbiAgICAgICAgICB9LCBudWxsLCAyKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50U2VjdGlvbignVG9rZW4gU3RvcmVkJyk7XG5cbiAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgICdTZWNyZXQgTmFtZSc6IHNlY3JldE5hbWUsXG4gICAgICAgICAgICAnU2VjcmV0IEFSTic6IGFybixcbiAgICAgICAgICAgICdSZWdpb24nOiByZWdpb24sXG4gICAgICAgICAgICAnRXhwaXJlcyBJbic6IGAke2RheXN9IGRheXNgLFxuICAgICAgICAgICAgJ1JlbmV3IEJ5JzogZXhwaXJlc0F0LFxuICAgICAgICAgICAgJ0F1dG8tUmVuZXcnOiBzY2hlZHVsZUV4cHJlc3Npb24gPyBg4pyTICR7c2NoZWR1bGVFeHByZXNzaW9ufWAgOiAnb2ZmIChwYXNzIC0tc2NoZWR1bGUgdG8gZW5hYmxlKScsXG4gICAgICAgICAgICAnU3RhdHVzJzogJ+KckyBTdG9yZWQnLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50U3VjY2VzcygnVG9rZW4gc3RvcmVkLiBUbyB1c2Ugd2l0aCBzeW50aC9kZXBsb3k6Jyk7XG4gICAgICAgICAgcHJpbnRJbmZvKGAgIGV4cG9ydCBQTEFURk9STV9TRUNSRVRfTkFNRT0ke3NlY3JldE5hbWV9YCk7XG4gICAgICAgICAgcHJpbnRJbmZvKCcgIHBpcGVsaW5lLW1hbmFnZXIgc3ludGggLS1pZCA8cGlwZWxpbmUtaWQ+IC0tc3RvcmUtdG9rZW5zJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIGlmIChzY2hlZHVsZUV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIHByaW50SW5mbyhgQXV0by1yZW5ld2FsIGlzIGFjdGl2ZSAoJHtzY2hlZHVsZUV4cHJlc3Npb259KTsgdGhlIHNlY3JldCByZWZyZXNoZXMgYmVmb3JlICR7ZXhwaXJlc0F0fS5gKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJpbnRJbmZvKGBSZW5ldyBiZWZvcmUgJHtleHBpcmVzQXR9IHdpdGg6IHBpcGVsaW5lLW1hbmFnZXIgc3RvcmUtdG9rZW4gLS1kYXlzICR7ZGF5c31gKTtcbiAgICAgICAgICAgIHByaW50SW5mbygnICAob3IgcGFzcyAtLXNjaGVkdWxlIHRvIGluc3RhbGwgYSBkYWlseSBhdXRvLXJlbmV3YWwgc3RhY2spJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiB0cnVlLFxuICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgIGNvbW1hbmQ6ICdzdG9yZS10b2tlbicsXG4gICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgIHNlY3JldE5hbWU6IHByb2Nlc3MuZW52LlBMQVRGT1JNX1NFQ1JFVF9OQU1FIHx8ICcoZGVyaXZlZCBmcm9tIHRva2VuKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtdG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc3RvcmUtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFB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ZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBleGVjRmlsZVN5bmMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICdub2RlOnVybCc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IExhbWJkYUNsaWVudCwgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1sYW1iZGEnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBBUFBfVkVSU0lPTiwgdmFsaWRhdGVOdW1iZXIgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyBhdWRpdExvZyB9IGZyb20gJy4uL3V0aWxzL2F1ZGl0LWxvZy5qcyc7XG5pbXBvcnQgeyBkZWNvZGVUb2tlblBheWxvYWQgfSBmcm9tICcuLi91dGlscy9hdXRoLWd1YXJkLmpzJztcbmltcG9ydCB7IHVwc2VydFNlY3JldCwgZ2V0U2VjcmV0QXJuIH0gZnJvbSAnLi4vdXRpbHMvYXdzLXNlY3JldHMuanMnO1xuaW1wb3J0IHsgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jLCBwcmludENvbW1hbmRIZWFkZXIsIHByaW50U3NsV2FybmluZyB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgdG9FdmVudEJyaWRnZUNyb24gfSBmcm9tICcuLi91dGlscy9jcm9uLmpzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgcHJpbnRJbmZvLCBwcmludEtleVZhbHVlLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5pbXBvcnQgeyBlbnN1cmVQbGF0Zm9ybVRva2VuLCByZXNvbHZlU2VjcmV0TmFtZSB9IGZyb20gJy4uL3V0aWxzL3BsYXRmb3JtLXNlY3JldC5qcyc7XG5cbi8vIEVTTSBoYXMgbm8gX19kaXJuYW1lOyBkZXJpdmUgaXQgZnJvbSB0aGlzIG1vZHVsZSdzIFVSTC5cbmNvbnN0IF9fZGlybmFtZSA9IHBhdGguZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuXG5jb25zdCBSRU5FV19TVEFDS19OQU1FID0gJ3BpcGVsaW5lLWJ1aWxkZXItdG9rZW4tcmVuZXcnO1xuLy8gQ0ZOLW1hbmFnZWQgTGFtYmRhIGZ1bmN0aW9uIG5hbWUg4oCUIGtlZXAgaW4gc3luYyB3aXRoIHRva2VuLXJlbmV3LXN0YWNrLmpzb24uXG5jb25zdCBSRU5FV19MQU1CREFfTkFNRSA9ICdwaXBlbGluZS1idWlsZGVyLXRva2VuLXJlbmV3Jztcbi8vIERlZmF1bHQgNS1maWVsZCBjcm9uIChkYWlseSBhdCBtaWRuaWdodCkgd2hlbiBuZWl0aGVyIC0tY3JvbiBub3IgVE9LRU5fUkVORVdfU0NIRURVTEUgaXMgc2V0LlxuY29uc3QgREVGQVVMVF9SRU5FV19DUk9OID0gJzAgMCAqICogKic7XG5cbi8qKlxuICogRGVwbG95IChvciB1cGRhdGUpIHRoZSBvbmNlLWEtZGF5IHRva2VuLXJlbmV3YWwgc3RhY2s6IGEgc2NoZWR1bGVkIExhbWJkYSB0aGF0XG4gKiByZS1taW50cyB0aGUgcGxhdGZvcm0gSldUIGluIHRoaXMgc2FtZSBzZWNyZXQgYmVmb3JlIGl0IGV4cGlyZXMuIE1pcnJvcnNcbiAqIHNldHVwLWV2ZW50cyDigJQgYGF3cyBjbG91ZGZvcm1hdGlvbiBkZXBsb3lgIGZvciB0aGUgaW5mcmEsIHRoZW4gYSBkaXJlY3RcbiAqIFVwZGF0ZUZ1bmN0aW9uQ29kZSB3aXRoIHRoZSB0aGluIG9yY2hlc3RyYXRvciBoYW5kbGVyIGNvbXBpbGVkIGFsb25nc2lkZSB0aGlzXG4gKiBDTEkgKHRoZSBoYW5kbGVyIG5wbS1pbnN0YWxscyBwaXBlbGluZS1tYW5hZ2VyIGF0IHJ1bnRpbWUgYW5kIHJlLXJ1bnNcbiAqIHN0b3JlLXRva2VuOyBzZWUgc3JjL2xhbWJkYS90b2tlbi1yZW5ldy1oYW5kbGVyLnRzKS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZGVwbG95UmVuZXdTY2hlZHVsZShvcHRzOiB7XG4gIHBsYXRmb3JtVXJsOiBzdHJpbmc7XG4gIHNlY3JldE5hbWU6IHN0cmluZztcbiAgZGF5czogbnVtYmVyO1xuICBmaXZlRmllbGRDcm9uOiBzdHJpbmc7XG4gIHJlZ2lvbjogc3RyaW5nO1xuICBwcm9maWxlPzogc3RyaW5nO1xufSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHNjaGVkdWxlRXhwcmVzc2lvbiA9IHRvRXZlbnRCcmlkZ2VDcm9uKG9wdHMuZml2ZUZpZWxkQ3Jvbik7IC8vIHZhbGlkYXRlcyArIDE1LW1pbiBndWFyZFxuXG4gIHByaW50U2VjdGlvbignU2NoZWR1bGUgUmVuZXdhbCcpO1xuICBwcmludEluZm8oJ1BhcmFtZXRlcnMnLCB7XG4gICAgc3RhY2s6IFJFTkVXX1NUQUNLX05BTUUsXG4gICAgc2NoZWR1bGU6IG9wdHMuZml2ZUZpZWxkQ3JvbixcbiAgICBldmVudGJyaWRnZTogc2NoZWR1bGVFeHByZXNzaW9uLFxuICAgIHJlbmV3RGF5czogb3B0cy5kYXlzLFxuICB9KTtcblxuICAvLyBTdGVwIDE6IGluZnJhIChMYW1iZGEgZ2V0cyBwbGFjZWhvbGRlciBjb2RlIG9uIGZpcnN0IGNyZWF0ZSkuXG4gIGNvbnN0IHRlbXBsYXRlUGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi90ZW1wbGF0ZXMvdG9rZW4tcmVuZXctc3RhY2suanNvbicpO1xuICBjb25zdCBjZm5BcmdzID0gW1xuICAgICdjbG91ZGZvcm1hdGlvbicsICdkZXBsb3knLFxuICAgICctLXN0YWNrLW5hbWUnLCBSRU5FV19TVEFDS19OQU1FLFxuICAgICctLXRlbXBsYXRlLWZpbGUnLCB0ZW1wbGF0ZVBhdGgsXG4gICAgJy0tcGFyYW1ldGVyLW92ZXJyaWRlcycsXG4gICAgYFBsYXRmb3JtQmFzZVVybD0ke29wdHMucGxhdGZvcm1Vcmx9YCxcbiAgICBgUGxhdGZvcm1TZWNyZXROYW1lPSR7b3B0cy5zZWNyZXROYW1lfWAsXG4gICAgYFJlbmV3RGF5cz0ke29wdHMuZGF5c31gLFxuICAgIGBTY2hlZHVsZUV4cHJlc3Npb249JHtzY2hlZHVsZUV4cHJlc3Npb259YCxcbiAgICAvLyBQaW4gdGhlIGhhbmRsZXIncyBydW50aW1lIG5wbSBpbnN0YWxsIHRvIFRISVMgQ0xJJ3MgdmVyc2lvbiAocmVwcm9kdWNpYmxlXG4gICAgLy8gcmVuZXdhbHMgaW5zdGVhZCBvZiBhIGZsb2F0aW5nIFwibGF0ZXN0XCIpLlxuICAgIGBQaXBlbGluZU1hbmFnZXJWZXJzaW9uPSR7QVBQX1ZFUlNJT059YCxcbiAgICAnLS1jYXBhYmlsaXRpZXMnLCAnQ0FQQUJJTElUWV9OQU1FRF9JQU0nLFxuICAgICctLW5vLWZhaWwtb24tZW1wdHktY2hhbmdlc2V0JyxcbiAgICAnLS1yZWdpb24nLCBvcHRzLnJlZ2lvbixcbiAgXTtcbiAgaWYgKG9wdHMucHJvZmlsZSkgY2ZuQXJncy5wdXNoKCctLXByb2ZpbGUnLCBvcHRzLnByb2ZpbGUpO1xuICBleGVjRmlsZVN5bmMoJ2F3cycsIGNmbkFyZ3MsIHsgc3RkaW86ICdpbmhlcml0JyB9KTtcblxuICAvLyBTdGVwIDI6IHVwbG9hZCB0aGUgcmVhbCBoYW5kbGVyLiBJdCdzIEVTTSwgc28gdGhlIHppcCBlbnRyeSBtdXN0IGJlIGluZGV4Lm1qc1xuICAvLyAoSGFuZGxlciBzdGF5cyBpbmRleC5oYW5kbGVyIOKAlCBub2RlanMyNC54IHJlc29sdmVzIHRoZSAubWpzIGV4dGVuc2lvbikuXG4gIGNvbnN0IGhhbmRsZXJTcmMgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vbGFtYmRhL3Rva2VuLXJlbmV3LWhhbmRsZXIuanMnKTtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGhhbmRsZXJTcmMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUb2tlbi1yZW5ldyBoYW5kbGVyIG5vdCBmb3VuZCBhdCAke2hhbmRsZXJTcmN9IOKAlCB3YXMgdGhlIHBhY2thZ2UgYnVpbHQ/YCk7XG4gIH1cbiAgY29uc3QgdG1wRGlyID0gZnMubWtkdGVtcFN5bmMocGF0aC5qb2luKG9zLnRtcGRpcigpLCAndG9rZW4tcmVuZXctJykpO1xuICB0cnkge1xuICAgIGZzLmNvcHlGaWxlU3luYyhoYW5kbGVyU3JjLCBwYXRoLmpvaW4odG1wRGlyLCAnaW5kZXgubWpzJykpO1xuICAgIGNvbnN0IHppcFBhdGggPSBwYXRoLmpvaW4odG1wRGlyLCAnaW5kZXguemlwJyk7XG4gICAgZXhlY0ZpbGVTeW5jKCd6aXAnLCBbJy1qJywgemlwUGF0aCwgJ2luZGV4Lm1qcyddLCB7IGN3ZDogdG1wRGlyLCBzdGRpbzogJ3BpcGUnIH0pO1xuXG4gICAgY29uc3QgbGFtYmRhQ2xpZW50ID0gbmV3IExhbWJkYUNsaWVudCh7IHJlZ2lvbjogb3B0cy5yZWdpb24gfSk7XG4gICAgYXdhaXQgbGFtYmRhQ2xpZW50LnNlbmQobmV3IFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmQoe1xuICAgICAgRnVuY3Rpb25OYW1lOiBSRU5FV19MQU1CREFfTkFNRSxcbiAgICAgIFppcEZpbGU6IGZzLnJlYWRGaWxlU3luYyh6aXBQYXRoKSxcbiAgICB9KSk7XG4gIH0gZmluYWxseSB7XG4gICAgZnMucm1TeW5jKHRtcERpciwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICB9XG5cbiAgcHJpbnRTdWNjZXNzKGBSZW5ld2FsIHNjaGVkdWxlZCAoJHtzY2hlZHVsZUV4cHJlc3Npb259KWApO1xuICByZXR1cm4gc2NoZWR1bGVFeHByZXNzaW9uO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYHN0b3JlLXRva2VuYCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIEdlbmVyYXRlcyBhIGxvbmctbGl2ZWQgSldUIHRva2VuIHZpYSB0aGUgcGxhdGZvcm0gQVBJIGFuZCBzdG9yZXMgaXRcbiAqIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIgZm9yIHVzZSBieSB0aGUgc3ludGgvZGVwbG95IC0tc3RvcmUtdG9rZW5zIGZsYWcuXG4gKlxuICogUmVxdWlyZXMgUExBVEZPUk1fVE9LRU4gdG8gYmUgc2V0LCBvciB1c2UgLS1lbWFpbC8tLXBhc3N3b3JkIHRvIGxvZ2luIGlubGluZS5cbiAqXG4gKiBCeSBkZWZhdWx0IGl0IE9OTFkgd3JpdGVzIHRoZSBzZWNyZXQuIFBhc3MgLS1zY2hlZHVsZSB0byBhbHNvIGRlcGxveSB0aGUgZGFpbHlcbiAqIHRva2VuLXJlbmV3YWwgc3RhY2sgKGEgTGFtYmRhIHRoYXQgYXV0by1yZW5ld3MgdGhpcyB0b2tlbiBiZWZvcmUgaXQgZXhwaXJlcykuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGJhc2hcbiAqIHBpcGVsaW5lLW1hbmFnZXIgc3RvcmUtdG9rZW4gLS1yZWdpb24gdXMtZWFzdC0xXG4gKiBwaXBlbGluZS1tYW5hZ2VyIHN0b3JlLXRva2VuIC0tZGF5cyA5MCAtLXJlZ2lvbiB1cy1lYXN0LTFcbiAqIHBpcGVsaW5lLW1hbmFnZXIgc3RvcmUtdG9rZW4gLS1zY2hlZHVsZSAtLXJlZ2lvbiB1cy1lYXN0LTEgICAgICAgICAgIyArIGRhaWx5IGF1dG8tcmVuZXdhbFxuICogcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbiAtLXNjaGVkdWxlIC0tY3JvbiAnMCAzICogKiAqJyAgICAgICAgICAjIGN1c3RvbSByZW5ld2FsIHRpbWVcbiAqIHBpcGVsaW5lLW1hbmFnZXIgc3RvcmUtdG9rZW4gLS1kYXlzIDcgLS1uby12ZXJpZnktc3NsXG4gKiBQTEFURk9STV9TRUNSRVRfTkFNRT1teS1jdXN0b20tc2VjcmV0IHBpcGVsaW5lLW1hbmFnZXIgc3RvcmUtdG9rZW4gICAjIG92ZXJyaWRlIHRoZSBkZXJpdmVkIG5hbWVcbiAqIHBpcGVsaW5lLW1hbmFnZXIgc3RvcmUtdG9rZW4gLS1kcnktcnVuXG4gKiBwaXBlbGluZS1tYW5hZ2VyIHN0b3JlLXRva2VuIC1lIGFkbWluIC1wICcqKionIC0tcmVnaW9uIHVzLWVhc3QtMVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdG9yZVRva2VuKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKCdzdG9yZS10b2tlbicpXG4gICAgLmRlc2NyaXB0aW9uKCdHZW5lcmF0ZSBKV1QgdG9rZW4gYW5kIHN0b3JlIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIgZm9yIENESyBkZXBsb3ltZW50cycpXG4gICAgLm9wdGlvbignLWUsIC0tZW1haWwgPGVtYWlsPicsICdMb2dpbiBlbWFpbCAoc2tpcHMgUExBVEZPUk1fVE9LRU4gcmVxdWlyZW1lbnQpJylcbiAgICAub3B0aW9uKCctcCwgLS1wYXNzd29yZCA8cGFzc3dvcmQ+JywgJ0xvZ2luIHBhc3N3b3JkICh1c2VkIHdpdGggLS1lbWFpbCknKVxuICAgIC5vcHRpb24oJy0tZGF5cyA8ZGF5cz4nLCAnVG9rZW4gbGlmZXRpbWUgaW4gZGF5cycsICczMCcpXG4gICAgLm9wdGlvbignLS1zY29wZSA8c2NvcGU+JywgJ01pbnQgYSBuYXJyb3ctc2NvcGUgbWFjaGluZSB0b2tlbiAoZS5nLiBcInJlcG9ydGluZzppbmdlc3RcIikgYW5kIHN0b3JlIGl0IGF0IGEgc2NvcGUtc3BlY2lmaWMgc2VjcmV0IHBhdGggaW5zdGVhZCBvZiB0aGUgc2hhcmVkIHBsYXRmb3JtIHNlY3JldCcpXG4gICAgLm9wdGlvbignLS1kcnktcnVuJywgJ1Nob3cgd2hhdCB3b3VsZCBiZSBzdG9yZWQgd2l0aG91dCB3cml0aW5nIHRvIFNlY3JldHMgTWFuYWdlcicsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tcmVnaW9uIDxyZWdpb24+JywgJ0FXUyByZWdpb24gKGRlZmF1bHQ6IHVzLWVhc3QtMSwgb3IgQVdTX1JFR0lPTiBlbnYpJylcbiAgICAub3B0aW9uKCctLXByb2ZpbGUgPHByb2ZpbGU+JywgJ0FXUyBDTEkgcHJvZmlsZScsICdkZWZhdWx0JylcbiAgICAub3B0aW9uKCctLXNjaGVkdWxlJywgJ0Fsc28gZGVwbG95IHRoZSBkYWlseSB0b2tlbi1yZW5ld2FsIHN0YWNrIHRoYXQgYXV0by1yZW5ld3MgdGhpcyB0b2tlbiAob2ZmIGJ5IGRlZmF1bHQpJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS1jcm9uIDxleHByPicsICdSZW5ld2FsIHNjaGVkdWxlIGFzIGEgNS1maWVsZCBjcm9uLCB1c2VkIHdpdGggLS1zY2hlZHVsZSAoZGVmYXVsdDogVE9LRU5fUkVORVdfU0NIRURVTEUgZW52IG9yIFwiMCAwICogKiAqXCI7IG1pbiBldmVyeSAxNSBtaW51dGVzKScpXG4gICAgLm9wdGlvbignLS1qc29uJywgJ091dHB1dCByZXN1bHQgYXMgSlNPTicsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tdmVyaWZ5LXNzbCcsICdFbmFibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1uby12ZXJpZnktc3NsJywgJ0Rpc2FibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgZXhlY3V0aW9uSWQgPSBwcmludENvbW1hbmRIZWFkZXIoJ1N0b3JlIFRva2VuJyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHByaW50U3NsV2FybmluZyhvcHRpb25zLnZlcmlmeVNzbCk7XG5cbiAgICAgICAgY29uc3QgcmVnaW9uID0gb3B0aW9ucy5yZWdpb24gfHwgcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTiB8fCBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT04gfHwgJ3VzLWVhc3QtMSc7XG5cbiAgICAgICAgY29uc3QgZGF5cyA9IHZhbGlkYXRlTnVtYmVyKG9wdGlvbnMuZGF5cywgJ2RheXMnLCAxLCAzNjUpO1xuICAgICAgICBjb25zdCBleHBpcmVzSW5TZWNvbmRzID0gZGF5cyAqIDI0ICogNjAgKiA2MDtcblxuICAgICAgICAvLyBTdGVwIDA6IGxvZyBpbiBmaXJzdCB3aGVuIGNyZWRzIGFyZSBhdmFpbGFibGUgYW5kIG5vIFBMQVRGT1JNX1RPS0VOIGlzIHNldFxuICAgICAgICAvLyAoc2hhcmVkIHdpdGggc2V0dXAtZXZlbnRzKS4gQ3JlZHMgY29tZSBmcm9tIC0tZW1haWwvLS1wYXNzd29yZCBPUiB0aGUgZW52XG4gICAgICAgIC8vIHZhcnMgUExBVEZPUk1fSURFTlRJRklFUi9QTEFURk9STV9QQVNTV09SRCDigJQgdGhlIGVudiBwYXRoIGxldHMgY2FsbGVycyBsaWtlXG4gICAgICAgIC8vIGBwcm92aXNpb24gLS13aXRoLWV2ZW50c2AgcGFzcyB0aGVtIHdpdGhvdXQgcHV0dGluZyB0aGUgcGFzc3dvcmQgb24gdGhlXG4gICAgICAgIC8vIGNvbW1hbmQgbGluZSAod2hlcmUgaXQgd291bGQgc2hvdyBpbiBwbGFucy9sb2dzKS5cbiAgICAgICAgYXdhaXQgZW5zdXJlUGxhdGZvcm1Ub2tlbihvcHRpb25zKTtcblxuICAgICAgICAvLyBTdGVwIDE6IEF1dGhlbnRpY2F0ZSBhbmQgZ2VuZXJhdGUgbG9uZy1saXZlZCB0b2tlblxuICAgICAgICBwcmludFNlY3Rpb24oJ0dlbmVyYXRlIFRva2VuJyk7XG5cbiAgICAgICAgY29uc3QgY2xpZW50ID0gYXdhaXQgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jKG9wdGlvbnMpO1xuXG4gICAgICAgIC8vIFJlc29sdmUgc2VjcmV0IG5hbWUgZnJvbSB0aGUgdG9rZW4ncyBvcmdhbml6YXRpb25JZC4gQW4gZXhwbGljaXRcbiAgICAgICAgLy8gUExBVEZPUk1fU0VDUkVUX05BTUUgZW52IHdpbnMgKGVzY2FwZSBoYXRjaCBmb3Igc3lzdGVtL25vLW9yZyB0b2tlbnMgYW5kXG4gICAgICAgIC8vIHRoZSByZW5ld2FsIExhbWJkYSk7IG90aGVyd2lzZSBkZXJpdmUgYHtwcmVmaXh9L3tvcmdJZH0vcGxhdGZvcm1gLlxuICAgICAgICAvLyBBIGAtLXNjb3BlYCB0b2tlbiBpcyBhIGRpc3RpbmN0IG1hY2hpbmUgY3JlZGVudGlhbCDigJQgc3RvcmUgaXQgYXQgYVxuICAgICAgICAvLyBzY29wZS1zcGVjaWZpYyBwYXRoIChgLi4uL3JlcG9ydGluZy1pbmdlc3RgKSBzbyBpdCBuZXZlciBjbG9iYmVycyB0aGVcbiAgICAgICAgLy8gZnVsbC1wcml2aWxlZ2UgcGxhdGZvcm0gdG9rZW4gdXNlZCBieSBzeW50aC9kZXBsb3kgY2FsbGJhY2tzLlxuICAgICAgICBjb25zdCBzY29wZSA9IG9wdGlvbnMuc2NvcGUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBiYXNlU2VjcmV0TmFtZSA9IHByb2Nlc3MuZW52LlBMQVRGT1JNX1NFQ1JFVF9OQU1FIHx8IHJlc29sdmVTZWNyZXROYW1lKHByb2Nlc3MuZW52LlBMQVRGT1JNX1RPS0VOISk7XG4gICAgICAgIGNvbnN0IHNlY3JldE5hbWUgPSBzY29wZSAmJiAhcHJvY2Vzcy5lbnYuUExBVEZPUk1fU0VDUkVUX05BTUVcbiAgICAgICAgICA/IGJhc2VTZWNyZXROYW1lLnJlcGxhY2UoL1xcL3BsYXRmb3JtJC8sIGAvJHtzY29wZS5yZXBsYWNlKC9bXmEtejAtOV0rL2dpLCAnLScpfWApXG4gICAgICAgICAgOiBiYXNlU2VjcmV0TmFtZTtcblxuICAgICAgICBhdWRpdExvZygnc3RvcmUtdG9rZW4nLCB7IGV4ZWN1dGlvbklkLCBzZWNyZXROYW1lLCBkYXlzLCBkcnlSdW46IG9wdGlvbnMuZHJ5UnVuIH0pO1xuXG4gICAgICAgIHByaW50SW5mbygnUGFyYW1ldGVycycsIHtcbiAgICAgICAgICBzZWNyZXROYW1lLFxuICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICBkYXlzLFxuICAgICAgICAgIGV4cGlyZXNJbjogYCR7ZXhwaXJlc0luU2Vjb25kc31zYCxcbiAgICAgICAgICBkcnlSdW46IG9wdGlvbnMuZHJ5UnVuLFxuICAgICAgICB9KTtcblxuICAgICAgICBwcmludEluZm8oJ1JlcXVlc3RpbmcgdG9rZW4nLCB7IGV4cGlyZXNJbjogYCR7ZXhwaXJlc0luU2Vjb25kc31zICgke2RheXN9IGRheXMpYCB9KTtcblxuICAgICAgICBjb25zdCB0b2tlblJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3Q8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICAgICcvYXBpL3VzZXIvZ2VuZXJhdGUtdG9rZW4nLFxuICAgICAgICAgIHsgZXhwaXJlc0luOiBleHBpcmVzSW5TZWNvbmRzLCAuLi4oc2NvcGUgPyB7IHNjb3BlIH0gOiB7fSkgfSxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB0b2tlbkRhdGEgPSAodG9rZW5SZXNwb25zZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik/LmRhdGEgPz8gdG9rZW5SZXNwb25zZTtcbiAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSAodG9rZW5EYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8uYWNjZXNzVG9rZW4gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCByZWZyZXNoVG9rZW4gPSAodG9rZW5EYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8ucmVmcmVzaFRva2VuIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgYWN0dWFsRXhwaXJlc0luID0gKCh0b2tlbkRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pPy5leHBpcmVzSW4gYXMgbnVtYmVyKSA/PyBleHBpcmVzSW5TZWNvbmRzO1xuXG4gICAgICAgIGlmICghYWNjZXNzVG9rZW4pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Rva2VuIGdlbmVyYXRpb24gZmFpbGVkIOKAlCBubyBhY2Nlc3MgdG9rZW4gaW4gcmVzcG9uc2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByaW50U3VjY2VzcyhgVG9rZW4gZ2VuZXJhdGVkIChleHBpcmVzIGluICR7YWN0dWFsRXhwaXJlc0lufXMpYCk7XG5cbiAgICAgICAgY29uc3QgZXhwaXJlc0F0ID0gbmV3IERhdGUoRGF0ZS5ub3coKSArIGFjdHVhbEV4cGlyZXNJbiAqIDEwMDApLnRvSVNPU3RyaW5nKCk7XG5cbiAgICAgICAgLy8gU2NoZW1hOiB7IHVzZXJuYW1lOiBvcmdJZCwgcGFzc3dvcmQ6IEpXVCwgLi4ubWV0YWRhdGEgfVxuICAgICAgICAvLyAtIHVzZXJuYW1lL3Bhc3N3b3JkIGZpZWxkcyBzYXRpc2Z5IENvZGVCdWlsZCdzIGBzZWNyZXRzTWFuYWdlckNyZWRlbnRpYWxzYFxuICAgICAgICAvLyAgIChIVFRQIEJhc2ljLCBzZW50IHRvIHBpcGVsaW5lLWltYWdlLXJlZ2lzdHJ5J3MgL3Rva2VuIGVuZHBvaW50KVxuICAgICAgICAvLyAtIFRoZSBzYW1lIEpXVCBpcyBjb25zdW1lZCBieSB0aGUgcGx1Z2luLWxvb2t1cCBMYW1iZGEgYnkgcmVhZGluZ1xuICAgICAgICAvLyAgIHRoZSBgcGFzc3dvcmRgIGZpZWxkXG4gICAgICAgIC8vIC0gT25lIFNlY3JldCBwZXIgY3VzdG9tZXIgYWNjb3VudCByZXBsYWNlcyB0aGUgcHJldmlvdXMgdHdvLXNlY3JldCBtb2RlbFxuICAgICAgICAvLyBEZWNvZGUgSldUIGZvciBvcmdJZCDigJQgaXQncyBhIHN0YWJsZSBpZGVudGlmaWVyIGZvciB0aGUgdXNlcm5hbWUgZmllbGQ7XG4gICAgICAgIC8vIHRoZSBhY3R1YWwgYXV0aCB1c2VzIHRoZSBwYXNzd29yZCAoSldUKSB3aGljaCB0aGUgdG9rZW4gc2VydmljZSB2ZXJpZmllcy5cbiAgICAgICAgLy8gYHx8YCAobm90IGA/P2ApOiBhbiBFTVBUWS1zdHJpbmcgb3JnYW5pemF0aW9uSWQgbXVzdCBhbHNvIGZhbGwgYmFjay4gQVxuICAgICAgICAvLyBzeXNhZG1pbi9zeXN0ZW0gdG9rZW4gb2Z0ZW4gY2FycmllcyBvcmdhbml6YXRpb25JZD1cIlwiLCBhbmQgQ29kZUJ1aWxkXG4gICAgICAgIC8vIHJlamVjdHMgYSByZWdpc3RyeSBjcmVkZW50aWFsIHdob3NlIGB1c2VybmFtZWAgZmllbGQgaXMgZW1wdHkgd2l0aFxuICAgICAgICAvLyBcIkF1dGhvcml6YXRpb25EYXRhIGlzIG1hbGZvcm1lZCwgZW1wdHkgZmllbGRcIiDigJQgc28gdXNlcm5hbWUgbXVzdCBhbHdheXNcbiAgICAgICAgLy8gYmUgYSBub24tZW1wdHkgdmFsdWUuXG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBkZWNvZGVUb2tlblBheWxvYWQoYWNjZXNzVG9rZW4pO1xuICAgICAgICBjb25zdCBvcmdJZCA9IHBheWxvYWQ/Lm9yZ2FuaXphdGlvbklkPy50cmltKCkgfHwgJ3Vua25vd24tb3JnJztcblxuICAgICAgICBjb25zdCBzZWNyZXRWYWx1ZSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICB1c2VybmFtZTogb3JnSWQsXG4gICAgICAgICAgcGFzc3dvcmQ6IGFjY2Vzc1Rva2VuLFxuICAgICAgICAgIC8vIGBhY2Nlc3NUb2tlbmAgZHVwbGljYXRlcyB0aGUgSldUIHVuZGVyIHRoZSBuYW1lIHRoZSBldmVudC1pbmdlc3Rpb25cbiAgICAgICAgICAvLyBMYW1iZGEgcmVhZHMsIHNvIGFuIGFscmVhZHktZGVwbG95ZWQgZXZlbnRzIHN0YWNrIHdvcmtzIGFmdGVyIGEgcGxhaW5cbiAgICAgICAgICAvLyBzdG9yZS10b2tlbiByZS1ydW4gKG5vIHBpcGVsaW5lLWV2ZW50cyByZXB1Ymxpc2ggbmVlZGVkKS4gYHBhc3N3b3JkYFxuICAgICAgICAgIC8vIHJlbWFpbnMgY2Fub25pY2FsIChDb2RlQnVpbGQgY3JlZHMsIHBsdWdpbi1sb29rdXAsIHRva2VuLXJlbmV3KS5cbiAgICAgICAgICBhY2Nlc3NUb2tlbixcbiAgICAgICAgICAuLi4ocmVmcmVzaFRva2VuICYmIHsgcmVmcmVzaFRva2VuIH0pLFxuICAgICAgICAgIHBsYXRmb3JtVXJsOiBjbGllbnQuZ2V0QmFzZVVybCgpLFxuICAgICAgICAgIGV4cGlyZXNJbjogYWN0dWFsRXhwaXJlc0luLFxuICAgICAgICAgIGV4cGlyZXNBdCxcbiAgICAgICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRHJ5LXJ1bjogc2hvdyB3aGF0IHdvdWxkIGJlIHN0b3JlZFxuICAgICAgICBpZiAob3B0aW9ucy5kcnlSdW4pIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5qc29uKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgICAgIGRyeVJ1bjogdHJ1ZSxcbiAgICAgICAgICAgICAgc2VjcmV0TmFtZSxcbiAgICAgICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgICAgICBleHBpcmVzSW5EYXlzOiBkYXlzLFxuICAgICAgICAgICAgICBleHBpcmVzQXQsXG4gICAgICAgICAgICAgIHRva2VuTGVuZ3RoOiBhY2Nlc3NUb2tlbi5sZW5ndGgsXG4gICAgICAgICAgICAgIGhhc1JlZnJlc2hUb2tlbjogISFyZWZyZXNoVG9rZW4sXG4gICAgICAgICAgICB9LCBudWxsLCAyKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgICAgIHByaW50U2VjdGlvbignRHJ5IFJ1biDigJQgTm8gQ2hhbmdlcyBNYWRlJyk7XG4gICAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgICAgJ1NlY3JldCBOYW1lJzogc2VjcmV0TmFtZSxcbiAgICAgICAgICAgICAgJ1JlZ2lvbic6IHJlZ2lvbixcbiAgICAgICAgICAgICAgJ0V4cGlyZXMgSW4nOiBgJHtkYXlzfSBkYXlzYCxcbiAgICAgICAgICAgICAgJ1JlbmV3IEJ5JzogZXhwaXJlc0F0LFxuICAgICAgICAgICAgICAnVG9rZW4gTGVuZ3RoJzogYCR7YWNjZXNzVG9rZW4ubGVuZ3RofSBjaGFyc2AsXG4gICAgICAgICAgICAgICdIYXMgUmVmcmVzaCBUb2tlbic6IHJlZnJlc2hUb2tlbiA/ICdZZXMnIDogJ05vJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcHJpbnRTdWNjZXNzKCdEcnkgcnVuIGNvbXBsZXRlIOKAlCBubyBzZWNyZXQgd2FzIGNyZWF0ZWQgb3IgdXBkYXRlZCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdGVwIDI6IFN0b3JlIHRva2VuIGluIFNlY3JldHMgTWFuYWdlclxuICAgICAgICBwcmludFNlY3Rpb24oJ1N0b3JlIFRva2VuJyk7XG5cbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBgUGxhdGZvcm0gSldUIHRva2VuIChyZW5ldyBieSAke2V4cGlyZXNBdH0pYDtcbiAgICAgICAgYXdhaXQgdXBzZXJ0U2VjcmV0KHNlY3JldE5hbWUsIHNlY3JldFZhbHVlLCBkZXNjcmlwdGlvbiwgeyByZWdpb24sIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSB9KTtcblxuICAgICAgICBjb25zdCBhcm4gPSBhd2FpdCBnZXRTZWNyZXRBcm4oc2VjcmV0TmFtZSwgeyByZWdpb24sIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSB9KTtcblxuICAgICAgICAvLyBPcHRpb25hbGx5IGluc3RhbGwgdGhlIG9uY2UtYS1kYXkgcmVuZXdhbCBzdGFjayBzbyB0aGlzIHRva2VuIG5ldmVyIGxhcHNlcy5cbiAgICAgICAgLy8gT2ZmIGJ5IGRlZmF1bHQg4oCUIG9wdCBpbiB3aXRoIC0tc2NoZWR1bGUgKGUuZy4gZm9yIHRoZSBBV1MgZXZlbnQtaW5nZXN0aW9uXG4gICAgICAgIC8vIGJ1bmRsZSB3aG9zZSBMYW1iZGEgbmVlZHMgYSBub24tZXhwaXJpbmcgdG9rZW4pLlxuICAgICAgICBsZXQgc2NoZWR1bGVFeHByZXNzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChvcHRpb25zLnNjaGVkdWxlKSB7XG4gICAgICAgICAgY29uc3QgZml2ZUZpZWxkQ3JvbiA9IG9wdGlvbnMuY3JvbiB8fCBwcm9jZXNzLmVudi5UT0tFTl9SRU5FV19TQ0hFRFVMRSB8fCBERUZBVUxUX1JFTkVXX0NST047XG4gICAgICAgICAgc2NoZWR1bGVFeHByZXNzaW9uID0gYXdhaXQgZGVwbG95UmVuZXdTY2hlZHVsZSh7XG4gICAgICAgICAgICBwbGF0Zm9ybVVybDogY2xpZW50LmdldEJhc2VVcmwoKSxcbiAgICAgICAgICAgIHNlY3JldE5hbWUsXG4gICAgICAgICAgICBkYXlzLFxuICAgICAgICAgICAgZml2ZUZpZWxkQ3JvbixcbiAgICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICAgIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmpzb24pIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgc2VjcmV0TmFtZSxcbiAgICAgICAgICAgIHNlY3JldEFybjogYXJuLFxuICAgICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgICAgZXhwaXJlc0luRGF5czogZGF5cyxcbiAgICAgICAgICAgIGV4cGlyZXNBdCxcbiAgICAgICAgICAgIHNjaGVkdWxlOiBzY2hlZHVsZUV4cHJlc3Npb24gPz8gbnVsbCxcbiAgICAgICAgICB9LCBudWxsLCAyKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50U2VjdGlvbignVG9rZW4gU3RvcmVkJyk7XG5cbiAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgICdTZWNyZXQgTmFtZSc6IHNlY3JldE5hbWUsXG4gICAgICAgICAgICAnU2VjcmV0IEFSTic6IGFybixcbiAgICAgICAgICAgICdSZWdpb24nOiByZWdpb24sXG4gICAgICAgICAgICAnRXhwaXJlcyBJbic6IGAke2RheXN9IGRheXNgLFxuICAgICAgICAgICAgJ1JlbmV3IEJ5JzogZXhwaXJlc0F0LFxuICAgICAgICAgICAgJ0F1dG8tUmVuZXcnOiBzY2hlZHVsZUV4cHJlc3Npb24gPyBg4pyTICR7c2NoZWR1bGVFeHByZXNzaW9ufWAgOiAnb2ZmIChwYXNzIC0tc2NoZWR1bGUgdG8gZW5hYmxlKScsXG4gICAgICAgICAgICAnU3RhdHVzJzogJ+KckyBTdG9yZWQnLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50U3VjY2VzcygnVG9rZW4gc3RvcmVkLiBUbyB1c2Ugd2l0aCBzeW50aC9kZXBsb3k6Jyk7XG4gICAgICAgICAgcHJpbnRJbmZvKGAgIGV4cG9ydCBQTEFURk9STV9TRUNSRVRfTkFNRT0ke3NlY3JldE5hbWV9YCk7XG4gICAgICAgICAgcHJpbnRJbmZvKCcgIHBpcGVsaW5lLW1hbmFnZXIgc3ludGggLS1pZCA8cGlwZWxpbmUtaWQ+IC0tc3RvcmUtdG9rZW5zJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIGlmIChzY2hlZHVsZUV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIHByaW50SW5mbyhgQXV0by1yZW5ld2FsIGlzIGFjdGl2ZSAoJHtzY2hlZHVsZUV4cHJlc3Npb259KTsgdGhlIHNlY3JldCByZWZyZXNoZXMgYmVmb3JlICR7ZXhwaXJlc0F0fS5gKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJpbnRJbmZvKGBSZW5ldyBiZWZvcmUgJHtleHBpcmVzQXR9IHdpdGg6IHBpcGVsaW5lLW1hbmFnZXIgc3RvcmUtdG9rZW4gLS1kYXlzICR7ZGF5c31gKTtcbiAgICAgICAgICAgIHByaW50SW5mbygnICAob3IgcGFzcyAtLXNjaGVkdWxlIHRvIGluc3RhbGwgYSBkYWlseSBhdXRvLXJlbmV3YWwgc3RhY2spJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiB0cnVlLFxuICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgIGNvbW1hbmQ6ICdzdG9yZS10b2tlbicsXG4gICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgIHNlY3JldE5hbWU6IHByb2Nlc3MuZW52LlBMQVRGT1JNX1NFQ1JFVF9OQU1FIHx8ICcoZGVyaXZlZCBmcm9tIHRva2VuKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
@@ -96,4 +96,10 @@ export declare function validateSort(value: string | undefined): string | undefi
96
96
  export declare function assertShellSafe(value: string, fieldName: string, opts?: {
97
97
  redactValue?: boolean;
98
98
  }): void;
99
+ /**
100
+ * POSIX single-quote a value (escaping embedded single quotes) for safe shell
101
+ * interpolation. Single source of truth — drift in a shell-quoting helper is
102
+ * security-relevant, so both agent modules import this rather than re-declaring it.
103
+ */
104
+ export declare function shellQuote(value: string): string;
99
105
  //# sourceMappingURL=cli.constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.constants.d.ts","sourceRoot":"","sources":["../../src/config/cli.constants.ts"],"names":[],"mappings":"AAaA;;GAEG;AACH,eAAO,MAAM,QAAQ,qBAAqB,CAAC;AAC3C,eAAO,MAAM,WAAW,QAAU,CAAC;AACnC,eAAO,MAAM,eAAe,+CAA+C,CAAC;AAE5E;;GAEG;AACH,eAAO,MAAM,cAAc;;;;CAIjB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAE7D;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;CAKX,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;CAGnB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;CAQX,CAAC;AAEX;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAElE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;CAkBhB,CAAC;AAEX;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAKzE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAiB5G;AAQD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAM1E;AAQD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,IAAI,CAON"}
1
+ {"version":3,"file":"cli.constants.d.ts","sourceRoot":"","sources":["../../src/config/cli.constants.ts"],"names":[],"mappings":"AAaA;;GAEG;AACH,eAAO,MAAM,QAAQ,qBAAqB,CAAC;AAC3C,eAAO,MAAM,WAAW,QAAU,CAAC;AACnC,eAAO,MAAM,eAAe,+CAA+C,CAAC;AAE5E;;GAEG;AACH,eAAO,MAAM,cAAc;;;;CAIjB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAE7D;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;CAKX,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;CAGnB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;CAQX,CAAC;AAEX;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAElE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;CAkBhB,CAAC;AAEX;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAKzE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAiB5G;AAQD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAM1E;AAQD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,IAAI,CAON;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD"}
@@ -163,4 +163,12 @@ export function assertShellSafe(value, fieldName, opts = {}) {
163
163
  throw new Error(`${fieldName} contains unsafe characters${detail}`);
164
164
  }
165
165
  }
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvY2xpLmNvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV2QyxnRkFBZ0Y7QUFDaEYsaUZBQWlGO0FBQ2pGLDJFQUEyRTtBQUMzRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDNUIsWUFBWSxDQUFDLElBQUksR0FBRyxDQUFDLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQy9DLENBQUM7QUFFekI7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUM7QUFDM0MsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQztBQUNuQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsNENBQTRDLENBQUM7QUFFNUU7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsSUFBSSxFQUFFLE1BQWU7SUFDckIsZ0JBQWdCLEVBQUUsUUFBaUI7SUFDbkMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLEVBQUU7Q0FDcEMsQ0FBQztBQU9YOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHO0lBQ3RCLFlBQVksRUFBRSxLQUFLO0lBQ25CLFdBQVcsRUFBRSxDQUFDO0lBQ2QsWUFBWSxFQUFFLElBQUk7SUFDbEIsTUFBTSxFQUFFLE1BQU07Q0FDTixDQUFDO0FBRVg7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5QixNQUFNLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxFQUFFLE1BQU07SUFDdEMsY0FBYyxFQUFFLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxFQUFFLE9BQU87Q0FDakMsQ0FBQztBQUVYOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHO0lBQ3RCLGNBQWMsRUFBRSxnQkFBZ0I7SUFDaEMsaUJBQWlCLEVBQUUsbUJBQW1CO0lBQ3RDLGVBQWUsRUFBRSxpQkFBaUI7SUFDbEMsdUJBQXVCLEVBQUUseUJBQXlCO0lBQ2xELFdBQVcsRUFBRSxhQUFhO0lBQzFCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLEtBQUssRUFBRSxPQUFPO0NBQ04sQ0FBQztBQUVYOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxPQUE2QjtJQUN2RCxPQUFPLE9BQU8sRUFBRSxLQUFLLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDO0FBQ3hELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBYTtJQUMxQyxJQUFJLEtBQUssS0FBSyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDOUIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ2YsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxPQUFPLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDOUQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxFQUFVO0lBQ3ZDLElBQUksRUFBRSxHQUFHLElBQUk7UUFBRSxPQUFPLEdBQUcsRUFBRSxJQUFJLENBQUM7SUFDaEMsSUFBSSxFQUFFLEdBQUcsS0FBSztRQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUNwRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUN2QyxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELE9BQU8sR0FBRyxPQUFPLEtBQUssZ0JBQWdCLEdBQUcsQ0FBQztBQUM1QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CO0lBQ2pDLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUN0RCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUc7SUFDM0IsTUFBTSxFQUFFO1FBQ04sT0FBTyxFQUFFLEdBQUc7UUFDWixPQUFPLEVBQUUsR0FBRztRQUNaLE9BQU8sRUFBRSxHQUFHO1FBQ1osUUFBUSxFQUFFLEdBQUc7UUFDYixVQUFVLEVBQUUsR0FBRztRQUNmLFVBQVUsRUFBRSxHQUFHO1FBQ2YsVUFBVSxFQUFFLEdBQUc7UUFDZixXQUFXLEVBQUUsR0FBRztRQUNoQixRQUFRLEVBQUUsR0FBRztRQUNiLFNBQVMsRUFBRSxHQUFHO1FBQ2QsUUFBUSxFQUFFLEdBQUc7UUFDYixRQUFRLEVBQUUsR0FBRztRQUNiLFFBQVEsRUFBRSxHQUFHO1FBQ2IsU0FBUyxFQUFFLEdBQUc7UUFDZCxRQUFRLEVBQUUsR0FBRztLQUNkO0NBQ08sQ0FBQztBQUVYOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFhLEVBQUUsU0FBaUI7SUFDOUQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDaEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNqRSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixTQUFTLE1BQU0sS0FBSyxvQ0FBb0MsQ0FBQyxDQUFDO0FBQ3pHLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBc0IsRUFBRSxTQUFpQixFQUFFLEdBQVksRUFBRSxHQUFZO0lBQ2xHLDJFQUEyRTtJQUMzRSw4Q0FBOEM7SUFDOUMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDL0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFNBQVMsMEJBQTBCLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsU0FBUywwQkFBMEIsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFDRCxJQUFJLEdBQUcsS0FBSyxTQUFTLElBQUksR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxTQUFTLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFDRCxJQUFJLEdBQUcsS0FBSyxTQUFTLElBQUksR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxTQUFTLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFlBQVksR0FBRyxxQ0FBcUMsQ0FBQztBQUUzRCxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQXlCO0lBQ3BELElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixLQUFLLDBDQUEwQyxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sWUFBWSxHQUFHLDZCQUE2QixDQUFDO0FBRW5ELE1BQU0sVUFBVSxlQUFlLENBQzdCLEtBQWEsRUFDYixTQUFpQixFQUNqQixPQUFrQyxFQUFFO0lBRXBDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzdCLDhFQUE4RTtRQUM5RSw0REFBNEQ7UUFDNUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDO1FBQ3RELE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxTQUFTLDhCQUE4QixNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IHJhbmRvbUJ5dGVzIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IHJlYWRGaWxlU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuXG4vLyBFU00gaGFzIG5vIHN5bmNocm9ub3VzIG5hbWVkIEpTT04gaW1wb3J0IChOb2RlIG9ubHkgZXhwb3NlcyBhIGRlZmF1bHQgZXhwb3J0LFxuLy8gYW5kIGltcG9ydGluZyBgLi4vLi4vcGFja2FnZS5qc29uYCB3b3VsZCBhbHNvIGZhbGwgb3V0c2lkZSBgcm9vdERpcjogc3JjYCksIHNvXG4vLyByZWFkIHRoZSB2ZXJzaW9uIGZyb20gcGFja2FnZS5qc29uIGF0IGxvYWQgdGltZSByZWxhdGl2ZSB0byB0aGlzIG1vZHVsZS5cbmNvbnN0IHsgdmVyc2lvbiB9ID0gSlNPTi5wYXJzZShcbiAgcmVhZEZpbGVTeW5jKG5ldyBVUkwoJy4uLy4uL3BhY2thZ2UuanNvbicsIGltcG9ydC5tZXRhLnVybCksICd1dGYtOCcpLFxuKSBhcyB7IHZlcnNpb246IHN0cmluZyB9O1xuXG4vKipcbiAqIEFwcGxpY2F0aW9uIG1ldGFkYXRhXG4gKi9cbmV4cG9ydCBjb25zdCBBUFBfTkFNRSA9ICdwaXBlbGluZS1tYW5hZ2VyJztcbmV4cG9ydCBjb25zdCBBUFBfVkVSU0lPTiA9IHZlcnNpb247XG5leHBvcnQgY29uc3QgQVBQX0RFU0NSSVBUSU9OID0gJ0EgQ0xJIHRvb2wgdG8gbWFuYWdlIHBpcGVsaW5lcyBhbmQgcGx1Z2lucyc7XG5cbi8qKlxuICogQmFubmVyIGNvbmZpZ3VyYXRpb24gZm9yIENMSSBzdGFydHVwXG4gKi9cbmV4cG9ydCBjb25zdCBCQU5ORVJfT1BUSU9OUyA9IHtcbiAgZm9udDogJ0Rvb20nIGFzIGNvbnN0LFxuICBob3Jpem9udGFsTGF5b3V0OiAnZml0dGVkJyBhcyBjb25zdCxcbiAgZ2V0V2lkdGg6ICgpID0+IHByb2Nlc3Muc3Rkb3V0LmNvbHVtbnMgPz8gODAsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIE91dHB1dCBmb3JtYXQgdHlwZXNcbiAqL1xuZXhwb3J0IHR5cGUgT3V0cHV0Rm9ybWF0ID0gJ3RhYmxlJyB8ICdqc29uJyB8ICd5YW1sJyB8ICdjc3YnO1xuXG4vKipcbiAqIERlZmF1bHQgdGltZW91dHMgKGluIG1pbGxpc2Vjb25kcylcbiAqL1xuZXhwb3J0IGNvbnN0IFRJTUVPVVRTID0ge1xuICBIVFRQX1JFUVVFU1Q6IDMwMDAwLFxuICBDREtfQ09NTUFORDogMCxcbiAgSEVBTFRIX0NIRUNLOiA1MDAwLFxuICBVUExPQUQ6IDMwMDAwMCxcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogRmlsZSBzaXplIGxpbWl0cyAoaW4gYnl0ZXMpXG4gKi9cbmV4cG9ydCBjb25zdCBGSUxFX1NJWkVfTElNSVRTID0ge1xuICBQTFVHSU46IDQgKiAxMDI0ICogMTAyNCAqIDEwMjQsIC8vIDRHQlxuICBQSVBFTElORV9QUk9QUzogMTAgKiAxMDI0ICogMTAyNCwgLy8gMTBNQlxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBFbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lc1xuICovXG5leHBvcnQgY29uc3QgRU5WX1ZBUlMgPSB7XG4gIFBMQVRGT1JNX1RPS0VOOiAnUExBVEZPUk1fVE9LRU4nLFxuICBQTEFURk9STV9CQVNFX1VSTDogJ1BMQVRGT1JNX0JBU0VfVVJMJyxcbiAgQ0xJX0NPTkZJR19QQVRIOiAnQ0xJX0NPTkZJR19QQVRIJyxcbiAgVExTX1JFSkVDVF9VTkFVVEhPUklaRUQ6ICdUTFNfUkVKRUNUX1VOQVVUSE9SSVpFRCcsXG4gIEFXU19QUk9GSUxFOiAnQVdTX1BST0ZJTEUnLFxuICBBV1NfUkVHSU9OOiAnQVdTX1JFR0lPTicsXG4gIERFQlVHOiAnREVCVUcnLFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBDaGVjayBpZiBkZWJ1ZyBtb2RlIGlzIGVuYWJsZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGVidWdNb2RlKG9wdGlvbnM/OiB7IGRlYnVnPzogYm9vbGVhbiB9KTogYm9vbGVhbiB7XG4gIHJldHVybiBvcHRpb25zPy5kZWJ1ZyA/PyBwcm9jZXNzLmVudi5ERUJVRyA9PT0gJ3RydWUnO1xufVxuXG4vKipcbiAqIEZvcm1hdCBmaWxlIHNpemUgZm9yIGRpc3BsYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEZpbGVTaXplKGJ5dGVzOiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAoYnl0ZXMgPT09IDApIHJldHVybiAnMCBCJztcbiAgY29uc3QgdW5pdHMgPSBbJ0InLCAnS0InLCAnTUInLCAnR0InLCAnVEInXTtcbiAgY29uc3QgayA9IDEwMjQ7XG4gIGNvbnN0IGkgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKTtcbiAgcmV0dXJuIGAkeyhieXRlcyAvIE1hdGgucG93KGssIGkpKS50b0ZpeGVkKDIpfSAke3VuaXRzW2ldfWA7XG59XG5cbi8qKlxuICogRm9ybWF0IGR1cmF0aW9uIGZvciBkaXNwbGF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREdXJhdGlvbihtczogbnVtYmVyKTogc3RyaW5nIHtcbiAgaWYgKG1zIDwgMTAwMCkgcmV0dXJuIGAke21zfW1zYDtcbiAgaWYgKG1zIDwgNjAwMDApIHJldHVybiBgJHsobXMgLyAxMDAwKS50b0ZpeGVkKDIpfXNgO1xuICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcihtcyAvIDYwMDAwKTtcbiAgY29uc3QgcmVtYWluaW5nU2Vjb25kcyA9ICgobXMgJSA2MDAwMCkgLyAxMDAwKS50b0ZpeGVkKDApO1xuICByZXR1cm4gYCR7bWludXRlc31tICR7cmVtYWluaW5nU2Vjb25kc31zYDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBjcnlwdG9ncmFwaGljYWxseSByYW5kb20gZXhlY3V0aW9uIElEIGZvciByZXF1ZXN0IHRyYWNpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUV4ZWN1dGlvbklkKCk6IHN0cmluZyB7XG4gIHJldHVybiByYW5kb21CeXRlcyg0KS50b1N0cmluZygnaGV4JykudG9VcHBlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBUYWJsZSBkaXNwbGF5IG9wdGlvbnMgKGJveC1kcmF3aW5nIGNoYXJhY3RlcnMpXG4gKi9cbmV4cG9ydCBjb25zdCBUQUJMRV9PUFRJT05TID0ge1xuICBib3JkZXI6IHtcbiAgICB0b3BCb2R5OiAn4pSAJyxcbiAgICB0b3BKb2luOiAn4pSsJyxcbiAgICB0b3BMZWZ0OiAn4pSMJyxcbiAgICB0b3BSaWdodDogJ+KUkCcsXG4gICAgYm90dG9tQm9keTogJ+KUgCcsXG4gICAgYm90dG9tSm9pbjogJ+KUtCcsXG4gICAgYm90dG9tTGVmdDogJ+KUlCcsXG4gICAgYm90dG9tUmlnaHQ6ICfilJgnLFxuICAgIGJvZHlMZWZ0OiAn4pSCJyxcbiAgICBib2R5UmlnaHQ6ICfilIInLFxuICAgIGJvZHlKb2luOiAn4pSCJyxcbiAgICBqb2luQm9keTogJ+KUgCcsXG4gICAgam9pbkxlZnQ6ICfilJwnLFxuICAgIGpvaW5SaWdodDogJ+KUpCcsXG4gICAgam9pbkpvaW46ICfilLwnLFxuICB9LFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBWYWxpZGF0ZSBib29sZWFuIHN0cmluZyBmcm9tIENMSSBpbnB1dFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVCb29sZWFuKHZhbHVlOiBzdHJpbmcsIGZpZWxkTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgaWYgKFsndHJ1ZScsICcxJywgJ3llcycsICd5J10uaW5jbHVkZXMobm9ybWFsaXplZCkpIHJldHVybiB0cnVlO1xuICBpZiAoWydmYWxzZScsICcwJywgJ25vJywgJ24nXS5pbmNsdWRlcyhub3JtYWxpemVkKSkgcmV0dXJuIGZhbHNlO1xuICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYm9vbGVhbiB2YWx1ZSBmb3IgJHtmaWVsZE5hbWV9OiBcIiR7dmFsdWV9XCIuIFVzZSB0cnVlL2ZhbHNlLCB5ZXMvbm8sIG9yIDEvMC5gKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBhbmQgcGFyc2UgYSBudW1lcmljIENMSSBwYXJhbWV0ZXIgd2l0aGluIG9wdGlvbmFsIGJvdW5kcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTnVtYmVyKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIsIGZpZWxkTmFtZTogc3RyaW5nLCBtaW4/OiBudW1iZXIsIG1heD86IG51bWJlcik6IG51bWJlciB7XG4gIC8vIFJlamVjdCBwYXJ0aWFsIHBhcnNlcyAoXCIxMmFiY1wiIC0+IDEyKSBhbmQgbm9uLWludGVnZXJzIChcIjUuOVwiIC0+IDUpIHRoYXRcbiAgLy8gYHBhcnNlSW50YCB3b3VsZCBvdGhlcndpc2UgYWNjZXB0IHNpbGVudGx5LlxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhL14tP1xcZCskLy50ZXN0KHZhbHVlLnRyaW0oKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgJHtmaWVsZE5hbWV9OiBtdXN0IGJlIGEgd2hvbGUgbnVtYmVyYCk7XG4gIH1cbiAgY29uc3QgbnVtID0gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/IHZhbHVlIDogcGFyc2VJbnQodmFsdWUudHJpbSgpLCAxMCk7XG4gIGlmICghTnVtYmVyLmlzSW50ZWdlcihudW0pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkICR7ZmllbGROYW1lfTogbXVzdCBiZSBhIHdob2xlIG51bWJlcmApO1xuICB9XG4gIGlmIChtaW4gIT09IHVuZGVmaW5lZCAmJiBudW0gPCBtaW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgJHtmaWVsZE5hbWV9OiBtdXN0IGJlID49ICR7bWlufWApO1xuICB9XG4gIGlmIChtYXggIT09IHVuZGVmaW5lZCAmJiBudW0gPiBtYXgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgJHtmaWVsZE5hbWV9OiBtdXN0IGJlIDw9ICR7bWF4fWApO1xuICB9XG4gIHJldHVybiBudW07XG59XG5cbi8qKlxuICogVmFsaWRhdGUgc29ydCBwYXJhbWV0ZXIgZm9ybWF0IChlLmcuLCBcImNyZWF0ZWRBdDpkZXNjXCIpLlxuICogUmV0dXJucyB0aGUgdmFsaWRhdGVkIHNvcnQgc3RyaW5nLCBvciB0aGUgZGVmYXVsdCBpZiBpbnZhbGlkLlxuICovXG5jb25zdCBTT1JUX1BBVFRFUk4gPSAvXlthLXpBLVpfXVthLXpBLVowLTlfXSo6KGFzY3xkZXNjKSQvO1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTb3J0KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIXZhbHVlKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAoIVNPUlRfUEFUVEVSTi50ZXN0KHZhbHVlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzb3J0IGZvcm1hdDogXCIke3ZhbHVlfVwiLiBFeHBlY3RlZCBcImZpZWxkOmFzY1wiIG9yIFwiZmllbGQ6ZGVzY1wiLmApO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBSZWplY3Qgc3RyaW5ncyBjb250YWluaW5nIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLlxuICogVXNlZCB0byBzYW5pdGl6ZSBDTEkgaW5wdXRzIGJlZm9yZSBwYXNzaW5nIHRvIHNoZWxsIGNvbW1hbmRzLlxuICovXG5jb25zdCBTSEVMTF9VTlNBRkUgPSAvWzsmfGAkKCl7fVtcXF08PiEjfio/XFxcXFxcblxccl0vO1xuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0U2hlbGxTYWZlKFxuICB2YWx1ZTogc3RyaW5nLFxuICBmaWVsZE5hbWU6IHN0cmluZyxcbiAgb3B0czogeyByZWRhY3RWYWx1ZT86IGJvb2xlYW4gfSA9IHt9LFxuKTogdm9pZCB7XG4gIGlmIChTSEVMTF9VTlNBRkUudGVzdCh2YWx1ZSkpIHtcbiAgICAvLyBgcmVkYWN0VmFsdWVgIGlzIGZvciBzZWNyZXRzICh0b2tlbnMsIHBhc3N3b3Jkcykg4oCUIG5ldmVyIGVjaG8gdGhlIG9mZmVuZGluZ1xuICAgIC8vIHZhbHVlIGludG8gYW4gZXJyb3IvbG9nIGxpbmUgd2hlbiB0aGUgZmllbGQgaXMgc2Vuc2l0aXZlLlxuICAgIGNvbnN0IGRldGFpbCA9IG9wdHMucmVkYWN0VmFsdWUgPyAnJyA6IGA6IFwiJHt2YWx1ZX1cImA7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke2ZpZWxkTmFtZX0gY29udGFpbnMgdW5zYWZlIGNoYXJhY3RlcnMke2RldGFpbH1gKTtcbiAgfVxufVxuIl19
166
+ /**
167
+ * POSIX single-quote a value (escaping embedded single quotes) for safe shell
168
+ * interpolation. Single source of truth — drift in a shell-quoting helper is
169
+ * security-relevant, so both agent modules import this rather than re-declaring it.
170
+ */
171
+ export function shellQuote(value) {
172
+ return `'${value.replace(/'/g, "'\\''")}'`;
173
+ }
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvY2xpLmNvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV2QyxnRkFBZ0Y7QUFDaEYsaUZBQWlGO0FBQ2pGLDJFQUEyRTtBQUMzRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDNUIsWUFBWSxDQUFDLElBQUksR0FBRyxDQUFDLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQy9DLENBQUM7QUFFekI7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUM7QUFDM0MsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQztBQUNuQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsNENBQTRDLENBQUM7QUFFNUU7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsSUFBSSxFQUFFLE1BQWU7SUFDckIsZ0JBQWdCLEVBQUUsUUFBaUI7SUFDbkMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLEVBQUU7Q0FDcEMsQ0FBQztBQU9YOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHO0lBQ3RCLFlBQVksRUFBRSxLQUFLO0lBQ25CLFdBQVcsRUFBRSxDQUFDO0lBQ2QsWUFBWSxFQUFFLElBQUk7SUFDbEIsTUFBTSxFQUFFLE1BQU07Q0FDTixDQUFDO0FBRVg7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5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Q0FBQyxDQUFDO0lBQ3RFLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBYTtJQUN0QyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQztBQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IHJhbmRvbUJ5dGVzIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IHJlYWRGaWxlU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuXG4vLyBFU00gaGFzIG5vIHN5bmNocm9ub3VzIG5hbWVkIEpTT04gaW1wb3J0IChOb2RlIG9ubHkgZXhwb3NlcyBhIGRlZmF1bHQgZXhwb3J0LFxuLy8gYW5kIGltcG9ydGluZyBgLi4vLi4vcGFja2FnZS5qc29uYCB3b3VsZCBhbHNvIGZhbGwgb3V0c2lkZSBgcm9vdERpcjogc3JjYCksIHNvXG4vLyByZWFkIHRoZSB2ZXJzaW9uIGZyb20gcGFja2FnZS5qc29uIGF0IGxvYWQgdGltZSByZWxhdGl2ZSB0byB0aGlzIG1vZHVsZS5cbmNvbnN0IHsgdmVyc2lvbiB9ID0gSlNPTi5wYXJzZShcbiAgcmVhZEZpbGVTeW5jKG5ldyBVUkwoJy4uLy4uL3BhY2thZ2UuanNvbicsIGltcG9ydC5tZXRhLnVybCksICd1dGYtOCcpLFxuKSBhcyB7IHZlcnNpb246IHN0cmluZyB9O1xuXG4vKipcbiAqIEFwcGxpY2F0aW9uIG1ldGFkYXRhXG4gKi9cbmV4cG9ydCBjb25zdCBBUFBfTkFNRSA9ICdwaXBlbGluZS1tYW5hZ2VyJztcbmV4cG9ydCBjb25zdCBBUFBfVkVSU0lPTiA9IHZlcnNpb247XG5leHBvcnQgY29uc3QgQVBQX0RFU0NSSVBUSU9OID0gJ0EgQ0xJIHRvb2wgdG8gbWFuYWdlIHBpcGVsaW5lcyBhbmQgcGx1Z2lucyc7XG5cbi8qKlxuICogQmFubmVyIGNvbmZpZ3VyYXRpb24gZm9yIENMSSBzdGFydHVwXG4gKi9cbmV4cG9ydCBjb25zdCBCQU5ORVJfT1BUSU9OUyA9IHtcbiAgZm9udDogJ0Rvb20nIGFzIGNvbnN0LFxuICBob3Jpem9udGFsTGF5b3V0OiAnZml0dGVkJyBhcyBjb25zdCxcbiAgZ2V0V2lkdGg6ICgpID0+IHByb2Nlc3Muc3Rkb3V0LmNvbHVtbnMgPz8gODAsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIE91dHB1dCBmb3JtYXQgdHlwZXNcbiAqL1xuZXhwb3J0IHR5cGUgT3V0cHV0Rm9ybWF0ID0gJ3RhYmxlJyB8ICdqc29uJyB8ICd5YW1sJyB8ICdjc3YnO1xuXG4vKipcbiAqIERlZmF1bHQgdGltZW91dHMgKGluIG1pbGxpc2Vjb25kcylcbiAqL1xuZXhwb3J0IGNvbnN0IFRJTUVPVVRTID0ge1xuICBIVFRQX1JFUVVFU1Q6IDMwMDAwLFxuICBDREtfQ09NTUFORDogMCxcbiAgSEVBTFRIX0NIRUNLOiA1MDAwLFxuICBVUExPQUQ6IDMwMDAwMCxcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogRmlsZSBzaXplIGxpbWl0cyAoaW4gYnl0ZXMpXG4gKi9cbmV4cG9ydCBjb25zdCBGSUxFX1NJWkVfTElNSVRTID0ge1xuICBQTFVHSU46IDQgKiAxMDI0ICogMTAyNCAqIDEwMjQsIC8vIDRHQlxuICBQSVBFTElORV9QUk9QUzogMTAgKiAxMDI0ICogMTAyNCwgLy8gMTBNQlxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBFbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lc1xuICovXG5leHBvcnQgY29uc3QgRU5WX1ZBUlMgPSB7XG4gIFBMQVRGT1JNX1RPS0VOOiAnUExBVEZPUk1fVE9LRU4nLFxuICBQTEFURk9STV9CQVNFX1VSTDogJ1BMQVRGT1JNX0JBU0VfVVJMJyxcbiAgQ0xJX0NPTkZJR19QQVRIOiAnQ0xJX0NPTkZJR19QQVRIJyxcbiAgVExTX1JFSkVDVF9VTkFVVEhPUklaRUQ6ICdUTFNfUkVKRUNUX1VOQVVUSE9SSVpFRCcsXG4gIEFXU19QUk9GSUxFOiAnQVdTX1BST0ZJTEUnLFxuICBBV1NfUkVHSU9OOiAnQVdTX1JFR0lPTicsXG4gIERFQlVHOiAnREVCVUcnLFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBDaGVjayBpZiBkZWJ1ZyBtb2RlIGlzIGVuYWJsZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGVidWdNb2RlKG9wdGlvbnM/OiB7IGRlYnVnPzogYm9vbGVhbiB9KTogYm9vbGVhbiB7XG4gIHJldHVybiBvcHRpb25zPy5kZWJ1ZyA/PyBwcm9jZXNzLmVudi5ERUJVRyA9PT0gJ3RydWUnO1xufVxuXG4vKipcbiAqIEZvcm1hdCBmaWxlIHNpemUgZm9yIGRpc3BsYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEZpbGVTaXplKGJ5dGVzOiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAoYnl0ZXMgPT09IDApIHJldHVybiAnMCBCJztcbiAgY29uc3QgdW5pdHMgPSBbJ0InLCAnS0InLCAnTUInLCAnR0InLCAnVEInXTtcbiAgY29uc3QgayA9IDEwMjQ7XG4gIGNvbnN0IGkgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKTtcbiAgcmV0dXJuIGAkeyhieXRlcyAvIE1hdGgucG93KGssIGkpKS50b0ZpeGVkKDIpfSAke3VuaXRzW2ldfWA7XG59XG5cbi8qKlxuICogRm9ybWF0IGR1cmF0aW9uIGZvciBkaXNwbGF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREdXJhdGlvbihtczogbnVtYmVyKTogc3RyaW5nIHtcbiAgaWYgKG1zIDwgMTAwMCkgcmV0dXJuIGAke21zfW1zYDtcbiAgaWYgKG1zIDwgNjAwMDApIHJldHVybiBgJHsobXMgLyAxMDAwKS50b0ZpeGVkKDIpfXNgO1xuICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcihtcyAvIDYwMDAwKTtcbiAgY29uc3QgcmVtYWluaW5nU2Vjb25kcyA9ICgobXMgJSA2MDAwMCkgLyAxMDAwKS50b0ZpeGVkKDApO1xuICByZXR1cm4gYCR7bWludXRlc31tICR7cmVtYWluaW5nU2Vjb25kc31zYDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBjcnlwdG9ncmFwaGljYWxseSByYW5kb20gZXhlY3V0aW9uIElEIGZvciByZXF1ZXN0IHRyYWNpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUV4ZWN1dGlvbklkKCk6IHN0cmluZyB7XG4gIHJldHVybiByYW5kb21CeXRlcyg0KS50b1N0cmluZygnaGV4JykudG9VcHBlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBUYWJsZSBkaXNwbGF5IG9wdGlvbnMgKGJveC1kcmF3aW5nIGNoYXJhY3RlcnMpXG4gKi9cbmV4cG9ydCBjb25zdCBUQUJMRV9PUFRJT05TID0ge1xuICBib3JkZXI6IHtcbiAgICB0b3BCb2R5OiAn4pSAJyxcbiAgICB0b3BKb2luOiAn4pSsJyxcbiAgICB0b3BMZWZ0OiAn4pSMJyxcbiAgICB0b3BSaWdodDogJ+KUkCcsXG4gICAgYm90dG9tQm9keTogJ+KUgCcsXG4gICAgYm90dG9tSm9pbjogJ+KUtCcsXG4gICAgYm90dG9tTGVmdDogJ+KUlCcsXG4gICAgYm90dG9tUmlnaHQ6ICfilJgnLFxuICAgIGJvZHlMZWZ0OiAn4pSCJyxcbiAgICBib2R5UmlnaHQ6ICfilIInLFxuICAgIGJvZHlKb2luOiAn4pSCJyxcbiAgICBqb2luQm9keTogJ+KUgCcsXG4gICAgam9pbkxlZnQ6ICfilJwnLFxuICAgIGpvaW5SaWdodDogJ+KUpCcsXG4gICAgam9pbkpvaW46ICfilLwnLFxuICB9LFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBWYWxpZGF0ZSBib29sZWFuIHN0cmluZyBmcm9tIENMSSBpbnB1dFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVCb29sZWFuKHZhbHVlOiBzdHJpbmcsIGZpZWxkTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgaWYgKFsndHJ1ZScsICcxJywgJ3llcycsICd5J10uaW5jbHVkZXMobm9ybWFsaXplZCkpIHJldHVybiB0cnVlO1xuICBpZiAoWydmYWxzZScsICcwJywgJ25vJywgJ24nXS5pbmNsdWRlcyhub3JtYWxpemVkKSkgcmV0dXJuIGZhbHNlO1xuICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYm9vbGVhbiB2YWx1ZSBmb3IgJHtmaWVsZE5hbWV9OiBcIiR7dmFsdWV9XCIuIFVzZSB0cnVlL2ZhbHNlLCB5ZXMvbm8sIG9yIDEvMC5gKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBhbmQgcGFyc2UgYSBudW1lcmljIENMSSBwYXJhbWV0ZXIgd2l0aGluIG9wdGlvbmFsIGJvdW5kcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTnVtYmVyKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIsIGZpZWxkTmFtZTogc3RyaW5nLCBtaW4/OiBudW1iZXIsIG1heD86IG51bWJlcik6IG51bWJlciB7XG4gIC8vIFJlamVjdCBwYXJ0aWFsIHBhcnNlcyAoXCIxMmFiY1wiIC0+IDEyKSBhbmQgbm9uLWludGVnZXJzIChcIjUuOVwiIC0+IDUpIHRoYXRcbiAgLy8gYHBhcnNlSW50YCB3b3VsZCBvdGhlcndpc2UgYWNjZXB0IHNpbGVudGx5LlxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhL14tP1xcZCskLy50ZXN0KHZhbHVlLnRyaW0oKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgJHtmaWVsZE5hbWV9OiBtdXN0IGJlIGEgd2hvbGUgbnVtYmVyYCk7XG4gIH1cbiAgY29uc3QgbnVtID0gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/IHZhbHVlIDogcGFyc2VJbnQodmFsdWUudHJpbSgpLCAxMCk7XG4gIGlmICghTnVtYmVyLmlzSW50ZWdlcihudW0pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkICR7ZmllbGROYW1lfTogbXVzdCBiZSBhIHdob2xlIG51bWJlcmApO1xuICB9XG4gIGlmIChtaW4gIT09IHVuZGVmaW5lZCAmJiBudW0gPCBtaW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgJHtmaWVsZE5hbWV9OiBtdXN0IGJlID49ICR7bWlufWApO1xuICB9XG4gIGlmIChtYXggIT09IHVuZGVmaW5lZCAmJiBudW0gPiBtYXgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgJHtmaWVsZE5hbWV9OiBtdXN0IGJlIDw9ICR7bWF4fWApO1xuICB9XG4gIHJldHVybiBudW07XG59XG5cbi8qKlxuICogVmFsaWRhdGUgc29ydCBwYXJhbWV0ZXIgZm9ybWF0IChlLmcuLCBcImNyZWF0ZWRBdDpkZXNjXCIpLlxuICogUmV0dXJucyB0aGUgdmFsaWRhdGVkIHNvcnQgc3RyaW5nLCBvciB0aGUgZGVmYXVsdCBpZiBpbnZhbGlkLlxuICovXG5jb25zdCBTT1JUX1BBVFRFUk4gPSAvXlthLXpBLVpfXVthLXpBLVowLTlfXSo6KGFzY3xkZXNjKSQvO1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTb3J0KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIXZhbHVlKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAoIVNPUlRfUEFUVEVSTi50ZXN0KHZhbHVlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzb3J0IGZvcm1hdDogXCIke3ZhbHVlfVwiLiBFeHBlY3RlZCBcImZpZWxkOmFzY1wiIG9yIFwiZmllbGQ6ZGVzY1wiLmApO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBSZWplY3Qgc3RyaW5ncyBjb250YWluaW5nIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLlxuICogVXNlZCB0byBzYW5pdGl6ZSBDTEkgaW5wdXRzIGJlZm9yZSBwYXNzaW5nIHRvIHNoZWxsIGNvbW1hbmRzLlxuICovXG5jb25zdCBTSEVMTF9VTlNBRkUgPSAvWzsmfGAkKCl7fVtcXF08PiEjfio/XFxcXFxcblxccl0vO1xuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0U2hlbGxTYWZlKFxuICB2YWx1ZTogc3RyaW5nLFxuICBmaWVsZE5hbWU6IHN0cmluZyxcbiAgb3B0czogeyByZWRhY3RWYWx1ZT86IGJvb2xlYW4gfSA9IHt9LFxuKTogdm9pZCB7XG4gIGlmIChTSEVMTF9VTlNBRkUudGVzdCh2YWx1ZSkpIHtcbiAgICAvLyBgcmVkYWN0VmFsdWVgIGlzIGZvciBzZWNyZXRzICh0b2tlbnMsIHBhc3N3b3Jkcykg4oCUIG5ldmVyIGVjaG8gdGhlIG9mZmVuZGluZ1xuICAgIC8vIHZhbHVlIGludG8gYW4gZXJyb3IvbG9nIGxpbmUgd2hlbiB0aGUgZmllbGQgaXMgc2Vuc2l0aXZlLlxuICAgIGNvbnN0IGRldGFpbCA9IG9wdHMucmVkYWN0VmFsdWUgPyAnJyA6IGA6IFwiJHt2YWx1ZX1cImA7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke2ZpZWxkTmFtZX0gY29udGFpbnMgdW5zYWZlIGNoYXJhY3RlcnMke2RldGFpbH1gKTtcbiAgfVxufVxuXG4vKipcbiAqIFBPU0lYIHNpbmdsZS1xdW90ZSBhIHZhbHVlIChlc2NhcGluZyBlbWJlZGRlZCBzaW5nbGUgcXVvdGVzKSBmb3Igc2FmZSBzaGVsbFxuICogaW50ZXJwb2xhdGlvbi4gU2luZ2xlIHNvdXJjZSBvZiB0cnV0aCDigJQgZHJpZnQgaW4gYSBzaGVsbC1xdW90aW5nIGhlbHBlciBpc1xuICogc2VjdXJpdHktcmVsZXZhbnQsIHNvIGJvdGggYWdlbnQgbW9kdWxlcyBpbXBvcnQgdGhpcyByYXRoZXIgdGhhbiByZS1kZWNsYXJpbmcgaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaGVsbFF1b3RlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYCcke3ZhbHVlLnJlcGxhY2UoLycvZywgXCInXFxcXCcnXCIpfSdgO1xufVxuIl19
@@ -92,7 +92,10 @@
92
92
  {
93
93
  "Effect": "Allow",
94
94
  "Action": "secretsmanager:GetSecretValue",
95
- "Resource": { "Fn::Sub": "arn:aws:secretsmanager:${AWS::Region}:${AWS::AccountId}:secret:pipeline-builder/*/platform-*" }
95
+ "Resource": [
96
+ { "Fn::Sub": "arn:aws:secretsmanager:${AWS::Region}:${AWS::AccountId}:secret:pipeline-builder/*/platform-*" },
97
+ { "Fn::Sub": "arn:aws:secretsmanager:${AWS::Region}:${AWS::AccountId}:secret:pipeline-builder/*/reporting-ingest-*" }
98
+ ]
96
99
  },
97
100
  {
98
101
  "Effect": "Allow",
@@ -1 +1 @@
1
- {"version":3,"file":"cdk-utils.d.ts","sourceRoot":"","sources":["../../src/utils/cdk-utils.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,IAAI,OAAO,CA2BpC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yFAAyF;IACzF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,eAAoB,GAC5B,cAAc,CA2ChB"}
1
+ {"version":3,"file":"cdk-utils.d.ts","sourceRoot":"","sources":["../../src/utils/cdk-utils.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,IAAI,OAAO,CA6BpC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yFAAyF;IACzF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,eAAoB,GAC5B,cAAc,CA2ChB"}
@@ -25,16 +25,18 @@ export function getCdkInfo() {
25
25
  return { available: true, version: output.trim() };
26
26
  }
27
27
  catch (firstError) {
28
- // Fallback: invoke through the user's login shell so PATH from their rc
29
- // file is sourced. Skip when SHELL isn't set or is /bin/sh (which would
30
- // be the same default).
28
+ // Fallback: run through the user's shell as login + interactive (`-ilc`) so
29
+ // it actually sources their profile/rc (nvm/asdf/homebrew PATH). The previous
30
+ // `shell: userShell` option only changed which binary ran `-c` (still
31
+ // non-login/non-interactive → rc not sourced). stdin is ignored so an
32
+ // interactive shell can't block waiting for input. Skip when SHELL is unset
33
+ // or /bin/sh (same as the default attempt above).
31
34
  const userShell = process.env.SHELL;
32
35
  if (userShell && !userShell.endsWith('/sh')) {
33
36
  try {
34
- const output = execSync('cdk --version', {
37
+ const output = execSync(`${userShell} -ilc 'cdk --version'`, {
35
38
  encoding: 'utf-8',
36
- stdio: 'pipe',
37
- shell: userShell,
39
+ stdio: ['ignore', 'pipe', 'pipe'],
38
40
  });
39
41
  return { available: true, version: output.trim() };
40
42
  }
@@ -115,4 +117,4 @@ export function executeCdkShellCommand(command, options = {}) {
115
117
  throw error;
116
118
  }
117
119
  }
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2Nkay11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUvQzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsU0FBaUI7SUFDdEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBUUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsVUFBVTtJQUN4QixJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsZUFBZSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMvRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUFDLE9BQU8sVUFBVSxFQUFFLENBQUM7UUFDcEIsd0VBQXdFO1FBQ3hFLHdFQUF3RTtRQUN4RSx3QkFBd0I7UUFDeEIsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDcEMsSUFBSSxTQUFTLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDO2dCQUNILE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxlQUFlLEVBQUU7b0JBQ3ZDLFFBQVEsRUFBRSxPQUFPO29CQUNqQixLQUFLLEVBQUUsTUFBTTtv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QUssQ0FBQyxDQUFDO1lBQ3hFLENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHByaW50RXJyb3IgfSBmcm9tICcuL291dHB1dC11dGlscy5qcyc7XG5cbi8qKlxuICogUGF0aCB0byBkaXN0L2JvaWxlcnBsYXRlLmpzLiB0c2MgZW1pdHMgY29tbWFuZHMgYXQgZGlzdC9jb21tYW5kcy8sIHNvXG4gKiBib2lsZXJwbGF0ZSBpcyBvbmUgbGV2ZWwgdXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQm9pbGVycGxhdGVQYXRoKGNhbGxlckRpcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhdGguam9pbihjYWxsZXJEaXIsICcuLicsICdib2lsZXJwbGF0ZS5qcycpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENka0luZm8ge1xuICBhdmFpbGFibGU6IGJvb2xlYW47XG4gIHZlcnNpb246IHN0cmluZyB8IG51bGw7XG4gIGVycm9yPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBBV1MgQ0RLIENMSSBpcyBpbnN0YWxsZWQgYW5kIHJldHVybnMgaXRzIHZlcnNpb24uXG4gKlxuICogVHJpZXMgYGNkayAtLXZlcnNpb25gIGZpcnN0LiBJZiB0aGF0IGZhaWxzICh0eXBpY2FsbHkgYmVjYXVzZSB0aGUgdXNlciBoYXNcbiAqIGNkayBvbiBQQVRIIHZpYSB0aGVpciBzaGVsbCByYyBidXQgZXhlY1N5bmMncyBkZWZhdWx0IGAvYmluL3NoYCBkb2Vzbid0XG4gKiBzb3VyY2UgaXQpLCBmYWxscyBiYWNrIHRvIHJ1bm5pbmcgdGhyb3VnaCB0aGUgdXNlcidzIGludGVyYWN0aXZlIHNoZWxsXG4gKiAoYCRTSEVMTCAtaSAtY2ApIHNvIG5vZGUgdmVyc2lvbiBtYW5hZ2VycyBsaWtlIG52bS9hc2RmIGFuZCBob21lYnJldyBwYXRoc1xuICogYmVjb21lIHZpc2libGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDZGtJbmZvKCk6IENka0luZm8ge1xuICB0cnkge1xuICAgIGNvbnN0IG91dHB1dCA9IGV4ZWNTeW5jKCdjZGsgLS12ZXJzaW9uJywgeyBlbmNvZGluZzogJ3V0Zi04Jywgc3RkaW86ICdwaXBlJyB9KTtcbiAgICByZXR1cm4geyBhdmFpbGFibGU6IHRydWUsIHZlcnNpb246IG91dHB1dC50cmltKCkgfTtcbiAgfSBjYXRjaCAoZmlyc3RFcnJvcikge1xuICAgIC8vIEZhbGxiYWNrOiBpbnZva2UgdGhyb3VnaCB0aGUgdXNlcidzIGxvZ2luIHNoZWxsIHNvIFBBVEggZnJvbSB0aGVpciByY1xuICAgIC8vIGZpbGUgaXMgc291cmNlZC4gU2tpcCB3aGVuIFNIRUxMIGlzbid0IHNldCBvciBpcyAvYmluL3NoICh3aGljaCB3b3VsZFxuICAgIC8vIGJlIHRoZSBzYW1lIGRlZmF1bHQpLlxuICAgIGNvbnN0IHVzZXJTaGVsbCA9IHByb2Nlc3MuZW52LlNIRUxMO1xuICAgIGlmICh1c2VyU2hlbGwgJiYgIXVzZXJTaGVsbC5lbmRzV2l0aCgnL3NoJykpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG91dHB1dCA9IGV4ZWNTeW5jKCdjZGsgLS12ZXJzaW9uJywge1xuICAgICAgICAgIGVuY29kaW5nOiAndXRmLTgnLFxuICAgICAgICAgIHN0ZGlvOiAncGlwZScsXG4gICAgICAgICAgc2hlbGw6IHVzZXJTaGVsbCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7IGF2YWlsYWJsZTogdHJ1ZSwgdmVyc2lvbjogb3V0cHV0LnRyaW0oKSB9O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIGZhbGwgdGhyb3VnaCB0byB0aGUgb3JpZ2luYWwgZXJyb3JcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGF2YWlsYWJsZTogZmFsc2UsXG4gICAgICB2ZXJzaW9uOiBudWxsLFxuICAgICAgZXJyb3I6IGZpcnN0RXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGZpcnN0RXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIEFXUyBDREsgQ0xJIGlzIGluc3RhbGxlZCBhbmQgYWNjZXNzaWJsZSBvbiB0aGUgUEFUSC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQ2RrQXZhaWxhYmxlKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0Q2RrSW5mbygpLmF2YWlsYWJsZTtcbn1cblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgdGhlIEFXUyBDREsgQ0xJIGlzIGluc3RhbGxlZDsgdGhyb3dzIHdpdGggYSB1c2VyLWZyaWVuZGx5XG4gKiBtZXNzYWdlICsgaW5zdGFsbCBoaW50IHdoZW4gaXQgaXNuJ3QuIFVzZSBhdCB0aGUgdG9wIG9mIGFueSBjb21tYW5kIHRoYXRcbiAqIHNoZWxscyBvdXQgdG8gYGNka2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVDZGtBdmFpbGFibGUoKTogdm9pZCB7XG4gIGlmIChjaGVja0Nka0F2YWlsYWJsZSgpKSByZXR1cm47XG4gIHByaW50RXJyb3IoJ0FXUyBDREsgaXMgbm90IGluc3RhbGxlZCBvciBub3QgYWNjZXNzaWJsZScpO1xuICBjb25zb2xlLmxvZygnSW5zdGFsbCBDREsgd2l0aDogbnBtIGluc3RhbGwgLWcgYXdzLWNkaycpO1xuICB0aHJvdyBuZXcgRXJyb3IoJ0FXUyBDREsgbm90IGZvdW5kJyk7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgZXhlY3V0aW5nIGEgQ0RLIHNoZWxsIGNvbW1hbmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrU2hlbGxPcHRpb25zIHtcbiAgLyoqIFdoZW4gYHRydWVgLCBwcmludHMgdGhlIGVycm9yIHRvIHN0ZGVyciBvbiBmYWlsdXJlLiAqL1xuICBkZWJ1Zz86IGJvb2xlYW47XG4gIC8qKiBXaGVuIGB0cnVlYCwgaW5oZXJpdHMgc3RkaW8gc28gb3V0cHV0IHN0cmVhbXMgdG8gdGhlIHRlcm1pbmFsLiBEZWZhdWx0cyB0byBgdHJ1ZWAuICovXG4gIHNob3dPdXRwdXQ/OiBib29sZWFuO1xuICAvKiogQWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gaW5qZWN0LiAqL1xuICBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vKipcbiAqIFJlc3VsdCBvZiBhIENESyBzaGVsbCBjb21tYW5kIGV4ZWN1dGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZGtTaGVsbFJlc3VsdCB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIGR1cmF0aW9uOiBudW1iZXI7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBDREsgQ0xJIGNvbW1hbmQgYXMgYSBjaGlsZCBwcm9jZXNzLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGZ1bGwgQ0RLIENMSSBjb21tYW5kIHN0cmluZyAoZS5nLiwgYGNkayBib290c3RyYXAgLi4uYCkuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGV4ZWN1dGlvbiBzZXR0aW5ncy5cbiAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIGBzdWNjZXNzYCBhbmQgYGR1cmF0aW9uYCBpbiBtcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWN1dGVDZGtTaGVsbENvbW1hbmQoXG4gIGNvbW1hbmQ6IHN0cmluZyxcbiAgb3B0aW9uczogQ2RrU2hlbGxPcHRpb25zID0ge30sXG4pOiBDZGtTaGVsbFJlc3VsdCB7XG4gIGNvbnN0IHsgZGVidWcgPSBmYWxzZSwgc2hvd091dHB1dCA9IHRydWUsIGVudjogZXh0cmFFbnYgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBlbnYgPSB7XG4gICAgICAuLi5wcm9jZXNzLmVudixcbiAgICAgIC4uLmV4dHJhRW52LFxuICAgIH07XG5cbiAgICBleGVjU3luYyhjb21tYW5kLCB7XG4gICAgICBzdGRpbzogc2hvd091dHB1dCA/IFsnaW5oZXJpdCcsICdpbmhlcml0JywgJ3BpcGUnXSA6ICdwaXBlJyxcbiAgICAgIGVudixcbiAgICB9KTtcblxuICAgIGNvbnN0IGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgZHVyYXRpb24sXG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzdGFydFRpbWU7XG5cbiAgICAvLyBFeHRyYWN0IHN0ZGVyci9zdGRvdXQgZnJvbSBleGVjU3luYyBlcnJvciB3aGVuIGF2YWlsYWJsZVxuICAgIGlmIChlcnJvciAmJiB0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmICdzdGRlcnInIGluIGVycm9yKSB7XG4gICAgICBjb25zdCBleGVjRXJyb3IgPSBlcnJvciBhcyB7IHN0ZGVycj86IEJ1ZmZlciB8IHN0cmluZzsgc3Rkb3V0PzogQnVmZmVyIHwgc3RyaW5nOyBzdGF0dXM/OiBudW1iZXIgfTtcbiAgICAgIGNvbnN0IHN0ZGVyciA9IGV4ZWNFcnJvci5zdGRlcnI/LnRvU3RyaW5nKCkudHJpbSgpO1xuICAgICAgY29uc3Qgc3Rkb3V0ID0gZXhlY0Vycm9yLnN0ZG91dD8udG9TdHJpbmcoKS50cmltKCk7XG5cbiAgICAgIGNvbnNvbGUuZXJyb3IoJycpO1xuICAgICAgY29uc29sZS5lcnJvcignQ0RLIGRlcGxveW1lbnQgZmFpbGVkOicpO1xuICAgICAgaWYgKHN0ZGVycikgY29uc29sZS5lcnJvcihzdGRlcnIpO1xuICAgICAgaWYgKHN0ZG91dCkgY29uc29sZS5lcnJvcihzdGRvdXQpO1xuICAgICAgaWYgKGV4ZWNFcnJvci5zdGF0dXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBFeGl0IGNvZGU6ICR7ZXhlY0Vycm9yLnN0YXR1c30gKGFmdGVyICR7ZHVyYXRpb259bXMpYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5lcnJvcignQ0RLIGV4ZWN1dGlvbiBmYWlsZWQ6JywgZXJyb3IpO1xuICAgIH1cblxuICAgIHRocm93IGVycm9yO1xuICB9XG59XG4iXX0=
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2Nkay11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUvQzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsU0FBaUI7SUFDdEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBUUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsVUFBVTtJQUN4QixJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsZUFBZSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMvRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUFDLE9BQU8sVUFBVSxFQUFFLENBQUM7UUFDcEIsNEVBQTRFO1FBQzVFLDhFQUE4RTtRQUM5RSxzRUFBc0U7UUFDdEUsc0VBQXNFO1FBQ3RFLDRFQUE0RTtRQUM1RSxrREFBa0Q7UUFDbEQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDcEMsSUFBSSxTQUFTLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDO2dCQUNILE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLFNBQVMsdUJBQXVC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O2dCQUNuQyxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsU0FBUyxDQUFDLE1BQU0sV0FBVyxRQUFRLEtBQUssQ0FBQyxDQUFDO1lBQ3hFLENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHByaW50RXJyb3IgfSBmcm9tICcuL291dHB1dC11dGlscy5qcyc7XG5cbi8qKlxuICogUGF0aCB0byBkaXN0L2JvaWxlcnBsYXRlLmpzLiB0c2MgZW1pdHMgY29tbWFuZHMgYXQgZGlzdC9jb21tYW5kcy8sIHNvXG4gKiBib2lsZXJwbGF0ZSBpcyBvbmUgbGV2ZWwgdXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQm9pbGVycGxhdGVQYXRoKGNhbGxlckRpcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhdGguam9pbihjYWxsZXJEaXIsICcuLicsICdib2lsZXJwbGF0ZS5qcycpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENka0luZm8ge1xuICBhdmFpbGFibGU6IGJvb2xlYW47XG4gIHZlcnNpb246IHN0cmluZyB8IG51bGw7XG4gIGVycm9yPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBBV1MgQ0RLIENMSSBpcyBpbnN0YWxsZWQgYW5kIHJldHVybnMgaXRzIHZlcnNpb24uXG4gKlxuICogVHJpZXMgYGNkayAtLXZlcnNpb25gIGZpcnN0LiBJZiB0aGF0IGZhaWxzICh0eXBpY2FsbHkgYmVjYXVzZSB0aGUgdXNlciBoYXNcbiAqIGNkayBvbiBQQVRIIHZpYSB0aGVpciBzaGVsbCByYyBidXQgZXhlY1N5bmMncyBkZWZhdWx0IGAvYmluL3NoYCBkb2Vzbid0XG4gKiBzb3VyY2UgaXQpLCBmYWxscyBiYWNrIHRvIHJ1bm5pbmcgdGhyb3VnaCB0aGUgdXNlcidzIGludGVyYWN0aXZlIHNoZWxsXG4gKiAoYCRTSEVMTCAtaSAtY2ApIHNvIG5vZGUgdmVyc2lvbiBtYW5hZ2VycyBsaWtlIG52bS9hc2RmIGFuZCBob21lYnJldyBwYXRoc1xuICogYmVjb21lIHZpc2libGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDZGtJbmZvKCk6IENka0luZm8ge1xuICB0cnkge1xuICAgIGNvbnN0IG91dHB1dCA9IGV4ZWNTeW5jKCdjZGsgLS12ZXJzaW9uJywgeyBlbmNvZGluZzogJ3V0Zi04Jywgc3RkaW86ICdwaXBlJyB9KTtcbiAgICByZXR1cm4geyBhdmFpbGFibGU6IHRydWUsIHZlcnNpb246IG91dHB1dC50cmltKCkgfTtcbiAgfSBjYXRjaCAoZmlyc3RFcnJvcikge1xuICAgIC8vIEZhbGxiYWNrOiBydW4gdGhyb3VnaCB0aGUgdXNlcidzIHNoZWxsIGFzIGxvZ2luICsgaW50ZXJhY3RpdmUgKGAtaWxjYCkgc29cbiAgICAvLyBpdCBhY3R1YWxseSBzb3VyY2VzIHRoZWlyIHByb2ZpbGUvcmMgKG52bS9hc2RmL2hvbWVicmV3IFBBVEgpLiBUaGUgcHJldmlvdXNcbiAgICAvLyBgc2hlbGw6IHVzZXJTaGVsbGAgb3B0aW9uIG9ubHkgY2hhbmdlZCB3aGljaCBiaW5hcnkgcmFuIGAtY2AgKHN0aWxsXG4gICAgLy8gbm9uLWxvZ2luL25vbi1pbnRlcmFjdGl2ZSDihpIgcmMgbm90IHNvdXJjZWQpLiBzdGRpbiBpcyBpZ25vcmVkIHNvIGFuXG4gICAgLy8gaW50ZXJhY3RpdmUgc2hlbGwgY2FuJ3QgYmxvY2sgd2FpdGluZyBmb3IgaW5wdXQuIFNraXAgd2hlbiBTSEVMTCBpcyB1bnNldFxuICAgIC8vIG9yIC9iaW4vc2ggKHNhbWUgYXMgdGhlIGRlZmF1bHQgYXR0ZW1wdCBhYm92ZSkuXG4gICAgY29uc3QgdXNlclNoZWxsID0gcHJvY2Vzcy5lbnYuU0hFTEw7XG4gICAgaWYgKHVzZXJTaGVsbCAmJiAhdXNlclNoZWxsLmVuZHNXaXRoKCcvc2gnKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZXhlY1N5bmMoYCR7dXNlclNoZWxsfSAtaWxjICdjZGsgLS12ZXJzaW9uJ2AsIHtcbiAgICAgICAgICBlbmNvZGluZzogJ3V0Zi04JyxcbiAgICAgICAgICBzdGRpbzogWydpZ25vcmUnLCAncGlwZScsICdwaXBlJ10sXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4geyBhdmFpbGFibGU6IHRydWUsIHZlcnNpb246IG91dHB1dC50cmltKCkgfTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBmYWxsIHRocm91Z2ggdG8gdGhlIG9yaWdpbmFsIGVycm9yXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBhdmFpbGFibGU6IGZhbHNlLFxuICAgICAgdmVyc2lvbjogbnVsbCxcbiAgICAgIGVycm9yOiBmaXJzdEVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBmaXJzdEVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcicsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBBV1MgQ0RLIENMSSBpcyBpbnN0YWxsZWQgYW5kIGFjY2Vzc2libGUgb24gdGhlIFBBVEguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0Nka0F2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgcmV0dXJuIGdldENka0luZm8oKS5hdmFpbGFibGU7XG59XG5cbi8qKlxuICogQXNzZXJ0cyB0aGF0IHRoZSBBV1MgQ0RLIENMSSBpcyBpbnN0YWxsZWQ7IHRocm93cyB3aXRoIGEgdXNlci1mcmllbmRseVxuICogbWVzc2FnZSArIGluc3RhbGwgaGludCB3aGVuIGl0IGlzbid0LiBVc2UgYXQgdGhlIHRvcCBvZiBhbnkgY29tbWFuZCB0aGF0XG4gKiBzaGVsbHMgb3V0IHRvIGBjZGtgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQ2RrQXZhaWxhYmxlKCk6IHZvaWQge1xuICBpZiAoY2hlY2tDZGtBdmFpbGFibGUoKSkgcmV0dXJuO1xuICBwcmludEVycm9yKCdBV1MgQ0RLIGlzIG5vdCBpbnN0YWxsZWQgb3Igbm90IGFjY2Vzc2libGUnKTtcbiAgY29uc29sZS5sb2coJ0luc3RhbGwgQ0RLIHdpdGg6IG5wbSBpbnN0YWxsIC1nIGF3cy1jZGsnKTtcbiAgdGhyb3cgbmV3IEVycm9yKCdBV1MgQ0RLIG5vdCBmb3VuZCcpO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGV4ZWN1dGluZyBhIENESyBzaGVsbCBjb21tYW5kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENka1NoZWxsT3B0aW9ucyB7XG4gIC8qKiBXaGVuIGB0cnVlYCwgcHJpbnRzIHRoZSBlcnJvciB0byBzdGRlcnIgb24gZmFpbHVyZS4gKi9cbiAgZGVidWc/OiBib29sZWFuO1xuICAvKiogV2hlbiBgdHJ1ZWAsIGluaGVyaXRzIHN0ZGlvIHNvIG91dHB1dCBzdHJlYW1zIHRvIHRoZSB0ZXJtaW5hbC4gRGVmYXVsdHMgdG8gYHRydWVgLiAqL1xuICBzaG93T3V0cHV0PzogYm9vbGVhbjtcbiAgLyoqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGluamVjdC4gKi9cbiAgZW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgYSBDREsgc2hlbGwgY29tbWFuZCBleGVjdXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrU2hlbGxSZXN1bHQge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBkdXJhdGlvbjogbnVtYmVyO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGEgQ0RLIENMSSBjb21tYW5kIGFzIGEgY2hpbGQgcHJvY2Vzcy5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBmdWxsIENESyBDTEkgY29tbWFuZCBzdHJpbmcgKGUuZy4sIGBjZGsgYm9vdHN0cmFwIC4uLmApLlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBleGVjdXRpb24gc2V0dGluZ3MuXG4gKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCBgc3VjY2Vzc2AgYW5kIGBkdXJhdGlvbmAgaW4gbXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGVjdXRlQ2RrU2hlbGxDb21tYW5kKFxuICBjb21tYW5kOiBzdHJpbmcsXG4gIG9wdGlvbnM6IENka1NoZWxsT3B0aW9ucyA9IHt9LFxuKTogQ2RrU2hlbGxSZXN1bHQge1xuICBjb25zdCB7IGRlYnVnID0gZmFsc2UsIHNob3dPdXRwdXQgPSB0cnVlLCBlbnY6IGV4dHJhRW52IH0gPSBvcHRpb25zO1xuICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZW52ID0ge1xuICAgICAgLi4ucHJvY2Vzcy5lbnYsXG4gICAgICAuLi5leHRyYUVudixcbiAgICB9O1xuXG4gICAgZXhlY1N5bmMoY29tbWFuZCwge1xuICAgICAgc3RkaW86IHNob3dPdXRwdXQgPyBbJ2luaGVyaXQnLCAnaW5oZXJpdCcsICdwaXBlJ10gOiAncGlwZScsXG4gICAgICBlbnYsXG4gICAgfSk7XG5cbiAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzdGFydFRpbWU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGR1cmF0aW9uLFxuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lO1xuXG4gICAgLy8gRXh0cmFjdCBzdGRlcnIvc3Rkb3V0IGZyb20gZXhlY1N5bmMgZXJyb3Igd2hlbiBhdmFpbGFibGVcbiAgICBpZiAoZXJyb3IgJiYgdHlwZW9mIGVycm9yID09PSAnb2JqZWN0JyAmJiAnc3RkZXJyJyBpbiBlcnJvcikge1xuICAgICAgY29uc3QgZXhlY0Vycm9yID0gZXJyb3IgYXMgeyBzdGRlcnI/OiBCdWZmZXIgfCBzdHJpbmc7IHN0ZG91dD86IEJ1ZmZlciB8IHN0cmluZzsgc3RhdHVzPzogbnVtYmVyIH07XG4gICAgICBjb25zdCBzdGRlcnIgPSBleGVjRXJyb3Iuc3RkZXJyPy50b1N0cmluZygpLnRyaW0oKTtcbiAgICAgIGNvbnN0IHN0ZG91dCA9IGV4ZWNFcnJvci5zdGRvdXQ/LnRvU3RyaW5nKCkudHJpbSgpO1xuXG4gICAgICBjb25zb2xlLmVycm9yKCcnKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0NESyBkZXBsb3ltZW50IGZhaWxlZDonKTtcbiAgICAgIGlmIChzdGRlcnIpIGNvbnNvbGUuZXJyb3Ioc3RkZXJyKTtcbiAgICAgIGlmIChzdGRvdXQpIGNvbnNvbGUuZXJyb3Ioc3Rkb3V0KTtcbiAgICAgIGlmIChleGVjRXJyb3Iuc3RhdHVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRXhpdCBjb2RlOiAke2V4ZWNFcnJvci5zdGF0dXN9IChhZnRlciAke2R1cmF0aW9ufW1zKWApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZGVidWcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0NESyBleGVjdXRpb24gZmFpbGVkOicsIGVycm9yKTtcbiAgICB9XG5cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -41,8 +41,8 @@
41
41
  "typescript": "6.0.3",
42
42
  "yaml": "2.9.0",
43
43
  "zod": "4.4.3",
44
- "@pipeline-builder/pipeline-core": "3.4.99",
45
- "@pipeline-builder/ai-core": "3.4.82"
44
+ "@pipeline-builder/ai-core": "3.4.84",
45
+ "@pipeline-builder/pipeline-core": "3.4.101"
46
46
  },
47
47
  "keywords": [
48
48
  "ci-cd",
@@ -97,7 +97,7 @@
97
97
  "access": "public",
98
98
  "registry": "https://registry.npmjs.org/"
99
99
  },
100
- "version": "3.4.138",
100
+ "version": "3.4.140",
101
101
  "bugs": {
102
102
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
103
103
  },