easy-richtextarea 4.0.23 → 4.0.26
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/example.js +84 -43
- package/lib/richTextarea.js +70 -43
- package/lib/selection.js +15 -1
- package/package.json +1 -1
- package/src/richTextarea.js +71 -36
- package/src/selection.js +16 -0
package/lib/richTextarea.js
CHANGED
|
@@ -207,14 +207,14 @@ function _createSuper(Derived) {
|
|
|
207
207
|
var RichTextarea = /*#__PURE__*/ function(Element) {
|
|
208
208
|
_inherits(RichTextarea, Element);
|
|
209
209
|
var _super = _createSuper(RichTextarea);
|
|
210
|
-
function RichTextarea(selector, focused, readOnly, undoBuffer
|
|
210
|
+
function RichTextarea(selector, focused, readOnly, undoBuffer) {
|
|
211
211
|
_classCallCheck(this, RichTextarea);
|
|
212
212
|
var _this;
|
|
213
213
|
_this = _super.call(this, selector);
|
|
214
214
|
_defineProperty(_assertThisInitialized(_this), "intermediateHandler", function(event, element) {
|
|
215
215
|
var undoable = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true, eventType = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : _eventTypes.CHANGE_EVENT_TYPE, selectionChanged = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : _this.hasSelectionChanged();
|
|
216
216
|
if (_this.readOnly) {
|
|
217
|
-
var
|
|
217
|
+
var previousContent = _this.getPreviousContent(), content = previousContent; ///
|
|
218
218
|
_this.setContent(content);
|
|
219
219
|
}
|
|
220
220
|
var content1 = _this.getContent(), selection = _this.getSelection(), contentChanged = _this.hasContentChanged(), changed = contentChanged || selectionChanged;
|
|
@@ -223,12 +223,13 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
|
|
|
223
223
|
}
|
|
224
224
|
if (undoable) {
|
|
225
225
|
if (contentChanged) {
|
|
226
|
-
var operations = (0, _generate.default)(
|
|
226
|
+
var previousContent1 = _this.getPreviousContent(), operations = (0, _generate.default)(previousContent1, content1);
|
|
227
227
|
_this.undoBuffer.addOperations(operations);
|
|
228
228
|
}
|
|
229
229
|
}
|
|
230
|
-
|
|
231
|
-
_this.
|
|
230
|
+
var previousContent2 = content1, previousSelection = selection; ///
|
|
231
|
+
_this.setPreviousContent(previousContent2);
|
|
232
|
+
_this.setPreviousSelection(previousSelection);
|
|
232
233
|
});
|
|
233
234
|
_defineProperty(_assertThisInitialized(_this), "selectChangeHandler", function(event, element) {
|
|
234
235
|
if (_this.focused) {
|
|
@@ -321,8 +322,6 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
|
|
|
321
322
|
_this.focused = focused;
|
|
322
323
|
_this.readOnly = readOnly;
|
|
323
324
|
_this.undoBuffer = undoBuffer;
|
|
324
|
-
_this.previousContent = previousContent;
|
|
325
|
-
_this.previousSelection = previousSelection;
|
|
326
325
|
return _this;
|
|
327
326
|
}
|
|
328
327
|
_createClass(RichTextarea, [
|
|
@@ -344,18 +343,6 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
|
|
|
344
343
|
return this.undoBuffer;
|
|
345
344
|
}
|
|
346
345
|
},
|
|
347
|
-
{
|
|
348
|
-
key: "getPreviousContent",
|
|
349
|
-
value: function getPreviousContent() {
|
|
350
|
-
return this.prevousContent;
|
|
351
|
-
}
|
|
352
|
-
},
|
|
353
|
-
{
|
|
354
|
-
key: "getPreviousSelection",
|
|
355
|
-
value: function getPreviousSelection() {
|
|
356
|
-
return this.previousSelection;
|
|
357
|
-
}
|
|
358
|
-
},
|
|
359
346
|
{
|
|
360
347
|
key: "setFocused",
|
|
361
348
|
value: function setFocused(focused) {
|
|
@@ -368,18 +355,6 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
|
|
|
368
355
|
this.readOnly = readOnly;
|
|
369
356
|
}
|
|
370
357
|
},
|
|
371
|
-
{
|
|
372
|
-
key: "setPreviousContent",
|
|
373
|
-
value: function setPreviousContent(previousContent) {
|
|
374
|
-
this.previousContent = previousContent;
|
|
375
|
-
}
|
|
376
|
-
},
|
|
377
|
-
{
|
|
378
|
-
key: "setPreviousSelection",
|
|
379
|
-
value: function setPreviousSelection(previousSelection) {
|
|
380
|
-
this.previousSelection = previousSelection;
|
|
381
|
-
}
|
|
382
|
-
},
|
|
383
358
|
{
|
|
384
359
|
key: "isActive",
|
|
385
360
|
value: function isActive() {
|
|
@@ -411,14 +386,14 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
|
|
|
411
386
|
{
|
|
412
387
|
key: "hasContentChanged",
|
|
413
388
|
value: function hasContentChanged() {
|
|
414
|
-
var content = this.getContent(), contentPreviousContent = content ===
|
|
389
|
+
var content = this.getContent(), previousContent = this.getPreviousContent(), contentPreviousContent = content === previousContent, contentChanged = !contentPreviousContent;
|
|
415
390
|
return contentChanged;
|
|
416
391
|
}
|
|
417
392
|
},
|
|
418
393
|
{
|
|
419
394
|
key: "hasSelectionChanged",
|
|
420
395
|
value: function hasSelectionChanged() {
|
|
421
|
-
var selection = this.getSelection(), selectionPreviousSelection = selection.isEqualTo(
|
|
396
|
+
var selection = this.getSelection(), previousSelection = this.getPreviousSelection(), selectionPreviousSelection = selection.isEqualTo(previousSelection), selectionChanged = !selectionPreviousSelection; ///
|
|
422
397
|
return selectionChanged;
|
|
423
398
|
}
|
|
424
399
|
},
|
|
@@ -431,7 +406,8 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
|
|
|
431
406
|
value: value
|
|
432
407
|
});
|
|
433
408
|
if (setPreviousContent) {
|
|
434
|
-
|
|
409
|
+
var previousContent = content; ///
|
|
410
|
+
this.setPreviousContent(previousContent);
|
|
435
411
|
}
|
|
436
412
|
}
|
|
437
413
|
},
|
|
@@ -442,7 +418,8 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
|
|
|
442
418
|
var selectionStartPosition = selection.getStartPosition(), selectionEndPosition = selection.getEndPosition(), selectionStart = selectionStartPosition, selectionEnd = selectionEndPosition, domElement = this.getDOMElement();
|
|
443
419
|
domElement.setSelectionRange(selectionStart, selectionEnd);
|
|
444
420
|
if (setPreviousSelection) {
|
|
445
|
-
|
|
421
|
+
var previousSelection = selection; ///
|
|
422
|
+
this.setPreviousSelection(previousSelection);
|
|
446
423
|
}
|
|
447
424
|
}
|
|
448
425
|
},
|
|
@@ -624,13 +601,41 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
|
|
|
624
601
|
this.removeEventListener(eventType, handler, element);
|
|
625
602
|
}
|
|
626
603
|
},
|
|
604
|
+
{
|
|
605
|
+
key: "getPreviousContent",
|
|
606
|
+
value: function getPreviousContent() {
|
|
607
|
+
var previousContent = this.getState().previousContent;
|
|
608
|
+
return previousContent;
|
|
609
|
+
}
|
|
610
|
+
},
|
|
611
|
+
{
|
|
612
|
+
key: "getPreviousSelection",
|
|
613
|
+
value: function getPreviousSelection() {
|
|
614
|
+
var previousSelection = this.getState().previousSelection;
|
|
615
|
+
return previousSelection;
|
|
616
|
+
}
|
|
617
|
+
},
|
|
618
|
+
{
|
|
619
|
+
key: "setPreviousContent",
|
|
620
|
+
value: function setPreviousContent(previousContent) {
|
|
621
|
+
this.updateState({
|
|
622
|
+
previousContent: previousContent
|
|
623
|
+
});
|
|
624
|
+
}
|
|
625
|
+
},
|
|
626
|
+
{
|
|
627
|
+
key: "setPreviousSelection",
|
|
628
|
+
value: function setPreviousSelection(previousSelection) {
|
|
629
|
+
this.updateState({
|
|
630
|
+
previousSelection: previousSelection
|
|
631
|
+
});
|
|
632
|
+
}
|
|
633
|
+
},
|
|
627
634
|
{
|
|
628
635
|
key: "didMount",
|
|
629
636
|
value: function didMount() {
|
|
630
637
|
var _this_properties = this.properties, onFind = _this_properties.onFind, onBlur = _this_properties.onBlur, onFocus = _this_properties.onFocus, onChange = _this_properties.onChange, onScroll = _this_properties.onScroll, findHandler = onFind, blurHandler = onBlur, focusHandler = onFocus, changeHandler = onChange, scrollHandler = onScroll; ///
|
|
631
|
-
|
|
632
|
-
this.previousContent = content; ///
|
|
633
|
-
this.previousSelection = selection; ///
|
|
638
|
+
this.updateInitialState();
|
|
634
639
|
findHandler && this.onFind(findHandler, this);
|
|
635
640
|
blurHandler && this.onBlur(blurHandler, this);
|
|
636
641
|
focusHandler && this.onFocus(focusHandler, this);
|
|
@@ -662,6 +667,30 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
|
|
|
662
667
|
this.deactivate();
|
|
663
668
|
}
|
|
664
669
|
}
|
|
670
|
+
},
|
|
671
|
+
{
|
|
672
|
+
key: "updateInitialState",
|
|
673
|
+
value: function updateInitialState() {
|
|
674
|
+
var content = this.getContent(), selection = this.getSelection(), previousContent = content, previousSelection = selection; ///
|
|
675
|
+
this.setPreviousContent(previousContent);
|
|
676
|
+
this.setPreviousSelection(previousSelection);
|
|
677
|
+
}
|
|
678
|
+
},
|
|
679
|
+
{
|
|
680
|
+
key: "setInitialState",
|
|
681
|
+
value: function setInitialState() {
|
|
682
|
+
var previousContent = null, previousSelection = null;
|
|
683
|
+
this.setState({
|
|
684
|
+
previousContent: previousContent,
|
|
685
|
+
previousSelection: previousSelection
|
|
686
|
+
});
|
|
687
|
+
}
|
|
688
|
+
},
|
|
689
|
+
{
|
|
690
|
+
key: "initialise",
|
|
691
|
+
value: function initialise() {
|
|
692
|
+
this.setInitialState();
|
|
693
|
+
}
|
|
665
694
|
}
|
|
666
695
|
], [
|
|
667
696
|
{
|
|
@@ -671,14 +700,12 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
|
|
|
671
700
|
remainingArguments[_key - 2] = arguments[_key];
|
|
672
701
|
}
|
|
673
702
|
var _Element;
|
|
674
|
-
var focused = false, readOnly = false, undoBuffer = _undoBuffer.default.fromNothing(),
|
|
703
|
+
var focused = false, readOnly = false, undoBuffer = _undoBuffer.default.fromNothing(), richTextarea = (_Element = _easy.Element).fromClass.apply(_Element, [
|
|
675
704
|
Class,
|
|
676
705
|
properties,
|
|
677
706
|
focused,
|
|
678
707
|
readOnly,
|
|
679
|
-
undoBuffer
|
|
680
|
-
previousContent,
|
|
681
|
-
previousSelection
|
|
708
|
+
undoBuffer
|
|
682
709
|
].concat(_toConsumableArray(remainingArguments)));
|
|
683
710
|
return richTextarea;
|
|
684
711
|
}
|
|
@@ -701,4 +728,4 @@ function defer(func) {
|
|
|
701
728
|
setTimeout(func, 0);
|
|
702
729
|
}
|
|
703
730
|
|
|
704
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yaWNoVGV4dGFyZWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyBFbGVtZW50LCBkb2N1bWVudCB9IGZyb20gXCJlYXN5XCI7XHJcblxyXG5pbXBvcnQgU2VsZWN0aW9uIGZyb20gXCIuL3NlbGVjdGlvblwiXHJcbmltcG9ydCBVbmRvQnVmZmVyIGZyb20gXCIuL3VuZG9CdWZmZXJcIjtcclxuaW1wb3J0IEluc2VydE9wZXJhdGlvbiBmcm9tIFwiLi9vcGVyYXRpb24vaW5zZXJ0XCI7XHJcbmltcG9ydCBEZWxldGVPcGVyYXRpb24gZnJvbSBcIi4vb3BlcmF0aW9uL2RlbGV0ZVwiO1xyXG5pbXBvcnQgdHJhbnNmb3JtQ29udGVudCBmcm9tIFwiLi90cmFuc2Zvcm0vY29udGVudFwiO1xyXG5pbXBvcnQgdHJhbnNmb3JtU2VsZWN0aW9uIGZyb20gXCIuL3RyYW5zZm9ybS9zZWxlY3Rpb25cIjtcclxuaW1wb3J0IGdlbmVyYXRlT3BlcmF0aW9ucyBmcm9tIFwiLi9vcGVyYXRpb25zL2dlbmVyYXRlXCI7XHJcblxyXG5pbXBvcnQgeyBURVhULCBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgRl9LRVlfQ09ERSwgWl9LRVlfQ09ERSB9IGZyb20gXCIuL2tleUNvZGVzXCI7XHJcbmltcG9ydCB7IENVVF9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBDT1BZX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIEZJTkRfRVZFTlRfVFlQRSxcclxuICAgICAgICAgQkxVUl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBQQVNURV9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBJTlBVVF9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBGT0NVU19FVkVOVF9UWVBFLFxyXG4gICAgICAgICBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICAgU0NST0xMX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIEtFWURPV05fRVZFTlRfVFlQRSxcclxuICAgICAgICAgQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSxcclxuICAgICAgICAgU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUgfSBmcm9tIFwiLi9ldmVudFR5cGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSaWNoVGV4dGFyZWEgZXh0ZW5kcyBFbGVtZW50IHtcclxuICBjb25zdHJ1Y3RvcihzZWxlY3RvciwgZm9jdXNlZCwgcmVhZE9ubHksIHVuZG9CdWZmZXIsIHByZXZpb3VzQ29udGVudCwgcHJldmlvdXNTZWxlY3Rpb24pIHtcclxuICAgIHN1cGVyKHNlbGVjdG9yKTtcclxuXHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmb2N1c2VkO1xyXG4gICAgdGhpcy5yZWFkT25seSA9IHJlYWRPbmx5O1xyXG4gICAgdGhpcy51bmRvQnVmZmVyID0gdW5kb0J1ZmZlcjtcclxuICAgIHRoaXMucHJldmlvdXNDb250ZW50ID0gcHJldmlvdXNDb250ZW50O1xyXG4gICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHByZXZpb3VzU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgaXNGb2N1c2VkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZDtcclxuICB9XHJcblxyXG4gIGlzUmVhZE9ubHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWFkT25seTtcclxuICB9XHJcblxyXG4gIGdldFVuZG9CdWZmZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy51bmRvQnVmZmVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJldmlvdXNDb250ZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMucHJldm91c0NvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRQcmV2aW91c1NlbGVjdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLnByZXZpb3VzU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgc2V0Rm9jdXNlZChmb2N1c2VkKSB7XHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmb2N1c2VkO1xyXG4gIH1cclxuXHJcbiAgc2V0UmVhZE9ubHkocmVhZE9ubHkpIHtcclxuICAgIHRoaXMucmVhZE9ubHkgPSByZWFkT25seTtcclxuICB9XHJcblxyXG4gIHNldFByZXZpb3VzQ29udGVudChwcmV2aW91c0NvbnRlbnQpIHtcclxuICAgIHRoaXMucHJldmlvdXNDb250ZW50ID0gcHJldmlvdXNDb250ZW50O1xyXG4gIH1cclxuXHJcbiAgc2V0UHJldmlvdXNTZWxlY3Rpb24ocHJldmlvdXNTZWxlY3Rpb24pIHtcclxuICAgIHRoaXMucHJldmlvdXNTZWxlY3Rpb24gPSBwcmV2aW91c1NlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIGludGVybWVkaWF0ZUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQsIHVuZG9hYmxlID0gdHJ1ZSwgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsIHNlbGVjdGlvbkNoYW5nZWQgPSB0aGlzLmhhc1NlbGVjdGlvbkNoYW5nZWQoKSkgPT4ge1xyXG4gICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcclxuICAgICAgY29uc3QgY29udGVudCA9IHRoaXMucHJldmlvdXNDb250ZW50OyAgLy8vXHJcblxyXG4gICAgICB0aGlzLnNldENvbnRlbnQoY29udGVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIGNvbnRlbnRDaGFuZ2VkID0gdGhpcy5oYXNDb250ZW50Q2hhbmdlZCgpLFxyXG4gICAgICAgICAgY2hhbmdlZCA9IChjb250ZW50Q2hhbmdlZCB8fCBzZWxlY3Rpb25DaGFuZ2VkKTtcclxuXHJcbiAgICBpZiAoY2hhbmdlZCkge1xyXG4gICAgICB0aGlzLmNhbGxIYW5kbGVycyhldmVudFR5cGUsIGV2ZW50LCBlbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodW5kb2FibGUpIHtcclxuICAgICAgaWYgKGNvbnRlbnRDaGFuZ2VkKSB7XHJcbiAgICAgICAgY29uc3Qgb3BlcmF0aW9ucyA9IGdlbmVyYXRlT3BlcmF0aW9ucyh0aGlzLnByZXZpb3VzQ29udGVudCwgY29udGVudCk7XHJcblxyXG4gICAgICAgIHRoaXMudW5kb0J1ZmZlci5hZGRPcGVyYXRpb25zKG9wZXJhdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wcmV2aW91c0NvbnRlbnQgPSBjb250ZW50OyAgLy8vXHJcblxyXG4gICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q2hhbmdlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuZm9jdXNlZCkge1xyXG4gICAgICBlbGVtZW50ID0gdGhpczsgLy8vXHJcblxyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29udGV4dG1lbnVIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAga2V5RG93bkhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IHsgY3RybEtleSwgbWV0YUtleSB9ID0gZXZlbnQ7XHJcblxyXG4gICAgaWYgKGN0cmxLZXkgfHwgbWV0YUtleSkge1xyXG4gICAgICBjb25zdCB7IGtleUNvZGUgfSA9IGV2ZW50O1xyXG5cclxuICAgICAgc3dpdGNoIChrZXlDb2RlKSB7XHJcbiAgICAgICAgY2FzZSBGX0tFWV9DT0RFOiB7XHJcbiAgICAgICAgICB0aGlzLmZpbmQoZXZlbnQsIGVsZW1lbnQpO1xyXG5cclxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY2FzZSBaX0tFWV9DT0RFOiB7XHJcbiAgICAgICAgICBjb25zdCB7IHNoaWZ0S2V5IH0gPSBldmVudDtcclxuXHJcbiAgICAgICAgICBzaGlmdEtleSA/XHJcbiAgICAgICAgICAgIHRoaXMucmVkbyhldmVudCwgZWxlbWVudCkgOlxyXG4gICAgICAgICAgICAgIHRoaXMudW5kbyhldmVudCwgZWxlbWVudCk7XHJcblxyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZGVmZXIoKCkgPT4ge1xyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBTQ1JPTExfRVZFTlRfVFlQRTtcclxuXHJcbiAgICB0aGlzLmNhbGxIYW5kbGVycyhldmVudFR5cGUsIGV2ZW50LCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIGZvY3VzSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcclxuXHJcbiAgICBkZWZlcigoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHVuZG9hYmxlID0gdHJ1ZSxcclxuICAgICAgICAgICAgZXZlbnRUeXBlID0gRk9DVVNfRVZFTlRfVFlQRSxcclxuICAgICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIHVuZG9hYmxlLCBldmVudFR5cGUsIHNlbGVjdGlvbkNoYW5nZWQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBibHVySGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgdW5kb2FibGUgPSB0cnVlLFxyXG4gICAgICAgICAgZXZlbnRUeXBlID0gQkxVUl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCB1bmRvYWJsZSwgZXZlbnRUeXBlLCBzZWxlY3Rpb25DaGFuZ2VkKTtcclxuICB9XHJcblxyXG4gIGlucHV0SGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHBhc3RlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgeyBjbGlwYm9hcmREYXRhIH0gPSBldmVudCxcclxuICAgICAgICAgIHRleHREYXRhID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKFRFWFQpO1xyXG5cclxuICAgIGlmICh0ZXh0RGF0YSA9PT0gRU1QVFlfU1RSSU5HKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW1wdHkgPSBzZWxlY3Rpb24uaXNFbXB0eSgpO1xyXG5cclxuICAgIGlmICghc2VsZWN0aW9uRW1wdHkpIHtcclxuICAgICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgICBkZWxldGVPcGVyYXRpb24gPSBEZWxldGVPcGVyYXRpb24uZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24oY29udGVudCwgc2VsZWN0aW9uKSxcclxuICAgICAgICAgICAgb3BlcmF0aW9uID0gZGVsZXRlT3BlcmF0aW9uO1xyXG5cclxuICAgICAgdGhpcy5hcHBseU9wZXJhdGlvbihvcGVyYXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0ZXh0RGF0YSwgLy8vXHJcbiAgICAgICAgICBpbnNlcnRPcGVyYXRpb24gPSBJbnNlcnRPcGVyYXRpb24uZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24oY29udGVudCwgc2VsZWN0aW9uKSxcclxuICAgICAgICAgIG9wZXJhdGlvbiA9IGluc2VydE9wZXJhdGlvbjsgIC8vL1xyXG5cclxuICAgIHRoaXMuYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG5cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBjb3B5SGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkVtcHR5ID0gc2VsZWN0aW9uLmlzRW1wdHkoKTtcclxuXHJcbiAgICBpZiAoc2VsZWN0aW9uRW1wdHkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbGVjdGVkQ29udGVudCA9IHRoaXMuZ2V0U2VsZWN0ZWRDb250ZW50KCk7XHJcblxyXG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoc2VsZWN0ZWRDb250ZW50KTtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgY3V0SGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkVtcHR5ID0gc2VsZWN0aW9uLmlzRW1wdHkoKTtcclxuXHJcbiAgICBpZiAoc2VsZWN0aW9uRW1wdHkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbGVjdGVkQ29udGVudCA9IHRoaXMuZ2V0U2VsZWN0ZWRDb250ZW50KCk7XHJcblxyXG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoc2VsZWN0ZWRDb250ZW50KTtcclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCksXHJcbiAgICAgICAgICBkZWxldGVPcGVyYXRpb24gPSBEZWxldGVPcGVyYXRpb24uZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24oY29udGVudCwgc2VsZWN0aW9uKSxcclxuICAgICAgICAgIG9wZXJhdGlvbiA9IGRlbGV0ZU9wZXJhdGlvbjsgIC8vL1xyXG5cclxuICAgIHRoaXMuYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG5cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBpc0FjdGl2ZSgpIHtcclxuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuaGFzQ2xhc3MoXCJhY3RpdmVcIik7XHJcblxyXG4gICAgcmV0dXJuIGFjdGl2ZTtcclxuICB9XHJcblxyXG4gIGdldENvbnRlbnQoKSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCksXHJcbiAgICAgICAgICB7IHZhbHVlIH0gPSBkb21FbGVtZW50LFxyXG4gICAgICAgICAgY29udGVudCA9IHZhbHVlOyAgLy8vXHJcblxyXG4gICAgcmV0dXJuIGNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3Rpb24oKSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCksXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSBTZWxlY3Rpb24uZnJvbURPTUVsZW1lbnQoZG9tRWxlbWVudCk7XHJcblxyXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkQ29udGVudCgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzdGFydCA9IHN0YXJ0UG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIGVuZCA9IGVuZFBvc2l0aW9uLCAgLy8vXHJcbiAgICAgICAgICBzZWxlY3RlZENvbnRlbnQgPSBjb250ZW50LnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG5cclxuICAgIHJldHVybiBzZWxlY3RlZENvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBoYXNDb250ZW50Q2hhbmdlZCgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIGNvbnRlbnRQcmV2aW91c0NvbnRlbnQgPSAoY29udGVudCA9PT0gdGhpcy5wcmV2aW91c0NvbnRlbnQpLFxyXG4gICAgICAgICAgY29udGVudENoYW5nZWQgPSAhY29udGVudFByZXZpb3VzQ29udGVudDtcclxuXHJcbiAgICByZXR1cm4gY29udGVudENoYW5nZWQ7XHJcbiAgfVxyXG5cclxuICBoYXNTZWxlY3Rpb25DaGFuZ2VkKCkge1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uLmlzRXF1YWxUbyh0aGlzLnByZXZpb3VzU2VsZWN0aW9uKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSAhc2VsZWN0aW9uUHJldmlvdXNTZWxlY3Rpb247IC8vL1xyXG5cclxuICAgIHJldHVybiBzZWxlY3Rpb25DaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgc2V0Q29udGVudChjb250ZW50LCBzZXRQcmV2aW91c0NvbnRlbnQgPSB0cnVlKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRlbnQsICAvLy9cclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBPYmplY3QuYXNzaWduKGRvbUVsZW1lbnQsIHtcclxuICAgICAgdmFsdWVcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChzZXRQcmV2aW91c0NvbnRlbnQpIHtcclxuICAgICAgdGhpcy5wcmV2aW91c0NvbnRlbnQgPSBjb250ZW50OyAgLy8vXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbiA9IHRydWUpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uRW5kUG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBkb21FbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xyXG5cclxuICAgIGlmIChzZXRQcmV2aW91c1NlbGVjdGlvbikge1xyXG4gICAgICB0aGlzLnByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uOyAgLy8vXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmaW5kKGV2ZW50LCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBGSU5EX0VWRU5UX1RZUEU7XHJcblxyXG4gICAgdGhpcy5jYWxsSGFuZGxlcnMoZXZlbnRUeXBlLCBldmVudCwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICB1bmRvKGV2ZW50LCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCB1bmRvT3BlcmF0aW9uID0gdGhpcy51bmRvQnVmZmVyLnVuZG8oKTtcclxuXHJcbiAgICBpZiAodW5kb09wZXJhdGlvbiAhPT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBvcGVyYXRpb24gPSB1bmRvT3BlcmF0aW9uOyAgLy8vXHJcblxyXG4gICAgICB0aGlzLnJldmVydChldmVudCwgZWxlbWVudCwgb3BlcmF0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZG8oZXZlbnQsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IHJlZG9PcGVyYXRpb24gPSB0aGlzLnVuZG9CdWZmZXIucmVkbygpO1xyXG5cclxuICAgIGlmIChyZWRvT3BlcmF0aW9uICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IHJlZG9PcGVyYXRpb247ICAvLy9cclxuXHJcbiAgICAgIHRoaXMucmV2ZXJ0KGV2ZW50LCBlbGVtZW50LCBvcGVyYXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV2ZXJ0KGV2ZW50LCBlbGVtZW50LCBvcGVyYXRpb24pIHtcclxuICAgIGNvbnN0IHVuZG9hYmxlID0gZmFsc2UsXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSBTZWxlY3Rpb24uZnJvbU9wZXJhdGlvbihvcGVyYXRpb24pLFxyXG4gICAgICAgICAgc2V0UHJldmlvdXNTZWxlY3Rpb24gPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmFwcGx5T3BlcmF0aW9uKG9wZXJhdGlvbik7XHJcblxyXG4gICAgdGhpcy5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbik7XHJcblxyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCB1bmRvYWJsZSk7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm0ob3BlcmF0aW9ucykge1xyXG4gICAgbGV0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHRyYW5zZm9ybWVkQ29udGVudCA9IHRyYW5zZm9ybUNvbnRlbnQoY29udGVudCwgb3BlcmF0aW9ucyksXHJcbiAgICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHRyYW5zZm9ybVNlbGVjdGlvbihzZWxlY3Rpb24sIG9wZXJhdGlvbnMpO1xyXG5cclxuICAgIGNvbnRlbnQgPSB0cmFuc2Zvcm1lZENvbnRlbnQ7IC8vL1xyXG5cclxuICAgIHNlbGVjdGlvbiA9IHRyYW5zZm9ybWVkU2VsZWN0aW9uOyAvLy9cclxuXHJcbiAgICBjb25zdCBzZXRQcmV2aW91c0NvbnRlbnQgPSBmYWxzZSxcclxuICAgICAgICAgIHNldFByZXZpb3VzU2VsZWN0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5zZXRDb250ZW50KGNvbnRlbnQsIHNldFByZXZpb3VzQ29udGVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbik7XHJcblxyXG4gICAgdGhpcy51bmRvQnVmZmVyLnRyYW5zZm9ybShvcGVyYXRpb25zKTtcclxuXHJcbiAgICBjb25zdCBldmVudCA9IG51bGwsXHJcbiAgICAgICAgICBlbGVtZW50ID0gdGhpcyxcclxuICAgICAgICAgIHVuZG9hYmxlID0gZmFsc2UsXHJcbiAgICAgICAgICBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIHVuZG9hYmxlLCBldmVudFR5cGUpO1xyXG4gIH1cclxuXHJcbiAgY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XHJcbiAgICBjb25zdCBldmVudExpc3RlbmVycyA9IHRoaXMuZmluZEV2ZW50TGlzdGVuZXJzKGV2ZW50VHlwZSk7XHJcblxyXG4gICAgZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgoZXZlbnRMaXN0ZW5lcikgPT4ge1xyXG4gICAgICBsZXQgeyBlbGVtZW50IH0gPSBldmVudExpc3RlbmVyO1xyXG5cclxuICAgICAgY29uc3QgeyBoYW5kbGVyIH0gPSBldmVudExpc3RlbmVyLFxyXG4gICAgICAgICAgICAgIGhhbmRsZXJFbGVtZW50ID0gZWxlbWVudDsgLy8vXHJcblxyXG4gICAgICBlbGVtZW50ID0gdGhpczsgLy8vXHJcblxyXG4gICAgICBpZiAoKGhhbmRsZXIgIT09IHRoaXMuYmx1ckhhbmRsZXIpICYmIChoYW5kbGVyICE9PSB0aGlzLmZvY3VzSGFuZGxlcikgJiYgKGhhbmRsZXIgIT09IHRoaXMuc2Nyb2xsSGFuZGxlcikpIHtcclxuICAgICAgICBoYW5kbGVyLmNhbGwoaGFuZGxlckVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKSB7XHJcbiAgICBsZXQgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XHJcblxyXG4gICAgY29uc3QgdHJhbnNmb3JtZWRDb250ZW50ID0gb3BlcmF0aW9uLnRyYW5zZm9ybUNvbnRlbnQoY29udGVudCksXHJcbiAgICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IG9wZXJhdGlvbi50cmFuc2Zvcm1TZWxlY3Rpb24oc2VsZWN0aW9uKTtcclxuXHJcbiAgICBjb250ZW50ID0gdHJhbnNmb3JtZWRDb250ZW50OyAvLy9cclxuXHJcbiAgICBzZWxlY3Rpb24gPSB0cmFuc2Zvcm1lZFNlbGVjdGlvbjsgLy8vXHJcblxyXG4gICAgY29uc3Qgc2V0UHJldmlvdXNDb250ZW50ID0gZmFsc2UsXHJcbiAgICAgICAgICBzZXRQcmV2aW91c1NlbGVjdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuc2V0Q29udGVudChjb250ZW50LCBzZXRQcmV2aW91c0NvbnRlbnQpO1xyXG5cclxuICAgIHRoaXMuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbiwgc2V0UHJldmlvdXNTZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGUoKSB7XHJcbiAgICB0aGlzLm9uKEtFWURPV05fRVZFTlRfVFlQRSwgdGhpcy5rZXlEb3duSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihJTlBVVF9FVkVOVF9UWVBFLCB0aGlzLmlucHV0SGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihTQ1JPTExfRVZFTlRfVFlQRSwgdGhpcy5zY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKEZPQ1VTX0VWRU5UX1RZUEUsIHRoaXMuZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKEJMVVJfRVZFTlRfVFlQRSwgdGhpcy5ibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5hZGRDbGFzcyhcImFjdGl2ZVwiKTtcclxuICB9XHJcblxyXG4gIGRlYWN0aXZhdGUoKSB7XHJcbiAgICB0aGlzLm9mZihLRVlET1dOX0VWRU5UX1RZUEUsIHRoaXMua2V5RG93bkhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub2ZmKElOUFVUX0VWRU5UX1RZUEUsIHRoaXMuaW5wdXRIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihTQ1JPTExfRVZFTlRfVFlQRSwgdGhpcy5zY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihGT0NVU19FVkVOVF9UWVBFLCB0aGlzLmZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vZmYoQkxVUl9FVkVOVF9UWVBFLCB0aGlzLmJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO1xyXG4gIH1cclxuXHJcbiAgb25GaW5kKGZpbmRIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBGSU5EX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gZmluZEhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZkZpbmQoZmluZEhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEZJTkRfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBmaW5kSGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKGJsdXJIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZkJsdXIoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEJMVVJfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhibHVySGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gRk9DVVNfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb2ZmRm9jdXMoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9uU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IFNDUk9MTF9FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgaGFuZGxlciA9IHNjcm9sbEhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZlNjcm9sbChzY3JvbGxIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBTQ1JPTExfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBzY3JvbGxIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShjaGFuZ2VIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBjaGFuZ2VIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvZmZDaGFuZ2UoY2hhbmdlSGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gY2hhbmdlSGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgZGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IG9uRmluZCwgb25CbHVyLCBvbkZvY3VzLCBvbkNoYW5nZSwgb25TY3JvbGwgfSA9IHRoaXMucHJvcGVydGllcyxcclxuICAgICAgICAgIGZpbmRIYW5kbGVyID0gb25GaW5kLCAvLy9cclxuICAgICAgICAgIGJsdXJIYW5kbGVyID0gb25CbHVyLCAvLy9cclxuICAgICAgICAgIGZvY3VzSGFuZGxlciA9IG9uRm9jdXMsIC8vL1xyXG4gICAgICAgICAgY2hhbmdlSGFuZGxlciA9IG9uQ2hhbmdlLCAvLy9cclxuICAgICAgICAgIHNjcm9sbEhhbmRsZXIgPSBvblNjcm9sbDsgLy8vXHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcclxuXHJcbiAgICB0aGlzLnByZXZpb3VzQ29udGVudCA9IGNvbnRlbnQ7ICAvLy9cclxuXHJcbiAgICB0aGlzLnByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uOyAgLy8vXHJcblxyXG4gICAgZmluZEhhbmRsZXIgJiYgdGhpcy5vbkZpbmQoZmluZEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGJsdXJIYW5kbGVyICYmIHRoaXMub25CbHVyKGJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBmb2N1c0hhbmRsZXIgJiYgdGhpcy5vbkZvY3VzKGZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgY2hhbmdlSGFuZGxlciAmJiB0aGlzLm9uQ2hhbmdlKGNoYW5nZUhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHNjcm9sbEhhbmRsZXIgJiYgdGhpcy5vblNjcm9sbChzY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKENVVF9FVkVOVF9UWVBFLCB0aGlzLmN1dEhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub24oQ09QWV9FVkVOVF9UWVBFLCB0aGlzLmNvcHlIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKFBBU1RFX0VWRU5UX1RZUEUsIHRoaXMucGFzdGVIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKENPTlRFWFRNRU5VX0VWRU5UX1RZUEUsIHRoaXMuY29udGV4dG1lbnVIYW5kbGVyKTtcclxuXHJcbiAgICBkb2N1bWVudC5vbihTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSwgdGhpcy5zZWxlY3RDaGFuZ2VIYW5kbGVyKTtcclxuICB9XHJcblxyXG4gIHdpbGxVbm1vdW50KCkge1xyXG4gICAgY29uc3QgeyBvbkZpbmQsIG9uQmx1ciwgb25Gb2N1cywgb25DaGFuZ2UsIG9uU2Nyb2xsIH0gPSB0aGlzLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgIGZpbmRIYW5kbGVyID0gb25GaW5kLCAvLy9cclxuICAgICAgICAgICAgYmx1ckhhbmRsZXIgPSBvbkJsdXIsIC8vL1xyXG4gICAgICAgICAgICBmb2N1c0hhbmRsZXIgPSBvbkZvY3VzLCAvLy9cclxuICAgICAgICAgICAgY2hhbmdlSGFuZGxlciA9IG9uQ2hhbmdlLCAvLy9cclxuICAgICAgICAgICAgc2Nyb2xsSGFuZGxlciA9IG9uU2Nyb2xsOyAvLy9cclxuXHJcbiAgICBmaW5kSGFuZGxlciAmJiB0aGlzLm9mZkZpbmQoZmluZEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGJsdXJIYW5kbGVyICYmIHRoaXMub2ZmQmx1cihibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgZm9jdXNIYW5kbGVyICYmIHRoaXMub2ZmRm9jdXMoZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBjaGFuZ2VIYW5kbGVyICYmIHRoaXMub2ZmQ2hhbmdlKGNoYW5nZUhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHNjcm9sbEhhbmRsZXIgJiYgdGhpcy5vZmZTY3JvbGwoc2Nyb2xsSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vZmYoQ1VUX0VWRU5UX1RZUEUsIHRoaXMuY3V0SGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoQ09QWV9FVkVOVF9UWVBFLCB0aGlzLmNvcHlIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihQQVNURV9FVkVOVF9UWVBFLCB0aGlzLnBhc3RlSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSwgdGhpcy5jb250ZXh0bWVudUhhbmRsZXIpO1xyXG5cclxuICAgIGRvY3VtZW50Lm9mZihTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSwgdGhpcy5zZWxlY3RDaGFuZ2VIYW5kbGVyKTtcclxuXHJcbiAgICBjb25zdCBhY3RpdmUgPSB0aGlzLmlzQWN0aXZlKCk7XHJcblxyXG4gICAgaWYgKGFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmRlYWN0aXZhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyB0YWdOYW1lID0gXCJ0ZXh0YXJlYVwiO1xyXG5cclxuICBzdGF0aWMgaWdub3JlZFByb3BlcnRpZXMgPSBbXHJcbiAgICBcIm9uRmluZFwiLFxyXG4gICAgXCJvbkJsdXJcIixcclxuICAgIFwib25Gb2N1c1wiLFxyXG4gICAgXCJvbkNoYW5nZVwiLFxyXG4gICAgXCJvblNjcm9sbFwiLFxyXG4gIF07XHJcblxyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcGVydGllcyA9IHtcclxuICAgIGNsYXNzTmFtZTogXCJyaWNoXCJcclxuICB9O1xyXG5cclxuICBzdGF0aWMgZnJvbUNsYXNzKENsYXNzLCBwcm9wZXJ0aWVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcclxuICAgIGNvbnN0IGZvY3VzZWQgPSBmYWxzZSxcclxuICAgICAgICAgIHJlYWRPbmx5ID0gZmFsc2UsXHJcbiAgICAgICAgICB1bmRvQnVmZmVyID0gVW5kb0J1ZmZlci5mcm9tTm90aGluZygpLFxyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gbnVsbCxcclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gbnVsbCxcclxuICAgICAgICAgIHJpY2hUZXh0YXJlYSA9IEVsZW1lbnQuZnJvbUNsYXNzKENsYXNzLCBwcm9wZXJ0aWVzLCBmb2N1c2VkLCByZWFkT25seSwgdW5kb0J1ZmZlciwgcHJldmlvdXNDb250ZW50LCBwcmV2aW91c1NlbGVjdGlvbiwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcclxuXHJcbiAgICByZXR1cm4gcmljaFRleHRhcmVhO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZGVmZXIoZnVuYykge1xyXG4gIHNldFRpbWVvdXQoZnVuYywgMCk7XHJcbn1cclxuIl0sIm5hbWVzIjpbIlJpY2hUZXh0YXJlYSIsInNlbGVjdG9yIiwiZm9jdXNlZCIsInJlYWRPbmx5IiwidW5kb0J1ZmZlciIsInByZXZpb3VzQ29udGVudCIsInByZXZpb3VzU2VsZWN0aW9uIiwiaW50ZXJtZWRpYXRlSGFuZGxlciIsImV2ZW50IiwiZWxlbWVudCIsInVuZG9hYmxlIiwiZXZlbnRUeXBlIiwiQ0hBTkdFX0VWRU5UX1RZUEUiLCJzZWxlY3Rpb25DaGFuZ2VkIiwiaGFzU2VsZWN0aW9uQ2hhbmdlZCIsImNvbnRlbnQiLCJzZXRDb250ZW50IiwiZ2V0Q29udGVudCIsInNlbGVjdGlvbiIsImdldFNlbGVjdGlvbiIsImNvbnRlbnRDaGFuZ2VkIiwiaGFzQ29udGVudENoYW5nZWQiLCJjaGFuZ2VkIiwiY2FsbEhhbmRsZXJzIiwib3BlcmF0aW9ucyIsImdlbmVyYXRlT3BlcmF0aW9ucyIsImFkZE9wZXJhdGlvbnMiLCJzZWxlY3RDaGFuZ2VIYW5kbGVyIiwiY29udGV4dG1lbnVIYW5kbGVyIiwicHJldmVudERlZmF1bHQiLCJrZXlEb3duSGFuZGxlciIsImN0cmxLZXkiLCJtZXRhS2V5Iiwia2V5Q29kZSIsIkZfS0VZX0NPREUiLCJmaW5kIiwiWl9LRVlfQ09ERSIsInNoaWZ0S2V5IiwicmVkbyIsInVuZG8iLCJkZWZlciIsInNjcm9sbEhhbmRsZXIiLCJTQ1JPTExfRVZFTlRfVFlQRSIsImZvY3VzSGFuZGxlciIsIkZPQ1VTX0VWRU5UX1RZUEUiLCJibHVySGFuZGxlciIsIkJMVVJfRVZFTlRfVFlQRSIsImlucHV0SGFuZGxlciIsInBhc3RlSGFuZGxlciIsImNsaXBib2FyZERhdGEiLCJ0ZXh0RGF0YSIsImdldERhdGEiLCJURVhUIiwiRU1QVFlfU1RSSU5HIiwic2VsZWN0aW9uRW1wdHkiLCJpc0VtcHR5IiwiZGVsZXRlT3BlcmF0aW9uIiwiRGVsZXRlT3BlcmF0aW9uIiwiZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24iLCJvcGVyYXRpb24iLCJhcHBseU9wZXJhdGlvbiIsImluc2VydE9wZXJhdGlvbiIsIkluc2VydE9wZXJhdGlvbiIsImNvcHlIYW5kbGVyIiwic2VsZWN0ZWRDb250ZW50IiwiZ2V0U2VsZWN0ZWRDb250ZW50IiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0IiwiY3V0SGFuZGxlciIsImlzRm9jdXNlZCIsImlzUmVhZE9ubHkiLCJnZXRVbmRvQnVmZmVyIiwiZ2V0UHJldmlvdXNDb250ZW50IiwicHJldm91c0NvbnRlbnQiLCJnZXRQcmV2aW91c1NlbGVjdGlvbiIsInNldEZvY3VzZWQiLCJzZXRSZWFkT25seSIsInNldFByZXZpb3VzQ29udGVudCIsInNldFByZXZpb3VzU2VsZWN0aW9uIiwiaXNBY3RpdmUiLCJhY3RpdmUiLCJoYXNDbGFzcyIsImRvbUVsZW1lbnQiLCJnZXRET01FbGVtZW50IiwidmFsdWUiLCJTZWxlY3Rpb24iLCJmcm9tRE9NRWxlbWVudCIsImVuZFBvc2l0aW9uIiwiZ2V0RW5kUG9zaXRpb24iLCJzdGFydFBvc2l0aW9uIiwiZ2V0U3RhcnRQb3NpdGlvbiIsInN0YXJ0IiwiZW5kIiwic2xpY2UiLCJjb250ZW50UHJldmlvdXNDb250ZW50Iiwic2VsZWN0aW9uUHJldmlvdXNTZWxlY3Rpb24iLCJpc0VxdWFsVG8iLCJPYmplY3QiLCJhc3NpZ24iLCJzZXRTZWxlY3Rpb24iLCJzZWxlY3Rpb25TdGFydFBvc2l0aW9uIiwic2VsZWN0aW9uRW5kUG9zaXRpb24iLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdGlvbkVuZCIsInNldFNlbGVjdGlvblJhbmdlIiwiRklORF9FVkVOVF9UWVBFIiwidW5kb09wZXJhdGlvbiIsInJldmVydCIsInJlZG9PcGVyYXRpb24iLCJmcm9tT3BlcmF0aW9uIiwidHJhbnNmb3JtIiwidHJhbnNmb3JtZWRDb250ZW50IiwidHJhbnNmb3JtQ29udGVudCIsInRyYW5zZm9ybWVkU2VsZWN0aW9uIiwidHJhbnNmb3JtU2VsZWN0aW9uIiwicmVtYWluaW5nQXJndW1lbnRzIiwiZXZlbnRMaXN0ZW5lcnMiLCJmaW5kRXZlbnRMaXN0ZW5lcnMiLCJmb3JFYWNoIiwiZXZlbnRMaXN0ZW5lciIsImhhbmRsZXIiLCJoYW5kbGVyRWxlbWVudCIsImNhbGwiLCJhY3RpdmF0ZSIsIm9uIiwiS0VZRE9XTl9FVkVOVF9UWVBFIiwiSU5QVVRfRVZFTlRfVFlQRSIsImFkZENsYXNzIiwiZGVhY3RpdmF0ZSIsIm9mZiIsInJlbW92ZUNsYXNzIiwib25GaW5kIiwiZmluZEhhbmRsZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib2ZmRmluZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvbkJsdXIiLCJvZmZCbHVyIiwib25Gb2N1cyIsIm9mZkZvY3VzIiwib25TY3JvbGwiLCJvZmZTY3JvbGwiLCJvbkNoYW5nZSIsImNoYW5nZUhhbmRsZXIiLCJvZmZDaGFuZ2UiLCJkaWRNb3VudCIsInByb3BlcnRpZXMiLCJDVVRfRVZFTlRfVFlQRSIsIkNPUFlfRVZFTlRfVFlQRSIsIlBBU1RFX0VWRU5UX1RZUEUiLCJDT05URVhUTUVOVV9FVkVOVF9UWVBFIiwiZG9jdW1lbnQiLCJTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSIsIndpbGxVbm1vdW50IiwiZnJvbUNsYXNzIiwiQ2xhc3MiLCJFbGVtZW50IiwiVW5kb0J1ZmZlciIsImZyb21Ob3RoaW5nIiwicmljaFRleHRhcmVhIiwidGFnTmFtZSIsImlnbm9yZWRQcm9wZXJ0aWVzIiwiZGVmYXVsdFByb3BlcnRpZXMiLCJjbGFzc05hbWUiLCJmdW5jIiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUEyQnFCQTs7O29CQXpCYTs4REFFWjsrREFDQzsyREFDSzsyREFDQTs0REFDQzsrREFDRTs2REFDQTt5QkFFSTt3QkFDSTswQkFZSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTVCLElBQUEsQUFBTUEsNkJBbWxCcEIsQUFubEJjO2NBQU1BOzhCQUFBQTthQUFBQSxhQUNQQyxRQUFRLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxFQUFFQyxVQUFVLEVBQUVDLGVBQWUsRUFBRUMsaUJBQWlCOzhCQURwRU47O2tDQUVYQztRQTZDUk0sK0NBQUFBLHVCQUFzQixTQUFDQyxPQUFPQyxTQUEyRztnQkFBbEdDLDRFQUFXLElBQUksRUFBRUMsNkVBQVlDLDZCQUFpQixFQUFFQyxvRkFBbUIsTUFBS0MsbUJBQW1CO1lBQ2hJLElBQUksTUFBS1gsUUFBUSxFQUFFO2dCQUNqQixJQUFNWSxVQUFVLE1BQUtWLGVBQWUsRUFBRyxHQUFHO2dCQUUxQyxNQUFLVyxVQUFVLENBQUNEO1lBQ2xCLENBQUM7WUFFRCxJQUFNQSxXQUFVLE1BQUtFLFVBQVUsSUFDekJDLFlBQVksTUFBS0MsWUFBWSxJQUM3QkMsaUJBQWlCLE1BQUtDLGlCQUFpQixJQUN2Q0MsVUFBV0Ysa0JBQWtCUDtZQUVuQyxJQUFJUyxTQUFTO2dCQUNYLE1BQUtDLFlBQVksQ0FBQ1osV0FBV0gsT0FBT0M7WUFDdEMsQ0FBQztZQUVELElBQUlDLFVBQVU7Z0JBQ1osSUFBSVUsZ0JBQWdCO29CQUNsQixJQUFNSSxhQUFhQyxJQUFBQSxpQkFBa0IsRUFBQyxNQUFLcEIsZUFBZSxFQUFFVTtvQkFFNUQsTUFBS1gsVUFBVSxDQUFDc0IsYUFBYSxDQUFDRjtnQkFDaEMsQ0FBQztZQUNILENBQUM7WUFFRCxNQUFLbkIsZUFBZSxHQUFHVSxVQUFVLEdBQUc7WUFFcEMsTUFBS1QsaUJBQWlCLEdBQUdZLFdBQVksR0FBRztRQUMxQztRQUVBUywrQ0FBQUEsdUJBQXNCLFNBQUNuQixPQUFPQyxTQUFZO1lBQ3hDLElBQUksTUFBS1AsT0FBTyxFQUFFO2dCQUNoQk8seUNBQWdCLEdBQUc7Z0JBRW5CLE1BQUtGLG1CQUFtQixDQUFDQyxPQUFPQztZQUNsQyxDQUFDO1FBQ0g7UUFFQW1CLCtDQUFBQSxzQkFBcUIsU0FBQ3BCLE9BQU9DLFNBQVk7WUFDdkNELE1BQU1xQixjQUFjO1FBQ3RCO1FBRUFDLCtDQUFBQSxrQkFBaUIsU0FBQ3RCLE9BQU9DLFNBQVk7WUFDbkMsSUFBUXNCLFVBQXFCdkIsTUFBckJ1QixTQUFTQyxVQUFZeEIsTUFBWndCO1lBRWpCLElBQUlELFdBQVdDLFNBQVM7Z0JBQ3RCLElBQU0sQUFBRUMsVUFBWXpCLE1BQVp5QjtnQkFFUixPQUFRQTtvQkFDTixLQUFLQyxvQkFBVTt3QkFBRTs0QkFDZixNQUFLQyxJQUFJLENBQUMzQixPQUFPQzs0QkFFakJELE1BQU1xQixjQUFjOzRCQUVwQjt3QkFDRjtvQkFFQSxLQUFLTyxvQkFBVTt3QkFBRTs0QkFDZixJQUFNLEFBQUVDLFdBQWE3QixNQUFiNkI7NEJBRVJBLFdBQ0UsTUFBS0MsSUFBSSxDQUFDOUIsT0FBT0MsV0FDZixNQUFLOEIsSUFBSSxDQUFDL0IsT0FBT0MsUUFBUTs0QkFFN0JELE1BQU1xQixjQUFjOzRCQUVwQjt3QkFDRjtnQkFDRjtZQUNGLENBQUM7WUFFRFcsTUFBTSxXQUFNO2dCQUNWLE1BQUtqQyxtQkFBbUIsQ0FBQ0MsT0FBT0M7WUFDbEM7UUFDRjtRQUVBZ0MsK0NBQUFBLGlCQUFnQixTQUFDakMsT0FBT0MsU0FBWTtZQUNsQyxJQUFNRSxZQUFZK0IsNkJBQWlCO1lBRW5DLE1BQUtuQixZQUFZLENBQUNaLFdBQVdILE9BQU9DO1FBQ3RDO1FBRUFrQywrQ0FBQUEsZ0JBQWUsU0FBQ25DLE9BQU9DLFNBQVk7WUFDakMsTUFBS1AsT0FBTyxHQUFHLElBQUk7WUFFbkJzQyxNQUFNLFdBQU07Z0JBQ1YsSUFBTTlCLFdBQVcsSUFBSSxFQUNmQyxZQUFZaUMsNEJBQWdCLEVBQzVCL0IsbUJBQW1CLElBQUk7Z0JBRTdCLE1BQUtOLG1CQUFtQixDQUFDQyxPQUFPQyxTQUFTQyxVQUFVQyxXQUFXRTtZQUNoRTtRQUNGO1FBRUFnQywrQ0FBQUEsZUFBYyxTQUFDckMsT0FBT0MsU0FBWTtZQUNoQyxNQUFLUCxPQUFPLEdBQUcsS0FBSztZQUVwQixJQUFNUSxXQUFXLElBQUksRUFDZkMsWUFBWW1DLDJCQUFlLEVBQzNCakMsbUJBQW1CLElBQUk7WUFFN0IsTUFBS04sbUJBQW1CLENBQUNDLE9BQU9DLFNBQVNDLFVBQVVDLFdBQVdFO1FBQ2hFO1FBRUFrQywrQ0FBQUEsZ0JBQWUsU0FBQ3ZDLE9BQU9DLFNBQVk7WUFDakMsTUFBS0YsbUJBQW1CLENBQUNDLE9BQU9DO1FBQ2xDO1FBRUF1QywrQ0FBQUEsZ0JBQWUsU0FBQ3hDLE9BQU9DLFNBQVk7WUFDakMsSUFBTSxBQUFFd0MsZ0JBQWtCekMsTUFBbEJ5QyxlQUNGQyxXQUFXRCxjQUFjRSxPQUFPLENBQUNDLGVBQUk7WUFFM0MsSUFBSUYsYUFBYUcsdUJBQVksRUFBRTtnQkFDN0I7WUFDRixDQUFDO1lBRUQsSUFBTW5DLFlBQVksTUFBS0MsWUFBWSxJQUM3Qm1DLGlCQUFpQnBDLFVBQVVxQyxPQUFPO1lBRXhDLElBQUksQ0FBQ0QsZ0JBQWdCO2dCQUNuQixJQUFNdkMsVUFBVSxNQUFLRSxVQUFVLElBQ3pCdUMsa0JBQWtCQyxlQUFlLENBQUNDLHVCQUF1QixDQUFDM0MsU0FBU0csWUFDbkV5QyxZQUFZSDtnQkFFbEIsTUFBS0ksY0FBYyxDQUFDRDtZQUN0QixDQUFDO1lBRUQsSUFBTTVDLFdBQVVtQyxVQUNWVyxrQkFBa0JDLGVBQWUsQ0FBQ0osdUJBQXVCLENBQUMzQyxVQUFTRyxZQUNuRXlDLGFBQVlFLGlCQUFrQixHQUFHO1lBRXZDLE1BQUtELGNBQWMsQ0FBQ0Q7WUFFcEIsTUFBS3BELG1CQUFtQixDQUFDQyxPQUFPQztZQUVoQ0QsTUFBTXFCLGNBQWM7UUFDdEI7UUFFQWtDLCtDQUFBQSxlQUFjLFNBQUN2RCxPQUFPQyxTQUFZO1lBQ2hDLElBQU1TLFlBQVksTUFBS0MsWUFBWSxJQUM3Qm1DLGlCQUFpQnBDLFVBQVVxQyxPQUFPO1lBRXhDLElBQUlELGdCQUFnQjtnQkFDbEI7WUFDRixDQUFDO1lBRUQsSUFBTVUsa0JBQWtCLE1BQUtDLGtCQUFrQjtZQUUvQ0MsVUFBVUMsU0FBUyxDQUFDQyxTQUFTLENBQUNKO1lBRTlCeEQsTUFBTXFCLGNBQWM7UUFDdEI7UUFFQXdDLCtDQUFBQSxjQUFhLFNBQUM3RCxPQUFPQyxTQUFZO1lBQy9CLElBQU1TLFlBQVksTUFBS0MsWUFBWSxJQUM3Qm1DLGlCQUFpQnBDLFVBQVVxQyxPQUFPO1lBRXhDLElBQUlELGdCQUFnQjtnQkFDbEI7WUFDRixDQUFDO1lBRUQsSUFBTVUsa0JBQWtCLE1BQUtDLGtCQUFrQjtZQUUvQ0MsVUFBVUMsU0FBUyxDQUFDQyxTQUFTLENBQUNKO1lBRTlCLElBQU1qRCxVQUFVLE1BQUtFLFVBQVUsSUFDekJ1QyxrQkFBa0JDLGVBQWUsQ0FBQ0MsdUJBQXVCLENBQUMzQyxTQUFTRyxZQUNuRXlDLFlBQVlILGlCQUFrQixHQUFHO1lBRXZDLE1BQUtJLGNBQWMsQ0FBQ0Q7WUFFcEIsTUFBS3BELG1CQUFtQixDQUFDQyxPQUFPQztZQUVoQ0QsTUFBTXFCLGNBQWM7UUFDdEI7UUF4TkUsTUFBSzNCLE9BQU8sR0FBR0E7UUFDZixNQUFLQyxRQUFRLEdBQUdBO1FBQ2hCLE1BQUtDLFVBQVUsR0FBR0E7UUFDbEIsTUFBS0MsZUFBZSxHQUFHQTtRQUN2QixNQUFLQyxpQkFBaUIsR0FBR0E7OztpQkFSUk47O1lBV25Cc0UsS0FBQUE7bUJBQUFBLFNBQUFBLFlBQVk7Z0JBQ1YsT0FBTyxJQUFJLENBQUNwRSxPQUFPO1lBQ3JCOzs7WUFFQXFFLEtBQUFBO21CQUFBQSxTQUFBQSxhQUFhO2dCQUNYLE9BQU8sSUFBSSxDQUFDcEUsUUFBUTtZQUN0Qjs7O1lBRUFxRSxLQUFBQTttQkFBQUEsU0FBQUEsZ0JBQWdCO2dCQUNkLE9BQU8sSUFBSSxDQUFDcEUsVUFBVTtZQUN4Qjs7O1lBRUFxRSxLQUFBQTttQkFBQUEsU0FBQUEscUJBQXFCO2dCQUNuQixPQUFPLElBQUksQ0FBQ0MsY0FBYztZQUM1Qjs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSx1QkFBdUI7Z0JBQ3JCLE9BQU8sSUFBSSxDQUFDckUsaUJBQWlCO1lBQy9COzs7WUFFQXNFLEtBQUFBO21CQUFBQSxTQUFBQSxXQUFXMUUsT0FBTyxFQUFFO2dCQUNsQixJQUFJLENBQUNBLE9BQU8sR0FBR0E7WUFDakI7OztZQUVBMkUsS0FBQUE7bUJBQUFBLFNBQUFBLFlBQVkxRSxRQUFRLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQ0EsUUFBUSxHQUFHQTtZQUNsQjs7O1lBRUEyRSxLQUFBQTttQkFBQUEsU0FBQUEsbUJBQW1CekUsZUFBZSxFQUFFO2dCQUNsQyxJQUFJLENBQUNBLGVBQWUsR0FBR0E7WUFDekI7OztZQUVBMEUsS0FBQUE7bUJBQUFBLFNBQUFBLHFCQUFxQnpFLGlCQUFpQixFQUFFO2dCQUN0QyxJQUFJLENBQUNBLGlCQUFpQixHQUFHQTtZQUMzQjs7O1lBaUxBMEUsS0FBQUE7bUJBQUFBLFNBQUFBLFdBQVc7Z0JBQ1QsSUFBTUMsU0FBUyxJQUFJLENBQUNDLFFBQVEsQ0FBQztnQkFFN0IsT0FBT0Q7WUFDVDs7O1lBRUFoRSxLQUFBQTttQkFBQUEsU0FBQUEsYUFBYTtnQkFDWCxJQUFNa0UsYUFBYSxJQUFJLENBQUNDLGFBQWEsSUFDL0IsQUFBRUMsUUFBVUYsV0FBVkUsT0FDRnRFLFVBQVVzRSxPQUFRLEdBQUc7Z0JBRTNCLE9BQU90RTtZQUNUOzs7WUFFQUksS0FBQUE7bUJBQUFBLFNBQUFBLGVBQWU7Z0JBQ2IsSUFBTWdFLGFBQWEsSUFBSSxDQUFDQyxhQUFhLElBQy9CbEUsWUFBWW9FLGtCQUFTLENBQUNDLGNBQWMsQ0FBQ0o7Z0JBRTNDLE9BQU9qRTtZQUNUOzs7WUFFQStDLEtBQUFBO21CQUFBQSxTQUFBQSxxQkFBcUI7Z0JBQ25CLElBQU1sRCxVQUFVLElBQUksQ0FBQ0UsVUFBVSxJQUN6QkMsWUFBWSxJQUFJLENBQUNDLFlBQVksSUFDN0JxRSxjQUFjdEUsVUFBVXVFLGNBQWMsSUFDdENDLGdCQUFnQnhFLFVBQVV5RSxnQkFBZ0IsSUFDMUNDLFFBQVFGLGVBQ1JHLE1BQU1MLGFBQ054QixrQkFBa0JqRCxRQUFRK0UsS0FBSyxDQUFDRixPQUFPQztnQkFFN0MsT0FBTzdCO1lBQ1Q7OztZQUVBM0MsS0FBQUE7bUJBQUFBLFNBQUFBLG9CQUFvQjtnQkFDbEIsSUFBTU4sVUFBVSxJQUFJLENBQUNFLFVBQVUsSUFDekI4RSx5QkFBMEJoRixZQUFZLElBQUksQ0FBQ1YsZUFBZSxFQUMxRGUsaUJBQWlCLENBQUMyRTtnQkFFeEIsT0FBTzNFO1lBQ1Q7OztZQUVBTixLQUFBQTttQkFBQUEsU0FBQUEsc0JBQXNCO2dCQUNwQixJQUFNSSxZQUFZLElBQUksQ0FBQ0MsWUFBWSxJQUM3QjZFLDZCQUE2QjlFLFVBQVUrRSxTQUFTLENBQUMsSUFBSSxDQUFDM0YsaUJBQWlCLEdBQ3ZFTyxtQkFBbUIsQ0FBQ21GLDRCQUE0QixHQUFHO2dCQUV6RCxPQUFPbkY7WUFDVDs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxXQUFXRCxPQUFPLEVBQTZCO29CQUEzQitELHFCQUFBQSxpRUFBcUIsSUFBSTtnQkFDM0MsSUFBTU8sUUFBUXRFLFNBQ1JvRSxhQUFhLElBQUksQ0FBQ0MsYUFBYTtnQkFFckNjLE9BQU9DLE1BQU0sQ0FBQ2hCLFlBQVk7b0JBQ3hCRSxPQUFBQTtnQkFDRjtnQkFFQSxJQUFJUCxvQkFBb0I7b0JBQ3RCLElBQUksQ0FBQ3pFLGVBQWUsR0FBR1UsU0FBVSxHQUFHO2dCQUN0QyxDQUFDO1lBQ0g7OztZQUVBcUYsS0FBQUE7bUJBQUFBLFNBQUFBLGFBQWFsRixTQUFTLEVBQStCO29CQUE3QjZELHVCQUFBQSxpRUFBdUIsSUFBSTtnQkFDakQsSUFBTXNCLHlCQUF5Qm5GLFVBQVV5RSxnQkFBZ0IsSUFDbkRXLHVCQUF1QnBGLFVBQVV1RSxjQUFjLElBQy9DYyxpQkFBaUJGLHdCQUNqQkcsZUFBZUYsc0JBQ2ZuQixhQUFhLElBQUksQ0FBQ0MsYUFBYTtnQkFFckNELFdBQVdzQixpQkFBaUIsQ0FBQ0YsZ0JBQWdCQztnQkFFN0MsSUFBSXpCLHNCQUFzQjtvQkFDeEIsSUFBSSxDQUFDekUsaUJBQWlCLEdBQUdZLFdBQVksR0FBRztnQkFDMUMsQ0FBQztZQUNIOzs7WUFFQWlCLEtBQUFBO21CQUFBQSxTQUFBQSxLQUFLM0IsS0FBSyxFQUFFQyxPQUFPLEVBQUU7Z0JBQ25CLElBQU1FLFlBQVkrRiwyQkFBZTtnQkFFakMsSUFBSSxDQUFDbkYsWUFBWSxDQUFDWixXQUFXSCxPQUFPQztZQUN0Qzs7O1lBRUE4QixLQUFBQTttQkFBQUEsU0FBQUEsS0FBSy9CLEtBQUssRUFBRUMsT0FBTyxFQUFFO2dCQUNuQixJQUFNa0csZ0JBQWdCLElBQUksQ0FBQ3ZHLFVBQVUsQ0FBQ21DLElBQUk7Z0JBRTFDLElBQUlvRSxrQkFBa0IsSUFBSSxFQUFFO29CQUMxQixJQUFNaEQsWUFBWWdELGVBQWdCLEdBQUc7b0JBRXJDLElBQUksQ0FBQ0MsTUFBTSxDQUFDcEcsT0FBT0MsU0FBU2tEO2dCQUM5QixDQUFDO1lBQ0g7OztZQUVBckIsS0FBQUE7bUJBQUFBLFNBQUFBLEtBQUs5QixLQUFLLEVBQUVDLE9BQU8sRUFBRTtnQkFDbkIsSUFBTW9HLGdCQUFnQixJQUFJLENBQUN6RyxVQUFVLENBQUNrQyxJQUFJO2dCQUUxQyxJQUFJdUUsa0JBQWtCLElBQUksRUFBRTtvQkFDMUIsSUFBTWxELFlBQVlrRCxlQUFnQixHQUFHO29CQUVyQyxJQUFJLENBQUNELE1BQU0sQ0FBQ3BHLE9BQU9DLFNBQVNrRDtnQkFDOUIsQ0FBQztZQUNIOzs7WUFFQWlELEtBQUFBO21CQUFBQSxTQUFBQSxPQUFPcEcsS0FBSyxFQUFFQyxPQUFPLEVBQUVrRCxTQUFTLEVBQUU7Z0JBQ2hDLElBQU1qRCxXQUFXLEtBQUssRUFDaEJRLFlBQVlvRSxrQkFBUyxDQUFDd0IsYUFBYSxDQUFDbkQsWUFDcENvQix1QkFBdUIsS0FBSztnQkFFbEMsSUFBSSxDQUFDbkIsY0FBYyxDQUFDRDtnQkFFcEIsSUFBSSxDQUFDeUMsWUFBWSxDQUFDbEYsV0FBVzZEO2dCQUU3QixJQUFJLENBQUN4RSxtQkFBbUIsQ0FBQ0MsT0FBT0MsU0FBU0M7WUFDM0M7OztZQUVBcUcsS0FBQUE7bUJBQUFBLFNBQUFBLFVBQVV2RixVQUFVLEVBQUU7Z0JBQ3BCLElBQUlULFVBQVUsSUFBSSxDQUFDRSxVQUFVLElBQ3pCQyxZQUFZLElBQUksQ0FBQ0MsWUFBWTtnQkFFakMsSUFBTTZGLHFCQUFxQkMsSUFBQUEsZ0JBQWdCLEVBQUNsRyxTQUFTUyxhQUMvQzBGLHVCQUF1QkMsSUFBQUEsbUJBQWtCLEVBQUNqRyxXQUFXTTtnQkFFM0RULFVBQVVpRyxvQkFBb0IsR0FBRztnQkFFakM5RixZQUFZZ0csc0JBQXNCLEdBQUc7Z0JBRXJDLElBQU1wQyxxQkFBcUIsS0FBSyxFQUMxQkMsdUJBQXVCLEtBQUs7Z0JBRWxDLElBQUksQ0FBQy9ELFVBQVUsQ0FBQ0QsU0FBUytEO2dCQUV6QixJQUFJLENBQUNzQixZQUFZLENBQUNsRixXQUFXNkQ7Z0JBRTdCLElBQUksQ0FBQzNFLFVBQVUsQ0FBQzJHLFNBQVMsQ0FBQ3ZGO2dCQUUxQixJQUFNaEIsUUFBUSxJQUFJLEVBQ1pDLFVBQVUsSUFBSSxFQUNkQyxXQUFXLEtBQUssRUFDaEJDLFlBQVlDLDZCQUFpQjtnQkFFbkMsSUFBSSxDQUFDTCxtQkFBbUIsQ0FBQ0MsT0FBT0MsU0FBU0MsVUFBVUM7WUFDckQ7OztZQUVBWSxLQUFBQTttQkFBQUEsU0FBQUEsYUFBYVosU0FBUyxFQUF5QjtnQkFBdkIsSUFBQSxJQUFBLE9BQUEsVUFBQSxRQUFBLEFBQUd5RyxxQkFBSCxVQUFBLE9BQUEsSUFBQSxPQUFBLEtBQXFCLEdBQXJCLE9BQUEsR0FBQSxPQUFBLE1BQUEsT0FBQTtvQkFBR0EsbUJBQUgsT0FBQSxLQUFBLFNBQUEsQ0FBQSxLQUFxQjtnQkFBRDs7Z0JBQzFDLElBQU1DLGlCQUFpQixJQUFJLENBQUNDLGtCQUFrQixDQUFDM0c7Z0JBRS9DMEcsZUFBZUUsT0FBTyxDQUFDLFNBQUNDLGVBQWtCO29CQUN4QyxJQUFJLEFBQUUvRyxVQUFZK0csY0FBWi9HO29CQUVOLElBQU0sQUFBRWdILFVBQVlELGNBQVpDLFNBQ0FDLGlCQUFpQmpILFNBQVMsR0FBRztvQkFFckNBLGlCQUFnQixHQUFHO29CQUVuQixJQUFJLEFBQUNnSCxZQUFZLE1BQUs1RSxXQUFXLElBQU00RSxZQUFZLE1BQUs5RSxZQUFZLElBQU04RSxZQUFZLE1BQUtoRixhQUFhLEVBQUc7NEJBQ3pHZ0Y7d0JBQUFBLENBQUFBLFdBQUFBLFNBQVFFLElBQUksQ0FBWkYsTUFBQUEsVUFBQUE7NEJBQWFDO3lCQUErQyxDQUE1REQsT0FBNkIsbUJBQUdMLHFCQUFoQ0s7NEJBQW9EaEg7eUJBQVE7b0JBQzlELENBQUM7Z0JBQ0g7WUFDRjs7O1lBRUFtRCxLQUFBQTttQkFBQUEsU0FBQUEsZUFBZUQsU0FBUyxFQUFFO2dCQUN4QixJQUFJNUMsVUFBVSxJQUFJLENBQUNFLFVBQVUsSUFDekJDLFlBQVksSUFBSSxDQUFDQyxZQUFZO2dCQUVqQyxJQUFNNkYscUJBQXFCckQsVUFBVXNELGdCQUFnQixDQUFDbEcsVUFDaERtRyx1QkFBdUJ2RCxVQUFVd0Qsa0JBQWtCLENBQUNqRztnQkFFMURILFVBQVVpRyxvQkFBb0IsR0FBRztnQkFFakM5RixZQUFZZ0csc0JBQXNCLEdBQUc7Z0JBRXJDLElBQU1wQyxxQkFBcUIsS0FBSyxFQUMxQkMsdUJBQXVCLEtBQUs7Z0JBRWxDLElBQUksQ0FBQy9ELFVBQVUsQ0FBQ0QsU0FBUytEO2dCQUV6QixJQUFJLENBQUNzQixZQUFZLENBQUNsRixXQUFXNkQ7WUFDL0I7OztZQUVBNkMsS0FBQUE7bUJBQUFBLFNBQUFBLFdBQVc7Z0JBQ1QsSUFBSSxDQUFDQyxFQUFFLENBQUNDLDhCQUFrQixFQUFFLElBQUksQ0FBQ2hHLGNBQWMsRUFBRSxJQUFJO2dCQUVyRCxJQUFJLENBQUMrRixFQUFFLENBQUNFLDRCQUFnQixFQUFFLElBQUksQ0FBQ2hGLFlBQVksRUFBRSxJQUFJO2dCQUVqRCxJQUFJLENBQUM4RSxFQUFFLENBQUNuRiw2QkFBaUIsRUFBRSxJQUFJLENBQUNELGFBQWEsRUFBRSxJQUFJO2dCQUVuRCxJQUFJLENBQUNvRixFQUFFLENBQUNqRiw0QkFBZ0IsRUFBRSxJQUFJLENBQUNELFlBQVksRUFBRSxJQUFJO2dCQUVqRCxJQUFJLENBQUNrRixFQUFFLENBQUMvRSwyQkFBZSxFQUFFLElBQUksQ0FBQ0QsV0FBVyxFQUFFLElBQUk7Z0JBRS9DLElBQUksQ0FBQ21GLFFBQVEsQ0FBQztZQUNoQjs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxhQUFhO2dCQUNYLElBQUksQ0FBQ0MsR0FBRyxDQUFDSiw4QkFBa0IsRUFBRSxJQUFJLENBQUNoRyxjQUFjLEVBQUUsSUFBSTtnQkFFdEQsSUFBSSxDQUFDb0csR0FBRyxDQUFDSCw0QkFBZ0IsRUFBRSxJQUFJLENBQUNoRixZQUFZLEVBQUUsSUFBSTtnQkFFbEQsSUFBSSxDQUFDbUYsR0FBRyxDQUFDeEYsNkJBQWlCLEVBQUUsSUFBSSxDQUFDRCxhQUFhLEVBQUUsSUFBSTtnQkFFcEQsSUFBSSxDQUFDeUYsR0FBRyxDQUFDdEYsNEJBQWdCLEVBQUUsSUFBSSxDQUFDRCxZQUFZLEVBQUUsSUFBSTtnQkFFbEQsSUFBSSxDQUFDdUYsR0FBRyxDQUFDcEYsMkJBQWUsRUFBRSxJQUFJLENBQUNELFdBQVcsRUFBRSxJQUFJO2dCQUVoRCxJQUFJLENBQUNzRixXQUFXLENBQUM7WUFDbkI7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsT0FBT0MsV0FBVyxFQUFFNUgsT0FBTyxFQUFFO2dCQUMzQixJQUFNRSxZQUFZK0YsMkJBQWUsRUFDM0JlLFVBQVVZLGFBQWMsR0FBRztnQkFFakMsSUFBSSxDQUFDQyxnQkFBZ0IsQ0FBQzNILFdBQVc4RyxTQUFTaEg7WUFDNUM7OztZQUVBOEgsS0FBQUE7bUJBQUFBLFNBQUFBLFFBQVFGLFdBQVcsRUFBRTVILE9BQU8sRUFBRTtnQkFDNUIsSUFBTUUsWUFBWStGLDJCQUFlLEVBQzNCZSxVQUFVWSxhQUFjLEdBQUc7Z0JBRWpDLElBQUksQ0FBQ0csbUJBQW1CLENBQUM3SCxXQUFXOEcsU0FBU2hIO1lBQy9DOzs7WUFFQWdJLEtBQUFBO21CQUFBQSxTQUFBQSxPQUFPNUYsV0FBVyxFQUFFcEMsT0FBTyxFQUFFO2dCQUMzQixJQUFNRSxZQUFZbUMsMkJBQWUsRUFDM0IyRSxVQUFVNUUsYUFBYyxHQUFHO2dCQUVqQyxJQUFJLENBQUN5RixnQkFBZ0IsQ0FBQzNILFdBQVc4RyxTQUFTaEg7WUFDNUM7OztZQUVBaUksS0FBQUE7bUJBQUFBLFNBQUFBLFFBQVE3RixXQUFXLEVBQUVwQyxPQUFPLEVBQUU7Z0JBQzVCLElBQU1FLFlBQVltQywyQkFBZSxFQUMzQjJFLFVBQVU1RSxhQUFjLEdBQUc7Z0JBRWpDLElBQUksQ0FBQzJGLG1CQUFtQixDQUFDN0gsV0FBVzhHLFNBQVNoSDtZQUMvQzs7O1lBRUFrSSxLQUFBQTttQkFBQUEsU0FBQUEsUUFBUTlGLFdBQVcsRUFBRXBDLE9BQU8sRUFBRTtnQkFDNUIsSUFBTUUsWUFBWWlDLDRCQUFnQixFQUM1QjZFLFVBQVU1RSxhQUFjLEdBQUc7Z0JBRWpDLElBQUksQ0FBQ3lGLGdCQUFnQixDQUFDM0gsV0FBVzhHLFNBQVNoSDtZQUM1Qzs7O1lBRUFtSSxLQUFBQTttQkFBQUEsU0FBQUEsU0FBUy9GLFdBQVcsRUFBRXBDLE9BQU8sRUFBRTtnQkFDN0IsSUFBTUUsWUFBWWlDLDRCQUFnQixFQUM1QjZFLFVBQVU1RSxhQUFjLEdBQUc7Z0JBRWpDLElBQUksQ0FBQzJGLG1CQUFtQixDQUFDN0gsV0FBVzhHLFNBQVNoSDtZQUMvQzs7O1lBRUFvSSxLQUFBQTttQkFBQUEsU0FBQUEsU0FBU3BHLGFBQWEsRUFBRWhDLE9BQU8sRUFBRTtnQkFDL0IsSUFBTUUsWUFBWStCLDZCQUFpQixFQUM3QitFLFVBQVVoRixlQUFnQixHQUFHO2dCQUVuQyxJQUFJLENBQUM2RixnQkFBZ0IsQ0FBQzNILFdBQVc4RyxTQUFTaEg7WUFDNUM7OztZQUVBcUksS0FBQUE7bUJBQUFBLFNBQUFBLFVBQVVyRyxhQUFhLEVBQUVoQyxPQUFPLEVBQUU7Z0JBQ2hDLElBQU1FLFlBQVkrQiw2QkFBaUIsRUFDN0IrRSxVQUFVaEYsZUFBZ0IsR0FBRztnQkFFbkMsSUFBSSxDQUFDK0YsbUJBQW1CLENBQUM3SCxXQUFXOEcsU0FBU2hIO1lBQy9DOzs7WUFFQXNJLEtBQUFBO21CQUFBQSxTQUFBQSxTQUFTQyxhQUFhLEVBQUV2SSxPQUFPLEVBQUU7Z0JBQy9CLElBQU1FLFlBQVlDLDZCQUFpQixFQUM3QjZHLFVBQVV1QixlQUFnQixHQUFHO2dCQUVuQyxJQUFJLENBQUNWLGdCQUFnQixDQUFDM0gsV0FBVzhHLFNBQVNoSDtZQUM1Qzs7O1lBRUF3SSxLQUFBQTttQkFBQUEsU0FBQUEsVUFBVUQsYUFBYSxFQUFFdkksT0FBTyxFQUFFO2dCQUNoQyxJQUFNRSxZQUFZQyw2QkFBaUIsRUFDN0I2RyxVQUFVdUIsZUFBZ0IsR0FBRztnQkFFbkMsSUFBSSxDQUFDUixtQkFBbUIsQ0FBQzdILFdBQVc4RyxTQUFTaEg7WUFDL0M7OztZQUVBeUksS0FBQUE7bUJBQUFBLFNBQUFBLFdBQVc7Z0JBQ1QsSUFBd0QsbUJBQUEsSUFBSSxDQUFDQyxVQUFVLEVBQS9EZixTQUFnRCxpQkFBaERBLFFBQVFLLFNBQXdDLGlCQUF4Q0EsUUFBUUUsVUFBZ0MsaUJBQWhDQSxTQUFTSSxXQUF1QixpQkFBdkJBLFVBQVVGLFdBQWEsaUJBQWJBLFVBQ3JDUixjQUFjRCxRQUNkdkYsY0FBYzRGLFFBQ2Q5RixlQUFlZ0csU0FDZkssZ0JBQWdCRCxVQUNoQnRHLGdCQUFnQm9HLFVBQVUsR0FBRztnQkFFbkMsSUFBTTlILFVBQVUsSUFBSSxDQUFDRSxVQUFVLElBQ3pCQyxZQUFZLElBQUksQ0FBQ0MsWUFBWTtnQkFFbkMsSUFBSSxDQUFDZCxlQUFlLEdBQUdVLFNBQVUsR0FBRztnQkFFcEMsSUFBSSxDQUFDVCxpQkFBaUIsR0FBR1ksV0FBWSxHQUFHO2dCQUV4Q21ILGVBQWUsSUFBSSxDQUFDRCxNQUFNLENBQUNDLGFBQWEsSUFBSTtnQkFFNUN4RixlQUFlLElBQUksQ0FBQzRGLE1BQU0sQ0FBQzVGLGFBQWEsSUFBSTtnQkFFNUNGLGdCQUFnQixJQUFJLENBQUNnRyxPQUFPLENBQUNoRyxjQUFjLElBQUk7Z0JBRS9DcUcsaUJBQWlCLElBQUksQ0FBQ0QsUUFBUSxDQUFDQyxlQUFlLElBQUk7Z0JBRWxEdkcsaUJBQWlCLElBQUksQ0FBQ29HLFFBQVEsQ0FBQ3BHLGVBQWUsSUFBSTtnQkFFbEQsSUFBSSxDQUFDb0YsRUFBRSxDQUFDdUIsMEJBQWMsRUFBRSxJQUFJLENBQUMvRSxVQUFVO2dCQUV2QyxJQUFJLENBQUN3RCxFQUFFLENBQUN3QiwyQkFBZSxFQUFFLElBQUksQ0FBQ3RGLFdBQVc7Z0JBRXpDLElBQUksQ0FBQzhELEVBQUUsQ0FBQ3lCLDRCQUFnQixFQUFFLElBQUksQ0FBQ3RHLFlBQVk7Z0JBRTNDLElBQUksQ0FBQzZFLEVBQUUsQ0FBQzBCLGtDQUFzQixFQUFFLElBQUksQ0FBQzNILGtCQUFrQjtnQkFFdkQ0SCxjQUFRLENBQUMzQixFQUFFLENBQUM0QixzQ0FBMEIsRUFBRSxJQUFJLENBQUM5SCxtQkFBbUI7WUFDbEU7OztZQUVBK0gsS0FBQUE7bUJBQUFBLFNBQUFBLGNBQWM7Z0JBQ1osSUFBd0QsbUJBQUEsSUFBSSxDQUFDUCxVQUFVLEVBQS9EZixTQUFnRCxpQkFBaERBLFFBQVFLLFNBQXdDLGlCQUF4Q0EsUUFBUUUsVUFBZ0MsaUJBQWhDQSxTQUFTSSxXQUF1QixpQkFBdkJBLFVBQVVGLFdBQWEsaUJBQWJBLFVBQ25DUixjQUFjRCxRQUNkdkYsY0FBYzRGLFFBQ2Q5RixlQUFlZ0csU0FDZkssZ0JBQWdCRCxVQUNoQnRHLGdCQUFnQm9HLFVBQVUsR0FBRztnQkFFckNSLGVBQWUsSUFBSSxDQUFDRSxPQUFPLENBQUNGLGFBQWEsSUFBSTtnQkFFN0N4RixlQUFlLElBQUksQ0FBQzZGLE9BQU8sQ0FBQzdGLGFBQWEsSUFBSTtnQkFFN0NGLGdCQUFnQixJQUFJLENBQUNpRyxRQUFRLENBQUNqRyxjQUFjLElBQUk7Z0JBRWhEcUcsaUJBQWlCLElBQUksQ0FBQ0MsU0FBUyxDQUFDRCxlQUFlLElBQUk7Z0JBRW5EdkcsaUJBQWlCLElBQUksQ0FBQ3FHLFNBQVMsQ0FBQ3JHLGVBQWUsSUFBSTtnQkFFbkQsSUFBSSxDQUFDeUYsR0FBRyxDQUFDa0IsMEJBQWMsRUFBRSxJQUFJLENBQUMvRSxVQUFVO2dCQUV4QyxJQUFJLENBQUM2RCxHQUFHLENBQUNtQiwyQkFBZSxFQUFFLElBQUksQ0FBQ3RGLFdBQVc7Z0JBRTFDLElBQUksQ0FBQ21FLEdBQUcsQ0FBQ29CLDRCQUFnQixFQUFFLElBQUksQ0FBQ3RHLFlBQVk7Z0JBRTVDLElBQUksQ0FBQ2tGLEdBQUcsQ0FBQ3FCLGtDQUFzQixFQUFFLElBQUksQ0FBQzNILGtCQUFrQjtnQkFFeEQ0SCxjQUFRLENBQUN0QixHQUFHLENBQUN1QixzQ0FBMEIsRUFBRSxJQUFJLENBQUM5SCxtQkFBbUI7Z0JBRWpFLElBQU1zRCxTQUFTLElBQUksQ0FBQ0QsUUFBUTtnQkFFNUIsSUFBSUMsUUFBUTtvQkFDVixJQUFJLENBQUNnRCxVQUFVO2dCQUNqQixDQUFDO1lBQ0g7Ozs7WUFnQk8wQixLQUFBQTttQkFBUCxTQUFPQSxVQUFVQyxLQUFLLEVBQUVULFVBQVUsRUFBeUI7Z0JBQXZCLElBQUEsSUFBQSxPQUFBLFVBQUEsUUFBQSxBQUFHL0IscUJBQUgsVUFBQSxPQUFBLElBQUEsT0FBQSxLQUFxQixHQUFyQixPQUFBLEdBQUEsT0FBQSxNQUFBLE9BQUE7b0JBQUdBLG1CQUFILE9BQUEsS0FBQSxTQUFBLENBQUEsS0FBcUI7Z0JBQUQ7b0JBTWpDeUM7Z0JBTHJCLElBQU0zSixVQUFVLEtBQUssRUFDZkMsV0FBVyxLQUFLLEVBQ2hCQyxhQUFhMEosbUJBQVUsQ0FBQ0MsV0FBVyxJQUNuQzFKLGtCQUFrQixJQUFJLEVBQ3RCQyxvQkFBb0IsSUFBSSxFQUN4QjBKLGVBQWVILENBQUFBLFdBQUFBLGFBQU8sRUFBQ0YsU0FBUyxDQUFqQkUsTUFBQUEsVUFBQUE7b0JBQWtCRDtvQkFBT1Q7b0JBQVlqSjtvQkFBU0M7b0JBQVVDO29CQUFZQztvQkFBaUJDO2lCQUF5QyxDQUE5SHVKLE9BQXdHLG1CQUFHekM7Z0JBRWhJLE9BQU80QztZQUNUOzs7V0FobEJtQmhLO21CQUFxQjZKLGFBQU87QUF5akIvQyxnQkF6akJtQjdKLGNBeWpCWmlLLFdBQVU7QUFFakIsZ0JBM2pCbUJqSyxjQTJqQlprSyxxQkFBb0I7SUFDekI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBRUQsZ0JBbmtCbUJsSyxjQW1rQlptSyxxQkFBb0I7SUFDekJDLFdBQVc7QUFDYjtBQWNGLFNBQVM1SCxNQUFNNkgsSUFBSSxFQUFFO0lBQ25CQyxXQUFXRCxNQUFNO0FBQ25CIn0=
|
|
731
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yaWNoVGV4dGFyZWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyBFbGVtZW50LCBkb2N1bWVudCB9IGZyb20gXCJlYXN5XCI7XHJcblxyXG5pbXBvcnQgU2VsZWN0aW9uIGZyb20gXCIuL3NlbGVjdGlvblwiXHJcbmltcG9ydCBVbmRvQnVmZmVyIGZyb20gXCIuL3VuZG9CdWZmZXJcIjtcclxuaW1wb3J0IEluc2VydE9wZXJhdGlvbiBmcm9tIFwiLi9vcGVyYXRpb24vaW5zZXJ0XCI7XHJcbmltcG9ydCBEZWxldGVPcGVyYXRpb24gZnJvbSBcIi4vb3BlcmF0aW9uL2RlbGV0ZVwiO1xyXG5pbXBvcnQgdHJhbnNmb3JtQ29udGVudCBmcm9tIFwiLi90cmFuc2Zvcm0vY29udGVudFwiO1xyXG5pbXBvcnQgdHJhbnNmb3JtU2VsZWN0aW9uIGZyb20gXCIuL3RyYW5zZm9ybS9zZWxlY3Rpb25cIjtcclxuaW1wb3J0IGdlbmVyYXRlT3BlcmF0aW9ucyBmcm9tIFwiLi9vcGVyYXRpb25zL2dlbmVyYXRlXCI7XHJcblxyXG5pbXBvcnQgeyBURVhULCBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgRl9LRVlfQ09ERSwgWl9LRVlfQ09ERSB9IGZyb20gXCIuL2tleUNvZGVzXCI7XHJcbmltcG9ydCB7IENVVF9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBDT1BZX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIEZJTkRfRVZFTlRfVFlQRSxcclxuICAgICAgICAgQkxVUl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBQQVNURV9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBJTlBVVF9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBGT0NVU19FVkVOVF9UWVBFLFxyXG4gICAgICAgICBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICAgU0NST0xMX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIEtFWURPV05fRVZFTlRfVFlQRSxcclxuICAgICAgICAgQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSxcclxuICAgICAgICAgU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUgfSBmcm9tIFwiLi9ldmVudFR5cGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSaWNoVGV4dGFyZWEgZXh0ZW5kcyBFbGVtZW50IHtcclxuICBjb25zdHJ1Y3RvcihzZWxlY3RvciwgZm9jdXNlZCwgcmVhZE9ubHksIHVuZG9CdWZmZXIpIHtcclxuICAgIHN1cGVyKHNlbGVjdG9yKTtcclxuXHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmb2N1c2VkO1xyXG4gICAgdGhpcy5yZWFkT25seSA9IHJlYWRPbmx5O1xyXG4gICAgdGhpcy51bmRvQnVmZmVyID0gdW5kb0J1ZmZlcjtcclxuICB9XHJcblxyXG4gIGlzRm9jdXNlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvY3VzZWQ7XHJcbiAgfVxyXG5cclxuICBpc1JlYWRPbmx5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMucmVhZE9ubHk7XHJcbiAgfVxyXG5cclxuICBnZXRVbmRvQnVmZmVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudW5kb0J1ZmZlcjtcclxuICB9XHJcblxyXG4gIHNldEZvY3VzZWQoZm9jdXNlZCkge1xyXG4gICAgdGhpcy5mb2N1c2VkID0gZm9jdXNlZDtcclxuICB9XHJcblxyXG4gIHNldFJlYWRPbmx5KHJlYWRPbmx5KSB7XHJcbiAgICB0aGlzLnJlYWRPbmx5ID0gcmVhZE9ubHk7XHJcbiAgfVxyXG5cclxuICBpbnRlcm1lZGlhdGVIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50LCB1bmRvYWJsZSA9IHRydWUsIGV2ZW50VHlwZSA9IENIQU5HRV9FVkVOVF9UWVBFLCBzZWxlY3Rpb25DaGFuZ2VkID0gdGhpcy5oYXNTZWxlY3Rpb25DaGFuZ2VkKCkpID0+IHtcclxuICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XHJcbiAgICAgIGNvbnN0IHByZXZpb3VzQ29udGVudCA9IHRoaXMuZ2V0UHJldmlvdXNDb250ZW50KCksXHJcbiAgICAgICAgICAgIGNvbnRlbnQgPSBwcmV2aW91c0NvbnRlbnQ7ICAvLy9cclxuXHJcbiAgICAgIHRoaXMuc2V0Q29udGVudChjb250ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCksXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgY29udGVudENoYW5nZWQgPSB0aGlzLmhhc0NvbnRlbnRDaGFuZ2VkKCksXHJcbiAgICAgICAgICBjaGFuZ2VkID0gKGNvbnRlbnRDaGFuZ2VkIHx8IHNlbGVjdGlvbkNoYW5nZWQpO1xyXG5cclxuICAgIGlmIChjaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh1bmRvYWJsZSkge1xyXG4gICAgICBpZiAoY29udGVudENoYW5nZWQpIHtcclxuICAgICAgICBjb25zdCBwcmV2aW91c0NvbnRlbnQgPSB0aGlzLmdldFByZXZpb3VzQ29udGVudCgpLFxyXG4gICAgICAgICAgICAgIG9wZXJhdGlvbnMgPSBnZW5lcmF0ZU9wZXJhdGlvbnMocHJldmlvdXNDb250ZW50LCBjb250ZW50KTtcclxuXHJcbiAgICAgICAgdGhpcy51bmRvQnVmZmVyLmFkZE9wZXJhdGlvbnMob3BlcmF0aW9ucyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwcmV2aW91c0NvbnRlbnQgPSBjb250ZW50LCAgLy8vXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG5cclxuICAgIHRoaXMuc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RDaGFuZ2VIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBpZiAodGhpcy5mb2N1c2VkKSB7XHJcbiAgICAgIGVsZW1lbnQgPSB0aGlzOyAvLy9cclxuXHJcbiAgICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb250ZXh0bWVudUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBrZXlEb3duSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgeyBjdHJsS2V5LCBtZXRhS2V5IH0gPSBldmVudDtcclxuXHJcbiAgICBpZiAoY3RybEtleSB8fCBtZXRhS2V5KSB7XHJcbiAgICAgIGNvbnN0IHsga2V5Q29kZSB9ID0gZXZlbnQ7XHJcblxyXG4gICAgICBzd2l0Y2ggKGtleUNvZGUpIHtcclxuICAgICAgICBjYXNlIEZfS0VZX0NPREU6IHtcclxuICAgICAgICAgIHRoaXMuZmluZChldmVudCwgZWxlbWVudCk7XHJcblxyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjYXNlIFpfS0VZX0NPREU6IHtcclxuICAgICAgICAgIGNvbnN0IHsgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG5cclxuICAgICAgICAgIHNoaWZ0S2V5ID9cclxuICAgICAgICAgICAgdGhpcy5yZWRvKGV2ZW50LCBlbGVtZW50KSA6XHJcbiAgICAgICAgICAgICAgdGhpcy51bmRvKGV2ZW50LCBlbGVtZW50KTtcclxuXHJcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBkZWZlcigoKSA9PiB7XHJcbiAgICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNjcm9sbEhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IFNDUk9MTF9FVkVOVF9UWVBFO1xyXG5cclxuICAgIHRoaXMuY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgZXZlbnQsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgZm9jdXNIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xyXG5cclxuICAgIGRlZmVyKCgpID0+IHtcclxuICAgICAgY29uc3QgdW5kb2FibGUgPSB0cnVlLFxyXG4gICAgICAgICAgICBldmVudFR5cGUgPSBGT0NVU19FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgdW5kb2FibGUsIGV2ZW50VHlwZSwgc2VsZWN0aW9uQ2hhbmdlZCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGJsdXJIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdCB1bmRvYWJsZSA9IHRydWUsXHJcbiAgICAgICAgICBldmVudFR5cGUgPSBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIHVuZG9hYmxlLCBldmVudFR5cGUsIHNlbGVjdGlvbkNoYW5nZWQpO1xyXG4gIH1cclxuXHJcbiAgaW5wdXRIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcGFzdGVIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCB7IGNsaXBib2FyZERhdGEgfSA9IGV2ZW50LFxyXG4gICAgICAgICAgdGV4dERhdGEgPSBjbGlwYm9hcmREYXRhLmdldERhdGEoVEVYVCk7XHJcblxyXG4gICAgaWYgKHRleHREYXRhID09PSBFTVBUWV9TVFJJTkcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25FbXB0eSA9IHNlbGVjdGlvbi5pc0VtcHR5KCk7XHJcblxyXG4gICAgaWYgKCFzZWxlY3Rpb25FbXB0eSkge1xyXG4gICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCksXHJcbiAgICAgICAgICAgIGRlbGV0ZU9wZXJhdGlvbiA9IERlbGV0ZU9wZXJhdGlvbi5mcm9tQ29udGVudEFuZFNlbGVjdGlvbihjb250ZW50LCBzZWxlY3Rpb24pLFxyXG4gICAgICAgICAgICBvcGVyYXRpb24gPSBkZWxldGVPcGVyYXRpb247XHJcblxyXG4gICAgICB0aGlzLmFwcGx5T3BlcmF0aW9uKG9wZXJhdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IHRleHREYXRhLCAvLy9cclxuICAgICAgICAgIGluc2VydE9wZXJhdGlvbiA9IEluc2VydE9wZXJhdGlvbi5mcm9tQ29udGVudEFuZFNlbGVjdGlvbihjb250ZW50LCBzZWxlY3Rpb24pLFxyXG4gICAgICAgICAgb3BlcmF0aW9uID0gaW5zZXJ0T3BlcmF0aW9uOyAgLy8vXHJcblxyXG4gICAgdGhpcy5hcHBseU9wZXJhdGlvbihvcGVyYXRpb24pO1xyXG5cclxuICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCk7XHJcblxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIGNvcHlIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW1wdHkgPSBzZWxlY3Rpb24uaXNFbXB0eSgpO1xyXG5cclxuICAgIGlmIChzZWxlY3Rpb25FbXB0eSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0ZWRDb250ZW50ID0gdGhpcy5nZXRTZWxlY3RlZENvbnRlbnQoKTtcclxuXHJcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChzZWxlY3RlZENvbnRlbnQpO1xyXG5cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBjdXRIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW1wdHkgPSBzZWxlY3Rpb24uaXNFbXB0eSgpO1xyXG5cclxuICAgIGlmIChzZWxlY3Rpb25FbXB0eSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0ZWRDb250ZW50ID0gdGhpcy5nZXRTZWxlY3RlZENvbnRlbnQoKTtcclxuXHJcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChzZWxlY3RlZENvbnRlbnQpO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIGRlbGV0ZU9wZXJhdGlvbiA9IERlbGV0ZU9wZXJhdGlvbi5mcm9tQ29udGVudEFuZFNlbGVjdGlvbihjb250ZW50LCBzZWxlY3Rpb24pLFxyXG4gICAgICAgICAgb3BlcmF0aW9uID0gZGVsZXRlT3BlcmF0aW9uOyAgLy8vXHJcblxyXG4gICAgdGhpcy5hcHBseU9wZXJhdGlvbihvcGVyYXRpb24pO1xyXG5cclxuICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCk7XHJcblxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIGlzQWN0aXZlKCkge1xyXG4gICAgY29uc3QgYWN0aXZlID0gdGhpcy5oYXNDbGFzcyhcImFjdGl2ZVwiKTtcclxuXHJcbiAgICByZXR1cm4gYWN0aXZlO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGVudCgpIHtcclxuICAgIGNvbnN0IGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKSxcclxuICAgICAgICAgIHsgdmFsdWUgfSA9IGRvbUVsZW1lbnQsXHJcbiAgICAgICAgICBjb250ZW50ID0gdmFsdWU7ICAvLy9cclxuXHJcbiAgICByZXR1cm4gY29udGVudDtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGlvbigpIHtcclxuICAgIGNvbnN0IGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IFNlbGVjdGlvbi5mcm9tRE9NRWxlbWVudChkb21FbGVtZW50KTtcclxuXHJcbiAgICByZXR1cm4gc2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0ZWRDb250ZW50KCkge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldEVuZFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldFN0YXJ0UG9zaXRpb24oKSxcclxuICAgICAgICAgIHN0YXJ0ID0gc3RhcnRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgZW5kID0gZW5kUG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIHNlbGVjdGVkQ29udGVudCA9IGNvbnRlbnQuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcblxyXG4gICAgcmV0dXJuIHNlbGVjdGVkQ29udGVudDtcclxuICB9XHJcblxyXG4gIGhhc0NvbnRlbnRDaGFuZ2VkKCkge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gdGhpcy5nZXRQcmV2aW91c0NvbnRlbnQoKSxcclxuICAgICAgICAgIGNvbnRlbnRQcmV2aW91c0NvbnRlbnQgPSAoY29udGVudCA9PT0gcHJldmlvdXNDb250ZW50KSxcclxuICAgICAgICAgIGNvbnRlbnRDaGFuZ2VkID0gIWNvbnRlbnRQcmV2aW91c0NvbnRlbnQ7XHJcblxyXG4gICAgcmV0dXJuIGNvbnRlbnRDaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgaGFzU2VsZWN0aW9uQ2hhbmdlZCgpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IHRoaXMuZ2V0UHJldmlvdXNTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uLmlzRXF1YWxUbyhwcmV2aW91c1NlbGVjdGlvbiksXHJcbiAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gIXNlbGVjdGlvblByZXZpb3VzU2VsZWN0aW9uOyAvLy9cclxuXHJcbiAgICByZXR1cm4gc2VsZWN0aW9uQ2hhbmdlZDtcclxuICB9XHJcblxyXG4gIHNldENvbnRlbnQoY29udGVudCwgc2V0UHJldmlvdXNDb250ZW50ID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgdmFsdWUgPSBjb250ZW50LCAgLy8vXHJcbiAgICAgICAgICBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCk7XHJcblxyXG4gICAgT2JqZWN0LmFzc2lnbihkb21FbGVtZW50LCB7XHJcbiAgICAgIHZhbHVlXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoc2V0UHJldmlvdXNDb250ZW50KSB7XHJcbiAgICAgIGNvbnN0IHByZXZpb3VzQ29udGVudCA9IGNvbnRlbnQ7ICAvLy9cclxuXHJcbiAgICAgIHRoaXMuc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbiA9IHRydWUpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uRW5kUG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBkb21FbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xyXG5cclxuICAgIGlmIChzZXRQcmV2aW91c1NlbGVjdGlvbikge1xyXG4gICAgICBjb25zdCBwcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG5cclxuICAgICAgdGhpcy5zZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmaW5kKGV2ZW50LCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBGSU5EX0VWRU5UX1RZUEU7XHJcblxyXG4gICAgdGhpcy5jYWxsSGFuZGxlcnMoZXZlbnRUeXBlLCBldmVudCwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICB1bmRvKGV2ZW50LCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCB1bmRvT3BlcmF0aW9uID0gdGhpcy51bmRvQnVmZmVyLnVuZG8oKTtcclxuXHJcbiAgICBpZiAodW5kb09wZXJhdGlvbiAhPT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBvcGVyYXRpb24gPSB1bmRvT3BlcmF0aW9uOyAgLy8vXHJcblxyXG4gICAgICB0aGlzLnJldmVydChldmVudCwgZWxlbWVudCwgb3BlcmF0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZG8oZXZlbnQsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IHJlZG9PcGVyYXRpb24gPSB0aGlzLnVuZG9CdWZmZXIucmVkbygpO1xyXG5cclxuICAgIGlmIChyZWRvT3BlcmF0aW9uICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IHJlZG9PcGVyYXRpb247ICAvLy9cclxuXHJcbiAgICAgIHRoaXMucmV2ZXJ0KGV2ZW50LCBlbGVtZW50LCBvcGVyYXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV2ZXJ0KGV2ZW50LCBlbGVtZW50LCBvcGVyYXRpb24pIHtcclxuICAgIGNvbnN0IHVuZG9hYmxlID0gZmFsc2UsXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSBTZWxlY3Rpb24uZnJvbU9wZXJhdGlvbihvcGVyYXRpb24pLFxyXG4gICAgICAgICAgc2V0UHJldmlvdXNTZWxlY3Rpb24gPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmFwcGx5T3BlcmF0aW9uKG9wZXJhdGlvbik7XHJcblxyXG4gICAgdGhpcy5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbik7XHJcblxyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCB1bmRvYWJsZSk7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm0ob3BlcmF0aW9ucykge1xyXG4gICAgbGV0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHRyYW5zZm9ybWVkQ29udGVudCA9IHRyYW5zZm9ybUNvbnRlbnQoY29udGVudCwgb3BlcmF0aW9ucyksXHJcbiAgICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHRyYW5zZm9ybVNlbGVjdGlvbihzZWxlY3Rpb24sIG9wZXJhdGlvbnMpO1xyXG5cclxuICAgIGNvbnRlbnQgPSB0cmFuc2Zvcm1lZENvbnRlbnQ7IC8vL1xyXG5cclxuICAgIHNlbGVjdGlvbiA9IHRyYW5zZm9ybWVkU2VsZWN0aW9uOyAvLy9cclxuXHJcbiAgICBjb25zdCBzZXRQcmV2aW91c0NvbnRlbnQgPSBmYWxzZSxcclxuICAgICAgICAgIHNldFByZXZpb3VzU2VsZWN0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5zZXRDb250ZW50KGNvbnRlbnQsIHNldFByZXZpb3VzQ29udGVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbik7XHJcblxyXG4gICAgdGhpcy51bmRvQnVmZmVyLnRyYW5zZm9ybShvcGVyYXRpb25zKTtcclxuXHJcbiAgICBjb25zdCBldmVudCA9IG51bGwsXHJcbiAgICAgICAgICBlbGVtZW50ID0gdGhpcyxcclxuICAgICAgICAgIHVuZG9hYmxlID0gZmFsc2UsXHJcbiAgICAgICAgICBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIHVuZG9hYmxlLCBldmVudFR5cGUpO1xyXG4gIH1cclxuXHJcbiAgY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XHJcbiAgICBjb25zdCBldmVudExpc3RlbmVycyA9IHRoaXMuZmluZEV2ZW50TGlzdGVuZXJzKGV2ZW50VHlwZSk7XHJcblxyXG4gICAgZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgoZXZlbnRMaXN0ZW5lcikgPT4ge1xyXG4gICAgICBsZXQgeyBlbGVtZW50IH0gPSBldmVudExpc3RlbmVyO1xyXG5cclxuICAgICAgY29uc3QgeyBoYW5kbGVyIH0gPSBldmVudExpc3RlbmVyLFxyXG4gICAgICAgICAgICAgIGhhbmRsZXJFbGVtZW50ID0gZWxlbWVudDsgLy8vXHJcblxyXG4gICAgICBlbGVtZW50ID0gdGhpczsgLy8vXHJcblxyXG4gICAgICBpZiAoKGhhbmRsZXIgIT09IHRoaXMuYmx1ckhhbmRsZXIpICYmIChoYW5kbGVyICE9PSB0aGlzLmZvY3VzSGFuZGxlcikgJiYgKGhhbmRsZXIgIT09IHRoaXMuc2Nyb2xsSGFuZGxlcikpIHtcclxuICAgICAgICBoYW5kbGVyLmNhbGwoaGFuZGxlckVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKSB7XHJcbiAgICBsZXQgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XHJcblxyXG4gICAgY29uc3QgdHJhbnNmb3JtZWRDb250ZW50ID0gb3BlcmF0aW9uLnRyYW5zZm9ybUNvbnRlbnQoY29udGVudCksXHJcbiAgICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IG9wZXJhdGlvbi50cmFuc2Zvcm1TZWxlY3Rpb24oc2VsZWN0aW9uKTtcclxuXHJcbiAgICBjb250ZW50ID0gdHJhbnNmb3JtZWRDb250ZW50OyAvLy9cclxuXHJcbiAgICBzZWxlY3Rpb24gPSB0cmFuc2Zvcm1lZFNlbGVjdGlvbjsgLy8vXHJcblxyXG4gICAgY29uc3Qgc2V0UHJldmlvdXNDb250ZW50ID0gZmFsc2UsXHJcbiAgICAgICAgICBzZXRQcmV2aW91c1NlbGVjdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuc2V0Q29udGVudChjb250ZW50LCBzZXRQcmV2aW91c0NvbnRlbnQpO1xyXG5cclxuICAgIHRoaXMuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbiwgc2V0UHJldmlvdXNTZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGUoKSB7XHJcbiAgICB0aGlzLm9uKEtFWURPV05fRVZFTlRfVFlQRSwgdGhpcy5rZXlEb3duSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihJTlBVVF9FVkVOVF9UWVBFLCB0aGlzLmlucHV0SGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihTQ1JPTExfRVZFTlRfVFlQRSwgdGhpcy5zY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKEZPQ1VTX0VWRU5UX1RZUEUsIHRoaXMuZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKEJMVVJfRVZFTlRfVFlQRSwgdGhpcy5ibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5hZGRDbGFzcyhcImFjdGl2ZVwiKTtcclxuICB9XHJcblxyXG4gIGRlYWN0aXZhdGUoKSB7XHJcbiAgICB0aGlzLm9mZihLRVlET1dOX0VWRU5UX1RZUEUsIHRoaXMua2V5RG93bkhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub2ZmKElOUFVUX0VWRU5UX1RZUEUsIHRoaXMuaW5wdXRIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihTQ1JPTExfRVZFTlRfVFlQRSwgdGhpcy5zY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihGT0NVU19FVkVOVF9UWVBFLCB0aGlzLmZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vZmYoQkxVUl9FVkVOVF9UWVBFLCB0aGlzLmJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO1xyXG4gIH1cclxuXHJcbiAgb25GaW5kKGZpbmRIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBGSU5EX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gZmluZEhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZkZpbmQoZmluZEhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEZJTkRfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBmaW5kSGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKGJsdXJIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZkJsdXIoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEJMVVJfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhibHVySGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gRk9DVVNfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb2ZmRm9jdXMoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9uU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IFNDUk9MTF9FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgaGFuZGxlciA9IHNjcm9sbEhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZlNjcm9sbChzY3JvbGxIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBTQ1JPTExfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBzY3JvbGxIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShjaGFuZ2VIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBjaGFuZ2VIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvZmZDaGFuZ2UoY2hhbmdlSGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gY2hhbmdlSGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJldmlvdXNDb250ZW50KCkge1xyXG4gICAgY29uc3QgeyBwcmV2aW91c0NvbnRlbnQgfSA9IHRoaXMuZ2V0U3RhdGUoKTtcclxuXHJcbiAgICByZXR1cm4gcHJldmlvdXNDb250ZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJldmlvdXNTZWxlY3Rpb24oKSB7XHJcbiAgICBjb25zdCB7IHByZXZpb3VzU2VsZWN0aW9uIH0gPSB0aGlzLmdldFN0YXRlKCk7XHJcblxyXG4gICAgcmV0dXJuIHByZXZpb3VzU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCkge1xyXG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XHJcbiAgICAgIHByZXZpb3VzQ29udGVudFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbikge1xyXG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XHJcbiAgICAgIHByZXZpb3VzU2VsZWN0aW9uXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBvbkZpbmQsIG9uQmx1ciwgb25Gb2N1cywgb25DaGFuZ2UsIG9uU2Nyb2xsIH0gPSB0aGlzLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICBmaW5kSGFuZGxlciA9IG9uRmluZCwgLy8vXHJcbiAgICAgICAgICBibHVySGFuZGxlciA9IG9uQmx1ciwgLy8vXHJcbiAgICAgICAgICBmb2N1c0hhbmRsZXIgPSBvbkZvY3VzLCAvLy9cclxuICAgICAgICAgIGNoYW5nZUhhbmRsZXIgPSBvbkNoYW5nZSwgLy8vXHJcbiAgICAgICAgICBzY3JvbGxIYW5kbGVyID0gb25TY3JvbGw7IC8vL1xyXG5cclxuICAgIHRoaXMudXBkYXRlSW5pdGlhbFN0YXRlKCk7XHJcblxyXG4gICAgZmluZEhhbmRsZXIgJiYgdGhpcy5vbkZpbmQoZmluZEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGJsdXJIYW5kbGVyICYmIHRoaXMub25CbHVyKGJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBmb2N1c0hhbmRsZXIgJiYgdGhpcy5vbkZvY3VzKGZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgY2hhbmdlSGFuZGxlciAmJiB0aGlzLm9uQ2hhbmdlKGNoYW5nZUhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHNjcm9sbEhhbmRsZXIgJiYgdGhpcy5vblNjcm9sbChzY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKENVVF9FVkVOVF9UWVBFLCB0aGlzLmN1dEhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub24oQ09QWV9FVkVOVF9UWVBFLCB0aGlzLmNvcHlIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKFBBU1RFX0VWRU5UX1RZUEUsIHRoaXMucGFzdGVIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKENPTlRFWFRNRU5VX0VWRU5UX1RZUEUsIHRoaXMuY29udGV4dG1lbnVIYW5kbGVyKTtcclxuXHJcbiAgICBkb2N1bWVudC5vbihTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSwgdGhpcy5zZWxlY3RDaGFuZ2VIYW5kbGVyKTtcclxuICB9XHJcblxyXG4gIHdpbGxVbm1vdW50KCkge1xyXG4gICAgY29uc3QgeyBvbkZpbmQsIG9uQmx1ciwgb25Gb2N1cywgb25DaGFuZ2UsIG9uU2Nyb2xsIH0gPSB0aGlzLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgIGZpbmRIYW5kbGVyID0gb25GaW5kLCAvLy9cclxuICAgICAgICAgICAgYmx1ckhhbmRsZXIgPSBvbkJsdXIsIC8vL1xyXG4gICAgICAgICAgICBmb2N1c0hhbmRsZXIgPSBvbkZvY3VzLCAvLy9cclxuICAgICAgICAgICAgY2hhbmdlSGFuZGxlciA9IG9uQ2hhbmdlLCAvLy9cclxuICAgICAgICAgICAgc2Nyb2xsSGFuZGxlciA9IG9uU2Nyb2xsOyAvLy9cclxuXHJcbiAgICBmaW5kSGFuZGxlciAmJiB0aGlzLm9mZkZpbmQoZmluZEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGJsdXJIYW5kbGVyICYmIHRoaXMub2ZmQmx1cihibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgZm9jdXNIYW5kbGVyICYmIHRoaXMub2ZmRm9jdXMoZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBjaGFuZ2VIYW5kbGVyICYmIHRoaXMub2ZmQ2hhbmdlKGNoYW5nZUhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHNjcm9sbEhhbmRsZXIgJiYgdGhpcy5vZmZTY3JvbGwoc2Nyb2xsSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vZmYoQ1VUX0VWRU5UX1RZUEUsIHRoaXMuY3V0SGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoQ09QWV9FVkVOVF9UWVBFLCB0aGlzLmNvcHlIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihQQVNURV9FVkVOVF9UWVBFLCB0aGlzLnBhc3RlSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSwgdGhpcy5jb250ZXh0bWVudUhhbmRsZXIpO1xyXG5cclxuICAgIGRvY3VtZW50Lm9mZihTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSwgdGhpcy5zZWxlY3RDaGFuZ2VIYW5kbGVyKTtcclxuXHJcbiAgICBjb25zdCBhY3RpdmUgPSB0aGlzLmlzQWN0aXZlKCk7XHJcblxyXG4gICAgaWYgKGFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmRlYWN0aXZhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZUluaXRpYWxTdGF0ZSgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBwcmV2aW91c0NvbnRlbnQgPSBjb250ZW50LCAgLy8vXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG5cclxuICAgIHRoaXMuc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBzZXRJbml0aWFsU3RhdGUoKSB7XHJcbiAgICBjb25zdCBwcmV2aW91c0NvbnRlbnQgPSBudWxsLFxyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3Rpb24gPSBudWxsO1xyXG5cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBwcmV2aW91c0NvbnRlbnQsXHJcbiAgICAgIHByZXZpb3VzU2VsZWN0aW9uXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGluaXRpYWxpc2UoKSB7XHJcbiAgICB0aGlzLnNldEluaXRpYWxTdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHRhZ05hbWUgPSBcInRleHRhcmVhXCI7XHJcblxyXG4gIHN0YXRpYyBpZ25vcmVkUHJvcGVydGllcyA9IFtcclxuICAgIFwib25GaW5kXCIsXHJcbiAgICBcIm9uQmx1clwiLFxyXG4gICAgXCJvbkZvY3VzXCIsXHJcbiAgICBcIm9uQ2hhbmdlXCIsXHJcbiAgICBcIm9uU2Nyb2xsXCIsXHJcbiAgXTtcclxuXHJcbiAgc3RhdGljIGRlZmF1bHRQcm9wZXJ0aWVzID0ge1xyXG4gICAgY2xhc3NOYW1lOiBcInJpY2hcIlxyXG4gIH07XHJcblxyXG4gIHN0YXRpYyBmcm9tQ2xhc3MoQ2xhc3MsIHByb3BlcnRpZXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xyXG4gICAgY29uc3QgZm9jdXNlZCA9IGZhbHNlLFxyXG4gICAgICAgICAgcmVhZE9ubHkgPSBmYWxzZSxcclxuICAgICAgICAgIHVuZG9CdWZmZXIgPSBVbmRvQnVmZmVyLmZyb21Ob3RoaW5nKCksXHJcbiAgICAgICAgICByaWNoVGV4dGFyZWEgPSBFbGVtZW50LmZyb21DbGFzcyhDbGFzcywgcHJvcGVydGllcywgZm9jdXNlZCwgcmVhZE9ubHksIHVuZG9CdWZmZXIsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XHJcblxyXG4gICAgcmV0dXJuIHJpY2hUZXh0YXJlYTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRlZmVyKGZ1bmMpIHtcclxuICBzZXRUaW1lb3V0KGZ1bmMsIDApO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJSaWNoVGV4dGFyZWEiLCJzZWxlY3RvciIsImZvY3VzZWQiLCJyZWFkT25seSIsInVuZG9CdWZmZXIiLCJpbnRlcm1lZGlhdGVIYW5kbGVyIiwiZXZlbnQiLCJlbGVtZW50IiwidW5kb2FibGUiLCJldmVudFR5cGUiLCJDSEFOR0VfRVZFTlRfVFlQRSIsInNlbGVjdGlvbkNoYW5nZWQiLCJoYXNTZWxlY3Rpb25DaGFuZ2VkIiwicHJldmlvdXNDb250ZW50IiwiZ2V0UHJldmlvdXNDb250ZW50IiwiY29udGVudCIsInNldENvbnRlbnQiLCJnZXRDb250ZW50Iiwic2VsZWN0aW9uIiwiZ2V0U2VsZWN0aW9uIiwiY29udGVudENoYW5nZWQiLCJoYXNDb250ZW50Q2hhbmdlZCIsImNoYW5nZWQiLCJjYWxsSGFuZGxlcnMiLCJvcGVyYXRpb25zIiwiZ2VuZXJhdGVPcGVyYXRpb25zIiwiYWRkT3BlcmF0aW9ucyIsInByZXZpb3VzU2VsZWN0aW9uIiwic2V0UHJldmlvdXNDb250ZW50Iiwic2V0UHJldmlvdXNTZWxlY3Rpb24iLCJzZWxlY3RDaGFuZ2VIYW5kbGVyIiwiY29udGV4dG1lbnVIYW5kbGVyIiwicHJldmVudERlZmF1bHQiLCJrZXlEb3duSGFuZGxlciIsImN0cmxLZXkiLCJtZXRhS2V5Iiwia2V5Q29kZSIsIkZfS0VZX0NPREUiLCJmaW5kIiwiWl9LRVlfQ09ERSIsInNoaWZ0S2V5IiwicmVkbyIsInVuZG8iLCJkZWZlciIsInNjcm9sbEhhbmRsZXIiLCJTQ1JPTExfRVZFTlRfVFlQRSIsImZvY3VzSGFuZGxlciIsIkZPQ1VTX0VWRU5UX1RZUEUiLCJibHVySGFuZGxlciIsIkJMVVJfRVZFTlRfVFlQRSIsImlucHV0SGFuZGxlciIsInBhc3RlSGFuZGxlciIsImNsaXBib2FyZERhdGEiLCJ0ZXh0RGF0YSIsImdldERhdGEiLCJURVhUIiwiRU1QVFlfU1RSSU5HIiwic2VsZWN0aW9uRW1wdHkiLCJpc0VtcHR5IiwiZGVsZXRlT3BlcmF0aW9uIiwiRGVsZXRlT3BlcmF0aW9uIiwiZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24iLCJvcGVyYXRpb24iLCJhcHBseU9wZXJhdGlvbiIsImluc2VydE9wZXJhdGlvbiIsIkluc2VydE9wZXJhdGlvbiIsImNvcHlIYW5kbGVyIiwic2VsZWN0ZWRDb250ZW50IiwiZ2V0U2VsZWN0ZWRDb250ZW50IiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0IiwiY3V0SGFuZGxlciIsImlzRm9jdXNlZCIsImlzUmVhZE9ubHkiLCJnZXRVbmRvQnVmZmVyIiwic2V0Rm9jdXNlZCIsInNldFJlYWRPbmx5IiwiaXNBY3RpdmUiLCJhY3RpdmUiLCJoYXNDbGFzcyIsImRvbUVsZW1lbnQiLCJnZXRET01FbGVtZW50IiwidmFsdWUiLCJTZWxlY3Rpb24iLCJmcm9tRE9NRWxlbWVudCIsImVuZFBvc2l0aW9uIiwiZ2V0RW5kUG9zaXRpb24iLCJzdGFydFBvc2l0aW9uIiwiZ2V0U3RhcnRQb3NpdGlvbiIsInN0YXJ0IiwiZW5kIiwic2xpY2UiLCJjb250ZW50UHJldmlvdXNDb250ZW50IiwiZ2V0UHJldmlvdXNTZWxlY3Rpb24iLCJzZWxlY3Rpb25QcmV2aW91c1NlbGVjdGlvbiIsImlzRXF1YWxUbyIsIk9iamVjdCIsImFzc2lnbiIsInNldFNlbGVjdGlvbiIsInNlbGVjdGlvblN0YXJ0UG9zaXRpb24iLCJzZWxlY3Rpb25FbmRQb3NpdGlvbiIsInNlbGVjdGlvblN0YXJ0Iiwic2VsZWN0aW9uRW5kIiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJGSU5EX0VWRU5UX1RZUEUiLCJ1bmRvT3BlcmF0aW9uIiwicmV2ZXJ0IiwicmVkb09wZXJhdGlvbiIsImZyb21PcGVyYXRpb24iLCJ0cmFuc2Zvcm0iLCJ0cmFuc2Zvcm1lZENvbnRlbnQiLCJ0cmFuc2Zvcm1Db250ZW50IiwidHJhbnNmb3JtZWRTZWxlY3Rpb24iLCJ0cmFuc2Zvcm1TZWxlY3Rpb24iLCJyZW1haW5pbmdBcmd1bWVudHMiLCJldmVudExpc3RlbmVycyIsImZpbmRFdmVudExpc3RlbmVycyIsImZvckVhY2giLCJldmVudExpc3RlbmVyIiwiaGFuZGxlciIsImhhbmRsZXJFbGVtZW50IiwiY2FsbCIsImFjdGl2YXRlIiwib24iLCJLRVlET1dOX0VWRU5UX1RZUEUiLCJJTlBVVF9FVkVOVF9UWVBFIiwiYWRkQ2xhc3MiLCJkZWFjdGl2YXRlIiwib2ZmIiwicmVtb3ZlQ2xhc3MiLCJvbkZpbmQiLCJmaW5kSGFuZGxlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJvZmZGaW5kIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9uQmx1ciIsIm9mZkJsdXIiLCJvbkZvY3VzIiwib2ZmRm9jdXMiLCJvblNjcm9sbCIsIm9mZlNjcm9sbCIsIm9uQ2hhbmdlIiwiY2hhbmdlSGFuZGxlciIsIm9mZkNoYW5nZSIsImdldFN0YXRlIiwidXBkYXRlU3RhdGUiLCJkaWRNb3VudCIsInByb3BlcnRpZXMiLCJ1cGRhdGVJbml0aWFsU3RhdGUiLCJDVVRfRVZFTlRfVFlQRSIsIkNPUFlfRVZFTlRfVFlQRSIsIlBBU1RFX0VWRU5UX1RZUEUiLCJDT05URVhUTUVOVV9FVkVOVF9UWVBFIiwiZG9jdW1lbnQiLCJTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSIsIndpbGxVbm1vdW50Iiwic2V0SW5pdGlhbFN0YXRlIiwic2V0U3RhdGUiLCJpbml0aWFsaXNlIiwiZnJvbUNsYXNzIiwiQ2xhc3MiLCJFbGVtZW50IiwiVW5kb0J1ZmZlciIsImZyb21Ob3RoaW5nIiwicmljaFRleHRhcmVhIiwidGFnTmFtZSIsImlnbm9yZWRQcm9wZXJ0aWVzIiwiZGVmYXVsdFByb3BlcnRpZXMiLCJjbGFzc05hbWUiLCJmdW5jIiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUEyQnFCQTs7O29CQXpCYTs4REFFWjsrREFDQzsyREFDSzsyREFDQTs0REFDQzsrREFDRTs2REFDQTt5QkFFSTt3QkFDSTswQkFZSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTVCLElBQUEsQUFBTUEsNkJBc25CcEIsQUF0bkJjO2NBQU1BOzhCQUFBQTthQUFBQSxhQUNQQyxRQUFRLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxFQUFFQyxVQUFVOzhCQURoQ0o7O2tDQUVYQztRQTJCUkksK0NBQUFBLHVCQUFzQixTQUFDQyxPQUFPQyxTQUEyRztnQkFBbEdDLDRFQUFXLElBQUksRUFBRUMsNkVBQVlDLDZCQUFpQixFQUFFQyxvRkFBbUIsTUFBS0MsbUJBQW1CO1lBQ2hJLElBQUksTUFBS1QsUUFBUSxFQUFFO2dCQUNqQixJQUFNVSxrQkFBa0IsTUFBS0Msa0JBQWtCLElBQ3pDQyxVQUFVRixpQkFBa0IsR0FBRztn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
|
package/lib/selection.js
CHANGED
|
@@ -110,6 +110,20 @@ var Selection = /*#__PURE__*/ function() {
|
|
|
110
110
|
return transformedSelection;
|
|
111
111
|
}
|
|
112
112
|
},
|
|
113
|
+
{
|
|
114
|
+
key: "compareTo",
|
|
115
|
+
value: function compareTo(selection) {
|
|
116
|
+
var result = 0;
|
|
117
|
+
var startPosition = selection.getStartPosition();
|
|
118
|
+
if (this.startPosition > startPosition) {
|
|
119
|
+
result = +1;
|
|
120
|
+
}
|
|
121
|
+
if (this.startPosition < startPosition) {
|
|
122
|
+
result = -1;
|
|
123
|
+
}
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
},
|
|
113
127
|
{
|
|
114
128
|
key: "shifted",
|
|
115
129
|
value: function shifted(offset) {
|
|
@@ -189,4 +203,4 @@ var Selection = /*#__PURE__*/ function() {
|
|
|
189
203
|
return Selection;
|
|
190
204
|
}();
|
|
191
205
|
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zZWxlY3Rpb24uanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB0cmFuc2Zvcm1TZWxlY3Rpb24gZnJvbSBcIi4vdHJhbnNmb3JtL3NlbGVjdGlvblwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWxlY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbikge1xuICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247XG4gICAgdGhpcy5lbmRQb3NpdGlvbiA9IGVuZFBvc2l0aW9uO1xuICB9XG5cbiAgZ2V0U3RhcnRQb3NpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdGFydFBvc2l0aW9uO1xuICB9XG5cbiAgZ2V0RW5kUG9zaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5kUG9zaXRpb247XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIGNvbnN0IGVtcHR5ID0gKHRoaXMuc3RhcnRQb3NpdGlvbiA9PT0gdGhpcy5lbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gZW1wdHk7XG4gIH1cblxuICBnZXRMZW5ndGgoKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gKHRoaXMuZW5kUG9zaXRpb24gLSB0aGlzLnN0YXJ0UG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIGxlbmd0aDtcbiAgfVxuXG4gIGlzRXF1YWxUbyhzZWxlY3Rpb24pIHtcbiAgICBsZXQgZXF1YWxUbyA9IGZhbHNlO1xuXG4gICAgaWYgKHNlbGVjdGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXG4gICAgICAgICAgICBzZWxlY3Rpb25FbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpLFxuICAgICAgICAgICAgc3RhcnRQb3NpdGlvbnNFcXVhbCA9ICh0aGlzLnN0YXJ0UG9zaXRpb24gPT09IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24pLFxuICAgICAgICAgICAgZW5kUG9zaXRpb25zRXF1YWwgPSAodGhpcy5lbmRQb3NpdGlvbiA9PT0gc2VsZWN0aW9uRW5kUG9zaXRpb24pO1xuXG4gICAgICBlcXVhbFRvID0gKHN0YXJ0UG9zaXRpb25zRXF1YWwgJiYgZW5kUG9zaXRpb25zRXF1YWwpO1xuICAgIH1cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgc2V0U3RhcnRQb3NpdGlvbihzdGFydFBvc2l0aW9uKSB7XG4gICAgdGhpcy5zdGFydFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbjtcbiAgfVxuXG4gIHNldEVuZFBvc2l0aW9uKGVuZFBvc2l0aW9uKSB7XG4gICAgdGhpcy5lbmRQb3NpdGlvbiA9IGVuZFBvc2l0aW9uO1xuICB9XG5cbiAgc3RhcnRQb3NpdGlvblNoaWZ0ZWQoc3RhcnRPZmZzZXQpIHtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gdGhpcy5zdGFydFBvc2l0aW9uICsgc3RhcnRPZmZzZXQsXG4gICAgICAgICAgZW5kUG9zaXRpb24gPSB0aGlzLmVuZFBvc2l0aW9uLFxuICAgICAgICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIGVuZFBvc2l0aW9uU2hpZnRlZChlbmRPZmZzZXQpIHtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gdGhpcy5zdGFydFBvc2l0aW9uLFxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gdGhpcy5lbmRQb3NpdGlvbiArIGVuZE9mZnNldCxcbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICB0cmFuc2Zvcm1lZChvcGVyYXRpb25zKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcywgLy8vXG4gICAgICAgICAgdHJhbnNmb3JtZWRTZWxlY3Rpb24gPSB0cmFuc2Zvcm1TZWxlY3Rpb24oc2VsZWN0aW9uLCBvcGVyYXRpb25zKTtcblxuICAgIHJldHVybiB0cmFuc2Zvcm1lZFNlbGVjdGlvbjtcbiAgfVxuXG4gIHNoaWZ0ZWQob2Zmc2V0KSB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHRoaXMuc3RhcnRQb3NpdGlvbiArIG9mZnNldCxcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHRoaXMuZW5kUG9zaXRpb24gKyBvZmZzZXQsXG4gICAgICAgICAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgZW1wdGllZCgpIHtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gdGhpcy5zdGFydFBvc2l0aW9uLFxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbiwgIC8vL1xuICAgICAgICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIGNsb25lKCkge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24odGhpcy5zdGFydFBvc2l0aW9uLCB0aGlzLmVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHRoaXMuc3RhcnRQb3NpdGlvbixcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHRoaXMuZW5kUG9zaXRpb24sXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIHN0YXJ0UG9zaXRpb24sXG4gICAgICAgICAgICBlbmRQb3NpdGlvblxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgY29uc3QgeyBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiB9ID0ganNvbixcbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoKSB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IDAsXG4gICAgICAgICAgZW5kUG9zaXRpb24gPSAwLFxuICAgICAgICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tT3BlcmF0aW9uKG9wZXJhdGlvbikge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBvcGVyYXRpb24uZ2V0Q29udGVudCgpLFxuICAgICAgICAgIHBvc2l0aW9uID0gb3BlcmF0aW9uLmdldFBvc2l0aW9uKCksXG4gICAgICAgICAgY29udGVudExlbmd0aCA9IGNvbnRlbnQubGVuZ3RoLFxuICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSBwb3NpdGlvbiArIGNvbnRlbnRMZW5ndGgsXG4gICAgICAgICAgZW5kUG9zaXRpb24gPSBzdGFydFBvc2l0aW9uLCAgLy8vXG4gICAgICAgICAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TZWxlY3Rpb24oc2VsZWN0aW9uKSB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXG4gICAgICAgICAgZW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKTtcblxuICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOyAgLy8vXG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21ET01FbGVtZW50KGRvbUVsZW1lbnQpIHtcbiAgICBjb25zdCB7IHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQgfSA9IGRvbUVsZW1lbnQsXG4gICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvblN0YXJ0LCAvLy9cbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHNlbGVjdGlvbkVuZCwgLy8vXG4gICAgICAgICAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuXG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXJ0UG9zaXRpb25BbmRFbmRQb3NpdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbikge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxufVxuIiwiUmVhY3QuY3JlYXRlRWxlbWVudCJdLCJuYW1lcyI6WyJTZWxlY3Rpb24iLCJzdGFydFBvc2l0aW9uIiwiZW5kUG9zaXRpb24iLCJnZXRTdGFydFBvc2l0aW9uIiwiZ2V0RW5kUG9zaXRpb24iLCJpc0VtcHR5IiwiZW1wdHkiLCJnZXRMZW5ndGgiLCJsZW5ndGgiLCJpc0VxdWFsVG8iLCJzZWxlY3Rpb24iLCJlcXVhbFRvIiwic2VsZWN0aW9uU3RhcnRQb3NpdGlvbiIsInNlbGVjdGlvbkVuZFBvc2l0aW9uIiwic3RhcnRQb3NpdGlvbnNFcXVhbCIsImVuZFBvc2l0aW9uc0VxdWFsIiwic2V0U3RhcnRQb3NpdGlvbiIsInNldEVuZFBvc2l0aW9uIiwic3RhcnRQb3NpdGlvblNoaWZ0ZWQiLCJzdGFydE9mZnNldCIsImVuZFBvc2l0aW9uU2hpZnRlZCIsImVuZE9mZnNldCIsInRyYW5zZm9ybWVkIiwib3BlcmF0aW9ucyIsInRyYW5zZm9ybWVkU2VsZWN0aW9uIiwidHJhbnNmb3JtU2VsZWN0aW9uIiwic2hpZnRlZCIsIm9mZnNldCIsImVtcHRpZWQiLCJjbG9uZSIsInRvSlNPTiIsImpzb24iLCJmcm9tSlNPTiIsImZyb21Ob3RoaW5nIiwiZnJvbU9wZXJhdGlvbiIsIm9wZXJhdGlvbiIsImNvbnRlbnQiLCJnZXRDb250ZW50IiwicG9zaXRpb24iLCJnZXRQb3NpdGlvbiIsImNvbnRlbnRMZW5ndGgiLCJmcm9tU2VsZWN0aW9uIiwiZnJvbURPTUVsZW1lbnQiLCJkb21FbGVtZW50Iiwic2VsZWN0aW9uU3RhcnQiLCJzZWxlY3Rpb25FbmQiLCJmcm9tU3RhcnRQb3NpdGlvbkFuZEVuZFBvc2l0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQUlxQkE7Ozs4REFGVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVoQixJQUFBLEFBQU1BLDBCQUFOO2FBQU1BLFVBQ1BDLGFBQWEsRUFBRUMsV0FBVzs4QkFEbkJGO1FBRWpCLElBQUksQ0FBQ0MsYUFBYSxHQUFHQTtRQUNyQixJQUFJLENBQUNDLFdBQVcsR0FBR0E7O2lCQUhGRjs7WUFNbkJHLEtBQUFBO21CQUFBQSxTQUFBQSxtQkFBbUI7Z0JBQ2pCLE9BQU8sSUFBSSxDQUFDRixhQUFhO1lBQzNCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLGlCQUFpQjtnQkFDZixPQUFPLElBQUksQ0FBQ0YsV0FBVztZQUN6Qjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVO2dCQUNSLElBQU1DLFFBQVMsSUFBSSxDQUFDTCxhQUFhLEtBQUssSUFBSSxDQUFDQyxXQUFXO2dCQUV0RCxPQUFPSTtZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBLFlBQVk7Z0JBQ1YsSUFBTUMsU0FBVSxJQUFJLENBQUNOLFdBQVcsR0FBRyxJQUFJLENBQUNELGFBQWE7Z0JBRXJELE9BQU9PO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsVUFBVUMsU0FBUyxFQUFFO2dCQUNuQixJQUFJQyxVQUFVLEtBQUs7Z0JBRW5CLElBQUlELGNBQWMsSUFBSSxFQUFFO29CQUN0QixJQUFNRSx5QkFBeUJGLFVBQVVQLGdCQUFnQixJQUNuRFUsdUJBQXVCSCxVQUFVTixjQUFjLElBQy9DVSxzQkFBdUIsSUFBSSxDQUFDYixhQUFhLEtBQUtXLHdCQUM5Q0csb0JBQXFCLElBQUksQ0FBQ2IsV0FBVyxLQUFLVztvQkFFaERGLFVBQVdHLHVCQUF1QkM7Z0JBQ3BDLENBQUM7Z0JBRUQsT0FBT0o7WUFDVDs7O1lBRUFLLEtBQUFBO21CQUFBQSxTQUFBQSxpQkFBaUJmLGFBQWEsRUFBRTtnQkFDOUIsSUFBSSxDQUFDQSxhQUFhLEdBQUdBO1lBQ3ZCOzs7WUFFQWdCLEtBQUFBO21CQUFBQSxTQUFBQSxlQUFlZixXQUFXLEVBQUU7Z0JBQzFCLElBQUksQ0FBQ0EsV0FBVyxHQUFHQTtZQUNyQjs7O1lBRUFnQixLQUFBQTttQkFBQUEsU0FBQUEscUJBQXFCQyxXQUFXLEVBQUU7Z0JBQ2hDLElBQU1sQixnQkFBZ0IsSUFBSSxDQUFDQSxhQUFhLEdBQUdrQixhQUNyQ2pCLGNBQWMsSUFBSSxDQUFDQSxXQUFXLEVBQzlCUSxZQUFZLElBcEREVixVQW9EZUMsZUFBZUM7Z0JBRS9DLE9BQU9RO1lBQ1Q7OztZQUVBVSxLQUFBQTttQkFBQUEsU0FBQUEsbUJBQW1CQyxTQUFTLEVBQUU7Z0JBQzVCLElBQU1wQixnQkFBZ0IsSUFBSSxDQUFDQSxhQUFhLEVBQ2xDQyxjQUFjLElBQUksQ0FBQ0EsV0FBVyxHQUFHbUIsV0FDakNYLFlBQVksSUE1RERWLFVBNERlQyxlQUFlQztnQkFFL0MsT0FBT1E7WUFDVDs7O1lBRUFZLEtBQUFBO21CQUFBQSxTQUFBQSxZQUFZQyxVQUFVLEVBQUU7Z0JBQ3RCLElBQU1iLFlBQVksSUFBSSxFQUNoQmMsdUJBQXVCQyxJQUFBQSxrQkFBa0IsRUFBQ2YsV0FBV2E7Z0JBRTNELE9BQU9DO1lBQ1Q7OztZQUVBRSxLQUFBQTttQkFBQUEsU0FBQUEsUUFBUUMsTUFBTSxFQUFFO2dCQUNkLElBQU0xQixnQkFBZ0IsSUFBSSxDQUFDQSxhQUFhLEdBQUcwQixRQUNyQ3pCLGNBQWMsSUFBSSxDQUFDQSxXQUFXLEdBQUd5QixRQUNqQ2pCLFlBQVksSUEzRURWLFVBMkVlQyxlQUFlQztnQkFFL0MsT0FBT1E7WUFDVDs7O1lBRUFrQixLQUFBQTttQkFBQUEsU0FBQUEsVUFBVTtnQkFDUixJQUFNM0IsZ0JBQWdCLElBQUksQ0FBQ0EsYUFBYSxFQUNsQ0MsY0FBY0QsZUFDZFMsWUFBWSxJQW5GRFYsVUFtRmVDLGVBQWVDO2dCQUUvQyxPQUFPUTtZQUNUOzs7WUFFQW1CLEtBQUFBO21CQUFBQSxTQUFBQSxRQUFRO2dCQUNOLElBQU1uQixZQUFZLElBekZEVixVQXlGZSxJQUFJLENBQUNDLGFBQWEsRUFBRSxJQUFJLENBQUNDLFdBQVc7Z0JBRXBFLE9BQU9RO1lBQ1Q7OztZQUVBb0IsS0FBQUE7bUJBQUFBLFNBQUFBLFNBQVM7Z0JBQ1AsSUFBTTdCLGdCQUFnQixJQUFJLENBQUNBLGFBQWEsRUFDbENDLGNBQWMsSUFBSSxDQUFDQSxXQUFXLEVBQzlCNkIsT0FBTztvQkFDTDlCLGVBQUFBO29CQUNBQyxhQUFBQTtnQkFDRjtnQkFFTixPQUFPNkI7WUFDVDs7OztZQUVPQyxLQUFBQTttQkFBUCxTQUFPQSxTQUFTRCxJQUFJLEVBQUU7Z0JBQ3BCLElBQVE5QixnQkFBK0I4QixLQUEvQjlCLGVBQWVDLGNBQWdCNkIsS0FBaEI3QixhQUNqQlEsWUFBWSxJQTNHRFYsVUEyR2VDLGVBQWVDO2dCQUUvQyxPQUFPUTtZQUNUOzs7WUFFT3VCLEtBQUFBO21CQUFQLFNBQU9BLGNBQWM7Z0JBQ25CLElBQU1oQyxnQkFBZ0IsR0FDaEJDLGNBQWMsR0FDZFEsWUFBWSxJQW5IRFYsVUFtSGVDLGVBQWVDO2dCQUUvQyxPQUFPUTtZQUNUOzs7WUFFT3dCLEtBQUFBO21CQUFQLFNBQU9BLGNBQWNDLFNBQVMsRUFBRTtnQkFDOUIsSUFBTUMsVUFBVUQsVUFBVUUsVUFBVSxJQUM5QkMsV0FBV0gsVUFBVUksV0FBVyxJQUNoQ0MsZ0JBQWdCSixRQUFRNUIsTUFBTSxFQUM5QlAsZ0JBQWdCcUMsV0FBV0UsZUFDM0J0QyxjQUFjRCxlQUNkUyxZQUFZLElBOUhEVixVQThIZUMsZUFBZUM7Z0JBRS9DLE9BQU9RO1lBQ1Q7OztZQUVPK0IsS0FBQUE7bUJBQVAsU0FBT0EsY0FBYy9CLFNBQVMsRUFBRTtnQkFDOUIsSUFBTVQsZ0JBQWdCUyxVQUFVUCxnQkFBZ0IsSUFDMUNELGNBQWNRLFVBQVVOLGNBQWM7Z0JBRTVDTSxZQUFZLElBdklLVixVQXVJU0MsZUFBZUMsY0FBZSxHQUFHO2dCQUUzRCxPQUFPUTtZQUNUOzs7WUFFT2dDLEtBQUFBO21CQUFQLFNBQU9BLGVBQWVDLFVBQVUsRUFBRTtnQkFDaEMsSUFBUUMsaUJBQWlDRCxXQUFqQ0MsZ0JBQWdCQyxlQUFpQkYsV0FBakJFLGNBQ2xCNUMsZ0JBQWdCMkMsZ0JBQ2hCMUMsY0FBYzJDLGNBQ2RuQyxZQUFZLElBaEpEVixVQWdKZUMsZUFBZUM7Z0JBRS9DLE9BQU9RO1lBRVQ7OztZQUVPb0MsS0FBQUE7bUJBQVAsU0FBT0EsZ0NBQWdDN0MsYUFBYSxFQUFFQyxXQUFXLEVBQUU7Z0JBQ2pFLElBQU1RLFlBQVksSUF2SkRWLFVBdUplQyxlQUFlQztnQkFFL0MsT0FBT1E7WUFDVDs7O1dBMUptQlYifQ==
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zZWxlY3Rpb24uanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB0cmFuc2Zvcm1TZWxlY3Rpb24gZnJvbSBcIi4vdHJhbnNmb3JtL3NlbGVjdGlvblwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWxlY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbikge1xuICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247XG4gICAgdGhpcy5lbmRQb3NpdGlvbiA9IGVuZFBvc2l0aW9uO1xuICB9XG5cbiAgZ2V0U3RhcnRQb3NpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdGFydFBvc2l0aW9uO1xuICB9XG5cbiAgZ2V0RW5kUG9zaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5kUG9zaXRpb247XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIGNvbnN0IGVtcHR5ID0gKHRoaXMuc3RhcnRQb3NpdGlvbiA9PT0gdGhpcy5lbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gZW1wdHk7XG4gIH1cblxuICBnZXRMZW5ndGgoKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gKHRoaXMuZW5kUG9zaXRpb24gLSB0aGlzLnN0YXJ0UG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIGxlbmd0aDtcbiAgfVxuXG4gIGlzRXF1YWxUbyhzZWxlY3Rpb24pIHtcbiAgICBsZXQgZXF1YWxUbyA9IGZhbHNlO1xuXG4gICAgaWYgKHNlbGVjdGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXG4gICAgICAgICAgICBzZWxlY3Rpb25FbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpLFxuICAgICAgICAgICAgc3RhcnRQb3NpdGlvbnNFcXVhbCA9ICh0aGlzLnN0YXJ0UG9zaXRpb24gPT09IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24pLFxuICAgICAgICAgICAgZW5kUG9zaXRpb25zRXF1YWwgPSAodGhpcy5lbmRQb3NpdGlvbiA9PT0gc2VsZWN0aW9uRW5kUG9zaXRpb24pO1xuXG4gICAgICBlcXVhbFRvID0gKHN0YXJ0UG9zaXRpb25zRXF1YWwgJiYgZW5kUG9zaXRpb25zRXF1YWwpO1xuICAgIH1cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgc2V0U3RhcnRQb3NpdGlvbihzdGFydFBvc2l0aW9uKSB7XG4gICAgdGhpcy5zdGFydFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbjtcbiAgfVxuXG4gIHNldEVuZFBvc2l0aW9uKGVuZFBvc2l0aW9uKSB7XG4gICAgdGhpcy5lbmRQb3NpdGlvbiA9IGVuZFBvc2l0aW9uO1xuICB9XG5cbiAgc3RhcnRQb3NpdGlvblNoaWZ0ZWQoc3RhcnRPZmZzZXQpIHtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gdGhpcy5zdGFydFBvc2l0aW9uICsgc3RhcnRPZmZzZXQsXG4gICAgICAgICAgZW5kUG9zaXRpb24gPSB0aGlzLmVuZFBvc2l0aW9uLFxuICAgICAgICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIGVuZFBvc2l0aW9uU2hpZnRlZChlbmRPZmZzZXQpIHtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gdGhpcy5zdGFydFBvc2l0aW9uLFxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gdGhpcy5lbmRQb3NpdGlvbiArIGVuZE9mZnNldCxcbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICB0cmFuc2Zvcm1lZChvcGVyYXRpb25zKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcywgLy8vXG4gICAgICAgICAgdHJhbnNmb3JtZWRTZWxlY3Rpb24gPSB0cmFuc2Zvcm1TZWxlY3Rpb24oc2VsZWN0aW9uLCBvcGVyYXRpb25zKTtcblxuICAgIHJldHVybiB0cmFuc2Zvcm1lZFNlbGVjdGlvbjtcbiAgfVxuXG4gIGNvbXBhcmVUbyhzZWxlY3Rpb24pIHtcbiAgICBsZXQgcmVzdWx0ID0gMDtcblxuICAgIGNvbnN0IHN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuc3RhcnRQb3NpdGlvbiA+IHN0YXJ0UG9zaXRpb24pIHtcbiAgICAgIHJlc3VsdCA9ICsxO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN0YXJ0UG9zaXRpb24gPCBzdGFydFBvc2l0aW9uKSB7XG4gICAgICByZXN1bHQgPSAtMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc2hpZnRlZChvZmZzZXQpIHtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gdGhpcy5zdGFydFBvc2l0aW9uICsgb2Zmc2V0LFxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gdGhpcy5lbmRQb3NpdGlvbiArIG9mZnNldCxcbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBlbXB0aWVkKCkge1xuICAgIGNvbnN0IHN0YXJ0UG9zaXRpb24gPSB0aGlzLnN0YXJ0UG9zaXRpb24sXG4gICAgICAgICAgZW5kUG9zaXRpb24gPSBzdGFydFBvc2l0aW9uLCAgLy8vXG4gICAgICAgICAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgY2xvbmUoKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbih0aGlzLnN0YXJ0UG9zaXRpb24sIHRoaXMuZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gdGhpcy5zdGFydFBvc2l0aW9uLFxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gdGhpcy5lbmRQb3NpdGlvbixcbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgc3RhcnRQb3NpdGlvbixcbiAgICAgICAgICAgIGVuZFBvc2l0aW9uXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24pIHtcbiAgICBjb25zdCB7IHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uIH0gPSBqc29uLFxuICAgICAgICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTm90aGluZygpIHtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gMCxcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IDAsXG4gICAgICAgICAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21PcGVyYXRpb24ob3BlcmF0aW9uKSB7XG4gICAgY29uc3QgY29udGVudCA9IG9wZXJhdGlvbi5nZXRDb250ZW50KCksXG4gICAgICAgICAgcG9zaXRpb24gPSBvcGVyYXRpb24uZ2V0UG9zaXRpb24oKSxcbiAgICAgICAgICBjb250ZW50TGVuZ3RoID0gY29udGVudC5sZW5ndGgsXG4gICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHBvc2l0aW9uICsgY29udGVudExlbmd0aCxcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24sICAvLy9cbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVNlbGVjdGlvbihzZWxlY3Rpb24pIHtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldFN0YXJ0UG9zaXRpb24oKSxcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpO1xuXG4gICAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7ICAvLy9cblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbURPTUVsZW1lbnQoZG9tRWxlbWVudCkge1xuICAgIGNvbnN0IHsgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCB9ID0gZG9tRWxlbWVudCxcbiAgICAgICAgICBzdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uU3RhcnQsIC8vL1xuICAgICAgICAgIGVuZFBvc2l0aW9uID0gc2VsZWN0aW9uRW5kLCAvLy9cbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG5cbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhcnRQb3NpdGlvbkFuZEVuZFBvc2l0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG59XG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIlNlbGVjdGlvbiIsInN0YXJ0UG9zaXRpb24iLCJlbmRQb3NpdGlvbiIsImdldFN0YXJ0UG9zaXRpb24iLCJnZXRFbmRQb3NpdGlvbiIsImlzRW1wdHkiLCJlbXB0eSIsImdldExlbmd0aCIsImxlbmd0aCIsImlzRXF1YWxUbyIsInNlbGVjdGlvbiIsImVxdWFsVG8iLCJzZWxlY3Rpb25TdGFydFBvc2l0aW9uIiwic2VsZWN0aW9uRW5kUG9zaXRpb24iLCJzdGFydFBvc2l0aW9uc0VxdWFsIiwiZW5kUG9zaXRpb25zRXF1YWwiLCJzZXRTdGFydFBvc2l0aW9uIiwic2V0RW5kUG9zaXRpb24iLCJzdGFydFBvc2l0aW9uU2hpZnRlZCIsInN0YXJ0T2Zmc2V0IiwiZW5kUG9zaXRpb25TaGlmdGVkIiwiZW5kT2Zmc2V0IiwidHJhbnNmb3JtZWQiLCJvcGVyYXRpb25zIiwidHJhbnNmb3JtZWRTZWxlY3Rpb24iLCJ0cmFuc2Zvcm1TZWxlY3Rpb24iLCJjb21wYXJlVG8iLCJyZXN1bHQiLCJzaGlmdGVkIiwib2Zmc2V0IiwiZW1wdGllZCIsImNsb25lIiwidG9KU09OIiwianNvbiIsImZyb21KU09OIiwiZnJvbU5vdGhpbmciLCJmcm9tT3BlcmF0aW9uIiwib3BlcmF0aW9uIiwiY29udGVudCIsImdldENvbnRlbnQiLCJwb3NpdGlvbiIsImdldFBvc2l0aW9uIiwiY29udGVudExlbmd0aCIsImZyb21TZWxlY3Rpb24iLCJmcm9tRE9NRWxlbWVudCIsImRvbUVsZW1lbnQiLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdGlvbkVuZCIsImZyb21TdGFydFBvc2l0aW9uQW5kRW5kUG9zaXRpb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBSXFCQTs7OzhEQUZVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWhCLElBQUEsQUFBTUEsMEJBQU47YUFBTUEsVUFDUEMsYUFBYSxFQUFFQyxXQUFXOzhCQURuQkY7UUFFakIsSUFBSSxDQUFDQyxhQUFhLEdBQUdBO1FBQ3JCLElBQUksQ0FBQ0MsV0FBVyxHQUFHQTs7aUJBSEZGOztZ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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "easy-richtextarea",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "4.0.
|
|
4
|
+
"version": "4.0.26",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/easy-richtextarea",
|
|
7
7
|
"description": "A textarea element that handles and hands off events well.",
|