@agilemotion/oui-react-js 2.0.25 → 2.0.27
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/dist/RestService.js +22 -13
- package/dist/RestUtils.js +7 -4
- package/dist/components/AlertBar.js +2 -2
- package/dist/components/Button.js +59 -7
- package/dist/components/DataGrid.js +42 -16
- package/dist/components/DocumentTemplateDesignerComponent.js +2 -2
- package/dist/components/FileThumb.js +69 -7
- package/dist/components/WordDocumentViewer.js +2 -2
- package/dist/components/dashboard/components/blackDashboard/sidebar/FoldingTabSidebar.js +6 -2
- package/dist/components/form/BaseField.js +4 -2
- package/dist/components/form/Checkbox.js +3 -2
- package/dist/components/form/FieldSet.js +2 -2
- package/dist/components/form/Form.css +1 -1
- package/dist/components/form/Form.js +40 -38
- package/dist/components/form/GridField.js +6 -5
- package/dist/components/form/RadioGroup.js +5 -5
- package/dist/components/form/UploadField.js +68 -4
- package/dist/components/layout/Layout.js +9 -1
- package/dist/components/layout/View.css +2 -0
- package/dist/components/media/ChatViewer.js +103 -0
- package/dist/components/media/TrainingRoom.js +5 -5
- package/dist/components/media/VCRoomParticipant.js +7 -3
- package/dist/components/media/VCRoomWorkspace.js +19 -4
- package/dist/components/media/chat/ChatRoom.js +21 -10
- package/dist/components/media/chat/PollContainer.js +85 -18
- package/dist/js/ProcurementMeetings.js +11 -4
- package/dist/view/PortalDashboard.js +6 -5
- package/dist/view/security/ForgotPassword.js +4 -1
- package/dist/view/security/ForgotPasswordBasic.js +4 -1
- package/dist/view/security/RegisterInteractionPortal.js +5 -1
- package/dist/view/security/ResetPassword.js +4 -1
- package/dist/view/security/ResetPasswordBasic.js +4 -1
- package/dist/view/security/Security.js +16 -3
- package/package.json +1 -1
|
@@ -19,15 +19,22 @@ var _FormControlLabel = _interopRequireDefault(require("@mui/material/FormContro
|
|
|
19
19
|
var _Radio = _interopRequireDefault(require("@mui/material/Radio"));
|
|
20
20
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
21
21
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
22
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
23
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
24
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
25
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
26
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
22
27
|
const PollContainer = props => {
|
|
23
|
-
var _props$poll$options$f;
|
|
28
|
+
var _props$currentUser, _poll$tieBreakerParti, _props$currentUser2, _poll$tieBreakerParti2, _poll$tieBreakerParti3, _find, _props$poll$options$f, _find2;
|
|
24
29
|
const [pollOptions, setPollOptions] = (0, _react.useState)([]);
|
|
25
30
|
const [poll, setPoll] = (0, _react.useState)({});
|
|
26
31
|
const [pollClosed, setPollClosed] = (0, _react.useState)(false);
|
|
27
32
|
const [currentVote, setCurrentVote] = (0, _react.useState)(null);
|
|
28
33
|
const [tieBreakerVote, setTieBreakerVote] = (0, _react.useState)(null);
|
|
29
|
-
|
|
30
|
-
|
|
34
|
+
// The tie-break option this client just submitted — keeps the tie-break UI stable
|
|
35
|
+
// (and the "you have voted" message visible) immediately, before/independent of the
|
|
36
|
+
// backend round-trip. Synced from poll.tieBreakerSelectedOption on reload.
|
|
37
|
+
const [submittedTieBreak, setSubmittedTieBreak] = (0, _react.useState)(null);
|
|
31
38
|
const [socketEventHandler] = (0, _react.useState)({});
|
|
32
39
|
const socketEventHandlerApi = () => {
|
|
33
40
|
return {
|
|
@@ -44,8 +51,13 @@ const PollContainer = props => {
|
|
|
44
51
|
};
|
|
45
52
|
};
|
|
46
53
|
const onSystemEvent = payload => {
|
|
47
|
-
if (payload.systemEventType === "NEW_POLL_VOTE" && payload.data.pollId === poll.id) {
|
|
48
|
-
|
|
54
|
+
if ((payload.systemEventType === "NEW_POLL_VOTE" || payload.systemEventType === "TIE_BREAKER_POLL_VOTE") && payload.data.pollId === poll.id) {
|
|
55
|
+
// Refresh the poll so vote counts (and therefore tie detection) recompute from
|
|
56
|
+
// the server — otherwise the tie-breaker UI never appears unless the tie-breaker
|
|
57
|
+
// happens to be the last to vote. Counts are derived from the refreshed poll.
|
|
58
|
+
if (props.refreshPollHandler) {
|
|
59
|
+
props.refreshPollHandler();
|
|
60
|
+
}
|
|
49
61
|
}
|
|
50
62
|
};
|
|
51
63
|
const pollRemainingTime = expirationDateTime => {
|
|
@@ -111,7 +123,6 @@ const PollContainer = props => {
|
|
|
111
123
|
if (props.poll) {
|
|
112
124
|
const renderedPoll = props.poll;
|
|
113
125
|
setPoll(renderedPoll);
|
|
114
|
-
setTotalVotes(renderedPoll.totalVotes ? renderedPoll.totalVotes : 0);
|
|
115
126
|
const pollOptionRows = [];
|
|
116
127
|
const closed = renderedPoll.isExpired || !renderedPoll.open;
|
|
117
128
|
setPollClosed(closed);
|
|
@@ -136,11 +147,35 @@ const PollContainer = props => {
|
|
|
136
147
|
label: option.text
|
|
137
148
|
}));
|
|
138
149
|
});
|
|
139
|
-
setTieOptions(tieForFirst(renderedPoll.options));
|
|
140
150
|
}
|
|
141
151
|
setPollOptions(pollOptionRows);
|
|
142
152
|
}
|
|
143
153
|
}, [props.poll]);
|
|
154
|
+
|
|
155
|
+
// Voting eligibility. An empty/absent allowedParticipants list = unrestricted poll.
|
|
156
|
+
const eligibleVoters = poll.allowedParticipants || [];
|
|
157
|
+
const isEligibleVoter = eligibleVoters.length === 0 || eligibleVoters.includes((_props$currentUser = props.currentUser) === null || _props$currentUser === void 0 ? void 0 : _props$currentUser.username);
|
|
158
|
+
// Denominator is the eligible-voter count (falls back to the passed-in participant count).
|
|
159
|
+
const eligibleCount = eligibleVoters.length > 0 ? eligibleVoters.length : props.numberOfPollParticipants;
|
|
160
|
+
// Keep the tie-breaker vote out of the normal tally — it's stated separately. There is
|
|
161
|
+
// at most one tie-break vote (only the designated tie-breaker may cast it).
|
|
162
|
+
const tieBreakerCast = !!poll.tieBreakerResolved;
|
|
163
|
+
const allVotes = poll.totalVotes || 0;
|
|
164
|
+
const normalVotesCount = Math.max(0, allVotes - (tieBreakerCast ? 1 : 0));
|
|
165
|
+
const allEligibleVoted = normalVotesCount >= eligibleCount;
|
|
166
|
+
// The tie-breaker is cast only by the designated tie-breaker participant.
|
|
167
|
+
const isTieBreakerParticipant = !!((_poll$tieBreakerParti = poll.tieBreakerParticipant) !== null && _poll$tieBreakerParti !== void 0 && _poll$tieBreakerParti.username) && poll.tieBreakerParticipant.username === ((_props$currentUser2 = props.currentUser) === null || _props$currentUser2 === void 0 ? void 0 : _props$currentUser2.username);
|
|
168
|
+
const tieBreakerName = ((_poll$tieBreakerParti2 = poll.tieBreakerParticipant) === null || _poll$tieBreakerParti2 === void 0 ? void 0 : _poll$tieBreakerParti2.name) || ((_poll$tieBreakerParti3 = poll.tieBreakerParticipant) === null || _poll$tieBreakerParti3 === void 0 ? void 0 : _poll$tieBreakerParti3.username);
|
|
169
|
+
// This client's own tie-break option — backend value, or the one just submitted locally.
|
|
170
|
+
const myTieBreakOption = poll.tieBreakerSelectedOption || submittedTieBreak;
|
|
171
|
+
// The text of the tie-break choice, for display (e.g. "Resolved by tie breaker (x) — Adopt").
|
|
172
|
+
const tieBreakerOptionText = (_find = (poll.options || []).find(o => o.id === poll.tieBreakerSelectedOption)) === null || _find === void 0 ? void 0 : _find.text;
|
|
173
|
+
// Detect the tie on NORMAL votes only — subtract this client's own tie-break vote so
|
|
174
|
+
// casting/changing it never makes the tie-break UI disappear (it stays open for changes).
|
|
175
|
+
const normalOptionsForTie = (poll.options || []).map(o => _objectSpread(_objectSpread({}, o), {}, {
|
|
176
|
+
voteCount: (o.voteCount || 0) - (myTieBreakOption && o.id === myTieBreakOption ? 1 : 0)
|
|
177
|
+
}));
|
|
178
|
+
const tieOptions = tieForFirst(normalOptionsForTie);
|
|
144
179
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
145
180
|
className: "poll-content"
|
|
146
181
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -160,7 +195,7 @@ const PollContainer = props => {
|
|
|
160
195
|
className: "poll-question"
|
|
161
196
|
}, poll.question), /*#__PURE__*/_react.default.createElement("div", {
|
|
162
197
|
className: "poll-creation-date"
|
|
163
|
-
}, "Results are visible after the poll has closed / expired.")), /*#__PURE__*/_react.default.createElement("div", {
|
|
198
|
+
}, "Results are visible after the poll has closed / expired.")), pollClosed || isEligibleVoter ? /*#__PURE__*/_react.default.createElement("div", {
|
|
164
199
|
className: "poll-choices"
|
|
165
200
|
}, /*#__PURE__*/_react.default.createElement(_FormControl.default, {
|
|
166
201
|
style: {
|
|
@@ -172,7 +207,15 @@ const PollContainer = props => {
|
|
|
172
207
|
onChange: e => {
|
|
173
208
|
setCurrentVote(e.target.value);
|
|
174
209
|
}
|
|
175
|
-
}, pollOptions)))
|
|
210
|
+
}, pollOptions))) : /*#__PURE__*/_react.default.createElement("div", {
|
|
211
|
+
className: "poll-choices"
|
|
212
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
213
|
+
style: {
|
|
214
|
+
color: '#945c33',
|
|
215
|
+
display: 'inline-block',
|
|
216
|
+
paddingTop: '8px'
|
|
217
|
+
}
|
|
218
|
+
}, "You are not a voting participant for this poll.")), !pollClosed ? /*#__PURE__*/_react.default.createElement("div", {
|
|
176
219
|
className: "poll-footer"
|
|
177
220
|
}, /*#__PURE__*/_react.default.createElement(_material.Stack, {
|
|
178
221
|
direction: {
|
|
@@ -181,7 +224,7 @@ const PollContainer = props => {
|
|
|
181
224
|
},
|
|
182
225
|
spacing: 1,
|
|
183
226
|
alignItems: "flex-start"
|
|
184
|
-
}, /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
227
|
+
}, isEligibleVoter && /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
185
228
|
className: "vote-button",
|
|
186
229
|
variant: "outlined",
|
|
187
230
|
onClick: () => {
|
|
@@ -209,7 +252,14 @@ const PollContainer = props => {
|
|
|
209
252
|
color: '#000000'
|
|
210
253
|
},
|
|
211
254
|
className: "time-left"
|
|
212
|
-
}, "".concat(
|
|
255
|
+
}, "".concat(normalVotesCount, " votes out of ").concat(eligibleCount)), !isTieBreakerParticipant && tieBreakerCast && /*#__PURE__*/_react.default.createElement("div", {
|
|
256
|
+
style: {
|
|
257
|
+
marginTop: "4px",
|
|
258
|
+
marginLeft: '8px',
|
|
259
|
+
color: '#945c33'
|
|
260
|
+
},
|
|
261
|
+
className: "time-left"
|
|
262
|
+
}, "+1 tie-breaker vote".concat(tieBreakerName ? " (".concat(tieBreakerName, ")") : '')), /*#__PURE__*/_react.default.createElement("div", {
|
|
213
263
|
className: "time-left",
|
|
214
264
|
style: {
|
|
215
265
|
marginLeft: '4px',
|
|
@@ -225,7 +275,7 @@ const PollContainer = props => {
|
|
|
225
275
|
style: {
|
|
226
276
|
color: '#945c33'
|
|
227
277
|
}
|
|
228
|
-
}, "You have voted ", (_props$poll$options$f = props.poll.options.find(o => o.id === poll.selectedOption)) === null || _props$poll$options$f === void 0 ? void 0 : _props$poll$options$f.text)),
|
|
278
|
+
}, "You have voted ", (_props$poll$options$f = props.poll.options.find(o => o.id === poll.selectedOption)) === null || _props$poll$options$f === void 0 ? void 0 : _props$poll$options$f.text)), isTieBreakerParticipant && (tieOptions.length > 0 || tieBreakerCast) && allEligibleVoted && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
229
279
|
className: "poll-choices",
|
|
230
280
|
style: {
|
|
231
281
|
marginTop: '8px'
|
|
@@ -244,7 +294,7 @@ const PollContainer = props => {
|
|
|
244
294
|
}
|
|
245
295
|
}, /*#__PURE__*/_react.default.createElement(_RadioGroup.default, {
|
|
246
296
|
className: "poll-choice-radio-group",
|
|
247
|
-
value: tieBreakerVote ? tieBreakerVote :
|
|
297
|
+
value: tieBreakerVote ? tieBreakerVote : myTieBreakOption ? myTieBreakOption : '',
|
|
248
298
|
onChange: e => {
|
|
249
299
|
setTieBreakerVote(e.target.value);
|
|
250
300
|
}
|
|
@@ -254,7 +304,8 @@ const PollContainer = props => {
|
|
|
254
304
|
onClick: () => {
|
|
255
305
|
const hasVoted = poll.tieBreakerOption;
|
|
256
306
|
poll.tieBreakerOption = tieBreakerVote ? tieBreakerVote : '';
|
|
257
|
-
|
|
307
|
+
setSubmittedTieBreak(tieBreakerVote ? tieBreakerVote : null);
|
|
308
|
+
props.submitPollVoteHandler(poll, true);
|
|
258
309
|
if (!hasVoted) {
|
|
259
310
|
_SocketManager.default.emitEvent(_VCEventType.VCEventType.SYSTEM_EVENT, {
|
|
260
311
|
systemEventType: 'TIE_BREAKER_POLL_VOTE',
|
|
@@ -265,7 +316,16 @@ const PollContainer = props => {
|
|
|
265
316
|
}).catch(() => {});
|
|
266
317
|
}
|
|
267
318
|
}
|
|
268
|
-
}, "Submit tie breaker Vote")
|
|
319
|
+
}, "Submit tie breaker Vote"), myTieBreakOption && /*#__PURE__*/_react.default.createElement("div", {
|
|
320
|
+
className: "poll-creation-date",
|
|
321
|
+
style: {
|
|
322
|
+
marginTop: "4px"
|
|
323
|
+
}
|
|
324
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
325
|
+
style: {
|
|
326
|
+
color: '#945c33'
|
|
327
|
+
}
|
|
328
|
+
}, "You have voted to ", (_find2 = (poll.options || []).find(o => o.id === myTieBreakOption)) === null || _find2 === void 0 ? void 0 : _find2.text, " (tie breaker)")))) : /*#__PURE__*/_react.default.createElement("div", {
|
|
269
329
|
className: "poll-footer"
|
|
270
330
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
271
331
|
style: {
|
|
@@ -273,13 +333,20 @@ const PollContainer = props => {
|
|
|
273
333
|
marginTop: "4px"
|
|
274
334
|
},
|
|
275
335
|
className: "time-left"
|
|
276
|
-
}, "".concat(
|
|
336
|
+
}, "".concat(normalVotesCount, " voted out of ").concat(eligibleCount)), /*#__PURE__*/_react.default.createElement("div", {
|
|
277
337
|
className: "time-left",
|
|
278
338
|
style: {
|
|
279
339
|
marginLeft: '4px',
|
|
280
340
|
marginTop: "4px"
|
|
281
341
|
}
|
|
282
|
-
}, "The poll is closed")
|
|
342
|
+
}, "The poll is closed"), tieBreakerCast && /*#__PURE__*/_react.default.createElement("div", {
|
|
343
|
+
className: "time-left",
|
|
344
|
+
style: {
|
|
345
|
+
marginLeft: '4px',
|
|
346
|
+
marginTop: "4px",
|
|
347
|
+
color: '#945c33'
|
|
348
|
+
}
|
|
349
|
+
}, "Resolved by tie breaker".concat(tieBreakerName ? " (".concat(tieBreakerName, ")") : '').concat(tieBreakerOptionText ? " \u2014 ".concat(tieBreakerOptionText) : ''))));
|
|
283
350
|
};
|
|
284
351
|
var _default = exports.default = PollContainer;
|
|
285
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbWF0ZXJpYWwiLCJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX0Zvcm1Db250cm9sIiwiX1JhZGlvR3JvdXAiLCJfQnV0dG9uIiwiX1ZDRXZlbnRNYW5hZ2VyIiwiX1NvY2tldE1hbmFnZXIiLCJfVkNFdmVudFR5cGUiLCJfUG9sbFJlc3VsdCIsIl9Gb3JtQ29udHJvbExhYmVsIiwiX1JhZGlvIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiUG9sbENvbnRhaW5lciIsInByb3BzIiwiX3Byb3BzJHBvbGwkb3B0aW9ucyRmIiwicG9sbE9wdGlvbnMiLCJzZXRQb2xsT3B0aW9ucyIsInVzZVN0YXRlIiwicG9sbCIsInNldFBvbGwiLCJwb2xsQ2xvc2VkIiwic2V0UG9sbENsb3NlZCIsImN1cnJlbnRWb3RlIiwic2V0Q3VycmVudFZvdGUiLCJ0aWVCcmVha2VyVm90ZSIsInNldFRpZUJyZWFrZXJWb3RlIiwidG90YWxWb3RlcyIsInNldFRvdGFsVm90ZXMiLCJ0aWVPcHRpb25zIiwic2V0VGllT3B0aW9ucyIsInNvY2tldEV2ZW50SGFuZGxlciIsInNvY2tldEV2ZW50SGFuZGxlckFwaSIsImlkIiwiY29uY2F0Iiwib24iLCJldmVudFR5cGUiLCJiZSIsIlZDRXZlbnRUeXBlIiwiU1lTVEVNX0VWRU5UIiwib25TeXN0ZW1FdmVudCIsInBheWxvYWQiLCJzeXN0ZW1FdmVudFR5cGUiLCJkYXRhIiwicG9sbElkIiwicG9sbFJlbWFpbmluZ1RpbWUiLCJleHBpcmF0aW9uRGF0ZVRpbWUiLCJleHBpcmF0aW9uVGltZSIsIkRhdGUiLCJnZXRUaW1lIiwiY3VycmVudFRpbWUiLCJkaWZmZXJlbmNlX21zIiwic2Vjb25kcyIsIk1hdGgiLCJmbG9vciIsIm1pbnV0ZXMiLCJob3VycyIsImRheXMiLCJ0aW1lUmVtYWluaW5nIiwiY2FsY3VsYXRlUGVyY2VudGFnZSIsInJlbmRlcmVkUG9sbCIsIm9wdGlvbiIsInZvdGVDb3VudCIsIndpbm5pbmdPcHRpb25zIiwib3B0aW9ucyIsInJlZHVjZSIsInByZXZPcHRpb24iLCJjdXJyZW50T3B0aW9uIiwiSW5maW5pdHkiLCJ0aWVGb3JGaXJzdCIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsIkFycmF5IiwiaXNBcnJheSIsImNvdW50cyIsIm1hcCIsIl9vJHZvdGVDb3VudCIsIm1heCIsImxlYWRlcnMiLCJmaWx0ZXIiLCJfbyR2b3RlQ291bnQyIiwidXNlRWZmZWN0IiwidmNFdmVudE1hbmFnZXIiLCJhZGRTdWJzY3JpcHRpb25zIiwiQ0hBVF9NRVNTQUdFIiwicmVtb3ZlU3Vic2NyaXB0aW9ucyIsImFwaSIsInBvbGxPcHRpb25Sb3dzIiwiY2xvc2VkIiwiaXNFeHBpcmVkIiwib3BlbiIsIndpbm5pbmdPcHQiLCJmb3JFYWNoIiwicHVzaCIsImNyZWF0ZUVsZW1lbnQiLCJrZXkiLCJpc1dpbm5lciIsImlzU2VsZWN0ZWQiLCJzZWxlY3RlZE9wdGlvbiIsInBlcmNlbnRWb3RlIiwiY2xhc3NOYW1lIiwidmFsdWUiLCJjb250cm9sIiwibGFiZWwiLCJ0ZXh0IiwiQXZhdGFyIiwic3R5bGUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJVdGlscyIsImdldEF2YXRhckNvbG9yIiwicG9sbENyZWF0b3IiLCJuYW1lIiwiZ2V0SW5pdGlhbHMiLCJmb3JtYXREYXRlVGltZSIsImNyZWF0ZWREYXRlIiwicXVlc3Rpb24iLCJ3aWR0aCIsIm9uQ2hhbmdlIiwidGFyZ2V0IiwiU3RhY2siLCJkaXJlY3Rpb24iLCJ4cyIsInNtIiwic3BhY2luZyIsImFsaWduSXRlbXMiLCJ2YXJpYW50Iiwib25DbGljayIsImhhc1ZvdGVkIiwic3VibWl0UG9sbFZvdGVIYW5kbGVyIiwic29ja2V0TWFuYWdlciIsImVtaXRFdmVudCIsInJlY2lwaWVudHMiLCJwb2xsUGFydGljaXBhbnRJRHMiLCJjYXRjaCIsImN1cnJlbnRVc2VyIiwidXNlcm5hbWUiLCJjbG9zZVBvbGxIYW5kbGVyIiwibWFyZ2luVG9wIiwibWFyZ2luTGVmdCIsImNvbG9yIiwibnVtYmVyT2ZQb2xsUGFydGljaXBhbnRzIiwiZmluZCIsImlzQ2hhaXJQZXJzb24iLCJGcmFnbWVudCIsImJvcmRlclRvcCIsImRpc3BsYXkiLCJwYWRkaW5nVG9wIiwidGllQnJlYWtlck9wdGlvbiIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tZWRpYS9jaGF0L1BvbGxDb250YWluZXIuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge3VzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCAnLi9DaGF0Um9vbXMuc2Nzcyc7XG5pbXBvcnQge0F2YXRhciwgU3RhY2t9IGZyb20gJ0BtdWkvbWF0ZXJpYWwnO1xuaW1wb3J0IFV0aWxzIGZyb20gJy4uLy4uLy4uL1V0aWxzJztcbmltcG9ydCBGb3JtQ29udHJvbCBmcm9tICdAbXVpL21hdGVyaWFsL0Zvcm1Db250cm9sJztcbmltcG9ydCBSYWRpb0dyb3VwIGZyb20gJ0BtdWkvbWF0ZXJpYWwvUmFkaW9Hcm91cCc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ0BtdWkvbWF0ZXJpYWwvQnV0dG9uJztcbmltcG9ydCB2Y0V2ZW50TWFuYWdlciBmcm9tIFwiLi4vVkNFdmVudE1hbmFnZXJcIjtcbmltcG9ydCBzb2NrZXRNYW5hZ2VyIGZyb20gXCIuLi8uLi9Tb2NrZXRNYW5hZ2VyXCI7XG5pbXBvcnQge1ZDRXZlbnRUeXBlfSBmcm9tIFwiLi4vVkNFdmVudFR5cGVcIjtcbmltcG9ydCBQb2xsUmVzdWx0IGZyb20gJy4vUG9sbFJlc3VsdCc7XG5pbXBvcnQgRm9ybUNvbnRyb2xMYWJlbCBmcm9tICdAbXVpL21hdGVyaWFsL0Zvcm1Db250cm9sTGFiZWwnO1xuaW1wb3J0IFJhZGlvIGZyb20gJ0BtdWkvbWF0ZXJpYWwvUmFkaW8nO1xuXG5jb25zdCBQb2xsQ29udGFpbmVyID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgW3BvbGxPcHRpb25zLCBzZXRQb2xsT3B0aW9uc10gPSB1c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW3BvbGwsIHNldFBvbGxdID0gdXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtwb2xsQ2xvc2VkLCBzZXRQb2xsQ2xvc2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbY3VycmVudFZvdGUsIHNldEN1cnJlbnRWb3RlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFt0aWVCcmVha2VyVm90ZSwgc2V0VGllQnJlYWtlclZvdGVdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3RvdGFsVm90ZXMsIHNldFRvdGFsVm90ZXNdID0gdXNlU3RhdGUoMCk7XG4gICAgY29uc3QgW3RpZU9wdGlvbnMsIHNldFRpZU9wdGlvbnNdID0gdXNlU3RhdGUoW10pO1xuICAgIGNvbnN0IFtzb2NrZXRFdmVudEhhbmRsZXJdID0gdXNlU3RhdGUoe30pO1xuXG4gICAgY29uc3Qgc29ja2V0RXZlbnRIYW5kbGVyQXBpID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBgcG9sbC1jb250YWluZXItJHtwcm9wcy5wb2xsLmlkfWA7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb246IChldmVudFR5cGUsIGJlKSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChldmVudFR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5TWVNURU1fRVZFTlQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBvblN5c3RlbUV2ZW50KGJlLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uU3lzdGVtRXZlbnQgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAocGF5bG9hZC5zeXN0ZW1FdmVudFR5cGUgPT09IFwiTkVXX1BPTExfVk9URVwiICYmIHBheWxvYWQuZGF0YS5wb2xsSWQgPT09IHBvbGwuaWQpIHtcbiAgICAgICAgICAgIHNldFRvdGFsVm90ZXModG90YWxWb3RlcyArIDEpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHBvbGxSZW1haW5pbmdUaW1lID0gKGV4cGlyYXRpb25EYXRlVGltZSkgPT4ge1xuICAgICAgICBjb25zdCBleHBpcmF0aW9uVGltZSA9IG5ldyBEYXRlKGV4cGlyYXRpb25EYXRlVGltZSkuZ2V0VGltZSgpO1xuICAgICAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuXG4gICAgICAgIGNvbnN0IGRpZmZlcmVuY2VfbXMgPSBleHBpcmF0aW9uVGltZSAtIGN1cnJlbnRUaW1lO1xuICAgICAgICBjb25zdCBzZWNvbmRzID0gTWF0aC5mbG9vcigoZGlmZmVyZW5jZV9tcyAvIDEwMDApICUgNjApO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcigoZGlmZmVyZW5jZV9tcyAvIDEwMDAgLyA2MCkgJSA2MCk7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcigoZGlmZmVyZW5jZV9tcyAvICgxMDAwICogNjAgKiA2MCkpICUgMjQpO1xuICAgICAgICBjb25zdCBkYXlzID0gTWF0aC5mbG9vcihkaWZmZXJlbmNlX21zIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKTtcblxuICAgICAgICBsZXQgdGltZVJlbWFpbmluZztcblxuICAgICAgICBpZiAoZGF5cyA+IDApIHtcbiAgICAgICAgICAgIHRpbWVSZW1haW5pbmcgPSBkYXlzICsgXCIgZGF5cyBsZWZ0XCI7XG4gICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPiAwKSB7XG4gICAgICAgICAgICB0aW1lUmVtYWluaW5nID0gaG91cnMgKyBcIiBob3VycyBsZWZ0XCI7XG4gICAgICAgIH0gZWxzZSBpZiAobWludXRlcyA+IDApIHtcbiAgICAgICAgICAgIHRpbWVSZW1haW5pbmcgPSBtaW51dGVzICsgXCIgbWludXRlcyBsZWZ0XCI7XG4gICAgICAgIH0gZWxzZSBpZiAoc2Vjb25kcyA+IDApIHtcbiAgICAgICAgICAgIHRpbWVSZW1haW5pbmcgPSBzZWNvbmRzICsgXCIgc2Vjb25kcyBsZWZ0XCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aW1lUmVtYWluaW5nID0gXCJsZXNzIHRoYW4gYSBzZWNvbmQgbGVmdFwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRpbWVSZW1haW5pbmc7XG4gICAgfTtcblxuICAgIGNvbnN0IGNhbGN1bGF0ZVBlcmNlbnRhZ2UgPSAocmVuZGVyZWRQb2xsLCBvcHRpb24pID0+IHtcbiAgICAgICAgaWYgKHJlbmRlcmVkUG9sbC50b3RhbFZvdGVzID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKG9wdGlvbi52b3RlQ291bnQgKiAxMDApIC8gKHJlbmRlcmVkUG9sbC50b3RhbFZvdGVzKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgd2lubmluZ09wdGlvbnMgPSAob3B0aW9ucykgPT4ge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5yZWR1Y2UoKHByZXZPcHRpb24sIGN1cnJlbnRPcHRpb24pID0+XG4gICAgICAgICAgICAgICAgY3VycmVudE9wdGlvbi52b3RlQ291bnQgPiBwcmV2T3B0aW9uLnZvdGVDb3VudCA/IGN1cnJlbnRPcHRpb24gOiBwcmV2T3B0aW9uLFxuICAgICAgICAgICAge3ZvdGVDb3VudDogLUluZmluaXR5fVxuICAgICAgICApO1xuICAgIH07XG5cbiAgICBjb25zdCB0aWVGb3JGaXJzdCA9IChvcHRpb25zID0gW10pID0+IHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpIHx8IG9wdGlvbnMubGVuZ3RoID09PSAwKSByZXR1cm4gW107XG5cbiAgICAgICAgY29uc3QgY291bnRzID0gb3B0aW9ucy5tYXAobyA9PiAobz8udm90ZUNvdW50ID8/IDApKTtcbiAgICAgICAgY29uc3QgbWF4ID0gTWF0aC5tYXgoLi4uY291bnRzKTtcblxuICAgICAgICAvLyBJZiBub2JvZHkgdm90ZWQsIGl0IGNhbm5vdCBiZSBhIHRpZVxuICAgICAgICBpZiAobWF4ID09PSAwKSByZXR1cm4gW107XG5cbiAgICAgICAgY29uc3QgbGVhZGVycyA9IG9wdGlvbnMuZmlsdGVyKG8gPT4gKG8/LnZvdGVDb3VudCA/PyAwKSA9PT0gbWF4KTtcbiAgICAgICAgcmV0dXJuIGxlYWRlcnMubGVuZ3RoID49IDIgPyBsZWFkZXJzIDogW107XG4gICAgfTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZjRXZlbnRNYW5hZ2VyLmFkZFN1YnNjcmlwdGlvbnMoc29ja2V0RXZlbnRIYW5kbGVyLCBWQ0V2ZW50VHlwZS5DSEFUX01FU1NBR0UsIFZDRXZlbnRUeXBlLlNZU1RFTV9FVkVOVCk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICB2Y0V2ZW50TWFuYWdlci5yZW1vdmVTdWJzY3JpcHRpb25zKHNvY2tldEV2ZW50SGFuZGxlcik7XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgc29ja2V0RXZlbnRIYW5kbGVyLmFwaSA9IHNvY2tldEV2ZW50SGFuZGxlckFwaSgpO1xuICAgIH0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHByb3BzLnBvbGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbmRlcmVkUG9sbCA9IHByb3BzLnBvbGw7XG5cbiAgICAgICAgICAgIHNldFBvbGwocmVuZGVyZWRQb2xsKTtcbiAgICAgICAgICAgIHNldFRvdGFsVm90ZXMocmVuZGVyZWRQb2xsLnRvdGFsVm90ZXMgPyByZW5kZXJlZFBvbGwudG90YWxWb3RlcyA6IDApO1xuICAgICAgICAgICAgY29uc3QgcG9sbE9wdGlvblJvd3MgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGNsb3NlZCA9IHJlbmRlcmVkUG9sbC5pc0V4cGlyZWQgfHwgIXJlbmRlcmVkUG9sbC5vcGVuO1xuICAgICAgICAgICAgc2V0UG9sbENsb3NlZChjbG9zZWQpO1xuXG4gICAgICAgICAgICBpZiAoY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2lubmluZ09wdCA9IHdpbm5pbmdPcHRpb25zKHJlbmRlcmVkUG9sbC5vcHRpb25zKTtcblxuICAgICAgICAgICAgICAgIHJlbmRlcmVkUG9sbC5vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcG9sbE9wdGlvblJvd3MucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxQb2xsUmVzdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtvcHRpb24uaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNXaW5uZXI9e3dpbm5pbmdPcHQgJiYgb3B0aW9uLmlkID09PSB3aW5uaW5nT3B0LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ9e3JlbmRlcmVkUG9sbC5zZWxlY3RlZE9wdGlvbiA9PT0gb3B0aW9uLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnRWb3RlPXtjYWxjdWxhdGVQZXJjZW50YWdlKHJlbmRlcmVkUG9sbCwgb3B0aW9uKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlbmRlcmVkUG9sbC5vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcG9sbE9wdGlvblJvd3MucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtvcHRpb24uaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicG9sbC1jaG9pY2UtcmFkaW9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24uaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSYWRpby8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtvcHRpb24udGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgc2V0VGllT3B0aW9ucyh0aWVGb3JGaXJzdChyZW5kZXJlZFBvbGwub3B0aW9ucykpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZXRQb2xsT3B0aW9ucyhwb2xsT3B0aW9uUm93cyk7XG4gICAgICAgIH1cbiAgICB9LCBbcHJvcHMucG9sbF0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwb2xsLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicG9sbC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBvbGwtY3JlYXRvci1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QXZhdGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicG9sbC1jcmVhdG9yLWF2YXRhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tiYWNrZ3JvdW5kQ29sb3I6IFV0aWxzLmdldEF2YXRhckNvbG9yKHByb3BzLnBvbGxDcmVhdG9yLm5hbWUpfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1V0aWxzLmdldEluaXRpYWxzKHByb3BzLnBvbGxDcmVhdG9yLm5hbWUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9BdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwb2xsLWNyZWF0b3ItbmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMucG9sbENyZWF0b3IubmFtZX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwb2xsLWNyZWF0aW9uLWRhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAge1V0aWxzLmZvcm1hdERhdGVUaW1lKHByb3BzLmNyZWF0ZWREYXRlKX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicG9sbC1xdWVzdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICB7cG9sbC5xdWVzdGlvbn1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBvbGwtY3JlYXRpb24tZGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICBSZXN1bHRzIGFyZSB2aXNpYmxlIGFmdGVyIHRoZSBwb2xsIGhhcyBjbG9zZWQgLyBleHBpcmVkLlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBvbGwtY2hvaWNlc1wiPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbCBzdHlsZT17e3dpZHRoOiAnMTAwJSd9fT5cbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBvbGwtY2hvaWNlLXJhZGlvLWdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtjdXJyZW50Vm90ZSA/IGN1cnJlbnRWb3RlIDogcG9sbC5zZWxlY3RlZE9wdGlvbiA/IHBvbGwuc2VsZWN0ZWRPcHRpb24gOiAnJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnJlbnRWb3RlKGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtwb2xsT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICAgICAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAhcG9sbENsb3NlZCA/XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicG9sbC1mb290ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFjayBkaXJlY3Rpb249e3t4czogJ2NvbHVtbicsIHNtOiAncm93J319IHNwYWNpbmc9ezF9IGFsaWduSXRlbXM9XCJmbGV4LXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ2b3RlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1ZvdGVkID0gcG9sbC5zZWxlY3RlZE9wdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGwuc2VsZWN0ZWRPcHRpb24gPSBjdXJyZW50Vm90ZSA/IGN1cnJlbnRWb3RlIDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5zdWJtaXRQb2xsVm90ZUhhbmRsZXIocG9sbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc1ZvdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0TWFuYWdlci5lbWl0RXZlbnQoVkNFdmVudFR5cGUuU1lTVEVNX0VWRU5ULCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbUV2ZW50VHlwZTogJ05FV19QT0xMX1ZPVEUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGllbnRzOiBwcm9wcy5wb2xsUGFydGljaXBhbnRJRHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtwb2xsSWQ6IHBvbGwuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VibWl0IFZvdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY3VycmVudFVzZXIudXNlcm5hbWUgPT09IHByb3BzLnBvbGxDcmVhdG9yLnVzZXJuYW1lICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidm90ZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBwcm9wcy5jbG9zZVBvbGxIYW5kbGVyKGUsIHBvbGwpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9zZSBQb2xsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7bWFyZ2luVG9wOiBcIjRweFwiLCBtYXJnaW5MZWZ0OiAnOHB4JywgY29sb3I6ICcjMDAwMDAwJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRpbWUtbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtgJHt0b3RhbFZvdGVzfSB2b3RlcyBvdXQgb2YgJHtwcm9wcy5udW1iZXJPZlBvbGxQYXJ0aWNpcGFudHN9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aW1lLWxlZnRcIiBzdHlsZT17e21hcmdpbkxlZnQ6ICc0cHgnLCBtYXJnaW5Ub3A6IFwiNHB4XCIsIGNvbG9yOiAnIzAwMDAwMCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxSZW1haW5pbmdUaW1lKHBvbGwuZXhwaXJhdGlvbkRhdGVUaW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGwuc2VsZWN0ZWRPcHRpb24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBvbGwtY3JlYXRpb24tZGF0ZVwiIHN0eWxlPXt7bWFyZ2luVG9wOiBcIjRweFwifX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2NvbG9yOiAnIzk0NWMzMyd9fT5Zb3UgaGF2ZSB2b3RlZCB7cHJvcHMucG9sbC5vcHRpb25zLmZpbmQoKG8pID0+IG8uaWQgPT09IHBvbGwuc2VsZWN0ZWRPcHRpb24pPy50ZXh0fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5pc0NoYWlyUGVyc29uICYmIHRpZU9wdGlvbnMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicG9sbC1jaG9pY2VzXCIgc3R5bGU9e3ttYXJnaW5Ub3A6ICc4cHgnfX0+PHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7Y29sb3I6ICcjOTQ1YzMzJywgYm9yZGVyVG9wOiAnMXB4IHNvbGlkICNlMWUxZTEnLCBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJywgcGFkZGluZ1RvcDogJzhweCcsIHdpZHRoOiAnMTAwJSd9fT5UaWUgYnJlYWtlcjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbCBzdHlsZT17e3dpZHRoOiAnMTAwJSd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmFkaW9Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwb2xsLWNob2ljZS1yYWRpby1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aWVCcmVha2VyVm90ZSA/IHRpZUJyZWFrZXJWb3RlIDogcG9sbC50aWVCcmVha2VyT3B0aW9uID8gcG9sbC50aWVCcmVha2VyT3B0aW9uIDogJyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGllQnJlYWtlclZvdGUoZS50YXJnZXQudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3BvbGxPcHRpb25zfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ2b3RlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1ZvdGVkID0gcG9sbC50aWVCcmVha2VyT3B0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGwudGllQnJlYWtlck9wdGlvbiA9IHRpZUJyZWFrZXJWb3RlID8gdGllQnJlYWtlclZvdGUgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5zdWJtaXRQb2xsVm90ZUhhbmRsZXIocG9sbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNWb3RlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRNYW5hZ2VyLmVtaXRFdmVudChWQ0V2ZW50VHlwZS5TWVNURU1fRVZFTlQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbUV2ZW50VHlwZTogJ1RJRV9CUkVBS0VSX1BPTExfVk9URScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGllbnRzOiBwcm9wcy5wb2xsUGFydGljaXBhbnRJRHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7cG9sbElkOiBwb2xsLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1Ym1pdCB0aWUgYnJlYWtlciBWb3RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBvbGwtZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7bWFyZ2luTGVmdDogJzRweCcsIG1hcmdpblRvcDogXCI0cHhcIn19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRpbWUtbGVmdFwiPntgJHt0b3RhbFZvdGVzfSB2b3RlZCBvdXQgb2YgJHtwcm9wcy5udW1iZXJPZlBvbGxQYXJ0aWNpcGFudHN9YH08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGltZS1sZWZ0XCIgc3R5bGU9e3ttYXJnaW5MZWZ0OiAnNHB4JywgbWFyZ2luVG9wOiBcIjRweFwifX0+VGhlIHBvbGwgaXMgY2xvc2VkXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIClcbn07XG5cblxuZXhwb3J0IGRlZmF1bHQgUG9sbENvbnRhaW5lcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxNQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxZQUFBLEdBQUFELHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFGLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBTSxPQUFBLEdBQUFILHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBTyxlQUFBLEdBQUFKLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBUSxjQUFBLEdBQUFMLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBUyxZQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxXQUFBLEdBQUFQLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBVyxpQkFBQSxHQUFBUixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQVksTUFBQSxHQUFBVCxzQkFBQSxDQUFBSCxPQUFBO0FBQXdDLFNBQUFHLHVCQUFBVSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBQUEsU0FBQWQsd0JBQUFjLENBQUEsRUFBQUcsQ0FB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
|
|
352
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbWF0ZXJpYWwiLCJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX0Zvcm1Db250cm9sIiwiX1JhZGlvR3JvdXAiLCJfQnV0dG9uIiwiX1ZDRXZlbnRNYW5hZ2VyIiwiX1NvY2tldE1hbmFnZXIiLCJfVkNFdmVudFR5cGUiLCJfUG9sbFJlc3VsdCIsIl9Gb3JtQ29udHJvbExhYmVsIiwiX1JhZGlvIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl90b1Byb3BlcnR5S2V5IiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwiUG9sbENvbnRhaW5lciIsInByb3BzIiwiX3Byb3BzJGN1cnJlbnRVc2VyIiwiX3BvbGwkdGllQnJlYWtlclBhcnRpIiwiX3Byb3BzJGN1cnJlbnRVc2VyMiIsIl9wb2xsJHRpZUJyZWFrZXJQYXJ0aTIiLCJfcG9sbCR0aWVCcmVha2VyUGFydGkzIiwiX2ZpbmQiLCJfcHJvcHMkcG9sbCRvcHRpb25zJGYiLCJfZmluZDIiLCJwb2xsT3B0aW9ucyIsInNldFBvbGxPcHRpb25zIiwidXNlU3RhdGUiLCJwb2xsIiwic2V0UG9sbCIsInBvbGxDbG9zZWQiLCJzZXRQb2xsQ2xvc2VkIiwiY3VycmVudFZvdGUiLCJzZXRDdXJyZW50Vm90ZSIsInRpZUJyZWFrZXJWb3RlIiwic2V0VGllQnJlYWtlclZvdGUiLCJzdWJtaXR0ZWRUaWVCcmVhayIsInNldFN1Ym1pdHRlZFRpZUJyZWFrIiwic29ja2V0RXZlbnRIYW5kbGVyIiwic29ja2V0RXZlbnRIYW5kbGVyQXBpIiwiaWQiLCJjb25jYXQiLCJvbiIsImV2ZW50VHlwZSIsImJlIiwiVkNFdmVudFR5cGUiLCJTWVNURU1fRVZFTlQiLCJvblN5c3RlbUV2ZW50IiwicGF5bG9hZCIsInN5c3RlbUV2ZW50VHlwZSIsImRhdGEiLCJwb2xsSWQiLCJyZWZyZXNoUG9sbEhhbmRsZXIiLCJwb2xsUmVtYWluaW5nVGltZSIsImV4cGlyYXRpb25EYXRlVGltZSIsImV4cGlyYXRpb25UaW1lIiwiRGF0ZSIsImdldFRpbWUiLCJjdXJyZW50VGltZSIsImRpZmZlcmVuY2VfbXMiLCJzZWNvbmRzIiwiTWF0aCIsImZsb29yIiwibWludXRlcyIsImhvdXJzIiwiZGF5cyIsInRpbWVSZW1haW5pbmciLCJjYWxjdWxhdGVQZXJjZW50YWdlIiwicmVuZGVyZWRQb2xsIiwib3B0aW9uIiwidG90YWxWb3RlcyIsInZvdGVDb3VudCIsIndpbm5pbmdPcHRpb25zIiwib3B0aW9ucyIsInJlZHVjZSIsInByZXZPcHRpb24iLCJjdXJyZW50T3B0aW9uIiwiSW5maW5pdHkiLCJ0aWVGb3JGaXJzdCIsInVuZGVmaW5lZCIsIkFycmF5IiwiaXNBcnJheSIsImNvdW50cyIsIm1hcCIsIl9vJHZvdGVDb3VudCIsIm1heCIsImxlYWRlcnMiLCJfbyR2b3RlQ291bnQyIiwidXNlRWZmZWN0IiwidmNFdmVudE1hbmFnZXIiLCJhZGRTdWJzY3JpcHRpb25zIiwiQ0hBVF9NRVNTQUdFIiwicmVtb3ZlU3Vic2NyaXB0aW9ucyIsImFwaSIsInBvbGxPcHRpb25Sb3dzIiwiY2xvc2VkIiwiaXNFeHBpcmVkIiwib3BlbiIsIndpbm5pbmdPcHQiLCJjcmVhdGVFbGVtZW50Iiwia2V5IiwiaXNXaW5uZXIiLCJpc1NlbGVjdGVkIiwic2VsZWN0ZWRPcHRpb24iLCJwZXJjZW50Vm90ZSIsImNsYXNzTmFtZSIsImNvbnRyb2wiLCJsYWJlbCIsInRleHQiLCJlbGlnaWJsZVZvdGVycyIsImFsbG93ZWRQYXJ0aWNpcGFudHMiLCJpc0VsaWdpYmxlVm90ZXIiLCJpbmNsdWRlcyIsImN1cnJlbnRVc2VyIiwidXNlcm5hbWUiLCJlbGlnaWJsZUNvdW50IiwibnVtYmVyT2ZQb2xsUGFydGljaXBhbnRzIiwidGllQnJlYWtlckNhc3QiLCJ0aWVCcmVha2VyUmVzb2x2ZWQiLCJhbGxWb3RlcyIsIm5vcm1hbFZvdGVzQ291bnQiLCJhbGxFbGlnaWJsZVZvdGVkIiwiaXNUaWVCcmVha2VyUGFydGljaXBhbnQiLCJ0aWVCcmVha2VyUGFydGljaXBhbnQiLCJ0aWVCcmVha2VyTmFtZSIsIm5hbWUiLCJteVRpZUJyZWFrT3B0aW9uIiwidGllQnJlYWtlclNlbGVjdGVkT3B0aW9uIiwidGllQnJlYWtlck9wdGlvblRleHQiLCJmaW5kIiwibm9ybWFsT3B0aW9uc0ZvclRpZSIsInRpZU9wdGlvbnMiLCJBdmF0YXIiLCJzdHlsZSIsImJhY2tncm91bmRDb2xvciIsIlV0aWxzIiwiZ2V0QXZhdGFyQ29sb3IiLCJwb2xsQ3JlYXRvciIsImdldEluaXRpYWxzIiwiZm9ybWF0RGF0ZVRpbWUiLCJjcmVhdGVkRGF0ZSIsInF1ZXN0aW9uIiwid2lkdGgiLCJvbkNoYW5nZSIsInRhcmdldCIsImNvbG9yIiwiZGlzcGxheSIsInBhZGRpbmdUb3AiLCJTdGFjayIsImRpcmVjdGlvbiIsInhzIiwic20iLCJzcGFjaW5nIiwiYWxpZ25JdGVtcyIsInZhcmlhbnQiLCJvbkNsaWNrIiwiaGFzVm90ZWQiLCJzdWJtaXRQb2xsVm90ZUhhbmRsZXIiLCJzb2NrZXRNYW5hZ2VyIiwiZW1pdEV2ZW50IiwicmVjaXBpZW50cyIsInBvbGxQYXJ0aWNpcGFudElEcyIsImNhdGNoIiwiY2xvc2VQb2xsSGFuZGxlciIsIm1hcmdpblRvcCIsIm1hcmdpbkxlZnQiLCJGcmFnbWVudCIsImJvcmRlclRvcCIsInRpZUJyZWFrZXJPcHRpb24iLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbWVkaWEvY2hhdC9Qb2xsQ29udGFpbmVyLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgJy4vQ2hhdFJvb21zLnNjc3MnO1xuaW1wb3J0IHtBdmF0YXIsIFN0YWNrfSBmcm9tICdAbXVpL21hdGVyaWFsJztcbmltcG9ydCBVdGlscyBmcm9tICcuLi8uLi8uLi9VdGlscyc7XG5pbXBvcnQgRm9ybUNvbnRyb2wgZnJvbSAnQG11aS9tYXRlcmlhbC9Gb3JtQ29udHJvbCc7XG5pbXBvcnQgUmFkaW9Hcm91cCBmcm9tICdAbXVpL21hdGVyaWFsL1JhZGlvR3JvdXAnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICdAbXVpL21hdGVyaWFsL0J1dHRvbic7XG5pbXBvcnQgdmNFdmVudE1hbmFnZXIgZnJvbSBcIi4uL1ZDRXZlbnRNYW5hZ2VyXCI7XG5pbXBvcnQgc29ja2V0TWFuYWdlciBmcm9tIFwiLi4vLi4vU29ja2V0TWFuYWdlclwiO1xuaW1wb3J0IHtWQ0V2ZW50VHlwZX0gZnJvbSBcIi4uL1ZDRXZlbnRUeXBlXCI7XG5pbXBvcnQgUG9sbFJlc3VsdCBmcm9tICcuL1BvbGxSZXN1bHQnO1xuaW1wb3J0IEZvcm1Db250cm9sTGFiZWwgZnJvbSAnQG11aS9tYXRlcmlhbC9Gb3JtQ29udHJvbExhYmVsJztcbmltcG9ydCBSYWRpbyBmcm9tICdAbXVpL21hdGVyaWFsL1JhZGlvJztcblxuY29uc3QgUG9sbENvbnRhaW5lciA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IFtwb2xsT3B0aW9ucywgc2V0UG9sbE9wdGlvbnNdID0gdXNlU3RhdGUoW10pO1xuICAgIGNvbnN0IFtwb2xsLCBzZXRQb2xsXSA9IHVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbcG9sbENsb3NlZCwgc2V0UG9sbENsb3NlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2N1cnJlbnRWb3RlLCBzZXRDdXJyZW50Vm90ZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbdGllQnJlYWtlclZvdGUsIHNldFRpZUJyZWFrZXJWb3RlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIC8vIFRoZSB0aWUtYnJlYWsgb3B0aW9uIHRoaXMgY2xpZW50IGp1c3Qgc3VibWl0dGVkIOKAlCBrZWVwcyB0aGUgdGllLWJyZWFrIFVJIHN0YWJsZVxuICAgIC8vIChhbmQgdGhlIFwieW91IGhhdmUgdm90ZWRcIiBtZXNzYWdlIHZpc2libGUpIGltbWVkaWF0ZWx5LCBiZWZvcmUvaW5kZXBlbmRlbnQgb2YgdGhlXG4gICAgLy8gYmFja2VuZCByb3VuZC10cmlwLiBTeW5jZWQgZnJvbSBwb2xsLnRpZUJyZWFrZXJTZWxlY3RlZE9wdGlvbiBvbiByZWxvYWQuXG4gICAgY29uc3QgW3N1Ym1pdHRlZFRpZUJyZWFrLCBzZXRTdWJtaXR0ZWRUaWVCcmVha10gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbc29ja2V0RXZlbnRIYW5kbGVyXSA9IHVzZVN0YXRlKHt9KTtcblxuICAgIGNvbnN0IHNvY2tldEV2ZW50SGFuZGxlckFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYHBvbGwtY29udGFpbmVyLSR7cHJvcHMucG9sbC5pZH1gO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uOiAoZXZlbnRUeXBlLCBiZSkgPT4ge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuU1lTVEVNX0VWRU5UOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25TeXN0ZW1FdmVudChiZS5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvblN5c3RlbUV2ZW50ID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKChwYXlsb2FkLnN5c3RlbUV2ZW50VHlwZSA9PT0gXCJORVdfUE9MTF9WT1RFXCIgfHwgcGF5bG9hZC5zeXN0ZW1FdmVudFR5cGUgPT09IFwiVElFX0JSRUFLRVJfUE9MTF9WT1RFXCIpXG4gICAgICAgICAgICAmJiBwYXlsb2FkLmRhdGEucG9sbElkID09PSBwb2xsLmlkKSB7XG4gICAgICAgICAgICAvLyBSZWZyZXNoIHRoZSBwb2xsIHNvIHZvdGUgY291bnRzIChhbmQgdGhlcmVmb3JlIHRpZSBkZXRlY3Rpb24pIHJlY29tcHV0ZSBmcm9tXG4gICAgICAgICAgICAvLyB0aGUgc2VydmVyIOKAlCBvdGhlcndpc2UgdGhlIHRpZS1icmVha2VyIFVJIG5ldmVyIGFwcGVhcnMgdW5sZXNzIHRoZSB0aWUtYnJlYWtlclxuICAgICAgICAgICAgLy8gaGFwcGVucyB0byBiZSB0aGUgbGFzdCB0byB2b3RlLiBDb3VudHMgYXJlIGRlcml2ZWQgZnJvbSB0aGUgcmVmcmVzaGVkIHBvbGwuXG4gICAgICAgICAgICBpZiAocHJvcHMucmVmcmVzaFBvbGxIYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgcHJvcHMucmVmcmVzaFBvbGxIYW5kbGVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgcG9sbFJlbWFpbmluZ1RpbWUgPSAoZXhwaXJhdGlvbkRhdGVUaW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IGV4cGlyYXRpb25UaW1lID0gbmV3IERhdGUoZXhwaXJhdGlvbkRhdGVUaW1lKS5nZXRUaW1lKCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cbiAgICAgICAgY29uc3QgZGlmZmVyZW5jZV9tcyA9IGV4cGlyYXRpb25UaW1lIC0gY3VycmVudFRpbWU7XG4gICAgICAgIGNvbnN0IHNlY29uZHMgPSBNYXRoLmZsb29yKChkaWZmZXJlbmNlX21zIC8gMTAwMCkgJSA2MCk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKChkaWZmZXJlbmNlX21zIC8gMTAwMCAvIDYwKSAlIDYwKTtcbiAgICAgICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKChkaWZmZXJlbmNlX21zIC8gKDEwMDAgKiA2MCAqIDYwKSkgJSAyNCk7XG4gICAgICAgIGNvbnN0IGRheXMgPSBNYXRoLmZsb29yKGRpZmZlcmVuY2VfbXMgLyAoMTAwMCAqIDYwICogNjAgKiAyNCkpO1xuXG4gICAgICAgIGxldCB0aW1lUmVtYWluaW5nO1xuXG4gICAgICAgIGlmIChkYXlzID4gMCkge1xuICAgICAgICAgICAgdGltZVJlbWFpbmluZyA9IGRheXMgKyBcIiBkYXlzIGxlZnRcIjtcbiAgICAgICAgfSBlbHNlIGlmIChob3VycyA+IDApIHtcbiAgICAgICAgICAgIHRpbWVSZW1haW5pbmcgPSBob3VycyArIFwiIGhvdXJzIGxlZnRcIjtcbiAgICAgICAgfSBlbHNlIGlmIChtaW51dGVzID4gMCkge1xuICAgICAgICAgICAgdGltZVJlbWFpbmluZyA9IG1pbnV0ZXMgKyBcIiBtaW51dGVzIGxlZnRcIjtcbiAgICAgICAgfSBlbHNlIGlmIChzZWNvbmRzID4gMCkge1xuICAgICAgICAgICAgdGltZVJlbWFpbmluZyA9IHNlY29uZHMgKyBcIiBzZWNvbmRzIGxlZnRcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRpbWVSZW1haW5pbmcgPSBcImxlc3MgdGhhbiBhIHNlY29uZCBsZWZ0XCI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGltZVJlbWFpbmluZztcbiAgICB9O1xuXG4gICAgY29uc3QgY2FsY3VsYXRlUGVyY2VudGFnZSA9IChyZW5kZXJlZFBvbGwsIG9wdGlvbikgPT4ge1xuICAgICAgICBpZiAocmVuZGVyZWRQb2xsLnRvdGFsVm90ZXMgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAob3B0aW9uLnZvdGVDb3VudCAqIDEwMCkgLyAocmVuZGVyZWRQb2xsLnRvdGFsVm90ZXMpO1xuICAgIH07XG5cbiAgICBjb25zdCB3aW5uaW5nT3B0aW9ucyA9IChvcHRpb25zKSA9PiB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLnJlZHVjZSgocHJldk9wdGlvbiwgY3VycmVudE9wdGlvbikgPT5cbiAgICAgICAgICAgICAgICBjdXJyZW50T3B0aW9uLnZvdGVDb3VudCA+IHByZXZPcHRpb24udm90ZUNvdW50ID8gY3VycmVudE9wdGlvbiA6IHByZXZPcHRpb24sXG4gICAgICAgICAgICB7dm90ZUNvdW50OiAtSW5maW5pdHl9XG4gICAgICAgICk7XG4gICAgfTtcblxuICAgIGNvbnN0IHRpZUZvckZpcnN0ID0gKG9wdGlvbnMgPSBbXSkgPT4ge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykgfHwgb3B0aW9ucy5sZW5ndGggPT09IDApIHJldHVybiBbXTtcblxuICAgICAgICBjb25zdCBjb3VudHMgPSBvcHRpb25zLm1hcChvID0+IChvPy52b3RlQ291bnQgPz8gMCkpO1xuICAgICAgICBjb25zdCBtYXggPSBNYXRoLm1heCguLi5jb3VudHMpO1xuXG4gICAgICAgIC8vIElmIG5vYm9keSB2b3RlZCwgaXQgY2Fubm90IGJlIGEgdGllXG4gICAgICAgIGlmIChtYXggPT09IDApIHJldHVybiBbXTtcblxuICAgICAgICBjb25zdCBsZWFkZXJzID0gb3B0aW9ucy5maWx0ZXIobyA9PiAobz8udm90ZUNvdW50ID8/IDApID09PSBtYXgpO1xuICAgICAgICByZXR1cm4gbGVhZGVycy5sZW5ndGggPj0gMiA/IGxlYWRlcnMgOiBbXTtcbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmNFdmVudE1hbmFnZXIuYWRkU3Vic2NyaXB0aW9ucyhzb2NrZXRFdmVudEhhbmRsZXIsIFZDRXZlbnRUeXBlLkNIQVRfTUVTU0FHRSwgVkNFdmVudFR5cGUuU1lTVEVNX0VWRU5UKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIHZjRXZlbnRNYW5hZ2VyLnJlbW92ZVN1YnNjcmlwdGlvbnMoc29ja2V0RXZlbnRIYW5kbGVyKTtcbiAgICAgICAgfTtcbiAgICB9LCBbXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzb2NrZXRFdmVudEhhbmRsZXIuYXBpID0gc29ja2V0RXZlbnRIYW5kbGVyQXBpKCk7XG4gICAgfSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAocHJvcHMucG9sbCkge1xuICAgICAgICAgICAgY29uc3QgcmVuZGVyZWRQb2xsID0gcHJvcHMucG9sbDtcblxuICAgICAgICAgICAgc2V0UG9sbChyZW5kZXJlZFBvbGwpO1xuICAgICAgICAgICAgY29uc3QgcG9sbE9wdGlvblJvd3MgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGNsb3NlZCA9IHJlbmRlcmVkUG9sbC5pc0V4cGlyZWQgfHwgIXJlbmRlcmVkUG9sbC5vcGVuO1xuICAgICAgICAgICAgc2V0UG9sbENsb3NlZChjbG9zZWQpO1xuXG4gICAgICAgICAgICBpZiAoY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2lubmluZ09wdCA9IHdpbm5pbmdPcHRpb25zKHJlbmRlcmVkUG9sbC5vcHRpb25zKTtcblxuICAgICAgICAgICAgICAgIHJlbmRlcmVkUG9sbC5vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcG9sbE9wdGlvblJvd3MucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxQb2xsUmVzdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtvcHRpb24uaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNXaW5uZXI9e3dpbm5pbmdPcHQgJiYgb3B0aW9uLmlkID09PSB3aW5uaW5nT3B0LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ9e3JlbmRlcmVkUG9sbC5zZWxlY3RlZE9wdGlvbiA9PT0gb3B0aW9uLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnRWb3RlPXtjYWxjdWxhdGVQZXJjZW50YWdlKHJlbmRlcmVkUG9sbCwgb3B0aW9uKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlbmRlcmVkUG9sbC5vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcG9sbE9wdGlvblJvd3MucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtvcHRpb24uaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicG9sbC1jaG9pY2UtcmFkaW9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24uaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSYWRpby8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtvcHRpb24udGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNldFBvbGxPcHRpb25zKHBvbGxPcHRpb25Sb3dzKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy5wb2xsXSk7XG5cbiAgICAvLyBWb3RpbmcgZWxpZ2liaWxpdHkuIEFuIGVtcHR5L2Fic2VudCBhbGxvd2VkUGFydGljaXBhbnRzIGxpc3QgPSB1bnJlc3RyaWN0ZWQgcG9sbC5cbiAgICBjb25zdCBlbGlnaWJsZVZvdGVycyA9IHBvbGwuYWxsb3dlZFBhcnRpY2lwYW50cyB8fCBbXTtcbiAgICBjb25zdCBpc0VsaWdpYmxlVm90ZXIgPSBlbGlnaWJsZVZvdGVycy5sZW5ndGggPT09IDBcbiAgICAgICAgfHwgZWxpZ2libGVWb3RlcnMuaW5jbHVkZXMocHJvcHMuY3VycmVudFVzZXI/LnVzZXJuYW1lKTtcbiAgICAvLyBEZW5vbWluYXRvciBpcyB0aGUgZWxpZ2libGUtdm90ZXIgY291bnQgKGZhbGxzIGJhY2sgdG8gdGhlIHBhc3NlZC1pbiBwYXJ0aWNpcGFudCBjb3VudCkuXG4gICAgY29uc3QgZWxpZ2libGVDb3VudCA9IGVsaWdpYmxlVm90ZXJzLmxlbmd0aCA+IDAgPyBlbGlnaWJsZVZvdGVycy5sZW5ndGggOiBwcm9wcy5udW1iZXJPZlBvbGxQYXJ0aWNpcGFudHM7XG4gICAgLy8gS2VlcCB0aGUgdGllLWJyZWFrZXIgdm90ZSBvdXQgb2YgdGhlIG5vcm1hbCB0YWxseSDigJQgaXQncyBzdGF0ZWQgc2VwYXJhdGVseS4gVGhlcmUgaXNcbiAgICAvLyBhdCBtb3N0IG9uZSB0aWUtYnJlYWsgdm90ZSAob25seSB0aGUgZGVzaWduYXRlZCB0aWUtYnJlYWtlciBtYXkgY2FzdCBpdCkuXG4gICAgY29uc3QgdGllQnJlYWtlckNhc3QgPSAhIXBvbGwudGllQnJlYWtlclJlc29sdmVkO1xuICAgIGNvbnN0IGFsbFZvdGVzID0gcG9sbC50b3RhbFZvdGVzIHx8IDA7XG4gICAgY29uc3Qgbm9ybWFsVm90ZXNDb3VudCA9IE1hdGgubWF4KDAsIGFsbFZvdGVzIC0gKHRpZUJyZWFrZXJDYXN0ID8gMSA6IDApKTtcbiAgICBjb25zdCBhbGxFbGlnaWJsZVZvdGVkID0gbm9ybWFsVm90ZXNDb3VudCA+PSBlbGlnaWJsZUNvdW50O1xuICAgIC8vIFRoZSB0aWUtYnJlYWtlciBpcyBjYXN0IG9ubHkgYnkgdGhlIGRlc2lnbmF0ZWQgdGllLWJyZWFrZXIgcGFydGljaXBhbnQuXG4gICAgY29uc3QgaXNUaWVCcmVha2VyUGFydGljaXBhbnQgPSAhIXBvbGwudGllQnJlYWtlclBhcnRpY2lwYW50Py51c2VybmFtZVxuICAgICAgICAmJiBwb2xsLnRpZUJyZWFrZXJQYXJ0aWNpcGFudC51c2VybmFtZSA9PT0gcHJvcHMuY3VycmVudFVzZXI/LnVzZXJuYW1lO1xuICAgIGNvbnN0IHRpZUJyZWFrZXJOYW1lID0gcG9sbC50aWVCcmVha2VyUGFydGljaXBhbnQ/Lm5hbWUgfHwgcG9sbC50aWVCcmVha2VyUGFydGljaXBhbnQ/LnVzZXJuYW1lO1xuICAgIC8vIFRoaXMgY2xpZW50J3Mgb3duIHRpZS1icmVhayBvcHRpb24g4oCUIGJhY2tlbmQgdmFsdWUsIG9yIHRoZSBvbmUganVzdCBzdWJtaXR0ZWQgbG9jYWxseS5cbiAgICBjb25zdCBteVRpZUJyZWFrT3B0aW9uID0gcG9sbC50aWVCcmVha2VyU2VsZWN0ZWRPcHRpb24gfHwgc3VibWl0dGVkVGllQnJlYWs7XG4gICAgLy8gVGhlIHRleHQgb2YgdGhlIHRpZS1icmVhayBjaG9pY2UsIGZvciBkaXNwbGF5IChlLmcuIFwiUmVzb2x2ZWQgYnkgdGllIGJyZWFrZXIgKHgpIOKAlCBBZG9wdFwiKS5cbiAgICBjb25zdCB0aWVCcmVha2VyT3B0aW9uVGV4dCA9IChwb2xsLm9wdGlvbnMgfHwgW10pLmZpbmQoKG8pID0+IG8uaWQgPT09IHBvbGwudGllQnJlYWtlclNlbGVjdGVkT3B0aW9uKT8udGV4dDtcbiAgICAvLyBEZXRlY3QgdGhlIHRpZSBvbiBOT1JNQUwgdm90ZXMgb25seSDigJQgc3VidHJhY3QgdGhpcyBjbGllbnQncyBvd24gdGllLWJyZWFrIHZvdGUgc29cbiAgICAvLyBjYXN0aW5nL2NoYW5naW5nIGl0IG5ldmVyIG1ha2VzIHRoZSB0aWUtYnJlYWsgVUkgZGlzYXBwZWFyIChpdCBzdGF5cyBvcGVuIGZvciBjaGFuZ2VzKS5cbiAgICBjb25zdCBub3JtYWxPcHRpb25zRm9yVGllID0gKHBvbGwub3B0aW9ucyB8fCBbXSkubWFwKG8gPT4gKHtcbiAgICAgICAgLi4ubyxcbiAgICAgICAgdm90ZUNvdW50OiAoby52b3RlQ291bnQgfHwgMCkgLSAobXlUaWVCcmVha09wdGlvbiAmJiBvLmlkID09PSBteVRpZUJyZWFrT3B0aW9uID8gMSA6IDApXG4gICAgfSkpO1xuICAgIGNvbnN0IHRpZU9wdGlvbnMgPSB0aWVGb3JGaXJzdChub3JtYWxPcHRpb25zRm9yVGllKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicG9sbC1jb250ZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBvbGwtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwb2xsLWNyZWF0b3ItaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEF2YXRhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBvbGwtY3JlYXRvci1hdmF0YXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7YmFja2dyb3VuZENvbG9yOiBVdGlscy5nZXRBdmF0YXJDb2xvcihwcm9wcy5wb2xsQ3JlYXRvci5uYW1lKX19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtVdGlscy5nZXRJbml0aWFscyhwcm9wcy5wb2xsQ3JlYXRvci5uYW1lKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicG9sbC1jcmVhdG9yLW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3Byb3BzLnBvbGxDcmVhdG9yLm5hbWV9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicG9sbC1jcmVhdGlvbi1kYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIHtVdGlscy5mb3JtYXREYXRlVGltZShwcm9wcy5jcmVhdGVkRGF0ZSl9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBvbGwtcXVlc3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAge3BvbGwucXVlc3Rpb259XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwb2xsLWNyZWF0aW9uLWRhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgUmVzdWx0cyBhcmUgdmlzaWJsZSBhZnRlciB0aGUgcG9sbCBoYXMgY2xvc2VkIC8gZXhwaXJlZC5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIChwb2xsQ2xvc2VkIHx8IGlzRWxpZ2libGVWb3RlcikgP1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBvbGwtY2hvaWNlc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1Db250cm9sIHN0eWxlPXt7d2lkdGg6ICcxMDAlJ319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSYWRpb0dyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBvbGwtY2hvaWNlLXJhZGlvLWdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2N1cnJlbnRWb3RlID8gY3VycmVudFZvdGUgOiBwb2xsLnNlbGVjdGVkT3B0aW9uID8gcG9sbC5zZWxlY3RlZE9wdGlvbiA6ICcnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnJlbnRWb3RlKGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwb2xsT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0Zvcm1Db250cm9sPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBvbGwtY2hvaWNlc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3tjb2xvcjogJyM5NDVjMzMnLCBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJywgcGFkZGluZ1RvcDogJzhweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgYXJlIG5vdCBhIHZvdGluZyBwYXJ0aWNpcGFudCBmb3IgdGhpcyBwb2xsLlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAhcG9sbENsb3NlZCA/XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicG9sbC1mb290ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFjayBkaXJlY3Rpb249e3t4czogJ2NvbHVtbicsIHNtOiAncm93J319IHNwYWNpbmc9ezF9IGFsaWduSXRlbXM9XCJmbGV4LXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2lzRWxpZ2libGVWb3RlciAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInZvdGUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzVm90ZWQgPSBwb2xsLnNlbGVjdGVkT3B0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGwuc2VsZWN0ZWRPcHRpb24gPSBjdXJyZW50Vm90ZSA/IGN1cnJlbnRWb3RlIDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuc3VibWl0UG9sbFZvdGVIYW5kbGVyKHBvbGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaGFzVm90ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0TWFuYWdlci5lbWl0RXZlbnQoVkNFdmVudFR5cGUuU1lTVEVNX0VWRU5ULCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1FdmVudFR5cGU6ICdORVdfUE9MTF9WT1RFJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwaWVudHM6IHByb3BzLnBvbGxQYXJ0aWNpcGFudElEcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtwb2xsSWQ6IHBvbGwuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VibWl0IFZvdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY3VycmVudFVzZXIudXNlcm5hbWUgPT09IHByb3BzLnBvbGxDcmVhdG9yLnVzZXJuYW1lICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidm90ZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBwcm9wcy5jbG9zZVBvbGxIYW5kbGVyKGUsIHBvbGwpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9zZSBQb2xsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7bWFyZ2luVG9wOiBcIjRweFwiLCBtYXJnaW5MZWZ0OiAnOHB4JywgY29sb3I6ICcjMDAwMDAwJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRpbWUtbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtgJHtub3JtYWxWb3Rlc0NvdW50fSB2b3RlcyBvdXQgb2YgJHtlbGlnaWJsZUNvdW50fWB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHshaXNUaWVCcmVha2VyUGFydGljaXBhbnQgJiYgdGllQnJlYWtlckNhc3QgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7bWFyZ2luVG9wOiBcIjRweFwiLCBtYXJnaW5MZWZ0OiAnOHB4JywgY29sb3I6ICcjOTQ1YzMzJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0aW1lLWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ArMSB0aWUtYnJlYWtlciB2b3RlJHt0aWVCcmVha2VyTmFtZSA/IGAgKCR7dGllQnJlYWtlck5hbWV9KWAgOiAnJ31gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aW1lLWxlZnRcIiBzdHlsZT17e21hcmdpbkxlZnQ6ICc0cHgnLCBtYXJnaW5Ub3A6IFwiNHB4XCIsIGNvbG9yOiAnIzAwMDAwMCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxSZW1haW5pbmdUaW1lKHBvbGwuZXhwaXJhdGlvbkRhdGVUaW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGwuc2VsZWN0ZWRPcHRpb24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBvbGwtY3JlYXRpb24tZGF0ZVwiIHN0eWxlPXt7bWFyZ2luVG9wOiBcIjRweFwifX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2NvbG9yOiAnIzk0NWMzMyd9fT5Zb3UgaGF2ZSB2b3RlZCB7cHJvcHMucG9sbC5vcHRpb25zLmZpbmQoKG8pID0+IG8uaWQgPT09IHBvbGwuc2VsZWN0ZWRPcHRpb24pPy50ZXh0fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1RpZUJyZWFrZXJQYXJ0aWNpcGFudCAmJiAodGllT3B0aW9ucy5sZW5ndGggPiAwIHx8IHRpZUJyZWFrZXJDYXN0KSAmJiBhbGxFbGlnaWJsZVZvdGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwb2xsLWNob2ljZXNcIiBzdHlsZT17e21hcmdpblRvcDogJzhweCd9fT48c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tjb2xvcjogJyM5NDVjMzMnLCBib3JkZXJUb3A6ICcxcHggc29saWQgI2UxZTFlMScsIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLCBwYWRkaW5nVG9wOiAnOHB4Jywgd2lkdGg6ICcxMDAlJ319PlRpZSBicmVha2VyPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1Db250cm9sIHN0eWxlPXt7d2lkdGg6ICcxMDAlJ319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSYWRpb0dyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBvbGwtY2hvaWNlLXJhZGlvLWdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RpZUJyZWFrZXJWb3RlID8gdGllQnJlYWtlclZvdGUgOiBteVRpZUJyZWFrT3B0aW9uID8gbXlUaWVCcmVha09wdGlvbiA6ICcnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpZUJyZWFrZXJWb3RlKGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwb2xsT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Zvcm1Db250cm9sPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidm90ZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNWb3RlZCA9IHBvbGwudGllQnJlYWtlck9wdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xsLnRpZUJyZWFrZXJPcHRpb24gPSB0aWVCcmVha2VyVm90ZSA/IHRpZUJyZWFrZXJWb3RlIDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3VibWl0dGVkVGllQnJlYWsodGllQnJlYWtlclZvdGUgPyB0aWVCcmVha2VyVm90ZSA6IG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnN1Ym1pdFBvbGxWb3RlSGFuZGxlcihwb2xsLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc1ZvdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldE1hbmFnZXIuZW1pdEV2ZW50KFZDRXZlbnRUeXBlLlNZU1RFTV9FVkVOVCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtRXZlbnRUeXBlOiAnVElFX0JSRUFLRVJfUE9MTF9WT1RFJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwaWVudHM6IHByb3BzLnBvbGxQYXJ0aWNpcGFudElEcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtwb2xsSWQ6IHBvbGwuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VibWl0IHRpZSBicmVha2VyIFZvdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtteVRpZUJyZWFrT3B0aW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBvbGwtY3JlYXRpb24tZGF0ZVwiIHN0eWxlPXt7bWFyZ2luVG9wOiBcIjRweFwifX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3tjb2xvcjogJyM5NDVjMzMnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBoYXZlIHZvdGVkIHRvIHsocG9sbC5vcHRpb25zIHx8IFtdKS5maW5kKChvKSA9PiBvLmlkID09PSBteVRpZUJyZWFrT3B0aW9uKT8udGV4dH0gKHRpZSBicmVha2VyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicG9sbC1mb290ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3ttYXJnaW5MZWZ0OiAnNHB4JywgbWFyZ2luVG9wOiBcIjRweFwifX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGltZS1sZWZ0XCI+e2Ake25vcm1hbFZvdGVzQ291bnR9IHZvdGVkIG91dCBvZiAke2VsaWdpYmxlQ291bnR9YH08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGltZS1sZWZ0XCIgc3R5bGU9e3ttYXJnaW5MZWZ0OiAnNHB4JywgbWFyZ2luVG9wOiBcIjRweFwifX0+VGhlIHBvbGwgaXMgY2xvc2VkXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0aWVCcmVha2VyQ2FzdCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGltZS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7bWFyZ2luTGVmdDogJzRweCcsIG1hcmdpblRvcDogXCI0cHhcIiwgY29sb3I6ICcjOTQ1YzMzJ319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YFJlc29sdmVkIGJ5IHRpZSBicmVha2VyJHt0aWVCcmVha2VyTmFtZSA/IGAgKCR7dGllQnJlYWtlck5hbWV9KWAgOiAnJ30ke3RpZUJyZWFrZXJPcHRpb25UZXh0ID8gYCDigJQgJHt0aWVCcmVha2VyT3B0aW9uVGV4dH1gIDogJyd9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIClcbn07XG5cblxuZXhwb3J0IGRlZmF1bHQgUG9sbENvbnRhaW5lcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxNQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxZQUFBLEdBQUFELHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFGLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBTSxPQUFBLEdBQUFILHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBTyxlQUFBLEdBQUFKLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBUSxjQUFBLEdBQUFMLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBUyxZQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxXQUFBLEdBQUFQLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBVyxpQkFBQSxHQUFBUixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQVksTUFBQSxHQUFBVCxzQkFBQSxDQUFBSCxPQUFBO0FBQXdDLFNBQUFHLHVCQUFBVSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBQUEsU0FBQWQs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
|
|
@@ -20,9 +20,11 @@ class ProcurementMeetings {
|
|
|
20
20
|
console.log("emitSocketEvent : ", systemEventType, data, meeting);
|
|
21
21
|
if (meeting && meeting.attendees) {
|
|
22
22
|
for (const attendee of meeting.attendees) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
if (attendee) {
|
|
24
|
+
let username = attendee.username;
|
|
25
|
+
if (username !== _ApplicationManager.default.getUserDetails().username) {
|
|
26
|
+
recipientIds.push(username);
|
|
27
|
+
}
|
|
26
28
|
}
|
|
27
29
|
}
|
|
28
30
|
let eventData = {
|
|
@@ -104,6 +106,11 @@ class ProcurementMeetings {
|
|
|
104
106
|
api.model.meetingAdjournment = data;
|
|
105
107
|
this.refreshComponent("mainLayout");
|
|
106
108
|
this.refreshComponent("adjournmentLayout");
|
|
109
|
+
} else if (event.systemEventType === 'meetingResumed') {
|
|
110
|
+
let api = _ApplicationManager.default.resolveComponentApi(viewId);
|
|
111
|
+
api.model.meetingAdjournment = null;
|
|
112
|
+
this.refreshComponent("mainLayout");
|
|
113
|
+
this.refreshComponent("adjournmentLayout");
|
|
107
114
|
}
|
|
108
115
|
});
|
|
109
116
|
_defineProperty(this, "showComponent", id => {
|
|
@@ -125,4 +132,4 @@ class ProcurementMeetings {
|
|
|
125
132
|
exports.ProcurementMeetings = ProcurementMeetings;
|
|
126
133
|
const instance = new ProcurementMeetings();
|
|
127
134
|
var _default = exports.default = instance;
|
|
128
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfTWVkaWEiLCJyZXF1aXJlIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfVkNFdmVudFR5cGUiLCJfU29ja2V0TWFuYWdlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9kZWZpbmVQcm9wZXJ0eSIsInIiLCJ0IiwiX3RvUHJvcGVydHlLZXkiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIlByb2N1cmVtZW50TWVldGluZ3MiLCJjb25zdHJ1Y3RvciIsInJlc29sdmVyIiwidmlld0lkIiwic3lzdGVtRXZlbnRUeXBlIiwiZGF0YSIsIm1lZXRpbmciLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInJlY2lwaWVudElkcyIsImNvbnNvbGUiLCJsb2ciLCJhdHRlbmRlZXMiLCJhdHRlbmRlZSIsInVzZXJuYW1lIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiZ2V0VXNlckRldGFpbHMiLCJwdXNoIiwiZXZlbnREYXRhIiwicmVjaXBpZW50cyIsInNvY2tldE1hbmFnZXIiLCJlbWl0RXZlbnQiLCJWQ0V2ZW50VHlwZSIsIlNZU1RFTV9FVkVOVCIsInRoZW4iLCJyZXN1bHQiLCJjYXRjaCIsImFsZXJ0IiwiZW1pdFNvY2tldEV2ZW50IiwicHJvY3VyZW1lbnROdW1iZXIiLCJhcGkiLCJyZXNvbHZlQ29tcG9uZW50QXBpIiwidmlzaWJsZSIsImVuZFNlc3Npb24iLCJpZCIsImV2ZW50IiwibW9kZWwiLCJzdGFydGVkIiwicmVmcmVzaCIsImZpcmVFdmVudCIsInNvdXJjZSIsImxvYWRDaGF0cyIsImN1cnJlbnRTdGVwIiwic3RlcCIsIm1lZXRpbmdTdGVwIiwicmVmcmVzaENvbXBvbmVudCIsImRvY3VtZW50VHlwZSIsIm1pbnV0ZXNEcmFmdERvY3VtZW50SWQiLCJkb2N1bWVudElkIiwiYWdlbmRhRG9jdW1lbnRJZCIsImlzQ2hhaXJQZXJzb24iLCJjaGFpclBlcnNvbklkIiwiY29tcG9uZW50IiwicmVkcmF3IiwibWVldGluZ0Fkam91cm5tZW50IiwiZXhwb3J0cyIsImluc3RhbmNlIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2pzL1Byb2N1cmVtZW50TWVldGluZ3MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNZWRpYX0gZnJvbSBcIi4vTWVkaWFcIjtcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSBcIi4uL0FwcGxpY2F0aW9uTWFuYWdlclwiO1xuaW1wb3J0IHtWQ0V2ZW50VHlwZX0gZnJvbSBcIi4uL2NvbXBvbmVudHMvbWVkaWEvVkNFdmVudFR5cGVcIjtcbmltcG9ydCBzb2NrZXRNYW5hZ2VyIGZyb20gXCIuLi9jb21wb25lbnRzL1NvY2tldE1hbmFnZXJcIjtcblxuZXhwb3J0IGNsYXNzIFByb2N1cmVtZW50TWVldGluZ3Mge1xuICAgIGNvbnN0cnVjdG9yKHJlc29sdmVyKSB7XG4gICAgICAgIHRoaXMucmVzb2x2ZXIgPSByZXNvbHZlcjtcbiAgICB9XG5cbiAgICBlbWl0U29ja2V0RXZlbnQgPSAodmlld0lkLCBzeXN0ZW1FdmVudFR5cGUsIGRhdGEsIG1lZXRpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGxldCByZWNpcGllbnRJZHMgPSBbXTtcblxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlbWl0U29ja2V0RXZlbnQgOiBcIiwgc3lzdGVtRXZlbnRUeXBlLCBkYXRhLCBtZWV0aW5nKTtcbiAgICAgICAgICAgIGlmKG1lZXRpbmcgJiYgbWVldGluZy5hdHRlbmRlZXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF0dGVuZGVlIG9mIG1lZXRpbmcuYXR0ZW5kZWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB1c2VybmFtZSA9IGF0dGVuZGVlLnVzZXJuYW1lO1xuICAgICAgICAgICAgICAgICAgICBpZiAodXNlcm5hbWUgIT09IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWNpcGllbnRJZHMucHVzaCh1c2VybmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgZXZlbnREYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICBzeXN0ZW1FdmVudFR5cGU6IHN5c3RlbUV2ZW50VHlwZSxcbiAgICAgICAgICAgICAgICAgICAgcmVjaXBpZW50czogcmVjaXBpZW50SWRzLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJFTUlUVElORyBTWVNURU0gRVZFTlQgOiBcIiwgZXZlbnREYXRhKTtcbiAgICAgICAgICAgICAgICBzb2NrZXRNYW5hZ2VyLmVtaXRFdmVudChWQ0V2ZW50VHlwZS5TWVNURU1fRVZFTlQsIGV2ZW50RGF0YSkudGhlbigocmVzdWx0KSA9PiByZXNvbHZlKHJlc3VsdCkpLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5hbGVydCh2aWV3SWQsIFwiWW91IGFyZSBjdXJyZW50bHkgb2ZmbGluZS4gUGxlYXNlIGNoZWNrIHlvdXIgbmV0d29yayBjb25uZWN0aXZpdHlcIiwgXCJFUlJPUlwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHN0YXJ0TWVldGluZyA9ICh2aWV3SWQsIG1lZXRpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1pdFNvY2tldEV2ZW50KHZpZXdJZCxcInN0YXJ0TWVldGluZ1wiLCB7XG4gICAgICAgICAgICBwcm9jdXJlbWVudE51bWJlcjogbWVldGluZy5wcm9jdXJlbWVudE51bWJlclxuICAgICAgICB9LCBtZWV0aW5nKTtcbiAgICB9XG5cbiAgICBlbmRNZWV0aW5nID0gKG1lZXRpbmcpID0+IHtcbiAgICAgICAgbGV0IGFwaSA9IGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlQ29tcG9uZW50QXBpKFwiY29uY2x1c2lvbkxheW91dFwiKTtcbiAgICAgICAgYXBpLnZpc2libGUgPSB0cnVlO1xuXG4gICAgICAgIGFwaSA9IGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlQ29tcG9uZW50QXBpKFwidG9vbGJhclwiKTtcbiAgICAgICAgYXBpLnZpc2libGUgPSBmYWxzZTtcblxuICAgICAgICBhcGkgPSBhcHBsaWNhdGlvbk1hbmFnZXIucmVzb2x2ZUNvbXBvbmVudEFwaShcIm1lZXRpbmdMYXlvdXRcIik7XG4gICAgICAgIGFwaS52aXNpYmxlID0gZmFsc2U7XG5cbiAgICAgICAgc29ja2V0TWFuYWdlci5lbmRTZXNzaW9uKG1lZXRpbmcuaWQpO1xuICAgIH1cblxuICAgIGhhbmRsZVN5c3RlbUV2ZW50ID0gKGV2ZW50LCBtZWV0aW5nLCB2aWV3SWQpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coXCJQUk9DRVNTSU5HIE1FRVRJTkcgU1lTVEVNIEVWRU5UIDogXCIsIGV2ZW50KTtcbiAgICAgICAgbGV0IGRhdGEgPSBldmVudC5kYXRhO1xuICAgICAgICBpZiAoZXZlbnQuc3lzdGVtRXZlbnRUeXBlID09PSAnc3RhcnRNZWV0aW5nJykge1xuICAgICAgICAgICAgaWYgKGRhdGEucHJvY3VyZW1lbnROdW1iZXIgPT09IG1lZXRpbmcucHJvY3VyZW1lbnROdW1iZXIpIHtcbiAgICAgICAgICAgICAgICBsZXQgYXBpID0gYXBwbGljYXRpb25NYW5hZ2VyLnJlc29sdmVDb21wb25lbnRBcGkodmlld0lkKTtcbiAgICAgICAgICAgICAgICBhcGkubW9kZWwuc3RhcnRlZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICBhcGkgPSBhcHBsaWNhdGlvbk1hbmFnZXIucmVzb2x2ZUNvbXBvbmVudEFwaShcIm1haW5MYXlvdXRcIik7XG4gICAgICAgICAgICAgICAgYXBpLnJlZnJlc2goKTtcblxuICAgICAgICAgICAgICAgIGFwaSA9IGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlQ29tcG9uZW50QXBpKFwid2FpdGluZ0xheW91dFwiKTtcbiAgICAgICAgICAgICAgICBhcGkucmVmcmVzaCgpO1xuXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBldmVudCB3aWxsIGxhdW5jaCB0aGUgVkMgdG8gbGF1bmNoLiBUaGVyZSBpcyBhIGxpc3RlbmVyIGluIHRoZSB2aWV3IGNvbmZpZyB0aGF0IGxhdW5jaGVzIHRoZSB2aWV3XG4gICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmFwaS5maXJlRXZlbnQoJ1NFUlZJQ0VfQ0FMTF9TVUNDRVNTJywge1xuICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IHthcGk6IHtpZDogJ3Byb2N1cmVtZW50TWVldGluZ1Nlc3Npb24nfX0sXG4gICAgICAgICAgICAgICAgICAgIHZpZXdJZDogJ3Byb2N1cmVtZW50TWVldGluZ1Nlc3Npb24nXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5zeXN0ZW1FdmVudFR5cGUgPT09ICdvcGVuUG9sbCcpIHtcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlQ29tcG9uZW50QXBpKFwidmNSb29tXCIpLmxvYWRDaGF0cygpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnN5c3RlbUV2ZW50VHlwZSA9PT0gJ21lZXRpbmdTdGVwQ2hhbmdlZCcpIHtcbiAgICAgICAgICAgIGxldCBhcGkgPSBhcHBsaWNhdGlvbk1hbmFnZXIucmVzb2x2ZUNvbXBvbmVudEFwaSh2aWV3SWQpO1xuICAgICAgICAgICAgYXBpLm1vZGVsLmN1cnJlbnRTdGVwID0gZGF0YS5zdGVwO1xuICAgICAgICAgICAgYXBpLm1vZGVsLm1lZXRpbmdTdGVwID0gZGF0YS5zdGVwO1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoQ29tcG9uZW50KFwidG9vbGJhclwiKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5zeXN0ZW1FdmVudFR5cGUgPT09ICdkb2N1bWVudFNhdmVkJykge1xuICAgICAgICAgICAgbGV0IGRvY3VtZW50VHlwZSA9IGRhdGEuZG9jdW1lbnRUeXBlO1xuICAgICAgICAgICAgaWYoZG9jdW1lbnRUeXBlID09PSAnbWludXRlcycpIHtcbiAgICAgICAgICAgICAgICBtZWV0aW5nLm1pbnV0ZXNEcmFmdERvY3VtZW50SWQgPSBkYXRhLmRvY3VtZW50SWQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYoZG9jdW1lbnRUeXBlID09PSAnYWdlbmRhJykge1xuICAgICAgICAgICAgICAgIG1lZXRpbmcuYWdlbmRhRG9jdW1lbnRJZCA9IGRhdGEuZG9jdW1lbnRJZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5zeXN0ZW1FdmVudFR5cGUgPT09ICdjaGFpclBlcnNvbkNoYW5nZWQnKSB7XG4gICAgICAgICAgICBsZXQgYXBpID0gYXBwbGljYXRpb25NYW5hZ2VyLnJlc29sdmVDb21wb25lbnRBcGkodmlld0lkKTtcbiAgICAgICAgICAgIGFwaS5tb2RlbC5pc0NoYWlyUGVyc29uID0gYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUgPT09IGRhdGEuY2hhaXJQZXJzb25JZDtcbiAgICAgICAgICAgIG1lZXRpbmcuY2hhaXJQZXJzb25JZCA9IGRhdGEuY2hhaXJQZXJzb25JZDtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaENvbXBvbmVudChcInRvb2xiYXJcIik7XG4gICAgICAgICAgICBsZXQgY29tcG9uZW50ID0gYXBwbGljYXRpb25NYW5hZ2VyLnJlc29sdmVDb21wb25lbnRBcGkoXCJtZWV0aW5nRnVuY3Rpb25zVGFiXCIpO1xuICAgICAgICAgICAgaWYoY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50LnJlZHJhdygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgIHRoaXMucmVmcmVzaENvbXBvbmVudChcInBhcnRpY2lwYW50c1wiKTtcbiAgICAgICAgICAgdGhpcy5yZWZyZXNoQ29tcG9uZW50KFwicXVvcnVtV2FybmluZ1wiKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5zeXN0ZW1FdmVudFR5cGUgPT09ICdtZWV0aW5nQWRqb3VybmVkJykge1xuICAgICAgICAgICAgbGV0IGFwaSA9IGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlQ29tcG9uZW50QXBpKHZpZXdJZCk7XG4gICAgICAgICAgICBhcGkubW9kZWwubWVldGluZ0Fkam91cm5tZW50ID0gZGF0YTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaENvbXBvbmVudChcIm1haW5MYXlvdXRcIik7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hDb21wb25lbnQoXCJhZGpvdXJubWVudExheW91dFwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZnJlc2hDb21wb25lbnQoaWQpIHtcbiAgICAgICAgbGV0IGNvbXBvbmVudCA9IGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlQ29tcG9uZW50QXBpKGlkKTtcbiAgICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29tcG9uZW50LnJlZnJlc2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb21wb25lbnQ7XG4gICAgfVxuXG4gICAgc2hvd0NvbXBvbmVudCA9IChpZCkgPT4ge1xuICAgICAgICBsZXQgY29tcG9uZW50ID0gYXBwbGljYXRpb25NYW5hZ2VyLnJlc29sdmVDb21wb25lbnRBcGkoaWQpO1xuICAgICAgICBpZiAoY29tcG9uZW50KSB7XG4gICAgICAgICAgICBjb21wb25lbnQudmlzaWJsZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNvbnN0IGluc3RhbmNlID0gbmV3IFByb2N1cmVtZW50TWVldGluZ3MoKTtcbmV4cG9ydCBkZWZhdWx0IGluc3RhbmNlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxtQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsWUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksY0FBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBQXdELFNBQUFFLHVCQUFBRyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBQUEsU0FBQUcsZ0JBQUFILENBQUEsRUFBQUksQ0FBQSxFQUFBQyxDQUFBLFlBQUFELENBQUEsR0FBQUUsY0FBQSxDQUFBRixDQUFBLE1BQUFKLENBQUEsR0FBQU8sTUFBQSxDQUFBQyxjQUFBLENBQUFSLENBQUEsRUFBQUksQ0FBQSxJQUFBSyxLQUFBLEVBQUFKLENBQUEsRUFBQUssVUFBQSxNQUFBQyxZQUFBLE1BQUFDLFFBQUEsVUFBQVosQ0FBQSxDQUFBSSxDQUFBLElBQUFDLENBQUEsRUFBQUwsQ0FBQTtBQUFBLFNBQUFNLGVBQUFELENBQUEsUUFBQVEsQ0FBQSxHQUFBQyxZQUFBLENBQUFULENBQUEsdUNBQUFRLENBQUEsR0FBQUEsQ0FBQSxHQUFBQSxDQUFBO0FBQUEsU0FBQUMsYUFBQVQsQ0FBQSxFQUFBRCxDQUFBLDJCQUFBQyxDQUFBLEtBQUFBLENBQUEsU0FBQUEsQ0FBQSxNQUFBTCxDQUFBLEdBQUFLLENBQUEsQ0FBQVUsTUFBQSxDQUFBQyxXQUFBLGtCQUFBaEIsQ0FBQSxRQUFBYSxDQUFBLEdBQUFiLENBQUEs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
|
|
135
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfTWVkaWEiLCJyZXF1aXJlIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfVkNFdmVudFR5cGUiLCJfU29ja2V0TWFuYWdlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9kZWZpbmVQcm9wZXJ0eSIsInIiLCJ0IiwiX3RvUHJvcGVydHlLZXkiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIlByb2N1cmVtZW50TWVldGluZ3MiLCJjb25zdHJ1Y3RvciIsInJlc29sdmVyIiwidmlld0lkIiwic3lzdGVtRXZlbnRUeXBlIiwiZGF0YSIsIm1lZXRpbmciLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInJlY2lwaWVudElkcyIsImNvbnNvbGUiLCJsb2ciLCJhdHRlbmRlZXMiLCJhdHRlbmRlZSIsInVzZXJuYW1lIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiZ2V0VXNlckRldGFpbHMiLCJwdXNoIiwiZXZlbnREYXRhIiwicmVjaXBpZW50cyIsInNvY2tldE1hbmFnZXIiLCJlbWl0RXZlbnQiLCJWQ0V2ZW50VHlwZSIsIlNZU1RFTV9FVkVOVCIsInRoZW4iLCJyZXN1bHQiLCJjYXRjaCIsImFsZXJ0IiwiZW1pdFNvY2tldEV2ZW50IiwicHJvY3VyZW1lbnROdW1iZXIiLCJhcGkiLCJyZXNvbHZlQ29tcG9uZW50QXBpIiwidmlzaWJsZSIsImVuZFNlc3Npb24iLCJpZCIsImV2ZW50IiwibW9kZWwiLCJzdGFydGVkIiwicmVmcmVzaCIsImZpcmVFdmVudCIsInNvdXJjZSIsImxvYWRDaGF0cyIsImN1cnJlbnRTdGVwIiwic3RlcCIsIm1lZXRpbmdTdGVwIiwicmVmcmVzaENvbXBvbmVudCIsImRvY3VtZW50VHlwZSIsIm1pbnV0ZXNEcmFmdERvY3VtZW50SWQiLCJkb2N1bWVudElkIiwiYWdlbmRhRG9jdW1lbnRJZCIsImlzQ2hhaXJQZXJzb24iLCJjaGFpclBlcnNvbklkIiwiY29tcG9uZW50IiwicmVkcmF3IiwibWVldGluZ0Fkam91cm5tZW50IiwiZXhwb3J0cyIsImluc3RhbmNlIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2pzL1Byb2N1cmVtZW50TWVldGluZ3MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNZWRpYX0gZnJvbSBcIi4vTWVkaWFcIjtcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSBcIi4uL0FwcGxpY2F0aW9uTWFuYWdlclwiO1xuaW1wb3J0IHtWQ0V2ZW50VHlwZX0gZnJvbSBcIi4uL2NvbXBvbmVudHMvbWVkaWEvVkNFdmVudFR5cGVcIjtcbmltcG9ydCBzb2NrZXRNYW5hZ2VyIGZyb20gXCIuLi9jb21wb25lbnRzL1NvY2tldE1hbmFnZXJcIjtcblxuZXhwb3J0IGNsYXNzIFByb2N1cmVtZW50TWVldGluZ3Mge1xuICAgIGNvbnN0cnVjdG9yKHJlc29sdmVyKSB7XG4gICAgICAgIHRoaXMucmVzb2x2ZXIgPSByZXNvbHZlcjtcbiAgICB9XG5cbiAgICBlbWl0U29ja2V0RXZlbnQgPSAodmlld0lkLCBzeXN0ZW1FdmVudFR5cGUsIGRhdGEsIG1lZXRpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGxldCByZWNpcGllbnRJZHMgPSBbXTtcblxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlbWl0U29ja2V0RXZlbnQgOiBcIiwgc3lzdGVtRXZlbnRUeXBlLCBkYXRhLCBtZWV0aW5nKTtcbiAgICAgICAgICAgIGlmKG1lZXRpbmcgJiYgbWVldGluZy5hdHRlbmRlZXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF0dGVuZGVlIG9mIG1lZXRpbmcuYXR0ZW5kZWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmKGF0dGVuZGVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXNlcm5hbWUgPSBhdHRlbmRlZS51c2VybmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1c2VybmFtZSAhPT0gYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGllbnRJZHMucHVzaCh1c2VybmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgZXZlbnREYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICBzeXN0ZW1FdmVudFR5cGU6IHN5c3RlbUV2ZW50VHlwZSxcbiAgICAgICAgICAgICAgICAgICAgcmVjaXBpZW50czogcmVjaXBpZW50SWRzLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJFTUlUVElORyBTWVNURU0gRVZFTlQgOiBcIiwgZXZlbnREYXRhKTtcbiAgICAgICAgICAgICAgICBzb2NrZXRNYW5hZ2VyLmVtaXRFdmVudChWQ0V2ZW50VHlwZS5TWVNURU1fRVZFTlQsIGV2ZW50RGF0YSkudGhlbigocmVzdWx0KSA9PiByZXNvbHZlKHJlc3VsdCkpLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5hbGVydCh2aWV3SWQsIFwiWW91IGFyZSBjdXJyZW50bHkgb2ZmbGluZS4gUGxlYXNlIGNoZWNrIHlvdXIgbmV0d29yayBjb25uZWN0aXZpdHlcIiwgXCJFUlJPUlwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHN0YXJ0TWVldGluZyA9ICh2aWV3SWQsIG1lZXRpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1pdFNvY2tldEV2ZW50KHZpZXdJZCxcInN0YXJ0TWVldGluZ1wiLCB7XG4gICAgICAgICAgICBwcm9jdXJlbWVudE51bWJlcjogbWVldGluZy5wcm9jdXJlbWVudE51bWJlclxuICAgICAgICB9LCBtZWV0aW5nKTtcbiAgICB9XG5cbiAgICBlbmRNZWV0aW5nID0gKG1lZXRpbmcpID0+IHtcbiAgICAgICAgbGV0IGFwaSA9IGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlQ29tcG9uZW50QXBpKFwiY29uY2x1c2lvbkxheW91dFwiKTtcbiAgICAgICAgYXBpLnZpc2libGUgPSB0cnVlO1xuXG4gICAgICAgIGFwaSA9IGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlQ29tcG9uZW50QXBpKFwidG9vbGJhclwiKTtcbiAgICAgICAgYXBpLnZpc2libGUgPSBmYWxzZTtcblxuICAgICAgICBhcGkgPSBhcHBsaWNhdGlvbk1hbmFnZXIucmVzb2x2ZUNvbXBvbmVudEFwaShcIm1lZXRpbmdMYXlvdXRcIik7XG4gICAgICAgIGFwaS52aXNpYmxlID0gZmFsc2U7XG5cbiAgICAgICAgc29ja2V0TWFuYWdlci5lbmRTZXNzaW9uKG1lZXRpbmcuaWQpO1xuICAgIH1cblxuICAgIGhhbmRsZVN5c3RlbUV2ZW50ID0gKGV2ZW50LCBtZWV0aW5nLCB2aWV3SWQpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coXCJQUk9DRVNTSU5HIE1FRVRJTkcgU1lTVEVNIEVWRU5UIDogXCIsIGV2ZW50KTtcbiAgICAgICAgbGV0IGRhdGEgPSBldmVudC5kYXRhO1xuICAgICAgICBpZiAoZXZlbnQuc3lzdGVtRXZlbnRUeXBlID09PSAnc3RhcnRNZWV0aW5nJykge1xuICAgICAgICAgICAgaWYgKGRhdGEucHJvY3VyZW1lbnROdW1iZXIgPT09IG1lZXRpbmcucHJvY3VyZW1lbnROdW1iZXIpIHtcbiAgICAgICAgICAgICAgICBsZXQgYXBpID0gYXBwbGljYXRpb25NYW5hZ2VyLnJlc29sdmVDb21wb25lbnRBcGkodmlld0lkKTtcbiAgICAgICAgICAgICAgICBhcGkubW9kZWwuc3RhcnRlZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICBhcGkgPSBhcHBsaWNhdGlvbk1hbmFnZXIucmVzb2x2ZUNvbXBvbmVudEFwaShcIm1haW5MYXlvdXRcIik7XG4gICAgICAgICAgICAgICAgYXBpLnJlZnJlc2goKTtcblxuICAgICAgICAgICAgICAgIGFwaSA9IGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlQ29tcG9uZW50QXBpKFwid2FpdGluZ0xheW91dFwiKTtcbiAgICAgICAgICAgICAgICBhcGkucmVmcmVzaCgpO1xuXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBldmVudCB3aWxsIGxhdW5jaCB0aGUgVkMgdG8gbGF1bmNoLiBUaGVyZSBpcyBhIGxpc3RlbmVyIGluIHRoZSB2aWV3IGNvbmZpZyB0aGF0IGxhdW5jaGVzIHRoZSB2aWV3XG4gICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmFwaS5maXJlRXZlbnQoJ1NFUlZJQ0VfQ0FMTF9TVUNDRVNTJywge1xuICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IHthcGk6IHtpZDogJ3Byb2N1cmVtZW50TWVldGluZ1Nlc3Npb24nfX0sXG4gICAgICAgICAgICAgICAgICAgIHZpZXdJZDogJ3Byb2N1cmVtZW50TWVldGluZ1Nlc3Npb24nXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5zeXN0ZW1FdmVudFR5cGUgPT09ICdvcGVuUG9sbCcpIHtcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlQ29tcG9uZW50QXBpKFwidmNSb29tXCIpLmxvYWRDaGF0cygpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnN5c3RlbUV2ZW50VHlwZSA9PT0gJ21lZXRpbmdTdGVwQ2hhbmdlZCcpIHtcbiAgICAgICAgICAgIGxldCBhcGkgPSBhcHBsaWNhdGlvbk1hbmFnZXIucmVzb2x2ZUNvbXBvbmVudEFwaSh2aWV3SWQpO1xuICAgICAgICAgICAgYXBpLm1vZGVsLmN1cnJlbnRTdGVwID0gZGF0YS5zdGVwO1xuICAgICAgICAgICAgYXBpLm1vZGVsLm1lZXRpbmdTdGVwID0gZGF0YS5zdGVwO1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoQ29tcG9uZW50KFwidG9vbGJhclwiKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5zeXN0ZW1FdmVudFR5cGUgPT09ICdkb2N1bWVudFNhdmVkJykge1xuICAgICAgICAgICAgbGV0IGRvY3VtZW50VHlwZSA9IGRhdGEuZG9jdW1lbnRUeXBlO1xuICAgICAgICAgICAgaWYoZG9jdW1lbnRUeXBlID09PSAnbWludXRlcycpIHtcbiAgICAgICAgICAgICAgICBtZWV0aW5nLm1pbnV0ZXNEcmFmdERvY3VtZW50SWQgPSBkYXRhLmRvY3VtZW50SWQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYoZG9jdW1lbnRUeXBlID09PSAnYWdlbmRhJykge1xuICAgICAgICAgICAgICAgIG1lZXRpbmcuYWdlbmRhRG9jdW1lbnRJZCA9IGRhdGEuZG9jdW1lbnRJZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5zeXN0ZW1FdmVudFR5cGUgPT09ICdjaGFpclBlcnNvbkNoYW5nZWQnKSB7XG4gICAgICAgICAgICBsZXQgYXBpID0gYXBwbGljYXRpb25NYW5hZ2VyLnJlc29sdmVDb21wb25lbnRBcGkodmlld0lkKTtcbiAgICAgICAgICAgIGFwaS5tb2RlbC5pc0NoYWlyUGVyc29uID0gYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUgPT09IGRhdGEuY2hhaXJQZXJzb25JZDtcbiAgICAgICAgICAgIG1lZXRpbmcuY2hhaXJQZXJzb25JZCA9IGRhdGEuY2hhaXJQZXJzb25JZDtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaENvbXBvbmVudChcInRvb2xiYXJcIik7XG4gICAgICAgICAgICBsZXQgY29tcG9uZW50ID0gYXBwbGljYXRpb25NYW5hZ2VyLnJlc29sdmVDb21wb25lbnRBcGkoXCJtZWV0aW5nRnVuY3Rpb25zVGFiXCIpO1xuICAgICAgICAgICAgaWYoY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50LnJlZHJhdygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgIHRoaXMucmVmcmVzaENvbXBvbmVudChcInBhcnRpY2lwYW50c1wiKTtcbiAgICAgICAgICAgdGhpcy5yZWZyZXNoQ29tcG9uZW50KFwicXVvcnVtV2FybmluZ1wiKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5zeXN0ZW1FdmVudFR5cGUgPT09ICdtZWV0aW5nQWRqb3VybmVkJykge1xuICAgICAgICAgICAgbGV0IGFwaSA9IGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlQ29tcG9uZW50QXBpKHZpZXdJZCk7XG4gICAgICAgICAgICBhcGkubW9kZWwubWVldGluZ0Fkam91cm5tZW50ID0gZGF0YTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaENvbXBvbmVudChcIm1haW5MYXlvdXRcIik7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hDb21wb25lbnQoXCJhZGpvdXJubWVudExheW91dFwiKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5zeXN0ZW1FdmVudFR5cGUgPT09ICdtZWV0aW5nUmVzdW1lZCcpIHtcbiAgICAgICAgICAgIGxldCBhcGkgPSBhcHBsaWNhdGlvbk1hbmFnZXIucmVzb2x2ZUNvbXBvbmVudEFwaSh2aWV3SWQpO1xuICAgICAgICAgICAgYXBpLm1vZGVsLm1lZXRpbmdBZGpvdXJubWVudCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hDb21wb25lbnQoXCJtYWluTGF5b3V0XCIpO1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoQ29tcG9uZW50KFwiYWRqb3Vybm1lbnRMYXlvdXRcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWZyZXNoQ29tcG9uZW50KGlkKSB7XG4gICAgICAgIGxldCBjb21wb25lbnQgPSBhcHBsaWNhdGlvbk1hbmFnZXIucmVzb2x2ZUNvbXBvbmVudEFwaShpZCk7XG4gICAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudC5yZWZyZXNoKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29tcG9uZW50O1xuICAgIH1cblxuICAgIHNob3dDb21wb25lbnQgPSAoaWQpID0+IHtcbiAgICAgICAgbGV0IGNvbXBvbmVudCA9IGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlQ29tcG9uZW50QXBpKGlkKTtcbiAgICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29tcG9uZW50LnZpc2libGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5jb25zdCBpbnN0YW5jZSA9IG5ldyBQcm9jdXJlbWVudE1lZXRpbmdzKCk7XG5leHBvcnQgZGVmYXVsdCBpbnN0YW5jZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsbUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFlBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGNBQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUF3RCxTQUFBRSx1QkFBQUcsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUFBLFNBQUFHLGdCQUFBSCxDQUFBLEVBQUFJLENBQUEsRUFBQUMsQ0FBQSxZQUFBRCxDQUFBLEdBQUFFLGNBQUEsQ0FBQUYsQ0FBQSxNQUFBSixDQUFBLEdBQUFP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
|