@projectcor/maia-components 2.11.59 → 2.11.60-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/atoms/Chip/Chip.js +10 -4
- package/lib/components/atoms/MAIAInput/MAIAInput.js +1 -1
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +40 -28
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +6 -6
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +13 -12
- package/lib/components/molecules/ChatFooter/ChatFooter.js +17 -3
- package/lib/components/molecules/Sidebar/Sidebar.js +9 -5
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +2 -2
- package/lib/hooks/useChatManager/useChatManager.js +136 -17
- package/lib/hooks/useChatMessages/useChatMessages.js +1 -1
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +21 -5
- package/lib/lang/br/index.js +3 -1
- package/lib/lang/en/index.js +3 -1
- package/lib/lang/es/index.js +3 -1
- package/lib/lang/fr/index.js +3 -1
- package/lib/services/maia/Agents/getAgents.js +68 -91
- package/lib/services/maia/Chats/getChatsByUserId.js +13 -9
- package/lib/services/utils/validateIsMaia.js +2 -2
- package/lib/types/Chat.js +1 -1
- package/lib/types/agent.js +1 -1
- package/lib/utils/hitlAnalytics.js +3 -3
- package/package.json +1 -1
|
@@ -30,7 +30,8 @@ import { AttachmentCardAudio } from '../../atoms/AttachmentCard/AttachmentCardAu
|
|
|
30
30
|
import { ChatHistoryRole } from '../../../types/Chat';
|
|
31
31
|
import { MAIA_STREAMDOWN_REHYPE_PLUGINS } from '../../../utils/maiaStreamdownRehypePlugins';
|
|
32
32
|
import { renderTextWithMentions, renderMentionLink, hasInlineMarkers } from '../../../utils/renderContextMentions';
|
|
33
|
-
|
|
33
|
+
|
|
34
|
+
// import { getAgentDisplayName } from '../../../utils/agentDisplayName'
|
|
34
35
|
import { useUser } from '../../../context/cor-user';
|
|
35
36
|
import { useT } from '../../../hooks/useT';
|
|
36
37
|
import { useChatManager } from '../../../hooks/useChatManager/useChatManager';
|
|
@@ -61,7 +62,7 @@ var AssistantAvatarInner = function AssistantAvatarInner() {
|
|
|
61
62
|
var _useGlobalContext = useGlobalContext(),
|
|
62
63
|
agent = _useGlobalContext.agent;
|
|
63
64
|
return /*#__PURE__*/_jsx(SCAssistantAvatar, {
|
|
64
|
-
children: (agent === null || agent === void 0 ? void 0 : agent.type) === 'clone' ? /*#__PURE__*/_jsx(MAIAIcon, {
|
|
65
|
+
children: (agent === null || agent === void 0 ? void 0 : agent.type) === 'clone' || (agent === null || agent === void 0 ? void 0 : agent.type) === 'orchestrator' ? /*#__PURE__*/_jsx(MAIAIcon, {
|
|
65
66
|
width: 18,
|
|
66
67
|
height: 18
|
|
67
68
|
}) : agent === null || agent === void 0 ? void 0 : agent.emoji
|
|
@@ -108,7 +109,8 @@ function MessageOptions(_ref3) {
|
|
|
108
109
|
})
|
|
109
110
|
});
|
|
110
111
|
}
|
|
111
|
-
var AssistantMessageHeader = function AssistantMessageHeader() {
|
|
112
|
+
var AssistantMessageHeader = function AssistantMessageHeader(_ref4) {
|
|
113
|
+
var subagentName = _ref4.subagentName;
|
|
112
114
|
var _useState3 = useState(null),
|
|
113
115
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
114
116
|
localAgent = _useState4[0],
|
|
@@ -118,9 +120,14 @@ var AssistantMessageHeader = function AssistantMessageHeader() {
|
|
|
118
120
|
useEffect(function () {
|
|
119
121
|
setLocalAgent(agent);
|
|
120
122
|
}, [agent]);
|
|
123
|
+
|
|
124
|
+
// Si un subagente especialista respondió este mensaje (orquestador que
|
|
125
|
+
// delegó), mostramos su nombre. Si no, caemos al comportamiento previo:
|
|
126
|
+
// 'MAIA' para clone/orchestrator, o el nombre del agente custom.
|
|
127
|
+
var displayName = (subagentName === null || subagentName === void 0 ? void 0 : subagentName.trim()) || ((localAgent === null || localAgent === void 0 ? void 0 : localAgent.type) === 'clone' || (localAgent === null || localAgent === void 0 ? void 0 : localAgent.type) === 'orchestrator' ? 'MAIA' : localAgent === null || localAgent === void 0 ? void 0 : localAgent.name);
|
|
121
128
|
return /*#__PURE__*/_jsxs(SCAssistantMessageHeader, {
|
|
122
|
-
children: [/*#__PURE__*/_jsx(AssistantAvatar, {}),
|
|
123
|
-
children:
|
|
129
|
+
children: [/*#__PURE__*/_jsx(AssistantAvatar, {}), displayName && /*#__PURE__*/_jsx(SCAssistantName, {
|
|
130
|
+
children: displayName
|
|
124
131
|
})]
|
|
125
132
|
});
|
|
126
133
|
};
|
|
@@ -169,10 +176,10 @@ var hasTaskLinksOrTaskMentions = function hasTaskLinksOrTaskMentions(text) {
|
|
|
169
176
|
};
|
|
170
177
|
|
|
171
178
|
// Component for task links that uses the useTaskPanel hook
|
|
172
|
-
var TaskLink = function TaskLink(
|
|
173
|
-
var href =
|
|
174
|
-
taskId =
|
|
175
|
-
children =
|
|
179
|
+
var TaskLink = function TaskLink(_ref5) {
|
|
180
|
+
var href = _ref5.href,
|
|
181
|
+
taskId = _ref5.taskId,
|
|
182
|
+
children = _ref5.children;
|
|
176
183
|
var tabSegment = getTabSegmentFromHref(href);
|
|
177
184
|
var _useTaskPanel = useTaskPanel(taskId, tabSegment),
|
|
178
185
|
buildOpenTask = _useTaskPanel.buildOpenTask;
|
|
@@ -194,10 +201,10 @@ var TaskLink = function TaskLink(_ref4) {
|
|
|
194
201
|
|
|
195
202
|
// Custom link component for Streamdown: task URLs open the task panel, other links render normally
|
|
196
203
|
|
|
197
|
-
var CustomLink = function CustomLink(
|
|
198
|
-
var href =
|
|
199
|
-
children =
|
|
200
|
-
rest = _objectWithoutProperties(
|
|
204
|
+
var CustomLink = function CustomLink(_ref6) {
|
|
205
|
+
var href = _ref6.href,
|
|
206
|
+
children = _ref6.children,
|
|
207
|
+
rest = _objectWithoutProperties(_ref6, _excluded3);
|
|
201
208
|
if (!href || typeof href !== 'string') {
|
|
202
209
|
return /*#__PURE__*/_jsx("a", _objectSpread(_objectSpread({
|
|
203
210
|
href: href
|
|
@@ -339,7 +346,8 @@ var MessageItem = /*#__PURE__*/memo(function (props) {
|
|
|
339
346
|
suggestions = props.suggestions,
|
|
340
347
|
createAgentFollowUp = props.createAgentFollowUp,
|
|
341
348
|
hasSelectedSuggestion = props.hasSelectedSuggestion,
|
|
342
|
-
isLastMessage = props.isLastMessage
|
|
349
|
+
isLastMessage = props.isLastMessage,
|
|
350
|
+
subagentName = props.subagentName;
|
|
343
351
|
var _useState5 = useState(null),
|
|
344
352
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
345
353
|
previewAttachment = _useState6[0],
|
|
@@ -361,7 +369,7 @@ var MessageItem = /*#__PURE__*/memo(function (props) {
|
|
|
361
369
|
setPreviewAttachment(null);
|
|
362
370
|
};
|
|
363
371
|
var handleAttachmentDownload = /*#__PURE__*/function () {
|
|
364
|
-
var
|
|
372
|
+
var _ref7 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(attachment) {
|
|
365
373
|
var extension, fileName, fileUrl, blobUrl, downloadedFile, link, _t;
|
|
366
374
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
367
375
|
while (1) switch (_context.prev = _context.next) {
|
|
@@ -416,7 +424,7 @@ var MessageItem = /*#__PURE__*/memo(function (props) {
|
|
|
416
424
|
}, _callee, null, [[1, 6]]);
|
|
417
425
|
}));
|
|
418
426
|
return function handleAttachmentDownload(_x) {
|
|
419
|
-
return
|
|
427
|
+
return _ref7.apply(this, arguments);
|
|
420
428
|
};
|
|
421
429
|
}();
|
|
422
430
|
if (isChangeProject && options) {
|
|
@@ -426,7 +434,9 @@ var MessageItem = /*#__PURE__*/memo(function (props) {
|
|
|
426
434
|
hasFeedback: false,
|
|
427
435
|
children: /*#__PURE__*/_jsxs(SCMessageItemWrapper, {
|
|
428
436
|
$isAssistant: isAssistant,
|
|
429
|
-
children: [isAssistant && !isThinking && /*#__PURE__*/_jsx(AssistantMessageHeader, {
|
|
437
|
+
children: [isAssistant && !isThinking && /*#__PURE__*/_jsx(AssistantMessageHeader, {
|
|
438
|
+
subagentName: subagentName
|
|
439
|
+
}), /*#__PURE__*/_jsx(MessageContentWrapper, {
|
|
430
440
|
isChangeProject: isChangeProject,
|
|
431
441
|
message: message,
|
|
432
442
|
isCurrentUser: isCurrentUser,
|
|
@@ -447,7 +457,9 @@ var MessageItem = /*#__PURE__*/memo(function (props) {
|
|
|
447
457
|
};
|
|
448
458
|
return /*#__PURE__*/_jsxs(SCMessageItemWrapper, {
|
|
449
459
|
$isAssistant: isAssistant,
|
|
450
|
-
children: [isAssistant && !isThinking && /*#__PURE__*/_jsx(AssistantMessageHeader, {
|
|
460
|
+
children: [isAssistant && !isThinking && /*#__PURE__*/_jsx(AssistantMessageHeader, {
|
|
461
|
+
subagentName: subagentName
|
|
462
|
+
}), /*#__PURE__*/_jsxs(SCMessageItemInner, {
|
|
451
463
|
children: [!!messageAttachments.length && /*#__PURE__*/_jsx(SCAttachmentsRow, {
|
|
452
464
|
$isAssistant: isAssistant,
|
|
453
465
|
children: messageAttachments.map(function (attachment, index) {
|
|
@@ -515,15 +527,15 @@ var MessageItem = /*#__PURE__*/memo(function (props) {
|
|
|
515
527
|
})]
|
|
516
528
|
});
|
|
517
529
|
});
|
|
518
|
-
var ChatAIMessagesInner = function ChatAIMessagesInner(
|
|
519
|
-
var userInitialMessage =
|
|
520
|
-
initialChatId =
|
|
521
|
-
onError =
|
|
522
|
-
onSendMessageReady =
|
|
523
|
-
onScrollToBottom =
|
|
524
|
-
attachments =
|
|
525
|
-
agents =
|
|
526
|
-
expanded =
|
|
530
|
+
var ChatAIMessagesInner = function ChatAIMessagesInner(_ref8) {
|
|
531
|
+
var userInitialMessage = _ref8.userInitialMessage,
|
|
532
|
+
initialChatId = _ref8.initialChatId,
|
|
533
|
+
onError = _ref8.onError,
|
|
534
|
+
onSendMessageReady = _ref8.onSendMessageReady,
|
|
535
|
+
onScrollToBottom = _ref8.onScrollToBottom,
|
|
536
|
+
attachments = _ref8.attachments,
|
|
537
|
+
agents = _ref8.agents,
|
|
538
|
+
expanded = _ref8.expanded;
|
|
527
539
|
var _useT = useT(),
|
|
528
540
|
t = _useT.t;
|
|
529
541
|
var _useGlobalContext3 = useGlobalContext(),
|
|
@@ -903,4 +915,4 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref7) {
|
|
|
903
915
|
});
|
|
904
916
|
};
|
|
905
917
|
export var ChatAIMessages = /*#__PURE__*/React.memo(ChatAIMessagesInner);
|
|
906
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiY3JlYXRlRWxlbWVudCIsIl9jcmVhdGVFbGVtZW50IiwiU3RyZWFtZG93biIsImNyZWF0ZUNvZGVQbHVnaW4iLCJBcnJvd1NtYWxsRG93biIsIkF0dGFjaG1lbnRDYXJkIiwiQXBwcm92YWxCb3giLCJBdHRhY2htZW50UHJldmlld01vZGFsIiwiQXR0YWNobWVudENhcmRBdWRpbyIsIkNoYXRIaXN0b3J5Um9sZSIsIk1BSUFfU1RSRUFNRE9XTl9SRUhZUEVfUExVR0lOUyIsInJlbmRlclRleHRXaXRoTWVudGlvbnMiLCJyZW5kZXJNZW50aW9uTGluayIsImhhc0lubGluZU1hcmtlcnMiLCJnZXRBZ2VudERpc3BsYXlOYW1lIiwidXNlVXNlciIsInVzZVQiLCJ1c2VDaGF0TWFuYWdlciIsInVzZVRhc2tQYW5lbCIsInVzZVNtb290aFN0cmVhbVRleHQiLCJ1c2VTdHJlYW1pbmdNZXNzYWdlIiwiTG9hZGluZ1RleHQiLCJBZ2VudEFjdGl2aXR5SW5kaWNhdG9yIiwiaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZCIsInJlc29sdmVTdHJlYW1Mb2FkaW5nRGlzcGxheSIsIkxvYWRlciIsIkZhZGUiLCJNZXNzYWdlRnJvbVVzZXIiLCJNZXNzYWdlRnJvbU90aGVyIiwiTWVzc2FnZUNvbnRlbnRGcm9tVXNlciIsIk1lc3NhZ2VDb250ZW50RnJvbU90aGVyIiwiTWVzc2FnZUZlZWRiYWNrIiwiU0NDQUlNZXNzYWdlV3JhcHBlciIsIlNjcm9sbFRvQm90dG9tQnV0dG9uIiwiU0NNZXNzYWdlc091dGVyIiwiU0NNZXNzYWdlc1Njcm9sbCIsIlNDTWVzc2FnZXNJbm5lciIsIlNDTG9hZGluZ01lc3NhZ2VzQ29sdW1uIiwiU0NPcHRpb25zTGlzdCIsIlNDT3B0aW9uSXRlbSIsIlNDQXNzaXN0YW50TWVzc2FnZUhlYWRlciIsIlNDQXNzaXN0YW50TmFtZSIsIlNDQXNzaXN0YW50QXZhdGFyIiwiU0NUYXNrTGluayIsIlNDTWVzc2FnZUl0ZW1XcmFwcGVyIiwiU0NNZXNzYWdlSXRlbUlubmVyIiwiU0NBdHRhY2htZW50c1JvdyIsIlNDQXBwcm92YWxBY3Rpb25zQ29sdW1uIiwiRmVlZGJhY2siLCJ1c2VHbG9iYWxDb250ZXh0IiwiTUFJQUljb24iLCJUQVNLX1VSTF9SRUdFWF9QQVRURVJOIiwiQ2hhdEFJU3VnZ2VzdGlvbnMiLCJDaGF0QUlDcmVhdGVBZ2VudEFjdGlvbnMiLCJFVkVOVFMiLCJ1c2VFdmVudCIsImRvd25sb2FkRmlsZUZyb21VcmwiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJjb2RlIiwidGhlbWVzIiwiQXNzaXN0YW50QXZhdGFySW5uZXIiLCJfdXNlR2xvYmFsQ29udGV4dCIsImFnZW50IiwiY2hpbGRyZW4iLCJ0eXBlIiwid2lkdGgiLCJoZWlnaHQiLCJlbW9qaSIsIkFzc2lzdGFudEF2YXRhciIsIk1lc3NhZ2VXcmFwcGVyIiwiX3JlZiIsImlzQ3VycmVudFVzZXIiLCJwcm9wcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIk1lc3NhZ2VDb21wb25lbnQiLCJfb2JqZWN0U3ByZWFkIiwiTWVzc2FnZUNvbnRlbnRXcmFwcGVyIiwiX3JlZjIiLCJfZXhjbHVkZWQyIiwiTWVzc2FnZUNvbnRlbnRDb21wb25lbnQiLCJNZXNzYWdlT3B0aW9ucyIsIl9yZWYzIiwib3B0aW9ucyIsImhhbmRsZVNlbGVjdE9wdGlvbiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNlbGVjdGVkT3B0aW9uIiwic2V0U2VsZWN0ZWRPcHRpb24iLCJoYW5kbGVTZWxlY3QiLCJvcHRpb24iLCJtYXAiLCIkaGFzU2VsZWN0aW9uIiwiJGRpbW1lZCIsImlkIiwib25DbGljayIsIm5hbWUiLCJBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJsb2NhbEFnZW50Iiwic2V0TG9jYWxBZ2VudCIsIl91c2VHbG9iYWxDb250ZXh0MiIsImdldFRhYlNlZ21lbnRGcm9tSHJlZiIsImhyZWYiLCJtYXRjaCIsInRlc3QiLCJleHRyYWN0VGFza3NGcm9tTWVzc2FnZSIsIm1lc3NhZ2UiLCJ0YXNrVXJsUmVnZXgiLCJSZWdFeHAiLCJ0YXNrcyIsInNlZW5JZHMiLCJTZXQiLCJleGVjIiwidGFza0lkIiwidXJsIiwiaGFzIiwiYWRkIiwiZXNjYXBlZFVybCIsInJlcGxhY2UiLCJtYXJrZG93bkxpbmtSZWdleCIsImNvbmNhdCIsImxpbmtNYXRjaCIsInRpdGxlIiwicHVzaCIsImhhc1Rhc2tMaW5rcyIsInRleHQiLCJsZW5ndGgiLCJUQVNLX01FTlRJT05fTUFSS0VSX1JFIiwiTUFJQV9UQVNLX01FTlRJT05fSFJFRl9SRSIsImhhc1Rhc2tMaW5rc09yVGFza01lbnRpb25zIiwiVGFza0xpbmsiLCJfcmVmNCIsInRhYlNlZ21lbnQiLCJfdXNlVGFza1BhbmVsIiwiYnVpbGRPcGVuVGFzayIsIm9wZW5UYXNrIiwiaGFuZGxlQ2xpY2siLCJlIiwibWV0YUtleSIsImN0cmxLZXkiLCJwcmV2ZW50RGVmYXVsdCIsIkN1c3RvbUxpbmsiLCJfcmVmNSIsInJlc3QiLCJfZXhjbHVkZWQzIiwibWVudGlvbk5vZGUiLCJ0YXNrTWF0Y2giLCJTdHJlYW1pbmdNZXNzYWdlQm9keSIsIl9wcm9wcyRjcmVhdGVBZ2VudEZvbCIsInN0cmVhbWluZ1RleHQiLCJpc1N0cmVhbWluZyIsIm1lc3NhZ2VJZCIsInJhd1RleHQiLCJ3aW5GbGFncyIsIndpbmRvdyIsImRpc3BsYXlUZXh0IiwiZW5hYmxlZCIsIm1heENoYXJzUGVyRnJhbWUiLCJzbmFwVG9Xb3JkQm91bmRhcnkiLCJzdHJlYW1MYWdNcyIsInRhcmdldExhZ01zIiwic3RyZWFtQWRhcHQiLCJhZGFwdFRvQmFja2VuZFJhdGUiLCJzdHJlYW1CdWZmZXJNcyIsInRhcmdldEJ1ZmZlck1zIiwic3RyZWFtTWluQnVmZmVyIiwibWluQnVmZmVyQ2hhcnMiLCJzdHJlYW1XYXJtdXBNcyIsIndhcm11cE1zIiwiY3JlYXRlQWdlbnRBY3Rpb25zQWdlbnRJZCIsImNyZWF0ZUFnZW50Rm9sbG93VXAiLCJhZ2VudElkIiwiaGFzTWVudGlvbnMiLCJtZW50aW9uTm9kZXMiLCJpc0Zyb250ZW5kQ2FuY2VsbGVkIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJkaXNwbGF5IiwicGx1Z2lucyIsInJlaHlwZVBsdWdpbnMiLCJjb21wb25lbnRzIiwiYSIsImxpbmtTYWZldHkiLCJpc0FuaW1hdGluZyIsInNoaWtpVGhlbWUiLCJjb250cm9scyIsInRhYmxlIiwiaXNBc3Npc3RhbnQiLCJpc0Vycm9yIiwiYXBwcm92YWwiLCJjb250ZW50Iiwic291cmNlcyIsImhhbmRsZUZlZWRiYWNrIiwiaGFuZGxlRmVlZGJhY2tDbGljayIsImRpc2FibGVGZWVkYmFjayIsInN1Z2dlc3Rpb25zIiwib25TZWxlY3RTdWdnZXN0aW9uIiwic3VnZ2VzdGlvbiIsImhhbmRsZVN1Z2dlc3Rpb25DbGljayIsImRpc2FibGVkIiwic3VnZ2VzdGlvbnNEaXNhYmxlZCIsImhpZGRlbiIsImlzTGFzdE1lc3NhZ2UiLCJNZXNzYWdlSXRlbSIsIl9wcm9wcyRwcm9qZWN0TWV0YWRhdCIsInVzZXIiLCJhdXRoVXNlciIsImlzQ2hhbmdlUHJvamVjdCIsImhhbmRsZUFwcHJvdmFsRGVjaXNpb24iLCJyb2xlIiwiYXR0YWNobWVudHMiLCJhcHByb3ZhbFN0YXR1cyIsImhhc1NlbGVjdGVkU3VnZ2VzdGlvbiIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwicHJldmlld0F0dGFjaG1lbnQiLCJzZXRQcmV2aWV3QXR0YWNobWVudCIsIlVTRVIiLCJ0b1N0cmluZyIsIkFTU0lTVEFOVCIsImlzVGhpbmtpbmciLCJtZXNzYWdlQXR0YWNobWVudHMiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVBdHRhY2htZW50Q2xpY2siLCJhdHRhY2htZW50IiwiZmlsZSIsIkZpbGUiLCJvcmlnaW5hbEZpbGUiLCJ1cmxfdGh1bWJuYWlsIiwidXJsX29yaWdpbmFsIiwidXJsX2ZpbGUiLCJoYW5kbGVDbG9zZVByZXZpZXciLCJoYW5kbGVBdHRhY2htZW50RG93bmxvYWQiLCJfcmVmNiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiZXh0ZW5zaW9uIiwiZmlsZU5hbWUiLCJmaWxlVXJsIiwiYmxvYlVybCIsImRvd25sb2FkZWRGaWxlIiwibGluayIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJpbmNsdWRlcyIsInNlbnQiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJhYnJ1cHQiLCJkb2N1bWVudCIsImRvd25sb2FkIiwiYm9keSIsImFwcGVuZENoaWxkIiwiY2xpY2siLCJzZXRUaW1lb3V0IiwicmVtb3ZlQ2hpbGQiLCJyZXZva2VPYmplY3RVUkwiLCJjb25zb2xlIiwiZXJyb3IiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImhhc0ZlZWRiYWNrIiwiJGlzQXNzaXN0YW50IiwibWVzc2FnZUV4dHJhQ29udGVudCIsImZlZWRiYWNrIiwic2Vzc2lvbklkIiwic3BsaXQiLCJmaWx0ZXIiLCJxdWVzdGlvbklkIiwiam9pbiIsImluZGV4IiwiX2F0dGFjaG1lbnQkdHlwZSIsIl9hdHRhY2htZW50JG5hbWUiLCJhdHRhY2htZW50VHlwZSIsInRvTG93ZXJDYXNlIiwiYXR0YWNobWVudE5hbWUiLCJpc0F1ZGlvRmlsZSIsInN0YXJ0c1dpdGgiLCJzb21lIiwiZXh0IiwiZW5kc1dpdGgiLCJwb3NpdGlvbkluZGV4Iiwib25Eb3dubG9hZCIsInBlbmRpbmdfYWN0aW9ucyIsImFjdGlvbnMiLCJzdGF0dXMiLCJvbkFwcHJvdmUiLCJ0aHJlYWRJZHMiLCJvblJlamVjdCIsImlzUHJvamVjdERlbGV0ZWQiLCJwcm9qZWN0TWV0YWRhdGEiLCJpc19kZWxldGVkIiwiaXNFeHBhbmRlZCIsImV4cGFuZGVkIiwiaGl0bEluc3RhbmNlSWQiLCJvcmlnaW5hbF90aHJlYWRfaWQiLCJ3YXJuaW5nTWVzc2FnZSIsIndhcm5pbmdfbWVzc2FnZSIsIm1hbnVhbEFwcHJvdmFsRGV0ZWN0ZWQiLCJtYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQiLCJpc09wZW4iLCJvbkNsb3NlIiwiQ2hhdEFJTWVzc2FnZXNJbm5lciIsIl9yZWY3IiwidXNlckluaXRpYWxNZXNzYWdlIiwiaW5pdGlhbENoYXRJZCIsIm9uRXJyb3IiLCJvblNlbmRNZXNzYWdlUmVhZHkiLCJvblNjcm9sbFRvQm90dG9tIiwiYWdlbnRzIiwiX3VzZVQiLCJ0IiwiX3VzZUdsb2JhbENvbnRleHQzIiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJpc0RlZXBTZWFyY2hBY3RpdmUiLCJldmVudCIsIm1lc3NhZ2VzUmVmIiwiY2hhdEluaXRpYWxpemVkUmVmIiwiaXNMb2FkaW5nTW9yZVJlZiIsInVzZXJTY3JvbGxpbmdSZWYiLCJzY3JvbGxUaHJlc2hvbGRSZWYiLCJsYXN0U2Nyb2xsVG9wUmVmIiwic2hvd1Njcm9sbFRvQm90dG9tUmVmIiwic2Nyb2xsUmFmUmVmIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJzaG93U2Nyb2xsVG9Cb3R0b20iLCJzZXRTaG93U2Nyb2xsVG9Cb3R0b20iLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHMiLCJzZXRTZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzIiwiX3VzZUNoYXRNYW5hZ2VyIiwiY2hhdElkIiwidW5kZWZpbmVkIiwibWVzc2FnZXMiLCJsb2FkaW5nTWVzc2FnZXMiLCJpc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJ3YWl0aW5nUmVzcG9uc2UiLCJpc1dyaXRpbmciLCJsb2FkaW5nTWVzc2FnZSIsInN0cmVhbUFjdGl2aXR5IiwiYWN0aXZlTG9hZGluZ3MiLCJzZW5kTWVzc2FnZSIsImNoYW5nZVByb2plY3QiLCJpbml0aWFsaXplQ2hhdCIsImhhbmRsZVNjcm9sbCIsInN0b3BHZW5lcmF0aW9uIiwidHJpbSIsImlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCIsImVudGl0eSIsImFpQ2hhdFN1Z2dlc3RlZEFuc3dlciIsImFnZW50X3R5cGUiLCJfZGVmaW5lUHJvcGVydHkiLCJ1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5IiwiZWwiLCJjdXJyZW50Iiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiZGlzdGFuY2VGcm9tQm90dG9tIiwic2hvdWxkU2hvdyIsInNjcm9sbFRvQm90dG9tUmFmIiwib3B0cyIsIl9vcHRzJHNraXBJZlVzZXJTY3JvbCIsInNraXBJZlVzZXJTY3JvbGxpbmciLCJfb3B0cyRkZWxheU1zIiwiZGVsYXlNcyIsInJ1biIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImhhbmRsZUNsaWNrU2Nyb2xsVG9Cb3R0b20iLCJzY3JvbGxUbyIsInRvcCIsImJlaGF2aW9yIiwiaGFuZGxlU2Nyb2xsVG9Cb3R0b20iLCJjb250YWluZXIiLCJjdXJyZW50VGFyZ2V0IiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJpc1Njcm9sbGluZ1VwIiwiaXNOZWFyQm90dG9tIiwic2VuZE1lc3NhZ2VSZWYiLCJzdG9wR2VuZXJhdGlvblJlZiIsIm9uU2VuZE1lc3NhZ2VSZWFkeVJlZiIsInJhZklkIiwibGFzdEhlaWdodCIsInRpY2siLCJjdXJyZW50SGVpZ2h0IiwibGFzdE1lc3NhZ2VJZFJlZiIsImxhc3RNZXNzYWdlc0xlbmd0aFJlZiIsIl9sYXN0TWVzc2FnZSRpZCIsImxhc3RNZXNzYWdlIiwibGFzdElkIiwicHJldklkIiwicHJldkxlbiIsImlzTmV3TWVzc2FnZSIsImlzQXRCb3R0b20iLCJoYXNJbml0aWFsTWVzc2FnZSIsIm1zZyIsImlzQXBwcm92YWwiLCJpc0Fuc3dlck9yUXVlc3Rpb24iLCJsYXN0VXNlck1lc3NhZ2UiLCJhdCIsImF0dGFjaG1lbnRzQ291bnQiLCJzdHJlYW1Mb2FkaW5nRGlzcGxheSIsImhhc0F0dGFjaG1lbnRzIiwiQm9vbGVhbiIsImlzU2Nyb2xsT25QYXJlbnQiLCJleHBhbmRlZFJlZiIsInNhdmVkU2Nyb2xsVG9wIiwiZmlsbCIsIm1lc3NhZ2VzQ29udGVudCIsIl9tZXNzYWdlJGF0dGFjaG1lbnRzIiwiX21lc3NhZ2Ukc291cmNlcyIsIl9tZXNzYWdlJHByb2plY3QiLCJfbWVzc2FnZSRpZCIsImlzQXNzaXN0YW50TWVzc2FnZSIsInByb2plY3QiLCJtZXNzYWdlRmVlZGJhY2siLCJ3YXNIZWxwZnVsIiwiVEhVTUJTX1VQIiwiVEhVTUJTX0RPV04iLCJtZXNzYWdlS2V5Iiwia2V5IiwiYWN0aXZpdHkiLCIkc2Nyb2xsT25QYXJlbnQiLCJyZWYiLCJvblNjcm9sbCIsIiRpc01hcmtldHBsYWNlR2xvYmFsIiwiY29sb3IiLCJDaGF0QUlNZXNzYWdlcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNZXNzYWdlcy9DaGF0QUlNZXNzYWdlcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby11bnN0YWJsZS1uZXN0ZWQtY29tcG9uZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXNoYWRvdyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcmVxdWlyZS1kZWZhdWx0LXByb3BzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCBSZWFjdCwgeyBGQywgbWVtbywgUmVhY3ROb2RlLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFN0cmVhbWRvd24gfSBmcm9tICdzdHJlYW1kb3duJ1xuaW1wb3J0IHsgY3JlYXRlQ29kZVBsdWdpbiB9IGZyb20gJ0BzdHJlYW1kb3duL2NvZGUnXG5pbXBvcnQgeyBBcnJvd1NtYWxsRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Fycm93U21hbGxEb3duJ1xuXG5pbXBvcnQgeyBBdHRhY2htZW50Q2FyZCB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRDYXJkL0F0dGFjaG1lbnRDYXJkJ1xuaW1wb3J0IHsgQXBwcm92YWxCb3ggfSBmcm9tICcuLi8uLi9hdG9tcy9BcHByb3ZhbEJveC9BcHByb3ZhbEJveCdcbmltcG9ydCB7IEF0dGFjaG1lbnRQcmV2aWV3TW9kYWwgfSBmcm9tICcuLi8uLi9hdG9tcy9BdHRhY2htZW50UHJldmlld01vZGFsJ1xuaW1wb3J0IHsgQXR0YWNobWVudENhcmRBdWRpbyB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRDYXJkL0F0dGFjaG1lbnRDYXJkQXVkaW8nXG5pbXBvcnQgeyBNQUlBTWVzc2FnZVByb3BzIH0gZnJvbSAnLi4vLi4vYXRvbXMvTUFJQU1lc3NhZ2UvTUFJQU1lc3NhZ2UuaW50ZXJmYWNlcydcbmltcG9ydCB7IENoYXRNZXNzYWdlLCBDaGF0SGlzdG9yeVJvbGUsIFRhc2tJbmZvIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IE1BSUFfU1RSRUFNRE9XTl9SRUhZUEVfUExVR0lOUyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL21haWFTdHJlYW1kb3duUmVoeXBlUGx1Z2lucydcbmltcG9ydCB7IHJlbmRlclRleHRXaXRoTWVudGlvbnMsIHJlbmRlck1lbnRpb25MaW5rLCBoYXNJbmxpbmVNYXJrZXJzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvcmVuZGVyQ29udGV4dE1lbnRpb25zJ1xuXG5pbXBvcnQgeyBnZXRBZ2VudERpc3BsYXlOYW1lIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYWdlbnREaXNwbGF5TmFtZSdcbmltcG9ydCB7IENPUlVzZXIsIHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IHVzZUNoYXRNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQ2hhdE1hbmFnZXIvdXNlQ2hhdE1hbmFnZXInXG5pbXBvcnQgeyB1c2VUYXNrUGFuZWwgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUYXNrUGFuZWwnXG5pbXBvcnQgeyB1c2VTbW9vdGhTdHJlYW1UZXh0IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU21vb3RoU3RyZWFtVGV4dCdcbmltcG9ydCB7IHVzZVN0cmVhbWluZ01lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTdHJlYW1pbmdNZXNzYWdlJ1xuXG5pbXBvcnQgeyBMb2FkaW5nVGV4dCB9IGZyb20gJy4uLy4uL2F0b21zL0xvYWRpbmdUZXh0J1xuaW1wb3J0IHsgQWdlbnRBY3Rpdml0eUluZGljYXRvciB9IGZyb20gJy4uLy4uL2F0b21zL0FnZW50QWN0aXZpdHlJbmRpY2F0b3InXG5pbXBvcnQgeyBpc1N0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkLCByZXNvbHZlU3RyZWFtTG9hZGluZ0Rpc3BsYXkgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGVyJ1xuaW1wb3J0IHsgRmFkZSB9IGZyb20gJy4uLy4uL2F0b21zL0ZhZGUnXG5cbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9Qcm9qZWN0J1xuXG5pbXBvcnQgeyBNZXNzYWdlRnJvbVVzZXIsIE1lc3NhZ2VGcm9tT3RoZXIsIE1lc3NhZ2VDb250ZW50RnJvbVVzZXIsIE1lc3NhZ2VDb250ZW50RnJvbU90aGVyIH0gZnJvbSAnLi9zdHlsZXMnXG5pbXBvcnQgeyBNZXNzYWdlRmVlZGJhY2sgfSBmcm9tICcuLi9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQge1xuICBTQ0NBSU1lc3NhZ2VXcmFwcGVyLFxuICBTY3JvbGxUb0JvdHRvbUJ1dHRvbixcbiAgU0NNZXNzYWdlc091dGVyLFxuICBTQ01lc3NhZ2VzU2Nyb2xsLFxuICBTQ01lc3NhZ2VzSW5uZXIsXG4gIFNDTG9hZGluZ01lc3NhZ2VzQ29sdW1uLFxuICBTQ09wdGlvbnNMaXN0LFxuICBTQ09wdGlvbkl0ZW0sXG4gIFNDQXNzaXN0YW50TWVzc2FnZUhlYWRlcixcbiAgU0NBc3Npc3RhbnROYW1lLFxuICBTQ0Fzc2lzdGFudEF2YXRhcixcbiAgU0NUYXNrTGluayxcbiAgU0NNZXNzYWdlSXRlbVdyYXBwZXIsXG4gIFNDTWVzc2FnZUl0ZW1Jbm5lcixcbiAgU0NBdHRhY2htZW50c1JvdyxcbiAgU0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4sXG59IGZyb20gJy4vbmV3U3R5bGVzJ1xuaW1wb3J0IHsgRmVlZGJhY2sgfSBmcm9tICcuLi9NZXNzYWdlRmVlZGJhY2svTWVzc2FnZUZlZWRiYWNrJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgTUFJQUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7IFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4gfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvdGFza1VybHMnXG5pbXBvcnQgeyBDaGF0QUlTdWdnZXN0aW9ucyB9IGZyb20gJy4vQ2hhdEFJU3VnZ2VzdGlvbnMnXG5pbXBvcnQgeyBDaGF0QUlDcmVhdGVBZ2VudEFjdGlvbnMgfSBmcm9tICcuL0NoYXRBSUNyZWF0ZUFnZW50QWN0aW9ucydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IGRvd25sb2FkRmlsZUZyb21VcmwgfSBmcm9tICcuLi8uLi8uLi91dGlscy9maWxlRG93bmxvYWRIZWxwZXInXG5cbmNvbnN0IGNvZGUgPSBjcmVhdGVDb2RlUGx1Z2luKHsgdGhlbWVzOiBbJ2dpdGh1Yi1saWdodCcsICdnaXRodWItbGlnaHQnXSB9KVxuXG5jb25zdCBBc3Npc3RhbnRBdmF0YXJJbm5lcjogRkMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgYWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICByZXR1cm4gKFxuICAgIDxTQ0Fzc2lzdGFudEF2YXRhcj5cbiAgICAgIHthZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyA/IDxNQUlBSWNvbiB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+IDogYWdlbnQ/LmVtb2ppfVxuICAgIDwvU0NBc3Npc3RhbnRBdmF0YXI+XG4gIClcbn1cblxuY29uc3QgQXNzaXN0YW50QXZhdGFyID0gbWVtbyhBc3Npc3RhbnRBdmF0YXJJbm5lcilcblxudHlwZSBDaGF0QUlNZXNzYWdlc1Byb3BzID0ge1xuICB1c2VySW5pdGlhbE1lc3NhZ2U6IHtcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBhdHRhY2htZW50czogQXR0YWNobWVudEZpbGVbXVxuICAgIGZhcUlkPzogc3RyaW5nXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmdcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW11cbiAgICBmdWFJZD86IHN0cmluZ1xuICAgIHNjSWQ/OiBzdHJpbmdcbiAgfVxuICBpbml0aWFsQ2hhdElkOiBzdHJpbmcgfCBudWxsXG4gIG9uRXJyb3I6ICgpID0+IHZvaWRcbiAgb25TZW5kTWVzc2FnZVJlYWR5PzogKFxuICAgIHNlbmRNZXNzYWdlOiAoXG4gICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nXG4gICAgKSA9PiB2b2lkLFxuICAgIHN0b3BHZW5lcmF0aW9uOiAoKSA9PiB2b2lkLFxuICAgIGlzU3RyZWFtaW5nOiBib29sZWFuLFxuICAgIGlzV3JpdGluZzogYm9vbGVhblxuICApID0+IHZvaWRcbiAgaXNEaXNhYmxlZD86IGJvb2xlYW5cbiAgb25TY3JvbGxUb0JvdHRvbT86ICgpID0+IHZvaWRcbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gIGFnZW50cz86IEFnZW50W11cbiAgZXhwYW5kZWQ/OiBib29sZWFuXG59XG5cbnR5cGUgTWVzc2FnZUl0ZW1Qcm9wcyA9IENoYXRNZXNzYWdlICYge1xuICBhdXRoVXNlcjogQ09SVXNlclxuICBoYW5kbGVTZWxlY3RPcHRpb246IChvcHRpb246IFByb2plY3QpID0+IHZvaWRcbiAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrOiAobWVzc2FnZUlkOiBzdHJpbmcsIHN1Z2dlc3Rpb246IHN0cmluZykgPT4gdm9pZFxuICBoYXNTZWxlY3RlZFN1Z2dlc3Rpb24/OiBib29sZWFuXG4gIGhhbmRsZUZlZWRiYWNrOiAoZmVlZGJhY2s6IEZlZWRiYWNrLCBjaGF0TWVzc2FnZUlkOiBzdHJpbmcpID0+IHZvaWRcbiAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbjogKHRocmVhZElkczogc3RyaW5nW10sIGRlY2lzaW9uOiAnYXBwcm92ZScgfCAncmVqZWN0JykgPT4gdm9pZFxuICBkaXNhYmxlRmVlZGJhY2s/OiBGZWVkYmFjayB8IG51bGxcbiAgc291cmNlcz86IGFueVxuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgaXNTdHJlYW1pbmc/OiBib29sZWFuXG4gIGlzTGFzdE1lc3NhZ2U/OiBib29sZWFuXG4gIGV4cGFuZGVkPzogYm9vbGVhblxufVxuXG5pbnRlcmZhY2UgTWVzc2FnZVdyYXBwZXJQcm9wcyB7XG4gIGlzQ3VycmVudFVzZXI6IGJvb2xlYW5cbiAgY2hpbGRyZW46IFJlYWN0Tm9kZVxuICAnZGF0YS1tZXNzYWdlLWlkJz86IHN0cmluZ1xuICBoYXNGZWVkYmFjaz86IGJvb2xlYW5cbn1cblxudHlwZSBNZXNzYWdlQ29udGVudFdyYXBwZXJQcm9wcyA9IE1BSUFNZXNzYWdlUHJvcHMgJiB7XG4gIGlzQ3VycmVudFVzZXI6IGJvb2xlYW5cbiAgaXNFcnJvcj86IGJvb2xlYW5cbiAgaXNDaGFuZ2VQcm9qZWN0PzogYm9vbGVhblxufVxuXG5jb25zdCBNZXNzYWdlV3JhcHBlcjogRkM8TWVzc2FnZVdyYXBwZXJQcm9wcz4gPSAoeyBpc0N1cnJlbnRVc2VyLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCBNZXNzYWdlQ29tcG9uZW50ID0gaXNDdXJyZW50VXNlciA/IE1lc3NhZ2VGcm9tVXNlciA6IE1lc3NhZ2VGcm9tT3RoZXJcbiAgcmV0dXJuIDxNZXNzYWdlQ29tcG9uZW50IHsuLi5wcm9wc30+e2NoaWxkcmVufTwvTWVzc2FnZUNvbXBvbmVudD5cbn1cblxuY29uc3QgTWVzc2FnZUNvbnRlbnRXcmFwcGVyOiBGQzxNZXNzYWdlQ29udGVudFdyYXBwZXJQcm9wcz4gPSAoeyBpc0N1cnJlbnRVc2VyLCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IE1lc3NhZ2VDb250ZW50Q29tcG9uZW50ID0gaXNDdXJyZW50VXNlciA/IE1lc3NhZ2VDb250ZW50RnJvbVVzZXIgOiBNZXNzYWdlQ29udGVudEZyb21PdGhlclxuICByZXR1cm4gPE1lc3NhZ2VDb250ZW50Q29tcG9uZW50IHsuLi5wcm9wc30gLz5cbn1cblxuZnVuY3Rpb24gTWVzc2FnZU9wdGlvbnMoe1xuICBvcHRpb25zLFxuICBoYW5kbGVTZWxlY3RPcHRpb24sXG59OiB7XG4gIG9wdGlvbnM6IFByb2plY3RbXSB8IG51bGxcbiAgaGFuZGxlU2VsZWN0T3B0aW9uOiAob3B0aW9uOiBQcm9qZWN0KSA9PiB2b2lkXG59KSB7XG4gIGNvbnN0IFtzZWxlY3RlZE9wdGlvbiwgc2V0U2VsZWN0ZWRPcHRpb25dID0gdXNlU3RhdGU8UHJvamVjdCB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0ID0gKG9wdGlvbjogUHJvamVjdCkgPT4ge1xuICAgIGlmIChzZWxlY3RlZE9wdGlvbikgcmV0dXJuXG4gICAgc2V0U2VsZWN0ZWRPcHRpb24ob3B0aW9uKVxuICAgIGhhbmRsZVNlbGVjdE9wdGlvbihvcHRpb24pXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ09wdGlvbnNMaXN0PlxuICAgICAgeyhvcHRpb25zIHx8IFtdKS5tYXAob3B0aW9uID0+IChcbiAgICAgICAgPFNDT3B0aW9uSXRlbVxuICAgICAgICAgICRoYXNTZWxlY3Rpb249eyEhc2VsZWN0ZWRPcHRpb259XG4gICAgICAgICAgJGRpbW1lZD17ISFzZWxlY3RlZE9wdGlvbiAmJiBzZWxlY3RlZE9wdGlvbj8uaWQgIT09IG9wdGlvbi5pZH1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3Qob3B0aW9uKX1cbiAgICAgICAgICBrZXk9e29wdGlvbi5pZH1cbiAgICAgICAgPlxuICAgICAgICAgIHtvcHRpb24ubmFtZX1cbiAgICAgICAgPC9TQ09wdGlvbkl0ZW0+XG4gICAgICApKX1cbiAgICA8L1NDT3B0aW9uc0xpc3Q+XG4gIClcbn1cblxuY29uc3QgQXNzaXN0YW50TWVzc2FnZUhlYWRlciA9ICgpID0+IHtcbiAgY29uc3QgW2xvY2FsQWdlbnQsIHNldExvY2FsQWdlbnRdID0gdXNlU3RhdGU8QWdlbnQgfCBudWxsPihudWxsKVxuICBjb25zdCB7IGFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldExvY2FsQWdlbnQoYWdlbnQpXG4gIH0sIFthZ2VudF0pXG5cbiAgcmV0dXJuIChcbiAgICA8U0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyPlxuICAgICAgPEFzc2lzdGFudEF2YXRhciAvPlxuICAgICAge2xvY2FsQWdlbnQ/Lm5hbWUgJiYgPFNDQXNzaXN0YW50TmFtZT57Z2V0QWdlbnREaXNwbGF5TmFtZShsb2NhbEFnZW50Py50eXBlLCBsb2NhbEFnZW50Py5uYW1lKX08L1NDQXNzaXN0YW50TmFtZT59XG4gICAgPC9TQ0Fzc2lzdGFudE1lc3NhZ2VIZWFkZXI+XG4gIClcbn1cblxuLy8gRXh0cmFlIGVsIHNlZ21lbnRvIGRlIHRhYiAoZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycykgZGVsIGhyZWYgcGFyYSBhYnJpciBlbCBtb2RhbCBjb24gZWwgdGFiIGNvcnJlY3RvXG5jb25zdCBnZXRUYWJTZWdtZW50RnJvbUhyZWYgPSAoaHJlZjogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgbWF0Y2ggPSBocmVmLm1hdGNoKC9cXC90YXNrc1xcL1xcZCtcXC8oW14vP10rKS8pXG4gIHJldHVybiBtYXRjaCAmJiAvXihkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSQvLnRlc3QobWF0Y2hbMV0pID8gbWF0Y2hbMV0gOiAnZGV0YWlsJ1xufVxuXG4vKiogRXh0cmFlIGxhcyB0YXJlYXMgZW5sYXphZGFzIGVuIGVsIHRleHRvIChVUkxzIHF1ZSBjb2luY2lkZW4gY29uIFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4pLiAqL1xuY29uc3QgZXh0cmFjdFRhc2tzRnJvbU1lc3NhZ2UgPSAobWVzc2FnZTogc3RyaW5nKTogVGFza0luZm9bXSA9PiB7XG4gIGlmICghbWVzc2FnZSkgcmV0dXJuIFtdXG4gIGNvbnN0IHRhc2tVcmxSZWdleCA9IG5ldyBSZWdFeHAoVEFTS19VUkxfUkVHRVhfUEFUVEVSTiwgJ2cnKVxuICBjb25zdCB0YXNrczogVGFza0luZm9bXSA9IFtdXG4gIGNvbnN0IHNlZW5JZHMgPSBuZXcgU2V0PHN0cmluZz4oKVxuICBsZXQgbWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGwgPSBudWxsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25kLWFzc2lnblxuICB3aGlsZSAoKG1hdGNoID0gdGFza1VybFJlZ2V4LmV4ZWMobWVzc2FnZSkpICE9PSBudWxsKSB7XG4gICAgY29uc3QgdGFza0lkID0gbWF0Y2hbMV1cbiAgICBjb25zdCB1cmwgPSBtYXRjaFswXVxuICAgIGlmICghc2Vlbklkcy5oYXModGFza0lkKSkge1xuICAgICAgc2Vlbklkcy5hZGQodGFza0lkKVxuICAgICAgY29uc3QgZXNjYXBlZFVybCA9IHVybC5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgJ1xcXFwkJicpXG4gICAgICBjb25zdCBtYXJrZG93bkxpbmtSZWdleCA9IG5ldyBSZWdFeHAoYFxcXFxbKFteXFxcXF1dKylcXFxcXVxcXFwoJHtlc2NhcGVkVXJsfVxcXFwpYClcbiAgICAgIGNvbnN0IGxpbmtNYXRjaCA9IG1lc3NhZ2UubWF0Y2gobWFya2Rvd25MaW5rUmVnZXgpXG4gICAgICBjb25zdCB0aXRsZSA9IGxpbmtNYXRjaCA/IGxpbmtNYXRjaFsxXSA6IGBUYXJlYSAjJHt0YXNrSWR9YFxuICAgICAgdGFza3MucHVzaCh7IGlkOiB0YXNrSWQsIHRpdGxlLCB1cmwgfSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRhc2tzXG59XG5cbmNvbnN0IGhhc1Rhc2tMaW5rcyA9ICh0ZXh0OiBzdHJpbmcpOiBib29sZWFuID0+IGV4dHJhY3RUYXNrc0Zyb21NZXNzYWdlKHRleHQpLmxlbmd0aCA+IDBcblxuY29uc3QgVEFTS19NRU5USU9OX01BUktFUl9SRSA9IC9cXFtcXFttZW50aW9uOnRhc2s6L2lcbmNvbnN0IE1BSUFfVEFTS19NRU5USU9OX0hSRUZfUkUgPSAvbWFpYS1tZW50aW9uOlxcL1xcL3Rhc2tcXC8vaVxuXG4vKiogVVJMcyBkZSB0YXJlYSBlbiBtYXJrZG93biArIG1hcmNhZG9yZXMgW1ttZW50aW9uOnRhc2s64oCmXV0gKyBsaW5rcyBtYWlhLW1lbnRpb24gKG1pc21vIGFzcGVjdG8gcXVlIGVubGFjZXMgZGVsIGFnZW50ZSkuICovXG5jb25zdCBoYXNUYXNrTGlua3NPclRhc2tNZW50aW9ucyA9ICh0ZXh0OiBzdHJpbmcpOiBib29sZWFuID0+XG4gIGhhc1Rhc2tMaW5rcyh0ZXh0KSB8fCBUQVNLX01FTlRJT05fTUFSS0VSX1JFLnRlc3QodGV4dCkgfHwgTUFJQV9UQVNLX01FTlRJT05fSFJFRl9SRS50ZXN0KHRleHQpXG5cbi8vIENvbXBvbmVudCBmb3IgdGFzayBsaW5rcyB0aGF0IHVzZXMgdGhlIHVzZVRhc2tQYW5lbCBob29rXG5jb25zdCBUYXNrTGluazogRkM8eyBocmVmOiBzdHJpbmc7IHRhc2tJZDogc3RyaW5nOyBjaGlsZHJlbjogUmVhY3ROb2RlIH0+ID0gKHsgaHJlZiwgdGFza0lkLCBjaGlsZHJlbiB9KSA9PiB7XG4gIGNvbnN0IHRhYlNlZ21lbnQgPSBnZXRUYWJTZWdtZW50RnJvbUhyZWYoaHJlZilcbiAgY29uc3QgeyBidWlsZE9wZW5UYXNrIH0gPSB1c2VUYXNrUGFuZWwodGFza0lkLCB0YWJTZWdtZW50KVxuICBjb25zdCBvcGVuVGFzayA9IGJ1aWxkT3BlblRhc2soKVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGU6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB7XG4gICAgLy8gU2kgZXMgQ21kL0N0cmwgKyBjbGljaywgZGVqYXIgcXVlIHNlIGFicmEgZW4gbnVldmEgcGVzdGHDsWEgKGNvbXBvcnRhbWllbnRvIHBvciBkZWZlY3RvKVxuICAgIGlmIChlLm1ldGFLZXkgfHwgZS5jdHJsS2V5KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBvcGVuVGFzaygpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ1Rhc2tMaW5rIGhyZWY9e2hyZWZ9IG9uQ2xpY2s9e2hhbmRsZUNsaWNrfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1NDVGFza0xpbms+XG4gIClcbn1cblxuLy8gQ3VzdG9tIGxpbmsgY29tcG9uZW50IGZvciBTdHJlYW1kb3duOiB0YXNrIFVSTHMgb3BlbiB0aGUgdGFzayBwYW5lbCwgb3RoZXIgbGlua3MgcmVuZGVyIG5vcm1hbGx5XG50eXBlIEN1c3RvbUxpbmtQcm9wcyA9IFJlYWN0LkFuY2hvckhUTUxBdHRyaWJ1dGVzPEhUTUxBbmNob3JFbGVtZW50PiAmIHsgbm9kZT86IHVua25vd24gfVxuY29uc3QgQ3VzdG9tTGluazogRkM8Q3VzdG9tTGlua1Byb3BzPiA9ICh7IGhyZWYsIGNoaWxkcmVuLCAuLi5yZXN0IH0pID0+IHtcbiAgaWYgKCFocmVmIHx8IHR5cGVvZiBocmVmICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiAoXG4gICAgICA8YSBocmVmPXtocmVmfSB7Li4ucmVzdH0+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvYT5cbiAgICApXG4gIH1cbiAgY29uc3QgbWVudGlvbk5vZGUgPSByZW5kZXJNZW50aW9uTGluayhocmVmLCBjaGlsZHJlbilcbiAgaWYgKG1lbnRpb25Ob2RlKSByZXR1cm4gbWVudGlvbk5vZGUgYXMgUmVhY3QuUmVhY3RFbGVtZW50XG5cbiAgY29uc3QgdGFza01hdGNoID0gaHJlZi5tYXRjaChuZXcgUmVnRXhwKFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4pKVxuICBpZiAodGFza01hdGNoKSB7XG4gICAgY29uc3QgdGFza0lkID0gdGFza01hdGNoWzFdXG4gICAgcmV0dXJuIChcbiAgICAgIDxUYXNrTGluayBocmVmPXtocmVmfSB0YXNrSWQ9e3Rhc2tJZH0+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvVGFza0xpbms+XG4gICAgKVxuICB9XG4gIHJldHVybiAoXG4gICAgPGEgaHJlZj17aHJlZn0gey4uLnJlc3R9PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvYT5cbiAgKVxufVxuXG4vKiogU29sbyBlc3RlIGNvbXBvbmVudGUgcmUtcmVuZGVyaXphIGN1YW5kbyBjYW1iaWEgZWwgdGV4dG8gZW4gc3RyZWFtaW5nIChsZWUgZGVsIGNvbnRleHQpLiAqL1xuY29uc3QgU3RyZWFtaW5nTWVzc2FnZUJvZHkgPSBtZW1vKFxuICAocHJvcHM6IHtcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBpc1N0cmVhbWluZzogYm9vbGVhblxuICAgIGlzQ3VycmVudFVzZXI6IGJvb2xlYW5cbiAgICBpc0Fzc2lzdGFudDogYm9vbGVhblxuICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ/OiBib29sZWFuXG4gICAgYXBwcm92YWw/OiBNZXNzYWdlSXRlbVByb3BzWydhcHByb3ZhbCddXG4gICAgaXNFcnJvcj86IGJvb2xlYW5cbiAgICBzb3VyY2VzPzogTWVzc2FnZUl0ZW1Qcm9wc1snc291cmNlcyddXG4gICAgc3VnZ2VzdGlvbnM/OiBzdHJpbmdbXSB8IG51bGxcbiAgICBjcmVhdGVBZ2VudEZvbGxvd1VwPzogeyBhZ2VudElkOiBzdHJpbmcgfSB8IG51bGxcbiAgICBoYW5kbGVGZWVkYmFja0NsaWNrOiAoZjogRmVlZGJhY2spID0+IHZvaWRcbiAgICBkaXNhYmxlRmVlZGJhY2s6IEZlZWRiYWNrIHwgbnVsbFxuICAgIGhhbmRsZVN1Z2dlc3Rpb25DbGljazogKG1lc3NhZ2VJZDogc3RyaW5nLCBzdWdnZXN0aW9uOiBzdHJpbmcpID0+IHZvaWRcbiAgICBzdWdnZXN0aW9uc0Rpc2FibGVkPzogYm9vbGVhblxuICAgIG1lc3NhZ2VJZDogc3RyaW5nXG4gICAgaXNMYXN0TWVzc2FnZT86IGJvb2xlYW5cbiAgfSkgPT4ge1xuICAgIC8vIFRleHRvIGRlbCBzdHJlYW06IHNvbG8gc2UgbGVlIGRlbCBzdG9yZSBjdWFuZG8gZXN0ZSBtZW5zYWplIGVzIGVsXG4gICAgLy8gcXVlIGVzdMOhIGVuIHN0cmVhbWluZy4gdXNlU3luY0V4dGVybmFsU3RvcmUgYcOtc2xhIGVsIHJlLXJlbmRlciBhXG4gICAgLy8gZXN0ZSBjb21wb25lbnRlLCBzaW4gdG9jYXIgZWwgcmVzdG8gZGVsIMOhcmJvbC5cbiAgICBjb25zdCBzdHJlYW1pbmdUZXh0ID0gdXNlU3RyZWFtaW5nTWVzc2FnZShwcm9wcy5pc1N0cmVhbWluZyA/IHByb3BzLm1lc3NhZ2VJZCA6IG51bGwpXG4gICAgY29uc3QgcmF3VGV4dCA9IHByb3BzLmlzU3RyZWFtaW5nID8gc3RyZWFtaW5nVGV4dCA6IHByb3BzLm1lc3NhZ2VcbiAgICAvLyBTbW9vdGggc3RyZWFtaW5nOiBkZXNhY29wbGEgbGEgY2FkZW5jaWEgZGVsIGJhY2tlbmQgZGVsIHJlbmRlci5cbiAgICAvLyBEdXJhbnRlIGVsIHN0cmVhbWluZyBsaWJlcmEgY2hhcnMgYSByaXRtbyBjb25zdGFudGUgdsOtYSByQUY7IGN1YW5kb1xuICAgIC8vIHRlcm1pbmEsIG11ZXN0cmEgZWwgdGV4dG8gZmluYWwgYWwgaW5zdGFudGUgKHNpbiBhbmltYWNpw7NuIHJlc2lkdWFsKS5cbiAgICAvLyBMb3MgZGVmYXVsdHMgZGVsIGhvb2sgc2UgYWp1c3Rhcm9uIGVtcMOtcmljYW1lbnRlIGVuIHN0YWdpbmc7IGF1biBhc8OtXG4gICAgLy8gc2UgZXhwb25lbiBmbGFncyBkZSBydW50aW1lICh3aW5kb3cuKikgcGFyYSBwb2RlciB0dW5lYXIgc2luIHJlY29tcGlsYXJcbiAgICAvLyBzaSBhbGfDum4gYmFja2VuZCBwcmVzZW50YSB1bmEgY2FkZW5jaWEgbXV5IGRpc3RpbnRhIGVuIHByb2R1Y2Npw7NuLlxuICAgIC8vICAgd2luZG93LnN0cmVhbUFkYXB0ID0gZmFsc2UgICAgICAvLyBkZXNhY3RpdmEgYWRhcHRhY2nDs24gYWwgYmFja2VuZFxuICAgIC8vICAgd2luZG93LnN0cmVhbUJ1ZmZlck1zID0gNjAwICAgICAvLyBjb2xjaMOzbiBvYmpldGl2byAobXMpXG4gICAgLy8gICB3aW5kb3cuc3RyZWFtTGFnTXMgPSA0NTAgICAgICAgIC8vIGxhZyBtw6F4aW1vIGJhc2UgKG1zKVxuICAgIC8vICAgd2luZG93LnN0cmVhbU1pbkJ1ZmZlciA9IDcwICAgICAvLyBwaXNvIGRlbCBjb2xjaMOzbiBlbiBjaGFyc1xuICAgIC8vICAgd2luZG93LnN0cmVhbVdhcm11cE1zID0gNDAwICAgICAvLyB3YXJtdXAgaW5pY2lhbCAobXMpXG4gICAgY29uc3Qgd2luRmxhZ3MgPVxuICAgICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgPyAod2luZG93IGFzIHVua25vd24gYXMge1xuICAgICAgICAgICAgc3RyZWFtQWRhcHQ/OiBib29sZWFuXG4gICAgICAgICAgICBzdHJlYW1CdWZmZXJNcz86IG51bWJlclxuICAgICAgICAgICAgc3RyZWFtTGFnTXM/OiBudW1iZXJcbiAgICAgICAgICAgIHN0cmVhbU1pbkJ1ZmZlcj86IG51bWJlclxuICAgICAgICAgICAgc3RyZWFtV2FybXVwTXM/OiBudW1iZXJcbiAgICAgICAgICB9KVxuICAgICAgICA6IHt9XG4gICAgY29uc3QgZGlzcGxheVRleHQgPSB1c2VTbW9vdGhTdHJlYW1UZXh0KHJhd1RleHQsIHtcbiAgICAgIGVuYWJsZWQ6ICEhcHJvcHMuaXNTdHJlYW1pbmcsXG4gICAgICBtYXhDaGFyc1BlckZyYW1lOiAyNCxcbiAgICAgIHNuYXBUb1dvcmRCb3VuZGFyeTogdHJ1ZSxcbiAgICAgIC4uLih3aW5GbGFncy5zdHJlYW1MYWdNcyAhPSBudWxsICYmIHsgdGFyZ2V0TGFnTXM6IHdpbkZsYWdzLnN0cmVhbUxhZ01zIH0pLFxuICAgICAgLi4uKHdpbkZsYWdzLnN0cmVhbUFkYXB0ICE9IG51bGwgJiYgeyBhZGFwdFRvQmFja2VuZFJhdGU6IHdpbkZsYWdzLnN0cmVhbUFkYXB0IH0pLFxuICAgICAgLi4uKHdpbkZsYWdzLnN0cmVhbUJ1ZmZlck1zICE9IG51bGwgJiYgeyB0YXJnZXRCdWZmZXJNczogd2luRmxhZ3Muc3RyZWFtQnVmZmVyTXMgfSksXG4gICAgICAuLi4od2luRmxhZ3Muc3RyZWFtTWluQnVmZmVyICE9IG51bGwgJiYgeyBtaW5CdWZmZXJDaGFyczogd2luRmxhZ3Muc3RyZWFtTWluQnVmZmVyIH0pLFxuICAgICAgLi4uKHdpbkZsYWdzLnN0cmVhbVdhcm11cE1zICE9IG51bGwgJiYgeyB3YXJtdXBNczogd2luRmxhZ3Muc3RyZWFtV2FybXVwTXMgfSksXG4gICAgfSlcbiAgICBjb25zdCBjcmVhdGVBZ2VudEFjdGlvbnNBZ2VudElkID0gcHJvcHMuY3JlYXRlQWdlbnRGb2xsb3dVcD8uYWdlbnRJZFxuXG4gICAgaWYgKCFkaXNwbGF5VGV4dCAmJiAhcHJvcHMuaXNTdHJlYW1pbmcpIHJldHVybiBudWxsXG4gICAgY29uc3QgaGFzTWVudGlvbnMgPSBoYXNJbmxpbmVNYXJrZXJzKGRpc3BsYXlUZXh0KVxuICAgIGNvbnN0IG1lbnRpb25Ob2RlcyA9IGhhc01lbnRpb25zID8gcmVuZGVyVGV4dFdpdGhNZW50aW9ucyhkaXNwbGF5VGV4dCkgOiBudWxsXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxTQ0NBSU1lc3NhZ2VXcmFwcGVyXG4gICAgICAgICAgaXNDdXJyZW50VXNlcj17cHJvcHMuaXNDdXJyZW50VXNlcn1cbiAgICAgICAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkPXtwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkfVxuICAgICAgICAgIGNsYXNzTmFtZT17aGFzVGFza0xpbmtzT3JUYXNrTWVudGlvbnMoZGlzcGxheVRleHQpID8gJ2hhcy10YXNrLWxpbmtzJyA6ICcnfVxuICAgICAgICA+XG4gICAgICAgICAge2hhc01lbnRpb25zICYmIG1lbnRpb25Ob2RlcyA/IChcbiAgICAgICAgICAgIC8vIFNpIGhheSBtZW50aW9ucywgcmVuZGVyaXphciBkaXJlY3RhbWVudGUgKHNpbiBtYXJrZG93biBlbiBlbCBtaXNtbyBww6FycmFmbylcbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGRpc3BsYXk6ICdpbmxpbmUnIH19PnttZW50aW9uTm9kZXN9PC9zcGFuPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAvLyBTaW4gbWVudGlvbnMsIHBhc2FyIGEgU3RyZWFtZG93biBwYXJhIG1hcmtkb3duIHN1cHBvcnRcbiAgICAgICAgICAgIDxTdHJlYW1kb3duXG4gICAgICAgICAgICAgIHBsdWdpbnM9e3sgY29kZSB9fVxuICAgICAgICAgICAgICByZWh5cGVQbHVnaW5zPXtNQUlBX1NUUkVBTURPV05fUkVIWVBFX1BMVUdJTlN9XG4gICAgICAgICAgICAgIGNvbXBvbmVudHM9e3sgYTogQ3VzdG9tTGluayB9IGFzIFBhcmFtZXRlcnM8dHlwZW9mIFN0cmVhbWRvd24+WzBdWydjb21wb25lbnRzJ119XG4gICAgICAgICAgICAgIGxpbmtTYWZldHk9e3sgZW5hYmxlZDogZmFsc2UgfX1cbiAgICAgICAgICAgICAgaXNBbmltYXRpbmc9eyEhcHJvcHMuaXNTdHJlYW1pbmd9XG4gICAgICAgICAgICAgIHNoaWtpVGhlbWU9e1snZ2l0aHViLWxpZ2h0JywgJ2dpdGh1Yi1saWdodCddfVxuICAgICAgICAgICAgICBjb250cm9scz17eyB0YWJsZTogZmFsc2UsIGNvZGU6IGZhbHNlIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtkaXNwbGF5VGV4dH1cbiAgICAgICAgICAgIDwvU3RyZWFtZG93bj5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NDQ0FJTWVzc2FnZVdyYXBwZXI+XG4gICAgICAgIHtwcm9wcy5pc0Fzc2lzdGFudCAmJiAhcHJvcHMuaXNFcnJvciAmJiAhcHJvcHMuaXNGcm9udGVuZENhbmNlbGxlZCAmJiAhcHJvcHMuYXBwcm92YWwgJiYgIXByb3BzLmlzU3RyZWFtaW5nICYmIChcbiAgICAgICAgICA8TWVzc2FnZUZlZWRiYWNrXG4gICAgICAgICAgICBjb250ZW50PXtkaXNwbGF5VGV4dH1cbiAgICAgICAgICAgIHNvdXJjZXM9e3Byb3BzLnNvdXJjZXN9XG4gICAgICAgICAgICBoYW5kbGVGZWVkYmFjaz17cHJvcHMuaGFuZGxlRmVlZGJhY2tDbGlja31cbiAgICAgICAgICAgIGRpc2FibGVGZWVkYmFjaz17cHJvcHMuZGlzYWJsZUZlZWRiYWNrfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtwcm9wcy5pc0Fzc2lzdGFudCAmJiAhcHJvcHMuaXNFcnJvciAmJiAhcHJvcHMuaXNGcm9udGVuZENhbmNlbGxlZCAmJiAhcHJvcHMuYXBwcm92YWwgJiYgKFxuICAgICAgICAgIDxDaGF0QUlTdWdnZXN0aW9uc1xuICAgICAgICAgICAgc3VnZ2VzdGlvbnM9e3Byb3BzLnN1Z2dlc3Rpb25zIHx8IFtdfVxuICAgICAgICAgICAgb25TZWxlY3RTdWdnZXN0aW9uPXtzdWdnZXN0aW9uID0+IHByb3BzLmhhbmRsZVN1Z2dlc3Rpb25DbGljayhwcm9wcy5tZXNzYWdlSWQsIHN1Z2dlc3Rpb24pfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3Byb3BzLnN1Z2dlc3Rpb25zRGlzYWJsZWR9XG4gICAgICAgICAgICBoaWRkZW49eyEhcHJvcHMuaXNTdHJlYW1pbmcgfHwgIXByb3BzLmlzTGFzdE1lc3NhZ2UgfHwgISFwcm9wcy5zdWdnZXN0aW9uc0Rpc2FibGVkfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtwcm9wcy5pc0Fzc2lzdGFudCAmJlxuICAgICAgICAgICFwcm9wcy5pc0Vycm9yICYmXG4gICAgICAgICAgIXByb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWQgJiZcbiAgICAgICAgICAhcHJvcHMuYXBwcm92YWwgJiZcbiAgICAgICAgICAhIWNyZWF0ZUFnZW50QWN0aW9uc0FnZW50SWQgJiYgKFxuICAgICAgICAgICAgPENoYXRBSUNyZWF0ZUFnZW50QWN0aW9uc1xuICAgICAgICAgICAgICBhZ2VudElkPXtjcmVhdGVBZ2VudEFjdGlvbnNBZ2VudElkfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17cHJvcHMuc3VnZ2VzdGlvbnNEaXNhYmxlZH1cbiAgICAgICAgICAgICAgaGlkZGVuPXshIXByb3BzLmlzU3RyZWFtaW5nIHx8ICFwcm9wcy5pc0xhc3RNZXNzYWdlIHx8ICEhcHJvcHMuc3VnZ2VzdGlvbnNEaXNhYmxlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgIDwvPlxuICAgIClcbiAgfVxuKVxuXG5jb25zdCBNZXNzYWdlSXRlbSA9IG1lbW8oKHByb3BzOiBNZXNzYWdlSXRlbVByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBpZCxcbiAgICB1c2VyLFxuICAgIG1lc3NhZ2UsXG4gICAgaXNTdHJlYW1pbmcsXG4gICAgaXNFcnJvcixcbiAgICBhdXRoVXNlcixcbiAgICBvcHRpb25zLFxuICAgIGlzQ2hhbmdlUHJvamVjdCxcbiAgICBoYW5kbGVTZWxlY3RPcHRpb24sXG4gICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrLFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgZGlzYWJsZUZlZWRiYWNrLFxuICAgIHJvbGUsXG4gICAgc291cmNlcyxcbiAgICBhdHRhY2htZW50cyxcbiAgICBhcHByb3ZhbCxcbiAgICBhcHByb3ZhbFN0YXR1cyxcbiAgICBzdWdnZXN0aW9ucyxcbiAgICBjcmVhdGVBZ2VudEZvbGxvd1VwLFxuICAgIGhhc1NlbGVjdGVkU3VnZ2VzdGlvbixcbiAgICBpc0xhc3RNZXNzYWdlLFxuICB9ID0gcHJvcHNcblxuICBjb25zdCBbcHJldmlld0F0dGFjaG1lbnQsIHNldFByZXZpZXdBdHRhY2htZW50XSA9IHVzZVN0YXRlPEF0dGFjaG1lbnRGaWxlIHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNDdXJyZW50VXNlciA9IHJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5VU0VSIHx8IHVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKClcbiAgY29uc3QgaXNBc3Npc3RhbnQgPSByb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5UIHx8IHVzZXIuaWQgPT09ICdhc3Npc3RhbnQnXG4gIC8vIE1pZW50cmFzIGVsIGFnZW50ZSBcInBpZW5zYVwiIChzdHJlYW1pbmcgc2luIHRleHRvIGHDum4pIG9jdWx0YW1vcyBlbCBoZWFkZXIuXG4gIC8vIEVuIGN1YW50byBlbXBpZXphIGEgZXNjcmliaXIsIGVsIGF2YXRhciB5IGVsIG5vbWJyZSB2dWVsdmVuIGEgbW9zdHJhcnNlLlxuICBjb25zdCBzdHJlYW1pbmdUZXh0ID0gdXNlU3RyZWFtaW5nTWVzc2FnZShpc1N0cmVhbWluZyA/IGlkIDogbnVsbClcbiAgY29uc3QgaXNUaGlua2luZyA9ICEhaXNTdHJlYW1pbmcgJiYgIXN0cmVhbWluZ1RleHRcbiAgY29uc3QgbWVzc2FnZUF0dGFjaG1lbnRzID1cbiAgICBhdHRhY2htZW50cyAmJiBhdHRhY2htZW50cy5sZW5ndGggPiAwXG4gICAgICA/IGF0dGFjaG1lbnRzXG4gICAgICA6ICFpc0Fzc2lzdGFudCAmJiBBcnJheS5pc0FycmF5KHNvdXJjZXMpXG4gICAgICAgID8gKHNvdXJjZXMgYXMgQXR0YWNobWVudEZpbGVbXSlcbiAgICAgICAgOiBbXVxuXG4gIGNvbnN0IGhhbmRsZUF0dGFjaG1lbnRDbGljayA9IChhdHRhY2htZW50OiBBdHRhY2htZW50RmlsZSkgPT4ge1xuICAgIC8vIFBlcm1pdGlyIHByZXZpc3VhbGl6YWNpw7NuIHNpIHRpZW5lIGFyY2hpdm8gbG9jYWwgbyBVUkxzIGRlbCBiYWNrZW5kXG4gICAgaWYgKFxuICAgICAgYXR0YWNobWVudC5maWxlIGluc3RhbmNlb2YgRmlsZSB8fFxuICAgICAgYXR0YWNobWVudC5vcmlnaW5hbEZpbGUgaW5zdGFuY2VvZiBGaWxlIHx8XG4gICAgICBhdHRhY2htZW50LnVybF90aHVtYm5haWwgfHxcbiAgICAgIGF0dGFjaG1lbnQudXJsX29yaWdpbmFsIHx8XG4gICAgICBhdHRhY2htZW50LnVybF9maWxlXG4gICAgKSB7XG4gICAgICBzZXRQcmV2aWV3QXR0YWNobWVudChhdHRhY2htZW50KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlUHJldmlldyA9ICgpID0+IHtcbiAgICBzZXRQcmV2aWV3QXR0YWNobWVudChudWxsKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQXR0YWNobWVudERvd25sb2FkID0gYXN5bmMgKGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnRGaWxlKSA9PiB7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gYXR0YWNobWVudC5uYW1lLmluY2x1ZGVzKCcuJykgPyAnJyA6IGAuJHthdHRhY2htZW50LnR5cGV9YFxuICAgIGNvbnN0IGZpbGVOYW1lID0gYCR7YXR0YWNobWVudC5uYW1lfSR7ZXh0ZW5zaW9ufWBcbiAgICBjb25zdCBmaWxlVXJsID0gYXR0YWNobWVudC51cmxfb3JpZ2luYWwgfHwgYXR0YWNobWVudC51cmxfZmlsZSB8fCBhdHRhY2htZW50LnVybF90aHVtYm5haWxcblxuICAgIHRyeSB7XG4gICAgICBsZXQgYmxvYlVybDogc3RyaW5nIHwgbnVsbCA9IG51bGxcblxuICAgICAgaWYgKGZpbGVVcmwpIHtcbiAgICAgICAgY29uc3QgZG93bmxvYWRlZEZpbGUgPSBhd2FpdCBkb3dubG9hZEZpbGVGcm9tVXJsKGZpbGVVcmwsIGZpbGVOYW1lLCBhdHRhY2htZW50LnR5cGUpXG4gICAgICAgIGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGRvd25sb2FkZWRGaWxlKVxuICAgICAgfSBlbHNlIGlmIChhdHRhY2htZW50LmZpbGUgaW5zdGFuY2VvZiBGaWxlKSB7XG4gICAgICAgIGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGF0dGFjaG1lbnQuZmlsZSlcbiAgICAgIH1cblxuICAgICAgaWYgKCFibG9iVXJsKSByZXR1cm5cblxuICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKVxuICAgICAgbGluay5ocmVmID0gYmxvYlVybFxuICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lXG4gICAgICBsaW5rLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluaylcbiAgICAgIGxpbmsuY2xpY2soKVxuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKVxuICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGJsb2JVcmwpXG4gICAgICB9LCAxMDApXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBkb3dubG9hZCBhdHRhY2htZW50JywgZXJyb3IpXG4gICAgfVxuICB9XG5cbiAgaWYgKGlzQ2hhbmdlUHJvamVjdCAmJiBvcHRpb25zKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxNZXNzYWdlV3JhcHBlciBrZXk9e2lkfSBpc0N1cnJlbnRVc2VyPXtpc0N1cnJlbnRVc2VyfSBkYXRhLW1lc3NhZ2UtaWQ9e2lkfSBoYXNGZWVkYmFjaz17ZmFsc2V9PlxuICAgICAgICA8U0NNZXNzYWdlSXRlbVdyYXBwZXIgJGlzQXNzaXN0YW50PXtpc0Fzc2lzdGFudH0+XG4gICAgICAgICAge2lzQXNzaXN0YW50ICYmICFpc1RoaW5raW5nICYmIDxBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIC8+fVxuICAgICAgICAgIDxNZXNzYWdlQ29udGVudFdyYXBwZXJcbiAgICAgICAgICAgIGlzQ2hhbmdlUHJvamVjdD17aXNDaGFuZ2VQcm9qZWN0fVxuICAgICAgICAgICAgbWVzc2FnZT17bWVzc2FnZX1cbiAgICAgICAgICAgIGlzQ3VycmVudFVzZXI9e2lzQ3VycmVudFVzZXJ9XG4gICAgICAgICAgICBpc0Vycm9yPXtpc0Vycm9yfVxuICAgICAgICAgICAgbWVzc2FnZUV4dHJhQ29udGVudD17PE1lc3NhZ2VPcHRpb25zIG9wdGlvbnM9e29wdGlvbnMgYXMgYW55fSBoYW5kbGVTZWxlY3RPcHRpb249e2hhbmRsZVNlbGVjdE9wdGlvbn0gLz59XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TQ01lc3NhZ2VJdGVtV3JhcHBlcj5cbiAgICAgIDwvTWVzc2FnZVdyYXBwZXI+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRmVlZGJhY2tDbGljayA9IChmZWVkYmFjazogRmVlZGJhY2spID0+IHtcbiAgICBjb25zdCBzZXNzaW9uSWQgPSBpZFxuICAgICAgLnNwbGl0KCctJylcbiAgICAgIC5maWx0ZXIocXVlc3Rpb25JZCA9PiBxdWVzdGlvbklkICE9PSAnYW5zd2VyJylcbiAgICAgIC5qb2luKCctJylcbiAgICBoYW5kbGVGZWVkYmFjaz8uKGZlZWRiYWNrLCBzZXNzaW9uSWQpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ01lc3NhZ2VJdGVtV3JhcHBlciAkaXNBc3Npc3RhbnQ9e2lzQXNzaXN0YW50fT5cbiAgICAgIHtpc0Fzc2lzdGFudCAmJiAhaXNUaGlua2luZyAmJiA8QXNzaXN0YW50TWVzc2FnZUhlYWRlciAvPn1cbiAgICAgIDxTQ01lc3NhZ2VJdGVtSW5uZXI+XG4gICAgICAgIHshIW1lc3NhZ2VBdHRhY2htZW50cy5sZW5ndGggJiYgKFxuICAgICAgICAgIDxTQ0F0dGFjaG1lbnRzUm93ICRpc0Fzc2lzdGFudD17aXNBc3Npc3RhbnR9PlxuICAgICAgICAgICAge21lc3NhZ2VBdHRhY2htZW50cy5tYXAoKGF0dGFjaG1lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIC8vIERldGVjdGFyIHNpIGVzIHVuIGFyY2hpdm8gZGUgYXVkaW9cbiAgICAgICAgICAgICAgY29uc3QgYXR0YWNobWVudFR5cGUgPSBhdHRhY2htZW50Py50eXBlPy50b0xvd2VyQ2FzZSgpIHx8ICcnXG4gICAgICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnROYW1lID0gYXR0YWNobWVudD8ubmFtZT8udG9Mb3dlckNhc2UoKSB8fCAnJ1xuICAgICAgICAgICAgICBjb25zdCBpc0F1ZGlvRmlsZSA9XG4gICAgICAgICAgICAgICAgYXR0YWNobWVudFR5cGUuc3RhcnRzV2l0aCgnYXVkaW8vJykgfHxcbiAgICAgICAgICAgICAgICBbJ2ZsYWMnLCAnbTRhJywgJ21wMycsICdtcDQnLCAnb2dhJywgJ29nZycsICd3YXYnLCAnd2VibSddLmluY2x1ZGVzKGF0dGFjaG1lbnRUeXBlKSB8fFxuICAgICAgICAgICAgICAgIFsnLmZsYWMnLCAnLm00YScsICcubXAzJywgJy5tcDQnLCAnLm9nYScsICcub2dnJywgJy53YXYnLCAnLndlYm0nXS5zb21lKGV4dCA9PlxuICAgICAgICAgICAgICAgICAgYXR0YWNobWVudE5hbWUuZW5kc1dpdGgoZXh0KVxuICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICBpZiAoaXNBdWRpb0ZpbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPEF0dGFjaG1lbnRDYXJkQXVkaW8ga2V5PXtgJHthdHRhY2htZW50LmlkfS0ke2F0dGFjaG1lbnQubmFtZX1gfSBhdHRhY2htZW50PXthdHRhY2htZW50fSAvPlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8QXR0YWNobWVudENhcmRcbiAgICAgICAgICAgICAgICAgIGtleT17YCR7YXR0YWNobWVudC5pZH0tJHthdHRhY2htZW50Lm5hbWV9YH1cbiAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQ9e2F0dGFjaG1lbnR9XG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbkluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgIG9uRG93bmxvYWQ9eygpID0+IGhhbmRsZUF0dGFjaG1lbnREb3dubG9hZChhdHRhY2htZW50KX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUF0dGFjaG1lbnRDbGljayhhdHRhY2htZW50KX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L1NDQXR0YWNobWVudHNSb3c+XG4gICAgICAgICl9XG4gICAgICAgIHsoISFtZXNzYWdlIHx8IGlzU3RyZWFtaW5nKSAmJiAhKGlzQXNzaXN0YW50ICYmICEhbWVzc2FnZUF0dGFjaG1lbnRzLmxlbmd0aCkgJiYgKFxuICAgICAgICAgIDxTdHJlYW1pbmdNZXNzYWdlQm9keVxuICAgICAgICAgICAgbWVzc2FnZT17bWVzc2FnZSA/PyAnJ31cbiAgICAgICAgICAgIGlzU3RyZWFtaW5nPXshIWlzU3RyZWFtaW5nfVxuICAgICAgICAgICAgaXNDdXJyZW50VXNlcj17aXNDdXJyZW50VXNlcn1cbiAgICAgICAgICAgIGlzQXNzaXN0YW50PXtpc0Fzc2lzdGFudH1cbiAgICAgICAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ9e3Byb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWR9XG4gICAgICAgICAgICBhcHByb3ZhbD17YXBwcm92YWx9XG4gICAgICAgICAgICBpc0Vycm9yPXtpc0Vycm9yfVxuICAgICAgICAgICAgc291cmNlcz17c291cmNlc31cbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zPXtzdWdnZXN0aW9uc31cbiAgICAgICAgICAgIGNyZWF0ZUFnZW50Rm9sbG93VXA9e2NyZWF0ZUFnZW50Rm9sbG93VXB9XG4gICAgICAgICAgICBoYW5kbGVGZWVkYmFja0NsaWNrPXtoYW5kbGVGZWVkYmFja0NsaWNrfVxuICAgICAgICAgICAgZGlzYWJsZUZlZWRiYWNrPXtkaXNhYmxlRmVlZGJhY2sgPz8gbnVsbH1cbiAgICAgICAgICAgIGhhbmRsZVN1Z2dlc3Rpb25DbGljaz17aGFuZGxlU3VnZ2VzdGlvbkNsaWNrfVxuICAgICAgICAgICAgc3VnZ2VzdGlvbnNEaXNhYmxlZD17ISFwcm9wcy5pc1N0cmVhbWluZyB8fCAhIWhhc1NlbGVjdGVkU3VnZ2VzdGlvbn1cbiAgICAgICAgICAgIG1lc3NhZ2VJZD17aWR9XG4gICAgICAgICAgICBpc0xhc3RNZXNzYWdlPXtpc0xhc3RNZXNzYWdlfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHthcHByb3ZhbCAmJiBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnMgJiYgKFxuICAgICAgICAgIDxTQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbj5cbiAgICAgICAgICAgIDxBcHByb3ZhbEJveFxuICAgICAgICAgICAgICBhY3Rpb25zPXthcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnN9XG4gICAgICAgICAgICAgIHN0YXR1cz17YXBwcm92YWxTdGF0dXN9XG4gICAgICAgICAgICAgIG9uQXBwcm92ZT17dGhyZWFkSWRzID0+IGhhbmRsZUFwcHJvdmFsRGVjaXNpb24odGhyZWFkSWRzLCAnYXBwcm92ZScpfVxuICAgICAgICAgICAgICBvblJlamVjdD17dGhyZWFkSWRzID0+IGhhbmRsZUFwcHJvdmFsRGVjaXNpb24odGhyZWFkSWRzLCAncmVqZWN0Jyl9XG4gICAgICAgICAgICAgIGlzUHJvamVjdERlbGV0ZWQ9e3Byb3BzLnByb2plY3RNZXRhZGF0YT8uaXNfZGVsZXRlZCA9PT0gdHJ1ZX1cbiAgICAgICAgICAgICAgaXNFeHBhbmRlZD17cHJvcHMuZXhwYW5kZWR9XG4gICAgICAgICAgICAgIGhpdGxJbnN0YW5jZUlkPXthcHByb3ZhbC5vcmlnaW5hbF90aHJlYWRfaWR9XG4gICAgICAgICAgICAgIHdhcm5pbmdNZXNzYWdlPXthcHByb3ZhbC53YXJuaW5nX21lc3NhZ2V9XG4gICAgICAgICAgICAgIG1hbnVhbEFwcHJvdmFsRGV0ZWN0ZWQ9e2FwcHJvdmFsLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbj5cbiAgICAgICAgKX1cbiAgICAgIDwvU0NNZXNzYWdlSXRlbUlubmVyPlxuICAgICAgPEF0dGFjaG1lbnRQcmV2aWV3TW9kYWxcbiAgICAgICAgaXNPcGVuPXshIXByZXZpZXdBdHRhY2htZW50fVxuICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZVByZXZpZXd9XG4gICAgICAgIGF0dGFjaG1lbnQ9e3ByZXZpZXdBdHRhY2htZW50fVxuICAgICAgLz5cbiAgICA8L1NDTWVzc2FnZUl0ZW1XcmFwcGVyPlxuICApXG59KVxuXG5jb25zdCBDaGF0QUlNZXNzYWdlc0lubmVyID0gKHtcbiAgdXNlckluaXRpYWxNZXNzYWdlLFxuICBpbml0aWFsQ2hhdElkLFxuICBvbkVycm9yLFxuICBvblNlbmRNZXNzYWdlUmVhZHksXG4gIG9uU2Nyb2xsVG9Cb3R0b20sXG4gIGF0dGFjaG1lbnRzLFxuICBhZ2VudHMsXG4gIGV4cGFuZGVkLFxufTogQ2hhdEFJTWVzc2FnZXNQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCB7IGlzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmUsIGFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgZXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IGF1dGhVc2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IG1lc3NhZ2VzUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBjaGF0SW5pdGlhbGl6ZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGlzTG9hZGluZ01vcmVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHVzZXJTY3JvbGxpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNjcm9sbFRocmVzaG9sZFJlZiA9IHVzZVJlZigzOSlcbiAgY29uc3QgbGFzdFNjcm9sbFRvcFJlZiA9IHVzZVJlZigwKVxuICBjb25zdCBzaG93U2Nyb2xsVG9Cb3R0b21SZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNjcm9sbFJhZlJlZiA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKVxuICBjb25zdCBbc2hvd1Njcm9sbFRvQm90dG9tLCBzZXRTaG93U2Nyb2xsVG9Cb3R0b21dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzLCBzZXRTZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+Pih7fSlcblxuICBjb25zdCB7XG4gICAgbWVzc2FnZXMsXG4gICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgIGlzTG9hZGluZ01vcmVNZXNzYWdlcyxcbiAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIHN0cmVhbUFjdGl2aXR5LFxuICAgIGFjdGl2ZUxvYWRpbmdzLFxuICAgIHNlbmRNZXNzYWdlLFxuICAgIGNoYW5nZVByb2plY3QsXG4gICAgaGFuZGxlRmVlZGJhY2ssXG4gICAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbixcbiAgICBpbml0aWFsaXplQ2hhdCxcbiAgICBoYW5kbGVTY3JvbGwsXG4gICAgc3RvcEdlbmVyYXRpb24sXG4gIH0gPSB1c2VDaGF0TWFuYWdlcih7XG4gICAgY2hhdElkOiBpbml0aWFsQ2hhdElkIHx8IHVuZGVmaW5lZCxcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gICAgb25FcnJvcixcbiAgICBhdHRhY2htZW50cyxcbiAgICBhZ2VudHMsXG4gIH0pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0T3B0aW9uID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wdGlvbjogUHJvamVjdCkgPT4ge1xuICAgICAgY2hhbmdlUHJvamVjdChvcHRpb24pXG4gICAgfSxcbiAgICBbY2hhbmdlUHJvamVjdF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN1Z2dlc3Rpb25DbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChtZXNzYWdlSWQ6IHN0cmluZywgc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoIXN1Z2dlc3Rpb24/LnRyaW0oKSkgcmV0dXJuXG4gICAgICBpZiAoc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkc1ttZXNzYWdlSWRdKSByZXR1cm5cbiAgICAgIGNvbnN0IGlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCA9IGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnICYmIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KGFnZW50Py5uYW1lIHx8ICcnKVxuICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdFN1Z2dlc3RlZEFuc3dlciwge1xuICAgICAgICBhZ2VudF90eXBlOiBpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQgPyAnbWFya2V0cGxhY2UnIDogYWdlbnQ/LnR5cGUsXG4gICAgICB9KVxuICAgICAgc2V0U2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcyhwcmV2ID0+ICh7IC4uLnByZXYsIFttZXNzYWdlSWRdOiB0cnVlIH0pKVxuICAgICAgc2VuZE1lc3NhZ2Uoc3VnZ2VzdGlvbilcbiAgICB9LFxuICAgIFtzZW5kTWVzc2FnZSwgc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcywgZXZlbnQsIGFnZW50Py5lbnRpdHksIGFnZW50Py5uYW1lLCBhZ2VudD8udHlwZV1cbiAgKVxuXG4gIC8qKlxuICAgKiBBY3R1YWxpemEgZWwgZXN0YWRvIGRlbCBib3TDs24gXCJzY3JvbGwgdG8gYm90dG9tXCIgY29tcGFyYW5kbyBsYSBwb3NpY2nDs25cbiAgICogYWN0dWFsIGRlbCBzY3JvbGwgY29uIGVsIGZvbmRvLiBVc2EgdW4gcmVmIHBhcmEgZXZpdGFyIGBzZXRTdGF0ZWAgY3VhbmRvXG4gICAqIGVsIHZhbG9yIG5vIGNhbWJpYS5cbiAgICovXG4gIGNvbnN0IHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgZWwgPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgaWYgKCFlbCkgcmV0dXJuXG4gICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBlbFxuICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgIGlmIChzaG93U2Nyb2xsVG9Cb3R0b21SZWYuY3VycmVudCAhPT0gc2hvdWxkU2hvdykge1xuICAgICAgc2hvd1Njcm9sbFRvQm90dG9tUmVmLmN1cnJlbnQgPSBzaG91bGRTaG93XG4gICAgICBzZXRTaG93U2Nyb2xsVG9Cb3R0b20oc2hvdWxkU2hvdylcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8qKlxuICAgKiBTY3JvbGwgaW5tZWRpYXRvIGFsIGZvbmRvIChkZW50cm8gZGUgckFGIHBhcmEgY29vcmRpbmFyIGNvbiBlbCBwYWludClcbiAgICogeSBhY3R1YWxpemEgbGEgdmlzaWJpbGlkYWQgZGVsIGJvdMOzbi4gUmVzcGV0YSBgc2tpcElmVXNlclNjcm9sbGluZ2AgcGFyYVxuICAgKiBubyBzb2JyZXNjcmliaXIgZWwgc2Nyb2xsIG1hbnVhbCBkZWwgdXN1YXJpbyBkdXJhbnRlIGVsIHN0cmVhbWluZy5cbiAgICovXG4gIGNvbnN0IHNjcm9sbFRvQm90dG9tUmFmID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wdHM6IHsgc2tpcElmVXNlclNjcm9sbGluZz86IGJvb2xlYW47IGRlbGF5TXM/OiBudW1iZXIgfSA9IHt9KSA9PiB7XG4gICAgICBjb25zdCB7IHNraXBJZlVzZXJTY3JvbGxpbmcgPSBmYWxzZSwgZGVsYXlNcyA9IDAgfSA9IG9wdHNcbiAgICAgIGNvbnN0IHJ1biA9ICgpID0+IHtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBlbCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICAgICAgICBpZiAoIWVsKSByZXR1cm5cbiAgICAgICAgICBpZiAoc2tpcElmVXNlclNjcm9sbGluZyAmJiB1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICAgIGVsLnNjcm9sbFRvcCA9IGVsLnNjcm9sbEhlaWdodFxuICAgICAgICAgIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkoKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgaWYgKGRlbGF5TXMgPiAwKSBzZXRUaW1lb3V0KHJ1biwgZGVsYXlNcylcbiAgICAgIGVsc2UgcnVuKClcbiAgICB9LFxuICAgIFt1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5XVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ2xpY2tTY3JvbGxUb0JvdHRvbSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIW1lc3NhZ2VzUmVmLmN1cnJlbnQpIHJldHVyblxuICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsVG8oe1xuICAgICAgdG9wOiBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbEhlaWdodCxcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICB9KVxuICAgIC8vIERhciB0aWVtcG8gYWwgc21vb3RoLXNjcm9sbCBhbnRlcyBkZSByZWNhbGN1bGFyIGxhIHZpc2liaWxpZGFkIGRlbCBib3TDs24uXG4gICAgc2V0VGltZW91dCh1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5LCA1MDApXG4gIH0sIFt1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5XSlcblxuICBjb25zdCBoYW5kbGVTY3JvbGxUb0JvdHRvbSA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBSZWFjdC5VSUV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gZS5jdXJyZW50VGFyZ2V0XG5cbiAgICAgIGlmIChzY3JvbGxSYWZSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShzY3JvbGxSYWZSZWYuY3VycmVudClcbiAgICAgIH1cblxuICAgICAgc2Nyb2xsUmFmUmVmLmN1cnJlbnQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBzY3JvbGxSYWZSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBjb250YWluZXJcblxuICAgICAgICBjb25zdCBpc1Njcm9sbGluZ1VwID0gc2Nyb2xsVG9wIDwgbGFzdFNjcm9sbFRvcFJlZi5jdXJyZW50XG5cbiAgICAgICAgaWYgKGlzU2Nyb2xsaW5nVXApIHtcbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDE1XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc05lYXJCb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHQgPCBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudFxuXG4gICAgICAgIGlmIChpc05lYXJCb3R0b20pIHtcbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDM5XG4gICAgICAgIH1cblxuICAgICAgICB1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQgPSAhaXNOZWFyQm90dG9tXG4gICAgICAgIGxhc3RTY3JvbGxUb3BSZWYuY3VycmVudCA9IHNjcm9sbFRvcFxuXG4gICAgICAgIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkoKVxuXG4gICAgICAgIGlmIChpc05lYXJCb3R0b20gJiYgb25TY3JvbGxUb0JvdHRvbSkge1xuICAgICAgICAgIG9uU2Nyb2xsVG9Cb3R0b20oKVxuICAgICAgICB9XG5cbiAgICAgICAgaGFuZGxlU2Nyb2xsKGNvbnRhaW5lcilcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbb25TY3JvbGxUb0JvdHRvbSwgaGFuZGxlU2Nyb2xsLCB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5XVxuICApXG5cbiAgLy8gcmVmcyB0byBzdGFiaWxpemUgZnVuY3Rpb25zIGFuZCBhdm9pZCB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzXG4gIGNvbnN0IHNlbmRNZXNzYWdlUmVmID0gdXNlUmVmKHNlbmRNZXNzYWdlKVxuICBjb25zdCBzdG9wR2VuZXJhdGlvblJlZiA9IHVzZVJlZihzdG9wR2VuZXJhdGlvbilcbiAgY29uc3Qgb25TZW5kTWVzc2FnZVJlYWR5UmVmID0gdXNlUmVmKG9uU2VuZE1lc3NhZ2VSZWFkeSlcblxuICAvLyB1cGRhdGUgcmVmcyB3aGVuIGZ1bmN0aW9ucyBjaGFuZ2VcbiAgc2VuZE1lc3NhZ2VSZWYuY3VycmVudCA9IHNlbmRNZXNzYWdlXG4gIHN0b3BHZW5lcmF0aW9uUmVmLmN1cnJlbnQgPSBzdG9wR2VuZXJhdGlvblxuICBvblNlbmRNZXNzYWdlUmVhZHlSZWYuY3VycmVudCA9IG9uU2VuZE1lc3NhZ2VSZWFkeVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG9uU2VuZE1lc3NhZ2VSZWFkeVJlZi5jdXJyZW50KSB7XG4gICAgICBvblNlbmRNZXNzYWdlUmVhZHlSZWYuY3VycmVudChzZW5kTWVzc2FnZVJlZi5jdXJyZW50LCBzdG9wR2VuZXJhdGlvblJlZi5jdXJyZW50LCB3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZylcbiAgICB9XG4gIH0sIFt3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZ10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQgPSBpc0xvYWRpbmdNb3JlTWVzc2FnZXNcbiAgfSwgW2lzTG9hZGluZ01vcmVNZXNzYWdlc10pXG5cbiAgLy8gQ3VhbmRvIGVsIGFnZW50ZSBlbXBpZXphIGEgcmVzcG9uZGVyLCByZXNldGVhciBlbCBmbGFnIHkgZWwgdW1icmFsIHBhcmEgYWN0aXZhciBlbCBhdXRvLXNjcm9sbFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh3YWl0aW5nUmVzcG9uc2UpIHtcbiAgICAgIHVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDM5XG4gICAgfVxuICB9LCBbd2FpdGluZ1Jlc3BvbnNlXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghY2hhdEluaXRpYWxpemVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNoYXRJbml0aWFsaXplZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgaW5pdGlhbGl6ZUNoYXQoKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gQXV0b3Njcm9sbCBtaWVudHJhcyBlbCB0ZXh0byBkZWwgc3RyZWFtIGNyZWNlLiBFbCB0ZXh0byBzZSBwaW50YSBhbCByaXRtb1xuICAvLyBkZSBgdXNlU21vb3RoU3RyZWFtVGV4dGAgKH42MGZwcyksIG5vIGFsIHJpdG1vIGRlIGxsZWdhZGEgZGUgdG9rZW5zIGRlbFxuICAvLyBiYWNrZW5kOiBwb3IgZXNvIGFjw6EgdXNhbW9zIHVuIGxvb3AgZGUgckFGIHF1ZSBjb21wYXJhIGBzY3JvbGxIZWlnaHRgXG4gIC8vIGNvbnRyYSBlbCDDumx0aW1vIHZhbG9yIG9ic2VydmFkbyB5IGFqdXN0YSBzb2xvIGN1YW5kbyBjYW1iaWEuIEFzw60gZWxcbiAgLy8gc2Nyb2xsIHF1ZWRhIHBlcmZlY3RhbWVudGUgc2luY3Jvbml6YWRvIGNvbiBsYSBhbmltYWNpw7NuIGRlbCB0ZXh0byBzaW5cbiAgLy8gZGVwZW5kZXIgZGUgbGEgY2FkZW5jaWEgZGVsIHN0cmVhbWluZ1N0b3JlLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghd2FpdGluZ1Jlc3BvbnNlICYmICFpc1dyaXRpbmcpIHJldHVybiB1bmRlZmluZWRcbiAgICBpZiAoIW1lc3NhZ2VzUmVmLmN1cnJlbnQpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGxldCByYWZJZDogbnVtYmVyIHwgbnVsbCA9IG51bGxcbiAgICBsZXQgbGFzdEhlaWdodCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0XG5cbiAgICBjb25zdCB0aWNrID0gKCkgPT4ge1xuICAgICAgY29uc3QgZWwgPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgICBpZiAoIWVsKSB7XG4gICAgICAgIHJhZklkID0gbnVsbFxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnRIZWlnaHQgPSBlbC5zY3JvbGxIZWlnaHRcbiAgICAgIGlmIChjdXJyZW50SGVpZ2h0ICE9PSBsYXN0SGVpZ2h0KSB7XG4gICAgICAgIGxhc3RIZWlnaHQgPSBjdXJyZW50SGVpZ2h0XG4gICAgICAgIGlmICghdXNlclNjcm9sbGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgZWwuc2Nyb2xsVG9wID0gY3VycmVudEhlaWdodFxuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkoKVxuICAgICAgfVxuICAgICAgcmFmSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljaylcbiAgICB9XG5cbiAgICByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aWNrKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAocmFmSWQgIT0gbnVsbCkgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpXG4gICAgfVxuICB9LCBbd2FpdGluZ1Jlc3BvbnNlLCBpc1dyaXRpbmcsIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHldKVxuXG4gIC8vIEFsIGNvbWVuemFyIGEgZXNwZXJhciBsYSByZXNwdWVzdGEgZGVsIGJhY2tlbmQsIHNjcm9sbCBpbmljaWFsIGFsIGZvbmRvLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh3YWl0aW5nUmVzcG9uc2UgJiYgbWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgc2Nyb2xsVG9Cb3R0b21SYWYoeyBza2lwSWZVc2VyU2Nyb2xsaW5nOiB0cnVlIH0pXG4gICAgfVxuICB9LCBbd2FpdGluZ1Jlc3BvbnNlLCBzY3JvbGxUb0JvdHRvbVJhZl0pXG5cbiAgLy8gU2Nyb2xsIGN1YW5kbyBjYW1iaWFuIGxvcyBtZW5zYWplczogZGlzdGluZ3VlIFwibnVldm8gbWVuc2FqZVwiIChhZ3JlZ2FkbylcbiAgLy8gZGUgXCJyZWVtcGxhem9cIiAobWlzbW8gaWQvbGVuZ3RoLCBlai4gZmVlZGJhY2sgbyBhcHByb3ZhbFN0YXR1cykuIEVuXG4gIC8vIHJlZW1wbGF6b3Mgc29sbyBzZSByZWNhbGN1bGEgbGEgdmlzaWJpbGlkYWQgZGVsIGJvdMOzbiBzaW4gZm9yemFyIHNjcm9sbC5cbiAgY29uc3QgbGFzdE1lc3NhZ2VJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBsYXN0TWVzc2FnZXNMZW5ndGhSZWYgPSB1c2VSZWY8bnVtYmVyPigwKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbWVzc2FnZXNSZWYuY3VycmVudCB8fCBsb2FkaW5nTWVzc2FnZXMgfHwgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzIHx8IGlzTG9hZGluZ01vcmVSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgbGFzdE1lc3NhZ2UgPSBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXVxuICAgIGNvbnN0IGxhc3RJZCA9IGxhc3RNZXNzYWdlPy5pZCA/PyBudWxsXG4gICAgY29uc3QgcHJldklkID0gbGFzdE1lc3NhZ2VJZFJlZi5jdXJyZW50XG4gICAgY29uc3QgcHJldkxlbiA9IGxhc3RNZXNzYWdlc0xlbmd0aFJlZi5jdXJyZW50XG4gICAgbGFzdE1lc3NhZ2VJZFJlZi5jdXJyZW50ID0gbGFzdElkXG4gICAgbGFzdE1lc3NhZ2VzTGVuZ3RoUmVmLmN1cnJlbnQgPSBtZXNzYWdlcy5sZW5ndGhcblxuICAgIGNvbnN0IGlzTmV3TWVzc2FnZSA9IGxhc3RJZCAhPT0gcHJldklkIHx8IG1lc3NhZ2VzLmxlbmd0aCAhPT0gcHJldkxlblxuICAgIGlmICghaXNOZXdNZXNzYWdlKSB7XG4gICAgICB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5KClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICBjb25zdCBpc0F0Qm90dG9tID0gY29udGFpbmVyLnNjcm9sbEhlaWdodCAtIGNvbnRhaW5lci5zY3JvbGxUb3AgPD0gY29udGFpbmVyLmNsaWVudEhlaWdodCArIDEwMFxuICAgIGNvbnN0IGhhc0luaXRpYWxNZXNzYWdlID0gbWVzc2FnZXMuc29tZShtc2cgPT4gbXNnLmlkID09PSAndXNlci1pbml0aWFsLW1lc3NhZ2UnKVxuICAgIGNvbnN0IGlzQXBwcm92YWwgPSAhIWxhc3RNZXNzYWdlICYmIChsYXN0TWVzc2FnZS5pZC5zdGFydHNXaXRoKCdhcHByb3ZhbC0nKSB8fCAhIWxhc3RNZXNzYWdlLmFwcHJvdmFsKVxuICAgIGNvbnN0IGlzQW5zd2VyT3JRdWVzdGlvbiA9XG4gICAgICAhIWxhc3RNZXNzYWdlICYmIChsYXN0TWVzc2FnZS5pZC5zdGFydHNXaXRoKCdhbnN3ZXItJykgfHwgbGFzdE1lc3NhZ2UuaWQuc3RhcnRzV2l0aCgncXVlc3Rpb24tJykpXG5cbiAgICAvLyBBcHByb3ZhbDogc2VjdWVuY2lhIGRlIHNjcm9sbHMgY29uIGRlbGF5IHBvcnF1ZSBlbCBBcHByb3ZhbEJveCBuZWNlc2l0YVxuICAgIC8vIHVuIHRpY2sgcGFyYSBtZWRpcnNlLiBTY3JvbGxlYSBhdW5xdWUgZWwgdXN1YXJpbyBubyBlc3TDqSBhbCBmb25kbyBzaSBub1xuICAgIC8vIGVzdMOhIHNjcm9sbGVhbmRvIG1hbnVhbG1lbnRlLlxuICAgIGlmIChpc0FwcHJvdmFsICYmIChpc0F0Qm90dG9tIHx8ICF1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQpKSB7XG4gICAgICBzY3JvbGxUb0JvdHRvbVJhZigpXG4gICAgICBzY3JvbGxUb0JvdHRvbVJhZigpXG4gICAgICBzY3JvbGxUb0JvdHRvbVJhZih7IGRlbGF5TXM6IDEwMCB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gTnVldm9zIGFuc3dlci9xdWVzdGlvbjogc2Nyb2xsIHNpIGVsIHVzdWFyaW8geWEgZXN0YWJhIGFsIGZvbmRvLlxuICAgIGlmIChpc0Fuc3dlck9yUXVlc3Rpb24gJiYgaXNBdEJvdHRvbSkge1xuICAgICAgc2Nyb2xsVG9Cb3R0b21SYWYoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gQ2FzbyBib3JkZTogY2FtYmlvcyBkZSBtZW5zYWplcyBzaW4gc2VyIG51ZXZvIGFuc3dlci91c2VyL2FwcHJvdmFsXG4gICAgLy8gcGVybyBzw60gdW4gbWVuc2FqZSBudWV2byAobm8gZWwgXCJ1c2VyLWluaXRpYWwtbWVzc2FnZVwiKS4gU2Nyb2xsZWEuXG4gICAgaWYgKCFpc0Fuc3dlck9yUXVlc3Rpb24gJiYgIWlzQXBwcm92YWwgJiYgIWhhc0luaXRpYWxNZXNzYWdlICYmIG1lc3NhZ2VzLmxlbmd0aCA+IHByZXZMZW4pIHtcbiAgICAgIHNjcm9sbFRvQm90dG9tUmFmKClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkoKVxuICB9LCBbbWVzc2FnZXMsIGxvYWRpbmdNZXNzYWdlcywgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLCBzY3JvbGxUb0JvdHRvbVJhZiwgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eV0pXG5cbiAgLy8gRXN0YWRvIGluaWNpYWwgZGVsIGJvdMOzbiBzY3JvbGwtdG8tYm90dG9tIGFsIHRlcm1pbmFyIGxvYWRpbmdNZXNzYWdlcy5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWxvYWRpbmdNZXNzYWdlcykge1xuICAgICAgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eSgpXG4gICAgfVxuICB9LCBbbG9hZGluZ01lc3NhZ2VzLCBtZXNzYWdlcy5sZW5ndGgsIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHldKVxuXG4gIC8vIE9idGVuZXIgZWwgw7psdGltbyBtZW5zYWplIGRlbCB1c3VhcmlvIHBhcmEgdmVyaWZpY2FyIHNpIHRpZW5lIGF0dGFjaG1lbnRzXG4gIGNvbnN0IGxhc3RVc2VyTWVzc2FnZSA9IG1lc3NhZ2VzXG4gICAgLmZpbHRlcihtc2cgPT4gbXNnLnJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5VU0VSIHx8IG1zZy51c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpKVxuICAgIC5hdCgtMSlcblxuICBjb25zdCBhdHRhY2htZW50c0NvdW50ID1cbiAgICAoQXJyYXkuaXNBcnJheShsYXN0VXNlck1lc3NhZ2U/LmF0dGFjaG1lbnRzKSA/IGxhc3RVc2VyTWVzc2FnZS5hdHRhY2htZW50cy5sZW5ndGggOiAwKSB8fFxuICAgIChBcnJheS5pc0FycmF5KGxhc3RVc2VyTWVzc2FnZT8uc291cmNlcykgPyBsYXN0VXNlck1lc3NhZ2Uuc291cmNlcy5sZW5ndGggOiAwKVxuXG4gIGNvbnN0IHN0cmVhbUxvYWRpbmdEaXNwbGF5ID0gcmVzb2x2ZVN0cmVhbUxvYWRpbmdEaXNwbGF5KHtcbiAgICBzdHJlYW1BY3Rpdml0eSxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBhY3RpdmVMb2FkaW5nczogYWN0aXZlTG9hZGluZ3MgfHwge30sXG4gICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBoYXNBdHRhY2htZW50czogQm9vbGVhbihhdHRhY2htZW50c0NvdW50KSxcbiAgICBhdHRhY2htZW50c0NvdW50LFxuICAgIHQsXG4gIH0pXG5cbiAgY29uc3QgaXNTY3JvbGxPblBhcmVudCA9ICEhZXhwYW5kZWRcbiAgY29uc3QgaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50ID0gYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCcgJiYgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYWdlbnQ/Lm5hbWUgfHwgJycpXG5cbiAgLy8gQWwgZXhwYW5kaXIvY29udHJhZXIgZWwgbW9kYWwgZWwgcmVmIHBhc2EgYSBvdHJvIGNvbnRlbmVkb3IgKHNjcm9sbFRvcCBzZSByZXNldGVhIGEgMCkuXG4gIC8vIFJlc3RhdXJhciBsYSBwb3NpY2nDs24gZGUgc2Nyb2xsIGFudGVzIGRlbCBwYWludCBwYXJhIGV2aXRhciBxdWUgbGEgY29udmVyc2FjacOzbiBzYWx0ZSBhcnJpYmEuXG4gIGNvbnN0IGV4cGFuZGVkUmVmID0gdXNlUmVmKGV4cGFuZGVkKVxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChleHBhbmRlZFJlZi5jdXJyZW50ICE9PSBleHBhbmRlZCAmJiBtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICBjb25zdCBzYXZlZFNjcm9sbFRvcCA9IGxhc3RTY3JvbGxUb3BSZWYuY3VycmVudFxuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBzYXZlZFNjcm9sbFRvcFxuICAgICAgZXhwYW5kZWRSZWYuY3VycmVudCA9IGV4cGFuZGVkXG4gICAgfSBlbHNlIHtcbiAgICAgIGV4cGFuZGVkUmVmLmN1cnJlbnQgPSBleHBhbmRlZFxuICAgIH1cbiAgfSwgW2V4cGFuZGVkXSlcblxuICBpZiAobG9hZGluZ01lc3NhZ2VzKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxGYWRlIGZpbGw+XG4gICAgICAgIDxMb2FkZXIgLz5cbiAgICAgIDwvRmFkZT5cbiAgICApXG4gIH1cblxuICBjb25zdCBtZXNzYWdlc0NvbnRlbnQgPSAoXG4gICAgPD5cbiAgICAgIHtpc0xvYWRpbmdNb3JlTWVzc2FnZXMgJiYgPExvYWRpbmdUZXh0IHRleHQ9e3QoJ2NoYXQubG9hZGluZ01vcmUnKX0gLz59XG4gICAgICA8PlxuICAgICAgICB7bWVzc2FnZXMubWFwKChtZXNzYWdlLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzQXNzaXN0YW50TWVzc2FnZSA9IG1lc3NhZ2Uucm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCB8fCBtZXNzYWdlLnVzZXIuaWQgPT09ICdhc3Npc3RhbnQnXG4gICAgICAgICAgY29uc3QgaXNMYXN0TWVzc2FnZSA9IGluZGV4ID09PSBtZXNzYWdlcy5sZW5ndGggLSAxXG4gICAgICAgICAgY29uc3QgaXNTdHJlYW1pbmcgPVxuICAgICAgICAgICAgaXNBc3Npc3RhbnRNZXNzYWdlICYmXG4gICAgICAgICAgICBpc0xhc3RNZXNzYWdlICYmXG4gICAgICAgICAgICAod2FpdGluZ1Jlc3BvbnNlIHx8IGlzV3JpdGluZykgJiZcbiAgICAgICAgICAgIGlzU3RyZWFtaW5nUGxhY2Vob2xkZXJNZXNzYWdlSWQobWVzc2FnZS5pZClcblxuICAgICAgICAgIC8vIE5vIGZpbHRyYXIgZWwgcGxhY2Vob2xkZXIgZGVsIG1lbnNhamUgZW4gc3RyZWFtaW5nOiBzdSB0ZXh0byB2aXZlXG4gICAgICAgICAgLy8gZW4gZWwgc3RyZWFtaW5nU3RvcmUgeSBgbWVzc2FnZS5tZXNzYWdlYCBlcyAnJyBoYXN0YSBlbCBjb21wbGV0ZS5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhaXNTdHJlYW1pbmcgJiZcbiAgICAgICAgICAgICEobWVzc2FnZS5hdHRhY2htZW50cz8ubGVuZ3RoIHx8IG1lc3NhZ2Uuc291cmNlcz8ubGVuZ3RoKSAmJlxuICAgICAgICAgICAgIW1lc3NhZ2UubWVzc2FnZSAmJlxuICAgICAgICAgICAgIW1lc3NhZ2UucHJvamVjdD8ubmFtZSAmJlxuICAgICAgICAgICAgIW1lc3NhZ2UuYXBwcm92YWxcbiAgICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuXG4gICAgICAgICAgY29uc3QgbWVzc2FnZUZlZWRiYWNrID1cbiAgICAgICAgICAgIG1lc3NhZ2U/Lndhc0hlbHBmdWwgPT09IHVuZGVmaW5lZCB8fCBtZXNzYWdlLndhc0hlbHBmdWwgPT09IG51bGxcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbWVzc2FnZS53YXNIZWxwZnVsXG4gICAgICAgICAgICAgICAgPyBGZWVkYmFjay5USFVNQlNfVVBcbiAgICAgICAgICAgICAgICA6IEZlZWRiYWNrLlRIVU1CU19ET1dOXG5cbiAgICAgICAgICAvLyBLZXkgZXN0YWJsZTogc29sbyBtZXNzYWdlLmlkIHBhcmEgZXZpdGFyIHJlbW91bnQgZHVyYW50ZSBzdHJlYW1pbmcgKG1lc3NhZ2UuZGF0ZSBwdWVkZSBjYW1iaWFyKVxuICAgICAgICAgIGNvbnN0IG1lc3NhZ2VLZXkgPSBtZXNzYWdlLmlkID8/IGBtc2ctJHtpbmRleH1gXG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPE1lc3NhZ2VJdGVtXG4gICAgICAgICAgICAgIHsuLi5tZXNzYWdlfVxuICAgICAgICAgICAgICBrZXk9e21lc3NhZ2VLZXl9XG4gICAgICAgICAgICAgIGF1dGhVc2VyPXthdXRoVXNlcn1cbiAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uPXtoYW5kbGVTZWxlY3RPcHRpb259XG4gICAgICAgICAgICAgIGhhbmRsZUZlZWRiYWNrPXtoYW5kbGVGZWVkYmFja31cbiAgICAgICAgICAgICAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbj17aGFuZGxlQXBwcm92YWxEZWNpc2lvbn1cbiAgICAgICAgICAgICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrPXtoYW5kbGVTdWdnZXN0aW9uQ2xpY2t9XG4gICAgICAgICAgICAgIGhhc1NlbGVjdGVkU3VnZ2VzdGlvbj17ISFzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzW21lc3NhZ2UuaWRdfVxuICAgICAgICAgICAgICBkaXNhYmxlRmVlZGJhY2s9e21lc3NhZ2VGZWVkYmFja31cbiAgICAgICAgICAgICAgaXNTdHJlYW1pbmc9e2lzU3RyZWFtaW5nfVxuICAgICAgICAgICAgICBpc0xhc3RNZXNzYWdlPXtpc0xhc3RNZXNzYWdlfVxuICAgICAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIClcbiAgICAgICAgfSl9XG4gICAgICA8Lz5cbiAgICAgIHtzdHJlYW1Mb2FkaW5nRGlzcGxheSAmJiAoXG4gICAgICAgIDxTQ0xvYWRpbmdNZXNzYWdlc0NvbHVtbj5cbiAgICAgICAgICA8QWdlbnRBY3Rpdml0eUluZGljYXRvciBhY3Rpdml0eT17c3RyZWFtTG9hZGluZ0Rpc3BsYXl9IC8+XG4gICAgICAgIDwvU0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4+XG4gICAgICApfVxuICAgIDwvPlxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8U0NNZXNzYWdlc091dGVyICRzY3JvbGxPblBhcmVudD17aXNTY3JvbGxPblBhcmVudH0+XG4gICAgICB7aXNTY3JvbGxPblBhcmVudCA/IChcbiAgICAgICAgPFNDTWVzc2FnZXNTY3JvbGwgcmVmPXttZXNzYWdlc1JlZn0gb25TY3JvbGw9e2hhbmRsZVNjcm9sbFRvQm90dG9tfT5cbiAgICAgICAgICA8U0NNZXNzYWdlc0lubmVyICRzY3JvbGxPblBhcmVudD17aXNTY3JvbGxPblBhcmVudH0gJGlzTWFya2V0cGxhY2VHbG9iYWw9e2lzTWFya2V0cGxhY2VHbG9iYWxBZ2VudH0+XG4gICAgICAgICAgICB7bWVzc2FnZXNDb250ZW50fVxuICAgICAgICAgIDwvU0NNZXNzYWdlc0lubmVyPlxuICAgICAgICA8L1NDTWVzc2FnZXNTY3JvbGw+XG4gICAgICApIDogKFxuICAgICAgICA8U0NNZXNzYWdlc0lubmVyXG4gICAgICAgICAgcmVmPXttZXNzYWdlc1JlZn1cbiAgICAgICAgICBvblNjcm9sbD17aGFuZGxlU2Nyb2xsVG9Cb3R0b219XG4gICAgICAgICAgJHNjcm9sbE9uUGFyZW50PXtmYWxzZX1cbiAgICAgICAgICAkaXNNYXJrZXRwbGFjZUdsb2JhbD17aXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50fVxuICAgICAgICA+XG4gICAgICAgICAge21lc3NhZ2VzQ29udGVudH1cbiAgICAgICAgPC9TQ01lc3NhZ2VzSW5uZXI+XG4gICAgICApfVxuXG4gICAgICB7c2hvd1Njcm9sbFRvQm90dG9tICYmIChcbiAgICAgICAgPFNjcm9sbFRvQm90dG9tQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVDbGlja1Njcm9sbFRvQm90dG9tfT5cbiAgICAgICAgICA8QXJyb3dTbWFsbERvd24gY29sb3I9XCIjNjY2XCIgd2lkdGg9XCIyMHB4XCIgaGVpZ2h0PVwiMjBweFwiIC8+XG4gICAgICAgIDwvU2Nyb2xsVG9Cb3R0b21CdXR0b24+XG4gICAgICApfVxuICAgIDwvU0NNZXNzYWdlc091dGVyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlNZXNzYWdlcyA9IFJlYWN0Lm1lbW8oQ2hhdEFJTWVzc2FnZXNJbm5lcilcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPQSxLQUFLLElBQVFDLElBQUksRUFBYUMsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLGVBQWUsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUFDLGFBQUEsSUFBQUMsY0FBQSxRQUFRLE9BQU87QUFDN0csU0FBU0MsVUFBVSxRQUFRLFlBQVk7QUFDdkMsU0FBU0MsZ0JBQWdCLFFBQVEsa0JBQWtCO0FBQ25ELFNBQVNDLGNBQWMsUUFBUSxpREFBaUQ7QUFFaEYsU0FBU0MsY0FBYyxRQUFRLDJDQUEyQztBQUMxRSxTQUFTQyxXQUFXLFFBQVEscUNBQXFDO0FBQ2pFLFNBQVNDLHNCQUFzQixRQUFRLG9DQUFvQztBQUMzRSxTQUFTQyxtQkFBbUIsUUFBUSxnREFBZ0Q7QUFF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
|
|
918
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiY3JlYXRlRWxlbWVudCIsIl9jcmVhdGVFbGVtZW50IiwiU3RyZWFtZG93biIsImNyZWF0ZUNvZGVQbHVnaW4iLCJBcnJvd1NtYWxsRG93biIsIkF0dGFjaG1lbnRDYXJkIiwiQXBwcm92YWxCb3giLCJBdHRhY2htZW50UHJldmlld01vZGFsIiwiQXR0YWNobWVudENhcmRBdWRpbyIsIkNoYXRIaXN0b3J5Um9sZSIsIk1BSUFfU1RSRUFNRE9XTl9SRUhZUEVfUExVR0lOUyIsInJlbmRlclRleHRXaXRoTWVudGlvbnMiLCJyZW5kZXJNZW50aW9uTGluayIsImhhc0lubGluZU1hcmtlcnMiLCJ1c2VVc2VyIiwidXNlVCIsInVzZUNoYXRNYW5hZ2VyIiwidXNlVGFza1BhbmVsIiwidXNlU21vb3RoU3RyZWFtVGV4dCIsInVzZVN0cmVhbWluZ01lc3NhZ2UiLCJMb2FkaW5nVGV4dCIsIkFnZW50QWN0aXZpdHlJbmRpY2F0b3IiLCJpc1N0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkIiwicmVzb2x2ZVN0cmVhbUxvYWRpbmdEaXNwbGF5IiwiTG9hZGVyIiwiRmFkZSIsIk1lc3NhZ2VGcm9tVXNlciIsIk1lc3NhZ2VGcm9tT3RoZXIiLCJNZXNzYWdlQ29udGVudEZyb21Vc2VyIiwiTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXIiLCJNZXNzYWdlRmVlZGJhY2siLCJTQ0NBSU1lc3NhZ2VXcmFwcGVyIiwiU2Nyb2xsVG9Cb3R0b21CdXR0b24iLCJTQ01lc3NhZ2VzT3V0ZXIiLCJTQ01lc3NhZ2VzU2Nyb2xsIiwiU0NNZXNzYWdlc0lubmVyIiwiU0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4iLCJTQ09wdGlvbnNMaXN0IiwiU0NPcHRpb25JdGVtIiwiU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIiwiU0NBc3Npc3RhbnROYW1lIiwiU0NBc3Npc3RhbnRBdmF0YXIiLCJTQ1Rhc2tMaW5rIiwiU0NNZXNzYWdlSXRlbVdyYXBwZXIiLCJTQ01lc3NhZ2VJdGVtSW5uZXIiLCJTQ0F0dGFjaG1lbnRzUm93IiwiU0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4iLCJGZWVkYmFjayIsInVzZUdsb2JhbENvbnRleHQiLCJNQUlBSWNvbiIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJDaGF0QUlTdWdnZXN0aW9ucyIsIkNoYXRBSUNyZWF0ZUFnZW50QWN0aW9ucyIsIkVWRU5UUyIsInVzZUV2ZW50IiwiZG93bmxvYWRGaWxlRnJvbVVybCIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImNvZGUiLCJ0aGVtZXMiLCJBc3Npc3RhbnRBdmF0YXJJbm5lciIsIl91c2VHbG9iYWxDb250ZXh0IiwiYWdlbnQiLCJjaGlsZHJlbiIsInR5cGUiLCJ3aWR0aCIsImhlaWdodCIsImVtb2ppIiwiQXNzaXN0YW50QXZhdGFyIiwiTWVzc2FnZVdyYXBwZXIiLCJfcmVmIiwiaXNDdXJyZW50VXNlciIsInByb3BzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiTWVzc2FnZUNvbXBvbmVudCIsIl9vYmplY3RTcHJlYWQiLCJNZXNzYWdlQ29udGVudFdyYXBwZXIiLCJfcmVmMiIsIl9leGNsdWRlZDIiLCJNZXNzYWdlQ29udGVudENvbXBvbmVudCIsIk1lc3NhZ2VPcHRpb25zIiwiX3JlZjMiLCJvcHRpb25zIiwiaGFuZGxlU2VsZWN0T3B0aW9uIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2VsZWN0ZWRPcHRpb24iLCJzZXRTZWxlY3RlZE9wdGlvbiIsImhhbmRsZVNlbGVjdCIsIm9wdGlvbiIsIm1hcCIsIiRoYXNTZWxlY3Rpb24iLCIkZGltbWVkIiwiaWQiLCJvbkNsaWNrIiwibmFtZSIsIkFzc2lzdGFudE1lc3NhZ2VIZWFkZXIiLCJfcmVmNCIsInN1YmFnZW50TmFtZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwibG9jYWxBZ2VudCIsInNldExvY2FsQWdlbnQiLCJfdXNlR2xvYmFsQ29udGV4dDIiLCJkaXNwbGF5TmFtZSIsInRyaW0iLCJnZXRUYWJTZWdtZW50RnJvbUhyZWYiLCJocmVmIiwibWF0Y2giLCJ0ZXN0IiwiZXh0cmFjdFRhc2tzRnJvbU1lc3NhZ2UiLCJtZXNzYWdlIiwidGFza1VybFJlZ2V4IiwiUmVnRXhwIiwidGFza3MiLCJzZWVuSWRzIiwiU2V0IiwiZXhlYyIsInRhc2tJZCIsInVybCIsImhhcyIsImFkZCIsImVzY2FwZWRVcmwiLCJyZXBsYWNlIiwibWFya2Rvd25MaW5rUmVnZXgiLCJjb25jYXQiLCJsaW5rTWF0Y2giLCJ0aXRsZSIsInB1c2giLCJoYXNUYXNrTGlua3MiLCJ0ZXh0IiwibGVuZ3RoIiwiVEFTS19NRU5USU9OX01BUktFUl9SRSIsIk1BSUFfVEFTS19NRU5USU9OX0hSRUZfUkUiLCJoYXNUYXNrTGlua3NPclRhc2tNZW50aW9ucyIsIlRhc2tMaW5rIiwiX3JlZjUiLCJ0YWJTZWdtZW50IiwiX3VzZVRhc2tQYW5lbCIsImJ1aWxkT3BlblRhc2siLCJvcGVuVGFzayIsImhhbmRsZUNsaWNrIiwiZSIsIm1ldGFLZXkiLCJjdHJsS2V5IiwicHJldmVudERlZmF1bHQiLCJDdXN0b21MaW5rIiwiX3JlZjYiLCJyZXN0IiwiX2V4Y2x1ZGVkMyIsIm1lbnRpb25Ob2RlIiwidGFza01hdGNoIiwiU3RyZWFtaW5nTWVzc2FnZUJvZHkiLCJfcHJvcHMkY3JlYXRlQWdlbnRGb2wiLCJzdHJlYW1pbmdUZXh0IiwiaXNTdHJlYW1pbmciLCJtZXNzYWdlSWQiLCJyYXdUZXh0Iiwid2luRmxhZ3MiLCJ3aW5kb3ciLCJkaXNwbGF5VGV4dCIsImVuYWJsZWQiLCJtYXhDaGFyc1BlckZyYW1lIiwic25hcFRvV29yZEJvdW5kYXJ5Iiwic3RyZWFtTGFnTXMiLCJ0YXJnZXRMYWdNcyIsInN0cmVhbUFkYXB0IiwiYWRhcHRUb0JhY2tlbmRSYXRlIiwic3RyZWFtQnVmZmVyTXMiLCJ0YXJnZXRCdWZmZXJNcyIsInN0cmVhbU1pbkJ1ZmZlciIsIm1pbkJ1ZmZlckNoYXJzIiwic3RyZWFtV2FybXVwTXMiLCJ3YXJtdXBNcyIsImNyZWF0ZUFnZW50QWN0aW9uc0FnZW50SWQiLCJjcmVhdGVBZ2VudEZvbGxvd1VwIiwiYWdlbnRJZCIsImhhc01lbnRpb25zIiwibWVudGlvbk5vZGVzIiwiaXNGcm9udGVuZENhbmNlbGxlZCIsImNsYXNzTmFtZSIsInN0eWxlIiwiZGlzcGxheSIsInBsdWdpbnMiLCJyZWh5cGVQbHVnaW5zIiwiY29tcG9uZW50cyIsImEiLCJsaW5rU2FmZXR5IiwiaXNBbmltYXRpbmciLCJzaGlraVRoZW1lIiwiY29udHJvbHMiLCJ0YWJsZSIsImlzQXNzaXN0YW50IiwiaXNFcnJvciIsImFwcHJvdmFsIiwiY29udGVudCIsInNvdXJjZXMiLCJoYW5kbGVGZWVkYmFjayIsImhhbmRsZUZlZWRiYWNrQ2xpY2siLCJkaXNhYmxlRmVlZGJhY2siLCJzdWdnZXN0aW9ucyIsIm9uU2VsZWN0U3VnZ2VzdGlvbiIsInN1Z2dlc3Rpb24iLCJoYW5kbGVTdWdnZXN0aW9uQ2xpY2siLCJkaXNhYmxlZCIsInN1Z2dlc3Rpb25zRGlzYWJsZWQiLCJoaWRkZW4iLCJpc0xhc3RNZXNzYWdlIiwiTWVzc2FnZUl0ZW0iLCJfcHJvcHMkcHJvamVjdE1ldGFkYXQiLCJ1c2VyIiwiYXV0aFVzZXIiLCJpc0NoYW5nZVByb2plY3QiLCJoYW5kbGVBcHByb3ZhbERlY2lzaW9uIiwicm9sZSIsImF0dGFjaG1lbnRzIiwiYXBwcm92YWxTdGF0dXMiLCJoYXNTZWxlY3RlZFN1Z2dlc3Rpb24iLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInByZXZpZXdBdHRhY2htZW50Iiwic2V0UHJldmlld0F0dGFjaG1lbnQiLCJVU0VSIiwidG9TdHJpbmciLCJBU1NJU1RBTlQiLCJpc1RoaW5raW5nIiwibWVzc2FnZUF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5IiwiaGFuZGxlQXR0YWNobWVudENsaWNrIiwiYXR0YWNobWVudCIsImZpbGUiLCJGaWxlIiwib3JpZ2luYWxGaWxlIiwidXJsX3RodW1ibmFpbCIsInVybF9vcmlnaW5hbCIsInVybF9maWxlIiwiaGFuZGxlQ2xvc2VQcmV2aWV3IiwiaGFuZGxlQXR0YWNobWVudERvd25sb2FkIiwiX3JlZjciLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImV4dGVuc2lvbiIsImZpbGVOYW1lIiwiZmlsZVVybCIsImJsb2JVcmwiLCJkb3dubG9hZGVkRmlsZSIsImxpbmsiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiaW5jbHVkZXMiLCJzZW50IiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiYWJydXB0IiwiZG9jdW1lbnQiLCJkb3dubG9hZCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImNsaWNrIiwic2V0VGltZW91dCIsInJlbW92ZUNoaWxkIiwicmV2b2tlT2JqZWN0VVJMIiwiY29uc29sZSIsImVycm9yIiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYXNGZWVkYmFjayIsIiRpc0Fzc2lzdGFudCIsIm1lc3NhZ2VFeHRyYUNvbnRlbnQiLCJmZWVkYmFjayIsInNlc3Npb25JZCIsInNwbGl0IiwiZmlsdGVyIiwicXVlc3Rpb25JZCIsImpvaW4iLCJpbmRleCIsIl9hdHRhY2htZW50JHR5cGUiLCJfYXR0YWNobWVudCRuYW1lIiwiYXR0YWNobWVudFR5cGUiLCJ0b0xvd2VyQ2FzZSIsImF0dGFjaG1lbnROYW1lIiwiaXNBdWRpb0ZpbGUiLCJzdGFydHNXaXRoIiwic29tZSIsImV4dCIsImVuZHNXaXRoIiwicG9zaXRpb25JbmRleCIsIm9uRG93bmxvYWQiLCJwZW5kaW5nX2FjdGlvbnMiLCJhY3Rpb25zIiwic3RhdHVzIiwib25BcHByb3ZlIiwidGhyZWFkSWRzIiwib25SZWplY3QiLCJpc1Byb2plY3REZWxldGVkIiwicHJvamVjdE1ldGFkYXRhIiwiaXNfZGVsZXRlZCIsImlzRXhwYW5kZWQiLCJleHBhbmRlZCIsImhpdGxJbnN0YW5jZUlkIiwib3JpZ2luYWxfdGhyZWFkX2lkIiwid2FybmluZ01lc3NhZ2UiLCJ3YXJuaW5nX21lc3NhZ2UiLCJtYW51YWxBcHByb3ZhbERldGVjdGVkIiwibWFudWFsX2FwcHJvdmFsX2RldGVjdGVkIiwiaXNPcGVuIiwib25DbG9zZSIsIkNoYXRBSU1lc3NhZ2VzSW5uZXIiLCJfcmVmOCIsInVzZXJJbml0aWFsTWVzc2FnZSIsImluaXRpYWxDaGF0SWQiLCJvbkVycm9yIiwib25TZW5kTWVzc2FnZVJlYWR5Iiwib25TY3JvbGxUb0JvdHRvbSIsImFnZW50cyIsIl91c2VUIiwidCIsIl91c2VHbG9iYWxDb250ZXh0MyIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwiZXZlbnQiLCJtZXNzYWdlc1JlZiIsImNoYXRJbml0aWFsaXplZFJlZiIsImlzTG9hZGluZ01vcmVSZWYiLCJ1c2VyU2Nyb2xsaW5nUmVmIiwic2Nyb2xsVGhyZXNob2xkUmVmIiwibGFzdFNjcm9sbFRvcFJlZiIsInNob3dTY3JvbGxUb0JvdHRvbVJlZiIsInNjcm9sbFJhZlJlZiIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2hvd1Njcm9sbFRvQm90dG9tIiwic2V0U2hvd1Njcm9sbFRvQm90dG9tIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzIiwic2V0U2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcyIsIl91c2VDaGF0TWFuYWdlciIsImNoYXRJZCIsInVuZGVmaW5lZCIsIm1lc3NhZ2VzIiwibG9hZGluZ01lc3NhZ2VzIiwiaXNMb2FkaW5nTW9yZU1lc3NhZ2VzIiwid2FpdGluZ1Jlc3BvbnNlIiwiaXNXcml0aW5nIiwibG9hZGluZ01lc3NhZ2UiLCJzdHJlYW1BY3Rpdml0eSIsImFjdGl2ZUxvYWRpbmdzIiwic2VuZE1lc3NhZ2UiLCJjaGFuZ2VQcm9qZWN0IiwiaW5pdGlhbGl6ZUNoYXQiLCJoYW5kbGVTY3JvbGwiLCJzdG9wR2VuZXJhdGlvbiIsImlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCIsImVudGl0eSIsImFpQ2hhdFN1Z2dlc3RlZEFuc3dlciIsImFnZW50X3R5cGUiLCJfZGVmaW5lUHJvcGVydHkiLCJ1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5IiwiZWwiLCJjdXJyZW50Iiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiZGlzdGFuY2VGcm9tQm90dG9tIiwic2hvdWxkU2hvdyIsInNjcm9sbFRvQm90dG9tUmFmIiwib3B0cyIsIl9vcHRzJHNraXBJZlVzZXJTY3JvbCIsInNraXBJZlVzZXJTY3JvbGxpbmciLCJfb3B0cyRkZWxheU1zIiwiZGVsYXlNcyIsInJ1biIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImhhbmRsZUNsaWNrU2Nyb2xsVG9Cb3R0b20iLCJzY3JvbGxUbyIsInRvcCIsImJlaGF2aW9yIiwiaGFuZGxlU2Nyb2xsVG9Cb3R0b20iLCJjb250YWluZXIiLCJjdXJyZW50VGFyZ2V0IiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJpc1Njcm9sbGluZ1VwIiwiaXNOZWFyQm90dG9tIiwic2VuZE1lc3NhZ2VSZWYiLCJzdG9wR2VuZXJhdGlvblJlZiIsIm9uU2VuZE1lc3NhZ2VSZWFkeVJlZiIsInJhZklkIiwibGFzdEhlaWdodCIsInRpY2siLCJjdXJyZW50SGVpZ2h0IiwibGFzdE1lc3NhZ2VJZFJlZiIsImxhc3RNZXNzYWdlc0xlbmd0aFJlZiIsIl9sYXN0TWVzc2FnZSRpZCIsImxhc3RNZXNzYWdlIiwibGFzdElkIiwicHJldklkIiwicHJldkxlbiIsImlzTmV3TWVzc2FnZSIsImlzQXRCb3R0b20iLCJoYXNJbml0aWFsTWVzc2FnZSIsIm1zZyIsImlzQXBwcm92YWwiLCJpc0Fuc3dlck9yUXVlc3Rpb24iLCJsYXN0VXNlck1lc3NhZ2UiLCJhdCIsImF0dGFjaG1lbnRzQ291bnQiLCJzdHJlYW1Mb2FkaW5nRGlzcGxheSIsImhhc0F0dGFjaG1lbnRzIiwiQm9vbGVhbiIsImlzU2Nyb2xsT25QYXJlbnQiLCJleHBhbmRlZFJlZiIsInNhdmVkU2Nyb2xsVG9wIiwiZmlsbCIsIm1lc3NhZ2VzQ29udGVudCIsIl9tZXNzYWdlJGF0dGFjaG1lbnRzIiwiX21lc3NhZ2Ukc291cmNlcyIsIl9tZXNzYWdlJHByb2plY3QiLCJfbWVzc2FnZSRpZCIsImlzQXNzaXN0YW50TWVzc2FnZSIsInByb2plY3QiLCJtZXNzYWdlRmVlZGJhY2siLCJ3YXNIZWxwZnVsIiwiVEhVTUJTX1VQIiwiVEhVTUJTX0RPV04iLCJtZXNzYWdlS2V5Iiwia2V5IiwiYWN0aXZpdHkiLCIkc2Nyb2xsT25QYXJlbnQiLCJyZWYiLCJvblNjcm9sbCIsIiRpc01hcmtldHBsYWNlR2xvYmFsIiwiY29sb3IiLCJDaGF0QUlNZXNzYWdlcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNZXNzYWdlcy9DaGF0QUlNZXNzYWdlcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby11bnN0YWJsZS1uZXN0ZWQtY29tcG9uZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXNoYWRvdyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcmVxdWlyZS1kZWZhdWx0LXByb3BzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCBSZWFjdCwgeyBGQywgbWVtbywgUmVhY3ROb2RlLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFN0cmVhbWRvd24gfSBmcm9tICdzdHJlYW1kb3duJ1xuaW1wb3J0IHsgY3JlYXRlQ29kZVBsdWdpbiB9IGZyb20gJ0BzdHJlYW1kb3duL2NvZGUnXG5pbXBvcnQgeyBBcnJvd1NtYWxsRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Fycm93U21hbGxEb3duJ1xuXG5pbXBvcnQgeyBBdHRhY2htZW50Q2FyZCB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRDYXJkL0F0dGFjaG1lbnRDYXJkJ1xuaW1wb3J0IHsgQXBwcm92YWxCb3ggfSBmcm9tICcuLi8uLi9hdG9tcy9BcHByb3ZhbEJveC9BcHByb3ZhbEJveCdcbmltcG9ydCB7IEF0dGFjaG1lbnRQcmV2aWV3TW9kYWwgfSBmcm9tICcuLi8uLi9hdG9tcy9BdHRhY2htZW50UHJldmlld01vZGFsJ1xuaW1wb3J0IHsgQXR0YWNobWVudENhcmRBdWRpbyB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRDYXJkL0F0dGFjaG1lbnRDYXJkQXVkaW8nXG5pbXBvcnQgeyBNQUlBTWVzc2FnZVByb3BzIH0gZnJvbSAnLi4vLi4vYXRvbXMvTUFJQU1lc3NhZ2UvTUFJQU1lc3NhZ2UuaW50ZXJmYWNlcydcbmltcG9ydCB7IENoYXRNZXNzYWdlLCBDaGF0SGlzdG9yeVJvbGUsIFRhc2tJbmZvIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IE1BSUFfU1RSRUFNRE9XTl9SRUhZUEVfUExVR0lOUyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL21haWFTdHJlYW1kb3duUmVoeXBlUGx1Z2lucydcbmltcG9ydCB7IHJlbmRlclRleHRXaXRoTWVudGlvbnMsIHJlbmRlck1lbnRpb25MaW5rLCBoYXNJbmxpbmVNYXJrZXJzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvcmVuZGVyQ29udGV4dE1lbnRpb25zJ1xuXG4vLyBpbXBvcnQgeyBnZXRBZ2VudERpc3BsYXlOYW1lIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYWdlbnREaXNwbGF5TmFtZSdcbmltcG9ydCB7IENPUlVzZXIsIHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IHVzZUNoYXRNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQ2hhdE1hbmFnZXIvdXNlQ2hhdE1hbmFnZXInXG5pbXBvcnQgeyB1c2VUYXNrUGFuZWwgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUYXNrUGFuZWwnXG5pbXBvcnQgeyB1c2VTbW9vdGhTdHJlYW1UZXh0IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU21vb3RoU3RyZWFtVGV4dCdcbmltcG9ydCB7IHVzZVN0cmVhbWluZ01lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTdHJlYW1pbmdNZXNzYWdlJ1xuXG5pbXBvcnQgeyBMb2FkaW5nVGV4dCB9IGZyb20gJy4uLy4uL2F0b21zL0xvYWRpbmdUZXh0J1xuaW1wb3J0IHsgQWdlbnRBY3Rpdml0eUluZGljYXRvciB9IGZyb20gJy4uLy4uL2F0b21zL0FnZW50QWN0aXZpdHlJbmRpY2F0b3InXG5pbXBvcnQgeyBpc1N0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkLCByZXNvbHZlU3RyZWFtTG9hZGluZ0Rpc3BsYXkgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGVyJ1xuaW1wb3J0IHsgRmFkZSB9IGZyb20gJy4uLy4uL2F0b21zL0ZhZGUnXG5cbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9Qcm9qZWN0J1xuXG5pbXBvcnQgeyBNZXNzYWdlRnJvbVVzZXIsIE1lc3NhZ2VGcm9tT3RoZXIsIE1lc3NhZ2VDb250ZW50RnJvbVVzZXIsIE1lc3NhZ2VDb250ZW50RnJvbU90aGVyIH0gZnJvbSAnLi9zdHlsZXMnXG5pbXBvcnQgeyBNZXNzYWdlRmVlZGJhY2sgfSBmcm9tICcuLi9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQge1xuICBTQ0NBSU1lc3NhZ2VXcmFwcGVyLFxuICBTY3JvbGxUb0JvdHRvbUJ1dHRvbixcbiAgU0NNZXNzYWdlc091dGVyLFxuICBTQ01lc3NhZ2VzU2Nyb2xsLFxuICBTQ01lc3NhZ2VzSW5uZXIsXG4gIFNDTG9hZGluZ01lc3NhZ2VzQ29sdW1uLFxuICBTQ09wdGlvbnNMaXN0LFxuICBTQ09wdGlvbkl0ZW0sXG4gIFNDQXNzaXN0YW50TWVzc2FnZUhlYWRlcixcbiAgU0NBc3Npc3RhbnROYW1lLFxuICBTQ0Fzc2lzdGFudEF2YXRhcixcbiAgU0NUYXNrTGluayxcbiAgU0NNZXNzYWdlSXRlbVdyYXBwZXIsXG4gIFNDTWVzc2FnZUl0ZW1Jbm5lcixcbiAgU0NBdHRhY2htZW50c1JvdyxcbiAgU0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4sXG59IGZyb20gJy4vbmV3U3R5bGVzJ1xuaW1wb3J0IHsgRmVlZGJhY2sgfSBmcm9tICcuLi9NZXNzYWdlRmVlZGJhY2svTWVzc2FnZUZlZWRiYWNrJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgTUFJQUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7IFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4gfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvdGFza1VybHMnXG5pbXBvcnQgeyBDaGF0QUlTdWdnZXN0aW9ucyB9IGZyb20gJy4vQ2hhdEFJU3VnZ2VzdGlvbnMnXG5pbXBvcnQgeyBDaGF0QUlDcmVhdGVBZ2VudEFjdGlvbnMgfSBmcm9tICcuL0NoYXRBSUNyZWF0ZUFnZW50QWN0aW9ucydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IGRvd25sb2FkRmlsZUZyb21VcmwgfSBmcm9tICcuLi8uLi8uLi91dGlscy9maWxlRG93bmxvYWRIZWxwZXInXG5cbmNvbnN0IGNvZGUgPSBjcmVhdGVDb2RlUGx1Z2luKHsgdGhlbWVzOiBbJ2dpdGh1Yi1saWdodCcsICdnaXRodWItbGlnaHQnXSB9KVxuXG5jb25zdCBBc3Npc3RhbnRBdmF0YXJJbm5lcjogRkMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgYWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICByZXR1cm4gKFxuICAgIDxTQ0Fzc2lzdGFudEF2YXRhcj5cbiAgICAgIHthZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyB8fCBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgPyA8TUFJQUljb24gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPiA6IGFnZW50Py5lbW9qaX1cbiAgICA8L1NDQXNzaXN0YW50QXZhdGFyPlxuICApXG59XG5cbmNvbnN0IEFzc2lzdGFudEF2YXRhciA9IG1lbW8oQXNzaXN0YW50QXZhdGFySW5uZXIpXG5cbnR5cGUgQ2hhdEFJTWVzc2FnZXNQcm9wcyA9IHtcbiAgdXNlckluaXRpYWxNZXNzYWdlOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBmYXFJZD86IHN0cmluZ1xuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdXG4gICAgZnVhSWQ/OiBzdHJpbmdcbiAgICBzY0lkPzogc3RyaW5nXG4gIH1cbiAgaW5pdGlhbENoYXRJZDogc3RyaW5nIHwgbnVsbFxuICBvbkVycm9yOiAoKSA9PiB2b2lkXG4gIG9uU2VuZE1lc3NhZ2VSZWFkeT86IChcbiAgICBzZW5kTWVzc2FnZTogKFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZ1xuICAgICkgPT4gdm9pZCxcbiAgICBzdG9wR2VuZXJhdGlvbjogKCkgPT4gdm9pZCxcbiAgICBpc1N0cmVhbWluZzogYm9vbGVhbixcbiAgICBpc1dyaXRpbmc6IGJvb2xlYW5cbiAgKSA9PiB2b2lkXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuXG4gIG9uU2Nyb2xsVG9Cb3R0b20/OiAoKSA9PiB2b2lkXG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICBhZ2VudHM/OiBBZ2VudFtdXG4gIGV4cGFuZGVkPzogYm9vbGVhblxufVxuXG50eXBlIE1lc3NhZ2VJdGVtUHJvcHMgPSBDaGF0TWVzc2FnZSAmIHtcbiAgYXV0aFVzZXI6IENPUlVzZXJcbiAgaGFuZGxlU2VsZWN0T3B0aW9uOiAob3B0aW9uOiBQcm9qZWN0KSA9PiB2b2lkXG4gIGhhbmRsZVN1Z2dlc3Rpb25DbGljazogKG1lc3NhZ2VJZDogc3RyaW5nLCBzdWdnZXN0aW9uOiBzdHJpbmcpID0+IHZvaWRcbiAgaGFzU2VsZWN0ZWRTdWdnZXN0aW9uPzogYm9vbGVhblxuICBoYW5kbGVGZWVkYmFjazogKGZlZWRiYWNrOiBGZWVkYmFjaywgY2hhdE1lc3NhZ2VJZDogc3RyaW5nKSA9PiB2b2lkXG4gIGhhbmRsZUFwcHJvdmFsRGVjaXNpb246ICh0aHJlYWRJZHM6IHN0cmluZ1tdLCBkZWNpc2lvbjogJ2FwcHJvdmUnIHwgJ3JlamVjdCcpID0+IHZvaWRcbiAgZGlzYWJsZUZlZWRiYWNrPzogRmVlZGJhY2sgfCBudWxsXG4gIHNvdXJjZXM/OiBhbnlcbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gIGlzU3RyZWFtaW5nPzogYm9vbGVhblxuICBpc0xhc3RNZXNzYWdlPzogYm9vbGVhblxuICBleHBhbmRlZD86IGJvb2xlYW5cbn1cblxuaW50ZXJmYWNlIE1lc3NhZ2VXcmFwcGVyUHJvcHMge1xuICBpc0N1cnJlbnRVc2VyOiBib29sZWFuXG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgJ2RhdGEtbWVzc2FnZS1pZCc/OiBzdHJpbmdcbiAgaGFzRmVlZGJhY2s/OiBib29sZWFuXG59XG5cbnR5cGUgTWVzc2FnZUNvbnRlbnRXcmFwcGVyUHJvcHMgPSBNQUlBTWVzc2FnZVByb3BzICYge1xuICBpc0N1cnJlbnRVc2VyOiBib29sZWFuXG4gIGlzRXJyb3I/OiBib29sZWFuXG4gIGlzQ2hhbmdlUHJvamVjdD86IGJvb2xlYW5cbn1cblxuY29uc3QgTWVzc2FnZVdyYXBwZXI6IEZDPE1lc3NhZ2VXcmFwcGVyUHJvcHM+ID0gKHsgaXNDdXJyZW50VXNlciwgY2hpbGRyZW4sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgTWVzc2FnZUNvbXBvbmVudCA9IGlzQ3VycmVudFVzZXIgPyBNZXNzYWdlRnJvbVVzZXIgOiBNZXNzYWdlRnJvbU90aGVyXG4gIHJldHVybiA8TWVzc2FnZUNvbXBvbmVudCB7Li4ucHJvcHN9PntjaGlsZHJlbn08L01lc3NhZ2VDb21wb25lbnQ+XG59XG5cbmNvbnN0IE1lc3NhZ2VDb250ZW50V3JhcHBlcjogRkM8TWVzc2FnZUNvbnRlbnRXcmFwcGVyUHJvcHM+ID0gKHsgaXNDdXJyZW50VXNlciwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCBNZXNzYWdlQ29udGVudENvbXBvbmVudCA9IGlzQ3VycmVudFVzZXIgPyBNZXNzYWdlQ29udGVudEZyb21Vc2VyIDogTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXJcbiAgcmV0dXJuIDxNZXNzYWdlQ29udGVudENvbXBvbmVudCB7Li4ucHJvcHN9IC8+XG59XG5cbmZ1bmN0aW9uIE1lc3NhZ2VPcHRpb25zKHtcbiAgb3B0aW9ucyxcbiAgaGFuZGxlU2VsZWN0T3B0aW9uLFxufToge1xuICBvcHRpb25zOiBQcm9qZWN0W10gfCBudWxsXG4gIGhhbmRsZVNlbGVjdE9wdGlvbjogKG9wdGlvbjogUHJvamVjdCkgPT4gdm9pZFxufSkge1xuICBjb25zdCBbc2VsZWN0ZWRPcHRpb24sIHNldFNlbGVjdGVkT3B0aW9uXSA9IHVzZVN0YXRlPFByb2plY3QgfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdCA9IChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICBpZiAoc2VsZWN0ZWRPcHRpb24pIHJldHVyblxuICAgIHNldFNlbGVjdGVkT3B0aW9uKG9wdGlvbilcbiAgICBoYW5kbGVTZWxlY3RPcHRpb24ob3B0aW9uKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NPcHRpb25zTGlzdD5cbiAgICAgIHsob3B0aW9ucyB8fCBbXSkubWFwKG9wdGlvbiA9PiAoXG4gICAgICAgIDxTQ09wdGlvbkl0ZW1cbiAgICAgICAgICAkaGFzU2VsZWN0aW9uPXshIXNlbGVjdGVkT3B0aW9ufVxuICAgICAgICAgICRkaW1tZWQ9eyEhc2VsZWN0ZWRPcHRpb24gJiYgc2VsZWN0ZWRPcHRpb24/LmlkICE9PSBvcHRpb24uaWR9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlU2VsZWN0KG9wdGlvbil9XG4gICAgICAgICAga2V5PXtvcHRpb24uaWR9XG4gICAgICAgID5cbiAgICAgICAgICB7b3B0aW9uLm5hbWV9XG4gICAgICAgIDwvU0NPcHRpb25JdGVtPlxuICAgICAgKSl9XG4gICAgPC9TQ09wdGlvbnNMaXN0PlxuICApXG59XG5cbmNvbnN0IEFzc2lzdGFudE1lc3NhZ2VIZWFkZXIgPSAoeyBzdWJhZ2VudE5hbWUgfTogeyBzdWJhZ2VudE5hbWU/OiBzdHJpbmcgfSkgPT4ge1xuICBjb25zdCBbbG9jYWxBZ2VudCwgc2V0TG9jYWxBZ2VudF0gPSB1c2VTdGF0ZTxBZ2VudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHsgYWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0TG9jYWxBZ2VudChhZ2VudClcbiAgfSwgW2FnZW50XSlcblxuICAvLyBTaSB1biBzdWJhZ2VudGUgZXNwZWNpYWxpc3RhIHJlc3BvbmRpw7MgZXN0ZSBtZW5zYWplIChvcnF1ZXN0YWRvciBxdWVcbiAgLy8gZGVsZWfDsyksIG1vc3RyYW1vcyBzdSBub21icmUuIFNpIG5vLCBjYWVtb3MgYWwgY29tcG9ydGFtaWVudG8gcHJldmlvOlxuICAvLyAnTUFJQScgcGFyYSBjbG9uZS9vcmNoZXN0cmF0b3IsIG8gZWwgbm9tYnJlIGRlbCBhZ2VudGUgY3VzdG9tLlxuICBjb25zdCBkaXNwbGF5TmFtZSA9XG4gICAgc3ViYWdlbnROYW1lPy50cmltKCkgfHxcbiAgICAobG9jYWxBZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyB8fCBsb2NhbEFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJyA/ICdNQUlBJyA6IGxvY2FsQWdlbnQ/Lm5hbWUpXG5cbiAgcmV0dXJuIChcbiAgICA8U0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyPlxuICAgICAgPEFzc2lzdGFudEF2YXRhciAvPlxuICAgICAge2Rpc3BsYXlOYW1lICYmIDxTQ0Fzc2lzdGFudE5hbWU+e2Rpc3BsYXlOYW1lfTwvU0NBc3Npc3RhbnROYW1lPn1cbiAgICA8L1NDQXNzaXN0YW50TWVzc2FnZUhlYWRlcj5cbiAgKVxufVxuXG4vLyBFeHRyYWUgZWwgc2VnbWVudG8gZGUgdGFiIChkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSBkZWwgaHJlZiBwYXJhIGFicmlyIGVsIG1vZGFsIGNvbiBlbCB0YWIgY29ycmVjdG9cbmNvbnN0IGdldFRhYlNlZ21lbnRGcm9tSHJlZiA9IChocmVmOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBtYXRjaCA9IGhyZWYubWF0Y2goL1xcL3Rhc2tzXFwvXFxkK1xcLyhbXi8/XSspLylcbiAgcmV0dXJuIG1hdGNoICYmIC9eKGRldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpJC8udGVzdChtYXRjaFsxXSkgPyBtYXRjaFsxXSA6ICdkZXRhaWwnXG59XG5cbi8qKiBFeHRyYWUgbGFzIHRhcmVhcyBlbmxhemFkYXMgZW4gZWwgdGV4dG8gKFVSTHMgcXVlIGNvaW5jaWRlbiBjb24gVEFTS19VUkxfUkVHRVhfUEFUVEVSTikuICovXG5jb25zdCBleHRyYWN0VGFza3NGcm9tTWVzc2FnZSA9IChtZXNzYWdlOiBzdHJpbmcpOiBUYXNrSW5mb1tdID0+IHtcbiAgaWYgKCFtZXNzYWdlKSByZXR1cm4gW11cbiAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gIGNvbnN0IHRhc2tzOiBUYXNrSW5mb1tdID0gW11cbiAgY29uc3Qgc2VlbklkcyA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9IG51bGxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gIHdoaWxlICgobWF0Y2ggPSB0YXNrVXJsUmVnZXguZXhlYyhtZXNzYWdlKSkgIT09IG51bGwpIHtcbiAgICBjb25zdCB0YXNrSWQgPSBtYXRjaFsxXVxuICAgIGNvbnN0IHVybCA9IG1hdGNoWzBdXG4gICAgaWYgKCFzZWVuSWRzLmhhcyh0YXNrSWQpKSB7XG4gICAgICBzZWVuSWRzLmFkZCh0YXNrSWQpXG4gICAgICBjb25zdCBlc2NhcGVkVXJsID0gdXJsLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJylcbiAgICAgIGNvbnN0IG1hcmtkb3duTGlua1JlZ2V4ID0gbmV3IFJlZ0V4cChgXFxcXFsoW15cXFxcXV0rKVxcXFxdXFxcXCgke2VzY2FwZWRVcmx9XFxcXClgKVxuICAgICAgY29uc3QgbGlua01hdGNoID0gbWVzc2FnZS5tYXRjaChtYXJrZG93bkxpbmtSZWdleClcbiAgICAgIGNvbnN0IHRpdGxlID0gbGlua01hdGNoID8gbGlua01hdGNoWzFdIDogYFRhcmVhICMke3Rhc2tJZH1gXG4gICAgICB0YXNrcy5wdXNoKHsgaWQ6IHRhc2tJZCwgdGl0bGUsIHVybCB9KVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGFza3Ncbn1cblxuY29uc3QgaGFzVGFza0xpbmtzID0gKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4gPT4gZXh0cmFjdFRhc2tzRnJvbU1lc3NhZ2UodGV4dCkubGVuZ3RoID4gMFxuXG5jb25zdCBUQVNLX01FTlRJT05fTUFSS0VSX1JFID0gL1xcW1xcW21lbnRpb246dGFzazovaVxuY29uc3QgTUFJQV9UQVNLX01FTlRJT05fSFJFRl9SRSA9IC9tYWlhLW1lbnRpb246XFwvXFwvdGFza1xcLy9pXG5cbi8qKiBVUkxzIGRlIHRhcmVhIGVuIG1hcmtkb3duICsgbWFyY2Fkb3JlcyBbW21lbnRpb246dGFzazrigKZdXSArIGxpbmtzIG1haWEtbWVudGlvbiAobWlzbW8gYXNwZWN0byBxdWUgZW5sYWNlcyBkZWwgYWdlbnRlKS4gKi9cbmNvbnN0IGhhc1Rhc2tMaW5rc09yVGFza01lbnRpb25zID0gKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4gPT5cbiAgaGFzVGFza0xpbmtzKHRleHQpIHx8IFRBU0tfTUVOVElPTl9NQVJLRVJfUkUudGVzdCh0ZXh0KSB8fCBNQUlBX1RBU0tfTUVOVElPTl9IUkVGX1JFLnRlc3QodGV4dClcblxuLy8gQ29tcG9uZW50IGZvciB0YXNrIGxpbmtzIHRoYXQgdXNlcyB0aGUgdXNlVGFza1BhbmVsIGhvb2tcbmNvbnN0IFRhc2tMaW5rOiBGQzx7IGhyZWY6IHN0cmluZzsgdGFza0lkOiBzdHJpbmc7IGNoaWxkcmVuOiBSZWFjdE5vZGUgfT4gPSAoeyBocmVmLCB0YXNrSWQsIGNoaWxkcmVuIH0pID0+IHtcbiAgY29uc3QgdGFiU2VnbWVudCA9IGdldFRhYlNlZ21lbnRGcm9tSHJlZihocmVmKVxuICBjb25zdCB7IGJ1aWxkT3BlblRhc2sgfSA9IHVzZVRhc2tQYW5lbCh0YXNrSWQsIHRhYlNlZ21lbnQpXG4gIGNvbnN0IG9wZW5UYXNrID0gYnVpbGRPcGVuVGFzaygpXG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZTogUmVhY3QuTW91c2VFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4pID0+IHtcbiAgICAvLyBTaSBlcyBDbWQvQ3RybCArIGNsaWNrLCBkZWphciBxdWUgc2UgYWJyYSBlbiBudWV2YSBwZXN0YcOxYSAoY29tcG9ydGFtaWVudG8gcG9yIGRlZmVjdG8pXG4gICAgaWYgKGUubWV0YUtleSB8fCBlLmN0cmxLZXkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIG9wZW5UYXNrKClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDVGFza0xpbmsgaHJlZj17aHJlZn0gb25DbGljaz17aGFuZGxlQ2xpY2t9PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvU0NUYXNrTGluaz5cbiAgKVxufVxuXG4vLyBDdXN0b20gbGluayBjb21wb25lbnQgZm9yIFN0cmVhbWRvd246IHRhc2sgVVJMcyBvcGVuIHRoZSB0YXNrIHBhbmVsLCBvdGhlciBsaW5rcyByZW5kZXIgbm9ybWFsbHlcbnR5cGUgQ3VzdG9tTGlua1Byb3BzID0gUmVhY3QuQW5jaG9ySFRNTEF0dHJpYnV0ZXM8SFRNTEFuY2hvckVsZW1lbnQ+ICYgeyBub2RlPzogdW5rbm93biB9XG5jb25zdCBDdXN0b21MaW5rOiBGQzxDdXN0b21MaW5rUHJvcHM+ID0gKHsgaHJlZiwgY2hpbGRyZW4sIC4uLnJlc3QgfSkgPT4ge1xuICBpZiAoIWhyZWYgfHwgdHlwZW9mIGhyZWYgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxhIGhyZWY9e2hyZWZ9IHsuLi5yZXN0fT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9hPlxuICAgIClcbiAgfVxuICBjb25zdCBtZW50aW9uTm9kZSA9IHJlbmRlck1lbnRpb25MaW5rKGhyZWYsIGNoaWxkcmVuKVxuICBpZiAobWVudGlvbk5vZGUpIHJldHVybiBtZW50aW9uTm9kZSBhcyBSZWFjdC5SZWFjdEVsZW1lbnRcblxuICBjb25zdCB0YXNrTWF0Y2ggPSBocmVmLm1hdGNoKG5ldyBSZWdFeHAoVEFTS19VUkxfUkVHRVhfUEFUVEVSTikpXG4gIGlmICh0YXNrTWF0Y2gpIHtcbiAgICBjb25zdCB0YXNrSWQgPSB0YXNrTWF0Y2hbMV1cbiAgICByZXR1cm4gKFxuICAgICAgPFRhc2tMaW5rIGhyZWY9e2hyZWZ9IHRhc2tJZD17dGFza0lkfT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9UYXNrTGluaz5cbiAgICApXG4gIH1cbiAgcmV0dXJuIChcbiAgICA8YSBocmVmPXtocmVmfSB7Li4ucmVzdH0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9hPlxuICApXG59XG5cbi8qKiBTb2xvIGVzdGUgY29tcG9uZW50ZSByZS1yZW5kZXJpemEgY3VhbmRvIGNhbWJpYSBlbCB0ZXh0byBlbiBzdHJlYW1pbmcgKGxlZSBkZWwgY29udGV4dCkuICovXG5jb25zdCBTdHJlYW1pbmdNZXNzYWdlQm9keSA9IG1lbW8oXG4gIChwcm9wczoge1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGlzU3RyZWFtaW5nOiBib29sZWFuXG4gICAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICAgIGlzQXNzaXN0YW50OiBib29sZWFuXG4gICAgaXNGcm9udGVuZENhbmNlbGxlZD86IGJvb2xlYW5cbiAgICBhcHByb3ZhbD86IE1lc3NhZ2VJdGVtUHJvcHNbJ2FwcHJvdmFsJ11cbiAgICBpc0Vycm9yPzogYm9vbGVhblxuICAgIHNvdXJjZXM/OiBNZXNzYWdlSXRlbVByb3BzWydzb3VyY2VzJ11cbiAgICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdIHwgbnVsbFxuICAgIGNyZWF0ZUFnZW50Rm9sbG93VXA/OiB7IGFnZW50SWQ6IHN0cmluZyB9IHwgbnVsbFxuICAgIGhhbmRsZUZlZWRiYWNrQ2xpY2s6IChmOiBGZWVkYmFjaykgPT4gdm9pZFxuICAgIGRpc2FibGVGZWVkYmFjazogRmVlZGJhY2sgfCBudWxsXG4gICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrOiAobWVzc2FnZUlkOiBzdHJpbmcsIHN1Z2dlc3Rpb246IHN0cmluZykgPT4gdm9pZFxuICAgIHN1Z2dlc3Rpb25zRGlzYWJsZWQ/OiBib29sZWFuXG4gICAgbWVzc2FnZUlkOiBzdHJpbmdcbiAgICBpc0xhc3RNZXNzYWdlPzogYm9vbGVhblxuICB9KSA9PiB7XG4gICAgLy8gVGV4dG8gZGVsIHN0cmVhbTogc29sbyBzZSBsZWUgZGVsIHN0b3JlIGN1YW5kbyBlc3RlIG1lbnNhamUgZXMgZWxcbiAgICAvLyBxdWUgZXN0w6EgZW4gc3RyZWFtaW5nLiB1c2VTeW5jRXh0ZXJuYWxTdG9yZSBhw61zbGEgZWwgcmUtcmVuZGVyIGFcbiAgICAvLyBlc3RlIGNvbXBvbmVudGUsIHNpbiB0b2NhciBlbCByZXN0byBkZWwgw6FyYm9sLlxuICAgIGNvbnN0IHN0cmVhbWluZ1RleHQgPSB1c2VTdHJlYW1pbmdNZXNzYWdlKHByb3BzLmlzU3RyZWFtaW5nID8gcHJvcHMubWVzc2FnZUlkIDogbnVsbClcbiAgICBjb25zdCByYXdUZXh0ID0gcHJvcHMuaXNTdHJlYW1pbmcgPyBzdHJlYW1pbmdUZXh0IDogcHJvcHMubWVzc2FnZVxuICAgIC8vIFNtb290aCBzdHJlYW1pbmc6IGRlc2Fjb3BsYSBsYSBjYWRlbmNpYSBkZWwgYmFja2VuZCBkZWwgcmVuZGVyLlxuICAgIC8vIER1cmFudGUgZWwgc3RyZWFtaW5nIGxpYmVyYSBjaGFycyBhIHJpdG1vIGNvbnN0YW50ZSB2w61hIHJBRjsgY3VhbmRvXG4gICAgLy8gdGVybWluYSwgbXVlc3RyYSBlbCB0ZXh0byBmaW5hbCBhbCBpbnN0YW50ZSAoc2luIGFuaW1hY2nDs24gcmVzaWR1YWwpLlxuICAgIC8vIExvcyBkZWZhdWx0cyBkZWwgaG9vayBzZSBhanVzdGFyb24gZW1ww61yaWNhbWVudGUgZW4gc3RhZ2luZzsgYXVuIGFzw61cbiAgICAvLyBzZSBleHBvbmVuIGZsYWdzIGRlIHJ1bnRpbWUgKHdpbmRvdy4qKSBwYXJhIHBvZGVyIHR1bmVhciBzaW4gcmVjb21waWxhclxuICAgIC8vIHNpIGFsZ8O6biBiYWNrZW5kIHByZXNlbnRhIHVuYSBjYWRlbmNpYSBtdXkgZGlzdGludGEgZW4gcHJvZHVjY2nDs24uXG4gICAgLy8gICB3aW5kb3cuc3RyZWFtQWRhcHQgPSBmYWxzZSAgICAgIC8vIGRlc2FjdGl2YSBhZGFwdGFjacOzbiBhbCBiYWNrZW5kXG4gICAgLy8gICB3aW5kb3cuc3RyZWFtQnVmZmVyTXMgPSA2MDAgICAgIC8vIGNvbGNow7NuIG9iamV0aXZvIChtcylcbiAgICAvLyAgIHdpbmRvdy5zdHJlYW1MYWdNcyA9IDQ1MCAgICAgICAgLy8gbGFnIG3DoXhpbW8gYmFzZSAobXMpXG4gICAgLy8gICB3aW5kb3cuc3RyZWFtTWluQnVmZmVyID0gNzAgICAgIC8vIHBpc28gZGVsIGNvbGNow7NuIGVuIGNoYXJzXG4gICAgLy8gICB3aW5kb3cuc3RyZWFtV2FybXVwTXMgPSA0MDAgICAgIC8vIHdhcm11cCBpbmljaWFsIChtcylcbiAgICBjb25zdCB3aW5GbGFncyA9XG4gICAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/ICh3aW5kb3cgYXMgdW5rbm93biBhcyB7XG4gICAgICAgICAgICBzdHJlYW1BZGFwdD86IGJvb2xlYW5cbiAgICAgICAgICAgIHN0cmVhbUJ1ZmZlck1zPzogbnVtYmVyXG4gICAgICAgICAgICBzdHJlYW1MYWdNcz86IG51bWJlclxuICAgICAgICAgICAgc3RyZWFtTWluQnVmZmVyPzogbnVtYmVyXG4gICAgICAgICAgICBzdHJlYW1XYXJtdXBNcz86IG51bWJlclxuICAgICAgICAgIH0pXG4gICAgICAgIDoge31cbiAgICBjb25zdCBkaXNwbGF5VGV4dCA9IHVzZVNtb290aFN0cmVhbVRleHQocmF3VGV4dCwge1xuICAgICAgZW5hYmxlZDogISFwcm9wcy5pc1N0cmVhbWluZyxcbiAgICAgIG1heENoYXJzUGVyRnJhbWU6IDI0LFxuICAgICAgc25hcFRvV29yZEJvdW5kYXJ5OiB0cnVlLFxuICAgICAgLi4uKHdpbkZsYWdzLnN0cmVhbUxhZ01zICE9IG51bGwgJiYgeyB0YXJnZXRMYWdNczogd2luRmxhZ3Muc3RyZWFtTGFnTXMgfSksXG4gICAgICAuLi4od2luRmxhZ3Muc3RyZWFtQWRhcHQgIT0gbnVsbCAmJiB7IGFkYXB0VG9CYWNrZW5kUmF0ZTogd2luRmxhZ3Muc3RyZWFtQWRhcHQgfSksXG4gICAgICAuLi4od2luRmxhZ3Muc3RyZWFtQnVmZmVyTXMgIT0gbnVsbCAmJiB7IHRhcmdldEJ1ZmZlck1zOiB3aW5GbGFncy5zdHJlYW1CdWZmZXJNcyB9KSxcbiAgICAgIC4uLih3aW5GbGFncy5zdHJlYW1NaW5CdWZmZXIgIT0gbnVsbCAmJiB7IG1pbkJ1ZmZlckNoYXJzOiB3aW5GbGFncy5zdHJlYW1NaW5CdWZmZXIgfSksXG4gICAgICAuLi4od2luRmxhZ3Muc3RyZWFtV2FybXVwTXMgIT0gbnVsbCAmJiB7IHdhcm11cE1zOiB3aW5GbGFncy5zdHJlYW1XYXJtdXBNcyB9KSxcbiAgICB9KVxuICAgIGNvbnN0IGNyZWF0ZUFnZW50QWN0aW9uc0FnZW50SWQgPSBwcm9wcy5jcmVhdGVBZ2VudEZvbGxvd1VwPy5hZ2VudElkXG5cbiAgICBpZiAoIWRpc3BsYXlUZXh0ICYmICFwcm9wcy5pc1N0cmVhbWluZykgcmV0dXJuIG51bGxcbiAgICBjb25zdCBoYXNNZW50aW9ucyA9IGhhc0lubGluZU1hcmtlcnMoZGlzcGxheVRleHQpXG4gICAgY29uc3QgbWVudGlvbk5vZGVzID0gaGFzTWVudGlvbnMgPyByZW5kZXJUZXh0V2l0aE1lbnRpb25zKGRpc3BsYXlUZXh0KSA6IG51bGxcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPFNDQ0FJTWVzc2FnZVdyYXBwZXJcbiAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtwcm9wcy5pc0N1cnJlbnRVc2VyfVxuICAgICAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ9e3Byb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWR9XG4gICAgICAgICAgY2xhc3NOYW1lPXtoYXNUYXNrTGlua3NPclRhc2tNZW50aW9ucyhkaXNwbGF5VGV4dCkgPyAnaGFzLXRhc2stbGlua3MnIDogJyd9XG4gICAgICAgID5cbiAgICAgICAgICB7aGFzTWVudGlvbnMgJiYgbWVudGlvbk5vZGVzID8gKFxuICAgICAgICAgICAgLy8gU2kgaGF5IG1lbnRpb25zLCByZW5kZXJpemFyIGRpcmVjdGFtZW50ZSAoc2luIG1hcmtkb3duIGVuIGVsIG1pc21vIHDDoXJyYWZvKVxuICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZGlzcGxheTogJ2lubGluZScgfX0+e21lbnRpb25Ob2Rlc308L3NwYW4+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIC8vIFNpbiBtZW50aW9ucywgcGFzYXIgYSBTdHJlYW1kb3duIHBhcmEgbWFya2Rvd24gc3VwcG9ydFxuICAgICAgICAgICAgPFN0cmVhbWRvd25cbiAgICAgICAgICAgICAgcGx1Z2lucz17eyBjb2RlIH19XG4gICAgICAgICAgICAgIHJlaHlwZVBsdWdpbnM9e01BSUFfU1RSRUFNRE9XTl9SRUhZUEVfUExVR0lOU31cbiAgICAgICAgICAgICAgY29tcG9uZW50cz17eyBhOiBDdXN0b21MaW5rIH0gYXMgUGFyYW1ldGVyczx0eXBlb2YgU3RyZWFtZG93bj5bMF1bJ2NvbXBvbmVudHMnXX1cbiAgICAgICAgICAgICAgbGlua1NhZmV0eT17eyBlbmFibGVkOiBmYWxzZSB9fVxuICAgICAgICAgICAgICBpc0FuaW1hdGluZz17ISFwcm9wcy5pc1N0cmVhbWluZ31cbiAgICAgICAgICAgICAgc2hpa2lUaGVtZT17WydnaXRodWItbGlnaHQnLCAnZ2l0aHViLWxpZ2h0J119XG4gICAgICAgICAgICAgIGNvbnRyb2xzPXt7IHRhYmxlOiBmYWxzZSwgY29kZTogZmFsc2UgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2Rpc3BsYXlUZXh0fVxuICAgICAgICAgICAgPC9TdHJlYW1kb3duPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NDQUlNZXNzYWdlV3JhcHBlcj5cbiAgICAgICAge3Byb3BzLmlzQXNzaXN0YW50ICYmICFwcm9wcy5pc0Vycm9yICYmICFwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkICYmICFwcm9wcy5hcHByb3ZhbCAmJiAhcHJvcHMuaXNTdHJlYW1pbmcgJiYgKFxuICAgICAgICAgIDxNZXNzYWdlRmVlZGJhY2tcbiAgICAgICAgICAgIGNvbnRlbnQ9e2Rpc3BsYXlUZXh0fVxuICAgICAgICAgICAgc291cmNlcz17cHJvcHMuc291cmNlc31cbiAgICAgICAgICAgIGhhbmRsZUZlZWRiYWNrPXtwcm9wcy5oYW5kbGVGZWVkYmFja0NsaWNrfVxuICAgICAgICAgICAgZGlzYWJsZUZlZWRiYWNrPXtwcm9wcy5kaXNhYmxlRmVlZGJhY2t9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge3Byb3BzLmlzQXNzaXN0YW50ICYmICFwcm9wcy5pc0Vycm9yICYmICFwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkICYmICFwcm9wcy5hcHByb3ZhbCAmJiAoXG4gICAgICAgICAgPENoYXRBSVN1Z2dlc3Rpb25zXG4gICAgICAgICAgICBzdWdnZXN0aW9ucz17cHJvcHMuc3VnZ2VzdGlvbnMgfHwgW119XG4gICAgICAgICAgICBvblNlbGVjdFN1Z2dlc3Rpb249e3N1Z2dlc3Rpb24gPT4gcHJvcHMuaGFuZGxlU3VnZ2VzdGlvbkNsaWNrKHByb3BzLm1lc3NhZ2VJZCwgc3VnZ2VzdGlvbil9XG4gICAgICAgICAgICBkaXNhYmxlZD17cHJvcHMuc3VnZ2VzdGlvbnNEaXNhYmxlZH1cbiAgICAgICAgICAgIGhpZGRlbj17ISFwcm9wcy5pc1N0cmVhbWluZyB8fCAhcHJvcHMuaXNMYXN0TWVzc2FnZSB8fCAhIXByb3BzLnN1Z2dlc3Rpb25zRGlzYWJsZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge3Byb3BzLmlzQXNzaXN0YW50ICYmXG4gICAgICAgICAgIXByb3BzLmlzRXJyb3IgJiZcbiAgICAgICAgICAhcHJvcHMuaXNGcm9udGVuZENhbmNlbGxlZCAmJlxuICAgICAgICAgICFwcm9wcy5hcHByb3ZhbCAmJlxuICAgICAgICAgICEhY3JlYXRlQWdlbnRBY3Rpb25zQWdlbnRJZCAmJiAoXG4gICAgICAgICAgICA8Q2hhdEFJQ3JlYXRlQWdlbnRBY3Rpb25zXG4gICAgICAgICAgICAgIGFnZW50SWQ9e2NyZWF0ZUFnZW50QWN0aW9uc0FnZW50SWR9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtwcm9wcy5zdWdnZXN0aW9uc0Rpc2FibGVkfVxuICAgICAgICAgICAgICBoaWRkZW49eyEhcHJvcHMuaXNTdHJlYW1pbmcgfHwgIXByb3BzLmlzTGFzdE1lc3NhZ2UgfHwgISFwcm9wcy5zdWdnZXN0aW9uc0Rpc2FibGVkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgPC8+XG4gICAgKVxuICB9XG4pXG5cbmNvbnN0IE1lc3NhZ2VJdGVtID0gbWVtbygocHJvcHM6IE1lc3NhZ2VJdGVtUHJvcHMpID0+IHtcbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIHVzZXIsXG4gICAgbWVzc2FnZSxcbiAgICBpc1N0cmVhbWluZyxcbiAgICBpc0Vycm9yLFxuICAgIGF1dGhVc2VyLFxuICAgIG9wdGlvbnMsXG4gICAgaXNDaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZVNlbGVjdE9wdGlvbixcbiAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2ssXG4gICAgaGFuZGxlRmVlZGJhY2ssXG4gICAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbixcbiAgICBkaXNhYmxlRmVlZGJhY2ssXG4gICAgcm9sZSxcbiAgICBzb3VyY2VzLFxuICAgIGF0dGFjaG1lbnRzLFxuICAgIGFwcHJvdmFsLFxuICAgIGFwcHJvdmFsU3RhdHVzLFxuICAgIHN1Z2dlc3Rpb25zLFxuICAgIGNyZWF0ZUFnZW50Rm9sbG93VXAsXG4gICAgaGFzU2VsZWN0ZWRTdWdnZXN0aW9uLFxuICAgIGlzTGFzdE1lc3NhZ2UsXG4gICAgc3ViYWdlbnROYW1lLFxuICB9ID0gcHJvcHNcblxuICBjb25zdCBbcHJldmlld0F0dGFjaG1lbnQsIHNldFByZXZpZXdBdHRhY2htZW50XSA9IHVzZVN0YXRlPEF0dGFjaG1lbnRGaWxlIHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNDdXJyZW50VXNlciA9IHJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5VU0VSIHx8IHVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKClcbiAgY29uc3QgaXNBc3Npc3RhbnQgPSByb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5UIHx8IHVzZXIuaWQgPT09ICdhc3Npc3RhbnQnXG4gIC8vIE1pZW50cmFzIGVsIGFnZW50ZSBcInBpZW5zYVwiIChzdHJlYW1pbmcgc2luIHRleHRvIGHDum4pIG9jdWx0YW1vcyBlbCBoZWFkZXIuXG4gIC8vIEVuIGN1YW50byBlbXBpZXphIGEgZXNjcmliaXIsIGVsIGF2YXRhciB5IGVsIG5vbWJyZSB2dWVsdmVuIGEgbW9zdHJhcnNlLlxuICBjb25zdCBzdHJlYW1pbmdUZXh0ID0gdXNlU3RyZWFtaW5nTWVzc2FnZShpc1N0cmVhbWluZyA/IGlkIDogbnVsbClcbiAgY29uc3QgaXNUaGlua2luZyA9ICEhaXNTdHJlYW1pbmcgJiYgIXN0cmVhbWluZ1RleHRcbiAgY29uc3QgbWVzc2FnZUF0dGFjaG1lbnRzID1cbiAgICBhdHRhY2htZW50cyAmJiBhdHRhY2htZW50cy5sZW5ndGggPiAwXG4gICAgICA/IGF0dGFjaG1lbnRzXG4gICAgICA6ICFpc0Fzc2lzdGFudCAmJiBBcnJheS5pc0FycmF5KHNvdXJjZXMpXG4gICAgICAgID8gKHNvdXJjZXMgYXMgQXR0YWNobWVudEZpbGVbXSlcbiAgICAgICAgOiBbXVxuXG4gIGNvbnN0IGhhbmRsZUF0dGFjaG1lbnRDbGljayA9IChhdHRhY2htZW50OiBBdHRhY2htZW50RmlsZSkgPT4ge1xuICAgIC8vIFBlcm1pdGlyIHByZXZpc3VhbGl6YWNpw7NuIHNpIHRpZW5lIGFyY2hpdm8gbG9jYWwgbyBVUkxzIGRlbCBiYWNrZW5kXG4gICAgaWYgKFxuICAgICAgYXR0YWNobWVudC5maWxlIGluc3RhbmNlb2YgRmlsZSB8fFxuICAgICAgYXR0YWNobWVudC5vcmlnaW5hbEZpbGUgaW5zdGFuY2VvZiBGaWxlIHx8XG4gICAgICBhdHRhY2htZW50LnVybF90aHVtYm5haWwgfHxcbiAgICAgIGF0dGFjaG1lbnQudXJsX29yaWdpbmFsIHx8XG4gICAgICBhdHRhY2htZW50LnVybF9maWxlXG4gICAgKSB7XG4gICAgICBzZXRQcmV2aWV3QXR0YWNobWVudChhdHRhY2htZW50KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlUHJldmlldyA9ICgpID0+IHtcbiAgICBzZXRQcmV2aWV3QXR0YWNobWVudChudWxsKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQXR0YWNobWVudERvd25sb2FkID0gYXN5bmMgKGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnRGaWxlKSA9PiB7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gYXR0YWNobWVudC5uYW1lLmluY2x1ZGVzKCcuJykgPyAnJyA6IGAuJHthdHRhY2htZW50LnR5cGV9YFxuICAgIGNvbnN0IGZpbGVOYW1lID0gYCR7YXR0YWNobWVudC5uYW1lfSR7ZXh0ZW5zaW9ufWBcbiAgICBjb25zdCBmaWxlVXJsID0gYXR0YWNobWVudC51cmxfb3JpZ2luYWwgfHwgYXR0YWNobWVudC51cmxfZmlsZSB8fCBhdHRhY2htZW50LnVybF90aHVtYm5haWxcblxuICAgIHRyeSB7XG4gICAgICBsZXQgYmxvYlVybDogc3RyaW5nIHwgbnVsbCA9IG51bGxcblxuICAgICAgaWYgKGZpbGVVcmwpIHtcbiAgICAgICAgY29uc3QgZG93bmxvYWRlZEZpbGUgPSBhd2FpdCBkb3dubG9hZEZpbGVGcm9tVXJsKGZpbGVVcmwsIGZpbGVOYW1lLCBhdHRhY2htZW50LnR5cGUpXG4gICAgICAgIGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGRvd25sb2FkZWRGaWxlKVxuICAgICAgfSBlbHNlIGlmIChhdHRhY2htZW50LmZpbGUgaW5zdGFuY2VvZiBGaWxlKSB7XG4gICAgICAgIGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGF0dGFjaG1lbnQuZmlsZSlcbiAgICAgIH1cblxuICAgICAgaWYgKCFibG9iVXJsKSByZXR1cm5cblxuICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKVxuICAgICAgbGluay5ocmVmID0gYmxvYlVybFxuICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lXG4gICAgICBsaW5rLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluaylcbiAgICAgIGxpbmsuY2xpY2soKVxuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKVxuICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGJsb2JVcmwpXG4gICAgICB9LCAxMDApXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBkb3dubG9hZCBhdHRhY2htZW50JywgZXJyb3IpXG4gICAgfVxuICB9XG5cbiAgaWYgKGlzQ2hhbmdlUHJvamVjdCAmJiBvcHRpb25zKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxNZXNzYWdlV3JhcHBlciBrZXk9e2lkfSBpc0N1cnJlbnRVc2VyPXtpc0N1cnJlbnRVc2VyfSBkYXRhLW1lc3NhZ2UtaWQ9e2lkfSBoYXNGZWVkYmFjaz17ZmFsc2V9PlxuICAgICAgICA8U0NNZXNzYWdlSXRlbVdyYXBwZXIgJGlzQXNzaXN0YW50PXtpc0Fzc2lzdGFudH0+XG4gICAgICAgICAge2lzQXNzaXN0YW50ICYmICFpc1RoaW5raW5nICYmIDxBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIHN1YmFnZW50TmFtZT17c3ViYWdlbnROYW1lfSAvPn1cbiAgICAgICAgICA8TWVzc2FnZUNvbnRlbnRXcmFwcGVyXG4gICAgICAgICAgICBpc0NoYW5nZVByb2plY3Q9e2lzQ2hhbmdlUHJvamVjdH1cbiAgICAgICAgICAgIG1lc3NhZ2U9e21lc3NhZ2V9XG4gICAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtpc0N1cnJlbnRVc2VyfVxuICAgICAgICAgICAgaXNFcnJvcj17aXNFcnJvcn1cbiAgICAgICAgICAgIG1lc3NhZ2VFeHRyYUNvbnRlbnQ9ezxNZXNzYWdlT3B0aW9ucyBvcHRpb25zPXtvcHRpb25zIGFzIGFueX0gaGFuZGxlU2VsZWN0T3B0aW9uPXtoYW5kbGVTZWxlY3RPcHRpb259IC8+fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU0NNZXNzYWdlSXRlbVdyYXBwZXI+XG4gICAgICA8L01lc3NhZ2VXcmFwcGVyPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUZlZWRiYWNrQ2xpY2sgPSAoZmVlZGJhY2s6IEZlZWRiYWNrKSA9PiB7XG4gICAgY29uc3Qgc2Vzc2lvbklkID0gaWRcbiAgICAgIC5zcGxpdCgnLScpXG4gICAgICAuZmlsdGVyKHF1ZXN0aW9uSWQgPT4gcXVlc3Rpb25JZCAhPT0gJ2Fuc3dlcicpXG4gICAgICAuam9pbignLScpXG4gICAgaGFuZGxlRmVlZGJhY2s/LihmZWVkYmFjaywgc2Vzc2lvbklkKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NNZXNzYWdlSXRlbVdyYXBwZXIgJGlzQXNzaXN0YW50PXtpc0Fzc2lzdGFudH0+XG4gICAgICB7aXNBc3Npc3RhbnQgJiYgIWlzVGhpbmtpbmcgJiYgPEFzc2lzdGFudE1lc3NhZ2VIZWFkZXIgc3ViYWdlbnROYW1lPXtzdWJhZ2VudE5hbWV9IC8+fVxuICAgICAgPFNDTWVzc2FnZUl0ZW1Jbm5lcj5cbiAgICAgICAgeyEhbWVzc2FnZUF0dGFjaG1lbnRzLmxlbmd0aCAmJiAoXG4gICAgICAgICAgPFNDQXR0YWNobWVudHNSb3cgJGlzQXNzaXN0YW50PXtpc0Fzc2lzdGFudH0+XG4gICAgICAgICAgICB7bWVzc2FnZUF0dGFjaG1lbnRzLm1hcCgoYXR0YWNobWVudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgLy8gRGV0ZWN0YXIgc2kgZXMgdW4gYXJjaGl2byBkZSBhdWRpb1xuICAgICAgICAgICAgICBjb25zdCBhdHRhY2htZW50VHlwZSA9IGF0dGFjaG1lbnQ/LnR5cGU/LnRvTG93ZXJDYXNlKCkgfHwgJydcbiAgICAgICAgICAgICAgY29uc3QgYXR0YWNobWVudE5hbWUgPSBhdHRhY2htZW50Py5uYW1lPy50b0xvd2VyQ2FzZSgpIHx8ICcnXG4gICAgICAgICAgICAgIGNvbnN0IGlzQXVkaW9GaWxlID1cbiAgICAgICAgICAgICAgICBhdHRhY2htZW50VHlwZS5zdGFydHNXaXRoKCdhdWRpby8nKSB8fFxuICAgICAgICAgICAgICAgIFsnZmxhYycsICdtNGEnLCAnbXAzJywgJ21wNCcsICdvZ2EnLCAnb2dnJywgJ3dhdicsICd3ZWJtJ10uaW5jbHVkZXMoYXR0YWNobWVudFR5cGUpIHx8XG4gICAgICAgICAgICAgICAgWycuZmxhYycsICcubTRhJywgJy5tcDMnLCAnLm1wNCcsICcub2dhJywgJy5vZ2cnLCAnLndhdicsICcud2VibSddLnNvbWUoZXh0ID0+XG4gICAgICAgICAgICAgICAgICBhdHRhY2htZW50TmFtZS5lbmRzV2l0aChleHQpXG4gICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgIGlmIChpc0F1ZGlvRmlsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiA8QXR0YWNobWVudENhcmRBdWRpbyBrZXk9e2Ake2F0dGFjaG1lbnQuaWR9LSR7YXR0YWNobWVudC5uYW1lfWB9IGF0dGFjaG1lbnQ9e2F0dGFjaG1lbnR9IC8+XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxBdHRhY2htZW50Q2FyZFxuICAgICAgICAgICAgICAgICAga2V5PXtgJHthdHRhY2htZW50LmlkfS0ke2F0dGFjaG1lbnQubmFtZX1gfVxuICAgICAgICAgICAgICAgICAgYXR0YWNobWVudD17YXR0YWNobWVudH1cbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uSW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgb25Eb3dubG9hZD17KCkgPT4gaGFuZGxlQXR0YWNobWVudERvd25sb2FkKGF0dGFjaG1lbnQpfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlQXR0YWNobWVudENsaWNrKGF0dGFjaG1lbnQpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvU0NBdHRhY2htZW50c1Jvdz5cbiAgICAgICAgKX1cbiAgICAgICAgeyghIW1lc3NhZ2UgfHwgaXNTdHJlYW1pbmcpICYmICEoaXNBc3Npc3RhbnQgJiYgISFtZXNzYWdlQXR0YWNobWVudHMubGVuZ3RoKSAmJiAoXG4gICAgICAgICAgPFN0cmVhbWluZ01lc3NhZ2VCb2R5XG4gICAgICAgICAgICBtZXNzYWdlPXttZXNzYWdlID8/ICcnfVxuICAgICAgICAgICAgaXNTdHJlYW1pbmc9eyEhaXNTdHJlYW1pbmd9XG4gICAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtpc0N1cnJlbnRVc2VyfVxuICAgICAgICAgICAgaXNBc3Npc3RhbnQ9e2lzQXNzaXN0YW50fVxuICAgICAgICAgICAgaXNGcm9udGVuZENhbmNlbGxlZD17cHJvcHMuaXNGcm9udGVuZENhbmNlbGxlZH1cbiAgICAgICAgICAgIGFwcHJvdmFsPXthcHByb3ZhbH1cbiAgICAgICAgICAgIGlzRXJyb3I9e2lzRXJyb3J9XG4gICAgICAgICAgICBzb3VyY2VzPXtzb3VyY2VzfVxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM9e3N1Z2dlc3Rpb25zfVxuICAgICAgICAgICAgY3JlYXRlQWdlbnRGb2xsb3dVcD17Y3JlYXRlQWdlbnRGb2xsb3dVcH1cbiAgICAgICAgICAgIGhhbmRsZUZlZWRiYWNrQ2xpY2s9e2hhbmRsZUZlZWRiYWNrQ2xpY2t9XG4gICAgICAgICAgICBkaXNhYmxlRmVlZGJhY2s9e2Rpc2FibGVGZWVkYmFjayA/PyBudWxsfVxuICAgICAgICAgICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrPXtoYW5kbGVTdWdnZXN0aW9uQ2xpY2t9XG4gICAgICAgICAgICBzdWdnZXN0aW9uc0Rpc2FibGVkPXshIXByb3BzLmlzU3RyZWFtaW5nIHx8ICEhaGFzU2VsZWN0ZWRTdWdnZXN0aW9ufVxuICAgICAgICAgICAgbWVzc2FnZUlkPXtpZH1cbiAgICAgICAgICAgIGlzTGFzdE1lc3NhZ2U9e2lzTGFzdE1lc3NhZ2V9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge2FwcHJvdmFsICYmIGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucyAmJiAoXG4gICAgICAgICAgPFNDQXBwcm92YWxBY3Rpb25zQ29sdW1uPlxuICAgICAgICAgICAgPEFwcHJvdmFsQm94XG4gICAgICAgICAgICAgIGFjdGlvbnM9e2FwcHJvdmFsLnBlbmRpbmdfYWN0aW9uc31cbiAgICAgICAgICAgICAgc3RhdHVzPXthcHByb3ZhbFN0YXR1c31cbiAgICAgICAgICAgICAgb25BcHByb3ZlPXt0aHJlYWRJZHMgPT4gaGFuZGxlQXBwcm92YWxEZWNpc2lvbih0aHJlYWRJZHMsICdhcHByb3ZlJyl9XG4gICAgICAgICAgICAgIG9uUmVqZWN0PXt0aHJlYWRJZHMgPT4gaGFuZGxlQXBwcm92YWxEZWNpc2lvbih0aHJlYWRJZHMsICdyZWplY3QnKX1cbiAgICAgICAgICAgICAgaXNQcm9qZWN0RGVsZXRlZD17cHJvcHMucHJvamVjdE1ldGFkYXRhPy5pc19kZWxldGVkID09PSB0cnVlfVxuICAgICAgICAgICAgICBpc0V4cGFuZGVkPXtwcm9wcy5leHBhbmRlZH1cbiAgICAgICAgICAgICAgaGl0bEluc3RhbmNlSWQ9e2FwcHJvdmFsLm9yaWdpbmFsX3RocmVhZF9pZH1cbiAgICAgICAgICAgICAgd2FybmluZ01lc3NhZ2U9e2FwcHJvdmFsLndhcm5pbmdfbWVzc2FnZX1cbiAgICAgICAgICAgICAgbWFudWFsQXBwcm92YWxEZXRlY3RlZD17YXBwcm92YWwubWFudWFsX2FwcHJvdmFsX2RldGVjdGVkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NDQXBwcm92YWxBY3Rpb25zQ29sdW1uPlxuICAgICAgICApfVxuICAgICAgPC9TQ01lc3NhZ2VJdGVtSW5uZXI+XG4gICAgICA8QXR0YWNobWVudFByZXZpZXdNb2RhbFxuICAgICAgICBpc09wZW49eyEhcHJldmlld0F0dGFjaG1lbnR9XG4gICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlUHJldmlld31cbiAgICAgICAgYXR0YWNobWVudD17cHJldmlld0F0dGFjaG1lbnR9XG4gICAgICAvPlxuICAgIDwvU0NNZXNzYWdlSXRlbVdyYXBwZXI+XG4gIClcbn0pXG5cbmNvbnN0IENoYXRBSU1lc3NhZ2VzSW5uZXIgPSAoe1xuICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gIGluaXRpYWxDaGF0SWQsXG4gIG9uRXJyb3IsXG4gIG9uU2VuZE1lc3NhZ2VSZWFkeSxcbiAgb25TY3JvbGxUb0JvdHRvbSxcbiAgYXR0YWNobWVudHMsXG4gIGFnZW50cyxcbiAgZXhwYW5kZWQsXG59OiBDaGF0QUlNZXNzYWdlc1Byb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IHsgaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZSwgYWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgYXV0aFVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgbWVzc2FnZXNSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGNoYXRJbml0aWFsaXplZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgaXNMb2FkaW5nTW9yZVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgdXNlclNjcm9sbGluZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3Qgc2Nyb2xsVGhyZXNob2xkUmVmID0gdXNlUmVmKDM5KVxuICBjb25zdCBsYXN0U2Nyb2xsVG9wUmVmID0gdXNlUmVmKDApXG4gIGNvbnN0IHNob3dTY3JvbGxUb0JvdHRvbVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3Qgc2Nyb2xsUmFmUmVmID0gdXNlUmVmPG51bWJlciB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzaG93U2Nyb2xsVG9Cb3R0b20sIHNldFNob3dTY3JvbGxUb0JvdHRvbV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHMsIHNldFNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHNdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KHt9KVxuXG4gIGNvbnN0IHtcbiAgICBtZXNzYWdlcyxcbiAgICBsb2FkaW5nTWVzc2FnZXMsXG4gICAgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLFxuICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgYWN0aXZlTG9hZGluZ3MsXG4gICAgc2VuZE1lc3NhZ2UsXG4gICAgY2hhbmdlUHJvamVjdCxcbiAgICBoYW5kbGVGZWVkYmFjayxcbiAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uLFxuICAgIGluaXRpYWxpemVDaGF0LFxuICAgIGhhbmRsZVNjcm9sbCxcbiAgICBzdG9wR2VuZXJhdGlvbixcbiAgfSA9IHVzZUNoYXRNYW5hZ2VyKHtcbiAgICBjaGF0SWQ6IGluaXRpYWxDaGF0SWQgfHwgdW5kZWZpbmVkLFxuICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICBvbkVycm9yLFxuICAgIGF0dGFjaG1lbnRzLFxuICAgIGFnZW50cyxcbiAgfSlcblxuICBjb25zdCBoYW5kbGVTZWxlY3RPcHRpb24gPSB1c2VDYWxsYmFjayhcbiAgICAob3B0aW9uOiBQcm9qZWN0KSA9PiB7XG4gICAgICBjaGFuZ2VQcm9qZWN0KG9wdGlvbilcbiAgICB9LFxuICAgIFtjaGFuZ2VQcm9qZWN0XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrID0gdXNlQ2FsbGJhY2soXG4gICAgKG1lc3NhZ2VJZDogc3RyaW5nLCBzdWdnZXN0aW9uOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICghc3VnZ2VzdGlvbj8udHJpbSgpKSByZXR1cm5cbiAgICAgIGlmIChzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzW21lc3NhZ2VJZF0pIHJldHVyblxuICAgICAgY29uc3QgaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50ID0gYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCcgJiYgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYWdlbnQ/Lm5hbWUgfHwgJycpXG4gICAgICBldmVudChFVkVOVFMuYWlDaGF0U3VnZ2VzdGVkQW5zd2VyLCB7XG4gICAgICAgIGFnZW50X3R5cGU6IGlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCA/ICdtYXJrZXRwbGFjZScgOiBhZ2VudD8udHlwZSxcbiAgICAgIH0pXG4gICAgICBzZXRTZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzKHByZXYgPT4gKHsgLi4ucHJldiwgW21lc3NhZ2VJZF06IHRydWUgfSkpXG4gICAgICBzZW5kTWVzc2FnZShzdWdnZXN0aW9uKVxuICAgIH0sXG4gICAgW3NlbmRNZXNzYWdlLCBzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzLCBldmVudCwgYWdlbnQ/LmVudGl0eSwgYWdlbnQ/Lm5hbWUsIGFnZW50Py50eXBlXVxuICApXG5cbiAgLyoqXG4gICAqIEFjdHVhbGl6YSBlbCBlc3RhZG8gZGVsIGJvdMOzbiBcInNjcm9sbCB0byBib3R0b21cIiBjb21wYXJhbmRvIGxhIHBvc2ljacOzblxuICAgKiBhY3R1YWwgZGVsIHNjcm9sbCBjb24gZWwgZm9uZG8uIFVzYSB1biByZWYgcGFyYSBldml0YXIgYHNldFN0YXRlYCBjdWFuZG9cbiAgICogZWwgdmFsb3Igbm8gY2FtYmlhLlxuICAgKi9cbiAgY29uc3QgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBlbCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICBpZiAoIWVsKSByZXR1cm5cbiAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IGVsXG4gICAgY29uc3QgZGlzdGFuY2VGcm9tQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0XG4gICAgY29uc3Qgc2hvdWxkU2hvdyA9IGRpc3RhbmNlRnJvbUJvdHRvbSA+IDUwXG4gICAgaWYgKHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ICE9PSBzaG91bGRTaG93KSB7XG4gICAgICBzaG93U2Nyb2xsVG9Cb3R0b21SZWYuY3VycmVudCA9IHNob3VsZFNob3dcbiAgICAgIHNldFNob3dTY3JvbGxUb0JvdHRvbShzaG91bGRTaG93KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLyoqXG4gICAqIFNjcm9sbCBpbm1lZGlhdG8gYWwgZm9uZG8gKGRlbnRybyBkZSByQUYgcGFyYSBjb29yZGluYXIgY29uIGVsIHBhaW50KVxuICAgKiB5IGFjdHVhbGl6YSBsYSB2aXNpYmlsaWRhZCBkZWwgYm90w7NuLiBSZXNwZXRhIGBza2lwSWZVc2VyU2Nyb2xsaW5nYCBwYXJhXG4gICAqIG5vIHNvYnJlc2NyaWJpciBlbCBzY3JvbGwgbWFudWFsIGRlbCB1c3VhcmlvIGR1cmFudGUgZWwgc3RyZWFtaW5nLlxuICAgKi9cbiAgY29uc3Qgc2Nyb2xsVG9Cb3R0b21SYWYgPSB1c2VDYWxsYmFjayhcbiAgICAob3B0czogeyBza2lwSWZVc2VyU2Nyb2xsaW5nPzogYm9vbGVhbjsgZGVsYXlNcz86IG51bWJlciB9ID0ge30pID0+IHtcbiAgICAgIGNvbnN0IHsgc2tpcElmVXNlclNjcm9sbGluZyA9IGZhbHNlLCBkZWxheU1zID0gMCB9ID0gb3B0c1xuICAgICAgY29uc3QgcnVuID0gKCkgPT4ge1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVsID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgICAgIGlmICghZWwpIHJldHVyblxuICAgICAgICAgIGlmIChza2lwSWZVc2VyU2Nyb2xsaW5nICYmIHVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgICAgZWwuc2Nyb2xsVG9wID0gZWwuc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eSgpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBpZiAoZGVsYXlNcyA+IDApIHNldFRpbWVvdXQocnVuLCBkZWxheU1zKVxuICAgICAgZWxzZSBydW4oKVxuICAgIH0sXG4gICAgW3VwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHldXG4gIClcblxuICBjb25zdCBoYW5kbGVDbGlja1Njcm9sbFRvQm90dG9tID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghbWVzc2FnZXNSZWYuY3VycmVudCkgcmV0dXJuXG4gICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUbyh7XG4gICAgICB0b3A6IG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0LFxuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgIH0pXG4gICAgLy8gRGFyIHRpZW1wbyBhbCBzbW9vdGgtc2Nyb2xsIGFudGVzIGRlIHJlY2FsY3VsYXIgbGEgdmlzaWJpbGlkYWQgZGVsIGJvdMOzbi5cbiAgICBzZXRUaW1lb3V0KHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHksIDUwMClcbiAgfSwgW3VwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHldKVxuXG4gIGNvbnN0IGhhbmRsZVNjcm9sbFRvQm90dG9tID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IFJlYWN0LlVJRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBjb25zdCBjb250YWluZXIgPSBlLmN1cnJlbnRUYXJnZXRcblxuICAgICAgaWYgKHNjcm9sbFJhZlJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHNjcm9sbFJhZlJlZi5jdXJyZW50KVxuICAgICAgfVxuXG4gICAgICBzY3JvbGxSYWZSZWYuY3VycmVudCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHNjcm9sbFJhZlJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IGNvbnRhaW5lclxuXG4gICAgICAgIGNvbnN0IGlzU2Nyb2xsaW5nVXAgPSBzY3JvbGxUb3AgPCBsYXN0U2Nyb2xsVG9wUmVmLmN1cnJlbnRcblxuICAgICAgICBpZiAoaXNTY3JvbGxpbmdVcCkge1xuICAgICAgICAgIHNjcm9sbFRocmVzaG9sZFJlZi5jdXJyZW50ID0gMTVcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzTmVhckJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodCA8IHNjcm9sbFRocmVzaG9sZFJlZi5jdXJyZW50XG5cbiAgICAgICAgaWYgKGlzTmVhckJvdHRvbSkge1xuICAgICAgICAgIHNjcm9sbFRocmVzaG9sZFJlZi5jdXJyZW50ID0gMzlcbiAgICAgICAgfVxuXG4gICAgICAgIHVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCA9ICFpc05lYXJCb3R0b21cbiAgICAgICAgbGFzdFNjcm9sbFRvcFJlZi5jdXJyZW50ID0gc2Nyb2xsVG9wXG5cbiAgICAgICAgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eSgpXG5cbiAgICAgICAgaWYgKGlzTmVhckJvdHRvbSAmJiBvblNjcm9sbFRvQm90dG9tKSB7XG4gICAgICAgICAgb25TY3JvbGxUb0JvdHRvbSgpXG4gICAgICAgIH1cblxuICAgICAgICBoYW5kbGVTY3JvbGwoY29udGFpbmVyKVxuICAgICAgfSlcbiAgICB9LFxuICAgIFtvblNjcm9sbFRvQm90dG9tLCBoYW5kbGVTY3JvbGwsIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHldXG4gIClcblxuICAvLyByZWZzIHRvIHN0YWJpbGl6ZSBmdW5jdGlvbnMgYW5kIGF2b2lkIHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcbiAgY29uc3Qgc2VuZE1lc3NhZ2VSZWYgPSB1c2VSZWYoc2VuZE1lc3NhZ2UpXG4gIGNvbnN0IHN0b3BHZW5lcmF0aW9uUmVmID0gdXNlUmVmKHN0b3BHZW5lcmF0aW9uKVxuICBjb25zdCBvblNlbmRNZXNzYWdlUmVhZHlSZWYgPSB1c2VSZWYob25TZW5kTWVzc2FnZVJlYWR5KVxuXG4gIC8vIHVwZGF0ZSByZWZzIHdoZW4gZnVuY3Rpb25zIGNoYW5nZVxuICBzZW5kTWVzc2FnZVJlZi5jdXJyZW50ID0gc2VuZE1lc3NhZ2VcbiAgc3RvcEdlbmVyYXRpb25SZWYuY3VycmVudCA9IHN0b3BHZW5lcmF0aW9uXG4gIG9uU2VuZE1lc3NhZ2VSZWFkeVJlZi5jdXJyZW50ID0gb25TZW5kTWVzc2FnZVJlYWR5XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob25TZW5kTWVzc2FnZVJlYWR5UmVmLmN1cnJlbnQpIHtcbiAgICAgIG9uU2VuZE1lc3NhZ2VSZWFkeVJlZi5jdXJyZW50KHNlbmRNZXNzYWdlUmVmLmN1cnJlbnQsIHN0b3BHZW5lcmF0aW9uUmVmLmN1cnJlbnQsIHdhaXRpbmdSZXNwb25zZSwgaXNXcml0aW5nKVxuICAgIH1cbiAgfSwgW3dhaXRpbmdSZXNwb25zZSwgaXNXcml0aW5nXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzTG9hZGluZ01vcmVSZWYuY3VycmVudCA9IGlzTG9hZGluZ01vcmVNZXNzYWdlc1xuICB9LCBbaXNMb2FkaW5nTW9yZU1lc3NhZ2VzXSlcblxuICAvLyBDdWFuZG8gZWwgYWdlbnRlIGVtcGllemEgYSByZXNwb25kZXIsIHJlc2V0ZWFyIGVsIGZsYWcgeSBlbCB1bWJyYWwgcGFyYSBhY3RpdmFyIGVsIGF1dG8tc2Nyb2xsXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHdhaXRpbmdSZXNwb25zZSkge1xuICAgICAgdXNlclNjcm9sbGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHNjcm9sbFRocmVzaG9sZFJlZi5jdXJyZW50ID0gMzlcbiAgICB9XG4gIH0sIFt3YWl0aW5nUmVzcG9uc2VdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFjaGF0SW5pdGlhbGl6ZWRSZWYuY3VycmVudCkge1xuICAgICAgY2hhdEluaXRpYWxpemVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBpbml0aWFsaXplQ2hhdCgpXG4gICAgfVxuICB9LCBbXSlcblxuICAvLyBBdXRvc2Nyb2xsIG1pZW50cmFzIGVsIHRleHRvIGRlbCBzdHJlYW0gY3JlY2UuIEVsIHRleHRvIHNlIHBpbnRhIGFsIHJpdG1vXG4gIC8vIGRlIGB1c2VTbW9vdGhTdHJlYW1UZXh0YCAofjYwZnBzKSwgbm8gYWwgcml0bW8gZGUgbGxlZ2FkYSBkZSB0b2tlbnMgZGVsXG4gIC8vIGJhY2tlbmQ6IHBvciBlc28gYWPDoSB1c2Ftb3MgdW4gbG9vcCBkZSByQUYgcXVlIGNvbXBhcmEgYHNjcm9sbEhlaWdodGBcbiAgLy8gY29udHJhIGVsIMO6bHRpbW8gdmFsb3Igb2JzZXJ2YWRvIHkgYWp1c3RhIHNvbG8gY3VhbmRvIGNhbWJpYS4gQXPDrSBlbFxuICAvLyBzY3JvbGwgcXVlZGEgcGVyZmVjdGFtZW50ZSBzaW5jcm9uaXphZG8gY29uIGxhIGFuaW1hY2nDs24gZGVsIHRleHRvIHNpblxuICAvLyBkZXBlbmRlciBkZSBsYSBjYWRlbmNpYSBkZWwgc3RyZWFtaW5nU3RvcmUuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF3YWl0aW5nUmVzcG9uc2UgJiYgIWlzV3JpdGluZykgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGlmICghbWVzc2FnZXNSZWYuY3VycmVudCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgbGV0IHJhZklkOiBudW1iZXIgfCBudWxsID0gbnVsbFxuICAgIGxldCBsYXN0SGVpZ2h0ID0gbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxIZWlnaHRcblxuICAgIGNvbnN0IHRpY2sgPSAoKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICAgIGlmICghZWwpIHtcbiAgICAgICAgcmFmSWQgPSBudWxsXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudEhlaWdodCA9IGVsLnNjcm9sbEhlaWdodFxuICAgICAgaWYgKGN1cnJlbnRIZWlnaHQgIT09IGxhc3RIZWlnaHQpIHtcbiAgICAgICAgbGFzdEhlaWdodCA9IGN1cnJlbnRIZWlnaHRcbiAgICAgICAgaWYgKCF1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBlbC5zY3JvbGxUb3AgPSBjdXJyZW50SGVpZ2h0XG4gICAgICAgIH1cbiAgICAgICAgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eSgpXG4gICAgICB9XG4gICAgICByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aWNrKVxuICAgIH1cblxuICAgIHJhZklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRpY2spXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChyYWZJZCAhPSBudWxsKSBjYW5jZWxBbmltYXRpb25GcmFtZShyYWZJZClcbiAgICB9XG4gIH0sIFt3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZywgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eV0pXG5cbiAgLy8gQWwgY29tZW56YXIgYSBlc3BlcmFyIGxhIHJlc3B1ZXN0YSBkZWwgYmFja2VuZCwgc2Nyb2xsIGluaWNpYWwgYWwgZm9uZG8uXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHdhaXRpbmdSZXNwb25zZSAmJiBtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICBzY3JvbGxUb0JvdHRvbVJhZih7IHNraXBJZlVzZXJTY3JvbGxpbmc6IHRydWUgfSlcbiAgICB9XG4gIH0sIFt3YWl0aW5nUmVzcG9uc2UsIHNjcm9sbFRvQm90dG9tUmFmXSlcblxuICAvLyBTY3JvbGwgY3VhbmRvIGNhbWJpYW4gbG9zIG1lbnNhamVzOiBkaXN0aW5ndWUgXCJudWV2byBtZW5zYWplXCIgKGFncmVnYWRvKVxuICAvLyBkZSBcInJlZW1wbGF6b1wiIChtaXNtbyBpZC9sZW5ndGgsIGVqLiBmZWVkYmFjayBvIGFwcHJvdmFsU3RhdHVzKS4gRW5cbiAgLy8gcmVlbXBsYXpvcyBzb2xvIHNlIHJlY2FsY3VsYSBsYSB2aXNpYmlsaWRhZCBkZWwgYm90w7NuIHNpbiBmb3J6YXIgc2Nyb2xsLlxuICBjb25zdCBsYXN0TWVzc2FnZUlkUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGxhc3RNZXNzYWdlc0xlbmd0aFJlZiA9IHVzZVJlZjxudW1iZXI+KDApXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFtZXNzYWdlc1JlZi5jdXJyZW50IHx8IGxvYWRpbmdNZXNzYWdlcyB8fCBpc0xvYWRpbmdNb3JlTWVzc2FnZXMgfHwgaXNMb2FkaW5nTW9yZVJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBsYXN0TWVzc2FnZSA9IG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdXG4gICAgY29uc3QgbGFzdElkID0gbGFzdE1lc3NhZ2U/LmlkID8/IG51bGxcbiAgICBjb25zdCBwcmV2SWQgPSBsYXN0TWVzc2FnZUlkUmVmLmN1cnJlbnRcbiAgICBjb25zdCBwcmV2TGVuID0gbGFzdE1lc3NhZ2VzTGVuZ3RoUmVmLmN1cnJlbnRcbiAgICBsYXN0TWVzc2FnZUlkUmVmLmN1cnJlbnQgPSBsYXN0SWRcbiAgICBsYXN0TWVzc2FnZXNMZW5ndGhSZWYuY3VycmVudCA9IG1lc3NhZ2VzLmxlbmd0aFxuXG4gICAgY29uc3QgaXNOZXdNZXNzYWdlID0gbGFzdElkICE9PSBwcmV2SWQgfHwgbWVzc2FnZXMubGVuZ3RoICE9PSBwcmV2TGVuXG4gICAgaWYgKCFpc05ld01lc3NhZ2UpIHtcbiAgICAgIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgIGNvbnN0IGlzQXRCb3R0b20gPSBjb250YWluZXIuc2Nyb2xsSGVpZ2h0IC0gY29udGFpbmVyLnNjcm9sbFRvcCA8PSBjb250YWluZXIuY2xpZW50SGVpZ2h0ICsgMTAwXG4gICAgY29uc3QgaGFzSW5pdGlhbE1lc3NhZ2UgPSBtZXNzYWdlcy5zb21lKG1zZyA9PiBtc2cuaWQgPT09ICd1c2VyLWluaXRpYWwtbWVzc2FnZScpXG4gICAgY29uc3QgaXNBcHByb3ZhbCA9ICEhbGFzdE1lc3NhZ2UgJiYgKGxhc3RNZXNzYWdlLmlkLnN0YXJ0c1dpdGgoJ2FwcHJvdmFsLScpIHx8ICEhbGFzdE1lc3NhZ2UuYXBwcm92YWwpXG4gICAgY29uc3QgaXNBbnN3ZXJPclF1ZXN0aW9uID1cbiAgICAgICEhbGFzdE1lc3NhZ2UgJiYgKGxhc3RNZXNzYWdlLmlkLnN0YXJ0c1dpdGgoJ2Fuc3dlci0nKSB8fCBsYXN0TWVzc2FnZS5pZC5zdGFydHNXaXRoKCdxdWVzdGlvbi0nKSlcblxuICAgIC8vIEFwcHJvdmFsOiBzZWN1ZW5jaWEgZGUgc2Nyb2xscyBjb24gZGVsYXkgcG9ycXVlIGVsIEFwcHJvdmFsQm94IG5lY2VzaXRhXG4gICAgLy8gdW4gdGljayBwYXJhIG1lZGlyc2UuIFNjcm9sbGVhIGF1bnF1ZSBlbCB1c3VhcmlvIG5vIGVzdMOpIGFsIGZvbmRvIHNpIG5vXG4gICAgLy8gZXN0w6Egc2Nyb2xsZWFuZG8gbWFudWFsbWVudGUuXG4gICAgaWYgKGlzQXBwcm92YWwgJiYgKGlzQXRCb3R0b20gfHwgIXVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCkpIHtcbiAgICAgIHNjcm9sbFRvQm90dG9tUmFmKClcbiAgICAgIHNjcm9sbFRvQm90dG9tUmFmKClcbiAgICAgIHNjcm9sbFRvQm90dG9tUmFmKHsgZGVsYXlNczogMTAwIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBOdWV2b3MgYW5zd2VyL3F1ZXN0aW9uOiBzY3JvbGwgc2kgZWwgdXN1YXJpbyB5YSBlc3RhYmEgYWwgZm9uZG8uXG4gICAgaWYgKGlzQW5zd2VyT3JRdWVzdGlvbiAmJiBpc0F0Qm90dG9tKSB7XG4gICAgICBzY3JvbGxUb0JvdHRvbVJhZigpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBDYXNvIGJvcmRlOiBjYW1iaW9zIGRlIG1lbnNhamVzIHNpbiBzZXIgbnVldm8gYW5zd2VyL3VzZXIvYXBwcm92YWxcbiAgICAvLyBwZXJvIHPDrSB1biBtZW5zYWplIG51ZXZvIChubyBlbCBcInVzZXItaW5pdGlhbC1tZXNzYWdlXCIpLiBTY3JvbGxlYS5cbiAgICBpZiAoIWlzQW5zd2VyT3JRdWVzdGlvbiAmJiAhaXNBcHByb3ZhbCAmJiAhaGFzSW5pdGlhbE1lc3NhZ2UgJiYgbWVzc2FnZXMubGVuZ3RoID4gcHJldkxlbikge1xuICAgICAgc2Nyb2xsVG9Cb3R0b21SYWYoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eSgpXG4gIH0sIFttZXNzYWdlcywgbG9hZGluZ01lc3NhZ2VzLCBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsIHNjcm9sbFRvQm90dG9tUmFmLCB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5XSlcblxuICAvLyBFc3RhZG8gaW5pY2lhbCBkZWwgYm90w7NuIHNjcm9sbC10by1ib3R0b20gYWwgdGVybWluYXIgbG9hZGluZ01lc3NhZ2VzLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbG9hZGluZ01lc3NhZ2VzKSB7XG4gICAgICB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5KClcbiAgICB9XG4gIH0sIFtsb2FkaW5nTWVzc2FnZXMsIG1lc3NhZ2VzLmxlbmd0aCwgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eV0pXG5cbiAgLy8gT2J0ZW5lciBlbCDDumx0aW1vIG1lbnNhamUgZGVsIHVzdWFyaW8gcGFyYSB2ZXJpZmljYXIgc2kgdGllbmUgYXR0YWNobWVudHNcbiAgY29uc3QgbGFzdFVzZXJNZXNzYWdlID0gbWVzc2FnZXNcbiAgICAuZmlsdGVyKG1zZyA9PiBtc2cucm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgfHwgbXNnLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkpXG4gICAgLmF0KC0xKVxuXG4gIGNvbnN0IGF0dGFjaG1lbnRzQ291bnQgPVxuICAgIChBcnJheS5pc0FycmF5KGxhc3RVc2VyTWVzc2FnZT8uYXR0YWNobWVudHMpID8gbGFzdFVzZXJNZXNzYWdlLmF0dGFjaG1lbnRzLmxlbmd0aCA6IDApIHx8XG4gICAgKEFycmF5LmlzQXJyYXkobGFzdFVzZXJNZXNzYWdlPy5zb3VyY2VzKSA/IGxhc3RVc2VyTWVzc2FnZS5zb3VyY2VzLmxlbmd0aCA6IDApXG5cbiAgY29uc3Qgc3RyZWFtTG9hZGluZ0Rpc3BsYXkgPSByZXNvbHZlU3RyZWFtTG9hZGluZ0Rpc3BsYXkoe1xuICAgIHN0cmVhbUFjdGl2aXR5LFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIGFjdGl2ZUxvYWRpbmdzOiBhY3RpdmVMb2FkaW5ncyB8fCB7fSxcbiAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGhhc0F0dGFjaG1lbnRzOiBCb29sZWFuKGF0dGFjaG1lbnRzQ291bnQpLFxuICAgIGF0dGFjaG1lbnRzQ291bnQsXG4gICAgdCxcbiAgfSlcblxuICBjb25zdCBpc1Njcm9sbE9uUGFyZW50ID0gISFleHBhbmRlZFxuICBjb25zdCBpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQgPSBhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJyAmJiAvKG1haWFrZXJ8bWFya2V0cGxhY2UpL2kudGVzdChhZ2VudD8ubmFtZSB8fCAnJylcblxuICAvLyBBbCBleHBhbmRpci9jb250cmFlciBlbCBtb2RhbCBlbCByZWYgcGFzYSBhIG90cm8gY29udGVuZWRvciAoc2Nyb2xsVG9wIHNlIHJlc2V0ZWEgYSAwKS5cbiAgLy8gUmVzdGF1cmFyIGxhIHBvc2ljacOzbiBkZSBzY3JvbGwgYW50ZXMgZGVsIHBhaW50IHBhcmEgZXZpdGFyIHF1ZSBsYSBjb252ZXJzYWNpw7NuIHNhbHRlIGFycmliYS5cbiAgY29uc3QgZXhwYW5kZWRSZWYgPSB1c2VSZWYoZXhwYW5kZWQpXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGV4cGFuZGVkUmVmLmN1cnJlbnQgIT09IGV4cGFuZGVkICYmIG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNvbnN0IHNhdmVkU2Nyb2xsVG9wID0gbGFzdFNjcm9sbFRvcFJlZi5jdXJyZW50XG4gICAgICBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbFRvcCA9IHNhdmVkU2Nyb2xsVG9wXG4gICAgICBleHBhbmRlZFJlZi5jdXJyZW50ID0gZXhwYW5kZWRcbiAgICB9IGVsc2Uge1xuICAgICAgZXhwYW5kZWRSZWYuY3VycmVudCA9IGV4cGFuZGVkXG4gICAgfVxuICB9LCBbZXhwYW5kZWRdKVxuXG4gIGlmIChsb2FkaW5nTWVzc2FnZXMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEZhZGUgZmlsbD5cbiAgICAgICAgPExvYWRlciAvPlxuICAgICAgPC9GYWRlPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IG1lc3NhZ2VzQ29udGVudCA9IChcbiAgICA8PlxuICAgICAge2lzTG9hZGluZ01vcmVNZXNzYWdlcyAmJiA8TG9hZGluZ1RleHQgdGV4dD17dCgnY2hhdC5sb2FkaW5nTW9yZScpfSAvPn1cbiAgICAgIDw+XG4gICAgICAgIHttZXNzYWdlcy5tYXAoKG1lc3NhZ2UsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNBc3Npc3RhbnRNZXNzYWdlID0gbWVzc2FnZS5yb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5UIHx8IG1lc3NhZ2UudXNlci5pZCA9PT0gJ2Fzc2lzdGFudCdcbiAgICAgICAgICBjb25zdCBpc0xhc3RNZXNzYWdlID0gaW5kZXggPT09IG1lc3NhZ2VzLmxlbmd0aCAtIDFcbiAgICAgICAgICBjb25zdCBpc1N0cmVhbWluZyA9XG4gICAgICAgICAgICBpc0Fzc2lzdGFudE1lc3NhZ2UgJiZcbiAgICAgICAgICAgIGlzTGFzdE1lc3NhZ2UgJiZcbiAgICAgICAgICAgICh3YWl0aW5nUmVzcG9uc2UgfHwgaXNXcml0aW5nKSAmJlxuICAgICAgICAgICAgaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZChtZXNzYWdlLmlkKVxuXG4gICAgICAgICAgLy8gTm8gZmlsdHJhciBlbCBwbGFjZWhvbGRlciBkZWwgbWVuc2FqZSBlbiBzdHJlYW1pbmc6IHN1IHRleHRvIHZpdmVcbiAgICAgICAgICAvLyBlbiBlbCBzdHJlYW1pbmdTdG9yZSB5IGBtZXNzYWdlLm1lc3NhZ2VgIGVzICcnIGhhc3RhIGVsIGNvbXBsZXRlLlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICFpc1N0cmVhbWluZyAmJlxuICAgICAgICAgICAgIShtZXNzYWdlLmF0dGFjaG1lbnRzPy5sZW5ndGggfHwgbWVzc2FnZS5zb3VyY2VzPy5sZW5ndGgpICYmXG4gICAgICAgICAgICAhbWVzc2FnZS5tZXNzYWdlICYmXG4gICAgICAgICAgICAhbWVzc2FnZS5wcm9qZWN0Py5uYW1lICYmXG4gICAgICAgICAgICAhbWVzc2FnZS5hcHByb3ZhbFxuICAgICAgICAgIClcbiAgICAgICAgICAgIHJldHVybiBudWxsXG5cbiAgICAgICAgICBjb25zdCBtZXNzYWdlRmVlZGJhY2sgPVxuICAgICAgICAgICAgbWVzc2FnZT8ud2FzSGVscGZ1bCA9PT0gdW5kZWZpbmVkIHx8IG1lc3NhZ2Uud2FzSGVscGZ1bCA9PT0gbnVsbFxuICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgOiBtZXNzYWdlLndhc0hlbHBmdWxcbiAgICAgICAgICAgICAgICA/IEZlZWRiYWNrLlRIVU1CU19VUFxuICAgICAgICAgICAgICAgIDogRmVlZGJhY2suVEhVTUJTX0RPV05cblxuICAgICAgICAgIC8vIEtleSBlc3RhYmxlOiBzb2xvIG1lc3NhZ2UuaWQgcGFyYSBldml0YXIgcmVtb3VudCBkdXJhbnRlIHN0cmVhbWluZyAobWVzc2FnZS5kYXRlIHB1ZWRlIGNhbWJpYXIpXG4gICAgICAgICAgY29uc3QgbWVzc2FnZUtleSA9IG1lc3NhZ2UuaWQgPz8gYG1zZy0ke2luZGV4fWBcblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8TWVzc2FnZUl0ZW1cbiAgICAgICAgICAgICAgey4uLm1lc3NhZ2V9XG4gICAgICAgICAgICAgIGtleT17bWVzc2FnZUtleX1cbiAgICAgICAgICAgICAgYXV0aFVzZXI9e2F1dGhVc2VyfVxuICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb249e2hhbmRsZVNlbGVjdE9wdGlvbn1cbiAgICAgICAgICAgICAgaGFuZGxlRmVlZGJhY2s9e2hhbmRsZUZlZWRiYWNrfVxuICAgICAgICAgICAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uPXtoYW5kbGVBcHByb3ZhbERlY2lzaW9ufVxuICAgICAgICAgICAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s9e2hhbmRsZVN1Z2dlc3Rpb25DbGlja31cbiAgICAgICAgICAgICAgaGFzU2VsZWN0ZWRTdWdnZXN0aW9uPXshIXNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHNbbWVzc2FnZS5pZF19XG4gICAgICAgICAgICAgIGRpc2FibGVGZWVkYmFjaz17bWVzc2FnZUZlZWRiYWNrfVxuICAgICAgICAgICAgICBpc1N0cmVhbWluZz17aXNTdHJlYW1pbmd9XG4gICAgICAgICAgICAgIGlzTGFzdE1lc3NhZ2U9e2lzTGFzdE1lc3NhZ2V9XG4gICAgICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKVxuICAgICAgICB9KX1cbiAgICAgIDwvPlxuICAgICAge3N0cmVhbUxvYWRpbmdEaXNwbGF5ICYmIChcbiAgICAgICAgPFNDTG9hZGluZ01lc3NhZ2VzQ29sdW1uPlxuICAgICAgICAgIDxBZ2VudEFjdGl2aXR5SW5kaWNhdG9yIGFjdGl2aXR5PXtzdHJlYW1Mb2FkaW5nRGlzcGxheX0gLz5cbiAgICAgICAgPC9TQ0xvYWRpbmdNZXNzYWdlc0NvbHVtbj5cbiAgICAgICl9XG4gICAgPC8+XG4gIClcblxuICByZXR1cm4gKFxuICAgIDxTQ01lc3NhZ2VzT3V0ZXIgJHNjcm9sbE9uUGFyZW50PXtpc1Njcm9sbE9uUGFyZW50fT5cbiAgICAgIHtpc1Njcm9sbE9uUGFyZW50ID8gKFxuICAgICAgICA8U0NNZXNzYWdlc1Njcm9sbCByZWY9e21lc3NhZ2VzUmVmfSBvblNjcm9sbD17aGFuZGxlU2Nyb2xsVG9Cb3R0b219PlxuICAgICAgICAgIDxTQ01lc3NhZ2VzSW5uZXIgJHNjcm9sbE9uUGFyZW50PXtpc1Njcm9sbE9uUGFyZW50fSAkaXNNYXJrZXRwbGFjZUdsb2JhbD17aXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50fT5cbiAgICAgICAgICAgIHttZXNzYWdlc0NvbnRlbnR9XG4gICAgICAgICAgPC9TQ01lc3NhZ2VzSW5uZXI+XG4gICAgICAgIDwvU0NNZXNzYWdlc1Njcm9sbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxTQ01lc3NhZ2VzSW5uZXJcbiAgICAgICAgICByZWY9e21lc3NhZ2VzUmVmfVxuICAgICAgICAgIG9uU2Nyb2xsPXtoYW5kbGVTY3JvbGxUb0JvdHRvbX1cbiAgICAgICAgICAkc2Nyb2xsT25QYXJlbnQ9e2ZhbHNlfVxuICAgICAgICAgICRpc01hcmtldHBsYWNlR2xvYmFsPXtpc01hcmtldHBsYWNlR2xvYmFsQWdlbnR9XG4gICAgICAgID5cbiAgICAgICAgICB7bWVzc2FnZXNDb250ZW50fVxuICAgICAgICA8L1NDTWVzc2FnZXNJbm5lcj5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93U2Nyb2xsVG9Cb3R0b20gJiYgKFxuICAgICAgICA8U2Nyb2xsVG9Cb3R0b21CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUNsaWNrU2Nyb2xsVG9Cb3R0b219PlxuICAgICAgICAgIDxBcnJvd1NtYWxsRG93biBjb2xvcj1cIiM2NjZcIiB3aWR0aD1cIjIwcHhcIiBoZWlnaHQ9XCIyMHB4XCIgLz5cbiAgICAgICAgPC9TY3JvbGxUb0JvdHRvbUJ1dHRvbj5cbiAgICAgICl9XG4gICAgPC9TQ01lc3NhZ2VzT3V0ZXI+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IENoYXRBSU1lc3NhZ2VzID0gUmVhY3QubWVtbyhDaGF0QUlNZXNzYWdlc0lubmVyKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU9BLEtBQUssSUFBUUMsSUFBSSxFQUFhQyxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsZUFBZSxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsRUFBQUMsYUFBQSxJQUFBQyxjQUFBLFFBQVEsT0FBTztBQUM3RyxTQUFTQyxVQUFVLFFBQVEsWUFBWTtBQUN2QyxTQUFTQyxnQkFBZ0IsUUFBUSxrQkFBa0I7QUFDbkQsU0FBU0MsY0FBYyxRQUFRLGlEQUFpRDtBQUVoRixTQUFTQyxjQUFjLFFBQVEsMkNBQTJDO0FBQzFFLFNBQVNDLFdBQVcsUUFBUSxxQ0FBcUM7QUFDakUsU0FBU0Msc0JBQXNCLFFBQVEsb0NBQW9DO0FBQzNFLFNBQVNDLG1CQUFtQixRQUFRLGdEQUFnRDtBQUVwRixTQUFzQkMsZUFBZSxRQUFrQixxQkFBcUI7QUFDNUUsU0FBU0MsOEJBQThCLFFBQVEsNENBQTRDO0FBQzNGLFNBQVNDLHNCQUFzQixFQUFFQyxpQkFBaUIsRUFBRUMsZ0JBQWdCLFFBQVEsc0NBQXNDOztBQUVsSDtBQUNBLFNBQWtCQyxPQUFPLFFBQVEsMkJBQTJCO0FBRTVELFNBQVNDLElBQUksUUFBUSxxQkFBcUI7QUFDMUMsU0FBU0MsY0FBYyxRQUFRLDhDQUE4QztBQUM3RSxTQUFTQyxZQUFZLFFBQVEsNkJBQTZCO0FBQzFELFNBQVNDLG1CQUFtQixRQUFRLG9DQUFvQztBQUN4RSxTQUFTQyxtQkFBbUIsUUFBUSxvQ0FBb0M7QUFFeEUsU0FBU0MsV0FBVyxRQUFRLHlCQUF5QjtBQUNyRCxTQUFTQyxzQkFBc0IsUUFBUSxvQ0FBb0M7QUFDM0UsU0FBU0MsK0JBQStCLEVBQUVDLDJCQUEyQixRQUFRLHVD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
|