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

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 (40) 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.js +6 -2
  4. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +9 -4
  5. package/lib/components/atoms/ContextMentionPopover/index.js +2 -2
  6. package/lib/components/atoms/MAIAInput/MAIAInput.js +8 -12
  7. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.js +6 -1
  8. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.styles.js +5 -2
  9. package/lib/components/atoms/VideoModal/VideoModal.js +13 -6
  10. package/lib/components/atoms/index.js +1 -2
  11. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +2 -28
  12. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +9 -18
  13. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +2 -4
  14. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +3 -2
  15. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +3 -2
  16. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +4 -2
  17. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.js +4 -2
  18. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +4 -2
  19. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +4 -2
  20. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.js +4 -2
  21. package/lib/components/organisms/SnackBar/Snackbar.js +4 -1
  22. package/lib/components/organisms/SnackBar/Snackbar.styles.js +5 -2
  23. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.js +4 -2
  24. package/lib/constants/maiaTaskPanelZIndex.js +19 -0
  25. package/lib/hooks/useChatManager/useChatManager.js +35 -84
  26. package/lib/hooks/useMaiaTaskPanelZIndex.js +17 -0
  27. package/lib/hooks/useMentionPopover.js +17 -10
  28. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +80 -176
  29. package/lib/lang/br/index.js +2 -56
  30. package/lib/lang/en/index.js +2 -56
  31. package/lib/lang/es/index.js +2 -56
  32. package/lib/lang/fr/index.js +1 -55
  33. package/package.json +1 -1
  34. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.js +0 -118
  35. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.styles.js +0 -38
  36. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.utils.js +0 -7
  37. package/lib/components/atoms/AgentActivityIndicator/index.js +0 -2
  38. package/lib/types/streamActivity.js +0 -2
  39. package/lib/utils/sseStreamContent.js +0 -17
  40. 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,11 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
1
2
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
3
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3
6
  import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
- import { ContextMentionPopover, MAIA_TASK_PANEL_MENTION_POPOVER_Z_INDEX, SCMPAnchor } from '../components/atoms/ContextMentionPopover';
7
+ import { ContextMentionPopover, MAIA_MENTION_POPOVER_ATTR, SCMPAnchor } from '../components/atoms/ContextMentionPopover';
8
+ import { useMaiaTaskPanelZIndex } from './useMaiaTaskPanelZIndex';
5
9
  import { useGlobalContext } from '../context/global-context';
6
10
  import { useT } from './useT';
7
11
  // eslint-disable-next-line import/no-cycle
@@ -80,12 +84,10 @@ export var useMentionPopover = function useMentionPopover(_ref6) {
80
84
  var _useT = useT(),
81
85
  t = _useT.t;
82
86
  var event = useEvent();
83
- var _useGlobalContext = useGlobalContext(),
84
- section = _useGlobalContext.section;
85
87
  var _useMentionAllowedTyp = useMentionAllowedTypes(enabledTypes),
86
88
  allowedTypes = _useMentionAllowedTyp.allowedTypes,
87
89
  defaultType = _useMentionAllowedTyp.defaultType;
88
- var mentionPopoverZIndex = section === 'task' ? MAIA_TASK_PANEL_MENTION_POPOVER_Z_INDEX : undefined;
90
+ var mentionPopoverZIndex = useMaiaTaskPanelZIndex(1200, 'overlay');
89
91
  var _useState = useState(defaultType),
90
92
  _useState2 = _slicedToArray(_useState, 2),
91
93
  activeType = _useState2[0],
@@ -289,17 +291,18 @@ export var useMentionPopover = function useMentionPopover(_ref6) {
289
291
  useEffect(function () {
290
292
  if (!popoverOpen) return undefined;
291
293
  var handlePointerDownOutside = function handlePointerDownOutside(mouseEvent) {
292
- var _popoverRef$current;
294
+ var _popoverRef$current, _popoverAnchorRef$cur2;
293
295
  var target = mouseEvent.target;
294
296
  if (!target) return;
295
297
  if ((_popoverRef$current = popoverRef.current) !== null && _popoverRef$current !== void 0 && _popoverRef$current.contains(target)) return;
298
+ if (popoverAnchorRef !== null && popoverAnchorRef !== void 0 && (_popoverAnchorRef$cur2 = popoverAnchorRef.current) !== null && _popoverAnchorRef$cur2 !== void 0 && _popoverAnchorRef$cur2.contains(target)) return;
296
299
  close();
297
300
  };
298
301
  document.addEventListener('mousedown', handlePointerDownOutside);
299
302
  return function () {
300
303
  return document.removeEventListener('mousedown', handlePointerDownOutside);
301
304
  };
302
- }, [popoverOpen, close]);
305
+ }, [popoverOpen, close, popoverAnchorRef]);
303
306
  var prevIsLoadingMoreRef = useRef(false);
304
307
  useEffect(function () {
305
308
  return function () {
@@ -312,13 +315,17 @@ export var useMentionPopover = function useMentionPopover(_ref6) {
312
315
  }, [items.length, activeType]);
313
316
  var popoverNode = useMemo(function () {
314
317
  if (!popoverOpen) return null;
315
- return /*#__PURE__*/_jsx(SCMPAnchor, {
318
+ return /*#__PURE__*/_jsx(SCMPAnchor, _objectSpread(_objectSpread({
319
+ ref: popoverRef
320
+ }, _defineProperty({}, MAIA_MENTION_POPOVER_ATTR, '')), {}, {
316
321
  $bottom: popoverPos.bottom,
317
322
  $left: popoverPos.left,
318
323
  $width: popoverPos.width,
319
324
  $zIndex: mentionPopoverZIndex,
325
+ onMouseDown: function onMouseDown(e) {
326
+ return e.stopPropagation();
327
+ },
320
328
  children: /*#__PURE__*/_jsx(ContextMentionPopover, {
321
- ref: popoverRef,
322
329
  allowedTypes: allowedTypes,
323
330
  activeType: activeType,
324
331
  onTypeChange: handleTypeChange,
@@ -341,7 +348,7 @@ export var useMentionPopover = function useMentionPopover(_ref6) {
341
348
  return setIsKeyboardNavActive(false);
342
349
  }
343
350
  })
344
- });
351
+ }));
345
352
  }, [popoverOpen, popoverPos, mentionPopoverZIndex, allowedTypes, activeType, handleTypeChange, items, loading, error, hideRecentsLabel, hasMore, isLoadingMore, loadMore, searchValue, insertSelectedItem, activeIndex, isKeyboardNavActive]);
346
353
  return {
347
354
  popoverOpen: popoverOpen,
@@ -352,4 +359,4 @@ export var useMentionPopover = function useMentionPopover(_ref6) {
352
359
  close: close
353
360
  };
354
361
  };
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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
362
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNvbnRleHRNZW50aW9uUG9wb3ZlciIsIk1BSUFfTUVOVElPTl9QT1BPVkVSX0FUVFIiLCJTQ01QQW5jaG9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VUIiwidXNlRW50aXR5U2VhcmNoIiwidXNlTWVudGlvbkFsbG93ZWRUeXBlcyIsInVzZUNhcmV0UG9zaXRpb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsImpzeCIsIl9qc3giLCJUWVBFX1RPX1RSSUdHRVJfU0VRVUVOQ0UiLCJ1c2VyIiwidGFzayIsInByb2plY3QiLCJnZXRUeXBlRnJvbVRyaWdnZXJTZXF1ZW5jZSIsImF0UnVuTGVuZ3RoIiwiYWxsb3dlZFR5cGVzIiwiZGVmYXVsdFR5cGUiLCJfT2JqZWN0JGVudHJpZXMkZmluZCQiLCJfT2JqZWN0JGVudHJpZXMkZmluZCIsIl9hbGxvd2VkVHlwZXMkdGFiSWR4Iiwibm9ybWFsaXplZCIsIk1hdGgiLCJtYXgiLCJmbG9vciIsIm1hcHBlZFR5cGUiLCJPYmplY3QiLCJlbnRyaWVzIiwiZmluZCIsIl9yZWYiLCJfcmVmMiIsIl9zbGljZWRUb0FycmF5IiwibGVuIiwiaW5jbHVkZXMiLCJ0YWJJZHgiLCJtaW4iLCJsZW5ndGgiLCJnZXRUcmlnZ2VyU2VxdWVuY2VGcm9tVHlwZSIsInR5cGUiLCJtYXBwZWQiLCJpZHgiLCJpbmRleE9mIiwidXNlRGVyaXZlZFNjb3BlIiwiX3JlZjMiLCJfY3R4JGNsaWVudCRpZCIsIl9jdHgkY2xpZW50IiwiX2N0eCRlbnRpdHlWYWx1ZXMiLCJfcmVmNCIsIl9yZWY1IiwiX2N0eCRwcm9qZWN0JGlkIiwiX2N0eCRwcm9qZWN0IiwiX2N0eCRlbnRpdHlWYWx1ZXMyIiwiX2N0eCRjaGlwc1Byb2plY3QiLCJfY3R4JGFnZW50JGVudGl0eSIsIl9jdHgkYWdlbnQiLCJfY3R4JGFnZW50JGNvbm5lY3RvcnMiLCJfY3R4JGFnZW50MiIsImN0eCIsImNsaWVudElkIiwiY2xpZW50IiwiaWQiLCJlbnRpdHlWYWx1ZXMiLCJwcm9qZWN0SWQiLCJjaGlwc1Byb2plY3QiLCJhZ2VudEVudGl0eSIsImFnZW50IiwiZW50aXR5IiwibWNwU2x1Z3NLZXkiLCJjb25uZWN0b3JzIiwiYyIsImdyb3VwIiwic2x1Z3MiLCJqb2luIiwibWNwU2x1Z3MiLCJfY3R4JGFnZW50JGNvbm5lY3RvcnMyIiwiX2N0eCRhZ2VudDMiLCJyYXciLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJTZXQiLCJmaWx0ZXIiLCJzIiwidHJpbSIsInNvcnQiLCJ1c2VNZW50aW9uUG9wb3ZlciIsIl9yZWY2IiwiZWRpdG9yUmVmIiwicG9wb3ZlckFuY2hvclJlZiIsImVuYWJsZWRUeXBlcyIsIm9uTWVudGlvbkFkZGVkIiwiX3VzZVQiLCJ0IiwiZXZlbnQiLCJfdXNlTWVudGlvbkFsbG93ZWRUeXAiLCJtZW50aW9uUG9wb3ZlclpJbmRleCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJhY3RpdmVUeXBlIiwic2V0QWN0aXZlVHlwZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwicG9wb3Zlck9wZW4iLCJzZXRQb3BvdmVyT3BlbiIsIl91c2VTdGF0ZTUiLCJib3R0b20iLCJsZWZ0Iiwid2lkdGgiLCJfdXNlU3RhdGU2IiwicG9wb3ZlclBvcyIsInNldFBvcG92ZXJQb3MiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImFjdGl2ZUluZGV4Iiwic2V0QWN0aXZlSW5kZXgiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsImlzS2V5Ym9hcmROYXZBY3RpdmUiLCJzZXRJc0tleWJvYXJkTmF2QWN0aXZlIiwiaGFzRW1pdHRlZE9wZW4iLCJwb3BvdmVyUmVmIiwiZ2V0Q2FyZXRSZWN0Iiwic2NvcGUiLCJfdXNlRW50aXR5U2VhcmNoIiwiaXRlbXMiLCJsb2FkaW5nIiwiZXJyb3IiLCJoaWRlUmVjZW50c0xhYmVsIiwiaGFzTW9yZSIsImlzTG9hZGluZ01vcmUiLCJsb2FkTW9yZSIsInNlYXJjaFZhbHVlIiwidXBkYXRlU2VhcmNoVmFsdWUiLCJwb3NpdGlvblBvcG92ZXIiLCJfcG9wb3ZlckFuY2hvclJlZiRjdXIiLCJfZWRpdG9yUmVmJGN1cnJlbnQkZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQiLCJfZWRpdG9yUmVmJGN1cnJlbnQkZ2UyIiwiZnJvbUFuY2hvciIsImN1cnJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJmcm9tRWRpdG9yIiwiZ2V0RWRpdG9yQ2xpZW50UmVjdCIsImNhbGwiLCJyZWN0IiwiY2FyZXQiLCJ2aWV3cG9ydEgiLCJ3aW5kb3ciLCJpbm5lckhlaWdodCIsInZpZXdwb3J0VyIsImlubmVyV2lkdGgiLCJmYWxsYmFja1ciLCJ0b3AiLCJyZXNldE1lbnRpb25PcGVuVHJhY2tpbmciLCJjbG9zZSIsImhhbmRsZVRyaWdnZXIiLCJ0cmlnZ2VyIiwiYWN0aXZlIiwib3ZlcmZsb3dBdENvdW50IiwiZWZmZWN0aXZlQXRSdW5MZW5ndGgiLCJlZmZlY3RpdmVRdWVyeSIsImNvbmNhdCIsInJlcGVhdCIsInF1ZXJ5IiwidHlwZUZyb21BdCIsImFpQ2hhdE1lbnRpb25PcGVuIiwiaW5zZXJ0U2VsZWN0ZWRJdGVtIiwiaXRlbSIsIl9pdGVtJHJhdyRjbGllbnRJZCIsIl9pdGVtJHJhdyRjbGllbnROYW1lIiwiX2l0ZW0kcmF3JHByb2plY3ROYW1lIiwiX2l0ZW0kcmF3JGZlZUlkIiwiX2l0ZW0kcmF3JGZhdGhlcklkIiwiX2l0ZW0kcmF3JGZhdGhlclRpdGxlIiwiX2l0ZW0kcmF3JHRvdGFsUHJveWVjIiwiX2l0ZW0kcmF3JG5hbWUiLCJfaXRlbSRyYXckcGljdHVyZSIsIl9pdGVtJHJhdyRwb3NpdGlvbk5hbSIsIl9pdGVtJHJhdyRlbWFpbCIsIl9lZGl0b3JSZWYkY3VycmVudDIiLCJtZW50aW9uIiwibGFiZWwiLCJwcmltYXJ5IiwibWV0YWRhdGEiLCJjbGllbnROYW1lIiwicHJvamVjdE5hbWUiLCJmZWVJZCIsImZhdGhlcklkIiwiZmF0aGVyVGl0bGUiLCJ0b3RhbFByb3llY3RvcyIsIm5hbWUiLCJwaWN0dXJlIiwicG9zaXRpb25OYW1lIiwiZW1haWwiLCJpbnNlcnRNZW50aW9uIiwiYWlDaGF0TWVudGlvblNlbGVjdCIsIlN0cmluZyIsImhhbmRsZVR5cGVDaGFuZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQzIiwibmV4dFJ1bkxlbmd0aCIsInN5bmNUcmlnZ2VyQXRSdW5MZW5ndGgiLCJhaUNoYXRNZW50aW9uVHlwZVN3aXRjaCIsImhhbmRsZUtleURvd24iLCJlIiwia2V5IiwicHJldmVudERlZmF1bHQiLCJtZXRhS2V5IiwiYWx0S2V5IiwiZGVsdGEiLCJuZXh0SWR4IiwicHJldiIsInVuZGVmaW5lZCIsImhhbmRsZXIiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSIsIm1vdXNlRXZlbnQiLCJfcG9wb3ZlclJlZiRjdXJyZW50IiwiX3BvcG92ZXJBbmNob3JSZWYkY3VyMiIsInRhcmdldCIsImNvbnRhaW5zIiwiZG9jdW1lbnQiLCJwcmV2SXNMb2FkaW5nTW9yZVJlZiIsInBvcG92ZXJOb2RlIiwiX29iamVjdFNwcmVhZCIsInJlZiIsIl9kZWZpbmVQcm9wZXJ0eSIsIiRib3R0b20iLCIkbGVmdCIsIiR3aWR0aCIsIiR6SW5kZXgiLCJvbk1vdXNlRG93biIsInN0b3BQcm9wYWdhdGlvbiIsImNoaWxkcmVuIiwib25UeXBlQ2hhbmdlIiwib25SZWFjaExpc3RFbmQiLCJrZXlib2FyZEhpbnQiLCJkZWZhdWx0VmFsdWUiLCJvbkl0ZW1TZWxlY3RlZCIsIm9uQWN0aXZlSW5kZXhDaGFuZ2UiLCJvbk1vdXNlTW92ZUluTGlzdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VNZW50aW9uUG9wb3Zlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2V5Ym9hcmRFdmVudCwgUmVhY3ROb2RlLCBSZWZPYmplY3QsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9hdG9tcy9Db250ZXh0TWVudGlvbkVkaXRvcidcbmltcG9ydCB7IENvbnRleHRNZW50aW9uUG9wb3ZlciwgTUFJQV9NRU5USU9OX1BPUE9WRVJfQVRUUiwgU0NNUEFuY2hvciB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvQ29udGV4dE1lbnRpb25Qb3BvdmVyJ1xuaW1wb3J0IHsgdXNlTWFpYVRhc2tQYW5lbFpJbmRleCB9IGZyb20gJy4vdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4vdXNlVCdcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tY3ljbGVcbmltcG9ydCB7IEVudGl0eVNlYXJjaFNjb3BlLCB1c2VFbnRpdHlTZWFyY2ggfSBmcm9tICcuL3VzZUVudGl0eVNlYXJjaCdcbmltcG9ydCB7IHVzZU1lbnRpb25BbGxvd2VkVHlwZXMgfSBmcm9tICcuL3VzZU1lbnRpb25BbGxvd2VkVHlwZXMnXG5pbXBvcnQgeyB1c2VDYXJldFBvc2l0aW9uIH0gZnJvbSAnLi91c2VDYXJldFBvc2l0aW9uJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4vdXNlRXZlbnQnXG5pbXBvcnQgeyBDb250ZXh0RW50aXR5VHlwZSwgQ29udGV4dE1lbnRpb24sIENvbnRleHRNZW50aW9uSXRlbSB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuXG5leHBvcnQgdHlwZSBVc2VNZW50aW9uUG9wb3Zlck9wdGlvbnMgPSB7XG4gIGVkaXRvclJlZjogUmVmT2JqZWN0PENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlPlxuICAvKipcbiAgICogTm9kbyBjdXlvIGFuY2hvIHkgYm9yZGUgc3VwZXJpb3IgZGVmaW5lbiBlbCBwb3BvdmVyIChwLiBlai4gd3JhcHBlciBkZWwgaW5wdXQgZW4gTUFJQSkuXG4gICAqIFNpIG5vIHNlIHBhc2EsIHNlIHVzYSBlbCByZWN0IGRlbCBjb250ZW50ZWRpdGFibGUgKGBnZXRFZGl0b3JDbGllbnRSZWN0YCkuXG4gICAqL1xuICBwb3BvdmVyQW5jaG9yUmVmPzogUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD5cbiAgLyoqIE92ZXJyaWRlIGRlbCBzZXQgZGUgdGFicyBwZXJtaXRpZGFzOyBzaSBubyBzZSBwYXNhIHNlIGRlcml2YSBkZWwgYWdlbnQuICovXG4gIGVuYWJsZWRUeXBlcz86IENvbnRleHRFbnRpdHlUeXBlW11cbiAgLyoqIENhbGxiYWNrIGN1YW5kbyBlbCB1c3VhcmlvIGluc2VydGEgdW5hIG1lbnRpb24gdsOtYSBjbGljay90ZWNsYWRvLiAqL1xuICBvbk1lbnRpb25BZGRlZD86IChtZW50aW9uOiBDb250ZXh0TWVudGlvbikgPT4gdm9pZFxufVxuXG5leHBvcnQgdHlwZSBVc2VNZW50aW9uUG9wb3ZlclJldHVybiA9IHtcbiAgcG9wb3Zlck9wZW46IGJvb2xlYW5cbiAgLyoqXG4gICAqIFJlaW5pY2lhIGVsIHRyYWNraW5nIGRlIGBBSV9DSEFUX01FTlRJT05fT1BFTmAgKHByaW1lcmEgYXBlcnR1cmEgcG9yIG1lbnNhamUpLlxuICAgKiBMbGFtYXIgdHJhcyBlbnZpYXIgZWwgbWVuc2FqZSBvIGFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzbi5cbiAgICovXG4gIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZzogKCkgPT4gdm9pZFxuICAvKiogUHJvY2VzYSBlbCB0cmlnZ2VyIHByb3ZlbmllbnRlIGRlbCBgQ29udGV4dE1lbnRpb25FZGl0b3Iub25JbnB1dGAuICovXG4gIGhhbmRsZVRyaWdnZXI6ICh0cmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZzsgYXRSdW5MZW5ndGg6IG51bWJlciB9KSA9PiB2b2lkXG4gIC8qKlxuICAgKiBNYW5lam8gZGUgdGVjbGFzIHJlbGF0aXZhcyBhbCBwb3BvdmVyIChuYXZlZ2FjacOzbiwgc2VsZWNjacOzbiwgY2FtYmlvIGRlXG4gICAqIHRhYiB5IGVzY2FwZSkuIERldnVlbHZlIGB0cnVlYCBzaSBjb25zdW1pw7MgbGEga2V5LCBwYXJhIHF1ZSBlbCBjb25zdW1lclxuICAgKiBwdWVkYSBkZWNpZGlyIHNpIHNlZ3VpciBwcm9jZXNhbmRvIG90cmFzIHRlY2xhcyAocC5lai4gRW50ZXIgcGFyYSBlbnZpYXIpLlxuICAgKi9cbiAgaGFuZGxlS2V5RG93bjogKGU6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiBib29sZWFuXG4gIC8qKiBOb2RvIGRlbCBwb3BvdmVyOyBlbCBjb25zdW1lciBkZWJlIHBvcnRhcmxvIGNvbiBgY3JlYXRlUG9ydGFsYC4gKi9cbiAgcG9wb3Zlck5vZGU6IFJlYWN0Tm9kZSB8IG51bGxcbiAgLyoqIENpZXJyYSBlbCBwb3BvdmVyIHkgbGltcGlhIGVsIHF1ZXJ5LiAqL1xuICBjbG9zZTogKCkgPT4gdm9pZFxufVxuXG5jb25zdCBUWVBFX1RPX1RSSUdHRVJfU0VRVUVOQ0U6IFBhcnRpYWw8UmVjb3JkPENvbnRleHRFbnRpdHlUeXBlLCBudW1iZXI+PiA9IHtcbiAgdXNlcjogMSxcbiAgdGFzazogMixcbiAgcHJvamVjdDogMyxcbn1cblxuY29uc3QgZ2V0VHlwZUZyb21UcmlnZ2VyU2VxdWVuY2UgPSAoXG4gIGF0UnVuTGVuZ3RoOiBudW1iZXIsXG4gIGFsbG93ZWRUeXBlczogQ29udGV4dEVudGl0eVR5cGVbXSxcbiAgZGVmYXVsdFR5cGU6IENvbnRleHRFbnRpdHlUeXBlXG4pOiBDb250ZXh0RW50aXR5VHlwZSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBNYXRoLm1heCgxLCBNYXRoLmZsb29yKGF0UnVuTGVuZ3RoKSlcbiAgY29uc3QgbWFwcGVkVHlwZSA9IChPYmplY3QuZW50cmllcyhUWVBFX1RPX1RSSUdHRVJfU0VRVUVOQ0UpLmZpbmQoKFssIGxlbl0pID0+IGxlbiA9PT0gbm9ybWFsaXplZCk/LlswXSA/P1xuICAgIG51bGwpIGFzIENvbnRleHRFbnRpdHlUeXBlIHwgbnVsbFxuICBpZiAobWFwcGVkVHlwZSAmJiBhbGxvd2VkVHlwZXMuaW5jbHVkZXMobWFwcGVkVHlwZSkpIHJldHVybiBtYXBwZWRUeXBlXG4gIGNvbnN0IHRhYklkeCA9IE1hdGgubWluKE1hdGgubWF4KDAsIG5vcm1hbGl6ZWQgLSAxKSwgYWxsb3dlZFR5cGVzLmxlbmd0aCAtIDEpXG4gIHJldHVybiBhbGxvd2VkVHlwZXNbdGFiSWR4XSA/PyBkZWZhdWx0VHlwZVxufVxuXG5jb25zdCBnZXRUcmlnZ2VyU2VxdWVuY2VGcm9tVHlwZSA9ICh0eXBlOiBDb250ZXh0RW50aXR5VHlwZSwgYWxsb3dlZFR5cGVzOiBDb250ZXh0RW50aXR5VHlwZVtdKTogbnVtYmVyID0+IHtcbiAgY29uc3QgbWFwcGVkID0gVFlQRV9UT19UUklHR0VSX1NFUVVFTkNFW3R5cGVdXG4gIGlmIChtYXBwZWQpIHJldHVybiBtYXBwZWRcbiAgY29uc3QgaWR4ID0gYWxsb3dlZFR5cGVzLmluZGV4T2YodHlwZSlcbiAgcmV0dXJuIGlkeCA+PSAwID8gaWR4ICsgMSA6IDFcbn1cblxuLyoqXG4gKiBEZXJpdmEgY2xpZW50SWQsIHByb2plY3RJZCwgYWdlbnRFbnRpdHkgeSBNQ1AgZGVzZGUgZWwgY29udGV4dG8gZ2xvYmFsIChpbmNsLlxuICogYGVudGl0eVZhbHVlc2AgeSBgY2hpcHNQcm9qZWN0YCkgcGFyYSBmaWx0cmFyIHJlY2VudHMgeSBiw7pzcXVlZGEgR3JhcGhRTC5cbiAqL1xuY29uc3QgdXNlRGVyaXZlZFNjb3BlID0gKCk6IEVudGl0eVNlYXJjaFNjb3BlID0+IHtcbiAgY29uc3QgY3R4ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IGNsaWVudElkID0gY3R4LmNsaWVudD8uaWQgPz8gY3R4LmVudGl0eVZhbHVlcz8uY2xpZW50SWQgPz8gbnVsbFxuICBjb25zdCBwcm9qZWN0SWQgPSBjdHgucHJvamVjdD8uaWQgPz8gY3R4LmVudGl0eVZhbHVlcz8ucHJvamVjdElkID8/IGN0eC5jaGlwc1Byb2plY3Q/LnByb2plY3RJZCA/PyBudWxsXG4gIGNvbnN0IGFnZW50RW50aXR5ID0gY3R4LmFnZW50Py5lbnRpdHkgPz8gbnVsbFxuICBjb25zdCBtY3BTbHVnc0tleSA9IChjdHguYWdlbnQ/LmNvbm5lY3RvcnM/LmZpbmQoYyA9PiBjLmdyb3VwID09PSAnTUNQJyk/LnNsdWdzID8/IFtdKS5qb2luKCd8JylcblxuICBjb25zdCBtY3BTbHVncyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHJhdyA9IGN0eC5hZ2VudD8uY29ubmVjdG9ycz8uZmluZChjID0+IGMuZ3JvdXAgPT09ICdNQ1AnKT8uc2x1Z3MgPz8gW11cbiAgICByZXR1cm4gWy4uLm5ldyBTZXQocmF3LmZpbHRlcigocyk6IHMgaXMgc3RyaW5nID0+IHR5cGVvZiBzID09PSAnc3RyaW5nJyAmJiBzLnRyaW0oKS5sZW5ndGggPiAwKSldLnNvcnQoKVxuICB9LCBbbWNwU2x1Z3NLZXldKVxuXG4gIHJldHVybiB1c2VNZW1vPEVudGl0eVNlYXJjaFNjb3BlPihcbiAgICAoKSA9PiAoeyBjbGllbnRJZCwgcHJvamVjdElkLCBtY3BTbHVncywgYWdlbnRFbnRpdHkgfSksXG4gICAgW2NsaWVudElkLCBwcm9qZWN0SWQsIG1jcFNsdWdzLCBhZ2VudEVudGl0eV1cbiAgKVxufVxuXG4vKipcbiAqIEVuY2Fwc3VsYSBsYSBsw7NnaWNhIGRlbCBwb3BvdmVyIGRlIEAtbWVudGlvbnMgKGVzdGFkbywgZmV0Y2ggcG9yIHRhYiwgYW5hbHl0aWNzLFxuICogcG9zaWNpb25hbWllbnRvKS4gRWwgY29uc3VtZXIgbWFudGllbmUgZWwgZWRpdG9yIHkgZWwgZW52w61vIGRlbCBtZW5zYWplLlxuICogTG9zIGZpbHRyb3MgZGUgYsO6c3F1ZWRhIHVzYW4gYHVzZURlcml2ZWRTY29wZWA6IGVzcGVjaWFsaXN0YSBwcm95ZWN0byBhY290YSB0YXJlYXNcbiAqIGFsIGBwcm9qZWN0SWRgIGRlbCBjb250ZXh0bzsgZXNwZWNpYWxpc3RhIGNsaWVudGUsIHByb3llY3RvcyBhbCBgY2xpZW50SWRgIChlbiBgZXh0cmFgIGRlIHNlYXJjaCkuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VNZW50aW9uUG9wb3ZlciA9ICh7XG4gIGVkaXRvclJlZixcbiAgcG9wb3ZlckFuY2hvclJlZixcbiAgZW5hYmxlZFR5cGVzLFxuICBvbk1lbnRpb25BZGRlZCxcbn06IFVzZU1lbnRpb25Qb3BvdmVyT3B0aW9ucyk6IFVzZU1lbnRpb25Qb3BvdmVyUmV0dXJuID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgZXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgYWxsb3dlZFR5cGVzLCBkZWZhdWx0VHlwZSB9ID0gdXNlTWVudGlvbkFsbG93ZWRUeXBlcyhlbmFibGVkVHlwZXMpXG4gIGNvbnN0IG1lbnRpb25Qb3BvdmVyWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxMjAwLCAnb3ZlcmxheScpXG4gIGNvbnN0IFthY3RpdmVUeXBlLCBzZXRBY3RpdmVUeXBlXSA9IHVzZVN0YXRlPENvbnRleHRFbnRpdHlUeXBlPihkZWZhdWx0VHlwZSlcbiAgY29uc3QgW3BvcG92ZXJPcGVuLCBzZXRQb3BvdmVyT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3BvcG92ZXJQb3MsIHNldFBvcG92ZXJQb3NdID0gdXNlU3RhdGU8eyBib3R0b206IG51bWJlcjsgbGVmdDogbnVtYmVyOyB3aWR0aDogbnVtYmVyIH0+KHtcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICB3aWR0aDogMCxcbiAgfSlcbiAgY29uc3QgW2FjdGl2ZUluZGV4LCBzZXRBY3RpdmVJbmRleF0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbaXNLZXlib2FyZE5hdkFjdGl2ZSwgc2V0SXNLZXlib2FyZE5hdkFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgaGFzRW1pdHRlZE9wZW4gPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHBvcG92ZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBnZXRDYXJldFJlY3QgPSB1c2VDYXJldFBvc2l0aW9uKClcblxuICBjb25zdCBzY29wZSA9IHVzZURlcml2ZWRTY29wZSgpXG4gIGNvbnN0IHsgaXRlbXMsIGxvYWRpbmcsIGVycm9yLCBoaWRlUmVjZW50c0xhYmVsLCBoYXNNb3JlLCBpc0xvYWRpbmdNb3JlLCBsb2FkTW9yZSwgc2VhcmNoVmFsdWUsIHVwZGF0ZVNlYXJjaFZhbHVlIH0gPVxuICAgIHVzZUVudGl0eVNlYXJjaChhY3RpdmVUeXBlLCBzY29wZSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghYWxsb3dlZFR5cGVzLmluY2x1ZGVzKGFjdGl2ZVR5cGUpKSB7XG4gICAgICBzZXRBY3RpdmVUeXBlKGRlZmF1bHRUeXBlKVxuICAgIH1cbiAgfSwgW2FsbG93ZWRUeXBlcywgYWN0aXZlVHlwZSwgZGVmYXVsdFR5cGVdKVxuXG4gIGNvbnN0IHBvc2l0aW9uUG9wb3ZlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBmcm9tQW5jaG9yID0gcG9wb3ZlckFuY2hvclJlZj8uY3VycmVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBmcm9tRWRpdG9yID0gZWRpdG9yUmVmLmN1cnJlbnQ/LmdldEVkaXRvckNsaWVudFJlY3Q/LigpID8/IG51bGxcbiAgICBjb25zdCByZWN0ID0gZnJvbUFuY2hvciA/PyBmcm9tRWRpdG9yXG4gICAgaWYgKCFyZWN0IHx8IHJlY3Qud2lkdGggPD0gMCkge1xuICAgICAgY29uc3QgY2FyZXQgPSBnZXRDYXJldFJlY3QoKVxuICAgICAgaWYgKCFjYXJldCkgcmV0dXJuXG4gICAgICBjb25zdCB2aWV3cG9ydEggPSB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICAgIGNvbnN0IHZpZXdwb3J0VyA9IHdpbmRvdy5pbm5lcldpZHRoXG4gICAgICBjb25zdCBmYWxsYmFja1cgPSAzMjBcbiAgICAgIGNvbnN0IGxlZnQgPSBNYXRoLm1heCg4LCBNYXRoLm1pbih2aWV3cG9ydFcgLSBmYWxsYmFja1cgLSA4LCBjYXJldC5sZWZ0KSlcbiAgICAgIHNldFBvcG92ZXJQb3Moe1xuICAgICAgICB3aWR0aDogZmFsbGJhY2tXLFxuICAgICAgICBsZWZ0LFxuICAgICAgICBib3R0b206IHZpZXdwb3J0SCAtIGNhcmV0LnRvcCArIDQsXG4gICAgICB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3Qgdmlld3BvcnRXID0gd2luZG93LmlubmVyV2lkdGhcbiAgICBjb25zdCB2aWV3cG9ydEggPSB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICBjb25zdCB7IHdpZHRoIH0gPSByZWN0XG4gICAgY29uc3QgbGVmdCA9IE1hdGgubWF4KDgsIE1hdGgubWluKHZpZXdwb3J0VyAtIHdpZHRoIC0gOCwgcmVjdC5sZWZ0KSlcbiAgICAvKiogUG9wb3ZlciBzaWVtcHJlIGFycmliYSBkZWwgaW5wdXQ6IGJvcmRlIGluZmVyaW9yIGRlbCBwb3BvdmVyIH40cHggc29icmUgZWwgYm9yZGUgc3VwZXJpb3IgZGVsIGFuY2xhLiAqL1xuICAgIHNldFBvcG92ZXJQb3Moe1xuICAgICAgd2lkdGgsXG4gICAgICBsZWZ0LFxuICAgICAgYm90dG9tOiB2aWV3cG9ydEggLSByZWN0LnRvcCArIDQsXG4gICAgfSlcbiAgfSwgW3BvcG92ZXJBbmNob3JSZWYsIGVkaXRvclJlZiwgZ2V0Q2FyZXRSZWN0XSlcblxuICBjb25zdCByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaGFzRW1pdHRlZE9wZW4uY3VycmVudCA9IGZhbHNlXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGNsb3NlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFBvcG92ZXJPcGVuKGZhbHNlKVxuICAgIHVwZGF0ZVNlYXJjaFZhbHVlKCcnKVxuICB9LCBbdXBkYXRlU2VhcmNoVmFsdWVdKVxuXG4gIGNvbnN0IGhhbmRsZVRyaWdnZXIgPSB1c2VDYWxsYmFjayhcbiAgICAodHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmc7IGF0UnVuTGVuZ3RoOiBudW1iZXIgfSkgPT4ge1xuICAgICAgaWYgKGFsbG93ZWRUeXBlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaWYgKHBvcG92ZXJPcGVuKSBjbG9zZSgpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAodHJpZ2dlci5hY3RpdmUpIHtcbiAgICAgICAgLy8gU2kgaGF5IG3DoXMgYEBgIHF1ZSB0YWJzIChwLiBlai4gYWdlbnRlIHByb3llY3RvOiBgQGAgdXN1YXJpbywgYEBAYCB0YXJlYSDihpIgYEBAQGApLFxuICAgICAgICAvLyBzZSB1c2EgbGEgw7psdGltYSB0YWIgeSBsb3MgYEBgIGRlIG3DoXMgcGFzYW4gYWwgdGV4dG8gZGUgYsO6c3F1ZWRhIChgQEBAYCDih5IgdGFiIHRhcmVhICsgcXVlcnkgYEBgKS5cbiAgICAgICAgLy8gQ29uIOKJpTMgdGFicyAoY2xpZW50ZSksIGBAQEBgIGNvaW5jaWRlIGNvbiBsYSAzLmVyIHRhYiAoYHByb2plY3RgKS5cbiAgICAgICAgY29uc3Qgb3ZlcmZsb3dBdENvdW50ID0gTWF0aC5tYXgoMCwgdHJpZ2dlci5hdFJ1bkxlbmd0aCAtIGFsbG93ZWRUeXBlcy5sZW5ndGgpXG4gICAgICAgIGNvbnN0IGVmZmVjdGl2ZUF0UnVuTGVuZ3RoID0gTWF0aC5taW4odHJpZ2dlci5hdFJ1bkxlbmd0aCwgYWxsb3dlZFR5cGVzLmxlbmd0aClcbiAgICAgICAgY29uc3QgZWZmZWN0aXZlUXVlcnkgPSBgJHsnQCcucmVwZWF0KG92ZXJmbG93QXRDb3VudCl9JHt0cmlnZ2VyLnF1ZXJ5fWBcbiAgICAgICAgY29uc3QgdHlwZUZyb21BdCA9IGdldFR5cGVGcm9tVHJpZ2dlclNlcXVlbmNlKGVmZmVjdGl2ZUF0UnVuTGVuZ3RoLCBhbGxvd2VkVHlwZXMsIGRlZmF1bHRUeXBlKVxuXG4gICAgICAgIGlmICghcG9wb3Zlck9wZW4pIHtcbiAgICAgICAgICBzZXRQb3BvdmVyT3Blbih0cnVlKVxuICAgICAgICAgIHNldEFjdGl2ZVR5cGUodHlwZUZyb21BdClcbiAgICAgICAgICBwb3NpdGlvblBvcG92ZXIoKVxuICAgICAgICAgIGlmICghaGFzRW1pdHRlZE9wZW4uY3VycmVudCkge1xuICAgICAgICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdE1lbnRpb25PcGVuLCB7IHR5cGU6IHR5cGVGcm9tQXQgfSlcbiAgICAgICAgICAgIGhhc0VtaXR0ZWRPcGVuLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldEFjdGl2ZVR5cGUodHlwZUZyb21BdClcbiAgICAgICAgICBwb3NpdGlvblBvcG92ZXIoKVxuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZVNlYXJjaFZhbHVlKGVmZmVjdGl2ZVF1ZXJ5KVxuICAgICAgfSBlbHNlIGlmIChwb3BvdmVyT3Blbikge1xuICAgICAgICBjbG9zZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWxsb3dlZFR5cGVzLCBkZWZhdWx0VHlwZSwgcG9wb3Zlck9wZW4sIHBvc2l0aW9uUG9wb3ZlciwgdXBkYXRlU2VhcmNoVmFsdWUsIGV2ZW50LCBjbG9zZV1cbiAgKVxuXG4gIGNvbnN0IGluc2VydFNlbGVjdGVkSXRlbSA9IHVzZUNhbGxiYWNrKFxuICAgIChpdGVtOiBDb250ZXh0TWVudGlvbkl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IG1lbnRpb246IENvbnRleHRNZW50aW9uID0ge1xuICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgdHlwZTogaXRlbS50eXBlLFxuICAgICAgICBsYWJlbDogaXRlbS5wcmltYXJ5LFxuICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgIGNsaWVudElkOiBpdGVtLnJhdy5jbGllbnRJZCA/PyBudWxsLFxuICAgICAgICAgIGNsaWVudE5hbWU6IGl0ZW0ucmF3LmNsaWVudE5hbWUgPz8gbnVsbCxcbiAgICAgICAgICBwcm9qZWN0TmFtZTogaXRlbS5yYXcucHJvamVjdE5hbWUgPz8gbnVsbCxcbiAgICAgICAgICBmZWVJZDogaXRlbS5yYXcuZmVlSWQgPz8gbnVsbCxcbiAgICAgICAgICBmYXRoZXJJZDogaXRlbS5yYXcuZmF0aGVySWQgPz8gbnVsbCxcbiAgICAgICAgICBmYXRoZXJUaXRsZTogaXRlbS5yYXcuZmF0aGVyVGl0bGUgPz8gbnVsbCxcbiAgICAgICAgICB0b3RhbFByb3llY3RvczogaXRlbS5yYXcudG90YWxQcm95ZWN0b3MgPz8gbnVsbCxcbiAgICAgICAgICBuYW1lOiBpdGVtLnJhdy5uYW1lID8/IG51bGwsXG4gICAgICAgICAgcGljdHVyZTogaXRlbS5yYXcucGljdHVyZSA/PyBudWxsLFxuICAgICAgICAgIHBvc2l0aW9uTmFtZTogaXRlbS5yYXcucG9zaXRpb25OYW1lID8/IG51bGwsXG4gICAgICAgICAgZW1haWw6IGl0ZW0ucmF3LmVtYWlsID8/IG51bGwsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0TWVudGlvbihtZW50aW9uKVxuICAgICAgb25NZW50aW9uQWRkZWQ/LihtZW50aW9uKVxuICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdE1lbnRpb25TZWxlY3QsIHsgdHlwZTogbWVudGlvbi50eXBlLCBpZDogU3RyaW5nKG1lbnRpb24uaWQpIH0pXG4gICAgICBjbG9zZSgpXG4gICAgfSxcbiAgICBbZWRpdG9yUmVmLCBvbk1lbnRpb25BZGRlZCwgZXZlbnQsIGNsb3NlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlVHlwZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgICh0eXBlOiBDb250ZXh0RW50aXR5VHlwZSkgPT4ge1xuICAgICAgc2V0QWN0aXZlVHlwZSh0eXBlKVxuICAgICAgY29uc3QgbmV4dFJ1bkxlbmd0aCA9IGdldFRyaWdnZXJTZXF1ZW5jZUZyb21UeXBlKHR5cGUsIGFsbG93ZWRUeXBlcylcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5zeW5jVHJpZ2dlckF0UnVuTGVuZ3RoKG5leHRSdW5MZW5ndGgpXG4gICAgICBldmVudChFVkVOVFMuYWlDaGF0TWVudGlvblR5cGVTd2l0Y2gsIHsgdHlwZSB9KVxuICAgIH0sXG4gICAgW2FsbG93ZWRUeXBlcywgZWRpdG9yUmVmLCBldmVudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICAoZTogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pOiBib29sZWFuID0+IHtcbiAgICAgIGlmICghcG9wb3Zlck9wZW4gfHwgYWxsb3dlZFR5cGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlXG5cbiAgICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGNsb3NlKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKChlLmtleSA9PT0gJ0Fycm93UmlnaHQnIHx8IGUua2V5ID09PSAnQXJyb3dMZWZ0JykgJiYgKGUubWV0YUtleSB8fCBlLmFsdEtleSkpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGNvbnN0IGlkeCA9IGFsbG93ZWRUeXBlcy5pbmRleE9mKGFjdGl2ZVR5cGUpXG4gICAgICAgIGNvbnN0IGRlbHRhID0gZS5rZXkgPT09ICdBcnJvd1JpZ2h0JyA/IDEgOiAtMVxuICAgICAgICBjb25zdCBuZXh0SWR4ID0gKGlkeCArIGRlbHRhICsgYWxsb3dlZFR5cGVzLmxlbmd0aCkgJSBhbGxvd2VkVHlwZXMubGVuZ3RoXG4gICAgICAgIGhhbmRsZVR5cGVDaGFuZ2UoYWxsb3dlZFR5cGVzW25leHRJZHhdKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2VcblxuICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgc2V0SXNLZXlib2FyZE5hdkFjdGl2ZSh0cnVlKVxuICAgICAgICBzZXRBY3RpdmVJbmRleChwcmV2ID0+IChpdGVtcy5sZW5ndGggPiAwID8gTWF0aC5taW4ocHJldiArIDEsIGl0ZW1zLmxlbmd0aCAtIDEpIDogMCkpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgc2V0SXNLZXlib2FyZE5hdkFjdGl2ZSh0cnVlKVxuICAgICAgICBzZXRBY3RpdmVJbmRleChwcmV2ID0+IE1hdGgubWF4KHByZXYgLSAxLCAwKSlcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyB8fCBlLmtleSA9PT0gJ1RhYicpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGluc2VydFNlbGVjdGVkSXRlbShpdGVtc1thY3RpdmVJbmRleF0pXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LFxuICAgIFtwb3BvdmVyT3BlbiwgaXRlbXMsIGFsbG93ZWRUeXBlcywgYWN0aXZlVHlwZSwgYWN0aXZlSW5kZXgsIGluc2VydFNlbGVjdGVkSXRlbSwgY2xvc2UsIGhhbmRsZVR5cGVDaGFuZ2VdXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcG9wb3Zlck9wZW4pIHJldHVybiB1bmRlZmluZWRcbiAgICBjb25zdCBoYW5kbGVyID0gKCkgPT4gcG9zaXRpb25Qb3BvdmVyKClcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcbiAgICB9XG4gIH0sIFtwb3BvdmVyT3BlbiwgcG9zaXRpb25Qb3BvdmVyXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcG9wb3Zlck9wZW4pIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IGhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSA9IChtb3VzZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBtb3VzZUV2ZW50LnRhcmdldCBhcyBOb2RlIHwgbnVsbFxuICAgICAgaWYgKCF0YXJnZXQpIHJldHVyblxuICAgICAgaWYgKHBvcG92ZXJSZWYuY3VycmVudD8uY29udGFpbnModGFyZ2V0KSkgcmV0dXJuXG4gICAgICBpZiAocG9wb3ZlckFuY2hvclJlZj8uY3VycmVudD8uY29udGFpbnModGFyZ2V0KSkgcmV0dXJuXG4gICAgICBjbG9zZSgpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUpXG4gIH0sIFtwb3BvdmVyT3BlbiwgY2xvc2UsIHBvcG92ZXJBbmNob3JSZWZdKVxuXG4gIGNvbnN0IHByZXZJc0xvYWRpbmdNb3JlUmVmID0gdXNlUmVmKGZhbHNlKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBwcmV2SXNMb2FkaW5nTW9yZVJlZi5jdXJyZW50ID0gaXNMb2FkaW5nTW9yZVxuICAgIH1cbiAgfSwgW2lzTG9hZGluZ01vcmVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHByZXZJc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQpIHJldHVyblxuICAgIHNldEFjdGl2ZUluZGV4KDApXG4gIH0sIFtpdGVtcy5sZW5ndGgsIGFjdGl2ZVR5cGVdKVxuXG4gIGNvbnN0IHBvcG92ZXJOb2RlID0gdXNlTWVtbzxSZWFjdE5vZGUgfCBudWxsPigoKSA9PiB7XG4gICAgaWYgKCFwb3BvdmVyT3BlbikgcmV0dXJuIG51bGxcbiAgICByZXR1cm4gKFxuICAgICAgPFNDTVBBbmNob3JcbiAgICAgICAgcmVmPXtwb3BvdmVyUmVmfVxuICAgICAgICB7Li4ueyBbTUFJQV9NRU5USU9OX1BPUE9WRVJfQVRUUl06ICcnIH19XG4gICAgICAgICRib3R0b209e3BvcG92ZXJQb3MuYm90dG9tfVxuICAgICAgICAkbGVmdD17cG9wb3ZlclBvcy5sZWZ0fVxuICAgICAgICAkd2lkdGg9e3BvcG92ZXJQb3Mud2lkdGh9XG4gICAgICAgICR6SW5kZXg9e21lbnRpb25Qb3BvdmVyWkluZGV4fVxuICAgICAgICBvbk1vdXNlRG93bj17ZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfVxuICAgICAgPlxuICAgICAgICA8Q29udGV4dE1lbnRpb25Qb3BvdmVyXG4gICAgICAgICAgYWxsb3dlZFR5cGVzPXthbGxvd2VkVHlwZXN9XG4gICAgICAgICAgYWN0aXZlVHlwZT17YWN0aXZlVHlwZX1cbiAgICAgICAgICBvblR5cGVDaGFuZ2U9e2hhbmRsZVR5cGVDaGFuZ2V9XG4gICAgICAgICAgaXRlbXM9e2l0ZW1zfVxuICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XG4gICAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgICAgIGhpZGVSZWNlbnRzTGFiZWw9e2hpZGVSZWNlbnRzTGFiZWx9XG4gICAgICAgICAgaGFzTW9yZT17aGFzTW9yZX1cbiAgICAgICAgICBpc0xvYWRpbmdNb3JlPXtpc0xvYWRpbmdNb3JlfVxuICAgICAgICAgIG9uUmVhY2hMaXN0RW5kPXtsb2FkTW9yZX1cbiAgICAgICAgICBzZWFyY2hWYWx1ZT17c2VhcmNoVmFsdWV9XG4gICAgICAgICAga2V5Ym9hcmRIaW50PXt0KCdjb250ZXh0TWVudGlvbi5rZXlib2FyZEhpbnQnLCB7XG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6ICdOYXZlZ2FjacOzbiBlbnRyZSBwZXN0YcOxYXM6IEAsIEBALCBAQEDigKYgZW4gb3JkZW4uIFRhbWJpw6luIEFsdC9DbWQgKyDihpAv4oaSJyxcbiAgICAgICAgICB9KX1cbiAgICAgICAgICBvbkl0ZW1TZWxlY3RlZD17aW5zZXJ0U2VsZWN0ZWRJdGVtfVxuICAgICAgICAgIGFjdGl2ZUluZGV4PXthY3RpdmVJbmRleH1cbiAgICAgICAgICBvbkFjdGl2ZUluZGV4Q2hhbmdlPXtzZXRBY3RpdmVJbmRleH1cbiAgICAgICAgICBpc0tleWJvYXJkTmF2QWN0aXZlPXtpc0tleWJvYXJkTmF2QWN0aXZlfVxuICAgICAgICAgIG9uTW91c2VNb3ZlSW5MaXN0PXsoKSA9PiBzZXRJc0tleWJvYXJkTmF2QWN0aXZlKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgIDwvU0NNUEFuY2hvcj5cbiAgICApXG4gIH0sIFtcbiAgICBwb3BvdmVyT3BlbixcbiAgICBwb3BvdmVyUG9zLFxuICAgIG1lbnRpb25Qb3BvdmVyWkluZGV4LFxuICAgIGFsbG93ZWRUeXBlcyxcbiAgICBhY3RpdmVUeXBlLFxuICAgIGhhbmRsZVR5cGVDaGFuZ2UsXG4gICAgaXRlbXMsXG4gICAgbG9hZGluZyxcbiAgICBlcnJvcixcbiAgICBoaWRlUmVjZW50c0xhYmVsLFxuICAgIGhhc01vcmUsXG4gICAgaXNMb2FkaW5nTW9yZSxcbiAgICBsb2FkTW9yZSxcbiAgICBzZWFyY2hWYWx1ZSxcbiAgICBpbnNlcnRTZWxlY3RlZEl0ZW0sXG4gICAgYWN0aXZlSW5kZXgsXG4gICAgaXNLZXlib2FyZE5hdkFjdGl2ZSxcbiAgXSlcblxuICByZXR1cm4geyBwb3BvdmVyT3BlbiwgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nLCBoYW5kbGVUcmlnZ2VyLCBoYW5kbGVLZXlEb3duLCBwb3BvdmVyTm9kZSwgY2xvc2UgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLFNBQThDQSxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBRTlHLFNBQVNDLHFCQUFxQixFQUFFQyx5QkFBeUIsRUFBRUMsVUFBVSxRQUFRLDJDQUEyQztBQUN4SCxTQUFTQyxzQkFBc0IsUUFBUSwwQkFBMEI7QUFDakUsU0FBU0MsZ0JBQWdCLFFBQVEsMkJBQTJCO0FBQzVELFNBQVNDLElBQUksUUFBUSxRQUFRO0FBQzdCO0FBQ0EsU0FBNEJDLGVBQWUsUUFBUSxtQkFBbUI7QUFDdEUsU0FBU0Msc0JBQXNCLFFBQVEsMEJBQTBCO0FBQ2pFLFNBQVNDLGdCQUFnQixRQUFRLG9CQUFvQjtBQUNyRCxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxZQUFZO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBO0FBcUM3QyxJQUFNQyx3QkFBb0UsR0FBRztFQUMzRUMsSUFBSSxFQUFFLENBQUM7RUFDUEMsSUFBSSxFQUFFLENBQUM7RUFDUEMsT0FBTyxFQUFFO0FBQ1gsQ0FBQztBQUVELElBQU1DLDBCQUEwQixHQUFHLFNBQTdCQSwwQkFBMEJBLENBQzlCQyxXQUFtQixFQUNuQkMsWUFBaUMsRUFDakNDLFdBQThCLEVBQ1I7RUFBQSxJQUFBQyxxQkFBQSxFQUFBQyxvQkFBQSxFQUFBQyxvQkFBQTtFQUN0QixJQUFNQyxVQUFVLEdBQUdDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRUQsSUFBSSxDQUFDRSxLQUFLLENBQUNULFdBQVcsQ0FBQyxDQUFDO0VBQ3ZELElBQU1VLFVBQVUsSUFBQVAscUJBQUEsSUFBQUMsb0JBQUEsR0FBSU8sTUFBTSxDQUFDQyxPQUFPLENBQUNqQix3QkFBd0IsQ0FBQyxDQUFDa0IsSUFBSSxDQUFDLFVBQUFDLElBQUE7SUFBQSxJQUFBQyxLQUFBLEdBQUFDLGNBQUEsQ0FBQUYsSUFBQTtNQUFJRyxHQUFHLEdBQUFGLEtBQUE7SUFBQSxPQUFNRSxHQUFHLEtBQUtYLFVBQVU7RUFBQSxFQUFDLGNBQUFGLG9CQUFBLHVCQUE5RUEsb0JBQUEsQ0FBaUYsQ0FBQyxDQUFDLGNBQUFELHFCQUFBLGNBQUFBLHFCQUFBLEdBQ3JHLElBQWlDO0VBQ25DLElBQUlPLFVBQVUsSUFBSVQsWUFBWSxDQUFDaUIsUUFBUSxDQUFDUixVQUFVLENBQUMsRUFBRSxPQUFPQSxVQUFVO0VBQ3RFLElBQU1TLE1BQU0sR0FBR1osSUFBSSxDQUFDYSxHQUFHLENBQUNiLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRUYsVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFFTCxZQUFZLENBQUNvQixNQUFNLEdBQUcsQ0FBQyxDQUFDO0VBQzdFLFFBQUFoQixvQkFBQSxHQUFPSixZQUFZLENBQUNrQixNQUFNLENBQUMsY0FBQWQsb0JBQUEsY0FBQUEsb0JBQUEsR0FBSUgsV0FBVztBQUM1QyxDQUFDO0FBRUQsSUFBTW9CLDBCQUEwQixHQUFHLFNBQTdCQSwwQkFBMEJBLENBQUlDLElBQXVCLEVBQUV0QixZQUFpQyxFQUFhO0VBQ3pHLElBQU11QixNQUFNLEdBQUc3Qix3QkFBd0IsQ0FBQzRCLElBQUksQ0FBQztFQUM3QyxJQUFJQyxNQUFNLEVBQUUsT0FBT0EsTUFBTTtFQUN6QixJQUFNQyxHQUFHLEdBQUd4QixZQUFZLENBQUN5QixPQUFPLENBQUNILElBQUksQ0FBQztFQUN0QyxPQUFPRSxHQUFHLElBQUksQ0FBQyxHQUFHQSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFDL0IsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1FLGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBQSxFQUE0QjtFQUFBLElBQUFDLEtBQUEsRUFBQUMsY0FBQSxFQUFBQyxXQUFBLEVBQUFDLGlCQUFBLEVBQUFDLEtBQUEsRUFBQUMsS0FBQSxFQUFBQyxlQUFBLEVBQUFDLFlBQUEsRUFBQUMsa0JBQUEsRUFBQUMsaUJBQUEsRUFBQUMsaUJBQUEsRUFBQUMsVUFBQSxFQUFBQyxxQkFBQSxFQUFBQyxXQUFBO0VBQy9DLElBQU1DLEdBQUcsR0FBR3hELGdCQUFnQixDQUFDLENBQUM7RUFDOUIsSUFBTXlELFFBQVEsSUFBQWYsS0FBQSxJQUFBQyxjQUFBLElBQUFDLFdBQUEsR0FBR1ksR0FBRyxDQUFDRSxNQUFNLGNBQUFkLFdBQUEsdUJBQVZBLFdBQUEsQ0FBWWUsRUFBRSxjQUFBaEIsY0FBQSxjQUFBQSxjQUFBLElBQUFFLGlCQUFBLEdBQUlXLEdBQUcsQ0FBQ0ksWUFBWSxjQUFBZixpQkFBQSx1QkFBaEJBLGlCQUFBLENBQWtCWSxRQUFRLGNBQUFmLEtBQUEsY0FBQUEsS0FBQSxHQUFJLElBQUk7RUFDckUsSUFBTW1CLFNBQVMsSUFBQWYsS0FBQSxJQUFBQyxLQUFBLElBQUFDLGVBQUEsSUFBQUMsWUFBQSxHQUFHTyxHQUFHLENBQUM1QyxPQUFPLGNBQUFxQyxZQUFBLHVCQUFYQSxZQUFBLENBQWFVLEVBQUUsY0FBQVgsZUFBQSxjQUFBQSxlQUFBLElBQUFFLGtCQUFBLEdBQUlNLEdBQUcsQ0FBQ0ksWUFBWSxjQUFBVixrQkFBQSx1QkFBaEJBLGtCQUFBLENBQWtCVyxTQUFTLGNBQUFkLEtBQUEsY0FBQUEsS0FBQSxJQUFBSSxpQkFBQSxHQUFJSyxHQUFHLENBQUNNLFlBQVksY0FBQVgsaUJBQUEsdUJBQWhCQSxpQkFBQSxDQUFrQlUsU0FBUyxjQUFBZixLQUFBLGNBQUFBLEtBQUEsR0FBSSxJQUFJO0VBQ3ZHLElBQU1pQixXQUFXLElBQUFYLGlCQUFBLElBQUFDLFVBQUEsR0FBR0csR0FBRyxDQUFDUSxLQUFLLGNBQUFYLFVBQUEsdUJBQVRBLFVBQUEsQ0FBV1ksTUFBTSxjQUFBYixpQkFBQSxjQUFBQSxpQkFBQSxHQUFJLElBQUk7RUFDN0MsSUFBTWMsV0FBVyxHQUFHLEVBQUFaLHFCQUFBLElBQUFDLFdBQUEsR0FBQ0MsR0FBRyxDQUFDUSxLQUFLLGNBQUFULFdBQUEsZ0JBQUFBLFdBQUEsR0FBVEEsV0FBQSxDQUFXWSxVQUFVLGNBQUFaLFdBQUEsZ0JBQUFBLFdBQUEsR0FBckJBLFdBQUEsQ0FBdUI1QixJQUFJLENBQUMsVUFBQXlDLENBQUM7SUFBQSxPQUFJQSxDQUFDLENBQUNDLEtBQUssS0FBSyxLQUFLO0VBQUEsRUFBQyxjQUFBZCxXQUFBLHVCQUFuREEsV0FBQSxDQUFxRGUsS0FBSyxjQUFBaEIscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxFQUFFLEVBQUVpQixJQUFJLENBQUMsR0FBRyxDQUFDO0VBRWhHLElBQU1DLFFBQVEsR0FBRy9FLE9BQU8sQ0FBQyxZQUFNO0lBQUEsSUFBQWdGLHNCQUFBLEVBQUFDLFdBQUE7SUFDN0IsSUFBTUMsR0FBRyxJQUFBRixzQkFBQSxJQUFBQyxXQUFBLEdBQUdsQixHQUFHLENBQUNRLEtBQUssY0FBQVUsV0FBQSxnQkFBQUEsV0FBQSxHQUFUQSxXQUFBLENBQVdQLFVBQVUsY0FBQU8sV0FBQSxnQkFBQUEsV0FBQSxHQUFyQkEsV0FBQSxDQUF1Qi9DLElBQUksQ0FBQyxVQUFBeUMsQ0FBQztNQUFBLE9BQUlBLENBQUMsQ0FBQ0MsS0FBSyxLQUFLLEtBQUs7SUFBQSxFQUFDLGNBQUFLLFdBQUEsdUJBQW5EQSxXQUFBLENBQXFESixLQUFLLGNBQUFHLHNCQUFBLGNBQUFBLHNCQUFBLEdBQUksRUFBRTtJQUM1RSxPQUFPRyxrQkFBQSxDQUFJLElBQUlDLEdBQUcsQ0FBQ0YsR0FBRyxDQUFDRyxNQUFNLENBQUMsVUFBQ0MsQ0FBQztNQUFBLE9BQWtCLE9BQU9BLENBQUMsS0FBSyxRQUFRLElBQUlBLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLENBQUMsQ0FBQzdDLE1BQU0sR0FBRyxDQUFDO0lBQUEsRUFBQyxDQUFDLEVBQUU4QyxJQUFJLENBQUMsQ0FBQztFQUMxRyxDQUFDLEVBQUUsQ0FBQ2YsV0FBVyxDQUFDLENBQUM7RUFFakIsT0FBT3pFLE9BQU8sQ0FDWjtJQUFBLE9BQU87TUFBRWdFLFFBQVEsRUFBUkEsUUFBUTtNQUFFSSxTQUFTLEVBQVRBLFNBQVM7TUFBRVcsUUFBUSxFQUFSQSxRQUFRO01BQUVULFdBQVcsRUFBWEE7SUFBWSxDQUFDO0VBQUEsQ0FBQyxFQUN0RCxDQUFDTixRQUFRLEVBQUVJLFNBQVMsRUFBRVcsUUFBUSxFQUFFVCxXQUFXLENBQzdDLENBQUM7QUFDSCxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTW1CLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUFDLEtBQUEsRUFLMkI7RUFBQSxJQUp2REMsU0FBUyxHQUFBRCxLQUFBLENBQVRDLFNBQVM7SUFDVEMsZ0JBQWdCLEdBQUFGLEtBQUEsQ0FBaEJFLGdCQUFnQjtJQUNoQkMsWUFBWSxHQUFBSCxLQUFBLENBQVpHLFlBQVk7SUFDWkMsY0FBYyxHQUFBSixLQUFBLENBQWRJLGNBQWM7RUFFZCxJQUFBQyxLQUFBLEdBQWN2RixJQUFJLENBQUMsQ0FBQztJQUFad0YsQ0FBQyxHQUFBRCxLQUFBLENBQURDLENBQUM7RUFDVCxJQUFNQyxLQUFLLEdBQUdwRixRQUFRLENBQUMsQ0FBQztFQUN4QixJQUFBcUYscUJBQUEsR0FBc0N4RixzQkFBc0IsQ0FBQ21GLFlBQVksQ0FBQztJQUFsRXZFLFlBQVksR0FBQTRFLHFCQUFBLENBQVo1RSxZQUFZO0lBQUVDLFdBQVcsR0FBQTJFLHFCQUFBLENBQVgzRSxXQUFXO0VBQ2pDLElBQU00RSxvQkFBb0IsR0FBRzdGLHNCQUFzQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7RUFDcEUsSUFBQThGLFNBQUEsR0FBb0NsRyxRQUFRLENBQW9CcUIsV0FBVyxDQUFDO0lBQUE4RSxVQUFBLEdBQUFoRSxjQUFBLENBQUErRCxTQUFBO0lBQXJFRSxVQUFVLEdBQUFELFVBQUE7SUFBRUUsYUFBYSxHQUFBRixVQUFBO0VBQ2hDLElBQUFHLFVBQUEsR0FBc0N0RyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQUF1RyxVQUFBLEdBQUFwRSxjQUFBLENBQUFtRSxVQUFBO0lBQTlDRSxXQUFXLEdBQUFELFVBQUE7SUFBRUUsY0FBYyxHQUFBRixVQUFBO0VBQ2xDLElBQUFHLFVBQUEsR0FBb0MxRyxRQUFRLENBQWtEO01BQzVGMkcsTUFBTSxFQUFFLENBQUM7TUFDVEMsSUFBSSxFQUFFLENBQUM7TUFDUEMsS0FBSyxFQUFFO0lBQ1QsQ0FBQyxDQUFDO0lBQUFDLFVBQUEsR0FBQTNFLGNBQUEsQ0FBQXVFLFVBQUE7SUFKS0ssVUFBVSxHQUFBRCxVQUFBO0lBQUVFLGFBQWEsR0FBQUYsVUFBQTtFQUtoQyxJQUFBRyxVQUFBLEdBQXNDakgsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUFBa0gsVUFBQSxHQUFBL0UsY0FBQSxDQUFBOEUsVUFBQTtJQUExQ0UsV0FBVyxHQUFBRCxVQUFBO0lBQUVFLGNBQWMsR0FBQUYsVUFBQTtFQUNsQyxJQUFBRyxVQUFBLEdBQXNEckgsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBc0gsVUFBQSxHQUFBbkYsY0FBQSxDQUFBa0YsVUFBQTtJQUE5REUsbUJBQW1CLEdBQUFELFVBQUE7SUFBRUUsc0JBQXNCLEdBQUFGLFVBQUE7RUFDbEQsSUFBTUcsY0FBYyxHQUFHMUgsTUFBTSxDQUFDLEtBQUssQ0FBQztFQUNwQyxJQUFNMkgsVUFBVSxHQUFHM0gsTUFBTSxDQUF3QixJQUFJLENBQUM7RUFDdEQsSUFBTTRILFlBQVksR0FBR2xILGdCQUFnQixDQUFDLENBQUM7RUFFdkMsSUFBTW1ILEtBQUssR0FBRzlFLGVBQWUsQ0FBQyxDQUFDO0VBQy9CLElBQUErRSxnQkFBQSxHQUNFdEgsZUFBZSxDQUFDNkYsVUFBVSxFQUFFd0IsS0FBSyxDQUFDO0lBRDVCRSxLQUFLLEdBQUFELGdCQUFBLENBQUxDLEtBQUs7SUFBRUMsT0FBTyxHQUFBRixnQkFBQSxDQUFQRSxPQUFPO0lBQUVDLEtBQUssR0FBQUgsZ0JBQUEsQ0FBTEcsS0FBSztJQUFFQyxnQkFBZ0IsR0FBQUosZ0JBQUEsQ0FBaEJJLGdCQUFnQjtJQUFFQyxPQUFPLEdBQUFMLGdCQUFBLENBQVBLLE9BQU87SUFBRUMsYUFBYSxHQUFBTixnQkFBQSxDQUFiTSxhQUFhO0lBQUVDLFFBQVEsR0FBQVAsZ0JBQUEsQ0FBUk8sUUFBUTtJQUFFQyxXQUFXLEdBQUFSLGdCQUFBLENBQVhRLFdBQVc7SUFBRUMsaUJBQWlCLEdBQUFULGdCQUFBLENBQWpCUyxpQkFBaUI7RUFHakh6SSxTQUFTLENBQUMsWUFBTTtJQUNkLElBQUksQ0FBQ3VCLFlBQVksQ0FBQ2lCLFFBQVEsQ0FBQytELFVBQVUsQ0FBQyxFQUFFO01BQ3RDQyxhQUFhLENBQUNoRixXQUFXLENBQUM7SUFDNUI7RUFDRixDQUFDLEVBQUUsQ0FBQ0QsWUFBWSxFQUFFZ0YsVUFBVSxFQUFFL0UsV0FBVyxDQUFDLENBQUM7RUFFM0MsSUFBTWtILGVBQWUsR0FBRzNJLFdBQVcsQ0FBQyxZQUFNO0lBQUEsSUFBQTRJLHFCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLGtCQUFBLEVBQUFDLHNCQUFBO0lBQ3hDLElBQU1DLFVBQVUsR0FBR2xELGdCQUFnQixhQUFoQkEsZ0JBQWdCLGdCQUFBOEMscUJBQUEsR0FBaEI5QyxnQkFBZ0IsQ0FBRW1ELE9BQU8sY0FBQUwscUJBQUEsdUJBQXpCQSxxQkFBQSxDQUEyQk0scUJBQXFCLENBQUMsQ0FBQztJQUNyRSxJQUFNQyxVQUFVLElBQUFOLHFCQUFBLElBQUFDLGtCQUFBLEdBQUdqRCxTQUFTLENBQUNvRCxPQUFPLGNBQUFILGtCQUFBLGdCQUFBQyxzQkFBQSxHQUFqQkQsa0JBQUEsQ0FBbUJNLG1CQUFtQixjQUFBTCxzQkFBQSx1QkFBdENBLHNCQUFBLENBQUFNLElBQUEsQ0FBQVAsa0JBQXlDLENBQUMsY0FBQUQscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxJQUFJO0lBQ3JFLElBQU1TLElBQUksR0FBR04sVUFBVSxhQUFWQSxVQUFVLGNBQVZBLFVBQVUsR0FBSUcsVUFBVTtJQUNyQyxJQUFJLENBQUNHLElBQUksSUFBSUEsSUFBSSxDQUFDckMsS0FBSyxJQUFJLENBQUMsRUFBRTtNQUM1QixJQUFNc0MsS0FBSyxHQUFHeEIsWUFBWSxDQUFDLENBQUM7TUFDNUIsSUFBSSxDQUFDd0IsS0FBSyxFQUFFO01BQ1osSUFBTUMsVUFBUyxHQUFHQyxNQUFNLENBQUNDLFdBQVc7TUFDcEMsSUFBTUMsVUFBUyxHQUFHRixNQUFNLENBQUNHLFVBQVU7TUFDbkMsSUFBTUMsU0FBUyxHQUFHLEdBQUc7TUFDckIsSUFBTTdDLEtBQUksR0FBR2xGLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRUQsSUFBSSxDQUFDYSxHQUFHLENBQUNnSCxVQUFTLEdBQUdFLFNBQVMsR0FBRyxDQUFDLEVBQUVOLEtBQUssQ0FBQ3ZDLElBQUksQ0FBQyxDQUFDO01BQ3pFSSxhQUFhLENBQUM7UUFDWkgsS0FBSyxFQUFFNEMsU0FBUztRQUNoQjdDLElBQUksRUFBSkEsS0FBSTtRQUNKRCxNQUFNLEVBQUV5QyxVQUFTLEdBQUdELEtBQUssQ0FBQ08sR0FBRyxHQUFHO01BQ2xDLENBQUMsQ0FBQztNQUNGO0lBQ0Y7SUFFQSxJQUFNSCxTQUFTLEdBQUdGLE1BQU0sQ0FBQ0csVUFBVTtJQUNuQyxJQUFNSixTQUFTLEdBQUdDLE1BQU0sQ0FBQ0MsV0FBVztJQUNwQyxJQUFRekMsS0FBSyxHQUFLcUMsSUFBSSxDQUFkckMsS0FBSztJQUNiLElBQU1ELElBQUksR0FBR2xGLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRUQsSUFBSSxDQUFDYSxHQUFHLENBQUNnSCxTQUFTLEdBQUcxQyxLQUFLLEdBQUcsQ0FBQyxFQUFFcUMsSUFBSSxDQUFDdEMsSUFBSSxDQUFDLENBQUM7SUFDcEU7SUFDQUksYUFBYSxDQUFDO01BQ1pILEtBQUssRUFBTEEsS0FBSztNQUNMRCxJQUFJLEVBQUpBLElBQUk7TUFDSkQsTUFBTSxFQUFFeUMsU0FBUyxHQUFHRixJQUFJLENBQUNRLEdBQUcsR0FBRztJQUNqQyxDQUFDLENBQUM7RUFDSixDQUFDLEVBQUUsQ0FBQ2hFLGdCQUFnQixFQUFFRCxTQUFTLEVBQUVrQyxZQUFZLENBQUMsQ0FBQztFQUUvQyxJQUFNZ0Msd0JBQXdCLEdBQUcvSixXQUFXLENBQUMsWUFBTTtJQUNqRDZILGNBQWMsQ0FBQ29CLE9BQU8sR0FBRyxLQUFLO0VBQ2hDLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixJQUFNZSxLQUFLLEdBQUdoSyxXQUFXLENBQUMsWUFBTTtJQUM5QjZHLGNBQWMsQ0FBQyxLQUFLLENBQUM7SUFDckI2QixpQkFBaUIsQ0FBQyxFQUFFLENBQUM7RUFDdkIsQ0FBQyxFQUFFLENBQUNBLGlCQUFpQixDQUFDLENBQUM7RUFFdkIsSUFBTXVCLGFBQWEsR0FBR2pLLFdBQVcsQ0FDL0IsVUFBQ2tLLE9BQWdFLEVBQUs7SUFDcEUsSUFBSTFJLFlBQVksQ0FBQ29CLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDN0IsSUFBSWdFLFdBQVcsRUFBRW9ELEtBQUssQ0FBQyxDQUFDO01BQ3hCO0lBQ0Y7SUFFQSxJQUFJRSxPQUFPLENBQUNDLE1BQU0sRUFBRTtNQUNsQjtNQUNBO01BQ0E7TUFDQSxJQUFNQyxlQUFlLEdBQUd0SSxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEVBQUVtSSxPQUFPLENBQUMzSSxXQUFXLEdBQUdDLFlBQVksQ0FBQ29CLE1BQU0sQ0FBQztNQUM5RSxJQUFNeUgsb0JBQW9CLEdBQUd2SSxJQUFJLENBQUNhLEdBQUcsQ0FBQ3VILE9BQU8sQ0FBQzNJLFdBQVcsRUFBRUMsWUFBWSxDQUFDb0IsTUFBTSxDQUFDO01BQy9FLElBQU0wSCxjQUFjLE1BQUFDLE1BQUEsQ0FBTSxHQUFHLENBQUNDLE1BQU0sQ0FBQ0osZUFBZSxDQUFDLEVBQUFHLE1BQUEsQ0FBR0wsT0FBTyxDQUFDTyxLQUFLLENBQUU7TUFDdkUsSUFBTUMsVUFBVSxHQUFHcEosMEJBQTBCLENBQUMrSSxvQkFBb0IsRUFBRTdJLFlBQVksRUFBRUMsV0FBVyxDQUFDO01BRTlGLElBQUksQ0FBQ21GLFdBQVcsRUFBRTtRQUNoQkMsY0FBYyxDQUFDLElBQUksQ0FBQztRQUNwQkosYUFBYSxDQUFDaUUsVUFBVSxDQUFDO1FBQ3pCL0IsZUFBZSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDZCxjQUFjLENBQUNvQixPQUFPLEVBQUU7VUFDM0I5QyxLQUFLLENBQUNyRixNQUFNLENBQUM2SixpQkFBaUIsRUFBRTtZQUFFN0gsSUFBSSxFQUFFNEg7VUFBVyxDQUFDLENBQUM7VUFDckQ3QyxjQUFjLENBQUNvQixPQUFPLEdBQUcsSUFBSTtRQUMvQjtNQUNGLENBQUMsTUFBTTtRQUNMeEMsYUFBYSxDQUFDaUUsVUFBVSxDQUFDO1FBQ3pCL0IsZUFBZSxDQUFDLENBQUM7TUFDbkI7TUFDQUQsaUJBQWlCLENBQUM0QixjQUFjLENBQUM7SUFDbkMsQ0FBQyxNQUFNLElBQUkxRCxXQUFXLEVBQUU7TUFDdEJvRCxLQUFLLENBQUMsQ0FBQztJQUNUO0VBQ0YsQ0FBQyxFQUNELENBQUN4SSxZQUFZLEVBQUVDLFdBQVcsRUFBRW1GLFdBQVcsRUFBRStCLGVBQWUsRUFBRUQsaUJBQWlCLEVBQUV2QyxLQUFLLEVBQUU2RCxLQUFLLENBQzNGLENBQUM7RUFFRCxJQUFNWSxrQkFBa0IsR0FBRzVLLFdBQVcsQ0FDcEMsVUFBQzZLLElBQXdCLEVBQUs7SUFBQSxJQUFBQyxrQkFBQSxFQUFBQyxvQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxlQUFBLEVBQUFDLGtCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLGNBQUEsRUFBQUMsaUJBQUEsRUFBQUMscUJBQUEsRUFBQUMsZUFBQSxFQUFBQyxtQkFBQTtJQUM1QixJQUFNQyxPQUF1QixHQUFHO01BQzlCdEgsRUFBRSxFQUFFeUcsSUFBSSxDQUFDekcsRUFBRTtNQUNYdEIsSUFBSSxFQUFFK0gsSUFBSSxDQUFDL0gsSUFBSTtNQUNmNkksS0FBSyxFQUFFZCxJQUFJLENBQUNlLE9BQU87TUFDbkJDLFFBQVEsRUFBRTtRQUNSM0gsUUFBUSxHQUFBNEcsa0JBQUEsR0FBRUQsSUFBSSxDQUFDekYsR0FBRyxDQUFDbEIsUUFBUSxjQUFBNEcsa0JBQUEsY0FBQUEsa0JBQUEsR0FBSSxJQUFJO1FBQ25DZ0IsVUFBVSxHQUFBZixvQkFBQSxHQUFFRixJQUFJLENBQUN6RixHQUFHLENBQUMwRyxVQUFVLGNBQUFmLG9CQUFBLGNBQUFBLG9CQUFBLEdBQUksSUFBSTtRQUN2Q2dCLFdBQVcsR0FBQWYscUJBQUEsR0FBRUgsSUFBSSxDQUFDekYsR0FBRyxDQUFDMkcsV0FBVyxjQUFBZixxQkFBQSxjQUFBQSxxQkFBQSxHQUFJLElBQUk7UUFDekNnQixLQUFLLEdBQUFmLGVBQUEsR0FBRUosSUFBSSxDQUFDekYsR0FBRyxDQUFDNEcsS0FBSyxjQUFBZixlQUFBLGNBQUFBLGVBQUEsR0FBSSxJQUFJO1FBQzdCZ0IsUUFBUSxHQUFBZixrQkFBQSxHQUFFTCxJQUFJLENBQUN6RixHQUFHLENBQUM2RyxRQUFRLGNBQUFmLGtCQUFBLGNBQUFBLGtCQUFBLEdBQUksSUFBSTtRQUNuQ2dCLFdBQVcsR0FBQWYscUJBQUEsR0FBRU4sSUFBSSxDQUFDekYsR0FBRyxDQUFDOEcsV0FBVyxjQUFBZixxQkFBQSxjQUFBQSxxQkFBQSxHQUFJLElBQUk7UUFDekNnQixjQUFjLEdBQUFmLHFCQUFBLEdBQUVQLElBQUksQ0FBQ3pGLEdBQUcsQ0FBQytHLGNBQWMsY0FBQWYscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxJQUFJO1FBQy9DZ0IsSUFBSSxHQUFBZixjQUFBLEdBQUVSLElBQUksQ0FBQ3pGLEdBQUcsQ0FBQ2dILElBQUksY0FBQWYsY0FBQSxjQUFBQSxjQUFBLEdBQUksSUFBSTtRQUMzQmdCLE9BQU8sR0FBQWYsaUJBQUEsR0FBRVQsSUFBSSxDQUFDekYsR0FBRyxDQUFDaUgsT0FBTyxjQUFBZixpQkFBQSxjQUFBQSxpQkFBQSxHQUFJLElBQUk7UUFDakNnQixZQUFZLEdBQUFmLHFCQUFBLEdBQUVWLElBQUksQ0FBQ3pGLEdBQUcsQ0FBQ2tILFlBQVksY0FBQWYscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxJQUFJO1FBQzNDZ0IsS0FBSyxHQUFBZixlQUFBLEdBQUVYLElBQUksQ0FBQ3pGLEdBQUcsQ0FBQ21ILEtBQUssY0FBQWYsZUFBQSxjQUFBQSxlQUFBLEdBQUk7TUFDM0I7SUFDRixDQUFDO0lBQ0QsQ0FBQUMsbUJBQUEsR0FBQTVGLFNBQVMsQ0FBQ29ELE9BQU8sY0FBQXdDLG1CQUFBLGVBQWpCQSxtQkFBQSxDQUFtQmUsYUFBYSxDQUFDZCxPQUFPLENBQUM7SUFDekMxRixjQUFjLGFBQWRBLGNBQWMsZUFBZEEsY0FBYyxDQUFHMEYsT0FBTyxDQUFDO0lBQ3pCdkYsS0FBSyxDQUFDckYsTUFBTSxDQUFDMkwsbUJBQW1CLEVBQUU7TUFBRTNKLElBQUksRUFBRTRJLE9BQU8sQ0FBQzVJLElBQUk7TUFBRXNCLEVBQUUsRUFBRXNJLE1BQU0sQ0FBQ2hCLE9BQU8sQ0FBQ3RILEVBQUU7SUFBRSxDQUFDLENBQUM7SUFDakY0RixLQUFLLENBQUMsQ0FBQztFQUNULENBQUMsRUFDRCxDQUFDbkUsU0FBUyxFQUFFRyxjQUFjLEVBQUVHLEtBQUssRUFBRTZELEtBQUssQ0FDMUMsQ0FBQztFQUVELElBQU0yQyxnQkFBZ0IsR0FBRzNNLFdBQVcsQ0FDbEMsVUFBQzhDLElBQXVCLEVBQUs7SUFBQSxJQUFBOEosbUJBQUE7SUFDM0JuRyxhQUFhLENBQUMzRCxJQUFJLENBQUM7SUFDbkIsSUFBTStKLGFBQWEsR0FBR2hLLDBCQUEwQixDQUFDQyxJQUFJLEVBQUV0QixZQUFZLENBQUM7SUFDcEUsQ0FBQW9MLG1CQUFBLEdBQUEvRyxTQUFTLENBQUNvRCxPQUFPLGNBQUEyRCxtQkFBQSxlQUFqQkEsbUJBQUEsQ0FBbUJFLHNCQUFzQixDQUFDRCxhQUFhLENBQUM7SUFDeEQxRyxLQUFLLENBQUNyRixNQUFNLENBQUNpTSx1QkFBdUIsRUFBRTtNQUFFakssSUFBSSxFQUFKQTtJQUFLLENBQUMsQ0FBQztFQUNqRCxDQUFDLEVBQ0QsQ0FBQ3RCLFlBQVksRUFBRXFFLFNBQVMsRUFBRU0sS0FBSyxDQUNqQyxDQUFDO0VBRUQsSUFBTTZHLGFBQWEsR0FBR2hOLFdBQVcsQ0FDL0IsVUFBQ2lOLENBQWdDLEVBQWM7SUFDN0MsSUFBSSxDQUFDckcsV0FBVyxJQUFJcEYsWUFBWSxDQUFDb0IsTUFBTSxLQUFLLENBQUMsRUFBRSxPQUFPLEtBQUs7SUFFM0QsSUFBSXFLLENBQUMsQ0FBQ0MsR0FBRyxLQUFLLFFBQVEsRUFBRTtNQUN0QkQsQ0FBQyxDQUFDRSxjQUFjLENBQUMsQ0FBQztNQUNsQm5ELEtBQUssQ0FBQyxDQUFDO01BQ1AsT0FBTyxJQUFJO0lBQ2I7SUFFQSxJQUFJLENBQUNpRCxDQUFDLENBQUNDLEdBQUcsS0FBSyxZQUFZLElBQUlELENBQUMsQ0FBQ0MsR0FBRyxLQUFLLFdBQVcsTUFBTUQsQ0FBQyxDQUFDRyxPQUFPLElBQUlILENBQUMsQ0FBQ0ksTUFBTSxDQUFDLEVBQUU7TUFDaEZKLENBQUMsQ0FBQ0UsY0FBYyxDQUFDLENBQUM7TUFDbEIsSUFBTW5LLEdBQUcsR0FBR3hCLFlBQVksQ0FBQ3lCLE9BQU8sQ0FBQ3VELFVBQVUsQ0FBQztNQUM1QyxJQUFNOEcsS0FBSyxHQUFHTCxDQUFDLENBQUNDLEdBQUcsS0FBSyxZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztNQUM3QyxJQUFNSyxPQUFPLEdBQUcsQ0FBQ3ZLLEdBQUcsR0FBR3NLLEtBQUssR0FBRzlMLFlBQVksQ0FBQ29CLE1BQU0sSUFBSXBCLFlBQVksQ0FBQ29CLE1BQU07TUFDekUrSixnQkFBZ0IsQ0FBQ25MLFlBQVksQ0FBQytMLE9BQU8sQ0FBQyxDQUFDO01BQ3ZDLE9BQU8sSUFBSTtJQUNiO0lBRUEsSUFBSXJGLEtBQUssQ0FBQ3RGLE1BQU0sS0FBSyxDQUFDLEVBQUUsT0FBTyxLQUFLO0lBRXBDLElBQUlxSyxDQUFDLENBQUNDLEdBQUcsS0FBSyxXQUFXLEVBQUU7TUFDekJELENBQUMsQ0FBQ0UsY0FBYyxDQUFDLENBQUM7TUFDbEJ2RixzQkFBc0IsQ0FBQyxJQUFJLENBQUM7TUFDNUJKLGNBQWMsQ0FBQyxVQUFBZ0csSUFBSTtRQUFBLE9BQUt0RixLQUFLLENBQUN0RixNQUFNLEdBQUcsQ0FBQyxHQUFHZCxJQUFJLENBQUNhLEdBQUcsQ0FBQzZLLElBQUksR0FBRyxDQUFDLEVBQUV0RixLQUFLLENBQUN0RixNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztNQUFBLENBQUMsQ0FBQztNQUNyRixPQUFPLElBQUk7SUFDYjtJQUNBLElBQUlxSyxDQUFDLENBQUNDLEdBQUcsS0FBSyxTQUFTLEVBQUU7TUFDdkJELENBQUMsQ0FBQ0UsY0FBYyxDQUFDLENBQUM7TUFDbEJ2RixzQkFBc0IsQ0FBQyxJQUFJLENBQUM7TUFDNUJKLGNBQWMsQ0FBQyxVQUFBZ0csSUFBSTtRQUFBLE9BQUkxTCxJQUFJLENBQUNDLEdBQUcsQ0FBQ3lMLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO01BQUEsRUFBQztNQUM3QyxPQUFPLElBQUk7SUFDYjtJQUNBLElBQUlQLENBQUMsQ0FBQ0MsR0FBRyxLQUFLLE9BQU8sSUFBSUQsQ0FBQyxDQUFDQyxHQUFHLEtBQUssS0FBSyxFQUFFO01BQ3hDRCxDQUFDLENBQUNFLGNBQWMsQ0FBQyxDQUFDO01BQ2xCdkMsa0JBQWtCLENBQUMxQyxLQUFLLENBQUNYLFdBQVcsQ0FBQyxDQUFDO01BQ3RDLE9BQU8sSUFBSTtJQUNiO0lBQ0EsT0FBTyxLQUFLO0VBQ2QsQ0FBQyxFQUNELENBQUNYLFdBQVcsRUFBRXNCLEtBQUssRUFBRTFHLFlBQVksRUFBRWdGLFVBQVUsRUFBRWUsV0FBVyxFQUFFcUQsa0JBQWtCLEVBQUVaLEtBQUssRUFBRTJDLGdCQUFnQixDQUN6RyxDQUFDO0VBRUQxTSxTQUFTLENBQUMsWUFBTTtJQUNkLElBQUksQ0FBQzJHLFdBQVcsRUFBRSxPQUFPNkcsU0FBUztJQUNsQyxJQUFNQyxPQUFPLEdBQUcsU0FBVkEsT0FBT0EsQ0FBQTtNQUFBLE9BQVMvRSxlQUFlLENBQUMsQ0FBQztJQUFBO0lBQ3ZDYyxNQUFNLENBQUNrRSxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUVELE9BQU8sRUFBRSxJQUFJLENBQUM7SUFDaERqRSxNQUFNLENBQUNrRSxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUVELE9BQU8sQ0FBQztJQUMxQyxPQUFPLFlBQU07TUFDWGpFLE1BQU0sQ0FBQ21FLG1CQUFtQixDQUFDLFFBQVEsRUFBRUYsT0FBTyxFQUFFLElBQUksQ0FBQztNQUNuRGpFLE1BQU0sQ0FBQ21FLG1CQUFtQixDQUFDLFFBQVEsRUFBRUYsT0FBTyxDQUFDO0lBQy9DLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQzlHLFdBQVcsRUFBRStCLGVBQWUsQ0FBQyxDQUFDO0VBRWxDMUksU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJLENBQUMyRyxXQUFXLEVBQUUsT0FBTzZHLFNBQVM7SUFFbEMsSUFBTUksd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUF3QkEsQ0FBSUMsVUFBc0IsRUFBSztNQUFBLElBQUFDLG1CQUFBLEVBQUFDLHNCQUFBO01BQzNELElBQU1DLE1BQU0sR0FBR0gsVUFBVSxDQUFDRyxNQUFxQjtNQUMvQyxJQUFJLENBQUNBLE1BQU0sRUFBRTtNQUNiLEtBQUFGLG1CQUFBLEdBQUlqRyxVQUFVLENBQUNtQixPQUFPLGNBQUE4RSxtQkFBQSxlQUFsQkEsbUJBQUEsQ0FBb0JHLFFBQVEsQ0FBQ0QsTUFBTSxDQUFDLEVBQUU7TUFDMUMsSUFBSW5JLGdCQUFnQixhQUFoQkEsZ0JBQWdCLGdCQUFBa0ksc0JBQUEsR0FBaEJsSSxnQkFBZ0IsQ0FBRW1ELE9BQU8sY0FBQStFLHNCQUFBLGVBQXpCQSxzQkFBQSxDQUEyQkUsUUFBUSxDQUFDRCxNQUFNLENBQUMsRUFBRTtNQUNqRGpFLEtBQUssQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVEbUUsUUFBUSxDQUFDUixnQkFBZ0IsQ0FBQyxXQUFXLEVBQUVFLHdCQUF3QixDQUFDO0lBQ2hFLE9BQU87TUFBQSxPQUFNTSxRQUFRLENBQUNQLG1CQUFtQixDQUFDLFdBQVcsRUFBRUMsd0JBQXdCLENBQUM7SUFBQTtFQUNsRixDQUFDLEVBQUUsQ0FBQ2pILFdBQVcsRUFBRW9ELEtBQUssRUFBRWxFLGdCQUFnQixDQUFDLENBQUM7RUFFMUMsSUFBTXNJLG9CQUFvQixHQUFHak8sTUFBTSxDQUFDLEtBQUssQ0FBQztFQUMxQ0YsU0FBUyxDQUFDLFlBQU07SUFDZCxPQUFPLFlBQU07TUFDWG1PLG9CQUFvQixDQUFDbkYsT0FBTyxHQUFHVixhQUFhO0lBQzlDLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ0EsYUFBYSxDQUFDLENBQUM7RUFFbkJ0SSxTQUFTLENBQUMsWUFBTTtJQUNkLElBQUltTyxvQkFBb0IsQ0FBQ25GLE9BQU8sRUFBRTtJQUNsQ3pCLGNBQWMsQ0FBQyxDQUFDLENBQUM7RUFDbkIsQ0FBQyxFQUFFLENBQUNVLEtBQUssQ0FBQ3RGLE1BQU0sRUFBRTRELFVBQVUsQ0FBQyxDQUFDO0VBRTlCLElBQU02SCxXQUFXLEdBQUduTyxPQUFPLENBQW1CLFlBQU07SUFDbEQsSUFBSSxDQUFDMEcsV0FBVyxFQUFFLE9BQU8sSUFBSTtJQUM3QixvQkFDRTNGLElBQUEsQ0FBQ1YsVUFBVSxFQUFBK04sYUFBQSxDQUFBQSxhQUFBO01BQ1RDLEdBQUcsRUFBRXpHO0lBQVcsR0FBQTBHLGVBQUEsS0FDVGxPLHlCQUF5QixFQUFHLEVBQUU7TUFDckNtTyxPQUFPLEVBQUV0SCxVQUFVLENBQUNKLE1BQU87TUFDM0IySCxLQUFLLEVBQUV2SCxVQUFVLENBQUNILElBQUs7TUFDdkIySCxNQUFNLEVBQUV4SCxVQUFVLENBQUNGLEtBQU07TUFDekIySCxPQUFPLEVBQUV2SSxvQkFBcUI7TUFDOUJ3SSxXQUFXLEVBQUUsU0FBYkEsV0FBV0EsQ0FBRTVCLENBQUM7UUFBQSxPQUFJQSxDQUFDLENBQUM2QixlQUFlLENBQUMsQ0FBQztNQUFBLENBQUM7TUFBQUMsUUFBQSxlQUV0QzlOLElBQUEsQ0FBQ1oscUJBQXFCO1FBQ3BCbUIsWUFBWSxFQUFFQSxZQUFhO1FBQzNCZ0YsVUFBVSxFQUFFQSxVQUFXO1FBQ3ZCd0ksWUFBWSxFQUFFckMsZ0JBQWlCO1FBQy9CekUsS0FBSyxFQUFFQSxLQUFNO1FBQ2JDLE9BQU8sRUFBRUEsT0FBUTtRQUNqQkMsS0FBSyxFQUFFQSxLQUFNO1FBQ2JDLGdCQUFnQixFQUFFQSxnQkFBaUI7UUFDbkNDLE9BQU8sRUFBRUEsT0FBUTtRQUNqQkMsYUFBYSxFQUFFQSxhQUFjO1FBQzdCMEcsY0FBYyxFQUFFekcsUUFBUztRQUN6QkMsV0FBVyxFQUFFQSxXQUFZO1FBQ3pCeUcsWUFBWSxFQUFFaEosQ0FBQyxDQUFDLDZCQUE2QixFQUFFO1VBQzdDaUosWUFBWSxFQUFFO1FBQ2hCLENBQUMsQ0FBRTtRQUNIQyxjQUFjLEVBQUV4RSxrQkFBbUI7UUFDbkNyRCxXQUFXLEVBQUVBLFdBQVk7UUFDekI4SCxtQkFBbUIsRUFBRTdILGNBQWU7UUFDcENHLG1CQUFtQixFQUFFQSxtQkFBb0I7UUFDekMySCxpQkFBaUIsRUFBRSxTQUFuQkEsaUJBQWlCQSxDQUFBO1VBQUEsT0FBUTFILHNCQUFzQixDQUFDLEtBQUssQ0FBQztRQUFBO01BQUMsQ0FDeEQ7SUFBQyxFQUNRLENBQUM7RUFFakIsQ0FBQyxFQUFFLENBQ0RoQixXQUFXLEVBQ1hPLFVBQVUsRUFDVmQsb0JBQW9CLEVBQ3BCN0UsWUFBWSxFQUNaZ0YsVUFBVSxFQUNWbUcsZ0JBQWdCLEVBQ2hCekUsS0FBSyxFQUNMQyxPQUFPLEVBQ1BDLEtBQUssRUFDTEMsZ0JBQWdCLEVBQ2hCQyxPQUFPLEVBQ1BDLGFBQWEsRUFDYkMsUUFBUSxFQUNSQyxXQUFXLEVBQ1htQyxrQkFBa0IsRUFDbEJyRCxXQUFXLEVBQ1hJLG1CQUFtQixDQUNwQixDQUFDO0VBRUYsT0FBTztJQUFFZixXQUFXLEVBQVhBLFdBQVc7SUFBRW1ELHdCQUF3QixFQUF4QkEsd0JBQXdCO0lBQUVFLGFBQWEsRUFBYkEsYUFBYTtJQUFFK0MsYUFBYSxFQUFiQSxhQUFhO0lBQUVxQixXQUFXLEVBQVhBLFdBQVc7SUFBRXJFLEtBQUssRUFBTEE7RUFBTSxDQUFDO0FBQ3BHLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=