@projectcor/maia-components 2.11.34 → 2.11.36-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 (29) hide show
  1. package/lib/components/atoms/icons/WrenchIcon.js +42 -0
  2. package/lib/components/molecules/AbmSection/AbmActionsSection.js +136 -0
  3. package/lib/components/molecules/AbmSection/AbmActionsSection.styles.js +74 -0
  4. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.interface.js +2 -0
  5. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.js +626 -0
  6. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.styles.js +144 -0
  7. package/lib/components/molecules/AbmSection/AbmTriggersSection/index.js +2 -0
  8. package/lib/components/molecules/AbmSection/index.js +2 -1
  9. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +4 -1
  10. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +8 -2
  11. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +129 -25
  12. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +9 -2
  13. package/lib/hooks/useAgentModel/useCreateAgent.js +11 -10
  14. package/lib/hooks/useAgentModel/useUpdateAgent.js +12 -11
  15. package/lib/hooks/useEvent.js +5 -2
  16. package/lib/lang/br/index.js +86 -1
  17. package/lib/lang/en/index.js +86 -1
  18. package/lib/lang/es/index.js +86 -1
  19. package/lib/lang/fr/index.js +88 -2
  20. package/lib/services/maia/Agents/createAgent.js +1 -1
  21. package/lib/services/maia/Agents/getAgentById.js +3 -2
  22. package/lib/services/maia/Agents/updateAgent.js +1 -1
  23. package/lib/services/maia/Schedules/createSchedule.js +39 -0
  24. package/lib/services/maia/Schedules/deleteSchedule.js +36 -0
  25. package/lib/services/maia/Schedules/getSchedules.js +58 -0
  26. package/lib/services/maia/Schedules/index.js +4 -0
  27. package/lib/types/agent.js +1 -1
  28. package/lib/types/agentModal.js +1 -1
  29. package/package.json +1 -1
@@ -178,6 +178,9 @@ export var ChatAIModalHeader = function ChatAIModalHeader(_ref) {
178
178
  amplitudEvent(EVENTS.projectResumeExpand, {
179
179
  expanded: mode === 'fullscreen'
180
180
  });
181
+ amplitudEvent(EVENTS.aiChatSelectViewOptions, {
182
+ option: mode
183
+ });
181
184
  onLayoutModeChange(mode);
182
185
  setLayoutMenuOpen(false);
183
186
  }, [amplitudEvent, onLayoutModeChange]);
@@ -301,7 +304,10 @@ export var ChatAIModalHeader = function ChatAIModalHeader(_ref) {
301
304
  children: [/*#__PURE__*/_jsx(IconButton, {
302
305
  buttonId: "btn-maia-layout-menu",
303
306
  handleClick: function handleClick() {
304
- return setLayoutMenuOpen(function (prev) {
307
+ if (!layoutMenuOpen) {
308
+ amplitudEvent(EVENTS.aiChatOpenViewOptions);
309
+ }
310
+ setLayoutMenuOpen(function (prev) {
305
311
  return !prev;
306
312
  });
307
313
  },
@@ -341,4 +347,4 @@ export var ChatAIModalHeader = function ChatAIModalHeader(_ref) {
341
347
  })]
342
348
  });
343
349
  };
344
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsIlRvb2x0aXAiLCJDcm9zcyIsIkNoZXZyb25Eb3duIiwidXNlVHJhbnNsYXRpb24iLCJTRUNUSU9OUyIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VSZXNpemVMaXN0ZW5lciIsIkljb25CdXR0b24iLCJNQUlBSWNvbiIsIk1haWFDaGF0TGF5b3V0TWVudUljb24iLCJDaGF0QUlBZ2VudE9wdGlvbiIsIlNDQ0FJTUhNb2RhbCIsIlNDQ0FJTUhTZWxlY3RlZEFnZW50IiwiU0NDQUlNSFNlbGVjdGVkQWdlbnRUZXh0IiwiU0NDQUlNSFdyYXBwZXIiLCJTQ0NBSU1IV3JhcHBlckJ1dHRvbiIsIlNDQ0FJTUhXcmFwcGVySWNvbiIsIlNDQ0FJTUhXcmFwcGVyTW9kYWwiLCJTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudCIsIlNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50VGl0bGUiLCJTQ0NBSU1IRGl2aWRlciIsIlNDQ0FJTUhBZ2VudHNMaXN0IiwiU0NDQUlNSExvYWRlcldyYXBwZXIiLCJTQ0NBSVdyYXBwZXIiLCJTQ0NBSU1ITGF5b3V0TWVudUFuY2hvciIsIlNDQ0FJTUhMYXlvdXRNZW51UGFuZWwiLCJTQ0NBSU1ITGF5b3V0TWVudVJvdyIsIkVWRU5UUyIsInVzZUV2ZW50IiwiQ09SVXNlclJvbGUiLCJ1c2VVc2VyIiwiQ2hpcExsbSIsIkxvYWRlciIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIkNoYXRBSU1vZGFsSGVhZGVyIiwiX3JlZiIsImxheW91dE1vZGUiLCJvbkxheW91dE1vZGVDaGFuZ2UiLCJleHBhbmRlZCIsIl9yZWYkZHJhZ2dhYmxlIiwiZHJhZ2dhYmxlIiwib25EcmFnU3RhcnQiLCJvbkRyYWdNb3ZlIiwib25EcmFnRW5kIiwiX3JlZiRoYW5kbGVDbG9zZSIsImhhbmRsZUNsb3NlIiwiX3JlZiRhZ2VudHMiLCJhZ2VudHMiLCJfcmVmJGhhc0Vycm9yIiwiaGFzRXJyb3IiLCJfcmVmJGxvYWRpbmciLCJsb2FkaW5nIiwiX3JlZiRsb2FkaW5nTW9yZSIsImxvYWRpbmdNb3JlIiwiX3JlZiRoYXNNb3JlIiwiaGFzTW9yZSIsImhhbmRsZVJlc2V0Q2hhdCIsIm9uQWdlbnRVcGRhdGUiLCJsb2FkTW9yZUFnZW50cyIsInNvcnRBZ2VudHNMaXN0IiwiX3JlZiRoaWRlQWdlbnRTZWxlY3RvIiwiaGlkZUFnZW50U2VsZWN0b3IiLCJvbkFnZW50U2VsZWN0ZWQiLCJfdXNlVHJhbnNsYXRpb24iLCJhYm1BZ2VudCIsInQiLCJ1c2VyIiwiYW1wbGl0dWRFdmVudCIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0ZWRBZ2VudCIsImFnZW50Iiwic2VsZWN0QWdlbnQiLCJzZXRQcm9qZWN0Iiwic2V0Q2xpZW50IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaXNFeHBhbmRlZCIsInNldElzRXhwYW5kZWQiLCJ0ZXh0UmVmQWdlbnQiLCJkcm9wZG93blJlZiIsImxheW91dE1lbnVSZWYiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxheW91dE1lbnVPcGVuIiwic2V0TGF5b3V0TWVudU9wZW4iLCJfdXNlUmVzaXplTGlzdGVuZXIiLCJuYW1lIiwic2hvd1Rvb2x0aXBBZ2VudCIsInNob3dUb29sdGlwIiwiYWdlbnRzUmVmIiwiYWdlbnRzRm9yU2VsZWN0b3IiLCJmaWx0ZXIiLCJhZ2VudEl0ZW0iLCJlbnRpdHkiLCJ1bmRlZmluZWQiLCJoYW5kbGVTY3JvbGwiLCJjdXJyZW50IiwiX2FnZW50c1JlZiRjdXJyZW50Iiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiZGlzdGFuY2VGcm9tQm90dG9tIiwidGltZW91dElkIiwic2V0VGltZW91dCIsInNjcm9sbEVsZW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwiY2xlYXJUaW1lb3V0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImxvY2FsQWdlbnRzIiwiX3JlZjIiLCJpc19kZWxldGVkIiwiaGFzX25vdF9wZXJtaXNzaW9ucyIsImhhc19ub3RfYWNjZXNzIiwiaXNfZnJvbV9jb252ZXJzYXRpb24iLCJmcm9tTGlzdCIsImZpbmQiLCJpZCIsImhhbmRsZVNlbGVjdEFnZW50IiwiYWlDaGF0QWdlbnRTZWxlY3QiLCJhZ2VudF90eXBlIiwidHlwZSIsIm5lZWRzRW50aXR5IiwiaGFuZGxlRXhwYW5kTW9kYWwiLCJhaUNoYXRPcGVuQWdlbnRTZWxlY3QiLCJwcmV2IiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwiZXZlbnQiLCJ0YXJnZXQiLCJjb250YWlucyIsImRvY3VtZW50IiwiaGFuZGxlUGlja0xheW91dCIsIm1vZGUiLCJwcm9qZWN0UmVzdW1lRXhwYW5kIiwidXNlclJvbGVzRGlzYWJsZWQiLCJDT0xMQUJPUkFUT1IiLCJGUkVFTEFOQ0VSIiwiQ0xJRU5UIiwicmVuZGVyTW9kYWwiLCJyZWYiLCJvbkNsaWNrIiwibGVuZ3RoIiwiY2hpbGRyZW4iLCJ0aXRsZSIsInN0eWxlIiwiZGlzcGxheSIsImFsaWduSXRlbXMiLCJnYXAiLCJlbW9qaSIsInBsYWNlbWVudCIsImlzQWdlbnREZWxldGVkIiwid2lkdGgiLCJoZWlnaHQiLCJjb2xvciIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyIsImluY2x1ZGVzIiwicm9sZV9pZCIsImNsb25lQWdlbnRzIiwiYWciLCJpc0Nsb25lIiwibWFwIiwiY2xvbmVBZ2VudCIsImluZGV4IiwiaXNTZWxlY3RlZCIsImlzTWFpYSIsIm9uRmF2b3JpdGVUb2dnbGUiLCJjb25jYXQiLCJzb21lIiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsImNvbXBhbnkiLCJhZ2VudHNDb3VudCIsInNpemUiLCJzZWxlY3RlZE1vZGVsTGxtIiwibW9kZWxfZGlzcGxheV9uYW1lIiwic2VsZWN0ZWRBZ2VudFR5cGUiLCJzaG91bGRSZW5kZXJTZWxlY3RvciIsIiRoYXNFcnJvciIsIiRsb2FkaW5nIiwiJGhhc0FnZW50cyIsIm9uUG9pbnRlckRvd24iLCJvblBvaW50ZXJNb3ZlIiwib25Qb2ludGVyVXAiLCJvblBvaW50ZXJDYW5jZWwiLCJvbkxvc3RQb2ludGVyQ2FwdHVyZSIsImN1cnNvciIsInRvdWNoQWN0aW9uIiwibW9kZWwiLCJidXR0b25JZCIsImhhbmRsZUNsaWNrIiwidG9vbHRpcCIsImRpc2FibGVUb29sdGlwIiwicm9sZSIsIiRhY3RpdmUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwvY29tcG9uZW50cy9DaGF0QWlNb2RhbEhlYWRlci9DaGF0QWlNb2RhbEhlYWRlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2luZGVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8sIFBvaW50ZXJFdmVudCBhcyBSZWFjdFBvaW50ZXJFdmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgQ3Jvc3MgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9Dcm9zcydcbmltcG9ydCB7IENoZXZyb25Eb3duIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hldnJvbkRvd24nXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVJlc2l6ZUxpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaG9va3MvdXNlUmVzaXplJ1xuaW1wb3J0IHsgSWNvbkJ1dHRvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2F0b21zL0ljb25CdXR0b24nXG5pbXBvcnQgeyBNQUlBSWNvbiwgTWFpYUNoYXRMYXlvdXRNZW51SWNvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgQ2hhdEFJQWdlbnRPcHRpb24gfSBmcm9tICcuLi9DaGF0QWlBZ2VudE9wdGlvbnMvQ2hhdEFpQWdlbnRPcHRpb25zJ1xuaW1wb3J0IHtcbiAgU0NDQUlNSE1vZGFsLFxuICBTQ0NBSU1IU2VsZWN0ZWRBZ2VudCxcbiAgU0NDQUlNSFNlbGVjdGVkQWdlbnRUZXh0LFxuICBTQ0NBSU1IV3JhcHBlcixcbiAgU0NDQUlNSFdyYXBwZXJCdXR0b24sXG4gIFNDQ0FJTUhXcmFwcGVySWNvbixcbiAgU0NDQUlNSFdyYXBwZXJNb2RhbCxcbiAgU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnQsXG4gIFNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50VGl0bGUsXG4gIFNDQ0FJTUhEaXZpZGVyLFxuICBTQ0NBSU1IQWdlbnRzTGlzdCxcbiAgU0NDQUlNSExvYWRlcldyYXBwZXIsXG4gIFNDQ0FJV3JhcHBlcixcbiAgU0NDQUlNSExheW91dE1lbnVBbmNob3IsXG4gIFNDQ0FJTUhMYXlvdXRNZW51UGFuZWwsXG4gIFNDQ0FJTUhMYXlvdXRNZW51Um93LFxufSBmcm9tICcuL0NoYXRBaU1vZGFsSGVhZGVyLnN0eWxlcydcbmltcG9ydCB0eXBlIHsgTWFpYUNoYXRNb2RhbExheW91dE1vZGUgfSBmcm9tICcuLi8uLi9sYXlvdXQnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBDT1JVc2VyUm9sZSwgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQ2hpcExsbSB9IGZyb20gJy4uLy4uLy4uLy4uL2F0b21zL0NoaXBMbG0nXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9hdG9tcy9Mb2FkZXInXG5cbmV4cG9ydCBjb25zdCBDaGF0QUlNb2RhbEhlYWRlciA9ICh7XG4gIGxheW91dE1vZGUsXG4gIG9uTGF5b3V0TW9kZUNoYW5nZSxcbiAgZXhwYW5kZWQsXG4gIGRyYWdnYWJsZSA9IGZhbHNlLFxuICBvbkRyYWdTdGFydCxcbiAgb25EcmFnTW92ZSxcbiAgb25EcmFnRW5kLFxuICBoYW5kbGVDbG9zZSA9ICgpID0+IG51bGwsXG4gIGFnZW50cyA9IFtdLFxuICBoYXNFcnJvciA9IGZhbHNlLFxuICBsb2FkaW5nID0gZmFsc2UsXG4gIGxvYWRpbmdNb3JlID0gZmFsc2UsXG4gIGhhc01vcmUgPSBmYWxzZSxcbiAgaGFuZGxlUmVzZXRDaGF0LFxuICBvbkFnZW50VXBkYXRlLFxuICBsb2FkTW9yZUFnZW50cyxcbiAgc29ydEFnZW50c0xpc3QsXG4gIGhpZGVBZ2VudFNlbGVjdG9yID0gZmFsc2UsXG4gIG9uQWdlbnRTZWxlY3RlZCxcbn06IHtcbiAgbGF5b3V0TW9kZTogTWFpYUNoYXRNb2RhbExheW91dE1vZGVcbiAgb25MYXlvdXRNb2RlQ2hhbmdlOiAobW9kZTogTWFpYUNoYXRNb2RhbExheW91dE1vZGUpID0+IHZvaWRcbiAgZXhwYW5kZWQ6IGJvb2xlYW5cbiAgZHJhZ2dhYmxlPzogYm9vbGVhblxuICBvbkRyYWdTdGFydD86IChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB2b2lkXG4gIG9uRHJhZ01vdmU/OiAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4gdm9pZFxuICBvbkRyYWdFbmQ/OiAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4gdm9pZFxuICBoYW5kbGVDbG9zZT86ICgpID0+IHZvaWRcbiAgYWdlbnRzOiBBZ2VudFtdXG4gIGhhc0Vycm9yOiBib29sZWFuXG4gIGxvYWRpbmc6IGJvb2xlYW5cbiAgbG9hZGluZ01vcmU/OiBib29sZWFuXG4gIGhhc01vcmU/OiBib29sZWFuXG4gIGhhbmRsZVJlc2V0Q2hhdDogKCkgPT4gdm9pZFxuICBvbkFnZW50VXBkYXRlPzogKHVwZGF0ZWRBZ2VudDogQWdlbnQpID0+IHZvaWRcbiAgbG9hZE1vcmVBZ2VudHM/OiAoKSA9PiB2b2lkXG4gIHNvcnRBZ2VudHNMaXN0PzogKCkgPT4gdm9pZFxuICBoaWRlQWdlbnRTZWxlY3Rvcj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFNlIGludm9jYSBkZXNwdcOpcyBkZWwgcmVzZXQgY3VhbmRvIGVsIGFnZW50ZSBzZWxlY2Npb25hZG8gTk8gcmVxdWllcmUgc2VsZWNjacOzblxuICAgKiBkZSBlbnRpdHkgKGN1c3RvbSBvIGNsb25lK2dsb2JhbCkuIFBlcm1pdGUgcmVzb2x2ZXIgYEdFVCAvdjIvc2Vzc2lvbnMvYWdlbnQve2lkfWBcbiAgICogeSBuYXZlZ2FyIGEgdW5hIGNvbnZlcnNhY2nDs24gZXhpc3RlbnRlIHNpIGxhIGhheS5cbiAgICovXG4gIG9uQWdlbnRTZWxlY3RlZD86IChhZ2VudDogQWdlbnQpID0+IHZvaWQgfCBQcm9taXNlPHVua25vd24+XG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oW1NFQ1RJT05TLmFibUFnZW50XSlcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBhbXBsaXR1ZEV2ZW50ID0gdXNlRXZlbnQoKVxuICBjb25zdCB7IGFnZW50OiBzZWxlY3RlZEFnZW50LCBzZWxlY3RBZ2VudCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHRleHRSZWZBZ2VudCA9IHVzZVJlZjxIVE1MU3BhbkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGRyb3Bkb3duUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBsYXlvdXRNZW51UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbbGF5b3V0TWVudU9wZW4sIHNldExheW91dE1lbnVPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCB7IHNob3dUb29sdGlwOiBzaG93VG9vbHRpcEFnZW50IH0gPSB1c2VSZXNpemVMaXN0ZW5lcih0ZXh0UmVmQWdlbnQsIFtzZWxlY3RlZEFnZW50Py5uYW1lXSlcbiAgY29uc3QgYWdlbnRzUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIGNvbnN0IGFnZW50c0ZvclNlbGVjdG9yID0gdXNlTWVtbygoKSA9PiBhZ2VudHMuZmlsdGVyKGFnZW50SXRlbSA9PiBhZ2VudEl0ZW0uZW50aXR5ICE9PSAnZ2xvYmFsJyksIFthZ2VudHNdKVxuXG4gIC8vIE1hbmVqYXIgc2Nyb2xsIGluZmluaXRvIHBhcmEgY2FyZ2FyIG3DoXMgYWdlbnRzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gU29sbyBjdWFuZG8gZWwgZHJvcGRvd24gZXN0w6kgYWJpZXJ0b1xuICAgIGlmICghaXNFeHBhbmRlZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZVNjcm9sbCA9ICgpID0+IHtcbiAgICAgIGlmICghYWdlbnRzUmVmLmN1cnJlbnQgfHwgIWxvYWRNb3JlQWdlbnRzIHx8ICFoYXNNb3JlIHx8IGxvYWRpbmdNb3JlKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IGFnZW50c1JlZi5jdXJyZW50XG4gICAgICBjb25zdCBkaXN0YW5jZUZyb21Cb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHRcblxuICAgICAgLy8gQ2FyZ2FyIG3DoXMgKDUwcHggYW50ZXMpXG4gICAgICBpZiAoZGlzdGFuY2VGcm9tQm90dG9tIDwgNTApIHtcbiAgICAgICAgbG9hZE1vcmVBZ2VudHMoKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRlbGF5IHBhcmEgYXNlZ3VyYXIgcXVlIGVsIERPTSBlc3TDqSByZW5kZXJpemFkb1xuICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9IGFnZW50c1JlZi5jdXJyZW50XG4gICAgICBpZiAoc2Nyb2xsRWxlbWVudCkge1xuICAgICAgICBzY3JvbGxFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICAgIH1cbiAgICB9LCAxMDApXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgICAgIGNvbnN0IHNjcm9sbEVsZW1lbnQgPSBhZ2VudHNSZWYuY3VycmVudFxuICAgICAgaWYgKHNjcm9sbEVsZW1lbnQpIHtcbiAgICAgICAgc2Nyb2xsRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgICB9XG4gICAgfVxuICB9LCBbaXNFeHBhbmRlZCwgbG9hZE1vcmVBZ2VudHMsIGhhc01vcmUsIGxvYWRpbmdNb3JlXSlcblxuICBjb25zdCBsb2NhbEFnZW50cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHNlbGVjdGVkQWdlbnQ/LmlzX2RlbGV0ZWQgfHxcbiAgICAgIHNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgfHxcbiAgICAgIHNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfYWNjZXNzIHx8XG4gICAgICBzZWxlY3RlZEFnZW50Py5pc19mcm9tX2NvbnZlcnNhdGlvblxuICAgICkge1xuICAgICAgcmV0dXJuIHNlbGVjdGVkQWdlbnRcbiAgICB9XG4gICAgY29uc3QgZnJvbUxpc3QgPSBhZ2VudHMuZmluZChcbiAgICAgIGFnZW50ID0+XG4gICAgICAgICFhZ2VudC5pc19kZWxldGVkICYmICFhZ2VudC5oYXNfbm90X3Blcm1pc3Npb25zICYmICFhZ2VudC5oYXNfbm90X2FjY2VzcyAmJiBhZ2VudC5pZCA9PT0gc2VsZWN0ZWRBZ2VudD8uaWRcbiAgICApXG4gICAgLy8gQWdlbnRlIGhpZHJhdGFkbyBwb3IgR0VUIChwLiBlai4gbnVldm8gY2hhdCB0cmFzIGNyZWF0ZV9hZ2VudCkgcHVlZGUgbm8gZXN0YXIgYcO6biBlbiBsYSBsaXN0YSBwYWdpbmFkYVxuICAgIHJldHVybiBmcm9tTGlzdCA/PyBzZWxlY3RlZEFnZW50ID8/IG51bGxcbiAgfSwgW2FnZW50cywgc2VsZWN0ZWRBZ2VudF0pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0QWdlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAoYWdlbnQ6IEFnZW50KSA9PiB7XG4gICAgICBzZWxlY3RBZ2VudChhZ2VudClcbiAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdEFnZW50U2VsZWN0LCB7XG4gICAgICAgIGFnZW50X3R5cGU6IGFnZW50Py50eXBlLFxuICAgICAgfSlcbiAgICAgIHNldElzRXhwYW5kZWQoZmFsc2UpXG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGhhbmRsZVJlc2V0Q2hhdCgpXG4gICAgICAgIC8vIFNpIGVsIGFnZW50ZSBubyBkZXBlbmRlIGRlIHVuYSBlbnRpdHkgKGN1c3RvbSBvIGNsb25lK2dsb2JhbCkgeWEgcG9kZW1vc1xuICAgICAgICAvLyByZXNvbHZlciBzaSBleGlzdGUgdW5hIHNlc2nDs24gcHJldmlhIHksIGVuIGVzZSBjYXNvLCBuYXZlZ2FyIGEgZWxsYS5cbiAgICAgICAgLy8gUGFyYSBjbG9uZStwcm9qZWN0fGNsaWVudCwgbGEgcmVzb2x1Y2nDs24gb2N1cnJlIGVuIGxvcyBzZWxlY3RvcnMgZGUgZW50aXR5LlxuICAgICAgICBjb25zdCBuZWVkc0VudGl0eSA9IGFnZW50Py50eXBlID09PSAnY2xvbmUnICYmIChhZ2VudD8uZW50aXR5ID09PSAncHJvamVjdCcgfHwgYWdlbnQ/LmVudGl0eSA9PT0gJ2NsaWVudCcpXG4gICAgICAgIGlmICghbmVlZHNFbnRpdHkpIHtcbiAgICAgICAgICBvbkFnZW50U2VsZWN0ZWQ/LihhZ2VudClcbiAgICAgICAgfVxuICAgICAgfSwgMTAwKVxuICAgIH0sXG4gICAgW3NlbGVjdEFnZW50LCBhbXBsaXR1ZEV2ZW50LCBoYW5kbGVSZXNldENoYXQsIHNldFByb2plY3QsIHNldENsaWVudCwgb25BZ2VudFNlbGVjdGVkXVxuICApXG5cbiAgY29uc3QgaGFuZGxlRXhwYW5kTW9kYWwgPSAoKSA9PiB7XG4gICAgaWYgKCFpc0V4cGFuZGVkKSB7XG4gICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRPcGVuQWdlbnRTZWxlY3QpXG4gICAgICAvLyBDdWFuZG8gc2UgYWJyZSBlbCBzZWxlY3Rvciwgb3JkZW5hciBsb3MgYWdlbnRlc1xuICAgICAgaWYgKHNvcnRBZ2VudHNMaXN0KSB7XG4gICAgICAgIHNvcnRBZ2VudHNMaXN0KClcbiAgICAgIH1cbiAgICB9XG4gICAgc2V0SXNFeHBhbmRlZChwcmV2ID0+ICFwcmV2KVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRXhwYW5kZWQgJiYgIWxheW91dE1lbnVPcGVuKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgTm9kZVxuICAgICAgaWYgKGlzRXhwYW5kZWQgJiYgZHJvcGRvd25SZWYuY3VycmVudCAmJiAhZHJvcGRvd25SZWYuY3VycmVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICAgIHNldElzRXhwYW5kZWQoZmFsc2UpXG4gICAgICB9XG4gICAgICBpZiAobGF5b3V0TWVudU9wZW4gJiYgbGF5b3V0TWVudVJlZi5jdXJyZW50ICYmICFsYXlvdXRNZW51UmVmLmN1cnJlbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICBzZXRMYXlvdXRNZW51T3BlbihmYWxzZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG4gIH0sIFtpc0V4cGFuZGVkLCBsYXlvdXRNZW51T3Blbl0pXG5cbiAgY29uc3QgaGFuZGxlUGlja0xheW91dCA9IHVzZUNhbGxiYWNrKFxuICAgIChtb2RlOiBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZSkgPT4ge1xuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMucHJvamVjdFJlc3VtZUV4cGFuZCwge1xuICAgICAgICBleHBhbmRlZDogbW9kZSA9PT0gJ2Z1bGxzY3JlZW4nLFxuICAgICAgfSlcbiAgICAgIG9uTGF5b3V0TW9kZUNoYW5nZShtb2RlKVxuICAgICAgc2V0TGF5b3V0TWVudU9wZW4oZmFsc2UpXG4gICAgfSxcbiAgICBbYW1wbGl0dWRFdmVudCwgb25MYXlvdXRNb2RlQ2hhbmdlXVxuICApXG5cbiAgY29uc3QgdXNlclJvbGVzRGlzYWJsZWQgPSBbQ09SVXNlclJvbGUuQ09MTEFCT1JBVE9SLCBDT1JVc2VyUm9sZS5GUkVFTEFOQ0VSLCBDT1JVc2VyUm9sZS5DTElFTlRdXG5cbiAgY29uc3QgcmVuZGVyTW9kYWwgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ0NBSU1IV3JhcHBlclxuICAgICAgICByZWY9e2Ryb3Bkb3duUmVmfVxuICAgICAgICBkYXRhLW5vLWRyYWc9XCJ0cnVlXCJcbiAgICAgICAgb25DbGljaz17YWdlbnRzLmxlbmd0aCA/IGhhbmRsZUV4cGFuZE1vZGFsIDogdW5kZWZpbmVkfVxuICAgICAgICBpZD1cImNoYXQtYWktbW9kYWwtaGVhZGVyLXdyYXBwZXJcIlxuICAgICAgPlxuICAgICAgICA8U0NDQUlNSFNlbGVjdGVkQWdlbnQ+XG4gICAgICAgICAgPFRvb2x0aXBcbiAgICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgICAgc2hvd1Rvb2x0aXBBZ2VudCA/IChcbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBnYXA6ICc0cHgnIH19PlxuICAgICAgICAgICAgICAgICAge2xvY2FsQWdlbnRzPy50eXBlID09PSAnY3VzdG9tJyA/IGxvY2FsQWdlbnRzPy5lbW9qaSA6IDxNQUlBSWNvbiAvPn0ge2xvY2FsQWdlbnRzPy5uYW1lfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwbGFjZW1lbnQ9e2lzRXhwYW5kZWQgPyAnbGVmdCcgOiAndG9wJ31cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U0NDQUlNSFNlbGVjdGVkQWdlbnRUZXh0XG4gICAgICAgICAgICAgIHJlZj17dGV4dFJlZkFnZW50fVxuICAgICAgICAgICAgICBpc0FnZW50RGVsZXRlZD17XG4gICAgICAgICAgICAgICAgISFzZWxlY3RlZEFnZW50Py5pc19kZWxldGVkIHx8ICEhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyB8fCAhIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfYWNjZXNzXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywgZ2FwOiAnNHB4JyB9fT5cbiAgICAgICAgICAgICAgICB7bG9jYWxBZ2VudHM/LnR5cGUgPT09ICdjdXN0b20nID8gbG9jYWxBZ2VudHM/LmVtb2ppIDogPE1BSUFJY29uIC8+fSB7bG9jYWxBZ2VudHM/Lm5hbWV9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvU0NDQUlNSFNlbGVjdGVkQWdlbnRUZXh0PlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgPC9TQ0NBSU1IU2VsZWN0ZWRBZ2VudD5cbiAgICAgICAgPFNDQ0FJTUhXcmFwcGVySWNvbj5cbiAgICAgICAgICA8Q2hldnJvbkRvd24gd2lkdGg9ezE0fSBoZWlnaHQ9ezE0fSBjb2xvcj1cIiMyMDIwMUZcIiAvPlxuICAgICAgICA8L1NDQ0FJTUhXcmFwcGVySWNvbj5cbiAgICAgICAge2lzRXhwYW5kZWQgJiYgKFxuICAgICAgICAgIDxTQ0NBSU1IV3JhcHBlck1vZGFsPlxuICAgICAgICAgICAgPFNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50PlxuICAgICAgICAgICAgICB7d2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyAmJiAhdXNlclJvbGVzRGlzYWJsZWQuaW5jbHVkZXModXNlci5yb2xlX2lkKSAmJiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjbG9uZUFnZW50cyA9IGFnZW50c0ZvclNlbGVjdG9yLmZpbHRlcigoYWc6IEFnZW50KSA9PiBhZy50eXBlID09PSAnY2xvbmUnKVxuICAgICAgICAgICAgICAgICAgICBpZiAoIWNsb25lQWdlbnRzLmxlbmd0aCkgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNDQ0FJV3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1BSUFJY29uIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudFRpdGxlIGlzQ2xvbmU+TUFJQSBieSBDT1I8L1NDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50VGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1NDQ0FJV3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTQ0NBSU1IRGl2aWRlciAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2xvbmVBZ2VudHMubWFwKChjbG9uZUFnZW50LCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hhdEFJQWdlbnRPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2BhZ2VudC0ke2Nsb25lQWdlbnQuaWR9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudD17Y2xvbmVBZ2VudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0QWdlbnQ9e2hhbmRsZVNlbGVjdEFnZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ9e3NlbGVjdGVkQWdlbnQ/LmlkID09PSBjbG9uZUFnZW50LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTWFpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmF2b3JpdGVUb2dnbGU9e29uQWdlbnRVcGRhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2FnZW50c0ZvclNlbGVjdG9yLnNvbWUoYWdlbnQgPT4gYWdlbnQudHlwZSA9PT0gJ2N1c3RvbScpICYmXG4gICAgICAgICAgICAgICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50VGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAge3QoJ2FnZW50cycpfSBieSB7dXNlci5jb21wYW55fVxuICAgICAgICAgICAgICAgICAgICA8L1NDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50VGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0NBSU1IRGl2aWRlciAvPlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPFNDQ0FJTUhBZ2VudHNMaXN0IGhhc01vcmU9e2hhc01vcmV9IGFnZW50c0NvdW50PXthZ2VudHNGb3JTZWxlY3Rvci5sZW5ndGh9IHJlZj17YWdlbnRzUmVmfT5cbiAgICAgICAgICAgICAgICB7YWdlbnRzRm9yU2VsZWN0b3I/Lm1hcCgoYWdlbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGFnZW50Py5pc19kZWxldGVkIHx8XG4gICAgICAgICAgICAgICAgICAgIGFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zIHx8XG4gICAgICAgICAgICAgICAgICAgIGFnZW50Py5oYXNfbm90X2FjY2VzcyB8fFxuICAgICAgICAgICAgICAgICAgICBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyB8fFxuICAgICAgICAgICAgICAgICAgICAoYWdlbnQ/LnR5cGUgPT09ICdjdXN0b20nICYmICF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUylcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxDaGF0QUlBZ2VudE9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgIGtleT17YGFnZW50LSR7YWdlbnQuaWR9YH1cbiAgICAgICAgICAgICAgICAgICAgICBhZ2VudD17YWdlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEFnZW50PXtoYW5kbGVTZWxlY3RBZ2VudH1cbiAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzZWxlY3RlZEFnZW50Py5pZCA9PT0gYWdlbnQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgb25GYXZvcml0ZVRvZ2dsZT17b25BZ2VudFVwZGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzZXRJc0V4cGFuZGVkPXtzZXRJc0V4cGFuZGVkfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIHtsb2FkaW5nTW9yZSAmJiAoXG4gICAgICAgICAgICAgICAgICA8U0NDQUlNSExvYWRlcldyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgIDxMb2FkZXIgc2l6ZT1cInNtYWxsXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvU0NDQUlNSExvYWRlcldyYXBwZXI+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9TQ0NBSU1IQWdlbnRzTGlzdD5cbiAgICAgICAgICAgIDwvU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnQ+XG4gICAgICAgICAgPC9TQ0NBSU1IV3JhcHBlck1vZGFsPlxuICAgICAgICApfVxuICAgICAgPC9TQ0NBSU1IV3JhcHBlcj5cbiAgICApXG4gIH1cblxuICBjb25zdCBzZWxlY3RlZE1vZGVsTGxtID0gc2VsZWN0ZWRBZ2VudD8ubW9kZWxfZGlzcGxheV9uYW1lXG4gIGNvbnN0IHNlbGVjdGVkQWdlbnRUeXBlID0gc2VsZWN0ZWRBZ2VudD8udHlwZSA9PT0gJ2N1c3RvbSdcbiAgY29uc3Qgc2hvdWxkUmVuZGVyU2VsZWN0b3IgPVxuICAgICFoYXNFcnJvciAmJlxuICAgICFsb2FkaW5nICYmXG4gICAgIWhpZGVBZ2VudFNlbGVjdG9yICYmXG4gICAgISFzZWxlY3RlZEFnZW50ICYmXG4gICAgKCEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgfHwgISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTKVxuXG4gIHJldHVybiAoXG4gICAgPFNDQ0FJTUhNb2RhbFxuICAgICAgJGhhc0Vycm9yPXtoYXNFcnJvcn1cbiAgICAgICRsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgJGhhc0FnZW50cz17ISFhZ2VudHMubGVuZ3RofVxuICAgICAgb25Qb2ludGVyRG93bj17ZHJhZ2dhYmxlID8gb25EcmFnU3RhcnQgOiB1bmRlZmluZWR9XG4gICAgICBvblBvaW50ZXJNb3ZlPXtkcmFnZ2FibGUgPyBvbkRyYWdNb3ZlIDogdW5kZWZpbmVkfVxuICAgICAgb25Qb2ludGVyVXA9e2RyYWdnYWJsZSA/IG9uRHJhZ0VuZCA6IHVuZGVmaW5lZH1cbiAgICAgIG9uUG9pbnRlckNhbmNlbD17ZHJhZ2dhYmxlID8gb25EcmFnRW5kIDogdW5kZWZpbmVkfVxuICAgICAgb25Mb3N0UG9pbnRlckNhcHR1cmU9e2RyYWdnYWJsZSA/IG9uRHJhZ0VuZCA6IHVuZGVmaW5lZH1cbiAgICAgIHN0eWxlPXt7IGN1cnNvcjogZHJhZ2dhYmxlID8gJ2dyYWInIDogdW5kZWZpbmVkLCB0b3VjaEFjdGlvbjogZHJhZ2dhYmxlID8gJ21hbmlwdWxhdGlvbicgOiB1bmRlZmluZWQgfX1cbiAgICA+XG4gICAgICB7c2hvdWxkUmVuZGVyU2VsZWN0b3IgPyByZW5kZXJNb2RhbCgpIDogPGRpdiAvPn1cbiAgICAgIDxTQ0NBSU1IV3JhcHBlckJ1dHRvbiBkYXRhLW5vLWRyYWc9XCJ0cnVlXCI+XG4gICAgICAgIHtzZWxlY3RlZEFnZW50VHlwZSAmJiBzZWxlY3RlZE1vZGVsTGxtICYmIDxDaGlwTGxtIG1vZGVsPXtzZWxlY3RlZE1vZGVsTGxtfSBleHBhbmRlZD17ZXhwYW5kZWR9IC8+fVxuICAgICAgICA8U0NDQUlNSExheW91dE1lbnVBbmNob3IgcmVmPXtsYXlvdXRNZW51UmVmfSBkYXRhLW5vLWRyYWc9XCJ0cnVlXCI+XG4gICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgIGJ1dHRvbklkPVwiYnRuLW1haWEtbGF5b3V0LW1lbnVcIlxuICAgICAgICAgICAgaGFuZGxlQ2xpY2s9eygpID0+IHNldExheW91dE1lbnVPcGVuKHByZXYgPT4gIXByZXYpfVxuICAgICAgICAgICAgdG9vbHRpcD17dCgnbGF5b3V0TWVudVRvb2x0aXAnKX1cbiAgICAgICAgICAgIGRpc2FibGVUb29sdGlwPXtsYXlvdXRNZW51T3Blbn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8TWFpYUNoYXRMYXlvdXRNZW51SWNvbiAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICB7bGF5b3V0TWVudU9wZW4gPyAoXG4gICAgICAgICAgICA8U0NDQUlNSExheW91dE1lbnVQYW5lbCByb2xlPVwibWVudVwiPlxuICAgICAgICAgICAgICA8U0NDQUlNSExheW91dE1lbnVSb3dcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAkYWN0aXZlPXtsYXlvdXRNb2RlID09PSAnc2lkZWJhcid9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlUGlja0xheW91dCgnc2lkZWJhcicpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoJ2xheW91dFNpZGViYXInKX1cbiAgICAgICAgICAgICAgPC9TQ0NBSU1ITGF5b3V0TWVudVJvdz5cbiAgICAgICAgICAgICAgPFNDQ0FJTUhMYXlvdXRNZW51Um93XG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgJGFjdGl2ZT17bGF5b3V0TW9kZSA9PT0gJ2Z1bGxzY3JlZW4nfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVBpY2tMYXlvdXQoJ2Z1bGxzY3JlZW4nKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KCdsYXlvdXRGdWxsc2NyZWVuJyl9XG4gICAgICAgICAgICAgIDwvU0NDQUlNSExheW91dE1lbnVSb3c+XG4gICAgICAgICAgICAgIDxTQ0NBSU1ITGF5b3V0TWVudVJvd1xuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICRhY3RpdmU9e2xheW91dE1vZGUgPT09ICdmbG9hdGluZyd9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlUGlja0xheW91dCgnZmxvYXRpbmcnKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KCdsYXlvdXRGbG9hdGluZycpfVxuICAgICAgICAgICAgICA8L1NDQ0FJTUhMYXlvdXRNZW51Um93PlxuICAgICAgICAgICAgPC9TQ0NBSU1ITGF5b3V0TWVudVBhbmVsPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L1NDQ0FJTUhMYXlvdXRNZW51QW5jaG9yPlxuICAgICAgICA8SWNvbkJ1dHRvbiBoYW5kbGVDbGljaz17aGFuZGxlQ2xvc2V9IHRvb2x0aXA9e3QoJ2dsb2JhbHMuY2xvc2UnKX0+XG4gICAgICAgICAgPENyb3NzIC8+XG4gICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIDwvU0NDQUlNSFdyYXBwZXJCdXR0b24+XG4gICAgPC9TQ0NBSU1ITW9kYWw+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQSxTQUFTQSxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE9BQU8sUUFBMkMsT0FBTztBQUM1RyxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBQ3RFLFNBQVNDLEtBQUssUUFBUSx3Q0FBd0M7QUFDOUQsU0FBU0MsV0FBVyxRQUFRLDhDQUE4QztBQUMxRSxTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUM5QyxTQUFTQyxRQUFRLFFBQVEsaUNBQWlDO0FBQzFELFNBQVNDLGdCQUFnQixRQUFRLHVDQUF1QztBQUN4RSxTQUFTQyxpQkFBaUIsUUFBUSxnQ0FBZ0M7QUFDbEUsU0FBU0MsVUFBVSxRQUFRLDhCQUE4QjtBQUN6RCxTQUFTQyxRQUFRLEVBQUVDLHNCQUFzQixRQUFRLHlCQUF5QjtBQUMxRSxTQUFTQyxpQkFBaUIsUUFBUSwwQ0FBMEM7QUFDNUUsU0FDRUMsWUFBWSxFQUNaQyxvQkFBb0IsRUFDcEJDLHdCQUF3QixFQUN4QkMsY0FBYyxFQUNkQyxvQkFBb0IsRUFDcEJDLGtCQUFrQixFQUNsQkMsbUJBQW1CLEVBQ25CQywwQkFBMEIsRUFDMUJDLCtCQUErQixFQUMvQkMsY0FBYyxFQUNkQyxpQkFBaUIsRUFDakJDLG9CQUFvQixFQUNwQkMsWUFBWSxFQUNaQyx1QkFBdUIsRUFDdkJDLHNCQUFzQixFQUN0QkMsb0JBQW9CLFFBQ2YsNEJBQTRCO0FBRW5DLFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLCtCQUErQjtBQUNoRSxTQUFTQyxXQUFXLEVBQUVDLE9BQU8sUUFBUSxpQ0FBaUM7QUFFdEUsU0FB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
350
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsIlRvb2x0aXAiLCJDcm9zcyIsIkNoZXZyb25Eb3duIiwidXNlVHJhbnNsYXRpb24iLCJTRUNUSU9OUyIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VSZXNpemVMaXN0ZW5lciIsIkljb25CdXR0b24iLCJNQUlBSWNvbiIsIk1haWFDaGF0TGF5b3V0TWVudUljb24iLCJDaGF0QUlBZ2VudE9wdGlvbiIsIlNDQ0FJTUhNb2RhbCIsIlNDQ0FJTUhTZWxlY3RlZEFnZW50IiwiU0NDQUlNSFNlbGVjdGVkQWdlbnRUZXh0IiwiU0NDQUlNSFdyYXBwZXIiLCJTQ0NBSU1IV3JhcHBlckJ1dHRvbiIsIlNDQ0FJTUhXcmFwcGVySWNvbiIsIlNDQ0FJTUhXcmFwcGVyTW9kYWwiLCJTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudCIsIlNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50VGl0bGUiLCJTQ0NBSU1IRGl2aWRlciIsIlNDQ0FJTUhBZ2VudHNMaXN0IiwiU0NDQUlNSExvYWRlcldyYXBwZXIiLCJTQ0NBSVdyYXBwZXIiLCJTQ0NBSU1ITGF5b3V0TWVudUFuY2hvciIsIlNDQ0FJTUhMYXlvdXRNZW51UGFuZWwiLCJTQ0NBSU1ITGF5b3V0TWVudVJvdyIsIkVWRU5UUyIsInVzZUV2ZW50IiwiQ09SVXNlclJvbGUiLCJ1c2VVc2VyIiwiQ2hpcExsbSIsIkxvYWRlciIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIkNoYXRBSU1vZGFsSGVhZGVyIiwiX3JlZiIsImxheW91dE1vZGUiLCJvbkxheW91dE1vZGVDaGFuZ2UiLCJleHBhbmRlZCIsIl9yZWYkZHJhZ2dhYmxlIiwiZHJhZ2dhYmxlIiwib25EcmFnU3RhcnQiLCJvbkRyYWdNb3ZlIiwib25EcmFnRW5kIiwiX3JlZiRoYW5kbGVDbG9zZSIsImhhbmRsZUNsb3NlIiwiX3JlZiRhZ2VudHMiLCJhZ2VudHMiLCJfcmVmJGhhc0Vycm9yIiwiaGFzRXJyb3IiLCJfcmVmJGxvYWRpbmciLCJsb2FkaW5nIiwiX3JlZiRsb2FkaW5nTW9yZSIsImxvYWRpbmdNb3JlIiwiX3JlZiRoYXNNb3JlIiwiaGFzTW9yZSIsImhhbmRsZVJlc2V0Q2hhdCIsIm9uQWdlbnRVcGRhdGUiLCJsb2FkTW9yZUFnZW50cyIsInNvcnRBZ2VudHNMaXN0IiwiX3JlZiRoaWRlQWdlbnRTZWxlY3RvIiwiaGlkZUFnZW50U2VsZWN0b3IiLCJvbkFnZW50U2VsZWN0ZWQiLCJfdXNlVHJhbnNsYXRpb24iLCJhYm1BZ2VudCIsInQiLCJ1c2VyIiwiYW1wbGl0dWRFdmVudCIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0ZWRBZ2VudCIsImFnZW50Iiwic2VsZWN0QWdlbnQiLCJzZXRQcm9qZWN0Iiwic2V0Q2xpZW50IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaXNFeHBhbmRlZCIsInNldElzRXhwYW5kZWQiLCJ0ZXh0UmVmQWdlbnQiLCJkcm9wZG93blJlZiIsImxheW91dE1lbnVSZWYiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxheW91dE1lbnVPcGVuIiwic2V0TGF5b3V0TWVudU9wZW4iLCJfdXNlUmVzaXplTGlzdGVuZXIiLCJuYW1lIiwic2hvd1Rvb2x0aXBBZ2VudCIsInNob3dUb29sdGlwIiwiYWdlbnRzUmVmIiwiYWdlbnRzRm9yU2VsZWN0b3IiLCJmaWx0ZXIiLCJhZ2VudEl0ZW0iLCJlbnRpdHkiLCJ1bmRlZmluZWQiLCJoYW5kbGVTY3JvbGwiLCJjdXJyZW50IiwiX2FnZW50c1JlZiRjdXJyZW50Iiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiZGlzdGFuY2VGcm9tQm90dG9tIiwidGltZW91dElkIiwic2V0VGltZW91dCIsInNjcm9sbEVsZW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwiY2xlYXJUaW1lb3V0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImxvY2FsQWdlbnRzIiwiX3JlZjIiLCJpc19kZWxldGVkIiwiaGFzX25vdF9wZXJtaXNzaW9ucyIsImhhc19ub3RfYWNjZXNzIiwiaXNfZnJvbV9jb252ZXJzYXRpb24iLCJmcm9tTGlzdCIsImZpbmQiLCJpZCIsImhhbmRsZVNlbGVjdEFnZW50IiwiYWlDaGF0QWdlbnRTZWxlY3QiLCJhZ2VudF90eXBlIiwidHlwZSIsIm5lZWRzRW50aXR5IiwiaGFuZGxlRXhwYW5kTW9kYWwiLCJhaUNoYXRPcGVuQWdlbnRTZWxlY3QiLCJwcmV2IiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwiZXZlbnQiLCJ0YXJnZXQiLCJjb250YWlucyIsImRvY3VtZW50IiwiaGFuZGxlUGlja0xheW91dCIsIm1vZGUiLCJwcm9qZWN0UmVzdW1lRXhwYW5kIiwiYWlDaGF0U2VsZWN0Vmlld09wdGlvbnMiLCJvcHRpb24iLCJ1c2VyUm9sZXNEaXNhYmxlZCIsIkNPTExBQk9SQVRPUiIsIkZSRUVMQU5DRVIiLCJDTElFTlQiLCJyZW5kZXJNb2RhbCIsInJlZiIsIm9uQ2xpY2siLCJsZW5ndGgiLCJjaGlsZHJlbiIsInRpdGxlIiwic3R5bGUiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImdhcCIsImVtb2ppIiwicGxhY2VtZW50IiwiaXNBZ2VudERlbGV0ZWQiLCJ3aWR0aCIsImhlaWdodCIsImNvbG9yIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTIiwiaW5jbHVkZXMiLCJyb2xlX2lkIiwiY2xvbmVBZ2VudHMiLCJhZyIsImlzQ2xvbmUiLCJtYXAiLCJjbG9uZUFnZW50IiwiaW5kZXgiLCJpc1NlbGVjdGVkIiwiaXNNYWlhIiwib25GYXZvcml0ZVRvZ2dsZSIsImNvbmNhdCIsInNvbWUiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiY29tcGFueSIsImFnZW50c0NvdW50Iiwic2l6ZSIsInNlbGVjdGVkTW9kZWxMbG0iLCJtb2RlbF9kaXNwbGF5X25hbWUiLCJzZWxlY3RlZEFnZW50VHlwZSIsInNob3VsZFJlbmRlclNlbGVjdG9yIiwiJGhhc0Vycm9yIiwiJGxvYWRpbmciLCIkaGFzQWdlbnRzIiwib25Qb2ludGVyRG93biIsIm9uUG9pbnRlck1vdmUiLCJvblBvaW50ZXJVcCIsIm9uUG9pbnRlckNhbmNlbCIsIm9uTG9zdFBvaW50ZXJDYXB0dXJlIiwiY3Vyc29yIiwidG91Y2hBY3Rpb24iLCJtb2RlbCIsImJ1dHRvbklkIiwiaGFuZGxlQ2xpY2siLCJhaUNoYXRPcGVuVmlld09wdGlvbnMiLCJ0b29sdGlwIiwiZGlzYWJsZVRvb2x0aXAiLCJyb2xlIiwiJGFjdGl2ZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNb2RhbC9jb21wb25lbnRzL0NoYXRBaU1vZGFsSGVhZGVyL0NoYXRBaU1vZGFsSGVhZGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlTWVtbywgUG9pbnRlckV2ZW50IGFzIFJlYWN0UG9pbnRlckV2ZW50IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5pbXBvcnQgeyBDcm9zcyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Nyb3NzJ1xuaW1wb3J0IHsgQ2hldnJvbkRvd24gfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DaGV2cm9uRG93bidcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlUmVzaXplTGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9ob29rcy91c2VSZXNpemUnXG5pbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXRvbXMvSWNvbkJ1dHRvbidcbmltcG9ydCB7IE1BSUFJY29uLCBNYWlhQ2hhdExheW91dE1lbnVJY29uIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXRvbXMvaWNvbnMnXG5pbXBvcnQgeyBDaGF0QUlBZ2VudE9wdGlvbiB9IGZyb20gJy4uL0NoYXRBaUFnZW50T3B0aW9ucy9DaGF0QWlBZ2VudE9wdGlvbnMnXG5pbXBvcnQge1xuICBTQ0NBSU1ITW9kYWwsXG4gIFNDQ0FJTUhTZWxlY3RlZEFnZW50LFxuICBTQ0NBSU1IU2VsZWN0ZWRBZ2VudFRleHQsXG4gIFNDQ0FJTUhXcmFwcGVyLFxuICBTQ0NBSU1IV3JhcHBlckJ1dHRvbixcbiAgU0NDQUlNSFdyYXBwZXJJY29uLFxuICBTQ0NBSU1IV3JhcHBlck1vZGFsLFxuICBTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudCxcbiAgU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnRUaXRsZSxcbiAgU0NDQUlNSERpdmlkZXIsXG4gIFNDQ0FJTUhBZ2VudHNMaXN0LFxuICBTQ0NBSU1ITG9hZGVyV3JhcHBlcixcbiAgU0NDQUlXcmFwcGVyLFxuICBTQ0NBSU1ITGF5b3V0TWVudUFuY2hvcixcbiAgU0NDQUlNSExheW91dE1lbnVQYW5lbCxcbiAgU0NDQUlNSExheW91dE1lbnVSb3csXG59IGZyb20gJy4vQ2hhdEFpTW9kYWxIZWFkZXIuc3R5bGVzJ1xuaW1wb3J0IHR5cGUgeyBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZSB9IGZyb20gJy4uLy4uL2xheW91dCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IENPUlVzZXJSb2xlLCB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBDaGlwTGxtIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXRvbXMvQ2hpcExsbSdcbmltcG9ydCB7IExvYWRlciB9IGZyb20gJy4uLy4uLy4uLy4uL2F0b21zL0xvYWRlcidcblxuZXhwb3J0IGNvbnN0IENoYXRBSU1vZGFsSGVhZGVyID0gKHtcbiAgbGF5b3V0TW9kZSxcbiAgb25MYXlvdXRNb2RlQ2hhbmdlLFxuICBleHBhbmRlZCxcbiAgZHJhZ2dhYmxlID0gZmFsc2UsXG4gIG9uRHJhZ1N0YXJ0LFxuICBvbkRyYWdNb3ZlLFxuICBvbkRyYWdFbmQsXG4gIGhhbmRsZUNsb3NlID0gKCkgPT4gbnVsbCxcbiAgYWdlbnRzID0gW10sXG4gIGhhc0Vycm9yID0gZmFsc2UsXG4gIGxvYWRpbmcgPSBmYWxzZSxcbiAgbG9hZGluZ01vcmUgPSBmYWxzZSxcbiAgaGFzTW9yZSA9IGZhbHNlLFxuICBoYW5kbGVSZXNldENoYXQsXG4gIG9uQWdlbnRVcGRhdGUsXG4gIGxvYWRNb3JlQWdlbnRzLFxuICBzb3J0QWdlbnRzTGlzdCxcbiAgaGlkZUFnZW50U2VsZWN0b3IgPSBmYWxzZSxcbiAgb25BZ2VudFNlbGVjdGVkLFxufToge1xuICBsYXlvdXRNb2RlOiBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZVxuICBvbkxheW91dE1vZGVDaGFuZ2U6IChtb2RlOiBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZSkgPT4gdm9pZFxuICBleHBhbmRlZDogYm9vbGVhblxuICBkcmFnZ2FibGU/OiBib29sZWFuXG4gIG9uRHJhZ1N0YXJ0PzogKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHZvaWRcbiAgb25EcmFnTW92ZT86IChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB2b2lkXG4gIG9uRHJhZ0VuZD86IChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB2b2lkXG4gIGhhbmRsZUNsb3NlPzogKCkgPT4gdm9pZFxuICBhZ2VudHM6IEFnZW50W11cbiAgaGFzRXJyb3I6IGJvb2xlYW5cbiAgbG9hZGluZzogYm9vbGVhblxuICBsb2FkaW5nTW9yZT86IGJvb2xlYW5cbiAgaGFzTW9yZT86IGJvb2xlYW5cbiAgaGFuZGxlUmVzZXRDaGF0OiAoKSA9PiB2b2lkXG4gIG9uQWdlbnRVcGRhdGU/OiAodXBkYXRlZEFnZW50OiBBZ2VudCkgPT4gdm9pZFxuICBsb2FkTW9yZUFnZW50cz86ICgpID0+IHZvaWRcbiAgc29ydEFnZW50c0xpc3Q/OiAoKSA9PiB2b2lkXG4gIGhpZGVBZ2VudFNlbGVjdG9yPzogYm9vbGVhblxuICAvKipcbiAgICogU2UgaW52b2NhIGRlc3B1w6lzIGRlbCByZXNldCBjdWFuZG8gZWwgYWdlbnRlIHNlbGVjY2lvbmFkbyBOTyByZXF1aWVyZSBzZWxlY2Npw7NuXG4gICAqIGRlIGVudGl0eSAoY3VzdG9tIG8gY2xvbmUrZ2xvYmFsKS4gUGVybWl0ZSByZXNvbHZlciBgR0VUIC92Mi9zZXNzaW9ucy9hZ2VudC97aWR9YFxuICAgKiB5IG5hdmVnYXIgYSB1bmEgY29udmVyc2FjacOzbiBleGlzdGVudGUgc2kgbGEgaGF5LlxuICAgKi9cbiAgb25BZ2VudFNlbGVjdGVkPzogKGFnZW50OiBBZ2VudCkgPT4gdm9pZCB8IFByb21pc2U8dW5rbm93bj5cbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuYWJtQWdlbnRdKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IGFtcGxpdHVkRXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgYWdlbnQ6IHNlbGVjdGVkQWdlbnQsIHNlbGVjdEFnZW50LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgdGV4dFJlZkFnZW50ID0gdXNlUmVmPEhUTUxTcGFuRWxlbWVudD4obnVsbClcbiAgY29uc3QgZHJvcGRvd25SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGxheW91dE1lbnVSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtsYXlvdXRNZW51T3Blbiwgc2V0TGF5b3V0TWVudU9wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHsgc2hvd1Rvb2x0aXA6IHNob3dUb29sdGlwQWdlbnQgfSA9IHVzZVJlc2l6ZUxpc3RlbmVyKHRleHRSZWZBZ2VudCwgW3NlbGVjdGVkQWdlbnQ/Lm5hbWVdKVxuICBjb25zdCBhZ2VudHNSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG5cbiAgY29uc3QgYWdlbnRzRm9yU2VsZWN0b3IgPSB1c2VNZW1vKCgpID0+IGFnZW50cy5maWx0ZXIoYWdlbnRJdGVtID0+IGFnZW50SXRlbS5lbnRpdHkgIT09ICdnbG9iYWwnKSwgW2FnZW50c10pXG5cbiAgLy8gTWFuZWphciBzY3JvbGwgaW5maW5pdG8gcGFyYSBjYXJnYXIgbcOhcyBhZ2VudHNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBTb2xvIGN1YW5kbyBlbCBkcm9wZG93biBlc3TDqSBhYmllcnRvXG4gICAgaWYgKCFpc0V4cGFuZGVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgaWYgKCFhZ2VudHNSZWYuY3VycmVudCB8fCAhbG9hZE1vcmVBZ2VudHMgfHwgIWhhc01vcmUgfHwgbG9hZGluZ01vcmUpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gYWdlbnRzUmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuXG4gICAgICAvLyBDYXJnYXIgbcOhcyAoNTBweCBhbnRlcylcbiAgICAgIGlmIChkaXN0YW5jZUZyb21Cb3R0b20gPCA1MCkge1xuICAgICAgICBsb2FkTW9yZUFnZW50cygpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGVsYXkgcGFyYSBhc2VndXJhciBxdWUgZWwgRE9NIGVzdMOpIHJlbmRlcml6YWRvXG4gICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBzY3JvbGxFbGVtZW50ID0gYWdlbnRzUmVmLmN1cnJlbnRcbiAgICAgIGlmIChzY3JvbGxFbGVtZW50KSB7XG4gICAgICAgIHNjcm9sbEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgICAgfVxuICAgIH0sIDEwMClcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKVxuICAgICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9IGFnZW50c1JlZi5jdXJyZW50XG4gICAgICBpZiAoc2Nyb2xsRWxlbWVudCkge1xuICAgICAgICBzY3JvbGxFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpc0V4cGFuZGVkLCBsb2FkTW9yZUFnZW50cywgaGFzTW9yZSwgbG9hZGluZ01vcmVdKVxuXG4gIGNvbnN0IGxvY2FsQWdlbnRzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgc2VsZWN0ZWRBZ2VudD8uaXNfZGVsZXRlZCB8fFxuICAgICAgc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyB8fFxuICAgICAgc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9hY2Nlc3MgfHxcbiAgICAgIHNlbGVjdGVkQWdlbnQ/LmlzX2Zyb21fY29udmVyc2F0aW9uXG4gICAgKSB7XG4gICAgICByZXR1cm4gc2VsZWN0ZWRBZ2VudFxuICAgIH1cbiAgICBjb25zdCBmcm9tTGlzdCA9IGFnZW50cy5maW5kKFxuICAgICAgYWdlbnQgPT5cbiAgICAgICAgIWFnZW50LmlzX2RlbGV0ZWQgJiYgIWFnZW50Lmhhc19ub3RfcGVybWlzc2lvbnMgJiYgIWFnZW50Lmhhc19ub3RfYWNjZXNzICYmIGFnZW50LmlkID09PSBzZWxlY3RlZEFnZW50Py5pZFxuICAgIClcbiAgICAvLyBBZ2VudGUgaGlkcmF0YWRvIHBvciBHRVQgKHAuIGVqLiBudWV2byBjaGF0IHRyYXMgY3JlYXRlX2FnZW50KSBwdWVkZSBubyBlc3RhciBhw7puIGVuIGxhIGxpc3RhIHBhZ2luYWRhXG4gICAgcmV0dXJuIGZyb21MaXN0ID8/IHNlbGVjdGVkQWdlbnQgPz8gbnVsbFxuICB9LCBbYWdlbnRzLCBzZWxlY3RlZEFnZW50XSlcblxuICBjb25zdCBoYW5kbGVTZWxlY3RBZ2VudCA9IHVzZUNhbGxiYWNrKFxuICAgIChhZ2VudDogQWdlbnQpID0+IHtcbiAgICAgIHNlbGVjdEFnZW50KGFnZW50KVxuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0QWdlbnRTZWxlY3QsIHtcbiAgICAgICAgYWdlbnRfdHlwZTogYWdlbnQ/LnR5cGUsXG4gICAgICB9KVxuICAgICAgc2V0SXNFeHBhbmRlZChmYWxzZSlcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaGFuZGxlUmVzZXRDaGF0KClcbiAgICAgICAgLy8gU2kgZWwgYWdlbnRlIG5vIGRlcGVuZGUgZGUgdW5hIGVudGl0eSAoY3VzdG9tIG8gY2xvbmUrZ2xvYmFsKSB5YSBwb2RlbW9zXG4gICAgICAgIC8vIHJlc29sdmVyIHNpIGV4aXN0ZSB1bmEgc2VzacOzbiBwcmV2aWEgeSwgZW4gZXNlIGNhc28sIG5hdmVnYXIgYSBlbGxhLlxuICAgICAgICAvLyBQYXJhIGNsb25lK3Byb2plY3R8Y2xpZW50LCBsYSByZXNvbHVjacOzbiBvY3VycmUgZW4gbG9zIHNlbGVjdG9ycyBkZSBlbnRpdHkuXG4gICAgICAgIGNvbnN0IG5lZWRzRW50aXR5ID0gYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgJiYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0JyB8fCBhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50JylcbiAgICAgICAgaWYgKCFuZWVkc0VudGl0eSkge1xuICAgICAgICAgIG9uQWdlbnRTZWxlY3RlZD8uKGFnZW50KVxuICAgICAgICB9XG4gICAgICB9LCAxMDApXG4gICAgfSxcbiAgICBbc2VsZWN0QWdlbnQsIGFtcGxpdHVkRXZlbnQsIGhhbmRsZVJlc2V0Q2hhdCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBvbkFnZW50U2VsZWN0ZWRdXG4gIClcblxuICBjb25zdCBoYW5kbGVFeHBhbmRNb2RhbCA9ICgpID0+IHtcbiAgICBpZiAoIWlzRXhwYW5kZWQpIHtcbiAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdE9wZW5BZ2VudFNlbGVjdClcbiAgICAgIC8vIEN1YW5kbyBzZSBhYnJlIGVsIHNlbGVjdG9yLCBvcmRlbmFyIGxvcyBhZ2VudGVzXG4gICAgICBpZiAoc29ydEFnZW50c0xpc3QpIHtcbiAgICAgICAgc29ydEFnZW50c0xpc3QoKVxuICAgICAgfVxuICAgIH1cbiAgICBzZXRJc0V4cGFuZGVkKHByZXYgPT4gIXByZXYpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNFeHBhbmRlZCAmJiAhbGF5b3V0TWVudU9wZW4pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBOb2RlXG4gICAgICBpZiAoaXNFeHBhbmRlZCAmJiBkcm9wZG93blJlZi5jdXJyZW50ICYmICFkcm9wZG93blJlZi5jdXJyZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgc2V0SXNFeHBhbmRlZChmYWxzZSlcbiAgICAgIH1cbiAgICAgIGlmIChsYXlvdXRNZW51T3BlbiAmJiBsYXlvdXRNZW51UmVmLmN1cnJlbnQgJiYgIWxheW91dE1lbnVSZWYuY3VycmVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICAgIHNldExheW91dE1lbnVPcGVuKGZhbHNlKVxuICAgICAgfVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIH1cbiAgfSwgW2lzRXhwYW5kZWQsIGxheW91dE1lbnVPcGVuXSlcblxuICBjb25zdCBoYW5kbGVQaWNrTGF5b3V0ID0gdXNlQ2FsbGJhY2soXG4gICAgKG1vZGU6IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlKSA9PiB7XG4gICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5wcm9qZWN0UmVzdW1lRXhwYW5kLCB7XG4gICAgICAgIGV4cGFuZGVkOiBtb2RlID09PSAnZnVsbHNjcmVlbicsXG4gICAgICB9KVxuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0U2VsZWN0Vmlld09wdGlvbnMsIHsgb3B0aW9uOiBtb2RlIH0pXG4gICAgICBvbkxheW91dE1vZGVDaGFuZ2UobW9kZSlcbiAgICAgIHNldExheW91dE1lbnVPcGVuKGZhbHNlKVxuICAgIH0sXG4gICAgW2FtcGxpdHVkRXZlbnQsIG9uTGF5b3V0TW9kZUNoYW5nZV1cbiAgKVxuXG4gIGNvbnN0IHVzZXJSb2xlc0Rpc2FibGVkID0gW0NPUlVzZXJSb2xlLkNPTExBQk9SQVRPUiwgQ09SVXNlclJvbGUuRlJFRUxBTkNFUiwgQ09SVXNlclJvbGUuQ0xJRU5UXVxuXG4gIGNvbnN0IHJlbmRlck1vZGFsID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8U0NDQUlNSFdyYXBwZXJcbiAgICAgICAgcmVmPXtkcm9wZG93blJlZn1cbiAgICAgICAgZGF0YS1uby1kcmFnPVwidHJ1ZVwiXG4gICAgICAgIG9uQ2xpY2s9e2FnZW50cy5sZW5ndGggPyBoYW5kbGVFeHBhbmRNb2RhbCA6IHVuZGVmaW5lZH1cbiAgICAgICAgaWQ9XCJjaGF0LWFpLW1vZGFsLWhlYWRlci13cmFwcGVyXCJcbiAgICAgID5cbiAgICAgICAgPFNDQ0FJTUhTZWxlY3RlZEFnZW50PlxuICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgIHNob3dUb29sdGlwQWdlbnQgPyAoXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywgZ2FwOiAnNHB4JyB9fT5cbiAgICAgICAgICAgICAgICAgIHtsb2NhbEFnZW50cz8udHlwZSA9PT0gJ2N1c3RvbScgPyBsb2NhbEFnZW50cz8uZW1vamkgOiA8TUFJQUljb24gLz59IHtsb2NhbEFnZW50cz8ubmFtZX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGxhY2VtZW50PXtpc0V4cGFuZGVkID8gJ2xlZnQnIDogJ3RvcCd9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFNDQ0FJTUhTZWxlY3RlZEFnZW50VGV4dFxuICAgICAgICAgICAgICByZWY9e3RleHRSZWZBZ2VudH1cbiAgICAgICAgICAgICAgaXNBZ2VudERlbGV0ZWQ9e1xuICAgICAgICAgICAgICAgICEhc2VsZWN0ZWRBZ2VudD8uaXNfZGVsZXRlZCB8fCAhIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgfHwgISFzZWxlY3RlZEFnZW50Py5oYXNfbm90X2FjY2Vzc1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGdhcDogJzRweCcgfX0+XG4gICAgICAgICAgICAgICAge2xvY2FsQWdlbnRzPy50eXBlID09PSAnY3VzdG9tJyA/IGxvY2FsQWdlbnRzPy5lbW9qaSA6IDxNQUlBSWNvbiAvPn0ge2xvY2FsQWdlbnRzPy5uYW1lfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L1NDQ0FJTUhTZWxlY3RlZEFnZW50VGV4dD5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDwvU0NDQUlNSFNlbGVjdGVkQWdlbnQ+XG4gICAgICAgIDxTQ0NBSU1IV3JhcHBlckljb24+XG4gICAgICAgICAgPENoZXZyb25Eb3duIHdpZHRoPXsxNH0gaGVpZ2h0PXsxNH0gY29sb3I9XCIjMjAyMDFGXCIgLz5cbiAgICAgICAgPC9TQ0NBSU1IV3JhcHBlckljb24+XG4gICAgICAgIHtpc0V4cGFuZGVkICYmIChcbiAgICAgICAgICA8U0NDQUlNSFdyYXBwZXJNb2RhbD5cbiAgICAgICAgICAgIDxTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudD5cbiAgICAgICAgICAgICAge3dpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgJiYgIXVzZXJSb2xlc0Rpc2FibGVkLmluY2x1ZGVzKHVzZXIucm9sZV9pZCkgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xvbmVBZ2VudHMgPSBhZ2VudHNGb3JTZWxlY3Rvci5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gYWcudHlwZSA9PT0gJ2Nsb25lJylcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjbG9uZUFnZW50cy5sZW5ndGgpIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTQ0NBSVdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNQUlBSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnRUaXRsZSBpc0Nsb25lPk1BSUEgYnkgQ09SPC9TQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudFRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ0NBSVdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U0NDQUlNSERpdmlkZXIgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAge2Nsb25lQWdlbnRzLm1hcCgoY2xvbmVBZ2VudCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPENoYXRBSUFnZW50T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgYWdlbnQtJHtjbG9uZUFnZW50LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnQ9e2Nsb25lQWdlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEFnZW50PXtoYW5kbGVTZWxlY3RBZ2VudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzZWxlY3RlZEFnZW50Py5pZCA9PT0gY2xvbmVBZ2VudC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc01haWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZhdm9yaXRlVG9nZ2xlPXtvbkFnZW50VXBkYXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHthZ2VudHNGb3JTZWxlY3Rvci5zb21lKGFnZW50ID0+IGFnZW50LnR5cGUgPT09ICdjdXN0b20nKSAmJlxuICAgICAgICAgICAgICAgIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudFRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgIHt0KCdhZ2VudHMnKX0gYnkge3VzZXIuY29tcGFueX1cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudFRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8U0NDQUlNSERpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDxTQ0NBSU1IQWdlbnRzTGlzdCBoYXNNb3JlPXtoYXNNb3JlfSBhZ2VudHNDb3VudD17YWdlbnRzRm9yU2VsZWN0b3IubGVuZ3RofSByZWY9e2FnZW50c1JlZn0+XG4gICAgICAgICAgICAgICAge2FnZW50c0ZvclNlbGVjdG9yPy5tYXAoKGFnZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBhZ2VudD8uaXNfZGVsZXRlZCB8fFxuICAgICAgICAgICAgICAgICAgICBhZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyB8fFxuICAgICAgICAgICAgICAgICAgICBhZ2VudD8uaGFzX25vdF9hY2Nlc3MgfHxcbiAgICAgICAgICAgICAgICAgICAgYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgfHxcbiAgICAgICAgICAgICAgICAgICAgKGFnZW50Py50eXBlID09PSAnY3VzdG9tJyAmJiAhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8Q2hhdEFJQWdlbnRPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e2BhZ2VudC0ke2FnZW50LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgYWdlbnQ9e2FnZW50fVxuICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RBZ2VudD17aGFuZGxlU2VsZWN0QWdlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c2VsZWN0ZWRBZ2VudD8uaWQgPT09IGFnZW50LmlkfVxuICAgICAgICAgICAgICAgICAgICAgIG9uRmF2b3JpdGVUb2dnbGU9e29uQWdlbnRVcGRhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgc2V0SXNFeHBhbmRlZD17c2V0SXNFeHBhbmRlZH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICB7bG9hZGluZ01vcmUgJiYgKFxuICAgICAgICAgICAgICAgICAgPFNDQ0FJTUhMb2FkZXJXcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgICA8TG9hZGVyIHNpemU9XCJzbWFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICA8L1NDQ0FJTUhMb2FkZXJXcmFwcGVyPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvU0NDQUlNSEFnZW50c0xpc3Q+XG4gICAgICAgICAgICA8L1NDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50PlxuICAgICAgICAgIDwvU0NDQUlNSFdyYXBwZXJNb2RhbD5cbiAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlNSFdyYXBwZXI+XG4gICAgKVxuICB9XG5cbiAgY29uc3Qgc2VsZWN0ZWRNb2RlbExsbSA9IHNlbGVjdGVkQWdlbnQ/Lm1vZGVsX2Rpc3BsYXlfbmFtZVxuICBjb25zdCBzZWxlY3RlZEFnZW50VHlwZSA9IHNlbGVjdGVkQWdlbnQ/LnR5cGUgPT09ICdjdXN0b20nXG4gIGNvbnN0IHNob3VsZFJlbmRlclNlbGVjdG9yID1cbiAgICAhaGFzRXJyb3IgJiZcbiAgICAhbG9hZGluZyAmJlxuICAgICFoaWRlQWdlbnRTZWxlY3RvciAmJlxuICAgICEhc2VsZWN0ZWRBZ2VudCAmJlxuICAgICghIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIHx8ICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUylcblxuICByZXR1cm4gKFxuICAgIDxTQ0NBSU1ITW9kYWxcbiAgICAgICRoYXNFcnJvcj17aGFzRXJyb3J9XG4gICAgICAkbG9hZGluZz17bG9hZGluZ31cbiAgICAgICRoYXNBZ2VudHM9eyEhYWdlbnRzLmxlbmd0aH1cbiAgICAgIG9uUG9pbnRlckRvd249e2RyYWdnYWJsZSA/IG9uRHJhZ1N0YXJ0IDogdW5kZWZpbmVkfVxuICAgICAgb25Qb2ludGVyTW92ZT17ZHJhZ2dhYmxlID8gb25EcmFnTW92ZSA6IHVuZGVmaW5lZH1cbiAgICAgIG9uUG9pbnRlclVwPXtkcmFnZ2FibGUgPyBvbkRyYWdFbmQgOiB1bmRlZmluZWR9XG4gICAgICBvblBvaW50ZXJDYW5jZWw9e2RyYWdnYWJsZSA/IG9uRHJhZ0VuZCA6IHVuZGVmaW5lZH1cbiAgICAgIG9uTG9zdFBvaW50ZXJDYXB0dXJlPXtkcmFnZ2FibGUgPyBvbkRyYWdFbmQgOiB1bmRlZmluZWR9XG4gICAgICBzdHlsZT17eyBjdXJzb3I6IGRyYWdnYWJsZSA/ICdncmFiJyA6IHVuZGVmaW5lZCwgdG91Y2hBY3Rpb246IGRyYWdnYWJsZSA/ICdtYW5pcHVsYXRpb24nIDogdW5kZWZpbmVkIH19XG4gICAgPlxuICAgICAge3Nob3VsZFJlbmRlclNlbGVjdG9yID8gcmVuZGVyTW9kYWwoKSA6IDxkaXYgLz59XG4gICAgICA8U0NDQUlNSFdyYXBwZXJCdXR0b24gZGF0YS1uby1kcmFnPVwidHJ1ZVwiPlxuICAgICAgICB7c2VsZWN0ZWRBZ2VudFR5cGUgJiYgc2VsZWN0ZWRNb2RlbExsbSAmJiA8Q2hpcExsbSBtb2RlbD17c2VsZWN0ZWRNb2RlbExsbX0gZXhwYW5kZWQ9e2V4cGFuZGVkfSAvPn1cbiAgICAgICAgPFNDQ0FJTUhMYXlvdXRNZW51QW5jaG9yIHJlZj17bGF5b3V0TWVudVJlZn0gZGF0YS1uby1kcmFnPVwidHJ1ZVwiPlxuICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICBidXR0b25JZD1cImJ0bi1tYWlhLWxheW91dC1tZW51XCJcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghbGF5b3V0TWVudU9wZW4pIHtcbiAgICAgICAgICAgICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRPcGVuVmlld09wdGlvbnMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgc2V0TGF5b3V0TWVudU9wZW4ocHJldiA9PiAhcHJldilcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB0b29sdGlwPXt0KCdsYXlvdXRNZW51VG9vbHRpcCcpfVxuICAgICAgICAgICAgZGlzYWJsZVRvb2x0aXA9e2xheW91dE1lbnVPcGVufVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxNYWlhQ2hhdExheW91dE1lbnVJY29uIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgIHtsYXlvdXRNZW51T3BlbiA/IChcbiAgICAgICAgICAgIDxTQ0NBSU1ITGF5b3V0TWVudVBhbmVsIHJvbGU9XCJtZW51XCI+XG4gICAgICAgICAgICAgIDxTQ0NBSU1ITGF5b3V0TWVudVJvd1xuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICRhY3RpdmU9e2xheW91dE1vZGUgPT09ICdzaWRlYmFyJ31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVQaWNrTGF5b3V0KCdzaWRlYmFyJyl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dCgnbGF5b3V0U2lkZWJhcicpfVxuICAgICAgICAgICAgICA8L1NDQ0FJTUhMYXlvdXRNZW51Um93PlxuICAgICAgICAgICAgICA8U0NDQUlNSExheW91dE1lbnVSb3dcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAkYWN0aXZlPXtsYXlvdXRNb2RlID09PSAnZnVsbHNjcmVlbid9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlUGlja0xheW91dCgnZnVsbHNjcmVlbicpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoJ2xheW91dEZ1bGxzY3JlZW4nKX1cbiAgICAgICAgICAgICAgPC9TQ0NBSU1ITGF5b3V0TWVudVJvdz5cbiAgICAgICAgICAgICAgPFNDQ0FJTUhMYXlvdXRNZW51Um93XG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgJGFjdGl2ZT17bGF5b3V0TW9kZSA9PT0gJ2Zsb2F0aW5nJ31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVQaWNrTGF5b3V0KCdmbG9hdGluZycpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoJ2xheW91dEZsb2F0aW5nJyl9XG4gICAgICAgICAgICAgIDwvU0NDQUlNSExheW91dE1lbnVSb3c+XG4gICAgICAgICAgICA8L1NDQ0FJTUhMYXlvdXRNZW51UGFuZWw+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvU0NDQUlNSExheW91dE1lbnVBbmNob3I+XG4gICAgICAgIDxJY29uQnV0dG9uIGhhbmRsZUNsaWNrPXtoYW5kbGVDbG9zZX0gdG9vbHRpcD17dCgnZ2xvYmFscy5jbG9zZScpfT5cbiAgICAgICAgICA8Q3Jvc3MgLz5cbiAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgPC9TQ0NBSU1IV3JhcHBlckJ1dHRvbj5cbiAgICA8L1NDQ0FJTUhNb2RhbD5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBLFNBQVNBLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxRQUEyQyxPQUFPO0FBQzVHLFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUM5RCxTQUFTQyxXQUFXLFFBQVEsOENBQThDO0FBQzFFLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLFFBQVEsUUFBUSxpQ0FBaUM7QUFDMUQsU0FBU0MsZ0JBQWdCLFFBQVEsdUNBQXVDO0FBQ3hFLFNBQVNDLGlCQUFpQixRQUFRLGdDQUFnQztBQUNsRSxTQUFTQyxVQUFVLFFBQVEsOEJBQThCO0FBQ3pELFNBQVNDLFFBQVEsRUFBRUMsc0JBQXNCLFFBQVEseUJBQXlCO0FBQzFFLFNBQVNDLGlCQUFpQixRQUFRLDBDQUEwQztBQUM1RSxTQUNFQyxZQUFZLEVBQ1pDLG9CQUFvQixFQUNwQkMsd0JBQXdCLEVBQ3hCQyxjQUFjLEVBQ2RDLG9CQUFvQixFQUNwQkMsa0JBQWtCLEVBQ2xCQyxtQkFBbUIsRUFDbkJDLDBCQUEwQixFQUMxQkMsK0JBQStCLEVBQy9CQyxjQUFjLEVBQ2RDLGlCQUFpQixFQUNqQkMsb0JBQW9CLEVBQ3BCQyxZQUFZLEVBQ1pDLHVCQUF1QixFQUN2QkMsc0JBQXNCLEVBQ3RCQyxvQkFBb0IsUUFDZiw0QkFBNEI7QUFFbkMsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEsK0JBQStCO0FBQ2hFLFNBQVNDLFdBQVcsRUFBRUMsT0FBTyxRQUFRLGlDQUFpQztBQUV0RSxTQUFTQyxPQUFPLFFBQVEsMkJBQTJCO0FBQ25ELFNBQVNDLE1BQU0sUUFBUSwwQkFBMEI7QUFBQSxTQUFBQyxHQUFBLElBQUFDLElBQUEsRUFBQUMsSUFBQSxJQUFBQyxLQUFBLEVBQUFDLFFBQUEsSUFBQUMsU0FBQTtBQUVqRCxPQUFPLElBQU1DLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUFDLElBQUEsRUE2Q3hCO0VBQUEsSUE1Q0pDLFVBQVUsR0FBQUQsSUFBQSxDQUFWQyxVQUFVO0lBQ1ZDLGtCQUFrQixHQUFBRixJQUFBLENBQWxCRSxrQkFBa0I7SUFDbEJDLFFBQVEsR0FBQUgsSUFBQSxDQUFSRyxRQUFRO0lBQUFDLGNBQUEsR0FBQUosSUFBQSxDQUNSSyxTQUFTO0lBQVRBLFNBQVMsR0FBQUQsY0FBQSxjQUFHLEtBQUssR0FBQUEsY0FBQTtJQUNqQkUsV0FBVyxHQUFBTixJQUFBLENBQVhNLFdBQVc7SUFDWEMsVUFBVSxHQUFBUCxJQUFBLENBQVZPLFVBQVU7SUFDVkMsU0FBUyxHQUFBUixJQUFBLENBQVRRLFNBQVM7SUFBQUMsZ0JBQUEsR0FBQVQsSUFBQSxDQUNUVSxXQUFXO0lBQVhBLFdBQVcsR0FBQUQsZ0JBQUEsY0FBRztNQUFBLE9BQU0sSUFBSTtJQUFBLElBQUFBLGdCQUFBO0lBQUFFLFdBQUEsR0FBQVgsSUFBQSxDQUN4QlksTUFBTTtJQUFOQSxNQUFNLEdBQUFELFdBQUEsY0FBRyxFQUFFLEdBQUFBLFdBQUE7SUFBQUUsYUFBQSxHQUFBYixJQUFBLENBQ1hjLFFBQVE7SUFBUkEsUUFBUSxHQUFBRCxhQUFBLGNBQUcsS0FBSyxHQUFBQSxhQUFBO0lBQUFFLFlBQUEsR0FBQWYsSUFBQSxDQUNoQmdCLE9BQU87SUFBUEEsT0FBTyxHQUFBRCxZQUFBLGNBQUcsS0FBSyxHQUFBQSxZQUFBO0lBQUFFLGdCQUFBLEdBQUFqQixJQUFBLENBQ2ZrQixXQUFXO0lBQVhBLFdBQVcsR0FBQUQsZ0JBQUEsY0FBRyxLQUFLLEdBQUFBLGdCQUFBO0lBQUFFLFlBQUEsR0FBQW5CLElBQUEsQ0FDbkJvQixPQUFPO0lBQVBBLE9BQU8sR0FBQUQsWUFBQSxjQUFHLEtBQUssR0FBQUEsWUFBQTtJQUNmRSxlQUFlLEdBQUFyQixJQUFBLENBQWZxQixlQUFlO0lBQ2ZDLGFBQWEsR0FBQXRCLElBQUEsQ0FBYnNCLGFBQWE7SUFDYkMsY0FBYyxHQUFBdkIsSUFBQSxDQUFkdUIsY0FBYztJQUNkQyxjQUFjLEdBQUF4QixJQUFBLENBQWR3QixjQUFjO0lBQUFDLHFCQUFBLEdBQUF6QixJQUFBLENBQ2QwQixpQkFBaUI7SUFBakJBLGlCQUFpQixHQUFBRCxxQkFBQSxjQUFHLEtBQUssR0FBQUEscUJBQUE7SUFDekJFLGVBQWUsR0FBQTNCLElBQUEsQ0FBZjJCLGVBQWU7RUEyQmYsSUFBQUMsZUFBQSxHQUFjakUsY0FBYyxDQUFDLENBQUNDLFFBQVEsQ0FBQ2lFLFFBQVEsQ0FBQyxDQUFDO0lBQXpDQyxDQUFDLEdBQUFGLGVBQUEsQ0FBREUsQ0FBQztFQUNULElBQU1DLElBQUksR0FBR3pDLE9BQU8sQ0FBQyxDQUFDO0VBQ3RCLElBQU0wQyxhQUFhLEdBQUc1QyxRQUFRLENBQUMsQ0FBQztFQUNoQyxJQUFBNkMsaUJBQUEsR0FBcUVwRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQXhFcUUsYUFBYSxHQUFBRCxpQkFBQSxDQUFwQkUsS0FBSztJQUFpQkMsV0FBVyxHQUFBSCxpQkFBQSxDQUFYRyxXQUFXO0lBQUVDLFVBQVUsR0FBQUosaUJBQUEsQ0FBVkksVUFBVTtJQUFFQyxTQUFTLEdBQUFMLGlCQUFBLENBQVRLLFNBQVM7RUFDaEUsSUFBQUMsU0FBQSxHQUFvQ2xGLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQW1GLFVBQUEsR0FBQUMsY0FBQSxDQUFBRixTQUFBO0lBQTVDRyxVQUFVLEdBQUFGLFVBQUE7SUFBRUcsYUFBYSxHQUFBSCxVQUFBO0VBQ2hDLElBQU1JLFlBQVksR0FBR3hGLE1BQU0sQ0FBa0IsSUFBSSxDQUFDO0VBQ2xELElBQU15RixXQUFXLEdBQUd6RixNQUFNLENBQWlCLElBQUksQ0FBQztFQUNoRCxJQUFNMEYsYUFBYSxHQUFHMUYsTUFBTSxDQUFpQixJQUFJLENBQUM7RUFDbEQsSUFBQTJGLFVBQUEsR0FBNEMxRixRQUFRLENBQUMsS0FBSyxDQUFDO0lBQUEyRixVQUFBLEdBQUFQLGNBQUEsQ0FBQU0sVUFBQTtJQUFwREUsY0FBYyxHQUFBRCxVQUFBO0lBQUVFLGlCQUFpQixHQUFBRixVQUFBO0VBQ3hDLElBQUFHLGtCQUFBLEdBQTBDckYsaUJBQWlCLENBQUM4RSxZQUFZLEVBQUUsQ0FBQ1YsYUFBYSxhQUFiQSxhQUFhLHVCQUFiQSxhQUFhLENBQUVrQixJQUFJLENBQUMsQ0FBQztJQUEzRUMsZ0JBQWdCLEdBQUFGLGtCQUFBLENBQTdCRyxXQUFXO0VBQ25CLElBQU1DLFNBQVMsR0FBR25HLE1BQU0sQ0FBaUIsSUFBSSxDQUFDO0VBRTlDLElBQU1vRyxpQkFBaUIsR0FBR2pHLE9BQU8sQ0FBQztJQUFBLE9BQU1xRCxNQUFNLENBQUM2QyxNQUFNLENBQUMsVUFBQUMsU0FBUztNQUFBLE9BQUlBLFNBQVMsQ0FBQ0MsTUFBTSxLQUFLLFFBQVE7SUFBQSxFQUFDO0VBQUEsR0FBRSxDQUFDL0MsTUFBTSxDQUFDLENBQUM7O0VBRTVHO0VBQ0F6RCxTQUFTLENBQUMsWUFBTTtJQUNkO0lBQ0EsSUFBSSxDQUFDdUYsVUFBVSxFQUFFO01BQ2YsT0FBT2tCLFNBQVM7SUFDbEI7SUFFQSxJQUFNQyxZQUFZLEdBQUcsU0FBZkEsWUFBWUEsQ0FBQSxFQUFTO01BQ3pCLElBQUksQ0FBQ04sU0FBUyxDQUFDTyxPQUFPLElBQUksQ0FBQ3ZDLGNBQWMsSUFBSSxDQUFDSCxPQUFPLElBQUlGLFdBQVcsRUFBRTtRQUNwRTtNQUNGO01BRUEsSUFBQTZDLGtCQUFBLEdBQWtEUixTQUFTLENBQUNPLE9BQU87UUFBM0RFLFNBQVMsR0FBQUQsa0JBQUEsQ0FBVEMsU0FBUztRQUFFQyxZQUFZLEdBQUFGLGtCQUFBLENBQVpFLFlBQVk7UUFBRUMsWUFBWSxHQUFBSCxrQkFBQSxDQUFaRyxZQUFZO01BQzdDLElBQU1DLGtCQUFrQixHQUFHRixZQUFZLEdBQUdELFNBQVMsR0FBR0UsWUFBWTs7TUFFbEU7TUFDQSxJQUFJQyxrQkFBa0IsR0FBRyxFQUFFLEVBQUU7UUFDM0I1QyxjQUFjLENBQUMsQ0FBQztNQUNsQjtJQUNGLENBQUM7O0lBRUQ7SUFDQSxJQUFNNkMsU0FBUyxHQUFHQyxVQUFVLENBQUMsWUFBTTtNQUNqQyxJQUFNQyxhQUFhLEdBQUdmLFNBQVMsQ0FBQ08sT0FBTztNQUN2QyxJQUFJUSxhQUFhLEVBQUU7UUFDakJBLGFBQWEsQ0FBQ0MsZ0JBQWdCLENBQUMsUUFBUSxFQUFFVixZQUFZLENBQUM7TUFDeEQ7SUFDRixDQUFDLEVBQUUsR0FBRyxDQUFDO0lBRVAsT0FBTyxZQUFNO01BQ1hXLFlBQVksQ0FBQ0osU0FBUyxDQUFDO01BQ3ZCLElBQU1FLGFBQWEsR0FBR2YsU0FBUyxDQUFDTyxPQUFPO01BQ3ZDLElBQUlRLGFBQWEsRUFBRTtRQUNqQkEsYUFBYSxDQUFDRyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUVaLFlBQVksQ0FBQztNQUMzRDtJQUNGLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ25CLFVBQVUsRUFBRW5CLGNBQWMsRUFBRUgsT0FBTyxFQUFFRixXQUFXLENBQUMsQ0FBQztFQUV0RCxJQUFNd0QsV0FBVyxHQUFHbkgsT0FBTyxDQUFDLFlBQU07SUFBQSxJQUFBb0gsS0FBQTtJQUNoQyxJQUNFekMsYUFBYSxhQUFiQSxhQUFhLGVBQWJBLGFBQWEsQ0FBRTBDLFVBQVUsSUFDekIxQyxhQUFhLGFBQWJBLGFBQWEsZUFBYkEsYUFBYSxDQUFFMkMsbUJBQW1CLElBQ2xDM0MsYUFBYSxhQUFiQSxhQUFhLGVBQWJBLGFBQWEsQ0FBRTRDLGNBQWMsSUFDN0I1QyxhQUFhLGFBQWJBLGFBQWEsZUFBYkEsYUFBYSxDQUFFNkMsb0JBQW9CLEVBQ25DO01BQ0EsT0FBTzdDLGFBQWE7SUFDdEI7SUFDQSxJQUFNOEMsUUFBUSxHQUFHcEUsTUFBTSxDQUFDcUUsSUFBSSxDQUMxQixVQUFBOUMsS0FBSztNQUFBLE9BQ0gsQ0FBQ0EsS0FBSyxDQUFDeUMsVUFBVSxJQUFJLENBQUN6QyxLQUFLLENBQUMwQyxtQkFBbUIsSUFBSSxDQUFDMUMsS0FBSyxDQUFDMkMsY0FBYyxJQUFJM0MsS0FBSyxDQUFDK0MsRUFBRSxNQUFLaEQsYUFBYSxhQUFiQSxhQUFhLHVCQUFiQSxhQUFhLENBQUVnRCxFQUFFO0lBQUEsQ0FDOUcsQ0FBQztJQUNEO0lBQ0EsUUFBQVAsS0FBQSxHQUFPSyxRQUFRLGFBQVJBLFFBQVEsY0FBUkEsUUFBUSxHQUFJOUMsYUFBYSxjQUFBeUMsS0FBQSxjQUFBQSxLQUFBLEdBQUksSUFBSTtFQUMxQyxDQUFDLEVBQUUsQ0FBQy9ELE1BQU0sRUFBRXNCLGFBQWEsQ0FBQyxDQUFDO0VBRTNCLElBQU1pRCxpQkFBaUIsR0FBRzdILFdBQVcsQ0FDbkMsVUFBQzZFLEtBQVksRUFBSztJQUNoQkMsV0FBVyxDQUFDRCxLQUFLLENBQUM7SUFDbEJILGFBQWEsQ0FBQzdDLE1BQU0sQ0FBQ2lHLGlCQUFpQixFQUFFO01BQ3RDQyxVQUFVLEVBQUVsRCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRW1EO0lBQ3JCLENBQUMsQ0FBQztJQUNGM0MsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUNwQk4sVUFBVSxDQUFDLElBQUksQ0FBQztJQUNoQkMsU0FBUyxhQUFUQSxTQUFTLGVBQVRBLFNBQVMsQ0FBRyxJQUFJLENBQUM7SUFDakIrQixVQUFVLENBQUMsWUFBTTtNQUNmaEQsZUFBZSxDQUFDLENBQUM7TUFDakI7TUFDQTtNQUNBO01BQ0EsSUFBTWtFLFdBQVcsR0FBRyxDQUFBcEQsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVtRCxJQUFJLE1BQUssT0FBTyxLQUFLLENBQUFuRCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRXdCLE1BQU0sTUFBSyxTQUFTLElBQUksQ0FBQXhCLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFd0IsTUFBTSxNQUFLLFFBQVEsQ0FBQztNQUMxRyxJQUFJLENBQUM0QixXQUFXLEVBQUU7UUFDaEI1RCxlQUFlLGFBQWZBLGVBQWUsZUFBZkEsZUFBZSxDQUFHUSxLQUFLLENBQUM7TUFDMUI7SUFDRixDQUFDLEVBQUUsR0FBRyxDQUFDO0VBQ1QsQ0FBQyxFQUNELENBQUNDLFdBQVcsRUFBRUosYUFBYSxFQUFFWCxlQUFlLEVBQUVnQixVQUFVLEVBQUVDLFNBQVMsRUFBRVgsZUFBZSxDQUN0RixDQUFDO0VBRUQsSUFBTTZELGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUEsRUFBUztJQUM5QixJQUFJLENBQUM5QyxVQUFVLEVBQUU7TUFDZlYsYUFBYSxDQUFDN0MsTUFBTSxDQUFDc0cscUJBQXFCLENBQUM7TUFDM0M7TUFDQSxJQUFJakUsY0FBYyxFQUFFO1FBQ2xCQSxjQUFjLENBQUMsQ0FBQztNQUNsQjtJQUNGO0lBQ0FtQixhQUFhLENBQUMsVUFBQStDLElBQUk7TUFBQSxPQUFJLENBQUNBLElBQUk7SUFBQSxFQUFDO0VBQzlCLENBQUM7RUFFRHZJLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSSxDQUFDdUYsVUFBVSxJQUFJLENBQUNPLGNBQWMsRUFBRTtNQUNsQyxPQUFPVyxTQUFTO0lBQ2xCO0lBRUEsSUFBTStCLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBa0JBLENBQUlDLEtBQWlCLEVBQUs7TUFDaEQsSUFBTUMsTUFBTSxHQUFHRCxLQUFLLENBQUNDLE1BQWM7TUFDbkMsSUFBSW5ELFVBQVUsSUFBSUcsV0FBVyxDQUFDaUIsT0FBTyxJQUFJLENBQUNqQixXQUFXLENBQUNpQixPQUFPLENBQUNnQyxRQUFRLENBQUNELE1BQU0sQ0FBQyxFQUFFO1FBQzlFbEQsYUFBYSxDQUFDLEtBQUssQ0FBQztNQUN0QjtNQUNBLElBQUlNLGNBQWMsSUFBSUgsYUFBYSxDQUFDZ0IsT0FBTyxJQUFJLENBQUNoQixhQUFhLENBQUNnQixPQUFPLENBQUNnQyxRQUFRLENBQUNELE1BQU0sQ0FBQyxFQUFFO1FBQ3RGM0MsaUJBQWlCLENBQUMsS0FBSyxDQUFDO01BQzFCO0lBQ0YsQ0FBQztJQUVENkMsUUFBUSxDQUFDeEIsZ0JBQWdCLENBQUMsV0FBVyxFQUFFb0Isa0JBQWtCLENBQUM7SUFDMUQsT0FBTyxZQUFNO01BQ1hJLFFBQVEsQ0FBQ3RCLG1CQUFtQixDQUFDLFdBQVcsRUFBRWtCLGtCQUFrQixDQUFDO0lBQy9ELENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ2pELFVBQVUsRUFBRU8sY0FBYyxDQUFDLENBQUM7RUFFaEMsSUFBTStDLGdCQUFnQixHQUFHMUksV0FBVyxDQUNsQyxVQUFDMkksSUFBNkIsRUFBSztJQUNqQ2pFLGFBQWEsQ0FBQzdDLE1BQU0sQ0FBQytHLG1CQUFtQixFQUFFO01BQ3hDL0YsUUFBUSxFQUFFOEYsSUFBSSxLQUFLO0lBQ3JCLENBQUMsQ0FBQztJQUNGakUsYUFBYSxDQUFDN0MsTUFBTSxDQUFDZ0gsdUJBQXVCLEVBQUU7TUFBRUMsTUFBTSxFQUFFSDtJQUFLLENBQUMsQ0FBQztJQUMvRC9GLGtCQUFrQixDQUFDK0YsSUFBSSxDQUFDO0lBQ3hCL0MsaUJBQWlCLENBQUMsS0FBSyxDQUFDO0VBQzFCLENBQUMsRUFDRCxDQUFDbEIsYUFBYSxFQUFFOUIsa0JBQWtCLENBQ3BDLENBQUM7RUFFRCxJQUFNbUcsaUJBQWlCLEdBQUcsQ0FBQ2hILFdBQVcsQ0FBQ2lILFlBQVksRUFBRWpILFdBQVcsQ0FBQ2tILFVBQVUsRUFBRWxILFdBQVcsQ0FBQ21ILE1BQU0sQ0FBQztFQUVoRyxJQUFNQyxXQUFXLEdBQUcsU0FBZEEsV0FBV0EsQ0FBQSxFQUFTO0lBQ3hCLG9CQUNFN0csS0FBQSxDQUFDdEIsY0FBYztNQUNib0ksR0FBRyxFQUFFN0QsV0FBWTtNQUNqQixnQkFBYSxNQUFNO01BQ25COEQsT0FBTyxFQUFFL0YsTUFBTSxDQUFDZ0csTUFBTSxHQUFHcEIsaUJBQWlCLEdBQUc1QixTQUFVO01BQ3ZEc0IsRUFBRSxFQUFDLDhCQUE4QjtNQUFBMkIsUUFBQSxnQkFFakNuSCxJQUFBLENBQUN0QixvQkFBb0I7UUFBQXlJLFFBQUEsZUFDbkJuSCxJQUFBLENBQUNsQyxPQUFPO1VBQ05zSixLQUFLLEVBQ0h6RCxnQkFBZ0IsZ0JBQ2R6RCxLQUFBO1lBQU1tSCxLQUFLLEVBQUU7Y0FBRUMsT0FBTyxFQUFFLE1BQU07Y0FBRUMsVUFBVSxFQUFFLFFBQVE7Y0FBRUMsR0FBRyxFQUFFO1lBQU0sQ0FBRTtZQUFBTCxRQUFBLEdBQ2hFLENBQUFuQyxXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRVksSUFBSSxNQUFLLFFBQVEsR0FBR1osV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUV5QyxLQUFLLGdCQUFHekgsSUFBQSxDQUFDMUIsUUFBUSxJQUFFLENBQUMsRUFBQyxHQUFDLEVBQUMwRyxXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRXRCLElBQUk7VUFBQSxDQUNuRixDQUFDLEdBRVAsRUFFSDtVQUNEZ0UsU0FBUyxFQUFFMUUsVUFBVSxHQUFHLE1BQU0sR0FBRyxLQUFNO1VBQUFtRSxRQUFBLGVBRXZDbkgsSUFBQSxDQUFDckIsd0JBQXdCO1lBQ3ZCcUksR0FBRyxFQUFFOUQsWUFBYTtZQUNsQnlFLGNBQWMsRUFDWixDQUFDLEVBQUNuRixhQUFhLGFBQWJBLGFBQWEsZUFBYkEsYUFBYSxDQUFFMEMsVUFBVSxLQUFJLENBQUMsRUFBQzFDLGFBQWEsYUFBYkEsYUFBYSxlQUFiQSxhQUFhLENBQUUyQyxtQkFBbUIsS0FBSSxDQUFDLEVBQUMzQyxhQUFhLGFBQWJBLGFBQWEsZUFBYkEsYUFBYSxDQUFFNEMsY0FBYyxDQUN2RztZQUFBK0IsUUFBQSxlQUVEakgsS0FBQTtjQUFNbUgsS0FBSyxFQUFFO2dCQUFFQyxPQUFPLEVBQUUsTUFBTTtnQkFBRUMsVUFBVSxFQUFFLFFBQVE7Z0JBQUVDLEdBQUcsRUFBRTtjQUFNLENBQUU7Y0FBQUwsUUFBQSxHQUNoRSxDQUFBbkMsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUVZLElBQUksTUFBSyxRQUFRLEdBQUdaLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFeUMsS0FBSyxnQkFBR3pILElBQUEsQ0FBQzFCLFFBQVEsSUFBRSxDQUFDLEVBQUMsR0FBQyxFQUFDMEcsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUV0QixJQUFJO1lBQUEsQ0FDbkY7VUFBQyxDQUNpQjtRQUFDLENBQ3BCO01BQUMsQ0FDVSxDQUFDLGVBQ3ZCMUQsSUFBQSxDQUFDbEIsa0JBQWtCO1FBQUFxSSxRQUFBLGVBQ2pCbkgsSUFBQSxDQUFDaEMsV0FBVztVQUFDNEosS0FBSyxFQUFFLEVBQUc7VUFBQ0MsTUFBTSxFQUFFLEVBQUc7VUFBQ0MsS0FBSyxFQUFDO1FBQVMsQ0FBRTtNQUFDLENBQ3BDLENBQUMsRUFDcEI5RSxVQUFVLGlCQUNUaEQsSUFBQSxDQUFDakIsbUJBQW1CO1FBQUFvSSxRQUFBLGVBQ2xCakgsS0FBQSxDQUFDbEIsMEJBQTBCO1VBQUFtSSxRQUFBLEdBQ3hCWSxNQUFNLENBQUNDLDJCQUEyQixJQUFJLENBQUNyQixpQkFBaUIsQ0FBQ3NCLFFBQVEsQ0FBQzVGLElBQUksQ0FBQzZGLE9BQU8sQ0FBQyxpQkFDOUVsSSxJQUFBLENBQUFJLFNBQUE7WUFBQStHLFFBQUEsRUFDSSxZQUFNO2NBQ04sSUFBTWdCLFdBQVcsR0FBR3JFLGlCQUFpQixDQUFDQyxNQUFNLENBQUMsVUFBQ3FFLEVBQVM7Z0JBQUEsT0FBS0EsRUFBRSxDQUFDeEMsSUFBSSxLQUFLLE9BQU87Y0FBQSxFQUFDO2NBQ2hGLElBQUksQ0FBQ3VDLFdBQVcsQ0FBQ2pCLE1BQU0sRUFBRSxPQUFPLElBQUk7Y0FDcEMsb0JBQ0VoSCxLQUFBLENBQUFFLFNBQUE7Z0JBQUErRyxRQUFBLGdCQUNFakgsS0FBQSxDQUFDYixZQUFZO2tCQUFBOEgsUUFBQSxnQkFDWG5ILElBQUEsQ0FBQzFCLFFBQVEsSUFBRSxDQUFDLGVBQ1owQixJQUFBLENBQUNmLCtCQUErQjtvQkFBQ29KLE9BQU87b0JBQUFsQixRQUFBLEVBQUM7a0JBQVcsQ0FBaUMsQ0FBQztnQkFBQSxDQUMxRSxDQUFDLGVBQ2ZuSCxJQUFBLENBQUNkLGNBQWMsSUFBRSxDQUFDLEVBRWpCaUosV0FBVyxDQUFDRyxHQUFHLENBQUMsVUFBQ0MsVUFBVSxFQUFFQyxLQUFLO2tCQUFBLG9CQUNqQ3hJLElBQUEsQ0FBQ3hCLGlCQUFpQjtvQkFFaEJpRSxLQUFLLEVBQUU4RixVQUFXO29CQUNsQkMsS0FBSyxFQUFFQSxLQUFNO29CQUNiL0MsaUJBQWlCLEVBQUVBLGlCQUFrQjtvQkFDckNnRCxVQUFVLEVBQUUsQ0FBQWpHLGFBQWEsYUFBYkEsYUFBYSx1QkFBYkEsYUFBYSxDQUFFZ0QsRUFBRSxNQUFLK0MsVUFBVSxDQUFDL0MsRUFBRztvQkFDaERrRCxNQUFNO29CQUNOQyxnQkFBZ0IsRUFBRS9HO2tCQUFjLFlBQUFnSCxNQUFBLENBTmxCTCxVQUFVLENBQUMvQyxFQUFFLENBTzVCLENBQUM7Z0JBQUEsQ0FDSCxDQUFDO2NBQUEsQ0FDRixDQUFDO1lBRVAsQ0FBQyxDQUFFO1VBQUMsQ0FDSixDQUNILEVBQ0ExQixpQkFBaUIsQ0FBQytFLElBQUksQ0FBQyxVQUFBcEcsS0FBSztZQUFBLE9BQUlBLEtBQUssQ0FBQ21ELElBQUksS0FBSyxRQUFRO1VBQUEsRUFBQyxJQUN2RG1DLE1BQU0sQ0FBQ2Usd0NBQXdDLGlCQUM3QzVJLEtBQUEsQ0FBQUUsU0FBQTtZQUFBK0csUUFBQSxnQkFDRWpILEtBQUEsQ0FBQ2pCLCtCQUErQjtjQUFBa0ksUUFBQSxHQUM3Qi9FLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBQyxNQUFJLEVBQUNDLElBQUksQ0FBQzBHLE9BQU87WUFBQSxDQUNDLENBQUMsZUFDbEMvSSxJQUFBLENBQUNkLGNBQWMsSUFBRSxDQUFDO1VBQUEsQ0FDbEIsQ0FDSCxlQUNIZ0IsS0FBQSxDQUFDZixpQkFBaUI7WUFBQ3VDLE9BQU8sRUFBRUEsT0FBUTtZQUFDc0gsV0FBVyxFQUFFbEYsaUJBQWlCLENBQUNvRCxNQUFPO1lBQUNGLEdBQUcsRUFBRW5ELFNBQVU7WUFBQXNELFFBQUEsR0FDeEZyRCxpQkFBaUIsYUFBakJBLGlCQUFpQix1QkFBakJBLGlCQUFpQixDQUFFd0UsR0FBRyxDQUFDLFVBQUM3RixLQUFLLEVBQUUrRixLQUFLLEVBQUs7Y0FDeEMsSUFDRS9GLEtBQUssYUFBTEEsS0FBSyxlQUFMQSxLQUFLLENBQUV5QyxVQUFVLElBQ2pCekMsS0FBSyxhQUFMQSxLQUFLLGVBQUxBLEtBQUssQ0FBRTBDLG1CQUFtQixJQUMxQjFDLEtBQUssYUFBTEEsS0FBSyxlQUFMQSxLQUFLLENBQUUyQyxjQUFjLElBQ3JCLENBQUEzQyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRW1ELElBQUksTUFBSyxPQUFPLElBQ3RCLENBQUFuRCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRW1ELElBQUksTUFBSyxRQUFRLElBQUksQ0FBQ21DLE1BQU0sQ0FBQ2Usd0NBQXlDLEVBRTlFLE9BQU8sSUFBSTtjQUNiLG9CQUNFOUksSUFBQSxDQUFDeEIsaUJBQWlCO2dCQUVoQmlFLEtBQUssRUFBRUEsS0FBTTtnQkFDYitGLEtBQUssRUFBRUEsS0FBTTtnQkFDYi9DLGlCQUFpQixFQUFFQSxpQkFBa0I7Z0JBQ3JDZ0QsVUFBVSxFQUFFLENBQUFqRyxhQUFhLGFBQWJBLGFBQWEsdUJBQWJBLGFBQWEsQ0FBRWdELEVBQUUsTUFBSy9DLEtBQUssQ0FBQytDLEVBQUc7Z0JBQzNDbUQsZ0JBQWdCLEVBQUUvRyxhQUFjO2dCQUNoQ3FCLGFBQWEsRUFBRUE7Y0FBYyxZQUFBMkYsTUFBQSxDQU5mbkcsS0FBSyxDQUFDK0MsRUFBRSxDQU92QixDQUFDO1lBRU4sQ0FBQyxDQUFDLEVBQ0RoRSxXQUFXLGlCQUNWeEIsSUFBQSxDQUFDWixvQkFBb0I7Y0FBQStILFFBQUEsZUFDbkJuSCxJQUFBLENBQUNGLE1BQU07Z0JBQUNtSixJQUFJLEVBQUM7Y0FBTyxDQUFFO1lBQUMsQ0FDSCxDQUN2QjtVQUFBLENBQ2dCLENBQUM7UUFBQSxDQUNNO01BQUMsQ0FDVixDQUN0QjtJQUFBLENBQ2EsQ0FBQztFQUVyQixDQUFDO0VBRUQsSUFBTUMsZ0JBQWdCLEdBQUcxRyxhQUFhLGFBQWJBLGFBQWEsdUJBQWJBLGFBQWEsQ0FBRTJHLGtCQUFrQjtFQUMxRCxJQUFNQyxpQkFBaUIsR0FBRyxDQUFBNUcsYUFBYSxhQUFiQSxhQUFhLHVCQUFiQSxhQUFhLENBQUVvRCxJQUFJLE1BQUssUUFBUTtFQUMxRCxJQUFNeUQsb0JBQW9CLEdBQ3hCLENBQUNqSSxRQUFRLElBQ1QsQ0FBQ0UsT0FBTyxJQUNSLENBQUNVLGlCQUFpQixJQUNsQixDQUFDLENBQUNRLGFBQWEsS0FDZCxDQUFDLENBQUN1RixNQUFNLENBQUNlLHdDQUF3QyxJQUFJLENBQUMsQ0FBQ2YsTUFBTSxDQUFDQywyQkFBMkIsQ0FBQztFQUU3RixvQkFDRTlILEtBQUEsQ0FBQ3pCLFlBQVk7SUFDWDZLLFNBQVMsRUFBRWxJLFFBQVM7SUFDcEJtSSxRQUFRLEVBQUVqSSxPQUFRO0lBQ2xCa0ksVUFBVSxFQUFFLENBQUMsQ0FBQ3RJLE1BQU0sQ0FBQ2dHLE1BQU87SUFDNUJ1QyxhQUFhLEVBQUU5SSxTQUFTLEdBQUdDLFdBQVcsR0FBR3NELFNBQVU7SUFDbkR3RixhQUFhLEVBQUUvSSxTQUFTLEdBQUdFLFVBQVUsR0FBR3FELFNBQVU7SUFDbER5RixXQUFXLEVBQUVoSixTQUFTLEdBQUdHLFNBQVMsR0FBR29ELFNBQVU7SUFDL0MwRixlQUFlLEVBQUVqSixTQUFTLEdBQUdHLFNBQVMsR0FBR29ELFNBQVU7SUFDbkQyRixvQkFBb0IsRUFBRWxKLFNBQVMsR0FBR0csU0FBUyxHQUFHb0QsU0FBVTtJQUN4RG1ELEtBQUssRUFBRTtNQUFFeUMsTUFBTSxFQUFFbkosU0FBUyxHQUFHLE1BQU0sR0FBR3VELFNBQVM7TUFBRTZGLFdBQVcsRUFBRXBKLFNBQVMsR0FBRyxjQUFjLEdBQUd1RDtJQUFVLENBQUU7SUFBQWlELFFBQUEsR0FFdEdrQyxvQkFBb0IsR0FBR3RDLFdBQVcsQ0FBQyxDQUFDLGdCQUFHL0csSUFBQSxVQUFNLENBQUMsZUFDL0NFLEtBQUEsQ0FBQ3JCLG9CQUFvQjtNQUFDLGdCQUFhLE1BQU07TUFBQXNJLFFBQUEsR0FDdENpQyxpQkFBaUIsSUFBSUYsZ0JBQWdCLGlCQUFJbEosSUFBQSxDQUFDSCxPQUFPO1FBQUNtSyxLQUFLLEVBQUVkLGdCQUFpQjtRQUFDekksUUFBUSxFQUFFQTtNQUFTLENBQUUsQ0FBQyxlQUNsR1AsS0FBQSxDQUFDWix1QkFBdUI7UUFBQzBILEdBQUcsRUFBRTVELGFBQWM7UUFBQyxnQkFBYSxNQUFNO1FBQUErRCxRQUFBLGdCQUM5RG5ILElBQUEsQ0FBQzNCLFVBQVU7VUFDVDRMLFFBQVEsRUFBQyxzQkFBc0I7VUFDL0JDLFdBQVcsRUFBRSxTQUFiQSxXQUFXQSxDQUFBLEVBQVE7WUFDakIsSUFBSSxDQUFDM0csY0FBYyxFQUFFO2NBQ25CakIsYUFBYSxDQUFDN0MsTUFBTSxDQUFDMEsscUJBQXFCLENBQUM7WUFDN0M7WUFDQTNHLGlCQUFpQixDQUFDLFVBQUF3QyxJQUFJO2NBQUEsT0FBSSxDQUFDQSxJQUFJO1lBQUEsRUFBQztVQUNsQyxDQUFFO1VBQ0ZvRSxPQUFPLEVBQUVoSSxDQUFDLENBQUMsbUJBQW1CLENBQUU7VUFDaENpSSxjQUFjLEVBQUU5RyxjQUFlO1VBQUE0RCxRQUFBLGVBRS9CbkgsSUFBQSxDQUFDekIsc0JBQXNCLElBQUU7UUFBQyxDQUNoQixDQUFDLEVBQ1pnRixjQUFjLGdCQUNickQsS0FBQSxDQUFDWCxzQkFBc0I7VUFBQytLLElBQUksRUFBQyxNQUFNO1VBQUFuRCxRQUFBLGdCQUNqQ25ILElBQUEsQ0FBQ1Isb0JBQW9CO1lBQ25Cb0csSUFBSSxFQUFDLFFBQVE7WUFDYjJFLE9BQU8sRUFBRWhLLFVBQVUsS0FBSyxTQUFVO1lBQ2xDMEcsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUE7Y0FBQSxPQUFRWCxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7WUFBQSxDQUFDO1lBQUFhLFFBQUEsRUFFMUMvRSxDQUFDLENBQUMsZUFBZTtVQUFDLENBQ0MsQ0FBQyxlQUN2QnBDLElBQUEsQ0FBQ1Isb0JBQW9CO1lBQ25Cb0csSUFBSSxFQUFDLFFBQVE7WUFDYjJFLE9BQU8sRUFBRWhLLFVBQVUsS0FBSyxZQUFhO1lBQ3JDMEcsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUE7Y0FBQSxPQUFRWCxnQkFBZ0IsQ0FBQyxZQUFZLENBQUM7WUFBQSxDQUFDO1lBQUFhLFFBQUEsRUFFN0MvRSxDQUFDLENBQUMsa0JBQWtCO1VBQUMsQ0FDRixDQUFDLGVBQ3ZCcEMsSUFBQSxDQUFDUixvQkFBb0I7WUFDbkJvRyxJQUFJLEVBQUMsUUFBUTtZQUNiMkUsT0FBTyxFQUFFaEssVUFBVSxLQUFLLFVBQVc7WUFDbkMwRyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQTtjQUFBLE9BQVFYLGdCQUFnQixDQUFDLFVBQVUsQ0FBQztZQUFBLENBQUM7WUFBQWEsUUFBQSxFQUUzQy9FLENBQUMsQ0FBQyxnQkFBZ0I7VUFBQyxDQUNBLENBQUM7UUFBQSxDQUNELENBQUMsR0FDdkIsSUFBSTtNQUFBLENBQ2UsQ0FBQyxlQUMxQnBDLElBQUEsQ0FBQzNCLFVBQVU7UUFBQzZMLFdBQVcsRUFBRWxKLFdBQVk7UUFBQ29KLE9BQU8sRUFBRWhJLENBQUMsQ0FBQyxlQUFlLENBQUU7UUFBQStFLFFBQUEsZUFDaEVuSCxJQUFBLENBQUNqQyxLQUFLLElBQUU7TUFBQyxDQUNDLENBQUM7SUFBQSxDQUNPLENBQUM7RUFBQSxDQUNYLENBQUM7QUFFbkIsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==