@projectcor/maia-components 2.11.52-0 → 2.11.52-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/lib/App.js +1 -1
  2. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +4 -2
  3. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +5 -3
  4. package/lib/components/atoms/MAIAInput/MAIAInput.js +8 -12
  5. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.js +6 -1
  6. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.styles.js +5 -2
  7. package/lib/components/atoms/VideoModal/VideoModal.js +13 -6
  8. package/lib/components/atoms/index.js +1 -2
  9. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +2 -28
  10. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +9 -18
  11. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +2 -4
  12. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +3 -2
  13. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +3 -2
  14. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +4 -2
  15. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.js +4 -2
  16. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +4 -2
  17. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +4 -2
  18. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.js +4 -2
  19. package/lib/components/organisms/SnackBar/Snackbar.js +4 -1
  20. package/lib/components/organisms/SnackBar/Snackbar.styles.js +5 -2
  21. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.js +4 -2
  22. package/lib/constants/maiaTaskPanelZIndex.js +19 -0
  23. package/lib/hooks/useChatManager/useChatManager.js +35 -84
  24. package/lib/hooks/useMaiaTaskPanelZIndex.js +17 -0
  25. package/lib/hooks/useMentionPopover.js +4 -5
  26. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +80 -176
  27. package/lib/lang/br/index.js +2 -56
  28. package/lib/lang/en/index.js +2 -56
  29. package/lib/lang/es/index.js +2 -56
  30. package/lib/lang/fr/index.js +1 -55
  31. package/package.json +1 -1
  32. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.js +0 -118
  33. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.styles.js +0 -38
  34. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.utils.js +0 -7
  35. package/lib/components/atoms/AgentActivityIndicator/index.js +0 -2
  36. package/lib/types/streamActivity.js +0 -2
  37. package/lib/utils/sseStreamContent.js +0 -17
  38. package/lib/utils/streamActivityMessages.js +0 -256
@@ -0,0 +1,17 @@
1
+ import { useGlobalContext } from '../context/global-context';
2
+ import { MAIA_TASK_PANEL_AGENT_MODAL_Z_INDEX, MAIA_TASK_PANEL_NESTED_MODAL_Z_INDEX, MAIA_TASK_PANEL_OVERLAY_Z_INDEX, MAIA_TASK_PANEL_TOAST_Z_INDEX } from '../constants/maiaTaskPanelZIndex';
3
+ var LAYER_Z_INDEX = {
4
+ overlay: MAIA_TASK_PANEL_OVERLAY_Z_INDEX,
5
+ agentModal: MAIA_TASK_PANEL_AGENT_MODAL_Z_INDEX,
6
+ nestedModal: MAIA_TASK_PANEL_NESTED_MODAL_Z_INDEX,
7
+ toast: MAIA_TASK_PANEL_TOAST_Z_INDEX
8
+ };
9
+
10
+ /** Devuelve el z-index elevado en section task; fuera de task conserva el default del componente. */
11
+ export var useMaiaTaskPanelZIndex = function useMaiaTaskPanelZIndex(defaultZIndex) {
12
+ var layer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'nestedModal';
13
+ var _useGlobalContext = useGlobalContext(),
14
+ section = _useGlobalContext.section;
15
+ return section === 'task' ? LAYER_Z_INDEX[layer] : defaultZIndex;
16
+ };
17
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VHbG9iYWxDb250ZXh0IiwiTUFJQV9UQVNLX1BBTkVMX0FHRU5UX01PREFMX1pfSU5ERVgiLCJNQUlBX1RBU0tfUEFORUxfTkVTVEVEX01PREFMX1pfSU5ERVgiLCJNQUlBX1RBU0tfUEFORUxfT1ZFUkxBWV9aX0lOREVYIiwiTUFJQV9UQVNLX1BBTkVMX1RPQVNUX1pfSU5ERVgiLCJMQVlFUl9aX0lOREVYIiwib3ZlcmxheSIsImFnZW50TW9kYWwiLCJuZXN0ZWRNb2RhbCIsInRvYXN0IiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsImRlZmF1bHRaSW5kZXgiLCJsYXllciIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VjdGlvbiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHtcbiAgTUFJQV9UQVNLX1BBTkVMX0FHRU5UX01PREFMX1pfSU5ERVgsXG4gIE1BSUFfVEFTS19QQU5FTF9ORVNURURfTU9EQUxfWl9JTkRFWCxcbiAgTUFJQV9UQVNLX1BBTkVMX09WRVJMQVlfWl9JTkRFWCxcbiAgTUFJQV9UQVNLX1BBTkVMX1RPQVNUX1pfSU5ERVgsXG59IGZyb20gJy4uL2NvbnN0YW50cy9tYWlhVGFza1BhbmVsWkluZGV4J1xuXG5leHBvcnQgdHlwZSBNYWlhVGFza1BhbmVsWkluZGV4TGF5ZXIgPSAnb3ZlcmxheScgfCAnYWdlbnRNb2RhbCcgfCAnbmVzdGVkTW9kYWwnIHwgJ3RvYXN0J1xuXG5jb25zdCBMQVlFUl9aX0lOREVYOiBSZWNvcmQ8TWFpYVRhc2tQYW5lbFpJbmRleExheWVyLCBudW1iZXI+ID0ge1xuICBvdmVybGF5OiBNQUlBX1RBU0tfUEFORUxfT1ZFUkxBWV9aX0lOREVYLFxuICBhZ2VudE1vZGFsOiBNQUlBX1RBU0tfUEFORUxfQUdFTlRfTU9EQUxfWl9JTkRFWCxcbiAgbmVzdGVkTW9kYWw6IE1BSUFfVEFTS19QQU5FTF9ORVNURURfTU9EQUxfWl9JTkRFWCxcbiAgdG9hc3Q6IE1BSUFfVEFTS19QQU5FTF9UT0FTVF9aX0lOREVYLFxufVxuXG4vKiogRGV2dWVsdmUgZWwgei1pbmRleCBlbGV2YWRvIGVuIHNlY3Rpb24gdGFzazsgZnVlcmEgZGUgdGFzayBjb25zZXJ2YSBlbCBkZWZhdWx0IGRlbCBjb21wb25lbnRlLiAqL1xuZXhwb3J0IGNvbnN0IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggPSAoXG4gIGRlZmF1bHRaSW5kZXg6IG51bWJlcixcbiAgbGF5ZXI6IE1haWFUYXNrUGFuZWxaSW5kZXhMYXllciA9ICduZXN0ZWRNb2RhbCdcbik6IG51bWJlciA9PiB7XG4gIGNvbnN0IHsgc2VjdGlvbiB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIHJldHVybiBzZWN0aW9uID09PSAndGFzaycgPyBMQVlFUl9aX0lOREVYW2xheWVyXSA6IGRlZmF1bHRaSW5kZXhcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsZ0JBQWdCLFFBQVEsMkJBQTJCO0FBQzVELFNBQ0VDLG1DQUFtQyxFQUNuQ0Msb0NBQW9DLEVBQ3BDQywrQkFBK0IsRUFDL0JDLDZCQUE2QixRQUN4QixrQ0FBa0M7QUFJekMsSUFBTUMsYUFBdUQsR0FBRztFQUM5REMsT0FBTyxFQUFFSCwrQkFBK0I7RUFDeENJLFVBQVUsRUFBRU4sbUNBQW1DO0VBQy9DTyxXQUFXLEVBQUVOLG9DQUFvQztFQUNqRE8sS0FBSyxFQUFFTDtBQUNULENBQUM7O0FBRUQ7QUFDQSxPQUFPLElBQU1NLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQ2pDQyxhQUFxQixFQUVWO0VBQUEsSUFEWEMsS0FBK0IsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsYUFBYTtFQUUvQyxJQUFBRyxpQkFBQSxHQUFvQmhCLGdCQUFnQixDQUFDLENBQUM7SUFBOUJpQixPQUFPLEdBQUFELGlCQUFBLENBQVBDLE9BQU87RUFDZixPQUFPQSxPQUFPLEtBQUssTUFBTSxHQUFHWixhQUFhLENBQUNPLEtBQUssQ0FBQyxHQUFHRCxhQUFhO0FBQ2xFLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1,7 +1,8 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
- import { ContextMentionPopover, MAIA_TASK_PANEL_MENTION_POPOVER_Z_INDEX, SCMPAnchor } from '../components/atoms/ContextMentionPopover';
4
+ import { ContextMentionPopover, SCMPAnchor } from '../components/atoms/ContextMentionPopover';
5
+ import { useMaiaTaskPanelZIndex } from './useMaiaTaskPanelZIndex';
5
6
  import { useGlobalContext } from '../context/global-context';
6
7
  import { useT } from './useT';
7
8
  // eslint-disable-next-line import/no-cycle
@@ -80,12 +81,10 @@ export var useMentionPopover = function useMentionPopover(_ref6) {
80
81
  var _useT = useT(),
81
82
  t = _useT.t;
82
83
  var event = useEvent();
83
- var _useGlobalContext = useGlobalContext(),
84
- section = _useGlobalContext.section;
85
84
  var _useMentionAllowedTyp = useMentionAllowedTypes(enabledTypes),
86
85
  allowedTypes = _useMentionAllowedTyp.allowedTypes,
87
86
  defaultType = _useMentionAllowedTyp.defaultType;
88
- var mentionPopoverZIndex = section === 'task' ? MAIA_TASK_PANEL_MENTION_POPOVER_Z_INDEX : undefined;
87
+ var mentionPopoverZIndex = useMaiaTaskPanelZIndex(1200, 'overlay');
89
88
  var _useState = useState(defaultType),
90
89
  _useState2 = _slicedToArray(_useState, 2),
91
90
  activeType = _useState2[0],
@@ -352,4 +351,4 @@ export var useMentionPopover = function useMentionPopover(_ref6) {
352
351
  close: close
353
352
  };
354
353
  };
355
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNvbnRleHRNZW50aW9uUG9wb3ZlciIsIk1BSUFfVEFTS19QQU5FTF9NRU5USU9OX1BPUE9WRVJfWl9JTkRFWCIsIlNDTVBBbmNob3IiLCJ1c2VHbG9iYWxDb250ZXh0IiwidXNlVCIsInVzZUVudGl0eVNlYXJjaCIsInVzZU1lbnRpb25BbGxvd2VkVHlwZXMiLCJ1c2VDYXJldFBvc2l0aW9uIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJqc3giLCJfanN4IiwiVFlQRV9UT19UUklHR0VSX1NFUVVFTkNFIiwidXNlciIsInRhc2siLCJwcm9qZWN0IiwiZ2V0VHlwZUZyb21UcmlnZ2VyU2VxdWVuY2UiLCJhdFJ1bkxlbmd0aCIsImFsbG93ZWRUeXBlcyIsImRlZmF1bHRUeXBlIiwiX09iamVjdCRlbnRyaWVzJGZpbmQkIiwiX09iamVjdCRlbnRyaWVzJGZpbmQiLCJfYWxsb3dlZFR5cGVzJHRhYklkeCIsIm5vcm1hbGl6ZWQiLCJNYXRoIiwibWF4IiwiZmxvb3IiLCJtYXBwZWRUeXBlIiwiT2JqZWN0IiwiZW50cmllcyIsImZpbmQiLCJfcmVmIiwiX3JlZjIiLCJfc2xpY2VkVG9BcnJheSIsImxlbiIsImluY2x1ZGVzIiwidGFiSWR4IiwibWluIiwibGVuZ3RoIiwiZ2V0VHJpZ2dlclNlcXVlbmNlRnJvbVR5cGUiLCJ0eXBlIiwibWFwcGVkIiwiaWR4IiwiaW5kZXhPZiIsInVzZURlcml2ZWRTY29wZSIsIl9yZWYzIiwiX2N0eCRjbGllbnQkaWQiLCJfY3R4JGNsaWVudCIsIl9jdHgkZW50aXR5VmFsdWVzIiwiX3JlZjQiLCJfcmVmNSIsIl9jdHgkcHJvamVjdCRpZCIsIl9jdHgkcHJvamVjdCIsIl9jdHgkZW50aXR5VmFsdWVzMiIsIl9jdHgkY2hpcHNQcm9qZWN0IiwiX2N0eCRhZ2VudCRlbnRpdHkiLCJfY3R4JGFnZW50IiwiX2N0eCRhZ2VudCRjb25uZWN0b3JzIiwiX2N0eCRhZ2VudDIiLCJjdHgiLCJjbGllbnRJZCIsImNsaWVudCIsImlkIiwiZW50aXR5VmFsdWVzIiwicHJvamVjdElkIiwiY2hpcHNQcm9qZWN0IiwiYWdlbnRFbnRpdHkiLCJhZ2VudCIsImVudGl0eSIsIm1jcFNsdWdzS2V5IiwiY29ubmVjdG9ycyIsImMiLCJncm91cCIsInNsdWdzIiwiam9pbiIsIm1jcFNsdWdzIiwiX2N0eCRhZ2VudCRjb25uZWN0b3JzMiIsIl9jdHgkYWdlbnQzIiwicmF3IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiU2V0IiwiZmlsdGVyIiwicyIsInRyaW0iLCJzb3J0IiwidXNlTWVudGlvblBvcG92ZXIiLCJfcmVmNiIsImVkaXRvclJlZiIsInBvcG92ZXJBbmNob3JSZWYiLCJlbmFibGVkVHlwZXMiLCJvbk1lbnRpb25BZGRlZCIsIl91c2VUIiwidCIsImV2ZW50IiwiX3VzZUdsb2JhbENvbnRleHQiLCJzZWN0aW9uIiwiX3VzZU1lbnRpb25BbGxvd2VkVHlwIiwibWVudGlvblBvcG92ZXJaSW5kZXgiLCJ1bmRlZmluZWQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiYWN0aXZlVHlwZSIsInNldEFjdGl2ZVR5cGUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInBvcG92ZXJPcGVuIiwic2V0UG9wb3Zlck9wZW4iLCJfdXNlU3RhdGU1IiwiYm90dG9tIiwibGVmdCIsIndpZHRoIiwiX3VzZVN0YXRlNiIsInBvcG92ZXJQb3MiLCJzZXRQb3BvdmVyUG9zIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJhY3RpdmVJbmRleCIsInNldEFjdGl2ZUluZGV4IiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJpc0tleWJvYXJkTmF2QWN0aXZlIiwic2V0SXNLZXlib2FyZE5hdkFjdGl2ZSIsImhhc0VtaXR0ZWRPcGVuIiwicG9wb3ZlclJlZiIsImdldENhcmV0UmVjdCIsInNjb3BlIiwiX3VzZUVudGl0eVNlYXJjaCIsIml0ZW1zIiwibG9hZGluZyIsImVycm9yIiwiaGlkZVJlY2VudHNMYWJlbCIsImhhc01vcmUiLCJpc0xvYWRpbmdNb3JlIiwibG9hZE1vcmUiLCJzZWFyY2hWYWx1ZSIsInVwZGF0ZVNlYXJjaFZhbHVlIiwicG9zaXRpb25Qb3BvdmVyIiwiX3BvcG92ZXJBbmNob3JSZWYkY3VyIiwiX2VkaXRvclJlZiRjdXJyZW50JGdlIiwiX2VkaXRvclJlZiRjdXJyZW50IiwiX2VkaXRvclJlZiRjdXJyZW50JGdlMiIsImZyb21BbmNob3IiLCJjdXJyZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiZnJvbUVkaXRvciIsImdldEVkaXRvckNsaWVudFJlY3QiLCJjYWxsIiwicmVjdCIsImNhcmV0Iiwidmlld3BvcnRIIiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJ2aWV3cG9ydFciLCJpbm5lcldpZHRoIiwiZmFsbGJhY2tXIiwidG9wIiwicmVzZXRNZW50aW9uT3BlblRyYWNraW5nIiwiY2xvc2UiLCJoYW5kbGVUcmlnZ2VyIiwidHJpZ2dlciIsImFjdGl2ZSIsIm92ZXJmbG93QXRDb3VudCIsImVmZmVjdGl2ZUF0UnVuTGVuZ3RoIiwiZWZmZWN0aXZlUXVlcnkiLCJjb25jYXQiLCJyZXBlYXQiLCJxdWVyeSIsInR5cGVGcm9tQXQiLCJhaUNoYXRNZW50aW9uT3BlbiIsImluc2VydFNlbGVjdGVkSXRlbSIsIml0ZW0iLCJfaXRlbSRyYXckY2xpZW50SWQiLCJfaXRlbSRyYXckY2xpZW50TmFtZSIsIl9pdGVtJHJhdyRwcm9qZWN0TmFtZSIsIl9pdGVtJHJhdyRmZWVJZCIsIl9pdGVtJHJhdyRmYXRoZXJJZCIsIl9pdGVtJHJhdyRmYXRoZXJUaXRsZSIsIl9pdGVtJHJhdyR0b3RhbFByb3llYyIsIl9pdGVtJHJhdyRuYW1lIiwiX2l0ZW0kcmF3JHBpY3R1cmUiLCJfaXRlbSRyYXckcG9zaXRpb25OYW0iLCJfaXRlbSRyYXckZW1haWwiLCJfZWRpdG9yUmVmJGN1cnJlbnQyIiwibWVudGlvbiIsImxhYmVsIiwicHJpbWFyeSIsIm1ldGFkYXRhIiwiY2xpZW50TmFtZSIsInByb2plY3ROYW1lIiwiZmVlSWQiLCJmYXRoZXJJZCIsImZhdGhlclRpdGxlIiwidG90YWxQcm95ZWN0b3MiLCJuYW1lIiwicGljdHVyZSIsInBvc2l0aW9uTmFtZSIsImVtYWlsIiwiaW5zZXJ0TWVudGlvbiIsImFpQ2hhdE1lbnRpb25TZWxlY3QiLCJTdHJpbmciLCJoYW5kbGVUeXBlQ2hhbmdlIiwiX2VkaXRvclJlZiRjdXJyZW50MyIsIm5leHRSdW5MZW5ndGgiLCJzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoIiwiYWlDaGF0TWVudGlvblR5cGVTd2l0Y2giLCJoYW5kbGVLZXlEb3duIiwiZSIsImtleSIsInByZXZlbnREZWZhdWx0IiwibWV0YUtleSIsImFsdEtleSIsImRlbHRhIiwibmV4dElkeCIsInByZXYiLCJoYW5kbGVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVQb2ludGVyRG93bk91dHNpZGUiLCJtb3VzZUV2ZW50IiwiX3BvcG92ZXJSZWYkY3VycmVudCIsInRhcmdldCIsImNvbnRhaW5zIiwiZG9jdW1lbnQiLCJwcmV2SXNMb2FkaW5nTW9yZVJlZiIsInBvcG92ZXJOb2RlIiwiJGJvdHRvbSIsIiRsZWZ0IiwiJHdpZHRoIiwiJHpJbmRleCIsImNoaWxkcmVuIiwicmVmIiwib25UeXBlQ2hhbmdlIiwib25SZWFjaExpc3RFbmQiLCJrZXlib2FyZEhpbnQiLCJkZWZhdWx0VmFsdWUiLCJvbkl0ZW1TZWxlY3RlZCIsIm9uQWN0aXZlSW5kZXhDaGFuZ2UiLCJvbk1vdXNlTW92ZUluTGlzdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VNZW50aW9uUG9wb3Zlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2V5Ym9hcmRFdmVudCwgUmVhY3ROb2RlLCBSZWZPYmplY3QsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9hdG9tcy9Db250ZXh0TWVudGlvbkVkaXRvcidcbmltcG9ydCB7XG4gIENvbnRleHRNZW50aW9uUG9wb3ZlcixcbiAgTUFJQV9UQVNLX1BBTkVMX01FTlRJT05fUE9QT1ZFUl9aX0lOREVYLFxuICBTQ01QQW5jaG9yLFxufSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uUG9wb3ZlcidcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4vdXNlVCdcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tY3ljbGVcbmltcG9ydCB7IEVudGl0eVNlYXJjaFNjb3BlLCB1c2VFbnRpdHlTZWFyY2ggfSBmcm9tICcuL3VzZUVudGl0eVNlYXJjaCdcbmltcG9ydCB7IHVzZU1lbnRpb25BbGxvd2VkVHlwZXMgfSBmcm9tICcuL3VzZU1lbnRpb25BbGxvd2VkVHlwZXMnXG5pbXBvcnQgeyB1c2VDYXJldFBvc2l0aW9uIH0gZnJvbSAnLi91c2VDYXJldFBvc2l0aW9uJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4vdXNlRXZlbnQnXG5pbXBvcnQgeyBDb250ZXh0RW50aXR5VHlwZSwgQ29udGV4dE1lbnRpb24sIENvbnRleHRNZW50aW9uSXRlbSB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuXG5leHBvcnQgdHlwZSBVc2VNZW50aW9uUG9wb3Zlck9wdGlvbnMgPSB7XG4gIGVkaXRvclJlZjogUmVmT2JqZWN0PENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlPlxuICAvKipcbiAgICogTm9kbyBjdXlvIGFuY2hvIHkgYm9yZGUgc3VwZXJpb3IgZGVmaW5lbiBlbCBwb3BvdmVyIChwLiBlai4gd3JhcHBlciBkZWwgaW5wdXQgZW4gTUFJQSkuXG4gICAqIFNpIG5vIHNlIHBhc2EsIHNlIHVzYSBlbCByZWN0IGRlbCBjb250ZW50ZWRpdGFibGUgKGBnZXRFZGl0b3JDbGllbnRSZWN0YCkuXG4gICAqL1xuICBwb3BvdmVyQW5jaG9yUmVmPzogUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD5cbiAgLyoqIE92ZXJyaWRlIGRlbCBzZXQgZGUgdGFicyBwZXJtaXRpZGFzOyBzaSBubyBzZSBwYXNhIHNlIGRlcml2YSBkZWwgYWdlbnQuICovXG4gIGVuYWJsZWRUeXBlcz86IENvbnRleHRFbnRpdHlUeXBlW11cbiAgLyoqIENhbGxiYWNrIGN1YW5kbyBlbCB1c3VhcmlvIGluc2VydGEgdW5hIG1lbnRpb24gdsOtYSBjbGljay90ZWNsYWRvLiAqL1xuICBvbk1lbnRpb25BZGRlZD86IChtZW50aW9uOiBDb250ZXh0TWVudGlvbikgPT4gdm9pZFxufVxuXG5leHBvcnQgdHlwZSBVc2VNZW50aW9uUG9wb3ZlclJldHVybiA9IHtcbiAgcG9wb3Zlck9wZW46IGJvb2xlYW5cbiAgLyoqXG4gICAqIFJlaW5pY2lhIGVsIHRyYWNraW5nIGRlIGBBSV9DSEFUX01FTlRJT05fT1BFTmAgKHByaW1lcmEgYXBlcnR1cmEgcG9yIG1lbnNhamUpLlxuICAgKiBMbGFtYXIgdHJhcyBlbnZpYXIgZWwgbWVuc2FqZSBvIGFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzbi5cbiAgICovXG4gIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZzogKCkgPT4gdm9pZFxuICAvKiogUHJvY2VzYSBlbCB0cmlnZ2VyIHByb3ZlbmllbnRlIGRlbCBgQ29udGV4dE1lbnRpb25FZGl0b3Iub25JbnB1dGAuICovXG4gIGhhbmRsZVRyaWdnZXI6ICh0cmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZzsgYXRSdW5MZW5ndGg6IG51bWJlciB9KSA9PiB2b2lkXG4gIC8qKlxuICAgKiBNYW5lam8gZGUgdGVjbGFzIHJlbGF0aXZhcyBhbCBwb3BvdmVyIChuYXZlZ2FjacOzbiwgc2VsZWNjacOzbiwgY2FtYmlvIGRlXG4gICAqIHRhYiB5IGVzY2FwZSkuIERldnVlbHZlIGB0cnVlYCBzaSBjb25zdW1pw7MgbGEga2V5LCBwYXJhIHF1ZSBlbCBjb25zdW1lclxuICAgKiBwdWVkYSBkZWNpZGlyIHNpIHNlZ3VpciBwcm9jZXNhbmRvIG90cmFzIHRlY2xhcyAocC5lai4gRW50ZXIgcGFyYSBlbnZpYXIpLlxuICAgKi9cbiAgaGFuZGxlS2V5RG93bjogKGU6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiBib29sZWFuXG4gIC8qKiBOb2RvIGRlbCBwb3BvdmVyOyBlbCBjb25zdW1lciBkZWJlIHBvcnRhcmxvIGNvbiBgY3JlYXRlUG9ydGFsYC4gKi9cbiAgcG9wb3Zlck5vZGU6IFJlYWN0Tm9kZSB8IG51bGxcbiAgLyoqIENpZXJyYSBlbCBwb3BvdmVyIHkgbGltcGlhIGVsIHF1ZXJ5LiAqL1xuICBjbG9zZTogKCkgPT4gdm9pZFxufVxuXG5jb25zdCBUWVBFX1RPX1RSSUdHRVJfU0VRVUVOQ0U6IFBhcnRpYWw8UmVjb3JkPENvbnRleHRFbnRpdHlUeXBlLCBudW1iZXI+PiA9IHtcbiAgdXNlcjogMSxcbiAgdGFzazogMixcbiAgcHJvamVjdDogMyxcbn1cblxuY29uc3QgZ2V0VHlwZUZyb21UcmlnZ2VyU2VxdWVuY2UgPSAoXG4gIGF0UnVuTGVuZ3RoOiBudW1iZXIsXG4gIGFsbG93ZWRUeXBlczogQ29udGV4dEVudGl0eVR5cGVbXSxcbiAgZGVmYXVsdFR5cGU6IENvbnRleHRFbnRpdHlUeXBlXG4pOiBDb250ZXh0RW50aXR5VHlwZSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBNYXRoLm1heCgxLCBNYXRoLmZsb29yKGF0UnVuTGVuZ3RoKSlcbiAgY29uc3QgbWFwcGVkVHlwZSA9IChPYmplY3QuZW50cmllcyhUWVBFX1RPX1RSSUdHRVJfU0VRVUVOQ0UpLmZpbmQoKFssIGxlbl0pID0+IGxlbiA9PT0gbm9ybWFsaXplZCk/LlswXSA/P1xuICAgIG51bGwpIGFzIENvbnRleHRFbnRpdHlUeXBlIHwgbnVsbFxuICBpZiAobWFwcGVkVHlwZSAmJiBhbGxvd2VkVHlwZXMuaW5jbHVkZXMobWFwcGVkVHlwZSkpIHJldHVybiBtYXBwZWRUeXBlXG4gIGNvbnN0IHRhYklkeCA9IE1hdGgubWluKE1hdGgubWF4KDAsIG5vcm1hbGl6ZWQgLSAxKSwgYWxsb3dlZFR5cGVzLmxlbmd0aCAtIDEpXG4gIHJldHVybiBhbGxvd2VkVHlwZXNbdGFiSWR4XSA/PyBkZWZhdWx0VHlwZVxufVxuXG5jb25zdCBnZXRUcmlnZ2VyU2VxdWVuY2VGcm9tVHlwZSA9ICh0eXBlOiBDb250ZXh0RW50aXR5VHlwZSwgYWxsb3dlZFR5cGVzOiBDb250ZXh0RW50aXR5VHlwZVtdKTogbnVtYmVyID0+IHtcbiAgY29uc3QgbWFwcGVkID0gVFlQRV9UT19UUklHR0VSX1NFUVVFTkNFW3R5cGVdXG4gIGlmIChtYXBwZWQpIHJldHVybiBtYXBwZWRcbiAgY29uc3QgaWR4ID0gYWxsb3dlZFR5cGVzLmluZGV4T2YodHlwZSlcbiAgcmV0dXJuIGlkeCA+PSAwID8gaWR4ICsgMSA6IDFcbn1cblxuLyoqXG4gKiBEZXJpdmEgY2xpZW50SWQsIHByb2plY3RJZCwgYWdlbnRFbnRpdHkgeSBNQ1AgZGVzZGUgZWwgY29udGV4dG8gZ2xvYmFsIChpbmNsLlxuICogYGVudGl0eVZhbHVlc2AgeSBgY2hpcHNQcm9qZWN0YCkgcGFyYSBmaWx0cmFyIHJlY2VudHMgeSBiw7pzcXVlZGEgR3JhcGhRTC5cbiAqL1xuY29uc3QgdXNlRGVyaXZlZFNjb3BlID0gKCk6IEVudGl0eVNlYXJjaFNjb3BlID0+IHtcbiAgY29uc3QgY3R4ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IGNsaWVudElkID0gY3R4LmNsaWVudD8uaWQgPz8gY3R4LmVudGl0eVZhbHVlcz8uY2xpZW50SWQgPz8gbnVsbFxuICBjb25zdCBwcm9qZWN0SWQgPSBjdHgucHJvamVjdD8uaWQgPz8gY3R4LmVudGl0eVZhbHVlcz8ucHJvamVjdElkID8/IGN0eC5jaGlwc1Byb2plY3Q/LnByb2plY3RJZCA/PyBudWxsXG4gIGNvbnN0IGFnZW50RW50aXR5ID0gY3R4LmFnZW50Py5lbnRpdHkgPz8gbnVsbFxuICBjb25zdCBtY3BTbHVnc0tleSA9IChjdHguYWdlbnQ/LmNvbm5lY3RvcnM/LmZpbmQoYyA9PiBjLmdyb3VwID09PSAnTUNQJyk/LnNsdWdzID8/IFtdKS5qb2luKCd8JylcblxuICBjb25zdCBtY3BTbHVncyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHJhdyA9IGN0eC5hZ2VudD8uY29ubmVjdG9ycz8uZmluZChjID0+IGMuZ3JvdXAgPT09ICdNQ1AnKT8uc2x1Z3MgPz8gW11cbiAgICByZXR1cm4gWy4uLm5ldyBTZXQocmF3LmZpbHRlcigocyk6IHMgaXMgc3RyaW5nID0+IHR5cGVvZiBzID09PSAnc3RyaW5nJyAmJiBzLnRyaW0oKS5sZW5ndGggPiAwKSldLnNvcnQoKVxuICB9LCBbbWNwU2x1Z3NLZXldKVxuXG4gIHJldHVybiB1c2VNZW1vPEVudGl0eVNlYXJjaFNjb3BlPihcbiAgICAoKSA9PiAoeyBjbGllbnRJZCwgcHJvamVjdElkLCBtY3BTbHVncywgYWdlbnRFbnRpdHkgfSksXG4gICAgW2NsaWVudElkLCBwcm9qZWN0SWQsIG1jcFNsdWdzLCBhZ2VudEVudGl0eV1cbiAgKVxufVxuXG4vKipcbiAqIEVuY2Fwc3VsYSBsYSBsw7NnaWNhIGRlbCBwb3BvdmVyIGRlIEAtbWVudGlvbnMgKGVzdGFkbywgZmV0Y2ggcG9yIHRhYiwgYW5hbHl0aWNzLFxuICogcG9zaWNpb25hbWllbnRvKS4gRWwgY29uc3VtZXIgbWFudGllbmUgZWwgZWRpdG9yIHkgZWwgZW52w61vIGRlbCBtZW5zYWplLlxuICogTG9zIGZpbHRyb3MgZGUgYsO6c3F1ZWRhIHVzYW4gYHVzZURlcml2ZWRTY29wZWA6IGVzcGVjaWFsaXN0YSBwcm95ZWN0byBhY290YSB0YXJlYXNcbiAqIGFsIGBwcm9qZWN0SWRgIGRlbCBjb250ZXh0bzsgZXNwZWNpYWxpc3RhIGNsaWVudGUsIHByb3llY3RvcyBhbCBgY2xpZW50SWRgIChlbiBgZXh0cmFgIGRlIHNlYXJjaCkuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VNZW50aW9uUG9wb3ZlciA9ICh7XG4gIGVkaXRvclJlZixcbiAgcG9wb3ZlckFuY2hvclJlZixcbiAgZW5hYmxlZFR5cGVzLFxuICBvbk1lbnRpb25BZGRlZCxcbn06IFVzZU1lbnRpb25Qb3BvdmVyT3B0aW9ucyk6IFVzZU1lbnRpb25Qb3BvdmVyUmV0dXJuID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgZXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgc2VjdGlvbiB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHsgYWxsb3dlZFR5cGVzLCBkZWZhdWx0VHlwZSB9ID0gdXNlTWVudGlvbkFsbG93ZWRUeXBlcyhlbmFibGVkVHlwZXMpXG4gIGNvbnN0IG1lbnRpb25Qb3BvdmVyWkluZGV4ID0gc2VjdGlvbiA9PT0gJ3Rhc2snID8gTUFJQV9UQVNLX1BBTkVMX01FTlRJT05fUE9QT1ZFUl9aX0lOREVYIDogdW5kZWZpbmVkXG4gIGNvbnN0IFthY3RpdmVUeXBlLCBzZXRBY3RpdmVUeXBlXSA9IHVzZVN0YXRlPENvbnRleHRFbnRpdHlUeXBlPihkZWZhdWx0VHlwZSlcbiAgY29uc3QgW3BvcG92ZXJPcGVuLCBzZXRQb3BvdmVyT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3BvcG92ZXJQb3MsIHNldFBvcG92ZXJQb3NdID0gdXNlU3RhdGU8eyBib3R0b206IG51bWJlcjsgbGVmdDogbnVtYmVyOyB3aWR0aDogbnVtYmVyIH0+KHtcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICB3aWR0aDogMCxcbiAgfSlcbiAgY29uc3QgW2FjdGl2ZUluZGV4LCBzZXRBY3RpdmVJbmRleF0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbaXNLZXlib2FyZE5hdkFjdGl2ZSwgc2V0SXNLZXlib2FyZE5hdkFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgaGFzRW1pdHRlZE9wZW4gPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHBvcG92ZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBnZXRDYXJldFJlY3QgPSB1c2VDYXJldFBvc2l0aW9uKClcblxuICBjb25zdCBzY29wZSA9IHVzZURlcml2ZWRTY29wZSgpXG4gIGNvbnN0IHsgaXRlbXMsIGxvYWRpbmcsIGVycm9yLCBoaWRlUmVjZW50c0xhYmVsLCBoYXNNb3JlLCBpc0xvYWRpbmdNb3JlLCBsb2FkTW9yZSwgc2VhcmNoVmFsdWUsIHVwZGF0ZVNlYXJjaFZhbHVlIH0gPVxuICAgIHVzZUVudGl0eVNlYXJjaChhY3RpdmVUeXBlLCBzY29wZSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghYWxsb3dlZFR5cGVzLmluY2x1ZGVzKGFjdGl2ZVR5cGUpKSB7XG4gICAgICBzZXRBY3RpdmVUeXBlKGRlZmF1bHRUeXBlKVxuICAgIH1cbiAgfSwgW2FsbG93ZWRUeXBlcywgYWN0aXZlVHlwZSwgZGVmYXVsdFR5cGVdKVxuXG4gIGNvbnN0IHBvc2l0aW9uUG9wb3ZlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBmcm9tQW5jaG9yID0gcG9wb3ZlckFuY2hvclJlZj8uY3VycmVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBmcm9tRWRpdG9yID0gZWRpdG9yUmVmLmN1cnJlbnQ/LmdldEVkaXRvckNsaWVudFJlY3Q/LigpID8/IG51bGxcbiAgICBjb25zdCByZWN0ID0gZnJvbUFuY2hvciA/PyBmcm9tRWRpdG9yXG4gICAgaWYgKCFyZWN0IHx8IHJlY3Qud2lkdGggPD0gMCkge1xuICAgICAgY29uc3QgY2FyZXQgPSBnZXRDYXJldFJlY3QoKVxuICAgICAgaWYgKCFjYXJldCkgcmV0dXJuXG4gICAgICBjb25zdCB2aWV3cG9ydEggPSB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICAgIGNvbnN0IHZpZXdwb3J0VyA9IHdpbmRvdy5pbm5lcldpZHRoXG4gICAgICBjb25zdCBmYWxsYmFja1cgPSAzMjBcbiAgICAgIGNvbnN0IGxlZnQgPSBNYXRoLm1heCg4LCBNYXRoLm1pbih2aWV3cG9ydFcgLSBmYWxsYmFja1cgLSA4LCBjYXJldC5sZWZ0KSlcbiAgICAgIHNldFBvcG92ZXJQb3Moe1xuICAgICAgICB3aWR0aDogZmFsbGJhY2tXLFxuICAgICAgICBsZWZ0LFxuICAgICAgICBib3R0b206IHZpZXdwb3J0SCAtIGNhcmV0LnRvcCArIDQsXG4gICAgICB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3Qgdmlld3BvcnRXID0gd2luZG93LmlubmVyV2lkdGhcbiAgICBjb25zdCB2aWV3cG9ydEggPSB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICBjb25zdCB7IHdpZHRoIH0gPSByZWN0XG4gICAgY29uc3QgbGVmdCA9IE1hdGgubWF4KDgsIE1hdGgubWluKHZpZXdwb3J0VyAtIHdpZHRoIC0gOCwgcmVjdC5sZWZ0KSlcbiAgICAvKiogUG9wb3ZlciBzaWVtcHJlIGFycmliYSBkZWwgaW5wdXQ6IGJvcmRlIGluZmVyaW9yIGRlbCBwb3BvdmVyIH40cHggc29icmUgZWwgYm9yZGUgc3VwZXJpb3IgZGVsIGFuY2xhLiAqL1xuICAgIHNldFBvcG92ZXJQb3Moe1xuICAgICAgd2lkdGgsXG4gICAgICBsZWZ0LFxuICAgICAgYm90dG9tOiB2aWV3cG9ydEggLSByZWN0LnRvcCArIDQsXG4gICAgfSlcbiAgfSwgW3BvcG92ZXJBbmNob3JSZWYsIGVkaXRvclJlZiwgZ2V0Q2FyZXRSZWN0XSlcblxuICBjb25zdCByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaGFzRW1pdHRlZE9wZW4uY3VycmVudCA9IGZhbHNlXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGNsb3NlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFBvcG92ZXJPcGVuKGZhbHNlKVxuICAgIHVwZGF0ZVNlYXJjaFZhbHVlKCcnKVxuICB9LCBbdXBkYXRlU2VhcmNoVmFsdWVdKVxuXG4gIGNvbnN0IGhhbmRsZVRyaWdnZXIgPSB1c2VDYWxsYmFjayhcbiAgICAodHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmc7IGF0UnVuTGVuZ3RoOiBudW1iZXIgfSkgPT4ge1xuICAgICAgaWYgKGFsbG93ZWRUeXBlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaWYgKHBvcG92ZXJPcGVuKSBjbG9zZSgpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAodHJpZ2dlci5hY3RpdmUpIHtcbiAgICAgICAgLy8gU2kgaGF5IG3DoXMgYEBgIHF1ZSB0YWJzIChwLiBlai4gYWdlbnRlIHByb3llY3RvOiBgQGAgdXN1YXJpbywgYEBAYCB0YXJlYSDihpIgYEBAQGApLFxuICAgICAgICAvLyBzZSB1c2EgbGEgw7psdGltYSB0YWIgeSBsb3MgYEBgIGRlIG3DoXMgcGFzYW4gYWwgdGV4dG8gZGUgYsO6c3F1ZWRhIChgQEBAYCDih5IgdGFiIHRhcmVhICsgcXVlcnkgYEBgKS5cbiAgICAgICAgLy8gQ29uIOKJpTMgdGFicyAoY2xpZW50ZSksIGBAQEBgIGNvaW5jaWRlIGNvbiBsYSAzLmVyIHRhYiAoYHByb2plY3RgKS5cbiAgICAgICAgY29uc3Qgb3ZlcmZsb3dBdENvdW50ID0gTWF0aC5tYXgoMCwgdHJpZ2dlci5hdFJ1bkxlbmd0aCAtIGFsbG93ZWRUeXBlcy5sZW5ndGgpXG4gICAgICAgIGNvbnN0IGVmZmVjdGl2ZUF0UnVuTGVuZ3RoID0gTWF0aC5taW4odHJpZ2dlci5hdFJ1bkxlbmd0aCwgYWxsb3dlZFR5cGVzLmxlbmd0aClcbiAgICAgICAgY29uc3QgZWZmZWN0aXZlUXVlcnkgPSBgJHsnQCcucmVwZWF0KG92ZXJmbG93QXRDb3VudCl9JHt0cmlnZ2VyLnF1ZXJ5fWBcbiAgICAgICAgY29uc3QgdHlwZUZyb21BdCA9IGdldFR5cGVGcm9tVHJpZ2dlclNlcXVlbmNlKGVmZmVjdGl2ZUF0UnVuTGVuZ3RoLCBhbGxvd2VkVHlwZXMsIGRlZmF1bHRUeXBlKVxuXG4gICAgICAgIGlmICghcG9wb3Zlck9wZW4pIHtcbiAgICAgICAgICBzZXRQb3BvdmVyT3Blbih0cnVlKVxuICAgICAgICAgIHNldEFjdGl2ZVR5cGUodHlwZUZyb21BdClcbiAgICAgICAgICBwb3NpdGlvblBvcG92ZXIoKVxuICAgICAgICAgIGlmICghaGFzRW1pdHRlZE9wZW4uY3VycmVudCkge1xuICAgICAgICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdE1lbnRpb25PcGVuLCB7IHR5cGU6IHR5cGVGcm9tQXQgfSlcbiAgICAgICAgICAgIGhhc0VtaXR0ZWRPcGVuLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldEFjdGl2ZVR5cGUodHlwZUZyb21BdClcbiAgICAgICAgICBwb3NpdGlvblBvcG92ZXIoKVxuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZVNlYXJjaFZhbHVlKGVmZmVjdGl2ZVF1ZXJ5KVxuICAgICAgfSBlbHNlIGlmIChwb3BvdmVyT3Blbikge1xuICAgICAgICBjbG9zZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWxsb3dlZFR5cGVzLCBkZWZhdWx0VHlwZSwgcG9wb3Zlck9wZW4sIHBvc2l0aW9uUG9wb3ZlciwgdXBkYXRlU2VhcmNoVmFsdWUsIGV2ZW50LCBjbG9zZV1cbiAgKVxuXG4gIGNvbnN0IGluc2VydFNlbGVjdGVkSXRlbSA9IHVzZUNhbGxiYWNrKFxuICAgIChpdGVtOiBDb250ZXh0TWVudGlvbkl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IG1lbnRpb246IENvbnRleHRNZW50aW9uID0ge1xuICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgdHlwZTogaXRlbS50eXBlLFxuICAgICAgICBsYWJlbDogaXRlbS5wcmltYXJ5LFxuICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgIGNsaWVudElkOiBpdGVtLnJhdy5jbGllbnRJZCA/PyBudWxsLFxuICAgICAgICAgIGNsaWVudE5hbWU6IGl0ZW0ucmF3LmNsaWVudE5hbWUgPz8gbnVsbCxcbiAgICAgICAgICBwcm9qZWN0TmFtZTogaXRlbS5yYXcucHJvamVjdE5hbWUgPz8gbnVsbCxcbiAgICAgICAgICBmZWVJZDogaXRlbS5yYXcuZmVlSWQgPz8gbnVsbCxcbiAgICAgICAgICBmYXRoZXJJZDogaXRlbS5yYXcuZmF0aGVySWQgPz8gbnVsbCxcbiAgICAgICAgICBmYXRoZXJUaXRsZTogaXRlbS5yYXcuZmF0aGVyVGl0bGUgPz8gbnVsbCxcbiAgICAgICAgICB0b3RhbFByb3llY3RvczogaXRlbS5yYXcudG90YWxQcm95ZWN0b3MgPz8gbnVsbCxcbiAgICAgICAgICBuYW1lOiBpdGVtLnJhdy5uYW1lID8/IG51bGwsXG4gICAgICAgICAgcGljdHVyZTogaXRlbS5yYXcucGljdHVyZSA/PyBudWxsLFxuICAgICAgICAgIHBvc2l0aW9uTmFtZTogaXRlbS5yYXcucG9zaXRpb25OYW1lID8/IG51bGwsXG4gICAgICAgICAgZW1haWw6IGl0ZW0ucmF3LmVtYWlsID8/IG51bGwsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0TWVudGlvbihtZW50aW9uKVxuICAgICAgb25NZW50aW9uQWRkZWQ/LihtZW50aW9uKVxuICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdE1lbnRpb25TZWxlY3QsIHsgdHlwZTogbWVudGlvbi50eXBlLCBpZDogU3RyaW5nKG1lbnRpb24uaWQpIH0pXG4gICAgICBjbG9zZSgpXG4gICAgfSxcbiAgICBbZWRpdG9yUmVmLCBvbk1lbnRpb25BZGRlZCwgZXZlbnQsIGNsb3NlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlVHlwZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgICh0eXBlOiBDb250ZXh0RW50aXR5VHlwZSkgPT4ge1xuICAgICAgc2V0QWN0aXZlVHlwZSh0eXBlKVxuICAgICAgY29uc3QgbmV4dFJ1bkxlbmd0aCA9IGdldFRyaWdnZXJTZXF1ZW5jZUZyb21UeXBlKHR5cGUsIGFsbG93ZWRUeXBlcylcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5zeW5jVHJpZ2dlckF0UnVuTGVuZ3RoKG5leHRSdW5MZW5ndGgpXG4gICAgICBldmVudChFVkVOVFMuYWlDaGF0TWVudGlvblR5cGVTd2l0Y2gsIHsgdHlwZSB9KVxuICAgIH0sXG4gICAgW2FsbG93ZWRUeXBlcywgZWRpdG9yUmVmLCBldmVudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICAoZTogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pOiBib29sZWFuID0+IHtcbiAgICAgIGlmICghcG9wb3Zlck9wZW4gfHwgYWxsb3dlZFR5cGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlXG5cbiAgICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGNsb3NlKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKChlLmtleSA9PT0gJ0Fycm93UmlnaHQnIHx8IGUua2V5ID09PSAnQXJyb3dMZWZ0JykgJiYgKGUubWV0YUtleSB8fCBlLmFsdEtleSkpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGNvbnN0IGlkeCA9IGFsbG93ZWRUeXBlcy5pbmRleE9mKGFjdGl2ZVR5cGUpXG4gICAgICAgIGNvbnN0IGRlbHRhID0gZS5rZXkgPT09ICdBcnJvd1JpZ2h0JyA/IDEgOiAtMVxuICAgICAgICBjb25zdCBuZXh0SWR4ID0gKGlkeCArIGRlbHRhICsgYWxsb3dlZFR5cGVzLmxlbmd0aCkgJSBhbGxvd2VkVHlwZXMubGVuZ3RoXG4gICAgICAgIGhhbmRsZVR5cGVDaGFuZ2UoYWxsb3dlZFR5cGVzW25leHRJZHhdKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2VcblxuICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgc2V0SXNLZXlib2FyZE5hdkFjdGl2ZSh0cnVlKVxuICAgICAgICBzZXRBY3RpdmVJbmRleChwcmV2ID0+IChpdGVtcy5sZW5ndGggPiAwID8gTWF0aC5taW4ocHJldiArIDEsIGl0ZW1zLmxlbmd0aCAtIDEpIDogMCkpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgc2V0SXNLZXlib2FyZE5hdkFjdGl2ZSh0cnVlKVxuICAgICAgICBzZXRBY3RpdmVJbmRleChwcmV2ID0+IE1hdGgubWF4KHByZXYgLSAxLCAwKSlcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyB8fCBlLmtleSA9PT0gJ1RhYicpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGluc2VydFNlbGVjdGVkSXRlbShpdGVtc1thY3RpdmVJbmRleF0pXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LFxuICAgIFtwb3BvdmVyT3BlbiwgaXRlbXMsIGFsbG93ZWRUeXBlcywgYWN0aXZlVHlwZSwgYWN0aXZlSW5kZXgsIGluc2VydFNlbGVjdGVkSXRlbSwgY2xvc2UsIGhhbmRsZVR5cGVDaGFuZ2VdXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcG9wb3Zlck9wZW4pIHJldHVybiB1bmRlZmluZWRcbiAgICBjb25zdCBoYW5kbGVyID0gKCkgPT4gcG9zaXRpb25Qb3BvdmVyKClcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcbiAgICB9XG4gIH0sIFtwb3BvdmVyT3BlbiwgcG9zaXRpb25Qb3BvdmVyXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcG9wb3Zlck9wZW4pIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IGhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSA9IChtb3VzZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBtb3VzZUV2ZW50LnRhcmdldCBhcyBOb2RlIHwgbnVsbFxuICAgICAgaWYgKCF0YXJnZXQpIHJldHVyblxuICAgICAgaWYgKHBvcG92ZXJSZWYuY3VycmVudD8uY29udGFpbnModGFyZ2V0KSkgcmV0dXJuXG4gICAgICBjbG9zZSgpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUpXG4gIH0sIFtwb3BvdmVyT3BlbiwgY2xvc2VdKVxuXG4gIGNvbnN0IHByZXZJc0xvYWRpbmdNb3JlUmVmID0gdXNlUmVmKGZhbHNlKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBwcmV2SXNMb2FkaW5nTW9yZVJlZi5jdXJyZW50ID0gaXNMb2FkaW5nTW9yZVxuICAgIH1cbiAgfSwgW2lzTG9hZGluZ01vcmVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHByZXZJc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQpIHJldHVyblxuICAgIHNldEFjdGl2ZUluZGV4KDApXG4gIH0sIFtpdGVtcy5sZW5ndGgsIGFjdGl2ZVR5cGVdKVxuXG4gIGNvbnN0IHBvcG92ZXJOb2RlID0gdXNlTWVtbzxSZWFjdE5vZGUgfCBudWxsPigoKSA9PiB7XG4gICAgaWYgKCFwb3BvdmVyT3BlbikgcmV0dXJuIG51bGxcbiAgICByZXR1cm4gKFxuICAgICAgPFNDTVBBbmNob3JcbiAgICAgICAgJGJvdHRvbT17cG9wb3ZlclBvcy5ib3R0b219XG4gICAgICAgICRsZWZ0PXtwb3BvdmVyUG9zLmxlZnR9XG4gICAgICAgICR3aWR0aD17cG9wb3ZlclBvcy53aWR0aH1cbiAgICAgICAgJHpJbmRleD17bWVudGlvblBvcG92ZXJaSW5kZXh9XG4gICAgICA+XG4gICAgICAgIDxDb250ZXh0TWVudGlvblBvcG92ZXJcbiAgICAgICAgICByZWY9e3BvcG92ZXJSZWZ9XG4gICAgICAgICAgYWxsb3dlZFR5cGVzPXthbGxvd2VkVHlwZXN9XG4gICAgICAgICAgYWN0aXZlVHlwZT17YWN0aXZlVHlwZX1cbiAgICAgICAgICBvblR5cGVDaGFuZ2U9e2hhbmRsZVR5cGVDaGFuZ2V9XG4gICAgICAgICAgaXRlbXM9e2l0ZW1zfVxuICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XG4gICAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgICAgIGhpZGVSZWNlbnRzTGFiZWw9e2hpZGVSZWNlbnRzTGFiZWx9XG4gICAgICAgICAgaGFzTW9yZT17aGFzTW9yZX1cbiAgICAgICAgICBpc0xvYWRpbmdNb3JlPXtpc0xvYWRpbmdNb3JlfVxuICAgICAgICAgIG9uUmVhY2hMaXN0RW5kPXtsb2FkTW9yZX1cbiAgICAgICAgICBzZWFyY2hWYWx1ZT17c2VhcmNoVmFsdWV9XG4gICAgICAgICAga2V5Ym9hcmRIaW50PXt0KCdjb250ZXh0TWVudGlvbi5rZXlib2FyZEhpbnQnLCB7XG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6ICdOYXZlZ2FjacOzbiBlbnRyZSBwZXN0YcOxYXM6IEAsIEBALCBAQEDigKYgZW4gb3JkZW4uIFRhbWJpw6luIEFsdC9DbWQgKyDihpAv4oaSJyxcbiAgICAgICAgICB9KX1cbiAgICAgICAgICBvbkl0ZW1TZWxlY3RlZD17aW5zZXJ0U2VsZWN0ZWRJdGVtfVxuICAgICAgICAgIGFjdGl2ZUluZGV4PXthY3RpdmVJbmRleH1cbiAgICAgICAgICBvbkFjdGl2ZUluZGV4Q2hhbmdlPXtzZXRBY3RpdmVJbmRleH1cbiAgICAgICAgICBpc0tleWJvYXJkTmF2QWN0aXZlPXtpc0tleWJvYXJkTmF2QWN0aXZlfVxuICAgICAgICAgIG9uTW91c2VNb3ZlSW5MaXN0PXsoKSA9PiBzZXRJc0tleWJvYXJkTmF2QWN0aXZlKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgIDwvU0NNUEFuY2hvcj5cbiAgICApXG4gIH0sIFtcbiAgICBwb3BvdmVyT3BlbixcbiAgICBwb3BvdmVyUG9zLFxuICAgIG1lbnRpb25Qb3BvdmVyWkluZGV4LFxuICAgIGFsbG93ZWRUeXBlcyxcbiAgICBhY3RpdmVUeXBlLFxuICAgIGhhbmRsZVR5cGVDaGFuZ2UsXG4gICAgaXRlbXMsXG4gICAgbG9hZGluZyxcbiAgICBlcnJvcixcbiAgICBoaWRlUmVjZW50c0xhYmVsLFxuICAgIGhhc01vcmUsXG4gICAgaXNMb2FkaW5nTW9yZSxcbiAgICBsb2FkTW9yZSxcbiAgICBzZWFyY2hWYWx1ZSxcbiAgICBpbnNlcnRTZWxlY3RlZEl0ZW0sXG4gICAgYWN0aXZlSW5kZXgsXG4gICAgaXNLZXlib2FyZE5hdkFjdGl2ZSxcbiAgXSlcblxuICByZXR1cm4geyBwb3BvdmVyT3BlbiwgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nLCBoYW5kbGVUcmlnZ2VyLCBoYW5kbGVLZXlEb3duLCBwb3BvdmVyTm9kZSwgY2xvc2UgfVxufVxuIl0sIm1hcHBpbmdz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
354
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNvbnRleHRNZW50aW9uUG9wb3ZlciIsIlNDTVBBbmNob3IiLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVQiLCJ1c2VFbnRpdHlTZWFyY2giLCJ1c2VNZW50aW9uQWxsb3dlZFR5cGVzIiwidXNlQ2FyZXRQb3NpdGlvbiIsIkVWRU5UUyIsInVzZUV2ZW50IiwianN4IiwiX2pzeCIsIlRZUEVfVE9fVFJJR0dFUl9TRVFVRU5DRSIsInVzZXIiLCJ0YXNrIiwicHJvamVjdCIsImdldFR5cGVGcm9tVHJpZ2dlclNlcXVlbmNlIiwiYXRSdW5MZW5ndGgiLCJhbGxvd2VkVHlwZXMiLCJkZWZhdWx0VHlwZSIsIl9PYmplY3QkZW50cmllcyRmaW5kJCIsIl9PYmplY3QkZW50cmllcyRmaW5kIiwiX2FsbG93ZWRUeXBlcyR0YWJJZHgiLCJub3JtYWxpemVkIiwiTWF0aCIsIm1heCIsImZsb29yIiwibWFwcGVkVHlwZSIsIk9iamVjdCIsImVudHJpZXMiLCJmaW5kIiwiX3JlZiIsIl9yZWYyIiwiX3NsaWNlZFRvQXJyYXkiLCJsZW4iLCJpbmNsdWRlcyIsInRhYklkeCIsIm1pbiIsImxlbmd0aCIsImdldFRyaWdnZXJTZXF1ZW5jZUZyb21UeXBlIiwidHlwZSIsIm1hcHBlZCIsImlkeCIsImluZGV4T2YiLCJ1c2VEZXJpdmVkU2NvcGUiLCJfcmVmMyIsIl9jdHgkY2xpZW50JGlkIiwiX2N0eCRjbGllbnQiLCJfY3R4JGVudGl0eVZhbHVlcyIsIl9yZWY0IiwiX3JlZjUiLCJfY3R4JHByb2plY3QkaWQiLCJfY3R4JHByb2plY3QiLCJfY3R4JGVudGl0eVZhbHVlczIiLCJfY3R4JGNoaXBzUHJvamVjdCIsIl9jdHgkYWdlbnQkZW50aXR5IiwiX2N0eCRhZ2VudCIsIl9jdHgkYWdlbnQkY29ubmVjdG9ycyIsIl9jdHgkYWdlbnQyIiwiY3R4IiwiY2xpZW50SWQiLCJjbGllbnQiLCJpZCIsImVudGl0eVZhbHVlcyIsInByb2plY3RJZCIsImNoaXBzUHJvamVjdCIsImFnZW50RW50aXR5IiwiYWdlbnQiLCJlbnRpdHkiLCJtY3BTbHVnc0tleSIsImNvbm5lY3RvcnMiLCJjIiwiZ3JvdXAiLCJzbHVncyIsImpvaW4iLCJtY3BTbHVncyIsIl9jdHgkYWdlbnQkY29ubmVjdG9yczIiLCJfY3R4JGFnZW50MyIsInJhdyIsIl90b0NvbnN1bWFibGVBcnJheSIsIlNldCIsImZpbHRlciIsInMiLCJ0cmltIiwic29ydCIsInVzZU1lbnRpb25Qb3BvdmVyIiwiX3JlZjYiLCJlZGl0b3JSZWYiLCJwb3BvdmVyQW5jaG9yUmVmIiwiZW5hYmxlZFR5cGVzIiwib25NZW50aW9uQWRkZWQiLCJfdXNlVCIsInQiLCJldmVudCIsIl91c2VNZW50aW9uQWxsb3dlZFR5cCIsIm1lbnRpb25Qb3BvdmVyWkluZGV4IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZVR5cGUiLCJzZXRBY3RpdmVUeXBlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJwb3BvdmVyT3BlbiIsInNldFBvcG92ZXJPcGVuIiwiX3VzZVN0YXRlNSIsImJvdHRvbSIsImxlZnQiLCJ3aWR0aCIsIl91c2VTdGF0ZTYiLCJwb3BvdmVyUG9zIiwic2V0UG9wb3ZlclBvcyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiYWN0aXZlSW5kZXgiLCJzZXRBY3RpdmVJbmRleCIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwiaXNLZXlib2FyZE5hdkFjdGl2ZSIsInNldElzS2V5Ym9hcmROYXZBY3RpdmUiLCJoYXNFbWl0dGVkT3BlbiIsInBvcG92ZXJSZWYiLCJnZXRDYXJldFJlY3QiLCJzY29wZSIsIl91c2VFbnRpdHlTZWFyY2giLCJpdGVtcyIsImxvYWRpbmciLCJlcnJvciIsImhpZGVSZWNlbnRzTGFiZWwiLCJoYXNNb3JlIiwiaXNMb2FkaW5nTW9yZSIsImxvYWRNb3JlIiwic2VhcmNoVmFsdWUiLCJ1cGRhdGVTZWFyY2hWYWx1ZSIsInBvc2l0aW9uUG9wb3ZlciIsIl9wb3BvdmVyQW5jaG9yUmVmJGN1ciIsIl9lZGl0b3JSZWYkY3VycmVudCRnZSIsIl9lZGl0b3JSZWYkY3VycmVudCIsIl9lZGl0b3JSZWYkY3VycmVudCRnZTIiLCJmcm9tQW5jaG9yIiwiY3VycmVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImZyb21FZGl0b3IiLCJnZXRFZGl0b3JDbGllbnRSZWN0IiwiY2FsbCIsInJlY3QiLCJjYXJldCIsInZpZXdwb3J0SCIsIndpbmRvdyIsImlubmVySGVpZ2h0Iiwidmlld3BvcnRXIiwiaW5uZXJXaWR0aCIsImZhbGxiYWNrVyIsInRvcCIsInJlc2V0TWVudGlvbk9wZW5UcmFja2luZyIsImNsb3NlIiwiaGFuZGxlVHJpZ2dlciIsInRyaWdnZXIiLCJhY3RpdmUiLCJvdmVyZmxvd0F0Q291bnQiLCJlZmZlY3RpdmVBdFJ1bkxlbmd0aCIsImVmZmVjdGl2ZVF1ZXJ5IiwiY29uY2F0IiwicmVwZWF0IiwicXVlcnkiLCJ0eXBlRnJvbUF0IiwiYWlDaGF0TWVudGlvbk9wZW4iLCJpbnNlcnRTZWxlY3RlZEl0ZW0iLCJpdGVtIiwiX2l0ZW0kcmF3JGNsaWVudElkIiwiX2l0ZW0kcmF3JGNsaWVudE5hbWUiLCJfaXRlbSRyYXckcHJvamVjdE5hbWUiLCJfaXRlbSRyYXckZmVlSWQiLCJfaXRlbSRyYXckZmF0aGVySWQiLCJfaXRlbSRyYXckZmF0aGVyVGl0bGUiLCJfaXRlbSRyYXckdG90YWxQcm95ZWMiLCJfaXRlbSRyYXckbmFtZSIsIl9pdGVtJHJhdyRwaWN0dXJlIiwiX2l0ZW0kcmF3JHBvc2l0aW9uTmFtIiwiX2l0ZW0kcmF3JGVtYWlsIiwiX2VkaXRvclJlZiRjdXJyZW50MiIsIm1lbnRpb24iLCJsYWJlbCIsInByaW1hcnkiLCJtZXRhZGF0YSIsImNsaWVudE5hbWUiLCJwcm9qZWN0TmFtZSIsImZlZUlkIiwiZmF0aGVySWQiLCJmYXRoZXJUaXRsZSIsInRvdGFsUHJveWVjdG9zIiwibmFtZSIsInBpY3R1cmUiLCJwb3NpdGlvbk5hbWUiLCJlbWFpbCIsImluc2VydE1lbnRpb24iLCJhaUNoYXRNZW50aW9uU2VsZWN0IiwiU3RyaW5nIiwiaGFuZGxlVHlwZUNoYW5nZSIsIl9lZGl0b3JSZWYkY3VycmVudDMiLCJuZXh0UnVuTGVuZ3RoIiwic3luY1RyaWdnZXJBdFJ1bkxlbmd0aCIsImFpQ2hhdE1lbnRpb25UeXBlU3dpdGNoIiwiaGFuZGxlS2V5RG93biIsImUiLCJrZXkiLCJwcmV2ZW50RGVmYXVsdCIsIm1ldGFLZXkiLCJhbHRLZXkiLCJkZWx0YSIsIm5leHRJZHgiLCJwcmV2IiwidW5kZWZpbmVkIiwiaGFuZGxlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlIiwibW91c2VFdmVudCIsIl9wb3BvdmVyUmVmJGN1cnJlbnQiLCJ0YXJnZXQiLCJjb250YWlucyIsImRvY3VtZW50IiwicHJldklzTG9hZGluZ01vcmVSZWYiLCJwb3BvdmVyTm9kZSIsIiRib3R0b20iLCIkbGVmdCIsIiR3aWR0aCIsIiR6SW5kZXgiLCJjaGlsZHJlbiIsInJlZiIsIm9uVHlwZUNoYW5nZSIsIm9uUmVhY2hMaXN0RW5kIiwia2V5Ym9hcmRIaW50IiwiZGVmYXVsdFZhbHVlIiwib25JdGVtU2VsZWN0ZWQiLCJvbkFjdGl2ZUluZGV4Q2hhbmdlIiwib25Nb3VzZU1vdmVJbkxpc3QiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlTWVudGlvblBvcG92ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtleWJvYXJkRXZlbnQsIFJlYWN0Tm9kZSwgUmVmT2JqZWN0LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbkVkaXRvckhhbmRsZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvQ29udGV4dE1lbnRpb25FZGl0b3InXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvblBvcG92ZXIsIFNDTVBBbmNob3IgfSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uUG9wb3ZlcidcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuL3VzZU1haWFUYXNrUGFuZWxaSW5kZXgnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuL3VzZVQnXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWN5Y2xlXG5pbXBvcnQgeyBFbnRpdHlTZWFyY2hTY29wZSwgdXNlRW50aXR5U2VhcmNoIH0gZnJvbSAnLi91c2VFbnRpdHlTZWFyY2gnXG5pbXBvcnQgeyB1c2VNZW50aW9uQWxsb3dlZFR5cGVzIH0gZnJvbSAnLi91c2VNZW50aW9uQWxsb3dlZFR5cGVzJ1xuaW1wb3J0IHsgdXNlQ2FyZXRQb3NpdGlvbiB9IGZyb20gJy4vdXNlQ2FyZXRQb3NpdGlvbidcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuL3VzZUV2ZW50J1xuaW1wb3J0IHsgQ29udGV4dEVudGl0eVR5cGUsIENvbnRleHRNZW50aW9uLCBDb250ZXh0TWVudGlvbkl0ZW0gfSBmcm9tICcuLi90eXBlcy9jb250ZXh0TWVudGlvbidcblxuZXhwb3J0IHR5cGUgVXNlTWVudGlvblBvcG92ZXJPcHRpb25zID0ge1xuICBlZGl0b3JSZWY6IFJlZk9iamVjdDxDb250ZXh0TWVudGlvbkVkaXRvckhhbmRsZT5cbiAgLyoqXG4gICAqIE5vZG8gY3V5byBhbmNobyB5IGJvcmRlIHN1cGVyaW9yIGRlZmluZW4gZWwgcG9wb3ZlciAocC4gZWouIHdyYXBwZXIgZGVsIGlucHV0IGVuIE1BSUEpLlxuICAgKiBTaSBubyBzZSBwYXNhLCBzZSB1c2EgZWwgcmVjdCBkZWwgY29udGVudGVkaXRhYmxlIChgZ2V0RWRpdG9yQ2xpZW50UmVjdGApLlxuICAgKi9cbiAgcG9wb3ZlckFuY2hvclJlZj86IFJlZk9iamVjdDxIVE1MRWxlbWVudCB8IG51bGw+XG4gIC8qKiBPdmVycmlkZSBkZWwgc2V0IGRlIHRhYnMgcGVybWl0aWRhczsgc2kgbm8gc2UgcGFzYSBzZSBkZXJpdmEgZGVsIGFnZW50LiAqL1xuICBlbmFibGVkVHlwZXM/OiBDb250ZXh0RW50aXR5VHlwZVtdXG4gIC8qKiBDYWxsYmFjayBjdWFuZG8gZWwgdXN1YXJpbyBpbnNlcnRhIHVuYSBtZW50aW9uIHbDrWEgY2xpY2svdGVjbGFkby4gKi9cbiAgb25NZW50aW9uQWRkZWQ/OiAobWVudGlvbjogQ29udGV4dE1lbnRpb24pID0+IHZvaWRcbn1cblxuZXhwb3J0IHR5cGUgVXNlTWVudGlvblBvcG92ZXJSZXR1cm4gPSB7XG4gIHBvcG92ZXJPcGVuOiBib29sZWFuXG4gIC8qKlxuICAgKiBSZWluaWNpYSBlbCB0cmFja2luZyBkZSBgQUlfQ0hBVF9NRU5USU9OX09QRU5gIChwcmltZXJhIGFwZXJ0dXJhIHBvciBtZW5zYWplKS5cbiAgICogTGxhbWFyIHRyYXMgZW52aWFyIGVsIG1lbnNhamUgbyBhbCBjYW1iaWFyIGRlIGNvbnZlcnNhY2nDs24uXG4gICAqL1xuICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmc6ICgpID0+IHZvaWRcbiAgLyoqIFByb2Nlc2EgZWwgdHJpZ2dlciBwcm92ZW5pZW50ZSBkZWwgYENvbnRleHRNZW50aW9uRWRpdG9yLm9uSW5wdXRgLiAqL1xuICBoYW5kbGVUcmlnZ2VyOiAodHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmc7IGF0UnVuTGVuZ3RoOiBudW1iZXIgfSkgPT4gdm9pZFxuICAvKipcbiAgICogTWFuZWpvIGRlIHRlY2xhcyByZWxhdGl2YXMgYWwgcG9wb3ZlciAobmF2ZWdhY2nDs24sIHNlbGVjY2nDs24sIGNhbWJpbyBkZVxuICAgKiB0YWIgeSBlc2NhcGUpLiBEZXZ1ZWx2ZSBgdHJ1ZWAgc2kgY29uc3VtacOzIGxhIGtleSwgcGFyYSBxdWUgZWwgY29uc3VtZXJcbiAgICogcHVlZGEgZGVjaWRpciBzaSBzZWd1aXIgcHJvY2VzYW5kbyBvdHJhcyB0ZWNsYXMgKHAuZWouIEVudGVyIHBhcmEgZW52aWFyKS5cbiAgICovXG4gIGhhbmRsZUtleURvd246IChlOiBLZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4gYm9vbGVhblxuICAvKiogTm9kbyBkZWwgcG9wb3ZlcjsgZWwgY29uc3VtZXIgZGViZSBwb3J0YXJsbyBjb24gYGNyZWF0ZVBvcnRhbGAuICovXG4gIHBvcG92ZXJOb2RlOiBSZWFjdE5vZGUgfCBudWxsXG4gIC8qKiBDaWVycmEgZWwgcG9wb3ZlciB5IGxpbXBpYSBlbCBxdWVyeS4gKi9cbiAgY2xvc2U6ICgpID0+IHZvaWRcbn1cblxuY29uc3QgVFlQRV9UT19UUklHR0VSX1NFUVVFTkNFOiBQYXJ0aWFsPFJlY29yZDxDb250ZXh0RW50aXR5VHlwZSwgbnVtYmVyPj4gPSB7XG4gIHVzZXI6IDEsXG4gIHRhc2s6IDIsXG4gIHByb2plY3Q6IDMsXG59XG5cbmNvbnN0IGdldFR5cGVGcm9tVHJpZ2dlclNlcXVlbmNlID0gKFxuICBhdFJ1bkxlbmd0aDogbnVtYmVyLFxuICBhbGxvd2VkVHlwZXM6IENvbnRleHRFbnRpdHlUeXBlW10sXG4gIGRlZmF1bHRUeXBlOiBDb250ZXh0RW50aXR5VHlwZVxuKTogQ29udGV4dEVudGl0eVR5cGUgPT4ge1xuICBjb25zdCBub3JtYWxpemVkID0gTWF0aC5tYXgoMSwgTWF0aC5mbG9vcihhdFJ1bkxlbmd0aCkpXG4gIGNvbnN0IG1hcHBlZFR5cGUgPSAoT2JqZWN0LmVudHJpZXMoVFlQRV9UT19UUklHR0VSX1NFUVVFTkNFKS5maW5kKChbLCBsZW5dKSA9PiBsZW4gPT09IG5vcm1hbGl6ZWQpPy5bMF0gPz9cbiAgICBudWxsKSBhcyBDb250ZXh0RW50aXR5VHlwZSB8IG51bGxcbiAgaWYgKG1hcHBlZFR5cGUgJiYgYWxsb3dlZFR5cGVzLmluY2x1ZGVzKG1hcHBlZFR5cGUpKSByZXR1cm4gbWFwcGVkVHlwZVxuICBjb25zdCB0YWJJZHggPSBNYXRoLm1pbihNYXRoLm1heCgwLCBub3JtYWxpemVkIC0gMSksIGFsbG93ZWRUeXBlcy5sZW5ndGggLSAxKVxuICByZXR1cm4gYWxsb3dlZFR5cGVzW3RhYklkeF0gPz8gZGVmYXVsdFR5cGVcbn1cblxuY29uc3QgZ2V0VHJpZ2dlclNlcXVlbmNlRnJvbVR5cGUgPSAodHlwZTogQ29udGV4dEVudGl0eVR5cGUsIGFsbG93ZWRUeXBlczogQ29udGV4dEVudGl0eVR5cGVbXSk6IG51bWJlciA9PiB7XG4gIGNvbnN0IG1hcHBlZCA9IFRZUEVfVE9fVFJJR0dFUl9TRVFVRU5DRVt0eXBlXVxuICBpZiAobWFwcGVkKSByZXR1cm4gbWFwcGVkXG4gIGNvbnN0IGlkeCA9IGFsbG93ZWRUeXBlcy5pbmRleE9mKHR5cGUpXG4gIHJldHVybiBpZHggPj0gMCA/IGlkeCArIDEgOiAxXG59XG5cbi8qKlxuICogRGVyaXZhIGNsaWVudElkLCBwcm9qZWN0SWQsIGFnZW50RW50aXR5IHkgTUNQIGRlc2RlIGVsIGNvbnRleHRvIGdsb2JhbCAoaW5jbC5cbiAqIGBlbnRpdHlWYWx1ZXNgIHkgYGNoaXBzUHJvamVjdGApIHBhcmEgZmlsdHJhciByZWNlbnRzIHkgYsO6c3F1ZWRhIEdyYXBoUUwuXG4gKi9cbmNvbnN0IHVzZURlcml2ZWRTY29wZSA9ICgpOiBFbnRpdHlTZWFyY2hTY29wZSA9PiB7XG4gIGNvbnN0IGN0eCA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBjbGllbnRJZCA9IGN0eC5jbGllbnQ/LmlkID8/IGN0eC5lbnRpdHlWYWx1ZXM/LmNsaWVudElkID8/IG51bGxcbiAgY29uc3QgcHJvamVjdElkID0gY3R4LnByb2plY3Q/LmlkID8/IGN0eC5lbnRpdHlWYWx1ZXM/LnByb2plY3RJZCA/PyBjdHguY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgPz8gbnVsbFxuICBjb25zdCBhZ2VudEVudGl0eSA9IGN0eC5hZ2VudD8uZW50aXR5ID8/IG51bGxcbiAgY29uc3QgbWNwU2x1Z3NLZXkgPSAoY3R4LmFnZW50Py5jb25uZWN0b3JzPy5maW5kKGMgPT4gYy5ncm91cCA9PT0gJ01DUCcpPy5zbHVncyA/PyBbXSkuam9pbignfCcpXG5cbiAgY29uc3QgbWNwU2x1Z3MgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCByYXcgPSBjdHguYWdlbnQ/LmNvbm5lY3RvcnM/LmZpbmQoYyA9PiBjLmdyb3VwID09PSAnTUNQJyk/LnNsdWdzID8/IFtdXG4gICAgcmV0dXJuIFsuLi5uZXcgU2V0KHJhdy5maWx0ZXIoKHMpOiBzIGlzIHN0cmluZyA9PiB0eXBlb2YgcyA9PT0gJ3N0cmluZycgJiYgcy50cmltKCkubGVuZ3RoID4gMCkpXS5zb3J0KClcbiAgfSwgW21jcFNsdWdzS2V5XSlcblxuICByZXR1cm4gdXNlTWVtbzxFbnRpdHlTZWFyY2hTY29wZT4oXG4gICAgKCkgPT4gKHsgY2xpZW50SWQsIHByb2plY3RJZCwgbWNwU2x1Z3MsIGFnZW50RW50aXR5IH0pLFxuICAgIFtjbGllbnRJZCwgcHJvamVjdElkLCBtY3BTbHVncywgYWdlbnRFbnRpdHldXG4gIClcbn1cblxuLyoqXG4gKiBFbmNhcHN1bGEgbGEgbMOzZ2ljYSBkZWwgcG9wb3ZlciBkZSBALW1lbnRpb25zIChlc3RhZG8sIGZldGNoIHBvciB0YWIsIGFuYWx5dGljcyxcbiAqIHBvc2ljaW9uYW1pZW50bykuIEVsIGNvbnN1bWVyIG1hbnRpZW5lIGVsIGVkaXRvciB5IGVsIGVudsOtbyBkZWwgbWVuc2FqZS5cbiAqIExvcyBmaWx0cm9zIGRlIGLDunNxdWVkYSB1c2FuIGB1c2VEZXJpdmVkU2NvcGVgOiBlc3BlY2lhbGlzdGEgcHJveWVjdG8gYWNvdGEgdGFyZWFzXG4gKiBhbCBgcHJvamVjdElkYCBkZWwgY29udGV4dG87IGVzcGVjaWFsaXN0YSBjbGllbnRlLCBwcm95ZWN0b3MgYWwgYGNsaWVudElkYCAoZW4gYGV4dHJhYCBkZSBzZWFyY2gpLlxuICovXG5leHBvcnQgY29uc3QgdXNlTWVudGlvblBvcG92ZXIgPSAoe1xuICBlZGl0b3JSZWYsXG4gIHBvcG92ZXJBbmNob3JSZWYsXG4gIGVuYWJsZWRUeXBlcyxcbiAgb25NZW50aW9uQWRkZWQsXG59OiBVc2VNZW50aW9uUG9wb3Zlck9wdGlvbnMpOiBVc2VNZW50aW9uUG9wb3ZlclJldHVybiA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IGV2ZW50ID0gdXNlRXZlbnQoKVxuICBjb25zdCB7IGFsbG93ZWRUeXBlcywgZGVmYXVsdFR5cGUgfSA9IHVzZU1lbnRpb25BbGxvd2VkVHlwZXMoZW5hYmxlZFR5cGVzKVxuICBjb25zdCBtZW50aW9uUG9wb3ZlclpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTIwMCwgJ292ZXJsYXknKVxuICBjb25zdCBbYWN0aXZlVHlwZSwgc2V0QWN0aXZlVHlwZV0gPSB1c2VTdGF0ZTxDb250ZXh0RW50aXR5VHlwZT4oZGVmYXVsdFR5cGUpXG4gIGNvbnN0IFtwb3BvdmVyT3Blbiwgc2V0UG9wb3Zlck9wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtwb3BvdmVyUG9zLCBzZXRQb3BvdmVyUG9zXSA9IHVzZVN0YXRlPHsgYm90dG9tOiBudW1iZXI7IGxlZnQ6IG51bWJlcjsgd2lkdGg6IG51bWJlciB9Pih7XG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDAsXG4gICAgd2lkdGg6IDAsXG4gIH0pXG4gIGNvbnN0IFthY3RpdmVJbmRleCwgc2V0QWN0aXZlSW5kZXhdID0gdXNlU3RhdGUoMClcbiAgY29uc3QgW2lzS2V5Ym9hcmROYXZBY3RpdmUsIHNldElzS2V5Ym9hcmROYXZBY3RpdmVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IGhhc0VtaXR0ZWRPcGVuID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBwb3BvdmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbClcbiAgY29uc3QgZ2V0Q2FyZXRSZWN0ID0gdXNlQ2FyZXRQb3NpdGlvbigpXG5cbiAgY29uc3Qgc2NvcGUgPSB1c2VEZXJpdmVkU2NvcGUoKVxuICBjb25zdCB7IGl0ZW1zLCBsb2FkaW5nLCBlcnJvciwgaGlkZVJlY2VudHNMYWJlbCwgaGFzTW9yZSwgaXNMb2FkaW5nTW9yZSwgbG9hZE1vcmUsIHNlYXJjaFZhbHVlLCB1cGRhdGVTZWFyY2hWYWx1ZSB9ID1cbiAgICB1c2VFbnRpdHlTZWFyY2goYWN0aXZlVHlwZSwgc2NvcGUpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWFsbG93ZWRUeXBlcy5pbmNsdWRlcyhhY3RpdmVUeXBlKSkge1xuICAgICAgc2V0QWN0aXZlVHlwZShkZWZhdWx0VHlwZSlcbiAgICB9XG4gIH0sIFthbGxvd2VkVHlwZXMsIGFjdGl2ZVR5cGUsIGRlZmF1bHRUeXBlXSlcblxuICBjb25zdCBwb3NpdGlvblBvcG92ZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgZnJvbUFuY2hvciA9IHBvcG92ZXJBbmNob3JSZWY/LmN1cnJlbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3QgZnJvbUVkaXRvciA9IGVkaXRvclJlZi5jdXJyZW50Py5nZXRFZGl0b3JDbGllbnRSZWN0Py4oKSA/PyBudWxsXG4gICAgY29uc3QgcmVjdCA9IGZyb21BbmNob3IgPz8gZnJvbUVkaXRvclxuICAgIGlmICghcmVjdCB8fCByZWN0LndpZHRoIDw9IDApIHtcbiAgICAgIGNvbnN0IGNhcmV0ID0gZ2V0Q2FyZXRSZWN0KClcbiAgICAgIGlmICghY2FyZXQpIHJldHVyblxuICAgICAgY29uc3Qgdmlld3BvcnRIID0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgICBjb25zdCB2aWV3cG9ydFcgPSB3aW5kb3cuaW5uZXJXaWR0aFxuICAgICAgY29uc3QgZmFsbGJhY2tXID0gMzIwXG4gICAgICBjb25zdCBsZWZ0ID0gTWF0aC5tYXgoOCwgTWF0aC5taW4odmlld3BvcnRXIC0gZmFsbGJhY2tXIC0gOCwgY2FyZXQubGVmdCkpXG4gICAgICBzZXRQb3BvdmVyUG9zKHtcbiAgICAgICAgd2lkdGg6IGZhbGxiYWNrVyxcbiAgICAgICAgbGVmdCxcbiAgICAgICAgYm90dG9tOiB2aWV3cG9ydEggLSBjYXJldC50b3AgKyA0LFxuICAgICAgfSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHZpZXdwb3J0VyA9IHdpbmRvdy5pbm5lcldpZHRoXG4gICAgY29uc3Qgdmlld3BvcnRIID0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgY29uc3QgeyB3aWR0aCB9ID0gcmVjdFxuICAgIGNvbnN0IGxlZnQgPSBNYXRoLm1heCg4LCBNYXRoLm1pbih2aWV3cG9ydFcgLSB3aWR0aCAtIDgsIHJlY3QubGVmdCkpXG4gICAgLyoqIFBvcG92ZXIgc2llbXByZSBhcnJpYmEgZGVsIGlucHV0OiBib3JkZSBpbmZlcmlvciBkZWwgcG9wb3ZlciB+NHB4IHNvYnJlIGVsIGJvcmRlIHN1cGVyaW9yIGRlbCBhbmNsYS4gKi9cbiAgICBzZXRQb3BvdmVyUG9zKHtcbiAgICAgIHdpZHRoLFxuICAgICAgbGVmdCxcbiAgICAgIGJvdHRvbTogdmlld3BvcnRIIC0gcmVjdC50b3AgKyA0LFxuICAgIH0pXG4gIH0sIFtwb3BvdmVyQW5jaG9yUmVmLCBlZGl0b3JSZWYsIGdldENhcmV0UmVjdF0pXG5cbiAgY29uc3QgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGhhc0VtaXR0ZWRPcGVuLmN1cnJlbnQgPSBmYWxzZVxuICB9LCBbXSlcblxuICBjb25zdCBjbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRQb3BvdmVyT3BlbihmYWxzZSlcbiAgICB1cGRhdGVTZWFyY2hWYWx1ZSgnJylcbiAgfSwgW3VwZGF0ZVNlYXJjaFZhbHVlXSlcblxuICBjb25zdCBoYW5kbGVUcmlnZ2VyID0gdXNlQ2FsbGJhY2soXG4gICAgKHRyaWdnZXI6IHsgYWN0aXZlOiBib29sZWFuOyBxdWVyeTogc3RyaW5nOyBhdFJ1bkxlbmd0aDogbnVtYmVyIH0pID0+IHtcbiAgICAgIGlmIChhbGxvd2VkVHlwZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGlmIChwb3BvdmVyT3BlbikgY2xvc2UoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHRyaWdnZXIuYWN0aXZlKSB7XG4gICAgICAgIC8vIFNpIGhheSBtw6FzIGBAYCBxdWUgdGFicyAocC4gZWouIGFnZW50ZSBwcm95ZWN0bzogYEBgIHVzdWFyaW8sIGBAQGAgdGFyZWEg4oaSIGBAQEBgKSxcbiAgICAgICAgLy8gc2UgdXNhIGxhIMO6bHRpbWEgdGFiIHkgbG9zIGBAYCBkZSBtw6FzIHBhc2FuIGFsIHRleHRvIGRlIGLDunNxdWVkYSAoYEBAQGAg4oeSIHRhYiB0YXJlYSArIHF1ZXJ5IGBAYCkuXG4gICAgICAgIC8vIENvbiDiiaUzIHRhYnMgKGNsaWVudGUpLCBgQEBAYCBjb2luY2lkZSBjb24gbGEgMy5lciB0YWIgKGBwcm9qZWN0YCkuXG4gICAgICAgIGNvbnN0IG92ZXJmbG93QXRDb3VudCA9IE1hdGgubWF4KDAsIHRyaWdnZXIuYXRSdW5MZW5ndGggLSBhbGxvd2VkVHlwZXMubGVuZ3RoKVxuICAgICAgICBjb25zdCBlZmZlY3RpdmVBdFJ1bkxlbmd0aCA9IE1hdGgubWluKHRyaWdnZXIuYXRSdW5MZW5ndGgsIGFsbG93ZWRUeXBlcy5sZW5ndGgpXG4gICAgICAgIGNvbnN0IGVmZmVjdGl2ZVF1ZXJ5ID0gYCR7J0AnLnJlcGVhdChvdmVyZmxvd0F0Q291bnQpfSR7dHJpZ2dlci5xdWVyeX1gXG4gICAgICAgIGNvbnN0IHR5cGVGcm9tQXQgPSBnZXRUeXBlRnJvbVRyaWdnZXJTZXF1ZW5jZShlZmZlY3RpdmVBdFJ1bkxlbmd0aCwgYWxsb3dlZFR5cGVzLCBkZWZhdWx0VHlwZSlcblxuICAgICAgICBpZiAoIXBvcG92ZXJPcGVuKSB7XG4gICAgICAgICAgc2V0UG9wb3Zlck9wZW4odHJ1ZSlcbiAgICAgICAgICBzZXRBY3RpdmVUeXBlKHR5cGVGcm9tQXQpXG4gICAgICAgICAgcG9zaXRpb25Qb3BvdmVyKClcbiAgICAgICAgICBpZiAoIWhhc0VtaXR0ZWRPcGVuLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRNZW50aW9uT3BlbiwgeyB0eXBlOiB0eXBlRnJvbUF0IH0pXG4gICAgICAgICAgICBoYXNFbWl0dGVkT3Blbi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRBY3RpdmVUeXBlKHR5cGVGcm9tQXQpXG4gICAgICAgICAgcG9zaXRpb25Qb3BvdmVyKClcbiAgICAgICAgfVxuICAgICAgICB1cGRhdGVTZWFyY2hWYWx1ZShlZmZlY3RpdmVRdWVyeSlcbiAgICAgIH0gZWxzZSBpZiAocG9wb3Zlck9wZW4pIHtcbiAgICAgICAgY2xvc2UoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FsbG93ZWRUeXBlcywgZGVmYXVsdFR5cGUsIHBvcG92ZXJPcGVuLCBwb3NpdGlvblBvcG92ZXIsIHVwZGF0ZVNlYXJjaFZhbHVlLCBldmVudCwgY2xvc2VdXG4gIClcblxuICBjb25zdCBpbnNlcnRTZWxlY3RlZEl0ZW0gPSB1c2VDYWxsYmFjayhcbiAgICAoaXRlbTogQ29udGV4dE1lbnRpb25JdGVtKSA9PiB7XG4gICAgICBjb25zdCBtZW50aW9uOiBDb250ZXh0TWVudGlvbiA9IHtcbiAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcbiAgICAgICAgbGFiZWw6IGl0ZW0ucHJpbWFyeSxcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICBjbGllbnRJZDogaXRlbS5yYXcuY2xpZW50SWQgPz8gbnVsbCxcbiAgICAgICAgICBjbGllbnROYW1lOiBpdGVtLnJhdy5jbGllbnROYW1lID8/IG51bGwsXG4gICAgICAgICAgcHJvamVjdE5hbWU6IGl0ZW0ucmF3LnByb2plY3ROYW1lID8/IG51bGwsXG4gICAgICAgICAgZmVlSWQ6IGl0ZW0ucmF3LmZlZUlkID8/IG51bGwsXG4gICAgICAgICAgZmF0aGVySWQ6IGl0ZW0ucmF3LmZhdGhlcklkID8/IG51bGwsXG4gICAgICAgICAgZmF0aGVyVGl0bGU6IGl0ZW0ucmF3LmZhdGhlclRpdGxlID8/IG51bGwsXG4gICAgICAgICAgdG90YWxQcm95ZWN0b3M6IGl0ZW0ucmF3LnRvdGFsUHJveWVjdG9zID8/IG51bGwsXG4gICAgICAgICAgbmFtZTogaXRlbS5yYXcubmFtZSA/PyBudWxsLFxuICAgICAgICAgIHBpY3R1cmU6IGl0ZW0ucmF3LnBpY3R1cmUgPz8gbnVsbCxcbiAgICAgICAgICBwb3NpdGlvbk5hbWU6IGl0ZW0ucmF3LnBvc2l0aW9uTmFtZSA/PyBudWxsLFxuICAgICAgICAgIGVtYWlsOiBpdGVtLnJhdy5lbWFpbCA/PyBudWxsLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/Lmluc2VydE1lbnRpb24obWVudGlvbilcbiAgICAgIG9uTWVudGlvbkFkZGVkPy4obWVudGlvbilcbiAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRNZW50aW9uU2VsZWN0LCB7IHR5cGU6IG1lbnRpb24udHlwZSwgaWQ6IFN0cmluZyhtZW50aW9uLmlkKSB9KVxuICAgICAgY2xvc2UoKVxuICAgIH0sXG4gICAgW2VkaXRvclJlZiwgb25NZW50aW9uQWRkZWQsIGV2ZW50LCBjbG9zZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVR5cGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAodHlwZTogQ29udGV4dEVudGl0eVR5cGUpID0+IHtcbiAgICAgIHNldEFjdGl2ZVR5cGUodHlwZSlcbiAgICAgIGNvbnN0IG5leHRSdW5MZW5ndGggPSBnZXRUcmlnZ2VyU2VxdWVuY2VGcm9tVHlwZSh0eXBlLCBhbGxvd2VkVHlwZXMpXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uc3luY1RyaWdnZXJBdFJ1bkxlbmd0aChuZXh0UnVuTGVuZ3RoKVxuICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdE1lbnRpb25UeXBlU3dpdGNoLCB7IHR5cGUgfSlcbiAgICB9LFxuICAgIFthbGxvd2VkVHlwZXMsIGVkaXRvclJlZiwgZXZlbnRdXG4gIClcblxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KTogYm9vbGVhbiA9PiB7XG4gICAgICBpZiAoIXBvcG92ZXJPcGVuIHx8IGFsbG93ZWRUeXBlcy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZVxuXG4gICAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBjbG9zZSgpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmICgoZS5rZXkgPT09ICdBcnJvd1JpZ2h0JyB8fCBlLmtleSA9PT0gJ0Fycm93TGVmdCcpICYmIChlLm1ldGFLZXkgfHwgZS5hbHRLZXkpKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBjb25zdCBpZHggPSBhbGxvd2VkVHlwZXMuaW5kZXhPZihhY3RpdmVUeXBlKVxuICAgICAgICBjb25zdCBkZWx0YSA9IGUua2V5ID09PSAnQXJyb3dSaWdodCcgPyAxIDogLTFcbiAgICAgICAgY29uc3QgbmV4dElkeCA9IChpZHggKyBkZWx0YSArIGFsbG93ZWRUeXBlcy5sZW5ndGgpICUgYWxsb3dlZFR5cGVzLmxlbmd0aFxuICAgICAgICBoYW5kbGVUeXBlQ2hhbmdlKGFsbG93ZWRUeXBlc1tuZXh0SWR4XSlcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlXG5cbiAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIHNldElzS2V5Ym9hcmROYXZBY3RpdmUodHJ1ZSlcbiAgICAgICAgc2V0QWN0aXZlSW5kZXgocHJldiA9PiAoaXRlbXMubGVuZ3RoID4gMCA/IE1hdGgubWluKHByZXYgKyAxLCBpdGVtcy5sZW5ndGggLSAxKSA6IDApKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIHNldElzS2V5Ym9hcmROYXZBY3RpdmUodHJ1ZSlcbiAgICAgICAgc2V0QWN0aXZlSW5kZXgocHJldiA9PiBNYXRoLm1heChwcmV2IC0gMSwgMCkpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicgfHwgZS5rZXkgPT09ICdUYWInKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBpbnNlcnRTZWxlY3RlZEl0ZW0oaXRlbXNbYWN0aXZlSW5kZXhdKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSxcbiAgICBbcG9wb3Zlck9wZW4sIGl0ZW1zLCBhbGxvd2VkVHlwZXMsIGFjdGl2ZVR5cGUsIGFjdGl2ZUluZGV4LCBpbnNlcnRTZWxlY3RlZEl0ZW0sIGNsb3NlLCBoYW5kbGVUeXBlQ2hhbmdlXVxuICApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXBvcG92ZXJPcGVuKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgY29uc3QgaGFuZGxlciA9ICgpID0+IHBvc2l0aW9uUG9wb3ZlcigpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZXIpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB0cnVlKVxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZXIpXG4gICAgfVxuICB9LCBbcG9wb3Zlck9wZW4sIHBvc2l0aW9uUG9wb3Zlcl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXBvcG92ZXJPcGVuKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBjb25zdCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUgPSAobW91c2VFdmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gbW91c2VFdmVudC50YXJnZXQgYXMgTm9kZSB8IG51bGxcbiAgICAgIGlmICghdGFyZ2V0KSByZXR1cm5cbiAgICAgIGlmIChwb3BvdmVyUmVmLmN1cnJlbnQ/LmNvbnRhaW5zKHRhcmdldCkpIHJldHVyblxuICAgICAgY2xvc2UoKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSlcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlKVxuICB9LCBbcG9wb3Zlck9wZW4sIGNsb3NlXSlcblxuICBjb25zdCBwcmV2SXNMb2FkaW5nTW9yZVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcHJldklzTG9hZGluZ01vcmVSZWYuY3VycmVudCA9IGlzTG9hZGluZ01vcmVcbiAgICB9XG4gIH0sIFtpc0xvYWRpbmdNb3JlXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwcmV2SXNMb2FkaW5nTW9yZVJlZi5jdXJyZW50KSByZXR1cm5cbiAgICBzZXRBY3RpdmVJbmRleCgwKVxuICB9LCBbaXRlbXMubGVuZ3RoLCBhY3RpdmVUeXBlXSlcblxuICBjb25zdCBwb3BvdmVyTm9kZSA9IHVzZU1lbW88UmVhY3ROb2RlIHwgbnVsbD4oKCkgPT4ge1xuICAgIGlmICghcG9wb3Zlck9wZW4pIHJldHVybiBudWxsXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ01QQW5jaG9yXG4gICAgICAgICRib3R0b209e3BvcG92ZXJQb3MuYm90dG9tfVxuICAgICAgICAkbGVmdD17cG9wb3ZlclBvcy5sZWZ0fVxuICAgICAgICAkd2lkdGg9e3BvcG92ZXJQb3Mud2lkdGh9XG4gICAgICAgICR6SW5kZXg9e21lbnRpb25Qb3BvdmVyWkluZGV4fVxuICAgICAgPlxuICAgICAgICA8Q29udGV4dE1lbnRpb25Qb3BvdmVyXG4gICAgICAgICAgcmVmPXtwb3BvdmVyUmVmfVxuICAgICAgICAgIGFsbG93ZWRUeXBlcz17YWxsb3dlZFR5cGVzfVxuICAgICAgICAgIGFjdGl2ZVR5cGU9e2FjdGl2ZVR5cGV9XG4gICAgICAgICAgb25UeXBlQ2hhbmdlPXtoYW5kbGVUeXBlQ2hhbmdlfVxuICAgICAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgICAgICBoaWRlUmVjZW50c0xhYmVsPXtoaWRlUmVjZW50c0xhYmVsfVxuICAgICAgICAgIGhhc01vcmU9e2hhc01vcmV9XG4gICAgICAgICAgaXNMb2FkaW5nTW9yZT17aXNMb2FkaW5nTW9yZX1cbiAgICAgICAgICBvblJlYWNoTGlzdEVuZD17bG9hZE1vcmV9XG4gICAgICAgICAgc2VhcmNoVmFsdWU9e3NlYXJjaFZhbHVlfVxuICAgICAgICAgIGtleWJvYXJkSGludD17dCgnY29udGV4dE1lbnRpb24ua2V5Ym9hcmRIaW50Jywge1xuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiAnTmF2ZWdhY2nDs24gZW50cmUgcGVzdGHDsWFzOiBALCBAQCwgQEBA4oCmIGVuIG9yZGVuLiBUYW1iacOpbiBBbHQvQ21kICsg4oaQL+KGkicsXG4gICAgICAgICAgfSl9XG4gICAgICAgICAgb25JdGVtU2VsZWN0ZWQ9e2luc2VydFNlbGVjdGVkSXRlbX1cbiAgICAgICAgICBhY3RpdmVJbmRleD17YWN0aXZlSW5kZXh9XG4gICAgICAgICAgb25BY3RpdmVJbmRleENoYW5nZT17c2V0QWN0aXZlSW5kZXh9XG4gICAgICAgICAgaXNLZXlib2FyZE5hdkFjdGl2ZT17aXNLZXlib2FyZE5hdkFjdGl2ZX1cbiAgICAgICAgICBvbk1vdXNlTW92ZUluTGlzdD17KCkgPT4gc2V0SXNLZXlib2FyZE5hdkFjdGl2ZShmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICA8L1NDTVBBbmNob3I+XG4gICAgKVxuICB9LCBbXG4gICAgcG9wb3Zlck9wZW4sXG4gICAgcG9wb3ZlclBvcyxcbiAgICBtZW50aW9uUG9wb3ZlclpJbmRleCxcbiAgICBhbGxvd2VkVHlwZXMsXG4gICAgYWN0aXZlVHlwZSxcbiAgICBoYW5kbGVUeXBlQ2hhbmdlLFxuICAgIGl0ZW1zLFxuICAgIGxvYWRpbmcsXG4gICAgZXJyb3IsXG4gICAgaGlkZVJlY2VudHNMYWJlbCxcbiAgICBoYXNNb3JlLFxuICAgIGlzTG9hZGluZ01vcmUsXG4gICAgbG9hZE1vcmUsXG4gICAgc2VhcmNoVmFsdWUsXG4gICAgaW5zZXJ0U2VsZWN0ZWRJdGVtLFxuICAgIGFjdGl2ZUluZGV4LFxuICAgIGlzS2V5Ym9hcmROYXZBY3RpdmUsXG4gIF0pXG5cbiAgcmV0dXJuIHsgcG9wb3Zlck9wZW4sIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZywgaGFuZGxlVHJpZ2dlciwgaGFuZGxlS2V5RG93biwgcG9wb3Zlck5vZGUsIGNsb3NlIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxTQUE4Q0EsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUU5RyxTQUFTQyxxQkFBcUIsRUFBRUMsVUFBVSxRQUFRLDJDQUEyQztBQUM3RixTQUFTQyxzQkFBc0IsUUFBUSwwQkFBMEI7QUFDakUsU0FBU0MsZ0JBQWdCLFFBQVEsMkJBQTJCO0FBQzVELFNBQVNDLElBQUksUUFBUSxRQUFRO0FBQzdCO0FBQ0EsU0FBNEJDLGVBQWUsUUFBUSxtQkFBbUI7QUFDdEUsU0FBU0Msc0JBQXNCLFFBQVEsMEJBQTBCO0FBQ2pFLFNBQVNDLGdCQUFnQixRQUFRLG9CQUFvQjtBQUNyRCxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxZQUFZO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBO0FBcUM3QyxJQUFNQyx3QkFBb0UsR0FBRztFQUMzRUMsSUFBSSxFQUFFLENBQUM7RUFDUEMsSUFBSSxFQUFFLENBQUM7RUFDUEMsT0FBTyxFQUFFO0FBQ1gsQ0FBQztBQUVELElBQU1DLDBCQUEwQixHQUFHLFNBQTdCQSwwQkFBMEJBLENBQzlCQyxXQUFtQixFQUNuQkMsWUFBaUMsRUFDakNDLFdBQThCLEVBQ1I7RUFBQSxJQUFBQyxxQkFBQSxFQUFBQyxvQkFBQSxFQUFBQyxvQkFBQTtFQUN0QixJQUFNQyxVQUFVLEdBQUdDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRUQsSUFBSSxDQUFDRSxLQUFLLENBQUNULFdBQVcsQ0FBQyxDQUFDO0VBQ3ZELElBQU1VLFVBQVUsSUFBQVAscUJBQUEsSUFBQUMsb0JBQUEsR0FBSU8sTUFBTSxDQUFDQyxPQUFPLENBQUNqQix3QkFBd0IsQ0FBQyxDQUFDa0IsSUFBSSxDQUFDLFVBQUFDLElBQUE7SUFBQSxJQUFBQyxLQUFBLEdBQUFDLGNBQUEsQ0FBQUYsSUFBQTtNQUFJRyxHQUFHLEdBQUFGLEtBQUE7SUFBQSxPQUFNRSxHQUFHLEtBQUtYLFVBQVU7RUFBQSxFQUFDLGNBQUFGLG9CQUFBLHVCQUE5RUEsb0JBQUEsQ0FBaUYsQ0FBQyxDQUFDLGNBQUFELHFCQUFBLGNBQUFBLHFCQUFBLEdBQ3JHLElBQWlDO0VBQ25DLElBQUlPLFVBQVUsSUFBSVQsWUFBWSxDQUFDaUIsUUFBUSxDQUFDUixVQUFVLENBQUMsRUFBRSxPQUFPQSxVQUFVO0VBQ3RFLElBQU1TLE1BQU0sR0FBR1osSUFBSSxDQUFDYSxHQUFHLENBQUNiLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRUYsVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFFTCxZQUFZLENBQUNvQixNQUFNLEdBQUcsQ0FBQyxDQUFDO0VBQzdFLFFBQUFoQixvQkFBQSxHQUFPSixZQUFZLENBQUNrQixNQUFNLENBQUMsY0FBQWQsb0JBQUEsY0FBQUEsb0JBQUEsR0FBSUgsV0FBVztBQUM1QyxDQUFDO0FBRUQsSUFBTW9CLDBCQUEwQixHQUFHLFNBQTdCQSwwQkFBMEJBLENBQUlDLElBQXVCLEVBQUV0QixZQUFpQyxFQUFhO0VBQ3pHLElBQU11QixNQUFNLEdBQUc3Qix3QkFBd0IsQ0FBQzRCLElBQUksQ0FBQztFQUM3QyxJQUFJQyxNQUFNLEVBQUUsT0FBT0EsTUFBTTtFQUN6QixJQUFNQyxHQUFHLEdBQUd4QixZQUFZLENBQUN5QixPQUFPLENBQUNILElBQUksQ0FBQztFQUN0QyxPQUFPRSxHQUFHLElBQUksQ0FBQyxHQUFHQSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFDL0IsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1FLGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBQSxFQUE0QjtFQUFBLElBQUFDLEtBQUEsRUFBQUMsY0FBQSxFQUFBQyxXQUFBLEVBQUFDLGlCQUFBLEVBQUFDLEtBQUEsRUFBQUMsS0FBQSxFQUFBQyxlQUFBLEVBQUFDLFlBQUEsRUFBQUMsa0JBQUEsRUFBQUMsaUJBQUEsRUFBQUMsaUJBQUEsRUFBQUMsVUFBQSxFQUFBQyxxQkFBQSxFQUFBQyxXQUFBO0VBQy9DLElBQU1DLEdBQUcsR0FBR3hELGdCQUFnQixDQUFDLENBQUM7RUFDOUIsSUFBTXlELFFBQVEsSUFBQWYsS0FBQSxJQUFBQyxjQUFBLElBQUFDLFdBQUEsR0FBR1ksR0FBRyxDQUFDRSxNQUFNLGNBQUFkLFdBQUEsdUJBQVZBLFdBQUEsQ0FBWWUsRUFBRSxjQUFBaEIsY0FBQSxjQUFBQSxjQUFBLElBQUFFLGlCQUFBLEdBQUlXLEdBQUcsQ0FBQ0ksWUFBWSxjQUFBZixpQkFBQSx1QkFBaEJBLGlCQUFBLENBQWtCWSxRQUFRLGNBQUFmLEtBQUEsY0FBQUEsS0FBQSxHQUFJLElBQUk7RUFDckUsSUFBTW1CLFNBQVMsSUFBQWYsS0FBQSxJQUFBQyxLQUFBLElBQUFDLGVBQUEsSUFBQUMsWUFBQSxHQUFHTyxHQUFHLENBQUM1QyxPQUFPLGNBQUFxQyxZQUFBLHVCQUFYQSxZQUFBLENBQWFVLEVBQUUsY0FBQVgsZUFBQSxjQUFBQSxlQUFBLElBQUFFLGtCQUFBLEdBQUlNLEdBQUcsQ0FBQ0ksWUFBWSxjQUFBVixrQkFBQSx1QkFBaEJBLGtCQUFBLENBQWtCVyxTQUFTLGNBQUFkLEtBQUEsY0FBQUEsS0FBQSxJQUFBSSxpQkFBQSxHQUFJSyxHQUFHLENBQUNNLFlBQVksY0FBQVgsaUJBQUEsdUJBQWhCQSxpQkFBQSxDQUFrQlUsU0FBUyxjQUFBZixLQUFBLGNBQUFBLEtBQUEsR0FBSSxJQUFJO0VBQ3ZHLElBQU1pQixXQUFXLElBQUFYLGlCQUFBLElBQUFDLFVBQUEsR0FBR0csR0FBRyxDQUFDUSxLQUFLLGNBQUFYLFVBQUEsdUJBQVRBLFVBQUEsQ0FBV1ksTUFBTSxjQUFBYixpQkFBQSxjQUFBQSxpQkFBQSxHQUFJLElBQUk7RUFDN0MsSUFBTWMsV0FBVyxHQUFHLEVBQUFaLHFCQUFBLElBQUFDLFdBQUEsR0FBQ0MsR0FBRyxDQUFDUSxLQUFLLGNBQUFULFdBQUEsZ0JBQUFBLFdBQUEsR0FBVEEsV0FBQSxDQUFXWSxVQUFVLGNBQUFaLFdBQUEsZ0JBQUFBLFdBQUEsR0FBckJBLFdBQUEsQ0FBdUI1QixJQUFJLENBQUMsVUFBQXlDLENBQUM7SUFBQSxPQUFJQSxDQUFDLENBQUNDLEtBQUssS0FBSyxLQUFLO0VBQUEsRUFBQyxjQUFBZCxXQUFBLHVCQUFuREEsV0FBQSxDQUFxRGUsS0FBSyxjQUFBaEIscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxFQUFFLEVBQUVpQixJQUFJLENBQUMsR0FBRyxDQUFDO0VBRWhHLElBQU1DLFFBQVEsR0FBRzlFLE9BQU8sQ0FBQyxZQUFNO0lBQUEsSUFBQStFLHNCQUFBLEVBQUFDLFdBQUE7SUFDN0IsSUFBTUMsR0FBRyxJQUFBRixzQkFBQSxJQUFBQyxXQUFBLEdBQUdsQixHQUFHLENBQUNRLEtBQUssY0FBQVUsV0FBQSxnQkFBQUEsV0FBQSxHQUFUQSxXQUFBLENBQVdQLFVBQVUsY0FBQU8sV0FBQSxnQkFBQUEsV0FBQSxHQUFyQkEsV0FBQSxDQUF1Qi9DLElBQUksQ0FBQyxVQUFBeUMsQ0FBQztNQUFBLE9BQUlBLENBQUMsQ0FBQ0MsS0FBSyxLQUFLLEtBQUs7SUFBQSxFQUFDLGNBQUFLLFdBQUEsdUJBQW5EQSxXQUFBLENBQXFESixLQUFLLGNBQUFHLHNCQUFBLGNBQUFBLHNCQUFBLEdBQUksRUFBRTtJQUM1RSxPQUFPRyxrQkFBQSxDQUFJLElBQUlDLEdBQUcsQ0FBQ0YsR0FBRyxDQUFDRyxNQUFNLENBQUMsVUFBQ0MsQ0FBQztNQUFBLE9BQWtCLE9BQU9BLENBQUMsS0FBSyxRQUFRLElBQUlBLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLENBQUMsQ0FBQzdDLE1BQU0sR0FBRyxDQUFDO0lBQUEsRUFBQyxDQUFDLEVBQUU4QyxJQUFJLENBQUMsQ0FBQztFQUMxRyxDQUFDLEVBQUUsQ0FBQ2YsV0FBVyxDQUFDLENBQUM7RUFFakIsT0FBT3hFLE9BQU8sQ0FDWjtJQUFBLE9BQU87TUFBRStELFFBQVEsRUFBUkEsUUFBUTtNQUFFSSxTQUFTLEVBQVRBLFNBQVM7TUFBRVcsUUFBUSxFQUFSQSxRQUFRO01BQUVULFdBQVcsRUFBWEE7SUFBWSxDQUFDO0VBQUEsQ0FBQyxFQUN0RCxDQUFDTixRQUFRLEVBQUVJLFNBQVMsRUFBRVcsUUFBUSxFQUFFVCxXQUFXLENBQzdDLENBQUM7QUFDSCxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTW1CLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUFDLEtBQUEsRUFLMkI7RUFBQSxJQUp2REMsU0FBUyxHQUFBRCxLQUFBLENBQVRDLFNBQVM7SUFDVEMsZ0JBQWdCLEdBQUFGLEtBQUEsQ0FBaEJFLGdCQUFnQjtJQUNoQkMsWUFBWSxHQUFBSCxLQUFBLENBQVpHLFlBQVk7SUFDWkMsY0FBYyxHQUFBSixLQUFBLENBQWRJLGNBQWM7RUFFZCxJQUFBQyxLQUFBLEdBQWN2RixJQUFJLENBQUMsQ0FBQztJQUFad0YsQ0FBQyxHQUFBRCxLQUFBLENBQURDLENBQUM7RUFDVCxJQUFNQyxLQUFLLEdBQUdwRixRQUFRLENBQUMsQ0FBQztFQUN4QixJQUFBcUYscUJBQUEsR0FBc0N4RixzQkFBc0IsQ0FBQ21GLFlBQVksQ0FBQztJQUFsRXZFLFlBQVksR0FBQTRFLHFCQUFBLENBQVo1RSxZQUFZO0lBQUVDLFdBQVcsR0FBQTJFLHFCQUFBLENBQVgzRSxXQUFXO0VBQ2pDLElBQU00RSxvQkFBb0IsR0FBRzdGLHNCQUFzQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7RUFDcEUsSUFBQThGLFNBQUEsR0FBb0NqRyxRQUFRLENBQW9Cb0IsV0FBVyxDQUFDO0lBQUE4RSxVQUFBLEdBQUFoRSxjQUFBLENBQUErRCxTQUFBO0lBQXJFRSxVQUFVLEdBQUFELFVBQUE7SUFBRUUsYUFBYSxHQUFBRixVQUFBO0VBQ2hDLElBQUFHLFVBQUEsR0FBc0NyRyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQUFzRyxVQUFBLEdBQUFwRSxjQUFBLENBQUFtRSxVQUFBO0lBQTlDRSxXQUFXLEdBQUFELFVBQUE7SUFBRUUsY0FBYyxHQUFBRixVQUFBO0VBQ2xDLElBQUFHLFVBQUEsR0FBb0N6RyxRQUFRLENBQWtEO01BQzVGMEcsTUFBTSxFQUFFLENBQUM7TUFDVEMsSUFBSSxFQUFFLENBQUM7TUFDUEMsS0FBSyxFQUFFO0lBQ1QsQ0FBQyxDQUFDO0lBQUFDLFVBQUEsR0FBQTNFLGNBQUEsQ0FBQXVFLFVBQUE7SUFKS0ssVUFBVSxHQUFBRCxVQUFBO0lBQUVFLGFBQWEsR0FBQUYsVUFBQTtFQUtoQyxJQUFBRyxVQUFBLEdBQXNDaEgsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUFBaUgsVUFBQSxHQUFBL0UsY0FBQSxDQUFBOEUsVUFBQTtJQUExQ0UsV0FBVyxHQUFBRCxVQUFBO0lBQUVFLGNBQWMsR0FBQUYsVUFBQTtFQUNsQyxJQUFBRyxVQUFBLEdBQXNEcEgsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBcUgsVUFBQSxHQUFBbkYsY0FBQSxDQUFBa0YsVUFBQTtJQUE5REUsbUJBQW1CLEdBQUFELFVBQUE7SUFBRUUsc0JBQXNCLEdBQUFGLFVBQUE7RUFDbEQsSUFBTUcsY0FBYyxHQUFHekgsTUFBTSxDQUFDLEtBQUssQ0FBQztFQUNwQyxJQUFNMEgsVUFBVSxHQUFHMUgsTUFBTSxDQUF3QixJQUFJLENBQUM7RUFDdEQsSUFBTTJILFlBQVksR0FBR2xILGdCQUFnQixDQUFDLENBQUM7RUFFdkMsSUFBTW1ILEtBQUssR0FBRzlFLGVBQWUsQ0FBQyxDQUFDO0VBQy9CLElBQUErRSxnQkFBQSxHQUNFdEgsZUFBZSxDQUFDNkYsVUFBVSxFQUFFd0IsS0FBSyxDQUFDO0lBRDVCRSxLQUFLLEdBQUFELGdCQUFBLENBQUxDLEtBQUs7SUFBRUMsT0FBTyxHQUFBRixnQkFBQSxDQUFQRSxPQUFPO0lBQUVDLEtBQUssR0FBQUgsZ0JBQUEsQ0FBTEcsS0FBSztJQUFFQyxnQkFBZ0IsR0FBQUosZ0JBQUEsQ0FBaEJJLGdCQUFnQjtJQUFFQyxPQUFPLEdBQUFMLGdCQUFBLENBQVBLLE9BQU87SUFBRUMsYUFBYSxHQUFBTixnQkFBQSxDQUFiTSxhQUFhO0lBQUVDLFFBQVEsR0FBQVAsZ0JBQUEsQ0FBUk8sUUFBUTtJQUFFQyxXQUFXLEdBQUFSLGdCQUFBLENBQVhRLFdBQVc7SUFBRUMsaUJBQWlCLEdBQUFULGdCQUFBLENBQWpCUyxpQkFBaUI7RUFHakh4SSxTQUFTLENBQUMsWUFBTTtJQUNkLElBQUksQ0FBQ3NCLFlBQVksQ0FBQ2lCLFFBQVEsQ0FBQytELFVBQVUsQ0FBQyxFQUFFO01BQ3RDQyxhQUFhLENBQUNoRixXQUFXLENBQUM7SUFDNUI7RUFDRixDQUFDLEVBQUUsQ0FBQ0QsWUFBWSxFQUFFZ0YsVUFBVSxFQUFFL0UsV0FBVyxDQUFDLENBQUM7RUFFM0MsSUFBTWtILGVBQWUsR0FBRzFJLFdBQVcsQ0FBQyxZQUFNO0lBQUEsSUFBQTJJLHFCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLGtCQUFBLEVBQUFDLHNCQUFBO0lBQ3hDLElBQU1DLFVBQVUsR0FBR2xELGdCQUFnQixhQUFoQkEsZ0JBQWdCLGdCQUFBOEMscUJBQUEsR0FBaEI5QyxnQkFBZ0IsQ0FBRW1ELE9BQU8sY0FBQUwscUJBQUEsdUJBQXpCQSxxQkFBQSxDQUEyQk0scUJBQXFCLENBQUMsQ0FBQztJQUNyRSxJQUFNQyxVQUFVLElBQUFOLHFCQUFBLElBQUFDLGtCQUFBLEdBQUdqRCxTQUFTLENBQUNvRCxPQUFPLGNBQUFILGtCQUFBLGdCQUFBQyxzQkFBQSxHQUFqQkQsa0JBQUEsQ0FBbUJNLG1CQUFtQixjQUFBTCxzQkFBQSx1QkFBdENBLHNCQUFBLENBQUFNLElBQUEsQ0FBQVAsa0JBQXlDLENBQUMsY0FBQUQscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxJQUFJO0lBQ3JFLElBQU1TLElBQUksR0FBR04sVUFBVSxhQUFWQSxVQUFVLGNBQVZBLFVBQVUsR0FBSUcsVUFBVTtJQUNyQyxJQUFJLENBQUNHLElBQUksSUFBSUEsSUFBSSxDQUFDckMsS0FBSyxJQUFJLENBQUMsRUFBRTtNQUM1QixJQUFNc0MsS0FBSyxHQUFHeEIsWUFBWSxDQUFDLENBQUM7TUFDNUIsSUFBSSxDQUFDd0IsS0FBSyxFQUFFO01BQ1osSUFBTUMsVUFBUyxHQUFHQyxNQUFNLENBQUNDLFdBQVc7TUFDcEMsSUFBTUMsVUFBUyxHQUFHRixNQUFNLENBQUNHLFVBQVU7TUFDbkMsSUFBTUMsU0FBUyxHQUFHLEdBQUc7TUFDckIsSUFBTTdDLEtBQUksR0FBR2xGLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRUQsSUFBSSxDQUFDYSxHQUFHLENBQUNnSCxVQUFTLEdBQUdFLFNBQVMsR0FBRyxDQUFDLEVBQUVOLEtBQUssQ0FBQ3ZDLElBQUksQ0FBQyxDQUFDO01BQ3pFSSxhQUFhLENBQUM7UUFDWkgsS0FBSyxFQUFFNEMsU0FBUztRQUNoQjdDLElBQUksRUFBSkEsS0FBSTtRQUNKRCxNQUFNLEVBQUV5QyxVQUFTLEdBQUdELEtBQUssQ0FBQ08sR0FBRyxHQUFHO01BQ2xDLENBQUMsQ0FBQztNQUNGO0lBQ0Y7SUFFQSxJQUFNSCxTQUFTLEdBQUdGLE1BQU0sQ0FBQ0csVUFBVTtJQUNuQyxJQUFNSixTQUFTLEdBQUdDLE1BQU0sQ0FBQ0MsV0FBVztJQUNwQyxJQUFRekMsS0FBSyxHQUFLcUMsSUFBSSxDQUFkckMsS0FBSztJQUNiLElBQU1ELElBQUksR0FBR2xGLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRUQsSUFBSSxDQUFDYSxHQUFHLENBQUNnSCxTQUFTLEdBQUcxQyxLQUFLLEdBQUcsQ0FBQyxFQUFFcUMsSUFBSSxDQUFDdEMsSUFBSSxDQUFDLENBQUM7SUFDcEU7SUFDQUksYUFBYSxDQUFDO01BQ1pILEtBQUssRUFBTEEsS0FBSztNQUNMRCxJQUFJLEVBQUpBLElBQUk7TUFDSkQsTUFBTSxFQUFFeUMsU0FBUyxHQUFHRixJQUFJLENBQUNRLEdBQUcsR0FBRztJQUNqQyxDQUFDLENBQUM7RUFDSixDQUFDLEVBQUUsQ0FBQ2hFLGdCQUFnQixFQUFFRCxTQUFTLEVBQUVrQyxZQUFZLENBQUMsQ0FBQztFQUUvQyxJQUFNZ0Msd0JBQXdCLEdBQUc5SixXQUFXLENBQUMsWUFBTTtJQUNqRDRILGNBQWMsQ0FBQ29CLE9BQU8sR0FBRyxLQUFLO0VBQ2hDLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixJQUFNZSxLQUFLLEdBQUcvSixXQUFXLENBQUMsWUFBTTtJQUM5QjRHLGNBQWMsQ0FBQyxLQUFLLENBQUM7SUFDckI2QixpQkFBaUIsQ0FBQyxFQUFFLENBQUM7RUFDdkIsQ0FBQyxFQUFFLENBQUNBLGlCQUFpQixDQUFDLENBQUM7RUFFdkIsSUFBTXVCLGFBQWEsR0FBR2hLLFdBQVcsQ0FDL0IsVUFBQ2lLLE9BQWdFLEVBQUs7SUFDcEUsSUFBSTFJLFlBQVksQ0FBQ29CLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDN0IsSUFBSWdFLFdBQVcsRUFBRW9ELEtBQUssQ0FBQyxDQUFDO01BQ3hCO0lBQ0Y7SUFFQSxJQUFJRSxPQUFPLENBQUNDLE1BQU0sRUFBRTtNQUNsQjtNQUNBO01BQ0E7TUFDQSxJQUFNQyxlQUFlLEdBQUd0SSxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEVBQUVtSSxPQUFPLENBQUMzSSxXQUFXLEdBQUdDLFlBQVksQ0FBQ29CLE1BQU0sQ0FBQztNQUM5RSxJQUFNeUgsb0JBQW9CLEdBQUd2SSxJQUFJLENBQUNhLEdBQUcsQ0FBQ3VILE9BQU8sQ0FBQzNJLFdBQVcsRUFBRUMsWUFBWSxDQUFDb0IsTUFBTSxDQUFDO01BQy9FLElBQU0wSCxjQUFjLE1BQUFDLE1BQUEsQ0FBTSxHQUFHLENBQUNDLE1BQU0sQ0FBQ0osZUFBZSxDQUFDLEVBQUFHLE1BQUEsQ0FBR0wsT0FBTyxDQUFDTyxLQUFLLENBQUU7TUFDdkUsSUFBTUMsVUFBVSxHQUFHcEosMEJBQTBCLENBQUMrSSxvQkFBb0IsRUFBRTdJLFlBQVksRUFBRUMsV0FBVyxDQUFDO01BRTlGLElBQUksQ0FBQ21GLFdBQVcsRUFBRTtRQUNoQkMsY0FBYyxDQUFDLElBQUksQ0FBQztRQUNwQkosYUFBYSxDQUFDaUUsVUFBVSxDQUFDO1FBQ3pCL0IsZUFBZSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDZCxjQUFjLENBQUNvQixPQUFPLEVBQUU7VUFDM0I5QyxLQUFLLENBQUNyRixNQUFNLENBQUM2SixpQkFBaUIsRUFBRTtZQUFFN0gsSUFBSSxFQUFFNEg7VUFBVyxDQUFDLENBQUM7VUFDckQ3QyxjQUFjLENBQUNvQixPQUFPLEdBQUcsSUFBSTtRQUMvQjtNQUNGLENBQUMsTUFBTTtRQUNMeEMsYUFBYSxDQUFDaUUsVUFBVSxDQUFDO1FBQ3pCL0IsZUFBZSxDQUFDLENBQUM7TUFDbkI7TUFDQUQsaUJBQWlCLENBQUM0QixjQUFjLENBQUM7SUFDbkMsQ0FBQyxNQUFNLElBQUkxRCxXQUFXLEVBQUU7TUFDdEJvRCxLQUFLLENBQUMsQ0FBQztJQUNUO0VBQ0YsQ0FBQyxFQUNELENBQUN4SSxZQUFZLEVBQUVDLFdBQVcsRUFBRW1GLFdBQVcsRUFBRStCLGVBQWUsRUFBRUQsaUJBQWlCLEVBQUV2QyxLQUFLLEVBQUU2RCxLQUFLLENBQzNGLENBQUM7RUFFRCxJQUFNWSxrQkFBa0IsR0FBRzNLLFdBQVcsQ0FDcEMsVUFBQzRLLElBQXdCLEVBQUs7SUFBQSxJQUFBQyxrQkFBQSxFQUFBQyxvQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxlQUFBLEVBQUFDLGtCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLGNBQUEsRUFBQUMsaUJBQUEsRUFBQUMscUJBQUEsRUFBQUMsZUFBQSxFQUFBQyxtQkFBQTtJQUM1QixJQUFNQyxPQUF1QixHQUFHO01BQzlCdEgsRUFBRSxFQUFFeUcsSUFBSSxDQUFDekcsRUFBRTtNQUNYdEIsSUFBSSxFQUFFK0gsSUFBSSxDQUFDL0gsSUFBSTtNQUNmNkksS0FBSyxFQUFFZCxJQUFJLENBQUNlLE9BQU87TUFDbkJDLFFBQVEsRUFBRTtRQUNSM0gsUUFBUSxHQUFBNEcsa0JBQUEsR0FBRUQsSUFBSSxDQUFDekYsR0FBRyxDQUFDbEIsUUFBUSxjQUFBNEcsa0JBQUEsY0FBQUEsa0JBQUEsR0FBSSxJQUFJO1FBQ25DZ0IsVUFBVSxHQUFBZixvQkFBQSxHQUFFRixJQUFJLENBQUN6RixHQUFHLENBQUMwRyxVQUFVLGNBQUFmLG9CQUFBLGNBQUFBLG9CQUFBLEdBQUksSUFBSTtRQUN2Q2dCLFdBQVcsR0FBQWYscUJBQUEsR0FBRUgsSUFBSSxDQUFDekYsR0FBRyxDQUFDMkcsV0FBVyxjQUFBZixxQkFBQSxjQUFBQSxxQkFBQSxHQUFJLElBQUk7UUFDekNnQixLQUFLLEdBQUFmLGVBQUEsR0FBRUosSUFBSSxDQUFDekYsR0FBRyxDQUFDNEcsS0FBSyxjQUFBZixlQUFBLGNBQUFBLGVBQUEsR0FBSSxJQUFJO1FBQzdCZ0IsUUFBUSxHQUFBZixrQkFBQSxHQUFFTCxJQUFJLENBQUN6RixHQUFHLENBQUM2RyxRQUFRLGNBQUFmLGtCQUFBLGNBQUFBLGtCQUFBLEdBQUksSUFBSTtRQUNuQ2dCLFdBQVcsR0FBQWYscUJBQUEsR0FBRU4sSUFBSSxDQUFDekYsR0FBRyxDQUFDOEcsV0FBVyxjQUFBZixxQkFBQSxjQUFBQSxxQkFBQSxHQUFJLElBQUk7UUFDekNnQixjQUFjLEdBQUFmLHFCQUFBLEdBQUVQLElBQUksQ0FBQ3pGLEdBQUcsQ0FBQytHLGNBQWMsY0FBQWYscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxJQUFJO1FBQy9DZ0IsSUFBSSxHQUFBZixjQUFBLEdBQUVSLElBQUksQ0FBQ3pGLEdBQUcsQ0FBQ2dILElBQUksY0FBQWYsY0FBQSxjQUFBQSxjQUFBLEdBQUksSUFBSTtRQUMzQmdCLE9BQU8sR0FBQWYsaUJBQUEsR0FBRVQsSUFBSSxDQUFDekYsR0FBRyxDQUFDaUgsT0FBTyxjQUFBZixpQkFBQSxjQUFBQSxpQkFBQSxHQUFJLElBQUk7UUFDakNnQixZQUFZLEdBQUFmLHFCQUFBLEdBQUVWLElBQUksQ0FBQ3pGLEdBQUcsQ0FBQ2tILFlBQVksY0FBQWYscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxJQUFJO1FBQzNDZ0IsS0FBSyxHQUFBZixlQUFBLEdBQUVYLElBQUksQ0FBQ3pGLEdBQUcsQ0FBQ21ILEtBQUssY0FBQWYsZUFBQSxjQUFBQSxlQUFBLEdBQUk7TUFDM0I7SUFDRixDQUFDO0lBQ0QsQ0FBQUMsbUJBQUEsR0FBQTVGLFNBQVMsQ0FBQ29ELE9BQU8sY0FBQXdDLG1CQUFBLGVBQWpCQSxtQkFBQSxDQUFtQmUsYUFBYSxDQUFDZCxPQUFPLENBQUM7SUFDekMxRixjQUFjLGFBQWRBLGNBQWMsZUFBZEEsY0FBYyxDQUFHMEYsT0FBTyxDQUFDO0lBQ3pCdkYsS0FBSyxDQUFDckYsTUFBTSxDQUFDMkwsbUJBQW1CLEVBQUU7TUFBRTNKLElBQUksRUFBRTRJLE9BQU8sQ0FBQzVJLElBQUk7TUFBRXNCLEVBQUUsRUFBRXNJLE1BQU0sQ0FBQ2hCLE9BQU8sQ0FBQ3RILEVBQUU7SUFBRSxDQUFDLENBQUM7SUFDakY0RixLQUFLLENBQUMsQ0FBQztFQUNULENBQUMsRUFDRCxDQUFDbkUsU0FBUyxFQUFFRyxjQUFjLEVBQUVHLEtBQUssRUFBRTZELEtBQUssQ0FDMUMsQ0FBQztFQUVELElBQU0yQyxnQkFBZ0IsR0FBRzFNLFdBQVcsQ0FDbEMsVUFBQzZDLElBQXVCLEVBQUs7SUFBQSxJQUFBOEosbUJBQUE7SUFDM0JuRyxhQUFhLENBQUMzRCxJQUFJLENBQUM7SUFDbkIsSUFBTStKLGFBQWEsR0FBR2hLLDBCQUEwQixDQUFDQyxJQUFJLEVBQUV0QixZQUFZLENBQUM7SUFDcEUsQ0FBQW9MLG1CQUFBLEdBQUEvRyxTQUFTLENBQUNvRCxPQUFPLGNBQUEyRCxtQkFBQSxlQUFqQkEsbUJBQUEsQ0FBbUJFLHNCQUFzQixDQUFDRCxhQUFhLENBQUM7SUFDeEQxRyxLQUFLLENBQUNyRixNQUFNLENBQUNpTSx1QkFBdUIsRUFBRTtNQUFFakssSUFBSSxFQUFKQTtJQUFLLENBQUMsQ0FBQztFQUNqRCxDQUFDLEVBQ0QsQ0FBQ3RCLFlBQVksRUFBRXFFLFNBQVMsRUFBRU0sS0FBSyxDQUNqQyxDQUFDO0VBRUQsSUFBTTZHLGFBQWEsR0FBRy9NLFdBQVcsQ0FDL0IsVUFBQ2dOLENBQWdDLEVBQWM7SUFDN0MsSUFBSSxDQUFDckcsV0FBVyxJQUFJcEYsWUFBWSxDQUFDb0IsTUFBTSxLQUFLLENBQUMsRUFBRSxPQUFPLEtBQUs7SUFFM0QsSUFBSXFLLENBQUMsQ0FBQ0MsR0FBRyxLQUFLLFFBQVEsRUFBRTtNQUN0QkQsQ0FBQyxDQUFDRSxjQUFjLENBQUMsQ0FBQztNQUNsQm5ELEtBQUssQ0FBQyxDQUFDO01BQ1AsT0FBTyxJQUFJO0lBQ2I7SUFFQSxJQUFJLENBQUNpRCxDQUFDLENBQUNDLEdBQUcsS0FBSyxZQUFZLElBQUlELENBQUMsQ0FBQ0MsR0FBRyxLQUFLLFdBQVcsTUFBTUQsQ0FBQyxDQUFDRyxPQUFPLElBQUlILENBQUMsQ0FBQ0ksTUFBTSxDQUFDLEVBQUU7TUFDaEZKLENBQUMsQ0FBQ0UsY0FBYyxDQUFDLENBQUM7TUFDbEIsSUFBTW5LLEdBQUcsR0FBR3hCLFlBQVksQ0FBQ3lCLE9BQU8sQ0FBQ3VELFVBQVUsQ0FBQztNQUM1QyxJQUFNOEcsS0FBSyxHQUFHTCxDQUFDLENBQUNDLEdBQUcsS0FBSyxZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztNQUM3QyxJQUFNSyxPQUFPLEdBQUcsQ0FBQ3ZLLEdBQUcsR0FBR3NLLEtBQUssR0FBRzlMLFlBQVksQ0FBQ29CLE1BQU0sSUFBSXBCLFlBQVksQ0FBQ29CLE1BQU07TUFDekUrSixnQkFBZ0IsQ0FBQ25MLFlBQVksQ0FBQytMLE9BQU8sQ0FBQyxDQUFDO01BQ3ZDLE9BQU8sSUFBSTtJQUNiO0lBRUEsSUFBSXJGLEtBQUssQ0FBQ3RGLE1BQU0sS0FBSyxDQUFDLEVBQUUsT0FBTyxLQUFLO0lBRXBDLElBQUlxSyxDQUFDLENBQUNDLEdBQUcsS0FBSyxXQUFXLEVBQUU7TUFDekJELENBQUMsQ0FBQ0UsY0FBYyxDQUFDLENBQUM7TUFDbEJ2RixzQkFBc0IsQ0FBQyxJQUFJLENBQUM7TUFDNUJKLGNBQWMsQ0FBQyxVQUFBZ0csSUFBSTtRQUFBLE9BQUt0RixLQUFLLENBQUN0RixNQUFNLEdBQUcsQ0FBQyxHQUFHZCxJQUFJLENBQUNhLEdBQUcsQ0FBQzZLLElBQUksR0FBRyxDQUFDLEVBQUV0RixLQUFLLENBQUN0RixNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztNQUFBLENBQUMsQ0FBQztNQUNyRixPQUFPLElBQUk7SUFDYjtJQUNBLElBQUlxSyxDQUFDLENBQUNDLEdBQUcsS0FBSyxTQUFTLEVBQUU7TUFDdkJELENBQUMsQ0FBQ0UsY0FBYyxDQUFDLENBQUM7TUFDbEJ2RixzQkFBc0IsQ0FBQyxJQUFJLENBQUM7TUFDNUJKLGNBQWMsQ0FBQyxVQUFBZ0csSUFBSTtRQUFBLE9BQUkxTCxJQUFJLENBQUNDLEdBQUcsQ0FBQ3lMLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO01BQUEsRUFBQztNQUM3QyxPQUFPLElBQUk7SUFDYjtJQUNBLElBQUlQLENBQUMsQ0FBQ0MsR0FBRyxLQUFLLE9BQU8sSUFBSUQsQ0FBQyxDQUFDQyxHQUFHLEtBQUssS0FBSyxFQUFFO01BQ3hDRCxDQUFDLENBQUNFLGNBQWMsQ0FBQyxDQUFDO01BQ2xCdkMsa0JBQWtCLENBQUMxQyxLQUFLLENBQUNYLFdBQVcsQ0FBQyxDQUFDO01BQ3RDLE9BQU8sSUFBSTtJQUNiO0lBQ0EsT0FBTyxLQUFLO0VBQ2QsQ0FBQyxFQUNELENBQUNYLFdBQVcsRUFBRXNCLEtBQUssRUFBRTFHLFlBQVksRUFBRWdGLFVBQVUsRUFBRWUsV0FBVyxFQUFFcUQsa0JBQWtCLEVBQUVaLEtBQUssRUFBRTJDLGdCQUFnQixDQUN6RyxDQUFDO0VBRUR6TSxTQUFTLENBQUMsWUFBTTtJQUNkLElBQUksQ0FBQzBHLFdBQVcsRUFBRSxPQUFPNkcsU0FBUztJQUNsQyxJQUFNQyxPQUFPLEdBQUcsU0FBVkEsT0FBT0EsQ0FBQTtNQUFBLE9BQVMvRSxlQUFlLENBQUMsQ0FBQztJQUFBO0lBQ3ZDYyxNQUFNLENBQUNrRSxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUVELE9BQU8sRUFBRSxJQUFJLENBQUM7SUFDaERqRSxNQUFNLENBQUNrRSxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUVELE9BQU8sQ0FBQztJQUMxQyxPQUFPLFlBQU07TUFDWGpFLE1BQU0sQ0FBQ21FLG1CQUFtQixDQUFDLFFBQVEsRUFBRUYsT0FBTyxFQUFFLElBQUksQ0FBQztNQUNuRGpFLE1BQU0sQ0FBQ21FLG1CQUFtQixDQUFDLFFBQVEsRUFBRUYsT0FBTyxDQUFDO0lBQy9DLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQzlHLFdBQVcsRUFBRStCLGVBQWUsQ0FBQyxDQUFDO0VBRWxDekksU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJLENBQUMwRyxXQUFXLEVBQUUsT0FBTzZHLFNBQVM7SUFFbEMsSUFBTUksd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUF3QkEsQ0FBSUMsVUFBc0IsRUFBSztNQUFBLElBQUFDLG1CQUFBO01BQzNELElBQU1DLE1BQU0sR0FBR0YsVUFBVSxDQUFDRSxNQUFxQjtNQUMvQyxJQUFJLENBQUNBLE1BQU0sRUFBRTtNQUNiLEtBQUFELG1CQUFBLEdBQUlqRyxVQUFVLENBQUNtQixPQUFPLGNBQUE4RSxtQkFBQSxlQUFsQkEsbUJBQUEsQ0FBb0JFLFFBQVEsQ0FBQ0QsTUFBTSxDQUFDLEVBQUU7TUFDMUNoRSxLQUFLLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRGtFLFFBQVEsQ0FBQ1AsZ0JBQWdCLENBQUMsV0FBVyxFQUFFRSx3QkFBd0IsQ0FBQztJQUNoRSxPQUFPO01BQUEsT0FBTUssUUFBUSxDQUFDTixtQkFBbUIsQ0FBQyxXQUFXLEVBQUVDLHdCQUF3QixDQUFDO0lBQUE7RUFDbEYsQ0FBQyxFQUFFLENBQUNqSCxXQUFXLEVBQUVvRCxLQUFLLENBQUMsQ0FBQztFQUV4QixJQUFNbUUsb0JBQW9CLEdBQUcvTixNQUFNLENBQUMsS0FBSyxDQUFDO0VBQzFDRixTQUFTLENBQUMsWUFBTTtJQUNkLE9BQU8sWUFBTTtNQUNYaU8sb0JBQW9CLENBQUNsRixPQUFPLEdBQUdWLGFBQWE7SUFDOUMsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDQSxhQUFhLENBQUMsQ0FBQztFQUVuQnJJLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSWlPLG9CQUFvQixDQUFDbEYsT0FBTyxFQUFFO0lBQ2xDekIsY0FBYyxDQUFDLENBQUMsQ0FBQztFQUNuQixDQUFDLEVBQUUsQ0FBQ1UsS0FBSyxDQUFDdEYsTUFBTSxFQUFFNEQsVUFBVSxDQUFDLENBQUM7RUFFOUIsSUFBTTRILFdBQVcsR0FBR2pPLE9BQU8sQ0FBbUIsWUFBTTtJQUNsRCxJQUFJLENBQUN5RyxXQUFXLEVBQUUsT0FBTyxJQUFJO0lBQzdCLG9CQUNFM0YsSUFBQSxDQUFDVixVQUFVO01BQ1Q4TixPQUFPLEVBQUVsSCxVQUFVLENBQUNKLE1BQU87TUFDM0J1SCxLQUFLLEVBQUVuSCxVQUFVLENBQUNILElBQUs7TUFDdkJ1SCxNQUFNLEVBQUVwSCxVQUFVLENBQUNGLEtBQU07TUFDekJ1SCxPQUFPLEVBQUVuSSxvQkFBcUI7TUFBQW9JLFFBQUEsZUFFOUJ4TixJQUFBLENBQUNYLHFCQUFxQjtRQUNwQm9PLEdBQUcsRUFBRTVHLFVBQVc7UUFDaEJ0RyxZQUFZLEVBQUVBLFlBQWE7UUFDM0JnRixVQUFVLEVBQUVBLFVBQVc7UUFDdkJtSSxZQUFZLEVBQUVoQyxnQkFBaUI7UUFDL0J6RSxLQUFLLEVBQUVBLEtBQU07UUFDYkMsT0FBTyxFQUFFQSxPQUFRO1FBQ2pCQyxLQUFLLEVBQUVBLEtBQU07UUFDYkMsZ0JBQWdCLEVBQUVBLGdCQUFpQjtRQUNuQ0MsT0FBTyxFQUFFQSxPQUFRO1FBQ2pCQyxhQUFhLEVBQUVBLGFBQWM7UUFDN0JxRyxjQUFjLEVBQUVwRyxRQUFTO1FBQ3pCQyxXQUFXLEVBQUVBLFdBQVk7UUFDekJvRyxZQUFZLEVBQUUzSSxDQUFDLENBQUMsNkJBQTZCLEVBQUU7VUFDN0M0SSxZQUFZLEVBQUU7UUFDaEIsQ0FBQyxDQUFFO1FBQ0hDLGNBQWMsRUFBRW5FLGtCQUFtQjtRQUNuQ3JELFdBQVcsRUFBRUEsV0FBWTtRQUN6QnlILG1CQUFtQixFQUFFeEgsY0FBZTtRQUNwQ0csbUJBQW1CLEVBQUVBLG1CQUFvQjtRQUN6Q3NILGlCQUFpQixFQUFFLFNBQW5CQSxpQkFBaUJBLENBQUE7VUFBQSxPQUFRckgsc0JBQXNCLENBQUMsS0FBSyxDQUFDO1FBQUE7TUFBQyxDQUN4RDtJQUFDLENBQ1EsQ0FBQztFQUVqQixDQUFDLEVBQUUsQ0FDRGhCLFdBQVcsRUFDWE8sVUFBVSxFQUNWZCxvQkFBb0IsRUFDcEI3RSxZQUFZLEVBQ1pnRixVQUFVLEVBQ1ZtRyxnQkFBZ0IsRUFDaEJ6RSxLQUFLLEVBQ0xDLE9BQU8sRUFDUEMsS0FBSyxFQUNMQyxnQkFBZ0IsRUFDaEJDLE9BQU8sRUFDUEMsYUFBYSxFQUNiQyxRQUFRLEVBQ1JDLFdBQVcsRUFDWG1DLGtCQUFrQixFQUNsQnJELFdBQVcsRUFDWEksbUJBQW1CLENBQ3BCLENBQUM7RUFFRixPQUFPO0lBQUVmLFdBQVcsRUFBWEEsV0FBVztJQUFFbUQsd0JBQXdCLEVBQXhCQSx3QkFBd0I7SUFBRUUsYUFBYSxFQUFiQSxhQUFhO0lBQUUrQyxhQUFhLEVBQWJBLGFBQWE7SUFBRW9CLFdBQVcsRUFBWEEsV0FBVztJQUFFcEUsS0FBSyxFQUFMQTtFQUFNLENBQUM7QUFDcEcsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==