@sendly/cli 3.13.0 → 3.14.0

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.
Files changed (38) hide show
  1. package/dist/commands/campaigns/clone.d.ts +14 -0
  2. package/dist/commands/campaigns/clone.js +47 -0
  3. package/dist/commands/campaigns/create.js +7 -6
  4. package/dist/commands/campaigns/delete.js +3 -3
  5. package/dist/commands/campaigns/get.js +28 -18
  6. package/dist/commands/campaigns/list.js +7 -8
  7. package/dist/commands/campaigns/preview.js +16 -5
  8. package/dist/commands/campaigns/schedule.js +6 -4
  9. package/dist/commands/campaigns/send.js +27 -9
  10. package/dist/commands/campaigns/update.d.ts +17 -0
  11. package/dist/commands/campaigns/update.js +66 -0
  12. package/dist/commands/contacts/import.d.ts +14 -0
  13. package/dist/commands/contacts/import.js +132 -0
  14. package/dist/commands/contacts/lists/get.d.ts +13 -0
  15. package/dist/commands/contacts/lists/get.js +63 -0
  16. package/dist/commands/contacts/lists/update.d.ts +15 -0
  17. package/dist/commands/contacts/lists/update.js +51 -0
  18. package/dist/commands/contacts/update.d.ts +15 -0
  19. package/dist/commands/contacts/update.js +52 -0
  20. package/dist/commands/status.js +3 -3
  21. package/dist/commands/teams/create.d.ts +12 -0
  22. package/dist/commands/teams/create.js +58 -0
  23. package/dist/commands/teams/current.d.ts +10 -0
  24. package/dist/commands/teams/current.js +33 -0
  25. package/dist/commands/teams/invite.d.ts +14 -0
  26. package/dist/commands/teams/invite.js +48 -0
  27. package/dist/commands/teams/list.d.ts +10 -0
  28. package/dist/commands/teams/list.js +71 -0
  29. package/dist/commands/teams/members.d.ts +10 -0
  30. package/dist/commands/teams/members.js +66 -0
  31. package/dist/commands/teams/switch.d.ts +13 -0
  32. package/dist/commands/teams/switch.js +86 -0
  33. package/dist/commands/whoami.js +7 -2
  34. package/dist/lib/api-client.js +5 -1
  35. package/dist/lib/config.d.ts +11 -0
  36. package/dist/lib/config.js +25 -1
  37. package/oclif.manifest.json +2540 -727
  38. package/package.json +4 -1
@@ -0,0 +1,86 @@
1
+ import { Args } from "@oclif/core";
2
+ import { AuthenticatedCommand } from "../../lib/base-command.js";
3
+ import { apiClient } from "../../lib/api-client.js";
4
+ import { success, json, colors, isJsonMode, } from "../../lib/output.js";
5
+ import { setCurrentOrg, clearCurrentOrg, getCurrentOrg } from "../../lib/config.js";
6
+ import { isCI } from "../../lib/config.js";
7
+ export default class TeamsSwitch extends AuthenticatedCommand {
8
+ static description = "Switch the active team";
9
+ static examples = [
10
+ "<%= config.bin %> teams switch",
11
+ "<%= config.bin %> teams switch <org-id-or-slug>",
12
+ "<%= config.bin %> teams switch --clear",
13
+ ];
14
+ static args = {
15
+ org: Args.string({
16
+ description: "Organization ID or slug to switch to",
17
+ required: false,
18
+ }),
19
+ };
20
+ static flags = {
21
+ ...AuthenticatedCommand.baseFlags,
22
+ };
23
+ async run() {
24
+ const { args } = await this.parse(TeamsSwitch);
25
+ if (args.org === "clear" || args.org === "none" || args.org === "personal") {
26
+ clearCurrentOrg();
27
+ if (isJsonMode()) {
28
+ json({ cleared: true });
29
+ return;
30
+ }
31
+ success("Switched to personal account");
32
+ return;
33
+ }
34
+ const orgs = await apiClient.get("/api/organizations");
35
+ if (args.org) {
36
+ const match = orgs.find((o) => o.id === args.org ||
37
+ o.slug === args.org ||
38
+ o.name.toLowerCase() === args.org.toLowerCase());
39
+ if (!match) {
40
+ this.error(`Team not found: ${args.org}`);
41
+ }
42
+ setCurrentOrg(match.id, match.name, match.slug);
43
+ if (isJsonMode()) {
44
+ json({ id: match.id, name: match.name, slug: match.slug });
45
+ return;
46
+ }
47
+ success(`Switched to ${colors.primary(match.name)}`);
48
+ return;
49
+ }
50
+ if (isCI()) {
51
+ this.error("Interactive mode not available in CI. Pass an org ID or slug as argument.");
52
+ }
53
+ const { default: inquirer } = await import("inquirer");
54
+ const currentOrg = getCurrentOrg();
55
+ const choices = orgs.map((o) => ({
56
+ name: `${o.name}${o.role ? ` (${o.role})` : ""}${o.isPersonal ? " — personal" : ""}`,
57
+ value: o.id,
58
+ }));
59
+ const { orgId } = await inquirer.prompt([
60
+ {
61
+ type: "list",
62
+ name: "orgId",
63
+ message: "Select a team:",
64
+ choices,
65
+ default: currentOrg?.id,
66
+ },
67
+ ]);
68
+ const selected = orgs.find((o) => o.id === orgId);
69
+ if (selected.isPersonal) {
70
+ clearCurrentOrg();
71
+ if (isJsonMode()) {
72
+ json({ cleared: true });
73
+ return;
74
+ }
75
+ success("Switched to personal account");
76
+ return;
77
+ }
78
+ setCurrentOrg(selected.id, selected.name, selected.slug);
79
+ if (isJsonMode()) {
80
+ json({ id: selected.id, name: selected.name, slug: selected.slug });
81
+ return;
82
+ }
83
+ success(`Switched to ${colors.primary(selected.name)}`);
84
+ }
85
+ }
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3RlYW1zL3N3aXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsT0FBTyxFQUNQLElBQUksRUFFSixNQUFNLEVBQ04sVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBVTNDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sV0FBWSxTQUFRLG9CQUFvQjtJQUMzRCxNQUFNLENBQUMsV0FBVyxHQUFHLHdCQUF3QixDQUFDO0lBRTlDLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsZ0NBQWdDO1FBQ2hDLGlEQUFpRDtRQUNqRCx3Q0FBd0M7S0FDekMsQ0FBQztJQUVGLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDWixHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNmLFdBQVcsRUFBRSxzQ0FBc0M7WUFDbkQsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQztLQUNILENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO0tBQ2xDLENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFL0MsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLE9BQU8s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LENBQUUsQ0FBQztRQUVuRCxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN4QixlQUFlLEVBQUUsQ0FBQztZQUNsQixJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUN4QixPQUFPO1lBQ1QsQ0FBQztZQUNELE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1lBQ3hDLE9BQU87UUFDVCxDQUFDO1FBRUQsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekQsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNwRSxPQUFPO1FBQ1QsQ0FBQztRQUVELE9BQU8sQ0FBQyxlQUFlLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQge1xuICBzdWNjZXNzLFxuICBqc29uLFxuICBpbmZvLFxuICBjb2xvcnMsXG4gIGlzSnNvbk1vZGUsXG59IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5pbXBvcnQgeyBzZXRDdXJyZW50T3JnLCBjbGVhckN1cnJlbnRPcmcsIGdldEN1cnJlbnRPcmcgfSBmcm9tIFwiLi4vLi4vbGliL2NvbmZpZy5qc1wiO1xuaW1wb3J0IHsgaXNDSSB9IGZyb20gXCIuLi8uLi9saWIvY29uZmlnLmpzXCI7XG5cbmludGVyZmFjZSBPcmdhbml6YXRpb24ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNsdWc6IHN0cmluZztcbiAgcm9sZTogc3RyaW5nO1xuICBpc1BlcnNvbmFsOiBib29sZWFuO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWFtc1N3aXRjaCBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJTd2l0Y2ggdGhlIGFjdGl2ZSB0ZWFtXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gdGVhbXMgc3dpdGNoXCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiB0ZWFtcyBzd2l0Y2ggPG9yZy1pZC1vci1zbHVnPlwiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gdGVhbXMgc3dpdGNoIC0tY2xlYXJcIixcbiAgXTtcblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICBvcmc6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIk9yZ2FuaXphdGlvbiBJRCBvciBzbHVnIHRvIHN3aXRjaCB0b1wiLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShUZWFtc1N3aXRjaCk7XG5cbiAgICBpZiAoYXJncy5vcmcgPT09IFwiY2xlYXJcIiB8fCBhcmdzLm9yZyA9PT0gXCJub25lXCIgfHwgYXJncy5vcmcgPT09IFwicGVyc29uYWxcIikge1xuICAgICAgY2xlYXJDdXJyZW50T3JnKCk7XG4gICAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICAgIGpzb24oeyBjbGVhcmVkOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzdWNjZXNzKFwiU3dpdGNoZWQgdG8gcGVyc29uYWwgYWNjb3VudFwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcmdzID0gYXdhaXQgYXBpQ2xpZW50LmdldDxPcmdhbml6YXRpb25bXT4oXCIvYXBpL29yZ2FuaXphdGlvbnNcIik7XG5cbiAgICBpZiAoYXJncy5vcmcpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gb3Jncy5maW5kKFxuICAgICAgICAobykgPT5cbiAgICAgICAgICBvLmlkID09PSBhcmdzLm9yZyB8fFxuICAgICAgICAgIG8uc2x1ZyA9PT0gYXJncy5vcmcgfHxcbiAgICAgICAgICBvLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gYXJncy5vcmchLnRvTG93ZXJDYXNlKCksXG4gICAgICApO1xuICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICB0aGlzLmVycm9yKGBUZWFtIG5vdCBmb3VuZDogJHthcmdzLm9yZ31gKTtcbiAgICAgIH1cbiAgICAgIHNldEN1cnJlbnRPcmcobWF0Y2guaWQsIG1hdGNoLm5hbWUsIG1hdGNoLnNsdWcpO1xuICAgICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAgICBqc29uKHsgaWQ6IG1hdGNoLmlkLCBuYW1lOiBtYXRjaC5uYW1lLCBzbHVnOiBtYXRjaC5zbHVnIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzdWNjZXNzKGBTd2l0Y2hlZCB0byAke2NvbG9ycy5wcmltYXJ5KG1hdGNoLm5hbWUpfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc0NJKCkpIHtcbiAgICAgIHRoaXMuZXJyb3IoXCJJbnRlcmFjdGl2ZSBtb2RlIG5vdCBhdmFpbGFibGUgaW4gQ0kuIFBhc3MgYW4gb3JnIElEIG9yIHNsdWcgYXMgYXJndW1lbnQuXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZGVmYXVsdDogaW5xdWlyZXIgfSA9IGF3YWl0IGltcG9ydChcImlucXVpcmVyXCIpO1xuXG4gICAgY29uc3QgY3VycmVudE9yZyA9IGdldEN1cnJlbnRPcmcoKTtcbiAgICBjb25zdCBjaG9pY2VzID0gb3Jncy5tYXAoKG8pID0+ICh7XG4gICAgICBuYW1lOiBgJHtvLm5hbWV9JHtvLnJvbGUgPyBgICgke28ucm9sZX0pYCA6IFwiXCJ9JHtvLmlzUGVyc29uYWwgPyBcIiDigJQgcGVyc29uYWxcIiA6IFwiXCJ9YCxcbiAgICAgIHZhbHVlOiBvLmlkLFxuICAgIH0pKTtcblxuICAgIGNvbnN0IHsgb3JnSWQgfSA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwibGlzdFwiLFxuICAgICAgICBuYW1lOiBcIm9yZ0lkXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiU2VsZWN0IGEgdGVhbTpcIixcbiAgICAgICAgY2hvaWNlcyxcbiAgICAgICAgZGVmYXVsdDogY3VycmVudE9yZz8uaWQsXG4gICAgICB9LFxuICAgIF0pO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBvcmdzLmZpbmQoKG8pID0+IG8uaWQgPT09IG9yZ0lkKSE7XG5cbiAgICBpZiAoc2VsZWN0ZWQuaXNQZXJzb25hbCkge1xuICAgICAgY2xlYXJDdXJyZW50T3JnKCk7XG4gICAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICAgIGpzb24oeyBjbGVhcmVkOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzdWNjZXNzKFwiU3dpdGNoZWQgdG8gcGVyc29uYWwgYWNjb3VudFwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXRDdXJyZW50T3JnKHNlbGVjdGVkLmlkLCBzZWxlY3RlZC5uYW1lLCBzZWxlY3RlZC5zbHVnKTtcblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24oeyBpZDogc2VsZWN0ZWQuaWQsIG5hbWU6IHNlbGVjdGVkLm5hbWUsIHNsdWc6IHNlbGVjdGVkLnNsdWcgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3VjY2VzcyhgU3dpdGNoZWQgdG8gJHtjb2xvcnMucHJpbWFyeShzZWxlY3RlZC5uYW1lKX1gKTtcbiAgfVxufVxuIl19
@@ -1,7 +1,7 @@
1
1
  import { BaseCommand } from "../lib/base-command.js";
2
2
  import { getAuthInfo } from "../lib/auth.js";
3
3
  import { success, info, keyValue, colors, json } from "../lib/output.js";
4
- import { getConfigValue, getConfigPath } from "../lib/config.js";
4
+ import { getConfigValue, getConfigPath, getCurrentOrg } from "../lib/config.js";
5
5
  export default class Whoami extends BaseCommand {
6
6
  static description = "Show current authentication status";
7
7
  static examples = ["<%= config.bin %> whoami"];
@@ -11,6 +11,7 @@ export default class Whoami extends BaseCommand {
11
11
  async run() {
12
12
  const { flags } = await this.parse(Whoami);
13
13
  const authInfo = await getAuthInfo();
14
+ const org = getCurrentOrg();
14
15
  if (flags.json) {
15
16
  json({
16
17
  authenticated: authInfo.authenticated,
@@ -19,6 +20,7 @@ export default class Whoami extends BaseCommand {
19
20
  environment: authInfo.environment,
20
21
  keyType: authInfo.keyType,
21
22
  configPath: getConfigPath(),
23
+ organization: org ? { id: org.id, name: org.name, slug: org.slug } : null,
22
24
  });
23
25
  return;
24
26
  }
@@ -48,8 +50,11 @@ export default class Whoami extends BaseCommand {
48
50
  if (baseUrl && baseUrl !== "https://sendly.live") {
49
51
  displayData["Server"] = colors.dim(baseUrl);
50
52
  }
53
+ if (org) {
54
+ displayData["Team"] = colors.primary(org.name) + colors.dim(` (${org.id})`);
55
+ }
51
56
  displayData["Config"] = colors.dim(getConfigPath());
52
57
  keyValue(displayData);
53
58
  }
54
59
  }
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hvYW1pLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3dob2FtaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRSxNQUFNLENBQUMsT0FBTyxPQUFPLE1BQU8sU0FBUSxXQUFXO0lBQzdDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsb0NBQW9DLENBQUM7SUFFMUQsTUFBTSxDQUFDLFFBQVEsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFFL0MsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsV0FBVyxDQUFDLFNBQVM7S0FDekIsQ0FBQztJQUVGLEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUzQyxNQUFNLFFBQVEsR0FBRyxNQUFNLFdBQVcsRUFBRSxDQUFDO1FBRXJDLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDO2dCQUNILGFBQWEsRUFBRSxRQUFRLENBQUMsYUFBYTtnQkFDckMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO2dCQUNyQixNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07Z0JBQ3ZCLFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVztnQkFDakMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO2dCQUN6QixVQUFVLEVBQUUsYUFBYSxFQUFFO2FBQzVCLENBQUMsQ0FBQztZQUNILE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDdEIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDcEUsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRWQsTUFBTSxXQUFXLEdBQTJCLEVBQUUsQ0FBQztRQUUvQywrRUFBK0U7UUFDL0UsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQ3RELFdBQVcsQ0FBQyxVQUFVLENBQUM7WUFDckIsSUFBSSxLQUFLLE1BQU07Z0JBQ2IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQztnQkFDdEUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUUzRCxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQixXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUN4QyxDQUFDO1FBRUQsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEIsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCx1Q0FBdUM7UUFDdkMsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFDLElBQUksT0FBTyxJQUFJLE9BQU8sS0FBSyxxQkFBcUIsRUFBRSxDQUFDO1lBQ2pELFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBRXBELFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvbW1hbmQgfSBmcm9tIFwiLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgZ2V0QXV0aEluZm8gfSBmcm9tIFwiLi4vbGliL2F1dGguanNcIjtcbmltcG9ydCB7IHN1Y2Nlc3MsIGluZm8sIGtleVZhbHVlLCBjb2xvcnMsIGpzb24gfSBmcm9tIFwiLi4vbGliL291dHB1dC5qc1wiO1xuaW1wb3J0IHsgZ2V0Q29uZmlnVmFsdWUsIGdldENvbmZpZ1BhdGggfSBmcm9tIFwiLi4vbGliL2NvbmZpZy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXaG9hbWkgZXh0ZW5kcyBCYXNlQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9IFwiU2hvdyBjdXJyZW50IGF1dGhlbnRpY2F0aW9uIHN0YXR1c1wiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcIjwlPSBjb25maWcuYmluICU+IHdob2FtaVwiXTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQmFzZUNvbW1hbmQuYmFzZUZsYWdzLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKFdob2FtaSk7XG5cbiAgICBjb25zdCBhdXRoSW5mbyA9IGF3YWl0IGdldEF1dGhJbmZvKCk7XG5cbiAgICBpZiAoZmxhZ3MuanNvbikge1xuICAgICAganNvbih7XG4gICAgICAgIGF1dGhlbnRpY2F0ZWQ6IGF1dGhJbmZvLmF1dGhlbnRpY2F0ZWQsXG4gICAgICAgIGVtYWlsOiBhdXRoSW5mby5lbWFpbCxcbiAgICAgICAgdXNlcklkOiBhdXRoSW5mby51c2VySWQsXG4gICAgICAgIGVudmlyb25tZW50OiBhdXRoSW5mby5lbnZpcm9ubWVudCxcbiAgICAgICAga2V5VHlwZTogYXV0aEluZm8ua2V5VHlwZSxcbiAgICAgICAgY29uZmlnUGF0aDogZ2V0Q29uZmlnUGF0aCgpLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFhdXRoSW5mby5hdXRoZW50aWNhdGVkKSB7XG4gICAgICBpbmZvKFwiTm90IGxvZ2dlZCBpblwiKTtcbiAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICBjb25zb2xlLmxvZyhgICBSdW4gJHtjb2xvcnMuY29kZShcInNlbmRseSBsb2dpblwiKX0gdG8gYXV0aGVudGljYXRlYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3VjY2VzcyhcIkF1dGhlbnRpY2F0ZWRcIik7XG4gICAgY29uc29sZS5sb2coKTtcblxuICAgIGNvbnN0IGRpc3BsYXlEYXRhOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICAvLyBTaG93IEFQSSBtb2RlICh0ZXN0IHZzIGxpdmUpIC0gdGhpcyBkZXRlcm1pbmVzIGlmIG1lc3NhZ2VzIGFyZSBhY3R1YWxseSBzZW50XG4gICAgY29uc3QgbW9kZSA9IGF1dGhJbmZvLmtleVR5cGUgfHwgYXV0aEluZm8uZW52aXJvbm1lbnQ7XG4gICAgZGlzcGxheURhdGFbXCJBUEkgTW9kZVwiXSA9XG4gICAgICBtb2RlID09PSBcInRlc3RcIlxuICAgICAgICA/IGNvbG9ycy53YXJuaW5nKFwidGVzdFwiKSArIGNvbG9ycy5kaW0oXCIgKHNhbmRib3ggLSBubyByZWFsIG1lc3NhZ2VzKVwiKVxuICAgICAgICA6IGNvbG9ycy5zdWNjZXNzKFwibGl2ZVwiKSArIGNvbG9ycy5kaW0oXCIgKHByb2R1Y3Rpb24pXCIpO1xuXG4gICAgaWYgKGF1dGhJbmZvLmVtYWlsKSB7XG4gICAgICBkaXNwbGF5RGF0YVtcIkVtYWlsXCJdID0gYXV0aEluZm8uZW1haWw7XG4gICAgfVxuXG4gICAgaWYgKGF1dGhJbmZvLnVzZXJJZCkge1xuICAgICAgZGlzcGxheURhdGFbXCJVc2VyIElEXCJdID0gY29sb3JzLmRpbShhdXRoSW5mby51c2VySWQpO1xuICAgIH1cblxuICAgIC8vIFNob3cgd2hpY2ggc2VydmVyIHdlJ3JlIGNvbm5lY3RlZCB0b1xuICAgIGNvbnN0IGJhc2VVcmwgPSBnZXRDb25maWdWYWx1ZShcImJhc2VVcmxcIik7XG4gICAgaWYgKGJhc2VVcmwgJiYgYmFzZVVybCAhPT0gXCJodHRwczovL3NlbmRseS5saXZlXCIpIHtcbiAgICAgIGRpc3BsYXlEYXRhW1wiU2VydmVyXCJdID0gY29sb3JzLmRpbShiYXNlVXJsKTtcbiAgICB9XG5cbiAgICBkaXNwbGF5RGF0YVtcIkNvbmZpZ1wiXSA9IGNvbG9ycy5kaW0oZ2V0Q29uZmlnUGF0aCgpKTtcblxuICAgIGtleVZhbHVlKGRpc3BsYXlEYXRhKTtcbiAgfVxufVxuIl19
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hvYW1pLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3dob2FtaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEYsTUFBTSxDQUFDLE9BQU8sT0FBTyxNQUFPLFNBQVEsV0FBVztJQUM3QyxNQUFNLENBQUMsV0FBVyxHQUFHLG9DQUFvQyxDQUFDO0lBRTFELE1BQU0sQ0FBQyxRQUFRLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBRS9DLE1BQU0sQ0FBQyxLQUFLLEdBQUc7UUFDYixHQUFHLFdBQVcsQ0FBQyxTQUFTO0tBQ3pCLENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFM0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxXQUFXLEVBQUUsQ0FBQztRQUVyQyxNQUFNLEdBQUcsR0FBRyxhQUFhLEVBQUUsQ0FBQztRQUU1QixJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQztnQkFDSCxhQUFhLEVBQUUsUUFBUSxDQUFDLGFBQWE7Z0JBQ3JDLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztnQkFDckIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNO2dCQUN2QixXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVc7Z0JBQ2pDLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztnQkFDekIsVUFBVSxFQUFFLGFBQWEsRUFBRTtnQkFDM0IsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO2FBQzFFLENBQUMsQ0FBQztZQUNILE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDdEIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDcEUsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRWQsTUFBTSxXQUFXLEdBQTJCLEVBQUUsQ0FBQztRQUUvQywrRUFBK0U7UUFDL0UsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQ3RELFdBQVcsQ0FBQyxVQUFVLENBQUM7WUFDckIsSUFBSSxLQUFLLE1BQU07Z0JBQ2IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQztnQkFDdEUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUUzRCxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQixXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUN4QyxDQUFDO1FBRUQsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEIsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCx1Q0FBdUM7UUFDdkMsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFDLElBQUksT0FBTyxJQUFJLE9BQU8sS0FBSyxxQkFBcUIsRUFBRSxDQUFDO1lBQ2pELFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM5RSxDQUFDO1FBRUQsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUVwRCxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb21tYW5kIH0gZnJvbSBcIi4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGdldEF1dGhJbmZvIH0gZnJvbSBcIi4uL2xpYi9hdXRoLmpzXCI7XG5pbXBvcnQgeyBzdWNjZXNzLCBpbmZvLCBrZXlWYWx1ZSwgY29sb3JzLCBqc29uIH0gZnJvbSBcIi4uL2xpYi9vdXRwdXQuanNcIjtcbmltcG9ydCB7IGdldENvbmZpZ1ZhbHVlLCBnZXRDb25maWdQYXRoLCBnZXRDdXJyZW50T3JnIH0gZnJvbSBcIi4uL2xpYi9jb25maWcuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV2hvYW1pIGV4dGVuZHMgQmFzZUNvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIlNob3cgY3VycmVudCBhdXRoZW50aWNhdGlvbiBzdGF0dXNcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXCI8JT0gY29uZmlnLmJpbiAlPiB3aG9hbWlcIl07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkJhc2VDb21tYW5kLmJhc2VGbGFncyxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShXaG9hbWkpO1xuXG4gICAgY29uc3QgYXV0aEluZm8gPSBhd2FpdCBnZXRBdXRoSW5mbygpO1xuXG4gICAgY29uc3Qgb3JnID0gZ2V0Q3VycmVudE9yZygpO1xuXG4gICAgaWYgKGZsYWdzLmpzb24pIHtcbiAgICAgIGpzb24oe1xuICAgICAgICBhdXRoZW50aWNhdGVkOiBhdXRoSW5mby5hdXRoZW50aWNhdGVkLFxuICAgICAgICBlbWFpbDogYXV0aEluZm8uZW1haWwsXG4gICAgICAgIHVzZXJJZDogYXV0aEluZm8udXNlcklkLFxuICAgICAgICBlbnZpcm9ubWVudDogYXV0aEluZm8uZW52aXJvbm1lbnQsXG4gICAgICAgIGtleVR5cGU6IGF1dGhJbmZvLmtleVR5cGUsXG4gICAgICAgIGNvbmZpZ1BhdGg6IGdldENvbmZpZ1BhdGgoKSxcbiAgICAgICAgb3JnYW5pemF0aW9uOiBvcmcgPyB7IGlkOiBvcmcuaWQsIG5hbWU6IG9yZy5uYW1lLCBzbHVnOiBvcmcuc2x1ZyB9IDogbnVsbCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghYXV0aEluZm8uYXV0aGVudGljYXRlZCkge1xuICAgICAgaW5mbyhcIk5vdCBsb2dnZWQgaW5cIik7XG4gICAgICBjb25zb2xlLmxvZygpO1xuICAgICAgY29uc29sZS5sb2coYCAgUnVuICR7Y29sb3JzLmNvZGUoXCJzZW5kbHkgbG9naW5cIil9IHRvIGF1dGhlbnRpY2F0ZWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN1Y2Nlc3MoXCJBdXRoZW50aWNhdGVkXCIpO1xuICAgIGNvbnNvbGUubG9nKCk7XG5cbiAgICBjb25zdCBkaXNwbGF5RGF0YTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gICAgLy8gU2hvdyBBUEkgbW9kZSAodGVzdCB2cyBsaXZlKSAtIHRoaXMgZGV0ZXJtaW5lcyBpZiBtZXNzYWdlcyBhcmUgYWN0dWFsbHkgc2VudFxuICAgIGNvbnN0IG1vZGUgPSBhdXRoSW5mby5rZXlUeXBlIHx8IGF1dGhJbmZvLmVudmlyb25tZW50O1xuICAgIGRpc3BsYXlEYXRhW1wiQVBJIE1vZGVcIl0gPVxuICAgICAgbW9kZSA9PT0gXCJ0ZXN0XCJcbiAgICAgICAgPyBjb2xvcnMud2FybmluZyhcInRlc3RcIikgKyBjb2xvcnMuZGltKFwiIChzYW5kYm94IC0gbm8gcmVhbCBtZXNzYWdlcylcIilcbiAgICAgICAgOiBjb2xvcnMuc3VjY2VzcyhcImxpdmVcIikgKyBjb2xvcnMuZGltKFwiIChwcm9kdWN0aW9uKVwiKTtcblxuICAgIGlmIChhdXRoSW5mby5lbWFpbCkge1xuICAgICAgZGlzcGxheURhdGFbXCJFbWFpbFwiXSA9IGF1dGhJbmZvLmVtYWlsO1xuICAgIH1cblxuICAgIGlmIChhdXRoSW5mby51c2VySWQpIHtcbiAgICAgIGRpc3BsYXlEYXRhW1wiVXNlciBJRFwiXSA9IGNvbG9ycy5kaW0oYXV0aEluZm8udXNlcklkKTtcbiAgICB9XG5cbiAgICAvLyBTaG93IHdoaWNoIHNlcnZlciB3ZSdyZSBjb25uZWN0ZWQgdG9cbiAgICBjb25zdCBiYXNlVXJsID0gZ2V0Q29uZmlnVmFsdWUoXCJiYXNlVXJsXCIpO1xuICAgIGlmIChiYXNlVXJsICYmIGJhc2VVcmwgIT09IFwiaHR0cHM6Ly9zZW5kbHkubGl2ZVwiKSB7XG4gICAgICBkaXNwbGF5RGF0YVtcIlNlcnZlclwiXSA9IGNvbG9ycy5kaW0oYmFzZVVybCk7XG4gICAgfVxuXG4gICAgaWYgKG9yZykge1xuICAgICAgZGlzcGxheURhdGFbXCJUZWFtXCJdID0gY29sb3JzLnByaW1hcnkob3JnLm5hbWUpICsgY29sb3JzLmRpbShgICgke29yZy5pZH0pYCk7XG4gICAgfVxuXG4gICAgZGlzcGxheURhdGFbXCJDb25maWdcIl0gPSBjb2xvcnMuZGltKGdldENvbmZpZ1BhdGgoKSk7XG5cbiAgICBrZXlWYWx1ZShkaXNwbGF5RGF0YSk7XG4gIH1cbn1cbiJdfQ==
@@ -102,6 +102,10 @@ class ApiClient {
102
102
  }
103
103
  headers["Authorization"] = `Bearer ${token}`;
104
104
  }
105
+ const orgId = getEffectiveValue("currentOrgId");
106
+ if (orgId) {
107
+ headers["X-Organization-Id"] = orgId;
108
+ }
105
109
  return headers;
106
110
  }
107
111
  async request(method, path, options = {}) {
@@ -276,4 +280,4 @@ class ApiClient {
276
280
  }
277
281
  }
278
282
  export const apiClient = new ApiClient();
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYXBpLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTlFLGlDQUFpQztBQUNqQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUF3QixDQUFDO0FBRXpFOztHQUVHO0FBQ0gsU0FBUyxLQUFLLENBQUMsRUFBVTtJQUN2QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFjO0lBQ3RDLGlCQUFpQjtJQUNqQixJQUFJLEtBQUssWUFBWSxTQUFTLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNsRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxvQ0FBb0M7SUFDcEMsSUFBSSxLQUFLLFlBQVksUUFBUSxJQUFJLEtBQUssQ0FBQyxVQUFVLElBQUksR0FBRyxFQUFFLENBQUM7UUFDekQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBaUJELE1BQU0sT0FBTyxRQUFTLFNBQVEsS0FBSztJQUl4QjtJQUVBO0lBQ0E7SUFORixJQUFJLENBQVU7SUFFckIsWUFDUyxJQUFZLEVBQ25CLE9BQWUs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LEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN6QixDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sU0FBUyxJQUFJLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBUEkgQ2xpZW50IGZvciBTZW5kbHkgQ0xJXG4gKiBIYW5kbGVzIGFsbCBIVFRQIHJlcXVlc3RzIHRvIHRoZSBTZW5kbHkgQVBJXG4gKi9cblxuaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IHsgZ2V0QXV0aFRva2VuLCBnZXRDb25maWdWYWx1ZSwgZ2V0RWZmZWN0aXZlVmFsdWUgfSBmcm9tIFwiLi9jb25maWcuanNcIjtcblxuLy8gUmVhZCB2ZXJzaW9uIGZyb20gcGFja2FnZS5qc29uXG5jb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuY29uc3QgeyB2ZXJzaW9uIH0gPSByZXF1aXJlKFwiLi4vLi4vcGFja2FnZS5qc29uXCIpIGFzIHsgdmVyc2lvbjogc3RyaW5nIH07XG5cbi8qKlxuICogU2xlZXAgZm9yIGEgZ2l2ZW4gbnVtYmVyIG9mIG1pbGxpc2Vjb25kc1xuICovXG5mdW5jdGlvbiBzbGVlcChtczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGFuIGVycm9yIGlzIHJldHJ5YWJsZSAobmV0d29yayBlcnJvcnMgb3IgNXh4IHNlcnZlciBlcnJvcnMpXG4gKi9cbmZ1bmN0aW9uIGlzUmV0cnlhYmxlRXJyb3IoZXJyb3I6IHVua25vd24pOiBib29sZWFuIHtcbiAgLy8gTmV0d29yayBlcnJvcnNcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgVHlwZUVycm9yICYmIGVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoXCJmZXRjaFwiKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIC8vIFNlcnZlciBlcnJvcnMgKDV4eCkgYXJlIHJldHJ5YWJsZVxuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcGlFcnJvciAmJiBlcnJvci5zdGF0dXNDb2RlID49IDUwMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcGlSZXNwb25zZTxUPiB7XG4gIGRhdGE/OiBUO1xuICBlcnJvcj86IHtcbiAgICBjb2RlOiBzdHJpbmc7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIGRldGFpbHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYXRlTGltaXRJbmZvIHtcbiAgbGltaXQ6IG51bWJlcjtcbiAgcmVtYWluaW5nOiBudW1iZXI7XG4gIHJlc2V0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBBcGlFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcHVibGljIGhpbnQ/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNvZGU6IHN0cmluZyxcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgcHVibGljIHN0YXR1c0NvZGU6IG51bWJlcixcbiAgICBwdWJsaWMgZGV0YWlscz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIGhpbnQ/OiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9IFwiQXBpRXJyb3JcIjtcbiAgICB0aGlzLmhpbnQgPSBoaW50O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvbkVycm9yIGV4dGVuZHMgQXBpRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcgPSBcIkF1dGhlbnRpY2F0aW9uIGZhaWxlZFwiLFxuICAgIGhpbnQ6IHN0cmluZyA9IFwiUnVuICdzZW5kbHkgbG9naW4nIHRvIGF1dGhlbnRpY2F0ZSwgb3IgY2hlY2sgeW91ciBBUEkga2V5IHdpdGggJ3NlbmRseSBjb25maWcgc2hvdydcIixcbiAgKSB7XG4gICAgc3VwZXIoXCJhdXRoZW50aWNhdGlvbl9lcnJvclwiLCBtZXNzYWdlLCA0MDEsIHVuZGVmaW5lZCwgaGludCk7XG4gICAgdGhpcy5uYW1lID0gXCJBdXRoZW50aWNhdGlvbkVycm9yXCI7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwaUtleVJlcXVpcmVkRXJyb3IgZXh0ZW5kcyBBcGlFcnJvciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIG1lc3NhZ2U6IHN0cmluZyA9IFwiQVBJIGtleSByZXF1aXJlZCBmb3IgdGhpcyBvcGVyYXRpb24uXCIsXG4gICAgcHVibGljIGhpbnQ6IHN0cmluZyA9IFwiU2V0IFNFTkRMWV9BUElfS0VZIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIGNyZWF0ZSBhIGtleSB3aXRoOiBzZW5kbHkga2V5cyBjcmVhdGUgLS10eXBlIHRlc3RcIixcbiAgKSB7XG4gICAgc3VwZXIoXCJhcGlfa2V5X3JlcXVpcmVkXCIsIG1lc3NhZ2UsIDQwMSk7XG4gICAgdGhpcy5uYW1lID0gXCJBcGlLZXlSZXF1aXJlZEVycm9yXCI7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhdGVMaW1pdEVycm9yIGV4dGVuZHMgQXBpRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmV0cnlBZnRlcjogbnVtYmVyLFxuICAgIG1lc3NhZ2U6IHN0cmluZyA9IFwiUmF0ZSBsaW1pdCBleGNlZWRlZFwiLFxuICApIHtcbiAgICBjb25zdCBoaW50ID0gYFdhaXQgJHtyZXRyeUFmdGVyfSBzZWNvbmRzIGJlZm9yZSByZXRyeWluZywgb3IgdXBncmFkZSB5b3VyIHBsYW4gZm9yIGhpZ2hlciBsaW1pdHNgO1xuICAgIHN1cGVyKFwicmF0ZV9saW1pdF9leGNlZWRlZFwiLCBtZXNzYWdlLCA0MjksIHVuZGVmaW5lZCwgaGludCk7XG4gICAgdGhpcy5uYW1lID0gXCJSYXRlTGltaXRFcnJvclwiO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnN1ZmZpY2llbnRDcmVkaXRzRXJyb3IgZXh0ZW5kcyBBcGlFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZyA9IFwiSW5zdWZmaWNpZW50IGNyZWRpdHNcIikge1xuICAgIGNvbnN0IGhpbnQgPVxuICAgICAgXCJDaGVjayB5b3VyIGJhbGFuY2Ugd2l0aCAnc2VuZGx5IGNyZWRpdHMnLCBvciBhZGQgY3JlZGl0cyBhdCBodHRwczovL3NlbmRseS5saXZlL2Rhc2hib2FyZC9iaWxsaW5nXCI7XG4gICAgc3VwZXIoXCJpbnN1ZmZpY2llbnRfY3JlZGl0c1wiLCBtZXNzYWdlLCA0MDIsIHVuZGVmaW5lZCwgaGludCk7XG4gICAgdGhpcy5uYW1lID0gXCJJbnN1ZmZpY2llbnRDcmVkaXRzRXJyb3JcIjtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTm90Rm91bmRFcnJvciBleHRlbmRzIEFwaUVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nID0gXCJSZXNvdXJjZSBub3QgZm91bmRcIixcbiAgICBoaW50OiBzdHJpbmcgPSBcIlZlcmlmeSB0aGUgSUQgaXMgY29ycmVjdCwgb3IgdXNlIGEgbGlzdCBjb21tYW5kIHRvIHNlZSBhdmFpbGFibGUgcmVzb3VyY2VzXCIsXG4gICkge1xuICAgIHN1cGVyKFwibm90X2ZvdW5kXCIsIG1lc3NhZ2UsIDQwNCwgdW5kZWZpbmVkLCBoaW50KTtcbiAgICB0aGlzLm5hbWUgPSBcIk5vdEZvdW5kRXJyb3JcIjtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgQXBpRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcgPSBcIlZhbGlkYXRpb24gZmFpbGVkXCIsXG4gICAgZGV0YWlscz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICApIHtcbiAgICBjb25zdCBoaW50ID0gXCJDaGVjayB0aGUgY29tbWFuZCBoZWxwIHdpdGggLS1oZWxwIGZvciB2YWxpZCBvcHRpb25zIGFuZCBmb3JtYXRzXCI7XG4gICAgc3VwZXIoXCJ2YWxpZGF0aW9uX2Vycm9yXCIsIG1lc3NhZ2UsIDQwMCwgZGV0YWlscywgaGludCk7XG4gICAgdGhpcy5uYW1lID0gXCJWYWxpZGF0aW9uRXJyb3JcIjtcbiAgfVxufVxuXG5jbGFzcyBBcGlDbGllbnQge1xuICBwcml2YXRlIHJhdGVMaW1pdEluZm8/OiBSYXRlTGltaXRJbmZvO1xuXG4gIHByaXZhdGUgZ2V0QmFzZVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBnZXRDb25maWdWYWx1ZShcImJhc2VVcmxcIikgfHwgXCJodHRwczovL3NlbmRseS5saXZlXCI7XG4gIH1cblxuICBwcml2YXRlIGdldEhlYWRlcnMocmVxdWlyZUF1dGg6IGJvb2xlYW4gPSB0cnVlKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgIFwiVXNlci1BZ2VudFwiOiBgQHNlbmRseS9jbGkvJHt2ZXJzaW9ufWAsXG4gICAgfTtcblxuICAgIGlmIChyZXF1aXJlQXV0aCkge1xuICAgICAgY29uc3QgdG9rZW4gPSBnZXRBdXRoVG9rZW4oKTtcbiAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgdGhyb3cgbmV3IEF1dGhlbnRpY2F0aW9uRXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIGhlYWRlcnNbXCJBdXRob3JpemF0aW9uXCJdID0gYEJlYXJlciAke3Rva2VufWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhlYWRlcnM7XG4gIH1cblxuICBhc3luYyByZXF1ZXN0PFQ+KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBib2R5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICBxdWVyeT86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCB1bmRlZmluZWQ+O1xuICAgICAgcmVxdWlyZUF1dGg/OiBib29sZWFuO1xuICAgIH0gPSB7fSxcbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QgeyBib2R5LCBxdWVyeSwgcmVxdWlyZUF1dGggPSB0cnVlIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IG1heFJldHJpZXMgPSBnZXRFZmZlY3RpdmVWYWx1ZShcIm1heFJldHJpZXNcIik7XG4gICAgY29uc3QgdGltZW91dCA9IGdldEVmZmVjdGl2ZVZhbHVlKFwidGltZW91dFwiKTtcblxuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoYCR7dGhpcy5nZXRCYXNlVXJsKCl9JHtwYXRofWApO1xuICAgIGlmIChxdWVyeSkge1xuICAgICAgT2JqZWN0LmVudHJpZXMocXVlcnkpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKGtleSwgU3RyaW5nKHZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGxldCBsYXN0RXJyb3I6IEVycm9yIHwgdW5kZWZpbmVkO1xuXG4gICAgZm9yIChsZXQgYXR0ZW1wdCA9IDA7IGF0dGVtcHQgPD0gbWF4UmV0cmllczsgYXR0ZW1wdCsrKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQoKSwgdGltZW91dCk7XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwudG9TdHJpbmcoKSwge1xuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMocmVxdWlyZUF1dGgpLFxuICAgICAgICAgIGJvZHk6IGJvZHkgPyBKU09OLnN0cmluZ2lmeShib2R5KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICB9KTtcblxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcblxuICAgICAgICAvLyBVcGRhdGUgcmF0ZSBsaW1pdCBpbmZvXG4gICAgICAgIHRoaXMudXBkYXRlUmF0ZUxpbWl0SW5mbyhyZXNwb25zZS5oZWFkZXJzKTtcblxuICAgICAgICAvLyBQYXJzZSByZXNwb25zZVxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpLmNhdGNoKCgpID0+ICh7fSkpO1xuXG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKHJlc3BvbnNlLnN0YXR1cywgZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0YSBhcyBUO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbGFzdEVycm9yID0gZXJyb3IgYXMgRXJyb3I7XG5cbiAgICAgICAgLy8gRG9uJ3QgcmV0cnkgbm9uLXJldHJ5YWJsZSBlcnJvcnMgKDR4eCBjbGllbnQgZXJyb3JzKVxuICAgICAgICBpZiAoIWlzUmV0cnlhYmxlRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEb24ndCByZXRyeSBvbiBsYXN0IGF0dGVtcHRcbiAgICAgICAgaWYgKGF0dGVtcHQgPT09IG1heFJldHJpZXMpIHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEV4cG9uZW50aWFsIGJhY2tvZmY6IDFzLCAycywgNHMsIGV0Yy5cbiAgICAgICAgY29uc3QgYmFja29mZk1zID0gTWF0aC5taW4oMTAwMCAqIE1hdGgucG93KDIsIGF0dGVtcHQpLCAxMDAwMCk7XG4gICAgICAgIGF3YWl0IHNsZWVwKGJhY2tvZmZNcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2hvdWxkIG5ldmVyIHJlYWNoIGhlcmUsIGJ1dCBUeXBlU2NyaXB0IG5lZWRzIHRoaXNcbiAgICB0aHJvdyBsYXN0RXJyb3IgfHwgbmV3IEVycm9yKFwiUmVxdWVzdCBmYWlsZWRcIik7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVJhdGVMaW1pdEluZm8oaGVhZGVyczogSGVhZGVycyk6IHZvaWQge1xuICAgIGNvbnN0IGxpbWl0ID0gaGVhZGVycy5nZXQoXCJYLVJhdGVMaW1pdC1MaW1pdFwiKTtcbiAgICBjb25zdCByZW1haW5pbmcgPSBoZWFkZXJzLmdldChcIlgtUmF0ZUxpbWl0LVJlbWFpbmluZ1wiKTtcbiAgICBjb25zdCByZXNldCA9IGhlYWRlcnMuZ2V0KFwiWC1SYXRlTGltaXQtUmVzZXRcIik7XG5cbiAgICBpZiAobGltaXQgJiYgcmVtYWluaW5nICYmIHJlc2V0KSB7XG4gICAgICB0aGlzLnJhdGVMaW1pdEluZm8gPSB7XG4gICAgICAgIGxpbWl0OiBwYXJzZUludChsaW1pdCwgMTApLFxuICAgICAgICByZW1haW5pbmc6IHBhcnNlSW50KHJlbWFpbmluZywgMTApLFxuICAgICAgICByZXNldDogcGFyc2VJbnQocmVzZXQsIDEwKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihzdGF0dXNDb2RlOiBudW1iZXIsIGRhdGE6IGFueSk6IG5ldmVyIHtcbiAgICBjb25zdCBlcnJvciA9IGRhdGE/LmVycm9yIHx8IFwidW5rbm93bl9lcnJvclwiO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBkYXRhPy5tZXNzYWdlIHx8IGBIVFRQICR7c3RhdHVzQ29kZX1gO1xuICAgIGNvbnN0IGRldGFpbHMgPSBkYXRhPy5kZXRhaWxzO1xuXG4gICAgc3dpdGNoIChzdGF0dXNDb2RlKSB7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgIGNhc2UgNDAzOlxuICAgICAgICAvLyBEZXRlY3QgaWYgdGhpcyBpcyBhbiBBUEkga2V5IHJlcXVpcmVkIGVycm9yIHZzIGdlbmVyYWwgYXV0aCBlcnJvclxuICAgICAgICBpZiAoXG4gICAgICAgICAgZXJyb3IgPT09IFwiaW52YWxpZF9hcGlfa2V5XCIgfHxcbiAgICAgICAgICBlcnJvciA9PT0gXCJhcGlfa2V5X3JlcXVpcmVkXCIgfHxcbiAgICAgICAgICBtZXNzYWdlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwiYXBpIGtleVwiKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQXBpS2V5UmVxdWlyZWRFcnJvcihcbiAgICAgICAgICAgIFwiQVBJIGtleSByZXF1aXJlZCBmb3Igc2VuZGluZyBtZXNzYWdlc1wiLFxuICAgICAgICAgICAgXCJTZXQgU0VORExZX0FQSV9LRVkgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgY3JlYXRlIGEga2V5IHdpdGg6XFxuICBzZW5kbHkga2V5cyBjcmVhdGUgLS10eXBlIHRlc3RcIixcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBBdXRoZW50aWNhdGlvbkVycm9yKG1lc3NhZ2UpO1xuICAgICAgY2FzZSA0MDA6XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobWVzc2FnZSwgZGV0YWlscyk7XG4gICAgICBjYXNlIDQwMjpcbiAgICAgICAgdGhyb3cgbmV3IEluc3VmZmljaWVudENyZWRpdHNFcnJvcihtZXNzYWdlKTtcbiAgICAgIGNhc2UgNDA0OlxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihtZXNzYWdlKTtcbiAgICAgIGNhc2UgNDI5OlxuICAgICAgICBjb25zdCByZXRyeUFmdGVyID0gZGF0YT8ucmV0cnlBZnRlciB8fCA2MDtcbiAgICAgICAgdGhyb3cgbmV3IFJhdGVMaW1pdEVycm9yKHJldHJ5QWZ0ZXIsIG1lc3NhZ2UpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc3QgZGVmYXVsdEhpbnQgPVxuICAgICAgICAgIHN0YXR1c0NvZGUgPj0gNTAwXG4gICAgICAgICAgICA/IFwiVGhpcyBpcyBhIHNlcnZlciBlcnJvci4gVHJ5IGFnYWluIGxhdGVyIG9yIGNoZWNrIGh0dHBzOi8vc3RhdHVzLnNlbmRseS5saXZlXCJcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICB0aHJvdyBuZXcgQXBpRXJyb3IoZXJyb3IsIG1lc3NhZ2UsIHN0YXR1c0NvZGUsIGRldGFpbHMsIGRlZmF1bHRIaW50KTtcbiAgICB9XG4gIH1cblxuICBnZXRSYXRlTGltaXRJbmZvKCk6IFJhdGVMaW1pdEluZm8gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJhdGVMaW1pdEluZm87XG4gIH1cblxuICAvLyBDb252ZW5pZW5jZSBtZXRob2RzXG4gIGFzeW5jIGdldDxUPihcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgcXVlcnk/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgdW5kZWZpbmVkPixcbiAgICByZXF1aXJlQXV0aDogYm9vbGVhbiA9IHRydWUsXG4gICk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8VD4oXCJHRVRcIiwgcGF0aCwgeyBxdWVyeSwgcmVxdWlyZUF1dGggfSk7XG4gIH1cblxuICBhc3luYyBwb3N0PFQ+KFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBib2R5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgcmVxdWlyZUF1dGg6IGJvb2xlYW4gPSB0cnVlLFxuICApOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PFQ+KFwiUE9TVFwiLCBwYXRoLCB7IGJvZHksIHJlcXVpcmVBdXRoIH0pO1xuICB9XG5cbiAgYXN5bmMgcGF0Y2g8VD4oXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGJvZHk/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICByZXF1aXJlQXV0aDogYm9vbGVhbiA9IHRydWUsXG4gICk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8VD4oXCJQQVRDSFwiLCBwYXRoLCB7IGJvZHksIHJlcXVpcmVBdXRoIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlPFQ+KHBhdGg6IHN0cmluZywgcmVxdWlyZUF1dGg6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdDxUPihcIkRFTEVURVwiLCBwYXRoLCB7IHJlcXVpcmVBdXRoIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwbG9hZCBhIGZpbGUgdXNpbmcgbXVsdGlwYXJ0L2Zvcm0tZGF0YVxuICAgKiBVc2VkIGZvciBiYXRjaCBDU1YgdXBsb2FkcyB0byBTdXBhYmFzZSBzdG9yYWdlXG4gICAqL1xuICBhc3luYyB1cGxvYWRGaWxlPFQ+KFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBmaWxlOiB7XG4gICAgICBidWZmZXI6IEJ1ZmZlcjtcbiAgICAgIGZpbGVuYW1lOiBzdHJpbmc7XG4gICAgICBtaW1ldHlwZT86IHN0cmluZztcbiAgICB9LFxuICAgIHJlcXVpcmVBdXRoOiBib29sZWFuID0gdHJ1ZSxcbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QgbWF4UmV0cmllcyA9IGdldEVmZmVjdGl2ZVZhbHVlKFwibWF4UmV0cmllc1wiKTtcbiAgICBjb25zdCB0aW1lb3V0ID0gZ2V0RWZmZWN0aXZlVmFsdWUoXCJ0aW1lb3V0XCIpO1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZ2V0QmFzZVVybCgpfSR7cGF0aH1gO1xuXG4gICAgLy8gQnVpbGQgbXVsdGlwYXJ0IGZvcm0gZGF0YSBtYW51YWxseSAoTm9kZS5qcyBjb21wYXRpYmxlKVxuICAgIGNvbnN0IGJvdW5kYXJ5ID0gYC0tLS1Gb3JtQm91bmRhcnkke0RhdGUubm93KCl9JHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMil9YDtcbiAgICBjb25zdCBtaW1ldHlwZSA9IGZpbGUubWltZXR5cGUgfHwgXCJ0ZXh0L2NzdlwiO1xuXG4gICAgY29uc3QgaGVhZGVyID0gQnVmZmVyLmZyb20oXG4gICAgICBgLS0ke2JvdW5kYXJ5fVxcclxcbmAgK1xuICAgICAgICBgQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPVwiZmlsZVwiOyBmaWxlbmFtZT1cIiR7ZmlsZS5maWxlbmFtZX1cIlxcclxcbmAgK1xuICAgICAgICBgQ29udGVudC1UeXBlOiAke21pbWV0eXBlfVxcclxcblxcclxcbmAsXG4gICAgKTtcbiAgICBjb25zdCBmb290ZXIgPSBCdWZmZXIuZnJvbShgXFxyXFxuLS0ke2JvdW5kYXJ5fS0tXFxyXFxuYCk7XG4gICAgY29uc3QgYm9keSA9IEJ1ZmZlci5jb25jYXQoW2hlYWRlciwgZmlsZS5idWZmZXIsIGZvb3Rlcl0pO1xuXG4gICAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IGBtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0ke2JvdW5kYXJ5fWAsXG4gICAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgXCJVc2VyLUFnZW50XCI6IGBAc2VuZGx5L2NsaS8ke3ZlcnNpb259YCxcbiAgICB9O1xuXG4gICAgaWYgKHJlcXVpcmVBdXRoKSB7XG4gICAgICBjb25zdCB0b2tlbiA9IGdldEF1dGhUb2tlbigpO1xuICAgICAgaWYgKCF0b2tlbikge1xuICAgICAgICB0aHJvdyBuZXcgQXV0aGVudGljYXRpb25FcnJvcigpO1xuICAgICAgfVxuICAgICAgaGVhZGVyc1tcIkF1dGhvcml6YXRpb25cIl0gPSBgQmVhcmVyICR7dG9rZW59YDtcbiAgICB9XG5cbiAgICBsZXQgbGFzdEVycm9yOiBFcnJvciB8IHVuZGVmaW5lZDtcblxuICAgIGZvciAobGV0IGF0dGVtcHQgPSAwOyBhdHRlbXB0IDw9IG1heFJldHJpZXM7IGF0dGVtcHQrKykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiBjb250cm9sbGVyLmFib3J0KCksIHRpbWVvdXQpO1xuXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgIGJvZHksXG4gICAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVSYXRlTGltaXRJbmZvKHJlc3BvbnNlLmhlYWRlcnMpO1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpLmNhdGNoKCgpID0+ICh7fSkpO1xuXG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKHJlc3BvbnNlLnN0YXR1cywgZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0YSBhcyBUO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbGFzdEVycm9yID0gZXJyb3IgYXMgRXJyb3I7XG5cbiAgICAgICAgaWYgKCFpc1JldHJ5YWJsZUVycm9yKGVycm9yKSkge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGF0dGVtcHQgPT09IG1heFJldHJpZXMpIHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJhY2tvZmZNcyA9IE1hdGgubWluKDEwMDAgKiBNYXRoLnBvdygyLCBhdHRlbXB0KSwgMTAwMDApO1xuICAgICAgICBhd2FpdCBzbGVlcChiYWNrb2ZmTXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IGxhc3RFcnJvciB8fCBuZXcgRXJyb3IoXCJVcGxvYWQgZmFpbGVkXCIpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBhcGlDbGllbnQgPSBuZXcgQXBpQ2xpZW50KCk7XG4iXX0=
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYXBpLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTlFLGlDQUFpQztBQUNqQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUF3QixDQUFDO0FBRXpFOztHQUVHO0FBQ0gsU0FBUyxLQUFLLENBQUMsRUFBVTtJQUN2QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFjO0lBQ3RDLGlCQUFpQjtJQUNqQixJQUFJLEtBQUssWUFBWSxTQUFTLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNsRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxvQ0FBb0M7SUFDcEMsSUFBSSxLQUFLLFlBQVksUUFBUSxJQUFJLEtBQUssQ0FBQyxVQUFVLElBQUksR0FBRyxFQUFFLENBQUM7UUFDekQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBaUJELE1BQU0sT0FBTyxRQUFTLFNBQVEsS0FBSztJQUl4QjtJQUVBO0lBQ0E7SUFORixJQUFJLENBQVU7SUFFckIsWUFDUyxJQUFZLEVBQ25CLE9BQWUsRUFDUixVQUFrQixFQUNsQixPQUFpQyxFQUN4QyxJQUFhO1FBRWIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBTlIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUVaLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFJeEMsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFFBQVE7SUFDL0MsWUFDRSxVQUFrQix1QkFBdUIsRUFDekMsT0FBZSxxRkFBcUY7UUFFcEcsS0FBSyxDQUFDLHNCQUFzQixFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxJQUFJLEdBQUcscUJBQXFCLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFFBQVE7SUFHdEM7SUFGVCxZQUNFLFVBQWtCLHNDQUFzQyxFQUNqRCxPQUFlLDhGQUE4RjtRQUVwSCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRmpDLFNBQUksR0FBSixJQUFJLENBQXlHO1FBR3BILElBQUksQ0FBQyxJQUFJLEdBQUcscUJBQXFCLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGNBQWUsU0FBUSxRQUFRO0lBRWpDO0lBRFQsWUFDUyxVQUFrQixFQUN6QixVQUFrQixxQkFBcUI7UUFFdkMsTUFBTSxJQUFJLEdBQUcsUUFBUSxVQUFVLGtFQUFrRSxDQUFDO1FBQ2xHLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUpyRCxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBS3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLFFBQVE7SUFDcEQsWUFBWSxVQUFrQixzQkFBc0I7UUFDbEQsTUFBTSxJQUFJLEdBQ1IsbUdBQW1HLENBQUM7UUFDdEcsS0FBSyxDQUFDLHNCQUFzQixFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxJQUFJLEdBQUcsMEJBQTBCLENBQUM7SUFDekMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGFBQWMsU0FBUSxRQUFRO0lBQ3pDLFlBQ0UsVUFBa0Isb0JBQW9CLEVBQ3RDLE9BQWUsNEVBQTRFO1FBRTNGLEtBQUssQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLElBQUksR0FBRyxlQUFlLENBQUM7SUFDOUIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsUUFBUTtJQUMzQyxZQUNFLFVBQWtCLG1CQUFtQixFQUNyQyxPQUFpQztRQUVqQyxNQUFNLElBQUksR0FBRyxrRUFBa0UsQ0FBQztRQUNoRixLQUFLLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLFNBQVM7SUFDTCxhQUFhLENBQWlCO0lBRTlCLFVBQVU7UUFDaEIsT0FBTyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUkscUJBQXFCLENBQUM7SUFDNUQsQ0FBQztJQUVPLFVBQVUsQ0FBQyxjQUF1QixJQUFJO1FBQzVDLE1BQU0sT0FBTyxHQUEyQjtZQUN0QyxjQUFjLEVBQUUsa0JBQWtCO1lBQ2xDLE1BQU0sRUFBRSxrQkFBa0I7WUFDMUIsWUFBWSxFQUFFLGVBQWUsT0FBTyxFQUFFO1NBQ3ZDLENBQUM7UUFFRixJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sS0FBSyxHQUFHLFlBQVksRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxNQUFNLElBQUksbUJBQW1CLEVBQUUsQ0FBQztZQUNsQyxDQUFDO1lBQ0QsT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLFVBQVUsS0FBSyxFQUFFLENBQUM7UUFDL0MsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2hELElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixPQUFPLENBQUMsbUJBQW1CLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDdkMsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUNYLE1BQWMsRUFDZCxJQUFZLEVBQ1osVUFJSSxFQUFFO1FBRU4sTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxHQUFHLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUNwRCxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRCxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7Z0JBQzdDLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUN4QixHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQzlDLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLFNBQTRCLENBQUM7UUFFakMsS0FBSyxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsT0FBTyxJQUFJLFVBQVUsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ3ZELElBQUksQ0FBQztnQkFDSCxNQUFNLFVBQVUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUN6QyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUVoRSxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUU7b0JBQzNDLE1BQU07b0JBQ04sT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO29CQUNyQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO29CQUM3QyxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU07aUJBQzFCLENBQUMsQ0FBQztnQkFFSCxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBRXhCLHlCQUF5QjtnQkFDekIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFFM0MsaUJBQWlCO2dCQUNqQixNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUVyRCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzFDLENBQUM7Z0JBRUQsT0FBTyxJQUFTLENBQUM7WUFDbkIsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsU0FBUyxHQUFHLEtBQWMsQ0FBQztnQkFFM0IsdURBQXVEO2dCQUN2RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDN0IsTUFBTSxLQUFLLENBQUM7Z0JBQ2QsQ0FBQztnQkFFRCw4QkFBOEI7Z0JBQzlCLElBQUksT0FBTyxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUMzQixNQUFNLEtBQUssQ0FBQztnQkFDZCxDQUFDO2dCQUVELHdDQUF3QztnQkFDeEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQy9ELE1BQU0sS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDO1FBRUQscURBQXFEO1FBQ3JELE1BQU0sU0FBUyxJQUFJLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE9BQWdCO1FBQzFDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMvQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDdkQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRS9DLElBQUksS0FBSyxJQUFJLFNBQVMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHO2dCQUNuQixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQzFCLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztnQkFDbEMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO2FBQzNCLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxVQUFrQixFQUFFLElBQVM7UUFDL0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxFQUFFLEtBQUssSUFBSSxlQUFlLENBQUM7UUFDN0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxFQUFFLE9BQU8sSUFBSSxRQUFRLFVBQVUsRUFBRSxDQUFDO1FBQ3RELE1BQU0sT0FBTyxHQUFHLElBQUksRUFBRSxPQUFPLENBQUM7UUFFOUIsUUFBUSxVQUFVLEVBQUUsQ0FBQztZQUNuQixLQUFLLEdBQUcsQ0FBQztZQUNULEtBQUssR0FBRztnQkFDTixvRUFBb0U7Z0JBQ3BFLElBQ0UsS0FBSyxLQUFLLGlCQUFpQjtvQkFDM0IsS0FBSyxLQUFLLGtCQUFrQjtvQkFDNUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFDMUMsQ0FBQztvQkFDRCxNQUFNLElBQUksbUJBQW1CLENBQzNCLHVDQUF1QyxFQUN2QyxpR0FBaUcsQ0FDbEcsQ0FBQztnQkFDSixDQUFDO2dCQUNELE1BQU0sSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6QyxLQUFLLEdBQUc7Z0JBQ04sTUFBTSxJQUFJLGVBQWUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDOUMsS0FBSyxHQUFHO2dCQUNOLE1BQU0sSUFBSSx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5QyxLQUFLLEdBQUc7Z0JBQ04sTUFBTSxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxLQUFLLEdBQUc7Z0JBQ04sTUFBTSxVQUFVLEdBQUcsSUFBSSxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7Z0JBQzFDLE1BQU0sSUFBSSxjQUFjLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2hEO2dCQUNFLE1BQU0sV0FBVyxHQUNmLFVBQVUsSUFBSSxHQUFHO29CQUNmLENBQUMsQ0FBQyw2RUFBNkU7b0JBQy9FLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQ2hCLE1BQU0sSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsS0FBSyxDQUFDLEdBQUcsQ0FDUCxJQUFZLEVBQ1osS0FBNkQsRUFDN0QsY0FBdUIsSUFBSTtRQUUzQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUksS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSSxDQUNSLElBQVksRUFDWixJQUE4QixFQUM5QixjQUF1QixJQUFJO1FBRTNCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBSSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLLENBQ1QsSUFBWSxFQUNaLElBQThCLEVBQzlCLGNBQXVCLElBQUk7UUFFM0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFJLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBSSxJQUFZLEVBQUUsY0FBdUIsSUFBSTtRQUN2RCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUksUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxVQUFVLENBQ2QsSUFBWSxFQUNaLElBSUMsRUFDRCxjQUF1QixJQUFJO1FBRTNCLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ25ELE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO1FBRTFDLDBEQUEwRDtRQUMxRCxNQUFNLFFBQVEsR0FBRyxtQkFBbUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxVQUFVLENBQUM7UUFFN0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FDeEIsS0FBSyxRQUFRLE1BQU07WUFDakIsMERBQTBELElBQUksQ0FBQyxRQUFRLE9BQU87WUFDOUUsaUJBQWlCLFFBQVEsVUFBVSxDQUN0QyxDQUFDO1FBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLFFBQVEsUUFBUSxDQUFDLENBQUM7UUFDdEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFMUQsTUFBTSxPQUFPLEdBQTJCO1lBQ3RDLGNBQWMsRUFBRSxpQ0FBaUMsUUFBUSxFQUFFO1lBQzNELE1BQU0sRUFBRSxrQkFBa0I7WUFDMUIsWUFBWSxFQUFFLGVBQWUsT0FBTyxFQUFFO1NBQ3ZDLENBQUM7UUFFRixJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sS0FBSyxHQUFHLFlBQVksRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxNQUFNLElBQUksbUJBQW1CLEVBQUUsQ0FBQztZQUNsQyxDQUFDO1lBQ0QsT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLFVBQVUsS0FBSyxFQUFFLENBQUM7UUFDL0MsQ0FBQztRQUVELElBQUksU0FBNEIsQ0FBQztRQUVqQyxLQUFLLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLElBQUksVUFBVSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDO2dCQUNILE1BQU0sVUFBVSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBRWhFLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsRUFBRTtvQkFDaEMsTUFBTSxFQUFFLE1BQU07b0JBQ2QsT0FBTztvQkFDUCxJQUFJO29CQUNKLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTTtpQkFDMUIsQ0FBQyxDQUFDO2dCQUVILFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFFeEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDM0MsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFckQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUMxQyxDQUFDO2dCQUVELE9BQU8sSUFBUyxDQUFDO1lBQ25CLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLFNBQVMsR0FBRyxLQUFjLENBQUM7Z0JBRTNCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUM3QixNQUFNLEtBQUssQ0FBQztnQkFDZCxDQUFDO2dCQUVELElBQUksT0FBTyxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUMzQixNQUFNLEtBQUssQ0FBQztnQkFDZCxDQUFDO2dCQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUMvRCxNQUFNLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN6QixDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sU0FBUyxJQUFJLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBUEkgQ2xpZW50IGZvciBTZW5kbHkgQ0xJXG4gKiBIYW5kbGVzIGFsbCBIVFRQIHJlcXVlc3RzIHRvIHRoZSBTZW5kbHkgQVBJXG4gKi9cblxuaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IHsgZ2V0QXV0aFRva2VuLCBnZXRDb25maWdWYWx1ZSwgZ2V0RWZmZWN0aXZlVmFsdWUgfSBmcm9tIFwiLi9jb25maWcuanNcIjtcblxuLy8gUmVhZCB2ZXJzaW9uIGZyb20gcGFja2FnZS5qc29uXG5jb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuY29uc3QgeyB2ZXJzaW9uIH0gPSByZXF1aXJlKFwiLi4vLi4vcGFja2FnZS5qc29uXCIpIGFzIHsgdmVyc2lvbjogc3RyaW5nIH07XG5cbi8qKlxuICogU2xlZXAgZm9yIGEgZ2l2ZW4gbnVtYmVyIG9mIG1pbGxpc2Vjb25kc1xuICovXG5mdW5jdGlvbiBzbGVlcChtczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGFuIGVycm9yIGlzIHJldHJ5YWJsZSAobmV0d29yayBlcnJvcnMgb3IgNXh4IHNlcnZlciBlcnJvcnMpXG4gKi9cbmZ1bmN0aW9uIGlzUmV0cnlhYmxlRXJyb3IoZXJyb3I6IHVua25vd24pOiBib29sZWFuIHtcbiAgLy8gTmV0d29yayBlcnJvcnNcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgVHlwZUVycm9yICYmIGVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoXCJmZXRjaFwiKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIC8vIFNlcnZlciBlcnJvcnMgKDV4eCkgYXJlIHJldHJ5YWJsZVxuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcGlFcnJvciAmJiBlcnJvci5zdGF0dXNDb2RlID49IDUwMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcGlSZXNwb25zZTxUPiB7XG4gIGRhdGE/OiBUO1xuICBlcnJvcj86IHtcbiAgICBjb2RlOiBzdHJpbmc7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIGRldGFpbHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYXRlTGltaXRJbmZvIHtcbiAgbGltaXQ6IG51bWJlcjtcbiAgcmVtYWluaW5nOiBudW1iZXI7XG4gIHJlc2V0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBBcGlFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcHVibGljIGhpbnQ/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNvZGU6IHN0cmluZyxcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgcHVibGljIHN0YXR1c0NvZGU6IG51bWJlcixcbiAgICBwdWJsaWMgZGV0YWlscz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIGhpbnQ/OiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9IFwiQXBpRXJyb3JcIjtcbiAgICB0aGlzLmhpbnQgPSBoaW50O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvbkVycm9yIGV4dGVuZHMgQXBpRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcgPSBcIkF1dGhlbnRpY2F0aW9uIGZhaWxlZFwiLFxuICAgIGhpbnQ6IHN0cmluZyA9IFwiUnVuICdzZW5kbHkgbG9naW4nIHRvIGF1dGhlbnRpY2F0ZSwgb3IgY2hlY2sgeW91ciBBUEkga2V5IHdpdGggJ3NlbmRseSBjb25maWcgc2hvdydcIixcbiAgKSB7XG4gICAgc3VwZXIoXCJhdXRoZW50aWNhdGlvbl9lcnJvclwiLCBtZXNzYWdlLCA0MDEsIHVuZGVmaW5lZCwgaGludCk7XG4gICAgdGhpcy5uYW1lID0gXCJBdXRoZW50aWNhdGlvbkVycm9yXCI7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwaUtleVJlcXVpcmVkRXJyb3IgZXh0ZW5kcyBBcGlFcnJvciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIG1lc3NhZ2U6IHN0cmluZyA9IFwiQVBJIGtleSByZXF1aXJlZCBmb3IgdGhpcyBvcGVyYXRpb24uXCIsXG4gICAgcHVibGljIGhpbnQ6IHN0cmluZyA9IFwiU2V0IFNFTkRMWV9BUElfS0VZIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIGNyZWF0ZSBhIGtleSB3aXRoOiBzZW5kbHkga2V5cyBjcmVhdGUgLS10eXBlIHRlc3RcIixcbiAgKSB7XG4gICAgc3VwZXIoXCJhcGlfa2V5X3JlcXVpcmVkXCIsIG1lc3NhZ2UsIDQwMSk7XG4gICAgdGhpcy5uYW1lID0gXCJBcGlLZXlSZXF1aXJlZEVycm9yXCI7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhdGVMaW1pdEVycm9yIGV4dGVuZHMgQXBpRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmV0cnlBZnRlcjogbnVtYmVyLFxuICAgIG1lc3NhZ2U6IHN0cmluZyA9IFwiUmF0ZSBsaW1pdCBleGNlZWRlZFwiLFxuICApIHtcbiAgICBjb25zdCBoaW50ID0gYFdhaXQgJHtyZXRyeUFmdGVyfSBzZWNvbmRzIGJlZm9yZSByZXRyeWluZywgb3IgdXBncmFkZSB5b3VyIHBsYW4gZm9yIGhpZ2hlciBsaW1pdHNgO1xuICAgIHN1cGVyKFwicmF0ZV9saW1pdF9leGNlZWRlZFwiLCBtZXNzYWdlLCA0MjksIHVuZGVmaW5lZCwgaGludCk7XG4gICAgdGhpcy5uYW1lID0gXCJSYXRlTGltaXRFcnJvclwiO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnN1ZmZpY2llbnRDcmVkaXRzRXJyb3IgZXh0ZW5kcyBBcGlFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZyA9IFwiSW5zdWZmaWNpZW50IGNyZWRpdHNcIikge1xuICAgIGNvbnN0IGhpbnQgPVxuICAgICAgXCJDaGVjayB5b3VyIGJhbGFuY2Ugd2l0aCAnc2VuZGx5IGNyZWRpdHMnLCBvciBhZGQgY3JlZGl0cyBhdCBodHRwczovL3NlbmRseS5saXZlL2Rhc2hib2FyZC9iaWxsaW5nXCI7XG4gICAgc3VwZXIoXCJpbnN1ZmZpY2llbnRfY3JlZGl0c1wiLCBtZXNzYWdlLCA0MDIsIHVuZGVmaW5lZCwgaGludCk7XG4gICAgdGhpcy5uYW1lID0gXCJJbnN1ZmZpY2llbnRDcmVkaXRzRXJyb3JcIjtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTm90Rm91bmRFcnJvciBleHRlbmRzIEFwaUVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nID0gXCJSZXNvdXJjZSBub3QgZm91bmRcIixcbiAgICBoaW50OiBzdHJpbmcgPSBcIlZlcmlmeSB0aGUgSUQgaXMgY29ycmVjdCwgb3IgdXNlIGEgbGlzdCBjb21tYW5kIHRvIHNlZSBhdmFpbGFibGUgcmVzb3VyY2VzXCIsXG4gICkge1xuICAgIHN1cGVyKFwibm90X2ZvdW5kXCIsIG1lc3NhZ2UsIDQwNCwgdW5kZWZpbmVkLCBoaW50KTtcbiAgICB0aGlzLm5hbWUgPSBcIk5vdEZvdW5kRXJyb3JcIjtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgQXBpRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcgPSBcIlZhbGlkYXRpb24gZmFpbGVkXCIsXG4gICAgZGV0YWlscz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICApIHtcbiAgICBjb25zdCBoaW50ID0gXCJDaGVjayB0aGUgY29tbWFuZCBoZWxwIHdpdGggLS1oZWxwIGZvciB2YWxpZCBvcHRpb25zIGFuZCBmb3JtYXRzXCI7XG4gICAgc3VwZXIoXCJ2YWxpZGF0aW9uX2Vycm9yXCIsIG1lc3NhZ2UsIDQwMCwgZGV0YWlscywgaGludCk7XG4gICAgdGhpcy5uYW1lID0gXCJWYWxpZGF0aW9uRXJyb3JcIjtcbiAgfVxufVxuXG5jbGFzcyBBcGlDbGllbnQge1xuICBwcml2YXRlIHJhdGVMaW1pdEluZm8/OiBSYXRlTGltaXRJbmZvO1xuXG4gIHByaXZhdGUgZ2V0QmFzZVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBnZXRDb25maWdWYWx1ZShcImJhc2VVcmxcIikgfHwgXCJodHRwczovL3NlbmRseS5saXZlXCI7XG4gIH1cblxuICBwcml2YXRlIGdldEhlYWRlcnMocmVxdWlyZUF1dGg6IGJvb2xlYW4gPSB0cnVlKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgIFwiVXNlci1BZ2VudFwiOiBgQHNlbmRseS9jbGkvJHt2ZXJzaW9ufWAsXG4gICAgfTtcblxuICAgIGlmIChyZXF1aXJlQXV0aCkge1xuICAgICAgY29uc3QgdG9rZW4gPSBnZXRBdXRoVG9rZW4oKTtcbiAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgdGhyb3cgbmV3IEF1dGhlbnRpY2F0aW9uRXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIGhlYWRlcnNbXCJBdXRob3JpemF0aW9uXCJdID0gYEJlYXJlciAke3Rva2VufWA7XG4gICAgfVxuXG4gICAgY29uc3Qgb3JnSWQgPSBnZXRFZmZlY3RpdmVWYWx1ZShcImN1cnJlbnRPcmdJZFwiKTtcbiAgICBpZiAob3JnSWQpIHtcbiAgICAgIGhlYWRlcnNbXCJYLU9yZ2FuaXphdGlvbi1JZFwiXSA9IG9yZ0lkO1xuICAgIH1cblxuICAgIHJldHVybiBoZWFkZXJzO1xuICB9XG5cbiAgYXN5bmMgcmVxdWVzdDxUPihcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgYm9keT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgcXVlcnk/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgdW5kZWZpbmVkPjtcbiAgICAgIHJlcXVpcmVBdXRoPzogYm9vbGVhbjtcbiAgICB9ID0ge30sXG4gICk6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IHsgYm9keSwgcXVlcnksIHJlcXVpcmVBdXRoID0gdHJ1ZSB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBtYXhSZXRyaWVzID0gZ2V0RWZmZWN0aXZlVmFsdWUoXCJtYXhSZXRyaWVzXCIpO1xuICAgIGNvbnN0IHRpbWVvdXQgPSBnZXRFZmZlY3RpdmVWYWx1ZShcInRpbWVvdXRcIik7XG5cbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKGAke3RoaXMuZ2V0QmFzZVVybCgpfSR7cGF0aH1gKTtcbiAgICBpZiAocXVlcnkpIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHF1ZXJ5KS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZChrZXksIFN0cmluZyh2YWx1ZSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBsZXQgbGFzdEVycm9yOiBFcnJvciB8IHVuZGVmaW5lZDtcblxuICAgIGZvciAobGV0IGF0dGVtcHQgPSAwOyBhdHRlbXB0IDw9IG1heFJldHJpZXM7IGF0dGVtcHQrKykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiBjb250cm9sbGVyLmFib3J0KCksIHRpbWVvdXQpO1xuXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLnRvU3RyaW5nKCksIHtcbiAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKHJlcXVpcmVBdXRoKSxcbiAgICAgICAgICBib2R5OiBib2R5ID8gSlNPTi5zdHJpbmdpZnkoYm9keSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG5cbiAgICAgICAgLy8gVXBkYXRlIHJhdGUgbGltaXQgaW5mb1xuICAgICAgICB0aGlzLnVwZGF0ZVJhdGVMaW1pdEluZm8ocmVzcG9uc2UuaGVhZGVycyk7XG5cbiAgICAgICAgLy8gUGFyc2UgcmVzcG9uc2VcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKS5jYXRjaCgoKSA9PiAoe30pKTtcblxuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihyZXNwb25zZS5zdGF0dXMsIGRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGEgYXMgVDtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxhc3RFcnJvciA9IGVycm9yIGFzIEVycm9yO1xuXG4gICAgICAgIC8vIERvbid0IHJldHJ5IG5vbi1yZXRyeWFibGUgZXJyb3JzICg0eHggY2xpZW50IGVycm9ycylcbiAgICAgICAgaWYgKCFpc1JldHJ5YWJsZUVycm9yKGVycm9yKSkge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRG9uJ3QgcmV0cnkgb24gbGFzdCBhdHRlbXB0XG4gICAgICAgIGlmIChhdHRlbXB0ID09PSBtYXhSZXRyaWVzKSB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFeHBvbmVudGlhbCBiYWNrb2ZmOiAxcywgMnMsIDRzLCBldGMuXG4gICAgICAgIGNvbnN0IGJhY2tvZmZNcyA9IE1hdGgubWluKDEwMDAgKiBNYXRoLnBvdygyLCBhdHRlbXB0KSwgMTAwMDApO1xuICAgICAgICBhd2FpdCBzbGVlcChiYWNrb2ZmTXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNob3VsZCBuZXZlciByZWFjaCBoZXJlLCBidXQgVHlwZVNjcmlwdCBuZWVkcyB0aGlzXG4gICAgdGhyb3cgbGFzdEVycm9yIHx8IG5ldyBFcnJvcihcIlJlcXVlc3QgZmFpbGVkXCIpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVSYXRlTGltaXRJbmZvKGhlYWRlcnM6IEhlYWRlcnMpOiB2b2lkIHtcbiAgICBjb25zdCBsaW1pdCA9IGhlYWRlcnMuZ2V0KFwiWC1SYXRlTGltaXQtTGltaXRcIik7XG4gICAgY29uc3QgcmVtYWluaW5nID0gaGVhZGVycy5nZXQoXCJYLVJhdGVMaW1pdC1SZW1haW5pbmdcIik7XG4gICAgY29uc3QgcmVzZXQgPSBoZWFkZXJzLmdldChcIlgtUmF0ZUxpbWl0LVJlc2V0XCIpO1xuXG4gICAgaWYgKGxpbWl0ICYmIHJlbWFpbmluZyAmJiByZXNldCkge1xuICAgICAgdGhpcy5yYXRlTGltaXRJbmZvID0ge1xuICAgICAgICBsaW1pdDogcGFyc2VJbnQobGltaXQsIDEwKSxcbiAgICAgICAgcmVtYWluaW5nOiBwYXJzZUludChyZW1haW5pbmcsIDEwKSxcbiAgICAgICAgcmVzZXQ6IHBhcnNlSW50KHJlc2V0LCAxMCksXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXJyb3Ioc3RhdHVzQ29kZTogbnVtYmVyLCBkYXRhOiBhbnkpOiBuZXZlciB7XG4gICAgY29uc3QgZXJyb3IgPSBkYXRhPy5lcnJvciB8fCBcInVua25vd25fZXJyb3JcIjtcbiAgICBjb25zdCBtZXNzYWdlID0gZGF0YT8ubWVzc2FnZSB8fCBgSFRUUCAke3N0YXR1c0NvZGV9YDtcbiAgICBjb25zdCBkZXRhaWxzID0gZGF0YT8uZGV0YWlscztcblxuICAgIHN3aXRjaCAoc3RhdHVzQ29kZSkge1xuICAgICAgY2FzZSA0MDE6XG4gICAgICBjYXNlIDQwMzpcbiAgICAgICAgLy8gRGV0ZWN0IGlmIHRoaXMgaXMgYW4gQVBJIGtleSByZXF1aXJlZCBlcnJvciB2cyBnZW5lcmFsIGF1dGggZXJyb3JcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGVycm9yID09PSBcImludmFsaWRfYXBpX2tleVwiIHx8XG4gICAgICAgICAgZXJyb3IgPT09IFwiYXBpX2tleV9yZXF1aXJlZFwiIHx8XG4gICAgICAgICAgbWVzc2FnZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcImFwaSBrZXlcIilcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEFwaUtleVJlcXVpcmVkRXJyb3IoXG4gICAgICAgICAgICBcIkFQSSBrZXkgcmVxdWlyZWQgZm9yIHNlbmRpbmcgbWVzc2FnZXNcIixcbiAgICAgICAgICAgIFwiU2V0IFNFTkRMWV9BUElfS0VZIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIGNyZWF0ZSBhIGtleSB3aXRoOlxcbiAgc2VuZGx5IGtleXMgY3JlYXRlIC0tdHlwZSB0ZXN0XCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgQXV0aGVudGljYXRpb25FcnJvcihtZXNzYWdlKTtcbiAgICAgIGNhc2UgNDAwOlxuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKG1lc3NhZ2UsIGRldGFpbHMpO1xuICAgICAgY2FzZSA0MDI6XG4gICAgICAgIHRocm93IG5ldyBJbnN1ZmZpY2llbnRDcmVkaXRzRXJyb3IobWVzc2FnZSk7XG4gICAgICBjYXNlIDQwNDpcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IobWVzc2FnZSk7XG4gICAgICBjYXNlIDQyOTpcbiAgICAgICAgY29uc3QgcmV0cnlBZnRlciA9IGRhdGE/LnJldHJ5QWZ0ZXIgfHwgNjA7XG4gICAgICAgIHRocm93IG5ldyBSYXRlTGltaXRFcnJvcihyZXRyeUFmdGVyLCBtZXNzYWdlKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnN0IGRlZmF1bHRIaW50ID1cbiAgICAgICAgICBzdGF0dXNDb2RlID49IDUwMFxuICAgICAgICAgICAgPyBcIlRoaXMgaXMgYSBzZXJ2ZXIgZXJyb3IuIFRyeSBhZ2FpbiBsYXRlciBvciBjaGVjayBodHRwczovL3N0YXR1cy5zZW5kbHkubGl2ZVwiXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgdGhyb3cgbmV3IEFwaUVycm9yKGVycm9yLCBtZXNzYWdlLCBzdGF0dXNDb2RlLCBkZXRhaWxzLCBkZWZhdWx0SGludCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UmF0ZUxpbWl0SW5mbygpOiBSYXRlTGltaXRJbmZvIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yYXRlTGltaXRJbmZvO1xuICB9XG5cbiAgLy8gQ29udmVuaWVuY2UgbWV0aG9kc1xuICBhc3luYyBnZXQ8VD4oXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIHF1ZXJ5PzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IHVuZGVmaW5lZD4sXG4gICAgcmVxdWlyZUF1dGg6IGJvb2xlYW4gPSB0cnVlLFxuICApOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PFQ+KFwiR0VUXCIsIHBhdGgsIHsgcXVlcnksIHJlcXVpcmVBdXRoIH0pO1xuICB9XG5cbiAgYXN5bmMgcG9zdDxUPihcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgYm9keT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHJlcXVpcmVBdXRoOiBib29sZWFuID0gdHJ1ZSxcbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdDxUPihcIlBPU1RcIiwgcGF0aCwgeyBib2R5LCByZXF1aXJlQXV0aCB9KTtcbiAgfVxuXG4gIGFzeW5jIHBhdGNoPFQ+KFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBib2R5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgcmVxdWlyZUF1dGg6IGJvb2xlYW4gPSB0cnVlLFxuICApOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PFQ+KFwiUEFUQ0hcIiwgcGF0aCwgeyBib2R5LCByZXF1aXJlQXV0aCB9KTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZTxUPihwYXRoOiBzdHJpbmcsIHJlcXVpcmVBdXRoOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8VD4oXCJERUxFVEVcIiwgcGF0aCwgeyByZXF1aXJlQXV0aCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGxvYWQgYSBmaWxlIHVzaW5nIG11bHRpcGFydC9mb3JtLWRhdGFcbiAgICogVXNlZCBmb3IgYmF0Y2ggQ1NWIHVwbG9hZHMgdG8gU3VwYWJhc2Ugc3RvcmFnZVxuICAgKi9cbiAgYXN5bmMgdXBsb2FkRmlsZTxUPihcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgZmlsZToge1xuICAgICAgYnVmZmVyOiBCdWZmZXI7XG4gICAgICBmaWxlbmFtZTogc3RyaW5nO1xuICAgICAgbWltZXR5cGU/OiBzdHJpbmc7XG4gICAgfSxcbiAgICByZXF1aXJlQXV0aDogYm9vbGVhbiA9IHRydWUsXG4gICk6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IG1heFJldHJpZXMgPSBnZXRFZmZlY3RpdmVWYWx1ZShcIm1heFJldHJpZXNcIik7XG4gICAgY29uc3QgdGltZW91dCA9IGdldEVmZmVjdGl2ZVZhbHVlKFwidGltZW91dFwiKTtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmdldEJhc2VVcmwoKX0ke3BhdGh9YDtcblxuICAgIC8vIEJ1aWxkIG11bHRpcGFydCBmb3JtIGRhdGEgbWFudWFsbHkgKE5vZGUuanMgY29tcGF0aWJsZSlcbiAgICBjb25zdCBib3VuZGFyeSA9IGAtLS0tRm9ybUJvdW5kYXJ5JHtEYXRlLm5vdygpfSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIpfWA7XG4gICAgY29uc3QgbWltZXR5cGUgPSBmaWxlLm1pbWV0eXBlIHx8IFwidGV4dC9jc3ZcIjtcblxuICAgIGNvbnN0IGhlYWRlciA9IEJ1ZmZlci5mcm9tKFxuICAgICAgYC0tJHtib3VuZGFyeX1cXHJcXG5gICtcbiAgICAgICAgYENvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT1cImZpbGVcIjsgZmlsZW5hbWU9XCIke2ZpbGUuZmlsZW5hbWV9XCJcXHJcXG5gICtcbiAgICAgICAgYENvbnRlbnQtVHlwZTogJHttaW1ldHlwZX1cXHJcXG5cXHJcXG5gLFxuICAgICk7XG4gICAgY29uc3QgZm9vdGVyID0gQnVmZmVyLmZyb20oYFxcclxcbi0tJHtib3VuZGFyeX0tLVxcclxcbmApO1xuICAgIGNvbnN0IGJvZHkgPSBCdWZmZXIuY29uY2F0KFtoZWFkZXIsIGZpbGUuYnVmZmVyLCBmb290ZXJdKTtcblxuICAgIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBgbXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9JHtib3VuZGFyeX1gLFxuICAgICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgIFwiVXNlci1BZ2VudFwiOiBgQHNlbmRseS9jbGkvJHt2ZXJzaW9ufWAsXG4gICAgfTtcblxuICAgIGlmIChyZXF1aXJlQXV0aCkge1xuICAgICAgY29uc3QgdG9rZW4gPSBnZXRBdXRoVG9rZW4oKTtcbiAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgdGhyb3cgbmV3IEF1dGhlbnRpY2F0aW9uRXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIGhlYWRlcnNbXCJBdXRob3JpemF0aW9uXCJdID0gYEJlYXJlciAke3Rva2VufWA7XG4gICAgfVxuXG4gICAgbGV0IGxhc3RFcnJvcjogRXJyb3IgfCB1bmRlZmluZWQ7XG5cbiAgICBmb3IgKGxldCBhdHRlbXB0ID0gMDsgYXR0ZW1wdCA8PSBtYXhSZXRyaWVzOyBhdHRlbXB0KyspIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4gY29udHJvbGxlci5hYm9ydCgpLCB0aW1lb3V0KTtcblxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgICBib2R5LFxuICAgICAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlUmF0ZUxpbWl0SW5mbyhyZXNwb25zZS5oZWFkZXJzKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKS5jYXRjaCgoKSA9PiAoe30pKTtcblxuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihyZXNwb25zZS5zdGF0dXMsIGRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGEgYXMgVDtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxhc3RFcnJvciA9IGVycm9yIGFzIEVycm9yO1xuXG4gICAgICAgIGlmICghaXNSZXRyeWFibGVFcnJvcihlcnJvcikpIHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhdHRlbXB0ID09PSBtYXhSZXRyaWVzKSB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiYWNrb2ZmTXMgPSBNYXRoLm1pbigxMDAwICogTWF0aC5wb3coMiwgYXR0ZW1wdCksIDEwMDAwKTtcbiAgICAgICAgYXdhaXQgc2xlZXAoYmFja29mZk1zKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBsYXN0RXJyb3IgfHwgbmV3IEVycm9yKFwiVXBsb2FkIGZhaWxlZFwiKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgYXBpQ2xpZW50ID0gbmV3IEFwaUNsaWVudCgpO1xuIl19
@@ -9,6 +9,7 @@
9
9
  * - SENDLY_NO_COLOR: Disable colored output (any value)
10
10
  * - SENDLY_TIMEOUT: Request timeout in ms (default: 30000)
11
11
  * - SENDLY_MAX_RETRIES: Max retry attempts (default: 3)
12
+ * - SENDLY_ORG_ID: Override active organization ID
12
13
  * - SENDLY_CONFIG_KEY: Custom encryption key (for CI/CD)
13
14
  * - CI: Auto-detect CI mode (disables interactive prompts)
14
15
  */
@@ -26,6 +27,9 @@ export interface SendlyConfig {
26
27
  colorEnabled: boolean;
27
28
  timeout: number;
28
29
  maxRetries: number;
30
+ currentOrgId?: string;
31
+ currentOrgName?: string;
32
+ currentOrgSlug?: string;
29
33
  }
30
34
  /**
31
35
  * Check if running in CI environment
@@ -52,4 +56,11 @@ export declare function setApiKey(apiKey: string): void;
52
56
  export declare function setAuthTokens(accessToken: string, refreshToken: string, expiresIn: number, userId: string, email: string): void;
53
57
  export declare function getConfigPath(): string;
54
58
  export declare function getConfigDir(): string;
59
+ export declare function setCurrentOrg(id: string, name: string, slug?: string): void;
60
+ export declare function getCurrentOrg(): {
61
+ id: string;
62
+ name: string;
63
+ slug?: string;
64
+ } | null;
65
+ export declare function clearCurrentOrg(): void;
55
66
  export { config };
@@ -9,6 +9,7 @@
9
9
  * - SENDLY_NO_COLOR: Disable colored output (any value)
10
10
  * - SENDLY_TIMEOUT: Request timeout in ms (default: 30000)
11
11
  * - SENDLY_MAX_RETRIES: Max retry attempts (default: 3)
12
+ * - SENDLY_ORG_ID: Override active organization ID
12
13
  * - SENDLY_CONFIG_KEY: Custom encryption key (for CI/CD)
13
14
  * - CI: Auto-detect CI mode (disables interactive prompts)
14
15
  */
@@ -195,6 +196,11 @@ export function getEffectiveValue(key) {
195
196
  }
196
197
  }
197
198
  break;
199
+ case "currentOrgId":
200
+ if (process.env.SENDLY_ORG_ID) {
201
+ return process.env.SENDLY_ORG_ID;
202
+ }
203
+ break;
198
204
  }
199
205
  // Fall back to config file value
200
206
  return config.get(key);
@@ -271,5 +277,23 @@ export function getConfigPath() {
271
277
  export function getConfigDir() {
272
278
  return CONFIG_DIR;
273
279
  }
280
+ export function setCurrentOrg(id, name, slug) {
281
+ config.set("currentOrgId", id);
282
+ config.set("currentOrgName", name);
283
+ if (slug)
284
+ config.set("currentOrgSlug", slug);
285
+ }
286
+ export function getCurrentOrg() {
287
+ const id = getEffectiveValue("currentOrgId");
288
+ const name = config.get("currentOrgName");
289
+ if (!id)
290
+ return null;
291
+ return { id, name: name || id, slug: config.get("currentOrgSlug") };
292
+ }
293
+ export function clearCurrentOrg() {
294
+ config.delete("currentOrgId");
295
+ config.delete("currentOrgName");
296
+ config.delete("currentOrgSlug");
297
+ }
274
298
  export { config };
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUVILE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM5QixPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM5QixPQUFPLEtBQUssTUFBTSxNQUFNLGFBQWEsQ0FBQztBQXdCdEM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsSUFBSTtJQUNsQixPQUFPLENBQUMsQ0FBQyxDQUNQLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCO1FBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYztRQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVM7UUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRO1FBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTTtRQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FDdEIsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxlQUFlO0lBQzdCLE9BQU8sQ0FBQyxDQUFDLENBQ1AsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlO1FBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUTtRQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxNQUFNLENBQzVCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDdEQsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDO0FBRWxDLDRDQUE0QztBQUM1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QUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUMzQixXQUFtQixFQUNuQixZQUFvQixFQUNwQixTQUFpQixFQUNqQixNQUFjLEVBQ2QsS0FBYTtJQUViLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM1RCxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM3QixNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWE7SUFDM0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVk7SUFDMUIsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQztBQUVELE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ0xJIENvbmZpZ3VyYXRpb24gTWFuYWdlbWVudFxuICogU3RvcmVzIHVzZXIgcHJlZmVyZW5jZXMgYW5kIGNyZWRlbnRpYWxzIGluIH4vLnNlbmRseS9cbiAqXG4gKiBFbnZpcm9ubWVudCBWYXJpYWJsZXMgKHRha2UgcHJlY2VkZW5jZSBvdmVyIGNvbmZpZyBmaWxlKTpcbiAqIC0gU0VORExZX0FQSV9LRVk6IEFQSSBrZXkgZm9yIGF1dGhlbnRpY2F0aW9uXG4gKiAtIFNFTkRMWV9CQVNFX1VSTDogQ3VzdG9tIEFQSSBlbmRwb2ludFxuICogLSBTRU5ETFlfT1VUUFVUX0ZPUk1BVDogRGVmYXVsdCBvdXRwdXQgZm9ybWF0IChodW1hbi9qc29uKVxuICogLSBTRU5ETFlfTk9fQ09MT1I6IERpc2FibGUgY29sb3JlZCBvdXRwdXQgKGFueSB2YWx1ZSlcbiAqIC0gU0VORExZX1RJTUVPVVQ6IFJlcXVlc3QgdGltZW91dCBpbiBtcyAoZGVmYXVsdDogMzAwMDApXG4gKiAtIFNFTkRMWV9NQVhfUkVUUklFUzogTWF4IHJldHJ5IGF0dGVtcHRzIChkZWZhdWx0OiAzKVxuICogLSBTRU5ETFlfQ09ORklHX0tFWTogQ3VzdG9tIGVuY3J5cHRpb24ga2V5IChmb3IgQ0kvQ0QpXG4gKiAtIENJOiBBdXRvLWRldGVjdCBDSSBtb2RlIChkaXNhYmxlcyBpbnRlcmFjdGl2ZSBwcm9tcHRzKVxuICovXG5cbmltcG9ydCBDb25mIGZyb20gXCJjb25mXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgKiBhcyBvcyBmcm9tIFwibm9kZTpvc1wiO1xuaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gXCJub2RlOmNyeXB0b1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlbmRseUNvbmZpZyB7XG4gIC8vIEF1dGhlbnRpY2F0aW9uXG4gIGFwaUtleT86IHN0cmluZztcbiAgYWNjZXNzVG9rZW4/OiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbj86IHN0cmluZztcbiAgdG9rZW5FeHBpcmVzQXQ/OiBudW1iZXI7XG4gIHVzZXJJZD86IHN0cmluZztcbiAgZW1haWw/OiBzdHJpbmc7XG5cbiAgLy8gRW52aXJvbm1lbnRcbiAgZW52aXJvbm1lbnQ6IFwidGVzdFwiIHwgXCJsaXZlXCI7XG4gIGJhc2VVcmw6IHN0cmluZztcblxuICAvLyBQcmVmZXJlbmNlc1xuICBkZWZhdWx0Rm9ybWF0OiBcImh1bWFuXCIgfCBcImpzb25cIjtcbiAgY29sb3JFbmFibGVkOiBib29sZWFuO1xuXG4gIC8vIE5ldHdvcmtcbiAgdGltZW91dDogbnVtYmVyO1xuICBtYXhSZXRyaWVzOiBudW1iZXI7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgcnVubmluZyBpbiBDSSBlbnZpcm9ubWVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDSSgpOiBib29sZWFuIHtcbiAgcmV0dXJuICEhKFxuICAgIHByb2Nlc3MuZW52LkNJIHx8XG4gICAgcHJvY2Vzcy5lbnYuQ09OVElOVU9VU19JTlRFR1JBVElPTiB8fFxuICAgIHByb2Nlc3MuZW52LkdJVEhVQl9BQ1RJT05TIHx8XG4gICAgcHJvY2Vzcy5lbnYuR0lUTEFCX0NJIHx8XG4gICAgcHJvY2Vzcy5lbnYuQ0lSQ0xFQ0kgfHxcbiAgICBwcm9jZXNzLmVudi5UUkFWSVMgfHxcbiAgICBwcm9jZXNzLmVudi5CVUlMREtJVEVcbiAgKTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBjb2xvciBvdXRwdXQgaXMgZGlzYWJsZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ29sb3JEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgcmV0dXJuICEhKFxuICAgIHByb2Nlc3MuZW52LlNFTkRMWV9OT19DT0xPUiB8fFxuICAgIHByb2Nlc3MuZW52Lk5PX0NPTE9SIHx8XG4gICAgcHJvY2Vzcy5lbnYuVEVSTSA9PT0gXCJkdW1iXCJcbiAgKTtcbn1cblxuY29uc3QgQ09ORklHX0RJUiA9IHBhdGguam9pbihvcy5ob21lZGlyKCksIFwiLnNlbmRseVwiKTtcbmNvbnN0IENPTkZJR19GSUxFID0gXCJjb25maWcuanNvblwiO1xuXG4vLyBPbGQgZGVmYXVsdCBrZXkgLSB1c2VkIGZvciBtaWdyYXRpb24gb25seVxuY29uc3QgT0xEX0RFRkFVTFRfS0VZID0gXCJzZW5kbHktY2xpLWRlZmF1bHQta2V5LXYxXCI7XG5cbi8qKlxuICogRGVyaXZlIGEgbWFjaGluZS1zcGVjaWZpYyBlbmNyeXB0aW9uIGtleS5cbiAqIFRoaXMgZW5zdXJlcyBlYWNoIGluc3RhbGxhdGlvbiBoYXMgYSB1bmlxdWUga2V5IHRoYXQgY2FuJ3QgYmUgZWFzaWx5IGd1ZXNzZWQuXG4gKlxuICogVGhlIGtleSBpcyBkZXJpdmVkIGZyb20gbWFjaGluZS1zcGVjaWZpYyBpZGVudGlmaWVycyB0aGF0IGFyZTpcbiAqIC0gVW5pcXVlIHBlciBtYWNoaW5lXG4gKiAtIFN0YWJsZSBhY3Jvc3Mgc2Vzc2lvbnNcbiAqIC0gTm90IHB1YmxpY2x5IGtub3duXG4gKi9cbmZ1bmN0aW9uIGRlcml2ZUVuY3J5cHRpb25LZXkoKTogc3RyaW5nIHtcbiAgY29uc3QgbWFjaGluZUlkID0gW29zLmhvc3RuYW1lKCksIG9zLnVzZXJJbmZvKCkudXNlcm5hbWUsIG9zLmhvbWVkaXIoKV0uam9pbihcbiAgICBcIjpcIixcbiAgKTtcblxuICByZXR1cm4gY3J5cHRvXG4gICAgLmNyZWF0ZUhhc2goXCJzaGEyNTZcIilcbiAgICAudXBkYXRlKGBzZW5kbHk6JHttYWNoaW5lSWR9OnYyYClcbiAgICAuZGlnZXN0KFwiaGV4XCIpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgZW5jcnlwdGlvbiBrZXkgdG8gdXNlIGZvciBjb25maWcuXG4gKiBQcmlvcml0eTogU0VORExZX0NPTkZJR19LRVkgZW52IHZhciA+IG1hY2hpbmUtZGVyaXZlZCBrZXlcbiAqL1xuZnVuY3Rpb24gZ2V0RW5jcnlwdGlvbktleSgpOiBzdHJpbmcge1xuICAvLyBFeHBsaWNpdCBrZXkgdGFrZXMgcHJlY2VkZW5jZSAoZm9yIENJL0NELCB0ZXN0aW5nLCBhZHZhbmNlZCB1c2VycylcbiAgaWYgKHByb2Nlc3MuZW52LlNFTkRMWV9DT05GSUdfS0VZKSB7XG4gICAgcmV0dXJuIHByb2Nlc3MuZW52LlNFTkRMWV9DT05GSUdfS0VZO1xuICB9XG4gIHJldHVybiBkZXJpdmVFbmNyeXB0aW9uS2V5KCk7XG59XG5cbi8vIEVuc3VyZSBjb25maWcgZGlyZWN0b3J5IGV4aXN0cyB3aXRoIHNlY3VyZSBwZXJtaXNzaW9uc1xuaWYgKCFmcy5leGlzdHNTeW5jKENPTkZJR19ESVIpKSB7XG4gIGZzLm1rZGlyU3luYyhDT05GSUdfRElSLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgbW9kZTogMG83MDAgfSk7XG59XG5cbmNvbnN0IERFRkFVTFRfQ09ORklHOiBTZW5kbHlDb25maWcgPSB7XG4gIGVudmlyb25tZW50OiBcInRlc3RcIixcbiAgYmFzZVVybDogXCJodHRwczovL3NlbmRseS5saXZlXCIsXG4gIGRlZmF1bHRGb3JtYXQ6IFwiaHVtYW5cIixcbiAgY29sb3JFbmFibGVkOiB0cnVlLFxuICB0aW1lb3V0OiAzMDAwMCxcbiAgbWF4UmV0cmllczogMyxcbn07XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBjb25maWcgd2l0aCBhdXRvbWF0aWMgbWlncmF0aW9uIGZyb20gb2xkIGVuY3J5cHRpb24ga2V5LlxuICogVGhpcyBlbnN1cmVzIGV4aXN0aW5nIHVzZXJzIGRvbid0IGxvc2UgdGhlaXIgY3JlZGVudGlhbHMuXG4gKi9cbmZ1bmN0aW9uIGluaXRpYWxpemVDb25maWcoKTogQ29uZjxTZW5kbHlDb25maWc+IHtcbiAgY29uc3QgbmV3S2V5ID0gZ2V0RW5jcnlwdGlvbktleSgpO1xuXG4gIC8vIFRyeSB0byBpbml0aWFsaXplIHdpdGggbmV3IGtleSBmaXJzdFxuICB0cnkge1xuICAgIGNvbnN0IG5ld0NvbmZpZyA9IG5ldyBDb25mPFNlbmRseUNvbmZpZz4oe1xuICAgICAgcHJvamVjdE5hbWU6IFwic2VuZGx5XCIsXG4gICAgICBjd2Q6IENPTkZJR19ESVIsXG4gICAgICBjb25maWdOYW1lOiBcImNvbmZpZ1wiLFxuICAgICAgZGVmYXVsdHM6IERFRkFVTFRfQ09ORklHLFxuICAgICAgZW5jcnlwdGlvbktleTogbmV3S2V5LFxuICAgIH0pO1xuXG4gICAgLy8gVHJ5IHRvIHJlYWQgYSB2YWx1ZSB0byB2ZXJpZnkgZGVjcnlwdGlvbiB3b3Jrc1xuICAgIG5ld0NvbmZpZy5nZXQoXCJlbnZpcm9ubWVudFwiKTtcbiAgICByZXR1cm4gbmV3Q29uZmlnO1xuICB9IGNhdGNoIHtcbiAgICAvLyBOZXcga2V5IGRpZG4ndCB3b3JrIC0gdHJ5IG1pZ3JhdGlvbiBmcm9tIG9sZCBrZXlcbiAgfVxuXG4gIC8vIE1pZ3JhdGlvbjogVHJ5IHRvIHJlYWQgd2l0aCBvbGQgZGVmYXVsdCBrZXlcbiAgdHJ5IHtcbiAgICBjb25zdCBvbGRDb25maWcgPSBuZXcgQ29uZjxTZW5kbHlDb25maWc+KHtcbiAgICAgIHByb2plY3ROYW1lOiBcInNlbmRseVwiLFxuICAgICAgY3dkOiBDT05GSUdfRElSLFxuICAgICAgY29uZmlnTmFtZTogXCJjb25maWdcIixcbiAgICAgIGRlZmF1bHRzOiBERUZBVUxUX0NPTkZJRyxcbiAgICAgIGVuY3J5cHRpb25LZXk6IE9MRF9ERUZBVUxUX0tFWSxcbiAgICB9KTtcblxuICAgIC8vIFJlYWQgYWxsIGRhdGEgd2l0aCBvbGQga2V5XG4gICAgY29uc3Qgb2xkRGF0YSA9IHsgLi4ub2xkQ29uZmlnLnN0b3JlIH07XG4gICAgY29uc3QgaGFzRGF0YSA9IE9iamVjdC5rZXlzKG9sZERhdGEpLnNvbWUoXG4gICAgICAoaykgPT5cbiAgICAgICAgIU9iamVjdC5rZXlzKERFRkFVTFRfQ09ORklHKS5pbmNsdWRlcyhrKSB8fFxuICAgICAgICBvbGREYXRhW2sgYXMga2V5b2YgU2VuZGx5Q29uZmlnXSAhPT1cbiAgICAgICAgICBERUZBVUxUX0NPTkZJR1trIGFzIGtleW9mIFNlbmRseUNvbmZpZ10sXG4gICAgKTtcblxuICAgIGlmIChoYXNEYXRhKSB7XG4gICAgICAvLyBDbGVhciBvbGQgY29uZmlnIGZpbGVcbiAgICAgIG9sZENvbmZpZy5jbGVhcigpO1xuXG4gICAgICAvLyBDcmVhdGUgbmV3IGNvbmZpZyB3aXRoIG5ldyBrZXlcbiAgICAgIGNvbnN0IG5ld0NvbmZpZyA9IG5ldyBDb25mPFNlbmRseUNvbmZpZz4oe1xuICAgICAgICBwcm9qZWN0TmFtZTogXCJzZW5kbHlcIixcbiAgICAgICAgY3dkOiBDT05GSUdfRElSLFxuICAgICAgICBjb25maWdOYW1lOiBcImNvbmZpZ1wiLFxuICAgICAgICBkZWZhdWx0czogREVGQVVMVF9DT05GSUcsXG4gICAgICAgIGVuY3J5cHRpb25LZXk6IG5ld0tleSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBSZXN0b3JlIGRhdGEgd2l0aCBuZXcgZW5jcnlwdGlvblxuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2xkRGF0YSkpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBuZXdDb25maWcuc2V0KGtleSBhcyBrZXlvZiBTZW5kbHlDb25maWcsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3Q29uZmlnO1xuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgLy8gT2xkIGtleSBhbHNvIGRpZG4ndCB3b3JrIC0gY29ycnVwdGVkIG9yIGZyZXNoIGluc3RhbGxcbiAgfVxuXG4gIC8vIEZyZXNoIGluc3RhbGwgb3IgY29ycnVwdGVkIC0gc3RhcnQgd2l0aCBuZXcga2V5XG4gIHJldHVybiBuZXcgQ29uZjxTZW5kbHlDb25maWc+KHtcbiAgICBwcm9qZWN0TmFtZTogXCJzZW5kbHlcIixcbiAgICBjd2Q6IENPTkZJR19ESVIsXG4gICAgY29uZmlnTmFtZTogXCJjb25maWdcIixcbiAgICBkZWZhdWx0czogREVGQVVMVF9DT05GSUcsXG4gICAgZW5jcnlwdGlvbktleTogbmV3S2V5LFxuICB9KTtcbn1cblxuY29uc3QgY29uZmlnID0gaW5pdGlhbGl6ZUNvbmZpZygpO1xuXG4vKipcbiAqIEdldCBlZmZlY3RpdmUgY29uZmlnIHZhbHVlIHdpdGggZW52aXJvbm1lbnQgdmFyaWFibGUgb3ZlcnJpZGVcbiAqIFByaW9yaXR5OiBlbnYgdmFyID4gY29uZmlnIGZpbGUgPiBkZWZhdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFZmZlY3RpdmVWYWx1ZTxLIGV4dGVuZHMga2V5b2YgU2VuZGx5Q29uZmlnPihcbiAga2V5OiBLLFxuKTogU2VuZGx5Q29uZmlnW0tdIHtcbiAgLy8gRW52aXJvbm1lbnQgdmFyaWFibGUgb3ZlcnJpZGVzXG4gIHN3aXRjaCAoa2V5KSB7XG4gICAgY2FzZSBcImFwaUtleVwiOlxuICAgICAgaWYgKHByb2Nlc3MuZW52LlNFTkRMWV9BUElfS0VZKSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzLmVudi5TRU5ETFlfQVBJX0tFWSBhcyBTZW5kbHlDb25maWdbS107XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiYmFzZVVybFwiOlxuICAgICAgaWYgKHByb2Nlc3MuZW52LlNFTkRMWV9CQVNFX1VSTCkge1xuICAgICAgICByZXR1cm4gcHJvY2Vzcy5lbnYuU0VORExZX0JBU0VfVVJMIGFzIFNlbmRseUNvbmZpZ1tLXTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJkZWZhdWx0Rm9ybWF0XCI6XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuU0VORExZX09VVFBVVF9GT1JNQVQpIHtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gcHJvY2Vzcy5lbnYuU0VORExZX09VVFBVVF9GT1JNQVQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gXCJqc29uXCIgfHwgZm9ybWF0ID09PSBcImh1bWFuXCIpIHtcbiAgICAgICAgICByZXR1cm4gZm9ybWF0IGFzIFNlbmRseUNvbmZpZ1tLXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImNvbG9yRW5hYmxlZFwiOlxuICAgICAgaWYgKGlzQ29sb3JEaXNhYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZSBhcyBTZW5kbHlDb25maWdbS107XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwidGltZW91dFwiOlxuICAgICAgaWYgKHByb2Nlc3MuZW52LlNFTkRMWV9USU1FT1VUKSB7XG4gICAgICAgIGNvbnN0IHRpbWVvdXQgPSBwYXJzZUludChwcm9jZXNzLmVudi5TRU5ETFlfVElNRU9VVCwgMTApO1xuICAgICAgICBpZiAoIWlzTmFOKHRpbWVvdXQpICYmIHRpbWVvdXQgPiAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRpbWVvdXQgYXMgU2VuZGx5Q29uZmlnW0tdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwibWF4UmV0cmllc1wiOlxuICAgICAgaWYgKHByb2Nlc3MuZW52LlNFTkRMWV9NQVhfUkVUUklFUykge1xuICAgICAgICBjb25zdCByZXRyaWVzID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuU0VORExZX01BWF9SRVRSSUVTLCAxMCk7XG4gICAgICAgIGlmICghaXNOYU4ocmV0cmllcykgJiYgcmV0cmllcyA+PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIHJldHJpZXMgYXMgU2VuZGx5Q29uZmlnW0tdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgfVxuXG4gIC8vIEZhbGwgYmFjayB0byBjb25maWcgZmlsZSB2YWx1ZVxuICByZXR1cm4gY29uZmlnLmdldChrZXkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlnKCk6IFNlbmRseUNvbmZpZyB7XG4gIHJldHVybiBjb25maWcuc3RvcmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRDb25maWc8SyBleHRlbmRzIGtleW9mIFNlbmRseUNvbmZpZz4oXG4gIGtleTogSyxcbiAgdmFsdWU6IFNlbmRseUNvbmZpZ1tLXSxcbik6IHZvaWQge1xuICBjb25maWcuc2V0KGtleSwgdmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlnVmFsdWU8SyBleHRlbmRzIGtleW9mIFNlbmRseUNvbmZpZz4oXG4gIGtleTogSyxcbik6IFNlbmRseUNvbmZpZ1tLXSB7XG4gIHJldHVybiBjb25maWcuZ2V0KGtleSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhckNvbmZpZygpOiB2b2lkIHtcbiAgY29uZmlnLmNsZWFyKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhckF1dGgoKTogdm9pZCB7XG4gIGNvbmZpZy5kZWxldGUoXCJhcGlLZXlcIik7XG4gIGNvbmZpZy5kZWxldGUoXCJhY2Nlc3NUb2tlblwiKTtcbiAgY29uZmlnLmRlbGV0ZShcInJlZnJlc2hUb2tlblwiKTtcbiAgY29uZmlnLmRlbGV0ZShcInRva2VuRXhwaXJlc0F0XCIpO1xuICBjb25maWcuZGVsZXRlKFwidXNlcklkXCIpO1xuICBjb25maWcuZGVsZXRlKFwiZW1haWxcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0F1dGhlbnRpY2F0ZWQoKTogYm9vbGVhbiB7XG4gIC8vIENoZWNrIGVudiB2YXIgZmlyc3RcbiAgaWYgKHByb2Nlc3MuZW52LlNFTkRMWV9BUElfS0VZKSByZXR1cm4gdHJ1ZTtcblxuICBjb25zdCBhcGlLZXkgPSBjb25maWcuZ2V0KFwiYXBpS2V5XCIpO1xuICBjb25zdCBhY2Nlc3NUb2tlbiA9IGNvbmZpZy5nZXQoXCJhY2Nlc3NUb2tlblwiKTtcbiAgcmV0dXJuICEhKGFwaUtleSB8fCBhY2Nlc3NUb2tlbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBdXRoVG9rZW4oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgLy8gRW52aXJvbm1lbnQgdmFyaWFibGUgdGFrZXMgaGlnaGVzdCBwcmVjZWRlbmNlXG4gIGlmIChwcm9jZXNzLmVudi5TRU5ETFlfQVBJX0tFWSkge1xuICAgIHJldHVybiBwcm9jZXNzLmVudi5TRU5ETFlfQVBJX0tFWTtcbiAgfVxuXG4gIC8vIFRoZW4gc3RvcmVkIEFQSSBrZXlcbiAgY29uc3QgYXBpS2V5ID0gY29uZmlnLmdldChcImFwaUtleVwiKTtcbiAgaWYgKGFwaUtleSkgcmV0dXJuIGFwaUtleTtcblxuICAvLyBGaW5hbGx5LCBhY2Nlc3MgdG9rZW4gKGlmIG5vdCBleHBpcmVkKVxuICBjb25zdCBhY2Nlc3NUb2tlbiA9IGNvbmZpZy5nZXQoXCJhY2Nlc3NUb2tlblwiKTtcbiAgY29uc3QgZXhwaXJlc0F0ID0gY29uZmlnLmdldChcInRva2VuRXhwaXJlc0F0XCIpO1xuXG4gIGlmIChhY2Nlc3NUb2tlbiAmJiBleHBpcmVzQXQgJiYgRGF0ZS5ub3coKSA8IGV4cGlyZXNBdCkge1xuICAgIHJldHVybiBhY2Nlc3NUb2tlbjtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRBcGlLZXkoYXBpS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgLy8gVmFsaWRhdGUgQVBJIGtleSBmb3JtYXRcbiAgaWYgKCEvXnNrXyh0ZXN0fGxpdmUpX3YxX1thLXpBLVowLTlfLV0rJC8udGVzdChhcGlLZXkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJJbnZhbGlkIEFQSSBrZXkgZm9ybWF0LiBFeHBlY3RlZCBza190ZXN0X3YxX3h4eCBvciBza19saXZlX3YxX3h4eFwiLFxuICAgICk7XG4gIH1cblxuICBjb25maWcuc2V0KFwiYXBpS2V5XCIsIGFwaUtleSk7XG5cbiAgLy8gU2V0IGVudmlyb25tZW50IGJhc2VkIG9uIGtleSB0eXBlXG4gIGlmIChhcGlLZXkuc3RhcnRzV2l0aChcInNrX3Rlc3RfXCIpKSB7XG4gICAgY29uZmlnLnNldChcImVudmlyb25tZW50XCIsIFwidGVzdFwiKTtcbiAgfSBlbHNlIHtcbiAgICBjb25maWcuc2V0KFwiZW52aXJvbm1lbnRcIiwgXCJsaXZlXCIpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRBdXRoVG9rZW5zKFxuICBhY2Nlc3NUb2tlbjogc3RyaW5nLFxuICByZWZyZXNoVG9rZW46IHN0cmluZyxcbiAgZXhwaXJlc0luOiBudW1iZXIsXG4gIHVzZXJJZDogc3RyaW5nLFxuICBlbWFpbDogc3RyaW5nLFxuKTogdm9pZCB7XG4gIGNvbmZpZy5zZXQoXCJhY2Nlc3NUb2tlblwiLCBhY2Nlc3NUb2tlbik7XG4gIGNvbmZpZy5zZXQoXCJyZWZyZXNoVG9rZW5cIiwgcmVmcmVzaFRva2VuKTtcbiAgY29uZmlnLnNldChcInRva2VuRXhwaXJlc0F0XCIsIERhdGUubm93KCkgKyBleHBpcmVzSW4gKiAxMDAwKTtcbiAgY29uZmlnLnNldChcInVzZXJJZFwiLCB1c2VySWQpO1xuICBjb25maWcuc2V0KFwiZW1haWxcIiwgZW1haWwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlnUGF0aCgpOiBzdHJpbmcge1xuICByZXR1cm4gcGF0aC5qb2luKENPTkZJR19ESVIsIENPTkZJR19GSUxFKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZ0RpcigpOiBzdHJpbmcge1xuICByZXR1cm4gQ09ORklHX0RJUjtcbn1cblxuZXhwb3J0IHsgY29uZmlnIH07XG4iXX0=
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxLQUFLLE1BQU0sTUFBTSxhQUFhLENBQUM7QUE2QnRDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLElBQUk7SUFDbEIsT0FBTyxDQUFDLENBQUMsQ0FDUCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQjtRQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWM7UUFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTO1FBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUTtRQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU07UUFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQ3RCLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZUFBZTtJQUM3QixPQUFPLENBQUMsQ0FBQyxDQUNQLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZTtRQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVE7UUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUM1QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3RELE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQztBQUVsQyw0Q0FBNEM7QUFD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LENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWE7SUFLM0IsTUFBTSxFQUFFLEdBQUcsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0MsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzFDLElBQUksQ0FBQyxFQUFFO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDckIsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7QUFDdEUsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlO0lBQzdCLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDOUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDTEkgQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50XG4gKiBTdG9yZXMgdXNlciBwcmVmZXJlbmNlcyBhbmQgY3JlZGVudGlhbHMgaW4gfi8uc2VuZGx5L1xuICpcbiAqIEVudmlyb25tZW50IFZhcmlhYmxlcyAodGFrZSBwcmVjZWRlbmNlIG92ZXIgY29uZmlnIGZpbGUpOlxuICogLSBTRU5ETFlfQVBJX0tFWTogQVBJIGtleSBmb3IgYXV0aGVudGljYXRpb25cbiAqIC0gU0VORExZX0JBU0VfVVJMOiBDdXN0b20gQVBJIGVuZHBvaW50XG4gKiAtIFNFTkRMWV9PVVRQVVRfRk9STUFUOiBEZWZhdWx0IG91dHB1dCBmb3JtYXQgKGh1bWFuL2pzb24pXG4gKiAtIFNFTkRMWV9OT19DT0xPUjogRGlzYWJsZSBjb2xvcmVkIG91dHB1dCAoYW55IHZhbHVlKVxuICogLSBTRU5ETFlfVElNRU9VVDogUmVxdWVzdCB0aW1lb3V0IGluIG1zIChkZWZhdWx0OiAzMDAwMClcbiAqIC0gU0VORExZX01BWF9SRVRSSUVTOiBNYXggcmV0cnkgYXR0ZW1wdHMgKGRlZmF1bHQ6IDMpXG4gKiAtIFNFTkRMWV9PUkdfSUQ6IE92ZXJyaWRlIGFjdGl2ZSBvcmdhbml6YXRpb24gSURcbiAqIC0gU0VORExZX0NPTkZJR19LRVk6IEN1c3RvbSBlbmNyeXB0aW9uIGtleSAoZm9yIENJL0NEKVxuICogLSBDSTogQXV0by1kZXRlY3QgQ0kgbW9kZSAoZGlzYWJsZXMgaW50ZXJhY3RpdmUgcHJvbXB0cylcbiAqL1xuXG5pbXBvcnQgQ29uZiBmcm9tIFwiY29uZlwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0ICogYXMgb3MgZnJvbSBcIm5vZGU6b3NcIjtcbmltcG9ydCAqIGFzIGNyeXB0byBmcm9tIFwibm9kZTpjcnlwdG9cIjtcblxuZXhwb3J0IGludGVyZmFjZSBTZW5kbHlDb25maWcge1xuICAvLyBBdXRoZW50aWNhdGlvblxuICBhcGlLZXk/OiBzdHJpbmc7XG4gIGFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7XG4gIHRva2VuRXhwaXJlc0F0PzogbnVtYmVyO1xuICB1c2VySWQ/OiBzdHJpbmc7XG4gIGVtYWlsPzogc3RyaW5nO1xuXG4gIC8vIEVudmlyb25tZW50XG4gIGVudmlyb25tZW50OiBcInRlc3RcIiB8IFwibGl2ZVwiO1xuICBiYXNlVXJsOiBzdHJpbmc7XG5cbiAgLy8gUHJlZmVyZW5jZXNcbiAgZGVmYXVsdEZvcm1hdDogXCJodW1hblwiIHwgXCJqc29uXCI7XG4gIGNvbG9yRW5hYmxlZDogYm9vbGVhbjtcblxuICAvLyBOZXR3b3JrXG4gIHRpbWVvdXQ6IG51bWJlcjtcbiAgbWF4UmV0cmllczogbnVtYmVyO1xuXG4gIC8vIE9yZ2FuaXphdGlvblxuICBjdXJyZW50T3JnSWQ/OiBzdHJpbmc7XG4gIGN1cnJlbnRPcmdOYW1lPzogc3RyaW5nO1xuICBjdXJyZW50T3JnU2x1Zz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBydW5uaW5nIGluIENJIGVudmlyb25tZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NJKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gISEoXG4gICAgcHJvY2Vzcy5lbnYuQ0kgfHxcbiAgICBwcm9jZXNzLmVudi5DT05USU5VT1VTX0lOVEVHUkFUSU9OIHx8XG4gICAgcHJvY2Vzcy5lbnYuR0lUSFVCX0FDVElPTlMgfHxcbiAgICBwcm9jZXNzLmVudi5HSVRMQUJfQ0kgfHxcbiAgICBwcm9jZXNzLmVudi5DSVJDTEVDSSB8fFxuICAgIHByb2Nlc3MuZW52LlRSQVZJUyB8fFxuICAgIHByb2Nlc3MuZW52LkJVSUxES0lURVxuICApO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGNvbG9yIG91dHB1dCBpcyBkaXNhYmxlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb2xvckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gISEoXG4gICAgcHJvY2Vzcy5lbnYuU0VORExZX05PX0NPTE9SIHx8XG4gICAgcHJvY2Vzcy5lbnYuTk9fQ09MT1IgfHxcbiAgICBwcm9jZXNzLmVudi5URVJNID09PSBcImR1bWJcIlxuICApO1xufVxuXG5jb25zdCBDT05GSUdfRElSID0gcGF0aC5qb2luKG9zLmhvbWVkaXIoKSwgXCIuc2VuZGx5XCIpO1xuY29uc3QgQ09ORklHX0ZJTEUgPSBcImNvbmZpZy5qc29uXCI7XG5cbi8vIE9sZCBkZWZhdWx0IGtleSAtIHVzZWQgZm9yIG1pZ3JhdGlvbiBvbmx5XG5jb25zdCBPTERfREVGQVVMVF9LRVkgPSBcInNlbmRseS1jbGktZGVmYXVsdC1rZXktdjFcIjtcblxuLyoqXG4gKiBEZXJpdmUgYSBtYWNoaW5lLXNwZWNpZmljIGVuY3J5cHRpb24ga2V5LlxuICogVGhpcyBlbnN1cmVzIGVhY2ggaW5zdGFsbGF0aW9uIGhhcyBhIHVuaXF1ZSBrZXkgdGhhdCBjYW4ndCBiZSBlYXNpbHkgZ3Vlc3NlZC5cbiAqXG4gKiBUaGUga2V5IGlzIGRlcml2ZWQgZnJvbSBtYWNoaW5lLXNwZWNpZmljIGlkZW50aWZpZXJzIHRoYXQgYXJlOlxuICogLSBVbmlxdWUgcGVyIG1hY2hpbmVcbiAqIC0gU3RhYmxlIGFjcm9zcyBzZXNzaW9uc1xuICogLSBOb3QgcHVibGljbHkga25vd25cbiAqL1xuZnVuY3Rpb24gZGVyaXZlRW5jcnlwdGlvbktleSgpOiBzdHJpbmcge1xuICBjb25zdCBtYWNoaW5lSWQgPSBbb3MuaG9zdG5hbWUoKSwgb3MudXNlckluZm8oKS51c2VybmFtZSwgb3MuaG9tZWRpcigpXS5qb2luKFxuICAgIFwiOlwiLFxuICApO1xuXG4gIHJldHVybiBjcnlwdG9cbiAgICAuY3JlYXRlSGFzaChcInNoYTI1NlwiKVxuICAgIC51cGRhdGUoYHNlbmRseToke21hY2hpbmVJZH06djJgKVxuICAgIC5kaWdlc3QoXCJoZXhcIik7XG59XG5cbi8qKlxuICogR2V0IHRoZSBlbmNyeXB0aW9uIGtleSB0byB1c2UgZm9yIGNvbmZpZy5cbiAqIFByaW9yaXR5OiBTRU5ETFlfQ09ORklHX0tFWSBlbnYgdmFyID4gbWFjaGluZS1kZXJpdmVkIGtleVxuICovXG5mdW5jdGlvbiBnZXRFbmNyeXB0aW9uS2V5KCk6IHN0cmluZyB7XG4gIC8vIEV4cGxpY2l0IGtleSB0YWtlcyBwcmVjZWRlbmNlIChmb3IgQ0kvQ0QsIHRlc3RpbmcsIGFkdmFuY2VkIHVzZXJzKVxuICBpZiAocHJvY2Vzcy5lbnYuU0VORExZX0NPTkZJR19LRVkpIHtcbiAgICByZXR1cm4gcHJvY2Vzcy5lbnYuU0VORExZX0NPTkZJR19LRVk7XG4gIH1cbiAgcmV0dXJuIGRlcml2ZUVuY3J5cHRpb25LZXkoKTtcbn1cblxuLy8gRW5zdXJlIGNvbmZpZyBkaXJlY3RvcnkgZXhpc3RzIHdpdGggc2VjdXJlIHBlcm1pc3Npb25zXG5pZiAoIWZzLmV4aXN0c1N5bmMoQ09ORklHX0RJUikpIHtcbiAgZnMubWtkaXJTeW5jKENPTkZJR19ESVIsIHsgcmVjdXJzaXZlOiB0cnVlLCBtb2RlOiAwbzcwMCB9KTtcbn1cblxuY29uc3QgREVGQVVMVF9DT05GSUc6IFNlbmRseUNvbmZpZyA9IHtcbiAgZW52aXJvbm1lbnQ6IFwidGVzdFwiLFxuICBiYXNlVXJsOiBcImh0dHBzOi8vc2VuZGx5LmxpdmVcIixcbiAgZGVmYXVsdEZvcm1hdDogXCJodW1hblwiLFxuICBjb2xvckVuYWJsZWQ6IHRydWUsXG4gIHRpbWVvdXQ6IDMwMDAwLFxuICBtYXhSZXRyaWVzOiAzLFxufTtcblxuLyoqXG4gKiBJbml0aWFsaXplIGNvbmZpZyB3aXRoIGF1dG9tYXRpYyBtaWdyYXRpb24gZnJvbSBvbGQgZW5jcnlwdGlvbiBrZXkuXG4gKiBUaGlzIGVuc3VyZXMgZXhpc3RpbmcgdXNlcnMgZG9uJ3QgbG9zZSB0aGVpciBjcmVkZW50aWFscy5cbiAqL1xuZnVuY3Rpb24gaW5pdGlhbGl6ZUNvbmZpZygpOiBDb25mPFNlbmRseUNvbmZpZz4ge1xuICBjb25zdCBuZXdLZXkgPSBnZXRFbmNyeXB0aW9uS2V5KCk7XG5cbiAgLy8gVHJ5IHRvIGluaXRpYWxpemUgd2l0aCBuZXcga2V5IGZpcnN0XG4gIHRyeSB7XG4gICAgY29uc3QgbmV3Q29uZmlnID0gbmV3IENvbmY8U2VuZGx5Q29uZmlnPih7XG4gICAgICBwcm9qZWN0TmFtZTogXCJzZW5kbHlcIixcbiAgICAgIGN3ZDogQ09ORklHX0RJUixcbiAgICAgIGNvbmZpZ05hbWU6IFwiY29uZmlnXCIsXG4gICAgICBkZWZhdWx0czogREVGQVVMVF9DT05GSUcsXG4gICAgICBlbmNyeXB0aW9uS2V5OiBuZXdLZXksXG4gICAgfSk7XG5cbiAgICAvLyBUcnkgdG8gcmVhZCBhIHZhbHVlIHRvIHZlcmlmeSBkZWNyeXB0aW9uIHdvcmtzXG4gICAgbmV3Q29uZmlnLmdldChcImVudmlyb25tZW50XCIpO1xuICAgIHJldHVybiBuZXdDb25maWc7XG4gIH0gY2F0Y2gge1xuICAgIC8vIE5ldyBrZXkgZGlkbid0IHdvcmsgLSB0cnkgbWlncmF0aW9uIGZyb20gb2xkIGtleVxuICB9XG5cbiAgLy8gTWlncmF0aW9uOiBUcnkgdG8gcmVhZCB3aXRoIG9sZCBkZWZhdWx0IGtleVxuICB0cnkge1xuICAgIGNvbnN0IG9sZENvbmZpZyA9IG5ldyBDb25mPFNlbmRseUNvbmZpZz4oe1xuICAgICAgcHJvamVjdE5hbWU6IFwic2VuZGx5XCIsXG4gICAgICBjd2Q6IENPTkZJR19ESVIsXG4gICAgICBjb25maWdOYW1lOiBcImNvbmZpZ1wiLFxuICAgICAgZGVmYXVsdHM6IERFRkFVTFRfQ09ORklHLFxuICAgICAgZW5jcnlwdGlvbktleTogT0xEX0RFRkFVTFRfS0VZLFxuICAgIH0pO1xuXG4gICAgLy8gUmVhZCBhbGwgZGF0YSB3aXRoIG9sZCBrZXlcbiAgICBjb25zdCBvbGREYXRhID0geyAuLi5vbGRDb25maWcuc3RvcmUgfTtcbiAgICBjb25zdCBoYXNEYXRhID0gT2JqZWN0LmtleXMob2xkRGF0YSkuc29tZShcbiAgICAgIChrKSA9PlxuICAgICAgICAhT2JqZWN0LmtleXMoREVGQVVMVF9DT05GSUcpLmluY2x1ZGVzKGspIHx8XG4gICAgICAgIG9sZERhdGFbayBhcyBrZXlvZiBTZW5kbHlDb25maWddICE9PVxuICAgICAgICAgIERFRkFVTFRfQ09ORklHW2sgYXMga2V5b2YgU2VuZGx5Q29uZmlnXSxcbiAgICApO1xuXG4gICAgaWYgKGhhc0RhdGEpIHtcbiAgICAgIC8vIENsZWFyIG9sZCBjb25maWcgZmlsZVxuICAgICAgb2xkQ29uZmlnLmNsZWFyKCk7XG5cbiAgICAgIC8vIENyZWF0ZSBuZXcgY29uZmlnIHdpdGggbmV3IGtleVxuICAgICAgY29uc3QgbmV3Q29uZmlnID0gbmV3IENvbmY8U2VuZGx5Q29uZmlnPih7XG4gICAgICAgIHByb2plY3ROYW1lOiBcInNlbmRseVwiLFxuICAgICAgICBjd2Q6IENPTkZJR19ESVIsXG4gICAgICAgIGNvbmZpZ05hbWU6IFwiY29uZmlnXCIsXG4gICAgICAgIGRlZmF1bHRzOiBERUZBVUxUX0NPTkZJRyxcbiAgICAgICAgZW5jcnlwdGlvbktleTogbmV3S2V5LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFJlc3RvcmUgZGF0YSB3aXRoIG5ldyBlbmNyeXB0aW9uXG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvbGREYXRhKSkge1xuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG5ld0NvbmZpZy5zZXQoa2V5IGFzIGtleW9mIFNlbmRseUNvbmZpZywgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXdDb25maWc7XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICAvLyBPbGQga2V5IGFsc28gZGlkbid0IHdvcmsgLSBjb3JydXB0ZWQgb3IgZnJlc2ggaW5zdGFsbFxuICB9XG5cbiAgLy8gRnJlc2ggaW5zdGFsbCBvciBjb3JydXB0ZWQgLSBzdGFydCB3aXRoIG5ldyBrZXlcbiAgcmV0dXJuIG5ldyBDb25mPFNlbmRseUNvbmZpZz4oe1xuICAgIHByb2plY3ROYW1lOiBcInNlbmRseVwiLFxuICAgIGN3ZDogQ09ORklHX0RJUixcbiAgICBjb25maWdOYW1lOiBcImNvbmZpZ1wiLFxuICAgIGRlZmF1bHRzOiBERUZBVUxUX0NPTkZJRyxcbiAgICBlbmNyeXB0aW9uS2V5OiBuZXdLZXksXG4gIH0pO1xufVxuXG5jb25zdCBjb25maWcgPSBpbml0aWFsaXplQ29uZmlnKCk7XG5cbi8qKlxuICogR2V0IGVmZmVjdGl2ZSBjb25maWcgdmFsdWUgd2l0aCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvdmVycmlkZVxuICogUHJpb3JpdHk6IGVudiB2YXIgPiBjb25maWcgZmlsZSA+IGRlZmF1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVmZmVjdGl2ZVZhbHVlPEsgZXh0ZW5kcyBrZXlvZiBTZW5kbHlDb25maWc+KFxuICBrZXk6IEssXG4pOiBTZW5kbHlDb25maWdbS10ge1xuICAvLyBFbnZpcm9ubWVudCB2YXJpYWJsZSBvdmVycmlkZXNcbiAgc3dpdGNoIChrZXkpIHtcbiAgICBjYXNlIFwiYXBpS2V5XCI6XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuU0VORExZX0FQSV9LRVkpIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3MuZW52LlNFTkRMWV9BUElfS0VZIGFzIFNlbmRseUNvbmZpZ1tLXTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJiYXNlVXJsXCI6XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuU0VORExZX0JBU0VfVVJMKSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzLmVudi5TRU5ETFlfQkFTRV9VUkwgYXMgU2VuZGx5Q29uZmlnW0tdO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImRlZmF1bHRGb3JtYXRcIjpcbiAgICAgIGlmIChwcm9jZXNzLmVudi5TRU5ETFlfT1VUUFVUX0ZPUk1BVCkge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSBwcm9jZXNzLmVudi5TRU5ETFlfT1VUUFVUX0ZPUk1BVC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoZm9ybWF0ID09PSBcImpzb25cIiB8fCBmb3JtYXQgPT09IFwiaHVtYW5cIikge1xuICAgICAgICAgIHJldHVybiBmb3JtYXQgYXMgU2VuZGx5Q29uZmlnW0tdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiY29sb3JFbmFibGVkXCI6XG4gICAgICBpZiAoaXNDb2xvckRpc2FibGVkKCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlIGFzIFNlbmRseUNvbmZpZ1tLXTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ0aW1lb3V0XCI6XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuU0VORExZX1RJTUVPVVQpIHtcbiAgICAgICAgY29uc3QgdGltZW91dCA9IHBhcnNlSW50KHByb2Nlc3MuZW52LlNFTkRMWV9USU1FT1VULCAxMCk7XG4gICAgICAgIGlmICghaXNOYU4odGltZW91dCkgJiYgdGltZW91dCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gdGltZW91dCBhcyBTZW5kbHlDb25maWdbS107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJtYXhSZXRyaWVzXCI6XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuU0VORExZX01BWF9SRVRSSUVTKSB7XG4gICAgICAgIGNvbnN0IHJldHJpZXMgPSBwYXJzZUludChwcm9jZXNzLmVudi5TRU5ETFlfTUFYX1JFVFJJRVMsIDEwKTtcbiAgICAgICAgaWYgKCFpc05hTihyZXRyaWVzKSAmJiByZXRyaWVzID49IDApIHtcbiAgICAgICAgICByZXR1cm4gcmV0cmllcyBhcyBTZW5kbHlDb25maWdbS107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJjdXJyZW50T3JnSWRcIjpcbiAgICAgIGlmIChwcm9jZXNzLmVudi5TRU5ETFlfT1JHX0lEKSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzLmVudi5TRU5ETFlfT1JHX0lEIGFzIFNlbmRseUNvbmZpZ1tLXTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgLy8gRmFsbCBiYWNrIHRvIGNvbmZpZyBmaWxlIHZhbHVlXG4gIHJldHVybiBjb25maWcuZ2V0KGtleSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWcoKTogU2VuZGx5Q29uZmlnIHtcbiAgcmV0dXJuIGNvbmZpZy5zdG9yZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldENvbmZpZzxLIGV4dGVuZHMga2V5b2YgU2VuZGx5Q29uZmlnPihcbiAga2V5OiBLLFxuICB2YWx1ZTogU2VuZGx5Q29uZmlnW0tdLFxuKTogdm9pZCB7XG4gIGNvbmZpZy5zZXQoa2V5LCB2YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWdWYWx1ZTxLIGV4dGVuZHMga2V5b2YgU2VuZGx5Q29uZmlnPihcbiAga2V5OiBLLFxuKTogU2VuZGx5Q29uZmlnW0tdIHtcbiAgcmV0dXJuIGNvbmZpZy5nZXQoa2V5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyQ29uZmlnKCk6IHZvaWQge1xuICBjb25maWcuY2xlYXIoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyQXV0aCgpOiB2b2lkIHtcbiAgY29uZmlnLmRlbGV0ZShcImFwaUtleVwiKTtcbiAgY29uZmlnLmRlbGV0ZShcImFjY2Vzc1Rva2VuXCIpO1xuICBjb25maWcuZGVsZXRlKFwicmVmcmVzaFRva2VuXCIpO1xuICBjb25maWcuZGVsZXRlKFwidG9rZW5FeHBpcmVzQXRcIik7XG4gIGNvbmZpZy5kZWxldGUoXCJ1c2VySWRcIik7XG4gIGNvbmZpZy5kZWxldGUoXCJlbWFpbFwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQXV0aGVudGljYXRlZCgpOiBib29sZWFuIHtcbiAgLy8gQ2hlY2sgZW52IHZhciBmaXJzdFxuICBpZiAocHJvY2Vzcy5lbnYuU0VORExZX0FQSV9LRVkpIHJldHVybiB0cnVlO1xuXG4gIGNvbnN0IGFwaUtleSA9IGNvbmZpZy5nZXQoXCJhcGlLZXlcIik7XG4gIGNvbnN0IGFjY2Vzc1Rva2VuID0gY29uZmlnLmdldChcImFjY2Vzc1Rva2VuXCIpO1xuICByZXR1cm4gISEoYXBpS2V5IHx8IGFjY2Vzc1Rva2VuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEF1dGhUb2tlbigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAvLyBFbnZpcm9ubWVudCB2YXJpYWJsZSB0YWtlcyBoaWdoZXN0IHByZWNlZGVuY2VcbiAgaWYgKHByb2Nlc3MuZW52LlNFTkRMWV9BUElfS0VZKSB7XG4gICAgcmV0dXJuIHByb2Nlc3MuZW52LlNFTkRMWV9BUElfS0VZO1xuICB9XG5cbiAgLy8gVGhlbiBzdG9yZWQgQVBJIGtleVxuICBjb25zdCBhcGlLZXkgPSBjb25maWcuZ2V0KFwiYXBpS2V5XCIpO1xuICBpZiAoYXBpS2V5KSByZXR1cm4gYXBpS2V5O1xuXG4gIC8vIEZpbmFsbHksIGFjY2VzcyB0b2tlbiAoaWYgbm90IGV4cGlyZWQpXG4gIGNvbnN0IGFjY2Vzc1Rva2VuID0gY29uZmlnLmdldChcImFjY2Vzc1Rva2VuXCIpO1xuICBjb25zdCBleHBpcmVzQXQgPSBjb25maWcuZ2V0KFwidG9rZW5FeHBpcmVzQXRcIik7XG5cbiAgaWYgKGFjY2Vzc1Rva2VuICYmIGV4cGlyZXNBdCAmJiBEYXRlLm5vdygpIDwgZXhwaXJlc0F0KSB7XG4gICAgcmV0dXJuIGFjY2Vzc1Rva2VuO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEFwaUtleShhcGlLZXk6IHN0cmluZyk6IHZvaWQge1xuICAvLyBWYWxpZGF0ZSBBUEkga2V5IGZvcm1hdFxuICBpZiAoIS9ec2tfKHRlc3R8bGl2ZSlfdjFfW2EtekEtWjAtOV8tXSskLy50ZXN0KGFwaUtleSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIkludmFsaWQgQVBJIGtleSBmb3JtYXQuIEV4cGVjdGVkIHNrX3Rlc3RfdjFfeHh4IG9yIHNrX2xpdmVfdjFfeHh4XCIsXG4gICAgKTtcbiAgfVxuXG4gIGNvbmZpZy5zZXQoXCJhcGlLZXlcIiwgYXBpS2V5KTtcblxuICAvLyBTZXQgZW52aXJvbm1lbnQgYmFzZWQgb24ga2V5IHR5cGVcbiAgaWYgKGFwaUtleS5zdGFydHNXaXRoKFwic2tfdGVzdF9cIikpIHtcbiAgICBjb25maWcuc2V0KFwiZW52aXJvbm1lbnRcIiwgXCJ0ZXN0XCIpO1xuICB9IGVsc2Uge1xuICAgIGNvbmZpZy5zZXQoXCJlbnZpcm9ubWVudFwiLCBcImxpdmVcIik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEF1dGhUb2tlbnMoXG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmcsXG4gIHJlZnJlc2hUb2tlbjogc3RyaW5nLFxuICBleHBpcmVzSW46IG51bWJlcixcbiAgdXNlcklkOiBzdHJpbmcsXG4gIGVtYWlsOiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgY29uZmlnLnNldChcImFjY2Vzc1Rva2VuXCIsIGFjY2Vzc1Rva2VuKTtcbiAgY29uZmlnLnNldChcInJlZnJlc2hUb2tlblwiLCByZWZyZXNoVG9rZW4pO1xuICBjb25maWcuc2V0KFwidG9rZW5FeHBpcmVzQXRcIiwgRGF0ZS5ub3coKSArIGV4cGlyZXNJbiAqIDEwMDApO1xuICBjb25maWcuc2V0KFwidXNlcklkXCIsIHVzZXJJZCk7XG4gIGNvbmZpZy5zZXQoXCJlbWFpbFwiLCBlbWFpbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWdQYXRoKCk6IHN0cmluZyB7XG4gIHJldHVybiBwYXRoLmpvaW4oQ09ORklHX0RJUiwgQ09ORklHX0ZJTEUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlnRGlyKCk6IHN0cmluZyB7XG4gIHJldHVybiBDT05GSUdfRElSO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0Q3VycmVudE9yZyhpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHNsdWc/OiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uZmlnLnNldChcImN1cnJlbnRPcmdJZFwiLCBpZCk7XG4gIGNvbmZpZy5zZXQoXCJjdXJyZW50T3JnTmFtZVwiLCBuYW1lKTtcbiAgaWYgKHNsdWcpIGNvbmZpZy5zZXQoXCJjdXJyZW50T3JnU2x1Z1wiLCBzbHVnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEN1cnJlbnRPcmcoKToge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNsdWc/OiBzdHJpbmc7XG59IHwgbnVsbCB7XG4gIGNvbnN0IGlkID0gZ2V0RWZmZWN0aXZlVmFsdWUoXCJjdXJyZW50T3JnSWRcIik7XG4gIGNvbnN0IG5hbWUgPSBjb25maWcuZ2V0KFwiY3VycmVudE9yZ05hbWVcIik7XG4gIGlmICghaWQpIHJldHVybiBudWxsO1xuICByZXR1cm4geyBpZCwgbmFtZTogbmFtZSB8fCBpZCwgc2x1ZzogY29uZmlnLmdldChcImN1cnJlbnRPcmdTbHVnXCIpIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhckN1cnJlbnRPcmcoKTogdm9pZCB7XG4gIGNvbmZpZy5kZWxldGUoXCJjdXJyZW50T3JnSWRcIik7XG4gIGNvbmZpZy5kZWxldGUoXCJjdXJyZW50T3JnTmFtZVwiKTtcbiAgY29uZmlnLmRlbGV0ZShcImN1cnJlbnRPcmdTbHVnXCIpO1xufVxuXG5leHBvcnQgeyBjb25maWcgfTtcbiJdfQ==