@projectcor/maia-components 2.38.4 → 2.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +2 -0
  2. package/lib/components/atoms/ActionableButton.js +1 -6
  3. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +4 -14
  4. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.styles.js +3 -12
  5. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +4 -20
  6. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +7 -18
  7. package/lib/components/atoms/MAIAInput/MAIAInput.js +14 -29
  8. package/lib/components/atoms/MAIAInput/styles.js +29 -36
  9. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.js +3 -3
  10. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.styles.js +2 -2
  11. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +5 -16
  12. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +2 -23
  13. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +5 -33
  14. package/lib/components/molecules/ChatAIHome/styles.js +2 -11
  15. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.js +20 -31
  16. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +2 -7
  17. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +56 -0
  18. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +202 -134
  19. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +2 -2
  20. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +1 -8
  21. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.styles.js +9 -15
  22. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +3 -18
  23. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +2 -2
  24. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +2 -13
  25. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +5 -14
  26. package/lib/components/molecules/ChatAIModal/layout.js +2 -2
  27. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +2 -12
  28. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +3 -3
  29. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +10 -34
  30. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +6 -14
  31. package/lib/components/molecules/ChatFooter/ChatFooter.js +45 -66
  32. package/lib/components/molecules/ChatFooter/styles.js +6 -12
  33. package/lib/components/molecules/MessageFeedback/MessageFeedback.js +5 -15
  34. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +2 -2
  35. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +11 -30
  36. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +18 -31
  37. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +21 -41
  38. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +2 -2
  39. package/lib/components/organisms/ChatAI/ChatAI.js +1 -6
  40. package/lib/constants/formatExtensions.js +7 -8
  41. package/lib/hooks/useChatManager/useChatManager.js +34 -55
  42. package/lib/lang/br/index.js +2 -6
  43. package/lib/lang/en/index.js +2 -6
  44. package/lib/lang/es/index.js +2 -6
  45. package/lib/lang/fr/index.js +3 -7
  46. package/lib/services/maia/Agents/getAgents.js +5 -5
  47. package/lib/services/maia/index.js +2 -4
  48. package/lib/services/utils/fetchCOR.js +57 -106
  49. package/lib/services/utils/index.js +1 -2
  50. package/lib/store/index.js +1 -2
  51. package/lib/store/sessions/sessionStreamManager.js +35 -70
  52. package/lib/store/sessions/sessions.types.js +1 -1
  53. package/package.json +2 -2
  54. package/lib/components/molecules/UsageBlockedBanner/UsageBlockedBanner.js +0 -30
  55. package/lib/components/molecules/UsageBlockedBanner/UsageBlockedBanner.styles.js +0 -47
  56. package/lib/components/molecules/UsageBlockedBanner/index.js +0 -2
  57. package/lib/lang/__mocks__/index.js +0 -9
  58. package/lib/services/maia/Usage/getUsage.js +0 -45
  59. package/lib/services/maia/Usage/index.js +0 -6
  60. package/lib/services/utils/MaiaApiError.js +0 -34
  61. package/lib/store/useUsageStore.js +0 -115
  62. package/lib/types/usage.js +0 -16
  63. package/lib/utils/usageBlockedMessage.js +0 -11
@@ -213,14 +213,14 @@ export var useGetAgents = function useGetAgents(_ref) {
213
213
  _context4.next = 1;
214
214
  break;
215
215
  }
216
- return _context4.abrupt("return");
216
+ return _context4.abrupt("return", agentsRef.current.data);
217
217
  case 1:
218
218
  requestKey = (agentToSelect === null || agentToSelect === void 0 || (_agentToSelect$id = agentToSelect.id) === null || _agentToSelect$id === void 0 ? void 0 : _agentToSelect$id.toString()) || 'default';
219
219
  if (!(lastRequestRef.current === requestKey && !loading)) {
220
220
  _context4.next = 2;
221
221
  break;
222
222
  }
223
- return _context4.abrupt("return");
223
+ return _context4.abrupt("return", agentsRef.current.data);
224
224
  case 2:
225
225
  isRefreshingRef.current = true;
226
226
  lastRequestRef.current = requestKey;
@@ -511,13 +511,13 @@ export var useGetAgents = function useGetAgents(_ref) {
511
511
  }
512
512
  }
513
513
  setLoading(false);
514
- _context4.next = 14;
515
- break;
514
+ return _context4.abrupt("return", agentParsed);
516
515
  case 13:
517
516
  _context4.prev = 13;
518
517
  _t5 = _context4["catch"](3);
519
518
  setError(_t5 instanceof Error ? _t5.message : 'An unknown error occurred');
520
519
  setLoading(false);
520
+ return _context4.abrupt("return", agentsRef.current.data);
521
521
  case 14:
522
522
  _context4.prev = 14;
523
523
  isRefreshingRef.current = false;
@@ -719,4 +719,4 @@ export var useGetAgents = function useGetAgents(_ref) {
719
719
  sortAgentsList: sortAgentsList
720
720
  };
721
721
  };
722
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlVHJhbnNsYXRpb24iLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJmZXRjaE1haWEiLCJ3aXRoTm9ybWFsaXplZENvbm5lY3RvcnMiLCJ1c2VVc2VyIiwiaXNNYWlhQ2xvbmVBZ2VudHNSb2xlQmxvY2tlZCIsIm1hcENPUkxhbmciLCJpc01haWFBZ2VudCIsImFnZW50IiwidHlwZSIsImlzNDAzQWdlbnRGZXRjaEVycm9yIiwiZXJyIiwiX2Vycm9yJHJlc3BvbnNlIiwiX2Vycm9yJG1lc3NhZ2UiLCJfZXJyb3IkbWVzc2FnZTIiLCJlcnJvciIsInJlc3BvbnNlIiwic3RhdHVzIiwiQm9vbGVhbiIsIm1lc3NhZ2UiLCJpbmNsdWRlcyIsIm1lcmdlQWdlbnRzV2l0aG91dER1cGxpY2F0ZXMiLCJiYXNlIiwiZXh0cmEiLCJpZHMiLCJTZXQiLCJtYXAiLCJpZCIsIm1lcmdlZCIsIl90b0NvbnN1bWFibGVBcnJheSIsImZvckVhY2giLCJoYXMiLCJwdXNoIiwic29ydEFnZW50cyIsImFnZW50cyIsIm1haWFBZ2VudHMiLCJmaWx0ZXIiLCJvdGhlckFnZW50cyIsImFnIiwiZmF2b3JpdGVzIiwiaXNfZmF2b3JpdGUiLCJzb3J0IiwiYSIsImIiLCJuYW1lIiwibG9jYWxlQ29tcGFyZSIsIm5vbkZhdm9yaXRlcyIsImxlbmd0aCIsImNvbmNhdCIsIm5vcm1hbGl6ZUN1c3RvbUFnZW50c0Zyb21BcGkiLCJ1c2VHZXRBZ2VudHMiLCJfcmVmIiwic2VsZWN0QWdlbnQiLCJzZWN0aW9uIiwiaGFuZGxlR29Ib21lIiwidXNlciIsIl91c2VTdGF0ZSIsImRhdGEiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzZXRBZ2VudHMiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJsb2FkaW5nTW9yZSIsInNldExvYWRpbmdNb3JlIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJzZWFyY2hMb2FkaW5nIiwic2V0U2VhcmNoTG9hZGluZyIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic2V0RXJyb3IiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsIl91c2VUcmFuc2xhdGlvbiIsInQiLCJpMThuIiwibGFzdFNlbGVjdGVkQWdlbnRSZWYiLCJpc1JlZnJlc2hpbmdSZWYiLCJsYXN0UmVxdWVzdFJlZiIsImFnZW50c1JlZiIsInByZVNlYXJjaEFnZW50c1JlZiIsImN1cnJlbnQiLCJhZGRBZ2VudCIsIm5ld0FnZW50Iiwib3B0aW9ucyIsInByZXYiLCJhZ2VudEV4aXN0cyIsInNvbWUiLCJleGlzdGluZ0FnZW50IiwibmV3RGF0YSIsInNvcnRlZERhdGEiLCJfb2JqZWN0U3ByZWFkIiwibmF2aWdhdGVIb21lIiwicmVtb3ZlQWdlbnQiLCJhZ2VudElkIiwidG9TdHJpbmciLCJ1cGRhdGVBZ2VudCIsInVwZGF0ZWRBZ2VudCIsInVwZGF0ZWREYXRhIiwidXBkYXRlQWdlbnRGYXZvcml0ZSIsInNob3VsZFNvcnQiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfcmVmMiIsImFnZW50RmllbGRzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwibWVyZ2VkQWdlbnQiLCJmaW5hbERhdGEiLCJmaW5kIiwiX3JlZjMiLCJfZXhjbHVkZWQyIiwiX3JlZjQiLCJfZXhjbHVkZWQzIiwic29ydEFnZW50c0xpc3QiLCJzZWxlY3RGaXJzdEFnZW50IiwiZmlyc3RBZ2VudCIsImZpbmRJbmRleCIsImFnZW50RGF0YSIsImhhbmRsZUdldEFnZW50cyIsIl9yZWY1IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWU0IiwiYWdlbnRUb1NlbGVjdCIsIl9hZ2VudFRvU2VsZWN0JGlkIiwicmVxdWVzdEtleSIsImlzTXVsdGlBZ2VudHMiLCJhZ2VudFBhcnNlZCIsImhhc01vcmUiLCJuZXh0T2Zmc2V0IiwiY2xvbmVBZ2VudHNSb2xlQmxvY2tlZCIsImNhbkZldGNoQ2xvbmVBZ2VudHMiLCJmZXRjaEdsb2JhbENsb25lQWdlbnRzIiwiY3VzdG9tQWdlbnRzIiwiY3VzdG9tSGFzTW9yZSIsImN1c3RvbU5leHRPZmZzZXQiLCJpczQwMyIsImxvYWRDbG9uZUFnZW50cyIsImxvYWRDdXN0b21BZ2VudHMiLCJxdWVyeVBhcmFtcyIsInF1ZXJ5U3RyaW5nIiwicGF0aCIsImdsb2JhbENsb25lQWdlbnRzIiwiX3Jlc3BvbnNlRXJyb3IkcmVzcG9uIiwiX3Jlc3BvbnNlRXJyb3IkbWVzc2FnIiwiX3Jlc3BvbnNlRXJyb3IkbWVzc2FnMiIsImlzNDAzRXJyb3IiLCJfbGFzdFNlbGVjdGVkQWdlbnRSZWYiLCJpbkxpc3QiLCJzZWxlY3RlZCIsIl9sYXN0U2VsZWN0ZWRBZ2VudFJlZjIiLCJhdmFpbGFibGVBZ2VudHMiLCJfYXZhaWxhYmxlQWdlbnRzIiwiX3Q0IiwiX3Q1Iiwid3JhcCIsIl9jb250ZXh0NCIsIm5leHQiLCJhYnJ1cHQiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiX3JlZjYiLCJfY2FsbGVlIiwiY2xvbmVSZXNwb25zZSIsImNsb25lRGF0YSIsIl90IiwiX2NvbnRleHQiLCJsYW5ndWFnZSIsIm1ldGhvZCIsInNlbnQiLCJqc29uIiwic3RvcCIsImFwcGx5IiwiX3JlZjciLCJfY2FsbGVlMiIsIl9tYWlhRGF0YSRkYXRhIiwibWFpYVJlc3BvbnNlIiwibWFpYURhdGEiLCJfdDIiLCJfY29udGV4dDIiLCJfcmVmOCIsIl9jYWxsZWUzIiwiY3VzdG9tUmVzcG9uc2UiLCJjdXN0b21EYXRhIiwiX3QzIiwiX2NvbnRleHQzIiwiaGFzX21vcmUiLCJuZXh0X29mZnNldCIsIlByb21pc2UiLCJhbGwiLCJVUkxTZWFyY2hQYXJhbXMiLCJhcHBlbmQiLCJhZ2VudEl0ZW0iLCJFcnJvciIsInNldFRpbWVvdXQiLCJmaW5pc2giLCJfeCIsInNlYXJjaEN1c3RvbUFnZW50cyIsIl9yZWY5IiwiX2NhbGxlZTUiLCJxdWVyeSIsIl90NiIsIl9jb250ZXh0NSIsImVuY29kZVVSSUNvbXBvbmVudCIsImNsb25lQWdlbnRzIiwiY3VzdG9tUmVzdWx0cyIsIl94MiIsImxvYWRNb3JlQWdlbnRzIiwiX2NhbGxlZTYiLCJjYW5Mb2FkTW9yZSIsIl90NyIsIl9jb250ZXh0NiIsImV4aXN0aW5nTWFpYUFnZW50cyIsImV4aXN0aW5nSWRzIiwibmV3QWdlbnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL21haWEvQWdlbnRzL2dldEFnZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZVJlZiB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uL2NsaWVudCdcbmltcG9ydCB7IHdpdGhOb3JtYWxpemVkQ29ubmVjdG9ycyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL25vcm1hbGl6ZUFnZW50Q29ubmVjdG9ycydcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IGlzTWFpYUNsb25lQWdlbnRzUm9sZUJsb2NrZWQgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvbWFpYVRhc2tQYW5lbEFjY2VzcydcbmltcG9ydCB7IFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgbWFwQ09STGFuZyB9IGZyb20gJy4uLy4uLy4uL2xhbmcvdXRpbHMnXG5cbmNvbnN0IGlzTWFpYUFnZW50ID0gKGFnZW50OiBBZ2VudCkgPT4gYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InXG5cbmNvbnN0IGlzNDAzQWdlbnRGZXRjaEVycm9yID0gKGVycjogdW5rbm93bik6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBlcnJvciA9IGVyciBhcyB7IHJlc3BvbnNlPzogeyBzdGF0dXM/OiBudW1iZXIgfTsgc3RhdHVzPzogbnVtYmVyOyBtZXNzYWdlPzogc3RyaW5nIH1cbiAgcmV0dXJuIChcbiAgICBlcnJvcj8ucmVzcG9uc2U/LnN0YXR1cyA9PT0gNDAzIHx8XG4gICAgZXJyb3I/LnN0YXR1cyA9PT0gNDAzIHx8XG4gICAgQm9vbGVhbihlcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHZpZXcgYWdlbnRzXCIpKSB8fFxuICAgIEJvb2xlYW4oZXJyb3I/Lm1lc3NhZ2U/LmluY2x1ZGVzKCdGYWlsZWQgZmV0Y2hpbmcgZGF0YScpKVxuICApXG59XG5cbmNvbnN0IG1lcmdlQWdlbnRzV2l0aG91dER1cGxpY2F0ZXMgPSAoYmFzZTogQWdlbnRbXSwgZXh0cmE6IEFnZW50W10pOiBBZ2VudFtdID0+IHtcbiAgY29uc3QgaWRzID0gbmV3IFNldChiYXNlLm1hcChhZ2VudCA9PiBhZ2VudC5pZCkpXG4gIGNvbnN0IG1lcmdlZCA9IFsuLi5iYXNlXVxuICBleHRyYS5mb3JFYWNoKGFnZW50ID0+IHtcbiAgICBpZiAoIWlkcy5oYXMoYWdlbnQuaWQpKSBtZXJnZWQucHVzaChhZ2VudClcbiAgfSlcbiAgcmV0dXJuIG1lcmdlZFxufVxuXG4vKipcbiAqIE9yZGVuYSBsb3MgYWdlbnRlczogTUFJQSBwcmltZXJvIChzaSBleGlzdGUpLCBsdWVnbyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZSwgbHVlZ28gbm8gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGVcbiAqL1xuY29uc3Qgc29ydEFnZW50cyA9IChhZ2VudHM6IEFnZW50W10pOiBBZ2VudFtdID0+IHtcbiAgY29uc3QgbWFpYUFnZW50cyA9IGFnZW50cy5maWx0ZXIoaXNNYWlhQWdlbnQpXG4gIGNvbnN0IG90aGVyQWdlbnRzID0gYWdlbnRzLmZpbHRlcihhZyA9PiAhaXNNYWlhQWdlbnQoYWcpKVxuXG4gIC8vIFNlcGFyYXIgZmF2b3JpdG9zIHkgbm8gZmF2b3JpdG9zXG4gIGNvbnN0IGZhdm9yaXRlcyA9IG90aGVyQWdlbnRzLmZpbHRlcihhZyA9PiBhZy5pc19mYXZvcml0ZSkuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcbiAgY29uc3Qgbm9uRmF2b3JpdGVzID0gb3RoZXJBZ2VudHMuZmlsdGVyKGFnID0+ICFhZy5pc19mYXZvcml0ZSkuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcblxuICByZXR1cm4gbWFpYUFnZW50cy5sZW5ndGggPyBbLi4ubWFpYUFnZW50cywgLi4uZmF2b3JpdGVzLCAuLi5ub25GYXZvcml0ZXNdIDogWy4uLmZhdm9yaXRlcywgLi4ubm9uRmF2b3JpdGVzXVxufVxuXG5jb25zdCBub3JtYWxpemVDdXN0b21BZ2VudHNGcm9tQXBpID0gKGFnZW50czogQWdlbnRbXSk6IEFnZW50W10gPT5cbiAgYWdlbnRzLm1hcChhZ2VudCA9PiAoYWdlbnQudHlwZSA9PT0gJ2N1c3RvbScgPyB3aXRoTm9ybWFsaXplZENvbm5lY3RvcnMoYWdlbnQpIDogYWdlbnQpKVxuXG50eXBlIFVzZUdldEFnZW50c1Byb3BzID0ge1xuICBzZWxlY3RBZ2VudDogKGFnZW50OiBBZ2VudCkgPT4gdm9pZFxuICBzZWN0aW9uOiBTZWN0aW9uXG4gIGFnZW50OiBBZ2VudCB8IG51bGxcbiAgaGFuZGxlR29Ib21lOiAoKSA9PiB2b2lkXG59XG5cbmV4cG9ydCB0eXBlIEFkZEFnZW50T3B0aW9ucyA9IHtcbiAgLyoqIFBvciBkZWZlY3RvIGB0cnVlYCAoY29tcG9ydGFtaWVudG8gQUJNKS4gUGFzYXIgYGZhbHNlYCBhbCBpbnNlcnRhciBhZ2VudGUgY3JlYWRvIHBvciBjaGF0IHNpbiBjYW1iaWFyIGRlIHZpc3RhLiAqL1xuICBuYXZpZ2F0ZUhvbWU/OiBib29sZWFuXG59XG5cbmV4cG9ydCBjb25zdCB1c2VHZXRBZ2VudHMgPSAoeyBzZWxlY3RBZ2VudCwgc2VjdGlvbiwgYWdlbnQsIGhhbmRsZUdvSG9tZSB9OiBVc2VHZXRBZ2VudHNQcm9wcykgPT4ge1xuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IFthZ2VudHMsIHNldEFnZW50c10gPSB1c2VTdGF0ZTx7IGRhdGE6IEFnZW50W107IGhhc19tb3JlPzogYm9vbGVhbjsgbmV4dF9vZmZzZXQ/OiBudW1iZXIgfCBudWxsIH0+KHsgZGF0YTogW10gfSlcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtsb2FkaW5nTW9yZSwgc2V0TG9hZGluZ01vcmVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzZWFyY2hMb2FkaW5nLCBzZXRTZWFyY2hMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcbiAgY29uc3QgeyB0LCBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbignY2hhdF9haV9zZWN0aW9uJylcbiAgY29uc3QgbGFzdFNlbGVjdGVkQWdlbnRSZWYgPSB1c2VSZWY8QWdlbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBpc1JlZnJlc2hpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGxhc3RSZXF1ZXN0UmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGFnZW50c1JlZiA9IHVzZVJlZihhZ2VudHMpXG4gIGNvbnN0IHByZVNlYXJjaEFnZW50c1JlZiA9IHVzZVJlZjx7IGRhdGE6IEFnZW50W107IGhhc19tb3JlPzogYm9vbGVhbjsgbmV4dF9vZmZzZXQ/OiBudW1iZXIgfCBudWxsIH0gfCBudWxsPihudWxsKVxuXG4gIGFnZW50c1JlZi5jdXJyZW50ID0gYWdlbnRzXG5cbiAgY29uc3QgYWRkQWdlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAobmV3QWdlbnQ6IEFnZW50LCBvcHRpb25zPzogQWRkQWdlbnRPcHRpb25zKSA9PiB7XG4gICAgICBzZXRBZ2VudHMocHJldiA9PiB7XG4gICAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBhZ2VudGUgeWEgZXhpc3RlIHBhcmEgZXZpdGFyIGR1cGxpY2Fkb3NcbiAgICAgICAgY29uc3QgYWdlbnRFeGlzdHMgPSBwcmV2LmRhdGEuc29tZShleGlzdGluZ0FnZW50ID0+IGV4aXN0aW5nQWdlbnQuaWQgPT09IG5ld0FnZW50LmlkKVxuICAgICAgICBpZiAoYWdlbnRFeGlzdHMpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBbLi4ucHJldi5kYXRhLCBuZXdBZ2VudF1cbiAgICAgICAgY29uc3Qgc29ydGVkRGF0YSA9IHNvcnRBZ2VudHMobmV3RGF0YSlcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIGRhdGE6IHNvcnRlZERhdGEsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICBpZiAob3B0aW9ucz8ubmF2aWdhdGVIb21lICE9PSBmYWxzZSkge1xuICAgICAgICBoYW5kbGVHb0hvbWUoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2hhbmRsZUdvSG9tZV1cbiAgKVxuXG4gIGNvbnN0IHJlbW92ZUFnZW50ID0gdXNlQ2FsbGJhY2soKGFnZW50SWQ6IG51bWJlciB8IHN0cmluZykgPT4ge1xuICAgIHNldEFnZW50cyhwcmV2ID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgZGF0YTogcHJldi5kYXRhLmZpbHRlcihhID0+IGEuaWQgIT09IGFnZW50SWQudG9TdHJpbmcoKSksXG4gICAgfSkpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHVwZGF0ZUFnZW50ID0gdXNlQ2FsbGJhY2soKHVwZGF0ZWRBZ2VudDogQWdlbnQpID0+IHtcbiAgICBzZXRBZ2VudHMocHJldiA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IHByZXYuZGF0YS5tYXAoZXhpc3RpbmdBZ2VudCA9PlxuICAgICAgICBleGlzdGluZ0FnZW50LmlkID09PSB1cGRhdGVkQWdlbnQuaWQgPyB1cGRhdGVkQWdlbnQgOiBleGlzdGluZ0FnZW50XG4gICAgICApXG4gICAgICBjb25zdCBzb3J0ZWREYXRhID0gc29ydEFnZW50cyh1cGRhdGVkRGF0YSlcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGRhdGE6IHNvcnRlZERhdGEsXG4gICAgICB9XG4gICAgfSlcbiAgfSwgW10pXG5cbiAgY29uc3QgdXBkYXRlQWdlbnRGYXZvcml0ZSA9IHVzZUNhbGxiYWNrKFxuICAgICh1cGRhdGVkQWdlbnQ6IEFnZW50LCBzaG91bGRTb3J0OiBib29sZWFuID0gZmFsc2UpID0+IHtcbiAgICAgIHNldEFnZW50cyhwcmV2ID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBwcmV2LmRhdGEubWFwKGV4aXN0aW5nQWdlbnQgPT4ge1xuICAgICAgICAgIGlmIChleGlzdGluZ0FnZW50LmlkID09PSB1cGRhdGVkQWdlbnQuaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgbWVzc2FnZSwgLi4uYWdlbnRGaWVsZHMgfSA9IHVwZGF0ZWRBZ2VudCBhcyBhbnlcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZEFnZW50ID0geyAuLi5leGlzdGluZ0FnZW50LCAuLi5hZ2VudEZpZWxkcyB9XG4gICAgICAgICAgICByZXR1cm4gbWVyZ2VkQWdlbnRcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGV4aXN0aW5nQWdlbnRcbiAgICAgICAgfSlcblxuICAgICAgICAvLyBTb2xvIG9yZGVuYXIgc2kgc2hvdWxkU29ydCBlcyB0cnVlXG4gICAgICAgIGNvbnN0IGZpbmFsRGF0YSA9IHNob3VsZFNvcnQgPyBzb3J0QWdlbnRzKHVwZGF0ZWREYXRhKSA6IHVwZGF0ZWREYXRhXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIGRhdGE6IGZpbmFsRGF0YSxcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgLy8gQWN0dWFsaXphciBlbCBhZ2VudGUgc2VsZWNjaW9uYWRvIHNpIGVzIGVsIHF1ZSBzZSBlc3TDoSBhY3R1YWxpemFuZG9cbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IHVwZGF0ZWRBZ2VudC5pZCkge1xuICAgICAgICBjb25zdCBleGlzdGluZ0FnZW50ID0gYWdlbnRzLmRhdGEuZmluZChhID0+IGEuaWQgPT09IHVwZGF0ZWRBZ2VudC5pZClcbiAgICAgICAgaWYgKGV4aXN0aW5nQWdlbnQpIHtcbiAgICAgICAgICBjb25zdCB7IG1lc3NhZ2UsIC4uLmFnZW50RmllbGRzIH0gPSB1cGRhdGVkQWdlbnQgYXMgYW55XG4gICAgICAgICAgY29uc3QgbWVyZ2VkQWdlbnQgPSB7IC4uLmV4aXN0aW5nQWdlbnQsIC4uLmFnZW50RmllbGRzIH1cbiAgICAgICAgICBzZWxlY3RBZ2VudChtZXJnZWRBZ2VudClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB7IG1lc3NhZ2UsIC4uLmFnZW50RmllbGRzIH0gPSB1cGRhdGVkQWdlbnQgYXMgYW55XG4gICAgICAgICAgc2VsZWN0QWdlbnQoYWdlbnRGaWVsZHMgYXMgQWdlbnQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFthZ2VudCwgc2VsZWN0QWdlbnQsIGFnZW50cy5kYXRhXVxuICApXG5cbiAgY29uc3Qgc29ydEFnZW50c0xpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0QWdlbnRzKHByZXYgPT4ge1xuICAgICAgY29uc3Qgc29ydGVkRGF0YSA9IHNvcnRBZ2VudHMocHJldi5kYXRhKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbXSlcblxuICBjb25zdCBzZWxlY3RGaXJzdEFnZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKGFnZW50SWQ/OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChhZ2VudHMuZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZmlyc3RBZ2VudCA9IGFnZW50cy5kYXRhLmZpbmRJbmRleChhZ2VudERhdGEgPT4gYWdlbnREYXRhLmlkID09PSBhZ2VudElkKVxuICAgICAgICBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50ID0gYWdlbnRzLmRhdGFbZmlyc3RBZ2VudCA9PT0gMCA/IDEgOiAwXVxuICAgICAgICBzZWxlY3RBZ2VudChhZ2VudHMuZGF0YVtmaXJzdEFnZW50ID09PSAwID8gMSA6IDBdKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FnZW50cy5kYXRhLCBzZWxlY3RBZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUdldEFnZW50cyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChhZ2VudFRvU2VsZWN0PzogQWdlbnQpID0+IHtcbiAgICAgIGlmIChpc1JlZnJlc2hpbmdSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVxdWVzdEtleSA9IGFnZW50VG9TZWxlY3Q/LmlkPy50b1N0cmluZygpIHx8ICdkZWZhdWx0J1xuICAgICAgaWYgKGxhc3RSZXF1ZXN0UmVmLmN1cnJlbnQgPT09IHJlcXVlc3RLZXkgJiYgIWxvYWRpbmcpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlzUmVmcmVzaGluZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgbGFzdFJlcXVlc3RSZWYuY3VycmVudCA9IHJlcXVlc3RLZXlcbiAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgIHNldEVycm9yKG51bGwpXG5cbiAgICAgIGNvbnN0IGlzTXVsdGlBZ2VudHMgPSAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgJiYgISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuXG4gICAgICB0cnkge1xuICAgICAgICBsZXQgYWdlbnRQYXJzZWQ6IEFnZW50W10gPSBbXVxuICAgICAgICBsZXQgaGFzTW9yZSA9IGZhbHNlXG4gICAgICAgIGxldCBuZXh0T2Zmc2V0OiBudW1iZXIgfCBudWxsID0gbnVsbFxuICAgICAgICBjb25zdCBjbG9uZUFnZW50c1JvbGVCbG9ja2VkID0gaXNNYWlhQ2xvbmVBZ2VudHNSb2xlQmxvY2tlZCh1c2VyLCBzZWN0aW9uKVxuICAgICAgICBjb25zdCBjYW5GZXRjaENsb25lQWdlbnRzID0gIWNsb25lQWdlbnRzUm9sZUJsb2NrZWRcblxuICAgICAgICBjb25zdCBmZXRjaEdsb2JhbENsb25lQWdlbnRzID0gYXN5bmMgKCk6IFByb21pc2U8QWdlbnRbXT4gPT4ge1xuICAgICAgICAgIGlmICghd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgfHwgIWNhbkZldGNoQ2xvbmVBZ2VudHMpIHJldHVybiBbXVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBjbG9uZVJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICAgICAgcGF0aDogYGFnZW50cz9hZ2VudF90eXBlPWNsb25lJmVudGl0eT1nbG9iYWwmbGFuZz0ke21hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSl9YCxcbiAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBjb25zdCBjbG9uZURhdGEgPSBhd2FpdCBjbG9uZVJlc3BvbnNlLmpzb24oKVxuICAgICAgICAgICAgcmV0dXJuIChjbG9uZURhdGEuZGF0YSB8fCBbXSkuZmlsdGVyKChhZzogQWdlbnQpID0+IGFnLnR5cGUgPT09ICdjbG9uZScpXG4gICAgICAgICAgfSBjYXRjaCAoY2xvbmVFcnJvcikge1xuICAgICAgICAgICAgaWYgKGlzNDAzQWdlbnRGZXRjaEVycm9yKGNsb25lRXJyb3IpKSByZXR1cm4gW11cbiAgICAgICAgICAgIHRocm93IGNsb25lRXJyb3JcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaSB0aWVuZSBmZWF0dXJlIGFjY2VzcyBtdWx0aSBhZ2VudHMsIGhhY2VyIGRvcyBxdWVyaWVzIChNYWlhICsgY3VzdG9tKSBlbiBjdWFscXVpZXIgc2VjY2nDs25cbiAgICAgICAgaWYgKGlzTXVsdGlBZ2VudHMpIHtcbiAgICAgICAgICAvLyBRdWVyeSBjbG9uZSAoTWFpYSkgeSBjdXN0b20gc29uIGluZGVwZW5kaWVudGVzIOKGkiBzZSBkaXNwYXJhbiBlbiBwYXJhbGVsby5cbiAgICAgICAgICBsZXQgY3VzdG9tQWdlbnRzOiBBZ2VudFtdID0gW11cbiAgICAgICAgICBsZXQgY3VzdG9tSGFzTW9yZSA9IGZhbHNlXG4gICAgICAgICAgbGV0IGN1c3RvbU5leHRPZmZzZXQ6IG51bWJlciB8IG51bGwgPSBudWxsXG5cbiAgICAgICAgICBjb25zdCBpczQwMyA9IGlzNDAzQWdlbnRGZXRjaEVycm9yXG5cbiAgICAgICAgICBsZXQgbWFpYUFnZW50czogQWdlbnRbXSA9IFtdXG5cbiAgICAgICAgICBjb25zdCBsb2FkQ2xvbmVBZ2VudHMgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWNhbkZldGNoQ2xvbmVBZ2VudHMpIHJldHVyblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgbWFpYVJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9b3JjaGVzdHJhdG9yJmxhbmc9JHttYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpfWAsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgY29uc3QgbWFpYURhdGEgPSBhd2FpdCBtYWlhUmVzcG9uc2UuanNvbigpXG4gICAgICAgICAgICAgIG1haWFBZ2VudHMgPSBtYWlhRGF0YS5kYXRhPy5maWx0ZXIoaXNNYWlhQWdlbnQpIHx8IFtdXG4gICAgICAgICAgICAgIGNvbnN0IGdsb2JhbENsb25lQWdlbnRzID0gYXdhaXQgZmV0Y2hHbG9iYWxDbG9uZUFnZW50cygpXG4gICAgICAgICAgICAgIG1haWFBZ2VudHMgPSBtZXJnZUFnZW50c1dpdGhvdXREdXBsaWNhdGVzKG1haWFBZ2VudHMsIGdsb2JhbENsb25lQWdlbnRzKVxuICAgICAgICAgICAgfSBjYXRjaCAobWFpYUVycm9yOiB1bmtub3duKSB7XG4gICAgICAgICAgICAgIC8vIFNpIGVzIDQwMywgY29udGludWFyIHNpbiBsb3MgY2xvbmVBZ2VudHM7IHNpIGVzIG90cm8gZXJyb3IsIHByb3BhZ2FybG9cbiAgICAgICAgICAgICAgaWYgKCFpczQwMyhtYWlhRXJyb3IpKSB0aHJvdyBtYWlhRXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBsb2FkQ3VzdG9tQWdlbnRzID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgY3VzdG9tUmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICAgICAgICAgIHBhdGg6ICdhZ2VudHM/YWdlbnRfdHlwZT1jdXN0b20mbGltaXQ9NyZvZmZzZXQ9MCcsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgY29uc3QgY3VzdG9tRGF0YSA9IGF3YWl0IGN1c3RvbVJlc3BvbnNlLmpzb24oKVxuICAgICAgICAgICAgICBjdXN0b21BZ2VudHMgPSBub3JtYWxpemVDdXN0b21BZ2VudHNGcm9tQXBpKGN1c3RvbURhdGEuZGF0YSB8fCBbXSlcbiAgICAgICAgICAgICAgY3VzdG9tSGFzTW9yZSA9IGN1c3RvbURhdGEuaGFzX21vcmUgfHwgZmFsc2VcbiAgICAgICAgICAgICAgY3VzdG9tTmV4dE9mZnNldCA9IGN1c3RvbURhdGEubmV4dF9vZmZzZXQgfHwgbnVsbFxuICAgICAgICAgICAgfSBjYXRjaCAoY3VzdG9tRXJyb3I6IGFueSkge1xuICAgICAgICAgICAgICAvLyBTaSBlcyA0MDMsIGNvbnRpbnVhciBzaW4gbG9zIGN1c3RvbUFnZW50cyAocXVlZGEgY29tbyBhcnJheSB2YWPDrW8pOyBzaSBubywgcHJvcGFnYXJsb1xuICAgICAgICAgICAgICBpZiAoIWlzNDAzKGN1c3RvbUVycm9yKSkgdGhyb3cgY3VzdG9tRXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbbG9hZENsb25lQWdlbnRzKCksIGxvYWRDdXN0b21BZ2VudHMoKV0pXG5cbiAgICAgICAgICAvLyBDb21iaW5hcjogYWdlbnRlcyBjbG9uZSBwcmltZXJvLCBsdWVnbyBsb3MgY3VzdG9tIChzaSBleGlzdGVuKVxuICAgICAgICAgIC8vIFNpIGVsIHVzdWFyaW8gdGllbmUgdW4gcm9sIGRlc2hhYmlsaXRhZG8sIG5vIGluY2x1aXIgY2xvbmVBZ2VudHNcbiAgICAgICAgICBpZiAoIWNhbkZldGNoQ2xvbmVBZ2VudHMpIHtcbiAgICAgICAgICAgIC8vIFJvbCBzaW4gYWNjZXNvIGEgY2xvbmVzIChwLiBlai4gZnJlZWxhbmNlci9jbGllbnRlIG8gY29sYWJvcmFkb3IgZW4gcHJvamVjdC9jbGllbnQpOiBzb2xvIGN1c3RvbUFnZW50c1xuICAgICAgICAgICAgLy8gU2kgY3VzdG9tQWdlbnRzIGVzdMOhIHZhY8OtbyAocG9yIDQwMyksIGFnZW50UGFyc2VkIHNlcsOhIFtdXG4gICAgICAgICAgICBhZ2VudFBhcnNlZCA9IGN1c3RvbUFnZW50c1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhZ2VudFBhcnNlZCA9IG1haWFBZ2VudHMubGVuZ3RoID8gWy4uLm1haWFBZ2VudHMsIC4uLmN1c3RvbUFnZW50c10gOiBjdXN0b21BZ2VudHNcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gT3JkZW5hcjogTWFpYSBwcmltZXJvLCBsdWVnbyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZSwgbHVlZ28gbm8gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGVcbiAgICAgICAgICBhZ2VudFBhcnNlZCA9IHNvcnRBZ2VudHMoYWdlbnRQYXJzZWQpXG4gICAgICAgICAgaGFzTW9yZSA9IGN1c3RvbUhhc01vcmVcbiAgICAgICAgICBuZXh0T2Zmc2V0ID0gY3VzdG9tTmV4dE9mZnNldFxuXG4gICAgICAgICAgc2V0QWdlbnRzKHtcbiAgICAgICAgICAgIGRhdGE6IGFnZW50UGFyc2VkLFxuICAgICAgICAgICAgaGFzX21vcmU6IGhhc01vcmUsXG4gICAgICAgICAgICBuZXh0X29mZnNldDogbmV4dE9mZnNldCxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgLy8gU2kgbm8gaGF5IGFnZW50ZXMgZGVzcHXDqXMgZGUgcHJvY2VzYXIgbGFzIHF1ZXJpZXMsIGxpbXBpYXIgZWwgZXJyb3JcbiAgICAgICAgICBpZiAoYWdlbnRQYXJzZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBzZXRFcnJvcihudWxsKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBMw7NnaWNhIHBhcmEgcHJvamVjdCwgY2xpZW50IG8gaGVhZGVyIHNpbiBtdWx0aUFnZW50cyAobWlzbW8gY3JpdGVyaW8gZGUgb3JkZW4gcHJvamVjdC9jbGllbnQ7IGhlYWRlciBhw7FhZGUgcGFnaW5hY2nDs24pXG4gICAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKClcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBzZWN0aW9uID09PSAncHJvamVjdCcgfHxcbiAgICAgICAgICAgIHNlY3Rpb24gPT09ICdjbGllbnQnIHx8XG4gICAgICAgICAgICBzZWN0aW9uID09PSAnaGVhZGVyJyB8fFxuICAgICAgICAgICAgc2VjdGlvbiA9PT0gJ3Rhc2snIHx8XG4gICAgICAgICAgICBzZWN0aW9uID09PSAncGxhbm5lcidcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnYWdlbnRfdHlwZScsICdvcmNoZXN0cmF0b3InKVxuICAgICAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdsYW5nJywgbWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKSlcbiAgICAgICAgICAgIGlmIChzZWN0aW9uID09PSAnaGVhZGVyJykge1xuICAgICAgICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ2xpbWl0JywgJzcnKVxuICAgICAgICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ29mZnNldCcsICcwJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBxdWVyeVN0cmluZyA9IHF1ZXJ5UGFyYW1zLnRvU3RyaW5nKClcbiAgICAgICAgICBjb25zdCBwYXRoID0gYGFnZW50cyR7cXVlcnlTdHJpbmcgPyBgPyR7cXVlcnlTdHJpbmd9YCA6ICcnfWBcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICAgICAgICAvLyBkYXRhLmRhdGEgeWEgY29udGllbmUgZWwvbG9zIGFnZW50ZXMgb3JxdWVzdGFkb3JlcyBkZSBsYSBxdWVyeSBhZ2VudF90eXBlPW9yY2hlc3RyYXRvclxuICAgICAgICAgICAgYWdlbnRQYXJzZWQgPSBkYXRhLmRhdGEgfHwgW11cbiAgICAgICAgICAgIGNvbnN0IGdsb2JhbENsb25lQWdlbnRzID0gYXdhaXQgZmV0Y2hHbG9iYWxDbG9uZUFnZW50cygpXG4gICAgICAgICAgICBhZ2VudFBhcnNlZCA9IG1lcmdlQWdlbnRzV2l0aG91dER1cGxpY2F0ZXMoYWdlbnRQYXJzZWQsIGdsb2JhbENsb25lQWdlbnRzKVxuICAgICAgICAgICAgLy8gT3JkZW5hcjogTWFpYSBwcmltZXJvLCBsdWVnbyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZSwgbHVlZ28gbm8gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGVcbiAgICAgICAgICAgIGFnZW50UGFyc2VkID0gc29ydEFnZW50cyhhZ2VudFBhcnNlZClcbiAgICAgICAgICAgIGhhc01vcmUgPSBkYXRhLmhhc19tb3JlXG4gICAgICAgICAgICBuZXh0T2Zmc2V0ID0gZGF0YS5uZXh0X29mZnNldFxuXG4gICAgICAgICAgICBzZXRBZ2VudHMoe1xuICAgICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgICBkYXRhOiBhZ2VudFBhcnNlZCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBjYXRjaCAocmVzcG9uc2VFcnJvcjogYW55KSB7XG4gICAgICAgICAgICAvLyBWZXJpZmljYXIgc2kgZWwgZXJyb3IgZXMgNDAzXG4gICAgICAgICAgICAvLyBmZXRjaENPUiBwdWVkZSBsYW56YXIgZGlmZXJlbnRlcyB0aXBvcyBkZSBlcnJvcmVzOlxuICAgICAgICAgICAgLy8gMS4gRXJyb3IgY29uIGVycm9yRGF0YS5kZXRhaWwgc2kgaW5jbHV5ZSAnQWNjZXNzIGRlbmllZCdcbiAgICAgICAgICAgIC8vIDIuIEVycm9yIGdlbsOpcmljbyAnRmFpbGVkIGZldGNoaW5nIGRhdGEnIHNpIGVzIDQwMyBwZXJvIG5vIGluY2x1eWUgJ0FjY2VzcyBkZW5pZWQnXG4gICAgICAgICAgICAvLyAzLiBOZWNlc2l0YW1vcyB2ZXJpZmljYXIgZWwgc3RhdHVzIGNvZGUgc2kgZXN0w6EgZGlzcG9uaWJsZVxuICAgICAgICAgICAgY29uc3QgaXM0MDNFcnJvciA9XG4gICAgICAgICAgICAgIHJlc3BvbnNlRXJyb3I/LnJlc3BvbnNlPy5zdGF0dXMgPT09IDQwMyB8fFxuICAgICAgICAgICAgICByZXNwb25zZUVycm9yPy5zdGF0dXMgPT09IDQwMyB8fFxuICAgICAgICAgICAgICByZXNwb25zZUVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcyhcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gdmlldyBhZ2VudHNcIikgfHxcbiAgICAgICAgICAgICAgcmVzcG9uc2VFcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoJ0ZhaWxlZCBmZXRjaGluZyBkYXRhJykgLy8gZmV0Y2hDT1IgbGFuemEgZXN0byBwYXJhIDQwMyBzaW4gJ0FjY2VzcyBkZW5pZWQnXG5cbiAgICAgICAgICAgIGlmIChpczQwM0Vycm9yKSB7XG4gICAgICAgICAgICAgIC8vIFNpIGVzIDQwMywgZXN0YWJsZWNlciBhZ2VudGVzIHZhY8Otb3MgeSBjb250aW51YXJcbiAgICAgICAgICAgICAgc2V0QWdlbnRzKHtcbiAgICAgICAgICAgICAgICBkYXRhOiBbXSxcbiAgICAgICAgICAgICAgICBoYXNfbW9yZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgbmV4dF9vZmZzZXQ6IG51bGwsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIHNldEVycm9yKG51bGwpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBTaSBlcyBvdHJvIGVycm9yLCBsYW56YXJsb1xuICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZUVycm9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTMOzZ2ljYSBkZSBzZWxlY3QgYWdlbnQg4oCUIHNpIGhheSBhZ2VudFRvU2VsZWN0IChwLiBlai4gcmVzdGF1cmFjacOzbiBkZSBzZXNpw7NuKSwgcHJpb3JpemFybG9cbiAgICAgICAgLy8gYXVucXVlIG5vIGVzdMOpIGVuIGxhIHByaW1lcmEgcMOhZ2luYSBkZSBsYSBsaXN0YSBwYWdpbmFkYS5cbiAgICAgICAgaWYgKGFnZW50VG9TZWxlY3QpIHtcbiAgICAgICAgICBjb25zdCBpbkxpc3QgPSBhZ2VudFBhcnNlZC5maW5kKChhZ2VudEl0ZW06IEFnZW50KSA9PiBhZ2VudEl0ZW0uaWQgPT09IGFnZW50VG9TZWxlY3QuaWQpXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBpbkxpc3QgPz8gYWdlbnRUb1NlbGVjdFxuICAgICAgICAgIGlmIChsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50Py5pZCAhPT0gc2VsZWN0ZWQuaWQpIHtcbiAgICAgICAgICAgIGxhc3RTZWxlY3RlZEFnZW50UmVmLmN1cnJlbnQgPSBzZWxlY3RlZFxuICAgICAgICAgICAgc2VsZWN0QWdlbnQoc2VsZWN0ZWQpXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghaW5MaXN0KSB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWQgPSBzb3J0QWdlbnRzKG1lcmdlQWdlbnRzV2l0aG91dER1cGxpY2F0ZXMoYWdlbnRQYXJzZWQsIFthZ2VudFRvU2VsZWN0XSkpXG4gICAgICAgICAgICBpZiAobWVyZ2VkLmxlbmd0aCAhPT0gYWdlbnRQYXJzZWQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHNldEFnZW50cyhwcmV2ID0+ICh7IC4uLnByZXYsIGRhdGE6IG1lcmdlZCB9KSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoYWdlbnRQYXJzZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGlmICghYWdlbnQgfHwgIWFnZW50UGFyc2VkLmZpbmQoKGE6IEFnZW50KSA9PiBhLmlkID09PSBhZ2VudC5pZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZUFnZW50cyA9XG4gICAgICAgICAgICAgIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgJiYgIWNsb25lQWdlbnRzUm9sZUJsb2NrZWRcbiAgICAgICAgICAgICAgICA/IGFnZW50UGFyc2VkXG4gICAgICAgICAgICAgICAgOiBhZ2VudFBhcnNlZC5maWx0ZXIoKGFnZW50SXRlbTogQWdlbnQpID0+ICFpc01haWFBZ2VudChhZ2VudEl0ZW0pKVxuXG4gICAgICAgICAgICBjb25zdCBbZmlyc3RBZ2VudF0gPSBhdmFpbGFibGVBZ2VudHNcbiAgICAgICAgICAgIGlmIChmaXJzdEFnZW50ICYmIGxhc3RTZWxlY3RlZEFnZW50UmVmLmN1cnJlbnQ/LmlkICE9PSBmaXJzdEFnZW50LmlkKSB7XG4gICAgICAgICAgICAgIGxhc3RTZWxlY3RlZEFnZW50UmVmLmN1cnJlbnQgPSBmaXJzdEFnZW50XG4gICAgICAgICAgICAgIHNlbGVjdEFnZW50KGZpcnN0QWdlbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBzZXRFcnJvcihlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ0FuIHVua25vd24gZXJyb3Igb2NjdXJyZWQnKVxuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaXNSZWZyZXNoaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoIWlzUmVmcmVzaGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBsYXN0UmVxdWVzdFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3NlbGVjdEFnZW50LCBzZWN0aW9uLCBhZ2VudCwgbG9hZGluZ11cbiAgKVxuXG4gIGNvbnN0IHNlYXJjaEN1c3RvbUFnZW50cyA9IHVzZUNhbGxiYWNrKGFzeW5jIChxdWVyeTogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFxdWVyeSkge1xuICAgICAgaWYgKHByZVNlYXJjaEFnZW50c1JlZi5jdXJyZW50KSB7XG4gICAgICAgIHNldEFnZW50cyhwcmVTZWFyY2hBZ2VudHNSZWYuY3VycmVudClcbiAgICAgICAgcHJlU2VhcmNoQWdlbnRzUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIXByZVNlYXJjaEFnZW50c1JlZi5jdXJyZW50KSB7XG4gICAgICBwcmVTZWFyY2hBZ2VudHNSZWYuY3VycmVudCA9IGFnZW50c1JlZi5jdXJyZW50XG4gICAgfVxuXG4gICAgc2V0U2VhcmNoTG9hZGluZyh0cnVlKVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgcGF0aDogYGFnZW50cz9hZ2VudF90eXBlPWN1c3RvbSZsaW1pdD0yMCZvZmZzZXQ9MCZxPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHF1ZXJ5KX1gLFxuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgfSlcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcblxuICAgICAgc2V0QWdlbnRzKHByZXYgPT4ge1xuICAgICAgICBjb25zdCBjbG9uZUFnZW50cyA9IHByZXYuZGF0YS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gYWcudHlwZSA9PT0gJ2Nsb25lJylcbiAgICAgICAgY29uc3QgY3VzdG9tUmVzdWx0czogQWdlbnRbXSA9IGRhdGEuZGF0YSB8fCBbXVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IGNsb25lQWdlbnRzLmxlbmd0aCA/IFsuLi5jbG9uZUFnZW50cywgLi4uY3VzdG9tUmVzdWx0c10gOiBjdXN0b21SZXN1bHRzLFxuICAgICAgICAgIGhhc19tb3JlOiBmYWxzZSxcbiAgICAgICAgICBuZXh0X29mZnNldDogbnVsbCxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnc25hY2tiYXIubG9hZE1vcmVBZ2VudHMuZXJyb3InKSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0U2VhcmNoTG9hZGluZyhmYWxzZSlcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IGxvYWRNb3JlQWdlbnRzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGlzTXVsdGlBZ2VudHMgPSAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgJiYgISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuICAgIC8vIENhcmdhciBtw6FzOiBlbiBoZWFkZXIgc2llbXByZTsgZW4gcHJvamVjdCBzb2xvIHNpIGlzTXVsdGlBZ2VudHMgKHBvcnF1ZSBzb2xvIGVudG9uY2VzIGhheSBwYWdpbmFjacOzbiBkZSBjdXN0b20pXG4gICAgY29uc3QgY2FuTG9hZE1vcmUgPSBzZWN0aW9uID09PSAnaGVhZGVyJyB8fCBpc011bHRpQWdlbnRzXG4gICAgaWYgKCFjYW5Mb2FkTW9yZSB8fCAhYWdlbnRzLmhhc19tb3JlIHx8ICFhZ2VudHMubmV4dF9vZmZzZXQgfHwgbG9hZGluZ01vcmUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldExvYWRpbmdNb3JlKHRydWUpXG4gICAgc2V0RXJyb3IobnVsbClcblxuICAgIHRyeSB7XG4gICAgICBsZXQgcGF0aDogc3RyaW5nXG5cbiAgICAgIC8vIFNpIGVzIG11bHRpQWdlbnRzLCBzb2xvIGNhcmdhciBhZ2VudHMgY3VzdG9tIChNYWlhIHlhIGVzdMOhIGNhcmdhZG8pXG4gICAgICBpZiAoaXNNdWx0aUFnZW50cykge1xuICAgICAgICAvLyBNYW50ZW5lciBjYW50aWRhZCBpbXBhciBkZSBjYXJkczogcHJpbWVyYSBjYXJnYSA3LCBzaWd1aWVudGVzICs2ICg3LCAxMywgMTksIC4uLilcbiAgICAgICAgcGF0aCA9IGBhZ2VudHM/YWdlbnRfdHlwZT1jdXN0b20mbGltaXQ9NiZvZmZzZXQ9JHthZ2VudHMubmV4dF9vZmZzZXR9YFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU2kgbm8gZXMgbXVsdGlBZ2VudHMsIGNhcmdhciBtw6FzIGFnZW50ZXMgb3JxdWVzdGFkb3JlcyAoTUFJQSlcbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKClcbiAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdhZ2VudF90eXBlJywgJ29yY2hlc3RyYXRvcicpXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnbGFuZycsIG1hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSkpXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnbGltaXQnLCAnNycpXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnb2Zmc2V0JywgYWdlbnRzLm5leHRfb2Zmc2V0LnRvU3RyaW5nKCkpXG4gICAgICAgIHBhdGggPSBgYWdlbnRzPyR7cXVlcnlQYXJhbXMudG9TdHJpbmcoKX1gXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgcGF0aCxcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcblxuICAgICAgLy8gQWN1bXVsYXIgYWdlbnRlcywgZXhjbHV5ZW5kbyBkdXBsaWNhZG9zXG4gICAgICBzZXRBZ2VudHMocHJldiA9PiB7XG4gICAgICAgIGlmIChpc011bHRpQWdlbnRzKSB7XG4gICAgICAgICAgLy8gTMOzZ2ljYSBwYXJhIG11bHRpQWdlbnRzOiBzZXBhcmFyIE1BSUEgeSBjdXN0b21cbiAgICAgICAgICBjb25zdCBleGlzdGluZ01haWFBZ2VudHMgPSBwcmV2LmRhdGEuZmlsdGVyKGlzTWFpYUFnZW50KVxuXG4gICAgICAgICAgLy8gT2J0ZW5lciBJRHMgZXhpc3RlbnRlcyAoZXhjbHV5ZW5kbyBNQUlBKVxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2LmRhdGEuZmlsdGVyKChhZzogQWdlbnQpID0+ICFpc01haWFBZ2VudChhZykpLm1hcCgoYWc6IEFnZW50KSA9PiBhZy5pZCkpXG5cbiAgICAgICAgICAvLyBGaWx0cmFyIG51ZXZvcyBhZ2VudHMgcXVlIG5vIGVzdMOpbiB5YSBlbiBsYSBsaXN0YSAoZXhjbHV5ZW5kbyBNQUlBIHkgY2xvbmVzKSwgbm9ybWFsaXphbmRvIGN1c3RvbVxuICAgICAgICAgIGNvbnN0IG5ld0FnZW50cyA9IG5vcm1hbGl6ZUN1c3RvbUFnZW50c0Zyb21BcGkoXG4gICAgICAgICAgICBkYXRhLmRhdGEuZmlsdGVyKChhZzogQWdlbnQpID0+ICFpc01haWFBZ2VudChhZykgJiYgYWcudHlwZSAhPT0gJ2Nsb25lJyAmJiAhZXhpc3RpbmdJZHMuaGFzKGFnLmlkKSlcbiAgICAgICAgICApXG5cbiAgICAgICAgICBjb25zdCBuZXdEYXRhID0gZXhpc3RpbmdNYWlhQWdlbnRzLmxlbmd0aFxuICAgICAgICAgICAgPyBbLi4uZXhpc3RpbmdNYWlhQWdlbnRzLCAuLi5wcmV2LmRhdGEuZmlsdGVyKChhZzogQWdlbnQpID0+ICFpc01haWFBZ2VudChhZykpLCAuLi5uZXdBZ2VudHNdXG4gICAgICAgICAgICA6IFsuLi5wcmV2LmRhdGEuZmlsdGVyKChhZzogQWdlbnQpID0+ICFpc01haWFBZ2VudChhZykpLCAuLi5uZXdBZ2VudHNdXG5cbiAgICAgICAgICAvLyBPcmRlbmFyOiBNYWlhIHByaW1lcm8sIGx1ZWdvIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlLCBsdWVnbyBubyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZVxuICAgICAgICAgIGNvbnN0IHNvcnRlZERhdGEgPSBzb3J0QWdlbnRzKG5ld0RhdGEpXG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgICAgICAgIGhhc19tb3JlOiBkYXRhLmhhc19tb3JlLFxuICAgICAgICAgICAgbmV4dF9vZmZzZXQ6IGRhdGEubmV4dF9vZmZzZXQsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEzDs2dpY2EgcGFyYSAhaXNNdWx0aUFnZW50czogYWdyZWdhciBldml0YW5kbyBkdXBsaWNhZG9zXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2LmRhdGEubWFwKChhZzogQWdlbnQpID0+IGFnLmlkKSlcbiAgICAgICAgY29uc3QgbmV3QWdlbnRzID0gKGRhdGEuZGF0YSB8fCBbXSkuZmlsdGVyKChhZzogQWdlbnQpID0+ICFleGlzdGluZ0lkcy5oYXMoYWcuaWQpKVxuICAgICAgICBjb25zdCBuZXdEYXRhID0gWy4uLnByZXYuZGF0YSwgLi4ubmV3QWdlbnRzXVxuXG4gICAgICAgIC8vIE9yZGVuYXI6IE1haWEgcHJpbWVybywgbHVlZ28gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGUsIGx1ZWdvIG5vIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlXG4gICAgICAgIGNvbnN0IHNvcnRlZERhdGEgPSBzb3J0QWdlbnRzKG5ld0RhdGEpXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiBzb3J0ZWREYXRhLFxuICAgICAgICAgIGhhc19tb3JlOiBkYXRhLmhhc19tb3JlLFxuICAgICAgICAgIG5leHRfb2Zmc2V0OiBkYXRhLm5leHRfb2Zmc2V0LFxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBzZXRMb2FkaW5nTW9yZShmYWxzZSlcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnc25hY2tiYXIubG9hZE1vcmVBZ2VudHMuZXJyb3InKSlcbiAgICAgIHNldExvYWRpbmdNb3JlKGZhbHNlKVxuICAgIH1cbiAgfSwgW3NlY3Rpb24sIGFnZW50cy5oYXNfbW9yZSwgYWdlbnRzLm5leHRfb2Zmc2V0LCBsb2FkaW5nTW9yZSwgaTE4bi5sYW5ndWFnZV0pXG5cbiAgcmV0dXJuIHtcbiAgICBhZ2VudHMsXG4gICAgbG9hZGluZyxcbiAgICBsb2FkaW5nTW9yZSxcbiAgICBlcnJvcixcbiAgICBoYW5kbGVHZXRBZ2VudHMsXG4gICAgbG9hZE1vcmVBZ2VudHMsXG4gICAgc2VhcmNoQ3VzdG9tQWdlbnRzLFxuICAgIHNlYXJjaExvYWRpbmcsXG4gICAgYWRkQWdlbnQsXG4gICAgcmVtb3ZlQWdlbnQsXG4gICAgdXBkYXRlQWdlbnQsXG4gICAgdXBkYXRlQWdlbnRGYXZvcml0ZSxcbiAgICBzZWxlY3RGaXJzdEFnZW50LFxuICAgIHNvcnRBZ2VudHNMaXN0LFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxRQUFRLEVBQUVDLFdBQVcsRUFBRUMsTUFBTSxRQUFRLE9BQU87QUFDckQsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0Msa0JBQWtCLFFBQVEsc0RBQXNEO0FBQ3pGLFNBQVNDLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQVNDLHdCQUF3QixR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
722
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlVHJhbnNsYXRpb24iLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJmZXRjaE1haWEiLCJ3aXRoTm9ybWFsaXplZENvbm5lY3RvcnMiLCJ1c2VVc2VyIiwiaXNNYWlhQ2xvbmVBZ2VudHNSb2xlQmxvY2tlZCIsIm1hcENPUkxhbmciLCJpc01haWFBZ2VudCIsImFnZW50IiwidHlwZSIsImlzNDAzQWdlbnRGZXRjaEVycm9yIiwiZXJyIiwiX2Vycm9yJHJlc3BvbnNlIiwiX2Vycm9yJG1lc3NhZ2UiLCJfZXJyb3IkbWVzc2FnZTIiLCJlcnJvciIsInJlc3BvbnNlIiwic3RhdHVzIiwiQm9vbGVhbiIsIm1lc3NhZ2UiLCJpbmNsdWRlcyIsIm1lcmdlQWdlbnRzV2l0aG91dER1cGxpY2F0ZXMiLCJiYXNlIiwiZXh0cmEiLCJpZHMiLCJTZXQiLCJtYXAiLCJpZCIsIm1lcmdlZCIsIl90b0NvbnN1bWFibGVBcnJheSIsImZvckVhY2giLCJoYXMiLCJwdXNoIiwic29ydEFnZW50cyIsImFnZW50cyIsIm1haWFBZ2VudHMiLCJmaWx0ZXIiLCJvdGhlckFnZW50cyIsImFnIiwiZmF2b3JpdGVzIiwiaXNfZmF2b3JpdGUiLCJzb3J0IiwiYSIsImIiLCJuYW1lIiwibG9jYWxlQ29tcGFyZSIsIm5vbkZhdm9yaXRlcyIsImxlbmd0aCIsImNvbmNhdCIsIm5vcm1hbGl6ZUN1c3RvbUFnZW50c0Zyb21BcGkiLCJ1c2VHZXRBZ2VudHMiLCJfcmVmIiwic2VsZWN0QWdlbnQiLCJzZWN0aW9uIiwiaGFuZGxlR29Ib21lIiwidXNlciIsIl91c2VTdGF0ZSIsImRhdGEiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzZXRBZ2VudHMiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJsb2FkaW5nTW9yZSIsInNldExvYWRpbmdNb3JlIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJzZWFyY2hMb2FkaW5nIiwic2V0U2VhcmNoTG9hZGluZyIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic2V0RXJyb3IiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsIl91c2VUcmFuc2xhdGlvbiIsInQiLCJpMThuIiwibGFzdFNlbGVjdGVkQWdlbnRSZWYiLCJpc1JlZnJlc2hpbmdSZWYiLCJsYXN0UmVxdWVzdFJlZiIsImFnZW50c1JlZiIsInByZVNlYXJjaEFnZW50c1JlZiIsImN1cnJlbnQiLCJhZGRBZ2VudCIsIm5ld0FnZW50Iiwib3B0aW9ucyIsInByZXYiLCJhZ2VudEV4aXN0cyIsInNvbWUiLCJleGlzdGluZ0FnZW50IiwibmV3RGF0YSIsInNvcnRlZERhdGEiLCJfb2JqZWN0U3ByZWFkIiwibmF2aWdhdGVIb21lIiwicmVtb3ZlQWdlbnQiLCJhZ2VudElkIiwidG9TdHJpbmciLCJ1cGRhdGVBZ2VudCIsInVwZGF0ZWRBZ2VudCIsInVwZGF0ZWREYXRhIiwidXBkYXRlQWdlbnRGYXZvcml0ZSIsInNob3VsZFNvcnQiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfcmVmMiIsImFnZW50RmllbGRzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwibWVyZ2VkQWdlbnQiLCJmaW5hbERhdGEiLCJmaW5kIiwiX3JlZjMiLCJfZXhjbHVkZWQyIiwiX3JlZjQiLCJfZXhjbHVkZWQzIiwic29ydEFnZW50c0xpc3QiLCJzZWxlY3RGaXJzdEFnZW50IiwiZmlyc3RBZ2VudCIsImZpbmRJbmRleCIsImFnZW50RGF0YSIsImhhbmRsZUdldEFnZW50cyIsIl9yZWY1IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWU0IiwiYWdlbnRUb1NlbGVjdCIsIl9hZ2VudFRvU2VsZWN0JGlkIiwicmVxdWVzdEtleSIsImlzTXVsdGlBZ2VudHMiLCJhZ2VudFBhcnNlZCIsImhhc01vcmUiLCJuZXh0T2Zmc2V0IiwiY2xvbmVBZ2VudHNSb2xlQmxvY2tlZCIsImNhbkZldGNoQ2xvbmVBZ2VudHMiLCJmZXRjaEdsb2JhbENsb25lQWdlbnRzIiwiY3VzdG9tQWdlbnRzIiwiY3VzdG9tSGFzTW9yZSIsImN1c3RvbU5leHRPZmZzZXQiLCJpczQwMyIsImxvYWRDbG9uZUFnZW50cyIsImxvYWRDdXN0b21BZ2VudHMiLCJxdWVyeVBhcmFtcyIsInF1ZXJ5U3RyaW5nIiwicGF0aCIsImdsb2JhbENsb25lQWdlbnRzIiwiX3Jlc3BvbnNlRXJyb3IkcmVzcG9uIiwiX3Jlc3BvbnNlRXJyb3IkbWVzc2FnIiwiX3Jlc3BvbnNlRXJyb3IkbWVzc2FnMiIsImlzNDAzRXJyb3IiLCJfbGFzdFNlbGVjdGVkQWdlbnRSZWYiLCJpbkxpc3QiLCJzZWxlY3RlZCIsIl9sYXN0U2VsZWN0ZWRBZ2VudFJlZjIiLCJhdmFpbGFibGVBZ2VudHMiLCJfYXZhaWxhYmxlQWdlbnRzIiwiX3Q0IiwiX3Q1Iiwid3JhcCIsIl9jb250ZXh0NCIsIm5leHQiLCJhYnJ1cHQiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiX3JlZjYiLCJfY2FsbGVlIiwiY2xvbmVSZXNwb25zZSIsImNsb25lRGF0YSIsIl90IiwiX2NvbnRleHQiLCJsYW5ndWFnZSIsIm1ldGhvZCIsInNlbnQiLCJqc29uIiwic3RvcCIsImFwcGx5IiwiX3JlZjciLCJfY2FsbGVlMiIsIl9tYWlhRGF0YSRkYXRhIiwibWFpYVJlc3BvbnNlIiwibWFpYURhdGEiLCJfdDIiLCJfY29udGV4dDIiLCJfcmVmOCIsIl9jYWxsZWUzIiwiY3VzdG9tUmVzcG9uc2UiLCJjdXN0b21EYXRhIiwiX3QzIiwiX2NvbnRleHQzIiwiaGFzX21vcmUiLCJuZXh0X29mZnNldCIsIlByb21pc2UiLCJhbGwiLCJVUkxTZWFyY2hQYXJhbXMiLCJhcHBlbmQiLCJhZ2VudEl0ZW0iLCJFcnJvciIsInNldFRpbWVvdXQiLCJmaW5pc2giLCJfeCIsInNlYXJjaEN1c3RvbUFnZW50cyIsIl9yZWY5IiwiX2NhbGxlZTUiLCJxdWVyeSIsIl90NiIsIl9jb250ZXh0NSIsImVuY29kZVVSSUNvbXBvbmVudCIsImNsb25lQWdlbnRzIiwiY3VzdG9tUmVzdWx0cyIsIl94MiIsImxvYWRNb3JlQWdlbnRzIiwiX2NhbGxlZTYiLCJjYW5Mb2FkTW9yZSIsIl90NyIsIl9jb250ZXh0NiIsImV4aXN0aW5nTWFpYUFnZW50cyIsImV4aXN0aW5nSWRzIiwibmV3QWdlbnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL21haWEvQWdlbnRzL2dldEFnZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZVJlZiB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uL2NsaWVudCdcbmltcG9ydCB7IHdpdGhOb3JtYWxpemVkQ29ubmVjdG9ycyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL25vcm1hbGl6ZUFnZW50Q29ubmVjdG9ycydcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IGlzTWFpYUNsb25lQWdlbnRzUm9sZUJsb2NrZWQgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvbWFpYVRhc2tQYW5lbEFjY2VzcydcbmltcG9ydCB7IFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgbWFwQ09STGFuZyB9IGZyb20gJy4uLy4uLy4uL2xhbmcvdXRpbHMnXG5cbmNvbnN0IGlzTWFpYUFnZW50ID0gKGFnZW50OiBBZ2VudCkgPT4gYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InXG5cbmNvbnN0IGlzNDAzQWdlbnRGZXRjaEVycm9yID0gKGVycjogdW5rbm93bik6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBlcnJvciA9IGVyciBhcyB7IHJlc3BvbnNlPzogeyBzdGF0dXM/OiBudW1iZXIgfTsgc3RhdHVzPzogbnVtYmVyOyBtZXNzYWdlPzogc3RyaW5nIH1cbiAgcmV0dXJuIChcbiAgICBlcnJvcj8ucmVzcG9uc2U/LnN0YXR1cyA9PT0gNDAzIHx8XG4gICAgZXJyb3I/LnN0YXR1cyA9PT0gNDAzIHx8XG4gICAgQm9vbGVhbihlcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHZpZXcgYWdlbnRzXCIpKSB8fFxuICAgIEJvb2xlYW4oZXJyb3I/Lm1lc3NhZ2U/LmluY2x1ZGVzKCdGYWlsZWQgZmV0Y2hpbmcgZGF0YScpKVxuICApXG59XG5cbmNvbnN0IG1lcmdlQWdlbnRzV2l0aG91dER1cGxpY2F0ZXMgPSAoYmFzZTogQWdlbnRbXSwgZXh0cmE6IEFnZW50W10pOiBBZ2VudFtdID0+IHtcbiAgY29uc3QgaWRzID0gbmV3IFNldChiYXNlLm1hcChhZ2VudCA9PiBhZ2VudC5pZCkpXG4gIGNvbnN0IG1lcmdlZCA9IFsuLi5iYXNlXVxuICBleHRyYS5mb3JFYWNoKGFnZW50ID0+IHtcbiAgICBpZiAoIWlkcy5oYXMoYWdlbnQuaWQpKSBtZXJnZWQucHVzaChhZ2VudClcbiAgfSlcbiAgcmV0dXJuIG1lcmdlZFxufVxuXG4vKipcbiAqIE9yZGVuYSBsb3MgYWdlbnRlczogTUFJQSBwcmltZXJvIChzaSBleGlzdGUpLCBsdWVnbyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZSwgbHVlZ28gbm8gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGVcbiAqL1xuY29uc3Qgc29ydEFnZW50cyA9IChhZ2VudHM6IEFnZW50W10pOiBBZ2VudFtdID0+IHtcbiAgY29uc3QgbWFpYUFnZW50cyA9IGFnZW50cy5maWx0ZXIoaXNNYWlhQWdlbnQpXG4gIGNvbnN0IG90aGVyQWdlbnRzID0gYWdlbnRzLmZpbHRlcihhZyA9PiAhaXNNYWlhQWdlbnQoYWcpKVxuXG4gIC8vIFNlcGFyYXIgZmF2b3JpdG9zIHkgbm8gZmF2b3JpdG9zXG4gIGNvbnN0IGZhdm9yaXRlcyA9IG90aGVyQWdlbnRzLmZpbHRlcihhZyA9PiBhZy5pc19mYXZvcml0ZSkuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcbiAgY29uc3Qgbm9uRmF2b3JpdGVzID0gb3RoZXJBZ2VudHMuZmlsdGVyKGFnID0+ICFhZy5pc19mYXZvcml0ZSkuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcblxuICByZXR1cm4gbWFpYUFnZW50cy5sZW5ndGggPyBbLi4ubWFpYUFnZW50cywgLi4uZmF2b3JpdGVzLCAuLi5ub25GYXZvcml0ZXNdIDogWy4uLmZhdm9yaXRlcywgLi4ubm9uRmF2b3JpdGVzXVxufVxuXG5jb25zdCBub3JtYWxpemVDdXN0b21BZ2VudHNGcm9tQXBpID0gKGFnZW50czogQWdlbnRbXSk6IEFnZW50W10gPT5cbiAgYWdlbnRzLm1hcChhZ2VudCA9PiAoYWdlbnQudHlwZSA9PT0gJ2N1c3RvbScgPyB3aXRoTm9ybWFsaXplZENvbm5lY3RvcnMoYWdlbnQpIDogYWdlbnQpKVxuXG50eXBlIFVzZUdldEFnZW50c1Byb3BzID0ge1xuICBzZWxlY3RBZ2VudDogKGFnZW50OiBBZ2VudCkgPT4gdm9pZFxuICBzZWN0aW9uOiBTZWN0aW9uXG4gIGFnZW50OiBBZ2VudCB8IG51bGxcbiAgaGFuZGxlR29Ib21lOiAoKSA9PiB2b2lkXG59XG5cbmV4cG9ydCB0eXBlIEFkZEFnZW50T3B0aW9ucyA9IHtcbiAgLyoqIFBvciBkZWZlY3RvIGB0cnVlYCAoY29tcG9ydGFtaWVudG8gQUJNKS4gUGFzYXIgYGZhbHNlYCBhbCBpbnNlcnRhciBhZ2VudGUgY3JlYWRvIHBvciBjaGF0IHNpbiBjYW1iaWFyIGRlIHZpc3RhLiAqL1xuICBuYXZpZ2F0ZUhvbWU/OiBib29sZWFuXG59XG5cbmV4cG9ydCBjb25zdCB1c2VHZXRBZ2VudHMgPSAoeyBzZWxlY3RBZ2VudCwgc2VjdGlvbiwgYWdlbnQsIGhhbmRsZUdvSG9tZSB9OiBVc2VHZXRBZ2VudHNQcm9wcykgPT4ge1xuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IFthZ2VudHMsIHNldEFnZW50c10gPSB1c2VTdGF0ZTx7IGRhdGE6IEFnZW50W107IGhhc19tb3JlPzogYm9vbGVhbjsgbmV4dF9vZmZzZXQ/OiBudW1iZXIgfCBudWxsIH0+KHsgZGF0YTogW10gfSlcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtsb2FkaW5nTW9yZSwgc2V0TG9hZGluZ01vcmVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzZWFyY2hMb2FkaW5nLCBzZXRTZWFyY2hMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcbiAgY29uc3QgeyB0LCBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbignY2hhdF9haV9zZWN0aW9uJylcbiAgY29uc3QgbGFzdFNlbGVjdGVkQWdlbnRSZWYgPSB1c2VSZWY8QWdlbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBpc1JlZnJlc2hpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGxhc3RSZXF1ZXN0UmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGFnZW50c1JlZiA9IHVzZVJlZihhZ2VudHMpXG4gIGNvbnN0IHByZVNlYXJjaEFnZW50c1JlZiA9IHVzZVJlZjx7IGRhdGE6IEFnZW50W107IGhhc19tb3JlPzogYm9vbGVhbjsgbmV4dF9vZmZzZXQ/OiBudW1iZXIgfCBudWxsIH0gfCBudWxsPihudWxsKVxuXG4gIGFnZW50c1JlZi5jdXJyZW50ID0gYWdlbnRzXG5cbiAgY29uc3QgYWRkQWdlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAobmV3QWdlbnQ6IEFnZW50LCBvcHRpb25zPzogQWRkQWdlbnRPcHRpb25zKSA9PiB7XG4gICAgICBzZXRBZ2VudHMocHJldiA9PiB7XG4gICAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBhZ2VudGUgeWEgZXhpc3RlIHBhcmEgZXZpdGFyIGR1cGxpY2Fkb3NcbiAgICAgICAgY29uc3QgYWdlbnRFeGlzdHMgPSBwcmV2LmRhdGEuc29tZShleGlzdGluZ0FnZW50ID0+IGV4aXN0aW5nQWdlbnQuaWQgPT09IG5ld0FnZW50LmlkKVxuICAgICAgICBpZiAoYWdlbnRFeGlzdHMpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBbLi4ucHJldi5kYXRhLCBuZXdBZ2VudF1cbiAgICAgICAgY29uc3Qgc29ydGVkRGF0YSA9IHNvcnRBZ2VudHMobmV3RGF0YSlcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIGRhdGE6IHNvcnRlZERhdGEsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICBpZiAob3B0aW9ucz8ubmF2aWdhdGVIb21lICE9PSBmYWxzZSkge1xuICAgICAgICBoYW5kbGVHb0hvbWUoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2hhbmRsZUdvSG9tZV1cbiAgKVxuXG4gIGNvbnN0IHJlbW92ZUFnZW50ID0gdXNlQ2FsbGJhY2soKGFnZW50SWQ6IG51bWJlciB8IHN0cmluZykgPT4ge1xuICAgIHNldEFnZW50cyhwcmV2ID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgZGF0YTogcHJldi5kYXRhLmZpbHRlcihhID0+IGEuaWQgIT09IGFnZW50SWQudG9TdHJpbmcoKSksXG4gICAgfSkpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHVwZGF0ZUFnZW50ID0gdXNlQ2FsbGJhY2soKHVwZGF0ZWRBZ2VudDogQWdlbnQpID0+IHtcbiAgICBzZXRBZ2VudHMocHJldiA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IHByZXYuZGF0YS5tYXAoZXhpc3RpbmdBZ2VudCA9PlxuICAgICAgICBleGlzdGluZ0FnZW50LmlkID09PSB1cGRhdGVkQWdlbnQuaWQgPyB1cGRhdGVkQWdlbnQgOiBleGlzdGluZ0FnZW50XG4gICAgICApXG4gICAgICBjb25zdCBzb3J0ZWREYXRhID0gc29ydEFnZW50cyh1cGRhdGVkRGF0YSlcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGRhdGE6IHNvcnRlZERhdGEsXG4gICAgICB9XG4gICAgfSlcbiAgfSwgW10pXG5cbiAgY29uc3QgdXBkYXRlQWdlbnRGYXZvcml0ZSA9IHVzZUNhbGxiYWNrKFxuICAgICh1cGRhdGVkQWdlbnQ6IEFnZW50LCBzaG91bGRTb3J0OiBib29sZWFuID0gZmFsc2UpID0+IHtcbiAgICAgIHNldEFnZW50cyhwcmV2ID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBwcmV2LmRhdGEubWFwKGV4aXN0aW5nQWdlbnQgPT4ge1xuICAgICAgICAgIGlmIChleGlzdGluZ0FnZW50LmlkID09PSB1cGRhdGVkQWdlbnQuaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgbWVzc2FnZSwgLi4uYWdlbnRGaWVsZHMgfSA9IHVwZGF0ZWRBZ2VudCBhcyBhbnlcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZEFnZW50ID0geyAuLi5leGlzdGluZ0FnZW50LCAuLi5hZ2VudEZpZWxkcyB9XG4gICAgICAgICAgICByZXR1cm4gbWVyZ2VkQWdlbnRcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGV4aXN0aW5nQWdlbnRcbiAgICAgICAgfSlcblxuICAgICAgICAvLyBTb2xvIG9yZGVuYXIgc2kgc2hvdWxkU29ydCBlcyB0cnVlXG4gICAgICAgIGNvbnN0IGZpbmFsRGF0YSA9IHNob3VsZFNvcnQgPyBzb3J0QWdlbnRzKHVwZGF0ZWREYXRhKSA6IHVwZGF0ZWREYXRhXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIGRhdGE6IGZpbmFsRGF0YSxcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgLy8gQWN0dWFsaXphciBlbCBhZ2VudGUgc2VsZWNjaW9uYWRvIHNpIGVzIGVsIHF1ZSBzZSBlc3TDoSBhY3R1YWxpemFuZG9cbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IHVwZGF0ZWRBZ2VudC5pZCkge1xuICAgICAgICBjb25zdCBleGlzdGluZ0FnZW50ID0gYWdlbnRzLmRhdGEuZmluZChhID0+IGEuaWQgPT09IHVwZGF0ZWRBZ2VudC5pZClcbiAgICAgICAgaWYgKGV4aXN0aW5nQWdlbnQpIHtcbiAgICAgICAgICBjb25zdCB7IG1lc3NhZ2UsIC4uLmFnZW50RmllbGRzIH0gPSB1cGRhdGVkQWdlbnQgYXMgYW55XG4gICAgICAgICAgY29uc3QgbWVyZ2VkQWdlbnQgPSB7IC4uLmV4aXN0aW5nQWdlbnQsIC4uLmFnZW50RmllbGRzIH1cbiAgICAgICAgICBzZWxlY3RBZ2VudChtZXJnZWRBZ2VudClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB7IG1lc3NhZ2UsIC4uLmFnZW50RmllbGRzIH0gPSB1cGRhdGVkQWdlbnQgYXMgYW55XG4gICAgICAgICAgc2VsZWN0QWdlbnQoYWdlbnRGaWVsZHMgYXMgQWdlbnQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFthZ2VudCwgc2VsZWN0QWdlbnQsIGFnZW50cy5kYXRhXVxuICApXG5cbiAgY29uc3Qgc29ydEFnZW50c0xpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0QWdlbnRzKHByZXYgPT4ge1xuICAgICAgY29uc3Qgc29ydGVkRGF0YSA9IHNvcnRBZ2VudHMocHJldi5kYXRhKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbXSlcblxuICBjb25zdCBzZWxlY3RGaXJzdEFnZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKGFnZW50SWQ/OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChhZ2VudHMuZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZmlyc3RBZ2VudCA9IGFnZW50cy5kYXRhLmZpbmRJbmRleChhZ2VudERhdGEgPT4gYWdlbnREYXRhLmlkID09PSBhZ2VudElkKVxuICAgICAgICBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50ID0gYWdlbnRzLmRhdGFbZmlyc3RBZ2VudCA9PT0gMCA/IDEgOiAwXVxuICAgICAgICBzZWxlY3RBZ2VudChhZ2VudHMuZGF0YVtmaXJzdEFnZW50ID09PSAwID8gMSA6IDBdKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FnZW50cy5kYXRhLCBzZWxlY3RBZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUdldEFnZW50cyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChhZ2VudFRvU2VsZWN0PzogQWdlbnQpOiBQcm9taXNlPEFnZW50W10+ID0+IHtcbiAgICAgIGlmIChpc1JlZnJlc2hpbmdSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm4gYWdlbnRzUmVmLmN1cnJlbnQuZGF0YVxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXF1ZXN0S2V5ID0gYWdlbnRUb1NlbGVjdD8uaWQ/LnRvU3RyaW5nKCkgfHwgJ2RlZmF1bHQnXG4gICAgICBpZiAobGFzdFJlcXVlc3RSZWYuY3VycmVudCA9PT0gcmVxdWVzdEtleSAmJiAhbG9hZGluZykge1xuICAgICAgICByZXR1cm4gYWdlbnRzUmVmLmN1cnJlbnQuZGF0YVxuICAgICAgfVxuXG4gICAgICBpc1JlZnJlc2hpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGxhc3RSZXF1ZXN0UmVmLmN1cnJlbnQgPSByZXF1ZXN0S2V5XG4gICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICBzZXRFcnJvcihudWxsKVxuXG4gICAgICBjb25zdCBpc011bHRpQWdlbnRzID0gISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTICYmICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcblxuICAgICAgdHJ5IHtcbiAgICAgICAgbGV0IGFnZW50UGFyc2VkOiBBZ2VudFtdID0gW11cbiAgICAgICAgbGV0IGhhc01vcmUgPSBmYWxzZVxuICAgICAgICBsZXQgbmV4dE9mZnNldDogbnVtYmVyIHwgbnVsbCA9IG51bGxcbiAgICAgICAgY29uc3QgY2xvbmVBZ2VudHNSb2xlQmxvY2tlZCA9IGlzTWFpYUNsb25lQWdlbnRzUm9sZUJsb2NrZWQodXNlciwgc2VjdGlvbilcbiAgICAgICAgY29uc3QgY2FuRmV0Y2hDbG9uZUFnZW50cyA9ICFjbG9uZUFnZW50c1JvbGVCbG9ja2VkXG5cbiAgICAgICAgY29uc3QgZmV0Y2hHbG9iYWxDbG9uZUFnZW50cyA9IGFzeW5jICgpOiBQcm9taXNlPEFnZW50W10+ID0+IHtcbiAgICAgICAgICBpZiAoIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIHx8ICFjYW5GZXRjaENsb25lQWdlbnRzKSByZXR1cm4gW11cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgY2xvbmVSZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgICAgICAgICAgIHBhdGg6IGBhZ2VudHM/YWdlbnRfdHlwZT1jbG9uZSZlbnRpdHk9Z2xvYmFsJmxhbmc9JHttYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpfWAsXG4gICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgY29uc3QgY2xvbmVEYXRhID0gYXdhaXQgY2xvbmVSZXNwb25zZS5qc29uKClcbiAgICAgICAgICAgIHJldHVybiAoY2xvbmVEYXRhLmRhdGEgfHwgW10pLmZpbHRlcigoYWc6IEFnZW50KSA9PiBhZy50eXBlID09PSAnY2xvbmUnKVxuICAgICAgICAgIH0gY2F0Y2ggKGNsb25lRXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChpczQwM0FnZW50RmV0Y2hFcnJvcihjbG9uZUVycm9yKSkgcmV0dXJuIFtdXG4gICAgICAgICAgICB0aHJvdyBjbG9uZUVycm9yXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2kgdGllbmUgZmVhdHVyZSBhY2Nlc3MgbXVsdGkgYWdlbnRzLCBoYWNlciBkb3MgcXVlcmllcyAoTWFpYSArIGN1c3RvbSkgZW4gY3VhbHF1aWVyIHNlY2Npw7NuXG4gICAgICAgIGlmIChpc011bHRpQWdlbnRzKSB7XG4gICAgICAgICAgLy8gUXVlcnkgY2xvbmUgKE1haWEpIHkgY3VzdG9tIHNvbiBpbmRlcGVuZGllbnRlcyDihpIgc2UgZGlzcGFyYW4gZW4gcGFyYWxlbG8uXG4gICAgICAgICAgbGV0IGN1c3RvbUFnZW50czogQWdlbnRbXSA9IFtdXG4gICAgICAgICAgbGV0IGN1c3RvbUhhc01vcmUgPSBmYWxzZVxuICAgICAgICAgIGxldCBjdXN0b21OZXh0T2Zmc2V0OiBudW1iZXIgfCBudWxsID0gbnVsbFxuXG4gICAgICAgICAgY29uc3QgaXM0MDMgPSBpczQwM0FnZW50RmV0Y2hFcnJvclxuXG4gICAgICAgICAgbGV0IG1haWFBZ2VudHM6IEFnZW50W10gPSBbXVxuXG4gICAgICAgICAgY29uc3QgbG9hZENsb25lQWdlbnRzID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFjYW5GZXRjaENsb25lQWdlbnRzKSByZXR1cm5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IG1haWFSZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgICAgICAgICAgICAgcGF0aDogYGFnZW50cz9hZ2VudF90eXBlPW9yY2hlc3RyYXRvciZsYW5nPSR7bWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKX1gLFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIGNvbnN0IG1haWFEYXRhID0gYXdhaXQgbWFpYVJlc3BvbnNlLmpzb24oKVxuICAgICAgICAgICAgICBtYWlhQWdlbnRzID0gbWFpYURhdGEuZGF0YT8uZmlsdGVyKGlzTWFpYUFnZW50KSB8fCBbXVxuICAgICAgICAgICAgICBjb25zdCBnbG9iYWxDbG9uZUFnZW50cyA9IGF3YWl0IGZldGNoR2xvYmFsQ2xvbmVBZ2VudHMoKVxuICAgICAgICAgICAgICBtYWlhQWdlbnRzID0gbWVyZ2VBZ2VudHNXaXRob3V0RHVwbGljYXRlcyhtYWlhQWdlbnRzLCBnbG9iYWxDbG9uZUFnZW50cylcbiAgICAgICAgICAgIH0gY2F0Y2ggKG1haWFFcnJvcjogdW5rbm93bikge1xuICAgICAgICAgICAgICAvLyBTaSBlcyA0MDMsIGNvbnRpbnVhciBzaW4gbG9zIGNsb25lQWdlbnRzOyBzaSBlcyBvdHJvIGVycm9yLCBwcm9wYWdhcmxvXG4gICAgICAgICAgICAgIGlmICghaXM0MDMobWFpYUVycm9yKSkgdGhyb3cgbWFpYUVycm9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgbG9hZEN1c3RvbUFnZW50cyA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGN1c3RvbVJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICAgICAgICBwYXRoOiAnYWdlbnRzP2FnZW50X3R5cGU9Y3VzdG9tJmxpbWl0PTcmb2Zmc2V0PTAnLFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIGNvbnN0IGN1c3RvbURhdGEgPSBhd2FpdCBjdXN0b21SZXNwb25zZS5qc29uKClcbiAgICAgICAgICAgICAgY3VzdG9tQWdlbnRzID0gbm9ybWFsaXplQ3VzdG9tQWdlbnRzRnJvbUFwaShjdXN0b21EYXRhLmRhdGEgfHwgW10pXG4gICAgICAgICAgICAgIGN1c3RvbUhhc01vcmUgPSBjdXN0b21EYXRhLmhhc19tb3JlIHx8IGZhbHNlXG4gICAgICAgICAgICAgIGN1c3RvbU5leHRPZmZzZXQgPSBjdXN0b21EYXRhLm5leHRfb2Zmc2V0IHx8IG51bGxcbiAgICAgICAgICAgIH0gY2F0Y2ggKGN1c3RvbUVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgICAgLy8gU2kgZXMgNDAzLCBjb250aW51YXIgc2luIGxvcyBjdXN0b21BZ2VudHMgKHF1ZWRhIGNvbW8gYXJyYXkgdmFjw61vKTsgc2kgbm8sIHByb3BhZ2FybG9cbiAgICAgICAgICAgICAgaWYgKCFpczQwMyhjdXN0b21FcnJvcikpIHRocm93IGN1c3RvbUVycm9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW2xvYWRDbG9uZUFnZW50cygpLCBsb2FkQ3VzdG9tQWdlbnRzKCldKVxuXG4gICAgICAgICAgLy8gQ29tYmluYXI6IGFnZW50ZXMgY2xvbmUgcHJpbWVybywgbHVlZ28gbG9zIGN1c3RvbSAoc2kgZXhpc3RlbilcbiAgICAgICAgICAvLyBTaSBlbCB1c3VhcmlvIHRpZW5lIHVuIHJvbCBkZXNoYWJpbGl0YWRvLCBubyBpbmNsdWlyIGNsb25lQWdlbnRzXG4gICAgICAgICAgaWYgKCFjYW5GZXRjaENsb25lQWdlbnRzKSB7XG4gICAgICAgICAgICAvLyBSb2wgc2luIGFjY2VzbyBhIGNsb25lcyAocC4gZWouIGZyZWVsYW5jZXIvY2xpZW50ZSBvIGNvbGFib3JhZG9yIGVuIHByb2plY3QvY2xpZW50KTogc29sbyBjdXN0b21BZ2VudHNcbiAgICAgICAgICAgIC8vIFNpIGN1c3RvbUFnZW50cyBlc3TDoSB2YWPDrW8gKHBvciA0MDMpLCBhZ2VudFBhcnNlZCBzZXLDoSBbXVxuICAgICAgICAgICAgYWdlbnRQYXJzZWQgPSBjdXN0b21BZ2VudHNcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWdlbnRQYXJzZWQgPSBtYWlhQWdlbnRzLmxlbmd0aCA/IFsuLi5tYWlhQWdlbnRzLCAuLi5jdXN0b21BZ2VudHNdIDogY3VzdG9tQWdlbnRzXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIE9yZGVuYXI6IE1haWEgcHJpbWVybywgbHVlZ28gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGUsIGx1ZWdvIG5vIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlXG4gICAgICAgICAgYWdlbnRQYXJzZWQgPSBzb3J0QWdlbnRzKGFnZW50UGFyc2VkKVxuICAgICAgICAgIGhhc01vcmUgPSBjdXN0b21IYXNNb3JlXG4gICAgICAgICAgbmV4dE9mZnNldCA9IGN1c3RvbU5leHRPZmZzZXRcblxuICAgICAgICAgIHNldEFnZW50cyh7XG4gICAgICAgICAgICBkYXRhOiBhZ2VudFBhcnNlZCxcbiAgICAgICAgICAgIGhhc19tb3JlOiBoYXNNb3JlLFxuICAgICAgICAgICAgbmV4dF9vZmZzZXQ6IG5leHRPZmZzZXQsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIC8vIFNpIG5vIGhheSBhZ2VudGVzIGRlc3B1w6lzIGRlIHByb2Nlc2FyIGxhcyBxdWVyaWVzLCBsaW1waWFyIGVsIGVycm9yXG4gICAgICAgICAgaWYgKGFnZW50UGFyc2VkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgc2V0RXJyb3IobnVsbClcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gTMOzZ2ljYSBwYXJhIHByb2plY3QsIGNsaWVudCBvIGhlYWRlciBzaW4gbXVsdGlBZ2VudHMgKG1pc21vIGNyaXRlcmlvIGRlIG9yZGVuIHByb2plY3QvY2xpZW50OyBoZWFkZXIgYcOxYWRlIHBhZ2luYWNpw7NuKVxuICAgICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgc2VjdGlvbiA9PT0gJ3Byb2plY3QnIHx8XG4gICAgICAgICAgICBzZWN0aW9uID09PSAnY2xpZW50JyB8fFxuICAgICAgICAgICAgc2VjdGlvbiA9PT0gJ2hlYWRlcicgfHxcbiAgICAgICAgICAgIHNlY3Rpb24gPT09ICd0YXNrJyB8fFxuICAgICAgICAgICAgc2VjdGlvbiA9PT0gJ3BsYW5uZXInXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ2FnZW50X3R5cGUnLCAnb3JjaGVzdHJhdG9yJylcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnbGFuZycsIG1hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSkpXG4gICAgICAgICAgICBpZiAoc2VjdGlvbiA9PT0gJ2hlYWRlcicpIHtcbiAgICAgICAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdsaW1pdCcsICc3JylcbiAgICAgICAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdvZmZzZXQnLCAnMCcpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgcXVlcnlTdHJpbmcgPSBxdWVyeVBhcmFtcy50b1N0cmluZygpXG4gICAgICAgICAgY29uc3QgcGF0aCA9IGBhZ2VudHMke3F1ZXJ5U3RyaW5nID8gYD8ke3F1ZXJ5U3RyaW5nfWAgOiAnJ31gXG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgICAgICAgLy8gZGF0YS5kYXRhIHlhIGNvbnRpZW5lIGVsL2xvcyBhZ2VudGVzIG9ycXVlc3RhZG9yZXMgZGUgbGEgcXVlcnkgYWdlbnRfdHlwZT1vcmNoZXN0cmF0b3JcbiAgICAgICAgICAgIGFnZW50UGFyc2VkID0gZGF0YS5kYXRhIHx8IFtdXG4gICAgICAgICAgICBjb25zdCBnbG9iYWxDbG9uZUFnZW50cyA9IGF3YWl0IGZldGNoR2xvYmFsQ2xvbmVBZ2VudHMoKVxuICAgICAgICAgICAgYWdlbnRQYXJzZWQgPSBtZXJnZUFnZW50c1dpdGhvdXREdXBsaWNhdGVzKGFnZW50UGFyc2VkLCBnbG9iYWxDbG9uZUFnZW50cylcbiAgICAgICAgICAgIC8vIE9yZGVuYXI6IE1haWEgcHJpbWVybywgbHVlZ28gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGUsIGx1ZWdvIG5vIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlXG4gICAgICAgICAgICBhZ2VudFBhcnNlZCA9IHNvcnRBZ2VudHMoYWdlbnRQYXJzZWQpXG4gICAgICAgICAgICBoYXNNb3JlID0gZGF0YS5oYXNfbW9yZVxuICAgICAgICAgICAgbmV4dE9mZnNldCA9IGRhdGEubmV4dF9vZmZzZXRcblxuICAgICAgICAgICAgc2V0QWdlbnRzKHtcbiAgICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgICAgZGF0YTogYWdlbnRQYXJzZWQsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gY2F0Y2ggKHJlc3BvbnNlRXJyb3I6IGFueSkge1xuICAgICAgICAgICAgLy8gVmVyaWZpY2FyIHNpIGVsIGVycm9yIGVzIDQwM1xuICAgICAgICAgICAgLy8gZmV0Y2hDT1IgcHVlZGUgbGFuemFyIGRpZmVyZW50ZXMgdGlwb3MgZGUgZXJyb3JlczpcbiAgICAgICAgICAgIC8vIDEuIEVycm9yIGNvbiBlcnJvckRhdGEuZGV0YWlsIHNpIGluY2x1eWUgJ0FjY2VzcyBkZW5pZWQnXG4gICAgICAgICAgICAvLyAyLiBFcnJvciBnZW7DqXJpY28gJ0ZhaWxlZCBmZXRjaGluZyBkYXRhJyBzaSBlcyA0MDMgcGVybyBubyBpbmNsdXllICdBY2Nlc3MgZGVuaWVkJ1xuICAgICAgICAgICAgLy8gMy4gTmVjZXNpdGFtb3MgdmVyaWZpY2FyIGVsIHN0YXR1cyBjb2RlIHNpIGVzdMOhIGRpc3BvbmlibGVcbiAgICAgICAgICAgIGNvbnN0IGlzNDAzRXJyb3IgPVxuICAgICAgICAgICAgICByZXNwb25zZUVycm9yPy5yZXNwb25zZT8uc3RhdHVzID09PSA0MDMgfHxcbiAgICAgICAgICAgICAgcmVzcG9uc2VFcnJvcj8uc3RhdHVzID09PSA0MDMgfHxcbiAgICAgICAgICAgICAgcmVzcG9uc2VFcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHZpZXcgYWdlbnRzXCIpIHx8XG4gICAgICAgICAgICAgIHJlc3BvbnNlRXJyb3I/Lm1lc3NhZ2U/LmluY2x1ZGVzKCdGYWlsZWQgZmV0Y2hpbmcgZGF0YScpIC8vIGZldGNoQ09SIGxhbnphIGVzdG8gcGFyYSA0MDMgc2luICdBY2Nlc3MgZGVuaWVkJ1xuXG4gICAgICAgICAgICBpZiAoaXM0MDNFcnJvcikge1xuICAgICAgICAgICAgICAvLyBTaSBlcyA0MDMsIGVzdGFibGVjZXIgYWdlbnRlcyB2YWPDrW9zIHkgY29udGludWFyXG4gICAgICAgICAgICAgIHNldEFnZW50cyh7XG4gICAgICAgICAgICAgICAgZGF0YTogW10sXG4gICAgICAgICAgICAgICAgaGFzX21vcmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIG5leHRfb2Zmc2V0OiBudWxsLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBzZXRFcnJvcihudWxsKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gU2kgZXMgb3RybyBlcnJvciwgbGFuemFybG9cbiAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2VFcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEzDs2dpY2EgZGUgc2VsZWN0IGFnZW50IOKAlCBzaSBoYXkgYWdlbnRUb1NlbGVjdCAocC4gZWouIHJlc3RhdXJhY2nDs24gZGUgc2VzacOzbiksIHByaW9yaXphcmxvXG4gICAgICAgIC8vIGF1bnF1ZSBubyBlc3TDqSBlbiBsYSBwcmltZXJhIHDDoWdpbmEgZGUgbGEgbGlzdGEgcGFnaW5hZGEuXG4gICAgICAgIGlmIChhZ2VudFRvU2VsZWN0KSB7XG4gICAgICAgICAgY29uc3QgaW5MaXN0ID0gYWdlbnRQYXJzZWQuZmluZCgoYWdlbnRJdGVtOiBBZ2VudCkgPT4gYWdlbnRJdGVtLmlkID09PSBhZ2VudFRvU2VsZWN0LmlkKVxuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gaW5MaXN0ID8/IGFnZW50VG9TZWxlY3RcbiAgICAgICAgICBpZiAobGFzdFNlbGVjdGVkQWdlbnRSZWYuY3VycmVudD8uaWQgIT09IHNlbGVjdGVkLmlkKSB7XG4gICAgICAgICAgICBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50ID0gc2VsZWN0ZWRcbiAgICAgICAgICAgIHNlbGVjdEFnZW50KHNlbGVjdGVkKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWluTGlzdCkge1xuICAgICAgICAgICAgY29uc3QgbWVyZ2VkID0gc29ydEFnZW50cyhtZXJnZUFnZW50c1dpdGhvdXREdXBsaWNhdGVzKGFnZW50UGFyc2VkLCBbYWdlbnRUb1NlbGVjdF0pKVxuICAgICAgICAgICAgaWYgKG1lcmdlZC5sZW5ndGggIT09IGFnZW50UGFyc2VkLmxlbmd0aCkge1xuICAgICAgICAgICAgICBzZXRBZ2VudHMocHJldiA9PiAoeyAuLi5wcmV2LCBkYXRhOiBtZXJnZWQgfSkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGFnZW50UGFyc2VkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBpZiAoIWFnZW50IHx8ICFhZ2VudFBhcnNlZC5maW5kKChhOiBBZ2VudCkgPT4gYS5pZCA9PT0gYWdlbnQuaWQpKSB7XG4gICAgICAgICAgICBjb25zdCBhdmFpbGFibGVBZ2VudHMgPVxuICAgICAgICAgICAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTICYmICFjbG9uZUFnZW50c1JvbGVCbG9ja2VkXG4gICAgICAgICAgICAgICAgPyBhZ2VudFBhcnNlZFxuICAgICAgICAgICAgICAgIDogYWdlbnRQYXJzZWQuZmlsdGVyKChhZ2VudEl0ZW06IEFnZW50KSA9PiAhaXNNYWlhQWdlbnQoYWdlbnRJdGVtKSlcblxuICAgICAgICAgICAgY29uc3QgW2ZpcnN0QWdlbnRdID0gYXZhaWxhYmxlQWdlbnRzXG4gICAgICAgICAgICBpZiAoZmlyc3RBZ2VudCAmJiBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50Py5pZCAhPT0gZmlyc3RBZ2VudC5pZCkge1xuICAgICAgICAgICAgICBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50ID0gZmlyc3RBZ2VudFxuICAgICAgICAgICAgICBzZWxlY3RBZ2VudChmaXJzdEFnZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgIHJldHVybiBhZ2VudFBhcnNlZFxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHNldEVycm9yKGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiAnQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCcpXG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgIHJldHVybiBhZ2VudHNSZWYuY3VycmVudC5kYXRhXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpc1JlZnJlc2hpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghaXNSZWZyZXNoaW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGxhc3RSZXF1ZXN0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgfVxuICAgICAgICB9LCAxMDApXG4gICAgICB9XG4gICAgfSxcbiAgICBbc2VsZWN0QWdlbnQsIHNlY3Rpb24sIGFnZW50LCBsb2FkaW5nXVxuICApXG5cbiAgY29uc3Qgc2VhcmNoQ3VzdG9tQWdlbnRzID0gdXNlQ2FsbGJhY2soYXN5bmMgKHF1ZXJ5OiBzdHJpbmcpID0+IHtcbiAgICBpZiAoIXF1ZXJ5KSB7XG4gICAgICBpZiAocHJlU2VhcmNoQWdlbnRzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2V0QWdlbnRzKHByZVNlYXJjaEFnZW50c1JlZi5jdXJyZW50KVxuICAgICAgICBwcmVTZWFyY2hBZ2VudHNSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghcHJlU2VhcmNoQWdlbnRzUmVmLmN1cnJlbnQpIHtcbiAgICAgIHByZVNlYXJjaEFnZW50c1JlZi5jdXJyZW50ID0gYWdlbnRzUmVmLmN1cnJlbnRcbiAgICB9XG5cbiAgICBzZXRTZWFyY2hMb2FkaW5nKHRydWUpXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9Y3VzdG9tJmxpbWl0PTIwJm9mZnNldD0wJnE9JHtlbmNvZGVVUklDb21wb25lbnQocXVlcnkpfWAsXG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB9KVxuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuXG4gICAgICBzZXRBZ2VudHMocHJldiA9PiB7XG4gICAgICAgIGNvbnN0IGNsb25lQWdlbnRzID0gcHJldi5kYXRhLmZpbHRlcigoYWc6IEFnZW50KSA9PiBhZy50eXBlID09PSAnY2xvbmUnKVxuICAgICAgICBjb25zdCBjdXN0b21SZXN1bHRzOiBBZ2VudFtdID0gZGF0YS5kYXRhIHx8IFtdXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YTogY2xvbmVBZ2VudHMubGVuZ3RoID8gWy4uLmNsb25lQWdlbnRzLCAuLi5jdXN0b21SZXN1bHRzXSA6IGN1c3RvbVJlc3VsdHMsXG4gICAgICAgICAgaGFzX21vcmU6IGZhbHNlLFxuICAgICAgICAgIG5leHRfb2Zmc2V0OiBudWxsLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdzbmFja2Jhci5sb2FkTW9yZUFnZW50cy5lcnJvcicpKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRTZWFyY2hMb2FkaW5nKGZhbHNlKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgbG9hZE1vcmVBZ2VudHMgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgaXNNdWx0aUFnZW50cyA9ICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyAmJiAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG4gICAgLy8gQ2FyZ2FyIG3DoXM6IGVuIGhlYWRlciBzaWVtcHJlOyBlbiBwcm9qZWN0IHNvbG8gc2kgaXNNdWx0aUFnZW50cyAocG9ycXVlIHNvbG8gZW50b25jZXMgaGF5IHBhZ2luYWNpw7NuIGRlIGN1c3RvbSlcbiAgICBjb25zdCBjYW5Mb2FkTW9yZSA9IHNlY3Rpb24gPT09ICdoZWFkZXInIHx8IGlzTXVsdGlBZ2VudHNcbiAgICBpZiAoIWNhbkxvYWRNb3JlIHx8ICFhZ2VudHMuaGFzX21vcmUgfHwgIWFnZW50cy5uZXh0X29mZnNldCB8fCBsb2FkaW5nTW9yZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0TG9hZGluZ01vcmUodHJ1ZSlcbiAgICBzZXRFcnJvcihudWxsKVxuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBwYXRoOiBzdHJpbmdcblxuICAgICAgLy8gU2kgZXMgbXVsdGlBZ2VudHMsIHNvbG8gY2FyZ2FyIGFnZW50cyBjdXN0b20gKE1haWEgeWEgZXN0w6EgY2FyZ2FkbylcbiAgICAgIGlmIChpc011bHRpQWdlbnRzKSB7XG4gICAgICAgIC8vIE1hbnRlbmVyIGNhbnRpZGFkIGltcGFyIGRlIGNhcmRzOiBwcmltZXJhIGNhcmdhIDcsIHNpZ3VpZW50ZXMgKzYgKDcsIDEzLCAxOSwgLi4uKVxuICAgICAgICBwYXRoID0gYGFnZW50cz9hZ2VudF90eXBlPWN1c3RvbSZsaW1pdD02Jm9mZnNldD0ke2FnZW50cy5uZXh0X29mZnNldH1gXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTaSBubyBlcyBtdWx0aUFnZW50cywgY2FyZ2FyIG3DoXMgYWdlbnRlcyBvcnF1ZXN0YWRvcmVzIChNQUlBKVxuICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ2FnZW50X3R5cGUnLCAnb3JjaGVzdHJhdG9yJylcbiAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdsYW5nJywgbWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKSlcbiAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdsaW1pdCcsICc3JylcbiAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdvZmZzZXQnLCBhZ2VudHMubmV4dF9vZmZzZXQudG9TdHJpbmcoKSlcbiAgICAgICAgcGF0aCA9IGBhZ2VudHM/JHtxdWVyeVBhcmFtcy50b1N0cmluZygpfWBcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICBwYXRoLFxuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgfSlcblxuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuXG4gICAgICAvLyBBY3VtdWxhciBhZ2VudGVzLCBleGNsdXllbmRvIGR1cGxpY2Fkb3NcbiAgICAgIHNldEFnZW50cyhwcmV2ID0+IHtcbiAgICAgICAgaWYgKGlzTXVsdGlBZ2VudHMpIHtcbiAgICAgICAgICAvLyBMw7NnaWNhIHBhcmEgbXVsdGlBZ2VudHM6IHNlcGFyYXIgTUFJQSB5IGN1c3RvbVxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nTWFpYUFnZW50cyA9IHByZXYuZGF0YS5maWx0ZXIoaXNNYWlhQWdlbnQpXG5cbiAgICAgICAgICAvLyBPYnRlbmVyIElEcyBleGlzdGVudGVzIChleGNsdXllbmRvIE1BSUEpXG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdJZHMgPSBuZXcgU2V0KHByZXYuZGF0YS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gIWlzTWFpYUFnZW50KGFnKSkubWFwKChhZzogQWdlbnQpID0+IGFnLmlkKSlcblxuICAgICAgICAgIC8vIEZpbHRyYXIgbnVldm9zIGFnZW50cyBxdWUgbm8gZXN0w6luIHlhIGVuIGxhIGxpc3RhIChleGNsdXllbmRvIE1BSUEgeSBjbG9uZXMpLCBub3JtYWxpemFuZG8gY3VzdG9tXG4gICAgICAgICAgY29uc3QgbmV3QWdlbnRzID0gbm9ybWFsaXplQ3VzdG9tQWdlbnRzRnJvbUFwaShcbiAgICAgICAgICAgIGRhdGEuZGF0YS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gIWlzTWFpYUFnZW50KGFnKSAmJiBhZy50eXBlICE9PSAnY2xvbmUnICYmICFleGlzdGluZ0lkcy5oYXMoYWcuaWQpKVxuICAgICAgICAgIClcblxuICAgICAgICAgIGNvbnN0IG5ld0RhdGEgPSBleGlzdGluZ01haWFBZ2VudHMubGVuZ3RoXG4gICAgICAgICAgICA/IFsuLi5leGlzdGluZ01haWFBZ2VudHMsIC4uLnByZXYuZGF0YS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gIWlzTWFpYUFnZW50KGFnKSksIC4uLm5ld0FnZW50c11cbiAgICAgICAgICAgIDogWy4uLnByZXYuZGF0YS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gIWlzTWFpYUFnZW50KGFnKSksIC4uLm5ld0FnZW50c11cblxuICAgICAgICAgIC8vIE9yZGVuYXI6IE1haWEgcHJpbWVybywgbHVlZ28gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGUsIGx1ZWdvIG5vIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlXG4gICAgICAgICAgY29uc3Qgc29ydGVkRGF0YSA9IHNvcnRBZ2VudHMobmV3RGF0YSlcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRhOiBzb3J0ZWREYXRhLFxuICAgICAgICAgICAgaGFzX21vcmU6IGRhdGEuaGFzX21vcmUsXG4gICAgICAgICAgICBuZXh0X29mZnNldDogZGF0YS5uZXh0X29mZnNldCxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gTMOzZ2ljYSBwYXJhICFpc011bHRpQWdlbnRzOiBhZ3JlZ2FyIGV2aXRhbmRvIGR1cGxpY2Fkb3NcbiAgICAgICAgY29uc3QgZXhpc3RpbmdJZHMgPSBuZXcgU2V0KHByZXYuZGF0YS5tYXAoKGFnOiBBZ2VudCkgPT4gYWcuaWQpKVxuICAgICAgICBjb25zdCBuZXdBZ2VudHMgPSAoZGF0YS5kYXRhIHx8IFtdKS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gIWV4aXN0aW5nSWRzLmhhcyhhZy5pZCkpXG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBbLi4ucHJldi5kYXRhLCAuLi5uZXdBZ2VudHNdXG5cbiAgICAgICAgLy8gT3JkZW5hcjogTWFpYSBwcmltZXJvLCBsdWVnbyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZSwgbHVlZ28gbm8gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGVcbiAgICAgICAgY29uc3Qgc29ydGVkRGF0YSA9IHNvcnRBZ2VudHMobmV3RGF0YSlcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHNvcnRlZERhdGEsXG4gICAgICAgICAgaGFzX21vcmU6IGRhdGEuaGFzX21vcmUsXG4gICAgICAgICAgbmV4dF9vZmZzZXQ6IGRhdGEubmV4dF9vZmZzZXQsXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHNldExvYWRpbmdNb3JlKGZhbHNlKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdzbmFja2Jhci5sb2FkTW9yZUFnZW50cy5lcnJvcicpKVxuICAgICAgc2V0TG9hZGluZ01vcmUoZmFsc2UpXG4gICAgfVxuICB9LCBbc2VjdGlvbiwgYWdlbnRzLmhhc19tb3JlLCBhZ2VudHMubmV4dF9vZmZzZXQsIGxvYWRpbmdNb3JlLCBpMThuLmxhbmd1YWdlXSlcblxuICByZXR1cm4ge1xuICAgIGFnZW50cyxcbiAgICBsb2FkaW5nLFxuICAgIGxvYWRpbmdNb3JlLFxuICAgIGVycm9yLFxuICAgIGhhbmRsZUdldEFnZW50cyxcbiAgICBsb2FkTW9yZUFnZW50cyxcbiAgICBzZWFyY2hDdXN0b21BZ2VudHMsXG4gICAgc2VhcmNoTG9hZGluZyxcbiAgICBhZGRBZ2VudCxcbiAgICByZW1vdmVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICAgIHNlbGVjdEZpcnN0QWdlbnQsXG4gICAgc29ydEFnZW50c0xpc3QsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFFBQVEsRUFBRUMs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
@@ -5,7 +5,6 @@ import Actions from './Actions';
5
5
  import RecentProjects from './RecentProjects';
6
6
  import RecentClients from './RecentClients';
7
7
  import RecentContexts from './RecentContexts';
8
- import Usage from './Usage';
9
8
  export default {
10
9
  Chats: Chats,
11
10
  Orchestrator: Orchestrator,
@@ -13,7 +12,6 @@ export default {
13
12
  Actions: Actions,
14
13
  RecentProjects: RecentProjects,
15
14
  RecentClients: RecentClients,
16
- RecentContexts: RecentContexts,
17
- Usage: Usage
15
+ RecentContexts: RecentContexts
18
16
  };
19
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGF0cyIsIk9yY2hlc3RyYXRvciIsIkZhcXMiLCJBY3Rpb25zIiwiUmVjZW50UHJvamVjdHMiLCJSZWNlbnRDbGllbnRzIiwiUmVjZW50Q29udGV4dHMiLCJVc2FnZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9tYWlhL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDaGF0cyBmcm9tICcuL0NoYXRzJ1xuaW1wb3J0IE9yY2hlc3RyYXRvciBmcm9tICcuL09yY2hlc3RyYXRvcidcbmltcG9ydCBGYXFzIGZyb20gJy4vRmFxcydcbmltcG9ydCBBY3Rpb25zIGZyb20gJy4vQWN0aW9ucydcbmltcG9ydCBSZWNlbnRQcm9qZWN0cyBmcm9tICcuL1JlY2VudFByb2plY3RzJ1xuaW1wb3J0IFJlY2VudENsaWVudHMgZnJvbSAnLi9SZWNlbnRDbGllbnRzJ1xuaW1wb3J0IFJlY2VudENvbnRleHRzIGZyb20gJy4vUmVjZW50Q29udGV4dHMnXG5pbXBvcnQgVXNhZ2UgZnJvbSAnLi9Vc2FnZSdcblxuZXhwb3J0IGRlZmF1bHQge1xuICBDaGF0cyxcbiAgT3JjaGVzdHJhdG9yLFxuICBGYXFzLFxuICBBY3Rpb25zLFxuICBSZWNlbnRQcm9qZWN0cyxcbiAgUmVjZW50Q2xpZW50cyxcbiAgUmVjZW50Q29udGV4dHMsXG4gIFVzYWdlLFxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxLQUFLLE1BQU0sU0FBUztBQUMzQixPQUFPQyxZQUFZLE1BQU0sZ0JBQWdCO0FBQ3pDLE9BQU9DLElBQUksTUFBTSxRQUFRO0FBQ3pCLE9BQU9DLE9BQU8sTUFBTSxXQUFXO0FBQy9CLE9BQU9DLGNBQWMsTUFBTSxrQkFBa0I7QUFDN0MsT0FBT0MsYUFBYSxNQUFNLGlCQUFpQjtBQUMzQyxPQUFPQyxjQUFjLE1BQU0sa0JBQWtCO0FBQzdDLE9BQU9DLEtBQUssTUFBTSxTQUFTO0FBRTNCLGVBQWU7RUFDYlAsS0FBSyxFQUFMQSxLQUFLO0VBQ0xDLFlBQVksRUFBWkEsWUFBWTtFQUNaQyxJQUFJLEVBQUpBLElBQUk7RUFDSkMsT0FBTyxFQUFQQSxPQUFPO0VBQ1BDLGNBQWMsRUFBZEEsY0FBYztFQUNkQyxhQUFhLEVBQWJBLGFBQWE7RUFDYkMsY0FBYyxFQUFkQSxjQUFjO0VBQ2RDLEtBQUssRUFBTEE7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
17
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGF0cyIsIk9yY2hlc3RyYXRvciIsIkZhcXMiLCJBY3Rpb25zIiwiUmVjZW50UHJvamVjdHMiLCJSZWNlbnRDbGllbnRzIiwiUmVjZW50Q29udGV4dHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvbWFpYS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ2hhdHMgZnJvbSAnLi9DaGF0cydcbmltcG9ydCBPcmNoZXN0cmF0b3IgZnJvbSAnLi9PcmNoZXN0cmF0b3InXG5pbXBvcnQgRmFxcyBmcm9tICcuL0ZhcXMnXG5pbXBvcnQgQWN0aW9ucyBmcm9tICcuL0FjdGlvbnMnXG5pbXBvcnQgUmVjZW50UHJvamVjdHMgZnJvbSAnLi9SZWNlbnRQcm9qZWN0cydcbmltcG9ydCBSZWNlbnRDbGllbnRzIGZyb20gJy4vUmVjZW50Q2xpZW50cydcbmltcG9ydCBSZWNlbnRDb250ZXh0cyBmcm9tICcuL1JlY2VudENvbnRleHRzJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIENoYXRzLFxuICBPcmNoZXN0cmF0b3IsXG4gIEZhcXMsXG4gIEFjdGlvbnMsXG4gIFJlY2VudFByb2plY3RzLFxuICBSZWNlbnRDbGllbnRzLFxuICBSZWNlbnRDb250ZXh0cyxcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsS0FBSyxNQUFNLFNBQVM7QUFDM0IsT0FBT0MsWUFBWSxNQUFNLGdCQUFnQjtBQUN6QyxPQUFPQyxJQUFJLE1BQU0sUUFBUTtBQUN6QixPQUFPQyxPQUFPLE1BQU0sV0FBVztBQUMvQixPQUFPQyxjQUFjLE1BQU0sa0JBQWtCO0FBQzdDLE9BQU9DLGFBQWEsTUFBTSxpQkFBaUI7QUFDM0MsT0FBT0MsY0FBYyxNQUFNLGtCQUFrQjtBQUU3QyxlQUFlO0VBQ2JOLEtBQUssRUFBTEEsS0FBSztFQUNMQyxZQUFZLEVBQVpBLFlBQVk7RUFDWkMsSUFBSSxFQUFKQSxJQUFJO0VBQ0pDLE9BQU8sRUFBUEEsT0FBTztFQUNQQyxjQUFjLEVBQWRBLGNBQWM7RUFDZEMsYUFBYSxFQUFiQSxhQUFhO0VBQ2JDLGNBQWMsRUFBZEE7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -1,97 +1,20 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
- import _typeof from "@babel/runtime/helpers/typeof";
4
3
  import _regeneratorRuntime from "@babel/runtime/regenerator";
5
4
  /* eslint-disable camelcase */
6
5
  /* eslint-disable no-nested-ternary */
7
6
  /* eslint-disable no-undef */
8
7
 
9
8
  import { getCookie } from './getCookie';
10
- import { MaiaApiError } from './MaiaApiError';
11
9
  var MAX_ATTEMPTS = 2;
12
- var parseErrorDetail = function parseErrorDetail(errorData) {
13
- if (!errorData || _typeof(errorData) !== 'object') {
14
- return {};
15
- }
16
- var data = errorData;
17
- var detail = data.detail;
18
- if (typeof detail === 'string') {
19
- return {
20
- accessDeniedDetail: detail.includes('Access denied') ? detail : undefined,
21
- message: detail,
22
- detail: detail
23
- };
24
- }
25
- if (detail && _typeof(detail) === 'object') {
26
- var detailObj = detail;
27
- return {
28
- message: typeof detailObj.message === 'string' ? detailObj.message : undefined,
29
- code: typeof detailObj.code === 'string' ? detailObj.code : undefined,
30
- detail: detail
31
- };
32
- }
33
- return {
34
- detail: detail
35
- };
36
- };
37
-
38
- /** Lanza MaiaApiError preservando status/code/message (p. ej. 402 usage_quota_exceeded). */
39
- var throwFromFailedResponse = /*#__PURE__*/function () {
40
- var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(response) {
41
- var errorData, parsed, _t;
42
- return _regeneratorRuntime.wrap(function (_context) {
43
- while (1) switch (_context.prev = _context.next) {
44
- case 0:
45
- _context.prev = 0;
46
- _context.next = 1;
47
- return response.json();
48
- case 1:
49
- errorData = _context.sent;
50
- parsed = parseErrorDetail(errorData);
51
- if (!(response.status === 403 && parsed.accessDeniedDetail)) {
52
- _context.next = 2;
53
- break;
54
- }
55
- throw new Error(parsed.accessDeniedDetail);
56
- case 2:
57
- if (!(parsed.code || parsed.message)) {
58
- _context.next = 3;
59
- break;
60
- }
61
- throw new MaiaApiError(parsed.message || 'Failed fetching data', response.status, {
62
- code: parsed.code,
63
- detail: parsed.detail
64
- });
65
- case 3:
66
- throw new Error('Failed fetching data');
67
- case 4:
68
- _context.prev = 4;
69
- _t = _context["catch"](0);
70
- if (!(_t instanceof SyntaxError)) {
71
- _context.next = 5;
72
- break;
73
- }
74
- throw new Error('Failed fetching data');
75
- case 5:
76
- throw _t;
77
- case 6:
78
- case "end":
79
- return _context.stop();
80
- }
81
- }, _callee, null, [[0, 4]]);
82
- }));
83
- return function throwFromFailedResponse(_x) {
84
- return _ref.apply(this, arguments);
85
- };
86
- }();
87
10
  var _fetchCOR = /*#__PURE__*/function () {
88
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(url, _ref2) {
11
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(url, _ref) {
89
12
  var _$_ca, _$_ca2, _$_ca3;
90
- var path, _ref2$method, method, _ref2$body, body, _ref2$attempt, attempt, headers, signal, token, requestHeaders, response, _$_ca4, contentType;
91
- return _regeneratorRuntime.wrap(function (_context2) {
92
- while (1) switch (_context2.prev = _context2.next) {
13
+ var path, _ref$method, method, _ref$body, body, _ref$attempt, attempt, headers, signal, token, requestHeaders, response, _$_ca4, contentType, errorData, _t;
14
+ return _regeneratorRuntime.wrap(function (_context) {
15
+ while (1) switch (_context.prev = _context.next) {
93
16
  case 0:
94
- path = _ref2.path, _ref2$method = _ref2.method, method = _ref2$method === void 0 ? 'GET' : _ref2$method, _ref2$body = _ref2.body, body = _ref2$body === void 0 ? null : _ref2$body, _ref2$attempt = _ref2.attempt, attempt = _ref2$attempt === void 0 ? 0 : _ref2$attempt, headers = _ref2.headers, signal = _ref2.signal;
17
+ path = _ref.path, _ref$method = _ref.method, method = _ref$method === void 0 ? 'GET' : _ref$method, _ref$body = _ref.body, body = _ref$body === void 0 ? null : _ref$body, _ref$attempt = _ref.attempt, attempt = _ref$attempt === void 0 ? 0 : _ref$attempt, headers = _ref.headers, signal = _ref.signal;
95
18
  token = process.env.MOCK_CORPILOT_TOKEN ? process.env.MOCK_CORPILOT_TOKEN : typeof $_ca !== 'undefined' && (_$_ca = $_ca) !== null && _$_ca !== void 0 && _$_ca.getCookieATS ? (_$_ca2 = $_ca) === null || _$_ca2 === void 0 ? void 0 : _$_ca2.getCookieATS() : getCookie('ATS');
96
19
  requestHeaders = new Headers();
97
20
  if (!(headers !== null && headers !== void 0 && headers['Content-Type']) && !(body instanceof FormData)) {
@@ -99,14 +22,14 @@ var _fetchCOR = /*#__PURE__*/function () {
99
22
  }
100
23
  requestHeaders.append('Authorization', "Bearer ".concat(token));
101
24
  if (headers) {
102
- Object.entries(headers).forEach(function (_ref4) {
103
- var _ref5 = _slicedToArray(_ref4, 2),
104
- key = _ref5[0],
105
- value = _ref5[1];
25
+ Object.entries(headers).forEach(function (_ref3) {
26
+ var _ref4 = _slicedToArray(_ref3, 2),
27
+ key = _ref4[0],
28
+ value = _ref4[1];
106
29
  requestHeaders.append(key, value);
107
30
  });
108
31
  }
109
- _context2.next = 1;
32
+ _context.next = 1;
110
33
  return fetch("".concat(url, "/").concat(path), {
111
34
  method: method,
112
35
  headers: requestHeaders,
@@ -114,15 +37,15 @@ var _fetchCOR = /*#__PURE__*/function () {
114
37
  signal: signal // Add abort signal support
115
38
  });
116
39
  case 1:
117
- response = _context2.sent;
40
+ response = _context.sent;
118
41
  if (!(response.status === 401 && typeof $_ca !== 'undefined' && (_$_ca3 = $_ca) !== null && _$_ca3 !== void 0 && _$_ca3.refreshToken && attempt < MAX_ATTEMPTS)) {
119
- _context2.next = 3;
42
+ _context.next = 3;
120
43
  break;
121
44
  }
122
- _context2.next = 2;
45
+ _context.next = 2;
123
46
  return (_$_ca4 = $_ca) === null || _$_ca4 === void 0 ? void 0 : _$_ca4.refreshToken();
124
47
  case 2:
125
- return _context2.abrupt("return", _fetchCOR(url, {
48
+ return _context.abrupt("return", _fetchCOR(url, {
126
49
  path: path,
127
50
  method: method,
128
51
  body: body,
@@ -132,35 +55,63 @@ var _fetchCOR = /*#__PURE__*/function () {
132
55
  case 3:
133
56
  contentType = response.headers.get('content-type');
134
57
  if (!(contentType !== null && contentType !== void 0 && contentType.includes('text/event-stream'))) {
135
- _context2.next = 5;
58
+ _context.next = 5;
136
59
  break;
137
60
  }
138
61
  if (response.ok) {
139
- _context2.next = 4;
62
+ _context.next = 4;
140
63
  break;
141
64
  }
142
- _context2.next = 4;
143
- return throwFromFailedResponse(response);
65
+ throw new Error('Failed fetching data');
144
66
  case 4:
145
- return _context2.abrupt("return", response);
67
+ return _context.abrupt("return", response);
146
68
  case 5:
147
69
  if (response.ok) {
148
- _context2.next = 6;
70
+ _context.next = 13;
71
+ break;
72
+ }
73
+ if (!(response.status === 403)) {
74
+ _context.next = 12;
149
75
  break;
150
76
  }
151
- _context2.next = 6;
152
- return throwFromFailedResponse(response);
153
- case 6:
154
- return _context2.abrupt("return", response);
77
+ _context.prev = 6;
78
+ _context.next = 7;
79
+ return response.json();
155
80
  case 7:
81
+ errorData = _context.sent;
82
+ if (!(errorData.detail && errorData.detail.includes('Access denied'))) {
83
+ _context.next = 8;
84
+ break;
85
+ }
86
+ throw new Error(errorData.detail);
87
+ case 8:
88
+ throw new Error('Failed fetching data');
89
+ case 9:
90
+ _context.prev = 9;
91
+ _t = _context["catch"](6);
92
+ if (!(_t instanceof SyntaxError)) {
93
+ _context.next = 10;
94
+ break;
95
+ }
96
+ throw new Error('Failed fetching data');
97
+ case 10:
98
+ throw _t;
99
+ case 11:
100
+ _context.next = 13;
101
+ break;
102
+ case 12:
103
+ throw new Error('Failed fetching data');
104
+ case 13:
105
+ return _context.abrupt("return", response);
106
+ case 14:
156
107
  case "end":
157
- return _context2.stop();
108
+ return _context.stop();
158
109
  }
159
- }, _callee2);
110
+ }, _callee, null, [[6, 9]]);
160
111
  }));
161
- return function fetchCOR(_x2, _x3) {
162
- return _ref3.apply(this, arguments);
112
+ return function fetchCOR(_x, _x2) {
113
+ return _ref2.apply(this, arguments);
163
114
  };
164
115
  }();
165
116
  export { _fetchCOR as fetchCOR };
166
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDb29raWUiLCJNYWlhQXBpRXJyb3IiLCJNQVhfQVRURU1QVFMiLCJwYXJzZUVycm9yRGV0YWlsIiwiZXJyb3JEYXRhIiwiX3R5cGVvZiIsImRhdGEiLCJkZXRhaWwiLCJhY2Nlc3NEZW5pZWREZXRhaWwiLCJpbmNsdWRlcyIsInVuZGVmaW5lZCIsIm1lc3NhZ2UiLCJkZXRhaWxPYmoiLCJjb2RlIiwidGhyb3dGcm9tRmFpbGVkUmVzcG9uc2UiLCJfcmVmIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJyZXNwb25zZSIsInBhcnNlZCIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJqc29uIiwic2VudCIsInN0YXR1cyIsIkVycm9yIiwiU3ludGF4RXJyb3IiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImZldGNoQ09SIiwiX3JlZjMiLCJfY2FsbGVlMiIsInVybCIsIl9yZWYyIiwiXyRfY2EiLCJfJF9jYTIiLCJfJF9jYTMiLCJwYXRoIiwiX3JlZjIkbWV0aG9kIiwibWV0aG9kIiwiX3JlZjIkYm9keSIsImJvZHkiLCJfcmVmMiRhdHRlbXB0IiwiYXR0ZW1wdCIsImhlYWRlcnMiLCJzaWduYWwiLCJ0b2tlbiIsInJlcXVlc3RIZWFkZXJzIiwiXyRfY2E0IiwiY29udGVudFR5cGUiLCJfY29udGV4dDIiLCJwcm9jZXNzIiwiZW52IiwiTU9DS19DT1JQSUxPVF9UT0tFTiIsIiRfY2EiLCJnZXRDb29raWVBVFMiLCJIZWFkZXJzIiwiRm9ybURhdGEiLCJhcHBlbmQiLCJjb25jYXQiLCJPYmplY3QiLCJlbnRyaWVzIiwiZm9yRWFjaCIsIl9yZWY0IiwiX3JlZjUiLCJfc2xpY2VkVG9BcnJheSIsImtleSIsInZhbHVlIiwiZmV0Y2giLCJKU09OIiwic3RyaW5naWZ5IiwicmVmcmVzaFRva2VuIiwiYWJydXB0IiwiZ2V0Iiwib2siLCJfeDIiLCJfeDMiLCJfZmV0Y2hDT1IiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdXRpbHMvZmV0Y2hDT1IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY2FtZWxjYXNlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cblxuaW1wb3J0IHsgZ2V0Q29va2llIH0gZnJvbSAnLi9nZXRDb29raWUnXG5pbXBvcnQgeyBNYWlhQXBpRXJyb3IgfSBmcm9tICcuL01haWFBcGlFcnJvcidcblxuY29uc3QgTUFYX0FUVEVNUFRTID0gMlxuXG5leHBvcnQgdHlwZSBGZXRjaENPUlBhcmFtcyA9IHtcbiAgcGF0aDogc3RyaW5nXG4gIG1ldGhvZD86IHN0cmluZ1xuICBib2R5PzogdW5rbm93blxuICBhdHRlbXB0PzogbnVtYmVyXG4gIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gIHNpZ25hbD86IEFib3J0U2lnbmFsXG59XG5cbmNvbnN0IHBhcnNlRXJyb3JEZXRhaWwgPSAoXG4gIGVycm9yRGF0YTogdW5rbm93blxuKToge1xuICBtZXNzYWdlPzogc3RyaW5nXG4gIGNvZGU/OiBzdHJpbmdcbiAgZGV0YWlsPzogdW5rbm93blxuICBhY2Nlc3NEZW5pZWREZXRhaWw/OiBzdHJpbmdcbn0gPT4ge1xuICBpZiAoIWVycm9yRGF0YSB8fCB0eXBlb2YgZXJyb3JEYXRhICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiB7fVxuICB9XG5cbiAgY29uc3QgZGF0YSA9IGVycm9yRGF0YSBhcyB7IGRldGFpbD86IHVua25vd24gfVxuICBjb25zdCB7IGRldGFpbCB9ID0gZGF0YVxuXG4gIGlmICh0eXBlb2YgZGV0YWlsID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB7XG4gICAgICBhY2Nlc3NEZW5pZWREZXRhaWw6IGRldGFpbC5pbmNsdWRlcygnQWNjZXNzIGRlbmllZCcpID8gZGV0YWlsIDogdW5kZWZpbmVkLFxuICAgICAgbWVzc2FnZTogZGV0YWlsLFxuICAgICAgZGV0YWlsLFxuICAgIH1cbiAgfVxuXG4gIGlmIChkZXRhaWwgJiYgdHlwZW9mIGRldGFpbCA9PT0gJ29iamVjdCcpIHtcbiAgICBjb25zdCBkZXRhaWxPYmogPSBkZXRhaWwgYXMgeyBtZXNzYWdlPzogdW5rbm93bjsgY29kZT86IHVua25vd24gfVxuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiB0eXBlb2YgZGV0YWlsT2JqLm1lc3NhZ2UgPT09ICdzdHJpbmcnID8gZGV0YWlsT2JqLm1lc3NhZ2UgOiB1bmRlZmluZWQsXG4gICAgICBjb2RlOiB0eXBlb2YgZGV0YWlsT2JqLmNvZGUgPT09ICdzdHJpbmcnID8gZGV0YWlsT2JqLmNvZGUgOiB1bmRlZmluZWQsXG4gICAgICBkZXRhaWwsXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgZGV0YWlsIH1cbn1cblxuLyoqIExhbnphIE1haWFBcGlFcnJvciBwcmVzZXJ2YW5kbyBzdGF0dXMvY29kZS9tZXNzYWdlIChwLiBlai4gNDAyIHVzYWdlX3F1b3RhX2V4Y2VlZGVkKS4gKi9cbmNvbnN0IHRocm93RnJvbUZhaWxlZFJlc3BvbnNlID0gYXN5bmMgKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8bmV2ZXI+ID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBlcnJvckRhdGE6IHVua25vd24gPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUVycm9yRGV0YWlsKGVycm9yRGF0YSlcblxuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMyAmJiBwYXJzZWQuYWNjZXNzRGVuaWVkRGV0YWlsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IocGFyc2VkLmFjY2Vzc0RlbmllZERldGFpbClcbiAgICB9XG5cbiAgICBpZiAocGFyc2VkLmNvZGUgfHwgcGFyc2VkLm1lc3NhZ2UpIHtcbiAgICAgIHRocm93IG5ldyBNYWlhQXBpRXJyb3IocGFyc2VkLm1lc3NhZ2UgfHwgJ0ZhaWxlZCBmZXRjaGluZyBkYXRhJywgcmVzcG9uc2Uuc3RhdHVzLCB7XG4gICAgICAgIGNvZGU6IHBhcnNlZC5jb2RlLFxuICAgICAgICBkZXRhaWw6IHBhcnNlZC5kZXRhaWwsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIGZldGNoaW5nIGRhdGEnKVxuICB9IGNhdGNoIChqc29uRXJyb3IpIHtcbiAgICBpZiAoanNvbkVycm9yIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIGZldGNoaW5nIGRhdGEnKVxuICAgIH1cbiAgICB0aHJvdyBqc29uRXJyb3JcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZmV0Y2hDT1IgPSBhc3luYyAoXG4gIHVybDogc3RyaW5nLFxuICB7IHBhdGgsIG1ldGhvZCA9ICdHRVQnLCBib2R5ID0gbnVsbCwgYXR0ZW1wdCA9IDAsIGhlYWRlcnMsIHNpZ25hbCB9OiBGZXRjaENPUlBhcmFtc1xuKTogUHJvbWlzZTxSZXNwb25zZT4gPT4ge1xuICBjb25zdCB0b2tlbiA9IHByb2Nlc3MuZW52Lk1PQ0tfQ09SUElMT1RfVE9LRU5cbiAgICA/IHByb2Nlc3MuZW52Lk1PQ0tfQ09SUElMT1RfVE9LRU5cbiAgICA6IHR5cGVvZiAkX2NhICE9PSAndW5kZWZpbmVkJyAmJiAkX2NhPy5nZXRDb29raWVBVFNcbiAgICAgID8gJF9jYT8uZ2V0Q29va2llQVRTKClcbiAgICAgIDogZ2V0Q29va2llKCdBVFMnKVxuXG4gIGNvbnN0IHJlcXVlc3RIZWFkZXJzID0gbmV3IEhlYWRlcnMoKVxuICBpZiAoIWhlYWRlcnM/LlsnQ29udGVudC1UeXBlJ10gJiYgIShib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpKSB7XG4gICAgcmVxdWVzdEhlYWRlcnMuYXBwZW5kKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpXG4gIH1cbiAgcmVxdWVzdEhlYWRlcnMuYXBwZW5kKCdBdXRob3JpemF0aW9uJywgYEJlYXJlciAke3Rva2VufWApXG4gIGlmIChoZWFkZXJzKSB7XG4gICAgT2JqZWN0LmVudHJpZXMoaGVhZGVycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICByZXF1ZXN0SGVhZGVycy5hcHBlbmQoa2V5LCB2YWx1ZSlcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHt1cmx9LyR7cGF0aH1gLCB7XG4gICAgbWV0aG9kLFxuICAgIGhlYWRlcnM6IHJlcXVlc3RIZWFkZXJzLFxuICAgIGJvZHk6IGJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YSA/IGJvZHkgOiBib2R5ID8gSlNPTi5zdHJpbmdpZnkoYm9keSkgOiBudWxsLFxuICAgIHNpZ25hbCwgLy8gQWRkIGFib3J0IHNpZ25hbCBzdXBwb3J0XG4gIH0pXG5cbiAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAxICYmIHR5cGVvZiAkX2NhICE9PSAndW5kZWZpbmVkJyAmJiAkX2NhPy5yZWZyZXNoVG9rZW4gJiYgYXR0ZW1wdCA8IE1BWF9BVFRFTVBUUykge1xuICAgIGF3YWl0ICRfY2E/LnJlZnJlc2hUb2tlbigpXG4gICAgcmV0dXJuIGZldGNoQ09SKHVybCwgeyBwYXRoLCBtZXRob2QsIGJvZHksIGF0dGVtcHQ6IGF0dGVtcHQgKyAxLCBzaWduYWwgfSlcbiAgfVxuXG4gIGNvbnN0IGNvbnRlbnRUeXBlID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpXG4gIGlmIChjb250ZW50VHlwZT8uaW5jbHVkZXMoJ3RleHQvZXZlbnQtc3RyZWFtJykpIHtcbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICBhd2FpdCB0aHJvd0Zyb21GYWlsZWRSZXNwb25zZShyZXNwb25zZSlcbiAgICB9XG4gICAgcmV0dXJuIHJlc3BvbnNlXG4gIH1cblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgYXdhaXQgdGhyb3dGcm9tRmFpbGVk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
117
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDb29raWUiLCJNQVhfQVRURU1QVFMiLCJmZXRjaENPUiIsIl9yZWYyIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ1cmwiLCJfcmVmIiwiXyRfY2EiLCJfJF9jYTIiLCJfJF9jYTMiLCJwYXRoIiwiX3JlZiRtZXRob2QiLCJtZXRob2QiLCJfcmVmJGJvZHkiLCJib2R5IiwiX3JlZiRhdHRlbXB0IiwiYXR0ZW1wdCIsImhlYWRlcnMiLCJzaWduYWwiLCJ0b2tlbiIsInJlcXVlc3RIZWFkZXJzIiwicmVzcG9uc2UiLCJfJF9jYTQiLCJjb250ZW50VHlwZSIsImVycm9yRGF0YSIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJwcm9jZXNzIiwiZW52IiwiTU9DS19DT1JQSUxPVF9UT0tFTiIsIiRfY2EiLCJnZXRDb29raWVBVFMiLCJIZWFkZXJzIiwiRm9ybURhdGEiLCJhcHBlbmQiLCJjb25jYXQiLCJPYmplY3QiLCJlbnRyaWVzIiwiZm9yRWFjaCIsIl9yZWYzIiwiX3JlZjQiLCJfc2xpY2VkVG9BcnJheSIsImtleSIsInZhbHVlIiwiZmV0Y2giLCJKU09OIiwic3RyaW5naWZ5Iiwic2VudCIsInN0YXR1cyIsInJlZnJlc2hUb2tlbiIsImFicnVwdCIsImdldCIsImluY2x1ZGVzIiwib2siLCJFcnJvciIsImpzb24iLCJkZXRhaWwiLCJTeW50YXhFcnJvciIsInN0b3AiLCJfeCIsIl94MiIsImFwcGx5IiwiYXJndW1lbnRzIiwiX2ZldGNoQ09SIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3V0aWxzL2ZldGNoQ09SLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG5cbmltcG9ydCB7IGdldENvb2tpZSB9IGZyb20gJy4vZ2V0Q29va2llJ1xuXG5jb25zdCBNQVhfQVRURU1QVFMgPSAyXG5cbmV4cG9ydCB0eXBlIEZldGNoQ09SUGFyYW1zID0ge1xuICBwYXRoOiBzdHJpbmdcbiAgbWV0aG9kPzogc3RyaW5nXG4gIGJvZHk/OiB1bmtub3duXG4gIGF0dGVtcHQ/OiBudW1iZXJcbiAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgc2lnbmFsPzogQWJvcnRTaWduYWxcbn1cblxuZXhwb3J0IGNvbnN0IGZldGNoQ09SID0gYXN5bmMgKFxuICB1cmw6IHN0cmluZyxcbiAgeyBwYXRoLCBtZXRob2QgPSAnR0VUJywgYm9keSA9IG51bGwsIGF0dGVtcHQgPSAwLCBoZWFkZXJzLCBzaWduYWwgfTogRmV0Y2hDT1JQYXJhbXNcbik6IFByb21pc2U8UmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgdG9rZW4gPSBwcm9jZXNzLmVudi5NT0NLX0NPUlBJTE9UX1RPS0VOXG4gICAgPyBwcm9jZXNzLmVudi5NT0NLX0NPUlBJTE9UX1RPS0VOXG4gICAgOiB0eXBlb2YgJF9jYSAhPT0gJ3VuZGVmaW5lZCcgJiYgJF9jYT8uZ2V0Q29va2llQVRTXG4gICAgICA/ICRfY2E/LmdldENvb2tpZUFUUygpXG4gICAgICA6IGdldENvb2tpZSgnQVRTJylcblxuICBjb25zdCByZXF1ZXN0SGVhZGVycyA9IG5ldyBIZWFkZXJzKClcbiAgaWYgKCFoZWFkZXJzPy5bJ0NvbnRlbnQtVHlwZSddICYmICEoYm9keSBpbnN0YW5jZW9mIEZvcm1EYXRhKSkge1xuICAgIHJlcXVlc3RIZWFkZXJzLmFwcGVuZCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKVxuICB9XG4gIHJlcXVlc3RIZWFkZXJzLmFwcGVuZCgnQXV0aG9yaXphdGlvbicsIGBCZWFyZXIgJHt0b2tlbn1gKVxuICBpZiAoaGVhZGVycykge1xuICAgIE9iamVjdC5lbnRyaWVzKGhlYWRlcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgcmVxdWVzdEhlYWRlcnMuYXBwZW5kKGtleSwgdmFsdWUpXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7dXJsfS8ke3BhdGh9YCwge1xuICAgIG1ldGhvZCxcbiAgICBoZWFkZXJzOiByZXF1ZXN0SGVhZGVycyxcbiAgICBib2R5OiBib2R5IGluc3RhbmNlb2YgRm9ybURhdGEgPyBib2R5IDogYm9keSA/IEpTT04uc3RyaW5naWZ5KGJvZHkpIDogbnVsbCxcbiAgICBzaWduYWwsIC8vIEFkZCBhYm9ydCBzaWduYWwgc3VwcG9ydFxuICB9KVxuXG4gIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMSAmJiB0eXBlb2YgJF9jYSAhPT0gJ3VuZGVmaW5lZCcgJiYgJF9jYT8ucmVmcmVzaFRva2VuICYmIGF0dGVtcHQgPCBNQVhfQVRURU1QVFMpIHtcbiAgICBhd2FpdCAkX2NhPy5yZWZyZXNoVG9rZW4oKVxuICAgIHJldHVybiBmZXRjaENPUih1cmwsIHsgcGF0aCwgbWV0aG9kLCBib2R5LCBhdHRlbXB0OiBhdHRlbXB0ICsgMSwgc2lnbmFsIH0pXG4gIH1cblxuICBjb25zdCBjb250ZW50VHlwZSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKVxuICBpZiAoY29udGVudFR5cGU/LmluY2x1ZGVzKCd0ZXh0L2V2ZW50LXN0cmVhbScpKSB7XG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgZmV0Y2hpbmcgZGF0YScpXG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZVxuICB9XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZXJyb3JEYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICAgIGlmIChlcnJvckRhdGEuZGV0YWlsICYmIGVycm9yRGF0YS5kZXRhaWwuaW5jbHVkZXMoJ0FjY2VzcyBkZW5pZWQnKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvckRhdGEuZGV0YWlsKVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIGZldGNoaW5nIGRhdGEnKVxuICAgICAgfSBjYXRjaCAoanNvbkVycm9yKSB7XG4gICAgICAgIGlmIChqc29uRXJyb3IgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIGZldGNoaW5nIGRhdGEnKVxuICAgICAgICB9XG4gICAgICAgIHRocm93IGpzb25FcnJvclxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCBmZXRjaGluZyBkYXRhJylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2Vcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFDQTtBQUNBOztBQUVBLFNBQVNBLFNBQVMsUUFBUSxhQUFhO0FBRXZDLElBQU1DLFlBQVksR0FBRyxDQUFDO0FBV2YsSUFBTUMsU0FBUTtFQUFBLElBQUFDLEtBQUEsR0FBQUMsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUFHLFNBQUFDLFFBQ3RCQyxHQUFXLEVBQUFDLElBQUE7SUFBQSxJQUFBQyxLQUFBLEVBQUFDLE1BQUEsRUFBQUMsTUFBQTtJQUFBLElBQUFDLElBQUEsRUFBQUMsV0FBQSxFQUFBQyxNQUFBLEVBQUFDLFNBQUEsRUFBQUMsSUFBQSxFQUFBQyxZQUFBLEVBQUFDLE9BQUEsRUFBQUMsT0FBQSxFQUFBQyxNQUFBLEVBQUFDLEtBQUEsRUFBQUMsY0FBQSxFQUFBQyxRQUFBLEVBQUFDLE1BQUEsRUFBQUMsV0FBQSxFQUFBQyxTQUFBLEVBQUFDLEVBQUE7SUFBQSxPQUFBdkIsbUJBQUEsQ0FBQXdCLElBQUEsV0FBQUMsUUFBQTtNQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEs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
@@ -1,4 +1,3 @@
1
1
  export { getCookie } from './getCookie';
2
2
  export { fetchCOR } from './fetchCOR';
3
- export { MaiaApiError, isMaiaApiError } from './MaiaApiError';
4
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDb29raWUiLCJmZXRjaENPUiIsIk1haWFBcGlFcnJvciIsImlzTWFpYUFwaUVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3V0aWxzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGdldENvb2tpZSB9IGZyb20gJy4vZ2V0Q29va2llJ1xuZXhwb3J0IHsgZmV0Y2hDT1IsIHR5cGUgRmV0Y2hDT1JQYXJhbXMgfSBmcm9tICcuL2ZldGNoQ09SJ1xuZXhwb3J0IHsgTWFpYUFwaUVycm9yLCBpc01haWFBcGlFcnJvciB9IGZyb20gJy4vTWFpYUFwaUVycm9yJ1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxTQUFTLFFBQVEsYUFBYTtBQUN2QyxTQUFTQyxRQUFRLFFBQTZCLFlBQVk7QUFDMUQsU0FBU0MsWUFBWSxFQUFFQyxjQUFjLFFBQVEsZ0JBQWdCIiwiaWdub3JlTGlzdCI6W119
3
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDb29raWUiLCJmZXRjaENPUiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy91dGlscy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBnZXRDb29raWUgfSBmcm9tICcuL2dldENvb2tpZSdcbmV4cG9ydCB7IGZldGNoQ09SLCB0eXBlIEZldGNoQ09SUGFyYW1zIH0gZnJvbSAnLi9mZXRjaENPUidcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsU0FBUyxRQUFRLGFBQWE7QUFDdkMsU0FBU0MsUUFBUSxRQUE2QixZQUFZIiwiaWdub3JlTGlzdCI6W119