single-scripture-rcl 3.4.20-beta.18 → 3.4.21-beta.5

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.
@@ -151,31 +151,21 @@ function ScripturePane(_ref) {
151
151
  initialVerseObjects = _scriptureAlignmentEd2.initialVerseObjects,
152
152
  newVerseText = _scriptureAlignmentEd2.newVerseText;
153
153
  React.useEffect(function () {
154
+ // monitor if we need to start alignment
154
155
  if (isVerseSelectedForAlignment && !alignerData && !doingAlignment) {
156
+ // check if edit for this verse is selected and not already doing alignment
155
157
  if (!editing && !processingEdit) {
158
+ // make sure not still editing or processing edit
156
159
  console.log("ScripturePane - verse selected for alignment", reference);
157
160
  handleAlignmentClick();
158
161
  } else {
159
- console.log("ScripturePane - verse not ready for alignment", {
162
+ console.log("ScripturePane - still editing verse, not ready for alignment", {
160
163
  editing: editing,
161
164
  processingEdit: processingEdit
162
165
  });
163
166
  }
164
167
  }
165
168
  }, [isVerseSelectedForAlignment, alignerData, doingAlignment, editing, processingEdit]);
166
-
167
- // const verseChanged = React.useMemo(() => {
168
- // return (newVerseText !== newText)
169
- // }, [newVerseText, newText])
170
- //
171
- // React.useEffect(() => {
172
- // if (newVerseText !== newText) {
173
- // console.log(`ScripturePane - new verse text diverged`, { newVerseText, newText })
174
- // } else {
175
- // console.log(`ScripturePane - new verse text converged`, { newVerseText })
176
- // }
177
- // }, [verseChanged])
178
-
179
169
  React.useEffect(function () {
180
170
  updateVersesAlignmentStatus && updateVersesAlignmentStatus(reference, aligned);
181
171
  }, [aligned, chapter, verse, bookId]);
@@ -221,25 +211,31 @@ function ScripturePane(_ref) {
221
211
  reference: reference,
222
212
  initialVerseObjects: initialVerseObjects
223
213
  }]);
214
+
215
+ /**
216
+ * when focus is changed from text editing, get final text and do processing of final text
217
+ * @param {React.ChangeEvent<HTMLTextAreaElement>} event - DOM event info
218
+ */
224
219
  function onBlur(event) {
225
220
  var _event$target;
226
221
  var newVerseText = event === null || event === void 0 || (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.value; // get new text
227
222
  setState({
228
223
  newText: newVerseText,
229
224
  processingEdit: true
230
- });
225
+ }); // show spinner while processing edit text
231
226
  delay(500).then(function () {
232
- setEditing(false, newVerseText); // process the latest edit after states update
227
+ // allow state to update before processing new text
228
+ setEditing(false, newVerseText).then(function () {
229
+ // process the latest edit text
230
+ setState({
231
+ processingEdit: false
232
+ }); // now done, remove spinner
233
+ });
233
234
  });
234
235
  }
235
236
 
236
237
  React.useEffect(function () {
237
- // monitor for edit state chagnes and call back status to scripture card
238
- if (!editing && processingEdit) {
239
- setState({
240
- processingEdit: false
241
- });
242
- }
238
+ // monitor for edit state changes and call back to scripture card with edit status
243
239
  var _editing = editing || processingEdit;
244
240
  var verseRef = "".concat(reference.chapter, ":").concat(reference.verse);
245
241
  setEditVerse && setEditVerse(verseRef, _editing);
@@ -254,7 +250,7 @@ function ScripturePane(_ref) {
254
250
  * @param {boolean} editing - if true show edit mode
255
251
  * @param {boolean} enableEdit - if true then edit is enabled
256
252
  * @param {boolean} noWords - if true then there are no displayable words
257
- * @param {boolean} processingEdit - true if edit is being processes
253
+ * @param {boolean} processingEdit - if true then edit is being processed
258
254
  */
259
255
  function verseContent(editing, enableEdit, noWords, processingEdit) {
260
256
  if (processingEdit) {
@@ -311,4 +307,4 @@ ScripturePane.defaultProps = {
311
307
  verseObjects: []
312
308
  };
313
309
  export default ScripturePane;
314
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZURlZXBDb21wYXJlRWZmZWN0IiwiVmVyc2VPYmplY3RzIiwiVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyIsIkNpcmN1bGFyUHJvZ3Jlc3MiLCJCb29rT2JqZWN0c1R5cGUiLCJTY3JpcHR1cmVSZWZlcmVuY2VUeXBlIiwiZGVsYXkiLCJnZXRSZXNvdXJjZU1lc3NhZ2UiLCJMT0FESU5HX1JFU09VUkNFIiwidmVyc2VPYmplY3RzSGF2ZVdvcmRzIiwiU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzIiwidXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCIsIkNvbnRhaW5lciIsIkNvbnRlbnQiLCJFbXB0eUNvbnRlbnQiLCJNZXNzYWdlU3R5bGUiLCJkaXJlY3Rpb24iLCJ3aGl0ZVNwYWNlIiwibGluZUhlaWdodCIsImRpc3BsYXkiLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiLCJoZWlnaHQiLCJ3aWR0aCIsImZvbnRTaXplIiwiZm9udEZhbWlseSIsImZvbnRXZWlnaHQiLCJUZXh0QXJlYVN0eWxlIiwibWluV2lkdGgiLCJtaW5IZWlnaHQiLCJTY3JpcHR1cmVQYW5lIiwiX3JlZiIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZDMiLCJjdXJyZW50SW5kZXgiLCJjb250ZW50U3R5bGUiLCJkZXRlcm1pbmluZ0JyYW5jaCIsImRpc2FibGVXb3JkUG9wb3ZlciIsImdldExleGljb25EYXRhIiwiaXNOVCIsImlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsIm9uQWxpZ25tZW50RmluaXNoIiwib3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyIsInJlZmVyZW5jZSIsInJlZlN0eWxlIiwicmVzb3VyY2VTdGF0dXMiLCJyZXNvdXJjZUxpbmsiLCJzYXZpbmciLCJzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwic2V0RWRpdFZlcnNlIiwic2V0U2F2ZWRDaGFuZ2VzIiwic2V0V29yZEFsaWduZXJTdGF0dXMiLCJzZXJ2ZXIiLCJ0cmFuc2xhdGUiLCJ1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJfUmVhY3QkdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsImRvaW5nQWxpZ25tZW50IiwibmV3VGV4dCIsInByb2Nlc3NpbmdFZGl0IiwiX1JlYWN0JHVzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiX29iamVjdFNwcmVhZCIsIl9SZWFjdCR1c2VTdGF0ZTMiLCJfUmVhY3QkdXNlU3RhdGU0IiwiaW5pdGlhbFZlcnNlVGV4dCIsInNldEluaXRpYWxWZXJzZVRleHQiLCJyZXNvdXJjZU1lc3NhZ2UiLCJfcmVmMiIsImNoYXB0ZXIiLCJib29rSWQiLCJ2ZXJzZSIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiX3NjcmlwdHVyZUFsaWdubWVudEVkaXQiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWQiLCJhY3Rpb25zIiwiY2xlYXJDaGFuZ2VzIiwiaGFuZGxlQWxpZ25tZW50Q2xpY2siLCJzZXRFZGl0aW5nIiwic2V0VmVyc2VDaGFuZ2VkIiwiX3NjcmlwdHVyZUFsaWdubWVudEVkMiIsImFsaWduZWQiLCJhbGlnbmVyRGF0YSIsImN1cnJlbnRWZXJzZU9iamVjdHMiLCJlZGl0aW5nIiwiZW5hYmxlRWRpdCIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJuZXdWZXJzZVRleHQiLCJ1c2VFZmZlY3QiLCJjb25zb2xlIiwibG9nIiwiY2FsY3VsYXRlZEZvbnRTaXplIiwidXNlTWVtbyIsInBhcnNlRmxvYXQiLCJ0ZXh0QXJlYVN0eWxlIiwidmVyc2VUZXh0IiwiZ2V0VXNmbUZvclZlcnNlQ29udGVudCIsInZlcnNlT2JqZWN0cyIsIm9uQmx1ciIsImV2ZW50IiwiX2V2ZW50JHRhcmdldCIsInRhcmdldCIsInZhbHVlIiwidGhlbiIsIl9lZGl0aW5nIiwidmVyc2VSZWYiLCJjb25jYXQiLCJub1dvcmRzIiwidmVyc2VDb250ZW50IiwiY3JlYXRlRWxlbWVudCIsInNpemUiLCJkZWZhdWx0VmFsdWUiLCJzdHlsZSIsImF1dG9Gb2N1cyIsInZlcnNlS2V5IiwicGFkZGluZ0JvdHRvbSIsIm9uQ2xpY2siLCJkZWZhdWx0UHJvcHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9TY3JpcHR1cmVQYW5lL1NjcmlwdHVyZVBhbmUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHVzZURlZXBDb21wYXJlRWZmZWN0IGZyb20gJ3VzZS1kZWVwLWNvbXBhcmUtZWZmZWN0J1xuaW1wb3J0IHsgVmVyc2VPYmplY3RzIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgeyBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCB7IENpcmN1bGFyUHJvZ3Jlc3MgfSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG5pbXBvcnQgeyBCb29rT2JqZWN0c1R5cGUsIFNjcmlwdHVyZVJlZmVyZW5jZVR5cGUgfSBmcm9tICcuLi8uLi90eXBlcydcbmltcG9ydCB7XG4gIGRlbGF5LFxuICBnZXRSZXNvdXJjZU1lc3NhZ2UsXG4gIExPQURJTkdfUkVTT1VSQ0UsXG4gIHZlcnNlT2JqZWN0c0hhdmVXb3Jkcyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBTY3JpcHR1cmVBTGlnbm1lbnRFZGl0UHJvcHMsIHVzZVNjcmlwdHVyZUFsaWdubWVudEVkaXQgfSBmcm9tICcuLi8uLi9ob29rcy91c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0J1xuaW1wb3J0IHtcbiAgQ29udGFpbmVyLFxuICBDb250ZW50LFxuICBFbXB0eUNvbnRlbnQsXG59IGZyb20gJy4vc3R5bGVkJ1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICAvKiogb3B0aW9uYWwgc3R5bGVzIHRvIHVzZSBmb3IgY29udGVudCAqKi9cbiAgY29udGVudFN0eWxlOiBhbnk7XG4gIC8vIGluZGV4IG51bWJlciBmb3IgdGhpcyBzY3JpcHR1cmUgcGFuZVxuICBjdXJyZW50SW5kZXg6IG51bWJlcixcbiAgLy8gd2FpdGluZyB0byBkZXRlcm1pbmUgYnJhbmNoXG4gIGRldGVybWluaW5nQnJhbmNoOiBib29sZWFuLFxuICAvKiogbGFuZ3VhZ2UgZGlyZWN0aW9uIHRvIHVzZSAqKi9cbiAgZGlyZWN0aW9uOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogaWYgdHJ1ZSB0aGVuIGRvIG5vdCBkaXNwbGF5IGxleGljb24gcG9wb3ZlciBvbiBob3ZlciAqKi9cbiAgZGlzYWJsZVdvcmRQb3BvdmVyOiBib29sZWFufHVuZGVmaW5lZDtcbiAgLyoqIGZvbnQgc2l6ZSBmb3IgbWVzc2FnZXMgKi9cbiAgZm9udFNpemU6IG51bWJlcjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBGdW5jdGlvbjtcbiAgLyoqIHRydWUgaWYgYnJvd3NpbmcgTlQgKi9cbiAgaXNOVDogYm9vbGVhbjtcbiAgLyoqIHdoZXRoZXIgb3Igbm90IHRoaXMgY3VycmVudCB2ZXJzZSBoYXMgYmVlbiBzZWxlY3RlZCBmb3IgYWxpZ25tZW50ICovXG4gIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogYm9vbGVhbjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHZlcnNlIGFsaWdubWVudCBoYXMgZmluaXNoZWQgKi9cbiAgb25BbGlnbm1lbnRGaW5pc2g6IEZ1bmN0aW9uO1xuICAvLyBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9va1xuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBCb29rT2JqZWN0c1R5cGUsXG4gIC8qKiBjdXJyZW50IHJlZmVyZW5jZSAqKi9cbiAgcmVmZXJlbmNlOiBTY3JpcHR1cmVSZWZlcmVuY2VUeXBlO1xuICAvKiogb3B0aW9uYWwgc3R5bGVzIHRvIHVzZSBmb3IgcmVmZXJlbmNlICoqL1xuICByZWZTdHlsZTogYW55O1xuICAvKiogb2JqZWN0IHRoYXQgY29udGFpbnMgcmVzb3VyY2UgbG9hZGluZyBzdGF0dXMgb3IgZmV0Y2hpbmcgZXJyb3JzICovXG4gIHJlc291cmNlU3RhdHVzOiBvYmplY3R8dW5kZWZpbmVkO1xuICAvKiogcmVzb3VyY2UgdGhhdCB3YXMgbG9hZGVkICovXG4gIHJlc291cmNlTGluazogc3RyaW5nfHVuZGVmaW5lZDtcbiAgLyoqIHRydWUgaWYgY3VycmVudGx5IHNhdmluZyB1cGRhdGVkIHRleHQgYW5kIGFsaWdubWVudHMgKi9cbiAgc2F2aW5nOiBib29sZWFuO1xuICAvLyBpbml0aWFsaXphdGlvbiBmb3IgdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdFxuICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnOiBTY3JpcHR1cmVBTGlnbm1lbnRFZGl0UHJvcHMsXG4gIC8qKiBzZXJ2ZXIgKi9cbiAgc2VydmVyOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogY2FsbGJhY2sgdG8gZmxhZyB0aGF0IHdlIGFyZSBlZGl0aW5nICovXG4gIHNldEVkaXRWZXJzZTogRnVuY3Rpb247XG4gIC8qKiBjYWxsYmFjayB0byBmbGFnIHVuc2F2ZWQgc3RhdHVzICovXG4gIHNldFNhdmVkQ2hhbmdlczogRnVuY3Rpb247XG4gIC8vIGNhbGxiYWNrIGZvciBjaGFuZ2UgaW4gd29yZCBhbGlnbm1lbnQgc3RhdHVzXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBGdW5jdGlvbjtcbiAgLyoqIG9wdGlvbmFsIGZ1bmN0aW9uIGZvciBsb2NhbGl6YXRpb24gKi9cbiAgdHJhbnNsYXRlOiBGdW5jdGlvbjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB0byB1cGRhdGUgdmVyc2UgYWxpZ25tZW50IHN0YXR1cyAqL1xuICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXM6IEZ1bmN0aW9uO1xufVxuXG5jb25zdCBNZXNzYWdlU3R5bGUgPSB7XG4gIGRpcmVjdGlvbjogJ2x0cicsXG4gIHdoaXRlU3BhY2U6ICdwcmUtd3JhcCcsXG4gIGxpbmVIZWlnaHQ6ICdub3JtYWwnLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIGhlaWdodDogJzEwMCUnLFxuICB3aWR0aDogJzEwMCUnLFxuICBmb250U2l6ZTogJzE2cHgnLFxuICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgZm9udFdlaWdodDogJ2JvbGQnLFxufVxuXG5jb25zdCBUZXh0QXJlYVN0eWxlID0ge1xuICBoZWlnaHQ6ICc2MCUnLFxuICB3aWR0aDogJzEwMCUnLFxuICBtaW5XaWR0aDogJzIyMHB4JyxcbiAgbWluSGVpZ2h0OiAnMTAwcHgnLFxuICBmb250U2l6ZTogJzE2cHgnLFxufVxuXG5mdW5jdGlvbiBTY3JpcHR1cmVQYW5lKHtcbiAgY3VycmVudEluZGV4LFxuICBjb250ZW50U3R5bGUsXG4gIGRldGVybWluaW5nQnJhbmNoLFxuICBkaXJlY3Rpb24sXG4gIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgZm9udFNpemUsXG4gIGdldExleGljb25EYXRhLFxuICBpc05ULFxuICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQsXG4gIG9uQWxpZ25tZW50RmluaXNoLFxuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICByZWZlcmVuY2UsXG4gIHJlZlN0eWxlLFxuICByZXNvdXJjZVN0YXR1cyxcbiAgcmVzb3VyY2VMaW5rLFxuICBzYXZpbmcsXG4gIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcsXG4gIHNldEVkaXRWZXJzZSxcbiAgc2V0U2F2ZWRDaGFuZ2VzLFxuICBzZXRXb3JkQWxpZ25lclN0YXR1cyxcbiAgc2VydmVyLFxuICB0cmFuc2xhdGUsXG4gIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyxcbn0gOiBQcm9wcykge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlX10gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgZG9pbmdBbGlnbm1lbnQ6IGZhbHNlLFxuICAgIG5ld1RleHQ6IG51bGwsXG4gICAgcHJvY2Vzc2luZ0VkaXQ6IGZhbHNlLFxuICB9KVxuICBjb25zdCB7XG4gICAgZG9pbmdBbGlnbm1lbnQsXG4gICAgbmV3VGV4dCxcbiAgICBwcm9jZXNzaW5nRWRpdCwgLy8gdHJ1ZSB3aGVuIHdlIGFyZSBwcm9jZXNzaW5nIGVkaXQgdGV4dCBhZnRlciBvbkJsdXJcbiAgfSA9IHN0YXRlXG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICBjb25zdCBbaW5pdGlhbFZlcnNlVGV4dCwgc2V0SW5pdGlhbFZlcnNlVGV4dF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKVxuXG4gIGxldCByZXNvdXJjZU1lc3NhZ2UgPSAnJ1xuXG4gIGlmIChzYXZpbmcpIHtcbiAgICByZXNvdXJjZU1lc3NhZ2UgPSAnU2F2aW5nIENoYW5nZXMuLi4nXG4gIH0gZWxzZSBpZiAoZGV0ZXJtaW5pbmdCcmFuY2gpIHtcbiAgICByZXNvdXJjZU1lc3NhZ2UgPSAnUHJlLScgKyBMT0FESU5HX1JFU09VUkNFXG4gIH0gZWxzZSB7XG4gICAgcmVzb3VyY2VNZXNzYWdlID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVClcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBjaGFwdGVyLFxuICAgIGJvb2tJZCxcbiAgICB2ZXJzZSxcbiAgfSA9IHJlZmVyZW5jZSB8fCB7fVxuICBkaXJlY3Rpb24gPSBkaXJlY3Rpb24gfHwgJ2x0cidcblxuICByZWZTdHlsZSA9IHJlZlN0eWxlIHx8IHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogJzkwJScsXG4gIH1cblxuICBjb250ZW50U3R5bGUgPSBjb250ZW50U3R5bGUgfHwge1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiAnMTAwJScsXG4gIH1cblxuICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICAuLi5zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICAgIGluaXRpYWxWZXJzZVRleHQsXG4gICAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgfVxuXG4gIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0ID0gdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdChfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZylcbiAgY29uc3Qge1xuICAgIGFjdGlvbnM6IHtcbiAgICAgIGNsZWFyQ2hhbmdlcyxcbiAgICAgIGhhbmRsZUFsaWdubWVudENsaWNrLFxuICAgICAgc2V0RWRpdGluZyxcbiAgICAgIHNldFZlcnNlQ2hhbmdlZCxcbiAgICB9LFxuICAgIHN0YXRlOiB7XG4gICAgICBhbGlnbmVkLFxuICAgICAgYWxpZ25lckRhdGEsXG4gICAgICBjdXJyZW50VmVyc2VPYmplY3RzLFxuICAgICAgZWRpdGluZyxcbiAgICAgIGVuYWJsZUVkaXQsXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICAgICAgbmV3VmVyc2VUZXh0LFxuICAgIH0sXG4gIH0gPSBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdFxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCAmJiAhYWxpZ25lckRhdGEgJiYgIWRvaW5nQWxpZ25tZW50KSB7XG4gICAgICBpZiAoIWVkaXRpbmcgJiYgIXByb2Nlc3NpbmdFZGl0KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVQYW5lIC0gdmVyc2Ugc2VsZWN0ZWQgZm9yIGFsaWdubWVudGAsIHJlZmVyZW5jZSlcbiAgICAgICAgaGFuZGxlQWxpZ25tZW50Q2xpY2soKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZVBhbmUgLSB2ZXJzZSBub3QgcmVhZHkgZm9yIGFsaWdubWVudGAsIHtlZGl0aW5nLCBwcm9jZXNzaW5nRWRpdH0pXG4gICAgICB9XG4gICAgfVxuICB9LCBbaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LCBhbGlnbmVyRGF0YSwgZG9pbmdBbGlnbm1lbnQsIGVkaXRpbmcsIHByb2Nlc3NpbmdFZGl0XSlcblxuICAvLyBjb25zdCB2ZXJzZUNoYW5nZWQgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgLy8gICByZXR1cm4gKG5ld1ZlcnNlVGV4dCAhPT0gbmV3VGV4dClcbiAgLy8gfSwgW25ld1ZlcnNlVGV4dCwgbmV3VGV4dF0pXG4gIC8vXG4gIC8vIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gIC8vICAgaWYgKG5ld1ZlcnNlVGV4dCAhPT0gbmV3VGV4dCkge1xuICAvLyAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZVBhbmUgLSBuZXcgdmVyc2UgdGV4dCBkaXZlcmdlZGAsIHsgbmV3VmVyc2VUZXh0LCBuZXdUZXh0IH0pXG4gIC8vICAgfSBlbHNlIHtcbiAgLy8gICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVQYW5lIC0gbmV3IHZlcnNlIHRleHQgY29udmVyZ2VkYCwgeyBuZXdWZXJzZVRleHQgfSlcbiAgLy8gICB9XG4gIC8vIH0sIFt2ZXJzZUNoYW5nZWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzICYmIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyhyZWZlcmVuY2UsIGFsaWduZWQpXG4gIH0sIFthbGlnbmVkLCBjaGFwdGVyLCB2ZXJzZSwgYm9va0lkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhbGlnbmVyRGF0YSAmJiAhZG9pbmdBbGlnbm1lbnQpIHtcbiAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzICYmIHNldFdvcmRBbGlnbmVyU3RhdHVzKF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0KVxuICAgICAgc2V0U3RhdGUoeyBkb2luZ0FsaWdubWVudDogdHJ1ZSB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWRvaW5nQWxpZ25tZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVQYW5lIC0gYWxpZ25lckRhdGEgd2VudCBmYWxzZSB1bmV4cGVjdGVkYCwgeyByZWZlcmVuY2UsIGFsaWduZXJEYXRhLCBkb2luZ0FsaWdubWVudCB9KVxuICAgICAgfVxuXG4gICAgICBzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiBzZXRXb3JkQWxpZ25lclN0YXR1cyhfc2NyaXB0dXJlQWxpZ25tZW50RWRpdClcbiAgICAgIHNldFN0YXRlKHsgZG9pbmdBbGlnbm1lbnQ6IGZhbHNlIH0pXG4gICAgICBvbkFsaWdubWVudEZpbmlzaCAmJiBvbkFsaWdubWVudEZpbmlzaCgpXG4gICAgfVxuICB9LCBbX3NjcmlwdHVyZUFsaWdubWVudEVkaXQ/LnN0YXRlPy5hbGlnbmVyRGF0YV0pXG5cbiAgLy8gZHluYW1pY2FsbHkgYWRqdXN0IGZvbnQgc2l6ZVxuICBjb25zdCBjYWxjdWxhdGVkRm9udFNpemUgPSBSZWFjdC51c2VNZW1vKCgpID0+IChcbiAgICBwYXJzZUZsb2F0KFRleHRBcmVhU3R5bGUuZm9udFNpemUpICogZm9udFNpemUgLyAxMDAgKyAncHgnXG4gICksIFtmb250U2l6ZV0pXG5cbiAgY29uc3QgdGV4dEFyZWFTdHlsZSA9IHtcbiAgICAuLi5jb250ZW50U3R5bGUsXG4gICAgLi4uVGV4dEFyZWFTdHlsZSxcbiAgICBmb250U2l6ZTogY2FsY3VsYXRlZEZvbnRTaXplLFxuICB9XG5cbiAgdXNlRGVlcENvbXBhcmVFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHZlcnNlVGV4dCA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuZ2V0VXNmbUZvclZlcnNlQ29udGVudCh7IHZlcnNlT2JqZWN0czogaW5pdGlhbFZlcnNlT2JqZWN0cyB9KVxuICAgIGNsZWFyQ2hhbmdlcygpXG4gICAgc2V0SW5pdGlhbFZlcnNlVGV4dCh2ZXJzZVRleHQpXG4gICAgc2V0U3RhdGUoeyBuZXdUZXh0OiBudWxsIH0pXG4gIH0sIFt7IHJlZmVyZW5jZSwgaW5pdGlhbFZlcnNlT2JqZWN0cyB9XSlcblxuICBmdW5jdGlvbiBvbkJsdXIoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSB7XG4gICAgY29uc3QgbmV3VmVyc2VUZXh0ID0gZXZlbnQ/LnRhcmdldD8udmFsdWUgLy8gZ2V0IG5ldyB0ZXh0XG4gICAgc2V0U3RhdGUoeyBuZXdUZXh0OiBuZXdWZXJzZVRleHQsIHByb2Nlc3NpbmdFZGl0OiB0cnVlIH0pXG4gICAgZGVsYXkoNTAwKS50aGVuKCgpID0+IHtcbiAgICAgIHNldEVkaXRpbmcoZmFsc2UsIG5ld1ZlcnNlVGV4dCkgLy8gcHJvY2VzcyB0aGUgbGF0ZXN0IGVkaXQgYWZ0ZXIgc3RhdGVzIHVwZGF0ZVxuICAgIH0pXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBtb25pdG9yIGZvciBlZGl0IHN0YXRlIGNoYWduZXMgYW5kIGNhbGwgYmFjayBzdGF0dXMgdG8gc2NyaXB0dXJlIGNhcmRcbiAgICBpZiAoIWVkaXRpbmcgJiYgcHJvY2Vzc2luZ0VkaXQpIHtcbiAgICAgIHNldFN0YXRlKHsgcHJvY2Vzc2luZ0VkaXQ6IGZhbHNlIH0pXG4gICAgfVxuICAgIGNvbnN0IF9lZGl0aW5nID0gZWRpdGluZyB8fCBwcm9jZXNzaW5nRWRpdFxuICAgIGNvbnN0IHZlcnNlUmVmID0gYCR7cmVmZXJlbmNlLmNoYXB0ZXJ9OiR7cmVmZXJlbmNlLnZlcnNlfWBcbiAgICBzZXRFZGl0VmVyc2UgJiYgc2V0RWRpdFZlcnNlKHZlcnNlUmVmLCBfZWRpdGluZylcbiAgfSwgW2VkaXRpbmcsIHByb2Nlc3NpbmdFZGl0XSlcblxuICBjb25zdCB2ZXJzZU9iamVjdHMgPSBjdXJyZW50VmVyc2VPYmplY3RzIHx8IGluaXRpYWxWZXJzZU9iamVjdHMgfHwgW11cbiAgY29uc3Qgbm9Xb3JkcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gIXZlcnNlT2JqZWN0c0hhdmVXb3Jkcyh2ZXJzZU9iamVjdHMpLCBbY3VycmVudFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0c10pXG5cbiAgLyoqXG4gICAqIGRldGVybWluZSB3aGF0IFVJIHRvIHNob3cgYmFzZWQgb24gc3RhdGVcbiAgICogQHBhcmFtIHtib29sZWFufSBlZGl0aW5nIC0gaWYgdHJ1ZSBzaG93IGVkaXQgbW9kZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZUVkaXQgLSBpZiB0cnVlIHRoZW4gZWRpdCBpcyBlbmFibGVkXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbm9Xb3JkcyAtIGlmIHRydWUgdGhlbiB0aGVyZSBhcmUgbm8gZGlzcGxheWFibGUgd29yZHNcbiAgICogQHBhcmFtIHtib29sZWFufSBwcm9jZXNzaW5nRWRpdCAtIHRydWUgaWYgZWRpdCBpcyBiZWluZyBwcm9jZXNzZXNcbiAgICovXG4gIGZ1bmN0aW9uIHZlcnNlQ29udGVudChlZGl0aW5nLCBlbmFibGVFZGl0LCBub1dvcmRzLCBwcm9jZXNzaW5nRWRpdCkge1xuICAgIGlmIChwcm9jZXNzaW5nRWRpdCkgeyAvLyBwdXQgdXAgc3Bpbm5lciB3aGlsZSBwcm9jZXNzaW5nIHRoZSBlZGl0XG4gICAgICByZXR1cm4gPENpcmN1bGFyUHJvZ3Jlc3Mgc2l6ZT17NDB9Lz5cbiAgICB9XG5cbiAgICBpZiAoZWRpdGluZykge1xuICAgICAgcmV0dXJuIDx0ZXh0YXJlYVxuICAgICAgICBkZWZhdWx0VmFsdWU9e25ld1ZlcnNlVGV4dCB8fCBpbml0aWFsVmVyc2VUZXh0fVxuICAgICAgICBvbkJsdXI9e29uQmx1cn1cbiAgICAgICAgc3R5bGU9e3RleHRBcmVhU3R5bGV9XG4gICAgICAgIGF1dG9Gb2N1c1xuICAgICAgLz5cbiAgICB9XG5cbiAgICBpZiAobm9Xb3JkcyAmJiBlbmFibGVFZGl0KSB7IC8vIHNob3cgYSBjbGlja2FibGUgbWVzc2FnZSBpbiB0aGUgY2FzZSB0aGF0IHRoZXJlIGlzIG5vIHRleHQgdG8gY2xpY2sgb25cbiAgICAgIHJldHVybiA8RW1wdHlDb250ZW50PlxuICAgICAgICBDbGljayB0byBFZGl0XG4gICAgICA8L0VtcHR5Q29udGVudD5cbiAgICB9XG5cbiAgICByZXR1cm4gPFZlcnNlT2JqZWN0c1xuICAgICAgdmVyc2VLZXk9e2Ake3JlZmVyZW5jZS5jaGFwdGVyfToke3JlZmVyZW5jZS52ZXJzZX1gfVxuICAgICAgdmVyc2VPYmplY3RzPXt2ZXJzZU9iamVjdHN9XG4gICAgICBkaXNhYmxlV29yZFBvcG92ZXI9e2Rpc2FibGVXb3JkUG9wb3Zlcn1cbiAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YX1cbiAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgIC8+XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgc3R5bGU9e3sgZGlyZWN0aW9uLCB3aWR0aDogJzEwMCUnLCBwYWRkaW5nQm90dG9tOiAnMC41ZW0nIH19PlxuICAgICAge3Jlc291cmNlTWVzc2FnZSA/XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgPGRpdiBzdHlsZT17TWVzc2FnZVN0eWxlfT5cbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGZvbnRTaXplOiBgJHtmb250U2l6ZX0lYCB9fT4ge3Jlc291cmNlTWVzc2FnZX0gPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA6XG4gICAgICAgIDxDb250ZW50PlxuICAgICAgICAgIDxzcGFuIHN0eWxlPXtyZWZTdHlsZX0+IHtjaGFwdGVyfTp7dmVyc2V9Jm5ic3A7PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIHN0eWxlPXtjb250ZW50U3R5bGV9IG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHNldEVkaXRpbmcgJiYgc2V0RWRpdGluZyh0cnVlKVxuICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3ZlcnNlQ29udGVudChlZGl0aW5nLCBlbmFibGVFZGl0LCBub1dvcmRzLCBwcm9jZXNzaW5nRWRpdCl9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L0NvbnRlbnQ+XG4gICAgICB9XG4gICAgPC9Db250YWluZXI+XG4gIClcbn1cblxuU2NyaXB0dXJlUGFuZS5kZWZhdWx0UHJvcHMgPSB7IHZlcnNlT2JqZWN0czogW10gfVxuXG5leHBvcnQgZGVmYXVsdCBTY3JpcHR1cmVQYW5lXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBSyxNQUFNLE9BQU87QUFDOUIsT0FBT0Msb0JBQW9CLE1BQU0seUJBQXlCO0FBQzFELFNBQVNDLFlBQVksUUFBUSx5QkFBeUI7QUFDdEQsU0FBU0MseUJBQXlCLFFBQVEsa0JBQWtCO0FBQzVELFNBQVNDLGdCQUFnQixRQUFRLHVCQUF1QjtBQUN4RCxTQUFTQyxlQUFlLEVBQUVDLHNCQUFzQixRQUFRLGFBQWE7QUFDckUsU0FDRUMsS0FBSyxFQUNMQyxrQkFBa0IsRUFDbEJDLGdCQUFnQixFQUNoQkMscUJBQXFCLFFBQ2hCLGFBQWE7QUFDcEIsU0FBU0MsMkJBQTJCLEVBQUVDLHlCQUF5QixRQUFRLHVDQUF1QztBQUM5RyxTQUNFQyxTQUFTLEVBQ1RDLE9BQU8sRUFDUEMsWUFBWSxRQUNQLFVBQVU7QUFtRGpCLElBQU1DLFlBQVksR0FBRztFQUNuQkMsU0FBUyxFQUFFLEtBQUs7RUFDaEJDLFVBQVUsRUFBRSxVQUFVO0VBQ3RCQyxVQUFVLEVBQUUsUUFBUTtFQUNwQkMsT0FBTyxFQUFFLE1BQU07RUFDZkMsY0FBYyxFQUFFLFFBQVE7RUFDeEJDLFVBQVUsRUFBRSxRQUFRO0VBQ3BCQyxNQUFNLEVBQUUsTUFBTTtFQUNkQyxLQUFLLEVBQUUsTUFBTTtF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
310
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZURlZXBDb21wYXJlRWZmZWN0IiwiVmVyc2VPYmplY3RzIiwiVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyIsIkNpcmN1bGFyUHJvZ3Jlc3MiLCJCb29rT2JqZWN0c1R5cGUiLCJTY3JpcHR1cmVSZWZlcmVuY2VUeXBlIiwiZGVsYXkiLCJnZXRSZXNvdXJjZU1lc3NhZ2UiLCJMT0FESU5HX1JFU09VUkNFIiwidmVyc2VPYmplY3RzSGF2ZVdvcmRzIiwiU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzIiwidXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCIsIkNvbnRhaW5lciIsIkNvbnRlbnQiLCJFbXB0eUNvbnRlbnQiLCJNZXNzYWdlU3R5bGUiLCJkaXJlY3Rpb24iLCJ3aGl0ZVNwYWNlIiwibGluZUhlaWdodCIsImRpc3BsYXkiLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiLCJoZWlnaHQiLCJ3aWR0aCIsImZvbnRTaXplIiwiZm9udEZhbWlseSIsImZvbnRXZWlnaHQiLCJUZXh0QXJlYVN0eWxlIiwibWluV2lkdGgiLCJtaW5IZWlnaHQiLCJTY3JpcHR1cmVQYW5lIiwiX3JlZiIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZDMiLCJjdXJyZW50SW5kZXgiLCJjb250ZW50U3R5bGUiLCJkZXRlcm1pbmluZ0JyYW5jaCIsImRpc2FibGVXb3JkUG9wb3ZlciIsImdldExleGljb25EYXRhIiwiaXNOVCIsImlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsIm9uQWxpZ25tZW50RmluaXNoIiwib3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyIsInJlZmVyZW5jZSIsInJlZlN0eWxlIiwicmVzb3VyY2VTdGF0dXMiLCJyZXNvdXJjZUxpbmsiLCJzYXZpbmciLCJzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwic2V0RWRpdFZlcnNlIiwic2V0U2F2ZWRDaGFuZ2VzIiwic2V0V29yZEFsaWduZXJTdGF0dXMiLCJzZXJ2ZXIiLCJ0cmFuc2xhdGUiLCJ1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJfUmVhY3QkdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsImRvaW5nQWxpZ25tZW50IiwibmV3VGV4dCIsInByb2Nlc3NpbmdFZGl0IiwiX1JlYWN0JHVzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiX29iamVjdFNwcmVhZCIsIl9SZWFjdCR1c2VTdGF0ZTMiLCJfUmVhY3QkdXNlU3RhdGU0IiwiaW5pdGlhbFZlcnNlVGV4dCIsInNldEluaXRpYWxWZXJzZVRleHQiLCJyZXNvdXJjZU1lc3NhZ2UiLCJfcmVmMiIsImNoYXB0ZXIiLCJib29rSWQiLCJ2ZXJzZSIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiX3NjcmlwdHVyZUFsaWdubWVudEVkaXQiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWQiLCJhY3Rpb25zIiwiY2xlYXJDaGFuZ2VzIiwiaGFuZGxlQWxpZ25tZW50Q2xpY2siLCJzZXRFZGl0aW5nIiwic2V0VmVyc2VDaGFuZ2VkIiwiX3NjcmlwdHVyZUFsaWdubWVudEVkMiIsImFsaWduZWQiLCJhbGlnbmVyRGF0YSIsImN1cnJlbnRWZXJzZU9iamVjdHMiLCJlZGl0aW5nIiwiZW5hYmxlRWRpdCIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJuZXdWZXJzZVRleHQiLCJ1c2VFZmZlY3QiLCJjb25zb2xlIiwibG9nIiwiY2FsY3VsYXRlZEZvbnRTaXplIiwidXNlTWVtbyIsInBhcnNlRmxvYXQiLCJ0ZXh0QXJlYVN0eWxlIiwidmVyc2VUZXh0IiwiZ2V0VXNmbUZvclZlcnNlQ29udGVudCIsInZlcnNlT2JqZWN0cyIsIm9uQmx1ciIsImV2ZW50IiwiX2V2ZW50JHRhcmdldCIsInRhcmdldCIsInZhbHVlIiwidGhlbiIsIl9lZGl0aW5nIiwidmVyc2VSZWYiLCJjb25jYXQiLCJub1dvcmRzIiwidmVyc2VDb250ZW50IiwiY3JlYXRlRWxlbWVudCIsInNpemUiLCJkZWZhdWx0VmFsdWUiLCJzdHlsZSIsImF1dG9Gb2N1cyIsInZlcnNlS2V5IiwicGFkZGluZ0JvdHRvbSIsIm9uQ2xpY2siLCJkZWZhdWx0UHJvcHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9TY3JpcHR1cmVQYW5lL1NjcmlwdHVyZVBhbmUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHVzZURlZXBDb21wYXJlRWZmZWN0IGZyb20gJ3VzZS1kZWVwLWNvbXBhcmUtZWZmZWN0J1xuaW1wb3J0IHsgVmVyc2VPYmplY3RzIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgeyBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCB7IENpcmN1bGFyUHJvZ3Jlc3MgfSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG5pbXBvcnQgeyBCb29rT2JqZWN0c1R5cGUsIFNjcmlwdHVyZVJlZmVyZW5jZVR5cGUgfSBmcm9tICcuLi8uLi90eXBlcydcbmltcG9ydCB7XG4gIGRlbGF5LFxuICBnZXRSZXNvdXJjZU1lc3NhZ2UsXG4gIExPQURJTkdfUkVTT1VSQ0UsXG4gIHZlcnNlT2JqZWN0c0hhdmVXb3Jkcyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBTY3JpcHR1cmVBTGlnbm1lbnRFZGl0UHJvcHMsIHVzZVNjcmlwdHVyZUFsaWdubWVudEVkaXQgfSBmcm9tICcuLi8uLi9ob29rcy91c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0J1xuaW1wb3J0IHtcbiAgQ29udGFpbmVyLFxuICBDb250ZW50LFxuICBFbXB0eUNvbnRlbnQsXG59IGZyb20gJy4vc3R5bGVkJ1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICAvKiogb3B0aW9uYWwgc3R5bGVzIHRvIHVzZSBmb3IgY29udGVudCAqKi9cbiAgY29udGVudFN0eWxlOiBhbnk7XG4gIC8vIGluZGV4IG51bWJlciBmb3IgdGhpcyBzY3JpcHR1cmUgcGFuZVxuICBjdXJyZW50SW5kZXg6IG51bWJlcixcbiAgLy8gd2FpdGluZyB0byBkZXRlcm1pbmUgYnJhbmNoXG4gIGRldGVybWluaW5nQnJhbmNoOiBib29sZWFuLFxuICAvKiogbGFuZ3VhZ2UgZGlyZWN0aW9uIHRvIHVzZSAqKi9cbiAgZGlyZWN0aW9uOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogaWYgdHJ1ZSB0aGVuIGRvIG5vdCBkaXNwbGF5IGxleGljb24gcG9wb3ZlciBvbiBob3ZlciAqKi9cbiAgZGlzYWJsZVdvcmRQb3BvdmVyOiBib29sZWFufHVuZGVmaW5lZDtcbiAgLyoqIGZvbnQgc2l6ZSBmb3IgbWVzc2FnZXMgKi9cbiAgZm9udFNpemU6IG51bWJlcjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBGdW5jdGlvbjtcbiAgLyoqIHRydWUgaWYgYnJvd3NpbmcgTlQgKi9cbiAgaXNOVDogYm9vbGVhbjtcbiAgLyoqIHdoZXRoZXIgb3Igbm90IHRoaXMgY3VycmVudCB2ZXJzZSBoYXMgYmVlbiBzZWxlY3RlZCBmb3IgYWxpZ25tZW50ICovXG4gIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogYm9vbGVhbjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHZlcnNlIGFsaWdubWVudCBoYXMgZmluaXNoZWQgKi9cbiAgb25BbGlnbm1lbnRGaW5pc2g6IEZ1bmN0aW9uO1xuICAvLyBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9va1xuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBCb29rT2JqZWN0c1R5cGUsXG4gIC8qKiBjdXJyZW50IHJlZmVyZW5jZSAqKi9cbiAgcmVmZXJlbmNlOiBTY3JpcHR1cmVSZWZlcmVuY2VUeXBlO1xuICAvKiogb3B0aW9uYWwgc3R5bGVzIHRvIHVzZSBmb3IgcmVmZXJlbmNlICoqL1xuICByZWZTdHlsZTogYW55O1xuICAvKiogb2JqZWN0IHRoYXQgY29udGFpbnMgcmVzb3VyY2UgbG9hZGluZyBzdGF0dXMgb3IgZmV0Y2hpbmcgZXJyb3JzICovXG4gIHJlc291cmNlU3RhdHVzOiBvYmplY3R8dW5kZWZpbmVkO1xuICAvKiogcmVzb3VyY2UgdGhhdCB3YXMgbG9hZGVkICovXG4gIHJlc291cmNlTGluazogc3RyaW5nfHVuZGVmaW5lZDtcbiAgLyoqIHRydWUgaWYgY3VycmVudGx5IHNhdmluZyB1cGRhdGVkIHRleHQgYW5kIGFsaWdubWVudHMgKi9cbiAgc2F2aW5nOiBib29sZWFuO1xuICAvLyBpbml0aWFsaXphdGlvbiBmb3IgdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdFxuICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnOiBTY3JpcHR1cmVBTGlnbm1lbnRFZGl0UHJvcHMsXG4gIC8qKiBzZXJ2ZXIgKi9cbiAgc2VydmVyOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogY2FsbGJhY2sgdG8gZmxhZyB0aGF0IHdlIGFyZSBlZGl0aW5nICovXG4gIHNldEVkaXRWZXJzZTogRnVuY3Rpb247XG4gIC8qKiBjYWxsYmFjayB0byBmbGFnIHVuc2F2ZWQgc3RhdHVzICovXG4gIHNldFNhdmVkQ2hhbmdlczogRnVuY3Rpb247XG4gIC8vIGNhbGxiYWNrIGZvciBjaGFuZ2UgaW4gd29yZCBhbGlnbm1lbnQgc3RhdHVzXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBGdW5jdGlvbjtcbiAgLyoqIG9wdGlvbmFsIGZ1bmN0aW9uIGZvciBsb2NhbGl6YXRpb24gKi9cbiAgdHJhbnNsYXRlOiBGdW5jdGlvbjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB0byB1cGRhdGUgdmVyc2UgYWxpZ25tZW50IHN0YXR1cyAqL1xuICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXM6IEZ1bmN0aW9uO1xufVxuXG5jb25zdCBNZXNzYWdlU3R5bGUgPSB7XG4gIGRpcmVjdGlvbjogJ2x0cicsXG4gIHdoaXRlU3BhY2U6ICdwcmUtd3JhcCcsXG4gIGxpbmVIZWlnaHQ6ICdub3JtYWwnLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIGhlaWdodDogJzEwMCUnLFxuICB3aWR0aDogJzEwMCUnLFxuICBmb250U2l6ZTogJzE2cHgnLFxuICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgZm9udFdlaWdodDogJ2JvbGQnLFxufVxuXG5jb25zdCBUZXh0QXJlYVN0eWxlID0ge1xuICBoZWlnaHQ6ICc2MCUnLFxuICB3aWR0aDogJzEwMCUnLFxuICBtaW5XaWR0aDogJzIyMHB4JyxcbiAgbWluSGVpZ2h0OiAnMTAwcHgnLFxuICBmb250U2l6ZTogJzE2cHgnLFxufVxuXG5mdW5jdGlvbiBTY3JpcHR1cmVQYW5lKHtcbiAgY3VycmVudEluZGV4LFxuICBjb250ZW50U3R5bGUsXG4gIGRldGVybWluaW5nQnJhbmNoLFxuICBkaXJlY3Rpb24sXG4gIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgZm9udFNpemUsXG4gIGdldExleGljb25EYXRhLFxuICBpc05ULFxuICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQsXG4gIG9uQWxpZ25tZW50RmluaXNoLFxuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICByZWZlcmVuY2UsXG4gIHJlZlN0eWxlLFxuICByZXNvdXJjZVN0YXR1cyxcbiAgcmVzb3VyY2VMaW5rLFxuICBzYXZpbmcsXG4gIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcsXG4gIHNldEVkaXRWZXJzZSxcbiAgc2V0U2F2ZWRDaGFuZ2VzLFxuICBzZXRXb3JkQWxpZ25lclN0YXR1cyxcbiAgc2VydmVyLFxuICB0cmFuc2xhdGUsXG4gIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyxcbn0gOiBQcm9wcykge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlX10gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgZG9pbmdBbGlnbm1lbnQ6IGZhbHNlLFxuICAgIG5ld1RleHQ6IG51bGwsXG4gICAgcHJvY2Vzc2luZ0VkaXQ6IGZhbHNlLFxuICB9KVxuICBjb25zdCB7XG4gICAgZG9pbmdBbGlnbm1lbnQsXG4gICAgbmV3VGV4dCxcbiAgICBwcm9jZXNzaW5nRWRpdCwgLy8gdHJ1ZSB3aGVuIHdlIGFyZSBwcm9jZXNzaW5nIGVkaXQgdGV4dCBhZnRlciBvbkJsdXJcbiAgfSA9IHN0YXRlXG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICBjb25zdCBbaW5pdGlhbFZlcnNlVGV4dCwgc2V0SW5pdGlhbFZlcnNlVGV4dF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKVxuXG4gIGxldCByZXNvdXJjZU1lc3NhZ2UgPSAnJ1xuXG4gIGlmIChzYXZpbmcpIHtcbiAgICByZXNvdXJjZU1lc3NhZ2UgPSAnU2F2aW5nIENoYW5nZXMuLi4nXG4gIH0gZWxzZSBpZiAoZGV0ZXJtaW5pbmdCcmFuY2gpIHtcbiAgICByZXNvdXJjZU1lc3NhZ2UgPSAnUHJlLScgKyBMT0FESU5HX1JFU09VUkNFXG4gIH0gZWxzZSB7XG4gICAgcmVzb3VyY2VNZXNzYWdlID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVClcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBjaGFwdGVyLFxuICAgIGJvb2tJZCxcbiAgICB2ZXJzZSxcbiAgfSA9IHJlZmVyZW5jZSB8fCB7fVxuICBkaXJlY3Rpb24gPSBkaXJlY3Rpb24gfHwgJ2x0cidcblxuICByZWZTdHlsZSA9IHJlZlN0eWxlIHx8IHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogJzkwJScsXG4gIH1cblxuICBjb250ZW50U3R5bGUgPSBjb250ZW50U3R5bGUgfHwge1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiAnMTAwJScsXG4gIH1cblxuICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICAuLi5zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICAgIGluaXRpYWxWZXJzZVRleHQsXG4gICAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgfVxuXG4gIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0ID0gdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdChfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZylcbiAgY29uc3Qge1xuICAgIGFjdGlvbnM6IHtcbiAgICAgIGNsZWFyQ2hhbmdlcyxcbiAgICAgIGhhbmRsZUFsaWdubWVudENsaWNrLFxuICAgICAgc2V0RWRpdGluZyxcbiAgICAgIHNldFZlcnNlQ2hhbmdlZCxcbiAgICB9LFxuICAgIHN0YXRlOiB7XG4gICAgICBhbGlnbmVkLFxuICAgICAgYWxpZ25lckRhdGEsXG4gICAgICBjdXJyZW50VmVyc2VPYmplY3RzLFxuICAgICAgZWRpdGluZyxcbiAgICAgIGVuYWJsZUVkaXQsXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICAgICAgbmV3VmVyc2VUZXh0LFxuICAgIH0sXG4gIH0gPSBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdFxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIG1vbml0b3IgaWYgd2UgbmVlZCB0byBzdGFydCBhbGlnbm1lbnRcbiAgICBpZiAoaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50ICYmICFhbGlnbmVyRGF0YSAmJiAhZG9pbmdBbGlnbm1lbnQpIHsgLy8gY2hlY2sgaWYgZWRpdCBmb3IgdGhpcyB2ZXJzZSBpcyBzZWxlY3RlZCBhbmQgbm90IGFscmVhZHkgZG9pbmcgYWxpZ25tZW50XG4gICAgICBpZiAoIWVkaXRpbmcgJiYgIXByb2Nlc3NpbmdFZGl0KSB7IC8vIG1ha2Ugc3VyZSBub3Qgc3RpbGwgZWRpdGluZyBvciBwcm9jZXNzaW5nIGVkaXRcbiAgICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZVBhbmUgLSB2ZXJzZSBzZWxlY3RlZCBmb3IgYWxpZ25tZW50YCwgcmVmZXJlbmNlKVxuICAgICAgICBoYW5kbGVBbGlnbm1lbnRDbGljaygpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlUGFuZSAtIHN0aWxsIGVkaXRpbmcgdmVyc2UsIG5vdCByZWFkeSBmb3IgYWxpZ25tZW50YCwge2VkaXRpbmcsIHByb2Nlc3NpbmdFZGl0fSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQsIGFsaWduZXJEYXRhLCBkb2luZ0FsaWdubWVudCwgZWRpdGluZywgcHJvY2Vzc2luZ0VkaXRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzICYmIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyhyZWZlcmVuY2UsIGFsaWduZWQpXG4gIH0sIFthbGlnbmVkLCBjaGFwdGVyLCB2ZXJzZSwgYm9va0lkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhbGlnbmVyRGF0YSAmJiAhZG9pbmdBbGlnbm1lbnQpIHtcbiAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzICYmIHNldFdvcmRBbGlnbmVyU3RhdHVzKF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0KVxuICAgICAgc2V0U3RhdGUoeyBkb2luZ0FsaWdubWVudDogdHJ1ZSB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWRvaW5nQWxpZ25tZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVQYW5lIC0gYWxpZ25lckRhdGEgd2VudCBmYWxzZSB1bmV4cGVjdGVkYCwgeyByZWZlcmVuY2UsIGFsaWduZXJEYXRhLCBkb2luZ0FsaWdubWVudCB9KVxuICAgICAgfVxuXG4gICAgICBzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiBzZXRXb3JkQWxpZ25lclN0YXR1cyhfc2NyaXB0dXJlQWxpZ25tZW50RWRpdClcbiAgICAgIHNldFN0YXRlKHsgZG9pbmdBbGlnbm1lbnQ6IGZhbHNlIH0pXG4gICAgICBvbkFsaWdubWVudEZpbmlzaCAmJiBvbkFsaWdubWVudEZpbmlzaCgpXG4gICAgfVxuICB9LCBbX3NjcmlwdHVyZUFsaWdubWVudEVkaXQ/LnN0YXRlPy5hbGlnbmVyRGF0YV0pXG5cbiAgLy8gZHluYW1pY2FsbHkgYWRqdXN0IGZvbnQgc2l6ZVxuICBjb25zdCBjYWxjdWxhdGVkRm9udFNpemUgPSBSZWFjdC51c2VNZW1vKCgpID0+IChcbiAgICBwYXJzZUZsb2F0KFRleHRBcmVhU3R5bGUuZm9udFNpemUpICogZm9udFNpemUgLyAxMDAgKyAncHgnXG4gICksIFtmb250U2l6ZV0pXG5cbiAgY29uc3QgdGV4dEFyZWFTdHlsZSA9IHtcbiAgICAuLi5jb250ZW50U3R5bGUsXG4gICAgLi4uVGV4dEFyZWFTdHlsZSxcbiAgICBmb250U2l6ZTogY2FsY3VsYXRlZEZvbnRTaXplLFxuICB9XG5cbiAgdXNlRGVlcENvbXBhcmVFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHZlcnNlVGV4dCA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuZ2V0VXNmbUZvclZlcnNlQ29udGVudCh7IHZlcnNlT2JqZWN0czogaW5pdGlhbFZlcnNlT2JqZWN0cyB9KVxuICAgIGNsZWFyQ2hhbmdlcygpXG4gICAgc2V0SW5pdGlhbFZlcnNlVGV4dCh2ZXJzZVRleHQpXG4gICAgc2V0U3RhdGUoeyBuZXdUZXh0OiBudWxsIH0pXG4gIH0sIFt7IHJlZmVyZW5jZSwgaW5pdGlhbFZlcnNlT2JqZWN0cyB9XSlcblxuICAvKipcbiAgICogd2hlbiBmb2N1cyBpcyBjaGFuZ2VkIGZyb20gdGV4dCBlZGl0aW5nLCBnZXQgZmluYWwgdGV4dCBhbmQgZG8gcHJvY2Vzc2luZyBvZiBmaW5hbCB0ZXh0XG4gICAqIEBwYXJhbSB7UmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD59IGV2ZW50IC0gRE9NIGV2ZW50IGluZm9cbiAgICovXG4gIGZ1bmN0aW9uIG9uQmx1cihldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pIHtcbiAgICBjb25zdCBuZXdWZXJzZVRleHQgPSBldmVudD8udGFyZ2V0Py52YWx1ZSAvLyBnZXQgbmV3IHRleHRcbiAgICBzZXRTdGF0ZSh7IG5ld1RleHQ6IG5ld1ZlcnNlVGV4dCwgcHJvY2Vzc2luZ0VkaXQ6IHRydWUgfSkgLy8gc2hvdyBzcGlubmVyIHdoaWxlIHByb2Nlc3NpbmcgZWRpdCB0ZXh0XG4gICAgZGVsYXkoNTAwKS50aGVuKCgpID0+IHsgLy8gYWxsb3cgc3RhdGUgdG8gdXBkYXRlIGJlZm9yZSBwcm9jZXNzaW5nIG5ldyB0ZXh0XG4gICAgICBzZXRFZGl0aW5nKGZhbHNlLCBuZXdWZXJzZVRleHQpLnRoZW4oKCkgPT4geyAvLyBwcm9jZXNzIHRoZSBsYXRlc3QgZWRpdCB0ZXh0XG4gICAgICAgIHNldFN0YXRlKHtwcm9jZXNzaW5nRWRpdDogZmFsc2V9KSAvLyBub3cgZG9uZSwgcmVtb3ZlIHNwaW5uZXJcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIG1vbml0b3IgZm9yIGVkaXQgc3RhdGUgY2hhbmdlcyBhbmQgY2FsbCBiYWNrIHRvIHNjcmlwdHVyZSBjYXJkIHdpdGggZWRpdCBzdGF0dXNcbiAgICBjb25zdCBfZWRpdGluZyA9IGVkaXRpbmcgfHwgcHJvY2Vzc2luZ0VkaXRcbiAgICBjb25zdCB2ZXJzZVJlZiA9IGAke3JlZmVyZW5jZS5jaGFwdGVyfToke3JlZmVyZW5jZS52ZXJzZX1gXG4gICAgc2V0RWRpdFZlcnNlICYmIHNldEVkaXRWZXJzZSh2ZXJzZVJlZiwgX2VkaXRpbmcpXG4gIH0sIFtlZGl0aW5nLCBwcm9jZXNzaW5nRWRpdF0pXG5cbiAgY29uc3QgdmVyc2VPYmplY3RzID0gY3VycmVudFZlcnNlT2JqZWN0cyB8fCBpbml0aWFsVmVyc2VPYmplY3RzIHx8IFtdXG4gIGNvbnN0IG5vV29yZHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICF2ZXJzZU9iamVjdHNIYXZlV29yZHModmVyc2VPYmplY3RzKSwgW2N1cnJlbnRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHNdKVxuXG4gIC8qKlxuICAgKiBkZXRlcm1pbmUgd2hhdCBVSSB0byBzaG93IGJhc2VkIG9uIHN0YXRlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZWRpdGluZyAtIGlmIHRydWUgc2hvdyBlZGl0IG1vZGVcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVFZGl0IC0gaWYgdHJ1ZSB0aGVuIGVkaXQgaXMgZW5hYmxlZFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG5vV29yZHMgLSBpZiB0cnVlIHRoZW4gdGhlcmUgYXJlIG5vIGRpc3BsYXlhYmxlIHdvcmRzXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvY2Vzc2luZ0VkaXQgLSBpZiB0cnVlIHRoZW4gZWRpdCBpcyBiZWluZyBwcm9jZXNzZWRcbiAgICovXG4gIGZ1bmN0aW9uIHZlcnNlQ29udGVudChlZGl0aW5nLCBlbmFibGVFZGl0LCBub1dvcmRzLCBwcm9jZXNzaW5nRWRpdCkge1xuICAgIGlmIChwcm9jZXNzaW5nRWRpdCkgeyAvLyBwdXQgdXAgc3Bpbm5lciB3aGlsZSBwcm9jZXNzaW5nIHRoZSBlZGl0XG4gICAgICByZXR1cm4gPENpcmN1bGFyUHJvZ3Jlc3Mgc2l6ZT17NDB9Lz5cbiAgICB9XG5cbiAgICBpZiAoZWRpdGluZykge1xuICAgICAgcmV0dXJuIDx0ZXh0YXJlYVxuICAgICAgICBkZWZhdWx0VmFsdWU9e25ld1ZlcnNlVGV4dCB8fCBpbml0aWFsVmVyc2VUZXh0fVxuICAgICAgICBvbkJsdXI9e29uQmx1cn1cbiAgICAgICAgc3R5bGU9e3RleHRBcmVhU3R5bGV9XG4gICAgICAgIGF1dG9Gb2N1c1xuICAgICAgLz5cbiAgICB9XG5cbiAgICBpZiAobm9Xb3JkcyAmJiBlbmFibGVFZGl0KSB7IC8vIHNob3cgYSBjbGlja2FibGUgbWVzc2FnZSBpbiB0aGUgY2FzZSB0aGF0IHRoZXJlIGlzIG5vIHRleHQgdG8gY2xpY2sgb25cbiAgICAgIHJldHVybiA8RW1wdHlDb250ZW50PlxuICAgICAgICBDbGljayB0byBFZGl0XG4gICAgICA8L0VtcHR5Q29udGVudD5cbiAgICB9XG5cbiAgICByZXR1cm4gPFZlcnNlT2JqZWN0c1xuICAgICAgdmVyc2VLZXk9e2Ake3JlZmVyZW5jZS5jaGFwdGVyfToke3JlZmVyZW5jZS52ZXJzZX1gfVxuICAgICAgdmVyc2VPYmplY3RzPXt2ZXJzZU9iamVjdHN9XG4gICAgICBkaXNhYmxlV29yZFBvcG92ZXI9e2Rpc2FibGVXb3JkUG9wb3Zlcn1cbiAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YX1cbiAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgIC8+XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgc3R5bGU9e3sgZGlyZWN0aW9uLCB3aWR0aDogJzEwMCUnLCBwYWRkaW5nQm90dG9tOiAnMC41ZW0nIH19PlxuICAgICAge3Jlc291cmNlTWVzc2FnZSA/XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgPGRpdiBzdHlsZT17TWVzc2FnZVN0eWxlfT5cbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGZvbnRTaXplOiBgJHtmb250U2l6ZX0lYCB9fT4ge3Jlc291cmNlTWVzc2FnZX0gPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA6XG4gICAgICAgIDxDb250ZW50PlxuICAgICAgICAgIDxzcGFuIHN0eWxlPXtyZWZTdHlsZX0+IHtjaGFwdGVyfTp7dmVyc2V9Jm5ic3A7PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIHN0eWxlPXtjb250ZW50U3R5bGV9IG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHNldEVkaXRpbmcgJiYgc2V0RWRpdGluZyh0cnVlKVxuICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3ZlcnNlQ29udGVudChlZGl0aW5nLCBlbmFibGVFZGl0LCBub1dvcmRzLCBwcm9jZXNzaW5nRWRpdCl9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L0NvbnRlbnQ+XG4gICAgICB9XG4gICAgPC9Db250YWluZXI+XG4gIClcbn1cblxuU2NyaXB0dXJlUGFuZS5kZWZhdWx0UHJvcHMgPSB7IHZlcnNlT2JqZWN0czogW10gfVxuXG5leHBvcnQgZGVmYXVsdCBTY3JpcHR1cmVQYW5lXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBSyxNQUFNLE9BQU87QUFDOUIsT0FBT0Msb0JBQW9CLE1BQU0seUJBQXlCO0FBQzFELFNBQVNDLFlBQVksUUFBUSx5QkFBeUI7QUFDdEQsU0FBU0MseUJBQXlCLFFBQVEsa0JBQWtCO0FBQzVELFNBQVNDLGdCQUFnQixRQUFRLHVCQUF1QjtBQUN4RCxTQUFTQyxlQUFlLEVBQUVDLHNCQUFzQixRQUFRLGFBQWE7QUFDckUsU0FDRUMsS0FBSyxFQUNMQyxrQkFBa0IsRUFDbEJDLGdCQUFnQixFQUNoQkMscUJBQXFCLFFBQ2hCLGFBQWE7QUFDcEIsU0FBU0MsMkJBQTJCLEVBQUVDLHlCQUF5QixRQUFRLHVDQUF1QztBQUM5RyxTQUNFQyxTQUFTLEVBQ1RDLE9BQU8sRUFDUEMsWUFBWSxRQUNQLFVBQVU7QUFtRGpCLElBQU1DLFlBQVksR0FBRztFQUNuQkMsU0FBUyxFQUFFLEtBQUs7RUFDaEJDLFVBQVUsRUFBRSxVQUFVO0VBQ3RCQyxVQUFVLEVBQUUsUUFBUTtFQUNwQkMsT0FBTyxFQUFFLE1BQU07RUFDZkMsY0FBYyxFQUFFLFFBQVE7RUFDeEJDLFVBQVUsRUFBRSxRQUFRO0VBQ3BCQyxN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