@projectcor/maia-components 2.30.1-0 → 2.30.3-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/atoms/ContextMentionChip/buildChipElement.js +1 -12
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +5 -127
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +29 -2
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +33 -24
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +19 -2
- package/lib/components/atoms/MAIAInput/MAIAInput.js +17 -192
- package/lib/components/atoms/MAIAInput/styles.js +11 -15
- package/lib/components/atoms/icons/SkillsNavIcon.js +7 -4
- package/lib/components/atoms/icons/index.js +1 -5
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +4 -91
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -5
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +32 -2
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +292 -70
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +5 -10
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +239 -312
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +104 -128
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +3 -1
- package/lib/components/molecules/Sidebar/Sidebar.js +44 -22
- package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +2 -2
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +5 -34
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +1 -8
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +185 -338
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +66 -122
- package/lib/components/organisms/ChatAI/ChatAI.js +21 -8
- package/lib/constants/config.js +4 -1
- package/lib/constants/permissions/utils.js +3 -3
- package/lib/hooks/useAgentModel/useCreateAgent.js +14 -61
- package/lib/hooks/useAgentModel/useUpdateAgent.js +11 -58
- package/lib/hooks/useContextMentions.js +56 -93
- package/lib/hooks/useEntitySearch.js +278 -92
- package/lib/hooks/useEvent.js +1 -2
- package/lib/hooks/useMentionAllowedTypes.js +25 -9
- package/lib/hooks/useMentionPopover.js +33 -9
- package/lib/lang/br/index.js +9 -41
- package/lib/lang/en/index.js +9 -41
- package/lib/lang/es/index.js +10 -42
- package/lib/lang/fr/index.js +9 -41
- package/lib/services/maia/Agents/getAgents.js +25 -21
- package/lib/services/maia/Skills/createSkill.js +1 -1
- package/lib/services/maia/Skills/getSkills.js +40 -70
- package/lib/services/maia/Skills/updateSkill.js +1 -1
- package/lib/store/maiaLastChatPersistence.js +3 -4
- package/lib/store/maiaPanelSessionPersistence.js +74 -0
- package/lib/types/agentModal.js +1 -1
- package/lib/types/skill.js +1 -1
- package/lib/utils/contextMentionTriggers.js +5 -2
- package/lib/utils/normalizeAgentConnectors.js +3 -28
- package/lib/utils/renderContextMentions.js +18 -39
- package/package.json +1 -1
- package/lib/components/atoms/SkillsDropdown/SkillsDropdown.js +0 -208
- package/lib/components/atoms/SkillsDropdown/SkillsDropdown.styles.js +0 -77
- package/lib/components/atoms/SkillsDropdown/index.js +0 -2
- package/lib/components/atoms/icons/PlusIcon.js +0 -29
- package/lib/components/atoms/icons/SkillCreatedByIcon.js +0 -20
- package/lib/components/atoms/icons/SkillVisibilityEveryoneIcon.js +0 -23
- package/lib/components/atoms/icons/SkillVisibilityOnlyMeIcon.js +0 -23
- package/lib/hooks/useSkillsCatalog.js +0 -66
- package/lib/services/maia/Agents/connectors.js +0 -250
|
@@ -47,8 +47,7 @@ import { DeleteQuestionModal } from '../DeleteQuestionModal/DeleteQuestionModal'
|
|
|
47
47
|
import { useMaiaTaskPanelZIndex } from '../../../hooks/useMaiaTaskPanelZIndex';
|
|
48
48
|
import { useAccessClient } from '../../../hooks/useAccessClient/useAccessClient';
|
|
49
49
|
import { useToggleFavorite } from '../../../hooks';
|
|
50
|
-
import {
|
|
51
|
-
import { getAgentConnectors } from '../../../services/maia/Agents/connectors';
|
|
50
|
+
import { deriveTaskAccessFromToolGroupSlugs } from '../../../utils/normalizeAgentConnectors';
|
|
52
51
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
53
52
|
var initialValues = Object.freeze({
|
|
54
53
|
isEditing: false,
|
|
@@ -68,8 +67,7 @@ var initialValues = Object.freeze({
|
|
|
68
67
|
accessibility: {
|
|
69
68
|
accessType: 'company',
|
|
70
69
|
clients: null,
|
|
71
|
-
taskAccess: true
|
|
72
|
-
selectedConnectors: []
|
|
70
|
+
taskAccess: true
|
|
73
71
|
}
|
|
74
72
|
});
|
|
75
73
|
export var SectionByKey = {
|
|
@@ -134,8 +132,7 @@ function buildEditingModalValuesFromAgentDetail(agentById, agentModels, prev) {
|
|
|
134
132
|
is_deleted: (_client$is_deleted = client.is_deleted) !== null && _client$is_deleted !== void 0 ? _client$is_deleted : false
|
|
135
133
|
};
|
|
136
134
|
})) || null,
|
|
137
|
-
taskAccess: deriveTaskAccessFromToolGroupSlugs(agentById.toolGroupSlugs)
|
|
138
|
-
selectedConnectors: []
|
|
135
|
+
taskAccess: deriveTaskAccessFromToolGroupSlugs(agentById.toolGroupSlugs)
|
|
139
136
|
}
|
|
140
137
|
});
|
|
141
138
|
}
|
|
@@ -279,12 +276,7 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
|
|
|
279
276
|
var accessTypeSame = modalValues.accessibility.accessType === firstValueAgent.current.accessibility.accessType;
|
|
280
277
|
var clientsSame = areClientsArraysEqual(modalValues.accessibility.clients, firstValueAgent.current.accessibility.clients);
|
|
281
278
|
var taskAccessSame = ((_modalValues$accessib = modalValues.accessibility.taskAccess) !== null && _modalValues$accessib !== void 0 ? _modalValues$accessib : true) === ((_firstValueAgent$curr2 = firstValueAgent.current.accessibility.taskAccess) !== null && _firstValueAgent$curr2 !== void 0 ? _firstValueAgent$curr2 : true);
|
|
282
|
-
|
|
283
|
-
var originalConnectors = _toConsumableArray(firstValueAgent.current.accessibility.selectedConnectors || []).sort();
|
|
284
|
-
var connectorsSame = currentConnectors.length === originalConnectors.length && currentConnectors.every(function (slug, index) {
|
|
285
|
-
return slug === originalConnectors[index];
|
|
286
|
-
});
|
|
287
|
-
return !accessTypeSame || !clientsSame || !taskAccessSame || !connectorsSame;
|
|
279
|
+
return !accessTypeSame || !clientsSame || !taskAccessSame;
|
|
288
280
|
};
|
|
289
281
|
var validateAgentValuesIsSame = function validateAgentValuesIsSame() {
|
|
290
282
|
var _firstValueAgent$curr3, _modalValues$general$, _firstValueAgent$curr4, _modalValues$knowledg, _firstValueAgent$curr5, _modalValues$knowledg2, _firstValueAgent$curr6, _actionsToFiles$curre, _actionsToFiles$curre2;
|
|
@@ -1170,27 +1162,6 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
|
|
|
1170
1162
|
setSection(pendingInitialSectionRef.current);
|
|
1171
1163
|
pendingInitialSectionRef.current = null;
|
|
1172
1164
|
}
|
|
1173
|
-
var agentId = source.id;
|
|
1174
|
-
if (agentId) {
|
|
1175
|
-
getAgentConnectors(agentId.toString()).then(function (connectors) {
|
|
1176
|
-
var connected = deriveConnectedConnectorSlugs(connectors);
|
|
1177
|
-
setModalValues(function (prev) {
|
|
1178
|
-
var next = _objectSpread(_objectSpread({}, prev), {}, {
|
|
1179
|
-
accessibility: _objectSpread(_objectSpread({}, prev.accessibility), {}, {
|
|
1180
|
-
selectedConnectors: connected
|
|
1181
|
-
})
|
|
1182
|
-
});
|
|
1183
|
-
firstValueAgent.current = _objectSpread(_objectSpread({}, firstValueAgent.current), {}, {
|
|
1184
|
-
accessibility: _objectSpread(_objectSpread({}, firstValueAgent.current.accessibility), {}, {
|
|
1185
|
-
selectedConnectors: connected
|
|
1186
|
-
})
|
|
1187
|
-
});
|
|
1188
|
-
return next;
|
|
1189
|
-
});
|
|
1190
|
-
})["catch"](function (error) {
|
|
1191
|
-
console.error('Error fetching agent connectors:', error);
|
|
1192
|
-
});
|
|
1193
|
-
}
|
|
1194
1165
|
return true;
|
|
1195
1166
|
};
|
|
1196
1167
|
var prefetched = prefetchedAgentByIdRef.current;
|
|
@@ -1446,4 +1417,4 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
|
|
|
1446
1417
|
})]
|
|
1447
1418
|
}), selector);
|
|
1448
1419
|
};
|
|
1449
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJ1c2VDYWxsYmFjayIsImNyZWF0ZVBvcnRhbCIsInVzZVRyYW5zbGF0aW9uIiwiQ1VCdXR0b24iLCJDYXRlZ29yeSIsIkFsZXJ0IiwiVHJhc2giLCJTdGFyIiwiQ3Jvc3MiLCJTcGlubmVyTG90dGllIiwiVG9vbHRpcCIsIkFibUFjY2Vzc2liaWxpdHlTZWN0aW9uIiwiQmFja2Ryb3AiLCJ1c2VVc2VyIiwiQWNjZXNzaWJpbGl0eUljb24iLCJCcmFpbkljb24iLCJ1c2VBZ2VudE1vZGVsIiwidXNlR2V0QWdlbnRCeUlkIiwiQWJtR2VuZXJhbFNlY3Rpb24iLCJBYm1Lbm93bGVkZ2VTZWN0aW9uIiwiU0NBQU1Db250ZW50IiwiU0NBQU1Gb290ZXIiLCJTQ0FBTUhlYWRlciIsIlNDQUFNSGVhZGVyVGl0bGUiLCJTQ0FBTUhlYWRlckxlZnQiLCJTQ0FBTUhlYWRlckZhdm9yaXRlIiwiU0NBQU1IZWFkZXJDbG9zZUJ1dHRvbiIsIlNDQUFNU2lkZWJhciIsIlNDQUFNV3JhcHBlciIsIlNDQUFNU2lkZWJhckl0ZW0iLCJTQ0FBTVNpZGViYXJJdGVtVGl0bGUiLCJTQ0FBTURlbGV0ZUJ1dHRvbiIsIlNDQUFNU2F2ZUJ1dHRvbiIsIlNDQUFNV3JhcHBlclNwaW5uZXIiLCJTQ0FBTVdyYXBwZXJTcGlubmVyQ29udGVudCIsIlNDQUFNU2lkZWJhckl0ZW1FcnJvciIsInVzZUNyZWF0ZUFnZW50IiwidXNlRGVsZXRlQWdlbnQiLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJ1c2VHbG9iYWxDb250ZXh0IiwidXNlVXBkYXRlQWdlbnQiLCJ1c2VLbm93bGVkZ2VPcGVyYXRpb25zIiwiQWJtTG9hZGVyRmlsZXMiLCJXcmFwcGVyQ2VudGVySWNvbiIsIkVWRU5UUyIsInVzZUV2ZW50IiwiRGVsZXRlUXVlc3Rpb25Nb2RhbCIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJ1c2VBY2Nlc3NDbGllbnQiLCJ1c2VUb2dnbGVGYXZvcml0ZSIsImRlcml2ZUNvbm5lY3RlZENvbm5lY3RvclNsdWdzIiwiZGVyaXZlVGFza0FjY2Vzc0Zyb21Ub29sR3JvdXBTbHVncyIsImdldEFnZW50Q29ubmVjdG9ycyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImluaXRpYWxWYWx1ZXMiLCJPYmplY3QiLCJmcmVlemUiLCJpc0VkaXRpbmciLCJrbm93bGVkZ2UiLCJnZW5lcmFsIiwibmFtZSIsImVtb2ppIiwiaW50cm9kdWN0aW9uIiwiaW5wdXRQbGFjZWhvbGRlciIsImlzQWN0aXZlIiwiYWlNb2RlbCIsImlkIiwidXNlclByb21wdCIsImtub3dsZWRnZUJhc2VzIiwiaXNfZmF2b3JpdGUiLCJhY2Nlc3NpYmlsaXR5IiwiYWNjZXNzVHlwZSIsImNsaWVudHMiLCJ0YXNrQWNjZXNzIiwic2VsZWN0ZWRDb25uZWN0b3JzIiwiU2VjdGlvbkJ5S2V5IiwicHJvcHMiLCJfb2JqZWN0U3ByZWFkIiwidmFsaWRhdGVGaWVsZFZhbHVlcyIsInZhbHVlVG9WYWxpZGF0ZSIsImJ1aWxkRWRpdGluZ01vZGFsVmFsdWVzRnJvbUFnZW50RGV0YWlsIiwiYWdlbnRCeUlkIiwiYWdlbnRNb2RlbHMiLCJwcmV2IiwiX2FnZW50QnlJZCRrbm93bGVkZ2VCIiwiX2FnZW50QnlJZCRjbGllbnRzIiwiYWdlbnRNb2RlbCIsImZpbmQiLCJtb2RlbCIsIm1vZGVsQWlJZCIsImNyZWF0ZWRfYnkiLCJjcmVhdGVkQnkiLCJtYXAiLCJrIiwiZmlsZSIsIkZpbGUiLCJmaWxlbmFtZSIsInRvU3RyaW5nIiwic2l6ZSIsImZpbGVfc2l6ZV9ieXRlcyIsInR5cGUiLCJvcmlnaW5hbF9maWxlX3R5cGUiLCJzdGF0dXMiLCJ1cmxfb3JpZ2luYWwiLCJ1bmRlZmluZWQiLCJ1cmxfdGh1bWJuYWlsIiwiYWNjZXNzIiwiY2xpZW50IiwiX2NsaWVudCRpZCIsIl9jbGllbnQkaXNfYWN0aXZlIiwiX2NsaWVudCRpc19kZWxldGVkIiwiaXNfYWN0aXZlIiwiaXNfZGVsZXRlZCIsInRvb2xHcm91cFNsdWdzIiwiQWJtQWdlbnRNb2RhbCIsIl9yZWYiLCJfdXNlciRwZXJtaXNzaW9ucyIsIl9tb2RhbFZhbHVlcyRhY2Nlc3NpYjMiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbDMiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbDQiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbDUiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbDYiLCJhZGRBZ2VudCIsInVwZGF0ZUFnZW50IiwicmVtb3ZlQWdlbnQiLCJ1cGRhdGVBZ2VudEZhdm9yaXRlIiwic2VsZWN0Rmlyc3RBZ2VudCIsInVzZXIiLCJldmVudEFtcGxpdHVkZSIsIl91c2VUcmFuc2xhdGlvbiIsInQiLCJfdXNlR2xvYmFsQ29udGV4dCIsImN1cnJlbnRTZWxlY3RlZEFnZW50IiwiYWdlbnQiLCJzZWxlY3RBZ2VudCIsImFibUFnZW50TW9kYWxaSW5kZXgiLCJ0b29sdGlwWkluZGV4IiwiX3VzZVRvZ2dsZUZhdm9yaXRlIiwidG9nZ2xlRmF2b3JpdGUiLCJzZWxlY3RvciIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJpc1N1YnNjcmliZWQiLCJzZXRJc1N1YnNjcmliZWQiLCJtb2RhbFJlZiIsImhhc1BlbmRpbmdGaWxlc1JlZiIsImFjdGlvbnNUb0ZpbGVzIiwidG9EZWxldGUiLCJ0b1VwbG9hZCIsImFjY2Vzc1VwZGF0ZUNvbnRleHQiLCJpc0Zyb21DcmVhdGlvbiIsImlzRnJvbUVkaXRpbmciLCJoYXNBY3Rpb25GaWxlcyIsIm9wZXJhdGlvblR5cGUiLCJoYXNCZWVuQ2FsbGVkIiwiYWNjZXNzSGFuZGxlZFJlZiIsImFnZW50Q3JlYXRlZFJlZiIsInBlbmRpbmdJbml0aWFsU2VjdGlvblJlZiIsInByZWZldGNoZWRBZ2VudEJ5SWRSZWYiLCJmaWxlc0ZpbmlzaGVkUmVmIiwicHJvY2Vzc0ZpbGVzVGltZWRPdXRSZWYiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImZpbGVzUHJvY2Vzc2VkIiwic2V0RmlsZXNQcm9jZXNzZWQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzT3BlbiIsInNldElzT3BlbiIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2hvd01vZGFsRGVsZXRlIiwic2V0U2hvd01vZGFsRGVsZXRlIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJzZWN0aW9uIiwic2V0U2VjdGlvbiIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsImlzTG9hZGluZyIsInNldElzTG9hZGluZyIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJtb2RhbFZhbHVlcyIsInNldE1vZGFsVmFsdWVzIiwiX3VzZUdldEFnZW50QnlJZCIsImFnZW50TG9hZGluZyIsImxvYWRpbmciLCJoYW5kbGVHZXRBZ2VudEJ5SWQiLCJoYW5kbGVDbGVhbkFnZW50IiwiZXJyb3JHZXRBZ2VudEJ5SWQiLCJlcnJvciIsIl91c2VBZ2VudE1vZGVsIiwiZ2V0QWxsQWdlbnRNb2RlbHMiLCJmaXJzdFZhbHVlQWdlbnQiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwiaXNTaG93UHJvY2Vzc0ZpbGVzIiwic2V0SXNTaG93UHJvY2Vzc0ZpbGVzIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImhhc0ZpbGVFcnJvcnMiLCJzZXRIYXNGaWxlRXJyb3JzIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJfdXNlRGVsZXRlQWdlbnQiLCJoYW5kbGVEZWxldGVBZ2VudCIsInN1Y2Nlc3NEZWxldGUiLCJzdWNjZXNzIiwicmVzZXRTdWNjZXNzIiwiX3VzZVVwZGF0ZUFnZW50IiwiaGFuZGxlVXBkYXRlQWdlbnQiLCJzdWNjZXNzVXBkYXRlIiwicmVzZXRTdWNjZXNzVXBkYXRlIiwiX3VzZUNyZWF0ZUFnZW50IiwiaGFuZGxlQ3JlYXRlQWdlbnQiLCJpc0xvYWRpbmdDcmVhdGUiLCJzdWNjZXNzQ3JlYXRlIiwicmVzZXRTdWNjZXNzQ3JlYXRlIiwiX3VzZVNuYWNrQmFyTWFuYWdlciIsImhhbmRsZVNuYWNrYmFyU3VjY2VzcyIsImhhbmRsZVNuYWNrYmFyRXJyb3IiLCJfdXNlS25vd2xlZGdlT3BlcmF0aW8iLCJoYW5kbGVDcmVhdGVLbm93bGVkZ2VzIiwiaGFuZGxlRGVsZXRlS25vd2xlZGdlcyIsImhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMiLCJpc0xvYWRpbmdLbm93bGVkZ2UiLCJlcnJvcktub3dsZWRnZSIsInN1Y2Nlc3NLbm93bGVkZ2VEZWxldGUiLCJoYW5kbGVSZXNldFN1Y2Nlc3NTYXZlIiwiaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlIiwiX3VzZUFjY2Vzc0NsaWVudCIsImhhbmRsZUFjY2Vzc0NsaWVudCIsInN1Y2Nlc3NVcGRhdGVBY2Nlc3MiLCJpc0xvYWRpbmdVcGRhdGVBY2Nlc3MiLCJyZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MiLCJoYW5kbGVSZXNldFN1Y2Nlc3MiLCJhcmVDbGllbnRzQXJyYXlzRXF1YWwiLCJjbGllbnRzMSIsImNsaWVudHMyIiwibGVuZ3RoIiwiY2xpZW50czFJZHMiLCJjIiwiY2xpZW50SWQiLCJzb3J0IiwiY2xpZW50czJJZHMiLCJldmVyeSIsImluZGV4IiwiaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQiLCJfZmlyc3RWYWx1ZUFnZW50JGN1cnIiLCJfbW9kYWxWYWx1ZXMkYWNjZXNzaWIiLCJfZmlyc3RWYWx1ZUFnZW50JGN1cnIyIiwiY3VycmVudCIsImFjY2Vzc1R5cGVTYW1lIiwiY2xpZW50c1NhbWUiLCJ0YXNrQWNjZXNzU2FtZSIsImN1cnJlbnRDb25uZWN0b3JzIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwib3JpZ2luYWxDb25uZWN0b3JzIiwiY29ubmVjdG9yc1NhbWUiLCJzbHVnIiwidmFsaWRhdGVBZ2VudFZhbHVlc0lzU2FtZSIsIl9maXJzdFZhbHVlQWdlbnQkY3VycjMiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbCQiLCJfZmlyc3RWYWx1ZUFnZW50JGN1cnI0IiwiX21vZGFsVmFsdWVzJGtub3dsZWRnIiwiX2ZpcnN0VmFsdWVBZ2VudCRjdXJyNSIsIl9tb2RhbFZhbHVlcyRrbm93bGVkZzIiLCJfZmlyc3RWYWx1ZUFnZW50JGN1cnI2IiwiX2FjdGlvbnNUb0ZpbGVzJGN1cnJlIiwiX2FjdGlvbnNUb0ZpbGVzJGN1cnJlMiIsInRvVXBkYXRlIiwiaGFzQW55VmFsdWVGb3JDcmVhdGlvbiIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsJDIiLCJfYWdlbnRNb2RlbHMkIiwiX21vZGFsVmFsdWVzJGdlbmVyYWwkMyIsImlzRGVmYXVsdEFpTW9kZWwiLCJkZWZhdWx0SW5wdXRQbGFjZWhvbGRlciIsImlzRGVmYXVsdElucHV0UGxhY2Vob2xkZXIiLCJkZWZhdWx0VXNlclByb21wdFBsYWNlaG9sZGVyIiwiaXNEZWZhdWx0VXNlclByb21wdCIsImhhc05hbWUiLCJ0cmltIiwiaGFzRW1vamkiLCJoYXNJbnRyb2R1Y3Rpb24iLCJoYXNJbnB1dFBsYWNlaG9sZGVyIiwiaGFzVXNlclByb21wdCIsImhhc0tub3dsZWRnZSIsImhhc0N1c3RvbUFpTW9kZWwiLCJoYXNBY2Nlc3NpYmlsaXR5IiwiaGFzQ2hhbmdlc0ZvckVkaXRpbmciLCJoYXNQZW5kaW5nQ2hhbmdlcyIsImhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQiLCJhZ2VudElkIiwib25TdWNjZXNzIiwib25FcnJvciIsInVwZGF0ZWRBZ2VudCIsImhhbmRsZUNsb3NlIiwiY29uZmlybU1lc3NhZ2UiLCJ3aW5kb3ciLCJjb25maXJtIiwiaGFuZGxlQmFja2Ryb3BDbGljayIsImV2ZW50IiwidGFyZ2V0IiwiY3VycmVudFRhcmdldCIsImhhbmRsZVNlY3Rpb25DaGFuZ2UiLCJuZXdTZWN0aW9uIiwidGFiU2VjdGlvbiIsIm9wdGlvbiIsImhhbmRsZVNldEFnZW50VmFsdWVzQnlLZXlzIiwiX3JlZjIiLCJrZXkiLCJ2YWx1ZSIsImRlbGV0ZUtub3dsZWRnZSIsIl9hY3Rpb25zVG9GaWxlcyRjdXJyZTMiLCJwdXNoIiwiYXBwbHkiLCJmaWxlc1ByZXZJZHMiLCJTZXQiLCJuZXdGaWxlcyIsImZpbHRlciIsImhhcyIsInZhbHVlSWRzIiwiY29uY2F0Iiwia25vd2xlZGdlRmlsZXMiLCJfZGVmaW5lUHJvcGVydHkiLCJoYW5kbGVDb25maXJtQWN0aW9uIiwiX3JlZjMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImNoYXQiLCJhY3Rpb24iLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsImFicnVwdCIsImNvbmZpcm1BY3Rpb24iLCJzdG9wIiwiX3giLCJfeDIiLCJhcmd1bWVudHMiLCJoYW5kbGVTZXRBZ2VudFZhbHVlcyIsIl9hZ2VudFZhbHVlcyR2YWx1ZXMiLCJfYWdlbnRWYWx1ZXMkdmFsdWVzMyIsImFnZW50VmFsdWVzIiwiZGV0YWlsIiwiaW5pdGlhbFNlY3Rpb24iLCJpbmNsdWRlcyIsInZhbHVlcyIsIl9hZ2VudFZhbHVlcyR2YWx1ZXMyIiwicHJlZmV0Y2hlZEFnZW50QnlJZCIsIm5leHRWYWx1ZXMiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIl9kb2N1bWVudCIsImJvZHkiLCJvcmlnaW5hbE92ZXJmbG93Iiwic3R5bGUiLCJvdmVyZmxvdyIsImhhbmRsZUJlZm9yZVVubG9hZCIsInByZXZlbnREZWZhdWx0IiwicmV0dXJuVmFsdWUiLCJwcm9taXNlcyIsImZpbGVzVG9EZWxldGUiLCJmaWxlc1RvQ3JlYXRlIiwiYWdlbnRXaXRoRmF2b3JpdGUiLCJhZ2VudEZvclRvZ2dsZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiYWxsIiwiZmlsZXMiLCJhaUNoYXRGYXZvcml0ZSIsImZpbGVzVG9VcGxvYWQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJoYW5kbGVQcm9jZXNzRmlsZXNUaW1lb3V0Iiwid2ViU29ja2V0RnVuY3Rpb24iLCJfcmVmNCIsIm1vZGVsRGF0YSIsIm1vZGVsX2RhdGEiLCJmaWxlU3RhdHVzIiwidXBkYXRlZEtub3dsZWRnZSIsImtub3dsZWRnZV9iYXNlX2lkIiwiaGFzUGVuZGluZ0ZpbGVzIiwic29tZSIsImhhc0Vycm9yRmlsZXMiLCJwcmV2Q291bnQiLCJjb250ZXh0IiwiYWdlbnRUb0FkZCIsIl9zdWNjZXNzQ3JlYXRlJGlkIiwiY2hhbm5lbCIsIiRfc2MiLCJfJF9zYyIsInN1YnNjcmliZUhhbmRsZXIiLCJfJF9zYzIiLCJfJF9zYzMiLCJfJF9zYyRjaGFubmVsVHlwZSIsIm1vZGVsX2hhc2giLCJhY3Rpb25UeXBlIiwiU1VCU0NSSUJFIiwidXBkYXRlQ29ubmVjdGlvbk1vZGVsIiwiY2hhbm5lbFR5cGUiLCJNT0RFTF9DSEFOTkVMIiwiYXBwbHlFZGl0aW5nQWdlbnQiLCJzb3VyY2UiLCJzZXRUaW1lb3V0IiwiYWdlbnRWYWx1ZXNUb1NldCIsInRoZW4iLCJjb25uZWN0b3JzIiwiY29ubmVjdGVkIiwiY29uc29sZSIsInByZWZldGNoZWQiLCJzaG91bGREaXNhYmxlU2F2ZUZvckNsaWVudHMiLCJfbW9kYWxWYWx1ZXMkYWNjZXNzaWIyIiwiaGFuZGxlVG9nZ2xlRmF2b3JpdGUiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbCIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsMiIsImNyZWF0ZSIsImVkaXQiLCJ6SW5kZXgiLCJvbkNsaWNrIiwiY2hpbGRyZW4iLCJyZWYiLCJ0YWJJbmRleCIsImNvbG9yIiwiYXR0YWNobWVudHMiLCJsYWJlbCIsIm9uVGltZW91dCIsInRpdGxlIiwid2lkdGgiLCJoZWlnaHQiLCJmaWxsIiwidmFyaWFudCIsImNsYXNzTmFtZSIsImNhbmNlbE1vZGFsIiwiZGlzYWJsZWQiLCJoYXNTY3JvbGwiLCIkaW5kZXgiLCJleGlzdGluZ0tub3dsZWRnZSIsIm5ld0tub3dsZWRnZSIsIm9uUmVtb3ZlRXhpc3RpbmdLbm93bGVkZ2UiLCJvblJlbW92ZU5ld0tub3dsZWRnZSIsIm9uRmlsZUVycm9yQ2hhbmdlIiwiY2hpbGRyZW5XaXRoSWNvbiIsImRpc3BsYXkiLCJnYXAiLCJpc0Rpc2FibGVkIiwib25DbG9zZSIsImhhbmRsZXJzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvb3JnYW5pc21zL0FibUFnZW50TW9kYWwvQWJtQWdlbnRNb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tYWxlcnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1jeWNsZSAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LW5vLXVzZWxlc3MtZnJhZ21lbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcblxuaW1wb3J0IHsgQ1VCdXR0b24gfSBmcm9tICdAcHJvamVjdGNvci9idXR0b24vbGliL2NvbXBvbmVudHMvQ1VCdXR0b24nXG5pbXBvcnQgeyBDYXRlZ29yeSB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NhdGVnb3J5J1xuaW1wb3J0IHsgQWxlcnQgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9BbGVydCdcbmltcG9ydCB7IFRyYXNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvVHJhc2gnXG5pbXBvcnQgeyBTdGFyIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvU3RhcidcbmltcG9ydCB7IENyb3NzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ3Jvc3MnXG5pbXBvcnQgeyBTcGlubmVyTG90dGllIH0gZnJvbSAnQHByb2plY3Rjb3IvY29yLWNvbW1vbnMvbGliL2NvbXBvbmVudHMvc3Bpbm5lci1sb3R0aWUnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5pbXBvcnQgeyBBYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbiB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9BYm1TZWN0aW9uL0FibUFjY2Vzc2liaWxpdHlTZWN0aW9uL0FibUFjY2Vzc2liaWxpdHlTZWN0aW9uJ1xuaW1wb3J0IHsgQmFja2Ryb3AgfSBmcm9tICcuLi8uLi9hdG9tcy9CYWNrZHJvcCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgQWNjZXNzaWJpbGl0eUljb24sIEJyYWluSWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgdXNlQWdlbnRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUFnZW50TW9kZWwvdXNlQWdlbnRNb2RlbCdcbmltcG9ydCB7IEFnZW50LCBBZ2VudE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyB1c2VHZXRBZ2VudEJ5SWQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9nZXRBZ2VudEJ5SWQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBBYm1HZW5lcmFsU2VjdGlvbiwgQWJtS25vd2xlZGdlU2VjdGlvbiB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9BYm1TZWN0aW9uJ1xuaW1wb3J0IHsgTW9kYWxWYWx1ZXMgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudE1vZGFsJ1xuaW1wb3J0IHtcbiAgU0NBQU1Db250ZW50LFxuICBTQ0FBTUZvb3RlcixcbiAgU0NBQU1IZWFkZXIsXG4gIFNDQUFNSGVhZGVyVGl0bGUsXG4gIFNDQUFNSGVhZGVyTGVmdCxcbiAgU0NBQU1IZWFkZXJGYXZvcml0ZSxcbiAgU0NBQU1IZWFkZXJDbG9zZUJ1dHRvbixcbiAgU0NBQU1TaWRlYmFyLFxuICBTQ0FBTVdyYXBwZXIsXG4gIFNDQUFNU2lkZWJhckl0ZW0sXG4gIFNDQUFNU2lkZWJhckl0ZW1UaXRsZSxcbiAgU0NBQU1EZWxldGVCdXR0b24sXG4gIFNDQUFNU2F2ZUJ1dHRvbixcbiAgU0NBQU1XcmFwcGVyU3Bpbm5lcixcbiAgU0NBQU1XcmFwcGVyU3Bpbm5lckNvbnRlbnQsXG4gIFNDQUFNU2lkZWJhckl0ZW1FcnJvcixcbn0gZnJvbSAnLi9BYm1BZ2VudE1vZGFsLnN0eWxlcydcbmltcG9ydCB7IHVzZUNyZWF0ZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQWdlbnRNb2RlbC91c2VDcmVhdGVBZ2VudCdcbmltcG9ydCB7IHVzZURlbGV0ZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQWdlbnRNb2RlbC91c2VEZWxldGVBZ2VudCdcbmltcG9ydCB7IHVzZVNuYWNrQmFyTWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNuYWNrQmFyTWFuYWdlci91c2VTbmFja0Jhck1hbmFnZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVVwZGF0ZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQWdlbnRNb2RlbC91c2VVcGRhdGVBZ2VudCdcbmltcG9ydCB7IHVzZUtub3dsZWRnZU9wZXJhdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VLbm93bGVkZ2UnXG5pbXBvcnQgeyBBYm1Mb2FkZXJGaWxlcyB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9BYm1TZWN0aW9uL0FibUxvYWRlckZpbGVzJ1xuaW1wb3J0IHsgV3JhcHBlckNlbnRlckljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9XcmFwcGVyQ2VudGVySWNvbidcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IERlbGV0ZVF1ZXN0aW9uTW9kYWwgfSBmcm9tICcuLi9EZWxldGVRdWVzdGlvbk1vZGFsL0RlbGV0ZVF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcbmltcG9ydCB7IHVzZUFjY2Vzc0NsaWVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUFjY2Vzc0NsaWVudC91c2VBY2Nlc3NDbGllbnQnXG5pbXBvcnQgeyB1c2VUb2dnbGVGYXZvcml0ZSB9IGZyb20gJy4uLy4uLy4uL2hvb2tzJ1xuaW1wb3J0IHsgZGVyaXZlQ29ubmVjdGVkQ29ubmVjdG9yU2x1Z3MsIGRlcml2ZVRhc2tBY2Nlc3NGcm9tVG9vbEdyb3VwU2x1Z3MgfSBmcm9tICcuLi8uLi8uLi91dGlscy9ub3JtYWxpemVBZ2VudENvbm5lY3RvcnMnXG5pbXBvcnQgeyBnZXRBZ2VudENvbm5lY3RvcnMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9jb25uZWN0b3JzJ1xuXG5jb25zdCBpbml0aWFsVmFsdWVzID0gT2JqZWN0LmZyZWV6ZSh7XG4gIGlzRWRpdGluZzogZmFsc2UsXG4gIGtub3dsZWRnZTogW10sXG4gIGdlbmVyYWw6IHtcbiAgICBuYW1lOiAnJyxcbiAgICBlbW9qaTogJycsXG4gICAgaW50cm9kdWN0aW9uOiAnJyxcbiAgICBpbnB1dFBsYWNlaG9sZGVyOiAnJyxcbiAgICBpc0FjdGl2ZTogZmFsc2UsXG4gICAgYWlNb2RlbDogbnVsbCxcbiAgICBpZDogbnVsbCxcbiAgICB1c2VyUHJvbXB0OiBudWxsLFxuICAgIGtub3dsZWRnZUJhc2VzOiBbXSxcbiAgICBpc19mYXZvcml0ZTogZmFsc2UsXG4gIH0sXG4gIGFjY2Vzc2liaWxpdHk6IHtcbiAgICBhY2Nlc3NUeXBlOiAnY29tcGFueScsXG4gICAgY2xpZW50czogbnVsbCxcbiAgICB0YXNrQWNjZXNzOiB0cnVlLFxuICAgIHNlbGVjdGVkQ29ubmVjdG9yczogW10sXG4gIH0sXG59KVxuXG50eXBlIEFibVNlY3Rpb24gPSAnZ2VuZXJhbCcgfCAna25vd2xlZGdlJyB8ICd0cmFpbmluZycgfCAndGVzdGluZycgfCAnYWNjZXNzaWJpbGl0eSdcblxuZXhwb3J0IGNvbnN0IFNlY3Rpb25CeUtleSA9IHtcbiAgZ2VuZXJhbDogKHByb3BzOiB7XG4gICAgdmFsdWVzOiBNb2RhbFZhbHVlc1xuICAgIGhhbmRsZVNldEFnZW50VmFsdWVzOiAoe1xuICAgICAga2V5LFxuICAgICAgdmFsdWUsXG4gICAgICBkZWxldGVLbm93bGVkZ2UsXG4gICAgfToge1xuICAgICAga2V5OiBzdHJpbmdcbiAgICAgIHZhbHVlOiB1bmtub3duXG4gICAgICBkZWxldGVLbm93bGVkZ2U/OiBib29sZWFuXG4gICAgfSkgPT4gdm9pZFxuICAgIGFnZW50TW9kZWxzOiBBZ2VudE1vZGVsW11cbiAgICBsb2FkaW5nOiBib29sZWFuXG4gICAgdG9vbHRpcFpJbmRleD86IG51bWJlclxuICB9KSA9PiA8QWJtR2VuZXJhbFNlY3Rpb24gey4uLnByb3BzfSAvPixcbiAga25vd2xlZGdlOiAocHJvcHM6IHtcbiAgICB2YWx1ZXM6IE1vZGFsVmFsdWVzXG4gICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXM6ICh7IGtleSwgdmFsdWUgfTogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHVua25vd24gfSkgPT4gdm9pZFxuICAgIGV4aXN0aW5nS25vd2xlZGdlOiBBdHRhY2htZW50RmlsZVtdXG4gICAgbmV3S25vd2xlZGdlOiBBdHRhY2htZW50RmlsZVtdXG4gICAgb25SZW1vdmVFeGlzdGluZ0tub3dsZWRnZTogKGZpbGVJZDogc3RyaW5nKSA9PiB2b2lkXG4gICAgb25SZW1vdmVOZXdLbm93bGVkZ2U6IChmaWxlSWQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uRmlsZUVycm9yQ2hhbmdlOiAoaGFzRXJyb3JzOiBib29sZWFuKSA9PiB2b2lkXG4gICAgdG9vbHRpcFpJbmRleD86IG51bWJlclxuICB9KSA9PiA8QWJtS25vd2xlZGdlU2VjdGlvbiB7Li4ucHJvcHN9IC8+LFxuICBhY2Nlc3NpYmlsaXR5OiAocHJvcHM6IHtcbiAgICB2YWx1ZXM6IE1vZGFsVmFsdWVzXG4gICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXM6ICh7IGtleSwgdmFsdWUgfTogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHVua25vd24gfSkgPT4gdm9pZFxuICB9KSA9PiA8QWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24gey4uLnByb3BzfSAvPixcbn1cblxudHlwZSBBYm1BZ2VudE1vZGFsUHJvcHMgPSB7XG4gIGFkZEFnZW50OiAobmV3QWdlbnQ6IEFnZW50LCBvcHRpb25zPzogeyBuYXZpZ2F0ZUhvbWU/OiBib29sZWFuIH0pID0+IHZvaWRcbiAgcmVtb3ZlQWdlbnQ6IChhZ2VudElkOiBudW1iZXIgfCBzdHJpbmcpID0+IHZvaWRcbiAgdXBkYXRlQWdlbnQ6ICh1cGRhdGVkQWdlbnQ6IEFnZW50KSA9PiB2b2lkXG4gIHVwZGF0ZUFnZW50RmF2b3JpdGU6ICh1cGRhdGVkQWdlbnQ6IEFnZW50LCBzaG91bGRTb3J0PzogYm9vbGVhbikgPT4gdm9pZFxuICBzZWxlY3RGaXJzdEFnZW50OiAoYWdlbnRJZDogc3RyaW5nKSA9PiB2b2lkXG59XG5cbmNvbnN0IHZhbGlkYXRlRmllbGRWYWx1ZXMgPSAodmFsdWVUb1ZhbGlkYXRlOiBNb2RhbFZhbHVlcykgPT4ge1xuICBpZiAoIXZhbHVlVG9WYWxpZGF0ZS5nZW5lcmFsLm5hbWUgfHwgIXZhbHVlVG9WYWxpZGF0ZS5nZW5lcmFsLnVzZXJQcm9tcHQpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG4vKiogTWlzbWEgZXN0cnVjdHVyYSBxdWUgZWwgZWZlY3RvIHF1ZSBoaWRyYXRhIGRlc2RlIHVzZUdldEFnZW50QnlJZCAodG9kYXMgbGFzIHBlc3Rhw7FhcyBkZWwgQUJNKS4gKi9cbmZ1bmN0aW9uIGJ1aWxkRWRpdGluZ01vZGFsVmFsdWVzRnJvbUFnZW50RGV0YWlsKFxuICBhZ2VudEJ5SWQ6IGFueSxcbiAgYWdlbnRNb2RlbHM6IEFnZW50TW9kZWxbXSxcbiAgcHJldjogTW9kYWxWYWx1ZXNcbik6IE1vZGFsVmFsdWVzIHtcbiAgY29uc3QgYWdlbnRNb2RlbCA9IGFnZW50TW9kZWxzLmZpbmQobW9kZWwgPT4gbW9kZWwuaWQgPT09IGFnZW50QnlJZC5tb2RlbEFpSWQpXG4gIHJldHVybiB7XG4gICAgLi4ucHJldixcbiAgICBpc0VkaXRpbmc6IHRydWUsXG4gICAgZ2VuZXJhbDoge1xuICAgICAgZW1vamk6IGFnZW50QnlJZC5lbW9qaSxcbiAgICAgIG5hbWU6IGFnZW50QnlJZC5uYW1lLFxuICAgICAgaW50cm9kdWN0aW9uOiBhZ2VudEJ5SWQuaW50cm9kdWN0aW9uLFxuICAgICAgaW5wdXRQbGFjZWhvbGRlcjogYWdlbnRCeUlkLmlucHV0UGxhY2Vob2xkZXIsXG4gICAgICBpc0FjdGl2ZTogYWdlbnRCeUlkLmlzQWN0aXZlLFxuICAgICAgYWlNb2RlbDogYWdlbnRNb2RlbCB8fCBudWxsLFxuICAgICAgaWQ6IGFnZW50QnlJZC5pZCxcbiAgICAgIHVzZXJQcm9tcHQ6IGFnZW50QnlJZC51c2VyUHJvbXB0LFxuICAgICAga25vd2xlZGdlQmFzZXM6IFtdLFxuICAgICAgaXNfZmF2b3JpdGU6IGFnZW50QnlJZC5pc19mYXZvcml0ZSxcbiAgICAgIGNyZWF0ZWRfYnk6IGFnZW50QnlJZC5jcmVhdGVkQnksXG4gICAgfSxcbiAgICBrbm93bGVkZ2U6XG4gICAgICBhZ2VudEJ5SWQua25vd2xlZGdlQmFzZXM/Lm1hcCgoazogYW55KSA9PiAoe1xuICAgICAgICBmaWxlOiBuZXcgRmlsZShbXSwgay5maWxlbmFtZSksXG4gICAgICAgIGlkOiBrLmlkLnRvU3RyaW5nKCksXG4gICAgICAgIG5hbWU6IGsuZmlsZW5hbWUsXG4gICAgICAgIHNpemU6IGsuZmlsZV9zaXplX2J5dGVzIHx8IDAsXG4gICAgICAgIHR5cGU6IGsub3JpZ2luYWxfZmlsZV90eXBlLFxuICAgICAgICBzdGF0dXM6IGsuc3RhdHVzLFxuICAgICAgICB1cmxfb3JpZ2luYWw6IGsudXJsX29yaWdpbmFsIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgdXJsX3RodW1ibmFpbDogay51cmxfdGh1bWJuYWlsIHx8IHVuZGVmaW5lZCxcbiAgICAgIH0pKSB8fCBbXSxcbiAgICBhY2Nlc3NpYmlsaXR5OiB7XG4gICAgICBhY2Nlc3NUeXBlOiBhZ2VudEJ5SWQuYWNjZXNzLFxuICAgICAgY2xpZW50czpcbiAgICAgICAgYWdlbnRCeUlkLmNsaWVudHM/Lm1hcCgoY2xpZW50OiBhbnkpID0+ICh7XG4gICAgICAgICAgaWQ6IGNsaWVudC5pZD8udG9TdHJpbmcoKSB8fCAnJyxcbiAgICAgICAgICBuYW1lOiBjbGllbnQubmFtZSxcbiAgICAgICAgICBpc19hY3RpdmU6IGNsaWVudC5pc19hY3RpdmUgPz8gZmFsc2UsXG4gICAgICAgICAgaXNfZGVsZXRlZDogY2xpZW50LmlzX2RlbGV0ZWQgPz8gZmFsc2UsXG4gICAgICAgIH0pKSB8fCBudWxsLFxuICAgICAgdGFza0FjY2VzczogZGVyaXZlVGFza0FjY2Vzc0Zyb21Ub29sR3JvdXBTbHVncyhhZ2VudEJ5SWQudG9vbEdyb3VwU2x1Z3MpLFxuICAgICAgc2VsZWN0ZWRDb25uZWN0b3JzOiBbXSxcbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBBYm1BZ2VudE1vZGFsID0gKHtcbiAgYWRkQWdlbnQsXG4gIHVwZGF0ZUFnZW50LFxuICByZW1vdmVBZ2VudCxcbiAgdXBkYXRlQWdlbnRGYXZvcml0ZSxcbiAgc2VsZWN0Rmlyc3RBZ2VudCxcbn06IEFibUFnZW50TW9kYWxQcm9wcykgPT4ge1xuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IGV2ZW50QW1wbGl0dWRlID0gdXNlRXZlbnQoKVxuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCdhYm1fYWdlbnRfc2VjdGlvbicpXG4gIC8vIGNvbnN0ICRfc2M6IGFueSA9IG51bGxcbiAgY29uc3QgeyBhZ2VudDogY3VycmVudFNlbGVjdGVkQWdlbnQsIHNlbGVjdEFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgYWJtQWdlbnRNb2RhbFpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTExMiwgJ2FnZW50TW9kYWwnKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnbmVzdGVkTW9kYWwnKVxuICBjb25zdCB7IHRvZ2dsZUZhdm9yaXRlIH0gPSB1c2VUb2dnbGVGYXZvcml0ZSgpXG4gIGNvbnN0IHNlbGVjdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FibS1hZ2VudC1tb2RhbCcpXG4gIGNvbnN0IFtpc1N1YnNjcmliZWQsIHNldElzU3Vic2NyaWJlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgbW9kYWxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGhhc1BlbmRpbmdGaWxlc1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgYWN0aW9uc1RvRmlsZXMgPSB1c2VSZWY8YW55Pih7XG4gICAgdG9EZWxldGU6IFtdLFxuICAgIHRvVXBsb2FkOiBbXSxcbiAgfSlcbiAgY29uc3QgYWNjZXNzVXBkYXRlQ29udGV4dCA9IHVzZVJlZjx7XG4gICAgaXNGcm9tQ3JlYXRpb246IGJvb2xlYW5cbiAgICBpc0Zyb21FZGl0aW5nOiBib29sZWFuXG4gICAgaGFzQWN0aW9uRmlsZXM6IGJvb2xlYW5cbiAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyB8ICd1cGRhdGUnIHwgbnVsbFxuICAgIGhhc0JlZW5DYWxsZWQ/OiBib29sZWFuXG4gIH0+KHtcbiAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgIG9wZXJhdGlvblR5cGU6IG51bGwsXG4gICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gIH0pXG4gIGNvbnN0IGFjY2Vzc0hhbmRsZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGFnZW50Q3JlYXRlZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYgPSB1c2VSZWY8QWJtU2VjdGlvbiB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHByZWZldGNoZWRBZ2VudEJ5SWRSZWYgPSB1c2VSZWY8YW55PihudWxsKVxuICBjb25zdCBmaWxlc0ZpbmlzaGVkUmVmID0gdXNlUmVmKGZhbHNlKVxuICAvLyBNYXJjYSBjdWFuZG8gY2VycmFtb3MgZWwgbG9hZGVyIHBvciBlbCB0aW1lb3V0IGRlIHNlZ3VyaWRhZCBkZSBhcmNoaXZvcy5cbiAgLy8gTWllbnRyYXMgZXN0w6kgYWN0aXZvLCBsb3MgdXNlRWZmZWN0IGRlIHBvc3QtZ3VhcmRhZG8gTk8gZGViZW4gZGlzcGFyYXJcbiAgLy8gc25hY2tiYXJzIGRlIMOpeGl0byBuaSBhdXRvLWNlcnJhciBlbCBtb2RhbC5cbiAgY29uc3QgcHJvY2Vzc0ZpbGVzVGltZWRPdXRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IFtmaWxlc1Byb2Nlc3NlZCwgc2V0RmlsZXNQcm9jZXNzZWRdID0gdXNlU3RhdGUoMClcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2hvd01vZGFsRGVsZXRlLCBzZXRTaG93TW9kYWxEZWxldGVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzZWN0aW9uLCBzZXRTZWN0aW9uXSA9IHVzZVN0YXRlPEFibVNlY3Rpb24+KCdnZW5lcmFsJylcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbW9kYWxWYWx1ZXMsIHNldE1vZGFsVmFsdWVzXSA9IHVzZVN0YXRlPHtcbiAgICBnZW5lcmFsOiBhbnlcbiAgICBrbm93bGVkZ2U6IGFueVxuICAgIGlzRWRpdGluZzogYm9vbGVhblxuICAgIGFjY2Vzc2liaWxpdHk6IGFueVxuICB9Pihpbml0aWFsVmFsdWVzKVxuICBjb25zdCB7XG4gICAgbG9hZGluZzogYWdlbnRMb2FkaW5nLFxuICAgIGhhbmRsZUdldEFnZW50QnlJZCxcbiAgICBhZ2VudDogYWdlbnRCeUlkLFxuICAgIGhhbmRsZUNsZWFuQWdlbnQsXG4gICAgZXJyb3I6IGVycm9yR2V0QWdlbnRCeUlkLFxuICB9ID0gdXNlR2V0QWdlbnRCeUlkKClcbiAgY29uc3QgeyBhZ2VudE1vZGVscywgZ2V0QWxsQWdlbnRNb2RlbHMgfSA9IHVzZUFnZW50TW9kZWwoKVxuICBjb25zdCBmaXJzdFZhbHVlQWdlbnQgPSB1c2VSZWY8YW55PihudWxsKVxuICBjb25zdCBbaXNTaG93UHJvY2Vzc0ZpbGVzLCBzZXRJc1Nob3dQcm9jZXNzRmlsZXNdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtoYXNGaWxlRXJyb3JzLCBzZXRIYXNGaWxlRXJyb3JzXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcblxuICBjb25zdCB7IGhhbmRsZURlbGV0ZUFnZW50LCBzdWNjZXNzOiBzdWNjZXNzRGVsZXRlLCByZXNldFN1Y2Nlc3MgfSA9IHVzZURlbGV0ZUFnZW50KClcbiAgY29uc3QgeyBoYW5kbGVVcGRhdGVBZ2VudCwgc3VjY2Vzczogc3VjY2Vzc1VwZGF0ZSwgcmVzZXRTdWNjZXNzOiByZXNldFN1Y2Nlc3NVcGRhdGUgfSA9IHVzZVVwZGF0ZUFnZW50KClcblxuICBjb25zdCB7XG4gICAgaGFuZGxlQ3JlYXRlQWdlbnQsXG4gICAgaXNMb2FkaW5nOiBpc0xvYWRpbmdDcmVhdGUsXG4gICAgc3VjY2Vzczogc3VjY2Vzc0NyZWF0ZSxcbiAgICByZXNldFN1Y2Nlc3M6IHJlc2V0U3VjY2Vzc0NyZWF0ZSxcbiAgfSA9IHVzZUNyZWF0ZUFnZW50KClcblxuICBjb25zdCB7IGhhbmRsZVNuYWNrYmFyU3VjY2VzcywgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcblxuICBjb25zdCB7XG4gICAgaGFuZGxlQ3JlYXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVEZWxldGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMsXG4gICAgaXNMb2FkaW5nOiBpc0xvYWRpbmdLbm93bGVkZ2UsXG4gICAgZXJyb3I6IGVycm9yS25vd2xlZGdlLFxuICAgIHN1Y2Nlc3NEZWxldGU6IHN1Y2Nlc3NLbm93bGVkZ2VEZWxldGUsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzU2F2ZSxcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUsXG4gIH0gPSB1c2VLbm93bGVkZ2VPcGVyYXRpb25zKClcblxuICBjb25zdCB7XG4gICAgaGFuZGxlQWNjZXNzQ2xpZW50LFxuICAgIHN1Y2Nlc3M6IHN1Y2Nlc3NVcGRhdGVBY2Nlc3MsXG4gICAgaXNMb2FkaW5nOiBpc0xvYWRpbmdVcGRhdGVBY2Nlc3MsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzOiByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MsXG4gIH0gPSB1c2VBY2Nlc3NDbGllbnQoKVxuXG4gIGlmICghc2VsZWN0b3IpIHJldHVybiBudWxsXG5cbiAgY29uc3QgYXJlQ2xpZW50c0FycmF5c0VxdWFsID0gKGNsaWVudHMxOiBhbnlbXSB8IG51bGwsIGNsaWVudHMyOiBhbnlbXSB8IG51bGwpID0+IHtcbiAgICBpZiAoIWNsaWVudHMxICYmICFjbGllbnRzMikgcmV0dXJuIHRydWVcbiAgICBpZiAoIWNsaWVudHMxIHx8ICFjbGllbnRzMikgcmV0dXJuIGZhbHNlXG4gICAgaWYgKGNsaWVudHMxLmxlbmd0aCAhPT0gY2xpZW50czIubGVuZ3RoKSByZXR1cm4gZmFsc2VcblxuICAgIGNvbnN0IGNsaWVudHMxSWRzID0gY2xpZW50czEubWFwKGMgPT4gYy5jbGllbnRJZCkuc29ydCgpXG4gICAgY29uc3QgY2xpZW50czJJZHMgPSBjbGllbnRzMi5tYXAoYyA9PiBjLmNsaWVudElkKS5zb3J0KClcblxuICAgIHJldHVybiBjbGllbnRzMUlkcy5ldmVyeSgoaWQsIGluZGV4KSA9PiBpZCA9PT0gY2xpZW50czJJZHNbaW5kZXhdKVxuICB9XG5cbiAgY29uc3QgaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQgPSAoKSA9PiB7XG4gICAgaWYgKCFmaXJzdFZhbHVlQWdlbnQuY3VycmVudD8uYWNjZXNzaWJpbGl0eSB8fCAhbW9kYWxWYWx1ZXM/LmFjY2Vzc2liaWxpdHkpIHJldHVybiB0cnVlXG5cbiAgICBjb25zdCBhY2Nlc3NUeXBlU2FtZSA9IG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlXG4gICAgY29uc3QgY2xpZW50c1NhbWUgPSBhcmVDbGllbnRzQXJyYXlzRXF1YWwoXG4gICAgICBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmNsaWVudHMsXG4gICAgICBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5hY2Nlc3NpYmlsaXR5LmNsaWVudHNcbiAgICApXG4gICAgY29uc3QgdGFza0FjY2Vzc1NhbWUgPVxuICAgICAgKG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkudGFza0FjY2VzcyA/PyB0cnVlKSA9PT0gKGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LmFjY2Vzc2liaWxpdHkudGFza0FjY2VzcyA/PyB0cnVlKVxuICAgIGNvbnN0IGN1cnJlbnRDb25uZWN0b3JzID0gWy4uLihtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LnNlbGVjdGVkQ29ubmVjdG9ycyB8fCBbXSldLnNvcnQoKVxuICAgIGNvbnN0IG9yaWdpbmFsQ29ubmVjdG9ycyA9IFsuLi4oZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuYWNjZXNzaWJpbGl0eS5zZWxlY3RlZENvbm5lY3RvcnMgfHwgW10pXS5zb3J0KClcbiAgICBjb25zdCBjb25uZWN0b3JzU2FtZSA9XG4gICAgICBjdXJyZW50Q29ubmVjdG9ycy5sZW5ndGggPT09IG9yaWdpbmFsQ29ubmVjdG9ycy5sZW5ndGggJiZcbiAgICAgIGN1cnJlbnRDb25uZWN0b3JzLmV2ZXJ5KChzbHVnLCBpbmRleCkgPT4gc2x1ZyA9PT0gb3JpZ2luYWxDb25uZWN0b3JzW2luZGV4XSlcblxuICAgIHJldHVybiAhYWNjZXNzVHlwZVNhbWUgfHwgIWNsaWVudHNTYW1lIHx8ICF0YXNrQWNjZXNzU2FtZSB8fCAhY29ubmVjdG9yc1NhbWVcbiAgfVxuXG4gIGNvbnN0IHZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUgPSAoKSA9PiB7XG4gICAgaWYgKCFmaXJzdFZhbHVlQWdlbnQuY3VycmVudD8uZ2VuZXJhbCB8fCAhbW9kYWxWYWx1ZXM/LmdlbmVyYWwpIHJldHVybiBmYWxzZVxuXG4gICAgcmV0dXJuIChcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwubmFtZSA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuZ2VuZXJhbC5uYW1lICYmXG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmVtb2ppID09PSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5nZW5lcmFsLmVtb2ppICYmXG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmludHJvZHVjdGlvbiA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuZ2VuZXJhbC5pbnRyb2R1Y3Rpb24gJiZcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwuaW5wdXRQbGFjZWhvbGRlciA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuZ2VuZXJhbC5pbnB1dFBsYWNlaG9sZGVyICYmXG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmFpTW9kZWw/LmlkID09PSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5nZW5lcmFsLmFpTW9kZWw/LmlkICYmXG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQgPT09IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LmdlbmVyYWwudXNlclByb21wdCAmJlxuICAgICAgKG1vZGFsVmFsdWVzLmtub3dsZWRnZT8ubGVuZ3RoID09PSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudD8ua25vd2xlZGdlPy5sZW5ndGggfHxcbiAgICAgICAgKCFtb2RhbFZhbHVlcy5rbm93bGVkZ2U/Lmxlbmd0aCAmJiAhZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQ/Lmtub3dsZWRnZT8ubGVuZ3RoKSkgJiZcbiAgICAgICFhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBkYXRlPy5sZW5ndGggJiZcbiAgICAgICFhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlPy5sZW5ndGggJiZcbiAgICAgICFoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpXG4gICAgKVxuICB9XG5cbiAgY29uc3QgaGFzQW55VmFsdWVGb3JDcmVhdGlvbiA9ICgpID0+IHtcbiAgICBpZiAobW9kYWxWYWx1ZXMuaXNFZGl0aW5nKSByZXR1cm4gZmFsc2VcblxuICAgIGNvbnN0IGlzRGVmYXVsdEFpTW9kZWwgPSAhIWFnZW50TW9kZWxzLmxlbmd0aCAmJiBtb2RhbFZhbHVlcy5nZW5lcmFsLmFpTW9kZWw/LmlkID09PSBhZ2VudE1vZGVsc1swXT8uaWRcblxuICAgIGNvbnN0IGRlZmF1bHRJbnB1dFBsYWNlaG9sZGVyID0gdCgnZ2VuZXJhbFNlY3Rpb24uaW5wdXRQbGFjZWhvbGRlcicpXG4gICAgY29uc3QgaXNEZWZhdWx0SW5wdXRQbGFjZWhvbGRlciA9IG1vZGFsVmFsdWVzLmdlbmVyYWwuaW5wdXRQbGFjZWhvbGRlciA9PT0gZGVmYXVsdElucHV0UGxhY2Vob2xkZXJcblxuICAgIGNvbnN0IGRlZmF1bHRVc2VyUHJvbXB0UGxhY2Vob2xkZXIgPSB0KCdnZW5lcmFsU2VjdGlvbi5pbml0aWFsUHJvbXB0UGxhY2Vob2xkZXInKVxuICAgIGNvbnN0IGlzRGVmYXVsdFVzZXJQcm9tcHQgPVxuICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC51c2VyUHJvbXB0ID09PSBkZWZhdWx0VXNlclByb21wdFBsYWNlaG9sZGVyIHx8XG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQgPT09ICcnIHx8XG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQgPT09IG51bGxcblxuICAgIGNvbnN0IGhhc05hbWUgPSBtb2RhbFZhbHVlcy5nZW5lcmFsLm5hbWUudHJpbSgpICE9PSAnJ1xuICAgIGNvbnN0IGhhc0Vtb2ppID0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5lbW9qaS50cmltKCkgIT09ICcnXG4gICAgY29uc3QgaGFzSW50cm9kdWN0aW9uID0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pbnRyb2R1Y3Rpb24udHJpbSgpICE9PSAnJ1xuICAgIGNvbnN0IGhhc0lucHV0UGxhY2Vob2xkZXIgPSBtb2RhbFZhbHVlcy5nZW5lcmFsLmlucHV0UGxhY2Vob2xkZXIudHJpbSgpICE9PSAnJyAmJiAhaXNEZWZhdWx0SW5wdXRQbGFjZWhvbGRlclxuICAgIGNvbnN0IGhhc1VzZXJQcm9tcHQgPSBtb2RhbFZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQ/LnRyaW0oKSAhPT0gJycgJiYgIWlzRGVmYXVsdFVzZXJQcm9tcHRcbiAgICBjb25zdCBoYXNLbm93bGVkZ2UgPSAhIW1vZGFsVmFsdWVzLmtub3dsZWRnZS5sZW5ndGhcbiAgICBjb25zdCBoYXNDdXN0b21BaU1vZGVsID0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5haU1vZGVsICYmICFpc0RlZmF1bHRBaU1vZGVsXG4gICAgY29uc3QgaGFzQWNjZXNzaWJpbGl0eSA9IG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSAhPT0gJ2NvbXBhbnknXG5cbiAgICByZXR1cm4gKFxuICAgICAgaGFzTmFtZSB8fFxuICAgICAgaGFzRW1vamkgfHxcbiAgICAgIGhhc0ludHJvZHVjdGlvbiB8fFxuICAgICAgaGFzSW5wdXRQbGFjZWhvbGRlciB8fFxuICAgICAgaGFzVXNlclByb21wdCB8fFxuICAgICAgaGFzS25vd2xlZGdlIHx8XG4gICAgICBoYXNDdXN0b21BaU1vZGVsIHx8XG4gICAgICBoYXNBY2Nlc3NpYmlsaXR5XG4gICAgKVxuICB9XG5cbiAgY29uc3QgaGFzQ2hhbmdlc0ZvckVkaXRpbmcgPSAoKSA9PiB7XG4gICAgaWYgKCFtb2RhbFZhbHVlcy5pc0VkaXRpbmcpIHJldHVybiBmYWxzZVxuXG4gICAgcmV0dXJuIChcbiAgICAgICF2YWxpZGF0ZUFnZW50VmFsdWVzSXNTYW1lKCkgfHxcbiAgICAgICEhYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZS5sZW5ndGggfHxcbiAgICAgICEhYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5sZW5ndGhcbiAgICApXG4gIH1cblxuICBjb25zdCBoYXNQZW5kaW5nQ2hhbmdlcyA9ICgpID0+IHtcbiAgICByZXR1cm4gaGFzQW55VmFsdWVGb3JDcmVhdGlvbigpIHx8IGhhc0NoYW5nZXNGb3JFZGl0aW5nKClcbiAgfVxuXG4gIC8vIEhlbHBlciBwYXJhIG1hbmVqYXIgZWwgdG9nZ2xlIGRlIGZhdm9yaXRvIHkgYWN0dWFsaXphciBlbCBlc3RhZG8gY29uIG9yZGVuYW1pZW50b1xuICBjb25zdCBoYW5kbGVUb2dnbGVGYXZvcml0ZUZvckFnZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKGFnZW50SWQ6IHN0cmluZywgYWdlbnQ6IEFnZW50LCBvblN1Y2Nlc3M/OiAodXBkYXRlZEFnZW50OiBBZ2VudCkgPT4gdm9pZCwgb25FcnJvcj86ICgpID0+IHZvaWQpID0+IHtcbiAgICAgIHRvZ2dsZUZhdm9yaXRlKFxuICAgICAgICBhZ2VudElkLFxuICAgICAgICB1cGRhdGVkQWdlbnQgPT4ge1xuICAgICAgICAgIC8vIEFjdHVhbGl6YXIgZWwgZXN0YWRvIGRlIGFnZW50ZXMgY29uIGVsIHJlc3VsdGFkbyBkZWwgc2Vydmlkb3IgeSBvcmRlbmFyXG4gICAgICAgICAgdXBkYXRlQWdlbnRGYXZvcml0ZSh1cGRhdGVkQWdlbnQsIHRydWUpXG4gICAgICAgICAgaWYgKG9uU3VjY2Vzcykge1xuICAgICAgICAgICAgb25TdWNjZXNzKHVwZGF0ZWRBZ2VudClcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBpZiAob25FcnJvcikge1xuICAgICAgICAgICAgb25FcnJvcigpXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBhZ2VudC5pc19mYXZvcml0ZVxuICAgICAgKVxuICAgIH0sXG4gICAgW3RvZ2dsZUZhdm9yaXRlLCB1cGRhdGVBZ2VudEZhdm9yaXRlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSAoKSA9PiB7XG4gICAgaWYgKGhhc1BlbmRpbmdDaGFuZ2VzKCkgJiYgIXN1Y2Nlc3NDcmVhdGUgJiYgIXN1Y2Nlc3NVcGRhdGUgJiYgIXN1Y2Nlc3NEZWxldGUpIHtcbiAgICAgIGNvbnN0IGNvbmZpcm1NZXNzYWdlID0gbW9kYWxWYWx1ZXMuaXNFZGl0aW5nID8gdCgnY29uZmlybUNsb3NlRWRpdEFnZW50JykgOiB0KCdjb25maXJtQ2xvc2VDcmVhdGVBZ2VudCcpXG5cbiAgICAgIGlmICghd2luZG93LmNvbmZpcm0oY29uZmlybU1lc3NhZ2UpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cblxuICAgIHNldE1vZGFsVmFsdWVzKGluaXRpYWxWYWx1ZXMpXG4gICAgaGFuZGxlQ2xlYW5BZ2VudCgpXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzU2F2ZSgpXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MoKVxuICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQgPSB7XG4gICAgICB0b0RlbGV0ZTogW10sXG4gICAgICB0b1VwbG9hZDogW10sXG4gICAgfVxuICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgIH1cbiAgICBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBwcm9jZXNzRmlsZXNUaW1lZE91dFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXMoZmFsc2UpXG4gICAgc2V0SXNTdWJzY3JpYmVkKGZhbHNlKVxuICAgIHNldEZpbGVzUHJvY2Vzc2VkKDApXG4gICAgc2V0U2VjdGlvbignZ2VuZXJhbCcpXG4gICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgIGFnZW50Q3JlYXRlZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ID0gbnVsbFxuICAgIHByZWZldGNoZWRBZ2VudEJ5SWRSZWYuY3VycmVudCA9IG51bGxcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBldmVudC5jdXJyZW50VGFyZ2V0ICYmICFpc1Nob3dQcm9jZXNzRmlsZXMpIHtcbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWN0aW9uQ2hhbmdlID0gKG5ld1NlY3Rpb246IEFibVNlY3Rpb24pID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMudGFiU2VjdGlvbiwgeyBvcHRpb246IG5ld1NlY3Rpb24gfSlcbiAgICBzZXRTZWN0aW9uKG5ld1NlY3Rpb24pXG4gIH1cblxuICBjb25zdCBoYW5kbGVTZXRBZ2VudFZhbHVlc0J5S2V5cyA9ICh7XG4gICAga2V5LFxuICAgIHZhbHVlLFxuICAgIGRlbGV0ZUtub3dsZWRnZSxcbiAgfToge1xuICAgIGtleTogc3RyaW5nXG4gICAgdmFsdWU6IGFueVxuICAgIGRlbGV0ZUtub3dsZWRnZTogYm9vbGVhblxuICB9KSA9PiB7XG4gICAgaWYgKGtleSA9PT0gJ2tub3dsZWRnZScpIHtcbiAgICAgIGlmICghZGVsZXRlS25vd2xlZGdlKSB7XG4gICAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQucHVzaCguLi4odmFsdWUgfHwgW10pKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZmlsZXNQcmV2SWRzID0gdmFsdWUubGVuZ3RoID8gbmV3IFNldCh2YWx1ZS5tYXAoZmlsZSA9PiBmaWxlLmlkKSkgOiBuZXcgU2V0KClcbiAgICAgICAgY29uc3QgbmV3RmlsZXMgPSBtb2RhbFZhbHVlcy5rbm93bGVkZ2UuZmlsdGVyKGZpbGUgPT4gIWZpbGVzUHJldklkcy5oYXMoZmlsZS5pZCkgJiYgZmlsZS5zdGF0dXMgIT09ICdzdGFydGVkJylcbiAgICAgICAgaWYgKCFuZXdGaWxlcy5sZW5ndGggJiYgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZUlkcyA9IG5ldyBTZXQodmFsdWUubWFwKGZpbGUgPT4gZmlsZS5pZCkpXG4gICAgICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZCA9IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQuZmlsdGVyKGZpbGUgPT4gdmFsdWVJZHMuaGFzKGZpbGUuaWQpKVxuICAgICAgICB9XG4gICAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUgPSBbLi4uKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUgfHwgW10pLCAuLi5uZXdGaWxlc11cbiAgICAgIH1cbiAgICB9XG4gICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiB7XG4gICAgICBjb25zdCBrbm93bGVkZ2VGaWxlcyA9XG4gICAgICAgIGtleSA9PT0gJ2tub3dsZWRnZSdcbiAgICAgICAgICA/IGRlbGV0ZUtub3dsZWRnZVxuICAgICAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgOiBbLi4uKHByZXYua25vd2xlZGdlIHx8IFtdKSwgLi4uKCh2YWx1ZSBhcyBBdHRhY2htZW50RmlsZVtdKSB8fCBbXSldXG4gICAgICAgICAgOiBudWxsXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICAuLi4oa2V5ID09PSAna25vd2xlZGdlJ1xuICAgICAgICAgID8geyBrbm93bGVkZ2U6IGtub3dsZWRnZUZpbGVzIH1cbiAgICAgICAgICA6IGtleSA9PT0gJ2FjY2Vzc2liaWxpdHknXG4gICAgICAgICAgICA/IHsgYWNjZXNzaWJpbGl0eTogdmFsdWUgfVxuICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgZ2VuZXJhbDoge1xuICAgICAgICAgICAgICAgICAgLi4ucHJldi5nZW5lcmFsLFxuICAgICAgICAgICAgICAgICAgW2tleV06IHZhbHVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBoYW5kbGVDb25maXJtQWN0aW9uID0gYXN5bmMgKGNoYXQ6IGFueSwgYWN0aW9uOiAnZGVsZXRlJyB8ICd1cGRhdGUnIHwgJ2NyZWF0ZScpID0+IHtcbiAgICAvLyBTb2xvIHBlcm1pdGlyIG9wZXJhY2lvbmVzIGRlIGFnZW50ZXMgY3VzdG9tIHNpIGxhIGZlYXR1cmUgZmxhZyBlc3TDoSBoYWJpbGl0YWRhXG4gICAgaWYgKCF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGFjdGlvbiA9PT0gJ2RlbGV0ZScpIHtcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5kZWxldGUpXG4gICAgICBoYW5kbGVEZWxldGVBZ2VudChjaGF0LmlkIGFzIHVua25vd24gYXMgc3RyaW5nKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5jb25maXJtQWN0aW9uLCB7IG9wdGlvbjogbW9kYWxWYWx1ZXMuaXNFZGl0aW5nID8gJ2VkaXRlJyA6ICdjcmVhdGUnIH0pXG4gICAgLy8gQWwgcmVpbnRlbnRhciBndWFyZGFyLCBsaWJlcmFyIGVsIGZyZW5vIGRlbCB0aW1lb3V0IHByZXZpbyBwYXJhIHF1ZSBsb3NcbiAgICAvLyB1c2VFZmZlY3QgZGUgcG9zdC1ndWFyZGFkbyB2dWVsdmFuIGEgcG9kZXIgZGlzcGFyYXIgc25hY2tiYXJzIHkgY2VycmFyLlxuICAgIHByb2Nlc3NGaWxlc1RpbWVkT3V0UmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIGlmIChtb2RhbFZhbHVlcy5pc0VkaXRpbmcpIHtcbiAgICAgIGlmICghdmFsaWRhdGVBZ2VudFZhbHVlc0lzU2FtZSgpKSB7XG4gICAgICAgIGF3YWl0IGhhbmRsZVVwZGF0ZUFnZW50KG1vZGFsVmFsdWVzKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBoYW5kbGVDcmVhdGVBZ2VudChtb2RhbFZhbHVlcylcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVNldEFnZW50VmFsdWVzID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHsgYWdlbnRWYWx1ZXMgfSA9IGV2ZW50LmRldGFpbFxuICAgICAgY29uc3QgaW5pdGlhbFNlY3Rpb24gPSBhZ2VudFZhbHVlcz8uaW5pdGlhbFNlY3Rpb24gYXMgQWJtU2VjdGlvbiB8IHVuZGVmaW5lZFxuICAgICAgcGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQgPVxuICAgICAgICBpbml0aWFsU2VjdGlvbiAmJiBbJ2dlbmVyYWwnLCAna25vd2xlZGdlJywgJ2FjY2Vzc2liaWxpdHknXS5pbmNsdWRlcyhpbml0aWFsU2VjdGlvbikgPyBpbml0aWFsU2VjdGlvbiA6IG51bGxcblxuICAgICAgZ2V0QWxsQWdlbnRNb2RlbHMoKVxuICAgICAgc2V0SXNPcGVuKHRydWUpXG4gICAgICBzZXRJc0xvYWRpbmcodHJ1ZSlcblxuICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgIG9wZXJhdGlvblR5cGU6IG51bGwsXG4gICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgfVxuXG4gICAgICBpZiAoYWdlbnRWYWx1ZXMudmFsdWVzPy5pc0VkaXRpbmcpIHtcbiAgICAgICAgLy8gVmFsaWRhciBxdWUgbGEgZmVhdHVyZSBmbGFnIGVzdMOpIGhhYmlsaXRhZGEgYW50ZXMgZGUgY2FyZ2FyIGVsIGFnZW50ZSBwYXJhIGVkaXRhclxuICAgICAgICBpZiAoIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdlcnJvckFjY2Vzc0RlbmllZCcpKVxuICAgICAgICAgIHNldElzT3BlbihmYWxzZSlcbiAgICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgICAgICAgcGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgcHJlZmV0Y2hlZEFnZW50QnlJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmIChhZ2VudFZhbHVlcy5wcmVmZXRjaGVkQWdlbnRCeUlkKSB7XG4gICAgICAgICAgaGFuZGxlQ2xlYW5BZ2VudCgpXG4gICAgICAgICAgcHJlZmV0Y2hlZEFnZW50QnlJZFJlZi5jdXJyZW50ID0gYWdlbnRWYWx1ZXMucHJlZmV0Y2hlZEFnZW50QnlJZFxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGhhbmRsZUdldEFnZW50QnlJZChhZ2VudFZhbHVlcz8udmFsdWVzPy5nZW5lcmFsPy5pZCBhcyB1bmtub3duIGFzIHN0cmluZylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChhZ2VudFZhbHVlcy52YWx1ZXMpIHtcbiAgICAgICAgY29uc3QgbmV4dFZhbHVlcyA9IHtcbiAgICAgICAgICAuLi5pbml0aWFsVmFsdWVzLFxuICAgICAgICAgIC4uLmFnZW50VmFsdWVzLnZhbHVlcyxcbiAgICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgICAuLi5pbml0aWFsVmFsdWVzLmdlbmVyYWwsXG4gICAgICAgICAgICAuLi4oYWdlbnRWYWx1ZXMudmFsdWVzLmdlbmVyYWwgfHwge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYWNjZXNzaWJpbGl0eToge1xuICAgICAgICAgICAgLi4uaW5pdGlhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LFxuICAgICAgICAgICAgLi4uKGFnZW50VmFsdWVzLnZhbHVlcy5hY2Nlc3NpYmlsaXR5IHx8IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGtub3dsZWRnZTogYWdlbnRWYWx1ZXMudmFsdWVzLmtub3dsZWRnZSB8fCBbXSxcbiAgICAgICAgfVxuXG4gICAgICAgIGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50ID0gbmV4dFZhbHVlc1xuICAgICAgICBzZXRNb2RhbFZhbHVlcyhuZXh0VmFsdWVzKVxuICAgICAgfVxuXG4gICAgICBpZiAocGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQgJiYgIWFnZW50VmFsdWVzLnZhbHVlcz8uaXNFZGl0aW5nKSB7XG4gICAgICAgIHNldFNlY3Rpb24ocGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQpXG4gICAgICAgIHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuXG4gICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2FibS1hZ2VudC1tb2RhbC1zZXQtdmFsdWVzJywgaGFuZGxlU2V0QWdlbnRWYWx1ZXMpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FibS1hZ2VudC1tb2RhbC1zZXQtdmFsdWVzJywgaGFuZGxlU2V0QWdlbnRWYWx1ZXMgYXMgRXZlbnRMaXN0ZW5lcilcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8vIHVzZUVmZmVjdCB0byBoYW5kbGUgdGhlIG92ZXJmbG93IG9mIHRoZSBib2R5IHdoZW4gdGhlIG1vZGFsIGlzIG9wZW5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzT3Blbikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHsgYm9keSB9ID0gZG9jdW1lbnRcbiAgICBpZiAoIWJvZHkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5hbE92ZXJmbG93ID0gYm9keS5zdHlsZS5vdmVyZmxvd1xuICAgIGJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJ1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGJvZHkuc3R5bGUub3ZlcmZsb3cgPSBvcmlnaW5hbE92ZXJmbG93XG4gICAgfVxuICB9LCBbaXNPcGVuXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUJlZm9yZVVubG9hZCA9IChldmVudDogQmVmb3JlVW5sb2FkRXZlbnQpID0+IHtcbiAgICAgIGlmIChoYXNQZW5kaW5nQ2hhbmdlcygpKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gdCgnY29uZmlybVJlbG9hZEJyb3dzZXInKVxuICAgICAgICByZXR1cm4gdCgnY29uZmlybVJlbG9hZEJyb3dzZXInKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGlmIChpc09wZW4pIHtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBoYW5kbGVCZWZvcmVVbmxvYWQpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBoYW5kbGVCZWZvcmVVbmxvYWQpXG4gICAgfVxuICB9LCBbaXNPcGVuLCBoYXNQZW5kaW5nQ2hhbmdlcywgdF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc3VjY2Vzc0RlbGV0ZSkge1xuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudERlbGV0ZWQnKSlcbiAgICAgIHJlc2V0U3VjY2VzcygpXG4gICAgICBpZiAoY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkID09PSBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKSB7XG4gICAgICAgIHNlbGVjdEZpcnN0QWdlbnQoY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkIGFzIHN0cmluZylcbiAgICAgIH1cbiAgICAgIHJlbW92ZUFnZW50KG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQpXG4gICAgICBzZXRTaG93TW9kYWxEZWxldGUoZmFsc2UpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfVxuICB9LCBbc3VjY2Vzc0RlbGV0ZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBFdml0YXIgZWplY3VjacOzbiBtw7psdGlwbGUgZGVsIGVmZWN0b1xuICAgIGlmIChzdWNjZXNzQ3JlYXRlICYmICFpc0xvYWRpbmdDcmVhdGUgJiYgYWdlbnRDcmVhdGVkUmVmLmN1cnJlbnQgIT09IHN1Y2Nlc3NDcmVhdGUuaWQpIHtcbiAgICAgIGFnZW50Q3JlYXRlZFJlZi5jdXJyZW50ID0gc3VjY2Vzc0NyZWF0ZS5pZFxuICAgICAgaWYgKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUubGVuZ3RoICYmIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQubGVuZ3RoKSB7XG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55Jykge1xuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogdHJ1ZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFNpIG5vIGhheSBhY2Nlc2liaWxpZGFkIHBlcm8gaGF5IGFyY2hpdm9zLCBlc3RhYmxlY2VyIGVsIGNvbnRleHRvIHBhcmEgY3JlYWNpw7NuXG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IHRydWUsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXG4gICAgICAgICAgaGFuZGxlRGVsZXRlQW5kQ3JlYXRlS25vd2xlZGdlcyh7XG4gICAgICAgICAgICBmaWxlc1RvRGVsZXRlOiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLFxuICAgICAgICAgICAgZmlsZXNUb0NyZWF0ZTogYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZCxcbiAgICAgICAgICAgIGFnZW50SWQ6IHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55Jykge1xuICAgICAgICAgIHByb21pc2VzLnB1c2goaGFuZGxlQWNjZXNzQ2xpZW50KHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSkpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pc19mYXZvcml0ZSkge1xuICAgICAgICAgIGNvbnN0IGFnZW50V2l0aEZhdm9yaXRlID0geyAuLi5zdWNjZXNzQ3JlYXRlLCBpc19mYXZvcml0ZTogdHJ1ZSB9XG4gICAgICAgICAgYWRkQWdlbnQoYWdlbnRXaXRoRmF2b3JpdGUpXG4gICAgICAgICAgLy8gQ3VhbmRvIHNlIGNyZWEgdW4gYWdlbnRlIG51ZXZvLCBlbCBzZXJ2aWRvciBubyB0aWVuZSBlbCBmYXZvcml0byBtYXJjYWRvIGHDum5cbiAgICAgICAgICAvLyBFbnRvbmNlcyBjdXJyZW50SXNGYXZvcml0ZSBkZWJlIHNlciBmYWxzZSBwYXJhIHF1ZSBlbCB0b2dnbGUgbG8gbWFycXVlIGNvbW8gdHJ1ZVxuICAgICAgICAgIGNvbnN0IGFnZW50Rm9yVG9nZ2xlID0geyAuLi5hZ2VudFdpdGhGYXZvcml0ZSwgaXNfZmF2b3JpdGU6IGZhbHNlIH1cbiAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICBoYW5kbGVUb2dnbGVGYXZvcml0ZUZvckFnZW50KFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBhZ2VudEZvclRvZ2dsZSxcbiAgICAgICAgICAgICAgICAoKSA9PiByZXNvbHZlKCksXG4gICAgICAgICAgICAgICAgKCkgPT4gcmVqZWN0KClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRkQWdlbnQoc3VjY2Vzc0NyZWF0ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIFByb21pc2UuYWxsKHByb21pc2VzKVxuXG4gICAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXModHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZS5sZW5ndGgpIHtcbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSAhPT0gJ2NvbXBhbnknKSB7XG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IHRydWUsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiB0cnVlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ2NyZWF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gU2kgbm8gaGF5IGFjY2VzaWJpbGlkYWQgcGVybyBoYXkgYXJjaGl2b3MsIGVzdGFibGVjZXIgZWwgY29udGV4dG8gcGFyYSBjcmVhY2nDs25cbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ2NyZWF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtcbiAgICAgICAgICBoYW5kbGVEZWxldGVLbm93bGVkZ2VzKHsgZmlsZXM6IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUsIGFnZW50SWQ6IHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSB9KSxcbiAgICAgICAgXVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55Jykge1xuICAgICAgICAgIHByb21pc2VzLnB1c2goaGFuZGxlQWNjZXNzQ2xpZW50KHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSkpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pc19mYXZvcml0ZSkge1xuICAgICAgICAgIGNvbnN0IGFnZW50V2l0aEZhdm9yaXRlID0geyAuLi5zdWNjZXNzQ3JlYXRlLCBpc19mYXZvcml0ZTogdHJ1ZSB9XG4gICAgICAgICAgYWRkQWdlbnQoYWdlbnRXaXRoRmF2b3JpdGUpXG4gICAgICAgICAgLy8gQ3VhbmRvIHNlIGNyZWEgdW4gYWdlbnRlIG51ZXZvLCBlbCBzZXJ2aWRvciBubyB0aWVuZSBlbCBmYXZvcml0byBtYXJjYWRvIGHDum5cbiAgICAgICAgICAvLyBFbnRvbmNlcyBjdXJyZW50SXNGYXZvcml0ZSBkZWJlIHNlciBmYWxzZSBwYXJhIHF1ZSBlbCB0b2dnbGUgbG8gbWFycXVlIGNvbW8gdHJ1ZVxuICAgICAgICAgIGNvbnN0IGFnZW50Rm9yVG9nZ2xlID0geyAuLi5hZ2VudFdpdGhGYXZvcml0ZSwgaXNfZmF2b3JpdGU6IGZhbHNlIH1cbiAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICBoYW5kbGVUb2dnbGVGYXZvcml0ZUZvckFnZW50KFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBhZ2VudEZvclRvZ2dsZSxcbiAgICAgICAgICAgICAgICAoKSA9PiByZXNvbHZlKCksXG4gICAgICAgICAgICAgICAgKCkgPT4gcmVqZWN0KClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRkQWdlbnQoc3VjY2Vzc0NyZWF0ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIFByb21pc2UuYWxsKHByb21pc2VzKVxuICAgICAgICBoYW5kbGVEZWxldGVLbm93bGVkZ2VzKHsgZmlsZXM6IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUsIGFnZW50SWQ6IHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSB9KVxuICAgICAgICBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQubGVuZ3RoKSB7XG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55Jykge1xuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogdHJ1ZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFNpIG5vIGhheSBhY2Nlc2liaWxpZGFkIHBlcm8gaGF5IGFyY2hpdm9zLCBlc3RhYmxlY2VyIGVsIGNvbnRleHRvIHBhcmEgY3JlYWNpw7NuXG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IHRydWUsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXG4gICAgICAgICAgaGFuZGxlQ3JlYXRlS25vd2xlZGdlcyh7IGZpbGVzOiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLCBhZ2VudElkOiBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCkgfSksXG4gICAgICAgIF1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueScpIHtcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKGhhbmRsZUFjY2Vzc0NsaWVudChzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaXNfZmF2b3JpdGUpIHtcbiAgICAgICAgICBjb25zdCBhZ2VudFdpdGhGYXZvcml0ZSA9IHsgLi4uc3VjY2Vzc0NyZWF0ZSwgaXNfZmF2b3JpdGU6IHRydWUgfVxuICAgICAgICAgIGFkZEFnZW50KGFnZW50V2l0aEZhdm9yaXRlKVxuICAgICAgICAgIC8vIEN1YW5kbyBzZSBjcmVhIHVuIGFnZW50ZSBudWV2bywgZWwgc2Vydmlkb3Igbm8gdGllbmUgZWwgZmF2b3JpdG8gbWFyY2FkbyBhw7puXG4gICAgICAgICAgLy8gRW50b25jZXMgY3VycmVudElzRmF2b3JpdGUgZGViZSBzZXIgZmFsc2UgcGFyYSBxdWUgZWwgdG9nZ2xlIGxvIG1hcnF1ZSBjb21vIHRydWVcbiAgICAgICAgICBjb25zdCBhZ2VudEZvclRvZ2dsZSA9IHsgLi4uYWdlbnRXaXRoRmF2b3JpdGUsIGlzX2Zhdm9yaXRlOiBmYWxzZSB9XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudChcbiAgICAgICAgICAgICAgICBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgYWdlbnRGb3JUb2dnbGUsXG4gICAgICAgICAgICAgICAgKCkgPT4gcmVzb2x2ZSgpLFxuICAgICAgICAgICAgICAgICgpID0+IHJlamVjdCgpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZEFnZW50KHN1Y2Nlc3NDcmVhdGUpXG4gICAgICAgIH1cblxuICAgICAgICBQcm9taXNlLmFsbChwcm9taXNlcylcbiAgICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyh0cnVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55Jykge1xuICAgICAgICAvLyBTb2xvIHJlc2V0ZWFyIGVsIGNvbnRleHRvIHNpIE5PIHNlIGhhIGxsYW1hZG8gdG9kYXbDrWFcbiAgICAgICAgaWYgKCFhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQmVlbkNhbGxlZCkge1xuICAgICAgICAgIGNvbnN0IHsgaGFzQWN0aW9uRmlsZXMgfSA9IGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudFxuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogaGFzQWN0aW9uRmlsZXMgfHwgZmFsc2UsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0JlZW5DYWxsZWQpIHtcbiAgICAgICAgICBoYW5kbGVBY2Nlc3NDbGllbnQoc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KVxuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNCZWVuQ2FsbGVkID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU29sbyBlamVjdXRhciBoYW5kbGVBY2Nlc3NDbGllbnQsIGVsIGFnZW50ZSBzZSBhZ3JlZ2Fyw6EgeSBlbCB0b2dnbGUgc2UgaGFyw6EgZW4gc3VjY2Vzc1VwZGF0ZUFjY2Vzc1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIGZhdm9yaXRlIGlmIGl0IHdhcyBtYXJrZWQgZHVyaW5nIGNyZWF0aW9uXG4gICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pc19mYXZvcml0ZSkge1xuICAgICAgICAvLyBQcmltZXJvIGFncmVnYXIgZWwgYWdlbnRlIGEgbGEgbGlzdGEgKGFkZEFnZW50IHlhIG9yZGVuYSlcbiAgICAgICAgY29uc3QgYWdlbnRXaXRoRmF2b3JpdGUgPSB7IC4uLnN1Y2Nlc3NDcmVhdGUsIGlzX2Zhdm9yaXRlOiB0cnVlIH1cbiAgICAgICAgYWRkQWdlbnQoYWdlbnRXaXRoRmF2b3JpdGUpXG5cbiAgICAgICAgLy8gQ3VhbmRvIHNlIGNyZWEgdW4gYWdlbnRlIG51ZXZvLCBlbCBzZXJ2aWRvciBubyB0aWVuZSBlbCBmYXZvcml0byBtYXJjYWRvIGHDum5cbiAgICAgICAgLy8gRW50b25jZXMgY3VycmVudElzRmF2b3JpdGUgZGViZSBzZXIgZmFsc2UgcGFyYSBxdWUgZWwgdG9nZ2xlIGxvIG1hcnF1ZSBjb21vIHRydWVcbiAgICAgICAgY29uc3QgYWdlbnRGb3JUb2dnbGUgPSB7IC4uLmFnZW50V2l0aEZhdm9yaXRlLCBpc19mYXZvcml0ZTogZmFsc2UgfVxuICAgICAgICAvLyBMdWVnbyBoYWNlciBlbCB0b2dnbGUgZGUgZmF2b3JpdG8gZW4gZWwgc2Vydmlkb3IgeSBhY3R1YWxpemFyIGVsIGVzdGFkb1xuICAgICAgICBoYW5kbGVUb2dnbGVGYXZvcml0ZUZvckFnZW50KFxuICAgICAgICAgIHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBhZ2VudEZvclRvZ2dsZSxcbiAgICAgICAgICB1cGRhdGVkQWdlbnQgPT4ge1xuICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdEZhdm9yaXRlLCB7IG9wdGlvbjogdXBkYXRlZEFnZW50LmlzX2Zhdm9yaXRlID8gJ2FkZCcgOiAncmVtb3ZlJyB9KVxuICAgICAgICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgICAgICAgIHNlbGVjdEFnZW50KHsgLi4uYWdlbnRXaXRoRmF2b3JpdGUsIGlzX2Zhdm9yaXRlOiB1cGRhdGVkQWdlbnQuaXNfZmF2b3JpdGUgfSlcbiAgICAgICAgICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgICAgICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdEZhdm9yaXRlLCB7IG9wdGlvbjogJ2FkZCcgfSlcbiAgICAgICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICAgICAgICBzZWxlY3RBZ2VudChhZ2VudFdpdGhGYXZvcml0ZSlcbiAgICAgICAgICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgICAgICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgICAgYWRkQWdlbnQoc3VjY2Vzc0NyZWF0ZSlcbiAgICAgICAgc2VsZWN0QWdlbnQoc3VjY2Vzc0NyZWF0ZSlcbiAgICAgICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIGlzTG9hZGluZ0NyZWF0ZSxcbiAgICBzdWNjZXNzQ3JlYXRlLFxuICAgIGhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVDcmVhdGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZVNuYWNrYmFyU3VjY2VzcyxcbiAgICB0LFxuICAgIGFkZEFnZW50LFxuICAgIHNlbGVjdEFnZW50LFxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSxcbiAgICByZXNldFN1Y2Nlc3NDcmVhdGUsXG4gICAgaGFuZGxlQ2xvc2UsXG4gICAgdXBkYXRlQWdlbnRGYXZvcml0ZSxcbiAgXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzdWNjZXNzVXBkYXRlKSB7XG4gICAgICBpZiAoYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZS5sZW5ndGggJiYgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKCkpIHtcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiB0cnVlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IHRydWUsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAndXBkYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKSB7XG4gICAgICAgICAgY29uc3QgZmlsZXNUb0RlbGV0ZSA9IFsuLi5hY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlXVxuICAgICAgICAgIGNvbnN0IGZpbGVzVG9VcGxvYWQgPSBbLi4uYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZF1cbiAgICAgICAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlID0gW11cbiAgICAgICAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkID0gW11cblxuICAgICAgICAgIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIGhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMoe1xuICAgICAgICAgICAgICBmaWxlc1RvRGVsZXRlLFxuICAgICAgICAgICAgICBmaWxlc1RvQ3JlYXRlOiBmaWxlc1RvVXBsb2FkLFxuICAgICAgICAgICAgICBhZ2VudElkOiBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC4uLihoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpXG4gICAgICAgICAgICAgID8gW2hhbmRsZUFjY2Vzc0NsaWVudChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpXVxuICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICBdKVxuICAgICAgICB9XG4gICAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXModHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZS5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKCkpIHtcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiB0cnVlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IHRydWUsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAndXBkYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKSB7XG4gICAgICAgICAgY29uc3QgZmlsZXNUb0RlbGV0ZSA9IFsuLi5hY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlXVxuICAgICAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUgPSBbXVxuXG4gICAgICAgICAgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyh7XG4gICAgICAgICAgICAgIGZpbGVzOiBmaWxlc1RvRGVsZXRlLFxuICAgICAgICAgICAgICBhZ2VudElkOiBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC4uLihoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpXG4gICAgICAgICAgICAgID8gW2hhbmRsZUFjY2Vzc0NsaWVudChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpXVxuICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICBdKVxuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQubGVuZ3RoKSB7XG4gICAgICAgIGlmIChoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpKSB7XG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiB0cnVlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ3VwZGF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCkge1xuICAgICAgICAgIGNvbnN0IGZpbGVzVG9VcGxvYWQgPSBbLi4uYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZF1cbiAgICAgICAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkID0gW11cblxuICAgICAgICAgIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIGhhbmRsZUNyZWF0ZUtub3dsZWRnZXMoe1xuICAgICAgICAgICAgICBmaWxlczogZmlsZXNUb1VwbG9hZCxcbiAgICAgICAgICAgICAgYWdlbnRJZDogbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAuLi4oaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQoKVxuICAgICAgICAgICAgICA/IFtoYW5kbGVBY2Nlc3NDbGllbnQobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KV1cbiAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgXSlcbiAgICAgICAgfVxuICAgICAgICBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKCkpIHtcbiAgICAgICAgLy8gU29sbyByZXNldGVhciBlbCBjb250ZXh0byBzaSBOTyBzZSBoYSBsbGFtYWRvIHRvZGF2w61hIHkgTk8gaGF5IGFyY2hpdm9zIHBlbmRpZW50ZXNcbiAgICAgICAgaWYgKCFhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQmVlbkNhbGxlZCAmJiAhYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0FjdGlvbkZpbGVzKSB7XG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICd1cGRhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQpIHtcbiAgICAgICAgICAvLyBMbGFtYXIgYSBoYW5kbGVBY2Nlc3NDbGllbnQgc29sbyB1bmEgdmV6XG4gICAgICAgICAgaWYgKCFhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQmVlbkNhbGxlZCkge1xuICAgICAgICAgICAgaGFuZGxlQWNjZXNzQ2xpZW50KG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSlcbiAgICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNCZWVuQ2FsbGVkID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gU29sbyBjZXJyYXIgc2kgbm8gaGF5IGFyY2hpdm9zIHNpZW5kbyBwcm9jZXNhZG9zIG5pIGFjY2VzcyBwZW5kaWVudGVcbiAgICAgIGlmIChcbiAgICAgICAgIWhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ICYmXG4gICAgICAgICFpc1Nob3dQcm9jZXNzRmlsZXMgJiZcbiAgICAgICAgIWFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQubGVuZ3RoICYmXG4gICAgICAgICFhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQWN0aW9uRmlsZXMgJiZcbiAgICAgICAgIXN1Y2Nlc3NVcGRhdGVBY2Nlc3MgJiZcbiAgICAgICAgIXByb2Nlc3NGaWxlc1RpbWVkT3V0UmVmLmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50VXBkYXRlZCcpKVxuICAgICAgICB1cGRhdGVBZ2VudChzdWNjZXNzVXBkYXRlKVxuICAgICAgICBpZiAoY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkID09PSBzdWNjZXNzVXBkYXRlLmlkKSB7XG4gICAgICAgICAgc2VsZWN0QWdlbnQoc3VjY2Vzc1VwZGF0ZSlcbiAgICAgICAgfVxuICAgICAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgICAgICByZXNldFN1Y2Nlc3NVcGRhdGUoKVxuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgncmVmZXRjaC1zZXNzaW9uJykpXG4gICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBzdWNjZXNzVXBkYXRlLFxuICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQsXG4gICAgaGFuZGxlRGVsZXRlQW5kQ3JlYXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVEZWxldGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZUNyZWF0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzLFxuICAgIHQsXG4gICAgdXBkYXRlQWdlbnQsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlLFxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZSxcbiAgICBoYW5kbGVDbG9zZSxcbiAgXSlcblxuICBjb25zdCBoYW5kbGVQcm9jZXNzRmlsZXNUaW1lb3V0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgJiYgIWlzU2hvd1Byb2Nlc3NGaWxlcykgcmV0dXJuXG5cbiAgICAvLyBBbCBjdW1wbGlyc2UgZWwgdGltZW91dCBhc3VtaW1vcyBxdWUgZWwgZ3VhcmRhZG8gZGVsIGFnZW50ZSBmdWUgZXhpdG9zb1xuICAgIC8vIChlbCBzZXJ2ZXIgcmVzcG9uZGnDsyBPSykgeSBxdWUgbG9zIGFyY2hpdm9zIHNlIGVudmlhcm9uIGNvcnJlY3RhbWVudGUuXG4gICAgLy8gU29sbyBwZXJkaW1vcyBsYSBjb25maXJtYWNpw7NuIGFzaW5jcsOzbmljYSBkZWwgV2ViU29ja2V0IHNvYnJlIHN1XG4gICAgLy8gcHJvY2VzYW1pZW50by4gQ2VycmFtb3MgdG9kbyBtb3N0cmFuZG8gZWwgc25hY2tiYXIgZGUgw6l4aXRvIHF1ZSBodWJpZXNlXG4gICAgLy8gZGlzcGFyYWRvIGVsIGZsdWpvIG5vcm1hbCBkZSDDqXhpdG8uXG5cbiAgICAvLyBGcmVubyBwYXJhIHF1ZSBsb3MgdXNlRWZmZWN0IGRlIHBvc3QtZ3VhcmRhZG8gbm8gcmUtZGlzcGFyZW4gc25hY2tiYXJzXG4gICAgLy8gbyBjaWVycmVzIGR1cGxpY2Fkb3MgY3VhbmRvIHNldElzU2hvd1Byb2Nlc3NGaWxlcyhmYWxzZSkgbG9zIGdhdGlsbGUuXG4gICAgcHJvY2Vzc0ZpbGVzVGltZWRPdXRSZWYuY3VycmVudCA9IHRydWVcblxuICAgIGlmIChtb2RhbFZhbHVlcy5pc0VkaXRpbmcgJiYgc3VjY2Vzc1VwZGF0ZSkge1xuICAgICAgdXBkYXRlQWdlbnQoc3VjY2Vzc1VwZGF0ZSlcbiAgICAgIGlmIChjdXJyZW50U2VsZWN0ZWRBZ2VudD8uaWQgPT09IHN1Y2Nlc3NVcGRhdGUuaWQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoc3VjY2Vzc1VwZGF0ZSlcbiAgICAgIH1cbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKSlcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRVcGRhdGVkJykpXG4gICAgICByZXNldFN1Y2Nlc3NVcGRhdGUoKVxuICAgIH0gZWxzZSBpZiAoIW1vZGFsVmFsdWVzLmlzRWRpdGluZyAmJiBzdWNjZXNzQ3JlYXRlKSB7XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICB9XG5cbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NTYXZlKClcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcygpXG5cbiAgICBoYW5kbGVDbG9zZSgpXG4gIH0sIFtcbiAgICBpc1Nob3dQcm9jZXNzRmlsZXMsXG4gICAgbW9kYWxWYWx1ZXMuaXNFZGl0aW5nLFxuICAgIHN1Y2Nlc3NVcGRhdGUsXG4gICAgc3VjY2Vzc0NyZWF0ZSxcbiAgICB1cGRhdGVBZ2VudCxcbiAgICBjdXJyZW50U2VsZWN0ZWRBZ2VudD8uaWQsXG4gICAgc2VsZWN0QWdlbnQsXG4gICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzLFxuICAgIHQsXG4gICAgcmVzZXRTdWNjZXNzVXBkYXRlLFxuICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSxcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NTYXZlLFxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSxcbiAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MsXG4gICAgaGFuZGxlQ2xvc2UsXG4gIF0pXG5cbiAgY29uc3Qgd2ViU29ja2V0RnVuY3Rpb24gPSAoeyBtb2RlbF9kYXRhOiBtb2RlbERhdGEgfTogeyBtb2RlbF9kYXRhOiBhbnkgfSkgPT4ge1xuICAgIGNvbnN0IGZpbGVTdGF0dXMgPSBtb2RlbERhdGFcbiAgICBpZiAoZmlsZVN0YXR1cy5zdGF0dXMgPT09ICdkb25lJyB8fCBmaWxlU3RhdHVzLnN0YXR1cyA9PT0gJ2ZhaWxlZCcpIHtcbiAgICAgIHNldE1vZGFsVmFsdWVzKHByZXYgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkS25vd2xlZGdlID0gcHJldi5rbm93bGVkZ2UubWFwKGZpbGUgPT4ge1xuICAgICAgICAgIGlmIChmaWxlLm5hbWUgPT09IGZpbGVTdGF0dXMuZmlsZW5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmZpbGUsXG4gICAgICAgICAgICAgIHN0YXR1czogZmlsZVN0YXR1cy5zdGF0dXMsXG4gICAgICAgICAgICAgIGlkOiBmaWxlU3RhdHVzLmtub3dsZWRnZV9iYXNlX2lkIHx8IGZpbGUuaWQsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmaWxlXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGhhc1BlbmRpbmdGaWxlcyA9IHVwZGF0ZWRLbm93bGVkZ2Uuc29tZShmaWxlID0+IGZpbGUuc3RhdHVzID09PSAncGVuZGluZycpXG4gICAgICAgIGNvbnN0IGhhc0Vycm9yRmlsZXMgPSB1cGRhdGVkS25vd2xlZGdlLnNvbWUoZmlsZSA9PiBmaWxlLnN0YXR1cyA9PT0gJ2ZhaWxlZCcpXG4gICAgICAgIGlmIChoYXNFcnJvckZpbGVzICYmICFoYXNQZW5kaW5nRmlsZXMpIHtcbiAgICAgICAgICBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKGZhbHNlKVxuICAgICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IoXG4gICAgICAgICAgICBtb2RhbFZhbHVlcy5pc0VkaXRpbmcgPyB0KCdjb25maXJtQWdlbnRVcGRhdGVkV2l0aEZpbGVzRXJyb3InKSA6IHQoJ2NvbmZpcm1BZ2VudFdpdGhGaWxlc0Vycm9yJylcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSBpZiAoIWhhc1BlbmRpbmdGaWxlcyAmJiAhaGFzRXJyb3JGaWxlcykge1xuICAgICAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXMoZmFsc2UpXG5cbiAgICAgICAgICAvLyBTaSBoYWLDrWEgYWNjZXNzIHBlbmRpZW50ZSB5IHlhIGVzdGFiYSBtYW5lamFkbywgZm9yemFyIHF1ZSBlbCB1c2VFZmZlY3QgZGUgYWNjZXNzIHNlIGVqZWN1dGUgZGUgbnVldm9cbiAgICAgICAgICBpZiAoYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0FjdGlvbkZpbGVzICYmIGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgc2V0RmlsZXNQcm9jZXNzZWQocHJldkNvdW50ID0+IHByZXZDb3VudCArIDEpXG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5vcGVyYXRpb25UeXBlID09PSAnY3JlYXRlJyAmJlxuICAgICAgICAgICAgIWFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNBY3Rpb25GaWxlcyAmJlxuICAgICAgICAgICAgIWZpbGVzRmluaXNoZWRSZWYuY3VycmVudFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgLy8gU2kgZXMgY3JlYWNpw7NuIHNpbiBhY2Nlc2liaWxpZGFkLCBtYXJjYXIgcXVlIGxvcyBhcmNoaXZvcyB0ZXJtaW5hcm9uXG4gICAgICAgICAgICBmaWxlc0ZpbmlzaGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgICAgICBzZXRGaWxlc1Byb2Nlc3NlZChwcmV2Q291bnQgPT4gcHJldkNvdW50ICsgMSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIGtub3dsZWRnZTogdXBkYXRlZEtub3dsZWRnZSxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzdWNjZXNzS25vd2xlZGdlRGVsZXRlICYmICFpc0xvYWRpbmdLbm93bGVkZ2UgJiYgIWVycm9yS25vd2xlZGdlKSB7XG4gICAgICAvLyBTb2xvIGNlcnJhciBzaSBOTyBoYXkgYXJjaGl2b3Mgc2llbmRvIHByb2Nlc2Fkb3NcbiAgICAgIGlmIChoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCB8fCBpc1Nob3dQcm9jZXNzRmlsZXMgfHwgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICAvLyBTaSBlbCBsb2FkZXIgc2UgY2VycsOzIHBvciB0aW1lb3V0LCBubyBtb3N0cmFyIHNuYWNrYmFyIGRlIMOpeGl0byBuaSBjZXJyYXJcbiAgICAgIGlmIChwcm9jZXNzRmlsZXNUaW1lZE91dFJlZi5jdXJyZW50KSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudFVwZGF0ZWQnKSlcbiAgICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfVxuICAgIGlmIChlcnJvcktub3dsZWRnZSkge1xuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcihcbiAgICAgICAgbW9kYWxWYWx1ZXMuaXNFZGl0aW5nID8gdCgnY29uZmlybUFnZW50VXBkYXRlZFdpdGhGaWxlc0Vycm9yJykgOiB0KCdjb25maXJtQWdlbnRXaXRoRmlsZXNFcnJvcicpXG4gICAgICApXG4gICAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgIH1cbiAgfSwgW3N1Y2Nlc3NLbm93bGVkZ2VEZWxldGUsIGlzTG9hZGluZ0tub3dsZWRnZSwgZXJyb3JLbm93bGVkZ2UsIGlzU2hvd1Byb2Nlc3NGaWxlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjb250ZXh0ID0gYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50XG5cbiAgICAvLyBTaSBoYXkgYXJjaGl2b3Mgc2llbmRvIHByb2Nlc2Fkb3MsIGVzcGVyYXIgYSBxdWUgdGVybWluZW5cbiAgICBpZiAoY29udGV4dC5oYXNBY3Rpb25GaWxlcyAmJiAoaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgfHwgaXNTaG93UHJvY2Vzc0ZpbGVzKSkge1xuICAgICAgLy8gU2kgc3VjY2Vzc1VwZGF0ZUFjY2VzcyBlc3TDoSBhY3Rpdm8sIG1hcmNhciBjb21vIG1hbmVqYWRvIHBlcm8gTk8gcmVzZXRlYXIgaGFzdGEgcXVlIHRlcm1pbmVuIGxvcyBhcmNoaXZvc1xuICAgICAgaWYgKHN1Y2Nlc3NVcGRhdGVBY2Nlc3MgJiYgIWFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCkge1xuICAgICAgICBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBTaSB5YSBmdWUgbWFuZWphZG8geSBubyBoYXkgYXJjaGl2b3MgcGVuZGllbnRlcywgZWplY3V0YXIgZWwgY2llcnJlXG4gICAgaWYgKGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCAmJiBjb250ZXh0Lmhhc0FjdGlvbkZpbGVzICYmIGNvbnRleHQub3BlcmF0aW9uVHlwZSA9PT0gJ2NyZWF0ZScpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgaWYgKHN1Y2Nlc3NVcGRhdGVBY2Nlc3MpIHtcbiAgICAgICAgcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzKClcbiAgICAgIH1cbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgICBvcGVyYXRpb25UeXBlOiBudWxsLFxuICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghc3VjY2Vzc1VwZGF0ZUFjY2Vzcykge1xuICAgICAgYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MoKVxuXG4gICAgaWYgKGNvbnRleHQub3BlcmF0aW9uVHlwZSA9PT0gJ2NyZWF0ZScpIHtcbiAgICAgIC8vIFNpIGhheSBhcmNoaXZvcywgZWwgYWdlbnRlIHlhIGZ1ZSBhZ3JlZ2FkbyB5IGVsIHRvZ2dsZSB5YSBzZSBoaXpvIGVuIHN1Y2Nlc3NDcmVhdGVcbiAgICAgIC8vIFNvbG8gbmVjZXNpdGFtb3MgY2VycmFyIGVsIG1vZGFsXG4gICAgICBpZiAoY29udGV4dC5oYXNBY3Rpb25GaWxlcykge1xuICAgICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBTaSBlbCBhZ2VudGUgZnVlIGNyZWFkbyBjb24gZmF2b3JpdG8sIG5lY2VzaXRhbW9zIG9yZGVuYXIgZGVzcHXDqXMgZGUgYWdyZWdhcmxvXG4gICAgICBjb25zdCBhZ2VudFRvQWRkID0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pc19mYXZvcml0ZSA/IHsgLi4uc3VjY2Vzc0NyZWF0ZSwgaXNfZmF2b3JpdGU6IHRydWUgfSA6IHN1Y2Nlc3NDcmVhdGVcblxuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgIGFkZEFnZW50KGFnZW50VG9BZGQpXG4gICAgICBzZWxlY3RBZ2VudChhZ2VudFRvQWRkKVxuXG4gICAgICAvLyBTaSB0aWVuZSBmYXZvcml0bywgaGFjZXIgdG9nZ2xlIHkgYWN0dWFsaXphciBlc3RhZG8gYW50ZXMgZGUgY2VycmFyXG4gICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pc19mYXZvcml0ZSkge1xuICAgICAgICAvLyBDdWFuZG8gc2UgY3JlYSB1biBhZ2VudGUgbnVldm8sIGVsIHNlcnZpZG9yIG5vIHRpZW5lIGVsIGZhdm9yaXRvIG1hcmNhZG8gYcO6blxuICAgICAgICAvLyBFbnRvbmNlcyBjdXJyZW50SXNGYXZvcml0ZSBkZWJlIHNlciBmYWxzZSBwYXJhIHF1ZSBlbCB0b2dnbGUgbG8gbWFycXVlIGNvbW8gdHJ1ZVxuICAgICAgICBjb25zdCBhZ2VudEZvclRvZ2dsZSA9IHsgLi4uYWdlbnRUb0FkZCwgaXNfZmF2b3JpdGU6IGZhbHNlIH1cbiAgICAgICAgaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudChcbiAgICAgICAgICBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgYWdlbnRGb3JUb2dnbGUsXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgLy8gQ2VycmFyIGRlc3B1w6lzIGRlIHF1ZSBlbCB0b2dnbGUgY29tcGxldGUgeSBhY3R1YWxpY2UgZWwgZXN0YWRvXG4gICAgICAgICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNvbnRleHQub3BlcmF0aW9uVHlwZSA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRVcGRhdGVkJykpXG4gICAgICB1cGRhdGVBZ2VudChzdWNjZXNzVXBkYXRlKVxuICAgICAgaWYgKGN1cnJlbnRTZWxlY3RlZEFnZW50Py5pZCA9PT0gc3VjY2Vzc1VwZGF0ZS5pZCkge1xuICAgICAgICBzZWxlY3RBZ2VudChzdWNjZXNzVXBkYXRlKVxuICAgICAgfVxuICAgICAgcmVzZXRTdWNjZXNzVXBkYXRlKClcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKSlcbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICB9XG5cbiAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgIG9wZXJhdGlvblR5cGU6IG51bGwsXG4gICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICB9XG4gIH0sIFtzdWNjZXNzVXBkYXRlQWNjZXNzLCBmaWxlc1Byb2Nlc3NlZF0pXG5cbiAgLy8gdXNlRWZmZWN0IHBhcmEgbWFuZWphciBlbCBjaWVycmUgZGVsIG1vZGFsIGN1YW5kbyB0ZXJtaW5hbiBsb3MgYXJjaGl2b3MgZW4gY3JlYWNpw7NuIHNpbiBhY2Nlc2liaWxpZGFkXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY29udGV4dCA9IGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudFxuXG4gICAgLy8gU29sbyBwcm9jZXNhciBzaTpcbiAgICAvLyAtIEVzIHVuYSBvcGVyYWNpw7NuIGRlIGNyZWFjacOzblxuICAgIC8vIC0gTm8gaGF5IGFjY2VzaWJpbGlkYWQgcGVuZGllbnRlXG4gICAgLy8gLSBMb3MgYXJjaGl2b3MgdGVybWluYXJvbiBkZSBwcm9jZXNhcnNlXG4gICAgLy8gLSBFbCBhZ2VudGUgZnVlIGNyZWFkbyBleGl0b3NhbWVudGVcbiAgICAvLyAtIEHDum4gbm8gc2UgaGEgY2VycmFkbyBlbCBtb2RhbFxuICAgIGlmIChcbiAgICAgIGNvbnRleHQub3BlcmF0aW9uVHlwZSA9PT0gJ2NyZWF0ZScgJiZcbiAgICAgICFjb250ZXh0Lmhhc0FjdGlvbkZpbGVzICYmXG4gICAgICBmaWxlc0ZpbmlzaGVkUmVmLmN1cnJlbnQgJiZcbiAgICAgIHN1Y2Nlc3NDcmVhdGUgJiZcbiAgICAgICFoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCAmJlxuICAgICAgIWlzU2hvd1Byb2Nlc3NGaWxlc1xuICAgICkge1xuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICBmaWxlc0ZpbmlzaGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgIG9wZXJhdGlvblR5cGU6IG51bGwsXG4gICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRhbWJpw6luIG1hbmVqYXIgZWwgY2FzbyBjdWFuZG8gaGF5IGFjY2VzaWJpbGlkYWQgeSBhcmNoaXZvcyB0ZXJtaW5hcm9uXG4gICAgaWYgKFxuICAgICAgY29udGV4dC5vcGVyYXRpb25UeXBlID09PSAnY3JlYXRlJyAmJlxuICAgICAgY29udGV4dC5oYXNBY3Rpb25GaWxlcyAmJlxuICAgICAgYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50ICYmXG4gICAgICBzdWNjZXNzQ3JlYXRlICYmXG4gICAgICAhaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgJiZcbiAgICAgICFpc1Nob3dQcm9jZXNzRmlsZXNcbiAgICApIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgaWYgKHN1Y2Nlc3NVcGRhdGVBY2Nlc3MpIHtcbiAgICAgICAgcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzKClcbiAgICAgIH1cbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgICBvcGVyYXRpb25UeXBlOiBudWxsLFxuICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBmaWxlc1Byb2Nlc3NlZCxcbiAgICBzdWNjZXNzQ3JlYXRlLFxuICAgIHN1Y2Nlc3NVcGRhdGVBY2Nlc3MsXG4gICAgaXNTaG93UHJvY2Vzc0ZpbGVzLFxuICAgIGhhbmRsZVNuYWNrYmFyU3VjY2VzcyxcbiAgICB0LFxuICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSxcbiAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MsXG4gICAgaGFuZGxlQ2xvc2UsXG4gIF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNTaG93UHJvY2Vzc0ZpbGVzKSB7XG4gICAgICBjb25zdCBjaGFubmVsID0gYGtub3dsZWRnZS1iYXNlLnN0YXR1czoke2FnZW50QnlJZCA/IGFnZW50QnlJZD8uaWQgOiBzdWNjZXNzQ3JlYXRlPy5pZD8udG9TdHJpbmcoKX1gXG4gICAgICBpZiAoJF9zYykge1xuICAgICAgICBpZiAoaXNTdWJzY3JpYmVkKSB7XG4gICAgICAgICAgJF9zYz8uc3Vic2NyaWJlSGFuZGxlcihjaGFubmVsLCB3ZWJTb2NrZXRGdW5jdGlvbilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBtb2RlbERhdGEgPSB7XG4gICAgICAgICAgICBtb2RlbF9oYXNoOiBjaGFubmVsLFxuICAgICAgICAgICAgYWN0aW9uOiAkX3NjPy5hY3Rpb25UeXBlPy5TVUJTQ1JJQkUsXG4gICAgICAgICAgfVxuICAgICAgICAgICRfc2M/LnVwZGF0ZUNvbm5lY3Rpb25Nb2RlbChtb2RlbERhdGEsIGNoYW5uZWwsIHVzZXIsIHVzZXIsICRfc2MuY2hhbm5lbFR5cGU/Lk1PREVMX0NIQU5ORUwpXG4gICAgICAgICAgc2V0SXNTdWJzY3JpYmVkKHRydWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpc1Nob3dQcm9jZXNzRmlsZXMsIGlzU3Vic2NyaWJlZCwgJF9zYywgYWdlbnRCeUlkLCBzdWNjZXNzQ3JlYXRlXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNPcGVuIHx8ICFhZ2VudE1vZGVscy5sZW5ndGgpIHJldHVyblxuICAgIGlmIChhZ2VudExvYWRpbmcgJiYgIXByZWZldGNoZWRBZ2VudEJ5SWRSZWYuY3VycmVudCkgcmV0dXJuXG5cbiAgICBjb25zdCBhcHBseUVkaXRpbmdBZ2VudCA9IChzb3VyY2U6IGFueSkgPT4ge1xuICAgICAgaWYgKHNvdXJjZS50eXBlICE9PSAnY3VzdG9tJyB8fCAhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdlcnJvckFjY2Vzc0RlbmllZCcpKVxuICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgfSwgMzAwMClcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBzZXRNb2RhbFZhbHVlcyhwcmV2ID0+IHtcbiAgICAgICAgY29uc3QgYWdlbnRWYWx1ZXNUb1NldCA9IGJ1aWxkRWRpdGluZ01vZGFsVmFsdWVzRnJvbUFnZW50RGV0YWlsKHNvdXJjZSwgYWdlbnRNb2RlbHMsIHByZXYpXG4gICAgICAgIGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50ID0gYWdlbnRWYWx1ZXNUb1NldFxuICAgICAgICByZXR1cm4gYWdlbnRWYWx1ZXNUb1NldFxuICAgICAgfSlcbiAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICAgIGlmIChwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudCkge1xuICAgICAgICBzZXRTZWN0aW9uKHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50KVxuICAgICAgICBwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudCA9IG51bGxcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFnZW50SWQgPSBzb3VyY2UuaWRcbiAgICAgIGlmIChhZ2VudElkKSB7XG4gICAgICAgIGdldEFnZW50Q29ubmVjdG9ycyhhZ2VudElkLnRvU3RyaW5nKCkpXG4gICAgICAgICAgLnRoZW4oY29ubmVjdG9ycyA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb25uZWN0ZWQgPSBkZXJpdmVDb25uZWN0ZWRDb25uZWN0b3JTbHVncyhjb25uZWN0b3JzKVxuICAgICAgICAgICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG5leHQgPSB7XG4gICAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5OiB7XG4gICAgICAgICAgICAgICAgICAuLi5wcmV2LmFjY2Vzc2liaWxpdHksXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZENvbm5lY3RvcnM6IGNvbm5lY3RlZCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgICAgIC4uLmZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LFxuICAgICAgICAgICAgICAgIGFjY2Vzc2liaWxpdHk6IHtcbiAgICAgICAgICAgICAgICAgIC4uLmZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LmFjY2Vzc2liaWxpdHksXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZENvbm5lY3RvcnM6IGNvbm5lY3RlZCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGFnZW50IGNvbm5lY3RvcnM6JywgZXJyb3IpXG4gICAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgY29uc3QgcHJlZmV0Y2hlZCA9IHByZWZldGNoZWRBZ2VudEJ5SWRSZWYuY3VycmVudFxuICAgIGlmIChwcmVmZXRjaGVkKSB7XG4gICAgICBwcmVmZXRjaGVkQWdlbnRCeUlkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBhcHBseUVkaXRpbmdBZ2VudChwcmVmZXRjaGVkKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGFnZW50QnlJZCAmJiAhYWdlbnRMb2FkaW5nICYmIGFnZW50TW9kZWxzLmxlbmd0aCkge1xuICAgICAgYXBwbHlFZGl0aW5nQWdlbnQoYWdlbnRCeUlkKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFpc0xvYWRpbmcgJiYgIWFnZW50TG9hZGluZyAmJiAhYWdlbnRCeUlkICYmICFtb2RhbFZhbHVlcy5pc0VkaXRpbmcpIHtcbiAgICAgIHNldE1vZGFsVmFsdWVzKHByZXYgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgZ2VuZXJhbDoge1xuICAgICAgICAgIC4uLnByZXYuZ2VuZXJhbCxcbiAgICAgICAgICBhaU1vZGVsOiBhZ2VudE1vZGVsc1swXSxcbiAgICAgICAgfSxcbiAgICAgIH0pKVxuICAgIH1cbiAgfSwgW2FnZW50QnlJZCwgaXNPcGVuLCBpc0xvYWRpbmcsIGFnZW50TG9hZGluZywgYWdlbnRNb2RlbHM/Lmxlbmd0aCwgbW9kYWxWYWx1ZXMuaXNFZGl0aW5nLCB0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChlcnJvckdldEFnZW50QnlJZCkge1xuICAgICAgaWYgKGVycm9yR2V0QWdlbnRCeUlkID09PSBcIkFjY2VzcyBkZW5pZWQ6IFlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoaXMgYWdlbnRcIikge1xuICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2Vycm9yQWNjZXNzRGVuaWVkJykpXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgfSwgMzAwMClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKGVycm9yR2V0QWdlbnRCeUlkKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgIH0sIDMwMDApXG4gICAgfVxuICB9LCBbZXJyb3JHZXRBZ2VudEJ5SWRdKVxuXG4gIGNvbnN0IHNob3VsZERpc2FibGVTYXZlRm9yQ2xpZW50cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghbW9kYWxWYWx1ZXM/LmFjY2Vzc2liaWxpdHk/LmNsaWVudHMgfHwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5jbGllbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIHJldHVybiBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmNsaWVudHMuc29tZShjbGllbnQgPT4gY2xpZW50LmlzX2FjdGl2ZSA9PT0gZmFsc2UgfHwgY2xpZW50LmlzX2RlbGV0ZWQgPT09IHRydWUpXG4gIH0sIFttb2RhbFZhbHVlcz8uYWNjZXNzaWJpbGl0eT8uY2xpZW50c10pXG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlRmF2b3JpdGUgPSAoKSA9PiB7XG4gICAgaWYgKG1vZGFsVmFsdWVzPy5nZW5lcmFsPy5pZCkge1xuICAgICAgLy8gRXhpc3RpbmcgYWdlbnRcbiAgICAgIHRvZ2dsZUZhdm9yaXRlKFxuICAgICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLFxuICAgICAgICB1cGRhdGVkQWdlbnQgPT4ge1xuICAgICAgICAgIHNldE1vZGFsVmFsdWVzKHByZXYgPT4gKHtcbiAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgICAgIC4uLnByZXYuZ2VuZXJhbCxcbiAgICAgICAgICAgICAgaXNfZmF2b3JpdGU6IHVwZGF0ZWRBZ2VudC5pc19mYXZvcml0ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSkpXG4gICAgICAgICAgLy8gQWN0dWFsaXphciBlbCBlc3RhZG8gZGUgYWdlbnRlcyB5IG9yZGVuYXIgY3VhbmRvIHNlIGhhY2UgZGVzZGUgZWwgbW9kYWwgQUJNXG4gICAgICAgICAgdXBkYXRlQWdlbnRGYXZvcml0ZSh1cGRhdGVkQWdlbnQsIHRydWUpXG4gICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdEZhdm9yaXRlLCB7XG4gICAgICAgICAgICBvcHRpb246IHVwZGF0ZWRBZ2VudC5pc19mYXZvcml0ZSA/ICdhZGQnIDogJ3JlbW92ZScsXG4gICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICBtb2RhbFZhbHVlcz8uZ2VuZXJhbD8uaXNfZmF2b3JpdGVcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ3JlYXRlIG5ldyBhZ2VudFxuICAgICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgLi4ucHJldi5nZW5lcmFsLFxuICAgICAgICAgIGlzX2Zhdm9yaXRlOiAhcHJldi5nZW5lcmFsLmlzX2Zhdm9yaXRlLFxuICAgICAgICB9LFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgaWYgKCFpc09wZW4gfHwgKCF1c2VyUGVybWlzc2lvbnM/LmNyZWF0ZSAmJiAhdXNlclBlcm1pc3Npb25zPy5lZGl0ICYmICF1c2VyUGVybWlzc2lvbnM/LmRlbGV0ZSkpIHJldHVybiBudWxsXG5cbiAgcmV0dXJuIGNyZWF0ZVBvcnRhbChcbiAgICA8QmFja2Ryb3AgekluZGV4PXthYm1BZ2VudE1vZGFsWkluZGV4fSBvbkNsaWNrPXtoYW5kbGVCYWNrZHJvcENsaWNrfT5cbiAgICAgIDxTQ0FBTVdyYXBwZXIgcmVmPXttb2RhbFJlZn0gdGFiSW5kZXg9ey0xfT5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8U0NBQU1XcmFwcGVyU3Bpbm5lcj5cbiAgICAgICAgICAgIDxTQ0FBTVdyYXBwZXJTcGlubmVyQ29udGVudD5cbiAgICAgICAgICAgICAgPFNwaW5uZXJMb3R0aWUgc2l6ZT1cIjgwcHhcIiBjb2xvcj1cInByaW1hcnlcIiAvPlxuICAgICAgICAgICAgPC9TQ0FBTVdyYXBwZXJTcGlubmVyQ29udGVudD5cbiAgICAgICAgICA8L1NDQUFNV3JhcHBlclNwaW5uZXI+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHtpc1Nob3dQcm9jZXNzRmlsZXMgJiYgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPyAoXG4gICAgICAgICAgICAgIDxBYm1Mb2FkZXJGaWxlc1xuICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzPXttb2RhbFZhbHVlcy5rbm93bGVkZ2V9XG4gICAgICAgICAgICAgICAgbGFiZWw9e3QoYHByb2Nlc3NpbmdLbm93bGVkZ2UuJHttb2RhbFZhbHVlcy5pc0VkaXRpbmcgPyAnZGVzY3JpcHRpb25VcGRhdGUnIDogJ2Rlc2NyaXB0aW9uQ3JlYXRlJ31gKX1cbiAgICAgICAgICAgICAgICBvblRpbWVvdXQ9e2hhbmRsZVByb2Nlc3NGaWxlc1RpbWVvdXR9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxTQ0FBTUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgIDxTQ0FBTUhlYWRlckxlZnQ+XG4gICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgekluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsVmFsdWVzPy5nZW5lcmFsPy5pc19mYXZvcml0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHQoJ2dlbmVyYWxTZWN0aW9uLnJlbW92ZUZhdm9yaXRlJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0KCdnZW5lcmFsU2VjdGlvbi5hZGRGYXZvcml0ZScpXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUFNSGVhZGVyRmF2b3JpdGUgb25DbGljaz17aGFuZGxlVG9nZ2xlRmF2b3JpdGV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9ezIwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezIwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17bW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlzX2Zhdm9yaXRlID8gJyNGRkM2MjQnIDogJyNhNmE2YTYnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPXttb2RhbFZhbHVlcz8uZ2VuZXJhbD8uaXNfZmF2b3JpdGUgPyAnI0ZGQzYyNCcgOiAnbm9uZSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJzb2xpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17bW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlzX2Zhdm9yaXRlID8gJycgOiAnc3Rhci1mYXZvcml0ZS1pY29uJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTUhlYWRlckZhdm9yaXRlPlxuICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0FBTUhlYWRlclRpdGxlPnttb2RhbFZhbHVlcz8uaXNFZGl0aW5nID8gdCgnZWRpdEFnZW50JykgOiB0KCduZXdBZ2VudCcpfTwvU0NBQU1IZWFkZXJUaXRsZT5cbiAgICAgICAgICAgICAgICAgIDwvU0NBQU1IZWFkZXJMZWZ0PlxuICAgICAgICAgICAgICAgICAgPFNDQUFNSGVhZGVyQ2xvc2VCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5jYW5jZWxNb2RhbClcbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc0xvYWRpbmcgfHwgaXNMb2FkaW5nS25vd2xlZGdlIHx8IGlzTG9hZGluZ0NyZWF0ZSB8fCBpc0xvYWRpbmdVcGRhdGVBY2Nlc3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxDcm9zcyBjb2xvcj1cIiNhNmE2YTZcIiB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICAgICAgICA8L1NDQUFNSGVhZGVyQ2xvc2VCdXR0b24+XG4gICAgICAgICAgICAgICAgPC9TQ0FBTUhlYWRlcj5cbiAgICAgICAgICAgICAgICA8U0NBQU1Db250ZW50IGhhc1Njcm9sbD17c2VjdGlvbiAhPT0gJ2tub3dsZWRnZSd9PlxuICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhcj5cbiAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZT17c2VjdGlvbiA9PT0gJ2dlbmVyYWwnfVxuICAgICAgICAgICAgICAgICAgICAgICRpbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWN0aW9uQ2hhbmdlKCdnZW5lcmFsJyl9XG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhYm0tYWdlbnQtbW9kYWwtZ2VuZXJhbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8Q2F0ZWdvcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXtgJHtzZWN0aW9uID09PSAnZ2VuZXJhbCcgPyAncmdiYSg2MywgNjMsIDYzLCAxKScgOiAncmdiYSgxNjYsIDE2NiwgMTY2LCAxKSd9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVRpdGxlIGlzQWN0aXZlPXtzZWN0aW9uID09PSAnZ2VuZXJhbCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3QoJ2dlbmVyYWxTZWN0aW9uLnRpdGxlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtVGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFySXRlbT5cblxuICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVxuICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlPXtzZWN0aW9uID09PSAna25vd2xlZGdlJ31cbiAgICAgICAgICAgICAgICAgICAgICAkaW5kZXg9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlU2VjdGlvbkNoYW5nZSgna25vd2xlZGdlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhYm0tYWdlbnQtbW9kYWwta25vd2xlZGdlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxCcmFpbkljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXtgJHtzZWN0aW9uID09PSAna25vd2xlZGdlJyA/ICdyZ2JhKDYzLCA2MywgNjMsIDEpJyA6ICdyZ2JhKDE2NiwgMTY2LCAxNjYsIDEpJ31gfVxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9ezE4fVxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtVGl0bGUgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdrbm93bGVkZ2UnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdrbm93bGVkZ2VTZWN0aW9uLnRpdGxlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtVGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFySXRlbT5cblxuICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVxuICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlPXtzZWN0aW9uID09PSAnYWNjZXNzaWJpbGl0eSd9XG4gICAgICAgICAgICAgICAgICAgICAgJGluZGV4PXsyfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlY3Rpb25DaGFuZ2UoJ2FjY2Vzc2liaWxpdHknKX1cbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImFibS1hZ2VudC1tb2RhbC1hY2Nlc3NpYmlsaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NpYmlsaXR5SWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e2Ake3NlY3Rpb24gPT09ICdhY2Nlc3NpYmlsaXR5JyA/ICdyZ2JhKDYzLCA2MywgNjMsIDEpJyA6ICdyZ2JhKDE2NiwgMTY2LCAxNjYsIDEpJ31gfVxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9ezE4fVxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtVGl0bGUgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdhY2Nlc3NpYmlsaXR5J30+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24udGl0bGVUYWInKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW1UaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICB7c2hvdWxkRGlzYWJsZVNhdmVGb3JDbGllbnRzICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jbGllbnRzRXJyb3InKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1FcnJvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWxlcnQgY29sb3I9XCIjQzcwNTA1XCIgd2lkdGg9XCIxNnB4XCIgaGVpZ2h0PVwiMTZweFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFySXRlbUVycm9yPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFySXRlbT5cbiAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFyPlxuICAgICAgICAgICAgICAgICAge1NlY3Rpb25CeUtleVtzZWN0aW9uXSh7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogbW9kYWxWYWx1ZXMsXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVNldEFnZW50VmFsdWVzOiBoYW5kbGVTZXRBZ2VudFZhbHVlc0J5S2V5cyxcbiAgICAgICAgICAgICAgICAgICAgYWdlbnRNb2RlbHMsXG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0tub3dsZWRnZTogW10sXG4gICAgICAgICAgICAgICAgICAgIG5ld0tub3dsZWRnZTogW10sXG4gICAgICAgICAgICAgICAgICAgIG9uUmVtb3ZlRXhpc3RpbmdLbm93bGVkZ2U6ICgpID0+IHt9LFxuICAgICAgICAgICAgICAgICAgICBvblJlbW92ZU5ld0tub3dsZWRnZTogKCkgPT4ge30sXG4gICAgICAgICAgICAgICAgICAgIG9uRmlsZUVycm9yQ2hhbmdlOiBzZXRIYXNGaWxlRXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwWkluZGV4LFxuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9TQ0FBTUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPFNDQUFNRm9vdGVyIGlzRWRpdGluZz17ISFtb2RhbFZhbHVlcz8uaXNFZGl0aW5nICYmICEhdXNlclBlcm1pc3Npb25zPy5kZWxldGV9PlxuICAgICAgICAgICAgICAgICAgeyEhbW9kYWxWYWx1ZXM/LmlzRWRpdGluZyAmJlxuICAgICAgICAgICAgICAgICAgICAhIXVzZXJQZXJtaXNzaW9ucz8uZGVsZXRlICYmXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1EZWxldGVCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q1VCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbldpdGhJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaG93TW9kYWxEZWxldGUodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzTG9hZGluZyB8fCBpc0xvYWRpbmdLbm93bGVkZ2UgfHwgaXNMb2FkaW5nQ3JlYXRlIHx8IGlzTG9hZGluZ1VwZGF0ZUFjY2Vzc31cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFdyYXBwZXJDZW50ZXJJY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUcmFzaCBjb2xvcj1cIiMwOGNcIiB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3QoJ2RlbGV0ZUFnZW50Jyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvV3JhcHBlckNlbnRlckljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0NVQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NBQU1EZWxldGVCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZ2FwOiAnMjRweCcgfX0+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNhdmVCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBpc0Rpc2FibGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICF2YWxpZGF0ZUZpZWxkVmFsdWVzKG1vZGFsVmFsdWVzKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVBZ2VudFZhbHVlc0lzU2FtZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0tub3dsZWRnZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nQ3JlYXRlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVcGRhdGVBY2Nlc3MgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZERpc2FibGVTYXZlRm9yQ2xpZW50cyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzRmlsZUVycm9yc1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxDVUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ29uZmlybUFjdGlvbihudWxsLCAnY3JlYXRlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICF2YWxpZGF0ZUZpZWxkVmFsdWVzKG1vZGFsVmFsdWVzKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZUFnZW50VmFsdWVzSXNTYW1lKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0tub3dsZWRnZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdDcmVhdGUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXBkYXRlQWNjZXNzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZERpc2FibGVTYXZlRm9yQ2xpZW50cyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNGaWxlRXJyb3JzXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge21vZGFsVmFsdWVzLmlzRWRpdGluZyA/IHQoJ3NhdmVDaGFuZ2VzJykgOiB0KCdjcmVhdGVBZ2VudExhYmVsQnV0dG9uJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9DVUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNhdmVCdXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L1NDQUFNRm9vdGVyPlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L1NDQUFNV3JhcHBlcj5cbiAgICAgIHtzaG93TW9kYWxEZWxldGUgJiYgKFxuICAgICAgICA8RGVsZXRlUXVlc3Rpb25Nb2RhbFxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dNb2RhbERlbGV0ZShmYWxzZSl9XG4gICAgICAgICAgaGFuZGxlcnM9e3tcbiAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1BY3Rpb246IChwcm9wczogYW55KSA9PiBoYW5kbGVDb25maXJtQWN0aW9uKHByb3BzLCAnZGVsZXRlJyksXG4gICAgICAgICAgfX1cbiAgICAgICAgICBjaGF0PXt7IHRpdGxlOiBtb2RhbFZhbHVlcy5nZW5lcmFsLm5hbWUsIGlkOiBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkIH19XG4gICAgICAgICAgYWN0aW9uPVwiYWdlbnRcIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L0JhY2tkcm9wPixcbiAgICBzZWxlY3RvclxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsRUFBRUMsV0FBVyxRQUFRLE9BQU87QUFDekUsU0FBU0MsWUFBWSxRQUFRLFdBQVc7QUFDeEMsU0FBU0MsY0FBYyxR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
|
|
1420
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJ1c2VDYWxsYmFjayIsImNyZWF0ZVBvcnRhbCIsInVzZVRyYW5zbGF0aW9uIiwiQ1VCdXR0b24iLCJDYXRlZ29yeSIsIkFsZXJ0IiwiVHJhc2giLCJTdGFyIiwiQ3Jvc3MiLCJTcGlubmVyTG90dGllIiwiVG9vbHRpcCIsIkFibUFjY2Vzc2liaWxpdHlTZWN0aW9uIiwiQmFja2Ryb3AiLCJ1c2VVc2VyIiwiQWNjZXNzaWJpbGl0eUljb24iLCJCcmFpbkljb24iLCJ1c2VBZ2VudE1vZGVsIiwidXNlR2V0QWdlbnRCeUlkIiwiQWJtR2VuZXJhbFNlY3Rpb24iLCJBYm1Lbm93bGVkZ2VTZWN0aW9uIiwiU0NBQU1Db250ZW50IiwiU0NBQU1Gb290ZXIiLCJTQ0FBTUhlYWRlciIsIlNDQUFNSGVhZGVyVGl0bGUiLCJTQ0FBTUhlYWRlckxlZnQiLCJTQ0FBTUhlYWRlckZhdm9yaXRlIiwiU0NBQU1IZWFkZXJDbG9zZUJ1dHRvbiIsIlNDQUFNU2lkZWJhciIsIlNDQUFNV3JhcHBlciIsIlNDQUFNU2lkZWJhckl0ZW0iLCJTQ0FBTVNpZGViYXJJdGVtVGl0bGUiLCJTQ0FBTURlbGV0ZUJ1dHRvbiIsIlNDQUFNU2F2ZUJ1dHRvbiIsIlNDQUFNV3JhcHBlclNwaW5uZXIiLCJTQ0FBTVdyYXBwZXJTcGlubmVyQ29udGVudCIsIlNDQUFNU2lkZWJhckl0ZW1FcnJvciIsInVzZUNyZWF0ZUFnZW50IiwidXNlRGVsZXRlQWdlbnQiLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJ1c2VHbG9iYWxDb250ZXh0IiwidXNlVXBkYXRlQWdlbnQiLCJ1c2VLbm93bGVkZ2VPcGVyYXRpb25zIiwiQWJtTG9hZGVyRmlsZXMiLCJXcmFwcGVyQ2VudGVySWNvbiIsIkVWRU5UUyIsInVzZUV2ZW50IiwiRGVsZXRlUXVlc3Rpb25Nb2RhbCIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJ1c2VBY2Nlc3NDbGllbnQiLCJ1c2VUb2dnbGVGYXZvcml0ZSIsImRlcml2ZVRhc2tBY2Nlc3NGcm9tVG9vbEdyb3VwU2x1Z3MiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJpbml0aWFsVmFsdWVzIiwiT2JqZWN0IiwiZnJlZXplIiwiaXNFZGl0aW5nIiwia25vd2xlZGdlIiwiZ2VuZXJhbCIsIm5hbWUiLCJlbW9qaSIsImludHJvZHVjdGlvbiIsImlucHV0UGxhY2Vob2xkZXIiLCJpc0FjdGl2ZSIsImFpTW9kZWwiLCJpZCIsInVzZXJQcm9tcHQiLCJrbm93bGVkZ2VCYXNlcyIsImlzX2Zhdm9yaXRlIiwiYWNjZXNzaWJpbGl0eSIsImFjY2Vzc1R5cGUiLCJjbGllbnRzIiwidGFza0FjY2VzcyIsIlNlY3Rpb25CeUtleSIsInByb3BzIiwiX29iamVjdFNwcmVhZCIsInZhbGlkYXRlRmllbGRWYWx1ZXMiLCJ2YWx1ZVRvVmFsaWRhdGUiLCJidWlsZEVkaXRpbmdNb2RhbFZhbHVlc0Zyb21BZ2VudERldGFpbCIsImFnZW50QnlJZCIsImFnZW50TW9kZWxzIiwicHJldiIsIl9hZ2VudEJ5SWQka25vd2xlZGdlQiIsIl9hZ2VudEJ5SWQkY2xpZW50cyIsImFnZW50TW9kZWwiLCJmaW5kIiwibW9kZWwiLCJtb2RlbEFpSWQiLCJjcmVhdGVkX2J5IiwiY3JlYXRlZEJ5IiwibWFwIiwiayIsImZpbGUiLCJGaWxlIiwiZmlsZW5hbWUiLCJ0b1N0cmluZyIsInNpemUiLCJmaWxlX3NpemVfYnl0ZXMiLCJ0eXBlIiwib3JpZ2luYWxfZmlsZV90eXBlIiwic3RhdHVzIiwidXJsX29yaWdpbmFsIiwidW5kZWZpbmVkIiwidXJsX3RodW1ibmFpbCIsImFjY2VzcyIsImNsaWVudCIsIl9jbGllbnQkaWQiLCJfY2xpZW50JGlzX2FjdGl2ZSIsIl9jbGllbnQkaXNfZGVsZXRlZCIsImlzX2FjdGl2ZSIsImlzX2RlbGV0ZWQiLCJ0b29sR3JvdXBTbHVncyIsIkFibUFnZW50TW9kYWwiLCJfcmVmIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJfbW9kYWxWYWx1ZXMkYWNjZXNzaWIzIiwiX21vZGFsVmFsdWVzJGdlbmVyYWwzIiwiX21vZGFsVmFsdWVzJGdlbmVyYWw0IiwiX21vZGFsVmFsdWVzJGdlbmVyYWw1IiwiX21vZGFsVmFsdWVzJGdlbmVyYWw2IiwiYWRkQWdlbnQiLCJ1cGRhdGVBZ2VudCIsInJlbW92ZUFnZW50IiwidXBkYXRlQWdlbnRGYXZvcml0ZSIsInNlbGVjdEZpcnN0QWdlbnQiLCJ1c2VyIiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlVHJhbnNsYXRpb24iLCJ0IiwiX3VzZUdsb2JhbENvbnRleHQiLCJjdXJyZW50U2VsZWN0ZWRBZ2VudCIsImFnZW50Iiwic2VsZWN0QWdlbnQiLCJhYm1BZ2VudE1vZGFsWkluZGV4IiwidG9vbHRpcFpJbmRleCIsIl91c2VUb2dnbGVGYXZvcml0ZSIsInRvZ2dsZUZhdm9yaXRlIiwic2VsZWN0b3IiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaXNTdWJzY3JpYmVkIiwic2V0SXNTdWJzY3JpYmVkIiwibW9kYWxSZWYiLCJoYXNQZW5kaW5nRmlsZXNSZWYiLCJhY3Rpb25zVG9GaWxlcyIsInRvRGVsZXRlIiwidG9VcGxvYWQiLCJhY2Nlc3NVcGRhdGVDb250ZXh0IiwiaXNGcm9tQ3JlYXRpb24iLCJpc0Zyb21FZGl0aW5nIiwiaGFzQWN0aW9uRmlsZXMiLCJvcGVyYXRpb25UeXBlIiwiaGFzQmVlbkNhbGxlZCIsImFjY2Vzc0hhbmRsZWRSZWYiLCJhZ2VudENyZWF0ZWRSZWYiLCJwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYiLCJwcmVmZXRjaGVkQWdlbnRCeUlkUmVmIiwiZmlsZXNGaW5pc2hlZFJlZiIsInByb2Nlc3NGaWxlc1RpbWVkT3V0UmVmIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJmaWxlc1Byb2Nlc3NlZCIsInNldEZpbGVzUHJvY2Vzc2VkIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc09wZW4iLCJzZXRJc09wZW4iLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNob3dNb2RhbERlbGV0ZSIsInNldFNob3dNb2RhbERlbGV0ZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic2VjdGlvbiIsInNldFNlY3Rpb24iLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwibW9kYWxWYWx1ZXMiLCJzZXRNb2RhbFZhbHVlcyIsIl91c2VHZXRBZ2VudEJ5SWQiLCJhZ2VudExvYWRpbmciLCJsb2FkaW5nIiwiaGFuZGxlR2V0QWdlbnRCeUlkIiwiaGFuZGxlQ2xlYW5BZ2VudCIsImVycm9yR2V0QWdlbnRCeUlkIiwiZXJyb3IiLCJfdXNlQWdlbnRNb2RlbCIsImdldEFsbEFnZW50TW9kZWxzIiwiZmlyc3RWYWx1ZUFnZW50IiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsImlzU2hvd1Byb2Nlc3NGaWxlcyIsInNldElzU2hvd1Byb2Nlc3NGaWxlcyIsIl91c2VTdGF0ZTE1IiwiX3VzZVN0YXRlMTYiLCJoYXNGaWxlRXJyb3JzIiwic2V0SGFzRmlsZUVycm9ycyIsInVzZXJQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiX3VzZURlbGV0ZUFnZW50IiwiaGFuZGxlRGVsZXRlQWdlbnQiLCJzdWNjZXNzRGVsZXRlIiwic3VjY2VzcyIsInJlc2V0U3VjY2VzcyIsIl91c2VVcGRhdGVBZ2VudCIsImhhbmRsZVVwZGF0ZUFnZW50Iiwic3VjY2Vzc1VwZGF0ZSIsInJlc2V0U3VjY2Vzc1VwZGF0ZSIsIl91c2VDcmVhdGVBZ2VudCIsImhhbmRsZUNyZWF0ZUFnZW50IiwiaXNMb2FkaW5nQ3JlYXRlIiwic3VjY2Vzc0NyZWF0ZSIsInJlc2V0U3VjY2Vzc0NyZWF0ZSIsIl91c2VTbmFja0Jhck1hbmFnZXIiLCJoYW5kbGVTbmFja2JhclN1Y2Nlc3MiLCJoYW5kbGVTbmFja2JhckVycm9yIiwiX3VzZUtub3dsZWRnZU9wZXJhdGlvIiwiaGFuZGxlQ3JlYXRlS25vd2xlZGdlcyIsImhhbmRsZURlbGV0ZUtub3dsZWRnZXMiLCJoYW5kbGVEZWxldGVBbmRDcmVhdGVLbm93bGVkZ2VzIiwiaXNMb2FkaW5nS25vd2xlZGdlIiwiZXJyb3JLbm93bGVkZ2UiLCJzdWNjZXNzS25vd2xlZGdlRGVsZXRlIiwiaGFuZGxlUmVzZXRTdWNjZXNzU2F2ZSIsImhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSIsIl91c2VBY2Nlc3NDbGllbnQiLCJoYW5kbGVBY2Nlc3NDbGllbnQiLCJzdWNjZXNzVXBkYXRlQWNjZXNzIiwiaXNMb2FkaW5nVXBkYXRlQWNjZXNzIiwicmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzIiwiaGFuZGxlUmVzZXRTdWNjZXNzIiwiYXJlQ2xpZW50c0FycmF5c0VxdWFsIiwiY2xpZW50czEiLCJjbGllbnRzMiIsImxlbmd0aCIsImNsaWVudHMxSWRzIiwiYyIsImNsaWVudElkIiwic29ydCIsImNsaWVudHMySWRzIiwiZXZlcnkiLCJpbmRleCIsImhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkIiwiX2ZpcnN0VmFsdWVBZ2VudCRjdXJyIiwiX21vZGFsVmFsdWVzJGFjY2Vzc2liIiwiX2ZpcnN0VmFsdWVBZ2VudCRjdXJyMiIsImN1cnJlbnQiLCJhY2Nlc3NUeXBlU2FtZSIsImNsaWVudHNTYW1lIiwidGFza0FjY2Vzc1NhbWUiLCJ2YWxpZGF0ZUFnZW50VmFsdWVzSXNTYW1lIiwiX2ZpcnN0VmFsdWVBZ2VudCRjdXJyMyIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsJCIsIl9maXJzdFZhbHVlQWdlbnQkY3VycjQiLCJfbW9kYWxWYWx1ZXMka25vd2xlZGciLCJfZmlyc3RWYWx1ZUFnZW50JGN1cnI1IiwiX21vZGFsVmFsdWVzJGtub3dsZWRnMiIsIl9maXJzdFZhbHVlQWdlbnQkY3VycjYiLCJfYWN0aW9uc1RvRmlsZXMkY3VycmUiLCJfYWN0aW9uc1RvRmlsZXMkY3VycmUyIiwidG9VcGRhdGUiLCJoYXNBbnlWYWx1ZUZvckNyZWF0aW9uIiwiX21vZGFsVmFsdWVzJGdlbmVyYWwkMiIsIl9hZ2VudE1vZGVscyQiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbCQzIiwiaXNEZWZhdWx0QWlNb2RlbCIsImRlZmF1bHRJbnB1dFBsYWNlaG9sZGVyIiwiaXNEZWZhdWx0SW5wdXRQbGFjZWhvbGRlciIsImRlZmF1bHRVc2VyUHJvbXB0UGxhY2Vob2xkZXIiLCJpc0RlZmF1bHRVc2VyUHJvbXB0IiwiaGFzTmFtZSIsInRyaW0iLCJoYXNFbW9qaSIsImhhc0ludHJvZHVjdGlvbiIsImhhc0lucHV0UGxhY2Vob2xkZXIiLCJoYXNVc2VyUHJvbXB0IiwiaGFzS25vd2xlZGdlIiwiaGFzQ3VzdG9tQWlNb2RlbCIsImhhc0FjY2Vzc2liaWxpdHkiLCJoYXNDaGFuZ2VzRm9yRWRpdGluZyIsImhhc1BlbmRpbmdDaGFuZ2VzIiwiaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudCIsImFnZW50SWQiLCJvblN1Y2Nlc3MiLCJvbkVycm9yIiwidXBkYXRlZEFnZW50IiwiaGFuZGxlQ2xvc2UiLCJjb25maXJtTWVzc2FnZSIsIndpbmRvdyIsImNvbmZpcm0iLCJoYW5kbGVCYWNrZHJvcENsaWNrIiwiZXZlbnQiLCJ0YXJnZXQiLCJjdXJyZW50VGFyZ2V0IiwiaGFuZGxlU2VjdGlvbkNoYW5nZSIsIm5ld1NlY3Rpb24iLCJ0YWJTZWN0aW9uIiwib3B0aW9uIiwiaGFuZGxlU2V0QWdlbnRWYWx1ZXNCeUtleXMiLCJfcmVmMiIsImtleSIsInZhbHVlIiwiZGVsZXRlS25vd2xlZGdlIiwiX2FjdGlvbnNUb0ZpbGVzJGN1cnJlMyIsInB1c2giLCJhcHBseSIsIl90b0NvbnN1bWFibGVBcnJheSIsImZpbGVzUHJldklkcyIsIlNldCIsIm5ld0ZpbGVzIiwiZmlsdGVyIiwiaGFzIiwidmFsdWVJZHMiLCJjb25jYXQiLCJrbm93bGVkZ2VGaWxlcyIsIl9kZWZpbmVQcm9wZXJ0eSIsImhhbmRsZUNvbmZpcm1BY3Rpb24iLCJfcmVmMyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiY2hhdCIsImFjdGlvbiIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiYWJydXB0IiwiY29uZmlybUFjdGlvbiIsInN0b3AiLCJfeCIsIl94MiIsImFyZ3VtZW50cyIsImhhbmRsZVNldEFnZW50VmFsdWVzIiwiX2FnZW50VmFsdWVzJHZhbHVlcyIsIl9hZ2VudFZhbHVlcyR2YWx1ZXMzIiwiYWdlbnRWYWx1ZXMiLCJkZXRhaWwiLCJpbml0aWFsU2VjdGlvbiIsImluY2x1ZGVzIiwidmFsdWVzIiwiX2FnZW50VmFsdWVzJHZhbHVlczIiLCJwcmVmZXRjaGVkQWdlbnRCeUlkIiwibmV4dFZhbHVlcyIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiX2RvY3VtZW50IiwiYm9keSIsIm9yaWdpbmFsT3ZlcmZsb3ciLCJzdHlsZSIsIm92ZXJmbG93IiwiaGFuZGxlQmVmb3JlVW5sb2FkIiwicHJldmVudERlZmF1bHQiLCJyZXR1cm5WYWx1ZSIsInByb21pc2VzIiwiZmlsZXNUb0RlbGV0ZSIsImZpbGVzVG9DcmVhdGUiLCJhZ2VudFdpdGhGYXZvcml0ZSIsImFnZW50Rm9yVG9nZ2xlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJhbGwiLCJmaWxlcyIsImFpQ2hhdEZhdm9yaXRlIiwiZmlsZXNUb1VwbG9hZCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImhhbmRsZVByb2Nlc3NGaWxlc1RpbWVvdXQiLCJ3ZWJTb2NrZXRGdW5jdGlvbiIsIl9yZWY0IiwibW9kZWxEYXRhIiwibW9kZWxfZGF0YSIsImZpbGVTdGF0dXMiLCJ1cGRhdGVkS25vd2xlZGdlIiwia25vd2xlZGdlX2Jhc2VfaWQiLCJoYXNQZW5kaW5nRmlsZXMiLCJzb21lIiwiaGFzRXJyb3JGaWxlcyIsInByZXZDb3VudCIsImNvbnRleHQiLCJhZ2VudFRvQWRkIiwiX3N1Y2Nlc3NDcmVhdGUkaWQiLCJjaGFubmVsIiwiJF9zYyIsIl8kX3NjIiwic3Vic2NyaWJlSGFuZGxlciIsIl8kX3NjMiIsIl8kX3NjMyIsIl8kX3NjJGNoYW5uZWxUeXBlIiwibW9kZWxfaGFzaCIsImFjdGlvblR5cGUiLCJTVUJTQ1JJQkUiLCJ1cGRhdGVDb25uZWN0aW9uTW9kZWwiLCJjaGFubmVsVHlwZSIsIk1PREVMX0NIQU5ORUwiLCJhcHBseUVkaXRpbmdBZ2VudCIsInNvdXJjZSIsInNldFRpbWVvdXQiLCJhZ2VudFZhbHVlc1RvU2V0IiwicHJlZmV0Y2hlZCIsInNob3VsZERpc2FibGVTYXZlRm9yQ2xpZW50cyIsIl9tb2RhbFZhbHVlcyRhY2Nlc3NpYjIiLCJoYW5kbGVUb2dnbGVGYXZvcml0ZSIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsIiwiX21vZGFsVmFsdWVzJGdlbmVyYWwyIiwiY3JlYXRlIiwiZWRpdCIsInpJbmRleCIsIm9uQ2xpY2siLCJjaGlsZHJlbiIsInJlZiIsInRhYkluZGV4IiwiY29sb3IiLCJhdHRhY2htZW50cyIsImxhYmVsIiwib25UaW1lb3V0IiwidGl0bGUiLCJ3aWR0aCIsImhlaWdodCIsImZpbGwiLCJ2YXJpYW50IiwiY2xhc3NOYW1lIiwiY2FuY2VsTW9kYWwiLCJkaXNhYmxlZCIsImhhc1Njcm9sbCIsIiRpbmRleCIsImV4aXN0aW5nS25vd2xlZGdlIiwibmV3S25vd2xlZGdlIiwib25SZW1vdmVFeGlzdGluZ0tub3dsZWRnZSIsIm9uUmVtb3ZlTmV3S25vd2xlZGdlIiwib25GaWxlRXJyb3JDaGFuZ2UiLCJjaGlsZHJlbldpdGhJY29uIiwiZGlzcGxheSIsImdhcCIsImlzRGlzYWJsZWQiLCJvbkNsb3NlIiwiaGFuZGxlcnMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9vcmdhbmlzbXMvQWJtQWdlbnRNb2RhbC9BYm1BZ2VudE1vZGFsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1hbGVydCAqL1xuLyogZXNsaW50LWRpc2FibGUgY2FtZWxjYXNlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2luZGVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWN5Y2xlICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9qc3gtbm8tdXNlbGVzcy1mcmFnbWVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlZiAqL1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuXG5pbXBvcnQgeyBDVUJ1dHRvbiB9IGZyb20gJ0Bwcm9qZWN0Y29yL2J1dHRvbi9saWIvY29tcG9uZW50cy9DVUJ1dHRvbidcbmltcG9ydCB7IENhdGVnb3J5IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2F0ZWdvcnknXG5pbXBvcnQgeyBBbGVydCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0FsZXJ0J1xuaW1wb3J0IHsgVHJhc2ggfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9UcmFzaCdcbmltcG9ydCB7IFN0YXIgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9TdGFyJ1xuaW1wb3J0IHsgQ3Jvc3MgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9Dcm9zcydcbmltcG9ydCB7IFNwaW5uZXJMb3R0aWUgfSBmcm9tICdAcHJvamVjdGNvci9jb3ItY29tbW9ucy9saWIvY29tcG9uZW50cy9zcGlubmVyLWxvdHRpZSdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IEFibUFjY2Vzc2liaWxpdHlTZWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL0FibVNlY3Rpb24vQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24vQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24nXG5pbXBvcnQgeyBCYWNrZHJvcCB9IGZyb20gJy4uLy4uL2F0b21zL0JhY2tkcm9wJ1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBBY2Nlc3NpYmlsaXR5SWNvbiwgQnJhaW5JY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMnXG5pbXBvcnQgeyB1c2VBZ2VudE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQWdlbnRNb2RlbC91c2VBZ2VudE1vZGVsJ1xuaW1wb3J0IHsgQWdlbnQsIEFnZW50TW9kZWwgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IHVzZUdldEFnZW50QnlJZCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2dldEFnZW50QnlJZCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IEFibUdlbmVyYWxTZWN0aW9uLCBBYm1Lbm93bGVkZ2VTZWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL0FibVNlY3Rpb24nXG5pbXBvcnQgeyBNb2RhbFZhbHVlcyB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50TW9kYWwnXG5pbXBvcnQge1xuICBTQ0FBTUNvbnRlbnQsXG4gIFNDQUFNRm9vdGVyLFxuICBTQ0FBTUhlYWRlcixcbiAgU0NBQU1IZWFkZXJUaXRsZSxcbiAgU0NBQU1IZWFkZXJMZWZ0LFxuICBTQ0FBTUhlYWRlckZhdm9yaXRlLFxuICBTQ0FBTUhlYWRlckNsb3NlQnV0dG9uLFxuICBTQ0FBTVNpZGViYXIsXG4gIFNDQUFNV3JhcHBlcixcbiAgU0NBQU1TaWRlYmFySXRlbSxcbiAgU0NBQU1TaWRlYmFySXRlbVRpdGxlLFxuICBTQ0FBTURlbGV0ZUJ1dHRvbixcbiAgU0NBQU1TYXZlQnV0dG9uLFxuICBTQ0FBTVdyYXBwZXJTcGlubmVyLFxuICBTQ0FBTVdyYXBwZXJTcGlubmVyQ29udGVudCxcbiAgU0NBQU1TaWRlYmFySXRlbUVycm9yLFxufSBmcm9tICcuL0FibUFnZW50TW9kYWwuc3R5bGVzJ1xuaW1wb3J0IHsgdXNlQ3JlYXRlQWdlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VBZ2VudE1vZGVsL3VzZUNyZWF0ZUFnZW50J1xuaW1wb3J0IHsgdXNlRGVsZXRlQWdlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VBZ2VudE1vZGVsL3VzZURlbGV0ZUFnZW50J1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVXBkYXRlQWdlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VBZ2VudE1vZGVsL3VzZVVwZGF0ZUFnZW50J1xuaW1wb3J0IHsgdXNlS25vd2xlZGdlT3BlcmF0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUtub3dsZWRnZSdcbmltcG9ydCB7IEFibUxvYWRlckZpbGVzIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL0FibVNlY3Rpb24vQWJtTG9hZGVyRmlsZXMnXG5pbXBvcnQgeyBXcmFwcGVyQ2VudGVySWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL1dyYXBwZXJDZW50ZXJJY29uJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uL0RlbGV0ZVF1ZXN0aW9uTW9kYWwvRGVsZXRlUXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuaW1wb3J0IHsgdXNlQWNjZXNzQ2xpZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQWNjZXNzQ2xpZW50L3VzZUFjY2Vzc0NsaWVudCdcbmltcG9ydCB7IHVzZVRvZ2dsZUZhdm9yaXRlIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MnXG5pbXBvcnQgeyBkZXJpdmVUYXNrQWNjZXNzRnJvbVRvb2xHcm91cFNsdWdzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvbm9ybWFsaXplQWdlbnRDb25uZWN0b3JzJ1xuXG5jb25zdCBpbml0aWFsVmFsdWVzID0gT2JqZWN0LmZyZWV6ZSh7XG4gIGlzRWRpdGluZzogZmFsc2UsXG4gIGtub3dsZWRnZTogW10sXG4gIGdlbmVyYWw6IHtcbiAgICBuYW1lOiAnJyxcbiAgICBlbW9qaTogJycsXG4gICAgaW50cm9kdWN0aW9uOiAnJyxcbiAgICBpbnB1dFBsYWNlaG9sZGVyOiAnJyxcbiAgICBpc0FjdGl2ZTogZmFsc2UsXG4gICAgYWlNb2RlbDogbnVsbCxcbiAgICBpZDogbnVsbCxcbiAgICB1c2VyUHJvbXB0OiBudWxsLFxuICAgIGtub3dsZWRnZUJhc2VzOiBbXSxcbiAgICBpc19mYXZvcml0ZTogZmFsc2UsXG4gIH0sXG4gIGFjY2Vzc2liaWxpdHk6IHtcbiAgICBhY2Nlc3NUeXBlOiAnY29tcGFueScsXG4gICAgY2xpZW50czogbnVsbCxcbiAgICB0YXNrQWNjZXNzOiB0cnVlLFxuICB9LFxufSlcblxudHlwZSBBYm1TZWN0aW9uID0gJ2dlbmVyYWwnIHwgJ2tub3dsZWRnZScgfCAndHJhaW5pbmcnIHwgJ3Rlc3RpbmcnIHwgJ2FjY2Vzc2liaWxpdHknXG5cbmV4cG9ydCBjb25zdCBTZWN0aW9uQnlLZXkgPSB7XG4gIGdlbmVyYWw6IChwcm9wczoge1xuICAgIHZhbHVlczogTW9kYWxWYWx1ZXNcbiAgICBoYW5kbGVTZXRBZ2VudFZhbHVlczogKHtcbiAgICAgIGtleSxcbiAgICAgIHZhbHVlLFxuICAgICAgZGVsZXRlS25vd2xlZGdlLFxuICAgIH06IHtcbiAgICAgIGtleTogc3RyaW5nXG4gICAgICB2YWx1ZTogdW5rbm93blxuICAgICAgZGVsZXRlS25vd2xlZGdlPzogYm9vbGVhblxuICAgIH0pID0+IHZvaWRcbiAgICBhZ2VudE1vZGVsczogQWdlbnRNb2RlbFtdXG4gICAgbG9hZGluZzogYm9vbGVhblxuICAgIHRvb2x0aXBaSW5kZXg/OiBudW1iZXJcbiAgfSkgPT4gPEFibUdlbmVyYWxTZWN0aW9uIHsuLi5wcm9wc30gLz4sXG4gIGtub3dsZWRnZTogKHByb3BzOiB7XG4gICAgdmFsdWVzOiBNb2RhbFZhbHVlc1xuICAgIGhhbmRsZVNldEFnZW50VmFsdWVzOiAoeyBrZXksIHZhbHVlIH06IHsga2V5OiBzdHJpbmc7IHZhbHVlOiB1bmtub3duIH0pID0+IHZvaWRcbiAgICBleGlzdGluZ0tub3dsZWRnZTogQXR0YWNobWVudEZpbGVbXVxuICAgIG5ld0tub3dsZWRnZTogQXR0YWNobWVudEZpbGVbXVxuICAgIG9uUmVtb3ZlRXhpc3RpbmdLbm93bGVkZ2U6IChmaWxlSWQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uUmVtb3ZlTmV3S25vd2xlZGdlOiAoZmlsZUlkOiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbkZpbGVFcnJvckNoYW5nZTogKGhhc0Vycm9yczogYm9vbGVhbikgPT4gdm9pZFxuICAgIHRvb2x0aXBaSW5kZXg/OiBudW1iZXJcbiAgfSkgPT4gPEFibUtub3dsZWRnZVNlY3Rpb24gey4uLnByb3BzfSAvPixcbiAgYWNjZXNzaWJpbGl0eTogKHByb3BzOiB7XG4gICAgdmFsdWVzOiBNb2RhbFZhbHVlc1xuICAgIGhhbmRsZVNldEFnZW50VmFsdWVzOiAoeyBrZXksIHZhbHVlIH06IHsga2V5OiBzdHJpbmc7IHZhbHVlOiB1bmtub3duIH0pID0+IHZvaWRcbiAgfSkgPT4gPEFibUFjY2Vzc2liaWxpdHlTZWN0aW9uIHsuLi5wcm9wc30gLz4sXG59XG5cbnR5cGUgQWJtQWdlbnRNb2RhbFByb3BzID0ge1xuICBhZGRBZ2VudDogKG5ld0FnZW50OiBBZ2VudCwgb3B0aW9ucz86IHsgbmF2aWdhdGVIb21lPzogYm9vbGVhbiB9KSA9PiB2b2lkXG4gIHJlbW92ZUFnZW50OiAoYWdlbnRJZDogbnVtYmVyIHwgc3RyaW5nKSA9PiB2b2lkXG4gIHVwZGF0ZUFnZW50OiAodXBkYXRlZEFnZW50OiBBZ2VudCkgPT4gdm9pZFxuICB1cGRhdGVBZ2VudEZhdm9yaXRlOiAodXBkYXRlZEFnZW50OiBBZ2VudCwgc2hvdWxkU29ydD86IGJvb2xlYW4pID0+IHZvaWRcbiAgc2VsZWN0Rmlyc3RBZ2VudDogKGFnZW50SWQ6IHN0cmluZykgPT4gdm9pZFxufVxuXG5jb25zdCB2YWxpZGF0ZUZpZWxkVmFsdWVzID0gKHZhbHVlVG9WYWxpZGF0ZTogTW9kYWxWYWx1ZXMpID0+IHtcbiAgaWYgKCF2YWx1ZVRvVmFsaWRhdGUuZ2VuZXJhbC5uYW1lIHx8ICF2YWx1ZVRvVmFsaWRhdGUuZ2VuZXJhbC51c2VyUHJvbXB0KSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuLyoqIE1pc21hIGVzdHJ1Y3R1cmEgcXVlIGVsIGVmZWN0byBxdWUgaGlkcmF0YSBkZXNkZSB1c2VHZXRBZ2VudEJ5SWQgKHRvZGFzIGxhcyBwZXN0YcOxYXMgZGVsIEFCTSkuICovXG5mdW5jdGlvbiBidWlsZEVkaXRpbmdNb2RhbFZhbHVlc0Zyb21BZ2VudERldGFpbChcbiAgYWdlbnRCeUlkOiBhbnksXG4gIGFnZW50TW9kZWxzOiBBZ2VudE1vZGVsW10sXG4gIHByZXY6IE1vZGFsVmFsdWVzXG4pOiBNb2RhbFZhbHVlcyB7XG4gIGNvbnN0IGFnZW50TW9kZWwgPSBhZ2VudE1vZGVscy5maW5kKG1vZGVsID0+IG1vZGVsLmlkID09PSBhZ2VudEJ5SWQubW9kZWxBaUlkKVxuICByZXR1cm4ge1xuICAgIC4uLnByZXYsXG4gICAgaXNFZGl0aW5nOiB0cnVlLFxuICAgIGdlbmVyYWw6IHtcbiAgICAgIGVtb2ppOiBhZ2VudEJ5SWQuZW1vamksXG4gICAgICBuYW1lOiBhZ2VudEJ5SWQubmFtZSxcbiAgICAgIGludHJvZHVjdGlvbjogYWdlbnRCeUlkLmludHJvZHVjdGlvbixcbiAgICAgIGlucHV0UGxhY2Vob2xkZXI6IGFnZW50QnlJZC5pbnB1dFBsYWNlaG9sZGVyLFxuICAgICAgaXNBY3RpdmU6IGFnZW50QnlJZC5pc0FjdGl2ZSxcbiAgICAgIGFpTW9kZWw6IGFnZW50TW9kZWwgfHwgbnVsbCxcbiAgICAgIGlkOiBhZ2VudEJ5SWQuaWQsXG4gICAgICB1c2VyUHJvbXB0OiBhZ2VudEJ5SWQudXNlclByb21wdCxcbiAgICAgIGtub3dsZWRnZUJhc2VzOiBbXSxcbiAgICAgIGlzX2Zhdm9yaXRlOiBhZ2VudEJ5SWQuaXNfZmF2b3JpdGUsXG4gICAgICBjcmVhdGVkX2J5OiBhZ2VudEJ5SWQuY3JlYXRlZEJ5LFxuICAgIH0sXG4gICAga25vd2xlZGdlOlxuICAgICAgYWdlbnRCeUlkLmtub3dsZWRnZUJhc2VzPy5tYXAoKGs6IGFueSkgPT4gKHtcbiAgICAgICAgZmlsZTogbmV3IEZpbGUoW10sIGsuZmlsZW5hbWUpLFxuICAgICAgICBpZDogay5pZC50b1N0cmluZygpLFxuICAgICAgICBuYW1lOiBrLmZpbGVuYW1lLFxuICAgICAgICBzaXplOiBrLmZpbGVfc2l6ZV9ieXRlcyB8fCAwLFxuICAgICAgICB0eXBlOiBrLm9yaWdpbmFsX2ZpbGVfdHlwZSxcbiAgICAgICAgc3RhdHVzOiBrLnN0YXR1cyxcbiAgICAgICAgdXJsX29yaWdpbmFsOiBrLnVybF9vcmlnaW5hbCB8fCB1bmRlZmluZWQsXG4gICAgICAgIHVybF90aHVtYm5haWw6IGsudXJsX3RodW1ibmFpbCB8fCB1bmRlZmluZWQsXG4gICAgICB9KSkgfHwgW10sXG4gICAgYWNjZXNzaWJpbGl0eToge1xuICAgICAgYWNjZXNzVHlwZTogYWdlbnRCeUlkLmFjY2VzcyxcbiAgICAgIGNsaWVudHM6XG4gICAgICAgIGFnZW50QnlJZC5jbGllbnRzPy5tYXAoKGNsaWVudDogYW55KSA9PiAoe1xuICAgICAgICAgIGlkOiBjbGllbnQuaWQ/LnRvU3RyaW5nKCkgfHwgJycsXG4gICAgICAgICAgbmFtZTogY2xpZW50Lm5hbWUsXG4gICAgICAgICAgaXNfYWN0aXZlOiBjbGllbnQuaXNfYWN0aXZlID8/IGZhbHNlLFxuICAgICAgICAgIGlzX2RlbGV0ZWQ6IGNsaWVudC5pc19kZWxldGVkID8/IGZhbHNlLFxuICAgICAgICB9KSkgfHwgbnVsbCxcbiAgICAgIHRhc2tBY2Nlc3M6IGRlcml2ZVRhc2tBY2Nlc3NGcm9tVG9vbEdyb3VwU2x1Z3MoYWdlbnRCeUlkLnRvb2xHcm91cFNsdWdzKSxcbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBBYm1BZ2VudE1vZGFsID0gKHtcbiAgYWRkQWdlbnQsXG4gIHVwZGF0ZUFnZW50LFxuICByZW1vdmVBZ2VudCxcbiAgdXBkYXRlQWdlbnRGYXZvcml0ZSxcbiAgc2VsZWN0Rmlyc3RBZ2VudCxcbn06IEFibUFnZW50TW9kYWxQcm9wcykgPT4ge1xuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IGV2ZW50QW1wbGl0dWRlID0gdXNlRXZlbnQoKVxuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCdhYm1fYWdlbnRfc2VjdGlvbicpXG4gIC8vIGNvbnN0ICRfc2M6IGFueSA9IG51bGxcbiAgY29uc3QgeyBhZ2VudDogY3VycmVudFNlbGVjdGVkQWdlbnQsIHNlbGVjdEFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgYWJtQWdlbnRNb2RhbFpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTExMiwgJ2FnZW50TW9kYWwnKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnbmVzdGVkTW9kYWwnKVxuICBjb25zdCB7IHRvZ2dsZUZhdm9yaXRlIH0gPSB1c2VUb2dnbGVGYXZvcml0ZSgpXG4gIGNvbnN0IHNlbGVjdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FibS1hZ2VudC1tb2RhbCcpXG4gIGNvbnN0IFtpc1N1YnNjcmliZWQsIHNldElzU3Vic2NyaWJlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgbW9kYWxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGhhc1BlbmRpbmdGaWxlc1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgYWN0aW9uc1RvRmlsZXMgPSB1c2VSZWY8YW55Pih7XG4gICAgdG9EZWxldGU6IFtdLFxuICAgIHRvVXBsb2FkOiBbXSxcbiAgfSlcbiAgY29uc3QgYWNjZXNzVXBkYXRlQ29udGV4dCA9IHVzZVJlZjx7XG4gICAgaXNGcm9tQ3JlYXRpb246IGJvb2xlYW5cbiAgICBpc0Zyb21FZGl0aW5nOiBib29sZWFuXG4gICAgaGFzQWN0aW9uRmlsZXM6IGJvb2xlYW5cbiAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyB8ICd1cGRhdGUnIHwgbnVsbFxuICAgIGhhc0JlZW5DYWxsZWQ/OiBib29sZWFuXG4gIH0+KHtcbiAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgIG9wZXJhdGlvblR5cGU6IG51bGwsXG4gICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gIH0pXG4gIGNvbnN0IGFjY2Vzc0hhbmRsZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGFnZW50Q3JlYXRlZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYgPSB1c2VSZWY8QWJtU2VjdGlvbiB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHByZWZldGNoZWRBZ2VudEJ5SWRSZWYgPSB1c2VSZWY8YW55PihudWxsKVxuICBjb25zdCBmaWxlc0ZpbmlzaGVkUmVmID0gdXNlUmVmKGZhbHNlKVxuICAvLyBNYXJjYSBjdWFuZG8gY2VycmFtb3MgZWwgbG9hZGVyIHBvciBlbCB0aW1lb3V0IGRlIHNlZ3VyaWRhZCBkZSBhcmNoaXZvcy5cbiAgLy8gTWllbnRyYXMgZXN0w6kgYWN0aXZvLCBsb3MgdXNlRWZmZWN0IGRlIHBvc3QtZ3VhcmRhZG8gTk8gZGViZW4gZGlzcGFyYXJcbiAgLy8gc25hY2tiYXJzIGRlIMOpeGl0byBuaSBhdXRvLWNlcnJhciBlbCBtb2RhbC5cbiAgY29uc3QgcHJvY2Vzc0ZpbGVzVGltZWRPdXRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IFtmaWxlc1Byb2Nlc3NlZCwgc2V0RmlsZXNQcm9jZXNzZWRdID0gdXNlU3RhdGUoMClcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2hvd01vZGFsRGVsZXRlLCBzZXRTaG93TW9kYWxEZWxldGVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzZWN0aW9uLCBzZXRTZWN0aW9uXSA9IHVzZVN0YXRlPEFibVNlY3Rpb24+KCdnZW5lcmFsJylcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbW9kYWxWYWx1ZXMsIHNldE1vZGFsVmFsdWVzXSA9IHVzZVN0YXRlPHtcbiAgICBnZW5lcmFsOiBhbnlcbiAgICBrbm93bGVkZ2U6IGFueVxuICAgIGlzRWRpdGluZzogYm9vbGVhblxuICAgIGFjY2Vzc2liaWxpdHk6IGFueVxuICB9Pihpbml0aWFsVmFsdWVzKVxuICBjb25zdCB7XG4gICAgbG9hZGluZzogYWdlbnRMb2FkaW5nLFxuICAgIGhhbmRsZUdldEFnZW50QnlJZCxcbiAgICBhZ2VudDogYWdlbnRCeUlkLFxuICAgIGhhbmRsZUNsZWFuQWdlbnQsXG4gICAgZXJyb3I6IGVycm9yR2V0QWdlbnRCeUlkLFxuICB9ID0gdXNlR2V0QWdlbnRCeUlkKClcbiAgY29uc3QgeyBhZ2VudE1vZGVscywgZ2V0QWxsQWdlbnRNb2RlbHMgfSA9IHVzZUFnZW50TW9kZWwoKVxuICBjb25zdCBmaXJzdFZhbHVlQWdlbnQgPSB1c2VSZWY8YW55PihudWxsKVxuICBjb25zdCBbaXNTaG93UHJvY2Vzc0ZpbGVzLCBzZXRJc1Nob3dQcm9jZXNzRmlsZXNdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtoYXNGaWxlRXJyb3JzLCBzZXRIYXNGaWxlRXJyb3JzXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcblxuICBjb25zdCB7IGhhbmRsZURlbGV0ZUFnZW50LCBzdWNjZXNzOiBzdWNjZXNzRGVsZXRlLCByZXNldFN1Y2Nlc3MgfSA9IHVzZURlbGV0ZUFnZW50KClcbiAgY29uc3QgeyBoYW5kbGVVcGRhdGVBZ2VudCwgc3VjY2Vzczogc3VjY2Vzc1VwZGF0ZSwgcmVzZXRTdWNjZXNzOiByZXNldFN1Y2Nlc3NVcGRhdGUgfSA9IHVzZVVwZGF0ZUFnZW50KClcblxuICBjb25zdCB7XG4gICAgaGFuZGxlQ3JlYXRlQWdlbnQsXG4gICAgaXNMb2FkaW5nOiBpc0xvYWRpbmdDcmVhdGUsXG4gICAgc3VjY2Vzczogc3VjY2Vzc0NyZWF0ZSxcbiAgICByZXNldFN1Y2Nlc3M6IHJlc2V0U3VjY2Vzc0NyZWF0ZSxcbiAgfSA9IHVzZUNyZWF0ZUFnZW50KClcblxuICBjb25zdCB7IGhhbmRsZVNuYWNrYmFyU3VjY2VzcywgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcblxuICBjb25zdCB7XG4gICAgaGFuZGxlQ3JlYXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVEZWxldGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMsXG4gICAgaXNMb2FkaW5nOiBpc0xvYWRpbmdLbm93bGVkZ2UsXG4gICAgZXJyb3I6IGVycm9yS25vd2xlZGdlLFxuICAgIHN1Y2Nlc3NEZWxldGU6IHN1Y2Nlc3NLbm93bGVkZ2VEZWxldGUsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzU2F2ZSxcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUsXG4gIH0gPSB1c2VLbm93bGVkZ2VPcGVyYXRpb25zKClcblxuICBjb25zdCB7XG4gICAgaGFuZGxlQWNjZXNzQ2xpZW50LFxuICAgIHN1Y2Nlc3M6IHN1Y2Nlc3NVcGRhdGVBY2Nlc3MsXG4gICAgaXNMb2FkaW5nOiBpc0xvYWRpbmdVcGRhdGVBY2Nlc3MsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzOiByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MsXG4gIH0gPSB1c2VBY2Nlc3NDbGllbnQoKVxuXG4gIGlmICghc2VsZWN0b3IpIHJldHVybiBudWxsXG5cbiAgY29uc3QgYXJlQ2xpZW50c0FycmF5c0VxdWFsID0gKGNsaWVudHMxOiBhbnlbXSB8IG51bGwsIGNsaWVudHMyOiBhbnlbXSB8IG51bGwpID0+IHtcbiAgICBpZiAoIWNsaWVudHMxICYmICFjbGllbnRzMikgcmV0dXJuIHRydWVcbiAgICBpZiAoIWNsaWVudHMxIHx8ICFjbGllbnRzMikgcmV0dXJuIGZhbHNlXG4gICAgaWYgKGNsaWVudHMxLmxlbmd0aCAhPT0gY2xpZW50czIubGVuZ3RoKSByZXR1cm4gZmFsc2VcblxuICAgIGNvbnN0IGNsaWVudHMxSWRzID0gY2xpZW50czEubWFwKGMgPT4gYy5jbGllbnRJZCkuc29ydCgpXG4gICAgY29uc3QgY2xpZW50czJJZHMgPSBjbGllbnRzMi5tYXAoYyA9PiBjLmNsaWVudElkKS5zb3J0KClcblxuICAgIHJldHVybiBjbGllbnRzMUlkcy5ldmVyeSgoaWQsIGluZGV4KSA9PiBpZCA9PT0gY2xpZW50czJJZHNbaW5kZXhdKVxuICB9XG5cbiAgY29uc3QgaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQgPSAoKSA9PiB7XG4gICAgaWYgKCFmaXJzdFZhbHVlQWdlbnQuY3VycmVudD8uYWNjZXNzaWJpbGl0eSB8fCAhbW9kYWxWYWx1ZXM/LmFjY2Vzc2liaWxpdHkpIHJldHVybiB0cnVlXG5cbiAgICBjb25zdCBhY2Nlc3NUeXBlU2FtZSA9IG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlXG4gICAgY29uc3QgY2xpZW50c1NhbWUgPSBhcmVDbGllbnRzQXJyYXlzRXF1YWwoXG4gICAgICBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmNsaWVudHMsXG4gICAgICBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5hY2Nlc3NpYmlsaXR5LmNsaWVudHNcbiAgICApXG4gICAgY29uc3QgdGFza0FjY2Vzc1NhbWUgPVxuICAgICAgKG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkudGFza0FjY2VzcyA/PyB0cnVlKSA9PT0gKGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LmFjY2Vzc2liaWxpdHkudGFza0FjY2VzcyA/PyB0cnVlKVxuXG4gICAgcmV0dXJuICFhY2Nlc3NUeXBlU2FtZSB8fCAhY2xpZW50c1NhbWUgfHwgIXRhc2tBY2Nlc3NTYW1lXG4gIH1cblxuICBjb25zdCB2YWxpZGF0ZUFnZW50VmFsdWVzSXNTYW1lID0gKCkgPT4ge1xuICAgIGlmICghZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQ/LmdlbmVyYWwgfHwgIW1vZGFsVmFsdWVzPy5nZW5lcmFsKSByZXR1cm4gZmFsc2VcblxuICAgIHJldHVybiAoXG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLm5hbWUgPT09IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LmdlbmVyYWwubmFtZSAmJlxuICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC5lbW9qaSA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuZ2VuZXJhbC5lbW9qaSAmJlxuICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pbnRyb2R1Y3Rpb24gPT09IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LmdlbmVyYWwuaW50cm9kdWN0aW9uICYmXG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmlucHV0UGxhY2Vob2xkZXIgPT09IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LmdlbmVyYWwuaW5wdXRQbGFjZWhvbGRlciAmJlxuICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC5haU1vZGVsPy5pZCA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuZ2VuZXJhbC5haU1vZGVsPy5pZCAmJlxuICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC51c2VyUHJvbXB0ID09PSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5nZW5lcmFsLnVzZXJQcm9tcHQgJiZcbiAgICAgIChtb2RhbFZhbHVlcy5rbm93bGVkZ2U/Lmxlbmd0aCA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQ/Lmtub3dsZWRnZT8ubGVuZ3RoIHx8XG4gICAgICAgICghbW9kYWxWYWx1ZXMua25vd2xlZGdlPy5sZW5ndGggJiYgIWZpcnN0VmFsdWVBZ2VudC5jdXJyZW50Py5rbm93bGVkZ2U/Lmxlbmd0aCkpICYmXG4gICAgICAhYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwZGF0ZT8ubGVuZ3RoICYmXG4gICAgICAhYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZT8ubGVuZ3RoICYmXG4gICAgICAhaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQoKVxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhc0FueVZhbHVlRm9yQ3JlYXRpb24gPSAoKSA9PiB7XG4gICAgaWYgKG1vZGFsVmFsdWVzLmlzRWRpdGluZykgcmV0dXJuIGZhbHNlXG5cbiAgICBjb25zdCBpc0RlZmF1bHRBaU1vZGVsID0gISFhZ2VudE1vZGVscy5sZW5ndGggJiYgbW9kYWxWYWx1ZXMuZ2VuZXJhbC5haU1vZGVsPy5pZCA9PT0gYWdlbnRNb2RlbHNbMF0/LmlkXG5cbiAgICBjb25zdCBkZWZhdWx0SW5wdXRQbGFjZWhvbGRlciA9IHQoJ2dlbmVyYWxTZWN0aW9uLmlucHV0UGxhY2Vob2xkZXInKVxuICAgIGNvbnN0IGlzRGVmYXVsdElucHV0UGxhY2Vob2xkZXIgPSBtb2RhbFZhbHVlcy5nZW5lcmFsLmlucHV0UGxhY2Vob2xkZXIgPT09IGRlZmF1bHRJbnB1dFBsYWNlaG9sZGVyXG5cbiAgICBjb25zdCBkZWZhdWx0VXNlclByb21wdFBsYWNlaG9sZGVyID0gdCgnZ2VuZXJhbFNlY3Rpb24uaW5pdGlhbFByb21wdFBsYWNlaG9sZGVyJylcbiAgICBjb25zdCBpc0RlZmF1bHRVc2VyUHJvbXB0ID1cbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwudXNlclByb21wdCA9PT0gZGVmYXVsdFVzZXJQcm9tcHRQbGFjZWhvbGRlciB8fFxuICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC51c2VyUHJvbXB0ID09PSAnJyB8fFxuICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC51c2VyUHJvbXB0ID09PSBudWxsXG5cbiAgICBjb25zdCBoYXNOYW1lID0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5uYW1lLnRyaW0oKSAhPT0gJydcbiAgICBjb25zdCBoYXNFbW9qaSA9IG1vZGFsVmFsdWVzLmdlbmVyYWwuZW1vamkudHJpbSgpICE9PSAnJ1xuICAgIGNvbnN0IGhhc0ludHJvZHVjdGlvbiA9IG1vZGFsVmFsdWVzLmdlbmVyYWwuaW50cm9kdWN0aW9uLnRyaW0oKSAhPT0gJydcbiAgICBjb25zdCBoYXNJbnB1dFBsYWNlaG9sZGVyID0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pbnB1dFBsYWNlaG9sZGVyLnRyaW0oKSAhPT0gJycgJiYgIWlzRGVmYXVsdElucHV0UGxhY2Vob2xkZXJcbiAgICBjb25zdCBoYXNVc2VyUHJvbXB0ID0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC51c2VyUHJvbXB0Py50cmltKCkgIT09ICcnICYmICFpc0RlZmF1bHRVc2VyUHJvbXB0XG4gICAgY29uc3QgaGFzS25vd2xlZGdlID0gISFtb2RhbFZhbHVlcy5rbm93bGVkZ2UubGVuZ3RoXG4gICAgY29uc3QgaGFzQ3VzdG9tQWlNb2RlbCA9IG1vZGFsVmFsdWVzLmdlbmVyYWwuYWlNb2RlbCAmJiAhaXNEZWZhdWx0QWlNb2RlbFxuICAgIGNvbnN0IGhhc0FjY2Vzc2liaWxpdHkgPSBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55J1xuXG4gICAgcmV0dXJuIChcbiAgICAgIGhhc05hbWUgfHxcbiAgICAgIGhhc0Vtb2ppIHx8XG4gICAgICBoYXNJbnRyb2R1Y3Rpb24gfHxcbiAgICAgIGhhc0lucHV0UGxhY2Vob2xkZXIgfHxcbiAgICAgIGhhc1VzZXJQcm9tcHQgfHxcbiAgICAgIGhhc0tub3dsZWRnZSB8fFxuICAgICAgaGFzQ3VzdG9tQWlNb2RlbCB8fFxuICAgICAgaGFzQWNjZXNzaWJpbGl0eVxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhc0NoYW5nZXNGb3JFZGl0aW5nID0gKCkgPT4ge1xuICAgIGlmICghbW9kYWxWYWx1ZXMuaXNFZGl0aW5nKSByZXR1cm4gZmFsc2VcblxuICAgIHJldHVybiAoXG4gICAgICAhdmFsaWRhdGVBZ2VudFZhbHVlc0lzU2FtZSgpIHx8XG4gICAgICAhIWFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUubGVuZ3RoIHx8XG4gICAgICAhIWFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQubGVuZ3RoXG4gICAgKVxuICB9XG5cbiAgY29uc3QgaGFzUGVuZGluZ0NoYW5nZXMgPSAoKSA9PiB7XG4gICAgcmV0dXJuIGhhc0FueVZhbHVlRm9yQ3JlYXRpb24oKSB8fCBoYXNDaGFuZ2VzRm9yRWRpdGluZygpXG4gIH1cblxuICAvLyBIZWxwZXIgcGFyYSBtYW5lamFyIGVsIHRvZ2dsZSBkZSBmYXZvcml0byB5IGFjdHVhbGl6YXIgZWwgZXN0YWRvIGNvbiBvcmRlbmFtaWVudG9cbiAgY29uc3QgaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudCA9IHVzZUNhbGxiYWNrKFxuICAgIChhZ2VudElkOiBzdHJpbmcsIGFnZW50OiBBZ2VudCwgb25TdWNjZXNzPzogKHVwZGF0ZWRBZ2VudDogQWdlbnQpID0+IHZvaWQsIG9uRXJyb3I/OiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgICB0b2dnbGVGYXZvcml0ZShcbiAgICAgICAgYWdlbnRJZCxcbiAgICAgICAgdXBkYXRlZEFnZW50ID0+IHtcbiAgICAgICAgICAvLyBBY3R1YWxpemFyIGVsIGVzdGFkbyBkZSBhZ2VudGVzIGNvbiBlbCByZXN1bHRhZG8gZGVsIHNlcnZpZG9yIHkgb3JkZW5hclxuICAgICAgICAgIHVwZGF0ZUFnZW50RmF2b3JpdGUodXBkYXRlZEFnZW50LCB0cnVlKVxuICAgICAgICAgIGlmIChvblN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIG9uU3VjY2Vzcyh1cGRhdGVkQWdlbnQpXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgaWYgKG9uRXJyb3IpIHtcbiAgICAgICAgICAgIG9uRXJyb3IoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYWdlbnQuaXNfZmF2b3JpdGVcbiAgICAgIClcbiAgICB9LFxuICAgIFt0b2dnbGVGYXZvcml0ZSwgdXBkYXRlQWdlbnRGYXZvcml0ZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gKCkgPT4ge1xuICAgIGlmIChoYXNQZW5kaW5nQ2hhbmdlcygpICYmICFzdWNjZXNzQ3JlYXRlICYmICFzdWNjZXNzVXBkYXRlICYmICFzdWNjZXNzRGVsZXRlKSB7XG4gICAgICBjb25zdCBjb25maXJtTWVzc2FnZSA9IG1vZGFsVmFsdWVzLmlzRWRpdGluZyA/IHQoJ2NvbmZpcm1DbG9zZUVkaXRBZ2VudCcpIDogdCgnY29uZmlybUNsb3NlQ3JlYXRlQWdlbnQnKVxuXG4gICAgICBpZiAoIXdpbmRvdy5jb25maXJtKGNvbmZpcm1NZXNzYWdlKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRNb2RhbFZhbHVlcyhpbml0aWFsVmFsdWVzKVxuICAgIGhhbmRsZUNsZWFuQWdlbnQoKVxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc1NhdmUoKVxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzKClcbiAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50ID0ge1xuICAgICAgdG9EZWxldGU6IFtdLFxuICAgICAgdG9VcGxvYWQ6IFtdLFxuICAgIH1cbiAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgIG9wZXJhdGlvblR5cGU6IG51bGwsXG4gICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICB9XG4gICAgYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgcHJvY2Vzc0ZpbGVzVGltZWRPdXRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKGZhbHNlKVxuICAgIHNldElzU3Vic2NyaWJlZChmYWxzZSlcbiAgICBzZXRGaWxlc1Byb2Nlc3NlZCgwKVxuICAgIHNldFNlY3Rpb24oJ2dlbmVyYWwnKVxuICAgIHNldElzT3BlbihmYWxzZSlcbiAgICBhZ2VudENyZWF0ZWRSZWYuY3VycmVudCA9IG51bGxcbiAgICBwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudCA9IG51bGxcbiAgICBwcmVmZXRjaGVkQWdlbnRCeUlkUmVmLmN1cnJlbnQgPSBudWxsXG4gIH1cblxuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gZXZlbnQuY3VycmVudFRhcmdldCAmJiAhaXNTaG93UHJvY2Vzc0ZpbGVzKSB7XG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2VjdGlvbkNoYW5nZSA9IChuZXdTZWN0aW9uOiBBYm1TZWN0aW9uKSA9PiB7XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLnRhYlNlY3Rpb24sIHsgb3B0aW9uOiBuZXdTZWN0aW9uIH0pXG4gICAgc2V0U2VjdGlvbihuZXdTZWN0aW9uKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2V0QWdlbnRWYWx1ZXNCeUtleXMgPSAoe1xuICAgIGtleSxcbiAgICB2YWx1ZSxcbiAgICBkZWxldGVLbm93bGVkZ2UsXG4gIH06IHtcbiAgICBrZXk6IHN0cmluZ1xuICAgIHZhbHVlOiBhbnlcbiAgICBkZWxldGVLbm93bGVkZ2U6IGJvb2xlYW5cbiAgfSkgPT4ge1xuICAgIGlmIChrZXkgPT09ICdrbm93bGVkZ2UnKSB7XG4gICAgICBpZiAoIWRlbGV0ZUtub3dsZWRnZSkge1xuICAgICAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLnB1c2goLi4uKHZhbHVlIHx8IFtdKSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGZpbGVzUHJldklkcyA9IHZhbHVlLmxlbmd0aCA/IG5ldyBTZXQodmFsdWUubWFwKGZpbGUgPT4gZmlsZS5pZCkpIDogbmV3IFNldCgpXG4gICAgICAgIGNvbnN0IG5ld0ZpbGVzID0gbW9kYWxWYWx1ZXMua25vd2xlZGdlLmZpbHRlcihmaWxlID0+ICFmaWxlc1ByZXZJZHMuaGFzKGZpbGUuaWQpICYmIGZpbGUuc3RhdHVzICE9PSAnc3RhcnRlZCcpXG4gICAgICAgIGlmICghbmV3RmlsZXMubGVuZ3RoICYmIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWVJZHMgPSBuZXcgU2V0KHZhbHVlLm1hcChmaWxlID0+IGZpbGUuaWQpKVxuICAgICAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQgPSBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmZpbHRlcihmaWxlID0+IHZhbHVlSWRzLmhhcyhmaWxlLmlkKSlcbiAgICAgICAgfVxuICAgICAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlID0gWy4uLihhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlIHx8IFtdKSwgLi4ubmV3RmlsZXNdXG4gICAgICB9XG4gICAgfVxuICAgIHNldE1vZGFsVmFsdWVzKHByZXYgPT4ge1xuICAgICAgY29uc3Qga25vd2xlZGdlRmlsZXMgPVxuICAgICAgICBrZXkgPT09ICdrbm93bGVkZ2UnXG4gICAgICAgICAgPyBkZWxldGVLbm93bGVkZ2VcbiAgICAgICAgICAgID8gdmFsdWVcbiAgICAgICAgICAgIDogWy4uLihwcmV2Lmtub3dsZWRnZSB8fCBbXSksIC4uLigodmFsdWUgYXMgQXR0YWNobWVudEZpbGVbXSkgfHwgW10pXVxuICAgICAgICAgIDogbnVsbFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgLi4uKGtleSA9PT0gJ2tub3dsZWRnZSdcbiAgICAgICAgICA/IHsga25vd2xlZGdlOiBrbm93bGVkZ2VGaWxlcyB9XG4gICAgICAgICAgOiBrZXkgPT09ICdhY2Nlc3NpYmlsaXR5J1xuICAgICAgICAgICAgPyB7IGFjY2Vzc2liaWxpdHk6IHZhbHVlIH1cbiAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAgICAgICAgIC4uLnByZXYuZ2VuZXJhbCxcbiAgICAgICAgICAgICAgICAgIFtrZXldOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9KSxcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ29uZmlybUFjdGlvbiA9IGFzeW5jIChjaGF0OiBhbnksIGFjdGlvbjogJ2RlbGV0ZScgfCAndXBkYXRlJyB8ICdjcmVhdGUnKSA9PiB7XG4gICAgLy8gU29sbyBwZXJtaXRpciBvcGVyYWNpb25lcyBkZSBhZ2VudGVzIGN1c3RvbSBzaSBsYSBmZWF0dXJlIGZsYWcgZXN0w6EgaGFiaWxpdGFkYVxuICAgIGlmICghd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChhY3Rpb24gPT09ICdkZWxldGUnKSB7XG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuZGVsZXRlKVxuICAgICAgaGFuZGxlRGVsZXRlQWdlbnQoY2hhdC5pZCBhcyB1bmtub3duIGFzIHN0cmluZylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuY29uZmlybUFjdGlvbiwgeyBvcHRpb246IG1vZGFsVmFsdWVzLmlzRWRpdGluZyA/ICdlZGl0ZScgOiAnY3JlYXRlJyB9KVxuICAgIC8vIEFsIHJlaW50ZW50YXIgZ3VhcmRhciwgbGliZXJhciBlbCBmcmVubyBkZWwgdGltZW91dCBwcmV2aW8gcGFyYSBxdWUgbG9zXG4gICAgLy8gdXNlRWZmZWN0IGRlIHBvc3QtZ3VhcmRhZG8gdnVlbHZhbiBhIHBvZGVyIGRpc3BhcmFyIHNuYWNrYmFycyB5IGNlcnJhci5cbiAgICBwcm9jZXNzRmlsZXNUaW1lZE91dFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBpZiAobW9kYWxWYWx1ZXMuaXNFZGl0aW5nKSB7XG4gICAgICBpZiAoIXZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUoKSkge1xuICAgICAgICBhd2FpdCBoYW5kbGVVcGRhdGVBZ2VudChtb2RhbFZhbHVlcylcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgaGFuZGxlQ3JlYXRlQWdlbnQobW9kYWxWYWx1ZXMpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTZXRBZ2VudFZhbHVlcyA9IChldmVudDogYW55KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50VmFsdWVzIH0gPSBldmVudC5kZXRhaWxcbiAgICAgIGNvbnN0IGluaXRpYWxTZWN0aW9uID0gYWdlbnRWYWx1ZXM/LmluaXRpYWxTZWN0aW9uIGFzIEFibVNlY3Rpb24gfCB1bmRlZmluZWRcbiAgICAgIHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ID1cbiAgICAgICAgaW5pdGlhbFNlY3Rpb24gJiYgWydnZW5lcmFsJywgJ2tub3dsZWRnZScsICdhY2Nlc3NpYmlsaXR5J10uaW5jbHVkZXMoaW5pdGlhbFNlY3Rpb24pID8gaW5pdGlhbFNlY3Rpb24gOiBudWxsXG5cbiAgICAgIGdldEFsbEFnZW50TW9kZWxzKClcbiAgICAgIHNldElzT3Blbih0cnVlKVxuICAgICAgc2V0SXNMb2FkaW5nKHRydWUpXG5cbiAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgICBvcGVyYXRpb25UeXBlOiBudWxsLFxuICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgIH1cblxuICAgICAgaWYgKGFnZW50VmFsdWVzLnZhbHVlcz8uaXNFZGl0aW5nKSB7XG4gICAgICAgIC8vIFZhbGlkYXIgcXVlIGxhIGZlYXR1cmUgZmxhZyBlc3TDqSBoYWJpbGl0YWRhIGFudGVzIGRlIGNhcmdhciBlbCBhZ2VudGUgcGFyYSBlZGl0YXJcbiAgICAgICAgaWYgKCF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnZXJyb3JBY2Nlc3NEZW5pZWQnKSlcbiAgICAgICAgICBzZXRJc09wZW4oZmFsc2UpXG4gICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgIHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgIHByZWZldGNoZWRBZ2VudEJ5SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBpZiAoYWdlbnRWYWx1ZXMucHJlZmV0Y2hlZEFnZW50QnlJZCkge1xuICAgICAgICAgIGhhbmRsZUNsZWFuQWdlbnQoKVxuICAgICAgICAgIHByZWZldGNoZWRBZ2VudEJ5SWRSZWYuY3VycmVudCA9IGFnZW50VmFsdWVzLnByZWZldGNoZWRBZ2VudEJ5SWRcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBoYW5kbGVHZXRBZ2VudEJ5SWQoYWdlbnRWYWx1ZXM/LnZhbHVlcz8uZ2VuZXJhbD8uaWQgYXMgdW5rbm93biBhcyBzdHJpbmcpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoYWdlbnRWYWx1ZXMudmFsdWVzKSB7XG4gICAgICAgIGNvbnN0IG5leHRWYWx1ZXMgPSB7XG4gICAgICAgICAgLi4uaW5pdGlhbFZhbHVlcyxcbiAgICAgICAgICAuLi5hZ2VudFZhbHVlcy52YWx1ZXMsXG4gICAgICAgICAgZ2VuZXJhbDoge1xuICAgICAgICAgICAgLi4uaW5pdGlhbFZhbHVlcy5nZW5lcmFsLFxuICAgICAgICAgICAgLi4uKGFnZW50VmFsdWVzLnZhbHVlcy5nZW5lcmFsIHx8IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFjY2Vzc2liaWxpdHk6IHtcbiAgICAgICAgICAgIC4uLmluaXRpYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSxcbiAgICAgICAgICAgIC4uLihhZ2VudFZhbHVlcy52YWx1ZXMuYWNjZXNzaWJpbGl0eSB8fCB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBrbm93bGVkZ2U6IGFnZW50VmFsdWVzLnZhbHVlcy5rbm93bGVkZ2UgfHwgW10sXG4gICAgICAgIH1cblxuICAgICAgICBmaXJzdFZhbHVlQWdlbnQuY3VycmVudCA9IG5leHRWYWx1ZXNcbiAgICAgICAgc2V0TW9kYWxWYWx1ZXMobmV4dFZhbHVlcylcbiAgICAgIH1cblxuICAgICAgaWYgKHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ICYmICFhZ2VudFZhbHVlcy52YWx1ZXM/LmlzRWRpdGluZykge1xuICAgICAgICBzZXRTZWN0aW9uKHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50KVxuICAgICAgICBwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudCA9IG51bGxcbiAgICAgIH1cblxuICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdhYm0tYWdlbnQtbW9kYWwtc2V0LXZhbHVlcycsIGhhbmRsZVNldEFnZW50VmFsdWVzKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm0tYWdlbnQtbW9kYWwtc2V0LXZhbHVlcycsIGhhbmRsZVNldEFnZW50VmFsdWVzIGFzIEV2ZW50TGlzdGVuZXIpXG4gICAgfVxuICB9LCBbXSlcblxuICAvLyB1c2VFZmZlY3QgdG8gaGFuZGxlIHRoZSBvdmVyZmxvdyBvZiB0aGUgYm9keSB3aGVuIHRoZSBtb2RhbCBpcyBvcGVuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCB7IGJvZHkgfSA9IGRvY3VtZW50XG4gICAgaWYgKCFib2R5KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWxPdmVyZmxvdyA9IGJvZHkuc3R5bGUub3ZlcmZsb3dcbiAgICBib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbidcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBib2R5LnN0eWxlLm92ZXJmbG93ID0gb3JpZ2luYWxPdmVyZmxvd1xuICAgIH1cbiAgfSwgW2lzT3Blbl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVCZWZvcmVVbmxvYWQgPSAoZXZlbnQ6IEJlZm9yZVVubG9hZEV2ZW50KSA9PiB7XG4gICAgICBpZiAoaGFzUGVuZGluZ0NoYW5nZXMoKSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICBldmVudC5yZXR1cm5WYWx1ZSA9IHQoJ2NvbmZpcm1SZWxvYWRCcm93c2VyJylcbiAgICAgICAgcmV0dXJuIHQoJ2NvbmZpcm1SZWxvYWRCcm93c2VyJylcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBpZiAoaXNPcGVuKSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgaGFuZGxlQmVmb3JlVW5sb2FkKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgaGFuZGxlQmVmb3JlVW5sb2FkKVxuICAgIH1cbiAgfSwgW2lzT3BlbiwgaGFzUGVuZGluZ0NoYW5nZXMsIHRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN1Y2Nlc3NEZWxldGUpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnREZWxldGVkJykpXG4gICAgICByZXNldFN1Y2Nlc3MoKVxuICAgICAgaWYgKGN1cnJlbnRTZWxlY3RlZEFnZW50Py5pZCA9PT0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCkge1xuICAgICAgICBzZWxlY3RGaXJzdEFnZW50KGN1cnJlbnRTZWxlY3RlZEFnZW50Py5pZCBhcyBzdHJpbmcpXG4gICAgICB9XG4gICAgICByZW1vdmVBZ2VudChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKVxuICAgICAgc2V0U2hvd01vZGFsRGVsZXRlKGZhbHNlKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH1cbiAgfSwgW3N1Y2Nlc3NEZWxldGVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gRXZpdGFyIGVqZWN1Y2nDs24gbcO6bHRpcGxlIGRlbCBlZmVjdG9cbiAgICBpZiAoc3VjY2Vzc0NyZWF0ZSAmJiAhaXNMb2FkaW5nQ3JlYXRlICYmIGFnZW50Q3JlYXRlZFJlZi5jdXJyZW50ICE9PSBzdWNjZXNzQ3JlYXRlLmlkKSB7XG4gICAgICBhZ2VudENyZWF0ZWRSZWYuY3VycmVudCA9IHN1Y2Nlc3NDcmVhdGUuaWRcbiAgICAgIGlmIChhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLmxlbmd0aCAmJiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCkge1xuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueScpIHtcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IHRydWUsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBTaSBubyBoYXkgYWNjZXNpYmlsaWRhZCBwZXJvIGhheSBhcmNoaXZvcywgZXN0YWJsZWNlciBlbCBjb250ZXh0byBwYXJhIGNyZWFjacOzblxuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW1xuICAgICAgICAgIGhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMoe1xuICAgICAgICAgICAgZmlsZXNUb0RlbGV0ZTogYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZSxcbiAgICAgICAgICAgIGZpbGVzVG9DcmVhdGU6IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQsXG4gICAgICAgICAgICBhZ2VudElkOiBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgfSksXG4gICAgICAgIF1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueScpIHtcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKGhhbmRsZUFjY2Vzc0NsaWVudChzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaXNfZmF2b3JpdGUpIHtcbiAgICAgICAgICBjb25zdCBhZ2VudFdpdGhGYXZvcml0ZSA9IHsgLi4uc3VjY2Vzc0NyZWF0ZSwgaXNfZmF2b3JpdGU6IHRydWUgfVxuICAgICAgICAgIGFkZEFnZW50KGFnZW50V2l0aEZhdm9yaXRlKVxuICAgICAgICAgIC8vIEN1YW5kbyBzZSBjcmVhIHVuIGFnZW50ZSBudWV2bywgZWwgc2Vydmlkb3Igbm8gdGllbmUgZWwgZmF2b3JpdG8gbWFyY2FkbyBhw7puXG4gICAgICAgICAgLy8gRW50b25jZXMgY3VycmVudElzRmF2b3JpdGUgZGViZSBzZXIgZmFsc2UgcGFyYSBxdWUgZWwgdG9nZ2xlIGxvIG1hcnF1ZSBjb21vIHRydWVcbiAgICAgICAgICBjb25zdCBhZ2VudEZvclRvZ2dsZSA9IHsgLi4uYWdlbnRXaXRoRmF2b3JpdGUsIGlzX2Zhdm9yaXRlOiBmYWxzZSB9XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudChcbiAgICAgICAgICAgICAgICBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgYWdlbnRGb3JUb2dnbGUsXG4gICAgICAgICAgICAgICAgKCkgPT4gcmVzb2x2ZSgpLFxuICAgICAgICAgICAgICAgICgpID0+IHJlamVjdCgpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZEFnZW50KHN1Y2Nlc3NDcmVhdGUpXG4gICAgICAgIH1cblxuICAgICAgICBQcm9taXNlLmFsbChwcm9taXNlcylcblxuICAgICAgICBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUubGVuZ3RoKSB7XG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55Jykge1xuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogdHJ1ZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFNpIG5vIGhheSBhY2Nlc2liaWxpZGFkIHBlcm8gaGF5IGFyY2hpdm9zLCBlc3RhYmxlY2VyIGVsIGNvbnRleHRvIHBhcmEgY3JlYWNpw7NuXG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IHRydWUsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXG4gICAgICAgICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyh7IGZpbGVzOiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLCBhZ2VudElkOiBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCkgfSksXG4gICAgICAgIF1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueScpIHtcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKGhhbmRsZUFjY2Vzc0NsaWVudChzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaXNfZmF2b3JpdGUpIHtcbiAgICAgICAgICBjb25zdCBhZ2VudFdpdGhGYXZvcml0ZSA9IHsgLi4uc3VjY2Vzc0NyZWF0ZSwgaXNfZmF2b3JpdGU6IHRydWUgfVxuICAgICAgICAgIGFkZEFnZW50KGFnZW50V2l0aEZhdm9yaXRlKVxuICAgICAgICAgIC8vIEN1YW5kbyBzZSBjcmVhIHVuIGFnZW50ZSBudWV2bywgZWwgc2Vydmlkb3Igbm8gdGllbmUgZWwgZmF2b3JpdG8gbWFyY2FkbyBhw7puXG4gICAgICAgICAgLy8gRW50b25jZXMgY3VycmVudElzRmF2b3JpdGUgZGViZSBzZXIgZmFsc2UgcGFyYSBxdWUgZWwgdG9nZ2xlIGxvIG1hcnF1ZSBjb21vIHRydWVcbiAgICAgICAgICBjb25zdCBhZ2VudEZvclRvZ2dsZSA9IHsgLi4uYWdlbnRXaXRoRmF2b3JpdGUsIGlzX2Zhdm9yaXRlOiBmYWxzZSB9XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudChcbiAgICAgICAgICAgICAgICBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgYWdlbnRGb3JUb2dnbGUsXG4gICAgICAgICAgICAgICAgKCkgPT4gcmVzb2x2ZSgpLFxuICAgICAgICAgICAgICAgICgpID0+IHJlamVjdCgpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZEFnZW50KHN1Y2Nlc3NDcmVhdGUpXG4gICAgICAgIH1cblxuICAgICAgICBQcm9taXNlLmFsbChwcm9taXNlcylcbiAgICAgICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyh7IGZpbGVzOiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLCBhZ2VudElkOiBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCkgfSlcbiAgICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyh0cnVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCkge1xuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueScpIHtcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IHRydWUsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBTaSBubyBoYXkgYWNjZXNpYmlsaWRhZCBwZXJvIGhheSBhcmNoaXZvcywgZXN0YWJsZWNlciBlbCBjb250ZXh0byBwYXJhIGNyZWFjacOzblxuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW1xuICAgICAgICAgIGhhbmRsZUNyZWF0ZUtub3dsZWRnZXMoeyBmaWxlczogYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZCwgYWdlbnRJZDogc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpIH0pLFxuICAgICAgICBdXG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSAhPT0gJ2NvbXBhbnknKSB7XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChoYW5kbGVBY2Nlc3NDbGllbnQoc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlzX2Zhdm9yaXRlKSB7XG4gICAgICAgICAgY29uc3QgYWdlbnRXaXRoRmF2b3JpdGUgPSB7IC4uLnN1Y2Nlc3NDcmVhdGUsIGlzX2Zhdm9yaXRlOiB0cnVlIH1cbiAgICAgICAgICBhZGRBZ2VudChhZ2VudFdpdGhGYXZvcml0ZSlcbiAgICAgICAgICAvLyBDdWFuZG8gc2UgY3JlYSB1biBhZ2VudGUgbnVldm8sIGVsIHNlcnZpZG9yIG5vIHRpZW5lIGVsIGZhdm9yaXRvIG1hcmNhZG8gYcO6blxuICAgICAgICAgIC8vIEVudG9uY2VzIGN1cnJlbnRJc0Zhdm9yaXRlIGRlYmUgc2VyIGZhbHNlIHBhcmEgcXVlIGVsIHRvZ2dsZSBsbyBtYXJxdWUgY29tbyB0cnVlXG4gICAgICAgICAgY29uc3QgYWdlbnRGb3JUb2dnbGUgPSB7IC4uLmFnZW50V2l0aEZhdm9yaXRlLCBpc19mYXZvcml0ZTogZmFsc2UgfVxuICAgICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgIGhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQoXG4gICAgICAgICAgICAgICAgc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgIGFnZW50Rm9yVG9nZ2xlLFxuICAgICAgICAgICAgICAgICgpID0+IHJlc29sdmUoKSxcbiAgICAgICAgICAgICAgICAoKSA9PiByZWplY3QoKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRBZ2VudChzdWNjZXNzQ3JlYXRlKVxuICAgICAgICB9XG5cbiAgICAgICAgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG4gICAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXModHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueScpIHtcbiAgICAgICAgLy8gU29sbyByZXNldGVhciBlbCBjb250ZXh0byBzaSBOTyBzZSBoYSBsbGFtYWRvIHRvZGF2w61hXG4gICAgICAgIGlmICghYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0JlZW5DYWxsZWQpIHtcbiAgICAgICAgICBjb25zdCB7IGhhc0FjdGlvbkZpbGVzIH0gPSBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnRcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGhhc0FjdGlvbkZpbGVzIHx8IGZhbHNlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ2NyZWF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNCZWVuQ2FsbGVkKSB7XG4gICAgICAgICAgaGFuZGxlQWNjZXNzQ2xpZW50KHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSlcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQmVlbkNhbGxlZCA9IHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNvbG8gZWplY3V0YXIgaGFuZGxlQWNjZXNzQ2xpZW50LCBlbCBhZ2VudGUgc2UgYWdyZWdhcsOhIHkgZWwgdG9nZ2xlIHNlIGhhcsOhIGVuIHN1Y2Nlc3NVcGRhdGVBY2Nlc3NcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSBmYXZvcml0ZSBpZiBpdCB3YXMgbWFya2VkIGR1cmluZyBjcmVhdGlvblxuICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaXNfZmF2b3JpdGUpIHtcbiAgICAgICAgLy8gUHJpbWVybyBhZ3JlZ2FyIGVsIGFnZW50ZSBhIGxhIGxpc3RhIChhZGRBZ2VudCB5YSBvcmRlbmEpXG4gICAgICAgIGNvbnN0IGFnZW50V2l0aEZhdm9yaXRlID0geyAuLi5zdWNjZXNzQ3JlYXRlLCBpc19mYXZvcml0ZTogdHJ1ZSB9XG4gICAgICAgIGFkZEFnZW50KGFnZW50V2l0aEZhdm9yaXRlKVxuXG4gICAgICAgIC8vIEN1YW5kbyBzZSBjcmVhIHVuIGFnZW50ZSBudWV2bywgZWwgc2Vydmlkb3Igbm8gdGllbmUgZWwgZmF2b3JpdG8gbWFyY2FkbyBhw7puXG4gICAgICAgIC8vIEVudG9uY2VzIGN1cnJlbnRJc0Zhdm9yaXRlIGRlYmUgc2VyIGZhbHNlIHBhcmEgcXVlIGVsIHRvZ2dsZSBsbyBtYXJxdWUgY29tbyB0cnVlXG4gICAgICAgIGNvbnN0IGFnZW50Rm9yVG9nZ2xlID0geyAuLi5hZ2VudFdpdGhGYXZvcml0ZSwgaXNfZmF2b3JpdGU6IGZhbHNlIH1cbiAgICAgICAgLy8gTHVlZ28gaGFjZXIgZWwgdG9nZ2xlIGRlIGZhdm9yaXRvIGVuIGVsIHNlcnZpZG9yIHkgYWN0dWFsaXphciBlbCBlc3RhZG9cbiAgICAgICAgaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudChcbiAgICAgICAgICBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgYWdlbnRGb3JUb2dnbGUsXG4gICAgICAgICAgdXBkYXRlZEFnZW50ID0+IHtcbiAgICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRGYXZvcml0ZSwgeyBvcHRpb246IHVwZGF0ZWRBZ2VudC5pc19mYXZvcml0ZSA/ICdhZGQnIDogJ3JlbW92ZScgfSlcbiAgICAgICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICAgICAgICBzZWxlY3RBZ2VudCh7IC4uLmFnZW50V2l0aEZhdm9yaXRlLCBpc19mYXZvcml0ZTogdXBkYXRlZEFnZW50LmlzX2Zhdm9yaXRlIH0pXG4gICAgICAgICAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgICAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgICB9LFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRGYXZvcml0ZSwgeyBvcHRpb246ICdhZGQnIH0pXG4gICAgICAgICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgICAgICAgc2VsZWN0QWdlbnQoYWdlbnRXaXRoRmF2b3JpdGUpXG4gICAgICAgICAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgICAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICAgIGFkZEFnZW50KHN1Y2Nlc3NDcmVhdGUpXG4gICAgICAgIHNlbGVjdEFnZW50KHN1Y2Nlc3NDcmVhdGUpXG4gICAgICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0xvYWRpbmdDcmVhdGUsXG4gICAgc3VjY2Vzc0NyZWF0ZSxcbiAgICBoYW5kbGVEZWxldGVBbmRDcmVhdGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZURlbGV0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlQ3JlYXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsXG4gICAgdCxcbiAgICBhZGRBZ2VudCxcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUsXG4gICAgcmVzZXRTdWNjZXNzQ3JlYXRlLFxuICAgIGhhbmRsZUNsb3NlLFxuICAgIHVwZGF0ZUFnZW50RmF2b3JpdGUsXG4gIF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc3VjY2Vzc1VwZGF0ZSkge1xuICAgICAgaWYgKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUubGVuZ3RoICYmIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQubGVuZ3RoKSB7XG4gICAgICAgIGlmIChoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpKSB7XG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiB0cnVlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ3VwZGF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCkge1xuICAgICAgICAgIGNvbnN0IGZpbGVzVG9EZWxldGUgPSBbLi4uYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZV1cbiAgICAgICAgICBjb25zdCBmaWxlc1RvVXBsb2FkID0gWy4uLmFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWRdXG4gICAgICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZSA9IFtdXG4gICAgICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZCA9IFtdXG5cbiAgICAgICAgICBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICBoYW5kbGVEZWxldGVBbmRDcmVhdGVLbm93bGVkZ2VzKHtcbiAgICAgICAgICAgICAgZmlsZXNUb0RlbGV0ZSxcbiAgICAgICAgICAgICAgZmlsZXNUb0NyZWF0ZTogZmlsZXNUb1VwbG9hZCxcbiAgICAgICAgICAgICAgYWdlbnRJZDogbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAuLi4oaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQoKVxuICAgICAgICAgICAgICA/IFtoYW5kbGVBY2Nlc3NDbGllbnQobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KV1cbiAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgXSlcbiAgICAgICAgfVxuICAgICAgICBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUubGVuZ3RoKSB7XG4gICAgICAgIGlmIChoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpKSB7XG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiB0cnVlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ3VwZGF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCkge1xuICAgICAgICAgIGNvbnN0IGZpbGVzVG9EZWxldGUgPSBbLi4uYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZV1cbiAgICAgICAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlID0gW11cblxuICAgICAgICAgIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIGhhbmRsZURlbGV0ZUtub3dsZWRnZXMoe1xuICAgICAgICAgICAgICBmaWxlczogZmlsZXNUb0RlbGV0ZSxcbiAgICAgICAgICAgICAgYWdlbnRJZDogbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAuLi4oaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQoKVxuICAgICAgICAgICAgICA/IFtoYW5kbGVBY2Nlc3NDbGllbnQobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KV1cbiAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgXSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCkge1xuICAgICAgICBpZiAoaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQoKSkge1xuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IHRydWUsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogdHJ1ZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICd1cGRhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQpIHtcbiAgICAgICAgICBjb25zdCBmaWxlc1RvVXBsb2FkID0gWy4uLmFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWRdXG4gICAgICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZCA9IFtdXG5cbiAgICAgICAgICBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICBoYW5kbGVDcmVhdGVLbm93bGVkZ2VzKHtcbiAgICAgICAgICAgICAgZmlsZXM6IGZpbGVzVG9VcGxvYWQsXG4gICAgICAgICAgICAgIGFnZW50SWQ6IG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLi4uKGhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKClcbiAgICAgICAgICAgICAgPyBbaGFuZGxlQWNjZXNzQ2xpZW50KG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSldXG4gICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgIF0pXG4gICAgICAgIH1cbiAgICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyh0cnVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpKSB7XG4gICAgICAgIC8vIFNvbG8gcmVzZXRlYXIgZWwgY29udGV4dG8gc2kgTk8gc2UgaGEgbGxhbWFkbyB0b2RhdsOtYSB5IE5PIGhheSBhcmNoaXZvcyBwZW5kaWVudGVzXG4gICAgICAgIGlmICghYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0JlZW5DYWxsZWQgJiYgIWFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNBY3Rpb25GaWxlcykge1xuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IHRydWUsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAndXBkYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKSB7XG4gICAgICAgICAgLy8gTGxhbWFyIGEgaGFuZGxlQWNjZXNzQ2xpZW50IHNvbG8gdW5hIHZlelxuICAgICAgICAgIGlmICghYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0JlZW5DYWxsZWQpIHtcbiAgICAgICAgICAgIGhhbmRsZUFjY2Vzc0NsaWVudChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpXG4gICAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQmVlbkNhbGxlZCA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIFNvbG8gY2VycmFyIHNpIG5vIGhheSBhcmNoaXZvcyBzaWVuZG8gcHJvY2VzYWRvcyBuaSBhY2Nlc3MgcGVuZGllbnRlXG4gICAgICBpZiAoXG4gICAgICAgICFoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCAmJlxuICAgICAgICAhaXNTaG93UHJvY2Vzc0ZpbGVzICYmXG4gICAgICAgICFhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCAmJlxuICAgICAgICAhYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0FjdGlvbkZpbGVzICYmXG4gICAgICAgICFzdWNjZXNzVXBkYXRlQWNjZXNzICYmXG4gICAgICAgICFwcm9jZXNzRmlsZXNUaW1lZE91dFJlZi5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudFVwZGF0ZWQnKSlcbiAgICAgICAgdXBkYXRlQWdlbnQoc3VjY2Vzc1VwZGF0ZSlcbiAgICAgICAgaWYgKGN1cnJlbnRTZWxlY3RlZEFnZW50Py5pZCA9PT0gc3VjY2Vzc1VwZGF0ZS5pZCkge1xuICAgICAgICAgIHNlbGVjdEFnZW50KHN1Y2Nlc3NVcGRhdGUpXG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICAgICAgcmVzZXRTdWNjZXNzVXBkYXRlKClcbiAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpKVxuICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgc3VjY2Vzc1VwZGF0ZSxcbiAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLFxuICAgIGhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVDcmVhdGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZVNuYWNrYmFyU3VjY2VzcyxcbiAgICB0LFxuICAgIHVwZGF0ZUFnZW50LFxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSxcbiAgICByZXNldFN1Y2Nlc3NVcGRhdGUsXG4gICAgaGFuZGxlQ2xvc2UsXG4gIF0pXG5cbiAgY29uc3QgaGFuZGxlUHJvY2Vzc0ZpbGVzVGltZW91dCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIWhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ICYmICFpc1Nob3dQcm9jZXNzRmlsZXMpIHJldHVyblxuXG4gICAgLy8gQWwgY3VtcGxpcnNlIGVsIHRpbWVvdXQgYXN1bWltb3MgcXVlIGVsIGd1YXJkYWRvIGRlbCBhZ2VudGUgZnVlIGV4aXRvc29cbiAgICAvLyAoZWwgc2VydmVyIHJlc3BvbmRpw7MgT0spIHkgcXVlIGxvcyBhcmNoaXZvcyBzZSBlbnZpYXJvbiBjb3JyZWN0YW1lbnRlLlxuICAgIC8vIFNvbG8gcGVyZGltb3MgbGEgY29uZmlybWFjacOzbiBhc2luY3LDs25pY2EgZGVsIFdlYlNvY2tldCBzb2JyZSBzdVxuICAgIC8vIHByb2Nlc2FtaWVudG8uIENlcnJhbW9zIHRvZG8gbW9zdHJhbmRvIGVsIHNuYWNrYmFyIGRlIMOpeGl0byBxdWUgaHViaWVzZVxuICAgIC8vIGRpc3BhcmFkbyBlbCBmbHVqbyBub3JtYWwgZGUgw6l4aXRvLlxuXG4gICAgLy8gRnJlbm8gcGFyYSBxdWUgbG9zIHVzZUVmZmVjdCBkZSBwb3N0LWd1YXJkYWRvIG5vIHJlLWRpc3BhcmVuIHNuYWNrYmFyc1xuICAgIC8vIG8gY2llcnJlcyBkdXBsaWNhZG9zIGN1YW5kbyBzZXRJc1Nob3dQcm9jZXNzRmlsZXMoZmFsc2UpIGxvcyBnYXRpbGxlLlxuICAgIHByb2Nlc3NGaWxlc1RpbWVkT3V0UmVmLmN1cnJlbnQgPSB0cnVlXG5cbiAgICBpZiAobW9kYWxWYWx1ZXMuaXNFZGl0aW5nICYmIHN1Y2Nlc3NVcGRhdGUpIHtcbiAgICAgIHVwZGF0ZUFnZW50KHN1Y2Nlc3NVcGRhdGUpXG4gICAgICBpZiAoY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkID09PSBzdWNjZXNzVXBkYXRlLmlkKSB7XG4gICAgICAgIHNlbGVjdEFnZW50KHN1Y2Nlc3NVcGRhdGUpXG4gICAgICB9XG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgncmVmZXRjaC1zZXNzaW9uJykpXG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50VXBkYXRlZCcpKVxuICAgICAgcmVzZXRTdWNjZXNzVXBkYXRlKClcbiAgICB9IGVsc2UgaWYgKCFtb2RhbFZhbHVlcy5pc0VkaXRpbmcgJiYgc3VjY2Vzc0NyZWF0ZSkge1xuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgfVxuXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzU2F2ZSgpXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MoKVxuXG4gICAgaGFuZGxlQ2xvc2UoKVxuICB9LCBbXG4gICAgaXNTaG93UHJvY2Vzc0ZpbGVzLFxuICAgIG1vZGFsVmFsdWVzLmlzRWRpdGluZyxcbiAgICBzdWNjZXNzVXBkYXRlLFxuICAgIHN1Y2Nlc3NDcmVhdGUsXG4gICAgdXBkYXRlQWdlbnQsXG4gICAgY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkLFxuICAgIHNlbGVjdEFnZW50LFxuICAgIGhhbmRsZVNuYWNrYmFyU3VjY2VzcyxcbiAgICB0LFxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZSxcbiAgICByZXNldFN1Y2Nlc3NDcmVhdGUsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzU2F2ZSxcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUsXG4gICAgcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzLFxuICAgIGhhbmRsZUNsb3NlLFxuICBdKVxuXG4gIGNvbnN0IHdlYlNvY2tldEZ1bmN0aW9uID0gKHsgbW9kZWxfZGF0YTogbW9kZWxEYXRhIH06IHsgbW9kZWxfZGF0YTogYW55IH0pID0+IHtcbiAgICBjb25zdCBmaWxlU3RhdHVzID0gbW9kZWxEYXRhXG4gICAgaWYgKGZpbGVTdGF0dXMuc3RhdHVzID09PSAnZG9uZScgfHwgZmlsZVN0YXR1cy5zdGF0dXMgPT09ICdmYWlsZWQnKSB7XG4gICAgICBzZXRNb2RhbFZhbHVlcyhwcmV2ID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZEtub3dsZWRnZSA9IHByZXYua25vd2xlZGdlLm1hcChmaWxlID0+IHtcbiAgICAgICAgICBpZiAoZmlsZS5uYW1lID09PSBmaWxlU3RhdHVzLmZpbGVuYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5maWxlLFxuICAgICAgICAgICAgICBzdGF0dXM6IGZpbGVTdGF0dXMuc3RhdHVzLFxuICAgICAgICAgICAgICBpZDogZmlsZVN0YXR1cy5rbm93bGVkZ2VfYmFzZV9pZCB8fCBmaWxlLmlkLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmlsZVxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBoYXNQZW5kaW5nRmlsZXMgPSB1cGRhdGVkS25vd2xlZGdlLnNvbWUoZmlsZSA9PiBmaWxlLnN0YXR1cyA9PT0gJ3BlbmRpbmcnKVxuICAgICAgICBjb25zdCBoYXNFcnJvckZpbGVzID0gdXBkYXRlZEtub3dsZWRnZS5zb21lKGZpbGUgPT4gZmlsZS5zdGF0dXMgPT09ICdmYWlsZWQnKVxuICAgICAgICBpZiAoaGFzRXJyb3JGaWxlcyAmJiAhaGFzUGVuZGluZ0ZpbGVzKSB7XG4gICAgICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyhmYWxzZSlcbiAgICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKFxuICAgICAgICAgICAgbW9kYWxWYWx1ZXMuaXNFZGl0aW5nID8gdCgnY29uZmlybUFnZW50VXBkYXRlZFdpdGhGaWxlc0Vycm9yJykgOiB0KCdjb25maXJtQWdlbnRXaXRoRmlsZXNFcnJvcicpXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2UgaWYgKCFoYXNQZW5kaW5nRmlsZXMgJiYgIWhhc0Vycm9yRmlsZXMpIHtcbiAgICAgICAgICBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKGZhbHNlKVxuXG4gICAgICAgICAgLy8gU2kgaGFiw61hIGFjY2VzcyBwZW5kaWVudGUgeSB5YSBlc3RhYmEgbWFuZWphZG8sIGZvcnphciBxdWUgZWwgdXNlRWZmZWN0IGRlIGFjY2VzcyBzZSBlamVjdXRlIGRlIG51ZXZvXG4gICAgICAgICAgaWYgKGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNBY3Rpb25GaWxlcyAmJiBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHNldEZpbGVzUHJvY2Vzc2VkKHByZXZDb3VudCA9PiBwcmV2Q291bnQgKyAxKVxuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQub3BlcmF0aW9uVHlwZSA9PT0gJ2NyZWF0ZScgJiZcbiAgICAgICAgICAgICFhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQWN0aW9uRmlsZXMgJiZcbiAgICAgICAgICAgICFmaWxlc0ZpbmlzaGVkUmVmLmN1cnJlbnRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIFNpIGVzIGNyZWFjacOzbiBzaW4gYWNjZXNpYmlsaWRhZCwgbWFyY2FyIHF1ZSBsb3MgYXJjaGl2b3MgdGVybWluYXJvblxuICAgICAgICAgICAgZmlsZXNGaW5pc2hlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICAgICAgc2V0RmlsZXNQcm9jZXNzZWQocHJldkNvdW50ID0+IHByZXZDb3VudCArIDEpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICBrbm93bGVkZ2U6IHVwZGF0ZWRLbm93bGVkZ2UsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc3VjY2Vzc0tub3dsZWRnZURlbGV0ZSAmJiAhaXNMb2FkaW5nS25vd2xlZGdlICYmICFlcnJvcktub3dsZWRnZSkge1xuICAgICAgLy8gU29sbyBjZXJyYXIgc2kgTk8gaGF5IGFyY2hpdm9zIHNpZW5kbyBwcm9jZXNhZG9zXG4gICAgICBpZiAoaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgfHwgaXNTaG93UHJvY2Vzc0ZpbGVzIHx8IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQubGVuZ3RoKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgLy8gU2kgZWwgbG9hZGVyIHNlIGNlcnLDsyBwb3IgdGltZW91dCwgbm8gbW9zdHJhciBzbmFja2JhciBkZSDDqXhpdG8gbmkgY2VycmFyXG4gICAgICBpZiAocHJvY2Vzc0ZpbGVzVGltZWRPdXRSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRVcGRhdGVkJykpXG4gICAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH1cbiAgICBpZiAoZXJyb3JLbm93bGVkZ2UpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IoXG4gICAgICAgIG1vZGFsVmFsdWVzLmlzRWRpdGluZyA/IHQoJ2NvbmZpcm1BZ2VudFVwZGF0ZWRXaXRoRmlsZXNFcnJvcicpIDogdCgnY29uZmlybUFnZW50V2l0aEZpbGVzRXJyb3InKVxuICAgICAgKVxuICAgICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICB9XG4gIH0sIFtzdWNjZXNzS25vd2xlZGdlRGVsZXRlLCBpc0xvYWRpbmdLbm93bGVkZ2UsIGVycm9yS25vd2xlZGdlLCBpc1Nob3dQcm9jZXNzRmlsZXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY29udGV4dCA9IGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudFxuXG4gICAgLy8gU2kgaGF5IGFyY2hpdm9zIHNpZW5kbyBwcm9jZXNhZG9zLCBlc3BlcmFyIGEgcXVlIHRlcm1pbmVuXG4gICAgaWYgKGNvbnRleHQuaGFzQWN0aW9uRmlsZXMgJiYgKGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50IHx8IGlzU2hvd1Byb2Nlc3NGaWxlcykpIHtcbiAgICAgIC8vIFNpIHN1Y2Nlc3NVcGRhdGVBY2Nlc3MgZXN0w6EgYWN0aXZvLCBtYXJjYXIgY29tbyBtYW5lamFkbyBwZXJvIE5PIHJlc2V0ZWFyIGhhc3RhIHF1ZSB0ZXJtaW5lbiBsb3MgYXJjaGl2b3NcbiAgICAgIGlmIChzdWNjZXNzVXBkYXRlQWNjZXNzICYmICFhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gU2kgeWEgZnVlIG1hbmVqYWRvIHkgbm8gaGF5IGFyY2hpdm9zIHBlbmRpZW50ZXMsIGVqZWN1dGFyIGVsIGNpZXJyZVxuICAgIGlmIChhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgJiYgY29udGV4dC5oYXNBY3Rpb25GaWxlcyAmJiBjb250ZXh0Lm9wZXJhdGlvblR5cGUgPT09ICdjcmVhdGUnKSB7XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgIGlmIChzdWNjZXNzVXBkYXRlQWNjZXNzKSB7XG4gICAgICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcygpXG4gICAgICB9XG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIXN1Y2Nlc3NVcGRhdGVBY2Nlc3MpIHtcbiAgICAgIGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzKClcblxuICAgIGlmIChjb250ZXh0Lm9wZXJhdGlvblR5cGUgPT09ICdjcmVhdGUnKSB7XG4gICAgICAvLyBTaSBoYXkgYXJjaGl2b3MsIGVsIGFnZW50ZSB5YSBmdWUgYWdyZWdhZG8geSBlbCB0b2dnbGUgeWEgc2UgaGl6byBlbiBzdWNjZXNzQ3JlYXRlXG4gICAgICAvLyBTb2xvIG5lY2VzaXRhbW9zIGNlcnJhciBlbCBtb2RhbFxuICAgICAgaWYgKGNvbnRleHQuaGFzQWN0aW9uRmlsZXMpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gU2kgZWwgYWdlbnRlIGZ1ZSBjcmVhZG8gY29uIGZhdm9yaXRvLCBuZWNlc2l0YW1vcyBvcmRlbmFyIGRlc3B1w6lzIGRlIGFncmVnYXJsb1xuICAgICAgY29uc3QgYWdlbnRUb0FkZCA9IG1vZGFsVmFsdWVzLmdlbmVyYWwuaXNfZmF2b3JpdGUgPyB7IC4uLnN1Y2Nlc3NDcmVhdGUsIGlzX2Zhdm9yaXRlOiB0cnVlIH0gOiBzdWNjZXNzQ3JlYXRlXG5cbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICBhZGRBZ2VudChhZ2VudFRvQWRkKVxuICAgICAgc2VsZWN0QWdlbnQoYWdlbnRUb0FkZClcblxuICAgICAgLy8gU2kgdGllbmUgZmF2b3JpdG8sIGhhY2VyIHRvZ2dsZSB5IGFjdHVhbGl6YXIgZXN0YWRvIGFudGVzIGRlIGNlcnJhclxuICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaXNfZmF2b3JpdGUpIHtcbiAgICAgICAgLy8gQ3VhbmRvIHNlIGNyZWEgdW4gYWdlbnRlIG51ZXZvLCBlbCBzZXJ2aWRvciBubyB0aWVuZSBlbCBmYXZvcml0byBtYXJjYWRvIGHDum5cbiAgICAgICAgLy8gRW50b25jZXMgY3VycmVudElzRmF2b3JpdGUgZGViZSBzZXIgZmFsc2UgcGFyYSBxdWUgZWwgdG9nZ2xlIGxvIG1hcnF1ZSBjb21vIHRydWVcbiAgICAgICAgY29uc3QgYWdlbnRGb3JUb2dnbGUgPSB7IC4uLmFnZW50VG9BZGQsIGlzX2Zhdm9yaXRlOiBmYWxzZSB9XG4gICAgICAgIGhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQoXG4gICAgICAgICAgc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLFxuICAgICAgICAgIGFnZW50Rm9yVG9nZ2xlLFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIC8vIENlcnJhciBkZXNwdcOpcyBkZSBxdWUgZWwgdG9nZ2xlIGNvbXBsZXRlIHkgYWN0dWFsaWNlIGVsIGVzdGFkb1xuICAgICAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgICB9LFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjb250ZXh0Lm9wZXJhdGlvblR5cGUgPT09ICd1cGRhdGUnKSB7XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50VXBkYXRlZCcpKVxuICAgICAgdXBkYXRlQWdlbnQoc3VjY2Vzc1VwZGF0ZSlcbiAgICAgIGlmIChjdXJyZW50U2VsZWN0ZWRBZ2VudD8uaWQgPT09IHN1Y2Nlc3NVcGRhdGUuaWQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoc3VjY2Vzc1VwZGF0ZSlcbiAgICAgIH1cbiAgICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZSgpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgncmVmZXRjaC1zZXNzaW9uJykpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfVxuXG4gICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICBvcGVyYXRpb25UeXBlOiBudWxsLFxuICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgfVxuICB9LCBbc3VjY2Vzc1VwZGF0ZUFjY2VzcywgZmlsZXNQcm9jZXNzZWRdKVxuXG4gIC8vIHVzZUVmZmVjdCBwYXJhIG1hbmVqYXIgZWwgY2llcnJlIGRlbCBtb2RhbCBjdWFuZG8gdGVybWluYW4gbG9zIGFyY2hpdm9zIGVuIGNyZWFjacOzbiBzaW4gYWNjZXNpYmlsaWRhZFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnRcblxuICAgIC8vIFNvbG8gcHJvY2VzYXIgc2k6XG4gICAgLy8gLSBFcyB1bmEgb3BlcmFjacOzbiBkZSBjcmVhY2nDs25cbiAgICAvLyAtIE5vIGhheSBhY2Nlc2liaWxpZGFkIHBlbmRpZW50ZVxuICAgIC8vIC0gTG9zIGFyY2hpdm9zIHRlcm1pbmFyb24gZGUgcHJvY2VzYXJzZVxuICAgIC8vIC0gRWwgYWdlbnRlIGZ1ZSBjcmVhZG8gZXhpdG9zYW1lbnRlXG4gICAgLy8gLSBBw7puIG5vIHNlIGhhIGNlcnJhZG8gZWwgbW9kYWxcbiAgICBpZiAoXG4gICAgICBjb250ZXh0Lm9wZXJhdGlvblR5cGUgPT09ICdjcmVhdGUnICYmXG4gICAgICAhY29udGV4dC5oYXNBY3Rpb25GaWxlcyAmJlxuICAgICAgZmlsZXNGaW5pc2hlZFJlZi5jdXJyZW50ICYmXG4gICAgICBzdWNjZXNzQ3JlYXRlICYmXG4gICAgICAhaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgJiZcbiAgICAgICFpc1Nob3dQcm9jZXNzRmlsZXNcbiAgICApIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgZmlsZXNGaW5pc2hlZFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgICBvcGVyYXRpb25UeXBlOiBudWxsLFxuICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUYW1iacOpbiBtYW5lamFyIGVsIGNhc28gY3VhbmRvIGhheSBhY2Nlc2liaWxpZGFkIHkgYXJjaGl2b3MgdGVybWluYXJvblxuICAgIGlmIChcbiAgICAgIGNvbnRleHQub3BlcmF0aW9uVHlwZSA9PT0gJ2NyZWF0ZScgJiZcbiAgICAgIGNvbnRleHQuaGFzQWN0aW9uRmlsZXMgJiZcbiAgICAgIGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCAmJlxuICAgICAgc3VjY2Vzc0NyZWF0ZSAmJlxuICAgICAgIWhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ICYmXG4gICAgICAhaXNTaG93UHJvY2Vzc0ZpbGVzXG4gICAgKSB7XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgIGlmIChzdWNjZXNzVXBkYXRlQWNjZXNzKSB7XG4gICAgICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcygpXG4gICAgICB9XG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgZmlsZXNQcm9jZXNzZWQsXG4gICAgc3VjY2Vzc0NyZWF0ZSxcbiAgICBzdWNjZXNzVXBkYXRlQWNjZXNzLFxuICAgIGlzU2hvd1Byb2Nlc3NGaWxlcyxcbiAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsXG4gICAgdCxcbiAgICByZXNldFN1Y2Nlc3NDcmVhdGUsXG4gICAgcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzLFxuICAgIGhhbmRsZUNsb3NlLFxuICBdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzU2hvd1Byb2Nlc3NGaWxlcykge1xuICAgICAgY29uc3QgY2hhbm5lbCA9IGBrbm93bGVkZ2UtYmFzZS5zdGF0dXM6JHthZ2VudEJ5SWQgPyBhZ2VudEJ5SWQ/LmlkIDogc3VjY2Vzc0NyZWF0ZT8uaWQ/LnRvU3RyaW5nKCl9YFxuICAgICAgaWYgKCRfc2MpIHtcbiAgICAgICAgaWYgKGlzU3Vic2NyaWJlZCkge1xuICAgICAgICAgICRfc2M/LnN1YnNjcmliZUhhbmRsZXIoY2hhbm5lbCwgd2ViU29ja2V0RnVuY3Rpb24pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbW9kZWxEYXRhID0ge1xuICAgICAgICAgICAgbW9kZWxfaGFzaDogY2hhbm5lbCxcbiAgICAgICAgICAgIGFjdGlvbjogJF9zYz8uYWN0aW9uVHlwZT8uU1VCU0NSSUJFLFxuICAgICAgICAgIH1cbiAgICAgICAgICAkX3NjPy51cGRhdGVDb25uZWN0aW9uTW9kZWwobW9kZWxEYXRhLCBjaGFubmVsLCB1c2VyLCB1c2VyLCAkX3NjLmNoYW5uZWxUeXBlPy5NT0RFTF9DSEFOTkVMKVxuICAgICAgICAgIHNldElzU3Vic2NyaWJlZCh0cnVlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCBbaXNTaG93UHJvY2Vzc0ZpbGVzLCBpc1N1YnNjcmliZWQsICRfc2MsIGFnZW50QnlJZCwgc3VjY2Vzc0NyZWF0ZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzT3BlbiB8fCAhYWdlbnRNb2RlbHMubGVuZ3RoKSByZXR1cm5cbiAgICBpZiAoYWdlbnRMb2FkaW5nICYmICFwcmVmZXRjaGVkQWdlbnRCeUlkUmVmLmN1cnJlbnQpIHJldHVyblxuXG4gICAgY29uc3QgYXBwbHlFZGl0aW5nQWdlbnQgPSAoc291cmNlOiBhbnkpID0+IHtcbiAgICAgIGlmIChzb3VyY2UudHlwZSAhPT0gJ2N1c3RvbScgfHwgIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnZXJyb3JBY2Nlc3NEZW5pZWQnKSlcbiAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgIH0sIDMwMDApXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiB7XG4gICAgICAgIGNvbnN0IGFnZW50VmFsdWVzVG9TZXQgPSBidWlsZEVkaXRpbmdNb2RhbFZhbHVlc0Zyb21BZ2VudERldGFpbChzb3VyY2UsIGFnZW50TW9kZWxzLCBwcmV2KVxuICAgICAgICBmaXJzdFZhbHVlQWdlbnQuY3VycmVudCA9IGFnZW50VmFsdWVzVG9TZXRcbiAgICAgICAgcmV0dXJuIGFnZW50VmFsdWVzVG9TZXRcbiAgICAgIH0pXG4gICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgICBpZiAocGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2V0U2VjdGlvbihwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudClcbiAgICAgICAgcGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGNvbnN0IHByZWZldGNoZWQgPSBwcmVmZXRjaGVkQWdlbnRCeUlkUmVmLmN1cnJlbnRcbiAgICBpZiAocHJlZmV0Y2hlZCkge1xuICAgICAgcHJlZmV0Y2hlZEFnZW50QnlJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYXBwbHlFZGl0aW5nQWdlbnQocHJlZmV0Y2hlZClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChhZ2VudEJ5SWQgJiYgIWFnZW50TG9hZGluZyAmJiBhZ2VudE1vZGVscy5sZW5ndGgpIHtcbiAgICAgIGFwcGx5RWRpdGluZ0FnZW50KGFnZW50QnlJZClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghaXNMb2FkaW5nICYmICFhZ2VudExvYWRpbmcgJiYgIWFnZW50QnlJZCAmJiAhbW9kYWxWYWx1ZXMuaXNFZGl0aW5nKSB7XG4gICAgICBzZXRNb2RhbFZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgICAgYWlNb2RlbDogYWdlbnRNb2RlbHNbMF0sXG4gICAgICAgIH0sXG4gICAgICB9KSlcbiAgICB9XG4gIH0sIFthZ2VudEJ5SWQsIGlzT3BlbiwgaXNMb2FkaW5nLCBhZ2VudExvYWRpbmcsIGFnZW50TW9kZWxzPy5sZW5ndGgsIG1vZGFsVmFsdWVzLmlzRWRpdGluZywgdF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZXJyb3JHZXRBZ2VudEJ5SWQpIHtcbiAgICAgIGlmIChlcnJvckdldEFnZW50QnlJZCA9PT0gXCJBY2Nlc3MgZGVuaWVkOiBZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGlzIGFnZW50XCIpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdlcnJvckFjY2Vzc0RlbmllZCcpKVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgIH0sIDMwMDApXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcihlcnJvckdldEFnZW50QnlJZClcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICB9LCAzMDAwKVxuICAgIH1cbiAgfSwgW2Vycm9yR2V0QWdlbnRCeUlkXSlcblxuICBjb25zdCBzaG91bGREaXNhYmxlU2F2ZUZvckNsaWVudHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIW1vZGFsVmFsdWVzPy5hY2Nlc3NpYmlsaXR5Py5jbGllbnRzIHx8IG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuY2xpZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICByZXR1cm4gbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5jbGllbnRzLnNvbWUoY2xpZW50ID0+IGNsaWVudC5pc19hY3RpdmUgPT09IGZhbHNlIHx8IGNsaWVudC5pc19kZWxldGVkID09PSB0cnVlKVxuICB9LCBbbW9kYWxWYWx1ZXM/LmFjY2Vzc2liaWxpdHk/LmNsaWVudHNdKVxuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZUZhdm9yaXRlID0gKCkgPT4ge1xuICAgIGlmIChtb2RhbFZhbHVlcz8uZ2VuZXJhbD8uaWQpIHtcbiAgICAgIC8vIEV4aXN0aW5nIGFnZW50XG4gICAgICB0b2dnbGVGYXZvcml0ZShcbiAgICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCxcbiAgICAgICAgdXBkYXRlZEFnZW50ID0+IHtcbiAgICAgICAgICBzZXRNb2RhbFZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgZ2VuZXJhbDoge1xuICAgICAgICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgICAgICAgIGlzX2Zhdm9yaXRlOiB1cGRhdGVkQWdlbnQuaXNfZmF2b3JpdGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pKVxuICAgICAgICAgIC8vIEFjdHVhbGl6YXIgZWwgZXN0YWRvIGRlIGFnZW50ZXMgeSBvcmRlbmFyIGN1YW5kbyBzZSBoYWNlIGRlc2RlIGVsIG1vZGFsIEFCTVxuICAgICAgICAgIHVwZGF0ZUFnZW50RmF2b3JpdGUodXBkYXRlZEFnZW50LCB0cnVlKVxuICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRGYXZvcml0ZSwge1xuICAgICAgICAgICAgb3B0aW9uOiB1cGRhdGVkQWdlbnQuaXNfZmF2b3JpdGUgPyAnYWRkJyA6ICdyZW1vdmUnLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgbW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlzX2Zhdm9yaXRlXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENyZWF0ZSBuZXcgYWdlbnRcbiAgICAgIHNldE1vZGFsVmFsdWVzKHByZXYgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgZ2VuZXJhbDoge1xuICAgICAgICAgIC4uLnByZXYuZ2VuZXJhbCxcbiAgICAgICAgICBpc19mYXZvcml0ZTogIXByZXYuZ2VuZXJhbC5pc19mYXZvcml0ZSxcbiAgICAgICAgfSxcbiAgICAgIH0pKVxuICAgIH1cbiAgfVxuXG4gIGlmICghaXNPcGVuIHx8ICghdXNlclBlcm1pc3Npb25zPy5jcmVhdGUgJiYgIXVzZXJQZXJtaXNzaW9ucz8uZWRpdCAmJiAhdXNlclBlcm1pc3Npb25zPy5kZWxldGUpKSByZXR1cm4gbnVsbFxuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgPEJhY2tkcm9wIHpJbmRleD17YWJtQWdlbnRNb2RhbFpJbmRleH0gb25DbGljaz17aGFuZGxlQmFja2Ryb3BDbGlja30+XG4gICAgICA8U0NBQU1XcmFwcGVyIHJlZj17bW9kYWxSZWZ9IHRhYkluZGV4PXstMX0+XG4gICAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgICAgPFNDQUFNV3JhcHBlclNwaW5uZXI+XG4gICAgICAgICAgICA8U0NBQU1XcmFwcGVyU3Bpbm5lckNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxTcGlubmVyTG90dGllIHNpemU9XCI4MHB4XCIgY29sb3I9XCJwcmltYXJ5XCIgLz5cbiAgICAgICAgICAgIDwvU0NBQU1XcmFwcGVyU3Bpbm5lckNvbnRlbnQ+XG4gICAgICAgICAgPC9TQ0FBTVdyYXBwZXJTcGlubmVyPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICB7aXNTaG93UHJvY2Vzc0ZpbGVzICYmIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID8gKFxuICAgICAgICAgICAgICA8QWJtTG9hZGVyRmlsZXNcbiAgICAgICAgICAgICAgICBhdHRhY2htZW50cz17bW9kYWxWYWx1ZXMua25vd2xlZGdlfVxuICAgICAgICAgICAgICAgIGxhYmVsPXt0KGBwcm9jZXNzaW5nS25vd2xlZGdlLiR7bW9kYWxWYWx1ZXMuaXNFZGl0aW5nID8gJ2Rlc2NyaXB0aW9uVXBkYXRlJyA6ICdkZXNjcmlwdGlvbkNyZWF0ZSd9YCl9XG4gICAgICAgICAgICAgICAgb25UaW1lb3V0PXtoYW5kbGVQcm9jZXNzRmlsZXNUaW1lb3V0fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8U0NBQU1IZWFkZXI+XG4gICAgICAgICAgICAgICAgICA8U0NBQU1IZWFkZXJMZWZ0PlxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIHpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RhbFZhbHVlcz8uZ2VuZXJhbD8uaXNfZmF2b3JpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0KCdnZW5lcmFsU2VjdGlvbi5yZW1vdmVGYXZvcml0ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogdCgnZ2VuZXJhbFNlY3Rpb24uYWRkRmF2b3JpdGUnKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0FBTUhlYWRlckZhdm9yaXRlIG9uQ2xpY2s9e2hhbmRsZVRvZ2dsZUZhdm9yaXRlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsyMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsyMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e21vZGFsVmFsdWVzPy5nZW5lcmFsPy5pc19mYXZvcml0ZSA/ICcjRkZDNjI0JyA6ICcjYTZhNmE2J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD17bW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlzX2Zhdm9yaXRlID8gJyNGRkM2MjQnIDogJ25vbmUnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwic29saWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e21vZGFsVmFsdWVzPy5nZW5lcmFsPy5pc19mYXZvcml0ZSA/ICcnIDogJ3N0YXItZmF2b3JpdGUtaWNvbid9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NBQU1IZWFkZXJGYXZvcml0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgICA8U0NBQU1IZWFkZXJUaXRsZT57bW9kYWxWYWx1ZXM/LmlzRWRpdGluZyA/IHQoJ2VkaXRBZ2VudCcpIDogdCgnbmV3QWdlbnQnKX08L1NDQUFNSGVhZGVyVGl0bGU+XG4gICAgICAgICAgICAgICAgICA8L1NDQUFNSGVhZGVyTGVmdD5cbiAgICAgICAgICAgICAgICAgIDxTQ0FBTUhlYWRlckNsb3NlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuY2FuY2VsTW9kYWwpXG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNMb2FkaW5nIHx8IGlzTG9hZGluZ0tub3dsZWRnZSB8fCBpc0xvYWRpbmdDcmVhdGUgfHwgaXNMb2FkaW5nVXBkYXRlQWNjZXNzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Q3Jvc3MgY29sb3I9XCIjYTZhNmE2XCIgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgPC9TQ0FBTUhlYWRlckNsb3NlQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvU0NBQU1IZWFkZXI+XG4gICAgICAgICAgICAgICAgPFNDQUFNQ29udGVudCBoYXNTY3JvbGw9e3NlY3Rpb24gIT09ICdrbm93bGVkZ2UnfT5cbiAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXI+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdnZW5lcmFsJ31cbiAgICAgICAgICAgICAgICAgICAgICAkaW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlU2VjdGlvbkNoYW5nZSgnZ2VuZXJhbCcpfVxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWJtLWFnZW50LW1vZGFsLWdlbmVyYWxcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPENhdGVnb3J5XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17YCR7c2VjdGlvbiA9PT0gJ2dlbmVyYWwnID8gJ3JnYmEoNjMsIDYzLCA2MywgMSknIDogJ3JnYmEoMTY2LCAxNjYsIDE2NiwgMSknfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezE4fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1UaXRsZSBpc0FjdGl2ZT17c2VjdGlvbiA9PT0gJ2dlbmVyYWwnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdnZW5lcmFsU2VjdGlvbi50aXRsZScpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFySXRlbVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW0+XG5cbiAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZT17c2VjdGlvbiA9PT0gJ2tub3dsZWRnZSd9XG4gICAgICAgICAgICAgICAgICAgICAgJGluZGV4PXsxfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlY3Rpb25DaGFuZ2UoJ2tub3dsZWRnZScpfVxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWJtLWFnZW50LW1vZGFsLWtub3dsZWRnZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8QnJhaW5JY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17YCR7c2VjdGlvbiA9PT0gJ2tub3dsZWRnZScgPyAncmdiYSg2MywgNjMsIDYzLCAxKScgOiAncmdiYSgxNjYsIDE2NiwgMTY2LCAxKSd9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVRpdGxlIGlzQWN0aXZlPXtzZWN0aW9uID09PSAna25vd2xlZGdlJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dCgna25vd2xlZGdlU2VjdGlvbi50aXRsZScpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFySXRlbVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW0+XG5cbiAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZT17c2VjdGlvbiA9PT0gJ2FjY2Vzc2liaWxpdHknfVxuICAgICAgICAgICAgICAgICAgICAgICRpbmRleD17Mn1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWN0aW9uQ2hhbmdlKCdhY2Nlc3NpYmlsaXR5Jyl9XG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhYm0tYWdlbnQtbW9kYWwtYWNjZXNzaWJpbGl0eVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8QWNjZXNzaWJpbGl0eUljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXtgJHtzZWN0aW9uID09PSAnYWNjZXNzaWJpbGl0eScgPyAncmdiYSg2MywgNjMsIDYzLCAxKScgOiAncmdiYSgxNjYsIDE2NiwgMTY2LCAxKSd9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVRpdGxlIGlzQWN0aXZlPXtzZWN0aW9uID09PSAnYWNjZXNzaWJpbGl0eSd9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLnRpdGxlVGFiJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtVGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAge3Nob3VsZERpc2FibGVTYXZlRm9yQ2xpZW50cyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uY2xpZW50c0Vycm9yJyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtRXJyb3I+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IGNvbG9yPVwiI0M3MDUwNVwiIHdpZHRoPVwiMTZweFwiIGhlaWdodD1cIjE2cHhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW1FcnJvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW0+XG4gICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhcj5cbiAgICAgICAgICAgICAgICAgIHtTZWN0aW9uQnlLZXlbc2VjdGlvbl0oe1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IG1vZGFsVmFsdWVzLFxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZXRBZ2VudFZhbHVlczogaGFuZGxlU2V0QWdlbnRWYWx1ZXNCeUtleXMsXG4gICAgICAgICAgICAgICAgICAgIGFnZW50TW9kZWxzLFxuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdLbm93bGVkZ2U6IFtdLFxuICAgICAgICAgICAgICAgICAgICBuZXdLbm93bGVkZ2U6IFtdLFxuICAgICAgICAgICAgICAgICAgICBvblJlbW92ZUV4aXN0aW5nS25vd2xlZGdlOiAoKSA9PiB7fSxcbiAgICAgICAgICAgICAgICAgICAgb25SZW1vdmVOZXdLbm93bGVkZ2U6ICgpID0+IHt9LFxuICAgICAgICAgICAgICAgICAgICBvbkZpbGVFcnJvckNoYW5nZTogc2V0SGFzRmlsZUVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFpJbmRleCxcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIDwvU0NBQU1Db250ZW50PlxuICAgICAgICAgICAgICAgIDxTQ0FBTUZvb3RlciBpc0VkaXRpbmc9eyEhbW9kYWxWYWx1ZXM/LmlzRWRpdGluZyAmJiAhIXVzZXJQZXJtaXNzaW9ucz8uZGVsZXRlfT5cbiAgICAgICAgICAgICAgICAgIHshIW1vZGFsVmFsdWVzPy5pc0VkaXRpbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgISF1c2VyUGVybWlzc2lvbnM/LmRlbGV0ZSAmJlxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUFNRGVsZXRlQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPENVQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5XaXRoSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hvd01vZGFsRGVsZXRlKHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc0xvYWRpbmcgfHwgaXNMb2FkaW5nS25vd2xlZGdlIHx8IGlzTG9hZGluZ0NyZWF0ZSB8fCBpc0xvYWRpbmdVcGRhdGVBY2Nlc3N9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxXcmFwcGVyQ2VudGVySWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHJhc2ggY29sb3I9XCIjMDhjXCIgd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdkZWxldGVBZ2VudCcpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1dyYXBwZXJDZW50ZXJJY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9DVUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNRGVsZXRlQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGdhcDogJzI0cHgnIH19PlxuICAgICAgICAgICAgICAgICAgICA8U0NBQU1TYXZlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgaXNEaXNhYmxlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAhdmFsaWRhdGVGaWVsZFZhbHVlcyhtb2RhbFZhbHVlcykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdLbm93bGVkZ2UgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0NyZWF0ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXBkYXRlQWNjZXNzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG91bGREaXNhYmxlU2F2ZUZvckNsaWVudHMgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0ZpbGVFcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8Q1VCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1BY3Rpb24obnVsbCwgJ2NyZWF0ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAhdmFsaWRhdGVGaWVsZFZhbHVlcyhtb2RhbFZhbHVlcykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVBZ2VudFZhbHVlc0lzU2FtZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdLbm93bGVkZ2UgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nQ3JlYXRlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1VwZGF0ZUFjY2VzcyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGREaXNhYmxlU2F2ZUZvckNsaWVudHMgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzRmlsZUVycm9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHttb2RhbFZhbHVlcy5pc0VkaXRpbmcgPyB0KCdzYXZlQ2hhbmdlcycpIDogdCgnY3JlYXRlQWdlbnRMYWJlbEJ1dHRvbicpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvQ1VCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TYXZlQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9TQ0FBTUZvb3Rlcj5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9TQ0FBTVdyYXBwZXI+XG4gICAgICB7c2hvd01vZGFsRGVsZXRlICYmIChcbiAgICAgICAgPERlbGV0ZVF1ZXN0aW9uTW9kYWxcbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93TW9kYWxEZWxldGUoZmFsc2UpfVxuICAgICAgICAgIGhhbmRsZXJzPXt7XG4gICAgICAgICAgICBoYW5kbGVDb25maXJtQWN0aW9uOiAocHJvcHM6IGFueSkgPT4gaGFuZGxlQ29uZmlybUFjdGlvbihwcm9wcywgJ2RlbGV0ZScpLFxuICAgICAgICAgIH19XG4gICAgICAgICAgY2hhdD17eyB0aXRsZTogbW9kYWxWYWx1ZXMuZ2VuZXJhbC5uYW1lLCBpZDogbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCB9fVxuICAgICAgICAgIGFjdGlvbj1cImFnZW50XCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9CYWNrZHJvcD4sXG4gICAgc2VsZWN0b3JcbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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
|