@projectcor/maia-components 2.11.66-0 → 2.11.66-2

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.
@@ -16,11 +16,12 @@ var TEMP_CONTEXT_MENTIONS_REQUIRE_PROJECT_OR_CLIENT_ENTITY = true;
16
16
  * Deriva del agent activo qué tabs del context mention deben estar disponibles.
17
17
  *
18
18
  * Reglas:
19
+ * - agent.type === 'custom' → según conectores COR/MCP del agente
19
20
  * - agent.entity === 'global' → ninguna (sin @-mentions)
20
21
  * - agent.entity === 'project' → [task, user]
21
22
  * - agent.entity === 'client' → [project, task, user]
22
23
  * - agent.entity === null/otro → todas si el flag temporal está en false (contexto amplio)
23
- * - agent.type !== 'clone' → ninguna (sin @-mentions por ahora)
24
+ * - agent.type !== 'clone' → ninguna (sin @-mentions)
24
25
  *
25
26
  * El `override` (prop `enabledTypes` del componente consumidor) siempre gana.
26
27
  *
@@ -31,9 +32,41 @@ export var useMentionAllowedTypes = function useMentionAllowedTypes(override) {
31
32
  var _useGlobalContext = useGlobalContext(),
32
33
  agent = _useGlobalContext.agent;
33
34
  return useMemo(function () {
34
- var _agent$connectors$fin, _agent$connectors, _allowedTypes$;
35
+ var _agent$connectors$fin3, _agent$connectors3, _allowedTypes$;
36
+ // Agentes custom: los tipos disponibles se derivan de sus conectores COR.
37
+ // tasks_read → [user, task]; projects_read → agrega project; clients_read → agrega client.
38
+ // Los conectores están encadenados: clients implica projects, projects implica tasks.
39
+ if ((agent === null || agent === void 0 ? void 0 : agent.type) === 'custom') {
40
+ var _agent$connectors$fin, _agent$connectors, _agent$connectors$fin2, _agent$connectors2, _corTypes$;
41
+ var corSlugs = (_agent$connectors$fin = (_agent$connectors = agent.connectors) === null || _agent$connectors === void 0 || (_agent$connectors = _agent$connectors.find(function (c) {
42
+ return c.group === 'COR';
43
+ })) === null || _agent$connectors === void 0 ? void 0 : _agent$connectors.slugs) !== null && _agent$connectors$fin !== void 0 ? _agent$connectors$fin : [];
44
+ var hasClients = corSlugs.includes('clients_read');
45
+ var hasProjects = corSlugs.includes('projects_read');
46
+ var hasTasks = corSlugs.includes('tasks_read');
47
+ var corTypes = [];
48
+ if (hasClients) {
49
+ corTypes = ['user', 'task', 'project', 'client'];
50
+ } else if (hasProjects) {
51
+ corTypes = ['user', 'task', 'project'];
52
+ } else if (hasTasks) {
53
+ corTypes = ['user', 'task'];
54
+ }
55
+ var _mcpSlugs = (_agent$connectors$fin2 = (_agent$connectors2 = agent.connectors) === null || _agent$connectors2 === void 0 || (_agent$connectors2 = _agent$connectors2.find(function (c) {
56
+ return c.group === 'MCP';
57
+ })) === null || _agent$connectors2 === void 0 || (_agent$connectors2 = _agent$connectors2.slugs) === null || _agent$connectors2 === void 0 ? void 0 : _agent$connectors2.filter(function (s) {
58
+ return typeof s === 'string' && s.trim().length > 0;
59
+ })) !== null && _agent$connectors$fin2 !== void 0 ? _agent$connectors$fin2 : [];
60
+ if (_mcpSlugs.length > 0) {
61
+ corTypes = [].concat(_toConsumableArray(corTypes), ['mcp']);
62
+ }
63
+ return {
64
+ allowedTypes: corTypes,
65
+ defaultType: (_corTypes$ = corTypes[0]) !== null && _corTypes$ !== void 0 ? _corTypes$ : 'user'
66
+ };
67
+ }
68
+
35
69
  // Las @-mentions (y por ende los fetch de recents) solo aplican a agentes clone.
36
- // Los agentes no-clone (custom, etc.) no las tienen habilitadas por ahora.
37
70
  if ((agent === null || agent === void 0 ? void 0 : agent.type) !== 'clone') {
38
71
  return {
39
72
  allowedTypes: [],
@@ -82,11 +115,11 @@ export var useMentionAllowedTypes = function useMentionAllowedTypes(override) {
82
115
  return type !== 'user';
83
116
  });
84
117
  }
85
- var mcpSlugs = (_agent$connectors$fin = agent === null || agent === void 0 || (_agent$connectors = agent.connectors) === null || _agent$connectors === void 0 || (_agent$connectors = _agent$connectors.find(function (connector) {
118
+ var mcpSlugs = (_agent$connectors$fin3 = agent === null || agent === void 0 || (_agent$connectors3 = agent.connectors) === null || _agent$connectors3 === void 0 || (_agent$connectors3 = _agent$connectors3.find(function (connector) {
86
119
  return connector.group === 'MCP';
87
- })) === null || _agent$connectors === void 0 || (_agent$connectors = _agent$connectors.slugs) === null || _agent$connectors === void 0 ? void 0 : _agent$connectors.filter(function (slug) {
120
+ })) === null || _agent$connectors3 === void 0 || (_agent$connectors3 = _agent$connectors3.slugs) === null || _agent$connectors3 === void 0 ? void 0 : _agent$connectors3.filter(function (slug) {
88
121
  return typeof slug === 'string' && slug.trim().length > 0;
89
- })) !== null && _agent$connectors$fin !== void 0 ? _agent$connectors$fin : [];
122
+ })) !== null && _agent$connectors$fin3 !== void 0 ? _agent$connectors$fin3 : [];
90
123
  if (mcpSlugs.length > 0) {
91
124
  allowedTypes = [].concat(_toConsumableArray(allowedTypes), ['mcp']);
92
125
  }
@@ -99,4 +132,4 @@ export var useMentionAllowedTypes = function useMentionAllowedTypes(override) {
99
132
  };
100
133
  }, [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]);
101
134
  };
102
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlR2xvYmFsQ29udGV4dCIsImNhbkFjY2Vzc1RvU2tpbGxzIiwiQUxMX1RZUEVTIiwiU0tJTExfVFlQRSIsIlRFTVBfQ09OVEVYVF9NRU5USU9OU19SRVFVSVJFX1BST0pFQ1RfT1JfQ0xJRU5UX0VOVElUWSIsInVzZU1lbnRpb25BbGxvd2VkVHlwZXMiLCJvdmVycmlkZSIsIl91c2VHbG9iYWxDb250ZXh0IiwiYWdlbnQiLCJfYWdlbnQkY29ubmVjdG9ycyRmaW4iLCJfYWdlbnQkY29ubmVjdG9ycyIsIl9hbGxvd2VkVHlwZXMkIiwidHlwZSIsImFsbG93ZWRUeXBlcyIsImRlZmF1bHRUeXBlIiwibGVuZ3RoIiwic2tpbGxzRW5hYmxlZCIsImVudGl0eSIsImluY2x1ZGVzIiwiZmlsdGVyIiwibWNwU2x1Z3MiLCJjb25uZWN0b3JzIiwiZmluZCIsImNvbm5lY3RvciIsImdyb3VwIiwic2x1Z3MiLCJzbHVnIiwidHJpbSIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VNZW50aW9uQWxsb3dlZFR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgQ29udGV4dEVudGl0eVR5cGUgfSBmcm9tICcuLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IGNhbkFjY2Vzc1RvU2tpbGxzIH0gZnJvbSAnLi4vY29uc3RhbnRzL3Blcm1pc3Npb25zJ1xuXG5jb25zdCBBTExfVFlQRVM6IENvbnRleHRFbnRpdHlUeXBlW10gPSBbJ2NsaWVudCcsICdwcm9qZWN0JywgJ3Rhc2snLCAndXNlciddXG5jb25zdCBTS0lMTF9UWVBFOiBDb250ZXh0RW50aXR5VHlwZSA9ICdza2lsbCdcblxuLyoqXG4gKiBSZXN0cmljY2nDs24gdGVtcG9yYWwgZGUgcHJvZHVjdG86IGVsIHBvcG92ZXIgZGUgQC1tZW50aW9ucyAoQ09SICsgTUNQKSBzb2xvIGFwbGljYSBhXG4gKiBhZ2VudGVzIGN1eW8gYGVudGl0eWAgZXMgcHJveWVjdG8gbyBjbGllbnRlICjigJxlc3BlY2lhbGlzdGFz4oCdIGFjb3RhZG9zKS4gRWwgcmVzdG8gbm8gdmUgdGFic1xuICogbmkgTUNQIGF1bnF1ZSB0ZW5nYSBjb25lY3RvcmVzIGFjdGl2b3MuIFBhc2FyIGEgYGZhbHNlYCBjdWFuZG8gc2UgaGFiaWxpdGUgZGUgbnVldm8gZWxcbiAqIGFsY2FuY2UgYW1wbGlvOyBubyBib3JyYXIgZWwgY3VlcnBvIGRlbCBob29rIHF1ZSBxdWVkYSBkZWJham8uXG4gKi9cbmNvbnN0IFRFTVBfQ09OVEVYVF9NRU5USU9OU19SRVFVSVJFX1BST0pFQ1RfT1JfQ0xJRU5UX0VOVElUWSA9IHRydWVcblxuZXhwb3J0IHR5cGUgVXNlTWVudGlvbkFsbG93ZWRUeXBlc1Jlc3VsdCA9IHtcbiAgYWxsb3dlZFR5cGVzOiBDb250ZXh0RW50aXR5VHlwZVtdXG4gIGRlZmF1bHRUeXBlOiBDb250ZXh0RW50aXR5VHlwZVxufVxuXG4vKipcbiAqIERlcml2YSBkZWwgYWdlbnQgYWN0aXZvIHF1w6kgdGFicyBkZWwgY29udGV4dCBtZW50aW9uIGRlYmVuIGVzdGFyIGRpc3BvbmlibGVzLlxuICpcbiAqIFJlZ2xhczpcbiAqICAgLSBhZ2VudC5lbnRpdHkgPT09ICdnbG9iYWwnICDihpIgbmluZ3VuYSAoc2luIEAtbWVudGlvbnMpXG4gKiAgIC0gYWdlbnQuZW50aXR5ID09PSAncHJvamVjdCcg4oaSIFt0YXNrLCB1c2VyXVxuICogICAtIGFnZW50LmVudGl0eSA9PT0gJ2NsaWVudCcgIOKGkiBbcHJvamVjdCwgdGFzaywgdXNlcl1cbiAqICAgLSBhZ2VudC5lbnRpdHkgPT09IG51bGwvb3RybyAg4oaSIHRvZGFzIHNpIGVsIGZsYWcgdGVtcG9yYWwgZXN0w6EgZW4gZmFsc2UgKGNvbnRleHRvIGFtcGxpbylcbiAqICAgLSBhZ2VudC50eXBlICE9PSAnY2xvbmUnICAgICAg4oaSIG5pbmd1bmEgKHNpbiBALW1lbnRpb25zIHBvciBhaG9yYSlcbiAqXG4gKiBFbCBgb3ZlcnJpZGVgIChwcm9wIGBlbmFibGVkVHlwZXNgIGRlbCBjb21wb25lbnRlIGNvbnN1bWlkb3IpIHNpZW1wcmUgZ2FuYS5cbiAqXG4gKiBNaWVudHJhcyBgVEVNUF9DT05URVhUX01FTlRJT05TX1JFUVVJUkVfUFJPSkVDVF9PUl9DTElFTlRfRU5USVRZYCBzZWEgdHJ1ZSwgdHJhcyBlbCBvdmVycmlkZVxuICogc29sbyBzZSBwZXJtaXRlIGNvbnRpbnVhciBzaSBgYWdlbnQuZW50aXR5YCBlcyBgcHJvamVjdGAgbyBgY2xpZW50YCAoc2luIEAgcGFyYSBnbG9iYWwvbnVsbC9vdHJvcykuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VNZW50aW9uQWxsb3dlZFR5cGVzID0gKG92ZXJyaWRlPzogQ29udGV4dEVudGl0eVR5cGVbXSk6IFVzZU1lbnRpb25BbGxvd2VkVHlwZXNSZXN1bHQgPT4ge1xuICBjb25zdCB7IGFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcblxuICByZXR1cm4gdXNlTWVtbygoKTogVXNlTWVudGlvbkFsbG93ZWRUeXBlc1Jlc3VsdCA9PiB7XG4gICAgLy8gTGFzIEAtbWVudGlvbnMgKHkgcG9yIGVuZGUgbG9zIGZldGNoIGRlIHJlY2VudHMpIHNvbG8gYXBsaWNhbiBhIGFnZW50ZXMgY2xvbmUuXG4gICAgLy8gTG9zIGFnZW50ZXMgbm8tY2xvbmUgKGN1c3RvbSwgZXRjLikgbm8gbGFzIHRpZW5lbiBoYWJpbGl0YWRhcyBwb3IgYWhvcmEuXG4gICAgaWYgKGFnZW50Py50eXBlICE9PSAnY2xvbmUnKSB7XG4gICAgICByZXR1cm4geyBhbGxvd2VkVHlwZXM6IFtdLCBkZWZhdWx0VHlwZTogJ3VzZXInIH1cbiAgICB9XG5cbiAgICBpZiAob3ZlcnJpZGUgJiYgb3ZlcnJpZGUubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZGVmYXVsdFR5cGUgPSBvdmVycmlkZVswXVxuICAgICAgcmV0dXJuIHsgYWxsb3dlZFR5cGVzOiBvdmVycmlkZSwgZGVmYXVsdFR5cGUgfVxuICAgIH1cblxuICAgIGNvbnN0IHNraWxsc0VuYWJsZWQgPSBjYW5BY2Nlc3NUb1NraWxscygpXG5cbiAgICBpZiAoXG4gICAgICBURU1QX0NPTlRFWFRfTUVOVElPTlNfUkVRVUlSRV9QUk9KRUNUX09SX0NMSUVOVF9FTlRJVFkgJiZcbiAgICAgIGFnZW50Py5lbnRpdHkgIT09ICdwcm9qZWN0JyAmJlxuICAgICAgYWdlbnQ/LmVudGl0eSAhPT0gJ2NsaWVudCdcbiAgICApIHtcbiAgICAgIC8vIFBhcmEgYWdlbnRlcyBzaW4gZW50aWRhZCBkZSBwcm95ZWN0by9jbGllbnRlLCBzb2xvIHNlIGV4cG9uZSBlbCB0YWIgZGUgc2tpbGxzLlxuICAgICAgaWYgKCFza2lsbHNFbmFibGVkKSByZXR1cm4geyBhbGxvd2VkVHlwZXM6IFtdLCBkZWZhdWx0VHlwZTogJ3VzZXInIH1cbiAgICAgIHJldHVybiB7IGFsbG93ZWRUeXBlczogW1NLSUxMX1RZUEVdLCBkZWZhdWx0VHlwZTogU0tJTExfVFlQRSB9XG4gICAgfVxuXG4gICAgaWYgKGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnKSB7XG4gICAgICBpZiAoIXNraWxsc0VuYWJsZWQpIHJldHVybiB7IGFsbG93ZWRUeXBlczogW10sIGRlZmF1bHRUeXBlOiAndXNlcicgfVxuICAgICAgcmV0dXJuIHsgYWxsb3dlZFR5cGVzOiBbU0tJTExfVFlQRV0sIGRlZmF1bHRUeXBlOiBTS0lMTF9UWVBFIH1cbiAgICB9XG5cbiAgICBsZXQgYWxsb3dlZFR5cGVzOiBDb250ZXh0RW50aXR5VHlwZVtdID0gQUxMX1RZUEVTXG5cbiAgICBpZiAoYWdlbnQ/LmVudGl0eSA9PT0gJ3Byb2plY3QnKSB7XG4gICAgICBhbGxvd2VkVHlwZXMgPSBbJ3VzZXInLCAndGFzayddXG4gICAgfSBlbHNlIGlmIChhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50Jykge1xuICAgICAgYWxsb3dlZFR5cGVzID0gWyd1c2VyJywgJ3Rhc2snLCAncHJvamVjdCddXG4gICAgfVxuXG4gICAgLy8gYHVzZXJgIHPDs2xvIHNlIGhhYmlsaXRhIGp1bnRvIGNvbiBgdGFza2AuXG4gICAgaWYgKCFhbGxvd2VkVHlwZXMuaW5jbHVkZXMoJ3Rhc2snKSkge1xuICAgICAgYWxsb3dlZFR5cGVzID0gYWxsb3dlZFR5cGVzLmZpbHRlcih0eXBlID0+IHR5cGUgIT09ICd1c2VyJylcbiAgICB9XG5cbiAgICBjb25zdCBtY3BTbHVncyA9XG4gICAgICBhZ2VudD8uY29ubmVjdG9yc1xuICAgICAgICA/LmZpbmQoY29ubmVjdG9yID0+IGNvbm5lY3Rvci5ncm91cCA9PT0gJ01DUCcpXG4gICAgICAgID8uc2x1Z3M/LmZpbHRlcigoc2x1Zyk6IHNsdWcgaXMgc3RyaW5nID0+IHR5cGVvZiBzbHVnID09PSAnc3RyaW5nJyAmJiBzbHVnLnRyaW0oKS5sZW5ndGggPiAwKSA/PyBbXVxuICAgIGlmIChtY3BTbHVncy5sZW5ndGggPiAwKSB7XG4gICAgICBhbGxvd2VkVHlwZXMgPSBbLi4uYWxsb3dlZFR5cGVzLCAnbWNwJ11cbiAgICB9XG5cbiAgICBpZiAoc2tpbGxzRW5hYmxlZCkge1xuICAgICAgYWxsb3dlZFR5cGVzID0gWy4uLmFsbG93ZWRUeXBlcywgU0tJTExfVFlQRV1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWxsb3dlZFR5cGVzLFxuICAgICAgZGVmYXVsdFR5cGU6IGFsbG93ZWRUeXBlc1swXSA/PyBTS0lMTF9UWVBFLFxuICAgIH1cbiAgfSwgW2FnZW50Py5lbnRpdHksIGFnZW50Py50eXBlLCBhZ2VudD8uY29ubmVjdG9ycywgb3ZlcnJpZGVdKVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBU0EsT0FBTyxRQUFRLE9BQU87QUFDL0IsU0FBU0MsZ0JBQWdCLFFBQVEsMkJBQTJCO0FBRTVELFNBQVND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
135
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlR2xvYmFsQ29udGV4dCIsImNhbkFjY2Vzc1RvU2tpbGxzIiwiQUxMX1RZUEVTIiwiU0tJTExfVFlQRSIsIlRFTVBfQ09OVEVYVF9NRU5USU9OU19SRVFVSVJFX1BST0pFQ1RfT1JfQ0xJRU5UX0VOVElUWSIsInVzZU1lbnRpb25BbGxvd2VkVHlwZXMiLCJvdmVycmlkZSIsIl91c2VHbG9iYWxDb250ZXh0IiwiYWdlbnQiLCJfYWdlbnQkY29ubmVjdG9ycyRmaW4zIiwiX2FnZW50JGNvbm5lY3RvcnMzIiwiX2FsbG93ZWRUeXBlcyQiLCJ0eXBlIiwiX2FnZW50JGNvbm5lY3RvcnMkZmluIiwiX2FnZW50JGNvbm5lY3RvcnMiLCJfYWdlbnQkY29ubmVjdG9ycyRmaW4yIiwiX2FnZW50JGNvbm5lY3RvcnMyIiwiX2NvclR5cGVzJCIsImNvclNsdWdzIiwiY29ubmVjdG9ycyIsImZpbmQiLCJjIiwiZ3JvdXAiLCJzbHVncyIsImhhc0NsaWVudHMiLCJpbmNsdWRlcyIsImhhc1Byb2plY3RzIiwiaGFzVGFza3MiLCJjb3JUeXBlcyIsIm1jcFNsdWdzIiwiZmlsdGVyIiwicyIsInRyaW0iLCJsZW5ndGgiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhbGxvd2VkVHlwZXMiLCJkZWZhdWx0VHlwZSIsInNraWxsc0VuYWJsZWQiLCJlbnRpdHkiLCJjb25uZWN0b3IiLCJzbHVnIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZU1lbnRpb25BbGxvd2VkVHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBDb250ZXh0RW50aXR5VHlwZSB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgY2FuQWNjZXNzVG9Ta2lsbHMgfSBmcm9tICcuLi9jb25zdGFudHMvcGVybWlzc2lvbnMnXG5cbmNvbnN0IEFMTF9UWVBFUzogQ29udGV4dEVudGl0eVR5cGVbXSA9IFsnY2xpZW50JywgJ3Byb2plY3QnLCAndGFzaycsICd1c2VyJ11cbmNvbnN0IFNLSUxMX1RZUEU6IENvbnRleHRFbnRpdHlUeXBlID0gJ3NraWxsJ1xuXG4vKipcbiAqIFJlc3RyaWNjacOzbiB0ZW1wb3JhbCBkZSBwcm9kdWN0bzogZWwgcG9wb3ZlciBkZSBALW1lbnRpb25zIChDT1IgKyBNQ1ApIHNvbG8gYXBsaWNhIGFcbiAqIGFnZW50ZXMgY3V5byBgZW50aXR5YCBlcyBwcm95ZWN0byBvIGNsaWVudGUgKOKAnGVzcGVjaWFsaXN0YXPigJ0gYWNvdGFkb3MpLiBFbCByZXN0byBubyB2ZSB0YWJzXG4gKiBuaSBNQ1AgYXVucXVlIHRlbmdhIGNvbmVjdG9yZXMgYWN0aXZvcy4gUGFzYXIgYSBgZmFsc2VgIGN1YW5kbyBzZSBoYWJpbGl0ZSBkZSBudWV2byBlbFxuICogYWxjYW5jZSBhbXBsaW87IG5vIGJvcnJhciBlbCBjdWVycG8gZGVsIGhvb2sgcXVlIHF1ZWRhIGRlYmFqby5cbiAqL1xuY29uc3QgVEVNUF9DT05URVhUX01FTlRJT05TX1JFUVVJUkVfUFJPSkVDVF9PUl9DTElFTlRfRU5USVRZID0gdHJ1ZVxuXG5leHBvcnQgdHlwZSBVc2VNZW50aW9uQWxsb3dlZFR5cGVzUmVzdWx0ID0ge1xuICBhbGxvd2VkVHlwZXM6IENvbnRleHRFbnRpdHlUeXBlW11cbiAgZGVmYXVsdFR5cGU6IENvbnRleHRFbnRpdHlUeXBlXG59XG5cbi8qKlxuICogRGVyaXZhIGRlbCBhZ2VudCBhY3Rpdm8gcXXDqSB0YWJzIGRlbCBjb250ZXh0IG1lbnRpb24gZGViZW4gZXN0YXIgZGlzcG9uaWJsZXMuXG4gKlxuICogUmVnbGFzOlxuICogICAtIGFnZW50LnR5cGUgPT09ICdjdXN0b20nIOKGkiBzZWfDum4gY29uZWN0b3JlcyBDT1IvTUNQIGRlbCBhZ2VudGVcbiAqICAgLSBhZ2VudC5lbnRpdHkgPT09ICdnbG9iYWwnICDihpIgbmluZ3VuYSAoc2luIEAtbWVudGlvbnMpXG4gKiAgIC0gYWdlbnQuZW50aXR5ID09PSAncHJvamVjdCcg4oaSIFt0YXNrLCB1c2VyXVxuICogICAtIGFnZW50LmVudGl0eSA9PT0gJ2NsaWVudCcgIOKGkiBbcHJvamVjdCwgdGFzaywgdXNlcl1cbiAqICAgLSBhZ2VudC5lbnRpdHkgPT09IG51bGwvb3RybyAg4oaSIHRvZGFzIHNpIGVsIGZsYWcgdGVtcG9yYWwgZXN0w6EgZW4gZmFsc2UgKGNvbnRleHRvIGFtcGxpbylcbiAqICAgLSBhZ2VudC50eXBlICE9PSAnY2xvbmUnICAgICAg4oaSIG5pbmd1bmEgKHNpbiBALW1lbnRpb25zKVxuICpcbiAqIEVsIGBvdmVycmlkZWAgKHByb3AgYGVuYWJsZWRUeXBlc2AgZGVsIGNvbXBvbmVudGUgY29uc3VtaWRvcikgc2llbXByZSBnYW5hLlxuICpcbiAqIE1pZW50cmFzIGBURU1QX0NPTlRFWFRfTUVOVElPTlNfUkVRVUlSRV9QUk9KRUNUX09SX0NMSUVOVF9FTlRJVFlgIHNlYSB0cnVlLCB0cmFzIGVsIG92ZXJyaWRlXG4gKiBzb2xvIHNlIHBlcm1pdGUgY29udGludWFyIHNpIGBhZ2VudC5lbnRpdHlgIGVzIGBwcm9qZWN0YCBvIGBjbGllbnRgIChzaW4gQCBwYXJhIGdsb2JhbC9udWxsL290cm9zKS5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZU1lbnRpb25BbGxvd2VkVHlwZXMgPSAob3ZlcnJpZGU/OiBDb250ZXh0RW50aXR5VHlwZVtdKTogVXNlTWVudGlvbkFsbG93ZWRUeXBlc1Jlc3VsdCA9PiB7XG4gIGNvbnN0IHsgYWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuXG4gIHJldHVybiB1c2VNZW1vKCgpOiBVc2VNZW50aW9uQWxsb3dlZFR5cGVzUmVzdWx0ID0+IHtcbiAgICAvLyBBZ2VudGVzIGN1c3RvbTogbG9zIHRpcG9zIGRpc3BvbmlibGVzIHNlIGRlcml2YW4gZGUgc3VzIGNvbmVjdG9yZXMgQ09SLlxuICAgIC8vIHRhc2tzX3JlYWQg4oaSIFt1c2VyLCB0YXNrXTsgcHJvamVjdHNfcmVhZCDihpIgYWdyZWdhIHByb2plY3Q7IGNsaWVudHNfcmVhZCDihpIgYWdyZWdhIGNsaWVudC5cbiAgICAvLyBMb3MgY29uZWN0b3JlcyBlc3TDoW4gZW5jYWRlbmFkb3M6IGNsaWVudHMgaW1wbGljYSBwcm9qZWN0cywgcHJvamVjdHMgaW1wbGljYSB0YXNrcy5cbiAgICBpZiAoYWdlbnQ/LnR5cGUgPT09ICdjdXN0b20nKSB7XG4gICAgICBjb25zdCBjb3JTbHVncyA9IGFnZW50LmNvbm5lY3RvcnM/LmZpbmQoYyA9PiBjLmdyb3VwID09PSAnQ09SJyk/LnNsdWdzID8/IFtdXG4gICAgICBjb25zdCBoYXNDbGllbnRzID0gY29yU2x1Z3MuaW5jbHVkZXMoJ2NsaWVudHNfcmVhZCcpXG4gICAgICBjb25zdCBoYXNQcm9qZWN0cyA9IGNvclNsdWdzLmluY2x1ZGVzKCdwcm9qZWN0c19yZWFkJylcbiAgICAgIGNvbnN0IGhhc1Rhc2tzID0gY29yU2x1Z3MuaW5jbHVkZXMoJ3Rhc2tzX3JlYWQnKVxuXG4gICAgICBsZXQgY29yVHlwZXM6IENvbnRleHRFbnRpdHlUeXBlW10gPSBbXVxuICAgICAgaWYgKGhhc0NsaWVudHMpIHtcbiAgICAgICAgY29yVHlwZXMgPSBbJ3VzZXInLCAndGFzaycsICdwcm9qZWN0JywgJ2NsaWVudCddXG4gICAgICB9IGVsc2UgaWYgKGhhc1Byb2plY3RzKSB7XG4gICAgICAgIGNvclR5cGVzID0gWyd1c2VyJywgJ3Rhc2snLCAncHJvamVjdCddXG4gICAgICB9IGVsc2UgaWYgKGhhc1Rhc2tzKSB7XG4gICAgICAgIGNvclR5cGVzID0gWyd1c2VyJywgJ3Rhc2snXVxuICAgICAgfVxuXG4gICAgICBjb25zdCBtY3BTbHVncyA9XG4gICAgICAgIGFnZW50LmNvbm5lY3RvcnNcbiAgICAgICAgICA/LmZpbmQoYyA9PiBjLmdyb3VwID09PSAnTUNQJylcbiAgICAgICAgICA/LnNsdWdzPy5maWx0ZXIoKHMpOiBzIGlzIHN0cmluZyA9PiB0eXBlb2YgcyA9PT0gJ3N0cmluZycgJiYgcy50cmltKCkubGVuZ3RoID4gMCkgPz8gW11cbiAgICAgIGlmIChtY3BTbHVncy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvclR5cGVzID0gWy4uLmNvclR5cGVzLCAnbWNwJ11cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWxsb3dlZFR5cGVzOiBjb3JUeXBlcyxcbiAgICAgICAgZGVmYXVsdFR5cGU6IGNvclR5cGVzWzBdID8/ICd1c2VyJyxcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBMYXMgQC1tZW50aW9ucyAoeSBwb3IgZW5kZSBsb3MgZmV0Y2ggZGUgcmVjZW50cykgc29sbyBhcGxpY2FuIGEgYWdlbnRlcyBjbG9uZS5cbiAgICBpZiAoYWdlbnQ/LnR5cGUgIT09ICdjbG9uZScpIHtcbiAgICAgIHJldHVybiB7IGFsbG93ZWRUeXBlczogW10sIGRlZmF1bHRUeXBlOiAndXNlcicgfVxuICAgIH1cblxuICAgIGlmIChvdmVycmlkZSAmJiBvdmVycmlkZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBkZWZhdWx0VHlwZSA9IG92ZXJyaWRlWzBdXG4gICAgICByZXR1cm4geyBhbGxvd2VkVHlwZXM6IG92ZXJyaWRlLCBkZWZhdWx0VHlwZSB9XG4gICAgfVxuXG4gICAgY29uc3Qgc2tpbGxzRW5hYmxlZCA9IGNhbkFjY2Vzc1RvU2tpbGxzKClcblxuICAgIGlmIChcbiAgICAgIFRFTVBfQ09OVEVYVF9NRU5USU9OU19SRVFVSVJFX1BST0pFQ1RfT1JfQ0xJRU5UX0VOVElUWSAmJlxuICAgICAgYWdlbnQ/LmVudGl0eSAhPT0gJ3Byb2plY3QnICYmXG4gICAgICBhZ2VudD8uZW50aXR5ICE9PSAnY2xpZW50J1xuICAgICkge1xuICAgICAgLy8gUGFyYSBhZ2VudGVzIHNpbiBlbnRpZGFkIGRlIHByb3llY3RvL2NsaWVudGUsIHNvbG8gc2UgZXhwb25lIGVsIHRhYiBkZSBza2lsbHMuXG4gICAgICBpZiAoIXNraWxsc0VuYWJsZWQpIHJldHVybiB7IGFsbG93ZWRUeXBlczogW10sIGRlZmF1bHRUeXBlOiAndXNlcicgfVxuICAgICAgcmV0dXJuIHsgYWxsb3dlZFR5cGVzOiBbU0tJTExfVFlQRV0sIGRlZmF1bHRUeXBlOiBTS0lMTF9UWVBFIH1cbiAgICB9XG5cbiAgICBpZiAoYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCcpIHtcbiAgICAgIGlmICghc2tpbGxzRW5hYmxlZCkgcmV0dXJuIHsgYWxsb3dlZFR5cGVzOiBbXSwgZGVmYXVsdFR5cGU6ICd1c2VyJyB9XG4gICAgICByZXR1cm4geyBhbGxvd2VkVHlwZXM6IFtTS0lMTF9UWVBFXSwgZGVmYXVsdFR5cGU6IFNLSUxMX1RZUEUgfVxuICAgIH1cblxuICAgIGxldCBhbGxvd2VkVHlwZXM6IENvbnRleHRFbnRpdHlUeXBlW10gPSBBTExfVFlQRVNcblxuICAgIGlmIChhZ2VudD8uZW50aXR5ID09PSAncHJvamVjdCcpIHtcbiAgICAgIGFsbG93ZWRUeXBlcyA9IFsndXNlcicsICd0YXNrJ11cbiAgICB9IGVsc2UgaWYgKGFnZW50Py5lbnRpdHkgPT09ICdjbGllbnQnKSB7XG4gICAgICBhbGxvd2VkVHlwZXMgPSBbJ3VzZXInLCAndGFzaycsICdwcm9qZWN0J11cbiAgICB9XG5cbiAgICAvLyBgdXNlcmAgc8OzbG8gc2UgaGFiaWxpdGEganVudG8gY29uIGB0YXNrYC5cbiAgICBpZiAoIWFsbG93ZWRUeXBlcy5pbmNsdWRlcygndGFzaycpKSB7XG4gICAgICBhbGxvd2VkVHlwZXMgPSBhbGxvd2VkVHlwZXMuZmlsdGVyKHR5cGUgPT4gdHlwZSAhPT0gJ3VzZXInKVxuICAgIH1cblxuICAgIGNvbnN0IG1jcFNsdWdzID1cbiAgICAgIGFnZW50Py5jb25uZWN0b3JzXG4gICAgICAgID8uZmluZChjb25uZWN0b3IgPT4gY29ubmVjdG9yLmdyb3VwID09PSAnTUNQJylcbiAgICAgICAgPy5zbHVncz8uZmlsdGVyKChzbHVnKTogc2x1ZyBpcyBzdHJpbmcgPT4gdHlwZW9mIHNsdWcgPT09ICdzdHJpbmcnICYmIHNsdWcudHJpbSgpLmxlbmd0aCA+IDApID8/IFtdXG4gICAgaWYgKG1jcFNsdWdzLmxlbmd0aCA+IDApIHtcbiAgICAgIGFsbG93ZWRUeXBlcyA9IFsuLi5hbGxvd2VkVHlwZXMsICdtY3AnXVxuICAgIH1cblxuICAgIGlmIChza2lsbHNFbmFibGVkKSB7XG4gICAgICBhbGxvd2VkVHlwZXMgPSBbLi4uYWxsb3dlZFR5cGVzLCBTS0lMTF9UWVBFXVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhbGxvd2VkVHlwZXMsXG4gICAgICBkZWZhdWx0VHlwZTogYWxsb3dlZFR5cGVzWzBdID8/IFNLSUxMX1RZUEUsXG4gICAgfVxuICB9LCBbYWdlbnQ/LmVudGl0eSwgYWdlbnQ/LnR5cGUsIGFnZW50Py5jb25uZWN0b3JzLCBvdmVycmlkZV0pXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTQSxPQUFPLFFBQVEsT0FBTztBQUMvQixTQUFTQyxnQkFBZ0IsUUFBUSwyQkFBMkI7QUFFNUQsU0FBU0MsaUJBQWlCLFFBQVEsMEJBQTBCO0FBRTVELElBQU1DLFNBQThCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7QUFDNUUsSUFBTUMsVUFBNkIsR0FBRyxPQUFPOztBQUU3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQyxzREFBc0QsR0FBRyxJQUFJO0FBT25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFNQyxzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXNCQSxDQUFJQyxRQUE4QixFQUFtQztFQUN0RyxJQUFBQyxpQkFBQSxHQUFrQlAsZ0JBQWdCLENBQUMsQ0FBQztJQUE1QlEsS0FBSyxHQUFBRCxpQkFBQSxDQUFMQyxL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RUFBRSxTQUFTLENBQUM7SUFDNUM7O0lBRUE7SUFDQSxJQUFJLENBQUNBLFlBQVksQ0FBQ1gsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO01BQ2xDVyxZQUFZLEdBQUdBLFlBQVksQ0FBQ04sTUFBTSxDQUFDLFVBQUFsQixJQUFJO1FBQUEsT0FBSUEsSUFBSSxLQUFLLE1BQU07TUFBQSxFQUFDO0lBQzdEO0lBRUEsSUFBTWlCLFFBQVEsSUFBQXBCLHNCQUFBLEdBQ1pELEtBQUssYUFBTEEsS0FBSyxnQkFBQUUsa0JBQUEsR0FBTEYsS0FBSyxDQUFFVyxVQUFVLGNBQUFULGtCQUFBLGdCQUFBQSxrQkFBQSxHQUFqQkEsa0JBQUEsQ0FDSVUsSUFBSSxDQUFDLFVBQUFvQixTQUFTO01BQUEsT0FBSUEsU0FBUyxDQUFDbEIsS0FBSyxLQUFLLEtBQUs7SUFBQSxFQUFDLGNBQUFaLGtCQUFBLGdCQUFBQSxrQkFBQSxHQURoREEsa0JBQUEsQ0FFSWEsS0FBSyxjQUFBYixrQkFBQSx1QkFGVEEsa0JBQUEsQ0FFV29CLE1BQU0sQ0FBQyxVQUFDVyxJQUFJO01BQUEsT0FBcUIsT0FBT0EsSUFBSSxLQUFLLFFBQVEsSUFBSUEsSUFBSSxDQUFDVCxJQUFJLENBQUMsQ0FBQyxDQUFDQyxNQUFNLEdBQUcsQ0FBQztJQUFBLEVBQUMsY0FBQXhCLHNCQUFBLGNBQUFBLHNCQUFBLEdBQUksRUFBRTtJQUN2RyxJQUFJb0IsUUFBUSxDQUFDSSxNQUFNLEdBQUcsQ0FBQyxFQUFFO01BQ3ZCRyxZQUFZLE1BQUFGLE1BQUEsQ0FBQUMsa0JBQUEsQ0FBT0MsWUFBWSxJQUFFLEtBQUssRUFBQztJQUN6QztJQUVBLElBQUlFLGFBQWEsRUFBRTtNQUNqQkYsWUFBWSxNQUFBRixNQUFBLENBQUFDLGtCQUFBLENBQU9DLFlBQVksSUFBRWpDLFVBQVUsRUFBQztJQUM5QztJQUVBLE9BQU87TUFDTGlDLFlBQVksRUFBWkEsWUFBWTtNQUNaQyxXQUFXLEdBQUExQixjQUFBLEdBQUV5QixZQUFZLENBQUMsQ0FBQyxDQUFDLGNBQUF6QixjQUFBLGNBQUFBLGNBQUEsR0FBSVI7SUFDbEMsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDSyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRStCLE1BQU0sRUFBRS9CLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFSSxJQUFJLEVBQUVKLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFVyxVQUFVLEVBQUViLFFBQVEsQ0FBQyxDQUFDO0FBQy9ELENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1,6 +1,6 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
4
4
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
5
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
6
  import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
@@ -13,40 +13,17 @@ import { useEntitySearch } from './useEntitySearch';
13
13
  import { useMentionAllowedTypes } from './useMentionAllowedTypes';
14
14
  import { useCaretPosition } from './useCaretPosition';
15
15
  import { EVENTS, useEvent } from './useEvent';
16
+ import { getAtRunTabTypes, getTriggerSequenceFromType, getTypeFromTriggerSequence } from '../utils/contextMentionTriggers';
16
17
  import { jsx as _jsx } from "react/jsx-runtime";
17
- var TYPE_TO_TRIGGER_SEQUENCE = {
18
- user: 1,
19
- task: 2,
20
- project: 3
21
- };
22
- var getTypeFromTriggerSequence = function getTypeFromTriggerSequence(atRunLength, allowedTypes, defaultType) {
23
- var _Object$entries$find$, _Object$entries$find, _allowedTypes$tabIdx;
24
- var normalized = Math.max(1, Math.floor(atRunLength));
25
- var mappedType = (_Object$entries$find$ = (_Object$entries$find = Object.entries(TYPE_TO_TRIGGER_SEQUENCE).find(function (_ref) {
26
- var _ref2 = _slicedToArray(_ref, 2),
27
- len = _ref2[1];
28
- return len === normalized;
29
- })) === null || _Object$entries$find === void 0 ? void 0 : _Object$entries$find[0]) !== null && _Object$entries$find$ !== void 0 ? _Object$entries$find$ : null;
30
- if (mappedType && allowedTypes.includes(mappedType)) return mappedType;
31
- var tabIdx = Math.min(Math.max(0, normalized - 1), allowedTypes.length - 1);
32
- return (_allowedTypes$tabIdx = allowedTypes[tabIdx]) !== null && _allowedTypes$tabIdx !== void 0 ? _allowedTypes$tabIdx : defaultType;
33
- };
34
- var getTriggerSequenceFromType = function getTriggerSequenceFromType(type, allowedTypes) {
35
- var mapped = TYPE_TO_TRIGGER_SEQUENCE[type];
36
- if (mapped) return mapped;
37
- var idx = allowedTypes.indexOf(type);
38
- return idx >= 0 ? idx + 1 : 1;
39
- };
40
-
41
18
  /**
42
19
  * Deriva clientId, projectId, agentEntity y MCP desde el contexto global (incl.
43
20
  * `entityValues` y `chipsProject`) para filtrar recents y búsqueda GraphQL.
44
21
  */
45
22
  var useDerivedScope = function useDerivedScope() {
46
- var _ref3, _ctx$client$id, _ctx$client, _ctx$entityValues, _ref4, _ref5, _ctx$project$id, _ctx$project, _ctx$entityValues2, _ctx$chipsProject, _ctx$agent$entity, _ctx$agent, _ctx$agent$connectors, _ctx$agent2;
23
+ var _ref, _ctx$client$id, _ctx$client, _ctx$entityValues, _ref2, _ref3, _ctx$project$id, _ctx$project, _ctx$entityValues2, _ctx$chipsProject, _ctx$agent$entity, _ctx$agent, _ctx$agent$connectors, _ctx$agent2;
47
24
  var ctx = useGlobalContext();
48
- var clientId = (_ref3 = (_ctx$client$id = (_ctx$client = ctx.client) === null || _ctx$client === void 0 ? void 0 : _ctx$client.id) !== null && _ctx$client$id !== void 0 ? _ctx$client$id : (_ctx$entityValues = ctx.entityValues) === null || _ctx$entityValues === void 0 ? void 0 : _ctx$entityValues.clientId) !== null && _ref3 !== void 0 ? _ref3 : null;
49
- var projectId = (_ref4 = (_ref5 = (_ctx$project$id = (_ctx$project = ctx.project) === null || _ctx$project === void 0 ? void 0 : _ctx$project.id) !== null && _ctx$project$id !== void 0 ? _ctx$project$id : (_ctx$entityValues2 = ctx.entityValues) === null || _ctx$entityValues2 === void 0 ? void 0 : _ctx$entityValues2.projectId) !== null && _ref5 !== void 0 ? _ref5 : (_ctx$chipsProject = ctx.chipsProject) === null || _ctx$chipsProject === void 0 ? void 0 : _ctx$chipsProject.projectId) !== null && _ref4 !== void 0 ? _ref4 : null;
25
+ var clientId = (_ref = (_ctx$client$id = (_ctx$client = ctx.client) === null || _ctx$client === void 0 ? void 0 : _ctx$client.id) !== null && _ctx$client$id !== void 0 ? _ctx$client$id : (_ctx$entityValues = ctx.entityValues) === null || _ctx$entityValues === void 0 ? void 0 : _ctx$entityValues.clientId) !== null && _ref !== void 0 ? _ref : null;
26
+ var projectId = (_ref2 = (_ref3 = (_ctx$project$id = (_ctx$project = ctx.project) === null || _ctx$project === void 0 ? void 0 : _ctx$project.id) !== null && _ctx$project$id !== void 0 ? _ctx$project$id : (_ctx$entityValues2 = ctx.entityValues) === null || _ctx$entityValues2 === void 0 ? void 0 : _ctx$entityValues2.projectId) !== null && _ref3 !== void 0 ? _ref3 : (_ctx$chipsProject = ctx.chipsProject) === null || _ctx$chipsProject === void 0 ? void 0 : _ctx$chipsProject.projectId) !== null && _ref2 !== void 0 ? _ref2 : null;
50
27
  var agentEntity = (_ctx$agent$entity = (_ctx$agent = ctx.agent) === null || _ctx$agent === void 0 ? void 0 : _ctx$agent.entity) !== null && _ctx$agent$entity !== void 0 ? _ctx$agent$entity : null;
51
28
  var mcpSlugsKey = ((_ctx$agent$connectors = (_ctx$agent2 = ctx.agent) === null || _ctx$agent2 === void 0 || (_ctx$agent2 = _ctx$agent2.connectors) === null || _ctx$agent2 === void 0 || (_ctx$agent2 = _ctx$agent2.find(function (c) {
52
29
  return c.group === 'MCP';
@@ -77,12 +54,12 @@ var useDerivedScope = function useDerivedScope() {
77
54
  * Los filtros de búsqueda usan `useDerivedScope`: especialista proyecto acota tareas
78
55
  * al `projectId` del contexto; especialista cliente, proyectos al `clientId` (en `extra` de search).
79
56
  */
80
- export var useMentionPopover = function useMentionPopover(_ref6) {
81
- var editorRef = _ref6.editorRef,
82
- popoverAnchorRef = _ref6.popoverAnchorRef,
83
- enabledTypes = _ref6.enabledTypes,
84
- skills = _ref6.skills,
85
- onMentionAdded = _ref6.onMentionAdded;
57
+ export var useMentionPopover = function useMentionPopover(_ref4) {
58
+ var editorRef = _ref4.editorRef,
59
+ popoverAnchorRef = _ref4.popoverAnchorRef,
60
+ enabledTypes = _ref4.enabledTypes,
61
+ skills = _ref4.skills,
62
+ onMentionAdded = _ref4.onMentionAdded;
86
63
  var _useT = useT(),
87
64
  t = _useT.t;
88
65
  var event = useEvent();
@@ -182,17 +159,26 @@ export var useMentionPopover = function useMentionPopover(_ref6) {
182
159
  return;
183
160
  }
184
161
  if (trigger.active) {
185
- // `@/` activa el tab de skills; el '/' forma parte del query en el trigger.
186
- var isSkillTrigger = trigger.atRunLength === 1 && trigger.query.startsWith('/');
187
- var nonSkillTypes = allowedTypes.filter(function (entityType) {
188
- return entityType !== 'skill';
162
+ var isSkillTrigger = allowedTypes.includes('skill') && trigger.atRunLength === 1 && trigger.query.startsWith('/');
163
+ var atRunTabTypes = getAtRunTabTypes(allowedTypes);
164
+ var atRunTypesOrAll = atRunTabTypes.length > 0 ? atRunTabTypes : allowedTypes.filter(function (t) {
165
+ return t !== 'skill';
189
166
  });
190
- var effectiveAtRunLength = Math.min(trigger.atRunLength, nonSkillTypes.length);
191
- var overflowAtCount = Math.max(0, trigger.atRunLength - nonSkillTypes.length);
192
- var nonSkillTypesOrAll = nonSkillTypes.length > 0 ? nonSkillTypes : allowedTypes;
193
- var corEntityType = getTypeFromTriggerSequence(effectiveAtRunLength, nonSkillTypesOrAll, defaultType);
194
- var typeFromAt = isSkillTrigger ? 'skill' : corEntityType;
195
- var effectiveQuery = isSkillTrigger ? trigger.query.slice(1) : "".concat('@'.repeat(overflowAtCount)).concat(trigger.query);
167
+ var isSlashTrigger = trigger.atRunLength < 0;
168
+ var typeFromAt;
169
+ var effectiveQuery;
170
+ if (isSkillTrigger) {
171
+ typeFromAt = 'skill';
172
+ effectiveQuery = trigger.query.slice(1);
173
+ } else if (isSlashTrigger) {
174
+ typeFromAt = getTypeFromTriggerSequence(trigger.atRunLength, allowedTypes, defaultType);
175
+ effectiveQuery = trigger.query;
176
+ } else {
177
+ var overflowAtCount = Math.max(0, trigger.atRunLength - atRunTabTypes.length);
178
+ var effectiveAtRunLength = Math.min(trigger.atRunLength, atRunTypesOrAll.length);
179
+ effectiveQuery = "".concat('@'.repeat(overflowAtCount)).concat(trigger.query);
180
+ typeFromAt = getTypeFromTriggerSequence(effectiveAtRunLength, atRunTypesOrAll, defaultType);
181
+ }
196
182
  if (!popoverOpen) {
197
183
  setPopoverOpen(true);
198
184
  setActiveType(typeFromAt);
@@ -379,4 +365,4 @@ export var useMentionPopover = function useMentionPopover(_ref6) {
379
365
  close: close
380
366
  };
381
367
  };
382
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNvbnRleHRNZW50aW9uUG9wb3ZlciIsIk1BSUFfVEFTS19QQU5FTF9PVkVSTEFZX0FUVFIiLCJTQ01QQW5jaG9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VUIiwidXNlRW50aXR5U2VhcmNoIiwidXNlTWVudGlvbkFsbG93ZWRUeXBlcyIsInVzZUNhcmV0UG9zaXRpb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsImpzeCIsIl9qc3giLCJUWVBFX1RPX1RSSUdHRVJfU0VRVUVOQ0UiLCJ1c2VyIiwidGFzayIsInByb2plY3QiLCJnZXRUeXBlRnJvbVRyaWdnZXJTZXF1ZW5jZSIsImF0UnVuTGVuZ3RoIiwiYWxsb3dlZFR5cGVzIiwiZGVmYXVsdFR5cGUiLCJfT2JqZWN0JGVudHJpZXMkZmluZCQiLCJfT2JqZWN0JGVudHJpZXMkZmluZCIsIl9hbGxvd2VkVHlwZXMkdGFiSWR4Iiwibm9ybWFsaXplZCIsIk1hdGgiLCJtYXgiLCJmbG9vciIsIm1hcHBlZFR5cGUiLCJPYmplY3QiLCJlbnRyaWVzIiwiZmluZCIsIl9yZWYiLCJfcmVmMiIsIl9zbGljZWRUb0FycmF5IiwibGVuIiwiaW5jbHVkZXMiLCJ0YWJJZHgiLCJtaW4iLCJsZW5ndGgiLCJnZXRUcmlnZ2VyU2VxdWVuY2VGcm9tVHlwZSIsInR5cGUiLCJtYXBwZWQiLCJpZHgiLCJpbmRleE9mIiwidXNlRGVyaXZlZFNjb3BlIiwiX3JlZjMiLCJfY3R4JGNsaWVudCRpZCIsIl9jdHgkY2xpZW50IiwiX2N0eCRlbnRpdHlWYWx1ZXMiLCJfcmVmNCIsIl9yZWY1IiwiX2N0eCRwcm9qZWN0JGlkIiwiX2N0eCRwcm9qZWN0IiwiX2N0eCRlbnRpdHlWYWx1ZXMyIiwiX2N0eCRjaGlwc1Byb2plY3QiLCJfY3R4JGFnZW50JGVudGl0eSIsIl9jdHgkYWdlbnQiLCJfY3R4JGFnZW50JGNvbm5lY3RvcnMiLCJfY3R4JGFnZW50MiIsImN0eCIsImNsaWVudElkIiwiY2xpZW50IiwiaWQiLCJlbnRpdHlWYWx1ZXMiLCJwcm9qZWN0SWQiLCJjaGlwc1Byb2plY3QiLCJhZ2VudEVudGl0eSIsImFnZW50IiwiZW50aXR5IiwibWNwU2x1Z3NLZXkiLCJjb25uZWN0b3JzIiwiYyIsImdyb3VwIiwic2x1Z3MiLCJqb2luIiwibWNwU2x1Z3MiLCJfY3R4JGFnZW50JGNvbm5lY3RvcnMyIiwiX2N0eCRhZ2VudDMiLCJyYXciLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJTZXQiLCJmaWx0ZXIiLCJzIiwidHJpbSIsInNvcnQiLCJ1c2VNZW50aW9uUG9wb3ZlciIsIl9yZWY2IiwiZWRpdG9yUmVmIiwicG9wb3ZlckFuY2hvclJlZiIsImVuYWJsZWRUeXBlcyIsInNraWxscyIsIm9uTWVudGlvbkFkZGVkIiwiX3VzZVQiLCJ0IiwiZXZlbnQiLCJfdXNlTWVudGlvbkFsbG93ZWRUeXAiLCJtZW50aW9uUG9wb3ZlclpJbmRleCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJhY3RpdmVUeXBlIiwic2V0QWN0aXZlVHlwZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwicG9wb3Zlck9wZW4iLCJzZXRQb3BvdmVyT3BlbiIsIl91c2VTdGF0ZTUiLCJib3R0b20iLCJsZWZ0Iiwid2lkdGgiLCJfdXNlU3RhdGU2IiwicG9wb3ZlclBvcyIsInNldFBvcG92ZXJQb3MiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImFjdGl2ZUluZGV4Iiwic2V0QWN0aXZlSW5kZXgiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsImlzS2V5Ym9hcmROYXZBY3RpdmUiLCJzZXRJc0tleWJvYXJkTmF2QWN0aXZlIiwiaGFzRW1pdHRlZE9wZW4iLCJwb3BvdmVyUmVmIiwiZ2V0Q2FyZXRSZWN0IiwiZGVyaXZlZFNjb3BlIiwic2NvcGUiLCJfb2JqZWN0U3ByZWFkIiwiX3VzZUVudGl0eVNlYXJjaCIsIml0ZW1zIiwibG9hZGluZyIsImVycm9yIiwiaGlkZVJlY2VudHNMYWJlbCIsImhhc01vcmUiLCJpc0xvYWRpbmdNb3JlIiwibG9hZE1vcmUiLCJzZWFyY2hWYWx1ZSIsInVwZGF0ZVNlYXJjaFZhbHVlIiwic2tpbGxzQ2F0YWxvZ0VtcHR5IiwicG9zaXRpb25Qb3BvdmVyIiwiX3BvcG92ZXJBbmNob3JSZWYkY3VyIiwiX2VkaXRvclJlZiRjdXJyZW50JGdlIiwiX2VkaXRvclJlZiRjdXJyZW50IiwiX2VkaXRvclJlZiRjdXJyZW50JGdlMiIsImZyb21BbmNob3IiLCJjdXJyZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiZnJvbUVkaXRvciIsImdldEVkaXRvckNsaWVudFJlY3QiLCJjYWxsIiwicmVjdCIsImNhcmV0Iiwidmlld3BvcnRIIiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJ2aWV3cG9ydFciLCJpbm5lcldpZHRoIiwiZmFsbGJhY2tXIiwidG9wIiwicmVzZXRNZW50aW9uT3BlblRyYWNraW5nIiwiY2xvc2UiLCJoYW5kbGVUcmlnZ2VyIiwidHJpZ2dlciIsImFjdGl2ZSIsImlzU2tpbGxUcmlnZ2VyIiwicXVlcnkiLCJzdGFydHNXaXRoIiwibm9uU2tpbGxUeXBlcyIsImVudGl0eVR5cGUiLCJlZmZlY3RpdmVBdFJ1bkxlbmd0aCIsIm92ZXJmbG93QXRDb3VudCIsIm5vblNraWxsVHlwZXNPckFsbCIsImNvckVudGl0eVR5cGUiLCJ0eXBlRnJvbUF0IiwiZWZmZWN0aXZlUXVlcnkiLCJzbGljZSIsImNvbmNhdCIsInJlcGVhdCIsImFpQ2hhdE1lbnRpb25PcGVuIiwiaW5zZXJ0U2VsZWN0ZWRJdGVtIiwiaXRlbSIsIl9pdGVtJHJhdyRjbGllbnRJZCIsIl9pdGVtJHJhdyRjbGllbnROYW1lIiwiX2l0ZW0kcmF3JHByb2plY3ROYW1lIiwiX2l0ZW0kcmF3JGZlZUlkIiwiX2l0ZW0kcmF3JGZhdGhlcklkIiwiX2l0ZW0kcmF3JGZhdGhlclRpdGxlIiwiX2l0ZW0kcmF3JHRvdGFsUHJveWVjIiwiX2l0ZW0kcmF3JG5hbWUiLCJfaXRlbSRyYXckcGljdHVyZSIsIl9pdGVtJHJhdyRwb3NpdGlvbk5hbSIsIl9pdGVtJHJhdyRlbWFpbCIsIl9lZGl0b3JSZWYkY3VycmVudDIiLCJtZW50aW9uIiwibGFiZWwiLCJwcmltYXJ5IiwibWV0YWRhdGEiLCJjbGllbnROYW1lIiwicHJvamVjdE5hbWUiLCJmZWVJZCIsImZhdGhlcklkIiwiZmF0aGVyVGl0bGUiLCJ0b3RhbFByb3llY3RvcyIsIm5hbWUiLCJwaWN0dXJlIiwicG9zaXRpb25OYW1lIiwiZW1haWwiLCJpbnNlcnRNZW50aW9uIiwiYWlDaGF0TWVudGlvblNlbGVjdCIsIlN0cmluZyIsImhhbmRsZVR5cGVDaGFuZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQzIiwic3luY1NraWxsVHJpZ2dlciIsIl9lZGl0b3JSZWYkY3VycmVudDQiLCJuZXh0UnVuTGVuZ3RoIiwic3luY1RyaWdnZXJBdFJ1bkxlbmd0aCIsImFpQ2hhdE1lbnRpb25UeXBlU3dpdGNoIiwiaGFuZGxlS2V5RG93biIsImUiLCJrZXkiLCJwcmV2ZW50RGVmYXVsdCIsIm1ldGFLZXkiLCJhbHRLZXkiLCJkZWx0YSIsIm5leHRJZHgiLCJwcmV2IiwidW5kZWZpbmVkIiwiaGFuZGxlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlIiwibW91c2VFdmVudCIsIl9wb3BvdmVyUmVmJGN1cnJlbnQiLCJfcG9wb3ZlckFuY2hvclJlZiRjdXIyIiwidGFyZ2V0IiwiY29udGFpbnMiLCJkb2N1bWVudCIsInByZXZJc0xvYWRpbmdNb3JlUmVmIiwicG9wb3Zlck5vZGUiLCJyZWYiLCJfZGVmaW5lUHJvcGVydHkiLCIkYm90dG9tIiwiJGxlZnQiLCIkd2lkdGgiLCIkekluZGV4Iiwib25Nb3VzZURvd24iLCJzdG9wUHJvcGFnYXRpb24iLCJjaGlsZHJlbiIsIm9uVHlwZUNoYW5nZSIsIm9uUmVhY2hMaXN0RW5kIiwia2V5Ym9hcmRIaW50IiwiZGVmYXVsdFZhbHVlIiwib25JdGVtU2VsZWN0ZWQiLCJvbkFjdGl2ZUluZGV4Q2hhbmdlIiwib25Nb3VzZU1vdmVJbkxpc3QiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlTWVudGlvblBvcG92ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtleWJvYXJkRXZlbnQsIFJlYWN0Tm9kZSwgUmVmT2JqZWN0LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbkVkaXRvckhhbmRsZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvQ29udGV4dE1lbnRpb25FZGl0b3InXG5pbXBvcnQge1xuICBDb250ZXh0TWVudGlvblBvcG92ZXIsXG4gIE1BSUFfVEFTS19QQU5FTF9PVkVSTEFZX0FUVFIsXG4gIFNDTVBBbmNob3IsXG59IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvQ29udGV4dE1lbnRpb25Qb3BvdmVyJ1xuaW1wb3J0IHsgdXNlTWFpYVRhc2tQYW5lbFpJbmRleCB9IGZyb20gJy4vdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4vdXNlVCdcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tY3ljbGVcbmltcG9ydCB7IEVudGl0eVNlYXJjaFNjb3BlLCB1c2VFbnRpdHlTZWFyY2ggfSBmcm9tICcuL3VzZUVudGl0eVNlYXJjaCdcbmltcG9ydCB7IHVzZU1lbnRpb25BbGxvd2VkVHlwZXMgfSBmcm9tICcuL3VzZU1lbnRpb25BbGxvd2VkVHlwZXMnXG5pbXBvcnQgeyB1c2VDYXJldFBvc2l0aW9uIH0gZnJvbSAnLi91c2VDYXJldFBvc2l0aW9uJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4vdXNlRXZlbnQnXG5pbXBvcnQgeyBDb250ZXh0RW50aXR5VHlwZSwgQ29udGV4dE1lbnRpb24sIENvbnRleHRNZW50aW9uSXRlbSB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHR5cGUgeyBTa2lsbCB9IGZyb20gJy4uL3R5cGVzL3NraWxsJ1xuXG5leHBvcnQgdHlwZSBVc2VNZW50aW9uUG9wb3Zlck9wdGlvbnMgPSB7XG4gIGVkaXRvclJlZjogUmVmT2JqZWN0PENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlPlxuICAvKipcbiAgICogTm9kbyBjdXlvIGFuY2hvIHkgYm9yZGUgc3VwZXJpb3IgZGVmaW5lbiBlbCBwb3BvdmVyIChwLiBlai4gd3JhcHBlciBkZWwgaW5wdXQgZW4gTUFJQSkuXG4gICAqIFNpIG5vIHNlIHBhc2EsIHNlIHVzYSBlbCByZWN0IGRlbCBjb250ZW50ZWRpdGFibGUgKGBnZXRFZGl0b3JDbGllbnRSZWN0YCkuXG4gICAqL1xuICBwb3BvdmVyQW5jaG9yUmVmPzogUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD5cbiAgLyoqIE92ZXJyaWRlIGRlbCBzZXQgZGUgdGFicyBwZXJtaXRpZGFzOyBzaSBubyBzZSBwYXNhIHNlIGRlcml2YSBkZWwgYWdlbnQuICovXG4gIGVuYWJsZWRUeXBlcz86IENvbnRleHRFbnRpdHlUeXBlW11cbiAgLyoqIFNraWxscyBpbnllY3RhZGFzIGRpcmVjdGFtZW50ZSAoZGV2L3Rlc3RpbmcpLiBTaSBzZSBwcm92ZWVuLCBzZSBvbWl0ZSBlbCBmZXRjaCBSRVNULiAqL1xuICBza2lsbHM/OiBTa2lsbFtdXG4gIC8qKiBDYWxsYmFjayBjdWFuZG8gZWwgdXN1YXJpbyBpbnNlcnRhIHVuYSBtZW50aW9uIHbDrWEgY2xpY2svdGVjbGFkby4gKi9cbiAgb25NZW50aW9uQWRkZWQ/OiAobWVudGlvbjogQ29udGV4dE1lbnRpb24pID0+IHZvaWRcbn1cblxuZXhwb3J0IHR5cGUgVXNlTWVudGlvblBvcG92ZXJSZXR1cm4gPSB7XG4gIHBvcG92ZXJPcGVuOiBib29sZWFuXG4gIC8qKlxuICAgKiBSZWluaWNpYSBlbCB0cmFja2luZyBkZSBgQUlfQ0hBVF9NRU5USU9OX09QRU5gIChwcmltZXJhIGFwZXJ0dXJhIHBvciBtZW5zYWplKS5cbiAgICogTGxhbWFyIHRyYXMgZW52aWFyIGVsIG1lbnNhamUgbyBhbCBjYW1iaWFyIGRlIGNvbnZlcnNhY2nDs24uXG4gICAqL1xuICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmc6ICgpID0+IHZvaWRcbiAgLyoqIFByb2Nlc2EgZWwgdHJpZ2dlciBwcm92ZW5pZW50ZSBkZWwgYENvbnRleHRNZW50aW9uRWRpdG9yLm9uSW5wdXRgLiAqL1xuICBoYW5kbGVUcmlnZ2VyOiAodHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmc7IGF0UnVuTGVuZ3RoOiBudW1iZXIgfSkgPT4gdm9pZFxuICAvKipcbiAgICogTWFuZWpvIGRlIHRlY2xhcyByZWxhdGl2YXMgYWwgcG9wb3ZlciAobmF2ZWdhY2nDs24sIHNlbGVjY2nDs24sIGNhbWJpbyBkZVxuICAgKiB0YWIgeSBlc2NhcGUpLiBEZXZ1ZWx2ZSBgdHJ1ZWAgc2kgY29uc3VtacOzIGxhIGtleSwgcGFyYSBxdWUgZWwgY29uc3VtZXJcbiAgICogcHVlZGEgZGVjaWRpciBzaSBzZWd1aXIgcHJvY2VzYW5kbyBvdHJhcyB0ZWNsYXMgKHAuZWouIEVudGVyIHBhcmEgZW52aWFyKS5cbiAgICovXG4gIGhhbmRsZUtleURvd246IChlOiBLZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4gYm9vbGVhblxuICAvKiogTm9kbyBkZWwgcG9wb3ZlcjsgZWwgY29uc3VtZXIgZGViZSBwb3J0YXJsbyBjb24gYGNyZWF0ZVBvcnRhbGAuICovXG4gIHBvcG92ZXJOb2RlOiBSZWFjdE5vZGUgfCBudWxsXG4gIC8qKiBDaWVycmEgZWwgcG9wb3ZlciB5IGxpbXBpYSBlbCBxdWVyeS4gKi9cbiAgY2xvc2U6ICgpID0+IHZvaWRcbn1cblxuY29uc3QgVFlQRV9UT19UUklHR0VSX1NFUVVFTkNFOiBQYXJ0aWFsPFJlY29yZDxDb250ZXh0RW50aXR5VHlwZSwgbnVtYmVyPj4gPSB7XG4gIHVzZXI6IDEsXG4gIHRhc2s6IDIsXG4gIHByb2plY3Q6IDMsXG59XG5cbmNvbnN0IGdldFR5cGVGcm9tVHJpZ2dlclNlcXVlbmNlID0gKFxuICBhdFJ1bkxlbmd0aDogbnVtYmVyLFxuICBhbGxvd2VkVHlwZXM6IENvbnRleHRFbnRpdHlUeXBlW10sXG4gIGRlZmF1bHRUeXBlOiBDb250ZXh0RW50aXR5VHlwZVxuKTogQ29udGV4dEVudGl0eVR5cGUgPT4ge1xuICBjb25zdCBub3JtYWxpemVkID0gTWF0aC5tYXgoMSwgTWF0aC5mbG9vcihhdFJ1bkxlbmd0aCkpXG4gIGNvbnN0IG1hcHBlZFR5cGUgPSAoT2JqZWN0LmVudHJpZXMoVFlQRV9UT19UUklHR0VSX1NFUVVFTkNFKS5maW5kKChbLCBsZW5dKSA9PiBsZW4gPT09IG5vcm1hbGl6ZWQpPy5bMF0gPz9cbiAgICBudWxsKSBhcyBDb250ZXh0RW50aXR5VHlwZSB8IG51bGxcbiAgaWYgKG1hcHBlZFR5cGUgJiYgYWxsb3dlZFR5cGVzLmluY2x1ZGVzKG1hcHBlZFR5cGUpKSByZXR1cm4gbWFwcGVkVHlwZVxuICBjb25zdCB0YWJJZHggPSBNYXRoLm1pbihNYXRoLm1heCgwLCBub3JtYWxpemVkIC0gMSksIGFsbG93ZWRUeXBlcy5sZW5ndGggLSAxKVxuICByZXR1cm4gYWxsb3dlZFR5cGVzW3RhYklkeF0gPz8gZGVmYXVsdFR5cGVcbn1cblxuY29uc3QgZ2V0VHJpZ2dlclNlcXVlbmNlRnJvbVR5cGUgPSAodHlwZTogQ29udGV4dEVudGl0eVR5cGUsIGFsbG93ZWRUeXBlczogQ29udGV4dEVudGl0eVR5cGVbXSk6IG51bWJlciA9PiB7XG4gIGNvbnN0IG1hcHBlZCA9IFRZUEVfVE9fVFJJR0dFUl9TRVFVRU5DRVt0eXBlXVxuICBpZiAobWFwcGVkKSByZXR1cm4gbWFwcGVkXG4gIGNvbnN0IGlkeCA9IGFsbG93ZWRUeXBlcy5pbmRleE9mKHR5cGUpXG4gIHJldHVybiBpZHggPj0gMCA/IGlkeCArIDEgOiAxXG59XG5cbi8qKlxuICogRGVyaXZhIGNsaWVudElkLCBwcm9qZWN0SWQsIGFnZW50RW50aXR5IHkgTUNQIGRlc2RlIGVsIGNvbnRleHRvIGdsb2JhbCAoaW5jbC5cbiAqIGBlbnRpdHlWYWx1ZXNgIHkgYGNoaXBzUHJvamVjdGApIHBhcmEgZmlsdHJhciByZWNlbnRzIHkgYsO6c3F1ZWRhIEdyYXBoUUwuXG4gKi9cbmNvbnN0IHVzZURlcml2ZWRTY29wZSA9ICgpOiBFbnRpdHlTZWFyY2hTY29wZSA9PiB7XG4gIGNvbnN0IGN0eCA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBjbGllbnRJZCA9IGN0eC5jbGllbnQ/LmlkID8/IGN0eC5lbnRpdHlWYWx1ZXM/LmNsaWVudElkID8/IG51bGxcbiAgY29uc3QgcHJvamVjdElkID0gY3R4LnByb2plY3Q/LmlkID8/IGN0eC5lbnRpdHlWYWx1ZXM/LnByb2plY3RJZCA/PyBjdHguY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgPz8gbnVsbFxuICBjb25zdCBhZ2VudEVudGl0eSA9IGN0eC5hZ2VudD8uZW50aXR5ID8/IG51bGxcbiAgY29uc3QgbWNwU2x1Z3NLZXkgPSAoY3R4LmFnZW50Py5jb25uZWN0b3JzPy5maW5kKGMgPT4gYy5ncm91cCA9PT0gJ01DUCcpPy5zbHVncyA/PyBbXSkuam9pbignfCcpXG5cbiAgY29uc3QgbWNwU2x1Z3MgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCByYXcgPSBjdHguYWdlbnQ/LmNvbm5lY3RvcnM/LmZpbmQoYyA9PiBjLmdyb3VwID09PSAnTUNQJyk/LnNsdWdzID8/IFtdXG4gICAgcmV0dXJuIFsuLi5uZXcgU2V0KHJhdy5maWx0ZXIoKHMpOiBzIGlzIHN0cmluZyA9PiB0eXBlb2YgcyA9PT0gJ3N0cmluZycgJiYgcy50cmltKCkubGVuZ3RoID4gMCkpXS5zb3J0KClcbiAgfSwgW21jcFNsdWdzS2V5XSlcblxuICByZXR1cm4gdXNlTWVtbzxFbnRpdHlTZWFyY2hTY29wZT4oXG4gICAgKCkgPT4gKHsgY2xpZW50SWQsIHByb2plY3RJZCwgbWNwU2x1Z3MsIGFnZW50RW50aXR5IH0pLFxuICAgIFtjbGllbnRJZCwgcHJvamVjdElkLCBtY3BTbHVncywgYWdlbnRFbnRpdHldIC8vIHNraWxscyBzZSBpbnllY3RhIGVuIHVzZU1lbnRpb25Qb3BvdmVyXG4gIClcbn1cblxuLyoqXG4gKiBFbmNhcHN1bGEgbGEgbMOzZ2ljYSBkZWwgcG9wb3ZlciBkZSBALW1lbnRpb25zIChlc3RhZG8sIGZldGNoIHBvciB0YWIsIGFuYWx5dGljcyxcbiAqIHBvc2ljaW9uYW1pZW50bykuIEVsIGNvbnN1bWVyIG1hbnRpZW5lIGVsIGVkaXRvciB5IGVsIGVudsOtbyBkZWwgbWVuc2FqZS5cbiAqIExvcyBmaWx0cm9zIGRlIGLDunNxdWVkYSB1c2FuIGB1c2VEZXJpdmVkU2NvcGVgOiBlc3BlY2lhbGlzdGEgcHJveWVjdG8gYWNvdGEgdGFyZWFzXG4gKiBhbCBgcHJvamVjdElkYCBkZWwgY29udGV4dG87IGVzcGVjaWFsaXN0YSBjbGllbnRlLCBwcm95ZWN0b3MgYWwgYGNsaWVudElkYCAoZW4gYGV4dHJhYCBkZSBzZWFyY2gpLlxuICovXG5leHBvcnQgY29uc3QgdXNlTWVudGlvblBvcG92ZXIgPSAoe1xuICBlZGl0b3JSZWYsXG4gIHBvcG92ZXJBbmNob3JSZWYsXG4gIGVuYWJsZWRUeXBlcyxcbiAgc2tpbGxzLFxuICBvbk1lbnRpb25BZGRlZCxcbn06IFVzZU1lbnRpb25Qb3BvdmVyT3B0aW9ucyk6IFVzZU1lbnRpb25Qb3BvdmVyUmV0dXJuID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgZXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgYWxsb3dlZFR5cGVzLCBkZWZhdWx0VHlwZSB9ID0gdXNlTWVudGlvbkFsbG93ZWRUeXBlcyhlbmFibGVkVHlwZXMpXG4gIGNvbnN0IG1lbnRpb25Qb3BvdmVyWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxMjAwLCAnb3ZlcmxheScpXG4gIGNvbnN0IFthY3RpdmVUeXBlLCBzZXRBY3RpdmVUeXBlXSA9IHVzZVN0YXRlPENvbnRleHRFbnRpdHlUeXBlPihkZWZhdWx0VHlwZSlcbiAgY29uc3QgW3BvcG92ZXJPcGVuLCBzZXRQb3BvdmVyT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3BvcG92ZXJQb3MsIHNldFBvcG92ZXJQb3NdID0gdXNlU3RhdGU8eyBib3R0b206IG51bWJlcjsgbGVmdDogbnVtYmVyOyB3aWR0aDogbnVtYmVyIH0+KHtcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICB3aWR0aDogMCxcbiAgfSlcbiAgY29uc3QgW2FjdGl2ZUluZGV4LCBzZXRBY3RpdmVJbmRleF0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbaXNLZXlib2FyZE5hdkFjdGl2ZSwgc2V0SXNLZXlib2FyZE5hdkFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgaGFzRW1pdHRlZE9wZW4gPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHBvcG92ZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBnZXRDYXJldFJlY3QgPSB1c2VDYXJldFBvc2l0aW9uKClcblxuICBjb25zdCBkZXJpdmVkU2NvcGUgPSB1c2VEZXJpdmVkU2NvcGUoKVxuICBjb25zdCBzY29wZSA9IHVzZU1lbW88RW50aXR5U2VhcmNoU2NvcGU+KFxuICAgICgpID0+IChza2lsbHMgPyB7IC4uLmRlcml2ZWRTY29wZSwgc2tpbGxzIH0gOiBkZXJpdmVkU2NvcGUpLFxuICAgIFtkZXJpdmVkU2NvcGUsIHNraWxsc11cbiAgKVxuICBjb25zdCB7XG4gICAgaXRlbXMsXG4gICAgbG9hZGluZyxcbiAgICBlcnJvcixcbiAgICBoaWRlUmVjZW50c0xhYmVsLFxuICAgIGhhc01vcmUsXG4gICAgaXNMb2FkaW5nTW9yZSxcbiAgICBsb2FkTW9yZSxcbiAgICBzZWFyY2hWYWx1ZSxcbiAgICB1cGRhdGVTZWFyY2hWYWx1ZSxcbiAgICBza2lsbHNDYXRhbG9nRW1wdHksXG4gIH0gPSB1c2VFbnRpdHlTZWFyY2goYWN0aXZlVHlwZSwgc2NvcGUpXG5cbiAgdXNlRWZmZWN0KCgpID0+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+XG4gICAgICAgIDxDb250ZXh0TWVudGlvblBvcG92ZXJcbiAgICAgICAgICBhbGxvd2VkVHlwZXM9e2FsbG93ZWRUeXBlc31cbiAgICAgICAgICBhY3RpdmVUeXBlPXthY3RpdmVUeXBlfVxuICAgICAgICAgIG9uVHlwZUNoYW5nZT17aGFuZGxlVHlwZUNoYW5nZX1cbiAgICAgICAgICBpdGVtcz17aXRlbXN9XG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgICAgaGlkZVJlY2VudHNMYWJlbD17aGlkZVJlY2VudHNMYWJlbH1cbiAgICAgICAgICBza2lsbHNDYXRhbG9nRW1wdHk9e3NraWxsc0NhdGFsb2dFbXB0eX1cbiAgICAgICAgICBoYXNNb3JlPXtoYXNNb3JlfVxuICAgICAgICAgIGlzTG9hZGluZ01vcmU9e2lzTG9hZGluZ01vcmV9XG4gICAgICAgICAgb25SZWFjaExpc3RFbmQ9e2xvYWRNb3JlfVxuICAgICAgICAgIHNlYXJjaFZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICBrZXlib2FyZEhpbnQ9e3QoJ2NvbnRleHRNZW50aW9uLmtleWJvYXJkSGludCcsIHtcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogJ05hdmVnYWNpw7NuIGVudHJlIHBlc3Rhw7FhczogQCwgQEAsIEBAQOKApiBlbiBvcmRlbi4gVGFtYmnDqW4gQWx0L0NtZCArIOKGkC/ihpInLFxuICAgICAgICAgIH0pfVxuICAgICAgICAgIG9uSXRlbVNlbGVjdGVkPXtpbnNlcnRTZWxlY3RlZEl0ZW19XG4gICAgICAgICAgYWN0aXZlSW5kZXg9e2FjdGl2ZUluZGV4fVxuICAgICAgICAgIG9uQWN0aXZlSW5kZXhDaGFuZ2U9e3NldEFjdGl2ZUluZGV4fVxuICAgICAgICAgIGlzS2V5Ym9hcmROYXZBY3RpdmU9e2lzS2V5Ym9hcmROYXZBY3RpdmV9XG4gICAgICAgICAgb25Nb3VzZU1vdmVJbkxpc3Q9eygpID0+IHNldElzS2V5Ym9hcmROYXZBY3RpdmUoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgPC9TQ01QQW5jaG9yPlxuICAgIClcbiAgfSwgW1xuICAgIHBvcG92ZXJPcGVuLFxuICAgIHBvcG92ZXJQb3MsXG4gICAgbWVudGlvblBvcG92ZXJaSW5kZXgsXG4gICAgYWxsb3dlZFR5cGVzLFxuICAgIGFjdGl2ZVR5cGUsXG4gICAgaGFuZGxlVHlwZUNoYW5nZSxcbiAgICBpdGVtcyxcbiAgICBsb2FkaW5nLFxuICAgIGVycm9yLFxuICAgIGhpZGVSZWNlbnRzTGFiZWwsXG4gICAgc2tpbGxzQ2F0YWxvZ0VtcHR5LFxuICAgIGhhc01vcmUsXG4gICAgaXNMb2FkaW5nTW9yZSxcbiAgICBsb2FkTW9yZSxcbiAgICBzZWFyY2hWYWx1ZSxcbiAgICBpbnNlcnRTZWxlY3RlZEl0ZW0sXG4gICAgYWN0aXZlSW5kZXgsXG4gICAgaXNLZXlib2FyZE5hdkFjdGl2ZSxcbiAgXSlcblxuICByZXR1cm4geyBwb3BvdmVyT3BlbiwgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nLCBoYW5kbGVUcmlnZ2VyLCBoYW5kbGVLZXlEb3duLCBwb3BvdmVyTm9kZSwgY2xvc2UgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLFNBQThDQSxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBRTlHLFNBQ0VDLHFCQUFxQixFQUNyQkMsNEJBQTRCLEVBQzVCQyxVQUFVLFFBQ0wsMkNBQTJDO0FBQ2xELFNBQVNDLHNCQUFzQixRQUFRLDBCQUEwQjtBQUNqRSxTQUFTQyxnQkFBZ0IsUUFBUSwyQkFBMkI7QUFDNUQsU0FBU0MsSUFBSSxRQUFRLFFBQVE7QUFDN0I7QUFDQSxTQUE0QkMsZUFBZSxRQUFRLG1CQUFtQjtBQUN0RSxTQUFTQyxzQkFBc0IsUUFBUSwwQkFBMEI7QUFDakUsU0FBU0MsZ0JBQWdCLFFBQVEsb0JBQW9CO0FBQ3JELFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLFlBQVk7QUFBQSxTQUFBQyxHQUFBLElBQUFDLElBQUE7QUF3QzdDLElBQU1DLHdCQUFvRSxHQUFHO0VBQzNFQyxJQUFJLEVBQUUsQ0FBQztFQUNQQyxJQUFJLEVBQUUsQ0FB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LE9BQUlBLENBQUMsQ0FBQzRCLGVBQWUsQ0FBQyxDQUFDO01BQUEsQ0FBQztNQUFBQyxRQUFBLGVBRXRDMU8sSUFBQSxDQUFDWixxQkFBcUI7UUFDcEJtQixZQUFZLEVBQUVBLFlBQWE7UUFDM0JpRixVQUFVLEVBQUVBLFVBQVc7UUFDdkJtSixZQUFZLEVBQUV0QyxnQkFBaUI7UUFDL0JqRixLQUFLLEVBQUVBLEtBQU07UUFDYkMsT0FBTyxFQUFFQSxPQUFRO1FBQ2pCQyxLQUFLLEVBQUVBLEtBQU07UUFDYkMsZ0JBQWdCLEVBQUVBLGdCQUFpQjtRQUNuQ00sa0JBQWtCLEVBQUVBLGtCQUFtQjtRQUN2Q0wsT0FBTyxFQUFFQSxPQUFRO1FBQ2pCQyxhQUFhLEVBQUVBLGFBQWM7UUFDN0JtSCxjQUFjLEVBQUVsSCxRQUFTO1FBQ3pCQyxXQUFXLEVBQUVBLFdBQVk7UUFDekJrSCxZQUFZLEVBQUUzSixDQUFDLENBQUMsNkJBQTZCLEVBQUU7VUFDN0M0SixZQUFZLEVBQUU7UUFDaEIsQ0FBQyxDQUFFO1FBQ0hDLGNBQWMsRUFBRXpFLGtCQUFtQjtRQUNuQy9ELFdBQVcsRUFBRUEsV0FBWTtRQUN6QnlJLG1CQUFtQixFQUFFeEksY0FBZTtRQUNwQ0csbUJBQW1CLEVBQUVBLG1CQUFvQjtRQUN6Q3NJLGlCQUFpQixFQUFFLFNBQW5CQSxpQkFBaUJBLENBQUE7VUFBQSxPQUFRckksc0JBQXNCLENBQUMsS0FBSyxDQUFDO1FBQUE7TUFBQyxDQUN4RDtJQUFDLEVBQ1EsQ0FBQztFQUVqQixDQUFDLEVBQUUsQ0FDRGhCLFdBQVcsRUFDWE8sVUFBVSxFQUNWZCxvQkFBb0IsRUFDcEI5RSxZQUFZLEVBQ1ppRixVQUFVLEVBQ1Y2RyxnQkFBZ0IsRUFDaEJqRixLQUFLLEVBQ0xDLE9BQU8sRUFDUEMsS0FBSyxFQUNMQyxnQkFBZ0IsRUFDaEJNLGtCQUFrQixFQUNsQkwsT0FBTyxFQUNQQyxhQUFhLEVBQ2JDLFFBQVEsRUFDUkMsV0FBVyxFQUNYMkMsa0JBQWtCLEVBQ2xCL0QsV0FBVyxFQUNYSSxtQkFBbUIsQ0FDcEIsQ0FBQztFQUVGLE9BQU87SUFBRWYsV0FBVyxFQUFYQSxXQUFXO0lBQUVzRCx3QkFBd0IsRUFBeEJBLHdCQUF3QjtJQUFFRSxhQUFhLEVBQWJBLGFBQWE7SUFBRXdELGFBQWEsRUFBYkEsYUFBYTtJQUFFcUIsV0FBVyxFQUFYQSxXQUFXO0lBQUU5RSxLQUFLLEVBQUxBO0VBQU0sQ0FBQztBQUNwRyxDQUFDIiwiaWdub3JlTGlzdCI6W119
368
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNvbnRleHRNZW50aW9uUG9wb3ZlciIsIk1BSUFfVEFTS19QQU5FTF9PVkVSTEFZX0FUVFIiLCJTQ01QQW5jaG9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VUIiwidXNlRW50aXR5U2VhcmNoIiwidXNlTWVudGlvbkFsbG93ZWRUeXBlcyIsInVzZUNhcmV0UG9zaXRpb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsImdldEF0UnVuVGFiVHlwZXMiLCJnZXRUcmlnZ2VyU2VxdWVuY2VGcm9tVHlwZSIsImdldFR5cGVGcm9tVHJpZ2dlclNlcXVlbmNlIiwianN4IiwiX2pzeCIsInVzZURlcml2ZWRTY29wZSIsIl9yZWYiLCJfY3R4JGNsaWVudCRpZCIsIl9jdHgkY2xpZW50IiwiX2N0eCRlbnRpdHlWYWx1ZXMiLCJfcmVmMiIsIl9yZWYzIiwiX2N0eCRwcm9qZWN0JGlkIiwiX2N0eCRwcm9qZWN0IiwiX2N0eCRlbnRpdHlWYWx1ZXMyIiwiX2N0eCRjaGlwc1Byb2plY3QiLCJfY3R4JGFnZW50JGVudGl0eSIsIl9jdHgkYWdlbnQiLCJfY3R4JGFnZW50JGNvbm5lY3RvcnMiLCJfY3R4JGFnZW50MiIsImN0eCIsImNsaWVudElkIiwiY2xpZW50IiwiaWQiLCJlbnRpdHlWYWx1ZXMiLCJwcm9qZWN0SWQiLCJwcm9qZWN0IiwiY2hpcHNQcm9qZWN0IiwiYWdlbnRFbnRpdHkiLCJhZ2VudCIsImVudGl0eSIsIm1jcFNsdWdzS2V5IiwiY29ubmVjdG9ycyIsImZpbmQiLCJjIiwiZ3JvdXAiLCJzbHVncyIsImpvaW4iLCJtY3BTbHVncyIsIl9jdHgkYWdlbnQkY29ubmVjdG9yczIiLCJfY3R4JGFnZW50MyIsInJhdyIsIl90b0NvbnN1bWFibGVBcnJheSIsIlNldCIsImZpbHRlciIsInMiLCJ0cmltIiwibGVuZ3RoIiwic29ydCIsInVzZU1lbnRpb25Qb3BvdmVyIiwiX3JlZjQiLCJlZGl0b3JSZWYiLCJwb3BvdmVyQW5jaG9yUmVmIiwiZW5hYmxlZFR5cGVzIiwic2tpbGxzIiwib25NZW50aW9uQWRkZWQiLCJfdXNlVCIsInQiLCJldmVudCIsIl91c2VNZW50aW9uQWxsb3dlZFR5cCIsImFsbG93ZWRUeXBlcyIsImRlZmF1bHRUeXBlIiwibWVudGlvblBvcG92ZXJaSW5kZXgiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJhY3RpdmVUeXBlIiwic2V0QWN0aXZlVHlwZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwicG9wb3Zlck9wZW4iLCJzZXRQb3BvdmVyT3BlbiIsIl91c2VTdGF0ZTUiLCJib3R0b20iLCJsZWZ0Iiwid2lkdGgiLCJfdXNlU3RhdGU2IiwicG9wb3ZlclBvcyIsInNldFBvcG92ZXJQb3MiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImFjdGl2ZUluZGV4Iiwic2V0QWN0aXZlSW5kZXgiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsImlzS2V5Ym9hcmROYXZBY3RpdmUiLCJzZXRJc0tleWJvYXJkTmF2QWN0aXZlIiwiaGFzRW1pdHRlZE9wZW4iLCJwb3BvdmVyUmVmIiwiZ2V0Q2FyZXRSZWN0IiwiZGVyaXZlZFNjb3BlIiwic2NvcGUiLCJfb2JqZWN0U3ByZWFkIiwiX3VzZUVudGl0eVNlYXJjaCIsIml0ZW1zIiwibG9hZGluZyIsImVycm9yIiwiaGlkZVJlY2VudHNMYWJlbCIsImhhc01vcmUiLCJpc0xvYWRpbmdNb3JlIiwibG9hZE1vcmUiLCJzZWFyY2hWYWx1ZSIsInVwZGF0ZVNlYXJjaFZhbHVlIiwic2tpbGxzQ2F0YWxvZ0VtcHR5IiwiaW5jbHVkZXMiLCJwb3NpdGlvblBvcG92ZXIiLCJfcG9wb3ZlckFuY2hvclJlZiRjdXIiLCJfZWRpdG9yUmVmJGN1cnJlbnQkZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQiLCJfZWRpdG9yUmVmJGN1cnJlbnQkZ2UyIiwiZnJvbUFuY2hvciIsImN1cnJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJmcm9tRWRpdG9yIiwiZ2V0RWRpdG9yQ2xpZW50UmVjdCIsImNhbGwiLCJyZWN0IiwiY2FyZXQiLCJ2aWV3cG9ydEgiLCJ3aW5kb3ciLCJpbm5lckhlaWdodCIsInZpZXdwb3J0VyIsImlubmVyV2lkdGgiLCJmYWxsYmFja1ciLCJNYXRoIiwibWF4IiwibWluIiwidG9wIiwicmVzZXRNZW50aW9uT3BlblRyYWNraW5nIiwiY2xvc2UiLCJoYW5kbGVUcmlnZ2VyIiwidHJpZ2dlciIsImFjdGl2ZSIsImlzU2tpbGxUcmlnZ2VyIiwiYXRSdW5MZW5ndGgiLCJxdWVyeSIsInN0YXJ0c1dpdGgiLCJhdFJ1blRhYlR5cGVzIiwiYXRSdW5UeXBlc09yQWxsIiwiaXNTbGFzaFRyaWdnZXIiLCJ0eXBlRnJvbUF0IiwiZWZmZWN0aXZlUXVlcnkiLCJzbGljZSIsIm92ZXJmbG93QXRDb3VudCIsImVmZmVjdGl2ZUF0UnVuTGVuZ3RoIiwiY29uY2F0IiwicmVwZWF0IiwiYWlDaGF0TWVudGlvbk9wZW4iLCJ0eXBlIiwiaW5zZXJ0U2VsZWN0ZWRJdGVtIiwiaXRlbSIsIl9pdGVtJHJhdyRjbGllbnRJZCIsIl9pdGVtJHJhdyRjbGllbnROYW1lIiwiX2l0ZW0kcmF3JHByb2plY3ROYW1lIiwiX2l0ZW0kcmF3JGZlZUlkIiwiX2l0ZW0kcmF3JGZhdGhlcklkIiwiX2l0ZW0kcmF3JGZhdGhlclRpdGxlIiwiX2l0ZW0kcmF3JHRvdGFsUHJveWVjIiwiX2l0ZW0kcmF3JG5hbWUiLCJfaXRlbSRyYXckcGljdHVyZSIsIl9pdGVtJHJhdyRwb3NpdGlvbk5hbSIsIl9pdGVtJHJhdyRlbWFpbCIsIl9lZGl0b3JSZWYkY3VycmVudDIiLCJtZW50aW9uIiwibGFiZWwiLCJwcmltYXJ5IiwibWV0YWRhdGEiLCJjbGllbnROYW1lIiwicHJvamVjdE5hbWUiLCJmZWVJZCIsImZhdGhlcklkIiwiZmF0aGVyVGl0bGUiLCJ0b3RhbFByb3llY3RvcyIsIm5hbWUiLCJwaWN0dXJlIiwicG9zaXRpb25OYW1lIiwiZW1haWwiLCJpbnNlcnRNZW50aW9uIiwiYWlDaGF0TWVudGlvblNlbGVjdCIsIlN0cmluZyIsImhhbmRsZVR5cGVDaGFuZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQzIiwic3luY1NraWxsVHJpZ2dlciIsIl9lZGl0b3JSZWYkY3VycmVudDQiLCJuZXh0UnVuTGVuZ3RoIiwiZW50aXR5VHlwZSIsInN5bmNUcmlnZ2VyQXRSdW5MZW5ndGgiLCJhaUNoYXRNZW50aW9uVHlwZVN3aXRjaCIsImhhbmRsZUtleURvd24iLCJlIiwia2V5IiwicHJldmVudERlZmF1bHQiLCJtZXRhS2V5IiwiYWx0S2V5IiwiaWR4IiwiaW5kZXhPZiIsImRlbHRhIiwibmV4dElkeCIsInByZXYiLCJ1bmRlZmluZWQiLCJoYW5kbGVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVQb2ludGVyRG93bk91dHNpZGUiLCJtb3VzZUV2ZW50IiwiX3BvcG92ZXJSZWYkY3VycmVudCIsIl9wb3BvdmVyQW5jaG9yUmVmJGN1cjIiLCJ0YXJnZXQiLCJjb250YWlucyIsImRvY3VtZW50IiwicHJldklzTG9hZGluZ01vcmVSZWYiLCJwb3BvdmVyTm9kZSIsInJlZiIsIl9kZWZpbmVQcm9wZXJ0eSIsIiRib3R0b20iLCIkbGVmdCIsIiR3aWR0aCIsIiR6SW5kZXgiLCJvbk1vdXNlRG93biIsInN0b3BQcm9wYWdhdGlvbiIsImNoaWxkcmVuIiwib25UeXBlQ2hhbmdlIiwib25SZWFjaExpc3RFbmQiLCJrZXlib2FyZEhpbnQiLCJkZWZhdWx0VmFsdWUiLCJvbkl0ZW1TZWxlY3RlZCIsIm9uQWN0aXZlSW5kZXhDaGFuZ2UiLCJvbk1vdXNlTW92ZUluTGlzdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VNZW50aW9uUG9wb3Zlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2V5Ym9hcmRFdmVudCwgUmVhY3ROb2RlLCBSZWZPYmplY3QsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9hdG9tcy9Db250ZXh0TWVudGlvbkVkaXRvcidcbmltcG9ydCB7XG4gIENvbnRleHRNZW50aW9uUG9wb3ZlcixcbiAgTUFJQV9UQVNLX1BBTkVMX09WRVJMQVlfQVRUUixcbiAgU0NNUEFuY2hvcixcbn0gZnJvbSAnLi4vY29tcG9uZW50cy9hdG9tcy9Db250ZXh0TWVudGlvblBvcG92ZXInXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi91c2VUJ1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1jeWNsZVxuaW1wb3J0IHsgRW50aXR5U2VhcmNoU2NvcGUsIHVzZUVudGl0eVNlYXJjaCB9IGZyb20gJy4vdXNlRW50aXR5U2VhcmNoJ1xuaW1wb3J0IHsgdXNlTWVudGlvbkFsbG93ZWRUeXBlcyB9IGZyb20gJy4vdXNlTWVudGlvbkFsbG93ZWRUeXBlcydcbmltcG9ydCB7IHVzZUNhcmV0UG9zaXRpb24gfSBmcm9tICcuL3VzZUNhcmV0UG9zaXRpb24nXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi91c2VFdmVudCdcbmltcG9ydCB7IENvbnRleHRFbnRpdHlUeXBlLCBDb250ZXh0TWVudGlvbiwgQ29udGV4dE1lbnRpb25JdGVtIH0gZnJvbSAnLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgdHlwZSB7IFNraWxsIH0gZnJvbSAnLi4vdHlwZXMvc2tpbGwnXG5pbXBvcnQge1xuICBnZXRBdFJ1blRhYlR5cGVzLFxuICBnZXRUcmlnZ2VyU2VxdWVuY2VGcm9tVHlwZSxcbiAgZ2V0VHlwZUZyb21UcmlnZ2VyU2VxdWVuY2UsXG59IGZyb20gJy4uL3V0aWxzL2NvbnRleHRNZW50aW9uVHJpZ2dlcnMnXG5cbmV4cG9ydCB0eXBlIFVzZU1lbnRpb25Qb3BvdmVyT3B0aW9ucyA9IHtcbiAgZWRpdG9yUmVmOiBSZWZPYmplY3Q8Q29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGU+XG4gIC8qKlxuICAgKiBOb2RvIGN1eW8gYW5jaG8geSBib3JkZSBzdXBlcmlvciBkZWZpbmVuIGVsIHBvcG92ZXIgKHAuIGVqLiB3cmFwcGVyIGRlbCBpbnB1dCBlbiBNQUlBKS5cbiAgICogU2kgbm8gc2UgcGFzYSwgc2UgdXNhIGVsIHJlY3QgZGVsIGNvbnRlbnRlZGl0YWJsZSAoYGdldEVkaXRvckNsaWVudFJlY3RgKS5cbiAgICovXG4gIHBvcG92ZXJBbmNob3JSZWY/OiBSZWZPYmplY3Q8SFRNTEVsZW1lbnQgfCBudWxsPlxuICAvKiogT3ZlcnJpZGUgZGVsIHNldCBkZSB0YWJzIHBlcm1pdGlkYXM7IHNpIG5vIHNlIHBhc2Egc2UgZGVyaXZhIGRlbCBhZ2VudC4gKi9cbiAgZW5hYmxlZFR5cGVzPzogQ29udGV4dEVudGl0eVR5cGVbXVxuICAvKiogU2tpbGxzIGlueWVjdGFkYXMgZGlyZWN0YW1lbnRlIChkZXYvdGVzdGluZykuIFNpIHNlIHByb3ZlZW4sIHNlIG9taXRlIGVsIGZldGNoIFJFU1QuICovXG4gIHNraWxscz86IFNraWxsW11cbiAgLyoqIENhbGxiYWNrIGN1YW5kbyBlbCB1c3VhcmlvIGluc2VydGEgdW5hIG1lbnRpb24gdsOtYSBjbGljay90ZWNsYWRvLiAqL1xuICBvbk1lbnRpb25BZGRlZD86IChtZW50aW9uOiBDb250ZXh0TWVudGlvbikgPT4gdm9pZFxufVxuXG5leHBvcnQgdHlwZSBVc2VNZW50aW9uUG9wb3ZlclJldHVybiA9IHtcbiAgcG9wb3Zlck9wZW46IGJvb2xlYW5cbiAgLyoqXG4gICAqIFJlaW5pY2lhIGVsIHRyYWNraW5nIGRlIGBBSV9DSEFUX01FTlRJT05fT1BFTmAgKHByaW1lcmEgYXBlcnR1cmEgcG9yIG1lbnNhamUpLlxuICAgKiBMbGFtYXIgdHJhcyBlbnZpYXIgZWwgbWVuc2FqZSBvIGFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzbi5cbiAgICovXG4gIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZzogKCkgPT4gdm9pZFxuICAvKiogUHJvY2VzYSBlbCB0cmlnZ2VyIHByb3ZlbmllbnRlIGRlbCBgQ29udGV4dE1lbnRpb25FZGl0b3Iub25JbnB1dGAuICovXG4gIGhhbmRsZVRyaWdnZXI6ICh0cmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZzsgYXRSdW5MZW5ndGg6IG51bWJlciB9KSA9PiB2b2lkXG4gIC8qKlxuICAgKiBNYW5lam8gZGUgdGVjbGFzIHJlbGF0aXZhcyBhbCBwb3BvdmVyIChuYXZlZ2FjacOzbiwgc2VsZWNjacOzbiwgY2FtYmlvIGRlXG4gICAqIHRhYiB5IGVzY2FwZSkuIERldnVlbHZlIGB0cnVlYCBzaSBjb25zdW1pw7MgbGEga2V5LCBwYXJhIHF1ZSBlbCBjb25zdW1lclxuICAgKiBwdWVkYSBkZWNpZGlyIHNpIHNlZ3VpciBwcm9jZXNhbmRvIG90cmFzIHRlY2xhcyAocC5lai4gRW50ZXIgcGFyYSBlbnZpYXIpLlxuICAgKi9cbiAgaGFuZGxlS2V5RG93bjogKGU6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiBib29sZWFuXG4gIC8qKiBOb2RvIGRlbCBwb3BvdmVyOyBlbCBjb25zdW1lciBkZWJlIHBvcnRhcmxvIGNvbiBgY3JlYXRlUG9ydGFsYC4gKi9cbiAgcG9wb3Zlck5vZGU6IFJlYWN0Tm9kZSB8IG51bGxcbiAgLyoqIENpZXJyYSBlbCBwb3BvdmVyIHkgbGltcGlhIGVsIHF1ZXJ5LiAqL1xuICBjbG9zZTogKCkgPT4gdm9pZFxufVxuXG4vKipcbiAqIERlcml2YSBjbGllbnRJZCwgcHJvamVjdElkLCBhZ2VudEVudGl0eSB5IE1DUCBkZXNkZSBlbCBjb250ZXh0byBnbG9iYWwgKGluY2wuXG4gKiBgZW50aXR5VmFsdWVzYCB5IGBjaGlwc1Byb2plY3RgKSBwYXJhIGZpbHRyYXIgcmVjZW50cyB5IGLDunNxdWVkYSBHcmFwaFFMLlxuICovXG5jb25zdCB1c2VEZXJpdmVkU2NvcGUgPSAoKTogRW50aXR5U2VhcmNoU2NvcGUgPT4ge1xuICBjb25zdCBjdHggPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgY2xpZW50SWQgPSBjdHguY2xpZW50Py5pZCA/PyBjdHguZW50aXR5VmFsdWVzPy5jbGllbnRJZCA/PyBudWxsXG4gIGNvbnN0IHByb2plY3RJZCA9IGN0eC5wcm9qZWN0Py5pZCA/PyBjdHguZW50aXR5VmFsdWVzPy5wcm9qZWN0SWQgPz8gY3R4LmNoaXBzUHJvamVjdD8ucHJvamVjdElkID8/IG51bGxcbiAgY29uc3QgYWdlbnRFbnRpdHkgPSBjdHguYWdlbnQ/LmVudGl0eSA/PyBudWxsXG4gIGNvbnN0IG1jcFNsdWdzS2V5ID0gKGN0eC5hZ2VudD8uY29ubmVjdG9ycz8uZmluZChjID0+IGMuZ3JvdXAgPT09ICdNQ1AnKT8uc2x1Z3MgPz8gW10pLmpvaW4oJ3wnKVxuXG4gIGNvbnN0IG1jcFNsdWdzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgcmF3ID0gY3R4LmFnZW50Py5jb25uZWN0b3JzPy5maW5kKGMgPT4gYy5ncm91cCA9PT0gJ01DUCcpPy5zbHVncyA/PyBbXVxuICAgIHJldHVybiBbLi4ubmV3IFNldChyYXcuZmlsdGVyKChzKTogcyBpcyBzdHJpbmcgPT4gdHlwZW9mIHMgPT09ICdzdHJpbmcnICYmIHMudHJpbSgpLmxlbmd0aCA+IDApKV0uc29ydCgpXG4gIH0sIFttY3BTbHVnc0tleV0pXG5cbiAgcmV0dXJuIHVzZU1lbW88RW50aXR5U2VhcmNoU2NvcGU+KFxuICAgICgpID0+ICh7IGNsaWVudElkLCBwcm9qZWN0SWQsIG1jcFNsdWdzLCBhZ2VudEVudGl0eSB9KSxcbiAgICBbY2xpZW50SWQsIHByb2plY3RJZCwgbWNwU2x1Z3MsIGFnZW50RW50aXR5XSAvLyBza2lsbHMgc2UgaW55ZWN0YSBlbiB1c2VNZW50aW9uUG9wb3ZlclxuICApXG59XG5cbi8qKlxuICogRW5jYXBzdWxhIGxhIGzDs2dpY2EgZGVsIHBvcG92ZXIgZGUgQC1tZW50aW9ucyAoZXN0YWRvLCBmZXRjaCBwb3IgdGFiLCBhbmFseXRpY3MsXG4gKiBwb3NpY2lvbmFtaWVudG8pLiBFbCBjb25zdW1lciBtYW50aWVuZSBlbCBlZGl0b3IgeSBlbCBlbnbDrW8gZGVsIG1lbnNhamUuXG4gKiBMb3MgZmlsdHJvcyBkZSBiw7pzcXVlZGEgdXNhbiBgdXNlRGVyaXZlZFNjb3BlYDogZXNwZWNpYWxpc3RhIHByb3llY3RvIGFjb3RhIHRhcmVhc1xuICogYWwgYHByb2plY3RJZGAgZGVsIGNvbnRleHRvOyBlc3BlY2lhbGlzdGEgY2xpZW50ZSwgcHJveWVjdG9zIGFsIGBjbGllbnRJZGAgKGVuIGBleHRyYWAgZGUgc2VhcmNoKS5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZU1lbnRpb25Qb3BvdmVyID0gKHtcbiAgZWRpdG9yUmVmLFxuICBwb3BvdmVyQW5jaG9yUmVmLFxuICBlbmFibGVkVHlwZXMsXG4gIHNraWxscyxcbiAgb25NZW50aW9uQWRkZWQsXG59OiBVc2VNZW50aW9uUG9wb3Zlck9wdGlvbnMpOiBVc2VNZW50aW9uUG9wb3ZlclJldHVybiA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IGV2ZW50ID0gdXNlRXZlbnQoKVxuICBjb25zdCB7IGFsbG93ZWRUeXBlcywgZGVmYXVsdFR5cGUgfSA9IHVzZU1lbnRpb25BbGxvd2VkVHlwZXMoZW5hYmxlZFR5cGVzKVxuICBjb25zdCBtZW50aW9uUG9wb3ZlclpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTIwMCwgJ292ZXJsYXknKVxuICBjb25zdCBbYWN0aXZlVHlwZSwgc2V0QWN0aXZlVHlwZV0gPSB1c2VTdGF0ZTxDb250ZXh0RW50aXR5VHlwZT4oZGVmYXVsdFR5cGUpXG4gIGNvbnN0IFtwb3BvdmVyT3Blbiwgc2V0UG9wb3Zlck9wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtwb3BvdmVyUG9zLCBzZXRQb3BvdmVyUG9zXSA9IHVzZVN0YXRlPHsgYm90dG9tOiBudW1iZXI7IGxlZnQ6IG51bWJlcjsgd2lkdGg6IG51bWJlciB9Pih7XG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDAsXG4gICAgd2lkdGg6IDAsXG4gIH0pXG4gIGNvbnN0IFthY3RpdmVJbmRleCwgc2V0QWN0aXZlSW5kZXhdID0gdXNlU3RhdGUoMClcbiAgY29uc3QgW2lzS2V5Ym9hcmROYXZBY3RpdmUsIHNldElzS2V5Ym9hcmROYXZBY3RpdmVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IGhhc0VtaXR0ZWRPcGVuID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBwb3BvdmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbClcbiAgY29uc3QgZ2V0Q2FyZXRSZWN0ID0gdXNlQ2FyZXRQb3NpdGlvbigpXG5cbiAgY29uc3QgZGVyaXZlZFNjb3BlID0gdXNlRGVyaXZlZFNjb3BlKClcbiAgY29uc3Qgc2NvcGUgPSB1c2VNZW1vPEVudGl0eVNlYXJjaFNjb3BlPihcbiAgICAoKSA9PiAoc2tpbGxzID8geyAuLi5kZXJpdmVkU2NvcGUsIHNraWxscyB9IDogZGVyaXZlZFNjb3BlKSxcbiAgICBbZGVyaXZlZFNjb3BlLCBza2lsbHNdXG4gIClcbiAgY29uc3Qge1xuICAgIGl0ZW1zLFxuICAgIGxvYWRpbmcsXG4gICAgZXJyb3IsXG4gICAgaGlkZVJlY2VudHNMYWJlbCxcbiAgICBoYXNNb3JlLFxuICAgIGlzTG9hZGluZ01vcmUsXG4gICAgbG9hZE1vcmUsXG4gICAgc2VhcmNoVmFsdWUsXG4gICAgdXBkYXRlU2VhcmNoVmFsdWUsXG4gICAgc2tpbGxzQ2F0YWxvZ0VtcHR5LFxuICB9ID0gdXNlRW50aXR5U2VhcmNoKGFjdGl2ZVR5cGUsIHNjb3BlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFhbGxvd2VkVHlwZXMuaW5jbHVkZXMoYWN0aXZlVHlwZSkpIHtcbiAgICAgIHNldEFjdGl2ZVR5cGUoZGVmYXVsdFR5cGUpXG4gICAgfVxuICB9LCBbYWxsb3dlZFR5cGVzLCBhY3RpdmVUeXBlLCBkZWZhdWx0VHlwZV0pXG5cbiAgY29uc3QgcG9zaXRpb25Qb3BvdmVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGZyb21BbmNob3IgPSBwb3BvdmVyQW5jaG9yUmVmPy5jdXJyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IGZyb21FZGl0b3IgPSBlZGl0b3JSZWYuY3VycmVudD8uZ2V0RWRpdG9yQ2xpZW50UmVjdD8uKCkgPz8gbnVsbFxuICAgIGNvbnN0IHJlY3QgPSBmcm9tQW5jaG9yID8/IGZyb21FZGl0b3JcbiAgICBpZiAoIXJlY3QgfHwgcmVjdC53aWR0aCA8PSAwKSB7XG4gICAgICBjb25zdCBjYXJldCA9IGdldENhcmV0UmVjdCgpXG4gICAgICBpZiAoIWNhcmV0KSByZXR1cm5cbiAgICAgIGNvbnN0IHZpZXdwb3J0SCA9IHdpbmRvdy5pbm5lckhlaWdodFxuICAgICAgY29uc3Qgdmlld3BvcnRXID0gd2luZG93LmlubmVyV2lkdGhcbiAgICAgIGNvbnN0IGZhbGxiYWNrVyA9IDMyMFxuICAgICAgY29uc3QgbGVmdCA9IE1hdGgubWF4KDgsIE1hdGgubWluKHZpZXdwb3J0VyAtIGZhbGxiYWNrVyAtIDgsIGNhcmV0LmxlZnQpKVxuICAgICAgc2V0UG9wb3ZlclBvcyh7XG4gICAgICAgIHdpZHRoOiBmYWxsYmFja1csXG4gICAgICAgIGxlZnQsXG4gICAgICAgIGJvdHRvbTogdmlld3BvcnRIIC0gY2FyZXQudG9wICsgNCxcbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCB2aWV3cG9ydFcgPSB3aW5kb3cuaW5uZXJXaWR0aFxuICAgIGNvbnN0IHZpZXdwb3J0SCA9IHdpbmRvdy5pbm5lckhlaWdodFxuICAgIGNvbnN0IHsgd2lkdGggfSA9IHJlY3RcbiAgICBjb25zdCBsZWZ0ID0gTWF0aC5tYXgoOCwgTWF0aC5taW4odmlld3BvcnRXIC0gd2lkdGggLSA4LCByZWN0LmxlZnQpKVxuICAgIC8qKiBQb3BvdmVyIHNpZW1wcmUgYXJyaWJhIGRlbCBpbnB1dDogYm9yZGUgaW5mZXJpb3IgZGVsIHBvcG92ZXIgfjRweCBzb2JyZSBlbCBib3JkZSBzdXBlcmlvciBkZWwgYW5jbGEuICovXG4gICAgc2V0UG9wb3ZlclBvcyh7XG4gICAgICB3aWR0aCxcbiAgICAgIGxlZnQsXG4gICAgICBib3R0b206IHZpZXdwb3J0SCAtIHJlY3QudG9wICsgNCxcbiAgICB9KVxuICB9LCBbcG9wb3ZlckFuY2hvclJlZiwgZWRpdG9yUmVmLCBnZXRDYXJldFJlY3RdKVxuXG4gIGNvbnN0IHJlc2V0TWVudGlvbk9wZW5UcmFja2luZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBoYXNFbWl0dGVkT3Blbi5jdXJyZW50ID0gZmFsc2VcbiAgfSwgW10pXG5cbiAgY29uc3QgY2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0UG9wb3Zlck9wZW4oZmFsc2UpXG4gICAgdXBkYXRlU2VhcmNoVmFsdWUoJycpXG4gIH0sIFt1cGRhdGVTZWFyY2hWYWx1ZV0pXG5cbiAgY29uc3QgaGFuZGxlVHJpZ2dlciA9IHVzZUNhbGxiYWNrKFxuICAgICh0cmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZzsgYXRSdW5MZW5ndGg6IG51bWJlciB9KSA9PiB7XG4gICAgICBpZiAoYWxsb3dlZFR5cGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAocG9wb3Zlck9wZW4pIGNsb3NlKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmICh0cmlnZ2VyLmFjdGl2ZSkge1xuICAgICAgICBjb25zdCBpc1NraWxsVHJpZ2dlciA9XG4gICAgICAgICAgYWxsb3dlZFR5cGVzLmluY2x1ZGVzKCdza2lsbCcpICYmIHRyaWdnZXIuYXRSdW5MZW5ndGggPT09IDEgJiYgdHJpZ2dlci5xdWVyeS5zdGFydHNXaXRoKCcvJylcbiAgICAgICAgY29uc3QgYXRSdW5UYWJUeXBlcyA9IGdldEF0UnVuVGFiVHlwZXMoYWxsb3dlZFR5cGVzKVxuICAgICAgICBjb25zdCBhdFJ1blR5cGVzT3JBbGwgPSBhdFJ1blRhYlR5cGVzLmxlbmd0aCA+IDAgPyBhdFJ1blRhYlR5cGVzIDogYWxsb3dlZFR5cGVzLmZpbHRlcih0ID0+IHQgIT09ICdza2lsbCcpXG4gICAgICAgIGNvbnN0IGlzU2xhc2hUcmlnZ2VyID0gdHJpZ2dlci5hdFJ1bkxlbmd0aCA8IDBcblxuICAgICAgICBsZXQgdHlwZUZyb21BdDogQ29udGV4dEVudGl0eVR5cGVcbiAgICAgICAgbGV0IGVmZmVjdGl2ZVF1ZXJ5OiBzdHJpbmdcblxuICAgICAgICBpZiAoaXNTa2lsbFRyaWdnZXIpIHtcbiAgICAgICAgICB0eXBlRnJvbUF0ID0gJ3NraWxsJ1xuICAgICAgICAgIGVmZmVjdGl2ZVF1ZXJ5ID0gdHJpZ2dlci5xdWVyeS5zbGljZSgxKVxuICAgICAgICB9IGVsc2UgaWYgKGlzU2xhc2hUcmlnZ2VyKSB7XG4gICAgICAgICAgdHlwZUZyb21BdCA9IGdldFR5cGVGcm9tVHJpZ2dlclNlcXVlbmNlKHRyaWdnZXIuYXRSdW5MZW5ndGgsIGFsbG93ZWRUeXBlcywgZGVmYXVsdFR5cGUpXG4gICAgICAgICAgZWZmZWN0aXZlUXVlcnkgPSB0cmlnZ2VyLnF1ZXJ5XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgb3ZlcmZsb3dBdENvdW50ID0gTWF0aC5tYXgoMCwgdHJpZ2dlci5hdFJ1bkxlbmd0aCAtIGF0UnVuVGFiVHlwZXMubGVuZ3RoKVxuICAgICAgICAgIGNvbnN0IGVmZmVjdGl2ZUF0UnVuTGVuZ3RoID0gTWF0aC5taW4odHJpZ2dlci5hdFJ1bkxlbmd0aCwgYXRSdW5UeXBlc09yQWxsLmxlbmd0aClcbiAgICAgICAgICBlZmZlY3RpdmVRdWVyeSA9IGAkeydAJy5yZXBlYXQob3ZlcmZsb3dBdENvdW50KX0ke3RyaWdnZXIucXVlcnl9YFxuICAgICAgICAgIHR5cGVGcm9tQXQgPSBnZXRUeXBlRnJvbVRyaWdnZXJTZXF1ZW5jZShlZmZlY3RpdmVBdFJ1bkxlbmd0aCwgYXRSdW5UeXBlc09yQWxsLCBkZWZhdWx0VHlwZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcG9wb3Zlck9wZW4pIHtcbiAgICAgICAgICBzZXRQb3BvdmVyT3Blbih0cnVlKVxuICAgICAgICAgIHNldEFjdGl2ZVR5cGUodHlwZUZyb21BdClcbiAgICAgICAgICBwb3NpdGlvblBvcG92ZXIoKVxuICAgICAgICAgIGlmICghaGFzRW1pdHRlZE9wZW4uY3VycmVudCkge1xuICAgICAgICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdE1lbnRpb25PcGVuLCB7IHR5cGU6IHR5cGVGcm9tQXQgfSlcbiAgICAgICAgICAgIGhhc0VtaXR0ZWRPcGVuLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldEFjdGl2ZVR5cGUodHlwZUZyb21BdClcbiAgICAgICAgICBwb3NpdGlvblBvcG92ZXIoKVxuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZVNlYXJjaFZhbHVlKGVmZmVjdGl2ZVF1ZXJ5KVxuICAgICAgfSBlbHNlIGlmIChwb3BvdmVyT3Blbikge1xuICAgICAgICBjbG9zZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWxsb3dlZFR5cGVzLCBkZWZhdWx0VHlwZSwgcG9wb3Zlck9wZW4sIHBvc2l0aW9uUG9wb3ZlciwgdXBkYXRlU2VhcmNoVmFsdWUsIGV2ZW50LCBjbG9zZV1cbiAgKVxuXG4gIGNvbnN0IGluc2VydFNlbGVjdGVkSXRlbSA9IHVzZUNhbGxiYWNrKFxuICAgIChpdGVtOiBDb250ZXh0TWVudGlvbkl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IG1lbnRpb246IENvbnRleHRNZW50aW9uID0ge1xuICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgdHlwZTogaXRlbS50eXBlLFxuICAgICAgICBsYWJlbDogaXRlbS5wcmltYXJ5LFxuICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgIGNsaWVudElkOiBpdGVtLnJhdy5jbGllbnRJZCA/PyBudWxsLFxuICAgICAgICAgIGNsaWVudE5hbWU6IGl0ZW0ucmF3LmNsaWVudE5hbWUgPz8gbnVsbCxcbiAgICAgICAgICBwcm9qZWN0TmFtZTogaXRlbS5yYXcucHJvamVjdE5hbWUgPz8gbnVsbCxcbiAgICAgICAgICBmZWVJZDogaXRlbS5yYXcuZmVlSWQgPz8gbnVsbCxcbiAgICAgICAgICBmYXRoZXJJZDogaXRlbS5yYXcuZmF0aGVySWQgPz8gbnVsbCxcbiAgICAgICAgICBmYXRoZXJUaXRsZTogaXRlbS5yYXcuZmF0aGVyVGl0bGUgPz8gbnVsbCxcbiAgICAgICAgICB0b3RhbFByb3llY3RvczogaXRlbS5yYXcudG90YWxQcm95ZWN0b3MgPz8gbnVsbCxcbiAgICAgICAgICBuYW1lOiBpdGVtLnJhdy5uYW1lID8/IG51bGwsXG4gICAgICAgICAgcGljdHVyZTogaXRlbS5yYXcucGljdHVyZSA/PyBudWxsLFxuICAgICAgICAgIHBvc2l0aW9uTmFtZTogaXRlbS5yYXcucG9zaXRpb25OYW1lID8/IG51bGwsXG4gICAgICAgICAgZW1haWw6IGl0ZW0ucmF3LmVtYWlsID8/IG51bGwsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0TWVudGlvbihtZW50aW9uKVxuICAgICAgb25NZW50aW9uQWRkZWQ/LihtZW50aW9uKVxuICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdE1lbnRpb25TZWxlY3QsIHsgdHlwZTogbWVudGlvbi50eXBlLCBpZDogU3RyaW5nKG1lbnRpb24uaWQpIH0pXG4gICAgICBjbG9zZSgpXG4gICAgfSxcbiAgICBbZWRpdG9yUmVmLCBvbk1lbnRpb25BZGRlZCwgZXZlbnQsIGNsb3NlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlVHlwZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgICh0eXBlOiBDb250ZXh0RW50aXR5VHlwZSkgPT4ge1xuICAgICAgc2V0QWN0aXZlVHlwZSh0eXBlKVxuICAgICAgaWYgKHR5cGUgPT09ICdza2lsbCcpIHtcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LnN5bmNTa2lsbFRyaWdnZXIoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbmV4dFJ1bkxlbmd0aCA9IGdldFRyaWdnZXJTZXF1ZW5jZUZyb21UeXBlKFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgYWxsb3dlZFR5cGVzLmZpbHRlcihlbnRpdHlUeXBlID0+IGVudGl0eVR5cGUgIT09ICdza2lsbCcpXG4gICAgICAgIClcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LnN5bmNUcmlnZ2VyQXRSdW5MZW5ndGgobmV4dFJ1bkxlbmd0aClcbiAgICAgIH1cbiAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRNZW50aW9uVHlwZVN3aXRjaCwgeyB0eXBlIH0pXG4gICAgfSxcbiAgICBbYWxsb3dlZFR5cGVzLCBlZGl0b3JSZWYsIGV2ZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBLZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50Pik6IGJvb2xlYW4gPT4ge1xuICAgICAgaWYgKCFwb3BvdmVyT3BlbiB8fCBhbGxvd2VkVHlwZXMubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2VcblxuICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgY2xvc2UoKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoKGUua2V5ID09PSAnQXJyb3dSaWdodCcgfHwgZS5rZXkgPT09ICdBcnJvd0xlZnQnKSAmJiAoZS5tZXRhS2V5IHx8IGUuYWx0S2V5KSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgY29uc3QgaWR4ID0gYWxsb3dlZFR5cGVzLmluZGV4T2YoYWN0aXZlVHlwZSlcbiAgICAgICAgY29uc3QgZGVsdGEgPSBlLmtleSA9PT0gJ0Fycm93UmlnaHQnID8gMSA6IC0xXG4gICAgICAgIGNvbnN0IG5leHRJZHggPSAoaWR4ICsgZGVsdGEgKyBhbGxvd2VkVHlwZXMubGVuZ3RoKSAlIGFsbG93ZWRUeXBlcy5sZW5ndGhcbiAgICAgICAgaGFuZGxlVHlwZUNoYW5nZShhbGxvd2VkVHlwZXNbbmV4dElkeF0pXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtcy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZVxuXG4gICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBzZXRJc0tleWJvYXJkTmF2QWN0aXZlKHRydWUpXG4gICAgICAgIHNldEFjdGl2ZUluZGV4KHByZXYgPT4gKGl0ZW1zLmxlbmd0aCA+IDAgPyBNYXRoLm1pbihwcmV2ICsgMSwgaXRlbXMubGVuZ3RoIC0gMSkgOiAwKSlcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBzZXRJc0tleWJvYXJkTmF2QWN0aXZlKHRydWUpXG4gICAgICAgIHNldEFjdGl2ZUluZGV4KHByZXYgPT4gTWF0aC5tYXgocHJldiAtIDEsIDApKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInIHx8IGUua2V5ID09PSAnVGFiJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgaW5zZXJ0U2VsZWN0ZWRJdGVtKGl0ZW1zW2FjdGl2ZUluZGV4XSlcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0sXG4gICAgW3BvcG92ZXJPcGVuLCBpdGVtcywgYWxsb3dlZFR5cGVzLCBhY3RpdmVUeXBlLCBhY3RpdmVJbmRleCwgaW5zZXJ0U2VsZWN0ZWRJdGVtLCBjbG9zZSwgaGFuZGxlVHlwZUNoYW5nZV1cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFwb3BvdmVyT3BlbikgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiBwb3NpdGlvblBvcG92ZXIoKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB0cnVlKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIH1cbiAgfSwgW3BvcG92ZXJPcGVuLCBwb3NpdGlvblBvcG92ZXJdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFwb3BvdmVyT3BlbikgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlID0gKG1vdXNlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IG1vdXNlRXZlbnQudGFyZ2V0IGFzIE5vZGUgfCBudWxsXG4gICAgICBpZiAoIXRhcmdldCkgcmV0dXJuXG4gICAgICBpZiAocG9wb3ZlclJlZi5jdXJyZW50Py5jb250YWlucyh0YXJnZXQpKSByZXR1cm5cbiAgICAgIGlmIChwb3BvdmVyQW5jaG9yUmVmPy5jdXJyZW50Py5jb250YWlucyh0YXJnZXQpKSByZXR1cm5cbiAgICAgIGNsb3NlKClcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUpXG4gICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSlcbiAgfSwgW3BvcG92ZXJPcGVuLCBjbG9zZSwgcG9wb3ZlckFuY2hvclJlZl0pXG5cbiAgY29uc3QgcHJldklzTG9hZGluZ01vcmVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHByZXZJc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQgPSBpc0xvYWRpbmdNb3JlXG4gICAgfVxuICB9LCBbaXNMb2FkaW5nTW9yZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocHJldklzTG9hZGluZ01vcmVSZWYuY3VycmVudCkgcmV0dXJuXG4gICAgc2V0QWN0aXZlSW5kZXgoMClcbiAgfSwgW2l0ZW1zLmxlbmd0aCwgYWN0aXZlVHlwZV0pXG5cbiAgY29uc3QgcG9wb3Zlck5vZGUgPSB1c2VNZW1vPFJlYWN0Tm9kZSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoIXBvcG92ZXJPcGVuKSByZXR1cm4gbnVsbFxuICAgIHJldHVybiAoXG4gICAgICA8U0NNUEFuY2hvclxuICAgICAgICByZWY9e3BvcG92ZXJSZWZ9XG4gICAgICAgIHsuLi57IFtNQUlBX1RBU0tfUEFORUxfT1ZFUkxBWV9BVFRSXTogJycgfX1cbiAgICAgICAgJGJvdHRvbT17cG9wb3ZlclBvcy5ib3R0b219XG4gICAgICAgICRsZWZ0PXtwb3BvdmVyUG9zLmxlZnR9XG4gICAgICAgICR3aWR0aD17cG9wb3ZlclBvcy53aWR0aH1cbiAgICAgICAgJHpJbmRleD17bWVudGlvblBvcG92ZXJaSW5kZXh9XG4gICAgICAgIG9uTW91c2VEb3duPXtlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICA+XG4gICAgICAgIDxDb250ZXh0TWVudGlvblBvcG92ZXJcbiAgICAgICAgICBhbGxvd2VkVHlwZXM9e2FsbG93ZWRUeXBlc31cbiAgICAgICAgICBhY3RpdmVUeXBlPXthY3RpdmVUeXBlfVxuICAgICAgICAgIG9uVHlwZUNoYW5nZT17aGFuZGxlVHlwZUNoYW5nZX1cbiAgICAgICAgICBpdGVtcz17aXRlbXN9XG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgICAgaGlkZVJlY2VudHNMYWJlbD17aGlkZVJlY2VudHNMYWJlbH1cbiAgICAgICAgICBza2lsbHNDYXRhbG9nRW1wdHk9e3NraWxsc0NhdGFsb2dFbXB0eX1cbiAgICAgICAgICBoYXNNb3JlPXtoYXNNb3JlfVxuICAgICAgICAgIGlzTG9hZGluZ01vcmU9e2lzTG9hZGluZ01vcmV9XG4gICAgICAgICAgb25SZWFjaExpc3RFbmQ9e2xvYWRNb3JlfVxuICAgICAgICAgIHNlYXJjaFZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICBrZXlib2FyZEhpbnQ9e3QoJ2NvbnRleHRNZW50aW9uLmtleWJvYXJkSGludCcsIHtcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogJ05hdmVnYWNpw7NuIGVudHJlIHBlc3Rhw7FhczogQCwgQEAsIEBAQOKApiBlbiBvcmRlbi4gVGFtYmnDqW4gQWx0L0NtZCArIOKGkC/ihpInLFxuICAgICAgICAgIH0pfVxuICAgICAgICAgIG9uSXRlbVNlbGVjdGVkPXtpbnNlcnRTZWxlY3RlZEl0ZW19XG4gICAgICAgICAgYWN0aXZlSW5kZXg9e2FjdGl2ZUluZGV4fVxuICAgICAgICAgIG9uQWN0aXZlSW5kZXhDaGFuZ2U9e3NldEFjdGl2ZUluZGV4fVxuICAgICAgICAgIGlzS2V5Ym9hcmROYXZBY3RpdmU9e2lzS2V5Ym9hcmROYXZBY3RpdmV9XG4gICAgICAgICAgb25Nb3VzZU1vdmVJbkxpc3Q9eygpID0+IHNldElzS2V5Ym9hcmROYXZBY3RpdmUoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgPC9TQ01QQW5jaG9yPlxuICAgIClcbiAgfSwgW1xuICAgIHBvcG92ZXJPcGVuLFxuICAgIHBvcG92ZXJQb3MsXG4gICAgbWVudGlvblBvcG92ZXJaSW5kZXgsXG4gICAgYWxsb3dlZFR5cGVzLFxuICAgIGFjdGl2ZVR5cGUsXG4gICAgaGFuZGxlVHlwZUNoYW5nZSxcbiAgICBpdGVtcyxcbiAgICBsb2FkaW5nLFxuICAgIGVycm9yLFxuICAgIGhpZGVSZWNlbnRzTGFiZWwsXG4gICAgc2tpbGxzQ2F0YWxvZ0VtcHR5LFxuICAgIGhhc01vcmUsXG4gICAgaXNMb2FkaW5nTW9yZSxcbiAgICBsb2FkTW9yZSxcbiAgICBzZWFyY2hWYWx1ZSxcbiAgICBpbnNlcnRTZWxlY3RlZEl0ZW0sXG4gICAgYWN0aXZlSW5kZXgsXG4gICAgaXNLZXlib2FyZE5hdkFjdGl2ZSxcbiAgXSlcblxuICByZXR1cm4geyBwb3BvdmVyT3BlbiwgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nLCBoYW5kbGVUcmlnZ2VyLCBoYW5kbGVLZXlEb3duLCBwb3BvdmVyTm9kZSwgY2xvc2UgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLFNBQThDQSxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBRTlHLFNBQ0VDLHFCQUFxQixFQUNyQkMsNEJBQTRCLEVBQzVCQyxVQUFVLFFBQ0wsMkNBQTJDO0FBQ2xELFNBQVNDLHNCQUFzQixRQUFRLDBCQUEwQjtBQUNqRSxTQUFTQyxnQkFBZ0IsUUFBUSwyQkFBMkI7QUFDNUQsU0FBU0MsSUFBSSxRQUFRLFFBQVE7QUFDN0I7QUFDQSxTQUE0QkMsZUFBZSxRQUFRLG1CQUFtQjtBQUN0RSxTQUFTQyxzQkFBc0IsUUFBUSwwQkFBMEI7QUFDakUsU0FBU0MsZ0JBQWdCLFFBQVEs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