@projectcor/maia-components 2.11.61-0 → 2.11.62-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +9 -2
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +4 -2
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +29 -2
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +33 -24
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +16 -5
- package/lib/components/atoms/icons/SkillIcon.js +30 -0
- package/lib/components/atoms/icons/index.js +2 -1
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +12 -10
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +16 -22
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +3 -1
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +6 -7
- package/lib/hooks/useContextMentions.js +47 -9
- package/lib/hooks/useEntitySearch.js +286 -159
- package/lib/hooks/useMentionAllowedTypes.js +9 -6
- package/lib/hooks/useMentionPopover.js +31 -13
- package/lib/lang/br/index.js +3 -2
- package/lib/lang/en/index.js +3 -2
- package/lib/lang/es/index.js +3 -2
- package/lib/lang/fr/index.js +3 -2
- package/lib/types/contextMention.js +1 -1
- package/lib/utils/contextMentionIcons.js +29 -1
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
3
|
import { useGlobalContext } from '../context/global-context';
|
|
4
4
|
var ALL_TYPES = ['client', 'project', 'task', 'user'];
|
|
5
|
+
var SKILL_TYPE = 'skill';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Restricción temporal de producto: el popover de @-mentions (COR + MCP) solo aplica a
|
|
@@ -46,15 +47,16 @@ export var useMentionAllowedTypes = function useMentionAllowedTypes(override) {
|
|
|
46
47
|
};
|
|
47
48
|
}
|
|
48
49
|
if (TEMP_CONTEXT_MENTIONS_REQUIRE_PROJECT_OR_CLIENT_ENTITY && (agent === null || agent === void 0 ? void 0 : agent.entity) !== 'project' && (agent === null || agent === void 0 ? void 0 : agent.entity) !== 'client') {
|
|
50
|
+
// Para agentes sin entidad de proyecto/cliente, solo se expone el tab de skills.
|
|
49
51
|
return {
|
|
50
|
-
allowedTypes: [],
|
|
51
|
-
defaultType:
|
|
52
|
+
allowedTypes: [SKILL_TYPE],
|
|
53
|
+
defaultType: SKILL_TYPE
|
|
52
54
|
};
|
|
53
55
|
}
|
|
54
56
|
if ((agent === null || agent === void 0 ? void 0 : agent.entity) === 'global') {
|
|
55
57
|
return {
|
|
56
|
-
allowedTypes: [],
|
|
57
|
-
defaultType:
|
|
58
|
+
allowedTypes: [SKILL_TYPE],
|
|
59
|
+
defaultType: SKILL_TYPE
|
|
58
60
|
};
|
|
59
61
|
}
|
|
60
62
|
var allowedTypes = ALL_TYPES;
|
|
@@ -78,10 +80,11 @@ export var useMentionAllowedTypes = function useMentionAllowedTypes(override) {
|
|
|
78
80
|
if (mcpSlugs.length > 0) {
|
|
79
81
|
allowedTypes = [].concat(_toConsumableArray(allowedTypes), ['mcp']);
|
|
80
82
|
}
|
|
83
|
+
allowedTypes = [].concat(_toConsumableArray(allowedTypes), [SKILL_TYPE]);
|
|
81
84
|
return {
|
|
82
85
|
allowedTypes: allowedTypes,
|
|
83
|
-
defaultType: (_allowedTypes$ = allowedTypes[0]) !== null && _allowedTypes$ !== void 0 ? _allowedTypes$ :
|
|
86
|
+
defaultType: (_allowedTypes$ = allowedTypes[0]) !== null && _allowedTypes$ !== void 0 ? _allowedTypes$ : SKILL_TYPE
|
|
84
87
|
};
|
|
85
88
|
}, [agent === null || agent === void 0 ? void 0 : agent.entity, agent === null || agent === void 0 ? void 0 : agent.type, agent === null || agent === void 0 ? void 0 : agent.connectors, override]);
|
|
86
89
|
};
|
|
87
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlR2xvYmFsQ29udGV4dCIsIkFMTF9UWVBFUyIsIlNLSUxMX1RZUEUiLCJURU1QX0NPTlRFWFRfTUVOVElPTlNfUkVRVUlSRV9QUk9KRUNUX09SX0NMSUVOVF9FTlRJVFkiLCJ1c2VNZW50aW9uQWxsb3dlZFR5cGVzIiwib3ZlcnJpZGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsImFnZW50IiwiX2FnZW50JGNvbm5lY3RvcnMkZmluIiwiX2FnZW50JGNvbm5lY3RvcnMiLCJfYWxsb3dlZFR5cGVzJCIsInR5cGUiLCJhbGxvd2VkVHlwZXMiLCJkZWZhdWx0VHlwZSIsImxlbmd0aCIsImVudGl0eSIsImluY2x1ZGVzIiwiZmlsdGVyIiwibWNwU2x1Z3MiLCJjb25uZWN0b3JzIiwiZmluZCIsImNvbm5lY3RvciIsImdyb3VwIiwic2x1Z3MiLCJzbHVnIiwidHJpbSIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VNZW50aW9uQWxsb3dlZFR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgQ29udGV4dEVudGl0eVR5cGUgfSBmcm9tICcuLi90eXBlcy9jb250ZXh0TWVudGlvbidcblxuY29uc3QgQUxMX1RZUEVTOiBDb250ZXh0RW50aXR5VHlwZVtdID0gWydjbGllbnQnLCAncHJvamVjdCcsICd0YXNrJywgJ3VzZXInXVxuY29uc3QgU0tJTExfVFlQRTogQ29udGV4dEVudGl0eVR5cGUgPSAnc2tpbGwnXG5cbi8qKlxuICogUmVzdHJpY2Npw7NuIHRlbXBvcmFsIGRlIHByb2R1Y3RvOiBlbCBwb3BvdmVyIGRlIEAtbWVudGlvbnMgKENPUiArIE1DUCkgc29sbyBhcGxpY2EgYVxuICogYWdlbnRlcyBjdXlvIGBlbnRpdHlgIGVzIHByb3llY3RvIG8gY2xpZW50ZSAo4oCcZXNwZWNpYWxpc3Rhc+KAnSBhY290YWRvcykuIEVsIHJlc3RvIG5vIHZlIHRhYnNcbiAqIG5pIE1DUCBhdW5xdWUgdGVuZ2EgY29uZWN0b3JlcyBhY3Rpdm9zLiBQYXNhciBhIGBmYWxzZWAgY3VhbmRvIHNlIGhhYmlsaXRlIGRlIG51ZXZvIGVsXG4gKiBhbGNhbmNlIGFtcGxpbzsgbm8gYm9ycmFyIGVsIGN1ZXJwbyBkZWwgaG9vayBxdWUgcXVlZGEgZGViYWpvLlxuICovXG5jb25zdCBURU1QX0NPTlRFWFRfTUVOVElPTlNfUkVRVUlSRV9QUk9KRUNUX09SX0NMSUVOVF9FTlRJVFkgPSB0cnVlXG5cbmV4cG9ydCB0eXBlIFVzZU1lbnRpb25BbGxvd2VkVHlwZXNSZXN1bHQgPSB7XG4gIGFsbG93ZWRUeXBlczogQ29udGV4dEVudGl0eVR5cGVbXVxuICBkZWZhdWx0VHlwZTogQ29udGV4dEVudGl0eVR5cGVcbn1cblxuLyoqXG4gKiBEZXJpdmEgZGVsIGFnZW50IGFjdGl2byBxdcOpIHRhYnMgZGVsIGNvbnRleHQgbWVudGlvbiBkZWJlbiBlc3RhciBkaXNwb25pYmxlcy5cbiAqXG4gKiBSZWdsYXM6XG4gKiAgIC0gYWdlbnQuZW50aXR5ID09PSAnZ2xvYmFsJyAg4oaSIG5pbmd1bmEgKHNpbiBALW1lbnRpb25zKVxuICogICAtIGFnZW50LmVudGl0eSA9PT0gJ3Byb2plY3QnIOKGkiBbdGFzaywgdXNlcl1cbiAqICAgLSBhZ2VudC5lbnRpdHkgPT09ICdjbGllbnQnICDihpIgW3Byb2plY3QsIHRhc2ssIHVzZXJdXG4gKiAgIC0gYWdlbnQuZW50aXR5ID09PSBudWxsL290cm8gIOKGkiB0b2RhcyBzaSBlbCBmbGFnIHRlbXBvcmFsIGVzdMOhIGVuIGZhbHNlIChjb250ZXh0byBhbXBsaW8pXG4gKiAgIC0gYWdlbnQudHlwZSAhPT0gJ2Nsb25lJyAgICAgIOKGkiBuaW5ndW5hIChzaW4gQC1tZW50aW9ucyBwb3IgYWhvcmEpXG4gKlxuICogRWwgYG92ZXJyaWRlYCAocHJvcCBgZW5hYmxlZFR5cGVzYCBkZWwgY29tcG9uZW50ZSBjb25zdW1pZG9yKSBzaWVtcHJlIGdhbmEuXG4gKlxuICogTWllbnRyYXMgYFRFTVBfQ09OVEVYVF9NRU5USU9OU19SRVFVSVJFX1BST0pFQ1RfT1JfQ0xJRU5UX0VOVElUWWAgc2VhIHRydWUsIHRyYXMgZWwgb3ZlcnJpZGVcbiAqIHNvbG8gc2UgcGVybWl0ZSBjb250aW51YXIgc2kgYGFnZW50LmVudGl0eWAgZXMgYHByb2plY3RgIG8gYGNsaWVudGAgKHNpbiBAIHBhcmEgZ2xvYmFsL251bGwvb3Ryb3MpLlxuICovXG5leHBvcnQgY29uc3QgdXNlTWVudGlvbkFsbG93ZWRUeXBlcyA9IChvdmVycmlkZT86IENvbnRleHRFbnRpdHlUeXBlW10pOiBVc2VNZW50aW9uQWxsb3dlZFR5cGVzUmVzdWx0ID0+IHtcbiAgY29uc3QgeyBhZ2VudCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG5cbiAgcmV0dXJuIHVzZU1lbW8oKCk6IFVzZU1lbnRpb25BbGxvd2VkVHlwZXNSZXN1bHQgPT4ge1xuICAgIC8vIExhcyBALW1lbnRpb25zICh5IHBvciBlbmRlIGxvcyBmZXRjaCBkZSByZWNlbnRzKSBzb2xvIGFwbGljYW4gYSBhZ2VudGVzIGNsb25lLlxuICAgIC8vIExvcyBhZ2VudGVzIG5vLWNsb25lIChjdXN0b20sIGV0Yy4pIG5vIGxhcyB0aWVuZW4gaGFiaWxpdGFkYXMgcG9yIGFob3JhLlxuICAgIGlmIChhZ2VudD8udHlwZSAhPT0gJ2Nsb25lJykge1xuICAgICAgcmV0dXJuIHsgYWxsb3dlZFR5cGVzOiBbXSwgZGVmYXVsdFR5cGU6ICd1c2VyJyB9XG4gICAgfVxuXG4gICAgaWYgKG92ZXJyaWRlICYmIG92ZXJyaWRlLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRUeXBlID0gb3ZlcnJpZGVbMF1cbiAgICAgIHJldHVybiB7IGFsbG93ZWRUeXBlczogb3ZlcnJpZGUsIGRlZmF1bHRUeXBlIH1cbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBURU1QX0NPTlRFWFRfTUVOVElPTlNfUkVRVUlSRV9QUk9KRUNUX09SX0NMSUVOVF9FTlRJVFkgJiZcbiAgICAgIGFnZW50Py5lbnRpdHkgIT09ICdwcm9qZWN0JyAmJlxuICAgICAgYWdlbnQ/LmVudGl0eSAhPT0gJ2NsaWVudCdcbiAgICApIHtcbiAgICAgIC8vIFBhcmEgYWdlbnRlcyBzaW4gZW50aWRhZCBkZSBwcm95ZWN0by9jbGllbnRlLCBzb2xvIHNlIGV4cG9uZSBlbCB0YWIgZGUgc2tpbGxzLlxuICAgICAgcmV0dXJuIHsgYWxsb3dlZFR5cGVzOiBbU0tJTExfVFlQRV0sIGRlZmF1bHRUeXBlOiBTS0lMTF9UWVBFIH1cbiAgICB9XG5cbiAgICBpZiAoYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCcpIHtcbiAgICAgIHJldHVybiB7IGFsbG93ZWRUeXBlczogW1NLSUxMX1RZUEVdLCBkZWZhdWx0VHlwZTogU0tJTExfVFlQRSB9XG4gICAgfVxuXG4gICAgbGV0IGFsbG93ZWRUeXBlczogQ29udGV4dEVudGl0eVR5cGVbXSA9IEFMTF9UWVBFU1xuXG4gICAgaWYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0Jykge1xuICAgICAgYWxsb3dlZFR5cGVzID0gWyd1c2VyJywgJ3Rhc2snXVxuICAgIH0gZWxzZSBpZiAoYWdlbnQ/LmVudGl0eSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgIGFsbG93ZWRUeXBlcyA9IFsndXNlcicsICd0YXNrJywgJ3Byb2plY3QnXVxuICAgIH1cblxuICAgIC8vIGB1c2VyYCBzw7NsbyBzZSBoYWJpbGl0YSBqdW50byBjb24gYHRhc2tgLlxuICAgIGlmICghYWxsb3dlZFR5cGVzLmluY2x1ZGVzKCd0YXNrJykpIHtcbiAgICAgIGFsbG93ZWRUeXBlcyA9IGFsbG93ZWRUeXBlcy5maWx0ZXIodHlwZSA9PiB0eXBlICE9PSAndXNlcicpXG4gICAgfVxuXG4gICAgY29uc3QgbWNwU2x1Z3MgPVxuICAgICAgYWdlbnQ/LmNvbm5lY3RvcnNcbiAgICAgICAgPy5maW5kKGNvbm5lY3RvciA9PiBjb25uZWN0b3IuZ3JvdXAgPT09ICdNQ1AnKVxuICAgICAgICA/LnNsdWdzPy5maWx0ZXIoKHNsdWcpOiBzbHVnIGlzIHN0cmluZyA9PiB0eXBlb2Ygc2x1ZyA9PT0gJ3N0cmluZycgJiYgc2x1Zy50cmltKCkubGVuZ3RoID4gMCkgPz8gW11cbiAgICBpZiAobWNwU2x1Z3MubGVuZ3RoID4gMCkge1xuICAgICAgYWxsb3dlZFR5cGVzID0gWy4uLmFsbG93ZWRUeXBlcywgJ21jcCddXG4gICAgfVxuXG4gICAgYWxsb3dlZFR5cGVzID0gWy4uLmFsbG93ZWRUeXBlcywgU0tJTExfVFlQRV1cblxuICAgIHJldHVybiB7XG4gICAgICBhbGxvd2VkVHlwZXMsXG4gICAgICBkZWZhdWx0VHlwZTogYWxsb3dlZFR5cGVzWzBdID8/IFNLSUxMX1RZUEUsXG4gICAgfVxuICB9LCBbYWdlbnQ/LmVudGl0eSwgYWdlbnQ/LnR5cGUsIGFnZW50Py5jb25uZWN0b3JzLCBvdmVycmlkZV0pXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTQSxPQUFPLFFBQVEsT0FBTztBQUMvQixTQUFTQyxnQkFBZ0IsUUFBUSwyQkFBMkI7QUFHNUQsSUFBTUMsU0FBOEIsR0FBRyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztBQUM1RSxJQUFNQyxVQUE2QixHQUFHLE9BQU87O0FBRTdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1DLHNEQUFzRCxHQUFHLElBQUk7QUFPbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFNQyxzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXNCQSxDQUFJQyxRQUE4QixFQUFtQztFQUN0RyxJQUFBQyxpQkFBQSxHQUFrQk4sZ0JBQWdCLENBQUMsQ0FBQztJQUE1Qk8sS0FBSyxHQUFBRCxpQkFBQSxDQUFMQyxLQUFLO0VBRWIsT0FBT1IsT0FBTyxDQUFDLFlBQW9DO0lBQUEsSUFBQVMscUJBQUEsRUFBQUMsaUJBQUEsRUFBQUMsY0FBQTtJQUNqRDtJQUNBO0lBQ0EsSUFBSSxDQUFBSCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRUksSUFBSSxNQUFLLE9BQU8sRUFBRTtNQUMzQixPQUFPO1FBQUVDLFlBQVksRUFBRSxFQUFFO1FBQUVDLFdBQVcsRUFBRTtNQUFPLENBQUM7SUFDbEQ7SUFFQSxJQUFJUixRQUFRLElBQUlBLFFBQVEsQ0FBQ1MsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUNuQyxJQUFNRCxXQUFXLEdBQUdSLFFBQVEsQ0FBQyxDQUFDLENBQUM7TUFDL0IsT0FBTztRQUFFTyxZQUFZLEVBQUVQLFFBQVE7UUFBRVEsV0FBVyxFQUFYQTtNQUFZLENBQUM7SUFDaEQ7SUFFQSxJQUNFVixzREFBc0QsSUFDdEQsQ0FBQUksS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVRLE1BQU0sTUFBSyxTQUFTLElBQzNCLENBQUFSLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFUSxNQUFNLE1BQUssUUFBUSxFQUMxQjtNQUNBO01BQ0EsT0FBTztRQUFFSCxZQUFZLEVBQUUsQ0FBQ1YsVUFBVSxDQUFDO1FBQUVXLFdBQVcsRUFBRVg7TUFBVyxDQUFDO0lBQ2hFO0lBRUEsSUFBSSxDQUFBSyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRVEsTUFBTSxNQUFLLFFBQVEsRUFBRTtNQUM5QixPQUFPO1FBQUVILFlBQVksRUFBRSxDQUFDVixVQUFVLENBQUM7UUFBRVcsV0FBVyxFQUFFWDtNQUFXLENBQUM7SUFDaEU7SUFFQSxJQUFJVSxZQUFpQyxHQUFHWCxTQUFTO0lBRWpELElBQUksQ0FBQU0sS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVRLE1BQU0sTUFBSyxTQUFTLEVBQUU7TUFDL0JILFlBQVksR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDakMsQ0FBQyxNQUFNLElBQUksQ0FBQUwsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVRLE1BQU0sTUFBSyxRQUFRLEVBQUU7TUFDckNILFlBQVksR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDO0lBQzVDOztJQUVBO0lBQ0EsSUFBSSxDQUFDQSxZQUFZLENBQUNJLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtNQUNsQ0osWUFBWSxHQUFHQSxZQUFZLENBQUNLLE1BQU0sQ0FBQyxVQUFBTixJQUFJO1FBQUEsT0FBSUEsSUFBSSxLQUFLLE1BQU07TUFBQSxFQUFDO0lBQzdEO0lBRUEsSUFBTU8sUUFBUSxJQUFBVixxQkFBQSxHQUNaRCxLQUFLLGFBQUxBLEtBQUssZ0JBQUFFLGlCQUFBLEdBQUxGLEtBQUssQ0FBRVksVUFBVSxjQUFBVixpQkFBQSxnQkFBQUEsaUJBQUEsR0FBakJBLGlCQUFBLENBQ0lXLElBQUksQ0FBQyxVQUFBQyxTQUFTO01BQUEsT0FBSUEsU0FBUyxDQUFDQyxLQUFLLEtBQUssS0FBSztJQUFBLEVBQUMsY0FBQWIsaUJBQUEsZ0JBQUFBLGlCQUFBLEdBRGhEQSxpQkFBQSxDQUVJYyxLQUFLLGNBQUFkLGlCQUFBLHVCQUZUQSxpQkFBQSxDQUVXUSxNQUFNLENBQUMsVUFBQ08sSUFBSTtNQUFBLE9BQXFCLE9BQU9BLElBQUksS0FBSyxRQUFRLElBQUlBLElBQUksQ0FBQ0MsSUFBSSxDQUFDLENBQUMsQ0FBQ1gsTUFBTSxHQUFHLENBQUM7SUFBQSxFQUFDLGNBQUFOLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksRUFBRTtJQUN2RyxJQUFJVSxRQUFRLENBQUNKLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDdkJGLFlBQVksTUFBQWMsTUFBQSxDQUFBQyxrQkFBQSxDQUFPZixZQUFZLElBQUUsS0FBSyxFQUFDO0lBQ3pDO0lBRUFBLFlBQVksTUFBQWMsTUFBQSxDQUFBQyxrQkFBQSxDQUFPZixZQUFZLElBQUVWLFVBQVUsRUFBQztJQUU1QyxPQUFPO01BQ0xVLFlBQVksRUFBWkEsWUFBWTtNQUNaQyxXQUFXLEdBQUFILGNBQUEsR0FBRUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxjQUFBRixjQUFBLGNBQUFBLGNBQUEsR0FBSVI7SUFDbEMsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDSyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRVEsTUFBTSxFQUFFUixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRUksSUFBSSxFQUFFSixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRVksVUFBVSxFQUFFZCxRQUFRLENBQUMsQ0FBQztBQUMvRCxDQUFDIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -67,7 +67,8 @@ var useDerivedScope = function useDerivedScope() {
|
|
|
67
67
|
mcpSlugs: mcpSlugs,
|
|
68
68
|
agentEntity: agentEntity
|
|
69
69
|
};
|
|
70
|
-
}, [clientId, projectId, mcpSlugs, agentEntity]
|
|
70
|
+
}, [clientId, projectId, mcpSlugs, agentEntity] // skills se inyecta en useMentionPopover
|
|
71
|
+
);
|
|
71
72
|
};
|
|
72
73
|
|
|
73
74
|
/**
|
|
@@ -80,6 +81,7 @@ export var useMentionPopover = function useMentionPopover(_ref6) {
|
|
|
80
81
|
var editorRef = _ref6.editorRef,
|
|
81
82
|
popoverAnchorRef = _ref6.popoverAnchorRef,
|
|
82
83
|
enabledTypes = _ref6.enabledTypes,
|
|
84
|
+
skills = _ref6.skills,
|
|
83
85
|
onMentionAdded = _ref6.onMentionAdded;
|
|
84
86
|
var _useT = useT(),
|
|
85
87
|
t = _useT.t;
|
|
@@ -115,7 +117,12 @@ export var useMentionPopover = function useMentionPopover(_ref6) {
|
|
|
115
117
|
var hasEmittedOpen = useRef(false);
|
|
116
118
|
var popoverRef = useRef(null);
|
|
117
119
|
var getCaretRect = useCaretPosition();
|
|
118
|
-
var
|
|
120
|
+
var derivedScope = useDerivedScope();
|
|
121
|
+
var scope = useMemo(function () {
|
|
122
|
+
return skills ? _objectSpread(_objectSpread({}, derivedScope), {}, {
|
|
123
|
+
skills: skills
|
|
124
|
+
}) : derivedScope;
|
|
125
|
+
}, [derivedScope, skills]);
|
|
119
126
|
var _useEntitySearch = useEntitySearch(activeType, scope),
|
|
120
127
|
items = _useEntitySearch.items,
|
|
121
128
|
loading = _useEntitySearch.loading,
|
|
@@ -174,13 +181,17 @@ export var useMentionPopover = function useMentionPopover(_ref6) {
|
|
|
174
181
|
return;
|
|
175
182
|
}
|
|
176
183
|
if (trigger.active) {
|
|
177
|
-
//
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
var
|
|
183
|
-
var
|
|
184
|
+
// `@/` activa el tab de skills; el '/' forma parte del query en el trigger.
|
|
185
|
+
var isSkillTrigger = trigger.atRunLength === 1 && trigger.query.startsWith('/');
|
|
186
|
+
var nonSkillTypes = allowedTypes.filter(function (entityType) {
|
|
187
|
+
return entityType !== 'skill';
|
|
188
|
+
});
|
|
189
|
+
var effectiveAtRunLength = Math.min(trigger.atRunLength, nonSkillTypes.length);
|
|
190
|
+
var overflowAtCount = Math.max(0, trigger.atRunLength - nonSkillTypes.length);
|
|
191
|
+
var nonSkillTypesOrAll = nonSkillTypes.length > 0 ? nonSkillTypes : allowedTypes;
|
|
192
|
+
var corEntityType = getTypeFromTriggerSequence(effectiveAtRunLength, nonSkillTypesOrAll, defaultType);
|
|
193
|
+
var typeFromAt = isSkillTrigger ? 'skill' : corEntityType;
|
|
194
|
+
var effectiveQuery = isSkillTrigger ? trigger.query.slice(1) : "".concat('@'.repeat(overflowAtCount)).concat(trigger.query);
|
|
184
195
|
if (!popoverOpen) {
|
|
185
196
|
setPopoverOpen(true);
|
|
186
197
|
setActiveType(typeFromAt);
|
|
@@ -229,10 +240,17 @@ export var useMentionPopover = function useMentionPopover(_ref6) {
|
|
|
229
240
|
close();
|
|
230
241
|
}, [editorRef, onMentionAdded, event, close]);
|
|
231
242
|
var handleTypeChange = useCallback(function (type) {
|
|
232
|
-
var _editorRef$current3;
|
|
233
243
|
setActiveType(type);
|
|
234
|
-
|
|
235
|
-
|
|
244
|
+
if (type === 'skill') {
|
|
245
|
+
var _editorRef$current3;
|
|
246
|
+
(_editorRef$current3 = editorRef.current) === null || _editorRef$current3 === void 0 || _editorRef$current3.syncSkillTrigger();
|
|
247
|
+
} else {
|
|
248
|
+
var _editorRef$current4;
|
|
249
|
+
var nextRunLength = getTriggerSequenceFromType(type, allowedTypes.filter(function (entityType) {
|
|
250
|
+
return entityType !== 'skill';
|
|
251
|
+
}));
|
|
252
|
+
(_editorRef$current4 = editorRef.current) === null || _editorRef$current4 === void 0 || _editorRef$current4.syncTriggerAtRunLength(nextRunLength);
|
|
253
|
+
}
|
|
236
254
|
event(EVENTS.aiChatMentionTypeSwitch, {
|
|
237
255
|
type: type
|
|
238
256
|
});
|
|
@@ -359,4 +377,4 @@ export var useMentionPopover = function useMentionPopover(_ref6) {
|
|
|
359
377
|
close: close
|
|
360
378
|
};
|
|
361
379
|
};
|
|
362
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNvbnRleHRNZW50aW9uUG9wb3ZlciIsIk1BSUFfVEFTS19QQU5FTF9PVkVSTEFZX0FUVFIiLCJTQ01QQW5jaG9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VUIiwidXNlRW50aXR5U2VhcmNoIiwidXNlTWVudGlvbkFsbG93ZWRUeXBlcyIsInVzZUNhcmV0UG9zaXRpb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsImpzeCIsIl9qc3giLCJUWVBFX1RPX1RSSUdHRVJfU0VRVUVOQ0UiLCJ1c2VyIiwidGFzayIsInByb2plY3QiLCJnZXRUeXBlRnJvbVRyaWdnZXJTZXF1ZW5jZSIsImF0UnVuTGVuZ3RoIiwiYWxsb3dlZFR5cGVzIiwiZGVmYXVsdFR5cGUiLCJfT2JqZWN0JGVudHJpZXMkZmluZCQiLCJfT2JqZWN0JGVudHJpZXMkZmluZCIsIl9hbGxvd2VkVHlwZXMkdGFiSWR4Iiwibm9ybWFsaXplZCIsIk1hdGgiLCJtYXgiLCJmbG9vciIsIm1hcHBlZFR5cGUiLCJPYmplY3QiLCJlbnRyaWVzIiwiZmluZCIsIl9yZWYiLCJfcmVmMiIsIl9zbGljZWRUb0FycmF5IiwibGVuIiwiaW5jbHVkZXMiLCJ0YWJJZHgiLCJtaW4iLCJsZW5ndGgiLCJnZXRUcmlnZ2VyU2VxdWVuY2VGcm9tVHlwZSIsInR5cGUiLCJtYXBwZWQiLCJpZHgiLCJpbmRleE9mIiwidXNlRGVyaXZlZFNjb3BlIiwiX3JlZjMiLCJfY3R4JGNsaWVudCRpZCIsIl9jdHgkY2xpZW50IiwiX2N0eCRlbnRpdHlWYWx1ZXMiLCJfcmVmNCIsIl9yZWY1IiwiX2N0eCRwcm9qZWN0JGlkIiwiX2N0eCRwcm9qZWN0IiwiX2N0eCRlbnRpdHlWYWx1ZXMyIiwiX2N0eCRjaGlwc1Byb2plY3QiLCJfY3R4JGFnZW50JGVudGl0eSIsIl9jdHgkYWdlbnQiLCJfY3R4JGFnZW50JGNvbm5lY3RvcnMiLCJfY3R4JGFnZW50MiIsImN0eCIsImNsaWVudElkIiwiY2xpZW50IiwiaWQiLCJlbnRpdHlWYWx1ZXMiLCJwcm9qZWN0SWQiLCJjaGlwc1Byb2plY3QiLCJhZ2VudEVudGl0eSIsImFnZW50IiwiZW50aXR5IiwibWNwU2x1Z3NLZXkiLCJjb25uZWN0b3JzIiwiYyIsImdyb3VwIiwic2x1Z3MiLCJqb2luIiwibWNwU2x1Z3MiLCJfY3R4JGFnZW50JGNvbm5lY3RvcnMyIiwiX2N0eCRhZ2VudDMiLCJyYXciLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJTZXQiLCJmaWx0ZXIiLCJzIiwidHJpbSIsInNvcnQiLCJ1c2VNZW50aW9uUG9wb3ZlciIsIl9yZWY2IiwiZWRpdG9yUmVmIiwicG9wb3ZlckFuY2hvclJlZiIsImVuYWJsZWRUeXBlcyIsIm9uTWVudGlvbkFkZGVkIiwiX3VzZVQiLCJ0IiwiZXZlbnQiLCJfdXNlTWVudGlvbkFsbG93ZWRUeXAiLCJtZW50aW9uUG9wb3ZlclpJbmRleCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJhY3RpdmVUeXBlIiwic2V0QWN0aXZlVHlwZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwicG9wb3Zlck9wZW4iLCJzZXRQb3BvdmVyT3BlbiIsIl91c2VTdGF0ZTUiLCJib3R0b20iLCJsZWZ0Iiwid2lkdGgiLCJfdXNlU3RhdGU2IiwicG9wb3ZlclBvcyIsInNldFBvcG92ZXJQb3MiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImFjdGl2ZUluZGV4Iiwic2V0QWN0aXZlSW5kZXgiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsImlzS2V5Ym9hcmROYXZBY3RpdmUiLCJzZXRJc0tleWJvYXJkTmF2QWN0aXZlIiwiaGFzRW1pdHRlZE9wZW4iLCJwb3BvdmVyUmVmIiwiZ2V0Q2FyZXRSZWN0Iiwic2NvcGUiLCJfdXNlRW50aXR5U2VhcmNoIiwiaXRlbXMiLCJsb2FkaW5nIiwiZXJyb3IiLCJoaWRlUmVjZW50c0xhYmVsIiwiaGFzTW9yZSIsImlzTG9hZGluZ01vcmUiLCJsb2FkTW9yZSIsInNlYXJjaFZhbHVlIiwidXBkYXRlU2VhcmNoVmFsdWUiLCJwb3NpdGlvblBvcG92ZXIiLCJfcG9wb3ZlckFuY2hvclJlZiRjdXIiLCJfZWRpdG9yUmVmJGN1cnJlbnQkZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQiLCJfZWRpdG9yUmVmJGN1cnJlbnQkZ2UyIiwiZnJvbUFuY2hvciIsImN1cnJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJmcm9tRWRpdG9yIiwiZ2V0RWRpdG9yQ2xpZW50UmVjdCIsImNhbGwiLCJyZWN0IiwiY2FyZXQiLCJ2aWV3cG9ydEgiLCJ3aW5kb3ciLCJpbm5lckhlaWdodCIsInZpZXdwb3J0VyIsImlubmVyV2lkdGgiLCJmYWxsYmFja1ciLCJ0b3AiLCJyZXNldE1lbnRpb25PcGVuVHJhY2tpbmciLCJjbG9zZSIsImhhbmRsZVRyaWdnZXIiLCJ0cmlnZ2VyIiwiYWN0aXZlIiwib3ZlcmZsb3dBdENvdW50IiwiZWZmZWN0aXZlQXRSdW5MZW5ndGgiLCJlZmZlY3RpdmVRdWVyeSIsImNvbmNhdCIsInJlcGVhdCIsInF1ZXJ5IiwidHlwZUZyb21BdCIsImFpQ2hhdE1lbnRpb25PcGVuIiwiaW5zZXJ0U2VsZWN0ZWRJdGVtIiwiaXRlbSIsIl9pdGVtJHJhdyRjbGllbnRJZCIsIl9pdGVtJHJhdyRjbGllbnROYW1lIiwiX2l0ZW0kcmF3JHByb2plY3ROYW1lIiwiX2l0ZW0kcmF3JGZlZUlkIiwiX2l0ZW0kcmF3JGZhdGhlcklkIiwiX2l0ZW0kcmF3JGZhdGhlclRpdGxlIiwiX2l0ZW0kcmF3JHRvdGFsUHJveWVjIiwiX2l0ZW0kcmF3JG5hbWUiLCJfaXRlbSRyYXckcGljdHVyZSIsIl9pdGVtJHJhdyRwb3NpdGlvbk5hbSIsIl9pdGVtJHJhdyRlbWFpbCIsIl9lZGl0b3JSZWYkY3VycmVudDIiLCJtZW50aW9uIiwibGFiZWwiLCJwcmltYXJ5IiwibWV0YWRhdGEiLCJjbGllbnROYW1lIiwicHJvamVjdE5hbWUiLCJmZWVJZCIsImZhdGhlcklkIiwiZmF0aGVyVGl0bGUiLCJ0b3RhbFByb3llY3RvcyIsIm5hbWUiLCJwaWN0dXJlIiwicG9zaXRpb25OYW1lIiwiZW1haWwiLCJpbnNlcnRNZW50aW9uIiwiYWlDaGF0TWVudGlvblNlbGVjdCIsIlN0cmluZyIsImhhbmRsZVR5cGVDaGFuZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQzIiwibmV4dFJ1bkxlbmd0aCIsInN5bmNUcmlnZ2VyQXRSdW5MZW5ndGgiLCJhaUNoYXRNZW50aW9uVHlwZVN3aXRjaCIsImhhbmRsZUtleURvd24iLCJlIiwia2V5IiwicHJldmVudERlZmF1bHQiLCJtZXRhS2V5IiwiYWx0S2V5IiwiZGVsdGEiLCJuZXh0SWR4IiwicHJldiIsInVuZGVmaW5lZCIsImhhbmRsZXIiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSIsIm1vdXNlRXZlbnQiLCJfcG9wb3ZlclJlZiRjdXJyZW50IiwiX3BvcG92ZXJBbmNob3JSZWYkY3VyMiIsInRhcmdldCIsImNvbnRhaW5zIiwiZG9jdW1lbnQiLCJwcmV2SXNMb2FkaW5nTW9yZVJlZiIsInBvcG92ZXJOb2RlIiwiX29iamVjdFNwcmVhZCIsInJlZiIsIl9kZWZpbmVQcm9wZXJ0eSIsIiRib3R0b20iLCIkbGVmdCIsIiR3aWR0aCIsIiR6SW5kZXgiLCJvbk1vdXNlRG93biIsInN0b3BQcm9wYWdhdGlvbiIsImNoaWxkcmVuIiwib25UeXBlQ2hhbmdlIiwib25SZWFjaExpc3RFbmQiLCJrZXlib2FyZEhpbnQiLCJkZWZhdWx0VmFsdWUiLCJvbkl0ZW1TZWxlY3RlZCIsIm9uQWN0aXZlSW5kZXhDaGFuZ2UiLCJvbk1vdXNlTW92ZUluTGlzdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VNZW50aW9uUG9wb3Zlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2V5Ym9hcmRFdmVudCwgUmVhY3ROb2RlLCBSZWZPYmplY3QsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9hdG9tcy9Db250ZXh0TWVudGlvbkVkaXRvcidcbmltcG9ydCB7XG4gIENvbnRleHRNZW50aW9uUG9wb3ZlcixcbiAgTUFJQV9UQVNLX1BBTkVMX09WRVJMQVlfQVRUUixcbiAgU0NNUEFuY2hvcixcbn0gZnJvbSAnLi4vY29tcG9uZW50cy9hdG9tcy9Db250ZXh0TWVudGlvblBvcG92ZXInXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi91c2VUJ1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1jeWNsZVxuaW1wb3J0IHsgRW50aXR5U2VhcmNoU2NvcGUsIHVzZUVudGl0eVNlYXJjaCB9IGZyb20gJy4vdXNlRW50aXR5U2VhcmNoJ1xuaW1wb3J0IHsgdXNlTWVudGlvbkFsbG93ZWRUeXBlcyB9IGZyb20gJy4vdXNlTWVudGlvbkFsbG93ZWRUeXBlcydcbmltcG9ydCB7IHVzZUNhcmV0UG9zaXRpb24gfSBmcm9tICcuL3VzZUNhcmV0UG9zaXRpb24nXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi91c2VFdmVudCdcbmltcG9ydCB7IENvbnRleHRFbnRpdHlUeXBlLCBDb250ZXh0TWVudGlvbiwgQ29udGV4dE1lbnRpb25JdGVtIH0gZnJvbSAnLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5cbmV4cG9ydCB0eXBlIFVzZU1lbnRpb25Qb3BvdmVyT3B0aW9ucyA9IHtcbiAgZWRpdG9yUmVmOiBSZWZPYmplY3Q8Q29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGU+XG4gIC8qKlxuICAgKiBOb2RvIGN1eW8gYW5jaG8geSBib3JkZSBzdXBlcmlvciBkZWZpbmVuIGVsIHBvcG92ZXIgKHAuIGVqLiB3cmFwcGVyIGRlbCBpbnB1dCBlbiBNQUlBKS5cbiAgICogU2kgbm8gc2UgcGFzYSwgc2UgdXNhIGVsIHJlY3QgZGVsIGNvbnRlbnRlZGl0YWJsZSAoYGdldEVkaXRvckNsaWVudFJlY3RgKS5cbiAgICovXG4gIHBvcG92ZXJBbmNob3JSZWY/OiBSZWZPYmplY3Q8SFRNTEVsZW1lbnQgfCBudWxsPlxuICAvKiogT3ZlcnJpZGUgZGVsIHNldCBkZSB0YWJzIHBlcm1pdGlkYXM7IHNpIG5vIHNlIHBhc2Egc2UgZGVyaXZhIGRlbCBhZ2VudC4gKi9cbiAgZW5hYmxlZFR5cGVzPzogQ29udGV4dEVudGl0eVR5cGVbXVxuICAvKiogQ2FsbGJhY2sgY3VhbmRvIGVsIHVzdWFyaW8gaW5zZXJ0YSB1bmEgbWVudGlvbiB2w61hIGNsaWNrL3RlY2xhZG8uICovXG4gIG9uTWVudGlvbkFkZGVkPzogKG1lbnRpb246IENvbnRleHRNZW50aW9uKSA9PiB2b2lkXG59XG5cbmV4cG9ydCB0eXBlIFVzZU1lbnRpb25Qb3BvdmVyUmV0dXJuID0ge1xuICBwb3BvdmVyT3BlbjogYm9vbGVhblxuICAvKipcbiAgICogUmVpbmljaWEgZWwgdHJhY2tpbmcgZGUgYEFJX0NIQVRfTUVOVElPTl9PUEVOYCAocHJpbWVyYSBhcGVydHVyYSBwb3IgbWVuc2FqZSkuXG4gICAqIExsYW1hciB0cmFzIGVudmlhciBlbCBtZW5zYWplIG8gYWwgY2FtYmlhciBkZSBjb252ZXJzYWNpw7NuLlxuICAgKi9cbiAgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nOiAoKSA9PiB2b2lkXG4gIC8qKiBQcm9jZXNhIGVsIHRyaWdnZXIgcHJvdmVuaWVudGUgZGVsIGBDb250ZXh0TWVudGlvbkVkaXRvci5vbklucHV0YC4gKi9cbiAgaGFuZGxlVHJpZ2dlcjogKHRyaWdnZXI6IHsgYWN0aXZlOiBib29sZWFuOyBxdWVyeTogc3RyaW5nOyBhdFJ1bkxlbmd0aDogbnVtYmVyIH0pID0+IHZvaWRcbiAgLyoqXG4gICAqIE1hbmVqbyBkZSB0ZWNsYXMgcmVsYXRpdmFzIGFsIHBvcG92ZXIgKG5hdmVnYWNpw7NuLCBzZWxlY2Npw7NuLCBjYW1iaW8gZGVcbiAgICogdGFiIHkgZXNjYXBlKS4gRGV2dWVsdmUgYHRydWVgIHNpIGNvbnN1bWnDsyBsYSBrZXksIHBhcmEgcXVlIGVsIGNvbnN1bWVyXG4gICAqIHB1ZWRhIGRlY2lkaXIgc2kgc2VndWlyIHByb2Nlc2FuZG8gb3RyYXMgdGVjbGFzIChwLmVqLiBFbnRlciBwYXJhIGVudmlhcikuXG4gICAqL1xuICBoYW5kbGVLZXlEb3duOiAoZTogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IGJvb2xlYW5cbiAgLyoqIE5vZG8gZGVsIHBvcG92ZXI7IGVsIGNvbnN1bWVyIGRlYmUgcG9ydGFybG8gY29uIGBjcmVhdGVQb3J0YWxgLiAqL1xuICBwb3BvdmVyTm9kZTogUmVhY3ROb2RlIHwgbnVsbFxuICAvKiogQ2llcnJhIGVsIHBvcG92ZXIgeSBsaW1waWEgZWwgcXVlcnkuICovXG4gIGNsb3NlOiAoKSA9PiB2b2lkXG59XG5cbmNvbnN0IFRZUEVfVE9fVFJJR0dFUl9TRVFVRU5DRTogUGFydGlhbDxSZWNvcmQ8Q29udGV4dEVudGl0eVR5cGUsIG51bWJlcj4+ID0ge1xuICB1c2VyOiAxLFxuICB0YXNrOiAyLFxuICBwcm9qZWN0OiAzLFxufVxuXG5jb25zdCBnZXRUeXBlRnJvbVRyaWdnZXJTZXF1ZW5jZSA9IChcbiAgYXRSdW5MZW5ndGg6IG51bWJlcixcbiAgYWxsb3dlZFR5cGVzOiBDb250ZXh0RW50aXR5VHlwZVtdLFxuICBkZWZhdWx0VHlwZTogQ29udGV4dEVudGl0eVR5cGVcbik6IENvbnRleHRFbnRpdHlUeXBlID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IE1hdGgubWF4KDEsIE1hdGguZmxvb3IoYXRSdW5MZW5ndGgpKVxuICBjb25zdCBtYXBwZWRUeXBlID0gKE9iamVjdC5lbnRyaWVzKFRZUEVfVE9fVFJJR0dFUl9TRVFVRU5DRSkuZmluZCgoWywgbGVuXSkgPT4gbGVuID09PSBub3JtYWxpemVkKT8uWzBdID8/XG4gICAgbnVsbCkgYXMgQ29udGV4dEVudGl0eVR5cGUgfCBudWxsXG4gIGlmIChtYXBwZWRUeXBlICYmIGFsbG93ZWRUeXBlcy5pbmNsdWRlcyhtYXBwZWRUeXBlKSkgcmV0dXJuIG1hcHBlZFR5cGVcbiAgY29uc3QgdGFiSWR4ID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgbm9ybWFsaXplZCAtIDEpLCBhbGxvd2VkVHlwZXMubGVuZ3RoIC0gMSlcbiAgcmV0dXJuIGFsbG93ZWRUeXBlc1t0YWJJZHhdID8/IGRlZmF1bHRUeXBlXG59XG5cbmNvbnN0IGdldFRyaWdnZXJTZXF1ZW5jZUZyb21UeXBlID0gKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlLCBhbGxvd2VkVHlwZXM6IENvbnRleHRFbnRpdHlUeXBlW10pOiBudW1iZXIgPT4ge1xuICBjb25zdCBtYXBwZWQgPSBUWVBFX1RPX1RSSUdHRVJfU0VRVUVOQ0VbdHlwZV1cbiAgaWYgKG1hcHBlZCkgcmV0dXJuIG1hcHBlZFxuICBjb25zdCBpZHggPSBhbGxvd2VkVHlwZXMuaW5kZXhPZih0eXBlKVxuICByZXR1cm4gaWR4ID49IDAgPyBpZHggKyAxIDogMVxufVxuXG4vKipcbiAqIERlcml2YSBjbGllbnRJZCwgcHJvamVjdElkLCBhZ2VudEVudGl0eSB5IE1DUCBkZXNkZSBlbCBjb250ZXh0byBnbG9iYWwgKGluY2wuXG4gKiBgZW50aXR5VmFsdWVzYCB5IGBjaGlwc1Byb2plY3RgKSBwYXJhIGZpbHRyYXIgcmVjZW50cyB5IGLDunNxdWVkYSBHcmFwaFFMLlxuICovXG5jb25zdCB1c2VEZXJpdmVkU2NvcGUgPSAoKTogRW50aXR5U2VhcmNoU2NvcGUgPT4ge1xuICBjb25zdCBjdHggPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgY2xpZW50SWQgPSBjdHguY2xpZW50Py5pZCA/PyBjdHguZW50aXR5VmFsdWVzPy5jbGllbnRJZCA/PyBudWxsXG4gIGNvbnN0IHByb2plY3RJZCA9IGN0eC5wcm9qZWN0Py5pZCA/PyBjdHguZW50aXR5VmFsdWVzPy5wcm9qZWN0SWQgPz8gY3R4LmNoaXBzUHJvamVjdD8ucHJvamVjdElkID8/IG51bGxcbiAgY29uc3QgYWdlbnRFbnRpdHkgPSBjdHguYWdlbnQ/LmVudGl0eSA/PyBudWxsXG4gIGNvbnN0IG1jcFNsdWdzS2V5ID0gKGN0eC5hZ2VudD8uY29ubmVjdG9ycz8uZmluZChjID0+IGMuZ3JvdXAgPT09ICdNQ1AnKT8uc2x1Z3MgPz8gW10pLmpvaW4oJ3wnKVxuXG4gIGNvbnN0IG1jcFNsdWdzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgcmF3ID0gY3R4LmFnZW50Py5jb25uZWN0b3JzPy5maW5kKGMgPT4gYy5ncm91cCA9PT0gJ01DUCcpPy5zbHVncyA/PyBbXVxuICAgIHJldHVybiBbLi4ubmV3IFNldChyYXcuZmlsdGVyKChzKTogcyBpcyBzdHJpbmcgPT4gdHlwZW9mIHMgPT09ICdzdHJpbmcnICYmIHMudHJpbSgpLmxlbmd0aCA+IDApKV0uc29ydCgpXG4gIH0sIFttY3BTbHVnc0tleV0pXG5cbiAgcmV0dXJuIHVzZU1lbW88RW50aXR5U2VhcmNoU2NvcGU+KFxuICAgICgpID0+ICh7IGNsaWVudElkLCBwcm9qZWN0SWQsIG1jcFNsdWdzLCBhZ2VudEVudGl0eSB9KSxcbiAgICBbY2xpZW50SWQsIHByb2plY3RJZCwgbWNwU2x1Z3MsIGFnZW50RW50aXR5XVxuICApXG59XG5cbi8qKlxuICogRW5jYXBzdWxhIGxhIGzDs2dpY2EgZGVsIHBvcG92ZXIgZGUgQC1tZW50aW9ucyAoZXN0YWRvLCBmZXRjaCBwb3IgdGFiLCBhbmFseXRpY3MsXG4gKiBwb3NpY2lvbmFtaWVudG8pLiBFbCBjb25zdW1lciBtYW50aWVuZSBlbCBlZGl0b3IgeSBlbCBlbnbDrW8gZGVsIG1lbnNhamUuXG4gKiBMb3MgZmlsdHJvcyBkZSBiw7pzcXVlZGEgdXNhbiBgdXNlRGVyaXZlZFNjb3BlYDogZXNwZWNpYWxpc3RhIHByb3llY3RvIGFjb3RhIHRhcmVhc1xuICogYWwgYHByb2plY3RJZGAgZGVsIGNvbnRleHRvOyBlc3BlY2lhbGlzdGEgY2xpZW50ZSwgcHJveWVjdG9zIGFsIGBjbGllbnRJZGAgKGVuIGBleHRyYWAgZGUgc2VhcmNoKS5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZU1lbnRpb25Qb3BvdmVyID0gKHtcbiAgZWRpdG9yUmVmLFxuICBwb3BvdmVyQW5jaG9yUmVmLFxuICBlbmFibGVkVHlwZXMsXG4gIG9uTWVudGlvbkFkZGVkLFxufTogVXNlTWVudGlvblBvcG92ZXJPcHRpb25zKTogVXNlTWVudGlvblBvcG92ZXJSZXR1cm4gPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBhbGxvd2VkVHlwZXMsIGRlZmF1bHRUeXBlIH0gPSB1c2VNZW50aW9uQWxsb3dlZFR5cGVzKGVuYWJsZWRUeXBlcylcbiAgY29uc3QgbWVudGlvblBvcG92ZXJaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDEyMDAsICdvdmVybGF5JylcbiAgY29uc3QgW2FjdGl2ZVR5cGUsIHNldEFjdGl2ZVR5cGVdID0gdXNlU3RhdGU8Q29udGV4dEVudGl0eVR5cGU+KGRlZmF1bHRUeXBlKVxuICBjb25zdCBbcG9wb3Zlck9wZW4sIHNldFBvcG92ZXJPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbcG9wb3ZlclBvcywgc2V0UG9wb3ZlclBvc10gPSB1c2VTdGF0ZTx7IGJvdHRvbTogbnVtYmVyOyBsZWZ0OiBudW1iZXI7IHdpZHRoOiBudW1iZXIgfT4oe1xuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIHdpZHRoOiAwLFxuICB9KVxuICBjb25zdCBbYWN0aXZlSW5kZXgsIHNldEFjdGl2ZUluZGV4XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFtpc0tleWJvYXJkTmF2QWN0aXZlLCBzZXRJc0tleWJvYXJkTmF2QWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBoYXNFbWl0dGVkT3BlbiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgcG9wb3ZlclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGdldENhcmV0UmVjdCA9IHVzZUNhcmV0UG9zaXRpb24oKVxuXG4gIGNvbnN0IHNjb3BlID0gdXNlRGVyaXZlZFNjb3BlKClcbiAgY29uc3QgeyBpdGVtcywgbG9hZGluZywgZXJyb3IsIGhpZGVSZWNlbnRzTGFiZWwsIGhhc01vcmUsIGlzTG9hZGluZ01vcmUsIGxvYWRNb3JlLCBzZWFyY2hWYWx1ZSwgdXBkYXRlU2VhcmNoVmFsdWUgfSA9XG4gICAgdXNlRW50aXR5U2VhcmNoKGFjdGl2ZVR5cGUsIHNjb3BlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFhbGxvd2VkVHlwZXMuaW5jbHVkZXMoYWN0aXZlVHlwZSkpIHtcbiAgICAgIHNldEFjdGl2ZVR5cGUoZGVmYXVsdFR5cGUpXG4gICAgfVxuICB9LCBbYWxsb3dlZFR5cGVzLCBhY3RpdmVUeXBlLCBkZWZhdWx0VHlwZV0pXG5cbiAgY29uc3QgcG9zaXRpb25Qb3BvdmVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGZyb21BbmNob3IgPSBwb3BvdmVyQW5jaG9yUmVmPy5jdXJyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IGZyb21FZGl0b3IgPSBlZGl0b3JSZWYuY3VycmVudD8uZ2V0RWRpdG9yQ2xpZW50UmVjdD8uKCkgPz8gbnVsbFxuICAgIGNvbnN0IHJlY3QgPSBmcm9tQW5jaG9yID8/IGZyb21FZGl0b3JcbiAgICBpZiAoIXJlY3QgfHwgcmVjdC53aWR0aCA8PSAwKSB7XG4gICAgICBjb25zdCBjYXJldCA9IGdldENhcmV0UmVjdCgpXG4gICAgICBpZiAoIWNhcmV0KSByZXR1cm5cbiAgICAgIGNvbnN0IHZpZXdwb3J0SCA9IHdpbmRvdy5pbm5lckhlaWdodFxuICAgICAgY29uc3Qgdmlld3BvcnRXID0gd2luZG93LmlubmVyV2lkdGhcbiAgICAgIGNvbnN0IGZhbGxiYWNrVyA9IDMyMFxuICAgICAgY29uc3QgbGVmdCA9IE1hdGgubWF4KDgsIE1hdGgubWluKHZpZXdwb3J0VyAtIGZhbGxiYWNrVyAtIDgsIGNhcmV0LmxlZnQpKVxuICAgICAgc2V0UG9wb3ZlclBvcyh7XG4gICAgICAgIHdpZHRoOiBmYWxsYmFja1csXG4gICAgICAgIGxlZnQsXG4gICAgICAgIGJvdHRvbTogdmlld3BvcnRIIC0gY2FyZXQudG9wICsgNCxcbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCB2aWV3cG9ydFcgPSB3aW5kb3cuaW5uZXJXaWR0aFxuICAgIGNvbnN0IHZpZXdwb3J0SCA9IHdpbmRvdy5pbm5lckhlaWdodFxuICAgIGNvbnN0IHsgd2lkdGggfSA9IHJlY3RcbiAgICBjb25zdCBsZWZ0ID0gTWF0aC5tYXgoOCwgTWF0aC5taW4odmlld3BvcnRXIC0gd2lkdGggLSA4LCByZWN0LmxlZnQpKVxuICAgIC8qKiBQb3BvdmVyIHNpZW1wcmUgYXJyaWJhIGRlbCBpbnB1dDogYm9yZGUgaW5mZXJpb3IgZGVsIHBvcG92ZXIgfjRweCBzb2JyZSBlbCBib3JkZSBzdXBlcmlvciBkZWwgYW5jbGEuICovXG4gICAgc2V0UG9wb3ZlclBvcyh7XG4gICAgICB3aWR0aCxcbiAgICAgIGxlZnQsXG4gICAgICBib3R0b206IHZpZXdwb3J0SCAtIHJlY3QudG9wICsgNCxcbiAgICB9KVxuICB9LCBbcG9wb3ZlckFuY2hvclJlZiwgZWRpdG9yUmVmLCBnZXRDYXJldFJlY3RdKVxuXG4gIGNvbnN0IHJlc2V0TWVudGlvbk9wZW5UcmFja2luZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBoYXNFbWl0dGVkT3Blbi5jdXJyZW50ID0gZmFsc2VcbiAgfSwgW10pXG5cbiAgY29uc3QgY2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0UG9wb3Zlck9wZW4oZmFsc2UpXG4gICAgdXBkYXRlU2VhcmNoVmFsdWUoJycpXG4gIH0sIFt1cGRhdGVTZWFyY2hWYWx1ZV0pXG5cbiAgY29uc3QgaGFuZGxlVHJpZ2dlciA9IHVzZUNhbGxiYWNrKFxuICAgICh0cmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZzsgYXRSdW5MZW5ndGg6IG51bWJlciB9KSA9PiB7XG4gICAgICBpZiAoYWxsb3dlZFR5cGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAocG9wb3Zlck9wZW4pIGNsb3NlKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmICh0cmlnZ2VyLmFjdGl2ZSkge1xuICAgICAgICAvLyBTaSBoYXkgbcOhcyBgQGAgcXVlIHRhYnMgKHAuIGVqLiBhZ2VudGUgcHJveWVjdG86IGBAYCB1c3VhcmlvLCBgQEBgIHRhcmVhIOKGkiBgQEBAYCksXG4gICAgICAgIC8vIHNlIHVzYSBsYSDDumx0aW1hIHRhYiB5IGxvcyBgQGAgZGUgbcOhcyBwYXNhbiBhbCB0ZXh0byBkZSBiw7pzcXVlZGEgKGBAQEBgIOKHkiB0YWIgdGFyZWEgKyBxdWVyeSBgQGApLlxuICAgICAgICAvLyBDb24g4omlMyB0YWJzIChjbGllbnRlKSwgYEBAQGAgY29pbmNpZGUgY29uIGxhIDMuZXIgdGFiIChgcHJvamVjdGApLlxuICAgICAgICBjb25zdCBvdmVyZmxvd0F0Q291bnQgPSBNYXRoLm1heCgwLCB0cmlnZ2VyLmF0UnVuTGVuZ3RoIC0gYWxsb3dlZFR5cGVzLmxlbmd0aClcbiAgICAgICAgY29uc3QgZWZmZWN0aXZlQXRSdW5MZW5ndGggPSBNYXRoLm1pbih0cmlnZ2VyLmF0UnVuTGVuZ3RoLCBhbGxvd2VkVHlwZXMubGVuZ3RoKVxuICAgICAgICBjb25zdCBlZmZlY3RpdmVRdWVyeSA9IGAkeydAJy5yZXBlYXQob3ZlcmZsb3dBdENvdW50KX0ke3RyaWdnZXIucXVlcnl9YFxuICAgICAgICBjb25zdCB0eXBlRnJvbUF0ID0gZ2V0VHlwZUZyb21UcmlnZ2VyU2VxdWVuY2UoZWZmZWN0aXZlQXRSdW5MZW5ndGgsIGFsbG93ZWRUeXBlcywgZGVmYXVsdFR5cGUpXG5cbiAgICAgICAgaWYgKCFwb3BvdmVyT3Blbikge1xuICAgICAgICAgIHNldFBvcG92ZXJPcGVuKHRydWUpXG4gICAgICAgICAgc2V0QWN0aXZlVHlwZSh0eXBlRnJvbUF0KVxuICAgICAgICAgIHBvc2l0aW9uUG9wb3ZlcigpXG4gICAgICAgICAgaWYgKCFoYXNFbWl0dGVkT3Blbi5jdXJyZW50KSB7XG4gICAgICAgICAgICBldmVudChFVkVOVFMuYWlDaGF0TWVudGlvbk9wZW4sIHsgdHlwZTogdHlwZUZyb21BdCB9KVxuICAgICAgICAgICAgaGFzRW1pdHRlZE9wZW4uY3VycmVudCA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0QWN0aXZlVHlwZSh0eXBlRnJvbUF0KVxuICAgICAgICAgIHBvc2l0aW9uUG9wb3ZlcigpXG4gICAgICAgIH1cbiAgICAgICAgdXBkYXRlU2VhcmNoVmFsdWUoZWZmZWN0aXZlUXVlcnkpXG4gICAgICB9IGVsc2UgaWYgKHBvcG92ZXJPcGVuKSB7XG4gICAgICAgIGNsb3NlKClcbiAgICAgIH1cbiAgICB9LFxuICAgIFthbGxvd2VkVHlwZXMsIGRlZmF1bHRUeXBlLCBwb3BvdmVyT3BlbiwgcG9zaXRpb25Qb3BvdmVyLCB1cGRhdGVTZWFyY2hWYWx1ZSwgZXZlbnQsIGNsb3NlXVxuICApXG5cbiAgY29uc3QgaW5zZXJ0U2VsZWN0ZWRJdGVtID0gdXNlQ2FsbGJhY2soXG4gICAgKGl0ZW06IENvbnRleHRNZW50aW9uSXRlbSkgPT4ge1xuICAgICAgY29uc3QgbWVudGlvbjogQ29udGV4dE1lbnRpb24gPSB7XG4gICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXG4gICAgICAgIGxhYmVsOiBpdGVtLnByaW1hcnksXG4gICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgY2xpZW50SWQ6IGl0ZW0ucmF3LmNsaWVudElkID8/IG51bGwsXG4gICAgICAgICAgY2xpZW50TmFtZTogaXRlbS5yYXcuY2xpZW50TmFtZSA/PyBudWxsLFxuICAgICAgICAgIHByb2plY3ROYW1lOiBpdGVtLnJhdy5wcm9qZWN0TmFtZSA/PyBudWxsLFxuICAgICAgICAgIGZlZUlkOiBpdGVtLnJhdy5mZWVJZCA/PyBudWxsLFxuICAgICAgICAgIGZhdGhlcklkOiBpdGVtLnJhdy5mYXRoZXJJZCA/PyBudWxsLFxuICAgICAgICAgIGZhdGhlclRpdGxlOiBpdGVtLnJhdy5mYXRoZXJUaXRsZSA/PyBudWxsLFxuICAgICAgICAgIHRvdGFsUHJveWVjdG9zOiBpdGVtLnJhdy50b3RhbFByb3llY3RvcyA/PyBudWxsLFxuICAgICAgICAgIG5hbWU6IGl0ZW0ucmF3Lm5hbWUgPz8gbnVsbCxcbiAgICAgICAgICBwaWN0dXJlOiBpdGVtLnJhdy5waWN0dXJlID8/IG51bGwsXG4gICAgICAgICAgcG9zaXRpb25OYW1lOiBpdGVtLnJhdy5wb3NpdGlvbk5hbWUgPz8gbnVsbCxcbiAgICAgICAgICBlbWFpbDogaXRlbS5yYXcuZW1haWwgPz8gbnVsbCxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRNZW50aW9uKG1lbnRpb24pXG4gICAgICBvbk1lbnRpb25BZGRlZD8uKG1lbnRpb24pXG4gICAgICBldmVudChFVkVOVFMuYWlDaGF0TWVudGlvblNlbGVjdCwgeyB0eXBlOiBtZW50aW9uLnR5cGUsIGlkOiBTdHJpbmcobWVudGlvbi5pZCkgfSlcbiAgICAgIGNsb3NlKClcbiAgICB9LFxuICAgIFtlZGl0b3JSZWYsIG9uTWVudGlvbkFkZGVkLCBldmVudCwgY2xvc2VdXG4gIClcblxuICBjb25zdCBoYW5kbGVUeXBlQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlKSA9PiB7XG4gICAgICBzZXRBY3RpdmVUeXBlKHR5cGUpXG4gICAgICBjb25zdCBuZXh0UnVuTGVuZ3RoID0gZ2V0VHJpZ2dlclNlcXVlbmNlRnJvbVR5cGUodHlwZSwgYWxsb3dlZFR5cGVzKVxuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LnN5bmNUcmlnZ2VyQXRSdW5MZW5ndGgobmV4dFJ1bkxlbmd0aClcbiAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRNZW50aW9uVHlwZVN3aXRjaCwgeyB0eXBlIH0pXG4gICAgfSxcbiAgICBbYWxsb3dlZFR5cGVzLCBlZGl0b3JSZWYsIGV2ZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBLZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50Pik6IGJvb2xlYW4gPT4ge1xuICAgICAgaWYgKCFwb3BvdmVyT3BlbiB8fCBhbGxvd2VkVHlwZXMubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2VcblxuICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgY2xvc2UoKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoKGUua2V5ID09PSAnQXJyb3dSaWdodCcgfHwgZS5rZXkgPT09ICdBcnJvd0xlZnQnKSAmJiAoZS5tZXRhS2V5IHx8IGUuYWx0S2V5KSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgY29uc3QgaWR4ID0gYWxsb3dlZFR5cGVzLmluZGV4T2YoYWN0aXZlVHlwZSlcbiAgICAgICAgY29uc3QgZGVsdGEgPSBlLmtleSA9PT0gJ0Fycm93UmlnaHQnID8gMSA6IC0xXG4gICAgICAgIGNvbnN0IG5leHRJZHggPSAoaWR4ICsgZGVsdGEgKyBhbGxvd2VkVHlwZXMubGVuZ3RoKSAlIGFsbG93ZWRUeXBlcy5sZW5ndGhcbiAgICAgICAgaGFuZGxlVHlwZUNoYW5nZShhbGxvd2VkVHlwZXNbbmV4dElkeF0pXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtcy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZVxuXG4gICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBzZXRJc0tleWJvYXJkTmF2QWN0aXZlKHRydWUpXG4gICAgICAgIHNldEFjdGl2ZUluZGV4KHByZXYgPT4gKGl0ZW1zLmxlbmd0aCA+IDAgPyBNYXRoLm1pbihwcmV2ICsgMSwgaXRlbXMubGVuZ3RoIC0gMSkgOiAwKSlcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBzZXRJc0tleWJvYXJkTmF2QWN0aXZlKHRydWUpXG4gICAgICAgIHNldEFjdGl2ZUluZGV4KHByZXYgPT4gTWF0aC5tYXgocHJldiAtIDEsIDApKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInIHx8IGUua2V5ID09PSAnVGFiJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgaW5zZXJ0U2VsZWN0ZWRJdGVtKGl0ZW1zW2FjdGl2ZUluZGV4XSlcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0sXG4gICAgW3BvcG92ZXJPcGVuLCBpdGVtcywgYWxsb3dlZFR5cGVzLCBhY3RpdmVUeXBlLCBhY3RpdmVJbmRleCwgaW5zZXJ0U2VsZWN0ZWRJdGVtLCBjbG9zZSwgaGFuZGxlVHlwZUNoYW5nZV1cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFwb3BvdmVyT3BlbikgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiBwb3NpdGlvblBvcG92ZXIoKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB0cnVlKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIH1cbiAgfSwgW3BvcG92ZXJPcGVuLCBwb3NpdGlvblBvcG92ZXJdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFwb3BvdmVyT3BlbikgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlID0gKG1vdXNlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IG1vdXNlRXZlbnQudGFyZ2V0IGFzIE5vZGUgfCBudWxsXG4gICAgICBpZiAoIXRhcmdldCkgcmV0dXJuXG4gICAgICBpZiAocG9wb3ZlclJlZi5jdXJyZW50Py5jb250YWlucyh0YXJnZXQpKSByZXR1cm5cbiAgICAgIGlmIChwb3BvdmVyQW5jaG9yUmVmPy5jdXJyZW50Py5jb250YWlucyh0YXJnZXQpKSByZXR1cm5cbiAgICAgIGNsb3NlKClcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUpXG4gICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSlcbiAgfSwgW3BvcG92ZXJPcGVuLCBjbG9zZSwgcG9wb3ZlckFuY2hvclJlZl0pXG5cbiAgY29uc3QgcHJldklzTG9hZGluZ01vcmVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHByZXZJc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQgPSBpc0xvYWRpbmdNb3JlXG4gICAgfVxuICB9LCBbaXNMb2FkaW5nTW9yZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocHJldklzTG9hZGluZ01vcmVSZWYuY3VycmVudCkgcmV0dXJuXG4gICAgc2V0QWN0aXZlSW5kZXgoMClcbiAgfSwgW2l0ZW1zLmxlbmd0aCwgYWN0aXZlVHlwZV0pXG5cbiAgY29uc3QgcG9wb3Zlck5vZGUgPSB1c2VNZW1vPFJlYWN0Tm9kZSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoIXBvcG92ZXJPcGVuKSByZXR1cm4gbnVsbFxuICAgIHJldHVybiAoXG4gICAgICA8U0NNUEFuY2hvclxuICAgICAgICByZWY9e3BvcG92ZXJSZWZ9XG4gICAgICAgIHsuLi57IFtNQUlBX1RBU0tfUEFORUxfT1ZFUkxBWV9BVFRSXTogJycgfX1cbiAgICAgICAgJGJvdHRvbT17cG9wb3ZlclBvcy5ib3R0b219XG4gICAgICAgICRsZWZ0PXtwb3BvdmVyUG9zLmxlZnR9XG4gICAgICAgICR3aWR0aD17cG9wb3ZlclBvcy53aWR0aH1cbiAgICAgICAgJHpJbmRleD17bWVudGlvblBvcG92ZXJaSW5kZXh9XG4gICAgICAgIG9uTW91c2VEb3duPXtlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICA+XG4gICAgICAgIDxDb250ZXh0TWVudGlvblBvcG92ZXJcbiAgICAgICAgICBhbGxvd2VkVHlwZXM9e2FsbG93ZWRUeXBlc31cbiAgICAgICAgICBhY3RpdmVUeXBlPXthY3RpdmVUeXBlfVxuICAgICAgICAgIG9uVHlwZUNoYW5nZT17aGFuZGxlVHlwZUNoYW5nZX1cbiAgICAgICAgICBpdGVtcz17aXRlbXN9XG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgICAgaGlkZVJlY2VudHNMYWJlbD17aGlkZVJlY2VudHNMYWJlbH1cbiAgICAgICAgICBoYXNNb3JlPXtoYXNNb3JlfVxuICAgICAgICAgIGlzTG9hZGluZ01vcmU9e2lzTG9hZGluZ01vcmV9XG4gICAgICAgICAgb25SZWFjaExpc3RFbmQ9e2xvYWRNb3JlfVxuICAgICAgICAgIHNlYXJjaFZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICBrZXlib2FyZEhpbnQ9e3QoJ2NvbnRleHRNZW50aW9uLmtleWJvYXJkSGludCcsIHtcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogJ05hdmVnYWNpw7NuIGVudHJlIHBlc3Rhw7FhczogQCwgQEAsIEBAQOKApiBlbiBvcmRlbi4gVGFtYmnDqW4gQWx0L0NtZCArIOKGkC/ihpInLFxuICAgICAgICAgIH0pfVxuICAgICAgICAgIG9uSXRlbVNlbGVjdGVkPXtpbnNlcnRTZWxlY3RlZEl0ZW19XG4gICAgICAgICAgYWN0aXZlSW5kZXg9e2FjdGl2ZUluZGV4fVxuICAgICAgICAgIG9uQWN0aXZlSW5kZXhDaGFuZ2U9e3NldEFjdGl2ZUluZGV4fVxuICAgICAgICAgIGlzS2V5Ym9hcmROYXZBY3RpdmU9e2lzS2V5Ym9hcmROYXZBY3RpdmV9XG4gICAgICAgICAgb25Nb3VzZU1vdmVJbkxpc3Q9eygpID0+IHNldElzS2V5Ym9hcmROYXZBY3RpdmUoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgPC9TQ01QQW5jaG9yPlxuICAgIClcbiAgfSwgW1xuICAgIHBvcG92ZXJPcGVuLFxuICAgIHBvcG92ZXJQb3MsXG4gICAgbWVudGlvblBvcG92ZXJaSW5kZXgsXG4gICAgYWxsb3dlZFR5cGVzLFxuICAgIGFjdGl2ZVR5cGUsXG4gICAgaGFuZGxlVHlwZUNoYW5nZSxcbiAgICBpdGVtcyxcbiAgICBsb2FkaW5nLFxuICAgIGVycm9yLFxuICAgIGhpZGVSZWNlbnRzTGFiZWwsXG4gICAgaGFzTW9yZSxcbiAgICBpc0xvYWRpbmdNb3JlLFxuICAgIGxvYWRNb3JlLFxuICAgIHNlYXJjaFZhbHVlLFxuICAgIGluc2VydFNlbGVjdGVkSXRlbSxcbiAgICBhY3RpdmVJbmRleCxcbiAgICBpc0tleWJvYXJkTmF2QWN0aXZlLFxuICBdKVxuXG4gIHJldHVybiB7IHBvcG92ZXJPcGVuLCByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsIGhhbmRsZVRyaWdnZXIsIGhhbmRsZUtleURvd24sIHBvcG92ZXJOb2RlLCBjbG9zZSB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsU0FBOENBLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFFOUcsU0FDRUMscUJBQXFCLEVBQ3JCQyw0QkFBNEIsRUFDNUJDLFVBQVUsUUFDTCwyQ0FBMkM7QUFDbEQsU0FBU0Msc0JBQXNCLFFBQVEsMEJBQTBCO0FBQ2pFLFNBQVNDLGdCQUFnQixRQUFRLDJCQUEyQjtBQUM1RCxTQUFTQyxJQUFJLFFBQVEsUUFBUTtBQUM3QjtBQUNBLFNBQTRCQyxlQUFlLFFBQVEsbUJBQW1CO0FBQ3RFLFNBQVNDLHNCQUFzQixRQUFRLDBCQUEwQjtBQUNqRSxTQUFTQyxnQkFBZ0IsUUFBUSxvQkFBb0I7QUFDckQsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEsWUFBWTtBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQTtBQXFDN0MsSUFBTUMsd0JBQW9FLEdBQUc7RUFDM0VDLElBQUksRUFBRSxDQUFDO0VBQ1BDLElBQUksRUFBRSxDQUFDO0VBQ1BDLE9BQU8sRUFBRTtBQUNYLENBQUM7QUFFRCxJQUFNQywwQkFBMEIsR0FBRyxTQUE3QkEsMEJBQTBCQSxDQUM5QkMsV0FBbUIsRUFDbkJDLFlBQWlDLEVBQ2pDQyxXQUE4QixFQUNSO0VBQUEsSUFBQUMscUJBQUEsRUFBQUMsb0JBQUEsRUFBQUMsb0JBQUE7RUFDdEIsSUFBTUMsVUFBVSxHQUFHQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEVBQUVELElBQUks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
|
|
380
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNvbnRleHRNZW50aW9uUG9wb3ZlciIsIk1BSUFfVEFTS19QQU5FTF9PVkVSTEFZX0FUVFIiLCJTQ01QQW5jaG9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VUIiwidXNlRW50aXR5U2VhcmNoIiwidXNlTWVudGlvbkFsbG93ZWRUeXBlcyIsInVzZUNhcmV0UG9zaXRpb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsImpzeCIsIl9qc3giLCJUWVBFX1RPX1RSSUdHRVJfU0VRVUVOQ0UiLCJ1c2VyIiwidGFzayIsInByb2plY3QiLCJnZXRUeXBlRnJvbVRyaWdnZXJTZXF1ZW5jZSIsImF0UnVuTGVuZ3RoIiwiYWxsb3dlZFR5cGVzIiwiZGVmYXVsdFR5cGUiLCJfT2JqZWN0JGVudHJpZXMkZmluZCQiLCJfT2JqZWN0JGVudHJpZXMkZmluZCIsIl9hbGxvd2VkVHlwZXMkdGFiSWR4Iiwibm9ybWFsaXplZCIsIk1hdGgiLCJtYXgiLCJmbG9vciIsIm1hcHBlZFR5cGUiLCJPYmplY3QiLCJlbnRyaWVzIiwiZmluZCIsIl9yZWYiLCJfcmVmMiIsIl9zbGljZWRUb0FycmF5IiwibGVuIiwiaW5jbHVkZXMiLCJ0YWJJZHgiLCJtaW4iLCJsZW5ndGgiLCJnZXRUcmlnZ2VyU2VxdWVuY2VGcm9tVHlwZSIsInR5cGUiLCJtYXBwZWQiLCJpZHgiLCJpbmRleE9mIiwidXNlRGVyaXZlZFNjb3BlIiwiX3JlZjMiLCJfY3R4JGNsaWVudCRpZCIsIl9jdHgkY2xpZW50IiwiX2N0eCRlbnRpdHlWYWx1ZXMiLCJfcmVmNCIsIl9yZWY1IiwiX2N0eCRwcm9qZWN0JGlkIiwiX2N0eCRwcm9qZWN0IiwiX2N0eCRlbnRpdHlWYWx1ZXMyIiwiX2N0eCRjaGlwc1Byb2plY3QiLCJfY3R4JGFnZW50JGVudGl0eSIsIl9jdHgkYWdlbnQiLCJfY3R4JGFnZW50JGNvbm5lY3RvcnMiLCJfY3R4JGFnZW50MiIsImN0eCIsImNsaWVudElkIiwiY2xpZW50IiwiaWQiLCJlbnRpdHlWYWx1ZXMiLCJwcm9qZWN0SWQiLCJjaGlwc1Byb2plY3QiLCJhZ2VudEVudGl0eSIsImFnZW50IiwiZW50aXR5IiwibWNwU2x1Z3NLZXkiLCJjb25uZWN0b3JzIiwiYyIsImdyb3VwIiwic2x1Z3MiLCJqb2luIiwibWNwU2x1Z3MiLCJfY3R4JGFnZW50JGNvbm5lY3RvcnMyIiwiX2N0eCRhZ2VudDMiLCJyYXciLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJTZXQiLCJmaWx0ZXIiLCJzIiwidHJpbSIsInNvcnQiLCJ1c2VNZW50aW9uUG9wb3ZlciIsIl9yZWY2IiwiZWRpdG9yUmVmIiwicG9wb3ZlckFuY2hvclJlZiIsImVuYWJsZWRUeXBlcyIsInNraWxscyIsIm9uTWVudGlvbkFkZGVkIiwiX3VzZVQiLCJ0IiwiZXZlbnQiLCJfdXNlTWVudGlvbkFsbG93ZWRUeXAiLCJtZW50aW9uUG9wb3ZlclpJbmRleCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJhY3RpdmVUeXBlIiwic2V0QWN0aXZlVHlwZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwicG9wb3Zlck9wZW4iLCJzZXRQb3BvdmVyT3BlbiIsIl91c2VTdGF0ZTUiLCJib3R0b20iLCJsZWZ0Iiwid2lkdGgiLCJfdXNlU3RhdGU2IiwicG9wb3ZlclBvcyIsInNldFBvcG92ZXJQb3MiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImFjdGl2ZUluZGV4Iiwic2V0QWN0aXZlSW5kZXgiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsImlzS2V5Ym9hcmROYXZBY3RpdmUiLCJzZXRJc0tleWJvYXJkTmF2QWN0aXZlIiwiaGFzRW1pdHRlZE9wZW4iLCJwb3BvdmVyUmVmIiwiZ2V0Q2FyZXRSZWN0IiwiZGVyaXZlZFNjb3BlIiwic2NvcGUiLCJfb2JqZWN0U3ByZWFkIiwiX3VzZUVudGl0eVNlYXJjaCIsIml0ZW1zIiwibG9hZGluZyIsImVycm9yIiwiaGlkZVJlY2VudHNMYWJlbCIsImhhc01vcmUiLCJpc0xvYWRpbmdNb3JlIiwibG9hZE1vcmUiLCJzZWFyY2hWYWx1ZSIsInVwZGF0ZVNlYXJjaFZhbHVlIiwicG9zaXRpb25Qb3BvdmVyIiwiX3BvcG92ZXJBbmNob3JSZWYkY3VyIiwiX2VkaXRvclJlZiRjdXJyZW50JGdlIiwiX2VkaXRvclJlZiRjdXJyZW50IiwiX2VkaXRvclJlZiRjdXJyZW50JGdlMiIsImZyb21BbmNob3IiLCJjdXJyZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiZnJvbUVkaXRvciIsImdldEVkaXRvckNsaWVudFJlY3QiLCJjYWxsIiwicmVjdCIsImNhcmV0Iiwidmlld3BvcnRIIiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJ2aWV3cG9ydFciLCJpbm5lcldpZHRoIiwiZmFsbGJhY2tXIiwidG9wIiwicmVzZXRNZW50aW9uT3BlblRyYWNraW5nIiwiY2xvc2UiLCJoYW5kbGVUcmlnZ2VyIiwidHJpZ2dlciIsImFjdGl2ZSIsImlzU2tpbGxUcmlnZ2VyIiwicXVlcnkiLCJzdGFydHNXaXRoIiwibm9uU2tpbGxUeXBlcyIsImVudGl0eVR5cGUiLCJlZmZlY3RpdmVBdFJ1bkxlbmd0aCIsIm92ZXJmbG93QXRDb3VudCIsIm5vblNraWxsVHlwZXNPckFsbCIsImNvckVudGl0eVR5cGUiLCJ0eXBlRnJvbUF0IiwiZWZmZWN0aXZlUXVlcnkiLCJzbGljZSIsImNvbmNhdCIsInJlcGVhdCIsImFpQ2hhdE1lbnRpb25PcGVuIiwiaW5zZXJ0U2VsZWN0ZWRJdGVtIiwiaXRlbSIsIl9pdGVtJHJhdyRjbGllbnRJZCIsIl9pdGVtJHJhdyRjbGllbnROYW1lIiwiX2l0ZW0kcmF3JHByb2plY3ROYW1lIiwiX2l0ZW0kcmF3JGZlZUlkIiwiX2l0ZW0kcmF3JGZhdGhlcklkIiwiX2l0ZW0kcmF3JGZhdGhlclRpdGxlIiwiX2l0ZW0kcmF3JHRvdGFsUHJveWVjIiwiX2l0ZW0kcmF3JG5hbWUiLCJfaXRlbSRyYXckcGljdHVyZSIsIl9pdGVtJHJhdyRwb3NpdGlvbk5hbSIsIl9pdGVtJHJhdyRlbWFpbCIsIl9lZGl0b3JSZWYkY3VycmVudDIiLCJtZW50aW9uIiwibGFiZWwiLCJwcmltYXJ5IiwibWV0YWRhdGEiLCJjbGllbnROYW1lIiwicHJvamVjdE5hbWUiLCJmZWVJZCIsImZhdGhlcklkIiwiZmF0aGVyVGl0bGUiLCJ0b3RhbFByb3llY3RvcyIsIm5hbWUiLCJwaWN0dXJlIiwicG9zaXRpb25OYW1lIiwiZW1haWwiLCJpbnNlcnRNZW50aW9uIiwiYWlDaGF0TWVudGlvblNlbGVjdCIsIlN0cmluZyIsImhhbmRsZVR5cGVDaGFuZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQzIiwic3luY1NraWxsVHJpZ2dlciIsIl9lZGl0b3JSZWYkY3VycmVudDQiLCJuZXh0UnVuTGVuZ3RoIiwic3luY1RyaWdnZXJBdFJ1bkxlbmd0aCIsImFpQ2hhdE1lbnRpb25UeXBlU3dpdGNoIiwiaGFuZGxlS2V5RG93biIsImUiLCJrZXkiLCJwcmV2ZW50RGVmYXVsdCIsIm1ldGFLZXkiLCJhbHRLZXkiLCJkZWx0YSIsIm5leHRJZHgiLCJwcmV2IiwidW5kZWZpbmVkIiwiaGFuZGxlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlIiwibW91c2VFdmVudCIsIl9wb3BvdmVyUmVmJGN1cnJlbnQiLCJfcG9wb3ZlckFuY2hvclJlZiRjdXIyIiwidGFyZ2V0IiwiY29udGFpbnMiLCJkb2N1bWVudCIsInByZXZJc0xvYWRpbmdNb3JlUmVmIiwicG9wb3Zlck5vZGUiLCJyZWYiLCJfZGVmaW5lUHJvcGVydHkiLCIkYm90dG9tIiwiJGxlZnQiLCIkd2lkdGgiLCIkekluZGV4Iiwib25Nb3VzZURvd24iLCJzdG9wUHJvcGFnYXRpb24iLCJjaGlsZHJlbiIsIm9uVHlwZUNoYW5nZSIsIm9uUmVhY2hMaXN0RW5kIiwia2V5Ym9hcmRIaW50IiwiZGVmYXVsdFZhbHVlIiwib25JdGVtU2VsZWN0ZWQiLCJvbkFjdGl2ZUluZGV4Q2hhbmdlIiwib25Nb3VzZU1vdmVJbkxpc3QiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlTWVudGlvblBvcG92ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtleWJvYXJkRXZlbnQsIFJlYWN0Tm9kZSwgUmVmT2JqZWN0LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbkVkaXRvckhhbmRsZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvQ29udGV4dE1lbnRpb25FZGl0b3InXG5pbXBvcnQge1xuICBDb250ZXh0TWVudGlvblBvcG92ZXIsXG4gIE1BSUFfVEFTS19QQU5FTF9PVkVSTEFZX0FUVFIsXG4gIFNDTVBBbmNob3IsXG59IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvQ29udGV4dE1lbnRpb25Qb3BvdmVyJ1xuaW1wb3J0IHsgdXNlTWFpYVRhc2tQYW5lbFpJbmRleCB9IGZyb20gJy4vdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4vdXNlVCdcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tY3ljbGVcbmltcG9ydCB7IEVudGl0eVNlYXJjaFNjb3BlLCB1c2VFbnRpdHlTZWFyY2ggfSBmcm9tICcuL3VzZUVudGl0eVNlYXJjaCdcbmltcG9ydCB7IHVzZU1lbnRpb25BbGxvd2VkVHlwZXMgfSBmcm9tICcuL3VzZU1lbnRpb25BbGxvd2VkVHlwZXMnXG5pbXBvcnQgeyB1c2VDYXJldFBvc2l0aW9uIH0gZnJvbSAnLi91c2VDYXJldFBvc2l0aW9uJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4vdXNlRXZlbnQnXG5pbXBvcnQgeyBDb250ZXh0RW50aXR5VHlwZSwgQ29udGV4dE1lbnRpb24sIENvbnRleHRNZW50aW9uSXRlbSB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHR5cGUgeyBTa2lsbCB9IGZyb20gJy4uL3R5cGVzL3NraWxsJ1xuXG5leHBvcnQgdHlwZSBVc2VNZW50aW9uUG9wb3Zlck9wdGlvbnMgPSB7XG4gIGVkaXRvclJlZjogUmVmT2JqZWN0PENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlPlxuICAvKipcbiAgICogTm9kbyBjdXlvIGFuY2hvIHkgYm9yZGUgc3VwZXJpb3IgZGVmaW5lbiBlbCBwb3BvdmVyIChwLiBlai4gd3JhcHBlciBkZWwgaW5wdXQgZW4gTUFJQSkuXG4gICAqIFNpIG5vIHNlIHBhc2EsIHNlIHVzYSBlbCByZWN0IGRlbCBjb250ZW50ZWRpdGFibGUgKGBnZXRFZGl0b3JDbGllbnRSZWN0YCkuXG4gICAqL1xuICBwb3BvdmVyQW5jaG9yUmVmPzogUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD5cbiAgLyoqIE92ZXJyaWRlIGRlbCBzZXQgZGUgdGFicyBwZXJtaXRpZGFzOyBzaSBubyBzZSBwYXNhIHNlIGRlcml2YSBkZWwgYWdlbnQuICovXG4gIGVuYWJsZWRUeXBlcz86IENvbnRleHRFbnRpdHlUeXBlW11cbiAgLyoqIFNraWxscyBpbnllY3RhZGFzIGRpcmVjdGFtZW50ZSAoZGV2L3Rlc3RpbmcpLiBTaSBzZSBwcm92ZWVuLCBzZSBvbWl0ZSBlbCBmZXRjaCBSRVNULiAqL1xuICBza2lsbHM/OiBTa2lsbFtdXG4gIC8qKiBDYWxsYmFjayBjdWFuZG8gZWwgdXN1YXJpbyBpbnNlcnRhIHVuYSBtZW50aW9uIHbDrWEgY2xpY2svdGVjbGFkby4gKi9cbiAgb25NZW50aW9uQWRkZWQ/OiAobWVudGlvbjogQ29udGV4dE1lbnRpb24pID0+IHZvaWRcbn1cblxuZXhwb3J0IHR5cGUgVXNlTWVudGlvblBvcG92ZXJSZXR1cm4gPSB7XG4gIHBvcG92ZXJPcGVuOiBib29sZWFuXG4gIC8qKlxuICAgKiBSZWluaWNpYSBlbCB0cmFja2luZyBkZSBgQUlfQ0hBVF9NRU5USU9OX09QRU5gIChwcmltZXJhIGFwZXJ0dXJhIHBvciBtZW5zYWplKS5cbiAgICogTGxhbWFyIHRyYXMgZW52aWFyIGVsIG1lbnNhamUgbyBhbCBjYW1iaWFyIGRlIGNvbnZlcnNhY2nDs24uXG4gICAqL1xuICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmc6ICgpID0+IHZvaWRcbiAgLyoqIFByb2Nlc2EgZWwgdHJpZ2dlciBwcm92ZW5pZW50ZSBkZWwgYENvbnRleHRNZW50aW9uRWRpdG9yLm9uSW5wdXRgLiAqL1xuICBoYW5kbGVUcmlnZ2VyOiAodHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmc7IGF0UnVuTGVuZ3RoOiBudW1iZXIgfSkgPT4gdm9pZFxuICAvKipcbiAgICogTWFuZWpvIGRlIHRlY2xhcyByZWxhdGl2YXMgYWwgcG9wb3ZlciAobmF2ZWdhY2nDs24sIHNlbGVjY2nDs24sIGNhbWJpbyBkZVxuICAgKiB0YWIgeSBlc2NhcGUpLiBEZXZ1ZWx2ZSBgdHJ1ZWAgc2kgY29uc3VtacOzIGxhIGtleSwgcGFyYSBxdWUgZWwgY29uc3VtZXJcbiAgICogcHVlZGEgZGVjaWRpciBzaSBzZWd1aXIgcHJvY2VzYW5kbyBvdHJhcyB0ZWNsYXMgKHAuZWouIEVudGVyIHBhcmEgZW52aWFyKS5cbiAgICovXG4gIGhhbmRsZUtleURvd246IChlOiBLZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4gYm9vbGVhblxuICAvKiogTm9kbyBkZWwgcG9wb3ZlcjsgZWwgY29uc3VtZXIgZGViZSBwb3J0YXJsbyBjb24gYGNyZWF0ZVBvcnRhbGAuICovXG4gIHBvcG92ZXJOb2RlOiBSZWFjdE5vZGUgfCBudWxsXG4gIC8qKiBDaWVycmEgZWwgcG9wb3ZlciB5IGxpbXBpYSBlbCBxdWVyeS4gKi9cbiAgY2xvc2U6ICgpID0+IHZvaWRcbn1cblxuY29uc3QgVFlQRV9UT19UUklHR0VSX1NFUVVFTkNFOiBQYXJ0aWFsPFJlY29yZDxDb250ZXh0RW50aXR5VHlwZSwgbnVtYmVyPj4gPSB7XG4gIHVzZXI6IDEsXG4gIHRhc2s6IDIsXG4gIHByb2plY3Q6IDMsXG59XG5cbmNvbnN0IGdldFR5cGVGcm9tVHJpZ2dlclNlcXVlbmNlID0gKFxuICBhdFJ1bkxlbmd0aDogbnVtYmVyLFxuICBhbGxvd2VkVHlwZXM6IENvbnRleHRFbnRpdHlUeXBlW10sXG4gIGRlZmF1bHRUeXBlOiBDb250ZXh0RW50aXR5VHlwZVxuKTogQ29udGV4dEVudGl0eVR5cGUgPT4ge1xuICBjb25zdCBub3JtYWxpemVkID0gTWF0aC5tYXgoMSwgTWF0aC5mbG9vcihhdFJ1bkxlbmd0aCkpXG4gIGNvbnN0IG1hcHBlZFR5cGUgPSAoT2JqZWN0LmVudHJpZXMoVFlQRV9UT19UUklHR0VSX1NFUVVFTkNFKS5maW5kKChbLCBsZW5dKSA9PiBsZW4gPT09IG5vcm1hbGl6ZWQpPy5bMF0gPz9cbiAgICBudWxsKSBhcyBDb250ZXh0RW50aXR5VHlwZSB8IG51bGxcbiAgaWYgKG1hcHBlZFR5cGUgJiYgYWxsb3dlZFR5cGVzLmluY2x1ZGVzKG1hcHBlZFR5cGUpKSByZXR1cm4gbWFwcGVkVHlwZVxuICBjb25zdCB0YWJJZHggPSBNYXRoLm1pbihNYXRoLm1heCgwLCBub3JtYWxpemVkIC0gMSksIGFsbG93ZWRUeXBlcy5sZW5ndGggLSAxKVxuICByZXR1cm4gYWxsb3dlZFR5cGVzW3RhYklkeF0gPz8gZGVmYXVsdFR5cGVcbn1cblxuY29uc3QgZ2V0VHJpZ2dlclNlcXVlbmNlRnJvbVR5cGUgPSAodHlwZTogQ29udGV4dEVudGl0eVR5cGUsIGFsbG93ZWRUeXBlczogQ29udGV4dEVudGl0eVR5cGVbXSk6IG51bWJlciA9PiB7XG4gIGNvbnN0IG1hcHBlZCA9IFRZUEVfVE9fVFJJR0dFUl9TRVFVRU5DRVt0eXBlXVxuICBpZiAobWFwcGVkKSByZXR1cm4gbWFwcGVkXG4gIGNvbnN0IGlkeCA9IGFsbG93ZWRUeXBlcy5pbmRleE9mKHR5cGUpXG4gIHJldHVybiBpZHggPj0gMCA/IGlkeCArIDEgOiAxXG59XG5cbi8qKlxuICogRGVyaXZhIGNsaWVudElkLCBwcm9qZWN0SWQsIGFnZW50RW50aXR5IHkgTUNQIGRlc2RlIGVsIGNvbnRleHRvIGdsb2JhbCAoaW5jbC5cbiAqIGBlbnRpdHlWYWx1ZXNgIHkgYGNoaXBzUHJvamVjdGApIHBhcmEgZmlsdHJhciByZWNlbnRzIHkgYsO6c3F1ZWRhIEdyYXBoUUwuXG4gKi9cbmNvbnN0IHVzZURlcml2ZWRTY29wZSA9ICgpOiBFbnRpdHlTZWFyY2hTY29wZSA9PiB7XG4gIGNvbnN0IGN0eCA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBjbGllbnRJZCA9IGN0eC5jbGllbnQ/LmlkID8/IGN0eC5lbnRpdHlWYWx1ZXM/LmNsaWVudElkID8/IG51bGxcbiAgY29uc3QgcHJvamVjdElkID0gY3R4LnByb2plY3Q/LmlkID8/IGN0eC5lbnRpdHlWYWx1ZXM/LnByb2plY3RJZCA/PyBjdHguY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgPz8gbnVsbFxuICBjb25zdCBhZ2VudEVudGl0eSA9IGN0eC5hZ2VudD8uZW50aXR5ID8/IG51bGxcbiAgY29uc3QgbWNwU2x1Z3NLZXkgPSAoY3R4LmFnZW50Py5jb25uZWN0b3JzPy5maW5kKGMgPT4gYy5ncm91cCA9PT0gJ01DUCcpPy5zbHVncyA/PyBbXSkuam9pbignfCcpXG5cbiAgY29uc3QgbWNwU2x1Z3MgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCByYXcgPSBjdHguYWdlbnQ/LmNvbm5lY3RvcnM/LmZpbmQoYyA9PiBjLmdyb3VwID09PSAnTUNQJyk/LnNsdWdzID8/IFtdXG4gICAgcmV0dXJuIFsuLi5uZXcgU2V0KHJhdy5maWx0ZXIoKHMpOiBzIGlzIHN0cmluZyA9PiB0eXBlb2YgcyA9PT0gJ3N0cmluZycgJiYgcy50cmltKCkubGVuZ3RoID4gMCkpXS5zb3J0KClcbiAgfSwgW21jcFNsdWdzS2V5XSlcblxuICByZXR1cm4gdXNlTWVtbzxFbnRpdHlTZWFyY2hTY29wZT4oXG4gICAgKCkgPT4gKHsgY2xpZW50SWQsIHByb2plY3RJZCwgbWNwU2x1Z3MsIGFnZW50RW50aXR5IH0pLFxuICAgIFtjbGllbnRJZCwgcHJvamVjdElkLCBtY3BTbHVncywgYWdlbnRFbnRpdHldIC8vIHNraWxscyBzZSBpbnllY3RhIGVuIHVzZU1lbnRpb25Qb3BvdmVyXG4gIClcbn1cblxuLyoqXG4gKiBFbmNhcHN1bGEgbGEgbMOzZ2ljYSBkZWwgcG9wb3ZlciBkZSBALW1lbnRpb25zIChlc3RhZG8sIGZldGNoIHBvciB0YWIsIGFuYWx5dGljcyxcbiAqIHBvc2ljaW9uYW1pZW50bykuIEVsIGNvbnN1bWVyIG1hbnRpZW5lIGVsIGVkaXRvciB5IGVsIGVudsOtbyBkZWwgbWVuc2FqZS5cbiAqIExvcyBmaWx0cm9zIGRlIGLDunNxdWVkYSB1c2FuIGB1c2VEZXJpdmVkU2NvcGVgOiBlc3BlY2lhbGlzdGEgcHJveWVjdG8gYWNvdGEgdGFyZWFzXG4gKiBhbCBgcHJvamVjdElkYCBkZWwgY29udGV4dG87IGVzcGVjaWFsaXN0YSBjbGllbnRlLCBwcm95ZWN0b3MgYWwgYGNsaWVudElkYCAoZW4gYGV4dHJhYCBkZSBzZWFyY2gpLlxuICovXG5leHBvcnQgY29uc3QgdXNlTWVudGlvblBvcG92ZXIgPSAoe1xuICBlZGl0b3JSZWYsXG4gIHBvcG92ZXJBbmNob3JSZWYsXG4gIGVuYWJsZWRUeXBlcyxcbiAgc2tpbGxzLFxuICBvbk1lbnRpb25BZGRlZCxcbn06IFVzZU1lbnRpb25Qb3BvdmVyT3B0aW9ucyk6IFVzZU1lbnRpb25Qb3BvdmVyUmV0dXJuID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgZXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgYWxsb3dlZFR5cGVzLCBkZWZhdWx0VHlwZSB9ID0gdXNlTWVudGlvbkFsbG93ZWRUeXBlcyhlbmFibGVkVHlwZXMpXG4gIGNvbnN0IG1lbnRpb25Qb3BvdmVyWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxMjAwLCAnb3ZlcmxheScpXG4gIGNvbnN0IFthY3RpdmVUeXBlLCBzZXRBY3RpdmVUeXBlXSA9IHVzZVN0YXRlPENvbnRleHRFbnRpdHlUeXBlPihkZWZhdWx0VHlwZSlcbiAgY29uc3QgW3BvcG92ZXJPcGVuLCBzZXRQb3BvdmVyT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3BvcG92ZXJQb3MsIHNldFBvcG92ZXJQb3NdID0gdXNlU3RhdGU8eyBib3R0b206IG51bWJlcjsgbGVmdDogbnVtYmVyOyB3aWR0aDogbnVtYmVyIH0+KHtcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICB3aWR0aDogMCxcbiAgfSlcbiAgY29uc3QgW2FjdGl2ZUluZGV4LCBzZXRBY3RpdmVJbmRleF0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbaXNLZXlib2FyZE5hdkFjdGl2ZSwgc2V0SXNLZXlib2FyZE5hdkFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgaGFzRW1pdHRlZE9wZW4gPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHBvcG92ZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBnZXRDYXJldFJlY3QgPSB1c2VDYXJldFBvc2l0aW9uKClcblxuICBjb25zdCBkZXJpdmVkU2NvcGUgPSB1c2VEZXJpdmVkU2NvcGUoKVxuICBjb25zdCBzY29wZSA9IHVzZU1lbW88RW50aXR5U2VhcmNoU2NvcGU+KFxuICAgICgpID0+IChza2lsbHMgPyB7IC4uLmRlcml2ZWRTY29wZSwgc2tpbGxzIH0gOiBkZXJpdmVkU2NvcGUpLFxuICAgIFtkZXJpdmVkU2NvcGUsIHNraWxsc11cbiAgKVxuICBjb25zdCB7IGl0ZW1zLCBsb2FkaW5nLCBlcnJvciwgaGlkZVJlY2VudHNMYWJlbCwgaGFzTW9yZSwgaXNMb2FkaW5nTW9yZSwgbG9hZE1vcmUsIHNlYXJjaFZhbHVlLCB1cGRhdGVTZWFyY2hWYWx1ZSB9ID1cbiAgICB1c2VFbnRpdHlTZWFyY2goYWN0aXZlVHlwZSwgc2NvcGUpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWFsbG93ZWRUeXBlcy5pbmNsdWRlcyhhY3RpdmVUeXBlKSkge1xuICAgICAgc2V0QWN0aXZlVHlwZShkZWZhdWx0VHlwZSlcbiAgICB9XG4gIH0sIFthbGxvd2VkVHlwZXMsIGFjdGl2ZVR5cGUsIGRlZmF1bHRUeXBlXSlcblxuICBjb25zdCBwb3NpdGlvblBvcG92ZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgZnJvbUFuY2hvciA9IHBvcG92ZXJBbmNob3JSZWY/LmN1cnJlbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3QgZnJvbUVkaXRvciA9IGVkaXRvclJlZi5jdXJyZW50Py5nZXRFZGl0b3JDbGllbnRSZWN0Py4oKSA/PyBudWxsXG4gICAgY29uc3QgcmVjdCA9IGZyb21BbmNob3IgPz8gZnJvbUVkaXRvclxuICAgIGlmICghcmVjdCB8fCByZWN0LndpZHRoIDw9IDApIHtcbiAgICAgIGNvbnN0IGNhcmV0ID0gZ2V0Q2FyZXRSZWN0KClcbiAgICAgIGlmICghY2FyZXQpIHJldHVyblxuICAgICAgY29uc3Qgdmlld3BvcnRIID0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgICBjb25zdCB2aWV3cG9ydFcgPSB3aW5kb3cuaW5uZXJXaWR0aFxuICAgICAgY29uc3QgZmFsbGJhY2tXID0gMzIwXG4gICAgICBjb25zdCBsZWZ0ID0gTWF0aC5tYXgoOCwgTWF0aC5taW4odmlld3BvcnRXIC0gZmFsbGJhY2tXIC0gOCwgY2FyZXQubGVmdCkpXG4gICAgICBzZXRQb3BvdmVyUG9zKHtcbiAgICAgICAgd2lkdGg6IGZhbGxiYWNrVyxcbiAgICAgICAgbGVmdCxcbiAgICAgICAgYm90dG9tOiB2aWV3cG9ydEggLSBjYXJldC50b3AgKyA0LFxuICAgICAgfSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHZpZXdwb3J0VyA9IHdpbmRvdy5pbm5lcldpZHRoXG4gICAgY29uc3Qgdmlld3BvcnRIID0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgY29uc3QgeyB3aWR0aCB9ID0gcmVjdFxuICAgIGNvbnN0IGxlZnQgPSBNYXRoLm1heCg4LCBNYXRoLm1pbih2aWV3cG9ydFcgLSB3aWR0aCAtIDgsIHJlY3QubGVmdCkpXG4gICAgLyoqIFBvcG92ZXIgc2llbXByZSBhcnJpYmEgZGVsIGlucHV0OiBib3JkZSBpbmZlcmlvciBkZWwgcG9wb3ZlciB+NHB4IHNvYnJlIGVsIGJvcmRlIHN1cGVyaW9yIGRlbCBhbmNsYS4gKi9cbiAgICBzZXRQb3BvdmVyUG9zKHtcbiAgICAgIHdpZHRoLFxuICAgICAgbGVmdCxcbiAgICAgIGJvdHRvbTogdmlld3BvcnRIIC0gcmVjdC50b3AgKyA0LFxuICAgIH0pXG4gIH0sIFtwb3BvdmVyQW5jaG9yUmVmLCBlZGl0b3JSZWYsIGdldENhcmV0UmVjdF0pXG5cbiAgY29uc3QgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGhhc0VtaXR0ZWRPcGVuLmN1cnJlbnQgPSBmYWxzZVxuICB9LCBbXSlcblxuICBjb25zdCBjbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRQb3BvdmVyT3BlbihmYWxzZSlcbiAgICB1cGRhdGVTZWFyY2hWYWx1ZSgnJylcbiAgfSwgW3VwZGF0ZVNlYXJjaFZhbHVlXSlcblxuICBjb25zdCBoYW5kbGVUcmlnZ2VyID0gdXNlQ2FsbGJhY2soXG4gICAgKHRyaWdnZXI6IHsgYWN0aXZlOiBib29sZWFuOyBxdWVyeTogc3RyaW5nOyBhdFJ1bkxlbmd0aDogbnVtYmVyIH0pID0+IHtcbiAgICAgIGlmIChhbGxvd2VkVHlwZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGlmIChwb3BvdmVyT3BlbikgY2xvc2UoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHRyaWdnZXIuYWN0aXZlKSB7XG4gICAgICAgIC8vIGBAL2AgYWN0aXZhIGVsIHRhYiBkZSBza2lsbHM7IGVsICcvJyBmb3JtYSBwYXJ0ZSBkZWwgcXVlcnkgZW4gZWwgdHJpZ2dlci5cbiAgICAgICAgY29uc3QgaXNTa2lsbFRyaWdnZXIgPSB0cmlnZ2VyLmF0UnVuTGVuZ3RoID09PSAxICYmIHRyaWdnZXIucXVlcnkuc3RhcnRzV2l0aCgnLycpXG4gICAgICAgIGNvbnN0IG5vblNraWxsVHlwZXMgPSBhbGxvd2VkVHlwZXMuZmlsdGVyKGVudGl0eVR5cGUgPT4gZW50aXR5VHlwZSAhPT0gJ3NraWxsJylcbiAgICAgICAgY29uc3QgZWZmZWN0aXZlQXRSdW5MZW5ndGggPSBNYXRoLm1pbih0cmlnZ2VyLmF0UnVuTGVuZ3RoLCBub25Ta2lsbFR5cGVzLmxlbmd0aClcbiAgICAgICAgY29uc3Qgb3ZlcmZsb3dBdENvdW50ID0gTWF0aC5tYXgoMCwgdHJpZ2dlci5hdFJ1bkxlbmd0aCAtIG5vblNraWxsVHlwZXMubGVuZ3RoKVxuICAgICAgICBjb25zdCBub25Ta2lsbFR5cGVzT3JBbGwgPSBub25Ta2lsbFR5cGVzLmxlbmd0aCA+IDAgPyBub25Ta2lsbFR5cGVzIDogYWxsb3dlZFR5cGVzXG4gICAgICAgIGNvbnN0IGNvckVudGl0eVR5cGUgPSBnZXRUeXBlRnJvbVRyaWdnZXJTZXF1ZW5jZShlZmZlY3RpdmVBdFJ1bkxlbmd0aCwgbm9uU2tpbGxUeXBlc09yQWxsLCBkZWZhdWx0VHlwZSlcbiAgICAgICAgY29uc3QgdHlwZUZyb21BdDogQ29udGV4dEVudGl0eVR5cGUgPSBpc1NraWxsVHJpZ2dlciA/ICdza2lsbCcgOiBjb3JFbnRpdHlUeXBlXG4gICAgICAgIGNvbnN0IGVmZmVjdGl2ZVF1ZXJ5ID0gaXNTa2lsbFRyaWdnZXJcbiAgICAgICAgICA/IHRyaWdnZXIucXVlcnkuc2xpY2UoMSlcbiAgICAgICAgICA6IGAkeydAJy5yZXBlYXQob3ZlcmZsb3dBdENvdW50KX0ke3RyaWdnZXIucXVlcnl9YFxuXG4gICAgICAgIGlmICghcG9wb3Zlck9wZW4pIHtcbiAgICAgICAgICBzZXRQb3BvdmVyT3Blbih0cnVlKVxuICAgICAgICAgIHNldEFjdGl2ZVR5cGUodHlwZUZyb21BdClcbiAgICAgICAgICBwb3NpdGlvblBvcG92ZXIoKVxuICAgICAgICAgIGlmICghaGFzRW1pdHRlZE9wZW4uY3VycmVudCkge1xuICAgICAgICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdE1lbnRpb25PcGVuLCB7IHR5cGU6IHR5cGVGcm9tQXQgfSlcbiAgICAgICAgICAgIGhhc0VtaXR0ZWRPcGVuLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldEFjdGl2ZVR5cGUodHlwZUZyb21BdClcbiAgICAgICAgICBwb3NpdGlvblBvcG92ZXIoKVxuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZVNlYXJjaFZhbHVlKGVmZmVjdGl2ZVF1ZXJ5KVxuICAgICAgfSBlbHNlIGlmIChwb3BvdmVyT3Blbikge1xuICAgICAgICBjbG9zZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWxsb3dlZFR5cGVzLCBkZWZhdWx0VHlwZSwgcG9wb3Zlck9wZW4sIHBvc2l0aW9uUG9wb3ZlciwgdXBkYXRlU2VhcmNoVmFsdWUsIGV2ZW50LCBjbG9zZV1cbiAgKVxuXG4gIGNvbnN0IGluc2VydFNlbGVjdGVkSXRlbSA9IHVzZUNhbGxiYWNrKFxuICAgIChpdGVtOiBDb250ZXh0TWVudGlvbkl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IG1lbnRpb246IENvbnRleHRNZW50aW9uID0ge1xuICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgdHlwZTogaXRlbS50eXBlLFxuICAgICAgICBsYWJlbDogaXRlbS5wcmltYXJ5LFxuICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgIGNsaWVudElkOiBpdGVtLnJhdy5jbGllbnRJZCA/PyBudWxsLFxuICAgICAgICAgIGNsaWVudE5hbWU6IGl0ZW0ucmF3LmNsaWVudE5hbWUgPz8gbnVsbCxcbiAgICAgICAgICBwcm9qZWN0TmFtZTogaXRlbS5yYXcucHJvamVjdE5hbWUgPz8gbnVsbCxcbiAgICAgICAgICBmZWVJZDogaXRlbS5yYXcuZmVlSWQgPz8gbnVsbCxcbiAgICAgICAgICBmYXRoZXJJZDogaXRlbS5yYXcuZmF0aGVySWQgPz8gbnVsbCxcbiAgICAgICAgICBmYXRoZXJUaXRsZTogaXRlbS5yYXcuZmF0aGVyVGl0bGUgPz8gbnVsbCxcbiAgICAgICAgICB0b3RhbFByb3llY3RvczogaXRlbS5yYXcudG90YWxQcm95ZWN0b3MgPz8gbnVsbCxcbiAgICAgICAgICBuYW1lOiBpdGVtLnJhdy5uYW1lID8/IG51bGwsXG4gICAgICAgICAgcGljdHVyZTogaXRlbS5yYXcucGljdHVyZSA/PyBudWxsLFxuICAgICAgICAgIHBvc2l0aW9uTmFtZTogaXRlbS5yYXcucG9zaXRpb25OYW1lID8/IG51bGwsXG4gICAgICAgICAgZW1haWw6IGl0ZW0ucmF3LmVtYWlsID8/IG51bGwsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0TWVudGlvbihtZW50aW9uKVxuICAgICAgb25NZW50aW9uQWRkZWQ/LihtZW50aW9uKVxuICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdE1lbnRpb25TZWxlY3QsIHsgdHlwZTogbWVudGlvbi50eXBlLCBpZDogU3RyaW5nKG1lbnRpb24uaWQpIH0pXG4gICAgICBjbG9zZSgpXG4gICAgfSxcbiAgICBbZWRpdG9yUmVmLCBvbk1lbnRpb25BZGRlZCwgZXZlbnQsIGNsb3NlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlVHlwZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgICh0eXBlOiBDb250ZXh0RW50aXR5VHlwZSkgPT4ge1xuICAgICAgc2V0QWN0aXZlVHlwZSh0eXBlKVxuICAgICAgaWYgKHR5cGUgPT09ICdza2lsbCcpIHtcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LnN5bmNTa2lsbFRyaWdnZXIoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbmV4dFJ1bkxlbmd0aCA9IGdldFRyaWdnZXJTZXF1ZW5jZUZyb21UeXBlKFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgYWxsb3dlZFR5cGVzLmZpbHRlcihlbnRpdHlUeXBlID0+IGVudGl0eVR5cGUgIT09ICdza2lsbCcpXG4gICAgICAgIClcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LnN5bmNUcmlnZ2VyQXRSdW5MZW5ndGgobmV4dFJ1bkxlbmd0aClcbiAgICAgIH1cbiAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRNZW50aW9uVHlwZVN3aXRjaCwgeyB0eXBlIH0pXG4gICAgfSxcbiAgICBbYWxsb3dlZFR5cGVzLCBlZGl0b3JSZWYsIGV2ZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBLZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50Pik6IGJvb2xlYW4gPT4ge1xuICAgICAgaWYgKCFwb3BvdmVyT3BlbiB8fCBhbGxvd2VkVHlwZXMubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2VcblxuICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgY2xvc2UoKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoKGUua2V5ID09PSAnQXJyb3dSaWdodCcgfHwgZS5rZXkgPT09ICdBcnJvd0xlZnQnKSAmJiAoZS5tZXRhS2V5IHx8IGUuYWx0S2V5KSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgY29uc3QgaWR4ID0gYWxsb3dlZFR5cGVzLmluZGV4T2YoYWN0aXZlVHlwZSlcbiAgICAgICAgY29uc3QgZGVsdGEgPSBlLmtleSA9PT0gJ0Fycm93UmlnaHQnID8gMSA6IC0xXG4gICAgICAgIGNvbnN0IG5leHRJZHggPSAoaWR4ICsgZGVsdGEgKyBhbGxvd2VkVHlwZXMubGVuZ3RoKSAlIGFsbG93ZWRUeXBlcy5sZW5ndGhcbiAgICAgICAgaGFuZGxlVHlwZUNoYW5nZShhbGxvd2VkVHlwZXNbbmV4dElkeF0pXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtcy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZVxuXG4gICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBzZXRJc0tleWJvYXJkTmF2QWN0aXZlKHRydWUpXG4gICAgICAgIHNldEFjdGl2ZUluZGV4KHByZXYgPT4gKGl0ZW1zLmxlbmd0aCA+IDAgPyBNYXRoLm1pbihwcmV2ICsgMSwgaXRlbXMubGVuZ3RoIC0gMSkgOiAwKSlcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBzZXRJc0tleWJvYXJkTmF2QWN0aXZlKHRydWUpXG4gICAgICAgIHNldEFjdGl2ZUluZGV4KHByZXYgPT4gTWF0aC5tYXgocHJldiAtIDEsIDApKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInIHx8IGUua2V5ID09PSAnVGFiJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgaW5zZXJ0U2VsZWN0ZWRJdGVtKGl0ZW1zW2FjdGl2ZUluZGV4XSlcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0sXG4gICAgW3BvcG92ZXJPcGVuLCBpdGVtcywgYWxsb3dlZFR5cGVzLCBhY3RpdmVUeXBlLCBhY3RpdmVJbmRleCwgaW5zZXJ0U2VsZWN0ZWRJdGVtLCBjbG9zZSwgaGFuZGxlVHlwZUNoYW5nZV1cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFwb3BvdmVyT3BlbikgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiBwb3NpdGlvblBvcG92ZXIoKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB0cnVlKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIH1cbiAgfSwgW3BvcG92ZXJPcGVuLCBwb3NpdGlvblBvcG92ZXJdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFwb3BvdmVyT3BlbikgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlID0gKG1vdXNlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IG1vdXNlRXZlbnQudGFyZ2V0IGFzIE5vZGUgfCBudWxsXG4gICAgICBpZiAoIXRhcmdldCkgcmV0dXJuXG4gICAgICBpZiAocG9wb3ZlclJlZi5jdXJyZW50Py5jb250YWlucyh0YXJnZXQpKSByZXR1cm5cbiAgICAgIGlmIChwb3BvdmVyQW5jaG9yUmVmPy5jdXJyZW50Py5jb250YWlucyh0YXJnZXQpKSByZXR1cm5cbiAgICAgIGNsb3NlKClcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUpXG4gICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSlcbiAgfSwgW3BvcG92ZXJPcGVuLCBjbG9zZSwgcG9wb3ZlckFuY2hvclJlZl0pXG5cbiAgY29uc3QgcHJldklzTG9hZGluZ01vcmVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHByZXZJc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQgPSBpc0xvYWRpbmdNb3JlXG4gICAgfVxuICB9LCBbaXNMb2FkaW5nTW9yZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocHJldklzTG9hZGluZ01vcmVSZWYuY3VycmVudCkgcmV0dXJuXG4gICAgc2V0QWN0aXZlSW5kZXgoMClcbiAgfSwgW2l0ZW1zLmxlbmd0aCwgYWN0aXZlVHlwZV0pXG5cbiAgY29uc3QgcG9wb3Zlck5vZGUgPSB1c2VNZW1vPFJlYWN0Tm9kZSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoIXBvcG92ZXJPcGVuKSByZXR1cm4gbnVsbFxuICAgIHJldHVybiAoXG4gICAgICA8U0NNUEFuY2hvclxuICAgICAgICByZWY9e3BvcG92ZXJSZWZ9XG4gICAgICAgIHsuLi57IFtNQUlBX1RBU0tfUEFORUxfT1ZFUkxBWV9BVFRSXTogJycgfX1cbiAgICAgICAgJGJvdHRvbT17cG9wb3ZlclBvcy5ib3R0b219XG4gICAgICAgICRsZWZ0PXtwb3BvdmVyUG9zLmxlZnR9XG4gICAgICAgICR3aWR0aD17cG9wb3ZlclBvcy53aWR0aH1cbiAgICAgICAgJHpJbmRleD17bWVudGlvblBvcG92ZXJaSW5kZXh9XG4gICAgICAgIG9uTW91c2VEb3duPXtlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICA+XG4gICAgICAgIDxDb250ZXh0TWVudGlvblBvcG92ZXJcbiAgICAgICAgICBhbGxvd2VkVHlwZXM9e2FsbG93ZWRUeXBlc31cbiAgICAgICAgICBhY3RpdmVUeXBlPXthY3RpdmVUeXBlfVxuICAgICAgICAgIG9uVHlwZUNoYW5nZT17aGFuZGxlVHlwZUNoYW5nZX1cbiAgICAgICAgICBpdGVtcz17aXRlbXN9XG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgICAgaGlkZVJlY2VudHNMYWJlbD17aGlkZVJlY2VudHNMYWJlbH1cbiAgICAgICAgICBoYXNNb3JlPXtoYXNNb3JlfVxuICAgICAgICAgIGlzTG9hZGluZ01vcmU9e2lzTG9hZGluZ01vcmV9XG4gICAgICAgICAgb25SZWFjaExpc3RFbmQ9e2xvYWRNb3JlfVxuICAgICAgICAgIHNlYXJjaFZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICBrZXlib2FyZEhpbnQ9e3QoJ2NvbnRleHRNZW50aW9uLmtleWJvYXJkSGludCcsIHtcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogJ05hdmVnYWNpw7NuIGVudHJlIHBlc3Rhw7FhczogQCwgQEAsIEBAQOKApiBlbiBvcmRlbi4gVGFtYmnDqW4gQWx0L0NtZCArIOKGkC/ihpInLFxuICAgICAgICAgIH0pfVxuICAgICAgICAgIG9uSXRlbVNlbGVjdGVkPXtpbnNlcnRTZWxlY3RlZEl0ZW19XG4gICAgICAgICAgYWN0aXZlSW5kZXg9e2FjdGl2ZUluZGV4fVxuICAgICAgICAgIG9uQWN0aXZlSW5kZXhDaGFuZ2U9e3NldEFjdGl2ZUluZGV4fVxuICAgICAgICAgIGlzS2V5Ym9hcmROYXZBY3RpdmU9e2lzS2V5Ym9hcmROYXZBY3RpdmV9XG4gICAgICAgICAgb25Nb3VzZU1vdmVJbkxpc3Q9eygpID0+IHNldElzS2V5Ym9hcmROYXZBY3RpdmUoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgPC9TQ01QQW5jaG9yPlxuICAgIClcbiAgfSwgW1xuICAgIHBvcG92ZXJPcGVuLFxuICAgIHBvcG92ZXJQb3MsXG4gICAgbWVudGlvblBvcG92ZXJaSW5kZXgsXG4gICAgYWxsb3dlZFR5cGVzLFxuICAgIGFjdGl2ZVR5cGUsXG4gICAgaGFuZGxlVHlwZUNoYW5nZSxcbiAgICBpdGVtcyxcbiAgICBsb2FkaW5nLFxuICAgIGVycm9yLFxuICAgIGhpZGVSZWNlbnRzTGFiZWwsXG4gICAgaGFzTW9yZSxcbiAgICBpc0xvYWRpbmdNb3JlLFxuICAgIGxvYWRNb3JlLFxuICAgIHNlYXJjaFZhbHVlLFxuICAgIGluc2VydFNlbGVjdGVkSXRlbSxcbiAgICBhY3RpdmVJbmRleCxcbiAgICBpc0tleWJvYXJkTmF2QWN0aXZlLFxuICBdKVxuXG4gIHJldHVybiB7IHBvcG92ZXJPcGVuLCByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsIGhhbmRsZVRyaWdnZXIsIGhhbmRsZUtleURvd24sIHBvcG92ZXJOb2RlLCBjbG9zZSB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsU0FBOENBLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFFOUcsU0FDRUMscUJBQXFCLEVBQ3JCQyw0QkFBNEIsRUFDNUJDLFVBQVUsUUFDTCwyQ0FBMkM7QUFDbEQsU0FBU0Msc0JBQXNCLFFBQVEsMEJBQTBCO0FBQ2pFLFNBQVNDLGdCQUFnQixRQUFRLDJCQUEyQjtBQUM1RCxTQUFTQyxJQUFJLFFBQVEsUUFBUTtBQUM3QjtBQUNBLFNBQTRCQyxlQUFlLFFBQVEsbUJBQW1CO0FBQ3RFLFNBQVNDLHNCQUFzQixRQUFRLDBCQUEwQjtBQUNqRSxTQUFTQyxnQkFBZ0IsUUFBUSxvQkFBb0I7QUFDckQsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEsWUFBWTtBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQTtBQXdDN0MsSUFBTUMsd0JBQW9FLEdBQUc7RUFDM0VDLElBQUksRUFBRSxDQUFDO0VBQ1BDLElBQUksRUFBRSxDQUFDO0VBQ1BDLE9BQU8sRUFBRTtBQUNYLENBQUM7QUFFRCxJQUFNQywwQkFBMEIsR0FBRyxTQUE3QkEsMEJBQTBCQSxDQUM5QkMsV0FBbUIsRUFDbkJDLFlBQWlDLEVBQ2pDQyxXQUE4QixFQUNSO0VBQUEsSUFBQUMscUJBQUEsRUFBQUMsb0JBQUEsRUFBQUMsb0JBQUE7RUFDdEIsSUFBTUMsVUFB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
|