@projectcor/maia-components 2.11.15-5 → 2.11.15-6

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 (37) hide show
  1. package/lib/components/atoms/ApprovalBox/ApprovalBox.js +94 -90
  2. package/lib/components/atoms/ApprovalBox/ApprovalBox.styles.js +41 -21
  3. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +9 -28
  4. package/lib/components/atoms/icons/MAIAIcon.js +2 -2
  5. package/lib/components/atoms/icons/MAIAIsologo.js +2 -2
  6. package/lib/components/atoms/icons/MaiaStoreIcon.js +31 -0
  7. package/lib/components/atoms/icons/index.js +2 -1
  8. package/lib/components/molecules/AbmSection/AbmGeneralSection.js +130 -127
  9. package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +22 -42
  10. package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.js +5 -5
  11. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +9 -1
  12. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +72 -18
  13. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +62 -0
  14. package/lib/components/molecules/ChatAIHome/styles.js +38 -30
  15. package/lib/components/molecules/ChatAIMarketplace/ChatAIMarketplace.js +255 -0
  16. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +24 -26
  17. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +28 -3
  18. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +2 -72
  19. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +2 -10
  20. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +10 -5
  21. package/lib/components/molecules/ChatAIModal/constants.js +6 -2
  22. package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.js +5 -5
  23. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +14 -25
  24. package/lib/components/molecules/Sidebar/Sidebar.js +147 -198
  25. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +114 -0
  26. package/lib/components/molecules/Sidebar/Sidebar.styles.js +13 -1
  27. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +10 -1
  28. package/lib/hooks/useChatManager/useChatManager.js +89 -56
  29. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +10 -6
  30. package/lib/lang/br/index.js +66 -8
  31. package/lib/lang/en/index.js +66 -8
  32. package/lib/lang/es/index.js +66 -8
  33. package/lib/lang/fr/index.js +24 -8
  34. package/lib/services/maia/Orchestrator/orchestrator.js +22 -16
  35. package/lib/types/agent.js +1 -1
  36. package/lib/types/global.d.js +1 -1
  37. package/package.json +1 -1
@@ -21,7 +21,7 @@ import { EmptyHistoryIcon } from '../../atoms/icons/EmptyHistory';
21
21
  import { useResizeListener } from '../../../hooks/useResize';
22
22
  import { useChats } from '../../../hooks/useChats';
23
23
  import { Loader } from '../../atoms/Loader';
24
- import { ErrorState, MAIAIcon, NewChat } from '../../atoms/icons';
24
+ import { ErrorState, MAIAIcon, MaiaStoreIcon, NewChat } from '../../atoms/icons';
25
25
  import { EVENTS } from '../../../hooks/useEvent';
26
26
  import { useT } from '../../../hooks/useT';
27
27
  import { OptionItem } from '../../atoms/CardMenu/CardMenu';
@@ -32,7 +32,10 @@ import { useUser } from '../../../context/cor-user';
32
32
  import { OnboardingModalButton } from '../../atoms/OnboardingModalButton';
33
33
  import { FeedbackButton } from '../../atoms/FeedbackButton';
34
34
  import { useGlobalContext } from '../../../context/global-context';
35
- import { SCLHCWrapper, SCLHCWrapperAgent, SCLHCWrapperAgentText, SCLHCWrapperButtonActions, SCLHCWrapperContent, SCLHCWrapperTitle, SCSWrapperCollapsedButton, SCSWrapperNewChatIcon } from './Sidebar.styles';
35
+ import { fetchMaia } from '../../../services/maia/client';
36
+ import { mapCORLang } from '../../../lang/utils';
37
+ import { SCLHCWrapper, SCLHCWrapperAgent, SCLHCWrapperAgentText, SCLHCWrapperButtonActions, SCLHCWrapperContent, SCLHCWrapperTitle, SCSWrapperCollapsedButton, SCSWrapperNewChatIcon, SCSWrapperAgentsNavIcon } from './Sidebar.styles';
38
+ import { SCSSidebarRoot, SCSSidebarToolbar, SCSSidebarBody, SCSSidebarOpenPanel, SCSSidebarAgentsBlock, SCSSidebarAgentsHeading, SCSSidebarAgentsHeadingText, SCSSidebarAgentsActions, SCSSidebarMaiakerNavButton, SCSSidebarMaiakerNavLabel, SCSSidebarConversationsHeading, SCSSidebarChatsScroll, SCSSidebarErrorStateColumn, SCSSidebarErrorStateTop, SCSSidebarErrorBanner, SCSSidebarErrorBannerIconWrap, SCSSidebarErrorBannerMessage, SCSSidebarLoadingArea, SCSSidebarLoadMoreRow, SCSSidebarEmptyChats, SCSSidebarEmptyChatsText, SCSSidebarChatsFooter, SCSSidebarFooterActions } from './Sidebar.layout.styles';
36
39
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
37
40
  var actions = {
38
41
  edit: function edit(props) {
@@ -48,6 +51,19 @@ function abbreviateSpecialistInAgentName(agentName) {
48
51
  if (!agentName || typeof agentName !== 'string') return agentName;
49
52
  return agentName.replace(/\b(especialista|especialist)\b/gi, 'Esp.').replace(/\bspecialist\b/gi, 'Spec.');
50
53
  }
54
+
55
+ /** Marketplace / “Mis agentes” (engranaje compacto, referencia Figma brain-cog) — reactivar con la sección en sidebar */
56
+ /* const MyAgentsNavIcon = ({ size = 16 }: { size?: number }) => (
57
+ <svg width={size} height={size} viewBox="0 0 16 16" fill="none" aria-hidden="true">
58
+ <path
59
+ fill="currentColor"
60
+ fillRule="evenodd"
61
+ clipRule="evenodd"
62
+ d="M8 1.25a.75.75 0 0 1 .74.64l.07.45a3.55 3.55 0 0 1 .94.4l.38-.28a.75.75 0 0 1 .92 1.18l-.32.37c.19.3.33.63.4.99l.45.06a.75.75 0 0 1-.1 1.49l-.46-.06a3.48 3.48 0 0 1-.4.94l.3.4a.75.75 0 1 1-1.2.9l-.32-.43a3.55 3.55 0 0 1-.98.42l.01.47a.75.75 0 0 1-1.49.09l-.02-.46a3.55 3.55 0 0 1-.99-.41l-.36.33a.75.75 0 1 1-1.02-1.1l.34-.31a3.48 3.48 0 0 1-.43-1l-.46.06a.75.75 0 0 1-.19-1.48l.45-.07c.07-.35.2-.68.38-.97l-.33-.36a.75.75 0 1 1 1.11-1.02l.35.38c.3-.18.64-.32 1-.39l-.06-.45a.75.75 0 0 1 .74-.86ZM8 5.35a2.65 2.65 0 1 0 0 5.3 2.65 2.65 0 0 0 0-5.3Z"
63
+ />
64
+ </svg>
65
+ ) */
66
+
51
67
  var ListHistoryChat = function ListHistoryChat(_ref) {
52
68
  var chat = _ref.chat,
53
69
  _onClick = _ref.onClick,
@@ -194,9 +210,12 @@ export var Sidebar = function Sidebar(_ref3) {
194
210
  refetchChats = _ref3.refetchChats,
195
211
  handleSetRefetchChats = _ref3.handleSetRefetchChats,
196
212
  hasError = _ref3.hasError,
197
- resetSelectedChatRef = _ref3.resetSelectedChatRef;
213
+ resetSelectedChatRef = _ref3.resetSelectedChatRef,
214
+ _ref3$agentsNavActive = _ref3.agentsNavActive,
215
+ agentsNavActive = _ref3$agentsNavActive === void 0 ? null : _ref3$agentsNavActive;
198
216
  var _useT2 = useT(),
199
- t = _useT2.t;
217
+ t = _useT2.t,
218
+ i18n = _useT2.i18n;
200
219
  var _useState3 = useState(true),
201
220
  _useState4 = _slicedToArray(_useState3, 2),
202
221
  isOpen = _useState4[0],
@@ -213,7 +232,10 @@ export var Sidebar = function Sidebar(_ref3) {
213
232
  var chatsContainerRef = useRef(null);
214
233
  var user = useUser();
215
234
  var _useGlobalContext = useGlobalContext(),
216
- selectedAgent = _useGlobalContext.agent;
235
+ selectedAgent = _useGlobalContext.agent,
236
+ selectAgent = _useGlobalContext.selectAgent,
237
+ setProject = _useGlobalContext.setProject,
238
+ setClient = _useGlobalContext.setClient;
217
239
  var _useChats = useChats({
218
240
  onError: onError
219
241
  }),
@@ -293,6 +315,46 @@ export var Sidebar = function Sidebar(_ref3) {
293
315
  return !prev;
294
316
  });
295
317
  };
318
+ var handleOpenCreateAgent = /*#__PURE__*/function () {
319
+ var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
320
+ var response, data, maiakerAgent;
321
+ return _regeneratorRuntime.wrap(function (_context2) {
322
+ while (1) switch (_context2.prev = _context2.next) {
323
+ case 0:
324
+ _context2.next = 1;
325
+ return fetchMaia({
326
+ path: "agents?agent_type=clone&lang=".concat(mapCORLang(i18n.language)),
327
+ method: 'GET'
328
+ });
329
+ case 1:
330
+ response = _context2.sent;
331
+ _context2.next = 2;
332
+ return response.json();
333
+ case 2:
334
+ data = _context2.sent;
335
+ maiakerAgent = (data.data || []).find(function (agent) {
336
+ return agent.type === 'clone' && agent.entity === 'global';
337
+ });
338
+ if (maiakerAgent) {
339
+ _context2.next = 3;
340
+ break;
341
+ }
342
+ return _context2.abrupt("return");
343
+ case 3:
344
+ setProject(null);
345
+ setClient === null || setClient === void 0 || setClient(null);
346
+ selectAgent(maiakerAgent);
347
+ handleGoToHome();
348
+ case 4:
349
+ case "end":
350
+ return _context2.stop();
351
+ }
352
+ }, _callee2);
353
+ }));
354
+ return function handleOpenCreateAgent() {
355
+ return _ref5.apply(this, arguments);
356
+ };
357
+ }();
296
358
  useEffect(function () {
297
359
  if (isOpen && !chatsFetchedRef.current) {
298
360
  chatsFetchedRef.current = true;
@@ -335,15 +397,15 @@ export var Sidebar = function Sidebar(_ref3) {
335
397
  };
336
398
  }, [hasMoreChats, isLoadingMoreChats, loadMoreChats, hasError]);
337
399
  var handleNewChat = /*#__PURE__*/function () {
338
- var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
339
- return _regeneratorRuntime.wrap(function (_context2) {
340
- while (1) switch (_context2.prev = _context2.next) {
400
+ var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
401
+ return _regeneratorRuntime.wrap(function (_context3) {
402
+ while (1) switch (_context3.prev = _context3.next) {
341
403
  case 0:
342
404
  if (isOpenModal) {
343
405
  setIsOpenModal(null);
344
406
  }
345
407
  setSelectedChat(null);
346
- _context2.next = 1;
408
+ _context3.next = 1;
347
409
  return fetchChats({
348
410
  limit: limit,
349
411
  offset: 0
@@ -352,12 +414,12 @@ export var Sidebar = function Sidebar(_ref3) {
352
414
  handleGoToHome();
353
415
  case 2:
354
416
  case "end":
355
- return _context2.stop();
417
+ return _context3.stop();
356
418
  }
357
- }, _callee2);
419
+ }, _callee3);
358
420
  }));
359
421
  return function handleNewChat() {
360
- return _ref5.apply(this, arguments);
422
+ return _ref6.apply(this, arguments);
361
423
  };
362
424
  }();
363
425
  useEffect(function () {
@@ -373,33 +435,10 @@ export var Sidebar = function Sidebar(_ref3) {
373
435
  };
374
436
  }, []);
375
437
  var showNewChatButton = !showNewChat && !hasError && !loadingChats && ((userPermissions === null || userPermissions === void 0 ? void 0 : userPermissions.view) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.is_deleted) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_permissions) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_access) || !(userPermissions !== null && userPermissions !== void 0 && userPermissions.view) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.is_deleted) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_permissions) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_access));
376
- return /*#__PURE__*/_jsxs("div", {
377
- style: _objectSpread({
378
- backgroundColor: '#f9f9f9',
379
- display: 'flex',
380
- flexDirection: 'column',
381
- padding: '12px 10px',
382
- minWidth: "".concat(isOpen ? '200px' : '46px'),
383
- maxWidth: '270px',
384
- transition: 'all 0.3s ease-in-out',
385
- borderRadius: 'inherit',
386
- borderTopRightRadius: '0',
387
- borderBottomRightRadius: '0',
388
- gap: '12px',
389
- overflow: 'hidden',
390
- overscrollBehavior: 'contain'
391
- }, !isOpen && {
392
- alignItems: 'center',
393
- justifyContent: 'space-between'
394
- }),
395
- children: [/*#__PURE__*/_jsxs("div", {
396
- style: _objectSpread({
397
- display: 'flex',
398
- gap: '22px',
399
- flexDirection: "".concat(isOpen ? 'row-reverse' : 'column')
400
- }, isOpen && {
401
- justifyContent: 'space-between'
402
- }),
438
+ return /*#__PURE__*/_jsxs(SCSSidebarRoot, {
439
+ $isOpen: isOpen,
440
+ children: [/*#__PURE__*/_jsxs(SCSSidebarToolbar, {
441
+ $isOpen: isOpen,
403
442
  children: [/*#__PURE__*/_jsx(Tooltip, {
404
443
  title: isOpen ? t('conversations.collapse') : t('conversations.expand'),
405
444
  children: /*#__PURE__*/_jsx(SCSWrapperCollapsedButton, {
@@ -411,110 +450,70 @@ export var Sidebar = function Sidebar(_ref3) {
411
450
  height: 20
412
451
  })
413
452
  })
414
- }), /*#__PURE__*/_jsx("div", {
415
- style: {
416
- display: 'flex',
417
- gap: "".concat(isOpen ? '16px' : '22px'),
418
- flexDirection: "".concat(isOpen ? 'row' : 'column')
419
- },
420
- children: showNewChatButton && /*#__PURE__*/_jsx(Tooltip, {
421
- title: t('conversations.newChat'),
422
- children: /*#__PURE__*/_jsx(SCSWrapperNewChatIcon, {
423
- onClick: handleNewChat,
424
- children: /*#__PURE__*/_jsx(NewChat, {
425
- width: 20,
426
- height: 20
427
- })
453
+ }), !isOpen ? /*#__PURE__*/_jsx(Tooltip, {
454
+ title: t('conversations.maiakerNav'),
455
+ children: /*#__PURE__*/_jsx(SCSWrapperAgentsNavIcon, {
456
+ onClick: handleOpenCreateAgent,
457
+ $active: agentsNavActive === 'maiaker',
458
+ role: "button",
459
+ tabIndex: 0,
460
+ onKeyDown: function onKeyDown(e) {
461
+ if (e.key === 'Enter' || e.key === ' ') {
462
+ e.preventDefault();
463
+ handleOpenCreateAgent();
464
+ }
465
+ },
466
+ children: /*#__PURE__*/_jsx(MaiaStoreIcon, {
467
+ size: 16
428
468
  })
429
469
  })
430
- })]
431
- }), /*#__PURE__*/_jsxs("div", {
432
- style: {
433
- display: 'flex',
434
- width: '100%',
435
- flexDirection: 'column',
436
- height: 'calc(100% - 32px)',
437
- justifyContent: "".concat(isOpen ? '' : 'flex-end')
438
- },
439
- children: [isOpen && /*#__PURE__*/_jsxs("div", {
440
- style: {
441
- padding: '8px 0 0 0',
442
- display: 'flex',
443
- flexDirection: 'column',
444
- gap: '4px',
445
- flexGrow: 1,
446
- minWidth: '244px'
447
- },
448
- children: [/*#__PURE__*/_jsx("span", {
449
- style: {
450
- fontSize: '14px',
451
- fontWeight: '400',
452
- color: '#666666',
453
- lineHeight: '140%',
454
- paddingLeft: '12px'
455
- },
456
- children: t('conversations.title')
457
- }), /*#__PURE__*/_jsx("div", {
470
+ }) : null, showNewChatButton ? /*#__PURE__*/_jsx(Tooltip, {
471
+ title: t('conversations.newChat'),
472
+ children: /*#__PURE__*/_jsx(SCSWrapperNewChatIcon, {
473
+ onClick: handleNewChat,
474
+ children: /*#__PURE__*/_jsx(NewChat, {
475
+ width: 20,
476
+ height: 20
477
+ })
478
+ })
479
+ }) : null]
480
+ }), /*#__PURE__*/_jsxs(SCSSidebarBody, {
481
+ $isOpen: isOpen,
482
+ children: [isOpen ? /*#__PURE__*/_jsxs(SCSSidebarOpenPanel, {
483
+ children: [/*#__PURE__*/_jsxs(SCSSidebarAgentsBlock, {
484
+ children: [/*#__PURE__*/_jsx(SCSSidebarAgentsHeading, {
485
+ children: /*#__PURE__*/_jsx(SCSSidebarAgentsHeadingText, {
486
+ children: t('conversations.agentsSectionTitle')
487
+ })
488
+ }), /*#__PURE__*/_jsx(SCSSidebarAgentsActions, {
489
+ children: /*#__PURE__*/_jsxs(SCSSidebarMaiakerNavButton, {
490
+ type: "button",
491
+ onClick: handleOpenCreateAgent,
492
+ $active: agentsNavActive === 'maiaker',
493
+ children: [/*#__PURE__*/_jsx(MaiaStoreIcon, {
494
+ size: 16
495
+ }), /*#__PURE__*/_jsx(SCSSidebarMaiakerNavLabel, {
496
+ children: t('conversations.maiakerNav')
497
+ })]
498
+ })
499
+ }), /*#__PURE__*/_jsx(SCSSidebarConversationsHeading, {
500
+ children: t('conversations.title')
501
+ })]
502
+ }), /*#__PURE__*/_jsx(SCSSidebarChatsScroll, {
458
503
  ref: chatsContainerRef,
459
- style: _objectSpread(_objectSpread({
460
- display: 'flex',
461
- flexDirection: 'column',
462
- gap: '4px',
463
- flexGrow: 1,
464
- width: '100%',
465
- overflowY: 'auto',
466
- overscrollBehaviorY: 'contain'
467
- }, chats.length && {
468
- maxHeight: "calc(100vh - ".concat(hasError ? 197 : 160, "px)")
469
- }), !chats.length && {
470
- alignItems: 'center'
471
- }),
472
- children: hasError && !chats.length ? /*#__PURE__*/_jsxs("div", {
473
- style: {
474
- display: 'flex',
475
- alignItems: 'center',
476
- justifyContent: 'center',
477
- flexGrow: 1,
478
- flexDirection: 'column'
479
- },
480
- children: [/*#__PURE__*/_jsx("div", {
481
- style: {
482
- display: 'flex',
483
- alignItems: 'center',
484
- flexGrow: 1
485
- },
504
+ $hasChats: chats.length > 0,
505
+ $offsetVariant: hasError ? 'error' : 'default',
506
+ children: hasError && !chats.length ? /*#__PURE__*/_jsxs(SCSSidebarErrorStateColumn, {
507
+ children: [/*#__PURE__*/_jsx(SCSSidebarErrorStateTop, {
486
508
  children: /*#__PURE__*/_jsx(ErrorState, {})
487
- }), /*#__PURE__*/_jsxs("div", {
488
- style: {
489
- display: 'flex',
490
- alignItems: 'center',
491
- gap: '16px',
492
- backgroundColor: 'rgba(253, 236, 236, 1)',
493
- borderRadius: '8px',
494
- padding: '12px',
495
- border: '1px solid rgba(199, 5, 5, 1)'
496
- },
497
- children: [/*#__PURE__*/_jsx("div", {
498
- style: {
499
- display: 'flex',
500
- alignItems: 'center',
501
- justifyContent: 'center'
502
- },
509
+ }), /*#__PURE__*/_jsxs(SCSSidebarErrorBanner, {
510
+ children: [/*#__PURE__*/_jsx(SCSSidebarErrorBannerIconWrap, {
503
511
  children: /*#__PURE__*/_jsx(ErrorIcon, {})
504
- }), /*#__PURE__*/_jsx("span", {
505
- style: {
506
- fontSize: '14px',
507
- fontWeight: '400',
508
- color: 'rgba(32, 32, 31, 1)',
509
- lineHeight: '140%'
510
- },
512
+ }), /*#__PURE__*/_jsx(SCSSidebarErrorBannerMessage, {
511
513
  children: t('conversations.error')
512
514
  })]
513
515
  })]
514
- }) : loadingChats ? /*#__PURE__*/_jsx("div", {
515
- style: {
516
- height: '670px'
517
- },
516
+ }) : loadingChats ? /*#__PURE__*/_jsx(SCSSidebarLoadingArea, {
518
517
  children: /*#__PURE__*/_jsx(Loader, {})
519
518
  }) : chats.length ? /*#__PURE__*/_jsxs(_Fragment, {
520
519
  children: [chats.map(function (chat) {
@@ -536,82 +535,32 @@ export var Sidebar = function Sidebar(_ref3) {
536
535
  },
537
536
  isSelected: selectedChat === chat.sessionExternalId
538
537
  }, chat.id);
539
- }), isLoadingMoreChats && /*#__PURE__*/_jsx("div", {
540
- style: {
541
- display: 'flex',
542
- justifyContent: 'center',
543
- padding: '16px'
544
- },
538
+ }), isLoadingMoreChats && /*#__PURE__*/_jsx(SCSSidebarLoadMoreRow, {
545
539
  children: /*#__PURE__*/_jsx(Loader, {})
546
540
  })]
547
- }) : /*#__PURE__*/_jsxs("div", {
548
- style: {
549
- display: 'flex',
550
- alignItems: 'center',
551
- justifyContent: 'center',
552
- flexGrow: 1,
553
- flexDirection: 'column',
554
- gap: '18px',
555
- width: '201px'
556
- },
557
- children: [/*#__PURE__*/_jsx(EmptyHistoryIcon, {}), /*#__PURE__*/_jsx("span", {
558
- style: {
559
- fontSize: '14px',
560
- fontWeight: '400',
561
- color: 'rgba(102, 102, 102, 1)',
562
- lineHeight: '140%',
563
- textAlign: 'center'
564
- },
541
+ }) : /*#__PURE__*/_jsxs(SCSSidebarEmptyChats, {
542
+ children: [/*#__PURE__*/_jsx(EmptyHistoryIcon, {}), /*#__PURE__*/_jsx(SCSSidebarEmptyChatsText, {
565
543
  children: t('conversations.empty')
566
544
  })]
567
545
  })
568
- }), /*#__PURE__*/_jsx("div", {
569
- style: {
570
- display: 'flex',
571
- alignItems: 'center',
572
- justifyContent: 'center'
573
- },
574
- children: hasError && chats.length ? /*#__PURE__*/_jsxs("div", {
575
- style: {
576
- display: 'flex',
577
- alignItems: 'center',
578
- gap: '16px',
579
- backgroundColor: 'rgba(253, 236, 236, 1)',
580
- borderRadius: '8px',
581
- padding: '12px',
582
- border: '1px solid rgba(199, 5, 5, 1)'
583
- },
584
- children: [/*#__PURE__*/_jsx("div", {
585
- style: {
586
- display: 'flex',
587
- alignItems: 'center',
588
- justifyContent: 'center'
589
- },
546
+ }), /*#__PURE__*/_jsx(SCSSidebarChatsFooter, {
547
+ children: hasError && chats.length ? /*#__PURE__*/_jsxs(SCSSidebarErrorBanner, {
548
+ children: [/*#__PURE__*/_jsx(SCSSidebarErrorBannerIconWrap, {
590
549
  children: /*#__PURE__*/_jsx(ErrorIcon, {})
591
- }), /*#__PURE__*/_jsx("span", {
592
- style: {
593
- fontSize: '14px',
594
- fontWeight: '400',
595
- color: 'rgba(32, 32, 31, 1)',
596
- lineHeight: '140%'
597
- },
550
+ }), /*#__PURE__*/_jsx(SCSSidebarErrorBannerMessage, {
598
551
  children: t('conversations.error')
599
552
  })]
600
553
  }) : null
601
554
  })]
602
- }), /*#__PURE__*/_jsxs("div", {
603
- style: {
604
- display: 'flex',
605
- gap: '8px',
606
- flexDirection: isOpen ? 'row' : 'column',
607
- justifyContent: selectedAgent ? 'space-between' : 'flex-end'
608
- },
609
- children: [selectedAgent && /*#__PURE__*/_jsx(FeedbackButton, {
555
+ }) : null, /*#__PURE__*/_jsxs(SCSSidebarFooterActions, {
556
+ $isOpen: isOpen,
557
+ $justifyBetween: !!selectedAgent,
558
+ children: [selectedAgent ? /*#__PURE__*/_jsx(FeedbackButton, {
610
559
  selectedAgent: selectedAgent,
611
560
  isOpen: isOpen
612
- }), /*#__PURE__*/_jsx(OnboardingModalButton, {})]
561
+ }) : null, /*#__PURE__*/_jsx(OnboardingModalButton, {})]
613
562
  })]
614
563
  })]
615
564
  });
616
565
  };
617
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNoZXZyb25Eb3VibGVMZWZ0IiwiQ1VCdXR0b24iLCJNZW51RG90cyIsIlBlbmNpbCIsIlRyYXNoIiwiVG9vbHRpcCIsIkVtcHR5SGlzdG9yeUljb24iLCJ1c2VSZXNpemVMaXN0ZW5lciIsInVzZUNoYXRzIiwiTG9hZGVyIiwiRXJyb3JTdGF0ZSIsIk1BSUFJY29uIiwiTmV3Q2hhdCIsIkVWRU5UUyIsInVzZVQiLCJPcHRpb25JdGVtIiwiRWRpdFF1ZXN0aW9uTW9kYWwiLCJEZWxldGVRdWVzdGlvbk1vZGFsIiwiRXJyb3JJY29uIiwidXNlVXNlciIsIk9uYm9hcmRpbmdNb2RhbEJ1dHRvbiIsIkZlZWRiYWNrQnV0dG9uIiwidXNlR2xvYmFsQ29udGV4dCIsIlNDTEhDV3JhcHBlciIsIlNDTEhDV3JhcHBlckFnZW50IiwiU0NMSENXcmFwcGVyQWdlbnRUZXh0IiwiU0NMSENXcmFwcGVyQnV0dG9uQWN0aW9ucyIsIlNDTEhDV3JhcHBlckNvbnRlbnQiLCJTQ0xIQ1dyYXBwZXJUaXRsZSIsIlNDU1dyYXBwZXJDb2xsYXBzZWRCdXR0b24iLCJTQ1NXcmFwcGVyTmV3Q2hhdEljb24iLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJhY3Rpb25zIiwiZWRpdCIsInByb3BzIiwiX29iamVjdFNwcmVhZCIsImRlbGV0ZSIsImFiYnJldmlhdGVTcGVjaWFsaXN0SW5BZ2VudE5hbWUiLCJhZ2VudE5hbWUiLCJyZXBsYWNlIiwiTGlzdEhpc3RvcnlDaGF0IiwiX3JlZiIsImNoYXQiLCJvbkNsaWNrIiwiaXNNb2RhbE9wZW4iLCJvbk9wZW5Nb2RhbCIsIm9uQ2xvc2VNb2RhbCIsImhhbmRsZXJzIiwiaXNTZWxlY3RlZCIsInRleHRSZWYiLCJhZ2VudFJlZiIsIl91c2VSZXNpemVMaXN0ZW5lciIsInRpdGxlIiwic2hvd1Rvb2x0aXAiLCJfdXNlUmVzaXplTGlzdGVuZXIyIiwiYWdlbnQiLCJzaG93VG9vbHRpcEFnZW50IiwiX3VzZVQiLCJ0IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiYWN0aW9uIiwic2V0QWN0aW9uIiwibWVudUl0ZW1zIiwibGFiZWwiLCJvbkNsaWNrSXRlbSIsImNoYXRJZCIsIkljb24iLCJldmVudEtleSIsInBtQWlNZW51RWRpdCIsInBtQWlNZW51RGVsZXRlIiwiaGFuZGxlQ29uZmlybUFjdGlvbiIsImNoYXREYXRhIiwiaGFuZGxlVXBkYXRlQ2hhdCIsImhhbmRsZURlbGV0ZUNoYXQiLCJjaGlsZHJlbiIsImUiLCJzdG9wUHJvcGFnYXRpb24iLCJyZWYiLCJwcm9qZWN0TmFtZSIsImNvbmNhdCIsImFnZW50VHlwZSIsIndpZHRoIiwiaGVpZ2h0Iiwic3R5bGUiLCJmb250U2l6ZSIsImVtb2ppIiwiaWNvbk9ubHkiLCJzaXplIiwidmFyaWFudCIsImV2ZW50IiwiaWQiLCJwb3NpdGlvbiIsInRvcCIsInJpZ2h0IiwiYmFja2dyb3VuZENvbG9yIiwiekluZGV4IiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJib3JkZXJSYWRpdXMiLCJib3JkZXIiLCJtaW5XaWR0aCIsIm1hcCIsIl9yZWYyIiwic2Vzc2lvbkV4dGVybmFsSWQiLCJvbkNsb3NlIiwiaGFuZGxlU2V0SXNPcGVuTW9kYWwiLCJTaWRlYmFyIiwiX3JlZjMiLCJfdXNlciRwZXJtaXNzaW9ucyIsIm9uR29Ub0NoYXQiLCJfcmVmMyRvbkVycm9yIiwib25FcnJvciIsImhhbmRsZUdvVG9Ib21lIiwic2hvd05ld0NoYXQiLCJyZWZldGNoQ2hhdHMiLCJoYW5kbGVTZXRSZWZldGNoQ2hhdHMiLCJoYXNFcnJvciIsInJlc2V0U2VsZWN0ZWRDaGF0UmVmIiwiX3VzZVQyIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpc09wZW4iLCJzZXRJc09wZW4iLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzT3Blbk1vZGFsIiwic2V0SXNPcGVuTW9kYWwiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNlbGVjdGVkQ2hhdCIsInNldFNlbGVjdGVkQ2hhdCIsImNoYXRzRmV0Y2hlZFJlZiIsImNoYXRzQ29udGFpbmVyUmVmIiwidXNlciIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0ZWRBZ2VudCIsIl91c2VDaGF0cyIsImxvYWRpbmdDaGF0cyIsImNoYXRzIiwiZGVsZXRlQ2hhdCIsInVwZGF0ZUNoYXQiLCJmZXRjaENoYXRzIiwibGltaXQiLCJvZmZzZXQiLCJoYXNNb3JlQ2hhdHMiLCJsb2FkTW9yZUNoYXRzIiwiaXNMb2FkaW5nTW9yZUNoYXRzIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJjdXJyZW50IiwiX3JlZjQiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0Iiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYW5kbGVPcGVuTW9kYWwiLCJoYW5kbGVDbG9zZU1vZGFsIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwidGFyZ2V0IiwiY2xvc2VzdCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVUb2dnbGVTaWRlYmFyIiwiaGFuZGxlU2Nyb2xsIiwiX2NoYXRzQ29udGFpbmVyUmVmJGN1Iiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiaXNBdEJvdHRvbSIsImNvbnRhaW5lciIsImhhbmRsZU5ld0NoYXQiLCJfcmVmNSIsIl9jYWxsZWUyIiwiX2NvbnRleHQyIiwiaGFuZGxlUmVmZXRjaFNlc3Npb24iLCJzaG93TmV3Q2hhdEJ1dHRvbiIsInZpZXciLCJpc19kZWxldGVkIiwiaGFzX25vdF9wZXJtaXNzaW9ucyIsImhhc19ub3RfYWNjZXNzIiwicGFkZGluZyIsIm1heFdpZHRoIiwidHJhbnNpdGlvbiIsImJvcmRlclRvcFJpZ2h0UmFkaXVzIiwiYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMiLCJnYXAiLCJvdmVyZmxvdyIsIm92ZXJzY3JvbGxCZWhhdmlvciIsImFsaWduSXRlbXMiLCJqdXN0aWZ5Q29udGVudCIsImNvbG9yIiwiZmxleEdyb3ciLCJmb250V2VpZ2h0IiwibGluZUhlaWdodCIsInBhZGRpbmdMZWZ0Iiwib3ZlcmZsb3dZIiwib3ZlcnNjcm9sbEJlaGF2aW9yWSIsImxlbmd0aCIsIm1heEhlaWdodCIsInRleHRBbGlnbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9TaWRlYmFyL1NpZGViYXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgeyBNdXRhYmxlUmVmT2JqZWN0LCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENoZXZyb25Eb3VibGVMZWZ0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hldnJvbkRvdWJsZUxlZnQnXG5pbXBvcnQgeyBDVUJ1dHRvbiB9IGZyb20gJ0Bwcm9qZWN0Y29yL2J1dHRvbi9saWIvY29tcG9uZW50cy9DVUJ1dHRvbidcbmltcG9ydCB7IE1lbnVEb3RzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvTWVudURvdHMnXG5pbXBvcnQgeyBQZW5jaWwgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9QZW5jaWwnXG5pbXBvcnQgeyBUcmFzaCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1RyYXNoJ1xuXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5cbmltcG9ydCB7IEVtcHR5SGlzdG9yeUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9FbXB0eUhpc3RvcnknXG5pbXBvcnQgeyB1c2VSZXNpemVMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVJlc2l6ZSdcbmltcG9ydCB7IHVzZUNoYXRzIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQ2hhdHMnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBFcnJvclN0YXRlLCBNQUlBSWNvbiwgTmV3Q2hhdCB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgRVZFTlRTIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IE9wdGlvbkl0ZW0gfSBmcm9tICcuLi8uLi9hdG9tcy9DYXJkTWVudS9DYXJkTWVudSdcbmltcG9ydCB7IEVkaXRRdWVzdGlvbk1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0VkaXRRdWVzdGlvbk1vZGFsJ1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9EZWxldGVRdWVzdGlvbk1vZGFsJ1xuaW1wb3J0IHsgRXJyb3JJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMvRXJyb3JJY29uJ1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBPbmJvYXJkaW5nTW9kYWxCdXR0b24gfSBmcm9tICcuLi8uLi9hdG9tcy9PbmJvYXJkaW5nTW9kYWxCdXR0b24nXG5pbXBvcnQgeyBGZWVkYmFja0J1dHRvbiB9IGZyb20gJy4uLy4uL2F0b21zL0ZlZWRiYWNrQnV0dG9uJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQge1xuICBTQ0xIQ1dyYXBwZXIsXG4gIFNDTEhDV3JhcHBlckFnZW50LFxuICBTQ0xIQ1dyYXBwZXJBZ2VudFRleHQsXG4gIFNDTEhDV3JhcHBlckJ1dHRvbkFjdGlvbnMsXG4gIFNDTEhDV3JhcHBlckNvbnRlbnQsXG4gIFNDTEhDV3JhcHBlclRpdGxlLFxuICBTQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uLFxuICBTQ1NXcmFwcGVyTmV3Q2hhdEljb24sXG59IGZyb20gJy4vU2lkZWJhci5zdHlsZXMnXG5cbmNvbnN0IGFjdGlvbnMgPSB7XG4gIGVkaXQ6IChwcm9wczogYW55KSA9PiA8RWRpdFF1ZXN0aW9uTW9kYWwgey4uLnByb3BzfSAvPixcbiAgZGVsZXRlOiAocHJvcHM6IGFueSkgPT4gPERlbGV0ZVF1ZXN0aW9uTW9kYWwgey4uLnByb3BzfSAvPixcbn1cblxuLyoqIEFicmV2aWEgXCJlc3BlY2lhbGlzdGFcIi9cImVzcGVjaWFsaXN0XCIg4oaSIFwiRXNwLlwiIChFUy9QVCkgeSBcInNwZWNpYWxpc3RcIiDihpIgXCJTcGVjLlwiIChFTikgZW4gZWwgbm9tYnJlIGRlbCBhZ2VudGUuICovXG5mdW5jdGlvbiBhYmJyZXZpYXRlU3BlY2lhbGlzdEluQWdlbnROYW1lKGFnZW50TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFhZ2VudE5hbWUgfHwgdHlwZW9mIGFnZW50TmFtZSAhPT0gJ3N0cmluZycpIHJldHVybiBhZ2VudE5hbWVcbiAgcmV0dXJuIGFnZW50TmFtZS5yZXBsYWNlKC9cXGIoZXNwZWNpYWxpc3RhfGVzcGVjaWFsaXN0KVxcYi9naSwgJ0VzcC4nKS5yZXBsYWNlKC9cXGJzcGVjaWFsaXN0XFxiL2dpLCAnU3BlYy4nKVxufVxuXG5jb25zdCBMaXN0SGlzdG9yeUNoYXQgPSAoe1xuICBjaGF0LFxuICBvbkNsaWNrLFxuICBpc01vZGFsT3BlbixcbiAgb25PcGVuTW9kYWwsXG4gIG9uQ2xvc2VNb2RhbCxcbiAgaGFuZGxlcnMsXG4gIGlzU2VsZWN0ZWQsXG59OiB7XG4gIGNoYXQ6IGFueVxuICBvbkNsaWNrOiAoY2hhdDogYW55KSA9PiB2b2lkXG4gIGlzTW9kYWxPcGVuOiBib29sZWFuXG4gIG9uT3Blbk1vZGFsOiAoY2hhdElkOiBzdHJpbmcpID0+IHZvaWRcbiAgb25DbG9zZU1vZGFsOiAoKSA9PiB2b2lkXG4gIGhhbmRsZXJzOiB7XG4gICAgaGFuZGxlRGVsZXRlQ2hhdDogKGNoYXQ6IGFueSkgPT4gdm9pZFxuICAgIGhhbmRsZVVwZGF0ZUNoYXQ6IChjaGF0OiBhbnkpID0+IHZvaWRcbiAgfVxuICBpc1NlbGVjdGVkOiBib29sZWFuXG59KSA9PiB7XG4gIGNvbnN0IHRleHRSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGFnZW50UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB7IHNob3dUb29sdGlwIH0gPSB1c2VSZXNpemVMaXN0ZW5lcih0ZXh0UmVmLCBbY2hhdC50aXRsZV0pXG4gIGNvbnN0IHsgc2hvd1Rvb2x0aXA6IHNob3dUb29sdGlwQWdlbnQgfSA9IHVzZVJlc2l6ZUxpc3RlbmVyKGFnZW50UmVmLCBbY2hhdC5hZ2VudF0pXG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IFthY3Rpb24sIHNldEFjdGlvbl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IG1lbnVJdGVtcyA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogdCgnaGlzdG9yeS5tZW51LnJlbmFtZScpLFxuICAgICAgb25DbGlja0l0ZW06IChjaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBzZXRBY3Rpb24oJ2VkaXQnKVxuICAgICAgICBvbk9wZW5Nb2RhbChjaGF0SWQpXG4gICAgICB9LFxuICAgICAgSWNvbjogUGVuY2lsLFxuICAgICAgZXZlbnRLZXk6IEVWRU5UUy5wbUFpTWVudUVkaXQsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogdCgnaGlzdG9yeS5tZW51LmRlbGV0ZScpLFxuICAgICAgb25DbGlja0l0ZW06IChjaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBzZXRBY3Rpb24oJ2RlbGV0ZScpXG4gICAgICAgIG9uT3Blbk1vZGFsKGNoYXRJZClcbiAgICAgIH0sXG4gICAgICBJY29uOiBUcmFzaCxcbiAgICAgIGV2ZW50S2V5OiBFVkVOVFMucG1BaU1lbnVEZWxldGUsXG4gICAgfSxcbiAgXVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1BY3Rpb24gPSAoY2hhdERhdGE6IGFueSkgPT4ge1xuICAgIGlmIChhY3Rpb24gPT09ICdlZGl0Jykge1xuICAgICAgaGFuZGxlcnMuaGFuZGxlVXBkYXRlQ2hhdChjaGF0RGF0YSlcbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlcnMuaGFuZGxlRGVsZXRlQ2hhdChjaGF0RGF0YSlcbiAgICB9XG4gICAgc2V0QWN0aW9uKG51bGwpXG4gICAgb25DbG9zZU1vZGFsKClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTQ0xIQ1dyYXBwZXJDb250ZW50XG4gICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICBvbkNsaWNrKGNoYXQpXG4gICAgICAgIH19XG4gICAgICAgIGtleT17YGNvbnZlcnNhdGlvbi0ke2NoYXQuc2Vzc2lvbkV4dGVybmFsSWR9YH1cbiAgICAgICAgaXNNb2RhbE9wZW49e2lzTW9kYWxPcGVufVxuICAgICAgICBpc1NlbGVjdGVkPXtpc1NlbGVjdGVkfVxuICAgICAgPlxuICAgICAgICA8U0NMSENXcmFwcGVyPlxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtzaG93VG9vbHRpcCA/IGNoYXQudGl0bGUgOiAnJ30+XG4gICAgICAgICAgICA8U0NMSENXcmFwcGVyVGl0bGUgcmVmPXt0ZXh0UmVmfT57Y2hhdC50aXRsZSB8fCB0KCdjb252ZXJzYXRpb25zLmVtcHR5TGFiZWwnKX08L1NDTEhDV3JhcHBlclRpdGxlPlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17c2hvd1Rvb2x0aXBBZ2VudCA/IGNoYXQuYWdlbnQgKyAoY2hhdC5wcm9qZWN0TmFtZSA/IGAgLSAke2NoYXQucHJvamVjdE5hbWV9YCA6ICcnKSA6ICcnfT5cbiAgICAgICAgICAgIDxTQ0xIQ1dyYXBwZXJBZ2VudD5cbiAgICAgICAgICAgICAge2NoYXQuYWdlbnRUeXBlID09PSAnY2xvbmUnID8gKFxuICAgICAgICAgICAgICAgIDxNQUlBSWNvbiB3aWR0aD17MTR9IGhlaWdodD17MTR9IC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZm9udFNpemU6ICcxNHB4JyB9fT57Y2hhdC5lbW9qaX08L3NwYW4+XG4gICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgPFNDTEhDV3JhcHBlckFnZW50VGV4dCByZWY9e2FnZW50UmVmfT5cbiAgICAgICAgICAgICAgICB7Y2hhdC5hZ2VudFR5cGUgPT09ICdjbG9uZScgPyBhYmJyZXZpYXRlU3BlY2lhbGlzdEluQWdlbnROYW1lKGNoYXQuYWdlbnQpIDogY2hhdC5hZ2VudH1cbiAgICAgICAgICAgICAgICB7Y2hhdC5wcm9qZWN0TmFtZSAmJiBgIC0gJHtjaGF0LnByb2plY3ROYW1lfWB9XG4gICAgICAgICAgICAgIDwvU0NMSENXcmFwcGVyQWdlbnRUZXh0PlxuICAgICAgICAgICAgPC9TQ0xIQ1dyYXBwZXJBZ2VudD5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDwvU0NMSENXcmFwcGVyPlxuICAgICAgICA8U0NMSENXcmFwcGVyQnV0dG9uQWN0aW9ucz5cbiAgICAgICAgICA8Q1VCdXR0b25cbiAgICAgICAgICAgIGljb25Pbmx5XG4gICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICBvbk9wZW5Nb2RhbChjaGF0LmlkKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8TWVudURvdHMgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgIDwvQ1VCdXR0b24+XG4gICAgICAgICAge2lzTW9kYWxPcGVuICYmICFhY3Rpb24gJiYgKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBkYXRhLW1vZGFsLWNvbnRhaW5lclxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgIHRvcDogJzMycHgnLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiAnMTZweCcsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnd2hpdGUnLFxuICAgICAgICAgICAgICAgIHpJbmRleDogMTAwMCxcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICAgICAgICAgICAgICBib3JkZXI6ICcxcHggc29saWQgcmdiYSgyMjQsIDIyNCwgMjI0LCAxKScsXG4gICAgICAgICAgICAgICAgbWluV2lkdGg6ICcxMjRweCcsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttZW51SXRlbXMubWFwKCh7IGxhYmVsLCBvbkNsaWNrSXRlbSwgSWNvbiwgZXZlbnRLZXkgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxPcHRpb25JdGVtXG4gICAgICAgICAgICAgICAgICBrZXk9e2xhYmVsfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2xhYmVsfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25DbGlja0l0ZW0oY2hhdC5pZCl9XG4gICAgICAgICAgICAgICAgICBJY29uPXtJY29ufVxuICAgICAgICAgICAgICAgICAgZXZlbnRLZXk9e2V2ZW50S2V5fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TQ0xIQ1dyYXBwZXJCdXR0b25BY3Rpb25zPlxuICAgICAgPC9TQ0xIQ1dyYXBwZXJDb250ZW50PlxuICAgICAgeyEhYWN0aW9uICYmXG4gICAgICAgIGFjdGlvbnNbYWN0aW9uXSh7XG4gICAgICAgICAgb25DbG9zZTogKCkgPT4ge1xuICAgICAgICAgICAgb25DbG9zZU1vZGFsKClcbiAgICAgICAgICAgIHNldEFjdGlvbihudWxsKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2hhdCxcbiAgICAgICAgICBoYW5kbGVyczoge1xuICAgICAgICAgICAgaGFuZGxlQ29uZmlybUFjdGlvbixcbiAgICAgICAgICAgIGhhbmRsZVNldElzT3Blbk1vZGFsOiBvbkNsb3NlTW9kYWwsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSl9XG4gICAgPC8+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IFNpZGViYXIgPSAoe1xuICBvbkdvVG9DaGF0LFxuICBvbkVycm9yID0gKCkgPT4gbnVsbCxcbiAgaGFuZGxlR29Ub0hvbWUsXG4gIHNob3dOZXdDaGF0LFxuICByZWZldGNoQ2hhdHMsXG4gIGhhbmRsZVNldFJlZmV0Y2hDaGF0cyxcbiAgaGFzRXJyb3IsXG4gIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLFxufToge1xuICBvbkdvVG9DaGF0OiAoY2hhdElkOiBzdHJpbmcpID0+IHZvaWRcbiAgb25FcnJvcjogKCkgPT4gdm9pZFxuICBoYW5kbGVHb1RvSG9tZTogKCkgPT4gdm9pZFxuICBzaG93TmV3Q2hhdDogYm9vbGVhblxuICByZWZldGNoQ2hhdHM6IGJvb2xlYW5cbiAgaGFuZGxlU2V0UmVmZXRjaENoYXRzOiAocmVmZXRjaDogYm9vbGVhbikgPT4gdm9pZFxuICBoYXNFcnJvcjogYm9vbGVhblxuICByZXNldFNlbGVjdGVkQ2hhdFJlZj86IE11dGFibGVSZWZPYmplY3Q8KCgpID0+IHZvaWQpIHwgbnVsbD5cbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKHRydWUpXG4gIGNvbnN0IFtpc09wZW5Nb2RhbCwgc2V0SXNPcGVuTW9kYWxdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW3NlbGVjdGVkQ2hhdCwgc2V0U2VsZWN0ZWRDaGF0XSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGNoYXRzRmV0Y2hlZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgY2hhdHNDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgeyBhZ2VudDogc2VsZWN0ZWRBZ2VudCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHtcbiAgICBsb2FkaW5nQ2hhdHMsXG4gICAgY2hhdHMsXG4gICAgZGVsZXRlQ2hhdCxcbiAgICB1cGRhdGVDaGF0LFxuICAgIGZldGNoQ2hhdHMsXG4gICAgbGltaXQsXG4gICAgb2Zmc2V0LFxuICAgIGhhc01vcmVDaGF0cyxcbiAgICBsb2FkTW9yZUNoYXRzLFxuICAgIGlzTG9hZGluZ01vcmVDaGF0cyxcbiAgfSA9IHVzZUNoYXRzKHtcbiAgICBvbkVycm9yLFxuICB9KVxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZikge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCA9ICgpID0+IHNldFNlbGVjdGVkQ2hhdChudWxsKVxuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmKSB7XG4gICAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICB9LCBbcmVzZXRTZWxlY3RlZENoYXRSZWZdKVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUNoYXQgPSBhc3luYyAoY2hhdDogYW55KSA9PiB7XG4gICAgZGVsZXRlQ2hhdChjaGF0LnNlc3Npb25FeHRlcm5hbElkKVxuICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgaGFuZGxlR29Ub0hvbWUoKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlVXBkYXRlQ2hhdCA9IChjaGF0OiBhbnkpID0+IHtcbiAgICB1cGRhdGVDaGF0KGNoYXQpXG4gICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbCA9IChjaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgIGlmIChpc09wZW5Nb2RhbCAmJiBpc09wZW5Nb2RhbCAhPT0gY2hhdElkKSB7XG4gICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRJc09wZW5Nb2RhbChjaGF0SWQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChpc09wZW5Nb2RhbCAmJiAhKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS5jbG9zZXN0KCdbZGF0YS1tb2RhbC1jb250YWluZXJdJykpIHtcbiAgICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNPcGVuTW9kYWwpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIH1cbiAgfSwgW2lzT3Blbk1vZGFsXSlcblxuICBjb25zdCBoYW5kbGVUb2dnbGVTaWRlYmFyID0gKCkgPT4ge1xuICAgIGlmIChpc09wZW5Nb2RhbCkge1xuICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICB9XG4gICAgc2V0SXNPcGVuKHByZXYgPT4gIXByZXYpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc09wZW4gJiYgIWNoYXRzRmV0Y2hlZFJlZi5jdXJyZW50KSB7XG4gICAgICBjaGF0c0ZldGNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGZldGNoQ2hhdHMoeyBsaW1pdCwgb2Zmc2V0IH0pXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKHJlZmV0Y2hDaGF0cykge1xuICAgICAgZmV0Y2hDaGF0cyh7IGxpbWl0LCBvZmZzZXQgfSlcbiAgICAgIGhhbmRsZVNldFJlZmV0Y2hDaGF0cyhmYWxzZSlcbiAgICB9XG4gIH0sIFtpc09wZW4sIHJlZmV0Y2hDaGF0cywgaGFuZGxlU2V0UmVmZXRjaENoYXRzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVNjcm9sbCA9ICgpID0+IHtcbiAgICAgIGlmICghY2hhdHNDb250YWluZXJSZWYuY3VycmVudCB8fCAhaGFzTW9yZUNoYXRzIHx8IGlzTG9hZGluZ01vcmVDaGF0cyB8fCBoYXNFcnJvcikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBjaGF0c0NvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgICBjb25zdCBpc0F0Qm90dG9tID0gc2Nyb2xsVG9wICsgY2xpZW50SGVpZ2h0ID49IHNjcm9sbEhlaWdodCAtIDEwXG5cbiAgICAgIGlmIChpc0F0Qm90dG9tKSB7XG4gICAgICAgIGxvYWRNb3JlQ2hhdHMoKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNoYXRzQ29udGFpbmVyUmVmLmN1cnJlbnRcbiAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgIGNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgICB9XG4gICAgfVxuICB9LCBbaGFzTW9yZUNoYXRzLCBpc0xvYWRpbmdNb3JlQ2hhdHMsIGxvYWRNb3JlQ2hhdHMsIGhhc0Vycm9yXSlcblxuICBjb25zdCBoYW5kbGVOZXdDaGF0ID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmIChpc09wZW5Nb2RhbCkge1xuICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICB9XG4gICAgc2V0U2VsZWN0ZWRDaGF0KG51bGwpXG4gICAgYXdhaXQgZmV0Y2hDaGF0cyh7IGxpbWl0LCBvZmZzZXQ6IDAgfSlcbiAgICBoYW5kbGVHb1RvSG9tZSgpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVJlZmV0Y2hTZXNzaW9uID0gKCkgPT4ge1xuICAgICAgZmV0Y2hDaGF0cyh7IGxpbWl0OiAyMCwgb2Zmc2V0OiAwIH0pXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3JlZmV0Y2gtc2Vzc2lvbicsIGhhbmRsZVJlZmV0Y2hTZXNzaW9uKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdyZWZldGNoLXNlc3Npb24nLCBoYW5kbGVSZWZldGNoU2Vzc2lvbilcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IHNob3dOZXdDaGF0QnV0dG9uID1cbiAgICAhc2hvd05ld0NoYXQgJiZcbiAgICAhaGFzRXJyb3IgJiZcbiAgICAhbG9hZGluZ0NoYXRzICYmXG4gICAgKCh1c2VyUGVybWlzc2lvbnM/LnZpZXcgJiZcbiAgICAgICFzZWxlY3RlZEFnZW50Py5pc19kZWxldGVkICYmXG4gICAgICAhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyAmJlxuICAgICAgIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfYWNjZXNzKSB8fFxuICAgICAgKCF1c2VyUGVybWlzc2lvbnM/LnZpZXcgJiZcbiAgICAgICAgIXNlbGVjdGVkQWdlbnQ/LmlzX2RlbGV0ZWQgJiZcbiAgICAgICAgIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgJiZcbiAgICAgICAgIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfYWNjZXNzKSlcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJyNmOWY5ZjknLFxuICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICBwYWRkaW5nOiAnMTJweCAxMHB4JyxcbiAgICAgICAgbWluV2lkdGg6IGAke2lzT3BlbiA/ICcyMDBweCcgOiAnNDZweCd9YCxcbiAgICAgICAgbWF4V2lkdGg6ICcyNzBweCcsXG4gICAgICAgIHRyYW5zaXRpb246ICdhbGwgMC4zcyBlYXNlLWluLW91dCcsXG4gICAgICAgIGJvcmRlclJhZGl1czogJ2luaGVyaXQnLFxuICAgICAgICBib3JkZXJUb3BSaWdodFJhZGl1czogJzAnLFxuICAgICAgICBib3JkZXJCb3R0b21SaWdodFJhZGl1czogJzAnLFxuICAgICAgICBnYXA6ICcxMnB4JyxcbiAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICBvdmVyc2Nyb2xsQmVoYXZpb3I6ICdjb250YWluJyxcbiAgICAgICAgLi4uKCFpc09wZW4gJiYgeyBhbGlnbkl0ZW1zOiAnY2VudGVyJywganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyB9KSxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICBnYXA6ICcyMnB4JyxcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiBgJHtpc09wZW4gPyAncm93LXJldmVyc2UnIDogJ2NvbHVtbid9YCxcbiAgICAgICAgICAuLi4oaXNPcGVuICYmIHsganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyB9KSxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPFRvb2x0aXAgdGl0bGU9e2lzT3BlbiA/IHQoJ2NvbnZlcnNhdGlvbnMuY29sbGFwc2UnKSA6IHQoJ2NvbnZlcnNhdGlvbnMuZXhwYW5kJyl9PlxuICAgICAgICAgIDxTQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uIG9uQ2xpY2s9e2hhbmRsZVRvZ2dsZVNpZGViYXJ9IGlzT3Blbj17aXNPcGVufT5cbiAgICAgICAgICAgIDxDaGV2cm9uRG91YmxlTGVmdCBjb2xvcj1cInJnYmEoMTAyLCAxMDIsIDEwMiwgMSlcIiB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgPC9TQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uPlxuICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGdhcDogYCR7aXNPcGVuID8gJzE2cHgnIDogJzIycHgnfWAsIGZsZXhEaXJlY3Rpb246IGAke2lzT3BlbiA/ICdyb3cnIDogJ2NvbHVtbid9YCB9fVxuICAgICAgICA+XG4gICAgICAgICAge3Nob3dOZXdDaGF0QnV0dG9uICYmIChcbiAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjb252ZXJzYXRpb25zLm5ld0NoYXQnKX0+XG4gICAgICAgICAgICAgIDxTQ1NXcmFwcGVyTmV3Q2hhdEljb24gb25DbGljaz17aGFuZGxlTmV3Q2hhdH0+XG4gICAgICAgICAgICAgICAgPE5ld0NoYXQgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICA8L1NDU1dyYXBwZXJOZXdDaGF0SWNvbj5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgIGhlaWdodDogJ2NhbGMoMTAwJSAtIDMycHgpJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogYCR7aXNPcGVuID8gJycgOiAnZmxleC1lbmQnfWAsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtpc09wZW4gJiYgKFxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIHBhZGRpbmc6ICc4cHggMCAwIDAnLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICBnYXA6ICc0cHgnLFxuICAgICAgICAgICAgICBmbGV4R3JvdzogMSxcbiAgICAgICAgICAgICAgbWluV2lkdGg6ICcyNDRweCcsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZm9udFNpemU6ICcxNHB4JyxcbiAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiAnNDAwJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJyM2NjY2NjYnLFxuICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6ICcxNDAlJyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdDogJzEycHgnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dCgnY29udmVyc2F0aW9ucy50aXRsZScpfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICByZWY9e2NoYXRzQ29udGFpbmVyUmVmfVxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgICAgICBnYXA6ICc0cHgnLFxuICAgICAgICAgICAgICAgIGZsZXhHcm93OiAxLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3dZOiAnYXV0bycsXG4gICAgICAgICAgICAgICAgb3ZlcnNjcm9sbEJlaGF2aW9yWTogJ2NvbnRhaW4nLFxuICAgICAgICAgICAgICAgIC4uLihjaGF0cy5sZW5ndGggJiYgeyBtYXhIZWlnaHQ6IGBjYWxjKDEwMHZoIC0gJHtoYXNFcnJvciA/IDE5NyA6IDE2MH1weClgIH0pLFxuICAgICAgICAgICAgICAgIC4uLighY2hhdHMubGVuZ3RoICYmIHsgYWxpZ25JdGVtczogJ2NlbnRlcicgfSksXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtoYXNFcnJvciAmJiAhY2hhdHMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgZmxleEdyb3c6IDEsXG4gICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGZsZXhHcm93OiAxIH19PlxuICAgICAgICAgICAgICAgICAgICA8RXJyb3JTdGF0ZSAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgIGdhcDogJzE2cHgnLFxuICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMjUzLCAyMzYsIDIzNiwgMSknLFxuICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzhweCcsXG4gICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJzEycHgnLFxuICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCByZ2JhKDE5OSwgNSwgNSwgMSknLFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyB9fT5cbiAgICAgICAgICAgICAgICAgICAgICA8RXJyb3JJY29uIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogJzE0cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogJzQwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMzIsIDMyLCAzMSwgMSknLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZUhlaWdodDogJzE0MCUnLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7dCgnY29udmVyc2F0aW9ucy5lcnJvcicpfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKSA6IGxvYWRpbmdDaGF0cyA/IChcbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGhlaWdodDogJzY3MHB4JyB9fT5cbiAgICAgICAgICAgICAgICAgIDxMb2FkZXIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKSA6IGNoYXRzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAge2NoYXRzLm1hcChjaGF0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICA8TGlzdEhpc3RvcnlDaGF0XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2NoYXQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGF0PXtjaGF0fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2hhdERhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNPcGVuTW9kYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkQ2hhdChjaGF0RGF0YS5zZXNzaW9uRXh0ZXJuYWxJZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25Hb1RvQ2hhdChjaGF0RGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBpc01vZGFsT3Blbj17aXNPcGVuTW9kYWwgPT09IGNoYXQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbk9wZW5Nb2RhbD17aGFuZGxlT3Blbk1vZGFsfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbG9zZU1vZGFsPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlRGVsZXRlQ2hhdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlVXBkYXRlQ2hhdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzZWxlY3RlZENoYXQgPT09IGNoYXQuc2Vzc2lvbkV4dGVybmFsSWR9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nTW9yZUNoYXRzICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJywgcGFkZGluZzogJzE2cHgnIH19PlxuICAgICAgICAgICAgICAgICAgICAgIDxMb2FkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgZmxleEdyb3c6IDEsXG4gICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICAgICAgICBnYXA6ICcxOHB4JyxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcyMDFweCcsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxFbXB0eUhpc3RvcnlJY29uIC8+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogJzQwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDEwMiwgMTAyLCAxMDIsIDEpJyxcbiAgICAgICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiAnMTQwJScsXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3QoJ2NvbnZlcnNhdGlvbnMuZW1wdHknKX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtoYXNFcnJvciAmJiBjaGF0cy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgZ2FwOiAnMTZweCcsXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMjUzLCAyMzYsIDIzNiwgMSknLFxuICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc4cHgnLFxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAnMTJweCcsXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCByZ2JhKDE5OSwgNSwgNSwgMSknLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyB9fT5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9ySWNvbiAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogJzQwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDMyLCAzMiwgMzEsIDEpJyxcbiAgICAgICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiAnMTQwJScsXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt0KCdjb252ZXJzYXRpb25zLmVycm9yJyl9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgZ2FwOiAnOHB4JyxcbiAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246IGlzT3BlbiA/ICdyb3cnIDogJ2NvbHVtbicsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogc2VsZWN0ZWRBZ2VudCA/ICdzcGFjZS1iZXR3ZWVuJyA6ICdmbGV4LWVuZCcsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtzZWxlY3RlZEFnZW50ICYmIDxGZWVkYmFja0J1dHRvbiBzZWxlY3RlZEFnZW50PXtzZWxlY3RlZEFnZW50fSBpc09wZW49e2lzT3Blbn0gLz59XG4gICAgICAgICAgPE9uYm9hcmRpbmdNb2RhbEJ1dHRvbiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQTJCQSxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDckUsU0FBU0MsaUJBQWlCLFFBQVEsb0RBQW9EO0FBQ3RGLFNBQVNDLFFBQVEsUUFBUSw0Q0FBNEM7QUFDckUsU0FBU0MsUUFBUSxRQUFRLDJDQUEyQztBQUNwRSxTQUFTQyxNQUFNLFFBQVEseUNBQXlDO0FBQ2hFLFNBQVNDLEtBQUssUUFBUSx3Q0FBd0M7QUFFOUQsU0FBU0MsT0FBTyxRQUFRLDhDQUE4QztBQUV0RSxTQUFTQyxnQkFBZ0IsUUFBUSxnQ0FBZ0M7QUFDakUsU0FBU0MsaUJBQWlCLFFBQVEsMEJBQTBCO0FBQzVELFNBQVNDLFFBQVEsUUFBUSx5QkFBeUI7QUFDbEQsU0FBU0MsTUFBTSxRQUFRLG9CQUFvQjtBQUMzQyxTQUFTQyxVQUFVLEVBQUVDLFFBQVEsRUFBRUMsT0FBTyxRQUFRLG1CQUFtQjtBQUNqRSxTQUFTQyxNQUFNLFFBQVEseUJBQXlCO0FBQ2hELFNBQVNDLElBQUksUUFBUSxxQkFBcUI7QUFDMUMsU0FBU0MsVUFBVSxRQUFRLCtCQUErQjtBQUMxRCxTQUFTQyxpQkFBaUIsUUFBUSxtQ0FBbUM7QUFDckUsU0FBU0MsbUJBQW1CLFFBQVEs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
566
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNoZXZyb25Eb3VibGVMZWZ0IiwiQ1VCdXR0b24iLCJNZW51RG90cyIsIlBlbmNpbCIsIlRyYXNoIiwiVG9vbHRpcCIsIkVtcHR5SGlzdG9yeUljb24iLCJ1c2VSZXNpemVMaXN0ZW5lciIsInVzZUNoYXRzIiwiTG9hZGVyIiwiRXJyb3JTdGF0ZSIsIk1BSUFJY29uIiwiTWFpYVN0b3JlSWNvbiIsIk5ld0NoYXQiLCJFVkVOVFMiLCJ1c2VUIiwiT3B0aW9uSXRlbSIsIkVkaXRRdWVzdGlvbk1vZGFsIiwiRGVsZXRlUXVlc3Rpb25Nb2RhbCIsIkVycm9ySWNvbiIsInVzZVVzZXIiLCJPbmJvYXJkaW5nTW9kYWxCdXR0b24iLCJGZWVkYmFja0J1dHRvbiIsInVzZUdsb2JhbENvbnRleHQiLCJmZXRjaE1haWEiLCJtYXBDT1JMYW5nIiwiU0NMSENXcmFwcGVyIiwiU0NMSENXcmFwcGVyQWdlbnQiLCJTQ0xIQ1dyYXBwZXJBZ2VudFRleHQiLCJTQ0xIQ1dyYXBwZXJCdXR0b25BY3Rpb25zIiwiU0NMSENXcmFwcGVyQ29udGVudCIsIlNDTEhDV3JhcHBlclRpdGxlIiwiU0NTV3JhcHBlckNvbGxhcHNlZEJ1dHRvbiIsIlNDU1dyYXBwZXJOZXdDaGF0SWNvbiIsIlNDU1dyYXBwZXJBZ2VudHNOYXZJY29uIiwiU0NTU2lkZWJhclJvb3QiLCJTQ1NTaWRlYmFyVG9vbGJhciIsIlNDU1NpZGViYXJCb2R5IiwiU0NTU2lkZWJhck9wZW5QYW5lbCIsIlNDU1NpZGViYXJBZ2VudHNCbG9jayIsIlNDU1NpZGViYXJBZ2VudHNIZWFkaW5nIiwiU0NTU2lkZWJhckFnZW50c0hlYWRpbmdUZXh0IiwiU0NTU2lkZWJhckFnZW50c0FjdGlvbnMiLCJTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbiIsIlNDU1NpZGViYXJNYWlha2VyTmF2TGFiZWwiLCJTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmciLCJTQ1NTaWRlYmFyQ2hhdHNTY3JvbGwiLCJTQ1NTaWRlYmFyRXJyb3JTdGF0ZUNvbHVtbiIsIlNDU1NpZGViYXJFcnJvclN0YXRlVG9wIiwiU0NTU2lkZWJhckVycm9yQmFubmVyIiwiU0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXAiLCJTQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlIiwiU0NTU2lkZWJhckxvYWRpbmdBcmVhIiwiU0NTU2lkZWJhckxvYWRNb3JlUm93IiwiU0NTU2lkZWJhckVtcHR5Q2hhdHMiLCJTQ1NTaWRlYmFyRW1wdHlDaGF0c1RleHQiLCJTQ1NTaWRlYmFyQ2hhdHNGb290ZXIiLCJTQ1NTaWRlYmFyRm9vdGVyQWN0aW9ucyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImFjdGlvbnMiLCJlZGl0IiwicHJvcHMiLCJfb2JqZWN0U3ByZWFkIiwiZGVsZXRlIiwiYWJicmV2aWF0ZVNwZWNpYWxpc3RJbkFnZW50TmFtZSIsImFnZW50TmFtZSIsInJlcGxhY2UiLCJMaXN0SGlzdG9yeUNoYXQiLCJfcmVmIiwiY2hhdCIsIm9uQ2xpY2siLCJpc01vZGFsT3BlbiIsIm9uT3Blbk1vZGFsIiwib25DbG9zZU1vZGFsIiwiaGFuZGxlcnMiLCJpc1NlbGVjdGVkIiwidGV4dFJlZiIsImFnZW50UmVmIiwiX3VzZVJlc2l6ZUxpc3RlbmVyIiwidGl0bGUiLCJzaG93VG9vbHRpcCIsIl91c2VSZXNpemVMaXN0ZW5lcjIiLCJhZ2VudCIsInNob3dUb29sdGlwQWdlbnQiLCJfdXNlVCIsInQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJhY3Rpb24iLCJzZXRBY3Rpb24iLCJtZW51SXRlbXMiLCJsYWJlbCIsIm9uQ2xpY2tJdGVtIiwiY2hhdElkIiwiSWNvbiIsImV2ZW50S2V5IiwicG1BaU1lbnVFZGl0IiwicG1BaU1lbnVEZWxldGUiLCJoYW5kbGVDb25maXJtQWN0aW9uIiwiY2hhdERhdGEiLCJoYW5kbGVVcGRhdGVDaGF0IiwiaGFuZGxlRGVsZXRlQ2hhdCIsImNoaWxkcmVuIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsInJlZiIsInByb2plY3ROYW1lIiwiY29uY2F0IiwiYWdlbnRUeXBlIiwid2lkdGgiLCJoZWlnaHQiLCJzdHlsZSIsImZvbnRTaXplIiwiZW1vamkiLCJpY29uT25seSIsInNpemUiLCJ2YXJpYW50IiwiZXZlbnQiLCJpZCIsInBvc2l0aW9uIiwidG9wIiwicmlnaHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJ6SW5kZXgiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImJvcmRlclJhZGl1cyIsImJvcmRlciIsIm1pbldpZHRoIiwibWFwIiwiX3JlZjIiLCJzZXNzaW9uRXh0ZXJuYWxJZCIsIm9uQ2xvc2UiLCJoYW5kbGVTZXRJc09wZW5Nb2RhbCIsIlNpZGViYXIiLCJfcmVmMyIsIl91c2VyJHBlcm1pc3Npb25zIiwib25Hb1RvQ2hhdCIsIl9yZWYzJG9uRXJyb3IiLCJvbkVycm9yIiwiaGFuZGxlR29Ub0hvbWUiLCJzaG93TmV3Q2hhdCIsInJlZmV0Y2hDaGF0cyIsImhhbmRsZVNldFJlZmV0Y2hDaGF0cyIsImhhc0Vycm9yIiwicmVzZXRTZWxlY3RlZENoYXRSZWYiLCJfcmVmMyRhZ2VudHNOYXZBY3RpdmUiLCJhZ2VudHNOYXZBY3RpdmUiLCJfdXNlVDIiLCJpMThuIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpc09wZW4iLCJzZXRJc09wZW4iLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzT3Blbk1vZGFsIiwic2V0SXNPcGVuTW9kYWwiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNlbGVjdGVkQ2hhdCIsInNldFNlbGVjdGVkQ2hhdCIsImNoYXRzRmV0Y2hlZFJlZiIsImNoYXRzQ29udGFpbmVyUmVmIiwidXNlciIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0ZWRBZ2VudCIsInNlbGVjdEFnZW50Iiwic2V0UHJvamVjdCIsInNldENsaWVudCIsIl91c2VDaGF0cyIsImxvYWRpbmdDaGF0cyIsImNoYXRzIiwiZGVsZXRlQ2hhdCIsInVwZGF0ZUNoYXQiLCJmZXRjaENoYXRzIiwibGltaXQiLCJvZmZzZXQiLCJoYXNNb3JlQ2hhdHMiLCJsb2FkTW9yZUNoYXRzIiwiaXNMb2FkaW5nTW9yZUNoYXRzIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJjdXJyZW50IiwiX3JlZjQiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0Iiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYW5kbGVPcGVuTW9kYWwiLCJoYW5kbGVDbG9zZU1vZGFsIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwidGFyZ2V0IiwiY2xvc2VzdCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVUb2dnbGVTaWRlYmFyIiwiaGFuZGxlT3BlbkNyZWF0ZUFnZW50IiwiX3JlZjUiLCJfY2FsbGVlMiIsInJlc3BvbnNlIiwiZGF0YSIsIm1haWFrZXJBZ2VudCIsIl9jb250ZXh0MiIsInBhdGgiLCJsYW5ndWFnZSIsIm1ldGhvZCIsInNlbnQiLCJqc29uIiwiZmluZCIsInR5cGUiLCJlbnRpdHkiLCJhYnJ1cHQiLCJoYW5kbGVTY3JvbGwiLCJfY2hhdHNDb250YWluZXJSZWYkY3UiLCJzY3JvbGxUb3AiLCJzY3JvbGxIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJpc0F0Qm90dG9tIiwiY29udGFpbmVyIiwiaGFuZGxlTmV3Q2hhdCIsIl9yZWY2IiwiX2NhbGxlZTMiLCJfY29udGV4dDMiLCJoYW5kbGVSZWZldGNoU2Vzc2lvbiIsInNob3dOZXdDaGF0QnV0dG9uIiwidmlldyIsImlzX2RlbGV0ZWQiLCJoYXNfbm90X3Blcm1pc3Npb25zIiwiaGFzX25vdF9hY2Nlc3MiLCIkaXNPcGVuIiwiY29sb3IiLCIkYWN0aXZlIiwicm9sZSIsInRhYkluZGV4Iiwib25LZXlEb3duIiwia2V5IiwicHJldmVudERlZmF1bHQiLCIkaGFzQ2hhdHMiLCJsZW5ndGgiLCIkb2Zmc2V0VmFyaWFudCIsIiRqdXN0aWZ5QmV0d2VlbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9TaWRlYmFyL1NpZGViYXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgeyBNdXRhYmxlUmVmT2JqZWN0LCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENoZXZyb25Eb3VibGVMZWZ0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hldnJvbkRvdWJsZUxlZnQnXG5pbXBvcnQgeyBDVUJ1dHRvbiB9IGZyb20gJ0Bwcm9qZWN0Y29yL2J1dHRvbi9saWIvY29tcG9uZW50cy9DVUJ1dHRvbidcbmltcG9ydCB7IE1lbnVEb3RzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvTWVudURvdHMnXG5pbXBvcnQgeyBQZW5jaWwgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9QZW5jaWwnXG5pbXBvcnQgeyBUcmFzaCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1RyYXNoJ1xuXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5cbmltcG9ydCB7IEVtcHR5SGlzdG9yeUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9FbXB0eUhpc3RvcnknXG5pbXBvcnQgeyB1c2VSZXNpemVMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVJlc2l6ZSdcbmltcG9ydCB7IHVzZUNoYXRzIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQ2hhdHMnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBFcnJvclN0YXRlLCBNQUlBSWNvbiwgTWFpYVN0b3JlSWNvbiwgTmV3Q2hhdCB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgRVZFTlRTIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IE9wdGlvbkl0ZW0gfSBmcm9tICcuLi8uLi9hdG9tcy9DYXJkTWVudS9DYXJkTWVudSdcbmltcG9ydCB7IEVkaXRRdWVzdGlvbk1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0VkaXRRdWVzdGlvbk1vZGFsJ1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9EZWxldGVRdWVzdGlvbk1vZGFsJ1xuaW1wb3J0IHsgRXJyb3JJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMvRXJyb3JJY29uJ1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBPbmJvYXJkaW5nTW9kYWxCdXR0b24gfSBmcm9tICcuLi8uLi9hdG9tcy9PbmJvYXJkaW5nTW9kYWxCdXR0b24nXG5pbXBvcnQgeyBGZWVkYmFja0J1dHRvbiB9IGZyb20gJy4uLy4uL2F0b21zL0ZlZWRiYWNrQnV0dG9uJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBmZXRjaE1haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL2NsaWVudCdcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHtcbiAgU0NMSENXcmFwcGVyLFxuICBTQ0xIQ1dyYXBwZXJBZ2VudCxcbiAgU0NMSENXcmFwcGVyQWdlbnRUZXh0LFxuICBTQ0xIQ1dyYXBwZXJCdXR0b25BY3Rpb25zLFxuICBTQ0xIQ1dyYXBwZXJDb250ZW50LFxuICBTQ0xIQ1dyYXBwZXJUaXRsZSxcbiAgU0NTV3JhcHBlckNvbGxhcHNlZEJ1dHRvbixcbiAgU0NTV3JhcHBlck5ld0NoYXRJY29uLFxuICBTQ1NXcmFwcGVyQWdlbnRzTmF2SWNvbixcbn0gZnJvbSAnLi9TaWRlYmFyLnN0eWxlcydcbmltcG9ydCB7XG4gIFNDU1NpZGViYXJSb290LFxuICBTQ1NTaWRlYmFyVG9vbGJhcixcbiAgU0NTU2lkZWJhckJvZHksXG4gIFNDU1NpZGViYXJPcGVuUGFuZWwsXG4gIFNDU1NpZGViYXJBZ2VudHNCbG9jayxcbiAgU0NTU2lkZWJhckFnZW50c0hlYWRpbmcsXG4gIFNDU1NpZGViYXJBZ2VudHNIZWFkaW5nVGV4dCxcbiAgU0NTU2lkZWJhckFnZW50c0FjdGlvbnMsXG4gIFNDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uLFxuICBTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsLFxuICBTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmcsXG4gIFNDU1NpZGViYXJDaGF0c1Njcm9sbCxcbiAgU0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4sXG4gIFNDU1NpZGViYXJFcnJvclN0YXRlVG9wLFxuICBTQ1NTaWRlYmFyRXJyb3JCYW5uZXIsXG4gIFNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwLFxuICBTQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlLFxuICBTQ1NTaWRlYmFyTG9hZGluZ0FyZWEsXG4gIFNDU1NpZGViYXJMb2FkTW9yZVJvdyxcbiAgU0NTU2lkZWJhckVtcHR5Q2hhdHMsXG4gIFNDU1NpZGViYXJFbXB0eUNoYXRzVGV4dCxcbiAgU0NTU2lkZWJhckNoYXRzRm9vdGVyLFxuICBTQ1NTaWRlYmFyRm9vdGVyQWN0aW9ucyxcbn0gZnJvbSAnLi9TaWRlYmFyLmxheW91dC5zdHlsZXMnXG5cbmNvbnN0IGFjdGlvbnMgPSB7XG4gIGVkaXQ6IChwcm9wczogYW55KSA9PiA8RWRpdFF1ZXN0aW9uTW9kYWwgey4uLnByb3BzfSAvPixcbiAgZGVsZXRlOiAocHJvcHM6IGFueSkgPT4gPERlbGV0ZVF1ZXN0aW9uTW9kYWwgey4uLnByb3BzfSAvPixcbn1cblxuLyoqIEFicmV2aWEgXCJlc3BlY2lhbGlzdGFcIi9cImVzcGVjaWFsaXN0XCIg4oaSIFwiRXNwLlwiIChFUy9QVCkgeSBcInNwZWNpYWxpc3RcIiDihpIgXCJTcGVjLlwiIChFTikgZW4gZWwgbm9tYnJlIGRlbCBhZ2VudGUuICovXG5mdW5jdGlvbiBhYmJyZXZpYXRlU3BlY2lhbGlzdEluQWdlbnROYW1lKGFnZW50TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFhZ2VudE5hbWUgfHwgdHlwZW9mIGFnZW50TmFtZSAhPT0gJ3N0cmluZycpIHJldHVybiBhZ2VudE5hbWVcbiAgcmV0dXJuIGFnZW50TmFtZS5yZXBsYWNlKC9cXGIoZXNwZWNpYWxpc3RhfGVzcGVjaWFsaXN0KVxcYi9naSwgJ0VzcC4nKS5yZXBsYWNlKC9cXGJzcGVjaWFsaXN0XFxiL2dpLCAnU3BlYy4nKVxufVxuXG4vKiogTWFya2V0cGxhY2UgLyDigJxNaXMgYWdlbnRlc+KAnSAoZW5ncmFuYWplIGNvbXBhY3RvLCByZWZlcmVuY2lhIEZpZ21hIGJyYWluLWNvZykg4oCUIHJlYWN0aXZhciBjb24gbGEgc2VjY2nDs24gZW4gc2lkZWJhciAqL1xuLyogY29uc3QgTXlBZ2VudHNOYXZJY29uID0gKHsgc2l6ZSA9IDE2IH06IHsgc2l6ZT86IG51bWJlciB9KSA9PiAoXG4gIDxzdmcgd2lkdGg9e3NpemV9IGhlaWdodD17c2l6ZX0gdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgPHBhdGhcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICBkPVwiTTggMS4yNWEuNzUuNzUgMCAwIDEgLjc0LjY0bC4wNy40NWEzLjU1IDMuNTUgMCAwIDEgLjk0LjRsLjM4LS4yOGEuNzUuNzUgMCAwIDEgLjkyIDEuMThsLS4zMi4zN2MuMTkuMy4zMy42My40Ljk5bC40NS4wNmEuNzUuNzUgMCAwIDEtLjEgMS40OWwtLjQ2LS4wNmEzLjQ4IDMuNDggMCAwIDEtLjQuOTRsLjMuNGEuNzUuNzUgMCAxIDEtMS4yLjlsLS4zMi0uNDNhMy41NSAzLjU1IDAgMCAxLS45OC40MmwuMDEuNDdhLjc1Ljc1IDAgMCAxLTEuNDkuMDlsLS4wMi0uNDZhMy41NSAzLjU1IDAgMCAxLS45OS0uNDFsLS4zNi4zM2EuNzUuNzUgMCAxIDEtMS4wMi0xLjFsLjM0LS4zMWEzLjQ4IDMuNDggMCAwIDEtLjQzLTFsLS40Ni4wNmEuNzUuNzUgMCAwIDEtLjE5LTEuNDhsLjQ1LS4wN2MuMDctLjM1LjItLjY4LjM4LS45N2wtLjMzLS4zNmEuNzUuNzUgMCAxIDEgMS4xMS0xLjAybC4zNS4zOGMuMy0uMTguNjQtLjMyIDEtLjM5bC0uMDYtLjQ1YS43NS43NSAwIDAgMSAuNzQtLjg2Wk04IDUuMzVhMi42NSAyLjY1IDAgMSAwIDAgNS4zIDIuNjUgMi42NSAwIDAgMCAwLTUuM1pcIlxuICAgIC8+XG4gIDwvc3ZnPlxuKSAqL1xuXG5jb25zdCBMaXN0SGlzdG9yeUNoYXQgPSAoe1xuICBjaGF0LFxuICBvbkNsaWNrLFxuICBpc01vZGFsT3BlbixcbiAgb25PcGVuTW9kYWwsXG4gIG9uQ2xvc2VNb2RhbCxcbiAgaGFuZGxlcnMsXG4gIGlzU2VsZWN0ZWQsXG59OiB7XG4gIGNoYXQ6IGFueVxuICBvbkNsaWNrOiAoY2hhdDogYW55KSA9PiB2b2lkXG4gIGlzTW9kYWxPcGVuOiBib29sZWFuXG4gIG9uT3Blbk1vZGFsOiAoY2hhdElkOiBzdHJpbmcpID0+IHZvaWRcbiAgb25DbG9zZU1vZGFsOiAoKSA9PiB2b2lkXG4gIGhhbmRsZXJzOiB7XG4gICAgaGFuZGxlRGVsZXRlQ2hhdDogKGNoYXQ6IGFueSkgPT4gdm9pZFxuICAgIGhhbmRsZVVwZGF0ZUNoYXQ6IChjaGF0OiBhbnkpID0+IHZvaWRcbiAgfVxuICBpc1NlbGVjdGVkOiBib29sZWFuXG59KSA9PiB7XG4gIGNvbnN0IHRleHRSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGFnZW50UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB7IHNob3dUb29sdGlwIH0gPSB1c2VSZXNpemVMaXN0ZW5lcih0ZXh0UmVmLCBbY2hhdC50aXRsZV0pXG4gIGNvbnN0IHsgc2hvd1Rvb2x0aXA6IHNob3dUb29sdGlwQWdlbnQgfSA9IHVzZVJlc2l6ZUxpc3RlbmVyKGFnZW50UmVmLCBbY2hhdC5hZ2VudF0pXG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IFthY3Rpb24sIHNldEFjdGlvbl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IG1lbnVJdGVtcyA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogdCgnaGlzdG9yeS5tZW51LnJlbmFtZScpLFxuICAgICAgb25DbGlja0l0ZW06IChjaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBzZXRBY3Rpb24oJ2VkaXQnKVxuICAgICAgICBvbk9wZW5Nb2RhbChjaGF0SWQpXG4gICAgICB9LFxuICAgICAgSWNvbjogUGVuY2lsLFxuICAgICAgZXZlbnRLZXk6IEVWRU5UUy5wbUFpTWVudUVkaXQsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogdCgnaGlzdG9yeS5tZW51LmRlbGV0ZScpLFxuICAgICAgb25DbGlja0l0ZW06IChjaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBzZXRBY3Rpb24oJ2RlbGV0ZScpXG4gICAgICAgIG9uT3Blbk1vZGFsKGNoYXRJZClcbiAgICAgIH0sXG4gICAgICBJY29uOiBUcmFzaCxcbiAgICAgIGV2ZW50S2V5OiBFVkVOVFMucG1BaU1lbnVEZWxldGUsXG4gICAgfSxcbiAgXVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1BY3Rpb24gPSAoY2hhdERhdGE6IGFueSkgPT4ge1xuICAgIGlmIChhY3Rpb24gPT09ICdlZGl0Jykge1xuICAgICAgaGFuZGxlcnMuaGFuZGxlVXBkYXRlQ2hhdChjaGF0RGF0YSlcbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlcnMuaGFuZGxlRGVsZXRlQ2hhdChjaGF0RGF0YSlcbiAgICB9XG4gICAgc2V0QWN0aW9uKG51bGwpXG4gICAgb25DbG9zZU1vZGFsKClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTQ0xIQ1dyYXBwZXJDb250ZW50XG4gICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICBvbkNsaWNrKGNoYXQpXG4gICAgICAgIH19XG4gICAgICAgIGtleT17YGNvbnZlcnNhdGlvbi0ke2NoYXQuc2Vzc2lvbkV4dGVybmFsSWR9YH1cbiAgICAgICAgaXNNb2RhbE9wZW49e2lzTW9kYWxPcGVufVxuICAgICAgICBpc1NlbGVjdGVkPXtpc1NlbGVjdGVkfVxuICAgICAgPlxuICAgICAgICA8U0NMSENXcmFwcGVyPlxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtzaG93VG9vbHRpcCA/IGNoYXQudGl0bGUgOiAnJ30+XG4gICAgICAgICAgICA8U0NMSENXcmFwcGVyVGl0bGUgcmVmPXt0ZXh0UmVmfT57Y2hhdC50aXRsZSB8fCB0KCdjb252ZXJzYXRpb25zLmVtcHR5TGFiZWwnKX08L1NDTEhDV3JhcHBlclRpdGxlPlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17c2hvd1Rvb2x0aXBBZ2VudCA/IGNoYXQuYWdlbnQgKyAoY2hhdC5wcm9qZWN0TmFtZSA/IGAgLSAke2NoYXQucHJvamVjdE5hbWV9YCA6ICcnKSA6ICcnfT5cbiAgICAgICAgICAgIDxTQ0xIQ1dyYXBwZXJBZ2VudD5cbiAgICAgICAgICAgICAge2NoYXQuYWdlbnRUeXBlID09PSAnY2xvbmUnID8gKFxuICAgICAgICAgICAgICAgIDxNQUlBSWNvbiB3aWR0aD17MTR9IGhlaWdodD17MTR9IC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZm9udFNpemU6ICcxNHB4JyB9fT57Y2hhdC5lbW9qaX08L3NwYW4+XG4gICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgPFNDTEhDV3JhcHBlckFnZW50VGV4dCByZWY9e2FnZW50UmVmfT5cbiAgICAgICAgICAgICAgICB7Y2hhdC5hZ2VudFR5cGUgPT09ICdjbG9uZScgPyBhYmJyZXZpYXRlU3BlY2lhbGlzdEluQWdlbnROYW1lKGNoYXQuYWdlbnQpIDogY2hhdC5hZ2VudH1cbiAgICAgICAgICAgICAgICB7Y2hhdC5wcm9qZWN0TmFtZSAmJiBgIC0gJHtjaGF0LnByb2plY3ROYW1lfWB9XG4gICAgICAgICAgICAgIDwvU0NMSENXcmFwcGVyQWdlbnRUZXh0PlxuICAgICAgICAgICAgPC9TQ0xIQ1dyYXBwZXJBZ2VudD5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDwvU0NMSENXcmFwcGVyPlxuICAgICAgICA8U0NMSENXcmFwcGVyQnV0dG9uQWN0aW9ucz5cbiAgICAgICAgICA8Q1VCdXR0b25cbiAgICAgICAgICAgIGljb25Pbmx5XG4gICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICBvbk9wZW5Nb2RhbChjaGF0LmlkKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8TWVudURvdHMgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgIDwvQ1VCdXR0b24+XG4gICAgICAgICAge2lzTW9kYWxPcGVuICYmICFhY3Rpb24gJiYgKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBkYXRhLW1vZGFsLWNvbnRhaW5lclxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgIHRvcDogJzMycHgnLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiAnMTZweCcsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnd2hpdGUnLFxuICAgICAgICAgICAgICAgIHpJbmRleDogMTAwMCxcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICAgICAgICAgICAgICBib3JkZXI6ICcxcHggc29saWQgcmdiYSgyMjQsIDIyNCwgMjI0LCAxKScsXG4gICAgICAgICAgICAgICAgbWluV2lkdGg6ICcxMjRweCcsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttZW51SXRlbXMubWFwKCh7IGxhYmVsLCBvbkNsaWNrSXRlbSwgSWNvbiwgZXZlbnRLZXkgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxPcHRpb25JdGVtXG4gICAgICAgICAgICAgICAgICBrZXk9e2xhYmVsfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2xhYmVsfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25DbGlja0l0ZW0oY2hhdC5pZCl9XG4gICAgICAgICAgICAgICAgICBJY29uPXtJY29ufVxuICAgICAgICAgICAgICAgICAgZXZlbnRLZXk9e2V2ZW50S2V5fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TQ0xIQ1dyYXBwZXJCdXR0b25BY3Rpb25zPlxuICAgICAgPC9TQ0xIQ1dyYXBwZXJDb250ZW50PlxuICAgICAgeyEhYWN0aW9uICYmXG4gICAgICAgIGFjdGlvbnNbYWN0aW9uXSh7XG4gICAgICAgICAgb25DbG9zZTogKCkgPT4ge1xuICAgICAgICAgICAgb25DbG9zZU1vZGFsKClcbiAgICAgICAgICAgIHNldEFjdGlvbihudWxsKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2hhdCxcbiAgICAgICAgICBoYW5kbGVyczoge1xuICAgICAgICAgICAgaGFuZGxlQ29uZmlybUFjdGlvbixcbiAgICAgICAgICAgIGhhbmRsZVNldElzT3Blbk1vZGFsOiBvbkNsb3NlTW9kYWwsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSl9XG4gICAgPC8+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IFNpZGViYXIgPSAoe1xuICBvbkdvVG9DaGF0LFxuICBvbkVycm9yID0gKCkgPT4gbnVsbCxcbiAgaGFuZGxlR29Ub0hvbWUsXG4gIHNob3dOZXdDaGF0LFxuICByZWZldGNoQ2hhdHMsXG4gIGhhbmRsZVNldFJlZmV0Y2hDaGF0cyxcbiAgaGFzRXJyb3IsXG4gIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLFxuICBhZ2VudHNOYXZBY3RpdmUgPSBudWxsLFxufToge1xuICBvbkdvVG9DaGF0OiAoY2hhdElkOiBzdHJpbmcpID0+IHZvaWRcbiAgb25FcnJvcjogKCkgPT4gdm9pZFxuICBoYW5kbGVHb1RvSG9tZTogKCkgPT4gdm9pZFxuICBzaG93TmV3Q2hhdDogYm9vbGVhblxuICByZWZldGNoQ2hhdHM6IGJvb2xlYW5cbiAgaGFuZGxlU2V0UmVmZXRjaENoYXRzOiAocmVmZXRjaDogYm9vbGVhbikgPT4gdm9pZFxuICBoYXNFcnJvcjogYm9vbGVhblxuICByZXNldFNlbGVjdGVkQ2hhdFJlZj86IE11dGFibGVSZWZPYmplY3Q8KCgpID0+IHZvaWQpIHwgbnVsbD5cbiAgLyoqIFJlc2FsdGEgTWFpYWtlciBvIE1hcmtldHBsYWNlIChzb2xvIE1haWFrZXIgdmlzaWJsZSBtaWVudHJhcyDigJxNaXMgYWdlbnRlc+KAnSBlc3TDoSBvY3VsdG8pICovXG4gIGFnZW50c05hdkFjdGl2ZT86ICdtYWlha2VyJyB8ICdtYXJrZXRwbGFjZScgfCBudWxsXG59KSA9PiB7XG4gIGNvbnN0IHsgdCwgaTE4biB9ID0gdXNlVCgpXG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZSh0cnVlKVxuICBjb25zdCBbaXNPcGVuTW9kYWwsIHNldElzT3Blbk1vZGFsXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzZWxlY3RlZENoYXQsIHNldFNlbGVjdGVkQ2hhdF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBjaGF0c0ZldGNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGNoYXRzQ29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgYWdlbnQ6IHNlbGVjdGVkQWdlbnQsIHNlbGVjdEFnZW50LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCB7XG4gICAgbG9hZGluZ0NoYXRzLFxuICAgIGNoYXRzLFxuICAgIGRlbGV0ZUNoYXQsXG4gICAgdXBkYXRlQ2hhdCxcbiAgICBmZXRjaENoYXRzLFxuICAgIGxpbWl0LFxuICAgIG9mZnNldCxcbiAgICBoYXNNb3JlQ2hhdHMsXG4gICAgbG9hZE1vcmVDaGF0cyxcbiAgICBpc0xvYWRpbmdNb3JlQ2hhdHMsXG4gIH0gPSB1c2VDaGF0cyh7XG4gICAgb25FcnJvcixcbiAgfSlcblxuICBjb25zdCB1c2VyUGVybWlzc2lvbnMgPSB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYpIHtcbiAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQgPSAoKSA9PiBzZXRTZWxlY3RlZENoYXQobnVsbClcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZikge1xuICAgICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuICAgIH1cbiAgfSwgW3Jlc2V0U2VsZWN0ZWRDaGF0UmVmXSlcblxuICBjb25zdCBoYW5kbGVEZWxldGVDaGF0ID0gYXN5bmMgKGNoYXQ6IGFueSkgPT4ge1xuICAgIGRlbGV0ZUNoYXQoY2hhdC5zZXNzaW9uRXh0ZXJuYWxJZClcbiAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVVwZGF0ZUNoYXQgPSAoY2hhdDogYW55KSA9PiB7XG4gICAgdXBkYXRlQ2hhdChjaGF0KVxuICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gIH1cblxuICBjb25zdCBoYW5kbGVPcGVuTW9kYWwgPSAoY2hhdElkOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoaXNPcGVuTW9kYWwgJiYgaXNPcGVuTW9kYWwgIT09IGNoYXRJZCkge1xuICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0SXNPcGVuTW9kYWwoY2hhdElkKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSAoKSA9PiB7XG4gICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoaXNPcGVuTW9kYWwgJiYgIShldmVudC50YXJnZXQgYXMgRWxlbWVudCkuY2xvc2VzdCgnW2RhdGEtbW9kYWwtY29udGFpbmVyXScpKSB7XG4gICAgICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzT3Blbk1vZGFsKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG4gIH0sIFtpc09wZW5Nb2RhbF0pXG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlU2lkZWJhciA9ICgpID0+IHtcbiAgICBpZiAoaXNPcGVuTW9kYWwpIHtcbiAgICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgfVxuICAgIHNldElzT3BlbihwcmV2ID0+ICFwcmV2KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlT3BlbkNyZWF0ZUFnZW50ID0gYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgIHBhdGg6IGBhZ2VudHM/YWdlbnRfdHlwZT1jbG9uZSZsYW5nPSR7bWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKX1gLFxuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICB9KVxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICBjb25zdCBtYWlha2VyQWdlbnQgPSAoZGF0YS5kYXRhIHx8IFtdKS5maW5kKChhZ2VudDogYW55KSA9PiBhZ2VudC50eXBlID09PSAnY2xvbmUnICYmIGFnZW50LmVudGl0eSA9PT0gJ2dsb2JhbCcpXG5cbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0UHJvamVjdChudWxsKVxuICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgc2VsZWN0QWdlbnQobWFpYWtlckFnZW50KVxuICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzT3BlbiAmJiAhY2hhdHNGZXRjaGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNoYXRzRmV0Y2hlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgZmV0Y2hDaGF0cyh7IGxpbWl0LCBvZmZzZXQgfSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAocmVmZXRjaENoYXRzKSB7XG4gICAgICBmZXRjaENoYXRzKHsgbGltaXQsIG9mZnNldCB9KVxuICAgICAgaGFuZGxlU2V0UmVmZXRjaENoYXRzKGZhbHNlKVxuICAgIH1cbiAgfSwgW2lzT3BlbiwgcmVmZXRjaENoYXRzLCBoYW5kbGVTZXRSZWZldGNoQ2hhdHNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgaWYgKCFjaGF0c0NvbnRhaW5lclJlZi5jdXJyZW50IHx8ICFoYXNNb3JlQ2hhdHMgfHwgaXNMb2FkaW5nTW9yZUNoYXRzIHx8IGhhc0Vycm9yKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IGNoYXRzQ29udGFpbmVyUmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IGlzQXRCb3R0b20gPSBzY3JvbGxUb3AgKyBjbGllbnRIZWlnaHQgPj0gc2Nyb2xsSGVpZ2h0IC0gMTBcblxuICAgICAgaWYgKGlzQXRCb3R0b20pIHtcbiAgICAgICAgbG9hZE1vcmVDaGF0cygpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gY2hhdHNDb250YWluZXJSZWYuY3VycmVudFxuICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtoYXNNb3JlQ2hhdHMsIGlzTG9hZGluZ01vcmVDaGF0cywgbG9hZE1vcmVDaGF0cywgaGFzRXJyb3JdKVxuXG4gIGNvbnN0IGhhbmRsZU5ld0NoYXQgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKGlzT3Blbk1vZGFsKSB7XG4gICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgIH1cbiAgICBzZXRTZWxlY3RlZENoYXQobnVsbClcbiAgICBhd2FpdCBmZXRjaENoYXRzKHsgbGltaXQsIG9mZnNldDogMCB9KVxuICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlUmVmZXRjaFNlc3Npb24gPSAoKSA9PiB7XG4gICAgICBmZXRjaENoYXRzKHsgbGltaXQ6IDIwLCBvZmZzZXQ6IDAgfSlcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncmVmZXRjaC1zZXNzaW9uJywgaGFuZGxlUmVmZXRjaFNlc3Npb24pXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3JlZmV0Y2gtc2Vzc2lvbicsIGhhbmRsZVJlZmV0Y2hTZXNzaW9uKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3Qgc2hvd05ld0NoYXRCdXR0b24gPVxuICAgICFzaG93TmV3Q2hhdCAmJlxuICAgICFoYXNFcnJvciAmJlxuICAgICFsb2FkaW5nQ2hhdHMgJiZcbiAgICAoKHVzZXJQZXJtaXNzaW9ucz8udmlldyAmJlxuICAgICAgIXNlbGVjdGVkQWdlbnQ/LmlzX2RlbGV0ZWQgJiZcbiAgICAgICFzZWxlY3RlZEFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zICYmXG4gICAgICAhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9hY2Nlc3MpIHx8XG4gICAgICAoIXVzZXJQZXJtaXNzaW9ucz8udmlldyAmJlxuICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaXNfZGVsZXRlZCAmJlxuICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyAmJlxuICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9hY2Nlc3MpKVxuXG4gIHJldHVybiAoXG4gICAgPFNDU1NpZGViYXJSb290ICRpc09wZW49e2lzT3Blbn0+XG4gICAgICA8U0NTU2lkZWJhclRvb2xiYXIgJGlzT3Blbj17aXNPcGVufT5cbiAgICAgICAgPFRvb2x0aXAgdGl0bGU9e2lzT3BlbiA/IHQoJ2NvbnZlcnNhdGlvbnMuY29sbGFwc2UnKSA6IHQoJ2NvbnZlcnNhdGlvbnMuZXhwYW5kJyl9PlxuICAgICAgICAgIDxTQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uIG9uQ2xpY2s9e2hhbmRsZVRvZ2dsZVNpZGViYXJ9IGlzT3Blbj17aXNPcGVufT5cbiAgICAgICAgICAgIDxDaGV2cm9uRG91YmxlTGVmdCBjb2xvcj1cInJnYmEoMTAyLCAxMDIsIDEwMiwgMSlcIiB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgPC9TQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uPlxuICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIHshaXNPcGVuID8gKFxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjb252ZXJzYXRpb25zLm1haWFrZXJOYXYnKX0+XG4gICAgICAgICAgICA8U0NTV3JhcHBlckFnZW50c05hdkljb25cbiAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlT3BlbkNyZWF0ZUFnZW50fVxuICAgICAgICAgICAgICAkYWN0aXZlPXthZ2VudHNOYXZBY3RpdmUgPT09ICdtYWlha2VyJ31cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICBvbktleURvd249e2UgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyB8fCBlLmtleSA9PT0gJyAnKSB7XG4gICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgIGhhbmRsZU9wZW5DcmVhdGVBZ2VudCgpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TWFpYVN0b3JlSWNvbiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgIDwvU0NTV3JhcHBlckFnZW50c05hdkljb24+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgey8qXG4gICAgICAgIE1pcyBhZ2VudGVzIChzaWRlYmFyIGNvbGFwc2Fkbykg4oCUIHJlYWN0aXZhciBjb24gTXlBZ2VudHNOYXZJY29uIHkgcHJvcCBoYW5kbGVPcGVuTWFya2V0cGxhY2VcbiAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ2NvbnZlcnNhdGlvbnMubXlBZ2VudHNOYXYnKX0+Li4uPC9Ub29sdGlwPlxuICAgICAgICAqL31cbiAgICAgICAge3Nob3dOZXdDaGF0QnV0dG9uID8gKFxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjb252ZXJzYXRpb25zLm5ld0NoYXQnKX0+XG4gICAgICAgICAgICA8U0NTV3JhcHBlck5ld0NoYXRJY29uIG9uQ2xpY2s9e2hhbmRsZU5ld0NoYXR9PlxuICAgICAgICAgICAgICA8TmV3Q2hhdCB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICA8L1NDU1dyYXBwZXJOZXdDaGF0SWNvbj5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9TQ1NTaWRlYmFyVG9vbGJhcj5cbiAgICAgIDxTQ1NTaWRlYmFyQm9keSAkaXNPcGVuPXtpc09wZW59PlxuICAgICAgICB7aXNPcGVuID8gKFxuICAgICAgICAgIDxTQ1NTaWRlYmFyT3BlblBhbmVsPlxuICAgICAgICAgICAgPFNDU1NpZGViYXJBZ2VudHNCbG9jaz5cbiAgICAgICAgICAgICAgPFNDU1NpZGViYXJBZ2VudHNIZWFkaW5nPlxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyQWdlbnRzSGVhZGluZ1RleHQ+e3QoJ2NvbnZlcnNhdGlvbnMuYWdlbnRzU2VjdGlvblRpdGxlJyl9PC9TQ1NTaWRlYmFyQWdlbnRzSGVhZGluZ1RleHQ+XG4gICAgICAgICAgICAgIDwvU0NTU2lkZWJhckFnZW50c0hlYWRpbmc+XG4gICAgICAgICAgICAgIDxTQ1NTaWRlYmFyQWdlbnRzQWN0aW9ucz5cbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlT3BlbkNyZWF0ZUFnZW50fVxuICAgICAgICAgICAgICAgICAgJGFjdGl2ZT17YWdlbnRzTmF2QWN0aXZlID09PSAnbWFpYWtlcid9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPE1haWFTdG9yZUljb24gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbD57dCgnY29udmVyc2F0aW9ucy5tYWlha2VyTmF2Jyl9PC9TQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPlxuICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b24+XG4gICAgICAgICAgICAgICAgey8qXG4gICAgICAgICAgICAgICAgTWlzIGFnZW50ZXMgKHNpZGViYXIgZXhwYW5kaWRvKSDigJQgcmVhY3RpdmFyIGNvbiBNeUFnZW50c05hdkljb24sIG15QWdlbnRzQ291bnQgeSBoYW5kbGVPcGVuTWFya2V0cGxhY2VcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVPcGVuTWFya2V0cGxhY2V9Pi4uLjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICovfVxuICAgICAgICAgICAgICA8L1NDU1NpZGViYXJBZ2VudHNBY3Rpb25zPlxuICAgICAgICAgICAgICA8U0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nPnt0KCdjb252ZXJzYXRpb25zLnRpdGxlJyl9PC9TQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmc+XG4gICAgICAgICAgICA8L1NDU1NpZGViYXJBZ2VudHNCbG9jaz5cbiAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ2hhdHNTY3JvbGxcbiAgICAgICAgICAgICAgcmVmPXtjaGF0c0NvbnRhaW5lclJlZn1cbiAgICAgICAgICAgICAgJGhhc0NoYXRzPXtjaGF0cy5sZW5ndGggPiAwfVxuICAgICAgICAgICAgICAkb2Zmc2V0VmFyaWFudD17aGFzRXJyb3IgPyAnZXJyb3InIDogJ2RlZmF1bHQnfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aGFzRXJyb3IgJiYgIWNoYXRzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yU3RhdGVUb3A+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvclN0YXRlIC8+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvclN0YXRlVG9wPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwPlxuICAgICAgICAgICAgICAgICAgICAgIDxFcnJvckljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+e3QoJ2NvbnZlcnNhdGlvbnMuZXJyb3InKX08L1NDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvclN0YXRlQ29sdW1uPlxuICAgICAgICAgICAgICApIDogbG9hZGluZ0NoYXRzID8gKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTG9hZGluZ0FyZWE+XG4gICAgICAgICAgICAgICAgICA8TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyTG9hZGluZ0FyZWE+XG4gICAgICAgICAgICAgICkgOiBjaGF0cy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIHtjaGF0cy5tYXAoY2hhdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPExpc3RIaXN0b3J5Q2hhdFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtjaGF0LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhdD17Y2hhdH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NoYXREYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzT3Blbk1vZGFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZENoYXQoY2hhdERhdGEuc2Vzc2lvbkV4dGVybmFsSWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uR29Ub0NoYXQoY2hhdERhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNNb2RhbE9wZW49e2lzT3Blbk1vZGFsID09PSBjaGF0LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25PcGVuTW9kYWw9e2hhbmRsZU9wZW5Nb2RhbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2VNb2RhbD17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZURlbGV0ZUNoYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVVwZGF0ZUNoYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c2VsZWN0ZWRDaGF0ID09PSBjaGF0LnNlc3Npb25FeHRlcm5hbElkfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAge2lzTG9hZGluZ01vcmVDaGF0cyAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTG9hZE1vcmVSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgPExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJMb2FkTW9yZVJvdz5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFbXB0eUNoYXRzPlxuICAgICAgICAgICAgICAgICAgPEVtcHR5SGlzdG9yeUljb24gLz5cbiAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRW1wdHlDaGF0c1RleHQ+e3QoJ2NvbnZlcnNhdGlvbnMuZW1wdHknKX08L1NDU1NpZGViYXJFbXB0eUNoYXRzVGV4dD5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFbXB0eUNoYXRzPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQ2hhdHNTY3JvbGw+XG4gICAgICAgICAgICA8U0NTU2lkZWJhckNoYXRzRm9vdGVyPlxuICAgICAgICAgICAgICB7aGFzRXJyb3IgJiYgY2hhdHMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXI+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXA+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckljb24gLz5cbiAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXA+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZT57dCgnY29udmVyc2F0aW9ucy5lcnJvcicpfTwvU0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZT5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L1NDU1NpZGViYXJDaGF0c0Zvb3Rlcj5cbiAgICAgICAgICA8L1NDU1NpZGViYXJPcGVuUGFuZWw+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICA8U0NTU2lkZWJhckZvb3RlckFjdGlvbnMgJGlzT3Blbj17aXNPcGVufSAkanVzdGlmeUJldHdlZW49eyEhc2VsZWN0ZWRBZ2VudH0+XG4gICAgICAgICAge3NlbGVjdGVkQWdlbnQgPyA8RmVlZGJhY2tCdXR0b24gc2VsZWN0ZWRBZ2VudD17c2VsZWN0ZWRBZ2VudH0gaXNPcGVuPXtpc09wZW59IC8+IDogbnVsbH1cbiAgICAgICAgICA8T25ib2FyZGluZ01vZGFsQnV0dG9uIC8+XG4gICAgICAgIDwvU0NTU2lkZWJhckZvb3RlckFjdGlvbnM+XG4gICAgICA8L1NDU1NpZGViYXJCb2R5PlxuICAgIDwvU0NTU2lkZWJhclJvb3Q+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBMkJBLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNyRSxTQUFTQyxpQkFBaUIsUUFBUSxvREFBb0Q7QUFDdEYsU0FBU0MsUUFBUSxRQUFRLDRDQUE0QztBQUNyRSxTQUFTQyxRQUFRLFFBQVEsMkNBQTJDO0FBQ3BFLFNBQVNDLE1BQU0sUUFBUSx5Q0FBeUM7QUFDaEUsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUU5RCxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBRXRFLFNBQVNDLGdCQUFnQixRQUFRLGdDQUFnQztBQUNqRSxTQUFTQyxpQkFBaUIsUUFBUSwwQkFBMEI7QUFDNUQsU0FBU0MsUUFBUSxRQUFRLHlCQUF5QjtBQUNsRCxTQUFTQyxNQUFNLFFBQVEsb0JBQW9CO0FBQzNDLFNBQVNDLFVBQVUsRUFBRUMsUUFBUSxFQUFFQyxhQUFhLEVBQUVDLE9BQU8sUUFBUSxtQkFBbUI7QUFDaEYsU0FBU0MsTUFBTSxRQUFRLHlCQUF5QjtBQUNoRCxTQUFTQyxJQUFJLFFBQVEscUJBQXFCO0FBQzFDLFNBQVNDLFVBQVUsUUFBUSwrQkFBK0I7QUFDMUQsU0FBU0MsaUJBQWlCLFFBQVEsbUNBQW1DO0FBQ3JFLFNBQVNDLG1CQUFtQixRQUFRLHFDQUFxQztBQUN6RSxTQUFTQyxTQUFTLFFBQVEsNkJBQTZCO0FBQ3ZELFNBQVNDLE9BQU8sUUFBUSwyQkFBMkI7QUFDbkQsU0FBU0MscUJBQXFCLFFBQVEsbUNBQW1DO0FBQ3pFLFNBQVNDLGNBQWMsUUFBUSw0QkFBNEI7QUFDM0QsU0FBU0MsZ0JBQWdCLFFBQVEsaUNBQWlDO0FBQ2xFLFNBQVNDLFNBQVMsUUFBUSwrQkFBK0I7QUFDekQsU0FBU0MsVUFBVSxRQUFRLHFCQUFxQjtBQUNoRCxTQUNFQyxZQUFZLEVBQ1pDLGlCQUFpQixFQUNqQkMscUJBQXFCLEVBQ3JCQyx5QkFBeUIsRUFDekJDLG1CQUFtQixFQUNuQkMsaUJBQWlCLEVBQ2pCQyx5QkFBeUIsRUFDekJDLHFCQUFxQixFQUNyQkMsdUJBQXVCLFFBQ2xCLGtCQUFrQjtBQUN6QixTQUNFQyxjQUFjLEVBQ2RDLGlCQUFpQixFQUNqQkMsY0FBYyxFQUNkQyxtQkFBbUIsRUFDbkJDLHFCQUFxQixFQUNyQkMsdUJBQXVCLEVBQ3ZCQywyQkFBMkIsRUFDM0JDLHVCQUF1QixFQUN2QkMsMEJBQTBCLEVBQzFCQyx5QkFBeUIsRUFDekJDLDhCQUE4QixFQUM5QkMscUJBQXFCLEVBQ3JCQywwQkFBMEIsRUFDMUJDLHVCQUF1QixFQUN2QkMscUJBQXFCLEVBQ3JCQyw2QkFBNkIsRUFDN0JDLDRCQUE0QixFQUM1QkMscUJBQXFCLEVBQ3JCQyxxQkFBcUIsRUFDckJDLG9CQUFvQixFQUNwQkMsd0JBQXdCLEVBQ3hCQyxxQkFBcUIsRUFDckJDLHVCQUF1QixRQUNsQix5QkFBeUI7QUFBQSxTQUFBQyxHQUFBLElBQUFDLElBQUEsRUFBQUMsSUFBQSxJQUFBQyxLQUFBLEVBQUFDLFFBQUEsSUFBQUMsU0FBQTtBQUVoQyxJQUFNQyxPQUFPLEdBQUc7RUFDZEMsSUFBSSxFQUFFLFNBQU5BLElBQUlBLENBQUdDLEtBQVU7SUFBQSxvQkFBS1AsSUFBQSxDQUFDMUMsaUJBQWlCLEVBQUFrRCxhQUFBLEtBQUtELEtBQUssQ0FBRyxDQUFDO0VBQUE7RUFDdEQsVUFBUSxTQUFSRSxPQUFNQSxDQUFHRixLQUFVO0lBQUEsb0JBQUtQLElBQUEsQ0FBQ3pDLG1CQUFtQixFQUFBaUQsYUFBQSxLQUFLRCxLQUFLLENBQUcsQ0FBQztFQUFBO0FBQzVELENBQUM7O0FBRUQ7QUFDQSxTQUFTRywrQkFBK0JBLENBQUNDLFNBQWlCLEVBQVU7RUFDbEUsSUFBSSxDQUFDQSxTQUFTLElBQUksT0FBT0EsU0FBUyxLQUFLLFFBQVEsRUFBRSxPQUFPQSxTQUFTO0VBQ2pFLE9BQU9BLFNBQVMsQ0FBQ0MsT0FBTyxDQUFDLGtDQUFrQyxFQUFFLE1BQU0sQ0FBQyxDQUFDQSxPQUFPLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxDQUFDO0FBQzNHOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBTUMsZUFBZSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFBQyxJQUFBLEVBbUJmO0VBQUEsSUFsQkpDLElBQUksR0FBQUQsSUFBQSxDQUFKQyxJQUFJO0lBQ0pDLFFBQU8sR0FBQUYsSUFBQSxDQUFQRSxPQUFPO0lBQ1BDLFdBQVcsR0FBQUgsSUFBQSxDQUFYRyxXQUFXO0lBQ1hDLFdBQVcsR0FBQUosSUFBQSxDQUFYSSxXQUFXO0lBQ1hDLFlBQVksR0FBQUwsSUFBQSxDQUFaSyxZQUFZO0lBQ1pDLFFBQVEsR0FBQU4sSUFBQSxDQUFSTSxRQUFRO0lBQ1JDLFVBQVUsR0FBQVAsSUFBQSxDQUFWTyxVQUFVO0VBYVYsSUFBTUMsT0FBTyxHQUFHbkYsTUFBTSxDQUFpQixJQUFJLENBQUM7RUFDNUMsSUFBTW9GLFFBQVEsR0FBR3BGLE1BQU0sQ0FBaUIsSUFBSSxDQUFDO0VBQzdDLElBQUFxRixrQkFBQSxHQUF3QjVFLGlCQUFpQixDQUFDMEUsT0FBTyxFQUFFLENBQUNQLElBQUksQ0FBQ1UsS0FBSyxDQUFDLENBQUM7SUFBeERDLFdBQVcsR0FBQUYsa0JBQUEsQ0FBWEUsV0FBVztFQUNuQixJQUFBQyxtQkFBQSxHQUEwQy9FLGlCQUFpQixDQUFDMkUsUUFBUSxFQUFFLENBQUNSLElBQUksQ0FBQ2EsS0FBSyxDQUFDLENBQUM7SUFBOURDLGdCQUFnQixHQUFBRixtQkFBQSxDQUE3QkQsV0FBVztFQUNuQixJQUFBSSxLQUFBLEdBQWMxRSxJQUFJLENBQUMsQ0FBQztJQUFaMkUsQ0FBQyxHQUFBRCxLQUFBLENBQURDLENBQUM7RUFDVCxJQUFBQyxTQUFBLEdBQTRCNUYsUUFBUSxDQUFnQixJQUFJLENBQUM7SUFBQTZGLFVBQUEsR0FBQUMsY0FBQSxDQUFBRixTQUFBO0lBQWxERyxNQUFNLEdBQUFGLFVBQUE7SUFBRUcsU0FBUyxHQUFBSCxVQUFBO0VBRXhCLElBQU1JLFNBQVMsR0FBRyxDQUNoQjtJQUNFQyxLQUFLLEVBQUVQLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQztJQUMvQlEsV0FBVyxFQUFFLFNBQWJBLFdBQVdBLENBQUdDLE1BQWMsRUFBSztNQUMvQkosU0FBUyxDQUFDLE1BQU0sQ0FBQztNQUNqQmxCLFdBQVcsQ0FBQ3NCLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ0RDLElBQUksRUFBRWpHLE1BQU07SUFDWmtHLFFBQVEsRUFBRXZGLE1BQU0sQ0FBQ3dGO0VBQ25CLENBQUMsRUFDRDtJQUNFTCxLQUFLLEVBQUVQLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQztJQUMvQlEsV0FBVyxFQUFFLFNBQWJBLFdBQVdBLENBQUdDLE1BQWMsRUFBSztNQUMvQkosU0FBUyxDQUFDLFFBQVEsQ0FBQztNQUNuQmxCLFdBQVcsQ0FBQ3NCLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ0RDLElBQUksRUFBRWhHLEtBQUs7SUFDWGlHLFFBQVEsRUFBRXZGLE1BQU0sQ0FBQ3lGO0VBQ25CLENBQUMsQ0FDRjtFQUVELElBQU1DLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQUlDLFFBQWEsRUFBSztJQUM3QyxJQUFJWCxNQUFNLEtBQUssTUFBTSxFQUFFO01BQ3JCZixRQUFRLENBQUMyQixnQkFBZ0IsQ0FBQ0QsUUFBUSxDQUFDO0lBQ3JDLENBQUMsTUFBTTtNQUNMMUIsUUFBUSxDQUFDNEIsZ0JBQWdCLENBQUNGLFFBQVEsQ0FBQztJQUNyQztJQUNBVixTQUFTLENBQUMsSUFBSSxDQUFDO0lBQ2ZqQixZQUFZLENBQUMsQ0FBQztFQUNoQixDQUFDO0VBRUQsb0JBQ0VqQixLQUFBLENBQUFFLFNBQUE7SUFBQTZDLFFBQUEsZ0JBQ0UvQyxLQUFBLENBQUMvQixtQkFBbUI7TUFDbEI2QyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBRWtDLENBQUMsRUFBSTtRQUNaQSxDQUFDLENBQUNDLGVBQWUsQ0FBQyxDQUFDO1FBQ25CbkMsUUFBTyxDQUFDRCxJQUFJLENBQUM7TUFDZixDQUFFO01BRUZFLFdBQVcsRUFBRUEsV0FBWTtNQUN6QkksVUFBVSxFQUFFQSxVQUFXO01BQUE0QixRQUFBLGdCQUV2Qi9DLEtBQUEsQ0FBQ25DLFlBQVk7UUFBQWtGLFFBQUEsZ0JBQ1hqRCxJQUFBLENBQUN0RCxPQUFPO1VBQUMrRSxLQUFLLEVBQUVDLFdBQVcsR0FBR1gsSUFBSSxDQUFDVSxLQUFLLEdBQUcsRUFBRztVQUFBd0IsUUFBQSxlQUM1Q2pELElBQUEsQ0FBQzVCLGlCQUFpQjtZQUFDZ0YsR0FBRyxFQUFFOUIsT0FBUTtZQUFBMkIsUUFBQSxFQUFFbEMsSUFBSSxDQUFDVSxLQUFLLElBQUlNLENBQUMsQ0FBQywwQkFBMEI7VUFBQyxDQUFvQjtRQUFDLENBQzNGLENBQUMsZUFDVi9CLElBQUEsQ0FBQ3RELE9BQU87VUFBQytFLEtBQUssRUFBRUksZ0JBQWdCLEdBQUdkLElBQUksQ0FBQ2EsS0FBSyxJQUFJYixJQUFJLENBQUNzQyxXQUFXLFNBQUFDLE1BQUEsQ0FBU3ZDLElBQUksQ0FBQ3NDLFdBQVcsSUFBSyxFQUFFLENBQUMsR0FBRyxFQUFHO1VBQUFKLFFBQUEsZUFDdEcvQyxLQUFBLENBQUNsQyxpQkFBaUI7WUFBQWlGLFFBQUEsR0FDZmxDLElBQUksQ0FBQ3dDLFNBQVMsS0FBSyxPQUFPLGdCQUN6QnZELElBQUEsQ0FBQ2hELFFBQVE7Y0FBQ3dHLEtBQUssRUFBRSxFQUFHO2NBQUNDLE1BQU0sRUFBRTtZQUFHLENBQUUsQ0FBQyxnQkFFbkN6RCxJQUFBO2NBQU0wRCxLQUFLLEVBQUU7Z0JBQUVDLFFBQVEsRUFBRTtjQUFPLENBQUU7Y0FBQVYsUUFBQSxFQUFFbEMsSUFBSSxDQUFDNkM7WUFBSyxDQUFPLENBQ3RELGVBRUQxRCxLQUFBLENBQUNqQyxxQkFBcUI7Y0FBQ21GLEdBQUcsRUFBRTdCLFFBQVM7Y0FBQTBCLFFBQUEsR0FDbENsQyxJQUFJLENBQUN3QyxTQUFTLEtBQUssT0FBTyxHQUFHN0MsK0JBQStCLENBQUNLLElBQUksQ0FBQ2EsS0FBSyxDQUFDLEdBQUdiLElBQUksQ0FBQ2EsS0FBSyxFQUNyRmIsSUFBSSxDQUFDc0MsV0FBVyxVQUFBQyxNQUFBLENBQVV2QyxJQUFJLENBQUNzQyxXQUFXLENBQUU7WUFBQSxDQUN4QixDQUFDO1VBQUEsQ0FDUDtRQUFDLENBQ2IsQ0FBQztNQUFBLENBQ0UsQ0FBQyxlQUNmbkQsS0FBQSxDQUFDaEMseUJBQXlCO1FBQUErRSxRQUFBLGdCQUN4QmpELElBQUEsQ0FBQzFELFFBQVE7VUFDUHVILFFBQVE7VUFDUkMsSUFBSSxFQUFDLE9BQU87VUFDWkMsT0FBTyxFQUFDLE1BQU07VUFDZC9DLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFFZ0QsS0FBSyxFQUFJO1lBQ2hCQSxLQUFLLENBQUNiLGVBQWUsQ0FBQyxDQUFDO1lBQ3ZCakMsV0FBVyxDQUFDSCxJQUFJLENBQUNrRCxFQUFFLENBQUM7VUFDdEIsQ0FBRTtVQUFBaEIsUUFBQSxlQUVGakQsSUFBQSxDQUFDekQsUUFBUTtZQUFDaUgsS0FBSyxFQUFFLEVBQUc7WUFBQ0MsTUFBTSxFQUFFO1VBQUcsQ0FBRTtRQUFDLENBQzNCLENBQUMsRUFDVnhDLFdBQVcsSUFBSSxDQUFDa0IsTUFBTSxpQkFDckJuQyxJQUFBO1VBQ0UsNEJBQW9CO1VBQ3BCMEQsS0FBSyxFQUFFO1lBQ0xRLFFBQVEsRUFBRSxVQUFVO1lBQ3BCQyxHQUFHLEVBQUUsTUFBTTtZQUNYQyxLQUFLLEVBQUUsTUFBTTtZQUNiQyxlQUFlLEVBQUUsT0FBTztZQUN4QkMsTUFBTSxFQUFFLElBQUk7WUFDWkMsT0FBTyxFQUFFLE1BQU07WUFDZkMsYUFBYSxFQUFFLFFBQVE7WUFDdkJDLFlBQVksRUFBRSxLQUFLO1lBQ25CQyxNQUFNLEVBQUUsa0NBQWtDO1lBQzFDQyxRQUFRLEVBQUU7VUFDWixDQUFFO1VBQUExQixRQUFBLEVBRURaLFNBQVMsQ0FBQ3VDLEdBQUcsQ0FBQyxVQUFBQyxLQUFBO1lBQUEsSUFBR3ZDLEtBQUssR0FBQXVDLEtBQUEsQ0FBTHZDLEtBQUs7Y0FBRUMsV0FBVyxHQUFBc0MsS0FBQSxDQUFYdEMsV0FBVztjQUFFRSxJQUFJLEdBQUFvQyxLQUFBLENBQUpwQyxJQUFJO2NBQUVDLFFBQVEsR0FBQW1DLEtBQUEsQ0FBUm5DLFFBQVE7WUFBQSxvQkFDbEQxQyxJQUFBLENBQUMzQyxVQUFVO2NBRVRpRixLQUFLLEVBQUVBLEtBQU07Y0FDYnRCLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBO2dCQUFBLE9BQVF1QixXQUFXLENBQUN4QixJQUFJLENBQUNrRCxFQUFFLENBQUM7Y0FBQSxDQUFDO2NBQ3BDeEIsSUFBSSxFQUFFQSxJQUFLO2NBQ1hDLFFBQVEsRUFBRUE7WUFBUyxHQUpkSixLQUtOLENBQUM7VUFBQSxDQUNIO1FBQUMsQ0FDQyxDQUNOO01BQUEsQ0FDd0IsQ0FBQztJQUFBLG1CQUFBZ0IsTUFBQSxDQTlEUHZDLElBQUksQ0FBQytELGlCQUFpQixDQStEeEIsQ0FBQyxFQUNyQixDQUFDLENBQUMzQyxNQUFNLElBQ1A5QixPQUFPLENBQUM4QixNQUFNLENBQUMsQ0FBQztNQUNkNEMsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUEsRUFBUTtRQUNiNUQsWUFBWSxDQUFDLENBQUM7UUFDZGlCLFNBQVMsQ0FBQyxJQUFJLENBQUM7TUFDakIsQ0FBQztNQUNEckIsSUFBSSxFQUFKQSxJQUFJO01BQ0pLLFFBQVEsRUFBRTtRQUNSeUIsbUJBQW1CLEVBQW5CQSxtQkFBbUI7UUFDbkJtQyxvQkFBb0IsRUFBRTdEO01BQ3hCO0lBQ0YsQ0FBQyxDQUFDO0VBQUEsQ0FDSixDQUFDO0FBRVAsQ0FBQztBQUVELE9BQU8sSUFBTThELE9BQU8sR0FBRyxTQUFWQSxPQUFPQSxDQUFBQyxLQUFBLEVBcUJkO0VBQUEsSUFBQUMsaUJBQUE7RUFBQSxJQXBCSkMsVUFBVSxHQUFBRixLQUFBLENBQVZFLFVBQVU7SUFBQUMsYUFBQSxHQUFBSCxLQUFBLENBQ1ZJLE9BQU87SUFBUEEsT0FBTyxHQUFBRCxhQUFBLGNBQUc7TUFBQSxPQUFNLElBQUk7SUFBQSxJQUFBQSxhQUFBO0lBQ3BCRSxjQUFjLEdBQUFMLEtBQUEsQ0FBZEssY0FBYztJQUNkQyxXQUFXLEdBQUFOLEtBQUEsQ0FBWE0sV0FBVztJQUNYQyxZQUFZLEdBQUFQLEtBQUEsQ0FBWk8sWUFBWTtJQUNaQyxxQkFBcUIsR0FBQVIsS0FBQSxDQUFyQlEscUJBQXFCO0lBQ3JCQyxRQUFRLEdBQUFULEtBQUEsQ0FBUlMsUUFBUTtJQUNSQyxvQkFBb0IsR0FBQVYsS0FBQSxDQUFwQlUsb0JBQW9CO0lBQUFDLHFCQUFBLEdBQUFYLEtBQUEsQ0FDcEJZLGVBQWU7SUFBZkEsZUFBZSxHQUFBRCxxQkFBQSxjQUFHLElBQUksR0FBQUEscUJBQUE7RUFhdEIsSUFBQUUsTUFBQSxHQUFvQjNJLElBQUksQ0FBQyxDQUFDO0lBQWxCMkUsQ0FBQyxHQUFBZ0UsTUFBQSxDQUFEaEUsQ0FBQztJQUFFaUUsSUFBSSxHQUFBRCxNQUFBLENBQUpDLElBQUk7RUFDZixJQUFBQyxVQUFBLEdBQTRCN0osUUFBUSxDQUFDLElBQUksQ0FBQztJQUFBOEosVUFBQSxHQUFBaEUsY0FBQSxDQUFBK0QsVUFBQTtJQUFuQ0UsTUFBTSxHQUFBRCxVQUFBO0lBQUVFLFNBQVMsR0FBQUYsVUFBQTtFQUN4QixJQUFBRyxVQUFBLEdBQXNDakssUUFBUSxDQUFnQixJQUFJLENBQUM7SUFBQWtLLFVBQUEsR0FBQXBFLGNBQUEsQ0FBQW1FLFVBQUE7SUFBNURFLFdBQVcsR0FBQUQsVUFBQTtJQUFFRSxjQUFjLEdBQUFGLFVBQUE7RUFDbEMsSUFBQUcsVUFBQSxHQUF3Q3JLLFFBQVEsQ0FBZ0IsSUFBSSxDQUFDO0lBQUFzSyxVQUFBLEdBQUF4RSxjQUFBLENBQUF1RSxVQUFBO0lBQTlERSxZQUFZLEdBQUFELFVBQUE7SUFBRUUsZUFBZSxHQUFBRixVQUFBO0VBQ3BDLElBQU1HLGVBQWUsR0FBRzFLLE1BQU0sQ0FBQyxLQUFLLENBQUM7RUFDckMsSUFBTTJLLGlCQUFpQixHQUFHM0ssTUFBTSxDQUFpQixJQUFJLENBQUM7RUFDdEQsSUFBTTRLLElBQUksR0FBR3RKLE9BQU8sQ0FBQyxDQUFDO0VBQ3RCLElBQUF1SixpQkFBQSxHQUFxRXBKLGdCQUFnQixDQUFDLENBQUM7SUFBeEVxSixhQUFhLEdBQUFELGlCQUFBLENBQXBCcEYsS0FBSztJQUFpQnNGLFdBQVcsR0FBQUYsaUJBQUEsQ0FBWEUsV0FBVztJQUFFQyxVQUFVLEdBQUFILGlCQUFBLENBQVZHLFVBQVU7SUFBRUMsU0FBUyxHQUFBSixpQkFBQSxDQUFUSSxTQUFTO0VBQ2hFLElBQUFDLFNBQUEsR0FXSXhLLFFBQVEsQ0FBQztNQUNYeUksT0FBTyxFQUFQQTtJQUNGLENBQUMsQ0FBQztJQVpBZ0MsWUFBWSxHQUFBRCxTQUFBLENBQVpDLFlBQVk7SUFDWkMsS0FBSyxHQUFBRixTQUFBLENBQUxFLEtBQUs7SUFDTEMsVUFBVSxHQUFBSCxTQUFBLENBQVZHLFVBQVU7SUFDVkMsVUFBVSxHQUFBSixTQUFBLENBQVZJLFVBQVU7SUFDVkMsVUFBVSxHQUFBTCxTQUFBLENBQVZLLFVBQVU7SUFDVkMsS0FBSyxHQUFBTixTQUFBLENBQUxNLEtBQUs7SUFDTEMsTUFBTSxHQUFBUCxTQUFBLENBQU5PLE1BQU07SUFDTkMsWUFBWSxHQUFBUixTQUFBLENBQVpRLFlBQVk7SUFDWkMsYUFBYSxHQUFBVCxTQUFBLENBQWJTLGFBQWE7SUFDYkMsa0JBQWtCLEdBQUFWLFNBQUEsQ0FBbEJVLGtCQUFrQjtFQUtwQixJQUFNQyxlQUFlLEdBQUdqQixJQUFJLGFBQUpBLElBQUksZ0JBQUE1QixpQkFBQSxHQUFKNEIsSUFBSSxDQUFFa0IsV0FBVyxjQUFBOUMsaUJBQUEsdUJBQWpCQSxpQkFBQSxDQUFtQitDLFNBQVM7RUFFcERoTSxTQUFTLENBQUMsWUFBTTtJQUNkLElBQUkwSixvQkFBb0IsRUFBRTtNQUN4QkEsb0JBQW9CLENBQUN1QyxPQUFPLEdBQUc7UUFBQSxPQUFNdkIsZUFBZSxDQUFDLElBQUksQ0FBQztNQUFBO0lBQzVEO0lBQ0EsT0FBTyxZQUFNO01BQ1gsSUFBSWhCLG9CQUFvQixFQUFFO1FBQ3hCQSxvQkFBb0IsQ0FBQ3VDLE9BQU8sR0FBRyxJQUFJO01BQ3JDO0lBQ0YsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDdkMsb0JBQW9CLENBQUMsQ0FBQztFQUUxQixJQUFNNUMsZ0JBQWdCO0lBQUEsSUFBQW9GLEtBQUEsR0FBQUMsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUFHLFNBQUFDLFFBQU96SCxJQUFTO01BQUEsT0FBQXVILG1CQUFBLENBQUFHLElBQUEsV0FBQUMsUUFBQTtRQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEsR0FBQUQsUUFBQSxDQUFBRSxJQUFBO1VBQUE7WUFDdkNwQixVQUFVLENBQUN6RyxJQUFJLENBQUMrRCxpQkFBaUIsQ0FBQztZQUNsQzBCLGNBQWMsQ0FBQyxJQUFJLENBQUM7WUFDcEJqQixjQUFjLENBQUMsQ0FBQztVQUFBO1VBQUE7WUFBQSxPQUFBbUQsUUFBQSxDQUFBRyxJQUFBO1FBQUE7TUFBQSxHQUFBTCxPQUFBO0lBQUEsQ0FDakI7SUFBQSxnQkFKS3hGLGdCQUFnQkEsQ0FBQThGLEVBQUE7TUFBQSxPQUFBVixLQUFBLENBQUFXLEtBQUEsT0FBQUMsU0FBQTtJQUFBO0VBQUEsR0FJckI7RUFFRCxJQUFNakcsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFnQkEsQ0FBSWhDLElBQVMsRUFBSztJQUN0QzBHLFVBQVUsQ0FBQzFHLElBQUksQ0FBQztJQUNoQnlGLGNBQWMsQ0FBQyxJQUFJLENBQUM7RUFDdEIsQ0FBQztFQUVELElBQU15QyxlQUFlLEdBQUcsU0FBbEJBLGVBQWVBLENBQUl6RyxNQUFjLEVBQUs7SUFDMUMsSUFBSStELFdBQVcsSUFBSUEsV0FBVyxLQUFLL0QsTUFBTSxFQUFFO01BQ3pDZ0UsY0FBYyxDQUFDLElBQUksQ0FBQztJQUN0QixDQUFDLE1BQU07TUFDTEEsY0FBYyxDQUFDaEUsTUFBTSxDQUFDO0lBQ3hCO0VBQ0YsQ0FBQztFQUVELElBQU0wRyxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUFBLEVBQVM7SUFDN0IxQyxjQUFjLENBQUMsSUFBSSxDQUFDO0VBQ3RCLENBQUM7RUFFRHRLLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBTWlOLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBa0JBLENBQUluRixLQUFpQixFQUFLO01BQ2hELElBQUl1QyxXQUFXLElBQUksQ0FBRXZDLEtBQUssQ0FBQ29GLE1BQU0sQ0FBYUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLEVBQUU7UUFDL0U3QyxjQUFjLENBQUMsSUFBSSxDQUFDO01BQ3RCO0lBQ0YsQ0FBQztJQUVELElBQUlELFdBQVcsRUFBRTtNQUNmK0MsUUFBUSxDQUFDQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUVKLGtCQUFrQixDQUFDO0lBQzVEO0lBRUEsT0FBTyxZQUFNO01BQ1hHLFFBQVEsQ0FBQ0UsbUJBQW1CLENBQUMsV0FBVyxFQUFFTCxrQkFBa0IsQ0FBQztJQUMvRCxDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUM1QyxXQUFXLENBQUMsQ0FBQztFQUVqQixJQUFNa0QsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFtQkEsQ0FBQSxFQUFTO0lBQ2hDLElBQUlsRCxXQUFXLEVBQUU7TUFDZkMsY0FBYyxDQUFDLElBQUksQ0FBQztJQUN0QjtJQUNBSixTQUFTLENBQUMsVUFBQXVDLElBQUk7TUFBQSxPQUFJLENBQUNBLElBQUk7SUFBQSxFQUFDO0VBQzFCLENBQUM7RUFFRCxJQUFNZSxxQkFBcUI7SUFBQSxJQUFBQyxLQUFBLEdBQUF0QixpQkFBQSxjQUFBQyxtQkFBQSxDQUFBQyxJQUFBLENBQUcsU0FBQXFCLFNBQUE7TUFBQSxJQUFBQyxRQUFBLEVBQUFDLElBQUEsRUFBQUMsWUFBQTtNQUFBLE9BQUF6QixtQkFBQSxDQUFBRyxJQUFBLFdBQUF1QixTQUFBO1FBQUEsa0JBQUFBLFNBQUEsQ0FBQXJCLElBQUEsR0FBQXFCLFNBQUEsQ0FBQXBCLElBQUE7VUFBQTtZQUFBb0IsU0FBQSxDQUFBcEIsSUFBQTtZQUFBLE9BQ0wvSyxTQUFTLENBQUM7Y0FDL0JvTSxJQUFJLGtDQUFBM0csTUFBQSxDQUFrQ3hGLFVBQVUsQ0FBQ2tJLElBQUksQ0FBQ2tFLFFBQVEsQ0FBQyxDQUFFO2NBQ2pFQyxNQUFNLEVBQUU7WUFDVixDQUFDLENBQUM7VUFBQTtZQUhJTixRQUFRLEdBQUFHLFNBQUEsQ0FBQUksSUFBQTtZQUFBSixTQUFBLENBQUFwQixJQUFBO1lBQUEsT0FJS2lCLFFBQVEsQ0FBQ1EsSUFBSSxDQUFDLENBQUM7VUFBQTtZQUE1QlAsSUFBSSxHQUFBRSxTQUFBLENBQUFJLElBQUE7WUFDSkwsWUFBWSxHQUFHLENBQUNELElBQUksQ0FBQ0EsSUFBSSxJQUFJLEVBQUUsRUFBRVEsSUFBSSxDQUFDLFVBQUMxSSxLQUFVO2NBQUEsT0FBS0EsS0FBSyxDQUFDMkksSUFBSSxLQUFLLE9BQU8sSUFBSTNJLEtBQUssQ0FBQzRJLE1BQU0sS0FBSyxRQUFRO1lBQUEsRUFBQztZQUFBLElBRTNHVCxZQUFZO2NBQUFDLFNBQUEsQ0FBQXBCLElBQUE7Y0FBQTtZQUFBO1lBQUEsT0FBQW9CLFNBQUEsQ0FBQVMsTUFBQTtVQUFBO1lBSWpCdEQsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNoQkMsU0FBUyxhQUFUQSxTQUFTLGVBQVRBLFNBQVMsQ0FBRyxJQUFJLENBQUM7WUFDakJGLFdBQVcsQ0FBQzZDLFlBQVksQ0FBQztZQUN6QnhFLGNBQWMsQ0FBQyxDQUFDO1VBQUE7VUFBQTtZQUFBLE9BQUF5RSxTQUFBLENBQUFuQixJQUFBO1FBQUE7TUFBQSxHQUFBZSxRQUFBO0lBQUEsQ0FDakI7SUFBQSxnQkFoQktGLHFCQUFxQkEsQ0FBQTtNQUFBLE9BQUFDLEtBQUEsQ0FBQVosS0FBQSxPQUFBQyxTQUFBO0lBQUE7RUFBQSxHQWdCMUI7RUFFRDlNLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSWlLLE1BQU0sSUFBSSxDQUFDVSxlQUFlLENBQUNzQixPQUFPLEVBQUU7TUFDdEN0QixlQUFlLENBQUNzQixPQUFPLEdBQUcsSUFBSTtNQUM5QlQsVUFBVSxDQUFDO1FBQUVDLEtBQUssRUFBTEEsS0FBSztRQUFFQyxNQUFNLEVBQU5BO01BQU8sQ0FBQyxDQUFDO01BQzdCO0lBQ0Y7SUFDQSxJQUFJbkMsWUFBWSxFQUFFO01BQ2hCaUMsVUFBVSxDQUFDO1FBQUVDLEtBQUssRUFBTEEsS0FBSztRQUFFQyxNQUFNLEVBQU5BO01BQU8sQ0FBQyxDQUFDO01BQzdCbEMscUJBQXFCLENBQUMsS0FBSyxDQUFDO0lBQzlCO0VBQ0YsQ0FBQyxFQUFFLENBQUNTLE1BQU0sRUFBRVYsWUFBWSxFQUFFQyxxQkFBcUIsQ0FBQyxDQUFDO0VBRWpEeEosU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFNd08sWUFBWSxHQUFHLFNBQWZBLFlBQVlBLENBQUEsRUFBUztNQUN6QixJQUFJLENBQUM1RCxpQkFBaUIsQ0FBQ3FCLE9BQU8sSUFBSSxDQUFDTixZQUFZLElBQUlFLGtCQUFrQixJQUFJcEMsUUFBUSxFQUFFO1FBQ2pGO01BQ0Y7TUFFQSxJQUFBZ0YscUJBQUEsR0FBa0Q3RCxpQkFBaUIsQ0FBQ3FCLE9BQU87UUFBbkV5QyxTQUFTLEdBQUFELHFCQUFBLENBQVRDLFNBQVM7UUFBRUMsWUFBWSxHQUFBRixxQkFBQSxDQUFaRSxZQUFZO1FBQUVDLFlBQVksR0FBQUgscUJBQUEsQ0FBWkcsWUFBWTtNQUM3QyxJQUFNQyxVQUFVLEdBQUdILFNBQVMsR0FBR0UsWUFBWSxJQUFJRCxZQUFZLEdBQUcsRUFBRTtNQUVoRSxJQUFJRSxVQUFVLEVBQUU7UUFDZGpELGFBQWEsQ0FBQyxDQUFDO01BQ2pCO0lBQ0YsQ0FBQztJQUVELElBQU1rRCxTQUFTLEdBQUdsRSxpQkFBaUIsQ0FBQ3FCLE9BQU87SUFDM0MsSUFBSTZDLFNBQVMsRUFBRTtNQUNiQSxTQUFTLENBQUN6QixnQkFBZ0IsQ0FBQyxRQUFRLEVBQUVtQixZQUFZLENBQUM7SUFDcEQ7SUFFQSxPQUFPLFlBQU07TUFDWCxJQUFJTSxTQUFTLEVBQUU7UUFDYkEsU0FBUyxDQUFDeEIsbUJBQW1CLENBQUMsUUFBUSxFQUFFa0IsWUFBWSxDQUFDO01BQ3ZEO0lBQ0YsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDN0MsWUFBWSxFQUFFRSxrQkFBa0IsRUFBRUQsYUFBYSxFQUFFbkMsUUFBUSxDQUFDLENBQUM7RUFFL0QsSUFBTXNGLGFBQWE7SUFBQSxJQUFBQyxLQUFBLEdBQUE3QyxpQkFBQSxjQUFBQyxtQkFBQSxDQUFBQyxJQUFBLENBQUcsU0FBQTRDLFNBQUE7TUFBQSxPQUFBN0MsbUJBQUEsQ0FBQUcsSUFBQSxXQUFBMkMsU0FBQTtRQUFBLGtCQUFBQSxTQUFBLENBQUF6QyxJQUFBLEdBQUF5QyxTQUFBLENBQUF4QyxJQUFBO1VBQUE7WUFDcEIsSUFBSXJDLFdBQVcsRUFBRTtjQUNmQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3RCO1lBQ0FJLGVBQWUsQ0FBQyxJQUFJLENBQUM7WUFBQXdFLFNBQUEsQ0FBQXhDLElBQUE7WUFBQSxPQUNmbEIsVUFBVSxDQUFDO2NBQUVDLEtBQUssRUFBTEEsS0FBSztjQUFFQyxNQUFNLEVBQUU7WUFBRSxDQUFDLENBQUM7VUFBQTtZQUN0Q3JDLGNBQWMsQ0FBQyxDQUFDO1VBQUE7VUFBQTtZQUFBLE9BQUE2RixTQUFBLENBQUF2QyxJQUFBO1FBQUE7TUFBQSxHQUFBc0MsUUFBQTtJQUFBLENBQ2pCO0lBQUEsZ0JBUEtGLGFBQWFBLENBQUE7TUFBQSxPQUFBQyxLQUFBLENBQUFuQyxLQUFBLE9BQUFDLFNBQUE7SUFBQTtFQUFBLEdBT2xCO0VBRUQ5TSxTQUFTLENBQUMsWUFBTTtJQUNkLElBQU1tUCxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUFBLEVBQVM7TUFDakMzRCxVQUFVLENBQUM7UUFBRUMsS0FBSyxFQUFFLEVBQUU7UUFBRUMsTUFBTSxFQUFFO01BQUUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRDBCLFFBQVEsQ0FBQ0MsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUU4QixvQkFBb0IsQ0FBQztJQUNsRSxPQUFPLFlBQU07TUFDWC9CLFFBQVEsQ0FBQ0UsbUJBQW1CLENBQUMsaUJBQWlCLEVBQUU2QixvQkFBb0IsQ0FBQztJQUN2RSxDQUFDO0VBQ0gsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLElBQU1DLGlCQUFpQixHQUNyQixDQUFDOUYsV0FBVyxJQUNaLENBQUNHLFFBQVEsSUFDVCxDQUFDMkIsWUFBWSxLQUNYLENBQUFVLGVBQWUsYUFBZkEsZUFBZSx1QkFBZkEsZUFBZSxDQUFFdUQsSUFBSSxLQUNyQixFQUFDdEUsYUFBYSxhQUFiQSxhQUFhLGVBQWJBLGFBQWEsQ0FBRXVFLFVBQVUsS0FDMUIsRUFBQ3ZFLGFBQWEsYUFBYkEsYUFBYSxlQUFiQSxhQUFhLENBQUV3RSxtQkFBbUIsS0FDbkMsRUFBQ3hFLGFBQWEsYUFBYkEsYUFBYSxlQUFiQSxhQUFhLENBQUV5RSxjQUFjLEtBQzdCLEVBQUMxRCxlQUFlLGFBQWZBLGVBQWUsZUFBZkEsZUFBZSxDQUFFdUQsSUFBSSxLQUNyQixFQUFDdEUsYUFBYSxhQUFiQSxhQUFhLGVBQWJBLGFBQWEsQ0FBRXVFLFVBQVUsS0FDMUIsRUFBQ3ZFLGFBQWEsYUFBYkEsYUFBYSxlQUFiQSxhQUFhLENBQUV3RSxtQkFBbUIsS0FDbkMsRUFBQ3hFLGFBQWEsYUFBYkEsYUFBYSxlQUFiQSxhQUFhLENBQUV5RSxjQUFjLENBQUMsQ0FBQztFQUV0QyxvQkFDRXhMLEtBQUEsQ0FBQzFCLGNBQWM7SUFBQ21OLE9BQU8sRUFBRXhGLE1BQU87SUFBQWxELFFBQUEsZ0JBQzlCL0MsS0FBQSxDQUFDekIsaUJBQWlCO01BQUNrTixPQUFPLEVBQUV4RixNQUFPO01BQUFsRCxRQUFBLGdCQUNqQ2pELElBQUEsQ0FBQ3RELE9BQU87UUFBQytFLEtBQUssRUFBRTBFLE1BQU0sR0FBR3BFLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHQSxDQUFDLENBQUMsc0JBQXNCLENBQUU7UUFBQWtCLFFBQUEsZUFDL0VqRCxJQUFBLENBQUMzQix5QkFBeUI7VUFBQzJDLE9BQU8sRUFBRXlJLG1CQUFvQjtVQUFDdEQsTUFBTSxFQUFFQSxNQUFPO1VBQUFsRCxRQUFBLGVBQ3RFakQsSUFBQSxDQUFDM0QsaUJBQWlCO1lBQUN1UCxLQUFLLEVBQUMsd0JBQXdCO1lBQUNwSSxLQUFLLEVBQUUsRUFBRztZQUFDQyxNQUFNLEVBQUU7VUFBRyxDQUFFO1FBQUMsQ0FDbEQ7TUFBQyxDQUNyQixDQUFDLEVBQ1QsQ0FBQzBDLE1BQU0sZ0JBQ05uRyxJQUFBLENBQUN0RCxPQUFPO1FBQUMrRSxLQUFLLEVBQUVNLENBQUMsQ0FBQywwQkFBMEIsQ0FBRTtRQUFBa0IsUUFBQSxlQUM1Q2pELElBQUEsQ0FBQ3pCLHVCQUF1QjtVQUN0QnlDLE9BQU8sRUFBRTBJLHFCQUFzQjtVQUMvQm1DLE9BQU8sRUFBRS9GLGVBQWUsS0FBSyxTQUFVO1VBQ3ZDZ0csSUFBSSxFQUFDLFFBQVE7VUFDYkMsUUFBUSxFQUFFLENBQUU7VUFDWkMsU0FBUyxFQUFFLFNBQVhBLFNBQVNBLENBQUU5SSxDQUFDLEVBQUk7WUFDZCxJQUFJQSxDQUFDLENBQUMrSSxHQUFHLEtBQUssT0FBTyxJQUFJL0ksQ0FBQyxDQUFDK0ksR0FBRyxLQUFLLEdBQUcsRUFBRTtjQUN0Qy9JLENBQUMsQ0FBQ2dKLGNBQWMsQ0FBQyxDQUFDO2NBQ2xCeEMscUJBQXFCLENBQUMsQ0FBQztZQUN6QjtVQUNGLENBQUU7VUFBQXpHLFFBQUEsZUFFRmpELElBQUEsQ0FBQy9DLGFBQWE7WUFBQzZHLElBQUksRUFBRTtVQUFHLENBQUU7UUFBQyxDQUNKO01BQUMsQ0FDbkIsQ0FBQyxHQUNSLElBQUksRUFLUHdILGlCQUFpQixnQkFDaEJ0TCxJQUFBLENBQUN0RCxPQUFPO1FBQUMrRSxLQUFLLEVBQUVNLENBQUMsQ0FBQyx1QkFBdUIsQ0FBRTtRQUFBa0IsUUFBQSxlQUN6Q2pELElBQUEsQ0FBQzFCLHFCQUFxQjtVQUFDMEMsT0FBTyxFQUFFaUssYUFBYztVQUFBaEksUUFBQSxlQUM1Q2pELElBQUEsQ0FBQzlDLE9BQU87WUFBQ3NHLEtBQUssRUFBRSxFQUFHO1lBQUNDLE1BQU0sRUFBRTtVQUFHLENBQUU7UUFBQyxDQUNiO01BQUMsQ0FDakIsQ0FBQyxHQUNSLElBQUk7SUFBQSxDQUNTLENBQUMsZUFDcEJ2RCxLQUFBLENBQUN4QixjQUFjO01BQUNpTixPQUFPLEVBQUV4RixNQUFPO01BQUFsRCxRQUFBLEdBQzdCa0QsTUFBTSxnQkFDTGpHLEtBQUEsQ0FBQ3ZCLG1CQUFtQjtRQUFBc0UsUUFBQSxnQkFDbEIvQyxLQUFBLENBQUN0QixxQkFBcUI7VUFBQXFFLFFBQUEsZ0JBQ3BCakQsSUFBQSxDQUFDbkIsdUJBQXVCO1lBQUFvRSxRQUFBLGVBQ3RCakQsSUFBQSxDQUFDbEIsMkJBQTJCO2NBQUFtRSxRQUFBLEVBQUVsQixDQUFDLENBQUMsa0NBQWtDO1lBQUMsQ0FBOEI7VUFBQyxDQUMzRSxDQUFDLGVBQzFCL0IsSUFBQSxDQUFDakIsdUJBQXVCO1lBQUFrRSxRQUFBLGVBQ3RCL0MsS0FBQSxDQUFDbEIsMEJBQTBCO2NBQ3pCdUwsSUFBSSxFQUFDLFFBQVE7Y0FDYnZKLE9BQU8sRUFBRTBJLHFCQUFzQjtjQUMvQm1DLE9BQU8sRUFBRS9GLGVBQWUsS0FBSyxTQUFVO2NBQUE3QyxRQUFBLGdCQUV2Q2pELElBQUEsQ0FBQy9DLGFBQWE7Z0JBQUM2RyxJQUFJLEVBQUU7Y0FBRyxDQUFFLENBQUMsZUFDM0I5RCxJQUFBLENBQUNmLHlCQUF5QjtnQkFBQWdFLFFBQUEsRUFBRWxCLENBQUMsQ0FBQywwQkFBMEI7Y0FBQyxDQUE0QixDQUFDO1lBQUEsQ0FDNUQ7VUFBQyxDQUtOLENBQUMsZUFDMUIvQixJQUFBLENBQUNkLDhCQUE4QjtZQUFBK0QsUUFBQSxFQUFFbEIsQ0FBQyxDQUFDLHFCQUFxQjtVQUFDLENBQWlDLENBQUM7UUFBQSxDQUN0RSxDQUFDLGVBQ3hCL0IsSUFBQSxDQUFDYixxQkFBcUI7VUFDcEJpRSxHQUFHLEVBQUUwRCxpQkFBa0I7VUFDdkJxRixTQUFTLEVBQUU1RSxLQUFLLENBQUM2RSxNQUFNLEdBQUcsQ0FBRTtVQUM1QkMsY0FBYyxFQUFFMUcsUUFBUSxHQUFHLE9BQU8sR0FBRyxTQUFVO1VBQUExQyxRQUFBLEVBRTlDMEMsUUFBUSxJQUFJLENBQUM0QixLQUFLLENBQUM2RSxNQUFNLGdCQUN4QmxNLEtBQUEsQ0FBQ2QsMEJBQTBCO1lBQUE2RCxRQUFBLGdCQUN6QmpELElBQUEsQ0FBQ1gsdUJBQXVCO2NBQUE0RCxRQUFBLGVBQ3RCakQsSUFBQSxDQUFDakQsVUFBVSxJQUFFO1lBQUMsQ0FDUyxDQUFDLGVBQzFCbUQsS0FBQSxDQUFDWixxQkFBcUI7Y0FBQTJELFFBQUEsZ0JBQ3BCakQsSUFBQSxDQUFDVCw2QkFBNkI7Z0JBQUEwRCxRQUFBLGVBQzVCakQsSUFBQSxDQUFDeEMsU0FBUyxJQUFFO2NBQUMsQ0FDZ0IsQ0FBQyxlQUNoQ3dDLElBQUEsQ0FBQ1IsNEJBQTRCO2dCQUFBeUQsUUFBQSxFQUFFbEIsQ0FBQyxDQUFDLHFCQUFxQjtjQUFDLENBQStCLENBQUM7WUFBQSxDQUNsRSxDQUFDO1VBQUEsQ0FDRSxDQUFDLEdBQzNCdUYsWUFBWSxnQkFDZHRILElBQUEsQ0FBQ1AscUJBQXFCO1lBQUF3RCxRQUFBLGVBQ3BCakQsSUFBQSxDQUFDbEQsTUFBTSxJQUFFO1VBQUMsQ0FDVyxDQUFDLEdBQ3RCeUssS0FBSyxDQUFDNkUsTUFBTSxnQkFDZGxNLEtBQUEsQ0FBQUUsU0FBQTtZQUFBNkMsUUFBQSxHQUNHc0UsS0FBSyxDQUFDM0MsR0FBRyxDQUFDLFVBQUE3RCxJQUFJLEVBQUk7Y0FDakIsb0JBQ0VmLElBQUEsQ0FBQ2EsZUFBZTtnQkFFZEUsSUFBSSxFQUFFQSxJQUFLO2dCQUNYQyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBRThCLFFBQVEsRUFBSTtrQkFDbkIsSUFBSXlELFdBQVcsRUFBRTtvQkFDZkMsY0FBYyxDQUFDLElBQUksQ0FBQztrQkFDdEI7a0JBQ0FJLGVBQWUsQ0FBQzlELFFBQVEsQ0FBQ2dDLGlCQUFpQixDQUFDO2tCQUMzQ00sVUFBVSxDQUFDdEMsUUFBUSxDQUFDO2dCQUN0QixDQUFFO2dCQUNGN0IsV0FBVyxFQUFFc0YsV0FBVyxLQUFLeEYsSUFBSSxDQUFDa0QsRUFBRztnQkFDckMvQyxXQUFXLEVBQUUrSCxlQUFnQjtnQkFDN0I5SCxZQUFZLEVBQUUrSCxnQkFBaUI7Z0JBQy9COUgsUUFBUSxFQUFFO2tCQUNSNEIsZ0JBQWdCLEVBQWhCQSxnQkFBZ0I7a0JBQ2hCRCxnQkFBZ0IsRUFBaEJBO2dCQUNGLENBQUU7Z0JBQ0YxQixVQUFVLEVBQUVzRixZQUFZLEtBQUs1RixJQUFJLENBQUMrRDtjQUFrQixHQWhCL0MvRCxJQUFJLENBQUNrRCxFQWlCWCxDQUFDO1lBRU4sQ0FBQyxDQUFDLEVBQ0Q4RCxrQkFBa0IsaUJBQ2pCL0gsSUFBQSxDQUFDTixxQkFBcUI7Y0FBQXVELFFBQUEsZUFDcEJqRCxJQUFBLENBQUNsRCxNQUFNLElBQUU7WUFBQyxDQUNXLENBQ3hCO1VBQUEsQ0FDRCxDQUFDLGdCQUVIb0QsS0FBQSxDQUFDUCxvQkFBb0I7WUFBQXNELFFBQUEsZ0JBQ25CakQsSUFBQSxDQUFDckQsZ0JBQWdCLElBQUUsQ0FBQyxlQUNwQnFELElBQUEsQ0FBQ0osd0JBQXdCO2NBQUFxRCxRQUFBLEVBQUVsQixDQUFDLENBQUMscUJBQXFCO1lBQUMsQ0FBMkIsQ0FBQztVQUFBLENBQzNEO1FBQ3ZCLENBQ29CLENBQUMsZUFDeEIvQixJQUFBLENBQUNILHFCQUFxQjtVQUFBb0QsUUFBQSxFQUNuQjBDLFFBQVEsSUFBSTRCLEtBQUssQ0FBQzZFLE1BQU0sZ0JBQ3ZCbE0sS0FBQSxDQUFDWixxQkFBcUI7WUFBQTJELFFBQUEsZ0JBQ3BCakQsSUFBQSxDQUFDVCw2QkFBNkI7Y0FBQTBELFFBQUEsZUFDNUJqRCxJQUFBLENBQUN4QyxTQUFTLElBQUU7WUFBQyxDQUNnQixDQUFDLGVBQ2hDd0MsSUFBQSxDQUFDUiw0QkFBNEI7Y0FBQXlELFFBQUEsRUFBRWxCLENBQUMsQ0FBQyxxQkFBcUI7WUFBQyxDQUErQixDQUFDO1VBQUEsQ0FDbEUsQ0FBQyxHQUN0QjtRQUFJLENBQ2EsQ0FBQztNQUFBLENBQ0wsQ0FBQyxHQUNwQixJQUFJLGVBQ1I3QixLQUFBLENBQUNKLHVCQUF1QjtRQUFDNkwsT0FBTyxFQUFFeEYsTUFBTztRQUFDbUcsZUFBZSxFQUFFLENBQUMsQ0FBQ3JGLGFBQWM7UUFBQWhFLFFBQUEsR0FDeEVnRSxhQUFhLGdCQUFHakgsSUFBQSxDQUFDckMsY0FBYztVQUFDc0osYUFBYSxFQUFFQSxhQUFjO1VBQUNkLE1BQU0sRUFBRUE7UUFBTyxDQUFFLENBQUMsR0FBRyxJQUFJLGVBQ3hGbkcsSUFBQSxDQUFDdEMscUJBQXFCLElBQUUsQ0FBQztNQUFBLENBQ0YsQ0FBQztJQUFBLENBQ1osQ0FBQztFQUFBLENBQ0gsQ0FBQztBQUVyQixDQUFDIiwiaWdub3JlTGlzdCI6W119