single-scripture-rcl 3.2.4 → 3.2.6
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/components/ScriptureCard/ScriptureCard.js +55 -291
- package/dist/components/ScripturePane/ScripturePane.js +8 -83
- package/dist/hooks/useScripture.js +6 -100
- package/dist/hooks/useScriptureResources.js +3 -14
- package/dist/hooks/useScriptureSettings.js +4 -9
- package/dist/utils/ScriptureSettings.js +1 -1
- package/package.json +7 -20
- package/dist/hooks/useScriptureAlignmentEdit.js +0 -633
|
@@ -1,27 +1,21 @@
|
|
|
1
1
|
import "core-js/modules/es.array.concat.js";
|
|
2
|
+
import "core-js/modules/es.array.includes.js";
|
|
2
3
|
import "core-js/modules/es.array.is-array.js";
|
|
4
|
+
import "core-js/modules/es.string.includes.js";
|
|
3
5
|
import "regenerator-runtime/runtime.js";
|
|
4
6
|
|
|
5
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
6
|
-
|
|
7
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
8
|
-
|
|
9
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
|
|
10
|
-
|
|
11
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
12
|
-
|
|
13
7
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
14
8
|
|
|
15
9
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
16
10
|
|
|
17
|
-
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
18
|
-
|
|
19
11
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
20
12
|
|
|
21
13
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
22
14
|
|
|
23
15
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
24
16
|
|
|
17
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
18
|
+
|
|
25
19
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
26
20
|
|
|
27
21
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -36,18 +30,11 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
|
36
30
|
|
|
37
31
|
import * as React from 'react';
|
|
38
32
|
import * as PropTypes from 'prop-types';
|
|
39
|
-
import {
|
|
40
|
-
import { Card, useCardState, useUserBranch, ERROR_STATE, MANIFEST_NOT_LOADED_ERROR } from 'translation-helps-rcl';
|
|
41
|
-
import { WordAligner } from 'word-aligner-rcl';
|
|
42
|
-
import CheckOutlinedIcon from '@mui/icons-material/CheckOutlined';
|
|
43
|
-
import CancelOutlinedIcon from '@mui/icons-material/CancelOutlined';
|
|
44
|
-
import { IconButton } from '@mui/material';
|
|
33
|
+
import { Card, useCardState, ERROR_STATE, MANIFEST_NOT_LOADED_ERROR } from 'translation-helps-rcl';
|
|
45
34
|
import { ScripturePane, ScriptureSelector } from '..';
|
|
46
35
|
import { useScriptureSettings } from '../../hooks/useScriptureSettings';
|
|
47
36
|
import { getResourceLink, getResourceMessage, getScriptureVersionSettings, isOriginalBible } from '../../utils/ScriptureSettings';
|
|
48
37
|
import { Title } from '../ScripturePane/styled';
|
|
49
|
-
import { NT_ORIG_LANG, ORIGINAL_SOURCE, OT_ORIG_LANG } from '../../utils';
|
|
50
|
-
import { useScriptureAlignmentEdit } from '../../hooks/useScriptureAlignmentEdit';
|
|
51
38
|
var KEY_FONT_SIZE_BASE = 'scripturePaneFontSize_';
|
|
52
39
|
var label = 'Version';
|
|
53
40
|
var style = {
|
|
@@ -55,7 +42,7 @@ var style = {
|
|
|
55
42
|
width: '500px'
|
|
56
43
|
};
|
|
57
44
|
export default function ScriptureCard(_ref) {
|
|
58
|
-
var _scriptureConfig$
|
|
45
|
+
var _scriptureConfig$reso2, _scriptureConfig$reso3;
|
|
59
46
|
|
|
60
47
|
var id = _ref.id,
|
|
61
48
|
isNT = _ref.isNT,
|
|
@@ -85,55 +72,25 @@ export default function ScriptureCard(_ref) {
|
|
|
85
72
|
fetchGlossesForVerse = _ref.fetchGlossesForVerse,
|
|
86
73
|
translate = _ref.translate,
|
|
87
74
|
onMinimize = _ref.onMinimize,
|
|
88
|
-
|
|
89
|
-
authentication = _ref.authentication,
|
|
90
|
-
setSavedChanges = _ref.setSavedChanges,
|
|
91
|
-
bookIndex = _ref.bookIndex;
|
|
92
|
-
|
|
93
|
-
var _React$useState = React.useState({
|
|
94
|
-
currentVerseNum: 0,
|
|
95
|
-
//TODO will be used in future when need to support multiple verses in card
|
|
96
|
-
ref: appRef,
|
|
97
|
-
urlError: null,
|
|
98
|
-
usingUserBranch: false
|
|
99
|
-
}),
|
|
100
|
-
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
101
|
-
state = _React$useState2[0],
|
|
102
|
-
setState_ = _React$useState2[1];
|
|
75
|
+
addVerseRange = _ref.addVerseRange;
|
|
103
76
|
|
|
104
|
-
var
|
|
105
|
-
|
|
106
|
-
urlError =
|
|
107
|
-
|
|
77
|
+
var _React$useState = React.useState(null),
|
|
78
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
79
|
+
urlError = _React$useState2[0],
|
|
80
|
+
setUrlError = _React$useState2[1];
|
|
108
81
|
|
|
109
82
|
var _useUserLocalStorage = useUserLocalStorage(KEY_FONT_SIZE_BASE + cardNum, 100),
|
|
110
83
|
_useUserLocalStorage2 = _slicedToArray(_useUserLocalStorage, 2),
|
|
111
84
|
fontSize = _useUserLocalStorage2[0],
|
|
112
85
|
setFontSize = _useUserLocalStorage2[1];
|
|
113
86
|
|
|
114
|
-
var isNT_ = isNT(bookId);
|
|
115
|
-
|
|
116
|
-
function setState(newState) {
|
|
117
|
-
setState_(function (prevState) {
|
|
118
|
-
return _objectSpread(_objectSpread({}, prevState), newState);
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
if (usingUserBranch) {
|
|
123
|
-
httpConfig = _objectSpread(_objectSpread({}, httpConfig), {}, {
|
|
124
|
-
cache: {
|
|
125
|
-
maxAge: 0
|
|
126
|
-
}
|
|
127
|
-
}); // disable http caching
|
|
128
|
-
}
|
|
129
|
-
|
|
130
87
|
var _useScriptureSettings = useScriptureSettings({
|
|
131
88
|
isNT: isNT,
|
|
132
89
|
title: title,
|
|
133
90
|
verse: verse,
|
|
134
91
|
owner: owner,
|
|
135
92
|
bookId: bookId,
|
|
136
|
-
appRef:
|
|
93
|
+
appRef: appRef,
|
|
137
94
|
server: server,
|
|
138
95
|
cardNum: cardNum,
|
|
139
96
|
chapter: chapter,
|
|
@@ -143,77 +100,20 @@ export default function ScriptureCard(_ref) {
|
|
|
143
100
|
useUserLocalStorage: useUserLocalStorage,
|
|
144
101
|
disableWordPopover: disableWordPopover,
|
|
145
102
|
originalLanguageOwner: originalLanguageOwner,
|
|
146
|
-
setUrlError:
|
|
147
|
-
return setState({
|
|
148
|
-
urlError: error
|
|
149
|
-
});
|
|
150
|
-
},
|
|
103
|
+
setUrlError: setUrlError,
|
|
151
104
|
httpConfig: httpConfig,
|
|
152
105
|
greekRepoUrl: greekRepoUrl,
|
|
153
|
-
hebrewRepoUrl: hebrewRepoUrl
|
|
154
|
-
wholeBook: true
|
|
106
|
+
hebrewRepoUrl: hebrewRepoUrl
|
|
155
107
|
}),
|
|
156
|
-
isNewTestament = _useScriptureSettings.isNewTestament,
|
|
157
108
|
scriptureConfig = _useScriptureSettings.scriptureConfig,
|
|
158
109
|
setScripture = _useScriptureSettings.setScripture,
|
|
159
|
-
|
|
160
|
-
scriptureVersionHist = _useScriptureSettings.scriptureVersionHist; // @ts-ignore
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
var cardResourceId = (scriptureConfig === null || scriptureConfig === void 0 ? void 0 : (_scriptureConfig$reso = scriptureConfig.resource) === null || _scriptureConfig$reso === void 0 ? void 0 : _scriptureConfig$reso.projectId) || resourceId;
|
|
164
|
-
var currentVerseData_ = (scriptureConfig === null || scriptureConfig === void 0 ? void 0 : (_scriptureConfig$vers = scriptureConfig.versesForRef) === null || _scriptureConfig$vers === void 0 ? void 0 : _scriptureConfig$vers[currentVerseNum]) || null;
|
|
165
|
-
var initialVerseObjects = (currentVerseData_ === null || currentVerseData_ === void 0 ? void 0 : (_currentVerseData_$ve = currentVerseData_.verseData) === null || _currentVerseData_$ve === void 0 ? void 0 : _currentVerseData_$ve.verseObjects) || null; // @ts-ignore
|
|
166
|
-
|
|
167
|
-
var ref_ = (scriptureConfig === null || scriptureConfig === void 0 ? void 0 : (_scriptureConfig$reso2 = scriptureConfig.resource) === null || _scriptureConfig$reso2 === void 0 ? void 0 : _scriptureConfig$reso2.ref) || appRef;
|
|
168
|
-
var canUseEditBranch = loggedInUser && authentication && resourceId !== ORIGINAL_SOURCE && (ref_ === 'master' || ref_.substring(0, loggedInUser.length) === loggedInUser); // not tag
|
|
169
|
-
|
|
170
|
-
var _useUserBranch = useUserBranch({
|
|
171
|
-
owner: owner,
|
|
172
|
-
server: server,
|
|
173
|
-
appRef: appRef,
|
|
174
|
-
languageId: languageId,
|
|
175
|
-
cardId: id,
|
|
176
|
-
loggedInUser: canUseEditBranch ? loggedInUser : null,
|
|
177
|
-
authentication: canUseEditBranch ? authentication : null,
|
|
178
|
-
cardResourceId: cardResourceId,
|
|
179
|
-
onResourceError: onResourceError,
|
|
180
|
-
useUserLocalStorage: useUserLocalStorage
|
|
181
|
-
}),
|
|
182
|
-
_useUserBranch$state = _useUserBranch.state,
|
|
183
|
-
workingResourceBranch = _useUserBranch$state.workingResourceBranch,
|
|
184
|
-
usingUserBranch_ = _useUserBranch$state.usingUserBranch,
|
|
185
|
-
startEditBranch = _useUserBranch.actions.startEdit;
|
|
110
|
+
scriptureVersionHist = _useScriptureSettings.scriptureVersionHist;
|
|
186
111
|
|
|
187
|
-
var workingRef = canUseEditBranch ? workingResourceBranch : appRef;
|
|
188
|
-
var reference_ = {
|
|
189
|
-
bookId: bookId,
|
|
190
|
-
chapter: chapter,
|
|
191
|
-
verse: verse
|
|
192
|
-
};
|
|
193
112
|
var scriptureTitle;
|
|
194
113
|
React.useEffect(function () {
|
|
195
|
-
|
|
196
|
-
if (usingUserBranch_ !== usingUserBranch) {
|
|
197
|
-
setState({
|
|
198
|
-
usingUserBranch: usingUserBranch_
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
}, [usingUserBranch_, usingUserBranch]);
|
|
202
|
-
React.useEffect(function () {
|
|
203
|
-
// select correct working ref - could be master, user branch, or release
|
|
204
|
-
var workingRef_ = workingRef || appRef;
|
|
205
|
-
|
|
206
|
-
if (ref !== workingRef_) {
|
|
207
|
-
setState({
|
|
208
|
-
ref: workingRef_
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
}, [workingRef, ref, appRef]);
|
|
212
|
-
React.useEffect(function () {
|
|
213
|
-
var _scriptureConfig$reso3;
|
|
114
|
+
var _scriptureConfig$reso;
|
|
214
115
|
|
|
215
|
-
|
|
216
|
-
var error = scriptureConfig === null || scriptureConfig === void 0 ? void 0 : (_scriptureConfig$reso3 = scriptureConfig.resourceStatus) === null || _scriptureConfig$reso3 === void 0 ? void 0 : _scriptureConfig$reso3[ERROR_STATE];
|
|
116
|
+
var error = scriptureConfig === null || scriptureConfig === void 0 ? void 0 : (_scriptureConfig$reso = scriptureConfig.resourceStatus) === null || _scriptureConfig$reso === void 0 ? void 0 : _scriptureConfig$reso[ERROR_STATE];
|
|
217
117
|
|
|
218
118
|
if (error) {
|
|
219
119
|
// if error was found do callback
|
|
@@ -221,11 +121,11 @@ export default function ScriptureCard(_ref) {
|
|
|
221
121
|
|
|
222
122
|
var _resourceLink = getResourceLink(scriptureConfig);
|
|
223
123
|
|
|
224
|
-
var message = getResourceMessage(resourceStatus, server, _resourceLink,
|
|
124
|
+
var message = getResourceMessage(resourceStatus, server, _resourceLink, isNT(bookId));
|
|
225
125
|
var isAccessError = resourceStatus[MANIFEST_NOT_LOADED_ERROR];
|
|
226
126
|
onResourceError && onResourceError(message, isAccessError, resourceStatus);
|
|
227
127
|
}
|
|
228
|
-
}, [scriptureConfig === null || scriptureConfig === void 0 ? void 0 : (_scriptureConfig$
|
|
128
|
+
}, [scriptureConfig === null || scriptureConfig === void 0 ? void 0 : (_scriptureConfig$reso2 = scriptureConfig.resourceStatus) === null || _scriptureConfig$reso2 === void 0 ? void 0 : _scriptureConfig$reso2[ERROR_STATE]]);
|
|
229
129
|
|
|
230
130
|
if (scriptureConfig.title && scriptureConfig.version) {
|
|
231
131
|
scriptureTitle = "".concat(scriptureConfig.title, " v").concat(scriptureConfig.version);
|
|
@@ -251,13 +151,11 @@ export default function ScriptureCard(_ref) {
|
|
|
251
151
|
|
|
252
152
|
function onMenuClose() {
|
|
253
153
|
// console.log(`onMenuClose()`)
|
|
254
|
-
|
|
255
|
-
urlError: null
|
|
256
|
-
});
|
|
154
|
+
setUrlError(null); // clear any error messages
|
|
257
155
|
} // @ts-ignore
|
|
258
156
|
|
|
259
157
|
|
|
260
|
-
var languageId_ = scriptureConfig === null || scriptureConfig === void 0 ? void 0 : (_scriptureConfig$
|
|
158
|
+
var languageId_ = scriptureConfig === null || scriptureConfig === void 0 ? void 0 : (_scriptureConfig$reso3 = scriptureConfig.resource) === null || _scriptureConfig$reso3 === void 0 ? void 0 : _scriptureConfig$reso3.languageId;
|
|
261
159
|
var language = getLanguage({
|
|
262
160
|
languageId: languageId_
|
|
263
161
|
});
|
|
@@ -290,42 +188,40 @@ export default function ScriptureCard(_ref) {
|
|
|
290
188
|
setItemIndex = _useCardState$actions.setItemIndex,
|
|
291
189
|
setMarkdownView = _useCardState$actions.setMarkdownView;
|
|
292
190
|
|
|
293
|
-
var refStyle =
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
fontFamily: 'Noto Sans',
|
|
302
|
-
fontSize: "".concat(scaledFontSize, "%")
|
|
303
|
-
};
|
|
304
|
-
}, [scaledFontSize]);
|
|
191
|
+
var refStyle = {
|
|
192
|
+
fontFamily: 'Noto Sans',
|
|
193
|
+
fontSize: "".concat(Math.round(scaledFontSize * 0.9), "%")
|
|
194
|
+
};
|
|
195
|
+
var contentStyle = {
|
|
196
|
+
fontFamily: 'Noto Sans',
|
|
197
|
+
fontSize: "".concat(scaledFontSize, "%")
|
|
198
|
+
};
|
|
305
199
|
var scriptureLabel = /*#__PURE__*/React.createElement(Title, null, scriptureTitle);
|
|
306
200
|
var disableWordPopover_ = disableWordPopover;
|
|
307
|
-
var usingOriginalBible = isOriginalBible((_scriptureConfig$reso6 = scriptureConfig['resource']) === null || _scriptureConfig$reso6 === void 0 ? void 0 : _scriptureConfig$reso6.projectId);
|
|
308
201
|
|
|
309
202
|
if (disableWordPopover === undefined) {
|
|
203
|
+
var _scriptureConfig$reso4;
|
|
204
|
+
|
|
310
205
|
// if not specified, then determine if original language resource
|
|
311
|
-
disableWordPopover_ = !
|
|
206
|
+
disableWordPopover_ = !isOriginalBible((_scriptureConfig$reso4 = scriptureConfig['resource']) === null || _scriptureConfig$reso4 === void 0 ? void 0 : _scriptureConfig$reso4.projectId);
|
|
312
207
|
}
|
|
313
208
|
|
|
314
209
|
React.useEffect(function () {
|
|
315
|
-
// pre-cache glosses on verse change
|
|
316
210
|
var fetchGlossDataForVerse = /*#__PURE__*/function () {
|
|
317
211
|
var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
|
|
212
|
+
var _scriptureConfig$vers;
|
|
213
|
+
|
|
318
214
|
return regeneratorRuntime.wrap(function _callee$(_context) {
|
|
319
215
|
while (1) {
|
|
320
216
|
switch (_context.prev = _context.next) {
|
|
321
217
|
case 0:
|
|
322
|
-
if (!(!disableWordPopover &&
|
|
218
|
+
if (!(!disableWordPopover && scriptureConfig !== null && scriptureConfig !== void 0 && (_scriptureConfig$vers = scriptureConfig.verseObjects) !== null && _scriptureConfig$vers !== void 0 && _scriptureConfig$vers.length && fetchGlossesForVerse)) {
|
|
323
219
|
_context.next = 3;
|
|
324
220
|
break;
|
|
325
221
|
}
|
|
326
222
|
|
|
327
223
|
_context.next = 3;
|
|
328
|
-
return fetchGlossesForVerse(
|
|
224
|
+
return fetchGlossesForVerse(scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.verseObjects, languageId_);
|
|
329
225
|
|
|
330
226
|
case 3:
|
|
331
227
|
case "end":
|
|
@@ -341,82 +237,20 @@ export default function ScriptureCard(_ref) {
|
|
|
341
237
|
}();
|
|
342
238
|
|
|
343
239
|
fetchGlossDataForVerse();
|
|
344
|
-
}, [
|
|
345
|
-
var enableEdit = !usingOriginalBible;
|
|
346
|
-
var enableAlignment = !usingOriginalBible;
|
|
347
|
-
var originalRepoUrl = isNewTestament ? greekRepoUrl : hebrewRepoUrl;
|
|
348
|
-
|
|
349
|
-
var _useScriptureAlignmen = useScriptureAlignmentEdit({
|
|
350
|
-
authentication: canUseEditBranch ? authentication : null,
|
|
351
|
-
enableEdit: enableEdit,
|
|
352
|
-
enableAlignment: enableAlignment,
|
|
353
|
-
httpConfig: httpConfig,
|
|
354
|
-
initialVerseObjects: initialVerseObjects,
|
|
355
|
-
isNewTestament: isNewTestament,
|
|
356
|
-
// @ts-ignore
|
|
357
|
-
loggedInUser: canUseEditBranch ? loggedInUser : null,
|
|
358
|
-
originalLanguageOwner: originalLanguageOwner,
|
|
359
|
-
originalRepoUrl: originalRepoUrl,
|
|
360
|
-
// @ts-ignore
|
|
361
|
-
scriptureConfig: scriptureConfig,
|
|
362
|
-
scriptureSettings: scriptureSettings,
|
|
363
|
-
startEditBranch: startEditBranch,
|
|
364
|
-
bookIndex: bookIndex,
|
|
365
|
-
workingResourceBranch: ref,
|
|
366
|
-
currentVerseNum: currentVerseNum
|
|
367
|
-
}),
|
|
368
|
-
_useScriptureAlignmen2 = _useScriptureAlignmen.actions,
|
|
369
|
-
cancelAlignment = _useScriptureAlignmen2.cancelAlignment,
|
|
370
|
-
currentVerseObjects = _useScriptureAlignmen2.currentVerseObjects,
|
|
371
|
-
handleAlignmentClick = _useScriptureAlignmen2.handleAlignmentClick,
|
|
372
|
-
onAlignmentsChange = _useScriptureAlignmen2.onAlignmentsChange,
|
|
373
|
-
saveAlignment = _useScriptureAlignmen2.saveAlignment,
|
|
374
|
-
setEditing = _useScriptureAlignmen2.setEditing,
|
|
375
|
-
setVerseChanged = _useScriptureAlignmen2.setVerseChanged,
|
|
376
|
-
saveChangesToCloud = _useScriptureAlignmen2.saveChangesToCloud,
|
|
377
|
-
_useScriptureAlignmen3 = _useScriptureAlignmen.state,
|
|
378
|
-
aligned = _useScriptureAlignmen3.aligned,
|
|
379
|
-
alignerData = _useScriptureAlignmen3.alignerData,
|
|
380
|
-
editing = _useScriptureAlignmen3.editing,
|
|
381
|
-
unsavedChanges = _useScriptureAlignmen3.unsavedChanges;
|
|
382
|
-
|
|
240
|
+
}, [scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.verseObjects]);
|
|
383
241
|
React.useEffect(function () {
|
|
384
|
-
//
|
|
385
|
-
var
|
|
386
|
-
setSavedChanges && setSavedChanges(resourceId, !unsavedChanges_);
|
|
387
|
-
}, [unsavedChanges, alignerData]);
|
|
388
|
-
|
|
389
|
-
function showPopover(PopoverTitle, wordDetails, positionCoord, rawData) {
|
|
390
|
-
// TODO: make show popover pretty
|
|
391
|
-
console.log("showPopover", rawData);
|
|
392
|
-
window.prompt("User clicked on ".concat(JSON.stringify(rawData.token)));
|
|
393
|
-
}
|
|
242
|
+
// check for verse range
|
|
243
|
+
var _verse = scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.matchedVerse;
|
|
394
244
|
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
var items = _ref3.items;
|
|
400
|
-
return [].concat(_toConsumableArray(items), [/*#__PURE__*/React.createElement(IconButton, {
|
|
401
|
-
className: classes.margin,
|
|
402
|
-
key: "checking-button",
|
|
403
|
-
onClick: function onClick() {
|
|
404
|
-
return handleAlignmentClick();
|
|
405
|
-
},
|
|
406
|
-
title: titleText,
|
|
407
|
-
"aria-label": titleText,
|
|
408
|
-
style: {
|
|
409
|
-
cursor: 'pointer'
|
|
410
|
-
}
|
|
411
|
-
}, checkingState === 'valid' ? /*#__PURE__*/React.createElement(RxLink2, {
|
|
412
|
-
id: "valid_icon",
|
|
413
|
-
color: "#BBB"
|
|
414
|
-
}) : /*#__PURE__*/React.createElement(RxLinkBreak2, {
|
|
415
|
-
id: "invalid_icon",
|
|
416
|
-
color: "#000"
|
|
417
|
-
}))]);
|
|
418
|
-
};
|
|
245
|
+
if (addVerseRange && typeof _verse === 'string') {
|
|
246
|
+
// @ts-ignore
|
|
247
|
+
if (_verse.includes('-')) {
|
|
248
|
+
var _scriptureConfig$refe;
|
|
419
249
|
|
|
250
|
+
addVerseRange("".concat(scriptureConfig === null || scriptureConfig === void 0 ? void 0 : (_scriptureConfig$refe = scriptureConfig.reference) === null || _scriptureConfig$refe === void 0 ? void 0 : _scriptureConfig$refe.chapter, ":").concat(_verse));
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}, [scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.matchedVerse]);
|
|
420
254
|
return /*#__PURE__*/React.createElement(Card, {
|
|
421
255
|
id: "scripture_card_".concat(cardNum),
|
|
422
256
|
title: scriptureLabel,
|
|
@@ -437,69 +271,11 @@ export default function ScriptureCard(_ref) {
|
|
|
437
271
|
onMenuClose: onMenuClose,
|
|
438
272
|
onMinimize: onMinimize ? function () {
|
|
439
273
|
return onMinimize(id);
|
|
440
|
-
} : null
|
|
441
|
-
|
|
442
|
-
saved: !unsavedChanges,
|
|
443
|
-
onSaveEdit: saveChangesToCloud,
|
|
444
|
-
onBlur: function onBlur() {
|
|
445
|
-
return setEditing(false);
|
|
446
|
-
},
|
|
447
|
-
onRenderToolbar: onRenderToolbar
|
|
448
|
-
}, alignerData ? /*#__PURE__*/React.createElement("div", {
|
|
449
|
-
style: {
|
|
450
|
-
flexDirection: 'column'
|
|
451
|
-
}
|
|
452
|
-
}, /*#__PURE__*/React.createElement(WordAligner, {
|
|
453
|
-
style: {
|
|
454
|
-
maxHeight: '450px',
|
|
455
|
-
overflowY: 'auto'
|
|
456
|
-
},
|
|
457
|
-
verseAlignments: alignerData.alignments,
|
|
458
|
-
targetWords: alignerData.wordBank,
|
|
459
|
-
translate: translate,
|
|
460
|
-
contextId: {
|
|
461
|
-
reference: reference_
|
|
462
|
-
},
|
|
463
|
-
targetLanguage: language,
|
|
464
|
-
targetLanguageFont: '',
|
|
465
|
-
sourceLanguage: isNT_ ? NT_ORIG_LANG : OT_ORIG_LANG,
|
|
466
|
-
showPopover: showPopover,
|
|
467
|
-
lexicons: {},
|
|
468
|
-
loadLexiconEntry: getLexiconData,
|
|
469
|
-
onChange: function onChange(results) {
|
|
470
|
-
return onAlignmentsChange(results);
|
|
471
|
-
}
|
|
472
|
-
}), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("div", {
|
|
473
|
-
style: {
|
|
474
|
-
width: '100%'
|
|
475
|
-
}
|
|
476
|
-
}, /*#__PURE__*/React.createElement(IconButton, {
|
|
477
|
-
disabled: false,
|
|
478
|
-
className: classes.margin,
|
|
479
|
-
key: "alignment-save",
|
|
480
|
-
onClick: function onClick() {
|
|
481
|
-
return saveAlignment();
|
|
482
|
-
},
|
|
483
|
-
"aria-label": 'Alignment Save'
|
|
484
|
-
}, /*#__PURE__*/React.createElement(CheckOutlinedIcon, {
|
|
485
|
-
id: "alignment-save-icon",
|
|
486
|
-
htmlColor: "#000"
|
|
487
|
-
})), /*#__PURE__*/React.createElement(IconButton, {
|
|
488
|
-
disabled: false,
|
|
489
|
-
className: classes.margin,
|
|
490
|
-
key: "alignment-cancel",
|
|
491
|
-
onClick: function onClick() {
|
|
492
|
-
return cancelAlignment();
|
|
493
|
-
},
|
|
494
|
-
"aria-label": 'Alignment Cancel'
|
|
495
|
-
}, /*#__PURE__*/React.createElement(CancelOutlinedIcon, {
|
|
496
|
-
id: "alignment-cancel-icon",
|
|
497
|
-
htmlColor: "#000"
|
|
498
|
-
})))) : /*#__PURE__*/React.createElement(ScripturePane, _extends({
|
|
274
|
+
} : null
|
|
275
|
+
}, /*#__PURE__*/React.createElement(ScripturePane, _extends({
|
|
499
276
|
refStyle: refStyle
|
|
500
277
|
}, scriptureConfig, {
|
|
501
|
-
|
|
502
|
-
isNT: isNT_,
|
|
278
|
+
isNT: isNT(bookId),
|
|
503
279
|
server: server,
|
|
504
280
|
reference: reference,
|
|
505
281
|
direction: direction,
|
|
@@ -507,14 +283,11 @@ export default function ScriptureCard(_ref) {
|
|
|
507
283
|
fontSize: fontSize,
|
|
508
284
|
disableWordPopover: disableWordPopover_,
|
|
509
285
|
getLexiconData: getLexiconData,
|
|
510
|
-
translate: translate
|
|
511
|
-
editing: editing,
|
|
512
|
-
setEditing: setEditing,
|
|
513
|
-
setVerseChanged: setVerseChanged
|
|
286
|
+
translate: translate
|
|
514
287
|
})));
|
|
515
288
|
}
|
|
516
289
|
ScriptureCard.propTypes = {
|
|
517
|
-
/**
|
|
290
|
+
/** identifier to use for card */
|
|
518
291
|
id: PropTypes.string,
|
|
519
292
|
|
|
520
293
|
/** method to determine if NT or OT */
|
|
@@ -599,16 +372,7 @@ ScriptureCard.propTypes = {
|
|
|
599
372
|
/** function to minimize the card (optional) */
|
|
600
373
|
onMinimize: PropTypes.func,
|
|
601
374
|
|
|
602
|
-
/**
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
/** authentication info */
|
|
606
|
-
authentication: PropTypes.object,
|
|
607
|
-
|
|
608
|
-
/** function to set state in app that there are unsaved changes */
|
|
609
|
-
setSavedChanges: PropTypes.func,
|
|
610
|
-
|
|
611
|
-
/** index for current book (e.g. '01' for 'gen')*/
|
|
612
|
-
bookIndex: PropTypes.string
|
|
375
|
+
/** callback to indicate that we are using a verse range here */
|
|
376
|
+
addVerseRange: PropTypes.func
|
|
613
377
|
};
|
|
614
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJSeExpbmsyIiwiUnhMaW5rQnJlYWsyIiwiQ2FyZCIsInVzZUNhcmRTdGF0ZSIsInVzZVVzZXJCcmFuY2giLCJFUlJPUl9TVEFURSIsIk1BTklGRVNUX05PVF9MT0FERURfRVJST1IiLCJXb3JkQWxpZ25lciIsIkNoZWNrT3V0bGluZWRJY29uIiwiQ2FuY2VsT3V0bGluZWRJY29uIiwiSWNvbkJ1dHRvbiIsIlNjcmlwdHVyZVBhbmUiLCJTY3JpcHR1cmVTZWxlY3RvciIsInVzZVNjcmlwdHVyZVNldHRpbmdzIiwiZ2V0UmVzb3VyY2VMaW5rIiwiZ2V0UmVzb3VyY2VNZXNzYWdlIiwiZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzIiwiaXNPcmlnaW5hbEJpYmxlIiwiVGl0bGUiLCJOVF9PUklHX0xBTkciLCJPUklHSU5BTF9TT1VSQ0UiLCJPVF9PUklHX0xBTkciLCJ1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0IiwiS0VZX0ZPTlRfU0laRV9CQVNFIiwibGFiZWwiLCJzdHlsZSIsIm1hcmdpblRvcCIsIndpZHRoIiwiU2NyaXB0dXJlQ2FyZCIsImlkIiwiaXNOVCIsInRpdGxlIiwic2VydmVyIiwiYXBwUmVmIiwiY2FyZE51bSIsImNsYXNzZXMiLCJyZXNvdXJjZSIsIm93bmVyIiwibGFuZ3VhZ2VJZCIsInJlc291cmNlSWQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJnZXRMYW5ndWFnZSIsInJlZmVyZW5jZSIsInZlcnNlIiwiY2hhcHRlciIsImJvb2tJZCIsInByb2plY3RJZCIsInJlc291cmNlTGluayIsInVzZVVzZXJMb2NhbFN0b3JhZ2UiLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJvblJlc291cmNlRXJyb3IiLCJodHRwQ29uZmlnIiwiZ3JlZWtSZXBvVXJsIiwiaGVicmV3UmVwb1VybCIsImdldExleGljb25EYXRhIiwiZmV0Y2hHbG9zc2VzRm9yVmVyc2UiLCJ0cmFuc2xhdGUiLCJvbk1pbmltaXplIiwibG9nZ2VkSW5Vc2VyIiwiYXV0aGVudGljYXRpb24iLCJzZXRTYXZlZENoYW5nZXMiLCJib29rSW5kZXgiLCJ1c2VTdGF0ZSIsImN1cnJlbnRWZXJzZU51bSIsInJlZiIsInVybEVycm9yIiwidXNpbmdVc2VyQnJhbmNoIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJmb250U2l6ZSIsInNldEZvbnRTaXplIiwiaXNOVF8iLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiY2FjaGUiLCJtYXhBZ2UiLCJzZXRVcmxFcnJvciIsImVycm9yIiwid2hvbGVCb29rIiwiaXNOZXdUZXN0YW1lbnQiLCJzY3JpcHR1cmVDb25maWciLCJzZXRTY3JpcHR1cmUiLCJzY3JpcHR1cmVTZXR0aW5ncyIsInNjcmlwdHVyZVZlcnNpb25IaXN0IiwiY2FyZFJlc291cmNlSWQiLCJjdXJyZW50VmVyc2VEYXRhXyIsInZlcnNlc0ZvclJlZiIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJ2ZXJzZURhdGEiLCJ2ZXJzZU9iamVjdHMiLCJyZWZfIiwiY2FuVXNlRWRpdEJyYW5jaCIsInN1YnN0cmluZyIsImxlbmd0aCIsImNhcmRJZCIsIndvcmtpbmdSZXNvdXJjZUJyYW5jaCIsInVzaW5nVXNlckJyYW5jaF8iLCJzdGFydEVkaXRCcmFuY2giLCJhY3Rpb25zIiwic3RhcnRFZGl0Iiwid29ya2luZ1JlZiIsInJlZmVyZW5jZV8iLCJzY3JpcHR1cmVUaXRsZSIsInVzZUVmZmVjdCIsIndvcmtpbmdSZWZfIiwicmVzb3VyY2VTdGF0dXMiLCJtZXNzYWdlIiwiaXNBY2Nlc3NFcnJvciIsInZlcnNpb24iLCJ1cGRhdGVUaXRsZSIsImdldFNjcmlwdHVyZVNlbGVjdG9yIiwic2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnIiwib25NZW51Q2xvc2UiLCJsYW5ndWFnZUlkXyIsImxhbmd1YWdlIiwiZGlyZWN0aW9uIiwiaXNIZWJyZXciLCJmb250RmFjdG9yIiwic2NhbGVkRm9udFNpemUiLCJtYXRjaGVkVmVyc2UiLCJpdGVtcyIsImhlYWRlcnMiLCJmaWx0ZXJzIiwiaXRlbUluZGV4IiwibWFya2Rvd25WaWV3Iiwic2V0RmlsdGVycyIsInNldEl0ZW1JbmRleCIsInNldE1hcmtkb3duVmlldyIsInJlZlN0eWxlIiwidXNlTWVtbyIsImZvbnRGYW1pbHkiLCJNYXRoIiwicm91bmQiLCJjb250ZW50U3R5bGUiLCJzY3JpcHR1cmVMYWJlbCIsImRpc2FibGVXb3JkUG9wb3Zlcl8iLCJ1c2luZ09yaWdpbmFsQmlibGUiLCJ1bmRlZmluZWQiLCJmZXRjaEdsb3NzRGF0YUZvclZlcnNlIiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsIm9yaWdpbmFsUmVwb1VybCIsImNhbmNlbEFsaWdubWVudCIsImN1cnJlbnRWZXJzZU9iamVjdHMiLCJoYW5kbGVBbGlnbm1lbnRDbGljayIsIm9uQWxpZ25tZW50c0NoYW5nZSIsInNhdmVBbGlnbm1lbnQiLCJzZXRFZGl0aW5nIiwic2V0VmVyc2VDaGFuZ2VkIiwic2F2ZUNoYW5nZXNUb0Nsb3VkIiwiYWxpZ25lZCIsImFsaWduZXJEYXRhIiwiZWRpdGluZyIsInVuc2F2ZWRDaGFuZ2VzIiwidW5zYXZlZENoYW5nZXNfIiwic2hvd1BvcG92ZXIiLCJQb3BvdmVyVGl0bGUiLCJ3b3JkRGV0YWlscyIsInBvc2l0aW9uQ29vcmQiLCJyYXdEYXRhIiwiY29uc29sZSIsImxvZyIsIndpbmRvdyIsInByb21wdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0b2tlbiIsImNoZWNraW5nU3RhdGUiLCJ0aXRsZVRleHQiLCJvblJlbmRlclRvb2xiYXIiLCJtYXJnaW4iLCJjdXJzb3IiLCJmbGV4RGlyZWN0aW9uIiwibWF4SGVpZ2h0Iiwib3ZlcmZsb3dZIiwiYWxpZ25tZW50cyIsIndvcmRCYW5rIiwicmVzdWx0cyIsInByb3BUeXBlcyIsInN0cmluZyIsImZ1bmMiLCJpc1JlcXVpcmVkIiwibnVt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QUNFcEksRUFBQUEsZUFBZSxFQUFFbkQsU0FBUyxDQUFDc0wsSUE5Q0g7O0FBK0N4QjtBQUNBbEksRUFBQUEsVUFBVSxFQUFFcEQsU0FBUyxDQUFDNEwsTUFoREU7O0FBaUR4QjtBQUNBdkksRUFBQUEsWUFBWSxFQUFFckQsU0FBUyxDQUFDcUwsTUFsREE7O0FBbUR4QjtBQUNBL0gsRUFBQUEsYUFBYSxFQUFFdEQsU0FBUyxDQUFDcUwsTUFwREQ7O0FBcUR4QjtBQUNBOUgsRUFBQUEsY0FBYyxFQUFFdkQsU0FBUyxDQUFDc0wsSUF0REY7O0FBdUR4QjtBQUNBOUgsRUFBQUEsb0JBQW9CLEVBQUV4RCxTQUFTLENBQUNzTCxJQXhEUjs7QUF5RHhCO0FBQ0E3SCxFQUFBQSxTQUFTLEVBQUV6RCxTQUFTLENBQUNzTCxJQTFERzs7QUEyRHhCO0FBQ0E1SCxFQUFBQSxVQUFVLEVBQUUxRCxTQUFTLENBQUNzTCxJQTVERTs7QUE2RHhCO0FBQ0EzSCxFQUFBQSxZQUFZLEVBQUUzRCxTQUFTLENBQUNxTCxNQTlEQTs7QUErRHhCO0FBQ0F6SCxFQUFBQSxjQUFjLEVBQUU1RCxTQUFTLENBQUM0TCxNQWhFRjs7QUFpRXhCO0FBQ0EvSCxFQUFBQSxlQUFlLEVBQUU3RCxTQUFTLENBQUNzTCxJQWxFSDs7QUFtRXhCO0FBQ0F4SCxFQUFBQSxTQUFTLEVBQUU5RCxTQUFTLENBQUNxTDtBQXBFRyxDQUExQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBSeExpbmsyLCBSeExpbmtCcmVhazIgfSBmcm9tICdyZWFjdC1pY29ucy9yeCdcblxuaW1wb3J0IHtcbiAgQ2FyZCxcbiAgdXNlQ2FyZFN0YXRlLFxuICB1c2VVc2VyQnJhbmNoLFxuICBFUlJPUl9TVEFURSxcbiAgTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUixcbn0gZnJvbSAndHJhbnNsYXRpb24taGVscHMtcmNsJ1xuaW1wb3J0IHsgV29yZEFsaWduZXIgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0IENoZWNrT3V0bGluZWRJY29uIGZyb20gJ0BtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tPdXRsaW5lZCdcbmltcG9ydCBDYW5jZWxPdXRsaW5lZEljb24gZnJvbSAnQG11aS9pY29ucy1tYXRlcmlhbC9DYW5jZWxPdXRsaW5lZCdcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUGFuZSwgU2NyaXB0dXJlU2VsZWN0b3IgfSBmcm9tICcuLidcbmltcG9ydCB7IHVzZVNjcmlwdHVyZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQge1xuICBnZXRSZXNvdXJjZUxpbmssXG4gIGdldFJlc291cmNlTWVzc2FnZSxcbiAgZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzLFxuICBpc09yaWdpbmFsQmlibGUsXG59IGZyb20gJy4uLy4uL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICcuLi9TY3JpcHR1cmVQYW5lL3N0eWxlZCdcbmltcG9ydCB7XG4gIE5UX09SSUdfTEFORyxcbiAgT1JJR0lOQUxfU09VUkNFLFxuICBPVF9PUklHX0xBTkcsXG59IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZVNjcmlwdHVyZUFsaWdubWVudEVkaXQnXG5cbmNvbnN0IEtFWV9GT05UX1NJWkVfQkFTRSA9ICdzY3JpcHR1cmVQYW5lRm9udFNpemVfJ1xuY29uc3QgbGFiZWwgPSAnVmVyc2lvbidcbmNvbnN0IHN0eWxlID0geyBtYXJnaW5Ub3A6ICcxNnB4Jywgd2lkdGg6ICc1MDBweCcgfVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTY3JpcHR1cmVDYXJkKHtcbiAgaWQsXG4gIGlzTlQsXG4gIHRpdGxlLFxuICBzZXJ2ZXIsXG4gIGFwcFJlZixcbiAgY2FyZE51bSxcbiAgY2xhc3NlcyxcbiAgcmVzb3VyY2U6IHtcbiAgICBvd25lcixcbiAgICBsYW5ndWFnZUlkLFxuICAgIHJlc291cmNlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICB9LFxuICBnZXRMYW5ndWFnZSxcbiAgcmVmZXJlbmNlOiB7XG4gICAgdmVyc2UsXG4gICAgY2hhcHRlcixcbiAgICBwcm9qZWN0SWQ6IGJvb2tJZCxcbiAgfSxcbiAgcmVzb3VyY2VMaW5rLFxuICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIG9uUmVzb3VyY2VFcnJvcixcbiAgaHR0cENvbmZpZyxcbiAgZ3JlZWtSZXBvVXJsLFxuICBoZWJyZXdSZXBvVXJsLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgZmV0Y2hHbG9zc2VzRm9yVmVyc2UsXG4gIHRyYW5zbGF0ZSxcbiAgb25NaW5pbWl6ZSxcbiAgbG9nZ2VkSW5Vc2VyLFxuICBhdXRoZW50aWNhdGlvbixcbiAgc2V0U2F2ZWRDaGFuZ2VzLFxuICBib29rSW5kZXgsXG59KSB7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBjdXJyZW50VmVyc2VOdW06IDAsIC8vVE9ETyB3aWxsIGJlIHVzZWQgaW4gZnV0dXJlIHdoZW4gbmVlZCB0byBzdXBwb3J0IG11bHRpcGxlIHZlcnNlcyBpbiBjYXJkXG4gICAgcmVmOiBhcHBSZWYsXG4gICAgdXJsRXJyb3I6IG51bGwsXG4gICAgdXNpbmdVc2VyQnJhbmNoOiBmYWxzZSxcbiAgfSlcbiAgY29uc3Qge1xuICAgIGN1cnJlbnRWZXJzZU51bSxcbiAgICByZWYsXG4gICAgdXJsRXJyb3IsXG4gICAgdXNpbmdVc2VyQnJhbmNoLFxuICB9ID0gc3RhdGVcblxuICBjb25zdCBbZm9udFNpemUsIHNldEZvbnRTaXplXSA9IHVzZVVzZXJMb2NhbFN0b3JhZ2UoS0VZX0ZPTlRfU0laRV9CQVNFICsgY2FyZE51bSwgMTAwKVxuICBjb25zdCBpc05UXyA9IGlzTlQoYm9va0lkKVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgaWYgKHVzaW5nVXNlckJyYW5jaCkge1xuICAgIGh0dHBDb25maWcgPSB7IC4uLmh0dHBDb25maWcsIGNhY2hlOiB7IG1heEFnZTogMCB9IH0gLy8gZGlzYWJsZSBodHRwIGNhY2hpbmdcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBpc05ld1Rlc3RhbWVudCxcbiAgICBzY3JpcHR1cmVDb25maWcsXG4gICAgc2V0U2NyaXB0dXJlLFxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LFxuICB9ID0gdXNlU2NyaXB0dXJlU2V0dGluZ3Moe1xuICAgIGlzTlQsXG4gICAgdGl0bGUsXG4gICAgdmVyc2UsXG4gICAgb3duZXIsXG4gICAgYm9va0lkLFxuICAgIGFwcFJlZjogcmVmLFxuICAgIHNlcnZlcixcbiAgICBjYXJkTnVtLFxuICAgIGNoYXB0ZXIsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICByZXNvdXJjZUlkLFxuICAgIHJlc291cmNlTGluayxcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICAgIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgc2V0VXJsRXJyb3I6IChlcnJvcikgPT4gc2V0U3RhdGUoeyB1cmxFcnJvcjogZXJyb3IgfSksXG4gICAgaHR0cENvbmZpZyxcbiAgICBncmVla1JlcG9VcmwsXG4gICAgaGVicmV3UmVwb1VybCxcbiAgICB3aG9sZUJvb2s6IHRydWUsXG4gIH0pXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBjYXJkUmVzb3VyY2VJZCA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnByb2plY3RJZCB8fCByZXNvdXJjZUlkXG4gIGNvbnN0IGN1cnJlbnRWZXJzZURhdGFfID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWY/LltjdXJyZW50VmVyc2VOdW1dIHx8IG51bGxcbiAgY29uc3QgaW5pdGlhbFZlcnNlT2JqZWN0cyA9IGN1cnJlbnRWZXJzZURhdGFfPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0cyB8fCBudWxsXG4gIC8vIEB0cy1pZ25vcmVcbiAgbGV0IHJlZl8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5yZWYgfHwgYXBwUmVmXG4gIGNvbnN0IGNhblVzZUVkaXRCcmFuY2ggPSBsb2dnZWRJblVzZXIgJiYgYXV0aGVudGljYXRpb24gJiZcbiAgICAocmVzb3VyY2VJZCAhPT0gT1JJR0lOQUxfU09VUkNFKSAmJlxuICAgICgocmVmXyA9PT0gJ21hc3RlcicpIHx8IChyZWZfLnN1YnN0cmluZygwLCBsb2dnZWRJblVzZXIubGVuZ3RoKSA9PT0gbG9nZ2VkSW5Vc2VyKSApIC8vIG5vdCB0YWdcblxuICBjb25zdCB7XG4gICAgc3RhdGU6IHsgd29ya2luZ1Jlc291cmNlQnJhbmNoLCB1c2luZ1VzZXJCcmFuY2g6IHVzaW5nVXNlckJyYW5jaF8gfSxcbiAgICBhY3Rpb25zOiB7IHN0YXJ0RWRpdDogc3RhcnRFZGl0QnJhbmNoIH0sXG4gIH0gPSB1c2VVc2VyQnJhbmNoKHtcbiAgICBvd25lcixcbiAgICBzZXJ2ZXIsXG4gICAgYXBwUmVmLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgY2FyZElkOiBpZCxcbiAgICBsb2dnZWRJblVzZXI6IGNhblVzZUVkaXRCcmFuY2ggPyBsb2dnZWRJblVzZXIgOiBudWxsLFxuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGNhcmRSZXNvdXJjZUlkLFxuICAgIG9uUmVzb3VyY2VFcnJvcixcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICB9KVxuXG4gIGNvbnN0IHdvcmtpbmdSZWYgPSBjYW5Vc2VFZGl0QnJhbmNoID8gd29ya2luZ1Jlc291cmNlQnJhbmNoIDogYXBwUmVmXG4gIGNvbnN0IHJlZmVyZW5jZV8gPSB7IGJvb2tJZCwgY2hhcHRlciwgdmVyc2UgfVxuICBsZXQgc2NyaXB0dXJlVGl0bGVcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBzZWxlY3QgY29ycmVjdCB3b3JraW5nIHJlZiAtIGNvdWxkIGJlIG1hc3RlciwgdXNlciBicmFuY2gsIG9yIHJlbGVhc2VcbiAgICBpZiAodXNpbmdVc2VyQnJhbmNoXyAhPT0gdXNpbmdVc2VyQnJhbmNoKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVzaW5nVXNlckJyYW5jaDogdXNpbmdVc2VyQnJhbmNoXyB9KVxuICAgIH1cbiAgfSwgW3VzaW5nVXNlckJyYW5jaF8sIHVzaW5nVXNlckJyYW5jaF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gc2VsZWN0IGNvcnJlY3Qgd29ya2luZyByZWYgLSBjb3VsZCBiZSBtYXN0ZXIsIHVzZXIgYnJhbmNoLCBvciByZWxlYXNlXG4gICAgbGV0IHdvcmtpbmdSZWZfID0gd29ya2luZ1JlZiB8fCBhcHBSZWZcblxuICAgIGlmIChyZWYgIT09IHdvcmtpbmdSZWZfKSB7XG4gICAgICBzZXRTdGF0ZSh7IHJlZjogd29ya2luZ1JlZl8gfSlcbiAgICB9XG4gIH0sIFt3b3JraW5nUmVmLCByZWYsIGFwcFJlZl0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gdXBkYXRlIGRpc3BsYXkgc3RhdHVzIGlmIGVycm9yXG4gICAgY29uc3QgZXJyb3IgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXG5cbiAgICBpZiAoZXJyb3IpIHsgLy8gaWYgZXJyb3Igd2FzIGZvdW5kIGRvIGNhbGxiYWNrXG4gICAgICBjb25zdCByZXNvdXJjZVN0YXR1cyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXNcbiAgICAgIGNvbnN0IHJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayhzY3JpcHR1cmVDb25maWcpXG4gICAgICBjb25zdCBtZXNzYWdlID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVF8pXG4gICAgICBjb25zdCBpc0FjY2Vzc0Vycm9yID0gcmVzb3VyY2VTdGF0dXNbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl1cbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobWVzc2FnZSwgaXNBY2Nlc3NFcnJvciwgcmVzb3VyY2VTdGF0dXMpXG4gICAgfVxuICB9LCBbc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXSwgb25SZXNvdXJjZUVycm9yXSlcblxuICBpZiAoc2NyaXB0dXJlQ29uZmlnLnRpdGxlICYmIHNjcmlwdHVyZUNvbmZpZy52ZXJzaW9uKSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgJHtzY3JpcHR1cmVDb25maWcudGl0bGV9IHYke3NjcmlwdHVyZUNvbmZpZy52ZXJzaW9ufWBcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdC51cGRhdGVUaXRsZShzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLCBzY3JpcHR1cmVUaXRsZSlcbiAgfSBlbHNlIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGBUaXRsZSBtaXNzaW5nIGZyb20gcHJvamVjdCBtYW5pZmVzdGBcbiAgfVxuXG4gIC8qKiBEeW5hbWljYWxseSBjcmVhdGVzIHRoZSBzY3JpcHR1cmUgc2VsZWN0aW9uIGRyb3Bkb3duIHRvIGJlIGluc2VydGVkIGludG8gY2FyZCBzZXR0aW5ncyAqL1xuICBmdW5jdGlvbiBnZXRTY3JpcHR1cmVTZWxlY3RvcigpIHtcbiAgICBjb25zdCBzY3JpcHR1cmVTZWxlY3Rpb25Db25maWcgPSBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3Moe1xuICAgICAgbGFiZWwsXG4gICAgICByZXNvdXJjZUxpbms6IHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssXG4gICAgICBzZXRTY3JpcHR1cmUsXG4gICAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgICB9KVxuXG4gICAgcmV0dXJuIDxTY3JpcHR1cmVTZWxlY3RvciB7Li4uc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnfSBzdHlsZT17c3R5bGV9IGVycm9yTWVzc2FnZT17dXJsRXJyb3J9IC8+XG4gIH1cblxuICBmdW5jdGlvbiBvbk1lbnVDbG9zZSgpIHtcbiAgICAvLyBjb25zb2xlLmxvZyhgb25NZW51Q2xvc2UoKWApXG4gICAgc2V0U3RhdGUoeyB1cmxFcnJvcjogbnVsbCB9KVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBsYW5ndWFnZUlkXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWRcbiAgY29uc3QgbGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZSh7IGxhbmd1YWdlSWQ6IGxhbmd1YWdlSWRfIH0pXG4gIGNvbnN0IGRpcmVjdGlvbiA9IChsYW5ndWFnZT8uZGlyZWN0aW9uKSB8fCAnbHRyJ1xuICBjb25zdCByZWZlcmVuY2UgPSB7IC4uLnNjcmlwdHVyZUNvbmZpZy5yZWZlcmVuY2UgfVxuXG4gIGNvbnN0IGlzSGVicmV3ID0gKGxhbmd1YWdlSWRfID09PSAnaGJvJylcbiAgY29uc3QgZm9udEZhY3RvciA9IGlzSGVicmV3ID8gMS40IDogMSAvLyB3ZSBhdXRvbWF0aWNhbGx5IHNjYWxlIHVwIGZvbnQgc2l6ZSBmb3IgSGVicmV3XG4gIGNvbnN0IHNjYWxlZEZvbnRTaXplID0gZm9udFNpemUgKiBmb250RmFjdG9yXG5cbiAgaWYgKHNjcmlwdHVyZUNvbmZpZy5tYXRjaGVkVmVyc2UpIHsgLy8gc3VwcG9ydCB2ZXJzZSByYW5nZXNcbiAgICByZWZlcmVuY2UudmVyc2UgPSBzY3JpcHR1cmVDb25maWcubWF0Y2hlZFZlcnNlXG4gIH1cblxuICBjb25zdCBpdGVtcyA9IG51bGxcbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBoZWFkZXJzLCBmaWx0ZXJzLCBpdGVtSW5kZXgsIG1hcmtkb3duVmlldyxcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHNldEZpbHRlcnMsIHNldEl0ZW1JbmRleCwgc2V0TWFya2Rvd25WaWV3LFxuICAgIH0sXG4gIH0gPSB1c2VDYXJkU3RhdGUoeyBpdGVtcyB9KVxuXG4gIGNvbnN0IHJlZlN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtNYXRoLnJvdW5kKHNjYWxlZEZvbnRTaXplICogMC45KX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3QgY29udGVudFN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtzY2FsZWRGb250U2l6ZX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3Qgc2NyaXB0dXJlTGFiZWwgPSA8VGl0bGU+e3NjcmlwdHVyZVRpdGxlfTwvVGl0bGU+XG4gIGxldCBkaXNhYmxlV29yZFBvcG92ZXJfID0gZGlzYWJsZVdvcmRQb3BvdmVyXG4gIGNvbnN0IHVzaW5nT3JpZ2luYWxCaWJsZSA9IGlzT3JpZ2luYWxCaWJsZShzY3JpcHR1cmVDb25maWdbJ3Jlc291cmNlJ10/LnByb2plY3RJZClcblxuICBpZiAoZGlzYWJsZVdvcmRQb3BvdmVyID09PSB1bmRlZmluZWQpIHsgLy8gaWYgbm90IHNwZWNpZmllZCwgdGhlbiBkZXRlcm1pbmUgaWYgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VcbiAgICBkaXNhYmxlV29yZFBvcG92ZXJfID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gcHJlLWNhY2hlIGdsb3NzZXMgb24gdmVyc2UgY2hhbmdlXG4gICAgY29uc3QgZmV0Y2hHbG9zc0RhdGFGb3JWZXJzZSA9IGFzeW5jICgpID0+IHtcbiAgICAgIGlmICghZGlzYWJsZVdvcmRQb3BvdmVyICYmIGluaXRpYWxWZXJzZU9iamVjdHMgJiYgZmV0Y2hHbG9zc2VzRm9yVmVyc2UpIHtcbiAgICAgICAgYXdhaXQgZmV0Y2hHbG9zc2VzRm9yVmVyc2UoaW5pdGlhbFZlcnNlT2JqZWN0cywgbGFuZ3VhZ2VJZF8pXG4gICAgICB9XG4gICAgfVxuXG4gICAgZmV0Y2hHbG9zc0RhdGFGb3JWZXJzZSgpXG4gIH0sIFsgaW5pdGlhbFZlcnNlT2JqZWN0cywgZGlzYWJsZVdvcmRQb3BvdmVyLCBsYW5ndWFnZUlkXywgZmV0Y2hHbG9zc2VzRm9yVmVyc2UgXSlcblxuICBjb25zdCBlbmFibGVFZGl0ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBlbmFibGVBbGlnbm1lbnQgPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIGNvbnN0IG9yaWdpbmFsUmVwb1VybCA9IGlzTmV3VGVzdGFtZW50ID8gZ3JlZWtSZXBvVXJsIDogaGVicmV3UmVwb1VybFxuICBjb25zdCB7XG4gICAgYWN0aW9uczoge1xuICAgICAgY2FuY2VsQWxpZ25tZW50LFxuICAgICAgY3VycmVudFZlcnNlT2JqZWN0cyxcbiAgICAgIGhhbmRsZUFsaWdubWVudENsaWNrLFxuICAgICAgb25BbGlnbm1lbnRzQ2hhbmdlLFxuICAgICAgc2F2ZUFsaWdubWVudCxcbiAgICAgIHNldEVkaXRpbmcsXG4gICAgICBzZXRWZXJzZUNoYW5nZWQsXG4gICAgICBzYXZlQ2hhbmdlc1RvQ2xvdWQsXG4gICAgfSxcbiAgICBzdGF0ZToge1xuICAgICAgYWxpZ25lZCxcbiAgICAgIGFsaWduZXJEYXRhLFxuICAgICAgZWRpdGluZyxcbiAgICAgIHVuc2F2ZWRDaGFuZ2VzLFxuICAgIH0sXG4gIH0gPSB1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0KHtcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBlbmFibGVFZGl0LFxuICAgIGVuYWJsZUFsaWdubWVudCxcbiAgICBodHRwQ29uZmlnLFxuICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIG9yaWdpbmFsUmVwb1VybCxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHN0YXJ0RWRpdEJyYW5jaCxcbiAgICBib29rSW5kZXgsXG4gICAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiByZWYsXG4gICAgY3VycmVudFZlcnNlTnVtLFxuICB9KVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNldCBzYXZlZCBjaGFuZ2VzIHdoZW5ldmVyIHVzZXIgZWRpdHMgdmVyc2UgdGV4dCBvciBhbGlnbm1lbnRzIG9yIGlmIGFsaWdubWVudHMgYXJlIG9wZW5cbiAgICBjb25zdCB1bnNhdmVkQ2hhbmdlc18gPSB1bnNhdmVkQ2hhbmdlcyB8fCBhbGlnbmVyRGF0YVxuICAgIHNldFNhdmVkQ2hhbmdlcyAmJiBzZXRTYXZlZENoYW5nZXMocmVzb3VyY2VJZCwgIXVuc2F2ZWRDaGFuZ2VzXylcbiAgfSwgW3Vuc2F2ZWRDaGFuZ2VzLCBhbGlnbmVyRGF0YV0pXG5cbiAgZnVuY3Rpb24gc2hvd1BvcG92ZXIoUG9wb3ZlclRpdGxlLCB3b3JkRGV0YWlscywgcG9zaXRpb25Db29yZCwgcmF3RGF0YSkge1xuICAgIC8vIFRPRE86IG1ha2Ugc2hvdyBwb3BvdmVyIHByZXR0eVxuICAgIGNvbnNvbGUubG9nKGBzaG93UG9wb3ZlcmAsIHJhd0RhdGEpXG4gICAgd2luZG93LnByb21wdChgVXNlciBjbGlja2VkIG9uICR7SlNPTi5zdHJpbmdpZnkocmF3RGF0YS50b2tlbil9YClcbiAgfVxuXG4gIGNvbnN0IGNoZWNraW5nU3RhdGUgPSBhbGlnbmVkID8gJ3ZhbGlkJyA6ICdpbnZhbGlkJ1xuICBjb25zdCB0aXRsZVRleHQgPSBjaGVja2luZ1N0YXRlID09PSAndmFsaWQnID8gJ0FsaWdubWVudCBpcyBWYWxpZCcgOiAnQWxpZ25tZW50IGlzIEludmFsaWQnXG4gIGNvbnN0IG9uUmVuZGVyVG9vbGJhciA9ICh7IGl0ZW1zIH0pID0+IFtcbiAgICAuLi5pdGVtcyxcbiAgICA8SWNvbkJ1dHRvblxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLm1hcmdpbn1cbiAgICAgIGtleT0nY2hlY2tpbmctYnV0dG9uJ1xuICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlQWxpZ25tZW50Q2xpY2soKX1cbiAgICAgIHRpdGxlPXt0aXRsZVRleHR9XG4gICAgICBhcmlhLWxhYmVsPXt0aXRsZVRleHR9XG4gICAgICBzdHlsZT17eyBjdXJzb3I6ICdwb2ludGVyJyB9fVxuICAgID5cbiAgICAgIHtjaGVja2luZ1N0YXRlID09PSAndmFsaWQnID8gKFxuICAgICAgICA8UnhMaW5rMiBpZD0ndmFsaWRfaWNvbicgY29sb3I9JyNCQkInIC8+XG4gICAgICApIDogKFxuICAgICAgICA8UnhMaW5rQnJlYWsyIGlkPSdpbnZhbGlkX2ljb24nIGNvbG9yPScjMDAwJyAvPlxuICAgICAgKX1cbiAgICA8L0ljb25CdXR0b24+LFxuICBdXG5cbiAgcmV0dXJuIChcbiAgICA8Q2FyZFxuICAgICAgaWQ9e2BzY3JpcHR1cmVfY2FyZF8ke2NhcmROdW19YH1cbiAgICAgIHRpdGxlPXtzY3JpcHR1cmVMYWJlbH1cbiAgICAgIHNldHRpbmdzVGl0bGU9e3NjcmlwdHVyZVRpdGxlICsgJyBTZXR0aW5ncyd9XG4gICAgICBpdGVtcz17aXRlbXN9XG4gICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgaGVhZGVycz17aGVhZGVyc31cbiAgICAgIGZpbHRlcnM9e2ZpbHRlcnN9XG4gICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICBpdGVtSW5kZXg9e2l0ZW1JbmRleH1cbiAgICAgIHNldEZpbHRlcnM9e3NldEZpbHRlcnN9XG4gICAgICBzZXRGb250U2l6ZT17c2V0Rm9udFNpemV9XG4gICAgICBzZXRJdGVtSW5kZXg9e3NldEl0ZW1JbmRleH1cbiAgICAgIG1hcmtkb3duVmlldz17bWFya2Rvd25WaWV3fVxuICAgICAgc2V0TWFya2Rvd25WaWV3PXtzZXRNYXJrZG93blZpZXd9XG4gICAgICBnZXRDdXN0b21Db21wb25lbnQ9e2dldFNjcmlwdHVyZVNlbGVjdG9yfVxuICAgICAgaGlkZU1hcmtkb3duVG9nZ2xlXG4gICAgICBvbk1lbnVDbG9zZT17b25NZW51Q2xvc2V9XG4gICAgICBvbk1pbmltaXplPXtvbk1pbmltaXplID8gKCkgPT4gb25NaW5pbWl6ZShpZCkgOiBudWxsfVxuICAgICAgZWRpdGFibGU9e2VuYWJsZUVkaXQgfHwgZW5hYmxlQWxpZ25tZW50fVxuICAgICAgc2F2ZWQ9eyF1bnNhdmVkQ2hhbmdlc31cbiAgICAgIG9uU2F2ZUVkaXQ9e3NhdmVDaGFuZ2VzVG9DbG91ZH1cbiAgICAgIG9uQmx1cj17KCkgPT4gc2V0RWRpdGluZyhmYWxzZSl9XG4gICAgICBvblJlbmRlclRvb2xiYXI9e29uUmVuZGVyVG9vbGJhcn1cbiAgICA+XG4gICAgICB7YWxpZ25lckRhdGEgP1xuICAgICAgICA8ZGl2IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICAgIDxXb3JkQWxpZ25lclxuICAgICAgICAgICAgc3R5bGU9e3sgbWF4SGVpZ2h0OiAnNDUwcHgnLCBvdmVyZmxvd1k6ICdhdXRvJyB9fVxuICAgICAgICAgICAgdmVyc2VBbGlnbm1lbnRzPXthbGlnbmVyRGF0YS5hbGlnbm1lbnRzfVxuICAgICAgICAgICAgdGFyZ2V0V29yZHM9e2FsaWduZXJEYXRhLndvcmRCYW5rfVxuICAgICAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgICAgICBjb250ZXh0SWQ9e3sgcmVmZXJlbmNlOiByZWZlcmVuY2VfIH19XG4gICAgICAgICAgICB0YXJnZXRMYW5ndWFnZT17bGFuZ3VhZ2V9XG4gICAgICAgICAgICB0YXJnZXRMYW5ndWFnZUZvbnQ9eycnfVxuICAgICAgICAgICAgc291cmNlTGFuZ3VhZ2U9e2lzTlRfID8gTlRfT1JJR19MQU5HIDogT1RfT1JJR19MQU5HfVxuICAgICAgICAgICAgc2hvd1BvcG92ZXI9e3Nob3dQb3BvdmVyfVxuICAgICAgICAgICAgbGV4aWNvbnM9e3t9fVxuICAgICAgICAgICAgbG9hZExleGljb25FbnRyeT17Z2V0TGV4aWNvbkRhdGF9XG4gICAgICAgICAgICBvbkNoYW5nZT17KHJlc3VsdHMpID0+IG9uQWxpZ25tZW50c0NoYW5nZShyZXN1bHRzKX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxiciAvPlxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6ICcxMDAlJyB9fT5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLm1hcmdpbn1cbiAgICAgICAgICAgICAga2V5PSdhbGlnbm1lbnQtc2F2ZSdcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2F2ZUFsaWdubWVudCgpfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXsnQWxpZ25tZW50IFNhdmUnfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Q2hlY2tPdXRsaW5lZEljb24gaWQ9J2FsaWdubWVudC1zYXZlLWljb24nIGh0bWxDb2xvcj0nIzAwMCcgLz5cbiAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLm1hcmdpbn1cbiAgICAgICAgICAgICAga2V5PSdhbGlnbm1lbnQtY2FuY2VsJ1xuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjYW5jZWxBbGlnbm1lbnQoKX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17J0FsaWdubWVudCBDYW5jZWwnfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Q2FuY2VsT3V0bGluZWRJY29uIGlkPSdhbGlnbm1lbnQtY2FuY2VsLWljb24nIGh0bWxDb2xvcj0nIzAwMCcgLz5cbiAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDpcbiAgICAgICAgPFNjcmlwdHVyZVBhbmVcbiAgICAgICAgICByZWZTdHlsZT17cmVmU3R5bGV9XG4gICAgICAgICAgey4uLnNjcmlwdHVyZUNvbmZpZ31cbiAgICAgICAgICB2ZXJzZU9iamVjdHM9e2N1cnJlbnRWZXJzZU9iamVjdHN9XG4gICAgICAgICAgaXNOVD17aXNOVF99XG4gICAgICAgICAgc2VydmVyPXtzZXJ2ZXJ9XG4gICAgICAgICAgcmVmZXJlbmNlPXtyZWZlcmVuY2V9XG4gICAgICAgICAgZGlyZWN0aW9uPXtkaXJlY3Rpb259XG4gICAgICAgICAgY29udGVudFN0eWxlPXtjb250ZW50U3R5bGV9XG4gICAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICAgIGRpc2FibGVXb3JkUG9wb3Zlcj17ZGlzYWJsZVdvcmRQb3BvdmVyX31cbiAgICAgICAgICBnZXRMZXhpY29uRGF0YT17Z2V0TGV4aWNvbkRhdGF9XG4gICAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgICAgZWRpdGluZz17ZWRpdGluZ31cbiAgICAgICAgICBzZXRFZGl0aW5nPXtzZXRFZGl0aW5nfVxuICAgICAgICAgIHNldFZlcnNlQ2hhbmdlZD17c2V0VmVyc2VDaGFuZ2VkfVxuICAgICAgICAvPlxuICAgICAgfVxuICAgIDwvQ2FyZD5cbiAgKVxufVxuXG5TY3JpcHR1cmVDYXJkLnByb3BUeXBlcyA9IHtcbiAgLyoqIGh0bWwgaWRlbnRpZmllciB0byB1c2UgZm9yIGNhcmQgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBtZXRob2QgdG8gZGV0ZXJtaW5lIGlmIE5UIG9yIE9UICovXG4gIGlzTlQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiB0aXRsZSBmb3Igc2NyaXB0dXJlIGNhcmQgKi9cbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIGdldCBsYW5ndWFnZSBkZXRhaWxzICovXG4gIGdldExhbmd1YWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogc2NyaXB0dXJlIGNhcmQgbnVtYmVyICgwIHRvIDIgZm9yIGV4YW1wbGUpICovXG4gIGNhcmROdW06IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgLyoqIHJlc291cmNlIG9iamVjdCAqL1xuICByZXNvdXJjZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcmVzb3VyY2UgbGFuZ3VhZ2UgdG8gdXNlICovXG4gICAgbGFuZ3VhZ2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlc291cmNlSWQgdG8gdXNlIChlLmcuIHVnbnQpICovXG4gICAgcmVzb3VyY2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIGZvciBvcmlnaW5hbCBsYW5ndWFnZXMgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIH0pLFxuICByZWZlcmVuY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIHByb2plY3RJZCAoYm9va0lEKSB0byB1c2UgKi9cbiAgICBwcm9qZWN0SWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogY3VycmVudCBjaGFwdGVyIG51bWJlciAqL1xuICAgIGNoYXB0ZXI6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICAgIC8qKiBjdXJyZW50IHZlcnNlIG51bWJlciAqL1xuICAgIHZlcnNlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCxcbiAgfSksXG4gIC8qKiBzZXJ2ZXIgKGUuZy4gJ2h0dHBzOi8vZ2l0LmRvb3I0My5vcmcnKSAqL1xuICBzZXJ2ZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIHJlcG8gYnJhbmNoIG9yIHRhZyBzdWNoIGFzIG1hc3RlciAqL1xuICBhcHBSZWY6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIGlmIHRydWUgdGhlbiB3b3JkIGRhdGEgaG92ZXIgaXMgc2hvd24gKi9cbiAgZGlzYWJsZVdvcmRQb3BvdmVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqIENTUyBjbGFzc2VzICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiByZXNvdXJjZUxpbmsgKi9cbiAgcmVzb3VyY2VMaW5rOiBQcm9wVHlwZXMuYW55LFxuICAvKiogdXNlIG1ldGhvZCBmb3IgdXNpbmcgbG9jYWwgc3RvcmFnZSBzcGVjaWZpYyBmb3IgdXNlciAqL1xuICB1c2VVc2VyTG9jYWxTdG9yYWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogb3B0aW9uYWwgY2FsbGJhY2sgaWYgZXJyb3IgbG9hZGluZyByZXNvdXJjZSwgcGFyYW1ldGVyIHJldHVybmVkIGFyZTpcbiAgICogICAgKHtzdHJpbmd9IGVycm9yTWVzc2FnZSwge2Jvb2xlYW59IGlzQWNjZXNzRXJyb3IsIHtvYmplY3R9IHJlc291cmNlU3RhdHVzKVxuICAgKiAgICAgIC0gaXNBY2Nlc3NFcnJvciAtIGlzIHRydWUgaWYgdGhpcyB3YXMgYW4gZXJyb3IgdHJ5aW5nIHRvIGFjY2VzcyBmaWxlXG4gICAqICAgICAgLSByZXNvdXJjZVN0YXR1cyAtIGlzIG9iamVjdCBjb250YWluaW5nIGRldGFpbHMgYWJvdXQgcHJvYmxlbXMgZmV0Y2hpbmcgcmVzb3VyY2UgKi9cbiAgb25SZXNvdXJjZUVycm9yOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIGh0dHAgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIGZldGNoaW5nIHJlc291cmNlcywgZGVmYXVsdCBpcyAwICh2ZXJ5IGxvbmcgd2FpdCkgKi9cbiAgaHR0cENvbmZpZzogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgZ3JlZWsgcmVwbyAqL1xuICBncmVla1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGhlYnJldyByZXBvICovXG4gIGhlYnJld1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBmdW5jdGlvbiB0byBnZXQgbGF0ZXN0IGxleGljb24gZGF0YSAqL1xuICBnZXRMZXhpY29uRGF0YTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBmdW5jdGlvbiB0byBwcmUtbG9hZCBsZXhpY29uIGRhdGEgZm9yIHZlcnNlICovXG4gIGZldGNoR2xvc3Nlc0ZvclZlcnNlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIGZ1bmN0aW9uIGZvciBsb2NhbGl6YXRpb24gKi9cbiAgdHJhbnNsYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGZ1bmN0aW9uIHRvIG1pbmltaXplIHRoZSBjYXJkIChvcHRpb25hbCkgKi9cbiAgb25NaW5pbWl6ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB1c2VyLW5hbWUgKi9cbiAgbG9nZ2VkSW5Vc2VyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogYXV0aGVudGljYXRpb24gaW5mbyAqL1xuICBhdXRoZW50aWNhdGlvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGZ1bmN0aW9uIHRvIHNldCBzdGF0ZSBpbiBhcHAgdGhhdCB0aGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzICovXG4gIHNldFNhdmVkQ2hhbmdlczogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBpbmRleCBmb3IgY3VycmVudCBib29rIChlLmcuICcwMScgZm9yICdnZW4nKSovXG4gIGJvb2tJbmRleDogUHJvcFR5cGVzLnN0cmluZyxcbn1cbiJdfQ==
|
|
378
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJDYXJkIiwidXNlQ2FyZFN0YXRlIiwiRVJST1JfU1RBVEUiLCJNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJnZXRSZXNvdXJjZUxpbmsiLCJnZXRSZXNvdXJjZU1lc3NhZ2UiLCJnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3MiLCJpc09yaWdpbmFsQmlibGUiLCJUaXRsZSIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsIlNjcmlwdHVyZUNhcmQiLCJpZCIsImlzTlQiLCJ0aXRsZSIsInNlcnZlciIsImFwcFJlZiIsImNhcmROdW0iLCJjbGFzc2VzIiwicmVzb3VyY2UiLCJvd25lciIsImxhbmd1YWdlSWQiLCJyZXNvdXJjZUlkIiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwiZ2V0TGFuZ3VhZ2UiLCJyZWZlcmVuY2UiLCJ2ZXJzZSIsImNoYXB0ZXIiLCJib29rSWQiLCJwcm9qZWN0SWQiLCJyZXNvdXJjZUxpbmsiLCJ1c2VVc2VyTG9jYWxTdG9yYWdlIiwiZGlzYWJsZVdvcmRQb3BvdmVyIiwib25SZXNvdXJjZUVycm9yIiwiaHR0cENvbmZpZyIsImdyZWVrUmVwb1VybCIsImhlYnJld1JlcG9VcmwiLCJnZXRMZXhpY29uRGF0YSIsImZldGNoR2xvc3Nlc0ZvclZlcnNlIiwidHJhbnNsYXRlIiwib25NaW5pbWl6ZSIsImFkZFZlcnNlUmFuZ2UiLCJ1c2VTdGF0ZSIsInVybEVycm9yIiwic2V0VXJsRXJyb3IiLCJmb250U2l6ZSIsInNldEZvbnRTaXplIiwic2NyaXB0dXJlQ29uZmlnIiwic2V0U2NyaXB0dXJlIiwic2NyaXB0dXJlVmVyc2lvbkhpc3QiLCJzY3JpcHR1cmVUaXRsZSIsInVzZUVmZmVjdCIsImVycm9yIiwicmVzb3VyY2VTdGF0dXMiLCJtZXNzYWdlIiwiaXNBY2Nlc3NFcnJvciIsInZlcnNpb24iLCJ1cGRhdGVUaXRsZSIsImdldFNjcmlwdHVyZVNlbGVjdG9yIiwic2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnIiwib25NZW51Q2xvc2UiLCJsYW5ndWFnZUlkXyIsImxhbmd1YWdlIiwiZGlyZWN0aW9uIiwiaXNIZWJyZXciLCJmb250RmFjdG9yIiwic2NhbGVkRm9udFNpemUiLCJtYXRjaGVkVmVyc2UiLCJpdGVtcyIsInN0YXRlIiwiaGVhZGVycyIsImZpbHRlcnMiLCJpdGVtSW5kZXgiLCJtYXJrZG93blZpZXciLCJhY3Rpb25zIiwic2V0RmlsdGVycyIsInNldEl0ZW1JbmRleCIsInNldE1hcmtkb3duVmlldyIsInJlZlN0eWxlIiwiZm9udEZhbWlseSIsIk1hdGgiLCJyb3VuZCIsImNvbnRlbnRTdHlsZSIsInNjcmlwdHVyZUxhYmVsIiwiZGlzYWJsZVdvcmRQb3BvdmVyXyIsInVuZGVmaW5lZCIsImZldGNoR2xvc3NEYXRhRm9yVmVyc2UiLCJ2ZXJzZU9iamVjdHMiLCJsZW5ndGgiLCJfdmVyc2UiLCJpbmNsdWRlcyIsInByb3BUeXBlcyIsInN0cmluZyIsImZ1bmMiLCJpc1JlcXVpcmVkIiwibnVtYmVyIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJib29sIiwib2JqZWN0IiwiYW55Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFDQSxPQUFPLEtBQUtDLFNBQVosTUFBMkIsWUFBM0I7QUFDQSxTQUNFQyxJQURGLEVBRUVDLFlBRkYsRUFHRUMsV0FIRixFQUlFQyx5QkFKRixRQUtPLHVCQUxQO0FBTUEsU0FBU0MsYUFBVCxFQUF3QkMsaUJBQXhCLFFBQWlELElBQWpEO0FBQ0EsU0FBU0Msb0JBQVQsUUFBcUMsa0NBQXJD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QkFBb0IsRUFBRTdDLFNBQVMsQ0FBQ29HLElBeERSOztBQXlEeEI7QUFDQXRELEVBQUFBLFNBQVMsRUFBRTlDLFNBQVMsQ0FBQ29HLElBMURHOztBQTJEeEI7QUFDQXJELEVBQUFBLFVBQVUsRUFBRS9DLFNBQVMsQ0FBQ29HLElBNURFOztBQTZEeEI7QUFDQXBELEVBQUFBLGFBQWEsRUFBRWhELFNBQVMsQ0FBQ29HO0FBOURELENBQTFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCB7XG4gIENhcmQsXG4gIHVzZUNhcmRTdGF0ZSxcbiAgRVJST1JfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbmltcG9ydCB7IFNjcmlwdHVyZVBhbmUsIFNjcmlwdHVyZVNlbGVjdG9yIH0gZnJvbSAnLi4nXG5pbXBvcnQgeyB1c2VTY3JpcHR1cmVTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZVNjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHtcbiAgZ2V0UmVzb3VyY2VMaW5rLFxuICBnZXRSZXNvdXJjZU1lc3NhZ2UsXG4gIGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyxcbiAgaXNPcmlnaW5hbEJpYmxlLFxufSBmcm9tICcuLi8uLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnLi4vU2NyaXB0dXJlUGFuZS9zdHlsZWQnXG5cbmNvbnN0IEtFWV9GT05UX1NJWkVfQkFTRSA9ICdzY3JpcHR1cmVQYW5lRm9udFNpemVfJ1xuY29uc3QgbGFiZWwgPSAnVmVyc2lvbidcbmNvbnN0IHN0eWxlID0geyBtYXJnaW5Ub3A6ICcxNnB4Jywgd2lkdGg6ICc1MDBweCcgfVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTY3JpcHR1cmVDYXJkKHtcbiAgaWQsXG4gIGlzTlQsXG4gIHRpdGxlLFxuICBzZXJ2ZXIsXG4gIGFwcFJlZixcbiAgY2FyZE51bSxcbiAgY2xhc3NlcyxcbiAgcmVzb3VyY2U6IHtcbiAgICBvd25lcixcbiAgICBsYW5ndWFnZUlkLFxuICAgIHJlc291cmNlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICB9LFxuICBnZXRMYW5ndWFnZSxcbiAgcmVmZXJlbmNlOiB7XG4gICAgdmVyc2UsXG4gICAgY2hhcHRlcixcbiAgICBwcm9qZWN0SWQ6IGJvb2tJZCxcbiAgfSxcbiAgcmVzb3VyY2VMaW5rLFxuICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIG9uUmVzb3VyY2VFcnJvcixcbiAgaHR0cENvbmZpZyxcbiAgZ3JlZWtSZXBvVXJsLFxuICBoZWJyZXdSZXBvVXJsLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgZmV0Y2hHbG9zc2VzRm9yVmVyc2UsXG4gIHRyYW5zbGF0ZSxcbiAgb25NaW5pbWl6ZSxcbiAgYWRkVmVyc2VSYW5nZSxcbn0pIHtcbiAgY29uc3QgW3VybEVycm9yLCBzZXRVcmxFcnJvcl0gPSBSZWFjdC51c2VTdGF0ZShudWxsKVxuICBjb25zdCBbZm9udFNpemUsIHNldEZvbnRTaXplXSA9IHVzZVVzZXJMb2NhbFN0b3JhZ2UoS0VZX0ZPTlRfU0laRV9CQVNFICsgY2FyZE51bSwgMTAwKVxuICBjb25zdCB7XG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNldFNjcmlwdHVyZSxcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgfSA9IHVzZVNjcmlwdHVyZVNldHRpbmdzKHtcbiAgICBpc05ULFxuICAgIHRpdGxlLFxuICAgIHZlcnNlLFxuICAgIG93bmVyLFxuICAgIGJvb2tJZCxcbiAgICBhcHBSZWYsXG4gICAgc2VydmVyLFxuICAgIGNhcmROdW0sXG4gICAgY2hhcHRlcixcbiAgICBsYW5ndWFnZUlkLFxuICAgIHJlc291cmNlSWQsXG4gICAgcmVzb3VyY2VMaW5rLFxuICAgIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgICBzZXRVcmxFcnJvcixcbiAgICBodHRwQ29uZmlnLFxuICAgIGdyZWVrUmVwb1VybCxcbiAgICBoZWJyZXdSZXBvVXJsLFxuICB9KVxuXG4gIGxldCBzY3JpcHR1cmVUaXRsZVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZXJyb3IgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXG5cbiAgICBpZiAoZXJyb3IpIHsgLy8gaWYgZXJyb3Igd2FzIGZvdW5kIGRvIGNhbGxiYWNrXG4gICAgICBjb25zdCByZXNvdXJjZVN0YXR1cyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXNcbiAgICAgIGNvbnN0IHJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayhzY3JpcHR1cmVDb25maWcpXG4gICAgICBjb25zdCBtZXNzYWdlID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVChib29rSWQpKVxuICAgICAgY29uc3QgaXNBY2Nlc3NFcnJvciA9IHJlc291cmNlU3RhdHVzW01BTklGRVNUX05PVF9MT0FERURfRVJST1JdXG4gICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG1lc3NhZ2UsIGlzQWNjZXNzRXJyb3IsIHJlc291cmNlU3RhdHVzKVxuICAgIH1cbiAgfSwgW3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1dKVxuXG4gIGlmIChzY3JpcHR1cmVDb25maWcudGl0bGUgJiYgc2NyaXB0dXJlQ29uZmlnLnZlcnNpb24pIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGAke3NjcmlwdHVyZUNvbmZpZy50aXRsZX0gdiR7c2NyaXB0dXJlQ29uZmlnLnZlcnNpb259YFxuICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LnVwZGF0ZVRpdGxlKHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssIHNjcmlwdHVyZVRpdGxlKVxuICB9IGVsc2Uge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYFRpdGxlIG1pc3NpbmcgZnJvbSBwcm9qZWN0IG1hbmlmZXN0YFxuICB9XG5cbiAgLyoqIER5bmFtaWNhbGx5IGNyZWF0ZXMgdGhlIHNjcmlwdHVyZSBzZWxlY3Rpb24gZHJvcGRvd24gdG8gYmUgaW5zZXJ0ZWQgaW50byBjYXJkIHNldHRpbmdzICovXG4gIGZ1bmN0aW9uIGdldFNjcmlwdHVyZVNlbGVjdG9yKCkge1xuICAgIGNvbnN0IHNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyA9IGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyh7XG4gICAgICBsYWJlbCxcbiAgICAgIHJlc291cmNlTGluazogc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluayxcbiAgICAgIHNldFNjcmlwdHVyZSxcbiAgICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LFxuICAgIH0pXG5cbiAgICByZXR1cm4gPFNjcmlwdHVyZVNlbGVjdG9yIHsuLi5zY3JpcHR1cmVTZWxlY3Rpb25Db25maWd9IHN0eWxlPXtzdHlsZX0gZXJyb3JNZXNzYWdlPXt1cmxFcnJvcn0gLz5cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTWVudUNsb3NlKCkge1xuICAgIC8vIGNvbnNvbGUubG9nKGBvbk1lbnVDbG9zZSgpYClcbiAgICBzZXRVcmxFcnJvcihudWxsKSAvLyBjbGVhciBhbnkgZXJyb3IgbWVzc2FnZXNcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbGFuZ3VhZ2VJZF8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5sYW5ndWFnZUlkXG4gIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2UoeyBsYW5ndWFnZUlkOiBsYW5ndWFnZUlkXyB9KVxuICBjb25zdCBkaXJlY3Rpb24gPSAobGFuZ3VhZ2U/LmRpcmVjdGlvbikgfHwgJ2x0cidcbiAgY29uc3QgcmVmZXJlbmNlID0geyAuLi5zY3JpcHR1cmVDb25maWcucmVmZXJlbmNlIH1cblxuICBjb25zdCBpc0hlYnJldyA9IChsYW5ndWFnZUlkXyA9PT0gJ2hibycpXG4gIGNvbnN0IGZvbnRGYWN0b3IgPSBpc0hlYnJldyA/IDEuNCA6IDEgLy8gd2UgYXV0b21hdGljYWxseSBzY2FsZSB1cCBmb250IHNpemUgZm9yIEhlYnJld1xuICBjb25zdCBzY2FsZWRGb250U2l6ZSA9IGZvbnRTaXplICogZm9udEZhY3RvclxuXG4gIGlmIChzY3JpcHR1cmVDb25maWcubWF0Y2hlZFZlcnNlKSB7IC8vIHN1cHBvcnQgdmVyc2UgcmFuZ2VzXG4gICAgcmVmZXJlbmNlLnZlcnNlID0gc2NyaXB0dXJlQ29uZmlnLm1hdGNoZWRWZXJzZVxuICB9XG5cbiAgY29uc3QgaXRlbXMgPSBudWxsXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgaGVhZGVycywgZmlsdGVycywgaXRlbUluZGV4LCBtYXJrZG93blZpZXcsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBzZXRGaWx0ZXJzLCBzZXRJdGVtSW5kZXgsIHNldE1hcmtkb3duVmlldyxcbiAgICB9LFxuICB9ID0gdXNlQ2FyZFN0YXRlKHsgaXRlbXMgfSlcblxuICBjb25zdCByZWZTdHlsZSA9IHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7TWF0aC5yb3VuZChzY2FsZWRGb250U2l6ZSAqIDAuOSl9JWAsXG4gIH1cblxuICBjb25zdCBjb250ZW50U3R5bGUgPSB7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke3NjYWxlZEZvbnRTaXplfSVgLFxuICB9XG5cbiAgY29uc3Qgc2NyaXB0dXJlTGFiZWwgPSA8VGl0bGU+e3NjcmlwdHVyZVRpdGxlfTwvVGl0bGU+XG4gIGxldCBkaXNhYmxlV29yZFBvcG92ZXJfID0gZGlzYWJsZVdvcmRQb3BvdmVyXG5cbiAgaWYgKGRpc2FibGVXb3JkUG9wb3ZlciA9PT0gdW5kZWZpbmVkKSB7IC8vIGlmIG5vdCBzcGVjaWZpZWQsIHRoZW4gZGV0ZXJtaW5lIGlmIG9yaWdpbmFsIGxhbmd1YWdlIHJlc291cmNlXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyXyA9ICFpc09yaWdpbmFsQmlibGUoc2NyaXB0dXJlQ29uZmlnWydyZXNvdXJjZSddPy5wcm9qZWN0SWQpXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGZldGNoR2xvc3NEYXRhRm9yVmVyc2UgPSBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoIWRpc2FibGVXb3JkUG9wb3ZlciAmJiBzY3JpcHR1cmVDb25maWc/LnZlcnNlT2JqZWN0cz8ubGVuZ3RoICYmIGZldGNoR2xvc3Nlc0ZvclZlcnNlKSB7XG4gICAgICAgIGF3YWl0IGZldGNoR2xvc3Nlc0ZvclZlcnNlKHNjcmlwdHVyZUNvbmZpZz8udmVyc2VPYmplY3RzLCBsYW5ndWFnZUlkXylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmZXRjaEdsb3NzRGF0YUZvclZlcnNlKClcbiAgfSwgW3NjcmlwdHVyZUNvbmZpZz8udmVyc2VPYmplY3RzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIGNoZWNrIGZvciB2ZXJzZSByYW5nZVxuICAgIGNvbnN0IF92ZXJzZSA9IHNjcmlwdHVyZUNvbmZpZz8ubWF0Y2hlZFZlcnNlXG5cbiAgICBpZiAoYWRkVmVyc2VSYW5nZSAmJiAodHlwZW9mIF92ZXJzZSA9PT0gJ3N0cmluZycpKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAoX3ZlcnNlLmluY2x1ZGVzKCctJykpIHtcbiAgICAgICAgYWRkVmVyc2VSYW5nZShgJHtzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZT8uY2hhcHRlcn06JHtfdmVyc2V9YClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtzY3JpcHR1cmVDb25maWc/Lm1hdGNoZWRWZXJzZV0pXG5cbiAgcmV0dXJuIChcbiAgICA8Q2FyZFxuICAgICAgaWQ9e2BzY3JpcHR1cmVfY2FyZF8ke2NhcmROdW19YH1cbiAgICAgIHRpdGxlPXtzY3JpcHR1cmVMYWJlbH1cbiAgICAgIHNldHRpbmdzVGl0bGU9e3NjcmlwdHVyZVRpdGxlICsgJyBTZXR0aW5ncyd9XG4gICAgICBpdGVtcz17aXRlbXN9XG4gICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgaGVhZGVycz17aGVhZGVyc31cbiAgICAgIGZpbHRlcnM9e2ZpbHRlcnN9XG4gICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICBpdGVtSW5kZXg9e2l0ZW1JbmRleH1cbiAgICAgIHNldEZpbHRlcnM9e3NldEZpbHRlcnN9XG4gICAgICBzZXRGb250U2l6ZT17c2V0Rm9udFNpemV9XG4gICAgICBzZXRJdGVtSW5kZXg9e3NldEl0ZW1JbmRleH1cbiAgICAgIG1hcmtkb3duVmlldz17bWFya2Rvd25WaWV3fVxuICAgICAgc2V0TWFya2Rvd25WaWV3PXtzZXRNYXJrZG93blZpZXd9XG4gICAgICBnZXRDdXN0b21Db21wb25lbnQ9e2dldFNjcmlwdHVyZVNlbGVjdG9yfVxuICAgICAgaGlkZU1hcmtkb3duVG9nZ2xlXG4gICAgICBvbk1lbnVDbG9zZT17b25NZW51Q2xvc2V9XG4gICAgICBvbk1pbmltaXplPXtvbk1pbmltaXplID8gKCkgPT4gb25NaW5pbWl6ZShpZCkgOiBudWxsfVxuICAgID5cbiAgICAgIDxTY3JpcHR1cmVQYW5lXG4gICAgICAgIHJlZlN0eWxlPXtyZWZTdHlsZX1cbiAgICAgICAgey4uLnNjcmlwdHVyZUNvbmZpZ31cbiAgICAgICAgaXNOVD17aXNOVChib29rSWQpfVxuICAgICAgICBzZXJ2ZXI9e3NlcnZlcn1cbiAgICAgICAgcmVmZXJlbmNlPXtyZWZlcmVuY2V9XG4gICAgICAgIGRpcmVjdGlvbj17ZGlyZWN0aW9ufVxuICAgICAgICBjb250ZW50U3R5bGU9e2NvbnRlbnRTdHlsZX1cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBkaXNhYmxlV29yZFBvcG92ZXI9e2Rpc2FibGVXb3JkUG9wb3Zlcl99XG4gICAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YX1cbiAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAvPlxuICAgIDwvQ2FyZD5cbiAgKVxufVxuXG5TY3JpcHR1cmVDYXJkLnByb3BUeXBlcyA9IHtcbiAgLyoqIGlkZW50aWZpZXIgdG8gdXNlIGZvciBjYXJkICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogbWV0aG9kIHRvIGRldGVybWluZSBpZiBOVCBvciBPVCAqL1xuICBpc05UOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogdGl0bGUgZm9yIHNjcmlwdHVyZSBjYXJkICovXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBnZXQgbGFuZ3VhZ2UgZGV0YWlscyAqL1xuICBnZXRMYW5ndWFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIHNjcmlwdHVyZSBjYXJkIG51bWJlciAoMCB0byAyIGZvciBleGFtcGxlKSAqL1xuICBjYXJkTnVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIC8qKiByZXNvdXJjZSBvYmplY3QgKi9cbiAgcmVzb3VyY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIHJlc291cmNlIGxhbmd1YWdlIHRvIHVzZSAqL1xuICAgIGxhbmd1YWdlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXNvdXJjZUlkIHRvIHVzZSAoZS5nLiB1Z250KSAqL1xuICAgIHJlc291cmNlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBmb3Igb3JpZ2luYWwgbGFuZ3VhZ2VzIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB9KSxcbiAgcmVmZXJlbmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiBwcm9qZWN0SWQgKGJvb2tJRCkgdG8gdXNlICovXG4gICAgcHJvamVjdElkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgY2hhcHRlciBudW1iZXIgKi9cbiAgICBjaGFwdGVyOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCxcbiAgICAvKiogY3VycmVudCB2ZXJzZSBudW1iZXIgKi9cbiAgICB2ZXJzZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogc2VydmVyIChlLmcuICdodHRwczovL2dpdC5kb29yNDMub3JnJykgKi9cbiAgc2VydmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiByZXBvIGJyYW5jaCBvciB0YWcgc3VjaCBhcyBtYXN0ZXIgKi9cbiAgYXBwUmVmOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBpZiB0cnVlIHRoZW4gd29yZCBkYXRhIGhvdmVyIGlzIHNob3duICovXG4gIGRpc2FibGVXb3JkUG9wb3ZlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBDU1MgY2xhc3NlcyAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogcmVzb3VyY2VMaW5rICovXG4gIHJlc291cmNlTGluazogUHJvcFR5cGVzLmFueSxcbiAgLyoqIHVzZSBtZXRob2QgZm9yIHVzaW5nIGxvY2FsIHN0b3JhZ2Ugc3BlY2lmaWMgZm9yIHVzZXIgKi9cbiAgdXNlVXNlckxvY2FsU3RvcmFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIG9wdGlvbmFsIGNhbGxiYWNrIGlmIGVycm9yIGxvYWRpbmcgcmVzb3VyY2UsIHBhcmFtZXRlciByZXR1cm5lZCBhcmU6XG4gICAqICAgICh7c3RyaW5nfSBlcnJvck1lc3NhZ2UsIHtib29sZWFufSBpc0FjY2Vzc0Vycm9yLCB7b2JqZWN0fSByZXNvdXJjZVN0YXR1cylcbiAgICogICAgICAtIGlzQWNjZXNzRXJyb3IgLSBpcyB0cnVlIGlmIHRoaXMgd2FzIGFuIGVycm9yIHRyeWluZyB0byBhY2Nlc3MgZmlsZVxuICAgKiAgICAgIC0gcmVzb3VyY2VTdGF0dXMgLSBpcyBvYmplY3QgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IHByb2JsZW1zIGZldGNoaW5nIHJlc291cmNlICovXG4gIG9uUmVzb3VyY2VFcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCBodHRwIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBmZXRjaGluZyByZXNvdXJjZXMsIGRlZmF1bHQgaXMgMCAodmVyeSBsb25nIHdhaXQpICovXG4gIGh0dHBDb25maWc6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGdyZWVrIHJlcG8gKi9cbiAgZ3JlZWtSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBoZWJyZXcgcmVwbyAqL1xuICBoZWJyZXdSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogZnVuY3Rpb24gdG8gZ2V0IGxhdGVzdCBsZXhpY29uIGRhdGEgKi9cbiAgZ2V0TGV4aWNvbkRhdGE6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogZnVuY3Rpb24gdG8gcHJlLWxvYWQgbGV4aWNvbiBkYXRhIGZvciB2ZXJzZSAqL1xuICBmZXRjaEdsb3NzZXNGb3JWZXJzZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCBmdW5jdGlvbiBmb3IgbG9jYWxpemF0aW9uICovXG4gIHRyYW5zbGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBmdW5jdGlvbiB0byBtaW5pbWl6ZSB0aGUgY2FyZCAob3B0aW9uYWwpICovXG4gIG9uTWluaW1pemU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gaW5kaWNhdGUgdGhhdCB3ZSBhcmUgdXNpbmcgYSB2ZXJzZSByYW5nZSBoZXJlICovXG4gIGFkZFZlcnNlUmFuZ2U6IFByb3BUeXBlcy5mdW5jLFxufVxuIl19
|