@klippa/ngx-enhancy-forms 18.33.20 → 18.33.21
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,7 +71,8 @@ export class SelectComponent extends ValueAccessorBase {
|
|
|
71
71
|
return;
|
|
72
72
|
}
|
|
73
73
|
this.elRef.nativeElement.querySelector('.scrollable-content').classList.add('calculatingWidths');
|
|
74
|
-
const
|
|
74
|
+
const paddingForScrollbar = this.getScrollbarWidth();
|
|
75
|
+
const maxWidth = this.elRef.nativeElement.querySelector('.scrollable-content').getBoundingClientRect().width + paddingForScrollbar;
|
|
75
76
|
this.elRef.nativeElement.querySelector('.scrollable-content').classList.remove('calculatingWidths');
|
|
76
77
|
const dropdownPanel = this.elRef.nativeElement.querySelector('ng-dropdown-panel');
|
|
77
78
|
if (dropdownPanel) {
|
|
@@ -280,6 +281,23 @@ export class SelectComponent extends ValueAccessorBase {
|
|
|
280
281
|
singleValueInputElement.style.left = `0px`;
|
|
281
282
|
}
|
|
282
283
|
}
|
|
284
|
+
getScrollbarWidth() {
|
|
285
|
+
// Create a temporary div element
|
|
286
|
+
const div = document.createElement('div');
|
|
287
|
+
// Set the style to measure the scrollbar
|
|
288
|
+
div.style.overflow = 'scroll'; // Enable scrollbar
|
|
289
|
+
div.style.width = '100px'; // Set a fixed width
|
|
290
|
+
div.style.height = '100px'; // Set a fixed height
|
|
291
|
+
div.style.position = 'absolute'; // Prevent the element from taking space in the layout
|
|
292
|
+
div.style.top = '-9999px'; // Position it out of the viewport
|
|
293
|
+
// Append the element to the body
|
|
294
|
+
document.body.appendChild(div);
|
|
295
|
+
// Get the width of the scrollbar
|
|
296
|
+
const scrollbarWidth = div.offsetWidth - div.clientWidth;
|
|
297
|
+
// Remove the temporary element from the DOM
|
|
298
|
+
document.body.removeChild(div);
|
|
299
|
+
return scrollbarWidth;
|
|
300
|
+
}
|
|
283
301
|
ngOnDestroy() {
|
|
284
302
|
super.ngOnDestroy();
|
|
285
303
|
this.elRef.nativeElement?.querySelector('input')?.removeEventListener('keydown', this.keyListener);
|
|
@@ -362,4 +380,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
362
380
|
type: ContentChild,
|
|
363
381
|
args: [KlpSelectOptionTemplateDirective, { read: TemplateRef }]
|
|
364
382
|
}] } });
|
|
365
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsaXBwYS9uZ3gtZW5oYW5jeS1mb3Jtcy9zcmMvbGliL2VsZW1lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRU4sU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBRVQsWUFBWSxFQUNaLElBQUksRUFDSixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBRXZGLE9BQU8sRUFBQyxVQUFVLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7O0FBV3pELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFNLDhCQUE4QixDQUFDLENBQUM7QUFHM0YsTUFBTSxPQUFPLGdDQUFnQzs4R0FBaEMsZ0NBQWdDO2tHQUFoQyxnQ0FBZ0M7OzJGQUFoQyxnQ0FBZ0M7a0JBRDVDLFNBQVM7bUJBQUMsRUFBQyxRQUFRLEVBQUUsc0JBQXNCLEVBQUM7O0FBVTdDLE1BQU0sT0FBTyxlQUFnQixTQUFRLGlCQUFvQztJQXFDeEUsWUFDK0IsTUFBNEIsRUFDNUIsZ0JBQWtDLEVBQ2YsWUFBaUIsRUFD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TTtnQkFDVSxNQUFNO3NCQUF0QixNQUFNO2dCQUNVLE9BQU87c0JBQXZCLE1BQU07Z0JBQ1UsVUFBVTtzQkFBMUIsTUFBTTtnQkFDZ0IsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNDLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDTSxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQzZDLGVBQWU7c0JBQW5GLFlBQVk7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0QWZ0ZXJWaWV3SW5pdCxcblx0Q29tcG9uZW50LFxuXHRDb250ZW50Q2hpbGQsXG5cdERpcmVjdGl2ZSxcblx0RWxlbWVudFJlZixcblx0RXZlbnRFbWl0dGVyLFxuXHRIb3N0LFxuXHRJbmplY3QsXG5cdEluamVjdGlvblRva2VuLFxuXHRJbnB1dCwgTmdab25lLFxuXHRPbkNoYW5nZXMsXG5cdE9uRGVzdHJveSxcblx0T3B0aW9uYWwsXG5cdE91dHB1dCxcblx0U2ltcGxlQ2hhbmdlcyxcblx0VGVtcGxhdGVSZWYsXG5cdFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbENvbnRhaW5lciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7VmFsdWVBY2Nlc3NvckJhc2V9IGZyb20gJy4uL3ZhbHVlLWFjY2Vzc29yLWJhc2UvdmFsdWUtYWNjZXNzb3ItYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3JtRWxlbWVudENvbXBvbmVudH0gZnJvbSAnLi4vLi4vZm9ybS9mb3JtLWVsZW1lbnQvZm9ybS1lbGVtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQge2lzVmFsdWVTZXQsIHN0cmluZ0lzU2V0QW5kRmlsbGVkfSBmcm9tICcuLi8uLi91dGlsL3ZhbHVlcyc7XG5pbXBvcnQge2F3YWl0YWJsZUZvck5leHRDeWNsZX0gZnJvbSBcIi4uLy4uL3V0aWwvYW5ndWxhclwiO1xuXG5leHBvcnQgdHlwZSBBcHBTZWxlY3RPcHRpb25zID0gQXJyYXk8QXBwU2VsZWN0T3B0aW9uPjtcbmV4cG9ydCB0eXBlIEFwcFNlbGVjdE9wdGlvbiA9IHtcblx0aWQ6IGFueTtcblx0bmFtZTogc3RyaW5nO1xuXHRkZXNjcmlwdGlvbj86IHN0cmluZztcblx0YWN0aXZlPzogYm9vbGVhbjtcblx0ZGlzYWJsZWQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IFNFTEVDVF9UUkFOU0xBVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55Pigna2xwLmZvcm0uc2VsZWN0LnRyYW5zbGF0aW9ucycpO1xuXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ1trbHBTZWxlY3RPcHRpb25UcGxdJ30pXG5leHBvcnQgY2xhc3MgS2xwU2VsZWN0T3B0aW9uVGVtcGxhdGVEaXJlY3RpdmUge1xufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdrbHAtZm9ybS1zZWxlY3QnLFxuXHR0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG5cdHByb3ZpZGVyczogW3twcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IFNlbGVjdENvbXBvbmVudCwgbXVsdGk6IHRydWV9XSxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgVmFsdWVBY2Nlc3NvckJhc2U8c3RyaW5nIHwgc3RyaW5nW10+IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXHRASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXHRASW5wdXQoKSBwcmVmaXg6IHN0cmluZztcblx0QElucHV0KCkgb3JpZW50YXRpb246ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcgPSAnaG9yaXpvbnRhbCc7XG5cdEBJbnB1dCgpIG9wdGlvbnM6IEFwcFNlbGVjdE9wdGlvbnM7XG5cdEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XG5cdEBJbnB1dCgpIG11bHRpcGxlRGlzcGxheWVkQXNBbW91bnQgPSBmYWxzZTtcblx0QElucHV0KCkgY2xlYXJhYmxlID0gdHJ1ZTtcblx0QElucHV0KCkgdHJ1bmNhdGVPcHRpb25zID0gdHJ1ZTtcblx0QElucHV0KCkgd2l0aFNlcGFyYXRpbmdMaW5lID0gZmFsc2U7XG5cdEBJbnB1dCgpIHNlYXJjaGFibGUgPSB0cnVlO1xuXHRASW5wdXQoKSBoYXNCb3JkZXJMZWZ0ID0gdHJ1ZTtcblx0QElucHV0KCkgaGFzQm9yZGVyUmlnaHQgPSB0cnVlO1xuXHRASW5wdXQoKSBwdWJsaWMgZHJvcGRvd25Qb3NpdGlvbjogJ2F1dG8nIHwgJ2JvdHRvbScgfCAndG9wJyB8ICdsZWZ0JyB8ICdyaWdodCcgPSBudWxsO1xuXHRASW5wdXQoKSBwdWJsaWMgZHJvcGRvd25BbGlnbm1lbnQ6ICdsZWZ0JyB8ICdyaWdodCcgPSAnbGVmdCc7XG5cdEBJbnB1dCgpIHB1YmxpYyBjdXN0b21TZWFyY2hGbjogKHRlcm06IHN0cmluZywgaXRlbTogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IGRlc2NyaXB0aW9uOiBzdHJpbmcgfSkgPT4gYm9vbGVhbjtcblx0QElucHV0KCkgcHVibGljIGZvb3RlckVsZW1lbnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cdEBPdXRwdXQoKSBwdWJsaWMgb25TZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblx0QE91dHB1dCgpIHB1YmxpYyBvbkVuZFJlYWNoZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cdEBPdXRwdXQoKSBwdWJsaWMgb25PcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cdEBPdXRwdXQoKSBwdWJsaWMgb25DbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cdEBPdXRwdXQoKSBwdWJsaWMgb25CbHVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXHRAT3V0cHV0KCkgcHVibGljIG9uQ2xlYXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cdEBPdXRwdXQoKSBwdWJsaWMgb25FbnRlcktleSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXHRAVmlld0NoaWxkKCduZ1NlbGVjdCcpIG5nU2VsZWN0O1xuXHRAVmlld0NoaWxkKCd0YWlsUmVmJykgdGFpbFJlZjogRWxlbWVudFJlZjtcblx0QFZpZXdDaGlsZCgndGFpbE1vY2tSZWYnKSB0YWlsTW9ja1JlZjogRWxlbWVudFJlZjtcblx0QENvbnRlbnRDaGlsZChLbHBTZWxlY3RPcHRpb25UZW1wbGF0ZURpcmVjdGl2ZSwge3JlYWQ6IFRlbXBsYXRlUmVmfSkgY3VzdG9tT3B0aW9uVHBsOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG5cdHByaXZhdGUgbGFzdEl0ZW1JbmRleFJlYWNoZWQgPSAtMTtcblx0cHVibGljIGRyb3Bkb3duUG9zaXRpb25Ub1VzZTogJ2F1dG8nIHwgJ2JvdHRvbScgfCAndG9wJyB8ICdsZWZ0JyB8ICdyaWdodCcgPSAnYm90dG9tJztcblx0cHJpdmF0ZSBpc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcblx0cHJpdmF0ZSBkcm9wZG93blBhbmVsT2Zmc2V0WCA9IDA7XG5cdHByaXZhdGUgZHJvcGRvd25QYW5lbE9mZnNldFkgPSAwO1xuXHRwcml2YXRlIGFuY2hvckFic29sdXRlOiBIVE1MRGl2RWxlbWVudDtcblx0cHJpdmF0ZSBhbmNob3JGaXhlZDogSFRNTERpdkVsZW1lbnQ7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0QE9wdGlvbmFsKCkgQEhvc3QoKSBwcm90ZWN0ZWQgcGFyZW50OiBGb3JtRWxlbWVudENvbXBvbmVudCxcblx0XHRAT3B0aW9uYWwoKSBASG9zdCgpIHByb3RlY3RlZCBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuXHRcdEBJbmplY3QoU0VMRUNUX1RSQU5TTEFUSU9OUykgQE9wdGlvbmFsKCkgcHJpdmF0ZSB0cmFuc2xhdGlvbnM6IGFueSxcblx0XHRwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxuXHRcdHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG5cdCkge1xuXHRcdHN1cGVyKHBhcmVudCwgY29udHJvbENvbnRhaW5lcik7XG5cdH1cblxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5hZGRQcmVmaXgoKTtcblx0XHR0aGlzLmFkZFRhaWwoKTtcblx0XHR0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5rZXlMaXN0ZW5lcik7XG5cdH1cblxuXHRwcml2YXRlIGtleUxpc3RlbmVyID0gKGUpID0+IHtcblx0XHRpZiAoZS5rZXkgPT09ICdFbnRlcicpIHtcblx0XHRcdHRoaXMub25FbnRlcktleS5lbWl0KGUudGFyZ2V0LnZhbHVlKTtcblxuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgYWRkVGFpbCgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy50YWlsTW9ja1JlZikge1xuXHRcdFx0Y29uc3QgY29udGFpbmVyID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5uZy1zZWxlY3QtY29udGFpbmVyJyk7XG5cdFx0XHRjb25zdCBhcnJvd1dyYXBwZXIgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm5nLWFycm93LXdyYXBwZXInKTtcblx0XHRcdGNvbnRhaW5lci5pbnNlcnRCZWZvcmUodGhpcy50YWlsTW9ja1JlZi5uYXRpdmVFbGVtZW50LCBhcnJvd1dyYXBwZXIpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgYWRkUHJlZml4KCk6IHZvaWQge1xuXHRcdGlmIChzdHJpbmdJc1NldEFuZEZpbGxlZCh0aGlzLnByZWZpeCkpIHtcblx0XHRcdGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcubmctc2VsZWN0LWNvbnRhaW5lcicpO1xuXHRcdFx0Y29uc3QgbmV3Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdFx0bmV3Tm9kZS5jbGFzc05hbWUgPSAncHJlZml4Jztcblx0XHRcdG5ld05vZGUuaW5uZXJUZXh0ID0gdGhpcy5wcmVmaXg7XG5cdFx0XHRjb250YWluZXIuaW5zZXJ0QmVmb3JlKG5ld05vZGUsIGNvbnRhaW5lci5jaGlsZHJlblswXSk7XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICh0aGlzLmlzT3BlbiAmJiBpc1ZhbHVlU2V0KGNoYW5nZXMub3B0aW9ucykpIHtcblx0XHRcdHRoaXMubGFzdEl0ZW1JbmRleFJlYWNoZWQgPSAtMTtcblx0XHRcdC8vIHdhaXRpbmcgZm9yIHRoZSB0aGluZyB0byByZW5kZXIgdW50aWwgd2UgZmlyZSB0aGUgZXZlbnRcblx0XHRcdGF3YWl0IGF3YWl0YWJsZUZvck5leHRDeWNsZSgpO1xuXHRcdFx0YXdhaXQgdGhpcy5zZXRXaWR0aEJhc2VkT25PcHRpb25zV2lkdGhzKCk7XG5cdFx0fVxuXHRcdGlmIChjaGFuZ2VzLmRyb3Bkb3duUG9zaXRpb24pIHtcblx0XHRcdHRoaXMuZHJvcGRvd25Qb3NpdGlvblRvVXNlID0gdGhpcy5kcm9wZG93blBvc2l0aW9uO1xuXHRcdH1cblx0XHRpZiAoY2hhbmdlcy5wcmVmaXgpIHtcblx0XHRcdGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZWxSZWY/Lm5hdGl2ZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoJy5uZy1zZWxlY3QtY29udGFpbmVyIC5wcmVmaXgnKTtcblx0XHRcdGlmIChpc1ZhbHVlU2V0KGNvbnRhaW5lcikpIHtcblx0XHRcdFx0Y29udGFpbmVyLmlubmVyVGV4dCA9IGNoYW5nZXMucHJlZml4LmN1cnJlbnRWYWx1ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRnZXREZWZhdWx0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcpOiAoeDogYW55KSA9PiBzdHJpbmcge1xuXHRcdHN3aXRjaCAoa2V5KSB7XG5cdFx0XHRjYXNlICdwbGFjZWhvbGRlcic6XG5cdFx0XHRcdHJldHVybiAoKSA9PiAnUGljayBhbiBvcHRpb24nO1xuXHRcdFx0Y2FzZSAnYW1vdW50U2VsZWN0ZWQnOlxuXHRcdFx0XHRyZXR1cm4gKGFtb3VudCkgPT4gYCR7YW1vdW50fSBzZWxlY3RlZGA7XG5cdFx0fVxuXHR9XG5cblx0Z2V0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcsIHBhcmFtczogYW55ID0gbnVsbCk6IHN0cmluZyB7XG5cdFx0aWYgKGtleSA9PT0gJ3BsYWNlaG9sZGVyJyAmJiBzdHJpbmdJc1NldEFuZEZpbGxlZCh0aGlzLnBsYWNlaG9sZGVyKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMucGxhY2Vob2xkZXI7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLnRyYW5zbGF0aW9ucz8uW2tleV0/LihwYXJhbXMpID8/IHRoaXMuZ2V0RGVmYXVsdFRyYW5zbGF0aW9uKGtleSkocGFyYW1zKTtcblx0fVxuXG5cdG9uU2Nyb2xsKGxhc3RJdGVtSW5kZXg6IG51bWJlcik6IHZvaWQge1xuXHRcdGNvbnN0IHZpc2libGVJdGVtcyA9IHRoaXMubmdTZWxlY3Q/Lml0ZW1zTGlzdD8uZmlsdGVyZWRJdGVtcz8ubGVuZ3RoID8/IDA7XG5cdFx0aWYgKHRoaXMubGFzdEl0ZW1JbmRleFJlYWNoZWQgPCBsYXN0SXRlbUluZGV4ICYmIGxhc3RJdGVtSW5kZXggPT09IHZpc2libGVJdGVtcykge1xuXHRcdFx0dGhpcy5vbkVuZFJlYWNoZWQuZW1pdCgpO1xuXHRcdH1cblx0XHR0aGlzLmxhc3RJdGVtSW5kZXhSZWFjaGVkID0gTWF0aC5tYXgobGFzdEl0ZW1JbmRleCwgdGhpcy5sYXN0SXRlbUluZGV4UmVhY2hlZCk7XG5cdFx0dGhpcy5zZXRXaWR0aEJhc2VkT25PcHRpb25zV2lkdGhzKCk7XG5cdH1cblxuXHRzZWFyY2hRdWVyeUNoYW5nZWQoc2VhcmNoUXVlcnk6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMub25TZWFyY2guZW1pdChzZWFyY2hRdWVyeSk7XG5cdH1cblxuXHRhc3luYyBvbk9wZW4oKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dGhpcy5pc09wZW4gPSB0cnVlO1xuXG5cdFx0aWYgKHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyAmJiAhaXNWYWx1ZVNldCh0aGlzLmRyb3Bkb3duUG9zaXRpb24pKSB7XG5cdFx0XHR0aGlzLmRldGVybWluZURyb3Bkb3duUG9zaXRpb24oKTtcblx0XHR9XG5cblx0XHRpZiAoIXRoaXMudHJ1bmNhdGVPcHRpb25zKSB7XG5cdFx0XHR0aGlzLmNyZWF0ZUFuY2hvcnMoKTtcblx0XHR9XG5cdFx0Ly8gd2FpdGluZyBmb3IgdGhlIHRoaW5nIHRvIHJlbmRlciB1bnRpbCB3ZSBmaXJlIHRoZSBldmVudFxuXHRcdGF3YWl0IGF3YWl0YWJsZUZvck5leHRDeWNsZSgpO1xuXHRcdHRoaXMub25PcGVuZWQuZW1pdCgpO1xuXG5cdFx0YXdhaXQgdGhpcy5zZXRXaWR0aEJhc2VkT25PcHRpb25zV2lkdGhzKCk7XG5cdFx0aWYgKCF0aGlzLnRydW5jYXRlT3B0aW9ucykge1xuXHRcdFx0dGhpcy5zZXRGaXhlZERyb3Bkb3duUGFuZWxQb3NpdGlvbigpO1xuXHRcdFx0dGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuXHRcdFx0XHRbLi4udGhpcy5nZXRBbGxMaW1pdGluZ0NvbnRhaW5lcnMoKSwgd2luZG93XS5mb3JFYWNoKGUgPT4gZS5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnNldEZpeGVkRHJvcGRvd25QYW5lbFBvc2l0aW9uKSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGNyZWF0ZUFuY2hvcnMoKTogdm9pZCB7XG5cdFx0dGhpcy5hbmNob3JBYnNvbHV0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdGlmICh0aGlzLmRyb3Bkb3duUG9zaXRpb25Ub1VzZSA9PT0gJ3RvcCcpIHtcblx0XHRcdHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5wcmVwZW5kKHRoaXMuYW5jaG9yQWJzb2x1dGUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5hbmNob3JBYnNvbHV0ZSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5hbmNob3JGaXhlZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdHRoaXMuYW5jaG9yRml4ZWQuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xuXHRcdHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmFuY2hvckZpeGVkKTtcblx0fVxuXG5cdHByaXZhdGUgcmVtb3ZlQW5jaG9ycygpOiB2b2lkIHtcblx0XHR0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5hbmNob3JBYnNvbHV0ZSk7XG5cdFx0dGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuYW5jaG9yRml4ZWQpO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXRGaXhlZERyb3Bkb3duUGFuZWxQb3NpdGlvbiA9ICgpID0+IHtcblx0XHRjb25zdCBkcm9wZG93blBhbmVsID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ25nLWRyb3Bkb3duLXBhbmVsJyk7XG5cdFx0ZHJvcGRvd25QYW5lbC5zdHlsZS52aXNpYmlsaXR5ID0gJ2luaXRpYWwnO1xuXHRcdGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGRpZmZlcmVuY2UgPSB0aGlzLmFuY2hvckFic29sdXRlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCAtIHRoaXMuYW5jaG9yRml4ZWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuXHRcdHRoaXMuZHJvcGRvd25QYW5lbE9mZnNldFkgPSBkaWZmZXJlbmNlO1xuXG5cdFx0ZHJvcGRvd25QYW5lbC5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XG5cdFx0dGhpcy5zZXRQYW5lbE9mZnNldHMoKTtcblx0fTtcblxuXHRwcml2YXRlIHNldFdpZHRoQmFzZWRPbk9wdGlvbnNXaWR0aHMgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0aWYgKHRoaXMudHJ1bmNhdGVPcHRpb25zID09PSBmYWxzZSkge1xuXHRcdFx0YXdhaXQgYXdhaXRhYmxlRm9yTmV4dEN5Y2xlKCk7XG5cdFx0XHRpZiAoIWlzVmFsdWVTZXQodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zY3JvbGxhYmxlLWNvbnRlbnQnKSkpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zY3JvbGxhYmxlLWNvbnRlbnQnKS5jbGFzc0xpc3QuYWRkKCdjYWxjdWxhdGluZ1dpZHRocycpO1xuXHRcdFx0Y29uc3QgbWF4V2lkdGggPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNjcm9sbGFibGUtY29udGVudCcpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuXHRcdFx0dGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zY3JvbGxhYmxlLWNvbnRlbnQnKS5jbGFzc0xpc3QucmVtb3ZlKCdjYWxjdWxhdGluZ1dpZHRocycpO1xuXHRcdFx0Y29uc3QgZHJvcGRvd25QYW5lbCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCduZy1kcm9wZG93bi1wYW5lbCcpO1xuXHRcdFx0aWYgKGRyb3Bkb3duUGFuZWwpIHtcblx0XHRcdFx0ZHJvcGRvd25QYW5lbC5zdHlsZS5taW5XaWR0aCA9IGAke3RoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aH1weGA7XG5cdFx0XHRcdGRyb3Bkb3duUGFuZWwuc3R5bGUud2lkdGggPSBgJHtNYXRoLm1heCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgsIG1heFdpZHRoLCBkcm9wZG93blBhbmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKX1weGA7XG5cdFx0XHRcdGF3YWl0IGF3YWl0YWJsZUZvck5leHRDeWNsZSgpO1xuXHRcdFx0XHRjb25zdCBwaWNrZXJXaWR0aCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcblx0XHRcdFx0Y29uc3QgZHJvcGRvd25QYW5lbFdpZHRoID0gZHJvcGRvd25QYW5lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcblxuXHRcdFx0XHRjb25zdCBzcGFjZUxlZnRPZkVsUmVmID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG5cdFx0XHRcdGNvbnN0IHNwYWNlUmlnaHRPZkVsUmVmID0gd2luZG93LmlubmVyV2lkdGggLSAodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoICsgc3BhY2VMZWZ0T2ZFbFJlZik7XG5cdFx0XHRcdGNvbnN0IGV4dHJhTmVlZGVkU3BhY2UgPSBkcm9wZG93blBhbmVsV2lkdGggLSBwaWNrZXJXaWR0aDtcblx0XHRcdFx0aWYgKHRoaXMuZHJvcGRvd25BbGlnbm1lbnQgPT09ICdyaWdodCcpIHtcblx0XHRcdFx0XHRpZiAoZXh0cmFOZWVkZWRTcGFjZSA+IHNwYWNlTGVmdE9mRWxSZWYpIHtcblx0XHRcdFx0XHRcdHRoaXMuZHJvcGRvd25QYW5lbE9mZnNldFggPSAtc3BhY2VMZWZ0T2ZFbFJlZiArIDEwO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aGlzLmRyb3Bkb3duUGFuZWxPZmZzZXRYID0gLWV4dHJhTmVlZGVkU3BhY2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKGV4dHJhTmVlZGVkU3BhY2UgPiBzcGFjZVJpZ2h0T2ZFbFJlZikge1xuXHRcdFx0XHRcdHRoaXMuZHJvcGRvd25QYW5lbE9mZnNldFggPSAtZXh0cmFOZWVkZWRTcGFjZSArIHNwYWNlUmlnaHRPZkVsUmVmIC0gMjA7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5zZXRQYW5lbE9mZnNldHMoKTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cblx0cHJpdmF0ZSBnZXRBbGxMaW1pdGluZ0NvbnRhaW5lcnMoKTogQXJyYXk8SFRNTEVsZW1lbnQ+IHtcblx0XHRjb25zdCByZXN1bHQgPSBbXTtcblx0XHRsZXQgY3VycmVudCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudDtcblx0XHR3aGlsZSAoY3VycmVudC5wYXJlbnRFbGVtZW50KSB7XG5cdFx0XHRpZiAodGhpcy5pc0xpbWl0aW5nQ29udGFpbmVyKGN1cnJlbnQucGFyZW50RWxlbWVudCkpIHtcblx0XHRcdFx0cmVzdWx0LnB1c2goY3VycmVudC5wYXJlbnRFbGVtZW50KTtcblx0XHRcdH1cblx0XHRcdGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudEVsZW1lbnQ7XG5cdFx0fVxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHRwcml2YXRlIHNldFBhbmVsT2Zmc2V0cygpOiB2b2lkIHtcblx0XHRjb25zdCBkcm9wZG93blBhbmVsID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ25nLWRyb3Bkb3duLXBhbmVsJyk7XG5cdFx0aWYgKCFpc1ZhbHVlU2V0KGRyb3Bkb3duUGFuZWwpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHNjcm9sbFBvc2l0aW9uT2Zmc2V0ID0gYHRyYW5zbGF0ZSgke3RoaXMuZHJvcGRvd25QYW5lbE9mZnNldFh9cHgsICR7dGhpcy5kcm9wZG93blBhbmVsT2Zmc2V0WX1weClgO1xuXHRcdGNvbnN0IGRyb3Bkb3duUG9zaXRpb25PZmZzZXQgPSB0aGlzLmRyb3Bkb3duUG9zaXRpb25Ub1VzZSA9PT0gJ3RvcCcgPyBgdHJhbnNsYXRlWSgtMTAwJSkgdHJhbnNsYXRlWSgxcHgpYCA6ICcnO1xuXHRcdGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnKSB7XG5cdFx0XHRkcm9wZG93blBhbmVsLnN0eWxlLnRyYW5zZm9ybU9yaWdpbiA9ICd0b3AgbGVmdCc7XG5cdFx0XHRkcm9wZG93blBhbmVsLnN0eWxlLnRyYW5zZm9ybSA9IGByb3RhdGUoOTBkZWcpIHRyYW5zbGF0ZVkoLSR7dGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRofXB4KWA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGRyb3Bkb3duUGFuZWwuc3R5bGUudHJhbnNmb3JtID0gW3Njcm9sbFBvc2l0aW9uT2Zmc2V0LCBkcm9wZG93blBvc2l0aW9uT2Zmc2V0XS5qb2luKCcgJyk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBkZXRlcm1pbmVEcm9wZG93blBvc2l0aW9uKCk6IHZvaWQge1xuXHRcdGNvbnN0IGJvdHRvbVNwYWNlID0gd2luZG93LmlubmVySGVpZ2h0IC0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcblx0XHRpZiAoYm90dG9tU3BhY2UgPj0gMzMwKSB7XG5cdFx0XHR0aGlzLmRyb3Bkb3duUG9zaXRpb25Ub1VzZSA9ICdib3R0b20nO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmRyb3Bkb3duUG9zaXRpb25Ub1VzZSA9ICd0b3AnO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgaXNMaW1pdGluZ0NvbnRhaW5lcihlbGVtZW50OiBFbGVtZW50KTogYm9vbGVhbiB7XG5cdFx0Y29uc3Qgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuXHRcdGlmIChzdHlsZS5vdmVyZmxvd1kgPT09ICdhdXRvJykge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGlmIChzdHlsZS5vdmVyZmxvdyA9PT0gJ2F1dG8nKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0aWYgKHN0eWxlLm92ZXJmbG93WSA9PT0gJ3Njcm9sbCcpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRpZiAoc3R5bGUub3ZlcmZsb3cgPT09ICdzY3JvbGwnKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cHVibGljIGZvY3VzID0gKCk6IHZvaWQgPT4ge1xuXHRcdHRoaXMubmdTZWxlY3QuZm9jdXMoKTtcblx0fVxuXG5cdHB1YmxpYyBvcGVuID0gKCk6IHZvaWQgPT4ge1xuXHRcdHRoaXMubmdTZWxlY3Qub3BlbigpO1xuXHR9XG5cblx0cHVibGljIGNsb3NlID0gKCk6IHZvaWQgPT4ge1xuXHRcdHRoaXMubmdTZWxlY3QuY2xvc2UoKTtcblx0fVxuXG5cdHB1YmxpYyBvbkNsb3NlKCk6IHZvaWQge1xuXHRcdFsuLi50aGlzLmdldEFsbExpbWl0aW5nQ29udGFpbmVycygpLCB3aW5kb3ddLmZvckVhY2goZSA9PiBlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuc2V0Rml4ZWREcm9wZG93blBhbmVsUG9zaXRpb24pKTtcblx0XHQvLyBHaXZlIGFuZ3VsYXIgYSBzZWNvbmQgdG8gcmVuZGVyIHRoZSBjbG9zZWQgc2l0dWF0aW9uIGJlZm9yZSBlbWl0dGluZyB0aGUgY2xvc2UgZXZlbnRcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMuaXNPcGVuID0gZmFsc2U7XG5cdFx0XHRpZiAoIXRoaXMudHJ1bmNhdGVPcHRpb25zKSB7XG5cdFx0XHRcdHRoaXMucmVtb3ZlQW5jaG9ycygpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5vbkNsb3NlZC5lbWl0KCk7XG5cdFx0fSk7XG5cdH1cblxuXHRvbkZvY3VzKCk6IHZvaWQge1xuXHRcdGNvbnN0IHNpbmdsZVZhbHVlSW5wdXRFbGVtZW50ID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5uZy1zZWxlY3Qtc2luZ2xlIC5uZy1pbnB1dCcpO1xuXHRcdGNvbnN0IHByZWZpeEVsZW1lbnQgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm5nLXNlbGVjdC1zaW5nbGUgLnByZWZpeCcpO1xuXHRcdGlmIChpc1ZhbHVlU2V0KHNpbmdsZVZhbHVlSW5wdXRFbGVtZW50KSAmJiBpc1ZhbHVlU2V0KHByZWZpeEVsZW1lbnQpKSB7XG5cdFx0XHRjb25zdCBwcmVmaXhXaWR0aCA9IHByZWZpeEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG5cdFx0XHRjb25zdCBzcGFjaW5nID0gJzAuNHJlbSc7XG5cdFx0XHRzaW5nbGVWYWx1ZUlucHV0RWxlbWVudC5zdHlsZS5sZWZ0ID0gYGNhbGMoJHtwcmVmaXhXaWR0aH1weCArICR7c3BhY2luZ30pYDtcblx0XHR9IGVsc2UgaWYgKGlzVmFsdWVTZXQoc2luZ2xlVmFsdWVJbnB1dEVsZW1lbnQpKSB7XG5cdFx0XHRzaW5nbGVWYWx1ZUlucHV0RWxlbWVudC5zdHlsZS5sZWZ0ID0gYDBweGA7XG5cdFx0fVxuXHR9XG5cblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cdFx0c3VwZXIubmdPbkRlc3Ryb3koKTtcblx0XHR0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmtleUxpc3RlbmVyKTtcblx0fVxufVxuIiwiPG5nLXNlbGVjdFxuXHQjbmdTZWxlY3Rcblx0W3BsYWNlaG9sZGVyXT1cImdldFRyYW5zbGF0aW9uKCdwbGFjZWhvbGRlcicpXCJcblx0YmluZExhYmVsPVwibmFtZVwiXG5cdGJpbmRWYWx1ZT1cImlkXCJcblx0W2l0ZW1zXT1cIm9wdGlvbnNcIlxuXHRbY2xlYXJhYmxlXT1cImNsZWFyYWJsZVwiXG5cdFsobmdNb2RlbCldPVwiaW5uZXJWYWx1ZVwiXG5cdFtuZ0NsYXNzXT1cIntzaG93RXJyb3JzOiBpc0luRXJyb3JTdGF0ZSgpLCB2ZXJ0aWNhbE9yaWVudGF0aW9uOiBvcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJywgdHJ1bmNhdGVPcHRpb25zOiB0cnVuY2F0ZU9wdGlvbnMsIG5vblRydW5jYXRlZE9wdGlvbnM6ICF0cnVuY2F0ZU9wdGlvbnMsIHdpdGhTZXBhcmF0aW5nTGluZTogd2l0aFNlcGFyYXRpbmdMaW5lLCBub0JvcmRlckxlZnQ6ICFoYXNCb3JkZXJMZWZ0LCBub0JvcmRlclJpZ2h0OiAhaGFzQm9yZGVyUmlnaHR9XCJcblx0KGNoYW5nZSk9XCJzZXRJbm5lclZhbHVlQW5kTm90aWZ5KGlubmVyVmFsdWUpXCJcblx0W211bHRpcGxlXT1cIm11bHRpcGxlXCJcblx0W2Rpc2FibGVkXT1cImRpc2FibGVkXCJcblx0KGJsdXIpPVwidG91Y2goKTsgb25CbHVyLmVtaXQoKVwiXG5cdChjbGVhcik9XCJvbkNsZWFyLmVtaXQoKVwiXG5cdChzZWFyY2gpPVwic2VhcmNoUXVlcnlDaGFuZ2VkKCRldmVudC50ZXJtKVwiXG5cdFtzZWFyY2hhYmxlXT1cInNlYXJjaGFibGVcIlxuXHRbZHJvcGRvd25Qb3NpdGlvbl09XCJkcm9wZG93blBvc2l0aW9uVG9Vc2VcIlxuXHRbc2VhcmNoRm5dPVwiY3VzdG9tU2VhcmNoRm5cIlxuXHRbc2VsZWN0T25UYWJdPVwidHJ1ZVwiXG5cdFt2aXJ0dWFsU2Nyb2xsXT1cInRydWVcIlxuXHQoc2Nyb2xsKT1cIm9uU2Nyb2xsKCRldmVudC5lbmQpXCJcblx0KG9wZW4pPVwib25PcGVuKClcIlxuXHQoY2xvc2UpPVwib25DbG9zZSgpXCJcblx0KGZvY3VzKT1cIm9uRm9jdXMoKVwiXG4+XG5cdDxuZy10ZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIiBuZy1vcHRpb24tdG1wPlxuXHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21PcHRpb25UcGxcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21PcHRpb25UcGxcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW06IGl0ZW19XCI+PC9uZy1jb250YWluZXI+XG5cdFx0PGRpdiBbYXR0ci5kYXRhLWN5XT1cIml0ZW0uaWRcIiAqbmdJZj1cIiFjdXN0b21PcHRpb25UcGxcIj5cblx0XHRcdHt7IGl0ZW0ubmFtZSB9fVxuXHRcdFx0PGRpdiAqbmdJZj1cIml0ZW0uZGVzY3JpcHRpb25cIiBjbGFzcz1cImRyb3Bkb3duLWl0ZW0tZGVzY3JpcHRpb25cIj5cblx0XHRcdFx0e3sgaXRlbS5kZXNjcmlwdGlvbiB9fVxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdDwvbmctdGVtcGxhdGU+XG5cdDxuZy1jb250YWluZXIgKm5nSWY9XCJtdWx0aXBsZSAmJiBtdWx0aXBsZURpc3BsYXllZEFzQW1vdW50ICYmIGlubmVyVmFsdWU/Lmxlbmd0aCA+IDFcIj5cblx0XHQ8bmctdGVtcGxhdGUgbmctbXVsdGktbGFiZWwtdG1wPlxuXHRcdFx0PGRpdiBjbGFzcz1cIm5nLXZhbHVlXCI+XG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwibmctdmFsdWUtbGFiZWxcIj57e2dldFRyYW5zbGF0aW9uKCdhbW91bnRTZWxlY3RlZCcsIGlubmVyVmFsdWU/Lmxlbmd0aCl9fTwvc3Bhbj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvbmctdGVtcGxhdGU+XG5cdDwvbmctY29udGFpbmVyPlxuXHQ8bmctdGVtcGxhdGUgbmctZm9vdGVyLXRtcCAqbmdJZj1cImZvb3RlckVsZW1lbnRcIj5cblx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvb3RlckVsZW1lbnRcIj48L25nLWNvbnRhaW5lcj5cblx0PC9uZy10ZW1wbGF0ZT5cbjwvbmctc2VsZWN0PlxuXG48ZGl2IGNsYXNzPVwidGFpbFwiICN0YWlsUmVmPlxuXHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdldFRhaWxUcGwoKVwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48IS0tIEkgbmVlZCB0aGlzIG1vY2sgdG8gcmVzZXJ2ZSB0aGUgc3BhY2UuIEkgY2FudCB1c2UgdGhlIG5vcm1hbCB0YWlsIGJlY2F1c2UgdGhhdCBvcGVucyB0aGUgZHJvcGRvd24gZnJvbSBuZy1zZWxlY3QgLS0+XG48IS0tIEkgaGF2ZSBubyBpZGVhIGhvdyB0byBhdm9pZCB0aGF0IC0tPlxuPGRpdiBjbGFzcz1cInRhaWxNb2NrXCIgI3RhaWxNb2NrUmVmPlxuXHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdldFRhaWxUcGwoKVwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
|
|
383
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsaXBwYS9uZ3gtZW5oYW5jeS1mb3Jtcy9zcmMvbGliL2VsZW1lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRU4sU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBRVQsWUFBWSxFQUNaLElBQUksRUFDSixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBRXZGLE9BQU8sRUFBQyxVQUFVLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7O0FBV3pELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFNLDhCQUE4QixDQUFDLENBQUM7QUFHM0YsTUFBTSxPQUFPLGdDQUFnQzs4R0FBaEMsZ0NBQWdDO2tHQUFoQyxnQ0FBZ0M7OzJGQUFoQyxnQ0FBZ0M7a0JBRDVDLFNBQVM7bUJBQUMsRUFBQyxRQUFRLEVBQUUsc0JBQXNCLEVBQUM7O0FBVTdDLE1BQU0sT0FBTyxlQUFnQixTQUFRLGlCQUFvQztJQXFDeEUsWUFDK0IsTUFBNEIsRUFDNUIsZ0JBQWtDLEVBQ2YsWUFBaUIsRUFD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QyxJQUFJLEVBQUUsV0FBVyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0QWZ0ZXJWaWV3SW5pdCxcblx0Q29tcG9uZW50LFxuXHRDb250ZW50Q2hpbGQsXG5cdERpcmVjdGl2ZSxcblx0RWxlbWVudFJlZixcblx0RXZlbnRFbWl0dGVyLFxuXHRIb3N0LFxuXHRJbmplY3QsXG5cdEluamVjdGlvblRva2VuLFxuXHRJbnB1dCwgTmdab25lLFxuXHRPbkNoYW5nZXMsXG5cdE9uRGVzdHJveSxcblx0T3B0aW9uYWwsXG5cdE91dHB1dCxcblx0U2ltcGxlQ2hhbmdlcyxcblx0VGVtcGxhdGVSZWYsXG5cdFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbENvbnRhaW5lciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7VmFsdWVBY2Nlc3NvckJhc2V9IGZyb20gJy4uL3ZhbHVlLWFjY2Vzc29yLWJhc2UvdmFsdWUtYWNjZXNzb3ItYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3JtRWxlbWVudENvbXBvbmVudH0gZnJvbSAnLi4vLi4vZm9ybS9mb3JtLWVsZW1lbnQvZm9ybS1lbGVtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQge2lzVmFsdWVTZXQsIHN0cmluZ0lzU2V0QW5kRmlsbGVkfSBmcm9tICcuLi8uLi91dGlsL3ZhbHVlcyc7XG5pbXBvcnQge2F3YWl0YWJsZUZvck5leHRDeWNsZX0gZnJvbSBcIi4uLy4uL3V0aWwvYW5ndWxhclwiO1xuXG5leHBvcnQgdHlwZSBBcHBTZWxlY3RPcHRpb25zID0gQXJyYXk8QXBwU2VsZWN0T3B0aW9uPjtcbmV4cG9ydCB0eXBlIEFwcFNlbGVjdE9wdGlvbiA9IHtcblx0aWQ6IGFueTtcblx0bmFtZTogc3RyaW5nO1xuXHRkZXNjcmlwdGlvbj86IHN0cmluZztcblx0YWN0aXZlPzogYm9vbGVhbjtcblx0ZGlzYWJsZWQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IFNFTEVDVF9UUkFOU0xBVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55Pigna2xwLmZvcm0uc2VsZWN0LnRyYW5zbGF0aW9ucycpO1xuXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ1trbHBTZWxlY3RPcHRpb25UcGxdJ30pXG5leHBvcnQgY2xhc3MgS2xwU2VsZWN0T3B0aW9uVGVtcGxhdGVEaXJlY3RpdmUge1xufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdrbHAtZm9ybS1zZWxlY3QnLFxuXHR0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG5cdHByb3ZpZGVyczogW3twcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IFNlbGVjdENvbXBvbmVudCwgbXVsdGk6IHRydWV9XSxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgVmFsdWVBY2Nlc3NvckJhc2U8c3RyaW5nIHwgc3RyaW5nW10+IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXHRASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXHRASW5wdXQoKSBwcmVmaXg6IHN0cmluZztcblx0QElucHV0KCkgb3JpZW50YXRpb246ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcgPSAnaG9yaXpvbnRhbCc7XG5cdEBJbnB1dCgpIG9wdGlvbnM6IEFwcFNlbGVjdE9wdGlvbnM7XG5cdEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XG5cdEBJbnB1dCgpIG11bHRpcGxlRGlzcGxheWVkQXNBbW91bnQgPSBmYWxzZTtcblx0QElucHV0KCkgY2xlYXJhYmxlID0gdHJ1ZTtcblx0QElucHV0KCkgdHJ1bmNhdGVPcHRpb25zID0gdHJ1ZTtcblx0QElucHV0KCkgd2l0aFNlcGFyYXRpbmdMaW5lID0gZmFsc2U7XG5cdEBJbnB1dCgpIHNlYXJjaGFibGUgPSB0cnVlO1xuXHRASW5wdXQoKSBoYXNCb3JkZXJMZWZ0ID0gdHJ1ZTtcblx0QElucHV0KCkgaGFzQm9yZGVyUmlnaHQgPSB0cnVlO1xuXHRASW5wdXQoKSBwdWJsaWMgZHJvcGRvd25Qb3NpdGlvbjogJ2F1dG8nIHwgJ2JvdHRvbScgfCAndG9wJyB8ICdsZWZ0JyB8ICdyaWdodCcgPSBudWxsO1xuXHRASW5wdXQoKSBwdWJsaWMgZHJvcGRvd25BbGlnbm1lbnQ6ICdsZWZ0JyB8ICdyaWdodCcgPSAnbGVmdCc7XG5cdEBJbnB1dCgpIHB1YmxpYyBjdXN0b21TZWFyY2hGbjogKHRlcm06IHN0cmluZywgaXRlbTogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IGRlc2NyaXB0aW9uOiBzdHJpbmcgfSkgPT4gYm9vbGVhbjtcblx0QElucHV0KCkgcHVibGljIGZvb3RlckVsZW1lbnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cdEBPdXRwdXQoKSBwdWJsaWMgb25TZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblx0QE91dHB1dCgpIHB1YmxpYyBvbkVuZFJlYWNoZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cdEBPdXRwdXQoKSBwdWJsaWMgb25PcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cdEBPdXRwdXQoKSBwdWJsaWMgb25DbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cdEBPdXRwdXQoKSBwdWJsaWMgb25CbHVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXHRAT3V0cHV0KCkgcHVibGljIG9uQ2xlYXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cdEBPdXRwdXQoKSBwdWJsaWMgb25FbnRlcktleSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXHRAVmlld0NoaWxkKCduZ1NlbGVjdCcpIG5nU2VsZWN0O1xuXHRAVmlld0NoaWxkKCd0YWlsUmVmJykgdGFpbFJlZjogRWxlbWVudFJlZjtcblx0QFZpZXdDaGlsZCgndGFpbE1vY2tSZWYnKSB0YWlsTW9ja1JlZjogRWxlbWVudFJlZjtcblx0QENvbnRlbnRDaGlsZChLbHBTZWxlY3RPcHRpb25UZW1wbGF0ZURpcmVjdGl2ZSwge3JlYWQ6IFRlbXBsYXRlUmVmfSkgY3VzdG9tT3B0aW9uVHBsOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG5cdHByaXZhdGUgbGFzdEl0ZW1JbmRleFJlYWNoZWQgPSAtMTtcblx0cHVibGljIGRyb3Bkb3duUG9zaXRpb25Ub1VzZTogJ2F1dG8nIHwgJ2JvdHRvbScgfCAndG9wJyB8ICdsZWZ0JyB8ICdyaWdodCcgPSAnYm90dG9tJztcblx0cHJpdmF0ZSBpc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcblx0cHJpdmF0ZSBkcm9wZG93blBhbmVsT2Zmc2V0WCA9IDA7XG5cdHByaXZhdGUgZHJvcGRvd25QYW5lbE9mZnNldFkgPSAwO1xuXHRwcml2YXRlIGFuY2hvckFic29sdXRlOiBIVE1MRGl2RWxlbWVudDtcblx0cHJpdmF0ZSBhbmNob3JGaXhlZDogSFRNTERpdkVsZW1lbnQ7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0QE9wdGlvbmFsKCkgQEhvc3QoKSBwcm90ZWN0ZWQgcGFyZW50OiBGb3JtRWxlbWVudENvbXBvbmVudCxcblx0XHRAT3B0aW9uYWwoKSBASG9zdCgpIHByb3RlY3RlZCBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuXHRcdEBJbmplY3QoU0VMRUNUX1RSQU5TTEFUSU9OUykgQE9wdGlvbmFsKCkgcHJpdmF0ZSB0cmFuc2xhdGlvbnM6IGFueSxcblx0XHRwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxuXHRcdHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG5cdCkge1xuXHRcdHN1cGVyKHBhcmVudCwgY29udHJvbENvbnRhaW5lcik7XG5cdH1cblxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5hZGRQcmVmaXgoKTtcblx0XHR0aGlzLmFkZFRhaWwoKTtcblx0XHR0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5rZXlMaXN0ZW5lcik7XG5cdH1cblxuXHRwcml2YXRlIGtleUxpc3RlbmVyID0gKGUpID0+IHtcblx0XHRpZiAoZS5rZXkgPT09ICdFbnRlcicpIHtcblx0XHRcdHRoaXMub25FbnRlcktleS5lbWl0KGUudGFyZ2V0LnZhbHVlKTtcblxuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgYWRkVGFpbCgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy50YWlsTW9ja1JlZikge1xuXHRcdFx0Y29uc3QgY29udGFpbmVyID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5uZy1zZWxlY3QtY29udGFpbmVyJyk7XG5cdFx0XHRjb25zdCBhcnJvd1dyYXBwZXIgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm5nLWFycm93LXdyYXBwZXInKTtcblx0XHRcdGNvbnRhaW5lci5pbnNlcnRCZWZvcmUodGhpcy50YWlsTW9ja1JlZi5uYXRpdmVFbGVtZW50LCBhcnJvd1dyYXBwZXIpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgYWRkUHJlZml4KCk6IHZvaWQge1xuXHRcdGlmIChzdHJpbmdJc1NldEFuZEZpbGxlZCh0aGlzLnByZWZpeCkpIHtcblx0XHRcdGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcubmctc2VsZWN0LWNvbnRhaW5lcicpO1xuXHRcdFx0Y29uc3QgbmV3Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdFx0bmV3Tm9kZS5jbGFzc05hbWUgPSAncHJlZml4Jztcblx0XHRcdG5ld05vZGUuaW5uZXJUZXh0ID0gdGhpcy5wcmVmaXg7XG5cdFx0XHRjb250YWluZXIuaW5zZXJ0QmVmb3JlKG5ld05vZGUsIGNvbnRhaW5lci5jaGlsZHJlblswXSk7XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICh0aGlzLmlzT3BlbiAmJiBpc1ZhbHVlU2V0KGNoYW5nZXMub3B0aW9ucykpIHtcblx0XHRcdHRoaXMubGFzdEl0ZW1JbmRleFJlYWNoZWQgPSAtMTtcblx0XHRcdC8vIHdhaXRpbmcgZm9yIHRoZSB0aGluZyB0byByZW5kZXIgdW50aWwgd2UgZmlyZSB0aGUgZXZlbnRcblx0XHRcdGF3YWl0IGF3YWl0YWJsZUZvck5leHRDeWNsZSgpO1xuXHRcdFx0YXdhaXQgdGhpcy5zZXRXaWR0aEJhc2VkT25PcHRpb25zV2lkdGhzKCk7XG5cdFx0fVxuXHRcdGlmIChjaGFuZ2VzLmRyb3Bkb3duUG9zaXRpb24pIHtcblx0XHRcdHRoaXMuZHJvcGRvd25Qb3NpdGlvblRvVXNlID0gdGhpcy5kcm9wZG93blBvc2l0aW9uO1xuXHRcdH1cblx0XHRpZiAoY2hhbmdlcy5wcmVmaXgpIHtcblx0XHRcdGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZWxSZWY/Lm5hdGl2ZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoJy5uZy1zZWxlY3QtY29udGFpbmVyIC5wcmVmaXgnKTtcblx0XHRcdGlmIChpc1ZhbHVlU2V0KGNvbnRhaW5lcikpIHtcblx0XHRcdFx0Y29udGFpbmVyLmlubmVyVGV4dCA9IGNoYW5nZXMucHJlZml4LmN1cnJlbnRWYWx1ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRnZXREZWZhdWx0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcpOiAoeDogYW55KSA9PiBzdHJpbmcge1xuXHRcdHN3aXRjaCAoa2V5KSB7XG5cdFx0XHRjYXNlICdwbGFjZWhvbGRlcic6XG5cdFx0XHRcdHJldHVybiAoKSA9PiAnUGljayBhbiBvcHRpb24nO1xuXHRcdFx0Y2FzZSAnYW1vdW50U2VsZWN0ZWQnOlxuXHRcdFx0XHRyZXR1cm4gKGFtb3VudCkgPT4gYCR7YW1vdW50fSBzZWxlY3RlZGA7XG5cdFx0fVxuXHR9XG5cblx0Z2V0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcsIHBhcmFtczogYW55ID0gbnVsbCk6IHN0cmluZyB7XG5cdFx0aWYgKGtleSA9PT0gJ3BsYWNlaG9sZGVyJyAmJiBzdHJpbmdJc1NldEFuZEZpbGxlZCh0aGlzLnBsYWNlaG9sZGVyKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMucGxhY2Vob2xkZXI7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLnRyYW5zbGF0aW9ucz8uW2tleV0/LihwYXJhbXMpID8/IHRoaXMuZ2V0RGVmYXVsdFRyYW5zbGF0aW9uKGtleSkocGFyYW1zKTtcblx0fVxuXG5cdG9uU2Nyb2xsKGxhc3RJdGVtSW5kZXg6IG51bWJlcik6IHZvaWQge1xuXHRcdGNvbnN0IHZpc2libGVJdGVtcyA9IHRoaXMubmdTZWxlY3Q/Lml0ZW1zTGlzdD8uZmlsdGVyZWRJdGVtcz8ubGVuZ3RoID8/IDA7XG5cdFx0aWYgKHRoaXMubGFzdEl0ZW1JbmRleFJlYWNoZWQgPCBsYXN0SXRlbUluZGV4ICYmIGxhc3RJdGVtSW5kZXggPT09IHZpc2libGVJdGVtcykge1xuXHRcdFx0dGhpcy5vbkVuZFJlYWNoZWQuZW1pdCgpO1xuXHRcdH1cblx0XHR0aGlzLmxhc3RJdGVtSW5kZXhSZWFjaGVkID0gTWF0aC5tYXgobGFzdEl0ZW1JbmRleCwgdGhpcy5sYXN0SXRlbUluZGV4UmVhY2hlZCk7XG5cdFx0dGhpcy5zZXRXaWR0aEJhc2VkT25PcHRpb25zV2lkdGhzKCk7XG5cdH1cblxuXHRzZWFyY2hRdWVyeUNoYW5nZWQoc2VhcmNoUXVlcnk6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMub25TZWFyY2guZW1pdChzZWFyY2hRdWVyeSk7XG5cdH1cblxuXHRhc3luYyBvbk9wZW4oKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dGhpcy5pc09wZW4gPSB0cnVlO1xuXG5cdFx0aWYgKHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyAmJiAhaXNWYWx1ZVNldCh0aGlzLmRyb3Bkb3duUG9zaXRpb24pKSB7XG5cdFx0XHR0aGlzLmRldGVybWluZURyb3Bkb3duUG9zaXRpb24oKTtcblx0XHR9XG5cblx0XHRpZiAoIXRoaXMudHJ1bmNhdGVPcHRpb25zKSB7XG5cdFx0XHR0aGlzLmNyZWF0ZUFuY2hvcnMoKTtcblx0XHR9XG5cdFx0Ly8gd2FpdGluZyBmb3IgdGhlIHRoaW5nIHRvIHJlbmRlciB1bnRpbCB3ZSBmaXJlIHRoZSBldmVudFxuXHRcdGF3YWl0IGF3YWl0YWJsZUZvck5leHRDeWNsZSgpO1xuXHRcdHRoaXMub25PcGVuZWQuZW1pdCgpO1xuXG5cdFx0YXdhaXQgdGhpcy5zZXRXaWR0aEJhc2VkT25PcHRpb25zV2lkdGhzKCk7XG5cdFx0aWYgKCF0aGlzLnRydW5jYXRlT3B0aW9ucykge1xuXHRcdFx0dGhpcy5zZXRGaXhlZERyb3Bkb3duUGFuZWxQb3NpdGlvbigpO1xuXHRcdFx0dGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuXHRcdFx0XHRbLi4udGhpcy5nZXRBbGxMaW1pdGluZ0NvbnRhaW5lcnMoKSwgd2luZG93XS5mb3JFYWNoKGUgPT4gZS5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnNldEZpeGVkRHJvcGRvd25QYW5lbFBvc2l0aW9uKSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGNyZWF0ZUFuY2hvcnMoKTogdm9pZCB7XG5cdFx0dGhpcy5hbmNob3JBYnNvbHV0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdGlmICh0aGlzLmRyb3Bkb3duUG9zaXRpb25Ub1VzZSA9PT0gJ3RvcCcpIHtcblx0XHRcdHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5wcmVwZW5kKHRoaXMuYW5jaG9yQWJzb2x1dGUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5hbmNob3JBYnNvbHV0ZSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5hbmNob3JGaXhlZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdHRoaXMuYW5jaG9yRml4ZWQuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xuXHRcdHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmFuY2hvckZpeGVkKTtcblx0fVxuXG5cdHByaXZhdGUgcmVtb3ZlQW5jaG9ycygpOiB2b2lkIHtcblx0XHR0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5hbmNob3JBYnNvbHV0ZSk7XG5cdFx0dGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuYW5jaG9yRml4ZWQpO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXRGaXhlZERyb3Bkb3duUGFuZWxQb3NpdGlvbiA9ICgpID0+IHtcblx0XHRjb25zdCBkcm9wZG93blBhbmVsID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ25nLWRyb3Bkb3duLXBhbmVsJyk7XG5cdFx0ZHJvcGRvd25QYW5lbC5zdHlsZS52aXNpYmlsaXR5ID0gJ2luaXRpYWwnO1xuXHRcdGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGRpZmZlcmVuY2UgPSB0aGlzLmFuY2hvckFic29sdXRlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCAtIHRoaXMuYW5jaG9yRml4ZWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuXHRcdHRoaXMuZHJvcGRvd25QYW5lbE9mZnNldFkgPSBkaWZmZXJlbmNlO1xuXG5cdFx0ZHJvcGRvd25QYW5lbC5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XG5cdFx0dGhpcy5zZXRQYW5lbE9mZnNldHMoKTtcblx0fTtcblxuXHRwcml2YXRlIHNldFdpZHRoQmFzZWRPbk9wdGlvbnNXaWR0aHMgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0aWYgKHRoaXMudHJ1bmNhdGVPcHRpb25zID09PSBmYWxzZSkge1xuXHRcdFx0YXdhaXQgYXdhaXRhYmxlRm9yTmV4dEN5Y2xlKCk7XG5cdFx0XHRpZiAoIWlzVmFsdWVTZXQodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zY3JvbGxhYmxlLWNvbnRlbnQnKSkpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zY3JvbGxhYmxlLWNvbnRlbnQnKS5jbGFzc0xpc3QuYWRkKCdjYWxjdWxhdGluZ1dpZHRocycpO1xuXHRcdFx0Y29uc3QgcGFkZGluZ0ZvclNjcm9sbGJhciA9IHRoaXMuZ2V0U2Nyb2xsYmFyV2lkdGgoKTtcblx0XHRcdGNvbnN0IG1heFdpZHRoID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zY3JvbGxhYmxlLWNvbnRlbnQnKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCArIHBhZGRpbmdGb3JTY3JvbGxiYXI7XG5cdFx0XHR0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNjcm9sbGFibGUtY29udGVudCcpLmNsYXNzTGlzdC5yZW1vdmUoJ2NhbGN1bGF0aW5nV2lkdGhzJyk7XG5cdFx0XHRjb25zdCBkcm9wZG93blBhbmVsID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ25nLWRyb3Bkb3duLXBhbmVsJyk7XG5cdFx0XHRpZiAoZHJvcGRvd25QYW5lbCkge1xuXHRcdFx0XHRkcm9wZG93blBhbmVsLnN0eWxlLm1pbldpZHRoID0gYCR7dGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRofXB4YDtcblx0XHRcdFx0ZHJvcGRvd25QYW5lbC5zdHlsZS53aWR0aCA9IGAke01hdGgubWF4KHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCwgbWF4V2lkdGgsIGRyb3Bkb3duUGFuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpfXB4YDtcblx0XHRcdFx0YXdhaXQgYXdhaXRhYmxlRm9yTmV4dEN5Y2xlKCk7XG5cdFx0XHRcdGNvbnN0IHBpY2tlcldpZHRoID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuXHRcdFx0XHRjb25zdCBkcm9wZG93blBhbmVsV2lkdGggPSBkcm9wZG93blBhbmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuXG5cdFx0XHRcdGNvbnN0IHNwYWNlTGVmdE9mRWxSZWYgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcblx0XHRcdFx0Y29uc3Qgc3BhY2VSaWdodE9mRWxSZWYgPSB3aW5kb3cuaW5uZXJXaWR0aCAtICh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggKyBzcGFjZUxlZnRPZkVsUmVmKTtcblx0XHRcdFx0Y29uc3QgZXh0cmFOZWVkZWRTcGFjZSA9IGRyb3Bkb3duUGFuZWxXaWR0aCAtIHBpY2tlcldpZHRoO1xuXHRcdFx0XHRpZiAodGhpcy5kcm9wZG93bkFsaWdubWVudCA9PT0gJ3JpZ2h0Jykge1xuXHRcdFx0XHRcdGlmIChleHRyYU5lZWRlZFNwYWNlID4gc3BhY2VMZWZ0T2ZFbFJlZikge1xuXHRcdFx0XHRcdFx0dGhpcy5kcm9wZG93blBhbmVsT2Zmc2V0WCA9IC1zcGFjZUxlZnRPZkVsUmVmICsgMTA7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRoaXMuZHJvcGRvd25QYW5lbE9mZnNldFggPSAtZXh0cmFOZWVkZWRTcGFjZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZiAoZXh0cmFOZWVkZWRTcGFjZSA+IHNwYWNlUmlnaHRPZkVsUmVmKSB7XG5cdFx0XHRcdFx0dGhpcy5kcm9wZG93blBhbmVsT2Zmc2V0WCA9IC1leHRyYU5lZWRlZFNwYWNlICsgc3BhY2VSaWdodE9mRWxSZWYgLSAyMDtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLnNldFBhbmVsT2Zmc2V0cygpO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblxuXHRwcml2YXRlIGdldEFsbExpbWl0aW5nQ29udGFpbmVycygpOiBBcnJheTxIVE1MRWxlbWVudD4ge1xuXHRcdGNvbnN0IHJlc3VsdCA9IFtdO1xuXHRcdGxldCBjdXJyZW50ID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50O1xuXHRcdHdoaWxlIChjdXJyZW50LnBhcmVudEVsZW1lbnQpIHtcblx0XHRcdGlmICh0aGlzLmlzTGltaXRpbmdDb250YWluZXIoY3VycmVudC5wYXJlbnRFbGVtZW50KSkge1xuXHRcdFx0XHRyZXN1bHQucHVzaChjdXJyZW50LnBhcmVudEVsZW1lbnQpO1xuXHRcdFx0fVxuXHRcdFx0Y3VycmVudCA9IGN1cnJlbnQucGFyZW50RWxlbWVudDtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdHByaXZhdGUgc2V0UGFuZWxPZmZzZXRzKCk6IHZvaWQge1xuXHRcdGNvbnN0IGRyb3Bkb3duUGFuZWwgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignbmctZHJvcGRvd24tcGFuZWwnKTtcblx0XHRpZiAoIWlzVmFsdWVTZXQoZHJvcGRvd25QYW5lbCkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3Qgc2Nyb2xsUG9zaXRpb25PZmZzZXQgPSBgdHJhbnNsYXRlKCR7dGhpcy5kcm9wZG93blBhbmVsT2Zmc2V0WH1weCwgJHt0aGlzLmRyb3Bkb3duUGFuZWxPZmZzZXRZfXB4KWA7XG5cdFx0Y29uc3QgZHJvcGRvd25Qb3NpdGlvbk9mZnNldCA9IHRoaXMuZHJvcGRvd25Qb3NpdGlvblRvVXNlID09PSAndG9wJyA/IGB0cmFuc2xhdGVZKC0xMDAlKSB0cmFuc2xhdGVZKDFweClgIDogJyc7XG5cdFx0aWYgKHRoaXMub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcpIHtcblx0XHRcdGRyb3Bkb3duUGFuZWwuc3R5bGUudHJhbnNmb3JtT3JpZ2luID0gJ3RvcCBsZWZ0Jztcblx0XHRcdGRyb3Bkb3duUGFuZWwuc3R5bGUudHJhbnNmb3JtID0gYHJvdGF0ZSg5MGRlZykgdHJhbnNsYXRlWSgtJHt0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGh9cHgpYDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZHJvcGRvd25QYW5lbC5zdHlsZS50cmFuc2Zvcm0gPSBbc2Nyb2xsUG9zaXRpb25PZmZzZXQsIGRyb3Bkb3duUG9zaXRpb25PZmZzZXRdLmpvaW4oJyAnKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGRldGVybWluZURyb3Bkb3duUG9zaXRpb24oKTogdm9pZCB7XG5cdFx0Y29uc3QgYm90dG9tU3BhY2UgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuXHRcdGlmIChib3R0b21TcGFjZSA+PSAzMzApIHtcblx0XHRcdHRoaXMuZHJvcGRvd25Qb3NpdGlvblRvVXNlID0gJ2JvdHRvbSc7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZHJvcGRvd25Qb3NpdGlvblRvVXNlID0gJ3RvcCc7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBpc0xpbWl0aW5nQ29udGFpbmVyKGVsZW1lbnQ6IEVsZW1lbnQpOiBib29sZWFuIHtcblx0XHRjb25zdCBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG5cdFx0aWYgKHN0eWxlLm92ZXJmbG93WSA9PT0gJ2F1dG8nKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0aWYgKHN0eWxlLm92ZXJmbG93ID09PSAnYXV0bycpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRpZiAoc3R5bGUub3ZlcmZsb3dZID09PSAnc2Nyb2xsJykge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGlmIChzdHlsZS5vdmVyZmxvdyA9PT0gJ3Njcm9sbCcpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRwdWJsaWMgZm9jdXMgPSAoKTogdm9pZCA9PiB7XG5cdFx0dGhpcy5uZ1NlbGVjdC5mb2N1cygpO1xuXHR9XG5cblx0cHVibGljIG9wZW4gPSAoKTogdm9pZCA9PiB7XG5cdFx0dGhpcy5uZ1NlbGVjdC5vcGVuKCk7XG5cdH1cblxuXHRwdWJsaWMgY2xvc2UgPSAoKTogdm9pZCA9PiB7XG5cdFx0dGhpcy5uZ1NlbGVjdC5jbG9zZSgpO1xuXHR9XG5cblx0cHVibGljIG9uQ2xvc2UoKTogdm9pZCB7XG5cdFx0Wy4uLnRoaXMuZ2V0QWxsTGltaXRpbmdDb250YWluZXJzKCksIHdpbmRvd10uZm9yRWFjaChlID0+IGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5zZXRGaXhlZERyb3Bkb3duUGFuZWxQb3NpdGlvbikpO1xuXHRcdC8vIEdpdmUgYW5ndWxhciBhIHNlY29uZCB0byByZW5kZXIgdGhlIGNsb3NlZCBzaXR1YXRpb24gYmVmb3JlIGVtaXR0aW5nIHRoZSBjbG9zZSBldmVudFxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0dGhpcy5pc09wZW4gPSBmYWxzZTtcblx0XHRcdGlmICghdGhpcy50cnVuY2F0ZU9wdGlvbnMpIHtcblx0XHRcdFx0dGhpcy5yZW1vdmVBbmNob3JzKCk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLm9uQ2xvc2VkLmVtaXQoKTtcblx0XHR9KTtcblx0fVxuXG5cdG9uRm9jdXMoKTogdm9pZCB7XG5cdFx0Y29uc3Qgc2luZ2xlVmFsdWVJbnB1dEVsZW1lbnQgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm5nLXNlbGVjdC1zaW5nbGUgLm5nLWlucHV0Jyk7XG5cdFx0Y29uc3QgcHJlZml4RWxlbWVudCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcubmctc2VsZWN0LXNpbmdsZSAucHJlZml4Jyk7XG5cdFx0aWYgKGlzVmFsdWVTZXQoc2luZ2xlVmFsdWVJbnB1dEVsZW1lbnQpICYmIGlzVmFsdWVTZXQocHJlZml4RWxlbWVudCkpIHtcblx0XHRcdGNvbnN0IHByZWZpeFdpZHRoID0gcHJlZml4RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcblx0XHRcdGNvbnN0IHNwYWNpbmcgPSAnMC40cmVtJztcblx0XHRcdHNpbmdsZVZhbHVlSW5wdXRFbGVtZW50LnN0eWxlLmxlZnQgPSBgY2FsYygke3ByZWZpeFdpZHRofXB4ICsgJHtzcGFjaW5nfSlgO1xuXHRcdH0gZWxzZSBpZiAoaXNWYWx1ZVNldChzaW5nbGVWYWx1ZUlucHV0RWxlbWVudCkpIHtcblx0XHRcdHNpbmdsZVZhbHVlSW5wdXRFbGVtZW50LnN0eWxlLmxlZnQgPSBgMHB4YDtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGdldFNjcm9sbGJhcldpZHRoKCk6IG51bWJlciB7XG5cdFx0Ly8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGRpdiBlbGVtZW50XG5cdFx0Y29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cblx0XHQvLyBTZXQgdGhlIHN0eWxlIHRvIG1lYXN1cmUgdGhlIHNjcm9sbGJhclxuXHRcdGRpdi5zdHlsZS5vdmVyZmxvdyA9ICdzY3JvbGwnOyAvLyBFbmFibGUgc2Nyb2xsYmFyXG5cdFx0ZGl2LnN0eWxlLndpZHRoID0gJzEwMHB4JzsgICAgICAvLyBTZXQgYSBmaXhlZCB3aWR0aFxuXHRcdGRpdi5zdHlsZS5oZWlnaHQgPSAnMTAwcHgnOyAgICAgLy8gU2V0IGEgZml4ZWQgaGVpZ2h0XG5cdFx0ZGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsgLy8gUHJldmVudCB0aGUgZWxlbWVudCBmcm9tIHRha2luZyBzcGFjZSBpbiB0aGUgbGF5b3V0XG5cdFx0ZGl2LnN0eWxlLnRvcCA9ICctOTk5OXB4JzsgICAgICAvLyBQb3NpdGlvbiBpdCBvdXQgb2YgdGhlIHZpZXdwb3J0XG5cblx0XHQvLyBBcHBlbmQgdGhlIGVsZW1lbnQgdG8gdGhlIGJvZHlcblx0XHRkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7XG5cblx0XHQvLyBHZXQgdGhlIHdpZHRoIG9mIHRoZSBzY3JvbGxiYXJcblx0XHRjb25zdCBzY3JvbGxiYXJXaWR0aCA9IGRpdi5vZmZzZXRXaWR0aCAtIGRpdi5jbGllbnRXaWR0aDtcblxuXHRcdC8vIFJlbW92ZSB0aGUgdGVtcG9yYXJ5IGVsZW1lbnQgZnJvbSB0aGUgRE9NXG5cdFx0ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpO1xuXG5cdFx0cmV0dXJuIHNjcm9sbGJhcldpZHRoO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cdFx0c3VwZXIubmdPbkRlc3Ryb3koKTtcblx0XHR0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmtleUxpc3RlbmVyKTtcblx0fVxufVxuIiwiPG5nLXNlbGVjdFxuXHQjbmdTZWxlY3Rcblx0W3BsYWNlaG9sZGVyXT1cImdldFRyYW5zbGF0aW9uKCdwbGFjZWhvbGRlcicpXCJcblx0YmluZExhYmVsPVwibmFtZVwiXG5cdGJpbmRWYWx1ZT1cImlkXCJcblx0W2l0ZW1zXT1cIm9wdGlvbnNcIlxuXHRbY2xlYXJhYmxlXT1cImNsZWFyYWJsZVwiXG5cdFsobmdNb2RlbCldPVwiaW5uZXJWYWx1ZVwiXG5cdFtuZ0NsYXNzXT1cIntzaG93RXJyb3JzOiBpc0luRXJyb3JTdGF0ZSgpLCB2ZXJ0aWNhbE9yaWVudGF0aW9uOiBvcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJywgdHJ1bmNhdGVPcHRpb25zOiB0cnVuY2F0ZU9wdGlvbnMsIG5vblRydW5jYXRlZE9wdGlvbnM6ICF0cnVuY2F0ZU9wdGlvbnMsIHdpdGhTZXBhcmF0aW5nTGluZTogd2l0aFNlcGFyYXRpbmdMaW5lLCBub0JvcmRlckxlZnQ6ICFoYXNCb3JkZXJMZWZ0LCBub0JvcmRlclJpZ2h0OiAhaGFzQm9yZGVyUmlnaHR9XCJcblx0KGNoYW5nZSk9XCJzZXRJbm5lclZhbHVlQW5kTm90aWZ5KGlubmVyVmFsdWUpXCJcblx0W211bHRpcGxlXT1cIm11bHRpcGxlXCJcblx0W2Rpc2FibGVkXT1cImRpc2FibGVkXCJcblx0KGJsdXIpPVwidG91Y2goKTsgb25CbHVyLmVtaXQoKVwiXG5cdChjbGVhcik9XCJvbkNsZWFyLmVtaXQoKVwiXG5cdChzZWFyY2gpPVwic2VhcmNoUXVlcnlDaGFuZ2VkKCRldmVudC50ZXJtKVwiXG5cdFtzZWFyY2hhYmxlXT1cInNlYXJjaGFibGVcIlxuXHRbZHJvcGRvd25Qb3NpdGlvbl09XCJkcm9wZG93blBvc2l0aW9uVG9Vc2VcIlxuXHRbc2VhcmNoRm5dPVwiY3VzdG9tU2VhcmNoRm5cIlxuXHRbc2VsZWN0T25UYWJdPVwidHJ1ZVwiXG5cdFt2aXJ0dWFsU2Nyb2xsXT1cInRydWVcIlxuXHQoc2Nyb2xsKT1cIm9uU2Nyb2xsKCRldmVudC5lbmQpXCJcblx0KG9wZW4pPVwib25PcGVuKClcIlxuXHQoY2xvc2UpPVwib25DbG9zZSgpXCJcblx0KGZvY3VzKT1cIm9uRm9jdXMoKVwiXG4+XG5cdDxuZy10ZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIiBuZy1vcHRpb24tdG1wPlxuXHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21PcHRpb25UcGxcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21PcHRpb25UcGxcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW06IGl0ZW19XCI+PC9uZy1jb250YWluZXI+XG5cdFx0PGRpdiBbYXR0ci5kYXRhLWN5XT1cIml0ZW0uaWRcIiAqbmdJZj1cIiFjdXN0b21PcHRpb25UcGxcIj5cblx0XHRcdHt7IGl0ZW0ubmFtZSB9fVxuXHRcdFx0PGRpdiAqbmdJZj1cIml0ZW0uZGVzY3JpcHRpb25cIiBjbGFzcz1cImRyb3Bkb3duLWl0ZW0tZGVzY3JpcHRpb25cIj5cblx0XHRcdFx0e3sgaXRlbS5kZXNjcmlwdGlvbiB9fVxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdDwvbmctdGVtcGxhdGU+XG5cdDxuZy1jb250YWluZXIgKm5nSWY9XCJtdWx0aXBsZSAmJiBtdWx0aXBsZURpc3BsYXllZEFzQW1vdW50ICYmIGlubmVyVmFsdWU/Lmxlbmd0aCA+IDFcIj5cblx0XHQ8bmctdGVtcGxhdGUgbmctbXVsdGktbGFiZWwtdG1wPlxuXHRcdFx0PGRpdiBjbGFzcz1cIm5nLXZhbHVlXCI+XG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwibmctdmFsdWUtbGFiZWxcIj57e2dldFRyYW5zbGF0aW9uKCdhbW91bnRTZWxlY3RlZCcsIGlubmVyVmFsdWU/Lmxlbmd0aCl9fTwvc3Bhbj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvbmctdGVtcGxhdGU+XG5cdDwvbmctY29udGFpbmVyPlxuXHQ8bmctdGVtcGxhdGUgbmctZm9vdGVyLXRtcCAqbmdJZj1cImZvb3RlckVsZW1lbnRcIj5cblx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvb3RlckVsZW1lbnRcIj48L25nLWNvbnRhaW5lcj5cblx0PC9uZy10ZW1wbGF0ZT5cbjwvbmctc2VsZWN0PlxuXG48ZGl2IGNsYXNzPVwidGFpbFwiICN0YWlsUmVmPlxuXHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdldFRhaWxUcGwoKVwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48IS0tIEkgbmVlZCB0aGlzIG1vY2sgdG8gcmVzZXJ2ZSB0aGUgc3BhY2UuIEkgY2FudCB1c2UgdGhlIG5vcm1hbCB0YWlsIGJlY2F1c2UgdGhhdCBvcGVucyB0aGUgZHJvcGRvd24gZnJvbSBuZy1zZWxlY3QgLS0+XG48IS0tIEkgaGF2ZSBubyBpZGVhIGhvdyB0byBhdm9pZCB0aGF0IC0tPlxuPGRpdiBjbGFzcz1cInRhaWxNb2NrXCIgI3RhaWxNb2NrUmVmPlxuXHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdldFRhaWxUcGwoKVwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1341,7 +1341,8 @@ class SelectComponent extends ValueAccessorBase {
|
|
|
1341
1341
|
return;
|
|
1342
1342
|
}
|
|
1343
1343
|
this.elRef.nativeElement.querySelector('.scrollable-content').classList.add('calculatingWidths');
|
|
1344
|
-
const
|
|
1344
|
+
const paddingForScrollbar = this.getScrollbarWidth();
|
|
1345
|
+
const maxWidth = this.elRef.nativeElement.querySelector('.scrollable-content').getBoundingClientRect().width + paddingForScrollbar;
|
|
1345
1346
|
this.elRef.nativeElement.querySelector('.scrollable-content').classList.remove('calculatingWidths');
|
|
1346
1347
|
const dropdownPanel = this.elRef.nativeElement.querySelector('ng-dropdown-panel');
|
|
1347
1348
|
if (dropdownPanel) {
|
|
@@ -1550,6 +1551,23 @@ class SelectComponent extends ValueAccessorBase {
|
|
|
1550
1551
|
singleValueInputElement.style.left = `0px`;
|
|
1551
1552
|
}
|
|
1552
1553
|
}
|
|
1554
|
+
getScrollbarWidth() {
|
|
1555
|
+
// Create a temporary div element
|
|
1556
|
+
const div = document.createElement('div');
|
|
1557
|
+
// Set the style to measure the scrollbar
|
|
1558
|
+
div.style.overflow = 'scroll'; // Enable scrollbar
|
|
1559
|
+
div.style.width = '100px'; // Set a fixed width
|
|
1560
|
+
div.style.height = '100px'; // Set a fixed height
|
|
1561
|
+
div.style.position = 'absolute'; // Prevent the element from taking space in the layout
|
|
1562
|
+
div.style.top = '-9999px'; // Position it out of the viewport
|
|
1563
|
+
// Append the element to the body
|
|
1564
|
+
document.body.appendChild(div);
|
|
1565
|
+
// Get the width of the scrollbar
|
|
1566
|
+
const scrollbarWidth = div.offsetWidth - div.clientWidth;
|
|
1567
|
+
// Remove the temporary element from the DOM
|
|
1568
|
+
document.body.removeChild(div);
|
|
1569
|
+
return scrollbarWidth;
|
|
1570
|
+
}
|
|
1553
1571
|
ngOnDestroy() {
|
|
1554
1572
|
super.ngOnDestroy();
|
|
1555
1573
|
this.elRef.nativeElement?.querySelector('input')?.removeEventListener('keydown', this.keyListener);
|