@projectcor/maia-components 2.11.107 → 2.11.108

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/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [2.29.0](https://github.com/ProjectCORTeam/maia-components/compare/v2.28.0...v2.29.0) (2026-08-27)
2
+
3
+
4
+ ### Features
5
+
6
+ * Raise ppt/pptx chat attachment limit to 30MB ([3d87d9c](https://github.com/ProjectCORTeam/maia-components/commit/3d87d9cbc6066d2b51bbf8a362cfcfe71791d149))
7
+
1
8
  ## [2.28.0](https://github.com/ProjectCORTeam/maia-components/compare/v2.27.1...v2.28.0) (2026-08-26)
2
9
 
3
10
 
@@ -13,7 +13,7 @@ import { SCApprovalBox, SCABHeader, SCABTitle, SCABDescription, SCABActionsList,
13
13
  import { SECTIONS } from '../../../constants/config';
14
14
  import { useGlobalContext } from '../../../context/global-context';
15
15
  import { EVENTS, useEvent } from '../../../hooks/useEvent';
16
- import { buildHitlActionTypeList, getHitlAnalyticsAgentType, hitlBatchIncludesCreateAgent, normalizeHitlToolName } from '../../../utils/hitlAnalytics';
16
+ import { buildHitlAnalyticsPayload, getHitlAnalyticsAgentType, hitlBatchIncludesCreateAgent, normalizeHitlToolName } from '../../../utils/hitlAnalytics';
17
17
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
18
18
  function formatToolNameFallback(toolName) {
19
19
  var normalized = normalizeHitlToolName(toolName || 'unknown');
@@ -50,12 +50,6 @@ function getSpecialActionCopy(t, action) {
50
50
  }
51
51
  return {};
52
52
  }
53
- function buildHitlAnalyticsPayload(agentTypeForEvent, actions) {
54
- return {
55
- agent_type: agentTypeForEvent,
56
- action_type: buildHitlActionTypeList(actions)
57
- };
58
- }
59
53
  export var ApprovalBox = function ApprovalBox(_ref) {
60
54
  var actions = _ref.actions,
61
55
  onApprove = _ref.onApprove,
@@ -212,4 +206,4 @@ export var ApprovalBox = function ApprovalBox(_ref) {
212
206
  })]
213
207
  });
214
208
  };
215
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsIkFsZXJ0IiwiQ2hlY2tDaXJjbGUiLCJDcm9zc0NpcmNsZSIsIlRvb2x0aXAiLCJ1c2VUcmFuc2xhdGlvbiIsIlNDQXBwcm92YWxCb3giLCJTQ0FCSGVhZGVyIiwiU0NBQlRpdGxlIiwiU0NBQkRlc2NyaXB0aW9uIiwiU0NBQkFjdGlvbnNMaXN0IiwiU0NBQkFjdGlvbkl0ZW0iLCJTQ0FCQWN0aW9uTmFtZSIsIlNDQUJBY3Rpb25EZXNjcmlwdGlvbiIsIlNDQUJCdXR0b25zQ29udGFpbmVyIiwiU0NBQkJ1dHRvbiIsIlNDQUJTdGF0dXNCYWRnZSIsIlNDQUJTdGF0dXNXYXJuaW5nSWNvbiIsIlNFQ1RJT05TIiwidXNlR2xvYmFsQ29udGV4dCIsIkVWRU5UUyIsInVzZUV2ZW50IiwiYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QiLCJnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlIiwiaGl0bEJhdGNoSW5jbHVkZXNDcmVhdGVBZ2VudCIsIm5vcm1hbGl6ZUhpdGxUb29sTmFtZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImZvcm1hdFRvb2xOYW1lRmFsbGJhY2siLCJ0b29sTmFtZSIsIm5vcm1hbGl6ZWQiLCJ3aXRoU3BhY2VzIiwicmVwbGFjZSIsInRyaW0iLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwiZ2V0QWN0aW9uTGFiZWwiLCJ0IiwiZGlzcGxheU5hbWUiLCJub3JtYWxpemVkVG9vbE5hbWUiLCJ0cmFuc2xhdGlvbktleSIsImNvbmNhdCIsInRyYW5zbGF0ZWRMYWJlbCIsImdldERlbGl2ZXJhYmxlTW9kZSIsInRvb2xBcmdzIiwiQXJyYXkiLCJpc0FycmF5IiwiU3RyaW5nIiwiZGVsaXZlcmFibGVUeXBlIiwiZGVsaXZlcmFibGVfdHlwZSIsInRvTG93ZXJDYXNlIiwiZ2V0U3BlY2lhbEFjdGlvbkNvcHkiLCJhY3Rpb24iLCJ0b29sX25hbWUiLCJkZWxpdmVyYWJsZU1vZGUiLCJ0b29sX2FyZ3MiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwiaW5jbHVkZXMiLCJidWlsZEhpdGxBbmFseXRpY3NQYXlsb2FkIiwiYWdlbnRUeXBlRm9yRXZlbnQiLCJhY3Rpb25zIiwiYWdlbnRfdHlwZSIsImFjdGlvbl90eXBlIiwiQXBwcm92YWxCb3giLCJfcmVmIiwib25BcHByb3ZlIiwib25SZWplY3QiLCJfcmVmJHN0YXR1cyIsInN0YXR1cyIsIl9yZWYkaXNMb2FkaW5nIiwiaXNMb2FkaW5nIiwiX3JlZiRpc1Byb2plY3REZWxldGVkIiwiaXNQcm9qZWN0RGVsZXRlZCIsIl9yZWYkaXNFeHBhbmRlZCIsImlzRXhwYW5kZWQiLCJoaXRsSW5zdGFuY2VJZCIsIndhcm5pbmdNZXNzYWdlIiwiX3JlZiRtYW51YWxBcHByb3ZhbERlIiwibWFudWFsQXBwcm92YWxEZXRlY3RlZCIsIl91c2VUcmFuc2xhdGlvbiIsImNoYXRBSSIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImxvY2FsU3RhdHVzIiwic2V0TG9jYWxTdGF0dXMiLCJfdXNlR2xvYmFsQ29udGV4dCIsImFnZW50IiwiZXZlbnRBbXBsaXR1ZGUiLCJsYXN0SGl0bEltcHJlc3Npb25LZXlSZWYiLCJ1c2VySW5pdGlhdGVkSGl0bERlY2lzaW9uUmVmIiwiYXV0b1Jlc29sdXRpb25UcmFja2VkS2V5UmVmIiwiaGl0bEJhdGNoS2V5IiwibWFwIiwiYSIsInRocmVhZF9pZCIsInRvb2xfY2FsbF9pZCIsInNvcnQiLCJqb2luIiwicHJldiIsImhpdGxBbmFseXRpY3NBZ2VudFR5cGUiLCJsZW5ndGgiLCJpbXByZXNzaW9uS2V5IiwiY3VycmVudCIsImFpQ2hhdEhpdGwiLCJ0cmFja0hpdGxEZWNpc2lvbiIsImRlY2lzaW9uIiwicmVzb2x1dGlvblNvdXJjZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImFpQ2hhdEhpdGxPcHRpb24iLCJfb2JqZWN0U3ByZWFkIiwicmVzb2x1dGlvbl9zb3VyY2UiLCJpc0FjY2VwdCIsImhhbmRsZUFwcHJvdmUiLCJoYW5kbGVSZWplY3QiLCJjaGlsZHJlbiIsIiRleHBhbmRlZCIsInNwZWNpYWxDb3B5IiwibGFiZWwiLCJkaXNwbGF5X25hbWUiLCIkdmFyaWFudCIsIm9uQ2xpY2siLCIkZGlzYWJsZWQiLCIkc3RhdHVzIiwid2lkdGgiLCJoZWlnaHQiLCJjb2xvciIsInBsYWNlbWVudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL0FwcHJvdmFsQm94L0FwcHJvdmFsQm94LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBBbGVydCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0FsZXJ0J1xuaW1wb3J0IHsgQ2hlY2tDaXJjbGUgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DaGVja0NpcmNsZSdcbmltcG9ydCB7IENyb3NzQ2lyY2xlIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ3Jvc3NDaXJjbGUnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBQZW5kaW5nQWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7XG4gIFNDQXBwcm92YWxCb3gsXG4gIFNDQUJIZWFkZXIsXG4gIFNDQUJUaXRsZSxcbiAgU0NBQkRlc2NyaXB0aW9uLFxuICBTQ0FCQWN0aW9uc0xpc3QsXG4gIFNDQUJBY3Rpb25JdGVtLFxuICBTQ0FCQWN0aW9uTmFtZSxcbiAgU0NBQkFjdGlvbkRlc2NyaXB0aW9uLFxuICBTQ0FCQnV0dG9uc0NvbnRhaW5lcixcbiAgU0NBQkJ1dHRvbixcbiAgU0NBQlN0YXR1c0JhZGdlLFxuICBTQ0FCU3RhdHVzV2FybmluZ0ljb24sXG59IGZyb20gJy4vQXBwcm92YWxCb3guc3R5bGVzJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQge1xuICBidWlsZEhpdGxBY3Rpb25UeXBlTGlzdCxcbiAgZ2V0SGl0bEFuYWx5dGljc0FnZW50VHlwZSxcbiAgaGl0bEJhdGNoSW5jbHVkZXNDcmVhdGVBZ2VudCxcbiAgbm9ybWFsaXplSGl0bFRvb2xOYW1lLFxufSBmcm9tICcuLi8uLi8uLi91dGlscy9oaXRsQW5hbHl0aWNzJ1xuXG5mdW5jdGlvbiBmb3JtYXRUb29sTmFtZUZhbGxiYWNrKHRvb2xOYW1lPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZUhpdGxUb29sTmFtZSh0b29sTmFtZSB8fCAndW5rbm93bicpXG4gIGNvbnN0IHdpdGhTcGFjZXMgPSBub3JtYWxpemVkLnJlcGxhY2UoL18vZywgJyAnKS50cmltKClcbiAgaWYgKCF3aXRoU3BhY2VzKSByZXR1cm4gJ1Vua25vd24nXG4gIHJldHVybiB3aXRoU3BhY2VzLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd2l0aFNwYWNlcy5zbGljZSgxKVxufVxuXG5mdW5jdGlvbiBnZXRBY3Rpb25MYWJlbCh0OiAoa2V5OiBzdHJpbmcpID0+IHN0cmluZywgdG9vbE5hbWU/OiBzdHJpbmcsIGRpc3BsYXlOYW1lPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgbm9ybWFsaXplZFRvb2xOYW1lID0gbm9ybWFsaXplSGl0bFRvb2xOYW1lKHRvb2xOYW1lIHx8ICd1bmtub3duJylcbiAgY29uc3QgdHJhbnNsYXRpb25LZXkgPSBgYXBwcm92YWxCb3guYWN0aW9ucy4ke25vcm1hbGl6ZWRUb29sTmFtZX1gXG4gIGNvbnN0IHRyYW5zbGF0ZWRMYWJlbCA9IHQodHJhbnNsYXRpb25LZXkpXG5cbiAgaWYgKHRyYW5zbGF0ZWRMYWJlbCAhPT0gdHJhbnNsYXRpb25LZXkpIHJldHVybiB0cmFuc2xhdGVkTGFiZWxcbiAgaWYgKGRpc3BsYXlOYW1lPy50cmltKCkpIHJldHVybiBkaXNwbGF5TmFtZVxuICByZXR1cm4gZm9ybWF0VG9vbE5hbWVGYWxsYmFjayhub3JtYWxpemVkVG9vbE5hbWUpXG59XG5cbmZ1bmN0aW9uIGdldERlbGl2ZXJhYmxlTW9kZSh0b29sQXJnczogUGVuZGluZ0FjdGlvblsndG9vbF9hcmdzJ10pOiBzdHJpbmcge1xuICBpZiAoIXRvb2xBcmdzIHx8IEFycmF5LmlzQXJyYXkodG9vbEFyZ3MpKSByZXR1cm4gJydcbiAgcmV0dXJuIFN0cmluZyh0b29sQXJncy5kZWxpdmVyYWJsZVR5cGUgfHwgdG9vbEFyZ3MuZGVsaXZlcmFibGVfdHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKVxufVxuXG5mdW5jdGlvbiBnZXRTcGVjaWFsQWN0aW9uQ29weShcbiAgdDogKGtleTogc3RyaW5nKSA9PiBzdHJpbmcsXG4gIGFjdGlvbjogUGVuZGluZ0FjdGlvblxuKTogeyB0aXRsZT86IHN0cmluZzsgZGVzY3JpcHRpb24/OiBzdHJpbmcgfSB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRUb29sTmFtZSA9IG5vcm1hbGl6ZUhpdGxUb29sTmFtZShhY3Rpb24udG9vbF9uYW1lKVxuICBjb25zdCBkZWxpdmVyYWJsZU1vZGUgPSBnZXREZWxpdmVyYWJsZU1vZGUoYWN0aW9uLnRvb2xfYXJncylcblxuICBpZiAobm9ybWFsaXplZFRvb2xOYW1lID09PSAnY3JlYXRlX3Jld29yaycpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6IHQoJ2FwcHJvdmFsQm94LnNwZWNpYWwuY3JlYXRlUmV3b3JrLnRpdGxlJyksXG4gICAgICBkZXNjcmlwdGlvbjogdCgnYXBwcm92YWxCb3guc3BlY2lhbC5jcmVhdGVSZXdvcmsuZGVzY3JpcHRpb24nKSxcbiAgICB9XG4gIH1cblxuICBpZiAobm9ybWFsaXplZFRvb2xOYW1lID09PSAndXBkYXRlX2RlbGl2ZXJhYmxlJyAmJiBbJ2NoaWxkcmVuJywgJ2NoZWNrYm94J10uaW5jbHVkZXMoZGVsaXZlcmFibGVNb2RlKSkge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogdCgnYXBwcm92YWxCb3guc3BlY2lhbC51cGRhdGVEZWxpdmVyYWJsZUNoaWxkcmVuLnRpdGxlJyksXG4gICAgICBkZXNjcmlwdGlvbjogdCgnYXBwcm92YWxCb3guc3BlY2lhbC51cGRhdGVEZWxpdmVyYWJsZUNoaWxkcmVuLmRlc2NyaXB0aW9uJyksXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHt9XG59XG5cbmZ1bmN0aW9uIGJ1aWxkSGl0bEFuYWx5dGljc1BheWxvYWQoYWdlbnRUeXBlRm9yRXZlbnQ6IHN0cmluZywgYWN0aW9uczogUGVuZGluZ0FjdGlvbltdKSB7XG4gIHJldHVybiB7XG4gICAgYWdlbnRfdHlwZTogYWdlbnRUeXBlRm9yRXZlbnQsXG4gICAgYWN0aW9uX3R5cGU6IGJ1aWxkSGl0bEFjdGlvblR5cGVMaXN0KGFjdGlvbnMpLFxuICB9XG59XG5cbmludGVyZmFjZSBBcHByb3ZhbEJveFByb3BzIHtcbiAgYWN0aW9uczogUGVuZGluZ0FjdGlvbltdXG4gIG9uQXBwcm92ZTogKHRocmVhZElkczogc3RyaW5nW10pID0+IHZvaWRcbiAgb25SZWplY3Q6ICh0aHJlYWRJZHM6IHN0cmluZ1tdKSA9PiB2b2lkXG4gIHN0YXR1cz86ICdwZW5kaW5nJyB8ICdhcHByb3ZlZCcgfCAncmVqZWN0ZWQnXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbiAgLyoqIFNpIGVsIGNoYXQvcHJveWVjdG8gZXN0w6EgZWxpbWluYWRvLCBzZSBvY3VsdGFuIGxvcyBib3RvbmVzIGRlIGFwcm9iYXIvcmVjaGF6YXIgKi9cbiAgaXNQcm9qZWN0RGVsZXRlZD86IGJvb2xlYW5cbiAgLyoqIFNpIGVsIGNoYXQgZXN0w6EgZXhwYW5kaWRvICh0cnVlKSBvIGNvbGFwc2FkbyAoZmFsc2UpLiBBZmVjdGEgZWwgYW5jaG8gZGVsIGNvbnRlbmVkb3IuICovXG4gIGlzRXhwYW5kZWQ/OiBib29sZWFuXG4gIC8qKiBJZCBlc3RhYmxlIHBvciBsb3RlIEhJVEwgKHAuIGVqLiBvcmlnaW5hbF90aHJlYWRfaWQpIHBhcmEgZWwgZXZlbnRvIGRlIGltcHJlc2nDs24gKi9cbiAgaGl0bEluc3RhbmNlSWQ/OiBzdHJpbmdcbiAgd2FybmluZ01lc3NhZ2U/OiBzdHJpbmdcbiAgbWFudWFsQXBwcm92YWxEZXRlY3RlZD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNvbnN0IEFwcHJvdmFsQm94ID0gKHtcbiAgYWN0aW9ucyxcbiAgb25BcHByb3ZlLFxuICBvblJlamVjdCxcbiAgc3RhdHVzID0gJ3BlbmRpbmcnLFxuICBpc0xvYWRpbmcgPSBmYWxzZSxcbiAgaXNQcm9qZWN0RGVsZXRlZCA9IGZhbHNlLFxuICBpc0V4cGFuZGVkID0gZmFsc2UsXG4gIGhpdGxJbnN0YW5jZUlkLFxuICB3YXJuaW5nTWVzc2FnZSxcbiAgbWFudWFsQXBwcm92YWxEZXRlY3RlZCA9IGZhbHNlLFxufTogQXBwcm92YWxCb3hQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5jaGF0QUldKVxuICBjb25zdCBbbG9jYWxTdGF0dXMsIHNldExvY2FsU3RhdHVzXSA9IHVzZVN0YXRlPCdwZW5kaW5nJyB8ICdhcHByb3ZlZCcgfCAncmVqZWN0ZWQnPihzdGF0dXMpXG4gIGNvbnN0IHsgYWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgY29uc3QgbGFzdEhpdGxJbXByZXNzaW9uS2V5UmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHVzZXJJbml0aWF0ZWRIaXRsRGVjaXNpb25SZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGF1dG9SZXNvbHV0aW9uVHJhY2tlZEtleVJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IGhpdGxCYXRjaEtleSA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIGhpdGxJbnN0YW5jZUlkID8/XG4gICAgICBhY3Rpb25zXG4gICAgICAgIC5tYXAoYSA9PiBgJHthLnRocmVhZF9pZH06JHthLnRvb2xfY2FsbF9pZH1gKVxuICAgICAgICAuc29ydCgpXG4gICAgICAgIC5qb2luKCd8JyksXG4gICAgW2hpdGxJbnN0YW5jZUlkLCBhY3Rpb25zXVxuICApXG5cbiAgLy8gU2luY3Jvbml6YXIgbG9jYWxTdGF0dXMgY29uIGVsIHByb3Agc3RhdHVzIGN1YW5kbyBjYW1iaWEgZGVzZGUgZWwgcGFkcmUgKHNvbG8gcG9yIHZhbHVlLCBldml0YSBidWNsZXMpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0TG9jYWxTdGF0dXMocHJldiA9PiAocHJldiAhPT0gc3RhdHVzID8gc3RhdHVzIDogcHJldikpXG4gIH0sIFtzdGF0dXNdKVxuXG4gIGNvbnN0IGhpdGxBbmFseXRpY3NBZ2VudFR5cGUgPSBnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlKGFnZW50KVxuXG4gIC8vIENBMTogY2FyZCBkZSBjb25maXJtYWNpw7NuIEhJVEwgdmlzaWJsZSAoc29sbyBwZW5kaWVudGUsIG5vIGhpc3TDs3JpY28geWEgcmVzdWVsdG8pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGxvY2FsU3RhdHVzICE9PSAncGVuZGluZycgfHwgIWFjdGlvbnMubGVuZ3RoKSByZXR1cm5cbiAgICBjb25zdCBpbXByZXNzaW9uS2V5ID0gaGl0bEJhdGNoS2V5XG4gICAgaWYgKGxhc3RIaXRsSW1wcmVzc2lvbktleVJlZi5jdXJyZW50ID09PSBpbXByZXNzaW9uS2V5KSByZXR1cm5cbiAgICBsYXN0SGl0bEltcHJlc3Npb25LZXlSZWYuY3VycmVudCA9IGltcHJlc3Npb25LZXlcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0SGl0bCwgYnVpbGRIaXRsQW5hbHl0aWNzUGF5bG9hZChoaXRsQW5hbHl0aWNzQWdlbnRUeXBlLCBhY3Rpb25zKSlcbiAgfSwgW2V2ZW50QW1wbGl0dWRlLCBoaXRsQW5hbHl0aWNzQWdlbnRUeXBlLCBoaXRsQmF0Y2hLZXksIGxvY2FsU3RhdHVzLCBhY3Rpb25zLmxlbmd0aF0pXG5cbiAgY29uc3QgdHJhY2tIaXRsRGVjaXNpb24gPSB1c2VDYWxsYmFjayhcbiAgICAoZGVjaXNpb246ICdhY2NlcHQnIHwgJ2RlbnknLCByZXNvbHV0aW9uU291cmNlOiAndXNlcicgfCAnYXV0bycgPSAndXNlcicpID0+IHtcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRIaXRsT3B0aW9uLCB7XG4gICAgICAgIC4uLmJ1aWxkSGl0bEFuYWx5dGljc1BheWxvYWQoaGl0bEFuYWx5dGljc0FnZW50VHlwZSwgYWN0aW9ucyksXG4gICAgICAgIGRlY2lzaW9uLFxuICAgICAgICByZXNvbHV0aW9uX3NvdXJjZTogcmVzb2x1dGlvblNvdXJjZSxcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbYWN0aW9ucywgaGl0bEFuYWx5dGljc0FnZW50VHlwZSwgZXZlbnRBbXBsaXR1ZGVdXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHVzZXJJbml0aWF0ZWRIaXRsRGVjaXNpb25SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgYXV0b1Jlc29sdXRpb25UcmFja2VkS2V5UmVmLmN1cnJlbnQgPSBudWxsXG4gIH0sIFtoaXRsQmF0Y2hLZXldKVxuXG4gIC8qKlxuICAgKiBSZXNvbHVjacOzbiBzaW4gY2xpYyAocC4gZWouIGJhY2tlbmQgZWplY3V0YSBsYSBoZXJyYW1pZW50YSBzb2xhKTogaHVibyBpbXByZXNpw7NuIEhJVExcbiAgICogcGFyYSBlc3RlIGxvdGUgeSBlbCBwYWRyZSBwYXPDsyBhIGFwcHJvdmVkL3JlamVjdGVkIHNpbiBxdWUgZWwgdXN1YXJpbyBwdWxzYXJhIGFwcm9iYXIvZGVuZWdhci5cbiAgICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0YXR1cyA9PT0gJ3BlbmRpbmcnIHx8ICFhY3Rpb25zLmxlbmd0aCkgcmV0dXJuXG4gICAgaWYgKGxhc3RIaXRsSW1wcmVzc2lvbktleVJlZi5jdXJyZW50ICE9PSBoaXRsQmF0Y2hLZXkpIHJldHVyblxuICAgIGlmICh1c2VySW5pdGlhdGVkSGl0bERlY2lzaW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgIGlmIChhdXRvUmVzb2x1dGlvblRyYWNrZWRLZXlSZWYuY3VycmVudCA9PT0gaGl0bEJhdGNoS2V5KSByZXR1cm5cbiAgICBhdXRvUmVzb2x1dGlvblRyYWNrZWRLZXlSZWYuY3VycmVudCA9IGhpdGxCYXRjaEtleVxuICAgIGNvbnN0IGlzQWNjZXB0ID0gc3RhdHVzID09PSAnYXBwcm92ZWQnXG4gICAgaWYgKGlzQWNjZXB0ICYmIGhpdGxCYXRjaEluY2x1ZGVzQ3JlYXRlQWdlbnQoYWN0aW9ucykpIHJldHVyblxuICAgIHRyYWNrSGl0bERlY2lzaW9uKGlzQWNjZXB0ID8gJ2FjY2VwdCcgOiAnZGVueScsICdhdXRvJylcbiAgfSwgW2FjdGlvbnMsIGhpdGxCYXRjaEtleSwgc3RhdHVzLCB0cmFja0hpdGxEZWNpc2lvbl0pXG5cbiAgY29uc3QgaGFuZGxlQXBwcm92ZSA9ICgpID0+IHtcbiAgICBpZiAoaXNMb2FkaW5nIHx8IGxvY2FsU3RhdHVzICE9PSAncGVuZGluZycpIHJldHVyblxuICAgIHVzZXJJbml0aWF0ZWRIaXRsRGVjaXNpb25SZWYuY3VycmVudCA9IHRydWVcbiAgICBpZiAoIWhpdGxCYXRjaEluY2x1ZGVzQ3JlYXRlQWdlbnQoYWN0aW9ucykpIHtcbiAgICAgIHRyYWNrSGl0bERlY2lzaW9uKCdhY2NlcHQnLCAndXNlcicpXG4gICAgfVxuICAgIHNldExvY2FsU3RhdHVzKCdhcHByb3ZlZCcpXG4gICAgb25BcHByb3ZlKGFjdGlvbnMubWFwKGEgPT4gYS50aHJlYWRfaWQpKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUmVqZWN0ID0gKCkgPT4ge1xuICAgIGlmIChpc0xvYWRpbmcgfHwgbG9jYWxTdGF0dXMgIT09ICdwZW5kaW5nJykgcmV0dXJuXG4gICAgdXNlckluaXRpYXRlZEhpdGxEZWNpc2lvblJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHRyYWNrSGl0bERlY2lzaW9uKCdkZW55JywgJ3VzZXInKVxuICAgIHNldExvY2FsU3RhdHVzKCdyZWplY3RlZCcpXG4gICAgb25SZWplY3QoYWN0aW9ucy5tYXAoYSA9PiBhLnRocmVhZF9pZCkpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ0FwcHJvdmFsQm94PlxuICAgICAgPFNDQUJIZWFkZXI+XG4gICAgICAgIDxTQ0FCVGl0bGU+e3QoJ2FwcHJvdmFsQm94LnRpdGxlJyl9PC9TQ0FCVGl0bGU+XG4gICAgICA8L1NDQUJIZWFkZXI+XG5cbiAgICAgIDxTQ0FCRGVzY3JpcHRpb24+e3QoJ2FwcHJvdmFsQm94LmRlc2NyaXB0aW9uJyl9PC9TQ0FCRGVzY3JpcHRpb24+XG5cbiAgICAgIDxTQ0FCQWN0aW9uc0xpc3QgJGV4cGFuZGVkPXtpc0V4cGFuZGVkfT5cbiAgICAgICAge2FjdGlvbnMubWFwKGFjdGlvbiA9PiB7XG4gICAgICAgICAgY29uc3Qgc3BlY2lhbENvcHkgPSBnZXRTcGVjaWFsQWN0aW9uQ29weSh0LCBhY3Rpb24pXG4gICAgICAgICAgY29uc3QgbGFiZWwgPSBzcGVjaWFsQ29weS50aXRsZSB8fCBnZXRBY3Rpb25MYWJlbCh0LCBhY3Rpb24udG9vbF9uYW1lLCAoYWN0aW9uIGFzIGFueSkuZGlzcGxheV9uYW1lKVxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8U0NBQkFjdGlvbkl0ZW0ga2V5PXthY3Rpb24udGhyZWFkX2lkfT5cbiAgICAgICAgICAgICAgPFNDQUJBY3Rpb25OYW1lPntsYWJlbH08L1NDQUJBY3Rpb25OYW1lPlxuICAgICAgICAgICAgICB7c3BlY2lhbENvcHkuZGVzY3JpcHRpb24gPyAoXG4gICAgICAgICAgICAgICAgPFNDQUJBY3Rpb25EZXNjcmlwdGlvbj57c3BlY2lhbENvcHkuZGVzY3JpcHRpb259PC9TQ0FCQWN0aW9uRGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9TQ0FCQWN0aW9uSXRlbT5cbiAgICAgICAgICApXG4gICAgICAgIH0pfVxuICAgICAgPC9TQ0FCQWN0aW9uc0xpc3Q+XG5cbiAgICAgIHtsb2NhbFN0YXR1cyA9PT0gJ3BlbmRpbmcnICYmICFpc1Byb2plY3REZWxldGVkICYmIChcbiAgICAgICAgPFNDQUJCdXR0b25zQ29udGFpbmVyPlxuICAgICAgICAgIDxTQ0FCQnV0dG9uICR2YXJpYW50PVwicmVqZWN0XCIgb25DbGljaz17aGFuZGxlUmVqZWN0fSAkZGlzYWJsZWQ9e2lzTG9hZGluZ30+XG4gICAgICAgICAgICB7dCgnYXBwcm92YWxCb3guZGVueScpfVxuICAgICAgICAgIDwvU0NBQkJ1dHRvbj5cbiAgICAgICAgICA8U0NBQkJ1dHRvbiAkdmFyaWFudD1cImFwcHJvdmVcIiBvbkNsaWNrPXtoYW5kbGVBcHByb3ZlfSAkZGlzYWJsZWQ9e2lzTG9hZGluZ30+XG4gICAgICAgICAgICB7dCgnYXBwcm92YWxCb3guYXBwcm92ZScpfVxuICAgICAgICAgIDwvU0NBQkJ1dHRvbj5cbiAgICAgICAgPC9TQ0FCQnV0dG9uc0NvbnRhaW5lcj5cbiAgICAgICl9XG4gICAgICB7bG9jYWxTdGF0dXMgIT09ICdwZW5kaW5nJyAmJiAoXG4gICAgICAgIDxTQ0FCU3RhdHVzQmFkZ2UgJHN0YXR1cz17bG9jYWxTdGF0dXN9PlxuICAgICAgICAgIHtsb2NhbFN0YXR1cyA9PT0gJ2FwcHJvdmVkJyA/IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxDaGVja0NpcmNsZSB3aWR0aD17MjJ9IGhlaWdodD17MjJ9IGNvbG9yPVwiIzAwODQwMFwiIC8+XG4gICAgICAgICAgICAgIHt0KCdhcHByb3ZhbEJveC5zdGF0dXMuYXBwcm92ZWQnKX1cbiAgICAgICAgICAgICAge21hbnVhbEFwcHJvdmFsRGV0ZWN0ZWQgJiYgKFxuICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt3YXJuaW5nTWVzc2FnZSB8fCB0KCdhcHByb3ZhbEJveC5tYW51YWxBcHByb3ZhbFdhcm5pbmcnKX0gcGxhY2VtZW50PVwicmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIDxTQ0FCU3RhdHVzV2FybmluZ0ljb24+XG4gICAgICAgICAgICAgICAgICAgIDxBbGVydCBjb2xvcj1cIiNFQUExMUFcIiB3aWR0aD1cIjEzcHhcIiBoZWlnaHQ9XCIxM3B4XCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvU0NBQlN0YXR1c1dhcm5pbmdJY29uPlxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8Q3Jvc3NDaXJjbGUgd2lkdGg9ezIyfSBoZWlnaHQ9ezIyfSBjb2xvcj1cIiNDNzA1MDVcIiAvPlxuICAgICAgICAgICAgICB7dCgnYXBwcm92YWxCb3guc3RhdHVzLmRlbmllZCcpfVxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TQ0FCU3RhdHVzQmFkZ2U+XG4gICAgICApfVxuICAgIDwvU0NBcHByb3ZhbEJveD5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQSxTQUFTQSxRQUFR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
209
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsIkFsZXJ0IiwiQ2hlY2tDaXJjbGUiLCJDcm9zc0NpcmNsZSIsIlRvb2x0aXAiLCJ1c2VUcmFuc2xhdGlvbiIsIlNDQXBwcm92YWxCb3giLCJTQ0FCSGVhZGVyIiwiU0NBQlRpdGxlIiwiU0NBQkRlc2NyaXB0aW9uIiwiU0NBQkFjdGlvbnNMaXN0IiwiU0NBQkFjdGlvbkl0ZW0iLCJTQ0FCQWN0aW9uTmFtZSIsIlNDQUJBY3Rpb25EZXNjcmlwdGlvbiIsIlNDQUJCdXR0b25zQ29udGFpbmVyIiwiU0NBQkJ1dHRvbiIsIlNDQUJTdGF0dXNCYWRnZSIsIlNDQUJTdGF0dXNXYXJuaW5nSWNvbiIsIlNFQ1RJT05TIiwidXNlR2xvYmFsQ29udGV4dCIsIkVWRU5UUyIsInVzZUV2ZW50IiwiYnVpbGRIaXRsQW5hbHl0aWNzUGF5bG9hZCIsImdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUiLCJoaXRsQmF0Y2hJbmNsdWRlc0NyZWF0ZUFnZW50Iiwibm9ybWFsaXplSGl0bFRvb2xOYW1lIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiZm9ybWF0VG9vbE5hbWVGYWxsYmFjayIsInRvb2xOYW1lIiwibm9ybWFsaXplZCIsIndpdGhTcGFjZXMiLCJyZXBsYWNlIiwidHJpbSIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJnZXRBY3Rpb25MYWJlbCIsInQiLCJkaXNwbGF5TmFtZSIsIm5vcm1hbGl6ZWRUb29sTmFtZSIsInRyYW5zbGF0aW9uS2V5IiwiY29uY2F0IiwidHJhbnNsYXRlZExhYmVsIiwiZ2V0RGVsaXZlcmFibGVNb2RlIiwidG9vbEFyZ3MiLCJBcnJheSIsImlzQXJyYXkiLCJTdHJpbmciLCJkZWxpdmVyYWJsZVR5cGUiLCJkZWxpdmVyYWJsZV90eXBlIiwidG9Mb3dlckNhc2UiLCJnZXRTcGVjaWFsQWN0aW9uQ29weSIsImFjdGlvbiIsInRvb2xfbmFtZSIsImRlbGl2ZXJhYmxlTW9kZSIsInRvb2xfYXJncyIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJpbmNsdWRlcyIsIkFwcHJvdmFsQm94IiwiX3JlZiIsImFjdGlvbnMiLCJvbkFwcHJvdmUiLCJvblJlamVjdCIsIl9yZWYkc3RhdHVzIiwic3RhdHVzIiwiX3JlZiRpc0xvYWRpbmciLCJpc0xvYWRpbmciLCJfcmVmJGlzUHJvamVjdERlbGV0ZWQiLCJpc1Byb2plY3REZWxldGVkIiwiX3JlZiRpc0V4cGFuZGVkIiwiaXNFeHBhbmRlZCIsImhpdGxJbnN0YW5jZUlkIiwid2FybmluZ01lc3NhZ2UiLCJfcmVmJG1hbnVhbEFwcHJvdmFsRGUiLCJtYW51YWxBcHByb3ZhbERldGVjdGVkIiwiX3VzZVRyYW5zbGF0aW9uIiwiY2hhdEFJIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwibG9jYWxTdGF0dXMiLCJzZXRMb2NhbFN0YXR1cyIsIl91c2VHbG9iYWxDb250ZXh0IiwiYWdlbnQiLCJldmVudEFtcGxpdHVkZSIsImxhc3RIaXRsSW1wcmVzc2lvbktleVJlZiIsInVzZXJJbml0aWF0ZWRIaXRsRGVjaXNpb25SZWYiLCJhdXRvUmVzb2x1dGlvblRyYWNrZWRLZXlSZWYiLCJoaXRsQmF0Y2hLZXkiLCJtYXAiLCJhIiwidGhyZWFkX2lkIiwidG9vbF9jYWxsX2lkIiwic29ydCIsImpvaW4iLCJwcmV2IiwiaGl0bEFuYWx5dGljc0FnZW50VHlwZSIsImxlbmd0aCIsImltcHJlc3Npb25LZXkiLCJjdXJyZW50IiwiYWlDaGF0SGl0bCIsInRyYWNrSGl0bERlY2lzaW9uIiwiZGVjaXNpb24iLCJyZXNvbHV0aW9uU291cmNlIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiYWlDaGF0SGl0bE9wdGlvbiIsIl9vYmplY3RTcHJlYWQiLCJyZXNvbHV0aW9uX3NvdXJjZSIsImlzQWNjZXB0IiwiaGFuZGxlQXBwcm92ZSIsImhhbmRsZVJlamVjdCIsImNoaWxkcmVuIiwiJGV4cGFuZGVkIiwic3BlY2lhbENvcHkiLCJsYWJlbCIsImRpc3BsYXlfbmFtZSIsIiR2YXJpYW50Iiwib25DbGljayIsIiRkaXNhYmxlZCIsIiRzdGF0dXMiLCJ3aWR0aCIsImhlaWdodCIsImNvbG9yIiwicGxhY2VtZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvQXBwcm92YWxCb3gvQXBwcm92YWxCb3gudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IEFsZXJ0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQWxlcnQnXG5pbXBvcnQgeyBDaGVja0NpcmNsZSB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZWNrQ2lyY2xlJ1xuaW1wb3J0IHsgQ3Jvc3NDaXJjbGUgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9Dcm9zc0NpcmNsZSdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IFBlbmRpbmdBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9DaGF0J1xuaW1wb3J0IHtcbiAgU0NBcHByb3ZhbEJveCxcbiAgU0NBQkhlYWRlcixcbiAgU0NBQlRpdGxlLFxuICBTQ0FCRGVzY3JpcHRpb24sXG4gIFNDQUJBY3Rpb25zTGlzdCxcbiAgU0NBQkFjdGlvbkl0ZW0sXG4gIFNDQUJBY3Rpb25OYW1lLFxuICBTQ0FCQWN0aW9uRGVzY3JpcHRpb24sXG4gIFNDQUJCdXR0b25zQ29udGFpbmVyLFxuICBTQ0FCQnV0dG9uLFxuICBTQ0FCU3RhdHVzQmFkZ2UsXG4gIFNDQUJTdGF0dXNXYXJuaW5nSWNvbixcbn0gZnJvbSAnLi9BcHByb3ZhbEJveC5zdHlsZXMnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7XG4gIGJ1aWxkSGl0bEFuYWx5dGljc1BheWxvYWQsXG4gIGdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUsXG4gIGhpdGxCYXRjaEluY2x1ZGVzQ3JlYXRlQWdlbnQsXG4gIG5vcm1hbGl6ZUhpdGxUb29sTmFtZSxcbn0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaGl0bEFuYWx5dGljcydcblxuZnVuY3Rpb24gZm9ybWF0VG9vbE5hbWVGYWxsYmFjayh0b29sTmFtZT86IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVIaXRsVG9vbE5hbWUodG9vbE5hbWUgfHwgJ3Vua25vd24nKVxuICBjb25zdCB3aXRoU3BhY2VzID0gbm9ybWFsaXplZC5yZXBsYWNlKC9fL2csICcgJykudHJpbSgpXG4gIGlmICghd2l0aFNwYWNlcykgcmV0dXJuICdVbmtub3duJ1xuICByZXR1cm4gd2l0aFNwYWNlcy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHdpdGhTcGFjZXMuc2xpY2UoMSlcbn1cblxuZnVuY3Rpb24gZ2V0QWN0aW9uTGFiZWwodDogKGtleTogc3RyaW5nKSA9PiBzdHJpbmcsIHRvb2xOYW1lPzogc3RyaW5nLCBkaXNwbGF5TmFtZT86IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRUb29sTmFtZSA9IG5vcm1hbGl6ZUhpdGxUb29sTmFtZSh0b29sTmFtZSB8fCAndW5rbm93bicpXG4gIGNvbnN0IHRyYW5zbGF0aW9uS2V5ID0gYGFwcHJvdmFsQm94LmFjdGlvbnMuJHtub3JtYWxpemVkVG9vbE5hbWV9YFxuICBjb25zdCB0cmFuc2xhdGVkTGFiZWwgPSB0KHRyYW5zbGF0aW9uS2V5KVxuXG4gIGlmICh0cmFuc2xhdGVkTGFiZWwgIT09IHRyYW5zbGF0aW9uS2V5KSByZXR1cm4gdHJhbnNsYXRlZExhYmVsXG4gIGlmIChkaXNwbGF5TmFtZT8udHJpbSgpKSByZXR1cm4gZGlzcGxheU5hbWVcbiAgcmV0dXJuIGZvcm1hdFRvb2xOYW1lRmFsbGJhY2sobm9ybWFsaXplZFRvb2xOYW1lKVxufVxuXG5mdW5jdGlvbiBnZXREZWxpdmVyYWJsZU1vZGUodG9vbEFyZ3M6IFBlbmRpbmdBY3Rpb25bJ3Rvb2xfYXJncyddKTogc3RyaW5nIHtcbiAgaWYgKCF0b29sQXJncyB8fCBBcnJheS5pc0FycmF5KHRvb2xBcmdzKSkgcmV0dXJuICcnXG4gIHJldHVybiBTdHJpbmcodG9vbEFyZ3MuZGVsaXZlcmFibGVUeXBlIHx8IHRvb2xBcmdzLmRlbGl2ZXJhYmxlX3R5cGUgfHwgJycpLnRvTG93ZXJDYXNlKClcbn1cblxuZnVuY3Rpb24gZ2V0U3BlY2lhbEFjdGlvbkNvcHkoXG4gIHQ6IChrZXk6IHN0cmluZykgPT4gc3RyaW5nLFxuICBhY3Rpb246IFBlbmRpbmdBY3Rpb25cbik6IHsgdGl0bGU/OiBzdHJpbmc7IGRlc2NyaXB0aW9uPzogc3RyaW5nIH0ge1xuICBjb25zdCBub3JtYWxpemVkVG9vbE5hbWUgPSBub3JtYWxpemVIaXRsVG9vbE5hbWUoYWN0aW9uLnRvb2xfbmFtZSlcbiAgY29uc3QgZGVsaXZlcmFibGVNb2RlID0gZ2V0RGVsaXZlcmFibGVNb2RlKGFjdGlvbi50b29sX2FyZ3MpXG5cbiAgaWYgKG5vcm1hbGl6ZWRUb29sTmFtZSA9PT0gJ2NyZWF0ZV9yZXdvcmsnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiB0KCdhcHByb3ZhbEJveC5zcGVjaWFsLmNyZWF0ZVJld29yay50aXRsZScpLFxuICAgICAgZGVzY3JpcHRpb246IHQoJ2FwcHJvdmFsQm94LnNwZWNpYWwuY3JlYXRlUmV3b3JrLmRlc2NyaXB0aW9uJyksXG4gICAgfVxuICB9XG5cbiAgaWYgKG5vcm1hbGl6ZWRUb29sTmFtZSA9PT0gJ3VwZGF0ZV9kZWxpdmVyYWJsZScgJiYgWydjaGlsZHJlbicsICdjaGVja2JveCddLmluY2x1ZGVzKGRlbGl2ZXJhYmxlTW9kZSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6IHQoJ2FwcHJvdmFsQm94LnNwZWNpYWwudXBkYXRlRGVsaXZlcmFibGVDaGlsZHJlbi50aXRsZScpLFxuICAgICAgZGVzY3JpcHRpb246IHQoJ2FwcHJvdmFsQm94LnNwZWNpYWwudXBkYXRlRGVsaXZlcmFibGVDaGlsZHJlbi5kZXNjcmlwdGlvbicpLFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7fVxufVxuXG5pbnRlcmZhY2UgQXBwcm92YWxCb3hQcm9wcyB7XG4gIGFjdGlvbnM6IFBlbmRpbmdBY3Rpb25bXVxuICBvbkFwcHJvdmU6ICh0aHJlYWRJZHM6IHN0cmluZ1tdKSA9PiB2b2lkXG4gIG9uUmVqZWN0OiAodGhyZWFkSWRzOiBzdHJpbmdbXSkgPT4gdm9pZFxuICBzdGF0dXM/OiAncGVuZGluZycgfCAnYXBwcm92ZWQnIHwgJ3JlamVjdGVkJ1xuICBpc0xvYWRpbmc/OiBib29sZWFuXG4gIC8qKiBTaSBlbCBjaGF0L3Byb3llY3RvIGVzdMOhIGVsaW1pbmFkbywgc2Ugb2N1bHRhbiBsb3MgYm90b25lcyBkZSBhcHJvYmFyL3JlY2hhemFyICovXG4gIGlzUHJvamVjdERlbGV0ZWQ/OiBib29sZWFuXG4gIC8qKiBTaSBlbCBjaGF0IGVzdMOhIGV4cGFuZGlkbyAodHJ1ZSkgbyBjb2xhcHNhZG8gKGZhbHNlKS4gQWZlY3RhIGVsIGFuY2hvIGRlbCBjb250ZW5lZG9yLiAqL1xuICBpc0V4cGFuZGVkPzogYm9vbGVhblxuICAvKiogSWQgZXN0YWJsZSBwb3IgbG90ZSBISVRMIChwLiBlai4gb3JpZ2luYWxfdGhyZWFkX2lkKSBwYXJhIGVsIGV2ZW50byBkZSBpbXByZXNpw7NuICovXG4gIGhpdGxJbnN0YW5jZUlkPzogc3RyaW5nXG4gIHdhcm5pbmdNZXNzYWdlPzogc3RyaW5nXG4gIG1hbnVhbEFwcHJvdmFsRGV0ZWN0ZWQ/OiBib29sZWFuXG59XG5cbmV4cG9ydCBjb25zdCBBcHByb3ZhbEJveCA9ICh7XG4gIGFjdGlvbnMsXG4gIG9uQXBwcm92ZSxcbiAgb25SZWplY3QsXG4gIHN0YXR1cyA9ICdwZW5kaW5nJyxcbiAgaXNMb2FkaW5nID0gZmFsc2UsXG4gIGlzUHJvamVjdERlbGV0ZWQgPSBmYWxzZSxcbiAgaXNFeHBhbmRlZCA9IGZhbHNlLFxuICBoaXRsSW5zdGFuY2VJZCxcbiAgd2FybmluZ01lc3NhZ2UsXG4gIG1hbnVhbEFwcHJvdmFsRGV0ZWN0ZWQgPSBmYWxzZSxcbn06IEFwcHJvdmFsQm94UHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuY2hhdEFJXSlcbiAgY29uc3QgW2xvY2FsU3RhdHVzLCBzZXRMb2NhbFN0YXR1c10gPSB1c2VTdGF0ZTwncGVuZGluZycgfCAnYXBwcm92ZWQnIHwgJ3JlamVjdGVkJz4oc3RhdHVzKVxuICBjb25zdCB7IGFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IGxhc3RIaXRsSW1wcmVzc2lvbktleVJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCB1c2VySW5pdGlhdGVkSGl0bERlY2lzaW9uUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBhdXRvUmVzb2x1dGlvblRyYWNrZWRLZXlSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcblxuICBjb25zdCBoaXRsQmF0Y2hLZXkgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBoaXRsSW5zdGFuY2VJZCA/P1xuICAgICAgYWN0aW9uc1xuICAgICAgICAubWFwKGEgPT4gYCR7YS50aHJlYWRfaWR9OiR7YS50b29sX2NhbGxfaWR9YClcbiAgICAgICAgLnNvcnQoKVxuICAgICAgICAuam9pbignfCcpLFxuICAgIFtoaXRsSW5zdGFuY2VJZCwgYWN0aW9uc11cbiAgKVxuXG4gIC8vIFNpbmNyb25pemFyIGxvY2FsU3RhdHVzIGNvbiBlbCBwcm9wIHN0YXR1cyBjdWFuZG8gY2FtYmlhIGRlc2RlIGVsIHBhZHJlIChzb2xvIHBvciB2YWx1ZSwgZXZpdGEgYnVjbGVzKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldExvY2FsU3RhdHVzKHByZXYgPT4gKHByZXYgIT09IHN0YXR1cyA/IHN0YXR1cyA6IHByZXYpKVxuICB9LCBbc3RhdHVzXSlcblxuICBjb25zdCBoaXRsQW5hbHl0aWNzQWdlbnRUeXBlID0gZ2V0SGl0bEFuYWx5dGljc0FnZW50VHlwZShhZ2VudClcblxuICAvLyBDQTE6IGNhcmQgZGUgY29uZmlybWFjacOzbiBISVRMIHZpc2libGUgKHNvbG8gcGVuZGllbnRlLCBubyBoaXN0w7NyaWNvIHlhIHJlc3VlbHRvKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChsb2NhbFN0YXR1cyAhPT0gJ3BlbmRpbmcnIHx8ICFhY3Rpb25zLmxlbmd0aCkgcmV0dXJuXG4gICAgY29uc3QgaW1wcmVzc2lvbktleSA9IGhpdGxCYXRjaEtleVxuICAgIGlmIChsYXN0SGl0bEltcHJlc3Npb25LZXlSZWYuY3VycmVudCA9PT0gaW1wcmVzc2lvbktleSkgcmV0dXJuXG4gICAgbGFzdEhpdGxJbXByZXNzaW9uS2V5UmVmLmN1cnJlbnQgPSBpbXByZXNzaW9uS2V5XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdEhpdGwsIGJ1aWxkSGl0bEFuYWx5dGljc1BheWxvYWQoaGl0bEFuYWx5dGljc0FnZW50VHlwZSwgYWN0aW9ucykpXG4gIH0sIFtldmVudEFtcGxpdHVkZSwgaGl0bEFuYWx5dGljc0FnZW50VHlwZSwgaGl0bEJhdGNoS2V5LCBsb2NhbFN0YXR1cywgYWN0aW9ucy5sZW5ndGhdKVxuXG4gIGNvbnN0IHRyYWNrSGl0bERlY2lzaW9uID0gdXNlQ2FsbGJhY2soXG4gICAgKGRlY2lzaW9uOiAnYWNjZXB0JyB8ICdkZW55JywgcmVzb2x1dGlvblNvdXJjZTogJ3VzZXInIHwgJ2F1dG8nID0gJ3VzZXInKSA9PiB7XG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0SGl0bE9wdGlvbiwge1xuICAgICAgICAuLi5idWlsZEhpdGxBbmFseXRpY3NQYXlsb2FkKGhpdGxBbmFseXRpY3NBZ2VudFR5cGUsIGFjdGlvbnMpLFxuICAgICAgICBkZWNpc2lvbixcbiAgICAgICAgcmVzb2x1dGlvbl9zb3VyY2U6IHJlc29sdXRpb25Tb3VyY2UsXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2FjdGlvbnMsIGhpdGxBbmFseXRpY3NBZ2VudFR5cGUsIGV2ZW50QW1wbGl0dWRlXVxuICApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICB1c2VySW5pdGlhdGVkSGl0bERlY2lzaW9uUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIGF1dG9SZXNvbHV0aW9uVHJhY2tlZEtleVJlZi5jdXJyZW50ID0gbnVsbFxuICB9LCBbaGl0bEJhdGNoS2V5XSlcblxuICAvKipcbiAgICogUmVzb2x1Y2nDs24gc2luIGNsaWMgKHAuIGVqLiBiYWNrZW5kIGVqZWN1dGEgbGEgaGVycmFtaWVudGEgc29sYSk6IGh1Ym8gaW1wcmVzacOzbiBISVRMXG4gICAqIHBhcmEgZXN0ZSBsb3RlIHkgZWwgcGFkcmUgcGFzw7MgYSBhcHByb3ZlZC9yZWplY3RlZCBzaW4gcXVlIGVsIHVzdWFyaW8gcHVsc2FyYSBhcHJvYmFyL2RlbmVnYXIuXG4gICAqL1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzdGF0dXMgPT09ICdwZW5kaW5nJyB8fCAhYWN0aW9ucy5sZW5ndGgpIHJldHVyblxuICAgIGlmIChsYXN0SGl0bEltcHJlc3Npb25LZXlSZWYuY3VycmVudCAhPT0gaGl0bEJhdGNoS2V5KSByZXR1cm5cbiAgICBpZiAodXNlckluaXRpYXRlZEhpdGxEZWNpc2lvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICBpZiAoYXV0b1Jlc29sdXRpb25UcmFja2VkS2V5UmVmLmN1cnJlbnQgPT09IGhpdGxCYXRjaEtleSkgcmV0dXJuXG4gICAgYXV0b1Jlc29sdXRpb25UcmFja2VkS2V5UmVmLmN1cnJlbnQgPSBoaXRsQmF0Y2hLZXlcbiAgICBjb25zdCBpc0FjY2VwdCA9IHN0YXR1cyA9PT0gJ2FwcHJvdmVkJ1xuICAgIGlmIChpc0FjY2VwdCAmJiBoaXRsQmF0Y2hJbmNsdWRlc0NyZWF0ZUFnZW50KGFjdGlvbnMpKSByZXR1cm5cbiAgICB0cmFja0hpdGxEZWNpc2lvbihpc0FjY2VwdCA/ICdhY2NlcHQnIDogJ2RlbnknLCAnYXV0bycpXG4gIH0sIFthY3Rpb25zLCBoaXRsQmF0Y2hLZXksIHN0YXR1cywgdHJhY2tIaXRsRGVjaXNpb25dKVxuXG4gIGNvbnN0IGhhbmRsZUFwcHJvdmUgPSAoKSA9PiB7XG4gICAgaWYgKGlzTG9hZGluZyB8fCBsb2NhbFN0YXR1cyAhPT0gJ3BlbmRpbmcnKSByZXR1cm5cbiAgICB1c2VySW5pdGlhdGVkSGl0bERlY2lzaW9uUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgaWYgKCFoaXRsQmF0Y2hJbmNsdWRlc0NyZWF0ZUFnZW50KGFjdGlvbnMpKSB7XG4gICAgICB0cmFja0hpdGxEZWNpc2lvbignYWNjZXB0JywgJ3VzZXInKVxuICAgIH1cbiAgICBzZXRMb2NhbFN0YXR1cygnYXBwcm92ZWQnKVxuICAgIG9uQXBwcm92ZShhY3Rpb25zLm1hcChhID0+IGEudGhyZWFkX2lkKSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVJlamVjdCA9ICgpID0+IHtcbiAgICBpZiAoaXNMb2FkaW5nIHx8IGxvY2FsU3RhdHVzICE9PSAncGVuZGluZycpIHJldHVyblxuICAgIHVzZXJJbml0aWF0ZWRIaXRsRGVjaXNpb25SZWYuY3VycmVudCA9IHRydWVcbiAgICB0cmFja0hpdGxEZWNpc2lvbignZGVueScsICd1c2VyJylcbiAgICBzZXRMb2NhbFN0YXR1cygncmVqZWN0ZWQnKVxuICAgIG9uUmVqZWN0KGFjdGlvbnMubWFwKGEgPT4gYS50aHJlYWRfaWQpKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NBcHByb3ZhbEJveD5cbiAgICAgIDxTQ0FCSGVhZGVyPlxuICAgICAgICA8U0NBQlRpdGxlPnt0KCdhcHByb3ZhbEJveC50aXRsZScpfTwvU0NBQlRpdGxlPlxuICAgICAgPC9TQ0FCSGVhZGVyPlxuXG4gICAgICA8U0NBQkRlc2NyaXB0aW9uPnt0KCdhcHByb3ZhbEJveC5kZXNjcmlwdGlvbicpfTwvU0NBQkRlc2NyaXB0aW9uPlxuXG4gICAgICA8U0NBQkFjdGlvbnNMaXN0ICRleHBhbmRlZD17aXNFeHBhbmRlZH0+XG4gICAgICAgIHthY3Rpb25zLm1hcChhY3Rpb24gPT4ge1xuICAgICAgICAgIGNvbnN0IHNwZWNpYWxDb3B5ID0gZ2V0U3BlY2lhbEFjdGlvbkNvcHkodCwgYWN0aW9uKVxuICAgICAgICAgIGNvbnN0IGxhYmVsID0gc3BlY2lhbENvcHkudGl0bGUgfHwgZ2V0QWN0aW9uTGFiZWwodCwgYWN0aW9uLnRvb2xfbmFtZSwgKGFjdGlvbiBhcyBhbnkpLmRpc3BsYXlfbmFtZSlcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFNDQUJBY3Rpb25JdGVtIGtleT17YWN0aW9uLnRocmVhZF9pZH0+XG4gICAgICAgICAgICAgIDxTQ0FCQWN0aW9uTmFtZT57bGFiZWx9PC9TQ0FCQWN0aW9uTmFtZT5cbiAgICAgICAgICAgICAge3NwZWNpYWxDb3B5LmRlc2NyaXB0aW9uID8gKFxuICAgICAgICAgICAgICAgIDxTQ0FCQWN0aW9uRGVzY3JpcHRpb24+e3NwZWNpYWxDb3B5LmRlc2NyaXB0aW9ufTwvU0NBQkFjdGlvbkRlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvU0NBQkFjdGlvbkl0ZW0+XG4gICAgICAgICAgKVxuICAgICAgICB9KX1cbiAgICAgIDwvU0NBQkFjdGlvbnNMaXN0PlxuXG4gICAgICB7bG9jYWxTdGF0dXMgPT09ICdwZW5kaW5nJyAmJiAhaXNQcm9qZWN0RGVsZXRlZCAmJiAoXG4gICAgICAgIDxTQ0FCQnV0dG9uc0NvbnRhaW5lcj5cbiAgICAgICAgICA8U0NBQkJ1dHRvbiAkdmFyaWFudD1cInJlamVjdFwiIG9uQ2xpY2s9e2hhbmRsZVJlamVjdH0gJGRpc2FibGVkPXtpc0xvYWRpbmd9PlxuICAgICAgICAgICAge3QoJ2FwcHJvdmFsQm94LmRlbnknKX1cbiAgICAgICAgICA8L1NDQUJCdXR0b24+XG4gICAgICAgICAgPFNDQUJCdXR0b24gJHZhcmlhbnQ9XCJhcHByb3ZlXCIgb25DbGljaz17aGFuZGxlQXBwcm92ZX0gJGRpc2FibGVkPXtpc0xvYWRpbmd9PlxuICAgICAgICAgICAge3QoJ2FwcHJvdmFsQm94LmFwcHJvdmUnKX1cbiAgICAgICAgICA8L1NDQUJCdXR0b24+XG4gICAgICAgIDwvU0NBQkJ1dHRvbnNDb250YWluZXI+XG4gICAgICApfVxuICAgICAge2xvY2FsU3RhdHVzICE9PSAncGVuZGluZycgJiYgKFxuICAgICAgICA8U0NBQlN0YXR1c0JhZGdlICRzdGF0dXM9e2xvY2FsU3RhdHVzfT5cbiAgICAgICAgICB7bG9jYWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgPyAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8Q2hlY2tDaXJjbGUgd2lkdGg9ezIyfSBoZWlnaHQ9ezIyfSBjb2xvcj1cIiMwMDg0MDBcIiAvPlxuICAgICAgICAgICAgICB7dCgnYXBwcm92YWxCb3guc3RhdHVzLmFwcHJvdmVkJyl9XG4gICAgICAgICAgICAgIHttYW51YWxBcHByb3ZhbERldGVjdGVkICYmIChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17d2FybmluZ01lc3NhZ2UgfHwgdCgnYXBwcm92YWxCb3gubWFudWFsQXBwcm92YWxXYXJuaW5nJyl9IHBsYWNlbWVudD1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICA8U0NBQlN0YXR1c1dhcm5pbmdJY29uPlxuICAgICAgICAgICAgICAgICAgICA8QWxlcnQgY29sb3I9XCIjRUFBMTFBXCIgd2lkdGg9XCIxM3B4XCIgaGVpZ2h0PVwiMTNweFwiIC8+XG4gICAgICAgICAgICAgICAgICA8L1NDQUJTdGF0dXNXYXJuaW5nSWNvbj5cbiAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPENyb3NzQ2lyY2xlIHdpZHRoPXsyMn0gaGVpZ2h0PXsyMn0gY29sb3I9XCIjQzcwNTA1XCIgLz5cbiAgICAgICAgICAgICAge3QoJ2FwcHJvdmFsQm94LnN0YXR1cy5kZW5pZWQnKX1cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NBQlN0YXR1c0JhZGdlPlxuICAgICAgKX1cbiAgICA8L1NDQXBwcm92YWxCb3g+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0EsU0FBU0EsUUFBUSxFQUFFQyxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsV0FBVyxFQUFFQyxPQUFPLFFBQVEsT0FBTztBQUN6RSxTQUFTQyxLQUFLLFFBQVEsd0NBQXdDO0FBQzlELFNBQVNDLFdBQVcsUUFBUSw4Q0FBOEM7QUFDMUUsU0FBU0MsV0FBVyxRQUFRLDhDQUE4QztBQUMxRSxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBQ3RFLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBRTlDLFNBQ0VDLGFBQWEsRUFDYkMsVUFBVSxFQUNWQyxTQUFTLEVBQ1RDLGVBQWUsRUFDZkMsZUFBZSxFQUNmQyxjQUFjLEVBQ2RDLGNBQWMsRUFDZEMscUJBQXFCLEVBQ3JCQyxvQkFBb0IsRUFDcEJDLFVBQVUsRUFDVkMsZUFBZSxFQUNmQyxxQkFBcUIsUUFDaEIsc0JBQXNCO0FBQzdCLFNBQVNDLFFBQVEsUUFBUSwyQkFBMkI7QUFDcEQsU0FBU0MsZ0JBQWdCLFFBQVEsaUNBQWlDO0FBQ2xFLFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLHlCQUF5QjtBQUMxRCxTQUNFQyx5QkFBeUIsRUFDekJDLHlCQUF5QixFQUN6QkMsNEJBQTRCLEVBQzVCQyxxQkFBcUIsUUFDaEIsOEJBQThCO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBLEVBQUFDLElBQUEsSUFBQUMsS0FBQSxFQUFBQyxRQUFBLElBQUFDLFNBQUE7QUFFckMsU0FBU0Msc0JBQXNCQSxDQUFDQyxRQUFpQixFQUFVO0VBQ3pELElBQU1DLFVBQVUsR0FBR1QscUJBQXFCLENBQUNRLFFBQVEsSUFBSSxTQUFTLENBQUM7RUFDL0QsSUFBTUUsVUFBVSxHQUFHRCxVQUFVLENBQUNFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUNDLElBQUksQ0FBQyxDQUFDO0VBQ3ZELElBQUksQ0FBQ0YsVUFBVSxFQUFFLE9BQU8sU0FBUztFQUNqQyxPQUFPQSxVQUFVLENBQUNHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsV0FBVyxDQUFDLENBQUMsR0FBR0osVUFBVSxDQUFDSyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2pFO0FBRUEsU0FBU0MsY0FBY0EsQ0FBQ0MsQ0FBMEIsRUFBRVQsUUFBaUIsRUFBRVUsV0FBb0IsRUFBVTtFQUNuRyxJQUFNQyxrQkFBa0IsR0FBR25CLHFCQUFxQixDQUFDUSxRQUFRLElBQUksU0FBUyxDQUFDO0VBQ3ZFLElBQU1ZLGNBQWMsMEJBQUFDLE1BQUEsQ0FBMEJGLGtCQUFrQixDQUFFO0VBQ2xFLElBQU1HLGVBQWUsR0FBR0wsQ0FBQyxDQUFDRyxjQUFjLENBQUM7RUFFekMsSUFBSUUsZUFBZSxLQUFLRixjQUFjLEVBQUUsT0FBT0UsZUFBZTtFQUM5RCxJQUFJSixXQUFXLGFBQVhBLFdBQVcsZUFBWEEsV0FBVyxDQUFFTixJQUFJLENBQUMsQ0FBQyxFQUFFLE9BQU9NLFdBQVc7RUFDM0MsT0FBT1gsc0JBQXNCLENBQUNZLGtCQUFrQixDQUFDO0FBQ25EO0FBRUEsU0FBU0ksa0JBQWtCQSxDQUFDQyxRQUFvQyxFQUFVO0VBQ3hFLElBQUksQ0FBQ0EsUUFBUSxJQUFJQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0YsUUFBUSxDQUFDLEVBQUUsT0FBTyxFQUFFO0VBQ25ELE9BQU9HLE1BQU0sQ0FBQ0gsUUFBUSxDQUFDSSxlQUFlLElBQUlKLFFBQVEsQ0FBQ0ssZ0JBQWdCLElBQUksRUFBRSxDQUFDLENBQUNDLFdBQVcsQ0FBQyxDQUFDO0FBQzFGO0FBRUEsU0FBU0Msb0JBQW9CQSxDQUMzQmQsQ0FBMEIsRUFDMUJlLE1BQXFCLEVBQ3FCO0VBQzFDLElBQU1iLGtCQUFrQixHQUFHbkIscUJBQXFCLENBQUNnQyxNQUFNLENBQUNDLFNBQVMsQ0FBQztFQUNsRSxJQUFNQyxlQUFlLEdBQUdYLGtCQUFrQixDQUFDUyxNQUFNLENBQUNHLFNBQVMsQ0FBQztFQUU1RCxJQUFJaEIsa0JBQWtCLEtBQUssZUFBZSxFQUFFO0lBQzFDLE9BQU87TUFDTGlCLEtBQUssRUFBRW5CLENBQUMsQ0FBQyx3Q0FBd0MsQ0FBQztNQUNsRG9CLFdBQVcsRUFBRXBCLENBQUMsQ0FBQyw4Q0FBOEM7SUFDL0QsQ0FBQztFQUNIO0VBRUEsSUFBSUUsa0JBQWtCLEtBQUssb0JBQW9CLElBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUNtQixRQUFRLENBQUNKLGVBQWUsQ0FBQyxFQUFFO0lBQ3JHLE9BQU87TUFDTEUsS0FBSyxFQUFFbkIsQ0FBQyxDQUFDLHFEQUFxRCxDQUFDO01BQy9Eb0IsV0FBVyxFQUFFcEIsQ0FBQyxDQUFDLDJEQUEyRDtJQUM1RSxDQUFDO0VBQ0g7RUFFQSxPQUFPLENBQUMsQ0FBQztBQUNYO0FBa0JBLE9BQU8sSUFBTXNCLFdBQVcsR0FBRyxTQUFkQSxXQUFXQSxDQUFBQyxJQUFBLEVBV0E7RUFBQSxJQVZ0QkMsT0FBTyxHQUFBRCxJQUFBLENBQVBDLE9BQU87SUFDUEMsU0FBUyxHQUFBRixJQUFBLENBQVRFLFNBQVM7SUFDVEMsUUFBUSxHQUFBSCxJQUFBLENBQVJHLFFBQVE7SUFBQUMsV0FBQSxHQUFBSixJQUFBLENBQ1JLLE1BQU07SUFBTkEsTUFBTSxHQUFBRCxXQUFBLGNBQUcsU0FBUyxHQUFBQSxXQUFBO0lBQUFFLGNBQUEsR0FBQU4sSUFBQSxDQUNsQk8sU0FBUztJQUFUQSxTQUFTLEdBQUFELGNBQUEsY0FBRyxLQUFLLEdBQUFBLGNBQUE7SUFBQUUscUJBQUEsR0FBQVIsSUFBQSxDQUNqQlMsZ0JBQWdCO0lBQWhCQSxnQkFBZ0IsR0FBQUQscUJBQUEsY0FBRyxLQUFLLEdBQUFBLHFCQUFBO0lBQUFFLGVBQUEsR0FBQVYsSUFBQSxDQUN4QlcsVUFBVTtJQUFWQSxVQUFVLEdBQUFELGVBQUEsY0FBRyxLQUFLLEdBQUFBLGVBQUE7SUFDbEJFLGNBQWMsR0FBQVosSUFBQSxDQUFkWSxjQUFjO0lBQ2RDLGNBQWMsR0FBQWIsSUFBQSxDQUFkYSxjQUFjO0lBQUFDLHFCQUFBLEdBQUFkLElBQUEsQ0FDZGUsc0JBQXNCO0lBQXRCQSxzQkFBc0IsR0FBQUQscUJBQUEsY0FBRyxLQUFLLEdBQUFBLHFCQUFBO0VBRTlCLElBQUFFLGVBQUEsR0FBYzVFLGNBQWMsQ0FBQyxDQUFDYSxRQUFRLENBQUNnRSxNQUFNLENBQUMsQ0FBQztJQUF2Q3hDLENBQUMsR0FBQXVDLGVBQUEsQ0FBRHZDLENBQUM7RUFDVCxJQUFBeUMsU0FBQSxHQUFzQ3ZGLFFBQVEsQ0FBc0MwRSxNQUFNLENBQUM7SUFBQWMsVUFBQSxHQUFBQyxjQUFBLENBQUFGLFNBQUE7SUFBcEZHLFdBQVcsR0FBQUYsVUFBQTtJQUFFRyxjQUFjLEdBQUFILFVBQUE7RUFDbEMsSUFBQUksaUJBQUEsR0FBa0JyRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQTVCc0UsS0FBSyxHQUFBRCxpQkFBQSxDQUFMQyxLQUFLO0VBQ2IsSUFBTUMsY0FBYyxHQUFHckUsUUFBUSxDQUFDLENBQUM7RUFDakMsSUFBTXNFLHdCQUF3QixHQUFHN0YsTUFBTSxDQUFnQixJQUFJLENBQUM7RUFDNUQsSUFBTThGLDRCQUE0QixHQUFHOUYsTUFBTSxDQUFDLEtBQUssQ0FBQztFQUNsRCxJQUFNK0YsMkJBQTJCLEdBQUcvRixNQUFNLENBQWdCLElBQUksQ0FBQztFQUUvRCxJQUFNZ0csWUFBWSxHQUFHOUYsT0FBTyxDQUMxQjtJQUFBLE9BQ0U2RSxjQUFjLGFBQWRBLGNBQWMsY0FBZEEsY0FBYyxHQUNkWCxPQUFPLENBQ0o2QixHQUFHLENBQUMsVUFBQUMsQ0FBQztNQUFBLFVBQUFsRCxNQUFBLENBQU9rRCxDQUFDLENBQUNDLFNBQVMsT0FBQW5ELE1BQUEsQ0FBSWtELENBQUMsQ0FBQ0UsWUFBWTtJQUFBLENBQUUsQ0FBQyxDQUM1Q0MsSUFBSSxDQUFDLENBQUMsQ0FDTkMsSUFBSSxDQUFDLEdBQUcsQ0FBQztFQUFBLEdBQ2QsQ0FBQ3ZCLGNBQWMsRUFBRVgsT0FBTyxDQUMxQixDQUFDOztFQUVEO0VBQ0FyRSxTQUFTLENBQUMsWUFBTTtJQUNkMEYsY0FBYyxDQUFDLFVBQUFjLElBQUk7TUFBQSxPQUFLQSxJQUFJLEtBQUsvQixNQUFNLEdBQUdBLE1BQU0sR0FBRytCLElBQUk7SUFBQSxDQUFDLENBQUM7RUFDM0QsQ0FBQyxFQUFFLENBQUMvQixNQUFNLENBQUMsQ0FBQztFQUVaLElBQU1nQyxzQkFBc0IsR0FBRy9FLHlCQUF5QixDQUFDa0UsS0FBSyxDQUFDOztFQUUvRDtFQUNBNUYsU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJeUYsV0FBVyxLQUFLLFNBQVMsSUFBSSxDQUFDcEIsT0FBTyxDQUFDcUMsTUFBTSxFQUFFO0lBQ2xELElBQU1DLGFBQWEsR0FBR1YsWUFBWTtJQUNsQyxJQUFJSCx3QkFBd0IsQ0FBQ2MsT0FBTyxLQUFLRCxhQUFhLEVBQUU7SUFDeERiLHdCQUF3QixDQUFDYyxPQUFPLEdBQUdELGFBQWE7SUFDaERkLGNBQWMsQ0FBQ3RFLE1BQU0sQ0FBQ3NGLFVBQVUsRUFBRXBGLHlCQUF5QixDQUFDZ0Ysc0JBQXNCLEVBQUVwQyxPQUFPLENBQUMsQ0FBQztFQUMvRixDQUFDLEVBQUUsQ0FBQ3dCLGNBQWMsRUFBRVksc0JBQXNCLEVBQUVSLFlBQVksRUFBRVIsV0FBVyxFQUFFcEIsT0FBTyxDQUFDcUMsTUFBTSxDQUFDLENBQUM7RUFFdkYsSUFBTUksaUJBQWlCLEdBQUc1RyxXQUFXLENBQ25DLFVBQUM2RyxRQUEyQixFQUFpRDtJQUFBLElBQS9DQyxnQkFBaUMsR0FBQUMsU0FBQSxDQUFBUCxNQUFBLFFBQUFPLFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUcsTUFBTTtJQUN0RXBCLGNBQWMsQ0FBQ3RFLE1BQU0sQ0FBQzRGLGdCQUFnQixFQUFBQyxhQUFBLENBQUFBLGFBQUEsS0FDakMzRix5QkFBeUIsQ0FBQ2dGLHNCQUFzQixFQUFFcEMsT0FBTyxDQUFDO01BQzdEMEMsUUFBUSxFQUFSQSxRQUFRO01BQ1JNLGlCQUFpQixFQUFFTDtJQUFnQixFQUNwQyxDQUFDO0VBQ0osQ0FBQyxFQUNELENBQUMzQyxPQUFPLEVBQUVvQyxzQkFBc0IsRUFBRVosY0FBYyxDQUNsRCxDQUFDO0VBRUQ3RixTQUFTLENBQUMsWUFBTTtJQUNkK0YsNEJBQTRCLENBQUNhLE9BQU8sR0FBRyxLQUFLO0lBQzVDWiwyQkFBMkIsQ0FBQ1ksT0FBTyxHQUFHLElBQUk7RUFDNUMsQ0FBQyxFQUFFLENBQUNYLFlBQVksQ0FBQyxDQUFDOztFQUVsQjtBQUNGO0FBQ0E7QUFDQTtFQUNFakcsU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJeUUsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDSixPQUFPLENBQUNxQyxNQUFNLEVBQUU7SUFDN0MsSUFBSVosd0JBQXdCLENBQUNjLE9BQU8sS0FBS1gsWUFBWSxFQUFFO0lBQ3ZELElBQUlGLDRCQUE0QixDQUFDYSxPQUFPLEVBQUU7SUFDMUMsSUFBSVosMkJBQTJCLENBQUNZLE9BQU8sS0FBS1gsWUFBWSxFQUFFO0lBQzFERCwyQkFBMkIsQ0FBQ1ksT0FBTyxHQUFHWCxZQUFZO0lBQ2xELElBQU1xQixRQUFRLEdBQUc3QyxNQUFNLEtBQUssVUFBVTtJQUN0QyxJQUFJNkMsUUFBUSxJQUFJM0YsNEJBQTRCLENBQUMwQyxPQUFPLENBQUMsRUFBRTtJQUN2RHlDLGlCQUFpQixDQUFDUSxRQUFRLEdBQUcsUUFBUSxHQUFHLE1BQU0sRUFBRSxNQUFNLENBQUM7RUFDekQsQ0FBQyxFQUFFLENBQUNqRCxPQUFPLEVBQUU0QixZQUFZLEVBQUV4QixNQUFNLEVBQUVxQyxpQkFBaUIsQ0FBQyxDQUFDO0VBRXRELElBQU1TLGFBQWEsR0FBRyxTQUFoQkEsYUFBYUEsQ0FBQSxFQUFTO0lBQzFCLElBQUk1QyxTQUFTLElBQUljLFdBQVcsS0FBSyxTQUFTLEVBQUU7SUFDNUNNLDRCQUE0QixDQUFDYSxPQUFPLEdBQUcsSUFBSTtJQUMzQyxJQUFJLENBQUNqRiw0QkFBNEIsQ0FBQzBDLE9BQU8sQ0FBQyxFQUFFO01BQzFDeUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQztJQUNyQztJQUNBcEIsY0FBYyxDQUFDLFVBQVUsQ0FBQztJQUMxQnBCLFNBQVMsQ0FBQ0QsT0FBTyxDQUFDNkIsR0FBRyxDQUFDLFVBQUFDLENBQUM7TUFBQSxPQUFJQSxDQUFDLENBQUNDLFNBQVM7SUFBQSxFQUFDLENBQUM7RUFDMUMsQ0FBQztFQUVELElBQU1vQixZQUFZLEdBQUcsU0FBZkEsWUFBWUEsQ0FBQSxFQUFTO0lBQ3pCLElBQUk3QyxTQUFTLElBQUljLFdBQVcsS0FBSyxTQUFTLEVBQUU7SUFDNUNNLDRCQUE0QixDQUFDYSxPQUFPLEdBQUcsSUFBSTtJQUMzQ0UsaUJBQWlCLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNqQ3BCLGNBQWMsQ0FBQyxVQUFVLENBQUM7SUFDMUJuQixRQUFRLENBQUNGLE9BQU8sQ0FBQzZCLEdBQUcsQ0FBQyxVQUFBQyxDQUFDO01BQUEsT0FBSUEsQ0FBQyxDQUFDQyxTQUFTO0lBQUEsRUFBQyxDQUFDO0VBQ3pDLENBQUM7RUFFRCxvQkFDRXBFLEtBQUEsQ0FBQ3ZCLGFBQWE7SUFBQWdILFFBQUEsZ0JBQ1ozRixJQUFBLENBQUNwQixVQUFVO01BQUErRyxRQUFBLGVBQ1QzRixJQUFBLENBQUNuQixTQUFTO1FBQUE4RyxRQUFBLEVBQUU1RSxDQUFDLENBQUMsbUJBQW1CO01BQUMsQ0FBWTtJQUFDLENBQ3JDLENBQUMsZUFFYmYsSUFBQSxDQUFDbEIsZUFBZTtNQUFBNkcsUUFBQSxFQUFFNUUsQ0FBQyxDQUFDLHlCQUF5QjtJQUFDLENBQWtCLENBQUMsZUFFakVmLElBQUEsQ0FBQ2pCLGVBQWU7TUFBQzZHLFNBQVMsRUFBRTNDLFVBQVc7TUFBQTBDLFFBQUEsRUFDcENwRCxPQUFPLENBQUM2QixHQUFHLENBQUMsVUFBQXRDLE1BQU0sRUFBSTtRQUNyQixJQUFNK0QsV0FBVyxHQUFHaEUsb0JBQW9CLENBQUNkLENBQUMsRUFBRWUsTUFBTSxDQUFDO1FBQ25ELElBQU1nRSxLQUFLLEdBQUdELFdBQVcsQ0FBQzNELEtBQUssSUFBSXBCLGNBQWMsQ0FBQ0MsQ0FBQyxFQUFFZSxNQUFNLENBQUNDLFNBQVMsRUFBR0QsTUFBTSxDQUFTaUUsWUFBWSxDQUFDO1FBQ3BHLG9CQUNFN0YsS0FBQSxDQUFDbEIsY0FBYztVQUFBMkcsUUFBQSxnQkFDYjNGLElBQUEsQ0FBQ2YsY0FBYztZQUFBMEcsUUFBQSxFQUFFRztVQUFLLENBQWlCLENBQUMsRUFDdkNELFdBQVcsQ0FBQzFELFdBQVcsZ0JBQ3RCbkMsSUFBQSxDQUFDZCxxQkFBcUI7WUFBQXlHLFFBQUEsRUFBRUUsV0FBVyxDQUFDMUQ7VUFBVyxDQUF3QixDQUFDLEdBQ3RFLElBQUk7UUFBQSxHQUpXTCxNQUFNLENBQUN3QyxTQUtaLENBQUM7TUFFckIsQ0FBQztJQUFDLENBQ2EsQ0FBQyxFQUVqQlgsV0FBVyxLQUFLLFNBQVMsSUFBSSxDQUFDWixnQkFBZ0IsaUJBQzdDN0MsS0FBQSxDQUFDZixvQkFBb0I7TUFBQXdHLFFBQUEsZ0JBQ25CM0YsSUFBQSxDQUFDWixVQUFVO1FBQUM0RyxRQUFRLEVBQUMsUUFBUTtRQUFDQyxPQUFPLEVBQUVQLFlBQWE7UUFBQ1EsU0FBUyxFQUFFckQsU0FBVTtRQUFBOEMsUUFBQSxFQUN2RTVFLENBQUMsQ0FBQyxrQkFBa0I7TUFBQyxDQUNaLENBQUMsZUFDYmYsSUFBQSxDQUFDWixVQUFVO1FBQUM0RyxRQUFRLEVBQUMsU0FBUztRQUFDQyxPQUFPLEVBQUVSLGFBQWM7UUFBQ1MsU0FBUyxFQUFFckQsU0FBVTtRQUFBOEMsUUFBQSxFQUN6RTVFLENBQUMsQ0FBQyxxQkFBcUI7TUFBQyxDQUNmLENBQUM7SUFBQSxDQUNPLENBQ3ZCLEVBQ0E0QyxXQUFXLEtBQUssU0FBUyxpQkFDeEIzRCxJQUFBLENBQUNYLGVBQWU7TUFBQzhHLE9BQU8sRUFBRXhDLFdBQVk7TUFBQWdDLFFBQUEsRUFDbkNoQyxXQUFXLEtBQUssVUFBVSxnQkFDekJ6RCxLQUFBLENBQUFFLFNBQUE7UUFBQXVGLFFBQUEsZ0JBQ0UzRixJQUFBLENBQUN6QixXQUFXO1VBQUM2SCxLQUFLLEVBQUUsRUFBRztVQUFDQyxNQUFNLEVBQUUsRUFBRztVQUFDQyxLQUFLLEVBQUM7UUFBUyxDQUFFLENBQUMsRUFDckR2RixDQUFDLENBQUMsNkJBQTZCLENBQUMsRUFDaENzQyxzQkFBc0IsaUJBQ3JCckQsSUFBQSxDQUFDdkIsT0FBTztVQUFDeUQsS0FBSyxFQUFFaUIsY0FBYyxJQUFJcEMsQ0FBQyxDQUFDLG1DQUFtQyxDQUFFO1VBQUN3RixTQUFTLEVBQUMsT0FBTztVQUFBWixRQUFBLGVBQ3pGM0YsSUFBQSxDQUFDVixxQkFBcUI7WUFBQXFHLFFBQUEsZUFDcEIzRixJQUFBLENBQUMxQixLQUFLO2NBQUNnSSxLQUFLLEVBQUMsU0FBUztjQUFDRixLQUFLLEVBQUMsTUFBTTtjQUFDQyxNQUFNLEVBQUM7WUFBTSxDQUFFO1VBQUMsQ0FDL0I7UUFBQyxDQUNqQixDQUNWO01BQUEsQ0FDRCxDQUFDLGdCQUVIbkcsS0FBQSxDQUFBRSxTQUFBO1FBQUF1RixRQUFBLGdCQUNFM0YsSUFBQSxDQUFDeEIsV0FBVztVQUFDNEgsS0FBSyxFQUFFLEVBQUc7VUFBQ0MsTUFBTSxFQUFFLEVBQUc7VUFBQ0MsS0FBSyxFQUFDO1FBQVMsQ0FBRSxDQUFDLEVBQ3JEdkYsQ0FBQyxDQUFDLDJCQUEyQixDQUFDO01BQUEsQ0FDL0I7SUFDSCxDQUNjLENBQ2xCO0VBQUEsQ0FDWSxDQUFDO0FBRXBCLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -28,7 +28,7 @@ import { useTabTaskDefault } from '../useTabTaskDefault';
28
28
  import { TASK_URL_REGEX_PATTERN } from '../../constants/taskUrls';
29
29
  import { dispatchMaiaHoursCharged, isHoursChargeTool } from '../../constants/plannerSyncEvents';
30
30
  import { fetchAgentDetail } from '../../services/maia/Agents/fetchAgentDetail';
31
- import { buildHitlActionTypeList, getHitlAnalyticsAgentType } from '../../utils/hitlAnalytics';
31
+ import { buildHitlActionTypeList, getHitlAnalyticsAgentType, normalizeHitlToolName, trackManualHitlEvents } from '../../utils/hitlAnalytics';
32
32
  import { sessionStreamingText } from '../../store/sessions/sessionStreamingText';
33
33
  import { useSessionsStore } from '../../store/sessions/useSessionsStore';
34
34
  import { useSessionMeta } from '../../store/sessions/useSessionMeta';
@@ -322,6 +322,8 @@ export var useChatManager = function useChatManager(_ref4) {
322
322
  * no lo detecta vía `previousMessage.approval`. Lo guardamos acá para consumirlo después.
323
323
  */
324
324
  var lastManualApprovalRef = useRef(null);
325
+ /** Evita duplicar AI_CHAT_HITL / AI_CHAT_HITL_OPTION en aprobaciones manuales por lote. */
326
+ var trackedManualHitlKeysRef = useRef(new Set());
325
327
  /** Contexto del mensaje de aprobación previo al ejecutar continue-thread. */
326
328
  var hitlExecutionContextRef = useRef(null);
327
329
  var isProcessingRef = useRef(false);
@@ -582,7 +584,7 @@ export var useChatManager = function useChatManager(_ref4) {
582
584
  var handleStreamFinish = useCallback(/*#__PURE__*/function () {
583
585
  var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(ctx, content, sources, memorySessionId, rawAttachments, suggestions, completedAgentId) {
584
586
  var _previousMessage$appr, _window$taskPanel, _createAgentFollowUp, _editAgentFollowUp;
585
- var sessionId, placeholderId, isActive, tempMessageId, attachments, taskUrlRegex, matches, contentToAdd, previousMessage, hasApprovalInPreviousMessage, TASK_CREATION_TOOLS, TASK_EDIT_TOOLS, TASK_DELETE_TOOLS, pendingActions, wasTaskCreation, wasTaskEdit, wasTaskDelete, wasCreateAgentApproved, wasConfigureAgentAccessApproved, createAgentFollowUp, configuredAgentId, wasEditAgentApproved, editAgentFollowUp, fromStream, fromArgs, resolvedAgentId, taskIdsFromUrls, taskIdsFromDeleteApproval, taskIdsFromDeletionText, taskIdsForDashboard, shouldSyncDashboard, taskIds, tab, tabSegment, lastProjectMessage, contextProjectIdRaw, contextProjectId, pathMatch, routeProjectId, isOnProjectRoute, _window$newProjectDas, _window$newProjectDas2, _window$newProjectDas3, _window$newProjectDas4, _window$newProjectDas5, _window$newProjectDas6, openTaskPanelId, manualApproval, manualWasTaskEdit, manualWasTaskDelete, hoursToolsFromApproval, wasHoursChargeApproved, manualHoursTool, wasHoursChargeManualApproved, tools, _manualApproval$toolA, manualPseudoAction, affectedTaskIds, _window$taskPanel2, _window$taskPanel2$re, _getChatsStoreState, isChatViewVisible, markChatAsRead, customEvent;
587
+ var sessionId, placeholderId, isActive, tempMessageId, attachments, taskUrlRegex, matches, contentToAdd, previousMessage, hasApprovalInPreviousMessage, TASK_CREATION_TOOLS, TASK_EDIT_TOOLS, TASK_DELETE_TOOLS, pendingActions, wasTaskCreation, wasTaskEdit, wasTaskDelete, wasCreateAgentApproved, wasConfigureAgentAccessApproved, createAgentFollowUp, configuredAgentId, manualApprovalForAnalytics, wasManualCreateAgentApproved, wasEditAgentApproved, editAgentFollowUp, fromStream, fromArgs, resolvedAgentId, taskIdsFromUrls, taskIdsFromDeleteApproval, taskIdsFromDeletionText, taskIdsForDashboard, shouldSyncDashboard, taskIds, tab, tabSegment, lastProjectMessage, contextProjectIdRaw, contextProjectId, pathMatch, routeProjectId, isOnProjectRoute, _window$newProjectDas, _window$newProjectDas2, _window$newProjectDas3, _window$newProjectDas4, _window$newProjectDas5, _window$newProjectDas6, openTaskPanelId, manualApproval, manualWasTaskEdit, manualWasTaskDelete, hoursToolsFromApproval, wasHoursChargeApproved, manualHoursTool, wasHoursChargeManualApproved, tools, _manualApproval$toolA, manualPseudoAction, affectedTaskIds, _window$taskPanel2, _window$taskPanel2$re, _getChatsStoreState, isChatViewVisible, markChatAsRead, customEvent;
586
588
  return _regeneratorRuntime.wrap(function (_context) {
587
589
  while (1) switch (_context.prev = _context.next) {
588
590
  case 0:
@@ -670,6 +672,19 @@ export var useChatManager = function useChatManager(_ref4) {
670
672
  created_agent_id: completedAgentId.trim()
671
673
  } : {}));
672
674
  }
675
+ manualApprovalForAnalytics = lastManualApprovalRef.current;
676
+ wasManualCreateAgentApproved = manualApprovalForAnalytics && normalizeHitlToolName(manualApprovalForAnalytics.toolName) === 'create_agent';
677
+ if (wasManualCreateAgentApproved) {
678
+ event(EVENTS.aiChatHitlOption, _objectSpread({
679
+ agent_type: getHitlAnalyticsAgentType(agent),
680
+ action_type: 'create_agent',
681
+ decision: 'accept',
682
+ resolution_source: 'manual',
683
+ option: 'create_agent'
684
+ }, completedAgentId !== null && completedAgentId !== void 0 && completedAgentId.trim() ? {
685
+ created_agent_id: completedAgentId.trim()
686
+ } : {}));
687
+ }
673
688
  wasEditAgentApproved = hasApprovalInPreviousMessage && (previousMessage === null || previousMessage === void 0 ? void 0 : previousMessage.approvalStatus) === 'approved' && pendingActions.some(function (action) {
674
689
  return (action.tool_name || '').toLowerCase() === 'edit_agent';
675
690
  });
@@ -880,10 +895,14 @@ export var useChatManager = function useChatManager(_ref4) {
880
895
  }
881
896
  if (approval.manual_approval_detected) {
882
897
  var _approval$pending_act2, _ref6, _tool_name, _tool_args;
898
+ trackManualHitlEvents(event, {
899
+ impression: EVENTS.aiChatHitl,
900
+ option: EVENTS.aiChatHitlOption
901
+ }, agent, approval, trackedManualHitlKeysRef.current);
883
902
  var firstAction = (_approval$pending_act2 = approval.pending_actions) === null || _approval$pending_act2 === void 0 ? void 0 : _approval$pending_act2[0];
884
903
  var toolName = (_ref6 = (_tool_name = approval.tool_name) !== null && _tool_name !== void 0 ? _tool_name : firstAction === null || firstAction === void 0 ? void 0 : firstAction.tool_name) !== null && _ref6 !== void 0 ? _ref6 : '';
885
904
  var toolArgs = ((_tool_args = approval.tool_args) !== null && _tool_args !== void 0 ? _tool_args : firstAction === null || firstAction === void 0 ? void 0 : firstAction.tool_args) || null;
886
- if (toolName && isActive) {
905
+ if (toolName) {
887
906
  lastManualApprovalRef.current = {
888
907
  toolName: toolName,
889
908
  toolArgs: toolArgs
@@ -914,7 +933,7 @@ export var useChatManager = function useChatManager(_ref4) {
914
933
  getChatsStoreState().markChatAsUnread(sessionId);
915
934
  notifySessionFinishedInBackground(sessionId, 'approval_required');
916
935
  }
917
- }, [commitToSession, dropFromSession]);
936
+ }, [agent, commitToSession, dropFromSession, event]);
918
937
  var _useOrchestratorStrea = useOrchestratorStream({
919
938
  activeSessionId: activeSessionId,
920
939
  onError: handleStreamError,
@@ -1467,4 +1486,4 @@ export var useChatManager = function useChatManager(_ref4) {
1467
1486
  isDisabled: waitingResponse || loadingMessages
1468
1487
  };
1469
1488
  };
1470
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsImJ1aWxkQ29udGV4dE1lc3NhZ2UiLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwidXNlUHJvamVjdHMiLCJ1c2VUYWJUYXNrRGVmYXVsdCIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJkaXNwYXRjaE1haWFIb3Vyc0NoYXJnZWQiLCJpc0hvdXJzQ2hhcmdlVG9vbCIsImZldGNoQWdlbnREZXRhaWwiLCJidWlsZEhpdGxBY3Rpb25UeXBlTGlzdCIsImdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUiLCJzZXNzaW9uU3RyZWFtaW5nVGV4dCIsInVzZVNlc3Npb25zU3RvcmUiLCJ1c2VTZXNzaW9uTWV0YSIsInNlc3Npb25TdHJlYW1NYW5hZ2VyIiwiTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyIsImFjdGl2ZVZpZXciLCJub3RpZnlTZXNzaW9uRmluaXNoZWRJbkJhY2tncm91bmQiLCJidWlsZFNpZGViYXJTZXNzaW9uVGl0bGUiLCJlbnN1cmVTZXNzaW9uSW5TaWRlYmFyIiwiaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZCIsImdldENoYXRzU3RvcmVTdGF0ZSIsInVzZUNoYXRzU3RvcmUiLCJub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MiLCJhdHRhY2htZW50c09yT3B0aW9ucyIsIl9vcHRpb25zJGF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5IiwiYXR0YWNobWVudHMiLCJvcHRpb25zIiwicmVzb2x2ZVByb2plY3RUb1JlcXVlc3QiLCJjaGlwc1Byb2plY3QiLCJsYXN0TWVzc2FnZVByb2plY3RJZCIsImNoaXBzUHJvamVjdElkIiwicHJvamVjdElkIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJwYXJzZWQiLCJyZXNvbHZlQ2xpZW50UGF5bG9hZCIsImN0eENsaWVudCIsImN0eFByb2plY3QiLCJfY3R4UHJvamVjdCRjbGllbnQiLCJpZCIsIl9vYmplY3RTcHJlYWQiLCJjbGllbnRJZCIsIm5hbWUiLCJjbGllbnROYW1lIiwiY2xpZW50Iiwibm9ybWFsaXplQXNzaXN0YW50QXR0YWNobWVudHMiLCJyYXdBdHRhY2htZW50cyIsImZpbHRlciIsImF0dGFjaG1lbnQiLCJfdHlwZW9mIiwibWFwIiwiaW5kZXgiLCJ0cmltIiwiY29uY2F0IiwidHlwZSIsIm1pbWVUeXBlIiwibWltZV90eXBlIiwiZnVsbEZpbGVOYW1lIiwiaW5jbHVkZXMiLCJudW1lcmljU2l6ZSIsInNpemUiLCJmaWxlIiwiRmlsZSIsInVybF9vcmlnaW5hbCIsInVuZGVmaW5lZCIsInVybF90aHVtYm5haWwiLCJ1cmxfZmlsZSIsInJvbGUiLCJleHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MiLCJwZW5kaW5nQWN0aW9ucyIsImlkcyIsInB1c2hJZCIsInJhdyIsIm4iLCJwYXJzZUludCIsIlN0cmluZyIsImlzTmFOIiwicHVzaCIsImZvckVhY2giLCJhY3Rpb24iLCJfcmVjJHRhc2tfaWQiLCJhcmdzIiwidG9vbF9hcmdzIiwicmVjIiwidGFza19pZCIsInRhc2tfaWRzIiwidGFza3MiLCJ0IiwiX3RyZWMkdGFza19pZCIsInRyZWMiLCJleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyIsInRvb2xfbmFtZSIsIl9yZWMkdGFza19pZDIiLCJsaXN0IiwidGlkIiwiZXh0cmFjdEFnZW50SWRGcm9tRWRpdEFnZW50UGVuZGluZ0FjdGlvbnMiLCJfcmVjJGFnZW50X2lkIiwiZWRpdEFjdGlvbiIsImZpbmQiLCJhIiwidG9Mb3dlckNhc2UiLCJhZ2VudF9pZCIsImFnZW50SWQiLCJleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUiLCJ0b29sTmFtZSIsIl9yZWYiLCJfcmVjJGFnZW50X2lkMiIsImV4dHJhY3RUYXNrSWRzRnJvbUFzc2lzdGFudERlbGV0aW9uVGV4dCIsInRleHQiLCJsYWJlbGVkIiwibWF0Y2giLCJib2xkIiwidXNlU3RhYmxlQ2FsbGJhY2tzIiwiYXV0aFVzZXIiLCJjdXJyZW50VXNlciIsInRvU3RyaW5nIiwiZmlyc3ROYW1lIiwiYXZhdGFyIiwicGljdHVyZSIsImN1cnJlbnQiLCJmaW5kTWVzc2FnZVdpdGhBcHByb3ZhbEJ5VGhyZWFkSWRzIiwidGhyZWFkSWRzIiwiYWN0aXZlTWVzc2FnZXMiLCJmcm9tQWN0aXZlVmlldyIsIm1lc3NhZ2UiLCJfbWVzc2FnZSRhcHByb3ZhbCIsImFwcHJvdmFsIiwicGVuZGluZ19hY3Rpb25zIiwic29tZSIsInRocmVhZF9pZCIsInNlc3Npb25JZCIsInNlc3Npb25faWQiLCJnZXQiLCJfdXNlU2Vzc2lvbnNTdG9yZSRnZXQiLCJnZXRTdGF0ZSIsIm1lc3NhZ2VzIiwic2Vzc2lvbkVudHJ5IiwiT2JqZWN0IiwiZW50cmllcyIsIl9yZWYyIiwiX3JlZjMiLCJfc2xpY2VkVG9BcnJheSIsInNlc3Npb25NZXNzYWdlcyIsIl9tZXNzYWdlJGFwcHJvdmFsMiIsIl9zZXNzaW9uRW50cnkiLCJmb3VuZCIsIl9tZXNzYWdlJGFwcHJvdmFsMyIsInVzZUNoYXRNYW5hZ2VyIiwiX3JlZjQiLCJpbml0aWFsQ2hhdElkIiwiY2hhdElkIiwidXNlckluaXRpYWxNZXNzYWdlIiwib25FcnJvciIsIl9yZWY0JGFnZW50cyIsImFnZW50cyIsIl91c2VUIiwiX3VzZUdsb2JhbENvbnRleHQiLCJwcm9qZWN0Iiwic2V0UHJvamVjdCIsInNldENsaWVudCIsInRhc2siLCJzZXRUYXNrIiwiYWdlbnQiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsInNldENoaXBzUHJvamVjdCIsImV2ZW50IiwiX3VzZVByb2plY3RzIiwiZmV0Y2hQcm9qZWN0cyIsIl91c2VTdGFibGVDYWxsYmFja3MiLCJfdXNlVGFiVGFza0RlZmF1bHQiLCJnZXRUYWJUYXNrRGVmYXVsdCIsImN1cnJlbnRNZXNzYWdlSWQiLCJjdXJyZW50VXNlclF1ZXN0aW9uIiwiY3VycmVudENoYXRJZCIsInNldEFjdGl2ZUNoYXRJZCIsInN0YXRlIiwicmVwb3J0ZWRFdmVudCIsIm1lc3NhZ2VzUmVmIiwibGFzdE1hbnVhbEFwcHJvdmFsUmVmIiwiaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYiLCJpc1Byb2Nlc3NpbmdSZWYiLCJmaXJzdFRpbWVSZWYiLCJzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmIiwiYWN0aXZlU3RyZWFtQ2hhdElkUmVmIiwiY2xlYXJTdHJlYW1VaVJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJhY3RpdmVMb2FkaW5ncyIsInNldEFjdGl2ZUxvYWRpbmdzIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJhY3RpdmVTZXNzaW9uSWQiLCJzZXRBY3RpdmVTZXNzaW9uSWQiLCJpc01vdW50ZWRSZWYiLCJsYXN0SGFuZGxlZFRlcm1pbmFsUmVmIiwiaXNXZWJTZWFyY2hBY3RpdmVSZWYiLCJpc0RlZXBTZWFyY2hBY3RpdmVSZWYiLCJjb250ZXh0UmVmIiwiX3VzZUNoYXRNZXNzYWdlcyIsImxvYWRpbmdNZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsImxvYWRNZXNzYWdlcyIsImFkZE1lc3NhZ2UiLCJyZW1vdmVNZXNzYWdlIiwiaGFuZGxlU2Nyb2xsIiwiY29tbWl0VG9TZXNzaW9uIiwiaXMiLCJkcm9wRnJvbVNlc3Npb24iLCJtZXNzYWdlSWQiLCJjbGVhclNlc3Npb25UYWlsIiwic2V0TWVzc2FnZXMiLCJzZXQiLCJhY3RpdmVTZXNzaW9uTWV0YSIsIl9hY3RpdmVTZXNzaW9uTWV0YSRmaSIsInN0YXR1cyIsImlzVGVybWluYWwiLCJrZXkiLCJmaW5pc2hlZEF0IiwidGFpbCIsImdldE1lc3NhZ2VzIiwiaGFzU3RhbGVQbGFjZWhvbGRlciIsIm1zZyIsImZvcmNlIiwiY3VzdG9tRXZlbnQiLCJDdXN0b21FdmVudCIsImRldGFpbCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsInByZXZpb3VzSW5pdGlhbENoYXRJZFJlZiIsInByZXZpb3VzSW5pdGlhbENoYXRJZCIsImlzQWN0aXZlIiwiaGFuZGxlU3RyZWFtRXJyb3IiLCJjdHgiLCJlcnJvck1lc3NhZ2UiLCJlcnJvclJhd01lc3NhZ2UiLCJfZXJyb3JSYXdNZXNzYWdlJG1hdGMiLCJfZXJyb3JSYXdNZXNzYWdlJG1hdGMyIiwicGxhY2Vob2xkZXJJZCIsImNsZWFyIiwiaXNBY2Nlc3NEZW5pZWQiLCJpc1Byb21wdFRvb0xvbmciLCJ1c2VkIiwiaXNFcnJvciIsInN1Z2dlc3Rpb25zIiwiZGF0ZSIsIkRhdGUiLCJ1c2VyIiwiQVNTSVNUQU5UIiwibWFya0NoYXRBc1VucmVhZCIsImhhbmRsZVN0cmVhbVVwZGF0ZSIsImNvbnRlbnQiLCJwbGFjZWhvbGRlckV4aXN0cyIsInN0YXJ0Iiwic2V0VGV4dCIsImhhbmRsZVN0cmVhbUZpbmlzaCIsIl9yZWY1IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJzb3VyY2VzIiwibWVtb3J5U2Vzc2lvbklkIiwiY29tcGxldGVkQWdlbnRJZCIsIl9wcmV2aW91c01lc3NhZ2UkYXBwciIsIl93aW5kb3ckdGFza1BhbmVsIiwiX2NyZWF0ZUFnZW50Rm9sbG93VXAiLCJfZWRpdEFnZW50Rm9sbG93VXAiLCJ0ZW1wTWVzc2FnZUlkIiwidGFza1VybFJlZ2V4IiwibWF0Y2hlcyIsImNvbnRlbnRUb0FkZCIsInByZXZpb3VzTWVzc2FnZSIsImhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UiLCJUQVNLX0NSRUFUSU9OX1RPT0xTIiwiVEFTS19FRElUX1RPT0xTIiwiVEFTS19ERUxFVEVfVE9PTFMiLCJ3YXNUYXNrQ3JlYXRpb24iLCJ3YXNUYXNrRWRpdCIsIndhc1Rhc2tEZWxldGUiLCJ3YXNDcmVhdGVBZ2VudEFwcHJvdmVkIiwid2FzQ29uZmlndXJlQWdlbnRBY2Nlc3NBcHByb3ZlZCIsImNyZWF0ZUFnZW50Rm9sbG93VXAiLCJjb25maWd1cmVkQWdlbnRJZCIsIndhc0VkaXRBZ2VudEFwcHJvdmVkIiwiZWRpdEFnZW50Rm9sbG93VXAiLCJmcm9tU3RyZWFtIiwiZnJvbUFyZ3MiLCJyZXNvbHZlZEFnZW50SWQiLCJ0YXNrSWRzRnJvbVVybHMiLCJ0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsIiwidGFza0lkc0Zyb21EZWxldGlvblRleHQiLCJ0YXNrSWRzRm9yRGFzaGJvYXJkIiwic2hvdWxkU3luY0Rhc2hib2FyZCIsInRhc2tJZHMiLCJ0YWIiLCJ0YWJTZWdtZW50IiwibGFzdFByb2plY3RNZXNzYWdlIiwiY29udGV4dFByb2plY3RJZFJhdyIsImNvbnRleHRQcm9qZWN0SWQiLCJwYXRoTWF0Y2giLCJyb3V0ZVByb2plY3RJZCIsImlzT25Qcm9qZWN0Um91dGUiLCJfd2luZG93JG5ld1Byb2plY3REYXMiLCJfd2luZG93JG5ld1Byb2plY3REYXMyIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzMyIsIl93aW5kb3ckbmV3UHJvamVjdERhczQiLCJfd2luZG93JG5ld1Byb2plY3REYXM1IiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzNiIsIm9wZW5UYXNrUGFuZWxJZCIsIm1hbnVhbEFwcHJvdmFsIiwibWFudWFsV2FzVGFza0VkaXQiLCJtYW51YWxXYXNUYXNrRGVsZXRlIiwiaG91cnNUb29sc0Zyb21BcHByb3ZhbCIsIndhc0hvdXJzQ2hhcmdlQXBwcm92ZWQiLCJtYW51YWxIb3Vyc1Rvb2wiLCJ3YXNIb3Vyc0NoYXJnZU1hbnVhbEFwcHJvdmVkIiwidG9vbHMiLCJfbWFudWFsQXBwcm92YWwkdG9vbEEiLCJtYW51YWxQc2V1ZG9BY3Rpb24iLCJhZmZlY3RlZFRhc2tJZHMiLCJfd2luZG93JHRhc2tQYW5lbDIiLCJfd2luZG93JHRhc2tQYW5lbDIkcmUiLCJfZ2V0Q2hhdHNTdG9yZVN0YXRlIiwiaXNDaGF0Vmlld1Zpc2libGUiLCJtYXJrQ2hhdEFzUmVhZCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwibGVuZ3RoIiwiYWJydXB0IiwiUmVnRXhwIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwibWF0Y2hBbGwiLCJtIiwiYXQiLCJhcHByb3ZhbFN0YXR1cyIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJhaUNoYXRIaXRsT3B0aW9uIiwiYWdlbnRfdHlwZSIsImFjdGlvbl90eXBlIiwiZGVjaXNpb24iLCJvcHRpb24iLCJjcmVhdGVkX2FnZW50X2lkIiwic2VudCIsInJlcGxhY2UiLCJ1cmwiLCJsb2NhdGlvbiIsInBhdGhuYW1lIiwibmV3UHJvamVjdERhc2hib2FyZCIsImFkZEV4aXN0aW5nVGFza1RvRGFzaGJvYXJkIiwiY2FsbCIsImVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZCIsImRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQiLCJ0YXNrUGFuZWwiLCJ0YXNrSWQiLCJzb3VyY2UiLCJ0b29sQXJncyIsInJlZmV0Y2hUYXNrIiwidGhlbiIsImNoYXRBZ2VudCIsImVyciIsImNvbnNvbGUiLCJlcnJvciIsInN0b3AiLCJfeCIsIl94MiIsIl94MyIsIl94NCIsIl94NSIsIl94NiIsIl94NyIsImFwcGx5IiwiYXJndW1lbnRzIiwiaGFuZGxlU3RyZWFtU3RvcCIsImlzRnJvbnRlbmRDYW5jZWxsZWQiLCJzZXRUaW1lb3V0IiwiaGFuZGxlQXBwcm92YWxSZXF1aXJlZCIsImFjY3VtdWxhdGVkQ29udGVudCIsIl9hcHByb3ZhbCRwZW5kaW5nX2FjdCIsImhpdGxDb250ZXh0Iiwib3JpZ2luYWxfdGhyZWFkX2lkIiwibWVzc2FnZVRleHQiLCJtYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQiLCJfYXBwcm92YWwkcGVuZGluZ19hY3QyIiwiX3JlZjYiLCJfdG9vbF9uYW1lIiwiX3Rvb2xfYXJncyIsImZpcnN0QWN0aW9uIiwiX3VzZU9yY2hlc3RyYXRvclN0cmVhIiwib25TdHJlYW1VcGRhdGUiLCJvbkZpbmlzaFN0cmVhbSIsIm9uU3RvcCIsIm9uQXBwcm92YWxSZXF1aXJlZCIsImFza01haWEiLCJ3YWl0aW5nUmVzcG9uc2UiLCJpc0xvYWRpbmciLCJpc1dyaXRpbmciLCJsb2FkaW5nTWVzc2FnZSIsInN0cmVhbUFjdGl2aXR5IiwidXBkYXRlU3RyZWFtQWN0aXZpdHkiLCJzdG9wU3RyZWFtaW5nIiwiY3VycmVudFByb2plY3QiLCJzZW5kTWVzc2FnZSIsIl9yZWY3IiwiX2NhbGxlZTIiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwibWVudGlvbnMiLCJmdWFJZCIsInNjSWQiLCJfbWVzc2FnZXNSZWYkY3VycmVudCIsIndpbGxTdGFydE5ld1N0cmVhbSIsIl9ub3JtYWxpemVTZW5kTWVzc2FnZSIsImVmZmVjdGl2ZU1lbnRpb25zIiwiY29udGV4dE1lc3NhZ2UiLCJwYXlsb2FkRnVhSWQiLCJwYXlsb2FkU2NJZCIsInBheWxvYWRDb250ZXh0RGF0YSIsImRpc3BsYXlNZXNzYWdlIiwibmV3TWVzc2FnZUlkIiwibGFzdE1lc3NhZ2VXaXRoUHJvamVjdCIsImN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyIsIl9jb250ZXh0UmVmJGN1cnJlbnQiLCJjdHhDaGlwc1Byb2plY3QiLCJjdHhUYXNrIiwic3RyZWFtaW5nUGxhY2Vob2xkZXJJZCIsImZpbmFsTWVzc2FnZSIsIl9vcHRpb25zJHByb2plY3RDaGFuZyIsIl9jb250ZXh0UmVmJGN1cnJlbnQkcCIsImhpc3RvcnkiLCJwcm9qZWN0VG9SZXF1ZXN0IiwicHJvamVjdHMiLCJwYXlsb2FkRmFxSWQiLCJwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQiLCJwYXlsb2FkRGF0YSIsIl9jb250ZXh0MiIsImdldEFjdGl2ZUNvdW50Iiwic2hvdyIsInNldmVyaXR5IiwiY29udGV4dERhdGEiLCJwbUFpVHlwZWRUZXh0IiwidGl0bGUiLCJVU0VSIiwicHJvamVjdENoYW5nZWQiLCJpbmNvbWVUeXBlIiwiaGlzdG9yeU1lc3NhZ2UiLCJsYW5nIiwidXNlcklkIiwibGFzdE5hbWUiLCJjb21wYW55SWQiLCJjb21wYW55X2lkIiwiYWdlbnROYW1lIiwiZmVlSWQiLCJwcm9qZWN0TmFtZSIsInRhc2tOYW1lIiwiZW50aXR5IiwiYWdlbnRFbnRpdHkiLCJhZ2VudFR5cGUiLCJlbW9qaSIsImFnZW50RW1vamkiLCJfeDgiLCJfeDkiLCJfeDAiLCJfeDEiLCJfeDEwIiwiX3gxMSIsIl94MTIiLCJjaGFuZ2VQcm9qZWN0IiwiaGFuZGxlRmVlZGJhY2siLCJfcmVmOCIsIl9jYWxsZWUzIiwiZmVlZGJhY2tQcm9wIiwiY2hhdE1lc3NhZ2VJZCIsInJlc3BvbnNlIiwiX2NvbnRleHQzIiwiQ2hhdHMiLCJ3YXNIZWxwZnVsQ2hhdCIsIlRIVU1CU19VUCIsIndhc0hlbHBmdWwiLCJfeDEzIiwiX3gxNCIsImhhbmRsZUFwcHJvdmFsRGVjaXNpb24iLCJfcmVmOSIsIl9jYWxsZWU0IiwiZWRpdGVkQWN0aW9ucyIsIm1lc3NhZ2VXaXRoQXBwcm92YWwiLCJmb3VuZFNlc3Npb25JZCIsIm5ld1N0YXR1cyIsImlzQWN0aXZlU2Vzc2lvbiIsInN0cmVhbU1lc3NhZ2VJZCIsImhpdGxDdHgiLCJyZWxlYXNlQWN0aXZlUHJvY2Vzc2luZyIsInJlc3VsdCIsIl9jb250ZXh0NCIsInN0YXJ0Q29udGludWVTdHJlYW0iLCJjb250aW51ZVJlcXVlc3QiLCJoaXRsRXhlY3V0aW9uQ29udGV4dCIsImNhbGxiYWNrcyIsImZpbmlzaFBheWxvYWQiLCJhcHByb3ZhbFBheWxvYWQiLCJzdGFydGVkIiwicmVhc29uIiwiX3gxNSIsIl94MTYiLCJfeDE3IiwiaW5pdGlhbGl6ZUNoYXQiLCJfY2FsbGVlNSIsIl91c2VySW5pdGlhbE1lc3NhZ2UkbSIsIl91c2VySW5pdGlhbE1lc3NhZ2UkYSIsIl9yZWYxIiwiX3Jlc29sdmVQcm9qZWN0VG9SZXF1IiwiX2N0eFByb2plY3QkaWQiLCJfY3R4Q2xpZW50JGlkIiwiX2N0eFRhc2skaWQiLCJfY3R4Q2hpcHNQcm9qZWN0JHByb2oiLCJoYXNJbml0aWFsTWVzc2FnZSIsImhhc0luaXRpYWxBdHRhY2htZW50cyIsImhhc0luaXRpYWxGYXEiLCJoYXNJbml0aWFsRnVhIiwiaGFzSW5pdGlhbFNjIiwiX2NvbnRleHRSZWYkY3VycmVudDIiLCJpbml0aWFsRGlzcGxheU1lc3NhZ2UiLCJfY29udGV4dDUiLCJCb29sZWFuIiwiaW5mbyIsInByb2plY3RQcm9wSWQiLCJyZXNldENoYXQiLCJwcmV2aW91c1Nlc3Npb25JZCIsInN0b3BHZW5lcmF0aW9uIiwiaXNEaXNhYmxlZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91c2VDaGF0TWFuYWdlci91c2VDaGF0TWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByYWRpeCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRlZC1vcHRpb25hbC1jaGFpbiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCdcbmltcG9ydCB7IHVzZUNoYXRNZXNzYWdlcyB9IGZyb20gJy4uL3VzZUNoYXRNZXNzYWdlcydcbmltcG9ydCB7IHVzZU9yY2hlc3RyYXRvclN0cmVhbSB9IGZyb20gJy4uL3VzZU9yY2hlc3RyYXRvclN0cmVhbSdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi91c2VUJ1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBTZW5kTWVzc2FnZU9wdGlvbnMsIFVzZUNoYXRNYW5hZ2VyUHJvcHMgfSBmcm9tICcuL3VzZUNoYXRNYW5hZ2VyLmludGVyZmFjZSdcbmltcG9ydCB7IHVzZVVzZXIsIENPUlVzZXIgfSBmcm9tICcuLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vdXNlRXZlbnQnXG5pbXBvcnQgbWFpYSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhJ1xuaW1wb3J0IHsgRmVlZGJhY2sgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL21vbGVjdWxlcy9NZXNzYWdlRmVlZGJhY2svTWVzc2FnZUZlZWRiYWNrJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENoYXRNZXNzYWdlVXNlciwgQ2hhdEhpc3RvcnlSb2xlLCBBcHByb3ZhbFJlcXVlc3QsIFBlbmRpbmdBY3Rpb24gfSBmcm9tICcuLi8uLi90eXBlcy9DaGF0J1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb24sIENvbnRleHRNZXNzYWdlLCBidWlsZENvbnRleHRNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlJ1xuXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB7IHVzZVByb2plY3RzIH0gZnJvbSAnLi4vdXNlUHJvamVjdHMnXG5pbXBvcnQgeyB1c2VUYWJUYXNrRGVmYXVsdCB9IGZyb20gJy4uL3VzZVRhYlRhc2tEZWZhdWx0J1xuaW1wb3J0IHsgVEFTS19VUkxfUkVHRVhfUEFUVEVSTiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy90YXNrVXJscydcbmltcG9ydCB7IGRpc3BhdGNoTWFpYUhvdXJzQ2hhcmdlZCwgaXNIb3Vyc0NoYXJnZVRvb2wgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvcGxhbm5lclN5bmNFdmVudHMnXG5pbXBvcnQgeyBmZXRjaEFnZW50RGV0YWlsIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvZmV0Y2hBZ2VudERldGFpbCdcbmltcG9ydCB7IGJ1aWxkSGl0bEFjdGlvblR5cGVMaXN0LCBnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlIH0gZnJvbSAnLi4vLi4vdXRpbHMvaGl0bEFuYWx5dGljcydcbmltcG9ydCB7IHR5cGUgSGl0bEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgc2Vzc2lvblN0cmVhbWluZ1RleHQgfSBmcm9tICcuLi8uLi9zdG9yZS9zZXNzaW9ucy9zZXNzaW9uU3RyZWFtaW5nVGV4dCdcbmltcG9ydCB7IHVzZVNlc3Npb25zU3RvcmUgfSBmcm9tICcuLi8uLi9zdG9yZS9zZXNzaW9ucy91c2VTZXNzaW9uc1N0b3JlJ1xuaW1wb3J0IHsgdXNlU2Vzc2lvbk1ldGEgfSBmcm9tICcuLi8uLi9zdG9yZS9zZXNzaW9ucy91c2VTZXNzaW9uTWV0YSdcbmltcG9ydCB7IHNlc3Npb25TdHJlYW1NYW5hZ2VyLCBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TIH0gZnJvbSAnLi4vLi4vc3RvcmUvc2Vzc2lvbnMvc2Vzc2lvblN0cmVhbU1hbmFnZXInXG5pbXBvcnQgeyBhY3RpdmVWaWV3IH0gZnJvbSAnLi4vLi4vc3RvcmUvc2Vzc2lvbnMvYWN0aXZlVmlldydcbmltcG9ydCB7IG5vdGlmeVNlc3Npb25GaW5pc2hlZEluQmFja2dyb3VuZCB9IGZyb20gJy4uLy4uL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25Ob3RpZmljYXRpb25zJ1xuaW1wb3J0IHsgYnVpbGRTaWRlYmFyU2Vzc2lvblRpdGxlLCBlbnN1cmVTZXNzaW9uSW5TaWRlYmFyIH0gZnJvbSAnLi4vLi4vc3RvcmUvY2hhdHNTaWRlYmFyT3B0aW1pc3RpYydcbmltcG9ydCB7IGlzU3RyZWFtaW5nUGxhY2Vob2xkZXJNZXNzYWdlSWQgfSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1Db250ZXh0IH0gZnJvbSAnLi4vdXNlT3JjaGVzdHJhdG9yU3RyZWFtL3VzZU9yY2hlc3RyYXRvclN0cmVhbS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBnZXRDaGF0c1N0b3JlU3RhdGUsIHVzZUNoYXRzU3RvcmUgfSBmcm9tICcuLi8uLi9zdG9yZS91c2VDaGF0c1N0b3JlJ1xuXG50eXBlIEF0dGFjaG1lbnRzT3JPcHRpb25zID0gQXR0YWNobWVudEZpbGVbXSB8IFNlbmRNZXNzYWdlT3B0aW9uc1xuXG5jb25zdCBub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MgPSAoYXR0YWNobWVudHNPck9wdGlvbnM/OiBBdHRhY2htZW50c09yT3B0aW9ucykgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShhdHRhY2htZW50c09yT3B0aW9ucykpIHtcbiAgICByZXR1cm4geyBhdHRhY2htZW50czogYXR0YWNobWVudHNPck9wdGlvbnMsIG9wdGlvbnM6IHt9IGFzIFNlbmRNZXNzYWdlT3B0aW9ucyB9XG4gIH1cblxuICBjb25zdCBvcHRpb25zOiBTZW5kTWVzc2FnZU9wdGlvbnMgPSBhdHRhY2htZW50c09yT3B0aW9ucyA/PyB7fVxuICByZXR1cm4geyBhdHRhY2htZW50czogb3B0aW9ucy5hdHRhY2htZW50cyA/PyBbXSwgb3B0aW9ucyB9XG59XG5cbi8qKiBjaGlwc1Byb2plY3QgZXMgbGEgZnVlbnRlIGRlIHZlcmRhZCBkZWwgcGluIHZpc2libGU7IHNpIG5vIGhheSBwaW4sIHJlc3RhdXJhciBkZXNkZSBoaXN0b3JpYWwuICovXG5jb25zdCByZXNvbHZlUHJvamVjdFRvUmVxdWVzdCA9IChcbiAgY2hpcHNQcm9qZWN0OiB7IHByb2plY3RJZD86IHN0cmluZyB9IHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgbGFzdE1lc3NhZ2VQcm9qZWN0SWQ6IG51bWJlciB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbik6IG51bWJlciB8IG51bGwgPT4ge1xuICBjb25zdCBjaGlwc1Byb2plY3RJZCA9IGNoaXBzUHJvamVjdD8ucHJvamVjdElkID8gTnVtYmVyKGNoaXBzUHJvamVjdC5wcm9qZWN0SWQpIDogbnVsbFxuICBpZiAoY2hpcHNQcm9qZWN0SWQgIT0gbnVsbCAmJiBOdW1iZXIuaXNGaW5pdGUoY2hpcHNQcm9qZWN0SWQpKSB7XG4gICAgcmV0dXJuIGNoaXBzUHJvamVjdElkXG4gIH1cbiAgaWYgKGxhc3RNZXNzYWdlUHJvamVjdElkICE9IG51bGwpIHtcbiAgICBjb25zdCBwYXJzZWQgPSBOdW1iZXIobGFzdE1lc3NhZ2VQcm9qZWN0SWQpXG4gICAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShwYXJzZWQpID8gcGFyc2VkIDogbnVsbFxuICB9XG4gIHJldHVybiBudWxsXG59XG5cbmNvbnN0IHJlc29sdmVDbGllbnRQYXlsb2FkID0gKFxuICBjdHhDbGllbnQ6IHsgaWQ/OiBudW1iZXI7IG5hbWU/OiBzdHJpbmcgfSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGN0eFByb2plY3Q6IFByb2plY3QgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiB7IGNsaWVudElkPzogbnVtYmVyOyBjbGllbnROYW1lPzogc3RyaW5nIH0gPT4ge1xuICBpZiAoY3R4Q2xpZW50Py5pZCkge1xuICAgIHJldHVybiB7IGNsaWVudElkOiBjdHhDbGllbnQuaWQsIC4uLihjdHhDbGllbnQubmFtZSA/IHsgY2xpZW50TmFtZTogY3R4Q2xpZW50Lm5hbWUgfSA6IHt9KSB9XG4gIH1cbiAgaWYgKGN0eFByb2plY3Q/LmNsaWVudElkICE9IG51bGwpIHtcbiAgICByZXR1cm4geyBjbGllbnRJZDogTnVtYmVyKGN0eFByb2plY3QuY2xpZW50SWQpIH1cbiAgfVxuICBpZiAoY3R4UHJvamVjdD8uY2xpZW50Py5pZCkge1xuICAgIHJldHVybiB7XG4gICAgICBjbGllbnRJZDogY3R4UHJvamVjdC5jbGllbnQuaWQsXG4gICAgICAuLi4oY3R4UHJvamVjdC5jbGllbnQubmFtZSA/IHsgY2xpZW50TmFtZTogY3R4UHJvamVjdC5jbGllbnQubmFtZSB9IDoge30pLFxuICAgIH1cbiAgfVxuICByZXR1cm4ge31cbn1cblxuY29uc3Qgbm9ybWFsaXplQXNzaXN0YW50QXR0YWNobWVudHMgPSAocmF3QXR0YWNobWVudHM6IHVua25vd24pOiBBdHRhY2htZW50RmlsZVtdID0+IHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHJhd0F0dGFjaG1lbnRzKSkge1xuICAgIHJldHVybiBbXVxuICB9XG5cbiAgcmV0dXJuIHJhd0F0dGFjaG1lbnRzXG4gICAgLmZpbHRlcigoYXR0YWNobWVudCk6IGF0dGFjaG1lbnQgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4gISFhdHRhY2htZW50ICYmIHR5cGVvZiBhdHRhY2htZW50ID09PSAnb2JqZWN0JylcbiAgICAubWFwKChhdHRhY2htZW50LCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgbmFtZSA9XG4gICAgICAgIHR5cGVvZiBhdHRhY2htZW50Lm5hbWUgPT09ICdzdHJpbmcnICYmIGF0dGFjaG1lbnQubmFtZS50cmltKCkgPyBhdHRhY2htZW50Lm5hbWUudHJpbSgpIDogYGZpbGUtJHtpbmRleCArIDF9YFxuICAgICAgY29uc3QgdHlwZSA9IHR5cGVvZiBhdHRhY2htZW50LnR5cGUgPT09ICdzdHJpbmcnICYmIGF0dGFjaG1lbnQudHlwZS50cmltKCkgPyBhdHRhY2htZW50LnR5cGUudHJpbSgpIDogJ3BkZidcbiAgICAgIGNvbnN0IG1pbWVUeXBlID0gdHlwZW9mIGF0dGFjaG1lbnQubWltZV90eXBlID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQubWltZV90eXBlIDogJydcbiAgICAgIGNvbnN0IGZ1bGxGaWxlTmFtZSA9IG5hbWUuaW5jbHVkZXMoJy4nKSA/IG5hbWUgOiBgJHtuYW1lfS4ke3R5cGV9YFxuICAgICAgY29uc3QgbnVtZXJpY1NpemUgPVxuICAgICAgICB0eXBlb2YgYXR0YWNobWVudC5zaXplID09PSAnbnVtYmVyJ1xuICAgICAgICAgID8gYXR0YWNobWVudC5zaXplXG4gICAgICAgICAgOiBOdW1iZXIuaXNGaW5pdGUoTnVtYmVyKGF0dGFjaG1lbnQuc2l6ZSkpXG4gICAgICAgICAgICA/IE51bWJlcihhdHRhY2htZW50LnNpemUpXG4gICAgICAgICAgICA6IDBcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZmlsZTogbmV3IEZpbGUoW10sIGZ1bGxGaWxlTmFtZSwgeyB0eXBlOiBtaW1lVHlwZSB9KSxcbiAgICAgICAgaWQ6XG4gICAgICAgICAgdHlwZW9mIGF0dGFjaG1lbnQuaWQgPT09ICdzdHJpbmcnICYmIGF0dGFjaG1lbnQuaWQudHJpbSgpXG4gICAgICAgICAgICA/IGF0dGFjaG1lbnQuaWRcbiAgICAgICAgICAgIDogYGFzc2lzdGFudC1maWxlLSR7aW5kZXh9LSR7ZnVsbEZpbGVOYW1lfWAsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHNpemU6IG51bWVyaWNTaXplLFxuICAgICAgICB0eXBlLFxuICAgICAgICB1cmxfb3JpZ2luYWw6IHR5cGVvZiBhdHRhY2htZW50LnVybF9vcmlnaW5hbCA9PT0gJ3N0cmluZycgPyBhdHRhY2htZW50LnVybF9vcmlnaW5hbCA6IHVuZGVmaW5lZCxcbiAgICAgICAgdXJsX3RodW1ibmFpbDogdHlwZW9mIGF0dGFjaG1lbnQudXJsX3RodW1ibmFpbCA9PT0gJ3N0cmluZycgPyBhdHRhY2htZW50LnVybF90aHVtYm5haWwgOiB1bmRlZmluZWQsXG4gICAgICAgIHVybF9maWxlOiB0eXBlb2YgYXR0YWNobWVudC51cmxfZmlsZSA9PT0gJ3N0cmluZycgPyBhdHRhY2htZW50LnVybF9maWxlIDogdW5kZWZpbmVkLFxuICAgICAgICByb2xlOiBhdHRhY2htZW50LnJvbGUgPT09ICdhc3Npc3RhbnQnID8gJ2Fzc2lzdGFudCcgOiAndXNlcicsXG4gICAgICB9XG4gICAgfSlcbn1cblxuLyoqIEV4dHJhZSB0YXNrX2lkcyBkZSBsb3MgdG9vbF9hcmdzIGRlIHBlbmRpbmdfYWN0aW9ucywgY3VicmllbmRvIGxhcyBmb3JtYXMgY29tdW5lczpcbiAqICAtIGB7IHRhc2tfaWQgfWAgbyBgeyBpZCB9YFxuICogIC0gYHsgdGFza19pZHM6IFtdIH1gXG4gKiAgLSBgeyB0YXNrczogW3sgdGFza19pZHxpZCB9LCAuLi5dIH1gXG4gKiAgw5p0aWwgcGFyYSB0b29scyBkZSBlZGl0L2Fzc2lnbi9kZWxldGUgY3VhbmRvIGxhIHJlc3B1ZXN0YSBkZWwgTExNIG5vIGluY2x1eWUgVVJMcyAvdGFza3MvLi4uL2RldGFpbC4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RUYXNrSWRzRnJvbVBlbmRpbmdBY3Rpb25zQXJncyhwZW5kaW5nQWN0aW9uczogUGVuZGluZ0FjdGlvbltdKTogbnVtYmVyW10ge1xuICBjb25zdCBpZHM6IG51bWJlcltdID0gW11cbiAgY29uc3QgcHVzaElkID0gKHJhdzogdW5rbm93bikgPT4ge1xuICAgIGlmIChyYXcgPT0gbnVsbCkgcmV0dXJuXG4gICAgY29uc3QgbiA9IHBhcnNlSW50KFN0cmluZyhyYXcpLCAxMClcbiAgICBpZiAoIU51bWJlci5pc05hTihuKSkgaWRzLnB1c2gobilcbiAgfVxuICBwZW5kaW5nQWN0aW9ucy5mb3JFYWNoKGFjdGlvbiA9PiB7XG4gICAgaWYgKCFhY3Rpb24gfHwgdHlwZW9mIGFjdGlvbiAhPT0gJ29iamVjdCcpIHJldHVyblxuICAgIGNvbnN0IGFyZ3MgPSBhY3Rpb24udG9vbF9hcmdzXG4gICAgaWYgKCEoYXJncyAmJiB0eXBlb2YgYXJncyA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoYXJncykpKSByZXR1cm5cbiAgICBjb25zdCByZWMgPSBhcmdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgcHVzaElkKHJlYy50YXNrX2lkID8/IHJlYy5pZClcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZWMudGFza19pZHMpKSB7XG4gICAgICByZWMudGFza19pZHMuZm9yRWFjaChwdXNoSWQpXG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHJlYy50YXNrcykpIHtcbiAgICAgIHJlYy50YXNrcy5mb3JFYWNoKHQgPT4ge1xuICAgICAgICBpZiAodCAmJiB0eXBlb2YgdCA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodCkpIHtcbiAgICAgICAgICBjb25zdCB0cmVjID0gdCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgICAgIHB1c2hJZCh0cmVjLnRhc2tfaWQgPz8gdHJlYy5pZClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH0pXG4gIHJldHVybiBpZHNcbn1cblxuLyoqIHRhc2tfaWQgLyB0YXNrX2lkcyBlbiBwZW5kaW5nX2FjdGlvbnMgZGUgZGVsZXRlXyogKGxhIHJlc3B1ZXN0YSBwdWVkZSBubyBpbmNsdWlyIFVSTHMgL3Rhc2tzL+KApi9kZXRhaWwpLiAqL1xuZnVuY3Rpb24gZXh0cmFjdFRhc2tJZHNGcm9tRGVsZXRlUGVuZGluZ0FjdGlvbnMocGVuZGluZ0FjdGlvbnM6IFBlbmRpbmdBY3Rpb25bXSk6IG51bWJlcltdIHtcbiAgY29uc3QgaWRzOiBudW1iZXJbXSA9IFtdXG4gIHBlbmRpbmdBY3Rpb25zLmZvckVhY2goYWN0aW9uID0+IHtcbiAgICBpZiAoIWFjdGlvbiB8fCB0eXBlb2YgYWN0aW9uICE9PSAnb2JqZWN0JykgcmV0dXJuXG4gICAgY29uc3QgYXJncyA9IGFjdGlvbi50b29sX2FyZ3NcbiAgICBpZiAoIShhcmdzICYmIHR5cGVvZiBhcmdzID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShhcmdzKSkpIHJldHVyblxuICAgIGNvbnN0IHJlYyA9IGFyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICBpZiAoYWN0aW9uLnRvb2xfbmFtZSA9PT0gJ2RlbGV0ZV90YXNrJykge1xuICAgICAgY29uc3QgcmF3ID0gcmVjLnRhc2tfaWQgPz8gcmVjLmlkXG4gICAgICBpZiAocmF3ICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgbiA9IHBhcnNlSW50KFN0cmluZyhyYXcpLCAxMClcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4obikpIGlkcy5wdXNoKG4pXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChhY3Rpb24udG9vbF9uYW1lID09PSAnZGVsZXRlX3Rhc2tzX2JhdGNoJykge1xuICAgICAgY29uc3QgbGlzdCA9IHJlYy50YXNrX2lkc1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobGlzdCkpIHtcbiAgICAgICAgbGlzdC5mb3JFYWNoKHRpZCA9PiB7XG4gICAgICAgICAgY29uc3QgbiA9IHBhcnNlSW50KFN0cmluZyh0aWQpLCAxMClcbiAgICAgICAgICBpZiAoIU51bWJlci5pc05hTihuKSkgaWRzLnB1c2gobilcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0pXG4gIHJldHVybiBpZHNcbn1cblxuZnVuY3Rpb24gZXh0cmFjdEFnZW50SWRGcm9tRWRpdEFnZW50UGVuZGluZ0FjdGlvbnMocGVuZGluZ0FjdGlvbnM6IFBlbmRpbmdBY3Rpb25bXSk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBlZGl0QWN0aW9uID0gcGVuZGluZ0FjdGlvbnMuZmluZChhID0+IChhLnRvb2xfbmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ2VkaXRfYWdlbnQnKVxuICBpZiAoXG4gICAgIWVkaXRBY3Rpb24gfHxcbiAgICAhZWRpdEFjdGlvbi50b29sX2FyZ3MgfHxcbiAgICB0eXBlb2YgZWRpdEFjdGlvbi50b29sX2FyZ3MgIT09ICdvYmplY3QnIHx8XG4gICAgQXJyYXkuaXNBcnJheShlZGl0QWN0aW9uLnRvb2xfYXJncylcbiAgKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCByZWMgPSBlZGl0QWN0aW9uLnRvb2xfYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBjb25zdCByYXcgPSByZWMuYWdlbnRfaWQgPz8gcmVjLmFnZW50SWRcbiAgcmV0dXJuIHJhdyAhPSBudWxsID8gU3RyaW5nKHJhdykgOiBudWxsXG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RBZ2VudElkRnJvbVBlbmRpbmdBY3Rpb25zQnlUb29sTmFtZShwZW5kaW5nQWN0aW9uczogUGVuZGluZ0FjdGlvbltdLCB0b29sTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IGFjdGlvbiA9IHBlbmRpbmdBY3Rpb25zLmZpbmQoYSA9PiAoYS50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09IHRvb2xOYW1lLnRvTG93ZXJDYXNlKCkpXG4gIGlmICghYWN0aW9uIHx8ICFhY3Rpb24udG9vbF9hcmdzIHx8IHR5cGVvZiBhY3Rpb24udG9vbF9hcmdzICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KGFjdGlvbi50b29sX2FyZ3MpKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCByZWMgPSBhY3Rpb24udG9vbF9hcmdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGNvbnN0IHJhdyA9IHJlYy5hZ2VudF9pZCA/PyByZWMuYWdlbnRJZCA/PyByZWMuaWRcbiAgcmV0dXJuIHJhdyAhPSBudWxsID8gU3RyaW5nKHJhdykgOiBudWxsXG59XG5cbi8qKiDDmmx0aW1vIHJlY3Vyc28gc2kgbm8gaGF5IGxpbmtzIG5pIHRvb2xfYXJncyBwYXJzZWFibGVzIChwLiBlai4gXCJJRCAqKjc1OTcxMDYqKlwiKS4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RUYXNrSWRzRnJvbUFzc2lzdGFudERlbGV0aW9uVGV4dCh0ZXh0OiBzdHJpbmcpOiBudW1iZXJbXSB7XG4gIGNvbnN0IGxhYmVsZWQgPSB0ZXh0Lm1hdGNoKC9cXGJJRFxccypcXCpcXCooXFxkKylcXCpcXCovaSlcbiAgaWYgKGxhYmVsZWQpIHtcbiAgICBjb25zdCBuID0gcGFyc2VJbnQobGFiZWxlZFsxXSwgMTApXG4gICAgcmV0dXJuIE51bWJlci5pc05hTihuKSA/IFtdIDogW25dXG4gIH1cbiAgY29uc3QgYm9sZCA9IHRleHQubWF0Y2goL1xcKlxcKihcXGR7NSx9KVxcKlxcKi8pXG4gIGlmIChib2xkKSB7XG4gICAgY29uc3QgbiA9IHBhcnNlSW50KGJvbGRbMV0sIDEwKVxuICAgIHJldHVybiBOdW1iZXIuaXNOYU4obikgPyBbXSA6IFtuXVxuICB9XG4gIHJldHVybiBbXVxufVxuXG5jb25zdCB1c2VTdGFibGVDYWxsYmFja3MgPSAoYXV0aFVzZXI6IENPUlVzZXIpID0+IHtcbiAgY29uc3QgY3VycmVudFVzZXIgPSB1c2VSZWY8Q2hhdE1lc3NhZ2VVc2VyPih7XG4gICAgaWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgbmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgIGF2YXRhcjogYXV0aFVzZXIucGljdHVyZSxcbiAgfSlcblxuICBpZiAoXG4gICAgY3VycmVudFVzZXIuY3VycmVudC5pZCAhPT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSB8fFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQubmFtZSAhPT0gYXV0aFVzZXIuZmlyc3ROYW1lIHx8XG4gICAgY3VycmVudFVzZXIuY3VycmVudC5hdmF0YXIgIT09IGF1dGhVc2VyLnBpY3R1cmVcbiAgKSB7XG4gICAgY3VycmVudFVzZXIuY3VycmVudCA9IHtcbiAgICAgIGlkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgbmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgYXZhdGFyOiBhdXRoVXNlci5waWN0dXJlLFxuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIGN1cnJlbnRVc2VyOiBjdXJyZW50VXNlci5jdXJyZW50LFxuICB9XG59XG5cbmNvbnN0IGZpbmRNZXNzYWdlV2l0aEFwcHJvdmFsQnlUaHJlYWRJZHMgPSAoXG4gIHRocmVhZElkczogc3RyaW5nW10sXG4gIGFjdGl2ZU1lc3NhZ2VzOiBDaGF0TWVzc2FnZVtdXG4pOiB7IG1lc3NhZ2U6IENoYXRNZXNzYWdlOyBzZXNzaW9uSWQ6IHN0cmluZyB9IHwgbnVsbCA9PiB7XG4gIGNvbnN0IGZyb21BY3RpdmVWaWV3ID0gYWN0aXZlTWVzc2FnZXMuZmluZChtZXNzYWdlID0+XG4gICAgbWVzc2FnZS5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zPy5zb21lKGFjdGlvbiA9PiB0aHJlYWRJZHMuaW5jbHVkZXMoYWN0aW9uLnRocmVhZF9pZCkpXG4gIClcbiAgaWYgKGZyb21BY3RpdmVWaWV3Py5hcHByb3ZhbCkge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiBmcm9tQWN0aXZlVmlldyxcbiAgICAgIHNlc3Npb25JZDogZnJvbUFjdGl2ZVZpZXcuYXBwcm92YWwuc2Vzc2lvbl9pZCB8fCBhY3RpdmVWaWV3LmdldCgpIHx8ICcnLFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHsgbWVzc2FnZXMgfSA9IHVzZVNlc3Npb25zU3RvcmUuZ2V0U3RhdGUoKVxuICBjb25zdCBzZXNzaW9uRW50cnkgPSBPYmplY3QuZW50cmllcyhtZXNzYWdlcykuZmluZCgoWywgc2Vzc2lvbk1lc3NhZ2VzXSkgPT5cbiAgICBzZXNzaW9uTWVzc2FnZXMuc29tZShtZXNzYWdlID0+XG4gICAgICBtZXNzYWdlLmFwcHJvdmFsPy5wZW5kaW5nX2FjdGlvbnM/LnNvbWUoYWN0aW9uID0+IHRocmVhZElkcy5pbmNsdWRlcyhhY3Rpb24udGhyZWFkX2lkKSlcbiAgICApXG4gIClcbiAgaWYgKHNlc3Npb25FbnRyeSkge1xuICAgIGNvbnN0IFtzZXNzaW9uSWQsIHNlc3Npb25NZXNzYWdlc10gPSBzZXNzaW9uRW50cnlcbiAgICBjb25zdCBmb3VuZCA9IHNlc3Npb25NZXNzYWdlcy5maW5kKG1lc3NhZ2UgPT5cbiAgICAgIG1lc3NhZ2UuYXBwcm92YWw/LnBlbmRpbmdfYWN0aW9ucz8uc29tZShhY3Rpb24gPT4gdGhyZWFkSWRzLmluY2x1ZGVzKGFjdGlvbi50aHJlYWRfaWQpKVxuICAgIClcbiAgICBpZiAoZm91bmQ/LmFwcHJvdmFsKSB7XG4gICAgICByZXR1cm4geyBtZXNzYWdlOiBmb3VuZCwgc2Vzc2lvbklkOiBmb3VuZC5hcHByb3ZhbC5zZXNzaW9uX2lkIHx8IHNlc3Npb25JZCB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGNvbnN0IHVzZUNoYXRNYW5hZ2VyID0gKHtcbiAgY2hhdElkOiBpbml0aWFsQ2hhdElkLFxuICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gIG9uRXJyb3IsXG4gIGFnZW50cyA9IFtdLFxufTogVXNlQ2hhdE1hbmFnZXJQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBhdXRoVXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7XG4gICAgcHJvamVjdCxcbiAgICBzZXRQcm9qZWN0LFxuICAgIGNsaWVudCxcbiAgICBzZXRDbGllbnQsXG4gICAgdGFzayxcbiAgICBzZXRUYXNrLFxuICAgIGFnZW50LFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBjaGlwc1Byb2plY3QsXG4gICAgc2V0Q2hpcHNQcm9qZWN0LFxuICB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IGV2ZW50ID0gdXNlRXZlbnQoKVxuICBjb25zdCB7IGZldGNoUHJvamVjdHMgfSA9IHVzZVByb2plY3RzKClcbiAgY29uc3QgeyBjdXJyZW50VXNlciB9ID0gdXNlU3RhYmxlQ2FsbGJhY2tzKGF1dGhVc2VyKVxuICBjb25zdCB7IGdldFRhYlRhc2tEZWZhdWx0IH0gPSB1c2VUYWJUYXNrRGVmYXVsdCgpXG5cbiAgY29uc3QgY3VycmVudE1lc3NhZ2VJZCA9IHVzZVJlZih1dWlkdjQoKSlcbiAgY29uc3QgY3VycmVudFVzZXJRdWVzdGlvbiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBjdXJyZW50Q2hhdElkID0gdXNlUmVmKGluaXRpYWxDaGF0SWQgfHwgdXVpZHY0KCkpXG4gIGNvbnN0IHNldEFjdGl2ZUNoYXRJZCA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUuc2V0QWN0aXZlQ2hhdElkKVxuICBjb25zdCByZXBvcnRlZEV2ZW50ID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBtZXNzYWdlc1JlZiA9IHVzZVJlZjxDaGF0TWVzc2FnZVtdPihbXSlcbiAgLyoqXG4gICAqIEd1YXJkYSBpbmZvIGRlbCDDumx0aW1vIGFwcHJvdmFsIG1hbnVhbCAoY3VhbmRvIGVsIHVzdWFyaW8gdGlwZWEgXCJzaVwiL1wibm9cIiBlbiBsdWdhclxuICAgKiBkZSBjbGlja2VhciBlbCBib3TDs24pLiBFbiBtYW51YWwgYXBwcm92YWwsIGBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkYCByZXRvcm5hIGVhcmx5XG4gICAqIHNpbiBhZ3JlZ2FyIHVuIG1lbnNhamUgY29uIGBhcHByb3ZhbGAsIGFzw60gcXVlIGxhIGzDs2dpY2EgZGUgcmVmZXRjaCBlbiBgb25TdHJlYW1GaW5pc2hgXG4gICAqIG5vIGxvIGRldGVjdGEgdsOtYSBgcHJldmlvdXNNZXNzYWdlLmFwcHJvdmFsYC4gTG8gZ3VhcmRhbW9zIGFjw6EgcGFyYSBjb25zdW1pcmxvIGRlc3B1w6lzLlxuICAgKi9cbiAgY29uc3QgbGFzdE1hbnVhbEFwcHJvdmFsUmVmID0gdXNlUmVmPHtcbiAgICB0b29sTmFtZTogc3RyaW5nXG4gICAgdG9vbEFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbFxuICB9IHwgbnVsbD4obnVsbClcbiAgLyoqIENvbnRleHRvIGRlbCBtZW5zYWplIGRlIGFwcm9iYWNpw7NuIHByZXZpbyBhbCBlamVjdXRhciBjb250aW51ZS10aHJlYWQuICovXG4gIGNvbnN0IGhpdGxFeGVjdXRpb25Db250ZXh0UmVmID0gdXNlUmVmPEhpdGxFeGVjdXRpb25Db250ZXh0IHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNQcm9jZXNzaW5nUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBmaXJzdFRpbWVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIC8qKiBJZCBkZWwgcGxhY2Vob2xkZXIgZGVsIG1lbnNhamUgZW4gc3RyZWFtaW5nIGFjdGl2byAoc2kgaGF5KS4gKi9cbiAgY29uc3Qgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICAvKipcbiAgICogQ2hhdCBhbCBxdWUgcGVydGVuZWNlIGVsIHN0cmVhbSBhY3R1YWxtZW50ZSBhY3Rpdm8uIFNpIGNhbWJpYSBlbCBjaGF0XG4gICAqIG1pZW50cmFzIHVuIHN0cmVhbSBlc3TDoSBlbiB2dWVsbywgZGVzY2FydGFtb3MgbG9zIHRva2VucyByZXNpZHVhbGVzXG4gICAqIHF1ZSBwdWVkYW4gbGxlZ2FyIGFudGVzIGRlIHF1ZSBlbCBhYm9ydCBzZSBjb21wbGV0ZS5cbiAgICovXG4gIGNvbnN0IGFjdGl2ZVN0cmVhbUNoYXRJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBjbGVhclN0cmVhbVVpUmVmID0gdXNlUmVmPCgpID0+IHZvaWQ+KCgpID0+IHVuZGVmaW5lZClcbiAgY29uc3QgW2FjdGl2ZUxvYWRpbmdzLCBzZXRBY3RpdmVMb2FkaW5nc10gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pih7fSlcbiAgLyoqXG4gICAqIFNlc2nDs24gYWN0dWFsbWVudGUgdmlzaWJsZS4gU2UgbWFudGllbmUgZW4gc3RhdGUgKG5vIHNvbG8gZW4gcmVmKSBwYXJhIHF1ZVxuICAgKiBlbCBtb3RvciBkZSBzdHJlYW1pbmcgcHVlZGEgbGVlciByZWFjdGl2YW1lbnRlIGxvcyBmbGFncyBkZSBFU1RBIHNlc2nDs25cbiAgICogZGVzZGUgZWwgc3RvcmUsIG1pZW50cmFzIG90cmFzIHNpZ3VlbiBnZW5lcmFuZG8gZW4gYmFja2dyb3VuZC5cbiAgICovXG4gIGNvbnN0IFthY3RpdmVTZXNzaW9uSWQsIHNldEFjdGl2ZVNlc3Npb25JZF0gPSB1c2VTdGF0ZTxzdHJpbmc+KGN1cnJlbnRDaGF0SWQuY3VycmVudClcbiAgLyoqIFRydWUgbWllbnRyYXMgZXN0YSBpbnN0YW5jaWEgZXN0w6kgbW9udGFkYSAoZXZpdGEgc2V0U3RhdGUgdHJhcyBkZXNtb250YXIpLiAqL1xuICBjb25zdCBpc01vdW50ZWRSZWYgPSB1c2VSZWYodHJ1ZSlcbiAgLyoqIEV2aXRhIHJlY29uY2lsaWFyIGRvcyB2ZWNlcyBlbCBtaXNtbyBlc3RhZG8gdGVybWluYWwgZGUgdW5hIHNlc2nDs24uICovXG4gIGNvbnN0IGxhc3RIYW5kbGVkVGVybWluYWxSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcblxuICBjb25zdCBpc1dlYlNlYXJjaEFjdGl2ZVJlZiA9IHVzZVJlZihpc1dlYlNlYXJjaEFjdGl2ZSlcbiAgY29uc3QgaXNEZWVwU2VhcmNoQWN0aXZlUmVmID0gdXNlUmVmKGlzRGVlcFNlYXJjaEFjdGl2ZSlcbiAgLyoqIEV2aXRhIGNsb3N1cmVzIG9ic29sZXRhcyBjdWFuZG8gZWwgZm9vdGVyIGNvbnNlcnZhIHNlbmRNZXNzYWdlIGVudHJlIHJlbmRlcnMuICovXG4gIGNvbnN0IGNvbnRleHRSZWYgPSB1c2VSZWYoeyBjaGlwc1Byb2plY3QsIHByb2plY3QsIGNsaWVudCwgdGFzayB9KVxuICBjb250ZXh0UmVmLmN1cnJlbnQgPSB7IGNoaXBzUHJvamVjdCwgcHJvamVjdCwgY2xpZW50LCB0YXNrIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQgPSBpc1dlYlNlYXJjaEFjdGl2ZVxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50ID0gaXNEZWVwU2VhcmNoQWN0aXZlXG4gIH0sIFtpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlXSlcblxuICBjb25zdCB7IGxvYWRpbmdNZXNzYWdlcywgbWVzc2FnZXMsIGlzTG9hZGluZ01vcmVNZXNzYWdlcywgbG9hZE1lc3NhZ2VzLCBhZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCBoYW5kbGVTY3JvbGwgfSA9XG4gICAgdXNlQ2hhdE1lc3NhZ2VzKHtcbiAgICAgIGNoYXRJZDogaW5pdGlhbENoYXRJZCB8fCBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICBjdXJyZW50VXNlcixcbiAgICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICAgIG9uRXJyb3IsXG4gICAgICBhZ2VudHMsXG4gICAgfSlcblxuICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNcblxuICAvKipcbiAgICogRXNjcmliZSB1biBtZW5zYWplIGVuIGVsIHN0b3JlIHBvci1zZXNpw7NuIHksIHNpIGxhIHNlc2nDs24gZXMgbGEgYWN0aXZhLFxuICAgKiB0YW1iacOpbiBlbiBsYSB2aXN0YSBsb2NhbC4gUGVybWl0ZSBxdWUgc2VzaW9uZXMgZW4gYmFja2dyb3VuZCBhY3VtdWxlbiBzdVxuICAgKiByZXN1bHRhZG8gc2luIHBpc2FyIGVsIGNoYXQgcXVlIGVsIHVzdWFyaW8gZXN0w6EgbWlyYW5kby5cbiAgICovXG4gIGNvbnN0IGNvbW1pdFRvU2Vzc2lvbiA9IHVzZUNhbGxiYWNrKFxuICAgIChzZXNzaW9uSWQ6IHN0cmluZywgbWVzc2FnZTogQ2hhdE1lc3NhZ2UpID0+IHtcbiAgICAgIHVzZVNlc3Npb25zU3RvcmUuZ2V0U3RhdGUoKS5hZGRNZXNzYWdlKHNlc3Npb25JZCwgbWVzc2FnZSlcbiAgICAgIGlmIChpc01vdW50ZWRSZWYuY3VycmVudCAmJiBhY3RpdmVWaWV3LmlzKHNlc3Npb25JZCkpIHtcbiAgICAgICAgYWRkTWVzc2FnZShtZXNzYWdlKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2VdXG4gIClcblxuICBjb25zdCBkcm9wRnJvbVNlc3Npb24gPSB1c2VDYWxsYmFjayhcbiAgICAoc2Vzc2lvbklkOiBzdHJpbmcsIG1lc3NhZ2VJZDogc3RyaW5nKSA9PiB7XG4gICAgICB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKCkucmVtb3ZlTWVzc2FnZShzZXNzaW9uSWQsIG1lc3NhZ2VJZClcbiAgICAgIGlmIChpc01vdW50ZWRSZWYuY3VycmVudCAmJiBhY3RpdmVWaWV3LmlzKHNlc3Npb25JZCkpIHtcbiAgICAgICAgcmVtb3ZlTWVzc2FnZShtZXNzYWdlSWQpXG4gICAgICB9XG4gICAgfSxcbiAgICBbcmVtb3ZlTWVzc2FnZV1cbiAgKVxuXG4gIC8qKiBMaW1waWEgZWwgdGFpbCBlbiB2dWVsbyBkZSB1bmEgc2VzacOzbiAodHJhcyB0ZXJtaW5hcjsgZWwgYmFja2VuZCBwYXNhIGEgc2VyIGZ1ZW50ZSkuICovXG4gIGNvbnN0IGNsZWFyU2Vzc2lvblRhaWwgPSB1c2VDYWxsYmFjaygoc2Vzc2lvbklkOiBzdHJpbmcpID0+IHtcbiAgICB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKCkuc2V0TWVzc2FnZXMoc2Vzc2lvbklkLCBbXSlcbiAgfSwgW10pXG5cbiAgLy8gUmVnaXN0cmFyIGxhIHNlc2nDs24gdmlzaWJsZSBlbiBlbCB0cmFja2VyIGdsb2JhbCBwYXJhIHF1ZSBsb3MgY2FsbGJhY2tzIGRlbFxuICAvLyBtb3RvciAocXVlIHB1ZWRlbiBwZXJ0ZW5lY2VyIGEgdW5hIGluc3RhbmNpYSB5YSBkZXNtb250YWRhKSBzZXBhbiBjdcOhbCBlcyBsYVxuICAvLyBzZXNpw7NuIGFjdGl2YSBhY3R1YWwuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgYWN0aXZlVmlldy5zZXQoYWN0aXZlU2Vzc2lvbklkKVxuICB9LCBbYWN0aXZlU2Vzc2lvbklkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzTW91bnRlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpc01vdW50ZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBpZiAoYWN0aXZlVmlldy5pcyhjdXJyZW50Q2hhdElkLmN1cnJlbnQpKSB7XG4gICAgICAgIGFjdGl2ZVZpZXcuc2V0KG51bGwpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXSlcblxuICAvLyBSZWNvbmNpbGlhY2nDs246IHNpIGxhIHNlc2nDs24gYWN0aXZhIHRlcm1pbmEgKGNvbXBsZXRlL2Vycm9yL2NhbmNlbGxlZCkgcGVybyBlbFxuICAvLyBzdG9yZSBwb3Itc2VzacOzbiB0b2RhdsOtYSB0aWVuZSB1biBwbGFjZWhvbGRlciBkZSBzdHJlYW1pbmcsIHJlZnJlc2NhbW9zIGRlc2RlXG4gIC8vIGVsIGJhY2tlbmQuIFVzYW1vcyBlbCBzdG9yZSAobm8gbWVzc2FnZXNSZWYpOiBoYW5kbGVTdHJlYW1GaW5pc2ggbGltcGlhIGVsXG4gIC8vIHBsYWNlaG9sZGVyIGFow60gZGUgZm9ybWEgc8OtbmNyb25hOyBtZXNzYWdlc1JlZiBwdWVkZSBxdWVkYXIgc3RhbGUgdW4gcmVuZGVyXG4gIC8vIHBvcnF1ZSBzZXRTdGF0dXMgKFp1c3RhbmQpIHkgcmVtb3ZlTWVzc2FnZSAoUmVhY3QpIG5vIGJhdGNoYW4ganVudG9zLlxuICBjb25zdCBhY3RpdmVTZXNzaW9uTWV0YSA9IHVzZVNlc3Npb25NZXRhKGFjdGl2ZVNlc3Npb25JZClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBzdGF0dXMgPSBhY3RpdmVTZXNzaW9uTWV0YT8uc3RhdHVzXG4gICAgaWYgKCFzdGF0dXMpIHJldHVyblxuICAgIGNvbnN0IGlzVGVybWluYWwgPSBzdGF0dXMgPT09ICdjb21wbGV0ZScgfHwgc3RhdHVzID09PSAnZXJyb3InIHx8IHN0YXR1cyA9PT0gJ2NhbmNlbGxlZCdcbiAgICBpZiAoIWlzVGVybWluYWwpIHJldHVyblxuICAgIGNvbnN0IGtleSA9IGAke2FjdGl2ZVNlc3Npb25JZH06JHtzdGF0dXN9OiR7YWN0aXZlU2Vzc2lvbk1ldGE/LmZpbmlzaGVkQXQgPz8gJyd9YFxuICAgIGlmIChsYXN0SGFuZGxlZFRlcm1pbmFsUmVmLmN1cnJlbnQgPT09IGtleSkgcmV0dXJuXG4gICAgbGFzdEhhbmRsZWRUZXJtaW5hbFJlZi5jdXJyZW50ID0ga2V5XG5cbiAgICBjb25zdCB0YWlsID0gdXNlU2Vzc2lvbnNTdG9yZS5nZXRTdGF0ZSgpLmdldE1lc3NhZ2VzKGFjdGl2ZVNlc3Npb25JZClcbiAgICBjb25zdCBoYXNTdGFsZVBsYWNlaG9sZGVyID0gdGFpbC5zb21lKG1zZyA9PiBpc1N0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkKG1zZy5pZCkpXG4gICAgaWYgKGhhc1N0YWxlUGxhY2Vob2xkZXIpIHtcbiAgICAgIGxvYWRNZXNzYWdlcyh7IGZvcmNlOiB0cnVlIH0pXG4gICAgfVxuICB9LCBbYWN0aXZlU2Vzc2lvbk1ldGE/LnN0YXR1cywgYWN0aXZlU2Vzc2lvbk1ldGE/LmZpbmlzaGVkQXQsIGFjdGl2ZVNlc3Npb25JZCwgbG9hZE1lc3NhZ2VzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdjaGF0LWxvYWRpbmctbWVzc2FnZXMtY2hhbmdlZCcsIHtcbiAgICAgIGRldGFpbDogeyBsb2FkaW5nTWVzc2FnZXMgfSxcbiAgICB9KVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gIH0sIFtsb2FkaW5nTWVzc2FnZXNdKVxuXG4gIGNvbnN0IHByZXZpb3VzSW5pdGlhbENoYXRJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPihpbml0aWFsQ2hhdElkKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcHJldmlvdXNJbml0aWFsQ2hhdElkID0gcHJldmlvdXNJbml0aWFsQ2hhdElkUmVmLmN1cnJlbnRcbiAgICBwcmV2aW91c0luaXRpYWxDaGF0SWRSZWYuY3VycmVudCA9IGluaXRpYWxDaGF0SWRcblxuICAgIC8vIENoYXQgbnVldm8gLyBob21lOiBpbml0aWFsQ2hhdElkIHBhc2EgYSBudWxsLCBhc8OtIHF1ZSBsYSByYW1hIGRlIGFiYWpvIG5vXG4gICAgLy8gYXBsaWNhLiBIYXkgcXVlIHJvdGFyIGEgdW5hIHNlc2nDs24gbnVldmEgaWd1YWw6IHNpIHNlZ3VpbW9zIGFwdW50YW5kbyBhIGxhXG4gICAgLy8gYW50ZXJpb3IsIGBhY3RpdmVWaWV3YCBsYSBzaWd1ZSBtYXJjYW5kbyBjb21vIGFjdGl2YSB5IGN1YW5kbyB0ZXJtaW5hIG5vIHNlXG4gICAgLy8gbm90aWZpY2EgKHkgc3UgcmVzcHVlc3RhIHNlIGNvbW1pdGVhIHNvYnJlIGxhIHZpc3RhIG51ZXZhKS4gRWwgw6FyYm9sIG5vXG4gICAgLy8gcmVtb250YSBlbiBlc3RlIGZsdWpvIChubyBoYXkgYGtleWApIHkgbmFkaWUgY29uc3VtZSBgcmVzZXRDaGF0YC5cbiAgICBpZiAoIWluaXRpYWxDaGF0SWQgJiYgcHJldmlvdXNJbml0aWFsQ2hhdElkKSB7XG4gICAgICBjdXJyZW50Q2hhdElkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgICAgc2V0QWN0aXZlU2Vzc2lvbklkKGN1cnJlbnRDaGF0SWQuY3VycmVudClcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoaW5pdGlhbENoYXRJZCAmJiBpbml0aWFsQ2hhdElkICE9PSBjdXJyZW50Q2hhdElkLmN1cnJlbnQpIHtcbiAgICAgIC8vIE5PIGFib3J0YW1vcyBlbCBzdHJlYW0gYW50ZXJpb3I6IHB1ZWRlIHNlZ3VpciBnZW5lcmFuZG8gZW4gYmFja2dyb3VuZC5cbiAgICAgIC8vIFNvbG8gY2FtYmlhbW9zIGRlIHNlc2nDs24gYWN0aXZhOyBlbCBtb3RvciBydXRlYSBjYWRhIHN0cmVhbSBwb3Igc3VcbiAgICAgIC8vIHNlc3Npb25JZCwgYXPDrSBxdWUgbG9zIHRva2VucyBkZSBsYSBzZXNpw7NuIHByZXZpYSBzaWd1ZW4gYXBsaWPDoW5kb3NlIGFcbiAgICAgIC8vIEVTQSBzZXNpw7NuIChzdG9yZSksIG5vIGEgbGEgbnVldmEuXG5cbiAgICAgIC8vIExpbXBpYXIgY29udGV4dG8gZ2xvYmFsIGFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzblxuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgc2V0VGFzayhudWxsKVxuXG4gICAgICBjdXJyZW50Q2hhdElkLmN1cnJlbnQgPSBpbml0aWFsQ2hhdElkXG4gICAgICBzZXRBY3RpdmVTZXNzaW9uSWQoaW5pdGlhbENoYXRJZClcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICAgICAgLy8gaXNQcm9jZXNzaW5nUmVmIHJlZmxlamEgc2kgbGEgc2VzacOzbiBBQ1RJVkEgZXN0w6Egb2N1cGFkYS4gU2kgbGEgc2VzacOzblxuICAgICAgLy8gYSBsYSBxdWUgZW50cmFtb3Mgc2lndWUgZ2VuZXJhbmRvIGVuIGJhY2tncm91bmQsIHF1ZWRhIGJsb3F1ZWFkYTsgc2kgbm8sXG4gICAgICAvLyBzZSBoYWJpbGl0YSBlbCBlbnbDrW8gYXVucXVlIG90cmFzIHNlc2lvbmVzIHNpZ2FuIGdlbmVyYW5kby5cbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gc2Vzc2lvblN0cmVhbU1hbmFnZXIuaXNBY3RpdmUoaW5pdGlhbENoYXRJZClcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuXG4gICAgICAvLyBsb2FkTWVzc2FnZXMgbG8gZGlzcGFyYSB1c2VDaGF0TWVzc2FnZXMgYWwgY2FtYmlhciBjaGF0SWQgKGNvbiBjYWNoZSBlbiBtZW1vcmlhKS5cbiAgICB9XG4gIH0sIFtpbml0aWFsQ2hhdElkLCBwcm9qZWN0LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQsIHNldENoaXBzUHJvamVjdCwgc2V0VGFza10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRBY3RpdmVDaGF0SWQoaW5pdGlhbENoYXRJZCB8fCBudWxsKVxuICB9LCBbaW5pdGlhbENoYXRJZCwgc2V0QWN0aXZlQ2hhdElkXSlcblxuICBjb25zdCBoYW5kbGVTdHJlYW1FcnJvciA9IHVzZUNhbGxiYWNrKFxuICAgIChjdHg6IFN0cmVhbUNvbnRleHQsIGVycm9yTWVzc2FnZT86IHN0cmluZywgZXJyb3JSYXdNZXNzYWdlPzogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB7IHNlc3Npb25JZCwgbWVzc2FnZUlkLCBwbGFjZWhvbGRlcklkIH0gPSBjdHhcbiAgICAgIGNvbnN0IGlzQWN0aXZlID0gYWN0aXZlVmlldy5pcyhzZXNzaW9uSWQpXG5cbiAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgIGRyb3BGcm9tU2Vzc2lvbihzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQpXG5cbiAgICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQoKVxuICAgICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzQWNjZXNzRGVuaWVkID0gZXJyb3JNZXNzYWdlID09PSBcIkFjY2VzcyBkZW5pZWQ6IFlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoaXMgYWdlbnRcIlxuICAgICAgY29uc3QgaXNQcm9tcHRUb29Mb25nID1cbiAgICAgICAgZXJyb3JNZXNzYWdlID09PSAnaW52YWxpZF9yZXF1ZXN0X2Vycm9yJyAmJiBlcnJvclJhd01lc3NhZ2U/LmluY2x1ZGVzKCdwcm9tcHQgaXMgdG9vIGxvbmcnKVxuICAgICAgY29uc3QgbWVzc2FnZSA9IGlzQWNjZXNzRGVuaWVkXG4gICAgICAgID8gdCgnY2hhdC5lcnJvckFjY2Vzc0RlbmllZCcpXG4gICAgICAgIDogaXNQcm9tcHRUb29Mb25nXG4gICAgICAgICAgPyB0KCdjaGF0LmVycm9yUHJvbXB0VG9vTG9uZycsIHsgdXNlZDogZXJyb3JSYXdNZXNzYWdlPy5tYXRjaCgvKFxcZCspIHRva2Vucy8pPy5bMV0gPz8gJycgfSlcbiAgICAgICAgICA6IHQoJ2NoYXQuZXJyb3InKVxuXG4gICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICAgIGlkOiBgYW5zd2VyLSR7bWVzc2FnZUlkfWAsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIGlzRXJyb3I6IHRydWUsXG4gICAgICAgIC8vIENoaXAgXCJSZWludGVudGFyXCIgc29sbyBlbiBlbCBlcnJvciBnZW7DqXJpY28gKHAuIGVqLiA1MDApOyBubyBhcGxpY2EgYSBhY2Nlc3MgZGVuaWVkIG5pIHByb21wdCB0b28gbG9uZy5cbiAgICAgICAgLi4uKCFpc0FjY2Vzc0RlbmllZCAmJiAhaXNQcm9tcHRUb29Mb25nID8geyBzdWdnZXN0aW9uczogW3QoJ2NoYXQucmV0cnknKV0gfSA6IHt9KSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KVxuICAgICAgY2xlYXJTZXNzaW9uVGFpbChzZXNzaW9uSWQpXG5cbiAgICAgIGlmICghaXNBY3RpdmUpIHtcbiAgICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkubWFya0NoYXRBc1VucmVhZChzZXNzaW9uSWQpXG4gICAgICAgIG5vdGlmeVNlc3Npb25GaW5pc2hlZEluQmFja2dyb3VuZChzZXNzaW9uSWQsICdlcnJvcicpXG4gICAgICB9XG4gICAgfSxcbiAgICBbY29tbWl0VG9TZXNzaW9uLCBkcm9wRnJvbVNlc3Npb24sIGNsZWFyU2Vzc2lvblRhaWwsIHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1VcGRhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAoY3R4OiBTdHJlYW1Db250ZXh0LCBjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHsgc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkIH0gPSBjdHhcblxuICAgICAgLy8gQXNlZ3VyYW1vcyBlbCBwbGFjZWhvbGRlciB1bmEgw7puaWNhIHZleiBwb3Igc3RyZWFtLCB0YW50byBlbiBlbCBzdG9yZVxuICAgICAgLy8gZGUgbGEgc2VzacOzbiBjb21vIGVuIGxhIHZpc3RhIHNpIGVzIGxhIGFjdGl2YS4gRWwgdGV4dG8gZW4gdml2byB2aWFqYVxuICAgICAgLy8gcG9yIHNlc3Npb25TdHJlYW1pbmdUZXh0IChleHRlcm5vKSwgc2luIHJlLXJlbmRlciBkZWwgw6FyYm9sIGNvbXBsZXRvLlxuICAgICAgY29uc3QgcGxhY2Vob2xkZXJFeGlzdHMgPSB1c2VTZXNzaW9uc1N0b3JlXG4gICAgICAgIC5nZXRTdGF0ZSgpXG4gICAgICAgIC5nZXRNZXNzYWdlcyhzZXNzaW9uSWQpXG4gICAgICAgIC5zb21lKG1zZyA9PiBtc2cuaWQgPT09IHBsYWNlaG9sZGVySWQpXG5cbiAgICAgIGlmICghcGxhY2Vob2xkZXJFeGlzdHMpIHtcbiAgICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuc3RhcnQoc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkKVxuICAgICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICAgICAgaWQ6IHBsYWNlaG9sZGVySWQsXG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAoYWN0aXZlVmlldy5pcyhzZXNzaW9uSWQpKSB7XG4gICAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IHBsYWNlaG9sZGVySWRcbiAgICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBzZXNzaW9uSWRcbiAgICAgIH1cblxuICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuc2V0VGV4dChzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQsIGNvbnRlbnQpXG4gICAgfSxcbiAgICBbY29tbWl0VG9TZXNzaW9uXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtRmluaXNoID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgY3R4OiBTdHJlYW1Db250ZXh0LFxuICAgICAgY29udGVudDogc3RyaW5nLFxuICAgICAgc291cmNlczogYW55LFxuICAgICAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgICByYXdBdHRhY2htZW50cz86IGFueVtdIHwgbnVsbCxcbiAgICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsLFxuICAgICAgY29tcGxldGVkQWdlbnRJZD86IHN0cmluZyB8IG51bGxcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IHsgc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkIH0gPSBjdHhcbiAgICAgIGNvbnN0IGlzQWN0aXZlID0gYWN0aXZlVmlldy5pcyhzZXNzaW9uSWQpXG5cbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBwbGFjZWhvbGRlcklkXG4gICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICBkcm9wRnJvbVNlc3Npb24oc2Vzc2lvbklkLCB0ZW1wTWVzc2FnZUlkKVxuICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBub3JtYWxpemVBc3Npc3RhbnRBdHRhY2htZW50cyhyYXdBdHRhY2htZW50cylcblxuICAgICAgLy8gU2VzacOzbiBlbiBiYWNrZ3JvdW5kOiBjZXJyYW1vcyBsZWFuLiBFbCBiYWNrZW5kIHlhIHBlcnNpc3Rpw7MgbGFcbiAgICAgIC8vIHJlc3B1ZXN0YSwgYXPDrSBxdWUgYWwgdm9sdmVyIGEgbGEgc2VzacOzbiBzZSBjYXJnYSBkZXNkZSBhaMOtLiBBdmlzYW1vc1xuICAgICAgLy8gcXVlIHRlcm1pbsOzICh1bnJlYWQgKyBldmVudG8gcGFyYSB0b2FzdC9zb25pZG8pLlxuICAgICAgaWYgKCFpc0FjdGl2ZSkge1xuICAgICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICAgICAgaWQ6IGBhbnN3ZXItJHttZW1vcnlTZXNzaW9uSWR9YCxcbiAgICAgICAgICBtZXNzYWdlOiBjb250ZW50LFxuICAgICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgICBzb3VyY2VzLFxuICAgICAgICAgIC4uLihhdHRhY2htZW50cy5sZW5ndGggPiAwID8geyBhdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgICAgICBzdWdnZXN0aW9uczogc3VnZ2VzdGlvbnMgfHwgW10sXG4gICAgICAgIH0pXG4gICAgICAgIGNsZWFyU2Vzc2lvblRhaWwoc2Vzc2lvbklkKVxuICAgICAgICBnZXRDaGF0c1N0b3JlU3RhdGUoKS5tYXJrQ2hhdEFzVW5yZWFkKHNlc3Npb25JZClcbiAgICAgICAgbm90aWZ5U2Vzc2lvbkZpbmlzaGVkSW5CYWNrZ3JvdW5kKHNlc3Npb25JZCwgJ2NvbXBsZXRlJylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IG51bGxcblxuICAgICAgLy8gRGV0ZWN0YXIgdG9kYXMgbGFzIFVSTHMgZGUgdGFyZWFzICguLi4vdGFza3MvMTIzL2RldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpXG4gICAgICBjb25zdCB0YXNrVXJsUmVnZXggPSBuZXcgUmVnRXhwKFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4sICdnJylcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBbLi4uY29udGVudC5tYXRjaEFsbCh0YXNrVXJsUmVnZXgpXVxuXG4gICAgICBsZXQgY29udGVudFRvQWRkID0gY29udGVudFxuICAgICAgY29uc3QgcHJldmlvdXNNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maWx0ZXIobSA9PiBtLmlkICE9PSB0ZW1wTWVzc2FnZUlkKS5hdCgtMSlcbiAgICAgIGNvbnN0IGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgPSBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsICE9IG51bGxcbiAgICAgIGNvbnN0IFRBU0tfQ1JFQVRJT05fVE9PTFMgPSBbJ2NyZWF0ZV90YXNrJywgJ2NyZWF0ZV90YXNrc19iYXRjaCcsICdjbG9uZV90YXNrJ11cbiAgICAgIGNvbnN0IFRBU0tfRURJVF9UT09MUyA9IFtcbiAgICAgICAgJ2VkaXRfdGFzaycsXG4gICAgICAgICdlZGl0X3Rhc2tzX2JhdGNoJyxcbiAgICAgICAgJ3Rhc2tfYXNzaWduJyxcbiAgICAgICAgJ3Rhc2tfdW5hc3NpZ24nLFxuICAgICAgICAndXBkYXRlX3Rhc2tfdHlwZScsXG4gICAgICAgICd1cGRhdGVfZXN0aW1hdGVkX2hvdXJzJyxcbiAgICAgICAgJ2Fzc2lnbl90YXNrX2xhYmVsJyxcbiAgICAgIF1cbiAgICAgIGNvbnN0IFRBU0tfREVMRVRFX1RPT0xTID0gWydkZWxldGVfdGFzaycsICdkZWxldGVfdGFza3NfYmF0Y2gnXVxuICAgICAgY29uc3QgcGVuZGluZ0FjdGlvbnMgPSBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsPy5wZW5kaW5nX2FjdGlvbnMgfHwgW11cbiAgICAgIGNvbnN0IHdhc1Rhc2tDcmVhdGlvbiA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IFRBU0tfQ1JFQVRJT05fVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNUYXNrRWRpdCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiYgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IFRBU0tfRURJVF9UT09MUy5pbmNsdWRlcyhhY3Rpb24udG9vbF9uYW1lKSlcbiAgICAgIGNvbnN0IHdhc1Rhc2tEZWxldGUgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0RFTEVURV9UT09MUy5pbmNsdWRlcyhhY3Rpb24udG9vbF9uYW1lKSlcbiAgICAgIGNvbnN0IHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IGFjdGlvbi50b29sX25hbWUgPT09ICdjcmVhdGVfYWdlbnQnKVxuICAgICAgY29uc3Qgd2FzQ29uZmlndXJlQWdlbnRBY2Nlc3NBcHByb3ZlZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbFN0YXR1cyA9PT0gJ2FwcHJvdmVkJyAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gKGFjdGlvbi50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdjb25maWd1cmVfYWdlbnRfYWNjZXNzJylcbiAgICAgIGxldCBjcmVhdGVBZ2VudEZvbGxvd1VwOiB7IGFnZW50SWQ6IHN0cmluZyB9IHwgdW5kZWZpbmVkXG4gICAgICBpZiAod2FzQ3JlYXRlQWdlbnRBcHByb3ZlZCAmJiB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJiBjb21wbGV0ZWRBZ2VudElkPy50cmltKCkpIHtcbiAgICAgICAgY3JlYXRlQWdlbnRGb2xsb3dVcCA9IHsgYWdlbnRJZDogY29tcGxldGVkQWdlbnRJZC50cmltKCkgfVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgd2FzQ29uZmlndXJlQWdlbnRBY2Nlc3NBcHByb3ZlZCAmJlxuICAgICAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJlxuICAgICAgICAoY29tcGxldGVkQWdlbnRJZD8udHJpbSgpIHx8XG4gICAgICAgICAgZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zLCAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyZWRBZ2VudElkID1cbiAgICAgICAgICBjb21wbGV0ZWRBZ2VudElkPy50cmltKCkgfHxcbiAgICAgICAgICBleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUocGVuZGluZ0FjdGlvbnMsICdjb25maWd1cmVfYWdlbnRfYWNjZXNzJylcbiAgICAgICAgY3JlYXRlQWdlbnRGb2xsb3dVcCA9IHtcbiAgICAgICAgICBhZ2VudElkOiBjb25maWd1cmVkQWdlbnRJZCBhcyBzdHJpbmcsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQpIHtcbiAgICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdEhpdGxPcHRpb24sIHtcbiAgICAgICAgICBhZ2VudF90eXBlOiBnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlKGFnZW50KSxcbiAgICAgICAgICBhY3Rpb25fdHlwZTogYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QocGVuZGluZ0FjdGlvbnMpLFxuICAgICAgICAgIGRlY2lzaW9uOiAnYWNjZXB0JyxcbiAgICAgICAgICBvcHRpb246ICdjcmVhdGVfYWdlbnQnLFxuICAgICAgICAgIC4uLihjb21wbGV0ZWRBZ2VudElkPy50cmltKCkgPyB7IGNyZWF0ZWRfYWdlbnRfaWQ6IGNvbXBsZXRlZEFnZW50SWQudHJpbSgpIH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdhc0VkaXRBZ2VudEFwcHJvdmVkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsU3RhdHVzID09PSAnYXBwcm92ZWQnICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiAoYWN0aW9uLnRvb2xfbmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ2VkaXRfYWdlbnQnKVxuXG4gICAgICBsZXQgZWRpdEFnZW50Rm9sbG93VXA6IHsgYWdlbnRJZDogc3RyaW5nIH0gfCB1bmRlZmluZWRcbiAgICAgIGlmICh3YXNFZGl0QWdlbnRBcHByb3ZlZCkge1xuICAgICAgICBjb25zdCBmcm9tU3RyZWFtID0gY29tcGxldGVkQWdlbnRJZD8udHJpbSgpXG4gICAgICAgIGNvbnN0IGZyb21BcmdzID0gZXh0cmFjdEFnZW50SWRGcm9tRWRpdEFnZW50UGVuZGluZ0FjdGlvbnMocGVuZGluZ0FjdGlvbnMpXG4gICAgICAgIGNvbnN0IHJlc29sdmVkQWdlbnRJZCA9IGZyb21TdHJlYW0gfHwgZnJvbUFyZ3NcbiAgICAgICAgaWYgKHJlc29sdmVkQWdlbnRJZCkge1xuICAgICAgICAgIGVkaXRBZ2VudEZvbGxvd1VwID0geyBhZ2VudElkOiByZXNvbHZlZEFnZW50SWQgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRhc2tJZHNGcm9tVXJscyA9IG1hdGNoZXMubWFwKG1hdGNoID0+IHBhcnNlSW50KG1hdGNoWzFdLCAxMCkpXG4gICAgICBjb25zdCB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsID0gZXh0cmFjdFRhc2tJZHNGcm9tRGVsZXRlUGVuZGluZ0FjdGlvbnMocGVuZGluZ0FjdGlvbnMpXG4gICAgICBjb25zdCB0YXNrSWRzRnJvbURlbGV0aW9uVGV4dCA9XG4gICAgICAgIHdhc1Rhc2tEZWxldGUgJiYgdGFza0lkc0Zyb21VcmxzLmxlbmd0aCA9PT0gMCAmJiB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gZXh0cmFjdFRhc2tJZHNGcm9tQXNzaXN0YW50RGVsZXRpb25UZXh0KGNvbnRlbnQpXG4gICAgICAgICAgOiBbXVxuICAgICAgY29uc3QgdGFza0lkc0ZvckRhc2hib2FyZCA9XG4gICAgICAgIHRhc2tJZHNGcm9tVXJscy5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0YXNrSWRzRnJvbVVybHNcbiAgICAgICAgICA6IHRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsXG4gICAgICAgICAgICA6IHRhc2tJZHNGcm9tRGVsZXRpb25UZXh0XG5cbiAgICAgIGNvbnN0IHNob3VsZFN5bmNEYXNoYm9hcmQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgICh3YXNUYXNrQ3JlYXRpb24gfHwgd2FzVGFza0VkaXQgfHwgd2FzVGFza0RlbGV0ZSkgJiZcbiAgICAgICAgdGFza0lkc0ZvckRhc2hib2FyZC5sZW5ndGggPiAwXG5cbiAgICAgIGlmIChzaG91bGRTeW5jRGFzaGJvYXJkKSB7XG4gICAgICAgIGNvbnN0IHRhc2tJZHMgPSB0YXNrSWRzRm9yRGFzaGJvYXJkXG4gICAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCB0YWIgPSBhd2FpdCBnZXRUYWJUYXNrRGVmYXVsdCh0YXNrSWRzWzBdKVxuICAgICAgICAgIGNvbnN0IHRhYlNlZ21lbnQgPSB0YWIgPyBgLyR7dGFifWAgOiAnL2RldGFpbCdcbiAgICAgICAgICBjb250ZW50VG9BZGQgPSBjb250ZW50LnJlcGxhY2UodGFza1VybFJlZ2V4LCB1cmwgPT5cbiAgICAgICAgICAgIHVybC5yZXBsYWNlKC9cXC8oZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycykoPz0kfFxcPykvLCB0YWJTZWdtZW50KVxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxhc3RQcm9qZWN0TWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG1zZyA9PiBtc2cucHJvamVjdElkKS5hdCgtMSlcbiAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZFJhdyA9IHByb2plY3Q/LmlkIHx8IGxhc3RQcm9qZWN0TWVzc2FnZT8ucHJvamVjdElkXG4gICAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWQgPSBjb250ZXh0UHJvamVjdElkUmF3ID8gcGFyc2VJbnQoU3RyaW5nKGNvbnRleHRQcm9qZWN0SWRSYXcpLCAxMCkgOiBudWxsXG4gICAgICAgIGNvbnN0IHBhdGhNYXRjaCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5tYXRjaCgvXlxcL3Byb2plY3RzXFwvKFxcZCspXFwvLylcbiAgICAgICAgY29uc3Qgcm91dGVQcm9qZWN0SWQgPSBwYXRoTWF0Y2ggPyBwYXJzZUludChwYXRoTWF0Y2hbMV0sIDEwKSA6IG51bGxcbiAgICAgICAgY29uc3QgaXNPblByb2plY3RSb3V0ZSA9IGNvbnRleHRQcm9qZWN0SWQgJiYgcm91dGVQcm9qZWN0SWQgJiYgY29udGV4dFByb2plY3RJZCA9PT0gcm91dGVQcm9qZWN0SWRcblxuICAgICAgICBpZiAoaXNPblByb2plY3RSb3V0ZSkge1xuICAgICAgICAgIGlmICh3YXNUYXNrQ3JlYXRpb24pIHtcbiAgICAgICAgICAgIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkPy5hZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZD8uKHRhc2tJZHMpXG4gICAgICAgICAgfSBlbHNlIGlmICh3YXNUYXNrRWRpdCkge1xuICAgICAgICAgICAgd2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQ/LmVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZD8uKHRhc2tJZHMpXG4gICAgICAgICAgfSBlbHNlIGlmICh3YXNUYXNrRGVsZXRlKSB7XG4gICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uZGVsZXRlRXhpc3RpbmdUYXNrRnJvbURhc2hib2FyZD8uKHRhc2tJZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJlZmV0Y2ggZGVsIHRhc2sgcGFuZWwgc2kgZXN0w6EgYWJpZXJ0byB5IGxhIHRvb2wgYXByb2JhZGEgZWRpdMOzL2JvcnLDsyBlc2EgdGFyZWEuXG4gICAgICAvLyBDdWJyZSBsb3MgZG9zIGZsdWpvcyBkZSBhcHByb3ZhbDpcbiAgICAgIC8vICAgMSkgQXBwcm92YWwgcG9yIGJvdMOzbiDihpIgYHByZXZpb3VzTWVzc2FnZS5hcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnNgICh2w61hIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UpXG4gICAgICAvLyAgIDIpIE1hbnVhbCBhcHByb3ZhbCAodXN1YXJpbyB0aXBlYSBcInNpXCIvXCJub1wiKSDihpIgYGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50YFxuICAgICAgY29uc3Qgb3BlblRhc2tQYW5lbElkID0gd2luZG93LnRhc2tQYW5lbD8udGFza0lkXG4gICAgICBjb25zdCBtYW51YWxBcHByb3ZhbCA9IGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50XG4gICAgICBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudCA9IG51bGwgLy8gY29uc3VtaXIgdW5hIHNvbGEgdmV6XG4gICAgICBjb25zdCBtYW51YWxXYXNUYXNrRWRpdCA9ICEhbWFudWFsQXBwcm92YWwgJiYgVEFTS19FRElUX1RPT0xTLmluY2x1ZGVzKG1hbnVhbEFwcHJvdmFsLnRvb2xOYW1lKVxuICAgICAgY29uc3QgbWFudWFsV2FzVGFza0RlbGV0ZSA9ICEhbWFudWFsQXBwcm92YWwgJiYgVEFTS19ERUxFVEVfVE9PTFMuaW5jbHVkZXMobWFudWFsQXBwcm92YWwudG9vbE5hbWUpXG5cbiAgICAgIC8vIFN5bmMgUGxhbm5lcjogYXZpc2FyIGNhcmdhIGRlIGhvcmFzIGNvbmZpcm1hZGEgKGNyZWF0ZV9ob3VyIC8gY3JlYXRlX2hvdXJzKS5cbiAgICAgIGNvbnN0IGhvdXJzVG9vbHNGcm9tQXBwcm92YWwgPSBwZW5kaW5nQWN0aW9uc1xuICAgICAgICAubWFwKChhY3Rpb246IFBlbmRpbmdBY3Rpb24pID0+IGFjdGlvbi50b29sX25hbWUpXG4gICAgICAgIC5maWx0ZXIoKHRvb2xOYW1lKTogdG9vbE5hbWUgaXMgc3RyaW5nID0+IGlzSG91cnNDaGFyZ2VUb29sKHRvb2xOYW1lKSlcbiAgICAgIGNvbnN0IHdhc0hvdXJzQ2hhcmdlQXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgaG91cnNUb29sc0Zyb21BcHByb3ZhbC5sZW5ndGggPiAwXG4gICAgICBjb25zdCBtYW51YWxIb3Vyc1Rvb2wgPSBtYW51YWxBcHByb3ZhbD8udG9vbE5hbWVcbiAgICAgIGNvbnN0IHdhc0hvdXJzQ2hhcmdlTWFudWFsQXBwcm92ZWQgPSBpc0hvdXJzQ2hhcmdlVG9vbChtYW51YWxIb3Vyc1Rvb2wpXG5cbiAgICAgIGlmICh3YXNIb3Vyc0NoYXJnZUFwcHJvdmVkIHx8IHdhc0hvdXJzQ2hhcmdlTWFudWFsQXBwcm92ZWQpIHtcbiAgICAgICAgY29uc3QgdG9vbHMgPSB3YXNIb3Vyc0NoYXJnZUFwcHJvdmVkID8gaG91cnNUb29sc0Zyb21BcHByb3ZhbCA6IG1hbnVhbEhvdXJzVG9vbCA/IFttYW51YWxIb3Vyc1Rvb2xdIDogW11cbiAgICAgICAgZGlzcGF0Y2hNYWlhSG91cnNDaGFyZ2VkKHtcbiAgICAgICAgICBzb3VyY2U6ICdtYWlhJyxcbiAgICAgICAgICB0b29scyxcbiAgICAgICAgICBzZXNzaW9uSWQ6IG1lbW9yeVNlc3Npb25JZCxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wZW5UYXNrUGFuZWxJZCAmJiAod2FzVGFza0VkaXQgfHwgd2FzVGFza0RlbGV0ZSB8fCBtYW51YWxXYXNUYXNrRWRpdCB8fCBtYW51YWxXYXNUYXNrRGVsZXRlKSkge1xuICAgICAgICBjb25zdCBtYW51YWxQc2V1ZG9BY3Rpb246IFBlbmRpbmdBY3Rpb24gfCBudWxsID0gbWFudWFsQXBwcm92YWxcbiAgICAgICAgICA/ICh7IHRvb2xfbmFtZTogbWFudWFsQXBwcm92YWwudG9vbE5hbWUsIHRvb2xfYXJnczogbWFudWFsQXBwcm92YWwudG9vbEFyZ3MgPz8ge30gfSBhcyBQZW5kaW5nQWN0aW9uKVxuICAgICAgICAgIDogbnVsbFxuICAgICAgICBjb25zdCBhZmZlY3RlZFRhc2tJZHMgPSBbXG4gICAgICAgICAgLi4uZXh0cmFjdFRhc2tJZHNGcm9tUGVuZGluZ0FjdGlvbnNBcmdzKHBlbmRpbmdBY3Rpb25zKSxcbiAgICAgICAgICAuLi50YXNrSWRzRnJvbVVybHMsXG4gICAgICAgICAgLi4udGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbCxcbiAgICAgICAgICAuLi4obWFudWFsUHNldWRvQWN0aW9uID8gZXh0cmFjdFRhc2tJZHNGcm9tUGVuZGluZ0FjdGlvbnNBcmdzKFttYW51YWxQc2V1ZG9BY3Rpb25dKSA6IFtdKSxcbiAgICAgICAgXS5tYXAoU3RyaW5nKVxuICAgICAgICBpZiAoYWZmZWN0ZWRUYXNrSWRzLmluY2x1ZGVzKFN0cmluZyhvcGVuVGFza1BhbmVsSWQpKSkge1xuICAgICAgICAgIHdpbmRvdy50YXNrUGFuZWw/LnJlZmV0Y2hUYXNrPy4oKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbW1pdFRvU2Vzc2lvbihzZXNzaW9uSWQsIHtcbiAgICAgICAgaWQ6IGBhbnN3ZXItJHttZW1vcnlTZXNzaW9uSWR9YCxcbiAgICAgICAgbWVzc2FnZTogY29udGVudFRvQWRkLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgc291cmNlcyxcbiAgICAgICAgLi4uKGF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgICAgc3VnZ2VzdGlvbnM6IHN1Z2dlc3Rpb25zIHx8IFtdLFxuICAgICAgICAuLi4oY3JlYXRlQWdlbnRGb2xsb3dVcCA/IHsgY3JlYXRlQWdlbnRGb2xsb3dVcCB9IDoge30pLFxuICAgICAgfSlcbiAgICAgIGNsZWFyU2Vzc2lvblRhaWwoc2Vzc2lvbklkKVxuXG4gICAgICBpZiAoY3JlYXRlQWdlbnRGb2xsb3dVcD8uYWdlbnRJZCkge1xuICAgICAgICBmZXRjaEFnZW50RGV0YWlsKGNyZWF0ZUFnZW50Rm9sbG93VXAuYWdlbnRJZClcbiAgICAgICAgICAudGhlbihjaGF0QWdlbnQgPT4ge1xuICAgICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywge1xuICAgICAgICAgICAgICAgIGRldGFpbDogeyBhZ2VudDogY2hhdEFnZW50IH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1t1c2VDaGF0TWFuYWdlcl0gTm8gc2UgcHVkbyBhw7FhZGlyIGVsIGFnZW50ZSByZWNpw6luIGNyZWFkbyBhbCBsaXN0YWRvJywgZXJyKVxuICAgICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChlZGl0QWdlbnRGb2xsb3dVcD8uYWdlbnRJZCkge1xuICAgICAgICBmZXRjaEFnZW50RGV0YWlsKGVkaXRBZ2VudEZvbGxvd1VwLmFnZW50SWQpXG4gICAgICAgICAgLnRoZW4oY2hhdEFnZW50ID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnbWFpYS1zeW5jLWVkaXRlZC1hZ2VudC1mcm9tLWNoYXQnLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiB7IGFnZW50OiBjaGF0QWdlbnQgfSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignW3VzZUNoYXRNYW5hZ2VyXSBObyBzZSBwdWRvIHJlZnJlc2NhciBlbCBhZ2VudGUgZWRpdGFkbycsIGVycilcbiAgICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG5cbiAgICAgIGNvbnN0IHsgaXNDaGF0Vmlld1Zpc2libGUsIG1hcmtDaGF0QXNSZWFkIH0gPSBnZXRDaGF0c1N0b3JlU3RhdGUoKVxuICAgICAgaWYgKGlzQWN0aXZlICYmIGlzQ2hhdFZpZXdWaXNpYmxlKSB7XG4gICAgICAgIGF3YWl0IG1hcmtDaGF0QXNSZWFkKHNlc3Npb25JZCwgeyBmb3JjZTogdHJ1ZSB9KVxuICAgICAgfVxuXG4gICAgICBpZiAoZmlyc3RUaW1lUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpXG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gICAgICAgIGZpcnN0VGltZVJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICB9LFxuICAgIFtjb21taXRUb1Nlc3Npb24sIGRyb3BGcm9tU2Vzc2lvbiwgY2xlYXJTZXNzaW9uVGFpbCwgcHJvamVjdCwgZ2V0VGFiVGFza0RlZmF1bHQsIGV2ZW50LCBhZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbVN0b3AgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gRWwgc3RvcCBzaWVtcHJlIGFwbGljYSBhIGxhIHNlc2nDs24gYWN0aXZhIChib3TDs24gZGVsIGlucHV0IHZpc2libGUpLlxuICAgIGNvbnN0IHNlc3Npb25JZCA9IGN1cnJlbnRDaGF0SWQuY3VycmVudFxuICAgIGNsZWFyU3RyZWFtVWlSZWYuY3VycmVudCgpXG4gICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGRyb3BGcm9tU2Vzc2lvbihzZXNzaW9uSWQsIHRlbXBNZXNzYWdlSWQpXG5cbiAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICBpZDogYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tY2FuY2VsbGVkYCxcbiAgICAgIG1lc3NhZ2U6IHQoJ2NoYXQuY2FuY2VsbGVkJyksXG4gICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgaXNGcm9udGVuZENhbmNlbGxlZDogdHJ1ZSxcbiAgICB9KVxuICAgIGNsZWFyU2Vzc2lvblRhaWwoc2Vzc2lvbklkKVxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgICB9LCA1MDApXG4gIH0sIFtjb21taXRUb1Nlc3Npb24sIGRyb3BGcm9tU2Vzc2lvbiwgY2xlYXJTZXNzaW9uVGFpbCwgdF0pXG5cbiAgY29uc3QgaGFuZGxlQXBwcm92YWxSZXF1aXJlZCA9IHVzZUNhbGxiYWNrKFxuICAgIChjdHg6IFN0cmVhbUNvbnRleHQsIGFwcHJvdmFsOiBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB7IHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCB9ID0gY3R4XG4gICAgICBjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZVZpZXcuaXMoc2Vzc2lvbklkKVxuXG4gICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICBkcm9wRnJvbVNlc3Npb24oc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkKVxuXG4gICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGl0bENvbnRleHQ6IEhpdGxFeGVjdXRpb25Db250ZXh0ID0ge1xuICAgICAgICBtZXNzYWdlSWQ6IGBhcHByb3ZhbC0ke2FwcHJvdmFsLm9yaWdpbmFsX3RocmVhZF9pZH1gLFxuICAgICAgICBtZXNzYWdlVGV4dDogYWNjdW11bGF0ZWRDb250ZW50IHx8ICcnLFxuICAgICAgICBhcHByb3ZhbCxcbiAgICAgICAgcGVuZGluZ0FjdGlvbnM6IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucyxcbiAgICAgICAgdGhyZWFkSWRzOiBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnM/Lm1hcChhY3Rpb24gPT4gYWN0aW9uLnRocmVhZF9pZCksXG4gICAgICB9XG4gICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IGhpdGxDb250ZXh0XG4gICAgICB9XG5cbiAgICAgIGlmIChhcHByb3ZhbC5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQpIHtcbiAgICAgICAgY29uc3QgZmlyc3RBY3Rpb24gPSBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnM/LlswXVxuICAgICAgICBjb25zdCB0b29sTmFtZSA9IChhcHByb3ZhbCBhcyB7IHRvb2xfbmFtZT86IHN0cmluZyB9KS50b29sX25hbWUgPz8gZmlyc3RBY3Rpb24/LnRvb2xfbmFtZSA/PyAnJ1xuICAgICAgICBjb25zdCB0b29sQXJncyA9XG4gICAgICAgICAgKChhcHByb3ZhbCBhcyB7IHRvb2xfYXJncz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0pLnRvb2xfYXJncyA/P1xuICAgICAgICAgICAgKGZpcnN0QWN0aW9uPy50b29sX2FyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQpKSB8fFxuICAgICAgICAgIG51bGxcbiAgICAgICAgaWYgKHRvb2xOYW1lICYmIGlzQWN0aXZlKSB7XG4gICAgICAgICAgbGFzdE1hbnVhbEFwcHJvdmFsUmVmLmN1cnJlbnQgPSB7IHRvb2xOYW1lLCB0b29sQXJncyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBBZGQgYSBtZXNzYWdlIHdpdGggdGhlIGFwcHJvdmFsIHJlcXVlc3RcbiAgICAgIGNvbW1pdFRvU2Vzc2lvbihzZXNzaW9uSWQsIHtcbiAgICAgICAgaWQ6IGBhcHByb3ZhbC0ke2FwcHJvdmFsLm9yaWdpbmFsX3RocmVhZF9pZH1gLFxuICAgICAgICBtZXNzYWdlOiBhY2N1bXVsYXRlZENvbnRlbnQgfHwgJycsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICBhcHByb3ZhbCxcbiAgICAgICAgYXBwcm92YWxTdGF0dXM6ICdwZW5kaW5nJyxcbiAgICAgIH0pXG4gICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkubWFya0NoYXRBc1VucmVhZChzZXNzaW9uSWQpXG4gICAgICAgIG5vdGlmeVNlc3Npb25GaW5pc2hlZEluQmFja2dyb3VuZChzZXNzaW9uSWQsICdhcHByb3ZhbF9yZXF1aXJlZCcpXG4gICAgICB9XG4gICAgfSxcbiAgICBbY29tbWl0VG9TZXNzaW9uLCBkcm9wRnJvbVNlc3Npb25dXG4gIClcblxuICBjb25zdCB7XG4gICAgYXNrTWFpYSxcbiAgICBpc0xvYWRpbmc6IHdhaXRpbmdSZXNwb25zZSxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgdXBkYXRlU3RyZWFtQWN0aXZpdHksXG4gICAgc3RvcFN0cmVhbWluZyxcbiAgfSA9IHVzZU9yY2hlc3RyYXRvclN0cmVhbSh7XG4gICAgYWN0aXZlU2Vzc2lvbklkLFxuICAgIG9uRXJyb3I6IGhhbmRsZVN0cmVhbUVycm9yLFxuICAgIG9uU3RyZWFtVXBkYXRlOiBoYW5kbGVTdHJlYW1VcGRhdGUsXG4gICAgb25GaW5pc2hTdHJlYW06IGhhbmRsZVN0cmVhbUZpbmlzaCxcbiAgICBvblN0b3A6IGhhbmRsZVN0cmVhbVN0b3AsXG4gICAgb25BcHByb3ZhbFJlcXVpcmVkOiBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkLFxuICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLFxuICB9KVxuXG4gIGNsZWFyU3RyZWFtVWlSZWYuY3VycmVudCA9ICgpID0+IHtcbiAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShudWxsKVxuICAgIHNldEFjdGl2ZUxvYWRpbmdzKHt9KVxuICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG4gIH1cblxuICBjb25zdCBjdXJyZW50UHJvamVjdCA9IHByb2plY3RcblxuICBjb25zdCBzZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzT3JPcHRpb25zPzogQXR0YWNobWVudEZpbGVbXSB8IFNlbmRNZXNzYWdlT3B0aW9ucyxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIGlmIChpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCB8fCB3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2VzKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBUb3BlIGRlIGNvbmN1cnJlbmNpYTogc2kgZXN0YSBzZXNpw7NuIG5vIGVzdMOhIGdlbmVyYW5kbyB5IHlhIGhheVxuICAgICAgLy8gTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyBhY3RpdmFzLCBhdmlzYW1vcyB5IG5vIGFycmFuY2Ftb3Mgb3RyYS5cbiAgICAgIGNvbnN0IHdpbGxTdGFydE5ld1N0cmVhbSA9ICFzZXNzaW9uU3RyZWFtTWFuYWdlci5pc0FjdGl2ZShjdXJyZW50Q2hhdElkLmN1cnJlbnQpXG4gICAgICBpZiAod2lsbFN0YXJ0TmV3U3RyZWFtICYmIHNlc3Npb25TdHJlYW1NYW5hZ2VyLmdldEFjdGl2ZUNvdW50KCkgPj0gTUFYX0NPTkNVUlJFTlRfU1RSRUFNUykge1xuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnc25hY2tiYXItZXZlbnQnLCB7XG4gICAgICAgICAgICBkZXRhaWw6IHsgc2hvdzogdHJ1ZSwgc2V2ZXJpdHk6ICdpbmZvJywgbWVzc2FnZTogdCgnY2hhdC50b29NYW55QWN0aXZlU2Vzc2lvbnMnKSB9LFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgYXR0YWNobWVudHMsIG9wdGlvbnMgfSA9IG5vcm1hbGl6ZVNlbmRNZXNzYWdlQXJncyhhdHRhY2htZW50c09yT3B0aW9ucylcbiAgICAgIC8vIExhcyBtZW50aW9ucyBwdWVkZW4gdmVuaXIgdsOtYSA1dG8gcGFyw6FtZXRybyAoY2FsbCBwb3NpdGlvbmFsIGRlc2RlIGVsIGZvb3RlcilcbiAgICAgIC8vIG8gdsOtYSBTZW5kTWVzc2FnZU9wdGlvbnMgKGNhbGwgcHJvZ3JhbcOhdGljbykuIEVsIHBhcsOhbWV0cm8gZXhwbMOtY2l0byBnYW5hLlxuICAgICAgY29uc3QgZWZmZWN0aXZlTWVudGlvbnMgPSBtZW50aW9ucyA/PyBvcHRpb25zLm1lbnRpb25zXG4gICAgICBjb25zdCBjb250ZXh0TWVzc2FnZTogQ29udGV4dE1lc3NhZ2UgfCB1bmRlZmluZWQgPSBidWlsZENvbnRleHRNZXNzYWdlKGVmZmVjdGl2ZU1lbnRpb25zKVxuICAgICAgY29uc3QgcGF5bG9hZEZ1YUlkID0gZnVhSWQgPz8gb3B0aW9ucy5mdWFJZFxuICAgICAgY29uc3QgcGF5bG9hZFNjSWQgPSBzY0lkID8/IG9wdGlvbnMuc2NJZFxuICAgICAgY29uc3QgcGF5bG9hZENvbnRleHREYXRhID0gb3B0aW9ucy5jb250ZXh0RGF0YVxuICAgICAgY29uc3QgZGlzcGxheU1lc3NhZ2UgPSBmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5KG1lc3NhZ2UsIHtcbiAgICAgICAgZnVhSWQ6IHBheWxvYWRGdWFJZCxcbiAgICAgICAgc2NJZDogcGF5bG9hZFNjSWQsXG4gICAgICB9KVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIHNldEFjdGl2ZUNoYXRJZChjdXJyZW50Q2hhdElkLmN1cnJlbnQpXG4gICAgICBjb25zdCBuZXdNZXNzYWdlSWQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gbmV3TWVzc2FnZUlkXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBtZXNzYWdlXG5cbiAgICAgIGlmICghcmVwb3J0ZWRFdmVudC5jdXJyZW50KSB7XG4gICAgICAgIGV2ZW50KEVWRU5UUy5wbUFpVHlwZWRUZXh0KVxuICAgICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBjb250ZXh0byBnbG9iYWwgZXN0w6EgZGVzYWN0dWFsaXphZG9cbiAgICAgIGNvbnN0IGxhc3RNZXNzYWdlV2l0aFByb2plY3QgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG5cbiAgICAgIGNvbnN0IGN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQ/LlttZXNzYWdlc1JlZi5jdXJyZW50Lmxlbmd0aCAtIDFdPy5hZ2VudElkXG5cbiAgICAgIGNvbnN0IHNlc3Npb25JZCA9IGN1cnJlbnRDaGF0SWQuY3VycmVudFxuICAgICAgY29uc3Qge1xuICAgICAgICBjaGlwc1Byb2plY3Q6IGN0eENoaXBzUHJvamVjdCxcbiAgICAgICAgcHJvamVjdDogY3R4UHJvamVjdCxcbiAgICAgICAgY2xpZW50OiBjdHhDbGllbnQsXG4gICAgICAgIHRhc2s6IGN0eFRhc2ssXG4gICAgICB9ID0gY29udGV4dFJlZi5jdXJyZW50XG5cbiAgICAgIGVuc3VyZVNlc3Npb25JblNpZGViYXIoe1xuICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgIHRpdGxlOiBidWlsZFNpZGViYXJTZXNzaW9uVGl0bGUoZGlzcGxheU1lc3NhZ2UpLFxuICAgICAgICBhZ2VudCxcbiAgICAgICAgYWdlbnRJZDogY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzIHx8IGFnZW50Py5pZCxcbiAgICAgICAgcHJvamVjdDogY3R4UHJvamVjdCxcbiAgICAgICAgY2xpZW50OiBjdHhDbGllbnQsXG4gICAgICAgIGF0dGFjaG1lbnRzLFxuICAgICAgfSlcblxuICAgICAgLy8gTm8gYWdyZWdhciBwcm9qZWN0SWQgYWwgbWVuc2FqZSBkZWwgdXN1YXJpbyAtIHNlIGRldGVybWluYXLDoSBkZXNwdcOpc1xuICAgICAgY29tbWl0VG9TZXNzaW9uKHNlc3Npb25JZCwge1xuICAgICAgICBpZDogYHF1ZXN0aW9uLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fWAsXG4gICAgICAgIG1lc3NhZ2U6IGRpc3BsYXlNZXNzYWdlLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiBjdXJyZW50VXNlcixcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLlVTRVIsXG4gICAgICAgIHNvdXJjZXM6IGF0dGFjaG1lbnRzLFxuICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICB9KVxuXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuXG4gICAgICBjb25zdCBzdHJlYW1pbmdQbGFjZWhvbGRlcklkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBzZXNzaW9uSWRcbiAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LnN0YXJ0KHNlc3Npb25JZCwgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZClcbiAgICAgIGNvbW1pdFRvU2Vzc2lvbihzZXNzaW9uSWQsIHtcbiAgICAgICAgaWQ6IHN0cmVhbWluZ1BsYWNlaG9sZGVySWQsXG4gICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogYWdlbnQ/Lm5hbWUgfHwgJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pXG5cbiAgICAgIGxldCBmaW5hbE1lc3NhZ2UgPSBtZXNzYWdlXG5cbiAgICAgIGlmIChtZXNzYWdlID09PSB0KCdxYS5pdGVtcy5yZW50YWJpbGlkYWRfcHJveWVjdG8nKSkge1xuICAgICAgICBmaW5hbE1lc3NhZ2UgPSBgRkFROiAke3QoJ3FhLml0ZW1zLnJlbnRhYmlsaWRhZF9wcm95ZWN0bycpfSAtIFRpcG8gZGUgcmVudGFiaWxpZGFkOiAke1xuICAgICAgICAgIG9wdGlvbnMucHJvamVjdENoYW5nZWQ/LmluY29tZVR5cGUgfHwgY29udGV4dFJlZi5jdXJyZW50LnByb2plY3Q/LmluY29tZVR5cGVcbiAgICAgICAgfWBcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KSlcblxuICAgICAgY29uc3QgbGFzdE1lc3NhZ2VQcm9qZWN0SWQgPSBsYXN0TWVzc2FnZVdpdGhQcm9qZWN0Py5wcm9qZWN0SWRcbiAgICAgIGNvbnN0IHByb2plY3RUb1JlcXVlc3QgPSByZXNvbHZlUHJvamVjdFRvUmVxdWVzdChjdHhDaGlwc1Byb2plY3QsIGxhc3RNZXNzYWdlUHJvamVjdElkKVxuXG4gICAgICBjb25zdCBwcm9qZWN0cyA9IGF3YWl0IGZldGNoUHJvamVjdHMoW3Byb2plY3RUb1JlcXVlc3RdKVxuXG4gICAgICBjb25zdCBwYXlsb2FkRmFxSWQgPSBmYXFJZCA/PyBvcHRpb25zLmZhcUlkXG4gICAgICBjb25zdCBwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQgPSBhZ2VudFN1Z2dlc3Rpb25JZCA/PyBvcHRpb25zLmFnZW50U3VnZ2VzdGlvbklkXG5cbiAgICAgIGNvbnN0IHBheWxvYWREYXRhID0ge1xuICAgICAgICBtZXNzYWdlOiBmaW5hbE1lc3NhZ2UsXG4gICAgICAgIGhpc3RvcnksXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdFRvUmVxdWVzdCxcbiAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICBmaXJzdE5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICBhZ2VudElkOiBjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMgfHwgYWdlbnQ/LmlkISxcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIC4uLihjdHhQcm9qZWN0Py5mZWVJZCAhPSBudWxsID8geyBmZWVJZDogTnVtYmVyKGN0eFByb2plY3QuZmVlSWQpIH0gOiB7fSksXG4gICAgICAgIC4uLnJlc29sdmVDbGllbnRQYXlsb2FkKGN0eENsaWVudCwgY3R4UHJvamVjdCksXG4gICAgICAgIC4uLihwcm9qZWN0cz8ubGVuZ3RoID8geyBwcm9qZWN0TmFtZTogcHJvamVjdHNbMF0ubmFtZSB9IDoge30pLFxuICAgICAgICAuLi4oY3R4VGFzaz8uaWQgIT0gbnVsbFxuICAgICAgICAgID8geyB0YXNrSWQ6IE51bWJlcihjdHhUYXNrLmlkKSwgLi4uKGN0eFRhc2submFtZSA/IHsgdGFza05hbWU6IGN0eFRhc2submFtZSB9IDoge30pIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgICAgLi4uKGF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkRmFxSWQgPyB7IGZhcUlkOiBwYXlsb2FkRmFxSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRBZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQ6IHBheWxvYWRBZ2VudFN1Z2dlc3Rpb25JZCB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZEZ1YUlkID8geyBmdWFJZDogcGF5bG9hZEZ1YUlkIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkU2NJZCA/IHsgc2NJZDogcGF5bG9hZFNjSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py5lbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHk6IGFnZW50LmVudGl0eSB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LnR5cGUgIT0gbnVsbCA/IHsgYWdlbnRUeXBlOiBhZ2VudC50eXBlIH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8uZW1vamkgIT0gbnVsbCA/IHsgYWdlbnRFbW9qaTogYWdlbnQuZW1vamkgfSA6IHt9KSxcbiAgICAgICAgLi4uKGNvbnRleHRNZXNzYWdlID8geyBjb250ZXh0TWVzc2FnZSB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZENvbnRleHREYXRhID8geyBjb250ZXh0RGF0YTogcGF5bG9hZENvbnRleHREYXRhIH0gOiB7fSksXG4gICAgICB9XG5cbiAgICAgIGFza01haWEocGF5bG9hZERhdGEpXG4gICAgfSxcbiAgICBbXG4gICAgICBhZGRNZXNzYWdlLFxuICAgICAgY29tbWl0VG9TZXNzaW9uLFxuICAgICAgZXZlbnQsXG4gICAgICBhc2tNYWlhLFxuICAgICAgcHJvamVjdCxcbiAgICAgIGNsaWVudCxcbiAgICAgIHRhc2ssXG4gICAgICBjaGlwc1Byb2plY3QsXG4gICAgICBhdXRoVXNlcixcbiAgICAgIGFnZW50LFxuICAgICAgdCxcbiAgICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIF1cbiAgKVxuXG4gIGNvbnN0IGNoYW5nZVByb2plY3QgPSB1c2VDYWxsYmFjayhcbiAgICAob3B0aW9uOiBQcm9qZWN0KSA9PiB7XG4gICAgICBpZiAoIWN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCkgcmV0dXJuXG5cbiAgICAgIGlmIChvcHRpb24uaWQgIT09IHByb2plY3Q/LmlkKSB7XG4gICAgICAgIHNldFByb2plY3Qob3B0aW9uKVxuICAgICAgfVxuXG4gICAgICBpZiAocHJvamVjdCAmJiBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgICByb2xlOiBoaXN0b3J5TWVzc2FnZS51c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpID8gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICB9KSlcblxuICAgICAgICBhc2tNYWlhKHtcbiAgICAgICAgICBtZXNzYWdlOiBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQsXG4gICAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgICBwcm9qZWN0SWQ6IG9wdGlvbi5pZCxcbiAgICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICAgIHVzZXJJZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBmaXJzdE5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgICAgICBsYXN0TmFtZTogYXV0aFVzZXIubGFzdE5hbWUsXG4gICAgICAgICAgY29tcGFueUlkOiBhdXRoVXNlci5jb21wYW55X2lkLnRvU3RyaW5nKCksXG4gICAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgICAgbWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG4gICAgICAgICAgYWdlbnROYW1lOiBhZ2VudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgICBhZ2VudElkOiBhZ2VudD8uaWQgfHwgJycsXG4gICAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgICAuLi4ob3B0aW9uPy5mZWVJZCAhPSBudWxsID8geyBmZWVJZDogTnVtYmVyKG9wdGlvbi5mZWVJZCkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4ob3B0aW9uPy5jbGllbnRJZCAhPSBudWxsID8geyBjbGllbnRJZDogTnVtYmVyKG9wdGlvbi5jbGllbnRJZCkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50Py50eXBlICE9IG51bGwgPyB7IGFnZW50VHlwZTogYWdlbnQudHlwZSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW3Byb2plY3QsIHNldFByb2plY3QsIGFza01haWEsIGF1dGhVc2VyLCBpc1dlYlNlYXJjaEFjdGl2ZSwgYWdlbnRdXG4gIClcblxuICBjb25zdCBoYW5kbGVGZWVkYmFjayA9IHVzZUNhbGxiYWNrKGFzeW5jIChmZWVkYmFja1Byb3A6IEZlZWRiYWNrLCBjaGF0TWVzc2FnZUlkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuQ2hhdHMud2FzSGVscGZ1bENoYXQoY2hhdE1lc3NhZ2VJZCwgZmVlZGJhY2tQcm9wID09PSBGZWVkYmFjay5USFVNQlNfVVApXG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAobWVzc2FnZSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlLmlkID09PSBjaGF0TWVzc2FnZUlkICYmIG1lc3NhZ2Uucm9sZSA9PT0gJ2Fzc2lzdGFudCcpIHtcbiAgICAgICAgICByZXR1cm4geyAuLi5tZXNzYWdlLCB3YXNIZWxwZnVsOiBmZWVkYmFja1Byb3AgPT09IEZlZWRiYWNrLlRIVU1CU19VUCB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVBcHByb3ZhbERlY2lzaW9uID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgdGhyZWFkSWRzOiBzdHJpbmdbXSxcbiAgICAgIGRlY2lzaW9uOiAnYXBwcm92ZScgfCAncmVqZWN0JyxcbiAgICAgIGVkaXRlZEFjdGlvbnM/OiBBcnJheTx7IHRvb2xfbmFtZTogc3RyaW5nOyBhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9PlxuICAgICkgPT4ge1xuICAgICAgaWYgKCF0aHJlYWRJZHM/Lmxlbmd0aCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdObyB0aHJlYWRfaWRzIHByb3ZpZGVkIGZvciBhcHByb3ZhbCBkZWNpc2lvbicpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3VuZCA9IGZpbmRNZXNzYWdlV2l0aEFwcHJvdmFsQnlUaHJlYWRJZHModGhyZWFkSWRzLCBtZXNzYWdlc1JlZi5jdXJyZW50KVxuICAgICAgaWYgKCFmb3VuZD8ubWVzc2FnZS5hcHByb3ZhbCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdObyBzZSBlbmNvbnRyw7MgbWVuc2FqZSBjb24gYXBwcm92YWwgcGFyYSB0aHJlYWRfaWRzOicsIHRocmVhZElkcylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgbWVzc2FnZTogbWVzc2FnZVdpdGhBcHByb3ZhbCwgc2Vzc2lvbklkOiBmb3VuZFNlc3Npb25JZCB9ID0gZm91bmRcbiAgICAgIGNvbnN0IHsgYXBwcm92YWwgfSA9IG1lc3NhZ2VXaXRoQXBwcm92YWxcbiAgICAgIGlmICghYXBwcm92YWwpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNlc3Npb25JZCA9IGFwcHJvdmFsLnNlc3Npb25faWQgfHwgZm91bmRTZXNzaW9uSWRcbiAgICAgIGlmICghc2Vzc2lvbklkKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIHNlc3Npb25faWQgZGlzcG9uaWJsZSBwYXJhIGFwcHJvdmFsOicsIHRocmVhZElkcylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChzZXNzaW9uU3RyZWFtTWFuYWdlci5pc0FjdGl2ZShzZXNzaW9uSWQpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoc2Vzc2lvblN0cmVhbU1hbmFnZXIuZ2V0QWN0aXZlQ291bnQoKSA+PSBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TKSB7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdzbmFja2Jhci1ldmVudCcsIHtcbiAgICAgICAgICAgIGRldGFpbDogeyBzaG93OiB0cnVlLCBzZXZlcml0eTogJ2luZm8nLCBtZXNzYWdlOiB0KCdjaGF0LnRvb01hbnlBY3RpdmVTZXNzaW9ucycpIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgbWVzc2FnZUlkID0gbWVzc2FnZVdpdGhBcHByb3ZhbC5pZFxuICAgICAgY29uc3QgbmV3U3RhdHVzID0gZGVjaXNpb24gPT09ICdhcHByb3ZlJyA/ICdhcHByb3ZlZCcgOiAncmVqZWN0ZWQnXG4gICAgICBjb25zdCBoaXRsQ29udGV4dDogSGl0bEV4ZWN1dGlvbkNvbnRleHQgPSB7XG4gICAgICAgIG1lc3NhZ2VJZCxcbiAgICAgICAgbWVzc2FnZVRleHQ6IG1lc3NhZ2VXaXRoQXBwcm92YWwubWVzc2FnZSxcbiAgICAgICAgYXBwcm92YWwsXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zOiBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnMsXG4gICAgICAgIHRocmVhZElkcyxcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNBY3RpdmVTZXNzaW9uID0gYWN0aXZlVmlldy5pcyhzZXNzaW9uSWQpXG4gICAgICBpZiAoaXNBY3RpdmVTZXNzaW9uKSB7XG4gICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBoaXRsQ29udGV4dFxuICAgICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIH1cblxuICAgICAgY29tbWl0VG9TZXNzaW9uKHNlc3Npb25JZCwgeyAuLi5tZXNzYWdlV2l0aEFwcHJvdmFsLCBhcHByb3ZhbFN0YXR1czogbmV3U3RhdHVzIH0pXG5cbiAgICAgIGNvbnN0IHN0cmVhbU1lc3NhZ2VJZCA9IHV1aWR2NCgpXG4gICAgICBpZiAoaXNBY3RpdmVTZXNzaW9uKSB7XG4gICAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHN0cmVhbU1lc3NhZ2VJZFxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXRsQ3R4OiBTdHJlYW1Db250ZXh0ID0ge1xuICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgIG1lc3NhZ2VJZDogc3RyZWFtTWVzc2FnZUlkLFxuICAgICAgICBwbGFjZWhvbGRlcklkOiBgYW5zd2VyLSR7c3RyZWFtTWVzc2FnZUlkfS1zdHJlYW1pbmdgLFxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWxlYXNlQWN0aXZlUHJvY2Vzc2luZyA9ICgpID0+IHtcbiAgICAgICAgaWYgKCFpc0FjdGl2ZVNlc3Npb24pIHJldHVyblxuICAgICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNlc3Npb25TdHJlYW1NYW5hZ2VyLnN0YXJ0Q29udGludWVTdHJlYW0oe1xuICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgIHBsYWNlaG9sZGVySWQ6IGhpdGxDdHgucGxhY2Vob2xkZXJJZCxcbiAgICAgICAgY29udGludWVSZXF1ZXN0OiB7XG4gICAgICAgICAgdGhyZWFkSWRzLFxuICAgICAgICAgIHNlc3Npb25JZDogYXBwcm92YWwuc2Vzc2lvbl9pZCxcbiAgICAgICAgICBkZWNpc2lvbjogZWRpdGVkQWN0aW9ucyA/ICdlZGl0JyA6IGRlY2lzaW9uLFxuICAgICAgICAgIGVkaXRlZEFjdGlvbnMsXG4gICAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkIHx8ICcnLFxuICAgICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgIH0sXG4gICAgICAgIHQsXG4gICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0OiBoaXRsQ29udGV4dCxcbiAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkLFxuICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lLFxuICAgICAgICBjYWxsYmFja3M6IHtcbiAgICAgICAgICBvblN0cmVhbVVwZGF0ZTogY29udGVudCA9PiBoYW5kbGVTdHJlYW1VcGRhdGUoaGl0bEN0eCwgY29udGVudCksXG4gICAgICAgICAgb25GaW5pc2hTdHJlYW06IGZpbmlzaFBheWxvYWQgPT4ge1xuICAgICAgICAgICAgcmVsZWFzZUFjdGl2ZVByb2Nlc3NpbmcoKVxuICAgICAgICAgICAgaGFuZGxlU3RyZWFtRmluaXNoKFxuICAgICAgICAgICAgICBoaXRsQ3R4LFxuICAgICAgICAgICAgICBmaW5pc2hQYXlsb2FkLmNvbnRlbnQsXG4gICAgICAgICAgICAgIGZpbmlzaFBheWxvYWQuc291cmNlcyxcbiAgICAgICAgICAgICAgZmluaXNoUGF5bG9hZC5tZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgICAgICAgIGZpbmlzaFBheWxvYWQuYXR0YWNobWVudHMsXG4gICAgICAgICAgICAgIGZpbmlzaFBheWxvYWQuc3VnZ2VzdGlvbnMsXG4gICAgICAgICAgICAgIGZpbmlzaFBheWxvYWQuY29tcGxldGVkQWdlbnRJZFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25FcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgcmVsZWFzZUFjdGl2ZVByb2Nlc3NpbmcoKVxuICAgICAgICAgICAgaGFuZGxlU3RyZWFtRXJyb3IoaGl0bEN0eClcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQXBwcm92YWxSZXF1aXJlZDogKGFwcHJvdmFsUGF5bG9hZCwgYWNjdW11bGF0ZWRDb250ZW50KSA9PiB7XG4gICAgICAgICAgICByZWxlYXNlQWN0aXZlUHJvY2Vzc2luZygpXG4gICAgICAgICAgICBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkKGhpdGxDdHgsIGFwcHJvdmFsUGF5bG9hZCwgYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KVxuXG4gICAgICBpZiAoIXJlc3VsdC5zdGFydGVkKSB7XG4gICAgICAgIHJlbGVhc2VBY3RpdmVQcm9jZXNzaW5nKClcbiAgICAgICAgaWYgKHJlc3VsdC5yZWFzb24gPT09ICdsaW1pdCcpIHtcbiAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdzbmFja2Jhci1ldmVudCcsIHtcbiAgICAgICAgICAgICAgZGV0YWlsOiB7IHNob3c6IHRydWUsIHNldmVyaXR5OiAnaW5mbycsIG1lc3NhZ2U6IHQoJ2NoYXQudG9vTWFueUFjdGl2ZVNlc3Npb25zJykgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBhdXRoVXNlcixcbiAgICAgIGFnZW50LFxuICAgICAgY29tbWl0VG9TZXNzaW9uLFxuICAgICAgaGFuZGxlU3RyZWFtRXJyb3IsXG4gICAgICBoYW5kbGVTdHJlYW1VcGRhdGUsXG4gICAgICBoYW5kbGVTdHJlYW1GaW5pc2gsXG4gICAgICBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkLFxuICAgICAgdCxcbiAgICBdXG4gIClcblxuICBjb25zdCBpbml0aWFsaXplQ2hhdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWZpcnN0VGltZVJlZi5jdXJyZW50KSB7XG4gICAgICBmaXJzdFRpbWVSZWYuY3VycmVudCA9IHRydWVcbiAgICB9XG4gICAgaWYgKGluaXRpYWxDaGF0SWQpIHtcbiAgICAgIGF3YWl0IGxvYWRNZXNzYWdlcygpXG4gICAgfSBlbHNlIGlmICh1c2VySW5pdGlhbE1lc3NhZ2UpIHtcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxNZXNzYWdlID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZT8udHJpbSgpKVxuICAgICAgY29uc3QgaGFzSW5pdGlhbEF0dGFjaG1lbnRzID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHM/Lmxlbmd0aClcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxGYXEgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZClcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxGdWEgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZClcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxTYyA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLnNjSWQpXG5cbiAgICAgIGlmICghaGFzSW5pdGlhbE1lc3NhZ2UgJiYgIWhhc0luaXRpYWxBdHRhY2htZW50cyAmJiAhaGFzSW5pdGlhbEZhcSAmJiAhaGFzSW5pdGlhbEZ1YSAmJiAhaGFzSW5pdGlhbFNjKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pKVxuXG4gICAgICBjb25zdCB7XG4gICAgICAgIGNoaXBzUHJvamVjdDogY3R4Q2hpcHNQcm9qZWN0LFxuICAgICAgICBwcm9qZWN0OiBjdHhQcm9qZWN0LFxuICAgICAgICBjbGllbnQ6IGN0eENsaWVudCxcbiAgICAgICAgdGFzazogY3R4VGFzayxcbiAgICAgIH0gPSBjb250ZXh0UmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IHByb2plY3RUb1JlcXVlc3QgPSByZXNvbHZlUHJvamVjdFRvUmVxdWVzdChjdHhDaGlwc1Byb2plY3QsIG51bGwpID8/IGN0eFByb2plY3Q/LmlkID8/IG51bGxcblxuICAgICAgY29uc29sZS5pbmZvKCdbdXNlQ2hhdE1hbmFnZXJdIFBBVEg9aW5pdGlhbGl6ZUNoYXQvdXNlckluaXRpYWxNZXNzYWdlIOKAlCBjb250ZXh0UmVmIHJlc29sdXRpb246Jywge1xuICAgICAgICBwcm9qZWN0UHJvcElkOiBjdHhQcm9qZWN0Py5pZCA/PyBudWxsLFxuICAgICAgICBjbGllbnRJZDogY3R4Q2xpZW50Py5pZCA/PyBudWxsLFxuICAgICAgICB0YXNrSWQ6IGN0eFRhc2s/LmlkID8/IG51bGwsXG4gICAgICAgIGNoaXBzUHJvamVjdElkOiBjdHhDaGlwc1Byb2plY3Q/LnByb2plY3RJZCA/PyBudWxsLFxuICAgICAgICBwcm9qZWN0VG9SZXF1ZXN0LFxuICAgICAgICBhZ2VudFR5cGU6IGFnZW50Py50eXBlLFxuICAgICAgfSlcblxuICAgICAgY29uc3QgaW5pdGlhbERpc3BsYXlNZXNzYWdlID0gZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlRm9yRGlzcGxheSh1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSwge1xuICAgICAgICBmdWFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZ1YUlkLFxuICAgICAgICBzY0lkOiB1c2VySW5pdGlhbE1lc3NhZ2Uuc2NJZCxcbiAgICAgIH0pXG5cbiAgICAgIGVuc3VyZVNlc3Npb25JblNpZGViYXIoe1xuICAgICAgICBzZXNzaW9uSWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgdGl0bGU6IGJ1aWxkU2lkZWJhclNlc3Npb25UaXRsZShpbml0aWFsRGlzcGxheU1lc3NhZ2UpLFxuICAgICAgICBhZ2VudCxcbiAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkLFxuICAgICAgICBwcm9qZWN0OiBjdHhQcm9qZWN0LFxuICAgICAgICBjbGllbnQ6IGN0eENsaWVudCxcbiAgICAgICAgYXR0YWNobWVudHM6IHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyxcbiAgICAgIH0pXG5cbiAgICAgIGFza01haWEoe1xuICAgICAgICBtZXNzYWdlOiB1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0VG9SZXF1ZXN0LFxuICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgIGZpcnN0TmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZTogYXV0aFVzZXIubGFzdE5hbWUsXG4gICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgbWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUhLFxuICAgICAgICBhZ2VudElkOiBhZ2VudD8uaWQhLFxuICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgLi4uKGN0eFByb2plY3Q/LmZlZUlkICE9IG51bGwgPyB7IGZlZUlkOiBOdW1iZXIoY3R4UHJvamVjdC5mZWVJZCkgfSA6IHt9KSxcbiAgICAgICAgLi4ucmVzb2x2ZUNsaWVudFBheWxvYWQoY3R4Q2xpZW50LCBjdHhQcm9qZWN0KSxcbiAgICAgICAgLi4uKGN0eFByb2plY3Q/Lm5hbWUgPyB7IHByb2plY3ROYW1lOiBjdHhQcm9qZWN0Lm5hbWUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGN0eFRhc2s/LmlkICE9IG51bGxcbiAgICAgICAgICA/IHsgdGFza0lkOiBOdW1iZXIoY3R4VGFzay5pZCksIC4uLihjdHhUYXNrLm5hbWUgPyB7IHRhc2tOYW1lOiBjdHhUYXNrLm5hbWUgfSA6IHt9KSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgPyB7IGF0dGFjaG1lbnRzOiB1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZCA/IHsgZmFxSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZDogdXNlckluaXRpYWxNZXNzYWdlLmFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQgPyB7IGZ1YUlkOiB1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkID8geyBzY0lkOiB1c2VySW5pdGlhbE1lc3NhZ2Uuc2NJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8udHlwZSAhPSBudWxsID8geyBhZ2VudFR5cGU6IGFnZW50LnR5cGUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py5lbW9qaSAhPSBudWxsID8geyBhZ2VudEVtb2ppOiBhZ2VudC5lbW9qaSB9IDoge30pLFxuICAgICAgICAuLi4oYnVpbGRDb250ZXh0TWVzc2FnZSh1c2VySW5pdGlhbE1lc3NhZ2UubWVudGlvbnMpXG4gICAgICAgICAgPyB7IGNvbnRleHRNZXNzYWdlOiBidWlsZENvbnRleHRNZXNzYWdlKHVzZXJJbml0aWFsTWVzc2FnZS5tZW50aW9ucykgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmNvbnRleHREYXRhID8geyBjb250ZXh0RGF0YTogdXNlckluaXRpYWxNZXNzYWdlLmNvbnRleHREYXRhIH0gOiB7fSksXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW1xuICAgIGluaXRpYWxDaGF0SWQsXG4gICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgIHByb2plY3QsXG4gICAgY2xpZW50LFxuICAgIHRhc2ssXG4gICAgYXV0aFVzZXIsXG4gICAgYWdlbnQsXG4gICAgYXNrTWFpYSxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gIF0pXG5cbiAgY29uc3QgcmVzZXRDaGF0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHByZXZpb3VzU2Vzc2lvbklkID0gY3VycmVudENoYXRJZC5jdXJyZW50XG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIocHJldmlvdXNTZXNzaW9uSWQpXG4gICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgY3VycmVudENoYXRJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICBzZXRBY3RpdmVTZXNzaW9uSWQoY3VycmVudENoYXRJZC5jdXJyZW50KVxuICAgIHJlcG9ydGVkRXZlbnQuY3VycmVudCA9IGZhbHNlXG4gICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIHNldEFjdGl2ZUNoYXRJZChudWxsKVxuICB9LCBbc2V0QWN0aXZlQ2hhdElkXSlcblxuICBjb25zdCBzdG9wR2VuZXJhdGlvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzdG9wU3RyZWFtaW5nKClcbiAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gIH0sIFtzdG9wU3RyZWFtaW5nXSlcblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2VzLFxuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBzdHJlYW1BY3Rpdml0eSxcbiAgICBhY3RpdmVMb2FkaW5ncyxcbiAgICBjdXJyZW50UHJvamVjdCxcbiAgICBjdXJyZW50Q2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgY3VycmVudE1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuXG4gICAgc2VuZE1lc3NhZ2UsXG4gICAgY2hhbmdlUHJvamVjdCxcbiAgICBoYW5kbGVGZWVkYmFjayxcbiAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uLFxuICAgIGhhbmRsZVNjcm9sbCxcbiAgICBpbml0aWFsaXplQ2hhdCxcbiAgICByZXNldENoYXQsXG4gICAgc3RvcEdlbmVyYXRpb24sXG5cbiAgICBpc0Rpc2FibGVkOiB3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2VzLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsU0FBUyxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNoRSxTQUFTQyxFQUFFLElBQUlDLE1BQU0sUUFBUSxNQUFNO0FBQ25DLFNBQVNDLGVBQWUsUUFBUSxvQkFBb0I7QUFDcEQsU0FBU0MscUJBQXFCLFFBQVEsMEJBQTBCO0FBQ2hFLFNBQVNDLElBQUksUUFBUSxTQUFTO0FBRzlCLFNBQVNDLE9BQU8sUUFBaUIsd0JBQXdCO0FBQ3pELFNBQVNDLGdCQUFnQixRQUFRLDhCQUE4QjtBQUMvRCxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxhQUFhO0FBQzlDLE9BQU9DLElBQUksTUFBTSxxQkFBcUI7QUFDdEMsU0FBU0MsUUFBUSxRQUFRLDREQUE0RDtBQUNyRixTQUF1Q0MsZUFBZSxRQUF3QyxrQkFBa0I7QUFD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
1489
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsImJ1aWxkQ29udGV4dE1lc3NhZ2UiLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwidXNlUHJvamVjdHMiLCJ1c2VUYWJUYXNrRGVmYXVsdCIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJkaXNwYXRjaE1haWFIb3Vyc0NoYXJnZWQiLCJpc0hvdXJzQ2hhcmdlVG9vbCIsImZldGNoQWdlbnREZXRhaWwiLCJidWlsZEhpdGxBY3Rpb25UeXBlTGlzdCIsImdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUiLCJub3JtYWxpemVIaXRsVG9vbE5hbWUiLCJ0cmFja01hbnVhbEhpdGxFdmVudHMiLCJzZXNzaW9uU3RyZWFtaW5nVGV4dCIsInVzZVNlc3Npb25zU3RvcmUiLCJ1c2VTZXNzaW9uTWV0YSIsInNlc3Npb25TdHJlYW1NYW5hZ2VyIiwiTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyIsImFjdGl2ZVZpZXciLCJub3RpZnlTZXNzaW9uRmluaXNoZWRJbkJhY2tncm91bmQiLCJidWlsZFNpZGViYXJTZXNzaW9uVGl0bGUiLCJlbnN1cmVTZXNzaW9uSW5TaWRlYmFyIiwiaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZCIsImdldENoYXRzU3RvcmVTdGF0ZSIsInVzZUNoYXRzU3RvcmUiLCJub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MiLCJhdHRhY2htZW50c09yT3B0aW9ucyIsIl9vcHRpb25zJGF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5IiwiYXR0YWNobWVudHMiLCJvcHRpb25zIiwicmVzb2x2ZVByb2plY3RUb1JlcXVlc3QiLCJjaGlwc1Byb2plY3QiLCJsYXN0TWVzc2FnZVByb2plY3RJZCIsImNoaXBzUHJvamVjdElkIiwicHJvamVjdElkIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJwYXJzZWQiLCJyZXNvbHZlQ2xpZW50UGF5bG9hZCIsImN0eENsaWVudCIsImN0eFByb2plY3QiLCJfY3R4UHJvamVjdCRjbGllbnQiLCJpZCIsIl9vYmplY3RTcHJlYWQiLCJjbGllbnRJZCIsIm5hbWUiLCJjbGllbnROYW1lIiwiY2xpZW50Iiwibm9ybWFsaXplQXNzaXN0YW50QXR0YWNobWVudHMiLCJyYXdBdHRhY2htZW50cyIsImZpbHRlciIsImF0dGFjaG1lbnQiLCJfdHlwZW9mIiwibWFwIiwiaW5kZXgiLCJ0cmltIiwiY29uY2F0IiwidHlwZSIsIm1pbWVUeXBlIiwibWltZV90eXBlIiwiZnVsbEZpbGVOYW1lIiwiaW5jbHVkZXMiLCJudW1lcmljU2l6ZSIsInNpemUiLCJmaWxlIiwiRmlsZSIsInVybF9vcmlnaW5hbCIsInVuZGVmaW5lZCIsInVybF90aHVtYm5haWwiLCJ1cmxfZmlsZSIsInJvbGUiLCJleHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MiLCJwZW5kaW5nQWN0aW9ucyIsImlkcyIsInB1c2hJZCIsInJhdyIsIm4iLCJwYXJzZUludCIsIlN0cmluZyIsImlzTmFOIiwicHVzaCIsImZvckVhY2giLCJhY3Rpb24iLCJfcmVjJHRhc2tfaWQiLCJhcmdzIiwidG9vbF9hcmdzIiwicmVjIiwidGFza19pZCIsInRhc2tfaWRzIiwidGFza3MiLCJ0IiwiX3RyZWMkdGFza19pZCIsInRyZWMiLCJleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyIsInRvb2xfbmFtZSIsIl9yZWMkdGFza19pZDIiLCJsaXN0IiwidGlkIiwiZXh0cmFjdEFnZW50SWRGcm9tRWRpdEFnZW50UGVuZGluZ0FjdGlvbnMiLCJfcmVjJGFnZW50X2lkIiwiZWRpdEFjdGlvbiIsImZpbmQiLCJhIiwidG9Mb3dlckNhc2UiLCJhZ2VudF9pZCIsImFnZW50SWQiLCJleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUiLCJ0b29sTmFtZSIsIl9yZWYiLCJfcmVjJGFnZW50X2lkMiIsImV4dHJhY3RUYXNrSWRzRnJvbUFzc2lzdGFudERlbGV0aW9uVGV4dCIsInRleHQiLCJsYWJlbGVkIiwibWF0Y2giLCJib2xkIiwidXNlU3RhYmxlQ2FsbGJhY2tzIiwiYXV0aFVzZXIiLCJjdXJyZW50VXNlciIsInRvU3RyaW5nIiwiZmlyc3ROYW1lIiwiYXZhdGFyIiwicGljdHVyZSIsImN1cnJlbnQiLCJmaW5kTWVzc2FnZVdpdGhBcHByb3ZhbEJ5VGhyZWFkSWRzIiwidGhyZWFkSWRzIiwiYWN0aXZlTWVzc2FnZXMiLCJmcm9tQWN0aXZlVmlldyIsIm1lc3NhZ2UiLCJfbWVzc2FnZSRhcHByb3ZhbCIsImFwcHJvdmFsIiwicGVuZGluZ19hY3Rpb25zIiwic29tZSIsInRocmVhZF9pZCIsInNlc3Npb25JZCIsInNlc3Npb25faWQiLCJnZXQiLCJfdXNlU2Vzc2lvbnNTdG9yZSRnZXQiLCJnZXRTdGF0ZSIsIm1lc3NhZ2VzIiwic2Vzc2lvbkVudHJ5IiwiT2JqZWN0IiwiZW50cmllcyIsIl9yZWYyIiwiX3JlZjMiLCJfc2xpY2VkVG9BcnJheSIsInNlc3Npb25NZXNzYWdlcyIsIl9tZXNzYWdlJGFwcHJvdmFsMiIsIl9zZXNzaW9uRW50cnkiLCJmb3VuZCIsIl9tZXNzYWdlJGFwcHJvdmFsMyIsInVzZUNoYXRNYW5hZ2VyIiwiX3JlZjQiLCJpbml0aWFsQ2hhdElkIiwiY2hhdElkIiwidXNlckluaXRpYWxNZXNzYWdlIiwib25FcnJvciIsIl9yZWY0JGFnZW50cyIsImFnZW50cyIsIl91c2VUIiwiX3VzZUdsb2JhbENvbnRleHQiLCJwcm9qZWN0Iiwic2V0UHJvamVjdCIsInNldENsaWVudCIsInRhc2siLCJzZXRUYXNrIiwiYWdlbnQiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsInNldENoaXBzUHJvamVjdCIsImV2ZW50IiwiX3VzZVByb2plY3RzIiwiZmV0Y2hQcm9qZWN0cyIsIl91c2VTdGFibGVDYWxsYmFja3MiLCJfdXNlVGFiVGFza0RlZmF1bHQiLCJnZXRUYWJUYXNrRGVmYXVsdCIsImN1cnJlbnRNZXNzYWdlSWQiLCJjdXJyZW50VXNlclF1ZXN0aW9uIiwiY3VycmVudENoYXRJZCIsInNldEFjdGl2ZUNoYXRJZCIsInN0YXRlIiwicmVwb3J0ZWRFdmVudCIsIm1lc3NhZ2VzUmVmIiwibGFzdE1hbnVhbEFwcHJvdmFsUmVmIiwidHJhY2tlZE1hbnVhbEhpdGxLZXlzUmVmIiwiU2V0IiwiaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYiLCJpc1Byb2Nlc3NpbmdSZWYiLCJmaXJzdFRpbWVSZWYiLCJzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmIiwiYWN0aXZlU3RyZWFtQ2hhdElkUmVmIiwiY2xlYXJTdHJlYW1VaVJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJhY3RpdmVMb2FkaW5ncyIsInNldEFjdGl2ZUxvYWRpbmdzIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJhY3RpdmVTZXNzaW9uSWQiLCJzZXRBY3RpdmVTZXNzaW9uSWQiLCJpc01vdW50ZWRSZWYiLCJsYXN0SGFuZGxlZFRlcm1pbmFsUmVmIiwiaXNXZWJTZWFyY2hBY3RpdmVSZWYiLCJpc0RlZXBTZWFyY2hBY3RpdmVSZWYiLCJjb250ZXh0UmVmIiwiX3VzZUNoYXRNZXNzYWdlcyIsImxvYWRpbmdNZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsImxvYWRNZXNzYWdlcyIsImFkZE1lc3NhZ2UiLCJyZW1vdmVNZXNzYWdlIiwiaGFuZGxlU2Nyb2xsIiwiY29tbWl0VG9TZXNzaW9uIiwiaXMiLCJkcm9wRnJvbVNlc3Npb24iLCJtZXNzYWdlSWQiLCJjbGVhclNlc3Npb25UYWlsIiwic2V0TWVzc2FnZXMiLCJzZXQiLCJhY3RpdmVTZXNzaW9uTWV0YSIsIl9hY3RpdmVTZXNzaW9uTWV0YSRmaSIsInN0YXR1cyIsImlzVGVybWluYWwiLCJrZXkiLCJmaW5pc2hlZEF0IiwidGFpbCIsImdldE1lc3NhZ2VzIiwiaGFzU3RhbGVQbGFjZWhvbGRlciIsIm1zZyIsImZvcmNlIiwiY3VzdG9tRXZlbnQiLCJDdXN0b21FdmVudCIsImRldGFpbCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsInByZXZpb3VzSW5pdGlhbENoYXRJZFJlZiIsInByZXZpb3VzSW5pdGlhbENoYXRJZCIsImlzQWN0aXZlIiwiaGFuZGxlU3RyZWFtRXJyb3IiLCJjdHgiLCJlcnJvck1lc3NhZ2UiLCJlcnJvclJhd01lc3NhZ2UiLCJfZXJyb3JSYXdNZXNzYWdlJG1hdGMiLCJfZXJyb3JSYXdNZXNzYWdlJG1hdGMyIiwicGxhY2Vob2xkZXJJZCIsImNsZWFyIiwiaXNBY2Nlc3NEZW5pZWQiLCJpc1Byb21wdFRvb0xvbmciLCJ1c2VkIiwiaXNFcnJvciIsInN1Z2dlc3Rpb25zIiwiZGF0ZSIsIkRhdGUiLCJ1c2VyIiwiQVNTSVNUQU5UIiwibWFya0NoYXRBc1VucmVhZCIsImhhbmRsZVN0cmVhbVVwZGF0ZSIsImNvbnRlbnQiLCJwbGFjZWhvbGRlckV4aXN0cyIsInN0YXJ0Iiwic2V0VGV4dCIsImhhbmRsZVN0cmVhbUZpbmlzaCIsIl9yZWY1IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJzb3VyY2VzIiwibWVtb3J5U2Vzc2lvbklkIiwiY29tcGxldGVkQWdlbnRJZCIsIl9wcmV2aW91c01lc3NhZ2UkYXBwciIsIl93aW5kb3ckdGFza1BhbmVsIiwiX2NyZWF0ZUFnZW50Rm9sbG93VXAiLCJfZWRpdEFnZW50Rm9sbG93VXAiLCJ0ZW1wTWVzc2FnZUlkIiwidGFza1VybFJlZ2V4IiwibWF0Y2hlcyIsImNvbnRlbnRUb0FkZCIsInByZXZpb3VzTWVzc2FnZSIsImhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UiLCJUQVNLX0NSRUFUSU9OX1RPT0xTIiwiVEFTS19FRElUX1RPT0xTIiwiVEFTS19ERUxFVEVfVE9PTFMiLCJ3YXNUYXNrQ3JlYXRpb24iLCJ3YXNUYXNrRWRpdCIsIndhc1Rhc2tEZWxldGUiLCJ3YXNDcmVhdGVBZ2VudEFwcHJvdmVkIiwid2FzQ29uZmlndXJlQWdlbnRBY2Nlc3NBcHByb3ZlZCIsImNyZWF0ZUFnZW50Rm9sbG93VXAiLCJjb25maWd1cmVkQWdlbnRJZCIsIm1hbnVhbEFwcHJvdmFsRm9yQW5hbHl0aWNzIiwid2FzTWFudWFsQ3JlYXRlQWdlbnRBcHByb3ZlZCIsIndhc0VkaXRBZ2VudEFwcHJvdmVkIiwiZWRpdEFnZW50Rm9sbG93VXAiLCJmcm9tU3RyZWFtIiwiZnJvbUFyZ3MiLCJyZXNvbHZlZEFnZW50SWQiLCJ0YXNrSWRzRnJvbVVybHMiLCJ0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsIiwidGFza0lkc0Zyb21EZWxldGlvblRleHQiLCJ0YXNrSWRzRm9yRGFzaGJvYXJkIiwic2hvdWxkU3luY0Rhc2hib2FyZCIsInRhc2tJZHMiLCJ0YWIiLCJ0YWJTZWdtZW50IiwibGFzdFByb2plY3RNZXNzYWdlIiwiY29udGV4dFByb2plY3RJZFJhdyIsImNvbnRleHRQcm9qZWN0SWQiLCJwYXRoTWF0Y2giLCJyb3V0ZVByb2plY3RJZCIsImlzT25Qcm9qZWN0Um91dGUiLCJfd2luZG93JG5ld1Byb2plY3REYXMiLCJfd2luZG93JG5ld1Byb2plY3REYXMyIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzMyIsIl93aW5kb3ckbmV3UHJvamVjdERhczQiLCJfd2luZG93JG5ld1Byb2plY3REYXM1IiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzNiIsIm9wZW5UYXNrUGFuZWxJZCIsIm1hbnVhbEFwcHJvdmFsIiwibWFudWFsV2FzVGFza0VkaXQiLCJtYW51YWxXYXNUYXNrRGVsZXRlIiwiaG91cnNUb29sc0Zyb21BcHByb3ZhbCIsIndhc0hvdXJzQ2hhcmdlQXBwcm92ZWQiLCJtYW51YWxIb3Vyc1Rvb2wiLCJ3YXNIb3Vyc0NoYXJnZU1hbnVhbEFwcHJvdmVkIiwidG9vbHMiLCJfbWFudWFsQXBwcm92YWwkdG9vbEEiLCJtYW51YWxQc2V1ZG9BY3Rpb24iLCJhZmZlY3RlZFRhc2tJZHMiLCJfd2luZG93JHRhc2tQYW5lbDIiLCJfd2luZG93JHRhc2tQYW5lbDIkcmUiLCJfZ2V0Q2hhdHNTdG9yZVN0YXRlIiwiaXNDaGF0Vmlld1Zpc2libGUiLCJtYXJrQ2hhdEFzUmVhZCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwibGVuZ3RoIiwiYWJydXB0IiwiUmVnRXhwIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwibWF0Y2hBbGwiLCJtIiwiYXQiLCJhcHByb3ZhbFN0YXR1cyIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJhaUNoYXRIaXRsT3B0aW9uIiwiYWdlbnRfdHlwZSIsImFjdGlvbl90eXBlIiwiZGVjaXNpb24iLCJvcHRpb24iLCJjcmVhdGVkX2FnZW50X2lkIiwicmVzb2x1dGlvbl9zb3VyY2UiLCJzZW50IiwicmVwbGFjZSIsInVybCIsImxvY2F0aW9uIiwicGF0aG5hbWUiLCJuZXdQcm9qZWN0RGFzaGJvYXJkIiwiYWRkRXhpc3RpbmdUYXNrVG9EYXNoYm9hcmQiLCJjYWxsIiwiZWRpdEV4aXN0aW5nVGFza0luRGFzaGJvYXJkIiwiZGVsZXRlRXhpc3RpbmdUYXNrRnJvbURhc2hib2FyZCIsInRhc2tQYW5lbCIsInRhc2tJZCIsInNvdXJjZSIsInRvb2xBcmdzIiwicmVmZXRjaFRhc2siLCJ0aGVuIiwiY2hhdEFnZW50IiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwic3RvcCIsIl94IiwiX3gyIiwiX3gzIiwiX3g0IiwiX3g1IiwiX3g2IiwiX3g3IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYW5kbGVTdHJlYW1TdG9wIiwiaXNGcm9udGVuZENhbmNlbGxlZCIsInNldFRpbWVvdXQiLCJoYW5kbGVBcHByb3ZhbFJlcXVpcmVkIiwiYWNjdW11bGF0ZWRDb250ZW50IiwiX2FwcHJvdmFsJHBlbmRpbmdfYWN0IiwiaGl0bENvbnRleHQiLCJvcmlnaW5hbF90aHJlYWRfaWQiLCJtZXNzYWdlVGV4dCIsIm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCIsIl9hcHByb3ZhbCRwZW5kaW5nX2FjdDIiLCJfcmVmNiIsIl90b29sX25hbWUiLCJfdG9vbF9hcmdzIiwiaW1wcmVzc2lvbiIsImFpQ2hhdEhpdGwiLCJmaXJzdEFjdGlvbiIsIl91c2VPcmNoZXN0cmF0b3JTdHJlYSIsIm9uU3RyZWFtVXBkYXRlIiwib25GaW5pc2hTdHJlYW0iLCJvblN0b3AiLCJvbkFwcHJvdmFsUmVxdWlyZWQiLCJhc2tNYWlhIiwid2FpdGluZ1Jlc3BvbnNlIiwiaXNMb2FkaW5nIiwiaXNXcml0aW5nIiwibG9hZGluZ01lc3NhZ2UiLCJzdHJlYW1BY3Rpdml0eSIsInVwZGF0ZVN0cmVhbUFjdGl2aXR5Iiwic3RvcFN0cmVhbWluZyIsImN1cnJlbnRQcm9qZWN0Iiwic2VuZE1lc3NhZ2UiLCJfcmVmNyIsIl9jYWxsZWUyIiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsIm1lbnRpb25zIiwiZnVhSWQiLCJzY0lkIiwiX21lc3NhZ2VzUmVmJGN1cnJlbnQiLCJ3aWxsU3RhcnROZXdTdHJlYW0iLCJfbm9ybWFsaXplU2VuZE1lc3NhZ2UiLCJlZmZlY3RpdmVNZW50aW9ucyIsImNvbnRleHRNZXNzYWdlIiwicGF5bG9hZEZ1YUlkIiwicGF5bG9hZFNjSWQiLCJwYXlsb2FkQ29udGV4dERhdGEiLCJkaXNwbGF5TWVzc2FnZSIsIm5ld01lc3NhZ2VJZCIsImxhc3RNZXNzYWdlV2l0aFByb2plY3QiLCJjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMiLCJfY29udGV4dFJlZiRjdXJyZW50IiwiY3R4Q2hpcHNQcm9qZWN0IiwiY3R4VGFzayIsInN0cmVhbWluZ1BsYWNlaG9sZGVySWQiLCJmaW5hbE1lc3NhZ2UiLCJfb3B0aW9ucyRwcm9qZWN0Q2hhbmciLCJfY29udGV4dFJlZiRjdXJyZW50JHAiLCJoaXN0b3J5IiwicHJvamVjdFRvUmVxdWVzdCIsInByb2plY3RzIiwicGF5bG9hZEZhcUlkIiwicGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkIiwicGF5bG9hZERhdGEiLCJfY29udGV4dDIiLCJnZXRBY3RpdmVDb3VudCIsInNob3ciLCJzZXZlcml0eSIsImNvbnRleHREYXRhIiwicG1BaVR5cGVkVGV4dCIsInRpdGxlIiwiVVNFUiIsInByb2plY3RDaGFuZ2VkIiwiaW5jb21lVHlwZSIsImhpc3RvcnlNZXNzYWdlIiwibGFuZyIsInVzZXJJZCIsImxhc3ROYW1lIiwiY29tcGFueUlkIiwiY29tcGFueV9pZCIsImFnZW50TmFtZSIsImZlZUlkIiwicHJvamVjdE5hbWUiLCJ0YXNrTmFtZSIsImVudGl0eSIsImFnZW50RW50aXR5IiwiYWdlbnRUeXBlIiwiZW1vamkiLCJhZ2VudEVtb2ppIiwiX3g4IiwiX3g5IiwiX3gwIiwiX3gxIiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiY2hhbmdlUHJvamVjdCIsImhhbmRsZUZlZWRiYWNrIiwiX3JlZjgiLCJfY2FsbGVlMyIsImZlZWRiYWNrUHJvcCIsImNoYXRNZXNzYWdlSWQiLCJyZXNwb25zZSIsIl9jb250ZXh0MyIsIkNoYXRzIiwid2FzSGVscGZ1bENoYXQiLCJUSFVNQlNfVVAiLCJ3YXNIZWxwZnVsIiwiX3gxMyIsIl94MTQiLCJoYW5kbGVBcHByb3ZhbERlY2lzaW9uIiwiX3JlZjkiLCJfY2FsbGVlNCIsImVkaXRlZEFjdGlvbnMiLCJtZXNzYWdlV2l0aEFwcHJvdmFsIiwiZm91bmRTZXNzaW9uSWQiLCJuZXdTdGF0dXMiLCJpc0FjdGl2ZVNlc3Npb24iLCJzdHJlYW1NZXNzYWdlSWQiLCJoaXRsQ3R4IiwicmVsZWFzZUFjdGl2ZVByb2Nlc3NpbmciLCJyZXN1bHQiLCJfY29udGV4dDQiLCJzdGFydENvbnRpbnVlU3RyZWFtIiwiY29udGludWVSZXF1ZXN0IiwiaGl0bEV4ZWN1dGlvbkNvbnRleHQiLCJjYWxsYmFja3MiLCJmaW5pc2hQYXlsb2FkIiwiYXBwcm92YWxQYXlsb2FkIiwic3RhcnRlZCIsInJlYXNvbiIsIl94MTUiLCJfeDE2IiwiX3gxNyIsImluaXRpYWxpemVDaGF0IiwiX2NhbGxlZTUiLCJfdXNlckluaXRpYWxNZXNzYWdlJG0iLCJfdXNlckluaXRpYWxNZXNzYWdlJGEiLCJfcmVmMSIsIl9yZXNvbHZlUHJvamVjdFRvUmVxdSIsIl9jdHhQcm9qZWN0JGlkIiwiX2N0eENsaWVudCRpZCIsIl9jdHhUYXNrJGlkIiwiX2N0eENoaXBzUHJvamVjdCRwcm9qIiwiaGFzSW5pdGlhbE1lc3NhZ2UiLCJoYXNJbml0aWFsQXR0YWNobWVudHMiLCJoYXNJbml0aWFsRmFxIiwiaGFzSW5pdGlhbEZ1YSIsImhhc0luaXRpYWxTYyIsIl9jb250ZXh0UmVmJGN1cnJlbnQyIiwiaW5pdGlhbERpc3BsYXlNZXNzYWdlIiwiX2NvbnRleHQ1IiwiQm9vbGVhbiIsImluZm8iLCJwcm9qZWN0UHJvcElkIiwicmVzZXRDaGF0IiwicHJldmlvdXNTZXNzaW9uSWQiLCJzdG9wR2VuZXJhdGlvbiIsImlzRGlzYWJsZWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlQ2hhdE1hbmFnZXIvdXNlQ2hhdE1hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgcmFkaXggKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0ZWQtb3B0aW9uYWwtY2hhaW4gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnXG5pbXBvcnQgeyB1c2VDaGF0TWVzc2FnZXMgfSBmcm9tICcuLi91c2VDaGF0TWVzc2FnZXMnXG5pbXBvcnQgeyB1c2VPcmNoZXN0cmF0b3JTdHJlYW0gfSBmcm9tICcuLi91c2VPcmNoZXN0cmF0b3JTdHJlYW0nXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vdXNlVCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgU2VuZE1lc3NhZ2VPcHRpb25zLCBVc2VDaGF0TWFuYWdlclByb3BzIH0gZnJvbSAnLi91c2VDaGF0TWFuYWdlci5pbnRlcmZhY2UnXG5pbXBvcnQgeyB1c2VVc2VyLCBDT1JVc2VyIH0gZnJvbSAnLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uL3VzZUV2ZW50J1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IEZlZWRiYWNrIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvTWVzc2FnZUZlZWRiYWNrL01lc3NhZ2VGZWVkYmFjaydcbmltcG9ydCB7IENoYXRNZXNzYWdlLCBDaGF0TWVzc2FnZVVzZXIsIENoYXRIaXN0b3J5Um9sZSwgQXBwcm92YWxSZXF1ZXN0LCBQZW5kaW5nQWN0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IENvbnRleHRNZW50aW9uLCBDb250ZXh0TWVzc2FnZSwgYnVpbGRDb250ZXh0TWVzc2FnZSB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlRm9yRGlzcGxheSB9IGZyb20gJy4uLy4uL3V0aWxzL2Zvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZSdcblxuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uLy4uL3R5cGVzL1Byb2plY3QnXG5pbXBvcnQgeyB1c2VQcm9qZWN0cyB9IGZyb20gJy4uL3VzZVByb2plY3RzJ1xuaW1wb3J0IHsgdXNlVGFiVGFza0RlZmF1bHQgfSBmcm9tICcuLi91c2VUYWJUYXNrRGVmYXVsdCdcbmltcG9ydCB7IFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4gfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdGFza1VybHMnXG5pbXBvcnQgeyBkaXNwYXRjaE1haWFIb3Vyc0NoYXJnZWQsIGlzSG91cnNDaGFyZ2VUb29sIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3BsYW5uZXJTeW5jRXZlbnRzJ1xuaW1wb3J0IHsgZmV0Y2hBZ2VudERldGFpbCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2ZldGNoQWdlbnREZXRhaWwnXG5pbXBvcnQge1xuICBidWlsZEhpdGxBY3Rpb25UeXBlTGlzdCxcbiAgZ2V0SGl0bEFuYWx5dGljc0FnZW50VHlwZSxcbiAgbm9ybWFsaXplSGl0bFRvb2xOYW1lLFxuICB0cmFja01hbnVhbEhpdGxFdmVudHMsXG59IGZyb20gJy4uLy4uL3V0aWxzL2hpdGxBbmFseXRpY3MnXG5pbXBvcnQgeyB0eXBlIEhpdGxFeGVjdXRpb25Db250ZXh0IH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB7IHNlc3Npb25TdHJlYW1pbmdUZXh0IH0gZnJvbSAnLi4vLi4vc3RvcmUvc2Vzc2lvbnMvc2Vzc2lvblN0cmVhbWluZ1RleHQnXG5pbXBvcnQgeyB1c2VTZXNzaW9uc1N0b3JlIH0gZnJvbSAnLi4vLi4vc3RvcmUvc2Vzc2lvbnMvdXNlU2Vzc2lvbnNTdG9yZSdcbmltcG9ydCB7IHVzZVNlc3Npb25NZXRhIH0gZnJvbSAnLi4vLi4vc3RvcmUvc2Vzc2lvbnMvdXNlU2Vzc2lvbk1ldGEnXG5pbXBvcnQgeyBzZXNzaW9uU3RyZWFtTWFuYWdlciwgTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyB9IGZyb20gJy4uLy4uL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25TdHJlYW1NYW5hZ2VyJ1xuaW1wb3J0IHsgYWN0aXZlVmlldyB9IGZyb20gJy4uLy4uL3N0b3JlL3Nlc3Npb25zL2FjdGl2ZVZpZXcnXG5pbXBvcnQgeyBub3RpZnlTZXNzaW9uRmluaXNoZWRJbkJhY2tncm91bmQgfSBmcm9tICcuLi8uLi9zdG9yZS9zZXNzaW9ucy9zZXNzaW9uTm90aWZpY2F0aW9ucydcbmltcG9ydCB7IGJ1aWxkU2lkZWJhclNlc3Npb25UaXRsZSwgZW5zdXJlU2Vzc2lvbkluU2lkZWJhciB9IGZyb20gJy4uLy4uL3N0b3JlL2NoYXRzU2lkZWJhck9wdGltaXN0aWMnXG5pbXBvcnQgeyBpc1N0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB0eXBlIHsgU3RyZWFtQ29udGV4dCB9IGZyb20gJy4uL3VzZU9yY2hlc3RyYXRvclN0cmVhbS91c2VPcmNoZXN0cmF0b3JTdHJlYW0uaW50ZXJmYWNlJ1xuaW1wb3J0IHsgZ2V0Q2hhdHNTdG9yZVN0YXRlLCB1c2VDaGF0c1N0b3JlIH0gZnJvbSAnLi4vLi4vc3RvcmUvdXNlQ2hhdHNTdG9yZSdcblxudHlwZSBBdHRhY2htZW50c09yT3B0aW9ucyA9IEF0dGFjaG1lbnRGaWxlW10gfCBTZW5kTWVzc2FnZU9wdGlvbnNcblxuY29uc3Qgbm9ybWFsaXplU2VuZE1lc3NhZ2VBcmdzID0gKGF0dGFjaG1lbnRzT3JPcHRpb25zPzogQXR0YWNobWVudHNPck9wdGlvbnMpID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXR0YWNobWVudHNPck9wdGlvbnMpKSB7XG4gICAgcmV0dXJuIHsgYXR0YWNobWVudHM6IGF0dGFjaG1lbnRzT3JPcHRpb25zLCBvcHRpb25zOiB7fSBhcyBTZW5kTWVzc2FnZU9wdGlvbnMgfVxuICB9XG5cbiAgY29uc3Qgb3B0aW9uczogU2VuZE1lc3NhZ2VPcHRpb25zID0gYXR0YWNobWVudHNPck9wdGlvbnMgPz8ge31cbiAgcmV0dXJuIHsgYXR0YWNobWVudHM6IG9wdGlvbnMuYXR0YWNobWVudHMgPz8gW10sIG9wdGlvbnMgfVxufVxuXG4vKiogY2hpcHNQcm9qZWN0IGVzIGxhIGZ1ZW50ZSBkZSB2ZXJkYWQgZGVsIHBpbiB2aXNpYmxlOyBzaSBubyBoYXkgcGluLCByZXN0YXVyYXIgZGVzZGUgaGlzdG9yaWFsLiAqL1xuY29uc3QgcmVzb2x2ZVByb2plY3RUb1JlcXVlc3QgPSAoXG4gIGNoaXBzUHJvamVjdDogeyBwcm9qZWN0SWQ/OiBzdHJpbmcgfSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGxhc3RNZXNzYWdlUHJvamVjdElkOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBudW1iZXIgfCBudWxsID0+IHtcbiAgY29uc3QgY2hpcHNQcm9qZWN0SWQgPSBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCA/IE51bWJlcihjaGlwc1Byb2plY3QucHJvamVjdElkKSA6IG51bGxcbiAgaWYgKGNoaXBzUHJvamVjdElkICE9IG51bGwgJiYgTnVtYmVyLmlzRmluaXRlKGNoaXBzUHJvamVjdElkKSkge1xuICAgIHJldHVybiBjaGlwc1Byb2plY3RJZFxuICB9XG4gIGlmIChsYXN0TWVzc2FnZVByb2plY3RJZCAhPSBudWxsKSB7XG4gICAgY29uc3QgcGFyc2VkID0gTnVtYmVyKGxhc3RNZXNzYWdlUHJvamVjdElkKVxuICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUocGFyc2VkKSA/IHBhcnNlZCA6IG51bGxcbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG5jb25zdCByZXNvbHZlQ2xpZW50UGF5bG9hZCA9IChcbiAgY3R4Q2xpZW50OiB7IGlkPzogbnVtYmVyOyBuYW1lPzogc3RyaW5nIH0gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBjdHhQcm9qZWN0OiBQcm9qZWN0IHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogeyBjbGllbnRJZD86IG51bWJlcjsgY2xpZW50TmFtZT86IHN0cmluZyB9ID0+IHtcbiAgaWYgKGN0eENsaWVudD8uaWQpIHtcbiAgICByZXR1cm4geyBjbGllbnRJZDogY3R4Q2xpZW50LmlkLCAuLi4oY3R4Q2xpZW50Lm5hbWUgPyB7IGNsaWVudE5hbWU6IGN0eENsaWVudC5uYW1lIH0gOiB7fSkgfVxuICB9XG4gIGlmIChjdHhQcm9qZWN0Py5jbGllbnRJZCAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHsgY2xpZW50SWQ6IE51bWJlcihjdHhQcm9qZWN0LmNsaWVudElkKSB9XG4gIH1cbiAgaWYgKGN0eFByb2plY3Q/LmNsaWVudD8uaWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2xpZW50SWQ6IGN0eFByb2plY3QuY2xpZW50LmlkLFxuICAgICAgLi4uKGN0eFByb2plY3QuY2xpZW50Lm5hbWUgPyB7IGNsaWVudE5hbWU6IGN0eFByb2plY3QuY2xpZW50Lm5hbWUgfSA6IHt9KSxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHt9XG59XG5cbmNvbnN0IG5vcm1hbGl6ZUFzc2lzdGFudEF0dGFjaG1lbnRzID0gKHJhd0F0dGFjaG1lbnRzOiB1bmtub3duKTogQXR0YWNobWVudEZpbGVbXSA9PiB7XG4gIGlmICghQXJyYXkuaXNBcnJheShyYXdBdHRhY2htZW50cykpIHtcbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIHJldHVybiByYXdBdHRhY2htZW50c1xuICAgIC5maWx0ZXIoKGF0dGFjaG1lbnQpOiBhdHRhY2htZW50IGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+ICEhYXR0YWNobWVudCAmJiB0eXBlb2YgYXR0YWNobWVudCA9PT0gJ29iamVjdCcpXG4gICAgLm1hcCgoYXR0YWNobWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPVxuICAgICAgICB0eXBlb2YgYXR0YWNobWVudC5uYW1lID09PSAnc3RyaW5nJyAmJiBhdHRhY2htZW50Lm5hbWUudHJpbSgpID8gYXR0YWNobWVudC5uYW1lLnRyaW0oKSA6IGBmaWxlLSR7aW5kZXggKyAxfWBcbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgYXR0YWNobWVudC50eXBlID09PSAnc3RyaW5nJyAmJiBhdHRhY2htZW50LnR5cGUudHJpbSgpID8gYXR0YWNobWVudC50eXBlLnRyaW0oKSA6ICdwZGYnXG4gICAgICBjb25zdCBtaW1lVHlwZSA9IHR5cGVvZiBhdHRhY2htZW50Lm1pbWVfdHlwZSA9PT0gJ3N0cmluZycgPyBhdHRhY2htZW50Lm1pbWVfdHlwZSA6ICcnXG4gICAgICBjb25zdCBmdWxsRmlsZU5hbWUgPSBuYW1lLmluY2x1ZGVzKCcuJykgPyBuYW1lIDogYCR7bmFtZX0uJHt0eXBlfWBcbiAgICAgIGNvbnN0IG51bWVyaWNTaXplID1cbiAgICAgICAgdHlwZW9mIGF0dGFjaG1lbnQuc2l6ZSA9PT0gJ251bWJlcidcbiAgICAgICAgICA/IGF0dGFjaG1lbnQuc2l6ZVxuICAgICAgICAgIDogTnVtYmVyLmlzRmluaXRlKE51bWJlcihhdHRhY2htZW50LnNpemUpKVxuICAgICAgICAgICAgPyBOdW1iZXIoYXR0YWNobWVudC5zaXplKVxuICAgICAgICAgICAgOiAwXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbGU6IG5ldyBGaWxlKFtdLCBmdWxsRmlsZU5hbWUsIHsgdHlwZTogbWltZVR5cGUgfSksXG4gICAgICAgIGlkOlxuICAgICAgICAgIHR5cGVvZiBhdHRhY2htZW50LmlkID09PSAnc3RyaW5nJyAmJiBhdHRhY2htZW50LmlkLnRyaW0oKVxuICAgICAgICAgICAgPyBhdHRhY2htZW50LmlkXG4gICAgICAgICAgICA6IGBhc3Npc3RhbnQtZmlsZS0ke2luZGV4fS0ke2Z1bGxGaWxlTmFtZX1gLFxuICAgICAgICBuYW1lLFxuICAgICAgICBzaXplOiBudW1lcmljU2l6ZSxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdXJsX29yaWdpbmFsOiB0eXBlb2YgYXR0YWNobWVudC51cmxfb3JpZ2luYWwgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC51cmxfb3JpZ2luYWwgOiB1bmRlZmluZWQsXG4gICAgICAgIHVybF90aHVtYm5haWw6IHR5cGVvZiBhdHRhY2htZW50LnVybF90aHVtYm5haWwgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC51cmxfdGh1bWJuYWlsIDogdW5kZWZpbmVkLFxuICAgICAgICB1cmxfZmlsZTogdHlwZW9mIGF0dGFjaG1lbnQudXJsX2ZpbGUgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC51cmxfZmlsZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgcm9sZTogYXR0YWNobWVudC5yb2xlID09PSAnYXNzaXN0YW50JyA/ICdhc3Npc3RhbnQnIDogJ3VzZXInLFxuICAgICAgfVxuICAgIH0pXG59XG5cbi8qKiBFeHRyYWUgdGFza19pZHMgZGUgbG9zIHRvb2xfYXJncyBkZSBwZW5kaW5nX2FjdGlvbnMsIGN1YnJpZW5kbyBsYXMgZm9ybWFzIGNvbXVuZXM6XG4gKiAgLSBgeyB0YXNrX2lkIH1gIG8gYHsgaWQgfWBcbiAqICAtIGB7IHRhc2tfaWRzOiBbXSB9YFxuICogIC0gYHsgdGFza3M6IFt7IHRhc2tfaWR8aWQgfSwgLi4uXSB9YFxuICogIMOadGlsIHBhcmEgdG9vbHMgZGUgZWRpdC9hc3NpZ24vZGVsZXRlIGN1YW5kbyBsYSByZXNwdWVzdGEgZGVsIExMTSBubyBpbmNsdXllIFVSTHMgL3Rhc2tzLy4uLi9kZXRhaWwuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MocGVuZGluZ0FjdGlvbnM6IFBlbmRpbmdBY3Rpb25bXSk6IG51bWJlcltdIHtcbiAgY29uc3QgaWRzOiBudW1iZXJbXSA9IFtdXG4gIGNvbnN0IHB1c2hJZCA9IChyYXc6IHVua25vd24pID0+IHtcbiAgICBpZiAocmF3ID09IG51bGwpIHJldHVyblxuICAgIGNvbnN0IG4gPSBwYXJzZUludChTdHJpbmcocmF3KSwgMTApXG4gICAgaWYgKCFOdW1iZXIuaXNOYU4obikpIGlkcy5wdXNoKG4pXG4gIH1cbiAgcGVuZGluZ0FjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgIGlmICghYWN0aW9uIHx8IHR5cGVvZiBhY3Rpb24gIT09ICdvYmplY3QnKSByZXR1cm5cbiAgICBjb25zdCBhcmdzID0gYWN0aW9uLnRvb2xfYXJnc1xuICAgIGlmICghKGFyZ3MgJiYgdHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGFyZ3MpKSkgcmV0dXJuXG4gICAgY29uc3QgcmVjID0gYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIHB1c2hJZChyZWMudGFza19pZCA/PyByZWMuaWQpXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVjLnRhc2tfaWRzKSkge1xuICAgICAgcmVjLnRhc2tfaWRzLmZvckVhY2gocHVzaElkKVxuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZWMudGFza3MpKSB7XG4gICAgICByZWMudGFza3MuZm9yRWFjaCh0ID0+IHtcbiAgICAgICAgaWYgKHQgJiYgdHlwZW9mIHQgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHQpKSB7XG4gICAgICAgICAgY29uc3QgdHJlYyA9IHQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgICBwdXNoSWQodHJlYy50YXNrX2lkID8/IHRyZWMuaWQpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9KVxuICByZXR1cm4gaWRzXG59XG5cbi8qKiB0YXNrX2lkIC8gdGFza19pZHMgZW4gcGVuZGluZ19hY3Rpb25zIGRlIGRlbGV0ZV8qIChsYSByZXNwdWVzdGEgcHVlZGUgbm8gaW5jbHVpciBVUkxzIC90YXNrcy/igKYvZGV0YWlsKS4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RUYXNrSWRzRnJvbURlbGV0ZVBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IGlkczogbnVtYmVyW10gPSBbXVxuICBwZW5kaW5nQWN0aW9ucy5mb3JFYWNoKGFjdGlvbiA9PiB7XG4gICAgaWYgKCFhY3Rpb24gfHwgdHlwZW9mIGFjdGlvbiAhPT0gJ29iamVjdCcpIHJldHVyblxuICAgIGNvbnN0IGFyZ3MgPSBhY3Rpb24udG9vbF9hcmdzXG4gICAgaWYgKCEoYXJncyAmJiB0eXBlb2YgYXJncyA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoYXJncykpKSByZXR1cm5cbiAgICBjb25zdCByZWMgPSBhcmdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgaWYgKGFjdGlvbi50b29sX25hbWUgPT09ICdkZWxldGVfdGFzaycpIHtcbiAgICAgIGNvbnN0IHJhdyA9IHJlYy50YXNrX2lkID8/IHJlYy5pZFxuICAgICAgaWYgKHJhdyAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG4gPSBwYXJzZUludChTdHJpbmcocmF3KSwgMTApXG4gICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoYWN0aW9uLnRvb2xfbmFtZSA9PT0gJ2RlbGV0ZV90YXNrc19iYXRjaCcpIHtcbiAgICAgIGNvbnN0IGxpc3QgPSByZWMudGFza19pZHNcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGxpc3QpKSB7XG4gICAgICAgIGxpc3QuZm9yRWFjaCh0aWQgPT4ge1xuICAgICAgICAgIGNvbnN0IG4gPSBwYXJzZUludChTdHJpbmcodGlkKSwgMTApXG4gICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4obikpIGlkcy5wdXNoKG4pXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9KVxuICByZXR1cm4gaWRzXG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RBZ2VudElkRnJvbUVkaXRBZ2VudFBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgZWRpdEFjdGlvbiA9IHBlbmRpbmdBY3Rpb25zLmZpbmQoYSA9PiAoYS50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdlZGl0X2FnZW50JylcbiAgaWYgKFxuICAgICFlZGl0QWN0aW9uIHx8XG4gICAgIWVkaXRBY3Rpb24udG9vbF9hcmdzIHx8XG4gICAgdHlwZW9mIGVkaXRBY3Rpb24udG9vbF9hcmdzICE9PSAnb2JqZWN0JyB8fFxuICAgIEFycmF5LmlzQXJyYXkoZWRpdEFjdGlvbi50b29sX2FyZ3MpXG4gICkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgcmVjID0gZWRpdEFjdGlvbi50b29sX2FyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgY29uc3QgcmF3ID0gcmVjLmFnZW50X2lkID8/IHJlYy5hZ2VudElkXG4gIHJldHVybiByYXcgIT0gbnVsbCA/IFN0cmluZyhyYXcpIDogbnVsbFxufVxuXG5mdW5jdGlvbiBleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUocGVuZGluZ0FjdGlvbnM6IFBlbmRpbmdBY3Rpb25bXSwgdG9vbE5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBhY3Rpb24gPSBwZW5kaW5nQWN0aW9ucy5maW5kKGEgPT4gKGEudG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSB0b29sTmFtZS50b0xvd2VyQ2FzZSgpKVxuICBpZiAoIWFjdGlvbiB8fCAhYWN0aW9uLnRvb2xfYXJncyB8fCB0eXBlb2YgYWN0aW9uLnRvb2xfYXJncyAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShhY3Rpb24udG9vbF9hcmdzKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgcmVjID0gYWN0aW9uLnRvb2xfYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBjb25zdCByYXcgPSByZWMuYWdlbnRfaWQgPz8gcmVjLmFnZW50SWQgPz8gcmVjLmlkXG4gIHJldHVybiByYXcgIT0gbnVsbCA/IFN0cmluZyhyYXcpIDogbnVsbFxufVxuXG4vKiogw5psdGltbyByZWN1cnNvIHNpIG5vIGhheSBsaW5rcyBuaSB0b29sX2FyZ3MgcGFyc2VhYmxlcyAocC4gZWouIFwiSUQgKio3NTk3MTA2KipcIikuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21Bc3Npc3RhbnREZWxldGlvblRleHQodGV4dDogc3RyaW5nKTogbnVtYmVyW10ge1xuICBjb25zdCBsYWJlbGVkID0gdGV4dC5tYXRjaCgvXFxiSURcXHMqXFwqXFwqKFxcZCspXFwqXFwqL2kpXG4gIGlmIChsYWJlbGVkKSB7XG4gICAgY29uc3QgbiA9IHBhcnNlSW50KGxhYmVsZWRbMV0sIDEwKVxuICAgIHJldHVybiBOdW1iZXIuaXNOYU4obikgPyBbXSA6IFtuXVxuICB9XG4gIGNvbnN0IGJvbGQgPSB0ZXh0Lm1hdGNoKC9cXCpcXCooXFxkezUsfSlcXCpcXCovKVxuICBpZiAoYm9sZCkge1xuICAgIGNvbnN0IG4gPSBwYXJzZUludChib2xkWzFdLCAxMClcbiAgICByZXR1cm4gTnVtYmVyLmlzTmFOKG4pID8gW10gOiBbbl1cbiAgfVxuICByZXR1cm4gW11cbn1cblxuY29uc3QgdXNlU3RhYmxlQ2FsbGJhY2tzID0gKGF1dGhVc2VyOiBDT1JVc2VyKSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRVc2VyID0gdXNlUmVmPENoYXRNZXNzYWdlVXNlcj4oe1xuICAgIGlkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgIG5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICBhdmF0YXI6IGF1dGhVc2VyLnBpY3R1cmUsXG4gIH0pXG5cbiAgaWYgKFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQuaWQgIT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgfHxcbiAgICBjdXJyZW50VXNlci5jdXJyZW50Lm5hbWUgIT09IGF1dGhVc2VyLmZpcnN0TmFtZSB8fFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQuYXZhdGFyICE9PSBhdXRoVXNlci5waWN0dXJlXG4gICkge1xuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQgPSB7XG4gICAgICBpZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgIG5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgIGF2YXRhcjogYXV0aFVzZXIucGljdHVyZSxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBjdXJyZW50VXNlcjogY3VycmVudFVzZXIuY3VycmVudCxcbiAgfVxufVxuXG5jb25zdCBmaW5kTWVzc2FnZVdpdGhBcHByb3ZhbEJ5VGhyZWFkSWRzID0gKFxuICB0aHJlYWRJZHM6IHN0cmluZ1tdLFxuICBhY3RpdmVNZXNzYWdlczogQ2hhdE1lc3NhZ2VbXVxuKTogeyBtZXNzYWdlOiBDaGF0TWVzc2FnZTsgc2Vzc2lvbklkOiBzdHJpbmcgfSB8IG51bGwgPT4ge1xuICBjb25zdCBmcm9tQWN0aXZlVmlldyA9IGFjdGl2ZU1lc3NhZ2VzLmZpbmQobWVzc2FnZSA9PlxuICAgIG1lc3NhZ2UuYXBwcm92YWw/LnBlbmRpbmdfYWN0aW9ucz8uc29tZShhY3Rpb24gPT4gdGhyZWFkSWRzLmluY2x1ZGVzKGFjdGlvbi50aHJlYWRfaWQpKVxuICApXG4gIGlmIChmcm9tQWN0aXZlVmlldz8uYXBwcm92YWwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZnJvbUFjdGl2ZVZpZXcsXG4gICAgICBzZXNzaW9uSWQ6IGZyb21BY3RpdmVWaWV3LmFwcHJvdmFsLnNlc3Npb25faWQgfHwgYWN0aXZlVmlldy5nZXQoKSB8fCAnJyxcbiAgICB9XG4gIH1cblxuICBjb25zdCB7IG1lc3NhZ2VzIH0gPSB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKClcbiAgY29uc3Qgc2Vzc2lvbkVudHJ5ID0gT2JqZWN0LmVudHJpZXMobWVzc2FnZXMpLmZpbmQoKFssIHNlc3Npb25NZXNzYWdlc10pID0+XG4gICAgc2Vzc2lvbk1lc3NhZ2VzLnNvbWUobWVzc2FnZSA9PlxuICAgICAgbWVzc2FnZS5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zPy5zb21lKGFjdGlvbiA9PiB0aHJlYWRJZHMuaW5jbHVkZXMoYWN0aW9uLnRocmVhZF9pZCkpXG4gICAgKVxuICApXG4gIGlmIChzZXNzaW9uRW50cnkpIHtcbiAgICBjb25zdCBbc2Vzc2lvbklkLCBzZXNzaW9uTWVzc2FnZXNdID0gc2Vzc2lvbkVudHJ5XG4gICAgY29uc3QgZm91bmQgPSBzZXNzaW9uTWVzc2FnZXMuZmluZChtZXNzYWdlID0+XG4gICAgICBtZXNzYWdlLmFwcHJvdmFsPy5wZW5kaW5nX2FjdGlvbnM/LnNvbWUoYWN0aW9uID0+IHRocmVhZElkcy5pbmNsdWRlcyhhY3Rpb24udGhyZWFkX2lkKSlcbiAgICApXG4gICAgaWYgKGZvdW5kPy5hcHByb3ZhbCkge1xuICAgICAgcmV0dXJuIHsgbWVzc2FnZTogZm91bmQsIHNlc3Npb25JZDogZm91bmQuYXBwcm92YWwuc2Vzc2lvbl9pZCB8fCBzZXNzaW9uSWQgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBjb25zdCB1c2VDaGF0TWFuYWdlciA9ICh7XG4gIGNoYXRJZDogaW5pdGlhbENoYXRJZCxcbiAgdXNlckluaXRpYWxNZXNzYWdlLFxuICBvbkVycm9yLFxuICBhZ2VudHMgPSBbXSxcbn06IFVzZUNoYXRNYW5hZ2VyUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgYXV0aFVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3Qge1xuICAgIHByb2plY3QsXG4gICAgc2V0UHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgc2V0Q2xpZW50LFxuICAgIHRhc2ssXG4gICAgc2V0VGFzayxcbiAgICBhZ2VudCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgY2hpcHNQcm9qZWN0LFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBmZXRjaFByb2plY3RzIH0gPSB1c2VQcm9qZWN0cygpXG4gIGNvbnN0IHsgY3VycmVudFVzZXIgfSA9IHVzZVN0YWJsZUNhbGxiYWNrcyhhdXRoVXNlcilcbiAgY29uc3QgeyBnZXRUYWJUYXNrRGVmYXVsdCB9ID0gdXNlVGFiVGFza0RlZmF1bHQoKVxuXG4gIGNvbnN0IGN1cnJlbnRNZXNzYWdlSWQgPSB1c2VSZWYodXVpZHY0KCkpXG4gIGNvbnN0IGN1cnJlbnRVc2VyUXVlc3Rpb24gPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgY3VycmVudENoYXRJZCA9IHVzZVJlZihpbml0aWFsQ2hhdElkIHx8IHV1aWR2NCgpKVxuICBjb25zdCBzZXRBY3RpdmVDaGF0SWQgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLnNldEFjdGl2ZUNoYXRJZClcbiAgY29uc3QgcmVwb3J0ZWRFdmVudCA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgbWVzc2FnZXNSZWYgPSB1c2VSZWY8Q2hhdE1lc3NhZ2VbXT4oW10pXG4gIC8qKlxuICAgKiBHdWFyZGEgaW5mbyBkZWwgw7psdGltbyBhcHByb3ZhbCBtYW51YWwgKGN1YW5kbyBlbCB1c3VhcmlvIHRpcGVhIFwic2lcIi9cIm5vXCIgZW4gbHVnYXJcbiAgICogZGUgY2xpY2tlYXIgZWwgYm90w7NuKS4gRW4gbWFudWFsIGFwcHJvdmFsLCBgaGFuZGxlQXBwcm92YWxSZXF1aXJlZGAgcmV0b3JuYSBlYXJseVxuICAgKiBzaW4gYWdyZWdhciB1biBtZW5zYWplIGNvbiBgYXBwcm92YWxgLCBhc8OtIHF1ZSBsYSBsw7NnaWNhIGRlIHJlZmV0Y2ggZW4gYG9uU3RyZWFtRmluaXNoYFxuICAgKiBubyBsbyBkZXRlY3RhIHbDrWEgYHByZXZpb3VzTWVzc2FnZS5hcHByb3ZhbGAuIExvIGd1YXJkYW1vcyBhY8OhIHBhcmEgY29uc3VtaXJsbyBkZXNwdcOpcy5cbiAgICovXG4gIGNvbnN0IGxhc3RNYW51YWxBcHByb3ZhbFJlZiA9IHVzZVJlZjx7XG4gICAgdG9vbE5hbWU6IHN0cmluZ1xuICAgIHRvb2xBcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGxcbiAgfSB8IG51bGw+KG51bGwpXG4gIC8qKiBFdml0YSBkdXBsaWNhciBBSV9DSEFUX0hJVEwgLyBBSV9DSEFUX0hJVExfT1BUSU9OIGVuIGFwcm9iYWNpb25lcyBtYW51YWxlcyBwb3IgbG90ZS4gKi9cbiAgY29uc3QgdHJhY2tlZE1hbnVhbEhpdGxLZXlzUmVmID0gdXNlUmVmPFNldDxzdHJpbmc+PihuZXcgU2V0KCkpXG4gIC8qKiBDb250ZXh0byBkZWwgbWVuc2FqZSBkZSBhcHJvYmFjacOzbiBwcmV2aW8gYWwgZWplY3V0YXIgY29udGludWUtdGhyZWFkLiAqL1xuICBjb25zdCBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZiA9IHVzZVJlZjxIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzUHJvY2Vzc2luZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgZmlyc3RUaW1lUmVmID0gdXNlUmVmKGZhbHNlKVxuICAvKiogSWQgZGVsIHBsYWNlaG9sZGVyIGRlbCBtZW5zYWplIGVuIHN0cmVhbWluZyBhY3Rpdm8gKHNpIGhheSkuICovXG4gIGNvbnN0IHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgLyoqXG4gICAqIENoYXQgYWwgcXVlIHBlcnRlbmVjZSBlbCBzdHJlYW0gYWN0dWFsbWVudGUgYWN0aXZvLiBTaSBjYW1iaWEgZWwgY2hhdFxuICAgKiBtaWVudHJhcyB1biBzdHJlYW0gZXN0w6EgZW4gdnVlbG8sIGRlc2NhcnRhbW9zIGxvcyB0b2tlbnMgcmVzaWR1YWxlc1xuICAgKiBxdWUgcHVlZGFuIGxsZWdhciBhbnRlcyBkZSBxdWUgZWwgYWJvcnQgc2UgY29tcGxldGUuXG4gICAqL1xuICBjb25zdCBhY3RpdmVTdHJlYW1DaGF0SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgY2xlYXJTdHJlYW1VaVJlZiA9IHVzZVJlZjwoKSA9PiB2b2lkPigoKSA9PiB1bmRlZmluZWQpXG4gIGNvbnN0IFthY3RpdmVMb2FkaW5ncywgc2V0QWN0aXZlTG9hZGluZ3NdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oe30pXG4gIC8qKlxuICAgKiBTZXNpw7NuIGFjdHVhbG1lbnRlIHZpc2libGUuIFNlIG1hbnRpZW5lIGVuIHN0YXRlIChubyBzb2xvIGVuIHJlZikgcGFyYSBxdWVcbiAgICogZWwgbW90b3IgZGUgc3RyZWFtaW5nIHB1ZWRhIGxlZXIgcmVhY3RpdmFtZW50ZSBsb3MgZmxhZ3MgZGUgRVNUQSBzZXNpw7NuXG4gICAqIGRlc2RlIGVsIHN0b3JlLCBtaWVudHJhcyBvdHJhcyBzaWd1ZW4gZ2VuZXJhbmRvIGVuIGJhY2tncm91bmQuXG4gICAqL1xuICBjb25zdCBbYWN0aXZlU2Vzc2lvbklkLCBzZXRBY3RpdmVTZXNzaW9uSWRdID0gdXNlU3RhdGU8c3RyaW5nPihjdXJyZW50Q2hhdElkLmN1cnJlbnQpXG4gIC8qKiBUcnVlIG1pZW50cmFzIGVzdGEgaW5zdGFuY2lhIGVzdMOpIG1vbnRhZGEgKGV2aXRhIHNldFN0YXRlIHRyYXMgZGVzbW9udGFyKS4gKi9cbiAgY29uc3QgaXNNb3VudGVkUmVmID0gdXNlUmVmKHRydWUpXG4gIC8qKiBFdml0YSByZWNvbmNpbGlhciBkb3MgdmVjZXMgZWwgbWlzbW8gZXN0YWRvIHRlcm1pbmFsIGRlIHVuYSBzZXNpw7NuLiAqL1xuICBjb25zdCBsYXN0SGFuZGxlZFRlcm1pbmFsUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgaXNXZWJTZWFyY2hBY3RpdmVSZWYgPSB1c2VSZWYoaXNXZWJTZWFyY2hBY3RpdmUpXG4gIGNvbnN0IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZiA9IHVzZVJlZihpc0RlZXBTZWFyY2hBY3RpdmUpXG4gIC8qKiBFdml0YSBjbG9zdXJlcyBvYnNvbGV0YXMgY3VhbmRvIGVsIGZvb3RlciBjb25zZXJ2YSBzZW5kTWVzc2FnZSBlbnRyZSByZW5kZXJzLiAqL1xuICBjb25zdCBjb250ZXh0UmVmID0gdXNlUmVmKHsgY2hpcHNQcm9qZWN0LCBwcm9qZWN0LCBjbGllbnQsIHRhc2sgfSlcbiAgY29udGV4dFJlZi5jdXJyZW50ID0geyBjaGlwc1Byb2plY3QsIHByb2plY3QsIGNsaWVudCwgdGFzayB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50ID0gaXNXZWJTZWFyY2hBY3RpdmVcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCA9IGlzRGVlcFNlYXJjaEFjdGl2ZVxuICB9LCBbaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZV0pXG5cbiAgY29uc3QgeyBsb2FkaW5nTWVzc2FnZXMsIG1lc3NhZ2VzLCBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsIGxvYWRNZXNzYWdlcywgYWRkTWVzc2FnZSwgcmVtb3ZlTWVzc2FnZSwgaGFuZGxlU2Nyb2xsIH0gPVxuICAgIHVzZUNoYXRNZXNzYWdlcyh7XG4gICAgICBjaGF0SWQ6IGluaXRpYWxDaGF0SWQgfHwgY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgY3VycmVudFVzZXIsXG4gICAgICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gICAgICBvbkVycm9yLFxuICAgICAgYWdlbnRzLFxuICAgIH0pXG5cbiAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzXG5cbiAgLyoqXG4gICAqIEVzY3JpYmUgdW4gbWVuc2FqZSBlbiBlbCBzdG9yZSBwb3Itc2VzacOzbiB5LCBzaSBsYSBzZXNpw7NuIGVzIGxhIGFjdGl2YSxcbiAgICogdGFtYmnDqW4gZW4gbGEgdmlzdGEgbG9jYWwuIFBlcm1pdGUgcXVlIHNlc2lvbmVzIGVuIGJhY2tncm91bmQgYWN1bXVsZW4gc3VcbiAgICogcmVzdWx0YWRvIHNpbiBwaXNhciBlbCBjaGF0IHF1ZSBlbCB1c3VhcmlvIGVzdMOhIG1pcmFuZG8uXG4gICAqL1xuICBjb25zdCBjb21taXRUb1Nlc3Npb24gPSB1c2VDYWxsYmFjayhcbiAgICAoc2Vzc2lvbklkOiBzdHJpbmcsIG1lc3NhZ2U6IENoYXRNZXNzYWdlKSA9PiB7XG4gICAgICB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKCkuYWRkTWVzc2FnZShzZXNzaW9uSWQsIG1lc3NhZ2UpXG4gICAgICBpZiAoaXNNb3VudGVkUmVmLmN1cnJlbnQgJiYgYWN0aXZlVmlldy5pcyhzZXNzaW9uSWQpKSB7XG4gICAgICAgIGFkZE1lc3NhZ2UobWVzc2FnZSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZGRNZXNzYWdlXVxuICApXG5cbiAgY29uc3QgZHJvcEZyb21TZXNzaW9uID0gdXNlQ2FsbGJhY2soXG4gICAgKHNlc3Npb25JZDogc3RyaW5nLCBtZXNzYWdlSWQ6IHN0cmluZykgPT4ge1xuICAgICAgdXNlU2Vzc2lvbnNTdG9yZS5nZXRTdGF0ZSgpLnJlbW92ZU1lc3NhZ2Uoc2Vzc2lvbklkLCBtZXNzYWdlSWQpXG4gICAgICBpZiAoaXNNb3VudGVkUmVmLmN1cnJlbnQgJiYgYWN0aXZlVmlldy5pcyhzZXNzaW9uSWQpKSB7XG4gICAgICAgIHJlbW92ZU1lc3NhZ2UobWVzc2FnZUlkKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3JlbW92ZU1lc3NhZ2VdXG4gIClcblxuICAvKiogTGltcGlhIGVsIHRhaWwgZW4gdnVlbG8gZGUgdW5hIHNlc2nDs24gKHRyYXMgdGVybWluYXI7IGVsIGJhY2tlbmQgcGFzYSBhIHNlciBmdWVudGUpLiAqL1xuICBjb25zdCBjbGVhclNlc3Npb25UYWlsID0gdXNlQ2FsbGJhY2soKHNlc3Npb25JZDogc3RyaW5nKSA9PiB7XG4gICAgdXNlU2Vzc2lvbnNTdG9yZS5nZXRTdGF0ZSgpLnNldE1lc3NhZ2VzKHNlc3Npb25JZCwgW10pXG4gIH0sIFtdKVxuXG4gIC8vIFJlZ2lzdHJhciBsYSBzZXNpw7NuIHZpc2libGUgZW4gZWwgdHJhY2tlciBnbG9iYWwgcGFyYSBxdWUgbG9zIGNhbGxiYWNrcyBkZWxcbiAgLy8gbW90b3IgKHF1ZSBwdWVkZW4gcGVydGVuZWNlciBhIHVuYSBpbnN0YW5jaWEgeWEgZGVzbW9udGFkYSkgc2VwYW4gY3XDoWwgZXMgbGFcbiAgLy8gc2VzacOzbiBhY3RpdmEgYWN0dWFsLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGFjdGl2ZVZpZXcuc2V0KGFjdGl2ZVNlc3Npb25JZClcbiAgfSwgW2FjdGl2ZVNlc3Npb25JZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpc01vdW50ZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaXNNb3VudGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaWYgKGFjdGl2ZVZpZXcuaXMoY3VycmVudENoYXRJZC5jdXJyZW50KSkge1xuICAgICAgICBhY3RpdmVWaWV3LnNldChudWxsKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gUmVjb25jaWxpYWNpw7NuOiBzaSBsYSBzZXNpw7NuIGFjdGl2YSB0ZXJtaW5hIChjb21wbGV0ZS9lcnJvci9jYW5jZWxsZWQpIHBlcm8gZWxcbiAgLy8gc3RvcmUgcG9yLXNlc2nDs24gdG9kYXbDrWEgdGllbmUgdW4gcGxhY2Vob2xkZXIgZGUgc3RyZWFtaW5nLCByZWZyZXNjYW1vcyBkZXNkZVxuICAvLyBlbCBiYWNrZW5kLiBVc2Ftb3MgZWwgc3RvcmUgKG5vIG1lc3NhZ2VzUmVmKTogaGFuZGxlU3RyZWFtRmluaXNoIGxpbXBpYSBlbFxuICAvLyBwbGFjZWhvbGRlciBhaMOtIGRlIGZvcm1hIHPDrW5jcm9uYTsgbWVzc2FnZXNSZWYgcHVlZGUgcXVlZGFyIHN0YWxlIHVuIHJlbmRlclxuICAvLyBwb3JxdWUgc2V0U3RhdHVzIChadXN0YW5kKSB5IHJlbW92ZU1lc3NhZ2UgKFJlYWN0KSBubyBiYXRjaGFuIGp1bnRvcy5cbiAgY29uc3QgYWN0aXZlU2Vzc2lvbk1ldGEgPSB1c2VTZXNzaW9uTWV0YShhY3RpdmVTZXNzaW9uSWQpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc3RhdHVzID0gYWN0aXZlU2Vzc2lvbk1ldGE/LnN0YXR1c1xuICAgIGlmICghc3RhdHVzKSByZXR1cm5cbiAgICBjb25zdCBpc1Rlcm1pbmFsID0gc3RhdHVzID09PSAnY29tcGxldGUnIHx8IHN0YXR1cyA9PT0gJ2Vycm9yJyB8fCBzdGF0dXMgPT09ICdjYW5jZWxsZWQnXG4gICAgaWYgKCFpc1Rlcm1pbmFsKSByZXR1cm5cbiAgICBjb25zdCBrZXkgPSBgJHthY3RpdmVTZXNzaW9uSWR9OiR7c3RhdHVzfToke2FjdGl2ZVNlc3Npb25NZXRhPy5maW5pc2hlZEF0ID8/ICcnfWBcbiAgICBpZiAobGFzdEhhbmRsZWRUZXJtaW5hbFJlZi5jdXJyZW50ID09PSBrZXkpIHJldHVyblxuICAgIGxhc3RIYW5kbGVkVGVybWluYWxSZWYuY3VycmVudCA9IGtleVxuXG4gICAgY29uc3QgdGFpbCA9IHVzZVNlc3Npb25zU3RvcmUuZ2V0U3RhdGUoKS5nZXRNZXNzYWdlcyhhY3RpdmVTZXNzaW9uSWQpXG4gICAgY29uc3QgaGFzU3RhbGVQbGFjZWhvbGRlciA9IHRhaWwuc29tZShtc2cgPT4gaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZChtc2cuaWQpKVxuICAgIGlmIChoYXNTdGFsZVBsYWNlaG9sZGVyKSB7XG4gICAgICBsb2FkTWVzc2FnZXMoeyBmb3JjZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSwgW2FjdGl2ZVNlc3Npb25NZXRhPy5zdGF0dXMsIGFjdGl2ZVNlc3Npb25NZXRhPy5maW5pc2hlZEF0LCBhY3RpdmVTZXNzaW9uSWQsIGxvYWRNZXNzYWdlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjdXN0b21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgnY2hhdC1sb2FkaW5nLW1lc3NhZ2VzLWNoYW5nZWQnLCB7XG4gICAgICBkZXRhaWw6IHsgbG9hZGluZ01lc3NhZ2VzIH0sXG4gICAgfSlcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbUV2ZW50KVxuICB9LCBbbG9hZGluZ01lc3NhZ2VzXSlcblxuICBjb25zdCBwcmV2aW91c0luaXRpYWxDaGF0SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4oaW5pdGlhbENoYXRJZClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHByZXZpb3VzSW5pdGlhbENoYXRJZCA9IHByZXZpb3VzSW5pdGlhbENoYXRJZFJlZi5jdXJyZW50XG4gICAgcHJldmlvdXNJbml0aWFsQ2hhdElkUmVmLmN1cnJlbnQgPSBpbml0aWFsQ2hhdElkXG5cbiAgICAvLyBDaGF0IG51ZXZvIC8gaG9tZTogaW5pdGlhbENoYXRJZCBwYXNhIGEgbnVsbCwgYXPDrSBxdWUgbGEgcmFtYSBkZSBhYmFqbyBub1xuICAgIC8vIGFwbGljYS4gSGF5IHF1ZSByb3RhciBhIHVuYSBzZXNpw7NuIG51ZXZhIGlndWFsOiBzaSBzZWd1aW1vcyBhcHVudGFuZG8gYSBsYVxuICAgIC8vIGFudGVyaW9yLCBgYWN0aXZlVmlld2AgbGEgc2lndWUgbWFyY2FuZG8gY29tbyBhY3RpdmEgeSBjdWFuZG8gdGVybWluYSBubyBzZVxuICAgIC8vIG5vdGlmaWNhICh5IHN1IHJlc3B1ZXN0YSBzZSBjb21taXRlYSBzb2JyZSBsYSB2aXN0YSBudWV2YSkuIEVsIMOhcmJvbCBub1xuICAgIC8vIHJlbW9udGEgZW4gZXN0ZSBmbHVqbyAobm8gaGF5IGBrZXlgKSB5IG5hZGllIGNvbnN1bWUgYHJlc2V0Q2hhdGAuXG4gICAgaWYgKCFpbml0aWFsQ2hhdElkICYmIHByZXZpb3VzSW5pdGlhbENoYXRJZCkge1xuICAgICAgY3VycmVudENoYXRJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICAgIHNldEFjdGl2ZVNlc3Npb25JZChjdXJyZW50Q2hhdElkLmN1cnJlbnQpXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGluaXRpYWxDaGF0SWQgJiYgaW5pdGlhbENoYXRJZCAhPT0gY3VycmVudENoYXRJZC5jdXJyZW50KSB7XG4gICAgICAvLyBOTyBhYm9ydGFtb3MgZWwgc3RyZWFtIGFudGVyaW9yOiBwdWVkZSBzZWd1aXIgZ2VuZXJhbmRvIGVuIGJhY2tncm91bmQuXG4gICAgICAvLyBTb2xvIGNhbWJpYW1vcyBkZSBzZXNpw7NuIGFjdGl2YTsgZWwgbW90b3IgcnV0ZWEgY2FkYSBzdHJlYW0gcG9yIHN1XG4gICAgICAvLyBzZXNzaW9uSWQsIGFzw60gcXVlIGxvcyB0b2tlbnMgZGUgbGEgc2VzacOzbiBwcmV2aWEgc2lndWVuIGFwbGljw6FuZG9zZSBhXG4gICAgICAvLyBFU0Egc2VzacOzbiAoc3RvcmUpLCBubyBhIGxhIG51ZXZhLlxuXG4gICAgICAvLyBMaW1waWFyIGNvbnRleHRvIGdsb2JhbCBhbCBjYW1iaWFyIGRlIGNvbnZlcnNhY2nDs25cbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgIHNldFRhc2sobnVsbClcblxuICAgICAgY3VycmVudENoYXRJZC5jdXJyZW50ID0gaW5pdGlhbENoYXRJZFxuICAgICAgc2V0QWN0aXZlU2Vzc2lvbklkKGluaXRpYWxDaGF0SWQpXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gZmFsc2VcbiAgICAgIC8vIGlzUHJvY2Vzc2luZ1JlZiByZWZsZWphIHNpIGxhIHNlc2nDs24gQUNUSVZBIGVzdMOhIG9jdXBhZGEuIFNpIGxhIHNlc2nDs25cbiAgICAgIC8vIGEgbGEgcXVlIGVudHJhbW9zIHNpZ3VlIGdlbmVyYW5kbyBlbiBiYWNrZ3JvdW5kLCBxdWVkYSBibG9xdWVhZGE7IHNpIG5vLFxuICAgICAgLy8gc2UgaGFiaWxpdGEgZWwgZW52w61vIGF1bnF1ZSBvdHJhcyBzZXNpb25lcyBzaWdhbiBnZW5lcmFuZG8uXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IHNlc3Npb25TdHJlYW1NYW5hZ2VyLmlzQWN0aXZlKGluaXRpYWxDaGF0SWQpXG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcblxuICAgICAgLy8gbG9hZE1lc3NhZ2VzIGxvIGRpc3BhcmEgdXNlQ2hhdE1lc3NhZ2VzIGFsIGNhbWJpYXIgY2hhdElkIChjb24gY2FjaGUgZW4gbWVtb3JpYSkuXG4gICAgfVxuICB9LCBbaW5pdGlhbENoYXRJZCwgcHJvamVjdCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBzZXRDaGlwc1Byb2plY3QsIHNldFRhc2tdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0QWN0aXZlQ2hhdElkKGluaXRpYWxDaGF0SWQgfHwgbnVsbClcbiAgfSwgW2luaXRpYWxDaGF0SWQsIHNldEFjdGl2ZUNoYXRJZF0pXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtRXJyb3IgPSB1c2VDYWxsYmFjayhcbiAgICAoY3R4OiBTdHJlYW1Db250ZXh0LCBlcnJvck1lc3NhZ2U/OiBzdHJpbmcsIGVycm9yUmF3TWVzc2FnZT86IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgeyBzZXNzaW9uSWQsIG1lc3NhZ2VJZCwgcGxhY2Vob2xkZXJJZCB9ID0gY3R4XG4gICAgICBjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZVZpZXcuaXMoc2Vzc2lvbklkKVxuXG4gICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICBkcm9wRnJvbVNlc3Npb24oc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkKVxuXG4gICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgY2xlYXJTdHJlYW1VaVJlZi5jdXJyZW50KClcbiAgICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfVxuXG4gICAgICBjb25zdCBpc0FjY2Vzc0RlbmllZCA9IGVycm9yTWVzc2FnZSA9PT0gXCJBY2Nlc3MgZGVuaWVkOiBZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGlzIGFnZW50XCJcbiAgICAgIGNvbnN0IGlzUHJvbXB0VG9vTG9uZyA9XG4gICAgICAgIGVycm9yTWVzc2FnZSA9PT0gJ2ludmFsaWRfcmVxdWVzdF9lcnJvcicgJiYgZXJyb3JSYXdNZXNzYWdlPy5pbmNsdWRlcygncHJvbXB0IGlzIHRvbyBsb25nJylcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBpc0FjY2Vzc0RlbmllZFxuICAgICAgICA/IHQoJ2NoYXQuZXJyb3JBY2Nlc3NEZW5pZWQnKVxuICAgICAgICA6IGlzUHJvbXB0VG9vTG9uZ1xuICAgICAgICAgID8gdCgnY2hhdC5lcnJvclByb21wdFRvb0xvbmcnLCB7IHVzZWQ6IGVycm9yUmF3TWVzc2FnZT8ubWF0Y2goLyhcXGQrKSB0b2tlbnMvKT8uWzFdID8/ICcnIH0pXG4gICAgICAgICAgOiB0KCdjaGF0LmVycm9yJylcblxuICAgICAgY29tbWl0VG9TZXNzaW9uKHNlc3Npb25JZCwge1xuICAgICAgICBpZDogYGFuc3dlci0ke21lc3NhZ2VJZH1gLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBpc0Vycm9yOiB0cnVlLFxuICAgICAgICAvLyBDaGlwIFwiUmVpbnRlbnRhclwiIHNvbG8gZW4gZWwgZXJyb3IgZ2Vuw6lyaWNvIChwLiBlai4gNTAwKTsgbm8gYXBsaWNhIGEgYWNjZXNzIGRlbmllZCBuaSBwcm9tcHQgdG9vIGxvbmcuXG4gICAgICAgIC4uLighaXNBY2Nlc3NEZW5pZWQgJiYgIWlzUHJvbXB0VG9vTG9uZyA/IHsgc3VnZ2VzdGlvbnM6IFt0KCdjaGF0LnJldHJ5JyldIH0gOiB7fSksXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgfSlcbiAgICAgIGNsZWFyU2Vzc2lvblRhaWwoc2Vzc2lvbklkKVxuXG4gICAgICBpZiAoIWlzQWN0aXZlKSB7XG4gICAgICAgIGdldENoYXRzU3RvcmVTdGF0ZSgpLm1hcmtDaGF0QXNVbnJlYWQoc2Vzc2lvbklkKVxuICAgICAgICBub3RpZnlTZXNzaW9uRmluaXNoZWRJbkJhY2tncm91bmQoc2Vzc2lvbklkLCAnZXJyb3InKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2NvbW1pdFRvU2Vzc2lvbiwgZHJvcEZyb21TZXNzaW9uLCBjbGVhclNlc3Npb25UYWlsLCB0XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtVXBkYXRlID0gdXNlQ2FsbGJhY2soXG4gICAgKGN0eDogU3RyZWFtQ29udGV4dCwgY29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB7IHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCB9ID0gY3R4XG5cbiAgICAgIC8vIEFzZWd1cmFtb3MgZWwgcGxhY2Vob2xkZXIgdW5hIMO6bmljYSB2ZXogcG9yIHN0cmVhbSwgdGFudG8gZW4gZWwgc3RvcmVcbiAgICAgIC8vIGRlIGxhIHNlc2nDs24gY29tbyBlbiBsYSB2aXN0YSBzaSBlcyBsYSBhY3RpdmEuIEVsIHRleHRvIGVuIHZpdm8gdmlhamFcbiAgICAgIC8vIHBvciBzZXNzaW9uU3RyZWFtaW5nVGV4dCAoZXh0ZXJubyksIHNpbiByZS1yZW5kZXIgZGVsIMOhcmJvbCBjb21wbGV0by5cbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVyRXhpc3RzID0gdXNlU2Vzc2lvbnNTdG9yZVxuICAgICAgICAuZ2V0U3RhdGUoKVxuICAgICAgICAuZ2V0TWVzc2FnZXMoc2Vzc2lvbklkKVxuICAgICAgICAuc29tZShtc2cgPT4gbXNnLmlkID09PSBwbGFjZWhvbGRlcklkKVxuXG4gICAgICBpZiAoIXBsYWNlaG9sZGVyRXhpc3RzKSB7XG4gICAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LnN0YXJ0KHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZClcbiAgICAgICAgY29tbWl0VG9TZXNzaW9uKHNlc3Npb25JZCwge1xuICAgICAgICAgIGlkOiBwbGFjZWhvbGRlcklkLFxuICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKGFjdGl2ZVZpZXcuaXMoc2Vzc2lvbklkKSkge1xuICAgICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBwbGFjZWhvbGRlcklkXG4gICAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gc2Vzc2lvbklkXG4gICAgICB9XG5cbiAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LnNldFRleHQoc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkLCBjb250ZW50KVxuICAgIH0sXG4gICAgW2NvbW1pdFRvU2Vzc2lvbl1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbUZpbmlzaCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIGN0eDogU3RyZWFtQ29udGV4dCxcbiAgICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICAgIHNvdXJjZXM6IGFueSxcbiAgICAgIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nLFxuICAgICAgcmF3QXR0YWNobWVudHM/OiBhbnlbXSB8IG51bGwsXG4gICAgICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdIHwgbnVsbCxcbiAgICAgIGNvbXBsZXRlZEFnZW50SWQ/OiBzdHJpbmcgfCBudWxsXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCB7IHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCB9ID0gY3R4XG4gICAgICBjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZVZpZXcuaXMoc2Vzc2lvbklkKVxuXG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gcGxhY2Vob2xkZXJJZFxuICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgICAgZHJvcEZyb21TZXNzaW9uKHNlc3Npb25JZCwgdGVtcE1lc3NhZ2VJZClcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gbm9ybWFsaXplQXNzaXN0YW50QXR0YWNobWVudHMocmF3QXR0YWNobWVudHMpXG5cbiAgICAgIC8vIFNlc2nDs24gZW4gYmFja2dyb3VuZDogY2VycmFtb3MgbGVhbi4gRWwgYmFja2VuZCB5YSBwZXJzaXN0acOzIGxhXG4gICAgICAvLyByZXNwdWVzdGEsIGFzw60gcXVlIGFsIHZvbHZlciBhIGxhIHNlc2nDs24gc2UgY2FyZ2EgZGVzZGUgYWjDrS4gQXZpc2Ftb3NcbiAgICAgIC8vIHF1ZSB0ZXJtaW7DsyAodW5yZWFkICsgZXZlbnRvIHBhcmEgdG9hc3Qvc29uaWRvKS5cbiAgICAgIGlmICghaXNBY3RpdmUpIHtcbiAgICAgICAgY29tbWl0VG9TZXNzaW9uKHNlc3Npb25JZCwge1xuICAgICAgICAgIGlkOiBgYW5zd2VyLSR7bWVtb3J5U2Vzc2lvbklkfWAsXG4gICAgICAgICAgbWVzc2FnZTogY29udGVudCxcbiAgICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgICAgc291cmNlcyxcbiAgICAgICAgICAuLi4oYXR0YWNobWVudHMubGVuZ3RoID4gMCA/IHsgYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgICAgc3VnZ2VzdGlvbnM6IHN1Z2dlc3Rpb25zIHx8IFtdLFxuICAgICAgICB9KVxuICAgICAgICBjbGVhclNlc3Npb25UYWlsKHNlc3Npb25JZClcbiAgICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkubWFya0NoYXRBc1VucmVhZChzZXNzaW9uSWQpXG4gICAgICAgIG5vdGlmeVNlc3Npb25GaW5pc2hlZEluQmFja2dyb3VuZChzZXNzaW9uSWQsICdjb21wbGV0ZScpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG5cbiAgICAgIC8vIERldGVjdGFyIHRvZGFzIGxhcyBVUkxzIGRlIHRhcmVhcyAoLi4uL3Rhc2tzLzEyMy9kZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKVxuICAgICAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gICAgICBjb25zdCBtYXRjaGVzID0gWy4uLmNvbnRlbnQubWF0Y2hBbGwodGFza1VybFJlZ2V4KV1cblxuICAgICAgbGV0IGNvbnRlbnRUb0FkZCA9IGNvbnRlbnRcbiAgICAgIGNvbnN0IHByZXZpb3VzTWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG0gPT4gbS5pZCAhPT0gdGVtcE1lc3NhZ2VJZCkuYXQoLTEpXG4gICAgICBjb25zdCBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlID0gcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbCAhPSBudWxsXG4gICAgICBjb25zdCBUQVNLX0NSRUFUSU9OX1RPT0xTID0gWydjcmVhdGVfdGFzaycsICdjcmVhdGVfdGFza3NfYmF0Y2gnLCAnY2xvbmVfdGFzayddXG4gICAgICBjb25zdCBUQVNLX0VESVRfVE9PTFMgPSBbXG4gICAgICAgICdlZGl0X3Rhc2snLFxuICAgICAgICAnZWRpdF90YXNrc19iYXRjaCcsXG4gICAgICAgICd0YXNrX2Fzc2lnbicsXG4gICAgICAgICd0YXNrX3VuYXNzaWduJyxcbiAgICAgICAgJ3VwZGF0ZV90YXNrX3R5cGUnLFxuICAgICAgICAndXBkYXRlX2VzdGltYXRlZF9ob3VycycsXG4gICAgICAgICdhc3NpZ25fdGFza19sYWJlbCcsXG4gICAgICBdXG4gICAgICBjb25zdCBUQVNLX0RFTEVURV9UT09MUyA9IFsnZGVsZXRlX3Rhc2snLCAnZGVsZXRlX3Rhc2tzX2JhdGNoJ11cbiAgICAgIGNvbnN0IHBlbmRpbmdBY3Rpb25zID0gcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zIHx8IFtdXG4gICAgICBjb25zdCB3YXNUYXNrQ3JlYXRpb24gPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0NSRUFUSU9OX1RPT0xTLmluY2x1ZGVzKGFjdGlvbi50b29sX25hbWUpKVxuICAgICAgY29uc3Qgd2FzVGFza0VkaXQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0VESVRfVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNUYXNrRGVsZXRlID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gVEFTS19ERUxFVEVfVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNDcmVhdGVBZ2VudEFwcHJvdmVkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsU3RhdHVzID09PSAnYXBwcm92ZWQnICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBhY3Rpb24udG9vbF9uYW1lID09PSAnY3JlYXRlX2FnZW50JylcbiAgICAgIGNvbnN0IHdhc0NvbmZpZ3VyZUFnZW50QWNjZXNzQXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IChhY3Rpb24udG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpXG4gICAgICBsZXQgY3JlYXRlQWdlbnRGb2xsb3dVcDogeyBhZ2VudElkOiBzdHJpbmcgfSB8IHVuZGVmaW5lZFxuICAgICAgaWYgKHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiYgY29tcGxldGVkQWdlbnRJZD8udHJpbSgpKSB7XG4gICAgICAgIGNyZWF0ZUFnZW50Rm9sbG93VXAgPSB7IGFnZW50SWQ6IGNvbXBsZXRlZEFnZW50SWQudHJpbSgpIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHdhc0NvbmZpZ3VyZUFnZW50QWNjZXNzQXBwcm92ZWQgJiZcbiAgICAgICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiZcbiAgICAgICAgKGNvbXBsZXRlZEFnZW50SWQ/LnRyaW0oKSB8fFxuICAgICAgICAgIGV4dHJhY3RBZ2VudElkRnJvbVBlbmRpbmdBY3Rpb25zQnlUb29sTmFtZShwZW5kaW5nQWN0aW9ucywgJ2NvbmZpZ3VyZV9hZ2VudF9hY2Nlc3MnKSlcbiAgICAgICkge1xuICAgICAgICBjb25zdCBjb25maWd1cmVkQWdlbnRJZCA9XG4gICAgICAgICAgY29tcGxldGVkQWdlbnRJZD8udHJpbSgpIHx8XG4gICAgICAgICAgZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zLCAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpXG4gICAgICAgIGNyZWF0ZUFnZW50Rm9sbG93VXAgPSB7XG4gICAgICAgICAgYWdlbnRJZDogY29uZmlndXJlZEFnZW50SWQgYXMgc3RyaW5nLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh3YXNDcmVhdGVBZ2VudEFwcHJvdmVkKSB7XG4gICAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRIaXRsT3B0aW9uLCB7XG4gICAgICAgICAgYWdlbnRfdHlwZTogZ2V0SGl0bEFuYWx5dGljc0FnZW50VHlwZShhZ2VudCksXG4gICAgICAgICAgYWN0aW9uX3R5cGU6IGJ1aWxkSGl0bEFjdGlvblR5cGVMaXN0KHBlbmRpbmdBY3Rpb25zKSxcbiAgICAgICAgICBkZWNpc2lvbjogJ2FjY2VwdCcsXG4gICAgICAgICAgb3B0aW9uOiAnY3JlYXRlX2FnZW50JyxcbiAgICAgICAgICAuLi4oY29tcGxldGVkQWdlbnRJZD8udHJpbSgpID8geyBjcmVhdGVkX2FnZW50X2lkOiBjb21wbGV0ZWRBZ2VudElkLnRyaW0oKSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBtYW51YWxBcHByb3ZhbEZvckFuYWx5dGljcyA9IGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50XG4gICAgICBjb25zdCB3YXNNYW51YWxDcmVhdGVBZ2VudEFwcHJvdmVkID1cbiAgICAgICAgbWFudWFsQXBwcm92YWxGb3JBbmFseXRpY3MgJiYgbm9ybWFsaXplSGl0bFRvb2xOYW1lKG1hbnVhbEFwcHJvdmFsRm9yQW5hbHl0aWNzLnRvb2xOYW1lKSA9PT0gJ2NyZWF0ZV9hZ2VudCdcblxuICAgICAgaWYgKHdhc01hbnVhbENyZWF0ZUFnZW50QXBwcm92ZWQpIHtcbiAgICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdEhpdGxPcHRpb24sIHtcbiAgICAgICAgICBhZ2VudF90eXBlOiBnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlKGFnZW50KSxcbiAgICAgICAgICBhY3Rpb25fdHlwZTogJ2NyZWF0ZV9hZ2VudCcsXG4gICAgICAgICAgZGVjaXNpb246ICdhY2NlcHQnLFxuICAgICAgICAgIHJlc29sdXRpb25fc291cmNlOiAnbWFudWFsJyxcbiAgICAgICAgICBvcHRpb246ICdjcmVhdGVfYWdlbnQnLFxuICAgICAgICAgIC4uLihjb21wbGV0ZWRBZ2VudElkPy50cmltKCkgPyB7IGNyZWF0ZWRfYWdlbnRfaWQ6IGNvbXBsZXRlZEFnZW50SWQudHJpbSgpIH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdhc0VkaXRBZ2VudEFwcHJvdmVkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsU3RhdHVzID09PSAnYXBwcm92ZWQnICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiAoYWN0aW9uLnRvb2xfbmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ2VkaXRfYWdlbnQnKVxuXG4gICAgICBsZXQgZWRpdEFnZW50Rm9sbG93VXA6IHsgYWdlbnRJZDogc3RyaW5nIH0gfCB1bmRlZmluZWRcbiAgICAgIGlmICh3YXNFZGl0QWdlbnRBcHByb3ZlZCkge1xuICAgICAgICBjb25zdCBmcm9tU3RyZWFtID0gY29tcGxldGVkQWdlbnRJZD8udHJpbSgpXG4gICAgICAgIGNvbnN0IGZyb21BcmdzID0gZXh0cmFjdEFnZW50SWRGcm9tRWRpdEFnZW50UGVuZGluZ0FjdGlvbnMocGVuZGluZ0FjdGlvbnMpXG4gICAgICAgIGNvbnN0IHJlc29sdmVkQWdlbnRJZCA9IGZyb21TdHJlYW0gfHwgZnJvbUFyZ3NcbiAgICAgICAgaWYgKHJlc29sdmVkQWdlbnRJZCkge1xuICAgICAgICAgIGVkaXRBZ2VudEZvbGxvd1VwID0geyBhZ2VudElkOiByZXNvbHZlZEFnZW50SWQgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRhc2tJZHNGcm9tVXJscyA9IG1hdGNoZXMubWFwKG1hdGNoID0+IHBhcnNlSW50KG1hdGNoWzFdLCAxMCkpXG4gICAgICBjb25zdCB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsID0gZXh0cmFjdFRhc2tJZHNGcm9tRGVsZXRlUGVuZGluZ0FjdGlvbnMocGVuZGluZ0FjdGlvbnMpXG4gICAgICBjb25zdCB0YXNrSWRzRnJvbURlbGV0aW9uVGV4dCA9XG4gICAgICAgIHdhc1Rhc2tEZWxldGUgJiYgdGFza0lkc0Zyb21VcmxzLmxlbmd0aCA9PT0gMCAmJiB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gZXh0cmFjdFRhc2tJZHNGcm9tQXNzaXN0YW50RGVsZXRpb25UZXh0KGNvbnRlbnQpXG4gICAgICAgICAgOiBbXVxuICAgICAgY29uc3QgdGFza0lkc0ZvckRhc2hib2FyZCA9XG4gICAgICAgIHRhc2tJZHNGcm9tVXJscy5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0YXNrSWRzRnJvbVVybHNcbiAgICAgICAgICA6IHRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsXG4gICAgICAgICAgICA6IHRhc2tJZHNGcm9tRGVsZXRpb25UZXh0XG5cbiAgICAgIGNvbnN0IHNob3VsZFN5bmNEYXNoYm9hcmQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgICh3YXNUYXNrQ3JlYXRpb24gfHwgd2FzVGFza0VkaXQgfHwgd2FzVGFza0RlbGV0ZSkgJiZcbiAgICAgICAgdGFza0lkc0ZvckRhc2hib2FyZC5sZW5ndGggPiAwXG5cbiAgICAgIGlmIChzaG91bGRTeW5jRGFzaGJvYXJkKSB7XG4gICAgICAgIGNvbnN0IHRhc2tJZHMgPSB0YXNrSWRzRm9yRGFzaGJvYXJkXG4gICAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCB0YWIgPSBhd2FpdCBnZXRUYWJUYXNrRGVmYXVsdCh0YXNrSWRzWzBdKVxuICAgICAgICAgIGNvbnN0IHRhYlNlZ21lbnQgPSB0YWIgPyBgLyR7dGFifWAgOiAnL2RldGFpbCdcbiAgICAgICAgICBjb250ZW50VG9BZGQgPSBjb250ZW50LnJlcGxhY2UodGFza1VybFJlZ2V4LCB1cmwgPT5cbiAgICAgICAgICAgIHVybC5yZXBsYWNlKC9cXC8oZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycykoPz0kfFxcPykvLCB0YWJTZWdtZW50KVxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxhc3RQcm9qZWN0TWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG1zZyA9PiBtc2cucHJvamVjdElkKS5hdCgtMSlcbiAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZFJhdyA9IHByb2plY3Q/LmlkIHx8IGxhc3RQcm9qZWN0TWVzc2FnZT8ucHJvamVjdElkXG4gICAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWQgPSBjb250ZXh0UHJvamVjdElkUmF3ID8gcGFyc2VJbnQoU3RyaW5nKGNvbnRleHRQcm9qZWN0SWRSYXcpLCAxMCkgOiBudWxsXG4gICAgICAgIGNvbnN0IHBhdGhNYXRjaCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5tYXRjaCgvXlxcL3Byb2plY3RzXFwvKFxcZCspXFwvLylcbiAgICAgICAgY29uc3Qgcm91dGVQcm9qZWN0SWQgPSBwYXRoTWF0Y2ggPyBwYXJzZUludChwYXRoTWF0Y2hbMV0sIDEwKSA6IG51bGxcbiAgICAgICAgY29uc3QgaXNPblByb2plY3RSb3V0ZSA9IGNvbnRleHRQcm9qZWN0SWQgJiYgcm91dGVQcm9qZWN0SWQgJiYgY29udGV4dFByb2plY3RJZCA9PT0gcm91dGVQcm9qZWN0SWRcblxuICAgICAgICBpZiAoaXNPblByb2plY3RSb3V0ZSkge1xuICAgICAgICAgIGlmICh3YXNUYXNrQ3JlYXRpb24pIHtcbiAgICAgICAgICAgIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkPy5hZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZD8uKHRhc2tJZHMpXG4gICAgICAgICAgfSBlbHNlIGlmICh3YXNUYXNrRWRpdCkge1xuICAgICAgICAgICAgd2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQ/LmVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZD8uKHRhc2tJZHMpXG4gICAgICAgICAgfSBlbHNlIGlmICh3YXNUYXNrRGVsZXRlKSB7XG4gICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uZGVsZXRlRXhpc3RpbmdUYXNrRnJvbURhc2hib2FyZD8uKHRhc2tJZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJlZmV0Y2ggZGVsIHRhc2sgcGFuZWwgc2kgZXN0w6EgYWJpZXJ0byB5IGxhIHRvb2wgYXByb2JhZGEgZWRpdMOzL2JvcnLDsyBlc2EgdGFyZWEuXG4gICAgICAvLyBDdWJyZSBsb3MgZG9zIGZsdWpvcyBkZSBhcHByb3ZhbDpcbiAgICAgIC8vICAgMSkgQXBwcm92YWwgcG9yIGJvdMOzbiDihpIgYHByZXZpb3VzTWVzc2FnZS5hcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnNgICh2w61hIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UpXG4gICAgICAvLyAgIDIpIE1hbnVhbCBhcHByb3ZhbCAodXN1YXJpbyB0aXBlYSBcInNpXCIvXCJub1wiKSDihpIgYGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50YFxuICAgICAgY29uc3Qgb3BlblRhc2tQYW5lbElkID0gd2luZG93LnRhc2tQYW5lbD8udGFza0lkXG4gICAgICBjb25zdCBtYW51YWxBcHByb3ZhbCA9IGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50XG4gICAgICBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudCA9IG51bGwgLy8gY29uc3VtaXIgdW5hIHNvbGEgdmV6XG4gICAgICBjb25zdCBtYW51YWxXYXNUYXNrRWRpdCA9ICEhbWFudWFsQXBwcm92YWwgJiYgVEFTS19FRElUX1RPT0xTLmluY2x1ZGVzKG1hbnVhbEFwcHJvdmFsLnRvb2xOYW1lKVxuICAgICAgY29uc3QgbWFudWFsV2FzVGFza0RlbGV0ZSA9ICEhbWFudWFsQXBwcm92YWwgJiYgVEFTS19ERUxFVEVfVE9PTFMuaW5jbHVkZXMobWFudWFsQXBwcm92YWwudG9vbE5hbWUpXG5cbiAgICAgIC8vIFN5bmMgUGxhbm5lcjogYXZpc2FyIGNhcmdhIGRlIGhvcmFzIGNvbmZpcm1hZGEgKGNyZWF0ZV9ob3VyIC8gY3JlYXRlX2hvdXJzKS5cbiAgICAgIGNvbnN0IGhvdXJzVG9vbHNGcm9tQXBwcm92YWwgPSBwZW5kaW5nQWN0aW9uc1xuICAgICAgICAubWFwKChhY3Rpb246IFBlbmRpbmdBY3Rpb24pID0+IGFjdGlvbi50b29sX25hbWUpXG4gICAgICAgIC5maWx0ZXIoKHRvb2xOYW1lKTogdG9vbE5hbWUgaXMgc3RyaW5nID0+IGlzSG91cnNDaGFyZ2VUb29sKHRvb2xOYW1lKSlcbiAgICAgIGNvbnN0IHdhc0hvdXJzQ2hhcmdlQXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgaG91cnNUb29sc0Zyb21BcHByb3ZhbC5sZW5ndGggPiAwXG4gICAgICBjb25zdCBtYW51YWxIb3Vyc1Rvb2wgPSBtYW51YWxBcHByb3ZhbD8udG9vbE5hbWVcbiAgICAgIGNvbnN0IHdhc0hvdXJzQ2hhcmdlTWFudWFsQXBwcm92ZWQgPSBpc0hvdXJzQ2hhcmdlVG9vbChtYW51YWxIb3Vyc1Rvb2wpXG5cbiAgICAgIGlmICh3YXNIb3Vyc0NoYXJnZUFwcHJvdmVkIHx8IHdhc0hvdXJzQ2hhcmdlTWFudWFsQXBwcm92ZWQpIHtcbiAgICAgICAgY29uc3QgdG9vbHMgPSB3YXNIb3Vyc0NoYXJnZUFwcHJvdmVkID8gaG91cnNUb29sc0Zyb21BcHByb3ZhbCA6IG1hbnVhbEhvdXJzVG9vbCA/IFttYW51YWxIb3Vyc1Rvb2xdIDogW11cbiAgICAgICAgZGlzcGF0Y2hNYWlhSG91cnNDaGFyZ2VkKHtcbiAgICAgICAgICBzb3VyY2U6ICdtYWlhJyxcbiAgICAgICAgICB0b29scyxcbiAgICAgICAgICBzZXNzaW9uSWQ6IG1lbW9yeVNlc3Npb25JZCxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wZW5UYXNrUGFuZWxJZCAmJiAod2FzVGFza0VkaXQgfHwgd2FzVGFza0RlbGV0ZSB8fCBtYW51YWxXYXNUYXNrRWRpdCB8fCBtYW51YWxXYXNUYXNrRGVsZXRlKSkge1xuICAgICAgICBjb25zdCBtYW51YWxQc2V1ZG9BY3Rpb246IFBlbmRpbmdBY3Rpb24gfCBudWxsID0gbWFudWFsQXBwcm92YWxcbiAgICAgICAgICA/ICh7IHRvb2xfbmFtZTogbWFudWFsQXBwcm92YWwudG9vbE5hbWUsIHRvb2xfYXJnczogbWFudWFsQXBwcm92YWwudG9vbEFyZ3MgPz8ge30gfSBhcyBQZW5kaW5nQWN0aW9uKVxuICAgICAgICAgIDogbnVsbFxuICAgICAgICBjb25zdCBhZmZlY3RlZFRhc2tJZHMgPSBbXG4gICAgICAgICAgLi4uZXh0cmFjdFRhc2tJZHNGcm9tUGVuZGluZ0FjdGlvbnNBcmdzKHBlbmRpbmdBY3Rpb25zKSxcbiAgICAgICAgICAuLi50YXNrSWRzRnJvbVVybHMsXG4gICAgICAgICAgLi4udGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbCxcbiAgICAgICAgICAuLi4obWFudWFsUHNldWRvQWN0aW9uID8gZXh0cmFjdFRhc2tJZHNGcm9tUGVuZGluZ0FjdGlvbnNBcmdzKFttYW51YWxQc2V1ZG9BY3Rpb25dKSA6IFtdKSxcbiAgICAgICAgXS5tYXAoU3RyaW5nKVxuICAgICAgICBpZiAoYWZmZWN0ZWRUYXNrSWRzLmluY2x1ZGVzKFN0cmluZyhvcGVuVGFza1BhbmVsSWQpKSkge1xuICAgICAgICAgIHdpbmRvdy50YXNrUGFuZWw/LnJlZmV0Y2hUYXNrPy4oKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbW1pdFRvU2Vzc2lvbihzZXNzaW9uSWQsIHtcbiAgICAgICAgaWQ6IGBhbnN3ZXItJHttZW1vcnlTZXNzaW9uSWR9YCxcbiAgICAgICAgbWVzc2FnZTogY29udGVudFRvQWRkLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgc291cmNlcyxcbiAgICAgICAgLi4uKGF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgICAgc3VnZ2VzdGlvbnM6IHN1Z2dlc3Rpb25zIHx8IFtdLFxuICAgICAgICAuLi4oY3JlYXRlQWdlbnRGb2xsb3dVcCA/IHsgY3JlYXRlQWdlbnRGb2xsb3dVcCB9IDoge30pLFxuICAgICAgfSlcbiAgICAgIGNsZWFyU2Vzc2lvblRhaWwoc2Vzc2lvbklkKVxuXG4gICAgICBpZiAoY3JlYXRlQWdlbnRGb2xsb3dVcD8uYWdlbnRJZCkge1xuICAgICAgICBmZXRjaEFnZW50RGV0YWlsKGNyZWF0ZUFnZW50Rm9sbG93VXAuYWdlbnRJZClcbiAgICAgICAgICAudGhlbihjaGF0QWdlbnQgPT4ge1xuICAgICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywge1xuICAgICAgICAgICAgICAgIGRldGFpbDogeyBhZ2VudDogY2hhdEFnZW50IH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1t1c2VDaGF0TWFuYWdlcl0gTm8gc2UgcHVkbyBhw7FhZGlyIGVsIGFnZW50ZSByZWNpw6luIGNyZWFkbyBhbCBsaXN0YWRvJywgZXJyKVxuICAgICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChlZGl0QWdlbnRGb2xsb3dVcD8uYWdlbnRJZCkge1xuICAgICAgICBmZXRjaEFnZW50RGV0YWlsKGVkaXRBZ2VudEZvbGxvd1VwLmFnZW50SWQpXG4gICAgICAgICAgLnRoZW4oY2hhdEFnZW50ID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnbWFpYS1zeW5jLWVkaXRlZC1hZ2VudC1mcm9tLWNoYXQnLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiB7IGFnZW50OiBjaGF0QWdlbnQgfSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignW3VzZUNoYXRNYW5hZ2VyXSBObyBzZSBwdWRvIHJlZnJlc2NhciBlbCBhZ2VudGUgZWRpdGFkbycsIGVycilcbiAgICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG5cbiAgICAgIGNvbnN0IHsgaXNDaGF0Vmlld1Zpc2libGUsIG1hcmtDaGF0QXNSZWFkIH0gPSBnZXRDaGF0c1N0b3JlU3RhdGUoKVxuICAgICAgaWYgKGlzQWN0aXZlICYmIGlzQ2hhdFZpZXdWaXNpYmxlKSB7XG4gICAgICAgIGF3YWl0IG1hcmtDaGF0QXNSZWFkKHNlc3Npb25JZCwgeyBmb3JjZTogdHJ1ZSB9KVxuICAgICAgfVxuXG4gICAgICBpZiAoZmlyc3RUaW1lUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpXG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gICAgICAgIGZpcnN0VGltZVJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICB9LFxuICAgIFtjb21taXRUb1Nlc3Npb24sIGRyb3BGcm9tU2Vzc2lvbiwgY2xlYXJTZXNzaW9uVGFpbCwgcHJvamVjdCwgZ2V0VGFiVGFza0RlZmF1bHQsIGV2ZW50LCBhZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbVN0b3AgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gRWwgc3RvcCBzaWVtcHJlIGFwbGljYSBhIGxhIHNlc2nDs24gYWN0aXZhIChib3TDs24gZGVsIGlucHV0IHZpc2libGUpLlxuICAgIGNvbnN0IHNlc3Npb25JZCA9IGN1cnJlbnRDaGF0SWQuY3VycmVudFxuICAgIGNsZWFyU3RyZWFtVWlSZWYuY3VycmVudCgpXG4gICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGRyb3BGcm9tU2Vzc2lvbihzZXNzaW9uSWQsIHRlbXBNZXNzYWdlSWQpXG5cbiAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICBpZDogYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tY2FuY2VsbGVkYCxcbiAgICAgIG1lc3NhZ2U6IHQoJ2NoYXQuY2FuY2VsbGVkJyksXG4gICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgaXNGcm9udGVuZENhbmNlbGxlZDogdHJ1ZSxcbiAgICB9KVxuICAgIGNsZWFyU2Vzc2lvblRhaWwoc2Vzc2lvbklkKVxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgICB9LCA1MDApXG4gIH0sIFtjb21taXRUb1Nlc3Npb24sIGRyb3BGcm9tU2Vzc2lvbiwgY2xlYXJTZXNzaW9uVGFpbCwgdF0pXG5cbiAgY29uc3QgaGFuZGxlQXBwcm92YWxSZXF1aXJlZCA9IHVzZUNhbGxiYWNrKFxuICAgIChjdHg6IFN0cmVhbUNvbnRleHQsIGFwcHJvdmFsOiBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB7IHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCB9ID0gY3R4XG4gICAgICBjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZVZpZXcuaXMoc2Vzc2lvbklkKVxuXG4gICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICBkcm9wRnJvbVNlc3Npb24oc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkKVxuXG4gICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGl0bENvbnRleHQ6IEhpdGxFeGVjdXRpb25Db250ZXh0ID0ge1xuICAgICAgICBtZXNzYWdlSWQ6IGBhcHByb3ZhbC0ke2FwcHJvdmFsLm9yaWdpbmFsX3RocmVhZF9pZH1gLFxuICAgICAgICBtZXNzYWdlVGV4dDogYWNjdW11bGF0ZWRDb250ZW50IHx8ICcnLFxuICAgICAgICBhcHByb3ZhbCxcbiAgICAgICAgcGVuZGluZ0FjdGlvbnM6IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucyxcbiAgICAgICAgdGhyZWFkSWRzOiBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnM/Lm1hcChhY3Rpb24gPT4gYWN0aW9uLnRocmVhZF9pZCksXG4gICAgICB9XG4gICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IGhpdGxDb250ZXh0XG4gICAgICB9XG5cbiAgICAgIGlmIChhcHByb3ZhbC5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQpIHtcbiAgICAgICAgdHJhY2tNYW51YWxIaXRsRXZlbnRzKFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHsgaW1wcmVzc2lvbjogRVZFTlRTLmFpQ2hhdEhpdGwsIG9wdGlvbjogRVZFTlRTLmFpQ2hhdEhpdGxPcHRpb24gfSxcbiAgICAgICAgICBhZ2VudCxcbiAgICAgICAgICBhcHByb3ZhbCxcbiAgICAgICAgICB0cmFja2VkTWFudWFsSGl0bEtleXNSZWYuY3VycmVudFxuICAgICAgICApXG5cbiAgICAgICAgY29uc3QgZmlyc3RBY3Rpb24gPSBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnM/LlswXVxuICAgICAgICBjb25zdCB0b29sTmFtZSA9IChhcHByb3ZhbCBhcyB7IHRvb2xfbmFtZT86IHN0cmluZyB9KS50b29sX25hbWUgPz8gZmlyc3RBY3Rpb24/LnRvb2xfbmFtZSA/PyAnJ1xuICAgICAgICBjb25zdCB0b29sQXJncyA9XG4gICAgICAgICAgKChhcHByb3ZhbCBhcyB7IHRvb2xfYXJncz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0pLnRvb2xfYXJncyA/P1xuICAgICAgICAgICAgKGZpcnN0QWN0aW9uPy50b29sX2FyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQpKSB8fFxuICAgICAgICAgIG51bGxcbiAgICAgICAgaWYgKHRvb2xOYW1lKSB7XG4gICAgICAgICAgbGFzdE1hbnVhbEFwcHJvdmFsUmVmLmN1cnJlbnQgPSB7IHRvb2xOYW1lLCB0b29sQXJncyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBBZGQgYSBtZXNzYWdlIHdpdGggdGhlIGFwcHJvdmFsIHJlcXVlc3RcbiAgICAgIGNvbW1pdFRvU2Vzc2lvbihzZXNzaW9uSWQsIHtcbiAgICAgICAgaWQ6IGBhcHByb3ZhbC0ke2FwcHJvdmFsLm9yaWdpbmFsX3RocmVhZF9pZH1gLFxuICAgICAgICBtZXNzYWdlOiBhY2N1bXVsYXRlZENvbnRlbnQgfHwgJycsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICBhcHByb3ZhbCxcbiAgICAgICAgYXBwcm92YWxTdGF0dXM6ICdwZW5kaW5nJyxcbiAgICAgIH0pXG4gICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkubWFya0NoYXRBc1VucmVhZChzZXNzaW9uSWQpXG4gICAgICAgIG5vdGlmeVNlc3Npb25GaW5pc2hlZEluQmFja2dyb3VuZChzZXNzaW9uSWQsICdhcHByb3ZhbF9yZXF1aXJlZCcpXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWdlbnQsIGNvbW1pdFRvU2Vzc2lvbiwgZHJvcEZyb21TZXNzaW9uLCBldmVudF1cbiAgKVxuXG4gIGNvbnN0IHtcbiAgICBhc2tNYWlhLFxuICAgIGlzTG9hZGluZzogd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBzdHJlYW1BY3Rpdml0eSxcbiAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eSxcbiAgICBzdG9wU3RyZWFtaW5nLFxuICB9ID0gdXNlT3JjaGVzdHJhdG9yU3RyZWFtKHtcbiAgICBhY3RpdmVTZXNzaW9uSWQsXG4gICAgb25FcnJvcjogaGFuZGxlU3RyZWFtRXJyb3IsXG4gICAgb25TdHJlYW1VcGRhdGU6IGhhbmRsZVN0cmVhbVVwZGF0ZSxcbiAgICBvbkZpbmlzaFN0cmVhbTogaGFuZGxlU3RyZWFtRmluaXNoLFxuICAgIG9uU3RvcDogaGFuZGxlU3RyZWFtU3RvcCxcbiAgICBvbkFwcHJvdmFsUmVxdWlyZWQ6IGhhbmRsZUFwcHJvdmFsUmVxdWlyZWQsXG4gICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYsXG4gIH0pXG5cbiAgY2xlYXJTdHJlYW1VaVJlZi5jdXJyZW50ID0gKCkgPT4ge1xuICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KG51bGwpXG4gICAgc2V0QWN0aXZlTG9hZGluZ3Moe30pXG4gICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IG51bGxcbiAgfVxuXG4gIGNvbnN0IGN1cnJlbnRQcm9qZWN0ID0gcHJvamVjdFxuXG4gIGNvbnN0IHNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHNPck9wdGlvbnM/OiBBdHRhY2htZW50RmlsZVtdIHwgU2VuZE1lc3NhZ2VPcHRpb25zLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZ1xuICAgICkgPT4ge1xuICAgICAgaWYgKGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50IHx8IHdhaXRpbmdSZXNwb25zZSB8fCBsb2FkaW5nTWVzc2FnZXMpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIFRvcGUgZGUgY29uY3VycmVuY2lhOiBzaSBlc3RhIHNlc2nDs24gbm8gZXN0w6EgZ2VuZXJhbmRvIHkgeWEgaGF5XG4gICAgICAvLyBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TIGFjdGl2YXMsIGF2aXNhbW9zIHkgbm8gYXJyYW5jYW1vcyBvdHJhLlxuICAgICAgY29uc3Qgd2lsbFN0YXJ0TmV3U3RyZWFtID0gIXNlc3Npb25TdHJlYW1NYW5hZ2VyLmlzQWN0aXZlKGN1cnJlbnRDaGF0SWQuY3VycmVudClcbiAgICAgIGlmICh3aWxsU3RhcnROZXdTdHJlYW0gJiYgc2Vzc2lvblN0cmVhbU1hbmFnZXIuZ2V0QWN0aXZlQ291bnQoKSA+PSBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TKSB7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdzbmFja2Jhci1ldmVudCcsIHtcbiAgICAgICAgICAgIGRldGFpbDogeyBzaG93OiB0cnVlLCBzZXZlcml0eTogJ2luZm8nLCBtZXNzYWdlOiB0KCdjaGF0LnRvb01hbnlBY3RpdmVTZXNzaW9ucycpIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBhdHRhY2htZW50cywgb3B0aW9ucyB9ID0gbm9ybWFsaXplU2VuZE1lc3NhZ2VBcmdzKGF0dGFjaG1lbnRzT3JPcHRpb25zKVxuICAgICAgLy8gTGFzIG1lbnRpb25zIHB1ZWRlbiB2ZW5pciB2w61hIDV0byBwYXLDoW1ldHJvIChjYWxsIHBvc2l0aW9uYWwgZGVzZGUgZWwgZm9vdGVyKVxuICAgICAgLy8gbyB2w61hIFNlbmRNZXNzYWdlT3B0aW9ucyAoY2FsbCBwcm9ncmFtw6F0aWNvKS4gRWwgcGFyw6FtZXRybyBleHBsw61jaXRvIGdhbmEuXG4gICAgICBjb25zdCBlZmZlY3RpdmVNZW50aW9ucyA9IG1lbnRpb25zID8/IG9wdGlvbnMubWVudGlvbnNcbiAgICAgIGNvbnN0IGNvbnRleHRNZXNzYWdlOiBDb250ZXh0TWVzc2FnZSB8IHVuZGVmaW5lZCA9IGJ1aWxkQ29udGV4dE1lc3NhZ2UoZWZmZWN0aXZlTWVudGlvbnMpXG4gICAgICBjb25zdCBwYXlsb2FkRnVhSWQgPSBmdWFJZCA/PyBvcHRpb25zLmZ1YUlkXG4gICAgICBjb25zdCBwYXlsb2FkU2NJZCA9IHNjSWQgPz8gb3B0aW9ucy5zY0lkXG4gICAgICBjb25zdCBwYXlsb2FkQ29udGV4dERhdGEgPSBvcHRpb25zLmNvbnRleHREYXRhXG4gICAgICBjb25zdCBkaXNwbGF5TWVzc2FnZSA9IGZvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZUZvckRpc3BsYXkobWVzc2FnZSwge1xuICAgICAgICBmdWFJZDogcGF5bG9hZEZ1YUlkLFxuICAgICAgICBzY0lkOiBwYXlsb2FkU2NJZCxcbiAgICAgIH0pXG5cbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgc2V0QWN0aXZlQ2hhdElkKGN1cnJlbnRDaGF0SWQuY3VycmVudClcbiAgICAgIGNvbnN0IG5ld01lc3NhZ2VJZCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSBuZXdNZXNzYWdlSWRcbiAgICAgIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCA9IG1lc3NhZ2VcblxuICAgICAgaWYgKCFyZXBvcnRlZEV2ZW50LmN1cnJlbnQpIHtcbiAgICAgICAgZXZlbnQoRVZFTlRTLnBtQWlUeXBlZFRleHQpXG4gICAgICAgIHJlcG9ydGVkRXZlbnQuY3VycmVudCA9IHRydWVcbiAgICAgIH1cblxuICAgICAgLy8gVmVyaWZpY2FyIHNpIGVsIGNvbnRleHRvIGdsb2JhbCBlc3TDoSBkZXNhY3R1YWxpemFkb1xuICAgICAgY29uc3QgbGFzdE1lc3NhZ2VXaXRoUHJvamVjdCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG1zZyA9PiBtc2cucHJvamVjdElkKS5hdCgtMSlcblxuICAgICAgY29uc3QgY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzID0gbWVzc2FnZXNSZWYuY3VycmVudD8uW21lc3NhZ2VzUmVmLmN1cnJlbnQubGVuZ3RoIC0gMV0/LmFnZW50SWRcblxuICAgICAgY29uc3Qgc2Vzc2lvbklkID0gY3VycmVudENoYXRJZC5jdXJyZW50XG4gICAgICBjb25zdCB7XG4gICAgICAgIGNoaXBzUHJvamVjdDogY3R4Q2hpcHNQcm9qZWN0LFxuICAgICAgICBwcm9qZWN0OiBjdHhQcm9qZWN0LFxuICAgICAgICBjbGllbnQ6IGN0eENsaWVudCxcbiAgICAgICAgdGFzazogY3R4VGFzayxcbiAgICAgIH0gPSBjb250ZXh0UmVmLmN1cnJlbnRcblxuICAgICAgZW5zdXJlU2Vzc2lvbkluU2lkZWJhcih7XG4gICAgICAgIHNlc3Npb25JZCxcbiAgICAgICAgdGl0bGU6IGJ1aWxkU2lkZWJhclNlc3Npb25UaXRsZShkaXNwbGF5TWVzc2FnZSksXG4gICAgICAgIGFnZW50LFxuICAgICAgICBhZ2VudElkOiBjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMgfHwgYWdlbnQ/LmlkLFxuICAgICAgICBwcm9qZWN0OiBjdHhQcm9qZWN0LFxuICAgICAgICBjbGllbnQ6IGN0eENsaWVudCxcbiAgICAgICAgYXR0YWNobWVudHMsXG4gICAgICB9KVxuXG4gICAgICAvLyBObyBhZ3JlZ2FyIHByb2plY3RJZCBhbCBtZW5zYWplIGRlbCB1c3VhcmlvIC0gc2UgZGV0ZXJtaW5hcsOhIGRlc3B1w6lzXG4gICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICAgIGlkOiBgcXVlc3Rpb24tJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9YCxcbiAgICAgICAgbWVzc2FnZTogZGlzcGxheU1lc3NhZ2UsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IGN1cnJlbnRVc2VyLFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuVVNFUixcbiAgICAgICAgc291cmNlczogYXR0YWNobWVudHMsXG4gICAgICAgIC4uLihjb250ZXh0TWVzc2FnZSA/IHsgY29udGV4dE1lc3NhZ2UgfSA6IHt9KSxcbiAgICAgIH0pXG5cbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG5cbiAgICAgIGNvbnN0IHN0cmVhbWluZ1BsYWNlaG9sZGVySWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBzdHJlYW1pbmdQbGFjZWhvbGRlcklkXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IHNlc3Npb25JZFxuICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuc3RhcnQoc2Vzc2lvbklkLCBzdHJlYW1pbmdQbGFjZWhvbGRlcklkKVxuICAgICAgY29tbWl0VG9TZXNzaW9uKHNlc3Npb25JZCwge1xuICAgICAgICBpZDogc3RyZWFtaW5nUGxhY2Vob2xkZXJJZCxcbiAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiBhZ2VudD8ubmFtZSB8fCAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgfSlcblxuICAgICAgbGV0IGZpbmFsTWVzc2FnZSA9IG1lc3NhZ2VcblxuICAgICAgaWYgKG1lc3NhZ2UgPT09IHQoJ3FhLml0ZW1zLnJlbnRhYmlsaWRhZF9wcm95ZWN0bycpKSB7XG4gICAgICAgIGZpbmFsTWVzc2FnZSA9IGBGQVE6ICR7dCgncWEuaXRlbXMucmVudGFiaWxpZGFkX3Byb3llY3RvJyl9IC0gVGlwbyBkZSByZW50YWJpbGlkYWQ6ICR7XG4gICAgICAgICAgb3B0aW9ucy5wcm9qZWN0Q2hhbmdlZD8uaW5jb21lVHlwZSB8fCBjb250ZXh0UmVmLmN1cnJlbnQucHJvamVjdD8uaW5jb21lVHlwZVxuICAgICAgICB9YFxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pKVxuXG4gICAgICBjb25zdCBsYXN0TWVzc2FnZVByb2plY3RJZCA9IGxhc3RNZXNzYWdlV2l0aFByb2plY3Q/LnByb2plY3RJZFxuICAgICAgY29uc3QgcHJvamVjdFRvUmVxdWVzdCA9IHJlc29sdmVQcm9qZWN0VG9SZXF1ZXN0KGN0eENoaXBzUHJvamVjdCwgbGFzdE1lc3NhZ2VQcm9qZWN0SWQpXG5cbiAgICAgIGNvbnN0IHByb2plY3RzID0gYXdhaXQgZmV0Y2hQcm9qZWN0cyhbcHJvamVjdFRvUmVxdWVzdF0pXG5cbiAgICAgIGNvbnN0IHBheWxvYWRGYXFJZCA9IGZhcUlkID8/IG9wdGlvbnMuZmFxSWRcbiAgICAgIGNvbnN0IHBheWxvYWRBZ2VudFN1Z2dlc3Rpb25JZCA9IGFnZW50U3VnZ2VzdGlvbklkID8/IG9wdGlvbnMuYWdlbnRTdWdnZXN0aW9uSWRcblxuICAgICAgY29uc3QgcGF5bG9hZERhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6IGZpbmFsTWVzc2FnZSxcbiAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0VG9SZXF1ZXN0LFxuICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgIGZpcnN0TmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZTogYXV0aFVzZXIubGFzdE5hbWUsXG4gICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgbWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgIGFnZW50SWQ6IGN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyB8fCBhZ2VudD8uaWQhLFxuICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgLi4uKGN0eFByb2plY3Q/LmZlZUlkICE9IG51bGwgPyB7IGZlZUlkOiBOdW1iZXIoY3R4UHJvamVjdC5mZWVJZCkgfSA6IHt9KSxcbiAgICAgICAgLi4ucmVzb2x2ZUNsaWVudFBheWxvYWQoY3R4Q2xpZW50LCBjdHhQcm9qZWN0KSxcbiAgICAgICAgLi4uKHByb2plY3RzPy5sZW5ndGggPyB7IHByb2plY3ROYW1lOiBwcm9qZWN0c1swXS5uYW1lIH0gOiB7fSksXG4gICAgICAgIC4uLihjdHhUYXNrPy5pZCAhPSBudWxsXG4gICAgICAgICAgPyB7IHRhc2tJZDogTnVtYmVyKGN0eFRhc2suaWQpLCAuLi4oY3R4VGFzay5uYW1lID8geyB0YXNrTmFtZTogY3R4VGFzay5uYW1lIH0gOiB7fSkgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgICAuLi4oYXR0YWNobWVudHMubGVuZ3RoID4gMCA/IHsgYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRGYXFJZCA/IHsgZmFxSWQ6IHBheWxvYWRGYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZDogcGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkRnVhSWQgPyB7IGZ1YUlkOiBwYXlsb2FkRnVhSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRTY0lkID8geyBzY0lkOiBwYXlsb2FkU2NJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8udHlwZSAhPSBudWxsID8geyBhZ2VudFR5cGU6IGFnZW50LnR5cGUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py5lbW9qaSAhPSBudWxsID8geyBhZ2VudEVtb2ppOiBhZ2VudC5lbW9qaSB9IDoge30pLFxuICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkQ29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhOiBwYXlsb2FkQ29udGV4dERhdGEgfSA6IHt9KSxcbiAgICAgIH1cblxuICAgICAgYXNrTWFpYShwYXlsb2FkRGF0YSlcbiAgICB9LFxuICAgIFtcbiAgICAgIGFkZE1lc3NhZ2UsXG4gICAgICBjb21taXRUb1Nlc3Npb24sXG4gICAgICBldmVudCxcbiAgICAgIGFza01haWEsXG4gICAgICBwcm9qZWN0LFxuICAgICAgY2xpZW50LFxuICAgICAgdGFzayxcbiAgICAgIGNoaXBzUHJvamVjdCxcbiAgICAgIGF1dGhVc2VyLFxuICAgICAgYWdlbnQsXG4gICAgICB0LFxuICAgICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgXVxuICApXG5cbiAgY29uc3QgY2hhbmdlUHJvamVjdCA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICAgIGlmICghY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50KSByZXR1cm5cblxuICAgICAgaWYgKG9wdGlvbi5pZCAhPT0gcHJvamVjdD8uaWQpIHtcbiAgICAgICAgc2V0UHJvamVjdChvcHRpb24pXG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9qZWN0ICYmIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCkge1xuICAgICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIH0pKVxuXG4gICAgICAgIGFza01haWEoe1xuICAgICAgICAgIG1lc3NhZ2U6IGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCxcbiAgICAgICAgICBoaXN0b3J5LFxuICAgICAgICAgIHByb2plY3RJZDogb3B0aW9uLmlkLFxuICAgICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICAgIGZpcnN0TmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgICAgIGxhc3ROYW1lOiBhdXRoVXNlci5sYXN0TmFtZSxcbiAgICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCB8fCAnJyxcbiAgICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAgIC4uLihvcHRpb24/LmZlZUlkICE9IG51bGwgPyB7IGZlZUlkOiBOdW1iZXIob3B0aW9uLmZlZUlkKSB9IDoge30pLFxuICAgICAgICAgIC4uLihvcHRpb24/LmNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudElkOiBOdW1iZXIob3B0aW9uLmNsaWVudElkKSB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudD8uZW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5OiBhZ2VudC5lbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnQ/LnR5cGUgIT0gbnVsbCA/IHsgYWdlbnRUeXBlOiBhZ2VudC50eXBlIH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBbcHJvamVjdCwgc2V0UHJvamVjdCwgYXNrTWFpYSwgYXV0aFVzZXIsIGlzV2ViU2VhcmNoQWN0aXZlLCBhZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUZlZWRiYWNrID0gdXNlQ2FsbGJhY2soYXN5bmMgKGZlZWRiYWNrUHJvcDogRmVlZGJhY2ssIGNoYXRNZXNzYWdlSWQ6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5DaGF0cy53YXNIZWxwZnVsQ2hhdChjaGF0TWVzc2FnZUlkLCBmZWVkYmFja1Byb3AgPT09IEZlZWRiYWNrLlRIVU1CU19VUClcbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChtZXNzYWdlID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UuaWQgPT09IGNoYXRNZXNzYWdlSWQgJiYgbWVzc2FnZS5yb2xlID09PSAnYXNzaXN0YW50Jykge1xuICAgICAgICAgIHJldHVybiB7IC4uLm1lc3NhZ2UsIHdhc0hlbHBmdWw6IGZlZWRiYWNrUHJvcCA9PT0gRmVlZGJhY2suVEhVTUJTX1VQIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWVzc2FnZVxuICAgICAgfSlcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IGhhbmRsZUFwcHJvdmFsRGVjaXNpb24gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoXG4gICAgICB0aHJlYWRJZHM6IHN0cmluZ1tdLFxuICAgICAgZGVjaXNpb246ICdhcHByb3ZlJyB8ICdyZWplY3QnLFxuICAgICAgZWRpdGVkQWN0aW9ucz86IEFycmF5PHsgdG9vbF9uYW1lOiBzdHJpbmc7IGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0+XG4gICAgKSA9PiB7XG4gICAgICBpZiAoIXRocmVhZElkcz8ubGVuZ3RoKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIHRocmVhZF9pZHMgcHJvdmlkZWQgZm9yIGFwcHJvdmFsIGRlY2lzaW9uJylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvdW5kID0gZmluZE1lc3NhZ2VXaXRoQXBwcm92YWxCeVRocmVhZElkcyh0aHJlYWRJZHMsIG1lc3NhZ2VzUmVmLmN1cnJlbnQpXG4gICAgICBpZiAoIWZvdW5kPy5tZXNzYWdlLmFwcHJvdmFsKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIHNlIGVuY29udHLDsyBtZW5zYWplIGNvbiBhcHByb3ZhbCBwYXJhIHRocmVhZF9pZHM6JywgdGhyZWFkSWRzKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBtZXNzYWdlOiBtZXNzYWdlV2l0aEFwcHJvdmFsLCBzZXNzaW9uSWQ6IGZvdW5kU2Vzc2lvbklkIH0gPSBmb3VuZFxuICAgICAgY29uc3QgeyBhcHByb3ZhbCB9ID0gbWVzc2FnZVdpdGhBcHByb3ZhbFxuICAgICAgaWYgKCFhcHByb3ZhbCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2Vzc2lvbklkID0gYXBwcm92YWwuc2Vzc2lvbl9pZCB8fCBmb3VuZFNlc3Npb25JZFxuICAgICAgaWYgKCFzZXNzaW9uSWQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gc2Vzc2lvbl9pZCBkaXNwb25pYmxlIHBhcmEgYXBwcm92YWw6JywgdGhyZWFkSWRzKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHNlc3Npb25TdHJlYW1NYW5hZ2VyLmlzQWN0aXZlKHNlc3Npb25JZCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChzZXNzaW9uU3RyZWFtTWFuYWdlci5nZXRBY3RpdmVDb3VudCgpID49IE1BWF9DT05DVVJSRU5UX1NUUkVBTVMpIHtcbiAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ3NuYWNrYmFyLWV2ZW50Jywge1xuICAgICAgICAgICAgZGV0YWlsOiB7IHNob3c6IHRydWUsIHNldmVyaXR5OiAnaW5mbycsIG1lc3NhZ2U6IHQoJ2NoYXQudG9vTWFueUFjdGl2ZVNlc3Npb25zJykgfSxcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXNzYWdlSWQgPSBtZXNzYWdlV2l0aEFwcHJvdmFsLmlkXG4gICAgICBjb25zdCBuZXdTdGF0dXMgPSBkZWNpc2lvbiA9PT0gJ2FwcHJvdmUnID8gJ2FwcHJvdmVkJyA6ICdyZWplY3RlZCdcbiAgICAgIGNvbnN0IGhpdGxDb250ZXh0OiBIaXRsRXhlY3V0aW9uQ29udGV4dCA9IHtcbiAgICAgICAgbWVzc2FnZUlkLFxuICAgICAgICBtZXNzYWdlVGV4dDogbWVzc2FnZVdpdGhBcHByb3ZhbC5tZXNzYWdlLFxuICAgICAgICBhcHByb3ZhbCxcbiAgICAgICAgcGVuZGluZ0FjdGlvbnM6IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucyxcbiAgICAgICAgdGhyZWFkSWRzLFxuICAgICAgfVxuXG4gICAgICBjb25zdCBpc0FjdGl2ZVNlc3Npb24gPSBhY3RpdmVWaWV3LmlzKHNlc3Npb25JZClcbiAgICAgIGlmIChpc0FjdGl2ZVNlc3Npb24pIHtcbiAgICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IGhpdGxDb250ZXh0XG4gICAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7IC4uLm1lc3NhZ2VXaXRoQXBwcm92YWwsIGFwcHJvdmFsU3RhdHVzOiBuZXdTdGF0dXMgfSlcblxuICAgICAgY29uc3Qgc3RyZWFtTWVzc2FnZUlkID0gdXVpZHY0KClcbiAgICAgIGlmIChpc0FjdGl2ZVNlc3Npb24pIHtcbiAgICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gc3RyZWFtTWVzc2FnZUlkXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhpdGxDdHg6IFN0cmVhbUNvbnRleHQgPSB7XG4gICAgICAgIHNlc3Npb25JZCxcbiAgICAgICAgbWVzc2FnZUlkOiBzdHJlYW1NZXNzYWdlSWQsXG4gICAgICAgIHBsYWNlaG9sZGVySWQ6IGBhbnN3ZXItJHtzdHJlYW1NZXNzYWdlSWR9LXN0cmVhbWluZ2AsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlbGVhc2VBY3RpdmVQcm9jZXNzaW5nID0gKCkgPT4ge1xuICAgICAgICBpZiAoIWlzQWN0aXZlU2Vzc2lvbikgcmV0dXJuXG4gICAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2Vzc2lvblN0cmVhbU1hbmFnZXIuc3RhcnRDb250aW51ZVN0cmVhbSh7XG4gICAgICAgIHNlc3Npb25JZCxcbiAgICAgICAgcGxhY2Vob2xkZXJJZDogaGl0bEN0eC5wbGFjZWhvbGRlcklkLFxuICAgICAgICBjb250aW51ZVJlcXVlc3Q6IHtcbiAgICAgICAgICB0aHJlYWRJZHMsXG4gICAgICAgICAgc2Vzc2lvbklkOiBhcHByb3ZhbC5zZXNzaW9uX2lkLFxuICAgICAgICAgIGRlY2lzaW9uOiBlZGl0ZWRBY3Rpb25zID8gJ2VkaXQnIDogZGVjaXNpb24sXG4gICAgICAgICAgZWRpdGVkQWN0aW9ucyxcbiAgICAgICAgICBhZ2VudElkOiBhZ2VudD8uaWQgfHwgJycsXG4gICAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgfSxcbiAgICAgICAgdCxcbiAgICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHQ6IGhpdGxDb250ZXh0LFxuICAgICAgICBhZ2VudElkOiBhZ2VudD8uaWQsXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUsXG4gICAgICAgIGNhbGxiYWNrczoge1xuICAgICAgICAgIG9uU3RyZWFtVXBkYXRlOiBjb250ZW50ID0+IGhhbmRsZVN0cmVhbVVwZGF0ZShoaXRsQ3R4LCBjb250ZW50KSxcbiAgICAgICAgICBvbkZpbmlzaFN0cmVhbTogZmluaXNoUGF5bG9hZCA9PiB7XG4gICAgICAgICAgICByZWxlYXNlQWN0aXZlUHJvY2Vzc2luZygpXG4gICAgICAgICAgICBoYW5kbGVTdHJlYW1GaW5pc2goXG4gICAgICAgICAgICAgIGhpdGxDdHgsXG4gICAgICAgICAgICAgIGZpbmlzaFBheWxvYWQuY29udGVudCxcbiAgICAgICAgICAgICAgZmluaXNoUGF5bG9hZC5zb3VyY2VzLFxuICAgICAgICAgICAgICBmaW5pc2hQYXlsb2FkLm1lbW9yeVNlc3Npb25JZCxcbiAgICAgICAgICAgICAgZmluaXNoUGF5bG9hZC5hdHRhY2htZW50cyxcbiAgICAgICAgICAgICAgZmluaXNoUGF5bG9hZC5zdWdnZXN0aW9ucyxcbiAgICAgICAgICAgICAgZmluaXNoUGF5bG9hZC5jb21wbGV0ZWRBZ2VudElkXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICByZWxlYXNlQWN0aXZlUHJvY2Vzc2luZygpXG4gICAgICAgICAgICBoYW5kbGVTdHJlYW1FcnJvcihoaXRsQ3R4KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25BcHByb3ZhbFJlcXVpcmVkOiAoYXBwcm92YWxQYXlsb2FkLCBhY2N1bXVsYXRlZENvbnRlbnQpID0+IHtcbiAgICAgICAgICAgIHJlbGVhc2VBY3RpdmVQcm9jZXNzaW5nKClcbiAgICAgICAgICAgIGhhbmRsZUFwcHJvdmFsUmVxdWlyZWQoaGl0bEN0eCwgYXBwcm92YWxQYXlsb2FkLCBhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG5cbiAgICAgIGlmICghcmVzdWx0LnN0YXJ0ZWQpIHtcbiAgICAgICAgcmVsZWFzZUFjdGl2ZVByb2Nlc3NpbmcoKVxuICAgICAgICBpZiAocmVzdWx0LnJlYXNvbiA9PT0gJ2xpbWl0Jykge1xuICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ3NuYWNrYmFyLWV2ZW50Jywge1xuICAgICAgICAgICAgICBkZXRhaWw6IHsgc2hvdzogdHJ1ZSwgc2V2ZXJpdHk6ICdpbmZvJywgbWVzc2FnZTogdCgnY2hhdC50b29NYW55QWN0aXZlU2Vzc2lvbnMnKSB9LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIGF1dGhVc2VyLFxuICAgICAgYWdlbnQsXG4gICAgICBjb21taXRUb1Nlc3Npb24sXG4gICAgICBoYW5kbGVTdHJlYW1FcnJvcixcbiAgICAgIGhhbmRsZVN0cmVhbVVwZGF0ZSxcbiAgICAgIGhhbmRsZVN0cmVhbUZpbmlzaCxcbiAgICAgIGhhbmRsZUFwcHJvdmFsUmVxdWlyZWQsXG4gICAgICB0LFxuICAgIF1cbiAgKVxuXG4gIGNvbnN0IGluaXRpYWxpemVDaGF0ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGlmICghZmlyc3RUaW1lUmVmLmN1cnJlbnQpIHtcbiAgICAgIGZpcnN0VGltZVJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAoaW5pdGlhbENoYXRJZCkge1xuICAgICAgYXdhaXQgbG9hZE1lc3NhZ2VzKClcbiAgICB9IGVsc2UgaWYgKHVzZXJJbml0aWFsTWVzc2FnZSkge1xuICAgICAgY29uc3QgaGFzSW5pdGlhbE1lc3NhZ2UgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5tZXNzYWdlPy50cmltKCkpXG4gICAgICBjb25zdCBoYXNJbml0aWFsQXR0YWNobWVudHMgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cz8ubGVuZ3RoKVxuICAgICAgY29uc3QgaGFzSW5pdGlhbEZhcSA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLmZhcUlkKVxuICAgICAgY29uc3QgaGFzSW5pdGlhbEZ1YSA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLmZ1YUlkKVxuICAgICAgY29uc3QgaGFzSW5pdGlhbFNjID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2Uuc2NJZClcblxuICAgICAgaWYgKCFoYXNJbml0aWFsTWVzc2FnZSAmJiAhaGFzSW5pdGlhbEF0dGFjaG1lbnRzICYmICFoYXNJbml0aWFsRmFxICYmICFoYXNJbml0aWFsRnVhICYmICFoYXNJbml0aWFsU2MpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhpc3RvcnkgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChoaXN0b3J5TWVzc2FnZSA9PiAoe1xuICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICByb2xlOiBoaXN0b3J5TWVzc2FnZS51c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpID8gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgfSkpXG5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY2hpcHNQcm9qZWN0OiBjdHhDaGlwc1Byb2plY3QsXG4gICAgICAgIHByb2plY3Q6IGN0eFByb2plY3QsXG4gICAgICAgIGNsaWVudDogY3R4Q2xpZW50LFxuICAgICAgICB0YXNrOiBjdHhUYXNrLFxuICAgICAgfSA9IGNvbnRleHRSZWYuY3VycmVudFxuICAgICAgY29uc3QgcHJvamVjdFRvUmVxdWVzdCA9IHJlc29sdmVQcm9qZWN0VG9SZXF1ZXN0KGN0eENoaXBzUHJvamVjdCwgbnVsbCkgPz8gY3R4UHJvamVjdD8uaWQgPz8gbnVsbFxuXG4gICAgICBjb25zb2xlLmluZm8oJ1t1c2VDaGF0TWFuYWdlcl0gUEFUSD1pbml0aWFsaXplQ2hhdC91c2VySW5pdGlhbE1lc3NhZ2Ug4oCUIGNvbnRleHRSZWYgcmVzb2x1dGlvbjonLCB7XG4gICAgICAgIHByb2plY3RQcm9wSWQ6IGN0eFByb2plY3Q/LmlkID8/IG51bGwsXG4gICAgICAgIGNsaWVudElkOiBjdHhDbGllbnQ/LmlkID8/IG51bGwsXG4gICAgICAgIHRhc2tJZDogY3R4VGFzaz8uaWQgPz8gbnVsbCxcbiAgICAgICAgY2hpcHNQcm9qZWN0SWQ6IGN0eENoaXBzUHJvamVjdD8ucHJvamVjdElkID8/IG51bGwsXG4gICAgICAgIHByb2plY3RUb1JlcXVlc3QsXG4gICAgICAgIGFnZW50VHlwZTogYWdlbnQ/LnR5cGUsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBpbml0aWFsRGlzcGxheU1lc3NhZ2UgPSBmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5KHVzZXJJbml0aWFsTWVzc2FnZS5tZXNzYWdlLCB7XG4gICAgICAgIGZ1YUlkOiB1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQsXG4gICAgICAgIHNjSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkLFxuICAgICAgfSlcblxuICAgICAgZW5zdXJlU2Vzc2lvbkluU2lkZWJhcih7XG4gICAgICAgIHNlc3Npb25JZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICB0aXRsZTogYnVpbGRTaWRlYmFyU2Vzc2lvblRpdGxlKGluaXRpYWxEaXNwbGF5TWVzc2FnZSksXG4gICAgICAgIGFnZW50LFxuICAgICAgICBhZ2VudElkOiBhZ2VudD8uaWQsXG4gICAgICAgIHByb2plY3Q6IGN0eFByb2plY3QsXG4gICAgICAgIGNsaWVudDogY3R4Q2xpZW50LFxuICAgICAgICBhdHRhY2htZW50czogdXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzLFxuICAgICAgfSlcblxuICAgICAgYXNrTWFpYSh7XG4gICAgICAgIG1lc3NhZ2U6IHVzZXJJbml0aWFsTWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICBoaXN0b3J5LFxuICAgICAgICBwcm9qZWN0SWQ6IHByb2plY3RUb1JlcXVlc3QsXG4gICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgIHVzZXJJZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgZmlyc3ROYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICAgIGxhc3ROYW1lOiBhdXRoVXNlci5sYXN0TmFtZSxcbiAgICAgICAgY29tcGFueUlkOiBhdXRoVXNlci5jb21wYW55X2lkLnRvU3RyaW5nKCksXG4gICAgICAgIGNoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgYWdlbnROYW1lOiBhZ2VudD8ubmFtZSEsXG4gICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCEsXG4gICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAuLi4oY3R4UHJvamVjdD8uZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQ6IE51bWJlcihjdHhQcm9qZWN0LmZlZUlkKSB9IDoge30pLFxuICAgICAgICAuLi5yZXNvbHZlQ2xpZW50UGF5bG9hZChjdHhDbGllbnQsIGN0eFByb2plY3QpLFxuICAgICAgICAuLi4oY3R4UHJvamVjdD8ubmFtZSA/IHsgcHJvamVjdE5hbWU6IGN0eFByb2plY3QubmFtZSB9IDoge30pLFxuICAgICAgICAuLi4oY3R4VGFzaz8uaWQgIT0gbnVsbFxuICAgICAgICAgID8geyB0YXNrSWQ6IE51bWJlcihjdHhUYXNrLmlkKSwgLi4uKGN0eFRhc2submFtZSA/IHsgdGFza05hbWU6IGN0eFRhc2submFtZSB9IDoge30pIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyA/IHsgYXR0YWNobWVudHM6IHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmZhcUlkID8geyBmYXFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZhcUlkIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuYWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkOiB1c2VySW5pdGlhbE1lc3NhZ2UuYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZCA/IHsgZnVhSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZCB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLnNjSWQgPyB7IHNjSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkIH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8uZW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5OiBhZ2VudC5lbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py50eXBlICE9IG51bGwgPyB7IGFnZW50VHlwZTogYWdlbnQudHlwZSB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LmVtb2ppICE9IG51bGwgPyB7IGFnZW50RW1vamk6IGFnZW50LmVtb2ppIH0gOiB7fSksXG4gICAgICAgIC4uLihidWlsZENvbnRleHRNZXNzYWdlKHVzZXJJbml0aWFsTWVzc2FnZS5tZW50aW9ucylcbiAgICAgICAgICA/IHsgY29udGV4dE1lc3NhZ2U6IGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuY29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhOiB1c2VySW5pdGlhbE1lc3NhZ2UuY29udGV4dERhdGEgfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbXG4gICAgaW5pdGlhbENoYXRJZCxcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gICAgcHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgdGFzayxcbiAgICBhdXRoVXNlcixcbiAgICBhZ2VudCxcbiAgICBhc2tNYWlhLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgXSlcblxuICBjb25zdCByZXNldENoYXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgcHJldmlvdXNTZXNzaW9uSWQgPSBjdXJyZW50Q2hhdElkLmN1cnJlbnRcbiAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihwcmV2aW91c1Nlc3Npb25JZClcbiAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCA9IG51bGxcbiAgICBjdXJyZW50Q2hhdElkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgIHNldEFjdGl2ZVNlc3Npb25JZChjdXJyZW50Q2hhdElkLmN1cnJlbnQpXG4gICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gZmFsc2VcbiAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgc2V0QWN0aXZlQ2hhdElkKG51bGwpXG4gIH0sIFtzZXRBY3RpdmVDaGF0SWRdKVxuXG4gIGNvbnN0IHN0b3BHZW5lcmF0aW9uID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHN0b3BTdHJlYW1pbmcoKVxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgfSwgW3N0b3BTdHJlYW1pbmddKVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZXMsXG4gICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgIGlzTG9hZGluZ01vcmVNZXNzYWdlcyxcbiAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIHN0cmVhbUFjdGl2aXR5LFxuICAgIGFjdGl2ZUxvYWRpbmdzLFxuICAgIGN1cnJlbnRQcm9qZWN0LFxuICAgIGN1cnJlbnRDaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICBjdXJyZW50TWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG5cbiAgICBzZW5kTWVzc2FnZSxcbiAgICBjaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgaGFuZGxlU2Nyb2xsLFxuICAgIGluaXRpYWxpemVDaGF0LFxuICAgIHJlc2V0Q2hhdCxcbiAgICBzdG9wR2VuZXJhdGlvbixcblxuICAgIGlzRGlzYWJsZWQ6IHdhaXRpbmdSZXNwb25zZSB8fCBsb2FkaW5nTWVzc2FnZXMsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFD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
@@ -1,4 +1,7 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
1
2
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
+ 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; }
4
+ 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; }
2
5
  import { isMaiakerAgent } from './agentDisplayName';
3
6
 
4
7
  /** Alineado con TOOL_PERMISSION_MAP / TOOL_DISPLAY_NAMES en maia (snake_case). */
@@ -23,9 +26,40 @@ export function getHitlAnalyticsAgentType(agent) {
23
26
  if (agent.type === 'clone' || agent.type === 'orchestrator') return 'clone';
24
27
  return 'custom';
25
28
  }
29
+ export function buildHitlAnalyticsPayload(agentTypeForEvent, actions) {
30
+ return {
31
+ agent_type: agentTypeForEvent,
32
+ action_type: buildHitlActionTypeList(actions)
33
+ };
34
+ }
35
+ export function getHitlBatchKey(originalThreadId, actions) {
36
+ if (originalThreadId) return originalThreadId;
37
+ return actions.map(function (action) {
38
+ return "".concat(action.thread_id, ":").concat(action.tool_call_id);
39
+ }).sort().join('|');
40
+ }
41
+
42
+ /** Trackea impresión + decisión accept para HITL resuelto por texto (sin ApprovalBox). */
43
+ export function trackManualHitlEvents(triggerEvent, eventNames, agent, approval, trackedKeys) {
44
+ var _approval$pending_act;
45
+ var pendingActions = (_approval$pending_act = approval.pending_actions) !== null && _approval$pending_act !== void 0 ? _approval$pending_act : [];
46
+ if (!pendingActions.length) return;
47
+ var batchKey = getHitlBatchKey(approval.original_thread_id, pendingActions);
48
+ if (trackedKeys.has(batchKey)) return;
49
+ trackedKeys.add(batchKey);
50
+ var agentType = getHitlAnalyticsAgentType(agent);
51
+ var payload = buildHitlAnalyticsPayload(agentType, pendingActions);
52
+ triggerEvent(eventNames.impression, payload);
53
+ if (!hitlBatchIncludesCreateAgent(pendingActions)) {
54
+ triggerEvent(eventNames.option, _objectSpread(_objectSpread({}, payload), {}, {
55
+ decision: 'accept',
56
+ resolution_source: 'manual'
57
+ }));
58
+ }
59
+ }
26
60
 
27
61
  /** Para AI_CHAT_PLUS_OPEN y AI_CHAT_TOOLS (menú + del input): solo `clone` | `custom`. */
28
62
  export function getChatToolsMenuAgentType(agent) {
29
63
  return (agent === null || agent === void 0 ? void 0 : agent.type) === 'clone' || (agent === null || agent === void 0 ? void 0 : agent.type) === 'orchestrator' ? 'clone' : 'custom';
30
64
  }
31
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc01haWFrZXJBZ2VudCIsIm5vcm1hbGl6ZUhpdGxUb29sTmFtZSIsInRvb2xOYW1lIiwibiIsInRvTG93ZXJDYXNlIiwidHJpbSIsImJ1aWxkSGl0bEFjdGlvblR5cGVMaXN0IiwiYWN0aW9ucyIsIl90b0NvbnN1bWFibGVBcnJheSIsIlNldCIsIm1hcCIsImEiLCJ0b29sX25hbWUiLCJzb3J0Iiwiam9pbiIsImhpdGxCYXRjaEluY2x1ZGVzQ3JlYXRlQWdlbnQiLCJzb21lIiwiZ2V0SGl0bEFuYWx5dGljc0FnZW50VHlwZSIsImFnZW50IiwidHlwZSIsImdldENoYXRUb29sc01lbnVBZ2VudFR5cGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaGl0bEFuYWx5dGljcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFnZW50IH0gZnJvbSAnLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBpc01haWFrZXJBZ2VudCB9IGZyb20gJy4vYWdlbnREaXNwbGF5TmFtZSdcblxuLyoqIEFsaW5lYWRvIGNvbiBUT09MX1BFUk1JU1NJT05fTUFQIC8gVE9PTF9ESVNQTEFZX05BTUVTIGVuIG1haWEgKHNuYWtlX2Nhc2UpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUhpdGxUb29sTmFtZSh0b29sTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbiA9ICh0b29sTmFtZSB8fCAndW5rbm93bicpLnRvTG93ZXJDYXNlKCkudHJpbSgpXG4gIGlmIChuID09PSAnYXNzaWduJykgcmV0dXJuICd0YXNrX2Fzc2lnbidcbiAgcmV0dXJuIG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkSGl0bEFjdGlvblR5cGVMaXN0KGFjdGlvbnM6IHsgdG9vbF9uYW1lOiBzdHJpbmcgfVtdKTogc3RyaW5nIHtcbiAgcmV0dXJuIFsuLi5uZXcgU2V0KGFjdGlvbnMubWFwKGEgPT4gbm9ybWFsaXplSGl0bFRvb2xOYW1lKGEudG9vbF9uYW1lKSkpXS5zb3J0KCkuam9pbignLCcpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoaXRsQmF0Y2hJbmNsdWRlc0NyZWF0ZUFnZW50KGFjdGlvbnM6IHsgdG9vbF9uYW1lOiBzdHJpbmcgfVtdKTogYm9vbGVhbiB7XG4gIHJldHVybiBhY3Rpb25zLnNvbWUoYSA9PiBub3JtYWxpemVIaXRsVG9vbE5hbWUoYS50b29sX25hbWUpID09PSAnY3JlYXRlX2FnZW50Jylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUoXG4gIGFnZW50OiBQaWNrPEFnZW50LCAndHlwZScgfCAnbmFtZScgfCAnZW50aXR5Jz4gfCBudWxsIHwgdW5kZWZpbmVkXG4pOiAnY2xvbmUnIHwgJ2N1c3RvbScgfCAnbWFya2V0cGxhY2UnIHtcbiAgaWYgKCFhZ2VudCkgcmV0dXJuICdjdXN0b20nXG4gIGlmIChpc01haWFrZXJBZ2VudChhZ2VudCkpIHJldHVybiAnbWFya2V0cGxhY2UnXG4gIGlmIChhZ2VudC50eXBlID09PSAnY2xvbmUnIHx8IGFnZW50LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InKSByZXR1cm4gJ2Nsb25lJ1xuICByZXR1cm4gJ2N1c3RvbSdcbn1cblxuLyoqIFBhcmEgQUlfQ0hBVF9QTFVTX09QRU4geSBBSV9DSEFUX1RPT0xTIChtZW7DuiArIGRlbCBpbnB1dCk6IHNvbG8gYGNsb25lYCB8IGBjdXN0b21gLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoYXRUb29sc01lbnVBZ2VudFR5cGUoYWdlbnQ6IFBpY2s8QWdlbnQsICd0eXBlJz4gfCBudWxsIHwgdW5kZWZpbmVkKTogJ2Nsb25lJyB8ICdjdXN0b20nIHtcbiAgcmV0dXJuIGFnZW50Py50eXBlID09PSAnY2xvbmUnIHx8IGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJyA/ICdjbG9uZScgOiAnY3VzdG9tJ1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBQ0EsU0FBU0EsY0FBYyxRQUFRLG9CQUFvQjs7QUFFbkQ7QUFDQSxPQUFPLFNBQVNDLHFCQUFxQkEsQ0FBQ0MsUUFBZ0IsRUFBVTtFQUM5RCxJQUFNQyxDQUFDLEdBQUcsQ0FBQ0QsUUFBUSxJQUFJLFNBQVMsRUFBRUUsV0FBVyxDQUFDLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLENBQUM7RUFDdEQsSUFBSUYsQ0FBQyxLQUFLLFFBQVEsRUFBRSxPQUFPLGFBQWE7RUFDeEMsT0FBT0EsQ0FBQztBQUNWO0FBRUEsT0FBTyxTQUFTRyx1QkFBdUJBLENBQUNDLE9BQWdDLEVBQVU7RUFDaEYsT0FBT0Msa0JBQUEsQ0FBSSxJQUFJQyxHQUFHLENBQUNGLE9BQU8sQ0FBQ0csR0FBRyxDQUFDLFVBQUFDLENBQUM7SUFBQSxPQUFJVixxQkFBcUIsQ0FBQ1UsQ0FBQyxDQUFDQyxTQUFTLENBQUM7RUFBQSxFQUFDLENBQUMsRUFBRUMsSUFBSSxDQUFDLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUM1RjtBQUVBLE9BQU8sU0FBU0MsNEJBQTRCQSxDQUFDUixPQUFnQyxFQUFXO0VBQ3RGLE9BQU9BLE9BQU8sQ0FBQ1MsSUFBSSxDQUFDLFVBQUFMLENBQUM7SUFBQSxPQUFJVixxQkFBcUIsQ0FBQ1UsQ0FBQyxDQUFDQyxTQUFTLENBQUMsS0FBSyxjQUFjO0VBQUEsRUFBQztBQUNqRjtBQUVBLE9BQU8sU0FBU0sseUJBQXlCQSxDQUN2Q0MsS0FBaUUsRUFDN0I7RUFDcEMsSUFBSSxDQUFDQSxLQUFLLEVBQUUsT0FBTyxRQUFRO0VBQzNCLElBQUlsQixjQUFjLENBQUNrQixLQUFLLENBQUMsRUFBRSxPQUFPLGFBQWE7RUFDL0MsSUFBSUEsS0FBSyxDQUFDQyxJQUFJLEtBQUssT0FBTyxJQUFJRCxLQUFLLENBQUNDLElBQUksS0FBSyxjQUFjLEVBQUUsT0FBTyxPQUFPO0VBQzNFLE9BQU8sUUFBUTtBQUNqQjs7QUFFQTtBQUNBLE9BQU8sU0FBU0MseUJBQXlCQSxDQUFDRixLQUE2QyxFQUFzQjtFQUMzRyxPQUFPLENBQUFBLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFQyxJQUFJLE1BQUssT0FBTyxJQUFJLENBQUFELEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFQyxJQUFJLE1BQUssY0FBYyxHQUFHLE9BQU8sR0FBRyxRQUFRO0FBQ3ZGIiwiaWdub3JlTGlzdCI6W119
65
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc01haWFrZXJBZ2VudCIsIm5vcm1hbGl6ZUhpdGxUb29sTmFtZSIsInRvb2xOYW1lIiwibiIsInRvTG93ZXJDYXNlIiwidHJpbSIsImJ1aWxkSGl0bEFjdGlvblR5cGVMaXN0IiwiYWN0aW9ucyIsIl90b0NvbnN1bWFibGVBcnJheSIsIlNldCIsIm1hcCIsImEiLCJ0b29sX25hbWUiLCJzb3J0Iiwiam9pbiIsImhpdGxCYXRjaEluY2x1ZGVzQ3JlYXRlQWdlbnQiLCJzb21lIiwiZ2V0SGl0bEFuYWx5dGljc0FnZW50VHlwZSIsImFnZW50IiwidHlwZSIsImJ1aWxkSGl0bEFuYWx5dGljc1BheWxvYWQiLCJhZ2VudFR5cGVGb3JFdmVudCIsImFnZW50X3R5cGUiLCJhY3Rpb25fdHlwZSIsImdldEhpdGxCYXRjaEtleSIsIm9yaWdpbmFsVGhyZWFkSWQiLCJhY3Rpb24iLCJjb25jYXQiLCJ0aHJlYWRfaWQiLCJ0b29sX2NhbGxfaWQiLCJ0cmFja01hbnVhbEhpdGxFdmVudHMiLCJ0cmlnZ2VyRXZlbnQiLCJldmVudE5hbWVzIiwiYXBwcm92YWwiLCJ0cmFja2VkS2V5cyIsIl9hcHByb3ZhbCRwZW5kaW5nX2FjdCIsInBlbmRpbmdBY3Rpb25zIiwicGVuZGluZ19hY3Rpb25zIiwibGVuZ3RoIiwiYmF0Y2hLZXkiLCJvcmlnaW5hbF90aHJlYWRfaWQiLCJoYXMiLCJhZGQiLCJhZ2VudFR5cGUiLCJwYXlsb2FkIiwiaW1wcmVzc2lvbiIsIm9wdGlvbiIsIl9vYmplY3RTcHJlYWQiLCJkZWNpc2lvbiIsInJlc29sdXRpb25fc291cmNlIiwiZ2V0Q2hhdFRvb2xzTWVudUFnZW50VHlwZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9oaXRsQW5hbHl0aWNzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWdlbnQgfSBmcm9tICcuLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IGlzTWFpYWtlckFnZW50IH0gZnJvbSAnLi9hZ2VudERpc3BsYXlOYW1lJ1xuXG4vKiogQWxpbmVhZG8gY29uIFRPT0xfUEVSTUlTU0lPTl9NQVAgLyBUT09MX0RJU1BMQVlfTkFNRVMgZW4gbWFpYSAoc25ha2VfY2FzZSkuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplSGl0bFRvb2xOYW1lKHRvb2xOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBuID0gKHRvb2xOYW1lIHx8ICd1bmtub3duJykudG9Mb3dlckNhc2UoKS50cmltKClcbiAgaWYgKG4gPT09ICdhc3NpZ24nKSByZXR1cm4gJ3Rhc2tfYXNzaWduJ1xuICByZXR1cm4gblxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QoYWN0aW9uczogeyB0b29sX25hbWU6IHN0cmluZyB9W10pOiBzdHJpbmcge1xuICByZXR1cm4gWy4uLm5ldyBTZXQoYWN0aW9ucy5tYXAoYSA9PiBub3JtYWxpemVIaXRsVG9vbE5hbWUoYS50b29sX25hbWUpKSldLnNvcnQoKS5qb2luKCcsJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhpdGxCYXRjaEluY2x1ZGVzQ3JlYXRlQWdlbnQoYWN0aW9uczogeyB0b29sX25hbWU6IHN0cmluZyB9W10pOiBib29sZWFuIHtcbiAgcmV0dXJuIGFjdGlvbnMuc29tZShhID0+IG5vcm1hbGl6ZUhpdGxUb29sTmFtZShhLnRvb2xfbmFtZSkgPT09ICdjcmVhdGVfYWdlbnQnKVxufVxuXG5leHBvcnQgdHlwZSBIaXRsUmVzb2x1dGlvblNvdXJjZSA9ICd1c2VyJyB8ICdhdXRvJyB8ICdtYW51YWwnXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlKFxuICBhZ2VudDogUGljazxBZ2VudCwgJ3R5cGUnIHwgJ25hbWUnIHwgJ2VudGl0eSc+IHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogJ2Nsb25lJyB8ICdjdXN0b20nIHwgJ21hcmtldHBsYWNlJyB7XG4gIGlmICghYWdlbnQpIHJldHVybiAnY3VzdG9tJ1xuICBpZiAoaXNNYWlha2VyQWdlbnQoYWdlbnQpKSByZXR1cm4gJ21hcmtldHBsYWNlJ1xuICBpZiAoYWdlbnQudHlwZSA9PT0gJ2Nsb25lJyB8fCBhZ2VudC50eXBlID09PSAnb3JjaGVzdHJhdG9yJykgcmV0dXJuICdjbG9uZSdcbiAgcmV0dXJuICdjdXN0b20nXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEhpdGxBbmFseXRpY3NQYXlsb2FkKGFnZW50VHlwZUZvckV2ZW50OiBzdHJpbmcsIGFjdGlvbnM6IHsgdG9vbF9uYW1lOiBzdHJpbmcgfVtdKSB7XG4gIHJldHVybiB7XG4gICAgYWdlbnRfdHlwZTogYWdlbnRUeXBlRm9yRXZlbnQsXG4gICAgYWN0aW9uX3R5cGU6IGJ1aWxkSGl0bEFjdGlvblR5cGVMaXN0KGFjdGlvbnMpLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIaXRsQmF0Y2hLZXkoXG4gIG9yaWdpbmFsVGhyZWFkSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgYWN0aW9uczogQXJyYXk8eyB0aHJlYWRfaWQ/OiBzdHJpbmc7IHRvb2xfY2FsbF9pZD86IHN0cmluZyB9PlxuKTogc3RyaW5nIHtcbiAgaWYgKG9yaWdpbmFsVGhyZWFkSWQpIHJldHVybiBvcmlnaW5hbFRocmVhZElkXG4gIHJldHVybiBhY3Rpb25zXG4gICAgLm1hcChhY3Rpb24gPT4gYCR7YWN0aW9uLnRocmVhZF9pZH06JHthY3Rpb24udG9vbF9jYWxsX2lkfWApXG4gICAgLnNvcnQoKVxuICAgIC5qb2luKCd8Jylcbn1cblxuLyoqIFRyYWNrZWEgaW1wcmVzacOzbiArIGRlY2lzacOzbiBhY2NlcHQgcGFyYSBISVRMIHJlc3VlbHRvIHBvciB0ZXh0byAoc2luIEFwcHJvdmFsQm94KS4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFja01hbnVhbEhpdGxFdmVudHMoXG4gIHRyaWdnZXJFdmVudDogKGV2ZW50TmFtZTogc3RyaW5nLCBhcmdzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHZvaWQsXG4gIGV2ZW50TmFtZXM6IHsgaW1wcmVzc2lvbjogc3RyaW5nOyBvcHRpb246IHN0cmluZyB9LFxuICBhZ2VudDogUGFyYW1ldGVyczx0eXBlb2YgZ2V0SGl0bEFuYWx5dGljc0FnZW50VHlwZT5bMF0sXG4gIGFwcHJvdmFsOiB7XG4gICAgb3JpZ2luYWxfdGhyZWFkX2lkPzogc3RyaW5nXG4gICAgcGVuZGluZ19hY3Rpb25zPzogQXJyYXk8eyB0b29sX25hbWU6IHN0cmluZzsgdGhyZWFkX2lkPzogc3RyaW5nOyB0b29sX2NhbGxfaWQ/OiBzdHJpbmcgfT5cbiAgfSxcbiAgdHJhY2tlZEtleXM6IFNldDxzdHJpbmc+XG4pOiB2b2lkIHtcbiAgY29uc3QgcGVuZGluZ0FjdGlvbnMgPSBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnMgPz8gW11cbiAgaWYgKCFwZW5kaW5nQWN0aW9ucy5sZW5ndGgpIHJldHVyblxuXG4gIGNvbnN0IGJhdGNoS2V5ID0gZ2V0SGl0bEJhdGNoS2V5KGFwcHJvdmFsLm9yaWdpbmFsX3RocmVhZF9pZCwgcGVuZGluZ0FjdGlvbnMpXG4gIGlmICh0cmFja2VkS2V5cy5oYXMoYmF0Y2hLZXkpKSByZXR1cm5cbiAgdHJhY2tlZEtleXMuYWRkKGJhdGNoS2V5KVxuXG4gIGNvbnN0IGFnZW50VHlwZSA9IGdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUoYWdlbnQpXG4gIGNvbnN0IHBheWxvYWQgPSBidWlsZEhpdGxBbmFseXRpY3NQYXlsb2FkKGFnZW50VHlwZSwgcGVuZGluZ0FjdGlvbnMpXG5cbiAgdHJpZ2dlckV2ZW50KGV2ZW50TmFtZXMuaW1wcmVzc2lvbiwgcGF5bG9hZClcblxuICBpZiAoIWhpdGxCYXRjaEluY2x1ZGVzQ3JlYXRlQWdlbnQocGVuZGluZ0FjdGlvbnMpKSB7XG4gICAgdHJpZ2dlckV2ZW50KGV2ZW50TmFtZXMub3B0aW9uLCB7XG4gICAgICAuLi5wYXlsb2FkLFxuICAgICAgZGVjaXNpb246ICdhY2NlcHQnLFxuICAgICAgcmVzb2x1dGlvbl9zb3VyY2U6ICdtYW51YWwnIHNhdGlzZmllcyBIaXRsUmVzb2x1dGlvblNvdXJjZSxcbiAgICB9KVxuICB9XG59XG5cbi8qKiBQYXJhIEFJX0NIQVRfUExVU19PUEVOIHkgQUlfQ0hBVF9UT09MUyAobWVuw7ogKyBkZWwgaW5wdXQpOiBzb2xvIGBjbG9uZWAgfCBgY3VzdG9tYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGF0VG9vbHNNZW51QWdlbnRUeXBlKGFnZW50OiBQaWNrPEFnZW50LCAndHlwZSc+IHwgbnVsbCB8IHVuZGVmaW5lZCk6ICdjbG9uZScgfCAnY3VzdG9tJyB7XG4gIHJldHVybiBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyB8fCBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgPyAnY2xvbmUnIDogJ2N1c3RvbSdcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLFNBQVNBLGNBQWMsUUFBUSxvQkFBb0I7O0FBRW5EO0FBQ0EsT0FBTyxTQUFTQyxxQkFBcUJBLENBQUNDLFFBQWdCLEVBQVU7RUFDOUQsSUFBTUMsQ0FBQyxHQUFHLENBQUNELFFBQVEsSUFBSSxTQUFTLEVBQUVFLFdBQVcsQ0FBQyxDQUFDLENBQUNDLElBQUksQ0FBQyxDQUFDO0VBQ3RELElBQUlGLENBQUMsS0FBSyxRQUFRLEVBQUUsT0FBTyxhQUFhO0VBQ3hDLE9BQU9BLENBQUM7QUFDVjtBQUVBLE9BQU8sU0FBU0csdUJBQXVCQSxDQUFDQyxPQUFnQyxFQUFVO0VBQ2hGLE9BQU9DLGtCQUFBLENBQUksSUFBSUMsR0FBRyxDQUFDRixPQUFPLENBQUNHLEdBQUcsQ0FBQyxVQUFBQyxDQUFDO0lBQUEsT0FBSVYscUJBQXFCLENBQUNVLENBQUMsQ0FBQ0MsU0FBUyxDQUFDO0VBQUEsRUFBQyxDQUFDLEVBQUVDLElBQUksQ0FBQyxDQUFDLENBQUNDLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDNUY7QUFFQSxPQUFPLFNBQVNDLDRCQUE0QkEsQ0FBQ1IsT0FBZ0MsRUFBVztFQUN0RixPQUFPQSxPQUFPLENBQUNTLElBQUksQ0FBQyxVQUFBTCxD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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectcor/maia-components",
3
- "version": "2.11.107",
3
+ "version": "2.11.108",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "repository": {