@agilemotion/oui-react-js 2.0.27 → 2.0.29
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/AuthImage.js +68 -0
- package/dist/components/FileThumb.js +25 -54
- package/dist/components/TabPanel.js +14 -3
- package/dist/components/form/UploadField.js +14 -45
- package/dist/components/media/VCRoomParticipant.js +5 -9
- package/dist/components/media/VideoPlayer.js +75 -7
- package/dist/components/media/chat/ChatRoom.js +17 -19
- package/dist/documentDownload.js +79 -0
- package/package.json +1 -1
|
@@ -18,6 +18,7 @@ var _Event = _interopRequireDefault(require("../../event/Event"));
|
|
|
18
18
|
var _Observable = _interopRequireDefault(require("../../event/Observable"));
|
|
19
19
|
var _EventType = _interopRequireDefault(require("../../event/EventType"));
|
|
20
20
|
var _noimage = _interopRequireDefault(require("./noimage.png"));
|
|
21
|
+
var _documentDownload = require("../../documentDownload");
|
|
21
22
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
22
23
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
23
24
|
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; }
|
|
@@ -51,7 +52,7 @@ const json = response => {
|
|
|
51
52
|
};
|
|
52
53
|
const location = window.location.protocol + "//" + window.location.hostname;
|
|
53
54
|
const DocumentUpload = exports.DocumentUpload = /*#__PURE__*/_react.default.memo(props => {
|
|
54
|
-
var _props$config$attribu, _props$config$attribu2, _props$config$attribu3;
|
|
55
|
+
var _base$value$documentR4, _props$config$attribu, _props$config$attribu2, _props$config$attribu3;
|
|
55
56
|
const [viewerFile, setViewerFile] = _react.default.useState(!_Utils.default.isNull(props.initialFile) ? props.initialFile : null);
|
|
56
57
|
const [payloadStorageMode, setPayloadStorageMode] = _react.default.useState(props.config.payloadStorageMode || 'base64');
|
|
57
58
|
const [files, setFiles] = _react.default.useState(!_Utils.default.isNull(props.initialFile) ? [props.initialFile] : null);
|
|
@@ -105,7 +106,8 @@ const DocumentUpload = exports.DocumentUpload = /*#__PURE__*/_react.default.memo
|
|
|
105
106
|
};
|
|
106
107
|
let url = location + uploadUrl;
|
|
107
108
|
(0, _reactPromiseTracker.trackPromise)(fetch(encodeURI(url), fetchConfig).then(status).then(json).then(data => {
|
|
108
|
-
|
|
109
|
+
var _base$value$documentR;
|
|
110
|
+
metadata.documentRepositoryId = !_Utils.default.isNull(base.value) ? (_base$value$documentR = base.value.documentRepositoryId) !== null && _base$value$documentR !== void 0 ? _base$value$documentR : base.value.repositoryId : null;
|
|
109
111
|
metadata.documentRepositoryCacheId = data;
|
|
110
112
|
cacheId.current = data;
|
|
111
113
|
base.handleValueChange(metadata);
|
|
@@ -156,52 +158,17 @@ const DocumentUpload = exports.DocumentUpload = /*#__PURE__*/_react.default.memo
|
|
|
156
158
|
}));
|
|
157
159
|
});
|
|
158
160
|
};
|
|
159
|
-
const buildDownloadUrl = documentRepositoryId => location + _ApplicationManager.default.getContextRoot() + '/docs/api/v1/manager/download/' + documentRepositoryId + '?access_token=' + sessionStorage.getItem("accessToken") + '&idToken=' + sessionStorage.getItem("idToken");
|
|
160
161
|
|
|
161
|
-
//
|
|
162
|
-
// tenant (profile) header; a plain browser GET (img/anchor) can't send it, so the tenant falls
|
|
163
|
-
// back to the raw token profile and the bucket name is malformed. getActiveTenant() can be null
|
|
164
|
-
// (e.g. no active tenant selected) — in that case we omit the header and let the service fall back.
|
|
165
|
-
const fetchDocumentObjectUrl = documentRepositoryId => {
|
|
166
|
-
const headers = {};
|
|
167
|
-
const tenant = _ApplicationManager.default.getActiveTenant();
|
|
168
|
-
if (!_Utils.default.isNull(tenant)) {
|
|
169
|
-
headers['tenant'] = tenant;
|
|
170
|
-
}
|
|
171
|
-
return fetch(encodeURI(buildDownloadUrl(documentRepositoryId)), {
|
|
172
|
-
method: 'GET',
|
|
173
|
-
headers
|
|
174
|
-
}).then(status).then(response => response.blob()).then(blob => URL.createObjectURL(blob));
|
|
175
|
-
};
|
|
176
|
-
|
|
177
|
-
// Open a stored document in a new tab. The tab is opened synchronously (before the async fetch)
|
|
178
|
-
// so it isn't blocked as a pop-up; its location is set once the tenant-scoped blob is ready.
|
|
179
|
-
const openDocument = documentRepositoryId => {
|
|
180
|
-
const win = window.open('', '_blank');
|
|
181
|
-
fetchDocumentObjectUrl(documentRepositoryId).then(objectUrl => {
|
|
182
|
-
if (win) {
|
|
183
|
-
win.location = objectUrl;
|
|
184
|
-
}
|
|
185
|
-
}).catch(e => {
|
|
186
|
-
if (win) {
|
|
187
|
-
win.close();
|
|
188
|
-
}
|
|
189
|
-
if (e && e.code === 401) {
|
|
190
|
-
_ApplicationManager.default.clear();
|
|
191
|
-
_ApplicationManager.default.getApplicationHistory().push('/login');
|
|
192
|
-
}
|
|
193
|
-
});
|
|
194
|
-
};
|
|
195
|
-
|
|
196
|
-
// IMAGE-style preview: fetch the stored image with the tenant header and hold it as an object URL.
|
|
162
|
+
// IMAGE-style preview: fetch the stored image (header auth) and hold it as an object URL.
|
|
197
163
|
_react.default.useEffect(() => {
|
|
198
|
-
|
|
164
|
+
var _base$value$documentR2, _base$value$documentR3;
|
|
165
|
+
if (props.style !== 'IMAGE' || !_Utils.default.isNull(viewerFile) || _Utils.default.isNull(base.value) || _Utils.default.isNull((_base$value$documentR2 = base.value.documentRepositoryId) !== null && _base$value$documentR2 !== void 0 ? _base$value$documentR2 : base.value.repositoryId)) {
|
|
199
166
|
setImageObjectUrl(null);
|
|
200
167
|
return;
|
|
201
168
|
}
|
|
202
169
|
let active = true;
|
|
203
170
|
let created = null;
|
|
204
|
-
fetchDocumentObjectUrl(base.value.documentRepositoryId).then(objectUrl => {
|
|
171
|
+
(0, _documentDownload.fetchDocumentObjectUrl)((_base$value$documentR3 = base.value.documentRepositoryId) !== null && _base$value$documentR3 !== void 0 ? _base$value$documentR3 : base.value.repositoryId).then(objectUrl => {
|
|
205
172
|
if (active) {
|
|
206
173
|
created = objectUrl;
|
|
207
174
|
setImageObjectUrl(objectUrl);
|
|
@@ -215,7 +182,7 @@ const DocumentUpload = exports.DocumentUpload = /*#__PURE__*/_react.default.memo
|
|
|
215
182
|
URL.revokeObjectURL(created);
|
|
216
183
|
}
|
|
217
184
|
};
|
|
218
|
-
}, [props.style, viewerFile, base.value ? base.value.documentRepositoryId : null]);
|
|
185
|
+
}, [props.style, viewerFile, base.value ? (_base$value$documentR4 = base.value.documentRepositoryId) !== null && _base$value$documentR4 !== void 0 ? _base$value$documentR4 : base.value.repositoryId : null]);
|
|
219
186
|
const handleChange = () => event => {
|
|
220
187
|
let files = event.target.files;
|
|
221
188
|
var allFiles = [];
|
|
@@ -254,8 +221,9 @@ const DocumentUpload = exports.DocumentUpload = /*#__PURE__*/_react.default.memo
|
|
|
254
221
|
fileMetaData.type = allFiles[0].type;
|
|
255
222
|
fileMetaData.size = allFiles[0].size;
|
|
256
223
|
if (base.value) {
|
|
224
|
+
var _base$value$documentR5;
|
|
257
225
|
fileMetaData.id = base.value.id;
|
|
258
|
-
fileMetaData.documentRepositoryId = base.value.documentRepositoryId;
|
|
226
|
+
fileMetaData.documentRepositoryId = (_base$value$documentR5 = base.value.documentRepositoryId) !== null && _base$value$documentR5 !== void 0 ? _base$value$documentR5 : base.value.repositoryId;
|
|
259
227
|
}
|
|
260
228
|
if ('base64' === payloadStorageMode) {
|
|
261
229
|
fileMetaData.payload = allFiles[0].base64;
|
|
@@ -332,8 +300,9 @@ const DocumentUpload = exports.DocumentUpload = /*#__PURE__*/_react.default.memo
|
|
|
332
300
|
}, base.errorMessage)) : null), /*#__PURE__*/_react.default.createElement("label", null, !_Utils.default.isNull(base.value) ? _Utils.default.isNull(base.value.id) ? base.value.name : /*#__PURE__*/_react.default.createElement("a", {
|
|
333
301
|
href: '#',
|
|
334
302
|
onClick: e => {
|
|
303
|
+
var _base$value$documentR6;
|
|
335
304
|
e.preventDefault();
|
|
336
|
-
|
|
305
|
+
(0, _documentDownload.downloadDocument)((_base$value$documentR6 = base.value.documentRepositoryId) !== null && _base$value$documentR6 !== void 0 ? _base$value$documentR6 : base.value.repositoryId, base.value.name);
|
|
337
306
|
}
|
|
338
307
|
}, base.value.name) : null), !base.disabled && nullable && base.value ? /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
339
308
|
"aria-controls": "menu-list-grow",
|
|
@@ -374,4 +343,4 @@ const UploadField = exports.UploadField = /*#__PURE__*/_react.default.memo(props
|
|
|
374
343
|
}, props)));
|
|
375
344
|
});
|
|
376
345
|
var _default = exports.default = UploadField;
|
|
377
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9CdXR0b24iLCJfQmFzZUZpZWxkIiwiX3N0eWxlcyIsIl9Eb2N1bWVudFZpZXdlciIsIl9VdGlscyIsIl9BcHBsaWNhdGlvbk1hbmFnZXIiLCJfSWNvbkJ1dHRvbiIsIl9JY29uIiwiX3JlYWN0UHJvbWlzZVRyYWNrZXIiLCJfRXZlbnQiLCJfT2JzZXJ2YWJsZSIsIl9FdmVudFR5cGUiLCJfbm9pbWFnZSIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsIm4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ0IiwiciIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJ1c2VTdHlsZXMiLCJtYWtlU3R5bGVzIiwidGhlbWUiLCJidXR0b24iLCJtYXJnaW4iLCJzcGFjaW5nIiwiaW5wdXQiLCJkaXNwbGF5IiwiZXJyb3JNZXNzYWdlRGlzcGxheSIsImNvbG9yIiwic3RhdHVzIiwicmVzcG9uc2UiLCJvayIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiY29kZSIsIm1lc3NhZ2UiLCJzdGF0dXNUZXh0IiwianNvbiIsInRleHQiLCJsb2NhdGlvbiIsIndpbmRvdyIsInByb3RvY29sIiwiaG9zdG5hbWUiLCJEb2N1bWVudFVwbG9hZCIsImV4cG9ydHMiLCJSZWFjdCIsIm1lbW8iLCJwcm9wcyIsIl9wcm9wcyRjb25maWckYXR0cmlidSIsIl9wcm9wcyRjb25maWckYXR0cmlidTIiLCJfcHJvcHMkY29uZmlnJGF0dHJpYnUzIiwidmlld2VyRmlsZSIsInNldFZpZXdlckZpbGUiLCJ1c2VTdGF0ZSIsIlV0aWxzIiwiaXNOdWxsIiwiaW5pdGlhbEZpbGUiLCJwYXlsb2FkU3RvcmFnZU1vZGUiLCJzZXRQYXlsb2FkU3RvcmFnZU1vZGUiLCJjb25maWciLCJmaWxlcyIsInNldEZpbGVzIiwibG9hZGluZyIsInNldExvYWRpbmciLCJudWxsYWJsZSIsInZhbGlkYXRvciIsIm11bHRpcGxlIiwic2hvdyIsInNldFNob3ciLCJjbGFzc2VzIiwiaGFzRXJyb3IiLCJzZXRIYXNFcnJvciIsIndpZHRoIiwiZ2V0Q29tcG9uZW50QXR0cmlidXRlIiwiaGVpZ2h0IiwiZXJyb3JNZXNzYWdlIiwic2V0RXJyb3JNZXNzYWdlIiwiaW1hZ2VPYmplY3RVcmwiLCJzZXRJbWFnZU9iamVjdFVybCIsImNhY2hlSWQiLCJ1c2VSZWYiLCJiYXNlIiwiZG9jdW1lbnRSZXBvc2l0b3J5Q2FjaGVJZCIsInVzZUVmZmVjdCIsImN1cnJlbnQiLCJoYW5kbGVWaWV3ZXJMb2FkIiwibnVtUGFnZXMiLCJ1cGxvYWQiLCJtZXRhZGF0YSIsImZpbGUiLCJyZWFkZXIiLCJ1cGxvYWRVcmwiLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJnZXRDb250ZXh0Um9vdCIsImFjY2Vzc1Rva2VuIiwic2Vzc2lvblN0b3JhZ2UiLCJnZXRJdGVtIiwiaWRUb2tlbiIsImRhdGEiLCJGb3JtRGF0YSIsImNvcnJlbGF0aW9uSWQiLCJ2aWV3SWQiLCJpZCIsInJvd0lkIiwiYXBwZW5kIiwiSlNPTiIsInN0cmluZ2lmeSIsImZldGNoQ29uZmlnIiwibWV0aG9kIiwiaGVhZGVycyIsImdldEFjdGl2ZVRlbmFudCIsImJvZHkiLCJ1cmwiLCJ0cmFja1Byb21pc2UiLCJmZXRjaCIsImVuY29kZVVSSSIsInRoZW4iLCJkb2N1bWVudFJlcG9zaXRvcnlJZCIsImhhbmRsZVZhbHVlQ2hhbmdlIiwiZXZlbnQiLCJFdmVudCIsImhhbmRsZSIsInJlc3VsdCIsImV2ZW50TWFuYWdlciIsImZpcmVFdmVudCIsIkV2ZW50VHlwZSIsIkRPQ1VNRU5UX0NBQ0hFRCIsImNhdGNoIiwiY2xlYXIiLCJnZXRBcHBsaWNhdGlvbkhpc3RvcnkiLCJtZXNzYWdlVHlwZSIsIk1FU1NBR0VfQVJSSVZFRCIsInBheWxvYWQiLCJyZW1vdmUiLCJidWlsZERvd25sb2FkVXJsIiwiZmV0Y2hEb2N1bWVudE9iamVjdFVybCIsInRlbmFudCIsImJsb2IiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJvcGVuRG9jdW1lbnQiLCJ3aW4iLCJvcGVuIiwib2JqZWN0VXJsIiwiY2xvc2UiLCJzdHlsZSIsImFjdGl2ZSIsImNyZWF0ZWQiLCJyZXZva2VPYmplY3RVUkwiLCJoYW5kbGVDaGFuZ2UiLCJ0YXJnZXQiLCJhbGxGaWxlcyIsIkZpbGVSZWFkZXIiLCJyZWFkQXNEYXRhVVJMIiwib25sb2FkIiwiZmlsZUluZm8iLCJuYW1lIiwidHlwZSIsInNpemUiLCJiYXNlNjQiLCJvblVwbG9hZEhhbmRsZXIiLCJvbmxvYWRlbmQiLCJmb3JtIiwiZmlsZU1ldGFEYXRhIiwiZG9tYWluIiwiY29udGVudCIsImNyZWF0ZUVsZW1lbnQiLCJhY2NlcHQiLCJhdHRyaWJ1dGVzIiwiY2xhc3NOYW1lIiwiY29uY2F0IiwiZGlzYWJsZWQiLCJyZXF1aXJlZCIsIm9uQ2hhbmdlIiwiaHRtbEZvciIsInZhcmlhbnQiLCJjb21wb25lbnQiLCJiYWNrZ3JvdW5kUmVwZWF0IiwiYmFja2dyb3VuZFNpemUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJib3JkZXIiLCJiYWNrZ3JvdW5kSW1hZ2UiLCJkZWZhdWx0SW1hZ2UiLCJwYWRkaW5nIiwic3RhcnRJY29uIiwibGFiZWwiLCJocmVmIiwib25DbGljayIsInByZXZlbnREZWZhdWx0IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsInNob3dWaWV3ZXIiLCJvbkRvY3VtZW50TG9hZFN1Y2Nlc3MiLCJVcGxvYWRGaWVsZCIsInNldEZpbGUiLCJjbGVhclRyaWdnZXIiLCJCYXNlRmllbGQiLCJ2YWx1ZVBhcnNlciIsImluYm91bmQiLCJ2YWx1ZUNoYW5nZUNhbGxiYWNrIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9VcGxvYWRGaWVsZC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCdXR0b24gZnJvbSAnQG11aS9tYXRlcmlhbC9CdXR0b24nO1xuaW1wb3J0IHtCYXNlRmllbGR9IGZyb20gXCIuL0Jhc2VGaWVsZFwiO1xuaW1wb3J0IHttYWtlU3R5bGVzfSBmcm9tICdAbXVpL3N0eWxlcyc7XG5pbXBvcnQgRG9jdW1lbnRWaWV3ZXJDb21wb25lbnQgZnJvbSBcIi4uL0RvY3VtZW50Vmlld2VyXCI7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vLi4vVXRpbHMnO1xuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tIFwiLi4vLi4vQXBwbGljYXRpb25NYW5hZ2VyXCI7XG5pbXBvcnQgSWNvbkJ1dHRvbiBmcm9tICdAbXVpL21hdGVyaWFsL0ljb25CdXR0b24nO1xuaW1wb3J0IEljb24gZnJvbSAnLi4vSWNvbic7XG5pbXBvcnQge3RyYWNrUHJvbWlzZX0gZnJvbSBcInJlYWN0LXByb21pc2UtdHJhY2tlclwiO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4uLy4uL2V2ZW50L0V2ZW50JztcbmltcG9ydCBldmVudE1hbmFnZXIgZnJvbSAnLi4vLi4vZXZlbnQvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgRXZlbnRUeXBlIGZyb20gJy4uLy4uL2V2ZW50L0V2ZW50VHlwZSc7XG5pbXBvcnQgZGVmYXVsdEltYWdlIGZyb20gJy4vbm9pbWFnZS5wbmcnO1xuXG5jb25zdCB1c2VTdHlsZXMgPSBtYWtlU3R5bGVzKHRoZW1lID0+ICh7XG4gICAgYnV0dG9uOiB7XG4gICAgICAgIG1hcmdpbjogdGhlbWUuc3BhY2luZygxKSxcbiAgICB9LFxuICAgIGlucHV0OiB7XG4gICAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICB9LFxuICAgIGVycm9yTWVzc2FnZURpc3BsYXk6IHtcbiAgICAgICAgY29sb3I6ICdyZWQnXG4gICAgfVxufSkpO1xuXG5jb25zdCBzdGF0dXMgPSAocmVzcG9uc2UpID0+IHtcbiAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNwb25zZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHtjb2RlOiByZXNwb25zZS5zdGF0dXMsIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHR9KTtcbiAgICB9XG59O1xuXG5jb25zdCBqc29uID0gKHJlc3BvbnNlKSA9PiB7XG4gICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKTtcbn07XG5cbmNvbnN0IGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgXCIvL1wiICsgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xuZXhwb3J0IGNvbnN0IERvY3VtZW50VXBsb2FkID0gUmVhY3QubWVtbygocHJvcHMpID0+IHtcbiAgICBjb25zdCBbdmlld2VyRmlsZSwgc2V0Vmlld2VyRmlsZV0gPSBSZWFjdC51c2VTdGF0ZSghVXRpbHMuaXNOdWxsKHByb3BzLmluaXRpYWxGaWxlKSA/IHByb3BzLmluaXRpYWxGaWxlIDogbnVsbCk7XG4gICAgY29uc3QgW3BheWxvYWRTdG9yYWdlTW9kZSwgc2V0UGF5bG9hZFN0b3JhZ2VNb2RlXSA9IFJlYWN0LnVzZVN0YXRlKHByb3BzLmNvbmZpZy5wYXlsb2FkU3RvcmFnZU1vZGUgfHwgJ2Jhc2U2NCcpO1xuICAgIGNvbnN0IFtmaWxlcywgc2V0RmlsZXNdID0gUmVhY3QudXNlU3RhdGUoIVV0aWxzLmlzTnVsbChwcm9wcy5pbml0aWFsRmlsZSkgPyBbcHJvcHMuaW5pdGlhbEZpbGVdIDogbnVsbCk7XG4gICAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gUmVhY3QudXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW251bGxhYmxlXSA9IFJlYWN0LnVzZVN0YXRlKFV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcudmFsaWRhdG9yKSB8fCBwcm9wcy5jb25maWcudmFsaWRhdG9yLm51bGxhYmxlID09PSB0cnVlKTtcbiAgICBjb25zdCBbbXVsdGlwbGVdID0gUmVhY3QudXNlU3RhdGUocHJvcHMubXVsdGlwbGUgPT09IHRydWUpO1xuICAgIGNvbnN0IFtzaG93LCBzZXRTaG93XSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBjbGFzc2VzID0gdXNlU3R5bGVzKCk7XG4gICAgY29uc3QgW2hhc0Vycm9yLCBzZXRIYXNFcnJvcl0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCB3aWR0aCA9IFV0aWxzLmdldENvbXBvbmVudEF0dHJpYnV0ZShwcm9wcy5jb25maWcsICd3aWR0aCcsICcyMDBweCcpO1xuICAgIGNvbnN0IGhlaWdodCA9IFV0aWxzLmdldENvbXBvbmVudEF0dHJpYnV0ZShwcm9wcy5jb25maWcsICdoZWlnaHQnLCAnMjAwcHgnKTtcbiAgICBjb25zdCBbZXJyb3JNZXNzYWdlLCBzZXRFcnJvck1lc3NhZ2VdID0gUmVhY3QudXNlU3RhdGUoXCJcIik7XG4gICAgY29uc3QgW2ltYWdlT2JqZWN0VXJsLCBzZXRJbWFnZU9iamVjdFVybF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBjYWNoZUlkID0gUmVhY3QudXNlUmVmKCFVdGlscy5pc051bGwocHJvcHMuYmFzZS52YWx1ZSkgPyBwcm9wcy5iYXNlLnZhbHVlLmRvY3VtZW50UmVwb3NpdG9yeUNhY2hlSWQgOiBudWxsKTtcbiAgICBjb25zdCBiYXNlID0gcHJvcHMuYmFzZTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBpZihjYWNoZUlkLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAvL3JlbW92ZSgpLmNhdGNoKChlKSA9PiB7fSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgc2V0Vmlld2VyRmlsZShwcm9wcy5pbml0aWFsRmlsZSk7XG4gICAgfSwgW3Byb3BzLmluaXRpYWxGaWxlXSk7XG5cbiAgICBjb25zdCBoYW5kbGVWaWV3ZXJMb2FkID0gKG51bVBhZ2VzKSA9PiB7XG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgIH07XG5cbiAgICBjb25zdCB1cGxvYWQgPSAobWV0YWRhdGEsIGZpbGUsIHJlYWRlcikgPT4ge1xuICAgICAgICBsZXQgdXBsb2FkVXJsID0gVXRpbHMuZ2V0Q29tcG9uZW50QXR0cmlidXRlKHByb3BzLmNvbmZpZywgJ3VwbG9hZFVybCcsIG51bGwpO1xuICAgICAgICBpZih1cGxvYWRVcmwgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHVwbG9hZFVybCA9IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpICsgXCIvZG9jcy9hcGkvdjEvbWFuYWdlci91cGxvYWQvc2F2ZVwiO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHBheWxvYWRTdG9yYWdlTW9kZSA9IHByb3BzLmNvbmZpZy5wYXlsb2FkU3RvcmFnZU1vZGU7XG4gICAgICAgIGlmKHBheWxvYWRTdG9yYWdlTW9kZSA9PT0gJ3Bvc3QnKXtcbiAgICAgICAgICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcImFjY2Vzc1Rva2VuXCIpO1xuICAgICAgICAgICAgY29uc3QgaWRUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJpZFRva2VuXCIpO1xuICAgICAgICAgICAgbGV0IGRhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICAgIG1ldGFkYXRhLmNvcnJlbGF0aW9uSWQgPSBwcm9wcy52aWV3SWQgKyBcIi5cIiArIHByb3BzLmNvbmZpZy5pZCArIChwcm9wcy5jb25maWcucm93SWQgPyBcIi5cIiArIHByb3BzLmNvbmZpZy5yb3dJZCA6IFwiXCIpO1xuICAgICAgICAgICAgZGF0YS5hcHBlbmQoXCJtZXRhZGF0YVwiLCBKU09OLnN0cmluZ2lmeShtZXRhZGF0YSkpO1xuICAgICAgICAgICAgZGF0YS5hcHBlbmQoXCJmaWxlXCIsIGZpbGUpO1xuXG4gICAgICAgICAgICBsZXQgZmV0Y2hDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIGFjY2Vzc1Rva2VuLFxuICAgICAgICAgICAgICAgICAgICAnaWRUb2tlbic6IGlkVG9rZW4sXG4gICAgICAgICAgICAgICAgICAgICd0ZW5hbnQnOiBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0QWN0aXZlVGVuYW50KClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJvZHk6IGRhdGFcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGxldCB1cmwgPSBsb2NhdGlvbiArIHVwbG9hZFVybDtcbiAgICAgICAgICAgIHRyYWNrUHJvbWlzZShcbiAgICAgICAgICAgICAgICBmZXRjaChlbmNvZGVVUkkodXJsKSwgZmV0Y2hDb25maWcpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKHN0YXR1cylcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oanNvbilcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLmRvY3VtZW50UmVwb3NpdG9yeUlkID0gIVV0aWxzLmlzTnVsbChiYXNlLnZhbHVlKSA/IGJhc2UudmFsdWUuZG9jdW1lbnRSZXBvc2l0b3J5SWQgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEuZG9jdW1lbnRSZXBvc2l0b3J5Q2FjaGVJZCA9IGRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZUlkLmN1cnJlbnQgPSBkYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFzZS5oYW5kbGVWYWx1ZUNoYW5nZShtZXRhZGF0YSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4ubWV0YWRhdGEsIHVybDogcmVhZGVyLnJlc3VsdH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuRE9DVU1FTlRfQ0FDSEVELCBldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKFxuICAgICAgICAgICAgICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuY29kZSA9PT0gNDAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmdldEFwcGxpY2F0aW9uSGlzdG9yeSgpLnB1c2goJy9sb2dpbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWVzc2FnZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVHlwZTogJ0VSUk9SJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnQW4gZXJyb3IgaGFzIGFjY3VycmVkIHdoaWxlIHVwbG9hZGluZyBmaWxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KGFwcGxpY2F0aW9uTWFuYWdlciwgcHJvcHMudmlld0lkLCBtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLk1FU1NBR0VfQVJSSVZFRCwgZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWV0YWRhdGEucGF5bG9hZCA9IHJlYWRlci5yZXN1bHQ7XG4gICAgICAgICAgICBiYXNlLmhhbmRsZVZhbHVlQ2hhbmdlKG1ldGFkYXRhKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCByZW1vdmUgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJhY2Nlc3NUb2tlblwiKTtcbiAgICAgICAgICAgIGNvbnN0IGlkVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwiaWRUb2tlblwiKTtcblxuICAgICAgICAgICAgbGV0IGZldGNoQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIGFjY2Vzc1Rva2VuLFxuICAgICAgICAgICAgICAgICAgICAnaWRUb2tlbic6IGlkVG9rZW4sXG4gICAgICAgICAgICAgICAgICAgICd0ZW5hbnQnOiBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0QWN0aXZlVGVuYW50KClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBsZXQgdXJsID0gbG9jYXRpb24gKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKSArICcvZG9jcy9hcGkvdjEvbWFuYWdlci91cGxvYWQvcmVtb3ZlLycgKyBjYWNoZUlkLmN1cnJlbnQ7XG4gICAgICAgICAgICB0cmFja1Byb21pc2UoXG4gICAgICAgICAgICAgICAgZmV0Y2goZW5jb2RlVVJJKHVybCksIGZldGNoQ29uZmlnKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihzdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goXG4gICAgICAgICAgICAgICAgICAgIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5jb2RlID09PSA0MDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0QXBwbGljYXRpb25IaXN0b3J5KCkucHVzaCgnL2xvZ2luJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICB9O1xuXG4gICAgY29uc3QgYnVpbGREb3dubG9hZFVybCA9IChkb2N1bWVudFJlcG9zaXRvcnlJZCkgPT5cbiAgICAgICAgbG9jYXRpb24gKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKSArICcvZG9jcy9hcGkvdjEvbWFuYWdlci9kb3dubG9hZC8nICsgZG9jdW1lbnRSZXBvc2l0b3J5SWQgK1xuICAgICAgICAnP2FjY2Vzc190b2tlbj0nICsgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcImFjY2Vzc1Rva2VuXCIpICsgJyZpZFRva2VuPScgKyBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwiaWRUb2tlblwiKTtcblxuICAgIC8vIEZldGNoIGEgc3RvcmVkIGRvY3VtZW50IGFzIGFuIG9iamVjdCBVUkwuIFRoZSBkb2NzIHNlcnZpY2UgcmVzb2x2ZXMgdGhlIFMzIGJ1Y2tldCBmcm9tIHRoZVxuICAgIC8vIHRlbmFudCAocHJvZmlsZSkgaGVhZGVyOyBhIHBsYWluIGJyb3dzZXIgR0VUIChpbWcvYW5jaG9yKSBjYW4ndCBzZW5kIGl0LCBzbyB0aGUgdGVuYW50IGZhbGxzXG4gICAgLy8gYmFjayB0byB0aGUgcmF3IHRva2VuIHByb2ZpbGUgYW5kIHRoZSBidWNrZXQgbmFtZSBpcyBtYWxmb3JtZWQuIGdldEFjdGl2ZVRlbmFudCgpIGNhbiBiZSBudWxsXG4gICAgLy8gKGUuZy4gbm8gYWN0aXZlIHRlbmFudCBzZWxlY3RlZCkg4oCUIGluIHRoYXQgY2FzZSB3ZSBvbWl0IHRoZSBoZWFkZXIgYW5kIGxldCB0aGUgc2VydmljZSBmYWxsIGJhY2suXG4gICAgY29uc3QgZmV0Y2hEb2N1bWVudE9iamVjdFVybCA9IChkb2N1bWVudFJlcG9zaXRvcnlJZCkgPT4ge1xuICAgICAgICBjb25zdCBoZWFkZXJzID0ge307XG4gICAgICAgIGNvbnN0IHRlbmFudCA9IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRBY3RpdmVUZW5hbnQoKTtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwodGVuYW50KSkge1xuICAgICAgICAgICAgaGVhZGVyc1sndGVuYW50J10gPSB0ZW5hbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZldGNoKGVuY29kZVVSSShidWlsZERvd25sb2FkVXJsKGRvY3VtZW50UmVwb3NpdG9yeUlkKSksIHttZXRob2Q6ICdHRVQnLCBoZWFkZXJzfSlcbiAgICAgICAgICAgIC50aGVuKHN0YXR1cylcbiAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuYmxvYigpKVxuICAgICAgICAgICAgLnRoZW4oKGJsb2IpID0+IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYikpO1xuICAgIH07XG5cbiAgICAvLyBPcGVuIGEgc3RvcmVkIGRvY3VtZW50IGluIGEgbmV3IHRhYi4gVGhlIHRhYiBpcyBvcGVuZWQgc3luY2hyb25vdXNseSAoYmVmb3JlIHRoZSBhc3luYyBmZXRjaClcbiAgICAvLyBzbyBpdCBpc24ndCBibG9ja2VkIGFzIGEgcG9wLXVwOyBpdHMgbG9jYXRpb24gaXMgc2V0IG9uY2UgdGhlIHRlbmFudC1zY29wZWQgYmxvYiBpcyByZWFkeS5cbiAgICBjb25zdCBvcGVuRG9jdW1lbnQgPSAoZG9jdW1lbnRSZXBvc2l0b3J5SWQpID0+IHtcbiAgICAgICAgY29uc3Qgd2luID0gd2luZG93Lm9wZW4oJycsICdfYmxhbmsnKTtcbiAgICAgICAgZmV0Y2hEb2N1bWVudE9iamVjdFVybChkb2N1bWVudFJlcG9zaXRvcnlJZClcbiAgICAgICAgICAgIC50aGVuKChvYmplY3RVcmwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAod2luKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbi5sb2NhdGlvbiA9IG9iamVjdFVybDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHdpbikge1xuICAgICAgICAgICAgICAgICAgICB3aW4uY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGUgJiYgZS5jb2RlID09PSA0MDEpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRBcHBsaWNhdGlvbkhpc3RvcnkoKS5wdXNoKCcvbG9naW4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgLy8gSU1BR0Utc3R5bGUgcHJldmlldzogZmV0Y2ggdGhlIHN0b3JlZCBpbWFnZSB3aXRoIHRoZSB0ZW5hbnQgaGVhZGVyIGFuZCBob2xkIGl0IGFzIGFuIG9iamVjdCBVUkwuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHByb3BzLnN0eWxlICE9PSAnSU1BR0UnIHx8ICFVdGlscy5pc051bGwodmlld2VyRmlsZSlcbiAgICAgICAgICAgIHx8IFV0aWxzLmlzTnVsbChiYXNlLnZhbHVlKSB8fCBVdGlscy5pc051bGwoYmFzZS52YWx1ZS5kb2N1bWVudFJlcG9zaXRvcnlJZCkpIHtcbiAgICAgICAgICAgIHNldEltYWdlT2JqZWN0VXJsKG51bGwpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBhY3RpdmUgPSB0cnVlO1xuICAgICAgICBsZXQgY3JlYXRlZCA9IG51bGw7XG4gICAgICAgIGZldGNoRG9jdW1lbnRPYmplY3RVcmwoYmFzZS52YWx1ZS5kb2N1bWVudFJlcG9zaXRvcnlJZClcbiAgICAgICAgICAgIC50aGVuKChvYmplY3RVcmwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgPSBvYmplY3RVcmw7XG4gICAgICAgICAgICAgICAgICAgIHNldEltYWdlT2JqZWN0VXJsKG9iamVjdFVybCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChvYmplY3RVcmwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4ge30pO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoY3JlYXRlZCkge1xuICAgICAgICAgICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwoY3JlYXRlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfSwgW3Byb3BzLnN0eWxlLCB2aWV3ZXJGaWxlLCBiYXNlLnZhbHVlID8gYmFzZS52YWx1ZS5kb2N1bWVudFJlcG9zaXRvcnlJZCA6IG51bGxdKTtcblxuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9ICgpID0+IGV2ZW50ID0+IHtcbiAgICAgICAgbGV0IGZpbGVzID0gZXZlbnQudGFyZ2V0LmZpbGVzO1xuICAgICAgICB2YXIgYWxsRmlsZXMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IGZpbGUgPSBmaWxlc1tpXTtcbiAgICAgICAgICAgIGxldCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBmaWxlSW5mbyA9IHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBmaWxlLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgIHNpemU6IGZpbGUuc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgYmFzZTY0OiByZWFkZXIucmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICBmaWxlOiBmaWxlXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGFsbEZpbGVzLnB1c2goZmlsZUluZm8pO1xuICAgICAgICAgICAgICAgIGlmIChhbGxGaWxlcy5sZW5ndGggPT09IGZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobXVsdGlwbGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLm9uVXBsb2FkSGFuZGxlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5vblVwbG9hZEhhbmRsZXIoYWxsRmlsZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25VcGxvYWRIYW5kbGVyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLm9uVXBsb2FkSGFuZGxlcihhbGxGaWxlc1swXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRWaWV3ZXJGaWxlKGFsbEZpbGVzWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHNldEZpbGVzKGFsbEZpbGVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZWFkZXIub25sb2FkZW5kID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmZvcm0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWxlTWV0YURhdGEgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgZmlsZU1ldGFEYXRhLm5hbWUgPSBhbGxGaWxlc1swXS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICBmaWxlTWV0YURhdGEudHlwZSA9IGFsbEZpbGVzWzBdLnR5cGU7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVNZXRhRGF0YS5zaXplID0gYWxsRmlsZXNbMF0uc2l6ZTtcblxuICAgICAgICAgICAgICAgICAgICBpZihiYXNlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlTWV0YURhdGEuaWQgPSBiYXNlLnZhbHVlLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZU1ldGFEYXRhLmRvY3VtZW50UmVwb3NpdG9yeUlkID0gYmFzZS52YWx1ZS5kb2N1bWVudFJlcG9zaXRvcnlJZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICgnYmFzZTY0JyA9PT0gcGF5bG9hZFN0b3JhZ2VNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlTWV0YURhdGEucGF5bG9hZCA9IGFsbEZpbGVzWzBdLmJhc2U2NDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UuaGFuZGxlVmFsdWVDaGFuZ2UoZmlsZU1ldGFEYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVNZXRhRGF0YS5jb3JyZWxhdGlvbklkID0gcHJvcHMuY29uZmlnLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZU1ldGFEYXRhLmRvbWFpbiA9IHByb3BzLnZpZXdJZDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGUgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUuY29ycmVsYXRpb25JZCA9IGZpbGVNZXRhRGF0YS5jb3JyZWxhdGlvbklkO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5jb250ZW50ID0gYWxsRmlsZXNbMF0uZmlsZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2FjaGVJZC5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlSWQuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZChmaWxlTWV0YURhdGEsIGFsbEZpbGVzWzBdLmZpbGUsIHJlYWRlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWQoZmlsZU1ldGFEYXRhLCBhbGxGaWxlc1swXS5maWxlLCByZWFkZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICBhY2NlcHQ9e3Byb3BzLnN0eWxlID09PSAnSU1BR0UnID8gXCJpbWFnZS9qcGVnLGltYWdlL2dpZixpbWFnZS9wbmcsaW1hZ2UveC1lcHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiAocHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LmFjY2VwdCB8fCBcImFwcGxpY2F0aW9uL3BkZlwiKX1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmlucHV0fVxuICAgICAgICAgICAgICAgICAgICBpZD17YGNvbnRhaW5lZC1idXR0b24tZmlsZS0ke3Byb3BzLmNvbmZpZy5pZH1gfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17YmFzZS5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9e2Jhc2UucmVxdWlyZWR9XG4gICAgICAgICAgICAgICAgICAgIG11bHRpcGxlPXttdWx0aXBsZX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZSgpfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLnN0eWxlID09PSAnSU1BR0UnID9cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGh0bWxGb3I9e2Bjb250YWluZWQtYnV0dG9uLWZpbGUtJHtwcm9wcy5jb25maWcuaWR9YH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJjb250YWluZWRcIiBjb21wb25lbnQ9XCJzcGFuXCIgY2xhc3NOYW1lPXtjbGFzc2VzLmJ1dHRvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Jhc2UuZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZFJlcGVhdDogJ25vLXJlcGVhdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kU2l6ZTogJ2NvdmVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogYmFzZS5oYXNFcnJvciA/IFwiMXB4IHNvbGlkICNmNDQzMzZcIiA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogYmFzZS5oYXNFcnJvciA/IFwiI2Y0NDMzNlwiIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRJbWFnZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhVXRpbHMuaXNOdWxsKHZpZXdlckZpbGUpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHVybCgke3ZpZXdlckZpbGUuYmFzZTY0fSlgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIVV0aWxzLmlzTnVsbChpbWFnZU9iamVjdFVybCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHVybCgke2ltYWdlT2JqZWN0VXJsfSlgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgdXJsKCR7ZGVmYXVsdEltYWdlfSlgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZS5oYXNFcnJvciA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e2NvbG9yOiBcIiNmNDQzMzZcIiwgcGFkZGluZzogXCIwIDhweFwifX0+e2Jhc2UuZXJyb3JNZXNzYWdlfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IDpcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGh0bWxGb3I9e2Bjb250YWluZWQtYnV0dG9uLWZpbGUtJHtwcm9wcy5jb25maWcuaWR9YH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKjxCdXR0b24gdmFyaWFudD17cHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LmNvbG9yID09PSAnc2Vjb25kYXJ5JyB8fCBwcm9wcy5jb25maWcuYXR0cmlidXRlcz8uY29sb3IgPT09ICdwcmltYXJ5JyA/ICdjb250YWluZWQnIDogJ3RleHQnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17IVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuYXR0cmlidXRlcz8uY29sb3IpID9wcm9wcy5jb25maWcuYXR0cmlidXRlcz8uY29sb3IgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17YmFzZS5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmJ1dHRvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e1V0aWxzLm1lcmdlU3R5bGVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogYmFzZS5oYXNFcnJvciA/IFwiMXB4IHNvbGlkICNmNDQzMzZcIiA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogYmFzZS5oYXNFcnJvciA/IFwiI2Y0NDMzNlwiIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBwcm9wcy5jb25maWcpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEljb249ezxJY29uIGlkPXsnVVBMT0FEJ30vPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5sYWJlbCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5jb25maWcuYXR0cmlidXRlcz8ubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj4qL31cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwidGV4dFwiIGNvbXBvbmVudD1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17YmFzZS5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmJ1dHRvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogYmFzZS5oYXNFcnJvciA/IFwiMXB4IHNvbGlkICNmNDQzMzZcIiA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogYmFzZS5oYXNFcnJvciA/IFwiI2Y0NDMzNlwiIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEljb249ezxJY29uIGlkPXsnVVBMT0FEJ30vPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5sYWJlbCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5jb25maWcuYXR0cmlidXRlcz8ubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UuaGFzRXJyb3IgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tjb2xvcjogXCIjZjQ0MzM2XCIsIHBhZGRpbmc6IFwiMCA4cHhcIn19PntiYXNlLmVycm9yTWVzc2FnZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFVdGlscy5pc051bGwoYmFzZS52YWx1ZSkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmlzTnVsbChiYXNlLnZhbHVlLmlkKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UudmFsdWUubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9eycjJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5Eb2N1bWVudChiYXNlLnZhbHVlLmRvY3VtZW50UmVwb3NpdG9yeUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZS52YWx1ZS5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFiYXNlLmRpc2FibGVkICYmIG51bGxhYmxlICYmIGJhc2UudmFsdWUgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwibWVudS1saXN0LWdyb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZS5oYW5kbGVWYWx1ZUNoYW5nZShudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBjb250YWluZWQtYnV0dG9uLWZpbGUtJHtwcm9wcy5jb25maWcuaWR9YCkudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2FjaGVJZC5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKCkudGhlbigoKSA9PiBjYWNoZUlkLmN1cnJlbnQgPSBudWxsKS5jYXRjaCgoZSkgPT4ge30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnREVMRVRFJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb3BzLnNob3dWaWV3ZXIgJiYgIW11bHRpcGxlIHx8IHNob3cgP1xuICAgICAgICAgICAgICAgICAgICA8RG9jdW1lbnRWaWV3ZXJDb21wb25lbnQgZmlsZT17dmlld2VyRmlsZX0gb25Eb2N1bWVudExvYWRTdWNjZXNzPXtoYW5kbGVWaWV3ZXJMb2FkfS8+XG4gICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGhhc0Vycm9yID9cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc2VzLmVycm9yTWVzc2FnZURpc3BsYXl9PntlcnJvck1lc3NhZ2V9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgKTtcbn0pO1xuXG5leHBvcnQgY29uc3QgVXBsb2FkRmllbGQgPSBSZWFjdC5tZW1vKChwcm9wcykgPT4ge1xuICAgIGNvbnN0IFtmaWxlLCBzZXRGaWxlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGNsZWFyVHJpZ2dlcj0gUmVhY3QudXNlUmVmKGZhbHNlKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxCYXNlRmllbGQgey4uLnByb3BzfSBoYW5kbGU9e3Byb3BzLmhhbmRsZX0gdmFsdWVQYXJzZXI9eyh2YWx1ZSwgaW5ib3VuZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9fSB2YWx1ZUNoYW5nZUNhbGxiYWNrPXsodmFsdWUpID0+IHtcbiAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUcmlnZ2VyLmN1cnJlbnQgPSAhY2xlYXJUcmlnZ2VyLmN1cnJlbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfX0+XG4gICAgICAgICAgICB7YmFzZSA9PlxuICAgICAgICAgICAgICAgIDxEb2N1bWVudFVwbG9hZFxuICAgICAgICAgICAgICAgICAgICBiYXNlPXtiYXNlfVxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsRmlsZT17ZmlsZX1cbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUcmlnZ2VyPXtjbGVhclRyaWdnZXIuY3VycmVudH1cbiAgICAgICAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L0RvY3VtZW50VXBsb2FkPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L0Jhc2VGaWVsZD5cbiAgICApO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IFVwbG9hZEZpZWxkO1xuIl0sIm1hcHBp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
|
|
346
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9CdXR0b24iLCJfQmFzZUZpZWxkIiwiX3N0eWxlcyIsIl9Eb2N1bWVudFZpZXdlciIsIl9VdGlscyIsIl9BcHBsaWNhdGlvbk1hbmFnZXIiLCJfSWNvbkJ1dHRvbiIsIl9JY29uIiwiX3JlYWN0UHJvbWlzZVRyYWNrZXIiLCJfRXZlbnQiLCJfT2JzZXJ2YWJsZSIsIl9FdmVudFR5cGUiLCJfbm9pbWFnZSIsIl9kb2N1bWVudERvd25sb2FkIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwibiIsImFyZ3VtZW50cyIsImxlbmd0aCIsInQiLCJyIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5IiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImkiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsInVzZVN0eWxlcyIsIm1ha2VTdHlsZXMiLCJ0aGVtZSIsImJ1dHRvbiIsIm1hcmdpbiIsInNwYWNpbmciLCJpbnB1dCIsImRpc3BsYXkiLCJlcnJvck1lc3NhZ2VEaXNwbGF5IiwiY29sb3IiLCJzdGF0dXMiLCJyZXNwb25zZSIsIm9rIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJjb2RlIiwibWVzc2FnZSIsInN0YXR1c1RleHQiLCJqc29uIiwidGV4dCIsImxvY2F0aW9uIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsIkRvY3VtZW50VXBsb2FkIiwiZXhwb3J0cyIsIlJlYWN0IiwibWVtbyIsInByb3BzIiwiX2Jhc2UkdmFsdWUkZG9jdW1lbnRSNCIsIl9wcm9wcyRjb25maWckYXR0cmlidSIsIl9wcm9wcyRjb25maWckYXR0cmlidTIiLCJfcHJvcHMkY29uZmlnJGF0dHJpYnUzIiwidmlld2VyRmlsZSIsInNldFZpZXdlckZpbGUiLCJ1c2VTdGF0ZSIsIlV0aWxzIiwiaXNOdWxsIiwiaW5pdGlhbEZpbGUiLCJwYXlsb2FkU3RvcmFnZU1vZGUiLCJzZXRQYXlsb2FkU3RvcmFnZU1vZGUiLCJjb25maWciLCJmaWxlcyIsInNldEZpbGVzIiwibG9hZGluZyIsInNldExvYWRpbmciLCJudWxsYWJsZSIsInZhbGlkYXRvciIsIm11bHRpcGxlIiwic2hvdyIsInNldFNob3ciLCJjbGFzc2VzIiwiaGFzRXJyb3IiLCJzZXRIYXNFcnJvciIsIndpZHRoIiwiZ2V0Q29tcG9uZW50QXR0cmlidXRlIiwiaGVpZ2h0IiwiZXJyb3JNZXNzYWdlIiwic2V0RXJyb3JNZXNzYWdlIiwiaW1hZ2VPYmplY3RVcmwiLCJzZXRJbWFnZU9iamVjdFVybCIsImNhY2hlSWQiLCJ1c2VSZWYiLCJiYXNlIiwiZG9jdW1lbnRSZXBvc2l0b3J5Q2FjaGVJZCIsInVzZUVmZmVjdCIsImN1cnJlbnQiLCJoYW5kbGVWaWV3ZXJMb2FkIiwibnVtUGFnZXMiLCJ1cGxvYWQiLCJtZXRhZGF0YSIsImZpbGUiLCJyZWFkZXIiLCJ1cGxvYWRVcmwiLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJnZXRDb250ZXh0Um9vdCIsImFjY2Vzc1Rva2VuIiwic2Vzc2lvblN0b3JhZ2UiLCJnZXRJdGVtIiwiaWRUb2tlbiIsImRhdGEiLCJGb3JtRGF0YSIsImNvcnJlbGF0aW9uSWQiLCJ2aWV3SWQiLCJpZCIsInJvd0lkIiwiYXBwZW5kIiwiSlNPTiIsInN0cmluZ2lmeSIsImZldGNoQ29uZmlnIiwibWV0aG9kIiwiaGVhZGVycyIsImdldEFjdGl2ZVRlbmFudCIsImJvZHkiLCJ1cmwiLCJ0cmFja1Byb21pc2UiLCJmZXRjaCIsImVuY29kZVVSSSIsInRoZW4iLCJfYmFzZSR2YWx1ZSRkb2N1bWVudFIiLCJkb2N1bWVudFJlcG9zaXRvcnlJZCIsInJlcG9zaXRvcnlJZCIsImhhbmRsZVZhbHVlQ2hhbmdlIiwiZXZlbnQiLCJFdmVudCIsImhhbmRsZSIsInJlc3VsdCIsImV2ZW50TWFuYWdlciIsImZpcmVFdmVudCIsIkV2ZW50VHlwZSIsIkRPQ1VNRU5UX0NBQ0hFRCIsImNhdGNoIiwiY2xlYXIiLCJnZXRBcHBsaWNhdGlvbkhpc3RvcnkiLCJtZXNzYWdlVHlwZSIsIk1FU1NBR0VfQVJSSVZFRCIsInBheWxvYWQiLCJyZW1vdmUiLCJfYmFzZSR2YWx1ZSRkb2N1bWVudFIyIiwiX2Jhc2UkdmFsdWUkZG9jdW1lbnRSMyIsInN0eWxlIiwiYWN0aXZlIiwiY3JlYXRlZCIsImZldGNoRG9jdW1lbnRPYmplY3RVcmwiLCJvYmplY3RVcmwiLCJVUkwiLCJyZXZva2VPYmplY3RVUkwiLCJoYW5kbGVDaGFuZ2UiLCJ0YXJnZXQiLCJhbGxGaWxlcyIsIkZpbGVSZWFkZXIiLCJyZWFkQXNEYXRhVVJMIiwib25sb2FkIiwiZmlsZUluZm8iLCJuYW1lIiwidHlwZSIsInNpemUiLCJiYXNlNjQiLCJvblVwbG9hZEhhbmRsZXIiLCJvbmxvYWRlbmQiLCJmb3JtIiwiZmlsZU1ldGFEYXRhIiwiX2Jhc2UkdmFsdWUkZG9jdW1lbnRSNSIsImRvbWFpbiIsImNvbnRlbnQiLCJjcmVhdGVFbGVtZW50IiwiYWNjZXB0IiwiYXR0cmlidXRlcyIsImNsYXNzTmFtZSIsImNvbmNhdCIsImRpc2FibGVkIiwicmVxdWlyZWQiLCJvbkNoYW5nZSIsImh0bWxGb3IiLCJ2YXJpYW50IiwiY29tcG9uZW50IiwiYmFja2dyb3VuZFJlcGVhdCIsImJhY2tncm91bmRTaXplIiwiYmFja2dyb3VuZENvbG9yIiwiYm9yZGVyIiwiYmFja2dyb3VuZEltYWdlIiwiZGVmYXVsdEltYWdlIiwicGFkZGluZyIsInN0YXJ0SWNvbiIsImxhYmVsIiwiaHJlZiIsIm9uQ2xpY2siLCJfYmFzZSR2YWx1ZSRkb2N1bWVudFI2IiwicHJldmVudERlZmF1bHQiLCJkb3dubG9hZERvY3VtZW50IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsInNob3dWaWV3ZXIiLCJvbkRvY3VtZW50TG9hZFN1Y2Nlc3MiLCJVcGxvYWRGaWVsZCIsInNldEZpbGUiLCJjbGVhclRyaWdnZXIiLCJCYXNlRmllbGQiLCJ2YWx1ZVBhcnNlciIsImluYm91bmQiLCJ2YWx1ZUNoYW5nZUNhbGxiYWNrIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9VcGxvYWRGaWVsZC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCdXR0b24gZnJvbSAnQG11aS9tYXRlcmlhbC9CdXR0b24nO1xuaW1wb3J0IHtCYXNlRmllbGR9IGZyb20gXCIuL0Jhc2VGaWVsZFwiO1xuaW1wb3J0IHttYWtlU3R5bGVzfSBmcm9tICdAbXVpL3N0eWxlcyc7XG5pbXBvcnQgRG9jdW1lbnRWaWV3ZXJDb21wb25lbnQgZnJvbSBcIi4uL0RvY3VtZW50Vmlld2VyXCI7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vLi4vVXRpbHMnO1xuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tIFwiLi4vLi4vQXBwbGljYXRpb25NYW5hZ2VyXCI7XG5pbXBvcnQgSWNvbkJ1dHRvbiBmcm9tICdAbXVpL21hdGVyaWFsL0ljb25CdXR0b24nO1xuaW1wb3J0IEljb24gZnJvbSAnLi4vSWNvbic7XG5pbXBvcnQge3RyYWNrUHJvbWlzZX0gZnJvbSBcInJlYWN0LXByb21pc2UtdHJhY2tlclwiO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4uLy4uL2V2ZW50L0V2ZW50JztcbmltcG9ydCBldmVudE1hbmFnZXIgZnJvbSAnLi4vLi4vZXZlbnQvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgRXZlbnRUeXBlIGZyb20gJy4uLy4uL2V2ZW50L0V2ZW50VHlwZSc7XG5pbXBvcnQgZGVmYXVsdEltYWdlIGZyb20gJy4vbm9pbWFnZS5wbmcnO1xuaW1wb3J0IHtkb3dubG9hZERvY3VtZW50LCBmZXRjaERvY3VtZW50T2JqZWN0VXJsfSBmcm9tICcuLi8uLi9kb2N1bWVudERvd25sb2FkJztcblxuY29uc3QgdXNlU3R5bGVzID0gbWFrZVN0eWxlcyh0aGVtZSA9PiAoe1xuICAgIGJ1dHRvbjoge1xuICAgICAgICBtYXJnaW46IHRoZW1lLnNwYWNpbmcoMSksXG4gICAgfSxcbiAgICBpbnB1dDoge1xuICAgICAgICBkaXNwbGF5OiAnbm9uZScsXG4gICAgfSxcbiAgICBlcnJvck1lc3NhZ2VEaXNwbGF5OiB7XG4gICAgICAgIGNvbG9yOiAncmVkJ1xuICAgIH1cbn0pKTtcblxuY29uc3Qgc3RhdHVzID0gKHJlc3BvbnNlKSA9PiB7XG4gICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzcG9uc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh7Y29kZTogcmVzcG9uc2Uuc3RhdHVzLCBtZXNzYWdlOiByZXNwb25zZS5zdGF0dXNUZXh0fSk7XG4gICAgfVxufTtcblxuY29uc3QganNvbiA9IChyZXNwb25zZSkgPT4ge1xuICAgIHJldHVybiByZXNwb25zZS50ZXh0KCk7XG59O1xuXG5jb25zdCBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArIFwiLy9cIiArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcbmV4cG9ydCBjb25zdCBEb2N1bWVudFVwbG9hZCA9IFJlYWN0Lm1lbW8oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgW3ZpZXdlckZpbGUsIHNldFZpZXdlckZpbGVdID0gUmVhY3QudXNlU3RhdGUoIVV0aWxzLmlzTnVsbChwcm9wcy5pbml0aWFsRmlsZSkgPyBwcm9wcy5pbml0aWFsRmlsZSA6IG51bGwpO1xuICAgIGNvbnN0IFtwYXlsb2FkU3RvcmFnZU1vZGUsIHNldFBheWxvYWRTdG9yYWdlTW9kZV0gPSBSZWFjdC51c2VTdGF0ZShwcm9wcy5jb25maWcucGF5bG9hZFN0b3JhZ2VNb2RlIHx8ICdiYXNlNjQnKTtcbiAgICBjb25zdCBbZmlsZXMsIHNldEZpbGVzXSA9IFJlYWN0LnVzZVN0YXRlKCFVdGlscy5pc051bGwocHJvcHMuaW5pdGlhbEZpbGUpID8gW3Byb3BzLmluaXRpYWxGaWxlXSA6IG51bGwpO1xuICAgIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFtudWxsYWJsZV0gPSBSZWFjdC51c2VTdGF0ZShVdGlscy5pc051bGwocHJvcHMuY29uZmlnLnZhbGlkYXRvcikgfHwgcHJvcHMuY29uZmlnLnZhbGlkYXRvci5udWxsYWJsZSA9PT0gdHJ1ZSk7XG4gICAgY29uc3QgW211bHRpcGxlXSA9IFJlYWN0LnVzZVN0YXRlKHByb3BzLm11bHRpcGxlID09PSB0cnVlKTtcbiAgICBjb25zdCBbc2hvdywgc2V0U2hvd10gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgY2xhc3NlcyA9IHVzZVN0eWxlcygpO1xuICAgIGNvbnN0IFtoYXNFcnJvciwgc2V0SGFzRXJyb3JdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3Qgd2lkdGggPSBVdGlscy5nZXRDb21wb25lbnRBdHRyaWJ1dGUocHJvcHMuY29uZmlnLCAnd2lkdGgnLCAnMjAwcHgnKTtcbiAgICBjb25zdCBoZWlnaHQgPSBVdGlscy5nZXRDb21wb25lbnRBdHRyaWJ1dGUocHJvcHMuY29uZmlnLCAnaGVpZ2h0JywgJzIwMHB4Jyk7XG4gICAgY29uc3QgW2Vycm9yTWVzc2FnZSwgc2V0RXJyb3JNZXNzYWdlXSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpO1xuICAgIGNvbnN0IFtpbWFnZU9iamVjdFVybCwgc2V0SW1hZ2VPYmplY3RVcmxdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgY2FjaGVJZCA9IFJlYWN0LnVzZVJlZighVXRpbHMuaXNOdWxsKHByb3BzLmJhc2UudmFsdWUpID8gcHJvcHMuYmFzZS52YWx1ZS5kb2N1bWVudFJlcG9zaXRvcnlDYWNoZUlkIDogbnVsbCk7XG4gICAgY29uc3QgYmFzZSA9IHByb3BzLmJhc2U7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgaWYoY2FjaGVJZC5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgLy9yZW1vdmUoKS5jYXRjaCgoZSkgPT4ge30pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNldFZpZXdlckZpbGUocHJvcHMuaW5pdGlhbEZpbGUpO1xuICAgIH0sIFtwcm9wcy5pbml0aWFsRmlsZV0pO1xuXG4gICAgY29uc3QgaGFuZGxlVmlld2VyTG9hZCA9IChudW1QYWdlcykgPT4ge1xuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICB9O1xuXG4gICAgY29uc3QgdXBsb2FkID0gKG1ldGFkYXRhLCBmaWxlLCByZWFkZXIpID0+IHtcbiAgICAgICAgbGV0IHVwbG9hZFVybCA9IFV0aWxzLmdldENvbXBvbmVudEF0dHJpYnV0ZShwcm9wcy5jb25maWcsICd1cGxvYWRVcmwnLCBudWxsKTtcbiAgICAgICAgaWYodXBsb2FkVXJsID09PSBudWxsKSB7XG4gICAgICAgICAgICB1cGxvYWRVcmwgPSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKSArIFwiL2RvY3MvYXBpL3YxL21hbmFnZXIvdXBsb2FkL3NhdmVcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYXlsb2FkU3RvcmFnZU1vZGUgPSBwcm9wcy5jb25maWcucGF5bG9hZFN0b3JhZ2VNb2RlO1xuICAgICAgICBpZihwYXlsb2FkU3RvcmFnZU1vZGUgPT09ICdwb3N0Jyl7XG4gICAgICAgICAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJhY2Nlc3NUb2tlblwiKTtcbiAgICAgICAgICAgIGNvbnN0IGlkVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwiaWRUb2tlblwiKTtcbiAgICAgICAgICAgIGxldCBkYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgICBtZXRhZGF0YS5jb3JyZWxhdGlvbklkID0gcHJvcHMudmlld0lkICsgXCIuXCIgKyBwcm9wcy5jb25maWcuaWQgKyAocHJvcHMuY29uZmlnLnJvd0lkID8gXCIuXCIgKyBwcm9wcy5jb25maWcucm93SWQgOiBcIlwiKTtcbiAgICAgICAgICAgIGRhdGEuYXBwZW5kKFwibWV0YWRhdGFcIiwgSlNPTi5zdHJpbmdpZnkobWV0YWRhdGEpKTtcbiAgICAgICAgICAgIGRhdGEuYXBwZW5kKFwiZmlsZVwiLCBmaWxlKTtcblxuICAgICAgICAgICAgbGV0IGZldGNoQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyBhY2Nlc3NUb2tlbixcbiAgICAgICAgICAgICAgICAgICAgJ2lkVG9rZW4nOiBpZFRva2VuLFxuICAgICAgICAgICAgICAgICAgICAndGVuYW50JzogYXBwbGljYXRpb25NYW5hZ2VyLmdldEFjdGl2ZVRlbmFudCgpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBib2R5OiBkYXRhXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBsZXQgdXJsID0gbG9jYXRpb24gKyB1cGxvYWRVcmw7XG4gICAgICAgICAgICB0cmFja1Byb21pc2UoXG4gICAgICAgICAgICAgICAgZmV0Y2goZW5jb2RlVVJJKHVybCksIGZldGNoQ29uZmlnKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihzdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGpzb24pXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5kb2N1bWVudFJlcG9zaXRvcnlJZCA9ICFVdGlscy5pc051bGwoYmFzZS52YWx1ZSkgPyBiYXNlLnZhbHVlLmRvY3VtZW50UmVwb3NpdG9yeUlkID8/IGJhc2UudmFsdWUucmVwb3NpdG9yeUlkIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLmRvY3VtZW50UmVwb3NpdG9yeUNhY2hlSWQgPSBkYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVJZC5jdXJyZW50ID0gZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UuaGFuZGxlVmFsdWVDaGFuZ2UobWV0YWRhdGEpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLm1ldGFkYXRhLCB1cmw6IHJlYWRlci5yZXN1bHR9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLkRPQ1VNRU5UX0NBQ0hFRCwgZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaChcbiAgICAgICAgICAgICAgICAgICAgKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmNvZGUgPT09IDQwMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRBcHBsaWNhdGlvbkhpc3RvcnkoKS5wdXNoKCcvbG9naW4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVR5cGU6ICdFUlJPUicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ0FuIGVycm9yIGhhcyBhY2N1cnJlZCB3aGlsZSB1cGxvYWRpbmcgZmlsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChhcHBsaWNhdGlvbk1hbmFnZXIsIHByb3BzLnZpZXdJZCwgbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5NRVNTQUdFX0FSUklWRUQsIGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1ldGFkYXRhLnBheWxvYWQgPSByZWFkZXIucmVzdWx0O1xuICAgICAgICAgICAgYmFzZS5oYW5kbGVWYWx1ZUNoYW5nZShtZXRhZGF0YSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgcmVtb3ZlID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwiYWNjZXNzVG9rZW5cIik7XG4gICAgICAgICAgICBjb25zdCBpZFRva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcImlkVG9rZW5cIik7XG5cbiAgICAgICAgICAgIGxldCBmZXRjaENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyBhY2Nlc3NUb2tlbixcbiAgICAgICAgICAgICAgICAgICAgJ2lkVG9rZW4nOiBpZFRva2VuLFxuICAgICAgICAgICAgICAgICAgICAndGVuYW50JzogYXBwbGljYXRpb25NYW5hZ2VyLmdldEFjdGl2ZVRlbmFudCgpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgbGV0IHVybCA9IGxvY2F0aW9uICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCkgKyAnL2RvY3MvYXBpL3YxL21hbmFnZXIvdXBsb2FkL3JlbW92ZS8nICsgY2FjaGVJZC5jdXJyZW50O1xuICAgICAgICAgICAgdHJhY2tQcm9taXNlKFxuICAgICAgICAgICAgICAgIGZldGNoKGVuY29kZVVSSSh1cmwpLCBmZXRjaENvbmZpZylcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oc3RhdHVzKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKFxuICAgICAgICAgICAgICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuY29kZSA9PT0gNDAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmdldEFwcGxpY2F0aW9uSGlzdG9yeSgpLnB1c2goJy9sb2dpbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgfTtcblxuICAgIC8vIElNQUdFLXN0eWxlIHByZXZpZXc6IGZldGNoIHRoZSBzdG9yZWQgaW1hZ2UgKGhlYWRlciBhdXRoKSBhbmQgaG9sZCBpdCBhcyBhbiBvYmplY3QgVVJMLlxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChwcm9wcy5zdHlsZSAhPT0gJ0lNQUdFJyB8fCAhVXRpbHMuaXNOdWxsKHZpZXdlckZpbGUpXG4gICAgICAgICAgICB8fCBVdGlscy5pc051bGwoYmFzZS52YWx1ZSkgfHwgVXRpbHMuaXNOdWxsKGJhc2UudmFsdWUuZG9jdW1lbnRSZXBvc2l0b3J5SWQgPz8gYmFzZS52YWx1ZS5yZXBvc2l0b3J5SWQpKSB7XG4gICAgICAgICAgICBzZXRJbWFnZU9iamVjdFVybChudWxsKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgbGV0IGNyZWF0ZWQgPSBudWxsO1xuICAgICAgICBmZXRjaERvY3VtZW50T2JqZWN0VXJsKGJhc2UudmFsdWUuZG9jdW1lbnRSZXBvc2l0b3J5SWQgPz8gYmFzZS52YWx1ZS5yZXBvc2l0b3J5SWQpXG4gICAgICAgICAgICAudGhlbigob2JqZWN0VXJsKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICBjcmVhdGVkID0gb2JqZWN0VXJsO1xuICAgICAgICAgICAgICAgICAgICBzZXRJbWFnZU9iamVjdFVybChvYmplY3RVcmwpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwob2JqZWN0VXJsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHt9KTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKGNyZWF0ZWQpIHtcbiAgICAgICAgICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGNyZWF0ZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0sIFtwcm9wcy5zdHlsZSwgdmlld2VyRmlsZSwgYmFzZS52YWx1ZSA/IGJhc2UudmFsdWUuZG9jdW1lbnRSZXBvc2l0b3J5SWQgPz8gYmFzZS52YWx1ZS5yZXBvc2l0b3J5SWQgOiBudWxsXSk7XG5cbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoKSA9PiBldmVudCA9PiB7XG4gICAgICAgIGxldCBmaWxlcyA9IGV2ZW50LnRhcmdldC5maWxlcztcbiAgICAgICAgdmFyIGFsbEZpbGVzID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBmaWxlID0gZmlsZXNbaV07XG4gICAgICAgICAgICBsZXQgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgZmlsZUluZm8gPSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogZmlsZS50eXBlLFxuICAgICAgICAgICAgICAgICAgICBzaXplOiBmaWxlLnNpemUsXG4gICAgICAgICAgICAgICAgICAgIGJhc2U2NDogcmVhZGVyLnJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgZmlsZTogZmlsZVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBhbGxGaWxlcy5wdXNoKGZpbGVJbmZvKTtcbiAgICAgICAgICAgICAgICBpZiAoYWxsRmlsZXMubGVuZ3RoID09PSBmaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG11bHRpcGxlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5vblVwbG9hZEhhbmRsZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMub25VcGxvYWRIYW5kbGVyKGFsbEZpbGVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLm9uVXBsb2FkSGFuZGxlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5vblVwbG9hZEhhbmRsZXIoYWxsRmlsZXNbMF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0Vmlld2VyRmlsZShhbGxGaWxlc1swXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzZXRGaWxlcyhhbGxGaWxlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5mb3JtKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZmlsZU1ldGFEYXRhID0ge307XG4gICAgICAgICAgICAgICAgICAgIGZpbGVNZXRhRGF0YS5uYW1lID0gYWxsRmlsZXNbMF0ubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgZmlsZU1ldGFEYXRhLnR5cGUgPSBhbGxGaWxlc1swXS50eXBlO1xuICAgICAgICAgICAgICAgICAgICBmaWxlTWV0YURhdGEuc2l6ZSA9IGFsbEZpbGVzWzBdLnNpemU7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYoYmFzZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZU1ldGFEYXRhLmlkID0gYmFzZS52YWx1ZS5pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVNZXRhRGF0YS5kb2N1bWVudFJlcG9zaXRvcnlJZCA9IGJhc2UudmFsdWUuZG9jdW1lbnRSZXBvc2l0b3J5SWQgPz8gYmFzZS52YWx1ZS5yZXBvc2l0b3J5SWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoJ2Jhc2U2NCcgPT09IHBheWxvYWRTdG9yYWdlTW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZU1ldGFEYXRhLnBheWxvYWQgPSBhbGxGaWxlc1swXS5iYXNlNjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYXNlLmhhbmRsZVZhbHVlQ2hhbmdlKGZpbGVNZXRhRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlTWV0YURhdGEuY29ycmVsYXRpb25JZCA9IHByb3BzLmNvbmZpZy5pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVNZXRhRGF0YS5kb21haW4gPSBwcm9wcy52aWV3SWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWxlID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlLmNvcnJlbGF0aW9uSWQgPSBmaWxlTWV0YURhdGEuY29ycmVsYXRpb25JZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUuY29udGVudCA9IGFsbEZpbGVzWzBdLmZpbGU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNhY2hlSWQuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZUlkLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWQoZmlsZU1ldGFEYXRhLCBhbGxGaWxlc1swXS5maWxlLCByZWFkZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkKGZpbGVNZXRhRGF0YSwgYWxsRmlsZXNbMF0uZmlsZSwgcmVhZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgYWNjZXB0PXtwcm9wcy5zdHlsZSA9PT0gJ0lNQUdFJyA/IFwiaW1hZ2UvanBlZyxpbWFnZS9naWYsaW1hZ2UvcG5nLGltYWdlL3gtZXBzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogKHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5hY2NlcHQgfHwgXCJhcHBsaWNhdGlvbi9wZGZcIil9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5pbnB1dH1cbiAgICAgICAgICAgICAgICAgICAgaWQ9e2Bjb250YWluZWQtYnV0dG9uLWZpbGUtJHtwcm9wcy5jb25maWcuaWR9YH1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Jhc2UuZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPXtiYXNlLnJlcXVpcmVkfVxuICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZT17bXVsdGlwbGV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2UoKX1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5zdHlsZSA9PT0gJ0lNQUdFJyA/XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBodG1sRm9yPXtgY29udGFpbmVkLWJ1dHRvbi1maWxlLSR7cHJvcHMuY29uZmlnLmlkfWB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiY29udGFpbmVkXCIgY29tcG9uZW50PVwic3BhblwiIGNsYXNzTmFtZT17Y2xhc3Nlcy5idXR0b259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtiYXNlLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRSZXBlYXQ6ICduby1yZXBlYXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZFNpemU6ICdjb3ZlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IGJhc2UuaGFzRXJyb3IgPyBcIjFweCBzb2xpZCAjZjQ0MzM2XCIgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGJhc2UuaGFzRXJyb3IgPyBcIiNmNDQzMzZcIiA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2U6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIVV0aWxzLmlzTnVsbCh2aWV3ZXJGaWxlKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB1cmwoJHt2aWV3ZXJGaWxlLmJhc2U2NH0pYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFVdGlscy5pc051bGwoaW1hZ2VPYmplY3RVcmwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB1cmwoJHtpbWFnZU9iamVjdFVybH0pYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHVybCgke2RlZmF1bHRJbWFnZX0pYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UuaGFzRXJyb3IgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tjb2xvcjogXCIjZjQ0MzM2XCIsIHBhZGRpbmc6IFwiMCA4cHhcIn19PntiYXNlLmVycm9yTWVzc2FnZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBodG1sRm9yPXtgY29udGFpbmVkLWJ1dHRvbi1maWxlLSR7cHJvcHMuY29uZmlnLmlkfWB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Lyo8QnV0dG9uIHZhcmlhbnQ9e3Byb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5jb2xvciA9PT0gJ3NlY29uZGFyeScgfHwgcHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LmNvbG9yID09PSAncHJpbWFyeScgPyAnY29udGFpbmVkJyA6ICd0ZXh0J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9eyFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LmNvbG9yKSA/cHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LmNvbG9yIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Jhc2UuZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5idXR0b259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtVdGlscy5tZXJnZVN0eWxlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IGJhc2UuaGFzRXJyb3IgPyBcIjFweCBzb2xpZCAjZjQ0MzM2XCIgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGJhc2UuaGFzRXJyb3IgPyBcIiNmNDQzMzZcIiA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgcHJvcHMuY29uZmlnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRJY29uPXs8SWNvbiBpZD17J1VQTE9BRCd9Lz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5jb25maWcuYXR0cmlidXRlcz8ubGFiZWwgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LmxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+Ki99XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInRleHRcIiBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Jhc2UuZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5idXR0b259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IGJhc2UuaGFzRXJyb3IgPyBcIjFweCBzb2xpZCAjZjQ0MzM2XCIgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGJhc2UuaGFzRXJyb3IgPyBcIiNmNDQzMzZcIiA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRJY29uPXs8SWNvbiBpZD17J1VQTE9BRCd9Lz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5jb25maWcuYXR0cmlidXRlcz8ubGFiZWwgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LmxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlLmhhc0Vycm9yID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7Y29sb3I6IFwiI2Y0NDMzNlwiLCBwYWRkaW5nOiBcIjAgOHB4XCJ9fT57YmFzZS5lcnJvck1lc3NhZ2V9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhVXRpbHMuaXNOdWxsKGJhc2UudmFsdWUpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlscy5pc051bGwoYmFzZS52YWx1ZS5pZCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlLnZhbHVlLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPXsnIyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZERvY3VtZW50KGJhc2UudmFsdWUuZG9jdW1lbnRSZXBvc2l0b3J5SWQgPz8gYmFzZS52YWx1ZS5yZXBvc2l0b3J5SWQsIGJhc2UudmFsdWUubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UudmFsdWUubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhYmFzZS5kaXNhYmxlZCAmJiBudWxsYWJsZSAmJiBiYXNlLnZhbHVlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1jb250cm9scz1cIm1lbnUtbGlzdC1ncm93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UuaGFuZGxlVmFsdWVDaGFuZ2UobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgY29udGFpbmVkLWJ1dHRvbi1maWxlLSR7cHJvcHMuY29uZmlnLmlkfWApLnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNhY2hlSWQuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZSgpLnRoZW4oKCkgPT4gY2FjaGVJZC5jdXJyZW50ID0gbnVsbCkuY2F0Y2goKGUpID0+IHt9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17J0RFTEVURSd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm9wcy5zaG93Vmlld2VyICYmICFtdWx0aXBsZSB8fCBzaG93ID9cbiAgICAgICAgICAgICAgICAgICAgPERvY3VtZW50Vmlld2VyQ29tcG9uZW50IGZpbGU9e3ZpZXdlckZpbGV9IG9uRG9jdW1lbnRMb2FkU3VjY2Vzcz17aGFuZGxlVmlld2VyTG9hZH0vPlxuICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBoYXNFcnJvciA/XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y2xhc3Nlcy5lcnJvck1lc3NhZ2VEaXNwbGF5fT57ZXJyb3JNZXNzYWdlfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICBcIlwiXG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59KTtcblxuZXhwb3J0IGNvbnN0IFVwbG9hZEZpZWxkID0gUmVhY3QubWVtbygocHJvcHMpID0+IHtcbiAgICBjb25zdCBbZmlsZSwgc2V0RmlsZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBjbGVhclRyaWdnZXI9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8QmFzZUZpZWxkIHsuLi5wcm9wc30gaGFuZGxlPXtwcm9wcy5oYW5kbGV9IHZhbHVlUGFyc2VyPXsodmFsdWUsIGluYm91bmQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfX0gdmFsdWVDaGFuZ2VDYWxsYmFjaz17KHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNsZWFyVHJpZ2dlci5jdXJyZW50ID0gIWNsZWFyVHJpZ2dlci5jdXJyZW50XG4gICAgICAgICAgICB9XG4gICAgICAgIH19PlxuICAgICAgICAgICAge2Jhc2UgPT5cbiAgICAgICAgICAgICAgICA8RG9jdW1lbnRVcGxvYWRcbiAgICAgICAgICAgICAgICAgICAgYmFzZT17YmFzZX1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbEZpbGU9e2ZpbGV9XG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVHJpZ2dlcj17Y2xlYXJUcmlnZ2VyLmN1cnJlbnR9XG4gICAgICAgICAgICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9Eb2N1bWVudFVwbG9hZD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9CYXNlRmllbGQ+XG4gICAgKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBVcGxvYWRGaWVsZDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUMsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0QsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksZUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssTUFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sbUJBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLEtBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFTLG9CQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxNQUFBLEdBQUFYLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBVyxXQUFBLEdBQUFaLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBWSxVQUFBLEdBQUFiLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBYSxRQUFBLEdBQUFkLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBYyxpQkFBQSxHQUFBZCxPQUFBO0FBQWdGLFNBQUFELHVCQUFBZ0IsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUFBLFNBQUFHLFNBQUEsV0FBQUEsUUFBQSxHQUFBQyxNQUFBLENBQUFDLE1BQUEsR0FBQUQsTUFBQSxDQUFBQyxNQUFBLENBQUFDLElBQUEsZUFBQUMsQ0FBQSxhQUFBUCxDQUFBLE1BQUFBLENB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
|