@projectcor/maia-components 2.11.60-4 → 2.11.60
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 +15 -49
- package/lib/components/atoms/Chip/styles.js +3 -7
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +6 -38
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +13 -21
- package/lib/components/atoms/MAIAInput/MAIAInput.js +3 -5
- package/lib/components/molecules/AbmSection/AbmGeneralSection.js +11 -6
- package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +28 -17
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +28 -40
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +6 -6
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +12 -13
- package/lib/components/molecules/ChatFooter/ChatFooter.js +21 -105
- package/lib/components/molecules/ChatFooter/styles.js +2 -11
- package/lib/components/molecules/Sidebar/Sidebar.js +5 -9
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +2 -2
- package/lib/context/global-context.js +1 -8
- package/lib/hooks/useChatManager/useChatManager.js +20 -145
- package/lib/hooks/useChatMessages/useChatMessages.js +1 -1
- package/lib/hooks/useMentionAllowedTypes.js +1 -10
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +8 -26
- package/lib/hooks/useProjectSummaryConfig.js +3 -47
- package/lib/lang/br/index.js +1 -8
- package/lib/lang/en/index.js +1 -8
- package/lib/lang/es/index.js +1 -8
- package/lib/lang/fr/index.js +1 -8
- package/lib/services/maia/Agents/getAgentModels.js +8 -3
- package/lib/services/maia/Agents/getAgents.js +91 -68
- package/lib/services/maia/Chats/getChatsByUserId.js +9 -13
- package/lib/services/maia/Orchestrator/orchestrator.js +5 -15
- 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
- package/lib/hooks/useContextPinPopover.js +0 -228
|
@@ -113,7 +113,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
113
113
|
}, [isLoading, isWriting, streamActivity === null || streamActivity === void 0 ? void 0 : streamActivity.phase, t]);
|
|
114
114
|
var handleSSEStream = useCallback(/*#__PURE__*/function () {
|
|
115
115
|
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(response) {
|
|
116
|
-
var
|
|
116
|
+
var _onErrorRef$current, _data$error, _data$error2;
|
|
117
117
|
var pendingContent, rafId, emitThrottled, flushPending, _response$body, reader, decoder, buffer, accumulatedContent, hasStartedWriting, ensureWritingStarted, applyStreamChunk, applyStreamComplete, _yield$reader$read, done, value, lines, _iterator, _step, line, _line$split, _line$split2, eventLine, dataLine, eventType, dataStr, _data, chunk, _chunk, _onApprovalRequiredRe, isManualApproval, _onErrorRef$current2, _t, _t2, _t3, _t4;
|
|
118
118
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
119
119
|
while (1) switch (_context.prev = _context.next) {
|
|
@@ -176,7 +176,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
176
176
|
emitThrottled(accumulatedContent);
|
|
177
177
|
};
|
|
178
178
|
applyStreamComplete = function applyStreamComplete(payload) {
|
|
179
|
-
var _payload$agent_id,
|
|
179
|
+
var _payload$agent_id, _onFinishStreamRef$cu;
|
|
180
180
|
var finalContent = payload.content || accumulatedContent;
|
|
181
181
|
var sources = payload.sources || null;
|
|
182
182
|
var memorySessionId = payload.memory_session_id || '';
|
|
@@ -189,15 +189,12 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
189
189
|
}
|
|
190
190
|
var agentIdRaw = (_payload$agent_id = payload.agent_id) !== null && _payload$agent_id !== void 0 ? _payload$agent_id : payload.agentId;
|
|
191
191
|
var completedAgentId = agentIdRaw != null && String(agentIdRaw).trim() !== '' ? String(agentIdRaw).trim() : null;
|
|
192
|
-
var subagentRaw = payload.subagent;
|
|
193
|
-
var subagentName = subagentRaw !== null && subagentRaw !== void 0 && (_subagentRaw$name = subagentRaw.name) !== null && _subagentRaw$name !== void 0 && _subagentRaw$name.trim() ? subagentRaw.name.trim() : null;
|
|
194
|
-
var resolvedContext = (_subagentRaw$resolved = subagentRaw === null || subagentRaw === void 0 ? void 0 : subagentRaw.resolved_context) !== null && _subagentRaw$resolved !== void 0 ? _subagentRaw$resolved : null;
|
|
195
192
|
flushPending();
|
|
196
193
|
setData(finalContent);
|
|
197
194
|
setLoading(false);
|
|
198
195
|
setIsWriting(false);
|
|
199
196
|
clearStreamLoadingState();
|
|
200
|
-
(_onFinishStreamRef$cu = onFinishStreamRef.current) === null || _onFinishStreamRef$cu === void 0 || _onFinishStreamRef$cu.call(onFinishStreamRef, finalContent, sources, memorySessionId, attachments, suggestions, completedAgentId
|
|
197
|
+
(_onFinishStreamRef$cu = onFinishStreamRef.current) === null || _onFinishStreamRef$cu === void 0 || _onFinishStreamRef$cu.call(onFinishStreamRef, finalContent, sources, memorySessionId, attachments, suggestions, completedAgentId);
|
|
201
198
|
};
|
|
202
199
|
case 3:
|
|
203
200
|
if (!true) {
|
|
@@ -287,20 +284,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
287
284
|
}
|
|
288
285
|
return _context.abrupt("continue", 21);
|
|
289
286
|
case 16:
|
|
290
|
-
|
|
291
|
-
// is handling the request in the activity indicator.
|
|
292
|
-
if (_data.node === 'agent_transfer' && (_data$subagent = _data.subagent) !== null && _data$subagent !== void 0 && _data$subagent.name) {
|
|
293
|
-
setLoading(true);
|
|
294
|
-
// 'action' phase does not rotate its message, so the
|
|
295
|
-
// "Consulting <agent>" label stays visible while the
|
|
296
|
-
// subagent works (instead of being replaced after ~3s).
|
|
297
|
-
applyStreamActivity({
|
|
298
|
-
phase: 'action',
|
|
299
|
-
message: t('chat.activity.transferringToAgent', {
|
|
300
|
-
name: _data.subagent.name
|
|
301
|
-
})
|
|
302
|
-
});
|
|
303
|
-
} else if (_data.message && typeof _data.message === 'string') {
|
|
287
|
+
if (_data.message && typeof _data.message === 'string') {
|
|
304
288
|
setLoading(true);
|
|
305
289
|
applyStreamActivity(resolveHitlNodeStreamActivity(_data.message, t, hitlExecutionContextRef === null || hitlExecutionContextRef === void 0 ? void 0 : hitlExecutionContextRef.current, typeof _data.thread_id === 'string' ? _data.thread_id : undefined));
|
|
306
290
|
}
|
|
@@ -390,11 +374,11 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
390
374
|
}(), [applyStreamActivity, clearStreamLoadingState, hitlExecutionContextRef, t]);
|
|
391
375
|
var askMaia = /*#__PURE__*/function () {
|
|
392
376
|
var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(_ref3) {
|
|
393
|
-
var message, history, projectId, lang, userId, firstName, lastName, companyId, chatId, messageId, clientId, clientName, feeId, agentName, agentId, isWebSearchActive, isDeepSearchActive, attachments, projectName, taskId, taskName, faqId, agentSuggestionId, fuaId, scId, agentEntity,
|
|
377
|
+
var message, history, projectId, lang, userId, firstName, lastName, companyId, chatId, messageId, clientId, clientName, feeId, agentName, agentId, isWebSearchActive, isDeepSearchActive, attachments, projectName, taskId, taskName, faqId, agentSuggestionId, fuaId, scId, agentEntity, contextMessage, _attachments$length, _abortControllerRef$c, initialActivity, response, _onErrorRef$current3, _t5;
|
|
394
378
|
return _regeneratorRuntime.wrap(function (_context2) {
|
|
395
379
|
while (1) switch (_context2.prev = _context2.next) {
|
|
396
380
|
case 0:
|
|
397
|
-
message = _ref3.message, history = _ref3.history, projectId = _ref3.projectId, lang = _ref3.lang, userId = _ref3.userId, firstName = _ref3.firstName, lastName = _ref3.lastName, companyId = _ref3.companyId, chatId = _ref3.chatId, messageId = _ref3.messageId, clientId = _ref3.clientId, clientName = _ref3.clientName, feeId = _ref3.feeId, agentName = _ref3.agentName, agentId = _ref3.agentId, isWebSearchActive = _ref3.isWebSearchActive, isDeepSearchActive = _ref3.isDeepSearchActive, attachments = _ref3.attachments, projectName = _ref3.projectName, taskId = _ref3.taskId, taskName = _ref3.taskName, faqId = _ref3.faqId, agentSuggestionId = _ref3.agentSuggestionId, fuaId = _ref3.fuaId, scId = _ref3.scId, agentEntity = _ref3.agentEntity,
|
|
381
|
+
message = _ref3.message, history = _ref3.history, projectId = _ref3.projectId, lang = _ref3.lang, userId = _ref3.userId, firstName = _ref3.firstName, lastName = _ref3.lastName, companyId = _ref3.companyId, chatId = _ref3.chatId, messageId = _ref3.messageId, clientId = _ref3.clientId, clientName = _ref3.clientName, feeId = _ref3.feeId, agentName = _ref3.agentName, agentId = _ref3.agentId, isWebSearchActive = _ref3.isWebSearchActive, isDeepSearchActive = _ref3.isDeepSearchActive, attachments = _ref3.attachments, projectName = _ref3.projectName, taskId = _ref3.taskId, taskName = _ref3.taskName, faqId = _ref3.faqId, agentSuggestionId = _ref3.agentSuggestionId, fuaId = _ref3.fuaId, scId = _ref3.scId, agentEntity = _ref3.agentEntity, contextMessage = _ref3.contextMessage;
|
|
398
382
|
_context2.prev = 1;
|
|
399
383
|
setLoading(true);
|
|
400
384
|
setIsWriting(false);
|
|
@@ -411,7 +395,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
411
395
|
|
|
412
396
|
abortControllerRef.current = new AbortController();
|
|
413
397
|
_context2.next = 2;
|
|
414
|
-
return maia.Orchestrator.orchestrator(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(
|
|
398
|
+
return maia.Orchestrator.orchestrator(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
415
399
|
input: message,
|
|
416
400
|
history: history,
|
|
417
401
|
lang: lang,
|
|
@@ -454,8 +438,6 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
454
438
|
scId: scId
|
|
455
439
|
} : {}), agentEntity != null ? {
|
|
456
440
|
agentEntity: agentEntity
|
|
457
|
-
} : {}), agentType != null ? {
|
|
458
|
-
agentType: agentType
|
|
459
441
|
} : {}), contextMessage ? {
|
|
460
442
|
contextMessage: contextMessage
|
|
461
443
|
} : {}), (_abortControllerRef$c = abortControllerRef.current) === null || _abortControllerRef$c === void 0 ? void 0 : _abortControllerRef$c.signal);
|
|
@@ -555,4 +537,4 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
555
537
|
handleSSEStream: handleSSEStream // Exponer para poder usarlo en continue-thread
|
|
556
538
|
};
|
|
557
539
|
};
|
|
558
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlVHJhbnNsYXRpb24iLCJtYWlhIiwiU0VDVElPTlMiLCJBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUyIsImFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UiLCJjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlIiwiY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZSIsImdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSIsImdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UiLCJnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5IiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInVzZU9yY2hlc3RyYXRvclN0cmVhbSIsIl9yZWYiLCJvblN0cmVhbVVwZGF0ZSIsIm9uRmluaXNoU3RyZWFtIiwib25TdGFydFdyaXRpbmciLCJvblN0b3AiLCJvbkVycm9yIiwib25BcHByb3ZhbFJlcXVpcmVkIiwiaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYiLCJfdXNlVHJhbnNsYXRpb24iLCJjaGF0QUkiLCJ0IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiZGF0YSIsInNldERhdGEiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzTG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzV3JpdGluZyIsInNldElzV3JpdGluZyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibG9hZGluZ01lc3NhZ2UiLCJzZXRMb2FkaW5nTWVzc2FnZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic3RyZWFtQWN0aXZpdHkiLCJzZXRTdHJlYW1BY3Rpdml0eSIsImFib3J0Q29udHJvbGxlclJlZiIsImlzU3RvcHBlZFJlZiIsImFjdGl2aXR5TWVzc2FnZUluZGV4UmVmIiwib25TdHJlYW1VcGRhdGVSZWYiLCJvbkZpbmlzaFN0cmVhbVJlZiIsIm9uU3RhcnRXcml0aW5nUmVmIiwib25TdG9wUmVmIiwib25FcnJvclJlZiIsIm9uQXBwcm92YWxSZXF1aXJlZFJlZiIsImN1cnJlbnQiLCJjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSIsImFwcGx5U3RyZWFtQWN0aXZpdHkiLCJhY3Rpdml0eSIsInByZXYiLCJwaGFzZSIsIm1lc3NhZ2UiLCJ1bmRlZmluZWQiLCJpbnRlcnZhbElkIiwid2luZG93Iiwic2V0SW50ZXJ2YWwiLCJhZHZhbmNlZCIsIm5leHRJbmRleCIsImNsZWFySW50ZXJ2YWwiLCJoYW5kbGVTU0VTdHJlYW0iLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJfZGF0YSRzdWJhZ2VudCIsIl9vbkVycm9yUmVmJGN1cnJlbnQiLCJfZGF0YSRlcnJvciIsIl9kYXRhJGVycm9yMiIsInBlbmRpbmdDb250ZW50IiwicmFmSWQiLCJlbWl0VGhyb3R0bGVkIiwiZmx1c2hQZW5kaW5nIiwiX3Jlc3BvbnNlJGJvZHkiLCJyZWFkZXIiLCJkZWNvZGVyIiwiYnVmZmVyIiwiYWNjdW11bGF0ZWRDb250ZW50IiwiaGFzU3RhcnRlZFdyaXRpbmciLCJlbnN1cmVXcml0aW5nU3RhcnRlZCIsImFwcGx5U3RyZWFtQ2h1bmsiLCJhcHBseVN0cmVhbUNvbXBsZXRlIiwiX3lpZWxkJHJlYWRlciRyZWFkIiwiZG9uZSIsInZhbHVlIiwibGluZXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImxpbmUiLCJfbGluZSRzcGxpdCIsIl9saW5lJHNwbGl0MiIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwiZGF0YVN0ciIsIl9kYXRhIiwiY2h1bmsiLCJfY2h1bmsiLCJfb25BcHByb3ZhbFJlcXVpcmVkUmUiLCJpc01hbnVhbEFwcHJvdmFsIiwiX29uRXJyb3JSZWYkY3VycmVudDIiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJjb250ZW50IiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiX29uU3RyZWFtVXBkYXRlUmVmJGN1IiwidG9FbWl0IiwiY2FsbCIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwiX29uU3RyZWFtVXBkYXRlUmVmJGN1MiIsImJvZHkiLCJnZXRSZWFkZXIiLCJFcnJvciIsIlRleHREZWNvZGVyIiwiX29uU3RhcnRXcml0aW5nUmVmJGN1IiwicGF5bG9hZCIsIl9wYXlsb2FkJGFnZW50X2lkIiwiX3N1YmFnZW50UmF3JG5hbWUiLCJfc3ViYWdlbnRSYXckcmVzb2x2ZWQiLCJfb25GaW5pc2hTdHJlYW1SZWYkY3UiLCJmaW5hbENvbnRlbnQiLCJzb3VyY2VzIiwibWVtb3J5U2Vzc2lvbklkIiwibWVtb3J5X3Nlc3Npb25faWQiLCJhdHRhY2htZW50cyIsIkFycmF5IiwiaXNBcnJheSIsInN1Z2dlc3Rpb25zIiwic3VnZ2VzdF9yZXBseSIsImFnZW50SWRSYXciLCJhZ2VudF9pZCIsImFnZW50SWQiLCJjb21wbGV0ZWRBZ2VudElkIiwiU3RyaW5nIiwidHJpbSIsInN1YmFnZW50UmF3Iiwic3ViYWdlbnQiLCJzdWJhZ2VudE5hbWUiLCJuYW1lIiwicmVzb2x2ZWRDb250ZXh0IiwicmVzb2x2ZWRfY29udGV4dCIsImNhbmNlbCIsImFicnVwdCIsInJlYWQiLCJzZW50IiwiZGVjb2RlIiwic3RyZWFtIiwic3BsaXQiLCJwb3AiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInMiLCJuIiwicmVwbGFjZSIsIkpTT04iLCJwYXJzZSIsIm5vZGUiLCJ0aHJlYWRfaWQiLCJtYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQiLCJwZW5kaW5nX2FjdGlvbnMiLCJsZW5ndGgiLCJjb25zb2xlIiwiZXJyb3IiLCJ0eXBlIiwid2FybiIsImUiLCJmIiwiZmluaXNoIiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJhc2tNYWlhIiwiX3JlZjQiLCJfY2FsbGVlMiIsIl9yZWYzIiwiaGlzdG9yeSIsInByb2plY3RJZCIsImxhbmciLCJ1c2VySWQiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImNvbXBhbnlJZCIsImNoYXRJZCIsIm1lc3NhZ2VJZCIsImNsaWVudElkIiwiY2xpZW50TmFtZSIsImZlZUlkIiwiYWdlbnROYW1lIiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJpc0RlZXBTZWFyY2hBY3RpdmUiLCJwcm9qZWN0TmFtZSIsInRhc2tJZCIsInRhc2tOYW1lIiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsImZ1YUlkIiwic2NJZCIsImFnZW50RW50aXR5IiwiYWdlbnRUeXBlIiwiY29udGV4dE1lc3NhZ2UiLCJfYXR0YWNobWVudHMkbGVuZ3RoIiwiX2Fib3J0Q29udHJvbGxlclJlZiRjIiwiaW5pdGlhbEFjdGl2aXR5IiwiX29uRXJyb3JSZWYkY3VycmVudDMiLCJfdDUiLCJfY29udGV4dDIiLCJoYXNBdHRhY2htZW50cyIsIkJvb2xlYW4iLCJhdHRhY2htZW50c0NvdW50IiwiQWJvcnRDb250cm9sbGVyIiwiT3JjaGVzdHJhdG9yIiwib3JjaGVzdHJhdG9yIiwiX29iamVjdFNwcmVhZCIsImlucHV0Iiwic2lnbmFsIiwiX3gyIiwic3RvcFN0cmVhbWluZyIsIl9vblN0b3BSZWYkY3VycmVudCIsImFib3J0IiwiYWJvcnRTdHJlYW1TaWxlbnRseSIsInVwZGF0ZVN0cmVhbUFjdGl2aXR5IiwicmVzZXQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlT3JjaGVzdHJhdG9yU3RyZWFtL3VzZU9yY2hlc3RyYXRvclN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zdGFudC1jb25kaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IENoYXRIaXN0b3J5IH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IEFnZW50RW50aXR5LCBBZ2VudFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IENvbnRleHRNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBVc2VPcmNoZXN0cmF0b3JTdHJlYW1Qcm9wcywgUmVzb2x2ZWRDb250ZXh0IH0gZnJvbSAnLi91c2VPcmNoZXN0cmF0b3JTdHJlYW0uaW50ZXJmYWNlJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSB9IGZyb20gJy4uLy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHtcbiAgQUNUSVZJVFlfTUVTU0FHRV9ST1RBVEVfTVMsXG4gIGFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UsXG4gIGNhbkFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UsXG4gIGNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2UsXG4gIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSxcbiAgZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSxcbiAgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHksXG59IGZyb20gJy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQsIG1lcmdlU3RyZWFtQ2h1bmsgfSBmcm9tICcuLi8uLi91dGlscy9zc2VTdHJlYW1Db250ZW50J1xuXG50eXBlIFN1YmFnZW50UmF3ID0geyBuYW1lPzogc3RyaW5nOyByZXNvbHZlZF9jb250ZXh0PzogUmVzb2x2ZWRDb250ZXh0IHwgbnVsbCB9IHwgbnVsbCB8IHVuZGVmaW5lZFxuXG5leHBvcnQgY29uc3QgdXNlT3JjaGVzdHJhdG9yU3RyZWFtID0gKHtcbiAgb25TdHJlYW1VcGRhdGUsXG4gIG9uRmluaXNoU3RyZWFtLFxuICBvblN0YXJ0V3JpdGluZyxcbiAgb25TdG9wLFxuICBvbkVycm9yLFxuICBvbkFwcHJvdmFsUmVxdWlyZWQsXG4gIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLFxufTogVXNlT3JjaGVzdHJhdG9yU3RyZWFtUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuY2hhdEFJXSlcbiAgY29uc3QgW2RhdGEsIHNldERhdGFdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzV3JpdGluZywgc2V0SXNXcml0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbG9hZGluZ01lc3NhZ2UsIHNldExvYWRpbmdNZXNzYWdlXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzdHJlYW1BY3Rpdml0eSwgc2V0U3RyZWFtQWN0aXZpdHldID0gdXNlU3RhdGU8U3RyZWFtQWN0aXZpdHkgfCBudWxsPihudWxsKVxuICBjb25zdCBhYm9ydENvbnRyb2xsZXJSZWYgPSB1c2VSZWY8QWJvcnRDb250cm9sbGVyIHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNTdG9wcGVkUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZiA9IHVzZVJlZigwKVxuXG4gIGNvbnN0IG9uU3RyZWFtVXBkYXRlUmVmID0gdXNlUmVmKG9uU3RyZWFtVXBkYXRlKVxuICBjb25zdCBvbkZpbmlzaFN0cmVhbVJlZiA9IHVzZVJlZihvbkZpbmlzaFN0cmVhbSlcbiAgY29uc3Qgb25TdGFydFdyaXRpbmdSZWYgPSB1c2VSZWYob25TdGFydFdyaXRpbmcpXG4gIGNvbnN0IG9uU3RvcFJlZiA9IHVzZVJlZihvblN0b3ApXG4gIGNvbnN0IG9uRXJyb3JSZWYgPSB1c2VSZWYob25FcnJvcilcbiAgY29uc3Qgb25BcHByb3ZhbFJlcXVpcmVkUmVmID0gdXNlUmVmKG9uQXBwcm92YWxSZXF1aXJlZClcblxuICBvblN0cmVhbVVwZGF0ZVJlZi5jdXJyZW50ID0gb25TdHJlYW1VcGRhdGVcbiAgb25GaW5pc2hTdHJlYW1SZWYuY3VycmVudCA9IG9uRmluaXNoU3RyZWFtXG4gIG9uU3RhcnRXcml0aW5nUmVmLmN1cnJlbnQgPSBvblN0YXJ0V3JpdGluZ1xuICBvblN0b3BSZWYuY3VycmVudCA9IG9uU3RvcFxuICBvbkVycm9yUmVmLmN1cnJlbnQgPSBvbkVycm9yXG4gIG9uQXBwcm92YWxSZXF1aXJlZFJlZi5jdXJyZW50ID0gb25BcHByb3ZhbFJlcXVpcmVkXG5cbiAgY29uc3QgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCA9IDBcbiAgICBzZXRTdHJlYW1BY3Rpdml0eShudWxsKVxuICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGFwcGx5U3RyZWFtQWN0aXZpdHkgPSB1c2VDYWxsYmFjaygoYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5KSA9PiB7XG4gICAgc2V0U3RyZWFtQWN0aXZpdHkocHJldiA9PiB7XG4gICAgICBpZiAocHJldj8ucGhhc2UgPT09IGFjdGl2aXR5LnBoYXNlICYmIGNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2UoYWN0aXZpdHkucGhhc2UpKSB7XG4gICAgICAgIHJldHVybiBwcmV2XG4gICAgICB9XG4gICAgICBpZiAocHJldj8ucGhhc2UgIT09IGFjdGl2aXR5LnBoYXNlKSB7XG4gICAgICAgIGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmLmN1cnJlbnQgPSAwXG4gICAgICB9XG4gICAgICBzZXRMb2FkaW5nTWVzc2FnZShhY3Rpdml0eS5tZXNzYWdlKVxuICAgICAgcmV0dXJuIGFjdGl2aXR5XG4gICAgfSlcbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzTG9hZGluZyB8fCBpc1dyaXRpbmcgfHwgIXN0cmVhbUFjdGl2aXR5KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGlmICghY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZShzdHJlYW1BY3Rpdml0eS5waGFzZSkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBpbnRlcnZhbElkID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHNldFN0cmVhbUFjdGl2aXR5KHByZXYgPT4ge1xuICAgICAgICBpZiAoIXByZXYgfHwgIWNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2UocHJldi5waGFzZSkpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIGlmICghY2FuQWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZShwcmV2LnBoYXNlLCBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50KSkge1xuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWR2YW5jZWQgPSBhZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlKHByZXYsIGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmLmN1cnJlbnQsIHQpXG4gICAgICAgIGlmICghYWR2YW5jZWQpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmLmN1cnJlbnQgPSBhZHZhbmNlZC5uZXh0SW5kZXhcbiAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2UoYWR2YW5jZWQuYWN0aXZpdHkubWVzc2FnZSlcbiAgICAgICAgcmV0dXJuIGFkdmFuY2VkLmFjdGl2aXR5XG4gICAgICB9KVxuICAgIH0sIEFDVElWSVRZX01FU1NBR0VfUk9UQVRFX01TKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5jbGVhckludGVydmFsKGludGVydmFsSWQpXG4gIH0sIFtpc0xvYWRpbmcsIGlzV3JpdGluZywgc3RyZWFtQWN0aXZpdHk/LnBoYXNlLCB0XSlcblxuICBjb25zdCBoYW5kbGVTU0VTdHJlYW0gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAvLyByQUYtdGhyb3R0bGU6IGV2aXRhIGVtaXRpciBvblN0cmVhbVVwZGF0ZSBtw6FzIGRlIHVuYSB2ZXogcG9yIGZyYW1lLlxuICAgICAgLy8gQWN1bXVsYSBlbCDDumx0aW1vIHZhbG9yIHkgbG8gbGliZXJhIGVuIGVsIHByw7N4aW1vIHJlcXVlc3RBbmltYXRpb25GcmFtZS5cbiAgICAgIC8vIE5vdGE6IG5vIHRvY2Ftb3MgZWwgc3RhdGUgYGRhdGFgIGVuIGVsIGhvdCBwYXRoIChzb2xvIHNlIGFjdHVhbGl6YSBlblxuICAgICAgLy8gYGNvbXBsZXRlYC9yZXNldHMpIHBhcmEgbm8gcmUtcmVuZGVyaXphciBhIGxvcyBjb25zdW1pZG9yZXMgZGVsIGhvb2tcbiAgICAgIC8vIGVuIGNhZGEgZnJhbWU7IGVsIHRleHRvIGVuIHZpdm8gdmlhamEgcG9yIGVsIHN0cmVhbWluZ1N0b3JlLlxuICAgICAgbGV0IHBlbmRpbmdDb250ZW50OiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICAgICAgbGV0IHJhZklkOiBudW1iZXIgfCBudWxsID0gbnVsbFxuICAgICAgY29uc3QgZW1pdFRocm90dGxlZCA9IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBjb250ZW50XG4gICAgICAgIGlmIChyYWZJZCAhPSBudWxsKSByZXR1cm5cbiAgICAgICAgcmFmSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHJhZklkID0gbnVsbFxuICAgICAgICAgIGlmIChwZW5kaW5nQ29udGVudCAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCB0b0VtaXQgPSBwZW5kaW5nQ29udGVudFxuICAgICAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgICAgICBvblN0cmVhbVVwZGF0ZVJlZi5jdXJyZW50Py4odG9FbWl0LCBudWxsLCAnJylcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBjb25zdCBmbHVzaFBlbmRpbmcgPSAoKSA9PiB7XG4gICAgICAgIGlmIChyYWZJZCAhPSBudWxsKSB7XG4gICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpXG4gICAgICAgICAgcmFmSWQgPSBudWxsXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBlbmRpbmdDb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgICBjb25zdCB0b0VtaXQgPSBwZW5kaW5nQ29udGVudFxuICAgICAgICAgIHBlbmRpbmdDb250ZW50ID0gbnVsbFxuICAgICAgICAgIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQ/Lih0b0VtaXQsIG51bGwsICcnKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpXG4gICAgICAgIGlmICghcmVhZGVyKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyByZWFkZXIgYXZhaWxhYmxlJylcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuICAgICAgICBsZXQgYnVmZmVyID0gJydcbiAgICAgICAgbGV0IGFjY3VtdWxhdGVkQ29udGVudCA9ICcnXG4gICAgICAgIGxldCBoYXNTdGFydGVkV3JpdGluZyA9IGZhbHNlXG5cbiAgICAgICAgY29uc3QgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQgPSAoKSA9PiB7XG4gICAgICAgICAgaWYgKGhhc1N0YXJ0ZWRXcml0aW5nKSByZXR1cm5cbiAgICAgICAgICBoYXNTdGFydGVkV3JpdGluZyA9IHRydWVcbiAgICAgICAgICBzZXRJc1dyaXRpbmcodHJ1ZSlcbiAgICAgICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSh0KSlcbiAgICAgICAgICBvblN0YXJ0V3JpdGluZ1JlZi5jdXJyZW50Py4oKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXBwbHlTdHJlYW1DaHVuayA9IChjaHVuazogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKCFjaHVuaykgcmV0dXJuXG4gICAgICAgICAgYWNjdW11bGF0ZWRDb250ZW50ID0gbWVyZ2VTdHJlYW1DaHVuayhhY2N1bXVsYXRlZENvbnRlbnQsIGNodW5rKVxuICAgICAgICAgIGVtaXRUaHJvdHRsZWQoYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXBwbHlTdHJlYW1Db21wbGV0ZSA9IChwYXlsb2FkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4ge1xuICAgICAgICAgIGNvbnN0IGZpbmFsQ29udGVudCA9IChwYXlsb2FkLmNvbnRlbnQgYXMgc3RyaW5nKSB8fCBhY2N1bXVsYXRlZENvbnRlbnRcbiAgICAgICAgICBjb25zdCBzb3VyY2VzID0gcGF5bG9hZC5zb3VyY2VzIHx8IG51bGxcbiAgICAgICAgICBjb25zdCBtZW1vcnlTZXNzaW9uSWQgPSAocGF5bG9hZC5tZW1vcnlfc2Vzc2lvbl9pZCBhcyBzdHJpbmcpIHx8ICcnXG4gICAgICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBBcnJheS5pc0FycmF5KHBheWxvYWQuYXR0YWNobWVudHMpID8gcGF5bG9hZC5hdHRhY2htZW50cyA6IG51bGxcbiAgICAgICAgICBsZXQgc3VnZ2VzdGlvbnM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGxcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXlsb2FkLnN1Z2dlc3RfcmVwbHkpKSB7XG4gICAgICAgICAgICBzdWdnZXN0aW9ucyA9IHBheWxvYWQuc3VnZ2VzdF9yZXBseSBhcyBzdHJpbmdbXVxuICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwYXlsb2FkLnN1Z2dlc3Rpb25zKSkge1xuICAgICAgICAgICAgc3VnZ2VzdGlvbnMgPSBwYXlsb2FkLnN1Z2dlc3Rpb25zIGFzIHN0cmluZ1tdXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGFnZW50SWRSYXcgPSBwYXlsb2FkLmFnZW50X2lkID8/IHBheWxvYWQuYWdlbnRJZFxuICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZEFnZW50SWQgPVxuICAgICAgICAgICAgYWdlbnRJZFJhdyAhPSBudWxsICYmIFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgIT09ICcnID8gU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSA6IG51bGxcbiAgICAgICAgICBjb25zdCBzdWJhZ2VudFJhdyA9IHBheWxvYWQuc3ViYWdlbnQgYXMgU3ViYWdlbnRSYXdcbiAgICAgICAgICBjb25zdCBzdWJhZ2VudE5hbWUgPSBzdWJhZ2VudFJhdz8ubmFtZT8udHJpbSgpID8gc3ViYWdlbnRSYXcubmFtZS50cmltKCkgOiBudWxsXG4gICAgICAgICAgY29uc3QgcmVzb2x2ZWRDb250ZXh0ID0gc3ViYWdlbnRSYXc/LnJlc29sdmVkX2NvbnRleHQgPz8gbnVsbFxuICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgc2V0RGF0YShmaW5hbENvbnRlbnQpXG4gICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgICAgIG9uRmluaXNoU3RyZWFtUmVmLmN1cnJlbnQ/LihcbiAgICAgICAgICAgIGZpbmFsQ29udGVudCxcbiAgICAgICAgICAgIHNvdXJjZXMsXG4gICAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgICAgICBhdHRhY2htZW50cyxcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zLFxuICAgICAgICAgICAgY29tcGxldGVkQWdlbnRJZCxcbiAgICAgICAgICAgIHN1YmFnZW50TmFtZSxcbiAgICAgICAgICAgIHJlc29sdmVkQ29udGV4dFxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgaWYgKGlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICByZWFkZXIuY2FuY2VsKClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpc1N0b3BwZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgcmVhZGVyLmNhbmNlbCgpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJ1ZmZlciArPSBkZWNvZGVyLmRlY29kZSh2YWx1ZSwgeyBzdHJlYW06IHRydWUgfSlcbiAgICAgICAgICBjb25zdCBsaW5lcyA9IGJ1ZmZlci5zcGxpdCgnXFxuXFxuJylcbiAgICAgICAgICBidWZmZXIgPSBsaW5lcy5wb3AoKSB8fCAnJ1xuXG4gICAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICBpZiAobGluZS50cmltKCkgPT09ICcnKSBjb250aW51ZVxuXG4gICAgICAgICAgICBjb25zdCBbZXZlbnRMaW5lLCBkYXRhTGluZV0gPSBsaW5lLnNwbGl0KCdcXG4nKVxuICAgICAgICAgICAgaWYgKCFldmVudExpbmUgfHwgIWRhdGFMaW5lKSBjb250aW51ZVxuXG4gICAgICAgICAgICBjb25zdCBldmVudFR5cGUgPSBldmVudExpbmUucmVwbGFjZSgnZXZlbnQ6ICcsICcnKS50cmltKClcbiAgICAgICAgICAgIGNvbnN0IGRhdGFTdHIgPSBkYXRhTGluZS5yZXBsYWNlKCdkYXRhOiAnLCAnJykudHJpbSgpXG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGRhdGFTdHIpXG5cbiAgICAgICAgICAgICAgc3dpdGNoIChldmVudFR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd0aGlua2luZyc6XG4gICAgICAgICAgICAgICAgICBpZiAoIWhhc1N0YXJ0ZWRXcml0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgcGhhc2U6ICd0aGlua2luZycsXG4gICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSgwLCB0KSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBjYXNlICd0b2tlbic6IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rID0gdHlwZW9mIGRhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBkYXRhLmNvbnRlbnQgOiAnJ1xuICAgICAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1DaHVuayhjaHVuaylcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSAnY29udGVudCc6IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rID0gdHlwZW9mIGRhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBkYXRhLmNvbnRlbnQgOiAnJ1xuICAgICAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1DaHVuayhjaHVuaylcbiAgICAgICAgICAgICAgICAgIGlmIChpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1Db21wbGV0ZShkYXRhKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjYXNlICdub2RlJzpcbiAgICAgICAgICAgICAgICAgIC8vIE9yY2hlc3RyYXRvciBkZWxlZ2F0ZWQgdG8gYSBzdWJhZ2VudDogc2hvdyB3aGljaCBzcGVjaWFsaXN0XG4gICAgICAgICAgICAgICAgICAvLyBpcyBoYW5kbGluZyB0aGUgcmVxdWVzdCBpbiB0aGUgYWN0aXZpdHkgaW5kaWNhdG9yLlxuICAgICAgICAgICAgICAgICAgaWYgKGRhdGEubm9kZSA9PT0gJ2FnZW50X3RyYW5zZmVyJyAmJiBkYXRhLnN1YmFnZW50Py5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgLy8gJ2FjdGlvbicgcGhhc2UgZG9lcyBub3Qgcm90YXRlIGl0cyBtZXNzYWdlLCBzbyB0aGVcbiAgICAgICAgICAgICAgICAgICAgLy8gXCJDb25zdWx0aW5nIDxhZ2VudD5cIiBsYWJlbCBzdGF5cyB2aXNpYmxlIHdoaWxlIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyBzdWJhZ2VudCB3b3JrcyAoaW5zdGVhZCBvZiBiZWluZyByZXBsYWNlZCBhZnRlciB+M3MpLlxuICAgICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICBwaGFzZTogJ2FjdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogdCgnY2hhdC5hY3Rpdml0eS50cmFuc2ZlcnJpbmdUb0FnZW50JywgeyBuYW1lOiBkYXRhLnN1YmFnZW50Lm5hbWUgfSksXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEubWVzc2FnZSAmJiB0eXBlb2YgZGF0YS5tZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkoXG4gICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHkoXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWY/LmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgZGF0YS50aHJlYWRfaWQgPT09ICdzdHJpbmcnID8gZGF0YS50aHJlYWRfaWQgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBjYXNlICdjb21wbGV0ZSc6XG4gICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUNvbXBsZXRlKGRhdGEpXG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnYXBwcm92YWxfcmVxdWlyZWQnOiB7XG4gICAgICAgICAgICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICAgICAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgY29uc3QgaXNNYW51YWxBcHByb3ZhbCA9IGRhdGEubWFudWFsX2FwcHJvdmFsX2RldGVjdGVkID09PSB0cnVlXG4gICAgICAgICAgICAgICAgICBpZiAoIWlzTWFudWFsQXBwcm92YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgb25BcHByb3ZhbFJlcXVpcmVkUmVmLmN1cnJlbnQ/LihkYXRhLCBhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICAgICAgICAgICAgICBpZiAoaXNNYW51YWxBcHByb3ZhbCAmJiBBcnJheS5pc0FycmF5KGRhdGEucGVuZGluZ19hY3Rpb25zKSAmJiBkYXRhLnBlbmRpbmdfYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eShyZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSh0LCBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZj8uY3VycmVudCkpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NTRSBFcnJvcjonLCBkYXRhLmVycm9yKVxuICAgICAgICAgICAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgICAgICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKSAvLyBMaW1waWFyIG1lbnNhamUgY3VhbmRvIGhheSBlcnJvclxuICAgICAgICAgICAgICAgICAgb25FcnJvclJlZi5jdXJyZW50Py4oZGF0YS5lcnJvcj8udHlwZSwgZGF0YS5lcnJvcj8ubWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdVbmtub3duIFNTRSBldmVudCB0eXBlOicsIGV2ZW50VHlwZSlcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKHBhcnNlRXJyb3IpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBTU0UgZGF0YTonLCBwYXJzZUVycm9yLCBkYXRhU3RyKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuXG4gICAgICAgIC8vIFNvbG8gZWplY3V0YXIgb25FcnJvciBzaSBubyBmdWUgdW4gc3RvcCBpbnRlbmNpb25hbFxuICAgICAgICBpZiAoIWlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgb25FcnJvclJlZi5jdXJyZW50Py4oKVxuICAgICAgICB9XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgIH1cbiAgICB9LFxuICAgIFthcHBseVN0cmVhbUFjdGl2aXR5LCBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSwgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYsIHRdXG4gIClcblxuICBjb25zdCBhc2tNYWlhID0gYXN5bmMgKHtcbiAgICBtZXNzYWdlLFxuICAgIGhpc3RvcnksXG4gICAgcHJvamVjdElkLFxuICAgIGxhbmcsXG4gICAgdXNlcklkLFxuICAgIGZpcnN0TmFtZSxcbiAgICBsYXN0TmFtZSxcbiAgICBjb21wYW55SWQsXG4gICAgY2hhdElkLFxuICAgIG1lc3NhZ2VJZCxcbiAgICBjbGllbnRJZCxcbiAgICBjbGllbnROYW1lLFxuICAgIGZlZUlkLFxuICAgIGFnZW50TmFtZSxcbiAgICBhZ2VudElkLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBhdHRhY2htZW50cyxcbiAgICBwcm9qZWN0TmFtZSxcbiAgICB0YXNrSWQsXG4gICAgdGFza05hbWUsXG4gICAgZmFxSWQsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQsXG4gICAgZnVhSWQsXG4gICAgc2NJZCxcbiAgICBhZ2VudEVudGl0eSxcbiAgICBhZ2VudFR5cGUsXG4gICAgY29udGV4dE1lc3NhZ2UsXG4gIH06IHtcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBoaXN0b3J5OiBDaGF0SGlzdG9yeVtdXG4gICAgcHJvamVjdElkOiBudW1iZXIgfCBudWxsXG4gICAgbGFuZzogc3RyaW5nXG4gICAgdXNlcklkOiBzdHJpbmdcbiAgICBmaXJzdE5hbWU/OiBzdHJpbmdcbiAgICBsYXN0TmFtZT86IHN0cmluZ1xuICAgIGNvbXBhbnlJZDogc3RyaW5nXG4gICAgY2hhdElkOiBzdHJpbmdcbiAgICBtZXNzYWdlSWQ6IHN0cmluZ1xuICAgIGNsaWVudElkPzogbnVtYmVyXG4gICAgY2xpZW50TmFtZT86IHN0cmluZ1xuICAgIGZlZUlkPzogbnVtYmVyXG4gICAgYWdlbnROYW1lOiBzdHJpbmdcbiAgICBhZ2VudElkOiBzdHJpbmdcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBpc0RlZXBTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gICAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbiAgICB0YXNrSWQ/OiBudW1iZXJcbiAgICB0YXNrTmFtZT86IHN0cmluZ1xuICAgIGZhcUlkPzogc3RyaW5nXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmdcbiAgICBmdWFJZD86IHN0cmluZ1xuICAgIHNjSWQ/OiBzdHJpbmdcbiAgICBhZ2VudEVudGl0eT86IEFnZW50RW50aXR5XG4gICAgYWdlbnRUeXBlPzogQWdlbnRUeXBlXG4gICAgY29udGV4dE1lc3NhZ2U/OiBDb250ZXh0TWVzc2FnZVxuICB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIHNldERhdGEobnVsbClcbiAgICAgIGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmLmN1cnJlbnQgPSAwXG4gICAgICBjb25zdCBpbml0aWFsQWN0aXZpdHkgPSBnZXRJbml0aWFsU3RyZWFtQWN0aXZpdHkodCwge1xuICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgICAgICBoYXNBdHRhY2htZW50czogQm9vbGVhbihhdHRhY2htZW50cz8ubGVuZ3RoKSxcbiAgICAgICAgYXR0YWNobWVudHNDb3VudDogYXR0YWNobWVudHM/Lmxlbmd0aCA/PyAwLFxuICAgICAgfSlcbiAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkoaW5pdGlhbEFjdGl2aXR5KVxuICAgICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSBmYWxzZSAvLyBSZXNldGVhciBmbGFnIGFsIGluaWNpYXIgbnVldmEgcGV0aWNpw7NuXG5cbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5PcmNoZXN0cmF0b3Iub3JjaGVzdHJhdG9yKFxuICAgICAgICB7XG4gICAgICAgICAgaW5wdXQ6IG1lc3NhZ2UsXG4gICAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgICBsYW5nLFxuICAgICAgICAgIHVzZXJJZCxcbiAgICAgICAgICAuLi4oZmlyc3ROYW1lID8geyBmaXJzdE5hbWUgfSA6IHt9KSxcbiAgICAgICAgICAuLi4obGFzdE5hbWUgPyB7IGxhc3ROYW1lIH0gOiB7fSksXG4gICAgICAgICAgY29tcGFueUlkLFxuICAgICAgICAgIGNoYXRJZCxcbiAgICAgICAgICBtZXNzYWdlSWQsXG4gICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgLi4uKGZlZUlkICE9IG51bGwgPyB7IGZlZUlkIH0gOiB7fSksXG4gICAgICAgICAgYWdlbnROYW1lLFxuICAgICAgICAgIGFnZW50SWQsXG4gICAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgICAgICAgIC4uLihwcm9qZWN0SWQgPyB7IHByb2plY3RJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihhdHRhY2htZW50cyA/IHsgYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgICAuLi4ocHJvamVjdE5hbWUgPyB7IHByb2plY3ROYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGNsaWVudE5hbWUgPyB7IGNsaWVudE5hbWUgfSA6IHt9KSxcbiAgICAgICAgICAuLi4odGFza0lkICE9IG51bGwgPyB7IHRhc2tJZCB9IDoge30pLFxuICAgICAgICAgIC4uLih0YXNrTmFtZSA/IHsgdGFza05hbWUgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oZmFxSWQgPyB7IGZhcUlkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZCB9IDoge30pLFxuICAgICAgICAgIC4uLihmdWFJZCA/IHsgZnVhSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oc2NJZCA/IHsgc2NJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudEVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eSB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudFR5cGUgIT0gbnVsbCA/IHsgYWdlbnRUeXBlIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGNvbnRleHRNZXNzYWdlID8geyBjb250ZXh0TWVzc2FnZSB9IDoge30pLFxuICAgICAgICB9LFxuICAgICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudD8uc2lnbmFsXG4gICAgICApXG5cbiAgICAgIGF3YWl0IGhhbmRsZVNTRVN0cmVhbShyZXNwb25zZSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gU2kgZnVlIHVuIGFib3J0IGludGVuY2lvbmFsIChzdG9wIG1hbnVhbCBvIGNhbWJpbyBkZSBjaGF0KSwgbm8gZGlzcGFyYXIgb25FcnJvclxuICAgICAgLy8gcG9ycXVlIGVzbyBpbnNlcnRhIHVuIFwibWVuc2FqZSBkZSBlcnJvclwiIGVuIGVsIGNoYXQgYWwgcXVlIGFjYWJhbW9zIGRlIG5hdmVnYXIuXG4gICAgICBpZiAoIWlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgIG9uRXJyb3JSZWYuY3VycmVudD8uKClcbiAgICAgIH1cbiAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3RvcFN0cmVhbWluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIGlzU3RvcHBlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQuYWJvcnQoKVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgb25TdG9wUmVmLmN1cnJlbnQ/LigpXG4gICAgfVxuICB9LCBbY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGVdKVxuXG4gIC8qKlxuICAgKiBBYm9ydGEgZWwgc3RyZWFtIGVuIGN1cnNvIChzaSBleGlzdGUpIHNpbiBkaXNwYXJhciBgb25TdG9wYC5cbiAgICogw5pzZWxvIGVuIGNhc29zIGRvbmRlIG5vIHF1ZXJlbW9zIGFncmVnYXIgZWwgbWVuc2FqZSBkZSBcImNhbmNlbGFkb1wiXG4gICAqIChwb3IgZWplbXBsbywgYWwgY2FtYmlhciBkZSBjaGF0KS5cbiAgICovXG4gIGNvbnN0IGFib3J0U3RyZWFtU2lsZW50bHkgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50KSB7XG4gICAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50LmFib3J0KClcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICB9XG4gIH0sIFtjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZV0pXG5cbiAgLy8gQ2xlYW51cCBhbCBkZXNtb250YXI6IHNpIHF1ZWRhIHVuIHN0cmVhbSBhY3Rpdm8sIGFib3J0YXJsbyBwYXJhIGV2aXRhclxuICAvLyBxdWUgaW50ZW50ZSBhY3R1YWxpemFyIGVzdGFkbyBlbiB1biBjb21wb25lbnRlIHlhIGRlc21vbnRhZG8gKGZ1Z2FzIGRlXG4gIC8vIG1lbW9yaWEgeSB3YXJuaW5ncykuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCkge1xuICAgICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5hYm9ydCgpXG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgdXBkYXRlU3RyZWFtQWN0aXZpdHkgPSB1c2VDYWxsYmFjayhcbiAgICAoYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5IHwgbnVsbCkgPT4ge1xuICAgICAgaWYgKCFhY3Rpdml0eSkge1xuICAgICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eShhY3Rpdml0eSlcbiAgICB9LFxuICAgIFthcHBseVN0cmVhbUFjdGl2aXR5LCBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZV1cbiAgKVxuXG4gIGNvbnN0IHJlc2V0ID0gKCkgPT4ge1xuICAgIHNldERhdGEobnVsbClcbiAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhc2tNYWlhLFxuICAgIHJlc3BvbnNlOiBkYXRhLFxuICAgIGlzTG9hZGluZyxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgdXBkYXRlU3RyZWFtQWN0aXZpdHksXG4gICAgcmVzZXQsXG4gICAgc3RvcFN0cmVhbWluZyxcbiAgICBhYm9ydFN0cmVhbVNpbGVudGx5LFxuICAgIGhhbmRsZVNTRVN0cmVhbSwgLy8gRXhwb25lciBwYXJhIHBvZGVyIHVzYXJsbyBlbiBjb250aW51ZS10aHJlYWRcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsU0FBUyxRQUFRLE9BQU87QUFDaEUsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFFOUMsT0FBT0MsSUFBSSxNQUFNLHFCQUFxQjtBQUt0QyxTQUFTQyxRQUFRLFFBQVEsd0JBQXdCO0FBRWpELFNBQ0VDLDBCQUEwQixFQUMxQkMsNEJBQTRCLEVBQzVCQywrQkFBK0IsRUFDL0JDLDRCQUE0QixFQUM1QkMsd0JBQXdCLEVBQ3hCQyx5QkFBeUIsRUFDekJDLHdCQUF3QixFQUN4QkMsNkJBQTZCLEVBQzdCQyxnQ0FBZ0MsUUFDM0Isb0NBQW9DO0FBQzNDLFNBQVNDLHdCQUF3QixFQUFFQyxnQkFBZ0IsUUFBUSw4QkFBOEI7QUFJekYsT0FBTyxJQUFNQyxxQkFB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
|
|
540
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlVHJhbnNsYXRpb24iLCJtYWlhIiwiU0VDVElPTlMiLCJBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUyIsImFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UiLCJjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlIiwiY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZSIsImdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSIsImdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UiLCJnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5IiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInVzZU9yY2hlc3RyYXRvclN0cmVhbSIsIl9yZWYiLCJvblN0cmVhbVVwZGF0ZSIsIm9uRmluaXNoU3RyZWFtIiwib25TdGFydFdyaXRpbmciLCJvblN0b3AiLCJvbkVycm9yIiwib25BcHByb3ZhbFJlcXVpcmVkIiwiaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYiLCJfdXNlVHJhbnNsYXRpb24iLCJjaGF0QUkiLCJ0IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiZGF0YSIsInNldERhdGEiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzTG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzV3JpdGluZyIsInNldElzV3JpdGluZyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibG9hZGluZ01lc3NhZ2UiLCJzZXRMb2FkaW5nTWVzc2FnZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic3RyZWFtQWN0aXZpdHkiLCJzZXRTdHJlYW1BY3Rpdml0eSIsImFib3J0Q29udHJvbGxlclJlZiIsImlzU3RvcHBlZFJlZiIsImFjdGl2aXR5TWVzc2FnZUluZGV4UmVmIiwib25TdHJlYW1VcGRhdGVSZWYiLCJvbkZpbmlzaFN0cmVhbVJlZiIsIm9uU3RhcnRXcml0aW5nUmVmIiwib25TdG9wUmVmIiwib25FcnJvclJlZiIsIm9uQXBwcm92YWxSZXF1aXJlZFJlZiIsImN1cnJlbnQiLCJjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSIsImFwcGx5U3RyZWFtQWN0aXZpdHkiLCJhY3Rpdml0eSIsInByZXYiLCJwaGFzZSIsIm1lc3NhZ2UiLCJ1bmRlZmluZWQiLCJpbnRlcnZhbElkIiwid2luZG93Iiwic2V0SW50ZXJ2YWwiLCJhZHZhbmNlZCIsIm5leHRJbmRleCIsImNsZWFySW50ZXJ2YWwiLCJoYW5kbGVTU0VTdHJlYW0iLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJfb25FcnJvclJlZiRjdXJyZW50IiwiX2RhdGEkZXJyb3IiLCJfZGF0YSRlcnJvcjIiLCJwZW5kaW5nQ29udGVudCIsInJhZklkIiwiZW1pdFRocm90dGxlZCIsImZsdXNoUGVuZGluZyIsIl9yZXNwb25zZSRib2R5IiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsImhhc1N0YXJ0ZWRXcml0aW5nIiwiZW5zdXJlV3JpdGluZ1N0YXJ0ZWQiLCJhcHBseVN0cmVhbUNodW5rIiwiYXBwbHlTdHJlYW1Db21wbGV0ZSIsIl95aWVsZCRyZWFkZXIkcmVhZCIsImRvbmUiLCJ2YWx1ZSIsImxpbmVzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJsaW5lIiwiX2xpbmUkc3BsaXQiLCJfbGluZSRzcGxpdDIiLCJldmVudExpbmUiLCJkYXRhTGluZSIsImV2ZW50VHlwZSIsImRhdGFTdHIiLCJfZGF0YSIsImNodW5rIiwiX2NodW5rIiwiX29uQXBwcm92YWxSZXF1aXJlZFJlIiwiaXNNYW51YWxBcHByb3ZhbCIsIl9vbkVycm9yUmVmJGN1cnJlbnQyIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0IiwiY29udGVudCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdSIsInRvRW1pdCIsImNhbGwiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdTIiLCJib2R5IiwiZ2V0UmVhZGVyIiwiRXJyb3IiLCJUZXh0RGVjb2RlciIsIl9vblN0YXJ0V3JpdGluZ1JlZiRjdSIsInBheWxvYWQiLCJfcGF5bG9hZCRhZ2VudF9pZCIsIl9vbkZpbmlzaFN0cmVhbVJlZiRjdSIsImZpbmFsQ29udGVudCIsInNvdXJjZXMiLCJtZW1vcnlTZXNzaW9uSWQiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsImF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5Iiwic3VnZ2VzdGlvbnMiLCJzdWdnZXN0X3JlcGx5IiwiYWdlbnRJZFJhdyIsImFnZW50X2lkIiwiYWdlbnRJZCIsImNvbXBsZXRlZEFnZW50SWQiLCJTdHJpbmciLCJ0cmltIiwiY2FuY2VsIiwiYWJydXB0IiwicmVhZCIsInNlbnQiLCJkZWNvZGUiLCJzdHJlYW0iLCJzcGxpdCIsInBvcCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwicyIsIm4iLCJyZXBsYWNlIiwiSlNPTiIsInBhcnNlIiwidGhyZWFkX2lkIiwibWFudWFsX2FwcHJvdmFsX2RldGVjdGVkIiwicGVuZGluZ19hY3Rpb25zIiwibGVuZ3RoIiwiY29uc29sZSIsImVycm9yIiwidHlwZSIsIndhcm4iLCJlIiwiZiIsImZpbmlzaCIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwiYXNrTWFpYSIsIl9yZWY0IiwiX2NhbGxlZTIiLCJfcmVmMyIsImhpc3RvcnkiLCJwcm9qZWN0SWQiLCJsYW5nIiwidXNlcklkIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjb21wYW55SWQiLCJjaGF0SWQiLCJtZXNzYWdlSWQiLCJjbGllbnRJZCIsImNsaWVudE5hbWUiLCJmZWVJZCIsImFnZW50TmFtZSIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwicHJvamVjdE5hbWUiLCJ0YXNrSWQiLCJ0YXNrTmFtZSIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJmdWFJZCIsInNjSWQiLCJhZ2VudEVudGl0eSIsImNvbnRleHRNZXNzYWdlIiwiX2F0dGFjaG1lbnRzJGxlbmd0aCIsIl9hYm9ydENvbnRyb2xsZXJSZWYkYyIsImluaXRpYWxBY3Rpdml0eSIsIl9vbkVycm9yUmVmJGN1cnJlbnQzIiwiX3Q1IiwiX2NvbnRleHQyIiwiaGFzQXR0YWNobWVudHMiLCJCb29sZWFuIiwiYXR0YWNobWVudHNDb3VudCIsIkFib3J0Q29udHJvbGxlciIsIk9yY2hlc3RyYXRvciIsIm9yY2hlc3RyYXRvciIsIl9vYmplY3RTcHJlYWQiLCJpbnB1dCIsInNpZ25hbCIsIl94MiIsInN0b3BTdHJlYW1pbmciLCJfb25TdG9wUmVmJGN1cnJlbnQiLCJhYm9ydCIsImFib3J0U3RyZWFtU2lsZW50bHkiLCJ1cGRhdGVTdHJlYW1BY3Rpdml0eSIsInJlc2V0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZU9yY2hlc3RyYXRvclN0cmVhbS91c2VPcmNoZXN0cmF0b3JTdHJlYW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXNoYWRvdyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc3RhbnQtY29uZGl0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb250aW51ZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY2FzZS1kZWNsYXJhdGlvbnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBDaGF0SGlzdG9yeSB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgeyBBZ2VudEVudGl0eSB9IGZyb20gJy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQ29udGV4dE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IFVzZU9yY2hlc3RyYXRvclN0cmVhbVByb3BzIH0gZnJvbSAnLi91c2VPcmNoZXN0cmF0b3JTdHJlYW0uaW50ZXJmYWNlJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSB9IGZyb20gJy4uLy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHtcbiAgQUNUSVZJVFlfTUVTU0FHRV9ST1RBVEVfTVMsXG4gIGFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UsXG4gIGNhbkFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UsXG4gIGNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2UsXG4gIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSxcbiAgZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSxcbiAgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHksXG59IGZyb20gJy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQsIG1lcmdlU3RyZWFtQ2h1bmsgfSBmcm9tICcuLi8uLi91dGlscy9zc2VTdHJlYW1Db250ZW50J1xuXG5leHBvcnQgY29uc3QgdXNlT3JjaGVzdHJhdG9yU3RyZWFtID0gKHtcbiAgb25TdHJlYW1VcGRhdGUsXG4gIG9uRmluaXNoU3RyZWFtLFxuICBvblN0YXJ0V3JpdGluZyxcbiAgb25TdG9wLFxuICBvbkVycm9yLFxuICBvbkFwcHJvdmFsUmVxdWlyZWQsXG4gIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLFxufTogVXNlT3JjaGVzdHJhdG9yU3RyZWFtUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuY2hhdEFJXSlcbiAgY29uc3QgW2RhdGEsIHNldERhdGFdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzV3JpdGluZywgc2V0SXNXcml0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbG9hZGluZ01lc3NhZ2UsIHNldExvYWRpbmdNZXNzYWdlXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzdHJlYW1BY3Rpdml0eSwgc2V0U3RyZWFtQWN0aXZpdHldID0gdXNlU3RhdGU8U3RyZWFtQWN0aXZpdHkgfCBudWxsPihudWxsKVxuICBjb25zdCBhYm9ydENvbnRyb2xsZXJSZWYgPSB1c2VSZWY8QWJvcnRDb250cm9sbGVyIHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNTdG9wcGVkUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZiA9IHVzZVJlZigwKVxuXG4gIGNvbnN0IG9uU3RyZWFtVXBkYXRlUmVmID0gdXNlUmVmKG9uU3RyZWFtVXBkYXRlKVxuICBjb25zdCBvbkZpbmlzaFN0cmVhbVJlZiA9IHVzZVJlZihvbkZpbmlzaFN0cmVhbSlcbiAgY29uc3Qgb25TdGFydFdyaXRpbmdSZWYgPSB1c2VSZWYob25TdGFydFdyaXRpbmcpXG4gIGNvbnN0IG9uU3RvcFJlZiA9IHVzZVJlZihvblN0b3ApXG4gIGNvbnN0IG9uRXJyb3JSZWYgPSB1c2VSZWYob25FcnJvcilcbiAgY29uc3Qgb25BcHByb3ZhbFJlcXVpcmVkUmVmID0gdXNlUmVmKG9uQXBwcm92YWxSZXF1aXJlZClcblxuICBvblN0cmVhbVVwZGF0ZVJlZi5jdXJyZW50ID0gb25TdHJlYW1VcGRhdGVcbiAgb25GaW5pc2hTdHJlYW1SZWYuY3VycmVudCA9IG9uRmluaXNoU3RyZWFtXG4gIG9uU3RhcnRXcml0aW5nUmVmLmN1cnJlbnQgPSBvblN0YXJ0V3JpdGluZ1xuICBvblN0b3BSZWYuY3VycmVudCA9IG9uU3RvcFxuICBvbkVycm9yUmVmLmN1cnJlbnQgPSBvbkVycm9yXG4gIG9uQXBwcm92YWxSZXF1aXJlZFJlZi5jdXJyZW50ID0gb25BcHByb3ZhbFJlcXVpcmVkXG5cbiAgY29uc3QgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCA9IDBcbiAgICBzZXRTdHJlYW1BY3Rpdml0eShudWxsKVxuICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGFwcGx5U3RyZWFtQWN0aXZpdHkgPSB1c2VDYWxsYmFjaygoYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5KSA9PiB7XG4gICAgc2V0U3RyZWFtQWN0aXZpdHkocHJldiA9PiB7XG4gICAgICBpZiAocHJldj8ucGhhc2UgPT09IGFjdGl2aXR5LnBoYXNlICYmIGNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2UoYWN0aXZpdHkucGhhc2UpKSB7XG4gICAgICAgIHJldHVybiBwcmV2XG4gICAgICB9XG4gICAgICBpZiAocHJldj8ucGhhc2UgIT09IGFjdGl2aXR5LnBoYXNlKSB7XG4gICAgICAgIGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmLmN1cnJlbnQgPSAwXG4gICAgICB9XG4gICAgICBzZXRMb2FkaW5nTWVzc2FnZShhY3Rpdml0eS5tZXNzYWdlKVxuICAgICAgcmV0dXJuIGFjdGl2aXR5XG4gICAgfSlcbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzTG9hZGluZyB8fCBpc1dyaXRpbmcgfHwgIXN0cmVhbUFjdGl2aXR5KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGlmICghY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZShzdHJlYW1BY3Rpdml0eS5waGFzZSkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBpbnRlcnZhbElkID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHNldFN0cmVhbUFjdGl2aXR5KHByZXYgPT4ge1xuICAgICAgICBpZiAoIXByZXYgfHwgIWNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2UocHJldi5waGFzZSkpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIGlmICghY2FuQWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZShwcmV2LnBoYXNlLCBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50KSkge1xuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWR2YW5jZWQgPSBhZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlKHByZXYsIGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmLmN1cnJlbnQsIHQpXG4gICAgICAgIGlmICghYWR2YW5jZWQpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmLmN1cnJlbnQgPSBhZHZhbmNlZC5uZXh0SW5kZXhcbiAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2UoYWR2YW5jZWQuYWN0aXZpdHkubWVzc2FnZSlcbiAgICAgICAgcmV0dXJuIGFkdmFuY2VkLmFjdGl2aXR5XG4gICAgICB9KVxuICAgIH0sIEFDVElWSVRZX01FU1NBR0VfUk9UQVRFX01TKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5jbGVhckludGVydmFsKGludGVydmFsSWQpXG4gIH0sIFtpc0xvYWRpbmcsIGlzV3JpdGluZywgc3RyZWFtQWN0aXZpdHk/LnBoYXNlLCB0XSlcblxuICBjb25zdCBoYW5kbGVTU0VTdHJlYW0gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAvLyByQUYtdGhyb3R0bGU6IGV2aXRhIGVtaXRpciBvblN0cmVhbVVwZGF0ZSBtw6FzIGRlIHVuYSB2ZXogcG9yIGZyYW1lLlxuICAgICAgLy8gQWN1bXVsYSBlbCDDumx0aW1vIHZhbG9yIHkgbG8gbGliZXJhIGVuIGVsIHByw7N4aW1vIHJlcXVlc3RBbmltYXRpb25GcmFtZS5cbiAgICAgIC8vIE5vdGE6IG5vIHRvY2Ftb3MgZWwgc3RhdGUgYGRhdGFgIGVuIGVsIGhvdCBwYXRoIChzb2xvIHNlIGFjdHVhbGl6YSBlblxuICAgICAgLy8gYGNvbXBsZXRlYC9yZXNldHMpIHBhcmEgbm8gcmUtcmVuZGVyaXphciBhIGxvcyBjb25zdW1pZG9yZXMgZGVsIGhvb2tcbiAgICAgIC8vIGVuIGNhZGEgZnJhbWU7IGVsIHRleHRvIGVuIHZpdm8gdmlhamEgcG9yIGVsIHN0cmVhbWluZ1N0b3JlLlxuICAgICAgbGV0IHBlbmRpbmdDb250ZW50OiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICAgICAgbGV0IHJhZklkOiBudW1iZXIgfCBudWxsID0gbnVsbFxuICAgICAgY29uc3QgZW1pdFRocm90dGxlZCA9IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBjb250ZW50XG4gICAgICAgIGlmIChyYWZJZCAhPSBudWxsKSByZXR1cm5cbiAgICAgICAgcmFmSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHJhZklkID0gbnVsbFxuICAgICAgICAgIGlmIChwZW5kaW5nQ29udGVudCAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCB0b0VtaXQgPSBwZW5kaW5nQ29udGVudFxuICAgICAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgICAgICBvblN0cmVhbVVwZGF0ZVJlZi5jdXJyZW50Py4odG9FbWl0LCBudWxsLCAnJylcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBjb25zdCBmbHVzaFBlbmRpbmcgPSAoKSA9PiB7XG4gICAgICAgIGlmIChyYWZJZCAhPSBudWxsKSB7XG4gICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpXG4gICAgICAgICAgcmFmSWQgPSBudWxsXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBlbmRpbmdDb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgICBjb25zdCB0b0VtaXQgPSBwZW5kaW5nQ29udGVudFxuICAgICAgICAgIHBlbmRpbmdDb250ZW50ID0gbnVsbFxuICAgICAgICAgIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQ/Lih0b0VtaXQsIG51bGwsICcnKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpXG4gICAgICAgIGlmICghcmVhZGVyKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyByZWFkZXIgYXZhaWxhYmxlJylcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuICAgICAgICBsZXQgYnVmZmVyID0gJydcbiAgICAgICAgbGV0IGFjY3VtdWxhdGVkQ29udGVudCA9ICcnXG4gICAgICAgIGxldCBoYXNTdGFydGVkV3JpdGluZyA9IGZhbHNlXG5cbiAgICAgICAgY29uc3QgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQgPSAoKSA9PiB7XG4gICAgICAgICAgaWYgKGhhc1N0YXJ0ZWRXcml0aW5nKSByZXR1cm5cbiAgICAgICAgICBoYXNTdGFydGVkV3JpdGluZyA9IHRydWVcbiAgICAgICAgICBzZXRJc1dyaXRpbmcodHJ1ZSlcbiAgICAgICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSh0KSlcbiAgICAgICAgICBvblN0YXJ0V3JpdGluZ1JlZi5jdXJyZW50Py4oKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXBwbHlTdHJlYW1DaHVuayA9IChjaHVuazogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKCFjaHVuaykgcmV0dXJuXG4gICAgICAgICAgYWNjdW11bGF0ZWRDb250ZW50ID0gbWVyZ2VTdHJlYW1DaHVuayhhY2N1bXVsYXRlZENvbnRlbnQsIGNodW5rKVxuICAgICAgICAgIGVtaXRUaHJvdHRsZWQoYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXBwbHlTdHJlYW1Db21wbGV0ZSA9IChwYXlsb2FkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4ge1xuICAgICAgICAgIGNvbnN0IGZpbmFsQ29udGVudCA9IChwYXlsb2FkLmNvbnRlbnQgYXMgc3RyaW5nKSB8fCBhY2N1bXVsYXRlZENvbnRlbnRcbiAgICAgICAgICBjb25zdCBzb3VyY2VzID0gcGF5bG9hZC5zb3VyY2VzIHx8IG51bGxcbiAgICAgICAgICBjb25zdCBtZW1vcnlTZXNzaW9uSWQgPSAocGF5bG9hZC5tZW1vcnlfc2Vzc2lvbl9pZCBhcyBzdHJpbmcpIHx8ICcnXG4gICAgICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBBcnJheS5pc0FycmF5KHBheWxvYWQuYXR0YWNobWVudHMpID8gcGF5bG9hZC5hdHRhY2htZW50cyA6IG51bGxcbiAgICAgICAgICBsZXQgc3VnZ2VzdGlvbnM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGxcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXlsb2FkLnN1Z2dlc3RfcmVwbHkpKSB7XG4gICAgICAgICAgICBzdWdnZXN0aW9ucyA9IHBheWxvYWQuc3VnZ2VzdF9yZXBseSBhcyBzdHJpbmdbXVxuICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwYXlsb2FkLnN1Z2dlc3Rpb25zKSkge1xuICAgICAgICAgICAgc3VnZ2VzdGlvbnMgPSBwYXlsb2FkLnN1Z2dlc3Rpb25zIGFzIHN0cmluZ1tdXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGFnZW50SWRSYXcgPSBwYXlsb2FkLmFnZW50X2lkID8/IHBheWxvYWQuYWdlbnRJZFxuICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZEFnZW50SWQgPVxuICAgICAgICAgICAgYWdlbnRJZFJhdyAhPSBudWxsICYmIFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgIT09ICcnID8gU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSA6IG51bGxcbiAgICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICAgIHNldERhdGEoZmluYWxDb250ZW50KVxuICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgICAgICBvbkZpbmlzaFN0cmVhbVJlZi5jdXJyZW50Py4oXG4gICAgICAgICAgICBmaW5hbENvbnRlbnQsXG4gICAgICAgICAgICBzb3VyY2VzLFxuICAgICAgICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgICAgICAgYXR0YWNobWVudHMsXG4gICAgICAgICAgICBzdWdnZXN0aW9ucyxcbiAgICAgICAgICAgIGNvbXBsZXRlZEFnZW50SWRcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgIGlmIChpc1N0b3BwZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgcmVhZGVyLmNhbmNlbCgpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcbiAgICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJlYWRlci5jYW5jZWwoKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBidWZmZXIgKz0gZGVjb2Rlci5kZWNvZGUodmFsdWUsIHsgc3RyZWFtOiB0cnVlIH0pXG4gICAgICAgICAgY29uc3QgbGluZXMgPSBidWZmZXIuc3BsaXQoJ1xcblxcbicpXG4gICAgICAgICAgYnVmZmVyID0gbGluZXMucG9wKCkgfHwgJydcblxuICAgICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgICAgICAgaWYgKGxpbmUudHJpbSgpID09PSAnJykgY29udGludWVcblxuICAgICAgICAgICAgY29uc3QgW2V2ZW50TGluZSwgZGF0YUxpbmVdID0gbGluZS5zcGxpdCgnXFxuJylcbiAgICAgICAgICAgIGlmICghZXZlbnRMaW5lIHx8ICFkYXRhTGluZSkgY29udGludWVcblxuICAgICAgICAgICAgY29uc3QgZXZlbnRUeXBlID0gZXZlbnRMaW5lLnJlcGxhY2UoJ2V2ZW50OiAnLCAnJykudHJpbSgpXG4gICAgICAgICAgICBjb25zdCBkYXRhU3RyID0gZGF0YUxpbmUucmVwbGFjZSgnZGF0YTogJywgJycpLnRyaW0oKVxuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShkYXRhU3RyKVxuXG4gICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAndGhpbmtpbmcnOlxuICAgICAgICAgICAgICAgICAgaWYgKCFoYXNTdGFydGVkV3JpdGluZykge1xuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgIHBoYXNlOiAndGhpbmtpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UoMCwgdCksXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgY2FzZSAndG9rZW4nOiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBjaHVuayA9IHR5cGVvZiBkYXRhLmNvbnRlbnQgPT09ICdzdHJpbmcnID8gZGF0YS5jb250ZW50IDogJydcbiAgICAgICAgICAgICAgICAgIGVuc3VyZVdyaXRpbmdTdGFydGVkKClcbiAgICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ2h1bmsoY2h1bmspXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRlbnQnOiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBjaHVuayA9IHR5cGVvZiBkYXRhLmNvbnRlbnQgPT09ICdzdHJpbmcnID8gZGF0YS5jb250ZW50IDogJydcbiAgICAgICAgICAgICAgICAgIGVuc3VyZVdyaXRpbmdTdGFydGVkKClcbiAgICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ2h1bmsoY2h1bmspXG4gICAgICAgICAgICAgICAgICBpZiAoaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkKGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ29tcGxldGUoZGF0YSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSAnbm9kZSc6XG4gICAgICAgICAgICAgICAgICBpZiAoZGF0YS5tZXNzYWdlICYmIHR5cGVvZiBkYXRhLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eShcbiAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eShcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZj8uY3VycmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBkYXRhLnRocmVhZF9pZCA9PT0gJ3N0cmluZycgPyBkYXRhLnRocmVhZF9pZCA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbXBsZXRlJzpcbiAgICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ29tcGxldGUoZGF0YSlcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBjYXNlICdhcHByb3ZhbF9yZXF1aXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICBjb25zdCBpc01hbnVhbEFwcHJvdmFsID0gZGF0YS5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQgPT09IHRydWVcbiAgICAgICAgICAgICAgICAgIGlmICghaXNNYW51YWxBcHByb3ZhbCkge1xuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBvbkFwcHJvdmFsUmVxdWlyZWRSZWYuY3VycmVudD8uKGRhdGEsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICAgICAgICAgIGlmIChpc01hbnVhbEFwcHJvdmFsICYmIEFycmF5LmlzQXJyYXkoZGF0YS5wZW5kaW5nX2FjdGlvbnMpICYmIGRhdGEucGVuZGluZ19hY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5KHQsIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmPy5jdXJyZW50KSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignU1NFIEVycm9yOicsIGRhdGEuZXJyb3IpXG4gICAgICAgICAgICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICAgICAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgICAgICAgICAgICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpIC8vIExpbXBpYXIgbWVuc2FqZSBjdWFuZG8gaGF5IGVycm9yXG4gICAgICAgICAgICAgICAgICBvbkVycm9yUmVmLmN1cnJlbnQ/LihkYXRhLmVycm9yPy50eXBlLCBkYXRhLmVycm9yPy5tZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1Vua25vd24gU1NFIGV2ZW50IHR5cGU6JywgZXZlbnRUeXBlKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIFNTRSBkYXRhOicsIHBhcnNlRXJyb3IsIGRhdGFTdHIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG5cbiAgICAgICAgLy8gU29sbyBlamVjdXRhciBvbkVycm9yIHNpIG5vIGZ1ZSB1biBzdG9wIGludGVuY2lvbmFsXG4gICAgICAgIGlmICghaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBvbkVycm9yUmVmLmN1cnJlbnQ/LigpXG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FwcGx5U3RyZWFtQWN0aXZpdHksIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlLCBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZiwgdF1cbiAgKVxuXG4gIGNvbnN0IGFza01haWEgPSBhc3luYyAoe1xuICAgIG1lc3NhZ2UsXG4gICAgaGlzdG9yeSxcbiAgICBwcm9qZWN0SWQsXG4gICAgbGFuZyxcbiAgICB1c2VySWQsXG4gICAgZmlyc3ROYW1lLFxuICAgIGxhc3ROYW1lLFxuICAgIGNvbXBhbnlJZCxcbiAgICBjaGF0SWQsXG4gICAgbWVzc2FnZUlkLFxuICAgIGNsaWVudElkLFxuICAgIGNsaWVudE5hbWUsXG4gICAgZmVlSWQsXG4gICAgYWdlbnROYW1lLFxuICAgIGFnZW50SWQsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGF0dGFjaG1lbnRzLFxuICAgIHByb2plY3ROYW1lLFxuICAgIHRhc2tJZCxcbiAgICB0YXNrTmFtZSxcbiAgICBmYXFJZCxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZCxcbiAgICBmdWFJZCxcbiAgICBzY0lkLFxuICAgIGFnZW50RW50aXR5LFxuICAgIGNvbnRleHRNZXNzYWdlLFxuICB9OiB7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgaGlzdG9yeTogQ2hhdEhpc3RvcnlbXVxuICAgIHByb2plY3RJZDogbnVtYmVyIHwgbnVsbFxuICAgIGxhbmc6IHN0cmluZ1xuICAgIHVzZXJJZDogc3RyaW5nXG4gICAgZmlyc3ROYW1lPzogc3RyaW5nXG4gICAgbGFzdE5hbWU/OiBzdHJpbmdcbiAgICBjb21wYW55SWQ6IHN0cmluZ1xuICAgIGNoYXRJZDogc3RyaW5nXG4gICAgbWVzc2FnZUlkOiBzdHJpbmdcbiAgICBjbGllbnRJZD86IG51bWJlclxuICAgIGNsaWVudE5hbWU/OiBzdHJpbmdcbiAgICBmZWVJZD86IG51bWJlclxuICAgIGFnZW50TmFtZTogc3RyaW5nXG4gICAgYWdlbnRJZDogc3RyaW5nXG4gICAgaXNXZWJTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICAgIHByb2plY3ROYW1lPzogc3RyaW5nXG4gICAgdGFza0lkPzogbnVtYmVyXG4gICAgdGFza05hbWU/OiBzdHJpbmdcbiAgICBmYXFJZD86IHN0cmluZ1xuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gICAgZnVhSWQ/OiBzdHJpbmdcbiAgICBzY0lkPzogc3RyaW5nXG4gICAgYWdlbnRFbnRpdHk/OiBBZ2VudEVudGl0eVxuICAgIGNvbnRleHRNZXNzYWdlPzogQ29udGV4dE1lc3NhZ2VcbiAgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBzZXREYXRhKG51bGwpXG4gICAgICBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50ID0gMFxuICAgICAgY29uc3QgaW5pdGlhbEFjdGl2aXR5ID0gZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5KHQsIHtcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICAgICAgaGFzQXR0YWNobWVudHM6IEJvb2xlYW4oYXR0YWNobWVudHM/Lmxlbmd0aCksXG4gICAgICAgIGF0dGFjaG1lbnRzQ291bnQ6IGF0dGFjaG1lbnRzPy5sZW5ndGggPz8gMCxcbiAgICAgIH0pXG4gICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KGluaXRpYWxBY3Rpdml0eSlcbiAgICAgIGlzU3RvcHBlZFJlZi5jdXJyZW50ID0gZmFsc2UgLy8gUmVzZXRlYXIgZmxhZyBhbCBpbmljaWFyIG51ZXZhIHBldGljacOzblxuXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLm9yY2hlc3RyYXRvcihcbiAgICAgICAge1xuICAgICAgICAgIGlucHV0OiBtZXNzYWdlLFxuICAgICAgICAgIGhpc3RvcnksXG4gICAgICAgICAgbGFuZyxcbiAgICAgICAgICB1c2VySWQsXG4gICAgICAgICAgLi4uKGZpcnN0TmFtZSA/IHsgZmlyc3ROYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGxhc3ROYW1lID8geyBsYXN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIGNvbXBhbnlJZCxcbiAgICAgICAgICBjaGF0SWQsXG4gICAgICAgICAgbWVzc2FnZUlkLFxuICAgICAgICAgIGNsaWVudElkLFxuICAgICAgICAgIC4uLihmZWVJZCAhPSBudWxsID8geyBmZWVJZCB9IDoge30pLFxuICAgICAgICAgIGFnZW50TmFtZSxcbiAgICAgICAgICBhZ2VudElkLFxuICAgICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICAgICAgICAuLi4ocHJvamVjdElkID8geyBwcm9qZWN0SWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYXR0YWNobWVudHMgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHByb2plY3ROYW1lID8geyBwcm9qZWN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLihjbGllbnROYW1lID8geyBjbGllbnROYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHRhc2tJZCAhPSBudWxsID8geyB0YXNrSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4odGFza05hbWUgPyB7IHRhc2tOYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGZhcUlkID8geyBmYXFJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oZnVhSWQgPyB7IGZ1YUlkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHNjSWQgPyB7IHNjSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnRFbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50Py5zaWduYWxcbiAgICAgIClcblxuICAgICAgYXdhaXQgaGFuZGxlU1NFU3RyZWFtKHJlc3BvbnNlKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBTaSBmdWUgdW4gYWJvcnQgaW50ZW5jaW9uYWwgKHN0b3AgbWFudWFsIG8gY2FtYmlvIGRlIGNoYXQpLCBubyBkaXNwYXJhciBvbkVycm9yXG4gICAgICAvLyBwb3JxdWUgZXNvIGluc2VydGEgdW4gXCJtZW5zYWplIGRlIGVycm9yXCIgZW4gZWwgY2hhdCBhbCBxdWUgYWNhYmFtb3MgZGUgbmF2ZWdhci5cbiAgICAgIGlmICghaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgb25FcnJvclJlZi5jdXJyZW50Py4oKVxuICAgICAgfVxuICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBzdG9wU3RyZWFtaW5nID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCkge1xuICAgICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5hYm9ydCgpXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICBvblN0b3BSZWYuY3VycmVudD8uKClcbiAgICB9XG4gIH0sIFtjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZV0pXG5cbiAgLyoqXG4gICAqIEFib3J0YSBlbCBzdHJlYW0gZW4gY3Vyc28gKHNpIGV4aXN0ZSkgc2luIGRpc3BhcmFyIGBvblN0b3BgLlxuICAgKiDDmnNlbG8gZW4gY2Fzb3MgZG9uZGUgbm8gcXVlcmVtb3MgYWdyZWdhciBlbCBtZW5zYWplIGRlIFwiY2FuY2VsYWRvXCJcbiAgICogKHBvciBlamVtcGxvLCBhbCBjYW1iaWFyIGRlIGNoYXQpLlxuICAgKi9cbiAgY29uc3QgYWJvcnRTdHJlYW1TaWxlbnRseSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIGlzU3RvcHBlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQuYWJvcnQoKVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgIH1cbiAgfSwgW2NsZWFyU3RyZWFtTG9hZGluZ1N0YXRlXSlcblxuICAvLyBDbGVhbnVwIGFsIGRlc21vbnRhcjogc2kgcXVlZGEgdW4gc3RyZWFtIGFjdGl2bywgYWJvcnRhcmxvIHBhcmEgZXZpdGFyXG4gIC8vIHF1ZSBpbnRlbnRlIGFjdHVhbGl6YXIgZXN0YWRvIGVuIHVuIGNvbXBvbmVudGUgeWEgZGVzbW9udGFkbyAoZnVnYXMgZGVcbiAgLy8gbWVtb3JpYSB5IHdhcm5pbmdzKS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50KSB7XG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50LmFib3J0KClcbiAgICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCB1cGRhdGVTdHJlYW1BY3Rpdml0eSA9IHVzZUNhbGxiYWNrKFxuICAgIChhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkgfCBudWxsKSA9PiB7XG4gICAgICBpZiAoIWFjdGl2aXR5KSB7XG4gICAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KGFjdGl2aXR5KVxuICAgIH0sXG4gICAgW2FwcGx5U3RyZWFtQWN0aXZpdHksIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlXVxuICApXG5cbiAgY29uc3QgcmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0RGF0YShudWxsKVxuICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFza01haWEsXG4gICAgcmVzcG9uc2U6IGRhdGEsXG4gICAgaXNMb2FkaW5nLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBzdHJlYW1BY3Rpdml0eSxcbiAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eSxcbiAgICByZXNldCxcbiAgICBzdG9wU3RyZWFtaW5nLFxuICAgIGFib3J0U3RyZWFtU2lsZW50bHksXG4gICAgaGFuZGxlU1NFU3RyZWFtLCAvLyBFeHBvbmVyIHBhcmEgcG9kZXIgdXNhcmxvIGVuIGNvbnRpbnVlLXRocmVhZFxuICB9XG59XG4iXSwibWFwcGluZ3Mi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
|
|
@@ -115,49 +115,6 @@ export var useProjectSummaryConfig = function useProjectSummaryConfig(_ref) {
|
|
|
115
115
|
var setChipsProject = useCallback(function (newChipsProject) {
|
|
116
116
|
setChipsProjectState(newChipsProject);
|
|
117
117
|
}, []);
|
|
118
|
-
|
|
119
|
-
// Pin derivado (RFC §12.2): la entidad más específica activa (tarea > proyecto > cliente),
|
|
120
|
-
// con su scope hacia arriba en `parents`. Mono hoy; array-ready para cross-entity.
|
|
121
|
-
var pinnedContext = useMemo(function () {
|
|
122
|
-
if ((task === null || task === void 0 ? void 0 : task.id) != null) {
|
|
123
|
-
return {
|
|
124
|
-
type: 'task',
|
|
125
|
-
id: task.id,
|
|
126
|
-
name: task.name,
|
|
127
|
-
parents: _objectSpread(_objectSpread({}, task.clientId != null ? {
|
|
128
|
-
clientId: task.clientId
|
|
129
|
-
} : {}), task.projectId != null ? {
|
|
130
|
-
projectId: task.projectId
|
|
131
|
-
} : {})
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
if (chipsProject !== null && chipsProject !== void 0 && chipsProject.projectId) {
|
|
135
|
-
return {
|
|
136
|
-
type: 'project',
|
|
137
|
-
id: chipsProject.projectId,
|
|
138
|
-
name: chipsProject.projectName
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
if ((project === null || project === void 0 ? void 0 : project.id) != null) {
|
|
142
|
-
return _objectSpread({
|
|
143
|
-
type: 'project',
|
|
144
|
-
id: project.id,
|
|
145
|
-
name: project.name
|
|
146
|
-
}, project.clientId != null ? {
|
|
147
|
-
parents: {
|
|
148
|
-
clientId: project.clientId
|
|
149
|
-
}
|
|
150
|
-
} : {});
|
|
151
|
-
}
|
|
152
|
-
if ((client === null || client === void 0 ? void 0 : client.id) != null) {
|
|
153
|
-
return {
|
|
154
|
-
type: 'client',
|
|
155
|
-
id: client.id,
|
|
156
|
-
name: client.name
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
return null;
|
|
160
|
-
}, [task === null || task === void 0 ? void 0 : task.id, task === null || task === void 0 ? void 0 : task.name, task === null || task === void 0 ? void 0 : task.clientId, task === null || task === void 0 ? void 0 : task.projectId, chipsProject, project === null || project === void 0 ? void 0 : project.id, project === null || project === void 0 ? void 0 : project.name, project === null || project === void 0 ? void 0 : project.clientId, client === null || client === void 0 ? void 0 : client.id, client === null || client === void 0 ? void 0 : client.name]);
|
|
161
118
|
var context = useMemo(function () {
|
|
162
119
|
return {
|
|
163
120
|
entityValues: entityValues,
|
|
@@ -180,13 +137,12 @@ export var useProjectSummaryConfig = function useProjectSummaryConfig(_ref) {
|
|
|
180
137
|
toggleDeepSearch: toggleDeepSearch,
|
|
181
138
|
hasMultiAgents: hasMultiAgents,
|
|
182
139
|
chipsProject: chipsProject,
|
|
183
|
-
setChipsProject: setChipsProject
|
|
184
|
-
pinnedContext: pinnedContext
|
|
140
|
+
setChipsProject: setChipsProject
|
|
185
141
|
};
|
|
186
|
-
}, [openSection, entityValues === null || entityValues === void 0 ? void 0 : entityValues.projectId, entityValues === null || entityValues === void 0 ? void 0 : entityValues.clientId, agent, selectAgent, clearAgent, setEntityValues, restoreConfigureSettings, project === null || project === void 0 ? void 0 : project.id, setProject, client === null || client === void 0 ? void 0 : client.id, setClient, task === null || task === void 0 ? void 0 : task.id, setTask, isWebSearchActive, toggleWebSearch, isDeepSearchActive, toggleDeepSearch, hasMultiAgents, chipsProject, setChipsProject
|
|
142
|
+
}, [openSection, entityValues === null || entityValues === void 0 ? void 0 : entityValues.projectId, entityValues === null || entityValues === void 0 ? void 0 : entityValues.clientId, agent, selectAgent, clearAgent, setEntityValues, restoreConfigureSettings, project === null || project === void 0 ? void 0 : project.id, setProject, client === null || client === void 0 ? void 0 : client.id, setClient, task === null || task === void 0 ? void 0 : task.id, setTask, isWebSearchActive, toggleWebSearch, isDeepSearchActive, toggleDeepSearch, hasMultiAgents, chipsProject, setChipsProject]);
|
|
187
143
|
return {
|
|
188
144
|
context: context,
|
|
189
145
|
restoreConfigureSettings: restoreConfigureSettings
|
|
190
146
|
};
|
|
191
147
|
};
|
|
192
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIlNFQ1RJT05TIiwiYnVpbGRDb25maWd1cmVTZXR0aW5nc0l0ZW1zIiwidXNlVXNlciIsInVzZVRXaXRoU2VjdGlvbiIsInVzZVByb2plY3RTdW1tYXJ5Q29uZmlnIiwiX3JlZiIsInNlY3Rpb24iLCJlbnRpdHkiLCJwcm9qZWN0Iiwic2V0UHJvamVjdCIsIl9yZWYkY2xpZW50IiwiY2xpZW50IiwiaW5pdGlhbENsaWVudCIsInNldENsaWVudFByb3AiLCJzZXRDbGllbnQiLCJfcmVmJHRhc2siLCJ0YXNrIiwiaW5pdGlhbFRhc2siLCJoYXNNdWx0aUFnZW50cyIsInVzZXIiLCJ0IiwiY2hhdEFJIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiYWdlbnQiLCJzZXRBZ2VudCIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwib3BlblNlY3Rpb24iLCJzZXRPcGVuU2VjdGlvbiIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJzZXRJc1dlYlNlYXJjaEFjdGl2ZSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwic2V0SXNEZWVwU2VhcmNoQWN0aXZlIiwiX3VzZVN0YXRlOSIsInByb2plY3RJZCIsImNsaWVudElkIiwiX3VzZVN0YXRlMCIsImVudGl0eVZhbHVlcyIsInNldEVudGl0eVZhbHVlcyIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsInNldENsaWVudFN0YXRlIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsInNldFRhc2tTdGF0ZSIsInNldFRhc2siLCJuZXdUYXNrIiwiY29uZmlndXJlU2V0dGluZ3NJdGVtcyIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJjaGlwc1Byb2plY3QiLCJzZXRDaGlwc1Byb2plY3RTdGF0ZSIsIl9lbnRpdHkkcHJvamVjdElkIiwiX2VudGl0eSRjbGllbnRJZCIsInJlc3RvcmVDb25maWd1cmVTZXR0aW5ncyIsIl9jb25maWd1cmVTZXR0aW5nc0l0ZSIsImN1cnJlbnQiLCJtYXAiLCJpdGVtIiwiX29iamVjdFNwcmVhZCIsImNoZWNrZWQiLCJoaWRkZW4iLCJzZWxlY3RBZ2VudCIsIm5ld0FnZW50IiwiY2xlYXJBZ2VudCIsInRvZ2dsZVdlYlNlYXJjaCIsInByZXYiLCJ0b2dnbGVEZWVwU2VhcmNoIiwic2V0Q2hpcHNQcm9qZWN0IiwibmV3Q2hpcHNQcm9qZWN0IiwicGlubmVkQ29udGV4dCIsImlkIiwidHlwZSIsIm5hbWUiLCJwYXJlbnRzIiwicHJvamVjdE5hbWUiLCJjb250ZXh0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZVByb2plY3RTdW1tYXJ5Q29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgQ2hpcHNQcm9qZWN0LCBQaW5uZWRDb250ZXh0IH0gZnJvbSAnLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB7IGJ1aWxkQ29uZmlndXJlU2V0dGluZ3NJdGVtcyB9IGZyb20gJy4uL2NvbnN0YW50cy9wZXJtaXNzaW9ucydcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi90eXBlcy9hZ2VudCdcblxuaW1wb3J0IHsgdXNlVFdpdGhTZWN0aW9uIH0gZnJvbSAnLi91c2VUJ1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uL3R5cGVzL1Byb2plY3QnXG5pbXBvcnQgeyBDbGllbnQgfSBmcm9tICcuLi90eXBlcy9DbGllbnQnXG5pbXBvcnQgeyBUYXNrIH0gZnJvbSAnLi4vdHlwZXMvVGFzaydcblxudHlwZSBQcm9qZWN0U3VtbWFyeUNvbmZpZ1Byb3BzID0ge1xuICBzZWN0aW9uOiAncHJvamVjdCcgfCAnaGVhZGVyJyB8ICdjbGllbnQnIHwgJ3Rhc2snXG4gIGVudGl0eT86IHtcbiAgICBwcm9qZWN0SWQ6IHN0cmluZyB8IG51bGxcbiAgICBjbGllbnRJZDogc3RyaW5nIHwgbnVsbFxuICB9IHwgbnVsbFxuICBwcm9qZWN0OiBQcm9qZWN0IHwgbnVsbFxuICBzZXRQcm9qZWN0OiAocHJvamVjdDogUHJvamVjdCB8IG51bGwpID0+IHZvaWRcbiAgY2xpZW50PzogQ2xpZW50IHwgbnVsbFxuICBzZXRDbGllbnQ/OiAoY2xpZW50OiBDbGllbnQgfCBudWxsKSA9PiB2b2lkXG4gIHRhc2s/OiBUYXNrIHwgbnVsbFxuICBoYXNNdWx0aUFnZW50cz86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNvbnN0IHVzZVByb2plY3RTdW1tYXJ5Q29uZmlnID0gKHtcbiAgc2VjdGlvbixcbiAgZW50aXR5LFxuICBwcm9qZWN0LFxuICBzZXRQcm9qZWN0LFxuICBjbGllbnQ6IGluaXRpYWxDbGllbnQgPSBudWxsLFxuICBzZXRDbGllbnQ6IHNldENsaWVudFByb3AsXG4gIHRhc2s6IGluaXRpYWxUYXNrID0gbnVsbCxcbiAgaGFzTXVsdGlBZ2VudHMsXG59OiBQcm9qZWN0U3VtbWFyeUNvbmZpZ1Byb3BzKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgdCA9IHVzZVRXaXRoU2VjdGlvbihTRUNUSU9OUy5jaGF0QUkpXG4gIGNvbnN0IFthZ2VudCwgc2V0QWdlbnRdID0gdXNlU3RhdGU8QWdlbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBbb3BlblNlY3Rpb24sIHNldE9wZW5TZWN0aW9uXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtpc1dlYlNlYXJjaEFjdGl2ZSwgc2V0SXNXZWJTZWFyY2hBY3RpdmVdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpXG4gIGNvbnN0IFtpc0RlZXBTZWFyY2hBY3RpdmUsIHNldElzRGVlcFNlYXJjaEFjdGl2ZV0gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSlcbiAgY29uc3QgW2VudGl0eVZhbHVlcywgc2V0RW50aXR5VmFsdWVzXSA9IHVzZVN0YXRlPHtcbiAgICBwcm9qZWN0SWQ6IHN0cmluZyB8IG51bGxcbiAgICBjbGllbnRJZDogc3RyaW5nIHwgbnVsbFxuICB9PihlbnRpdHkgfHwgeyBwcm9qZWN0SWQ6IG51bGwsIGNsaWVudElkOiBudWxsIH0pXG4gIGNvbnN0IFtjbGllbnQsIHNldENsaWVudFN0YXRlXSA9IHVzZVN0YXRlPENsaWVudCB8IG51bGw+KGluaXRpYWxDbGllbnQgPz8gbnVsbClcblxuICBjb25zdCBzZXRDbGllbnQgPSBzZXRDbGllbnRQcm9wID8/IHNldENsaWVudFN0YXRlXG5cbiAgY29uc3QgW3Rhc2ssIHNldFRhc2tTdGF0ZV0gPSB1c2VTdGF0ZTxUYXNrIHwgbnVsbD4oaW5pdGlhbFRhc2sgPz8gbnVsbClcbiAgY29uc3Qgc2V0VGFzayA9IHVzZUNhbGxiYWNrKChuZXdUYXNrOiBUYXNrIHwgbnVsbCkgPT4gc2V0VGFza1N0YXRlKG5ld1Rhc2spLCBbXSlcblxuICBjb25zdCBjb25maWd1cmVTZXR0aW5nc0l0ZW1zID0gdXNlUmVmKGJ1aWxkQ29uZmlndXJlU2V0dGluZ3NJdGVtcyh1c2VyLCB0KSlcbiAgY29uc3QgW2NoaXBzUHJvamVjdCwgc2V0Q2hpcHNQcm9qZWN0U3RhdGVdID0gdXNlU3RhdGU8Q2hpcHNQcm9qZWN0IHwgbnVsbD4obnVsbClcblxuICAvLyBTaW5jcm9uaXphciBjbGllbnQgY3VhbmRvIGxhIHByb3AgbGxlZ3VlIGRlc3B1w6lzIGRlbCBwcmltZXIgcmVuZGVyIChlai4gc2VjdGlvbiBjbGllbnQsIGRhdG9zIGFzeW5jKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzZWN0aW9uID09PSAnY2xpZW50Jykge1xuICAgICAgc2V0Q2xpZW50U3RhdGUoaW5pdGlhbENsaWVudCA/PyBudWxsKVxuICAgIH1cbiAgfSwgW3NlY3Rpb24sIGluaXRpYWxDbGllbnRdKVxuXG4gIC8vIFNpbmNyb25pemFyIHRhc2sgY3VhbmRvIGxhIHByb3AgbGxlZ3VlIGRlc3B1w6lzIGRlbCBwcmltZXIgcmVuZGVyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNlY3Rpb24gPT09ICd0YXNrJykge1xuICAgICAgc2V0VGFza1N0YXRlKGluaXRpYWxUYXNrID8/IG51bGwpXG4gICAgfVxuICB9LCBbc2VjdGlvbiwgaW5pdGlhbFRhc2tdKVxuXG4gIC8vIFNpbmNyb25pemFyIGVudGl0eVZhbHVlcyBjdWFuZG8gZW50aXR5IGNhbWJpZSAoZWouIGxsZWd1ZSBkZXNwdcOpcyBkZWwgcHJpbWVyIHJlbmRlcilcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZW50aXR5ICE9IG51bGwpIHtcbiAgICAgIHNldEVudGl0eVZhbHVlcyh7XG4gICAgICAgIHByb2plY3RJZDogZW50aXR5LnByb2plY3RJZCA/PyBudWxsLFxuICAgICAgICBjbGllbnRJZDogZW50aXR5LmNsaWVudElkID8/IG51bGwsXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW2VudGl0eT8ucHJvamVjdElkLCBlbnRpdHk/LmNsaWVudElkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzZWN0aW9uID09PSAncHJvamVjdCcpIHNldE9wZW5TZWN0aW9uKCdwcm9qZWN0JylcbiAgICBlbHNlIGlmIChzZWN0aW9uID09PSAnY2xpZW50Jykgc2V0T3BlblNlY3Rpb24oJ2NsaWVudCcpXG4gICAgZWxzZSBzZXRPcGVuU2VjdGlvbignaGVhZGVyJylcbiAgfSwgW3NlY3Rpb25dKVxuXG4gIGNvbnN0IHJlc3RvcmVDb25maWd1cmVTZXR0aW5ncyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25maWd1cmVTZXR0aW5nc0l0ZW1zLmN1cnJlbnQgPSBjb25maWd1cmVTZXR0aW5nc0l0ZW1zLmN1cnJlbnQ/Lm1hcChpdGVtID0+ICh7XG4gICAgICAuLi5pdGVtLFxuICAgICAgY2hlY2tlZDogIWl0ZW0uaGlkZGVuLFxuICAgIH0pKVxuICB9LCBbXSlcblxuICBjb25zdCBzZWxlY3RBZ2VudCA9IHVzZUNhbGxiYWNrKChuZXdBZ2VudDogQWdlbnQpID0+IHtcbiAgICBzZXRBZ2VudChuZXdBZ2VudClcbiAgfSwgW10pXG5cbiAgY29uc3QgY2xlYXJBZ2VudCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRBZ2VudChudWxsKVxuICB9LCBbXSlcblxuICBjb25zdCB0b2dnbGVXZWJTZWFyY2ggPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNXZWJTZWFyY2hBY3RpdmUocHJldiA9PiAhcHJldilcbiAgfSwgW10pXG5cbiAgY29uc3QgdG9nZ2xlRGVlcFNlYXJjaCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJc0RlZXBTZWFyY2hBY3RpdmUocHJldiA9PiAhcHJldilcbiAgfSwgW10pXG5cbiAgY29uc3Qgc2V0Q2hpcHNQcm9qZWN0ID0gdXNlQ2FsbGJhY2soKG5ld0NoaXBzUHJvamVjdDogQ2hpcHNQcm9qZWN0IHwgbnVsbCkgPT4ge1xuICAgIHNldENoaXBzUHJvamVjdFN0YXRlKG5ld0NoaXBzUHJvamVjdClcbiAgfSwgW10pXG5cbiAgLy8gUGluIGRlcml2YWRvIChSRkMgwqcxMi4yKTogbGEgZW50aWRhZCBtw6FzIGVzcGVjw61maWNhIGFjdGl2YSAodGFyZWEgPiBwcm95ZWN0byA+IGNsaWVudGUpLFxuICAvLyBjb24gc3Ugc2NvcGUgaGFjaWEgYXJyaWJhIGVuIGBwYXJlbnRzYC4gTW9ubyBob3k7IGFycmF5LXJlYWR5IHBhcmEgY3Jvc3MtZW50aXR5LlxuICBjb25zdCBwaW5uZWRDb250ZXh0ID0gdXNlTWVtbzxQaW5uZWRDb250ZXh0IHwgbnVsbD4oKCkgPT4ge1xuICAgIGlmICh0YXNrPy5pZCAhPSBudWxsKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAndGFzaycsXG4gICAgICAgIGlkOiB0YXNrLmlkLFxuICAgICAgICBuYW1lOiB0YXNrLm5hbWUsXG4gICAgICAgIHBhcmVudHM6IHtcbiAgICAgICAgICAuLi4odGFzay5jbGllbnRJZCAhPSBudWxsID8geyBjbGllbnRJZDogdGFzay5jbGllbnRJZCB9IDoge30pLFxuICAgICAgICAgIC4uLih0YXNrLnByb2plY3RJZCAhPSBudWxsID8geyBwcm9qZWN0SWQ6IHRhc2sucHJvamVjdElkIH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjaGlwc1Byb2plY3Q/LnByb2plY3RJZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3Byb2plY3QnLFxuICAgICAgICBpZDogY2hpcHNQcm9qZWN0LnByb2plY3RJZCxcbiAgICAgICAgbmFtZTogY2hpcHNQcm9qZWN0LnByb2plY3ROYW1lLFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAocHJvamVjdD8uaWQgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3Byb2plY3QnLFxuICAgICAgICBpZDogcHJvamVjdC5pZCxcbiAgICAgICAgbmFtZTogcHJvamVjdC5uYW1lLFxuICAgICAgICAuLi4ocHJvamVjdC5jbGllbnRJZCAhPSBudWxsID8geyBwYXJlbnRzOiB7IGNsaWVudElkOiBwcm9qZWN0LmNsaWVudElkIH0gfSA6IHt9KSxcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNsaWVudD8uaWQgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogJ2NsaWVudCcsIGlkOiBjbGllbnQuaWQsIG5hbWU6IGNsaWVudC5uYW1lIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfSwgW1xuICAgIHRhc2s/LmlkLFxuICAgIHRhc2s/Lm5hbWUsXG4gICAgdGFzaz8uY2xpZW50SWQsXG4gICAgdGFzaz8ucHJvamVjdElkLFxuICAgIGNoaXBzUHJvamVjdCxcbiAgICBwcm9qZWN0Py5pZCxcbiAgICBwcm9qZWN0Py5uYW1lLFxuICAgIHByb2plY3Q/LmNsaWVudElkLFxuICAgIGNsaWVudD8uaWQsXG4gICAgY2xpZW50Py5uYW1lLFxuICBdKVxuXG4gIGNvbnN0IGNvbnRleHQgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBlbnRpdHlWYWx1ZXMsXG4gICAgICBzZWN0aW9uOiBvcGVuU2VjdGlvbixcbiAgICAgIGFnZW50LFxuICAgICAgc2VsZWN0QWdlbnQsXG4gICAgICBjbGVhckFnZW50LFxuICAgICAgY29uZmlndXJlU2V0dGluZ3NJdGVtcyxcbiAgICAgIHJlc3RvcmVDb25maWd1cmVTZXR0aW5ncyxcbiAgICAgIHNldEVudGl0eVZhbHVlcyxcbiAgICAgIHByb2plY3QsXG4gICAgICBzZXRQcm9qZWN0LFxuICAgICAgY2xpZW50LFxuICAgICAgc2V0Q2xpZW50LFxuICAgICAgdGFzayxcbiAgICAgIHNldFRhc2ssXG4gICAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICAgIHRvZ2dsZURlZXBTZWFyY2gsXG4gICAgICBoYXNNdWx0aUFnZW50cyxcbiAgICAgIGNoaXBzUHJvamVjdCxcbiAgICAgIHNldENoaXBzUHJvamVjdCxcbiAgICAgIHBpbm5lZENvbnRleHQsXG4gICAgfSksXG4gICAgW1xuICAgICAgb3BlblNlY3Rpb24sXG4gICAgICBlbnRpdHlWYWx1ZXM/LnByb2plY3RJZCxcbiAgICAgIGVudGl0eVZhbHVlcz8uY2xpZW50SWQsXG4gICAgICBhZ2VudCxcbiAgICAgIHNlbGVjdEFnZW50LFxuICAgICAgY2xlYXJBZ2VudCxcbiAgICAgIHNldEVudGl0eVZhbHVlcyxcbiAgICAgIHJlc3RvcmVDb25maWd1cmVTZXR0aW5ncyxcbiAgICAgIHByb2plY3Q/LmlkLFxuICAgICAgc2V0UHJvamVjdCxcbiAgICAgIGNsaWVudD8uaWQsXG4gICAgICBzZXRDbGllbnQsXG4gICAgICB0YXNrPy5pZCxcbiAgICAgIHNldFRhc2ssXG4gICAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICAgIHRvZ2dsZURlZXBTZWFyY2gsXG4gICAgICBoYXNNdWx0aUFnZW50cyxcbiAgICAgIGNoaXBzUHJvamVjdCxcbiAgICAgIHNldENoaXBzUHJvamVjdCxcbiAgICAgIHBpbm5lZENvbnRleHQsXG4gICAgXVxuICApXG5cbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0LFxuICAgIHJlc3RvcmVDb25maWd1cmVTZXR0aW5ncyxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsU0FBU0EsV0FBVyxFQUFFQyxNQUFNLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxFQUFFQyxTQUFTLFFBQVEsT0FBTztBQUd6RSxTQUFTQyxRQUFRLFFBQVEscUJBQXFCO0FBQzlDLFNBQVNDLDJCQUEyQixRQUFRLDBCQUEwQjtBQUN0RSxTQUFTQyxPQUFPLFFBQVEscUJBQXFCO0FBRzdDLFNBQVNDLGVBQWUsUUFBUSxRQUFRO0FBbUJ4QyxPQUFPLElBQU1DLHVCQUF1QixHQUFHLFNBQTFCQSx1QkFBdUJBLENBQUFDLElBQUEsRUFTSDtFQUFBLElBUi9CQyxPQUFPLEdBQUFELElBQUEsQ0FBUEMsT0FBTztJQUNQQyxNQUFNLEdBQUFGLElBQUEsQ0FBTkUsTUFBTTtJQUNOQyxPQUFPLEdBQUFILElBQUEsQ0FBUEcsT0FBTztJQUNQQyxVQUFVLEdBQUFKLElBQUEsQ0FBVkksVUFBVTtJQUFBQyxXQUFBLEdBQUFMLElBQUEsQ0FDVk0sTUFBTTtJQUFFQyxhQUFhLEdBQUFGLFdBQUEsY0FBRyxJQUFJLEdBQUFBLFdBQUE7SUFDakJHLGFBQWEsR0FBQVIsSUFBQSxDQUF4QlMsU0FBUztJQUFBQyxTQUFBLEdBQUFWLElBQUEsQ0FDVFcsSUFBSTtJQUFFQyxXQUFXLEdBQUFG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
|
|
148
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIlNFQ1RJT05TIiwiYnVpbGRDb25maWd1cmVTZXR0aW5nc0l0ZW1zIiwidXNlVXNlciIsInVzZVRXaXRoU2VjdGlvbiIsInVzZVByb2plY3RTdW1tYXJ5Q29uZmlnIiwiX3JlZiIsInNlY3Rpb24iLCJlbnRpdHkiLCJwcm9qZWN0Iiwic2V0UHJvamVjdCIsIl9yZWYkY2xpZW50IiwiY2xpZW50IiwiaW5pdGlhbENsaWVudCIsInNldENsaWVudFByb3AiLCJzZXRDbGllbnQiLCJfcmVmJHRhc2siLCJ0YXNrIiwiaW5pdGlhbFRhc2siLCJoYXNNdWx0aUFnZW50cyIsInVzZXIiLCJ0IiwiY2hhdEFJIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiYWdlbnQiLCJzZXRBZ2VudCIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwib3BlblNlY3Rpb24iLCJzZXRPcGVuU2VjdGlvbiIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJzZXRJc1dlYlNlYXJjaEFjdGl2ZSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwic2V0SXNEZWVwU2VhcmNoQWN0aXZlIiwiX3VzZVN0YXRlOSIsInByb2plY3RJZCIsImNsaWVudElkIiwiX3VzZVN0YXRlMCIsImVudGl0eVZhbHVlcyIsInNldEVudGl0eVZhbHVlcyIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsInNldENsaWVudFN0YXRlIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsInNldFRhc2tTdGF0ZSIsInNldFRhc2siLCJuZXdUYXNrIiwiY29uZmlndXJlU2V0dGluZ3NJdGVtcyIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJjaGlwc1Byb2plY3QiLCJzZXRDaGlwc1Byb2plY3RTdGF0ZSIsIl9lbnRpdHkkcHJvamVjdElkIiwiX2VudGl0eSRjbGllbnRJZCIsInJlc3RvcmVDb25maWd1cmVTZXR0aW5ncyIsIl9jb25maWd1cmVTZXR0aW5nc0l0ZSIsImN1cnJlbnQiLCJtYXAiLCJpdGVtIiwiX29iamVjdFNwcmVhZCIsImNoZWNrZWQiLCJoaWRkZW4iLCJzZWxlY3RBZ2VudCIsIm5ld0FnZW50IiwiY2xlYXJBZ2VudCIsInRvZ2dsZVdlYlNlYXJjaCIsInByZXYiLCJ0b2dnbGVEZWVwU2VhcmNoIiwic2V0Q2hpcHNQcm9qZWN0IiwibmV3Q2hpcHNQcm9qZWN0IiwiY29udGV4dCIsImlkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZVByb2plY3RTdW1tYXJ5Q29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgQ2hpcHNQcm9qZWN0IH0gZnJvbSAnLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB7IGJ1aWxkQ29uZmlndXJlU2V0dGluZ3NJdGVtcyB9IGZyb20gJy4uL2NvbnN0YW50cy9wZXJtaXNzaW9ucydcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi90eXBlcy9hZ2VudCdcblxuaW1wb3J0IHsgdXNlVFdpdGhTZWN0aW9uIH0gZnJvbSAnLi91c2VUJ1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uL3R5cGVzL1Byb2plY3QnXG5pbXBvcnQgeyBDbGllbnQgfSBmcm9tICcuLi90eXBlcy9DbGllbnQnXG5pbXBvcnQgeyBUYXNrIH0gZnJvbSAnLi4vdHlwZXMvVGFzaydcblxudHlwZSBQcm9qZWN0U3VtbWFyeUNvbmZpZ1Byb3BzID0ge1xuICBzZWN0aW9uOiAncHJvamVjdCcgfCAnaGVhZGVyJyB8ICdjbGllbnQnIHwgJ3Rhc2snXG4gIGVudGl0eT86IHtcbiAgICBwcm9qZWN0SWQ6IHN0cmluZyB8IG51bGxcbiAgICBjbGllbnRJZDogc3RyaW5nIHwgbnVsbFxuICB9IHwgbnVsbFxuICBwcm9qZWN0OiBQcm9qZWN0IHwgbnVsbFxuICBzZXRQcm9qZWN0OiAocHJvamVjdDogUHJvamVjdCB8IG51bGwpID0+IHZvaWRcbiAgY2xpZW50PzogQ2xpZW50IHwgbnVsbFxuICBzZXRDbGllbnQ/OiAoY2xpZW50OiBDbGllbnQgfCBudWxsKSA9PiB2b2lkXG4gIHRhc2s/OiBUYXNrIHwgbnVsbFxuICBoYXNNdWx0aUFnZW50cz86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNvbnN0IHVzZVByb2plY3RTdW1tYXJ5Q29uZmlnID0gKHtcbiAgc2VjdGlvbixcbiAgZW50aXR5LFxuICBwcm9qZWN0LFxuICBzZXRQcm9qZWN0LFxuICBjbGllbnQ6IGluaXRpYWxDbGllbnQgPSBudWxsLFxuICBzZXRDbGllbnQ6IHNldENsaWVudFByb3AsXG4gIHRhc2s6IGluaXRpYWxUYXNrID0gbnVsbCxcbiAgaGFzTXVsdGlBZ2VudHMsXG59OiBQcm9qZWN0U3VtbWFyeUNvbmZpZ1Byb3BzKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgdCA9IHVzZVRXaXRoU2VjdGlvbihTRUNUSU9OUy5jaGF0QUkpXG4gIGNvbnN0IFthZ2VudCwgc2V0QWdlbnRdID0gdXNlU3RhdGU8QWdlbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBbb3BlblNlY3Rpb24sIHNldE9wZW5TZWN0aW9uXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtpc1dlYlNlYXJjaEFjdGl2ZSwgc2V0SXNXZWJTZWFyY2hBY3RpdmVdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpXG4gIGNvbnN0IFtpc0RlZXBTZWFyY2hBY3RpdmUsIHNldElzRGVlcFNlYXJjaEFjdGl2ZV0gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSlcbiAgY29uc3QgW2VudGl0eVZhbHVlcywgc2V0RW50aXR5VmFsdWVzXSA9IHVzZVN0YXRlPHtcbiAgICBwcm9qZWN0SWQ6IHN0cmluZyB8IG51bGxcbiAgICBjbGllbnRJZDogc3RyaW5nIHwgbnVsbFxuICB9PihlbnRpdHkgfHwgeyBwcm9qZWN0SWQ6IG51bGwsIGNsaWVudElkOiBudWxsIH0pXG4gIGNvbnN0IFtjbGllbnQsIHNldENsaWVudFN0YXRlXSA9IHVzZVN0YXRlPENsaWVudCB8IG51bGw+KGluaXRpYWxDbGllbnQgPz8gbnVsbClcblxuICBjb25zdCBzZXRDbGllbnQgPSBzZXRDbGllbnRQcm9wID8/IHNldENsaWVudFN0YXRlXG5cbiAgY29uc3QgW3Rhc2ssIHNldFRhc2tTdGF0ZV0gPSB1c2VTdGF0ZTxUYXNrIHwgbnVsbD4oaW5pdGlhbFRhc2sgPz8gbnVsbClcbiAgY29uc3Qgc2V0VGFzayA9IHVzZUNhbGxiYWNrKChuZXdUYXNrOiBUYXNrIHwgbnVsbCkgPT4gc2V0VGFza1N0YXRlKG5ld1Rhc2spLCBbXSlcblxuICBjb25zdCBjb25maWd1cmVTZXR0aW5nc0l0ZW1zID0gdXNlUmVmKGJ1aWxkQ29uZmlndXJlU2V0dGluZ3NJdGVtcyh1c2VyLCB0KSlcbiAgY29uc3QgW2NoaXBzUHJvamVjdCwgc2V0Q2hpcHNQcm9qZWN0U3RhdGVdID0gdXNlU3RhdGU8Q2hpcHNQcm9qZWN0IHwgbnVsbD4obnVsbClcblxuICAvLyBTaW5jcm9uaXphciBjbGllbnQgY3VhbmRvIGxhIHByb3AgbGxlZ3VlIGRlc3B1w6lzIGRlbCBwcmltZXIgcmVuZGVyIChlai4gc2VjdGlvbiBjbGllbnQsIGRhdG9zIGFzeW5jKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzZWN0aW9uID09PSAnY2xpZW50Jykge1xuICAgICAgc2V0Q2xpZW50U3RhdGUoaW5pdGlhbENsaWVudCA/PyBudWxsKVxuICAgIH1cbiAgfSwgW3NlY3Rpb24sIGluaXRpYWxDbGllbnRdKVxuXG4gIC8vIFNpbmNyb25pemFyIHRhc2sgY3VhbmRvIGxhIHByb3AgbGxlZ3VlIGRlc3B1w6lzIGRlbCBwcmltZXIgcmVuZGVyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNlY3Rpb24gPT09ICd0YXNrJykge1xuICAgICAgc2V0VGFza1N0YXRlKGluaXRpYWxUYXNrID8/IG51bGwpXG4gICAgfVxuICB9LCBbc2VjdGlvbiwgaW5pdGlhbFRhc2tdKVxuXG4gIC8vIFNpbmNyb25pemFyIGVudGl0eVZhbHVlcyBjdWFuZG8gZW50aXR5IGNhbWJpZSAoZWouIGxsZWd1ZSBkZXNwdcOpcyBkZWwgcHJpbWVyIHJlbmRlcilcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZW50aXR5ICE9IG51bGwpIHtcbiAgICAgIHNldEVudGl0eVZhbHVlcyh7XG4gICAgICAgIHByb2plY3RJZDogZW50aXR5LnByb2plY3RJZCA/PyBudWxsLFxuICAgICAgICBjbGllbnRJZDogZW50aXR5LmNsaWVudElkID8/IG51bGwsXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW2VudGl0eT8ucHJvamVjdElkLCBlbnRpdHk/LmNsaWVudElkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzZWN0aW9uID09PSAncHJvamVjdCcpIHNldE9wZW5TZWN0aW9uKCdwcm9qZWN0JylcbiAgICBlbHNlIGlmIChzZWN0aW9uID09PSAnY2xpZW50Jykgc2V0T3BlblNlY3Rpb24oJ2NsaWVudCcpXG4gICAgZWxzZSBzZXRPcGVuU2VjdGlvbignaGVhZGVyJylcbiAgfSwgW3NlY3Rpb25dKVxuXG4gIGNvbnN0IHJlc3RvcmVDb25maWd1cmVTZXR0aW5ncyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25maWd1cmVTZXR0aW5nc0l0ZW1zLmN1cnJlbnQgPSBjb25maWd1cmVTZXR0aW5nc0l0ZW1zLmN1cnJlbnQ/Lm1hcChpdGVtID0+ICh7XG4gICAgICAuLi5pdGVtLFxuICAgICAgY2hlY2tlZDogIWl0ZW0uaGlkZGVuLFxuICAgIH0pKVxuICB9LCBbXSlcblxuICBjb25zdCBzZWxlY3RBZ2VudCA9IHVzZUNhbGxiYWNrKChuZXdBZ2VudDogQWdlbnQpID0+IHtcbiAgICBzZXRBZ2VudChuZXdBZ2VudClcbiAgfSwgW10pXG5cbiAgY29uc3QgY2xlYXJBZ2VudCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRBZ2VudChudWxsKVxuICB9LCBbXSlcblxuICBjb25zdCB0b2dnbGVXZWJTZWFyY2ggPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNXZWJTZWFyY2hBY3RpdmUocHJldiA9PiAhcHJldilcbiAgfSwgW10pXG5cbiAgY29uc3QgdG9nZ2xlRGVlcFNlYXJjaCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJc0RlZXBTZWFyY2hBY3RpdmUocHJldiA9PiAhcHJldilcbiAgfSwgW10pXG5cbiAgY29uc3Qgc2V0Q2hpcHNQcm9qZWN0ID0gdXNlQ2FsbGJhY2soKG5ld0NoaXBzUHJvamVjdDogQ2hpcHNQcm9qZWN0IHwgbnVsbCkgPT4ge1xuICAgIHNldENoaXBzUHJvamVjdFN0YXRlKG5ld0NoaXBzUHJvamVjdClcbiAgfSwgW10pXG5cbiAgY29uc3QgY29udGV4dCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGVudGl0eVZhbHVlcyxcbiAgICAgIHNlY3Rpb246IG9wZW5TZWN0aW9uLFxuICAgICAgYWdlbnQsXG4gICAgICBzZWxlY3RBZ2VudCxcbiAgICAgIGNsZWFyQWdlbnQsXG4gICAgICBjb25maWd1cmVTZXR0aW5nc0l0ZW1zLFxuICAgICAgcmVzdG9yZUNvbmZpZ3VyZVNldHRpbmdzLFxuICAgICAgc2V0RW50aXR5VmFsdWVzLFxuICAgICAgcHJvamVjdCxcbiAgICAgIHNldFByb2plY3QsXG4gICAgICBjbGllbnQsXG4gICAgICBzZXRDbGllbnQsXG4gICAgICB0YXNrLFxuICAgICAgc2V0VGFzayxcbiAgICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgICAgdG9nZ2xlRGVlcFNlYXJjaCxcbiAgICAgIGhhc011bHRpQWdlbnRzLFxuICAgICAgY2hpcHNQcm9qZWN0LFxuICAgICAgc2V0Q2hpcHNQcm9qZWN0LFxuICAgIH0pLFxuICAgIFtcbiAgICAgIG9wZW5TZWN0aW9uLFxuICAgICAgZW50aXR5VmFsdWVzPy5wcm9qZWN0SWQsXG4gICAgICBlbnRpdHlWYWx1ZXM/LmNsaWVudElkLFxuICAgICAgYWdlbnQsXG4gICAgICBzZWxlY3RBZ2VudCxcbiAgICAgIGNsZWFyQWdlbnQsXG4gICAgICBzZXRFbnRpdHlWYWx1ZXMsXG4gICAgICByZXN0b3JlQ29uZmlndXJlU2V0dGluZ3MsXG4gICAgICBwcm9qZWN0Py5pZCxcbiAgICAgIHNldFByb2plY3QsXG4gICAgICBjbGllbnQ/LmlkLFxuICAgICAgc2V0Q2xpZW50LFxuICAgICAgdGFzaz8uaWQsXG4gICAgICBzZXRUYXNrLFxuICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgICB0b2dnbGVEZWVwU2VhcmNoLFxuICAgICAgaGFzTXVsdGlBZ2VudHMsXG4gICAgICBjaGlwc1Byb2plY3QsXG4gICAgICBzZXRDaGlwc1Byb2plY3QsXG4gICAgXVxuICApXG5cbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0LFxuICAgIHJlc3RvcmVDb25maWd1cmVTZXR0aW5ncyxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsU0FBU0EsV0FBVyxFQUFFQyxNQUFNLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxFQUFFQyxTQUFTLFFBQVEsT0FBTztBQUd6RSxTQUFTQyxRQUFRLFFBQVEscUJBQXFCO0FBQzlDLFNBQVNDLDJCQUEyQixRQUFRLDBCQUEwQjtBQUN0RSxTQUFTQyxPQUFPLFFBQVEscUJBQXFC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
|