fabrikantencore 2.9.2 → 2.9.4

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.
Files changed (34) hide show
  1. package/esm2022/public_api.mjs +2 -1
  2. package/esm2022/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets.component.mjs +4 -4
  3. package/esm2022/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap/beheer-products-eigenschap.component.mjs +21 -4
  4. package/esm2022/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products.component.mjs +4 -4
  5. package/esm2022/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts.component.mjs +3 -3
  6. package/esm2022/src/app/modules/fabrikantencore/beheer/components/beheer-select-filter-dialog/beheer-select-filter-dialog.component.mjs +3 -2
  7. package/esm2022/src/app/modules/fabrikantencore/components/fab-actionmenu/fab-actionmenu.component.mjs +3 -10
  8. package/esm2022/src/app/modules/fabrikantencore/components/fab-display-photo-dialog/fab-display-photo-dialog.component.mjs +25 -0
  9. package/esm2022/src/app/modules/fabrikantencore/components/fab-filter-label/fab-filter-label.component.mjs +3 -3
  10. package/esm2022/src/app/modules/fabrikantencore/components/fab-filter-picture-select/fab-filter-picture-select.component.mjs +70 -0
  11. package/esm2022/src/app/modules/fabrikantencore/components/fab-filters-input/fab-filters-input.component.mjs +18 -3
  12. package/esm2022/src/app/modules/fabrikantencore/components/fab-form/fab-form.component.mjs +107 -0
  13. package/esm2022/src/app/modules/fabrikantencore/components/fab-form-dialog/fab-form-dialog.component.mjs +14 -80
  14. package/esm2022/src/app/modules/fabrikantencore/components/fab-input/fab-input.component.mjs +4 -3
  15. package/esm2022/src/app/modules/fabrikantencore/components/fab-input-code/fab-input-code.component.mjs +8 -9
  16. package/esm2022/src/app/modules/fabrikantencore/components/fab-product/fab-product.component.mjs +11 -3
  17. package/esm2022/src/app/modules/fabrikantencore/fabrikantencore.module.mjs +16 -5
  18. package/esm2022/src/app/modules/fabrikantencore/services/fabrikanten.service.mjs +51 -51
  19. package/esm2022/src/app/modules/fabrikantencore/services/products.service.mjs +2 -2
  20. package/esm2022/src/app/modules/fabrikantencore/swagger/SwaggerClient.mjs +96 -1
  21. package/fesm2022/fabrikantencore.mjs +741 -492
  22. package/fesm2022/fabrikantencore.mjs.map +1 -1
  23. package/package.json +1 -1
  24. package/public_api.d.ts +1 -0
  25. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap/beheer-products-eigenschap.component.d.ts +1 -0
  26. package/src/app/modules/fabrikantencore/components/fab-actionmenu/fab-actionmenu.component.d.ts +0 -1
  27. package/src/app/modules/fabrikantencore/components/fab-display-photo-dialog/fab-display-photo-dialog.component.d.ts +10 -0
  28. package/src/app/modules/fabrikantencore/components/fab-filter-picture-select/fab-filter-picture-select.component.d.ts +28 -0
  29. package/src/app/modules/fabrikantencore/components/fab-filters-input/fab-filters-input.component.d.ts +2 -0
  30. package/src/app/modules/fabrikantencore/components/fab-form/fab-form.component.d.ts +25 -0
  31. package/src/app/modules/fabrikantencore/components/fab-form-dialog/fab-form-dialog.component.d.ts +2 -11
  32. package/src/app/modules/fabrikantencore/components/fab-product/fab-product.component.d.ts +1 -0
  33. package/src/app/modules/fabrikantencore/fabrikantencore.module.d.ts +32 -29
  34. package/src/app/modules/fabrikantencore/swagger/SwaggerClient.d.ts +26 -1
@@ -175,11 +175,11 @@ class ProductsService {
175
175
  //this.MergeBCBProductViewModelEigenschap(newproduct?.bcbProductEigenschapViewModels, oldproduct?.bcbProductEigenschapViewModels);
176
176
  //this.MergeBCBProductViewModelOpbouw(newproduct?.bcbProductOpbouwViewModels, oldproduct?.bcbProductOpbouwViewModels);
177
177
  if (newproduct?.bcbeboViewModel != null && oldproduct?.bcbeboViewModel != null) {
178
- newproduct.bcbeboViewModel.open = oldproduct.bcbeboViewModel.open;
179
178
  this.MergeBCBEBO(newproduct.bcbeboViewModel, oldproduct.bcbeboViewModel);
180
179
  }
181
180
  }
182
181
  MergeBCBEBO(newproduct, oldproduct) {
182
+ newproduct.open = oldproduct.open;
183
183
  this.MergeBCBProductViewModelEigenschap(newproduct?.bcbEigenschapViewModels, oldproduct?.bcbEigenschapViewModels);
184
184
  this.MergeBCBProductViewModelOpbouw(newproduct?.bcbOpbouwViewModels, oldproduct?.bcbOpbouwViewModels);
185
185
  }
@@ -220,4 +220,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
220
220
  type: Injectable,
221
221
  args: [{ providedIn: 'root' }]
222
222
  }], ctorParameters: function () { return [{ type: i1.ProductsApiClient }, { type: i2.AuthenticationService }, { type: i3.ImportSetsService }]; } });
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvc2VydmljZXMvcHJvZHVjdHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQXdDLHVCQUF1QixFQUF1QixvQkFBb0IsRUFBNkQsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQStELGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7O0FBRzdVLE1BQ2EsZUFBZTtJQWFoQjtJQUNBO0lBQ0E7SUFiSCxlQUFlLEdBQVksS0FBSyxDQUFDO0lBRWpDLGlCQUFpQixDQUFvQjtJQUVyQyxtQkFBbUIsR0FBeUIsU0FBUyxDQUFDO0lBQ3RELGdCQUFnQixHQUFzQixTQUFTLENBQUM7SUFFaEQsZUFBZSxDQUFTO0lBQ3hCLGtCQUFrQixDQUFTO0lBRWxDLFlBQ1UsaUJBQW9DLEVBQ3BDLHFCQUE0QyxFQUM1QyxpQkFBb0M7UUFGcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDNUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDaEQsQ0FBQztJQUVNLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVNLHNCQUFzQjtRQUMzQixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsaUJBQWlCLENBQUM7UUFFMUQsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFO1lBQ3JELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFF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VSxlQUFlOzJHQUFmLGVBQWUsY0FERixNQUFNOztTQUNuQixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSW1wb3J0U2V0c1NlcnZpY2UgfSBmcm9tICcuL2ltcG9ydHNldHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFByb2R1Y3RzQXBpQ2xpZW50LCBQcm9kdWN0c1ZpZXdNb2RlbCwgUmVzZXRJbXBvcnRSZXF1ZXN0TW9kZWwsIEJDQlByb2R1Y3RWaWV3TW9kZWwsIFNhdmVQcm9kdWN0Vmlld01vZGVsLCBCQ0JJbXBvcnRTZXRzVmlld01vZGVsLCBJbXBvcnRBcGlDbGllbnQsIFByb2R1Y3RWaWV3TW9kZWwsIEdldFByb2R1Y3RSZXF1ZXN0LCBQcm9kdWN0c1ZpZXdNb2RlbFJlcXVlc3QsIEJDQkVCT1ZpZXdNb2RlbCwgQkNCRWlnZW5zY2hhcFZpZXdNb2RlbCwgQkNCT3Bib3V3Vmlld01vZGVsLCBMb2dpblJlc3BvbnNlTW9kZWwgfSBmcm9tICcuLi9zd2FnZ2VyL1N3YWdnZXJDbGllbnQnO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFByb2R1Y3RzU2VydmljZSB7XHJcblxyXG4gIHB1YmxpYyBMb2FkaW5nUHJvZHVjdHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIFByb2R1Y3RzVmlld01vZGVsOiBQcm9kdWN0c1ZpZXdNb2RlbDtcclxuXHJcbiAgcHVibGljIEJDQlByb2R1Y3RWaWV3TW9kZWw/OiBCQ0JQcm9kdWN0Vmlld01vZGVsID0gdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBQcm9kdWN0Vmlld01vZGVsPzogUHJvZHVjdFZpZXdNb2RlbCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgcHVibGljIFByb2R1Y3RTZWxlY3RlZDogbnVtYmVyO1xyXG4gIHB1YmxpYyBCQ0JQcm9kdWN0U2VsZWN0ZWQ6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIFByb2R1Y3RzQXBpQ2xpZW50OiBQcm9kdWN0c0FwaUNsaWVudCxcclxuICAgIHByaXZhdGUgYXV0aGVudGljYXRpb25TZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIEltcG9ydFNldHNTZXJ2aWNlOiBJbXBvcnRTZXRzU2VydmljZSkge1xyXG4gICAgdGhpcy5JbXBvcnRTZXRzU2VydmljZS5Qcm9kdWN0c1NlcnZpY2UgPSB0aGlzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIExvYWRpbmcoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5Mb2FkaW5nUHJvZHVjdHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0QkNCUHJvZHVjdHNTZWxlY3RlZCgpOiBBcnJheTxCQ0JQcm9kdWN0Vmlld01vZGVsPiB7XHJcbiAgICB2YXIgYXJyYXl0ZW1wID0gdGhpcy5Qcm9kdWN0c1ZpZXdNb2RlbD8ucHJvZHVjdFZpZXdNb2RlbHM7XHJcblxyXG4gICAgaWYgKHRoaXMuUHJvZHVjdFNlbGVjdGVkICE9IG51bGwgJiYgYXJyYXl0ZW1wICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheXRlbXAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoYXJyYXl0ZW1wW2ldLmlkID09IHRoaXMuUHJvZHVjdFNlbGVjdGVkKSB7XHJcbiAgICAgICAgICB2YXIgYXJyYXl0ZW1wMiA9IGFycmF5dGVtcFtpXS5iY2JQcm9kdWN0Vmlld01vZGVscztcclxuICAgICAgICAgIGlmIChhcnJheXRlbXAyICE9IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGFycmF5dGVtcDI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5ldyBBcnJheTxCQ0JQcm9kdWN0Vmlld01vZGVsPigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFJlbG9hZChjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgIHRoaXMuTG9hZFByb2R1Y3RzKGNoYW5nZURldGVjdG9yUmVmLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQ2hlY2tTdGF0dXMoY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRQcm9kdWN0cyhjaGFuZ2VEZXRlY3RvclJlZiwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2F2ZVByb2R1Y3RWaWV3TW9kZWwocHJvZHVjdDogUHJvZHVjdFZpZXdNb2RlbCwgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICB2YXIgbW9kZWwgPSBuZXcgU2F2ZVByb2R1Y3RWaWV3TW9kZWwoKTtcclxuICAgIG1vZGVsLmlkID0gcHJvZHVjdC5pZDtcclxuICAgIG1vZGVsLm5hbWUgPSBwcm9kdWN0Lm5hbWU7XHJcbiAgICBtb2RlbC5wb3NpdGlvbiA9IHByb2R1Y3QucG9zaXRpb247XHJcbiAgICBtb2RlbC5pbXBvcnRTZXRJZCA9IHBhcnNlSW50KHByb2R1Y3QuaW1wb3J0U2V0SWQudG9TdHJpbmcoKSk7XHJcbiAgICBtb2RlbC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xyXG5cclxuICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gdHJ1ZTtcclxuICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB0aGlzLlByb2R1Y3RzQXBpQ2xpZW50LnNhdmVQcm9kdWN0KG1vZGVsKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLkxvYWRQcm9kdWN0cyhjaGFuZ2VEZXRlY3RvclJlZiwgZmFsc2UpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nUHJvZHVjdHMgPSBmYWxzZTtcclxuICAgICAgY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgUmVzZXRJbXBvcnQocHJvZHVjdGlkOiBudW1iZXIsIGJjYnByb2R1Y3RpZDogbnVtYmVyLCBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHZhciBtb2RlbCA9IG5ldyBSZXNldEltcG9ydFJlcXVlc3RNb2RlbCgpO1xyXG4gICAgbW9kZWwucHJvZHVjdElkID0gcHJvZHVjdGlkO1xyXG4gICAgbW9kZWwuYmNiUHJvZHVjdElkID0gYmNicHJvZHVjdGlkO1xyXG4gICAgbW9kZWwubG9naW5SZXNwb25zZU1vZGVsID0gbmV3IExvZ2luUmVzcG9uc2VNb2RlbCh0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5jdXJyZW50VXNlclZhbHVlKTtcclxuXHJcbiAgICBpZiAocHJvZHVjdGlkID09IC0xICYmIGJjYnByb2R1Y3RpZCA9PSAtMSkge1xyXG4gICAgICBtb2RlbC5iY2JJbXBvcnRTZXRJZCA9IHRoaXMuSW1wb3J0U2V0c1NlcnZpY2UuQkNCSW1wb3J0U2V0U2VsZWN0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5Mb2FkaW5nUHJvZHVjdHMgPSB0cnVlO1xyXG4gICAgY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHRoaXMuUHJvZHVjdHNBcGlDbGllbnQucmVzZXRJbXBvcnQobW9kZWwpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuTG9hZFByb2R1Y3RzKGNoYW5nZURldGVjdG9yUmVmLCBmYWxzZSk7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IGZhbHNlO1xyXG4gICAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgTG9hZFByb2R1Y3RzKGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgY29tcGxldGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkltcG9ydFNldHNTZXJ2aWNlLkJDQkltcG9ydFNldFNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IHRydWU7XHJcblxyXG4gICAgICB2YXIgcmVxdWVzdCA9IG5ldyBQcm9kdWN0c1ZpZXdNb2RlbFJlcXVlc3QoKTtcclxuXHJcbiAgICAgIHJlcXVlc3QuaW1wb3J0U2V0SWQgPSB0aGlzLkltcG9ydFNldHNTZXJ2aWNlLkJDQkltcG9ydFNldFNlbGVjdGVkO1xyXG4gICAgICByZXF1ZXN0LmNvbXBsZXRlID0gY29tcGxldGU7XHJcbiAgICAgIHJlcXVlc3QubG9naW5SZXNwb25zZU1vZGVsID0gbmV3IExvZ2luUmVzcG9uc2VNb2RlbCh0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5jdXJyZW50VXNlclZhbHVlKTtcclxuXHJcbiAgICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICAgIHRoaXMuUHJvZHVjdHNBcGlDbGllbnQuZ2V0UHJvZHVjdHNWaWV3TW9kZWwocmVxdWVzdCkuc3Vic2NyaWJlKChtb2RlbDogUHJvZHVjdHNWaWV3TW9kZWwpID0+IHtcclxuICAgICAgICB0aGlzLlByb2R1Y3RzVmlld01vZGVsID0gbW9kZWw7XHJcbiAgICAgICAgY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgICAgICB2YXIgYXJyYXkgPSB0aGlzLlByb2R1Y3RzVmlld01vZGVsLnByb2R1Y3RWaWV3TW9kZWxzO1xyXG5cclxuICAgICAgICBpZiAoYXJyYXkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgaWYgKGFycmF5Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5Qcm9kdWN0U2VsZWN0ZWQgPSBhcnJheVswXS5pZDtcclxuXHJcbiAgICAgICAgICAgIHZhciBhcnJheTIgPSBhcnJheVswXS5iY2JQcm9kdWN0Vmlld01vZGVscztcclxuXHJcbiAgICAgICAgICAgIGlmIChhcnJheTIgIT0gbnVsbCAmJiBhcnJheTIubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuQkNCUHJvZHVjdFNlbGVjdGVkID0gYXJyYXkyWzBdLmlkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCAhPSB1bmRlZmluZWQgfHwgdGhpcy5Qcm9kdWN0Vmlld01vZGVsICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgdmFyIGFycmF5aW5uZXIgPSBhcnJheVtpXS5iY2JQcm9kdWN0Vmlld01vZGVscztcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuUHJvZHVjdFZpZXdNb2RlbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChhcnJheVtpXS5pZCA9PSB0aGlzLlByb2R1Y3RWaWV3TW9kZWwuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5Qcm9kdWN0Vmlld01vZGVsID0gYXJyYXlbaV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBpZiAodGhpcy5CQ0JQcm9kdWN0Vmlld01vZGVsICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFycmF5aW5uZXIgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGFycmF5aW5uZXIubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYXJyYXlpbm5lcltqXS5pZCA9PSB0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWwuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCA9IGFycmF5aW5uZXJbal07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IGZhbHNlO1xyXG4gICAgICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IuanNvbigpKTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gZmFsc2U7XHJcbiAgICAgICAgY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBMb2FkUHJvZHVjdChjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLlByb2R1Y3RWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IHRydWU7XHJcbiAgICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICAgIHZhciByZXF1ZXN0ID0gbmV3IEdldFByb2R1Y3RSZXF1ZXN0KCk7XHJcblxyXG4gICAgICByZXF1ZXN0LmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XHJcbiAgICAgIHJlcXVlc3QuaWQgPSB0aGlzLlByb2R1Y3RWaWV3TW9kZWwuaWQ7XHJcblxyXG4gICAgICB0aGlzLlByb2R1Y3RzQXBpQ2xpZW50LmdldFByb2R1Y3RWaWV3TW9kZWwocmVxdWVzdCkuc3Vic2NyaWJlKChtb2RlbDogUHJvZHVjdFZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICAgIHRoaXMuUHJvZHVjdFZpZXdNb2RlbCA9IG1vZGVsO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5CQ0JQcm9kdWN0Vmlld01vZGVsICE9IHVuZGVmaW5lZCB8fCB0aGlzLlByb2R1Y3RWaWV3TW9kZWwgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB2YXIgb2xkID0gdGhpcy5CQ0JQcm9kdWN0Vmlld01vZGVsO1xyXG5cclxuICAgICAgICAgIHZhciBhcnJheWlubmVyID0gdGhpcy5Qcm9kdWN0Vmlld01vZGVsLmJjYlByb2R1Y3RWaWV3TW9kZWxzO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWwgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGlmIChhcnJheWlubmVyICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGFycmF5aW5uZXIubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgIGlmIChhcnJheWlubmVyW2pdLmlkID09IHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbC5pZCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWwgPSBhcnJheWlubmVyW2pdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWwgIT0gbnVsbCAmJiBvbGQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLk1lcmdlQkNCUHJvZHVjdFZpZXdNb2RlbCh0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWwsIG9sZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IGZhbHNlO1xyXG4gICAgICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IuanNvbigpKTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gZmFsc2U7XHJcbiAgICAgICAgY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgTWVyZ2VCQ0JQcm9kdWN0Vmlld01vZGVsKG5ld3Byb2R1Y3Q6IEJDQlByb2R1Y3RWaWV3TW9kZWwsIG9sZHByb2R1Y3Q6IEJDQlByb2R1Y3RWaWV3TW9kZWwpIHtcclxuICAgIC8vdGhpcy5NZXJnZUJDQlByb2R1Y3RWaWV3TW9kZWxFaWdlbnNjaGFwKG5ld3Byb2R1Y3Q/LmJjYlByb2R1Y3RFaWdlbnNjaGFwVmlld01vZGVscywgb2xkcHJvZHVjdD8uYmNiUHJvZHVjdEVpZ2Vuc2NoYXBWaWV3TW9kZWxzKTtcclxuICAgIC8vdGhpcy5NZXJnZUJDQlByb2R1Y3RWaWV3TW9kZWxPcGJvdXcobmV3cHJvZHVjdD8uYmNiUHJvZHVjdE9wYm91d1ZpZXdNb2RlbHMsIG9sZHByb2R1Y3Q/LmJjYlByb2R1Y3RPcGJvdXdWaWV3TW9kZWxzKTtcclxuICAgIGlmIChuZXdwcm9kdWN0Py5iY2JlYm9WaWV3TW9kZWwgIT0gbnVsbCAmJiBvbGRwcm9kdWN0Py5iY2JlYm9WaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICBuZXdwcm9kdWN0LmJjYmVib1ZpZXdNb2RlbC5vcGVuID0gb2xkcHJvZHVjdC5iY2JlYm9WaWV3TW9kZWwub3BlbjtcclxuXHJcbiAgICAgIHRoaXMuTWVyZ2VCQ0JFQk8obmV3cHJvZHVjdC5iY2JlYm9WaWV3TW9kZWwsIG9sZHByb2R1Y3QuYmNiZWJvVmlld01vZGVsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgTWVyZ2VCQ0JFQk8obmV3cHJvZHVjdDogQkNCRUJPVmlld01vZGVsLCBvbGRwcm9kdWN0OiBCQ0JFQk9WaWV3TW9kZWwpIHtcclxuICAgIHRoaXMuTWVyZ2VCQ0JQcm9kdWN0Vmlld01vZGVsRWlnZW5zY2hhcChuZXdwcm9kdWN0Py5iY2JFaWdlbnNjaGFwVmlld01vZGVscywgb2xkcHJvZHVjdD8uYmNiRWlnZW5zY2hhcFZpZXdNb2RlbHMpO1xyXG4gICAgdGhpcy5NZXJnZUJDQlByb2R1Y3RWaWV3TW9kZWxPcGJvdXcobmV3cHJvZHVjdD8uYmNiT3Bib3V3Vmlld01vZGVscywgb2xkcHJvZHVjdD8uYmNiT3Bib3V3Vmlld01vZGVscyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIE1lcmdlQkNCUHJvZHVjdFZpZXdNb2RlbEVpZ2Vuc2NoYXAobmV3cHJvZHVjdDogQkNCRWlnZW5zY2hhcFZpZXdNb2RlbFtdIHwgdW5kZWZpbmVkLCBvbGRwcm9kdWN0OiBCQ0JFaWdlbnNjaGFwVmlld01vZGVsW10gfCB1bmRlZmluZWQpIHtcclxuICAgIGlmIChuZXdwcm9kdWN0ICE9IG51bGwgJiYgb2xkcHJvZHVjdCAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbmV3cHJvZHVjdC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgb2xkcHJvZHVjdC5sZW5ndGg7IHArKykge1xyXG4gICAgICAgICAgaWYgKG5ld3Byb2R1Y3Rbal0uaWQgPT0gb2xkcHJvZHVjdFtwXS5pZCkge1xyXG4gICAgICAgICAgICBuZXdwcm9kdWN0W2pdLm9wZW4gPSBvbGRwcm9kdWN0W3BdLm9wZW47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIE1lcmdlQkNCUHJvZHVjdFZpZXdNb2RlbE9wYm91dyhuZXdwcm9kdWN0OiBCQ0JPcGJvdXdWaWV3TW9kZWxbXSB8IHVuZGVmaW5lZCwgb2xkcHJvZHVjdDogQkNCT3Bib3V3Vmlld01vZGVsW10gfCB1bmRlZmluZWQpIHtcclxuICAgIGlmIChuZXdwcm9kdWN0ICE9IG51bGwgJiYgb2xkcHJvZHVjdCAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbmV3cHJvZHVjdC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgb2xkcHJvZHVjdC5sZW5ndGg7IHArKykge1xyXG4gICAgICAgICAgaWYgKG5ld3Byb2R1Y3Rbal0uaWQgPT0gb2xkcHJvZHVjdFtwXS5pZCkge1xyXG4gICAgICAgICAgICBuZXdwcm9kdWN0W2pdLm9wZW4gPSBvbGRwcm9kdWN0W3BdLm9wZW47XHJcblxyXG4gICAgICAgICAgICB2YXIgZWJvc25ldyA9IG5ld3Byb2R1Y3Rbal0uZWJvcztcclxuICAgICAgICAgICAgdmFyIGVib3NvbGQgPSBvbGRwcm9kdWN0W3BdLmVib3M7XHJcbiAgICAgICAgICAgIGlmIChlYm9zbmV3ICE9IG51bGwgJiYgZWJvc29sZCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgZm9yICh2YXIgbyA9IDA7IG8gPCBlYm9zbmV3Lmxlbmd0aDsgbysrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLk1lcmdlQkNCRUJPKGVib3NuZXdbb10sIGVib3NvbGRbb10pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvc2VydmljZXMvcHJvZHVjdHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQXdDLHVCQUF1QixFQUF1QixvQkFBb0IsRUFBNkQsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQStELGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7O0FBRzdVLE1BQ2EsZUFBZTtJQWFoQjtJQUNBO0lBQ0E7SUFiSCxlQUFlLEdBQVksS0FBSyxDQUFDO0lBRWpDLGlCQUFpQixDQUFvQjtJQUVyQyxtQkFBbUIsR0FBeUIsU0FBUyxDQUFDO0lBQ3RELGdCQUFnQixHQUFzQixTQUFTLENBQUM7SUFFaEQsZUFBZSxDQUFTO0lBQ3hCLGtCQUFrQixDQUFTO0lBRWxDLFlBQ1UsaUJBQW9DLEVBQ3BDLHFCQUE0QyxFQUM1QyxpQkFBb0M7UUFGcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDNUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDaEQsQ0FBQztJQUVNLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVNLHNCQUFzQjtRQUMzQixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsaUJBQWlCLENBQUM7UUFFMUQsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFO1lBQ3JELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFF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REYsTUFBTTs7U0FDbkIsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEltcG9ydFNldHNTZXJ2aWNlIH0gZnJvbSAnLi9pbXBvcnRzZXRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9kdWN0c0FwaUNsaWVudCwgUHJvZHVjdHNWaWV3TW9kZWwsIFJlc2V0SW1wb3J0UmVxdWVzdE1vZGVsLCBCQ0JQcm9kdWN0Vmlld01vZGVsLCBTYXZlUHJvZHVjdFZpZXdNb2RlbCwgQkNCSW1wb3J0U2V0c1ZpZXdNb2RlbCwgSW1wb3J0QXBpQ2xpZW50LCBQcm9kdWN0Vmlld01vZGVsLCBHZXRQcm9kdWN0UmVxdWVzdCwgUHJvZHVjdHNWaWV3TW9kZWxSZXF1ZXN0LCBCQ0JFQk9WaWV3TW9kZWwsIEJDQkVpZ2Vuc2NoYXBWaWV3TW9kZWwsIEJDQk9wYm91d1ZpZXdNb2RlbCwgTG9naW5SZXNwb25zZU1vZGVsIH0gZnJvbSAnLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBQcm9kdWN0c1NlcnZpY2Uge1xyXG5cclxuICBwdWJsaWMgTG9hZGluZ1Byb2R1Y3RzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBQcm9kdWN0c1ZpZXdNb2RlbDogUHJvZHVjdHNWaWV3TW9kZWw7XHJcblxyXG4gIHB1YmxpYyBCQ0JQcm9kdWN0Vmlld01vZGVsPzogQkNCUHJvZHVjdFZpZXdNb2RlbCA9IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgUHJvZHVjdFZpZXdNb2RlbD86IFByb2R1Y3RWaWV3TW9kZWwgPSB1bmRlZmluZWQ7XHJcblxyXG4gIHB1YmxpYyBQcm9kdWN0U2VsZWN0ZWQ6IG51bWJlcjtcclxuICBwdWJsaWMgQkNCUHJvZHVjdFNlbGVjdGVkOiBudW1iZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBQcm9kdWN0c0FwaUNsaWVudDogUHJvZHVjdHNBcGlDbGllbnQsXHJcbiAgICBwcml2YXRlIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBJbXBvcnRTZXRzU2VydmljZTogSW1wb3J0U2V0c1NlcnZpY2UpIHtcclxuICAgIHRoaXMuSW1wb3J0U2V0c1NlcnZpY2UuUHJvZHVjdHNTZXJ2aWNlID0gdGhpcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBMb2FkaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuTG9hZGluZ1Byb2R1Y3RzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEJDQlByb2R1Y3RzU2VsZWN0ZWQoKTogQXJyYXk8QkNCUHJvZHVjdFZpZXdNb2RlbD4ge1xyXG4gICAgdmFyIGFycmF5dGVtcCA9IHRoaXMuUHJvZHVjdHNWaWV3TW9kZWw/LnByb2R1Y3RWaWV3TW9kZWxzO1xyXG5cclxuICAgIGlmICh0aGlzLlByb2R1Y3RTZWxlY3RlZCAhPSBudWxsICYmIGFycmF5dGVtcCAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXl0ZW1wLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGFycmF5dGVtcFtpXS5pZCA9PSB0aGlzLlByb2R1Y3RTZWxlY3RlZCkge1xyXG4gICAgICAgICAgdmFyIGFycmF5dGVtcDIgPSBhcnJheXRlbXBbaV0uYmNiUHJvZHVjdFZpZXdNb2RlbHM7XHJcbiAgICAgICAgICBpZiAoYXJyYXl0ZW1wMiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhcnJheXRlbXAyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuZXcgQXJyYXk8QkNCUHJvZHVjdFZpZXdNb2RlbD4oKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBSZWxvYWQoY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRQcm9kdWN0cyhjaGFuZ2VEZXRlY3RvclJlZiwgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIENoZWNrU3RhdHVzKGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkUHJvZHVjdHMoY2hhbmdlRGV0ZWN0b3JSZWYsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNhdmVQcm9kdWN0Vmlld01vZGVsKHByb2R1Y3Q6IFByb2R1Y3RWaWV3TW9kZWwsIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgdmFyIG1vZGVsID0gbmV3IFNhdmVQcm9kdWN0Vmlld01vZGVsKCk7XHJcbiAgICBtb2RlbC5pZCA9IHByb2R1Y3QuaWQ7XHJcbiAgICBtb2RlbC5uYW1lID0gcHJvZHVjdC5uYW1lO1xyXG4gICAgbW9kZWwucG9zaXRpb24gPSBwcm9kdWN0LnBvc2l0aW9uO1xyXG4gICAgbW9kZWwuaW1wb3J0U2V0SWQgPSBwYXJzZUludChwcm9kdWN0LmltcG9ydFNldElkLnRvU3RyaW5nKCkpO1xyXG4gICAgbW9kZWwubG9naW5SZXNwb25zZU1vZGVsID0gbmV3IExvZ2luUmVzcG9uc2VNb2RlbCh0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5jdXJyZW50VXNlclZhbHVlKTtcclxuXHJcbiAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IHRydWU7XHJcbiAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgdGhpcy5Qcm9kdWN0c0FwaUNsaWVudC5zYXZlUHJvZHVjdChtb2RlbCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5Mb2FkUHJvZHVjdHMoY2hhbmdlRGV0ZWN0b3JSZWYsIGZhbHNlKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gZmFsc2U7XHJcbiAgICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFJlc2V0SW1wb3J0KHByb2R1Y3RpZDogbnVtYmVyLCBiY2Jwcm9kdWN0aWQ6IG51bWJlciwgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICB2YXIgbW9kZWwgPSBuZXcgUmVzZXRJbXBvcnRSZXF1ZXN0TW9kZWwoKTtcclxuICAgIG1vZGVsLnByb2R1Y3RJZCA9IHByb2R1Y3RpZDtcclxuICAgIG1vZGVsLmJjYlByb2R1Y3RJZCA9IGJjYnByb2R1Y3RpZDtcclxuICAgIG1vZGVsLmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XHJcblxyXG4gICAgaWYgKHByb2R1Y3RpZCA9PSAtMSAmJiBiY2Jwcm9kdWN0aWQgPT0gLTEpIHtcclxuICAgICAgbW9kZWwuYmNiSW1wb3J0U2V0SWQgPSB0aGlzLkltcG9ydFNldHNTZXJ2aWNlLkJDQkltcG9ydFNldFNlbGVjdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gdHJ1ZTtcclxuICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB0aGlzLlByb2R1Y3RzQXBpQ2xpZW50LnJlc2V0SW1wb3J0KG1vZGVsKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLkxvYWRQcm9kdWN0cyhjaGFuZ2VEZXRlY3RvclJlZiwgZmFsc2UpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nUHJvZHVjdHMgPSBmYWxzZTtcclxuICAgICAgY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIExvYWRQcm9kdWN0cyhjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIGNvbXBsZXRlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5JbXBvcnRTZXRzU2VydmljZS5CQ0JJbXBvcnRTZXRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5Mb2FkaW5nUHJvZHVjdHMgPSB0cnVlO1xyXG5cclxuICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgUHJvZHVjdHNWaWV3TW9kZWxSZXF1ZXN0KCk7XHJcblxyXG4gICAgICByZXF1ZXN0LmltcG9ydFNldElkID0gdGhpcy5JbXBvcnRTZXRzU2VydmljZS5CQ0JJbXBvcnRTZXRTZWxlY3RlZDtcclxuICAgICAgcmVxdWVzdC5jb21wbGV0ZSA9IGNvbXBsZXRlO1xyXG4gICAgICByZXF1ZXN0LmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XHJcblxyXG4gICAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICB0aGlzLlByb2R1Y3RzQXBpQ2xpZW50LmdldFByb2R1Y3RzVmlld01vZGVsKHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IFByb2R1Y3RzVmlld01vZGVsKSA9PiB7XHJcbiAgICAgICAgdGhpcy5Qcm9kdWN0c1ZpZXdNb2RlbCA9IG1vZGVsO1xyXG4gICAgICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICAgICAgdmFyIGFycmF5ID0gdGhpcy5Qcm9kdWN0c1ZpZXdNb2RlbC5wcm9kdWN0Vmlld01vZGVscztcclxuXHJcbiAgICAgICAgaWYgKGFycmF5ICE9IG51bGwpIHtcclxuICAgICAgICAgIGlmIChhcnJheS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuUHJvZHVjdFNlbGVjdGVkID0gYXJyYXlbMF0uaWQ7XHJcblxyXG4gICAgICAgICAgICB2YXIgYXJyYXkyID0gYXJyYXlbMF0uYmNiUHJvZHVjdFZpZXdNb2RlbHM7XHJcblxyXG4gICAgICAgICAgICBpZiAoYXJyYXkyICE9IG51bGwgJiYgYXJyYXkyLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLkJDQlByb2R1Y3RTZWxlY3RlZCA9IGFycmF5MlswXS5pZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWwgIT0gdW5kZWZpbmVkIHx8IHRoaXMuUHJvZHVjdFZpZXdNb2RlbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIHZhciBhcnJheWlubmVyID0gYXJyYXlbaV0uYmNiUHJvZHVjdFZpZXdNb2RlbHM7XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLlByb2R1Y3RWaWV3TW9kZWwgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXJyYXlbaV0uaWQgPT0gdGhpcy5Qcm9kdWN0Vmlld01vZGVsLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuUHJvZHVjdFZpZXdNb2RlbCA9IGFycmF5W2ldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChhcnJheWlubmVyICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhcnJheWlubmVyLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFycmF5aW5uZXJbal0uaWQgPT0gdGhpcy5CQ0JQcm9kdWN0Vmlld01vZGVsLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWwgPSBhcnJheWlubmVyW2pdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nUHJvZHVjdHMgPSBmYWxzZTtcclxuICAgICAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IGZhbHNlO1xyXG4gICAgICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTG9hZFByb2R1Y3QoY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5Qcm9kdWN0Vmlld01vZGVsICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5Mb2FkaW5nUHJvZHVjdHMgPSB0cnVlO1xyXG4gICAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICB2YXIgcmVxdWVzdCA9IG5ldyBHZXRQcm9kdWN0UmVxdWVzdCgpO1xyXG5cclxuICAgICAgcmVxdWVzdC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xyXG4gICAgICByZXF1ZXN0LmlkID0gdGhpcy5Qcm9kdWN0Vmlld01vZGVsLmlkO1xyXG5cclxuICAgICAgdGhpcy5Qcm9kdWN0c0FwaUNsaWVudC5nZXRQcm9kdWN0Vmlld01vZGVsKHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IFByb2R1Y3RWaWV3TW9kZWwpID0+IHtcclxuICAgICAgICB0aGlzLlByb2R1Y3RWaWV3TW9kZWwgPSBtb2RlbDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCAhPSB1bmRlZmluZWQgfHwgdGhpcy5Qcm9kdWN0Vmlld01vZGVsICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdmFyIG9sZCA9IHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbDtcclxuXHJcbiAgICAgICAgICB2YXIgYXJyYXlpbm5lciA9IHRoaXMuUHJvZHVjdFZpZXdNb2RlbC5iY2JQcm9kdWN0Vmlld01vZGVscztcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5CQ0JQcm9kdWN0Vmlld01vZGVsICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpZiAoYXJyYXlpbm5lciAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhcnJheWlubmVyLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXJyYXlpbm5lcltqXS5pZCA9PSB0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWwuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5CQ0JQcm9kdWN0Vmlld01vZGVsID0gYXJyYXlpbm5lcltqXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5CQ0JQcm9kdWN0Vmlld01vZGVsICE9IG51bGwgJiYgb2xkICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5NZXJnZUJDQlByb2R1Y3RWaWV3TW9kZWwodGhpcy5CQ0JQcm9kdWN0Vmlld01vZGVsLCBvbGQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nUHJvZHVjdHMgPSBmYWxzZTtcclxuICAgICAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IGZhbHNlO1xyXG4gICAgICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIE1lcmdlQkNCUHJvZHVjdFZpZXdNb2RlbChuZXdwcm9kdWN0OiBCQ0JQcm9kdWN0Vmlld01vZGVsLCBvbGRwcm9kdWN0OiBCQ0JQcm9kdWN0Vmlld01vZGVsKSB7XHJcbiAgICAvL3RoaXMuTWVyZ2VCQ0JQcm9kdWN0Vmlld01vZGVsRWlnZW5zY2hhcChuZXdwcm9kdWN0Py5iY2JQcm9kdWN0RWlnZW5zY2hhcFZpZXdNb2RlbHMsIG9sZHByb2R1Y3Q/LmJjYlByb2R1Y3RFaWdlbnNjaGFwVmlld01vZGVscyk7XHJcbiAgICAvL3RoaXMuTWVyZ2VCQ0JQcm9kdWN0Vmlld01vZGVsT3Bib3V3KG5ld3Byb2R1Y3Q/LmJjYlByb2R1Y3RPcGJvdXdWaWV3TW9kZWxzLCBvbGRwcm9kdWN0Py5iY2JQcm9kdWN0T3Bib3V3Vmlld01vZGVscyk7XHJcbiAgICBpZiAobmV3cHJvZHVjdD8uYmNiZWJvVmlld01vZGVsICE9IG51bGwgJiYgb2xkcHJvZHVjdD8uYmNiZWJvVmlld01vZGVsICE9IG51bGwpIHtcclxuICAgICAgXHJcblxyXG4gICAgICB0aGlzLk1lcmdlQkNCRUJPKG5ld3Byb2R1Y3QuYmNiZWJvVmlld01vZGVsLCBvbGRwcm9kdWN0LmJjYmVib1ZpZXdNb2RlbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIE1lcmdlQkNCRUJPKG5ld3Byb2R1Y3Q6IEJDQkVCT1ZpZXdNb2RlbCwgb2xkcHJvZHVjdDogQkNCRUJPVmlld01vZGVsKSB7XHJcbiAgICBuZXdwcm9kdWN0Lm9wZW4gPSBvbGRwcm9kdWN0Lm9wZW47XHJcblxyXG4gICAgdGhpcy5NZXJnZUJDQlByb2R1Y3RWaWV3TW9kZWxFaWdlbnNjaGFwKG5ld3Byb2R1Y3Q/LmJjYkVpZ2Vuc2NoYXBWaWV3TW9kZWxzLCBvbGRwcm9kdWN0Py5iY2JFaWdlbnNjaGFwVmlld01vZGVscyk7XHJcbiAgICB0aGlzLk1lcmdlQkNCUHJvZHVjdFZpZXdNb2RlbE9wYm91dyhuZXdwcm9kdWN0Py5iY2JPcGJvdXdWaWV3TW9kZWxzLCBvbGRwcm9kdWN0Py5iY2JPcGJvdXdWaWV3TW9kZWxzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgTWVyZ2VCQ0JQcm9kdWN0Vmlld01vZGVsRWlnZW5zY2hhcChuZXdwcm9kdWN0OiBCQ0JFaWdlbnNjaGFwVmlld01vZGVsW10gfCB1bmRlZmluZWQsIG9sZHByb2R1Y3Q6IEJDQkVpZ2Vuc2NoYXBWaWV3TW9kZWxbXSB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKG5ld3Byb2R1Y3QgIT0gbnVsbCAmJiBvbGRwcm9kdWN0ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuZXdwcm9kdWN0Lmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBvbGRwcm9kdWN0Lmxlbmd0aDsgcCsrKSB7XHJcbiAgICAgICAgICBpZiAobmV3cHJvZHVjdFtqXS5pZCA9PSBvbGRwcm9kdWN0W3BdLmlkKSB7XHJcbiAgICAgICAgICAgIG5ld3Byb2R1Y3Rbal0ub3BlbiA9IG9sZHByb2R1Y3RbcF0ub3BlbjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgTWVyZ2VCQ0JQcm9kdWN0Vmlld01vZGVsT3Bib3V3KG5ld3Byb2R1Y3Q6IEJDQk9wYm91d1ZpZXdNb2RlbFtdIHwgdW5kZWZpbmVkLCBvbGRwcm9kdWN0OiBCQ0JPcGJvdXdWaWV3TW9kZWxbXSB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKG5ld3Byb2R1Y3QgIT0gbnVsbCAmJiBvbGRwcm9kdWN0ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuZXdwcm9kdWN0Lmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBvbGRwcm9kdWN0Lmxlbmd0aDsgcCsrKSB7XHJcbiAgICAgICAgICBpZiAobmV3cHJvZHVjdFtqXS5pZCA9PSBvbGRwcm9kdWN0W3BdLmlkKSB7XHJcbiAgICAgICAgICAgIG5ld3Byb2R1Y3Rbal0ub3BlbiA9IG9sZHByb2R1Y3RbcF0ub3BlbjtcclxuXHJcbiAgICAgICAgICAgIHZhciBlYm9zbmV3ID0gbmV3cHJvZHVjdFtqXS5lYm9zO1xyXG4gICAgICAgICAgICB2YXIgZWJvc29sZCA9IG9sZHByb2R1Y3RbcF0uZWJvcztcclxuICAgICAgICAgICAgaWYgKGVib3NuZXcgIT0gbnVsbCAmJiBlYm9zb2xkICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICBmb3IgKHZhciBvID0gMDsgbyA8IGVib3NuZXcubGVuZ3RoOyBvKyspIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuTWVyZ2VCQ0JFQk8oZWJvc25ld1tvXSwgZWJvc29sZFtvXSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==