@workflow/cli 5.0.0-beta.43 → 5.0.0-beta.46

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.
@@ -13,8 +13,8 @@ export declare const CLI_CANCEL_REASON = "Cancelled via Workflow CLI";
13
13
  export declare const CANCELLABLE_STATUSES: readonly ["pending", "running"];
14
14
  /**
15
15
  * Guidance printed when more runs match the filters than were fetched. Bulk
16
- * cancel is deliberately single-batch and user-paced no cursors or async
17
- * jobs so the user re-runs to cancel the next batch.
16
+ * cancel is deliberately single-batch and user-paced (no cursors or async
17
+ * jobs), so the user re-runs to cancel the next batch.
18
18
  */
19
19
  export declare const HAS_MORE_GUIDANCE: string;
20
20
  export interface CancelLogger {
@@ -20,8 +20,8 @@ export const CANCELLABLE_STATUSES = [
20
20
  ];
21
21
  /**
22
22
  * Guidance printed when more runs match the filters than were fetched. Bulk
23
- * cancel is deliberately single-batch and user-paced no cursors or async
24
- * jobs so the user re-runs to cancel the next batch.
23
+ * cancel is deliberately single-batch and user-paced (no cursors or async
24
+ * jobs), so the user re-runs to cancel the next batch.
25
25
  */
26
26
  export const HAS_MORE_GUIDANCE = 'More runs match these filters. Re-run this command to cancel the next batch,\n' +
27
27
  'or use --limit up to 500.';
@@ -109,7 +109,7 @@ export async function performBulkCancel(params) {
109
109
  }
110
110
  // The analytics backend defaults its listing to a recent window
111
111
  // (trailing 24h on the Vercel backend), but bulk cancel must match
112
- // across the plan's whole observability window a run can sleep or
112
+ // across the plan's whole observability window: a run can sleep or
113
113
  // wait on a hook for days without emitting recent events. Probe for
114
114
  // the plan window bounds first, then match across them.
115
115
  const probe = await analytics.runs.list({
@@ -194,4 +194,4 @@ export async function performBulkCancel(params) {
194
194
  // genuine failure is a nonzero exit.
195
195
  return { exitCode: result.summary.failed > 0 ? 1 : 0, result };
196
196
  }
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsay1jYW5jZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2J1bGstY2FuY2VsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQU0vRCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQy9CLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLENBQUM7QUFDekMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsNEJBQTRCLENBQUM7QUFFOUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLFNBQVM7SUFDVCxTQUFTO0NBQ3NDLENBQUM7QUFFbEQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUM1QixnRkFBZ0Y7SUFDaEYsMkJBQTJCLENBQUM7QUFROUI7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEtBQWE7SUFDbkQsSUFDRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ3hCLEtBQUssR0FBRyxxQkFBcUI7UUFDN0IsS0FBSyxHQUFHLHFCQUFxQixFQUM3QixDQUFDO1FBQ0QsT0FBTyxzQ0FBc0MscUJBQXFCLFFBQVEscUJBQXFCLEdBQUcsQ0FBQztJQUNyRyxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxNQUFvQztJQUVwQyxNQUFNLEVBQUUsT0FB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SCxDQUFDO0lBRUQscUVBQXFFO0lBQ3JFLG9EQUFvRDtJQUNwRCxNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FDN0IsS0FBSyxFQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQ2pDLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLENBQ3BDLENBQUM7SUFFRixLQUFLLE1BQU0sSUFBSSxJQUFJLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDbEQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUVuRCx5RUFBeUU7SUFDekUscUNBQXFDO0lBQ3JDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2FuY2VsUnVucyB9IGZyb20gJ0B3b3JrZmxvdy9jb3JlL3J1bnRpbWUnO1xuaW1wb3J0IHsgcGFyc2VXb3JrZmxvd05hbWUgfSBmcm9tICdAd29ya2Zsb3cvdXRpbHMvcGFyc2UtbmFtZSc7XG5pbXBvcnQgdHlwZSB7XG4gIEJ1bGtDYW5jZWxXb3JrZmxvd1J1bnNSZXN1bHQsXG4gIFdvcmtmbG93UnVuU3RhdHVzLFxuICBXb3JsZCxcbn0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgVGFibGUgZnJvbSAnZWFzeS10YWJsZSc7XG5pbXBvcnQgeyBwbGFuV2luZG93U3RhcnRGcm9tUmVzcG9uc2UgfSBmcm9tICcuL2luc3BlY3QvdGltZS13aW5kb3cuanMnO1xuXG5leHBvcnQgY29uc3QgQlVMS19DQU5DRUxfTUlOX0xJTUlUID0gMTtcbmV4cG9ydCBjb25zdCBCVUxLX0NBTkNFTF9NQVhfTElNSVQgPSA1MDA7XG5leHBvcnQgY29uc3QgQ0xJX0NBTkNFTF9SRUFTT04gPSAnQ2FuY2VsbGVkIHZpYSBXb3JrZmxvdyBDTEknO1xuXG4vKipcbiAqIFN0YXR1c2VzIGEgcnVuIGNhbiBzdGlsbCBiZSBjYW5jZWxsZWQgZnJvbS4gV2hlbiB0aGUgY2FsbGVyIGRvZXNuJ3QgcGluIGFcbiAqIGAtLXN0YXR1c2AsIGJ1bGsgY2FuY2VsIHJlc3RyaWN0cyBtYXRjaGluZyB0byB0aGVzZSBzbyB0ZXJtaW5hbCBydW5zXG4gKiAoaW5jbHVkaW5nIHRoZSBvbmVzIGEgcHJpb3IgYmF0Y2gganVzdCBjYW5jZWxsZWQpIGRvbid0IGNyb3dkIG91dCByZWFjaGFibGVcbiAqIGFjdGl2ZSBydW5zLiBPdGhlcndpc2UsIGxpc3RpbmcgZXZlcnkgc3RhdHVzIHJldHVybnMgdGhlIHNhbWUgbmV3ZXN0XG4gKiB0ZXJtaW5hbCBwYWdlIG9uIGVhY2ggcmVydW4gYW5kIG9sZGVyIGFjdGl2ZSBydW5zIGFyZSBuZXZlciByZWFjaGVkLiBUaGVcbiAqIGxpc3QgQVBJIGZpbHRlcnMgYnkgYSBzaW5nbGUgc3RhdHVzLCBzbyB3ZSBmYW4gb3V0IGFjcm9zcyB0aGVzZSBhbmQgbWVyZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBDQU5DRUxMQUJMRV9TVEFUVVNFUyA9IFtcbiAgJ3BlbmRpbmcnLFxuICAncnVubmluZycsXG5dIGFzIGNvbnN0IHNhdGlzZmllcyByZWFkb25seSBXb3JrZmxvd1J1blN0YXR1c1tdO1xuXG4vKipcbiAqIEd1aWRhbmNlIHByaW50ZWQgd2hlbiBtb3JlIHJ1bnMgbWF0Y2ggdGhlIGZpbHRlcnMgdGhhbiB3ZXJlIGZldGNoZWQuIEJ1bGtcbiAqIGNhbmNlbCBpcyBkZWxpYmVyYXRlbHkgc2luZ2xlLWJhdGNoIGFuZCB1c2VyLXBhY2VkIOKAlCBubyBjdXJzb3JzIG9yIGFzeW5jXG4gKiBqb2JzIOKAlCBzbyB0aGUgdXNlciByZS1ydW5zIHRvIGNhbmNlbCB0aGUgbmV4dCBiYXRjaC5cbiAqL1xuZXhwb3J0IGNvbnN0IEhBU19NT1JFX0dVSURBTkNFID1cbiAgJ01vcmUgcnVucyBtYXRjaCB0aGVzZSBmaWx0ZXJzLiBSZS1ydW4gdGhpcyBjb21tYW5kIHRvIGNhbmNlbCB0aGUgbmV4dCBiYXRjaCxcXG4nICtcbiAgJ29yIHVzZSAtLWxpbWl0IHVwIHRvIDUwMC4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbmNlbExvZ2dlciB7XG4gIGxvZyhtZXNzYWdlOiBzdHJpbmcpOiB2b2lkO1xuICB3YXJuKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQ7XG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQ7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgdGhlIGAtLWxpbWl0YCBmbGFnLiBSZXR1cm5zIGFuIGVycm9yIG1lc3NhZ2Ugd2hlbiBpbnZhbGlkLCBvclxuICogYHVuZGVmaW5lZGAgd2hlbiB0aGUgdmFsdWUgaXMgYW4gaW50ZWdlciB3aXRoaW4gWzEsIDUwMF0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUJ1bGtDYW5jZWxMaW1pdChsaW1pdDogbnVtYmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKFxuICAgICFOdW1iZXIuaXNJbnRlZ2VyKGxpbWl0KSB8fFxuICAgIGxpbWl0IDwgQlVMS19DQU5DRUxfTUlOX0xJTUlUIHx8XG4gICAgbGltaXQgPiBCVUxLX0NBTkNFTF9NQVhfTElNSVRcbiAgKSB7XG4gICAgcmV0dXJuIGAtLWxpbWl0IG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuICR7QlVMS19DQU5DRUxfTUlOX0xJTUlUfSBhbmQgJHtCVUxLX0NBTkNFTF9NQVhfTElNSVR9LmA7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBCdWlsZCB0aGUgY29tcGFjdCBtdWx0aS1saW5lIFwiRG9uZTpcIiBzdW1tYXJ5IGJsb2NrLiBMaXN0cyBldmVyeSBvdXRjb21lXG4gKiBjYXRlZ29yeSBzbyB0aGUgY291bnRzIGFkZCB1cCB0byB0aGUgbnVtYmVyIG9mIHJ1bnMgcmVxdWVzdGVkOyBpbmRpdmlkdWFsXG4gKiBgbm90X2ZvdW5kYCwgYG5vdF9jYW5jZWxsYWJsZWAsIGFuZCBgZmFpbGVkYCBydW5zIGFyZSBhZGRpdGlvbmFsbHkgc3VyZmFjZWRcbiAqIHBlci1ydW4gdmlhIHtAbGluayBidWxrQ2FuY2VsRmFpbHVyZUxpbmVzfS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEJ1bGtDYW5jZWxTdW1tYXJ5KFxuICByZXN1bHQ6IEJ1bGtDYW5jZWxXb3JrZmxvd1J1bnNSZXN1bHRcbik6IHN0cmluZyB7XG4gIGNvbnN0IHsgc3VtbWFyeSB9ID0gcmVzdWx0O1xuICByZXR1cm4gW1xuICAgICdEb25lOicsXG4gICAgYCAgJHtzdW1tYXJ5LmNhbmNlbGxlZH0gY2FuY2VsbGVkYCxcbiAgICBgICAke3N1bW1hcnkuYWxyZWFkeUNhbmNlbGxlZH0gYWxyZWFkeSBjYW5jZWxsZWRgLFxuICAgIGAgICR7c3VtbWFyeS5ub3RDYW5jZWxsYWJsZX0gbm90IGNhbmNlbGxhYmxlYCxcbiAgICBgICAke3N1bW1hcnkubm90Rm91bmR9IG5vdCBmb3VuZGAsXG4gICAgYCAgJHtzdW1tYXJ5LmZhaWxlZH0gZmFpbGVkYCxcbiAgXS5qb2luKCdcXG4nKTtcbn1cblxuLyoqXG4gKiBQZXItcnVuIGxpbmVzIGZvciBvdXRjb21lcyB3b3J0aCBjYWxsaW5nIG91dCBpbmRpdmlkdWFsbHk6IGBub3RfZm91bmRgLFxuICogYG5vdF9jYW5jZWxsYWJsZWAsIGFuZCBgZmFpbGVkYC4gQ2FuY2VsbGVkIGFuZCBhbHJlYWR5LWNhbmNlbGxlZCBydW5zIGFyZVxuICogbGVmdCB0byB0aGUgc3VtbWFyeS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1bGtDYW5jZWxGYWlsdXJlTGluZXMoXG4gIHJlc3VsdDogQnVsa0NhbmNlbFdvcmtmbG93UnVuc1Jlc3VsdFxuKTogc3RyaW5nW10ge1xuICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCByIG9mIHJlc3VsdC5yZXN1bHRzKSB7XG4gICAgc3dpdGNoIChyLm91dGNvbWUpIHtcbiAgICAgIGNhc2UgJ25vdF9mb3VuZCc6XG4gICAgICAgIGxpbmVzLnB1c2goYCAg4pyXICR7ci5ydW5JZH06IG5vdCBmb3VuZGApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ25vdF9jYW5jZWxsYWJsZSc6XG4gICAgICAgIGxpbmVzLnB1c2goYCAg4pyXICR7ci5ydW5JZH06IG5vdCBjYW5jZWxsYWJsZSAoJHtyLnN0YXR1c30pYCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgbGluZXMucHVzaChcbiAgICAgICAgICBgICDinJcgJHtyLnJ1bklkfTogZmFpbGVkICgke3IuY29kZX0ke3IucmV0cnlhYmxlID8gJywgcmV0cnlhYmxlJyA6ICcnfSlgXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbGluZXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVsa0NhbmNlbFBhcmFtcyB7XG4gIHdvcmxkOiBXb3JsZDtcbiAgc3RhdHVzPzogV29ya2Zsb3dSdW5TdGF0dXM7XG4gIHdvcmtmbG93TmFtZT86IHN0cmluZztcbiAgLyoqIE1heCBydW5zIHRvIGZldGNoIGFuZCBjYW5jZWwgaW4gdGhpcyBiYXRjaCAoYWxyZWFkeSB2YWxpZGF0ZWQpLiAqL1xuICBsaW1pdDogbnVtYmVyO1xuICAvKiogV2hlbiB0cnVlLCBza2lwIHRoZSBpbnRlcmFjdGl2ZSBjb25maXJtYXRpb24gcHJvbXB0LiAqL1xuICBjb25maXJtOiBib29sZWFuO1xuICBsb2dnZXI6IENhbmNlbExvZ2dlcjtcbiAgLyoqXG4gICAqIENvbmZpcm1hdGlvbiBwcm9tcHQuIE9taXR0ZWQgaW4gbm9uLWludGVyYWN0aXZlIGNvbnRleHRzIChhbmQgdGVzdHMpLFxuICAgKiBpbiB3aGljaCBjYXNlIGFuIHVuY29uZmlybWVkIHJ1biBhYm9ydHMuXG4gICAqL1xuICBwcm9tcHRDb25maXJtPzogKG1lc3NhZ2U6IHN0cmluZykgPT4gUHJvbWlzZTxib29sZWFuPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWxrQ2FuY2VsT3V0Y29tZSB7XG4gIC8qKiBQcm9jZXNzIGV4aXQgY29kZTogMSB3aGVuIGFueSBydW4gZmFpbGVkLCBvdGhlcndpc2UgMC4gKi9cbiAgZXhpdENvZGU6IG51bWJlcjtcbiAgLyoqIFRoZSBzdHJ1Y3R1cmVkIHJlc3VsdCwgb3IgdW5kZWZpbmVkIHdoZW4gbm90aGluZyBtYXRjaGVkIC8gYWJvcnRlZC4gKi9cbiAgcmVzdWx0PzogQnVsa0NhbmNlbFdvcmtmbG93UnVuc1Jlc3VsdDtcbn1cblxuLyoqXG4gKiBGZXRjaCBtYXRjaGluZyBydW5zICh1cCB0byBgbGltaXRgKSwgY29uZmlybSwgYW5kIGNhbmNlbCB0aGVtIGluIGEgc2luZ2xlXG4gKiBidWxrIG9wZXJhdGlvbi4gUHJpbnRzIGEgdGFibGUgb2Ygd2hhdCB3aWxsIGJlIGNhbmNlbGxlZCwgcmVydW4gZ3VpZGFuY2VcbiAqIHdoZW4gbW9yZSBydW5zIG1hdGNoIHRoYW4gd2VyZSBmZXRjaGVkLCBhIGNvbXBhY3Qgc3VtbWFyeSwgYW5kIHBlci1ydW5cbiAqIGxpbmVzIGZvciBzdXJmYWNlZCBmYWlsdXJlcy5cbiAqXG4gKiBEb2VzIG5vdCB0cmF2ZXJzZSBwYWdlczogZXhhY3RseSBvbmUgcGFnZSBvZiBhdCBtb3N0IGBsaW1pdGAgcnVucyBpc1xuICogY2FuY2VsbGVkIHBlciBpbnZvY2F0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGVyZm9ybUJ1bGtDYW5jZWwoXG4gIHBhcmFtczogQnVsa0NhbmNlbFBhcmFtc1xuKTogUHJvbWlzZTxCdWxrQ2FuY2VsT3V0Y29tZT4ge1xuICBjb25zdCB7IHdvcmxkLCBzdGF0dXMsIHdvcmtmbG93TmFtZSwgbGltaXQsIGNvbmZpcm0sIGxvZ2dlciwgcHJvbXB0Q29uZmlybSB9ID1cbiAgICBwYXJhbXM7XG5cbiAgLy8gRmV0Y2ggbWF0Y2hpbmcgcnVucy4gT25seSBtZXRhZGF0YSBpcyBuZWVkZWQgdG8gZGlzcGxheSBhbmQgY2FuY2VsLCBzb1xuICAvLyBwcmVmZXIgdGhlIGFuYWx5dGljcyByZWFkIHBhdGggd2hlbiB0aGUgYmFja2VuZCBwcm92aWRlcyBvbmUuXG4gIC8vXG4gIC8vIFdoZW4gdGhlIGNhbGxlciBwaW5zIGEgc3RhdHVzLCBtYXRjaCBleGFjdGx5IHRoYXQuIE90aGVyd2lzZSByZXN0cmljdCB0b1xuICAvLyB0aGUgY2FuY2VsbGFibGUgc3RhdHVzZXMgc28gcmVydW5uaW5nIG1ha2VzIHByb2dyZXNzIGluc3RlYWQgb2YgcmV0dXJuaW5nXG4gIC8vIHRoZSBzYW1lIHRlcm1pbmFsIHBhZ2UgZm9yZXZlci4gVGhlIGxpc3QgQVBJIHRha2VzIGEgc2luZ2xlIHN0YXR1cywgc29cbiAgLy8gZmFuIG91dCBhY3Jvc3MgdGhlIHRhcmdldCBzdGF0dXNlcyBhbmQgbWVyZ2UgdGhlIHBhZ2VzIGJlbG93LlxuICBjb25zdCBhbmFseXRpY3MgPSB3b3JsZC5hbmFseXRpY3M7XG4gIGNvbnN0IHRhcmdldFN0YXR1c2VzOiBXb3JrZmxvd1J1blN0YXR1c1tdID0gc3RhdHVzXG4gICAgPyBbc3RhdHVzXVxuICAgIDogWy4uLkNBTkNFTExBQkxFX1NUQVRVU0VTXTtcblxuICBjb25zdCBmZXRjaFBhZ2UgPSBhc3luYyAocGFnZVN0YXR1czogV29ya2Zsb3dSdW5TdGF0dXMpID0+IHtcbiAgICBpZiAoIWFuYWx5dGljcykge1xuICAgICAgcmV0dXJuIHdvcmxkLnJ1bnMubGlzdCh7XG4gICAgICAgIHN0YXR1czogcGFnZVN0YXR1cyxcbiAgICAgICAgd29ya2Zsb3dOYW1lLFxuICAgICAgICBwYWdpbmF0aW9uOiB7IGxpbWl0IH0sXG4gICAgICAgIHJlc29sdmVEYXRhOiAnbm9uZScsXG4gICAgICB9KTtcbiAgICB9XG4gICAgLy8gVGhlIGFuYWx5dGljcyBiYWNrZW5kIGRlZmF1bHRzIGl0cyBsaXN0aW5nIHRvIGEgcmVjZW50IHdpbmRvd1xuICAgIC8vICh0cmFpbGluZyAyNGggb24gdGhlIFZlcmNlbCBiYWNrZW5kKSwgYnV0IGJ1bGsgY2FuY2VsIG11c3QgbWF0Y2hcbiAgICAvLyBhY3Jvc3MgdGhlIHBsYW4ncyB3aG9sZSBvYnNlcnZhYmlsaXR5IHdpbmRvdyDigJQgYSBydW4gY2FuIHNsZWVwIG9yXG4gICAgLy8gd2FpdCBvbiBhIGhvb2sgZm9yIGRheXMgd2l0aG91dCBlbWl0dGluZyByZWNlbnQgZXZlbnRzLiBQcm9iZSBmb3JcbiAgICAvLyB0aGUgcGxhbiB3aW5kb3cgYm91bmRzIGZpcnN0LCB0aGVuIG1hdGNoIGFjcm9zcyB0aGVtLlxuICAgIGNvbnN0IHByb2JlID0gYXdhaXQgYW5hbHl0aWNzLnJ1bnMubGlzdCh7XG4gICAgICBzdGF0dXM6IHBhZ2VTdGF0dXMsXG4gICAgICB3b3JrZmxvd05hbWUsXG4gICAgICBwYWdpbmF0aW9uOiB7IGxpbWl0OiAxIH0sXG4gICAgfSk7XG4gICAgY29uc3Qgd2luZG93U3RhcnQgPSBwbGFuV2luZG93U3RhcnRGcm9tUmVzcG9uc2UocHJvYmUpO1xuICAgIHJldHVybiBhbmFseXRpY3MucnVucy5saXN0KHtcbiAgICAgIHN0YXR1czogcGFnZVN0YXR1cyxcbiAgICAgIHdvcmtmbG93TmFtZSxcbiAgICAgIC4uLih3aW5kb3dTdGFydFxuICAgICAgICA/IHsgc3RhcnRUaW1lOiB3aW5kb3dTdGFydCwgZW5kVGltZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpIH1cbiAgICAgICAgOiB7fSksXG4gICAgICBwYWdpbmF0aW9uOiB7IGxpbWl0IH0sXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgcGFnZXMgPSBhd2FpdCBQcm9taXNlLmFsbCh0YXJnZXRTdGF0dXNlcy5tYXAoZmV0Y2hQYWdlKSk7XG5cbiAgLy8gTWVyZ2UgdGhlIHBlci1zdGF0dXMgcGFnZXMgcm91bmQtcm9iaW4gc28gYSBmdWxsIHBhZ2Ugb2YgcnVubmluZyBydW5zXG4gIC8vIGNhbm5vdCBjcm93ZCBwZW5kaW5nIHJ1bnMgKHdoaWNoIGRvIG5vdCBoYXZlIGEgc3RhcnRlZEF0IHRpbWVzdGFtcCkgb3V0XG4gIC8vIG9mIGV2ZXJ5IGJhdGNoLiBQcmVzZXJ2ZSBlYWNoIHBhZ2UncyBiYWNrZW5kIG9yZGVyIGFuZCBkZWR1cGUgYnkgcnVuSWQgaW5cbiAgLy8gY2FzZSBhIHJ1biBjaGFuZ2VzIHN0YXR1cyB3aGlsZSB0aGUgcGFnZXMgYXJlIGZldGNoZWQuXG4gIGNvbnN0IHByb2plY3RlZFBhZ2VzID0gcGFnZXMubWFwKChwYWdlKSA9PlxuICAgIHBhZ2UuZGF0YS5tYXAoKHJ1bikgPT4gKHtcbiAgICAgIHJ1bklkOiBydW4ucnVuSWQsXG4gICAgICB3b3JrZmxvd05hbWU6IHJ1bi53b3JrZmxvd05hbWUsXG4gICAgICBzdGF0dXM6IHJ1bi5zdGF0dXMsXG4gICAgICBzdGFydGVkQXQ6IHJ1bi5zdGFydGVkQXQsXG4gICAgfSkpXG4gICk7XG4gIGNvbnN0IG1lcmdlZDogKHR5cGVvZiBwcm9qZWN0ZWRQYWdlcylbbnVtYmVyXVtudW1iZXJdW10gPSBbXTtcbiAgY29uc3Qgc2VlblJ1bklkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBtYXhQYWdlTGVuZ3RoID0gTWF0aC5tYXgoXG4gICAgMCxcbiAgICAuLi5wcm9qZWN0ZWRQYWdlcy5tYXAoKHBhZ2UpID0+IHBhZ2UubGVuZ3RoKVxuICApO1xuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbWF4UGFnZUxlbmd0aDsgaW5kZXgrKykge1xuICAgIGZvciAoY29uc3QgcGFnZSBvZiBwcm9qZWN0ZWRQYWdlcykge1xuICAgICAgY29uc3QgcnVuID0gcGFnZVtpbmRleF07XG4gICAgICBpZiAocnVuICYmICFzZWVuUnVuSWRzLmhhcyhydW4ucnVuSWQpKSB7XG4gICAgICAgIHNlZW5SdW5JZHMuYWRkKHJ1bi5ydW5JZCk7XG4gICAgICAgIG1lcmdlZC5wdXNoKHJ1bik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNvbnN0IHJ1bnMgPSB7XG4gICAgZGF0YTogbWVyZ2VkLnNsaWNlKDAsIGxpbWl0KSxcbiAgICBoYXNNb3JlOiBwYWdlcy5zb21lKChwYWdlKSA9PiBwYWdlLmhhc01vcmUpIHx8IG1lcmdlZC5sZW5ndGggPiBsaW1pdCxcbiAgfTtcblxuICBpZiAocnVucy5kYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgIGxvZ2dlci53YXJuKCdObyBtYXRjaGluZyBydW5zIGZvdW5kLicpO1xuICAgIHJldHVybiB7IGV4aXRDb2RlOiAwIH07XG4gIH1cblxuICAvLyBEaXNwbGF5IHdoYXQgd2lsbCBiZSBjYW5jZWxsZWQuXG4gIGNvbnN0IHRhYmxlID0gbmV3IFRhYmxlKCk7XG4gIGZvciAoY29uc3QgcnVuIG9mIHJ1bnMuZGF0YSkge1xuICAgIGNvbnN0IHNob3J0TmFtZSA9XG4gICAgICBwYXJzZVdvcmtmbG93TmFtZShydW4ud29ya2Zsb3dOYW1lKT8uc2hvcnROYW1lIHx8IHJ1bi53b3JrZmxvd05hbWU7XG4gICAgdGFibGUuY2VsbCgncnVuSWQnLCBydW4ucnVuSWQpO1xuICAgIHRhYmxlLmNlbGwoJ3dvcmtmbG93JywgY2hhbGsuYmx1ZUJyaWdodChzaG9ydE5hbWUpKTtcbiAgICB0YWJsZS5jZWxsKCdzdGF0dXMnLCBydW4uc3RhdHVzKTtcbiAgICB0YWJsZS5jZWxsKFxuICAgICAgJ3N0YXJ0ZWRBdCcsXG4gICAgICBydW4uc3RhcnRlZEF0ID8gbmV3IERhdGUocnVuLnN0YXJ0ZWRBdCkudG9JU09TdHJpbmcoKSA6ICctJ1xuICAgICk7XG4gICAgdGFibGUubmV3Um93KCk7XG4gIH1cbiAgbG9nZ2VyLmxvZyhgXFxuRm91bmQgJHtjaGFsay5ib2xkKHJ1bnMuZGF0YS5sZW5ndGgpfSBydW5zIHRvIGNhbmNlbDpcXG5gKTtcbiAgbG9nZ2VyLmxvZyh0YWJsZS50b1N0cmluZygpKTtcblxuICBpZiAocnVucy5oYXNNb3JlKSB7XG4gICAgbG9nZ2VyLndhcm4oSEFTX01PUkVfR1VJREFOQ0UpO1xuICB9XG5cbiAgLy8gQ29uZmlybSB1bmxlc3MgLS1jb25maXJtLy15LlxuICBpZiAoIWNvbmZpcm0pIHtcbiAgICBjb25zdCBjb25maXJtZWQgPSBwcm9tcHRDb25maXJtXG4gICAgICA/IGF3YWl0IHByb21wdENvbmZpcm0oXG4gICAgICAgICAgYENhbmNlbCAke3J1bnMuZGF0YS5sZW5ndGh9IHJ1biR7cnVucy5kYXRhLmxlbmd0aCA9PT0gMSA/ICcnIDogJ3MnfT9gXG4gICAgICAgIClcbiAgICAgIDogZmFsc2U7XG4gICAgaWYgKCFjb25maXJtZWQpIHtcbiAgICAgIGxvZ2dlci5sb2coJ0Fib3J0ZWQuJyk7XG4gICAgICByZXR1cm4geyBleGl0Q29kZTogMCB9O1xuICAgIH1cbiAgfVxuXG4gIC8vIE9uZSBidWxrIG9wZXJhdGlvbjogYSBzaW5nbGUgYmFja2VuZCByZXF1ZXN0IG9uIFZlcmNlbCwgb3IgYm91bmRlZFxuICAvLyBmYWxsYmFjayBjb25jdXJyZW5jeSBvbiBsb2NhbCAvIGNvbW11bml0eSB3b3JsZHMuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNhbmNlbFJ1bnMoXG4gICAgd29ybGQsXG4gICAgcnVucy5kYXRhLm1hcCgocnVuKSA9PiBydW4ucnVuSWQpLFxuICAgIHsgY2FuY2VsUmVhc29uOiBDTElfQ0FOQ0VMX1JFQVNPTiB9XG4gICk7XG5cbiAgZm9yIChjb25zdCBsaW5lIG9mIGJ1bGtDYW5jZWxGYWlsdXJlTGluZXMocmVzdWx0KSkge1xuICAgIGxvZ2dlci53YXJuKGxpbmUpO1xuICB9XG4gIGxvZ2dlci5sb2coYFxcbiR7Zm9ybWF0QnVsa0NhbmNlbFN1bW1hcnkocmVzdWx0KX1gKTtcblxuICAvLyBBbHJlYWR5LWNhbmNlbGxlZCBhbmQgdGVybWluYWwgcnVucyBhcmUgdmFsaWQgcGFydGlhbCBvdXRjb21lczsgb25seSBhXG4gIC8vIGdlbnVpbmUgZmFpbHVyZSBpcyBhIG5vbnplcm8gZXhpdC5cbiAgcmV0dXJuIHsgZXhpdENvZGU6IHJlc3VsdC5zdW1tYXJ5LmZhaWxlZCA+IDAgPyAxIDogMCwgcmVzdWx0IH07XG59XG4iXX0=
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsay1jYW5jZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2J1bGstY2FuY2VsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQU0vRCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQy9CLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLENBQUM7QUFDekMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsNEJBQTRCLENBQUM7QUFFOUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLFNBQVM7SUFDVCxTQUFTO0NBQ3NDLENBQUM7QUFFbEQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUM1QixnRkFBZ0Y7SUFDaEYsMkJBQTJCLENBQUM7QUFROUI7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEtBQWE7SUFDbkQsSUFDRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ3hCLEtBQUssR0FBRyxxQkFBcUI7UUFDN0IsS0FBSyxHQUFHLHFCQUFxQixFQUM3QixDQUFDO1FBQ0QsT0FBTyxzQ0FBc0MscUJBQXFCLFFBQVEscUJBQXFCLEdBQUcsQ0FBQztJQUNyRyxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxNQUFvQztJQUVwQyxNQUFNLEVBQUUsT0FB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SCxDQUFDO0lBRUQscUVBQXFFO0lBQ3JFLG9EQUFvRDtJQUNwRCxNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FDN0IsS0FBSyxFQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQ2pDLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLENBQ3BDLENBQUM7SUFFRixLQUFLLE1BQU0sSUFBSSxJQUFJLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDbEQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUVuRCx5RUFBeUU7SUFDekUscUNBQXFDO0lBQ3JDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2FuY2VsUnVucyB9IGZyb20gJ0B3b3JrZmxvdy9jb3JlL3J1bnRpbWUnO1xuaW1wb3J0IHsgcGFyc2VXb3JrZmxvd05hbWUgfSBmcm9tICdAd29ya2Zsb3cvdXRpbHMvcGFyc2UtbmFtZSc7XG5pbXBvcnQgdHlwZSB7XG4gIEJ1bGtDYW5jZWxXb3JrZmxvd1J1bnNSZXN1bHQsXG4gIFdvcmtmbG93UnVuU3RhdHVzLFxuICBXb3JsZCxcbn0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgVGFibGUgZnJvbSAnZWFzeS10YWJsZSc7XG5pbXBvcnQgeyBwbGFuV2luZG93U3RhcnRGcm9tUmVzcG9uc2UgfSBmcm9tICcuL2luc3BlY3QvdGltZS13aW5kb3cuanMnO1xuXG5leHBvcnQgY29uc3QgQlVMS19DQU5DRUxfTUlOX0xJTUlUID0gMTtcbmV4cG9ydCBjb25zdCBCVUxLX0NBTkNFTF9NQVhfTElNSVQgPSA1MDA7XG5leHBvcnQgY29uc3QgQ0xJX0NBTkNFTF9SRUFTT04gPSAnQ2FuY2VsbGVkIHZpYSBXb3JrZmxvdyBDTEknO1xuXG4vKipcbiAqIFN0YXR1c2VzIGEgcnVuIGNhbiBzdGlsbCBiZSBjYW5jZWxsZWQgZnJvbS4gV2hlbiB0aGUgY2FsbGVyIGRvZXNuJ3QgcGluIGFcbiAqIGAtLXN0YXR1c2AsIGJ1bGsgY2FuY2VsIHJlc3RyaWN0cyBtYXRjaGluZyB0byB0aGVzZSBzbyB0ZXJtaW5hbCBydW5zXG4gKiAoaW5jbHVkaW5nIHRoZSBvbmVzIGEgcHJpb3IgYmF0Y2gganVzdCBjYW5jZWxsZWQpIGRvbid0IGNyb3dkIG91dCByZWFjaGFibGVcbiAqIGFjdGl2ZSBydW5zLiBPdGhlcndpc2UsIGxpc3RpbmcgZXZlcnkgc3RhdHVzIHJldHVybnMgdGhlIHNhbWUgbmV3ZXN0XG4gKiB0ZXJtaW5hbCBwYWdlIG9uIGVhY2ggcmVydW4gYW5kIG9sZGVyIGFjdGl2ZSBydW5zIGFyZSBuZXZlciByZWFjaGVkLiBUaGVcbiAqIGxpc3QgQVBJIGZpbHRlcnMgYnkgYSBzaW5nbGUgc3RhdHVzLCBzbyB3ZSBmYW4gb3V0IGFjcm9zcyB0aGVzZSBhbmQgbWVyZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBDQU5DRUxMQUJMRV9TVEFUVVNFUyA9IFtcbiAgJ3BlbmRpbmcnLFxuICAncnVubmluZycsXG5dIGFzIGNvbnN0IHNhdGlzZmllcyByZWFkb25seSBXb3JrZmxvd1J1blN0YXR1c1tdO1xuXG4vKipcbiAqIEd1aWRhbmNlIHByaW50ZWQgd2hlbiBtb3JlIHJ1bnMgbWF0Y2ggdGhlIGZpbHRlcnMgdGhhbiB3ZXJlIGZldGNoZWQuIEJ1bGtcbiAqIGNhbmNlbCBpcyBkZWxpYmVyYXRlbHkgc2luZ2xlLWJhdGNoIGFuZCB1c2VyLXBhY2VkIChubyBjdXJzb3JzIG9yIGFzeW5jXG4gKiBqb2JzKSwgc28gdGhlIHVzZXIgcmUtcnVucyB0byBjYW5jZWwgdGhlIG5leHQgYmF0Y2guXG4gKi9cbmV4cG9ydCBjb25zdCBIQVNfTU9SRV9HVUlEQU5DRSA9XG4gICdNb3JlIHJ1bnMgbWF0Y2ggdGhlc2UgZmlsdGVycy4gUmUtcnVuIHRoaXMgY29tbWFuZCB0byBjYW5jZWwgdGhlIG5leHQgYmF0Y2gsXFxuJyArXG4gICdvciB1c2UgLS1saW1pdCB1cCB0byA1MDAuJztcblxuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxMb2dnZXIge1xuICBsb2cobWVzc2FnZTogc3RyaW5nKTogdm9pZDtcbiAgd2FybihtZXNzYWdlOiBzdHJpbmcpOiB2b2lkO1xuICBlcnJvcihtZXNzYWdlOiBzdHJpbmcpOiB2b2lkO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHRoZSBgLS1saW1pdGAgZmxhZy4gUmV0dXJucyBhbiBlcnJvciBtZXNzYWdlIHdoZW4gaW52YWxpZCwgb3JcbiAqIGB1bmRlZmluZWRgIHdoZW4gdGhlIHZhbHVlIGlzIGFuIGludGVnZXIgd2l0aGluIFsxLCA1MDBdLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVCdWxrQ2FuY2VsTGltaXQobGltaXQ6IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChcbiAgICAhTnVtYmVyLmlzSW50ZWdlcihsaW1pdCkgfHxcbiAgICBsaW1pdCA8IEJVTEtfQ0FOQ0VMX01JTl9MSU1JVCB8fFxuICAgIGxpbWl0ID4gQlVMS19DQU5DRUxfTUFYX0xJTUlUXG4gICkge1xuICAgIHJldHVybiBgLS1saW1pdCBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAke0JVTEtfQ0FOQ0VMX01JTl9MSU1JVH0gYW5kICR7QlVMS19DQU5DRUxfTUFYX0xJTUlUfS5gO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIGNvbXBhY3QgbXVsdGktbGluZSBcIkRvbmU6XCIgc3VtbWFyeSBibG9jay4gTGlzdHMgZXZlcnkgb3V0Y29tZVxuICogY2F0ZWdvcnkgc28gdGhlIGNvdW50cyBhZGQgdXAgdG8gdGhlIG51bWJlciBvZiBydW5zIHJlcXVlc3RlZDsgaW5kaXZpZHVhbFxuICogYG5vdF9mb3VuZGAsIGBub3RfY2FuY2VsbGFibGVgLCBhbmQgYGZhaWxlZGAgcnVucyBhcmUgYWRkaXRpb25hbGx5IHN1cmZhY2VkXG4gKiBwZXItcnVuIHZpYSB7QGxpbmsgYnVsa0NhbmNlbEZhaWx1cmVMaW5lc30uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRCdWxrQ2FuY2VsU3VtbWFyeShcbiAgcmVzdWx0OiBCdWxrQ2FuY2VsV29ya2Zsb3dSdW5zUmVzdWx0XG4pOiBzdHJpbmcge1xuICBjb25zdCB7IHN1bW1hcnkgfSA9IHJlc3VsdDtcbiAgcmV0dXJuIFtcbiAgICAnRG9uZTonLFxuICAgIGAgICR7c3VtbWFyeS5jYW5jZWxsZWR9IGNhbmNlbGxlZGAsXG4gICAgYCAgJHtzdW1tYXJ5LmFscmVhZHlDYW5jZWxsZWR9IGFscmVhZHkgY2FuY2VsbGVkYCxcbiAgICBgICAke3N1bW1hcnkubm90Q2FuY2VsbGFibGV9IG5vdCBjYW5jZWxsYWJsZWAsXG4gICAgYCAgJHtzdW1tYXJ5Lm5vdEZvdW5kfSBub3QgZm91bmRgLFxuICAgIGAgICR7c3VtbWFyeS5mYWlsZWR9IGZhaWxlZGAsXG4gIF0uam9pbignXFxuJyk7XG59XG5cbi8qKlxuICogUGVyLXJ1biBsaW5lcyBmb3Igb3V0Y29tZXMgd29ydGggY2FsbGluZyBvdXQgaW5kaXZpZHVhbGx5OiBgbm90X2ZvdW5kYCxcbiAqIGBub3RfY2FuY2VsbGFibGVgLCBhbmQgYGZhaWxlZGAuIENhbmNlbGxlZCBhbmQgYWxyZWFkeS1jYW5jZWxsZWQgcnVucyBhcmVcbiAqIGxlZnQgdG8gdGhlIHN1bW1hcnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWxrQ2FuY2VsRmFpbHVyZUxpbmVzKFxuICByZXN1bHQ6IEJ1bGtDYW5jZWxXb3JrZmxvd1J1bnNSZXN1bHRcbik6IHN0cmluZ1tdIHtcbiAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW107XG4gIGZvciAoY29uc3QgciBvZiByZXN1bHQucmVzdWx0cykge1xuICAgIHN3aXRjaCAoci5vdXRjb21lKSB7XG4gICAgICBjYXNlICdub3RfZm91bmQnOlxuICAgICAgICBsaW5lcy5wdXNoKGAgIOKclyAke3IucnVuSWR9OiBub3QgZm91bmRgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdub3RfY2FuY2VsbGFibGUnOlxuICAgICAgICBsaW5lcy5wdXNoKGAgIOKclyAke3IucnVuSWR9OiBub3QgY2FuY2VsbGFibGUgKCR7ci5zdGF0dXN9KWApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIGxpbmVzLnB1c2goXG4gICAgICAgICAgYCAg4pyXICR7ci5ydW5JZH06IGZhaWxlZCAoJHtyLmNvZGV9JHtyLnJldHJ5YWJsZSA/ICcsIHJldHJ5YWJsZScgOiAnJ30pYFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxpbmVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1bGtDYW5jZWxQYXJhbXMge1xuICB3b3JsZDogV29ybGQ7XG4gIHN0YXR1cz86IFdvcmtmbG93UnVuU3RhdHVzO1xuICB3b3JrZmxvd05hbWU/OiBzdHJpbmc7XG4gIC8qKiBNYXggcnVucyB0byBmZXRjaCBhbmQgY2FuY2VsIGluIHRoaXMgYmF0Y2ggKGFscmVhZHkgdmFsaWRhdGVkKS4gKi9cbiAgbGltaXQ6IG51bWJlcjtcbiAgLyoqIFdoZW4gdHJ1ZSwgc2tpcCB0aGUgaW50ZXJhY3RpdmUgY29uZmlybWF0aW9uIHByb21wdC4gKi9cbiAgY29uZmlybTogYm9vbGVhbjtcbiAgbG9nZ2VyOiBDYW5jZWxMb2dnZXI7XG4gIC8qKlxuICAgKiBDb25maXJtYXRpb24gcHJvbXB0LiBPbWl0dGVkIGluIG5vbi1pbnRlcmFjdGl2ZSBjb250ZXh0cyAoYW5kIHRlc3RzKSxcbiAgICogaW4gd2hpY2ggY2FzZSBhbiB1bmNvbmZpcm1lZCBydW4gYWJvcnRzLlxuICAgKi9cbiAgcHJvbXB0Q29uZmlybT86IChtZXNzYWdlOiBzdHJpbmcpID0+IFByb21pc2U8Ym9vbGVhbj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVsa0NhbmNlbE91dGNvbWUge1xuICAvKiogUHJvY2VzcyBleGl0IGNvZGU6IDEgd2hlbiBhbnkgcnVuIGZhaWxlZCwgb3RoZXJ3aXNlIDAuICovXG4gIGV4aXRDb2RlOiBudW1iZXI7XG4gIC8qKiBUaGUgc3RydWN0dXJlZCByZXN1bHQsIG9yIHVuZGVmaW5lZCB3aGVuIG5vdGhpbmcgbWF0Y2hlZCAvIGFib3J0ZWQuICovXG4gIHJlc3VsdD86IEJ1bGtDYW5jZWxXb3JrZmxvd1J1bnNSZXN1bHQ7XG59XG5cbi8qKlxuICogRmV0Y2ggbWF0Y2hpbmcgcnVucyAodXAgdG8gYGxpbWl0YCksIGNvbmZpcm0sIGFuZCBjYW5jZWwgdGhlbSBpbiBhIHNpbmdsZVxuICogYnVsayBvcGVyYXRpb24uIFByaW50cyBhIHRhYmxlIG9mIHdoYXQgd2lsbCBiZSBjYW5jZWxsZWQsIHJlcnVuIGd1aWRhbmNlXG4gKiB3aGVuIG1vcmUgcnVucyBtYXRjaCB0aGFuIHdlcmUgZmV0Y2hlZCwgYSBjb21wYWN0IHN1bW1hcnksIGFuZCBwZXItcnVuXG4gKiBsaW5lcyBmb3Igc3VyZmFjZWQgZmFpbHVyZXMuXG4gKlxuICogRG9lcyBub3QgdHJhdmVyc2UgcGFnZXM6IGV4YWN0bHkgb25lIHBhZ2Ugb2YgYXQgbW9zdCBgbGltaXRgIHJ1bnMgaXNcbiAqIGNhbmNlbGxlZCBwZXIgaW52b2NhdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1CdWxrQ2FuY2VsKFxuICBwYXJhbXM6IEJ1bGtDYW5jZWxQYXJhbXNcbik6IFByb21pc2U8QnVsa0NhbmNlbE91dGNvbWU+IHtcbiAgY29uc3QgeyB3b3JsZCwgc3RhdHVzLCB3b3JrZmxvd05hbWUsIGxpbWl0LCBjb25maXJtLCBsb2dnZXIsIHByb21wdENvbmZpcm0gfSA9XG4gICAgcGFyYW1zO1xuXG4gIC8vIEZldGNoIG1hdGNoaW5nIHJ1bnMuIE9ubHkgbWV0YWRhdGEgaXMgbmVlZGVkIHRvIGRpc3BsYXkgYW5kIGNhbmNlbCwgc29cbiAgLy8gcHJlZmVyIHRoZSBhbmFseXRpY3MgcmVhZCBwYXRoIHdoZW4gdGhlIGJhY2tlbmQgcHJvdmlkZXMgb25lLlxuICAvL1xuICAvLyBXaGVuIHRoZSBjYWxsZXIgcGlucyBhIHN0YXR1cywgbWF0Y2ggZXhhY3RseSB0aGF0LiBPdGhlcndpc2UgcmVzdHJpY3QgdG9cbiAgLy8gdGhlIGNhbmNlbGxhYmxlIHN0YXR1c2VzIHNvIHJlcnVubmluZyBtYWtlcyBwcm9ncmVzcyBpbnN0ZWFkIG9mIHJldHVybmluZ1xuICAvLyB0aGUgc2FtZSB0ZXJtaW5hbCBwYWdlIGZvcmV2ZXIuIFRoZSBsaXN0IEFQSSB0YWtlcyBhIHNpbmdsZSBzdGF0dXMsIHNvXG4gIC8vIGZhbiBvdXQgYWNyb3NzIHRoZSB0YXJnZXQgc3RhdHVzZXMgYW5kIG1lcmdlIHRoZSBwYWdlcyBiZWxvdy5cbiAgY29uc3QgYW5hbHl0aWNzID0gd29ybGQuYW5hbHl0aWNzO1xuICBjb25zdCB0YXJnZXRTdGF0dXNlczogV29ya2Zsb3dSdW5TdGF0dXNbXSA9IHN0YXR1c1xuICAgID8gW3N0YXR1c11cbiAgICA6IFsuLi5DQU5DRUxMQUJMRV9TVEFUVVNFU107XG5cbiAgY29uc3QgZmV0Y2hQYWdlID0gYXN5bmMgKHBhZ2VTdGF0dXM6IFdvcmtmbG93UnVuU3RhdHVzKSA9PiB7XG4gICAgaWYgKCFhbmFseXRpY3MpIHtcbiAgICAgIHJldHVybiB3b3JsZC5ydW5zLmxpc3Qoe1xuICAgICAgICBzdGF0dXM6IHBhZ2VTdGF0dXMsXG4gICAgICAgIHdvcmtmbG93TmFtZSxcbiAgICAgICAgcGFnaW5hdGlvbjogeyBsaW1pdCB9LFxuICAgICAgICByZXNvbHZlRGF0YTogJ25vbmUnLFxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIFRoZSBhbmFseXRpY3MgYmFja2VuZCBkZWZhdWx0cyBpdHMgbGlzdGluZyB0byBhIHJlY2VudCB3aW5kb3dcbiAgICAvLyAodHJhaWxpbmcgMjRoIG9uIHRoZSBWZXJjZWwgYmFja2VuZCksIGJ1dCBidWxrIGNhbmNlbCBtdXN0IG1hdGNoXG4gICAgLy8gYWNyb3NzIHRoZSBwbGFuJ3Mgd2hvbGUgb2JzZXJ2YWJpbGl0eSB3aW5kb3c6IGEgcnVuIGNhbiBzbGVlcCBvclxuICAgIC8vIHdhaXQgb24gYSBob29rIGZvciBkYXlzIHdpdGhvdXQgZW1pdHRpbmcgcmVjZW50IGV2ZW50cy4gUHJvYmUgZm9yXG4gICAgLy8gdGhlIHBsYW4gd2luZG93IGJvdW5kcyBmaXJzdCwgdGhlbiBtYXRjaCBhY3Jvc3MgdGhlbS5cbiAgICBjb25zdCBwcm9iZSA9IGF3YWl0IGFuYWx5dGljcy5ydW5zLmxpc3Qoe1xuICAgICAgc3RhdHVzOiBwYWdlU3RhdHVzLFxuICAgICAgd29ya2Zsb3dOYW1lLFxuICAgICAgcGFnaW5hdGlvbjogeyBsaW1pdDogMSB9LFxuICAgIH0pO1xuICAgIGNvbnN0IHdpbmRvd1N0YXJ0ID0gcGxhbldpbmRvd1N0YXJ0RnJvbVJlc3BvbnNlKHByb2JlKTtcbiAgICByZXR1cm4gYW5hbHl0aWNzLnJ1bnMubGlzdCh7XG4gICAgICBzdGF0dXM6IHBhZ2VTdGF0dXMsXG4gICAgICB3b3JrZmxvd05hbWUsXG4gICAgICAuLi4od2luZG93U3RhcnRcbiAgICAgICAgPyB7IHN0YXJ0VGltZTogd2luZG93U3RhcnQsIGVuZFRpbWU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSB9XG4gICAgICAgIDoge30pLFxuICAgICAgcGFnaW5hdGlvbjogeyBsaW1pdCB9LFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHBhZ2VzID0gYXdhaXQgUHJvbWlzZS5hbGwodGFyZ2V0U3RhdHVzZXMubWFwKGZldGNoUGFnZSkpO1xuXG4gIC8vIE1lcmdlIHRoZSBwZXItc3RhdHVzIHBhZ2VzIHJvdW5kLXJvYmluIHNvIGEgZnVsbCBwYWdlIG9mIHJ1bm5pbmcgcnVuc1xuICAvLyBjYW5ub3QgY3Jvd2QgcGVuZGluZyBydW5zICh3aGljaCBkbyBub3QgaGF2ZSBhIHN0YXJ0ZWRBdCB0aW1lc3RhbXApIG91dFxuICAvLyBvZiBldmVyeSBiYXRjaC4gUHJlc2VydmUgZWFjaCBwYWdlJ3MgYmFja2VuZCBvcmRlciBhbmQgZGVkdXBlIGJ5IHJ1bklkIGluXG4gIC8vIGNhc2UgYSBydW4gY2hhbmdlcyBzdGF0dXMgd2hpbGUgdGhlIHBhZ2VzIGFyZSBmZXRjaGVkLlxuICBjb25zdCBwcm9qZWN0ZWRQYWdlcyA9IHBhZ2VzLm1hcCgocGFnZSkgPT5cbiAgICBwYWdlLmRhdGEubWFwKChydW4pID0+ICh7XG4gICAgICBydW5JZDogcnVuLnJ1bklkLFxuICAgICAgd29ya2Zsb3dOYW1lOiBydW4ud29ya2Zsb3dOYW1lLFxuICAgICAgc3RhdHVzOiBydW4uc3RhdHVzLFxuICAgICAgc3RhcnRlZEF0OiBydW4uc3RhcnRlZEF0LFxuICAgIH0pKVxuICApO1xuICBjb25zdCBtZXJnZWQ6ICh0eXBlb2YgcHJvamVjdGVkUGFnZXMpW251bWJlcl1bbnVtYmVyXVtdID0gW107XG4gIGNvbnN0IHNlZW5SdW5JZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3QgbWF4UGFnZUxlbmd0aCA9IE1hdGgubWF4KFxuICAgIDAsXG4gICAgLi4ucHJvamVjdGVkUGFnZXMubWFwKChwYWdlKSA9PiBwYWdlLmxlbmd0aClcbiAgKTtcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG1heFBhZ2VMZW5ndGg7IGluZGV4KyspIHtcbiAgICBmb3IgKGNvbnN0IHBhZ2Ugb2YgcHJvamVjdGVkUGFnZXMpIHtcbiAgICAgIGNvbnN0IHJ1biA9IHBhZ2VbaW5kZXhdO1xuICAgICAgaWYgKHJ1biAmJiAhc2VlblJ1bklkcy5oYXMocnVuLnJ1bklkKSkge1xuICAgICAgICBzZWVuUnVuSWRzLmFkZChydW4ucnVuSWQpO1xuICAgICAgICBtZXJnZWQucHVzaChydW4pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb25zdCBydW5zID0ge1xuICAgIGRhdGE6IG1lcmdlZC5zbGljZSgwLCBsaW1pdCksXG4gICAgaGFzTW9yZTogcGFnZXMuc29tZSgocGFnZSkgPT4gcGFnZS5oYXNNb3JlKSB8fCBtZXJnZWQubGVuZ3RoID4gbGltaXQsXG4gIH07XG5cbiAgaWYgKHJ1bnMuZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICBsb2dnZXIud2FybignTm8gbWF0Y2hpbmcgcnVucyBmb3VuZC4nKTtcbiAgICByZXR1cm4geyBleGl0Q29kZTogMCB9O1xuICB9XG5cbiAgLy8gRGlzcGxheSB3aGF0IHdpbGwgYmUgY2FuY2VsbGVkLlxuICBjb25zdCB0YWJsZSA9IG5ldyBUYWJsZSgpO1xuICBmb3IgKGNvbnN0IHJ1biBvZiBydW5zLmRhdGEpIHtcbiAgICBjb25zdCBzaG9ydE5hbWUgPVxuICAgICAgcGFyc2VXb3JrZmxvd05hbWUocnVuLndvcmtmbG93TmFtZSk/LnNob3J0TmFtZSB8fCBydW4ud29ya2Zsb3dOYW1lO1xuICAgIHRhYmxlLmNlbGwoJ3J1bklkJywgcnVuLnJ1bklkKTtcbiAgICB0YWJsZS5jZWxsKCd3b3JrZmxvdycsIGNoYWxrLmJsdWVCcmlnaHQoc2hvcnROYW1lKSk7XG4gICAgdGFibGUuY2VsbCgnc3RhdHVzJywgcnVuLnN0YXR1cyk7XG4gICAgdGFibGUuY2VsbChcbiAgICAgICdzdGFydGVkQXQnLFxuICAgICAgcnVuLnN0YXJ0ZWRBdCA/IG5ldyBEYXRlKHJ1bi5zdGFydGVkQXQpLnRvSVNPU3RyaW5nKCkgOiAnLSdcbiAgICApO1xuICAgIHRhYmxlLm5ld1JvdygpO1xuICB9XG4gIGxvZ2dlci5sb2coYFxcbkZvdW5kICR7Y2hhbGsuYm9sZChydW5zLmRhdGEubGVuZ3RoKX0gcnVucyB0byBjYW5jZWw6XFxuYCk7XG4gIGxvZ2dlci5sb2codGFibGUudG9TdHJpbmcoKSk7XG5cbiAgaWYgKHJ1bnMuaGFzTW9yZSkge1xuICAgIGxvZ2dlci53YXJuKEhBU19NT1JFX0dVSURBTkNFKTtcbiAgfVxuXG4gIC8vIENvbmZpcm0gdW5sZXNzIC0tY29uZmlybS8teS5cbiAgaWYgKCFjb25maXJtKSB7XG4gICAgY29uc3QgY29uZmlybWVkID0gcHJvbXB0Q29uZmlybVxuICAgICAgPyBhd2FpdCBwcm9tcHRDb25maXJtKFxuICAgICAgICAgIGBDYW5jZWwgJHtydW5zLmRhdGEubGVuZ3RofSBydW4ke3J1bnMuZGF0YS5sZW5ndGggPT09IDEgPyAnJyA6ICdzJ30/YFxuICAgICAgICApXG4gICAgICA6IGZhbHNlO1xuICAgIGlmICghY29uZmlybWVkKSB7XG4gICAgICBsb2dnZXIubG9nKCdBYm9ydGVkLicpO1xuICAgICAgcmV0dXJuIHsgZXhpdENvZGU6IDAgfTtcbiAgICB9XG4gIH1cblxuICAvLyBPbmUgYnVsayBvcGVyYXRpb246IGEgc2luZ2xlIGJhY2tlbmQgcmVxdWVzdCBvbiBWZXJjZWwsIG9yIGJvdW5kZWRcbiAgLy8gZmFsbGJhY2sgY29uY3VycmVuY3kgb24gbG9jYWwgLyBjb21tdW5pdHkgd29ybGRzLlxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBjYW5jZWxSdW5zKFxuICAgIHdvcmxkLFxuICAgIHJ1bnMuZGF0YS5tYXAoKHJ1bikgPT4gcnVuLnJ1bklkKSxcbiAgICB7IGNhbmNlbFJlYXNvbjogQ0xJX0NBTkNFTF9SRUFTT04gfVxuICApO1xuXG4gIGZvciAoY29uc3QgbGluZSBvZiBidWxrQ2FuY2VsRmFpbHVyZUxpbmVzKHJlc3VsdCkpIHtcbiAgICBsb2dnZXIud2FybihsaW5lKTtcbiAgfVxuICBsb2dnZXIubG9nKGBcXG4ke2Zvcm1hdEJ1bGtDYW5jZWxTdW1tYXJ5KHJlc3VsdCl9YCk7XG5cbiAgLy8gQWxyZWFkeS1jYW5jZWxsZWQgYW5kIHRlcm1pbmFsIHJ1bnMgYXJlIHZhbGlkIHBhcnRpYWwgb3V0Y29tZXM7IG9ubHkgYVxuICAvLyBnZW51aW5lIGZhaWx1cmUgaXMgYSBub256ZXJvIGV4aXQuXG4gIHJldHVybiB7IGV4aXRDb2RlOiByZXN1bHQuc3VtbWFyeS5mYWlsZWQgPiAwID8gMSA6IDAsIHJlc3VsdCB9O1xufVxuIl19
@@ -19,9 +19,9 @@ export const getWorkflowConfig = ({ buildTarget, workflowManifest, } = {
19
19
  workflowsBundlePath: './.well-known/workflow/v1/flow.mjs',
20
20
  webhookBundlePath: './.well-known/workflow/v1/webhook.mjs',
21
21
  workflowManifestPath: workflowManifest,
22
- // WIP: generate a client library to easily execute workflows/steps
22
+ // WIP: generate a client library to execute workflows/steps
23
23
  // clientBundlePath: './lib/generated/workflows.js',
24
24
  };
25
25
  return config;
26
26
  };
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25maWcvd29ya2Zsb3ctY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHcEMsU0FBUyx1QkFBdUI7SUFDOUIsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQztJQUNuRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDVCxPQUFPLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQ0Qsc0VBQXNFO0lBQ3RFLG9DQUFvQztJQUNwQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQy9CLEVBQ0UsV0FBVyxFQUNYLGdCQUFnQixNQUlkO0lBQ0YsV0FBVyxFQUFFLFlBQVk7Q0FDMUIsRUFDRCxFQUFFO0lBQ0YsTUFBTSxNQUFNLEdBQW1CO1FBQzdCLElBQUksRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUNyQixVQUFVLEVBQUUsdUJBQXVCLEVBQUU7UUFDckMsV0FBVyxFQUFFLFdBQTBCO1FBQ3ZDLGVBQWUsRUFBRSxvREFBb0Q7UUFDckUsbUJBQW1CLEVBQUUsb0NBQW9DO1FBQ3pELGlCQUFpQixFQUFFLHVDQUF1QztRQUMxRCxvQkFBb0IsRUFBRSxnQkFBZ0I7UUFFdEMsbUVBQW1FO1FBQ25FLG9EQUFvRDtLQUNyRCxDQUFDO0lBQ0YsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgdHlwZSB7IEJ1aWxkVGFyZ2V0LCBXb3JrZmxvd0NvbmZpZyB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG5mdW5jdGlvbiByZXNvbHZlT2JzZXJ2YWJpbGl0eUN3ZCgpOiBzdHJpbmcge1xuICBjb25zdCByYXcgPSBwcm9jZXNzLmVudi5XT1JLRkxPV19PQlNFUlZBQklMSVRZX0NXRDtcbiAgaWYgKCFyYXcpIHtcbiAgICByZXR1cm4gcHJvY2Vzcy5jd2QoKTtcbiAgfVxuICAvLyBBbGxvdyByZWxhdGl2ZSBwYXRoczsgcmVzb2x2ZSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBwcm9jZXNzLmN3ZCgpXG4gIC8vIChpLmUuIHdoZXJlIHRoZSBDTEkgd2FzIGludm9rZWQpLlxuICByZXR1cm4gcmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCByYXcpO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0V29ya2Zsb3dDb25maWcgPSAoXG4gIHtcbiAgICBidWlsZFRhcmdldCxcbiAgICB3b3JrZmxvd01hbmlmZXN0LFxuICB9OiB7XG4gICAgYnVpbGRUYXJnZXQ/OiBCdWlsZFRhcmdldDtcbiAgICB3b3JrZmxvd01hbmlmZXN0Pzogc3RyaW5nO1xuICB9ID0ge1xuICAgIGJ1aWxkVGFyZ2V0OiAnc3RhbmRhbG9uZScsXG4gIH1cbikgPT4ge1xuICBjb25zdCBjb25maWc6IFdvcmtmbG93Q29uZmlnID0ge1xuICAgIGRpcnM6IFsnLi93b3JrZmxvd3MnXSxcbiAgICB3b3JraW5nRGlyOiByZXNvbHZlT2JzZXJ2YWJpbGl0eUN3ZCgpLFxuICAgIGJ1aWxkVGFyZ2V0OiBidWlsZFRhcmdldCBhcyBCdWlsZFRhcmdldCxcbiAgICBzdGVwc0J1bmRsZVBhdGg6ICcuLy53ZWxsLWtub3duL3dvcmtmbG93L3YxL19fc3RlcF9yZWdpc3RyYXRpb25zLm1qcycsXG4gICAgd29ya2Zsb3dzQnVuZGxlUGF0aDogJy4vLndlbGwta25vd24vd29ya2Zsb3cvdjEvZmxvdy5tanMnLFxuICAgIHdlYmhvb2tCdW5kbGVQYXRoOiAnLi8ud2VsbC1rbm93bi93b3JrZmxvdy92MS93ZWJob29rLm1qcycsXG4gICAgd29ya2Zsb3dNYW5pZmVzdFBhdGg6IHdvcmtmbG93TWFuaWZlc3QsXG5cbiAgICAvLyBXSVA6IGdlbmVyYXRlIGEgY2xpZW50IGxpYnJhcnkgdG8gZWFzaWx5IGV4ZWN1dGUgd29ya2Zsb3dzL3N0ZXBzXG4gICAgLy8gY2xpZW50QnVuZGxlUGF0aDogJy4vbGliL2dlbmVyYXRlZC93b3JrZmxvd3MuanMnLFxuICB9O1xuICByZXR1cm4gY29uZmlnO1xufTtcbiJdfQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25maWcvd29ya2Zsb3ctY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHcEMsU0FBUyx1QkFBdUI7SUFDOUIsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQztJQUNuRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDVCxPQUFPLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQ0Qsc0VBQXNFO0lBQ3RFLG9DQUFvQztJQUNwQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQy9CLEVBQ0UsV0FBVyxFQUNYLGdCQUFnQixNQUlkO0lBQ0YsV0FBVyxFQUFFLFlBQVk7Q0FDMUIsRUFDRCxFQUFFO0lBQ0YsTUFBTSxNQUFNLEdBQW1CO1FBQzdCLElBQUksRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUNyQixVQUFVLEVBQUUsdUJBQXVCLEVBQUU7UUFDckMsV0FBVyxFQUFFLFdBQTBCO1FBQ3ZDLGVBQWUsRUFBRSxvREFBb0Q7UUFDckUsbUJBQW1CLEVBQUUsb0NBQW9DO1FBQ3pELGlCQUFpQixFQUFFLHVDQUF1QztRQUMxRCxvQkFBb0IsRUFBRSxnQkFBZ0I7UUFFdEMsNERBQTREO1FBQzVELG9EQUFvRDtLQUNyRCxDQUFDO0lBQ0YsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgdHlwZSB7IEJ1aWxkVGFyZ2V0LCBXb3JrZmxvd0NvbmZpZyB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG5mdW5jdGlvbiByZXNvbHZlT2JzZXJ2YWJpbGl0eUN3ZCgpOiBzdHJpbmcge1xuICBjb25zdCByYXcgPSBwcm9jZXNzLmVudi5XT1JLRkxPV19PQlNFUlZBQklMSVRZX0NXRDtcbiAgaWYgKCFyYXcpIHtcbiAgICByZXR1cm4gcHJvY2Vzcy5jd2QoKTtcbiAgfVxuICAvLyBBbGxvdyByZWxhdGl2ZSBwYXRoczsgcmVzb2x2ZSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBwcm9jZXNzLmN3ZCgpXG4gIC8vIChpLmUuIHdoZXJlIHRoZSBDTEkgd2FzIGludm9rZWQpLlxuICByZXR1cm4gcmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCByYXcpO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0V29ya2Zsb3dDb25maWcgPSAoXG4gIHtcbiAgICBidWlsZFRhcmdldCxcbiAgICB3b3JrZmxvd01hbmlmZXN0LFxuICB9OiB7XG4gICAgYnVpbGRUYXJnZXQ/OiBCdWlsZFRhcmdldDtcbiAgICB3b3JrZmxvd01hbmlmZXN0Pzogc3RyaW5nO1xuICB9ID0ge1xuICAgIGJ1aWxkVGFyZ2V0OiAnc3RhbmRhbG9uZScsXG4gIH1cbikgPT4ge1xuICBjb25zdCBjb25maWc6IFdvcmtmbG93Q29uZmlnID0ge1xuICAgIGRpcnM6IFsnLi93b3JrZmxvd3MnXSxcbiAgICB3b3JraW5nRGlyOiByZXNvbHZlT2JzZXJ2YWJpbGl0eUN3ZCgpLFxuICAgIGJ1aWxkVGFyZ2V0OiBidWlsZFRhcmdldCBhcyBCdWlsZFRhcmdldCxcbiAgICBzdGVwc0J1bmRsZVBhdGg6ICcuLy53ZWxsLWtub3duL3dvcmtmbG93L3YxL19fc3RlcF9yZWdpc3RyYXRpb25zLm1qcycsXG4gICAgd29ya2Zsb3dzQnVuZGxlUGF0aDogJy4vLndlbGwta25vd24vd29ya2Zsb3cvdjEvZmxvdy5tanMnLFxuICAgIHdlYmhvb2tCdW5kbGVQYXRoOiAnLi8ud2VsbC1rbm93bi93b3JrZmxvdy92MS93ZWJob29rLm1qcycsXG4gICAgd29ya2Zsb3dNYW5pZmVzdFBhdGg6IHdvcmtmbG93TWFuaWZlc3QsXG5cbiAgICAvLyBXSVA6IGdlbmVyYXRlIGEgY2xpZW50IGxpYnJhcnkgdG8gZXhlY3V0ZSB3b3JrZmxvd3Mvc3RlcHNcbiAgICAvLyBjbGllbnRCdW5kbGVQYXRoOiAnLi9saWIvZ2VuZXJhdGVkL3dvcmtmbG93cy5qcycsXG4gIH07XG4gIHJldHVybiBjb25maWc7XG59O1xuIl19
@@ -39,7 +39,7 @@ export async function getAuthToken() {
39
39
  // Token is still valid
40
40
  return credentials.token;
41
41
  }
42
- // Token is expired attempt refresh
42
+ // Token is expired, so attempt refresh
43
43
  if (!credentials.refreshToken) {
44
44
  logger.debug('Auth token expired and no refresh token available');
45
45
  return null;
@@ -74,4 +74,4 @@ export async function getAuthToken() {
74
74
  return null;
75
75
  }
76
76
  }
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvaW5zcGVjdC9hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxnQkFBZ0IsR0FDakIsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQyxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBQ3BELE1BQU0sb0JBQW9CLEdBQUcscUNBQXFDLENBQUM7QUFDbkUsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUM7QUFFekMsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFaEQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVk7SUFDaEMsSUFBSSxXQUF3QixDQUFDO0lBQzdCLElBQUksQ0FBQztRQUNILFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsMkRBQTJEO0lBQzNELHFDQUFxQztJQUNyQyxJQUFJLE9BQU8sV0FBVyxDQUFDLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QyxPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ25ELElBQUksV0FBVyxDQUFDLFNBQVMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxQyx1QkFBdUI7UUFDdkIsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCxxQ0FBcUM7SUFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM5QixNQUFNLENBQUMsS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7UUFDbEUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO0lBQzVELElBQUksQ0FBQztRQUNILE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQztZQUM3QixJQUFJLEVBQUUsZUFBZTtZQUNyQixPQUFPLEVBQUUsT0FBTztTQUNqQixDQUFDLENBQUM7UUFFSCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbEIsTUFBTSxFQUFFLGFBQWE7WUFDckIsUUFBUSxFQUFFLG9CQUFvQjtZQUM5QixTQUFTO1NBQ1YsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVyRSxNQUFNLGtCQUFrQixHQUFHO1lBQ3pCLEdBQUcsV0FBVztZQUNkLEtBQUssRUFBRSxRQUFRLENBQUMsWUFBWTtZQUM1QixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLFVBQVU7WUFDOUQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxhQUFhO2dCQUN4QixDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLGFBQWEsRUFBRTtnQkFDMUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNSLENBQUM7UUFFRixLQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDakMsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBRWxELE9BQU8sUUFBUSxDQUFDLFlBQVksQ0FBQztJQUMvQixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsK0JBQStCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQ3JlZGVudGlhbHMsXG4gIENyZWRlbnRpYWxzU3RvcmUsXG59IGZyb20gJ0B2ZXJjZWwvY2xpLWF1dGgvY3JlZGVudGlhbHMtc3RvcmUuanMnO1xuaW1wb3J0IHsgT0F1dGggfSBmcm9tICdAdmVyY2VsL2NsaS1hdXRoL29hdXRoLmpzJztcbmltcG9ydCB7IGdldFVzZXJBZ2VudCB9IGZyb20gJ0B2ZXJjZWwvY2xpLWF1dGgvdXNlci1hZ2VudC5qcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi9jb25maWcvbG9nLmpzJztcblxuY29uc3QgVkVSQ0VMX0lTU1VFUiA9IG5ldyBVUkwoJ2h0dHBzOi8vdmVyY2VsLmNvbScpO1xuY29uc3QgVkVSQ0VMX0NMSV9DTElFTlRfSUQgPSAnY2xfSFl5T1BCTnRGTWZIaGFVbjlMNFFQZlRaejZUUDQ3YnAnO1xuY29uc3QgQ1JFREVOVElBTFNfRElSID0gJ2NvbS52ZXJjZWwuY2xpJztcblxuY29uc3Qgc3RvcmUgPSBDcmVkZW50aWFsc1N0b3JlKENSRURFTlRJQUxTX0RJUik7XG5cbi8qKlxuICogUmVhZHMgdGhlIGF1dGggdG9rZW4sIHJlZnJlc2hpbmcgaXQgdmlhIE9BdXRoIGlmIGV4cGlyZWQuXG4gKlxuICogVXNlcyBgQHZlcmNlbC9jbGktYXV0aGAgdG86XG4gKiAxLiBSZWFkIGNyZWRlbnRpYWxzIGZyb20gZGlzayAoYGF1dGguanNvbmApXG4gKiAyLiBDaGVjayBpZiB0aGUgYWNjZXNzIHRva2VuIGlzIGV4cGlyZWRcbiAqIDMuIElmIGV4cGlyZWQsIHVzZSB0aGUgcmVmcmVzaCB0b2tlbiB0byBvYnRhaW4gYSBuZXcgYWNjZXNzIHRva2VuXG4gKiA0LiBQZXJzaXN0IHRoZSB1cGRhdGVkIGNyZWRlbnRpYWxzIGJhY2sgdG8gZGlza1xuICpcbiAqIFJldHVybnMgdGhlIHZhbGlkIGFjY2VzcyB0b2tlbiwgb3IgYG51bGxgIGlmIGNyZWRlbnRpYWxzIGFyZVxuICogbWlzc2luZyBvciB0aGUgcmVmcmVzaCBmYWlscy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEF1dGhUb2tlbigpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgbGV0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscztcbiAgdHJ5IHtcbiAgICBjcmVkZW50aWFscyA9IHN0b3JlLmdldCgpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAoIWNyZWRlbnRpYWxzPy50b2tlbikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gSWYgdGhlcmUncyBubyBleHBpcmF0aW9uIGluZm8sIGFzc3VtZSB0aGUgdG9rZW4gaXMgdmFsaWRcbiAgLy8gKGUuZy4gbGVnYWN5IHRva2VucyB3aXRob3V0IE9BdXRoKVxuICBpZiAodHlwZW9mIGNyZWRlbnRpYWxzLmV4cGlyZXNBdCAhPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gY3JlZGVudGlhbHMudG9rZW47XG4gIH1cblxuICBjb25zdCBub3dJblNlY29uZHMgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTtcbiAgaWYgKGNyZWRlbnRpYWxzLmV4cGlyZXNBdCA+PSBub3dJblNlY29uZHMpIHtcbiAgICAvLyBUb2tlbiBpcyBzdGlsbCB2YWxpZFxuICAgIHJldHVybiBjcmVkZW50aWFscy50b2tlbjtcbiAgfVxuXG4gIC8vIFRva2VuIGlzIGV4cGlyZWQg4oCUIGF0dGVtcHQgcmVmcmVzaFxuICBpZiAoIWNyZWRlbnRpYWxzLnJlZnJlc2hUb2tlbikge1xuICAgIGxvZ2dlci5kZWJ1ZygnQXV0aCB0b2tlbiBleHBpcmVkIGFuZCBubyByZWZyZXNoIHRva2VuIGF2YWlsYWJsZScpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgbG9nZ2VyLmRlYnVnKCdBdXRoIHRva2VuIGV4cGlyZWQsIHJlZnJlc2hpbmcgdmlhIE9BdXRoLi4uJyk7XG4gIHRyeSB7XG4gICAgY29uc3QgdXNlckFnZW50ID0gZ2V0VXNlckFnZW50KHtcbiAgICAgIG5hbWU6ICdAd29ya2Zsb3cvY2xpJyxcbiAgICAgIHZlcnNpb246ICcwLjAuMCcsXG4gICAgfSk7XG5cbiAgICBjb25zdCBvYXV0aCA9IE9BdXRoKHtcbiAgICAgIGlzc3VlcjogVkVSQ0VMX0lTU1VFUixcbiAgICAgIGNsaWVudElkOiBWRVJDRUxfQ0xJX0NMSUVOVF9JRCxcbiAgICAgIHVzZXJBZ2VudCxcbiAgICB9KTtcbiAgICBjb25zdCBjbGllbnQgPSBhd2FpdCBvYXV0aC5pbml0KCk7XG4gICAgY29uc3QgdG9rZW5TZXQgPSBhd2FpdCBjbGllbnQucmVmcmVzaFRva2VuKGNyZWRlbnRpYWxzLnJlZnJlc2hUb2tlbik7XG5cbiAgICBjb25zdCB1cGRhdGVkQ3JlZGVudGlhbHMgPSB7XG4gICAgICAuLi5jcmVkZW50aWFscyxcbiAgICAgIHRva2VuOiB0b2tlblNldC5hY2Nlc3NfdG9rZW4sXG4gICAgICBleHBpcmVzQXQ6IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApICsgdG9rZW5TZXQuZXhwaXJlc19pbixcbiAgICAgIC4uLih0b2tlblNldC5yZWZyZXNoX3Rva2VuXG4gICAgICAgID8geyByZWZyZXNoVG9rZW46IHRva2VuU2V0LnJlZnJlc2hfdG9rZW4gfVxuICAgICAgICA6IHt9KSxcbiAgICB9O1xuXG4gICAgc3RvcmUudXBkYXRlKHVwZGF0ZWRDcmVkZW50aWFscyk7XG4gICAgbG9nZ2VyLmRlYnVnKCdBdXRoIHRva2VuIHJlZnJlc2hlZCBzdWNjZXNzZnVsbHknKTtcblxuICAgIHJldHVybiB0b2tlblNldC5hY2Nlc3NfdG9rZW47XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgbG9nZ2VyLmRlYnVnKCdGYWlsZWQgdG8gcmVmcmVzaCBhdXRoIHRva2VuOicsIGVycm9yKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvaW5zcGVjdC9hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxnQkFBZ0IsR0FDakIsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQyxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBQ3BELE1BQU0sb0JBQW9CLEdBQUcscUNBQXFDLENBQUM7QUFDbkUsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUM7QUFFekMsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFaEQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVk7SUFDaEMsSUFBSSxXQUF3QixDQUFDO0lBQzdCLElBQUksQ0FBQztRQUNILFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsMkRBQTJEO0lBQzNELHFDQUFxQztJQUNyQyxJQUFJLE9BQU8sV0FBVyxDQUFDLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QyxPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ25ELElBQUksV0FBVyxDQUFDLFNBQVMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxQyx1QkFBdUI7UUFDdkIsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM5QixNQUFNLENBQUMsS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7UUFDbEUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO0lBQzVELElBQUksQ0FBQztRQUNILE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQztZQUM3QixJQUFJLEVBQUUsZUFBZTtZQUNyQixPQUFPLEVBQUUsT0FBTztTQUNqQixDQUFDLENBQUM7UUFFSCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbEIsTUFBTSxFQUFFLGFBQWE7WUFDckIsUUFBUSxFQUFFLG9CQUFvQjtZQUM5QixTQUFTO1NBQ1YsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVyRSxNQUFNLGtCQUFrQixHQUFHO1lBQ3pCLEdBQUcsV0FBVztZQUNkLEtBQUssRUFBRSxRQUFRLENBQUMsWUFBWTtZQUM1QixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLFVBQVU7WUFDOUQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxhQUFhO2dCQUN4QixDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLGFBQWEsRUFBRTtnQkFDMUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNSLENBQUM7UUFFRixLQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDakMsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBRWxELE9BQU8sUUFBUSxDQUFDLFlBQVksQ0FBQztJQUMvQixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsK0JBQStCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQ3JlZGVudGlhbHMsXG4gIENyZWRlbnRpYWxzU3RvcmUsXG59IGZyb20gJ0B2ZXJjZWwvY2xpLWF1dGgvY3JlZGVudGlhbHMtc3RvcmUuanMnO1xuaW1wb3J0IHsgT0F1dGggfSBmcm9tICdAdmVyY2VsL2NsaS1hdXRoL29hdXRoLmpzJztcbmltcG9ydCB7IGdldFVzZXJBZ2VudCB9IGZyb20gJ0B2ZXJjZWwvY2xpLWF1dGgvdXNlci1hZ2VudC5qcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi9jb25maWcvbG9nLmpzJztcblxuY29uc3QgVkVSQ0VMX0lTU1VFUiA9IG5ldyBVUkwoJ2h0dHBzOi8vdmVyY2VsLmNvbScpO1xuY29uc3QgVkVSQ0VMX0NMSV9DTElFTlRfSUQgPSAnY2xfSFl5T1BCTnRGTWZIaGFVbjlMNFFQZlRaejZUUDQ3YnAnO1xuY29uc3QgQ1JFREVOVElBTFNfRElSID0gJ2NvbS52ZXJjZWwuY2xpJztcblxuY29uc3Qgc3RvcmUgPSBDcmVkZW50aWFsc1N0b3JlKENSRURFTlRJQUxTX0RJUik7XG5cbi8qKlxuICogUmVhZHMgdGhlIGF1dGggdG9rZW4sIHJlZnJlc2hpbmcgaXQgdmlhIE9BdXRoIGlmIGV4cGlyZWQuXG4gKlxuICogVXNlcyBgQHZlcmNlbC9jbGktYXV0aGAgdG86XG4gKiAxLiBSZWFkIGNyZWRlbnRpYWxzIGZyb20gZGlzayAoYGF1dGguanNvbmApXG4gKiAyLiBDaGVjayBpZiB0aGUgYWNjZXNzIHRva2VuIGlzIGV4cGlyZWRcbiAqIDMuIElmIGV4cGlyZWQsIHVzZSB0aGUgcmVmcmVzaCB0b2tlbiB0byBvYnRhaW4gYSBuZXcgYWNjZXNzIHRva2VuXG4gKiA0LiBQZXJzaXN0IHRoZSB1cGRhdGVkIGNyZWRlbnRpYWxzIGJhY2sgdG8gZGlza1xuICpcbiAqIFJldHVybnMgdGhlIHZhbGlkIGFjY2VzcyB0b2tlbiwgb3IgYG51bGxgIGlmIGNyZWRlbnRpYWxzIGFyZVxuICogbWlzc2luZyBvciB0aGUgcmVmcmVzaCBmYWlscy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEF1dGhUb2tlbigpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgbGV0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscztcbiAgdHJ5IHtcbiAgICBjcmVkZW50aWFscyA9IHN0b3JlLmdldCgpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAoIWNyZWRlbnRpYWxzPy50b2tlbikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gSWYgdGhlcmUncyBubyBleHBpcmF0aW9uIGluZm8sIGFzc3VtZSB0aGUgdG9rZW4gaXMgdmFsaWRcbiAgLy8gKGUuZy4gbGVnYWN5IHRva2VucyB3aXRob3V0IE9BdXRoKVxuICBpZiAodHlwZW9mIGNyZWRlbnRpYWxzLmV4cGlyZXNBdCAhPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gY3JlZGVudGlhbHMudG9rZW47XG4gIH1cblxuICBjb25zdCBub3dJblNlY29uZHMgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTtcbiAgaWYgKGNyZWRlbnRpYWxzLmV4cGlyZXNBdCA+PSBub3dJblNlY29uZHMpIHtcbiAgICAvLyBUb2tlbiBpcyBzdGlsbCB2YWxpZFxuICAgIHJldHVybiBjcmVkZW50aWFscy50b2tlbjtcbiAgfVxuXG4gIC8vIFRva2VuIGlzIGV4cGlyZWQsIHNvIGF0dGVtcHQgcmVmcmVzaFxuICBpZiAoIWNyZWRlbnRpYWxzLnJlZnJlc2hUb2tlbikge1xuICAgIGxvZ2dlci5kZWJ1ZygnQXV0aCB0b2tlbiBleHBpcmVkIGFuZCBubyByZWZyZXNoIHRva2VuIGF2YWlsYWJsZScpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgbG9nZ2VyLmRlYnVnKCdBdXRoIHRva2VuIGV4cGlyZWQsIHJlZnJlc2hpbmcgdmlhIE9BdXRoLi4uJyk7XG4gIHRyeSB7XG4gICAgY29uc3QgdXNlckFnZW50ID0gZ2V0VXNlckFnZW50KHtcbiAgICAgIG5hbWU6ICdAd29ya2Zsb3cvY2xpJyxcbiAgICAgIHZlcnNpb246ICcwLjAuMCcsXG4gICAgfSk7XG5cbiAgICBjb25zdCBvYXV0aCA9IE9BdXRoKHtcbiAgICAgIGlzc3VlcjogVkVSQ0VMX0lTU1VFUixcbiAgICAgIGNsaWVudElkOiBWRVJDRUxfQ0xJX0NMSUVOVF9JRCxcbiAgICAgIHVzZXJBZ2VudCxcbiAgICB9KTtcbiAgICBjb25zdCBjbGllbnQgPSBhd2FpdCBvYXV0aC5pbml0KCk7XG4gICAgY29uc3QgdG9rZW5TZXQgPSBhd2FpdCBjbGllbnQucmVmcmVzaFRva2VuKGNyZWRlbnRpYWxzLnJlZnJlc2hUb2tlbik7XG5cbiAgICBjb25zdCB1cGRhdGVkQ3JlZGVudGlhbHMgPSB7XG4gICAgICAuLi5jcmVkZW50aWFscyxcbiAgICAgIHRva2VuOiB0b2tlblNldC5hY2Nlc3NfdG9rZW4sXG4gICAgICBleHBpcmVzQXQ6IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApICsgdG9rZW5TZXQuZXhwaXJlc19pbixcbiAgICAgIC4uLih0b2tlblNldC5yZWZyZXNoX3Rva2VuXG4gICAgICAgID8geyByZWZyZXNoVG9rZW46IHRva2VuU2V0LnJlZnJlc2hfdG9rZW4gfVxuICAgICAgICA6IHt9KSxcbiAgICB9O1xuXG4gICAgc3RvcmUudXBkYXRlKHVwZGF0ZWRDcmVkZW50aWFscyk7XG4gICAgbG9nZ2VyLmRlYnVnKCdBdXRoIHRva2VuIHJlZnJlc2hlZCBzdWNjZXNzZnVsbHknKTtcblxuICAgIHJldHVybiB0b2tlblNldC5hY2Nlc3NfdG9rZW47XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgbG9nZ2VyLmRlYnVnKCdGYWlsZWQgdG8gcmVmcmVzaCBhdXRoIHRva2VuOicsIGVycm9yKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
@@ -4,7 +4,7 @@
4
4
  * Used by the CLI to configure environment variables that are read by
5
5
  * various subsystems (e.g., WORKFLOW_TARGET_WORLD, WORKFLOW_LOCAL_DATA_DIR).
6
6
  * Note: WORKFLOW_VERCEL_* env vars are read back via getEnvVars() and passed
7
- * to @workflow/world-vercel's createWorld() explicitly they are NOT read by runtime createWorld().
7
+ * to @workflow/world-vercel's createWorld() explicitly; they are NOT read by runtime createWorld().
8
8
  */
9
9
  export declare const writeEnvVars: (envVars: Record<string, string>) => void;
10
10
  export declare const getEnvVars: () => Record<string, string>;
@@ -12,7 +12,7 @@ import { findRepoRoot, getProjectLink, isOneOfErrNoExceptions, } from './vercel-
12
12
  * Used by the CLI to configure environment variables that are read by
13
13
  * various subsystems (e.g., WORKFLOW_TARGET_WORLD, WORKFLOW_LOCAL_DATA_DIR).
14
14
  * Note: WORKFLOW_VERCEL_* env vars are read back via getEnvVars() and passed
15
- * to @workflow/world-vercel's createWorld() explicitly they are NOT read by runtime createWorld().
15
+ * to @workflow/world-vercel's createWorld() explicitly; they are NOT read by runtime createWorld().
16
16
  */
17
17
  export const writeEnvVars = (envVars) => {
18
18
  Object.entries(envVars).forEach(([key, value]) => {
@@ -128,7 +128,7 @@ export const inferLocalWorldEnvVars = async () => {
128
128
  logger.debug(`Found workflow manifest at: ${repoManifest}`);
129
129
  }
130
130
  }
131
- // It's okay if manifest is not found - the web UI will just show empty workflows
131
+ // If the manifest is not found, the web UI will show no workflows.
132
132
  if (!envVars.WORKFLOW_MANIFEST_PATH) {
133
133
  logger.debug('No workflow manifest found. Workflows tab will be empty.');
134
134
  }
@@ -200,7 +200,7 @@ export const inferVercelEnvVars = async () => {
200
200
  envVars.WORKFLOW_VERCEL_AUTH_TOKEN = token;
201
201
  }
202
202
  // Fetch team information from Vercel API to get the team slug
203
- // TODO: Sadly, in order to redirect to Vercel dashboard correctly, we need to
203
+ // TODO: To redirect to the Vercel dashboard correctly, we need to
204
204
  // resolve the team name, which is a whole API request. The alternative would be to
205
205
  // change front to allow passing in the team slug directly, or add some generic redirect.
206
206
  if (envVars.WORKFLOW_VERCEL_TEAM && envVars.WORKFLOW_VERCEL_AUTH_TOKEN) {
@@ -223,4 +223,4 @@ export const inferVercelEnvVars = async () => {
223
223
  teamId: envVars.WORKFLOW_VERCEL_TEAM || undefined,
224
224
  };
225
225
  };
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbnNwZWN0L2Vudi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFDTCxZQUFZLEVBQ1osY0FBYyxFQUNkLHNCQUFzQixHQUV2QixNQUFNLGtCQUFrQixDQUFDO0FBRTFCOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxPQUErQixFQUFFLEVBQUU7SUFDOUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1FBQy9DLElBQ0UsS0FBSyxLQUFLLFNBQVM7WUFDbkIsS0FBSyxLQUFLLElBQUk7WUFDZCxLQUFLLEtBQUssRUFBRTtZQUNaLEtBQUssS0FBSyxXQUFXLEVBQ3JCLENBQUM7WUFDRCxPQUFPO1FBQ1QsQ0FBQztRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEdBQTJCLEVBQUU7SUFDckQs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WSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXRCLE9BQU87UUFDTCxLQUFLLEVBQUUsT0FBTyxDQUFDLDBCQUEwQixJQUFJLFNBQVM7UUFDdEQsV0FBVyxFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsSUFBSSxTQUFTO1FBQ3JELFNBQVMsRUFBRSxPQUFPLENBQUMsdUJBQXVCLElBQUksU0FBUztRQUN2RCxXQUFXLEVBQUUsT0FBTyxDQUFDLDRCQUE0QixJQUFJLFNBQVM7UUFDOUQsTUFBTSxFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsSUFBSSxTQUFTO0tBQ2xELENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhY2Nlc3MgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCB7IGpvaW4sIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgZmluZFdvcmtmbG93RGF0YURpciB9IGZyb20gJ0B3b3JrZmxvdy91dGlscy9jaGVjay1kYXRhLWRpcic7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi9jb25maWcvbG9nLmpzJztcbmltcG9ydCB7IGdldFdvcmtmbG93Q29uZmlnIH0gZnJvbSAnLi4vY29uZmlnL3dvcmtmbG93LWNvbmZpZy5qcyc7XG5pbXBvcnQgeyBnZXRBdXRoVG9rZW4gfSBmcm9tICcuL2F1dGguanMnO1xuaW1wb3J0IHsgZmV0Y2hUZWFtSW5mbyB9IGZyb20gJy4vdmVyY2VsLWFwaS5qcyc7XG5pbXBvcnQge1xuICBmaW5kUmVwb1Jvb3QsXG4gIGdldFByb2plY3RMaW5rLFxuICBpc09uZU9mRXJyTm9FeGNlcHRpb25zLFxuICB0eXBlIFByb2plY3RMaW5rLFxufSBmcm9tICcuL3ZlcmNlbC1saW5rLmpzJztcblxuLyoqXG4gKiBPdmVyd3JpdGUgdmFsdWVzIG9uIHByb2Nlc3MuZW52IHdpdGggdGhlIGdpdmVuIHZhbHVlcyAoaWYgbm90IHVuZGVmaW5lZClcbiAqXG4gKiBVc2VkIGJ5IHRoZSBDTEkgdG8gY29uZmlndXJlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IGFyZSByZWFkIGJ5XG4gKiB2YXJpb3VzIHN1YnN5c3RlbXMgKGUuZy4sIFdPUktGTE9XX1RBUkdFVF9XT1JMRCwgV09SS0ZMT1dfTE9DQUxfREFUQV9ESVIpLlxuICogTm90ZTogV09SS0ZMT1dfVkVSQ0VMXyogZW52IHZhcnMgYXJlIHJlYWQgYmFjayB2aWEgZ2V0RW52VmFycygpIGFuZCBwYXNzZWRcbiAqIHRvIEB3b3JrZmxvdy93b3JsZC12ZXJjZWwncyBjcmVhdGVXb3JsZCgpIGV4cGxpY2l0bHkg4oCUIHRoZXkgYXJlIE5PVCByZWFkIGJ5IHJ1bnRpbWUgY3JlYXRlV29ybGQoKS5cbiAqL1xuZXhwb3J0IGNvbnN0IHdyaXRlRW52VmFycyA9IChlbnZWYXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSA9PiB7XG4gIE9iamVjdC5lbnRyaWVzKGVudlZhcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGlmIChcbiAgICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgIHZhbHVlID09PSBudWxsIHx8XG4gICAgICB2YWx1ZSA9PT0gJycgfHxcbiAgICAgIHZhbHVlID09PSAndW5kZWZpbmVkJ1xuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBwcm9jZXNzLmVudltrZXldID0gdmFsdWU7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVudlZhcnMgPSAoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9PiB7XG4gIGNvbnN0IGVudiA9IHByb2Nlc3MuZW52O1xuICByZXR1cm4ge1xuICAgIFdPUktGTE9XX1RBUkdFVF9XT1JMRDogZW52LldPUktGTE9XX1RBUkdFVF9XT1JMRCB8fCAnJyxcbiAgICBXT1JLRkxPV19WRVJDRUxfRU5WOiBlbnYuV09SS0ZMT1dfVkVSQ0VMX0VOViB8fCAnJyxcbiAgICBXT1JLRkxPV19WRVJDRUxfQVVUSF9UT0tFTjogZW52LldPUktGTE9XX1ZFUkNFTF9BVVRIX1RPS0VOIHx8ICcnLFxuICAgIFdPUktGTE9XX1ZFUkNFTF9QUk9KRUNUOiBlbnYuV09SS0ZMT1dfVkVSQ0VMX1BST0pFQ1QgfHwgJycsXG4gICAgV09SS0ZMT1dfVkVSQ0VMX1BST0pFQ1RfTkFNRTogZW52LldPUktGTE9XX1ZFUkNFTF9QUk9KRUNUX05BTUUgfHwgJycsXG4gICAgV09SS0ZMT1dfVkVSQ0VMX1RFQU06IGVudi5XT1JLRkxPV19WRVJDRUxfVEVBTSB8fCAnJyxcbiAgICBXT1JLRkxPV19MT0NBTF9CQVNFX1VSTDogZW52LldPUktGTE9XX0xPQ0FMX0JBU0VfVVJMIHx8ICcnLFxuICAgIFdPUktGTE9XX0xPQ0FMX1VJOiBlbnYuV09SS0ZMT1dfTE9DQUxfVUkgfHwgJycsXG4gICAgUE9SVDogZW52LlBPUlQgfHwgJycsXG4gICAgV09SS0ZMT1dfTE9DQUxfREFUQV9ESVI6IGVudi5XT1JLRkxPV19MT0NBTF9EQVRBX0RJUiB8fCAnJyxcbiAgICBXT1JLRkxPV19NQU5JRkVTVF9QQVRIOiBlbnYuV09SS0ZMT1dfTUFOSUZFU1RfUEFUSCB8fCAnJyxcbiAgfTtcbn07XG5cbmNvbnN0IHBvc3NpYmxlTWFuaWZlc3RQYXRocyA9IFtcbiAgJ2FwcC8ud2VsbC1rbm93bi93b3JrZmxvdy92MS9tYW5pZmVzdC5qc29uJyxcbiAgJ3NyYy9hcHAvLndlbGwta25vd24vd29ya2Zsb3cvdjEvbWFuaWZlc3QuanNvbicsXG4gICcud2VsbC1rbm93bi93b3JrZmxvdy92MS9tYW5pZmVzdC5qc29uJyxcbl07XG5cbmFzeW5jIGZ1bmN0aW9uIGZpbmRNYW5pZmVzdFBhdGgoY3dkOiBzdHJpbmcpIHtcbiAgZm9yIChjb25zdCBwYXRoIG9mIHBvc3NpYmxlTWFuaWZlc3RQYXRocykge1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gam9pbihjd2QsIHBhdGgpO1xuICAgIGlmIChcbiAgICAgIGF3YWl0IGFjY2VzcyhmdWxsUGF0aClcbiAgICAgICAgLnRoZW4oKCkgPT4gdHJ1ZSlcbiAgICAgICAgLmNhdGNoKCgpID0+IGZhbHNlKVxuICAgICkge1xuICAgICAgY29uc3QgYWJzb2x1dGVQYXRoID0gcmVzb2x2ZShmdWxsUGF0aCk7XG4gICAgICBsb2dnZXIuZGVidWcoJ0ZvdW5kIHdvcmtmbG93IG1hbmlmZXN0OicsIGFic29sdXRlUGF0aCk7XG4gICAgICByZXR1cm4gYWJzb2x1dGVQYXRoO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE92ZXJ3cml0ZXMgcHJvY2Vzcy5lbnYgdmFyaWFibGVzIHJlbGF0ZWQgdG8gbG9jYWwgd29ybGQgY29uZmlndXJhdGlvbixcbiAqIGlmIHJlbGV2YW50IGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmVuJ3Qgc2V0IGFscmVhZHkuXG4gKlxuICogVGhyb3dzIGlmIHRoZSB3b3JrZmxvdyBkYXRhIGRpcmVjdG9yeSBjYW4gbm90IGJlIGZvdW5kLlxuICovXG5leHBvcnQgY29uc3QgaW5mZXJMb2NhbFdvcmxkRW52VmFycyA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgZW52VmFycyA9IGdldEVudlZhcnMoKTtcbiAgY29uc3QgY3dkID0gZ2V0V29ya2Zsb3dDb25maWcoKS53b3JraW5nRGlyO1xuICBsZXQgcmVwb1Jvb3Q6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvLyBBbHdheXMgZXhwb3NlIHRoZSBlZmZlY3RpdmUgd29ya2luZyBkaXJlY3RvcnkgdG8gdGhlIHdlYiBVSS9zZXJ2ZXItc2lkZSBoZWxwZXJzLlxuICAvLyBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIHdoZW4gZGV2ZWxvcGluZyB0aGUgd2ViIFVJIGZyb20gdGhlIHdvcmtmbG93IHJlcG9cbiAgLy8gd2hpbGUgdGFyZ2V0aW5nIGFub3RoZXIgcHJvamVjdCBkaXJlY3RvcnkuXG4gIGlmICghcHJvY2Vzcy5lbnYuV09SS0ZMT1dfT0JTRVJWQUJJTElUWV9DV0QpIHtcbiAgICB3cml0ZUVudlZhcnMoeyBXT1JLRkxPV19PQlNFUlZBQklMSVRZX0NXRDogY3dkIH0pO1xuICB9XG5cbiAgLy8gU2V0IGRlZmF1bHQgYmFzZSBVUkwgZm9yIGxvY2FsIHF1ZXVlIGlmIG5vdCBhbHJlYWR5IGNvbmZpZ3VyZWRcbiAgLy8gV2UgdXNlIFdPUktGTE9XX0xPQ0FMX0JBU0VfVVJMIGluc3RlYWQgb2YgUE9SVCB0byBhdm9pZCBjb25mbGljdHNcbiAgLy8gd2l0aCBvdGhlciB0b29scyAobGlrZSBOZXh0LmpzKSB0aGF0IGFsc28gdXNlIHRoZSBQT1JUIGVudiB2YXJcbiAgaWYgKCFlbnZWYXJzLldPUktGTE9XX0xPQ0FMX0JBU0VfVVJMICYmICFlbnZWYXJzLlBPUlQpIHtcbiAgICBsb2dnZXIuZGVidWcoXG4gICAgICAnVXNpbmcgZGVmYXVsdCBxdWV1ZSB0YXJnZXQgaHR0cDovL2xvY2FsaG9zdDozMDAwLCBzZXQgV09SS0ZMT1dfTE9DQUxfQkFTRV9VUkwgb3IgUE9SVCB0byBvdmVycmlkZS4nXG4gICAgKTtcbiAgICBlbnZWYXJzLldPUktGTE9XX0xPQ0FMX0JBU0VfVVJMID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCc7XG4gICAgd3JpdGVFbnZWYXJzKGVudlZhcnMpO1xuICB9XG5cbiAgLy8gSW5mZXIgd29ya2Zsb3cgZGF0YSBkaXJlY3RvcnlcbiAgaWYgKCFlbnZWYXJzLldPUktGTE9XX0xPQ0FMX0RBVEFfRElSKSB7XG4gICAgY29uc3QgbG9jYWxSZXN1bHQgPSBhd2FpdCBmaW5kV29ya2Zsb3dEYXRhRGlyKGN3ZCk7XG4gICAgaWYgKGxvY2FsUmVzdWx0LmRhdGFEaXIpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnRm91bmQgd29ya2Zsb3cgZGF0YSBkaXJlY3Rvcnk6JywgbG9jYWxSZXN1bHQuZGF0YURpcik7XG4gICAgICBlbnZWYXJzLldPUktGTE9XX0xPQ0FMX0RBVEFfRElSID0gbG9jYWxSZXN1bHQuZGF0YURpcjtcbiAgICAgIHdyaXRlRW52VmFycyhlbnZWYXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQXMgYSBmYWxsYmFjaywgZmluZCB0aGUgcmVwbyByb290LCBhbmQgdHJ5IHRvIGluZmVyIHRoZSBkYXRhIGRpciBmcm9tIHRoZXJlXG4gICAgICByZXBvUm9vdCA9IGF3YWl0IGZpbmRSZXBvUm9vdChjd2QsIGN3ZCk7XG4gICAgICBpZiAocmVwb1Jvb3QpIHtcbiAgICAgICAgY29uc3QgcmVwb1Jlc3VsdCA9IGF3YWl0IGZpbmRXb3JrZmxvd0RhdGFEaXIocmVwb1Jvb3QpO1xuICAgICAgICBpZiAocmVwb1Jlc3VsdC5kYXRhRGlyKSB7XG4gICAgICAgICAgbG9nZ2VyLmRlYnVnKCdGb3VuZCB3b3JrZmxvdyBkYXRhIGRpcmVjdG9yeTonLCByZXBvUmVzdWx0LmRhdGFEaXIpO1xuICAgICAgICAgIGVudlZhcnMuV09SS0ZMT1dfTE9DQUxfREFUQV9ESVIgPSByZXBvUmVzdWx0LmRhdGFEaXI7XG4gICAgICAgICAgd3JpdGVFbnZWYXJzKGVudlZhcnMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWVudlZhcnMuV09SS0ZMT1dfTE9DQUxfREFUQV9ESVIpIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBObyB3b3JrZmxvdyBkYXRhIGRpcmVjdG9yeSBmb3VuZCBpbiBcIiR7Y3dkfVwiLiBIYXZlIHlvdSBydW4gYW55IHdvcmtmbG93cyB5ZXQ/YDtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEluZmVyIHdvcmtmbG93IG1hbmlmZXN0IHBhdGggKGZvciBHcmFwaCB0YWIgaW4gd2ViIFVJKVxuICBpZiAoIWVudlZhcnMuV09SS0ZMT1dfTUFOSUZFU1RfUEFUSCkge1xuICAgIGNvbnN0IGxvY2FsTWFuaWZlc3QgPSBhd2FpdCBmaW5kTWFuaWZlc3RQYXRoKGN3ZCk7XG4gICAgaWYgKGxvY2FsTWFuaWZlc3QpIHtcbiAgICAgIGVudlZhcnMuV09SS0ZMT1dfTUFOSUZFU1RfUEFUSCA9IGxvY2FsTWFuaWZlc3Q7XG4gICAgICB3cml0ZUVudlZhcnMoZW52VmFycyk7XG4gICAgICBsb2dnZXIuZGVidWcoYEZvdW5kIHdvcmtmbG93IG1hbmlmZXN0IGF0OiAke2xvY2FsTWFuaWZlc3R9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEFzIGEgZmFsbGJhY2ssIGZpbmQgdGhlIHJlcG8gcm9vdCwgYW5kIHRyeSB0byBpbmZlciB0aGUgbWFuaWZlc3QgZnJvbSB0aGVyZVxuICAgICAgaWYgKCFyZXBvUm9vdCkge1xuICAgICAgICByZXBvUm9vdCA9IGF3YWl0IGZpbmRSZXBvUm9vdChjd2QsIGN3ZCk7XG4gICAgICB9XG4gICAgICBpZiAocmVwb1Jvb3QpIHtcbiAgICAgICAgY29uc3QgcmVwb01hbmlmZXN0ID0gYXdhaXQgZmluZE1hbmlmZXN0UGF0aChyZXBvUm9vdCk7XG4gICAgICAgIGlmIChyZXBvTWFuaWZlc3QpIHtcbiAgICAgICAgICBlbnZWYXJzLldPUktGTE9XX01BTklGRVNUX1BBVEggPSByZXBvTWFuaWZlc3Q7XG4gICAgICAgICAgd3JpdGVFbnZWYXJzKGVudlZhcnMpO1xuICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgRm91bmQgd29ya2Zsb3cgbWFuaWZlc3QgYXQ6ICR7cmVwb01hbmlmZXN0fWApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEl0J3Mgb2theSBpZiBtYW5pZmVzdCBpcyBub3QgZm91bmQgLSB0aGUgd2ViIFVJIHdpbGwganVzdCBzaG93IGVtcHR5IHdvcmtmbG93c1xuICAgICAgaWYgKCFlbnZWYXJzLldPUktGTE9XX01BTklGRVNUX1BBVEgpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICdObyB3b3JrZmxvdyBtYW5pZmVzdCBmb3VuZC4gV29ya2Zsb3dzIHRhYiB3aWxsIGJlIGVtcHR5LidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBpbmZlclZlcmNlbFByb2plY3RBbmRUZWFtID0gYXN5bmMgKCkgPT4ge1xuICBjb25zdCBjd2QgPSBnZXRXb3JrZmxvd0NvbmZpZygpLndvcmtpbmdEaXI7XG4gIGxldCBwcm9qZWN0OiBQcm9qZWN0TGluayB8IG51bGwgPSBudWxsO1xuICB0cnkge1xuICAgIGxvZ2dlci5kZWJ1ZyhgSW5mZXJyaW5nIHByb2plY3QgYW5kIHRlYW0gZnJvbSBDV0Q6ICR7Y3dkfWApO1xuICAgIHByb2plY3QgPSBhd2FpdCBnZXRQcm9qZWN0TGluayhjd2QpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmICghaXNPbmVPZkVyck5vRXhjZXB0aW9ucyhlcnJvciwgWydFTk9FTlQnXSkpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuICBpZiAoIXByb2plY3QpIHtcbiAgICBsb2dnZXIuZGVidWcoJ0NvdWxkIG5vdCBmaW5kIHByb2plY3QgbGluayBmb2xkZXInKTtcbiAgICByZXR1cm47XG4gIH1cbiAgbG9nZ2VyLmRlYnVnKGBGb3VuZCBwcm9qZWN0ICR7cHJvamVjdC5wcm9qZWN0SWR9IGFuZCB0ZWFtICR7cHJvamVjdC5vcmdJZH1gKTtcbiAgcmV0dXJuIHtcbiAgICBwcm9qZWN0SWQ6IHByb2plY3QucHJvamVjdElkLFxuICAgIHByb2plY3ROYW1lOiBwcm9qZWN0LnByb2plY3ROYW1lLFxuICAgIHRlYW1JZDogcHJvamVjdC5vcmdJZCxcbiAgfTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyY2VsRW52VmFycyB7XG4gIHRva2VuPzogc3RyaW5nO1xuICBlbnZpcm9ubWVudD86IHN0cmluZztcbiAgcHJvamVjdElkPzogc3RyaW5nO1xuICBwcm9qZWN0TmFtZT86IHN0cmluZztcbiAgdGVhbUlkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEluZmVycyBWZXJjZWwgV29ybGQgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBsb2NhbCBlbnZpcm9ubWVudCAoYC52ZXJjZWxgXG4gKiBmb2xkZXIsIENMSSBhdXRoIGZpbGUsIFZlcmNlbCBBUEkpIGFuZCByZXR1cm5zIGEgcmVzb2x2ZWQgY29uZmlnIG9iamVjdC5cbiAqXG4gKiBBbHNvIHdyaXRlcyB0aGUgcmVzb2x2ZWQgdmFsdWVzIHRvIGBwcm9jZXNzLmVudmAgc28gdGhlIGVtYmVkZGVkIHdlYiBVSVxuICogKHdoaWNoIHJlYWRzIGBwcm9jZXNzLmVudmAgYXMgYSBmYWxsYmFjaykgY2FuIHBpY2sgdGhlbSB1cC5cbiAqL1xuZXhwb3J0IGNvbnN0IGluZmVyVmVyY2VsRW52VmFycyA9IGFzeW5jICgpOiBQcm9taXNlPFZlcmNlbEVudlZhcnM+ID0+IHtcbiAgY29uc3QgZW52VmFycyA9IGdldEVudlZhcnMoKTtcblxuICAvLyBJbmZlciBwcm9qZWN0L3RlYW0gZnJvbSAudmVyY2VsIGZvbGRlciB3aGVuOlxuICAvLyAtIFdPUktGTE9XX1ZFUkNFTF9QUk9KRUNUIG9yIFdPUktGTE9XX1ZFUkNFTF9URUFNIGlzIG1pc3NpbmcsIE9SXG4gIC8vIC0gV09SS0ZMT1dfVkVSQ0VMX1BST0pFQ1QgaXMgc2V0IGJ1dCBkb2Vzbid0IGxvb2sgbGlrZSBhIHJlYWwgcHJvamVjdCBJRFxuICAvLyAgIChlLmcuLCB1c2VyIHBhc3NlZCBhIHNsdWcgdmlhIC0tcHJvamVjdCBmbGFnKSwgT1JcbiAgLy8gLSBXT1JLRkxPV19WRVJDRUxfUFJPSkVDVF9OQU1FIGlzIG1pc3NpbmcgKG5lZWQgdG8gcG9wdWxhdGUgdGhlIHNsdWcpXG4gIGNvbnN0IG5lZWRzSW5mZXJlbmNlID1cbiAgICAhZW52VmFycy5XT1JLRkxPV19WRVJDRUxfUFJPSkVDVCB8fFxuICAgICFlbnZWYXJzLldPUktGTE9XX1ZFUkNFTF9URUFNIHx8XG4gICAgIWVudlZhcnMuV09SS0ZMT1dfVkVSQ0VMX1BST0pFQ1RfTkFNRSB8fFxuICAgICFlbnZWYXJzLldPUktGTE9XX1ZFUkNFTF9QUk9KRUNULnN0YXJ0c1dpdGgoJ3Byal8nKTtcblxuICBpZiAobmVlZHNJbmZlcmVuY2UpIHtcbiAgICBsb2dnZXIuZGVidWcoJ0luZmVycmluZyB2ZXJjZWwgcHJvamVjdCBhbmQgdGVhbSBmcm9tIC52ZXJjZWwgZm9sZGVyJyk7XG4gICAgY29uc3QgaW5mZXJyZWRQcm9qZWN0ID0gYXdhaXQgaW5mZXJWZXJjZWxQcm9qZWN0QW5kVGVhbSgpO1xuICAgIGlmIChpbmZlcnJlZFByb2plY3QpIHtcbiAgICAgIGNvbnN0IHsgcHJvamVjdElkLCBwcm9qZWN0TmFtZSwgdGVhbUlkIH0gPSBpbmZlcnJlZFByb2plY3Q7XG4gICAgICAvLyBXT1JLRkxPV19WRVJDRUxfUFJPSkVDVCBpcyB0aGUgcmVhbCBwcm9qZWN0IElEIChlLmcuLCBwcmpfeHh4KVxuICAgICAgZW52VmFycy5XT1JLRkxPV19WRVJDRUxfUFJPSkVDVCA9IHByb2plY3RJZDtcbiAgICAgIC8vIFdPUktGTE9XX1ZFUkNFTF9QUk9KRUNUX05BTUUgaXMgdGhlIHByb2plY3Qgc2x1ZyAoZS5nLiwgbXktYXBwKVxuICAgICAgZW52VmFycy5XT1JLRkxPV19WRVJDRUxfUFJPSkVDVF9OQU1FID0gcHJvamVjdE5hbWUgfHwgcHJvamVjdElkO1xuICAgICAgZW52VmFycy5XT1JLRkxPV19WRVJDRUxfVEVBTSA9IGVudlZhcnMuV09SS0ZMT1dfVkVSQ0VMX1RFQU0gfHwgdGVhbUlkO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2dnZXIud2FybihcbiAgICAgICAgJ0NvdWxkIG5vdCBpbmZlciB2ZXJjZWwgcHJvamVjdCBhbmQgdGVhbSBmcm9tIC52ZXJjZWwgZm9sZGVyLCBzZXJ2ZXIgYXV0aGVudGljYXRpb24gbWlnaHQgZmFpbC4nXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGlmICghZW52VmFycy5XT1JLRkxPV19WRVJDRUxfQVVUSF9UT0tFTikge1xuICAgIGxvZ2dlci5kZWJ1ZygnSW5mZXJyaW5nIHZlcmNlbCBhdXRoIHRva2VuIGZyb20gQ0xJIGF1dGggZmlsZScpO1xuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgZ2V0QXV0aFRva2VuKCk7XG4gICAgaWYgKCF0b2tlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCBjcmVkZW50aWFscy4gUnVuIGB2YyBsb2dpbmAgdG8gbG9nIGluLicpO1xuICAgIH1cbiAgICBlbnZWYXJzLldPUktGTE9XX1ZFUkNFTF9BVVRIX1RPS0VOID0gdG9rZW47XG4gIH1cblxuICAvLyBGZXRjaCB0ZWFtIGluZm9ybWF0aW9uIGZyb20gVmVyY2VsIEFQSSB0byBnZXQgdGhlIHRlYW0gc2x1Z1xuICAvLyBUT0RPOiBTYWRseSwgaW4gb3JkZXIgdG8gcmVkaXJlY3QgdG8gVmVyY2VsIGRhc2hib2FyZCBjb3JyZWN0bHksIHdlIG5lZWQgdG9cbiAgLy8gcmVzb2x2ZSB0aGUgdGVhbSBuYW1lLCB3aGljaCBpcyBhIHdob2xlIEFQSSByZXF1ZXN0LiBUaGUgYWx0ZXJuYXRpdmUgd291bGQgYmUgdG9cbiAgLy8gY2hhbmdlIGZyb250IHRvIGFsbG93IHBhc3NpbmcgaW4gdGhlIHRlYW0gc2x1ZyBkaXJlY3RseSwgb3IgYWRkIHNvbWUgZ2VuZXJpYyByZWRpcmVjdC5cbiAgaWYgKGVudlZhcnMuV09SS0ZMT1dfVkVSQ0VMX1RFQU0gJiYgZW52VmFycy5XT1JLRkxPV19WRVJDRUxfQVVUSF9UT0tFTikge1xuICAgIGxvZ2dlci5pbmZvKCdWZXJjZWwgcHJvamVjdCBkZXRlY3RlZC4gTG9hZGluZyBwcm9qZWN0IGRhdGEuLi4nKTtcbiAgICBsb2dnZXIuZGVidWcoJ0ZldGNoaW5nIHRlYW0gaW5mb3JtYXRpb24gZnJvbSBWZXJjZWwgQVBJJyk7XG4gICAgY29uc3QgdGVhbUluZm8gPSBhd2FpdCBmZXRjaFRlYW1JbmZvKFxuICAgICAgZW52VmFycy5XT1JLRkxPV19WRVJDRUxfVEVBTSxcbiAgICAgIGVudlZhcnMuV09SS0ZMT1dfVkVSQ0VMX0FVVEhfVE9LRU5cbiAgICApO1xuICAgIGlmICh0ZWFtSW5mbykge1xuICAgICAgZW52VmFycy5XT1JLRkxPV19WRVJDRUxfVEVBTSA9IHRlYW1JbmZvLnRlYW1TbHVnO1xuICAgICAgbG9nZ2VyLmRlYnVnKGBGb3VuZCB0ZWFtIHNsdWc6ICR7dGVhbUluZm8udGVhbVNsdWd9YCk7XG4gICAgfVxuICB9XG5cbiAgLy8gV3JpdGUgcmVzb2x2ZWQgdmFsdWVzIHRvIHByb2Nlc3MuZW52IGZvciB0aGUgZW1iZWRkZWQgd2ViIFVJLCB3aGljaFxuICAvLyByZWFkcyB0aGVtIGFzIGZhbGxiYWNrcyBpbiBpdHMgc2VydmVyIGFjdGlvbnMuXG4gIHdyaXRlRW52VmFycyhlbnZWYXJzKTtcblxuICByZXR1cm4ge1xuICAgIHRva2VuOiBlbnZWYXJzLldPUktGTE9XX1ZFUkNFTF9BVVRIX1RPS0VOIHx8IHVuZGVmaW5lZCxcbiAgICBlbnZpcm9ubWVudDogZW52VmFycy5XT1JLRkxPV19WRVJDRUxfRU5WIHx8IHVuZGVmaW5lZCxcbiAgICBwcm9qZWN0SWQ6IGVudlZhcnMuV09SS0ZMT1dfVkVSQ0VMX1BST0pFQ1QgfHwgdW5kZWZpbmVkLFxuICAgIHByb2plY3ROYW1lOiBlbnZWYXJzLldPUktGTE9XX1ZFUkNFTF9QUk9KRUNUX05BTUUgfHwgdW5kZWZpbmVkLFxuICAgIHRlYW1JZDogZW52VmFycy5XT1JLRkxPV19WRVJDRUxfVEVBTSB8fCB1bmRlZmluZWQsXG4gIH07XG59O1xuIl19
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbnNwZWN0L2Vudi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFDTCxZQUFZLEVBQ1osY0FBYyxFQUNkLHNCQUFzQixHQUV2QixNQUFNLGtCQUFrQixDQUFDO0FBRTFCOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxPQUErQixFQUFFLEVBQUU7SUFDOUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1FBQy9DLElBQ0UsS0FBSyxLQUFLLFNBQVM7WUFDbkIsS0FBSyxLQUFLLElBQUk7WUFDZCxLQUFLLEtBQUssRUFBRTtZQUNaLEtBQUssS0FBSyxXQUFXLEVBQ3JCLENBQUM7WUFDRCxPQUFPO1FBQ1QsQ0FBQztRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEdBQTJCLEVBQUU7SUFDckQs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WSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXRCLE9BQU87UUFDTCxLQUFLLEVBQUUsT0FBTyxDQUFDLDBCQUEwQixJQUFJLFNBQVM7UUFDdEQsV0FBVyxFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsSUFBSSxTQUFTO1FBQ3JELFNBQVMsRUFBRSxPQUFPLENBQUMsdUJBQXVCLElBQUksU0FBUztRQUN2RCxXQUFXLEVBQUUsT0FBTyxDQUFDLDRCQUE0QixJQUFJLFNBQVM7UUFDOUQsTUFBTSxFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsSUFBSSxTQUFTO0tBQ2xELENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhY2Nlc3MgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCB7IGpvaW4sIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgZmluZFdvcmtmbG93RGF0YURpciB9IGZyb20gJ0B3b3JrZmxvdy91dGlscy9jaGVjay1kYXRhLWRpcic7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi9jb25maWcvbG9nLmpzJztcbmltcG9ydCB7IGdldFdvcmtmbG93Q29uZmlnIH0gZnJvbSAnLi4vY29uZmlnL3dvcmtmbG93LWNvbmZpZy5qcyc7XG5pbXBvcnQgeyBnZXRBdXRoVG9rZW4gfSBmcm9tICcuL2F1dGguanMnO1xuaW1wb3J0IHsgZmV0Y2hUZWFtSW5mbyB9IGZyb20gJy4vdmVyY2VsLWFwaS5qcyc7XG5pbXBvcnQge1xuICBmaW5kUmVwb1Jvb3QsXG4gIGdldFByb2plY3RMaW5rLFxuICBpc09uZU9mRXJyTm9FeGNlcHRpb25zLFxuICB0eXBlIFByb2plY3RMaW5rLFxufSBmcm9tICcuL3ZlcmNlbC1saW5rLmpzJztcblxuLyoqXG4gKiBPdmVyd3JpdGUgdmFsdWVzIG9uIHByb2Nlc3MuZW52IHdpdGggdGhlIGdpdmVuIHZhbHVlcyAoaWYgbm90IHVuZGVmaW5lZClcbiAqXG4gKiBVc2VkIGJ5IHRoZSBDTEkgdG8gY29uZmlndXJlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IGFyZSByZWFkIGJ5XG4gKiB2YXJpb3VzIHN1YnN5c3RlbXMgKGUuZy4sIFdPUktGTE9XX1RBUkdFVF9XT1JMRCwgV09SS0ZMT1dfTE9DQUxfREFUQV9ESVIpLlxuICogTm90ZTogV09SS0ZMT1dfVkVSQ0VMXyogZW52IHZhcnMgYXJlIHJlYWQgYmFjayB2aWEgZ2V0RW52VmFycygpIGFuZCBwYXNzZWRcbiAqIHRvIEB3b3JrZmxvdy93b3JsZC12ZXJjZWwncyBjcmVhdGVXb3JsZCgpIGV4cGxpY2l0bHk7IHRoZXkgYXJlIE5PVCByZWFkIGJ5IHJ1bnRpbWUgY3JlYXRlV29ybGQoKS5cbiAqL1xuZXhwb3J0IGNvbnN0IHdyaXRlRW52VmFycyA9IChlbnZWYXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSA9PiB7XG4gIE9iamVjdC5lbnRyaWVzKGVudlZhcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGlmIChcbiAgICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgIHZhbHVlID09PSBudWxsIHx8XG4gICAgICB2YWx1ZSA9PT0gJycgfHxcbiAgICAgIHZhbHVlID09PSAndW5kZWZpbmVkJ1xuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBwcm9jZXNzLmVudltrZXldID0gdmFsdWU7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVudlZhcnMgPSAoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9PiB7XG4gIGNvbnN0IGVudiA9IHByb2Nlc3MuZW52O1xuICByZXR1cm4ge1xuICAgIFdPUktGTE9XX1RBUkdFVF9XT1JMRDogZW52LldPUktGTE9XX1RBUkdFVF9XT1JMRCB8fCAnJyxcbiAgICBXT1JLRkxPV19WRVJDRUxfRU5WOiBlbnYuV09SS0ZMT1dfVkVSQ0VMX0VOViB8fCAnJyxcbiAgICBXT1JLRkxPV19WRVJDRUxfQVVUSF9UT0tFTjogZW52LldPUktGTE9XX1ZFUkNFTF9BVVRIX1RPS0VOIHx8ICcnLFxuICAgIFdPUktGTE9XX1ZFUkNFTF9QUk9KRUNUOiBlbnYuV09SS0ZMT1dfVkVSQ0VMX1BST0pFQ1QgfHwgJycsXG4gICAgV09SS0ZMT1dfVkVSQ0VMX1BST0pFQ1RfTkFNRTogZW52LldPUktGTE9XX1ZFUkNFTF9QUk9KRUNUX05BTUUgfHwgJycsXG4gICAgV09SS0ZMT1dfVkVSQ0VMX1RFQU06IGVudi5XT1JLRkxPV19WRVJDRUxfVEVBTSB8fCAnJyxcbiAgICBXT1JLRkxPV19MT0NBTF9CQVNFX1VSTDogZW52LldPUktGTE9XX0xPQ0FMX0JBU0VfVVJMIHx8ICcnLFxuICAgIFdPUktGTE9XX0xPQ0FMX1VJOiBlbnYuV09SS0ZMT1dfTE9DQUxfVUkgfHwgJycsXG4gICAgUE9SVDogZW52LlBPUlQgfHwgJycsXG4gICAgV09SS0ZMT1dfTE9DQUxfREFUQV9ESVI6IGVudi5XT1JLRkxPV19MT0NBTF9EQVRBX0RJUiB8fCAnJyxcbiAgICBXT1JLRkxPV19NQU5JRkVTVF9QQVRIOiBlbnYuV09SS0ZMT1dfTUFOSUZFU1RfUEFUSCB8fCAnJyxcbiAgfTtcbn07XG5cbmNvbnN0IHBvc3NpYmxlTWFuaWZlc3RQYXRocyA9IFtcbiAgJ2FwcC8ud2VsbC1rbm93bi93b3JrZmxvdy92MS9tYW5pZmVzdC5qc29uJyxcbiAgJ3NyYy9hcHAvLndlbGwta25vd24vd29ya2Zsb3cvdjEvbWFuaWZlc3QuanNvbicsXG4gICcud2VsbC1rbm93bi93b3JrZmxvdy92MS9tYW5pZmVzdC5qc29uJyxcbl07XG5cbmFzeW5jIGZ1bmN0aW9uIGZpbmRNYW5pZmVzdFBhdGgoY3dkOiBzdHJpbmcpIHtcbiAgZm9yIChjb25zdCBwYXRoIG9mIHBvc3NpYmxlTWFuaWZlc3RQYXRocykge1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gam9pbihjd2QsIHBhdGgpO1xuICAgIGlmIChcbiAgICAgIGF3YWl0IGFjY2VzcyhmdWxsUGF0aClcbiAgICAgICAgLnRoZW4oKCkgPT4gdHJ1ZSlcbiAgICAgICAgLmNhdGNoKCgpID0+IGZhbHNlKVxuICAgICkge1xuICAgICAgY29uc3QgYWJzb2x1dGVQYXRoID0gcmVzb2x2ZShmdWxsUGF0aCk7XG4gICAgICBsb2dnZXIuZGVidWcoJ0ZvdW5kIHdvcmtmbG93IG1hbmlmZXN0OicsIGFic29sdXRlUGF0aCk7XG4gICAgICByZXR1cm4gYWJzb2x1dGVQYXRoO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE92ZXJ3cml0ZXMgcHJvY2Vzcy5lbnYgdmFyaWFibGVzIHJlbGF0ZWQgdG8gbG9jYWwgd29ybGQgY29uZmlndXJhdGlvbixcbiAqIGlmIHJlbGV2YW50IGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmVuJ3Qgc2V0IGFscmVhZHkuXG4gKlxuICogVGhyb3dzIGlmIHRoZSB3b3JrZmxvdyBkYXRhIGRpcmVjdG9yeSBjYW4gbm90IGJlIGZvdW5kLlxuICovXG5leHBvcnQgY29uc3QgaW5mZXJMb2NhbFdvcmxkRW52VmFycyA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgZW52VmFycyA9IGdldEVudlZhcnMoKTtcbiAgY29uc3QgY3dkID0gZ2V0V29ya2Zsb3dDb25maWcoKS53b3JraW5nRGlyO1xuICBsZXQgcmVwb1Jvb3Q6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvLyBBbHdheXMgZXhwb3NlIHRoZSBlZmZlY3RpdmUgd29ya2luZyBkaXJlY3RvcnkgdG8gdGhlIHdlYiBVSS9zZXJ2ZXItc2lkZSBoZWxwZXJzLlxuICAvLyBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIHdoZW4gZGV2ZWxvcGluZyB0aGUgd2ViIFVJIGZyb20gdGhlIHdvcmtmbG93IHJlcG9cbiAgLy8gd2hpbGUgdGFyZ2V0aW5nIGFub3RoZXIgcHJvamVjdCBkaXJlY3RvcnkuXG4gIGlmICghcHJvY2Vzcy5lbnYuV09SS0ZMT1dfT0JTRVJWQUJJTElUWV9DV0QpIHtcbiAgICB3cml0ZUVudlZhcnMoeyBXT1JLRkxPV19PQlNFUlZBQklMSVRZX0NXRDogY3dkIH0pO1xuICB9XG5cbiAgLy8gU2V0IGRlZmF1bHQgYmFzZSBVUkwgZm9yIGxvY2FsIHF1ZXVlIGlmIG5vdCBhbHJlYWR5IGNvbmZpZ3VyZWRcbiAgLy8gV2UgdXNlIFdPUktGTE9XX0xPQ0FMX0JBU0VfVVJMIGluc3RlYWQgb2YgUE9SVCB0byBhdm9pZCBjb25mbGljdHNcbiAgLy8gd2l0aCBvdGhlciB0b29scyAobGlrZSBOZXh0LmpzKSB0aGF0IGFsc28gdXNlIHRoZSBQT1JUIGVudiB2YXJcbiAgaWYgKCFlbnZWYXJzLldPUktGTE9XX0xPQ0FMX0JBU0VfVVJMICYmICFlbnZWYXJzLlBPUlQpIHtcbiAgICBsb2dnZXIuZGVidWcoXG4gICAgICAnVXNpbmcgZGVmYXVsdCBxdWV1ZSB0YXJnZXQgaHR0cDovL2xvY2FsaG9zdDozMDAwLCBzZXQgV09SS0ZMT1dfTE9DQUxfQkFTRV9VUkwgb3IgUE9SVCB0byBvdmVycmlkZS4nXG4gICAgKTtcbiAgICBlbnZWYXJzLldPUktGTE9XX0xPQ0FMX0JBU0VfVVJMID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCc7XG4gICAgd3JpdGVFbnZWYXJzKGVudlZhcnMpO1xuICB9XG5cbiAgLy8gSW5mZXIgd29ya2Zsb3cgZGF0YSBkaXJlY3RvcnlcbiAgaWYgKCFlbnZWYXJzLldPUktGTE9XX0xPQ0FMX0RBVEFfRElSKSB7XG4gICAgY29uc3QgbG9jYWxSZXN1bHQgPSBhd2FpdCBmaW5kV29ya2Zsb3dEYXRhRGlyKGN3ZCk7XG4gICAgaWYgKGxvY2FsUmVzdWx0LmRhdGFEaXIpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnRm91bmQgd29ya2Zsb3cgZGF0YSBkaXJlY3Rvcnk6JywgbG9jYWxSZXN1bHQuZGF0YURpcik7XG4gICAgICBlbnZWYXJzLldPUktGTE9XX0xPQ0FMX0RBVEFfRElSID0gbG9jYWxSZXN1bHQuZGF0YURpcjtcbiAgICAgIHdyaXRlRW52VmFycyhlbnZWYXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQXMgYSBmYWxsYmFjaywgZmluZCB0aGUgcmVwbyByb290LCBhbmQgdHJ5IHRvIGluZmVyIHRoZSBkYXRhIGRpciBmcm9tIHRoZXJlXG4gICAgICByZXBvUm9vdCA9IGF3YWl0IGZpbmRSZXBvUm9vdChjd2QsIGN3ZCk7XG4gICAgICBpZiAocmVwb1Jvb3QpIHtcbiAgICAgICAgY29uc3QgcmVwb1Jlc3VsdCA9IGF3YWl0IGZpbmRXb3JrZmxvd0RhdGFEaXIocmVwb1Jvb3QpO1xuICAgICAgICBpZiAocmVwb1Jlc3VsdC5kYXRhRGlyKSB7XG4gICAgICAgICAgbG9nZ2VyLmRlYnVnKCdGb3VuZCB3b3JrZmxvdyBkYXRhIGRpcmVjdG9yeTonLCByZXBvUmVzdWx0LmRhdGFEaXIpO1xuICAgICAgICAgIGVudlZhcnMuV09SS0ZMT1dfTE9DQUxfREFUQV9ESVIgPSByZXBvUmVzdWx0LmRhdGFEaXI7XG4gICAgICAgICAgd3JpdGVFbnZWYXJzKGVudlZhcnMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWVudlZhcnMuV09SS0ZMT1dfTE9DQUxfREFUQV9ESVIpIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBObyB3b3JrZmxvdyBkYXRhIGRpcmVjdG9yeSBmb3VuZCBpbiBcIiR7Y3dkfVwiLiBIYXZlIHlvdSBydW4gYW55IHdvcmtmbG93cyB5ZXQ/YDtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEluZmVyIHdvcmtmbG93IG1hbmlmZXN0IHBhdGggKGZvciBHcmFwaCB0YWIgaW4gd2ViIFVJKVxuICBpZiAoIWVudlZhcnMuV09SS0ZMT1dfTUFOSUZFU1RfUEFUSCkge1xuICAgIGNvbnN0IGxvY2FsTWFuaWZlc3QgPSBhd2FpdCBmaW5kTWFuaWZlc3RQYXRoKGN3ZCk7XG4gICAgaWYgKGxvY2FsTWFuaWZlc3QpIHtcbiAgICAgIGVudlZhcnMuV09SS0ZMT1dfTUFOSUZFU1RfUEFUSCA9IGxvY2FsTWFuaWZlc3Q7XG4gICAgICB3cml0ZUVudlZhcnMoZW52VmFycyk7XG4gICAgICBsb2dnZXIuZGVidWcoYEZvdW5kIHdvcmtmbG93IG1hbmlmZXN0IGF0OiAke2xvY2FsTWFuaWZlc3R9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEFzIGEgZmFsbGJhY2ssIGZpbmQgdGhlIHJlcG8gcm9vdCwgYW5kIHRyeSB0byBpbmZlciB0aGUgbWFuaWZlc3QgZnJvbSB0aGVyZVxuICAgICAgaWYgKCFyZXBvUm9vdCkge1xuICAgICAgICByZXBvUm9vdCA9IGF3YWl0IGZpbmRSZXBvUm9vdChjd2QsIGN3ZCk7XG4gICAgICB9XG4gICAgICBpZiAocmVwb1Jvb3QpIHtcbiAgICAgICAgY29uc3QgcmVwb01hbmlmZXN0ID0gYXdhaXQgZmluZE1hbmlmZXN0UGF0aChyZXBvUm9vdCk7XG4gICAgICAgIGlmIChyZXBvTWFuaWZlc3QpIHtcbiAgICAgICAgICBlbnZWYXJzLldPUktGTE9XX01BTklGRVNUX1BBVEggPSByZXBvTWFuaWZlc3Q7XG4gICAgICAgICAgd3JpdGVFbnZWYXJzKGVudlZhcnMpO1xuICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgRm91bmQgd29ya2Zsb3cgbWFuaWZlc3QgYXQ6ICR7cmVwb01hbmlmZXN0fWApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBtYW5pZmVzdCBpcyBub3QgZm91bmQsIHRoZSB3ZWIgVUkgd2lsbCBzaG93IG5vIHdvcmtmbG93cy5cbiAgICAgIGlmICghZW52VmFycy5XT1JLRkxPV19NQU5JRkVTVF9QQVRIKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAnTm8gd29ya2Zsb3cgbWFuaWZlc3QgZm91bmQuIFdvcmtmbG93cyB0YWIgd2lsbCBiZSBlbXB0eS4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaW5mZXJWZXJjZWxQcm9qZWN0QW5kVGVhbSA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgY3dkID0gZ2V0V29ya2Zsb3dDb25maWcoKS53b3JraW5nRGlyO1xuICBsZXQgcHJvamVjdDogUHJvamVjdExpbmsgfCBudWxsID0gbnVsbDtcbiAgdHJ5IHtcbiAgICBsb2dnZXIuZGVidWcoYEluZmVycmluZyBwcm9qZWN0IGFuZCB0ZWFtIGZyb20gQ1dEOiAke2N3ZH1gKTtcbiAgICBwcm9qZWN0ID0gYXdhaXQgZ2V0UHJvamVjdExpbmsoY3dkKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoIWlzT25lT2ZFcnJOb0V4Y2VwdGlvbnMoZXJyb3IsIFsnRU5PRU5UJ10pKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cbiAgaWYgKCFwcm9qZWN0KSB7XG4gICAgbG9nZ2VyLmRlYnVnKCdDb3VsZCBub3QgZmluZCBwcm9qZWN0IGxpbmsgZm9sZGVyJyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxvZ2dlci5kZWJ1ZyhgRm91bmQgcHJvamVjdCAke3Byb2plY3QucHJvamVjdElkfSBhbmQgdGVhbSAke3Byb2plY3Qub3JnSWR9YCk7XG4gIHJldHVybiB7XG4gICAgcHJvamVjdElkOiBwcm9qZWN0LnByb2plY3RJZCxcbiAgICBwcm9qZWN0TmFtZTogcHJvamVjdC5wcm9qZWN0TmFtZSxcbiAgICB0ZWFtSWQ6IHByb2plY3Qub3JnSWQsXG4gIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFZlcmNlbEVudlZhcnMge1xuICB0b2tlbj86IHN0cmluZztcbiAgZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG4gIHByb2plY3RJZD86IHN0cmluZztcbiAgcHJvamVjdE5hbWU/OiBzdHJpbmc7XG4gIHRlYW1JZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbmZlcnMgVmVyY2VsIFdvcmxkIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgbG9jYWwgZW52aXJvbm1lbnQgKGAudmVyY2VsYFxuICogZm9sZGVyLCBDTEkgYXV0aCBmaWxlLCBWZXJjZWwgQVBJKSBhbmQgcmV0dXJucyBhIHJlc29sdmVkIGNvbmZpZyBvYmplY3QuXG4gKlxuICogQWxzbyB3cml0ZXMgdGhlIHJlc29sdmVkIHZhbHVlcyB0byBgcHJvY2Vzcy5lbnZgIHNvIHRoZSBlbWJlZGRlZCB3ZWIgVUlcbiAqICh3aGljaCByZWFkcyBgcHJvY2Vzcy5lbnZgIGFzIGEgZmFsbGJhY2spIGNhbiBwaWNrIHRoZW0gdXAuXG4gKi9cbmV4cG9ydCBjb25zdCBpbmZlclZlcmNlbEVudlZhcnMgPSBhc3luYyAoKTogUHJvbWlzZTxWZXJjZWxFbnZWYXJzPiA9PiB7XG4gIGNvbnN0IGVudlZhcnMgPSBnZXRFbnZWYXJzKCk7XG5cbiAgLy8gSW5mZXIgcHJvamVjdC90ZWFtIGZyb20gLnZlcmNlbCBmb2xkZXIgd2hlbjpcbiAgLy8gLSBXT1JLRkxPV19WRVJDRUxfUFJPSkVDVCBvciBXT1JLRkxPV19WRVJDRUxfVEVBTSBpcyBtaXNzaW5nLCBPUlxuICAvLyAtIFdPUktGTE9XX1ZFUkNFTF9QUk9KRUNUIGlzIHNldCBidXQgZG9lc24ndCBsb29rIGxpa2UgYSByZWFsIHByb2plY3QgSURcbiAgLy8gICAoZS5nLiwgdXNlciBwYXNzZWQgYSBzbHVnIHZpYSAtLXByb2plY3QgZmxhZyksIE9SXG4gIC8vIC0gV09SS0ZMT1dfVkVSQ0VMX1BST0pFQ1RfTkFNRSBpcyBtaXNzaW5nIChuZWVkIHRvIHBvcHVsYXRlIHRoZSBzbHVnKVxuICBjb25zdCBuZWVkc0luZmVyZW5jZSA9XG4gICAgIWVudlZhcnMuV09SS0ZMT1dfVkVSQ0VMX1BST0pFQ1QgfHxcbiAgICAhZW52VmFycy5XT1JLRkxPV19WRVJDRUxfVEVBTSB8fFxuICAgICFlbnZWYXJzLldPUktGTE9XX1ZFUkNFTF9QUk9KRUNUX05BTUUgfHxcbiAgICAhZW52VmFycy5XT1JLRkxPV19WRVJDRUxfUFJPSkVDVC5zdGFydHNXaXRoKCdwcmpfJyk7XG5cbiAgaWYgKG5lZWRzSW5mZXJlbmNlKSB7XG4gICAgbG9nZ2VyLmRlYnVnKCdJbmZlcnJpbmcgdmVyY2VsIHByb2plY3QgYW5kIHRlYW0gZnJvbSAudmVyY2VsIGZvbGRlcicpO1xuICAgIGNvbnN0IGluZmVycmVkUHJvamVjdCA9IGF3YWl0IGluZmVyVmVyY2VsUHJvamVjdEFuZFRlYW0oKTtcbiAgICBpZiAoaW5mZXJyZWRQcm9qZWN0KSB7XG4gICAgICBjb25zdCB7IHByb2plY3RJZCwgcHJvamVjdE5hbWUsIHRlYW1JZCB9ID0gaW5mZXJyZWRQcm9qZWN0O1xuICAgICAgLy8gV09SS0ZMT1dfVkVSQ0VMX1BST0pFQ1QgaXMgdGhlIHJlYWwgcHJvamVjdCBJRCAoZS5nLiwgcHJqX3h4eClcbiAgICAgIGVudlZhcnMuV09SS0ZMT1dfVkVSQ0VMX1BST0pFQ1QgPSBwcm9qZWN0SWQ7XG4gICAgICAvLyBXT1JLRkxPV19WRVJDRUxfUFJPSkVDVF9OQU1FIGlzIHRoZSBwcm9qZWN0IHNsdWcgKGUuZy4sIG15LWFwcClcbiAgICAgIGVudlZhcnMuV09SS0ZMT1dfVkVSQ0VMX1BST0pFQ1RfTkFNRSA9IHByb2plY3ROYW1lIHx8IHByb2plY3RJZDtcbiAgICAgIGVudlZhcnMuV09SS0ZMT1dfVkVSQ0VMX1RFQU0gPSBlbnZWYXJzLldPUktGTE9XX1ZFUkNFTF9URUFNIHx8IHRlYW1JZDtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nZ2VyLndhcm4oXG4gICAgICAgICdDb3VsZCBub3QgaW5mZXIgdmVyY2VsIHByb2plY3QgYW5kIHRlYW0gZnJvbSAudmVyY2VsIGZvbGRlciwgc2VydmVyIGF1dGhlbnRpY2F0aW9uIG1pZ2h0IGZhaWwuJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWVudlZhcnMuV09SS0ZMT1dfVkVSQ0VMX0FVVEhfVE9LRU4pIHtcbiAgICBsb2dnZXIuZGVidWcoJ0luZmVycmluZyB2ZXJjZWwgYXV0aCB0b2tlbiBmcm9tIENMSSBhdXRoIGZpbGUnKTtcbiAgICBjb25zdCB0b2tlbiA9IGF3YWl0IGdldEF1dGhUb2tlbigpO1xuICAgIGlmICghdG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGZpbmQgY3JlZGVudGlhbHMuIFJ1biBgdmMgbG9naW5gIHRvIGxvZyBpbi4nKTtcbiAgICB9XG4gICAgZW52VmFycy5XT1JLRkxPV19WRVJDRUxfQVVUSF9UT0tFTiA9IHRva2VuO1xuICB9XG5cbiAgLy8gRmV0Y2ggdGVhbSBpbmZvcm1hdGlvbiBmcm9tIFZlcmNlbCBBUEkgdG8gZ2V0IHRoZSB0ZWFtIHNsdWdcbiAgLy8gVE9ETzogVG8gcmVkaXJlY3QgdG8gdGhlIFZlcmNlbCBkYXNoYm9hcmQgY29ycmVjdGx5LCB3ZSBuZWVkIHRvXG4gIC8vIHJlc29sdmUgdGhlIHRlYW0gbmFtZSwgd2hpY2ggaXMgYSB3aG9sZSBBUEkgcmVxdWVzdC4gVGhlIGFsdGVybmF0aXZlIHdvdWxkIGJlIHRvXG4gIC8vIGNoYW5nZSBmcm9udCB0byBhbGxvdyBwYXNzaW5nIGluIHRoZSB0ZWFtIHNsdWcgZGlyZWN0bHksIG9yIGFkZCBzb21lIGdlbmVyaWMgcmVkaXJlY3QuXG4gIGlmIChlbnZWYXJzLldPUktGTE9XX1ZFUkNFTF9URUFNICYmIGVudlZhcnMuV09SS0ZMT1dfVkVSQ0VMX0FVVEhfVE9LRU4pIHtcbiAgICBsb2dnZXIuaW5mbygnVmVyY2VsIHByb2plY3QgZGV0ZWN0ZWQuIExvYWRpbmcgcHJvamVjdCBkYXRhLi4uJyk7XG4gICAgbG9nZ2VyLmRlYnVnKCdGZXRjaGluZyB0ZWFtIGluZm9ybWF0aW9uIGZyb20gVmVyY2VsIEFQSScpO1xuICAgIGNvbnN0IHRlYW1JbmZvID0gYXdhaXQgZmV0Y2hUZWFtSW5mbyhcbiAgICAgIGVudlZhcnMuV09SS0ZMT1dfVkVSQ0VMX1RFQU0sXG4gICAgICBlbnZWYXJzLldPUktGTE9XX1ZFUkNFTF9BVVRIX1RPS0VOXG4gICAgKTtcbiAgICBpZiAodGVhbUluZm8pIHtcbiAgICAgIGVudlZhcnMuV09SS0ZMT1dfVkVSQ0VMX1RFQU0gPSB0ZWFtSW5mby50ZWFtU2x1ZztcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgRm91bmQgdGVhbSBzbHVnOiAke3RlYW1JbmZvLnRlYW1TbHVnfWApO1xuICAgIH1cbiAgfVxuXG4gIC8vIFdyaXRlIHJlc29sdmVkIHZhbHVlcyB0byBwcm9jZXNzLmVudiBmb3IgdGhlIGVtYmVkZGVkIHdlYiBVSSwgd2hpY2hcbiAgLy8gcmVhZHMgdGhlbSBhcyBmYWxsYmFja3MgaW4gaXRzIHNlcnZlciBhY3Rpb25zLlxuICB3cml0ZUVudlZhcnMoZW52VmFycyk7XG5cbiAgcmV0dXJuIHtcbiAgICB0b2tlbjogZW52VmFycy5XT1JLRkxPV19WRVJDRUxfQVVUSF9UT0tFTiB8fCB1bmRlZmluZWQsXG4gICAgZW52aXJvbm1lbnQ6IGVudlZhcnMuV09SS0ZMT1dfVkVSQ0VMX0VOViB8fCB1bmRlZmluZWQsXG4gICAgcHJvamVjdElkOiBlbnZWYXJzLldPUktGTE9XX1ZFUkNFTF9QUk9KRUNUIHx8IHVuZGVmaW5lZCxcbiAgICBwcm9qZWN0TmFtZTogZW52VmFycy5XT1JLRkxPV19WRVJDRUxfUFJPSkVDVF9OQU1FIHx8IHVuZGVmaW5lZCxcbiAgICB0ZWFtSWQ6IGVudlZhcnMuV09SS0ZMT1dfVkVSQ0VMX1RFQU0gfHwgdW5kZWZpbmVkLFxuICB9O1xufTtcbiJdfQ==
@@ -8,7 +8,7 @@ import { inspect } from 'node:util';
8
8
  import { type Revivers } from '@workflow/core/serialization-format';
9
9
  /**
10
10
  * A function that resolves an encryption key for a run, or null to skip
11
- * decryption. Accepts a runId the resolver is responsible for looking
11
+ * decryption. Accepts a runId; the resolver is responsible for looking
12
12
  * up the WorkflowRun internally (with caching) if the World needs it.
13
13
  */
14
14
  export type EncryptionKeyResolver = ((runId: string) => Promise<Uint8Array | undefined>) | null;
@@ -50,7 +50,7 @@ export declare function isExpiredRef(value: unknown): value is ExpiredDataRef;
50
50
  * `RetryableError`, the built-in `Error` subclasses) would silently
51
51
  * disappear from CLI output: devalue throws "Unknown type X" for
52
52
  * unrecognized reduced types, and `hydrateResourceIO` swallows that error
53
- * and surfaces the raw `Uint8Array` payload to consumers which then
53
+ * and surfaces the raw `Uint8Array` payload to consumers, which then
54
54
  * shows up as `step.error` / `run.error` byte dumps instead of usable
55
55
  * `{ message, stack, … }` objects.
56
56
  *
@@ -113,7 +113,7 @@ const ERROR_REVIVER_KEYS = [
113
113
  * non-enumerable `toJSON` method. The runtime revivers return real `Error`
114
114
  * instances (good for `util.inspect`, `instanceof`, `toString`, etc.), but
115
115
  * `Error.prototype`'s `name` / `message` / `stack` / `cause` are
116
- * non-enumerable and would be dropped by `JSON.stringify` which is how
116
+ * non-enumerable and would be dropped by `JSON.stringify`, which is how
117
117
  * the CLI emits its `--json` output. Adding `toJSON` (which `JSON.stringify`
118
118
  * calls but `util.inspect` ignores) gives us the best of both worlds:
119
119
  * round-tripped errors render cleanly in both modes without the
@@ -160,7 +160,7 @@ function wrapErrorReviverWithToJSON(reviver) {
160
160
  * `RetryableError`, the built-in `Error` subclasses) would silently
161
161
  * disappear from CLI output: devalue throws "Unknown type X" for
162
162
  * unrecognized reduced types, and `hydrateResourceIO` swallows that error
163
- * and surfaces the raw `Uint8Array` payload to consumers which then
163
+ * and surfaces the raw `Uint8Array` payload to consumers, which then
164
164
  * shows up as `step.error` / `run.error` byte dumps instead of usable
165
165
  * `{ message, stack, … }` objects.
166
166
  *
@@ -185,7 +185,7 @@ export function getCLIRevivers() {
185
185
  // O11y-specific revivers (streams, step functions → display objects).
186
186
  ...observabilityRevivers,
187
187
  // Node `Request` / `Response` revivers that don't rely on running an
188
- // actual fetch handler used to render request/response IO inline.
188
+ // actual fetch handler, used to render request/response IO inline.
189
189
  Request: (value) => {
190
190
  // biome-ignore lint/complexity/useArrowFunction: arrow functions have no .prototype
191
191
  const ctor = { Request: function () { } }.Request;
@@ -289,7 +289,7 @@ async function maybeDecryptFields(resource, resolver) {
289
289
  if (message.includes('HTTP ')) {
290
290
  throw err;
291
291
  }
292
- // Decryption failed (bad key, corrupted ciphertext, etc.) fall back
292
+ // Decryption failed (bad key, corrupted ciphertext, etc.), so fall back
293
293
  // to showing encrypted placeholders instead of crashing the CLI.
294
294
  const { logger } = await import('../config/log.js');
295
295
  logger.warn(`Decryption failed for resource ${runId}: ${message}`);
@@ -345,4 +345,4 @@ export async function hydrateResourceIO(resource, keyResolver) {
345
345
  // Post-process: swap encrypted Uint8Arrays and expired stubs for CLI-styled objects
346
346
  return replaceEncryptedAndExpiredWithRef(hydrated);
347
347
  }
348
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlkcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbnNwZWN0L2h5ZHJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9FLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixJQUFJLHdCQUF3QixFQUM3QyxlQUFlLEVBQ2YsYUFBYSxFQUNiLFFBQVEsRUFDUixxQkFBcUIsRUFFckIsdUJBQXVCLEdBQ3hCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQVcxQixvREFBb0Q7QUFDcEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLFVBQVUsRUFDVixXQUFXLEVBRVgsZUFBZSxFQUVmLFVBQVUsR0FDWCxNQUFNLHFDQUFxQyxDQUFDO0FBRTdDLDhFQUE4RTtBQUM5RSwyQ0FBMkM7QUFDM0MsOEVBQThFO0FBRTlFOzs7R0FHRztBQUNILE1BQU0sbUJBQW9CLFNBQVEsZ0JBQWdCO0lBQ2hELENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUNkLE1BQWMsRUFDZCxPQUFtRDtRQUVuRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztR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aUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDTEktc3BlY2lmaWMgaHlkcmF0aW9uIGZvciBvMTF5IGRpc3BsYXkuXG4gKlxuICogTm9kZS5qcyByZXZpdmVycyB0aGF0IHVzZSBgQnVmZmVyLmZyb20oKWAgZm9yIGJhc2U2NCBkZWNvZGluZyBhbmQgYWRkXG4gKiBgdXRpbC5pbnNwZWN0LmN1c3RvbWAgdG8gQ2xhc3NJbnN0YW5jZVJlZiBmb3IgcHJldHR5IENMSSBvdXRwdXQuXG4gKi9cblxuaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJ25vZGU6dXRpbCc7XG5pbXBvcnQgeyBnZXRDb21tb25SZXZpdmVycywgbWF5YmVEZWNyeXB0IH0gZnJvbSAnQHdvcmtmbG93L2NvcmUvc2VyaWFsaXphdGlvbic7XG5pbXBvcnQge1xuICBDbGFzc0luc3RhbmNlUmVmLFxuICBleHRyYWN0Q2xhc3NOYW1lLFxuICBoeWRyYXRlUmVzb3VyY2VJTyBhcyBoeWRyYXRlUmVzb3VyY2VJT0dlbmVyaWMsXG4gIGlzRW5jcnlwdGVkRGF0YSxcbiAgaXNFeHBpcmVkU3R1YixcbiAgaXNSdW5SZWYsXG4gIG9ic2VydmFiaWxpdHlSZXZpdmVycyxcbiAgdHlwZSBSZXZpdmVycyxcbiAgc2VyaWFsaXplZEluc3RhbmNlVG9SZWYsXG59IGZyb20gJ0B3b3JrZmxvdy9jb3JlL3NlcmlhbGl6YXRpb24tZm9ybWF0JztcbmltcG9ydCB7IHBhcnNlQ2xhc3NOYW1lIH0gZnJvbSAnQHdvcmtmbG93L3V0aWxzL3BhcnNlLW5hbWUnO1xuaW1wb3J0IHsgZ2V0RXZlbnREYXRhUmVmRmllbGRzIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIGFuIGVuY3J5cHRpb24ga2V5IGZvciBhIHJ1biwgb3IgbnVsbCB0byBza2lwXG4gKiBkZWNyeXB0aW9uLiBBY2NlcHRzIGEgcnVuSWQg4oCUIHRoZSByZXNvbHZlciBpcyByZXNwb25zaWJsZSBmb3IgbG9va2luZ1xuICogdXAgdGhlIFdvcmtmbG93UnVuIGludGVybmFsbHkgKHdpdGggY2FjaGluZykgaWYgdGhlIFdvcmxkIG5lZWRzIGl0LlxuICovXG5leHBvcnQgdHlwZSBFbmNyeXB0aW9uS2V5UmVzb2x2ZXIgPVxuICB8ICgocnVuSWQ6IHN0cmluZykgPT4gUHJvbWlzZTxVaW50OEFycmF5IHwgdW5kZWZpbmVkPilcbiAgfCBudWxsO1xuXG4vLyBSZS1leHBvcnQgdHlwZXMgYW5kIHV0aWxpdGllcyB0aGF0IGNvbnN1bWVycyBuZWVkXG5leHBvcnQge1xuICBDTEFTU19JTlNUQU5DRV9SRUZfVFlQRSxcbiAgQ2xhc3NJbnN0YW5jZVJlZixcbiAgRU5DUllQVEVEX1BMQUNFSE9MREVSLFxuICBleHRyYWN0U3RyZWFtSWRzLFxuICBpc0NsYXNzSW5zdGFuY2VSZWYsXG4gIGlzRW5jcnlwdGVkRGF0YSxcbiAgaXNTdHJlYW1JZCxcbiAgaXNTdHJlYW1SZWYsXG4gIHR5cGUgUmV2aXZlcnMsXG4gIFNUUkVBTV9SRUZfVFlQRSxcbiAgdHlwZSBTdHJlYW1SZWYsXG4gIHRydW5jYXRlSWQsXG59IGZyb20gJ0B3b3JrZmxvdy9jb3JlL3NlcmlhbGl6YXRpb24tZm9ybWF0JztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDTEkgQ2xhc3NJbnN0YW5jZVJlZiB3aXRoIGluc3BlY3QuY3VzdG9tXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBFeHRlbmRlZCBDbGFzc0luc3RhbmNlUmVmIHdpdGggTm9kZS5qcyBgdXRpbC5pbnNwZWN0LmN1c3RvbWAgZm9yXG4gKiBwcmV0dHkgQ0xJIG91dHB1dDogYENsYXNzTmFtZUBmaWxlbmFtZSB7IC4uLmRhdGEgfWBcbiAqL1xuY2xhc3MgQ0xJQ2xhc3NJbnN0YW5jZVJlZiBleHRlbmRzIENsYXNzSW5zdGFuY2VSZWYge1xuICBbaW5zcGVjdC5jdXN0b21dKFxuICAgIF9kZXB0aDogbnVtYmVyLFxuICAgIG9wdGlvbnM6IGltcG9ydCgnbm9kZTp1dGlsJykuSW5zcGVjdE9wdGlvbnNTdHlsaXplZFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGFTdHIgPSBpbnNwZWN0KHRoaXMuZGF0YSwgeyAuLi5vcHRpb25zLCBkZXB0aDogb3B0aW9ucy5kZXB0aCB9KTtcbiAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUNsYXNzTmFtZSh0aGlzLmNsYXNzSWQpO1xuICAgIGNvbnN0IG1vZHVsZVNwZWNpZmllciA9IHBhcnNlZD8ubW9kdWxlU3BlY2lmaWVyID8/IHRoaXMuY2xhc3NJZDtcbiAgICBjb25zdCBmaWxlTmFtZSA9IG1vZHVsZVNwZWNpZmllci5zcGxpdCgnLycpLnBvcCgpID8/IG1vZHVsZVNwZWNpZmllcjtcbiAgICBjb25zdCBzdHlsZWRGaWxlTmFtZSA9IG9wdGlvbnMuc3R5bGl6ZVxuICAgICAgPyBvcHRpb25zLnN0eWxpemUoYEAke2ZpbGVOYW1lfWAsICd1bmRlZmluZWQnKVxuICAgICAgOiBgQCR7ZmlsZU5hbWV9YDtcbiAgICByZXR1cm4gYCR7dGhpcy5jbGFzc05hbWV9JHtzdHlsZWRGaWxlTmFtZX0gJHtkYXRhU3RyfWA7XG4gIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDTEkgZW5jcnlwdGVkIGRhdGEgcGxhY2Vob2xkZXIgd2l0aCBjdXN0b20gaW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogUGxhY2Vob2xkZXIgb2JqZWN0IGZvciBlbmNyeXB0ZWQgZGF0YSBmaWVsZHMgaW4gQ0xJIG91dHB1dC5cbiAqXG4gKiBVc2VzIGB1dGlsLmluc3BlY3QuY3VzdG9tYCB0byByZW5kZXIgYXMgYSBzdHlsZWQsIHVucXVvdGVkIHN0cmluZ1xuICogKGUuZy4sIGRpbSB5ZWxsb3cgXCLwn5SSIEVuY3J5cHRlZFwiKSBpbnN0ZWFkIG9mIGEgcGxhaW4gcXVvdGVkIHN0cmluZy5cbiAqIEFsc28gcHJvdmlkZXMgYHRvSlNPTigpYCBmb3IgYC0tanNvbmAgb3V0cHV0LlxuICovXG5jbGFzcyBFbmNyeXB0ZWREYXRhUmVmIHtcbiAgW2luc3BlY3QuY3VzdG9tXSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBjaGFsay5kaW0ueWVsbG93KCdcXHV7MUY1MTJ9IEVuY3J5cHRlZCcpO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdcXHV7MUY1MTJ9IEVuY3J5cHRlZCc7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiAnXFx1ezFGNTEyfSBFbmNyeXB0ZWQnO1xuICB9XG59XG5cbi8qKiBTaW5nbGV0b24gZW5jcnlwdGVkIGRhdGEgcGxhY2Vob2xkZXIgZm9yIENMSSBkaXNwbGF5ICovXG5jb25zdCBFTkNSWVBURURfUkVGID0gbmV3IEVuY3J5cHRlZERhdGFSZWYoKTtcblxuLyoqIENoZWNrIGlmIGEgdmFsdWUgaXMgYW4gRW5jcnlwdGVkRGF0YVJlZiAoZm9yIGN1c3RvbSB0YWJsZSBmb3JtYXR0aW5nIGluIENMSSkgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0VuY3J5cHRlZFJlZih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEVuY3J5cHRlZERhdGFSZWYge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBFbmNyeXB0ZWREYXRhUmVmO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENMSSBleHBpcmVkIGRhdGEgcGxhY2Vob2xkZXIgd2l0aCBjdXN0b20gaW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogUGxhY2Vob2xkZXIgb2JqZWN0IGZvciBleHBpcmVkIGRhdGEgZmllbGRzIGluIENMSSBvdXRwdXQuXG4gKlxuICogVXNlcyBgdXRpbC5pbnNwZWN0LmN1c3RvbWAgdG8gcmVuZGVyIGFzIGEgc3R5bGVkLCB1bnF1b3RlZCBzdHJpbmdcbiAqIChlLmcuLCBkaW0gZ3JheSBcIjxkYXRhIGV4cGlyZWQ+XCIpIGluc3RlYWQgb2YgYSByYXcgc3R1YiBvYmplY3QuXG4gKiBBbHNvIHByb3ZpZGVzIGB0b0pTT04oKWAgZm9yIGAtLWpzb25gIG91dHB1dC5cbiAqL1xuY2xhc3MgRXhwaXJlZERhdGFSZWYge1xuICBbaW5zcGVjdC5jdXN0b21dKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNoYWxrLmdyYXkoJzxkYXRhIGV4cGlyZWQ+Jyk7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJzxkYXRhIGV4cGlyZWQ+JztcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICc8ZGF0YSBleHBpcmVkPic7XG4gIH1cbn1cblxuLyoqIFNpbmdsZXRvbiBleHBpcmVkIGRhdGEgcGxhY2Vob2xkZXIgZm9yIENMSSBkaXNwbGF5ICovXG5jb25zdCBFWFBJUkVEX1JFRiA9IG5ldyBFeHBpcmVkRGF0YVJlZigpO1xuXG4vKiogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhbiBFeHBpcmVkRGF0YVJlZiAoZm9yIGN1c3RvbSB0YWJsZSBmb3JtYXR0aW5nIGluIENMSSkgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0V4cGlyZWRSZWYodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBFeHBpcmVkRGF0YVJlZiB7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEV4cGlyZWREYXRhUmVmO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENMSSByZXZpdmVycyAoTm9kZS5qcywgdXNlcyBCdWZmZXIpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBUaGUgc2V0IG9mIHJlZHVjZXIga2V5cyB3aG9zZSBgZ2V0Q29tbW9uUmV2aXZlcnMoKWAgb3V0cHV0IHByb2R1Y2VzIGFcbiAqIG5hdGl2ZSBgRXJyb3JgIGluc3RhbmNlLiBXZSB3cmFwIGVhY2ggb2YgdGhlc2Ugd2l0aCBhbiBhZGRpdGlvbmFsXG4gKiBgdG9KU09OYCBhdHRhY2htZW50IGluIENMSSBtb2RlIChzZWUgYHdyYXBFcnJvclJldml2ZXJXaXRoVG9KU09OYCkuXG4gKi9cbmNvbnN0IEVSUk9SX1JFVklWRVJfS0VZUyA9IFtcbiAgJ0FnZ3JlZ2F0ZUVycm9yJyxcbiAgJ0RPTUV4Y2VwdGlvbicsXG4gICdFcnJvcicsXG4gICdFdmFsRXJyb3InLFxuICAnRmF0YWxFcnJvcicsXG4gICdIb29rQ29uZmxpY3RFcnJvcicsXG4gICdSYW5nZUVycm9yJyxcbiAgJ1JlZmVyZW5jZUVycm9yJyxcbiAgJ1JldHJ5YWJsZUVycm9yJyxcbiAgJ1J1bnRpbWVEZWNyeXB0aW9uRXJyb3InLFxuICAnU3ludGF4RXJyb3InLFxuICAnVHlwZUVycm9yJyxcbiAgJ1VSSUVycm9yJyxcbl0gYXMgY29uc3Q7XG5cbi8qKlxuICogV3JhcHMgYSBydW50aW1lIEVycm9yIHJldml2ZXIgc28gdGhhdCB0aGUgcHJvZHVjZWQgaW5zdGFuY2UgY2FycmllcyBhXG4gKiBub24tZW51bWVyYWJsZSBgdG9KU09OYCBtZXRob2QuIFRoZSBydW50aW1lIHJldml2ZXJzIHJldHVybiByZWFsIGBFcnJvcmBcbiAqIGluc3RhbmNlcyAoZ29vZCBmb3IgYHV0aWwuaW5zcGVjdGAsIGBpbnN0YW5jZW9mYCwgYHRvU3RyaW5nYCwgZXRjLiksIGJ1dFxuICogYEVycm9yLnByb3RvdHlwZWAncyBgbmFtZWAgLyBgbWVzc2FnZWAgLyBgc3RhY2tgIC8gYGNhdXNlYCBhcmVcbiAqIG5vbi1lbnVtZXJhYmxlIGFuZCB3b3VsZCBiZSBkcm9wcGVkIGJ5IGBKU09OLnN0cmluZ2lmeWAg4oCUIHdoaWNoIGlzIGhvd1xuICogdGhlIENMSSBlbWl0cyBpdHMgYC0tanNvbmAgb3V0cHV0LiBBZGRpbmcgYHRvSlNPTmAgKHdoaWNoIGBKU09OLnN0cmluZ2lmeWBcbiAqIGNhbGxzIGJ1dCBgdXRpbC5pbnNwZWN0YCBpZ25vcmVzKSBnaXZlcyB1cyB0aGUgYmVzdCBvZiBib3RoIHdvcmxkczpcbiAqIHJvdW5kLXRyaXBwZWQgZXJyb3JzIHJlbmRlciBjbGVhbmx5IGluIGJvdGggbW9kZXMgd2l0aG91dCB0aGVcbiAqIGRhdGEtdmVyc3VzLWRpc3BsYXkgdHJhZGVvZmYgdGhhdCBwbGFpbi1vYmplY3QgcmV2aXZlcnMgd291bGQgZm9yY2UuXG4gKlxuICogU3ViY2xhc3Mtc3BlY2lmaWMgZW51bWVyYWJsZSBmaWVsZHMgKGUuZy4gYFJldHJ5YWJsZUVycm9yLnJldHJ5QWZ0ZXJgLFxuICogYEFnZ3JlZ2F0ZUVycm9yLmVycm9yc2AsIGBGYXRhbEVycm9yLmZhdGFsYCkgYXJlIHBpY2tlZCB1cCBhdXRvbWF0aWNhbGx5XG4gKiB2aWEgYE9iamVjdC5hc3NpZ25gIGFmdGVyIHRoZSBiYXNlIGZpZWxkcywgc28gd2UgZG9uJ3QgaGF2ZSB0byBlbnVtZXJhdGVcbiAqIHRoZW0gcGVyLXN1YmNsYXNzLlxuICovXG5mdW5jdGlvbiB3cmFwRXJyb3JSZXZpdmVyV2l0aFRvSlNPTihcbiAgcmV2aXZlcjogKHZhbHVlOiBhbnkpID0+IHVua25vd25cbik6ICh2YWx1ZTogYW55KSA9PiB1bmtub3duIHtcbiAgcmV0dXJuICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHJldml2ZXIodmFsdWUpO1xuICAgIGlmICghKHJlc3VsdCBpbnN0YW5jZW9mIEVycm9yKSkgcmV0dXJuIHJlc3VsdDtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzdWx0LCAndG9KU09OJywge1xuICAgICAgdmFsdWU6IGZ1bmN0aW9uICh0aGlzOiBFcnJvcikge1xuICAgICAgICBjb25zdCBqc29uOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgICAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLFxuICAgICAgICB9O1xuICAgICAgICBpZiAoJ2NhdXNlJyBpbiB0aGlzKSB7XG4gICAgICAgICAganNvbi5jYXVzZSA9ICh0aGlzIGFzIHsgY2F1c2U6IHVua25vd24gfSkuY2F1c2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUGljayB1cCBzdWJjbGFzcy1zcGVjaWZpYyBlbnVtZXJhYmxlIGZpZWxkcyAoZS5nLiBGYXRhbEVycm9yLmZhdGFsLFxuICAgICAgICAvLyBSZXRyeWFibGVFcnJvci5yZXRyeUFmdGVyLCBBZ2dyZWdhdGVFcnJvci5lcnJvcnMpLlxuICAgICAgICBPYmplY3QuYXNzaWduKGpzb24sIHRoaXMpO1xuICAgICAgICByZXR1cm4ganNvbjtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbi8qKlxuICogVGhlIHNldCBvZiByZXZpdmVycyB1c2VkIGJ5IENMSSBpbnNwZWN0IG91dHB1dC5cbiAqXG4gKiBCdWlsdCBvbiB0b3Agb2YgYGdldENvbW1vblJldml2ZXJzKClgIGZyb20gYEB3b3JrZmxvdy9jb3JlYCBzbyB0aGF0IHRoZVxuICogQ0xJIHN0YXlzIGluIHN5bmMgd2l0aCB0aGUgcnVudGltZSdzIHJldml2ZXIgc2V0IGF1dG9tYXRpY2FsbHkuIFdpdGhvdXRcbiAqIHRoaXMsIGV2ZXJ5IG5ldyByZXZpdmVyIGFkZGVkIHRvIGNvcmUgKGUuZy4gYEZhdGFsRXJyb3JgLFxuICogYFJldHJ5YWJsZUVycm9yYCwgdGhlIGJ1aWx0LWluIGBFcnJvcmAgc3ViY2xhc3Nlcykgd291bGQgc2lsZW50bHlcbiAqIGRpc2FwcGVhciBmcm9tIENMSSBvdXRwdXQ6IGRldmFsdWUgdGhyb3dzIFwiVW5rbm93biB0eXBlIFhcIiBmb3JcbiAqIHVucmVjb2duaXplZCByZWR1Y2VkIHR5cGVzLCBhbmQgYGh5ZHJhdGVSZXNvdXJjZUlPYCBzd2FsbG93cyB0aGF0IGVycm9yXG4gKiBhbmQgc3VyZmFjZXMgdGhlIHJhdyBgVWludDhBcnJheWAgcGF5bG9hZCB0byBjb25zdW1lcnMg4oCUIHdoaWNoIHRoZW5cbiAqIHNob3dzIHVwIGFzIGBzdGVwLmVycm9yYCAvIGBydW4uZXJyb3JgIGJ5dGUgZHVtcHMgaW5zdGVhZCBvZiB1c2FibGVcbiAqIGB7IG1lc3NhZ2UsIHN0YWNrLCDigKYgfWAgb2JqZWN0cy5cbiAqXG4gKiBPbiB0b3Agb2YgdGhlIGNvbW1vbiBzZXQgd2UgbGF5ZXI6XG4gKiAgIC0gQSBgdG9KU09OYCBzaGltIG9uIGVhY2ggRXJyb3IgcmV2aXZlciBzbyBub24tZW51bWVyYWJsZVxuICogICAgIGBFcnJvci5wcm90b3R5cGVgIGZpZWxkcyBzdXJ2aXZlIGBKU09OLnN0cmluZ2lmeWAgZm9yIGAtLWpzb25gIG91dHB1dFxuICogICAgIHdoaWxlIGxlYXZpbmcgYHV0aWwuaW5zcGVjdGAgcmVuZGVyaW5nIHVudG91Y2hlZFxuICogICAtIGBvYnNlcnZhYmlsaXR5UmV2aXZlcnNgIGZvciBzdHJlYW1zIC8gc3RlcCt3b3JrZmxvdyBmdW5jdGlvbiByZWZzXG4gKiAgIC0gQ0xJLXNwZWNpZmljIG92ZXJyaWRlcyB0aGF0IHByb2R1Y2UgZGlzcGxheS1mcmllbmRseSBwbGFjZWhvbGRlcnNcbiAqICAgICBmb3IgYENsYXNzYCAvIGBJbnN0YW5jZWAgKHRoZSBydW50aW1lIHZlcnNpb25zIG5lZWQgZnVsbCBjbGFzc1xuICogICAgIGlkZW50aXR5IHdoaWNoIHRoZSBDTEkgZG9lc24ndCBoYXZlIGFjY2VzcyB0bylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENMSVJldml2ZXJzKCk6IFJldml2ZXJzIHtcbiAgY29uc3QgYmFzZVJldml2ZXJzID0gZ2V0Q29tbW9uUmV2aXZlcnMoZ2xvYmFsVGhpcyk7XG4gIGNvbnN0IGVycm9yUmV2aXZlcnMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgRVJST1JfUkVWSVZFUl9LRVlTLmZsYXRNYXAoKGtleSkgPT4ge1xuICAgICAgY29uc3QgcmV2aXZlciA9IChiYXNlUmV2aXZlcnMgYXMgUmV2aXZlcnMpW2tleV07XG4gICAgICByZXR1cm4gcmV2aXZlciA/IFtba2V5LCB3cmFwRXJyb3JSZXZpdmVyV2l0aFRvSlNPTihyZXZpdmVyKV1dIDogW107XG4gICAgfSlcbiAgKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5iYXNlUmV2aXZlcnMsXG4gICAgLi4uZXJyb3JSZXZpdmVycyxcbiAgICAvLyBPMTF5LXNwZWNpZmljIHJldml2ZXJzIChzdHJlYW1zLCBzdGVwIGZ1bmN0aW9ucyDihpIgZGlzcGxheSBvYmplY3RzKS5cbiAgICAuLi5vYnNlcnZhYmlsaXR5UmV2aXZlcnMsXG4gICAgLy8gTm9kZSBgUmVxdWVzdGAgLyBgUmVzcG9uc2VgIHJldml2ZXJzIHRoYXQgZG9uJ3QgcmVseSBvbiBydW5uaW5nIGFuXG4gICAgLy8gYWN0dWFsIGZldGNoIGhhbmRsZXIg4oCUIHVzZWQgdG8gcmVuZGVyIHJlcXVlc3QvcmVzcG9uc2UgSU8gaW5saW5lLlxuICAgIFJlcXVlc3Q6ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29tcGxleGl0eS91c2VBcnJvd0Z1bmN0aW9uOiBhcnJvdyBmdW5jdGlvbnMgaGF2ZSBubyAucHJvdG90eXBlXG4gICAgICBjb25zdCBjdG9yID0geyBSZXF1ZXN0OiBmdW5jdGlvbiAoKSB7fSB9LlJlcXVlc3QhO1xuICAgICAgY29uc3Qgb2JqID0gT2JqZWN0LmNyZWF0ZShjdG9yLnByb3RvdHlwZSk7XG4gICAgICBPYmplY3QuYXNzaWduKG9iaiwge1xuICAgICAgICBtZXRob2Q6IHZhbHVlLm1ldGhvZCxcbiAgICAgICAgdXJsOiB2YWx1ZS51cmwsXG4gICAgICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHZhbHVlLmhlYWRlcnMpLFxuICAgICAgICBib2R5OiB2YWx1ZS5ib2R5LFxuICAgICAgICBkdXBsZXg6IHZhbHVlLmR1cGxleCxcbiAgICAgICAgLi4uKHZhbHVlLnJlc3BvbnNlV3JpdGFibGVcbiAgICAgICAgICA/IHsgcmVzcG9uc2VXcml0YWJsZTogdmFsdWUucmVzcG9uc2VXcml0YWJsZSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSxcbiAgICBSZXNwb25zZTogKHZhbHVlKSA9PiB7XG4gICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9jb21wbGV4aXR5L3VzZUFycm93RnVuY3Rpb246IGFycm93IGZ1bmN0aW9ucyBoYXZlIG5vIC5wcm90b3R5cGVcbiAgICAgIGNvbnN0IGN0b3IgPSB7IFJlc3BvbnNlOiBmdW5jdGlvbiAoKSB7fSB9LlJlc3BvbnNlITtcbiAgICAgIGNvbnN0IG9iaiA9IE9iamVjdC5jcmVhdGUoY3Rvci5wcm90b3R5cGUpO1xuICAgICAgT2JqZWN0LmFzc2lnbihvYmosIHtcbiAgICAgICAgc3RhdHVzOiB2YWx1ZS5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHZhbHVlLnN0YXR1c1RleHQsXG4gICAgICAgIHVybDogdmFsdWUudXJsLFxuICAgICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh2YWx1ZS5oZWFkZXJzKSxcbiAgICAgICAgYm9keTogdmFsdWUuYm9keSxcbiAgICAgICAgcmVkaXJlY3RlZDogdmFsdWUucmVkaXJlY3RlZCxcbiAgICAgICAgdHlwZTogdmFsdWUudHlwZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LFxuICAgIC8vIENMSS1zcGVjaWZpYyBvdmVycmlkZXMgZm9yIGNsYXNzIGluc3RhbmNlcyB3aXRoIGluc3BlY3QuY3VzdG9tXG4gICAgQ2xhc3M6ICh2YWx1ZSkgPT4gYDxjbGFzczoke2V4dHJhY3RDbGFzc05hbWUodmFsdWUuY2xhc3NJZCl9PmAsXG4gICAgSW5zdGFuY2U6ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gUnVuIGluc3RhbmNlcyBhcmUgcmVuZGVyZWQgYXMgUnVuUmVmIGZvciBjbGlja2FibGUgcmVuZGVyaW5nXG4gICAgICBjb25zdCBydW5SZWYgPSBzZXJpYWxpemVkSW5zdGFuY2VUb1JlZih2YWx1ZSk7XG4gICAgICBpZiAoaXNSdW5SZWYocnVuUmVmKSkge1xuICAgICAgICByZXR1cm4gcnVuUmVmO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBDTElDbGFzc0luc3RhbmNlUmVmKFxuICAgICAgICBleHRyYWN0Q2xhc3NOYW1lKHZhbHVlLmNsYXNzSWQpLFxuICAgICAgICB2YWx1ZS5jbGFzc0lkLFxuICAgICAgICB2YWx1ZS5kYXRhXG4gICAgICApO1xuICAgIH0sXG4gIH07XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUHJlLWJ1aWx0IENMSSByZXZpdmVycyAoY2FjaGVkKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmxldCBjYWNoZWRSZXZpdmVyczogUmV2aXZlcnMgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gZ2V0UmV2aXZlcnMoKTogUmV2aXZlcnMge1xuICBpZiAoIWNhY2hlZFJldml2ZXJzKSB7XG4gICAgY2FjaGVkUmV2aXZlcnMgPSBnZXRDTElSZXZpdmVycygpO1xuICB9XG4gIHJldHVybiBjYWNoZWRSZXZpdmVycztcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBEZWNyeXB0aW9uIGhlbHBlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFByZS1wcm9jZXNzIGEgcmVzb3VyY2UncyBkYXRhIGZpZWxkczogaWYgdGhlIHJlc29sdmVyIGlzIHByb3ZpZGVkIGFuZFxuICogdGhlIGZpZWxkIGlzIGVuY3J5cHRlZCwgZGVjcnlwdCBpdCBiZWZvcmUgZ2VuZXJpYyBoeWRyYXRpb24uXG4gKlxuICogVXNlcyBjb3JlJ3MgYG1heWJlRGVjcnlwdCgpYCB3aGljaCBoYW5kbGVzIHRoZSAnZW5jcicgcHJlZml4IHN0cmlwcGluZ1xuICogYW5kIEFFUy1HQ00gZGVjcnlwdGlvbiB0cmFuc3BhcmVudGx5LlxuICpcbiAqIFdoZW4gdGhlIHJlc29sdmVyIGlzIG51bGwgKG5vIC0tZGVjcnlwdCBmbGFnKSwgZW5jcnlwdGVkIGZpZWxkcyBwYXNzXG4gKiB0aHJvdWdoIGFzIFVpbnQ4QXJyYXkgYW5kIGFyZSByZXBsYWNlZCB3aXRoIEVuY3J5cHRlZERhdGFSZWYgaW4gcG9zdC1wcm9jZXNzaW5nLlxuICovXG5hc3luYyBmdW5jdGlvbiBtYXliZURlY3J5cHRGaWVsZHM8XG4gIFQgZXh0ZW5kcyB7XG4gICAgcnVuSWQ/OiBzdHJpbmc7XG4gICAgaW5wdXQ/OiBhbnk7XG4gICAgb3V0cHV0PzogYW55O1xuICAgIG1ldGFkYXRhPzogYW55O1xuICAgIGV2ZW50VHlwZT86IHN0cmluZztcbiAgICBldmVudERhdGE/OiBhbnk7XG4gIH0sXG4+KHJlc291cmNlOiBULCByZXNvbHZlcjogRW5jcnlwdGlvbktleVJlc29sdmVyKTogUHJvbWlzZTxUPiB7XG4gIGlmICghcmVzb2x2ZXIpIHJldHVybiByZXNvdXJjZTtcblxuICBjb25zdCBydW5JZCA9IChyZXNvdXJjZSBhcyBhbnkpLnJ1bklkIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgaWYgKCFydW5JZCkgcmV0dXJuIHJlc291cmNlO1xuXG4gIGNvbnN0IHJlc3VsdCA9IHsgLi4ucmVzb3VyY2UgfTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJhd0tleSA9IGF3YWl0IHJlc29sdmVyKHJ1bklkKTtcbiAgICAvLyBSZXNvbHZlIHRoZSBmdWxsIGtleSBjYXBhYmlsaXR5IHNvIGAtLWRlY3J5cHRgIGNhbiBvcGVuIHNlYWxlZFxuICAgIC8vICgnZW5jcCcpIHBheWxvYWRzIHRoYXQgb3RoZXIgcnVucyB3cm90ZSB0byB0aGlzIG9uZSwgbm90IGp1c3QgdGhlXG4gICAgLy8gcnVuJ3Mgb3duIHN5bW1ldHJpYyAoJ2VuY3InKSBwYXlsb2Fkcy5cbiAgICBjb25zdCB7IGRlcml2ZVJ1blBheWxvYWRLZXlzIH0gPSBhd2FpdCBpbXBvcnQoXG4gICAgICAnQHdvcmtmbG93L2NvcmUvc2VyaWFsaXphdGlvbidcbiAgICApO1xuICAgIGNvbnN0IGsgPSByYXdLZXkgPyBhd2FpdCBkZXJpdmVSdW5QYXlsb2FkS2V5cyhyYXdLZXkpIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gRGVjcnlwdCBpbnB1dC9vdXRwdXQvZXJyb3IgZmllbGRzIChXb3JrZmxvd1J1biwgU3RlcClcbiAgICByZXN1bHQuaW5wdXQgPSBhd2FpdCBtYXliZURlY3J5cHQocmVzdWx0LmlucHV0LCBrKTtcbiAgICByZXN1bHQub3V0cHV0ID0gYXdhaXQgbWF5YmVEZWNyeXB0KHJlc3VsdC5vdXRwdXQsIGspO1xuICAgIChyZXN1bHQgYXMgYW55KS5lcnJvciA9IGF3YWl0IG1heWJlRGVjcnlwdCgocmVzdWx0IGFzIGFueSkuZXJyb3IsIGspO1xuXG4gICAgLy8gRGVjcnlwdCBtZXRhZGF0YSBmaWVsZCAoSG9vaylcbiAgICByZXN1bHQubWV0YWRhdGEgPSBhd2FpdCBtYXliZURlY3J5cHQocmVzdWx0Lm1ldGFkYXRhLCBrKTtcblxuICAgIC8vIERlY3J5cHQgZXZlbnREYXRhIGZpZWxkcyAoRXZlbnQpXG4gICAgaWYgKHJlc3VsdC5ldmVudERhdGEgJiYgdHlwZW9mIHJlc3VsdC5ldmVudERhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBldmVudERhdGEgPSB7IC4uLnJlc3VsdC5ldmVudERhdGEgfTtcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgZ2V0RXZlbnREYXRhUmVmRmllbGRzKHJlc3VsdC5ldmVudFR5cGUgPz8gJycpKSB7XG4gICAgICAgIGV2ZW50RGF0YVtmaWVsZF0gPSBhd2FpdCBtYXliZURlY3J5cHQoZXZlbnREYXRhW2ZpZWxkXSwgayk7XG4gICAgICB9XG4gICAgICByZXN1bHQuZXZlbnREYXRhID0gZXZlbnREYXRhO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKTtcblxuICAgIC8vIElmIHRoZSBrZXkgZmV0Y2ggZmFpbGVkIGR1ZSB0byBhbiBIVFRQIGVycm9yIChlLmcuIDQyOSByYXRlIGxpbWl0LFxuICAgIC8vIDUwMCBzZXJ2ZXIgZXJyb3IpLCByZS10aHJvdyBzbyB0aGUgY2FsbGVyIHN1cmZhY2VzIGEgY2xlYXIgZmFpbHVyZVxuICAgIC8vIGluc3RlYWQgb2Ygc2lsZW50bHkgc2hvd2luZyBlbmNyeXB0ZWQgcGxhY2Vob2xkZXJzLlxuICAgIGlmIChtZXNzYWdlLmluY2x1ZGVzKCdIVFRQICcpKSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgLy8gRGVjcnlwdGlvbiBmYWlsZWQgKGJhZCBrZXksIGNvcnJ1cHRlZCBjaXBoZXJ0ZXh0LCBldGMuKSDigJQgZmFsbCBiYWNrXG4gICAgLy8gdG8gc2hvd2luZyBlbmNyeXB0ZWQgcGxhY2Vob2xkZXJzIGluc3RlYWQgb2YgY3Jhc2hpbmcgdGhlIENMSS5cbiAgICBjb25zdCB7IGxvZ2dlciB9ID0gYXdhaXQgaW1wb3J0KCcuLi9jb25maWcvbG9nLmpzJyk7XG4gICAgbG9nZ2VyLndhcm4oYERlY3J5cHRpb24gZmFpbGVkIGZvciByZXNvdXJjZSAke3J1bklkfTogJHttZXNzYWdlfWApO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQdWJsaWMgQVBJXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIFJlcGxhY2UgYSBzaW5nbGUgZmllbGQgdmFsdWUgd2l0aCBhIGRpc3BsYXkgcmVmIGlmIGl0J3MgZW5jcnlwdGVkIG9yIGV4cGlyZWQuICovXG5mdW5jdGlvbiB0b0Rpc3BsYXlSZWYodmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKGlzRW5jcnlwdGVkRGF0YSh2YWx1ZSkpIHJldHVybiBFTkNSWVBURURfUkVGO1xuICBpZiAoaXNFeHBpcmVkU3R1Yih2YWx1ZSkpIHJldHVybiBFWFBJUkVEX1JFRjtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIFJlcGxhY2UgZW5jcnlwdGVkIFVpbnQ4QXJyYXkgdmFsdWVzIGFuZCBleHBpcmVkIHN0dWJzIHdpdGggc3R5bGVkXG4gKiByZWYgb2JqZWN0cyBpbiBrbm93biBkYXRhIGZpZWxkcyBmb3IgY3VzdG9tIGluc3BlY3QgcmVuZGVyaW5nLlxuICovXG5mdW5jdGlvbiByZXBsYWNlRW5jcnlwdGVkQW5kRXhwaXJlZFdpdGhSZWY8VD4ocmVzb3VyY2U6IFQpOiBUIHtcbiAgaWYgKCFyZXNvdXJjZSB8fCB0eXBlb2YgcmVzb3VyY2UgIT09ICdvYmplY3QnKSByZXR1cm4gcmVzb3VyY2U7XG4gIGNvbnN0IHIgPSByZXNvdXJjZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgcmVzdWx0ID0geyAuLi5yIH07XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgWydpbnB1dCcsICdvdXRwdXQnLCAnbWV0YWRhdGEnLCAnZXJyb3InXSkge1xuICAgIHJlc3VsdFtrZXldID0gdG9EaXNwbGF5UmVmKHJlc3VsdFtrZXldKTtcbiAgfVxuXG4gIGlmIChyZXN1bHQuZXZlbnREYXRhICYmIHR5cGVvZiByZXN1bHQuZXZlbnREYXRhID09PSAnb2JqZWN0Jykge1xuICAgIGNvbnN0IGVkID0geyAuLi4ocmVzdWx0LmV2ZW50RGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgfTtcbiAgICBjb25zdCBldmVudFR5cGUgPVxuICAgICAgdHlwZW9mIHJlc3VsdC5ldmVudFR5cGUgPT09ICdzdHJpbmcnID8gcmVzdWx0LmV2ZW50VHlwZSA6ICcnO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGdldEV2ZW50RGF0YVJlZkZpZWxkcyhldmVudFR5cGUpKSB7XG4gICAgICBlZFtrZXldID0gdG9EaXNwbGF5UmVmKGVkW2tleV0pO1xuICAgIH1cbiAgICByZXN1bHQuZXZlbnREYXRhID0gZWQ7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0IGFzIFQ7XG59XG5cbi8qKlxuICogSHlkcmF0ZSB0aGUgc2VyaWFsaXplZCBkYXRhIGZpZWxkcyBvZiBhIHJlc291cmNlIGZvciBDTEkgZGlzcGxheS5cbiAqXG4gKiBXaGVuIGBlbmNyeXB0b3JSZXNvbHZlcmAgaXMgbnVsbCAoZGVmYXVsdCAvIG5vIC0tZGVjcnlwdCBmbGFnKSwgZW5jcnlwdGVkXG4gKiBmaWVsZHMgYXJlIHNob3duIGFzIHN0eWxlZCBcIvCflJIgRW5jcnlwdGVkXCIgcGxhY2Vob2xkZXJzIHZpYSBFbmNyeXB0ZWREYXRhUmVmLlxuICpcbiAqIFdoZW4gYGVuY3J5cHRvclJlc29sdmVyYCBpcyBwcm92aWRlZCAoLS1kZWNyeXB0IGZsYWcpLCBlbmNyeXB0ZWQgZmllbGRzXG4gKiBhcmUgZGVjcnlwdGVkIGJlZm9yZSBoeWRyYXRpb24gc28gdGhlIGFjdHVhbCB1c2VyIGRhdGEgaXMgZGlzcGxheWVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaHlkcmF0ZVJlc291cmNlSU88VD4oXG4gIHJlc291cmNlOiBULFxuICBrZXlSZXNvbHZlcj86IEVuY3J5cHRpb25LZXlSZXNvbHZlclxuKTogUHJvbWlzZTxUPiB7XG4gIC8vIFByZS1wcm9jZXNzOiBkZWNyeXB0IGFueSBlbmNyeXB0ZWQgZmllbGRzIHdoZW4gYSByZXNvbHZlciBpcyBwcm92aWRlZFxuICBjb25zdCBwcmVwcm9jZXNzZWQgPSBhd2FpdCBtYXliZURlY3J5cHRGaWVsZHMoXG4gICAgcmVzb3VyY2UgYXMgYW55LFxuICAgIGtleVJlc29sdmVyID8/IG51bGxcbiAgKTtcbiAgY29uc3QgaHlkcmF0ZWQgPSBoeWRyYXRlUmVzb3VyY2VJT0dlbmVyaWMocHJlcHJvY2Vzc2VkLCBnZXRSZXZpdmVycygpKSBhcyBUO1xuICAvLyBQb3N0LXByb2Nlc3M6IHN3YXAgZW5jcnlwdGVkIFVpbnQ4QXJyYXlzIGFuZCBleHBpcmVkIHN0dWJzIGZvciBDTEktc3R5bGVkIG9iamVjdHNcbiAgcmV0dXJuIHJlcGxhY2VFbmNyeXB0ZWRBbmRFeHBpcmVkV2l0aFJlZihoeWRyYXRlZCk7XG59XG4iXX0=
348
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlkcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbnNwZWN0L2h5ZHJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9FLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixJQUFJLHdCQUF3QixFQUM3QyxlQUFlLEVBQ2YsYUFBYSxFQUNiLFFBQVEsRUFDUixxQkFBcUIsRUFFckIsdUJBQXVCLEdBQ3hCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQVcxQixvREFBb0Q7QUFDcEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLFVBQVUsRUFDVixXQUFXLEVBRVgsZUFBZSxFQUVmLFVBQVUsR0FDWCxNQUFNLHFDQUFxQyxDQUFDO0FBRTdDLDhFQUE4RTtBQUM5RSwyQ0FBMkM7QUFDM0MsOEVBQThFO0FBRTlFOzs7R0FHRztBQUNILE1BQU0sbUJBQW9CLFNBQVEsZ0JBQWdCO0lBQ2hELENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUNkLE1BQWMsRUFDZCxPQUFtRDtRQUVuRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztR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aUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDTEktc3BlY2lmaWMgaHlkcmF0aW9uIGZvciBvMTF5IGRpc3BsYXkuXG4gKlxuICogTm9kZS5qcyByZXZpdmVycyB0aGF0IHVzZSBgQnVmZmVyLmZyb20oKWAgZm9yIGJhc2U2NCBkZWNvZGluZyBhbmQgYWRkXG4gKiBgdXRpbC5pbnNwZWN0LmN1c3RvbWAgdG8gQ2xhc3NJbnN0YW5jZVJlZiBmb3IgcHJldHR5IENMSSBvdXRwdXQuXG4gKi9cblxuaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJ25vZGU6dXRpbCc7XG5pbXBvcnQgeyBnZXRDb21tb25SZXZpdmVycywgbWF5YmVEZWNyeXB0IH0gZnJvbSAnQHdvcmtmbG93L2NvcmUvc2VyaWFsaXphdGlvbic7XG5pbXBvcnQge1xuICBDbGFzc0luc3RhbmNlUmVmLFxuICBleHRyYWN0Q2xhc3NOYW1lLFxuICBoeWRyYXRlUmVzb3VyY2VJTyBhcyBoeWRyYXRlUmVzb3VyY2VJT0dlbmVyaWMsXG4gIGlzRW5jcnlwdGVkRGF0YSxcbiAgaXNFeHBpcmVkU3R1YixcbiAgaXNSdW5SZWYsXG4gIG9ic2VydmFiaWxpdHlSZXZpdmVycyxcbiAgdHlwZSBSZXZpdmVycyxcbiAgc2VyaWFsaXplZEluc3RhbmNlVG9SZWYsXG59IGZyb20gJ0B3b3JrZmxvdy9jb3JlL3NlcmlhbGl6YXRpb24tZm9ybWF0JztcbmltcG9ydCB7IHBhcnNlQ2xhc3NOYW1lIH0gZnJvbSAnQHdvcmtmbG93L3V0aWxzL3BhcnNlLW5hbWUnO1xuaW1wb3J0IHsgZ2V0RXZlbnREYXRhUmVmRmllbGRzIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIGFuIGVuY3J5cHRpb24ga2V5IGZvciBhIHJ1biwgb3IgbnVsbCB0byBza2lwXG4gKiBkZWNyeXB0aW9uLiBBY2NlcHRzIGEgcnVuSWQ7IHRoZSByZXNvbHZlciBpcyByZXNwb25zaWJsZSBmb3IgbG9va2luZ1xuICogdXAgdGhlIFdvcmtmbG93UnVuIGludGVybmFsbHkgKHdpdGggY2FjaGluZykgaWYgdGhlIFdvcmxkIG5lZWRzIGl0LlxuICovXG5leHBvcnQgdHlwZSBFbmNyeXB0aW9uS2V5UmVzb2x2ZXIgPVxuICB8ICgocnVuSWQ6IHN0cmluZykgPT4gUHJvbWlzZTxVaW50OEFycmF5IHwgdW5kZWZpbmVkPilcbiAgfCBudWxsO1xuXG4vLyBSZS1leHBvcnQgdHlwZXMgYW5kIHV0aWxpdGllcyB0aGF0IGNvbnN1bWVycyBuZWVkXG5leHBvcnQge1xuICBDTEFTU19JTlNUQU5DRV9SRUZfVFlQRSxcbiAgQ2xhc3NJbnN0YW5jZVJlZixcbiAgRU5DUllQVEVEX1BMQUNFSE9MREVSLFxuICBleHRyYWN0U3RyZWFtSWRzLFxuICBpc0NsYXNzSW5zdGFuY2VSZWYsXG4gIGlzRW5jcnlwdGVkRGF0YSxcbiAgaXNTdHJlYW1JZCxcbiAgaXNTdHJlYW1SZWYsXG4gIHR5cGUgUmV2aXZlcnMsXG4gIFNUUkVBTV9SRUZfVFlQRSxcbiAgdHlwZSBTdHJlYW1SZWYsXG4gIHRydW5jYXRlSWQsXG59IGZyb20gJ0B3b3JrZmxvdy9jb3JlL3NlcmlhbGl6YXRpb24tZm9ybWF0JztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDTEkgQ2xhc3NJbnN0YW5jZVJlZiB3aXRoIGluc3BlY3QuY3VzdG9tXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBFeHRlbmRlZCBDbGFzc0luc3RhbmNlUmVmIHdpdGggTm9kZS5qcyBgdXRpbC5pbnNwZWN0LmN1c3RvbWAgZm9yXG4gKiBwcmV0dHkgQ0xJIG91dHB1dDogYENsYXNzTmFtZUBmaWxlbmFtZSB7IC4uLmRhdGEgfWBcbiAqL1xuY2xhc3MgQ0xJQ2xhc3NJbnN0YW5jZVJlZiBleHRlbmRzIENsYXNzSW5zdGFuY2VSZWYge1xuICBbaW5zcGVjdC5jdXN0b21dKFxuICAgIF9kZXB0aDogbnVtYmVyLFxuICAgIG9wdGlvbnM6IGltcG9ydCgnbm9kZTp1dGlsJykuSW5zcGVjdE9wdGlvbnNTdHlsaXplZFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGFTdHIgPSBpbnNwZWN0KHRoaXMuZGF0YSwgeyAuLi5vcHRpb25zLCBkZXB0aDogb3B0aW9ucy5kZXB0aCB9KTtcbiAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUNsYXNzTmFtZSh0aGlzLmNsYXNzSWQpO1xuICAgIGNvbnN0IG1vZHVsZVNwZWNpZmllciA9IHBhcnNlZD8ubW9kdWxlU3BlY2lmaWVyID8/IHRoaXMuY2xhc3NJZDtcbiAgICBjb25zdCBmaWxlTmFtZSA9IG1vZHVsZVNwZWNpZmllci5zcGxpdCgnLycpLnBvcCgpID8/IG1vZHVsZVNwZWNpZmllcjtcbiAgICBjb25zdCBzdHlsZWRGaWxlTmFtZSA9IG9wdGlvbnMuc3R5bGl6ZVxuICAgICAgPyBvcHRpb25zLnN0eWxpemUoYEAke2ZpbGVOYW1lfWAsICd1bmRlZmluZWQnKVxuICAgICAgOiBgQCR7ZmlsZU5hbWV9YDtcbiAgICByZXR1cm4gYCR7dGhpcy5jbGFzc05hbWV9JHtzdHlsZWRGaWxlTmFtZX0gJHtkYXRhU3RyfWA7XG4gIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDTEkgZW5jcnlwdGVkIGRhdGEgcGxhY2Vob2xkZXIgd2l0aCBjdXN0b20gaW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogUGxhY2Vob2xkZXIgb2JqZWN0IGZvciBlbmNyeXB0ZWQgZGF0YSBmaWVsZHMgaW4gQ0xJIG91dHB1dC5cbiAqXG4gKiBVc2VzIGB1dGlsLmluc3BlY3QuY3VzdG9tYCB0byByZW5kZXIgYXMgYSBzdHlsZWQsIHVucXVvdGVkIHN0cmluZ1xuICogKGUuZy4sIGRpbSB5ZWxsb3cgXCLwn5SSIEVuY3J5cHRlZFwiKSBpbnN0ZWFkIG9mIGEgcGxhaW4gcXVvdGVkIHN0cmluZy5cbiAqIEFsc28gcHJvdmlkZXMgYHRvSlNPTigpYCBmb3IgYC0tanNvbmAgb3V0cHV0LlxuICovXG5jbGFzcyBFbmNyeXB0ZWREYXRhUmVmIHtcbiAgW2luc3BlY3QuY3VzdG9tXSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBjaGFsay5kaW0ueWVsbG93KCdcXHV7MUY1MTJ9IEVuY3J5cHRlZCcpO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdcXHV7MUY1MTJ9IEVuY3J5cHRlZCc7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiAnXFx1ezFGNTEyfSBFbmNyeXB0ZWQnO1xuICB9XG59XG5cbi8qKiBTaW5nbGV0b24gZW5jcnlwdGVkIGRhdGEgcGxhY2Vob2xkZXIgZm9yIENMSSBkaXNwbGF5ICovXG5jb25zdCBFTkNSWVBURURfUkVGID0gbmV3IEVuY3J5cHRlZERhdGFSZWYoKTtcblxuLyoqIENoZWNrIGlmIGEgdmFsdWUgaXMgYW4gRW5jcnlwdGVkRGF0YVJlZiAoZm9yIGN1c3RvbSB0YWJsZSBmb3JtYXR0aW5nIGluIENMSSkgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0VuY3J5cHRlZFJlZih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEVuY3J5cHRlZERhdGFSZWYge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBFbmNyeXB0ZWREYXRhUmVmO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENMSSBleHBpcmVkIGRhdGEgcGxhY2Vob2xkZXIgd2l0aCBjdXN0b20gaW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogUGxhY2Vob2xkZXIgb2JqZWN0IGZvciBleHBpcmVkIGRhdGEgZmllbGRzIGluIENMSSBvdXRwdXQuXG4gKlxuICogVXNlcyBgdXRpbC5pbnNwZWN0LmN1c3RvbWAgdG8gcmVuZGVyIGFzIGEgc3R5bGVkLCB1bnF1b3RlZCBzdHJpbmdcbiAqIChlLmcuLCBkaW0gZ3JheSBcIjxkYXRhIGV4cGlyZWQ+XCIpIGluc3RlYWQgb2YgYSByYXcgc3R1YiBvYmplY3QuXG4gKiBBbHNvIHByb3ZpZGVzIGB0b0pTT04oKWAgZm9yIGAtLWpzb25gIG91dHB1dC5cbiAqL1xuY2xhc3MgRXhwaXJlZERhdGFSZWYge1xuICBbaW5zcGVjdC5jdXN0b21dKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNoYWxrLmdyYXkoJzxkYXRhIGV4cGlyZWQ+Jyk7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJzxkYXRhIGV4cGlyZWQ+JztcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICc8ZGF0YSBleHBpcmVkPic7XG4gIH1cbn1cblxuLyoqIFNpbmdsZXRvbiBleHBpcmVkIGRhdGEgcGxhY2Vob2xkZXIgZm9yIENMSSBkaXNwbGF5ICovXG5jb25zdCBFWFBJUkVEX1JFRiA9IG5ldyBFeHBpcmVkRGF0YVJlZigpO1xuXG4vKiogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhbiBFeHBpcmVkRGF0YVJlZiAoZm9yIGN1c3RvbSB0YWJsZSBmb3JtYXR0aW5nIGluIENMSSkgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0V4cGlyZWRSZWYodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBFeHBpcmVkRGF0YVJlZiB7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEV4cGlyZWREYXRhUmVmO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENMSSByZXZpdmVycyAoTm9kZS5qcywgdXNlcyBCdWZmZXIpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBUaGUgc2V0IG9mIHJlZHVjZXIga2V5cyB3aG9zZSBgZ2V0Q29tbW9uUmV2aXZlcnMoKWAgb3V0cHV0IHByb2R1Y2VzIGFcbiAqIG5hdGl2ZSBgRXJyb3JgIGluc3RhbmNlLiBXZSB3cmFwIGVhY2ggb2YgdGhlc2Ugd2l0aCBhbiBhZGRpdGlvbmFsXG4gKiBgdG9KU09OYCBhdHRhY2htZW50IGluIENMSSBtb2RlIChzZWUgYHdyYXBFcnJvclJldml2ZXJXaXRoVG9KU09OYCkuXG4gKi9cbmNvbnN0IEVSUk9SX1JFVklWRVJfS0VZUyA9IFtcbiAgJ0FnZ3JlZ2F0ZUVycm9yJyxcbiAgJ0RPTUV4Y2VwdGlvbicsXG4gICdFcnJvcicsXG4gICdFdmFsRXJyb3InLFxuICAnRmF0YWxFcnJvcicsXG4gICdIb29rQ29uZmxpY3RFcnJvcicsXG4gICdSYW5nZUVycm9yJyxcbiAgJ1JlZmVyZW5jZUVycm9yJyxcbiAgJ1JldHJ5YWJsZUVycm9yJyxcbiAgJ1J1bnRpbWVEZWNyeXB0aW9uRXJyb3InLFxuICAnU3ludGF4RXJyb3InLFxuICAnVHlwZUVycm9yJyxcbiAgJ1VSSUVycm9yJyxcbl0gYXMgY29uc3Q7XG5cbi8qKlxuICogV3JhcHMgYSBydW50aW1lIEVycm9yIHJldml2ZXIgc28gdGhhdCB0aGUgcHJvZHVjZWQgaW5zdGFuY2UgY2FycmllcyBhXG4gKiBub24tZW51bWVyYWJsZSBgdG9KU09OYCBtZXRob2QuIFRoZSBydW50aW1lIHJldml2ZXJzIHJldHVybiByZWFsIGBFcnJvcmBcbiAqIGluc3RhbmNlcyAoZ29vZCBmb3IgYHV0aWwuaW5zcGVjdGAsIGBpbnN0YW5jZW9mYCwgYHRvU3RyaW5nYCwgZXRjLiksIGJ1dFxuICogYEVycm9yLnByb3RvdHlwZWAncyBgbmFtZWAgLyBgbWVzc2FnZWAgLyBgc3RhY2tgIC8gYGNhdXNlYCBhcmVcbiAqIG5vbi1lbnVtZXJhYmxlIGFuZCB3b3VsZCBiZSBkcm9wcGVkIGJ5IGBKU09OLnN0cmluZ2lmeWAsIHdoaWNoIGlzIGhvd1xuICogdGhlIENMSSBlbWl0cyBpdHMgYC0tanNvbmAgb3V0cHV0LiBBZGRpbmcgYHRvSlNPTmAgKHdoaWNoIGBKU09OLnN0cmluZ2lmeWBcbiAqIGNhbGxzIGJ1dCBgdXRpbC5pbnNwZWN0YCBpZ25vcmVzKSBnaXZlcyB1cyB0aGUgYmVzdCBvZiBib3RoIHdvcmxkczpcbiAqIHJvdW5kLXRyaXBwZWQgZXJyb3JzIHJlbmRlciBjbGVhbmx5IGluIGJvdGggbW9kZXMgd2l0aG91dCB0aGVcbiAqIGRhdGEtdmVyc3VzLWRpc3BsYXkgdHJhZGVvZmYgdGhhdCBwbGFpbi1vYmplY3QgcmV2aXZlcnMgd291bGQgZm9yY2UuXG4gKlxuICogU3ViY2xhc3Mtc3BlY2lmaWMgZW51bWVyYWJsZSBmaWVsZHMgKGUuZy4gYFJldHJ5YWJsZUVycm9yLnJldHJ5QWZ0ZXJgLFxuICogYEFnZ3JlZ2F0ZUVycm9yLmVycm9yc2AsIGBGYXRhbEVycm9yLmZhdGFsYCkgYXJlIHBpY2tlZCB1cCBhdXRvbWF0aWNhbGx5XG4gKiB2aWEgYE9iamVjdC5hc3NpZ25gIGFmdGVyIHRoZSBiYXNlIGZpZWxkcywgc28gd2UgZG9uJ3QgaGF2ZSB0byBlbnVtZXJhdGVcbiAqIHRoZW0gcGVyLXN1YmNsYXNzLlxuICovXG5mdW5jdGlvbiB3cmFwRXJyb3JSZXZpdmVyV2l0aFRvSlNPTihcbiAgcmV2aXZlcjogKHZhbHVlOiBhbnkpID0+IHVua25vd25cbik6ICh2YWx1ZTogYW55KSA9PiB1bmtub3duIHtcbiAgcmV0dXJuICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHJldml2ZXIodmFsdWUpO1xuICAgIGlmICghKHJlc3VsdCBpbnN0YW5jZW9mIEVycm9yKSkgcmV0dXJuIHJlc3VsdDtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzdWx0LCAndG9KU09OJywge1xuICAgICAgdmFsdWU6IGZ1bmN0aW9uICh0aGlzOiBFcnJvcikge1xuICAgICAgICBjb25zdCBqc29uOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgICAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLFxuICAgICAgICB9O1xuICAgICAgICBpZiAoJ2NhdXNlJyBpbiB0aGlzKSB7XG4gICAgICAgICAganNvbi5jYXVzZSA9ICh0aGlzIGFzIHsgY2F1c2U6IHVua25vd24gfSkuY2F1c2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUGljayB1cCBzdWJjbGFzcy1zcGVjaWZpYyBlbnVtZXJhYmxlIGZpZWxkcyAoZS5nLiBGYXRhbEVycm9yLmZhdGFsLFxuICAgICAgICAvLyBSZXRyeWFibGVFcnJvci5yZXRyeUFmdGVyLCBBZ2dyZWdhdGVFcnJvci5lcnJvcnMpLlxuICAgICAgICBPYmplY3QuYXNzaWduKGpzb24sIHRoaXMpO1xuICAgICAgICByZXR1cm4ganNvbjtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbi8qKlxuICogVGhlIHNldCBvZiByZXZpdmVycyB1c2VkIGJ5IENMSSBpbnNwZWN0IG91dHB1dC5cbiAqXG4gKiBCdWlsdCBvbiB0b3Agb2YgYGdldENvbW1vblJldml2ZXJzKClgIGZyb20gYEB3b3JrZmxvdy9jb3JlYCBzbyB0aGF0IHRoZVxuICogQ0xJIHN0YXlzIGluIHN5bmMgd2l0aCB0aGUgcnVudGltZSdzIHJldml2ZXIgc2V0IGF1dG9tYXRpY2FsbHkuIFdpdGhvdXRcbiAqIHRoaXMsIGV2ZXJ5IG5ldyByZXZpdmVyIGFkZGVkIHRvIGNvcmUgKGUuZy4gYEZhdGFsRXJyb3JgLFxuICogYFJldHJ5YWJsZUVycm9yYCwgdGhlIGJ1aWx0LWluIGBFcnJvcmAgc3ViY2xhc3Nlcykgd291bGQgc2lsZW50bHlcbiAqIGRpc2FwcGVhciBmcm9tIENMSSBvdXRwdXQ6IGRldmFsdWUgdGhyb3dzIFwiVW5rbm93biB0eXBlIFhcIiBmb3JcbiAqIHVucmVjb2duaXplZCByZWR1Y2VkIHR5cGVzLCBhbmQgYGh5ZHJhdGVSZXNvdXJjZUlPYCBzd2FsbG93cyB0aGF0IGVycm9yXG4gKiBhbmQgc3VyZmFjZXMgdGhlIHJhdyBgVWludDhBcnJheWAgcGF5bG9hZCB0byBjb25zdW1lcnMsIHdoaWNoIHRoZW5cbiAqIHNob3dzIHVwIGFzIGBzdGVwLmVycm9yYCAvIGBydW4uZXJyb3JgIGJ5dGUgZHVtcHMgaW5zdGVhZCBvZiB1c2FibGVcbiAqIGB7IG1lc3NhZ2UsIHN0YWNrLCDigKYgfWAgb2JqZWN0cy5cbiAqXG4gKiBPbiB0b3Agb2YgdGhlIGNvbW1vbiBzZXQgd2UgbGF5ZXI6XG4gKiAgIC0gQSBgdG9KU09OYCBzaGltIG9uIGVhY2ggRXJyb3IgcmV2aXZlciBzbyBub24tZW51bWVyYWJsZVxuICogICAgIGBFcnJvci5wcm90b3R5cGVgIGZpZWxkcyBzdXJ2aXZlIGBKU09OLnN0cmluZ2lmeWAgZm9yIGAtLWpzb25gIG91dHB1dFxuICogICAgIHdoaWxlIGxlYXZpbmcgYHV0aWwuaW5zcGVjdGAgcmVuZGVyaW5nIHVudG91Y2hlZFxuICogICAtIGBvYnNlcnZhYmlsaXR5UmV2aXZlcnNgIGZvciBzdHJlYW1zIC8gc3RlcCt3b3JrZmxvdyBmdW5jdGlvbiByZWZzXG4gKiAgIC0gQ0xJLXNwZWNpZmljIG92ZXJyaWRlcyB0aGF0IHByb2R1Y2UgZGlzcGxheS1mcmllbmRseSBwbGFjZWhvbGRlcnNcbiAqICAgICBmb3IgYENsYXNzYCAvIGBJbnN0YW5jZWAgKHRoZSBydW50aW1lIHZlcnNpb25zIG5lZWQgZnVsbCBjbGFzc1xuICogICAgIGlkZW50aXR5IHdoaWNoIHRoZSBDTEkgZG9lc24ndCBoYXZlIGFjY2VzcyB0bylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENMSVJldml2ZXJzKCk6IFJldml2ZXJzIHtcbiAgY29uc3QgYmFzZVJldml2ZXJzID0gZ2V0Q29tbW9uUmV2aXZlcnMoZ2xvYmFsVGhpcyk7XG4gIGNvbnN0IGVycm9yUmV2aXZlcnMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgRVJST1JfUkVWSVZFUl9LRVlTLmZsYXRNYXAoKGtleSkgPT4ge1xuICAgICAgY29uc3QgcmV2aXZlciA9IChiYXNlUmV2aXZlcnMgYXMgUmV2aXZlcnMpW2tleV07XG4gICAgICByZXR1cm4gcmV2aXZlciA/IFtba2V5LCB3cmFwRXJyb3JSZXZpdmVyV2l0aFRvSlNPTihyZXZpdmVyKV1dIDogW107XG4gICAgfSlcbiAgKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5iYXNlUmV2aXZlcnMsXG4gICAgLi4uZXJyb3JSZXZpdmVycyxcbiAgICAvLyBPMTF5LXNwZWNpZmljIHJldml2ZXJzIChzdHJlYW1zLCBzdGVwIGZ1bmN0aW9ucyDihpIgZGlzcGxheSBvYmplY3RzKS5cbiAgICAuLi5vYnNlcnZhYmlsaXR5UmV2aXZlcnMsXG4gICAgLy8gTm9kZSBgUmVxdWVzdGAgLyBgUmVzcG9uc2VgIHJldml2ZXJzIHRoYXQgZG9uJ3QgcmVseSBvbiBydW5uaW5nIGFuXG4gICAgLy8gYWN0dWFsIGZldGNoIGhhbmRsZXIsIHVzZWQgdG8gcmVuZGVyIHJlcXVlc3QvcmVzcG9uc2UgSU8gaW5saW5lLlxuICAgIFJlcXVlc3Q6ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29tcGxleGl0eS91c2VBcnJvd0Z1bmN0aW9uOiBhcnJvdyBmdW5jdGlvbnMgaGF2ZSBubyAucHJvdG90eXBlXG4gICAgICBjb25zdCBjdG9yID0geyBSZXF1ZXN0OiBmdW5jdGlvbiAoKSB7fSB9LlJlcXVlc3QhO1xuICAgICAgY29uc3Qgb2JqID0gT2JqZWN0LmNyZWF0ZShjdG9yLnByb3RvdHlwZSk7XG4gICAgICBPYmplY3QuYXNzaWduKG9iaiwge1xuICAgICAgICBtZXRob2Q6IHZhbHVlLm1ldGhvZCxcbiAgICAgICAgdXJsOiB2YWx1ZS51cmwsXG4gICAgICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHZhbHVlLmhlYWRlcnMpLFxuICAgICAgICBib2R5OiB2YWx1ZS5ib2R5LFxuICAgICAgICBkdXBsZXg6IHZhbHVlLmR1cGxleCxcbiAgICAgICAgLi4uKHZhbHVlLnJlc3BvbnNlV3JpdGFibGVcbiAgICAgICAgICA/IHsgcmVzcG9uc2VXcml0YWJsZTogdmFsdWUucmVzcG9uc2VXcml0YWJsZSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSxcbiAgICBSZXNwb25zZTogKHZhbHVlKSA9PiB7XG4gICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9jb21wbGV4aXR5L3VzZUFycm93RnVuY3Rpb246IGFycm93IGZ1bmN0aW9ucyBoYXZlIG5vIC5wcm90b3R5cGVcbiAgICAgIGNvbnN0IGN0b3IgPSB7IFJlc3BvbnNlOiBmdW5jdGlvbiAoKSB7fSB9LlJlc3BvbnNlITtcbiAgICAgIGNvbnN0IG9iaiA9IE9iamVjdC5jcmVhdGUoY3Rvci5wcm90b3R5cGUpO1xuICAgICAgT2JqZWN0LmFzc2lnbihvYmosIHtcbiAgICAgICAgc3RhdHVzOiB2YWx1ZS5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHZhbHVlLnN0YXR1c1RleHQsXG4gICAgICAgIHVybDogdmFsdWUudXJsLFxuICAgICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh2YWx1ZS5oZWFkZXJzKSxcbiAgICAgICAgYm9keTogdmFsdWUuYm9keSxcbiAgICAgICAgcmVkaXJlY3RlZDogdmFsdWUucmVkaXJlY3RlZCxcbiAgICAgICAgdHlwZTogdmFsdWUudHlwZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LFxuICAgIC8vIENMSS1zcGVjaWZpYyBvdmVycmlkZXMgZm9yIGNsYXNzIGluc3RhbmNlcyB3aXRoIGluc3BlY3QuY3VzdG9tXG4gICAgQ2xhc3M6ICh2YWx1ZSkgPT4gYDxjbGFzczoke2V4dHJhY3RDbGFzc05hbWUodmFsdWUuY2xhc3NJZCl9PmAsXG4gICAgSW5zdGFuY2U6ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gUnVuIGluc3RhbmNlcyBhcmUgcmVuZGVyZWQgYXMgUnVuUmVmIGZvciBjbGlja2FibGUgcmVuZGVyaW5nXG4gICAgICBjb25zdCBydW5SZWYgPSBzZXJpYWxpemVkSW5zdGFuY2VUb1JlZih2YWx1ZSk7XG4gICAgICBpZiAoaXNSdW5SZWYocnVuUmVmKSkge1xuICAgICAgICByZXR1cm4gcnVuUmVmO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBDTElDbGFzc0luc3RhbmNlUmVmKFxuICAgICAgICBleHRyYWN0Q2xhc3NOYW1lKHZhbHVlLmNsYXNzSWQpLFxuICAgICAgICB2YWx1ZS5jbGFzc0lkLFxuICAgICAgICB2YWx1ZS5kYXRhXG4gICAgICApO1xuICAgIH0sXG4gIH07XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUHJlLWJ1aWx0IENMSSByZXZpdmVycyAoY2FjaGVkKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmxldCBjYWNoZWRSZXZpdmVyczogUmV2aXZlcnMgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gZ2V0UmV2aXZlcnMoKTogUmV2aXZlcnMge1xuICBpZiAoIWNhY2hlZFJldml2ZXJzKSB7XG4gICAgY2FjaGVkUmV2aXZlcnMgPSBnZXRDTElSZXZpdmVycygpO1xuICB9XG4gIHJldHVybiBjYWNoZWRSZXZpdmVycztcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBEZWNyeXB0aW9uIGhlbHBlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFByZS1wcm9jZXNzIGEgcmVzb3VyY2UncyBkYXRhIGZpZWxkczogaWYgdGhlIHJlc29sdmVyIGlzIHByb3ZpZGVkIGFuZFxuICogdGhlIGZpZWxkIGlzIGVuY3J5cHRlZCwgZGVjcnlwdCBpdCBiZWZvcmUgZ2VuZXJpYyBoeWRyYXRpb24uXG4gKlxuICogVXNlcyBjb3JlJ3MgYG1heWJlRGVjcnlwdCgpYCB3aGljaCBoYW5kbGVzIHRoZSAnZW5jcicgcHJlZml4IHN0cmlwcGluZ1xuICogYW5kIEFFUy1HQ00gZGVjcnlwdGlvbiB0cmFuc3BhcmVudGx5LlxuICpcbiAqIFdoZW4gdGhlIHJlc29sdmVyIGlzIG51bGwgKG5vIC0tZGVjcnlwdCBmbGFnKSwgZW5jcnlwdGVkIGZpZWxkcyBwYXNzXG4gKiB0aHJvdWdoIGFzIFVpbnQ4QXJyYXkgYW5kIGFyZSByZXBsYWNlZCB3aXRoIEVuY3J5cHRlZERhdGFSZWYgaW4gcG9zdC1wcm9jZXNzaW5nLlxuICovXG5hc3luYyBmdW5jdGlvbiBtYXliZURlY3J5cHRGaWVsZHM8XG4gIFQgZXh0ZW5kcyB7XG4gICAgcnVuSWQ/OiBzdHJpbmc7XG4gICAgaW5wdXQ/OiBhbnk7XG4gICAgb3V0cHV0PzogYW55O1xuICAgIG1ldGFkYXRhPzogYW55O1xuICAgIGV2ZW50VHlwZT86IHN0cmluZztcbiAgICBldmVudERhdGE/OiBhbnk7XG4gIH0sXG4+KHJlc291cmNlOiBULCByZXNvbHZlcjogRW5jcnlwdGlvbktleVJlc29sdmVyKTogUHJvbWlzZTxUPiB7XG4gIGlmICghcmVzb2x2ZXIpIHJldHVybiByZXNvdXJjZTtcblxuICBjb25zdCBydW5JZCA9IChyZXNvdXJjZSBhcyBhbnkpLnJ1bklkIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgaWYgKCFydW5JZCkgcmV0dXJuIHJlc291cmNlO1xuXG4gIGNvbnN0IHJlc3VsdCA9IHsgLi4ucmVzb3VyY2UgfTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJhd0tleSA9IGF3YWl0IHJlc29sdmVyKHJ1bklkKTtcbiAgICAvLyBSZXNvbHZlIHRoZSBmdWxsIGtleSBjYXBhYmlsaXR5IHNvIGAtLWRlY3J5cHRgIGNhbiBvcGVuIHNlYWxlZFxuICAgIC8vICgnZW5jcCcpIHBheWxvYWRzIHRoYXQgb3RoZXIgcnVucyB3cm90ZSB0byB0aGlzIG9uZSwgbm90IGp1c3QgdGhlXG4gICAgLy8gcnVuJ3Mgb3duIHN5bW1ldHJpYyAoJ2VuY3InKSBwYXlsb2Fkcy5cbiAgICBjb25zdCB7IGRlcml2ZVJ1blBheWxvYWRLZXlzIH0gPSBhd2FpdCBpbXBvcnQoXG4gICAgICAnQHdvcmtmbG93L2NvcmUvc2VyaWFsaXphdGlvbidcbiAgICApO1xuICAgIGNvbnN0IGsgPSByYXdLZXkgPyBhd2FpdCBkZXJpdmVSdW5QYXlsb2FkS2V5cyhyYXdLZXkpIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gRGVjcnlwdCBpbnB1dC9vdXRwdXQvZXJyb3IgZmllbGRzIChXb3JrZmxvd1J1biwgU3RlcClcbiAgICByZXN1bHQuaW5wdXQgPSBhd2FpdCBtYXliZURlY3J5cHQocmVzdWx0LmlucHV0LCBrKTtcbiAgICByZXN1bHQub3V0cHV0ID0gYXdhaXQgbWF5YmVEZWNyeXB0KHJlc3VsdC5vdXRwdXQsIGspO1xuICAgIChyZXN1bHQgYXMgYW55KS5lcnJvciA9IGF3YWl0IG1heWJlRGVjcnlwdCgocmVzdWx0IGFzIGFueSkuZXJyb3IsIGspO1xuXG4gICAgLy8gRGVjcnlwdCBtZXRhZGF0YSBmaWVsZCAoSG9vaylcbiAgICByZXN1bHQubWV0YWRhdGEgPSBhd2FpdCBtYXliZURlY3J5cHQocmVzdWx0Lm1ldGFkYXRhLCBrKTtcblxuICAgIC8vIERlY3J5cHQgZXZlbnREYXRhIGZpZWxkcyAoRXZlbnQpXG4gICAgaWYgKHJlc3VsdC5ldmVudERhdGEgJiYgdHlwZW9mIHJlc3VsdC5ldmVudERhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBldmVudERhdGEgPSB7IC4uLnJlc3VsdC5ldmVudERhdGEgfTtcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgZ2V0RXZlbnREYXRhUmVmRmllbGRzKHJlc3VsdC5ldmVudFR5cGUgPz8gJycpKSB7XG4gICAgICAgIGV2ZW50RGF0YVtmaWVsZF0gPSBhd2FpdCBtYXliZURlY3J5cHQoZXZlbnREYXRhW2ZpZWxkXSwgayk7XG4gICAgICB9XG4gICAgICByZXN1bHQuZXZlbnREYXRhID0gZXZlbnREYXRhO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKTtcblxuICAgIC8vIElmIHRoZSBrZXkgZmV0Y2ggZmFpbGVkIGR1ZSB0byBhbiBIVFRQIGVycm9yIChlLmcuIDQyOSByYXRlIGxpbWl0LFxuICAgIC8vIDUwMCBzZXJ2ZXIgZXJyb3IpLCByZS10aHJvdyBzbyB0aGUgY2FsbGVyIHN1cmZhY2VzIGEgY2xlYXIgZmFpbHVyZVxuICAgIC8vIGluc3RlYWQgb2Ygc2lsZW50bHkgc2hvd2luZyBlbmNyeXB0ZWQgcGxhY2Vob2xkZXJzLlxuICAgIGlmIChtZXNzYWdlLmluY2x1ZGVzKCdIVFRQICcpKSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgLy8gRGVjcnlwdGlvbiBmYWlsZWQgKGJhZCBrZXksIGNvcnJ1cHRlZCBjaXBoZXJ0ZXh0LCBldGMuKSwgc28gZmFsbCBiYWNrXG4gICAgLy8gdG8gc2hvd2luZyBlbmNyeXB0ZWQgcGxhY2Vob2xkZXJzIGluc3RlYWQgb2YgY3Jhc2hpbmcgdGhlIENMSS5cbiAgICBjb25zdCB7IGxvZ2dlciB9ID0gYXdhaXQgaW1wb3J0KCcuLi9jb25maWcvbG9nLmpzJyk7XG4gICAgbG9nZ2VyLndhcm4oYERlY3J5cHRpb24gZmFpbGVkIGZvciByZXNvdXJjZSAke3J1bklkfTogJHttZXNzYWdlfWApO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQdWJsaWMgQVBJXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIFJlcGxhY2UgYSBzaW5nbGUgZmllbGQgdmFsdWUgd2l0aCBhIGRpc3BsYXkgcmVmIGlmIGl0J3MgZW5jcnlwdGVkIG9yIGV4cGlyZWQuICovXG5mdW5jdGlvbiB0b0Rpc3BsYXlSZWYodmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKGlzRW5jcnlwdGVkRGF0YSh2YWx1ZSkpIHJldHVybiBFTkNSWVBURURfUkVGO1xuICBpZiAoaXNFeHBpcmVkU3R1Yih2YWx1ZSkpIHJldHVybiBFWFBJUkVEX1JFRjtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIFJlcGxhY2UgZW5jcnlwdGVkIFVpbnQ4QXJyYXkgdmFsdWVzIGFuZCBleHBpcmVkIHN0dWJzIHdpdGggc3R5bGVkXG4gKiByZWYgb2JqZWN0cyBpbiBrbm93biBkYXRhIGZpZWxkcyBmb3IgY3VzdG9tIGluc3BlY3QgcmVuZGVyaW5nLlxuICovXG5mdW5jdGlvbiByZXBsYWNlRW5jcnlwdGVkQW5kRXhwaXJlZFdpdGhSZWY8VD4ocmVzb3VyY2U6IFQpOiBUIHtcbiAgaWYgKCFyZXNvdXJjZSB8fCB0eXBlb2YgcmVzb3VyY2UgIT09ICdvYmplY3QnKSByZXR1cm4gcmVzb3VyY2U7XG4gIGNvbnN0IHIgPSByZXNvdXJjZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgcmVzdWx0ID0geyAuLi5yIH07XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgWydpbnB1dCcsICdvdXRwdXQnLCAnbWV0YWRhdGEnLCAnZXJyb3InXSkge1xuICAgIHJlc3VsdFtrZXldID0gdG9EaXNwbGF5UmVmKHJlc3VsdFtrZXldKTtcbiAgfVxuXG4gIGlmIChyZXN1bHQuZXZlbnREYXRhICYmIHR5cGVvZiByZXN1bHQuZXZlbnREYXRhID09PSAnb2JqZWN0Jykge1xuICAgIGNvbnN0IGVkID0geyAuLi4ocmVzdWx0LmV2ZW50RGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgfTtcbiAgICBjb25zdCBldmVudFR5cGUgPVxuICAgICAgdHlwZW9mIHJlc3VsdC5ldmVudFR5cGUgPT09ICdzdHJpbmcnID8gcmVzdWx0LmV2ZW50VHlwZSA6ICcnO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGdldEV2ZW50RGF0YVJlZkZpZWxkcyhldmVudFR5cGUpKSB7XG4gICAgICBlZFtrZXldID0gdG9EaXNwbGF5UmVmKGVkW2tleV0pO1xuICAgIH1cbiAgICByZXN1bHQuZXZlbnREYXRhID0gZWQ7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0IGFzIFQ7XG59XG5cbi8qKlxuICogSHlkcmF0ZSB0aGUgc2VyaWFsaXplZCBkYXRhIGZpZWxkcyBvZiBhIHJlc291cmNlIGZvciBDTEkgZGlzcGxheS5cbiAqXG4gKiBXaGVuIGBlbmNyeXB0b3JSZXNvbHZlcmAgaXMgbnVsbCAoZGVmYXVsdCAvIG5vIC0tZGVjcnlwdCBmbGFnKSwgZW5jcnlwdGVkXG4gKiBmaWVsZHMgYXJlIHNob3duIGFzIHN0eWxlZCBcIvCflJIgRW5jcnlwdGVkXCIgcGxhY2Vob2xkZXJzIHZpYSBFbmNyeXB0ZWREYXRhUmVmLlxuICpcbiAqIFdoZW4gYGVuY3J5cHRvclJlc29sdmVyYCBpcyBwcm92aWRlZCAoLS1kZWNyeXB0IGZsYWcpLCBlbmNyeXB0ZWQgZmllbGRzXG4gKiBhcmUgZGVjcnlwdGVkIGJlZm9yZSBoeWRyYXRpb24gc28gdGhlIGFjdHVhbCB1c2VyIGRhdGEgaXMgZGlzcGxheWVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaHlkcmF0ZVJlc291cmNlSU88VD4oXG4gIHJlc291cmNlOiBULFxuICBrZXlSZXNvbHZlcj86IEVuY3J5cHRpb25LZXlSZXNvbHZlclxuKTogUHJvbWlzZTxUPiB7XG4gIC8vIFByZS1wcm9jZXNzOiBkZWNyeXB0IGFueSBlbmNyeXB0ZWQgZmllbGRzIHdoZW4gYSByZXNvbHZlciBpcyBwcm92aWRlZFxuICBjb25zdCBwcmVwcm9jZXNzZWQgPSBhd2FpdCBtYXliZURlY3J5cHRGaWVsZHMoXG4gICAgcmVzb3VyY2UgYXMgYW55LFxuICAgIGtleVJlc29sdmVyID8/IG51bGxcbiAgKTtcbiAgY29uc3QgaHlkcmF0ZWQgPSBoeWRyYXRlUmVzb3VyY2VJT0dlbmVyaWMocHJlcHJvY2Vzc2VkLCBnZXRSZXZpdmVycygpKSBhcyBUO1xuICAvLyBQb3N0LXByb2Nlc3M6IHN3YXAgZW5jcnlwdGVkIFVpbnQ4QXJyYXlzIGFuZCBleHBpcmVkIHN0dWJzIGZvciBDTEktc3R5bGVkIG9iamVjdHNcbiAgcmV0dXJuIHJlcGxhY2VFbmNyeXB0ZWRBbmRFeHBpcmVkV2l0aFJlZihoeWRyYXRlZCk7XG59XG4iXX0=