easy-richtextarea 4.0.33 → 4.0.34

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.
@@ -298,15 +298,13 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
298
298
  var previousContent = _this.getPreviousContent(), content = previousContent; ///
299
299
  _this.setContent(content);
300
300
  }
301
- var content1 = _this.getContent(), selection = _this.getSelection(), contentChanged = _this.hasContentChanged(), changed = contentChanged || selectionChanged;
302
- if (changed) {
303
- _this.callHandlers(eventType, event, element);
301
+ var content1 = _this.getContent(), selection = _this.getSelection(), contentChanged = _this.hasContentChanged();
302
+ if (contentChanged && undoable) {
303
+ var previousContent1 = _this.getPreviousContent(), operations = (0, _generate.default)(previousContent1, content1);
304
+ _this.undoBuffer.addOperations(operations);
304
305
  }
305
- if (undoable) {
306
- if (contentChanged) {
307
- var previousContent1 = _this.getPreviousContent(), operations = (0, _generate.default)(previousContent1, content1);
308
- _this.undoBuffer.addOperations(operations);
309
- }
306
+ if (contentChanged || selectionChanged) {
307
+ _this.callHandlers(eventType, event, element);
310
308
  }
311
309
  var previousContent2 = content1, previousSelection = selection; ///
312
310
  _this.setPreviousContent(previousContent2);
@@ -447,10 +445,10 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
447
445
  if (ctrlKey || metaKey) {
448
446
  var operation = shiftKey ? this.undoBuffer.redo() : this.undoBuffer.undo();
449
447
  if (operation !== null) {
450
- var undoable = false, eventType = _eventTypes.CHANGE_EVENT_TYPE, selection = _selection.default.fromOperation(operation), setPreviousSelection = false;
448
+ var undoable = false, selection = _selection.default.fromOperation(operation), setPreviousSelection = false;
451
449
  this.applyOperation(operation);
452
450
  this.setSelection(selection, setPreviousSelection);
453
- this.intermediateHandler(event, element, undoable, eventType);
451
+ this.intermediateHandler(event, element, undoable);
454
452
  }
455
453
  preventDefault = true;
456
454
  }
@@ -468,8 +466,8 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
468
466
  this.setContent(content, setPreviousContent);
469
467
  this.setSelection(selection, setPreviousSelection);
470
468
  this.undoBuffer.transform(operations);
471
- var event = null, element = this, undoable = false, eventType = _eventTypes.CHANGE_EVENT_TYPE;
472
- this.intermediateHandler(event, element, undoable, eventType);
469
+ var event = null, element = this, undoable = false;
470
+ this.intermediateHandler(event, element, undoable);
473
471
  }
474
472
  },
475
473
  {
@@ -631,4 +629,4 @@ function defer(func) {
631
629
  setTimeout(func, 0);
632
630
  }
633
631
 
634
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yaWNoVGV4dGFyZWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyBFbGVtZW50LCBkb2N1bWVudCB9IGZyb20gXCJlYXN5XCI7XHJcblxyXG5pbXBvcnQgU2VsZWN0aW9uIGZyb20gXCIuL3NlbGVjdGlvblwiXHJcbmltcG9ydCBVbmRvQnVmZmVyIGZyb20gXCIuL3VuZG9CdWZmZXJcIjtcclxuaW1wb3J0IGV2ZW50TWl4aW5zIGZyb20gXCIuL21peGlucy9ldmVudFwiO1xyXG5pbXBvcnQgSW5zZXJ0T3BlcmF0aW9uIGZyb20gXCIuL29wZXJhdGlvbi9pbnNlcnRcIjtcclxuaW1wb3J0IERlbGV0ZU9wZXJhdGlvbiBmcm9tIFwiLi9vcGVyYXRpb24vZGVsZXRlXCI7XHJcbmltcG9ydCB0cmFuc2Zvcm1Db250ZW50IGZyb20gXCIuL3RyYW5zZm9ybS9jb250ZW50XCI7XHJcbmltcG9ydCB0cmFuc2Zvcm1TZWxlY3Rpb24gZnJvbSBcIi4vdHJhbnNmb3JtL3NlbGVjdGlvblwiO1xyXG5pbXBvcnQgZ2VuZXJhdGVPcGVyYXRpb25zIGZyb20gXCIuL29wZXJhdGlvbnMvZ2VuZXJhdGVcIjtcclxuXHJcbmltcG9ydCB7IFRFWFQsIEVNUFRZX1NUUklORyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBaX0tFWV9DT0RFIH0gZnJvbSBcIi4va2V5Q29kZXNcIjtcclxuaW1wb3J0IHsgQ1VUX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIENPUFlfRVZFTlRfVFlQRSxcclxuICAgICAgICAgQkxVUl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBQQVNURV9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBJTlBVVF9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBGT0NVU19FVkVOVF9UWVBFLFxyXG4gICAgICAgICBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICAgU0NST0xMX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIEtFWURPV05fRVZFTlRfVFlQRSxcclxuICAgICAgICAgQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSxcclxuICAgICAgICAgU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUgfSBmcm9tIFwiLi9ldmVudFR5cGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSaWNoVGV4dGFyZWEgZXh0ZW5kcyBFbGVtZW50IHtcclxuICBjb25zdHJ1Y3RvcihzZWxlY3RvciwgZm9jdXNlZCwgcmVhZE9ubHksIHVuZG9CdWZmZXIpIHtcclxuICAgIHN1cGVyKHNlbGVjdG9yKTtcclxuXHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmb2N1c2VkO1xyXG4gICAgdGhpcy5yZWFkT25seSA9IHJlYWRPbmx5O1xyXG4gICAgdGhpcy51bmRvQnVmZmVyID0gdW5kb0J1ZmZlcjtcclxuICB9XHJcblxyXG4gIGlzRm9jdXNlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvY3VzZWQ7XHJcbiAgfVxyXG5cclxuICBpc1JlYWRPbmx5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMucmVhZE9ubHk7XHJcbiAgfVxyXG5cclxuICBnZXRVbmRvQnVmZmVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudW5kb0J1ZmZlcjtcclxuICB9XHJcblxyXG4gIHNldEZvY3VzZWQoZm9jdXNlZCkge1xyXG4gICAgdGhpcy5mb2N1c2VkID0gZm9jdXNlZDtcclxuICB9XHJcblxyXG4gIHNldFJlYWRPbmx5KHJlYWRPbmx5KSB7XHJcbiAgICB0aGlzLnJlYWRPbmx5ID0gcmVhZE9ubHk7XHJcbiAgfVxyXG5cclxuICBjdXRIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW1wdHkgPSBzZWxlY3Rpb24uaXNFbXB0eSgpO1xyXG5cclxuICAgIGlmIChzZWxlY3Rpb25FbXB0eSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0ZWRDb250ZW50ID0gdGhpcy5nZXRTZWxlY3RlZENvbnRlbnQoKTtcclxuXHJcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChzZWxlY3RlZENvbnRlbnQpO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIGRlbGV0ZU9wZXJhdGlvbiA9IERlbGV0ZU9wZXJhdGlvbi5mcm9tQ29udGVudEFuZFNlbGVjdGlvbihjb250ZW50LCBzZWxlY3Rpb24pLFxyXG4gICAgICAgICAgb3BlcmF0aW9uID0gZGVsZXRlT3BlcmF0aW9uOyAgLy8vXHJcblxyXG4gICAgdGhpcy5hcHBseU9wZXJhdGlvbihvcGVyYXRpb24pO1xyXG5cclxuICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCk7XHJcblxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIGNvcHlIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW1wdHkgPSBzZWxlY3Rpb24uaXNFbXB0eSgpO1xyXG5cclxuICAgIGlmIChzZWxlY3Rpb25FbXB0eSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0ZWRDb250ZW50ID0gdGhpcy5nZXRTZWxlY3RlZENvbnRlbnQoKTtcclxuXHJcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChzZWxlY3RlZENvbnRlbnQpO1xyXG5cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBwYXN0ZUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IHsgY2xpcGJvYXJkRGF0YSB9ID0gZXZlbnQsXHJcbiAgICAgICAgICB0ZXh0RGF0YSA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YShURVhUKTtcclxuXHJcbiAgICBpZiAodGV4dERhdGEgPT09IEVNUFRZX1NUUklORykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkVtcHR5ID0gc2VsZWN0aW9uLmlzRW1wdHkoKTtcclxuXHJcbiAgICBpZiAoIXNlbGVjdGlvbkVtcHR5KSB7XHJcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgICAgZGVsZXRlT3BlcmF0aW9uID0gRGVsZXRlT3BlcmF0aW9uLmZyb21Db250ZW50QW5kU2VsZWN0aW9uKGNvbnRlbnQsIHNlbGVjdGlvbiksXHJcbiAgICAgICAgICAgIG9wZXJhdGlvbiA9IGRlbGV0ZU9wZXJhdGlvbjtcclxuXHJcbiAgICAgIHRoaXMuYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gdGV4dERhdGEsIC8vL1xyXG4gICAgICAgICAgaW5zZXJ0T3BlcmF0aW9uID0gSW5zZXJ0T3BlcmF0aW9uLmZyb21Db250ZW50QW5kU2VsZWN0aW9uKGNvbnRlbnQsIHNlbGVjdGlvbiksXHJcbiAgICAgICAgICBvcGVyYXRpb24gPSBpbnNlcnRPcGVyYXRpb247ICAvLy9cclxuXHJcbiAgICB0aGlzLmFwcGx5T3BlcmF0aW9uKG9wZXJhdGlvbik7XHJcblxyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgaW5wdXRIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgYmx1ckhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IHVuZG9hYmxlID0gdHJ1ZSxcclxuICAgICAgICAgIGV2ZW50VHlwZSA9IEJMVVJfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgdW5kb2FibGUsIGV2ZW50VHlwZSwgc2VsZWN0aW9uQ2hhbmdlZCk7XHJcbiAgfVxyXG5cclxuICBmb2N1c0hhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XHJcblxyXG4gICAgZGVmZXIoKCkgPT4ge1xyXG4gICAgICBjb25zdCB1bmRvYWJsZSA9IHRydWUsXHJcbiAgICAgICAgICAgIGV2ZW50VHlwZSA9IEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCB1bmRvYWJsZSwgZXZlbnRUeXBlLCBzZWxlY3Rpb25DaGFuZ2VkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gU0NST0xMX0VWRU5UX1RZUEU7XHJcblxyXG4gICAgdGhpcy5jYWxsSGFuZGxlcnMoZXZlbnRUeXBlLCBldmVudCwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBrZXlEb3duSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgbGV0IHByZXZlbnREZWZhdWx0ID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgeyBrZXlDb2RlIH0gPSBldmVudDtcclxuXHJcbiAgICBzd2l0Y2ggKGtleUNvZGUpIHtcclxuICAgICAgY2FzZSBaX0tFWV9DT0RFOlxyXG4gICAgICAgIHByZXZlbnREZWZhdWx0ID0gdGhpcy56S2V5RG93bihldmVudCwgZWxlbWVudCk7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwcmV2ZW50RGVmYXVsdCkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGRlZmVyKCgpID0+IHtcclxuICAgICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY29udGV4dG1lbnVIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q2hhbmdlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuZm9jdXNlZCkge1xyXG4gICAgICBlbGVtZW50ID0gdGhpczsgLy8vXHJcblxyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW50ZXJtZWRpYXRlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgdW5kb2FibGUgPSB0cnVlLCBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRSwgc2VsZWN0aW9uQ2hhbmdlZCA9IHRoaXMuaGFzU2VsZWN0aW9uQ2hhbmdlZCgpKSA9PiB7XHJcbiAgICBpZiAodGhpcy5yZWFkT25seSkge1xyXG4gICAgICBjb25zdCBwcmV2aW91c0NvbnRlbnQgPSB0aGlzLmdldFByZXZpb3VzQ29udGVudCgpLFxyXG4gICAgICAgICAgICBjb250ZW50ID0gcHJldmlvdXNDb250ZW50OyAgLy8vXHJcblxyXG4gICAgICB0aGlzLnNldENvbnRlbnQoY29udGVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIGNvbnRlbnRDaGFuZ2VkID0gdGhpcy5oYXNDb250ZW50Q2hhbmdlZCgpLFxyXG4gICAgICAgICAgY2hhbmdlZCA9IChjb250ZW50Q2hhbmdlZCB8fCBzZWxlY3Rpb25DaGFuZ2VkKTtcclxuXHJcbiAgICBpZiAoY2hhbmdlZCkge1xyXG4gICAgICB0aGlzLmNhbGxIYW5kbGVycyhldmVudFR5cGUsIGV2ZW50LCBlbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodW5kb2FibGUpIHtcclxuICAgICAgaWYgKGNvbnRlbnRDaGFuZ2VkKSB7XHJcbiAgICAgICAgY29uc3QgcHJldmlvdXNDb250ZW50ID0gdGhpcy5nZXRQcmV2aW91c0NvbnRlbnQoKSxcclxuICAgICAgICAgICAgICBvcGVyYXRpb25zID0gZ2VuZXJhdGVPcGVyYXRpb25zKHByZXZpb3VzQ29udGVudCwgY29udGVudCk7XHJcblxyXG4gICAgICAgIHRoaXMudW5kb0J1ZmZlci5hZGRPcGVyYXRpb25zKG9wZXJhdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcHJldmlvdXNDb250ZW50ID0gY29udGVudCwgIC8vL1xyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3Rpb24gPSBzZWxlY3Rpb247ICAvLy9cclxuXHJcbiAgICB0aGlzLnNldFByZXZpb3VzQ29udGVudChwcmV2aW91c0NvbnRlbnQpO1xyXG5cclxuICAgIHRoaXMuc2V0UHJldmlvdXNTZWxlY3Rpb24ocHJldmlvdXNTZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XHJcbiAgICBjb25zdCBldmVudExpc3RlbmVycyA9IHRoaXMuZmluZEV2ZW50TGlzdGVuZXJzKGV2ZW50VHlwZSk7XHJcblxyXG4gICAgZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgoZXZlbnRMaXN0ZW5lcikgPT4ge1xyXG4gICAgICBsZXQgeyBlbGVtZW50IH0gPSBldmVudExpc3RlbmVyO1xyXG5cclxuICAgICAgY29uc3QgeyBoYW5kbGVyIH0gPSBldmVudExpc3RlbmVyLFxyXG4gICAgICAgICAgICBoYW5kbGVyRWxlbWVudCA9IGVsZW1lbnQ7IC8vL1xyXG5cclxuICAgICAgZWxlbWVudCA9IHRoaXM7IC8vL1xyXG5cclxuICAgICAgaWYgKCAoaGFuZGxlciAhPT0gdGhpcy5jdXRIYW5kbGVyKVxyXG4gICAgICAgICYmIChoYW5kbGVyICE9PSB0aGlzLmNvcHlIYW5kbGVyKVxyXG4gICAgICAgICYmIChoYW5kbGVyICE9PSB0aGlzLnBhc3RlSGFuZGxlcilcclxuICAgICAgICAmJiAoaGFuZGxlciAhPT0gdGhpcy5pbnB1dEhhbmRsZXIpXHJcbiAgICAgICAgJiYgKGhhbmRsZXIgIT09IHRoaXMuYmx1ckhhbmRsZXIpXHJcbiAgICAgICAgJiYgKGhhbmRsZXIgIT09IHRoaXMuZm9jdXNIYW5kbGVyKVxyXG4gICAgICAgICYmIChoYW5kbGVyICE9PSB0aGlzLnNjcm9sbEhhbmRsZXIpXHJcbiAgICAgICAgJiYgKGhhbmRsZXIgIT09IHRoaXMua2V5RG93bkhhbmRsZXIpXHJcbiAgICAgICAgJiYgKGhhbmRsZXIgIT09IHRoaXMuY29udGV4dG1lbnVIYW5kbGVyKVxyXG4gICAgICAgICYmIChoYW5kbGVyICE9PSB0aGlzLnNlbGVjdENoYW5nZUhhbmRsZXIpICkge1xyXG5cclxuICAgICAgICBoYW5kbGVyLmNhbGwoaGFuZGxlckVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaXNBY3RpdmUoKSB7XHJcbiAgICBjb25zdCBhY3RpdmUgPSB0aGlzLmhhc0NsYXNzKFwiYWN0aXZlXCIpO1xyXG5cclxuICAgIHJldHVybiBhY3RpdmU7XHJcbiAgfVxyXG5cclxuICBnZXRDb250ZW50KCkge1xyXG4gICAgY29uc3QgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RE9NRWxlbWVudCgpLFxyXG4gICAgICAgICAgeyB2YWx1ZSB9ID0gZG9tRWxlbWVudCxcclxuICAgICAgICAgIGNvbnRlbnQgPSB2YWx1ZTsgIC8vL1xyXG5cclxuICAgIHJldHVybiBjb250ZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0aW9uKCkge1xyXG4gICAgY29uc3QgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RE9NRWxlbWVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gU2VsZWN0aW9uLmZyb21ET01FbGVtZW50KGRvbUVsZW1lbnQpO1xyXG5cclxuICAgIHJldHVybiBzZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RlZENvbnRlbnQoKSB7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCksXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgZW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKSxcclxuICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc3RhcnQgPSBzdGFydFBvc2l0aW9uLCAgLy8vXHJcbiAgICAgICAgICBlbmQgPSBlbmRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgc2VsZWN0ZWRDb250ZW50ID0gY29udGVudC5zbGljZShzdGFydCwgZW5kKTtcclxuXHJcbiAgICByZXR1cm4gc2VsZWN0ZWRDb250ZW50O1xyXG4gIH1cclxuXHJcbiAgaGFzQ29udGVudENoYW5nZWQoKSB7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCksXHJcbiAgICAgICAgICBwcmV2aW91c0NvbnRlbnQgPSB0aGlzLmdldFByZXZpb3VzQ29udGVudCgpLFxyXG4gICAgICAgICAgY29udGVudFByZXZpb3VzQ29udGVudCA9IChjb250ZW50ID09PSBwcmV2aW91c0NvbnRlbnQpLFxyXG4gICAgICAgICAgY29udGVudENoYW5nZWQgPSAhY29udGVudFByZXZpb3VzQ29udGVudDtcclxuXHJcbiAgICByZXR1cm4gY29udGVudENoYW5nZWQ7XHJcbiAgfVxyXG5cclxuICBoYXNTZWxlY3Rpb25DaGFuZ2VkKCkge1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gdGhpcy5nZXRQcmV2aW91c1NlbGVjdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uUHJldmlvdXNTZWxlY3Rpb24gPSBzZWxlY3Rpb24uaXNFcXVhbFRvKHByZXZpb3VzU2VsZWN0aW9uKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSAhc2VsZWN0aW9uUHJldmlvdXNTZWxlY3Rpb247IC8vL1xyXG5cclxuICAgIHJldHVybiBzZWxlY3Rpb25DaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgc2V0Q29udGVudChjb250ZW50LCBzZXRQcmV2aW91c0NvbnRlbnQgPSB0cnVlKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRlbnQsICAvLy9cclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBPYmplY3QuYXNzaWduKGRvbUVsZW1lbnQsIHtcclxuICAgICAgdmFsdWVcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChzZXRQcmV2aW91c0NvbnRlbnQpIHtcclxuICAgICAgY29uc3QgcHJldmlvdXNDb250ZW50ID0gY29udGVudDsgIC8vL1xyXG5cclxuICAgICAgdGhpcy5zZXRQcmV2aW91c0NvbnRlbnQocHJldmlvdXNDb250ZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGlvbihzZWxlY3Rpb24sIHNldFByZXZpb3VzU2VsZWN0aW9uID0gdHJ1ZSkge1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25FbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb25TdGFydFBvc2l0aW9uLCAgLy8vXHJcbiAgICAgICAgICBzZWxlY3Rpb25FbmQgPSBzZWxlY3Rpb25FbmRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RE9NRWxlbWVudCgpO1xyXG5cclxuICAgIGRvbUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7XHJcblxyXG4gICAgaWYgKHNldFByZXZpb3VzU2VsZWN0aW9uKSB7XHJcbiAgICAgIGNvbnN0IHByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uOyAgLy8vXHJcblxyXG4gICAgICB0aGlzLnNldFByZXZpb3VzU2VsZWN0aW9uKHByZXZpb3VzU2VsZWN0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHpLZXlEb3duKGV2ZW50LCBlbGVtZW50KSB7XHJcbiAgICBsZXQgcHJldmVudERlZmF1bHQgPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdCB7IGN0cmxLZXksIG1ldGFLZXksIHNoaWZ0S2V5IH0gPSBldmVudDtcclxuXHJcbiAgICBpZiAoY3RybEtleSB8fCBtZXRhS2V5KSB7XHJcbiAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IHNoaWZ0S2V5ID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVuZG9CdWZmZXIucmVkbygpIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudW5kb0J1ZmZlci51bmRvKCk7XHJcblxyXG4gICAgICBpZiAob3BlcmF0aW9uICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgdW5kb2FibGUgPSBmYWxzZSxcclxuICAgICAgICAgICAgICBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICAgICAgICBzZWxlY3Rpb24gPSBTZWxlY3Rpb24uZnJvbU9wZXJhdGlvbihvcGVyYXRpb24pLFxyXG4gICAgICAgICAgICAgIHNldFByZXZpb3VzU2VsZWN0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbik7XHJcblxyXG4gICAgICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgdW5kb2FibGUsIGV2ZW50VHlwZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHByZXZlbnREZWZhdWx0ID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcHJldmVudERlZmF1bHQ7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm0ob3BlcmF0aW9ucykge1xyXG4gICAgbGV0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHRyYW5zZm9ybWVkQ29udGVudCA9IHRyYW5zZm9ybUNvbnRlbnQoY29udGVudCwgb3BlcmF0aW9ucyksXHJcbiAgICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHRyYW5zZm9ybVNlbGVjdGlvbihzZWxlY3Rpb24sIG9wZXJhdGlvbnMpO1xyXG5cclxuICAgIGNvbnRlbnQgPSB0cmFuc2Zvcm1lZENvbnRlbnQ7IC8vL1xyXG5cclxuICAgIHNlbGVjdGlvbiA9IHRyYW5zZm9ybWVkU2VsZWN0aW9uOyAvLy9cclxuXHJcbiAgICBjb25zdCBzZXRQcmV2aW91c0NvbnRlbnQgPSBmYWxzZSxcclxuICAgICAgICAgIHNldFByZXZpb3VzU2VsZWN0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5zZXRDb250ZW50KGNvbnRlbnQsIHNldFByZXZpb3VzQ29udGVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbik7XHJcblxyXG4gICAgdGhpcy51bmRvQnVmZmVyLnRyYW5zZm9ybShvcGVyYXRpb25zKTtcclxuXHJcbiAgICBjb25zdCBldmVudCA9IG51bGwsXHJcbiAgICAgICAgICBlbGVtZW50ID0gdGhpcyxcclxuICAgICAgICAgIHVuZG9hYmxlID0gZmFsc2UsXHJcbiAgICAgICAgICBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIHVuZG9hYmxlLCBldmVudFR5cGUpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKSB7XHJcbiAgICBsZXQgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XHJcblxyXG4gICAgY29uc3QgdHJhbnNmb3JtZWRDb250ZW50ID0gb3BlcmF0aW9uLnRyYW5zZm9ybUNvbnRlbnQoY29udGVudCksXHJcbiAgICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IG9wZXJhdGlvbi50cmFuc2Zvcm1TZWxlY3Rpb24oc2VsZWN0aW9uKTtcclxuXHJcbiAgICBjb250ZW50ID0gdHJhbnNmb3JtZWRDb250ZW50OyAvLy9cclxuXHJcbiAgICBzZWxlY3Rpb24gPSB0cmFuc2Zvcm1lZFNlbGVjdGlvbjsgLy8vXHJcblxyXG4gICAgY29uc3Qgc2V0UHJldmlvdXNDb250ZW50ID0gZmFsc2UsXHJcbiAgICAgICAgICBzZXRQcmV2aW91c1NlbGVjdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuc2V0Q29udGVudChjb250ZW50LCBzZXRQcmV2aW91c0NvbnRlbnQpO1xyXG5cclxuICAgIHRoaXMuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbiwgc2V0UHJldmlvdXNTZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGUoKSB7XHJcbiAgICB0aGlzLm9uKENVVF9FVkVOVF9UWVBFLCB0aGlzLmN1dEhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub24oQ09QWV9FVkVOVF9UWVBFLCB0aGlzLmNvcHlIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKFBBU1RFX0VWRU5UX1RZUEUsIHRoaXMucGFzdGVIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKElOUFVUX0VWRU5UX1RZUEUsIHRoaXMuaW5wdXRIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKEJMVVJfRVZFTlRfVFlQRSwgdGhpcy5ibHVySGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vbihGT0NVU19FVkVOVF9UWVBFLCB0aGlzLmZvY3VzSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vbihTQ1JPTExfRVZFTlRfVFlQRSwgdGhpcy5zY3JvbGxIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKEtFWURPV05fRVZFTlRfVFlQRSwgdGhpcy5rZXlEb3duSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vbihDT05URVhUTUVOVV9FVkVOVF9UWVBFLCB0aGlzLmNvbnRleHRtZW51SGFuZGxlcik7XHJcblxyXG4gICAgZG9jdW1lbnQub24oU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUsIHRoaXMuc2VsZWN0Q2hhbmdlSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5hZGRDbGFzcyhcImFjdGl2ZVwiKTtcclxuICB9XHJcblxyXG4gIGRlYWN0aXZhdGUoKSB7XHJcbiAgICB0aGlzLm9mZihDVVRfRVZFTlRfVFlQRSwgdGhpcy5jdXRIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihDT1BZX0VWRU5UX1RZUEUsIHRoaXMuY29weUhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub2ZmKFBBU1RFX0VWRU5UX1RZUEUsIHRoaXMucGFzdGVIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihJTlBVVF9FVkVOVF9UWVBFLCB0aGlzLmlucHV0SGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoQkxVUl9FVkVOVF9UWVBFLCB0aGlzLmJsdXJIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihGT0NVU19FVkVOVF9UWVBFLCB0aGlzLmZvY3VzSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoU0NST0xMX0VWRU5UX1RZUEUsIHRoaXMuc2Nyb2xsSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoS0VZRE9XTl9FVkVOVF9UWVBFLCB0aGlzLmtleURvd25IYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihDT05URVhUTUVOVV9FVkVOVF9UWVBFLCB0aGlzLmNvbnRleHRtZW51SGFuZGxlcik7XHJcblxyXG4gICAgZG9jdW1lbnQub2ZmKFNFTEVDVElPTkNIQU5HRV9FVkVOVF9UWVBFLCB0aGlzLnNlbGVjdENoYW5nZUhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMucmVtb3ZlQ2xhc3MoXCJhY3RpdmVcIik7XHJcbiAgfVxyXG5cclxuICBnZXRQcmV2aW91c0NvbnRlbnQoKSB7XHJcbiAgICBjb25zdCB7IHByZXZpb3VzQ29udGVudCB9ID0gdGhpcy5nZXRTdGF0ZSgpO1xyXG5cclxuICAgIHJldHVybiBwcmV2aW91c0NvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRQcmV2aW91c1NlbGVjdGlvbigpIHtcclxuICAgIGNvbnN0IHsgcHJldmlvdXNTZWxlY3Rpb24gfSA9IHRoaXMuZ2V0U3RhdGUoKTtcclxuXHJcbiAgICByZXR1cm4gcHJldmlvdXNTZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBzZXRQcmV2aW91c0NvbnRlbnQocHJldmlvdXNDb250ZW50KSB7XHJcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcclxuICAgICAgcHJldmlvdXNDb250ZW50XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFByZXZpb3VzU2VsZWN0aW9uKHByZXZpb3VzU2VsZWN0aW9uKSB7XHJcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcclxuICAgICAgcHJldmlvdXNTZWxlY3Rpb25cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IG9uQmx1ciwgb25Gb2N1cywgb25TY3JvbGwsIG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICBibHVySGFuZGxlciA9IG9uQmx1ciwgLy8vXHJcbiAgICAgICAgICBmb2N1c0hhbmRsZXIgPSBvbkZvY3VzLCAvLy9cclxuICAgICAgICAgIHNjcm9sbEhhbmRsZXIgPSBvblNjcm9sbCwgLy8vXHJcbiAgICAgICAgICBjaGFuZ2VIYW5kbGVyID0gb25DaGFuZ2U7IC8vL1xyXG5cclxuICAgIHRoaXMudXBkYXRlSW5pdGlhbFN0YXRlKCk7XHJcblxyXG4gICAgYmx1ckhhbmRsZXIgJiYgdGhpcy5vbkJsdXIoYmx1ckhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGZvY3VzSGFuZGxlciAmJiB0aGlzLm9uRm9jdXMoZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBzY3JvbGxIYW5kbGVyICYmIHRoaXMub25TY3JvbGwoc2Nyb2xsSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgY2hhbmdlSGFuZGxlciAmJiB0aGlzLm9uQ2hhbmdlKGNoYW5nZUhhbmRsZXIsIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgd2lsbFVubW91bnQoKSB7XHJcbiAgICBjb25zdCB7IG9uQmx1ciwgb25Gb2N1cywgb25TY3JvbGwsIG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgIGJsdXJIYW5kbGVyID0gb25CbHVyLCAvLy9cclxuICAgICAgICAgICAgZm9jdXNIYW5kbGVyID0gb25Gb2N1cywgLy8vXHJcbiAgICAgICAgICAgIHNjcm9sbEhhbmRsZXIgPSBvblNjcm9sbCwgLy8vXHJcbiAgICAgICAgICAgIGNoYW5nZUhhbmRsZXIgPSBvbkNoYW5nZTsgLy8vXHJcblxyXG4gICAgYmx1ckhhbmRsZXIgJiYgdGhpcy5vZmZCbHVyKGJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBmb2N1c0hhbmRsZXIgJiYgdGhpcy5vZmZGb2N1cyhmb2N1c0hhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHNjcm9sbEhhbmRsZXIgJiYgdGhpcy5vZmZTY3JvbGwoc2Nyb2xsSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgY2hhbmdlSGFuZGxlciAmJiB0aGlzLm9mZkNoYW5nZShjaGFuZ2VIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBjb25zdCBhY3RpdmUgPSB0aGlzLmlzQWN0aXZlKCk7XHJcblxyXG4gICAgaWYgKGFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmRlYWN0aXZhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZUluaXRpYWxTdGF0ZSgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBwcmV2aW91c0NvbnRlbnQgPSBjb250ZW50LCAgLy8vXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG5cclxuICAgIHRoaXMuc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBzZXRJbml0aWFsU3RhdGUoKSB7XHJcbiAgICBjb25zdCBwcmV2aW91c0NvbnRlbnQgPSBudWxsLFxyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3Rpb24gPSBudWxsO1xyXG5cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBwcmV2aW91c0NvbnRlbnQsXHJcbiAgICAgIHByZXZpb3VzU2VsZWN0aW9uXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGluaXRpYWxpc2UoKSB7XHJcbiAgICB0aGlzLnNldEluaXRpYWxTdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHRhZ05hbWUgPSBcInRleHRhcmVhXCI7XHJcblxyXG4gIHN0YXRpYyBpZ25vcmVkUHJvcGVydGllcyA9IFtcclxuICAgIFwib25CbHVyXCIsXHJcbiAgICBcIm9uRm9jdXNcIixcclxuICAgIFwib25TY3JvbGxcIixcclxuICAgIFwib25DaGFuZ2VcIlxyXG4gIF07XHJcblxyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcGVydGllcyA9IHtcclxuICAgIGNsYXNzTmFtZTogXCJyaWNoXCJcclxuICB9O1xyXG5cclxuICBzdGF0aWMgZnJvbUNsYXNzKENsYXNzLCBwcm9wZXJ0aWVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcclxuICAgIGNvbnN0IGZvY3VzZWQgPSBmYWxzZSxcclxuICAgICAgICAgIHJlYWRPbmx5ID0gZmFsc2UsXHJcbiAgICAgICAgICB1bmRvQnVmZmVyID0gVW5kb0J1ZmZlci5mcm9tTm90aGluZygpLFxyXG4gICAgICAgICAgcmljaFRleHRhcmVhID0gRWxlbWVudC5mcm9tQ2xhc3MoQ2xhc3MsIHByb3BlcnRpZXMsIGZvY3VzZWQsIHJlYWRPbmx5LCB1bmRvQnVmZmVyLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xyXG5cclxuICAgIHJldHVybiByaWNoVGV4dGFyZWE7XHJcbiAgfVxyXG59XHJcblxyXG5PYmplY3QuYXNzaWduKFJpY2hUZXh0YXJlYS5wcm90b3R5cGUsIGV2ZW50TWl4aW5zKTtcclxuXHJcbmZ1bmN0aW9uIGRlZmVyKGZ1bmMpIHtcclxuICBzZXRUaW1lb3V0KGZ1bmMsIDApO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJSaWNoVGV4dGFyZWEiLCJzZWxlY3RvciIsImZvY3VzZWQiLCJyZWFkT25seSIsInVuZG9CdWZmZXIiLCJjdXRIYW5kbGVyIiwiZXZlbnQiLCJlbGVtZW50Iiwic2VsZWN0aW9uIiwiZ2V0U2VsZWN0aW9uIiwic2VsZWN0aW9uRW1wdHkiLCJpc0VtcHR5Iiwic2VsZWN0ZWRDb250ZW50IiwiZ2V0U2VsZWN0ZWRDb250ZW50IiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0IiwiY29udGVudCIsImdldENvbnRlbnQiLCJkZWxldGVPcGVyYXRpb24iLCJEZWxldGVPcGVyYXRpb24iLCJmcm9tQ29udGVudEFuZFNlbGVjdGlvbiIsIm9wZXJhdGlvbiIsImFwcGx5T3BlcmF0aW9uIiwiaW50ZXJtZWRpYXRlSGFuZGxlciIsInByZXZlbnREZWZhdWx0IiwiY29weUhhbmRsZXIiLCJwYXN0ZUhhbmRsZXIiLCJjbGlwYm9hcmREYXRhIiwidGV4dERhdGEiLCJnZXREYXRhIiwiVEVYVCIsIkVNUFRZX1NUUklORyIsImluc2VydE9wZXJhdGlvbiIsIkluc2VydE9wZXJhdGlvbiIsImlucHV0SGFuZGxlciIsImJsdXJIYW5kbGVyIiwidW5kb2FibGUiLCJldmVudFR5cGUiLCJCTFVSX0VWRU5UX1RZUEUiLCJzZWxlY3Rpb25DaGFuZ2VkIiwiZm9jdXNIYW5kbGVyIiwiZGVmZXIiLCJGT0NVU19FVkVOVF9UWVBFIiwic2Nyb2xsSGFuZGxlciIsIlNDUk9MTF9FVkVOVF9UWVBFIiwiY2FsbEhhbmRsZXJzIiwia2V5RG93bkhhbmRsZXIiLCJrZXlDb2RlIiwiWl9LRVlfQ09ERSIsInpLZXlEb3duIiwiY29udGV4dG1lbnVIYW5kbGVyIiwic2VsZWN0Q2hhbmdlSGFuZGxlciIsIkNIQU5HRV9FVkVOVF9UWVBFIiwiaGFzU2VsZWN0aW9uQ2hhbmdlZCIsInByZXZpb3VzQ29udGVudCIsImdldFByZXZpb3VzQ29udGVudCIsInNldENvbnRlbnQiLCJjb250ZW50Q2hhbmdlZCIsImhhc0NvbnRlbnRDaGFuZ2VkIiwiY2hhbmdlZCIsIm9wZXJhdGlvbnMiLCJnZW5lcmF0ZU9wZXJhdGlvbnMiLCJhZGRPcGVyYXRpb25zIiwicHJldmlvdXNTZWxlY3Rpb24iLCJzZXRQcmV2aW91c0NvbnRlbnQiLCJzZXRQcmV2aW91c1NlbGVjdGlvbiIsImlzRm9jdXNlZCIsImlzUmVhZE9ubHkiLCJnZXRVbmRvQnVmZmVyIiwic2V0Rm9jdXNlZCIsInNldFJlYWRPbmx5IiwicmVtYWluaW5nQXJndW1lbnRzIiwiZXZlbnRMaXN0ZW5lcnMiLCJmaW5kRXZlbnRMaXN0ZW5lcnMiLCJmb3JFYWNoIiwiZXZlbnRMaXN0ZW5lciIsImhhbmRsZXIiLCJoYW5kbGVyRWxlbWVudCIsImNhbGwiLCJpc0FjdGl2ZSIsImFjdGl2ZSIsImhhc0NsYXNzIiwiZG9tRWxlbWVudCIsImdldERPTUVsZW1lbnQiLCJ2YWx1ZSIsIlNlbGVjdGlvbiIsImZyb21ET01FbGVtZW50IiwiZW5kUG9zaXRpb24iLCJnZXRFbmRQb3NpdGlvbiIsInN0YXJ0UG9zaXRpb24iLCJnZXRTdGFydFBvc2l0aW9uIiwic3RhcnQiLCJlbmQiLCJzbGljZSIsImNvbnRlbnRQcmV2aW91c0NvbnRlbnQiLCJnZXRQcmV2aW91c1NlbGVjdGlvbiIsInNlbGVjdGlvblByZXZpb3VzU2VsZWN0aW9uIiwiaXNFcXVhbFRvIiwiT2JqZWN0IiwiYXNzaWduIiwic2V0U2VsZWN0aW9uIiwic2VsZWN0aW9uU3RhcnRQb3NpdGlvbiIsInNlbGVjdGlvbkVuZFBvc2l0aW9uIiwic2VsZWN0aW9uU3RhcnQiLCJzZWxlY3Rpb25FbmQiLCJzZXRTZWxlY3Rpb25SYW5nZSIsImN0cmxLZXkiLCJtZXRhS2V5Iiwic2hpZnRLZXkiLCJyZWRvIiwidW5kbyIsImZyb21PcGVyYXRpb24iLCJ0cmFuc2Zvcm0iLCJ0cmFuc2Zvcm1lZENvbnRlbnQiLCJ0cmFuc2Zvcm1Db250ZW50IiwidHJhbnNmb3JtZWRTZWxlY3Rpb24iLCJ0cmFuc2Zvcm1TZWxlY3Rpb24iLCJhY3RpdmF0ZSIsIm9uIiwiQ1VUX0VWRU5UX1RZUEUiLCJDT1BZX0VWRU5UX1RZUEUiLCJQQVNURV9FVkVOVF9UWVBFIiwiSU5QVVRfRVZFTlRfVFlQRSIsIktFWURPV05fRVZFTlRfVFlQRSIsIkNPTlRFWFRNRU5VX0VWRU5UX1RZUEUiLCJkb2N1bWVudCIsIlNFTEVDVElPTkNIQU5HRV9FVkVOVF9UWVBFIiwiYWRkQ2xhc3MiLCJkZWFjdGl2YXRlIiwib2ZmIiwicmVtb3ZlQ2xhc3MiLCJnZXRTdGF0ZSIsInVwZGF0ZVN0YXRlIiwiZGlkTW91bnQiLCJwcm9wZXJ0aWVzIiwib25CbHVyIiwib25Gb2N1cyIsIm9uU2Nyb2xsIiwib25DaGFuZ2UiLCJjaGFuZ2VIYW5kbGVyIiwidXBkYXRlSW5pdGlhbFN0YXRlIiwid2lsbFVubW91bnQiLCJvZmZCbHVyIiwib2ZmRm9jdXMiLCJvZmZTY3JvbGwiLCJvZmZDaGFuZ2UiLCJzZXRJbml0aWFsU3RhdGUiLCJzZXRTdGF0ZSIsImluaXRpYWxpc2UiLCJmcm9tQ2xhc3MiLCJDbGFzcyIsIkVsZW1lbnQiLCJVbmRvQnVmZmVyIiwiZnJvbU5vdGhpbmciLCJyaWNoVGV4dGFyZWEiLCJ0YWdOYW1lIiwiaWdub3JlZFByb3BlcnRpZXMiLCJkZWZhdWx0UHJvcGVydGllcyIsImNsYXNzTmFtZSIsInByb3RvdHlwZSIsImV2ZW50TWl4aW5zIiwiZnVuYyIsInNldFRpbWVvdXQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBMkJxQkE7OztvQkF6QmE7OERBRVo7K0RBQ0M7MERBQ0M7MkRBQ0k7MkRBQ0E7NERBQ0M7K0RBQ0U7NkRBQ0E7eUJBRUk7d0JBQ1I7MEJBV2dCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFNUIsSUFBQSxBQUFNQSw2QkEraEJwQixBQS9oQmM7Y0FBTUE7OEJBQUFBO2FBQUFBLGFBQ1BDLFFBQVEsRUFBRUMsT0FBTyxFQUFFQyxRQUFRLEVBQUVDLFVBQVU7OEJBRGhDSjs7a0NBRVhDO1FBMkJSSSwrQ0FBQUEsY0FBYSxTQUFDQyxPQUFPQyxTQUFZO1lBQy9CLElBQU1DLFlBQVksTUFBS0MsWUFBWSxJQUM3QkMsaUJBQWlCRixVQUFVRyxPQUFPO1lBRXhDLElBQUlELGdCQUFnQjtnQkFDbEI7WUFDRixDQUFDO1lBRUQsSUFBTUUsa0JBQWtCLE1BQUtDLGtCQUFrQjtZQUUvQ0MsVUFBVUMsU0FBUyxDQUFDQyxTQUFTLENBQUNKO1lBRTlCLElBQU1LLFVBQVUsTUFBS0MsVUFBVSxJQUN6QkMsa0JBQWtCQyxlQUFlLENBQUNDLHVCQUF1QixDQUFDSixTQUFTVCxZQUNuRWMsWUFBWUgsaUJBQWtCLEdBQUc7WUFFdkMsTUFBS0ksY0FBYyxDQUFDRDtZQUVwQixNQUFLRSxtQkFBbUIsQ0FBQ2xCLE9BQU9DO1lBRWhDRCxNQUFNbUIsY0FBYztRQUN0QjtRQUVBQywrQ0FBQUEsZUFBYyxTQUFDcEIsT0FBT0MsU0FBWTtZQUNoQyxJQUFNQyxZQUFZLE1BQUtDLFlBQVksSUFDN0JDLGlCQUFpQkYsVUFBVUcsT0FBTztZQUV4QyxJQUFJRCxnQkFBZ0I7Z0JBQ2xCO1lBQ0YsQ0FBQztZQUVELElBQU1FLGtCQUFrQixNQUFLQyxrQkFBa0I7WUFFL0NDLFVBQVVDLFNBQVMsQ0FBQ0MsU0FBUyxDQUFDSjtZQUU5Qk4sTUFBTW1CLGNBQWM7UUFDdEI7UUFFQUUsK0NBQUFBLGdCQUFlLFNBQUNyQixPQUFPQyxTQUFZO1lBQ2pDLElBQU0sQUFBRXFCLGdCQUFrQnRCLE1BQWxCc0IsZUFDRkMsV0FBV0QsY0FBY0UsT0FBTyxDQUFDQyxlQUFJO1lBRTNDLElBQUlGLGFBQWFHLHVCQUFZLEVBQUU7Z0JBQzdCO1lBQ0YsQ0FBQztZQUVELElBQU14QixZQUFZLE1BQUtDLFlBQVksSUFDN0JDLGlCQUFpQkYsVUFBVUcsT0FBTztZQUV4QyxJQUFJLENBQUNELGdCQUFnQjtnQkFDbkIsSUFBTU8sVUFBVSxNQUFLQyxVQUFVLElBQ3pCQyxrQkFBa0JDLGVBQWUsQ0FBQ0MsdUJBQXVCLENBQUNKLFNBQVNULFlBQ25FYyxZQUFZSDtnQkFFbEIsTUFBS0ksY0FBYyxDQUFDRDtZQUN0QixDQUFDO1lBRUQsSUFBTUwsV0FBVVksVUFDVkksa0JBQWtCQyxlQUFlLENBQUNiLHVCQUF1QixDQUFDSixVQUFTVCxZQUNuRWMsYUFBWVcsaUJBQWtCLEdBQUc7WUFFdkMsTUFBS1YsY0FBYyxDQUFDRDtZQUVwQixNQUFLRSxtQkFBbUIsQ0FBQ2xCLE9BQU9DO1lBRWhDRCxNQUFNbUIsY0FBYztRQUN0QjtRQUVBVSwrQ0FBQUEsZ0JBQWUsU0FBQzdCLE9BQU9DLFNBQVk7WUFDakMsTUFBS2lCLG1CQUFtQixDQUFDbEIsT0FBT0M7UUFDbEM7UUFFQTZCLCtDQUFBQSxlQUFjLFNBQUM5QixPQUFPQyxTQUFZO1lBQ2hDLE1BQUtMLE9BQU8sR0FBRyxLQUFLO1lBRXBCLElBQU1tQyxXQUFXLElBQUksRUFDZkMsWUFBWUMsMkJBQWUsRUFDM0JDLG1CQUFtQixJQUFJO1lBRTdCLE1BQUtoQixtQkFBbUIsQ0FBQ2xCLE9BQU9DLFNBQVM4QixVQUFVQyxXQUFXRTtRQUNoRTtRQUVBQywrQ0FBQUEsZ0JBQWUsU0FBQ25DLE9BQU9DLFNBQVk7WUFDakMsTUFBS0wsT0FBTyxHQUFHLElBQUk7WUFFbkJ3QyxNQUFNLFdBQU07Z0JBQ1YsSUFBTUwsV0FBVyxJQUFJLEVBQ2ZDLFlBQVlLLDRCQUFnQixFQUM1QkgsbUJBQW1CLElBQUk7Z0JBRTdCLE1BQUtoQixtQkFBbUIsQ0FBQ2xCLE9BQU9DLFNBQVM4QixVQUFVQyxXQUFXRTtZQUNoRTtRQUNGO1FBRUFJLCtDQUFBQSxpQkFBZ0IsU0FBQ3RDLE9BQU9DLFNBQVk7WUFDbEMsSUFBTStCLFlBQVlPLDZCQUFpQjtZQUVuQyxNQUFLQyxZQUFZLENBQUNSLFdBQVdoQyxPQUFPQztRQUN0QztRQUVBd0MsK0NBQUFBLGtCQUFpQixTQUFDekMsT0FBT0MsU0FBWTtZQUNuQyxJQUFJa0IsaUJBQWlCLEtBQUs7WUFFMUIsSUFBTSxBQUFFdUIsVUFBWTFDLE1BQVowQztZQUVSLE9BQVFBO2dCQUNOLEtBQUtDLG9CQUFVO29CQUNieEIsaUJBQWlCLE1BQUt5QixRQUFRLENBQUM1QyxPQUFPQztvQkFFdEMsS0FBTTtZQUNWO1lBRUEsSUFBSWtCLGdCQUFnQjtnQkFDbEJuQixNQUFNbUIsY0FBYztnQkFFcEI7WUFDRixDQUFDO1lBRURpQixNQUFNLFdBQU07Z0JBQ1YsTUFBS2xCLG1CQUFtQixDQUFDbEIsT0FBT0M7WUFDbEM7UUFDRjtRQUVBNEMsK0NBQUFBLHNCQUFxQixTQUFDN0MsT0FBT0MsU0FBWTtZQUN2Q0QsTUFBTW1CLGNBQWM7UUFDdEI7UUFFQTJCLCtDQUFBQSx1QkFBc0IsU0FBQzlDLE9BQU9DLFNBQVk7WUFDeEMsSUFBSSxNQUFLTCxPQUFPLEVBQUU7Z0JBQ2hCSyx5Q0FBZ0IsR0FBRztnQkFFbkIsTUFBS2lCLG1CQUFtQixDQUFDbEIsT0FBT0M7WUFDbEMsQ0FBQztRQUNIO1FBRUFpQiwrQ0FBQUEsdUJBQXNCLFNBQUNsQixPQUFPQyxTQUEyRztnQkFBbEc4Qiw0RUFBVyxJQUFJLEVBQUVDLDZFQUFZZSw2QkFBaUIsRUFBRWIsb0ZBQW1CLE1BQUtjLG1CQUFtQjtZQUNoSSxJQUFJLE1BQUtuRCxRQUFRLEVBQUU7Z0JBQ2pCLElBQU1vRCxrQkFBa0IsTUFBS0Msa0JBQWtCLElBQ3pDdkMsVUFBVXNDLGlCQUFrQixHQUFHO2dCQUVyQyxNQUFLRSxVQUFVLENBQUN4QztZQUNsQixDQUFDO1lBRUQsSUFBTUEsV0FBVSxNQUFLQyxVQUFVLElBQ3pCVixZQUFZLE1BQUtDLFlBQVksSUFDN0JpRCxpQkFBaUIsTUFBS0MsaUJBQWlCLElBQ3ZDQyxVQUFXRixrQkFBa0JsQjtZQUVuQyxJQUFJb0IsU0FBUztnQkFDWCxNQUFLZCxZQUFZLENBQUNSLFdBQVdoQyxPQUFPQztZQUN0QyxDQUFDO1lBRUQsSUFBSThCLFVBQVU7Z0JBQ1osSUFBSXFCLGdCQUFnQjtvQkFDbEIsSUFBTUgsbUJBQWtCLE1BQUtDLGtCQUFrQixJQUN6Q0ssYUFBYUMsSUFBQUEsaUJBQWtCLEVBQUNQLGtCQUFpQnRDO29CQUV2RCxNQUFLYixVQUFVLENBQUMyRCxhQUFhLENBQUNGO2dCQUNoQyxDQUFDO1lBQ0gsQ0FBQztZQUVELElBQU1OLG1CQUFrQnRDLFVBQ2xCK0Msb0JBQW9CeEQsV0FBWSxHQUFHO1lBRXpDLE1BQUt5RCxrQkFBa0IsQ0FBQ1Y7WUFFeEIsTUFBS1csb0JBQW9CLENBQUNGO1FBQzVCO1FBaE1FLE1BQUs5RCxPQUFPLEdBQUdBO1FBQ2YsTUFBS0MsUUFBUSxHQUFHQTtRQUNoQixNQUFLQyxVQUFVLEdBQUdBOzs7aUJBTkRKOztZQVNuQm1FLEtBQUFBO21CQUFBQSxTQUFBQSxZQUFZO2dCQUNWLE9BQU8sSUFBSSxDQUFDakUsT0FBTztZQUNyQjs7O1lBRUFrRSxLQUFBQTttQkFBQUEsU0FBQUEsYUFBYTtnQkFDWCxPQUFPLElBQUksQ0FBQ2pFLFFBQVE7WUFDdEI7OztZQUVBa0UsS0FBQUE7bUJBQUFBLFNBQUFBLGdCQUFnQjtnQkFDZCxPQUFPLElBQUksQ0FBQ2pFLFVBQVU7WUFDeEI7OztZQUVBa0UsS0FBQUE7bUJBQUFBLFNBQUFBLFdBQVdwRSxPQUFPLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQ0EsT0FBTyxHQUFHQTtZQUNqQjs7O1lBRUFxRSxLQUFBQTttQkFBQUEsU0FBQUEsWUFBWXBFLFFBQVEsRUFBRTtnQkFDcEIsSUFBSSxDQUFDQSxRQUFRLEdBQUdBO1lBQ2xCOzs7WUEyS0EyQyxLQUFBQTttQkFBQUEsU0FBQUEsYUFBYVIsU0FBUyxFQUF5QjtnQkFBdkIsSUFBQSxJQUFBLE9BQUEsVUFBQSxRQUFBLEFBQUdrQyxxQkFBSCxVQUFBLE9BQUEsSUFBQSxPQUFBLEtBQXFCLEdBQXJCLE9BQUEsR0FBQSxPQUFBLE1BQUEsT0FBQTtvQkFBR0EsbUJBQUgsT0FBQSxLQUFBLFNBQUEsQ0FBQSxLQUFxQjtnQkFBRDs7Z0JBQzFDLElBQU1DLGlCQUFpQixJQUFJLENBQUNDLGtCQUFrQixDQUFDcEM7Z0JBRS9DbUMsZUFBZUUsT0FBTyxDQUFDLFNBQUNDLGVBQWtCO29CQUN4QyxJQUFJLEFBQUVyRSxVQUFZcUUsY0FBWnJFO29CQUVOLElBQU0sQUFBRXNFLFVBQVlELGNBQVpDLFNBQ0ZDLGlCQUFpQnZFLFNBQVMsR0FBRztvQkFFbkNBLGlCQUFnQixHQUFHO29CQUVuQixJQUFLLEFBQUNzRSxZQUFZLE1BQUt4RSxVQUFVLElBQzNCd0UsWUFBWSxNQUFLbkQsV0FBVyxJQUM1Qm1ELFlBQVksTUFBS2xELFlBQVksSUFDN0JrRCxZQUFZLE1BQUsxQyxZQUFZLElBQzdCMEMsWUFBWSxNQUFLekMsV0FBVyxJQUM1QnlDLFlBQVksTUFBS3BDLFlBQVksSUFDN0JvQyxZQUFZLE1BQUtqQyxhQUFhLElBQzlCaUMsWUFBWSxNQUFLOUIsY0FBYyxJQUMvQjhCLFlBQVksTUFBSzFCLGtCQUFrQixJQUNuQzBCLFlBQVksTUFBS3pCLG1CQUFtQixFQUFJOzRCQUU1Q3lCO3dCQUFBQSxDQUFBQSxXQUFBQSxTQUFRRSxJQUFJLENBQVpGLE1BQUFBLFVBQUFBOzRCQUFhQzt5QkFBK0MsQ0FBNURELE9BQTZCLG1CQUFHTCxxQkFBaENLOzRCQUFvRHRFO3lCQUFRO29CQUM5RCxDQUFDO2dCQUNIO1lBQ0Y7OztZQUVBeUUsS0FBQUE7bUJBQUFBLFNBQUFBLFdBQVc7Z0JBQ1QsSUFBTUMsU0FBUyxJQUFJLENBQUNDLFFBQVEsQ0FBQztnQkFFN0IsT0FBT0Q7WUFDVDs7O1lBRUEvRCxLQUFBQTttQkFBQUEsU0FBQUEsYUFBYTtnQkFDWCxJQUFNaUUsYUFBYSxJQUFJLENBQUNDLGFBQWEsSUFDL0IsQUFBRUMsUUFBVUYsV0FBVkUsT0FDRnBFLFVBQVVvRSxPQUFRLEdBQUc7Z0JBRTNCLE9BQU9wRTtZQUNUOzs7WUFFQVIsS0FBQUE7bUJBQUFBLFNBQUFBLGVBQWU7Z0JBQ2IsSUFBTTBFLGFBQWEsSUFBSSxDQUFDQyxhQUFhLElBQy9CNUUsWUFBWThFLGtCQUFTLENBQUNDLGNBQWMsQ0FBQ0o7Z0JBRTNDLE9BQU8zRTtZQUNUOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBLHFCQUFxQjtnQkFDbkIsSUFBTUksVUFBVSxJQUFJLENBQUNDLFVBQVUsSUFDekJWLFlBQVksSUFBSSxDQUFDQyxZQUFZLElBQzdCK0UsY0FBY2hGLFVBQVVpRixjQUFjLElBQ3RDQyxnQkFBZ0JsRixVQUFVbUYsZ0JBQWdCLElBQzFDQyxRQUFRRixlQUNSRyxNQUFNTCxhQUNONUUsa0JBQWtCSyxRQUFRNkUsS0FBSyxDQUFDRixPQUFPQztnQkFFN0MsT0FBT2pGO1lBQ1Q7OztZQUVBK0MsS0FBQUE7bUJBQUFBLFNBQUFBLG9CQUFvQjtnQkFDbEIsSUFBTTFDLFVBQVUsSUFBSSxDQUFDQyxVQUFVLElBQ3pCcUMsa0JBQWtCLElBQUksQ0FBQ0Msa0JBQWtCLElBQ3pDdUMseUJBQTBCOUUsWUFBWXNDLGlCQUN0Q0csaUJBQWlCLENBQUNxQztnQkFFeEIsT0FBT3JDO1lBQ1Q7OztZQUVBSixLQUFBQTttQkFBQUEsU0FBQUEsc0JBQXNCO2dCQUNwQixJQUFNOUMsWUFBWSxJQUFJLENBQUNDLFlBQVksSUFDN0J1RCxvQkFBb0IsSUFBSSxDQUFDZ0Msb0JBQW9CLElBQzdDQyw2QkFBNkJ6RixVQUFVMEYsU0FBUyxDQUFDbEMsb0JBQ2pEeEIsbUJBQW1CLENBQUN5RCw0QkFBNEIsR0FBRztnQkFFekQsT0FBT3pEO1lBQ1Q7OztZQUVBaUIsS0FBQUE7bUJBQUFBLFNBQUFBLFdBQVd4QyxPQUFPLEVBQTZCO29CQUEzQmdELHFCQUFBQSxpRUFBcUIsSUFBSTtnQkFDM0MsSUFBTW9CLFFBQVFwRSxTQUNSa0UsYUFBYSxJQUFJLENBQUNDLGFBQWE7Z0JBRXJDZSxPQUFPQyxNQUFNLENBQUNqQixZQUFZO29CQUN4QkUsT0FBQUE7Z0JBQ0Y7Z0JBRUEsSUFBSXBCLG9CQUFvQjtvQkFDdEIsSUFBTVYsa0JBQWtCdEMsU0FBVSxHQUFHO29CQUVyQyxJQUFJLENBQUNnRCxrQkFBa0IsQ0FBQ1Y7Z0JBQzFCLENBQUM7WUFDSDs7O1lBRUE4QyxLQUFBQTttQkFBQUEsU0FBQUEsYUFBYTdGLFNBQVMsRUFBK0I7b0JBQTdCMEQsdUJBQUFBLGlFQUF1QixJQUFJO2dCQUNqRCxJQUFNb0MseUJBQXlCOUYsVUFBVW1GLGdCQUFnQixJQUNuRFksdUJBQXVCL0YsVUFBVWlGLGNBQWMsSUFDL0NlLGlCQUFpQkYsd0JBQ2pCRyxlQUFlRixzQkFDZnBCLGFBQWEsSUFBSSxDQUFDQyxhQUFhO2dCQUVyQ0QsV0FBV3VCLGlCQUFpQixDQUFDRixnQkFBZ0JDO2dCQUU3QyxJQUFJdkMsc0JBQXNCO29CQUN4QixJQUFNRixvQkFBb0J4RCxXQUFZLEdBQUc7b0JBRXpDLElBQUksQ0FBQzBELG9CQUFvQixDQUFDRjtnQkFDNUIsQ0FBQztZQUNIOzs7WUFFQWQsS0FBQUE7bUJBQUFBLFNBQUFBLFNBQVM1QyxLQUFLLEVBQUVDLE9BQU8sRUFBRTtnQkFDdkIsSUFBSWtCLGlCQUFpQixLQUFLO2dCQUUxQixJQUFRa0YsVUFBK0JyRyxNQUEvQnFHLFNBQVNDLFVBQXNCdEcsTUFBdEJzRyxTQUFTQyxXQUFhdkcsTUFBYnVHO2dCQUUxQixJQUFJRixXQUFXQyxTQUFTO29CQUN0QixJQUFNdEYsWUFBWXVGLFdBQ0UsSUFBSSxDQUFDekcsVUFBVSxDQUFDMEcsSUFBSSxLQUNsQixJQUFJLENBQUMxRyxVQUFVLENBQUMyRyxJQUFJLEVBQUU7b0JBRTVDLElBQUl6RixjQUFjLElBQUksRUFBRTt3QkFDdEIsSUFBTWUsV0FBVyxLQUFLLEVBQ2hCQyxZQUFZZSw2QkFBaUIsRUFDN0I3QyxZQUFZOEUsa0JBQVMsQ0FBQzBCLGFBQWEsQ0FBQzFGLFlBQ3BDNEMsdUJBQXVCLEtBQUs7d0JBRWxDLElBQUksQ0FBQzNDLGNBQWMsQ0FBQ0Q7d0JBRXBCLElBQUksQ0FBQytFLFlBQVksQ0FBQzdGLFdBQVcwRDt3QkFFN0IsSUFBSSxDQUFDMUMsbUJBQW1CLENBQUNsQixPQUFPQyxTQUFTOEIsVUFBVUM7b0JBQ3JELENBQUM7b0JBRURiLGlCQUFpQixJQUFJO2dCQUN2QixDQUFDO2dCQUVELE9BQU9BO1lBQ1Q7OztZQUVBd0YsS0FBQUE7bUJBQUFBLFNBQUFBLFVBQVVwRCxVQUFVLEVBQUU7Z0JBQ3BCLElBQUk1QyxVQUFVLElBQUksQ0FBQ0MsVUFBVSxJQUN6QlYsWUFBWSxJQUFJLENBQUNDLFlBQVk7Z0JBRWpDLElBQU15RyxxQkFBcUJDLElBQUFBLGdCQUFnQixFQUFDbEcsU0FBUzRDLGFBQy9DdUQsdUJBQXVCQyxJQUFBQSxtQkFBa0IsRUFBQzdHLFdBQVdxRDtnQkFFM0Q1QyxVQUFVaUcsb0JBQW9CLEdBQUc7Z0JBRWpDMUcsWUFBWTRHLHNCQUFzQixHQUFHO2dCQUVyQyxJQUFNbkQscUJBQXFCLEtBQUssRUFDMUJDLHVCQUF1QixLQUFLO2dCQUVsQyxJQUFJLENBQUNULFVBQVUsQ0FBQ3hDLFNBQVNnRDtnQkFFekIsSUFBSSxDQUFDb0MsWUFBWSxDQUFDN0YsV0FBVzBEO2dCQUU3QixJQUFJLENBQUM5RCxVQUFVLENBQUM2RyxTQUFTLENBQUNwRDtnQkFFMUIsSUFBTXZELFFBQVEsSUFBSSxFQUNaQyxVQUFVLElBQUksRUFDZDhCLFdBQVcsS0FBSyxFQUNoQkMsWUFBWWUsNkJBQWlCO2dCQUVuQyxJQUFJLENBQUM3QixtQkFBbUIsQ0FBQ2xCLE9BQU9DLFNBQVM4QixVQUFVQztZQUNyRDs7O1lBRUFmLEtBQUFBO21CQUFBQSxTQUFBQSxlQUFlRCxTQUFTLEVBQUU7Z0JBQ3hCLElBQUlMLFVBQVUsSUFBSSxDQUFDQyxVQUFVLElBQ3pCVixZQUFZLElBQUksQ0FBQ0MsWUFBWTtnQkFFakMsSUFBTXlHLHFCQUFxQjVGLFVBQVU2RixnQkFBZ0IsQ0FBQ2xHLFVBQ2hEbUcsdUJBQXVCOUYsVUFBVStGLGtCQUFrQixDQUFDN0c7Z0JBRTFEUyxVQUFVaUcsb0JBQW9CLEdBQUc7Z0JBRWpDMUcsWUFBWTRHLHNCQUFzQixHQUFHO2dCQUVyQyxJQUFNbkQscUJBQXFCLEtBQUssRUFDMUJDLHVCQUF1QixLQUFLO2dCQUVsQyxJQUFJLENBQUNULFVBQVUsQ0FBQ3hDLFNBQVNnRDtnQkFFekIsSUFBSSxDQUFDb0MsWUFBWSxDQUFDN0YsV0FBVzBEO1lBQy9COzs7WUFFQW9ELEtBQUFBO21CQUFBQSxTQUFBQSxXQUFXO2dCQUNULElBQUksQ0FBQ0MsRUFBRSxDQUFDQywwQkFBYyxFQUFFLElBQUksQ0FBQ25ILFVBQVU7Z0JBRXZDLElBQUksQ0FBQ2tILEVBQUUsQ0FBQ0UsMkJBQWUsRUFBRSxJQUFJLENBQUMvRixXQUFXO2dCQUV6QyxJQUFJLENBQUM2RixFQUFFLENBQUNHLDRCQUFnQixFQUFFLElBQUksQ0FBQy9GLFlBQVk7Z0JBRTNDLElBQUksQ0FBQzRGLEVBQUUsQ0FBQ0ksNEJBQWdCLEVBQUUsSUFBSSxDQUFDeEYsWUFBWTtnQkFFM0MsSUFBSSxDQUFDb0YsRUFBRSxDQUFDaEYsMkJBQWUsRUFBRSxJQUFJLENBQUNILFdBQVc7Z0JBRXpDLElBQUksQ0FBQ21GLEVBQUUsQ0FBQzVFLDRCQUFnQixFQUFFLElBQUksQ0FBQ0YsWUFBWTtnQkFFM0MsSUFBSSxDQUFDOEUsRUFBRSxDQUFDMUUsNkJBQWlCLEVBQUUsSUFBSSxDQUFDRCxhQUFhO2dCQUU3QyxJQUFJLENBQUMyRSxFQUFFLENBQUNLLDhCQUFrQixFQUFFLElBQUksQ0FBQzdFLGNBQWM7Z0JBRS9DLElBQUksQ0FBQ3dFLEVBQUUsQ0FBQ00sa0NBQXNCLEVBQUUsSUFBSSxDQUFDMUUsa0JBQWtCO2dCQUV2RDJFLGNBQVEsQ0FBQ1AsRUFBRSxDQUFDUSxzQ0FBMEIsRUFBRSxJQUFJLENBQUMzRSxtQkFBbUI7Z0JBRWhFLElBQUksQ0FBQzRFLFFBQVEsQ0FBQztZQUNoQjs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxhQUFhO2dCQUNYLElBQUksQ0FBQ0MsR0FBRyxDQUFDViwwQkFBYyxFQUFFLElBQUksQ0FBQ25ILFVBQVU7Z0JBRXhDLElBQUksQ0FBQzZILEdBQUcsQ0FBQ1QsMkJBQWUsRUFBRSxJQUFJLENBQUMvRixXQUFXO2dCQUUxQyxJQUFJLENBQUN3RyxHQUFHLENBQUNSLDRCQUFnQixFQUFFLElBQUksQ0FBQy9GLFlBQVk7Z0JBRTVDLElBQUksQ0FBQ3VHLEdBQUcsQ0FBQ1AsNEJBQWdCLEVBQUUsSUFBSSxDQUFDeEYsWUFBWTtnQkFFNUMsSUFBSSxDQUFDK0YsR0FBRyxDQUFDM0YsMkJBQWUsRUFBRSxJQUFJLENBQUNILFdBQVc7Z0JBRTFDLElBQUksQ0FBQzhGLEdBQUcsQ0FBQ3ZGLDRCQUFnQixFQUFFLElBQUksQ0FBQ0YsWUFBWTtnQkFFNUMsSUFBSSxDQUFDeUYsR0FBRyxDQUFDckYsNkJBQWlCLEVBQUUsSUFBSSxDQUFDRCxhQUFhO2dCQUU5QyxJQUFJLENBQUNzRixHQUFHLENBQUNOLDhCQUFrQixFQUFFLElBQUksQ0FBQzdFLGNBQWM7Z0JBRWhELElBQUksQ0FBQ21GLEdBQUcsQ0FBQ0wsa0NBQXNCLEVBQUUsSUFBSSxDQUFDMUUsa0JBQWtCO2dCQUV4RDJFLGNBQVEsQ0FBQ0ksR0FBRyxDQUFDSCxzQ0FBMEIsRUFBRSxJQUFJLENBQUMzRSxtQkFBbUI7Z0JBRWpFLElBQUksQ0FBQytFLFdBQVcsQ0FBQztZQUNuQjs7O1lBRUEzRSxLQUFBQTttQkFBQUEsU0FBQUEscUJBQXFCO2dCQUNuQixJQUFNLEFBQUVELGtCQUFvQixJQUFJLENBQUM2RSxRQUFRLEdBQWpDN0U7Z0JBRVIsT0FBT0E7WUFDVDs7O1lBRUF5QyxLQUFBQTttQkFBQUEsU0FBQUEsdUJBQXVCO2dCQUNyQixJQUFNLEFBQUVoQyxvQkFBc0IsSUFBSSxDQUFDb0UsUUFBUSxHQUFuQ3BFO2dCQUVSLE9BQU9BO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsbUJBQW1CVixlQUFlLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQzhFLFdBQVcsQ0FBQztvQkFDZjlFLGlCQUFBQTtnQkFDRjtZQUNGOzs7WUFFQVcsS0FBQUE7bUJBQUFBLFNBQUFBLHFCQUFxQkYsaUJBQWlCLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQ3FFLFdBQVcsQ0FBQztvQkFDZnJFLG1CQUFBQTtnQkFDRjtZQUNGOzs7WUFFQXNFLEtBQUFBO21CQUFBQSxTQUFBQSxXQUFXO2dCQUNULElBQWdELG1CQUFBLElBQUksQ0FBQ0MsVUFBVSxFQUF2REMsU0FBd0MsaUJBQXhDQSxRQUFRQyxVQUFnQyxpQkFBaENBLFNBQVNDLFdBQXVCLGlCQUF2QkEsVUFBVUMsV0FBYSxpQkFBYkEsVUFDN0J2RyxjQUFjb0csUUFDZC9GLGVBQWVnRyxTQUNmN0YsZ0JBQWdCOEYsVUFDaEJFLGdCQUFnQkQsVUFBVSxHQUFHO2dCQUVuQyxJQUFJLENBQUNFLGtCQUFrQjtnQkFFdkJ6RyxlQUFlLElBQUksQ0FBQ29HLE1BQU0sQ0FBQ3BHLGFBQWEsSUFBSTtnQkFFNUNLLGdCQUFnQixJQUFJLENBQUNnRyxPQUFPLENBQUNoRyxjQUFjLElBQUk7Z0JBRS9DRyxpQkFBaUIsSUFBSSxDQUFDOEYsUUFBUSxDQUFDOUYsZUFBZSxJQUFJO2dCQUVsRGdHLGlCQUFpQixJQUFJLENBQUNELFFBQVEsQ0FBQ0MsZUFBZSxJQUFJO1lBQ3BEOzs7WUFFQUUsS0FBQUE7bUJBQUFBLFNBQUFBLGNBQWM7Z0JBQ1osSUFBZ0QsbUJBQUEsSUFBSSxDQUFDUCxVQUFVLEVBQXZEQyxTQUF3QyxpQkFBeENBLFFBQVFDLFVBQWdDLGlCQUFoQ0EsU0FBU0MsV0FBdUIsaUJBQXZCQSxVQUFVQyxXQUFhLGlCQUFiQSxVQUMzQnZHLGNBQWNvRyxRQUNkL0YsZUFBZWdHLFNBQ2Y3RixnQkFBZ0I4RixVQUNoQkUsZ0JBQWdCRCxVQUFVLEdBQUc7Z0JBRXJDdkcsZUFBZSxJQUFJLENBQUMyRyxPQUFPLENBQUMzRyxhQUFhLElBQUk7Z0JBRTdDSyxnQkFBZ0IsSUFBSSxDQUFDdUcsUUFBUSxDQUFDdkcsY0FBYyxJQUFJO2dCQUVoREcsaUJBQWlCLElBQUksQ0FBQ3FHLFNBQVMsQ0FBQ3JHLGVBQWUsSUFBSTtnQkFFbkRnRyxpQkFBaUIsSUFBSSxDQUFDTSxTQUFTLENBQUNOLGVBQWUsSUFBSTtnQkFFbkQsSUFBTTNELFNBQVMsSUFBSSxDQUFDRCxRQUFRO2dCQUU1QixJQUFJQyxRQUFRO29CQUNWLElBQUksQ0FBQ2dELFVBQVU7Z0JBQ2pCLENBQUM7WUFDSDs7O1lBRUFZLEtBQUFBO21CQUFBQSxTQUFBQSxxQkFBcUI7Z0JBQ25CLElBQU01SCxVQUFVLElBQUksQ0FBQ0MsVUFBVSxJQUN6QlYsWUFBWSxJQUFJLENBQUNDLFlBQVksSUFDN0I4QyxrQkFBa0J0QyxTQUNsQitDLG9CQUFvQnhELFdBQVksR0FBRztnQkFFekMsSUFBSSxDQUFDeUQsa0JBQWtCLENBQUNWO2dCQUV4QixJQUFJLENBQUNXLG9CQUFvQixDQUFDRjtZQUM1Qjs7O1lBRUFtRixLQUFBQTttQkFBQUEsU0FBQUEsa0JBQWtCO2dCQUNoQixJQUFNNUYsa0JBQWtCLElBQUksRUFDdEJTLG9CQUFvQixJQUFJO2dCQUU5QixJQUFJLENBQUNvRixRQUFRLENBQUM7b0JBQ1o3RixpQkFBQUE7b0JBQ0FTLG1CQUFBQTtnQkFDRjtZQUNGOzs7WUFFQXFGLEtBQUFBO21CQUFBQSxTQUFBQSxhQUFhO2dCQUNYLElBQUksQ0FBQ0YsZUFBZTtZQUN0Qjs7OztZQWVPRyxLQUFBQTttQkFBUCxTQUFPQSxVQUFVQyxLQUFLLEVBQUVoQixVQUFVLEVBQXlCO2dCQUF2QixJQUFBLElBQUEsT0FBQSxVQUFBLFFBQUEsQUFBRy9ELHFCQUFILFVBQUEsT0FBQSxJQUFBLE9BQUEsS0FBcUIsR0FBckIsT0FBQSxHQUFBLE9BQUEsTUFBQSxPQUFBO29CQUFHQSxtQkFBSCxPQUFBLEtBQUEsU0FBQSxDQUFBLEtBQXFCO2dCQUFEO29CQUlqQ2dGO2dCQUhyQixJQUFNdEosVUFBVSxLQUFLLEVBQ2ZDLFdBQVcsS0FBSyxFQUNoQkMsYUFBYXFKLG1CQUFVLENBQUNDLFdBQVcsSUFDbkNDLGVBQWVILENBQUFBLFdBQUFBLGFBQU8sRUFBQ0YsU0FBUyxDQUFqQkUsTUFBQUEsVUFBQUE7b0JBQWtCRDtvQkFBT2hCO29CQUFZckk7b0JBQVNDO29CQUFVQztpQkFBa0MsQ0FBMUZvSixPQUFvRSxtQkFBR2hGO2dCQUU1RixPQUFPbUY7WUFDVDs7O1dBNWhCbUIzSjttQkFBcUJ3SixhQUFPO0FBd2dCL0MsZ0JBeGdCbUJ4SixjQXdnQlo0SixXQUFVO0FBRWpCLGdCQTFnQm1CNUosY0EwZ0JaNkoscUJBQW9CO0lBQ3pCO0lBQ0E7SUFDQTtJQUNBO0NBQ0Q7QUFFRCxnQkFqaEJtQjdKLGNBaWhCWjhKLHFCQUFvQjtJQUN6QkMsV0FBVztBQUNiO0FBWUY1RCxPQUFPQyxNQUFNLENBQUNwRyxhQUFhZ0ssU0FBUyxFQUFFQyxjQUFXO0FBRWpELFNBQVN2SCxNQUFNd0gsSUFBSSxFQUFFO0lBQ25CQyxXQUFXRCxNQUFNO0FBQ25CIn0=
632
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yaWNoVGV4dGFyZWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyBFbGVtZW50LCBkb2N1bWVudCB9IGZyb20gXCJlYXN5XCI7XHJcblxyXG5pbXBvcnQgU2VsZWN0aW9uIGZyb20gXCIuL3NlbGVjdGlvblwiXHJcbmltcG9ydCBVbmRvQnVmZmVyIGZyb20gXCIuL3VuZG9CdWZmZXJcIjtcclxuaW1wb3J0IGV2ZW50TWl4aW5zIGZyb20gXCIuL21peGlucy9ldmVudFwiO1xyXG5pbXBvcnQgSW5zZXJ0T3BlcmF0aW9uIGZyb20gXCIuL29wZXJhdGlvbi9pbnNlcnRcIjtcclxuaW1wb3J0IERlbGV0ZU9wZXJhdGlvbiBmcm9tIFwiLi9vcGVyYXRpb24vZGVsZXRlXCI7XHJcbmltcG9ydCB0cmFuc2Zvcm1Db250ZW50IGZyb20gXCIuL3RyYW5zZm9ybS9jb250ZW50XCI7XHJcbmltcG9ydCB0cmFuc2Zvcm1TZWxlY3Rpb24gZnJvbSBcIi4vdHJhbnNmb3JtL3NlbGVjdGlvblwiO1xyXG5pbXBvcnQgZ2VuZXJhdGVPcGVyYXRpb25zIGZyb20gXCIuL29wZXJhdGlvbnMvZ2VuZXJhdGVcIjtcclxuXHJcbmltcG9ydCB7IFRFWFQsIEVNUFRZX1NUUklORyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBaX0tFWV9DT0RFIH0gZnJvbSBcIi4va2V5Q29kZXNcIjtcclxuaW1wb3J0IHsgQ1VUX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIENPUFlfRVZFTlRfVFlQRSxcclxuICAgICAgICAgQkxVUl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBQQVNURV9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBJTlBVVF9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBGT0NVU19FVkVOVF9UWVBFLFxyXG4gICAgICAgICBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICAgU0NST0xMX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIEtFWURPV05fRVZFTlRfVFlQRSxcclxuICAgICAgICAgQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSxcclxuICAgICAgICAgU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUgfSBmcm9tIFwiLi9ldmVudFR5cGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSaWNoVGV4dGFyZWEgZXh0ZW5kcyBFbGVtZW50IHtcclxuICBjb25zdHJ1Y3RvcihzZWxlY3RvciwgZm9jdXNlZCwgcmVhZE9ubHksIHVuZG9CdWZmZXIpIHtcclxuICAgIHN1cGVyKHNlbGVjdG9yKTtcclxuXHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmb2N1c2VkO1xyXG4gICAgdGhpcy5yZWFkT25seSA9IHJlYWRPbmx5O1xyXG4gICAgdGhpcy51bmRvQnVmZmVyID0gdW5kb0J1ZmZlcjtcclxuICB9XHJcblxyXG4gIGlzRm9jdXNlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvY3VzZWQ7XHJcbiAgfVxyXG5cclxuICBpc1JlYWRPbmx5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMucmVhZE9ubHk7XHJcbiAgfVxyXG5cclxuICBnZXRVbmRvQnVmZmVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudW5kb0J1ZmZlcjtcclxuICB9XHJcblxyXG4gIHNldEZvY3VzZWQoZm9jdXNlZCkge1xyXG4gICAgdGhpcy5mb2N1c2VkID0gZm9jdXNlZDtcclxuICB9XHJcblxyXG4gIHNldFJlYWRPbmx5KHJlYWRPbmx5KSB7XHJcbiAgICB0aGlzLnJlYWRPbmx5ID0gcmVhZE9ubHk7XHJcbiAgfVxyXG5cclxuICBjdXRIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW1wdHkgPSBzZWxlY3Rpb24uaXNFbXB0eSgpO1xyXG5cclxuICAgIGlmIChzZWxlY3Rpb25FbXB0eSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0ZWRDb250ZW50ID0gdGhpcy5nZXRTZWxlY3RlZENvbnRlbnQoKTtcclxuXHJcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChzZWxlY3RlZENvbnRlbnQpO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIGRlbGV0ZU9wZXJhdGlvbiA9IERlbGV0ZU9wZXJhdGlvbi5mcm9tQ29udGVudEFuZFNlbGVjdGlvbihjb250ZW50LCBzZWxlY3Rpb24pLFxyXG4gICAgICAgICAgb3BlcmF0aW9uID0gZGVsZXRlT3BlcmF0aW9uOyAgLy8vXHJcblxyXG4gICAgdGhpcy5hcHBseU9wZXJhdGlvbihvcGVyYXRpb24pO1xyXG5cclxuICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCk7XHJcblxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIGNvcHlIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW1wdHkgPSBzZWxlY3Rpb24uaXNFbXB0eSgpO1xyXG5cclxuICAgIGlmIChzZWxlY3Rpb25FbXB0eSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0ZWRDb250ZW50ID0gdGhpcy5nZXRTZWxlY3RlZENvbnRlbnQoKTtcclxuXHJcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChzZWxlY3RlZENvbnRlbnQpO1xyXG5cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBwYXN0ZUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IHsgY2xpcGJvYXJkRGF0YSB9ID0gZXZlbnQsXHJcbiAgICAgICAgICB0ZXh0RGF0YSA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YShURVhUKTtcclxuXHJcbiAgICBpZiAodGV4dERhdGEgPT09IEVNUFRZX1NUUklORykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkVtcHR5ID0gc2VsZWN0aW9uLmlzRW1wdHkoKTtcclxuXHJcbiAgICBpZiAoIXNlbGVjdGlvbkVtcHR5KSB7XHJcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgICAgZGVsZXRlT3BlcmF0aW9uID0gRGVsZXRlT3BlcmF0aW9uLmZyb21Db250ZW50QW5kU2VsZWN0aW9uKGNvbnRlbnQsIHNlbGVjdGlvbiksXHJcbiAgICAgICAgICAgIG9wZXJhdGlvbiA9IGRlbGV0ZU9wZXJhdGlvbjtcclxuXHJcbiAgICAgIHRoaXMuYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gdGV4dERhdGEsIC8vL1xyXG4gICAgICAgICAgaW5zZXJ0T3BlcmF0aW9uID0gSW5zZXJ0T3BlcmF0aW9uLmZyb21Db250ZW50QW5kU2VsZWN0aW9uKGNvbnRlbnQsIHNlbGVjdGlvbiksXHJcbiAgICAgICAgICBvcGVyYXRpb24gPSBpbnNlcnRPcGVyYXRpb247ICAvLy9cclxuXHJcbiAgICB0aGlzLmFwcGx5T3BlcmF0aW9uKG9wZXJhdGlvbik7XHJcblxyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgaW5wdXRIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgYmx1ckhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IHVuZG9hYmxlID0gdHJ1ZSxcclxuICAgICAgICAgIGV2ZW50VHlwZSA9IEJMVVJfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgdW5kb2FibGUsIGV2ZW50VHlwZSwgc2VsZWN0aW9uQ2hhbmdlZCk7XHJcbiAgfVxyXG5cclxuICBmb2N1c0hhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XHJcblxyXG4gICAgZGVmZXIoKCkgPT4ge1xyXG4gICAgICBjb25zdCB1bmRvYWJsZSA9IHRydWUsXHJcbiAgICAgICAgICAgIGV2ZW50VHlwZSA9IEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCB1bmRvYWJsZSwgZXZlbnRUeXBlLCBzZWxlY3Rpb25DaGFuZ2VkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gU0NST0xMX0VWRU5UX1RZUEU7XHJcblxyXG4gICAgdGhpcy5jYWxsSGFuZGxlcnMoZXZlbnRUeXBlLCBldmVudCwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBrZXlEb3duSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgbGV0IHByZXZlbnREZWZhdWx0ID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgeyBrZXlDb2RlIH0gPSBldmVudDtcclxuXHJcbiAgICBzd2l0Y2ggKGtleUNvZGUpIHtcclxuICAgICAgY2FzZSBaX0tFWV9DT0RFOlxyXG4gICAgICAgIHByZXZlbnREZWZhdWx0ID0gdGhpcy56S2V5RG93bihldmVudCwgZWxlbWVudCk7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwcmV2ZW50RGVmYXVsdCkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGRlZmVyKCgpID0+IHtcclxuICAgICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY29udGV4dG1lbnVIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q2hhbmdlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuZm9jdXNlZCkge1xyXG4gICAgICBlbGVtZW50ID0gdGhpczsgLy8vXHJcblxyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW50ZXJtZWRpYXRlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgdW5kb2FibGUgPSB0cnVlLCBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRSwgc2VsZWN0aW9uQ2hhbmdlZCA9IHRoaXMuaGFzU2VsZWN0aW9uQ2hhbmdlZCgpKSA9PiB7XHJcbiAgICBpZiAodGhpcy5yZWFkT25seSkge1xyXG4gICAgICBjb25zdCBwcmV2aW91c0NvbnRlbnQgPSB0aGlzLmdldFByZXZpb3VzQ29udGVudCgpLFxyXG4gICAgICAgICAgICBjb250ZW50ID0gcHJldmlvdXNDb250ZW50OyAgLy8vXHJcblxyXG4gICAgICB0aGlzLnNldENvbnRlbnQoY29udGVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIGNvbnRlbnRDaGFuZ2VkID0gdGhpcy5oYXNDb250ZW50Q2hhbmdlZCgpO1xyXG5cclxuICAgIGlmIChjb250ZW50Q2hhbmdlZCAmJiB1bmRvYWJsZSkge1xyXG4gICAgICBjb25zdCBwcmV2aW91c0NvbnRlbnQgPSB0aGlzLmdldFByZXZpb3VzQ29udGVudCgpLFxyXG4gICAgICAgICAgICBvcGVyYXRpb25zID0gZ2VuZXJhdGVPcGVyYXRpb25zKHByZXZpb3VzQ29udGVudCwgY29udGVudCk7XHJcblxyXG4gICAgICB0aGlzLnVuZG9CdWZmZXIuYWRkT3BlcmF0aW9ucyhvcGVyYXRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29udGVudENoYW5nZWQgfHwgc2VsZWN0aW9uQ2hhbmdlZCkge1xyXG4gICAgICB0aGlzLmNhbGxIYW5kbGVycyhldmVudFR5cGUsIGV2ZW50LCBlbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwcmV2aW91c0NvbnRlbnQgPSBjb250ZW50LCAgLy8vXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG5cclxuICAgIHRoaXMuc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBjYWxsSGFuZGxlcnMoZXZlbnRUeXBlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcclxuICAgIGNvbnN0IGV2ZW50TGlzdGVuZXJzID0gdGhpcy5maW5kRXZlbnRMaXN0ZW5lcnMoZXZlbnRUeXBlKTtcclxuXHJcbiAgICBldmVudExpc3RlbmVycy5mb3JFYWNoKChldmVudExpc3RlbmVyKSA9PiB7XHJcbiAgICAgIGxldCB7IGVsZW1lbnQgfSA9IGV2ZW50TGlzdGVuZXI7XHJcblxyXG4gICAgICBjb25zdCB7IGhhbmRsZXIgfSA9IGV2ZW50TGlzdGVuZXIsXHJcbiAgICAgICAgICAgIGhhbmRsZXJFbGVtZW50ID0gZWxlbWVudDsgLy8vXHJcblxyXG4gICAgICBlbGVtZW50ID0gdGhpczsgLy8vXHJcblxyXG4gICAgICBpZiAoIChoYW5kbGVyICE9PSB0aGlzLmN1dEhhbmRsZXIpXHJcbiAgICAgICAgJiYgKGhhbmRsZXIgIT09IHRoaXMuY29weUhhbmRsZXIpXHJcbiAgICAgICAgJiYgKGhhbmRsZXIgIT09IHRoaXMucGFzdGVIYW5kbGVyKVxyXG4gICAgICAgICYmIChoYW5kbGVyICE9PSB0aGlzLmlucHV0SGFuZGxlcilcclxuICAgICAgICAmJiAoaGFuZGxlciAhPT0gdGhpcy5ibHVySGFuZGxlcilcclxuICAgICAgICAmJiAoaGFuZGxlciAhPT0gdGhpcy5mb2N1c0hhbmRsZXIpXHJcbiAgICAgICAgJiYgKGhhbmRsZXIgIT09IHRoaXMuc2Nyb2xsSGFuZGxlcilcclxuICAgICAgICAmJiAoaGFuZGxlciAhPT0gdGhpcy5rZXlEb3duSGFuZGxlcilcclxuICAgICAgICAmJiAoaGFuZGxlciAhPT0gdGhpcy5jb250ZXh0bWVudUhhbmRsZXIpXHJcbiAgICAgICAgJiYgKGhhbmRsZXIgIT09IHRoaXMuc2VsZWN0Q2hhbmdlSGFuZGxlcikgKSB7XHJcblxyXG4gICAgICAgIGhhbmRsZXIuY2FsbChoYW5kbGVyRWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCBlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpc0FjdGl2ZSgpIHtcclxuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuaGFzQ2xhc3MoXCJhY3RpdmVcIik7XHJcblxyXG4gICAgcmV0dXJuIGFjdGl2ZTtcclxuICB9XHJcblxyXG4gIGdldENvbnRlbnQoKSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCksXHJcbiAgICAgICAgICB7IHZhbHVlIH0gPSBkb21FbGVtZW50LFxyXG4gICAgICAgICAgY29udGVudCA9IHZhbHVlOyAgLy8vXHJcblxyXG4gICAgcmV0dXJuIGNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3Rpb24oKSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCksXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSBTZWxlY3Rpb24uZnJvbURPTUVsZW1lbnQoZG9tRWxlbWVudCk7XHJcblxyXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkQ29udGVudCgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzdGFydCA9IHN0YXJ0UG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIGVuZCA9IGVuZFBvc2l0aW9uLCAgLy8vXHJcbiAgICAgICAgICBzZWxlY3RlZENvbnRlbnQgPSBjb250ZW50LnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG5cclxuICAgIHJldHVybiBzZWxlY3RlZENvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBoYXNDb250ZW50Q2hhbmdlZCgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIHByZXZpb3VzQ29udGVudCA9IHRoaXMuZ2V0UHJldmlvdXNDb250ZW50KCksXHJcbiAgICAgICAgICBjb250ZW50UHJldmlvdXNDb250ZW50ID0gKGNvbnRlbnQgPT09IHByZXZpb3VzQ29udGVudCksXHJcbiAgICAgICAgICBjb250ZW50Q2hhbmdlZCA9ICFjb250ZW50UHJldmlvdXNDb250ZW50O1xyXG5cclxuICAgIHJldHVybiBjb250ZW50Q2hhbmdlZDtcclxuICB9XHJcblxyXG4gIGhhc1NlbGVjdGlvbkNoYW5nZWQoKSB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3Rpb24gPSB0aGlzLmdldFByZXZpb3VzU2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25QcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbi5pc0VxdWFsVG8ocHJldmlvdXNTZWxlY3Rpb24pLFxyXG4gICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9ICFzZWxlY3Rpb25QcmV2aW91c1NlbGVjdGlvbjsgLy8vXHJcblxyXG4gICAgcmV0dXJuIHNlbGVjdGlvbkNoYW5nZWQ7XHJcbiAgfVxyXG5cclxuICBzZXRDb250ZW50KGNvbnRlbnQsIHNldFByZXZpb3VzQ29udGVudCA9IHRydWUpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gY29udGVudCwgIC8vL1xyXG4gICAgICAgICAgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RE9NRWxlbWVudCgpO1xyXG5cclxuICAgIE9iamVjdC5hc3NpZ24oZG9tRWxlbWVudCwge1xyXG4gICAgICB2YWx1ZVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHNldFByZXZpb3VzQ29udGVudCkge1xyXG4gICAgICBjb25zdCBwcmV2aW91c0NvbnRlbnQgPSBjb250ZW50OyAgLy8vXHJcblxyXG4gICAgICB0aGlzLnNldFByZXZpb3VzQ29udGVudChwcmV2aW91c0NvbnRlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0aW9uKHNlbGVjdGlvbiwgc2V0UHJldmlvdXNTZWxlY3Rpb24gPSB0cnVlKSB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb25TdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldFN0YXJ0UG9zaXRpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkVuZFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldEVuZFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25TdGFydCA9IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIHNlbGVjdGlvbkVuZCA9IHNlbGVjdGlvbkVuZFBvc2l0aW9uLCAgLy8vXHJcbiAgICAgICAgICBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCk7XHJcblxyXG4gICAgZG9tRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKTtcclxuXHJcbiAgICBpZiAoc2V0UHJldmlvdXNTZWxlY3Rpb24pIHtcclxuICAgICAgY29uc3QgcHJldmlvdXNTZWxlY3Rpb24gPSBzZWxlY3Rpb247ICAvLy9cclxuXHJcbiAgICAgIHRoaXMuc2V0UHJldmlvdXNTZWxlY3Rpb24ocHJldmlvdXNTZWxlY3Rpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgektleURvd24oZXZlbnQsIGVsZW1lbnQpIHtcclxuICAgIGxldCBwcmV2ZW50RGVmYXVsdCA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IHsgY3RybEtleSwgbWV0YUtleSwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG5cclxuICAgIGlmIChjdHJsS2V5IHx8IG1ldGFLZXkpIHtcclxuICAgICAgY29uc3Qgb3BlcmF0aW9uID0gc2hpZnRLZXkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudW5kb0J1ZmZlci5yZWRvKCkgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51bmRvQnVmZmVyLnVuZG8oKTtcclxuXHJcbiAgICAgIGlmIChvcGVyYXRpb24gIT09IG51bGwpIHtcclxuICAgICAgICBjb25zdCB1bmRvYWJsZSA9IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHNlbGVjdGlvbiA9IFNlbGVjdGlvbi5mcm9tT3BlcmF0aW9uKG9wZXJhdGlvbiksXHJcbiAgICAgICAgICAgICAgc2V0UHJldmlvdXNTZWxlY3Rpb24gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5hcHBseU9wZXJhdGlvbihvcGVyYXRpb24pO1xyXG5cclxuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihzZWxlY3Rpb24sIHNldFByZXZpb3VzU2VsZWN0aW9uKTtcclxuXHJcbiAgICAgICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCB1bmRvYWJsZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHByZXZlbnREZWZhdWx0ID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcHJldmVudERlZmF1bHQ7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm0ob3BlcmF0aW9ucykge1xyXG4gICAgbGV0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHRyYW5zZm9ybWVkQ29udGVudCA9IHRyYW5zZm9ybUNvbnRlbnQoY29udGVudCwgb3BlcmF0aW9ucyksXHJcbiAgICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHRyYW5zZm9ybVNlbGVjdGlvbihzZWxlY3Rpb24sIG9wZXJhdGlvbnMpO1xyXG5cclxuICAgIGNvbnRlbnQgPSB0cmFuc2Zvcm1lZENvbnRlbnQ7IC8vL1xyXG5cclxuICAgIHNlbGVjdGlvbiA9IHRyYW5zZm9ybWVkU2VsZWN0aW9uOyAvLy9cclxuXHJcbiAgICBjb25zdCBzZXRQcmV2aW91c0NvbnRlbnQgPSBmYWxzZSxcclxuICAgICAgICAgIHNldFByZXZpb3VzU2VsZWN0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5zZXRDb250ZW50KGNvbnRlbnQsIHNldFByZXZpb3VzQ29udGVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbik7XHJcblxyXG4gICAgdGhpcy51bmRvQnVmZmVyLnRyYW5zZm9ybShvcGVyYXRpb25zKTtcclxuXHJcbiAgICBjb25zdCBldmVudCA9IG51bGwsXHJcbiAgICAgICAgICBlbGVtZW50ID0gdGhpcywgLy8vXHJcbiAgICAgICAgICB1bmRvYWJsZSA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgdW5kb2FibGUpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKSB7XHJcbiAgICBsZXQgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XHJcblxyXG4gICAgY29uc3QgdHJhbnNmb3JtZWRDb250ZW50ID0gb3BlcmF0aW9uLnRyYW5zZm9ybUNvbnRlbnQoY29udGVudCksXHJcbiAgICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IG9wZXJhdGlvbi50cmFuc2Zvcm1TZWxlY3Rpb24oc2VsZWN0aW9uKTtcclxuXHJcbiAgICBjb250ZW50ID0gdHJhbnNmb3JtZWRDb250ZW50OyAvLy9cclxuXHJcbiAgICBzZWxlY3Rpb24gPSB0cmFuc2Zvcm1lZFNlbGVjdGlvbjsgLy8vXHJcblxyXG4gICAgY29uc3Qgc2V0UHJldmlvdXNDb250ZW50ID0gZmFsc2UsXHJcbiAgICAgICAgICBzZXRQcmV2aW91c1NlbGVjdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuc2V0Q29udGVudChjb250ZW50LCBzZXRQcmV2aW91c0NvbnRlbnQpO1xyXG5cclxuICAgIHRoaXMuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbiwgc2V0UHJldmlvdXNTZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGUoKSB7XHJcbiAgICB0aGlzLm9uKENVVF9FVkVOVF9UWVBFLCB0aGlzLmN1dEhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub24oQ09QWV9FVkVOVF9UWVBFLCB0aGlzLmNvcHlIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKFBBU1RFX0VWRU5UX1RZUEUsIHRoaXMucGFzdGVIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKElOUFVUX0VWRU5UX1RZUEUsIHRoaXMuaW5wdXRIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKEJMVVJfRVZFTlRfVFlQRSwgdGhpcy5ibHVySGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vbihGT0NVU19FVkVOVF9UWVBFLCB0aGlzLmZvY3VzSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vbihTQ1JPTExfRVZFTlRfVFlQRSwgdGhpcy5zY3JvbGxIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKEtFWURPV05fRVZFTlRfVFlQRSwgdGhpcy5rZXlEb3duSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vbihDT05URVhUTUVOVV9FVkVOVF9UWVBFLCB0aGlzLmNvbnRleHRtZW51SGFuZGxlcik7XHJcblxyXG4gICAgZG9jdW1lbnQub24oU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUsIHRoaXMuc2VsZWN0Q2hhbmdlSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5hZGRDbGFzcyhcImFjdGl2ZVwiKTtcclxuICB9XHJcblxyXG4gIGRlYWN0aXZhdGUoKSB7XHJcbiAgICB0aGlzLm9mZihDVVRfRVZFTlRfVFlQRSwgdGhpcy5jdXRIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihDT1BZX0VWRU5UX1RZUEUsIHRoaXMuY29weUhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub2ZmKFBBU1RFX0VWRU5UX1RZUEUsIHRoaXMucGFzdGVIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihJTlBVVF9FVkVOVF9UWVBFLCB0aGlzLmlucHV0SGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoQkxVUl9FVkVOVF9UWVBFLCB0aGlzLmJsdXJIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihGT0NVU19FVkVOVF9UWVBFLCB0aGlzLmZvY3VzSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoU0NST0xMX0VWRU5UX1RZUEUsIHRoaXMuc2Nyb2xsSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoS0VZRE9XTl9FVkVOVF9UWVBFLCB0aGlzLmtleURvd25IYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihDT05URVhUTUVOVV9FVkVOVF9UWVBFLCB0aGlzLmNvbnRleHRtZW51SGFuZGxlcik7XHJcblxyXG4gICAgZG9jdW1lbnQub2ZmKFNFTEVDVElPTkNIQU5HRV9FVkVOVF9UWVBFLCB0aGlzLnNlbGVjdENoYW5nZUhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMucmVtb3ZlQ2xhc3MoXCJhY3RpdmVcIik7XHJcbiAgfVxyXG5cclxuICBnZXRQcmV2aW91c0NvbnRlbnQoKSB7XHJcbiAgICBjb25zdCB7IHByZXZpb3VzQ29udGVudCB9ID0gdGhpcy5nZXRTdGF0ZSgpO1xyXG5cclxuICAgIHJldHVybiBwcmV2aW91c0NvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRQcmV2aW91c1NlbGVjdGlvbigpIHtcclxuICAgIGNvbnN0IHsgcHJldmlvdXNTZWxlY3Rpb24gfSA9IHRoaXMuZ2V0U3RhdGUoKTtcclxuXHJcbiAgICByZXR1cm4gcHJldmlvdXNTZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBzZXRQcmV2aW91c0NvbnRlbnQocHJldmlvdXNDb250ZW50KSB7XHJcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcclxuICAgICAgcHJldmlvdXNDb250ZW50XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFByZXZpb3VzU2VsZWN0aW9uKHByZXZpb3VzU2VsZWN0aW9uKSB7XHJcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcclxuICAgICAgcHJldmlvdXNTZWxlY3Rpb25cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IG9uQmx1ciwgb25Gb2N1cywgb25TY3JvbGwsIG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICBibHVySGFuZGxlciA9IG9uQmx1ciwgLy8vXHJcbiAgICAgICAgICBmb2N1c0hhbmRsZXIgPSBvbkZvY3VzLCAvLy9cclxuICAgICAgICAgIHNjcm9sbEhhbmRsZXIgPSBvblNjcm9sbCwgLy8vXHJcbiAgICAgICAgICBjaGFuZ2VIYW5kbGVyID0gb25DaGFuZ2U7IC8vL1xyXG5cclxuICAgIHRoaXMudXBkYXRlSW5pdGlhbFN0YXRlKCk7XHJcblxyXG4gICAgYmx1ckhhbmRsZXIgJiYgdGhpcy5vbkJsdXIoYmx1ckhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGZvY3VzSGFuZGxlciAmJiB0aGlzLm9uRm9jdXMoZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBzY3JvbGxIYW5kbGVyICYmIHRoaXMub25TY3JvbGwoc2Nyb2xsSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgY2hhbmdlSGFuZGxlciAmJiB0aGlzLm9uQ2hhbmdlKGNoYW5nZUhhbmRsZXIsIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgd2lsbFVubW91bnQoKSB7XHJcbiAgICBjb25zdCB7IG9uQmx1ciwgb25Gb2N1cywgb25TY3JvbGwsIG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgIGJsdXJIYW5kbGVyID0gb25CbHVyLCAvLy9cclxuICAgICAgICAgICAgZm9jdXNIYW5kbGVyID0gb25Gb2N1cywgLy8vXHJcbiAgICAgICAgICAgIHNjcm9sbEhhbmRsZXIgPSBvblNjcm9sbCwgLy8vXHJcbiAgICAgICAgICAgIGNoYW5nZUhhbmRsZXIgPSBvbkNoYW5nZTsgLy8vXHJcblxyXG4gICAgYmx1ckhhbmRsZXIgJiYgdGhpcy5vZmZCbHVyKGJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBmb2N1c0hhbmRsZXIgJiYgdGhpcy5vZmZGb2N1cyhmb2N1c0hhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHNjcm9sbEhhbmRsZXIgJiYgdGhpcy5vZmZTY3JvbGwoc2Nyb2xsSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgY2hhbmdlSGFuZGxlciAmJiB0aGlzLm9mZkNoYW5nZShjaGFuZ2VIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBjb25zdCBhY3RpdmUgPSB0aGlzLmlzQWN0aXZlKCk7XHJcblxyXG4gICAgaWYgKGFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmRlYWN0aXZhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZUluaXRpYWxTdGF0ZSgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBwcmV2aW91c0NvbnRlbnQgPSBjb250ZW50LCAgLy8vXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG5cclxuICAgIHRoaXMuc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBzZXRJbml0aWFsU3RhdGUoKSB7XHJcbiAgICBjb25zdCBwcmV2aW91c0NvbnRlbnQgPSBudWxsLFxyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3Rpb24gPSBudWxsO1xyXG5cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBwcmV2aW91c0NvbnRlbnQsXHJcbiAgICAgIHByZXZpb3VzU2VsZWN0aW9uXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGluaXRpYWxpc2UoKSB7XHJcbiAgICB0aGlzLnNldEluaXRpYWxTdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHRhZ05hbWUgPSBcInRleHRhcmVhXCI7XHJcblxyXG4gIHN0YXRpYyBpZ25vcmVkUHJvcGVydGllcyA9IFtcclxuICAgIFwib25CbHVyXCIsXHJcbiAgICBcIm9uRm9jdXNcIixcclxuICAgIFwib25TY3JvbGxcIixcclxuICAgIFwib25DaGFuZ2VcIlxyXG4gIF07XHJcblxyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcGVydGllcyA9IHtcclxuICAgIGNsYXNzTmFtZTogXCJyaWNoXCJcclxuICB9O1xyXG5cclxuICBzdGF0aWMgZnJvbUNsYXNzKENsYXNzLCBwcm9wZXJ0aWVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcclxuICAgIGNvbnN0IGZvY3VzZWQgPSBmYWxzZSxcclxuICAgICAgICAgIHJlYWRPbmx5ID0gZmFsc2UsXHJcbiAgICAgICAgICB1bmRvQnVmZmVyID0gVW5kb0J1ZmZlci5mcm9tTm90aGluZygpLFxyXG4gICAgICAgICAgcmljaFRleHRhcmVhID0gRWxlbWVudC5mcm9tQ2xhc3MoQ2xhc3MsIHByb3BlcnRpZXMsIGZvY3VzZWQsIHJlYWRPbmx5LCB1bmRvQnVmZmVyLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xyXG5cclxuICAgIHJldHVybiByaWNoVGV4dGFyZWE7XHJcbiAgfVxyXG59XHJcblxyXG5PYmplY3QuYXNzaWduKFJpY2hUZXh0YXJlYS5wcm90b3R5cGUsIGV2ZW50TWl4aW5zKTtcclxuXHJcbmZ1bmN0aW9uIGRlZmVyKGZ1bmMpIHtcclxuICBzZXRUaW1lb3V0KGZ1bmMsIDApO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJSaWNoVGV4dGFyZWEiLCJzZWxlY3RvciIsImZvY3VzZWQiLCJyZWFkT25seSIsInVuZG9CdWZmZXIiLCJjdXRIYW5kbGVyIiwiZXZlbnQiLCJlbGVtZW50Iiwic2VsZWN0aW9uIiwiZ2V0U2VsZWN0aW9uIiwic2VsZWN0aW9uRW1wdHkiLCJpc0VtcHR5Iiwic2VsZWN0ZWRDb250ZW50IiwiZ2V0U2VsZWN0ZWRDb250ZW50IiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0IiwiY29udGVudCIsImdldENvbnRlbnQiLCJkZWxldGVPcGVyYXRpb24iLCJEZWxldGVPcGVyYXRpb24iLCJmcm9tQ29udGVudEFuZFNlbGVjdGlvbiIsIm9wZXJhdGlvbiIsImFwcGx5T3BlcmF0aW9uIiwiaW50ZXJtZWRpYXRlSGFuZGxlciIsInByZXZlbnREZWZhdWx0IiwiY29weUhhbmRsZXIiLCJwYXN0ZUhhbmRsZXIiLCJjbGlwYm9hcmREYXRhIiwidGV4dERhdGEiLCJnZXREYXRhIiwiVEVYVCIsIkVNUFRZX1NUUklORyIsImluc2VydE9wZXJhdGlvbiIsIkluc2VydE9wZXJhdGlvbiIsImlucHV0SGFuZGxlciIsImJsdXJIYW5kbGVyIiwidW5kb2FibGUiLCJldmVudFR5cGUiLCJCTFVSX0VWRU5UX1RZUEUiLCJzZWxlY3Rpb25DaGFuZ2VkIiwiZm9jdXNIYW5kbGVyIiwiZGVmZXIiLCJGT0NVU19FVkVOVF9UWVBFIiwic2Nyb2xsSGFuZGxlciIsIlNDUk9MTF9FVkVOVF9UWVBFIiwiY2FsbEhhbmRsZXJzIiwia2V5RG93bkhhbmRsZXIiLCJrZXlDb2RlIiwiWl9LRVlfQ09ERSIsInpLZXlEb3duIiwiY29udGV4dG1lbnVIYW5kbGVyIiwic2VsZWN0Q2hhbmdlSGFuZGxlciIsIkNIQU5HRV9FVkVOVF9UWVBFIiwiaGFzU2VsZWN0aW9uQ2hhbmdlZCIsInByZXZpb3VzQ29udGVudCIsImdldFByZXZpb3VzQ29udGVudCIsInNldENvbnRlbnQiLCJjb250ZW50Q2hhbmdlZCIsImhhc0NvbnRlbnRDaGFuZ2VkIiwib3BlcmF0aW9ucyIsImdlbmVyYXRlT3BlcmF0aW9ucyIsImFkZE9wZXJhdGlvbnMiLCJwcmV2aW91c1NlbGVjdGlvbiIsInNldFByZXZpb3VzQ29udGVudCIsInNldFByZXZpb3VzU2VsZWN0aW9uIiwiaXNGb2N1c2VkIiwiaXNSZWFkT25seSIsImdldFVuZG9CdWZmZXIiLCJzZXRGb2N1c2VkIiwic2V0UmVhZE9ubHkiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJldmVudExpc3RlbmVycyIsImZpbmRFdmVudExpc3RlbmVycyIsImZvckVhY2giLCJldmVudExpc3RlbmVyIiwiaGFuZGxlciIsImhhbmRsZXJFbGVtZW50IiwiY2FsbCIsImlzQWN0aXZlIiwiYWN0aXZlIiwiaGFzQ2xhc3MiLCJkb21FbGVtZW50IiwiZ2V0RE9NRWxlbWVudCIsInZhbHVlIiwiU2VsZWN0aW9uIiwiZnJvbURPTUVsZW1lbnQiLCJlbmRQb3NpdGlvbiIsImdldEVuZFBvc2l0aW9uIiwic3RhcnRQb3NpdGlvbiIsImdldFN0YXJ0UG9zaXRpb24iLCJzdGFydCIsImVuZCIsInNsaWNlIiwiY29udGVudFByZXZpb3VzQ29udGVudCIsImdldFByZXZpb3VzU2VsZWN0aW9uIiwic2VsZWN0aW9uUHJldmlvdXNTZWxlY3Rpb24iLCJpc0VxdWFsVG8iLCJPYmplY3QiLCJhc3NpZ24iLCJzZXRTZWxlY3Rpb24iLCJzZWxlY3Rpb25TdGFydFBvc2l0aW9uIiwic2VsZWN0aW9uRW5kUG9zaXRpb24iLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdGlvbkVuZCIsInNldFNlbGVjdGlvblJhbmdlIiwiY3RybEtleSIsIm1ldGFLZXkiLCJzaGlmdEtleSIsInJlZG8iLCJ1bmRvIiwiZnJvbU9wZXJhdGlvbiIsInRyYW5zZm9ybSIsInRyYW5zZm9ybWVkQ29udGVudCIsInRyYW5zZm9ybUNvbnRlbnQiLCJ0cmFuc2Zvcm1lZFNlbGVjdGlvbiIsInRyYW5zZm9ybVNlbGVjdGlvbiIsImFjdGl2YXRlIiwib24iLCJDVVRfRVZFTlRfVFlQRSIsIkNPUFlfRVZFTlRfVFlQRSIsIlBBU1RFX0VWRU5UX1RZUEUiLCJJTlBVVF9FVkVOVF9UWVBFIiwiS0VZRE9XTl9FVkVOVF9UWVBFIiwiQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSIsImRvY3VtZW50IiwiU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUiLCJhZGRDbGFzcyIsImRlYWN0aXZhdGUiLCJvZmYiLCJyZW1vdmVDbGFzcyIsImdldFN0YXRlIiwidXBkYXRlU3RhdGUiLCJkaWRNb3VudCIsInByb3BlcnRpZXMiLCJvbkJsdXIiLCJvbkZvY3VzIiwib25TY3JvbGwiLCJvbkNoYW5nZSIsImNoYW5nZUhhbmRsZXIiLCJ1cGRhdGVJbml0aWFsU3RhdGUiLCJ3aWxsVW5tb3VudCIsIm9mZkJsdXIiLCJvZmZGb2N1cyIsIm9mZlNjcm9sbCIsIm9mZkNoYW5nZSIsInNldEluaXRpYWxTdGF0ZSIsInNldFN0YXRlIiwiaW5pdGlhbGlzZSIsImZyb21DbGFzcyIsIkNsYXNzIiwiRWxlbWVudCIsIlVuZG9CdWZmZXIiLCJmcm9tTm90aGluZyIsInJpY2hUZXh0YXJlYSIsInRhZ05hbWUiLCJpZ25vcmVkUHJvcGVydGllcyIsImRlZmF1bHRQcm9wZXJ0aWVzIiwiY2xhc3NOYW1lIiwicHJvdG90eXBlIiwiZXZlbnRNaXhpbnMiLCJmdW5jIiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUEyQnFCQTs7O29CQXpCYTs4REFFWjsrREFDQzswREFDQzsyREFDSTsyREFDQTs0REFDQzsrREFDRTs2REFDQTt5QkFFSTt3QkFDUjswQkFXZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU1QixJQUFBLEFBQU1BLDZCQTBoQnBCLEFBMWhCYztjQUFNQTs4QkFBQUE7YUFBQUEsYUFDUEMsUUFBUSxFQUFFQyxPQUFPLEVBQUVDLFFBQVEsRUFBRUMsVUFBVTs4QkFEaENKOztrQ0FFWEM7UUEyQlJJLCtDQUFBQSxjQUFhLFNBQUNDLE9BQU9DLFNBQVk7WUFDL0IsSUFBTUMsWUFB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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.33",
4
+ "version": "4.0.34",
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.",
@@ -199,20 +199,17 @@ export default class RichTextarea extends Element {
199
199
 
200
200
  const content = this.getContent(),
201
201
  selection = this.getSelection(),
202
- contentChanged = this.hasContentChanged(),
203
- changed = (contentChanged || selectionChanged);
202
+ contentChanged = this.hasContentChanged();
204
203
 
205
- if (changed) {
206
- this.callHandlers(eventType, event, element);
207
- }
204
+ if (contentChanged && undoable) {
205
+ const previousContent = this.getPreviousContent(),
206
+ operations = generateOperations(previousContent, content);
208
207
 
209
- if (undoable) {
210
- if (contentChanged) {
211
- const previousContent = this.getPreviousContent(),
212
- operations = generateOperations(previousContent, content);
208
+ this.undoBuffer.addOperations(operations);
209
+ }
213
210
 
214
- this.undoBuffer.addOperations(operations);
215
- }
211
+ if (contentChanged || selectionChanged) {
212
+ this.callHandlers(eventType, event, element);
216
213
  }
217
214
 
218
215
  const previousContent = content, ///
@@ -344,7 +341,6 @@ export default class RichTextarea extends Element {
344
341
 
345
342
  if (operation !== null) {
346
343
  const undoable = false,
347
- eventType = CHANGE_EVENT_TYPE,
348
344
  selection = Selection.fromOperation(operation),
349
345
  setPreviousSelection = false;
350
346
 
@@ -352,7 +348,7 @@ export default class RichTextarea extends Element {
352
348
 
353
349
  this.setSelection(selection, setPreviousSelection);
354
350
 
355
- this.intermediateHandler(event, element, undoable, eventType);
351
+ this.intermediateHandler(event, element, undoable);
356
352
  }
357
353
 
358
354
  preventDefault = true;
@@ -382,11 +378,10 @@ export default class RichTextarea extends Element {
382
378
  this.undoBuffer.transform(operations);
383
379
 
384
380
  const event = null,
385
- element = this,
386
- undoable = false,
387
- eventType = CHANGE_EVENT_TYPE;
381
+ element = this, ///
382
+ undoable = false;
388
383
 
389
- this.intermediateHandler(event, element, undoable, eventType);
384
+ this.intermediateHandler(event, element, undoable);
390
385
  }
391
386
 
392
387
  applyOperation(operation) {