@arsedizioni/ars-utils 18.2.7 → 18.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/clipper.common/common/definitions.d.ts +3 -2
- package/clipper.ui/ui/browser-dialog/browser-dialog.component.d.ts +4 -0
- package/clipper.ui/ui/search-result-item/search-result-item.component.d.ts +2 -1
- package/clipper.ui/ui/search-result-manager/search-result-manager.d.ts +1 -0
- package/core/selectable.d.ts +1 -1
- package/esm2022/clipper.common/common/definitions.mjs +4 -4
- package/esm2022/clipper.ui/ui/browser-dialog/browser-dialog.component.mjs +13 -6
- package/esm2022/clipper.ui/ui/document/document.component.mjs +5 -5
- package/esm2022/clipper.ui/ui/document-manager/document-manager.mjs +4 -4
- package/esm2022/clipper.ui/ui/references/references.component.mjs +3 -3
- package/esm2022/clipper.ui/ui/search-facets/search-facets.component.mjs +3 -3
- package/esm2022/clipper.ui/ui/search-result-item/search-result-item.component.mjs +5 -3
- package/esm2022/clipper.ui/ui/search-result-manager/search-result-manager.mjs +10 -4
- package/esm2022/core/selectable.mjs +3 -2
- package/esm2022/help/components/help-viewer/help-viewer.component.mjs +3 -3
- package/esm2022/support.ui/ui/notifications-browser/notification/notification.component.mjs +3 -3
- package/esm2022/support.ui/ui/notifications-browser/notifications-browser.component.mjs +3 -3
- package/esm2022/ui/ui/dialogs/busy/busy-dialog.component.mjs +3 -3
- package/esm2022/ui/ui/dialogs/confirm/confirm-dialog.component.mjs +3 -3
- package/esm2022/ui/ui/dialogs/credentials/credentials-dialog.component.mjs +3 -3
- package/esm2022/ui/ui/dialogs/info/info-dialog.component.mjs +3 -3
- package/esm2022/ui/ui/dialogs/recover-password/recover-password-dialog.component.mjs +3 -3
- package/esm2022/ui/ui/dialogs/reset-password/reset-password-dialog.component.mjs +3 -3
- package/esm2022/ui.application/ui/components/filter-bar/filter-bar.component.mjs +3 -3
- package/esm2022/ui.application/ui/dialogs/prompt/prompt-dialog.component.mjs +3 -3
- package/esm2022/ui.application/ui/dialogs/prompt-date/prompt-date-dialog.component.mjs +3 -3
- package/esm2022/ui.application/ui/dialogs/prompt-time/prompt-time-dialog.component.mjs +3 -3
- package/esm2022/ui.application/ui/dialogs/select/select-dialog.component.mjs +3 -3
- package/esm2022/ui.application/ui/dialogs/select-file/select-file-dialog.component.mjs +3 -3
- package/esm2022/ui.application/ui/dialogs/select-picture/select-picture-dialog.component.mjs +3 -3
- package/esm2022/ui.application/ui/dialogs/select-tree/select-tree-dialog.component.mjs +3 -3
- package/esm2022/ui.application/ui/dialogs/send-to/send-to-dialog.component.mjs +3 -3
- package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs +3 -3
- package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +35 -21
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-core.mjs +2 -1
- package/fesm2022/arsedizioni-ars-utils-core.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-help.mjs +2 -2
- package/fesm2022/arsedizioni-ars-utils-help.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-support.ui.mjs +4 -4
- package/fesm2022/arsedizioni-ars-utils-support.ui.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-ui.application.mjs +18 -18
- package/fesm2022/arsedizioni-ars-utils-ui.application.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-ui.mjs +12 -12
- package/fesm2022/arsedizioni-ars-utils-ui.mjs.map +1 -1
- package/package.json +7 -7
- package/styles/ui.colors.scss +0 -1
- package/styles/ui.scss +2 -0
|
@@ -250,7 +250,7 @@ export class ClipperDocumentManager {
|
|
|
250
250
|
report(item) {
|
|
251
251
|
if (!item)
|
|
252
252
|
return;
|
|
253
|
-
if (item.model != ClipperModel.NormativaVigente && item.model != ClipperModel.
|
|
253
|
+
if (item.model != ClipperModel.NormativaVigente && item.model != ClipperModel.Scadenze) {
|
|
254
254
|
this.dialogService.info("Questa funzionalità non è disponibile per questo tipo di documento.");
|
|
255
255
|
return;
|
|
256
256
|
}
|
|
@@ -353,7 +353,7 @@ export class ClipperDocumentManager {
|
|
|
353
353
|
isModelSupportedByRS(model) {
|
|
354
354
|
return model === ClipperModel.AggiornamentoNormativo ||
|
|
355
355
|
model === ClipperModel.NormativaVigente ||
|
|
356
|
-
model === ClipperModel.
|
|
356
|
+
model === ClipperModel.Scadenze;
|
|
357
357
|
}
|
|
358
358
|
/**
|
|
359
359
|
* Checks if all documents are supported by RS
|
|
@@ -381,7 +381,7 @@ export class ClipperDocumentManager {
|
|
|
381
381
|
documents.forEach(n => {
|
|
382
382
|
allow = n && (n.model === ClipperModel.NormativaVigente ||
|
|
383
383
|
n.model === ClipperModel.AggiornamentoNormativo ||
|
|
384
|
-
n.model === ClipperModel.
|
|
384
|
+
n.model === ClipperModel.Scadenze);
|
|
385
385
|
if (!allow)
|
|
386
386
|
return;
|
|
387
387
|
});
|
|
@@ -428,4 +428,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
|
|
|
428
428
|
standalone: true,
|
|
429
429
|
}]
|
|
430
430
|
}] });
|
|
431
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy9jbGlwcGVyLnVpL3VpL2RvY3VtZW50LW1hbmFnZXIvZG9jdW1lbnQtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUF1QixlQUFlLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSwwQkFBMEIsRUFBdUIsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0wsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hHLE9BQU8sTUFBTSxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFPaEYsTUFBTSxPQUFPLHNCQUFzQjtJQUpuQztRQU1jLGNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakMsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUMsa0JBQWEsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztLQTBaOUQ7SUF0Wkc7OztHQUdEO0lBQ0MsU0FBUyxDQUFDLElBQXlCO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQzFDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUNsQixJQUFJLENBQUMsYUFBYTthQUNi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LE9BQU87UUFDNUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsdUJBQXVCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDekYsQ0FBQzs4R0E1WlEsc0JBQXNCO2tHQUF0QixzQkFBc0Isd0VBSHJCLGFBQWE7OzJGQUdkLHNCQUFzQjtrQkFKbEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2xpcGJvYXJkIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NsaXBib2FyZCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudEluZm8sIENsaXBwZXJNZXNzYWdlcywgQ2xpcHBlck1vZGVsLCBDbGlwcGVyTW9kdWxlLCBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZSwgQ2xpcHBlclNlYXJjaFBhcmFtcywgQ2xpcHBlclNlcnZpY2UgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NsaXBwZXIuY29tbW9uJztcclxuaW1wb3J0IHsgQnJvYWRjYXN0U2VydmljZSwgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBBcHBsaWNhdGlvbkRpYWxvZ1NlcnZpY2UsIFNlbmRUb0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvdWkuYXBwbGljYXRpb24nO1xyXG5pbXBvcnQgc2F2ZUFzIGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5pbXBvcnQgeyBDbGlwcGVyUmVmZXJlbmNlc0NvbXBvbmVudCB9IGZyb20gJy4uL3JlZmVyZW5jZXMvcmVmZXJlbmNlcy5jb21wb25lbnQnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgdGVtcGxhdGU6ICc8ZGl2PjwvZGl2PicsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2xpcHBlckRvY3VtZW50TWFuYWdlciB7XHJcblxyXG4gICAgcHJvdGVjdGVkIGNsaXBib2FyZCA9IGluamVjdChDbGlwYm9hcmQpO1xyXG4gICAgcHVibGljIGNsaXBwZXJTZXJ2aWNlID0gaW5qZWN0KENsaXBwZXJTZXJ2aWNlKTtcclxuICAgIHByb3RlY3RlZCBicm9hZGNhc3RTZXJ2aWNlID0gaW5qZWN0KEJyb2FkY2FzdFNlcnZpY2UpO1xyXG4gICAgcHJvdGVjdGVkIGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoQXBwbGljYXRpb25EaWFsb2dTZXJ2aWNlKTtcclxuXHJcblxyXG5cclxuICAgIC8qKlxyXG4gKiBFeHBvcnQgYSBkb2N1bWVudCBpbiBwZGYgZm9ybWF0XHJcbiAqIEBwYXJhbSBpdGVtIDogdGhlIGRvY3VtZW50IHRvIGV4cG9ydFxyXG4gKi9cclxuICAgIGV4cG9ydFBkZihpdGVtOiBDbGlwcGVyRG9jdW1lbnRJbmZvKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNsaXBwZXJTZXJ2aWNlLmxvZ2dlZEluKSByZXR1cm47XHJcbiAgICAgICAgaWYgKCFpdGVtKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5jb25maXJtKFwiQ29uZmVybWkgbCdlc3BvcnRhemlvbmU/XCIsICdBdHRlbnppb25lIScpXHJcbiAgICAgICAgICAgIC5jb21wb25lbnRJbnN0YW5jZS5jaG9vc2VuLnN1YnNjcmliZSgocjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoci5yZXN1bHQgPT09ICdvaycpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpZCA9IGl0ZW0uaWQgfHwgaXRlbS5kb2N1bWVudElkO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5idXN5KCdFc3BvcnRhemlvbmUgaW4gY29yc28uLi4nKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLmV4cG9ydFBkZihpZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiAocjI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVBcyhyMiwgKGl0ZW0udGl0bGUxID8gaXRlbS50aXRsZTEgOiBpZCkgKyAnLnBkZicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsZWFyQnVzeSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTYXZlIGN1cnJlbnQgZG9jdW1lbnQgbGlzdCBvciBqdXN0IHRoZSBzZWxlY3RlZCBkb2N1bWVudHMgYXMgYSBjc3ZcclxuICAgICAqIEBwYXJhbSBpdGVtczogdGhlIGl0ZW0gbGlzdFxyXG4gICAgICogQHBhcmFtIHNlYXJjaFBhcmFtczogdGhlIHNlYXJjaCBwYXJhbXNcclxuICAgICAqL1xyXG4gICAgZXhwb3J0SXRlbXMoaXRlbXM6IENsaXBwZXJEb2N1bWVudEluZm9bXSwgc2VhcmNoUGFyYW1zOiBDbGlwcGVyU2VhcmNoUGFyYW1zIHwgbnVsbCA9IG51bGwpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY2xpcHBlclNlcnZpY2UubG9nZ2VkSW4pIHJldHVybjtcclxuICAgICAgICBjb25zdCBpZHMgPSBpdGVtcz8ubWFwKG4gPT4gbi5kb2N1bWVudElkID8/IG4uaWQpID8/IFtdO1xyXG4gICAgICAgIGxldCBtb2RlbDogYW55ID0geyBpZHM6IGlkcywgcXVlcnk6IG51bGwsIGZvcm1hdDogMSB9O1xyXG4gICAgICAgIGlmIChtb2RlbC5pZHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIG1vZGVsLnF1ZXJ5ID0gc2VhcmNoUGFyYW1zO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYnVzeSgnU2FsdmF0YWdnaW8gaW4gY29yc28uLi4nKTtcclxuICAgICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLmV4cG9ydChtb2RlbClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiAocikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNhdmVBcyhyLCAnZWxlbmNvLmNzdicpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsZWFyQnVzeSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFyY2hpdmUgYSBsaXN0IG9mIGl0ZW1zXHJcbiAgICAgKiBAcGFyYW0gaXRlbXM6IHRoZSBpdGVtIGxpc3RcclxuICAgICAqL1xyXG4gICAgYWRkVG9BcmNoaXZlKGl0ZW1zOiBDbGlwcGVyRG9jdW1lbnRJbmZvW10pIHtcclxuICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoQ2xpcHBlck1lc3NhZ2VzLkNPTU1BTkRfQVJDSElWRV9BREQsIGl0ZW1zKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZSBhIG5ldyBkZWFkbGluZVxyXG4gICAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBhZGRcclxuICAgICAqL1xyXG4gICAgYWRkVG9DYWxlbmRhcihpdGVtOiBDbGlwcGVyRG9jdW1lbnRJbmZvKSB7XHJcbiAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnNlbmRNZXNzYWdlKENsaXBwZXJNZXNzYWdlcy5DT01NQU5EX0NBTEVOREFSX0FERCwgaXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAqIEFkZCBhIGxpc3Qgb2YgaXRlbXMgdG8gd29ya2luZyBkb2N1bWVudHNcclxuICogQHBhcmFtIGl0ZW1zIDogdGhlIGl0ZW0gbGlzdFxyXG4gKi9cclxuICAgIGFkZEl0ZW1zVG9Xb3JraW5nRG9jdW1lbnRzKGl0ZW1zOiBDbGlwcGVyRG9jdW1lbnRJbmZvW10pIHtcclxuICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoQ2xpcHBlck1lc3NhZ2VzLkNPTU1BTkRfV09SS0lOR19BREQsIGl0ZW1zKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuKiBBZGQgYSBsaXN0IG9mIGl0ZW1zIHRvIHdvcmtpbmcgZG9jdW1lbnRzXHJcbiogQHBhcmFtIGl0ZW1zIDogdGhlIGl0ZW0gbGlzdFxyXG4qL1xyXG4gICAgYWRkSXRlbXNUb0JhZyhpdGVtczogQ2xpcHBlckRvY3VtZW50SW5mb1tdKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNsaXBwZXJTZXJ2aWNlLmxvZ2dlZEluKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgaWRzID0gaXRlbXM/Lm1hcChuID0+IG4uZG9jdW1lbnRJZCA/PyBuLmlkKSA/PyBbXTtcclxuICAgICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLmFkZFRvQmFnKGlkcykuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKHI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnRvYXN0KCdPcGVyYXppb25lIGNvbXBsZXRhdGEgY29uIHN1Y2Nlc3NvLicpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3B5IG1ldGFkYXRhIHRvIGNsaXBib2FyZFxyXG4gICAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBjb3B5XHJcbiAgICAgKi9cclxuICAgIGNvcHlNZXRhZGF0YVRvQ2xpcGJvYXJkKGl0ZW06IENsaXBwZXJEb2N1bWVudEluZm8pIHtcclxuICAgICAgICBpZiAoIWl0ZW0gfHwgaXRlbS5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLkNvb3JkaW5hbWVudG8pIHJldHVybjtcclxuICAgICAgICBsZXQgbWV0YSA9XHJcbiAgICAgICAgICAgIChpdGVtLmlkID8/IGl0ZW0uZG9jdW1lbnRJZCkgKyAnXFx0JyArXHJcbiAgICAgICAgICAgIGl0ZW0udGl0bGUxPy5yZXBsYWNlQWxsKFwiXFxyXFxuXCIsIFwiIFwiKSArICdcXHQnO1xyXG4gICAgICAgIGlmIChpdGVtLnRpdGxlMilcclxuICAgICAgICAgICAgbWV0YSArPSBpdGVtLnRpdGxlMi5yZXBsYWNlQWxsKFwiXFxyXFxuXCIsIFwiIFwiKTtcclxuICAgICAgICBtZXRhICs9ICdcXHQnO1xyXG4gICAgICAgIGlmIChpdGVtLm51bWJlcilcclxuICAgICAgICAgICAgbWV0YSArPSBpdGVtLm51bWJlcjtcclxuICAgICAgICBtZXRhICs9ICdcXHQnO1xyXG4gICAgICAgIGlmIChpdGVtLnB1Ymxpc2hpbmdEYXRlKSB7XHJcbiAgICAgICAgICAgIGl0ZW0ucHVibGlzaGluZ0RhdGUgPSBuZXcgRGF0ZShpdGVtLnB1Ymxpc2hpbmdEYXRlKTtcclxuICAgICAgICAgICAgbWV0YSArPSBTeXN0ZW1VdGlscy5mb3JtYXREYXRlKGl0ZW0ucHVibGlzaGluZ0RhdGUpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5kYXRlKSB7XHJcbiAgICAgICAgICAgIGl0ZW0uZGF0ZSA9IG5ldyBEYXRlKGl0ZW0uZGF0ZSk7XHJcbiAgICAgICAgICAgIG1ldGEgKz0gU3lzdGVtVXRpbHMuZm9ybWF0RGF0ZShpdGVtLmRhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBtZXRhICs9ICdcXHQnO1xyXG4gICAgICAgIGlmIChpdGVtLm9yaWdpbkRlc2NyaXB0aW9uKVxyXG4gICAgICAgICAgICBtZXRhICs9IGl0ZW0ub3JpZ2luRGVzY3JpcHRpb25cclxuICAgICAgICB0aGlzLmNsaXBib2FyZC5jb3B5KG1ldGEpO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS50b2FzdChcIk1ldGFkYXRpIGNvcGlhdGkgbmVnbGkgYXBwdW50aS5cIik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93IGEgZG9jdW1lbnQgcGVybWFsaW5rXHJcbiAgICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIHNob3cgdGhlIGxpbmsgZm9yXHJcbiAgICAgKi9cclxuICAgIHNob3dMaW5rKGl0ZW06IGFueSkge1xyXG4gICAgICAgIGlmICghaXRlbSkgcmV0dXJuO1xyXG4gICAgICAgIGxldCBpZCA9IGl0ZW0uaWQgPyBpdGVtLmlkIDogaXRlbS5kb2N1bWVudElkO1xyXG4gICAgICAgIGxldCBjaGFubmVscyA9IGl0ZW0uY2hhbm5lbE5hbWVcclxuICAgICAgICAgICAgPyAnQ2FuYWxpOiAnICsgaXRlbS5jaGFubmVsTmFtZSArICc8YnI+J1xyXG4gICAgICAgICAgICA6ICcnO1xyXG4gICAgICAgIGxldCBvcmlnaW4gPSBpdGVtLm9yaWdpblxyXG4gICAgICAgICAgICA/ICdPcmlnaW5lOiAnICtcclxuICAgICAgICAgICAgaXRlbS5vcmlnaW4gK1xyXG4gICAgICAgICAgICAnIC0gJyArXHJcbiAgICAgICAgICAgIChpdGVtLm9yaWdpbkRlc2NyaXB0aW9uID8gaXRlbS5vcmlnaW5EZXNjcmlwdGlvbiA6ICcnKSArXHJcbiAgICAgICAgICAgICc8YnI+J1xyXG4gICAgICAgICAgICA6ICcnO1xyXG4gICAgICAgIGxldCB0b3BpY3MgPSBpdGVtLnRvcGljcyA/ICdBcmdvbWVudG86ICcgKyBpdGVtLnRvcGljcyArICc8YnI+JyA6ICcnO1xyXG4gICAgICAgIGlmICghaWQpIHJldHVybjtcclxuICAgICAgICBsZXQgbWVzc2FnZSA9XHJcbiAgICAgICAgICAgIFwiPHAgPklsIGxpbmsgY2hlIHRyb3ZpIHF1aSBzb3R0byDDqCB1biByaWZlcmltZW50byBkaXJldHRvIGFsIGRvY3VtZW50byBzZWxlemlvbmF0by48L3A+XCIgK1xyXG4gICAgICAgICAgICBcIjxwID5MbyBwdW9pIHV0aWxpenphcmUgbmVsbGEgdHVhIGRvY3VtZW50YXppb25lIG8gaW52aWFybG8gcGVyIGVtYWlsIGFkIHVuIHR1byBjb2xsZWdhLiBMYSBwZXJzb25hIGNoZSBkZXNpZGVyZXLDoCB2aXN1YWxpenphcmUgaWwgZG9jdW1lbnRvIGRvdnLDoCBuZWNlc3NhcmlhbWVudGUgZXNzZXJlIHVuIHV0ZW50ZSBhYmJvbmF0by48L3A+XCIgK1xyXG4gICAgICAgICAgICBcIjxwID5TZWxlemlvbmEgZSBjb3BpYSAoZmFpIENUUkwrQykgaWwgbGluayBxdWkgc290dG8uPC9wPlwiICtcclxuICAgICAgICAgICAgXCI8ZGl2IGNsYXNzPSdzbWFsbCBhY2NlbnQnPlwiICtcclxuICAgICAgICAgICAgJ2h0dHBzOi8vY2xpcHBlci5hcnNlZGl6aW9uaS5pdC8/aWQ9JyArXHJcbiAgICAgICAgICAgIGlkICtcclxuICAgICAgICAgICAgJzwvZGl2PicgK1xyXG4gICAgICAgICAgICAnPGJyPicgK1xyXG4gICAgICAgICAgICAnPGhyPicgK1xyXG4gICAgICAgICAgICAnPHAgY2xhc3M9XCJzbWFsbFwiPicgK1xyXG4gICAgICAgICAgICBjaGFubmVscyArXHJcbiAgICAgICAgICAgIG9yaWdpbiArXHJcbiAgICAgICAgICAgIHRvcGljc1xyXG4gICAgICAgICc8L3A+JztcclxuXHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmluZm8obWVzc2FnZSwgJ0NvcGlhIGxpbmsnLCAnQ2hpdWRpJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZW5kIGRvY3VtZW50cyBsaW5rcyBieSBlbWFpbFxyXG4gICAgICogQHBhcmFtIGl0ZW1zIDogdGhlIGRvY3VtZW50IGxpc3RcclxuICAgICAqL1xyXG4gICAgc2VuZEl0ZW1zVG8oaXRlbXM6IENsaXBwZXJEb2N1bWVudEluZm9bXSkge1xyXG4gICAgICAgIGlmICghdGhpcy5jbGlwcGVyU2VydmljZS5sb2dnZWRJbikgcmV0dXJuO1xyXG4gICAgICAgIGlmICghaXRlbXMgfHwgaXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgZCA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKFNlbmRUb0RpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICBhcmlhTGFiZWw6ICdpbnZpYSBkb2N1bWVudGkgcGVyIGVtYWlsJyxcclxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcclxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcclxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcclxuICAgICAgICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBpbmZvOlxyXG4gICAgICAgICAgICAgICAgICAgICdQdW9pIGludmlhcmUgaSBkb2N1bWVudGkgYSBjaGkgdnVvaSBtYSwgcGVyIHBvdGVybGkgdmlzdWFsaXp6YXJlLCDDqCBuZWNlc3NhcmlvIGVzc2VyZSB1biB1dGVudGUgYWJib25hdG8uJyxcclxuICAgICAgICAgICAgICAgIGNvdW50OiBpdGVtcy5sZW5ndGgsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG1pbldpZHRoOiAnMzc1cHgnLFxyXG4gICAgICAgICAgICBtYXhXaWR0aDogJzYwMHB4JyxcclxuICAgICAgICAgICAgd2lkdGg6ICc5OSUnLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGQuY29tcG9uZW50SW5zdGFuY2UuZG9uZVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHIuaWRzID0gaXRlbXM/Lm1hcChuID0+IG4uZG9jdW1lbnRJZCA/PyBuLmlkKSA/PyBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5idXN5KCdJbnZpbyBpbiBjb3Jzby4uLicpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbGlwcGVyU2VydmljZS5zZW5kVG8ocilcclxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogKHIyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcjIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihyMi5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnRvYXN0KCdJbnZpbyBjb21wbGV0YXRvIGNvbiBzdWNjZXNzby4nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY2xlYXJCdXN5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEaXNwbGF5IGEgZG9jdW1lbnQgcmVwb3J0XHJcbiAgICAgKiBAcGFyYW0gZG9jdW1lbnRJZCA6IHRoZSBkb2N1bWVudCBpZFxyXG4gICAgICogQHBhcmFtIHRpdGxlOiB0aGUgZG9jdW1lbnQgc2hvcnQgdGl0bGVcclxuICAgICAqL1xyXG4gICAgb3BlblJlcG9ydChkb2N1bWVudElkOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jbGlwcGVyU2VydmljZS5sb2dnZWRJbikgcmV0dXJuO1xyXG4gICAgICAgIGlmICghZG9jdW1lbnRJZCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2UucmVwb3J0KGRvY3VtZW50SWQpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzYXZlQXMociwgKHRpdGxlID8gdGl0bGUgOiBkb2N1bWVudElkKSArICcuaHRtbCcpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsZWFyQnVzeSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuKiBPcGVuIGFuIGl0ZW1cclxuKiBUaGlzIHNob3VsZCBiZSBhbHdheXMgb3ZlcnJpZGRlblxyXG4qIEBwYXJhbSBkb2N1bWVudElkIDogdGhlIGRvY3VtZW50IGlkXHJcbiogQHBhcmFtIG5ld1dpbmRvdzogdHJ1ZSBpZiB0aGUgZG9jdW1lbnQgbXVzdCBiZSBvcGVuIGludG8gYSBuZXcgd2luZG93XHJcbiovXHJcbiAgICBvcGVuKGRvY3VtZW50SWQ6IHN0cmluZywgbmV3V2luZG93OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhkb2N1bWVudElkICsgJyA+ICcgKyBuZXdXaW5kb3cgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERpc3BsYXkgYSBkb2N1bWVudCByZXBvcnRcclxuICAgICAqIEBwYXJhbSBpdGVtIDogdGhlIGRvY3VtZW50XHJcbiAgICAgKi9cclxuICAgIHJlcG9ydChpdGVtOiBDbGlwcGVyRG9jdW1lbnRJbmZvKSB7XHJcbiAgICAgICAgaWYgKCFpdGVtKSByZXR1cm47XHJcbiAgICAgICAgaWYgKGl0ZW0ubW9kZWwgIT0gQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGUgJiYgaXRlbS5tb2RlbCAhPSBDbGlwcGVyTW9kZWwuU2NhZGVuemEpIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmluZm8oXCJRdWVzdGEgZnVuemlvbmFsaXTDoCBub24gw6ggZGlzcG9uaWJpbGUgcGVyIHF1ZXN0byB0aXBvIGRpIGRvY3VtZW50by5cIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5SZXBvcnQoaXRlbS5kb2N1bWVudElkLCBpdGVtLnRpdGxlMSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQnJvd3NlIGRvY3VtZW50IHJlZmVyZW5jZXNcclxuICAgICAqIEBwYXJhbSBpdGVtIDogdGhlIGRvY3VtZW50IGl0ZW1cclxuICAgICAqIEBwYXJhbSBtb2RlIDogdGhlIHNuYXBzaG90IG1vZGVcclxuICAgICAqL1xyXG4gICAgcmVmZXJlbmNlcyhpdGVtOiBDbGlwcGVyRG9jdW1lbnRJbmZvLCBtb2RlOiBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZSA9IENsaXBwZXJRdWVyeVJlZmVyZW5jZXNNb2RlLlJlZmVyZW5jZXNJbikge1xyXG4gICAgICAgIGlmICghaXRlbSkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGQgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihDbGlwcGVyUmVmZXJlbmNlc0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICBhcmlhTGFiZWw6ICdyaWZlcmltZW50aSBsZWdhdGkgYWwgZG9jdW1lbnRvJyxcclxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcclxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcclxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcclxuICAgICAgICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxyXG4gICAgICAgICAgICBkYXRhOiB7IGlkOiBpdGVtLmRvY3VtZW50SWQsIG1vZGU6IG1vZGUgfSxcclxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ3JlZmVyZW5jZXMtY29udGFpbmVyJyxcclxuICAgICAgICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgICAgICAgIG1heFdpZHRoOiAnMTAwMHB4JyxcclxuICAgICAgICAgICAgd2lkdGg6ICc5OSUnLFxyXG4gICAgICAgICAgICBoZWlnaHQ6ICc5OSUnLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGQuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyICYmIHIuaWQpIHRoaXMub3BlbihyLmlkKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNYW5hZ2UgY2xpcHBlciBiYWdcclxuICAgICAqL1xyXG4gICAgbWFuYWdlQmFnKCkge1xyXG4gICAgICAgIGxldCBpdGVtczogYW55ID0gW107XHJcbiAgICAgICAgdGhpcy5jbGlwcGVyU2VydmljZS5iYWcuZm9yRWFjaChuID0+IHtcclxuICAgICAgICAgICAgbGV0IHRpdGxlID0gbi50aXRsZTEgPz8gbi50aXRsZTI7XHJcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGU6IHRpdGxlLFxyXG4gICAgICAgICAgICAgICAgYmFnOiBuLFxyXG4gICAgICAgICAgICAgICAgc2VhcmNoQmFnOiB7IG5hbWU6IHRpdGxlIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IGQgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2VsZWN0KHtcclxuICAgICAgICAgICAgdGl0bGU6ICdHZXN0aXNjaSBkb2N1bWVudGkgZGkgbGF2b3JvJyxcclxuICAgICAgICAgICAgbXVsdGk6IGZhbHNlLFxyXG4gICAgICAgICAgICBtdXN0U2VsZWN0OiBmYWxzZSxcclxuICAgICAgICAgICAgb2tDYXB0aW9uOiAnU0VMRVpJT05BJyxcclxuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zLFxyXG4gICAgICAgICAgICBjYW5EZWxldGU6IHRydWUsXHJcbiAgICAgICAgICAgIGNhblZpZXc6IHRydWUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZC5jb21wb25lbnRJbnN0YW5jZS52aWV3XHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW0gPSByLmJhZztcclxuICAgICAgICAgICAgICAgIHRoaXMub3BlbihpdGVtLmRvY3VtZW50SWQgfHwgaXRlbS5Eb2N1bWVudElkKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgZC5jb21wb25lbnRJbnN0YW5jZS5kZWxldGVcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHIuc2VsZWN0ZWRJdGVtc1swXS5iYWc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLnJlbW92ZUZyb21CYWcoaXRlbS5kb2N1bWVudElkIHx8IGl0ZW0uRG9jdW1lbnRJZCkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0OiAocjI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXIyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihyMi5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS50b2FzdCgnT3BlcmF6aW9uZSBjb21wbGV0YXRhIGNvbiBzdWNjZXNzby4nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHAgPSAwOyBwIDwgci5pdGVtcy5sZW5ndGg7IHArKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLml0ZW1zW3BdLmJhZy5Eb2N1bWVudElkID09PSBpdGVtLkRvY3VtZW50SWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5pdGVtcy5zcGxpY2UocCwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLml0ZW1zLmxlbmd0aCA9PT0gMCkgZC5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICogQ2hlY2tzIGlmIGEgbW9kdWxlIGlzIHN1cHBvcnRlZCBieSBSU1xyXG4gKiBAcGFyYW0gbW9kdWxlIDogdGhlIG1vZHVsZSB0byBjaGVja1xyXG4gKiBAcmV0dXJuczogdHJ1ZSBpZiB0aGUgbW9kdWxlIGlzIHN1cHBvcnRlZFxyXG4gKi9cclxuICAgIGlzTW9kdWxlU3VwcG9ydGVkQnlSUyhtb2R1bGU6IENsaXBwZXJNb2R1bGUpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gbW9kdWxlID09PSBDbGlwcGVyTW9kdWxlLkdhenpldHRlQm9sbGV0dGluaUVGb250aURpdmVyc2UgfHxcclxuICAgICAgICAgICAgbW9kdWxlID09PSBDbGlwcGVyTW9kdWxlLk5vcm1hdGl2YVZpZ2VudGUgfHxcclxuICAgICAgICAgICAgbW9kdWxlID09PSBDbGlwcGVyTW9kdWxlLlNjYWRlbnplRVNlZ25hbGF6aW9uaTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyBpZiBhIG1vZGVsIGlzIHN1cHBvcnRlZCBieSBSU1xyXG4gICAgICogQHBhcmFtIG1vZGVsIDogdGhlIG1vZGVsIHRvIGNoZWNrXHJcbiAgICAgKiBAcmV0dXJuczogdHJ1ZSBpZiB0aGUgbW9kZWwgaXMgc3VwcG9ydGVkXHJcbiAgICAgKi9cclxuICAgIGlzTW9kZWxTdXBwb3J0ZWRCeVJTKG1vZGVsOiBDbGlwcGVyTW9kZWwpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gbW9kZWwgPT09IENsaXBwZXJNb2RlbC5BZ2dpb3JuYW1lbnRvTm9ybWF0aXZvIHx8XHJcbiAgICAgICAgICAgIG1vZGVsID09PSBDbGlwcGVyTW9kZWwuTm9ybWF0aXZhVmlnZW50ZSB8fFxyXG4gICAgICAgICAgICBtb2RlbCA9PT0gQ2xpcHBlck1vZGVsLlNjYWRlbnphO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgKiBDaGVja3MgaWYgYWxsIGRvY3VtZW50cyBhcmUgc3VwcG9ydGVkIGJ5IFJTXHJcbiAgICogQHBhcmFtIGl0ZW1zIDogdGhlIGxpc3Qgb2YgZG9jdW1lbnNcclxuICAgKiBAcmV0dXJuczogdHJ1ZSBpZiBhbGwgZG9jdW1lbnRzIHN1cHBvcnRzIFJTXHJcbiAgICovXHJcbiAgICBjYW5TdXBwb3J0UlMoaXRlbXM6IFtdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IGFsbG93ID0gZmFsc2U7XHJcbiAgICAgICAgaXRlbXMuZm9yRWFjaCgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGFsbG93ID0gdGhpcy5pc01vZGVsU3VwcG9ydGVkQnlSUyhuLm1vZGVsKTtcclxuICAgICAgICAgICAgaWYgKCFhbGxvdykgcmV0dXJuO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBhbGxvdztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyBpZiBSUyBpcyBlbmFibGVkIGZvciBhbGwgZ2l2ZW4gZG9jdW1lbnRzXHJcbiAgICAgKiBAcGFyYW0gZG9jdW1lbnRzIDogdGhlIGRvY3VtZW50cyB0byBjaGVja1xyXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiBhbGxhIGRvY3VtZW50cyBhciBSUyBlbmFibGVkXHJcbiAgICAgKi9cclxuICAgIFJTX2VuYWJsZWQoZG9jdW1lbnRzOiBDbGlwcGVyRG9jdW1lbnRJbmZvW10pOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIWRvY3VtZW50cyB8fCBkb2N1bWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgbGV0IGFsbG93ID0gZmFsc2U7XHJcbiAgICAgICAgZG9jdW1lbnRzLmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgICAgIGFsbG93ID0gbiAmJiAobi5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGUgfHxcclxuICAgICAgICAgICAgICAgIG4ubW9kZWwgPT09IENsaXBwZXJNb2RlbC5BZ2dpb3JuYW1lbnRvTm9ybWF0aXZvIHx8XHJcbiAgICAgICAgICAgICAgICBuLm1vZGVsID09PSBDbGlwcGVyTW9kZWwuU2NhZGVuemEpO1xyXG4gICAgICAgICAgICBpZiAoIWFsbG93KSByZXR1cm47XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGFsbG93O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAqIE5ldyBsYXdcclxuICAgKiBAcGFyYW0gZG9jdW1lbnRzOiB0aGUgYXJyYXkgb2YgZG9jdW1lbnRzIHRvIGxpbmsgdG8gdGhlIGxhd1xyXG4gICAqL1xyXG4gICAgUlNfbmV3TGF3KGRvY3VtZW50czogQ2xpcHBlckRvY3VtZW50SW5mb1tdKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNsaXBwZXJTZXJ2aWNlLnN1cHBvcnRzUlMpIHJldHVybjtcclxuICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoQ2xpcHBlck1lc3NhZ2VzLklOVEVST1BfUlNfTkVXX0xBVywgZG9jdW1lbnRzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE5ldyBhY3Rpdml0eVxyXG4gICAgICogQHBhcmFtIGRvY3VtZW50OiB0aGUgZG9jdW1lbnQgdG8gbGluayB0byB0aGUgYWN0aXZpdHlcclxuICAgICAqL1xyXG4gICAgUlNfbmV3QWN0aXZpdHkoZG9jdW1lbnQ6IENsaXBwZXJEb2N1bWVudEluZm8pIHtcclxuICAgICAgICBpZiAoIWRvY3VtZW50KSByZXR1cm47XHJcbiAgICAgICAgaWYgKCF0aGlzLmNsaXBwZXJTZXJ2aWNlLnN1cHBvcnRzUlMpIHJldHVybjtcclxuICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoQ2xpcHBlck1lc3NhZ2VzLklOVEVST1BfUlNfTkVXX0FDVElWSVRZLCBkb2N1bWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICogRG9jdW1lbnQgdXNhZ2UgcmVwb3J0XHJcbiAgICogQHBhcmFtIGRvY3VtZW50OiB0aGUgbGF3XHJcbiAgICovXHJcbiAgICBSU191c2FnZVJlcG9ydChkb2N1bWVudDogQ2xpcHBlckRvY3VtZW50SW5mbykge1xyXG4gICAgICAgIGlmICghZG9jdW1lbnQpIHJldHVybjtcclxuICAgICAgICBpZiAoIXRoaXMuY2xpcHBlclNlcnZpY2Uuc3VwcG9ydHNSUykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5zZW5kTWVzc2FnZShDbGlwcGVyTWVzc2FnZXMuSU5URVJPUF9SU19VU0FHRV9SRVBPUlQsIGRvY3VtZW50KTtcclxuICAgIH1cclxuXHJcblxyXG59XHJcbiJdfQ==
|
|
431
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy9jbGlwcGVyLnVpL3VpL2RvY3VtZW50LW1hbmFnZXIvZG9jdW1lbnQtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUF1QixlQUFlLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSwwQkFBMEIsRUFBdUIsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0wsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hHLE9BQU8sTUFBTSxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFPaEYsTUFBTSxPQUFPLHNCQUFzQjtJQUpuQztRQU1jLGNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakMsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUMsa0JBQWEsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztLQTBaOUQ7SUF0Wkc7OztHQUdEO0lBQ0MsU0FBUyxDQUFDLElBQXlCO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQzFDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUNsQixJQUFJLENBQUMsYUFBYTthQUNi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LE9BQU87UUFDNUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsdUJBQXVCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDekYsQ0FBQzs4R0E1WlEsc0JBQXNCO2tHQUF0QixzQkFBc0Isd0VBSHJCLGFBQWE7OzJGQUdkLHNCQUFzQjtrQkFKbEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2xpcGJvYXJkIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NsaXBib2FyZCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudEluZm8sIENsaXBwZXJNZXNzYWdlcywgQ2xpcHBlck1vZGVsLCBDbGlwcGVyTW9kdWxlLCBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZSwgQ2xpcHBlclNlYXJjaFBhcmFtcywgQ2xpcHBlclNlcnZpY2UgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NsaXBwZXIuY29tbW9uJztcclxuaW1wb3J0IHsgQnJvYWRjYXN0U2VydmljZSwgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBBcHBsaWNhdGlvbkRpYWxvZ1NlcnZpY2UsIFNlbmRUb0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvdWkuYXBwbGljYXRpb24nO1xyXG5pbXBvcnQgc2F2ZUFzIGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5pbXBvcnQgeyBDbGlwcGVyUmVmZXJlbmNlc0NvbXBvbmVudCB9IGZyb20gJy4uL3JlZmVyZW5jZXMvcmVmZXJlbmNlcy5jb21wb25lbnQnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgdGVtcGxhdGU6ICc8ZGl2PjwvZGl2PicsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2xpcHBlckRvY3VtZW50TWFuYWdlciB7XHJcblxyXG4gICAgcHJvdGVjdGVkIGNsaXBib2FyZCA9IGluamVjdChDbGlwYm9hcmQpO1xyXG4gICAgcHVibGljIGNsaXBwZXJTZXJ2aWNlID0gaW5qZWN0KENsaXBwZXJTZXJ2aWNlKTtcclxuICAgIHByb3RlY3RlZCBicm9hZGNhc3RTZXJ2aWNlID0gaW5qZWN0KEJyb2FkY2FzdFNlcnZpY2UpO1xyXG4gICAgcHJvdGVjdGVkIGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoQXBwbGljYXRpb25EaWFsb2dTZXJ2aWNlKTtcclxuXHJcblxyXG5cclxuICAgIC8qKlxyXG4gKiBFeHBvcnQgYSBkb2N1bWVudCBpbiBwZGYgZm9ybWF0XHJcbiAqIEBwYXJhbSBpdGVtIDogdGhlIGRvY3VtZW50IHRvIGV4cG9ydFxyXG4gKi9cclxuICAgIGV4cG9ydFBkZihpdGVtOiBDbGlwcGVyRG9jdW1lbnRJbmZvKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNsaXBwZXJTZXJ2aWNlLmxvZ2dlZEluKSByZXR1cm47XHJcbiAgICAgICAgaWYgKCFpdGVtKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5jb25maXJtKFwiQ29uZmVybWkgbCdlc3BvcnRhemlvbmU/XCIsICdBdHRlbnppb25lIScpXHJcbiAgICAgICAgICAgIC5jb21wb25lbnRJbnN0YW5jZS5jaG9vc2VuLnN1YnNjcmliZSgocjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoci5yZXN1bHQgPT09ICdvaycpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpZCA9IGl0ZW0uaWQgfHwgaXRlbS5kb2N1bWVudElkO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5idXN5KCdFc3BvcnRhemlvbmUgaW4gY29yc28uLi4nKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLmV4cG9ydFBkZihpZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiAocjI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVBcyhyMiwgKGl0ZW0udGl0bGUxID8gaXRlbS50aXRsZTEgOiBpZCkgKyAnLnBkZicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsZWFyQnVzeSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTYXZlIGN1cnJlbnQgZG9jdW1lbnQgbGlzdCBvciBqdXN0IHRoZSBzZWxlY3RlZCBkb2N1bWVudHMgYXMgYSBjc3ZcclxuICAgICAqIEBwYXJhbSBpdGVtczogdGhlIGl0ZW0gbGlzdFxyXG4gICAgICogQHBhcmFtIHNlYXJjaFBhcmFtczogdGhlIHNlYXJjaCBwYXJhbXNcclxuICAgICAqL1xyXG4gICAgZXhwb3J0SXRlbXMoaXRlbXM6IENsaXBwZXJEb2N1bWVudEluZm9bXSwgc2VhcmNoUGFyYW1zOiBDbGlwcGVyU2VhcmNoUGFyYW1zIHwgbnVsbCA9IG51bGwpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY2xpcHBlclNlcnZpY2UubG9nZ2VkSW4pIHJldHVybjtcclxuICAgICAgICBjb25zdCBpZHMgPSBpdGVtcz8ubWFwKG4gPT4gbi5kb2N1bWVudElkID8/IG4uaWQpID8/IFtdO1xyXG4gICAgICAgIGxldCBtb2RlbDogYW55ID0geyBpZHM6IGlkcywgcXVlcnk6IG51bGwsIGZvcm1hdDogMSB9O1xyXG4gICAgICAgIGlmIChtb2RlbC5pZHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIG1vZGVsLnF1ZXJ5ID0gc2VhcmNoUGFyYW1zO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYnVzeSgnU2FsdmF0YWdnaW8gaW4gY29yc28uLi4nKTtcclxuICAgICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLmV4cG9ydChtb2RlbClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiAocikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNhdmVBcyhyLCAnZWxlbmNvLmNzdicpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsZWFyQnVzeSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFyY2hpdmUgYSBsaXN0IG9mIGl0ZW1zXHJcbiAgICAgKiBAcGFyYW0gaXRlbXM6IHRoZSBpdGVtIGxpc3RcclxuICAgICAqL1xyXG4gICAgYWRkVG9BcmNoaXZlKGl0ZW1zOiBDbGlwcGVyRG9jdW1lbnRJbmZvW10pIHtcclxuICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoQ2xpcHBlck1lc3NhZ2VzLkNPTU1BTkRfQVJDSElWRV9BREQsIGl0ZW1zKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZSBhIG5ldyBkZWFkbGluZVxyXG4gICAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBhZGRcclxuICAgICAqL1xyXG4gICAgYWRkVG9DYWxlbmRhcihpdGVtOiBDbGlwcGVyRG9jdW1lbnRJbmZvKSB7XHJcbiAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnNlbmRNZXNzYWdlKENsaXBwZXJNZXNzYWdlcy5DT01NQU5EX0NBTEVOREFSX0FERCwgaXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAqIEFkZCBhIGxpc3Qgb2YgaXRlbXMgdG8gd29ya2luZyBkb2N1bWVudHNcclxuICogQHBhcmFtIGl0ZW1zIDogdGhlIGl0ZW0gbGlzdFxyXG4gKi9cclxuICAgIGFkZEl0ZW1zVG9Xb3JraW5nRG9jdW1lbnRzKGl0ZW1zOiBDbGlwcGVyRG9jdW1lbnRJbmZvW10pIHtcclxuICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoQ2xpcHBlck1lc3NhZ2VzLkNPTU1BTkRfV09SS0lOR19BREQsIGl0ZW1zKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuKiBBZGQgYSBsaXN0IG9mIGl0ZW1zIHRvIHdvcmtpbmcgZG9jdW1lbnRzXHJcbiogQHBhcmFtIGl0ZW1zIDogdGhlIGl0ZW0gbGlzdFxyXG4qL1xyXG4gICAgYWRkSXRlbXNUb0JhZyhpdGVtczogQ2xpcHBlckRvY3VtZW50SW5mb1tdKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNsaXBwZXJTZXJ2aWNlLmxvZ2dlZEluKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgaWRzID0gaXRlbXM/Lm1hcChuID0+IG4uZG9jdW1lbnRJZCA/PyBuLmlkKSA/PyBbXTtcclxuICAgICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLmFkZFRvQmFnKGlkcykuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKHI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnRvYXN0KCdPcGVyYXppb25lIGNvbXBsZXRhdGEgY29uIHN1Y2Nlc3NvLicpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3B5IG1ldGFkYXRhIHRvIGNsaXBib2FyZFxyXG4gICAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBjb3B5XHJcbiAgICAgKi9cclxuICAgIGNvcHlNZXRhZGF0YVRvQ2xpcGJvYXJkKGl0ZW06IENsaXBwZXJEb2N1bWVudEluZm8pIHtcclxuICAgICAgICBpZiAoIWl0ZW0gfHwgaXRlbS5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLkNvb3JkaW5hbWVudG8pIHJldHVybjtcclxuICAgICAgICBsZXQgbWV0YSA9XHJcbiAgICAgICAgICAgIChpdGVtLmlkID8/IGl0ZW0uZG9jdW1lbnRJZCkgKyAnXFx0JyArXHJcbiAgICAgICAgICAgIGl0ZW0udGl0bGUxPy5yZXBsYWNlQWxsKFwiXFxyXFxuXCIsIFwiIFwiKSArICdcXHQnO1xyXG4gICAgICAgIGlmIChpdGVtLnRpdGxlMilcclxuICAgICAgICAgICAgbWV0YSArPSBpdGVtLnRpdGxlMi5yZXBsYWNlQWxsKFwiXFxyXFxuXCIsIFwiIFwiKTtcclxuICAgICAgICBtZXRhICs9ICdcXHQnO1xyXG4gICAgICAgIGlmIChpdGVtLm51bWJlcilcclxuICAgICAgICAgICAgbWV0YSArPSBpdGVtLm51bWJlcjtcclxuICAgICAgICBtZXRhICs9ICdcXHQnO1xyXG4gICAgICAgIGlmIChpdGVtLnB1Ymxpc2hpbmdEYXRlKSB7XHJcbiAgICAgICAgICAgIGl0ZW0ucHVibGlzaGluZ0RhdGUgPSBuZXcgRGF0ZShpdGVtLnB1Ymxpc2hpbmdEYXRlKTtcclxuICAgICAgICAgICAgbWV0YSArPSBTeXN0ZW1VdGlscy5mb3JtYXREYXRlKGl0ZW0ucHVibGlzaGluZ0RhdGUpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5kYXRlKSB7XHJcbiAgICAgICAgICAgIGl0ZW0uZGF0ZSA9IG5ldyBEYXRlKGl0ZW0uZGF0ZSk7XHJcbiAgICAgICAgICAgIG1ldGEgKz0gU3lzdGVtVXRpbHMuZm9ybWF0RGF0ZShpdGVtLmRhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBtZXRhICs9ICdcXHQnO1xyXG4gICAgICAgIGlmIChpdGVtLm9yaWdpbkRlc2NyaXB0aW9uKVxyXG4gICAgICAgICAgICBtZXRhICs9IGl0ZW0ub3JpZ2luRGVzY3JpcHRpb25cclxuICAgICAgICB0aGlzLmNsaXBib2FyZC5jb3B5KG1ldGEpO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS50b2FzdChcIk1ldGFkYXRpIGNvcGlhdGkgbmVnbGkgYXBwdW50aS5cIik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93IGEgZG9jdW1lbnQgcGVybWFsaW5rXHJcbiAgICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIHNob3cgdGhlIGxpbmsgZm9yXHJcbiAgICAgKi9cclxuICAgIHNob3dMaW5rKGl0ZW06IGFueSkge1xyXG4gICAgICAgIGlmICghaXRlbSkgcmV0dXJuO1xyXG4gICAgICAgIGxldCBpZCA9IGl0ZW0uaWQgPyBpdGVtLmlkIDogaXRlbS5kb2N1bWVudElkO1xyXG4gICAgICAgIGxldCBjaGFubmVscyA9IGl0ZW0uY2hhbm5lbE5hbWVcclxuICAgICAgICAgICAgPyAnQ2FuYWxpOiAnICsgaXRlbS5jaGFubmVsTmFtZSArICc8YnI+J1xyXG4gICAgICAgICAgICA6ICcnO1xyXG4gICAgICAgIGxldCBvcmlnaW4gPSBpdGVtLm9yaWdpblxyXG4gICAgICAgICAgICA/ICdPcmlnaW5lOiAnICtcclxuICAgICAgICAgICAgaXRlbS5vcmlnaW4gK1xyXG4gICAgICAgICAgICAnIC0gJyArXHJcbiAgICAgICAgICAgIChpdGVtLm9yaWdpbkRlc2NyaXB0aW9uID8gaXRlbS5vcmlnaW5EZXNjcmlwdGlvbiA6ICcnKSArXHJcbiAgICAgICAgICAgICc8YnI+J1xyXG4gICAgICAgICAgICA6ICcnO1xyXG4gICAgICAgIGxldCB0b3BpY3MgPSBpdGVtLnRvcGljcyA/ICdBcmdvbWVudG86ICcgKyBpdGVtLnRvcGljcyArICc8YnI+JyA6ICcnO1xyXG4gICAgICAgIGlmICghaWQpIHJldHVybjtcclxuICAgICAgICBsZXQgbWVzc2FnZSA9XHJcbiAgICAgICAgICAgIFwiPHAgPklsIGxpbmsgY2hlIHRyb3ZpIHF1aSBzb3R0byDDqCB1biByaWZlcmltZW50byBkaXJldHRvIGFsIGRvY3VtZW50byBzZWxlemlvbmF0by48L3A+XCIgK1xyXG4gICAgICAgICAgICBcIjxwID5MbyBwdW9pIHV0aWxpenphcmUgbmVsbGEgdHVhIGRvY3VtZW50YXppb25lIG8gaW52aWFybG8gcGVyIGVtYWlsIGFkIHVuIHR1byBjb2xsZWdhLiBMYSBwZXJzb25hIGNoZSBkZXNpZGVyZXLDoCB2aXN1YWxpenphcmUgaWwgZG9jdW1lbnRvIGRvdnLDoCBuZWNlc3NhcmlhbWVudGUgZXNzZXJlIHVuIHV0ZW50ZSBhYmJvbmF0by48L3A+XCIgK1xyXG4gICAgICAgICAgICBcIjxwID5TZWxlemlvbmEgZSBjb3BpYSAoZmFpIENUUkwrQykgaWwgbGluayBxdWkgc290dG8uPC9wPlwiICtcclxuICAgICAgICAgICAgXCI8ZGl2IGNsYXNzPSdzbWFsbCBhY2NlbnQnPlwiICtcclxuICAgICAgICAgICAgJ2h0dHBzOi8vY2xpcHBlci5hcnNlZGl6aW9uaS5pdC8/aWQ9JyArXHJcbiAgICAgICAgICAgIGlkICtcclxuICAgICAgICAgICAgJzwvZGl2PicgK1xyXG4gICAgICAgICAgICAnPGJyPicgK1xyXG4gICAgICAgICAgICAnPGhyPicgK1xyXG4gICAgICAgICAgICAnPHAgY2xhc3M9XCJzbWFsbFwiPicgK1xyXG4gICAgICAgICAgICBjaGFubmVscyArXHJcbiAgICAgICAgICAgIG9yaWdpbiArXHJcbiAgICAgICAgICAgIHRvcGljc1xyXG4gICAgICAgICc8L3A+JztcclxuXHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmluZm8obWVzc2FnZSwgJ0NvcGlhIGxpbmsnLCAnQ2hpdWRpJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZW5kIGRvY3VtZW50cyBsaW5rcyBieSBlbWFpbFxyXG4gICAgICogQHBhcmFtIGl0ZW1zIDogdGhlIGRvY3VtZW50IGxpc3RcclxuICAgICAqL1xyXG4gICAgc2VuZEl0ZW1zVG8oaXRlbXM6IENsaXBwZXJEb2N1bWVudEluZm9bXSkge1xyXG4gICAgICAgIGlmICghdGhpcy5jbGlwcGVyU2VydmljZS5sb2dnZWRJbikgcmV0dXJuO1xyXG4gICAgICAgIGlmICghaXRlbXMgfHwgaXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgZCA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKFNlbmRUb0RpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICBhcmlhTGFiZWw6ICdpbnZpYSBkb2N1bWVudGkgcGVyIGVtYWlsJyxcclxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcclxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcclxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcclxuICAgICAgICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBpbmZvOlxyXG4gICAgICAgICAgICAgICAgICAgICdQdW9pIGludmlhcmUgaSBkb2N1bWVudGkgYSBjaGkgdnVvaSBtYSwgcGVyIHBvdGVybGkgdmlzdWFsaXp6YXJlLCDDqCBuZWNlc3NhcmlvIGVzc2VyZSB1biB1dGVudGUgYWJib25hdG8uJyxcclxuICAgICAgICAgICAgICAgIGNvdW50OiBpdGVtcy5sZW5ndGgsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG1pbldpZHRoOiAnMzc1cHgnLFxyXG4gICAgICAgICAgICBtYXhXaWR0aDogJzYwMHB4JyxcclxuICAgICAgICAgICAgd2lkdGg6ICc5OSUnLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGQuY29tcG9uZW50SW5zdGFuY2UuZG9uZVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHIuaWRzID0gaXRlbXM/Lm1hcChuID0+IG4uZG9jdW1lbnRJZCA/PyBuLmlkKSA/PyBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5idXN5KCdJbnZpbyBpbiBjb3Jzby4uLicpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbGlwcGVyU2VydmljZS5zZW5kVG8ocilcclxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogKHIyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcjIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihyMi5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnRvYXN0KCdJbnZpbyBjb21wbGV0YXRvIGNvbiBzdWNjZXNzby4nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY2xlYXJCdXN5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEaXNwbGF5IGEgZG9jdW1lbnQgcmVwb3J0XHJcbiAgICAgKiBAcGFyYW0gZG9jdW1lbnRJZCA6IHRoZSBkb2N1bWVudCBpZFxyXG4gICAgICogQHBhcmFtIHRpdGxlOiB0aGUgZG9jdW1lbnQgc2hvcnQgdGl0bGVcclxuICAgICAqL1xyXG4gICAgb3BlblJlcG9ydChkb2N1bWVudElkOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jbGlwcGVyU2VydmljZS5sb2dnZWRJbikgcmV0dXJuO1xyXG4gICAgICAgIGlmICghZG9jdW1lbnRJZCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2UucmVwb3J0KGRvY3VtZW50SWQpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzYXZlQXMociwgKHRpdGxlID8gdGl0bGUgOiBkb2N1bWVudElkKSArICcuaHRtbCcpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsZWFyQnVzeSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuKiBPcGVuIGFuIGl0ZW1cclxuKiBUaGlzIHNob3VsZCBiZSBhbHdheXMgb3ZlcnJpZGRlblxyXG4qIEBwYXJhbSBkb2N1bWVudElkIDogdGhlIGRvY3VtZW50IGlkXHJcbiogQHBhcmFtIG5ld1dpbmRvdzogdHJ1ZSBpZiB0aGUgZG9jdW1lbnQgbXVzdCBiZSBvcGVuIGludG8gYSBuZXcgd2luZG93XHJcbiovXHJcbiAgICBvcGVuKGRvY3VtZW50SWQ6IHN0cmluZywgbmV3V2luZG93OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhkb2N1bWVudElkICsgJyA+ICcgKyBuZXdXaW5kb3cgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERpc3BsYXkgYSBkb2N1bWVudCByZXBvcnRcclxuICAgICAqIEBwYXJhbSBpdGVtIDogdGhlIGRvY3VtZW50XHJcbiAgICAgKi9cclxuICAgIHJlcG9ydChpdGVtOiBDbGlwcGVyRG9jdW1lbnRJbmZvKSB7XHJcbiAgICAgICAgaWYgKCFpdGVtKSByZXR1cm47XHJcbiAgICAgICAgaWYgKGl0ZW0ubW9kZWwgIT0gQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGUgJiYgaXRlbS5tb2RlbCAhPSBDbGlwcGVyTW9kZWwuU2NhZGVuemUpIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmluZm8oXCJRdWVzdGEgZnVuemlvbmFsaXTDoCBub24gw6ggZGlzcG9uaWJpbGUgcGVyIHF1ZXN0byB0aXBvIGRpIGRvY3VtZW50by5cIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5SZXBvcnQoaXRlbS5kb2N1bWVudElkLCBpdGVtLnRpdGxlMSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQnJvd3NlIGRvY3VtZW50IHJlZmVyZW5jZXNcclxuICAgICAqIEBwYXJhbSBpdGVtIDogdGhlIGRvY3VtZW50IGl0ZW1cclxuICAgICAqIEBwYXJhbSBtb2RlIDogdGhlIHNuYXBzaG90IG1vZGVcclxuICAgICAqL1xyXG4gICAgcmVmZXJlbmNlcyhpdGVtOiBDbGlwcGVyRG9jdW1lbnRJbmZvLCBtb2RlOiBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZSA9IENsaXBwZXJRdWVyeVJlZmVyZW5jZXNNb2RlLlJlZmVyZW5jZXNJbikge1xyXG4gICAgICAgIGlmICghaXRlbSkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGQgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihDbGlwcGVyUmVmZXJlbmNlc0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICBhcmlhTGFiZWw6ICdyaWZlcmltZW50aSBsZWdhdGkgYWwgZG9jdW1lbnRvJyxcclxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcclxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcclxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcclxuICAgICAgICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxyXG4gICAgICAgICAgICBkYXRhOiB7IGlkOiBpdGVtLmRvY3VtZW50SWQsIG1vZGU6IG1vZGUgfSxcclxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ3JlZmVyZW5jZXMtY29udGFpbmVyJyxcclxuICAgICAgICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgICAgICAgIG1heFdpZHRoOiAnMTAwMHB4JyxcclxuICAgICAgICAgICAgd2lkdGg6ICc5OSUnLFxyXG4gICAgICAgICAgICBoZWlnaHQ6ICc5OSUnLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGQuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyICYmIHIuaWQpIHRoaXMub3BlbihyLmlkKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNYW5hZ2UgY2xpcHBlciBiYWdcclxuICAgICAqL1xyXG4gICAgbWFuYWdlQmFnKCkge1xyXG4gICAgICAgIGxldCBpdGVtczogYW55ID0gW107XHJcbiAgICAgICAgdGhpcy5jbGlwcGVyU2VydmljZS5iYWcuZm9yRWFjaChuID0+IHtcclxuICAgICAgICAgICAgbGV0IHRpdGxlID0gbi50aXRsZTEgPz8gbi50aXRsZTI7XHJcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGU6IHRpdGxlLFxyXG4gICAgICAgICAgICAgICAgYmFnOiBuLFxyXG4gICAgICAgICAgICAgICAgc2VhcmNoQmFnOiB7IG5hbWU6IHRpdGxlIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IGQgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2VsZWN0KHtcclxuICAgICAgICAgICAgdGl0bGU6ICdHZXN0aXNjaSBkb2N1bWVudGkgZGkgbGF2b3JvJyxcclxuICAgICAgICAgICAgbXVsdGk6IGZhbHNlLFxyXG4gICAgICAgICAgICBtdXN0U2VsZWN0OiBmYWxzZSxcclxuICAgICAgICAgICAgb2tDYXB0aW9uOiAnU0VMRVpJT05BJyxcclxuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zLFxyXG4gICAgICAgICAgICBjYW5EZWxldGU6IHRydWUsXHJcbiAgICAgICAgICAgIGNhblZpZXc6IHRydWUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZC5jb21wb25lbnRJbnN0YW5jZS52aWV3XHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW0gPSByLmJhZztcclxuICAgICAgICAgICAgICAgIHRoaXMub3BlbihpdGVtLmRvY3VtZW50SWQgfHwgaXRlbS5Eb2N1bWVudElkKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgZC5jb21wb25lbnRJbnN0YW5jZS5kZWxldGVcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHIuc2VsZWN0ZWRJdGVtc1swXS5iYWc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLnJlbW92ZUZyb21CYWcoaXRlbS5kb2N1bWVudElkIHx8IGl0ZW0uRG9jdW1lbnRJZCkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0OiAocjI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXIyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihyMi5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS50b2FzdCgnT3BlcmF6aW9uZSBjb21wbGV0YXRhIGNvbiBzdWNjZXNzby4nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHAgPSAwOyBwIDwgci5pdGVtcy5sZW5ndGg7IHArKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLml0ZW1zW3BdLmJhZy5Eb2N1bWVudElkID09PSBpdGVtLkRvY3VtZW50SWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5pdGVtcy5zcGxpY2UocCwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLml0ZW1zLmxlbmd0aCA9PT0gMCkgZC5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICogQ2hlY2tzIGlmIGEgbW9kdWxlIGlzIHN1cHBvcnRlZCBieSBSU1xyXG4gKiBAcGFyYW0gbW9kdWxlIDogdGhlIG1vZHVsZSB0byBjaGVja1xyXG4gKiBAcmV0dXJuczogdHJ1ZSBpZiB0aGUgbW9kdWxlIGlzIHN1cHBvcnRlZFxyXG4gKi9cclxuICAgIGlzTW9kdWxlU3VwcG9ydGVkQnlSUyhtb2R1bGU6IENsaXBwZXJNb2R1bGUpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gbW9kdWxlID09PSBDbGlwcGVyTW9kdWxlLkdhenpldHRlQm9sbGV0dGluaUVGb250aURpdmVyc2UgfHxcclxuICAgICAgICAgICAgbW9kdWxlID09PSBDbGlwcGVyTW9kdWxlLk5vcm1hdGl2YVZpZ2VudGUgfHxcclxuICAgICAgICAgICAgbW9kdWxlID09PSBDbGlwcGVyTW9kdWxlLlNjYWRlbnplRVNlZ25hbGF6aW9uaTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyBpZiBhIG1vZGVsIGlzIHN1cHBvcnRlZCBieSBSU1xyXG4gICAgICogQHBhcmFtIG1vZGVsIDogdGhlIG1vZGVsIHRvIGNoZWNrXHJcbiAgICAgKiBAcmV0dXJuczogdHJ1ZSBpZiB0aGUgbW9kZWwgaXMgc3VwcG9ydGVkXHJcbiAgICAgKi9cclxuICAgIGlzTW9kZWxTdXBwb3J0ZWRCeVJTKG1vZGVsOiBDbGlwcGVyTW9kZWwpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gbW9kZWwgPT09IENsaXBwZXJNb2RlbC5BZ2dpb3JuYW1lbnRvTm9ybWF0aXZvIHx8XHJcbiAgICAgICAgICAgIG1vZGVsID09PSBDbGlwcGVyTW9kZWwuTm9ybWF0aXZhVmlnZW50ZSB8fFxyXG4gICAgICAgICAgICBtb2RlbCA9PT0gQ2xpcHBlck1vZGVsLlNjYWRlbnplO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgKiBDaGVja3MgaWYgYWxsIGRvY3VtZW50cyBhcmUgc3VwcG9ydGVkIGJ5IFJTXHJcbiAgICogQHBhcmFtIGl0ZW1zIDogdGhlIGxpc3Qgb2YgZG9jdW1lbnNcclxuICAgKiBAcmV0dXJuczogdHJ1ZSBpZiBhbGwgZG9jdW1lbnRzIHN1cHBvcnRzIFJTXHJcbiAgICovXHJcbiAgICBjYW5TdXBwb3J0UlMoaXRlbXM6IFtdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IGFsbG93ID0gZmFsc2U7XHJcbiAgICAgICAgaXRlbXMuZm9yRWFjaCgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGFsbG93ID0gdGhpcy5pc01vZGVsU3VwcG9ydGVkQnlSUyhuLm1vZGVsKTtcclxuICAgICAgICAgICAgaWYgKCFhbGxvdykgcmV0dXJuO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBhbGxvdztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyBpZiBSUyBpcyBlbmFibGVkIGZvciBhbGwgZ2l2ZW4gZG9jdW1lbnRzXHJcbiAgICAgKiBAcGFyYW0gZG9jdW1lbnRzIDogdGhlIGRvY3VtZW50cyB0byBjaGVja1xyXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiBhbGxhIGRvY3VtZW50cyBhciBSUyBlbmFibGVkXHJcbiAgICAgKi9cclxuICAgIFJTX2VuYWJsZWQoZG9jdW1lbnRzOiBDbGlwcGVyRG9jdW1lbnRJbmZvW10pOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIWRvY3VtZW50cyB8fCBkb2N1bWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgbGV0IGFsbG93ID0gZmFsc2U7XHJcbiAgICAgICAgZG9jdW1lbnRzLmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgICAgIGFsbG93ID0gbiAmJiAobi5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGUgfHxcclxuICAgICAgICAgICAgICAgIG4ubW9kZWwgPT09IENsaXBwZXJNb2RlbC5BZ2dpb3JuYW1lbnRvTm9ybWF0aXZvIHx8XHJcbiAgICAgICAgICAgICAgICBuLm1vZGVsID09PSBDbGlwcGVyTW9kZWwuU2NhZGVuemUpO1xyXG4gICAgICAgICAgICBpZiAoIWFsbG93KSByZXR1cm47XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGFsbG93O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAqIE5ldyBsYXdcclxuICAgKiBAcGFyYW0gZG9jdW1lbnRzOiB0aGUgYXJyYXkgb2YgZG9jdW1lbnRzIHRvIGxpbmsgdG8gdGhlIGxhd1xyXG4gICAqL1xyXG4gICAgUlNfbmV3TGF3KGRvY3VtZW50czogQ2xpcHBlckRvY3VtZW50SW5mb1tdKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNsaXBwZXJTZXJ2aWNlLnN1cHBvcnRzUlMpIHJldHVybjtcclxuICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoQ2xpcHBlck1lc3NhZ2VzLklOVEVST1BfUlNfTkVXX0xBVywgZG9jdW1lbnRzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE5ldyBhY3Rpdml0eVxyXG4gICAgICogQHBhcmFtIGRvY3VtZW50OiB0aGUgZG9jdW1lbnQgdG8gbGluayB0byB0aGUgYWN0aXZpdHlcclxuICAgICAqL1xyXG4gICAgUlNfbmV3QWN0aXZpdHkoZG9jdW1lbnQ6IENsaXBwZXJEb2N1bWVudEluZm8pIHtcclxuICAgICAgICBpZiAoIWRvY3VtZW50KSByZXR1cm47XHJcbiAgICAgICAgaWYgKCF0aGlzLmNsaXBwZXJTZXJ2aWNlLnN1cHBvcnRzUlMpIHJldHVybjtcclxuICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoQ2xpcHBlck1lc3NhZ2VzLklOVEVST1BfUlNfTkVXX0FDVElWSVRZLCBkb2N1bWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICogRG9jdW1lbnQgdXNhZ2UgcmVwb3J0XHJcbiAgICogQHBhcmFtIGRvY3VtZW50OiB0aGUgbGF3XHJcbiAgICovXHJcbiAgICBSU191c2FnZVJlcG9ydChkb2N1bWVudDogQ2xpcHBlckRvY3VtZW50SW5mbykge1xyXG4gICAgICAgIGlmICghZG9jdW1lbnQpIHJldHVybjtcclxuICAgICAgICBpZiAoIXRoaXMuY2xpcHBlclNlcnZpY2Uuc3VwcG9ydHNSUykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5zZW5kTWVzc2FnZShDbGlwcGVyTWVzc2FnZXMuSU5URVJPUF9SU19VU0FHRV9SRVBPUlQsIGRvY3VtZW50KTtcclxuICAgIH1cclxuXHJcblxyXG59XHJcbiJdfQ==
|