@projectcor/maia-components 2.11.100-4 → 2.11.100-6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +112 -31
- package/lib/components/molecules/StreamAssistantTurnTimeline/StreamAssistantTurnTimeline.js +52 -50
- package/lib/hooks/useChatManager/useChatManager.js +37 -22
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +3 -1
- package/lib/utils/streamExecutionSteps.js +22 -5
- package/lib/utils/streamTimeline.js +22 -6
- package/package.json +1 -1
|
@@ -1,11 +1,28 @@
|
|
|
1
|
-
import React, { memo, useEffect } from 'react';
|
|
1
|
+
import React, { memo, useEffect, useMemo } from 'react';
|
|
2
2
|
import { AgentActivityIndicator } from '../../atoms/AgentActivityIndicator';
|
|
3
|
-
import {
|
|
3
|
+
import { collectRunningStepsFromTimeline } from '../../../utils/streamTimeline';
|
|
4
4
|
import { getWritingStreamActivity } from '../../../utils/streamActivityMessages';
|
|
5
5
|
import { useT } from '../../../hooks/useT';
|
|
6
6
|
import { streamDebugLog } from '../../../utils/streamDebugLog';
|
|
7
7
|
import { SCStreamExecutionSegment, SCStreamTurnTimeline, SCStreamTurnContentBlock } from './StreamAssistantTurnTimeline.styles';
|
|
8
8
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
var buildBottomTimelineActivity = function buildBottomTimelineActivity(runningSteps, waitingResponse, isWriting, initialActivity, t) {
|
|
10
|
+
if (runningSteps.length > 0) {
|
|
11
|
+
var activeStep = runningSteps[runningSteps.length - 1];
|
|
12
|
+
return {
|
|
13
|
+
phase: 'action',
|
|
14
|
+
message: activeStep.message,
|
|
15
|
+
executionSteps: runningSteps
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
if (isWriting) {
|
|
19
|
+
return (initialActivity === null || initialActivity === void 0 ? void 0 : initialActivity.phase) === 'writing' ? initialActivity : getWritingStreamActivity(t);
|
|
20
|
+
}
|
|
21
|
+
if (waitingResponse && initialActivity) {
|
|
22
|
+
return initialActivity;
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
25
|
+
};
|
|
9
26
|
export var StreamAssistantTurnTimeline = /*#__PURE__*/memo(function (_ref) {
|
|
10
27
|
var segments = _ref.segments,
|
|
11
28
|
initialActivity = _ref.initialActivity,
|
|
@@ -14,76 +31,61 @@ export var StreamAssistantTurnTimeline = /*#__PURE__*/memo(function (_ref) {
|
|
|
14
31
|
renderContentBlock = _ref.renderContentBlock;
|
|
15
32
|
var _useT = useT(),
|
|
16
33
|
t = _useT.t;
|
|
34
|
+
var runningSteps = useMemo(function () {
|
|
35
|
+
return collectRunningStepsFromTimeline(segments);
|
|
36
|
+
}, [segments]);
|
|
37
|
+
var contentSegments = useMemo(function () {
|
|
38
|
+
return segments.filter(function (segment) {
|
|
39
|
+
return segment.type === 'content';
|
|
40
|
+
});
|
|
41
|
+
}, [segments]);
|
|
42
|
+
var bottomActivity = useMemo(function () {
|
|
43
|
+
return buildBottomTimelineActivity(runningSteps, waitingResponse, isWriting, initialActivity, t);
|
|
44
|
+
}, [runningSteps, waitingResponse, isWriting, initialActivity, t]);
|
|
17
45
|
useEffect(function () {
|
|
18
46
|
if (!waitingResponse && !isWriting && segments.length === 0) return;
|
|
19
|
-
var executionSegments = segments.filter(function (segment) {
|
|
20
|
-
return segment.type === 'execution';
|
|
21
|
-
});
|
|
22
47
|
streamDebugLog('streamTimelineUI', 'render', {
|
|
23
48
|
waitingResponse: waitingResponse,
|
|
24
49
|
isWriting: isWriting,
|
|
25
50
|
segmentCount: segments.length,
|
|
26
|
-
|
|
51
|
+
contentSegmentCount: contentSegments.length,
|
|
52
|
+
runningStepCount: runningSteps.length,
|
|
27
53
|
hasInitialActivity: Boolean(initialActivity),
|
|
28
54
|
initialActivityMessage: initialActivity === null || initialActivity === void 0 ? void 0 : initialActivity.message,
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}) : [];
|
|
55
|
+
bottomActivityPhase: bottomActivity === null || bottomActivity === void 0 ? void 0 : bottomActivity.phase,
|
|
56
|
+
runningSteps: runningSteps.map(function (step) {
|
|
57
|
+
return {
|
|
58
|
+
node: step.node,
|
|
59
|
+
toolName: step.toolName,
|
|
60
|
+
status: step.status,
|
|
61
|
+
message: step.message
|
|
62
|
+
};
|
|
38
63
|
})
|
|
39
64
|
});
|
|
40
|
-
}, [segments, initialActivity, waitingResponse, isWriting]);
|
|
65
|
+
}, [segments, contentSegments.length, initialActivity, waitingResponse, isWriting, runningSteps, bottomActivity === null || bottomActivity === void 0 ? void 0 : bottomActivity.phase]);
|
|
41
66
|
if (!waitingResponse && !isWriting && segments.length === 0) {
|
|
42
67
|
return null;
|
|
43
68
|
}
|
|
44
|
-
var
|
|
45
|
-
var executionSegments = segments.filter(function (segment) {
|
|
46
|
-
return segment.type === 'execution';
|
|
47
|
-
});
|
|
48
|
-
var hasExecutionSegments = executionSegments.length > 0;
|
|
49
|
-
var hasContentSegments = segments.some(function (segment) {
|
|
50
|
-
return segment.type === 'content';
|
|
51
|
-
});
|
|
52
|
-
var preStreamActivity = waitingResponse && segments.length === 0 && initialActivity ? initialActivity : null;
|
|
53
|
-
var writingOnlyActivity = isWriting && !hasExecutionSegments && hasContentSegments ? (initialActivity === null || initialActivity === void 0 ? void 0 : initialActivity.phase) === 'writing' ? initialActivity : getWritingStreamActivity(t) : null;
|
|
69
|
+
var hasContent = contentSegments.length > 0;
|
|
54
70
|
return /*#__PURE__*/_jsxs(SCStreamTurnTimeline, {
|
|
55
|
-
children: [
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
})
|
|
59
|
-
}), writingOnlyActivity && /*#__PURE__*/_jsx(SCStreamExecutionSegment, {
|
|
60
|
-
children: /*#__PURE__*/_jsx(AgentActivityIndicator, {
|
|
61
|
-
activity: writingOnlyActivity
|
|
62
|
-
})
|
|
63
|
-
}), segments.map(function (segment, index) {
|
|
64
|
-
var previousSegment = index > 0 ? segments[index - 1] : undefined;
|
|
65
|
-
if (segment.type === 'execution') {
|
|
66
|
-
return /*#__PURE__*/_jsx(SCStreamExecutionSegment, {
|
|
67
|
-
$afterContent: (previousSegment === null || previousSegment === void 0 ? void 0 : previousSegment.type) === 'content',
|
|
68
|
-
children: /*#__PURE__*/_jsx(AgentActivityIndicator, {
|
|
69
|
-
activity: buildActivityFromExecutionSegment(segment, t)
|
|
70
|
-
})
|
|
71
|
-
}, segment.id);
|
|
72
|
-
}
|
|
73
|
-
var isLastSegment = index === segments.length - 1;
|
|
74
|
-
var isStreaming = isLastSegment && isWriting;
|
|
75
|
-
var showAssistantHeader = contentBlockIndex === 0;
|
|
76
|
-
contentBlockIndex += 1;
|
|
71
|
+
children: [contentSegments.map(function (segment, index) {
|
|
72
|
+
var isLastContent = index === contentSegments.length - 1;
|
|
73
|
+
var showAssistantHeader = index === 0;
|
|
77
74
|
return /*#__PURE__*/_jsx(SCStreamTurnContentBlock, {
|
|
78
75
|
children: renderContentBlock({
|
|
79
76
|
segmentId: segment.id,
|
|
80
77
|
text: segment.text,
|
|
81
|
-
isStreaming:
|
|
78
|
+
isStreaming: isLastContent && isWriting,
|
|
82
79
|
showAssistantHeader: showAssistantHeader
|
|
83
80
|
})
|
|
84
81
|
}, segment.id);
|
|
82
|
+
}), bottomActivity && /*#__PURE__*/_jsx(SCStreamExecutionSegment, {
|
|
83
|
+
$afterContent: hasContent,
|
|
84
|
+
children: /*#__PURE__*/_jsx(AgentActivityIndicator, {
|
|
85
|
+
activity: bottomActivity
|
|
86
|
+
})
|
|
85
87
|
})]
|
|
86
88
|
});
|
|
87
89
|
});
|
|
88
90
|
StreamAssistantTurnTimeline.displayName = 'StreamAssistantTurnTimeline';
|
|
89
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VFZmZlY3QiLCJBZ2VudEFjdGl2aXR5SW5kaWNhdG9yIiwiYnVpbGRBY3Rpdml0eUZyb21FeGVjdXRpb25TZWdtZW50IiwiZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5IiwidXNlVCIsInN0cmVhbURlYnVnTG9nIiwiU0NTdHJlYW1FeGVjdXRpb25TZWdtZW50IiwiU0NTdHJlYW1UdXJuVGltZWxpbmUiLCJTQ1N0cmVhbVR1cm5Db250ZW50QmxvY2siLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiU3RyZWFtQXNzaXN0YW50VHVyblRpbWVsaW5lIiwiX3JlZiIsInNlZ21lbnRzIiwiaW5pdGlhbEFjdGl2aXR5Iiwid2FpdGluZ1Jlc3BvbnNlIiwiaXNXcml0aW5nIiwicmVuZGVyQ29udGVudEJsb2NrIiwiX3VzZVQiLCJ0IiwibGVuZ3RoIiwiZXhlY3V0aW9uU2VnbWVudHMiLCJmaWx0ZXIiLCJzZWdtZW50IiwidHlwZSIsInNlZ21lbnRDb3VudCIsImV4ZWN1dGlvblNlZ21lbnRDb3VudCIsImhhc0luaXRpYWxBY3Rpdml0eSIsIkJvb2xlYW4iLCJpbml0aWFsQWN0aXZpdHlNZXNzYWdlIiwibWVzc2FnZSIsImV4ZWN1dGlvblN0ZXBzIiwiZmxhdE1hcCIsInN0ZXBzIiwibWFwIiwic3RlcCIsIm5vZGUiLCJ0b29sTmFtZSIsInN0YXR1cyIsImNvbnRlbnRCbG9ja0luZGV4IiwiaGFzRXhlY3V0aW9uU2VnbWVudHMiLCJoYXNDb250ZW50U2VnbWVudHMiLCJzb21lIiwicHJlU3RyZWFtQWN0aXZpdHkiLCJ3cml0aW5nT25seUFjdGl2aXR5IiwicGhhc2UiLCJjaGlsZHJlbiIsImFjdGl2aXR5IiwiaW5kZXgiLCJwcmV2aW91c1NlZ21lbnQiLCJ1bmRlZmluZWQiLCIkYWZ0ZXJDb250ZW50IiwiaWQiLCJpc0xhc3RTZWdtZW50IiwiaXNTdHJlYW1pbmciLCJzaG93QXNzaXN0YW50SGVhZGVyIiwic2VnbWVudElkIiwidGV4dCIsImRpc3BsYXlOYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1N0cmVhbUFzc2lzdGFudFR1cm5UaW1lbGluZS9TdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBtZW1vLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgU3RyZWFtQWN0aXZpdHkgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9zdHJlYW1BY3Rpdml0eSdcbmltcG9ydCB0eXBlIHsgU3RyZWFtVGltZWxpbmVTZWdtZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvc3RyZWFtVGltZWxpbmUnXG5pbXBvcnQgeyBBZ2VudEFjdGl2aXR5SW5kaWNhdG9yIH0gZnJvbSAnLi4vLi4vYXRvbXMvQWdlbnRBY3Rpdml0eUluZGljYXRvcidcbmltcG9ydCB7IGJ1aWxkQWN0aXZpdHlGcm9tRXhlY3V0aW9uU2VnbWVudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3N0cmVhbVRpbWVsaW5lJ1xuaW1wb3J0IHsgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgc3RyZWFtRGVidWdMb2cgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zdHJlYW1EZWJ1Z0xvZydcbmltcG9ydCB7XG4gIFNDU3RyZWFtRXhlY3V0aW9uU2VnbWVudCxcbiAgU0NTdHJlYW1UdXJuVGltZWxpbmUsXG4gIFNDU3RyZWFtVHVybkNvbnRlbnRCbG9jayxcbn0gZnJvbSAnLi9TdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUuc3R5bGVzJ1xuXG5leHBvcnQgdHlwZSBTdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmVQcm9wcyA9IHtcbiAgc2VnbWVudHM6IFN0cmVhbVRpbWVsaW5lU2VnbWVudFtdXG4gIGluaXRpYWxBY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkgfCBudWxsXG4gIHdhaXRpbmdSZXNwb25zZTogYm9vbGVhblxuICBpc1dyaXRpbmc6IGJvb2xlYW5cbiAgcmVuZGVyQ29udGVudEJsb2NrOiAocGFyYW1zOiB7XG4gICAgc2VnbWVudElkOiBzdHJpbmdcbiAgICB0ZXh0OiBzdHJpbmdcbiAgICBpc1N0cmVhbWluZzogYm9vbGVhblxuICAgIHNob3dBc3Npc3RhbnRIZWFkZXI6IGJvb2xlYW5cbiAgfSkgPT4gUmVhY3QuUmVhY3ROb2RlXG59XG5cbmV4cG9ydCBjb25zdCBTdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUgPSBtZW1vKFxuICAoeyBzZWdtZW50cywgaW5pdGlhbEFjdGl2aXR5LCB3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZywgcmVuZGVyQ29udGVudEJsb2NrIH06IFN0cmVhbUFzc2lzdGFudFR1cm5UaW1lbGluZVByb3BzKSA9PiB7XG4gICAgY29uc3QgeyB0IH0gPSB1c2VUKClcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXdhaXRpbmdSZXNwb25zZSAmJiAhaXNXcml0aW5nICYmIHNlZ21lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG4gICAgICBjb25zdCBleGVjdXRpb25TZWdtZW50cyA9IHNlZ21lbnRzLmZpbHRlcihzZWdtZW50ID0+IHNlZ21lbnQudHlwZSA9PT0gJ2V4ZWN1dGlvbicpXG4gICAgICBzdHJlYW1EZWJ1Z0xvZygnc3RyZWFtVGltZWxpbmVVSScsICdyZW5kZXInLCB7XG4gICAgICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICAgICAgaXNXcml0aW5nLFxuICAgICAgICBzZWdtZW50Q291bnQ6IHNlZ21lbnRzLmxlbmd0aCxcbiAgICAgICAgZXhlY3V0aW9uU2VnbWVudENvdW50OiBleGVjdXRpb25TZWdtZW50cy5sZW5ndGgsXG4gICAgICAgIGhhc0luaXRpYWxBY3Rpdml0eTogQm9vbGVhbihpbml0aWFsQWN0aXZpdHkpLFxuICAgICAgICBpbml0aWFsQWN0aXZpdHlNZXNzYWdlOiBpbml0aWFsQWN0aXZpdHk/Lm1lc3NhZ2UsXG4gICAgICAgIGV4ZWN1dGlvblN0ZXBzOiBleGVjdXRpb25TZWdtZW50cy5mbGF0TWFwKHNlZ21lbnQgPT5cbiAgICAgICAgICBzZWdtZW50LnR5cGUgPT09ICdleGVjdXRpb24nXG4gICAgICAgICAgICA/IHNlZ21lbnQuc3RlcHMubWFwKHN0ZXAgPT4gKHtcbiAgICAgICAgICAgICAgICBub2RlOiBzdGVwLm5vZGUsXG4gICAgICAgICAgICAgICAgdG9vbE5hbWU6IHN0ZXAudG9vbE5hbWUsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiBzdGVwLnN0YXR1cyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBzdGVwLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgOiBbXVxuICAgICAgICApLFxuICAgICAgfSlcbiAgICB9LCBbc2VnbWVudHMsIGluaXRpYWxBY3Rpdml0eSwgd2FpdGluZ1Jlc3BvbnNlLCBpc1dyaXRpbmddKVxuXG4gICAgaWYgKCF3YWl0aW5nUmVzcG9uc2UgJiYgIWlzV3JpdGluZyAmJiBzZWdtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgbGV0IGNvbnRlbnRCbG9ja0luZGV4ID0gMFxuICAgIGNvbnN0IGV4ZWN1dGlvblNlZ21lbnRzID0gc2VnbWVudHMuZmlsdGVyKHNlZ21lbnQgPT4gc2VnbWVudC50eXBlID09PSAnZXhlY3V0aW9uJylcbiAgICBjb25zdCBoYXNFeGVjdXRpb25TZWdtZW50cyA9IGV4ZWN1dGlvblNlZ21lbnRzLmxlbmd0aCA+IDBcbiAgICBjb25zdCBoYXNDb250ZW50U2VnbWVudHMgPSBzZWdtZW50cy5zb21lKHNlZ21lbnQgPT4gc2VnbWVudC50eXBlID09PSAnY29udGVudCcpXG5cbiAgICBjb25zdCBwcmVTdHJlYW1BY3Rpdml0eSA9IHdhaXRpbmdSZXNwb25zZSAmJiBzZWdtZW50cy5sZW5ndGggPT09IDAgJiYgaW5pdGlhbEFjdGl2aXR5ID8gaW5pdGlhbEFjdGl2aXR5IDogbnVsbFxuXG4gICAgY29uc3Qgd3JpdGluZ09ubHlBY3Rpdml0eSA9XG4gICAgICBpc1dyaXRpbmcgJiYgIWhhc0V4ZWN1dGlvblNlZ21lbnRzICYmIGhhc0NvbnRlbnRTZWdtZW50c1xuICAgICAgICA/IGluaXRpYWxBY3Rpdml0eT8ucGhhc2UgPT09ICd3cml0aW5nJ1xuICAgICAgICAgID8gaW5pdGlhbEFjdGl2aXR5XG4gICAgICAgICAgOiBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkodClcbiAgICAgICAgOiBudWxsXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNDU3RyZWFtVHVyblRpbWVsaW5lPlxuICAgICAgICB7cHJlU3RyZWFtQWN0aXZpdHkgJiYgKFxuICAgICAgICAgIDxTQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQ+XG4gICAgICAgICAgICA8QWdlbnRBY3Rpdml0eUluZGljYXRvciBhY3Rpdml0eT17cHJlU3RyZWFtQWN0aXZpdHl9IC8+XG4gICAgICAgICAgPC9TQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQ+XG4gICAgICAgICl9XG4gICAgICAgIHt3cml0aW5nT25seUFjdGl2aXR5ICYmIChcbiAgICAgICAgICA8U0NTdHJlYW1FeGVjdXRpb25TZWdtZW50PlxuICAgICAgICAgICAgPEFnZW50QWN0aXZpdHlJbmRpY2F0b3IgYWN0aXZpdHk9e3dyaXRpbmdPbmx5QWN0aXZpdHl9IC8+XG4gICAgICAgICAgPC9TQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQ+XG4gICAgICAgICl9XG4gICAgICAgIHtzZWdtZW50cy5tYXAoKHNlZ21lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJldmlvdXNTZWdtZW50ID0gaW5kZXggPiAwID8gc2VnbWVudHNbaW5kZXggLSAxXSA6IHVuZGVmaW5lZFxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQudHlwZSA9PT0gJ2V4ZWN1dGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxTQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQga2V5PXtzZWdtZW50LmlkfSAkYWZ0ZXJDb250ZW50PXtwcmV2aW91c1NlZ21lbnQ/LnR5cGUgPT09ICdjb250ZW50J30+XG4gICAgICAgICAgICAgICAgPEFnZW50QWN0aXZpdHlJbmRpY2F0b3IgYWN0aXZpdHk9e2J1aWxkQWN0aXZpdHlGcm9tRXhlY3V0aW9uU2VnbWVudChzZWdtZW50LCB0KX0gLz5cbiAgICAgICAgICAgICAgPC9TQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQ+XG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgaXNMYXN0U2VnbWVudCA9IGluZGV4ID09PSBzZWdtZW50cy5sZW5ndGggLSAxXG4gICAgICAgICAgY29uc3QgaXNTdHJlYW1pbmcgPSBpc0xhc3RTZWdtZW50ICYmIGlzV3JpdGluZ1xuICAgICAgICAgIGNvbnN0IHNob3dBc3Npc3RhbnRIZWFkZXIgPSBjb250ZW50QmxvY2tJbmRleCA9PT0gMFxuICAgICAgICAgIGNvbnRlbnRCbG9ja0luZGV4ICs9IDFcblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8U0NTdHJlYW1UdXJuQ29udGVudEJsb2NrIGtleT17c2VnbWVudC5pZH0+XG4gICAgICAgICAgICAgIHtyZW5kZXJDb250ZW50QmxvY2soe1xuICAgICAgICAgICAgICAgIHNlZ21lbnRJZDogc2VnbWVudC5pZCxcbiAgICAgICAgICAgICAgICB0ZXh0OiBzZWdtZW50LnRleHQsXG4gICAgICAgICAgICAgICAgaXNTdHJlYW1pbmcsXG4gICAgICAgICAgICAgICAgc2hvd0Fzc2lzdGFudEhlYWRlcixcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICA8L1NDU3RyZWFtVHVybkNvbnRlbnRCbG9jaz5cbiAgICAgICAgICApXG4gICAgICAgIH0pfVxuICAgICAgPC9TQ1N0cmVhbVR1cm5UaW1lbGluZT5cbiAgICApXG4gIH1cbilcblxuU3RyZWFtQXNzaXN0YW50VHVyblRpbWVsaW5lLmRpc3BsYXlOYW1lID0gJ1N0cmVhbUFzc2lzdGFudFR1cm5UaW1lbGluZSdcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsS0FBSyxJQUFJQyxJQUFJLEVBQUVDLFNBQVMsUUFBUSxPQUFPO0FBRzlDLFNBQVNDLHNCQUFzQixRQUFRLG9DQUFvQztBQUMzRSxTQUFTQyxpQ0FBaUMsUUFBUSwrQkFBK0I7QUFDakYsU0FBU0Msd0JBQXdCLFFBQVEsdUNBQXVDO0FBQ2hGLFNBQVNDLElBQUksUUFBUSxxQkFBcUI7QUFDMUMsU0FBU0MsY0FBYyxRQUFRLCtCQUErQjtBQUM5RCxTQUNFQyx3QkFBd0IsRUFDeEJDLG9CQUFvQixFQUNwQkMsd0JBQXdCLFFBQ25CLHNDQUFzQztBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQSxFQUFBQyxJQUFBLElBQUFDLEtBQUE7QUFlN0MsT0FBTyxJQUFNQywyQkFBMkIsZ0JBQUdkLElBQUksQ0FDN0MsVUFBQWUsSUFBQSxFQUFxSDtFQUFBLElBQWxIQyxRQUFRLEdBQUFELElBQUEsQ0FBUkMsUUFBUTtJQUFFQyxlQUFlLEdBQUFGLElBQUEsQ0FBZkUsZUFBZTtJQUFFQyxlQUFlLEdBQUFILElBQUEsQ0FBZkcsZUFBZTtJQUFFQyxTQUFTLEdBQUFKLElBQUEsQ0FBVEksU0FBUztJQUFFQyxrQkFBa0IsR0FBQUwsSUFBQSxDQUFsQkssa0JBQWtCO0VBQzFFLElBQUFDLEtBQUEsR0FBY2hCLElBQUksQ0FBQyxDQUFDO0lBQVppQixDQUFDLEdBQUFELEtBQUEsQ0FBREMsQ0FBQztFQUVUckIsU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJLENBQUNpQixlQUFlLElBQUksQ0FBQ0MsU0FBUyxJQUFJSCxRQUFRLENBQUNPLE1BQU0sS0FBSyxDQUFDLEVBQUU7SUFDN0QsSUFBTUMsaUJBQWlCLEdBQUdSLFFBQVEsQ0FBQ1MsTUFBTSxDQUFDLFVBQUFDLE9BQU87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
|
|
91
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwiQWdlbnRBY3Rpdml0eUluZGljYXRvciIsImNvbGxlY3RSdW5uaW5nU3RlcHNGcm9tVGltZWxpbmUiLCJnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkiLCJ1c2VUIiwic3RyZWFtRGVidWdMb2ciLCJTQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQiLCJTQ1N0cmVhbVR1cm5UaW1lbGluZSIsIlNDU3RyZWFtVHVybkNvbnRlbnRCbG9jayIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJidWlsZEJvdHRvbVRpbWVsaW5lQWN0aXZpdHkiLCJydW5uaW5nU3RlcHMiLCJ3YWl0aW5nUmVzcG9uc2UiLCJpc1dyaXRpbmciLCJpbml0aWFsQWN0aXZpdHkiLCJ0IiwibGVuZ3RoIiwiYWN0aXZlU3RlcCIsInBoYXNlIiwibWVzc2FnZSIsImV4ZWN1dGlvblN0ZXBzIiwiU3RyZWFtQXNzaXN0YW50VHVyblRpbWVsaW5lIiwiX3JlZiIsInNlZ21lbnRzIiwicmVuZGVyQ29udGVudEJsb2NrIiwiX3VzZVQiLCJjb250ZW50U2VnbWVudHMiLCJmaWx0ZXIiLCJzZWdtZW50IiwidHlwZSIsImJvdHRvbUFjdGl2aXR5Iiwic2VnbWVudENvdW50IiwiY29udGVudFNlZ21lbnRDb3VudCIsInJ1bm5pbmdTdGVwQ291bnQiLCJoYXNJbml0aWFsQWN0aXZpdHkiLCJCb29sZWFuIiwiaW5pdGlhbEFjdGl2aXR5TWVzc2FnZSIsImJvdHRvbUFjdGl2aXR5UGhhc2UiLCJtYXAiLCJzdGVwIiwibm9kZSIsInRvb2xOYW1lIiwic3RhdHVzIiwiaGFzQ29udGVudCIsImNoaWxkcmVuIiwiaW5kZXgiLCJpc0xhc3RDb250ZW50Iiwic2hvd0Fzc2lzdGFudEhlYWRlciIsInNlZ21lbnRJZCIsImlkIiwidGV4dCIsImlzU3RyZWFtaW5nIiwiJGFmdGVyQ29udGVudCIsImFjdGl2aXR5IiwiZGlzcGxheU5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvU3RyZWFtQXNzaXN0YW50VHVyblRpbWVsaW5lL1N0cmVhbUFzc2lzdGFudFR1cm5UaW1lbGluZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IG1lbW8sIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1UaW1lbGluZVNlZ21lbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9zdHJlYW1UaW1lbGluZSdcbmltcG9ydCB7IEFnZW50QWN0aXZpdHlJbmRpY2F0b3IgfSBmcm9tICcuLi8uLi9hdG9tcy9BZ2VudEFjdGl2aXR5SW5kaWNhdG9yJ1xuaW1wb3J0IHsgY29sbGVjdFJ1bm5pbmdTdGVwc0Zyb21UaW1lbGluZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3N0cmVhbVRpbWVsaW5lJ1xuaW1wb3J0IHsgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgc3RyZWFtRGVidWdMb2cgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zdHJlYW1EZWJ1Z0xvZydcbmltcG9ydCB7XG4gIFNDU3RyZWFtRXhlY3V0aW9uU2VnbWVudCxcbiAgU0NTdHJlYW1UdXJuVGltZWxpbmUsXG4gIFNDU3RyZWFtVHVybkNvbnRlbnRCbG9jayxcbn0gZnJvbSAnLi9TdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUuc3R5bGVzJ1xuXG5leHBvcnQgdHlwZSBTdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmVQcm9wcyA9IHtcbiAgc2VnbWVudHM6IFN0cmVhbVRpbWVsaW5lU2VnbWVudFtdXG4gIGluaXRpYWxBY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkgfCBudWxsXG4gIHdhaXRpbmdSZXNwb25zZTogYm9vbGVhblxuICBpc1dyaXRpbmc6IGJvb2xlYW5cbiAgcmVuZGVyQ29udGVudEJsb2NrOiAocGFyYW1zOiB7XG4gICAgc2VnbWVudElkOiBzdHJpbmdcbiAgICB0ZXh0OiBzdHJpbmdcbiAgICBpc1N0cmVhbWluZzogYm9vbGVhblxuICAgIHNob3dBc3Npc3RhbnRIZWFkZXI6IGJvb2xlYW5cbiAgfSkgPT4gUmVhY3QuUmVhY3ROb2RlXG59XG5cbmNvbnN0IGJ1aWxkQm90dG9tVGltZWxpbmVBY3Rpdml0eSA9IChcbiAgcnVubmluZ1N0ZXBzOiBSZXR1cm5UeXBlPHR5cGVvZiBjb2xsZWN0UnVubmluZ1N0ZXBzRnJvbVRpbWVsaW5lPixcbiAgd2FpdGluZ1Jlc3BvbnNlOiBib29sZWFuLFxuICBpc1dyaXRpbmc6IGJvb2xlYW4sXG4gIGluaXRpYWxBY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkgfCBudWxsLFxuICB0OiBSZXR1cm5UeXBlPHR5cGVvZiB1c2VUPlsndCddXG4pOiBTdHJlYW1BY3Rpdml0eSB8IG51bGwgPT4ge1xuICBpZiAocnVubmluZ1N0ZXBzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBhY3RpdmVTdGVwID0gcnVubmluZ1N0ZXBzW3J1bm5pbmdTdGVwcy5sZW5ndGggLSAxXVxuICAgIHJldHVybiB7XG4gICAgICBwaGFzZTogJ2FjdGlvbicsXG4gICAgICBtZXNzYWdlOiBhY3RpdmVTdGVwLm1lc3NhZ2UsXG4gICAgICBleGVjdXRpb25TdGVwczogcnVubmluZ1N0ZXBzLFxuICAgIH1cbiAgfVxuXG4gIGlmIChpc1dyaXRpbmcpIHtcbiAgICByZXR1cm4gaW5pdGlhbEFjdGl2aXR5Py5waGFzZSA9PT0gJ3dyaXRpbmcnID8gaW5pdGlhbEFjdGl2aXR5IDogZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHQpXG4gIH1cblxuICBpZiAod2FpdGluZ1Jlc3BvbnNlICYmIGluaXRpYWxBY3Rpdml0eSkge1xuICAgIHJldHVybiBpbml0aWFsQWN0aXZpdHlcbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBjb25zdCBTdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUgPSBtZW1vKFxuICAoeyBzZWdtZW50cywgaW5pdGlhbEFjdGl2aXR5LCB3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZywgcmVuZGVyQ29udGVudEJsb2NrIH06IFN0cmVhbUFzc2lzdGFudFR1cm5UaW1lbGluZVByb3BzKSA9PiB7XG4gICAgY29uc3QgeyB0IH0gPSB1c2VUKClcblxuICAgIGNvbnN0IHJ1bm5pbmdTdGVwcyA9IHVzZU1lbW8oKCkgPT4gY29sbGVjdFJ1bm5pbmdTdGVwc0Zyb21UaW1lbGluZShzZWdtZW50cyksIFtzZWdtZW50c10pXG4gICAgY29uc3QgY29udGVudFNlZ21lbnRzID0gdXNlTWVtbygoKSA9PiBzZWdtZW50cy5maWx0ZXIoc2VnbWVudCA9PiBzZWdtZW50LnR5cGUgPT09ICdjb250ZW50JyksIFtzZWdtZW50c10pXG4gICAgY29uc3QgYm90dG9tQWN0aXZpdHkgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gYnVpbGRCb3R0b21UaW1lbGluZUFjdGl2aXR5KHJ1bm5pbmdTdGVwcywgd2FpdGluZ1Jlc3BvbnNlLCBpc1dyaXRpbmcsIGluaXRpYWxBY3Rpdml0eSwgdCksXG4gICAgICBbcnVubmluZ1N0ZXBzLCB3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZywgaW5pdGlhbEFjdGl2aXR5LCB0XVxuICAgIClcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXdhaXRpbmdSZXNwb25zZSAmJiAhaXNXcml0aW5nICYmIHNlZ21lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG4gICAgICBzdHJlYW1EZWJ1Z0xvZygnc3RyZWFtVGltZWxpbmVVSScsICdyZW5kZXInLCB7XG4gICAgICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICAgICAgaXNXcml0aW5nLFxuICAgICAgICBzZWdtZW50Q291bnQ6IHNlZ21lbnRzLmxlbmd0aCxcbiAgICAgICAgY29udGVudFNlZ21lbnRDb3VudDogY29udGVudFNlZ21lbnRzLmxlbmd0aCxcbiAgICAgICAgcnVubmluZ1N0ZXBDb3VudDogcnVubmluZ1N0ZXBzLmxlbmd0aCxcbiAgICAgICAgaGFzSW5pdGlhbEFjdGl2aXR5OiBCb29sZWFuKGluaXRpYWxBY3Rpdml0eSksXG4gICAgICAgIGluaXRpYWxBY3Rpdml0eU1lc3NhZ2U6IGluaXRpYWxBY3Rpdml0eT8ubWVzc2FnZSxcbiAgICAgICAgYm90dG9tQWN0aXZpdHlQaGFzZTogYm90dG9tQWN0aXZpdHk/LnBoYXNlLFxuICAgICAgICBydW5uaW5nU3RlcHM6IHJ1bm5pbmdTdGVwcy5tYXAoc3RlcCA9PiAoe1xuICAgICAgICAgIG5vZGU6IHN0ZXAubm9kZSxcbiAgICAgICAgICB0b29sTmFtZTogc3RlcC50b29sTmFtZSxcbiAgICAgICAgICBzdGF0dXM6IHN0ZXAuc3RhdHVzLFxuICAgICAgICAgIG1lc3NhZ2U6IHN0ZXAubWVzc2FnZSxcbiAgICAgICAgfSkpLFxuICAgICAgfSlcbiAgICB9LCBbXG4gICAgICBzZWdtZW50cyxcbiAgICAgIGNvbnRlbnRTZWdtZW50cy5sZW5ndGgsXG4gICAgICBpbml0aWFsQWN0aXZpdHksXG4gICAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgICBpc1dyaXRpbmcsXG4gICAgICBydW5uaW5nU3RlcHMsXG4gICAgICBib3R0b21BY3Rpdml0eT8ucGhhc2UsXG4gICAgXSlcblxuICAgIGlmICghd2FpdGluZ1Jlc3BvbnNlICYmICFpc1dyaXRpbmcgJiYgc2VnbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IGhhc0NvbnRlbnQgPSBjb250ZW50U2VnbWVudHMubGVuZ3RoID4gMFxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ1N0cmVhbVR1cm5UaW1lbGluZT5cbiAgICAgICAge2NvbnRlbnRTZWdtZW50cy5tYXAoKHNlZ21lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNMYXN0Q29udGVudCA9IGluZGV4ID09PSBjb250ZW50U2VnbWVudHMubGVuZ3RoIC0gMVxuICAgICAgICAgIGNvbnN0IHNob3dBc3Npc3RhbnRIZWFkZXIgPSBpbmRleCA9PT0gMFxuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxTQ1N0cmVhbVR1cm5Db250ZW50QmxvY2sga2V5PXtzZWdtZW50LmlkfT5cbiAgICAgICAgICAgICAge3JlbmRlckNvbnRlbnRCbG9jayh7XG4gICAgICAgICAgICAgICAgc2VnbWVudElkOiBzZWdtZW50LmlkLFxuICAgICAgICAgICAgICAgIHRleHQ6IHNlZ21lbnQudGV4dCxcbiAgICAgICAgICAgICAgICBpc1N0cmVhbWluZzogaXNMYXN0Q29udGVudCAmJiBpc1dyaXRpbmcsXG4gICAgICAgICAgICAgICAgc2hvd0Fzc2lzdGFudEhlYWRlcixcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICA8L1NDU3RyZWFtVHVybkNvbnRlbnRCbG9jaz5cbiAgICAgICAgICApXG4gICAgICAgIH0pfVxuICAgICAgICB7Ym90dG9tQWN0aXZpdHkgJiYgKFxuICAgICAgICAgIDxTQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQgJGFmdGVyQ29udGVudD17aGFzQ29udGVudH0+XG4gICAgICAgICAgICA8QWdlbnRBY3Rpdml0eUluZGljYXRvciBhY3Rpdml0eT17Ym90dG9tQWN0aXZpdHl9IC8+XG4gICAgICAgICAgPC9TQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQ+XG4gICAgICAgICl9XG4gICAgICA8L1NDU3RyZWFtVHVyblRpbWVsaW5lPlxuICAgIClcbiAgfVxuKVxuXG5TdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUuZGlzcGxheU5hbWUgPSAnU3RyZWFtQXNzaXN0YW50VHVyblRpbWVsaW5lJ1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxLQUFLLElB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
|