@sendly/cli 3.37.1 → 3.38.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 (64) hide show
  1. package/README.md +178 -0
  2. package/dist/commands/business-upgrade/resubmit.js +3 -3
  3. package/dist/commands/business-upgrade/start.js +3 -3
  4. package/dist/commands/config/list.js +14 -2
  5. package/dist/commands/config/set.js +16 -3
  6. package/dist/commands/countries.js +2 -2
  7. package/dist/commands/credits/index.d.ts +1 -0
  8. package/dist/commands/credits/index.js +4 -0
  9. package/dist/commands/doctor.d.ts +12 -0
  10. package/dist/commands/doctor.js +51 -8
  11. package/dist/commands/enterprise/upload-verification-document.js +3 -3
  12. package/dist/commands/enterprise/verification/resubmit.js +2 -2
  13. package/dist/commands/enterprise/verification/submit.js +2 -2
  14. package/dist/commands/events/listen.js +3 -3
  15. package/dist/commands/numbers/buy.js +19 -4
  16. package/dist/commands/rcs/agents.d.ts +10 -0
  17. package/dist/commands/rcs/agents.js +89 -0
  18. package/dist/commands/rcs/capability.d.ts +12 -0
  19. package/dist/commands/rcs/capability.js +85 -0
  20. package/dist/commands/rcs/send.d.ts +21 -0
  21. package/dist/commands/rcs/send.js +240 -0
  22. package/dist/commands/send.d.ts +1 -0
  23. package/dist/commands/send.js +5 -2
  24. package/dist/commands/sms/batch.d.ts +1 -0
  25. package/dist/commands/sms/batch.js +11 -1
  26. package/dist/commands/sms/group.d.ts +1 -0
  27. package/dist/commands/sms/group.js +5 -2
  28. package/dist/commands/sms/schedule.d.ts +1 -0
  29. package/dist/commands/sms/schedule.js +5 -2
  30. package/dist/commands/sms/send.d.ts +1 -0
  31. package/dist/commands/sms/send.js +5 -2
  32. package/dist/commands/whatsapp/connect.d.ts +17 -0
  33. package/dist/commands/whatsapp/connect.js +166 -0
  34. package/dist/commands/whatsapp/profile/get.d.ts +13 -0
  35. package/dist/commands/whatsapp/profile/get.js +67 -0
  36. package/dist/commands/whatsapp/profile/update.d.ts +20 -0
  37. package/dist/commands/whatsapp/profile/update.js +109 -0
  38. package/dist/commands/whatsapp/send.d.ts +17 -0
  39. package/dist/commands/whatsapp/send.js +151 -0
  40. package/dist/commands/whatsapp/senders.d.ts +10 -0
  41. package/dist/commands/whatsapp/senders.js +74 -0
  42. package/dist/commands/whatsapp/status.d.ts +13 -0
  43. package/dist/commands/whatsapp/status.js +92 -0
  44. package/dist/commands/whatsapp/templates/create.d.ts +19 -0
  45. package/dist/commands/whatsapp/templates/create.js +205 -0
  46. package/dist/commands/whatsapp/templates/delete.d.ts +14 -0
  47. package/dist/commands/whatsapp/templates/delete.js +69 -0
  48. package/dist/commands/whatsapp/templates/list.d.ts +10 -0
  49. package/dist/commands/whatsapp/templates/list.js +77 -0
  50. package/dist/commands/whatsapp/templates/update.d.ts +18 -0
  51. package/dist/commands/whatsapp/templates/update.js +160 -0
  52. package/dist/commands/whoami.js +32 -6
  53. package/dist/hooks/command-not-found.js +46 -61
  54. package/dist/lib/api-client.d.ts +9 -1
  55. package/dist/lib/api-client.js +78 -9
  56. package/dist/lib/auth.js +10 -6
  57. package/dist/lib/base-command.js +9 -1
  58. package/dist/lib/config.d.ts +50 -1
  59. package/dist/lib/config.js +144 -7
  60. package/dist/lib/help.d.ts +10 -0
  61. package/dist/lib/help.js +23 -0
  62. package/dist/lib/onboarding.js +3 -3
  63. package/oclif.manifest.json +1707 -736
  64. package/package.json +8 -1
@@ -54,6 +54,10 @@ export default class SmsBatch extends AuthenticatedCommand {
54
54
  exclusive: ["file", "to", "reuse"],
55
55
  default: false,
56
56
  }),
57
+ "idempotency-key": Flags.string({
58
+ description: "Idempotency key (1-255 printable ASCII characters). Re-running with the same key within 24 hours returns the original result instead of sending again.",
59
+ exclusive: ["history"],
60
+ }),
57
61
  };
58
62
  async run() {
59
63
  const { flags } = await this.parse(SmsBatch);
@@ -259,11 +263,17 @@ export default class SmsBatch extends AuthenticatedCommand {
259
263
  const spin = spinner(`Sending ${messages.length} messages...`);
260
264
  spin.start();
261
265
  try {
266
+ // The batch endpoint dedupes header-less retries server-side by hashing
267
+ // the request content; an auto-generated key would bypass that net for
268
+ // identical cross-process re-runs, so only caller-supplied keys are sent.
262
269
  const response = await apiClient.post("/api/v1/messages/batch", {
263
270
  messages,
264
271
  messageType: flags.type,
265
272
  ...(flags.from && { from: flags.from }),
266
273
  ...(uploadId && { uploadId }), // Link to file upload for audit trail
274
+ }, true, {
275
+ idempotencyKey: flags["idempotency-key"],
276
+ autoIdempotencyKey: false,
267
277
  });
268
278
  spin.stop();
269
279
  if (isJsonMode()) {
@@ -433,4 +443,4 @@ export default class SmsBatch extends AuthenticatedCommand {
433
443
  return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
434
444
  }
435
445
  }
436
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvc21zL2JhdGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsT0FBTyxFQUNQLE1BQU0sRUFDTixJQUFJLEVBQ0osVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUErRzdCLE1BQU0sQ0FBQyxPQUFPLE9BQU8sUUFBUyxTQUFRLG9CQUFvQjtJQUN4RCxNQUFNLENBQUMsV0FBVyxHQUNoQixnRUFBZ0UsQ0FBQztJQUVuRSxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLG1EQUFtRDtRQUNuRCx3RUFBd0U7UUFDeEUsNEVBQTRFO1FBQzVFLDZEQUE2RDtRQUM3RCx1RkFBdUY7UUFDdkYsbURBQW1EO1FBQ25ELHVDQUF1QztLQUN4QyxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSx5REFBeUQ7WUFDdEUsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUM7U0FDdEMsQ0FBQztRQUNGLEVBQUUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2YsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFX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RSxPQUFPLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDbEUsT0FBTyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyByZWFkRmlsZVN5bmMsIGV4aXN0c1N5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgc3VjY2VzcyxcbiAgZXJyb3IsXG4gIHNwaW5uZXIsXG4gIGNvbG9ycyxcbiAganNvbixcbiAgaXNKc29uTW9kZSxcbn0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIEJhdGNoVXBsb2FkUmVzcG9uc2Uge1xuICB1cGxvYWQ6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGZpbGVuYW1lOiBzdHJpbmc7XG4gICAgc2l6ZTogbnVtYmVyO1xuICAgIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB9O1xuICB2YWxpZGF0aW9uOiB7XG4gICAgdG90YWxSb3dzOiBudW1iZXI7XG4gICAgdmFsaWRDb3VudDogbnVtYmVyO1xuICAgIGludmFsaWRDb3VudDogbnVtYmVyO1xuICAgIGR1cGxpY2F0ZXNSZW1vdmVkOiBudW1iZXI7XG4gICAgaGFzSGVhZGVyOiBib29sZWFuO1xuICB9O1xuICByZWNpcGllbnRzOiBBcnJheTx7IHRvOiBzdHJpbmc7IHRleHQ/OiBzdHJpbmcgfT47XG4gIGVycm9yczogQXJyYXk8eyByb3c6IG51bWJlcjsgcGhvbmU6IHN0cmluZzsgZXJyb3I6IHN0cmluZyB9PjtcbiAgaGFzTW9yZUVycm9yczogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEJhdGNoSGlzdG9yeVJlc3BvbnNlIHtcbiAgdXBsb2FkczogQXJyYXk8e1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZmlsZW5hbWU6IHN0cmluZztcbiAgICBzaXplOiBudW1iZXI7XG4gICAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgbWV0YWRhdGE6IHtcbiAgICAgIHRvdGFsUm93czogbnVtYmVyO1xuICAgICAgdmFsaWRDb3VudDogbnVtYmVyO1xuICAgICAgaW52YWxpZENvdW50OiBudW1iZXI7XG4gICAgICBzb3VyY2U/OiBzdHJpbmc7XG4gICAgfTtcbiAgfT47XG59XG5cbmludGVyZmFjZSBCYXRjaFJlc3BvbnNlIHtcbiAgYmF0Y2hJZDogc3RyaW5nO1xuICB0b3RhbDogbnVtYmVyO1xuICBzZW50OiBudW1iZXI7XG4gIHF1ZXVlZDogbnVtYmVyO1xuICBmYWlsZWQ6IG51bWJlcjtcbiAgY3JlZGl0c1VzZWQ6IG51bWJlcjtcbiAgY3JlZGl0c1JlZnVuZGVkOiBudW1iZXI7XG4gIHN0YXR1czogc3RyaW5nO1xuICBtZXNzYWdlcz86IEFycmF5PHtcbiAgICBpbmRleD86IG51bWJlcjtcbiAgICBpZDogc3RyaW5nO1xuICAgIHRvOiBzdHJpbmc7XG4gICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgZXJyb3I/OiBzdHJpbmcgfCBudWxsO1xuICAgIGNyZWF0ZWRBdD86IHN0cmluZztcbiAgICBkZWxpdmVyZWRBdD86IHN0cmluZyB8IG51bGw7XG4gIH0+O1xufVxuXG5pbnRlcmZhY2UgQmF0Y2hQcmV2aWV3UmVzcG9uc2Uge1xuICB0b3RhbDogbnVtYmVyO1xuICBzZW5kYWJsZTogbnVtYmVyO1xuICBibG9ja2VkOiBudW1iZXI7XG4gIGR1cGxpY2F0ZXM6IG51bWJlcjtcbiAgY3JlZGl0c05lZWRlZDogbnVtYmVyO1xuICBjcmVkaXRCYWxhbmNlOiBudW1iZXI7XG4gIGhhc1N1ZmZpY2llbnRDcmVkaXRzOiBib29sZWFuO1xuICBrZXlUeXBlOiBcInRlc3RcIiB8IFwibGl2ZVwiO1xuICBrZXlTY29wZXM6IHN0cmluZ1tdO1xuICBoYXNXcml0ZVNjb3BlOiBib29sZWFuO1xuICBtZXNzYWdpbmdQcm9maWxlOiB7XG4gICAgaWQ6IHN0cmluZyB8IG51bGw7XG4gICAgY2FuU2VuZERvbWVzdGljOiBib29sZWFuO1xuICAgIGNhblNlbmRJbnRlcm5hdGlvbmFsOiBib29sZWFuO1xuICAgIHZlcmlmaWNhdGlvblN0YXR1czogc3RyaW5nIHwgbnVsbDtcbiAgICB2ZXJpZmljYXRpb25UeXBlOiBzdHJpbmcgfCBudWxsO1xuICB9O1xuICBieUNvdW50cnk6IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAge1xuICAgICAgY291bnQ6IG51bWJlcjtcbiAgICAgIGNyZWRpdHM6IG51bWJlcjtcbiAgICAgIHRpZXI6IHN0cmluZztcbiAgICAgIGFsbG93ZWQ6IGJvb2xlYW47XG4gICAgICBibG9ja2VkUmVhc29uPzogc3RyaW5nO1xuICAgIH1cbiAgPjtcbiAgYmxvY2tlZE1lc3NhZ2VzOiBBcnJheTx7XG4gICAgaW5kZXg6IG51bWJlcjtcbiAgICB0bzogc3RyaW5nO1xuICAgIHJlYXNvbjogc3RyaW5nO1xuICB9PjtcbiAgY29tcGxpYW5jZToge1xuICAgIG1lc3NhZ2VUeXBlOiBcIm1hcmtldGluZ1wiIHwgXCJ0cmFuc2FjdGlvbmFsXCI7XG4gICAgc2hhZnRCbG9ja2VkOiBudW1iZXI7XG4gICAgcXVpZXRIb3Vyc0Jsb2NrZWQ6IG51bWJlcjtcbiAgICBxdWlldEhvdXJzUmVzY2hlZHVsZWQ6IG51bWJlcjtcbiAgICBzaGFmdEJsb2NrZWRNZXNzYWdlczogQXJyYXk8e1xuICAgICAgaW5kZXg6IG51bWJlcjtcbiAgICAgIHRvOiBzdHJpbmc7XG4gICAgICBjYXRlZ29yeTogc3RyaW5nO1xuICAgICAgbWF0Y2hlZFRlcm1zOiBzdHJpbmdbXTtcbiAgICB9PjtcbiAgICBxdWlldEhvdXJzQmxvY2tlZE1lc3NhZ2VzOiBBcnJheTx7XG4gICAgICBpbmRleDogbnVtYmVyO1xuICAgICAgdG86IHN0cmluZztcbiAgICAgIHJlY2lwaWVudFRpbWV6b25lOiBzdHJpbmc7XG4gICAgICByZWNpcGllbnRMb2NhbFRpbWU6IHN0cmluZztcbiAgICAgIG5leHRBbGxvd2VkVGltZT86IHN0cmluZztcbiAgICB9PjtcbiAgfTtcbiAgd2FybmluZ3M6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbXNCYXRjaCBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID1cbiAgICBcIlNlbmQgYmF0Y2ggU01TIG1lc3NhZ2VzICh1cGxvYWRzIENTViB0byBjbG91ZCBmb3IgYXVkaXQgdHJhaWwpXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gc21zIGJhdGNoIC0tZmlsZSByZWNpcGllbnRzLmNzdlwiLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgYmF0Y2ggLS1maWxlIHBob25lcy5jc3YgLS10ZXh0IFwiSGVsbG8gZXZlcnlvbmUhXCInLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgYmF0Y2ggLS10byArMTU1NTEyMzQ1NjcsKzE1NTU5ODc2NTQzIC0tdGV4dCBcIkhlbGxvIVwiJyxcbiAgICBcIjwlPSBjb25maWcuYmluICU+IHNtcyBiYXRjaCAtLWZpbGUgcmVjaXBpZW50cy5jc3YgLS1kcnktcnVuXCIsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNtcyBiYXRjaCAtLWZpbGUgcGhvbmVzLmNzdiAtLXRleHQgXCJDb2RlOiAxMjNcIiAtLXR5cGUgdHJhbnNhY3Rpb25hbCcsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBzbXMgYmF0Y2ggLS1yZXVzZSBhYmMxMjMtZGVmNDU2XCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBzbXMgYmF0Y2ggLS1oaXN0b3J5XCIsXG4gIF07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgICBmaWxlOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJGXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJDU1YgZmlsZSB3aXRoIHBob25lIG51bWJlcnMgKGFuZCBvcHRpb25hbCBtZXNzYWdlIHRleHQpXCIsXG4gICAgICBleGNsdXNpdmU6IFtcInRvXCIsIFwicmV1c2VcIiwgXCJoaXN0b3J5XCJdLFxuICAgIH0pLFxuICAgIHRvOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJ0XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJDb21tYS1zZXBhcmF0ZWQgcmVjaXBpZW50IHBob25lIG51bWJlcnMgKEUuMTY0IGZvcm1hdClcIixcbiAgICAgIGV4Y2x1c2l2ZTogW1wiZmlsZVwiLCBcInJldXNlXCIsIFwiaGlzdG9yeVwiXSxcbiAgICB9KSxcbiAgICB0ZXh0OiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJtXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJNZXNzYWdlIHRleHQgKHJlcXVpcmVkIHdpdGggLS10bywgb3B0aW9uYWwgd2l0aCAtLWZpbGUgaWYgQ1NWIGhhcyB0ZXh0IGNvbHVtbilcIixcbiAgICB9KSxcbiAgICBmcm9tOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJmXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJTZW5kZXIgSUQgb3IgcGhvbmUgbnVtYmVyIGZvciBhbGwgbWVzc2FnZXNcIixcbiAgICB9KSxcbiAgICB0eXBlOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiTWVzc2FnZSB0eXBlOiBtYXJrZXRpbmcgKGRlZmF1bHQpIG9yIHRyYW5zYWN0aW9uYWwuIFRyYW5zYWN0aW9uYWwgYnlwYXNzZXMgcXVpZXQgaG91cnMuXCIsXG4gICAgICBvcHRpb25zOiBbXCJtYXJrZXRpbmdcIiwgXCJ0cmFuc2FjdGlvbmFsXCJdLFxuICAgICAgZGVmYXVsdDogXCJtYXJrZXRpbmdcIixcbiAgICB9KSxcbiAgICBcImRyeS1ydW5cIjogRmxhZ3MuYm9vbGVhbih7XG4gICAgICBjaGFyOiBcImRcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlByZXZpZXcgYmF0Y2ggd2l0aG91dCBzZW5kaW5nICh2YWxpZGF0ZXMgYWNjZXNzLCBzaG93cyBjb3N0IGFuZCBjb21wbGlhbmNlIGJyZWFrZG93bilcIixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0pLFxuICAgIHJldXNlOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiUmUtdXNlIGEgcHJldmlvdXMgYmF0Y2ggdXBsb2FkIGJ5IElEIChzZWUgLS1oaXN0b3J5KVwiLFxuICAgICAgZXhjbHVzaXZlOiBbXCJmaWxlXCIsIFwidG9cIiwgXCJoaXN0b3J5XCJdLFxuICAgIH0pLFxuICAgIGhpc3Rvcnk6IEZsYWdzLmJvb2xlYW4oe1xuICAgICAgZGVzY3JpcHRpb246IFwiU2hvdyByZWNlbnQgYmF0Y2ggdXBsb2FkIGhpc3RvcnlcIixcbiAgICAgIGV4Y2x1c2l2ZTogW1wiZmlsZVwiLCBcInRvXCIsIFwicmV1c2VcIl0sXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9KSxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShTbXNCYXRjaCk7XG5cbiAgICAvLyBIYW5kbGUgaGlzdG9yeSBzdWJjb21tYW5kXG4gICAgaWYgKGZsYWdzLmhpc3RvcnkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNob3dIaXN0b3J5KCk7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHJldXNlIHN1YmNvbW1hbmRcbiAgICBpZiAoZmxhZ3MucmV1c2UpIHtcbiAgICAgIHJldHVybiB0aGlzLnJldXNlQmF0Y2goZmxhZ3MucmV1c2UsIGZsYWdzKTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgLS10byBmbGFnIChpbmxpbmUgcmVjaXBpZW50cywgbm8gdXBsb2FkIG5lZWRlZClcbiAgICBpZiAoZmxhZ3MudG8pIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbmRJbmxpbmVSZWNpcGllbnRzKGZsYWdzKTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgLS1maWxlIGZsYWcgKHVwbG9hZCB0byBSMilcbiAgICBpZiAoZmxhZ3MuZmlsZSkge1xuICAgICAgcmV0dXJuIHRoaXMudXBsb2FkQW5kU2VuZChmbGFncyk7XG4gICAgfVxuXG4gICAgZXJyb3IoXCJFaXRoZXIgLS1maWxlLCAtLXRvLCAtLXJldXNlLCBvciAtLWhpc3RvcnkgaXMgcmVxdWlyZWRcIik7XG4gICAgdGhpcy5leGl0KDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgYmF0Y2ggdXBsb2FkIGhpc3RvcnlcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgc2hvd0hpc3RvcnkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc3BpbiA9IHNwaW5uZXIoXCJGZXRjaGluZyBiYXRjaCBoaXN0b3J5Li4uXCIpLnN0YXJ0KCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQuZ2V0PEJhdGNoSGlzdG9yeVJlc3BvbnNlPihcbiAgICAgICAgXCIvYXBpL2NsaS9iYXRjaC9oaXN0b3J5XCIsXG4gICAgICAgIHsgbGltaXQ6IDE1IH0sXG4gICAgICApO1xuXG4gICAgICBzcGluLnN0b3AoKTtcblxuICAgICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAgICBqc29uKHJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzcG9uc2UudXBsb2Fkcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIlxcbk5vIGJhdGNoIHVwbG9hZHMgZm91bmQuXFxuXCIpKTtcbiAgICAgICAgY29uc29sZS5sb2coXCJVcGxvYWQgYSBDU1YgZmlsZSB3aXRoOiBzZW5kbHkgc21zIGJhdGNoIC0tZmlsZSB5b3VyLmNzdlwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuYm9sZChcIlxcbvCfk4EgUmVjZW50IEJhdGNoIFVwbG9hZHNcXG5cIikpO1xuICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIuKUgFwiLnJlcGVhdCg4MCkpKTtcblxuICAgICAgZm9yIChjb25zdCB1cGxvYWQgb2YgcmVzcG9uc2UudXBsb2Fkcykge1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodXBsb2FkLmNyZWF0ZWRBdCkudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMuZm9ybWF0Qnl0ZXModXBsb2FkLnNpemUpO1xuICAgICAgICBjb25zdCBzb3VyY2UgPSB1cGxvYWQubWV0YWRhdGE/LnNvdXJjZSA9PT0gXCJjbGlcIiA/IFwiQ0xJXCIgOiBcIldlYlwiO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGAke2NvbG9ycy5pbmZvKHVwbG9hZC5pZC5zbGljZSgwLCA4KSl9ICAke3VwbG9hZC5maWxlbmFtZX1gLFxuICAgICAgICApO1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBjb2xvcnMuZGltKFxuICAgICAgICAgICAgYCAgICR7ZGF0ZX0gfCAke3NpemV9IHwgJHt1cGxvYWQubWV0YWRhdGE/LnZhbGlkQ291bnQgfHwgMH0gdmFsaWQgcmVjaXBpZW50cyB8ICR7c291cmNlfWAsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIuKUgFwiLnJlcGVhdCg4MCkpKTtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBjb2xvcnMuZGltKFwiXFxuUmUtdXNlIGEgYmF0Y2g6IHNlbmRseSBzbXMgYmF0Y2ggLS1yZXVzZSA8aWQ+XCIpLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNwaW4uc3RvcCgpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZS11c2UgYSBwcmV2aW91cyBiYXRjaCB1cGxvYWRcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcmV1c2VCYXRjaChcbiAgICB1cGxvYWRJZDogc3RyaW5nLFxuICAgIGZsYWdzOiB7IHRleHQ/OiBzdHJpbmc7IGZyb20/OiBzdHJpbmc7IHR5cGU/OiBzdHJpbmc7IFwiZHJ5LXJ1blwiPzogYm9vbGVhbiB9LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzcGluID0gc3Bpbm5lcihcIkZldGNoaW5nIGJhdGNoIGRhdGEuLi5cIikuc3RhcnQoKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5nZXQ8QmF0Y2hVcGxvYWRSZXNwb25zZT4oXG4gICAgICAgIGAvYXBpL2NsaS9iYXRjaC9yZXVzZS8ke3VwbG9hZElkfWAsXG4gICAgICApO1xuXG4gICAgICBzcGluLnN0b3AoKTtcblxuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGNvbG9ycy5zdWNjZXNzKGBcXG7inJMgTG9hZGVkIGJhdGNoOiAke3Jlc3BvbnNlLnVwbG9hZC5maWxlbmFtZX1gKSxcbiAgICAgICk7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICBgICAke3Jlc3BvbnNlLnZhbGlkYXRpb24udmFsaWRDb3VudH0gdmFsaWQgcmVjaXBpZW50cyBmcm9tICR7cmVzcG9uc2UudmFsaWRhdGlvbi50b3RhbFJvd3N9IHJvd3NgLFxuICAgICAgICApLFxuICAgICAgKTtcblxuICAgICAgLy8gQXBwbHkgc2hhcmVkIHRleHQgaWYgcHJvdmlkZWRcbiAgICAgIGxldCBtZXNzYWdlcyA9IHJlc3BvbnNlLnJlY2lwaWVudHM7XG4gICAgICBpZiAoZmxhZ3MudGV4dCkge1xuICAgICAgICBtZXNzYWdlcyA9IG1lc3NhZ2VzLm1hcCgocikgPT4gKHtcbiAgICAgICAgICB0bzogci50byxcbiAgICAgICAgICB0ZXh0OiByLnRleHQgfHwgZmxhZ3MudGV4dCxcbiAgICAgICAgfSkpO1xuICAgICAgfVxuXG4gICAgICAvLyBWYWxpZGF0ZSBhbGwgbWVzc2FnZXMgaGF2ZSB0ZXh0XG4gICAgICBjb25zdCBtaXNzaW5nVGV4dCA9IG1lc3NhZ2VzLmZpbHRlcigobSkgPT4gIW0udGV4dD8udHJpbSgpKTtcbiAgICAgIGlmIChtaXNzaW5nVGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGVycm9yKFxuICAgICAgICAgIGAke21pc3NpbmdUZXh0Lmxlbmd0aH0gcmVjaXBpZW50cyBtaXNzaW5nIG1lc3NhZ2UgdGV4dC4gVXNlIC0tdGV4dCB0byBwcm92aWRlIGEgZGVmYXVsdC5gLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmV4aXQoMSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFByb2NlZWQgd2l0aCBwcmV2aWV3IG9yIHNlbmRcbiAgICAgIGF3YWl0IHRoaXMucHJldmlld09yU2VuZChcbiAgICAgICAgbWVzc2FnZXMgYXMgQXJyYXk8eyB0bzogc3RyaW5nOyB0ZXh0OiBzdHJpbmcgfT4sXG4gICAgICAgIGZsYWdzLFxuICAgICAgICByZXNwb25zZS51cGxvYWQuaWQsXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc3Bpbi5zdG9wKCk7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbmQgdG8gaW5saW5lIHJlY2lwaWVudHMgKC0tdG8gZmxhZylcbiAgICogVGhpcyBwYXRoIGRvZXNuJ3QgdXBsb2FkIHRvIFIyIHNpbmNlIGl0J3MganVzdCBhIGZldyBudW1iZXJzXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHNlbmRJbmxpbmVSZWNpcGllbnRzKGZsYWdzOiB7XG4gICAgdG8/OiBzdHJpbmc7XG4gICAgdGV4dD86IHN0cmluZztcbiAgICBmcm9tPzogc3RyaW5nO1xuICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgXCJkcnktcnVuXCI/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFmbGFncy50ZXh0KSB7XG4gICAgICBlcnJvcihcIi0tdGV4dCBpcyByZXF1aXJlZCB3aGVuIHVzaW5nIC0tdG9cIik7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgY29uc3QgcGhvbmVzID0gZmxhZ3MudG8hLnNwbGl0KFwiLFwiKS5tYXAoKHApID0+IHAudHJpbSgpKTtcbiAgICBjb25zdCBtZXNzYWdlcyA9IHBob25lcy5tYXAoKHBob25lKSA9PiAoe1xuICAgICAgdG86IHBob25lLnN0YXJ0c1dpdGgoXCIrXCIpID8gcGhvbmUgOiBgKyR7cGhvbmV9YCxcbiAgICAgIHRleHQ6IGZsYWdzLnRleHQhLFxuICAgIH0pKTtcblxuICAgIC8vIFZhbGlkYXRlIHBob25lIG51bWJlcnNcbiAgICBmb3IgKGNvbnN0IG1zZyBvZiBtZXNzYWdlcykge1xuICAgICAgaWYgKCEvXlxcK1sxLTldXFxkezEsMTR9JC8udGVzdChtc2cudG8pKSB7XG4gICAgICAgIGVycm9yKGBJbnZhbGlkIHBob25lIG51bWJlcjogJHttc2cudG99YCwge1xuICAgICAgICAgIGhpbnQ6IFwiVXNlIEUuMTY0IGZvcm1hdDogKzE1NTUxMjM0NTY3XCIsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5wcmV2aWV3T3JTZW5kKG1lc3NhZ2VzLCBmbGFncyk7XG4gIH1cblxuICAvKipcbiAgICogVXBsb2FkIENTViB0byBSMiBhbmQgc2VuZFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyB1cGxvYWRBbmRTZW5kKGZsYWdzOiB7XG4gICAgZmlsZT86IHN0cmluZztcbiAgICB0ZXh0Pzogc3RyaW5nO1xuICAgIGZyb20/OiBzdHJpbmc7XG4gICAgdHlwZT86IHN0cmluZztcbiAgICBcImRyeS1ydW5cIj86IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmaWxlUGF0aCA9IGZsYWdzLmZpbGUhO1xuXG4gICAgLy8gQ2hlY2sgZmlsZSBleGlzdHNcbiAgICBpZiAoIWV4aXN0c1N5bmMoZmlsZVBhdGgpKSB7XG4gICAgICBlcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7ZmlsZVBhdGh9YCk7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgZmlsZSBleHRlbnNpb25cbiAgICBpZiAoIWZpbGVQYXRoLmVuZHNXaXRoKFwiLmNzdlwiKSkge1xuICAgICAgZXJyb3IoXCJPbmx5IENTViBmaWxlcyBhcmUgc3VwcG9ydGVkXCIsIHtcbiAgICAgICAgaGludDogXCJDb252ZXJ0IHlvdXIgZmlsZSB0byBDU1YgZm9ybWF0IHdpdGggY29sdW1uczogcGhvbmUsbWVzc2FnZVwiLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgLy8gUmVhZCBmaWxlXG4gICAgY29uc3QgYnVmZmVyID0gcmVhZEZpbGVTeW5jKGZpbGVQYXRoKTtcbiAgICBjb25zdCBmaWxlbmFtZSA9IGJhc2VuYW1lKGZpbGVQYXRoKTtcblxuICAgIC8vIENoZWNrIGZpbGUgc2l6ZSAoNU1CIGxpbWl0KVxuICAgIGlmIChidWZmZXIubGVuZ3RoID4gNSAqIDEwMjQgKiAxMDI0KSB7XG4gICAgICBlcnJvcihcIkZpbGUgdG9vIGxhcmdlIChtYXggNU1CKVwiLCB7XG4gICAgICAgIGhpbnQ6IFwiU3BsaXQgeW91ciBDU1YgaW50byBzbWFsbGVyIGZpbGVzXCIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCBzcGluID0gc3Bpbm5lcihgVXBsb2FkaW5nICR7ZmlsZW5hbWV9Li4uYCkuc3RhcnQoKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBVcGxvYWQgdG8gUjIgdmlhIENMSSBlbmRwb2ludFxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQudXBsb2FkRmlsZTxCYXRjaFVwbG9hZFJlc3BvbnNlPihcbiAgICAgICAgXCIvYXBpL2NsaS9iYXRjaC91cGxvYWRcIixcbiAgICAgICAgeyBidWZmZXIsIGZpbGVuYW1lLCBtaW1ldHlwZTogXCJ0ZXh0L2NzdlwiIH0sXG4gICAgICApO1xuXG4gICAgICBzcGluLnN0b3AoKTtcblxuICAgICAgLy8gU2hvdyB1cGxvYWQgc3VtbWFyeVxuICAgICAgY29uc29sZS5sb2coY29sb3JzLnN1Y2Nlc3MoYFxcbuKckyBVcGxvYWRlZDogJHtyZXNwb25zZS51cGxvYWQuZmlsZW5hbWV9YCkpO1xuICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShgICBVcGxvYWQgSUQ6ICR7cmVzcG9uc2UudXBsb2FkLmlkfWApKTtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBjb2xvcnMuZGltKFxuICAgICAgICAgIGAgICR7cmVzcG9uc2UudmFsaWRhdGlvbi52YWxpZENvdW50fSB2YWxpZCAvICR7cmVzcG9uc2UudmFsaWRhdGlvbi5pbnZhbGlkQ291bnR9IGludmFsaWQgLyAke3Jlc3BvbnNlLnZhbGlkYXRpb24uZHVwbGljYXRlc1JlbW92ZWR9IGR1cGxpY2F0ZXMgcmVtb3ZlZGAsXG4gICAgICAgICksXG4gICAgICApO1xuXG4gICAgICAvLyBTaG93IHZhbGlkYXRpb24gZXJyb3JzIGlmIGFueVxuICAgICAgaWYgKHJlc3BvbnNlLmVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy53YXJuaW5nKGBcXG7imqDvuI8gIFZhbGlkYXRpb24gZXJyb3JzOmApKTtcbiAgICAgICAgZm9yIChjb25zdCBlcnIgb2YgcmVzcG9uc2UuZXJyb3JzLnNsaWNlKDAsIDUpKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBjb2xvcnMuZGltKGAgICBSb3cgJHtlcnIucm93fTogJHtlcnIucGhvbmV9IC0gJHtlcnIuZXJyb3J9YCksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzcG9uc2UuaGFzTW9yZUVycm9ycykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICAgICAgYCAgIC4uLiBhbmQgJHtyZXNwb25zZS52YWxpZGF0aW9uLmludmFsaWRDb3VudCAtIDV9IG1vcmUgZXJyb3JzYCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzcG9uc2UucmVjaXBpZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZXJyb3IoXCJObyB2YWxpZCByZWNpcGllbnRzIGZvdW5kIGluIENTVlwiKTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuXG4gICAgICAvLyBBcHBseSBzaGFyZWQgdGV4dCBpZiBwcm92aWRlZFxuICAgICAgbGV0IG1lc3NhZ2VzID0gcmVzcG9uc2UucmVjaXBpZW50cztcbiAgICAgIGlmIChmbGFncy50ZXh0KSB7XG4gICAgICAgIG1lc3NhZ2VzID0gbWVzc2FnZXMubWFwKChyKSA9PiAoe1xuICAgICAgICAgIHRvOiByLnRvLFxuICAgICAgICAgIHRleHQ6IHIudGV4dCB8fCBmbGFncy50ZXh0LFxuICAgICAgICB9KSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIGFsbCBtZXNzYWdlcyBoYXZlIHRleHRcbiAgICAgIGNvbnN0IG1pc3NpbmdUZXh0ID0gbWVzc2FnZXMuZmlsdGVyKChtKSA9PiAhbS50ZXh0Py50cmltKCkpO1xuICAgICAgaWYgKG1pc3NpbmdUZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgZXJyb3IoXG4gICAgICAgICAgYCR7bWlzc2luZ1RleHQubGVuZ3RofSByZWNpcGllbnRzIG1pc3NpbmcgbWVzc2FnZSB0ZXh0LiBVc2UgLS10ZXh0IHRvIHByb3ZpZGUgYSBkZWZhdWx0LmAsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGNvbG9ycy5kaW0oXG4gICAgICAgICAgICBcIlxcbkNTViBzaG91bGQgaGF2ZSBjb2x1bW5zOiBwaG9uZSxtZXNzYWdlIE9SIHVzZSAtLXRleHQgZmxhZ1wiLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICAgIH1cblxuICAgICAgLy8gUHJvY2VlZCB3aXRoIHByZXZpZXcgb3Igc2VuZFxuICAgICAgYXdhaXQgdGhpcy5wcmV2aWV3T3JTZW5kKFxuICAgICAgICBtZXNzYWdlcyBhcyBBcnJheTx7IHRvOiBzdHJpbmc7IHRleHQ6IHN0cmluZyB9PixcbiAgICAgICAgZmxhZ3MsXG4gICAgICAgIHJlc3BvbnNlLnVwbG9hZC5pZCxcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzcGluLnN0b3AoKTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJldmlldyBvciBzZW5kIHRoZSBiYXRjaFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwcmV2aWV3T3JTZW5kKFxuICAgIG1lc3NhZ2VzOiBBcnJheTx7IHRvOiBzdHJpbmc7IHRleHQ6IHN0cmluZyB9PixcbiAgICBmbGFnczogeyBmcm9tPzogc3RyaW5nOyB0eXBlPzogc3RyaW5nOyBcImRyeS1ydW5cIj86IGJvb2xlYW4gfSxcbiAgICB1cGxvYWRJZD86IHN0cmluZyxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gQ2hlY2sgYmF0Y2ggc2l6ZVxuICAgIGlmIChtZXNzYWdlcy5sZW5ndGggPiAxMDAwKSB7XG4gICAgICBlcnJvcihcIkJhdGNoIHNpemUgY2Fubm90IGV4Y2VlZCAxMDAwIG1lc3NhZ2VzXCIsIHtcbiAgICAgICAgaGludDogXCJTcGxpdCB5b3VyIG1lc3NhZ2VzIGludG8gc21hbGxlciBiYXRjaGVzXCIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgZHJ5LXJ1biBtb2RlXG4gICAgaWYgKGZsYWdzW1wiZHJ5LXJ1blwiXSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2hvd1ByZXZpZXcobWVzc2FnZXMsIGZsYWdzKTtcbiAgICB9XG5cbiAgICAvLyBTZW5kIHRoZSBiYXRjaFxuICAgIGNvbnN0IHNwaW4gPSBzcGlubmVyKGBTZW5kaW5nICR7bWVzc2FnZXMubGVuZ3RofSBtZXNzYWdlcy4uLmApO1xuICAgIHNwaW4uc3RhcnQoKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PEJhdGNoUmVzcG9uc2U+KFxuICAgICAgICBcIi9hcGkvdjEvbWVzc2FnZXMvYmF0Y2hcIixcbiAgICAgICAge1xuICAgICAgICAgIG1lc3NhZ2VzLFxuICAgICAgICAgIG1lc3NhZ2VUeXBlOiBmbGFncy50eXBlLFxuICAgICAgICAgIC4uLihmbGFncy5mcm9tICYmIHsgZnJvbTogZmxhZ3MuZnJvbSB9KSxcbiAgICAgICAgICAuLi4odXBsb2FkSWQgJiYgeyB1cGxvYWRJZCB9KSwgLy8gTGluayB0byBmaWxlIHVwbG9hZCBmb3IgYXVkaXQgdHJhaWxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIHNwaW4uc3RvcCgpO1xuXG4gICAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICAgIGpzb24ocmVzcG9uc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIERldGVybWluZSBzdWNjZXNzIGxldmVsXG4gICAgICBjb25zdCBhbGxTdWNjZWVkZWQgPSByZXNwb25zZS5mYWlsZWQgPT09IDA7XG4gICAgICBjb25zdCBhbGxGYWlsZWQgPSByZXNwb25zZS5zZW50ID09PSAwICYmIHJlc3BvbnNlLmZhaWxlZCA+IDA7XG4gICAgICBjb25zdCBwYXJ0aWFsU3VjY2VzcyA9IHJlc3BvbnNlLnNlbnQgPiAwICYmIHJlc3BvbnNlLmZhaWxlZCA+IDA7XG5cbiAgICAgIGlmIChhbGxTdWNjZWVkZWQpIHtcbiAgICAgICAgc3VjY2VzcyhcIkJhdGNoIHNlbnQgc3VjY2Vzc2Z1bGx5XCIsIHtcbiAgICAgICAgICBcIkJhdGNoIElEXCI6IHJlc3BvbnNlLmJhdGNoSWQsXG4gICAgICAgICAgVG90YWw6IHJlc3BvbnNlLnRvdGFsLFxuICAgICAgICAgIFNlbnQ6IGNvbG9ycy5zdWNjZXNzKFN0cmluZyhyZXNwb25zZS5zZW50KSksXG4gICAgICAgICAgXCJDcmVkaXRzIFVzZWRcIjogcmVzcG9uc2UuY3JlZGl0c1VzZWQsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChhbGxGYWlsZWQpIHtcbiAgICAgICAgZXJyb3IoXCJCYXRjaCBmYWlsZWRcIiwge1xuICAgICAgICAgIGhpbnQ6IGBBbGwgJHtyZXNwb25zZS5mYWlsZWR9IG1lc3NhZ2VzIGZhaWxlZCB0byBzZW5kYCxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oYCAgQmF0Y2ggSUQ6ICR7cmVzcG9uc2UuYmF0Y2hJZH1gKSk7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGNvbG9ycy5kaW0oYCAgQ3JlZGl0cyBSZWZ1bmRlZDogJHtyZXNwb25zZS5jcmVkaXRzUmVmdW5kZWR9YCksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHBhcnRpYWxTdWNjZXNzKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy53YXJuaW5nKFwiXFxu4pqg77iPICBCYXRjaCBjb21wbGV0ZWQgd2l0aCBlcnJvcnNcXG5cIikpO1xuICAgICAgICBjb25zb2xlLmxvZyhgICBCYXRjaCBJRDogICAgICAgICAke3Jlc3BvbnNlLmJhdGNoSWR9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKGAgIFRvdGFsOiAgICAgICAgICAgICR7cmVzcG9uc2UudG90YWx9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGAgIFNlbnQ6ICAgICAgICAgICAgICR7Y29sb3JzLnN1Y2Nlc3MoU3RyaW5nKHJlc3BvbnNlLnNlbnQpKX1gLFxuICAgICAgICApO1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBgICBGYWlsZWQ6ICAgICAgICAgICAke2NvbG9ycy5lcnJvcihTdHJpbmcocmVzcG9uc2UuZmFpbGVkKSl9YCxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc29sZS5sb2coYCAgQ3JlZGl0cyBVc2VkOiAgICAgJHtyZXNwb25zZS5jcmVkaXRzVXNlZH1gKTtcbiAgICAgICAgY29uc29sZS5sb2coYCAgQ3JlZGl0cyBSZWZ1bmRlZDogJHtyZXNwb25zZS5jcmVkaXRzUmVmdW5kZWR9YCk7XG5cbiAgICAgICAgLy8gU2hvdyBmYWlsZWQgbWVzc2FnZXMgaWYgYXZhaWxhYmxlXG4gICAgICAgIGlmIChyZXNwb25zZS5tZXNzYWdlcykge1xuICAgICAgICAgIGNvbnN0IGZhaWxlZE1zZ3MgPSByZXNwb25zZS5tZXNzYWdlcy5maWx0ZXIoXG4gICAgICAgICAgICAobSkgPT4gbS5zdGF0dXMgPT09IFwiZmFpbGVkXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoZmFpbGVkTXNncy5sZW5ndGggPiAwICYmIGZhaWxlZE1zZ3MubGVuZ3RoIDw9IDUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCJcXG4gIEZhaWxlZCBtZXNzYWdlczpcIikpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBtc2cgb2YgZmFpbGVkTXNncykge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICBjb2xvcnMuZGltKGAgICAgJHttc2cudG99OiAke21zZy5lcnJvciB8fCBcIlVua25vd24gZXJyb3JcIn1gKSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGZhaWxlZE1zZ3MubGVuZ3RoID4gNSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgIGNvbG9ycy5kaW0oXG4gICAgICAgICAgICAgICAgYFxcbiAgJHtmYWlsZWRNc2dzLmxlbmd0aH0gbWVzc2FnZXMgZmFpbGVkLiBVc2UgLS1qc29uIGZvciBkZXRhaWxzLmAsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc3Bpbi5zdG9wKCk7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgYmF0Y2ggcHJldmlldyAoZHJ5LXJ1biBtb2RlKVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBzaG93UHJldmlldyhcbiAgICBtZXNzYWdlczogQXJyYXk8eyB0bzogc3RyaW5nOyB0ZXh0OiBzdHJpbmcgfT4sXG4gICAgZmxhZ3M6IHsgdHlwZT86IHN0cmluZyB9LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzcGluID0gc3Bpbm5lcihcIkFuYWx5emluZyBiYXRjaC4uLlwiKS5zdGFydCgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByZXZpZXcgPSBhd2FpdCBhcGlDbGllbnQucG9zdDxCYXRjaFByZXZpZXdSZXNwb25zZT4oXG4gICAgICAgIFwiL2FwaS92MS9tZXNzYWdlcy9iYXRjaC9wcmV2aWV3XCIsXG4gICAgICAgIHsgbWVzc2FnZXMsIG1lc3NhZ2VUeXBlOiBmbGFncy50eXBlIH0sXG4gICAgICApO1xuXG4gICAgICBzcGluLnN0b3AoKTtcblxuICAgICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAgICBqc29uKHByZXZpZXcpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFNob3cgY29tcHJlaGVuc2l2ZSBwcmV2aWV3XG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuYm9sZChcIlxcbvCfk4ogQmF0Y2ggUHJldmlldyAoRHJ5IFJ1bilcXG5cIikpO1xuXG4gICAgICAvLyBTdW1tYXJ5IHRhYmxlXG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwi4pSAXCIucmVwZWF0KDUwKSkpO1xuICAgICAgY29uc29sZS5sb2coYFRvdGFsIG1lc3NhZ2VzOiAgICAgJHtwcmV2aWV3LnRvdGFsfWApO1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBTZW5kYWJsZTogICAgICAgICAgICR7Y29sb3JzLnN1Y2Nlc3MoU3RyaW5nKHByZXZpZXcuc2VuZGFibGUpKX1gLFxuICAgICAgKTtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgQmxvY2tlZDogICAgICAgICAgICAke3ByZXZpZXcuYmxvY2tlZCA+IDAgPyBjb2xvcnMuZXJyb3IoU3RyaW5nKHByZXZpZXcuYmxvY2tlZCkpIDogXCIwXCJ9YCxcbiAgICAgICk7XG4gICAgICBjb25zb2xlLmxvZyhgRHVwbGljYXRlcyByZW1vdmVkOiAke3ByZXZpZXcuZHVwbGljYXRlc31gKTtcbiAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCLilIBcIi5yZXBlYXQoNTApKSk7XG5cbiAgICAgIC8vIENyZWRpdHNcbiAgICAgIGNvbnNvbGUubG9nKGBcXG5DcmVkaXRzIG5lZWRlZDogICAgICR7cHJldmlldy5jcmVkaXRzTmVlZGVkfWApO1xuICAgICAgY29uc29sZS5sb2coYFlvdXIgYmFsYW5jZTogICAgICAgJHtwcmV2aWV3LmNyZWRpdEJhbGFuY2V9YCk7XG4gICAgICBpZiAoIXByZXZpZXcuaGFzU3VmZmljaWVudENyZWRpdHMpIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgY29sb3JzLmVycm9yKFxuICAgICAgICAgICAgYOKaoO+4jyAgSW5zdWZmaWNpZW50IGNyZWRpdHMhIE5lZWQgJHtwcmV2aWV3LmNyZWRpdHNOZWVkZWQgLSBwcmV2aWV3LmNyZWRpdEJhbGFuY2V9IG1vcmUuYCxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBBY2Nlc3MgaW5mb1xuICAgICAgY29uc29sZS5sb2coYFxcbkFQSSBLZXkgdHlwZTogICAgICAgJHtwcmV2aWV3LmtleVR5cGUudG9VcHBlckNhc2UoKX1gKTtcbiAgICAgIGNvbnNvbGUubG9nKGBXcml0ZSBhY2Nlc3M6ICAgICAgICR7cHJldmlldy5oYXNXcml0ZVNjb3BlID8gXCLinJNcIiA6IFwi4pyXXCJ9YCk7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYERvbWVzdGljIChVUy9DQSk6ICAgJHtwcmV2aWV3Lm1lc3NhZ2luZ1Byb2ZpbGUuY2FuU2VuZERvbWVzdGljID8gXCLinJNcIiA6IFwi4pyXXCJ9YCxcbiAgICAgICk7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYEludGVybmF0aW9uYWw6ICAgICAgJHtwcmV2aWV3Lm1lc3NhZ2luZ1Byb2ZpbGUuY2FuU2VuZEludGVybmF0aW9uYWwgPyBcIuKck1wiIDogXCLinJdcIn1gLFxuICAgICAgKTtcblxuICAgICAgLy8gQ291bnRyeSBicmVha2Rvd25cbiAgICAgIGNvbnN0IGNvdW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHByZXZpZXcuYnlDb3VudHJ5KTtcbiAgICAgIGlmIChjb3VudHJpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhjb2xvcnMuYm9sZChcIlxcbvCfk40gQnkgQ291bnRyeTpcXG5cIikpO1xuICAgICAgICBmb3IgKGNvbnN0IFtjb3VudHJ5LCBkYXRhXSBvZiBjb3VudHJpZXMpIHtcbiAgICAgICAgICBjb25zdCBzdGF0dXMgPSBkYXRhLmFsbG93ZWQgPyBjb2xvcnMuc3VjY2VzcyhcIuKck1wiKSA6IGNvbG9ycy5lcnJvcihcIuKcl1wiKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGAgICR7c3RhdHVzfSAke2NvdW50cnl9OiAke2RhdGEuY291bnR9IG1zZ3MsICR7ZGF0YS5jcmVkaXRzfSBjcmVkaXRzICgke2RhdGEudGllcn0pYCxcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICghZGF0YS5hbGxvd2VkICYmIGRhdGEuYmxvY2tlZFJlYXNvbikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShgICAgICDilJTilIAgJHtkYXRhLmJsb2NrZWRSZWFzb259YCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBDb21wbGlhbmNlIGNoZWNrIHJlc3VsdHNcbiAgICAgIGlmIChwcmV2aWV3LmNvbXBsaWFuY2UpIHtcbiAgICAgICAgY29uc29sZS5sb2coY29sb3JzLmJvbGQoXCJcXG7wn5uh77iPICBDb21wbGlhbmNlIENoZWNrOlxcblwiKSk7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGAgIE1lc3NhZ2UgVHlwZTogICAgICAke3ByZXZpZXcuY29tcGxpYW5jZS5tZXNzYWdlVHlwZS50b1VwcGVyQ2FzZSgpfWAsXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHByZXZpZXcuY29tcGxpYW5jZS5zaGFmdEJsb2NrZWQgPiAwKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBjb2xvcnMuZXJyb3IoXG4gICAgICAgICAgICAgIGAgIFNIQUZUIEJsb2NrZWQ6ICAgICAke3ByZXZpZXcuY29tcGxpYW5jZS5zaGFmdEJsb2NrZWR9IG1lc3NhZ2VzYCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IG1zZyBvZiBwcmV2aWV3LmNvbXBsaWFuY2Uuc2hhZnRCbG9ja2VkTWVzc2FnZXMuc2xpY2UoXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgMyxcbiAgICAgICAgICApKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICAgICAgICBgICAgICDilJTilIAgJHttc2cudG99OiAke21zZy5jYXRlZ29yeX0gKCR7bXNnLm1hdGNoZWRUZXJtcy5qb2luKFwiLCBcIil9KWAsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocHJldmlldy5jb21wbGlhbmNlLnNoYWZ0QmxvY2tlZE1lc3NhZ2VzLmxlbmd0aCA+IDMpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICBjb2xvcnMuZGltKFxuICAgICAgICAgICAgICAgIGAgICAgIC4uLiBhbmQgJHtwcmV2aWV3LmNvbXBsaWFuY2Uuc2hhZnRCbG9ja2VkTWVzc2FnZXMubGVuZ3RoIC0gM30gbW9yZWAsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGNvbG9ycy5zdWNjZXNzKFxuICAgICAgICAgICAgICBcIiAgU0hBRlQgQ2hlY2s6ICAgICAgIOKckyBBbGwgbWVzc2FnZXMgcGFzcyBjb250ZW50IGZpbHRlclwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByZXZpZXcuY29tcGxpYW5jZS5tZXNzYWdlVHlwZSA9PT0gXCJtYXJrZXRpbmdcIikge1xuICAgICAgICAgIGlmIChwcmV2aWV3LmNvbXBsaWFuY2UucXVpZXRIb3Vyc1Jlc2NoZWR1bGVkID4gMCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgIGNvbG9ycy53YXJuaW5nKFxuICAgICAgICAgICAgICAgIGAgIFF1aWV0IEhvdXJzOiAgICAgICAke3ByZXZpZXcuY29tcGxpYW5jZS5xdWlldEhvdXJzUmVzY2hlZHVsZWR9IG1lc3NhZ2VzIHdpbGwgYmUgcmVzY2hlZHVsZWRgLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbXNnIG9mIHByZXZpZXcuY29tcGxpYW5jZS5xdWlldEhvdXJzQmxvY2tlZE1lc3NhZ2VzLnNsaWNlKFxuICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAzLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBuZXh0VGltZSA9IG1zZy5uZXh0QWxsb3dlZFRpbWVcbiAgICAgICAgICAgICAgICA/IG5ldyBEYXRlKG1zZy5uZXh0QWxsb3dlZFRpbWUpLnRvTG9jYWxlU3RyaW5nKClcbiAgICAgICAgICAgICAgICA6IFwibmV4dCBhdmFpbGFibGUgd2luZG93XCI7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIGNvbG9ycy5kaW0oXG4gICAgICAgICAgICAgICAgICBgICAgICDilJTilIAgJHttc2cudG99OiAke21zZy5yZWNpcGllbnRUaW1lem9uZX0g4oaSICR7bmV4dFRpbWV9YCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByZXZpZXcuY29tcGxpYW5jZS5xdWlldEhvdXJzQmxvY2tlZE1lc3NhZ2VzLmxlbmd0aCA+IDMpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICAgICAgICAgIGAgICAgIC4uLiBhbmQgJHtwcmV2aWV3LmNvbXBsaWFuY2UucXVpZXRIb3Vyc0Jsb2NrZWRNZXNzYWdlcy5sZW5ndGggLSAzfSBtb3JlYCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgY29sb3JzLnN1Y2Nlc3MoXG4gICAgICAgICAgICAgICAgXCIgIFF1aWV0IEhvdXJzOiAgICAgICDinJMgQWxsIHJlY2lwaWVudHMgd2l0aGluIGFsbG93ZWQgaG91cnNcIixcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgY29sb3JzLmRpbShcIiAgUXVpZXQgSG91cnM6ICAgICAgIEJ5cGFzc2VkICh0cmFuc2FjdGlvbmFsIG1lc3NhZ2UpXCIpLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gV2FybmluZ3NcbiAgICAgIGlmIChwcmV2aWV3Lndhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc29sZS5sb2coY29sb3JzLndhcm5pbmcoXCJcXG7imqDvuI8gIFdhcm5pbmdzOlwiKSk7XG4gICAgICAgIGZvciAoY29uc3QgdyBvZiBwcmV2aWV3Lndhcm5pbmdzKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgIOKAoiAke3d9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQmxvY2tlZCBtZXNzYWdlcyAoZmlyc3QgNSlcbiAgICAgIGlmIChwcmV2aWV3LmJsb2NrZWRNZXNzYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGNvbG9ycy5lcnJvcihcbiAgICAgICAgICAgIGBcXG7inYwgQmxvY2tlZCBNZXNzYWdlcyAoJHtwcmV2aWV3LmJsb2NrZWRNZXNzYWdlcy5sZW5ndGh9IHRvdGFsKTpgLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgYiBvZiBwcmV2aWV3LmJsb2NrZWRNZXNzYWdlcy5zbGljZSgwLCA1KSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgICAke2IudG99OiAke2IucmVhc29ufWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcmV2aWV3LmJsb2NrZWRNZXNzYWdlcy5sZW5ndGggPiA1KSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBjb2xvcnMuZGltKGAgICAuLi4gYW5kICR7cHJldmlldy5ibG9ja2VkTWVzc2FnZXMubGVuZ3RoIC0gNX0gbW9yZWApLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIFwiXFxuXCIgKyBjb2xvcnMuZGltKFwiTm8gbWVzc2FnZXMgd2VyZSBzZW50LiBSZW1vdmUgLS1kcnktcnVuIHRvIHNlbmQuXCIpLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNwaW4uc3RvcCgpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXQgYnl0ZXMgdG8gaHVtYW4gcmVhZGFibGUgc3RyaW5nXG4gICAqL1xuICBwcml2YXRlIGZvcm1hdEJ5dGVzKGJ5dGVzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChieXRlcyA8IDEwMjQpIHJldHVybiBgJHtieXRlc30gQmA7XG4gICAgaWYgKGJ5dGVzIDwgMTAyNCAqIDEwMjQpIHJldHVybiBgJHsoYnl0ZXMgLyAxMDI0KS50b0ZpeGVkKDEpfSBLQmA7XG4gICAgcmV0dXJuIGAkeyhieXRlcyAvICgxMDI0ICogMTAyNCkpLnRvRml4ZWQoMSl9IE1CYDtcbiAgfVxufVxuIl19
446
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvc21zL2JhdGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsT0FBTyxFQUNQLE1BQU0sRUFDTixJQUFJLEVBQ0osVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUErRzdCLE1BQU0sQ0FBQyxPQUFPLE9BQU8sUUFBUyxTQUFRLG9CQUFvQjtJQUN4RCxNQUFNLENBQUMsV0FBVyxHQUNoQixnRUFBZ0UsQ0FBQztJQUVuRSxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLG1EQUFtRDtRQUNuRCx3RUFBd0U7UUFDeEUsNEVBQTRFO1FBQzVFLDZEQUE2RDtRQUM3RCx1RkFBdUY7UUFDdkYsbURBQW1EO1FBQ25ELHVDQUF1QztLQUN4QyxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSx5REFBeUQ7WUFDdEUsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUM7U0FDdEMsQ0FBQztRQUNGLEVBQUUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2YsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsd0RBQXdEO1lBQ3JFLFNBQVMsRUFBRSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDO1NBQ3hDLENBQUM7UUFDRixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFDVCxnRkFBZ0Y7U0FDbkYsQ0FBQztRQUNGLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2pCLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLDRDQUE0QztTQUMxRCxDQUFDO1FBQ0YsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsV0FBVyxFQUNULHlGQUF5RjtZQUMzRixPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsZUFBZSxDQUFDO1lBQ3ZDLE9BQU8sRUFBRSxXQUFXO1NBQ3JCLENBQUM7UUFDRixTQUFTLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUN2QixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFDVCx1RkFBdUY7WUFDekYsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDO1FBQ0YsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDbEIsV0FBVyxFQUFFLHNEQUFzRDtZQUNuRSxTQUFTLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQztTQUNyQyxDQUFDO1FBQ0YsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDckIsV0FBVyxFQUFFLGtDQUFrQztZQUMvQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQztZQUNsQyxPQUFPLEVBQUUsS0FBSztTQUNmLENBQUM7UUFDRixpQkFBaUIsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzlCLFdBQVcsRUFDVCx3SkFBd0o7WUFDMUosU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDO1NBQ3ZCLENBQUM7S0FDSCxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTdDLDRCQUE0QjtRQUM1QixJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBRUQsMEJBQTBCO1FBQzFCLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCx5REFBeUQ7UUFDekQsSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDYixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBRUQsb0NBQW9DO1FBQ3BDLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLFdBQVc7UUFDdkIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFMUQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxTQUFTLENBQUMsR0FBRyxDQUNsQyx3QkFBd0IsRUFDeEIsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQ2QsQ0FBQztZQUVGLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVaLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNmLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQztnQkFDdkQsT0FBTyxDQUFDLEdBQUcsQ0FBQywwREFBMEQsQ0FBQyxDQUFDO2dCQUN4RSxPQUFPO1lBQ1QsQ0FBQztZQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUM7WUFDeEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXhDLEtBQUssTUFBTSxNQUFNLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN0QyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMzQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUVqRSxPQUFPLENBQUMsR0FBRyxDQUNULEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQzVELENBQUM7Z0JBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FDVCxNQUFNLENBQUMsR0FBRyxDQUNSLE1BQU0sSUFBSSxNQUFNLElBQUksTUFBTSxNQUFNLENBQUMsUUFBUSxFQUFFLFVBQVUsSUFBSSxDQUFDLHVCQUF1QixNQUFNLEVBQUUsQ0FDMUYsQ0FDRixDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QyxPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsaURBQWlELENBQUMsQ0FDOUQsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1osTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLFVBQVUsQ0FDdEIsUUFBZ0IsRUFDaEIsS0FNQztRQUVELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXZELElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FDbEMsd0JBQXdCLFFBQVEsRUFBRSxDQUNuQyxDQUFDO1lBRUYsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRVosT0FBTyxDQUFDLEdBQUcsQ0FDVCxNQUFNLENBQUMsT0FBTyxDQUFDLHFCQUFxQixRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQ2hFLENBQUM7WUFDRixPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxHQUFHLENBQ1IsS0FBSyxRQUFRLENBQUMsVUFBVSxDQUFDLFVBQVUsMEJBQTBCLFFBQVEsQ0FBQyxVQUFVLENBQUMsU0FBUyxPQUFPLENBQ2xHLENBQ0YsQ0FBQztZQUVGLGdDQUFnQztZQUNoQyxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQ25DLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNmLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUM5QixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUk7aUJBQzNCLENBQUMsQ0FBQyxDQUFDO1lBQ04sQ0FBQztZQUVELGtDQUFrQztZQUNsQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM1RCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLEtBQUssQ0FDSCxHQUFHLFdBQVcsQ0FBQyxNQUFNLG9FQUFvRSxDQUMxRixDQUFDO2dCQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixDQUFDO1lBRUQsK0JBQStCO1lBQy9CLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FDdEIsUUFBK0MsRUFDL0MsS0FBSyxFQUNMLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUNuQixDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssS0FBSyxDQUFDLG9CQUFvQixDQUFDLEtBT2xDO1FBQ0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQixLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxFQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDekQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0QyxFQUFFLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRTtZQUMvQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUs7U0FDbEIsQ0FBQyxDQUFDLENBQUM7UUFFSix5QkFBeUI7UUFDekIsS0FBSyxNQUFNLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUN0QyxLQUFLLENBQUMseUJBQXlCLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRTtvQkFDdkMsSUFBSSxFQUFFLGdDQUFnQztpQkFDdkMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQU8zQjtRQUNDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFLLENBQUM7UUFFN0Isb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMxQixLQUFLLENBQUMsbUJBQW1CLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLENBQUM7UUFFRCwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMvQixLQUFLLENBQUMsOEJBQThCLEVBQUU7Z0JBQ3BDLElBQUksRUFBRSw2REFBNkQ7YUFDcEUsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLENBQUM7UUFFRCxZQUFZO1FBQ1osTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVwQyw4QkFBOEI7UUFDOUIsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxFQUFFLENBQUM7WUFDcEMsS0FBSyxDQUFDLDBCQUEwQixFQUFFO2dCQUNoQyxJQUFJLEVBQUUsbUNBQW1DO2FBQzFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLGFBQWEsUUFBUSxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUV6RCxJQUFJLENBQUM7WUFDSCxnQ0FBZ0M7WUFDaEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxTQUFTLENBQUMsVUFBVSxDQUN6Qyx1QkFBdUIsRUFDdkIsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FDM0MsQ0FBQztZQUVGLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVaLHNCQUFzQjtZQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDOUQsT0FBTyxDQUFDLEdBQUcsQ0FDVCxNQUFNLENBQUMsR0FBRyxDQUNSLEtBQUssUUFBUSxDQUFDLFVBQVUsQ0FBQyxVQUFVLFlBQVksUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUFZLGNBQWMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIscUJBQXFCLENBQ3hKLENBQ0YsQ0FBQztZQUVGLGdDQUFnQztZQUNoQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO2dCQUN4RCxLQUFLLE1BQU0sR0FBRyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUM5QyxPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxLQUFLLE1BQU0sR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQzdELENBQUM7Z0JBQ0osQ0FBQztnQkFDRCxJQUFJLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDM0IsT0FBTyxDQUFDLEdBQUcsQ0FDVCxNQUFNLENBQUMsR0FBRyxDQUNSLGNBQWMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxjQUFjLENBQ2pFLENBQ0YsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2YsQ0FBQztZQUVELGdDQUFnQztZQUNoQyxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQ25DLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNmLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUM5QixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUk7aUJBQzNCLENBQUMsQ0FBQyxDQUFDO1lBQ04sQ0FBQztZQUVELGtDQUFrQztZQUNsQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM1RCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLEtBQUssQ0FDSCxHQUFHLFdBQVcsQ0FBQyxNQUFNLG9FQUFvRSxDQUMxRixDQUFDO2dCQUNGLE9BQU8sQ0FBQyxHQUFHLENBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FDUiw2REFBNkQsQ0FDOUQsQ0FDRixDQUFDO2dCQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixDQUFDO1lBRUQsK0JBQStCO1lBQy9CLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FDdEIsUUFBK0MsRUFDL0MsS0FBSyxFQUNMLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUNuQixDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxLQUFLLENBQUMsYUFBYSxDQUN6QixRQUE2QyxFQUM3QyxLQUtDLEVBQ0QsUUFBaUI7UUFFakIsbUJBQW1CO1FBQ25CLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQztZQUMzQixLQUFLLENBQUMsd0NBQXdDLEVBQUU7Z0JBQzlDLElBQUksRUFBRSwwQ0FBMEM7YUFDakQsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLENBQUM7UUFFRCxzQkFBc0I7UUFDdEIsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFFRCxpQkFBaUI7UUFDakIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFdBQVcsUUFBUSxDQUFDLE1BQU0sY0FBYyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWIsSUFBSSxDQUFDO1lBQ0gsd0VBQXdFO1lBQ3hFLHVFQUF1RTtZQUN2RSwwRUFBMEU7WUFDMUUsTUFBTSxRQUFRLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUNuQyx3QkFBd0IsRUFDeEI7Z0JBQ0UsUUFBUTtnQkFDUixXQUFXLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0JBQ3ZCLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdkMsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsc0NBQXNDO2FBQ3RFLEVBQ0QsSUFBSSxFQUNKO2dCQUNFLGNBQWMsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUM7Z0JBQ3hDLGtCQUFrQixFQUFFLEtBQUs7YUFDMUIsQ0FDRixDQUFDO1lBRUYsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRVosSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2YsT0FBTztZQUNULENBQUM7WUFFRCwwQkFBMEI7WUFDMUIsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7WUFDM0MsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDN0QsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFFaEUsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxDQUFDLHlCQUF5QixFQUFFO29CQUNqQyxVQUFVLEVBQUUsUUFBUSxDQUFDLE9BQU87b0JBQzVCLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztvQkFDckIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDM0MsY0FBYyxFQUFFLFFBQVEsQ0FBQyxXQUFXO2lCQUNyQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ3JCLEtBQUssQ0FBQyxjQUFjLEVBQUU7b0JBQ3BCLElBQUksRUFBRSxPQUFPLFFBQVEsQ0FBQyxNQUFNLDBCQUEwQjtpQkFDdkQsQ0FBQyxDQUFDO2dCQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzNELE9BQU8sQ0FBQyxHQUFHLENBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQzlELENBQUM7WUFDSixDQUFDO2lCQUFNLElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25FLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDckQsT0FBTyxDQUFDLEdBQUcsQ0FDVCx1QkFBdUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FDL0QsQ0FBQztnQkFDRixPQUFPLENBQUMsR0FBRyxDQUNULHVCQUF1QixNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUMvRCxDQUFDO2dCQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixRQUFRLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztnQkFFL0Qsb0NBQW9DO2dCQUNwQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDdEIsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQ3pDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FDN0IsQ0FBQztvQkFDRixJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ3BELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7d0JBQ2hELEtBQUssTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7NEJBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEtBQUssSUFBSSxlQUFlLEVBQUUsQ0FBQyxDQUM3RCxDQUFDO3dCQUNKLENBQUM7b0JBQ0gsQ0FBQzt5QkFBTSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FDUixPQUFPLFVBQVUsQ0FBQyxNQUFNLDJDQUEyQyxDQUNwRSxDQUNGLENBQUM7b0JBQ0osQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1osTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLFdBQVcsQ0FDdkIsUUFBNkMsRUFDN0MsS0FBd0I7UUFFeEIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFbkQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxPQUFPLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUNsQyxnQ0FBZ0MsRUFDaEMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FDdEMsQ0FBQztZQUVGLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVaLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNkLE9BQU87WUFDVCxDQUFDO1lBRUQsNkJBQTZCO1lBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUM7WUFFM0QsZ0JBQWdCO1lBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNwRCxPQUFPLENBQUMsR0FBRyxDQUNULHVCQUF1QixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUNsRSxDQUFDO1lBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FDVCx1QkFBdUIsT0FBTyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FDM0YsQ0FBQztZQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3pELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV4QyxVQUFVO1lBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7WUFDOUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7WUFDNUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUNsQyxPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxLQUFLLENBQ1Ysa0NBQWtDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsUUFBUSxDQUN4RixDQUNGLENBQUM7WUFDSixDQUFDO1lBRUQsY0FBYztZQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RFLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN4RSxPQUFPLENBQUMsR0FBRyxDQUNULHVCQUF1QixPQUFPLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUM5RSxDQUFDO1lBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FDVCx1QkFBdUIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUNuRixDQUFDO1lBRUYsb0JBQW9CO1lBQ3BCLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BELElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztnQkFDL0MsS0FBSyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDO29CQUN4QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN0RSxPQUFPLENBQUMsR0FBRyxDQUNULEtBQUssTUFBTSxJQUFJLE9BQU8sS0FBSyxJQUFJLENBQUMsS0FBSyxVQUFVLElBQUksQ0FBQyxPQUFPLGFBQWEsSUFBSSxDQUFDLElBQUksR0FBRyxDQUNyRixDQUFDO29CQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzt3QkFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDM0QsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUVELDJCQUEyQjtZQUMzQixJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQztnQkFDdkQsT0FBTyxDQUFDLEdBQUcsQ0FDVCx3QkFBd0IsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FDdkUsQ0FBQztnQkFFRixJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUN4QyxPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxLQUFLLENBQ1Ysd0JBQXdCLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxXQUFXLENBQ25FLENBQ0YsQ0FBQztvQkFDRixLQUFLLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUM3RCxDQUFDLEVBQ0QsQ0FBQyxDQUNGLEVBQUUsQ0FBQzt3QkFDRixPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxHQUFHLENBQ1IsV0FBVyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxRQUFRLEtBQUssR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDdEUsQ0FDRixDQUFDO29CQUNKLENBQUM7b0JBQ0QsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDdkQsT0FBTyxDQUFDLEdBQUcsQ0FDVCxNQUFNLENBQUMsR0FBRyxDQUNSLGdCQUFnQixPQUFPLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FDMUUsQ0FDRixDQUFDO29CQUNKLENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sQ0FBQyxHQUFHLENBQ1QsTUFBTSxDQUFDLE9BQU8sQ0FDWix5REFBeUQsQ0FDMUQsQ0FDRixDQUFDO2dCQUNKLENBQUM7Z0JBRUQsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsS0FBSyxXQUFXLEVBQUUsQ0FBQztvQkFDbkQsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLHFCQUFxQixHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUNqRCxPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxPQUFPLENBQ1osd0JBQXdCLE9BQU8sQ0FBQyxVQUFVLENBQUMscUJBQXFCLCtCQUErQixDQUNoRyxDQUNGLENBQUM7d0JBQ0YsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FDbEUsQ0FBQyxFQUNELENBQUMsQ0FDRixFQUFFLENBQUM7NEJBQ0YsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLGVBQWU7Z0NBQ2xDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsY0FBYyxFQUFFO2dDQUNoRCxDQUFDLENBQUMsdUJBQXVCLENBQUM7NEJBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FDUixXQUFXLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLGlCQUFpQixNQUFNLFFBQVEsRUFBRSxDQUM1RCxDQUNGLENBQUM7d0JBQ0osQ0FBQzt3QkFDRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMseUJBQXlCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUM1RCxPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxHQUFHLENBQ1IsZ0JBQWdCLE9BQU8sQ0FBQyxVQUFVLENBQUMseUJBQXlCLENBQUMsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUMvRSxDQUNGLENBQUM7d0JBQ0osQ0FBQztvQkFDSCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sT0FBTyxDQUFDLEdBQUcsQ0FDVCxNQUFNLENBQUMsT0FBTyxDQUNaLDREQUE0RCxDQUM3RCxDQUNGLENBQUM7b0JBQ0osQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTyxDQUFDLEdBQUcsQ0FDVCxNQUFNLENBQUMsR0FBRyxDQUFDLHVEQUF1RCxDQUFDLENBQ3BFLENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7WUFFRCxXQUFXO1lBQ1gsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztnQkFDL0MsS0FBSyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQixDQUFDO1lBQ0gsQ0FBQztZQUVELDZCQUE2QjtZQUM3QixJQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN2QyxPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxLQUFLLENBQ1YseUJBQXlCLE9BQU8sQ0FBQyxlQUFlLENBQUMsTUFBTSxVQUFVLENBQ2xFLENBQ0YsQ0FBQztnQkFDRixLQUFLLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNwRCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztnQkFDekMsQ0FBQztnQkFDRCxJQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUN2QyxPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxPQUFPLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUNwRSxDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxrREFBa0QsQ0FBQyxDQUN0RSxDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxXQUFXLENBQUMsS0FBYTtRQUMvQixJQUFJLEtBQUssR0FBRyxJQUFJO1lBQUUsT0FBTyxHQUFHLEtBQUssSUFBSSxDQUFDO1FBQ3RDLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxJQUFJO1lBQUUsT0FBTyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ2xFLE9BQU8sR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IHsgcmVhZEZpbGVTeW5jLCBleGlzdHNTeW5jIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBiYXNlbmFtZSB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7XG4gIHN1Y2Nlc3MsXG4gIGVycm9yLFxuICBzcGlubmVyLFxuICBjb2xvcnMsXG4gIGpzb24sXG4gIGlzSnNvbk1vZGUsXG59IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmludGVyZmFjZSBCYXRjaFVwbG9hZFJlc3BvbnNlIHtcbiAgdXBsb2FkOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBmaWxlbmFtZTogc3RyaW5nO1xuICAgIHNpemU6IG51bWJlcjtcbiAgICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgfTtcbiAgdmFsaWRhdGlvbjoge1xuICAgIHRvdGFsUm93czogbnVtYmVyO1xuICAgIHZhbGlkQ291bnQ6IG51bWJlcjtcbiAgICBpbnZhbGlkQ291bnQ6IG51bWJlcjtcbiAgICBkdXBsaWNhdGVzUmVtb3ZlZDogbnVtYmVyO1xuICAgIGhhc0hlYWRlcjogYm9vbGVhbjtcbiAgfTtcbiAgcmVjaXBpZW50czogQXJyYXk8eyB0bzogc3RyaW5nOyB0ZXh0Pzogc3RyaW5nIH0+O1xuICBlcnJvcnM6IEFycmF5PHsgcm93OiBudW1iZXI7IHBob25lOiBzdHJpbmc7IGVycm9yOiBzdHJpbmcgfT47XG4gIGhhc01vcmVFcnJvcnM6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBCYXRjaEhpc3RvcnlSZXNwb25zZSB7XG4gIHVwbG9hZHM6IEFycmF5PHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGZpbGVuYW1lOiBzdHJpbmc7XG4gICAgc2l6ZTogbnVtYmVyO1xuICAgIGNyZWF0ZWRBdDogc3RyaW5nO1xuICAgIG1ldGFkYXRhOiB7XG4gICAgICB0b3RhbFJvd3M6IG51bWJlcjtcbiAgICAgIHZhbGlkQ291bnQ6IG51bWJlcjtcbiAgICAgIGludmFsaWRDb3VudDogbnVtYmVyO1xuICAgICAgc291cmNlPzogc3RyaW5nO1xuICAgIH07XG4gIH0+O1xufVxuXG5pbnRlcmZhY2UgQmF0Y2hSZXNwb25zZSB7XG4gIGJhdGNoSWQ6IHN0cmluZztcbiAgdG90YWw6IG51bWJlcjtcbiAgc2VudDogbnVtYmVyO1xuICBxdWV1ZWQ6IG51bWJlcjtcbiAgZmFpbGVkOiBudW1iZXI7XG4gIGNyZWRpdHNVc2VkOiBudW1iZXI7XG4gIGNyZWRpdHNSZWZ1bmRlZDogbnVtYmVyO1xuICBzdGF0dXM6IHN0cmluZztcbiAgbWVzc2FnZXM/OiBBcnJheTx7XG4gICAgaW5kZXg/OiBudW1iZXI7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0bzogc3RyaW5nO1xuICAgIHN0YXR1czogc3RyaW5nO1xuICAgIGVycm9yPzogc3RyaW5nIHwgbnVsbDtcbiAgICBjcmVhdGVkQXQ/OiBzdHJpbmc7XG4gICAgZGVsaXZlcmVkQXQ/OiBzdHJpbmcgfCBudWxsO1xuICB9Pjtcbn1cblxuaW50ZXJmYWNlIEJhdGNoUHJldmlld1Jlc3BvbnNlIHtcbiAgdG90YWw6IG51bWJlcjtcbiAgc2VuZGFibGU6IG51bWJlcjtcbiAgYmxvY2tlZDogbnVtYmVyO1xuICBkdXBsaWNhdGVzOiBudW1iZXI7XG4gIGNyZWRpdHNOZWVkZWQ6IG51bWJlcjtcbiAgY3JlZGl0QmFsYW5jZTogbnVtYmVyO1xuICBoYXNTdWZmaWNpZW50Q3JlZGl0czogYm9vbGVhbjtcbiAga2V5VHlwZTogXCJ0ZXN0XCIgfCBcImxpdmVcIjtcbiAga2V5U2NvcGVzOiBzdHJpbmdbXTtcbiAgaGFzV3JpdGVTY29wZTogYm9vbGVhbjtcbiAgbWVzc2FnaW5nUHJvZmlsZToge1xuICAgIGlkOiBzdHJpbmcgfCBudWxsO1xuICAgIGNhblNlbmREb21lc3RpYzogYm9vbGVhbjtcbiAgICBjYW5TZW5kSW50ZXJuYXRpb25hbDogYm9vbGVhbjtcbiAgICB2ZXJpZmljYXRpb25TdGF0dXM6IHN0cmluZyB8IG51bGw7XG4gICAgdmVyaWZpY2F0aW9uVHlwZTogc3RyaW5nIHwgbnVsbDtcbiAgfTtcbiAgYnlDb3VudHJ5OiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIHtcbiAgICAgIGNvdW50OiBudW1iZXI7XG4gICAgICBjcmVkaXRzOiBudW1iZXI7XG4gICAgICB0aWVyOiBzdHJpbmc7XG4gICAgICBhbGxvd2VkOiBib29sZWFuO1xuICAgICAgYmxvY2tlZFJlYXNvbj86IHN0cmluZztcbiAgICB9XG4gID47XG4gIGJsb2NrZWRNZXNzYWdlczogQXJyYXk8e1xuICAgIGluZGV4OiBudW1iZXI7XG4gICAgdG86IHN0cmluZztcbiAgICByZWFzb246IHN0cmluZztcbiAgfT47XG4gIGNvbXBsaWFuY2U6IHtcbiAgICBtZXNzYWdlVHlwZTogXCJtYXJrZXRpbmdcIiB8IFwidHJhbnNhY3Rpb25hbFwiO1xuICAgIHNoYWZ0QmxvY2tlZDogbnVtYmVyO1xuICAgIHF1aWV0SG91cnNCbG9ja2VkOiBudW1iZXI7XG4gICAgcXVpZXRIb3Vyc1Jlc2NoZWR1bGVkOiBudW1iZXI7XG4gICAgc2hhZnRCbG9ja2VkTWVzc2FnZXM6IEFycmF5PHtcbiAgICAgIGluZGV4OiBudW1iZXI7XG4gICAgICB0bzogc3RyaW5nO1xuICAgICAgY2F0ZWdvcnk6IHN0cmluZztcbiAgICAgIG1hdGNoZWRUZXJtczogc3RyaW5nW107XG4gICAgfT47XG4gICAgcXVpZXRIb3Vyc0Jsb2NrZWRNZXNzYWdlczogQXJyYXk8e1xuICAgICAgaW5kZXg6IG51bWJlcjtcbiAgICAgIHRvOiBzdHJpbmc7XG4gICAgICByZWNpcGllbnRUaW1lem9uZTogc3RyaW5nO1xuICAgICAgcmVjaXBpZW50TG9jYWxUaW1lOiBzdHJpbmc7XG4gICAgICBuZXh0QWxsb3dlZFRpbWU/OiBzdHJpbmc7XG4gICAgfT47XG4gIH07XG4gIHdhcm5pbmdzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU21zQmF0Y2ggZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9XG4gICAgXCJTZW5kIGJhdGNoIFNNUyBtZXNzYWdlcyAodXBsb2FkcyBDU1YgdG8gY2xvdWQgZm9yIGF1ZGl0IHRyYWlsKVwiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICBcIjwlPSBjb25maWcuYmluICU+IHNtcyBiYXRjaCAtLWZpbGUgcmVjaXBpZW50cy5jc3ZcIixcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIGJhdGNoIC0tZmlsZSBwaG9uZXMuY3N2IC0tdGV4dCBcIkhlbGxvIGV2ZXJ5b25lIVwiJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIGJhdGNoIC0tdG8gKzE1NTUxMjM0NTY3LCsxNTU1OTg3NjU0MyAtLXRleHQgXCJIZWxsbyFcIicsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBzbXMgYmF0Y2ggLS1maWxlIHJlY2lwaWVudHMuY3N2IC0tZHJ5LXJ1blwiLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgYmF0Y2ggLS1maWxlIHBob25lcy5jc3YgLS10ZXh0IFwiQ29kZTogMTIzXCIgLS10eXBlIHRyYW5zYWN0aW9uYWwnLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gc21zIGJhdGNoIC0tcmV1c2UgYWJjMTIzLWRlZjQ1NlwiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gc21zIGJhdGNoIC0taGlzdG9yeVwiLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgZmlsZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwiRlwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQ1NWIGZpbGUgd2l0aCBwaG9uZSBudW1iZXJzIChhbmQgb3B0aW9uYWwgbWVzc2FnZSB0ZXh0KVwiLFxuICAgICAgZXhjbHVzaXZlOiBbXCJ0b1wiLCBcInJldXNlXCIsIFwiaGlzdG9yeVwiXSxcbiAgICB9KSxcbiAgICB0bzogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwidFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQ29tbWEtc2VwYXJhdGVkIHJlY2lwaWVudCBwaG9uZSBudW1iZXJzIChFLjE2NCBmb3JtYXQpXCIsXG4gICAgICBleGNsdXNpdmU6IFtcImZpbGVcIiwgXCJyZXVzZVwiLCBcImhpc3RvcnlcIl0sXG4gICAgfSksXG4gICAgdGV4dDogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwibVwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiTWVzc2FnZSB0ZXh0IChyZXF1aXJlZCB3aXRoIC0tdG8sIG9wdGlvbmFsIHdpdGggLS1maWxlIGlmIENTViBoYXMgdGV4dCBjb2x1bW4pXCIsXG4gICAgfSksXG4gICAgZnJvbTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwiZlwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiU2VuZGVyIElEIG9yIHBob25lIG51bWJlciBmb3IgYWxsIG1lc3NhZ2VzXCIsXG4gICAgfSksXG4gICAgdHlwZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIk1lc3NhZ2UgdHlwZTogbWFya2V0aW5nIChkZWZhdWx0KSBvciB0cmFuc2FjdGlvbmFsLiBUcmFuc2FjdGlvbmFsIGJ5cGFzc2VzIHF1aWV0IGhvdXJzLlwiLFxuICAgICAgb3B0aW9uczogW1wibWFya2V0aW5nXCIsIFwidHJhbnNhY3Rpb25hbFwiXSxcbiAgICAgIGRlZmF1bHQ6IFwibWFya2V0aW5nXCIsXG4gICAgfSksXG4gICAgXCJkcnktcnVuXCI6IEZsYWdzLmJvb2xlYW4oe1xuICAgICAgY2hhcjogXCJkXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJQcmV2aWV3IGJhdGNoIHdpdGhvdXQgc2VuZGluZyAodmFsaWRhdGVzIGFjY2Vzcywgc2hvd3MgY29zdCBhbmQgY29tcGxpYW5jZSBicmVha2Rvd24pXCIsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9KSxcbiAgICByZXVzZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlJlLXVzZSBhIHByZXZpb3VzIGJhdGNoIHVwbG9hZCBieSBJRCAoc2VlIC0taGlzdG9yeSlcIixcbiAgICAgIGV4Y2x1c2l2ZTogW1wiZmlsZVwiLCBcInRvXCIsIFwiaGlzdG9yeVwiXSxcbiAgICB9KSxcbiAgICBoaXN0b3J5OiBGbGFncy5ib29sZWFuKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNob3cgcmVjZW50IGJhdGNoIHVwbG9hZCBoaXN0b3J5XCIsXG4gICAgICBleGNsdXNpdmU6IFtcImZpbGVcIiwgXCJ0b1wiLCBcInJldXNlXCJdLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSksXG4gICAgXCJpZGVtcG90ZW5jeS1rZXlcIjogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIklkZW1wb3RlbmN5IGtleSAoMS0yNTUgcHJpbnRhYmxlIEFTQ0lJIGNoYXJhY3RlcnMpLiBSZS1ydW5uaW5nIHdpdGggdGhlIHNhbWUga2V5IHdpdGhpbiAyNCBob3VycyByZXR1cm5zIHRoZSBvcmlnaW5hbCByZXN1bHQgaW5zdGVhZCBvZiBzZW5kaW5nIGFnYWluLlwiLFxuICAgICAgZXhjbHVzaXZlOiBbXCJoaXN0b3J5XCJdLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKFNtc0JhdGNoKTtcblxuICAgIC8vIEhhbmRsZSBoaXN0b3J5IHN1YmNvbW1hbmRcbiAgICBpZiAoZmxhZ3MuaGlzdG9yeSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2hvd0hpc3RvcnkoKTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgcmV1c2Ugc3ViY29tbWFuZFxuICAgIGlmIChmbGFncy5yZXVzZSkge1xuICAgICAgcmV0dXJuIHRoaXMucmV1c2VCYXRjaChmbGFncy5yZXVzZSwgZmxhZ3MpO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSAtLXRvIGZsYWcgKGlubGluZSByZWNpcGllbnRzLCBubyB1cGxvYWQgbmVlZGVkKVxuICAgIGlmIChmbGFncy50bykge1xuICAgICAgcmV0dXJuIHRoaXMuc2VuZElubGluZVJlY2lwaWVudHMoZmxhZ3MpO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSAtLWZpbGUgZmxhZyAodXBsb2FkIHRvIFIyKVxuICAgIGlmIChmbGFncy5maWxlKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGxvYWRBbmRTZW5kKGZsYWdzKTtcbiAgICB9XG5cbiAgICBlcnJvcihcIkVpdGhlciAtLWZpbGUsIC0tdG8sIC0tcmV1c2UsIG9yIC0taGlzdG9yeSBpcyByZXF1aXJlZFwiKTtcbiAgICB0aGlzLmV4aXQoMSk7XG4gIH1cblxuICAvKipcbiAgICogU2hvdyBiYXRjaCB1cGxvYWQgaGlzdG9yeVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBzaG93SGlzdG9yeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzcGluID0gc3Bpbm5lcihcIkZldGNoaW5nIGJhdGNoIGhpc3RvcnkuLi5cIikuc3RhcnQoKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5nZXQ8QmF0Y2hIaXN0b3J5UmVzcG9uc2U+KFxuICAgICAgICBcIi9hcGkvY2xpL2JhdGNoL2hpc3RvcnlcIixcbiAgICAgICAgeyBsaW1pdDogMTUgfSxcbiAgICAgICk7XG5cbiAgICAgIHNwaW4uc3RvcCgpO1xuXG4gICAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICAgIGpzb24ocmVzcG9uc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXNwb25zZS51cGxvYWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiXFxuTm8gYmF0Y2ggdXBsb2FkcyBmb3VuZC5cXG5cIikpO1xuICAgICAgICBjb25zb2xlLmxvZyhcIlVwbG9hZCBhIENTViBmaWxlIHdpdGg6IHNlbmRseSBzbXMgYmF0Y2ggLS1maWxlIHlvdXIuY3N2XCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5ib2xkKFwiXFxu8J+TgSBSZWNlbnQgQmF0Y2ggVXBsb2Fkc1xcblwiKSk7XG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwi4pSAXCIucmVwZWF0KDgwKSkpO1xuXG4gICAgICBmb3IgKGNvbnN0IHVwbG9hZCBvZiByZXNwb25zZS51cGxvYWRzKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh1cGxvYWQuY3JlYXRlZEF0KS50b0xvY2FsZVN0cmluZygpO1xuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5mb3JtYXRCeXRlcyh1cGxvYWQuc2l6ZSk7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IHVwbG9hZC5tZXRhZGF0YT8uc291cmNlID09PSBcImNsaVwiID8gXCJDTElcIiA6IFwiV2ViXCI7XG5cbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYCR7Y29sb3JzLmluZm8odXBsb2FkLmlkLnNsaWNlKDAsIDgpKX0gICR7dXBsb2FkLmZpbGVuYW1lfWAsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGNvbG9ycy5kaW0oXG4gICAgICAgICAgICBgICAgJHtkYXRlfSB8ICR7c2l6ZX0gfCAke3VwbG9hZC5tZXRhZGF0YT8udmFsaWRDb3VudCB8fCAwfSB2YWxpZCByZWNpcGllbnRzIHwgJHtzb3VyY2V9YCxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwi4pSAXCIucmVwZWF0KDgwKSkpO1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGNvbG9ycy5kaW0oXCJcXG5SZS11c2UgYSBiYXRjaDogc2VuZGx5IHNtcyBiYXRjaCAtLXJldXNlIDxpZD5cIiksXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc3Bpbi5zdG9wKCk7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlLXVzZSBhIHByZXZpb3VzIGJhdGNoIHVwbG9hZFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZXVzZUJhdGNoKFxuICAgIHVwbG9hZElkOiBzdHJpbmcsXG4gICAgZmxhZ3M6IHtcbiAgICAgIHRleHQ/OiBzdHJpbmc7XG4gICAgICBmcm9tPzogc3RyaW5nO1xuICAgICAgdHlwZT86IHN0cmluZztcbiAgICAgIFwiZHJ5LXJ1blwiPzogYm9vbGVhbjtcbiAgICAgIFwiaWRlbXBvdGVuY3kta2V5XCI/OiBzdHJpbmc7XG4gICAgfSxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc3BpbiA9IHNwaW5uZXIoXCJGZXRjaGluZyBiYXRjaCBkYXRhLi4uXCIpLnN0YXJ0KCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQuZ2V0PEJhdGNoVXBsb2FkUmVzcG9uc2U+KFxuICAgICAgICBgL2FwaS9jbGkvYmF0Y2gvcmV1c2UvJHt1cGxvYWRJZH1gLFxuICAgICAgKTtcblxuICAgICAgc3Bpbi5zdG9wKCk7XG5cbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBjb2xvcnMuc3VjY2VzcyhgXFxu4pyTIExvYWRlZCBiYXRjaDogJHtyZXNwb25zZS51cGxvYWQuZmlsZW5hbWV9YCksXG4gICAgICApO1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGNvbG9ycy5kaW0oXG4gICAgICAgICAgYCAgJHtyZXNwb25zZS52YWxpZGF0aW9uLnZhbGlkQ291bnR9IHZhbGlkIHJlY2lwaWVudHMgZnJvbSAke3Jlc3BvbnNlLnZhbGlkYXRpb24udG90YWxSb3dzfSByb3dzYCxcbiAgICAgICAgKSxcbiAgICAgICk7XG5cbiAgICAgIC8vIEFwcGx5IHNoYXJlZCB0ZXh0IGlmIHByb3ZpZGVkXG4gICAgICBsZXQgbWVzc2FnZXMgPSByZXNwb25zZS5yZWNpcGllbnRzO1xuICAgICAgaWYgKGZsYWdzLnRleHQpIHtcbiAgICAgICAgbWVzc2FnZXMgPSBtZXNzYWdlcy5tYXAoKHIpID0+ICh7XG4gICAgICAgICAgdG86IHIudG8sXG4gICAgICAgICAgdGV4dDogci50ZXh0IHx8IGZsYWdzLnRleHQsXG4gICAgICAgIH0pKTtcbiAgICAgIH1cblxuICAgICAgLy8gVmFsaWRhdGUgYWxsIG1lc3NhZ2VzIGhhdmUgdGV4dFxuICAgICAgY29uc3QgbWlzc2luZ1RleHQgPSBtZXNzYWdlcy5maWx0ZXIoKG0pID0+ICFtLnRleHQ/LnRyaW0oKSk7XG4gICAgICBpZiAobWlzc2luZ1RleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBlcnJvcihcbiAgICAgICAgICBgJHttaXNzaW5nVGV4dC5sZW5ndGh9IHJlY2lwaWVudHMgbWlzc2luZyBtZXNzYWdlIHRleHQuIFVzZSAtLXRleHQgdG8gcHJvdmlkZSBhIGRlZmF1bHQuYCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuXG4gICAgICAvLyBQcm9jZWVkIHdpdGggcHJldmlldyBvciBzZW5kXG4gICAgICBhd2FpdCB0aGlzLnByZXZpZXdPclNlbmQoXG4gICAgICAgIG1lc3NhZ2VzIGFzIEFycmF5PHsgdG86IHN0cmluZzsgdGV4dDogc3RyaW5nIH0+LFxuICAgICAgICBmbGFncyxcbiAgICAgICAgcmVzcG9uc2UudXBsb2FkLmlkLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNwaW4uc3RvcCgpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kIHRvIGlubGluZSByZWNpcGllbnRzICgtLXRvIGZsYWcpXG4gICAqIFRoaXMgcGF0aCBkb2Vzbid0IHVwbG9hZCB0byBSMiBzaW5jZSBpdCdzIGp1c3QgYSBmZXcgbnVtYmVyc1xuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBzZW5kSW5saW5lUmVjaXBpZW50cyhmbGFnczoge1xuICAgIHRvPzogc3RyaW5nO1xuICAgIHRleHQ/OiBzdHJpbmc7XG4gICAgZnJvbT86IHN0cmluZztcbiAgICB0eXBlPzogc3RyaW5nO1xuICAgIFwiZHJ5LXJ1blwiPzogYm9vbGVhbjtcbiAgICBcImlkZW1wb3RlbmN5LWtleVwiPzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFmbGFncy50ZXh0KSB7XG4gICAgICBlcnJvcihcIi0tdGV4dCBpcyByZXF1aXJlZCB3aGVuIHVzaW5nIC0tdG9cIik7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgY29uc3QgcGhvbmVzID0gZmxhZ3MudG8hLnNwbGl0KFwiLFwiKS5tYXAoKHApID0+IHAudHJpbSgpKTtcbiAgICBjb25zdCBtZXNzYWdlcyA9IHBob25lcy5tYXAoKHBob25lKSA9PiAoe1xuICAgICAgdG86IHBob25lLnN0YXJ0c1dpdGgoXCIrXCIpID8gcGhvbmUgOiBgKyR7cGhvbmV9YCxcbiAgICAgIHRleHQ6IGZsYWdzLnRleHQhLFxuICAgIH0pKTtcblxuICAgIC8vIFZhbGlkYXRlIHBob25lIG51bWJlcnNcbiAgICBmb3IgKGNvbnN0IG1zZyBvZiBtZXNzYWdlcykge1xuICAgICAgaWYgKCEvXlxcK1sxLTldXFxkezEsMTR9JC8udGVzdChtc2cudG8pKSB7XG4gICAgICAgIGVycm9yKGBJbnZhbGlkIHBob25lIG51bWJlcjogJHttc2cudG99YCwge1xuICAgICAgICAgIGhpbnQ6IFwiVXNlIEUuMTY0IGZvcm1hdDogKzE1NTUxMjM0NTY3XCIsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5wcmV2aWV3T3JTZW5kKG1lc3NhZ2VzLCBmbGFncyk7XG4gIH1cblxuICAvKipcbiAgICogVXBsb2FkIENTViB0byBSMiBhbmQgc2VuZFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyB1cGxvYWRBbmRTZW5kKGZsYWdzOiB7XG4gICAgZmlsZT86IHN0cmluZztcbiAgICB0ZXh0Pzogc3RyaW5nO1xuICAgIGZyb20/OiBzdHJpbmc7XG4gICAgdHlwZT86IHN0cmluZztcbiAgICBcImRyeS1ydW5cIj86IGJvb2xlYW47XG4gICAgXCJpZGVtcG90ZW5jeS1rZXlcIj86IHN0cmluZztcbiAgfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZpbGVQYXRoID0gZmxhZ3MuZmlsZSE7XG5cbiAgICAvLyBDaGVjayBmaWxlIGV4aXN0c1xuICAgIGlmICghZXhpc3RzU3luYyhmaWxlUGF0aCkpIHtcbiAgICAgIGVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtmaWxlUGF0aH1gKTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSBmaWxlIGV4dGVuc2lvblxuICAgIGlmICghZmlsZVBhdGguZW5kc1dpdGgoXCIuY3N2XCIpKSB7XG4gICAgICBlcnJvcihcIk9ubHkgQ1NWIGZpbGVzIGFyZSBzdXBwb3J0ZWRcIiwge1xuICAgICAgICBoaW50OiBcIkNvbnZlcnQgeW91ciBmaWxlIHRvIENTViBmb3JtYXQgd2l0aCBjb2x1bW5zOiBwaG9uZSxtZXNzYWdlXCIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICAvLyBSZWFkIGZpbGVcbiAgICBjb25zdCBidWZmZXIgPSByZWFkRmlsZVN5bmMoZmlsZVBhdGgpO1xuICAgIGNvbnN0IGZpbGVuYW1lID0gYmFzZW5hbWUoZmlsZVBhdGgpO1xuXG4gICAgLy8gQ2hlY2sgZmlsZSBzaXplICg1TUIgbGltaXQpXG4gICAgaWYgKGJ1ZmZlci5sZW5ndGggPiA1ICogMTAyNCAqIDEwMjQpIHtcbiAgICAgIGVycm9yKFwiRmlsZSB0b28gbGFyZ2UgKG1heCA1TUIpXCIsIHtcbiAgICAgICAgaGludDogXCJTcGxpdCB5b3VyIENTViBpbnRvIHNtYWxsZXIgZmlsZXNcIixcbiAgICAgIH0pO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGNvbnN0IHNwaW4gPSBzcGlubmVyKGBVcGxvYWRpbmcgJHtmaWxlbmFtZX0uLi5gKS5zdGFydCgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFVwbG9hZCB0byBSMiB2aWEgQ0xJIGVuZHBvaW50XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC51cGxvYWRGaWxlPEJhdGNoVXBsb2FkUmVzcG9uc2U+KFxuICAgICAgICBcIi9hcGkvY2xpL2JhdGNoL3VwbG9hZFwiLFxuICAgICAgICB7IGJ1ZmZlciwgZmlsZW5hbWUsIG1pbWV0eXBlOiBcInRleHQvY3N2XCIgfSxcbiAgICAgICk7XG5cbiAgICAgIHNwaW4uc3RvcCgpO1xuXG4gICAgICAvLyBTaG93IHVwbG9hZCBzdW1tYXJ5XG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuc3VjY2VzcyhgXFxu4pyTIFVwbG9hZGVkOiAke3Jlc3BvbnNlLnVwbG9hZC5maWxlbmFtZX1gKSk7XG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKGAgIFVwbG9hZCBJRDogJHtyZXNwb25zZS51cGxvYWQuaWR9YCkpO1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGNvbG9ycy5kaW0oXG4gICAgICAgICAgYCAgJHtyZXNwb25zZS52YWxpZGF0aW9uLnZhbGlkQ291bnR9IHZhbGlkIC8gJHtyZXNwb25zZS52YWxpZGF0aW9uLmludmFsaWRDb3VudH0gaW52YWxpZCAvICR7cmVzcG9uc2UudmFsaWRhdGlvbi5kdXBsaWNhdGVzUmVtb3ZlZH0gZHVwbGljYXRlcyByZW1vdmVkYCxcbiAgICAgICAgKSxcbiAgICAgICk7XG5cbiAgICAgIC8vIFNob3cgdmFsaWRhdGlvbiBlcnJvcnMgaWYgYW55XG4gICAgICBpZiAocmVzcG9uc2UuZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc29sZS5sb2coY29sb3JzLndhcm5pbmcoYFxcbuKaoO+4jyAgVmFsaWRhdGlvbiBlcnJvcnM6YCkpO1xuICAgICAgICBmb3IgKGNvbnN0IGVyciBvZiByZXNwb25zZS5lcnJvcnMuc2xpY2UoMCwgNSkpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGNvbG9ycy5kaW0oYCAgIFJvdyAke2Vyci5yb3d9OiAke2Vyci5waG9uZX0gLSAke2Vyci5lcnJvcn1gKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNwb25zZS5oYXNNb3JlRXJyb3JzKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBjb2xvcnMuZGltKFxuICAgICAgICAgICAgICBgICAgLi4uIGFuZCAke3Jlc3BvbnNlLnZhbGlkYXRpb24uaW52YWxpZENvdW50IC0gNX0gbW9yZSBlcnJvcnNgLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXNwb25zZS5yZWNpcGllbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBlcnJvcihcIk5vIHZhbGlkIHJlY2lwaWVudHMgZm91bmQgaW4gQ1NWXCIpO1xuICAgICAgICB0aGlzLmV4aXQoMSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFwcGx5IHNoYXJlZCB0ZXh0IGlmIHByb3ZpZGVkXG4gICAgICBsZXQgbWVzc2FnZXMgPSByZXNwb25zZS5yZWNpcGllbnRzO1xuICAgICAgaWYgKGZsYWdzLnRleHQpIHtcbiAgICAgICAgbWVzc2FnZXMgPSBtZXNzYWdlcy5tYXAoKHIpID0+ICh7XG4gICAgICAgICAgdG86IHIudG8sXG4gICAgICAgICAgdGV4dDogci50ZXh0IHx8IGZsYWdzLnRleHQsXG4gICAgICAgIH0pKTtcbiAgICAgIH1cblxuICAgICAgLy8gVmFsaWRhdGUgYWxsIG1lc3NhZ2VzIGhhdmUgdGV4dFxuICAgICAgY29uc3QgbWlzc2luZ1RleHQgPSBtZXNzYWdlcy5maWx0ZXIoKG0pID0+ICFtLnRleHQ/LnRyaW0oKSk7XG4gICAgICBpZiAobWlzc2luZ1RleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBlcnJvcihcbiAgICAgICAgICBgJHttaXNzaW5nVGV4dC5sZW5ndGh9IHJlY2lwaWVudHMgbWlzc2luZyBtZXNzYWdlIHRleHQuIFVzZSAtLXRleHQgdG8gcHJvdmlkZSBhIGRlZmF1bHQuYCxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICAgIFwiXFxuQ1NWIHNob3VsZCBoYXZlIGNvbHVtbnM6IHBob25lLG1lc3NhZ2UgT1IgdXNlIC0tdGV4dCBmbGFnXCIsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuXG4gICAgICAvLyBQcm9jZWVkIHdpdGggcHJldmlldyBvciBzZW5kXG4gICAgICBhd2FpdCB0aGlzLnByZXZpZXdPclNlbmQoXG4gICAgICAgIG1lc3NhZ2VzIGFzIEFycmF5PHsgdG86IHN0cmluZzsgdGV4dDogc3RyaW5nIH0+LFxuICAgICAgICBmbGFncyxcbiAgICAgICAgcmVzcG9uc2UudXBsb2FkLmlkLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNwaW4uc3RvcCgpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQcmV2aWV3IG9yIHNlbmQgdGhlIGJhdGNoXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHByZXZpZXdPclNlbmQoXG4gICAgbWVzc2FnZXM6IEFycmF5PHsgdG86IHN0cmluZzsgdGV4dDogc3RyaW5nIH0+LFxuICAgIGZsYWdzOiB7XG4gICAgICBmcm9tPzogc3RyaW5nO1xuICAgICAgdHlwZT86IHN0cmluZztcbiAgICAgIFwiZHJ5LXJ1blwiPzogYm9vbGVhbjtcbiAgICAgIFwiaWRlbXBvdGVuY3kta2V5XCI/OiBzdHJpbmc7XG4gICAgfSxcbiAgICB1cGxvYWRJZD86IHN0cmluZyxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gQ2hlY2sgYmF0Y2ggc2l6ZVxuICAgIGlmIChtZXNzYWdlcy5sZW5ndGggPiAxMDAwKSB7XG4gICAgICBlcnJvcihcIkJhdGNoIHNpemUgY2Fubm90IGV4Y2VlZCAxMDAwIG1lc3NhZ2VzXCIsIHtcbiAgICAgICAgaGludDogXCJTcGxpdCB5b3VyIG1lc3NhZ2VzIGludG8gc21hbGxlciBiYXRjaGVzXCIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgZHJ5LXJ1biBtb2RlXG4gICAgaWYgKGZsYWdzW1wiZHJ5LXJ1blwiXSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2hvd1ByZXZpZXcobWVzc2FnZXMsIGZsYWdzKTtcbiAgICB9XG5cbiAgICAvLyBTZW5kIHRoZSBiYXRjaFxuICAgIGNvbnN0IHNwaW4gPSBzcGlubmVyKGBTZW5kaW5nICR7bWVzc2FnZXMubGVuZ3RofSBtZXNzYWdlcy4uLmApO1xuICAgIHNwaW4uc3RhcnQoKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBUaGUgYmF0Y2ggZW5kcG9pbnQgZGVkdXBlcyBoZWFkZXItbGVzcyByZXRyaWVzIHNlcnZlci1zaWRlIGJ5IGhhc2hpbmdcbiAgICAgIC8vIHRoZSByZXF1ZXN0IGNvbnRlbnQ7IGFuIGF1dG8tZ2VuZXJhdGVkIGtleSB3b3VsZCBieXBhc3MgdGhhdCBuZXQgZm9yXG4gICAgICAvLyBpZGVudGljYWwgY3Jvc3MtcHJvY2VzcyByZS1ydW5zLCBzbyBvbmx5IGNhbGxlci1zdXBwbGllZCBrZXlzIGFyZSBzZW50LlxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQucG9zdDxCYXRjaFJlc3BvbnNlPihcbiAgICAgICAgXCIvYXBpL3YxL21lc3NhZ2VzL2JhdGNoXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBtZXNzYWdlcyxcbiAgICAgICAgICBtZXNzYWdlVHlwZTogZmxhZ3MudHlwZSxcbiAgICAgICAgICAuLi4oZmxhZ3MuZnJvbSAmJiB7IGZyb206IGZsYWdzLmZyb20gfSksXG4gICAgICAgICAgLi4uKHVwbG9hZElkICYmIHsgdXBsb2FkSWQgfSksIC8vIExpbmsgdG8gZmlsZSB1cGxvYWQgZm9yIGF1ZGl0IHRyYWlsXG4gICAgICAgIH0sXG4gICAgICAgIHRydWUsXG4gICAgICAgIHtcbiAgICAgICAgICBpZGVtcG90ZW5jeUtleTogZmxhZ3NbXCJpZGVtcG90ZW5jeS1rZXlcIl0sXG4gICAgICAgICAgYXV0b0lkZW1wb3RlbmN5S2V5OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIHNwaW4uc3RvcCgpO1xuXG4gICAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICAgIGpzb24ocmVzcG9uc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIERldGVybWluZSBzdWNjZXNzIGxldmVsXG4gICAgICBjb25zdCBhbGxTdWNjZWVkZWQgPSByZXNwb25zZS5mYWlsZWQgPT09IDA7XG4gICAgICBjb25zdCBhbGxGYWlsZWQgPSByZXNwb25zZS5zZW50ID09PSAwICYmIHJlc3BvbnNlLmZhaWxlZCA+IDA7XG4gICAgICBjb25zdCBwYXJ0aWFsU3VjY2VzcyA9IHJlc3BvbnNlLnNlbnQgPiAwICYmIHJlc3BvbnNlLmZhaWxlZCA+IDA7XG5cbiAgICAgIGlmIChhbGxTdWNjZWVkZWQpIHtcbiAgICAgICAgc3VjY2VzcyhcIkJhdGNoIHNlbnQgc3VjY2Vzc2Z1bGx5XCIsIHtcbiAgICAgICAgICBcIkJhdGNoIElEXCI6IHJlc3BvbnNlLmJhdGNoSWQsXG4gICAgICAgICAgVG90YWw6IHJlc3BvbnNlLnRvdGFsLFxuICAgICAgICAgIFNlbnQ6IGNvbG9ycy5zdWNjZXNzKFN0cmluZyhyZXNwb25zZS5zZW50KSksXG4gICAgICAgICAgXCJDcmVkaXRzIFVzZWRcIjogcmVzcG9uc2UuY3JlZGl0c1VzZWQsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChhbGxGYWlsZWQpIHtcbiAgICAgICAgZXJyb3IoXCJCYXRjaCBmYWlsZWRcIiwge1xuICAgICAgICAgIGhpbnQ6IGBBbGwgJHtyZXNwb25zZS5mYWlsZWR9IG1lc3NhZ2VzIGZhaWxlZCB0byBzZW5kYCxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oYCAgQmF0Y2ggSUQ6ICR7cmVzcG9uc2UuYmF0Y2hJZH1gKSk7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGNvbG9ycy5kaW0oYCAgQ3JlZGl0cyBSZWZ1bmRlZDogJHtyZXNwb25zZS5jcmVkaXRzUmVmdW5kZWR9YCksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHBhcnRpYWxTdWNjZXNzKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy53YXJuaW5nKFwiXFxu4pqg77iPICBCYXRjaCBjb21wbGV0ZWQgd2l0aCBlcnJvcnNcXG5cIikpO1xuICAgICAgICBjb25zb2xlLmxvZyhgICBCYXRjaCBJRDogICAgICAgICAke3Jlc3BvbnNlLmJhdGNoSWR9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKGAgIFRvdGFsOiAgICAgICAgICAgICR7cmVzcG9uc2UudG90YWx9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGAgIFNlbnQ6ICAgICAgICAgICAgICR7Y29sb3JzLnN1Y2Nlc3MoU3RyaW5nKHJlc3BvbnNlLnNlbnQpKX1gLFxuICAgICAgICApO1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBgICBGYWlsZWQ6ICAgICAgICAgICAke2NvbG9ycy5lcnJvcihTdHJpbmcocmVzcG9uc2UuZmFpbGVkKSl9YCxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc29sZS5sb2coYCAgQ3JlZGl0cyBVc2VkOiAgICAgJHtyZXNwb25zZS5jcmVkaXRzVXNlZH1gKTtcbiAgICAgICAgY29uc29sZS5sb2coYCAgQ3JlZGl0cyBSZWZ1bmRlZDogJHtyZXNwb25zZS5jcmVkaXRzUmVmdW5kZWR9YCk7XG5cbiAgICAgICAgLy8gU2hvdyBmYWlsZWQgbWVzc2FnZXMgaWYgYXZhaWxhYmxlXG4gICAgICAgIGlmIChyZXNwb25zZS5tZXNzYWdlcykge1xuICAgICAgICAgIGNvbnN0IGZhaWxlZE1zZ3MgPSByZXNwb25zZS5tZXNzYWdlcy5maWx0ZXIoXG4gICAgICAgICAgICAobSkgPT4gbS5zdGF0dXMgPT09IFwiZmFpbGVkXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoZmFpbGVkTXNncy5sZW5ndGggPiAwICYmIGZhaWxlZE1zZ3MubGVuZ3RoIDw9IDUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCJcXG4gIEZhaWxlZCBtZXNzYWdlczpcIikpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBtc2cgb2YgZmFpbGVkTXNncykge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICBjb2xvcnMuZGltKGAgICAgJHttc2cudG99OiAke21zZy5lcnJvciB8fCBcIlVua25vd24gZXJyb3JcIn1gKSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGZhaWxlZE1zZ3MubGVuZ3RoID4gNSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgIGNvbG9ycy5kaW0oXG4gICAgICAgICAgICAgICAgYFxcbiAgJHtmYWlsZWRNc2dzLmxlbmd0aH0gbWVzc2FnZXMgZmFpbGVkLiBVc2UgLS1qc29uIGZvciBkZXRhaWxzLmAsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc3Bpbi5zdG9wKCk7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgYmF0Y2ggcHJldmlldyAoZHJ5LXJ1biBtb2RlKVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBzaG93UHJldmlldyhcbiAgICBtZXNzYWdlczogQXJyYXk8eyB0bzogc3RyaW5nOyB0ZXh0OiBzdHJpbmcgfT4sXG4gICAgZmxhZ3M6IHsgdHlwZT86IHN0cmluZyB9LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzcGluID0gc3Bpbm5lcihcIkFuYWx5emluZyBiYXRjaC4uLlwiKS5zdGFydCgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByZXZpZXcgPSBhd2FpdCBhcGlDbGllbnQucG9zdDxCYXRjaFByZXZpZXdSZXNwb25zZT4oXG4gICAgICAgIFwiL2FwaS92MS9tZXNzYWdlcy9iYXRjaC9wcmV2aWV3XCIsXG4gICAgICAgIHsgbWVzc2FnZXMsIG1lc3NhZ2VUeXBlOiBmbGFncy50eXBlIH0sXG4gICAgICApO1xuXG4gICAgICBzcGluLnN0b3AoKTtcblxuICAgICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAgICBqc29uKHByZXZpZXcpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFNob3cgY29tcHJlaGVuc2l2ZSBwcmV2aWV3XG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuYm9sZChcIlxcbvCfk4ogQmF0Y2ggUHJldmlldyAoRHJ5IFJ1bilcXG5cIikpO1xuXG4gICAgICAvLyBTdW1tYXJ5IHRhYmxlXG4gICAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwi4pSAXCIucmVwZWF0KDUwKSkpO1xuICAgICAgY29uc29sZS5sb2coYFRvdGFsIG1lc3NhZ2VzOiAgICAgJHtwcmV2aWV3LnRvdGFsfWApO1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBTZW5kYWJsZTogICAgICAgICAgICR7Y29sb3JzLnN1Y2Nlc3MoU3RyaW5nKHByZXZpZXcuc2VuZGFibGUpKX1gLFxuICAgICAgKTtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgQmxvY2tlZDogICAgICAgICAgICAke3ByZXZpZXcuYmxvY2tlZCA+IDAgPyBjb2xvcnMuZXJyb3IoU3RyaW5nKHByZXZpZXcuYmxvY2tlZCkpIDogXCIwXCJ9YCxcbiAgICAgICk7XG4gICAgICBjb25zb2xlLmxvZyhgRHVwbGljYXRlcyByZW1vdmVkOiAke3ByZXZpZXcuZHVwbGljYXRlc31gKTtcbiAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCLilIBcIi5yZXBlYXQoNTApKSk7XG5cbiAgICAgIC8vIENyZWRpdHNcbiAgICAgIGNvbnNvbGUubG9nKGBcXG5DcmVkaXRzIG5lZWRlZDogICAgICR7cHJldmlldy5jcmVkaXRzTmVlZGVkfWApO1xuICAgICAgY29uc29sZS5sb2coYFlvdXIgYmFsYW5jZTogICAgICAgJHtwcmV2aWV3LmNyZWRpdEJhbGFuY2V9YCk7XG4gICAgICBpZiAoIXByZXZpZXcuaGFzU3VmZmljaWVudENyZWRpdHMpIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgY29sb3JzLmVycm9yKFxuICAgICAgICAgICAgYOKaoO+4jyAgSW5zdWZmaWNpZW50IGNyZWRpdHMhIE5lZWQgJHtwcmV2aWV3LmNyZWRpdHNOZWVkZWQgLSBwcmV2aWV3LmNyZWRpdEJhbGFuY2V9IG1vcmUuYCxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBBY2Nlc3MgaW5mb1xuICAgICAgY29uc29sZS5sb2coYFxcbkFQSSBLZXkgdHlwZTogICAgICAgJHtwcmV2aWV3LmtleVR5cGUudG9VcHBlckNhc2UoKX1gKTtcbiAgICAgIGNvbnNvbGUubG9nKGBXcml0ZSBhY2Nlc3M6ICAgICAgICR7cHJldmlldy5oYXNXcml0ZVNjb3BlID8gXCLinJNcIiA6IFwi4pyXXCJ9YCk7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYERvbWVzdGljIChVUy9DQSk6ICAgJHtwcmV2aWV3Lm1lc3NhZ2luZ1Byb2ZpbGUuY2FuU2VuZERvbWVzdGljID8gXCLinJNcIiA6IFwi4pyXXCJ9YCxcbiAgICAgICk7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYEludGVybmF0aW9uYWw6ICAgICAgJHtwcmV2aWV3Lm1lc3NhZ2luZ1Byb2ZpbGUuY2FuU2VuZEludGVybmF0aW9uYWwgPyBcIuKck1wiIDogXCLinJdcIn1gLFxuICAgICAgKTtcblxuICAgICAgLy8gQ291bnRyeSBicmVha2Rvd25cbiAgICAgIGNvbnN0IGNvdW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHByZXZpZXcuYnlDb3VudHJ5KTtcbiAgICAgIGlmIChjb3VudHJpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhjb2xvcnMuYm9sZChcIlxcbvCfk40gQnkgQ291bnRyeTpcXG5cIikpO1xuICAgICAgICBmb3IgKGNvbnN0IFtjb3VudHJ5LCBkYXRhXSBvZiBjb3VudHJpZXMpIHtcbiAgICAgICAgICBjb25zdCBzdGF0dXMgPSBkYXRhLmFsbG93ZWQgPyBjb2xvcnMuc3VjY2VzcyhcIuKck1wiKSA6IGNvbG9ycy5lcnJvcihcIuKcl1wiKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGAgICR7c3RhdHVzfSAke2NvdW50cnl9OiAke2RhdGEuY291bnR9IG1zZ3MsICR7ZGF0YS5jcmVkaXRzfSBjcmVkaXRzICgke2RhdGEudGllcn0pYCxcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICghZGF0YS5hbGxvd2VkICYmIGRhdGEuYmxvY2tlZFJlYXNvbikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coY29sb3JzLmRpbShgICAgICDilJTilIAgJHtkYXRhLmJsb2NrZWRSZWFzb259YCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBDb21wbGlhbmNlIGNoZWNrIHJlc3VsdHNcbiAgICAgIGlmIChwcmV2aWV3LmNvbXBsaWFuY2UpIHtcbiAgICAgICAgY29uc29sZS5sb2coY29sb3JzLmJvbGQoXCJcXG7wn5uh77iPICBDb21wbGlhbmNlIENoZWNrOlxcblwiKSk7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGAgIE1lc3NhZ2UgVHlwZTogICAgICAke3ByZXZpZXcuY29tcGxpYW5jZS5tZXNzYWdlVHlwZS50b1VwcGVyQ2FzZSgpfWAsXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHByZXZpZXcuY29tcGxpYW5jZS5zaGFmdEJsb2NrZWQgPiAwKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBjb2xvcnMuZXJyb3IoXG4gICAgICAgICAgICAgIGAgIFNIQUZUIEJsb2NrZWQ6ICAgICAke3ByZXZpZXcuY29tcGxpYW5jZS5zaGFmdEJsb2NrZWR9IG1lc3NhZ2VzYCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IG1zZyBvZiBwcmV2aWV3LmNvbXBsaWFuY2Uuc2hhZnRCbG9ja2VkTWVzc2FnZXMuc2xpY2UoXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgMyxcbiAgICAgICAgICApKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICAgICAgICBgICAgICDilJTilIAgJHttc2cudG99OiAke21zZy5jYXRlZ29yeX0gKCR7bXNnLm1hdGNoZWRUZXJtcy5qb2luKFwiLCBcIil9KWAsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocHJldmlldy5jb21wbGlhbmNlLnNoYWZ0QmxvY2tlZE1lc3NhZ2VzLmxlbmd0aCA+IDMpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICBjb2xvcnMuZGltKFxuICAgICAgICAgICAgICAgIGAgICAgIC4uLiBhbmQgJHtwcmV2aWV3LmNvbXBsaWFuY2Uuc2hhZnRCbG9ja2VkTWVzc2FnZXMubGVuZ3RoIC0gM30gbW9yZWAsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGNvbG9ycy5zdWNjZXNzKFxuICAgICAgICAgICAgICBcIiAgU0hBRlQgQ2hlY2s6ICAgICAgIOKckyBBbGwgbWVzc2FnZXMgcGFzcyBjb250ZW50IGZpbHRlclwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByZXZpZXcuY29tcGxpYW5jZS5tZXNzYWdlVHlwZSA9PT0gXCJtYXJrZXRpbmdcIikge1xuICAgICAgICAgIGlmIChwcmV2aWV3LmNvbXBsaWFuY2UucXVpZXRIb3Vyc1Jlc2NoZWR1bGVkID4gMCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgIGNvbG9ycy53YXJuaW5nKFxuICAgICAgICAgICAgICAgIGAgIFF1aWV0IEhvdXJzOiAgICAgICAke3ByZXZpZXcuY29tcGxpYW5jZS5xdWlldEhvdXJzUmVzY2hlZHVsZWR9IG1lc3NhZ2VzIHdpbGwgYmUgcmVzY2hlZHVsZWRgLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbXNnIG9mIHByZXZpZXcuY29tcGxpYW5jZS5xdWlldEhvdXJzQmxvY2tlZE1lc3NhZ2VzLnNsaWNlKFxuICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAzLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBuZXh0VGltZSA9IG1zZy5uZXh0QWxsb3dlZFRpbWVcbiAgICAgICAgICAgICAgICA/IG5ldyBEYXRlKG1zZy5uZXh0QWxsb3dlZFRpbWUpLnRvTG9jYWxlU3RyaW5nKClcbiAgICAgICAgICAgICAgICA6IFwibmV4dCBhdmFpbGFibGUgd2luZG93XCI7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIGNvbG9ycy5kaW0oXG4gICAgICAgICAgICAgICAgICBgICAgICDilJTilIAgJHttc2cudG99OiAke21zZy5yZWNpcGllbnRUaW1lem9uZX0g4oaSICR7bmV4dFRpbWV9YCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByZXZpZXcuY29tcGxpYW5jZS5xdWlldEhvdXJzQmxvY2tlZE1lc3NhZ2VzLmxlbmd0aCA+IDMpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICAgICAgICAgIGAgICAgIC4uLiBhbmQgJHtwcmV2aWV3LmNvbXBsaWFuY2UucXVpZXRIb3Vyc0Jsb2NrZWRNZXNzYWdlcy5sZW5ndGggLSAzfSBtb3JlYCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgY29sb3JzLnN1Y2Nlc3MoXG4gICAgICAgICAgICAgICAgXCIgIFF1aWV0IEhvdXJzOiAgICAgICDinJMgQWxsIHJlY2lwaWVudHMgd2l0aGluIGFsbG93ZWQgaG91cnNcIixcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgY29sb3JzLmRpbShcIiAgUXVpZXQgSG91cnM6ICAgICAgIEJ5cGFzc2VkICh0cmFuc2FjdGlvbmFsIG1lc3NhZ2UpXCIpLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gV2FybmluZ3NcbiAgICAgIGlmIChwcmV2aWV3Lndhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc29sZS5sb2coY29sb3JzLndhcm5pbmcoXCJcXG7imqDvuI8gIFdhcm5pbmdzOlwiKSk7XG4gICAgICAgIGZvciAoY29uc3QgdyBvZiBwcmV2aWV3Lndhcm5pbmdzKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgIOKAoiAke3d9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQmxvY2tlZCBtZXNzYWdlcyAoZmlyc3QgNSlcbiAgICAgIGlmIChwcmV2aWV3LmJsb2NrZWRNZXNzYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGNvbG9ycy5lcnJvcihcbiAgICAgICAgICAgIGBcXG7inYwgQmxvY2tlZCBNZXNzYWdlcyAoJHtwcmV2aWV3LmJsb2NrZWRNZXNzYWdlcy5sZW5ndGh9IHRvdGFsKTpgLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgYiBvZiBwcmV2aWV3LmJsb2NrZWRNZXNzYWdlcy5zbGljZSgwLCA1KSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgICAke2IudG99OiAke2IucmVhc29ufWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcmV2aWV3LmJsb2NrZWRNZXNzYWdlcy5sZW5ndGggPiA1KSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBjb2xvcnMuZGltKGAgICAuLi4gYW5kICR7cHJldmlldy5ibG9ja2VkTWVzc2FnZXMubGVuZ3RoIC0gNX0gbW9yZWApLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIFwiXFxuXCIgKyBjb2xvcnMuZGltKFwiTm8gbWVzc2FnZXMgd2VyZSBzZW50LiBSZW1vdmUgLS1kcnktcnVuIHRvIHNlbmQuXCIpLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNwaW4uc3RvcCgpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXQgYnl0ZXMgdG8gaHVtYW4gcmVhZGFibGUgc3RyaW5nXG4gICAqL1xuICBwcml2YXRlIGZvcm1hdEJ5dGVzKGJ5dGVzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChieXRlcyA8IDEwMjQpIHJldHVybiBgJHtieXRlc30gQmA7XG4gICAgaWYgKGJ5dGVzIDwgMTAyNCAqIDEwMjQpIHJldHVybiBgJHsoYnl0ZXMgLyAxMDI0KS50b0ZpeGVkKDEpfSBLQmA7XG4gICAgcmV0dXJuIGAkeyhieXRlcyAvICgxMDI0ICogMTAyNCkpLnRvRml4ZWQoMSl9IE1CYDtcbiAgfVxufVxuIl19
@@ -18,6 +18,7 @@ export default class SmsGroup extends AuthenticatedCommand {
18
18
  from: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
19
19
  type: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
20
20
  "media-url": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
21
+ "idempotency-key": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
21
22
  json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
22
23
  quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
23
24
  };
@@ -44,6 +44,9 @@ export default class SmsGroup extends AuthenticatedCommand {
44
44
  description: "Media URL to attach (MMS). Can be specified multiple times.",
45
45
  multiple: true,
46
46
  }),
47
+ "idempotency-key": Flags.string({
48
+ description: "Idempotency key (1-255 printable ASCII characters). Re-running with the same key within 24 hours returns the original result instead of sending again.",
49
+ }),
47
50
  };
48
51
  async run() {
49
52
  const { flags } = await this.parse(SmsGroup);
@@ -131,7 +134,7 @@ export default class SmsGroup extends AuthenticatedCommand {
131
134
  ...(flags.from && { from: flags.from }),
132
135
  ...(hasMedia && { mediaUrls }),
133
136
  ...(flags.type && { messageType: flags.type }),
134
- });
137
+ }, true, { idempotencyKey: flags["idempotency-key"] });
135
138
  spin.stop();
136
139
  if (isJsonMode()) {
137
140
  json(response);
@@ -161,4 +164,4 @@ export default class SmsGroup extends AuthenticatedCommand {
161
164
  }
162
165
  }
163
166
  }
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvc21zL2dyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUNMLE9BQU8sRUFDUCxNQUFNLEVBQ04sWUFBWSxFQUNaLElBQUksRUFDSixVQUFVLEdBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLFFBQVEsTUFBTSxVQUFVLENBQUM7QUFVaEM7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sT0FBTyxRQUFTLFNBQVEsb0JBQW9CO0lBQ3hELE1BQU0sQ0FBQyxXQUFXLEdBQ2hCLHVIQUF1SCxDQUFDO0lBRTFILE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsd0ZBQXdGO1FBQ3hGLHNHQUFzRztRQUN0RyxrR0FBa0c7UUFDbEcsNEZBQTRGO1FBQzVGLG1GQUFtRjtLQUNwRixDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNmLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUNULHlFQUF5RTtTQUM1RSxDQUFDO1FBQ0YsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsc0RBQXNEO1NBQ3BFLENBQUM7UUFDRixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSw4REFBOEQ7U0FDNUUsQ0FB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QixLQUFLLE1BQU0sU0FBUyxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2xFLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgc3VjY2VzcyxcbiAgZXJyb3IsXG4gIHNwaW5uZXIsXG4gIGNvbG9ycyxcbiAgZm9ybWF0U3RhdHVzLFxuICBqc29uLFxuICBpc0pzb25Nb2RlLFxufSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuaW1wb3J0IGlucXVpcmVyIGZyb20gXCJpbnF1aXJlclwiO1xuXG5pbnRlcmZhY2UgR3JvdXBNZXNzYWdlUmVzcG9uc2Uge1xuICBpZDogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbiAgdG86IHN0cmluZ1tdO1xuICBncm91cF9tZXNzYWdlX2lkPzogc3RyaW5nO1xuICBzaW11bGF0ZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIGBzZW5kbHkgc21zIGdyb3VwYCDigJQgc2VuZCBhIGdyb3VwIE1NUyB0byAyLTggcmVjaXBpZW50cyAoVVMvQ2FuYWRhIG9ubHkpLlxuICpcbiAqIFdyYXBzIGBQT1NUIC9hcGkvdjEvbWVzc2FnZXMvZ3JvdXBgLiBFdmVyeSByZWNpcGllbnQgc2VlcyB0aGUgb3RoZXJzIGFuZFxuICogcmVwbGllcyBmYW4gb3V0IHRvIHRoZSB3aG9sZSBncm91cC4gR3JvdXAgbWVzc2FnaW5nIGlzIGFuIEEyUCAxMERMQ1xuICogY2FwYWJpbGl0eSwgc28gdGhlIHNlbmRpbmcgbnVtYmVyIG11c3QgYmUgYW4gTU1TLWVuYWJsZWQsIDEwRExDLXJlZ2lzdGVyZWRcbiAqIG51bWJlciB5b3Ugb3duIOKAlCBvbWl0IGAtLWZyb21gIHRvIHVzZSB5b3VyIHdvcmtzcGFjZSdzIGRlZmF1bHQgc2VuZGVyLlxuICogR2F0ZWQgYmVoaW5kIGBncm91cF9tbXNgIC8gYGVuYWJsZV9tbXNgIG9uIHRoZSBzZXJ2ZXI7IHdpdGhvdXQgdGhlIGZsYWcgdGhlXG4gKiBzZXJ2ZXIgcmV0dXJucyA0MDMgYW5kIHRoaXMgY29tbWFuZCBzdXJmYWNlcyBpdC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU21zR3JvdXAgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9XG4gICAgXCJTZW5kIGEgZ3JvdXAgTU1TIHRvIDItOCByZWNpcGllbnRzIChVUy9DYW5hZGEgb25seSkuIEV2ZXJ5b25lIHNlZXMgdGhlIGdyb3VwIGFuZCByZXBsaWVzIGZhbiBvdXQgdG8gYWxsIHBhcnRpY2lwYW50cy5cIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNtcyBncm91cCAtLXRvICsxNDE1NTU1MTIzNCwrMTQxNTU1NTU2NzggLS10ZXh0IFwiVGVhbSBzeW5jIGF0IG5vb24/XCInLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgZ3JvdXAgLS10byArMTQxNTU1NTEyMzQsKzE0MTU1NTU1Njc4IC0tbWVkaWEtdXJsIGh0dHBzOi8vZXhhbXBsZS5jb20vZmx5ZXIuanBnJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIGdyb3VwIC0tdG8gKzE0MTU1NTUxMjM0LCsxNDE1NTU1NTY3OCAtLXRleHQgXCJIaSBhbGxcIiAtLWZyb20gXCIrMTU1NTEyMzQ1NjdcIicsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNtcyBncm91cCAtLXRvICsxNDE1NTU1MTIzNCwrMTQxNTU1NTU2NzggLS10ZXh0IFwiU2FsZSFcIiAtLXR5cGUgbWFya2V0aW5nJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIGdyb3VwIC0tdG8gKzE0MTU1NTUxMjM0LCsxNDE1NTU1NTY3OCAtLXRleHQgXCJIaSBhbGxcIiAtLWpzb24nLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgdG86IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcInRcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkNvbW1hLXNlcGFyYXRlZCByZWNpcGllbnQgcGhvbmUgbnVtYmVycyAoMi04LCBFLjE2NCBmb3JtYXQsIFVTL0NBIG9ubHkpXCIsXG4gICAgfSksXG4gICAgdGV4dDogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwibVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiTWVzc2FnZSB0ZXh0IChvcHRpb25hbCB3aGVuIC0tbWVkaWEtdXJsIGlzIHByb3ZpZGVkKVwiLFxuICAgIH0pLFxuICAgIGZyb206IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcImZcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNlbmRlciBJRCBvciBwaG9uZSBudW1iZXIgKE1NUy1lbmFibGVkIDEwRExDIG51bWJlciB5b3Ugb3duKVwiLFxuICAgIH0pLFxuICAgIHR5cGU6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJNZXNzYWdlIHR5cGU6IHRyYW5zYWN0aW9uYWwgKGRlZmF1bHQpIG9yIG1hcmtldGluZy4gTWFya2V0aW5nIGFwcGxpZXMgcXVpZXQtaG91cnMgcnVsZXMuXCIsXG4gICAgICBvcHRpb25zOiBbXCJtYXJrZXRpbmdcIiwgXCJ0cmFuc2FjdGlvbmFsXCJdLFxuICAgIH0pLFxuICAgIFwibWVkaWEtdXJsXCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJNZWRpYSBVUkwgdG8gYXR0YWNoIChNTVMpLiBDYW4gYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzLlwiLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoU21zR3JvdXApO1xuICAgIGNvbnN0IG1lZGlhVXJscyA9IGZsYWdzW1wibWVkaWEtdXJsXCJdO1xuICAgIGNvbnN0IGhhc01lZGlhID0gbWVkaWFVcmxzICYmIG1lZGlhVXJscy5sZW5ndGggPiAwO1xuXG4gICAgbGV0IHJhd1RvID0gZmxhZ3MudG87XG4gICAgbGV0IHRleHQgPSBmbGFncy50ZXh0O1xuXG4gICAgaWYgKCFyYXdUbykge1xuICAgICAgaWYgKHByb2Nlc3Muc3RkaW4uaXNUVFkpIHtcbiAgICAgICAgY29uc3QgYW5zd2VycyA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogXCJpbnB1dFwiLFxuICAgICAgICAgICAgbmFtZTogXCJ0b1wiLFxuICAgICAgICAgICAgbWVzc2FnZTogXCJSZWNpcGllbnQgcGhvbmUgbnVtYmVycyAoY29tbWEtc2VwYXJhdGVkLCAyLTgpOlwiLFxuICAgICAgICAgICAgdmFsaWRhdGU6IChpbnB1dDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaW5wdXQudHJpbSgpKSByZXR1cm4gXCJBdCBsZWFzdCAyIHJlY2lwaWVudHMgYXJlIHJlcXVpcmVkXCI7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICAgICAgcmF3VG8gPSBhbnN3ZXJzLnRvO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXJyb3IoXCJNaXNzaW5nIHJlcXVpcmVkIGZsYWc6IC0tdG9cIiwge1xuICAgICAgICAgIGhpbnQ6IFwiVXNlIC0tdG8gKzE0MTU1NTUxMjM0LCsxNDE1NTU1NTY3OFwiLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHRvID0gcmF3VG8hXG4gICAgICAuc3BsaXQoXCIsXCIpXG4gICAgICAubWFwKChwKSA9PiBwLnRyaW0oKSlcbiAgICAgIC5maWx0ZXIoKHApID0+IHAubGVuZ3RoID4gMClcbiAgICAgIC5tYXAoKHApID0+IChwLnN0YXJ0c1dpdGgoXCIrXCIpID8gcCA6IGArJHtwfWApKTtcblxuICAgIGlmICh0by5sZW5ndGggPCAyKSB7XG4gICAgICBlcnJvcihcIkdyb3VwIG1lc3NhZ2luZyByZXF1aXJlcyBhdCBsZWFzdCAyIHJlY2lwaWVudHNcIiwge1xuICAgICAgICBoaW50OiBcIlBhc3MgMi04IG51bWJlcnM6IC0tdG8gKzE0MTU1NTUxMjM0LCsxNDE1NTU1NTY3OFwiLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgaWYgKHRvLmxlbmd0aCA+IDgpIHtcbiAgICAgIGVycm9yKFwiR3JvdXAgbWVzc2FnaW5nIHN1cHBvcnRzIGF0IG1vc3QgOCByZWNpcGllbnRzXCIpO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcmVjaXBpZW50IG9mIHRvKSB7XG4gICAgICBpZiAoIS9eXFwrWzEtOV1cXGR7MSwxNH0kLy50ZXN0KHJlY2lwaWVudCkpIHtcbiAgICAgICAgZXJyb3IoYEludmFsaWQgcGhvbmUgbnVtYmVyOiAke3JlY2lwaWVudH1gLCB7XG4gICAgICAgICAgaGludDogXCJVc2UgRS4xNjQgZm9ybWF0OiArMTQxNTU1NTEyMzRcIixcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRleHQgJiYgIWhhc01lZGlhKSB7XG4gICAgICBpZiAocHJvY2Vzcy5zdGRpbi5pc1RUWSkge1xuICAgICAgICBjb25zdCBhbnN3ZXJzID0gYXdhaXQgaW5xdWlyZXIucHJvbXB0KFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBcImlucHV0XCIsXG4gICAgICAgICAgICBuYW1lOiBcInRleHRcIixcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiTWVzc2FnZSB0ZXh0OlwiLFxuICAgICAgICAgICAgdmFsaWRhdGU6IChpbnB1dDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaW5wdXQudHJpbSgpKSByZXR1cm4gXCJNZXNzYWdlIHRleHQgY2Fubm90IGJlIGVtcHR5XCI7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICAgICAgdGV4dCA9IGFuc3dlcnMudGV4dDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9yKFwiRWl0aGVyIC0tdGV4dCBvciAtLW1lZGlhLXVybCBpcyByZXF1aXJlZFwiKTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0ZXh0ICYmICF0ZXh0LnRyaW0oKSkge1xuICAgICAgZXJyb3IoXCJNZXNzYWdlIHRleHQgY2Fubm90IGJlIGVtcHR5XCIpO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGNvbnN0IHNwaW4gPSBzcGlubmVyKGBTZW5kaW5nIGdyb3VwIE1NUyB0byAke3RvLmxlbmd0aH0gcmVjaXBpZW50cy4uLmApO1xuICAgIHNwaW4uc3RhcnQoKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PEdyb3VwTWVzc2FnZVJlc3BvbnNlPihcbiAgICAgICAgXCIvYXBpL3YxL21lc3NhZ2VzL2dyb3VwXCIsXG4gICAgICAgIHtcbiAgICAgICAgICB0byxcbiAgICAgICAgICAuLi4odGV4dCAmJiB7IHRleHQgfSksXG4gICAgICAgICAgLi4uKGZsYWdzLmZyb20gJiYgeyBmcm9tOiBmbGFncy5mcm9tIH0pLFxuICAgICAgICAgIC4uLihoYXNNZWRpYSAmJiB7IG1lZGlhVXJscyB9KSxcbiAgICAgICAgICAuLi4oZmxhZ3MudHlwZSAmJiB7IG1lc3NhZ2VUeXBlOiBmbGFncy50eXBlIH0pLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgc3Bpbi5zdG9wKCk7XG5cbiAgICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc3VjY2VzcyhcIkdyb3VwIE1NUyBzZW50XCIsIHtcbiAgICAgICAgSUQ6IHJlc3BvbnNlLmlkLFxuICAgICAgICBSZWNpcGllbnRzOiByZXNwb25zZS50by5sZW5ndGgsXG4gICAgICAgIFN0YXR1czogZm9ybWF0U3RhdHVzKHJlc3BvbnNlLnN0YXR1cyksXG4gICAgICAgIC4uLihyZXNwb25zZS5ncm91cF9tZXNzYWdlX2lkICYmIHtcbiAgICAgICAgICBcIkdyb3VwIElEXCI6IHJlc3BvbnNlLmdyb3VwX21lc3NhZ2VfaWQsXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4oaGFzTWVkaWEgJiYge1xuICAgICAgICAgIE1lZGlhOiBgJHttZWRpYVVybHMubGVuZ3RofSBhdHRhY2htZW50JHttZWRpYVVybHMubGVuZ3RoID4gMSA/IFwic1wiIDogXCJcIn1gLFxuICAgICAgICB9KSxcbiAgICAgICAgLi4uKHJlc3BvbnNlLnNpbXVsYXRlZCAmJiB7IFNpbXVsYXRlZDogXCJ5ZXNcIiB9KSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIWlzSnNvbk1vZGUoKSkge1xuICAgICAgICBmb3IgKGNvbnN0IHJlY2lwaWVudCBvZiByZXNwb25zZS50bykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgICR7Y29sb3JzLmRpbShcIlRvOlwiKX0gJHtjb2xvcnMuY29kZShyZWNpcGllbnQpfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzcGluLnN0b3AoKTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvc21zL2dyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUNMLE9BQU8sRUFDUCxNQUFNLEVBQ04sWUFBWSxFQUNaLElBQUksRUFDSixVQUFVLEdBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLFFBQVEsTUFBTSxVQUFVLENBQUM7QUFVaEM7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sT0FBTyxRQUFTLFNBQVEsb0JBQW9CO0lBQ3hELE1BQU0sQ0FBQyxXQUFXLEdBQ2hCLHVIQUF1SCxDQUFDO0lBRTFILE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsd0ZBQXdGO1FBQ3hGLHNHQUFzRztRQUN0RyxrR0FBa0c7UUFDbEcsNEZBQTRGO1FBQzVGLG1GQUFtRjtLQUNwRixDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNmLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUNULHlFQUF5RTtTQUM1RSxDQUFDO1FBQ0YsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsc0RBQXNEO1NBQ3BFLENBQUM7UUFDRixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSw4REFBOEQ7U0FDNUUsQ0FB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RSxDQUFDO2dCQUNGLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO2FBQ2hELENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUNsQixLQUFLLE1BQU0sU0FBUyxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2xFLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgc3VjY2VzcyxcbiAgZXJyb3IsXG4gIHNwaW5uZXIsXG4gIGNvbG9ycyxcbiAgZm9ybWF0U3RhdHVzLFxuICBqc29uLFxuICBpc0pzb25Nb2RlLFxufSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuaW1wb3J0IGlucXVpcmVyIGZyb20gXCJpbnF1aXJlclwiO1xuXG5pbnRlcmZhY2UgR3JvdXBNZXNzYWdlUmVzcG9uc2Uge1xuICBpZDogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbiAgdG86IHN0cmluZ1tdO1xuICBncm91cF9tZXNzYWdlX2lkPzogc3RyaW5nO1xuICBzaW11bGF0ZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIGBzZW5kbHkgc21zIGdyb3VwYCDigJQgc2VuZCBhIGdyb3VwIE1NUyB0byAyLTggcmVjaXBpZW50cyAoVVMvQ2FuYWRhIG9ubHkpLlxuICpcbiAqIFdyYXBzIGBQT1NUIC9hcGkvdjEvbWVzc2FnZXMvZ3JvdXBgLiBFdmVyeSByZWNpcGllbnQgc2VlcyB0aGUgb3RoZXJzIGFuZFxuICogcmVwbGllcyBmYW4gb3V0IHRvIHRoZSB3aG9sZSBncm91cC4gR3JvdXAgbWVzc2FnaW5nIGlzIGFuIEEyUCAxMERMQ1xuICogY2FwYWJpbGl0eSwgc28gdGhlIHNlbmRpbmcgbnVtYmVyIG11c3QgYmUgYW4gTU1TLWVuYWJsZWQsIDEwRExDLXJlZ2lzdGVyZWRcbiAqIG51bWJlciB5b3Ugb3duIOKAlCBvbWl0IGAtLWZyb21gIHRvIHVzZSB5b3VyIHdvcmtzcGFjZSdzIGRlZmF1bHQgc2VuZGVyLlxuICogR2F0ZWQgYmVoaW5kIGBncm91cF9tbXNgIC8gYGVuYWJsZV9tbXNgIG9uIHRoZSBzZXJ2ZXI7IHdpdGhvdXQgdGhlIGZsYWcgdGhlXG4gKiBzZXJ2ZXIgcmV0dXJucyA0MDMgYW5kIHRoaXMgY29tbWFuZCBzdXJmYWNlcyBpdC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU21zR3JvdXAgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9XG4gICAgXCJTZW5kIGEgZ3JvdXAgTU1TIHRvIDItOCByZWNpcGllbnRzIChVUy9DYW5hZGEgb25seSkuIEV2ZXJ5b25lIHNlZXMgdGhlIGdyb3VwIGFuZCByZXBsaWVzIGZhbiBvdXQgdG8gYWxsIHBhcnRpY2lwYW50cy5cIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNtcyBncm91cCAtLXRvICsxNDE1NTU1MTIzNCwrMTQxNTU1NTU2NzggLS10ZXh0IFwiVGVhbSBzeW5jIGF0IG5vb24/XCInLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgZ3JvdXAgLS10byArMTQxNTU1NTEyMzQsKzE0MTU1NTU1Njc4IC0tbWVkaWEtdXJsIGh0dHBzOi8vZXhhbXBsZS5jb20vZmx5ZXIuanBnJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIGdyb3VwIC0tdG8gKzE0MTU1NTUxMjM0LCsxNDE1NTU1NTY3OCAtLXRleHQgXCJIaSBhbGxcIiAtLWZyb20gXCIrMTU1NTEyMzQ1NjdcIicsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNtcyBncm91cCAtLXRvICsxNDE1NTU1MTIzNCwrMTQxNTU1NTU2NzggLS10ZXh0IFwiU2FsZSFcIiAtLXR5cGUgbWFya2V0aW5nJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIGdyb3VwIC0tdG8gKzE0MTU1NTUxMjM0LCsxNDE1NTU1NTY3OCAtLXRleHQgXCJIaSBhbGxcIiAtLWpzb24nLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgdG86IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcInRcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkNvbW1hLXNlcGFyYXRlZCByZWNpcGllbnQgcGhvbmUgbnVtYmVycyAoMi04LCBFLjE2NCBmb3JtYXQsIFVTL0NBIG9ubHkpXCIsXG4gICAgfSksXG4gICAgdGV4dDogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwibVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiTWVzc2FnZSB0ZXh0IChvcHRpb25hbCB3aGVuIC0tbWVkaWEtdXJsIGlzIHByb3ZpZGVkKVwiLFxuICAgIH0pLFxuICAgIGZyb206IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcImZcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNlbmRlciBJRCBvciBwaG9uZSBudW1iZXIgKE1NUy1lbmFibGVkIDEwRExDIG51bWJlciB5b3Ugb3duKVwiLFxuICAgIH0pLFxuICAgIHR5cGU6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJNZXNzYWdlIHR5cGU6IHRyYW5zYWN0aW9uYWwgKGRlZmF1bHQpIG9yIG1hcmtldGluZy4gTWFya2V0aW5nIGFwcGxpZXMgcXVpZXQtaG91cnMgcnVsZXMuXCIsXG4gICAgICBvcHRpb25zOiBbXCJtYXJrZXRpbmdcIiwgXCJ0cmFuc2FjdGlvbmFsXCJdLFxuICAgIH0pLFxuICAgIFwibWVkaWEtdXJsXCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJNZWRpYSBVUkwgdG8gYXR0YWNoIChNTVMpLiBDYW4gYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzLlwiLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgfSksXG4gICAgXCJpZGVtcG90ZW5jeS1rZXlcIjogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIklkZW1wb3RlbmN5IGtleSAoMS0yNTUgcHJpbnRhYmxlIEFTQ0lJIGNoYXJhY3RlcnMpLiBSZS1ydW5uaW5nIHdpdGggdGhlIHNhbWUga2V5IHdpdGhpbiAyNCBob3VycyByZXR1cm5zIHRoZSBvcmlnaW5hbCByZXN1bHQgaW5zdGVhZCBvZiBzZW5kaW5nIGFnYWluLlwiLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKFNtc0dyb3VwKTtcbiAgICBjb25zdCBtZWRpYVVybHMgPSBmbGFnc1tcIm1lZGlhLXVybFwiXTtcbiAgICBjb25zdCBoYXNNZWRpYSA9IG1lZGlhVXJscyAmJiBtZWRpYVVybHMubGVuZ3RoID4gMDtcblxuICAgIGxldCByYXdUbyA9IGZsYWdzLnRvO1xuICAgIGxldCB0ZXh0ID0gZmxhZ3MudGV4dDtcblxuICAgIGlmICghcmF3VG8pIHtcbiAgICAgIGlmIChwcm9jZXNzLnN0ZGluLmlzVFRZKSB7XG4gICAgICAgIGNvbnN0IGFuc3dlcnMgPSBhd2FpdCBpbnF1aXJlci5wcm9tcHQoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwiaW5wdXRcIixcbiAgICAgICAgICAgIG5hbWU6IFwidG9cIixcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiUmVjaXBpZW50IHBob25lIG51bWJlcnMgKGNvbW1hLXNlcGFyYXRlZCwgMi04KTpcIixcbiAgICAgICAgICAgIHZhbGlkYXRlOiAoaW5wdXQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWlucHV0LnRyaW0oKSkgcmV0dXJuIFwiQXQgbGVhc3QgMiByZWNpcGllbnRzIGFyZSByZXF1aXJlZFwiO1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICAgIHJhd1RvID0gYW5zd2Vycy50bztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9yKFwiTWlzc2luZyByZXF1aXJlZCBmbGFnOiAtLXRvXCIsIHtcbiAgICAgICAgICBoaW50OiBcIlVzZSAtLXRvICsxNDE1NTU1MTIzNCwrMTQxNTU1NTU2NzhcIixcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB0byA9IHJhd1RvIVxuICAgICAgLnNwbGl0KFwiLFwiKVxuICAgICAgLm1hcCgocCkgPT4gcC50cmltKCkpXG4gICAgICAuZmlsdGVyKChwKSA9PiBwLmxlbmd0aCA+IDApXG4gICAgICAubWFwKChwKSA9PiAocC5zdGFydHNXaXRoKFwiK1wiKSA/IHAgOiBgKyR7cH1gKSk7XG5cbiAgICBpZiAodG8ubGVuZ3RoIDwgMikge1xuICAgICAgZXJyb3IoXCJHcm91cCBtZXNzYWdpbmcgcmVxdWlyZXMgYXQgbGVhc3QgMiByZWNpcGllbnRzXCIsIHtcbiAgICAgICAgaGludDogXCJQYXNzIDItOCBudW1iZXJzOiAtLXRvICsxNDE1NTU1MTIzNCwrMTQxNTU1NTU2NzhcIixcbiAgICAgIH0pO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGlmICh0by5sZW5ndGggPiA4KSB7XG4gICAgICBlcnJvcihcIkdyb3VwIG1lc3NhZ2luZyBzdXBwb3J0cyBhdCBtb3N0IDggcmVjaXBpZW50c1wiKTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHJlY2lwaWVudCBvZiB0bykge1xuICAgICAgaWYgKCEvXlxcK1sxLTldXFxkezEsMTR9JC8udGVzdChyZWNpcGllbnQpKSB7XG4gICAgICAgIGVycm9yKGBJbnZhbGlkIHBob25lIG51bWJlcjogJHtyZWNpcGllbnR9YCwge1xuICAgICAgICAgIGhpbnQ6IFwiVXNlIEUuMTY0IGZvcm1hdDogKzE0MTU1NTUxMjM0XCIsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0ZXh0ICYmICFoYXNNZWRpYSkge1xuICAgICAgaWYgKHByb2Nlc3Muc3RkaW4uaXNUVFkpIHtcbiAgICAgICAgY29uc3QgYW5zd2VycyA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogXCJpbnB1dFwiLFxuICAgICAgICAgICAgbmFtZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICBtZXNzYWdlOiBcIk1lc3NhZ2UgdGV4dDpcIixcbiAgICAgICAgICAgIHZhbGlkYXRlOiAoaW5wdXQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWlucHV0LnRyaW0oKSkgcmV0dXJuIFwiTWVzc2FnZSB0ZXh0IGNhbm5vdCBiZSBlbXB0eVwiO1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICAgIHRleHQgPSBhbnN3ZXJzLnRleHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlcnJvcihcIkVpdGhlciAtLXRleHQgb3IgLS1tZWRpYS11cmwgaXMgcmVxdWlyZWRcIik7XG4gICAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dCAmJiAhdGV4dC50cmltKCkpIHtcbiAgICAgIGVycm9yKFwiTWVzc2FnZSB0ZXh0IGNhbm5vdCBiZSBlbXB0eVwiKTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCBzcGluID0gc3Bpbm5lcihgU2VuZGluZyBncm91cCBNTVMgdG8gJHt0by5sZW5ndGh9IHJlY2lwaWVudHMuLi5gKTtcbiAgICBzcGluLnN0YXJ0KCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQucG9zdDxHcm91cE1lc3NhZ2VSZXNwb25zZT4oXG4gICAgICAgIFwiL2FwaS92MS9tZXNzYWdlcy9ncm91cFwiLFxuICAgICAgICB7XG4gICAgICAgICAgdG8sXG4gICAgICAgICAgLi4uKHRleHQgJiYgeyB0ZXh0IH0pLFxuICAgICAgICAgIC4uLihmbGFncy5mcm9tICYmIHsgZnJvbTogZmxhZ3MuZnJvbSB9KSxcbiAgICAgICAgICAuLi4oaGFzTWVkaWEgJiYgeyBtZWRpYVVybHMgfSksXG4gICAgICAgICAgLi4uKGZsYWdzLnR5cGUgJiYgeyBtZXNzYWdlVHlwZTogZmxhZ3MudHlwZSB9KSxcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgeyBpZGVtcG90ZW5jeUtleTogZmxhZ3NbXCJpZGVtcG90ZW5jeS1rZXlcIl0gfSxcbiAgICAgICk7XG5cbiAgICAgIHNwaW4uc3RvcCgpO1xuXG4gICAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICAgIGpzb24ocmVzcG9uc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHN1Y2Nlc3MoXCJHcm91cCBNTVMgc2VudFwiLCB7XG4gICAgICAgIElEOiByZXNwb25zZS5pZCxcbiAgICAgICAgUmVjaXBpZW50czogcmVzcG9uc2UudG8ubGVuZ3RoLFxuICAgICAgICBTdGF0dXM6IGZvcm1hdFN0YXR1cyhyZXNwb25zZS5zdGF0dXMpLFxuICAgICAgICAuLi4ocmVzcG9uc2UuZ3JvdXBfbWVzc2FnZV9pZCAmJiB7XG4gICAgICAgICAgXCJHcm91cCBJRFwiOiByZXNwb25zZS5ncm91cF9tZXNzYWdlX2lkLFxuICAgICAgICB9KSxcbiAgICAgICAgLi4uKGhhc01lZGlhICYmIHtcbiAgICAgICAgICBNZWRpYTogYCR7bWVkaWFVcmxzLmxlbmd0aH0gYXR0YWNobWVudCR7bWVkaWFVcmxzLmxlbmd0aCA+IDEgPyBcInNcIiA6IFwiXCJ9YCxcbiAgICAgICAgfSksXG4gICAgICAgIC4uLihyZXNwb25zZS5zaW11bGF0ZWQgJiYgeyBTaW11bGF0ZWQ6IFwieWVzXCIgfSksXG4gICAgICB9KTtcblxuICAgICAgaWYgKCFpc0pzb25Nb2RlKCkpIHtcbiAgICAgICAgZm9yIChjb25zdCByZWNpcGllbnQgb2YgcmVzcG9uc2UudG8pIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICAke2NvbG9ycy5kaW0oXCJUbzpcIil9ICR7Y29sb3JzLmNvZGUocmVjaXBpZW50KX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc3Bpbi5zdG9wKCk7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -8,6 +8,7 @@ export default class SmsSchedule extends AuthenticatedCommand {
8
8
  at: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
9
9
  from: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
10
10
  type: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
11
+ "idempotency-key": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
11
12
  json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
12
13
  quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
13
14
  };
@@ -36,6 +36,9 @@ export default class SmsSchedule extends AuthenticatedCommand {
36
36
  options: ["marketing", "transactional"],
37
37
  default: "marketing",
38
38
  }),
39
+ "idempotency-key": Flags.string({
40
+ description: "Idempotency key (1-255 printable ASCII characters). Re-running with the same key within 24 hours returns the original result instead of scheduling again.",
41
+ }),
39
42
  };
40
43
  async run() {
41
44
  const { flags } = await this.parse(SmsSchedule);
@@ -170,7 +173,7 @@ export default class SmsSchedule extends AuthenticatedCommand {
170
173
  scheduledAt: scheduledDate.toISOString(),
171
174
  messageType: flags.type,
172
175
  ...(flags.from && { from: flags.from }),
173
- });
176
+ }, true, { idempotencyKey: flags["idempotency-key"] });
174
177
  spin.stop();
175
178
  if (isJsonMode()) {
176
179
  json(response);
@@ -190,4 +193,4 @@ export default class SmsSchedule extends AuthenticatedCommand {
190
193
  }
191
194
  }
192
195
  }
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvc21zL3NjaGVkdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUNMLE9BQU8sRUFDUCxNQUFNLEVBQ04sWUFBWSxFQUNaLElBQUksRUFDSixVQUFVLEVBQ1YsSUFBSSxHQUNMLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxLQUFLLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxRQUFRLE1BQU0sVUFBVSxDQUFDO0FBWWhDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sV0FBWSxTQUFRLG9CQUFvQjtJQUMzRCxNQUFNLENBQUMsV0FBVyxHQUFHLHNIQUFzSCxDQUFDO0lBRTVJLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsNEZBQTRGO1FBQzVGLDBGQUEwRjtRQUMxRix5RkFBeUY7UUFDekYsNkZBQTZGO1FBQzdGLDRHQUE0RztLQUM3RyxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNmLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLHVDQUF1QztTQUNyRCxDQUFDO1FBQ0YsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsY0FBYztTQUM1QixDQUFDO1FBQ0YsRUFBRSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDZixJQUFJLEVBQUUsR0FBRztZ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O2dCQUNmLE1BQU0sRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDckMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO2FBQzVDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1osTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7XG4gIHN1Y2Nlc3MsXG4gIGVycm9yLFxuICBzcGlubmVyLFxuICBjb2xvcnMsXG4gIGZvcm1hdFN0YXR1cyxcbiAganNvbixcbiAgaXNKc29uTW9kZSxcbiAgaW5mbyxcbn0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcbmltcG9ydCAqIGFzIGNocm9ubyBmcm9tIFwiY2hyb25vLW5vZGVcIjtcbmltcG9ydCBpbnF1aXJlciBmcm9tIFwiaW5xdWlyZXJcIjtcblxuaW50ZXJmYWNlIFNjaGVkdWxlZE1lc3NhZ2VSZXNwb25zZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIGZyb20/OiBzdHJpbmc7XG4gIHRleHQ6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHNjaGVkdWxlZEF0OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbXNTY2hlZHVsZSBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJTY2hlZHVsZSBhbiBTTVMgbWVzc2FnZSBmb3IgZnV0dXJlIGRlbGl2ZXJ5LiBTdXBwb3J0cyBuYXR1cmFsIGxhbmd1YWdlIGRhdGVzIGxpa2UgJ3RvbW9ycm93IGF0IDlhbScgb3IgJ2luIDIgaG91cnMnLlwiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIHNjaGVkdWxlIC0tdG8gKzE1NTUxMjM0NTY3IC0tdGV4dCBcIlJlbWluZGVyIVwiIC0tYXQgXCJ0b21vcnJvdyBhdCA5YW1cIicsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNtcyBzY2hlZHVsZSAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJNZWV0aW5nIHNvb25cIiAtLWF0IFwiaW4gMiBob3Vyc1wiJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIHNjaGVkdWxlIC0tdG8gKzE1NTUxMjM0NTY3IC0tdGV4dCBcIkhlbGxvIVwiIC0tYXQgXCJuZXh0IE1vbmRheSAzcG1cIicsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNtcyBzY2hlZHVsZSAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJTYWxlIVwiIC0tYXQgXCIyMDI2LTA0LTAxVDEwOjAwOjAwWlwiJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIHNjaGVkdWxlIC0tdG8gKzE1NTUxMjM0NTY3IC0tdGV4dCBcIkNvZGU6IDEyM1wiIC0tYXQgXCJmcmlkYXkgNXBtXCIgLS10eXBlIHRyYW5zYWN0aW9uYWwnLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgdG86IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcInRcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlJlY2lwaWVudCBwaG9uZSBudW1iZXIgKEUuMTY0IGZvcm1hdClcIixcbiAgICB9KSxcbiAgICB0ZXh0OiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJtXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJNZXNzYWdlIHRleHRcIixcbiAgICB9KSxcbiAgICBhdDogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwiYVwiLFxuICAgICAgZGVzY3JpcHRpb246ICdTY2hlZHVsZWQgdGltZSDigJQgSVNPIDg2MDEgb3IgbmF0dXJhbCBsYW5ndWFnZSAoXCJ0b21vcnJvdyBhdCA5YW1cIiwgXCJpbiAyIGhvdXJzXCIsIFwibmV4dCBNb25kYXkgM3BtXCIpJyxcbiAgICB9KSxcbiAgICBmcm9tOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJmXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJTZW5kZXIgSUQgb3IgcGhvbmUgbnVtYmVyXCIsXG4gICAgfSksXG4gICAgdHlwZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIk1lc3NhZ2UgdHlwZTogbWFya2V0aW5nIChkZWZhdWx0KSBvciB0cmFuc2FjdGlvbmFsLiBUcmFuc2FjdGlvbmFsIG1lc3NhZ2VzIGJ5cGFzcyBxdWlldCBob3Vycy5cIixcbiAgICAgIG9wdGlvbnM6IFtcIm1hcmtldGluZ1wiLCBcInRyYW5zYWN0aW9uYWxcIl0sXG4gICAgICBkZWZhdWx0OiBcIm1hcmtldGluZ1wiLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKFNtc1NjaGVkdWxlKTtcblxuICAgIGxldCB0byA9IGZsYWdzLnRvO1xuICAgIGxldCB0ZXh0ID0gZmxhZ3MudGV4dDtcbiAgICBsZXQgYXQgPSBmbGFncy5hdDtcblxuICAgIGlmICghdG8pIHtcbiAgICAgIGlmIChwcm9jZXNzLnN0ZGluLmlzVFRZKSB7XG4gICAgICAgIGNvbnN0IGFuc3dlcnMgPSBhd2FpdCBpbnF1aXJlci5wcm9tcHQoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwiaW5wdXRcIixcbiAgICAgICAgICAgIG5hbWU6IFwidG9cIixcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiUmVjaXBpZW50IHBob25lIG51bWJlciAoRS4xNjQpOlwiLFxuICAgICAgICAgICAgdmFsaWRhdGU6IChpbnB1dDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaW5wdXQpIHJldHVybiBcIlBob25lIG51bWJlciBpcyByZXF1aXJlZFwiO1xuICAgICAgICAgICAgICBpZiAoIS9eXFwrWzEtOV1cXGR7MSwxNH0kLy50ZXN0KGlucHV0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIkludmFsaWQgZm9ybWF0LiBVc2UgRS4xNjQ6ICsxNTU1MTIzNDU2N1wiO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICAgICAgdG8gPSBhbnN3ZXJzLnRvO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXJyb3IoXCJNaXNzaW5nIHJlcXVpcmVkIGZsYWc6IC0tdG9cIiwge1xuICAgICAgICAgIGhpbnQ6IFwiVXNlIC0tdG8gKzE1NTUxMjM0NTY3XCIsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0ZXh0KSB7XG4gICAgICBpZiAocHJvY2Vzcy5zdGRpbi5pc1RUWSkge1xuICAgICAgICBjb25zdCBhbnN3ZXJzID0gYXdhaXQgaW5xdWlyZXIucHJvbXB0KFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBcImlucHV0XCIsXG4gICAgICAgICAgICBuYW1lOiBcInRleHRcIixcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiTWVzc2FnZSB0ZXh0OlwiLFxuICAgICAgICAgICAgdmFsaWRhdGU6IChpbnB1dDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaW5wdXQudHJpbSgpKSByZXR1cm4gXCJNZXNzYWdlIHRleHQgY2Fubm90IGJlIGVtcHR5XCI7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICAgICAgdGV4dCA9IGFuc3dlcnMudGV4dDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9yKFwiTWlzc2luZyByZXF1aXJlZCBmbGFnOiAtLXRleHRcIiwge1xuICAgICAgICAgIGhpbnQ6ICdVc2UgLS10ZXh0IFwiWW91ciBtZXNzYWdlXCInLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghYXQpIHtcbiAgICAgIGlmIChwcm9jZXNzLnN0ZGluLmlzVFRZKSB7XG4gICAgICAgIGNvbnN0IGFuc3dlcnMgPSBhd2FpdCBpbnF1aXJlci5wcm9tcHQoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwiaW5wdXRcIixcbiAgICAgICAgICAgIG5hbWU6IFwiYXRcIixcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdTY2hlZHVsZSB0aW1lIChlLmcuIFwidG9tb3Jyb3cgYXQgOWFtXCIsIFwiaW4gMiBob3Vyc1wiKTonLFxuICAgICAgICAgICAgdmFsaWRhdGU6IChpbnB1dDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaW5wdXQudHJpbSgpKSByZXR1cm4gXCJTY2hlZHVsZWQgdGltZSBpcyByZXF1aXJlZFwiO1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICAgIGF0ID0gYW5zd2Vycy5hdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9yKFwiTWlzc2luZyByZXF1aXJlZCBmbGFnOiAtLWF0XCIsIHtcbiAgICAgICAgICBoaW50OiAnVXNlIC0tYXQgXCJ0b21vcnJvdyBhdCA5YW1cIicsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCEvXlxcK1sxLTldXFxkezEsMTR9JC8udGVzdCh0byEpKSB7XG4gICAgICBlcnJvcihcIkludmFsaWQgcGhvbmUgbnVtYmVyIGZvcm1hdFwiLCB7XG4gICAgICAgIGhpbnQ6IFwiVXNlIEUuMTY0IGZvcm1hdDogKzE1NTUxMjM0NTY3XCIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBpZiAoIXRleHQhLnRyaW0oKSkge1xuICAgICAgZXJyb3IoXCJNZXNzYWdlIHRleHQgY2Fubm90IGJlIGVtcHR5XCIpO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGxldCBzY2hlZHVsZWREYXRlID0gbmV3IERhdGUoYXQhKTtcblxuICAgIGlmIChpc05hTihzY2hlZHVsZWREYXRlLmdldFRpbWUoKSkpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IGNocm9uby5wYXJzZURhdGUoYXQhLCBuZXcgRGF0ZSgpLCB7IGZvcndhcmREYXRlOiB0cnVlIH0pO1xuICAgICAgaWYgKCFwYXJzZWQpIHtcbiAgICAgICAgZXJyb3IoXCJDb3VsZCBub3QgdW5kZXJzdGFuZCB0aGUgc2NoZWR1bGVkIHRpbWVcIiwge1xuICAgICAgICAgIGhpbnQ6ICdUcnk6IFwidG9tb3Jyb3cgYXQgOWFtXCIsIFwiaW4gMiBob3Vyc1wiLCBcIm5leHQgTW9uZGF5IDNwbVwiLCBvciBJU08gODYwMTogMjAyNi0wNC0wMVQxMDowMDowMFonLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuICAgICAgc2NoZWR1bGVkRGF0ZSA9IHBhcnNlZDtcblxuICAgICAgY29uc3QgdHogPSBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmU7XG4gICAgICBpZiAoIWlzSnNvbk1vZGUoKSkge1xuICAgICAgICBpbmZvKGBJbnRlcnByZXRlZCBcIiR7YXR9XCIgYXMgJHtzY2hlZHVsZWREYXRlLnRvTG9jYWxlU3RyaW5nKCl9ICgke3R6fSlgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB0aW1lVW50aWxTZW5kID0gc2NoZWR1bGVkRGF0ZS5nZXRUaW1lKCkgLSBEYXRlLm5vdygpO1xuXG4gICAgaWYgKHRpbWVVbnRpbFNlbmQgPCAwKSB7XG4gICAgICBlcnJvcihcIlRoYXQgdGltZSBpcyBpbiB0aGUgcGFzdFwiLCB7XG4gICAgICAgIGhpbnQ6ICdEaWQgeW91IG1lYW4gYSBmdXR1cmUgdGltZT8gVHJ5OiBcInRvbW9ycm93IGF0IDlhbVwiIG9yIFwiaW4gMiBob3Vyc1wiJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGNvbnN0IEZJVkVfTUlOVVRFUyA9IDUgKiA2MCAqIDEwMDA7XG4gICAgaWYgKHRpbWVVbnRpbFNlbmQgPCBGSVZFX01JTlVURVMpIHtcbiAgICAgIGNvbnN0IG1pbnMgPSBNYXRoLmNlaWwodGltZVVudGlsU2VuZCAvIDYwMDAwKTtcbiAgICAgIGVycm9yKGBUb28gc29vbiDigJQgdGhhdCdzIG9ubHkgJHttaW5zfSBtaW51dGUke21pbnMgIT09IDEgPyBcInNcIiA6IFwiXCJ9IGZyb20gbm93YCwge1xuICAgICAgICBoaW50OiBcIk1lc3NhZ2VzIG11c3QgYmUgc2NoZWR1bGVkIGF0IGxlYXN0IDUgbWludXRlcyBpbiB0aGUgZnV0dXJlXCIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCBGSVZFX0RBWVMgPSA1ICogMjQgKiA2MCAqIDYwICogMTAwMDtcbiAgICBpZiAodGltZVVudGlsU2VuZCA+IEZJVkVfREFZUykge1xuICAgICAgZXJyb3IoXCJUb28gZmFyIOKAlCBtdXN0IGJlIHdpdGhpbiA1IGRheXNcIiwge1xuICAgICAgICBoaW50OiBgVGhhdCdzICR7TWF0aC5jZWlsKHRpbWVVbnRpbFNlbmQgLyA4NjQwMDAwMCl9IGRheXMgZnJvbSBub3cuIE1heGltdW0gaXMgNSBkYXlzLmAsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCBzcGluID0gc3Bpbm5lcihcIlNjaGVkdWxpbmcgbWVzc2FnZS4uLlwiKTtcbiAgICBzcGluLnN0YXJ0KCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQucG9zdDxTY2hlZHVsZWRNZXNzYWdlUmVzcG9uc2U+KFxuICAgICAgICBcIi9hcGkvdjEvbWVzc2FnZXMvc2NoZWR1bGVcIixcbiAgICAgICAge1xuICAgICAgICAgIHRvLFxuICAgICAgICAgIHRleHQsXG4gICAgICAgICAgc2NoZWR1bGVkQXQ6IHNjaGVkdWxlZERhdGUudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICBtZXNzYWdlVHlwZTogZmxhZ3MudHlwZSxcbiAgICAgICAgICAuLi4oZmxhZ3MuZnJvbSAmJiB7IGZyb206IGZsYWdzLmZyb20gfSksXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBzcGluLnN0b3AoKTtcblxuICAgICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAgICBqc29uKHJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3JtYXR0ZWRUaW1lID0gbmV3IERhdGUocmVzcG9uc2Uuc2NoZWR1bGVkQXQpLnRvTG9jYWxlU3RyaW5nKCk7XG5cbiAgICAgIHN1Y2Nlc3MoXCJNZXNzYWdlIHNjaGVkdWxlZFwiLCB7XG4gICAgICAgIElEOiByZXNwb25zZS5pZCxcbiAgICAgICAgVG86IHJlc3BvbnNlLnRvLFxuICAgICAgICBTdGF0dXM6IGZvcm1hdFN0YXR1cyhyZXNwb25zZS5zdGF0dXMpLFxuICAgICAgICBcIlNjaGVkdWxlZCBGb3JcIjogY29sb3JzLmNvZGUoZm9ybWF0dGVkVGltZSksXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNwaW4uc3RvcCgpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxufVxuIl19
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvc21zL3NjaGVkdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUNMLE9BQU8sRUFDUCxNQUFNLEVBQ04sWUFBWSxFQUNaLElBQUksRUFDSixVQUFVLEVBQ1YsSUFBSSxHQUNMLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxLQUFLLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxRQUFRLE1BQU0sVUFBVSxDQUFDO0FBWWhDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sV0FBWSxTQUFRLG9CQUFvQjtJQUMzRCxNQUFNLENBQUMsV0FBVyxHQUFHLHNIQUFzSCxDQUFDO0lBRTVJLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsNEZBQTRGO1FBQzVGLDBGQUEwRjtRQUMxRix5RkFBeUY7UUFDekYsNkZBQTZGO1FBQzdGLDRHQUE0RztLQUM3RyxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNmLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLHVDQUF1QztTQUNyRCxDQUFDO1FBQ0YsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsY0FBYztTQUM1QixDQUFDO1FBQ0YsRUFBRSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDZixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSxvR0FBb0c7U0FDbEgsQ0FBQztRQUNGLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2pCLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLDJCQUEyQjtTQUN6QyxDQUFDO1FBQ0YsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsV0FBVyxFQUNULGdHQUFnRztZQUNsRyxPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsZUFBZSxDQUFDO1lBQ3ZDLE9BQU8sRUFBRSxXQUFXO1NBQ3JCLENBQUM7UUFDRixpQkFBaUIsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzlCLFdBQVcsRUFDVCwySkFBMko7U0FDOUosQ0FBQztLQUNILENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFaEQsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsQixJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFFbEIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1IsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN4QixNQUFNLE9BQU8sR0FBRyxNQUFNLFFBQVEsQ0FBQyxNQUFNLENBQUM7b0JBQ3BDO3dCQUNFLElBQUksRUFBRSxPQUFPO3dCQUNiLElBQUksRUFBRSxJQUFJO3dCQUNWLE9BQU8sRUFBRSxpQ0FBaUM7d0JBQzFDLFFBQVEsRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFOzRCQUMxQixJQUFJLENBQUMsS0FBSztnQ0FBRSxPQUFPLDBCQUEwQixDQUFDOzRCQUM5QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0NBQ3JDLE9BQU8seUNBQXlDLENBQUM7NEJBQ25ELENBQUM7NEJBQ0QsT0FBTyxJQUFJLENBQUM7d0JBQ2QsQ0FBQztxQkFDRjtpQkFDRixDQUFDLENBQUM7Z0JBQ0gsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssQ0FBQyw2QkFBNkIsRUFBRTtvQkFDbkMsSUFBSSxFQUFFLHVCQUF1QjtpQkFDOUIsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDeEIsTUFBTSxPQUFPLEdBQUcsTUFBTSxRQUFRLENBQUMsTUFBTSxDQUFDO29CQUNwQzt3QkFDRSxJQUFJLEVBQUUsT0FBTzt3QkFDYixJQUFJLEVBQUUsTUFBTTt3QkFDWixPQUFPLEVBQUUsZUFBZTt3QkFDeEIsUUFBUSxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUU7NEJBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFO2dDQUFFLE9BQU8sOEJBQThCLENBQUM7NEJBQ3pELE9BQU8sSUFBSSxDQUFDO3dCQUNkLENBQUM7cUJBQ0Y7aUJBQ0YsQ0FBQyxDQUFDO2dCQUNILElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ3RCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsK0JBQStCLEVBQUU7b0JBQ3JDLElBQUksRUFBRSwyQkFBMkI7aUJBQ2xDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDUixJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3hCLE1BQU0sT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQztvQkFDcEM7d0JBQ0UsSUFBSSxFQUFFLE9BQU87d0JBQ2IsSUFBSSxFQUFFLElBQUk7d0JBQ1YsT0FBTyxFQUFFLHVEQUF1RDt3QkFDaEUsUUFBUSxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUU7NEJBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFO2dDQUFFLE9BQU8sNEJBQTRCLENBQUM7NEJBQ3ZELE9BQU8sSUFBSSxDQUFDO3dCQUNkLENBQUM7cUJBQ0Y7aUJBQ0YsQ0FBQyxDQUFDO2dCQUNILEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2xCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsNkJBQTZCLEVBQUU7b0JBQ25DLElBQUksRUFBRSw0QkFBNEI7aUJBQ25DLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkMsS0FBSyxDQUFDLDZCQUE2QixFQUFFO2dCQUNuQyxJQUFJLEVBQUUsZ0NBQWdDO2FBQ3ZDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ2xCLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxhQUFhLEdBQUcsSUFBSSxJQUFJLENBQUMsRUFBRyxDQUFDLENBQUM7UUFFbEMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDeEUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNaLEtBQUssQ0FBQyx5Q0FBeUMsRUFBRTtvQkFDL0MsSUFBSSxFQUFFLDRGQUE0RjtpQkFDbkcsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixDQUFDO1lBQ0QsYUFBYSxHQUFHLE1BQU0sQ0FBQztZQUV2QixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO1lBQzVELElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxhQUFhLENBQUMsY0FBYyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMzRSxDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFM0QsSUFBSSxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEIsS0FBSyxDQUFDLDBCQUEwQixFQUFFO2dCQUNoQyxJQUFJLEVBQUUsb0VBQW9FO2FBQzNFLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDbkMsSUFBSSxhQUFhLEdBQUcsWUFBWSxFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDOUMsS0FBSyxDQUFDLDBCQUEwQixJQUFJLFVBQVUsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRTtnQkFDOUUsSUFBSSxFQUFFLDZEQUE2RDthQUNwRSxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDMUMsSUFBSSxhQUFhLEdBQUcsU0FBUyxFQUFFLENBQUM7WUFDOUIsS0FBSyxDQUFDLGlDQUFpQyxFQUFFO2dCQUN2QyxJQUFJLEVBQUUsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsb0NBQW9DO2FBQ3hGLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUNuQywyQkFBMkIsRUFDM0I7Z0JBQ0UsRUFBRTtnQkFDRixJQUFJO2dCQUNKLFdBQVcsRUFBRSxhQUFhLENBQUMsV0FBVyxFQUFFO2dCQUN4QyxXQUFXLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0JBQ3ZCLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUN4QyxFQUNELElBQUksRUFDSixFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUM3QyxDQUFDO1lBRUYsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRVosSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2YsT0FBTztZQUNULENBQUM7WUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFFdEUsT0FBTyxDQUFDLG1CQUFtQixFQUFFO2dCQUMzQixFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ2YsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFO2dCQUNmLE1BQU0sRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDckMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO2FBQzVDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1osTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7XG4gIHN1Y2Nlc3MsXG4gIGVycm9yLFxuICBzcGlubmVyLFxuICBjb2xvcnMsXG4gIGZvcm1hdFN0YXR1cyxcbiAganNvbixcbiAgaXNKc29uTW9kZSxcbiAgaW5mbyxcbn0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcbmltcG9ydCAqIGFzIGNocm9ubyBmcm9tIFwiY2hyb25vLW5vZGVcIjtcbmltcG9ydCBpbnF1aXJlciBmcm9tIFwiaW5xdWlyZXJcIjtcblxuaW50ZXJmYWNlIFNjaGVkdWxlZE1lc3NhZ2VSZXNwb25zZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIGZyb20/OiBzdHJpbmc7XG4gIHRleHQ6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHNjaGVkdWxlZEF0OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbXNTY2hlZHVsZSBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJTY2hlZHVsZSBhbiBTTVMgbWVzc2FnZSBmb3IgZnV0dXJlIGRlbGl2ZXJ5LiBTdXBwb3J0cyBuYXR1cmFsIGxhbmd1YWdlIGRhdGVzIGxpa2UgJ3RvbW9ycm93IGF0IDlhbScgb3IgJ2luIDIgaG91cnMnLlwiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIHNjaGVkdWxlIC0tdG8gKzE1NTUxMjM0NTY3IC0tdGV4dCBcIlJlbWluZGVyIVwiIC0tYXQgXCJ0b21vcnJvdyBhdCA5YW1cIicsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNtcyBzY2hlZHVsZSAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJNZWV0aW5nIHNvb25cIiAtLWF0IFwiaW4gMiBob3Vyc1wiJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIHNjaGVkdWxlIC0tdG8gKzE1NTUxMjM0NTY3IC0tdGV4dCBcIkhlbGxvIVwiIC0tYXQgXCJuZXh0IE1vbmRheSAzcG1cIicsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNtcyBzY2hlZHVsZSAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJTYWxlIVwiIC0tYXQgXCIyMDI2LTA0LTAxVDEwOjAwOjAwWlwiJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIHNjaGVkdWxlIC0tdG8gKzE1NTUxMjM0NTY3IC0tdGV4dCBcIkNvZGU6IDEyM1wiIC0tYXQgXCJmcmlkYXkgNXBtXCIgLS10eXBlIHRyYW5zYWN0aW9uYWwnLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgdG86IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcInRcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlJlY2lwaWVudCBwaG9uZSBudW1iZXIgKEUuMTY0IGZvcm1hdClcIixcbiAgICB9KSxcbiAgICB0ZXh0OiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJtXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJNZXNzYWdlIHRleHRcIixcbiAgICB9KSxcbiAgICBhdDogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwiYVwiLFxuICAgICAgZGVzY3JpcHRpb246ICdTY2hlZHVsZWQgdGltZSDigJQgSVNPIDg2MDEgb3IgbmF0dXJhbCBsYW5ndWFnZSAoXCJ0b21vcnJvdyBhdCA5YW1cIiwgXCJpbiAyIGhvdXJzXCIsIFwibmV4dCBNb25kYXkgM3BtXCIpJyxcbiAgICB9KSxcbiAgICBmcm9tOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJmXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJTZW5kZXIgSUQgb3IgcGhvbmUgbnVtYmVyXCIsXG4gICAgfSksXG4gICAgdHlwZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIk1lc3NhZ2UgdHlwZTogbWFya2V0aW5nIChkZWZhdWx0KSBvciB0cmFuc2FjdGlvbmFsLiBUcmFuc2FjdGlvbmFsIG1lc3NhZ2VzIGJ5cGFzcyBxdWlldCBob3Vycy5cIixcbiAgICAgIG9wdGlvbnM6IFtcIm1hcmtldGluZ1wiLCBcInRyYW5zYWN0aW9uYWxcIl0sXG4gICAgICBkZWZhdWx0OiBcIm1hcmtldGluZ1wiLFxuICAgIH0pLFxuICAgIFwiaWRlbXBvdGVuY3kta2V5XCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJJZGVtcG90ZW5jeSBrZXkgKDEtMjU1IHByaW50YWJsZSBBU0NJSSBjaGFyYWN0ZXJzKS4gUmUtcnVubmluZyB3aXRoIHRoZSBzYW1lIGtleSB3aXRoaW4gMjQgaG91cnMgcmV0dXJucyB0aGUgb3JpZ2luYWwgcmVzdWx0IGluc3RlYWQgb2Ygc2NoZWR1bGluZyBhZ2Fpbi5cIixcbiAgICB9KSxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShTbXNTY2hlZHVsZSk7XG5cbiAgICBsZXQgdG8gPSBmbGFncy50bztcbiAgICBsZXQgdGV4dCA9IGZsYWdzLnRleHQ7XG4gICAgbGV0IGF0ID0gZmxhZ3MuYXQ7XG5cbiAgICBpZiAoIXRvKSB7XG4gICAgICBpZiAocHJvY2Vzcy5zdGRpbi5pc1RUWSkge1xuICAgICAgICBjb25zdCBhbnN3ZXJzID0gYXdhaXQgaW5xdWlyZXIucHJvbXB0KFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBcImlucHV0XCIsXG4gICAgICAgICAgICBuYW1lOiBcInRvXCIsXG4gICAgICAgICAgICBtZXNzYWdlOiBcIlJlY2lwaWVudCBwaG9uZSBudW1iZXIgKEUuMTY0KTpcIixcbiAgICAgICAgICAgIHZhbGlkYXRlOiAoaW5wdXQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWlucHV0KSByZXR1cm4gXCJQaG9uZSBudW1iZXIgaXMgcmVxdWlyZWRcIjtcbiAgICAgICAgICAgICAgaWYgKCEvXlxcK1sxLTldXFxkezEsMTR9JC8udGVzdChpbnB1dCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJJbnZhbGlkIGZvcm1hdC4gVXNlIEUuMTY0OiArMTU1NTEyMzQ1NjdcIjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICAgIHRvID0gYW5zd2Vycy50bztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9yKFwiTWlzc2luZyByZXF1aXJlZCBmbGFnOiAtLXRvXCIsIHtcbiAgICAgICAgICBoaW50OiBcIlVzZSAtLXRvICsxNTU1MTIzNDU2N1wiLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdGV4dCkge1xuICAgICAgaWYgKHByb2Nlc3Muc3RkaW4uaXNUVFkpIHtcbiAgICAgICAgY29uc3QgYW5zd2VycyA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogXCJpbnB1dFwiLFxuICAgICAgICAgICAgbmFtZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICBtZXNzYWdlOiBcIk1lc3NhZ2UgdGV4dDpcIixcbiAgICAgICAgICAgIHZhbGlkYXRlOiAoaW5wdXQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWlucHV0LnRyaW0oKSkgcmV0dXJuIFwiTWVzc2FnZSB0ZXh0IGNhbm5vdCBiZSBlbXB0eVwiO1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICAgIHRleHQgPSBhbnN3ZXJzLnRleHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlcnJvcihcIk1pc3NpbmcgcmVxdWlyZWQgZmxhZzogLS10ZXh0XCIsIHtcbiAgICAgICAgICBoaW50OiAnVXNlIC0tdGV4dCBcIllvdXIgbWVzc2FnZVwiJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWF0KSB7XG4gICAgICBpZiAocHJvY2Vzcy5zdGRpbi5pc1RUWSkge1xuICAgICAgICBjb25zdCBhbnN3ZXJzID0gYXdhaXQgaW5xdWlyZXIucHJvbXB0KFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBcImlucHV0XCIsXG4gICAgICAgICAgICBuYW1lOiBcImF0XCIsXG4gICAgICAgICAgICBtZXNzYWdlOiAnU2NoZWR1bGUgdGltZSAoZS5nLiBcInRvbW9ycm93IGF0IDlhbVwiLCBcImluIDIgaG91cnNcIik6JyxcbiAgICAgICAgICAgIHZhbGlkYXRlOiAoaW5wdXQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWlucHV0LnRyaW0oKSkgcmV0dXJuIFwiU2NoZWR1bGVkIHRpbWUgaXMgcmVxdWlyZWRcIjtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuICAgICAgICBhdCA9IGFuc3dlcnMuYXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlcnJvcihcIk1pc3NpbmcgcmVxdWlyZWQgZmxhZzogLS1hdFwiLCB7XG4gICAgICAgICAgaGludDogJ1VzZSAtLWF0IFwidG9tb3Jyb3cgYXQgOWFtXCInLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghL15cXCtbMS05XVxcZHsxLDE0fSQvLnRlc3QodG8hKSkge1xuICAgICAgZXJyb3IoXCJJbnZhbGlkIHBob25lIG51bWJlciBmb3JtYXRcIiwge1xuICAgICAgICBoaW50OiBcIlVzZSBFLjE2NCBmb3JtYXQ6ICsxNTU1MTIzNDU2N1wiLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgaWYgKCF0ZXh0IS50cmltKCkpIHtcbiAgICAgIGVycm9yKFwiTWVzc2FnZSB0ZXh0IGNhbm5vdCBiZSBlbXB0eVwiKTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBsZXQgc2NoZWR1bGVkRGF0ZSA9IG5ldyBEYXRlKGF0ISk7XG5cbiAgICBpZiAoaXNOYU4oc2NoZWR1bGVkRGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSBjaHJvbm8ucGFyc2VEYXRlKGF0ISwgbmV3IERhdGUoKSwgeyBmb3J3YXJkRGF0ZTogdHJ1ZSB9KTtcbiAgICAgIGlmICghcGFyc2VkKSB7XG4gICAgICAgIGVycm9yKFwiQ291bGQgbm90IHVuZGVyc3RhbmQgdGhlIHNjaGVkdWxlZCB0aW1lXCIsIHtcbiAgICAgICAgICBoaW50OiAnVHJ5OiBcInRvbW9ycm93IGF0IDlhbVwiLCBcImluIDIgaG91cnNcIiwgXCJuZXh0IE1vbmRheSAzcG1cIiwgb3IgSVNPIDg2MDE6IDIwMjYtMDQtMDFUMTA6MDA6MDBaJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICAgIH1cbiAgICAgIHNjaGVkdWxlZERhdGUgPSBwYXJzZWQ7XG5cbiAgICAgIGNvbnN0IHR6ID0gSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xuICAgICAgaWYgKCFpc0pzb25Nb2RlKCkpIHtcbiAgICAgICAgaW5mbyhgSW50ZXJwcmV0ZWQgXCIke2F0fVwiIGFzICR7c2NoZWR1bGVkRGF0ZS50b0xvY2FsZVN0cmluZygpfSAoJHt0en0pYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdGltZVVudGlsU2VuZCA9IHNjaGVkdWxlZERhdGUuZ2V0VGltZSgpIC0gRGF0ZS5ub3coKTtcblxuICAgIGlmICh0aW1lVW50aWxTZW5kIDwgMCkge1xuICAgICAgZXJyb3IoXCJUaGF0IHRpbWUgaXMgaW4gdGhlIHBhc3RcIiwge1xuICAgICAgICBoaW50OiAnRGlkIHlvdSBtZWFuIGEgZnV0dXJlIHRpbWU/IFRyeTogXCJ0b21vcnJvdyBhdCA5YW1cIiBvciBcImluIDIgaG91cnNcIicsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCBGSVZFX01JTlVURVMgPSA1ICogNjAgKiAxMDAwO1xuICAgIGlmICh0aW1lVW50aWxTZW5kIDwgRklWRV9NSU5VVEVTKSB7XG4gICAgICBjb25zdCBtaW5zID0gTWF0aC5jZWlsKHRpbWVVbnRpbFNlbmQgLyA2MDAwMCk7XG4gICAgICBlcnJvcihgVG9vIHNvb24g4oCUIHRoYXQncyBvbmx5ICR7bWluc30gbWludXRlJHttaW5zICE9PSAxID8gXCJzXCIgOiBcIlwifSBmcm9tIG5vd2AsIHtcbiAgICAgICAgaGludDogXCJNZXNzYWdlcyBtdXN0IGJlIHNjaGVkdWxlZCBhdCBsZWFzdCA1IG1pbnV0ZXMgaW4gdGhlIGZ1dHVyZVwiLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgY29uc3QgRklWRV9EQVlTID0gNSAqIDI0ICogNjAgKiA2MCAqIDEwMDA7XG4gICAgaWYgKHRpbWVVbnRpbFNlbmQgPiBGSVZFX0RBWVMpIHtcbiAgICAgIGVycm9yKFwiVG9vIGZhciDigJQgbXVzdCBiZSB3aXRoaW4gNSBkYXlzXCIsIHtcbiAgICAgICAgaGludDogYFRoYXQncyAke01hdGguY2VpbCh0aW1lVW50aWxTZW5kIC8gODY0MDAwMDApfSBkYXlzIGZyb20gbm93LiBNYXhpbXVtIGlzIDUgZGF5cy5gLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3BpbiA9IHNwaW5uZXIoXCJTY2hlZHVsaW5nIG1lc3NhZ2UuLi5cIik7XG4gICAgc3Bpbi5zdGFydCgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpQ2xpZW50LnBvc3Q8U2NoZWR1bGVkTWVzc2FnZVJlc3BvbnNlPihcbiAgICAgICAgXCIvYXBpL3YxL21lc3NhZ2VzL3NjaGVkdWxlXCIsXG4gICAgICAgIHtcbiAgICAgICAgICB0byxcbiAgICAgICAgICB0ZXh0LFxuICAgICAgICAgIHNjaGVkdWxlZEF0OiBzY2hlZHVsZWREYXRlLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgbWVzc2FnZVR5cGU6IGZsYWdzLnR5cGUsXG4gICAgICAgICAgLi4uKGZsYWdzLmZyb20gJiYgeyBmcm9tOiBmbGFncy5mcm9tIH0pLFxuICAgICAgICB9LFxuICAgICAgICB0cnVlLFxuICAgICAgICB7IGlkZW1wb3RlbmN5S2V5OiBmbGFnc1tcImlkZW1wb3RlbmN5LWtleVwiXSB9LFxuICAgICAgKTtcblxuICAgICAgc3Bpbi5zdG9wKCk7XG5cbiAgICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm9ybWF0dGVkVGltZSA9IG5ldyBEYXRlKHJlc3BvbnNlLnNjaGVkdWxlZEF0KS50b0xvY2FsZVN0cmluZygpO1xuXG4gICAgICBzdWNjZXNzKFwiTWVzc2FnZSBzY2hlZHVsZWRcIiwge1xuICAgICAgICBJRDogcmVzcG9uc2UuaWQsXG4gICAgICAgIFRvOiByZXNwb25zZS50byxcbiAgICAgICAgU3RhdHVzOiBmb3JtYXRTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKSxcbiAgICAgICAgXCJTY2hlZHVsZWQgRm9yXCI6IGNvbG9ycy5jb2RlKGZvcm1hdHRlZFRpbWUpLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzcGluLnN0b3AoKTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -8,6 +8,7 @@ export default class SmsSend extends AuthenticatedCommand {
8
8
  from: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
9
9
  type: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
10
10
  "media-url": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
11
+ "idempotency-key": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
11
12
  json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
12
13
  quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
13
14
  };
@@ -37,6 +37,9 @@ export default class SmsSend extends AuthenticatedCommand {
37
37
  description: "Media URL to attach (MMS). Can be specified multiple times.",
38
38
  multiple: true,
39
39
  }),
40
+ "idempotency-key": Flags.string({
41
+ description: "Idempotency key (1-255 printable ASCII characters). Re-running with the same key within 24 hours returns the original result instead of sending again.",
42
+ }),
40
43
  };
41
44
  async run() {
42
45
  const { flags } = await this.parse(SmsSend);
@@ -111,7 +114,7 @@ export default class SmsSend extends AuthenticatedCommand {
111
114
  ...(text && { text }),
112
115
  ...(flags.from && { from: flags.from }),
113
116
  ...(hasMedia && { mediaUrls }),
114
- });
117
+ }, true, { idempotencyKey: flags["idempotency-key"] });
115
118
  spin.stop();
116
119
  if (isJsonMode()) {
117
120
  json(response);
@@ -138,4 +141,4 @@ export default class SmsSend extends AuthenticatedCommand {
138
141
  }
139
142
  }
140
143
  }
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9zbXMvc2VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxPQUFPLEVBQ1AsTUFBTSxFQUNOLFlBQVksRUFDWixhQUFhLEVBQ2IsSUFBSSxFQUNKLFVBQVUsR0FDWCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQztBQWNoQyxNQUFNLENBQUMsT0FBTyxPQUFPLE9BQVEsU0FBUSxvQkFBb0I7SUFDdkQsTUFBTSxDQUFDLFdBQVcsR0FBRyw0QkFBNEIsQ0FBQztJQUVsRCxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLDhEQUE4RDtRQUM5RCw4RUFBOEU7UUFDOUUsbUZBQW1GO1FBQ25GLHFFQUFxRTtRQUNyRSxnSEFBZ0g7UUFDaEgsd0ZBQXdGO1FBQ3hGLDhJQUE4STtLQUMvSSxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNmLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLHVDQUF1QztTQUNyRCxDQUFDO1FBQ0YsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsc0RBQXNEO1NBQ3BFLENBQUM7UUFDRixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSwy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LENBQUM7Z0JBQ3JDLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2pFLE9BQU8sRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztnQkFDNUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLGNBQWMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQzthQUMvRixDQUFDLENBQUM7WUFFSCxJQUFJLFFBQVEsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQzlCLEtBQUssTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7b0JBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQ2xELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgc3VjY2VzcyxcbiAgZXJyb3IsXG4gIHNwaW5uZXIsXG4gIGNvbG9ycyxcbiAgZm9ybWF0U3RhdHVzLFxuICBmb3JtYXRDcmVkaXRzLFxuICBqc29uLFxuICBpc0pzb25Nb2RlLFxufSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuaW1wb3J0IGlucXVpcmVyIGZyb20gXCJpbnF1aXJlclwiO1xuXG5pbnRlcmZhY2UgU2VuZE1lc3NhZ2VSZXNwb25zZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIGZyb206IHN0cmluZztcbiAgdGV4dDogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbiAgc2VnbWVudHM6IG51bWJlcjtcbiAgY3JlZGl0c1VzZWQ6IG51bWJlcjtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIG1lZGlhVXJscz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbXNTZW5kIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIlNlbmQgYW4gU01TIG9yIE1NUyBtZXNzYWdlXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgc2VuZCAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJIZWxsbyFcIicsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNtcyBzZW5kIC0tdG8gKzE1NTUxMjM0NTY3IC0tdGV4dCBcIkhlbGxvIVwiIC0tZnJvbSBcIlNlbmRseVwiJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIHNlbmQgLS10byArMTU1NTEyMzQ1NjcgLS10ZXh0IFwiSGVsbG8hXCIgLS10eXBlIHRyYW5zYWN0aW9uYWwnLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgc2VuZCAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJIZWxsbyFcIiAtLWpzb24nLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgc2VuZCAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJDaGVjayB0aGlzIG91dFwiIC0tbWVkaWEtdXJsIGh0dHBzOi8vZXhhbXBsZS5jb20vaW1hZ2UuanBnJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIHNlbmQgLS10byArMTU1NTEyMzQ1NjcgLS1tZWRpYS11cmwgaHR0cHM6Ly9leGFtcGxlLmNvbS9pbWFnZS5qcGcnLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgc2VuZCAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJUd28gaW1hZ2VzXCIgLS1tZWRpYS11cmwgaHR0cHM6Ly9leGFtcGxlLmNvbS9hLmpwZyAtLW1lZGlhLXVybCBodHRwczovL2V4YW1wbGUuY29tL2IuanBnJyxcbiAgXTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIHRvOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJ0XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJSZWNpcGllbnQgcGhvbmUgbnVtYmVyIChFLjE2NCBmb3JtYXQpXCIsXG4gICAgfSksXG4gICAgdGV4dDogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwibVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiTWVzc2FnZSB0ZXh0IChvcHRpb25hbCB3aGVuIC0tbWVkaWEtdXJsIGlzIHByb3ZpZGVkKVwiLFxuICAgIH0pLFxuICAgIGZyb206IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcImZcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNlbmRlciBJRCBvciBwaG9uZSBudW1iZXJcIixcbiAgICB9KSxcbiAgICB0eXBlOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiTWVzc2FnZSB0eXBlOiBtYXJrZXRpbmcgKGRlZmF1bHQpIG9yIHRyYW5zYWN0aW9uYWxcIixcbiAgICAgIG9wdGlvbnM6IFtcIm1hcmtldGluZ1wiLCBcInRyYW5zYWN0aW9uYWxcIl0sXG4gICAgICBkZWZhdWx0OiBcIm1hcmtldGluZ1wiLFxuICAgIH0pLFxuICAgIFwibWVkaWEtdXJsXCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJNZWRpYSBVUkwgdG8gYXR0YWNoIChNTVMpLiBDYW4gYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzLlwiLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoU21zU2VuZCk7XG4gICAgY29uc3QgbWVkaWFVcmxzID0gZmxhZ3NbXCJtZWRpYS11cmxcIl07XG4gICAgY29uc3QgaGFzTWVkaWEgPSBtZWRpYVVybHMgJiYgbWVkaWFVcmxzLmxlbmd0aCA+IDA7XG5cbiAgICBsZXQgdG8gPSBmbGFncy50bztcbiAgICBsZXQgdGV4dCA9IGZsYWdzLnRleHQ7XG5cbiAgICBpZiAoIXRvKSB7XG4gICAgICBpZiAocHJvY2Vzcy5zdGRpbi5pc1RUWSkge1xuICAgICAgICBjb25zdCBhbnN3ZXJzID0gYXdhaXQgaW5xdWlyZXIucHJvbXB0KFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBcImlucHV0XCIsXG4gICAgICAgICAgICBuYW1lOiBcInRvXCIsXG4gICAgICAgICAgICBtZXNzYWdlOiBcIlJlY2lwaWVudCBwaG9uZSBudW1iZXIgKEUuMTY0KTpcIixcbiAgICAgICAgICAgIHZhbGlkYXRlOiAoaW5wdXQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWlucHV0KSByZXR1cm4gXCJQaG9uZSBudW1iZXIgaXMgcmVxdWlyZWRcIjtcbiAgICAgICAgICAgICAgaWYgKCEvXlxcK1sxLTldXFxkezEsMTR9JC8udGVzdChpbnB1dCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJJbnZhbGlkIGZvcm1hdC4gVXNlIEUuMTY0OiArMTU1NTEyMzQ1NjdcIjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICAgIHRvID0gYW5zd2Vycy50bztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9yKFwiTWlzc2luZyByZXF1aXJlZCBmbGFnOiAtLXRvXCIsIHtcbiAgICAgICAgICBoaW50OiBcIlVzZSAtLXRvICsxNTU1MTIzNDU2N1wiLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdGV4dCAmJiAhaGFzTWVkaWEpIHtcbiAgICAgIGlmIChwcm9jZXNzLnN0ZGluLmlzVFRZKSB7XG4gICAgICAgIGNvbnN0IGFuc3dlcnMgPSBhd2FpdCBpbnF1aXJlci5wcm9tcHQoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwiaW5wdXRcIixcbiAgICAgICAgICAgIG5hbWU6IFwidGV4dFwiLFxuICAgICAgICAgICAgbWVzc2FnZTogXCJNZXNzYWdlIHRleHQ6XCIsXG4gICAgICAgICAgICB2YWxpZGF0ZTogKGlucHV0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFpbnB1dC50cmltKCkpIHJldHVybiBcIk1lc3NhZ2UgdGV4dCBjYW5ub3QgYmUgZW1wdHlcIjtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuICAgICAgICB0ZXh0ID0gYW5zd2Vycy50ZXh0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXJyb3IoXCJFaXRoZXIgLS10ZXh0IG9yIC0tbWVkaWEtdXJsIGlzIHJlcXVpcmVkXCIpO1xuICAgICAgICB0aGlzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCEvXlxcK1sxLTldXFxkezEsMTR9JC8udGVzdCh0byEpKSB7XG4gICAgICBlcnJvcihcIkludmFsaWQgcGhvbmUgbnVtYmVyIGZvcm1hdFwiLCB7XG4gICAgICAgIGhpbnQ6IFwiVXNlIEUuMTY0IGZvcm1hdDogKzE1NTUxMjM0NTY3XCIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBpZiAodGV4dCAmJiAhdGV4dC50cmltKCkpIHtcbiAgICAgIGVycm9yKFwiTWVzc2FnZSB0ZXh0IGNhbm5vdCBiZSBlbXB0eVwiKTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXNzYWdlTGFiZWwgPSBoYXNNZWRpYSA/IFwiTU1TXCIgOiBcIlNNU1wiO1xuICAgIGNvbnN0IHNwaW4gPSBzcGlubmVyKGBTZW5kaW5nICR7bWVzc2FnZUxhYmVsfSBtZXNzYWdlLi4uYCk7XG4gICAgc3Bpbi5zdGFydCgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpQ2xpZW50LnBvc3Q8U2VuZE1lc3NhZ2VSZXNwb25zZT4oXG4gICAgICAgIFwiL2FwaS92MS9tZXNzYWdlc1wiLFxuICAgICAgICB7XG4gICAgICAgICAgdG8sXG4gICAgICAgICAgbWVzc2FnZVR5cGU6IGZsYWdzLnR5cGUsXG4gICAgICAgICAgLi4uKHRleHQgJiYgeyB0ZXh0IH0pLFxuICAgICAgICAgIC4uLihmbGFncy5mcm9tICYmIHsgZnJvbTogZmxhZ3MuZnJvbSB9KSxcbiAgICAgICAgICAuLi4oaGFzTWVkaWEgJiYgeyBtZWRpYVVybHMgfSksXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBzcGluLnN0b3AoKTtcblxuICAgICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAgICBqc29uKHJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzdWNjZXNzKGAke21lc3NhZ2VMYWJlbH0gc2VudGAsIHtcbiAgICAgICAgSUQ6IHJlc3BvbnNlLmlkLFxuICAgICAgICBUbzogcmVzcG9uc2UudG8sXG4gICAgICAgIFR5cGU6IG1lc3NhZ2VMYWJlbCxcbiAgICAgICAgU3RhdHVzOiBmb3JtYXRTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKSxcbiAgICAgICAgLi4uKHJlc3BvbnNlLnNlZ21lbnRzICE9IG51bGwgJiYgeyBTZWdtZW50czogcmVzcG9uc2Uuc2VnbWVudHMgfSksXG4gICAgICAgIENyZWRpdHM6IGZvcm1hdENyZWRpdHMocmVzcG9uc2UuY3JlZGl0c1VzZWQpLFxuICAgICAgICAuLi4oaGFzTWVkaWEgJiYgeyBNZWRpYTogYCR7bWVkaWFVcmxzLmxlbmd0aH0gYXR0YWNobWVudCR7bWVkaWFVcmxzLmxlbmd0aCA+IDEgPyBcInNcIiA6IFwiXCJ9YCB9KSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoaGFzTWVkaWEgJiYgIWlzSnNvbk1vZGUoKSkge1xuICAgICAgICBmb3IgKGNvbnN0IHVybCBvZiBtZWRpYVVybHMpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICAke2NvbG9ycy5kaW0oXCJNZWRpYTpcIil9ICR7dXJsfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzcGluLnN0b3AoKTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9zbXMvc2VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxPQUFPLEVBQ1AsTUFBTSxFQUNOLFlBQVksRUFDWixhQUFhLEVBQ2IsSUFBSSxFQUNKLFVBQVUsR0FDWCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQztBQWNoQyxNQUFNLENBQUMsT0FBTyxPQUFPLE9BQVEsU0FBUSxvQkFBb0I7SUFDdkQsTUFBTSxDQUFDLFdBQVcsR0FBRyw0QkFBNEIsQ0FBQztJQUVsRCxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLDhEQUE4RDtRQUM5RCw4RUFBOEU7UUFDOUUsbUZBQW1GO1FBQ25GLHFFQUFxRTtRQUNyRSxnSEFBZ0g7UUFDaEgsd0ZBQXdGO1FBQ3hGLDhJQUE4STtLQUMvSSxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNmLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLHVDQUF1QztTQUNyRCxDQUFDO1FBQ0YsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsc0RBQXNEO1NBQ3BFLENBQUM7UUFDRixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSwy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QUFFO2dCQUM5QixFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ2YsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFO2dCQUNmLElBQUksRUFBRSxZQUFZO2dCQUNsQixNQUFNLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ3JDLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2pFLE9BQU8sRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztnQkFDNUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLGNBQWMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQzthQUMvRixDQUFDLENBQUM7WUFFSCxJQUFJLFFBQVEsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQzlCLEtBQUssTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7b0JBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQ2xELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgc3VjY2VzcyxcbiAgZXJyb3IsXG4gIHNwaW5uZXIsXG4gIGNvbG9ycyxcbiAgZm9ybWF0U3RhdHVzLFxuICBmb3JtYXRDcmVkaXRzLFxuICBqc29uLFxuICBpc0pzb25Nb2RlLFxufSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuaW1wb3J0IGlucXVpcmVyIGZyb20gXCJpbnF1aXJlclwiO1xuXG5pbnRlcmZhY2UgU2VuZE1lc3NhZ2VSZXNwb25zZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIGZyb206IHN0cmluZztcbiAgdGV4dDogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbiAgc2VnbWVudHM6IG51bWJlcjtcbiAgY3JlZGl0c1VzZWQ6IG51bWJlcjtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIG1lZGlhVXJscz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbXNTZW5kIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIlNlbmQgYW4gU01TIG9yIE1NUyBtZXNzYWdlXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgc2VuZCAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJIZWxsbyFcIicsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNtcyBzZW5kIC0tdG8gKzE1NTUxMjM0NTY3IC0tdGV4dCBcIkhlbGxvIVwiIC0tZnJvbSBcIlNlbmRseVwiJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIHNlbmQgLS10byArMTU1NTEyMzQ1NjcgLS10ZXh0IFwiSGVsbG8hXCIgLS10eXBlIHRyYW5zYWN0aW9uYWwnLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgc2VuZCAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJIZWxsbyFcIiAtLWpzb24nLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgc2VuZCAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJDaGVjayB0aGlzIG91dFwiIC0tbWVkaWEtdXJsIGh0dHBzOi8vZXhhbXBsZS5jb20vaW1hZ2UuanBnJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIHNlbmQgLS10byArMTU1NTEyMzQ1NjcgLS1tZWRpYS11cmwgaHR0cHM6Ly9leGFtcGxlLmNvbS9pbWFnZS5qcGcnLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgc2VuZCAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJUd28gaW1hZ2VzXCIgLS1tZWRpYS11cmwgaHR0cHM6Ly9leGFtcGxlLmNvbS9hLmpwZyAtLW1lZGlhLXVybCBodHRwczovL2V4YW1wbGUuY29tL2IuanBnJyxcbiAgXTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIHRvOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJ0XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJSZWNpcGllbnQgcGhvbmUgbnVtYmVyIChFLjE2NCBmb3JtYXQpXCIsXG4gICAgfSksXG4gICAgdGV4dDogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwibVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiTWVzc2FnZSB0ZXh0IChvcHRpb25hbCB3aGVuIC0tbWVkaWEtdXJsIGlzIHByb3ZpZGVkKVwiLFxuICAgIH0pLFxuICAgIGZyb206IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcImZcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNlbmRlciBJRCBvciBwaG9uZSBudW1iZXJcIixcbiAgICB9KSxcbiAgICB0eXBlOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiTWVzc2FnZSB0eXBlOiBtYXJrZXRpbmcgKGRlZmF1bHQpIG9yIHRyYW5zYWN0aW9uYWxcIixcbiAgICAgIG9wdGlvbnM6IFtcIm1hcmtldGluZ1wiLCBcInRyYW5zYWN0aW9uYWxcIl0sXG4gICAgICBkZWZhdWx0OiBcIm1hcmtldGluZ1wiLFxuICAgIH0pLFxuICAgIFwibWVkaWEtdXJsXCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJNZWRpYSBVUkwgdG8gYXR0YWNoIChNTVMpLiBDYW4gYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzLlwiLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgfSksXG4gICAgXCJpZGVtcG90ZW5jeS1rZXlcIjogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIklkZW1wb3RlbmN5IGtleSAoMS0yNTUgcHJpbnRhYmxlIEFTQ0lJIGNoYXJhY3RlcnMpLiBSZS1ydW5uaW5nIHdpdGggdGhlIHNhbWUga2V5IHdpdGhpbiAyNCBob3VycyByZXR1cm5zIHRoZSBvcmlnaW5hbCByZXN1bHQgaW5zdGVhZCBvZiBzZW5kaW5nIGFnYWluLlwiLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKFNtc1NlbmQpO1xuICAgIGNvbnN0IG1lZGlhVXJscyA9IGZsYWdzW1wibWVkaWEtdXJsXCJdO1xuICAgIGNvbnN0IGhhc01lZGlhID0gbWVkaWFVcmxzICYmIG1lZGlhVXJscy5sZW5ndGggPiAwO1xuXG4gICAgbGV0IHRvID0gZmxhZ3MudG87XG4gICAgbGV0IHRleHQgPSBmbGFncy50ZXh0O1xuXG4gICAgaWYgKCF0bykge1xuICAgICAgaWYgKHByb2Nlc3Muc3RkaW4uaXNUVFkpIHtcbiAgICAgICAgY29uc3QgYW5zd2VycyA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogXCJpbnB1dFwiLFxuICAgICAgICAgICAgbmFtZTogXCJ0b1wiLFxuICAgICAgICAgICAgbWVzc2FnZTogXCJSZWNpcGllbnQgcGhvbmUgbnVtYmVyIChFLjE2NCk6XCIsXG4gICAgICAgICAgICB2YWxpZGF0ZTogKGlucHV0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFpbnB1dCkgcmV0dXJuIFwiUGhvbmUgbnVtYmVyIGlzIHJlcXVpcmVkXCI7XG4gICAgICAgICAgICAgIGlmICghL15cXCtbMS05XVxcZHsxLDE0fSQvLnRlc3QoaW5wdXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiSW52YWxpZCBmb3JtYXQuIFVzZSBFLjE2NDogKzE1NTUxMjM0NTY3XCI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuICAgICAgICB0byA9IGFuc3dlcnMudG87XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlcnJvcihcIk1pc3NpbmcgcmVxdWlyZWQgZmxhZzogLS10b1wiLCB7XG4gICAgICAgICAgaGludDogXCJVc2UgLS10byArMTU1NTEyMzQ1NjdcIixcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRleHQgJiYgIWhhc01lZGlhKSB7XG4gICAgICBpZiAocHJvY2Vzcy5zdGRpbi5pc1RUWSkge1xuICAgICAgICBjb25zdCBhbnN3ZXJzID0gYXdhaXQgaW5xdWlyZXIucHJvbXB0KFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBcImlucHV0XCIsXG4gICAgICAgICAgICBuYW1lOiBcInRleHRcIixcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiTWVzc2FnZSB0ZXh0OlwiLFxuICAgICAgICAgICAgdmFsaWRhdGU6IChpbnB1dDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaW5wdXQudHJpbSgpKSByZXR1cm4gXCJNZXNzYWdlIHRleHQgY2Fubm90IGJlIGVtcHR5XCI7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICAgICAgdGV4dCA9IGFuc3dlcnMudGV4dDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9yKFwiRWl0aGVyIC0tdGV4dCBvciAtLW1lZGlhLXVybCBpcyByZXF1aXJlZFwiKTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghL15cXCtbMS05XVxcZHsxLDE0fSQvLnRlc3QodG8hKSkge1xuICAgICAgZXJyb3IoXCJJbnZhbGlkIHBob25lIG51bWJlciBmb3JtYXRcIiwge1xuICAgICAgICBoaW50OiBcIlVzZSBFLjE2NCBmb3JtYXQ6ICsxNTU1MTIzNDU2N1wiLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgaWYgKHRleHQgJiYgIXRleHQudHJpbSgpKSB7XG4gICAgICBlcnJvcihcIk1lc3NhZ2UgdGV4dCBjYW5ub3QgYmUgZW1wdHlcIik7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgY29uc3QgbWVzc2FnZUxhYmVsID0gaGFzTWVkaWEgPyBcIk1NU1wiIDogXCJTTVNcIjtcbiAgICBjb25zdCBzcGluID0gc3Bpbm5lcihgU2VuZGluZyAke21lc3NhZ2VMYWJlbH0gbWVzc2FnZS4uLmApO1xuICAgIHNwaW4uc3RhcnQoKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PFNlbmRNZXNzYWdlUmVzcG9uc2U+KFxuICAgICAgICBcIi9hcGkvdjEvbWVzc2FnZXNcIixcbiAgICAgICAge1xuICAgICAgICAgIHRvLFxuICAgICAgICAgIG1lc3NhZ2VUeXBlOiBmbGFncy50eXBlLFxuICAgICAgICAgIC4uLih0ZXh0ICYmIHsgdGV4dCB9KSxcbiAgICAgICAgICAuLi4oZmxhZ3MuZnJvbSAmJiB7IGZyb206IGZsYWdzLmZyb20gfSksXG4gICAgICAgICAgLi4uKGhhc01lZGlhICYmIHsgbWVkaWFVcmxzIH0pLFxuICAgICAgICB9LFxuICAgICAgICB0cnVlLFxuICAgICAgICB7IGlkZW1wb3RlbmN5S2V5OiBmbGFnc1tcImlkZW1wb3RlbmN5LWtleVwiXSB9LFxuICAgICAgKTtcblxuICAgICAgc3Bpbi5zdG9wKCk7XG5cbiAgICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc3VjY2VzcyhgJHttZXNzYWdlTGFiZWx9IHNlbnRgLCB7XG4gICAgICAgIElEOiByZXNwb25zZS5pZCxcbiAgICAgICAgVG86IHJlc3BvbnNlLnRvLFxuICAgICAgICBUeXBlOiBtZXNzYWdlTGFiZWwsXG4gICAgICAgIFN0YXR1czogZm9ybWF0U3RhdHVzKHJlc3BvbnNlLnN0YXR1cyksXG4gICAgICAgIC4uLihyZXNwb25zZS5zZWdtZW50cyAhPSBudWxsICYmIHsgU2VnbWVudHM6IHJlc3BvbnNlLnNlZ21lbnRzIH0pLFxuICAgICAgICBDcmVkaXRzOiBmb3JtYXRDcmVkaXRzKHJlc3BvbnNlLmNyZWRpdHNVc2VkKSxcbiAgICAgICAgLi4uKGhhc01lZGlhICYmIHsgTWVkaWE6IGAke21lZGlhVXJscy5sZW5ndGh9IGF0dGFjaG1lbnQke21lZGlhVXJscy5sZW5ndGggPiAxID8gXCJzXCIgOiBcIlwifWAgfSksXG4gICAgICB9KTtcblxuICAgICAgaWYgKGhhc01lZGlhICYmICFpc0pzb25Nb2RlKCkpIHtcbiAgICAgICAgZm9yIChjb25zdCB1cmwgb2YgbWVkaWFVcmxzKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgJHtjb2xvcnMuZGltKFwiTWVkaWE6XCIpfSAke3VybH1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc3Bpbi5zdG9wKCk7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG59XG4iXX0=