@plait/mind 0.12.0 → 0.12.2

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.
@@ -71,6 +71,9 @@ export class MindNodeComponent extends PlaitPluginElementComponent {
71
71
  this.activeDrawer.draw(this.element, this.g, { selected: this.selected, isEditing: this.textManage.isEditing });
72
72
  this.drawEmojis();
73
73
  this.drawExtend();
74
+ if (PlaitMind.isMind(this.context.parent)) {
75
+ this.g.classList.add('branch');
76
+ }
74
77
  }
75
78
  editTopic() {
76
79
  this.activeDrawer.draw(this.element, this.g, { selected: this.selected, isEditing: true });
@@ -210,4 +213,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
210
213
  changeDetection: ChangeDetectionStrategy.OnPush
211
214
  }]
212
215
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; } });
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9ub2RlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUNILE9BQU8sRUFDUCxVQUFVLEVBQ1YsMkJBQTJCLEVBQzNCLFlBQVksRUFDWixhQUFhLEVBR2IsZUFBZSxFQUVsQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBaUIsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXhELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUs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QyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFNRCxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakQsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDeEM7SUFDTCxDQUFDOzs4R0FuTlEsaUJBQWlCO2tHQUFqQixpQkFBaUIsOEVBWGhCOzs7Ozs7OztLQVFUOzJGQUdRLGlCQUFpQjtrQkFiN0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixRQUFRLEVBQUU7Ozs7Ozs7O0tBUVQ7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIGNyZWF0ZUcsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdFBsdWdpbkVsZW1lbnRDb21wb25lbnQsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIE5PREVfVE9fSU5ERVgsXG4gICAgUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCxcbiAgICBPbkNvbnRleHRDaGFuZ2VkLFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBQb2ludFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBpc0hvcml6b250YWxMYXlvdXQsIEFic3RyYWN0Tm9kZSwgTWluZExheW91dFR5cGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBUZXh0TWFuYWdlUmVmLCBUZXh0TWFuYWdlIH0gZnJvbSAnQHBsYWl0L3RleHQnO1xuaW1wb3J0IHsgUm91Z2hTVkcgfSBmcm9tICdyb3VnaGpzL2Jpbi9zdmcnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZHJhd1JvdW5kUmVjdGFuZ2xlQnlOb2RlIH0gZnJvbSAnLi91dGlscy9kcmF3L25vZGUtc2hhcGUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIFBsYWl0TWluZCB9IGZyb20gJy4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IE1pbmROb2RlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuL3F1ZXJpZXMnO1xuaW1wb3J0IHsgaXNIaXRNaW5kRWxlbWVudCB9IGZyb20gJy4vdXRpbHMvcG9zaXRpb24vbm9kZSc7XG5pbXBvcnQgeyBnZXRTaGFwZUJ5RWxlbWVudCB9IGZyb20gJy4vdXRpbHMvbm9kZS1zdHlsZS9zaGFwZSc7XG5pbXBvcnQgeyBFTEVNRU5UX1RPX05PREUgfSBmcm9tICcuL3V0aWxzL3dlYWstbWFwcyc7XG5pbXBvcnQgeyBkcmF3QWJzdHJhY3RMaW5rIH0gZnJvbSAnLi91dGlscy9kcmF3L25vZGUtbGluay9hYnN0cmFjdC1saW5rJztcbmltcG9ydCB7IE5vZGVFbW9qaXNEcmF3ZXIgfSBmcm9tICcuL2RyYXdlci9ub2RlLWVtb2ppcy5kcmF3ZXInO1xuaW1wb3J0IHsgTWluZFRyYW5zZm9ybXMgfSBmcm9tICcuL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnRTaGFwZSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBOb2RlSW5zZXJ0RHJhd2VyIH0gZnJvbSAnLi9kcmF3ZXIvbm9kZS1pbnNlcnQuZHJhd2VyJztcbmltcG9ydCB7IFBsYWl0TWluZEJvYXJkIH0gZnJvbSAnLi9wbHVnaW5zL3dpdGgtbWluZC5ib2FyZCc7XG5pbXBvcnQgeyBkcmF3TGluayB9IGZyb20gJy4vdXRpbHMvZHJhdy9ub2RlLWxpbmsvZHJhdy1saW5rJztcbmltcG9ydCB7IGdldFRvcGljUmVjdGFuZ2xlQnlOb2RlIH0gZnJvbSAnLi91dGlscy9wb3NpdGlvbi90b3BpYyc7XG5pbXBvcnQgeyBOb2RlQWN0aXZlRHJhd2VyIH0gZnJvbSAnLi9kcmF3ZXIvbm9kZS1hY3RpdmUuZHJhd2VyJztcbmltcG9ydCB7IENvbGxhcHNlRHJhd2VyIH0gZnJvbSAnLi9kcmF3ZXIvbm9kZS1jb2xsYXBzZS5kcmF3ZXInO1xuXG4vLyAxLiBXaGVuIHRoZSB0ZXh0IGF0IHRoZSBlbmQgaGFzIGFuIGl0YWxpYyBhdHRyaWJ1dGUsIHRoZSB0ZXh0IGlzIHBhcnRpYWxseSBjb3ZlcmVkXG4vLyAyLiBUaGVyZSB3aWxsIGJlIHNvbWUgZGlmZmVyZW5jZXMgaW4gdGhlIHdpZHRoIG1lYXN1cmVkIGJ5IGRpZmZlcmVudCBicm93c2Vyc1xuY29uc3QgV0lEVEhfQlVGRkVSID0gNDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwbGFpdC1taW5kLW5vZGUnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxwbGFpdC1jaGlsZHJlblxuICAgICAgICAgICAgKm5nSWY9XCIhZWxlbWVudC5pc0NvbGxhcHNlZFwiXG4gICAgICAgICAgICBbYm9hcmRdPVwiYm9hcmRcIlxuICAgICAgICAgICAgW3BhcmVudF09XCJlbGVtZW50XCJcbiAgICAgICAgICAgIFtlZmZlY3RdPVwiZWZmZWN0XCJcbiAgICAgICAgICAgIFtwYXJlbnRHXT1cInBhcmVudEdcIlxuICAgICAgICA+PC9wbGFpdC1jaGlsZHJlbj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1pbmROb2RlQ29tcG9uZW50IGV4dGVuZHMgUGxhaXRQbHVnaW5FbGVtZW50Q29tcG9uZW50PE1pbmRFbGVtZW50LCBQbGFpdE1pbmRCb2FyZD5cbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNvbnRleHRDaGFuZ2VkPE1pbmRFbGVtZW50LCBQbGFpdE1pbmRCb2FyZD4ge1xuICAgIHJvdWdoU1ZHITogUm91Z2hTVkc7XG5cbiAgICBub2RlITogTWluZE5vZGU7XG5cbiAgICBpbmRleCE6IG51bWJlcjtcblxuICAgIHBhcmVudEchOiBTVkdHRWxlbWVudDtcblxuICAgIHNoYXBlRzogU1ZHR0VsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGxpbmtHPzogU1ZHR0VsZW1lbnQ7XG5cbiAgICBleHRlbmRHPzogU1ZHR0VsZW1lbnQ7XG5cbiAgICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBub2RlRW1vamlzRHJhd2VyITogTm9kZUVtb2ppc0RyYXdlcjtcblxuICAgIG5vZGVJbnNlcnREcmF3ZXIhOiBOb2RlSW5zZXJ0RHJhd2VyO1xuXG4gICAgdGV4dE1hbmFnZSE6IFRleHRNYW5hZ2U7XG5cbiAgICBhY3RpdmVEcmF3ZXIhOiBOb2RlQWN0aXZlRHJhd2VyO1xuXG4gICAgY29sbGFwc2VEcmF3ZXIhOiBDb2xsYXBzZURyYXdlcjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiwgcHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgc3VwZXIoY2RyKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplRHJhd2VyKCkge1xuICAgICAgICB0aGlzLm5vZGVFbW9qaXNEcmF3ZXIgPSBuZXcgTm9kZUVtb2ppc0RyYXdlcih0aGlzLmJvYXJkLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICB0aGlzLm5vZGVJbnNlcnREcmF3ZXIgPSBuZXcgTm9kZUluc2VydERyYXdlcih0aGlzLmJvYXJkKTtcbiAgICAgICAgdGhpcy5hY3RpdmVEcmF3ZXIgPSBuZXcgTm9kZUFjdGl2ZURyYXdlcih0aGlzLmJvYXJkKTtcbiAgICAgICAgdGhpcy5jb2xsYXBzZURyYXdlciA9IG5ldyBDb2xsYXBzZURyYXdlcih0aGlzLmJvYXJkKTtcbiAgICAgICAgY29uc3QgcGx1Z2lucyA9IHRoaXMuYm9hcmQuZ2V0TWluZE9wdGlvbnMoKS50ZXh0UGx1Z2lucztcblxuICAgICAgICB0aGlzLnRleHRNYW5hZ2UgPSBuZXcgVGV4dE1hbmFnZShcbiAgICAgICAgICAgIHRoaXMuYm9hcmQsXG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjdCA9IGdldFRvcGljUmVjdGFuZ2xlQnlOb2RlKHRoaXMuYm9hcmQsIHRoaXMubm9kZSk7XG5cbiAgICAgICAgICAgICAgICByZWN0LndpZHRoID0gcmVjdC53aWR0aCArIFdJRFRIX0JVRkZFUjtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVjdDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAocG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzSGl0TWluZEVsZW1lbnQodGhpcy5ib2FyZCwgcG9pbnQsIHRoaXMuZWxlbWVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKHRleHRNYW5hZ2VSZWY6IFRleHRNYW5hZ2VSZWYpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB3aWR0aCA9IHRleHRNYW5hZ2VSZWYud2lkdGg7XG4gICAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGV4dE1hbmFnZVJlZi5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKHRleHRNYW5hZ2VSZWYubmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgTWluZFRyYW5zZm9ybXMuc2V0VG9waWModGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50LCB0ZXh0TWFuYWdlUmVmLm5ld1ZhbHVlIGFzIE1pbmRFbGVtZW50LCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBNaW5kVHJhbnNmb3Jtcy5zZXRUb3BpY1NpemUodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50LCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGx1Z2luc1xuICAgICAgICApO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVEcmF3ZXIoKTtcbiAgICAgICAgdGhpcy5ub2RlID0gTWluZEVsZW1lbnQuZ2V0Tm9kZSh0aGlzLmVsZW1lbnQpO1xuICAgICAgICB0aGlzLmluZGV4ID0gTk9ERV9UT19JTkRFWC5nZXQodGhpcy5lbGVtZW50KSB8fCAwO1xuICAgICAgICB0aGlzLnJvdWdoU1ZHID0gUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyh0aGlzLmJvYXJkKTtcbiAgICAgICAgdGhpcy5wYXJlbnRHID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChNaW5kRWxlbWVudC5nZXRSb290KHRoaXMuYm9hcmQsIHRoaXMuZWxlbWVudCkpLnJvb3RHIGFzIFNWR0dFbGVtZW50O1xuICAgICAgICB0aGlzLmRyYXdTaGFwZSgpO1xuICAgICAgICB0aGlzLmRyYXdMaW5rKCk7XG4gICAgICAgIHRoaXMuZHJhd1RleHQoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVEcmF3ZXIuZHJhdyh0aGlzLmVsZW1lbnQsIHRoaXMuZywgeyBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCwgaXNFZGl0aW5nOiB0aGlzLnRleHRNYW5hZ2UuaXNFZGl0aW5nIH0pO1xuICAgICAgICB0aGlzLmRyYXdFbW9qaXMoKTtcbiAgICAgICAgdGhpcy5kcmF3RXh0ZW5kKCk7XG4gICAgfVxuXG4gICAgZWRpdFRvcGljKCkge1xuICAgICAgICB0aGlzLmFjdGl2ZURyYXdlci5kcmF3KHRoaXMuZWxlbWVudCwgdGhpcy5nLCB7IHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkLCBpc0VkaXRpbmc6IHRydWUgfSk7XG4gICAgICAgIHRoaXMudGV4dE1hbmFnZS5lZGl0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRHJhd2VyLmRyYXcodGhpcy5lbGVtZW50LCB0aGlzLmcsIHsgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQsIGlzRWRpdGluZzogZmFsc2UgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uQ29udGV4dENoYW5nZWQoXG4gICAgICAgIHZhbHVlOiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0PE1pbmRFbGVtZW50LCBQbGFpdE1pbmRCb2FyZD4sXG4gICAgICAgIHByZXZpb3VzOiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0PE1pbmRFbGVtZW50LCBQbGFpdE1pbmRCb2FyZD5cbiAgICApIHtcbiAgICAgICAgY29uc3QgbmV3Tm9kZSA9IE1pbmRFbGVtZW50LmdldE5vZGUodmFsdWUuZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGlzRXF1YWxOb2RlID0gUmVjdGFuZ2xlQ2xpZW50LmlzRXF1YWwodGhpcy5ub2RlLCBuZXdOb2RlKTtcbiAgICAgICAgdGhpcy5ub2RlID0gbmV3Tm9kZTtcblxuICAgICAgICBjb25zdCBpc0NoYW5nZVRoZW1lID0gdGhpcy5ib2FyZC5vcGVyYXRpb25zLmZpbmQob3AgPT4gb3AudHlwZSA9PT0gJ3NldF90aGVtZScpO1xuXG4gICAgICAgIGlmICghaXNFcXVhbE5vZGUgfHwgdmFsdWUuZWxlbWVudCAhPT0gcHJldmlvdXMuZWxlbWVudCB8fCBpc0NoYW5nZVRoZW1lKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZURyYXdlci5kcmF3KHRoaXMuZWxlbWVudCwgdGhpcy5nLCB7IHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkLCBpc0VkaXRpbmc6IHRoaXMudGV4dE1hbmFnZS5pc0VkaXRpbmcgfSk7XG4gICAgICAgICAgICB0aGlzLmRyYXdTaGFwZSgpO1xuICAgICAgICAgICAgdGhpcy5kcmF3TGluaygpO1xuICAgICAgICAgICAgdGhpcy5kcmF3RW1vamlzKCk7XG4gICAgICAgICAgICB0aGlzLmRyYXdFeHRlbmQoKTtcbiAgICAgICAgICAgIHRoaXMudGV4dE1hbmFnZS51cGRhdGVUZXh0KHRoaXMuZWxlbWVudC5kYXRhLnRvcGljKTtcbiAgICAgICAgICAgIHRoaXMudGV4dE1hbmFnZS51cGRhdGVSZWN0YW5nbGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1NhbWVTZWxlY3RlZCA9IHZhbHVlLnNlbGVjdGVkID09PSBwcmV2aW91cy5zZWxlY3RlZDtcbiAgICAgICAgICAgIGNvbnN0IGhhc1NhbWVQYXJlbnQgPSB2YWx1ZS5wYXJlbnQgPT09IHByZXZpb3VzLnBhcmVudDtcbiAgICAgICAgICAgIGlmICghaGFzU2FtZVNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEcmF3ZXIuZHJhdyh0aGlzLmVsZW1lbnQsIHRoaXMuZywgeyBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCwgaXNFZGl0aW5nOiB0aGlzLnRleHRNYW5hZ2UuaXNFZGl0aW5nIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFoYXNTYW1lUGFyZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmF3TGluaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhd0Vtb2ppcygpIHtcbiAgICAgICAgY29uc3QgZyA9IHRoaXMubm9kZUVtb2ppc0RyYXdlci5kcmF3RW1vamlzKHRoaXMuZWxlbWVudCk7XG4gICAgICAgIGlmIChnKSB7XG4gICAgICAgICAgICB0aGlzLmcuYXBwZW5kKGcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhd1NoYXBlKCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lTaGFwZSgpO1xuICAgICAgICBjb25zdCBzaGFwZSA9IGdldFNoYXBlQnlFbGVtZW50KHRoaXMuYm9hcmQsIHRoaXMubm9kZS5vcmlnaW4pIGFzIE1pbmRFbGVtZW50U2hhcGU7XG4gICAgICAgIHN3aXRjaCAoc2hhcGUpIHtcbiAgICAgICAgICAgIGNhc2UgTWluZEVsZW1lbnRTaGFwZS5yb3VuZFJlY3RhbmdsZTpcbiAgICAgICAgICAgICAgICB0aGlzLnNoYXBlRyA9IGRyYXdSb3VuZFJlY3RhbmdsZUJ5Tm9kZSh0aGlzLmJvYXJkLCB0aGlzLm5vZGUgYXMgTWluZE5vZGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuZy5wcmVwZW5kKHRoaXMuc2hhcGVHKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95U2hhcGUoKSB7XG4gICAgICAgIGlmICh0aGlzLnNoYXBlRykge1xuICAgICAgICAgICAgdGhpcy5zaGFwZUcucmVtb3ZlKCk7XG4gICAgICAgICAgICB0aGlzLnNoYXBlRyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3TGluaygpIHtcbiAgICAgICAgaWYgKFBsYWl0TWluZC5pc01pbmQodGhpcy5lbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyZW50ID0gTWluZEVsZW1lbnQuZ2V0UGFyZW50KHRoaXMuZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBNaW5kRWxlbWVudC5nZXROb2RlKHBhcmVudCk7XG5cbiAgICAgICAgaWYgKHRoaXMubGlua0cpIHtcbiAgICAgICAgICAgIHRoaXMubGlua0cucmVtb3ZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRMYXlvdXRCeUVsZW1lbnQocGFyZW50KSBhcyBNaW5kTGF5b3V0VHlwZTtcbiAgICAgICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KHRoaXMubm9kZS5vcmlnaW4pKSB7XG4gICAgICAgICAgICB0aGlzLmxpbmtHID0gZHJhd0Fic3RyYWN0TGluayh0aGlzLmJvYXJkLCB0aGlzLm5vZGUsIGlzSG9yaXpvbnRhbExheW91dChsYXlvdXQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGlua0cgPSBkcmF3TGluayh0aGlzLmJvYXJkLCBwYXJlbnROb2RlLCB0aGlzLm5vZGUsIGlzSG9yaXpvbnRhbExheW91dChsYXlvdXQpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmcuYXBwZW5kKHRoaXMubGlua0cpO1xuICAgIH1cblxuICAgIGRlc3Ryb3lMaW5lKCkge1xuICAgICAgICBpZiAodGhpcy5saW5rRykge1xuICAgICAgICAgICAgdGhpcy5saW5rRy5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRyYXdFeHRlbmQoKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveUV4dGVuZCgpO1xuXG4gICAgICAgIHRoaXMuZXh0ZW5kRyA9IGNyZWF0ZUcoKTtcbiAgICAgICAgdGhpcy5leHRlbmRHLmNsYXNzTGlzdC5hZGQoJ2V4dGVuZCcpO1xuICAgICAgICB0aGlzLmcuYXBwZW5kKHRoaXMuZXh0ZW5kRyk7XG5cbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5pc0NvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy5nLmNsYXNzTGlzdC5hZGQoJ2NvbGxhcHNlZCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5nLmNsYXNzTGlzdC5yZW1vdmUoJ2NvbGxhcHNlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ub2RlSW5zZXJ0RHJhd2VyLmRyYXcodGhpcy5lbGVtZW50LCB0aGlzLmV4dGVuZEchKTtcbiAgICAgICAgdGhpcy5jb2xsYXBzZURyYXdlci5kcmF3KHRoaXMuZWxlbWVudCwgdGhpcy5leHRlbmRHISk7XG4gICAgfVxuXG4gICAgZGVzdHJveUV4dGVuZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZXh0ZW5kRykge1xuICAgICAgICAgICAgdGhpcy5leHRlbmRHLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhd1RleHQoKSB7XG4gICAgICAgIHRoaXMudGV4dE1hbmFnZS5kcmF3KHRoaXMuZWxlbWVudC5kYXRhLnRvcGljKTtcbiAgICAgICAgdGhpcy5nLmFwcGVuZCh0aGlzLnRleHRNYW5hZ2UuZyk7XG4gICAgfVxuXG4gICAgdHJhY2tCeSA9IChpbmRleDogbnVtYmVyLCBub2RlOiBNaW5kTm9kZSkgPT4ge1xuICAgICAgICByZXR1cm4gbm9kZS5vcmlnaW4uaWQ7XG4gICAgfTtcblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICB0aGlzLnRleHRNYW5hZ2UuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLm5vZGVFbW9qaXNEcmF3ZXIuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgICAgICBpZiAoRUxFTUVOVF9UT19OT0RFLmdldCh0aGlzLmVsZW1lbnQpID09PSB0aGlzLm5vZGUpIHtcbiAgICAgICAgICAgIEVMRU1FTlRfVE9fTk9ERS5kZWxldGUodGhpcy5lbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9ub2RlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUNILE9BQU8sRUFDUCxVQUFVLEVBQ1YsMkJBQTJCLEVBQzNCLFlBQVksRUFDWixhQUFhLEVBR2IsZUFBZSxFQUVsQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBaUIsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXhELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUs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TyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFNRCxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakQsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDeEM7SUFDTCxDQUFDOzs4R0F0TlEsaUJBQWlCO2tHQUFqQixpQkFBaUIsOEVBWGhCOzs7Ozs7OztLQVFUOzJGQUdRLGlCQUFpQjtrQkFiN0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixRQUFRLEVBQUU7Ozs7Ozs7O0tBUVQ7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIGNyZWF0ZUcsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdFBsdWdpbkVsZW1lbnRDb21wb25lbnQsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIE5PREVfVE9fSU5ERVgsXG4gICAgUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCxcbiAgICBPbkNvbnRleHRDaGFuZ2VkLFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBQb2ludFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBpc0hvcml6b250YWxMYXlvdXQsIEFic3RyYWN0Tm9kZSwgTWluZExheW91dFR5cGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBUZXh0TWFuYWdlUmVmLCBUZXh0TWFuYWdlIH0gZnJvbSAnQHBsYWl0L3RleHQnO1xuaW1wb3J0IHsgUm91Z2hTVkcgfSBmcm9tICdyb3VnaGpzL2Jpbi9zdmcnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZHJhd1JvdW5kUmVjdGFuZ2xlQnlOb2RlIH0gZnJvbSAnLi91dGlscy9kcmF3L25vZGUtc2hhcGUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIFBsYWl0TWluZCB9IGZyb20gJy4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IE1pbmROb2RlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuL3F1ZXJpZXMnO1xuaW1wb3J0IHsgaXNIaXRNaW5kRWxlbWVudCB9IGZyb20gJy4vdXRpbHMvcG9zaXRpb24vbm9kZSc7XG5pbXBvcnQgeyBnZXRTaGFwZUJ5RWxlbWVudCB9IGZyb20gJy4vdXRpbHMvbm9kZS1zdHlsZS9zaGFwZSc7XG5pbXBvcnQgeyBFTEVNRU5UX1RPX05PREUgfSBmcm9tICcuL3V0aWxzL3dlYWstbWFwcyc7XG5pbXBvcnQgeyBkcmF3QWJzdHJhY3RMaW5rIH0gZnJvbSAnLi91dGlscy9kcmF3L25vZGUtbGluay9hYnN0cmFjdC1saW5rJztcbmltcG9ydCB7IE5vZGVFbW9qaXNEcmF3ZXIgfSBmcm9tICcuL2RyYXdlci9ub2RlLWVtb2ppcy5kcmF3ZXInO1xuaW1wb3J0IHsgTWluZFRyYW5zZm9ybXMgfSBmcm9tICcuL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnRTaGFwZSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBOb2RlSW5zZXJ0RHJhd2VyIH0gZnJvbSAnLi9kcmF3ZXIvbm9kZS1pbnNlcnQuZHJhd2VyJztcbmltcG9ydCB7IFBsYWl0TWluZEJvYXJkIH0gZnJvbSAnLi9wbHVnaW5zL3dpdGgtbWluZC5ib2FyZCc7XG5pbXBvcnQgeyBkcmF3TGluayB9IGZyb20gJy4vdXRpbHMvZHJhdy9ub2RlLWxpbmsvZHJhdy1saW5rJztcbmltcG9ydCB7IGdldFRvcGljUmVjdGFuZ2xlQnlOb2RlIH0gZnJvbSAnLi91dGlscy9wb3NpdGlvbi90b3BpYyc7XG5pbXBvcnQgeyBOb2RlQWN0aXZlRHJhd2VyIH0gZnJvbSAnLi9kcmF3ZXIvbm9kZS1hY3RpdmUuZHJhd2VyJztcbmltcG9ydCB7IENvbGxhcHNlRHJhd2VyIH0gZnJvbSAnLi9kcmF3ZXIvbm9kZS1jb2xsYXBzZS5kcmF3ZXInO1xuXG4vLyAxLiBXaGVuIHRoZSB0ZXh0IGF0IHRoZSBlbmQgaGFzIGFuIGl0YWxpYyBhdHRyaWJ1dGUsIHRoZSB0ZXh0IGlzIHBhcnRpYWxseSBjb3ZlcmVkXG4vLyAyLiBUaGVyZSB3aWxsIGJlIHNvbWUgZGlmZmVyZW5jZXMgaW4gdGhlIHdpZHRoIG1lYXN1cmVkIGJ5IGRpZmZlcmVudCBicm93c2Vyc1xuY29uc3QgV0lEVEhfQlVGRkVSID0gNDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwbGFpdC1taW5kLW5vZGUnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxwbGFpdC1jaGlsZHJlblxuICAgICAgICAgICAgKm5nSWY9XCIhZWxlbWVudC5pc0NvbGxhcHNlZFwiXG4gICAgICAgICAgICBbYm9hcmRdPVwiYm9hcmRcIlxuICAgICAgICAgICAgW3BhcmVudF09XCJlbGVtZW50XCJcbiAgICAgICAgICAgIFtlZmZlY3RdPVwiZWZmZWN0XCJcbiAgICAgICAgICAgIFtwYXJlbnRHXT1cInBhcmVudEdcIlxuICAgICAgICA+PC9wbGFpdC1jaGlsZHJlbj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1pbmROb2RlQ29tcG9uZW50IGV4dGVuZHMgUGxhaXRQbHVnaW5FbGVtZW50Q29tcG9uZW50PE1pbmRFbGVtZW50LCBQbGFpdE1pbmRCb2FyZD5cbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNvbnRleHRDaGFuZ2VkPE1pbmRFbGVtZW50LCBQbGFpdE1pbmRCb2FyZD4ge1xuICAgIHJvdWdoU1ZHITogUm91Z2hTVkc7XG5cbiAgICBub2RlITogTWluZE5vZGU7XG5cbiAgICBpbmRleCE6IG51bWJlcjtcblxuICAgIHBhcmVudEchOiBTVkdHRWxlbWVudDtcblxuICAgIHNoYXBlRzogU1ZHR0VsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGxpbmtHPzogU1ZHR0VsZW1lbnQ7XG5cbiAgICBleHRlbmRHPzogU1ZHR0VsZW1lbnQ7XG5cbiAgICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBub2RlRW1vamlzRHJhd2VyITogTm9kZUVtb2ppc0RyYXdlcjtcblxuICAgIG5vZGVJbnNlcnREcmF3ZXIhOiBOb2RlSW5zZXJ0RHJhd2VyO1xuXG4gICAgdGV4dE1hbmFnZSE6IFRleHRNYW5hZ2U7XG5cbiAgICBhY3RpdmVEcmF3ZXIhOiBOb2RlQWN0aXZlRHJhd2VyO1xuXG4gICAgY29sbGFwc2VEcmF3ZXIhOiBDb2xsYXBzZURyYXdlcjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiwgcHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgc3VwZXIoY2RyKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplRHJhd2VyKCkge1xuICAgICAgICB0aGlzLm5vZGVFbW9qaXNEcmF3ZXIgPSBuZXcgTm9kZUVtb2ppc0RyYXdlcih0aGlzLmJvYXJkLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICB0aGlzLm5vZGVJbnNlcnREcmF3ZXIgPSBuZXcgTm9kZUluc2VydERyYXdlcih0aGlzLmJvYXJkKTtcbiAgICAgICAgdGhpcy5hY3RpdmVEcmF3ZXIgPSBuZXcgTm9kZUFjdGl2ZURyYXdlcih0aGlzLmJvYXJkKTtcbiAgICAgICAgdGhpcy5jb2xsYXBzZURyYXdlciA9IG5ldyBDb2xsYXBzZURyYXdlcih0aGlzLmJvYXJkKTtcbiAgICAgICAgY29uc3QgcGx1Z2lucyA9IHRoaXMuYm9hcmQuZ2V0TWluZE9wdGlvbnMoKS50ZXh0UGx1Z2lucztcblxuICAgICAgICB0aGlzLnRleHRNYW5hZ2UgPSBuZXcgVGV4dE1hbmFnZShcbiAgICAgICAgICAgIHRoaXMuYm9hcmQsXG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjdCA9IGdldFRvcGljUmVjdGFuZ2xlQnlOb2RlKHRoaXMuYm9hcmQsIHRoaXMubm9kZSk7XG5cbiAgICAgICAgICAgICAgICByZWN0LndpZHRoID0gcmVjdC53aWR0aCArIFdJRFRIX0JVRkZFUjtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVjdDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAocG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzSGl0TWluZEVsZW1lbnQodGhpcy5ib2FyZCwgcG9pbnQsIHRoaXMuZWxlbWVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKHRleHRNYW5hZ2VSZWY6IFRleHRNYW5hZ2VSZWYpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB3aWR0aCA9IHRleHRNYW5hZ2VSZWYud2lkdGg7XG4gICAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGV4dE1hbmFnZVJlZi5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKHRleHRNYW5hZ2VSZWYubmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgTWluZFRyYW5zZm9ybXMuc2V0VG9waWModGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50LCB0ZXh0TWFuYWdlUmVmLm5ld1ZhbHVlIGFzIE1pbmRFbGVtZW50LCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBNaW5kVHJhbnNmb3Jtcy5zZXRUb3BpY1NpemUodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50LCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGx1Z2luc1xuICAgICAgICApO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVEcmF3ZXIoKTtcbiAgICAgICAgdGhpcy5ub2RlID0gTWluZEVsZW1lbnQuZ2V0Tm9kZSh0aGlzLmVsZW1lbnQpO1xuICAgICAgICB0aGlzLmluZGV4ID0gTk9ERV9UT19JTkRFWC5nZXQodGhpcy5lbGVtZW50KSB8fCAwO1xuICAgICAgICB0aGlzLnJvdWdoU1ZHID0gUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyh0aGlzLmJvYXJkKTtcbiAgICAgICAgdGhpcy5wYXJlbnRHID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChNaW5kRWxlbWVudC5nZXRSb290KHRoaXMuYm9hcmQsIHRoaXMuZWxlbWVudCkpLnJvb3RHIGFzIFNWR0dFbGVtZW50O1xuICAgICAgICB0aGlzLmRyYXdTaGFwZSgpO1xuICAgICAgICB0aGlzLmRyYXdMaW5rKCk7XG4gICAgICAgIHRoaXMuZHJhd1RleHQoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVEcmF3ZXIuZHJhdyh0aGlzLmVsZW1lbnQsIHRoaXMuZywgeyBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCwgaXNFZGl0aW5nOiB0aGlzLnRleHRNYW5hZ2UuaXNFZGl0aW5nIH0pO1xuICAgICAgICB0aGlzLmRyYXdFbW9qaXMoKTtcbiAgICAgICAgdGhpcy5kcmF3RXh0ZW5kKCk7XG4gICAgICAgIGlmIChQbGFpdE1pbmQuaXNNaW5kKHRoaXMuY29udGV4dC5wYXJlbnQpKSB7XG4gICAgICAgICAgICB0aGlzLmcuY2xhc3NMaXN0LmFkZCgnYnJhbmNoJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlZGl0VG9waWMoKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlRHJhd2VyLmRyYXcodGhpcy5lbGVtZW50LCB0aGlzLmcsIHsgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQsIGlzRWRpdGluZzogdHJ1ZSB9KTtcbiAgICAgICAgdGhpcy50ZXh0TWFuYWdlLmVkaXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVEcmF3ZXIuZHJhdyh0aGlzLmVsZW1lbnQsIHRoaXMuZywgeyBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCwgaXNFZGl0aW5nOiBmYWxzZSB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25Db250ZXh0Q2hhbmdlZChcbiAgICAgICAgdmFsdWU6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQ8TWluZEVsZW1lbnQsIFBsYWl0TWluZEJvYXJkPixcbiAgICAgICAgcHJldmlvdXM6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQ8TWluZEVsZW1lbnQsIFBsYWl0TWluZEJvYXJkPlxuICAgICkge1xuICAgICAgICBjb25zdCBuZXdOb2RlID0gTWluZEVsZW1lbnQuZ2V0Tm9kZSh2YWx1ZS5lbGVtZW50KTtcbiAgICAgICAgY29uc3QgaXNFcXVhbE5vZGUgPSBSZWN0YW5nbGVDbGllbnQuaXNFcXVhbCh0aGlzLm5vZGUsIG5ld05vZGUpO1xuICAgICAgICB0aGlzLm5vZGUgPSBuZXdOb2RlO1xuXG4gICAgICAgIGNvbnN0IGlzQ2hhbmdlVGhlbWUgPSB0aGlzLmJvYXJkLm9wZXJhdGlvbnMuZmluZChvcCA9PiBvcC50eXBlID09PSAnc2V0X3RoZW1lJyk7XG5cbiAgICAgICAgaWYgKCFpc0VxdWFsTm9kZSB8fCB2YWx1ZS5lbGVtZW50ICE9PSBwcmV2aW91cy5lbGVtZW50IHx8IGlzQ2hhbmdlVGhlbWUpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRHJhd2VyLmRyYXcodGhpcy5lbGVtZW50LCB0aGlzLmcsIHsgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQsIGlzRWRpdGluZzogdGhpcy50ZXh0TWFuYWdlLmlzRWRpdGluZyB9KTtcbiAgICAgICAgICAgIHRoaXMuZHJhd1NoYXBlKCk7XG4gICAgICAgICAgICB0aGlzLmRyYXdMaW5rKCk7XG4gICAgICAgICAgICB0aGlzLmRyYXdFbW9qaXMoKTtcbiAgICAgICAgICAgIHRoaXMuZHJhd0V4dGVuZCgpO1xuICAgICAgICAgICAgdGhpcy50ZXh0TWFuYWdlLnVwZGF0ZVRleHQodGhpcy5lbGVtZW50LmRhdGEudG9waWMpO1xuICAgICAgICAgICAgdGhpcy50ZXh0TWFuYWdlLnVwZGF0ZVJlY3RhbmdsZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaGFzU2FtZVNlbGVjdGVkID0gdmFsdWUuc2VsZWN0ZWQgPT09IHByZXZpb3VzLnNlbGVjdGVkO1xuICAgICAgICAgICAgY29uc3QgaGFzU2FtZVBhcmVudCA9IHZhbHVlLnBhcmVudCA9PT0gcHJldmlvdXMucGFyZW50O1xuICAgICAgICAgICAgaWYgKCFoYXNTYW1lU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURyYXdlci5kcmF3KHRoaXMuZWxlbWVudCwgdGhpcy5nLCB7IHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkLCBpc0VkaXRpbmc6IHRoaXMudGV4dE1hbmFnZS5pc0VkaXRpbmcgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWhhc1NhbWVQYXJlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYXdMaW5rKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3RW1vamlzKCkge1xuICAgICAgICBjb25zdCBnID0gdGhpcy5ub2RlRW1vamlzRHJhd2VyLmRyYXdFbW9qaXModGhpcy5lbGVtZW50KTtcbiAgICAgICAgaWYgKGcpIHtcbiAgICAgICAgICAgIHRoaXMuZy5hcHBlbmQoZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3U2hhcGUoKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveVNoYXBlKCk7XG4gICAgICAgIGNvbnN0IHNoYXBlID0gZ2V0U2hhcGVCeUVsZW1lbnQodGhpcy5ib2FyZCwgdGhpcy5ub2RlLm9yaWdpbikgYXMgTWluZEVsZW1lbnRTaGFwZTtcbiAgICAgICAgc3dpdGNoIChzaGFwZSkge1xuICAgICAgICAgICAgY2FzZSBNaW5kRWxlbWVudFNoYXBlLnJvdW5kUmVjdGFuZ2xlOlxuICAgICAgICAgICAgICAgIHRoaXMuc2hhcGVHID0gZHJhd1JvdW5kUmVjdGFuZ2xlQnlOb2RlKHRoaXMuYm9hcmQsIHRoaXMubm9kZSBhcyBNaW5kTm9kZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5nLnByZXBlbmQodGhpcy5zaGFwZUcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlc3Ryb3lTaGFwZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hhcGVHKSB7XG4gICAgICAgICAgICB0aGlzLnNoYXBlRy5yZW1vdmUoKTtcbiAgICAgICAgICAgIHRoaXMuc2hhcGVHID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRyYXdMaW5rKCkge1xuICAgICAgICBpZiAoUGxhaXRNaW5kLmlzTWluZCh0aGlzLmVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJlbnQgPSBNaW5kRWxlbWVudC5nZXRQYXJlbnQodGhpcy5lbGVtZW50KTtcbiAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IE1pbmRFbGVtZW50LmdldE5vZGUocGFyZW50KTtcblxuICAgICAgICBpZiAodGhpcy5saW5rRykge1xuICAgICAgICAgICAgdGhpcy5saW5rRy5yZW1vdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxheW91dCA9IE1pbmRRdWVyaWVzLmdldExheW91dEJ5RWxlbWVudChwYXJlbnQpIGFzIE1pbmRMYXlvdXRUeXBlO1xuICAgICAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QodGhpcy5ub2RlLm9yaWdpbikpIHtcbiAgICAgICAgICAgIHRoaXMubGlua0cgPSBkcmF3QWJzdHJhY3RMaW5rKHRoaXMuYm9hcmQsIHRoaXMubm9kZSwgaXNIb3Jpem9udGFsTGF5b3V0KGxheW91dCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5saW5rRyA9IGRyYXdMaW5rKHRoaXMuYm9hcmQsIHBhcmVudE5vZGUsIHRoaXMubm9kZSwgaXNIb3Jpem9udGFsTGF5b3V0KGxheW91dCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZy5hcHBlbmQodGhpcy5saW5rRyk7XG4gICAgfVxuXG4gICAgZGVzdHJveUxpbmUoKSB7XG4gICAgICAgIGlmICh0aGlzLmxpbmtHKSB7XG4gICAgICAgICAgICB0aGlzLmxpbmtHLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhd0V4dGVuZCgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95RXh0ZW5kKCk7XG5cbiAgICAgICAgdGhpcy5leHRlbmRHID0gY3JlYXRlRygpO1xuICAgICAgICB0aGlzLmV4dGVuZEcuY2xhc3NMaXN0LmFkZCgnZXh0ZW5kJyk7XG4gICAgICAgIHRoaXMuZy5hcHBlbmQodGhpcy5leHRlbmRHKTtcblxuICAgICAgICBpZiAodGhpcy5lbGVtZW50LmlzQ29sbGFwc2VkKSB7XG4gICAgICAgICAgICB0aGlzLmcuY2xhc3NMaXN0LmFkZCgnY29sbGFwc2VkJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmcuY2xhc3NMaXN0LnJlbW92ZSgnY29sbGFwc2VkJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5vZGVJbnNlcnREcmF3ZXIuZHJhdyh0aGlzLmVsZW1lbnQsIHRoaXMuZXh0ZW5kRyEpO1xuICAgICAgICB0aGlzLmNvbGxhcHNlRHJhd2VyLmRyYXcodGhpcy5lbGVtZW50LCB0aGlzLmV4dGVuZEchKTtcbiAgICB9XG5cbiAgICBkZXN0cm95RXh0ZW5kKCkge1xuICAgICAgICBpZiAodGhpcy5leHRlbmRHKSB7XG4gICAgICAgICAgICB0aGlzLmV4dGVuZEcucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3VGV4dCgpIHtcbiAgICAgICAgdGhpcy50ZXh0TWFuYWdlLmRyYXcodGhpcy5lbGVtZW50LmRhdGEudG9waWMpO1xuICAgICAgICB0aGlzLmcuYXBwZW5kKHRoaXMudGV4dE1hbmFnZS5nKTtcbiAgICB9XG5cbiAgICB0cmFja0J5ID0gKGluZGV4OiBudW1iZXIsIG5vZGU6IE1pbmROb2RlKSA9PiB7XG4gICAgICAgIHJldHVybiBub2RlLm9yaWdpbi5pZDtcbiAgICB9O1xuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMudGV4dE1hbmFnZS5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMubm9kZUVtb2ppc0RyYXdlci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIGlmIChFTEVNRU5UX1RPX05PREUuZ2V0KHRoaXMuZWxlbWVudCkgPT09IHRoaXMubm9kZSkge1xuICAgICAgICAgICAgRUxFTUVOVF9UT19OT0RFLmRlbGV0ZSh0aGlzLmVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -23,12 +23,12 @@ export const withAbstract = (board) => {
23
23
  const point = transformPoint(board, toPoint(event.x, event.y, host));
24
24
  activeAbstractElement = activeAbstractElements.find(element => {
25
25
  abstractHandlePosition = getHitAbstractHandle(board, element, point);
26
- if (newBoard?.onAbstractResize) {
27
- newBoard.onAbstractResize(AbstractResizeState.start);
28
- }
29
26
  return abstractHandlePosition;
30
27
  });
31
28
  if (activeAbstractElement) {
29
+ if (newBoard?.onAbstractResize) {
30
+ newBoard.onAbstractResize(AbstractResizeState.start);
31
+ }
32
32
  startPoint = point;
33
33
  return;
34
34
  }
@@ -108,4 +108,4 @@ export const withAbstract = (board) => {
108
108
  };
109
109
  return board;
110
110
  };
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hYnN0cmFjdC1yZXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9wbHVnaW5zL3dpdGgtYWJzdHJhY3QtcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxhQUFhLEVBQ2IsVUFBVSxFQUNWLFlBQVksRUFHWixVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixPQUFPLEVBQ1AsY0FBYyxFQUNqQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsWUFBWSxFQUE4QixrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFxQixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFzQixNQUFNLDhCQUE4QixDQUFDO0FBRS9HLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBZ0IsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDM0QsTUFBTSxRQUFRLEdBQUcsS0FBd0MsQ0FBQztJQUUxRCxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDaEQsSUFBSSxxQkFBOEMsQ0FBQztJQUNuRCxJQUFJLHNCQUEwRCxDQUFDO0lBQy9ELElBQUksZUFBd0MsQ0FBQztJQUM3QyxJQUFJLFVBQTZCLENBQUM7SUFDbEMsSUFBSSxXQUE0RCxDQUFDO0lBRWpFLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxL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cUJBQXFCLENBQUMsQ0FBQzthQUNoRjtZQUNELHFCQUFxQixHQUFHLFNBQVMsQ0FBQztTQUNyQztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQixDQUFDLENBQUM7SUFDRixPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEJPQVJEX1RPX0hPU1QsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgUGxhaXRQbHVnaW4sXG4gICAgUG9pbnQsXG4gICAgVHJhbnNmb3JtcyxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIGlzTWFpblBvaW50ZXIsXG4gICAgdG9Qb2ludCxcbiAgICB0cmFuc2Zvcm1Qb2ludFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUsIExheW91dE5vZGUsIE1pbmRMYXlvdXRUeXBlLCBpc0hvcml6b250YWxMYXlvdXQsIGlzU3RhbmRhcmRMYXlvdXQgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWluZE5vZGVDb21wb25lbnQsIE1pbmRRdWVyaWVzIH0gZnJvbSAnLi4vcHVibGljLWFwaSc7XG5pbXBvcnQgeyBmaW5kTG9jYXRpb25MZWZ0SW5kZXgsIGdldEhpdEFic3RyYWN0SGFuZGxlLCBnZXRMb2NhdGlvblNjb3BlLCBoYW5kbGVUb3VjaGVkQWJzdHJhY3QgfSBmcm9tICcuLi91dGlscy9hYnN0cmFjdC9yZXNpemUnO1xuaW1wb3J0IHsgc2VwYXJhdGVDaGlsZHJlbiB9IGZyb20gJy4uL3V0aWxzL2Fic3RyYWN0L2NvbW1vbic7XG5pbXBvcnQgeyBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLCBBYnN0cmFjdFJlc2l6ZVN0YXRlLCBQbGFpdEFic3RyYWN0Qm9hcmQgfSBmcm9tICcuL3dpdGgtYWJzdHJhY3QtcmVzaXplLmJvYXJkJztcblxuZXhwb3J0IGNvbnN0IHdpdGhBYnN0cmFjdDogUGxhaXRQbHVnaW4gPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCBuZXdCb2FyZCA9IGJvYXJkIGFzIFBsYWl0Qm9hcmQgJiBQbGFpdEFic3RyYWN0Qm9hcmQ7XG5cbiAgICBjb25zdCB7IG1vdXNlZG93biwgbW91c2Vtb3ZlLCBtb3VzZXVwIH0gPSBib2FyZDtcbiAgICBsZXQgYWN0aXZlQWJzdHJhY3RFbGVtZW50OiBNaW5kRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBsZXQgYWJzdHJhY3RIYW5kbGVQb3NpdGlvbjogQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiB8IHVuZGVmaW5lZDtcbiAgICBsZXQgdG91Y2hlZEFic3RyYWN0OiBNaW5kRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBsZXQgc3RhcnRQb2ludDogUG9pbnQgfCB1bmRlZmluZWQ7XG4gICAgbGV0IG5ld1Byb3BlcnR5OiB7IGVuZDogbnVtYmVyIH0gfCB7IHN0YXJ0OiBudW1iZXIgfSB8IHVuZGVmaW5lZDtcblxuICAgIGJvYXJkLm1vdXNlZG93biA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIWlzTWFpblBvaW50ZXIoZXZlbnQpKSB7XG4gICAgICAgICAgICBtb3VzZWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBjb25zdCBhY3RpdmVBYnN0cmFjdEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCkuZmlsdGVyKGVsZW1lbnQgPT4gQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoZWxlbWVudCkpIGFzIE1pbmRFbGVtZW50W107XG4gICAgICAgIGNvbnN0IGhvc3QgPSBCT0FSRF9UT19IT1NULmdldChib2FyZCk7XG4gICAgICAgIGNvbnN0IHBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgaG9zdCEpKTtcblxuICAgICAgICBhY3RpdmVBYnN0cmFjdEVsZW1lbnQgPSBhY3RpdmVBYnN0cmFjdEVsZW1lbnRzLmZpbmQoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uID0gZ2V0SGl0QWJzdHJhY3RIYW5kbGUoYm9hcmQsIGVsZW1lbnQgYXMgTWluZEVsZW1lbnQsIHBvaW50KTtcbiAgICAgICAgICAgIGlmIChuZXdCb2FyZD8ub25BYnN0cmFjdFJlc2l6ZSkge1xuICAgICAgICAgICAgICAgIG5ld0JvYXJkLm9uQWJzdHJhY3RSZXNpemUoQWJzdHJhY3RSZXNpemVTdGF0ZS5zdGFydCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYWJzdHJhY3RIYW5kbGVQb3NpdGlvbjtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGFjdGl2ZUFic3RyYWN0RWxlbWVudCkge1xuICAgICAgICAgICAgc3RhcnRQb2ludCA9IHBvaW50O1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbW91c2Vkb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQubW91c2Vtb3ZlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICBjb25zdCBob3N0ID0gQk9BUkRfVE9fSE9TVC5nZXQoYm9hcmQpO1xuICAgICAgICBjb25zdCBlbmRQb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIGhvc3QhKSk7XG5cbiAgICAgICAgdG91Y2hlZEFic3RyYWN0ID0gaGFuZGxlVG91Y2hlZEFic3RyYWN0KGJvYXJkLCB0b3VjaGVkQWJzdHJhY3QsIGVuZFBvaW50KTtcblxuICAgICAgICBpZiAoYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiAmJiBhY3RpdmVBYnN0cmFjdEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb25zdCBhYnN0cmFjdENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoYWN0aXZlQWJzdHJhY3RFbGVtZW50KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBhYnN0cmFjdENvbXBvbmVudC5lbGVtZW50O1xuICAgICAgICAgICAgY29uc3Qgbm9kZUxheW91dCA9IE1pbmRRdWVyaWVzLmdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQoYm9hcmQsIGFjdGl2ZUFic3RyYWN0RWxlbWVudCBhcyBNaW5kRWxlbWVudCkgYXMgTWluZExheW91dFR5cGU7XG4gICAgICAgICAgICBjb25zdCBpc0hvcml6b250YWwgPSBpc0hvcml6b250YWxMYXlvdXQobm9kZUxheW91dCk7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gTWluZEVsZW1lbnQuZ2V0UGFyZW50KGVsZW1lbnQpO1xuXG4gICAgICAgICAgICBsZXQgY2hpbGRyZW4gPSBwYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xuXG4gICAgICAgICAgICBjb25zdCBwYXJlbnRMYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRMYXlvdXRCeUVsZW1lbnQocGFyZW50RWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoaXNTdGFuZGFyZExheW91dChwYXJlbnRMYXlvdXQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmlnaHROb2RlQ291bnQgPSBwYXJlbnRFbGVtZW50LnJpZ2h0Tm9kZUNvdW50ITtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGxlZnRDaGlsZHJlbiwgcmlnaHRDaGlsZHJlbiB9ID0gc2VwYXJhdGVDaGlsZHJlbihwYXJlbnRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoKGFjdGl2ZUFic3RyYWN0RWxlbWVudCBhcyBNaW5kRWxlbWVudCkuZW5kISA8IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gcmlnaHRDaGlsZHJlbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKChhY3RpdmVBYnN0cmFjdEVsZW1lbnQgYXMgTWluZEVsZW1lbnQpLnN0YXJ0ISA+PSByaWdodE5vZGVDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IGxlZnRDaGlsZHJlbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChuZXdCb2FyZD8ub25BYnN0cmFjdFJlc2l6ZSkge1xuICAgICAgICAgICAgICAgIG5ld0JvYXJkLm9uQWJzdHJhY3RSZXNpemUoQWJzdHJhY3RSZXNpemVTdGF0ZS5yZXNpemluZyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc2l6aW5nTG9jYXRpb24gPSBpc0hvcml6b250YWwgPyBlbmRQb2ludFsxXSA6IGVuZFBvaW50WzBdO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gKE1pbmRFbGVtZW50LmdldE5vZGUocGFyZW50RWxlbWVudCkgYXMgdW5rbm93bikgYXMgTGF5b3V0Tm9kZTtcbiAgICAgICAgICAgIGNvbnN0IHNjb3BlID0gZ2V0TG9jYXRpb25TY29wZShib2FyZCwgYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiwgY2hpbGRyZW4sIGVsZW1lbnQsIHBhcmVudCwgaXNIb3Jpem9udGFsKTtcbiAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uID0gTWF0aC5taW4oc2NvcGUubWF4LCBNYXRoLm1heChzY29wZS5taW4sIHJlc2l6aW5nTG9jYXRpb24pKTtcblxuICAgICAgICAgICAgbGV0IGxvY2F0aW9uSW5kZXggPSBmaW5kTG9jYXRpb25MZWZ0SW5kZXgoYm9hcmQsIGNoaWxkcmVuLCBsb2NhdGlvbiwgaXNIb3Jpem9udGFsKTtcblxuICAgICAgICAgICAgY29uc3QgaXNQcm9wZXJ0eVVuY2hhbmdlZCA9XG4gICAgICAgICAgICAgICAgKGFic3RyYWN0SGFuZGxlUG9zaXRpb24gPT09IEFic3RyYWN0SGFuZGxlUG9zaXRpb24uc3RhcnQgJiZcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25JbmRleCArIDEgPT09IChhY3RpdmVBYnN0cmFjdEVsZW1lbnQgYXMgTWluZEVsZW1lbnQpLnN0YXJ0ISkgfHxcbiAgICAgICAgICAgICAgICAoYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiA9PT0gQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5lbmQgJiYgbG9jYXRpb25JbmRleCA9PT0gKGFjdGl2ZUFic3RyYWN0RWxlbWVudCBhcyBNaW5kRWxlbWVudCkuZW5kISk7XG5cbiAgICAgICAgICAgIGlmIChpc1Byb3BlcnR5VW5jaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgbmV3UHJvcGVydHkgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChpc1N0YW5kYXJkTGF5b3V0KHBhcmVudC5sYXlvdXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0Tm9kZUNvdW50ID0gcGFyZW50Lm9yaWdpbi5yaWdodE5vZGVDb3VudDtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0YXJ0ID0gZWxlbWVudC5zdGFydCE7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydCA+PSByaWdodE5vZGVDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25JbmRleCArPSByaWdodE5vZGVDb3VudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG5ld1Byb3BlcnR5ID1cbiAgICAgICAgICAgICAgICAgICAgYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiA9PT0gQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5zdGFydCA/IHsgc3RhcnQ6IGxvY2F0aW9uSW5kZXggKyAxIH0gOiB7IGVuZDogbG9jYXRpb25JbmRleCB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhYnN0cmFjdENvbXBvbmVudCEuYWN0aXZlRHJhd2VyLnVwZGF0ZUFic3RyYWN0T3V0bGluZShhY3RpdmVBYnN0cmFjdEVsZW1lbnQsIGFic3RyYWN0SGFuZGxlUG9zaXRpb24sIGxvY2F0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBtb3VzZW1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5tb3VzZXVwID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIHN0YXJ0UG9pbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGFic3RyYWN0SGFuZGxlUG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChhY3RpdmVBYnN0cmFjdEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGlmIChuZXdCb2FyZD8ub25BYnN0cmFjdFJlc2l6ZSkge1xuICAgICAgICAgICAgICAgIG5ld0JvYXJkLm9uQWJzdHJhY3RSZXNpemUoQWJzdHJhY3RSZXNpemVTdGF0ZS5lbmQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobmV3UHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgYWN0aXZlQWJzdHJhY3RFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIG5ld1Byb3BlcnR5LCBwYXRoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWJzdHJhY3RDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KGFjdGl2ZUFic3RyYWN0RWxlbWVudCkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgYWJzdHJhY3RDb21wb25lbnQhLmFjdGl2ZURyYXdlci51cGRhdGVBYnN0cmFjdE91dGxpbmUoYWN0aXZlQWJzdHJhY3RFbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjdGl2ZUFic3RyYWN0RWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBtb3VzZXVwKGV2ZW50KTtcbiAgICB9O1xuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hYnN0cmFjdC1yZXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9wbHVnaW5zL3dpdGgtYWJzdHJhY3QtcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxhQUFhLEVBQ2IsVUFBVSxFQUNWLFlBQVksRUFHWixVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixPQUFPLEVBQ1AsY0FBYyxFQUNqQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsWUFBWSxFQUE4QixrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFxQixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFzQixNQUFNLDhCQUE4QixDQUFDO0FBRS9HLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBZ0IsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDM0QsTUFBTSxRQUFRLEdBQUcsS0FBd0MsQ0FBQztJQUUxRCxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDaEQsSUFBSSxxQkFBOEMsQ0FBQztJQUNuRCxJQUFJLHNCQUEwRCxDQUFDO0lBQy9ELElBQUksZUFBd0MsQ0FBQztJQUM3QyxJQUFJLFVBQTZCLENBQUM7SUFDbEMsSUFBSSxXQUE0RCxDQUFDO0lBRWpFLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxL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cUJBQXFCLENBQUMsQ0FBQzthQUNoRjtZQUNELHFCQUFxQixHQUFHLFNBQVMsQ0FBQztTQUNyQztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQixDQUFDLENBQUM7SUFDRixPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEJPQVJEX1RPX0hPU1QsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgUGxhaXRQbHVnaW4sXG4gICAgUG9pbnQsXG4gICAgVHJhbnNmb3JtcyxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIGlzTWFpblBvaW50ZXIsXG4gICAgdG9Qb2ludCxcbiAgICB0cmFuc2Zvcm1Qb2ludFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUsIExheW91dE5vZGUsIE1pbmRMYXlvdXRUeXBlLCBpc0hvcml6b250YWxMYXlvdXQsIGlzU3RhbmRhcmRMYXlvdXQgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWluZE5vZGVDb21wb25lbnQsIE1pbmRRdWVyaWVzIH0gZnJvbSAnLi4vcHVibGljLWFwaSc7XG5pbXBvcnQgeyBmaW5kTG9jYXRpb25MZWZ0SW5kZXgsIGdldEhpdEFic3RyYWN0SGFuZGxlLCBnZXRMb2NhdGlvblNjb3BlLCBoYW5kbGVUb3VjaGVkQWJzdHJhY3QgfSBmcm9tICcuLi91dGlscy9hYnN0cmFjdC9yZXNpemUnO1xuaW1wb3J0IHsgc2VwYXJhdGVDaGlsZHJlbiB9IGZyb20gJy4uL3V0aWxzL2Fic3RyYWN0L2NvbW1vbic7XG5pbXBvcnQgeyBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLCBBYnN0cmFjdFJlc2l6ZVN0YXRlLCBQbGFpdEFic3RyYWN0Qm9hcmQgfSBmcm9tICcuL3dpdGgtYWJzdHJhY3QtcmVzaXplLmJvYXJkJztcblxuZXhwb3J0IGNvbnN0IHdpdGhBYnN0cmFjdDogUGxhaXRQbHVnaW4gPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCBuZXdCb2FyZCA9IGJvYXJkIGFzIFBsYWl0Qm9hcmQgJiBQbGFpdEFic3RyYWN0Qm9hcmQ7XG5cbiAgICBjb25zdCB7IG1vdXNlZG93biwgbW91c2Vtb3ZlLCBtb3VzZXVwIH0gPSBib2FyZDtcbiAgICBsZXQgYWN0aXZlQWJzdHJhY3RFbGVtZW50OiBNaW5kRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBsZXQgYWJzdHJhY3RIYW5kbGVQb3NpdGlvbjogQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiB8IHVuZGVmaW5lZDtcbiAgICBsZXQgdG91Y2hlZEFic3RyYWN0OiBNaW5kRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBsZXQgc3RhcnRQb2ludDogUG9pbnQgfCB1bmRlZmluZWQ7XG4gICAgbGV0IG5ld1Byb3BlcnR5OiB7IGVuZDogbnVtYmVyIH0gfCB7IHN0YXJ0OiBudW1iZXIgfSB8IHVuZGVmaW5lZDtcblxuICAgIGJvYXJkLm1vdXNlZG93biA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIWlzTWFpblBvaW50ZXIoZXZlbnQpKSB7XG4gICAgICAgICAgICBtb3VzZWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWN0aXZlQWJzdHJhY3RFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpLmZpbHRlcihlbGVtZW50ID0+IEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGVsZW1lbnQpKSBhcyBNaW5kRWxlbWVudFtdO1xuICAgICAgICBjb25zdCBob3N0ID0gQk9BUkRfVE9fSE9TVC5nZXQoYm9hcmQpO1xuICAgICAgICBjb25zdCBwb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIGhvc3QhKSk7XG5cbiAgICAgICAgYWN0aXZlQWJzdHJhY3RFbGVtZW50ID0gYWN0aXZlQWJzdHJhY3RFbGVtZW50cy5maW5kKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiA9IGdldEhpdEFic3RyYWN0SGFuZGxlKGJvYXJkLCBlbGVtZW50IGFzIE1pbmRFbGVtZW50LCBwb2ludCk7XG4gICAgICAgICAgICByZXR1cm4gYWJzdHJhY3RIYW5kbGVQb3NpdGlvbjtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGFjdGl2ZUFic3RyYWN0RWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKG5ld0JvYXJkPy5vbkFic3RyYWN0UmVzaXplKSB7XG4gICAgICAgICAgICAgICAgbmV3Qm9hcmQub25BYnN0cmFjdFJlc2l6ZShBYnN0cmFjdFJlc2l6ZVN0YXRlLnN0YXJ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSBwb2ludDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIG1vdXNlZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLm1vdXNlbW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgaG9zdCA9IEJPQVJEX1RPX0hPU1QuZ2V0KGJvYXJkKTtcbiAgICAgICAgY29uc3QgZW5kUG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBob3N0ISkpO1xuXG4gICAgICAgIHRvdWNoZWRBYnN0cmFjdCA9IGhhbmRsZVRvdWNoZWRBYnN0cmFjdChib2FyZCwgdG91Y2hlZEFic3RyYWN0LCBlbmRQb2ludCk7XG5cbiAgICAgICAgaWYgKGFic3RyYWN0SGFuZGxlUG9zaXRpb24gJiYgYWN0aXZlQWJzdHJhY3RFbGVtZW50KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgY29uc3QgYWJzdHJhY3RDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KGFjdGl2ZUFic3RyYWN0RWxlbWVudCkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gYWJzdHJhY3RDb21wb25lbnQuZWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVMYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KGJvYXJkLCBhY3RpdmVBYnN0cmFjdEVsZW1lbnQgYXMgTWluZEVsZW1lbnQpIGFzIE1pbmRMYXlvdXRUeXBlO1xuICAgICAgICAgICAgY29uc3QgaXNIb3Jpem9udGFsID0gaXNIb3Jpem9udGFsTGF5b3V0KG5vZGVMYXlvdXQpO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50RWxlbWVudCA9IE1pbmRFbGVtZW50LmdldFBhcmVudChlbGVtZW50KTtcblxuICAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gcGFyZW50RWxlbWVudC5jaGlsZHJlbjtcblxuICAgICAgICAgICAgY29uc3QgcGFyZW50TGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0TGF5b3V0QnlFbGVtZW50KHBhcmVudEVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKGlzU3RhbmRhcmRMYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0Tm9kZUNvdW50ID0gcGFyZW50RWxlbWVudC5yaWdodE5vZGVDb3VudCE7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBsZWZ0Q2hpbGRyZW4sIHJpZ2h0Q2hpbGRyZW4gfSA9IHNlcGFyYXRlQ2hpbGRyZW4ocGFyZW50RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKChhY3RpdmVBYnN0cmFjdEVsZW1lbnQgYXMgTWluZEVsZW1lbnQpLmVuZCEgPCByaWdodE5vZGVDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IHJpZ2h0Q2hpbGRyZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICgoYWN0aXZlQWJzdHJhY3RFbGVtZW50IGFzIE1pbmRFbGVtZW50KS5zdGFydCEgPj0gcmlnaHROb2RlQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBsZWZ0Q2hpbGRyZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobmV3Qm9hcmQ/Lm9uQWJzdHJhY3RSZXNpemUpIHtcbiAgICAgICAgICAgICAgICBuZXdCb2FyZC5vbkFic3RyYWN0UmVzaXplKEFic3RyYWN0UmVzaXplU3RhdGUucmVzaXppbmcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXNpemluZ0xvY2F0aW9uID0gaXNIb3Jpem9udGFsID8gZW5kUG9pbnRbMV0gOiBlbmRQb2ludFswXTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IChNaW5kRWxlbWVudC5nZXROb2RlKHBhcmVudEVsZW1lbnQpIGFzIHVua25vd24pIGFzIExheW91dE5vZGU7XG4gICAgICAgICAgICBjb25zdCBzY29wZSA9IGdldExvY2F0aW9uU2NvcGUoYm9hcmQsIGFic3RyYWN0SGFuZGxlUG9zaXRpb24sIGNoaWxkcmVuLCBlbGVtZW50LCBwYXJlbnQsIGlzSG9yaXpvbnRhbCk7XG4gICAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IE1hdGgubWluKHNjb3BlLm1heCwgTWF0aC5tYXgoc2NvcGUubWluLCByZXNpemluZ0xvY2F0aW9uKSk7XG5cbiAgICAgICAgICAgIGxldCBsb2NhdGlvbkluZGV4ID0gZmluZExvY2F0aW9uTGVmdEluZGV4KGJvYXJkLCBjaGlsZHJlbiwgbG9jYXRpb24sIGlzSG9yaXpvbnRhbCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGlzUHJvcGVydHlVbmNoYW5nZWQgPVxuICAgICAgICAgICAgICAgIChhYnN0cmFjdEhhbmRsZVBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0ICYmXG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uSW5kZXggKyAxID09PSAoYWN0aXZlQWJzdHJhY3RFbGVtZW50IGFzIE1pbmRFbGVtZW50KS5zdGFydCEpIHx8XG4gICAgICAgICAgICAgICAgKGFic3RyYWN0SGFuZGxlUG9zaXRpb24gPT09IEFic3RyYWN0SGFuZGxlUG9zaXRpb24uZW5kICYmIGxvY2F0aW9uSW5kZXggPT09IChhY3RpdmVBYnN0cmFjdEVsZW1lbnQgYXMgTWluZEVsZW1lbnQpLmVuZCEpO1xuXG4gICAgICAgICAgICBpZiAoaXNQcm9wZXJ0eVVuY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIG5ld1Byb3BlcnR5ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNTdGFuZGFyZExheW91dChwYXJlbnQubGF5b3V0KSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByaWdodE5vZGVDb3VudCA9IHBhcmVudC5vcmlnaW4ucmlnaHROb2RlQ291bnQ7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzdGFydCA9IGVsZW1lbnQuc3RhcnQhO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gcmlnaHROb2RlQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uSW5kZXggKz0gcmlnaHROb2RlQ291bnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0eSA9XG4gICAgICAgICAgICAgICAgICAgIGFic3RyYWN0SGFuZGxlUG9zaXRpb24gPT09IEFic3RyYWN0SGFuZGxlUG9zaXRpb24uc3RhcnQgPyB7IHN0YXJ0OiBsb2NhdGlvbkluZGV4ICsgMSB9IDogeyBlbmQ6IGxvY2F0aW9uSW5kZXggfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWJzdHJhY3RDb21wb25lbnQhLmFjdGl2ZURyYXdlci51cGRhdGVBYnN0cmFjdE91dGxpbmUoYWN0aXZlQWJzdHJhY3RFbGVtZW50LCBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uLCBsb2NhdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgbW91c2Vtb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQubW91c2V1cCA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBzdGFydFBvaW50ID0gdW5kZWZpbmVkO1xuICAgICAgICBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoYWN0aXZlQWJzdHJhY3RFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAobmV3Qm9hcmQ/Lm9uQWJzdHJhY3RSZXNpemUpIHtcbiAgICAgICAgICAgICAgICBuZXdCb2FyZC5vbkFic3RyYWN0UmVzaXplKEFic3RyYWN0UmVzaXplU3RhdGUuZW5kKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5ld1Byb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGFjdGl2ZUFic3RyYWN0RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCBuZXdQcm9wZXJ0eSwgcGF0aCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFic3RyYWN0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChhY3RpdmVBYnN0cmFjdEVsZW1lbnQpIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgIGFic3RyYWN0Q29tcG9uZW50IS5hY3RpdmVEcmF3ZXIudXBkYXRlQWJzdHJhY3RPdXRsaW5lKGFjdGl2ZUFic3RyYWN0RWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY3RpdmVBYnN0cmFjdEVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgbW91c2V1cChldmVudCk7XG4gICAgfTtcbiAgICByZXR1cm4gYm9hcmQ7XG59O1xuIl19
@@ -1,8 +1,7 @@
1
- import { distanceBetweenPointAndPoint, Path, PlaitBoard, toPoint, transformPoint, Transforms, getSelectedElements, depthFirstRecursion, createG, PlaitNode, PlaitPointerType } from '@plait/core';
1
+ import { distanceBetweenPointAndPoint, Path, PlaitBoard, toPoint, transformPoint, Transforms, getSelectedElements, depthFirstRecursion, createG, PlaitNode, PlaitPointerType, getHitElements } from '@plait/core';
2
2
  import { AbstractNode, getNonAbstractChildren } from '@plait/layouts';
3
3
  import { MindElement, PlaitMind } from '../interfaces/element';
4
4
  import { deleteElementHandleAbstract, deleteElementsHandleRightNodeCount, getCorrespondingAbstract, getFirstLevelElement, getOverallAbstracts, getValidAbstractRefs, insertElementHandleAbstract, insertElementHandleRightNodeCount } from '../utils';
5
- import { isHitMindElement } from '../utils/position/node';
6
5
  import { addActiveOnDragOrigin, isDragging, isDropStandardRight, removeActiveOnDragOrigin, setIsDragging } from '../utils/dnd/common';
7
6
  import { detectDropTarget, getPathByDropTarget } from '../utils/dnd/detector';
8
7
  import { drawFakeDragNode, drawFakeDropNode } from '../utils/draw/node-dnd';
@@ -26,33 +25,29 @@ export const withNodeDnd = (board) => {
26
25
  mousedown(event);
27
26
  return;
28
27
  }
29
- // 确认是否 hit 节点
30
28
  const point = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
31
29
  const selectedElements = getSelectedElements(board);
32
- depthFirstRecursion(board, element => {
33
- if (activeElements.length || !MindElement.isMindElement(board, element)) {
34
- return;
35
- }
36
- const isHitElement = isHitMindElement(board, point, element) && !element.isRoot && !AbstractNode.isAbstract(element);
37
- const isAllMindElement = selectedElements.every(element => MindElement.isMindElement(board, element));
38
- const isMultiple = isHitElement && selectedElements.length > 1 && selectedElements.includes(element) && isAllMindElement;
39
- const isSingle = isHitElement && !(selectedElements.length > 1 && selectedElements.includes(element));
40
- if (isSingle) {
41
- activeElements = [element];
30
+ const hitTarget = getHitElements(board, { ranges: [{ anchor: point, focus: point }] }, (element) => {
31
+ return MindElement.isMindElement(board, element);
32
+ });
33
+ const targetElement = hitTarget && hitTarget.length === 1 ? hitTarget[0] : null;
34
+ if (targetElement &&
35
+ MindElement.isMindElement(board, targetElement) &&
36
+ !targetElement.isRoot &&
37
+ !AbstractNode.isAbstract(targetElement)) {
38
+ const targetElements = selectedElements.filter(element => MindElement.isMindElement(board, element) && !element.isRoot && !AbstractNode.isAbstract(element));
39
+ const isMultiple = selectedElements.length > 0 && selectedElements.includes(targetElement);
40
+ const isSingle = !isMultiple && selectedElements.length === 0;
41
+ if (isMultiple) {
42
+ activeElements = targetElements;
42
43
  startPoint = point;
43
44
  }
44
- else if (isMultiple) {
45
- activeElements = selectedElements;
45
+ else if (isSingle) {
46
+ activeElements = [targetElement];
46
47
  startPoint = point;
47
48
  }
48
- }, node => {
49
- if (PlaitBoard.isBoard(node) || board.isRecursion(node)) {
50
- return true;
51
- }
52
- else {
53
- return false;
54
- }
55
- });
49
+ event.preventDefault();
50
+ }
56
51
  if (activeElements.length) {
57
52
  correspondingElements = getOverallAbstracts(board, activeElements);
58
53
  event.preventDefault();
@@ -178,4 +173,4 @@ export const withNodeDnd = (board) => {
178
173
  };
179
174
  return board;
180
175
  };
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1ub2RlLWRuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3BsdWdpbnMvd2l0aC1ub2RlLWRuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsNEJBQTRCLEVBRTVCLElBQUksRUFDSixVQUFVLEVBRVYsT0FBTyxFQUNQLGNBQWMsRUFDZCxVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsU0FBUyxFQUNULGdCQUFnQixFQUNuQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcvRCxPQUFPLEVBQ0gsMkJBQTJCLEVBQzNCLGtDQUFrQyxFQUNsQyx3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLGlDQUFpQyxFQUNwQyxNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RJLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFbkYsTUFBTSxn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LEdBQUcsU0FBUyxDQUFDO1lBQzFCLFVBQVUsR0FBRyxJQUFJLENBQUM7U0FDckI7UUFDRCxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50LFxuICAgIElTX1RFWFRfRURJVEFCTEUsXG4gICAgUGF0aCxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBvaW50LFxuICAgIHRvUG9pbnQsXG4gICAgdHJhbnNmb3JtUG9pbnQsXG4gICAgVHJhbnNmb3JtcyxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIGRlcHRoRmlyc3RSZWN1cnNpb24sXG4gICAgY3JlYXRlRyxcbiAgICBQbGFpdE5vZGUsXG4gICAgUGxhaXRQb2ludGVyVHlwZVxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUsIGdldE5vbkFic3RyYWN0Q2hpbGRyZW4gfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCwgUGxhaXRNaW5kIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IERldGVjdFJlc3VsdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvbm9kZSc7XG5cbmltcG9ydCB7XG4gICAgZGVsZXRlRWxlbWVudEhhbmRsZUFic3RyYWN0LFxuICAgIGRlbGV0ZUVsZW1lbnRzSGFuZGxlUmlnaHROb2RlQ291bnQsXG4gICAgZ2V0Q29ycmVzcG9uZGluZ0Fic3RyYWN0LFxuICAgIGdldEZpcnN0TGV2ZWxFbGVtZW50LFxuICAgIGdldE92ZXJhbGxBYnN0cmFjdHMsXG4gICAgZ2V0VmFsaWRBYnN0cmFjdFJlZnMsXG4gICAgaW5zZXJ0RWxlbWVudEhhbmRsZUFic3RyYWN0LFxuICAgIGluc2VydEVsZW1lbnRIYW5kbGVSaWdodE5vZGVDb3VudFxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBpc0hpdE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMvcG9zaXRpb24vbm9kZSc7XG5pbXBvcnQgeyBhZGRBY3RpdmVPbkRyYWdPcmlnaW4sIGlzRHJhZ2dpbmcsIGlzRHJvcFN0YW5kYXJkUmlnaHQsIHJlbW92ZUFjdGl2ZU9uRHJhZ09yaWdpbiwgc2V0SXNEcmFnZ2luZyB9IGZyb20gJy4uL3V0aWxzL2RuZC9jb21tb24nO1xuaW1wb3J0IHsgZGV0ZWN0RHJvcFRhcmdldCwgZ2V0UGF0aEJ5RHJvcFRhcmdldCB9IGZyb20gJy4uL3V0aWxzL2RuZC9kZXRlY3Rvcic7XG5pbXBvcnQgeyBkcmF3RmFrZURyYWdOb2RlLCBkcmF3RmFrZURyb3BOb2RlIH0gZnJvbSAnLi4vdXRpbHMvZHJhdy9ub2RlLWRuZCc7XG5pbXBvcnQgeyBNaW5kVHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgYWRqdXN0QWJzdHJhY3RUb05vZGUsIGFkanVzdFJvb3RUb05vZGUgfSBmcm9tICcuLi91dGlscy9ub2RlL2FkanVzdC1ub2RlJztcblxuY29uc3QgRFJBR19NT1ZFX0JVRkZFUiA9IDU7XG5cbmV4cG9ydCBjb25zdCB3aXRoTm9kZURuZCA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHsgbW91c2Vkb3duLCBtb3VzZW1vdmUsIGdsb2JhbE1vdXNldXAgfSA9IGJvYXJkO1xuXG4gICAgbGV0IGFjdGl2ZUVsZW1lbnRzOiBNaW5kRWxlbWVudFtdID0gW107XG4gICAgbGV0IGNvcnJlc3BvbmRpbmdFbGVtZW50czogTWluZEVsZW1lbnRbXSA9IFtdO1xuICAgIGxldCBzdGFydFBvaW50OiBQb2ludDtcbiAgICBsZXQgZHJhZ0Zha2VOb2RlRzogU1ZHR0VsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGZha2VEcm9wTm9kZUc6IFNWR0dFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgIGxldCBkcm9wVGFyZ2V0OiB7IHRhcmdldDogTWluZEVsZW1lbnQ7IGRldGVjdFJlc3VsdDogRGV0ZWN0UmVzdWx0IH0gfCBudWxsID0gbnVsbDtcbiAgICBsZXQgdGFyZ2V0UGF0aDogUGF0aDtcblxuICAgIGJvYXJkLm1vdXNlZG93biA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBQbGFpdEJvYXJkLmlzUmVhZG9ubHkoYm9hcmQpIHx8XG4gICAgICAgICAgICBQbGFpdEJvYXJkLmhhc0JlZW5UZXh0RWRpdGluZyhib2FyZCkgfHxcbiAgICAgICAgICAgICFQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pIHx8XG4gICAgICAgICAgICBldmVudC5idXR0b24gPT09IDJcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBtb3VzZWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g56Gu6K6k5piv5ZCmIGhpdCDoioLngrlcbiAgICAgICAgY29uc3QgcG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpKSk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgZGVwdGhGaXJzdFJlY3Vyc2lvbihcbiAgICAgICAgICAgIChib2FyZCBhcyB1bmtub3duKSBhcyBNaW5kRWxlbWVudCxcbiAgICAgICAgICAgIGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhY3RpdmVFbGVtZW50cy5sZW5ndGggfHwgIU1pbmRFbGVtZW50LmlzTWluZEVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgaXNIaXRFbGVtZW50ID0gaXNIaXRNaW5kRWxlbWVudChib2FyZCwgcG9pbnQsIGVsZW1lbnQpICYmICFlbGVtZW50LmlzUm9vdCAmJiAhQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNBbGxNaW5kRWxlbWVudCA9IHNlbGVjdGVkRWxlbWVudHMuZXZlcnkoZWxlbWVudCA9PiBNaW5kRWxlbWVudC5pc01pbmRFbGVtZW50KGJvYXJkLCBlbGVtZW50KSk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNNdWx0aXBsZSA9IGlzSGl0RWxlbWVudCAmJiBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA+IDEgJiYgc2VsZWN0ZWRFbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSAmJiBpc0FsbE1pbmRFbGVtZW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzU2luZ2xlID0gaXNIaXRFbGVtZW50ICYmICEoc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPiAxICYmIHNlbGVjdGVkRWxlbWVudHMuaW5jbHVkZXMoZWxlbWVudCkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzU2luZ2xlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnRzID0gW2VsZW1lbnRdO1xuICAgICAgICAgICAgICAgICAgICBzdGFydFBvaW50ID0gcG9pbnQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc011bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnRzID0gc2VsZWN0ZWRFbGVtZW50cyBhcyBNaW5kRWxlbWVudFtdO1xuICAgICAgICAgICAgICAgICAgICBzdGFydFBvaW50ID0gcG9pbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChQbGFpdEJvYXJkLmlzQm9hcmQobm9kZSkgfHwgYm9hcmQuaXNSZWN1cnNpb24obm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoYWN0aXZlRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb3JyZXNwb25kaW5nRWxlbWVudHMgPSBnZXRPdmVyYWxsQWJzdHJhY3RzKGJvYXJkLCBhY3RpdmVFbGVtZW50cyk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgbW91c2Vkb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQubW91c2Vtb3ZlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghYm9hcmQub3B0aW9ucy5yZWFkb25seSAmJiBhY3RpdmVFbGVtZW50cz8ubGVuZ3RoICYmIHN0YXJ0UG9pbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVuZFBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KHN0YXJ0UG9pbnRbMF0sIHN0YXJ0UG9pbnRbMV0sIGVuZFBvaW50WzBdLCBlbmRQb2ludFsxXSk7XG4gICAgICAgICAgICBpZiAoZGlzdGFuY2UgPCBEUkFHX01PVkVfQlVGRkVSKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZXRJc0RyYWdnaW5nKGJvYXJkLCB0cnVlKTtcblxuICAgICAgICAgICAgZmFrZURyb3BOb2RlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBjb25zdCBkZXRlY3RQb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgICAgIGRyb3BUYXJnZXQgPSBkZXRlY3REcm9wVGFyZ2V0KGJvYXJkLCBkZXRlY3RQb2ludCwgZHJvcFRhcmdldCwgWy4uLmFjdGl2ZUVsZW1lbnRzLCAuLi5jb3JyZXNwb25kaW5nRWxlbWVudHNdKTtcbiAgICAgICAgICAgIGlmIChkcm9wVGFyZ2V0Py50YXJnZXQpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRQYXRoID0gZ2V0UGF0aEJ5RHJvcFRhcmdldChib2FyZCwgZHJvcFRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBmYWtlRHJvcE5vZGVHID0gZHJhd0Zha2VEcm9wTm9kZShib2FyZCwgZHJvcFRhcmdldCwgdGFyZ2V0UGF0aCk7XG4gICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKS5hcHBlbmRDaGlsZChmYWtlRHJvcE5vZGVHKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0WCA9IGVuZFBvaW50WzBdIC0gc3RhcnRQb2ludFswXTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldFkgPSBlbmRQb2ludFsxXSAtIHN0YXJ0UG9pbnRbMV07XG4gICAgICAgICAgICBkcmFnRmFrZU5vZGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGRyYWdGYWtlTm9kZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgICAgICBbLi4uYWN0aXZlRWxlbWVudHMsIC4uLmNvcnJlc3BvbmRpbmdFbGVtZW50c10uZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICBhZGRBY3RpdmVPbkRyYWdPcmlnaW4oZWxlbWVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZUcgPSBkcmF3RmFrZURyYWdOb2RlKGJvYXJkLCBlbGVtZW50LCBvZmZzZXRYLCBvZmZzZXRZKTtcbiAgICAgICAgICAgICAgICBkcmFnRmFrZU5vZGVHPy5hcHBlbmRDaGlsZChub2RlRyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKS5hcHBlbmRDaGlsZChkcmFnRmFrZU5vZGVHKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1vdXNlbW92ZShldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmdsb2JhbE1vdXNldXAgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgZmlyc3RMZXZlbEVsZW1lbnRzID0gZ2V0Rmlyc3RMZXZlbEVsZW1lbnQoYWN0aXZlRWxlbWVudHMpO1xuICAgICAgICBpZiAoIWJvYXJkLm9wdGlvbnMucmVhZG9ubHkgJiYgZmlyc3RMZXZlbEVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgZmlyc3RMZXZlbEVsZW1lbnRzLnB1c2goLi4uY29ycmVzcG9uZGluZ0VsZW1lbnRzKTtcbiAgICAgICAgICAgIGlmIChpc0RyYWdnaW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgICAgIGZpcnN0TGV2ZWxFbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVBY3RpdmVPbkRyYWdPcmlnaW4oZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZHJvcFRhcmdldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFBhdGhSZWYgPSBib2FyZC5wYXRoUmVmKHRhcmdldFBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRQYXRoUmVmID0gYm9hcmQucGF0aFJlZihQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBkcm9wVGFyZ2V0LnRhcmdldCkpO1xuICAgICAgICAgICAgICAgIGxldCBhYnN0cmFjdFJlZnMgPSBnZXRWYWxpZEFic3RyYWN0UmVmcyhib2FyZCwgZmlyc3RMZXZlbEVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxFbGVtZW50cyA9IGZpcnN0TGV2ZWxFbGVtZW50c1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGVsZW1lbnQgPT4gIWFic3RyYWN0UmVmcy5zb21lKHJlZnMgPT4gcmVmcy5hYnN0cmFjdCA9PT0gZWxlbWVudCkpXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWRqdXN0QWJzdHJhY3RUb05vZGUoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoUGxhaXRNaW5kLmlzTWluZChlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhZGp1c3RSb290VG9Ob2RlKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc1ByZXZpb3VzTm9kZSA9IHRhcmdldFBhdGhbdGFyZ2V0UGF0aC5sZW5ndGggLSAxXSAhPT0gMDtcbiAgICAgICAgICAgICAgICBpZiAoaGFzUHJldmlvdXNOb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzRWxlbWVudCA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIFBhdGgucHJldmlvdXModGFyZ2V0UGF0aCkpIGFzIE1pbmRFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb3JyZXNwb25kaW5nQWJzdHJhY3QgPSBnZXRDb3JyZXNwb25kaW5nQWJzdHJhY3QocHJldmlvdXNFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0SGFzQ29ycmVzcG9uZEFic3RyYWN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmdBYnN0cmFjdCAmJiBjb3JyZXNwb25kaW5nQWJzdHJhY3QuZW5kICE9PSB0YXJnZXRQYXRoW3RhcmdldFBhdGgubGVuZ3RoIC0gMV0gLSAxO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0SGFzQ29ycmVzcG9uZEFic3RyYWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGp1c3RlZE5vZGUgPSBhYnN0cmFjdFJlZnMubWFwKHJlZiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkanVzdEFic3RyYWN0VG9Ob2RlKHJlZi5hYnN0cmFjdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbEVsZW1lbnRzLnB1c2goLi4uYWRqdXN0ZWROb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFic3RyYWN0UmVmcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgZWZmZWN0ZWRBYnN0cmFjdHMgPSBkZWxldGVFbGVtZW50SGFuZGxlQWJzdHJhY3QoYm9hcmQsIGZpcnN0TGV2ZWxFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgaW5zZXJ0RWxlbWVudEhhbmRsZUFic3RyYWN0KGJvYXJkLCB0YXJnZXRQYXRoLCBub3JtYWxFbGVtZW50cy5sZW5ndGgsIGZhbHNlLCBlZmZlY3RlZEFic3RyYWN0cyk7XG4gICAgICAgICAgICAgICAgTWluZFRyYW5zZm9ybXMuc2V0QWJzdHJhY3RzQnlSZWZzKGJvYXJkLCBlZmZlY3RlZEFic3RyYWN0cyk7XG5cbiAgICAgICAgICAgICAgICBsZXQgcmVmcyA9IGRlbGV0ZUVsZW1lbnRzSGFuZGxlUmlnaHROb2RlQ291bnQoYm9hcmQsIGZpcnN0TGV2ZWxFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gUGxhaXROb2RlLmdldChib2FyZCwgUGF0aC5wYXJlbnQodGFyZ2V0UGF0aCkpIGFzIE1pbmRFbGVtZW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IHNob3VsZENoYW5nZVJvb3QgPSBpc0Ryb3BTdGFuZGFyZFJpZ2h0KHBhcmVudCwgZHJvcFRhcmdldCk7XG4gICAgICAgICAgICAgICAgaWYgKHNob3VsZENoYW5nZVJvb3QgJiYgdGFyZ2V0RWxlbWVudFBhdGhSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICByZWZzID0gaW5zZXJ0RWxlbWVudEhhbmRsZVJpZ2h0Tm9kZUNvdW50KGJvYXJkLCB0YXJnZXRFbGVtZW50UGF0aFJlZi5jdXJyZW50LnNsaWNlKDAsIDEpLCBub3JtYWxFbGVtZW50cy5sZW5ndGgsIHJlZnMpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIE1pbmRUcmFuc2Zvcm1zLnNldFJpZ2h0Tm9kZUNvdW50QnlSZWZzKGJvYXJkLCByZWZzKTtcbiAgICAgICAgICAgICAgICBNaW5kVHJhbnNmb3Jtcy5yZW1vdmVFbGVtZW50cyhib2FyZCwgZmlyc3RMZXZlbEVsZW1lbnRzKTtcblxuICAgICAgICAgICAgICAgIGxldCBpbnNlcnRQYXRoID0gdGFyZ2V0UGF0aFJlZi5jdXJyZW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFBhdGggPSBQYXRoLnBhcmVudCh0YXJnZXRQYXRoUmVmLmN1cnJlbnQgfHwgdGFyZ2V0UGF0aCk7XG4gICAgICAgICAgICAgICAgaWYgKCFpbnNlcnRQYXRoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIHBhcmVudFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGdldE5vbkFic3RyYWN0Q2hpbGRyZW4ocGFyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0UGF0aCA9IFsuLi5wYXJlbnRQYXRoLCBjaGlsZHJlbi5sZW5ndGggfHwgMF07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgTWluZFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZXMoYm9hcmQsIG5vcm1hbEVsZW1lbnRzLCBpbnNlcnRQYXRoKTtcblxuICAgICAgICAgICAgICAgIGlmIChhYnN0cmFjdFJlZnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIE1pbmRUcmFuc2Zvcm1zLmluc2VydEFic3RyYWN0Tm9kZXMoYm9hcmQsIGFic3RyYWN0UmVmcywgbm9ybWFsRWxlbWVudHMsIGluc2VydFBhdGgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RWxlbWVudFBhdGhSZWYuY3VycmVudCAmJlxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRQYXRoUmVmLmN1cnJlbnQgJiZcbiAgICAgICAgICAgICAgICAgICAgUGF0aC5pc0FuY2VzdG9yKHRhcmdldEVsZW1lbnRQYXRoUmVmLmN1cnJlbnQsIHRhcmdldFBhdGhSZWYuY3VycmVudCkgJiZcbiAgICAgICAgICAgICAgICAgICAgZHJvcFRhcmdldC50YXJnZXQuaXNDb2xsYXBzZWRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IGlzQ29sbGFwc2VkOiBmYWxzZSB9LCB0YXJnZXRFbGVtZW50UGF0aFJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGFyZ2V0RWxlbWVudFBhdGhSZWYudW5yZWYoKTtcbiAgICAgICAgICAgICAgICB0YXJnZXRQYXRoUmVmLnVucmVmKCk7XG5cbiAgICAgICAgICAgICAgICBsZXQgc2V0QWN0aXZlRWxlbWVudHM6IE1pbmRFbGVtZW50W10gPSBbXTtcbiAgICAgICAgICAgICAgICBkZXB0aEZpcnN0UmVjdXJzaW9uKChib2FyZCBhcyB1bmtub3duKSBhcyBNaW5kRWxlbWVudCwgbm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBhY3RpdmVFbGVtZW50cy5zb21lKGVsZW1lbnQgPT4gZWxlbWVudC5pZCA9PT0gbm9kZS5pZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1NlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRBY3RpdmVFbGVtZW50cy5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldFNlbGVjdGlvbldpdGhUZW1wb3JhcnlFbGVtZW50cyhib2FyZCwgc2V0QWN0aXZlRWxlbWVudHMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZXRJc0RyYWdnaW5nKGJvYXJkLCBmYWxzZSk7XG4gICAgICAgICAgICBhY3RpdmVFbGVtZW50cyA9IFtdO1xuICAgICAgICAgICAgZHJhZ0Zha2VOb2RlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBkcmFnRmFrZU5vZGVHID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgZmFrZURyb3BOb2RlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBmYWtlRHJvcE5vZGVHID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgZHJvcFRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZ2xvYmFsTW91c2V1cChldmVudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1ub2RlLWRuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3BsdWdpbnMvd2l0aC1ub2RlLWRuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsNEJBQTRCLEVBRTVCLElBQUksRUFDSixVQUFVLEVBRVYsT0FBTyxFQUNQLGNBQWMsRUFDZCxVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsU0FBUyxFQUNULGdCQUFnQixFQUNoQixjQUFjLEVBRWpCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRy9ELE9BQU8sRUFDSCwyQkFBMkIsRUFDM0Isa0NBQWtDLEVBQ2xDLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQiwyQkFBMkIsRUFDM0IsaUNBQWlDLEVBQ3BDLE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEksT0FBTyxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVuRixNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQUUzQixNQUFNLENB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Q0FBQztZQUMxQixVQUFVLEdBQUcsSUFBSSxDQUFDO1NBQ3JCO1FBQ0QsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQztJQUVGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCxcbiAgICBJU19URVhUX0VESVRBQkxFLFxuICAgIFBhdGgsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQb2ludCxcbiAgICB0b1BvaW50LFxuICAgIHRyYW5zZm9ybVBvaW50LFxuICAgIFRyYW5zZm9ybXMsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICBkZXB0aEZpcnN0UmVjdXJzaW9uLFxuICAgIGNyZWF0ZUcsXG4gICAgUGxhaXROb2RlLFxuICAgIFBsYWl0UG9pbnRlclR5cGUsXG4gICAgZ2V0SGl0RWxlbWVudHMsXG4gICAgUGxhaXRFbGVtZW50XG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Tm9kZSwgZ2V0Tm9uQWJzdHJhY3RDaGlsZHJlbiB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IE1pbmRFbGVtZW50LCBQbGFpdE1pbmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgRGV0ZWN0UmVzdWx0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlJztcblxuaW1wb3J0IHtcbiAgICBkZWxldGVFbGVtZW50SGFuZGxlQWJzdHJhY3QsXG4gICAgZGVsZXRlRWxlbWVudHNIYW5kbGVSaWdodE5vZGVDb3VudCxcbiAgICBnZXRDb3JyZXNwb25kaW5nQWJzdHJhY3QsXG4gICAgZ2V0Rmlyc3RMZXZlbEVsZW1lbnQsXG4gICAgZ2V0T3ZlcmFsbEFic3RyYWN0cyxcbiAgICBnZXRWYWxpZEFic3RyYWN0UmVmcyxcbiAgICBpbnNlcnRFbGVtZW50SGFuZGxlQWJzdHJhY3QsXG4gICAgaW5zZXJ0RWxlbWVudEhhbmRsZVJpZ2h0Tm9kZUNvdW50XG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGlzSGl0TWluZEVsZW1lbnQgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9ub2RlJztcbmltcG9ydCB7IGFkZEFjdGl2ZU9uRHJhZ09yaWdpbiwgaXNEcmFnZ2luZywgaXNEcm9wU3RhbmRhcmRSaWdodCwgcmVtb3ZlQWN0aXZlT25EcmFnT3JpZ2luLCBzZXRJc0RyYWdnaW5nIH0gZnJvbSAnLi4vdXRpbHMvZG5kL2NvbW1vbic7XG5pbXBvcnQgeyBkZXRlY3REcm9wVGFyZ2V0LCBnZXRQYXRoQnlEcm9wVGFyZ2V0IH0gZnJvbSAnLi4vdXRpbHMvZG5kL2RldGVjdG9yJztcbmltcG9ydCB7IGRyYXdGYWtlRHJhZ05vZGUsIGRyYXdGYWtlRHJvcE5vZGUgfSBmcm9tICcuLi91dGlscy9kcmF3L25vZGUtZG5kJztcbmltcG9ydCB7IE1pbmRUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBhZGp1c3RBYnN0cmFjdFRvTm9kZSwgYWRqdXN0Um9vdFRvTm9kZSB9IGZyb20gJy4uL3V0aWxzL25vZGUvYWRqdXN0LW5vZGUnO1xuXG5jb25zdCBEUkFHX01PVkVfQlVGRkVSID0gNTtcblxuZXhwb3J0IGNvbnN0IHdpdGhOb2RlRG5kID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgeyBtb3VzZWRvd24sIG1vdXNlbW92ZSwgZ2xvYmFsTW91c2V1cCB9ID0gYm9hcmQ7XG5cbiAgICBsZXQgYWN0aXZlRWxlbWVudHM6IE1pbmRFbGVtZW50W10gPSBbXTtcbiAgICBsZXQgY29ycmVzcG9uZGluZ0VsZW1lbnRzOiBNaW5kRWxlbWVudFtdID0gW107XG4gICAgbGV0IHN0YXJ0UG9pbnQ6IFBvaW50O1xuICAgIGxldCBkcmFnRmFrZU5vZGVHOiBTVkdHRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBsZXQgZmFrZURyb3BOb2RlRzogU1ZHR0VsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGRyb3BUYXJnZXQ6IHsgdGFyZ2V0OiBNaW5kRWxlbWVudDsgZGV0ZWN0UmVzdWx0OiBEZXRlY3RSZXN1bHQgfSB8IG51bGwgPSBudWxsO1xuICAgIGxldCB0YXJnZXRQYXRoOiBQYXRoO1xuXG4gICAgYm9hcmQubW91c2Vkb3duID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuaXNSZWFkb25seShib2FyZCkgfHxcbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKGJvYXJkKSB8fFxuICAgICAgICAgICAgIVBsYWl0Qm9hcmQuaXNQb2ludGVyKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLnNlbGVjdGlvbikgfHxcbiAgICAgICAgICAgIGV2ZW50LmJ1dHRvbiA9PT0gMlxuICAgICAgICApIHtcbiAgICAgICAgICAgIG1vdXNlZG93bihldmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICBjb25zdCBoaXRUYXJnZXQgPSBnZXRIaXRFbGVtZW50cyhib2FyZCwgeyByYW5nZXM6IFt7IGFuY2hvcjogcG9pbnQsIGZvY3VzOiBwb2ludCB9XSB9LCAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gTWluZEVsZW1lbnQuaXNNaW5kRWxlbWVudChib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBoaXRUYXJnZXQgJiYgaGl0VGFyZ2V0Lmxlbmd0aCA9PT0gMSA/IGhpdFRhcmdldFswXSA6IG51bGw7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRhcmdldEVsZW1lbnQgJiZcbiAgICAgICAgICAgIE1pbmRFbGVtZW50LmlzTWluZEVsZW1lbnQoYm9hcmQsIHRhcmdldEVsZW1lbnQpICYmXG4gICAgICAgICAgICAhdGFyZ2V0RWxlbWVudC5pc1Jvb3QgJiZcbiAgICAgICAgICAgICFBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdCh0YXJnZXRFbGVtZW50KVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRzID0gc2VsZWN0ZWRFbGVtZW50cy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgZWxlbWVudCA9PiBNaW5kRWxlbWVudC5pc01pbmRFbGVtZW50KGJvYXJkLCBlbGVtZW50KSAmJiAhZWxlbWVudC5pc1Jvb3QgJiYgIUFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGVsZW1lbnQpXG4gICAgICAgICAgICApIGFzIE1pbmRFbGVtZW50W107XG4gICAgICAgICAgICBjb25zdCBpc011bHRpcGxlID0gc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPiAwICYmIHNlbGVjdGVkRWxlbWVudHMuaW5jbHVkZXModGFyZ2V0RWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBpc1NpbmdsZSA9ICFpc011bHRpcGxlICYmIHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAwO1xuICAgICAgICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVFbGVtZW50cyA9IHRhcmdldEVsZW1lbnRzO1xuICAgICAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSBwb2ludDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNTaW5nbGUpIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVFbGVtZW50cyA9IFt0YXJnZXRFbGVtZW50XTtcbiAgICAgICAgICAgICAgICBzdGFydFBvaW50ID0gcG9pbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFjdGl2ZUVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29ycmVzcG9uZGluZ0VsZW1lbnRzID0gZ2V0T3ZlcmFsbEFic3RyYWN0cyhib2FyZCwgYWN0aXZlRWxlbWVudHMpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1vdXNlZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLm1vdXNlbW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIWJvYXJkLm9wdGlvbnMucmVhZG9ubHkgJiYgYWN0aXZlRWxlbWVudHM/Lmxlbmd0aCAmJiBzdGFydFBvaW50KSB7XG4gICAgICAgICAgICBjb25zdCBlbmRQb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludChzdGFydFBvaW50WzBdLCBzdGFydFBvaW50WzFdLCBlbmRQb2ludFswXSwgZW5kUG9pbnRbMV0pO1xuICAgICAgICAgICAgaWYgKGRpc3RhbmNlIDwgRFJBR19NT1ZFX0JVRkZFUikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2V0SXNEcmFnZ2luZyhib2FyZCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIGZha2VEcm9wTm9kZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgY29uc3QgZGV0ZWN0UG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpKSk7XG4gICAgICAgICAgICBkcm9wVGFyZ2V0ID0gZGV0ZWN0RHJvcFRhcmdldChib2FyZCwgZGV0ZWN0UG9pbnQsIGRyb3BUYXJnZXQsIFsuLi5hY3RpdmVFbGVtZW50cywgLi4uY29ycmVzcG9uZGluZ0VsZW1lbnRzXSk7XG4gICAgICAgICAgICBpZiAoZHJvcFRhcmdldD8udGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0UGF0aCA9IGdldFBhdGhCeURyb3BUYXJnZXQoYm9hcmQsIGRyb3BUYXJnZXQpO1xuXG4gICAgICAgICAgICAgICAgZmFrZURyb3BOb2RlRyA9IGRyYXdGYWtlRHJvcE5vZGUoYm9hcmQsIGRyb3BUYXJnZXQsIHRhcmdldFBhdGgpO1xuICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkuYXBwZW5kQ2hpbGQoZmFrZURyb3BOb2RlRyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG9mZnNldFggPSBlbmRQb2ludFswXSAtIHN0YXJ0UG9pbnRbMF07XG4gICAgICAgICAgICBjb25zdCBvZmZzZXRZID0gZW5kUG9pbnRbMV0gLSBzdGFydFBvaW50WzFdO1xuICAgICAgICAgICAgZHJhZ0Zha2VOb2RlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBkcmFnRmFrZU5vZGVHID0gY3JlYXRlRygpO1xuICAgICAgICAgICAgWy4uLmFjdGl2ZUVsZW1lbnRzLCAuLi5jb3JyZXNwb25kaW5nRWxlbWVudHNdLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgYWRkQWN0aXZlT25EcmFnT3JpZ2luKGVsZW1lbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhY3RpdmVFbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVHID0gZHJhd0Zha2VEcmFnTm9kZShib2FyZCwgZWxlbWVudCwgb2Zmc2V0WCwgb2Zmc2V0WSk7XG4gICAgICAgICAgICAgICAgZHJhZ0Zha2VOb2RlRz8uYXBwZW5kQ2hpbGQobm9kZUcpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkuYXBwZW5kQ2hpbGQoZHJhZ0Zha2VOb2RlRyk7XG4gICAgICAgIH1cblxuICAgICAgICBtb3VzZW1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nbG9iYWxNb3VzZXVwID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpcnN0TGV2ZWxFbGVtZW50cyA9IGdldEZpcnN0TGV2ZWxFbGVtZW50KGFjdGl2ZUVsZW1lbnRzKTtcbiAgICAgICAgaWYgKCFib2FyZC5vcHRpb25zLnJlYWRvbmx5ICYmIGZpcnN0TGV2ZWxFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZpcnN0TGV2ZWxFbGVtZW50cy5wdXNoKC4uLmNvcnJlc3BvbmRpbmdFbGVtZW50cyk7XG4gICAgICAgICAgICBpZiAoaXNEcmFnZ2luZyhib2FyZCkpIHtcbiAgICAgICAgICAgICAgICBmaXJzdExldmVsRWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQWN0aXZlT25EcmFnT3JpZ2luKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRQYXRoUmVmID0gYm9hcmQucGF0aFJlZih0YXJnZXRQYXRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50UGF0aFJlZiA9IGJvYXJkLnBhdGhSZWYoUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZHJvcFRhcmdldC50YXJnZXQpKTtcbiAgICAgICAgICAgICAgICBsZXQgYWJzdHJhY3RSZWZzID0gZ2V0VmFsaWRBYnN0cmFjdFJlZnMoYm9hcmQsIGZpcnN0TGV2ZWxFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsRWxlbWVudHMgPSBmaXJzdExldmVsRWxlbWVudHNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihlbGVtZW50ID0+ICFhYnN0cmFjdFJlZnMuc29tZShyZWZzID0+IHJlZnMuYWJzdHJhY3QgPT09IGVsZW1lbnQpKVxuICAgICAgICAgICAgICAgICAgICAubWFwKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkanVzdEFic3RyYWN0VG9Ob2RlKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBsYWl0TWluZC5pc01pbmQoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWRqdXN0Um9vdFRvTm9kZShib2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBoYXNQcmV2aW91c05vZGUgPSB0YXJnZXRQYXRoW3RhcmdldFBhdGgubGVuZ3RoIC0gMV0gIT09IDA7XG4gICAgICAgICAgICAgICAgaWYgKGhhc1ByZXZpb3VzTm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c0VsZW1lbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBQYXRoLnByZXZpb3VzKHRhcmdldFBhdGgpKSBhcyBNaW5kRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29ycmVzcG9uZGluZ0Fic3RyYWN0ID0gZ2V0Q29ycmVzcG9uZGluZ0Fic3RyYWN0KHByZXZpb3VzRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldEhhc0NvcnJlc3BvbmRBYnN0cmFjdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kaW5nQWJzdHJhY3QgJiYgY29ycmVzcG9uZGluZ0Fic3RyYWN0LmVuZCAhPT0gdGFyZ2V0UGF0aFt0YXJnZXRQYXRoLmxlbmd0aCAtIDFdIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldEhhc0NvcnJlc3BvbmRBYnN0cmFjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWRqdXN0ZWROb2RlID0gYWJzdHJhY3RSZWZzLm1hcChyZWYgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhZGp1c3RBYnN0cmFjdFRvTm9kZShyZWYuYWJzdHJhY3QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxFbGVtZW50cy5wdXNoKC4uLmFkanVzdGVkTm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhYnN0cmFjdFJlZnMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGVmZmVjdGVkQWJzdHJhY3RzID0gZGVsZXRlRWxlbWVudEhhbmRsZUFic3RyYWN0KGJvYXJkLCBmaXJzdExldmVsRWxlbWVudHMpO1xuICAgICAgICAgICAgICAgIGluc2VydEVsZW1lbnRIYW5kbGVBYnN0cmFjdChib2FyZCwgdGFyZ2V0UGF0aCwgbm9ybWFsRWxlbWVudHMubGVuZ3RoLCBmYWxzZSwgZWZmZWN0ZWRBYnN0cmFjdHMpO1xuICAgICAgICAgICAgICAgIE1pbmRUcmFuc2Zvcm1zLnNldEFic3RyYWN0c0J5UmVmcyhib2FyZCwgZWZmZWN0ZWRBYnN0cmFjdHMpO1xuXG4gICAgICAgICAgICAgICAgbGV0IHJlZnMgPSBkZWxldGVFbGVtZW50c0hhbmRsZVJpZ2h0Tm9kZUNvdW50KGJvYXJkLCBmaXJzdExldmVsRWxlbWVudHMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIFBhdGgucGFyZW50KHRhcmdldFBhdGgpKSBhcyBNaW5kRWxlbWVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRDaGFuZ2VSb290ID0gaXNEcm9wU3RhbmRhcmRSaWdodChwYXJlbnQsIGRyb3BUYXJnZXQpO1xuICAgICAgICAgICAgICAgIGlmIChzaG91bGRDaGFuZ2VSb290ICYmIHRhcmdldEVsZW1lbnRQYXRoUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVmcyA9IGluc2VydEVsZW1lbnRIYW5kbGVSaWdodE5vZGVDb3VudChib2FyZCwgdGFyZ2V0RWxlbWVudFBhdGhSZWYuY3VycmVudC5zbGljZSgwLCAxKSwgbm9ybWFsRWxlbWVudHMubGVuZ3RoLCByZWZzKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBNaW5kVHJhbnNmb3Jtcy5zZXRSaWdodE5vZGVDb3VudEJ5UmVmcyhib2FyZCwgcmVmcyk7XG4gICAgICAgICAgICAgICAgTWluZFRyYW5zZm9ybXMucmVtb3ZlRWxlbWVudHMoYm9hcmQsIGZpcnN0TGV2ZWxFbGVtZW50cyk7XG5cbiAgICAgICAgICAgICAgICBsZXQgaW5zZXJ0UGF0aCA9IHRhcmdldFBhdGhSZWYuY3VycmVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRQYXRoID0gUGF0aC5wYXJlbnQodGFyZ2V0UGF0aFJlZi5jdXJyZW50IHx8IHRhcmdldFBhdGgpO1xuICAgICAgICAgICAgICAgIGlmICghaW5zZXJ0UGF0aCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBwYXJlbnRQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBnZXROb25BYnN0cmFjdENoaWxkcmVuKHBhcmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydFBhdGggPSBbLi4ucGFyZW50UGF0aCwgY2hpbGRyZW4ubGVuZ3RoIHx8IDBdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIE1pbmRUcmFuc2Zvcm1zLmluc2VydE5vZGVzKGJvYXJkLCBub3JtYWxFbGVtZW50cywgaW5zZXJ0UGF0aCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoYWJzdHJhY3RSZWZzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBNaW5kVHJhbnNmb3Jtcy5pbnNlcnRBYnN0cmFjdE5vZGVzKGJvYXJkLCBhYnN0cmFjdFJlZnMsIG5vcm1hbEVsZW1lbnRzLCBpbnNlcnRQYXRoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldEVsZW1lbnRQYXRoUmVmLmN1cnJlbnQgJiZcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UGF0aFJlZi5jdXJyZW50ICYmXG4gICAgICAgICAgICAgICAgICAgIFBhdGguaXNBbmNlc3Rvcih0YXJnZXRFbGVtZW50UGF0aFJlZi5jdXJyZW50LCB0YXJnZXRQYXRoUmVmLmN1cnJlbnQpICYmXG4gICAgICAgICAgICAgICAgICAgIGRyb3BUYXJnZXQudGFyZ2V0LmlzQ29sbGFwc2VkXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBpc0NvbGxhcHNlZDogZmFsc2UgfSwgdGFyZ2V0RWxlbWVudFBhdGhSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRhcmdldEVsZW1lbnRQYXRoUmVmLnVucmVmKCk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0UGF0aFJlZi51bnJlZigpO1xuXG4gICAgICAgICAgICAgICAgbGV0IHNldEFjdGl2ZUVsZW1lbnRzOiBNaW5kRWxlbWVudFtdID0gW107XG4gICAgICAgICAgICAgICAgZGVwdGhGaXJzdFJlY3Vyc2lvbigoYm9hcmQgYXMgdW5rbm93bikgYXMgTWluZEVsZW1lbnQsIG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gYWN0aXZlRWxlbWVudHMuc29tZShlbGVtZW50ID0+IGVsZW1lbnQuaWQgPT09IG5vZGUuaWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWN0aXZlRWxlbWVudHMucHVzaChub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb25XaXRoVGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQsIHNldEFjdGl2ZUVsZW1lbnRzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2V0SXNEcmFnZ2luZyhib2FyZCwgZmFsc2UpO1xuICAgICAgICAgICAgYWN0aXZlRWxlbWVudHMgPSBbXTtcbiAgICAgICAgICAgIGRyYWdGYWtlTm9kZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgZHJhZ0Zha2VOb2RlRyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGZha2VEcm9wTm9kZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgZmFrZURyb3BOb2RlRyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGRyb3BUYXJnZXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGdsb2JhbE1vdXNldXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59O1xuIl19
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Component, ChangeDetectionStrategy, NgModule, NgZone, Directive, Input, HostListener } from '@angular/core';
3
3
  import * as i2 from '@plait/core';
4
- import { DefaultThemeColor, ColorfulThemeColor, SoftThemeColor, RetroThemeColor, DarkThemeColor, StarryThemeColor, RectangleClient, PlaitElement, idCreator, isNullOrUndefined, Transforms, clearSelectedElement, addSelectedElement, PlaitBoard, depthFirstRecursion, Path, drawLinearPath, createG, updateForeignObject, PlaitNode, drawRoundRectangle, getRectangleByElements, getSelectedElements, NODE_TO_PARENT, distanceBetweenPointAndRectangle, createForeignObject, drawAbstractRoundRectangle, createText, PlaitPointerType, PlaitPluginElementComponent, NODE_TO_INDEX, PlaitModule, transformPoint, toPoint, distanceBetweenPointAndPoint, CLIP_BOARD_FORMAT_KEY, isMainPointer, BOARD_TO_HOST, PlaitPluginKey, throttleRAF, BoardTransforms, removeSelectedElement, PlaitHistoryBoard, hotkeys } from '@plait/core';
4
+ import { DefaultThemeColor, ColorfulThemeColor, SoftThemeColor, RetroThemeColor, DarkThemeColor, StarryThemeColor, RectangleClient, PlaitElement, idCreator, isNullOrUndefined, Transforms, clearSelectedElement, addSelectedElement, PlaitBoard, depthFirstRecursion, Path, drawLinearPath, createG, updateForeignObject, PlaitNode, drawRoundRectangle, getRectangleByElements, getSelectedElements, NODE_TO_PARENT, distanceBetweenPointAndRectangle, createForeignObject, drawAbstractRoundRectangle, createText, PlaitPointerType, PlaitPluginElementComponent, NODE_TO_INDEX, PlaitModule, transformPoint, toPoint, getHitElements, distanceBetweenPointAndPoint, CLIP_BOARD_FORMAT_KEY, isMainPointer, BOARD_TO_HOST, PlaitPluginKey, throttleRAF, BoardTransforms, removeSelectedElement, PlaitHistoryBoard, hotkeys } from '@plait/core';
5
5
  import { MindLayoutType, isIndentedLayout, getNonAbstractChildren, isStandardLayout, AbstractNode, isLeftLayout, isRightLayout, isVerticalLogicLayout, isHorizontalLogicLayout, isTopLayout, isBottomLayout, isHorizontalLayout, getCorrectStartEnd, getAbstractLayout, ConnectingPosition, GlobalLayout } from '@plait/layouts';
6
6
  import { getTextSize, TEXT_DEFAULT_HEIGHT, TextManage, TextModule } from '@plait/text';
7
7
  import { fromEvent, Subject } from 'rxjs';
@@ -2612,6 +2612,9 @@ class MindNodeComponent extends PlaitPluginElementComponent {
2612
2612
  this.activeDrawer.draw(this.element, this.g, { selected: this.selected, isEditing: this.textManage.isEditing });
2613
2613
  this.drawEmojis();
2614
2614
  this.drawExtend();
2615
+ if (PlaitMind.isMind(this.context.parent)) {
2616
+ this.g.classList.add('branch');
2617
+ }
2615
2618
  }
2616
2619
  editTopic() {
2617
2620
  this.activeDrawer.draw(this.element, this.g, { selected: this.selected, isEditing: true });
@@ -2893,33 +2896,29 @@ const withNodeDnd = (board) => {
2893
2896
  mousedown(event);
2894
2897
  return;
2895
2898
  }
2896
- // 确认是否 hit 节点
2897
2899
  const point = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
2898
2900
  const selectedElements = getSelectedElements(board);
2899
- depthFirstRecursion(board, element => {
2900
- if (activeElements.length || !MindElement.isMindElement(board, element)) {
2901
- return;
2902
- }
2903
- const isHitElement = isHitMindElement(board, point, element) && !element.isRoot && !AbstractNode.isAbstract(element);
2904
- const isAllMindElement = selectedElements.every(element => MindElement.isMindElement(board, element));
2905
- const isMultiple = isHitElement && selectedElements.length > 1 && selectedElements.includes(element) && isAllMindElement;
2906
- const isSingle = isHitElement && !(selectedElements.length > 1 && selectedElements.includes(element));
2907
- if (isSingle) {
2908
- activeElements = [element];
2901
+ const hitTarget = getHitElements(board, { ranges: [{ anchor: point, focus: point }] }, (element) => {
2902
+ return MindElement.isMindElement(board, element);
2903
+ });
2904
+ const targetElement = hitTarget && hitTarget.length === 1 ? hitTarget[0] : null;
2905
+ if (targetElement &&
2906
+ MindElement.isMindElement(board, targetElement) &&
2907
+ !targetElement.isRoot &&
2908
+ !AbstractNode.isAbstract(targetElement)) {
2909
+ const targetElements = selectedElements.filter(element => MindElement.isMindElement(board, element) && !element.isRoot && !AbstractNode.isAbstract(element));
2910
+ const isMultiple = selectedElements.length > 0 && selectedElements.includes(targetElement);
2911
+ const isSingle = !isMultiple && selectedElements.length === 0;
2912
+ if (isMultiple) {
2913
+ activeElements = targetElements;
2909
2914
  startPoint = point;
2910
2915
  }
2911
- else if (isMultiple) {
2912
- activeElements = selectedElements;
2916
+ else if (isSingle) {
2917
+ activeElements = [targetElement];
2913
2918
  startPoint = point;
2914
2919
  }
2915
- }, node => {
2916
- if (PlaitBoard.isBoard(node) || board.isRecursion(node)) {
2917
- return true;
2918
- }
2919
- else {
2920
- return false;
2921
- }
2922
- });
2920
+ event.preventDefault();
2921
+ }
2923
2922
  if (activeElements.length) {
2924
2923
  correspondingElements = getOverallAbstracts(board, activeElements);
2925
2924
  event.preventDefault();
@@ -3164,12 +3163,12 @@ const withAbstract = (board) => {
3164
3163
  const point = transformPoint(board, toPoint(event.x, event.y, host));
3165
3164
  activeAbstractElement = activeAbstractElements.find(element => {
3166
3165
  abstractHandlePosition = getHitAbstractHandle(board, element, point);
3167
- if (newBoard === null || newBoard === void 0 ? void 0 : newBoard.onAbstractResize) {
3168
- newBoard.onAbstractResize(AbstractResizeState.start);
3169
- }
3170
3166
  return abstractHandlePosition;
3171
3167
  });
3172
3168
  if (activeAbstractElement) {
3169
+ if (newBoard === null || newBoard === void 0 ? void 0 : newBoard.onAbstractResize) {
3170
+ newBoard.onAbstractResize(AbstractResizeState.start);
3171
+ }
3173
3172
  startPoint = point;
3174
3173
  return;
3175
3174
  }