@cartanova/qgrid-cli 2.8.0 → 2.9.1

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 (79) hide show
  1. package/README.ko.md +1 -1
  2. package/README.md +1 -1
  3. package/bundle/dist/application/qgrid/expired-token-reminder.js +9 -8
  4. package/bundle/dist/application/qgrid/qgrid.frame.js +8 -14
  5. package/bundle/dist/application/qgrid/token-death.js +12 -31
  6. package/bundle/dist/application/qgrid/token-trigger-setup.js +2 -1
  7. package/bundle/dist/application/sonamu.generated.js +3 -1
  8. package/bundle/dist/application/sonamu.generated.sso.js +2 -1
  9. package/bundle/dist/application/token/token.model.js +66 -47
  10. package/bundle/dist/application/token/token.types.js +2 -1
  11. package/bundle/dist/i18n/sd.generated.js +2 -1
  12. package/bundle/dist/migrations/20260901163614_alter_tokens_add1_alter1.js +15 -0
  13. package/bundle/dist/startup-migrations.js +42 -6
  14. package/bundle/dist/utils/providers/anthropic/anthropic-constants.js +13 -3
  15. package/bundle/dist/utils/providers/anthropic/anthropic-quota.js +3 -2
  16. package/bundle/dist/utils/providers/anthropic/claude-session.js +1 -1
  17. package/bundle/dist/utils/providers/common/model-cost.js +9 -11
  18. package/bundle/dist/utils/providers/openai/openai-refresh.js +6 -4
  19. package/bundle/src/application/qgrid/expired-token-reminder.test.ts +8 -6
  20. package/bundle/src/application/qgrid/expired-token-reminder.ts +9 -8
  21. package/bundle/src/application/qgrid/qgrid.frame.test.ts +22 -0
  22. package/bundle/src/application/qgrid/qgrid.frame.ts +8 -15
  23. package/bundle/src/application/qgrid/token-death.test.ts +62 -58
  24. package/bundle/src/application/qgrid/token-death.ts +15 -39
  25. package/bundle/src/application/qgrid/token-trigger-setup.test.ts +6 -0
  26. package/bundle/src/application/qgrid/token-trigger-setup.ts +1 -0
  27. package/bundle/src/application/sonamu.generated.http +0 -27
  28. package/bundle/src/application/sonamu.generated.sso.ts +1 -0
  29. package/bundle/src/application/sonamu.generated.ts +3 -0
  30. package/bundle/src/application/token/token.entity.json +7 -0
  31. package/bundle/src/application/token/token.model.test.ts +112 -37
  32. package/bundle/src/application/token/token.model.ts +76 -48
  33. package/bundle/src/application/token/token.types.ts +1 -0
  34. package/bundle/src/i18n/sd.generated.ts +1 -0
  35. package/bundle/src/migrations/20260901163614_alter_tokens_add1_alter1.ts +15 -0
  36. package/bundle/src/startup-migrations.test.ts +116 -3
  37. package/bundle/src/startup-migrations.ts +70 -3
  38. package/bundle/src/utils/providers/anthropic/anthropic-constants.test.ts +25 -1
  39. package/bundle/src/utils/providers/anthropic/anthropic-constants.ts +23 -4
  40. package/bundle/src/utils/providers/anthropic/anthropic-quota.test.ts +7 -1
  41. package/bundle/src/utils/providers/anthropic/anthropic-quota.ts +3 -1
  42. package/bundle/src/utils/providers/anthropic/claude-session.test.ts +14 -10
  43. package/bundle/src/utils/providers/common/model-cost.test.ts +19 -19
  44. package/bundle/src/utils/providers/common/model-cost.ts +19 -16
  45. package/bundle/src/utils/providers/openai/openai-refresh.test.ts +16 -7
  46. package/bundle/src/utils/providers/openai/openai-refresh.ts +2 -2
  47. package/bundle/web-dist/client/assets/{index-D208L33c.js → index-DiioTXCk.js} +4 -4
  48. package/bundle/web-dist/client/assets/{logs-noN5Aka6.js → logs-Cmh7iNUl.js} +1 -1
  49. package/bundle/web-dist/client/assets/{monit-Ber13xcA.js → monit-BxqRbzYv.js} +1 -1
  50. package/bundle/web-dist/client/assets/{routes-3_xetpSK.js → routes-DrNdqoD1.js} +2 -2
  51. package/bundle/web-dist/client/assets/{services.generated-Da1Eq5_R.js → services.generated-C6jfEwfK.js} +1 -1
  52. package/bundle/web-dist/client/assets/{settings-C5sHCg8X.js → settings-ROuRMHwU.js} +1 -1
  53. package/bundle/web-dist/client/assets/{show-BhTgGnkc.js → show-Ct97ts6E.js} +1 -1
  54. package/bundle/web-dist/client/assets/{tokens-R7obwdAV.js → tokens-Cw2eWi9I.js} +1 -1
  55. package/bundle/web-dist/client/assets/{use-oauth-login-flow-CRAqRZXX.js → use-oauth-login-flow-D4-P9yOJ.js} +1 -1
  56. package/bundle/web-dist/client/assets/{use-update-token-mutation-CZ57EKA1.js → use-update-token-mutation-BIvO70-M.js} +1 -1
  57. package/bundle/web-dist/client/index.html +2 -2
  58. package/bundle/web-dist/server/assets/{lazyRouteComponent-V1S8gqMS.js → lazyRouteComponent-C_k4R5n6.js} +2 -2
  59. package/bundle/web-dist/server/assets/{logs-2Tkqcncq.js → logs-lBOU5eUP.js} +2 -2
  60. package/bundle/web-dist/server/assets/{monit-DrJ15xJL.js → monit-BW2X1D23.js} +2 -2
  61. package/bundle/web-dist/server/assets/{plus-DCai02Na.js → plus-DilmHifT.js} +1 -1
  62. package/bundle/web-dist/server/assets/{react-dom-BFiG5Daf.js → react-dom-CHRRsKwb.js} +1 -1
  63. package/bundle/web-dist/server/assets/{routes-Ct3I9263.js → routes-CxMHXfdH.js} +5 -5
  64. package/bundle/web-dist/server/assets/{services.generated-y7xVOTCo.js → services.generated-buX3cJzR.js} +1 -9
  65. package/bundle/web-dist/server/assets/{settings-JznSjwGQ.js → settings-CFoXQaAg.js} +3 -3
  66. package/bundle/web-dist/server/assets/{show-D8kuAFbc.js → show-CcZJO6WF.js} +2 -2
  67. package/bundle/web-dist/server/assets/{tokens-PR42jF1J.js → tokens-C32lycTe.js} +6 -5
  68. package/bundle/web-dist/server/assets/{use-oauth-login-flow-C-33Z5HA.js → use-oauth-login-flow-DCjxIa80.js} +1 -1
  69. package/bundle/web-dist/server/assets/{use-update-token-mutation-BNaRPVaX.js → use-update-token-mutation-CqK8i8Fa.js} +1 -1
  70. package/bundle/web-dist/server/entry-server.generated.js +46 -23
  71. package/package.json +1 -1
  72. package/skills/qgrid/SKILL.md +1 -1
  73. package/skills/qgrid/references/ai-sdk-provider-contract.md +3 -3
  74. package/skills/qgrid/references/anthropic-claude-code-runtime.md +13 -9
  75. package/skills/qgrid/references/cli-env-and-server-boot.md +4 -2
  76. package/skills/qgrid/references/decision-rationale.md +2 -1
  77. package/skills/qgrid/references/request-log-run-lifecycle.md +1 -1
  78. package/skills/qgrid/references/sonamu-api-web-flow.md +2 -0
  79. package/skills/qgrid/references/token-auth-quota-lifecycle.md +17 -13
@@ -196,6 +196,7 @@ const TokenBaseSchema = z.object({
196
196
  credentials: TokenCredentials,
197
197
  name: z.string(),
198
198
  active: z.boolean(),
199
+ reauth_required: z.boolean(),
199
200
  ord: z.int(),
200
201
  quota_threshold: z.int().nullable(),
201
202
  weight: z.int(),
@@ -403,6 +404,7 @@ const TokenSubsetA = z.object({
403
404
  credentials: TokenCredentials,
404
405
  name: z.string(),
405
406
  active: z.boolean(),
407
+ reauth_required: z.boolean(),
406
408
  ord: z.int(),
407
409
  quota_threshold: z.int().nullable(),
408
410
  weight: z.int(),
@@ -412,4 +414,4 @@ const TokenSubsetKey = z.enum(["A"]);
412
414
  //#endregion
413
415
  export { RequestLogBaseListParams, RequestLogBaseSchema, RequestLogOrderBy, RequestLogOrderByLabel, RequestLogSearchField, RequestLogSearchFieldLabel, RequestLogStatus, RequestLogStatusLabel, RequestLogStepBaseListParams, RequestLogStepBaseSchema, RequestLogStepOrderBy, RequestLogStepOrderByLabel, RequestLogStepSearchField, RequestLogStepSearchFieldLabel, RequestLogStepSubsetA, RequestLogStepSubsetI, RequestLogStepSubsetKey, RequestLogStepSubsetT, RequestLogStepType, RequestLogStepTypeLabel, RequestLogSubsetA, RequestLogSubsetC, RequestLogSubsetKey, RequestLogSubsetP, SettingBaseListParams, SettingBaseSchema, SettingOrderBy, SettingOrderByLabel, SettingSearchField, SettingSearchFieldLabel, SettingSubsetA, SettingSubsetKey, TokenBaseListParams, TokenBaseSchema, TokenOrderBy, TokenOrderByLabel, TokenSearchField, TokenSearchFieldLabel, TokenSubsetA, TokenSubsetKey };
414
416
 
415
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29uYW11LmdlbmVyYXRlZC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwbGljYXRpb24vc29uYW11LmdlbmVyYXRlZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBnZW5lcmF0ZWRcbiAqIOyngeygkSDsiJjsoJXtlZjsp4Ag66eI7IS47JqULlxuICovXG5cbi8qIG94bGludC1kaXNhYmxlICovXG5cbmltcG9ydCB7IHpBcnJheWFibGUsIFNvbmFtdVF1ZXJ5TW9kZSwgQXBwbHlTb25hbXVGaWx0ZXIgfSBmcm9tIFwic29uYW11XCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG4vLyBDdXN0b21TY2FsYXI6IEhpc3RvcnlJdGVtc1xuY29uc3QgSGlzdG9yeUl0ZW1zID0gei5hcnJheShcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHouc3RyaW5nKCksXG4gICAgcm9sZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNvbnRlbnQ6IHoudW5rbm93bigpLm9wdGlvbmFsKCksXG4gICAgbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGFyZ3VtZW50czogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNhbGxfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBvdXRwdXQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4pO1xudHlwZSBIaXN0b3J5SXRlbXMgPSB6LmluZmVyPHR5cGVvZiBIaXN0b3J5SXRlbXM+O1xuXG4vLyBDdXN0b21TY2FsYXI6IFRva2VuQ3JlZGVudGlhbHNcbmNvbnN0IFRva2VuQ3JlZGVudGlhbHMgPSB6LnVuaW9uKFtcbiAgei5vYmplY3Qoe1xuICAgIGFjY2Vzc1Rva2VuOiB6LnN0cmluZygpLFxuICAgIHJlZnJlc2hUb2tlbjogei5zdHJpbmcoKSxcbiAgICBleHBpcmVzQXQ6IHoubnVtYmVyKCksXG4gICAgYWNjb3VudFV1aWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICB6Lm9iamVjdCh7XG4gICAgYWNjZXNzVG9rZW46IHouc3RyaW5nKCksXG4gICAgcmVmcmVzaFRva2VuOiB6LnN0cmluZygpLFxuICAgIGlkVG9rZW46IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBhY2Nlc3NUb2tlbkV4cGlyZXNBdDogei5udW1iZXIoKSxcbiAgICBpZFRva2VuRXhwaXJlc0F0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgYWNjb3VudElkOiB6LnN0cmluZygpLFxuICAgIHBsYW5UeXBlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuXSk7XG50eXBlIFRva2VuQ3JlZGVudGlhbHMgPSB6LmluZmVyPHR5cGVvZiBUb2tlbkNyZWRlbnRpYWxzPjtcblxuLy8gQ3VzdG9tU2NhbGFyOiBUb29sRGVmaW5pdGlvbnNcbmNvbnN0IFRvb2xEZWZpbml0aW9ucyA9IHouYXJyYXkoXG4gIHoub2JqZWN0KHtcbiAgICBuYW1lOiB6LnN0cmluZygpLFxuICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaW5wdXRTY2hlbWE6IHoudW5rbm93bigpLFxuICB9KSxcbik7XG50eXBlIFRvb2xEZWZpbml0aW9ucyA9IHouaW5mZXI8dHlwZW9mIFRvb2xEZWZpbml0aW9ucz47XG5cbi8vIEVudW1zOiBSZXF1ZXN0TG9nXG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ09yZGVyQnkgPSB6XG4gIC5lbnVtKFtcbiAgICBcImlkLWRlc2NcIixcbiAgICBcImlkLWFzY1wiLFxuICAgIFwiY3JlYXRlZF9hdC1kZXNjXCIsXG4gICAgXCJjcmVhdGVkX2F0LWFzY1wiLFxuICAgIFwidHRmdF9tcy1kZXNjXCIsXG4gICAgXCJ0dGZ0X21zLWFzY1wiLFxuICAgIFwiZHVyYXRpb25fbXMtZGVzY1wiLFxuICAgIFwiZHVyYXRpb25fbXMtYXNjXCIsXG4gICAgXCJpbnB1dF90b2tlbnMtZGVzY1wiLFxuICAgIFwiaW5wdXRfdG9rZW5zLWFzY1wiLFxuICAgIFwib3V0cHV0X3Rva2Vucy1kZXNjXCIsXG4gICAgXCJvdXRwdXRfdG9rZW5zLWFzY1wiLFxuICAgIFwiY2FjaGVfcmVhZF90b2tlbnMtZGVzY1wiLFxuICAgIFwiY2FjaGVfcmVhZF90b2tlbnMtYXNjXCIsXG4gICAgXCJjYWNoZV9jcmVhdGlvbl90b2tlbnMtZGVzY1wiLFxuICAgIFwiY2FjaGVfY3JlYXRpb25fdG9rZW5zLWFzY1wiLFxuICAgIFwiY29zdF91c2QtZGVzY1wiLFxuICAgIFwiY29zdF91c2QtYXNjXCIsXG4gIF0pXG4gIC5kZXNjcmliZShcIlJlcXVlc3RMb2dPcmRlckJ5XCIpO1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ09yZGVyQnkgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nT3JkZXJCeT47XG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ09yZGVyQnlMYWJlbCA9IHtcbiAgXCJpZC1kZXNjXCI6IFwiSUTstZzsi6DsiJxcIixcbiAgXCJpZC1hc2NcIjogXCJJROyYpOuemOuQnOyInFwiLFxuICBcImNyZWF0ZWRfYXQtZGVzY1wiOiBcIuuTseuhneydvOyLnOy1nOyLoOyInFwiLFxuICBcImNyZWF0ZWRfYXQtYXNjXCI6IFwi65Ox66Gd7J287Iuc7Jik656Y65Cc7IicXCIsXG4gIFwidHRmdF9tcy1kZXNjXCI6IFwiVFRGVOq4tOyInFwiLFxuICBcInR0ZnRfbXMtYXNjXCI6IFwiVFRGVOynp+ydgOyInFwiLFxuICBcImR1cmF0aW9uX21zLWRlc2NcIjogXCLshozsmpTsi5zqsITquLTsiJxcIixcbiAgXCJkdXJhdGlvbl9tcy1hc2NcIjogXCLshozsmpTsi5zqsITsp6fsnYDsiJxcIixcbiAgXCJpbnB1dF90b2tlbnMtZGVzY1wiOiBcIuyeheugpe2GoO2BsOunjuydgOyInFwiLFxuICBcImlucHV0X3Rva2Vucy1hc2NcIjogXCLsnoXroKXthqDtgbDsoIHsnYDsiJxcIixcbiAgXCJvdXRwdXRfdG9rZW5zLWRlc2NcIjogXCLstpzroKXthqDtgbDrp47snYDsiJxcIixcbiAgXCJvdXRwdXRfdG9rZW5zLWFzY1wiOiBcIuy2nOugpe2GoO2BsOyggeydgOyInFwiLFxuICBcImNhY2hlX3JlYWRfdG9rZW5zLWRlc2NcIjogXCLsupDsi5zsnb3quLDrp47snYDsiJxcIixcbiAgXCJjYWNoZV9yZWFkX3Rva2Vucy1hc2NcIjogXCLsupDsi5zsnb3quLDsoIHsnYDsiJxcIixcbiAgXCJjYWNoZV9jcmVhdGlvbl90b2tlbnMtZGVzY1wiOiBcIuy6kOyLnOyDneyEseunjuydgOyInFwiLFxuICBcImNhY2hlX2NyZWF0aW9uX3Rva2Vucy1hc2NcIjogXCLsupDsi5zsg53shLHsoIHsnYDsiJxcIixcbiAgXCJjb3N0X3VzZC1kZXNjXCI6IFwi67mE7Jqp64aS7J2A7IicXCIsXG4gIFwiY29zdF91c2QtYXNjXCI6IFwi67mE7Jqp64Ku7J2A7IicXCIsXG59O1xuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dTZWFyY2hGaWVsZCA9IHpcbiAgLmVudW0oW1wiaWRcIiwgXCJ0b2tlbl9uYW1lXCIsIFwidXNlcl9wcm9tcHRcIl0pXG4gIC5kZXNjcmliZShcIlJlcXVlc3RMb2dTZWFyY2hGaWVsZFwiKTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTZWFyY2hGaWVsZCA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dTZWFyY2hGaWVsZD47XG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1NlYXJjaEZpZWxkTGFiZWwgPSB7XG4gIGlkOiBcIklEXCIsXG4gIHRva2VuX25hbWU6IFwi7Yag7YGw7J2066aEXCIsXG4gIHVzZXJfcHJvbXB0OiBcIuyCrOyaqeyekCDtlITroaztlITtirhcIixcbn07XG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1N0YXR1cyA9IHpcbiAgLmVudW0oW1wicnVubmluZ1wiLCBcInN1Y2NlZWRlZFwiLCBcImVycm9yXCIsIFwiYWJvcnRlZFwiXSlcbiAgLmRlc2NyaWJlKFwiUmVxdWVzdExvZ1N0YXR1c1wiKTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTdGF0dXMgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nU3RhdHVzPjtcbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nU3RhdHVzTGFiZWwgPSB7XG4gIHJ1bm5pbmc6IFwi7Iuk7ZaJIOykkVwiLFxuICBzdWNjZWVkZWQ6IFwi7ISx6rO1XCIsXG4gIGVycm9yOiBcIuyXkOufrFwiLFxuICBhYm9ydGVkOiBcIuykkeuLqFwiLFxufTtcblxuLy8gRW51bXM6IFJlcXVlc3RMb2dTdGVwXG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1N0ZXBUeXBlID0gei5lbnVtKFtcImdlbmVyYXRlXCIsIFwidG9vbF9jYWxsXCJdKS5kZXNjcmliZShcIlJlcXVlc3RMb2dTdGVwVHlwZVwiKTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTdGVwVHlwZSA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dTdGVwVHlwZT47XG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1N0ZXBUeXBlTGFiZWwgPSB7IGdlbmVyYXRlOiBcIkxMTSDsg53shLFcIiwgdG9vbF9jYWxsOiBcIlRvb2wg7Zi47LacXCIgfTtcbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nU3RlcE9yZGVyQnkgPSB6LmVudW0oW1wiaWQtYXNjXCJdKS5kZXNjcmliZShcIlJlcXVlc3RMb2dTdGVwT3JkZXJCeVwiKTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTdGVwT3JkZXJCeSA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dTdGVwT3JkZXJCeT47XG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1N0ZXBPcmRlckJ5TGFiZWwgPSB7IFwiaWQtYXNjXCI6IFwiSUTsiJxcIiB9O1xuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dTdGVwU2VhcmNoRmllbGQgPSB6LmVudW0oW1wiaWRcIl0pLmRlc2NyaWJlKFwiUmVxdWVzdExvZ1N0ZXBTZWFyY2hGaWVsZFwiKTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTdGVwU2VhcmNoRmllbGQgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nU3RlcFNlYXJjaEZpZWxkPjtcbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nU3RlcFNlYXJjaEZpZWxkTGFiZWwgPSB7IGlkOiBcIklEXCIgfTtcblxuLy8gRW51bXM6IFNldHRpbmdcbmV4cG9ydCBjb25zdCBTZXR0aW5nT3JkZXJCeSA9IHouZW51bShbXCJrZXktYXNjXCJdKS5kZXNjcmliZShcIlNldHRpbmdPcmRlckJ5XCIpO1xuZXhwb3J0IHR5cGUgU2V0dGluZ09yZGVyQnkgPSB6LmluZmVyPHR5cGVvZiBTZXR0aW5nT3JkZXJCeT47XG5leHBvcnQgY29uc3QgU2V0dGluZ09yZGVyQnlMYWJlbCA9IHsgXCJrZXktYXNjXCI6IFwi7YKk7IicXCIgfTtcbmV4cG9ydCBjb25zdCBTZXR0aW5nU2VhcmNoRmllbGQgPSB6LmVudW0oW1wia2V5XCJdKS5kZXNjcmliZShcIlNldHRpbmdTZWFyY2hGaWVsZFwiKTtcbmV4cG9ydCB0eXBlIFNldHRpbmdTZWFyY2hGaWVsZCA9IHouaW5mZXI8dHlwZW9mIFNldHRpbmdTZWFyY2hGaWVsZD47XG5leHBvcnQgY29uc3QgU2V0dGluZ1NlYXJjaEZpZWxkTGFiZWwgPSB7IGtleTogXCLtgqRcIiB9O1xuXG4vLyBFbnVtczogVG9rZW5cbmV4cG9ydCBjb25zdCBUb2tlbk9yZGVyQnkgPSB6LmVudW0oW1wiaWQtZGVzY1wiLCBcIm9yZC1hc2NcIl0pLmRlc2NyaWJlKFwiVG9rZW5PcmRlckJ5XCIpO1xuZXhwb3J0IHR5cGUgVG9rZW5PcmRlckJ5ID0gei5pbmZlcjx0eXBlb2YgVG9rZW5PcmRlckJ5PjtcbmV4cG9ydCBjb25zdCBUb2tlbk9yZGVyQnlMYWJlbCA9IHsgXCJpZC1kZXNjXCI6IFwiSUTstZzsi6DsiJxcIiwgXCJvcmQtYXNjXCI6IFwi7Iic7ISc7IicXCIgfTtcbmV4cG9ydCBjb25zdCBUb2tlblNlYXJjaEZpZWxkID0gei5lbnVtKFtcImlkXCIsIFwibmFtZVwiXSkuZGVzY3JpYmUoXCJUb2tlblNlYXJjaEZpZWxkXCIpO1xuZXhwb3J0IHR5cGUgVG9rZW5TZWFyY2hGaWVsZCA9IHouaW5mZXI8dHlwZW9mIFRva2VuU2VhcmNoRmllbGQ+O1xuZXhwb3J0IGNvbnN0IFRva2VuU2VhcmNoRmllbGRMYWJlbCA9IHsgaWQ6IFwiSURcIiwgbmFtZTogXCLsnbTrpoRcIiB9O1xuXG4vLyBCYXNlU2NoZW1hOiBSZXF1ZXN0TG9nXG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ0Jhc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LmludCgpLFxuICBjcmVhdGVkX2F0OiB6LmRhdGUoKSxcbiAgdG9rZW5fbmFtZTogei5zdHJpbmcoKS5tYXgoMTAwKS5udWxsYWJsZSgpLFxuICBwcm9qZWN0X25hbWU6IHouc3RyaW5nKCkubWF4KDUwKS5udWxsYWJsZSgpLFxuICBtb2RlbF9uYW1lOiB6LnN0cmluZygpLm1heCgyNTUpLm51bGxhYmxlKCksXG4gIHJlcXVlc3RlZF9tb2RlbF9uYW1lOiB6LnN0cmluZygpLm1heCgyNTUpLm51bGxhYmxlKCksXG4gIGZhbGxiYWNrX2NvdW50OiB6LmludCgpLm51bGxhYmxlKCksXG4gIHVzZXJfcHJvbXB0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHN5c3RlbV9wcm9tcHQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgcmVzcG9uc2U6IHouc3RyaW5nKCksXG4gIGlucHV0X3Rva2Vuczogei5pbnQoKSxcbiAgb3V0cHV0X3Rva2Vuczogei5pbnQoKSxcbiAgY2FjaGVfcmVhZF90b2tlbnM6IHouaW50KCksXG4gIGNhY2hlX2NyZWF0aW9uX3Rva2Vuczogei5pbnQoKSxcbiAgY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBkdXJhdGlvbl9tczogei5pbnQoKSxcbiAgdHRmdF9tczogei5pbnQoKSxcbiAgY29zdF91c2Q6IHouaW50KCkubnVsbGFibGUoKSxcbiAgY29zdF9zb3VyY2U6IHouc3RyaW5nKCkubWF4KDIwKS5udWxsYWJsZSgpLFxuICBpbWFnZV9jb3N0X3VzZDogei5pbnQoKS5udWxsYWJsZSgpLFxuICBpbWFnZV9jb3N0X21ldGhvZDogei5zdHJpbmcoKS5tYXgoMTAwKS5udWxsYWJsZSgpLFxuICBlZmZvcnQ6IHouc3RyaW5nKCkubWF4KDEwKS5udWxsYWJsZSgpLFxuICBoaXN0b3J5OiBIaXN0b3J5SXRlbXMubnVsbGFibGUoKSxcbiAgdG9vbHM6IFRvb2xEZWZpbml0aW9ucy5udWxsYWJsZSgpLFxuICBqc29uX3NjaGVtYTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBzdGF0dXM6IFJlcXVlc3RMb2dTdGF0dXMsXG4gIGVycm9yX21lc3NhZ2U6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgcmVzcG9uc2VfanNvbl9vazogei5ib29sZWFuKCkubnVsbGFibGUoKSxcbiAgdG9vbF9jYWxsX2NvdW50OiB6LmludCgpLFxuICBpc19pbWFnZV9nZW5lcmF0aW9uOiB6LmJvb2xlYW4oKSxcbiAgaXNfc3RydWN0dXJlZDogei5ib29sZWFuKCksXG59KTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dCYXNlU2NoZW1hID0gei5pbmZlcjx0eXBlb2YgUmVxdWVzdExvZ0Jhc2VTY2hlbWE+ICYge1xuICByZWFkb25seSBfX2hhc0RlZmF1bHRfXzogcmVhZG9ubHkgW1xuICAgIFwiY3JlYXRlZF9hdFwiLFxuICAgIFwidG9rZW5fbmFtZVwiLFxuICAgIFwicHJvamVjdF9uYW1lXCIsXG4gICAgXCJtb2RlbF9uYW1lXCIsXG4gICAgXCJyZXF1ZXN0ZWRfbW9kZWxfbmFtZVwiLFxuICAgIFwiZmFsbGJhY2tfY291bnRcIixcbiAgICBcInVzZXJfcHJvbXB0XCIsXG4gICAgXCJzeXN0ZW1fcHJvbXB0XCIsXG4gICAgXCJyZXNwb25zZVwiLFxuICAgIFwiaW5wdXRfdG9rZW5zXCIsXG4gICAgXCJvdXRwdXRfdG9rZW5zXCIsXG4gICAgXCJjYWNoZV9yZWFkX3Rva2Vuc1wiLFxuICAgIFwiY2FjaGVfY3JlYXRpb25fdG9rZW5zXCIsXG4gICAgXCJjYWNoZV9jcmVhdGlvbl81bV90b2tlbnNcIixcbiAgICBcImNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuc1wiLFxuICAgIFwiZHVyYXRpb25fbXNcIixcbiAgICBcInR0ZnRfbXNcIixcbiAgICBcImNvc3RfdXNkXCIsXG4gICAgXCJjb3N0X3NvdXJjZVwiLFxuICAgIFwiaW1hZ2VfY29zdF91c2RcIixcbiAgICBcImltYWdlX2Nvc3RfbWV0aG9kXCIsXG4gICAgXCJlZmZvcnRcIixcbiAgICBcImhpc3RvcnlcIixcbiAgICBcInRvb2xzXCIsXG4gICAgXCJqc29uX3NjaGVtYVwiLFxuICAgIFwic3RhdHVzXCIsXG4gICAgXCJlcnJvcl9tZXNzYWdlXCIsXG4gICAgXCJyZXNwb25zZV9qc29uX29rXCIsXG4gICAgXCJ0b29sX2NhbGxfY291bnRcIixcbiAgICBcImlzX2ltYWdlX2dlbmVyYXRpb25cIixcbiAgICBcImlzX3N0cnVjdHVyZWRcIixcbiAgICBcImlkXCIsXG4gIF07XG59O1xuXG4vLyBCYXNlU2NoZW1hOiBSZXF1ZXN0TG9nU3RlcFxuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dTdGVwQmFzZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgaWQ6IHouaW50KCksXG4gIGNyZWF0ZWRfYXQ6IHouZGF0ZSgpLFxuICByZXF1ZXN0X2xvZ19pZDogei5pbnQoKSxcbiAgc3RlcF9pbmRleDogei5pbnQoKSxcbiAgdHlwZTogUmVxdWVzdExvZ1N0ZXBUeXBlLFxuICBtb2RlbF9uYW1lOiB6LnN0cmluZygpLm1heCgyNTUpLm51bGxhYmxlKCksXG4gIHJlcXVlc3RlZF9tb2RlbF9uYW1lOiB6LnN0cmluZygpLm1heCgyNTUpLm51bGxhYmxlKCksXG4gIGZhbGxiYWNrX2NvdW50OiB6LmludCgpLm51bGxhYmxlKCksXG4gIGlucHV0X3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBvdXRwdXRfdG9rZW5zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNhY2hlX3JlYWRfdG9rZW5zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNhY2hlX2NyZWF0aW9uX3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNvc3RfdXNkOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNvc3Rfc291cmNlOiB6LnN0cmluZygpLm1heCgyMCkubnVsbGFibGUoKSxcbiAgZHVyYXRpb25fbXM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgdHRmdF9tczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBmaW5pc2hfcmVhc29uOiB6LnN0cmluZygpLm1heCgyMCkubnVsbGFibGUoKSxcbiAgcmVhc29uaW5nX3RleHQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgcmVhc29uaW5nX3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICB0b29sX2NhbGxfaW5kZXg6IHouaW50KCkubnVsbGFibGUoKSxcbiAgdG9vbF9jYWxsX2lkOiB6LnN0cmluZygpLm1heCgxMDApLm51bGxhYmxlKCksXG4gIHRvb2xfbmFtZTogei5zdHJpbmcoKS5tYXgoMTAwKS5udWxsYWJsZSgpLFxuICB0b29sX2FyZ3M6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgdG9vbF9yZXN1bHQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgdG9vbF9kdXJhdGlvbl9tczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBlcnJvcjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxufSk7XG5leHBvcnQgdHlwZSBSZXF1ZXN0TG9nU3RlcEJhc2VTY2hlbWEgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nU3RlcEJhc2VTY2hlbWE+ICYge1xuICByZWFkb25seSBfX2hhc0RlZmF1bHRfXzogcmVhZG9ubHkgW1xuICAgIFwiY3JlYXRlZF9hdFwiLFxuICAgIFwibW9kZWxfbmFtZVwiLFxuICAgIFwicmVxdWVzdGVkX21vZGVsX25hbWVcIixcbiAgICBcImZhbGxiYWNrX2NvdW50XCIsXG4gICAgXCJpbnB1dF90b2tlbnNcIixcbiAgICBcIm91dHB1dF90b2tlbnNcIixcbiAgICBcImNhY2hlX3JlYWRfdG9rZW5zXCIsXG4gICAgXCJjYWNoZV9jcmVhdGlvbl90b2tlbnNcIixcbiAgICBcImNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiLFxuICAgIFwiY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zXCIsXG4gICAgXCJjb3N0X3VzZFwiLFxuICAgIFwiY29zdF9zb3VyY2VcIixcbiAgICBcImR1cmF0aW9uX21zXCIsXG4gICAgXCJ0dGZ0X21zXCIsXG4gICAgXCJmaW5pc2hfcmVhc29uXCIsXG4gICAgXCJyZWFzb25pbmdfdGV4dFwiLFxuICAgIFwicmVhc29uaW5nX3Rva2Vuc1wiLFxuICAgIFwidG9vbF9jYWxsX2luZGV4XCIsXG4gICAgXCJ0b29sX2NhbGxfaWRcIixcbiAgICBcInRvb2xfbmFtZVwiLFxuICAgIFwidG9vbF9hcmdzXCIsXG4gICAgXCJ0b29sX3Jlc3VsdFwiLFxuICAgIFwidG9vbF9kdXJhdGlvbl9tc1wiLFxuICAgIFwiZXJyb3JcIixcbiAgICBcImlkXCIsXG4gIF07XG59O1xuXG4vLyBCYXNlU2NoZW1hOiBTZXR0aW5nXG5leHBvcnQgY29uc3QgU2V0dGluZ0Jhc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LmludCgpLFxuICBjcmVhdGVkX2F0OiB6LmRhdGUoKSxcbiAga2V5OiB6LnN0cmluZygpLm1heCgxMDApLFxuICB2YWx1ZTogei5zdHJpbmcoKSxcbiAgdXBkYXRlZF9hdDogei5kYXRlKCkubnVsbGFibGUoKSxcbn0pO1xuZXhwb3J0IHR5cGUgU2V0dGluZ0Jhc2VTY2hlbWEgPSB6LmluZmVyPHR5cGVvZiBTZXR0aW5nQmFzZVNjaGVtYT4gJiB7XG4gIHJlYWRvbmx5IF9faGFzRGVmYXVsdF9fOiByZWFkb25seSBbXCJjcmVhdGVkX2F0XCIsIFwidXBkYXRlZF9hdFwiLCBcImlkXCJdO1xufTtcblxuLy8gQmFzZVNjaGVtYTogVG9rZW5cbmV4cG9ydCBjb25zdCBUb2tlbkJhc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LmludCgpLFxuICBjcmVhdGVkX2F0OiB6LmRhdGUoKSxcbiAgcHJvdmlkZXI6IHouc3RyaW5nKCkubWF4KDIwKSxcbiAgY3JlZGVudGlhbHM6IFRva2VuQ3JlZGVudGlhbHMsXG4gIG5hbWU6IHouc3RyaW5nKCksXG4gIGFjdGl2ZTogei5ib29sZWFuKCksXG4gIG9yZDogei5pbnQoKSxcbiAgcXVvdGFfdGhyZXNob2xkOiB6LmludCgpLm51bGxhYmxlKCksXG4gIHdlaWdodDogei5pbnQoKSxcbiAga2VlcGFsaXZlX2VuYWJsZWQ6IHouYm9vbGVhbigpLFxufSk7XG5leHBvcnQgdHlwZSBUb2tlbkJhc2VTY2hlbWEgPSB6LmluZmVyPHR5cGVvZiBUb2tlbkJhc2VTY2hlbWE+ICYge1xuICByZWFkb25seSBfX2hhc0RlZmF1bHRfXzogcmVhZG9ubHkgW1xuICAgIFwiY3JlYXRlZF9hdFwiLFxuICAgIFwiYWN0aXZlXCIsXG4gICAgXCJvcmRcIixcbiAgICBcInF1b3RhX3RocmVzaG9sZFwiLFxuICAgIFwid2VpZ2h0XCIsXG4gICAgXCJrZWVwYWxpdmVfZW5hYmxlZFwiLFxuICAgIFwiaWRcIixcbiAgXTtcbn07XG5cbi8vIEJhc2VMaXN0UGFyYW1zOiBSZXF1ZXN0TG9nXG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ0Jhc2VMaXN0UGFyYW1zID0gelxuICAub2JqZWN0KHtcbiAgICBudW06IHoubnVtYmVyKCkuaW50KCkubm9ubmVnYXRpdmUoKSxcbiAgICBwYWdlOiB6Lm51bWJlcigpLmludCgpLm1pbigxKSxcbiAgICBzZWFyY2g6IFJlcXVlc3RMb2dTZWFyY2hGaWVsZCxcbiAgICBrZXl3b3JkOiB6LnN0cmluZygpLFxuICAgIG9yZGVyQnk6IFJlcXVlc3RMb2dPcmRlckJ5LFxuICAgIHF1ZXJ5TW9kZTogU29uYW11UXVlcnlNb2RlLFxuICAgIGlkOiB6QXJyYXlhYmxlKHoubnVtYmVyKCkuaW50KCkucG9zaXRpdmUoKSksXG4gICAgc29uYW11RmlsdGVyOiB6LmN1c3RvbTxBcHBseVNvbmFtdUZpbHRlcjxSZXF1ZXN0TG9nQmFzZVNjaGVtYSwgbmV2ZXIsIG5ldmVyPj4oKSxcbiAgICB0b2tlbl9uYW1lOiB6LnN0cmluZygpLm1heCgxMDApLm51bGxhYmxlKCksXG4gICAgcHJvamVjdF9uYW1lOiB6LnN0cmluZygpLm1heCg1MCkubnVsbGFibGUoKSxcbiAgICBtb2RlbF9uYW1lOiB6LnN0cmluZygpLm1heCgyNTUpLm51bGxhYmxlKCksXG4gIH0pXG4gIC5wYXJ0aWFsKCk7XG5leHBvcnQgdHlwZSBSZXF1ZXN0TG9nQmFzZUxpc3RQYXJhbXMgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nQmFzZUxpc3RQYXJhbXM+O1xuXG4vLyBCYXNlTGlzdFBhcmFtczogUmVxdWVzdExvZ1N0ZXBcbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nU3RlcEJhc2VMaXN0UGFyYW1zID0gelxuICAub2JqZWN0KHtcbiAgICBudW06IHoubnVtYmVyKCkuaW50KCkubm9ubmVnYXRpdmUoKSxcbiAgICBwYWdlOiB6Lm51bWJlcigpLmludCgpLm1pbigxKSxcbiAgICBzZWFyY2g6IFJlcXVlc3RMb2dTdGVwU2VhcmNoRmllbGQsXG4gICAga2V5d29yZDogei5zdHJpbmcoKSxcbiAgICBvcmRlckJ5OiBSZXF1ZXN0TG9nU3RlcE9yZGVyQnksXG4gICAgcXVlcnlNb2RlOiBTb25hbXVRdWVyeU1vZGUsXG4gICAgaWQ6IHpBcnJheWFibGUoei5udW1iZXIoKS5pbnQoKS5wb3NpdGl2ZSgpKSxcbiAgICBzb25hbXVGaWx0ZXI6IHouY3VzdG9tPEFwcGx5U29uYW11RmlsdGVyPFJlcXVlc3RMb2dTdGVwQmFzZVNjaGVtYSwgbmV2ZXIsIG5ldmVyPj4oKSxcbiAgICByZXF1ZXN0X2xvZ19pZDogei5pbnQoKSxcbiAgfSlcbiAgLnBhcnRpYWwoKTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTdGVwQmFzZUxpc3RQYXJhbXMgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nU3RlcEJhc2VMaXN0UGFyYW1zPjtcblxuLy8gQmFzZUxpc3RQYXJhbXM6IFNldHRpbmdcbmV4cG9ydCBjb25zdCBTZXR0aW5nQmFzZUxpc3RQYXJhbXMgPSB6XG4gIC5vYmplY3Qoe1xuICAgIG51bTogei5udW1iZXIoKS5pbnQoKS5ub25uZWdhdGl2ZSgpLFxuICAgIHBhZ2U6IHoubnVtYmVyKCkuaW50KCkubWluKDEpLFxuICAgIHNlYXJjaDogU2V0dGluZ1NlYXJjaEZpZWxkLFxuICAgIGtleXdvcmQ6IHouc3RyaW5nKCksXG4gICAgb3JkZXJCeTogU2V0dGluZ09yZGVyQnksXG4gICAgcXVlcnlNb2RlOiBTb25hbXVRdWVyeU1vZGUsXG4gICAgaWQ6IHpBcnJheWFibGUoei5udW1iZXIoKS5pbnQoKS5wb3NpdGl2ZSgpKSxcbiAgICBzb25hbXVGaWx0ZXI6IHouY3VzdG9tPEFwcGx5U29uYW11RmlsdGVyPFNldHRpbmdCYXNlU2NoZW1hLCBuZXZlciwgbmV2ZXI+PigpLFxuICAgIGtleTogei5zdHJpbmcoKS5tYXgoMTAwKSxcbiAgfSlcbiAgLnBhcnRpYWwoKTtcbmV4cG9ydCB0eXBlIFNldHRpbmdCYXNlTGlzdFBhcmFtcyA9IHouaW5mZXI8dHlwZW9mIFNldHRpbmdCYXNlTGlzdFBhcmFtcz47XG5cbi8vIEJhc2VMaXN0UGFyYW1zOiBUb2tlblxuZXhwb3J0IGNvbnN0IFRva2VuQmFzZUxpc3RQYXJhbXMgPSB6XG4gIC5vYmplY3Qoe1xuICAgIG51bTogei5udW1iZXIoKS5pbnQoKS5ub25uZWdhdGl2ZSgpLFxuICAgIHBhZ2U6IHoubnVtYmVyKCkuaW50KCkubWluKDEpLFxuICAgIHNlYXJjaDogVG9rZW5TZWFyY2hGaWVsZCxcbiAgICBrZXl3b3JkOiB6LnN0cmluZygpLFxuICAgIG9yZGVyQnk6IFRva2VuT3JkZXJCeSxcbiAgICBxdWVyeU1vZGU6IFNvbmFtdVF1ZXJ5TW9kZSxcbiAgICBpZDogekFycmF5YWJsZSh6Lm51bWJlcigpLmludCgpLnBvc2l0aXZlKCkpLFxuICAgIHNvbmFtdUZpbHRlcjogei5jdXN0b208QXBwbHlTb25hbXVGaWx0ZXI8VG9rZW5CYXNlU2NoZW1hLCBuZXZlciwgbmV2ZXI+PigpLFxuICB9KVxuICAucGFydGlhbCgpO1xuZXhwb3J0IHR5cGUgVG9rZW5CYXNlTGlzdFBhcmFtcyA9IHouaW5mZXI8dHlwZW9mIFRva2VuQmFzZUxpc3RQYXJhbXM+O1xuXG4vLyBTdWJzZXRzOiBSZXF1ZXN0TG9nXG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1N1YnNldEEgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LmludCgpLFxuICBjcmVhdGVkX2F0OiB6LmRhdGUoKSxcbiAgdG9rZW5fbmFtZTogei5zdHJpbmcoKS5tYXgoMTAwKS5udWxsYWJsZSgpLFxuICBwcm9qZWN0X25hbWU6IHouc3RyaW5nKCkubWF4KDUwKS5udWxsYWJsZSgpLFxuICBtb2RlbF9uYW1lOiB6LnN0cmluZygpLm1heCgyNTUpLm51bGxhYmxlKCksXG4gIHJlcXVlc3RlZF9tb2RlbF9uYW1lOiB6LnN0cmluZygpLm1heCgyNTUpLm51bGxhYmxlKCksXG4gIGZhbGxiYWNrX2NvdW50OiB6LmludCgpLm51bGxhYmxlKCksXG4gIHVzZXJfcHJvbXB0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHN5c3RlbV9wcm9tcHQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgcmVzcG9uc2U6IHouc3RyaW5nKCksXG4gIGlucHV0X3Rva2Vuczogei5pbnQoKSxcbiAgb3V0cHV0X3Rva2Vuczogei5pbnQoKSxcbiAgY2FjaGVfcmVhZF90b2tlbnM6IHouaW50KCksXG4gIGNhY2hlX2NyZWF0aW9uX3Rva2Vuczogei5pbnQoKSxcbiAgY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBkdXJhdGlvbl9tczogei5pbnQoKSxcbiAgdHRmdF9tczogei5pbnQoKSxcbiAgY29zdF91c2Q6IHouaW50KCkubnVsbGFibGUoKSxcbiAgY29zdF9zb3VyY2U6IHouc3RyaW5nKCkubWF4KDIwKS5udWxsYWJsZSgpLFxuICBpbWFnZV9jb3N0X3VzZDogei5pbnQoKS5udWxsYWJsZSgpLFxuICBpbWFnZV9jb3N0X21ldGhvZDogei5zdHJpbmcoKS5tYXgoMTAwKS5udWxsYWJsZSgpLFxuICBlZmZvcnQ6IHouc3RyaW5nKCkubWF4KDEwKS5udWxsYWJsZSgpLFxuICBoaXN0b3J5OiBIaXN0b3J5SXRlbXMubnVsbGFibGUoKSxcbiAgdG9vbHM6IFRvb2xEZWZpbml0aW9ucy5udWxsYWJsZSgpLFxuICBzdGF0dXM6IFJlcXVlc3RMb2dTdGF0dXMsXG4gIHJlc3BvbnNlX2pzb25fb2s6IHouYm9vbGVhbigpLm51bGxhYmxlKCksXG4gIGVycm9yX21lc3NhZ2U6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgdG9vbF9jYWxsX2NvdW50OiB6LmludCgpLFxuICBpc19pbWFnZV9nZW5lcmF0aW9uOiB6LmJvb2xlYW4oKSxcbiAgaXNfc3RydWN0dXJlZDogei5ib29sZWFuKCksXG59KTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTdWJzZXRBID0gei5pbmZlcjx0eXBlb2YgUmVxdWVzdExvZ1N1YnNldEE+O1xuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dTdWJzZXRQID0gei5vYmplY3Qoe1xuICBpZDogei5pbnQoKSxcbiAgY3JlYXRlZF9hdDogei5kYXRlKCksXG4gIHRva2VuX25hbWU6IHouc3RyaW5nKCkubWF4KDEwMCkubnVsbGFibGUoKSxcbiAgcHJvamVjdF9uYW1lOiB6LnN0cmluZygpLm1heCg1MCkubnVsbGFibGUoKSxcbiAgbW9kZWxfbmFtZTogei5zdHJpbmcoKS5tYXgoMjU1KS5udWxsYWJsZSgpLFxuICByZXF1ZXN0ZWRfbW9kZWxfbmFtZTogei5zdHJpbmcoKS5tYXgoMjU1KS5udWxsYWJsZSgpLFxuICBmYWxsYmFja19jb3VudDogei5pbnQoKS5udWxsYWJsZSgpLFxuICBpbnB1dF90b2tlbnM6IHouaW50KCksXG4gIG91dHB1dF90b2tlbnM6IHouaW50KCksXG4gIGNhY2hlX3JlYWRfdG9rZW5zOiB6LmludCgpLFxuICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IHouaW50KCksXG4gIGNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgZHVyYXRpb25fbXM6IHouaW50KCksXG4gIHR0ZnRfbXM6IHouaW50KCksXG4gIGNvc3RfdXNkOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNvc3Rfc291cmNlOiB6LnN0cmluZygpLm1heCgyMCkubnVsbGFibGUoKSxcbiAgaW1hZ2VfY29zdF91c2Q6IHouaW50KCkubnVsbGFibGUoKSxcbiAgaW1hZ2VfY29zdF9tZXRob2Q6IHouc3RyaW5nKCkubWF4KDEwMCkubnVsbGFibGUoKSxcbiAgZWZmb3J0OiB6LnN0cmluZygpLm1heCgxMCkubnVsbGFibGUoKSxcbiAgc3RhdHVzOiBSZXF1ZXN0TG9nU3RhdHVzLFxuICByZXNwb25zZV9qc29uX29rOiB6LmJvb2xlYW4oKS5udWxsYWJsZSgpLFxuICB0b29sX2NhbGxfY291bnQ6IHouaW50KCksXG4gIGlzX2ltYWdlX2dlbmVyYXRpb246IHouYm9vbGVhbigpLFxuICBpc19zdHJ1Y3R1cmVkOiB6LmJvb2xlYW4oKSxcbn0pO1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ1N1YnNldFAgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nU3Vic2V0UD47XG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1N1YnNldEMgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LmludCgpLFxuICB0b2tlbl9uYW1lOiB6LnN0cmluZygpLm1heCgxMDApLm51bGxhYmxlKCksXG4gIG1vZGVsX25hbWU6IHouc3RyaW5nKCkubWF4KDI1NSkubnVsbGFibGUoKSxcbiAgaW5wdXRfdG9rZW5zOiB6LmludCgpLFxuICBvdXRwdXRfdG9rZW5zOiB6LmludCgpLFxuICBjYWNoZV9yZWFkX3Rva2Vuczogei5pbnQoKSxcbiAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiB6LmludCgpLFxuICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNvc3RfdXNkOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNvc3Rfc291cmNlOiB6LnN0cmluZygpLm1heCgyMCkubnVsbGFibGUoKSxcbn0pO1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ1N1YnNldEMgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nU3Vic2V0Qz47XG5leHBvcnQgdHlwZSBSZXF1ZXN0TG9nU3Vic2V0TWFwcGluZyA9IHtcbiAgQTogUmVxdWVzdExvZ1N1YnNldEE7XG4gIFA6IFJlcXVlc3RMb2dTdWJzZXRQO1xuICBDOiBSZXF1ZXN0TG9nU3Vic2V0Qztcbn07XG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1N1YnNldEtleSA9IHouZW51bShbXCJBXCIsIFwiUFwiLCBcIkNcIl0pO1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ1N1YnNldEtleSA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dTdWJzZXRLZXk+O1xuXG4vLyBTdWJzZXRzOiBSZXF1ZXN0TG9nU3RlcFxuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dTdGVwU3Vic2V0QSA9IHoub2JqZWN0KHtcbiAgaWQ6IHouaW50KCksXG4gIGNyZWF0ZWRfYXQ6IHouZGF0ZSgpLFxuICBzdGVwX2luZGV4OiB6LmludCgpLFxuICB0eXBlOiBSZXF1ZXN0TG9nU3RlcFR5cGUsXG4gIG1vZGVsX25hbWU6IHouc3RyaW5nKCkubWF4KDI1NSkubnVsbGFibGUoKSxcbiAgcmVxdWVzdGVkX21vZGVsX25hbWU6IHouc3RyaW5nKCkubWF4KDI1NSkubnVsbGFibGUoKSxcbiAgZmFsbGJhY2tfY291bnQ6IHouaW50KCkubnVsbGFibGUoKSxcbiAgaW5wdXRfdG9rZW5zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIG91dHB1dF90b2tlbnM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgY2FjaGVfcmVhZF90b2tlbnM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgY29zdF91c2Q6IHouaW50KCkubnVsbGFibGUoKSxcbiAgY29zdF9zb3VyY2U6IHouc3RyaW5nKCkubWF4KDIwKS5udWxsYWJsZSgpLFxuICBkdXJhdGlvbl9tczogei5pbnQoKS5udWxsYWJsZSgpLFxuICB0dGZ0X21zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGZpbmlzaF9yZWFzb246IHouc3RyaW5nKCkubWF4KDIwKS5udWxsYWJsZSgpLFxuICByZWFzb25pbmdfdGV4dDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICByZWFzb25pbmdfdG9rZW5zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIHRvb2xfY2FsbF9pbmRleDogei5pbnQoKS5udWxsYWJsZSgpLFxuICB0b29sX2NhbGxfaWQ6IHouc3RyaW5nKCkubWF4KDEwMCkubnVsbGFibGUoKSxcbiAgdG9vbF9uYW1lOiB6LnN0cmluZygpLm1heCgxMDApLm51bGxhYmxlKCksXG4gIHRvb2xfYXJnczogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICB0b29sX3Jlc3VsdDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICB0b29sX2R1cmF0aW9uX21zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGVycm9yOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG59KTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTdGVwU3Vic2V0QSA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dTdGVwU3Vic2V0QT47XG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1N0ZXBTdWJzZXRUID0gei5vYmplY3Qoe1xuICBpZDogei5pbnQoKSxcbiAgY3JlYXRlZF9hdDogei5kYXRlKCksXG4gIHN0ZXBfaW5kZXg6IHouaW50KCksXG4gIHR5cGU6IFJlcXVlc3RMb2dTdGVwVHlwZSxcbiAgbW9kZWxfbmFtZTogei5zdHJpbmcoKS5tYXgoMjU1KS5udWxsYWJsZSgpLFxuICByZXF1ZXN0ZWRfbW9kZWxfbmFtZTogei5zdHJpbmcoKS5tYXgoMjU1KS5udWxsYWJsZSgpLFxuICBmYWxsYmFja19jb3VudDogei5pbnQoKS5udWxsYWJsZSgpLFxuICBpbnB1dF90b2tlbnM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgb3V0cHV0X3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBjYWNoZV9yZWFkX3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBjb3N0X3VzZDogei5pbnQoKS5udWxsYWJsZSgpLFxuICBjb3N0X3NvdXJjZTogei5zdHJpbmcoKS5tYXgoMjApLm51bGxhYmxlKCksXG4gIGR1cmF0aW9uX21zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIHR0ZnRfbXM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgZmluaXNoX3JlYXNvbjogei5zdHJpbmcoKS5tYXgoMjApLm51bGxhYmxlKCksXG4gIHJlYXNvbmluZ190b2tlbnM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgdG9vbF9jYWxsX2luZGV4OiB6LmludCgpLm51bGxhYmxlKCksXG4gIHRvb2xfY2FsbF9pZDogei5zdHJpbmcoKS5tYXgoMTAwKS5udWxsYWJsZSgpLFxuICB0b29sX25hbWU6IHouc3RyaW5nKCkubWF4KDEwMCkubnVsbGFibGUoKSxcbiAgdG9vbF9kdXJhdGlvbl9tczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBlcnJvcjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxufSk7XG5leHBvcnQgdHlwZSBSZXF1ZXN0TG9nU3RlcFN1YnNldFQgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nU3RlcFN1YnNldFQ+O1xuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dTdGVwU3Vic2V0SSA9IHoub2JqZWN0KHtcbiAgaWQ6IHouaW50KCksXG4gIHRvb2xfYXJnczogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxufSk7XG5leHBvcnQgdHlwZSBSZXF1ZXN0TG9nU3RlcFN1YnNldEkgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nU3RlcFN1YnNldEk+O1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ1N0ZXBTdWJzZXRNYXBwaW5nID0ge1xuICBBOiBSZXF1ZXN0TG9nU3RlcFN1YnNldEE7XG4gIFQ6IFJlcXVlc3RMb2dTdGVwU3Vic2V0VDtcbiAgSTogUmVxdWVzdExvZ1N0ZXBTdWJzZXRJO1xufTtcbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nU3RlcFN1YnNldEtleSA9IHouZW51bShbXCJBXCIsIFwiVFwiLCBcIklcIl0pO1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ1N0ZXBTdWJzZXRLZXkgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nU3RlcFN1YnNldEtleT47XG5cbi8vIFN1YnNldHM6IFNldHRpbmdcbmV4cG9ydCBjb25zdCBTZXR0aW5nU3Vic2V0QSA9IHoub2JqZWN0KHtcbiAgaWQ6IHouaW50KCksXG4gIGNyZWF0ZWRfYXQ6IHouZGF0ZSgpLFxuICBrZXk6IHouc3RyaW5nKCkubWF4KDEwMCksXG4gIHZhbHVlOiB6LnN0cmluZygpLFxuICB1cGRhdGVkX2F0OiB6LmRhdGUoKS5udWxsYWJsZSgpLFxufSk7XG5leHBvcnQgdHlwZSBTZXR0aW5nU3Vic2V0QSA9IHouaW5mZXI8dHlwZW9mIFNldHRpbmdTdWJzZXRBPjtcbmV4cG9ydCB0eXBlIFNldHRpbmdTdWJzZXRNYXBwaW5nID0ge1xuICBBOiBTZXR0aW5nU3Vic2V0QTtcbn07XG5leHBvcnQgY29uc3QgU2V0dGluZ1N1YnNldEtleSA9IHouZW51bShbXCJBXCJdKTtcbmV4cG9ydCB0eXBlIFNldHRpbmdTdWJzZXRLZXkgPSB6LmluZmVyPHR5cGVvZiBTZXR0aW5nU3Vic2V0S2V5PjtcblxuLy8gU3Vic2V0czogVG9rZW5cbmV4cG9ydCBjb25zdCBUb2tlblN1YnNldEEgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LmludCgpLFxuICBjcmVhdGVkX2F0OiB6LmRhdGUoKSxcbiAgcHJvdmlkZXI6IHouc3RyaW5nKCkubWF4KDIwKSxcbiAgY3JlZGVudGlhbHM6IFRva2VuQ3JlZGVudGlhbHMsXG4gIG5hbWU6IHouc3RyaW5nKCksXG4gIGFjdGl2ZTogei5ib29sZWFuKCksXG4gIG9yZDogei5pbnQoKSxcbiAgcXVvdGFfdGhyZXNob2xkOiB6LmludCgpLm51bGxhYmxlKCksXG4gIHdlaWdodDogei5pbnQoKSxcbiAga2VlcGFsaXZlX2VuYWJsZWQ6IHouYm9vbGVhbigpLFxufSk7XG5leHBvcnQgdHlwZSBUb2tlblN1YnNldEEgPSB6LmluZmVyPHR5cGVvZiBUb2tlblN1YnNldEE+O1xuZXhwb3J0IHR5cGUgVG9rZW5TdWJzZXRNYXBwaW5nID0ge1xuICBBOiBUb2tlblN1YnNldEE7XG59O1xuZXhwb3J0IGNvbnN0IFRva2VuU3Vic2V0S2V5ID0gei5lbnVtKFtcIkFcIl0pO1xuZXhwb3J0IHR5cGUgVG9rZW5TdWJzZXRLZXkgPSB6LmluZmVyPHR5cGVvZiBUb2tlblN1YnNldEtleT47XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFXQSxNQUFNLGVBQWUsRUFBRSxNQUNyQixFQUFFLE9BQU87Q0FDUCxNQUFNLEVBQUUs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
417
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29uYW11LmdlbmVyYXRlZC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwbGljYXRpb24vc29uYW11LmdlbmVyYXRlZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBnZW5lcmF0ZWRcbiAqIOyngeygkSDsiJjsoJXtlZjsp4Ag66eI7IS47JqULlxuICovXG5cbi8qIG94bGludC1kaXNhYmxlICovXG5cbmltcG9ydCB7IHpBcnJheWFibGUsIFNvbmFtdVF1ZXJ5TW9kZSwgQXBwbHlTb25hbXVGaWx0ZXIgfSBmcm9tIFwic29uYW11XCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG4vLyBDdXN0b21TY2FsYXI6IEhpc3RvcnlJdGVtc1xuY29uc3QgSGlzdG9yeUl0ZW1zID0gei5hcnJheShcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHouc3RyaW5nKCksXG4gICAgcm9sZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNvbnRlbnQ6IHoudW5rbm93bigpLm9wdGlvbmFsKCksXG4gICAgbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGFyZ3VtZW50czogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNhbGxfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBvdXRwdXQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4pO1xudHlwZSBIaXN0b3J5SXRlbXMgPSB6LmluZmVyPHR5cGVvZiBIaXN0b3J5SXRlbXM+O1xuXG4vLyBDdXN0b21TY2FsYXI6IFRva2VuQ3JlZGVudGlhbHNcbmNvbnN0IFRva2VuQ3JlZGVudGlhbHMgPSB6LnVuaW9uKFtcbiAgei5vYmplY3Qoe1xuICAgIGFjY2Vzc1Rva2VuOiB6LnN0cmluZygpLFxuICAgIHJlZnJlc2hUb2tlbjogei5zdHJpbmcoKSxcbiAgICBleHBpcmVzQXQ6IHoubnVtYmVyKCksXG4gICAgYWNjb3VudFV1aWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICB6Lm9iamVjdCh7XG4gICAgYWNjZXNzVG9rZW46IHouc3RyaW5nKCksXG4gICAgcmVmcmVzaFRva2VuOiB6LnN0cmluZygpLFxuICAgIGlkVG9rZW46IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBhY2Nlc3NUb2tlbkV4cGlyZXNBdDogei5udW1iZXIoKSxcbiAgICBpZFRva2VuRXhwaXJlc0F0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgYWNjb3VudElkOiB6LnN0cmluZygpLFxuICAgIHBsYW5UeXBlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuXSk7XG50eXBlIFRva2VuQ3JlZGVudGlhbHMgPSB6LmluZmVyPHR5cGVvZiBUb2tlbkNyZWRlbnRpYWxzPjtcblxuLy8gQ3VzdG9tU2NhbGFyOiBUb29sRGVmaW5pdGlvbnNcbmNvbnN0IFRvb2xEZWZpbml0aW9ucyA9IHouYXJyYXkoXG4gIHoub2JqZWN0KHtcbiAgICBuYW1lOiB6LnN0cmluZygpLFxuICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaW5wdXRTY2hlbWE6IHoudW5rbm93bigpLFxuICB9KSxcbik7XG50eXBlIFRvb2xEZWZpbml0aW9ucyA9IHouaW5mZXI8dHlwZW9mIFRvb2xEZWZpbml0aW9ucz47XG5cbi8vIEVudW1zOiBSZXF1ZXN0TG9nXG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ09yZGVyQnkgPSB6XG4gIC5lbnVtKFtcbiAgICBcImlkLWRlc2NcIixcbiAgICBcImlkLWFzY1wiLFxuICAgIFwiY3JlYXRlZF9hdC1kZXNjXCIsXG4gICAgXCJjcmVhdGVkX2F0LWFzY1wiLFxuICAgIFwidHRmdF9tcy1kZXNjXCIsXG4gICAgXCJ0dGZ0X21zLWFzY1wiLFxuICAgIFwiZHVyYXRpb25fbXMtZGVzY1wiLFxuICAgIFwiZHVyYXRpb25fbXMtYXNjXCIsXG4gICAgXCJpbnB1dF90b2tlbnMtZGVzY1wiLFxuICAgIFwiaW5wdXRfdG9rZW5zLWFzY1wiLFxuICAgIFwib3V0cHV0X3Rva2Vucy1kZXNjXCIsXG4gICAgXCJvdXRwdXRfdG9rZW5zLWFzY1wiLFxuICAgIFwiY2FjaGVfcmVhZF90b2tlbnMtZGVzY1wiLFxuICAgIFwiY2FjaGVfcmVhZF90b2tlbnMtYXNjXCIsXG4gICAgXCJjYWNoZV9jcmVhdGlvbl90b2tlbnMtZGVzY1wiLFxuICAgIFwiY2FjaGVfY3JlYXRpb25fdG9rZW5zLWFzY1wiLFxuICAgIFwiY29zdF91c2QtZGVzY1wiLFxuICAgIFwiY29zdF91c2QtYXNjXCIsXG4gIF0pXG4gIC5kZXNjcmliZShcIlJlcXVlc3RMb2dPcmRlckJ5XCIpO1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ09yZGVyQnkgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nT3JkZXJCeT47XG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ09yZGVyQnlMYWJlbCA9IHtcbiAgXCJpZC1kZXNjXCI6IFwiSUTstZzsi6DsiJxcIixcbiAgXCJpZC1hc2NcIjogXCJJROyYpOuemOuQnOyInFwiLFxuICBcImNyZWF0ZWRfYXQtZGVzY1wiOiBcIuuTseuhneydvOyLnOy1nOyLoOyInFwiLFxuICBcImNyZWF0ZWRfYXQtYXNjXCI6IFwi65Ox66Gd7J287Iuc7Jik656Y65Cc7IicXCIsXG4gIFwidHRmdF9tcy1kZXNjXCI6IFwiVFRGVOq4tOyInFwiLFxuICBcInR0ZnRfbXMtYXNjXCI6IFwiVFRGVOynp+ydgOyInFwiLFxuICBcImR1cmF0aW9uX21zLWRlc2NcIjogXCLshozsmpTsi5zqsITquLTsiJxcIixcbiAgXCJkdXJhdGlvbl9tcy1hc2NcIjogXCLshozsmpTsi5zqsITsp6fsnYDsiJxcIixcbiAgXCJpbnB1dF90b2tlbnMtZGVzY1wiOiBcIuyeheugpe2GoO2BsOunjuydgOyInFwiLFxuICBcImlucHV0X3Rva2Vucy1hc2NcIjogXCLsnoXroKXthqDtgbDsoIHsnYDsiJxcIixcbiAgXCJvdXRwdXRfdG9rZW5zLWRlc2NcIjogXCLstpzroKXthqDtgbDrp47snYDsiJxcIixcbiAgXCJvdXRwdXRfdG9rZW5zLWFzY1wiOiBcIuy2nOugpe2GoO2BsOyggeydgOyInFwiLFxuICBcImNhY2hlX3JlYWRfdG9rZW5zLWRlc2NcIjogXCLsupDsi5zsnb3quLDrp47snYDsiJxcIixcbiAgXCJjYWNoZV9yZWFkX3Rva2Vucy1hc2NcIjogXCLsupDsi5zsnb3quLDsoIHsnYDsiJxcIixcbiAgXCJjYWNoZV9jcmVhdGlvbl90b2tlbnMtZGVzY1wiOiBcIuy6kOyLnOyDneyEseunjuydgOyInFwiLFxuICBcImNhY2hlX2NyZWF0aW9uX3Rva2Vucy1hc2NcIjogXCLsupDsi5zsg53shLHsoIHsnYDsiJxcIixcbiAgXCJjb3N0X3VzZC1kZXNjXCI6IFwi67mE7Jqp64aS7J2A7IicXCIsXG4gIFwiY29zdF91c2QtYXNjXCI6IFwi67mE7Jqp64Ku7J2A7IicXCIsXG59O1xuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dTZWFyY2hGaWVsZCA9IHpcbiAgLmVudW0oW1wiaWRcIiwgXCJ0b2tlbl9uYW1lXCIsIFwidXNlcl9wcm9tcHRcIl0pXG4gIC5kZXNjcmliZShcIlJlcXVlc3RMb2dTZWFyY2hGaWVsZFwiKTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTZWFyY2hGaWVsZCA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dTZWFyY2hGaWVsZD47XG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1NlYXJjaEZpZWxkTGFiZWwgPSB7XG4gIGlkOiBcIklEXCIsXG4gIHRva2VuX25hbWU6IFwi7Yag7YGw7J2066aEXCIsXG4gIHVzZXJfcHJvbXB0OiBcIuyCrOyaqeyekCDtlITroaztlITtirhcIixcbn07XG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1N0YXR1cyA9IHpcbiAgLmVudW0oW1wicnVubmluZ1wiLCBcInN1Y2NlZWRlZFwiLCBcImVycm9yXCIsIFwiYWJvcnRlZFwiXSlcbiAgLmRlc2NyaWJlKFwiUmVxdWVzdExvZ1N0YXR1c1wiKTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTdGF0dXMgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nU3RhdHVzPjtcbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nU3RhdHVzTGFiZWwgPSB7XG4gIHJ1bm5pbmc6IFwi7Iuk7ZaJIOykkVwiLFxuICBzdWNjZWVkZWQ6IFwi7ISx6rO1XCIsXG4gIGVycm9yOiBcIuyXkOufrFwiLFxuICBhYm9ydGVkOiBcIuykkeuLqFwiLFxufTtcblxuLy8gRW51bXM6IFJlcXVlc3RMb2dTdGVwXG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1N0ZXBUeXBlID0gei5lbnVtKFtcImdlbmVyYXRlXCIsIFwidG9vbF9jYWxsXCJdKS5kZXNjcmliZShcIlJlcXVlc3RMb2dTdGVwVHlwZVwiKTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTdGVwVHlwZSA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dTdGVwVHlwZT47XG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1N0ZXBUeXBlTGFiZWwgPSB7IGdlbmVyYXRlOiBcIkxMTSDsg53shLFcIiwgdG9vbF9jYWxsOiBcIlRvb2wg7Zi47LacXCIgfTtcbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nU3RlcE9yZGVyQnkgPSB6LmVudW0oW1wiaWQtYXNjXCJdKS5kZXNjcmliZShcIlJlcXVlc3RMb2dTdGVwT3JkZXJCeVwiKTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTdGVwT3JkZXJCeSA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dTdGVwT3JkZXJCeT47XG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1N0ZXBPcmRlckJ5TGFiZWwgPSB7IFwiaWQtYXNjXCI6IFwiSUTsiJxcIiB9O1xuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dTdGVwU2VhcmNoRmllbGQgPSB6LmVudW0oW1wiaWRcIl0pLmRlc2NyaWJlKFwiUmVxdWVzdExvZ1N0ZXBTZWFyY2hGaWVsZFwiKTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTdGVwU2VhcmNoRmllbGQgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nU3RlcFNlYXJjaEZpZWxkPjtcbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nU3RlcFNlYXJjaEZpZWxkTGFiZWwgPSB7IGlkOiBcIklEXCIgfTtcblxuLy8gRW51bXM6IFNldHRpbmdcbmV4cG9ydCBjb25zdCBTZXR0aW5nT3JkZXJCeSA9IHouZW51bShbXCJrZXktYXNjXCJdKS5kZXNjcmliZShcIlNldHRpbmdPcmRlckJ5XCIpO1xuZXhwb3J0IHR5cGUgU2V0dGluZ09yZGVyQnkgPSB6LmluZmVyPHR5cGVvZiBTZXR0aW5nT3JkZXJCeT47XG5leHBvcnQgY29uc3QgU2V0dGluZ09yZGVyQnlMYWJlbCA9IHsgXCJrZXktYXNjXCI6IFwi7YKk7IicXCIgfTtcbmV4cG9ydCBjb25zdCBTZXR0aW5nU2VhcmNoRmllbGQgPSB6LmVudW0oW1wia2V5XCJdKS5kZXNjcmliZShcIlNldHRpbmdTZWFyY2hGaWVsZFwiKTtcbmV4cG9ydCB0eXBlIFNldHRpbmdTZWFyY2hGaWVsZCA9IHouaW5mZXI8dHlwZW9mIFNldHRpbmdTZWFyY2hGaWVsZD47XG5leHBvcnQgY29uc3QgU2V0dGluZ1NlYXJjaEZpZWxkTGFiZWwgPSB7IGtleTogXCLtgqRcIiB9O1xuXG4vLyBFbnVtczogVG9rZW5cbmV4cG9ydCBjb25zdCBUb2tlbk9yZGVyQnkgPSB6LmVudW0oW1wiaWQtZGVzY1wiLCBcIm9yZC1hc2NcIl0pLmRlc2NyaWJlKFwiVG9rZW5PcmRlckJ5XCIpO1xuZXhwb3J0IHR5cGUgVG9rZW5PcmRlckJ5ID0gei5pbmZlcjx0eXBlb2YgVG9rZW5PcmRlckJ5PjtcbmV4cG9ydCBjb25zdCBUb2tlbk9yZGVyQnlMYWJlbCA9IHsgXCJpZC1kZXNjXCI6IFwiSUTstZzsi6DsiJxcIiwgXCJvcmQtYXNjXCI6IFwi7Iic7ISc7IicXCIgfTtcbmV4cG9ydCBjb25zdCBUb2tlblNlYXJjaEZpZWxkID0gei5lbnVtKFtcImlkXCIsIFwibmFtZVwiXSkuZGVzY3JpYmUoXCJUb2tlblNlYXJjaEZpZWxkXCIpO1xuZXhwb3J0IHR5cGUgVG9rZW5TZWFyY2hGaWVsZCA9IHouaW5mZXI8dHlwZW9mIFRva2VuU2VhcmNoRmllbGQ+O1xuZXhwb3J0IGNvbnN0IFRva2VuU2VhcmNoRmllbGRMYWJlbCA9IHsgaWQ6IFwiSURcIiwgbmFtZTogXCLsnbTrpoRcIiB9O1xuXG4vLyBCYXNlU2NoZW1hOiBSZXF1ZXN0TG9nXG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ0Jhc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LmludCgpLFxuICBjcmVhdGVkX2F0OiB6LmRhdGUoKSxcbiAgdG9rZW5fbmFtZTogei5zdHJpbmcoKS5tYXgoMTAwKS5udWxsYWJsZSgpLFxuICBwcm9qZWN0X25hbWU6IHouc3RyaW5nKCkubWF4KDUwKS5udWxsYWJsZSgpLFxuICBtb2RlbF9uYW1lOiB6LnN0cmluZygpLm1heCgyNTUpLm51bGxhYmxlKCksXG4gIHJlcXVlc3RlZF9tb2RlbF9uYW1lOiB6LnN0cmluZygpLm1heCgyNTUpLm51bGxhYmxlKCksXG4gIGZhbGxiYWNrX2NvdW50OiB6LmludCgpLm51bGxhYmxlKCksXG4gIHVzZXJfcHJvbXB0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHN5c3RlbV9wcm9tcHQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgcmVzcG9uc2U6IHouc3RyaW5nKCksXG4gIGlucHV0X3Rva2Vuczogei5pbnQoKSxcbiAgb3V0cHV0X3Rva2Vuczogei5pbnQoKSxcbiAgY2FjaGVfcmVhZF90b2tlbnM6IHouaW50KCksXG4gIGNhY2hlX2NyZWF0aW9uX3Rva2Vuczogei5pbnQoKSxcbiAgY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBkdXJhdGlvbl9tczogei5pbnQoKSxcbiAgdHRmdF9tczogei5pbnQoKSxcbiAgY29zdF91c2Q6IHouaW50KCkubnVsbGFibGUoKSxcbiAgY29zdF9zb3VyY2U6IHouc3RyaW5nKCkubWF4KDIwKS5udWxsYWJsZSgpLFxuICBpbWFnZV9jb3N0X3VzZDogei5pbnQoKS5udWxsYWJsZSgpLFxuICBpbWFnZV9jb3N0X21ldGhvZDogei5zdHJpbmcoKS5tYXgoMTAwKS5udWxsYWJsZSgpLFxuICBlZmZvcnQ6IHouc3RyaW5nKCkubWF4KDEwKS5udWxsYWJsZSgpLFxuICBoaXN0b3J5OiBIaXN0b3J5SXRlbXMubnVsbGFibGUoKSxcbiAgdG9vbHM6IFRvb2xEZWZpbml0aW9ucy5udWxsYWJsZSgpLFxuICBqc29uX3NjaGVtYTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBzdGF0dXM6IFJlcXVlc3RMb2dTdGF0dXMsXG4gIGVycm9yX21lc3NhZ2U6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgcmVzcG9uc2VfanNvbl9vazogei5ib29sZWFuKCkubnVsbGFibGUoKSxcbiAgdG9vbF9jYWxsX2NvdW50OiB6LmludCgpLFxuICBpc19pbWFnZV9nZW5lcmF0aW9uOiB6LmJvb2xlYW4oKSxcbiAgaXNfc3RydWN0dXJlZDogei5ib29sZWFuKCksXG59KTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dCYXNlU2NoZW1hID0gei5pbmZlcjx0eXBlb2YgUmVxdWVzdExvZ0Jhc2VTY2hlbWE+ICYge1xuICByZWFkb25seSBfX2hhc0RlZmF1bHRfXzogcmVhZG9ubHkgW1xuICAgIFwiY3JlYXRlZF9hdFwiLFxuICAgIFwidG9rZW5fbmFtZVwiLFxuICAgIFwicHJvamVjdF9uYW1lXCIsXG4gICAgXCJtb2RlbF9uYW1lXCIsXG4gICAgXCJyZXF1ZXN0ZWRfbW9kZWxfbmFtZVwiLFxuICAgIFwiZmFsbGJhY2tfY291bnRcIixcbiAgICBcInVzZXJfcHJvbXB0XCIsXG4gICAgXCJzeXN0ZW1fcHJvbXB0XCIsXG4gICAgXCJyZXNwb25zZVwiLFxuICAgIFwiaW5wdXRfdG9rZW5zXCIsXG4gICAgXCJvdXRwdXRfdG9rZW5zXCIsXG4gICAgXCJjYWNoZV9yZWFkX3Rva2Vuc1wiLFxuICAgIFwiY2FjaGVfY3JlYXRpb25fdG9rZW5zXCIsXG4gICAgXCJjYWNoZV9jcmVhdGlvbl81bV90b2tlbnNcIixcbiAgICBcImNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuc1wiLFxuICAgIFwiZHVyYXRpb25fbXNcIixcbiAgICBcInR0ZnRfbXNcIixcbiAgICBcImNvc3RfdXNkXCIsXG4gICAgXCJjb3N0X3NvdXJjZVwiLFxuICAgIFwiaW1hZ2VfY29zdF91c2RcIixcbiAgICBcImltYWdlX2Nvc3RfbWV0aG9kXCIsXG4gICAgXCJlZmZvcnRcIixcbiAgICBcImhpc3RvcnlcIixcbiAgICBcInRvb2xzXCIsXG4gICAgXCJqc29uX3NjaGVtYVwiLFxuICAgIFwic3RhdHVzXCIsXG4gICAgXCJlcnJvcl9tZXNzYWdlXCIsXG4gICAgXCJyZXNwb25zZV9qc29uX29rXCIsXG4gICAgXCJ0b29sX2NhbGxfY291bnRcIixcbiAgICBcImlzX2ltYWdlX2dlbmVyYXRpb25cIixcbiAgICBcImlzX3N0cnVjdHVyZWRcIixcbiAgICBcImlkXCIsXG4gIF07XG59O1xuXG4vLyBCYXNlU2NoZW1hOiBSZXF1ZXN0TG9nU3RlcFxuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dTdGVwQmFzZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgaWQ6IHouaW50KCksXG4gIGNyZWF0ZWRfYXQ6IHouZGF0ZSgpLFxuICByZXF1ZXN0X2xvZ19pZDogei5pbnQoKSxcbiAgc3RlcF9pbmRleDogei5pbnQoKSxcbiAgdHlwZTogUmVxdWVzdExvZ1N0ZXBUeXBlLFxuICBtb2RlbF9uYW1lOiB6LnN0cmluZygpLm1heCgyNTUpLm51bGxhYmxlKCksXG4gIHJlcXVlc3RlZF9tb2RlbF9uYW1lOiB6LnN0cmluZygpLm1heCgyNTUpLm51bGxhYmxlKCksXG4gIGZhbGxiYWNrX2NvdW50OiB6LmludCgpLm51bGxhYmxlKCksXG4gIGlucHV0X3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBvdXRwdXRfdG9rZW5zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNhY2hlX3JlYWRfdG9rZW5zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNhY2hlX2NyZWF0aW9uX3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNvc3RfdXNkOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNvc3Rfc291cmNlOiB6LnN0cmluZygpLm1heCgyMCkubnVsbGFibGUoKSxcbiAgZHVyYXRpb25fbXM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgdHRmdF9tczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBmaW5pc2hfcmVhc29uOiB6LnN0cmluZygpLm1heCgyMCkubnVsbGFibGUoKSxcbiAgcmVhc29uaW5nX3RleHQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgcmVhc29uaW5nX3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICB0b29sX2NhbGxfaW5kZXg6IHouaW50KCkubnVsbGFibGUoKSxcbiAgdG9vbF9jYWxsX2lkOiB6LnN0cmluZygpLm1heCgxMDApLm51bGxhYmxlKCksXG4gIHRvb2xfbmFtZTogei5zdHJpbmcoKS5tYXgoMTAwKS5udWxsYWJsZSgpLFxuICB0b29sX2FyZ3M6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgdG9vbF9yZXN1bHQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgdG9vbF9kdXJhdGlvbl9tczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBlcnJvcjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxufSk7XG5leHBvcnQgdHlwZSBSZXF1ZXN0TG9nU3RlcEJhc2VTY2hlbWEgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nU3RlcEJhc2VTY2hlbWE+ICYge1xuICByZWFkb25seSBfX2hhc0RlZmF1bHRfXzogcmVhZG9ubHkgW1xuICAgIFwiY3JlYXRlZF9hdFwiLFxuICAgIFwibW9kZWxfbmFtZVwiLFxuICAgIFwicmVxdWVzdGVkX21vZGVsX25hbWVcIixcbiAgICBcImZhbGxiYWNrX2NvdW50XCIsXG4gICAgXCJpbnB1dF90b2tlbnNcIixcbiAgICBcIm91dHB1dF90b2tlbnNcIixcbiAgICBcImNhY2hlX3JlYWRfdG9rZW5zXCIsXG4gICAgXCJjYWNoZV9jcmVhdGlvbl90b2tlbnNcIixcbiAgICBcImNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiLFxuICAgIFwiY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zXCIsXG4gICAgXCJjb3N0X3VzZFwiLFxuICAgIFwiY29zdF9zb3VyY2VcIixcbiAgICBcImR1cmF0aW9uX21zXCIsXG4gICAgXCJ0dGZ0X21zXCIsXG4gICAgXCJmaW5pc2hfcmVhc29uXCIsXG4gICAgXCJyZWFzb25pbmdfdGV4dFwiLFxuICAgIFwicmVhc29uaW5nX3Rva2Vuc1wiLFxuICAgIFwidG9vbF9jYWxsX2luZGV4XCIsXG4gICAgXCJ0b29sX2NhbGxfaWRcIixcbiAgICBcInRvb2xfbmFtZVwiLFxuICAgIFwidG9vbF9hcmdzXCIsXG4gICAgXCJ0b29sX3Jlc3VsdFwiLFxuICAgIFwidG9vbF9kdXJhdGlvbl9tc1wiLFxuICAgIFwiZXJyb3JcIixcbiAgICBcImlkXCIsXG4gIF07XG59O1xuXG4vLyBCYXNlU2NoZW1hOiBTZXR0aW5nXG5leHBvcnQgY29uc3QgU2V0dGluZ0Jhc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LmludCgpLFxuICBjcmVhdGVkX2F0OiB6LmRhdGUoKSxcbiAga2V5OiB6LnN0cmluZygpLm1heCgxMDApLFxuICB2YWx1ZTogei5zdHJpbmcoKSxcbiAgdXBkYXRlZF9hdDogei5kYXRlKCkubnVsbGFibGUoKSxcbn0pO1xuZXhwb3J0IHR5cGUgU2V0dGluZ0Jhc2VTY2hlbWEgPSB6LmluZmVyPHR5cGVvZiBTZXR0aW5nQmFzZVNjaGVtYT4gJiB7XG4gIHJlYWRvbmx5IF9faGFzRGVmYXVsdF9fOiByZWFkb25seSBbXCJjcmVhdGVkX2F0XCIsIFwidXBkYXRlZF9hdFwiLCBcImlkXCJdO1xufTtcblxuLy8gQmFzZVNjaGVtYTogVG9rZW5cbmV4cG9ydCBjb25zdCBUb2tlbkJhc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LmludCgpLFxuICBjcmVhdGVkX2F0OiB6LmRhdGUoKSxcbiAgcHJvdmlkZXI6IHouc3RyaW5nKCkubWF4KDIwKSxcbiAgY3JlZGVudGlhbHM6IFRva2VuQ3JlZGVudGlhbHMsXG4gIG5hbWU6IHouc3RyaW5nKCksXG4gIGFjdGl2ZTogei5ib29sZWFuKCksXG4gIHJlYXV0aF9yZXF1aXJlZDogei5ib29sZWFuKCksXG4gIG9yZDogei5pbnQoKSxcbiAgcXVvdGFfdGhyZXNob2xkOiB6LmludCgpLm51bGxhYmxlKCksXG4gIHdlaWdodDogei5pbnQoKSxcbiAga2VlcGFsaXZlX2VuYWJsZWQ6IHouYm9vbGVhbigpLFxufSk7XG5leHBvcnQgdHlwZSBUb2tlbkJhc2VTY2hlbWEgPSB6LmluZmVyPHR5cGVvZiBUb2tlbkJhc2VTY2hlbWE+ICYge1xuICByZWFkb25seSBfX2hhc0RlZmF1bHRfXzogcmVhZG9ubHkgW1xuICAgIFwiY3JlYXRlZF9hdFwiLFxuICAgIFwiYWN0aXZlXCIsXG4gICAgXCJyZWF1dGhfcmVxdWlyZWRcIixcbiAgICBcIm9yZFwiLFxuICAgIFwicXVvdGFfdGhyZXNob2xkXCIsXG4gICAgXCJ3ZWlnaHRcIixcbiAgICBcImtlZXBhbGl2ZV9lbmFibGVkXCIsXG4gICAgXCJpZFwiLFxuICBdO1xufTtcblxuLy8gQmFzZUxpc3RQYXJhbXM6IFJlcXVlc3RMb2dcbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nQmFzZUxpc3RQYXJhbXMgPSB6XG4gIC5vYmplY3Qoe1xuICAgIG51bTogei5udW1iZXIoKS5pbnQoKS5ub25uZWdhdGl2ZSgpLFxuICAgIHBhZ2U6IHoubnVtYmVyKCkuaW50KCkubWluKDEpLFxuICAgIHNlYXJjaDogUmVxdWVzdExvZ1NlYXJjaEZpZWxkLFxuICAgIGtleXdvcmQ6IHouc3RyaW5nKCksXG4gICAgb3JkZXJCeTogUmVxdWVzdExvZ09yZGVyQnksXG4gICAgcXVlcnlNb2RlOiBTb25hbXVRdWVyeU1vZGUsXG4gICAgaWQ6IHpBcnJheWFibGUoei5udW1iZXIoKS5pbnQoKS5wb3NpdGl2ZSgpKSxcbiAgICBzb25hbXVGaWx0ZXI6IHouY3VzdG9tPEFwcGx5U29uYW11RmlsdGVyPFJlcXVlc3RMb2dCYXNlU2NoZW1hLCBuZXZlciwgbmV2ZXI+PigpLFxuICAgIHRva2VuX25hbWU6IHouc3RyaW5nKCkubWF4KDEwMCkubnVsbGFibGUoKSxcbiAgICBwcm9qZWN0X25hbWU6IHouc3RyaW5nKCkubWF4KDUwKS5udWxsYWJsZSgpLFxuICAgIG1vZGVsX25hbWU6IHouc3RyaW5nKCkubWF4KDI1NSkubnVsbGFibGUoKSxcbiAgfSlcbiAgLnBhcnRpYWwoKTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dCYXNlTGlzdFBhcmFtcyA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dCYXNlTGlzdFBhcmFtcz47XG5cbi8vIEJhc2VMaXN0UGFyYW1zOiBSZXF1ZXN0TG9nU3RlcFxuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dTdGVwQmFzZUxpc3RQYXJhbXMgPSB6XG4gIC5vYmplY3Qoe1xuICAgIG51bTogei5udW1iZXIoKS5pbnQoKS5ub25uZWdhdGl2ZSgpLFxuICAgIHBhZ2U6IHoubnVtYmVyKCkuaW50KCkubWluKDEpLFxuICAgIHNlYXJjaDogUmVxdWVzdExvZ1N0ZXBTZWFyY2hGaWVsZCxcbiAgICBrZXl3b3JkOiB6LnN0cmluZygpLFxuICAgIG9yZGVyQnk6IFJlcXVlc3RMb2dTdGVwT3JkZXJCeSxcbiAgICBxdWVyeU1vZGU6IFNvbmFtdVF1ZXJ5TW9kZSxcbiAgICBpZDogekFycmF5YWJsZSh6Lm51bWJlcigpLmludCgpLnBvc2l0aXZlKCkpLFxuICAgIHNvbmFtdUZpbHRlcjogei5jdXN0b208QXBwbHlTb25hbXVGaWx0ZXI8UmVxdWVzdExvZ1N0ZXBCYXNlU2NoZW1hLCBuZXZlciwgbmV2ZXI+PigpLFxuICAgIHJlcXVlc3RfbG9nX2lkOiB6LmludCgpLFxuICB9KVxuICAucGFydGlhbCgpO1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ1N0ZXBCYXNlTGlzdFBhcmFtcyA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dTdGVwQmFzZUxpc3RQYXJhbXM+O1xuXG4vLyBCYXNlTGlzdFBhcmFtczogU2V0dGluZ1xuZXhwb3J0IGNvbnN0IFNldHRpbmdCYXNlTGlzdFBhcmFtcyA9IHpcbiAgLm9iamVjdCh7XG4gICAgbnVtOiB6Lm51bWJlcigpLmludCgpLm5vbm5lZ2F0aXZlKCksXG4gICAgcGFnZTogei5udW1iZXIoKS5pbnQoKS5taW4oMSksXG4gICAgc2VhcmNoOiBTZXR0aW5nU2VhcmNoRmllbGQsXG4gICAga2V5d29yZDogei5zdHJpbmcoKSxcbiAgICBvcmRlckJ5OiBTZXR0aW5nT3JkZXJCeSxcbiAgICBxdWVyeU1vZGU6IFNvbmFtdVF1ZXJ5TW9kZSxcbiAgICBpZDogekFycmF5YWJsZSh6Lm51bWJlcigpLmludCgpLnBvc2l0aXZlKCkpLFxuICAgIHNvbmFtdUZpbHRlcjogei5jdXN0b208QXBwbHlTb25hbXVGaWx0ZXI8U2V0dGluZ0Jhc2VTY2hlbWEsIG5ldmVyLCBuZXZlcj4+KCksXG4gICAga2V5OiB6LnN0cmluZygpLm1heCgxMDApLFxuICB9KVxuICAucGFydGlhbCgpO1xuZXhwb3J0IHR5cGUgU2V0dGluZ0Jhc2VMaXN0UGFyYW1zID0gei5pbmZlcjx0eXBlb2YgU2V0dGluZ0Jhc2VMaXN0UGFyYW1zPjtcblxuLy8gQmFzZUxpc3RQYXJhbXM6IFRva2VuXG5leHBvcnQgY29uc3QgVG9rZW5CYXNlTGlzdFBhcmFtcyA9IHpcbiAgLm9iamVjdCh7XG4gICAgbnVtOiB6Lm51bWJlcigpLmludCgpLm5vbm5lZ2F0aXZlKCksXG4gICAgcGFnZTogei5udW1iZXIoKS5pbnQoKS5taW4oMSksXG4gICAgc2VhcmNoOiBUb2tlblNlYXJjaEZpZWxkLFxuICAgIGtleXdvcmQ6IHouc3RyaW5nKCksXG4gICAgb3JkZXJCeTogVG9rZW5PcmRlckJ5LFxuICAgIHF1ZXJ5TW9kZTogU29uYW11UXVlcnlNb2RlLFxuICAgIGlkOiB6QXJyYXlhYmxlKHoubnVtYmVyKCkuaW50KCkucG9zaXRpdmUoKSksXG4gICAgc29uYW11RmlsdGVyOiB6LmN1c3RvbTxBcHBseVNvbmFtdUZpbHRlcjxUb2tlbkJhc2VTY2hlbWEsIG5ldmVyLCBuZXZlcj4+KCksXG4gIH0pXG4gIC5wYXJ0aWFsKCk7XG5leHBvcnQgdHlwZSBUb2tlbkJhc2VMaXN0UGFyYW1zID0gei5pbmZlcjx0eXBlb2YgVG9rZW5CYXNlTGlzdFBhcmFtcz47XG5cbi8vIFN1YnNldHM6IFJlcXVlc3RMb2dcbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nU3Vic2V0QSA9IHoub2JqZWN0KHtcbiAgaWQ6IHouaW50KCksXG4gIGNyZWF0ZWRfYXQ6IHouZGF0ZSgpLFxuICB0b2tlbl9uYW1lOiB6LnN0cmluZygpLm1heCgxMDApLm51bGxhYmxlKCksXG4gIHByb2plY3RfbmFtZTogei5zdHJpbmcoKS5tYXgoNTApLm51bGxhYmxlKCksXG4gIG1vZGVsX25hbWU6IHouc3RyaW5nKCkubWF4KDI1NSkubnVsbGFibGUoKSxcbiAgcmVxdWVzdGVkX21vZGVsX25hbWU6IHouc3RyaW5nKCkubWF4KDI1NSkubnVsbGFibGUoKSxcbiAgZmFsbGJhY2tfY291bnQ6IHouaW50KCkubnVsbGFibGUoKSxcbiAgdXNlcl9wcm9tcHQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgc3lzdGVtX3Byb21wdDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICByZXNwb25zZTogei5zdHJpbmcoKSxcbiAgaW5wdXRfdG9rZW5zOiB6LmludCgpLFxuICBvdXRwdXRfdG9rZW5zOiB6LmludCgpLFxuICBjYWNoZV9yZWFkX3Rva2Vuczogei5pbnQoKSxcbiAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiB6LmludCgpLFxuICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGR1cmF0aW9uX21zOiB6LmludCgpLFxuICB0dGZ0X21zOiB6LmludCgpLFxuICBjb3N0X3VzZDogei5pbnQoKS5udWxsYWJsZSgpLFxuICBjb3N0X3NvdXJjZTogei5zdHJpbmcoKS5tYXgoMjApLm51bGxhYmxlKCksXG4gIGltYWdlX2Nvc3RfdXNkOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGltYWdlX2Nvc3RfbWV0aG9kOiB6LnN0cmluZygpLm1heCgxMDApLm51bGxhYmxlKCksXG4gIGVmZm9ydDogei5zdHJpbmcoKS5tYXgoMTApLm51bGxhYmxlKCksXG4gIGhpc3Rvcnk6IEhpc3RvcnlJdGVtcy5udWxsYWJsZSgpLFxuICB0b29sczogVG9vbERlZmluaXRpb25zLm51bGxhYmxlKCksXG4gIHN0YXR1czogUmVxdWVzdExvZ1N0YXR1cyxcbiAgcmVzcG9uc2VfanNvbl9vazogei5ib29sZWFuKCkubnVsbGFibGUoKSxcbiAgZXJyb3JfbWVzc2FnZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICB0b29sX2NhbGxfY291bnQ6IHouaW50KCksXG4gIGlzX2ltYWdlX2dlbmVyYXRpb246IHouYm9vbGVhbigpLFxuICBpc19zdHJ1Y3R1cmVkOiB6LmJvb2xlYW4oKSxcbn0pO1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ1N1YnNldEEgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nU3Vic2V0QT47XG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1N1YnNldFAgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LmludCgpLFxuICBjcmVhdGVkX2F0OiB6LmRhdGUoKSxcbiAgdG9rZW5fbmFtZTogei5zdHJpbmcoKS5tYXgoMTAwKS5udWxsYWJsZSgpLFxuICBwcm9qZWN0X25hbWU6IHouc3RyaW5nKCkubWF4KDUwKS5udWxsYWJsZSgpLFxuICBtb2RlbF9uYW1lOiB6LnN0cmluZygpLm1heCgyNTUpLm51bGxhYmxlKCksXG4gIHJlcXVlc3RlZF9tb2RlbF9uYW1lOiB6LnN0cmluZygpLm1heCgyNTUpLm51bGxhYmxlKCksXG4gIGZhbGxiYWNrX2NvdW50OiB6LmludCgpLm51bGxhYmxlKCksXG4gIGlucHV0X3Rva2Vuczogei5pbnQoKSxcbiAgb3V0cHV0X3Rva2Vuczogei5pbnQoKSxcbiAgY2FjaGVfcmVhZF90b2tlbnM6IHouaW50KCksXG4gIGNhY2hlX2NyZWF0aW9uX3Rva2Vuczogei5pbnQoKSxcbiAgY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBkdXJhdGlvbl9tczogei5pbnQoKSxcbiAgdHRmdF9tczogei5pbnQoKSxcbiAgY29zdF91c2Q6IHouaW50KCkubnVsbGFibGUoKSxcbiAgY29zdF9zb3VyY2U6IHouc3RyaW5nKCkubWF4KDIwKS5udWxsYWJsZSgpLFxuICBpbWFnZV9jb3N0X3VzZDogei5pbnQoKS5udWxsYWJsZSgpLFxuICBpbWFnZV9jb3N0X21ldGhvZDogei5zdHJpbmcoKS5tYXgoMTAwKS5udWxsYWJsZSgpLFxuICBlZmZvcnQ6IHouc3RyaW5nKCkubWF4KDEwKS5udWxsYWJsZSgpLFxuICBzdGF0dXM6IFJlcXVlc3RMb2dTdGF0dXMsXG4gIHJlc3BvbnNlX2pzb25fb2s6IHouYm9vbGVhbigpLm51bGxhYmxlKCksXG4gIHRvb2xfY2FsbF9jb3VudDogei5pbnQoKSxcbiAgaXNfaW1hZ2VfZ2VuZXJhdGlvbjogei5ib29sZWFuKCksXG4gIGlzX3N0cnVjdHVyZWQ6IHouYm9vbGVhbigpLFxufSk7XG5leHBvcnQgdHlwZSBSZXF1ZXN0TG9nU3Vic2V0UCA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dTdWJzZXRQPjtcbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nU3Vic2V0QyA9IHoub2JqZWN0KHtcbiAgaWQ6IHouaW50KCksXG4gIHRva2VuX25hbWU6IHouc3RyaW5nKCkubWF4KDEwMCkubnVsbGFibGUoKSxcbiAgbW9kZWxfbmFtZTogei5zdHJpbmcoKS5tYXgoMjU1KS5udWxsYWJsZSgpLFxuICBpbnB1dF90b2tlbnM6IHouaW50KCksXG4gIG91dHB1dF90b2tlbnM6IHouaW50KCksXG4gIGNhY2hlX3JlYWRfdG9rZW5zOiB6LmludCgpLFxuICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IHouaW50KCksXG4gIGNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgY29zdF91c2Q6IHouaW50KCkubnVsbGFibGUoKSxcbiAgY29zdF9zb3VyY2U6IHouc3RyaW5nKCkubWF4KDIwKS5udWxsYWJsZSgpLFxufSk7XG5leHBvcnQgdHlwZSBSZXF1ZXN0TG9nU3Vic2V0QyA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dTdWJzZXRDPjtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTdWJzZXRNYXBwaW5nID0ge1xuICBBOiBSZXF1ZXN0TG9nU3Vic2V0QTtcbiAgUDogUmVxdWVzdExvZ1N1YnNldFA7XG4gIEM6IFJlcXVlc3RMb2dTdWJzZXRDO1xufTtcbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nU3Vic2V0S2V5ID0gei5lbnVtKFtcIkFcIiwgXCJQXCIsIFwiQ1wiXSk7XG5leHBvcnQgdHlwZSBSZXF1ZXN0TG9nU3Vic2V0S2V5ID0gei5pbmZlcjx0eXBlb2YgUmVxdWVzdExvZ1N1YnNldEtleT47XG5cbi8vIFN1YnNldHM6IFJlcXVlc3RMb2dTdGVwXG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1N0ZXBTdWJzZXRBID0gei5vYmplY3Qoe1xuICBpZDogei5pbnQoKSxcbiAgY3JlYXRlZF9hdDogei5kYXRlKCksXG4gIHN0ZXBfaW5kZXg6IHouaW50KCksXG4gIHR5cGU6IFJlcXVlc3RMb2dTdGVwVHlwZSxcbiAgbW9kZWxfbmFtZTogei5zdHJpbmcoKS5tYXgoMjU1KS5udWxsYWJsZSgpLFxuICByZXF1ZXN0ZWRfbW9kZWxfbmFtZTogei5zdHJpbmcoKS5tYXgoMjU1KS5udWxsYWJsZSgpLFxuICBmYWxsYmFja19jb3VudDogei5pbnQoKS5udWxsYWJsZSgpLFxuICBpbnB1dF90b2tlbnM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgb3V0cHV0X3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBjYWNoZV9yZWFkX3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBjb3N0X3VzZDogei5pbnQoKS5udWxsYWJsZSgpLFxuICBjb3N0X3NvdXJjZTogei5zdHJpbmcoKS5tYXgoMjApLm51bGxhYmxlKCksXG4gIGR1cmF0aW9uX21zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIHR0ZnRfbXM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgZmluaXNoX3JlYXNvbjogei5zdHJpbmcoKS5tYXgoMjApLm51bGxhYmxlKCksXG4gIHJlYXNvbmluZ190ZXh0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHJlYXNvbmluZ190b2tlbnM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgdG9vbF9jYWxsX2luZGV4OiB6LmludCgpLm51bGxhYmxlKCksXG4gIHRvb2xfY2FsbF9pZDogei5zdHJpbmcoKS5tYXgoMTAwKS5udWxsYWJsZSgpLFxuICB0b29sX25hbWU6IHouc3RyaW5nKCkubWF4KDEwMCkubnVsbGFibGUoKSxcbiAgdG9vbF9hcmdzOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHRvb2xfcmVzdWx0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHRvb2xfZHVyYXRpb25fbXM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgZXJyb3I6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbn0pO1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ1N0ZXBTdWJzZXRBID0gei5pbmZlcjx0eXBlb2YgUmVxdWVzdExvZ1N0ZXBTdWJzZXRBPjtcbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nU3RlcFN1YnNldFQgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LmludCgpLFxuICBjcmVhdGVkX2F0OiB6LmRhdGUoKSxcbiAgc3RlcF9pbmRleDogei5pbnQoKSxcbiAgdHlwZTogUmVxdWVzdExvZ1N0ZXBUeXBlLFxuICBtb2RlbF9uYW1lOiB6LnN0cmluZygpLm1heCgyNTUpLm51bGxhYmxlKCksXG4gIHJlcXVlc3RlZF9tb2RlbF9uYW1lOiB6LnN0cmluZygpLm1heCgyNTUpLm51bGxhYmxlKCksXG4gIGZhbGxiYWNrX2NvdW50OiB6LmludCgpLm51bGxhYmxlKCksXG4gIGlucHV0X3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBvdXRwdXRfdG9rZW5zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNhY2hlX3JlYWRfdG9rZW5zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNhY2hlX2NyZWF0aW9uX3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNvc3RfdXNkOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGNvc3Rfc291cmNlOiB6LnN0cmluZygpLm1heCgyMCkubnVsbGFibGUoKSxcbiAgZHVyYXRpb25fbXM6IHouaW50KCkubnVsbGFibGUoKSxcbiAgdHRmdF9tczogei5pbnQoKS5udWxsYWJsZSgpLFxuICBmaW5pc2hfcmVhc29uOiB6LnN0cmluZygpLm1heCgyMCkubnVsbGFibGUoKSxcbiAgcmVhc29uaW5nX3Rva2Vuczogei5pbnQoKS5udWxsYWJsZSgpLFxuICB0b29sX2NhbGxfaW5kZXg6IHouaW50KCkubnVsbGFibGUoKSxcbiAgdG9vbF9jYWxsX2lkOiB6LnN0cmluZygpLm1heCgxMDApLm51bGxhYmxlKCksXG4gIHRvb2xfbmFtZTogei5zdHJpbmcoKS5tYXgoMTAwKS5udWxsYWJsZSgpLFxuICB0b29sX2R1cmF0aW9uX21zOiB6LmludCgpLm51bGxhYmxlKCksXG4gIGVycm9yOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG59KTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTdGVwU3Vic2V0VCA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dTdGVwU3Vic2V0VD47XG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1N0ZXBTdWJzZXRJID0gei5vYmplY3Qoe1xuICBpZDogei5pbnQoKSxcbiAgdG9vbF9hcmdzOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG59KTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTdGVwU3Vic2V0SSA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dTdGVwU3Vic2V0ST47XG5leHBvcnQgdHlwZSBSZXF1ZXN0TG9nU3RlcFN1YnNldE1hcHBpbmcgPSB7XG4gIEE6IFJlcXVlc3RMb2dTdGVwU3Vic2V0QTtcbiAgVDogUmVxdWVzdExvZ1N0ZXBTdWJzZXRUO1xuICBJOiBSZXF1ZXN0TG9nU3RlcFN1YnNldEk7XG59O1xuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dTdGVwU3Vic2V0S2V5ID0gei5lbnVtKFtcIkFcIiwgXCJUXCIsIFwiSVwiXSk7XG5leHBvcnQgdHlwZSBSZXF1ZXN0TG9nU3RlcFN1YnNldEtleSA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dTdGVwU3Vic2V0S2V5PjtcblxuLy8gU3Vic2V0czogU2V0dGluZ1xuZXhwb3J0IGNvbnN0IFNldHRpbmdTdWJzZXRBID0gei5vYmplY3Qoe1xuICBpZDogei5pbnQoKSxcbiAgY3JlYXRlZF9hdDogei5kYXRlKCksXG4gIGtleTogei5zdHJpbmcoKS5tYXgoMTAwKSxcbiAgdmFsdWU6IHouc3RyaW5nKCksXG4gIHVwZGF0ZWRfYXQ6IHouZGF0ZSgpLm51bGxhYmxlKCksXG59KTtcbmV4cG9ydCB0eXBlIFNldHRpbmdTdWJzZXRBID0gei5pbmZlcjx0eXBlb2YgU2V0dGluZ1N1YnNldEE+O1xuZXhwb3J0IHR5cGUgU2V0dGluZ1N1YnNldE1hcHBpbmcgPSB7XG4gIEE6IFNldHRpbmdTdWJzZXRBO1xufTtcbmV4cG9ydCBjb25zdCBTZXR0aW5nU3Vic2V0S2V5ID0gei5lbnVtKFtcIkFcIl0pO1xuZXhwb3J0IHR5cGUgU2V0dGluZ1N1YnNldEtleSA9IHouaW5mZXI8dHlwZW9mIFNldHRpbmdTdWJzZXRLZXk+O1xuXG4vLyBTdWJzZXRzOiBUb2tlblxuZXhwb3J0IGNvbnN0IFRva2VuU3Vic2V0QSA9IHoub2JqZWN0KHtcbiAgaWQ6IHouaW50KCksXG4gIGNyZWF0ZWRfYXQ6IHouZGF0ZSgpLFxuICBwcm92aWRlcjogei5zdHJpbmcoKS5tYXgoMjApLFxuICBjcmVkZW50aWFsczogVG9rZW5DcmVkZW50aWFscyxcbiAgbmFtZTogei5zdHJpbmcoKSxcbiAgYWN0aXZlOiB6LmJvb2xlYW4oKSxcbiAgcmVhdXRoX3JlcXVpcmVkOiB6LmJvb2xlYW4oKSxcbiAgb3JkOiB6LmludCgpLFxuICBxdW90YV90aHJlc2hvbGQ6IHouaW50KCkubnVsbGFibGUoKSxcbiAgd2VpZ2h0OiB6LmludCgpLFxuICBrZWVwYWxpdmVfZW5hYmxlZDogei5ib29sZWFuKCksXG59KTtcbmV4cG9ydCB0eXBlIFRva2VuU3Vic2V0QSA9IHouaW5mZXI8dHlwZW9mIFRva2VuU3Vic2V0QT47XG5leHBvcnQgdHlwZSBUb2tlblN1YnNldE1hcHBpbmcgPSB7XG4gIEE6IFRva2VuU3Vic2V0QTtcbn07XG5leHBvcnQgY29uc3QgVG9rZW5TdWJzZXRLZXkgPSB6LmVudW0oW1wiQVwiXSk7XG5leHBvcnQgdHlwZSBUb2tlblN1YnNldEtleSA9IHouaW5mZXI8dHlwZW9m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
@@ -175,6 +175,7 @@ const tokenSubsetQueries = { A: (qbWrapper) => {
175
175
  credentials: "tokens.credentials",
176
176
  name: "tokens.name",
177
177
  active: "tokens.active",
178
+ reauth_required: "tokens.reauth_required",
178
179
  ord: "tokens.ord",
179
180
  quota_threshold: "tokens.quota_threshold",
180
181
  weight: "tokens.weight",
@@ -185,4 +186,4 @@ const tokenLoaderQueries = { A: [] };
185
186
  //#endregion
186
187
  export { requestLogLoaderQueries, requestLogStepLoaderQueries, requestLogStepSubsetQueries, requestLogSubsetQueries, settingLoaderQueries, settingSubsetQueries, tokenLoaderQueries, tokenSubsetQueries };
187
188
 
188
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29uYW11LmdlbmVyYXRlZC5zc28uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NvbmFtdS5nZW5lcmF0ZWQuc3NvLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGdlbmVyYXRlZFxuICog7KeB7KCRIOyImOygle2VmOyngCDrp4jshLjsmpQuXG4gKi9cblxuaW1wb3J0IHsgdHlwZSBQdXJpV3JhcHBlciwgdHlwZSBEYXRhYmFzZVNjaGVtYUV4dGVuZCwgdHlwZSBQdXJpTG9hZGVyUXVlcmllcyB9IGZyb20gXCJzb25hbXVcIjtcblxuaW1wb3J0IHtcbiAgdHlwZSBSZXF1ZXN0TG9nU3Vic2V0S2V5LFxuICB0eXBlIFJlcXVlc3RMb2dTdGVwU3Vic2V0S2V5LFxuICB0eXBlIFNldHRpbmdTdWJzZXRLZXksXG4gIHR5cGUgVG9rZW5TdWJzZXRLZXksXG4gIHR5cGUgUmVxdWVzdExvZ0Jhc2VTY2hlbWEsXG4gIHR5cGUgUmVxdWVzdExvZ1N0ZXBCYXNlU2NoZW1hLFxuICB0eXBlIFNldHRpbmdCYXNlU2NoZW1hLFxuICB0eXBlIFRva2VuQmFzZVNjaGVtYSxcbn0gZnJvbSBcIi4vc29uYW11LmdlbmVyYXRlZFwiO1xuXG4vLyBTdWJzZXRRdWVyeTogUmVxdWVzdExvZ1xuZXhwb3J0IGNvbnN0IHJlcXVlc3RMb2dTdWJzZXRRdWVyaWVzID0ge1xuICBBOiAocWJXcmFwcGVyOiBQdXJpV3JhcHBlcjxEYXRhYmFzZVNjaGVtYUV4dGVuZD4pID0+IHtcbiAgICByZXR1cm4gcWJXcmFwcGVyLmZyb20oXCJyZXF1ZXN0X2xvZ3NcIikuc2VsZWN0KHtcbiAgICAgIGlkOiBcInJlcXVlc3RfbG9ncy5pZFwiLFxuICAgICAgY3JlYXRlZF9hdDogXCJyZXF1ZXN0X2xvZ3MuY3JlYXRlZF9hdFwiLFxuICAgICAgdG9rZW5fbmFtZTogXCJyZXF1ZXN0X2xvZ3MudG9rZW5fbmFtZVwiLFxuICAgICAgcHJvamVjdF9uYW1lOiBcInJlcXVlc3RfbG9ncy5wcm9qZWN0X25hbWVcIixcbiAgICAgIG1vZGVsX25hbWU6IFwicmVxdWVzdF9sb2dzLm1vZGVsX25hbWVcIixcbiAgICAgIHJlcXVlc3RlZF9tb2RlbF9uYW1lOiBcInJlcXVlc3RfbG9ncy5yZXF1ZXN0ZWRfbW9kZWxfbmFtZVwiLFxuICAgICAgZmFsbGJhY2tfY291bnQ6IFwicmVxdWVzdF9sb2dzLmZhbGxiYWNrX2NvdW50XCIsXG4gICAgICB1c2VyX3Byb21wdDogXCJyZXF1ZXN0X2xvZ3MudXNlcl9wcm9tcHRcIixcbiAgICAgIHN5c3RlbV9wcm9tcHQ6IFwicmVxdWVzdF9sb2dzLnN5c3RlbV9wcm9tcHRcIixcbiAgICAgIHJlc3BvbnNlOiBcInJlcXVlc3RfbG9ncy5yZXNwb25zZVwiLFxuICAgICAgaW5wdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5pbnB1dF90b2tlbnNcIixcbiAgICAgIG91dHB1dF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLm91dHB1dF90b2tlbnNcIixcbiAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9yZWFkX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9jcmVhdGlvbl90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uXzVtX3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuc1wiLFxuICAgICAgZHVyYXRpb25fbXM6IFwicmVxdWVzdF9sb2dzLmR1cmF0aW9uX21zXCIsXG4gICAgICB0dGZ0X21zOiBcInJlcXVlc3RfbG9ncy50dGZ0X21zXCIsXG4gICAgICBjb3N0X3VzZDogXCJyZXF1ZXN0X2xvZ3MuY29zdF91c2RcIixcbiAgICAgIGNvc3Rfc291cmNlOiBcInJlcXVlc3RfbG9ncy5jb3N0X3NvdXJjZVwiLFxuICAgICAgaW1hZ2VfY29zdF91c2Q6IFwicmVxdWVzdF9sb2dzLmltYWdlX2Nvc3RfdXNkXCIsXG4gICAgICBpbWFnZV9jb3N0X21ldGhvZDogXCJyZXF1ZXN0X2xvZ3MuaW1hZ2VfY29zdF9tZXRob2RcIixcbiAgICAgIGVmZm9ydDogXCJyZXF1ZXN0X2xvZ3MuZWZmb3J0XCIsXG4gICAgICBoaXN0b3J5OiBcInJlcXVlc3RfbG9ncy5oaXN0b3J5XCIsXG4gICAgICB0b29sczogXCJyZXF1ZXN0X2xvZ3MudG9vbHNcIixcbiAgICAgIHN0YXR1czogXCJyZXF1ZXN0X2xvZ3Muc3RhdHVzXCIsXG4gICAgICByZXNwb25zZV9qc29uX29rOiBcInJlcXVlc3RfbG9ncy5yZXNwb25zZV9qc29uX29rXCIsXG4gICAgICBlcnJvcl9tZXNzYWdlOiBcInJlcXVlc3RfbG9ncy5lcnJvcl9tZXNzYWdlXCIsXG4gICAgICB0b29sX2NhbGxfY291bnQ6IFwicmVxdWVzdF9sb2dzLnRvb2xfY2FsbF9jb3VudFwiLFxuICAgICAgaXNfaW1hZ2VfZ2VuZXJhdGlvbjogXCJyZXF1ZXN0X2xvZ3MuaXNfaW1hZ2VfZ2VuZXJhdGlvblwiLFxuICAgICAgaXNfc3RydWN0dXJlZDogXCJyZXF1ZXN0X2xvZ3MuaXNfc3RydWN0dXJlZFwiLFxuICAgIH0pO1xuICB9LFxuICBQOiAocWJXcmFwcGVyOiBQdXJpV3JhcHBlcjxEYXRhYmFzZVNjaGVtYUV4dGVuZD4pID0+IHtcbiAgICByZXR1cm4gcWJXcmFwcGVyLmZyb20oXCJyZXF1ZXN0X2xvZ3NcIikuc2VsZWN0KHtcbiAgICAgIGlkOiBcInJlcXVlc3RfbG9ncy5pZFwiLFxuICAgICAgY3JlYXRlZF9hdDogXCJyZXF1ZXN0X2xvZ3MuY3JlYXRlZF9hdFwiLFxuICAgICAgdG9rZW5fbmFtZTogXCJyZXF1ZXN0X2xvZ3MudG9rZW5fbmFtZVwiLFxuICAgICAgcHJvamVjdF9uYW1lOiBcInJlcXVlc3RfbG9ncy5wcm9qZWN0X25hbWVcIixcbiAgICAgIG1vZGVsX25hbWU6IFwicmVxdWVzdF9sb2dzLm1vZGVsX25hbWVcIixcbiAgICAgIHJlcXVlc3RlZF9tb2RlbF9uYW1lOiBcInJlcXVlc3RfbG9ncy5yZXF1ZXN0ZWRfbW9kZWxfbmFtZVwiLFxuICAgICAgZmFsbGJhY2tfY291bnQ6IFwicmVxdWVzdF9sb2dzLmZhbGxiYWNrX2NvdW50XCIsXG4gICAgICBpbnB1dF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmlucHV0X3Rva2Vuc1wiLFxuICAgICAgb3V0cHV0X3Rva2VuczogXCJyZXF1ZXN0X2xvZ3Mub3V0cHV0X3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfcmVhZF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmNhY2hlX3JlYWRfdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmNhY2hlX2NyZWF0aW9uX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9jcmVhdGlvbl81bV90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uXzFoX3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zXCIsXG4gICAgICBkdXJhdGlvbl9tczogXCJyZXF1ZXN0X2xvZ3MuZHVyYXRpb25fbXNcIixcbiAgICAgIHR0ZnRfbXM6IFwicmVxdWVzdF9sb2dzLnR0ZnRfbXNcIixcbiAgICAgIGNvc3RfdXNkOiBcInJlcXVlc3RfbG9ncy5jb3N0X3VzZFwiLFxuICAgICAgY29zdF9zb3VyY2U6IFwicmVxdWVzdF9sb2dzLmNvc3Rfc291cmNlXCIsXG4gICAgICBpbWFnZV9jb3N0X3VzZDogXCJyZXF1ZXN0X2xvZ3MuaW1hZ2VfY29zdF91c2RcIixcbiAgICAgIGltYWdlX2Nvc3RfbWV0aG9kOiBcInJlcXVlc3RfbG9ncy5pbWFnZV9jb3N0X21ldGhvZFwiLFxuICAgICAgZWZmb3J0OiBcInJlcXVlc3RfbG9ncy5lZmZvcnRcIixcbiAgICAgIHN0YXR1czogXCJyZXF1ZXN0X2xvZ3Muc3RhdHVzXCIsXG4gICAgICByZXNwb25zZV9qc29uX29rOiBcInJlcXVlc3RfbG9ncy5yZXNwb25zZV9qc29uX29rXCIsXG4gICAgICB0b29sX2NhbGxfY291bnQ6IFwicmVxdWVzdF9sb2dzLnRvb2xfY2FsbF9jb3VudFwiLFxuICAgICAgaXNfaW1hZ2VfZ2VuZXJhdGlvbjogXCJyZXF1ZXN0X2xvZ3MuaXNfaW1hZ2VfZ2VuZXJhdGlvblwiLFxuICAgICAgaXNfc3RydWN0dXJlZDogXCJyZXF1ZXN0X2xvZ3MuaXNfc3RydWN0dXJlZFwiLFxuICAgIH0pO1xuICB9LFxuICBDOiAocWJXcmFwcGVyOiBQdXJpV3JhcHBlcjxEYXRhYmFzZVNjaGVtYUV4dGVuZD4pID0+IHtcbiAgICByZXR1cm4gcWJXcmFwcGVyLmZyb20oXCJyZXF1ZXN0X2xvZ3NcIikuc2VsZWN0KHtcbiAgICAgIGlkOiBcInJlcXVlc3RfbG9ncy5pZFwiLFxuICAgICAgdG9rZW5fbmFtZTogXCJyZXF1ZXN0X2xvZ3MudG9rZW5fbmFtZVwiLFxuICAgICAgbW9kZWxfbmFtZTogXCJyZXF1ZXN0X2xvZ3MubW9kZWxfbmFtZVwiLFxuICAgICAgaW5wdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5pbnB1dF90b2tlbnNcIixcbiAgICAgIG91dHB1dF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLm91dHB1dF90b2tlbnNcIixcbiAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9yZWFkX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9jcmVhdGlvbl90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uXzVtX3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuc1wiLFxuICAgICAgY29zdF91c2Q6IFwicmVxdWVzdF9sb2dzLmNvc3RfdXNkXCIsXG4gICAgICBjb3N0X3NvdXJjZTogXCJyZXF1ZXN0X2xvZ3MuY29zdF9zb3VyY2VcIixcbiAgICB9KTtcbiAgfSxcbn07XG5cbi8vIExvYWRlclF1ZXJ5OiBSZXF1ZXN0TG9nXG5leHBvcnQgY29uc3QgcmVxdWVzdExvZ0xvYWRlclF1ZXJpZXMgPSB7XG4gIEE6IFtdLFxuICBQOiBbXSxcbiAgQzogW10sXG59IGFzIGNvbnN0IHNhdGlzZmllcyBQdXJpTG9hZGVyUXVlcmllczxSZXF1ZXN0TG9nU3Vic2V0S2V5PjtcblxuLy8gU3Vic2V0UXVlcnk6IFJlcXVlc3RMb2dTdGVwXG5leHBvcnQgY29uc3QgcmVxdWVzdExvZ1N0ZXBTdWJzZXRRdWVyaWVzID0ge1xuICBBOiAocWJXcmFwcGVyOiBQdXJpV3JhcHBlcjxEYXRhYmFzZVNjaGVtYUV4dGVuZD4pID0+IHtcbiAgICByZXR1cm4gcWJXcmFwcGVyLmZyb20oXCJyZXF1ZXN0X2xvZ19zdGVwc1wiKS5zZWxlY3Qoe1xuICAgICAgaWQ6IFwicmVxdWVzdF9sb2dfc3RlcHMuaWRcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IFwicmVxdWVzdF9sb2dfc3RlcHMuY3JlYXRlZF9hdFwiLFxuICAgICAgc3RlcF9pbmRleDogXCJyZXF1ZXN0X2xvZ19zdGVwcy5zdGVwX2luZGV4XCIsXG4gICAgICB0eXBlOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnR5cGVcIixcbiAgICAgIG1vZGVsX25hbWU6IFwicmVxdWVzdF9sb2dfc3RlcHMubW9kZWxfbmFtZVwiLFxuICAgICAgcmVxdWVzdGVkX21vZGVsX25hbWU6IFwicmVxdWVzdF9sb2dfc3RlcHMucmVxdWVzdGVkX21vZGVsX25hbWVcIixcbiAgICAgIGZhbGxiYWNrX2NvdW50OiBcInJlcXVlc3RfbG9nX3N0ZXBzLmZhbGxiYWNrX2NvdW50XCIsXG4gICAgICBpbnB1dF90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuaW5wdXRfdG9rZW5zXCIsXG4gICAgICBvdXRwdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLm91dHB1dF90b2tlbnNcIixcbiAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNhY2hlX3JlYWRfdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuY2FjaGVfY3JlYXRpb25fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zXCIsXG4gICAgICBjb3N0X3VzZDogXCJyZXF1ZXN0X2xvZ19zdGVwcy5jb3N0X3VzZFwiLFxuICAgICAgY29zdF9zb3VyY2U6IFwicmVxdWVzdF9sb2dfc3RlcHMuY29zdF9zb3VyY2VcIixcbiAgICAgIGR1cmF0aW9uX21zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmR1cmF0aW9uX21zXCIsXG4gICAgICB0dGZ0X21zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnR0ZnRfbXNcIixcbiAgICAgIGZpbmlzaF9yZWFzb246IFwicmVxdWVzdF9sb2dfc3RlcHMuZmluaXNoX3JlYXNvblwiLFxuICAgICAgcmVhc29uaW5nX3RleHQ6IFwicmVxdWVzdF9sb2dfc3RlcHMucmVhc29uaW5nX3RleHRcIixcbiAgICAgIHJlYXNvbmluZ190b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMucmVhc29uaW5nX3Rva2Vuc1wiLFxuICAgICAgdG9vbF9jYWxsX2luZGV4OiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfY2FsbF9pbmRleFwiLFxuICAgICAgdG9vbF9jYWxsX2lkOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfY2FsbF9pZFwiLFxuICAgICAgdG9vbF9uYW1lOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfbmFtZVwiLFxuICAgICAgdG9vbF9hcmdzOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfYXJnc1wiLFxuICAgICAgdG9vbF9yZXN1bHQ6IFwicmVxdWVzdF9sb2dfc3RlcHMudG9vbF9yZXN1bHRcIixcbiAgICAgIHRvb2xfZHVyYXRpb25fbXM6IFwicmVxdWVzdF9sb2dfc3RlcHMudG9vbF9kdXJhdGlvbl9tc1wiLFxuICAgICAgZXJyb3I6IFwicmVxdWVzdF9sb2dfc3RlcHMuZXJyb3JcIixcbiAgICB9KTtcbiAgfSxcbiAgVDogKHFiV3JhcHBlcjogUHVyaVdyYXBwZXI8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+KSA9PiB7XG4gICAgcmV0dXJuIHFiV3JhcHBlci5mcm9tKFwicmVxdWVzdF9sb2dfc3RlcHNcIikuc2VsZWN0KHtcbiAgICAgIGlkOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmlkXCIsXG4gICAgICBjcmVhdGVkX2F0OiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNyZWF0ZWRfYXRcIixcbiAgICAgIHN0ZXBfaW5kZXg6IFwicmVxdWVzdF9sb2dfc3RlcHMuc3RlcF9pbmRleFwiLFxuICAgICAgdHlwZTogXCJyZXF1ZXN0X2xvZ19zdGVwcy50eXBlXCIsXG4gICAgICBtb2RlbF9uYW1lOiBcInJlcXVlc3RfbG9nX3N0ZXBzLm1vZGVsX25hbWVcIixcbiAgICAgIHJlcXVlc3RlZF9tb2RlbF9uYW1lOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnJlcXVlc3RlZF9tb2RlbF9uYW1lXCIsXG4gICAgICBmYWxsYmFja19jb3VudDogXCJyZXF1ZXN0X2xvZ19zdGVwcy5mYWxsYmFja19jb3VudFwiLFxuICAgICAgaW5wdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmlucHV0X3Rva2Vuc1wiLFxuICAgICAgb3V0cHV0X3Rva2VuczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5vdXRwdXRfdG9rZW5zXCIsXG4gICAgICBjYWNoZV9yZWFkX3Rva2VuczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5jYWNoZV9yZWFkX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNhY2hlX2NyZWF0aW9uX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuc1wiLFxuICAgICAgY29zdF91c2Q6IFwicmVxdWVzdF9sb2dfc3RlcHMuY29zdF91c2RcIixcbiAgICAgIGNvc3Rfc291cmNlOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNvc3Rfc291cmNlXCIsXG4gICAgICBkdXJhdGlvbl9tczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5kdXJhdGlvbl9tc1wiLFxuICAgICAgdHRmdF9tczogXCJyZXF1ZXN0X2xvZ19zdGVwcy50dGZ0X21zXCIsXG4gICAgICBmaW5pc2hfcmVhc29uOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmZpbmlzaF9yZWFzb25cIixcbiAgICAgIHJlYXNvbmluZ190b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMucmVhc29uaW5nX3Rva2Vuc1wiLFxuICAgICAgdG9vbF9jYWxsX2luZGV4OiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfY2FsbF9pbmRleFwiLFxuICAgICAgdG9vbF9jYWxsX2lkOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfY2FsbF9pZFwiLFxuICAgICAgdG9vbF9uYW1lOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfbmFtZVwiLFxuICAgICAgdG9vbF9kdXJhdGlvbl9tczogXCJyZXF1ZXN0X2xvZ19zdGVwcy50b29sX2R1cmF0aW9uX21zXCIsXG4gICAgICBlcnJvcjogXCJyZXF1ZXN0X2xvZ19zdGVwcy5lcnJvclwiLFxuICAgIH0pO1xuICB9LFxuICBJOiAocWJXcmFwcGVyOiBQdXJpV3JhcHBlcjxEYXRhYmFzZVNjaGVtYUV4dGVuZD4pID0+IHtcbiAgICByZXR1cm4gcWJXcmFwcGVyLmZyb20oXCJyZXF1ZXN0X2xvZ19zdGVwc1wiKS5zZWxlY3Qoe1xuICAgICAgaWQ6IFwicmVxdWVzdF9sb2dfc3RlcHMuaWRcIixcbiAgICAgIHRvb2xfYXJnczogXCJyZXF1ZXN0X2xvZ19zdGVwcy50b29sX2FyZ3NcIixcbiAgICB9KTtcbiAgfSxcbn07XG5cbi8vIExvYWRlclF1ZXJ5OiBSZXF1ZXN0TG9nU3RlcFxuZXhwb3J0IGNvbnN0IHJlcXVlc3RMb2dTdGVwTG9hZGVyUXVlcmllcyA9IHtcbiAgQTogW10sXG4gIFQ6IFtdLFxuICBJOiBbXSxcbn0gYXMgY29uc3Qgc2F0aXNmaWVzIFB1cmlMb2FkZXJRdWVyaWVzPFJlcXVlc3RMb2dTdGVwU3Vic2V0S2V5PjtcblxuLy8gU3Vic2V0UXVlcnk6IFNldHRpbmdcbmV4cG9ydCBjb25zdCBzZXR0aW5nU3Vic2V0UXVlcmllcyA9IHtcbiAgQTogKHFiV3JhcHBlcjogUHVyaVdyYXBwZXI8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+KSA9PiB7XG4gICAgcmV0dXJuIHFiV3JhcHBlci5mcm9tKFwic2V0dGluZ3NcIikuc2VsZWN0KHtcbiAgICAgIGlkOiBcInNldHRpbmdzLmlkXCIsXG4gICAgICBjcmVhdGVkX2F0OiBcInNldHRpbmdzLmNyZWF0ZWRfYXRcIixcbiAgICAgIGtleTogXCJzZXR0aW5ncy5rZXlcIixcbiAgICAgIHZhbHVlOiBcInNldHRpbmdzLnZhbHVlXCIsXG4gICAgICB1cGRhdGVkX2F0OiBcInNldHRpbmdzLnVwZGF0ZWRfYXRcIixcbiAgICB9KTtcbiAgfSxcbn07XG5cbi8vIExvYWRlclF1ZXJ5OiBTZXR0aW5nXG5leHBvcnQgY29uc3Qgc2V0dGluZ0xvYWRlclF1ZXJpZXMgPSB7XG4gIEE6IFtdLFxufSBhcyBjb25zdCBzYXRpc2ZpZXMgUHVyaUxvYWRlclF1ZXJpZXM8U2V0dGluZ1N1YnNldEtleT47XG5cbi8vIFN1YnNldFF1ZXJ5OiBUb2tlblxuZXhwb3J0IGNvbnN0IHRva2VuU3Vic2V0UXVlcmllcyA9IHtcbiAgQTogKHFiV3JhcHBlcjogUHVyaVdyYXBwZXI8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+KSA9PiB7XG4gICAgcmV0dXJuIHFiV3JhcHBlci5mcm9tKFwidG9rZW5zXCIpLnNlbGVjdCh7XG4gICAgICBpZDogXCJ0b2tlbnMuaWRcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IFwidG9rZW5zLmNyZWF0ZWRfYXRcIixcbiAgICAgIHByb3ZpZGVyOiBcInRva2Vucy5wcm92aWRlclwiLFxuICAgICAgY3JlZGVudGlhbHM6IFwidG9rZW5zLmNyZWRlbnRpYWxzXCIsXG4gICAgICBuYW1lOiBcInRva2Vucy5uYW1lXCIsXG4gICAgICBhY3RpdmU6IFwidG9rZW5zLmFjdGl2ZVwiLFxuICAgICAgb3JkOiBcInRva2Vucy5vcmRcIixcbiAgICAgIHF1b3RhX3RocmVzaG9sZDogXCJ0b2tlbnMucXVvdGFfdGhyZXNob2xkXCIsXG4gICAgICB3ZWlnaHQ6IFwidG9rZW5zLndlaWdodFwiLFxuICAgICAga2VlcGFsaXZlX2VuYWJsZWQ6IFwidG9rZW5zLmtlZXBhbGl2ZV9lbmFibGVkXCIsXG4gICAgfSk7XG4gIH0sXG59O1xuXG4vLyBMb2FkZXJRdWVyeTogVG9rZW5cbmV4cG9ydCBjb25zdCB0b2tlbkxvYWRlclF1ZXJpZXMgPSB7XG4gIEE6IFtdLFxufSBhcyBjb25zdCBzYXRpc2ZpZXMgUHVyaUxvYWRlclF1ZXJpZXM8VG9rZW5TdWJzZXRLZXk+O1xuXG4vLyBGb3JlaWduS2V5IFR5cGVzXG5leHBvcnQgdHlwZSBSZXF1ZXN0TG9nU3RlcEZvcmVpZ25LZXlzID0gXCJyZXF1ZXN0X2xvZ19pZFwiO1xuXG4vLyBEYXRhYmFzZVNjaGVtYVxuZGVjbGFyZSBtb2R1bGUgXCJzb25hbXVcIiB7XG4gIGV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VTY2hlbWFFeHRlbmQge1xuICAgIHJlcXVlc3RfbG9nczogUmVxdWVzdExvZ0Jhc2VTY2hlbWE7XG4gICAgcmVxdWVzdF9sb2dfc3RlcHM6IFJlcXVlc3RMb2dTdGVwQmFzZVNjaGVtYTtcbiAgICBzZXR0aW5nczogU2V0dGluZ0Jhc2VTY2hlbWE7XG4gICAgdG9rZW5zOiBUb2tlbkJhc2VTY2hlbWE7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlRm9yZWlnbktleXMge1xuICAgIHJlcXVlc3RfbG9nX3N0ZXBzOiBSZXF1ZXN0TG9nU3RlcEZvcmVpZ25LZXlzO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7QUFtQkEsTUFBYSwwQkFBMEI7Q0FDckMsSUFBSSxjQUFpRDtFQUNuRCxPQUFPLFVBQVUsS0FBSyxjQUFjLENBQUMsQ0FBQyxPQUFPO0dBQzNDLElBQUk7R0FDSixZQUFZO0dBQ1osWUFBWTtHQUNaLGNBQWM7R0FDZCxZQUFZO0dBQ1osc0JBQXNCO0dBQ3RCLGdCQUFnQjtHQUNoQixhQUFhO0dBQ2IsZUFBZTtHQUNmLFVBQVU7R0FDVixjQUFjO0dBQ2QsZUFBZTtHQUNmLG1CQUFtQjtHQUNuQix1QkFBdUI7R0FDdkIsMEJBQTBCO0dBQzFCLDBCQUEwQjtHQUMxQixhQUFhO0dBQ2IsU0FBUztHQUNULFVBQVU7R0FDVixhQUFhO0dBQ2IsZ0JBQWdCO0dBQ2hCLG1CQUFtQjtHQUNuQixRQUFRO0dBQ1IsU0FBUztHQUNULE9BQU87R0FDUCxRQUFRO0dBQ1Isa0JBQWtCO0dBQ2xCLGVBQWU7R0FDZixpQkFBaUI7R0FDakIscUJBQXFCO0dBQ3JCLGVBQWU7RUFDakIsQ0FBQztDQUNIO0NBQ0EsSUFBSSxjQUFpRDtFQUNuRCxPQUFPLFVBQVUsS0FBSyxjQUFjLENBQUMsQ0FBQyxPQUFPO0dBQzNDLElBQUk7R0FDSixZQUFZO0dBQ1osWUFBWTtHQUNaLGNBQWM7R0FDZCxZQUFZO0dBQ1osc0JBQXNCO0dBQ3RCLGdCQUFnQjtHQUNoQixjQUFjO0dBQ2QsZUFBZTtHQUNmLG1CQUFtQjtHQUNuQix1QkFBdUI7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
189
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29uYW11LmdlbmVyYXRlZC5zc28uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NvbmFtdS5nZW5lcmF0ZWQuc3NvLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGdlbmVyYXRlZFxuICog7KeB7KCRIOyImOygle2VmOyngCDrp4jshLjsmpQuXG4gKi9cblxuaW1wb3J0IHsgdHlwZSBQdXJpV3JhcHBlciwgdHlwZSBEYXRhYmFzZVNjaGVtYUV4dGVuZCwgdHlwZSBQdXJpTG9hZGVyUXVlcmllcyB9IGZyb20gXCJzb25hbXVcIjtcblxuaW1wb3J0IHtcbiAgdHlwZSBSZXF1ZXN0TG9nU3Vic2V0S2V5LFxuICB0eXBlIFJlcXVlc3RMb2dTdGVwU3Vic2V0S2V5LFxuICB0eXBlIFNldHRpbmdTdWJzZXRLZXksXG4gIHR5cGUgVG9rZW5TdWJzZXRLZXksXG4gIHR5cGUgUmVxdWVzdExvZ0Jhc2VTY2hlbWEsXG4gIHR5cGUgUmVxdWVzdExvZ1N0ZXBCYXNlU2NoZW1hLFxuICB0eXBlIFNldHRpbmdCYXNlU2NoZW1hLFxuICB0eXBlIFRva2VuQmFzZVNjaGVtYSxcbn0gZnJvbSBcIi4vc29uYW11LmdlbmVyYXRlZFwiO1xuXG4vLyBTdWJzZXRRdWVyeTogUmVxdWVzdExvZ1xuZXhwb3J0IGNvbnN0IHJlcXVlc3RMb2dTdWJzZXRRdWVyaWVzID0ge1xuICBBOiAocWJXcmFwcGVyOiBQdXJpV3JhcHBlcjxEYXRhYmFzZVNjaGVtYUV4dGVuZD4pID0+IHtcbiAgICByZXR1cm4gcWJXcmFwcGVyLmZyb20oXCJyZXF1ZXN0X2xvZ3NcIikuc2VsZWN0KHtcbiAgICAgIGlkOiBcInJlcXVlc3RfbG9ncy5pZFwiLFxuICAgICAgY3JlYXRlZF9hdDogXCJyZXF1ZXN0X2xvZ3MuY3JlYXRlZF9hdFwiLFxuICAgICAgdG9rZW5fbmFtZTogXCJyZXF1ZXN0X2xvZ3MudG9rZW5fbmFtZVwiLFxuICAgICAgcHJvamVjdF9uYW1lOiBcInJlcXVlc3RfbG9ncy5wcm9qZWN0X25hbWVcIixcbiAgICAgIG1vZGVsX25hbWU6IFwicmVxdWVzdF9sb2dzLm1vZGVsX25hbWVcIixcbiAgICAgIHJlcXVlc3RlZF9tb2RlbF9uYW1lOiBcInJlcXVlc3RfbG9ncy5yZXF1ZXN0ZWRfbW9kZWxfbmFtZVwiLFxuICAgICAgZmFsbGJhY2tfY291bnQ6IFwicmVxdWVzdF9sb2dzLmZhbGxiYWNrX2NvdW50XCIsXG4gICAgICB1c2VyX3Byb21wdDogXCJyZXF1ZXN0X2xvZ3MudXNlcl9wcm9tcHRcIixcbiAgICAgIHN5c3RlbV9wcm9tcHQ6IFwicmVxdWVzdF9sb2dzLnN5c3RlbV9wcm9tcHRcIixcbiAgICAgIHJlc3BvbnNlOiBcInJlcXVlc3RfbG9ncy5yZXNwb25zZVwiLFxuICAgICAgaW5wdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5pbnB1dF90b2tlbnNcIixcbiAgICAgIG91dHB1dF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLm91dHB1dF90b2tlbnNcIixcbiAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9yZWFkX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9jcmVhdGlvbl90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uXzVtX3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuc1wiLFxuICAgICAgZHVyYXRpb25fbXM6IFwicmVxdWVzdF9sb2dzLmR1cmF0aW9uX21zXCIsXG4gICAgICB0dGZ0X21zOiBcInJlcXVlc3RfbG9ncy50dGZ0X21zXCIsXG4gICAgICBjb3N0X3VzZDogXCJyZXF1ZXN0X2xvZ3MuY29zdF91c2RcIixcbiAgICAgIGNvc3Rfc291cmNlOiBcInJlcXVlc3RfbG9ncy5jb3N0X3NvdXJjZVwiLFxuICAgICAgaW1hZ2VfY29zdF91c2Q6IFwicmVxdWVzdF9sb2dzLmltYWdlX2Nvc3RfdXNkXCIsXG4gICAgICBpbWFnZV9jb3N0X21ldGhvZDogXCJyZXF1ZXN0X2xvZ3MuaW1hZ2VfY29zdF9tZXRob2RcIixcbiAgICAgIGVmZm9ydDogXCJyZXF1ZXN0X2xvZ3MuZWZmb3J0XCIsXG4gICAgICBoaXN0b3J5OiBcInJlcXVlc3RfbG9ncy5oaXN0b3J5XCIsXG4gICAgICB0b29sczogXCJyZXF1ZXN0X2xvZ3MudG9vbHNcIixcbiAgICAgIHN0YXR1czogXCJyZXF1ZXN0X2xvZ3Muc3RhdHVzXCIsXG4gICAgICByZXNwb25zZV9qc29uX29rOiBcInJlcXVlc3RfbG9ncy5yZXNwb25zZV9qc29uX29rXCIsXG4gICAgICBlcnJvcl9tZXNzYWdlOiBcInJlcXVlc3RfbG9ncy5lcnJvcl9tZXNzYWdlXCIsXG4gICAgICB0b29sX2NhbGxfY291bnQ6IFwicmVxdWVzdF9sb2dzLnRvb2xfY2FsbF9jb3VudFwiLFxuICAgICAgaXNfaW1hZ2VfZ2VuZXJhdGlvbjogXCJyZXF1ZXN0X2xvZ3MuaXNfaW1hZ2VfZ2VuZXJhdGlvblwiLFxuICAgICAgaXNfc3RydWN0dXJlZDogXCJyZXF1ZXN0X2xvZ3MuaXNfc3RydWN0dXJlZFwiLFxuICAgIH0pO1xuICB9LFxuICBQOiAocWJXcmFwcGVyOiBQdXJpV3JhcHBlcjxEYXRhYmFzZVNjaGVtYUV4dGVuZD4pID0+IHtcbiAgICByZXR1cm4gcWJXcmFwcGVyLmZyb20oXCJyZXF1ZXN0X2xvZ3NcIikuc2VsZWN0KHtcbiAgICAgIGlkOiBcInJlcXVlc3RfbG9ncy5pZFwiLFxuICAgICAgY3JlYXRlZF9hdDogXCJyZXF1ZXN0X2xvZ3MuY3JlYXRlZF9hdFwiLFxuICAgICAgdG9rZW5fbmFtZTogXCJyZXF1ZXN0X2xvZ3MudG9rZW5fbmFtZVwiLFxuICAgICAgcHJvamVjdF9uYW1lOiBcInJlcXVlc3RfbG9ncy5wcm9qZWN0X25hbWVcIixcbiAgICAgIG1vZGVsX25hbWU6IFwicmVxdWVzdF9sb2dzLm1vZGVsX25hbWVcIixcbiAgICAgIHJlcXVlc3RlZF9tb2RlbF9uYW1lOiBcInJlcXVlc3RfbG9ncy5yZXF1ZXN0ZWRfbW9kZWxfbmFtZVwiLFxuICAgICAgZmFsbGJhY2tfY291bnQ6IFwicmVxdWVzdF9sb2dzLmZhbGxiYWNrX2NvdW50XCIsXG4gICAgICBpbnB1dF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmlucHV0X3Rva2Vuc1wiLFxuICAgICAgb3V0cHV0X3Rva2VuczogXCJyZXF1ZXN0X2xvZ3Mub3V0cHV0X3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfcmVhZF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmNhY2hlX3JlYWRfdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmNhY2hlX2NyZWF0aW9uX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9jcmVhdGlvbl81bV90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uXzFoX3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zXCIsXG4gICAgICBkdXJhdGlvbl9tczogXCJyZXF1ZXN0X2xvZ3MuZHVyYXRpb25fbXNcIixcbiAgICAgIHR0ZnRfbXM6IFwicmVxdWVzdF9sb2dzLnR0ZnRfbXNcIixcbiAgICAgIGNvc3RfdXNkOiBcInJlcXVlc3RfbG9ncy5jb3N0X3VzZFwiLFxuICAgICAgY29zdF9zb3VyY2U6IFwicmVxdWVzdF9sb2dzLmNvc3Rfc291cmNlXCIsXG4gICAgICBpbWFnZV9jb3N0X3VzZDogXCJyZXF1ZXN0X2xvZ3MuaW1hZ2VfY29zdF91c2RcIixcbiAgICAgIGltYWdlX2Nvc3RfbWV0aG9kOiBcInJlcXVlc3RfbG9ncy5pbWFnZV9jb3N0X21ldGhvZFwiLFxuICAgICAgZWZmb3J0OiBcInJlcXVlc3RfbG9ncy5lZmZvcnRcIixcbiAgICAgIHN0YXR1czogXCJyZXF1ZXN0X2xvZ3Muc3RhdHVzXCIsXG4gICAgICByZXNwb25zZV9qc29uX29rOiBcInJlcXVlc3RfbG9ncy5yZXNwb25zZV9qc29uX29rXCIsXG4gICAgICB0b29sX2NhbGxfY291bnQ6IFwicmVxdWVzdF9sb2dzLnRvb2xfY2FsbF9jb3VudFwiLFxuICAgICAgaXNfaW1hZ2VfZ2VuZXJhdGlvbjogXCJyZXF1ZXN0X2xvZ3MuaXNfaW1hZ2VfZ2VuZXJhdGlvblwiLFxuICAgICAgaXNfc3RydWN0dXJlZDogXCJyZXF1ZXN0X2xvZ3MuaXNfc3RydWN0dXJlZFwiLFxuICAgIH0pO1xuICB9LFxuICBDOiAocWJXcmFwcGVyOiBQdXJpV3JhcHBlcjxEYXRhYmFzZVNjaGVtYUV4dGVuZD4pID0+IHtcbiAgICByZXR1cm4gcWJXcmFwcGVyLmZyb20oXCJyZXF1ZXN0X2xvZ3NcIikuc2VsZWN0KHtcbiAgICAgIGlkOiBcInJlcXVlc3RfbG9ncy5pZFwiLFxuICAgICAgdG9rZW5fbmFtZTogXCJyZXF1ZXN0X2xvZ3MudG9rZW5fbmFtZVwiLFxuICAgICAgbW9kZWxfbmFtZTogXCJyZXF1ZXN0X2xvZ3MubW9kZWxfbmFtZVwiLFxuICAgICAgaW5wdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5pbnB1dF90b2tlbnNcIixcbiAgICAgIG91dHB1dF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLm91dHB1dF90b2tlbnNcIixcbiAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9yZWFkX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9jcmVhdGlvbl90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uXzVtX3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuc1wiLFxuICAgICAgY29zdF91c2Q6IFwicmVxdWVzdF9sb2dzLmNvc3RfdXNkXCIsXG4gICAgICBjb3N0X3NvdXJjZTogXCJyZXF1ZXN0X2xvZ3MuY29zdF9zb3VyY2VcIixcbiAgICB9KTtcbiAgfSxcbn07XG5cbi8vIExvYWRlclF1ZXJ5OiBSZXF1ZXN0TG9nXG5leHBvcnQgY29uc3QgcmVxdWVzdExvZ0xvYWRlclF1ZXJpZXMgPSB7XG4gIEE6IFtdLFxuICBQOiBbXSxcbiAgQzogW10sXG59IGFzIGNvbnN0IHNhdGlzZmllcyBQdXJpTG9hZGVyUXVlcmllczxSZXF1ZXN0TG9nU3Vic2V0S2V5PjtcblxuLy8gU3Vic2V0UXVlcnk6IFJlcXVlc3RMb2dTdGVwXG5leHBvcnQgY29uc3QgcmVxdWVzdExvZ1N0ZXBTdWJzZXRRdWVyaWVzID0ge1xuICBBOiAocWJXcmFwcGVyOiBQdXJpV3JhcHBlcjxEYXRhYmFzZVNjaGVtYUV4dGVuZD4pID0+IHtcbiAgICByZXR1cm4gcWJXcmFwcGVyLmZyb20oXCJyZXF1ZXN0X2xvZ19zdGVwc1wiKS5zZWxlY3Qoe1xuICAgICAgaWQ6IFwicmVxdWVzdF9sb2dfc3RlcHMuaWRcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IFwicmVxdWVzdF9sb2dfc3RlcHMuY3JlYXRlZF9hdFwiLFxuICAgICAgc3RlcF9pbmRleDogXCJyZXF1ZXN0X2xvZ19zdGVwcy5zdGVwX2luZGV4XCIsXG4gICAgICB0eXBlOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnR5cGVcIixcbiAgICAgIG1vZGVsX25hbWU6IFwicmVxdWVzdF9sb2dfc3RlcHMubW9kZWxfbmFtZVwiLFxuICAgICAgcmVxdWVzdGVkX21vZGVsX25hbWU6IFwicmVxdWVzdF9sb2dfc3RlcHMucmVxdWVzdGVkX21vZGVsX25hbWVcIixcbiAgICAgIGZhbGxiYWNrX2NvdW50OiBcInJlcXVlc3RfbG9nX3N0ZXBzLmZhbGxiYWNrX2NvdW50XCIsXG4gICAgICBpbnB1dF90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuaW5wdXRfdG9rZW5zXCIsXG4gICAgICBvdXRwdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLm91dHB1dF90b2tlbnNcIixcbiAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNhY2hlX3JlYWRfdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuY2FjaGVfY3JlYXRpb25fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zXCIsXG4gICAgICBjb3N0X3VzZDogXCJyZXF1ZXN0X2xvZ19zdGVwcy5jb3N0X3VzZFwiLFxuICAgICAgY29zdF9zb3VyY2U6IFwicmVxdWVzdF9sb2dfc3RlcHMuY29zdF9zb3VyY2VcIixcbiAgICAgIGR1cmF0aW9uX21zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmR1cmF0aW9uX21zXCIsXG4gICAgICB0dGZ0X21zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnR0ZnRfbXNcIixcbiAgICAgIGZpbmlzaF9yZWFzb246IFwicmVxdWVzdF9sb2dfc3RlcHMuZmluaXNoX3JlYXNvblwiLFxuICAgICAgcmVhc29uaW5nX3RleHQ6IFwicmVxdWVzdF9sb2dfc3RlcHMucmVhc29uaW5nX3RleHRcIixcbiAgICAgIHJlYXNvbmluZ190b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMucmVhc29uaW5nX3Rva2Vuc1wiLFxuICAgICAgdG9vbF9jYWxsX2luZGV4OiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfY2FsbF9pbmRleFwiLFxuICAgICAgdG9vbF9jYWxsX2lkOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfY2FsbF9pZFwiLFxuICAgICAgdG9vbF9uYW1lOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfbmFtZVwiLFxuICAgICAgdG9vbF9hcmdzOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfYXJnc1wiLFxuICAgICAgdG9vbF9yZXN1bHQ6IFwicmVxdWVzdF9sb2dfc3RlcHMudG9vbF9yZXN1bHRcIixcbiAgICAgIHRvb2xfZHVyYXRpb25fbXM6IFwicmVxdWVzdF9sb2dfc3RlcHMudG9vbF9kdXJhdGlvbl9tc1wiLFxuICAgICAgZXJyb3I6IFwicmVxdWVzdF9sb2dfc3RlcHMuZXJyb3JcIixcbiAgICB9KTtcbiAgfSxcbiAgVDogKHFiV3JhcHBlcjogUHVyaVdyYXBwZXI8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+KSA9PiB7XG4gICAgcmV0dXJuIHFiV3JhcHBlci5mcm9tKFwicmVxdWVzdF9sb2dfc3RlcHNcIikuc2VsZWN0KHtcbiAgICAgIGlkOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmlkXCIsXG4gICAgICBjcmVhdGVkX2F0OiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNyZWF0ZWRfYXRcIixcbiAgICAgIHN0ZXBfaW5kZXg6IFwicmVxdWVzdF9sb2dfc3RlcHMuc3RlcF9pbmRleFwiLFxuICAgICAgdHlwZTogXCJyZXF1ZXN0X2xvZ19zdGVwcy50eXBlXCIsXG4gICAgICBtb2RlbF9uYW1lOiBcInJlcXVlc3RfbG9nX3N0ZXBzLm1vZGVsX25hbWVcIixcbiAgICAgIHJlcXVlc3RlZF9tb2RlbF9uYW1lOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnJlcXVlc3RlZF9tb2RlbF9uYW1lXCIsXG4gICAgICBmYWxsYmFja19jb3VudDogXCJyZXF1ZXN0X2xvZ19zdGVwcy5mYWxsYmFja19jb3VudFwiLFxuICAgICAgaW5wdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmlucHV0X3Rva2Vuc1wiLFxuICAgICAgb3V0cHV0X3Rva2VuczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5vdXRwdXRfdG9rZW5zXCIsXG4gICAgICBjYWNoZV9yZWFkX3Rva2VuczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5jYWNoZV9yZWFkX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNhY2hlX2NyZWF0aW9uX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuc1wiLFxuICAgICAgY29zdF91c2Q6IFwicmVxdWVzdF9sb2dfc3RlcHMuY29zdF91c2RcIixcbiAgICAgIGNvc3Rfc291cmNlOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNvc3Rfc291cmNlXCIsXG4gICAgICBkdXJhdGlvbl9tczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5kdXJhdGlvbl9tc1wiLFxuICAgICAgdHRmdF9tczogXCJyZXF1ZXN0X2xvZ19zdGVwcy50dGZ0X21zXCIsXG4gICAgICBmaW5pc2hfcmVhc29uOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmZpbmlzaF9yZWFzb25cIixcbiAgICAgIHJlYXNvbmluZ190b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMucmVhc29uaW5nX3Rva2Vuc1wiLFxuICAgICAgdG9vbF9jYWxsX2luZGV4OiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfY2FsbF9pbmRleFwiLFxuICAgICAgdG9vbF9jYWxsX2lkOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfY2FsbF9pZFwiLFxuICAgICAgdG9vbF9uYW1lOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfbmFtZVwiLFxuICAgICAgdG9vbF9kdXJhdGlvbl9tczogXCJyZXF1ZXN0X2xvZ19zdGVwcy50b29sX2R1cmF0aW9uX21zXCIsXG4gICAgICBlcnJvcjogXCJyZXF1ZXN0X2xvZ19zdGVwcy5lcnJvclwiLFxuICAgIH0pO1xuICB9LFxuICBJOiAocWJXcmFwcGVyOiBQdXJpV3JhcHBlcjxEYXRhYmFzZVNjaGVtYUV4dGVuZD4pID0+IHtcbiAgICByZXR1cm4gcWJXcmFwcGVyLmZyb20oXCJyZXF1ZXN0X2xvZ19zdGVwc1wiKS5zZWxlY3Qoe1xuICAgICAgaWQ6IFwicmVxdWVzdF9sb2dfc3RlcHMuaWRcIixcbiAgICAgIHRvb2xfYXJnczogXCJyZXF1ZXN0X2xvZ19zdGVwcy50b29sX2FyZ3NcIixcbiAgICB9KTtcbiAgfSxcbn07XG5cbi8vIExvYWRlclF1ZXJ5OiBSZXF1ZXN0TG9nU3RlcFxuZXhwb3J0IGNvbnN0IHJlcXVlc3RMb2dTdGVwTG9hZGVyUXVlcmllcyA9IHtcbiAgQTogW10sXG4gIFQ6IFtdLFxuICBJOiBbXSxcbn0gYXMgY29uc3Qgc2F0aXNmaWVzIFB1cmlMb2FkZXJRdWVyaWVzPFJlcXVlc3RMb2dTdGVwU3Vic2V0S2V5PjtcblxuLy8gU3Vic2V0UXVlcnk6IFNldHRpbmdcbmV4cG9ydCBjb25zdCBzZXR0aW5nU3Vic2V0UXVlcmllcyA9IHtcbiAgQTogKHFiV3JhcHBlcjogUHVyaVdyYXBwZXI8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+KSA9PiB7XG4gICAgcmV0dXJuIHFiV3JhcHBlci5mcm9tKFwic2V0dGluZ3NcIikuc2VsZWN0KHtcbiAgICAgIGlkOiBcInNldHRpbmdzLmlkXCIsXG4gICAgICBjcmVhdGVkX2F0OiBcInNldHRpbmdzLmNyZWF0ZWRfYXRcIixcbiAgICAgIGtleTogXCJzZXR0aW5ncy5rZXlcIixcbiAgICAgIHZhbHVlOiBcInNldHRpbmdzLnZhbHVlXCIsXG4gICAgICB1cGRhdGVkX2F0OiBcInNldHRpbmdzLnVwZGF0ZWRfYXRcIixcbiAgICB9KTtcbiAgfSxcbn07XG5cbi8vIExvYWRlclF1ZXJ5OiBTZXR0aW5nXG5leHBvcnQgY29uc3Qgc2V0dGluZ0xvYWRlclF1ZXJpZXMgPSB7XG4gIEE6IFtdLFxufSBhcyBjb25zdCBzYXRpc2ZpZXMgUHVyaUxvYWRlclF1ZXJpZXM8U2V0dGluZ1N1YnNldEtleT47XG5cbi8vIFN1YnNldFF1ZXJ5OiBUb2tlblxuZXhwb3J0IGNvbnN0IHRva2VuU3Vic2V0UXVlcmllcyA9IHtcbiAgQTogKHFiV3JhcHBlcjogUHVyaVdyYXBwZXI8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+KSA9PiB7XG4gICAgcmV0dXJuIHFiV3JhcHBlci5mcm9tKFwidG9rZW5zXCIpLnNlbGVjdCh7XG4gICAgICBpZDogXCJ0b2tlbnMuaWRcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IFwidG9rZW5zLmNyZWF0ZWRfYXRcIixcbiAgICAgIHByb3ZpZGVyOiBcInRva2Vucy5wcm92aWRlclwiLFxuICAgICAgY3JlZGVudGlhbHM6IFwidG9rZW5zLmNyZWRlbnRpYWxzXCIsXG4gICAgICBuYW1lOiBcInRva2Vucy5uYW1lXCIsXG4gICAgICBhY3RpdmU6IFwidG9rZW5zLmFjdGl2ZVwiLFxuICAgICAgcmVhdXRoX3JlcXVpcmVkOiBcInRva2Vucy5yZWF1dGhfcmVxdWlyZWRcIixcbiAgICAgIG9yZDogXCJ0b2tlbnMub3JkXCIsXG4gICAgICBxdW90YV90aHJlc2hvbGQ6IFwidG9rZW5zLnF1b3RhX3RocmVzaG9sZFwiLFxuICAgICAgd2VpZ2h0OiBcInRva2Vucy53ZWlnaHRcIixcbiAgICAgIGtlZXBhbGl2ZV9lbmFibGVkOiBcInRva2Vucy5rZWVwYWxpdmVfZW5hYmxlZFwiLFxuICAgIH0pO1xuICB9LFxufTtcblxuLy8gTG9hZGVyUXVlcnk6IFRva2VuXG5leHBvcnQgY29uc3QgdG9rZW5Mb2FkZXJRdWVyaWVzID0ge1xuICBBOiBbXSxcbn0gYXMgY29uc3Qgc2F0aXNmaWVzIFB1cmlMb2FkZXJRdWVyaWVzPFRva2VuU3Vic2V0S2V5PjtcblxuLy8gRm9yZWlnbktleSBUeXBlc1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ1N0ZXBGb3JlaWduS2V5cyA9IFwicmVxdWVzdF9sb2dfaWRcIjtcblxuLy8gRGF0YWJhc2VTY2hlbWFcbmRlY2xhcmUgbW9kdWxlIFwic29uYW11XCIge1xuICBleHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlU2NoZW1hRXh0ZW5kIHtcbiAgICByZXF1ZXN0X2xvZ3M6IFJlcXVlc3RMb2dCYXNlU2NoZW1hO1xuICAgIHJlcXVlc3RfbG9nX3N0ZXBzOiBSZXF1ZXN0TG9nU3RlcEJhc2VTY2hlbWE7XG4gICAgc2V0dGluZ3M6IFNldHRpbmdCYXNlU2NoZW1hO1xuICAgIHRva2VuczogVG9rZW5CYXNlU2NoZW1hO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZUZvcmVpZ25LZXlzIHtcbiAgICByZXF1ZXN0X2xvZ19zdGVwczogUmVxdWVzdExvZ1N0ZXBGb3JlaWduS2V5cztcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBbUJBLE1BQWEsMEJBQTBCO0NBQ3JDLElBQUksY0FBaUQ7RUFDbkQsT0FBTyxVQUFVLEtBQUssY0FBYyxDQUFDLENBQUMsT0FBTztHQUMzQyxJQUFJO0dBQ0osWUFBWTtHQUNaLFlBQVk7R0FDWixjQUFjO0dBQ2QsWUFBWTtHQUNaLHNCQUFzQjtHQUN0QixnQkFBZ0I7R0FDaEIsYUFBYTtHQUNiLGVBQWU7R0FDZixVQUFVO0dBQ1YsY0FBYztHQUNkLGVBQWU7R0FDZixtQkFBbUI7R0FDbkIsdUJBQXVCO0dBQ3ZCLDBCQUEwQjtHQUMxQiwwQkFBMEI7R0FDMUIsYUFBYTtHQUNiLFNBQVM7R0FDVCxVQUFVO0dBQ1YsYUFBYTtHQUNiLGdCQUFnQjtHQUNoQixtQkFBbUI7R0FDbkIsUUFBUTtHQUNSLFNBQVM7R0FDVCxPQUFPO0dBQ1AsUUFBUTtHQUNSLGtCQUFrQjtHQUNsQixlQUFlO0dBQ2YsaUJBQWlCO0dBQ2pCLHFCQUFxQjtHQUNyQixlQUFlO0VBQ2pCLENBQUM7Q0FDSDtDQUNBLElBQUksY0FBaUQ7RUFDbkQsT0FBTyxVQUFVLEtBQUssY0FBYyxDQUFDLENBQUMsT0FBTztHQUMzQyxJQUFJO0dBQ0osWUFBWTtHQUNaLFlBQVk7R0FDWixjQUFjO0dBQ2QsWUFBWTtHQUNaLHNCQUFzQjtHQUN0Qixn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
@@ -4,10 +4,12 @@ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.140.0/hel
4
4
  import __decorate from "../../_virtual/_@oxc-project_runtime@0.140.0/helpers/esm/decorate.js";
5
5
  import { BadRequestException, BaseModelClass, NotFoundException, api, asArray, exhaustive } from "sonamu";
6
6
  import { getLogger } from "@logtape/logtape";
7
+ import { isDeepStrictEqual } from "node:util";
7
8
  //#region src/application/token/token.model.ts
8
9
  const logger = getLogger(["qgrid", "token"]);
9
10
  const DEFAULT_QUOTA_THRESHOLD = 80;
10
11
  const DEFAULT_WEIGHT = 1;
12
+ const TOKEN_AUTH_DEATH_LOCK_CLASS_ID = 719;
11
13
  function applyCreateDefaults(sp) {
12
14
  if (sp.id !== void 0) return sp;
13
15
  return {
@@ -114,13 +116,10 @@ var TokenModelClass = class extends BaseModelClass {
114
116
  debug: false
115
117
  })).rows[0];
116
118
  }
117
- /**
118
- * 라우팅에서 빠진 토큰들. 세션 만료로 자동 비활성화된 것과 수동으로 끈 것이 섞여 있다 —
119
- * 둘 다 "재로그인하면 살아나는" 상태라 알림 대상으로는 같게 본다.
120
- */
121
- async findInactive(subset) {
119
+ /** 실제 인증 만료가 확인돼 재로그인이 필요한 토큰들. 수동 비활성화는 제외한다. */
120
+ async findReauthRequired(subset) {
122
121
  const { qb } = this.getSubsetQueries(subset);
123
- qb.where("tokens.active", false);
122
+ qb.where("tokens.reauth_required", true);
124
123
  qb.orderBy("tokens.name", "asc");
125
124
  const enhancers = this.createEnhancers({ A: (row) => ({ ...row }) });
126
125
  return (await this.executeSubsetQuery({
@@ -161,15 +160,25 @@ var TokenModelClass = class extends BaseModelClass {
161
160
  async updateFields(id, fields) {
162
161
  return this.getPuri("w").transaction((trx) => trx.table("tokens").where("id", id).update(fields));
163
162
  }
164
- /**
165
- * 세션 만료 토큰을 라우팅에서 제외한다. `active=true` 조건부 갱신이므로 공유 DB 를 쓰는
166
- * 여러 인스턴스가 동시에 같은 만료를 감지해도 true 를 받는 프로세스는 하나뿐이다
167
- * (호출부의 알림 발송 게이트).
168
- *
169
- * 단, 대상이 해당 provider 의 마지막 활성 토큰이면 갱신하지 않고 false 를 반환한다.
170
- * client_id 취소나 OAuth 계약 변경처럼 전 토큰이 동시에 실패하는 상황에서 풀이
171
- * 통째로 비는 것을 막는 안전판이다.
172
- */
163
+ async toggleActive(id) {
164
+ return this.getPuri("w").transaction(async (trx) => {
165
+ const token = await trx.from("tokens").select({
166
+ active: "active",
167
+ reauth_required: "reauth_required"
168
+ }).where("id", id).forUpdate().first();
169
+ if (!token) return null;
170
+ if (!token.active && token.reauth_required) return {
171
+ active: false,
172
+ reauthRequired: true
173
+ };
174
+ const active = !token.active;
175
+ await trx.from("tokens").where("id", id).update({ active });
176
+ return {
177
+ active,
178
+ reauthRequired: false
179
+ };
180
+ });
181
+ }
173
182
  /**
174
183
  * 같은 계정의 기존 토큰을 지우고 새로 저장한다(로그인·재로그인 공통 경로).
175
184
  *
@@ -189,31 +198,50 @@ var TokenModelClass = class extends BaseModelClass {
189
198
  }]);
190
199
  }
191
200
  /**
192
- * @returns `deactivated` 는 이 호출이 실제로 비활성화를 수행했는지 — 호출부의 알림
193
- * 게이트다. `keptAsLastActive` 는 마지막 활성 토큰이라 거부한 경우로, 사망 자체는
194
- * 사실이지만 풀을 비우지 않으려고 살려둔 상태다(systemic 실패 신호).
201
+ * 인증 사망을 한 번만 기록하고, 다른 활성 토큰이 있으면 라우팅에서도 제외한다.
202
+ * 마지막 활성 토큰은 systemic 장애 안전판 때문에 active 상태를 유지하되 재로그인
203
+ * 필요 상태는 기록한다. `marked`가 공유 DB 인스턴스들의 알림 발송 게이트다.
195
204
  */
196
- async deactivateIfActive(id) {
197
- const wdb = this.getPuri("w");
198
- if (((await wdb.knex.raw(`UPDATE tokens SET active = false
199
- WHERE id = ? AND active = true
200
- AND (SELECT count(*) FROM tokens peer
201
- WHERE peer.provider = tokens.provider AND peer.active) > 1`, [id])).rowCount ?? 0) > 0) return {
202
- deactivated: true,
203
- keptAsLastActive: false
204
- };
205
- const survivor = (await wdb.knex.raw("SELECT provider FROM tokens WHERE id = ? AND active = true", [id])).rows[0];
206
- if (survivor) {
207
- logger.error(`refusing to auto-deactivate token ${id}: last active ${survivor.provider} token — systemic refresh failure suspected, keeping the pool non-empty`);
205
+ async markReauthRequired(id, expectedCredentials) {
206
+ return this.getPuri("w").transaction(async (trx) => {
207
+ const token = await trx.from("tokens").select({
208
+ provider: "provider",
209
+ credentials: "credentials",
210
+ reauth_required: "reauth_required"
211
+ }).where("id", id).forUpdate().first();
212
+ if (!token || token.reauth_required) return {
213
+ marked: false,
214
+ keptAsLastActive: false,
215
+ staleCredentials: false
216
+ };
217
+ if (!isDeepStrictEqual(token.credentials, expectedCredentials)) return {
218
+ marked: false,
219
+ keptAsLastActive: false,
220
+ staleCredentials: true
221
+ };
222
+ await trx.knex.raw("SELECT pg_advisory_xact_lock(?, hashtext(?))", [TOKEN_AUTH_DEATH_LOCK_CLASS_ID, token.provider]);
223
+ const marked = (await trx.knex.raw(`UPDATE tokens
224
+ SET reauth_required = true,
225
+ active = CASE
226
+ WHEN active AND (SELECT count(*) FROM tokens peer
227
+ WHERE peer.provider = tokens.provider AND peer.active) > 1
228
+ THEN false
229
+ ELSE active
230
+ END
231
+ WHERE id = ? AND reauth_required = false
232
+ RETURNING active`, [id])).rows[0];
233
+ if (!marked) return {
234
+ marked: false,
235
+ keptAsLastActive: false,
236
+ staleCredentials: false
237
+ };
238
+ if (marked.active) logger.error(`refusing to auto-deactivate token ${id}: last active provider token — systemic refresh failure suspected, keeping the pool non-empty`);
208
239
  return {
209
- deactivated: false,
210
- keptAsLastActive: true
240
+ marked: true,
241
+ keptAsLastActive: marked.active,
242
+ staleCredentials: false
211
243
  };
212
- }
213
- return {
214
- deactivated: false,
215
- keptAsLastActive: false
216
- };
244
+ });
217
245
  }
218
246
  async reorder(ids) {
219
247
  await this.getPuri("w").transaction(async (trx) => {
@@ -248,15 +276,6 @@ __decorate([
248
276
  __decorateMetadata("design:paramtypes", [Object, Object]),
249
277
  __decorateMetadata("design:returntype", Promise)
250
278
  ], TokenModelClass.prototype, "findMany", null);
251
- __decorate([
252
- api({
253
- httpMethod: "POST",
254
- clients: ["axios", "tanstack-mutation"]
255
- }),
256
- __decorateMetadata("design:type", Function),
257
- __decorateMetadata("design:paramtypes", [Array]),
258
- __decorateMetadata("design:returntype", Promise)
259
- ], TokenModelClass.prototype, "save", null);
260
279
  __decorate([
261
280
  api({
262
281
  httpMethod: "POST",
@@ -279,4 +298,4 @@ const TokenModel = new TokenModelClass();
279
298
  //#endregion
280
299
  export { TokenModel };
281
300
 
282
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4ubW9kZWwuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3Rva2VuL3Rva2VuLm1vZGVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQge1xuICBhcGksXG4gIGFzQXJyYXksXG4gIEJhZFJlcXVlc3RFeGNlcHRpb24sXG4gIEJhc2VNb2RlbENsYXNzLFxuICBleGhhdXN0aXZlLFxuICB0eXBlIExpc3RSZXN1bHQsXG4gIE5vdEZvdW5kRXhjZXB0aW9uLFxufSBmcm9tIFwic29uYW11XCI7XG5cbmltcG9ydCB7IFNEIH0gZnJvbSBcIi4uLy4uL2kxOG4vc2QuZ2VuZXJhdGVkXCI7XG5pbXBvcnQgeyB0eXBlIFRva2VuU3Vic2V0S2V5LCB0eXBlIFRva2VuU3Vic2V0TWFwcGluZyB9IGZyb20gXCIuLi9zb25hbXUuZ2VuZXJhdGVkXCI7XG5pbXBvcnQgeyB0b2tlbkxvYWRlclF1ZXJpZXMsIHRva2VuU3Vic2V0UXVlcmllcyB9IGZyb20gXCIuLi9zb25hbXUuZ2VuZXJhdGVkLnNzb1wiO1xuaW1wb3J0IHsgdHlwZSBUb2tlbkxpc3RQYXJhbXMsIHR5cGUgVG9rZW5TYXZlUGFyYW1zIH0gZnJvbSBcIi4vdG9rZW4udHlwZXNcIjtcblxuY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcInFncmlkXCIsIFwidG9rZW5cIl0pO1xuXG5jb25zdCBERUZBVUxUX1FVT1RBX1RIUkVTSE9MRCA9IDgwO1xuY29uc3QgREVGQVVMVF9XRUlHSFQgPSAxO1xuXG5leHBvcnQgdHlwZSBUb2tlblVwZGF0ZUZpZWxkcyA9IHtcbiAgbmFtZT86IHN0cmluZztcbiAgcXVvdGFfdGhyZXNob2xkPzogbnVtYmVyIHwgbnVsbDtcbiAgd2VpZ2h0PzogbnVtYmVyO1xuICBrZWVwYWxpdmVfZW5hYmxlZD86IGJvb2xlYW47XG59O1xuXG5mdW5jdGlvbiBhcHBseUNyZWF0ZURlZmF1bHRzKHNwOiBUb2tlblNhdmVQYXJhbXMpOiBUb2tlblNhdmVQYXJhbXMge1xuICBpZiAoc3AuaWQgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHNwO1xuICByZXR1cm4ge1xuICAgIC4uLnNwLFxuICAgIC4uLihzcC5xdW90YV90aHJlc2hvbGQgPT09IHVuZGVmaW5lZCA/IHsgcXVvdGFfdGhyZXNob2xkOiBERUZBVUxUX1FVT1RBX1RIUkVTSE9MRCB9IDoge30pLFxuICAgIC4uLihzcC53ZWlnaHQgPT09IHVuZGVmaW5lZCA/IHsgd2VpZ2h0OiBERUZBVUxUX1dFSUdIVCB9IDoge30pLFxuICB9O1xufVxuXG5jbGFzcyBUb2tlbk1vZGVsQ2xhc3MgZXh0ZW5kcyBCYXNlTW9kZWxDbGFzczxcbiAgVG9rZW5TdWJzZXRLZXksXG4gIFRva2VuU3Vic2V0TWFwcGluZyxcbiAgdHlwZW9mIHRva2VuU3Vic2V0UXVlcmllcyxcbiAgdHlwZW9mIHRva2VuTG9hZGVyUXVlcmllc1xuPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiVG9rZW5cIiwgdG9rZW5TdWJzZXRRdWVyaWVzLCB0b2tlbkxvYWRlclF1ZXJpZXMpO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiR0VUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stcXVlcnlcIl0sIHJlc291cmNlTmFtZTogXCJUb2tlblwiIH0pXG4gIGFzeW5jIGZpbmRCeUlkPFQgZXh0ZW5kcyBUb2tlblN1YnNldEtleT4oc3Vic2V0OiBULCBpZDogbnVtYmVyKTogUHJvbWlzZTxUb2tlblN1YnNldE1hcHBpbmdbVF0+IHtcbiAgICBjb25zdCB7IHJvd3MgfSA9IGF3YWl0IHRoaXMuZmluZE1hbnkoc3Vic2V0LCB7IGlkLCBudW06IDEsIHBhZ2U6IDEgfSk7XG4gICAgaWYgKCFyb3dzWzBdKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb24oU0QoXCJlcnJvci5lbnRpdHlOb3RGb3VuZFwiKShcIlRva2VuXCIsIGlkKSk7XG4gICAgfVxuICAgIHJldHVybiByb3dzWzBdO1xuICB9XG5cbiAgYXN5bmMgZmluZE9uZTxUIGV4dGVuZHMgVG9rZW5TdWJzZXRLZXk+KFxuICAgIHN1YnNldDogVCxcbiAgICBsaXN0UGFyYW1zOiBUb2tlbkxpc3RQYXJhbXMsXG4gICk6IFByb21pc2U8VG9rZW5TdWJzZXRNYXBwaW5nW1RdIHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgcm93cyB9ID0gYXdhaXQgdGhpcy5maW5kTWFueShzdWJzZXQsIHsgLi4ubGlzdFBhcmFtcywgbnVtOiAxLCBwYWdlOiAxIH0pO1xuICAgIHJldHVybiByb3dzWzBdID8/IG51bGw7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJHRVRcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1xdWVyeVwiXSwgcmVzb3VyY2VOYW1lOiBcIlRva2Vuc1wiIH0pXG4gIGFzeW5jIGZpbmRNYW55PFQgZXh0ZW5kcyBUb2tlblN1YnNldEtleSwgTFAgZXh0ZW5kcyBUb2tlbkxpc3RQYXJhbXM+KFxuICAgIHN1YnNldDogVCxcbiAgICByYXdQYXJhbXM/OiBMUCxcbiAgKTogUHJvbWlzZTxMaXN0UmVzdWx0PExQLCBUb2tlblN1YnNldE1hcHBpbmdbVF0+PiB7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgbnVtOiAyNCxcbiAgICAgIHBhZ2U6IDEsXG4gICAgICBzZWFyY2g6IFwiaWRcIiBhcyBjb25zdCxcbiAgICAgIG9yZGVyQnk6IFwib3JkLWFzY1wiIGFzIGNvbnN0LFxuICAgICAgLi4ucmF3UGFyYW1zLFxuICAgIH0gc2F0aXNmaWVzIFRva2VuTGlzdFBhcmFtcztcblxuICAgIGNvbnN0IHsgcWIsIG9uU3Vic2V0OiBfIH0gPSB0aGlzLmdldFN1YnNldFF1ZXJpZXMoc3Vic2V0KTtcblxuICAgIGlmIChwYXJhbXMuaWQpIHtcbiAgICAgIHFiLndoZXJlSW4oXCJ0b2tlbnMuaWRcIiwgYXNBcnJheShwYXJhbXMuaWQpKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLnNlYXJjaCAmJiBwYXJhbXMua2V5d29yZCAmJiBwYXJhbXMua2V5d29yZC5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAocGFyYW1zLnNlYXJjaCA9PT0gXCJpZFwiKSB7XG4gICAgICAgIHFiLndoZXJlKFwidG9rZW5zLmlkXCIsIE51bWJlcihwYXJhbXMua2V5d29yZCkpO1xuICAgICAgfSBlbHNlIGlmIChwYXJhbXMuc2VhcmNoID09PSBcIm5hbWVcIikge1xuICAgICAgICBxYi53aGVyZShcInRva2Vucy5uYW1lXCIsIFwibGlrZVwiLCBgJSR7cGFyYW1zLmtleXdvcmR9JWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFeGNlcHRpb24oU0QoXCJlcnJvci51bmtub3duU2VhcmNoRmllbGRcIikocGFyYW1zLnNlYXJjaCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYXJhbXMub3JkZXJCeSkge1xuICAgICAgaWYgKHBhcmFtcy5vcmRlckJ5ID09PSBcImlkLWRlc2NcIikge1xuICAgICAgICBxYi5vcmRlckJ5KFwidG9rZW5zLmlkXCIsIFwiZGVzY1wiKTtcbiAgICAgIH0gZWxzZSBpZiAocGFyYW1zLm9yZGVyQnkgPT09IFwib3JkLWFzY1wiKSB7XG4gICAgICAgIHFiLm9yZGVyQnkoXCJ0b2tlbnMub3JkXCIsIFwiYXNjXCIpO1xuICAgICAgICBxYi5vcmRlckJ5KFwidG9rZW5zLmlkXCIsIFwiYXNjXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhoYXVzdGl2ZShwYXJhbXMub3JkZXJCeSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZW5oYW5jZXJzID0gdGhpcy5jcmVhdGVFbmhhbmNlcnMoe1xuICAgICAgQTogKHJvdykgPT4gKHsgLi4ucm93IH0pLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVN1YnNldFF1ZXJ5KHsgc3Vic2V0LCBxYiwgcGFyYW1zLCBlbmhhbmNlcnMsIGRlYnVnOiBmYWxzZSB9KTtcbiAgfVxuXG4gIGFzeW5jIGZpbmRCeUFjY291bnRJZGVudGlmaWVyPFQgZXh0ZW5kcyBUb2tlblN1YnNldEtleT4oXG4gICAgc3Vic2V0OiBULFxuICAgIHByb3ZpZGVyOiBzdHJpbmcsXG4gICAgYWNjb3VudElkOiBzdHJpbmcsXG4gICk6IFByb21pc2U8VG9rZW5TdWJzZXRNYXBwaW5nW1RdW10+IHtcbiAgICBjb25zdCB7IHFiIH0gPSB0aGlzLmdldFN1YnNldFF1ZXJpZXMoc3Vic2V0KTtcbiAgICBxYi53aGVyZShcInRva2Vucy5wcm92aWRlclwiLCBwcm92aWRlcik7XG4gICAgY29uc3QganNvbktleSA9IHByb3ZpZGVyID09PSBcImFudGhyb3BpY1wiID8gXCJhY2NvdW50VXVpZFwiIDogXCJhY2NvdW50SWRcIjtcbiAgICBxYi53aGVyZVJhdyhgdG9rZW5zLmNyZWRlbnRpYWxzLT4+JyR7anNvbktleX0nID0gP2AsIFthY2NvdW50SWRdKTtcbiAgICBjb25zdCBlbmhhbmNlcnMgPSB0aGlzLmNyZWF0ZUVuaGFuY2Vycyh7IEE6IChyb3cpID0+ICh7IC4uLnJvdyB9KSB9KTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4ZWN1dGVTdWJzZXRRdWVyeSh7XG4gICAgICBzdWJzZXQsXG4gICAgICBxYixcbiAgICAgIHBhcmFtczogeyBudW06IDEwMCwgcGFnZTogMSB9LFxuICAgICAgZW5oYW5jZXJzLFxuICAgICAgZGVidWc6IGZhbHNlLFxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQucm93cztcbiAgfVxuXG4gIGFzeW5jIGZpbmRBY3RpdmVCeVByb3ZpZGVyPFQgZXh0ZW5kcyBUb2tlblN1YnNldEtleT4oXG4gICAgc3Vic2V0OiBULFxuICAgIHByb3ZpZGVyOiBzdHJpbmcsXG4gICk6IFByb21pc2U8VG9rZW5TdWJzZXRNYXBwaW5nW1RdW10+IHtcbiAgICBjb25zdCB7IHFiIH0gPSB0aGlzLmdldFN1YnNldFF1ZXJpZXMoc3Vic2V0KTtcbiAgICBxYi53aGVyZShcInRva2Vucy5hY3RpdmVcIiwgdHJ1ZSk7XG4gICAgcWIud2hlcmUoXCJ0b2tlbnMucHJvdmlkZXJcIiwgcHJvdmlkZXIpO1xuICAgIGNvbnN0IGVuaGFuY2VycyA9IHRoaXMuY3JlYXRlRW5oYW5jZXJzKHsgQTogKHJvdykgPT4gKHsgLi4ucm93IH0pIH0pO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZXhlY3V0ZVN1YnNldFF1ZXJ5KHtcbiAgICAgIHN1YnNldCxcbiAgICAgIHFiLFxuICAgICAgcGFyYW1zOiB7IG51bTogMTAwLCBwYWdlOiAxIH0sXG4gICAgICBlbmhhbmNlcnMsXG4gICAgICBkZWJ1ZzogZmFsc2UsXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdC5yb3dzO1xuICB9XG5cbiAgYXN5bmMgZmluZEFjdGl2ZUJ5UHJvdmlkZXJBbmROYW1lPFQgZXh0ZW5kcyBUb2tlblN1YnNldEtleT4oXG4gICAgc3Vic2V0OiBULFxuICAgIHByb3ZpZGVyOiBzdHJpbmcsXG4gICAgbmFtZTogc3RyaW5nLFxuICApOiBQcm9taXNlPFRva2VuU3Vic2V0TWFwcGluZ1tUXSB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHsgcWIgfSA9IHRoaXMuZ2V0U3Vic2V0UXVlcmllcyhzdWJzZXQpO1xuICAgIHFiLndoZXJlKFwidG9rZW5zLmFjdGl2ZVwiLCB0cnVlKTtcbiAgICBxYi53aGVyZShcInRva2Vucy5wcm92aWRlclwiLCBwcm92aWRlcik7XG4gICAgcWIud2hlcmUoXCJ0b2tlbnMubmFtZVwiLCBuYW1lKTtcbiAgICBjb25zdCBlbmhhbmNlcnMgPSB0aGlzLmNyZWF0ZUVuaGFuY2Vycyh7IEE6IChyb3cpID0+ICh7IC4uLnJvdyB9KSB9KTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4ZWN1dGVTdWJzZXRRdWVyeSh7XG4gICAgICBzdWJzZXQsXG4gICAgICBxYixcbiAgICAgIHBhcmFtczogeyBudW06IDEsIHBhZ2U6IDEgfSxcbiAgICAgIGVuaGFuY2VycyxcbiAgICAgIGRlYnVnOiBmYWxzZSxcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0LnJvd3NbMF07XG4gIH1cblxuICAvKipcbiAgICog65287Jqw7YyF7JeQ7IScIOu5oOynhCDthqDtgbDrk6QuIOyEuOyFmCDrp4zro4zroZwg7J6Q64+ZIOu5hO2ZnOyEse2ZlOuQnCDqsoPqs7wg7IiY64+Z7Jy866GcIOuBiCDqsoPsnbQg7ISe7JesIOyeiOuLpCDigJRcbiAgICog65GYIOuLpCBcIuyerOuhnOq3uOyduO2VmOuptCDsgrTslYTrgpjripRcIiDsg4Htg5zrnbwg7JWM66a8IOuMgOyDgeycvOuhnOuKlCDqsJnqsowg67O464ukLlxuICAgKi9cbiAgYXN5bmMgZmluZEluYWN0aXZlPFQgZXh0ZW5kcyBUb2tlblN1YnNldEtleT4oc3Vic2V0OiBUKTogUHJvbWlzZTxUb2tlblN1YnNldE1hcHBpbmdbVF1bXT4ge1xuICAgIGNvbnN0IHsgcWIgfSA9IHRoaXMuZ2V0U3Vic2V0UXVlcmllcyhzdWJzZXQpO1xuICAgIHFiLndoZXJlKFwidG9rZW5zLmFjdGl2ZVwiLCBmYWxzZSk7XG4gICAgcWIub3JkZXJCeShcInRva2Vucy5uYW1lXCIsIFwiYXNjXCIpO1xuICAgIGNvbnN0IGVuaGFuY2VycyA9IHRoaXMuY3JlYXRlRW5oYW5jZXJzKHsgQTogKHJvdykgPT4gKHsgLi4ucm93IH0pIH0pO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZXhlY3V0ZVN1YnNldFF1ZXJ5KHtcbiAgICAgIHN1YnNldCxcbiAgICAgIHFiLFxuICAgICAgcGFyYW1zOiB7IG51bTogMTAwLCBwYWdlOiAxIH0sXG4gICAgICBlbmhhbmNlcnMsXG4gICAgICBkZWJ1ZzogZmFsc2UsXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdC5yb3dzO1xuICB9XG5cbiAgYXN5bmMgZmluZEFjdGl2ZTxUIGV4dGVuZHMgVG9rZW5TdWJzZXRLZXk+KHN1YnNldDogVCk6IFByb21pc2U8VG9rZW5TdWJzZXRNYXBwaW5nW1RdW10+IHtcbiAgICBjb25zdCB7IHFiIH0gPSB0aGlzLmdldFN1YnNldFF1ZXJpZXMoc3Vic2V0KTtcbiAgICBxYi53aGVyZShcInRva2Vucy5hY3RpdmVcIiwgdHJ1ZSk7XG4gICAgY29uc3QgZW5oYW5jZXJzID0gdGhpcy5jcmVhdGVFbmhhbmNlcnMoeyBBOiAocm93KSA9PiAoeyAuLi5yb3cgfSkgfSk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5leGVjdXRlU3Vic2V0UXVlcnkoe1xuICAgICAgc3Vic2V0LFxuICAgICAgcWIsXG4gICAgICBwYXJhbXM6IHsgbnVtOiAxMDAsIHBhZ2U6IDEgfSxcbiAgICAgIGVuaGFuY2VycyxcbiAgICAgIGRlYnVnOiBmYWxzZSxcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0LnJvd3M7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgc2F2ZShzcGE6IFRva2VuU2F2ZVBhcmFtc1tdKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICAgIGNvbnN0IHdkYiA9IHRoaXMuZ2V0UHVyaShcIndcIik7XG4gICAgc3BhLmZvckVhY2goKHNwKSA9PiB7XG4gICAgICB3ZGIudWJSZWdpc3RlcihcInRva2Vuc1wiLCBhcHBseUNyZWF0ZURlZmF1bHRzKHNwKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHdkYi50cmFuc2FjdGlvbihhc3luYyAodHJ4KSA9PiB7XG4gICAgICByZXR1cm4gdHJ4LnViVXBzZXJ0KFwidG9rZW5zXCIpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRmllbGRzKGlkOiBudW1iZXIsIGZpZWxkczogVG9rZW5VcGRhdGVGaWVsZHMpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHdkYiA9IHRoaXMuZ2V0UHVyaShcIndcIik7XG4gICAgcmV0dXJuIHdkYi50cmFuc2FjdGlvbigodHJ4KSA9PiB0cngudGFibGUoXCJ0b2tlbnNcIikud2hlcmUoXCJpZFwiLCBpZCkudXBkYXRlKGZpZWxkcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIOyEuOyFmCDrp4zro4wg7Yag7YGw7J2EIOudvOyasO2MheyXkOyEnCDsoJzsmbjtlZzri6QuIGBhY3RpdmU9dHJ1ZWAg7KGw6rG067aAIOqwseyLoOydtOuvgOuhnCDqs7XsnKAgREIg66W8IOyTsOuKlFxuICAgKiDsl6zrn6wg7J247Iqk7YS07Iqk6rCAIOuPmeyLnOyXkCDqsJnsnYAg66eM66OM66W8IOqwkOyngO2VtOuPhCB0cnVlIOulvCDrsJvripQg7ZSE66Gc7IS47Iqk64qUIO2VmOuCmOu/kOydtOuLpFxuICAgKiAo7Zi47Lac67aA7J2YIOyVjOumvCDrsJzshqEg6rKM7J207Yq4KS5cbiAgICpcbiAgICog64uoLCDrjIDsg4HsnbQg7ZW064u5IHByb3ZpZGVyIOydmCDrp4jsp4Drp4kg7Zmc7ISxIO2GoO2BsOydtOuptCDqsLHsi6DtlZjsp4Ag7JWK6rOgIGZhbHNlIOulvCDrsJjtmZjtlZzri6QuXG4gICAqIGNsaWVudF9pZCDst6jshozrgpggT0F1dGgg6rOE7JW9IOuzgOqyveyymOufvCDsoIQg7Yag7YGw7J20IOuPmeyLnOyXkCDsi6TtjKjtlZjripQg7IOB7Zmp7JeQ7IScIO2SgOydtFxuICAgKiDthrXsp7jroZwg67mE64qUIOqyg+ydhCDrp4nripQg7JWI7KCE7YyQ7J2064ukLlxuICAgKi9cbiAgLyoqXG4gICAqIOqwmeydgCDqs4TsoJXsnZgg6riw7KG0IO2GoO2BsOydhCDsp4DsmrDqs6Ag7IOI66GcIOyggOyepe2VnOuLpCjroZzqt7jsnbjCt+yerOuhnOq3uOyduCDqs7XthrUg6rK966GcKS5cbiAgICpcbiAgICogcHJvdmlkZXIg7J2R64u17JeQIOqzhOyglSDsi53rs4TsnpDqsIAg7JeG7Jy866m0IGRlZHVwIOyekOyytOqwgCDrtojqsIDriqXtlZjrr4DroZwg6rK96rOg66eMIOuCqOq4sOqzoFxuICAgKiDspJHrs7Ug7KCc6rGwIOyXhuydtCDsoIDsnqXtlZzri6Qo7KO97J2AIHJvdyDqsIAg64Ko64qU64ukKS5cbiAgICovXG4gIGFzeW5jIHJlcGxhY2VCeUFjY291bnQoXG4gICAgcHJvdmlkZXI6IHN0cmluZyxcbiAgICBhY2NvdW50SWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBzYXZlUGFyYW1zOiBUb2tlblNhdmVQYXJhbXMsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCBrZWVwYWxpdmVFbmFibGVkID0gc2F2ZVBhcmFtcy5rZWVwYWxpdmVfZW5hYmxlZDtcbiAgICBpZiAoYWNjb3VudElkKSB7XG4gICAgICBjb25zdCBvbGRFbnRyaWVzID0gYXdhaXQgdGhpcy5maW5kQnlBY2NvdW50SWRlbnRpZmllcihcIkFcIiwgcHJvdmlkZXIsIGFjY291bnRJZCk7XG4gICAgICBpZiAoa2VlcGFsaXZlRW5hYmxlZCA9PT0gdW5kZWZpbmVkICYmIG9sZEVudHJpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBrZWVwYWxpdmVFbmFibGVkID0gb2xkRW50cmllcy5zb21lKChlbnRyeSkgPT4gZW50cnkua2VlcGFsaXZlX2VuYWJsZWQpO1xuICAgICAgfVxuICAgICAgaWYgKG9sZEVudHJpZXMubGVuZ3RoID4gMCkgYXdhaXQgdGhpcy5kZWwob2xkRW50cmllcy5tYXAoKG8pID0+IG8uaWQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nZ2VyLndhcm4oXG4gICAgICAgIGAke3Byb3ZpZGVyfSBsb2dpbiB3aXRob3V0IGFjY291bnQgaWRlbnRpZmllcjogZGVkdXAgc2tpcHBlZCBmb3IgJHtzYXZlUGFyYW1zLm5hbWUgPz8gXCJ1bm5hbWVkXCJ9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5zYXZlKFtcbiAgICAgIGtlZXBhbGl2ZUVuYWJsZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IHNhdmVQYXJhbXNcbiAgICAgICAgOiB7IC4uLnNhdmVQYXJhbXMsIGtlZXBhbGl2ZV9lbmFibGVkOiBrZWVwYWxpdmVFbmFibGVkIH0sXG4gICAgXSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgYGRlYWN0aXZhdGVkYCDripQg7J20IO2YuOy2nOydtCDsi6TsoJzroZwg67mE7Zmc7ISx7ZmU66W8IOyImO2Wie2WiOuKlOyngCDigJQg7Zi47Lac67aA7J2YIOyVjOumvFxuICAgKiAgIOqyjOydtO2KuOuLpC4gYGtlcHRBc0xhc3RBY3RpdmVgIOuKlCDrp4jsp4Drp4kg7Zmc7ISxIO2GoO2BsOydtOudvCDqsbDrtoDtlZwg6rK97Jqw66GcLCDsgqzrp50g7J6Q7LK064qUXG4gICAqICAg7IKs7Iuk7J207KeA66eMIO2SgOydhCDruYTsmrDsp4Ag7JWK7Jy866Ck6rOgIOyCtOugpOuRlCDsg4Htg5zri6Qoc3lzdGVtaWMg7Iuk7YyoIOyLoO2YuCkuXG4gICAqL1xuICBhc3luYyBkZWFjdGl2YXRlSWZBY3RpdmUoXG4gICAgaWQ6IG51bWJlcixcbiAgKTogUHJvbWlzZTx7IGRlYWN0aXZhdGVkOiBib29sZWFuOyBrZXB0QXNMYXN0QWN0aXZlOiBib29sZWFuIH0+IHtcbiAgICBjb25zdCB3ZGIgPSB0aGlzLmdldFB1cmkoXCJ3XCIpO1xuXG4gICAgLy8g7Zmc7ISxIOyXrOu2gOyZgCBcIuuniOyngOuniSDrgqjsnYAg7Yag7YGw7J246rCAXCLrpbwg7ZWcIHN0YXRlbWVudCDslYjsl5DshJwg7YyQ7KCV7ZWc64ukLiDrkZAg7KGw6rG07J2EXG4gICAgLy8g65Sw66GcIOydveqzoCDrgpjspJHsl5Ag6rCx7Iug7ZWY66m0IOq3uCDsgqzsnbTsl5Ag64uk66W4IOyduOyKpO2EtOyKpOqwgCDqsJnsnYAgcHJvdmlkZXIg7J2YIO2GoO2BsOydhFxuICAgIC8vIOu5hO2ZnOyEse2ZlO2VtCDtkoDsnbQg7Ya17Ke466GcIOu5jCDsiJgg7J6I64ukLlxuICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB3ZGIua25leC5yYXc8eyByb3dDb3VudDogbnVtYmVyIH0+KFxuICAgICAgYFVQREFURSB0b2tlbnMgU0VUIGFjdGl2ZSA9IGZhbHNlXG4gICAgICAgV0hFUkUgaWQgPSA/IEFORCBhY3RpdmUgPSB0cnVlXG4gICAgICAgICBBTkQgKFNFTEVDVCBjb3VudCgqKSBGUk9NIHRva2VucyBwZWVyXG4gICAgICAgICAgICAgIFdIRVJFIHBlZXIucHJvdmlkZXIgPSB0b2tlbnMucHJvdmlkZXIgQU5EIHBlZXIuYWN0aXZlKSA+IDFgLFxuICAgICAgW2lkXSxcbiAgICApO1xuICAgIGlmICgodXBkYXRlZC5yb3dDb3VudCA/PyAwKSA+IDApIHJldHVybiB7IGRlYWN0aXZhdGVkOiB0cnVlLCBrZXB0QXNMYXN0QWN0aXZlOiBmYWxzZSB9O1xuXG4gICAgLy8g6rCx7Iug65CY7KeAIOyViuydgCDsnbTsnKDripQg65GYIOykkSDtlZjrgpjri6Q6IOydtOuvuCDruYTtmZzshLHsnbTqsbDrgpgo7KCV7IOBIOqyveyfgSDqsrDqs7wpLCDrp4jsp4Drp4lcbiAgICAvLyDtmZzshLEg7Yag7YGw7J206rGw64KYLiDtm4TsnpDripQgc3lzdGVtaWMg7Iuk7YyoIOyLoO2YuOudvCDrgqjqsqjslbwg7ZWY66+A66GcIOydtOuVjOunjCDtlZwg67KIIOuNlCDsnb3ripTri6QuXG4gICAgY29uc3Qgc3Vydml2b3IgPSAoXG4gICAgICBhd2FpdCB3ZGIua25leC5yYXc8eyByb3dzOiB7IHByb3ZpZGVyOiBzdHJpbmcgfVtdIH0+KFxuICAgICAgICBcIlNFTEVDVCBwcm92aWRlciBGUk9NIHRva2VucyBXSEVSRSBpZCA9ID8gQU5EIGFjdGl2ZSA9IHRydWVcIixcbiAgICAgICAgW2lkXSxcbiAgICAgIClcbiAgICApLnJvd3NbMF07XG4gICAgaWYgKHN1cnZpdm9yKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoXG4gICAgICAgIGByZWZ1c2luZyB0byBhdXRvLWRlYWN0aXZhdGUgdG9rZW4gJHtpZH06IGxhc3QgYWN0aXZlICR7c3Vydml2b3IucHJvdmlkZXJ9IHRva2VuIOKAlCBgICtcbiAgICAgICAgICBgc3lzdGVtaWMgcmVmcmVzaCBmYWlsdXJlIHN1c3BlY3RlZCwga2VlcGluZyB0aGUgcG9vbCBub24tZW1wdHlgLFxuICAgICAgKTtcbiAgICAgIHJldHVybiB7IGRlYWN0aXZhdGVkOiBmYWxzZSwga2VwdEFzTGFzdEFjdGl2ZTogdHJ1ZSB9O1xuICAgIH1cbiAgICByZXR1cm4geyBkZWFjdGl2YXRlZDogZmFsc2UsIGtlcHRBc0xhc3RBY3RpdmU6IGZhbHNlIH07XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgcmVvcmRlcihpZHM6IG51bWJlcltdKTogUHJvbWlzZTx7IGRvbmU6IGJvb2xlYW4gfT4ge1xuICAgIGNvbnN0IHdkYiA9IHRoaXMuZ2V0UHVyaShcIndcIik7XG4gICAgYXdhaXQgd2RiLnRyYW5zYWN0aW9uKGFzeW5jICh0cngpID0+IHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGF3YWl0IHRyeC50YWJsZShcInRva2Vuc1wiKS53aGVyZShcImlkXCIsIGlkc1tpXSEpLnVwZGF0ZSh7IG9yZDogaSB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4geyBkb25lOiB0cnVlIH07XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgZGVsKGlkczogbnVtYmVyW10pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHdkYiA9IHRoaXMuZ2V0UHVyaShcIndcIik7XG4gICAgYXdhaXQgd2RiLnRyYW5zYWN0aW9uKGFzeW5jICh0cngpID0+IHtcbiAgICAgIHJldHVybiB0cngudGFibGUoXCJ0b2tlbnNcIikud2hlcmVJbihcInRva2Vucy5pZFwiLCBpZHMpLmRlbGV0ZSgpO1xuICAgIH0pO1xuICAgIHJldHVybiBpZHMubGVuZ3RoO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBUb2tlbk1vZGVsID0gbmV3IFRva2VuTW9kZWxDbGFzcygpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBZ0JBLE1BQU0sU0FBUyxVQUFVLENBQUMsU0FBUyxPQUFPLENBQUM7QUFFM0MsTUFBTSwwQkFBMEI7QUFDaEMsTUFBTSxpQkFBaUI7QUFTdkIsU0FBUyxvQkFBb0IsSUFBc0M7Q0FDakUsSUFBSSxHQUFHLE9BQU8sUUFBVyxPQUFPO0NBQ2hDLE9BQU87RUFDTCxHQUFHO0VBQ0gsR0FBSSxHQUFHLG9CQUFvQixTQUFZLEVBQUUsaUJBQWlCLHdCQUF3QixJQUFJLENBQUM7RUFDdkYsR0FBSSxHQUFHLFdBQVcsU0FBWSxFQUFFLFFBQVEsZUFBZSxJQUFJLENBQUM7Q0FDOUQ7QUFDRjtBQUVBLElBQU0sa0JBQU4sY0FBOEIsZUFLNUI7Q0FDQSxjQUFjO0VBQ1osTUFBTSxTQUFTLG9CQUFvQixrQkFBa0I7Q0FDdkQ7Q0FFQSxNQUNNLFNBQW1DLFFBQVcsSUFBNEM7RUFDOUYsTUFBTSxFQUFFLFNBQVMsTUFBTSxLQUFLLFNBQVMsUUFBUTtHQUFFO0dBQUksS0FBSztHQUFHLE1BQU07RUFBRSxDQUFDO0VBQ3BFLElBQUksQ0FBQyxLQUFLLElBQ1IsTUFBTSxJQUFJLGtCQUFrQixHQUFHLHNCQUFzQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7RUFFckUsT0FBTyxLQUFLO0NBQ2Q7Q0FFQSxNQUFNLFFBQ0osUUFDQSxZQUN1QztFQUN2QyxNQUFNLEVBQUUsU0FBUyxNQUFNLEtBQUssU0FBUyxRQUFRO0dBQUUsR0FBRztHQUFZLEtBQUs7R0FBRyxNQUFNO0VBQUUsQ0FBQztFQUMvRSxPQUFPLEtBQUssTUFBTTtDQUNwQjtDQUVBLE1BQ00sU0FDSixRQUNBLFdBQ2dEO0VBQ2hELE1BQU0sU0FBUztHQUNiLEtBQUs7R0FDTCxNQUFNO0dBQ04sUUFBUTtHQUNSLFNBQVM7R0FDVCxHQUFHO0VBQ0w7RUFFQSxN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
301
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4ubW9kZWwuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3Rva2VuL3Rva2VuLm1vZGVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRGVlcFN0cmljdEVxdWFsIH0gZnJvbSBcIm5vZGU6dXRpbFwiO1xuXG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHtcbiAgYXBpLFxuICBhc0FycmF5LFxuICBCYWRSZXF1ZXN0RXhjZXB0aW9uLFxuICBCYXNlTW9kZWxDbGFzcyxcbiAgZXhoYXVzdGl2ZSxcbiAgdHlwZSBMaXN0UmVzdWx0LFxuICBOb3RGb3VuZEV4Y2VwdGlvbixcbn0gZnJvbSBcInNvbmFtdVwiO1xuXG5pbXBvcnQgeyBTRCB9IGZyb20gXCIuLi8uLi9pMThuL3NkLmdlbmVyYXRlZFwiO1xuaW1wb3J0IHsgdHlwZSBUb2tlblN1YnNldEtleSwgdHlwZSBUb2tlblN1YnNldE1hcHBpbmcgfSBmcm9tIFwiLi4vc29uYW11LmdlbmVyYXRlZFwiO1xuaW1wb3J0IHsgdG9rZW5Mb2FkZXJRdWVyaWVzLCB0b2tlblN1YnNldFF1ZXJpZXMgfSBmcm9tIFwiLi4vc29uYW11LmdlbmVyYXRlZC5zc29cIjtcbmltcG9ydCB7IHR5cGUgVG9rZW5DcmVkZW50aWFscywgdHlwZSBUb2tlbkxpc3RQYXJhbXMsIHR5cGUgVG9rZW5TYXZlUGFyYW1zIH0gZnJvbSBcIi4vdG9rZW4udHlwZXNcIjtcblxuY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcInFncmlkXCIsIFwidG9rZW5cIl0pO1xuXG5jb25zdCBERUZBVUxUX1FVT1RBX1RIUkVTSE9MRCA9IDgwO1xuY29uc3QgREVGQVVMVF9XRUlHSFQgPSAxO1xuY29uc3QgVE9LRU5fQVVUSF9ERUFUSF9MT0NLX0NMQVNTX0lEID0gNzE5O1xuXG5leHBvcnQgdHlwZSBUb2tlblVwZGF0ZUZpZWxkcyA9IHtcbiAgbmFtZT86IHN0cmluZztcbiAgcXVvdGFfdGhyZXNob2xkPzogbnVtYmVyIHwgbnVsbDtcbiAgd2VpZ2h0PzogbnVtYmVyO1xuICBrZWVwYWxpdmVfZW5hYmxlZD86IGJvb2xlYW47XG59O1xuXG5mdW5jdGlvbiBhcHBseUNyZWF0ZURlZmF1bHRzKHNwOiBUb2tlblNhdmVQYXJhbXMpOiBUb2tlblNhdmVQYXJhbXMge1xuICBpZiAoc3AuaWQgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHNwO1xuICByZXR1cm4ge1xuICAgIC4uLnNwLFxuICAgIC4uLihzcC5xdW90YV90aHJlc2hvbGQgPT09IHVuZGVmaW5lZCA/IHsgcXVvdGFfdGhyZXNob2xkOiBERUZBVUxUX1FVT1RBX1RIUkVTSE9MRCB9IDoge30pLFxuICAgIC4uLihzcC53ZWlnaHQgPT09IHVuZGVmaW5lZCA/IHsgd2VpZ2h0OiBERUZBVUxUX1dFSUdIVCB9IDoge30pLFxuICB9O1xufVxuXG5jbGFzcyBUb2tlbk1vZGVsQ2xhc3MgZXh0ZW5kcyBCYXNlTW9kZWxDbGFzczxcbiAgVG9rZW5TdWJzZXRLZXksXG4gIFRva2VuU3Vic2V0TWFwcGluZyxcbiAgdHlwZW9mIHRva2VuU3Vic2V0UXVlcmllcyxcbiAgdHlwZW9mIHRva2VuTG9hZGVyUXVlcmllc1xuPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiVG9rZW5cIiwgdG9rZW5TdWJzZXRRdWVyaWVzLCB0b2tlbkxvYWRlclF1ZXJpZXMpO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiR0VUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stcXVlcnlcIl0sIHJlc291cmNlTmFtZTogXCJUb2tlblwiIH0pXG4gIGFzeW5jIGZpbmRCeUlkPFQgZXh0ZW5kcyBUb2tlblN1YnNldEtleT4oc3Vic2V0OiBULCBpZDogbnVtYmVyKTogUHJvbWlzZTxUb2tlblN1YnNldE1hcHBpbmdbVF0+IHtcbiAgICBjb25zdCB7IHJvd3MgfSA9IGF3YWl0IHRoaXMuZmluZE1hbnkoc3Vic2V0LCB7IGlkLCBudW06IDEsIHBhZ2U6IDEgfSk7XG4gICAgaWYgKCFyb3dzWzBdKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb24oU0QoXCJlcnJvci5lbnRpdHlOb3RGb3VuZFwiKShcIlRva2VuXCIsIGlkKSk7XG4gICAgfVxuICAgIHJldHVybiByb3dzWzBdO1xuICB9XG5cbiAgYXN5bmMgZmluZE9uZTxUIGV4dGVuZHMgVG9rZW5TdWJzZXRLZXk+KFxuICAgIHN1YnNldDogVCxcbiAgICBsaXN0UGFyYW1zOiBUb2tlbkxpc3RQYXJhbXMsXG4gICk6IFByb21pc2U8VG9rZW5TdWJzZXRNYXBwaW5nW1RdIHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgcm93cyB9ID0gYXdhaXQgdGhpcy5maW5kTWFueShzdWJzZXQsIHsgLi4ubGlzdFBhcmFtcywgbnVtOiAxLCBwYWdlOiAxIH0pO1xuICAgIHJldHVybiByb3dzWzBdID8/IG51bGw7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJHRVRcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1xdWVyeVwiXSwgcmVzb3VyY2VOYW1lOiBcIlRva2Vuc1wiIH0pXG4gIGFzeW5jIGZpbmRNYW55PFQgZXh0ZW5kcyBUb2tlblN1YnNldEtleSwgTFAgZXh0ZW5kcyBUb2tlbkxpc3RQYXJhbXM+KFxuICAgIHN1YnNldDogVCxcbiAgICByYXdQYXJhbXM/OiBMUCxcbiAgKTogUHJvbWlzZTxMaXN0UmVzdWx0PExQLCBUb2tlblN1YnNldE1hcHBpbmdbVF0+PiB7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgbnVtOiAyNCxcbiAgICAgIHBhZ2U6IDEsXG4gICAgICBzZWFyY2g6IFwiaWRcIiBhcyBjb25zdCxcbiAgICAgIG9yZGVyQnk6IFwib3JkLWFzY1wiIGFzIGNvbnN0LFxuICAgICAgLi4ucmF3UGFyYW1zLFxuICAgIH0gc2F0aXNmaWVzIFRva2VuTGlzdFBhcmFtcztcblxuICAgIGNvbnN0IHsgcWIsIG9uU3Vic2V0OiBfIH0gPSB0aGlzLmdldFN1YnNldFF1ZXJpZXMoc3Vic2V0KTtcblxuICAgIGlmIChwYXJhbXMuaWQpIHtcbiAgICAgIHFiLndoZXJlSW4oXCJ0b2tlbnMuaWRcIiwgYXNBcnJheShwYXJhbXMuaWQpKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLnNlYXJjaCAmJiBwYXJhbXMua2V5d29yZCAmJiBwYXJhbXMua2V5d29yZC5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAocGFyYW1zLnNlYXJjaCA9PT0gXCJpZFwiKSB7XG4gICAgICAgIHFiLndoZXJlKFwidG9rZW5zLmlkXCIsIE51bWJlcihwYXJhbXMua2V5d29yZCkpO1xuICAgICAgfSBlbHNlIGlmIChwYXJhbXMuc2VhcmNoID09PSBcIm5hbWVcIikge1xuICAgICAgICBxYi53aGVyZShcInRva2Vucy5uYW1lXCIsIFwibGlrZVwiLCBgJSR7cGFyYW1zLmtleXdvcmR9JWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFeGNlcHRpb24oU0QoXCJlcnJvci51bmtub3duU2VhcmNoRmllbGRcIikocGFyYW1zLnNlYXJjaCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYXJhbXMub3JkZXJCeSkge1xuICAgICAgaWYgKHBhcmFtcy5vcmRlckJ5ID09PSBcImlkLWRlc2NcIikge1xuICAgICAgICBxYi5vcmRlckJ5KFwidG9rZW5zLmlkXCIsIFwiZGVzY1wiKTtcbiAgICAgIH0gZWxzZSBpZiAocGFyYW1zLm9yZGVyQnkgPT09IFwib3JkLWFzY1wiKSB7XG4gICAgICAgIHFiLm9yZGVyQnkoXCJ0b2tlbnMub3JkXCIsIFwiYXNjXCIpO1xuICAgICAgICBxYi5vcmRlckJ5KFwidG9rZW5zLmlkXCIsIFwiYXNjXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhoYXVzdGl2ZShwYXJhbXMub3JkZXJCeSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZW5oYW5jZXJzID0gdGhpcy5jcmVhdGVFbmhhbmNlcnMoe1xuICAgICAgQTogKHJvdykgPT4gKHsgLi4ucm93IH0pLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVN1YnNldFF1ZXJ5KHsgc3Vic2V0LCBxYiwgcGFyYW1zLCBlbmhhbmNlcnMsIGRlYnVnOiBmYWxzZSB9KTtcbiAgfVxuXG4gIGFzeW5jIGZpbmRCeUFjY291bnRJZGVudGlmaWVyPFQgZXh0ZW5kcyBUb2tlblN1YnNldEtleT4oXG4gICAgc3Vic2V0OiBULFxuICAgIHByb3ZpZGVyOiBzdHJpbmcsXG4gICAgYWNjb3VudElkOiBzdHJpbmcsXG4gICk6IFByb21pc2U8VG9rZW5TdWJzZXRNYXBwaW5nW1RdW10+IHtcbiAgICBjb25zdCB7IHFiIH0gPSB0aGlzLmdldFN1YnNldFF1ZXJpZXMoc3Vic2V0KTtcbiAgICBxYi53aGVyZShcInRva2Vucy5wcm92aWRlclwiLCBwcm92aWRlcik7XG4gICAgY29uc3QganNvbktleSA9IHByb3ZpZGVyID09PSBcImFudGhyb3BpY1wiID8gXCJhY2NvdW50VXVpZFwiIDogXCJhY2NvdW50SWRcIjtcbiAgICBxYi53aGVyZVJhdyhgdG9rZW5zLmNyZWRlbnRpYWxzLT4+JyR7anNvbktleX0nID0gP2AsIFthY2NvdW50SWRdKTtcbiAgICBjb25zdCBlbmhhbmNlcnMgPSB0aGlzLmNyZWF0ZUVuaGFuY2Vycyh7IEE6IChyb3cpID0+ICh7IC4uLnJvdyB9KSB9KTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4ZWN1dGVTdWJzZXRRdWVyeSh7XG4gICAgICBzdWJzZXQsXG4gICAgICBxYixcbiAgICAgIHBhcmFtczogeyBudW06IDEwMCwgcGFnZTogMSB9LFxuICAgICAgZW5oYW5jZXJzLFxuICAgICAgZGVidWc6IGZhbHNlLFxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQucm93cztcbiAgfVxuXG4gIGFzeW5jIGZpbmRBY3RpdmVCeVByb3ZpZGVyPFQgZXh0ZW5kcyBUb2tlblN1YnNldEtleT4oXG4gICAgc3Vic2V0OiBULFxuICAgIHByb3ZpZGVyOiBzdHJpbmcsXG4gICk6IFByb21pc2U8VG9rZW5TdWJzZXRNYXBwaW5nW1RdW10+IHtcbiAgICBjb25zdCB7IHFiIH0gPSB0aGlzLmdldFN1YnNldFF1ZXJpZXMoc3Vic2V0KTtcbiAgICBxYi53aGVyZShcInRva2Vucy5hY3RpdmVcIiwgdHJ1ZSk7XG4gICAgcWIud2hlcmUoXCJ0b2tlbnMucHJvdmlkZXJcIiwgcHJvdmlkZXIpO1xuICAgIGNvbnN0IGVuaGFuY2VycyA9IHRoaXMuY3JlYXRlRW5oYW5jZXJzKHsgQTogKHJvdykgPT4gKHsgLi4ucm93IH0pIH0pO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZXhlY3V0ZVN1YnNldFF1ZXJ5KHtcbiAgICAgIHN1YnNldCxcbiAgICAgIHFiLFxuICAgICAgcGFyYW1zOiB7IG51bTogMTAwLCBwYWdlOiAxIH0sXG4gICAgICBlbmhhbmNlcnMsXG4gICAgICBkZWJ1ZzogZmFsc2UsXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdC5yb3dzO1xuICB9XG5cbiAgYXN5bmMgZmluZEFjdGl2ZUJ5UHJvdmlkZXJBbmROYW1lPFQgZXh0ZW5kcyBUb2tlblN1YnNldEtleT4oXG4gICAgc3Vic2V0OiBULFxuICAgIHByb3ZpZGVyOiBzdHJpbmcsXG4gICAgbmFtZTogc3RyaW5nLFxuICApOiBQcm9taXNlPFRva2VuU3Vic2V0TWFwcGluZ1tUXSB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHsgcWIgfSA9IHRoaXMuZ2V0U3Vic2V0UXVlcmllcyhzdWJzZXQpO1xuICAgIHFiLndoZXJlKFwidG9rZW5zLmFjdGl2ZVwiLCB0cnVlKTtcbiAgICBxYi53aGVyZShcInRva2Vucy5wcm92aWRlclwiLCBwcm92aWRlcik7XG4gICAgcWIud2hlcmUoXCJ0b2tlbnMubmFtZVwiLCBuYW1lKTtcbiAgICBjb25zdCBlbmhhbmNlcnMgPSB0aGlzLmNyZWF0ZUVuaGFuY2Vycyh7IEE6IChyb3cpID0+ICh7IC4uLnJvdyB9KSB9KTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4ZWN1dGVTdWJzZXRRdWVyeSh7XG4gICAgICBzdWJzZXQsXG4gICAgICBxYixcbiAgICAgIHBhcmFtczogeyBudW06IDEsIHBhZ2U6IDEgfSxcbiAgICAgIGVuaGFuY2VycyxcbiAgICAgIGRlYnVnOiBmYWxzZSxcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0LnJvd3NbMF07XG4gIH1cblxuICAvKiog7Iuk7KCcIOyduOymnSDrp4zro4zqsIAg7ZmV7J2464+8IOyerOuhnOq3uOyduOydtCDtlYTsmpTtlZwg7Yag7YGw65OkLiDsiJjrj5kg67mE7Zmc7ISx7ZmU64qUIOygnOyZuO2VnOuLpC4gKi9cbiAgYXN5bmMgZmluZFJlYXV0aFJlcXVpcmVkPFQgZXh0ZW5kcyBUb2tlblN1YnNldEtleT4oc3Vic2V0OiBUKTogUHJvbWlzZTxUb2tlblN1YnNldE1hcHBpbmdbVF1bXT4ge1xuICAgIGNvbnN0IHsgcWIgfSA9IHRoaXMuZ2V0U3Vic2V0UXVlcmllcyhzdWJzZXQpO1xuICAgIHFiLndoZXJlKFwidG9rZW5zLnJlYXV0aF9yZXF1aXJlZFwiLCB0cnVlKTtcbiAgICBxYi5vcmRlckJ5KFwidG9rZW5zLm5hbWVcIiwgXCJhc2NcIik7XG4gICAgY29uc3QgZW5oYW5jZXJzID0gdGhpcy5jcmVhdGVFbmhhbmNlcnMoeyBBOiAocm93KSA9PiAoeyAuLi5yb3cgfSkgfSk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5leGVjdXRlU3Vic2V0UXVlcnkoe1xuICAgICAgc3Vic2V0LFxuICAgICAgcWIsXG4gICAgICBwYXJhbXM6IHsgbnVtOiAxMDAsIHBhZ2U6IDEgfSxcbiAgICAgIGVuaGFuY2VycyxcbiAgICAgIGRlYnVnOiBmYWxzZSxcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0LnJvd3M7XG4gIH1cblxuICBhc3luYyBmaW5kQWN0aXZlPFQgZXh0ZW5kcyBUb2tlblN1YnNldEtleT4oc3Vic2V0OiBUKTogUHJvbWlzZTxUb2tlblN1YnNldE1hcHBpbmdbVF1bXT4ge1xuICAgIGNvbnN0IHsgcWIgfSA9IHRoaXMuZ2V0U3Vic2V0UXVlcmllcyhzdWJzZXQpO1xuICAgIHFiLndoZXJlKFwidG9rZW5zLmFjdGl2ZVwiLCB0cnVlKTtcbiAgICBjb25zdCBlbmhhbmNlcnMgPSB0aGlzLmNyZWF0ZUVuaGFuY2Vycyh7IEE6IChyb3cpID0+ICh7IC4uLnJvdyB9KSB9KTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4ZWN1dGVTdWJzZXRRdWVyeSh7XG4gICAgICBzdWJzZXQsXG4gICAgICBxYixcbiAgICAgIHBhcmFtczogeyBudW06IDEwMCwgcGFnZTogMSB9LFxuICAgICAgZW5oYW5jZXJzLFxuICAgICAgZGVidWc6IGZhbHNlLFxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQucm93cztcbiAgfVxuXG4gIGFzeW5jIHNhdmUoc3BhOiBUb2tlblNhdmVQYXJhbXNbXSk6IFByb21pc2U8bnVtYmVyW10+IHtcbiAgICBjb25zdCB3ZGIgPSB0aGlzLmdldFB1cmkoXCJ3XCIpO1xuICAgIHNwYS5mb3JFYWNoKChzcCkgPT4ge1xuICAgICAgd2RiLnViUmVnaXN0ZXIoXCJ0b2tlbnNcIiwgYXBwbHlDcmVhdGVEZWZhdWx0cyhzcCkpO1xuICAgIH0pO1xuICAgIHJldHVybiB3ZGIudHJhbnNhY3Rpb24oYXN5bmMgKHRyeCkgPT4ge1xuICAgICAgcmV0dXJuIHRyeC51YlVwc2VydChcInRva2Vuc1wiKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZUZpZWxkcyhpZDogbnVtYmVyLCBmaWVsZHM6IFRva2VuVXBkYXRlRmllbGRzKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCB3ZGIgPSB0aGlzLmdldFB1cmkoXCJ3XCIpO1xuICAgIHJldHVybiB3ZGIudHJhbnNhY3Rpb24oKHRyeCkgPT4gdHJ4LnRhYmxlKFwidG9rZW5zXCIpLndoZXJlKFwiaWRcIiwgaWQpLnVwZGF0ZShmaWVsZHMpKTtcbiAgfVxuXG4gIGFzeW5jIHRvZ2dsZUFjdGl2ZShpZDogbnVtYmVyKTogUHJvbWlzZTx7IGFjdGl2ZTogYm9vbGVhbjsgcmVhdXRoUmVxdWlyZWQ6IGJvb2xlYW4gfSB8IG51bGw+IHtcbiAgICBjb25zdCB3ZGIgPSB0aGlzLmdldFB1cmkoXCJ3XCIpO1xuICAgIHJldHVybiB3ZGIudHJhbnNhY3Rpb24oYXN5bmMgKHRyeCkgPT4ge1xuICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCB0cnhcbiAgICAgICAgLmZyb20oXCJ0b2tlbnNcIilcbiAgICAgICAgLnNlbGVjdCh7IGFjdGl2ZTogXCJhY3RpdmVcIiwgcmVhdXRoX3JlcXVpcmVkOiBcInJlYXV0aF9yZXF1aXJlZFwiIH0pXG4gICAgICAgIC53aGVyZShcImlkXCIsIGlkKVxuICAgICAgICAuZm9yVXBkYXRlKClcbiAgICAgICAgLmZpcnN0KCk7XG4gICAgICBpZiAoIXRva2VuKSByZXR1cm4gbnVsbDtcbiAgICAgIGlmICghdG9rZW4uYWN0aXZlICYmIHRva2VuLnJlYXV0aF9yZXF1aXJlZCkge1xuICAgICAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCByZWF1dGhSZXF1aXJlZDogdHJ1ZSB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhY3RpdmUgPSAhdG9rZW4uYWN0aXZlO1xuICAgICAgYXdhaXQgdHJ4LmZyb20oXCJ0b2tlbnNcIikud2hlcmUoXCJpZFwiLCBpZCkudXBkYXRlKHsgYWN0aXZlIH0pO1xuICAgICAgcmV0dXJuIHsgYWN0aXZlLCByZWF1dGhSZXF1aXJlZDogZmFsc2UgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiDqsJnsnYAg6rOE7KCV7J2YIOq4sOyhtCDthqDtgbDsnYQg7KeA7Jqw6rOgIOyDiOuhnCDsoIDsnqXtlZzri6Qo66Gc6re47J24wrfsnqzroZzqt7jsnbgg6rO17Ya1IOqyveuhnCkuXG4gICAqXG4gICAqIHByb3ZpZGVyIOydkeuLteyXkCDqs4TsoJUg7Iud67OE7J6Q6rCAIOyXhuycvOuptCBkZWR1cCDsnpDssrTqsIAg67aI6rCA64ql7ZWY66+A66GcIOqyveqzoOunjCDrgqjquLDqs6BcbiAgICog7KSR67O1IOygnOqxsCDsl4bsnbQg7KCA7J6l7ZWc64ukKOyjveydgCByb3cg6rCAIOuCqOuKlOuLpCkuXG4gICAqL1xuICBhc3luYyByZXBsYWNlQnlBY2NvdW50KFxuICAgIHByb3ZpZGVyOiBzdHJpbmcsXG4gICAgYWNjb3VudElkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgc2F2ZVBhcmFtczogVG9rZW5TYXZlUGFyYW1zLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQga2VlcGFsaXZlRW5hYmxlZCA9IHNhdmVQYXJhbXMua2VlcGFsaXZlX2VuYWJsZWQ7XG4gICAgaWYgKGFjY291bnRJZCkge1xuICAgICAgY29uc3Qgb2xkRW50cmllcyA9IGF3YWl0IHRoaXMuZmluZEJ5QWNjb3VudElkZW50aWZpZXIoXCJBXCIsIHByb3ZpZGVyLCBhY2NvdW50SWQpO1xuICAgICAgaWYgKGtlZXBhbGl2ZUVuYWJsZWQgPT09IHVuZGVmaW5lZCAmJiBvbGRFbnRyaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAga2VlcGFsaXZlRW5hYmxlZCA9IG9sZEVudHJpZXMuc29tZSgoZW50cnkpID0+IGVudHJ5LmtlZXBhbGl2ZV9lbmFibGVkKTtcbiAgICAgIH1cbiAgICAgIGlmIChvbGRFbnRyaWVzLmxlbmd0aCA+IDApIGF3YWl0IHRoaXMuZGVsKG9sZEVudHJpZXMubWFwKChvKSA9PiBvLmlkKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ2dlci53YXJuKFxuICAgICAgICBgJHtwcm92aWRlcn0gbG9naW4gd2l0aG91dCBhY2NvdW50IGlkZW50aWZpZXI6IGRlZHVwIHNraXBwZWQgZm9yICR7c2F2ZVBhcmFtcy5uYW1lID8/IFwidW5uYW1lZFwifWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc2F2ZShbXG4gICAgICBrZWVwYWxpdmVFbmFibGVkID09PSB1bmRlZmluZWRcbiAgICAgICAgPyBzYXZlUGFyYW1zXG4gICAgICAgIDogeyAuLi5zYXZlUGFyYW1zLCBrZWVwYWxpdmVfZW5hYmxlZDoga2VlcGFsaXZlRW5hYmxlZCB9LFxuICAgIF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIOyduOymnSDsgqzrp53snYQg7ZWcIOuyiOunjCDquLDroZ3tlZjqs6AsIOuLpOuluCDtmZzshLEg7Yag7YGw7J20IOyeiOycvOuptCDrnbzsmrDtjIXsl5DshJzrj4Qg7KCc7Jm47ZWc64ukLlxuICAgKiDrp4jsp4Drp4kg7Zmc7ISxIO2GoO2BsOydgCBzeXN0ZW1pYyDsnqXslaAg7JWI7KCE7YyQIOuVjOusuOyXkCBhY3RpdmUg7IOB7YOc66W8IOycoOyngO2VmOuQmCDsnqzroZzqt7jsnbhcbiAgICog7ZWE7JqUIOyDge2DnOuKlCDquLDroZ3tlZzri6QuIGBtYXJrZWRg6rCAIOqzteycoCBEQiDsnbjsiqTthLTsiqTrk6TsnZgg7JWM66a8IOuwnOyGoSDqsozsnbTtirjri6QuXG4gICAqL1xuICBhc3luYyBtYXJrUmVhdXRoUmVxdWlyZWQoXG4gICAgaWQ6IG51bWJlcixcbiAgICBleHBlY3RlZENyZWRlbnRpYWxzOiBUb2tlbkNyZWRlbnRpYWxzLFxuICApOiBQcm9taXNlPHsgbWFya2VkOiBib29sZWFuOyBrZXB0QXNMYXN0QWN0aXZlOiBib29sZWFuOyBzdGFsZUNyZWRlbnRpYWxzOiBib29sZWFuIH0+IHtcbiAgICBjb25zdCB3ZGIgPSB0aGlzLmdldFB1cmkoXCJ3XCIpO1xuICAgIHJldHVybiB3ZGIudHJhbnNhY3Rpb24oYXN5bmMgKHRyeCkgPT4ge1xuICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCB0cnhcbiAgICAgICAgLmZyb20oXCJ0b2tlbnNcIilcbiAgICAgICAgLnNlbGVjdCh7XG4gICAgICAgICAgcHJvdmlkZXI6IFwicHJvdmlkZXJcIixcbiAgICAgICAgICBjcmVkZW50aWFsczogXCJjcmVkZW50aWFsc1wiLFxuICAgICAgICAgIHJlYXV0aF9yZXF1aXJlZDogXCJyZWF1dGhfcmVxdWlyZWRcIixcbiAgICAgICAgfSlcbiAgICAgICAgLndoZXJlKFwiaWRcIiwgaWQpXG4gICAgICAgIC5mb3JVcGRhdGUoKVxuICAgICAgICAuZmlyc3QoKTtcbiAgICAgIGlmICghdG9rZW4gfHwgdG9rZW4ucmVhdXRoX3JlcXVpcmVkKSB7XG4gICAgICAgIHJldHVybiB7IG1hcmtlZDogZmFsc2UsIGtlcHRBc0xhc3RBY3RpdmU6IGZhbHNlLCBzdGFsZUNyZWRlbnRpYWxzOiBmYWxzZSB9O1xuICAgICAgfVxuICAgICAgaWYgKCFpc0RlZXBTdHJpY3RFcXVhbCh0b2tlbi5jcmVkZW50aWFscywgZXhwZWN0ZWRDcmVkZW50aWFscykpIHtcbiAgICAgICAgcmV0dXJuIHsgbWFya2VkOiBmYWxzZSwga2VwdEFzTGFzdEFjdGl2ZTogZmFsc2UsIHN0YWxlQ3JlZGVudGlhbHM6IHRydWUgfTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgdHJ4LmtuZXgucmF3KFwiU0VMRUNUIHBnX2Fkdmlzb3J5X3hhY3RfbG9jayg/LCBoYXNodGV4dCg/KSlcIiwgW1xuICAgICAgICBUT0tFTl9BVVRIX0RFQVRIX0xPQ0tfQ0xBU1NfSUQsXG4gICAgICAgIHRva2VuLnByb3ZpZGVyLFxuICAgICAgXSk7XG4gICAgICBjb25zdCB1cGRhdGVkID0gYXdhaXQgdHJ4LmtuZXgucmF3PHsgcm93czogeyBhY3RpdmU6IGJvb2xlYW4gfVtdIH0+KFxuICAgICAgICBgVVBEQVRFIHRva2Vuc1xuICAgICAgICAgU0VUIHJlYXV0aF9yZXF1aXJlZCA9IHRydWUsXG4gICAgICAgICAgICAgYWN0aXZlID0gQ0FTRVxuICAgICAgICAgICAgICAgV0hFTiBhY3RpdmUgQU5EIChTRUxFQ1QgY291bnQoKikgRlJPTSB0b2tlbnMgcGVlclxuICAgICAgICAgICAgICAgICBXSEVSRSBwZWVyLnByb3ZpZGVyID0gdG9rZW5zLnByb3ZpZGVyIEFORCBwZWVyLmFjdGl2ZSkgPiAxXG4gICAgICAgICAgICAgICBUSEVOIGZhbHNlXG4gICAgICAgICAgICAgICBFTFNFIGFjdGl2ZVxuICAgICAgICAgICAgIEVORFxuICAgICAgICAgV0hFUkUgaWQgPSA/IEFORCByZWF1dGhfcmVxdWlyZWQgPSBmYWxzZVxuICAgICAgICAgUkVUVVJOSU5HIGFjdGl2ZWAsXG4gICAgICAgIFtpZF0sXG4gICAgICApO1xuICAgICAgY29uc3QgbWFya2VkID0gdXBkYXRlZC5yb3dzWzBdO1xuICAgICAgaWYgKCFtYXJrZWQpIHJldHVybiB7IG1hcmtlZDogZmFsc2UsIGtlcHRBc0xhc3RBY3RpdmU6IGZhbHNlLCBzdGFsZUNyZWRlbnRpYWxzOiBmYWxzZSB9O1xuXG4gICAgICBpZiAobWFya2VkLmFjdGl2ZSkge1xuICAgICAgICBsb2dnZXIuZXJyb3IoXG4gICAgICAgICAgYHJlZnVzaW5nIHRvIGF1dG8tZGVhY3RpdmF0ZSB0b2tlbiAke2lkfTogbGFzdCBhY3RpdmUgcHJvdmlkZXIgdG9rZW4g4oCUIGAgK1xuICAgICAgICAgICAgYHN5c3RlbWljIHJlZnJlc2ggZmFpbHVyZSBzdXNwZWN0ZWQsIGtlZXBpbmcgdGhlIHBvb2wgbm9uLWVtcHR5YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IG1hcmtlZDogdHJ1ZSwga2VwdEFzTGFzdEFjdGl2ZTogbWFya2VkLmFjdGl2ZSwgc3RhbGVDcmVkZW50aWFsczogZmFsc2UgfTtcbiAgICB9KTtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIlBPU1RcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1tdXRhdGlvblwiXSB9KVxuICBhc3luYyByZW9yZGVyKGlkczogbnVtYmVyW10pOiBQcm9taXNlPHsgZG9uZTogYm9vbGVhbiB9PiB7XG4gICAgY29uc3Qgd2RiID0gdGhpcy5nZXRQdXJpKFwid1wiKTtcbiAgICBhd2FpdCB3ZGIudHJhbnNhY3Rpb24oYXN5bmMgKHRyeCkgPT4ge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYXdhaXQgdHJ4LnRhYmxlKFwidG9rZW5zXCIpLndoZXJlKFwiaWRcIiwgaWRzW2ldISkudXBkYXRlKHsgb3JkOiBpIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB7IGRvbmU6IHRydWUgfTtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIlBPU1RcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1tdXRhdGlvblwiXSB9KVxuICBhc3luYyBkZWwoaWRzOiBudW1iZXJbXSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3Qgd2RiID0gdGhpcy5nZXRQdXJpKFwid1wiKTtcbiAgICBhd2FpdCB3ZGIudHJhbnNhY3Rpb24oYXN5bmMgKHRyeCkgPT4ge1xuICAgICAgcmV0dXJuIHRyeC50YWJsZShcInRva2Vuc1wiKS53aGVyZUluKFwidG9rZW5zLmlkXCIsIGlkcykuZGVsZXRlKCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGlkcy5sZW5ndGg7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFRva2VuTW9kZWwgPSBuZXcgVG9rZW5Nb2RlbENsYXNzKCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBa0JBLE1BQU0sU0FBUyxVQUFVLENBQUMsU0FBUyxPQUFPLENBQUM7QUFFM0MsTUFBTSwwQkFBMEI7QUFDaEMsTUFBTSxpQkFBaUI7QUFDdkIsTUFBTSxpQ0FBaUM7QUFTdkMsU0FBUyxvQkFBb0IsSUFBc0M7Q0FDakUsSUFBSSxHQUFHLE9BQU8sUUFBVyxPQUFPO0NBQ2hDLE9BQU87RUFDTCxHQUFHO0VBQ0gsR0FBSSxHQUFHLG9CQUFvQixTQUFZLEVBQUUsaUJBQWlCLHdCQUF3QixJQUFJLENBQUM7RUFDdkYsR0FBSSxHQUFHLFdBQVcsU0FBWSxFQUFFLFFBQVEsZUFBZSxJQUFJLENBQUM7Q0FDOUQ7QUFDRjtBQUVBLElBQU0sa0JBQU4sY0FBOEIsZUFLNUI7Q0FDQSxjQUFjO0VBQ1osTUFBTSxTQUFTLG9CQUFvQixrQkFB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
@@ -24,6 +24,7 @@ const TokenSaveParams = TokenBaseSchema.partial({
24
24
  id: true,
25
25
  created_at: true,
26
26
  active: true,
27
+ reauth_required: true,
27
28
  ord: true,
28
29
  quota_threshold: true,
29
30
  weight: true,
@@ -35,4 +36,4 @@ const TokenSaveParams = TokenBaseSchema.partial({
35
36
  //#endregion
36
37
  export { AnthropicCredentials, OpenAICredentials, TokenCredentials, TokenListParams, TokenSaveParams };
37
38
 
38
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4udHlwZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3Rva2VuL3Rva2VuLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB7IFRva2VuQmFzZUxpc3RQYXJhbXMsIFRva2VuQmFzZVNjaGVtYSB9IGZyb20gXCIuLi9zb25hbXUuZ2VuZXJhdGVkXCI7XG5cbi8vIOKUgOKUgCBDcmVkZW50aWFscyBKU09OQiBzY2hlbWEgKFNvbmFtdSBqc29uIHByb3Ag7J2YIGlkOiBcIlRva2VuQ3JlZGVudGlhbHNcIiDqsIAg7LC47KGwKSDilIDilIBcblxuZXhwb3J0IGNvbnN0IEFudGhyb3BpY0NyZWRlbnRpYWxzID0gei5vYmplY3Qoe1xuICBhY2Nlc3NUb2tlbjogei5zdHJpbmcoKSxcbiAgcmVmcmVzaFRva2VuOiB6LnN0cmluZygpLFxuICBleHBpcmVzQXQ6IHoubnVtYmVyKCksXG4gIGFjY291bnRVdWlkOiB6LnN0cmluZygpLFxufSk7XG5leHBvcnQgdHlwZSBBbnRocm9waWNDcmVkZW50aWFscyA9IHouaW5mZXI8dHlwZW9mIEFudGhyb3BpY0NyZWRlbnRpYWxzPjtcblxuZXhwb3J0IGNvbnN0IE9wZW5BSUNyZWRlbnRpYWxzID0gei5vYmplY3Qoe1xuICBhY2Nlc3NUb2tlbjogei5zdHJpbmcoKSxcbiAgcmVmcmVzaFRva2VuOiB6LnN0cmluZygpLFxuICBpZFRva2VuOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGFjY2Vzc1Rva2VuRXhwaXJlc0F0OiB6Lm51bWJlcigpLFxuICBpZFRva2VuRXhwaXJlc0F0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGFjY291bnRJZDogei5zdHJpbmcoKSxcbiAgcGxhblR5cGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgT3BlbkFJQ3JlZGVudGlhbHMgPSB6LmluZmVyPHR5cGVvZiBPcGVuQUlDcmVkZW50aWFscz47XG5cbmV4cG9ydCBjb25zdCBUb2tlbkNyZWRlbnRpYWxzID0gei51bmlvbihbQW50aHJvcGljQ3JlZGVudGlhbHMsIE9wZW5BSUNyZWRlbnRpYWxzXSk7XG5leHBvcnQgdHlwZSBUb2tlbkNyZWRlbnRpYWxzID0gei5pbmZlcjx0eXBlb2YgVG9rZW5DcmVkZW50aWFscz47XG5cbi8vIFRva2VuIC0gTGlzdFBhcmFtc1xuZXhwb3J0IGNvbnN0IFRva2VuTGlzdFBhcmFtcyA9IFRva2VuQmFzZUxpc3RQYXJhbXM7XG5leHBvcnQgdHlwZSBUb2tlbkxpc3RQYXJhbXMgPSB6LmluZmVyPHR5cGVvZiBUb2tlbkxpc3RQYXJhbXM+O1xuXG5jb25zdCBUb2tlblF1b3RhVGhyZXNob2xkID0gei5pbnQoKS5taW4oMSkubWF4KDEwMCkubnVsbGFibGUoKTtcbmNvbnN0IFRva2VuV2VpZ2h0ID0gei5pbnQoKS5taW4oMSkubWF4KDEwMCk7XG5cbi8vIFRva2VuIC0gU2F2ZVBhcmFtc1xuZXhwb3J0IGNvbnN0IFRva2VuU2F2ZVBhcmFtcyA9IFRva2VuQmFzZVNjaGVtYS5wYXJ0aWFsKHtcbiAgaWQ6IHRydWUsXG4gIGNyZWF0ZWRfYXQ6IHRydWUsXG4gIGFjdGl2ZTogdHJ1ZSxcbiAgb3JkOiB0cnVlLFxuICBxdW90YV90aHJlc2hvbGQ6IHRydWUsXG4gIHdlaWdodDogdHJ1ZSxcbiAga2VlcGFsaXZlX2VuYWJsZWQ6IHRydWUsXG59KS5leHRlbmQoe1xuICBxdW90YV90aHJlc2hvbGQ6IFRva2VuUXVvdGFUaHJlc2hvbGQub3B0aW9uYWwoKSxcbiAgd2VpZ2h0OiBUb2tlbldlaWdodC5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBUb2tlblNhdmVQYXJhbXMgPSB6LmluZmVyPHR5cGVvZiBUb2tlblNhdmVQYXJhbXM+O1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFNQSxNQUFhLHVCQUF1QixFQUFFLE9BQU87Q0FDM0MsYUFBYSxFQUFFLE9BQU87Q0FDdEIsY0FBYyxFQUFFLE9BQU87Q0FDdkIsV0FBVyxFQUFFLE9BQU87Q0FDcEIsYUFBYSxFQUFFLE9BQU87QUFDeEIsQ0FBQztBQUdELE1BQWEsb0JBQW9CLEVBQUUsT0FBTztDQUN4QyxhQUFhLEVBQUUsT0FBTztDQUN0QixjQUFjLEVBQUUsT0FBTztDQUN2QixTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUztDQUM3QixzQkFBc0IsRUFBRSxPQUFPO0NBQy9CLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVM7Q0FDdEMsV0FBVyxFQUFFLE9BQU87Q0FDcEIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVM7QUFDaEMsQ0FBQztBQUdELE1BQWEsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLHNCQUFzQixpQkFBaUIsQ0FBQztBQUlqRixNQUFhLGtCQUFrQjtBQUcvQixNQUFNLHNCQUFzQixFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTO0FBQzdELE1BQU0sY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHO0FBRzFDLE1BQWEsa0JBQWtCLGdCQUFnQixRQUFRO0NBQ3JELElBQUk7Q0FDSixZQUFZO0NBQ1osUUFBUTtDQUNSLEtBQUs7Q0FDTCxpQkFBaUI7Q0FDakIsUUFBUTtDQUNSLG1CQUFtQjtBQUNyQixDQUFDLENBQUMsQ0FBQyxPQUFPO0NBQ1IsaUJBQWlCLG9CQUFvQixTQUFTO0NBQzlDLFFBQVEsWUFBWSxTQUFTO0FBQy9CLENBQUMifQ==
39
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4udHlwZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3Rva2VuL3Rva2VuLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB7IFRva2VuQmFzZUxpc3RQYXJhbXMsIFRva2VuQmFzZVNjaGVtYSB9IGZyb20gXCIuLi9zb25hbXUuZ2VuZXJhdGVkXCI7XG5cbi8vIOKUgOKUgCBDcmVkZW50aWFscyBKU09OQiBzY2hlbWEgKFNvbmFtdSBqc29uIHByb3Ag7J2YIGlkOiBcIlRva2VuQ3JlZGVudGlhbHNcIiDqsIAg7LC47KGwKSDilIDilIBcblxuZXhwb3J0IGNvbnN0IEFudGhyb3BpY0NyZWRlbnRpYWxzID0gei5vYmplY3Qoe1xuICBhY2Nlc3NUb2tlbjogei5zdHJpbmcoKSxcbiAgcmVmcmVzaFRva2VuOiB6LnN0cmluZygpLFxuICBleHBpcmVzQXQ6IHoubnVtYmVyKCksXG4gIGFjY291bnRVdWlkOiB6LnN0cmluZygpLFxufSk7XG5leHBvcnQgdHlwZSBBbnRocm9waWNDcmVkZW50aWFscyA9IHouaW5mZXI8dHlwZW9mIEFudGhyb3BpY0NyZWRlbnRpYWxzPjtcblxuZXhwb3J0IGNvbnN0IE9wZW5BSUNyZWRlbnRpYWxzID0gei5vYmplY3Qoe1xuICBhY2Nlc3NUb2tlbjogei5zdHJpbmcoKSxcbiAgcmVmcmVzaFRva2VuOiB6LnN0cmluZygpLFxuICBpZFRva2VuOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGFjY2Vzc1Rva2VuRXhwaXJlc0F0OiB6Lm51bWJlcigpLFxuICBpZFRva2VuRXhwaXJlc0F0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGFjY291bnRJZDogei5zdHJpbmcoKSxcbiAgcGxhblR5cGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgT3BlbkFJQ3JlZGVudGlhbHMgPSB6LmluZmVyPHR5cGVvZiBPcGVuQUlDcmVkZW50aWFscz47XG5cbmV4cG9ydCBjb25zdCBUb2tlbkNyZWRlbnRpYWxzID0gei51bmlvbihbQW50aHJvcGljQ3JlZGVudGlhbHMsIE9wZW5BSUNyZWRlbnRpYWxzXSk7XG5leHBvcnQgdHlwZSBUb2tlbkNyZWRlbnRpYWxzID0gei5pbmZlcjx0eXBlb2YgVG9rZW5DcmVkZW50aWFscz47XG5cbi8vIFRva2VuIC0gTGlzdFBhcmFtc1xuZXhwb3J0IGNvbnN0IFRva2VuTGlzdFBhcmFtcyA9IFRva2VuQmFzZUxpc3RQYXJhbXM7XG5leHBvcnQgdHlwZSBUb2tlbkxpc3RQYXJhbXMgPSB6LmluZmVyPHR5cGVvZiBUb2tlbkxpc3RQYXJhbXM+O1xuXG5jb25zdCBUb2tlblF1b3RhVGhyZXNob2xkID0gei5pbnQoKS5taW4oMSkubWF4KDEwMCkubnVsbGFibGUoKTtcbmNvbnN0IFRva2VuV2VpZ2h0ID0gei5pbnQoKS5taW4oMSkubWF4KDEwMCk7XG5cbi8vIFRva2VuIC0gU2F2ZVBhcmFtc1xuZXhwb3J0IGNvbnN0IFRva2VuU2F2ZVBhcmFtcyA9IFRva2VuQmFzZVNjaGVtYS5wYXJ0aWFsKHtcbiAgaWQ6IHRydWUsXG4gIGNyZWF0ZWRfYXQ6IHRydWUsXG4gIGFjdGl2ZTogdHJ1ZSxcbiAgcmVhdXRoX3JlcXVpcmVkOiB0cnVlLFxuICBvcmQ6IHRydWUsXG4gIHF1b3RhX3RocmVzaG9sZDogdHJ1ZSxcbiAgd2VpZ2h0OiB0cnVlLFxuICBrZWVwYWxpdmVfZW5hYmxlZDogdHJ1ZSxcbn0pLmV4dGVuZCh7XG4gIHF1b3RhX3RocmVzaG9sZDogVG9rZW5RdW90YVRocmVzaG9sZC5vcHRpb25hbCgpLFxuICB3ZWlnaHQ6IFRva2VuV2VpZ2h0Lm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIFRva2VuU2F2ZVBhcmFtcyA9IHouaW5mZXI8dHlwZW9mIFRva2VuU2F2ZVBhcmFtcz47XG4iXSwibWFwcGluZ3MiOiI7OztBQU1BLE1BQWEsdUJBQXVCLEVBQUUsT0FBTztDQUMzQyxhQUFhLEVBQUUsT0FBTztDQUN0QixjQUFjLEVBQUUsT0FBTztDQUN2QixXQUFXLEVBQUUsT0FBTztDQUNwQixhQUFhLEVBQUUsT0FBTztBQUN4QixDQUFDO0FBR0QsTUFBYSxvQkFBb0IsRUFBRSxPQUFPO0NBQ3hDLGFBQWEsRUFBRSxPQUFPO0NBQ3RCLGNBQWMsRUFBRSxPQUFPO0NBQ3ZCLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0NBQzdCLHNCQUFzQixFQUFFLE9BQU87Q0FDL0Isa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUztDQUN0QyxXQUFXLEVBQUUsT0FBTztDQUNwQixVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUztBQUNoQyxDQUFDO0FBR0QsTUFBYSxtQkFBbUIsRUFBRSxNQUFNLENBQUMsc0JBQXNCLGlCQUFpQixDQUFDO0FBSWpGLE1BQWEsa0JBQWtCO0FBRy9CLE1BQU0sc0JBQXNCLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVM7QUFDN0QsTUFBTSxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUc7QUFHMUMsTUFBYSxrQkFBa0IsZ0JBQWdCLFFBQVE7Q0FDckQsSUFBSTtDQUNKLFlBQVk7Q0FDWixRQUFRO0NBQ1IsaUJBQWlCO0NBQ2pCLEtBQUs7Q0FDTCxpQkFBaUI7Q0FDakIsUUFBUTtDQUNSLG1CQUFtQjtBQUNyQixDQUFDLENBQUMsQ0FBQyxPQUFPO0NBQ1IsaUJBQWlCLG9CQUFvQixTQUFTO0NBQzlDLFFBQVEsWUFBWSxTQUFTO0FBQy9CLENBQUMifQ==