@po-ui/ng-components 6.10.0 → 6.12.0
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/esm2020/lib/components/po-button/po-button-base.component.mjs +64 -14
- package/esm2020/lib/components/po-button/po-button-type.enum.mjs +10 -0
- package/esm2020/lib/components/po-button/po-button.component.mjs +4 -4
- package/esm2020/lib/components/po-dynamic/po-dynamic-field.interface.mjs +1 -1
- package/esm2020/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields-base.component.mjs +12 -2
- package/esm2020/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.mjs +12 -2
- package/esm2020/lib/components/po-dynamic/po-dynamic.util.mjs +18 -11
- package/esm2020/lib/components/po-field/index.mjs +2 -1
- package/esm2020/lib/components/po-field/po-checkbox/po-checkbox.module.mjs +20 -0
- package/esm2020/lib/components/po-field/po-combo/po-combo-base.component.mjs +2 -1
- package/esm2020/lib/components/po-field/po-field.module.mjs +15 -13
- package/esm2020/lib/components/po-field/po-upload/po-upload.component.mjs +3 -3
- package/esm2020/lib/components/po-list-view/po-list-view.component.mjs +4 -4
- package/esm2020/lib/components/po-menu/po-menu-base.component.mjs +46 -6
- package/esm2020/lib/components/po-menu/po-menu.component.mjs +5 -5
- package/esm2020/lib/components/po-modal/po-modal-footer/po-modal-footer.component.mjs +2 -2
- package/esm2020/lib/components/po-modal/po-modal.component.mjs +6 -6
- package/esm2020/lib/components/po-page/po-page-default/po-page-default.component.mjs +3 -3
- package/esm2020/lib/components/po-page/po-page-detail/po-page-detail.component.mjs +7 -7
- package/esm2020/lib/components/po-page/po-page-edit/po-page-edit.component.mjs +6 -6
- package/esm2020/lib/components/po-page/po-page-list/po-page-list.component.mjs +3 -3
- package/esm2020/lib/components/po-table/po-table-base.component.mjs +6 -2
- package/esm2020/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.mjs +19 -5
- package/esm2020/lib/components/po-table/po-table-detail/po-table-detail.component.mjs +40 -40
- package/esm2020/lib/components/po-table/po-table.component.mjs +441 -438
- package/esm2020/lib/components/po-table/po-table.module.mjs +12 -4
- package/esm2020/lib/services/po-notification/po-notification-base.service.mjs +6 -4
- package/esm2020/lib/services/po-notification/po-notification.interface.mjs +1 -1
- package/esm2020/lib/services/po-notification/po-notification.module.mjs +6 -4
- package/esm2020/lib/services/po-notification/po-notification.service.mjs +3 -2
- package/esm2020/lib/services/po-notification/po-toaster/po-toaster.component.mjs +49 -32
- package/esm2020/lib/services/po-notification/po-toaster/po-toaster.literals.mjs +15 -0
- package/fesm2015/po-ui-ng-components.mjs +1078 -886
- package/fesm2015/po-ui-ng-components.mjs.map +1 -1
- package/fesm2020/po-ui-ng-components.mjs +1070 -871
- package/fesm2020/po-ui-ng-components.mjs.map +1 -1
- package/lib/components/po-button/po-button-base.component.d.ts +40 -9
- package/lib/components/po-button/po-button-type.enum.d.ts +8 -0
- package/lib/components/po-dynamic/po-dynamic-field.interface.d.ts +44 -0
- package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.d.ts +5 -0
- package/lib/components/po-dynamic/po-dynamic.util.d.ts +1 -1
- package/lib/components/po-field/index.d.ts +1 -0
- package/lib/components/po-field/po-checkbox/po-checkbox.module.d.ts +9 -0
- package/lib/components/po-field/po-field.module.d.ts +54 -54
- package/lib/components/po-menu/po-menu-base.component.d.ts +19 -1
- package/lib/components/po-modal/po-modal-footer/po-modal-footer.component.d.ts +1 -1
- package/lib/components/po-modal/po-modal.component.d.ts +1 -1
- package/lib/components/po-table/po-table-base.component.d.ts +2 -0
- package/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.d.ts +3 -0
- package/lib/components/po-table/po-table.component.d.ts +2 -0
- package/lib/components/po-table/po-table.module.d.ts +14 -12
- package/lib/services/po-notification/po-notification-base.service.d.ts +4 -2
- package/lib/services/po-notification/po-notification.interface.d.ts +5 -1
- package/lib/services/po-notification/po-notification.module.d.ts +3 -1
- package/lib/services/po-notification/po-toaster/po-toaster.component.d.ts +5 -1
- package/lib/services/po-notification/po-toaster/po-toaster.literals.d.ts +14 -0
- package/package.json +4 -4
- package/po-ui-ng-components-6.12.0.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-add/index.spec.js +5 -5
- package/schematics/ng-generate/po-page-default/index.spec.js +12 -12
- package/schematics/ng-generate/po-page-detail/index.spec.js +12 -12
- package/schematics/ng-generate/po-page-edit/index.spec.js +12 -12
- package/schematics/ng-generate/po-page-list/index.spec.js +12 -12
- package/schematics/ng-generate/sidemenu/index.spec.js +4 -4
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/schematics/ng-update/v6/index.js +1 -1
- package/po-ui-ng-components-6.10.0.tgz +0 -0
|
@@ -388,7 +388,7 @@ PoUploadComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoUploadC
|
|
|
388
388
|
useExisting: forwardRef(() => PoUploadComponent),
|
|
389
389
|
multi: true
|
|
390
390
|
}
|
|
391
|
-
]), i0.ɵɵInheritDefinitionFeature], decls: 9, vars: 13, consts: [[3, "p-label", "p-help", "p-optional"], [1, "po-upload"], ["type", "file", 1, "po-upload-input", 3, "accept", "disabled", "multiple", "required", "change"], ["inputFile", ""], [3, "p-directory-compatible", "p-disabled", "p-drag-drop-height", "p-literals", "p-file-change", "p-select-files", 4, "ngIf"], ["class", "po-upload-button", "for", "file", 3, "p-disabled", "p-label", "p-click", 4, "ngIf"], ["class", "po-upload-file-restrictions", 3, "ngClass", "p-allowed-extensions", "p-max-files", "p-max-file-size", "p-min-file-size", 4, "ngIf"], ["class", "po-upload-progress-container", 4, "ngIf"], ["class", "po-upload-send-button", "p-
|
|
391
|
+
]), i0.ɵɵInheritDefinitionFeature], decls: 9, vars: 13, consts: [[3, "p-label", "p-help", "p-optional"], [1, "po-upload"], ["type", "file", 1, "po-upload-input", 3, "accept", "disabled", "multiple", "required", "change"], ["inputFile", ""], [3, "p-directory-compatible", "p-disabled", "p-drag-drop-height", "p-literals", "p-file-change", "p-select-files", 4, "ngIf"], ["class", "po-upload-button", "for", "file", 3, "p-disabled", "p-label", "p-click", 4, "ngIf"], ["class", "po-upload-file-restrictions", 3, "ngClass", "p-allowed-extensions", "p-max-files", "p-max-file-size", "p-min-file-size", 4, "ngIf"], ["class", "po-upload-progress-container", 4, "ngIf"], ["class", "po-upload-send-button", "p-kind", "primary", 3, "po-mt-3", "p-disabled", "p-label", "p-click", 4, "ngIf"], [3, "p-directory-compatible", "p-disabled", "p-drag-drop-height", "p-literals", "p-file-change", "p-select-files"], ["for", "file", 1, "po-upload-button", 3, "p-disabled", "p-label", "p-click"], ["uploadButton", ""], [1, "po-upload-file-restrictions", 3, "ngClass", "p-allowed-extensions", "p-max-files", "p-max-file-size", "p-min-file-size"], [1, "po-upload-progress-container"], ["p-no-shadow", "", 3, "p-height", "p-no-border", "p-no-padding"], [3, "ngClass"], [3, "p-info", "p-info-icon", "p-status", "p-text", "p-value", "p-cancel", "p-retry", 4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "p-info", "p-info-icon", "p-status", "p-text", "p-value", "p-cancel", "p-retry"], ["p-kind", "primary", 1, "po-upload-send-button", 3, "p-disabled", "p-label", "p-click"]], template: function PoUploadComponent_Template(rf, ctx) { if (rf & 1) {
|
|
392
392
|
i0.ɵɵelementStart(0, "po-field-container", 0)(1, "div", 1)(2, "input", 2, 3);
|
|
393
393
|
i0.ɵɵlistener("change", function PoUploadComponent_Template_input_change_2_listener($event) { return ctx.onFileChange($event); });
|
|
394
394
|
i0.ɵɵelementEnd();
|
|
@@ -429,7 +429,7 @@ PoUploadComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoUploadC
|
|
|
429
429
|
useExisting: forwardRef(() => PoUploadComponent),
|
|
430
430
|
multi: true
|
|
431
431
|
}
|
|
432
|
-
], template: "<po-field-container [p-label]=\"label\" [p-help]=\"help\" [p-optional]=\"!required && optional\">\n <div class=\"po-upload\">\n <input\n #inputFile\n class=\"po-upload-input\"\n type=\"file\"\n [accept]=\"allowedExtensions\"\n [attr.name]=\"name\"\n [disabled]=\"isDisabled\"\n [multiple]=\"isMultiple\"\n [required]=\"required\"\n (change)=\"onFileChange($event)\"\n />\n\n <po-upload-drag-drop\n *ngIf=\"displayDragDrop\"\n [p-directory-compatible]=\"canHandleDirectory\"\n [p-disabled]=\"isDisabled\"\n [p-drag-drop-height]=\"dragDropHeight\"\n [p-literals]=\"literals\"\n (p-file-change)=\"onFileChangeDragDrop($event)\"\n (p-select-files)=\"selectFiles()\"\n >\n </po-upload-drag-drop>\n\n <po-button\n *ngIf=\"!hideSelectButton && !displayDragDrop\"\n #uploadButton\n class=\"po-upload-button\"\n for=\"file\"\n [p-disabled]=\"isDisabled\"\n [p-label]=\"selectFileButtonLabel\"\n (p-click)=\"selectFiles()\"\n >\n </po-button>\n\n <po-upload-file-restrictions\n *ngIf=\"fileRestrictions && !hideRestrictionsInfo\"\n class=\"po-upload-file-restrictions\"\n [ngClass]=\"{ 'po-upload-file-restrictions-drag-drop': displayDragDrop }\"\n [p-allowed-extensions]=\"fileRestrictions?.allowedExtensions\"\n [p-max-files]=\"maxFiles\"\n [p-max-file-size]=\"fileRestrictions?.maxFileSize\"\n [p-min-file-size]=\"fileRestrictions?.minFileSize\"\n >\n </po-upload-file-restrictions>\n\n <div *ngIf=\"currentFiles && currentFiles.length\" class=\"po-upload-progress-container\">\n <po-container\n p-no-shadow\n [p-height]=\"hasMoreThanFourItems ? 280 : 'auto'\"\n [p-no-border]=\"!hasMoreThanFourItems\"\n [p-no-padding]=\"!hasMoreThanFourItems\"\n >\n <div [ngClass]=\"{ 'po-upload-progress-container-area po-pt-2 po-pl-1': hasMoreThanFourItems }\">\n <po-progress\n *ngFor=\"let file of currentFiles; trackBy: trackByFn\"\n [p-info]=\"infoByUploadStatus[file.status]?.text(file.percent)\"\n [p-info-icon]=\"infoByUploadStatus[file.status]?.icon\"\n [p-status]=\"progressStatusByFileStatus[file.status]\"\n [p-text]=\"file.displayName\"\n [p-value]=\"file.percent\"\n (p-cancel)=\"cancel(file)\"\n (p-retry)=\"uploadFiles([file])\"\n >\n </po-progress>\n </div>\n </po-container>\n </div>\n\n <po-button\n *ngIf=\"displaySendButton\"\n class=\"po-upload-send-button\"\n [class.po-mt-3]=\"hasMoreThanFourItems\"\n p-
|
|
432
|
+
], template: "<po-field-container [p-label]=\"label\" [p-help]=\"help\" [p-optional]=\"!required && optional\">\n <div class=\"po-upload\">\n <input\n #inputFile\n class=\"po-upload-input\"\n type=\"file\"\n [accept]=\"allowedExtensions\"\n [attr.name]=\"name\"\n [disabled]=\"isDisabled\"\n [multiple]=\"isMultiple\"\n [required]=\"required\"\n (change)=\"onFileChange($event)\"\n />\n\n <po-upload-drag-drop\n *ngIf=\"displayDragDrop\"\n [p-directory-compatible]=\"canHandleDirectory\"\n [p-disabled]=\"isDisabled\"\n [p-drag-drop-height]=\"dragDropHeight\"\n [p-literals]=\"literals\"\n (p-file-change)=\"onFileChangeDragDrop($event)\"\n (p-select-files)=\"selectFiles()\"\n >\n </po-upload-drag-drop>\n\n <po-button\n *ngIf=\"!hideSelectButton && !displayDragDrop\"\n #uploadButton\n class=\"po-upload-button\"\n for=\"file\"\n [p-disabled]=\"isDisabled\"\n [p-label]=\"selectFileButtonLabel\"\n (p-click)=\"selectFiles()\"\n >\n </po-button>\n\n <po-upload-file-restrictions\n *ngIf=\"fileRestrictions && !hideRestrictionsInfo\"\n class=\"po-upload-file-restrictions\"\n [ngClass]=\"{ 'po-upload-file-restrictions-drag-drop': displayDragDrop }\"\n [p-allowed-extensions]=\"fileRestrictions?.allowedExtensions\"\n [p-max-files]=\"maxFiles\"\n [p-max-file-size]=\"fileRestrictions?.maxFileSize\"\n [p-min-file-size]=\"fileRestrictions?.minFileSize\"\n >\n </po-upload-file-restrictions>\n\n <div *ngIf=\"currentFiles && currentFiles.length\" class=\"po-upload-progress-container\">\n <po-container\n p-no-shadow\n [p-height]=\"hasMoreThanFourItems ? 280 : 'auto'\"\n [p-no-border]=\"!hasMoreThanFourItems\"\n [p-no-padding]=\"!hasMoreThanFourItems\"\n >\n <div [ngClass]=\"{ 'po-upload-progress-container-area po-pt-2 po-pl-1': hasMoreThanFourItems }\">\n <po-progress\n *ngFor=\"let file of currentFiles; trackBy: trackByFn\"\n [p-info]=\"infoByUploadStatus[file.status]?.text(file.percent)\"\n [p-info-icon]=\"infoByUploadStatus[file.status]?.icon\"\n [p-status]=\"progressStatusByFileStatus[file.status]\"\n [p-text]=\"file.displayName\"\n [p-value]=\"file.percent\"\n (p-cancel)=\"cancel(file)\"\n (p-retry)=\"uploadFiles([file])\"\n >\n </po-progress>\n </div>\n </po-container>\n </div>\n\n <po-button\n *ngIf=\"displaySendButton\"\n class=\"po-upload-send-button\"\n [class.po-mt-3]=\"hasMoreThanFourItems\"\n p-kind=\"primary\"\n [p-disabled]=\"hasAnyFileUploading(currentFiles)\"\n [p-label]=\"literals.startSending\"\n (p-click)=\"uploadFiles(currentFiles)\"\n >\n </po-button>\n </div>\n</po-field-container>\n" }]
|
|
433
433
|
}], function () { return [{ type: i1.PoUploadService }, { type: i0.Renderer2 }, { type: i2.PoI18nPipe }, { type: i3.PoNotificationService }, { type: i0.ChangeDetectorRef }, { type: i4.PoLanguageService }]; }, { inputFile: [{
|
|
434
434
|
type: ViewChild,
|
|
435
435
|
args: ['inputFile', { read: ElementRef, static: true }]
|
|
@@ -440,4 +440,4 @@ PoUploadComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoUploadC
|
|
|
440
440
|
type: ViewChild,
|
|
441
441
|
args: ['uploadButton']
|
|
442
442
|
}] }); })();
|
|
443
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby11cGxvYWQvcG8tdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby11cGxvYWQvcG8tdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFFVixTQUFTLEVBRVQsdUJBQXVCLEVBRXhCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUduRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUVoRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztJQ1RyRCw4Q0FRQztJQUZDLGlOQUFpQixtQ0FBNEIsSUFBQyxnTUFDNUIsb0JBQWEsSUFEZTtJQUdoRCxpQkFBc0I7OztJQVBwQixrRUFBNkMsaUNBQUEsNkNBQUEsK0JBQUE7Ozs7SUFTL0MseUNBUUM7SUFEQyw2S0FBVyxxQkFBYSxJQUFDO0lB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Q3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGtCQUFrQixDQUFDO3dCQUNoRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjt1TkFHbUUsU0FBUztrQkFBNUUsU0FBUzttQkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFDWix5QkFBeUI7a0JBQXRFLFNBQVM7bUJBQUMseUJBQXlCO1lBQ0QsWUFBWTtrQkFBOUMsU0FBUzttQkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IGZvcm1hdEJ5dGVzLCBpc01vYmlsZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLy4uLy4uL3BvLWJ1dHRvbi9wby1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IFBvSTE4blBpcGUgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1pMThuL3BvLWkxOG4ucGlwZSc7XG5pbXBvcnQgeyBQb05vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1ub3RpZmljYXRpb24vcG8tbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9Qcm9ncmVzc1N0YXR1cyB9IGZyb20gJy4uLy4uL3BvLXByb2dyZXNzL2VudW1zL3BvLXByb2dyZXNzLXN0YXR1cy5lbnVtJztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5cbmltcG9ydCB7IFBvVXBsb2FkQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tdXBsb2FkLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBvVXBsb2FkRHJhZ0Ryb3BDb21wb25lbnQgfSBmcm9tICcuL3BvLXVwbG9hZC1kcmFnLWRyb3AvcG8tdXBsb2FkLWRyYWctZHJvcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9VcGxvYWRGaWxlIH0gZnJvbSAnLi9wby11cGxvYWQtZmlsZSc7XG5pbXBvcnQgeyBQb1VwbG9hZFNlcnZpY2UgfSBmcm9tICcuL3BvLXVwbG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7IFBvVXBsb2FkU3RhdHVzIH0gZnJvbSAnLi9wby11cGxvYWQtc3RhdHVzLmVudW0nO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb1VwbG9hZEJhc2VDb21wb25lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby11cGxvYWQtYmFzaWNcIiB0aXRsZT1cIlBPIFVwbG9hZCBCYXNpY1wiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXVwbG9hZC1iYXNpYy9zYW1wbGUtcG8tdXBsb2FkLWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby11cGxvYWQtYmFzaWMvc2FtcGxlLXBvLXVwbG9hZC1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby11cGxvYWQtbGFic1wiIHRpdGxlPVwiUE8gVXBsb2FkIExhYnNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby11cGxvYWQtbGFicy9zYW1wbGUtcG8tdXBsb2FkLWxhYnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXVwbG9hZC1sYWJzL3NhbXBsZS1wby11cGxvYWQtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby11cGxvYWQtcmVzdW1lXCIgdGl0bGU9XCJQTyBVcGxvYWQgLSBSZXN1bWVcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby11cGxvYWQtcmVzdW1lL3NhbXBsZS1wby11cGxvYWQtcmVzdW1lLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby11cGxvYWQtcmVzdW1lL3NhbXBsZS1wby11cGxvYWQtcmVzdW1lLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXVwbG9hZC1yc1wiIHRpdGxlPVwiUE8gVXBsb2FkIC0gUmVhbGl6ZSAmIFNob3dcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby11cGxvYWQtcnMvc2FtcGxlLXBvLXVwbG9hZC1ycy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdXBsb2FkLXJzL3NhbXBsZS1wby11cGxvYWQtcnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tdXBsb2FkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBQb0kxOG5QaXBlLFxuICAgIFBvVXBsb2FkU2VydmljZSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvVXBsb2FkQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9VcGxvYWRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUG9VcGxvYWRDb21wb25lbnQgZXh0ZW5kcyBQb1VwbG9hZEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgnaW5wdXRGaWxlJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBpbnB1dEZpbGU6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoUG9VcGxvYWREcmFnRHJvcENvbXBvbmVudCkgcHJpdmF0ZSBwb1VwbG9hZERyYWdEcm9wQ29tcG9uZW50OiBQb1VwbG9hZERyYWdEcm9wQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCd1cGxvYWRCdXR0b24nKSBwcml2YXRlIHVwbG9hZEJ1dHRvbjogUG9CdXR0b25Db21wb25lbnQ7XG5cbiAgaW5mb0J5VXBsb2FkU3RhdHVzOiB7IFtrZXk6IHN0cmluZ106IHsgdGV4dDogKHBlcmNlbnQ/OiBudW1iZXIpID0+IHN0cmluZzsgaWNvbj86IHN0cmluZyB9IH0gPSB7XG4gICAgW1BvVXBsb2FkU3RhdHVzLlVwbG9hZGVkXToge1xuICAgICAgdGV4dDogKCkgPT4gdGhpcy5saXRlcmFscy5zZW50V2l0aFN1Y2Nlc3MsXG4gICAgICBpY29uOiAncG8taWNvbi1vaydcbiAgICB9LFxuICAgIFtQb1VwbG9hZFN0YXR1cy5FcnJvcl06IHtcbiAgICAgIHRleHQ6ICgpID0+IHRoaXMubGl0ZXJhbHMuZXJyb3JPY2N1cnJlZFxuICAgIH0sXG4gICAgW1BvVXBsb2FkU3RhdHVzLlVwbG9hZGluZ106IHtcbiAgICAgIHRleHQ6IHBlcmNlbnQgPT4gcGVyY2VudCArICclJ1xuICAgIH1cbiAgfTtcblxuICBwcm9ncmVzc1N0YXR1c0J5RmlsZVN0YXR1cyA9IHtcbiAgICBbUG9VcGxvYWRTdGF0dXMuVXBsb2FkZWRdOiBQb1Byb2dyZXNzU3RhdHVzLlN1Y2Nlc3MsXG4gICAgW1BvVXBsb2FkU3RhdHVzLkVycm9yXTogUG9Qcm9ncmVzc1N0YXR1cy5FcnJvclxuICB9O1xuXG4gIHByaXZhdGUgY2FsbGVkQnlDbGVhbklucHV0VmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB1cGxvYWRTZXJ2aWNlOiBQb1VwbG9hZFNlcnZpY2UsXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBpMThuUGlwZTogUG9JMThuUGlwZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbjogUG9Ob3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIodXBsb2FkU2VydmljZSwgbGFuZ3VhZ2VTZXJ2aWNlKTtcbiAgfVxuXG4gIGdldCBkaXNwbGF5RHJhZ0Ryb3AoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZHJhZ0Ryb3AgJiYgIWlzTW9iaWxlKCk7XG4gIH1cblxuICBnZXQgZGlzcGxheVNlbmRCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY3VycmVudEZpbGVzID0gdGhpcy5jdXJyZW50RmlsZXMgfHwgW107XG4gICAgcmV0dXJuICF0aGlzLmhpZGVTZW5kQnV0dG9uICYmICF0aGlzLmF1dG9VcGxvYWQgJiYgY3VycmVudEZpbGVzLmxlbmd0aCA+IDAgJiYgdGhpcy5oYXNGaWxlTm90VXBsb2FkZWQ7XG4gIH1cblxuICBnZXQgc2VsZWN0RmlsZUJ1dHRvbkxhYmVsKCkge1xuICAgIGlmICh0aGlzLmNhbkhhbmRsZURpcmVjdG9yeSkge1xuICAgICAgcmV0dXJuIHRoaXMubGl0ZXJhbHMuc2VsZWN0Rm9sZGVyO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc011bHRpcGxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5saXRlcmFscy5zZWxlY3RGaWxlcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMubGl0ZXJhbHMuc2VsZWN0RmlsZTtcbiAgICB9XG4gIH1cblxuICBnZXQgaGFzTW9yZVRoYW5Gb3VySXRlbXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEZpbGVzICYmIHRoaXMuY3VycmVudEZpbGVzLmxlbmd0aCA+IDQ7XG4gIH1cblxuICBnZXQgaGFzTXVsdGlwbGVGaWxlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsZXMgJiYgdGhpcy5jdXJyZW50RmlsZXMubGVuZ3RoID4gMTtcbiAgfVxuXG4gIGdldCBoYXNGaWxlTm90VXBsb2FkZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5jdXJyZW50RmlsZXMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsZXMuc29tZShmaWxlID0+IGZpbGUuc3RhdHVzICE9PSBQb1VwbG9hZFN0YXR1cy5VcGxvYWRlZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY3VycmVudEZpbGVzID0gdGhpcy5jdXJyZW50RmlsZXMgfHwgW107XG5cbiAgICByZXR1cm4gISEoXG4gICAgICB0aGlzLmhhc0FueUZpbGVVcGxvYWRpbmcoY3VycmVudEZpbGVzKSB8fFxuICAgICAgIXRoaXMudXJsIHx8XG4gICAgICB0aGlzLmRpc2FibGVkIHx8XG4gICAgICB0aGlzLmlzRXhjZWVkZWRGaWxlTGltaXQoY3VycmVudEZpbGVzLmxlbmd0aClcbiAgICApO1xuICB9XG5cbiAgZ2V0IG1heEZpbGVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaXNNdWx0aXBsZSAmJiB0aGlzLmZpbGVSZXN0cmljdGlvbnMgJiYgdGhpcy5maWxlUmVzdHJpY3Rpb25zLm1heEZpbGVzO1xuICB9XG5cbiAgY2FuY2VsKGZpbGU6IFBvVXBsb2FkRmlsZSkge1xuICAgIGlmIChmaWxlLnN0YXR1cyA9PT0gUG9VcGxvYWRTdGF0dXMuVXBsb2FkaW5nKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdG9wVXBsb2FkKGZpbGUpO1xuICAgIH1cblxuICAgIHRoaXMucmVtb3ZlRmlsZShmaWxlKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5hdXRvRm9jdXMpIHtcbiAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICAvKiogTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yICoqbGltcGFyKiogbyhzKSBhcnF1aXZvKHMpIHNlbGVjaW9uYWRvKHMpLiAqL1xuICBjbGVhcigpIHtcbiAgICB0aGlzLmN1cnJlbnRGaWxlcyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnVwZGF0ZU1vZGVsKFtdKTtcbiAgICB0aGlzLmNsZWFuSW5wdXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1bsOnw6NvIHF1ZSBhdHJpYnVpIGZvY28gYW8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogUGFyYSB1dGlsaXrDoS1sYSDDqSBuZWNlc3PDoXJpbyB0ZXIgYSBpbnN0w6JuY2lhIGRvIGNvbXBvbmVudGUgbm8gRE9NLCBwb2RlbmRvIHNlciB1dGlsaXphZG8gbyBWaWV3Q2hpbGQgZGEgc2VndWludGUgZm9ybWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiBpbXBvcnQgeyBQb1VwbG9hZENvbXBvbmVudCB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcbiAgICpcbiAgICogLi4uXG4gICAqXG4gICAqIEBWaWV3Q2hpbGQoUG9VcGxvYWRDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIHVwbG9hZDogUG9VcGxvYWRDb21wb25lbnQ7XG4gICAqXG4gICAqIGZvY3VzVXBsb2FkKCkge1xuICAgKiAgIHRoaXMudXBsb2FkLmZvY3VzKCk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBmb2N1cygpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGlmICh0aGlzLnVwbG9hZEJ1dHRvbikge1xuICAgICAgICB0aGlzLnVwbG9hZEJ1dHRvbi5mb2N1cygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmRpc3BsYXlEcmFnRHJvcCkge1xuICAgICAgICB0aGlzLnBvVXBsb2FkRHJhZ0Ryb3BDb21wb25lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBWZXJpZmljYSBzZSBleGlzdGUgYWxndW0gYXJxdWl2byBzZW5kbyBlbnZpYWRvIGFvIHNlcnZpw6dvLlxuICBoYXNBbnlGaWxlVXBsb2FkaW5nKGZpbGVzOiBBcnJheTxQb1VwbG9hZEZpbGU+KSB7XG4gICAgaWYgKGZpbGVzICYmIGZpbGVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZpbGVzLnNvbWUoZmlsZSA9PiBmaWxlLnN0YXR1cyA9PT0gUG9VcGxvYWRTdGF0dXMuVXBsb2FkaW5nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyByZXRvcm5hIHNlIG8gc3RhdHVzIGRvIGFycXVpdm8gw6kgZGlmZXJlbnRlIGRlIGVudmlhZG9cbiAgaXNBbGxvd0NhbmNlbEV2ZW50KHN0YXR1czogUG9VcGxvYWRTdGF0dXMpIHtcbiAgICByZXR1cm4gc3RhdHVzICE9PSBQb1VwbG9hZFN0YXR1cy5VcGxvYWRlZDtcbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIGRpc3BhcmFkYSBhbyBzZWxlY2lvbmFyIGFsZ3VtIGFycXVpdm8uXG4gIG9uRmlsZUNoYW5nZShldmVudCk6IHZvaWQge1xuICAgIC8vIG5lY2Vzc8OhcmlvIGVzdGUgdHJhdGFtZW50byBxdWFuZG8gcGFyYSBJRSwgcG9pcyBuZWxlIG8gY2hhbmdlIMOpIGRpc3BhcmFkbyBxdWFuZG8gbyBjYW1wbyDDqSBsaW1wYWRvIHRhbWLDqW1cbiAgICBpZiAodGhpcy5jYWxsZWRCeUNsZWFuSW5wdXRWYWx1ZSkge1xuICAgICAgdGhpcy5jYWxsZWRCeUNsZWFuSW5wdXRWYWx1ZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgY29uc3QgZmlsZXMgPSBldmVudC50YXJnZXQuZmlsZXM7XG4gICAgdGhpcy51cGRhdGVGaWxlcyhmaWxlcyk7XG5cbiAgICB0aGlzLmNsZWFuSW5wdXRWYWx1ZSgpO1xuICB9XG5cbiAgb25GaWxlQ2hhbmdlRHJhZ0Ryb3AoZmlsZXMpIHtcbiAgICB0aGlzLnVwZGF0ZUZpbGVzKGZpbGVzKTtcbiAgfVxuXG4gIC8vIFJlbW92ZSBvIGFycXVpdm8gcGFzc2FkbyBwb3IgcGFyw6JtZXRybyBkYSBsaXN0YSBkb3MgYXJxdWl2b3MgY29ycmVudGVzLlxuICByZW1vdmVGaWxlKGZpbGUpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuY3VycmVudEZpbGVzLmluZGV4T2YoZmlsZSk7XG4gICAgdGhpcy5jdXJyZW50RmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIHRoaXMudXBkYXRlTW9kZWwoWy4uLnRoaXMuY3VycmVudEZpbGVzXSk7XG4gIH1cblxuICAvKiogTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yICoqYWJyaXIqKiBhIGphbmVsYSBwYXJhIHNlbGXDp8OjbyBkZSBhcnF1aXZvKHMpLiAqL1xuICBzZWxlY3RGaWxlcygpIHtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkPy4oKTtcbiAgICB0aGlzLmNhbGxlZEJ5Q2xlYW5JbnB1dFZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5pbnB1dEZpbGUubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgc2VuZEZlZWRiYWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNpemVOb3RBbGxvd2VkID4gMCkge1xuICAgICAgY29uc3QgbWluRmlsZVNpemUgPSBmb3JtYXRCeXRlcyh0aGlzLmZpbGVSZXN0cmljdGlvbnMubWluRmlsZVNpemUpO1xuICAgICAgY29uc3QgbWF4RmlsZVNpemUgPSBmb3JtYXRCeXRlcyh0aGlzLmZpbGVSZXN0cmljdGlvbnMubWF4RmlsZVNpemUpO1xuICAgICAgY29uc3QgYXJncyA9IFt0aGlzLnNpemVOb3RBbGxvd2VkLCBtaW5GaWxlU2l6ZSB8fCAnMCcsIG1heEZpbGVTaXplXTtcbiAgICAgIHRoaXMuc2V0UGlwZUFyZ3VtZW50cygnaW52YWxpZFNpemUnLCBhcmdzKTtcbiAgICAgIHRoaXMuc2l6ZU5vdEFsbG93ZWQgPSAwO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmV4dGVuc2lvbk5vdEFsbG93ZWQgPiAwKSB7XG4gICAgICBjb25zdCBhbGxvd2VkRXh0ZW5zaW9uc0Zvcm1hdHRlZCA9IHRoaXMuZmlsZVJlc3RyaWN0aW9ucy5hbGxvd2VkRXh0ZW5zaW9ucy5qb2luKCcsICcpLnRvVXBwZXJDYXNlKCk7XG4gICAgICBjb25zdCBhcmdzID0gW3RoaXMuZXh0ZW5zaW9uTm90QWxsb3dlZCwgYWxsb3dlZEV4dGVuc2lvbnNGb3JtYXR0ZWRdO1xuICAgICAgdGhpcy5zZXRQaXBlQXJndW1lbnRzKCdpbnZhbGlkRm9ybWF0JywgYXJncyk7XG4gICAgICB0aGlzLmV4dGVuc2lvbk5vdEFsbG93ZWQgPSAwO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnF1YW50aXR5Tm90QWxsb3dlZCA+IDApIHtcbiAgICAgIGNvbnN0IGFyZ3MgPSBbdGhpcy5xdWFudGl0eU5vdEFsbG93ZWRdO1xuICAgICAgdGhpcy5zZXRQaXBlQXJndW1lbnRzKCdpbnZhbGlkQW1vdW50JywgYXJncyk7XG4gICAgICB0aGlzLnF1YW50aXR5Tm90QWxsb3dlZCA9IDA7XG4gICAgfVxuICB9XG5cbiAgLyoqIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciAqKmVudmlhcioqIG8ocykgYXJxdWl2byhzKSBzZWxlY2lvbmFkbyhzKS4gKi9cbiAgc2VuZEZpbGVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmN1cnJlbnRGaWxlcyAmJiB0aGlzLmN1cnJlbnRGaWxlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMudXBsb2FkRmlsZXModGhpcy5jdXJyZW50RmlsZXMpO1xuICAgIH1cbiAgfVxuXG4gIHNldERpcmVjdG9yeUF0dHJpYnV0ZShjYW5IYW5kbGVEaXJlY3Rvcnk6IGJvb2xlYW4pIHtcbiAgICBpZiAoY2FuSGFuZGxlRGlyZWN0b3J5KSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmlucHV0RmlsZS5uYXRpdmVFbGVtZW50LCAnd2Via2l0ZGlyZWN0b3J5JywgJ3RydWUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5pbnB1dEZpbGUubmF0aXZlRWxlbWVudCwgJ3dlYmtpdGRpcmVjdG9yeScpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENhc28gbyBjb21wb25lbnRlIGVzdGl2ZXIgbm8gbW9kbyBBdXRvVXBsb2FkLCBvIGFycXVpdm8gdGFtYsOpbSBzZXLDoSByZW1vdmlkbyBkYSBsaXN0YS5cbiAgc3RvcFVwbG9hZChmaWxlOiBQb1VwbG9hZEZpbGUpIHtcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2Uuc3RvcFJlcXVlc3RCeUZpbGUoZmlsZSwgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuYXV0b1VwbG9hZCkge1xuICAgICAgICB0aGlzLnJlbW92ZUZpbGUoZmlsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0b3BVcGxvYWRIYW5kbGVyKGZpbGUpO1xuICAgICAgfVxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIHRyYWNrQnlGbihpbmRleCwgZmlsZTogUG9VcGxvYWRGaWxlKSB7XG4gICAgcmV0dXJuIGZpbGUudWlkO1xuICB9XG5cbiAgLy8gRW52aWEgb3MgYXJxdWl2b3MgcGFzc2Fkb3MgcG9yIHBhcsOibWV0cm8sIGV4Y2V0byBvcyBxdWUgasOhIGZvcmFtIGVudmlhZG9zIGFvIHNlcnZpw6dvLlxuICB1cGxvYWRGaWxlcyhmaWxlczogQXJyYXk8UG9VcGxvYWRGaWxlPikge1xuICAgIGNvbnN0IGZpbGVzRmlsdGVyZWQgPSBmaWxlcy5maWx0ZXIoZmlsZSA9PiBmaWxlLnN0YXR1cyAhPT0gUG9VcGxvYWRTdGF0dXMuVXBsb2FkZWQpO1xuICAgIHRoaXMudXBsb2FkU2VydmljZS51cGxvYWQoXG4gICAgICB0aGlzLnVybCxcbiAgICAgIGZpbGVzRmlsdGVyZWQsXG4gICAgICB0aGlzLmhlYWRlcnMsXG4gICAgICB0aGlzLm9uVXBsb2FkLFxuICAgICAgKGZpbGUsIHBlcmNlbnQpOiBhbnkgPT4ge1xuICAgICAgICAvLyBVUExPQURJTkdcbiAgICAgICAgdGhpcy51cGxvYWRpbmdIYW5kbGVyKGZpbGUsIHBlcmNlbnQpO1xuICAgICAgfSxcbiAgICAgIChmaWxlLCBldmVudFJlc3BvbnNlKTogYW55ID0+IHtcbiAgICAgICAgLy8gU1VDQ0VTU1xuICAgICAgICB0aGlzLnJlc3BvbnNlSGFuZGxlcihmaWxlLCBQb1VwbG9hZFN0YXR1cy5VcGxvYWRlZCk7XG4gICAgICAgIHRoaXMub25TdWNjZXNzLmVtaXQoZXZlbnRSZXNwb25zZSk7XG4gICAgICB9LFxuICAgICAgKGZpbGUsIGV2ZW50RXJyb3IpOiBhbnkgPT4ge1xuICAgICAgICAvLyBFcnJvclxuICAgICAgICB0aGlzLnJlc3BvbnNlSGFuZGxlcihmaWxlLCBQb1VwbG9hZFN0YXR1cy5FcnJvcik7XG4gICAgICAgIHRoaXMub25FcnJvci5lbWl0KGV2ZW50RXJyb3IpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuSW5wdXRWYWx1ZSgpIHtcbiAgICB0aGlzLmNhbGxlZEJ5Q2xlYW5JbnB1dFZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLmlucHV0RmlsZS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gIH1cblxuICAvLyBmdW7Dp8OjbyBkaXNwYXJhZGEgbmEgcmVzcG9zdGEgZG8gc3VjZXNzbyBvdSBlcnJvclxuICBwcml2YXRlIHJlc3BvbnNlSGFuZGxlcihmaWxlOiBQb1VwbG9hZEZpbGUsIHN0YXR1czogUG9VcGxvYWRTdGF0dXMpIHtcbiAgICBmaWxlLnN0YXR1cyA9IHN0YXR1cztcbiAgICBmaWxlLnBlcmNlbnQgPSAxMDA7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8vIG3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciBzZXRhciBvcyBhcmd1bWVudG9zIGRvIGkxOG5QaXBlIGRlIGFjb3JkbyBjb20gYSByZXN0cmnDp8Ojby5cbiAgcHJpdmF0ZSBzZXRQaXBlQXJndW1lbnRzKGxpdGVyYWxBdHRyaWJ1dGVzOiBzdHJpbmcsIGxpdGVyYWxBcmd1bWVudHM/KSB7XG4gICAgY29uc3QgcGlwZUFyZ3VtZW50cyA9IHRoaXMuaTE4blBpcGUudHJhbnNmb3JtKHRoaXMubGl0ZXJhbHNbbGl0ZXJhbEF0dHJpYnV0ZXNdLCBsaXRlcmFsQXJndW1lbnRzKTtcbiAgICB0aGlzLm5vdGlmaWNhdGlvbi5pbmZvcm1hdGlvbihwaXBlQXJndW1lbnRzKTtcbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIGRpc3BhcmFkYSBhbyBwYXJhciB1bSBlbnZpbyBkZSBhcnF1aXZvLlxuICBwcml2YXRlIHN0b3BVcGxvYWRIYW5kbGVyKGZpbGU6IFBvVXBsb2FkRmlsZSkge1xuICAgIGZpbGUuc3RhdHVzID0gUG9VcGxvYWRTdGF0dXMuTm9uZTtcbiAgICBmaWxlLnBlcmNlbnQgPSAwO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUZpbGVzKGZpbGVzKSB7XG4gICAgdGhpcy5jdXJyZW50RmlsZXMgPSB0aGlzLnBhcnNlRmlsZXMoZmlsZXMpO1xuXG4gICAgdGhpcy51cGRhdGVNb2RlbChbLi4udGhpcy5jdXJyZW50RmlsZXNdKTtcblxuICAgIGlmICh0aGlzLmF1dG9VcGxvYWQpIHtcbiAgICAgIHRoaXMudXBsb2FkRmlsZXModGhpcy5jdXJyZW50RmlsZXMpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEF0dWFsaXphIG8gbmdNb2RlbCBwYXJhIG9zIGFycXVpdm9zIHBhc3NhZG9zIHBvciBwYXLDom1ldHJvLlxuICBwcml2YXRlIHVwZGF0ZU1vZGVsKGZpbGVzOiBBcnJheTxQb1VwbG9hZEZpbGU+KSB7XG4gICAgY29uc3QgbW9kZWxGaWxlczogQXJyYXk8UG9VcGxvYWRGaWxlPiA9IHRoaXMubWFwQ2xlYW5VcGxvYWRGaWxlcyhmaWxlcyk7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlID8gdGhpcy5vbk1vZGVsQ2hhbmdlKG1vZGVsRmlsZXMpIDogdGhpcy5uZ01vZGVsQ2hhbmdlLmVtaXQobW9kZWxGaWxlcyk7XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBkaXNwYXJhZGEgZW5xdWFudG8gbyBhcnF1aXZvIGVzdMOhIHNlbmRvIGVudmlhZG8gYW8gc2VydmnDp28uXG4gIHByaXZhdGUgdXBsb2FkaW5nSGFuZGxlcihmaWxlOiBhbnksIHBlcmNlbnQ6IG51bWJlcikge1xuICAgIGZpbGUuc3RhdHVzID0gUG9VcGxvYWRTdGF0dXMuVXBsb2FkaW5nO1xuICAgIGZpbGUucGVyY2VudCA9IHBlcmNlbnQ7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8vIHJldG9ybmEgb3Mgb2JqZXRvcyBkbyBhcnJheSBzZW0gYXMgcHJvcHJpZWRhZGVzOiBwZXJjZW50IGUgZGlzcGxheU5hbWVcbiAgcHJpdmF0ZSBtYXBDbGVhblVwbG9hZEZpbGVzKGZpbGVzOiBBcnJheTxQb1VwbG9hZEZpbGU+KTogQXJyYXk8UG9VcGxvYWRGaWxlPiB7XG4gICAgY29uc3QgbWFwZWRCeVVwbG9hZEZpbGUgPSBwcm9ncmVzc0ZpbGUgPT4ge1xuICAgICAgY29uc3QgeyBwZXJjZW50LCBkaXNwbGF5TmFtZSwgLi4udXBsb2FkRmlsZSB9ID0gcHJvZ3Jlc3NGaWxlO1xuXG4gICAgICByZXR1cm4gdXBsb2FkRmlsZTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGZpbGVzLm1hcChtYXBlZEJ5VXBsb2FkRmlsZSk7XG4gIH1cbn1cbiIsIjxwby1maWVsZC1jb250YWluZXIgW3AtbGFiZWxdPVwibGFiZWxcIiBbcC1oZWxwXT1cImhlbHBcIiBbcC1vcHRpb25hbF09XCIhcmVxdWlyZWQgJiYgb3B0aW9uYWxcIj5cbiAgPGRpdiBjbGFzcz1cInBvLXVwbG9hZFwiPlxuICAgIDxpbnB1dFxuICAgICAgI2lucHV0RmlsZVxuICAgICAgY2xhc3M9XCJwby11cGxvYWQtaW5wdXRcIlxuICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgW2FjY2VwdF09XCJhbGxvd2VkRXh0ZW5zaW9uc1wiXG4gICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgW211bHRpcGxlXT1cImlzTXVsdGlwbGVcIlxuICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgIChjaGFuZ2UpPVwib25GaWxlQ2hhbmdlKCRldmVudClcIlxuICAgIC8+XG5cbiAgICA8cG8tdXBsb2FkLWRyYWctZHJvcFxuICAgICAgKm5nSWY9XCJkaXNwbGF5RHJhZ0Ryb3BcIlxuICAgICAgW3AtZGlyZWN0b3J5LWNvbXBhdGlibGVdPVwiY2FuSGFuZGxlRGlyZWN0b3J5XCJcbiAgICAgIFtwLWRpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgW3AtZHJhZy1kcm9wLWhlaWdodF09XCJkcmFnRHJvcEhlaWdodFwiXG4gICAgICBbcC1saXRlcmFsc109XCJsaXRlcmFsc1wiXG4gICAgICAocC1maWxlLWNoYW5nZSk9XCJvbkZpbGVDaGFuZ2VEcmFnRHJvcCgkZXZlbnQpXCJcbiAgICAgIChwLXNlbGVjdC1maWxlcyk9XCJzZWxlY3RGaWxlcygpXCJcbiAgICA+XG4gICAgPC9wby11cGxvYWQtZHJhZy1kcm9wPlxuXG4gICAgPHBvLWJ1dHRvblxuICAgICAgKm5nSWY9XCIhaGlkZVNlbGVjdEJ1dHRvbiAmJiAhZGlzcGxheURyYWdEcm9wXCJcbiAgICAgICN1cGxvYWRCdXR0b25cbiAgICAgIGNsYXNzPVwicG8tdXBsb2FkLWJ1dHRvblwiXG4gICAgICBmb3I9XCJmaWxlXCJcbiAgICAgIFtwLWRpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgW3AtbGFiZWxdPVwic2VsZWN0RmlsZUJ1dHRvbkxhYmVsXCJcbiAgICAgIChwLWNsaWNrKT1cInNlbGVjdEZpbGVzKClcIlxuICAgID5cbiAgICA8L3BvLWJ1dHRvbj5cblxuICAgIDxwby11cGxvYWQtZmlsZS1yZXN0cmljdGlvbnNcbiAgICAgICpuZ0lmPVwiZmlsZVJlc3RyaWN0aW9ucyAmJiAhaGlkZVJlc3RyaWN0aW9uc0luZm9cIlxuICAgICAgY2xhc3M9XCJwby11cGxvYWQtZmlsZS1yZXN0cmljdGlvbnNcIlxuICAgICAgW25nQ2xhc3NdPVwieyAncG8tdXBsb2FkLWZpbGUtcmVzdHJpY3Rpb25zLWRyYWctZHJvcCc6IGRpc3BsYXlEcmFnRHJvcCB9XCJcbiAgICAgIFtwLWFsbG93ZWQtZXh0ZW5zaW9uc109XCJmaWxlUmVzdHJpY3Rpb25zPy5hbGxvd2VkRXh0ZW5zaW9uc1wiXG4gICAgICBbcC1tYXgtZmlsZXNdPVwibWF4RmlsZXNcIlxuICAgICAgW3AtbWF4LWZpbGUtc2l6ZV09XCJmaWxlUmVzdHJpY3Rpb25zPy5tYXhGaWxlU2l6ZVwiXG4gICAgICBbcC1taW4tZmlsZS1zaXplXT1cImZpbGVSZXN0cmljdGlvbnM/Lm1pbkZpbGVTaXplXCJcbiAgICA+XG4gICAgPC9wby11cGxvYWQtZmlsZS1yZXN0cmljdGlvbnM+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiY3VycmVudEZpbGVzICYmIGN1cnJlbnRGaWxlcy5sZW5ndGhcIiBjbGFzcz1cInBvLXVwbG9hZC1wcm9ncmVzcy1jb250YWluZXJcIj5cbiAgICAgIDxwby1jb250YWluZXJcbiAgICAgICAgcC1uby1zaGFkb3dcbiAgICAgICAgW3AtaGVpZ2h0XT1cImhhc01vcmVUaGFuRm91ckl0ZW1zID8gMjgwIDogJ2F1dG8nXCJcbiAgICAgICAgW3Atbm8tYm9yZGVyXT1cIiFoYXNNb3JlVGhhbkZvdXJJdGVtc1wiXG4gICAgICAgIFtwLW5vLXBhZGRpbmddPVwiIWhhc01vcmVUaGFuRm91ckl0ZW1zXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7ICdwby11cGxvYWQtcHJvZ3Jlc3MtY29udGFpbmVyLWFyZWEgcG8tcHQtMiBwby1wbC0xJzogaGFzTW9yZVRoYW5Gb3VySXRlbXMgfVwiPlxuICAgICAgICAgIDxwby1wcm9ncmVzc1xuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZpbGUgb2YgY3VycmVudEZpbGVzOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxuICAgICAgICAgICAgW3AtaW5mb109XCJpbmZvQnlVcGxvYWRTdGF0dXNbZmlsZS5zdGF0dXNdPy50ZXh0KGZpbGUucGVyY2VudClcIlxuICAgICAgICAgICAgW3AtaW5mby1pY29uXT1cImluZm9CeVVwbG9hZFN0YXR1c1tmaWxlLnN0YXR1c10/Lmljb25cIlxuICAgICAgICAgICAgW3Atc3RhdHVzXT1cInByb2dyZXNzU3RhdHVzQnlGaWxlU3RhdHVzW2ZpbGUuc3RhdHVzXVwiXG4gICAgICAgICAgICBbcC10ZXh0XT1cImZpbGUuZGlzcGxheU5hbWVcIlxuICAgICAgICAgICAgW3AtdmFsdWVdPVwiZmlsZS5wZXJjZW50XCJcbiAgICAgICAgICAgIChwLWNhbmNlbCk9XCJjYW5jZWwoZmlsZSlcIlxuICAgICAgICAgICAgKHAtcmV0cnkpPVwidXBsb2FkRmlsZXMoW2ZpbGVdKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvcG8tcHJvZ3Jlc3M+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9wby1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8cG8tYnV0dG9uXG4gICAgICAqbmdJZj1cImRpc3BsYXlTZW5kQnV0dG9uXCJcbiAgICAgIGNsYXNzPVwicG8tdXBsb2FkLXNlbmQtYnV0dG9uXCJcbiAgICAgIFtjbGFzcy5wby1tdC0zXT1cImhhc01vcmVUaGFuRm91ckl0ZW1zXCJcbiAgICAgIHAtdHlwZT1cInByaW1hcnlcIlxuICAgICAgW3AtZGlzYWJsZWRdPVwiaGFzQW55RmlsZVVwbG9hZGluZyhjdXJyZW50RmlsZXMpXCJcbiAgICAgIFtwLWxhYmVsXT1cImxpdGVyYWxzLnN0YXJ0U2VuZGluZ1wiXG4gICAgICAocC1jbGljayk9XCJ1cGxvYWRGaWxlcyhjdXJyZW50RmlsZXMpXCJcbiAgICA+XG4gICAgPC9wby1idXR0b24+XG4gIDwvZGl2PlxuPC9wby1maWVsZC1jb250YWluZXI+XG4iXX0=
|
|
443
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby11cGxvYWQvcG8tdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby11cGxvYWQvcG8tdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFFVixTQUFTLEVBRVQsdUJBQXVCLEVBRXhCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUduRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUVoRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztJQ1RyRCw4Q0FRQztJQUZDLGlOQUFpQixtQ0FBNEIsSUFBQyxnTUFDNUIsb0JBQWEsSUFEZTtJQUdoRCxpQkFBc0I7OztJQVBwQixrRUFBNkMsaUNBQUEsNkNBQUEsK0JBQUE7Ozs7SUFTL0MseUNBUUM7SUFEQyw2S0FBVyxxQkFBYSxJQUFDO0lB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Q3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGtCQUFrQixDQUFDO3dCQUNoRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjt1TkFHbUUsU0FBUztrQkFBNUUsU0FBUzttQkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFDWix5QkFBeUI7a0JBQXRFLFNBQVM7bUJBQUMseUJBQXlCO1lBQ0QsWUFBWTtrQkFBOUMsU0FBUzttQkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IGZvcm1hdEJ5dGVzLCBpc01vYmlsZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLy4uLy4uL3BvLWJ1dHRvbi9wby1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IFBvSTE4blBpcGUgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1pMThuL3BvLWkxOG4ucGlwZSc7XG5pbXBvcnQgeyBQb05vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1ub3RpZmljYXRpb24vcG8tbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9Qcm9ncmVzc1N0YXR1cyB9IGZyb20gJy4uLy4uL3BvLXByb2dyZXNzL2VudW1zL3BvLXByb2dyZXNzLXN0YXR1cy5lbnVtJztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5cbmltcG9ydCB7IFBvVXBsb2FkQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tdXBsb2FkLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBvVXBsb2FkRHJhZ0Ryb3BDb21wb25lbnQgfSBmcm9tICcuL3BvLXVwbG9hZC1kcmFnLWRyb3AvcG8tdXBsb2FkLWRyYWctZHJvcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9VcGxvYWRGaWxlIH0gZnJvbSAnLi9wby11cGxvYWQtZmlsZSc7XG5pbXBvcnQgeyBQb1VwbG9hZFNlcnZpY2UgfSBmcm9tICcuL3BvLXVwbG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7IFBvVXBsb2FkU3RhdHVzIH0gZnJvbSAnLi9wby11cGxvYWQtc3RhdHVzLmVudW0nO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb1VwbG9hZEJhc2VDb21wb25lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby11cGxvYWQtYmFzaWNcIiB0aXRsZT1cIlBPIFVwbG9hZCBCYXNpY1wiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXVwbG9hZC1iYXNpYy9zYW1wbGUtcG8tdXBsb2FkLWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby11cGxvYWQtYmFzaWMvc2FtcGxlLXBvLXVwbG9hZC1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby11cGxvYWQtbGFic1wiIHRpdGxlPVwiUE8gVXBsb2FkIExhYnNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby11cGxvYWQtbGFicy9zYW1wbGUtcG8tdXBsb2FkLWxhYnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXVwbG9hZC1sYWJzL3NhbXBsZS1wby11cGxvYWQtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby11cGxvYWQtcmVzdW1lXCIgdGl0bGU9XCJQTyBVcGxvYWQgLSBSZXN1bWVcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby11cGxvYWQtcmVzdW1lL3NhbXBsZS1wby11cGxvYWQtcmVzdW1lLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby11cGxvYWQtcmVzdW1lL3NhbXBsZS1wby11cGxvYWQtcmVzdW1lLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXVwbG9hZC1yc1wiIHRpdGxlPVwiUE8gVXBsb2FkIC0gUmVhbGl6ZSAmIFNob3dcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby11cGxvYWQtcnMvc2FtcGxlLXBvLXVwbG9hZC1ycy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdXBsb2FkLXJzL3NhbXBsZS1wby11cGxvYWQtcnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tdXBsb2FkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBQb0kxOG5QaXBlLFxuICAgIFBvVXBsb2FkU2VydmljZSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvVXBsb2FkQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9VcGxvYWRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUG9VcGxvYWRDb21wb25lbnQgZXh0ZW5kcyBQb1VwbG9hZEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgnaW5wdXRGaWxlJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBpbnB1dEZpbGU6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoUG9VcGxvYWREcmFnRHJvcENvbXBvbmVudCkgcHJpdmF0ZSBwb1VwbG9hZERyYWdEcm9wQ29tcG9uZW50OiBQb1VwbG9hZERyYWdEcm9wQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCd1cGxvYWRCdXR0b24nKSBwcml2YXRlIHVwbG9hZEJ1dHRvbjogUG9CdXR0b25Db21wb25lbnQ7XG5cbiAgaW5mb0J5VXBsb2FkU3RhdHVzOiB7IFtrZXk6IHN0cmluZ106IHsgdGV4dDogKHBlcmNlbnQ/OiBudW1iZXIpID0+IHN0cmluZzsgaWNvbj86IHN0cmluZyB9IH0gPSB7XG4gICAgW1BvVXBsb2FkU3RhdHVzLlVwbG9hZGVkXToge1xuICAgICAgdGV4dDogKCkgPT4gdGhpcy5saXRlcmFscy5zZW50V2l0aFN1Y2Nlc3MsXG4gICAgICBpY29uOiAncG8taWNvbi1vaydcbiAgICB9LFxuICAgIFtQb1VwbG9hZFN0YXR1cy5FcnJvcl06IHtcbiAgICAgIHRleHQ6ICgpID0+IHRoaXMubGl0ZXJhbHMuZXJyb3JPY2N1cnJlZFxuICAgIH0sXG4gICAgW1BvVXBsb2FkU3RhdHVzLlVwbG9hZGluZ106IHtcbiAgICAgIHRleHQ6IHBlcmNlbnQgPT4gcGVyY2VudCArICclJ1xuICAgIH1cbiAgfTtcblxuICBwcm9ncmVzc1N0YXR1c0J5RmlsZVN0YXR1cyA9IHtcbiAgICBbUG9VcGxvYWRTdGF0dXMuVXBsb2FkZWRdOiBQb1Byb2dyZXNzU3RhdHVzLlN1Y2Nlc3MsXG4gICAgW1BvVXBsb2FkU3RhdHVzLkVycm9yXTogUG9Qcm9ncmVzc1N0YXR1cy5FcnJvclxuICB9O1xuXG4gIHByaXZhdGUgY2FsbGVkQnlDbGVhbklucHV0VmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB1cGxvYWRTZXJ2aWNlOiBQb1VwbG9hZFNlcnZpY2UsXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBpMThuUGlwZTogUG9JMThuUGlwZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbjogUG9Ob3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIodXBsb2FkU2VydmljZSwgbGFuZ3VhZ2VTZXJ2aWNlKTtcbiAgfVxuXG4gIGdldCBkaXNwbGF5RHJhZ0Ryb3AoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZHJhZ0Ryb3AgJiYgIWlzTW9iaWxlKCk7XG4gIH1cblxuICBnZXQgZGlzcGxheVNlbmRCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY3VycmVudEZpbGVzID0gdGhpcy5jdXJyZW50RmlsZXMgfHwgW107XG4gICAgcmV0dXJuICF0aGlzLmhpZGVTZW5kQnV0dG9uICYmICF0aGlzLmF1dG9VcGxvYWQgJiYgY3VycmVudEZpbGVzLmxlbmd0aCA+IDAgJiYgdGhpcy5oYXNGaWxlTm90VXBsb2FkZWQ7XG4gIH1cblxuICBnZXQgc2VsZWN0RmlsZUJ1dHRvbkxhYmVsKCkge1xuICAgIGlmICh0aGlzLmNhbkhhbmRsZURpcmVjdG9yeSkge1xuICAgICAgcmV0dXJuIHRoaXMubGl0ZXJhbHMuc2VsZWN0Rm9sZGVyO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc011bHRpcGxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5saXRlcmFscy5zZWxlY3RGaWxlcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMubGl0ZXJhbHMuc2VsZWN0RmlsZTtcbiAgICB9XG4gIH1cblxuICBnZXQgaGFzTW9yZVRoYW5Gb3VySXRlbXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEZpbGVzICYmIHRoaXMuY3VycmVudEZpbGVzLmxlbmd0aCA+IDQ7XG4gIH1cblxuICBnZXQgaGFzTXVsdGlwbGVGaWxlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsZXMgJiYgdGhpcy5jdXJyZW50RmlsZXMubGVuZ3RoID4gMTtcbiAgfVxuXG4gIGdldCBoYXNGaWxlTm90VXBsb2FkZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5jdXJyZW50RmlsZXMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsZXMuc29tZShmaWxlID0+IGZpbGUuc3RhdHVzICE9PSBQb1VwbG9hZFN0YXR1cy5VcGxvYWRlZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY3VycmVudEZpbGVzID0gdGhpcy5jdXJyZW50RmlsZXMgfHwgW107XG5cbiAgICByZXR1cm4gISEoXG4gICAgICB0aGlzLmhhc0FueUZpbGVVcGxvYWRpbmcoY3VycmVudEZpbGVzKSB8fFxuICAgICAgIXRoaXMudXJsIHx8XG4gICAgICB0aGlzLmRpc2FibGVkIHx8XG4gICAgICB0aGlzLmlzRXhjZWVkZWRGaWxlTGltaXQoY3VycmVudEZpbGVzLmxlbmd0aClcbiAgICApO1xuICB9XG5cbiAgZ2V0IG1heEZpbGVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaXNNdWx0aXBsZSAmJiB0aGlzLmZpbGVSZXN0cmljdGlvbnMgJiYgdGhpcy5maWxlUmVzdHJpY3Rpb25zLm1heEZpbGVzO1xuICB9XG5cbiAgY2FuY2VsKGZpbGU6IFBvVXBsb2FkRmlsZSkge1xuICAgIGlmIChmaWxlLnN0YXR1cyA9PT0gUG9VcGxvYWRTdGF0dXMuVXBsb2FkaW5nKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdG9wVXBsb2FkKGZpbGUpO1xuICAgIH1cblxuICAgIHRoaXMucmVtb3ZlRmlsZShmaWxlKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5hdXRvRm9jdXMpIHtcbiAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICAvKiogTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yICoqbGltcGFyKiogbyhzKSBhcnF1aXZvKHMpIHNlbGVjaW9uYWRvKHMpLiAqL1xuICBjbGVhcigpIHtcbiAgICB0aGlzLmN1cnJlbnRGaWxlcyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnVwZGF0ZU1vZGVsKFtdKTtcbiAgICB0aGlzLmNsZWFuSW5wdXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1bsOnw6NvIHF1ZSBhdHJpYnVpIGZvY28gYW8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogUGFyYSB1dGlsaXrDoS1sYSDDqSBuZWNlc3PDoXJpbyB0ZXIgYSBpbnN0w6JuY2lhIGRvIGNvbXBvbmVudGUgbm8gRE9NLCBwb2RlbmRvIHNlciB1dGlsaXphZG8gbyBWaWV3Q2hpbGQgZGEgc2VndWludGUgZm9ybWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiBpbXBvcnQgeyBQb1VwbG9hZENvbXBvbmVudCB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcbiAgICpcbiAgICogLi4uXG4gICAqXG4gICAqIEBWaWV3Q2hpbGQoUG9VcGxvYWRDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIHVwbG9hZDogUG9VcGxvYWRDb21wb25lbnQ7XG4gICAqXG4gICAqIGZvY3VzVXBsb2FkKCkge1xuICAgKiAgIHRoaXMudXBsb2FkLmZvY3VzKCk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBmb2N1cygpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGlmICh0aGlzLnVwbG9hZEJ1dHRvbikge1xuICAgICAgICB0aGlzLnVwbG9hZEJ1dHRvbi5mb2N1cygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmRpc3BsYXlEcmFnRHJvcCkge1xuICAgICAgICB0aGlzLnBvVXBsb2FkRHJhZ0Ryb3BDb21wb25lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBWZXJpZmljYSBzZSBleGlzdGUgYWxndW0gYXJxdWl2byBzZW5kbyBlbnZpYWRvIGFvIHNlcnZpw6dvLlxuICBoYXNBbnlGaWxlVXBsb2FkaW5nKGZpbGVzOiBBcnJheTxQb1VwbG9hZEZpbGU+KSB7XG4gICAgaWYgKGZpbGVzICYmIGZpbGVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZpbGVzLnNvbWUoZmlsZSA9PiBmaWxlLnN0YXR1cyA9PT0gUG9VcGxvYWRTdGF0dXMuVXBsb2FkaW5nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyByZXRvcm5hIHNlIG8gc3RhdHVzIGRvIGFycXVpdm8gw6kgZGlmZXJlbnRlIGRlIGVudmlhZG9cbiAgaXNBbGxvd0NhbmNlbEV2ZW50KHN0YXR1czogUG9VcGxvYWRTdGF0dXMpIHtcbiAgICByZXR1cm4gc3RhdHVzICE9PSBQb1VwbG9hZFN0YXR1cy5VcGxvYWRlZDtcbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIGRpc3BhcmFkYSBhbyBzZWxlY2lvbmFyIGFsZ3VtIGFycXVpdm8uXG4gIG9uRmlsZUNoYW5nZShldmVudCk6IHZvaWQge1xuICAgIC8vIG5lY2Vzc8OhcmlvIGVzdGUgdHJhdGFtZW50byBxdWFuZG8gcGFyYSBJRSwgcG9pcyBuZWxlIG8gY2hhbmdlIMOpIGRpc3BhcmFkbyBxdWFuZG8gbyBjYW1wbyDDqSBsaW1wYWRvIHRhbWLDqW1cbiAgICBpZiAodGhpcy5jYWxsZWRCeUNsZWFuSW5wdXRWYWx1ZSkge1xuICAgICAgdGhpcy5jYWxsZWRCeUNsZWFuSW5wdXRWYWx1ZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgY29uc3QgZmlsZXMgPSBldmVudC50YXJnZXQuZmlsZXM7XG4gICAgdGhpcy51cGRhdGVGaWxlcyhmaWxlcyk7XG5cbiAgICB0aGlzLmNsZWFuSW5wdXRWYWx1ZSgpO1xuICB9XG5cbiAgb25GaWxlQ2hhbmdlRHJhZ0Ryb3AoZmlsZXMpIHtcbiAgICB0aGlzLnVwZGF0ZUZpbGVzKGZpbGVzKTtcbiAgfVxuXG4gIC8vIFJlbW92ZSBvIGFycXVpdm8gcGFzc2FkbyBwb3IgcGFyw6JtZXRybyBkYSBsaXN0YSBkb3MgYXJxdWl2b3MgY29ycmVudGVzLlxuICByZW1vdmVGaWxlKGZpbGUpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuY3VycmVudEZpbGVzLmluZGV4T2YoZmlsZSk7XG4gICAgdGhpcy5jdXJyZW50RmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIHRoaXMudXBkYXRlTW9kZWwoWy4uLnRoaXMuY3VycmVudEZpbGVzXSk7XG4gIH1cblxuICAvKiogTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yICoqYWJyaXIqKiBhIGphbmVsYSBwYXJhIHNlbGXDp8OjbyBkZSBhcnF1aXZvKHMpLiAqL1xuICBzZWxlY3RGaWxlcygpIHtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkPy4oKTtcbiAgICB0aGlzLmNhbGxlZEJ5Q2xlYW5JbnB1dFZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5pbnB1dEZpbGUubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgc2VuZEZlZWRiYWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNpemVOb3RBbGxvd2VkID4gMCkge1xuICAgICAgY29uc3QgbWluRmlsZVNpemUgPSBmb3JtYXRCeXRlcyh0aGlzLmZpbGVSZXN0cmljdGlvbnMubWluRmlsZVNpemUpO1xuICAgICAgY29uc3QgbWF4RmlsZVNpemUgPSBmb3JtYXRCeXRlcyh0aGlzLmZpbGVSZXN0cmljdGlvbnMubWF4RmlsZVNpemUpO1xuICAgICAgY29uc3QgYXJncyA9IFt0aGlzLnNpemVOb3RBbGxvd2VkLCBtaW5GaWxlU2l6ZSB8fCAnMCcsIG1heEZpbGVTaXplXTtcbiAgICAgIHRoaXMuc2V0UGlwZUFyZ3VtZW50cygnaW52YWxpZFNpemUnLCBhcmdzKTtcbiAgICAgIHRoaXMuc2l6ZU5vdEFsbG93ZWQgPSAwO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmV4dGVuc2lvbk5vdEFsbG93ZWQgPiAwKSB7XG4gICAgICBjb25zdCBhbGxvd2VkRXh0ZW5zaW9uc0Zvcm1hdHRlZCA9IHRoaXMuZmlsZVJlc3RyaWN0aW9ucy5hbGxvd2VkRXh0ZW5zaW9ucy5qb2luKCcsICcpLnRvVXBwZXJDYXNlKCk7XG4gICAgICBjb25zdCBhcmdzID0gW3RoaXMuZXh0ZW5zaW9uTm90QWxsb3dlZCwgYWxsb3dlZEV4dGVuc2lvbnNGb3JtYXR0ZWRdO1xuICAgICAgdGhpcy5zZXRQaXBlQXJndW1lbnRzKCdpbnZhbGlkRm9ybWF0JywgYXJncyk7XG4gICAgICB0aGlzLmV4dGVuc2lvbk5vdEFsbG93ZWQgPSAwO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnF1YW50aXR5Tm90QWxsb3dlZCA+IDApIHtcbiAgICAgIGNvbnN0IGFyZ3MgPSBbdGhpcy5xdWFudGl0eU5vdEFsbG93ZWRdO1xuICAgICAgdGhpcy5zZXRQaXBlQXJndW1lbnRzKCdpbnZhbGlkQW1vdW50JywgYXJncyk7XG4gICAgICB0aGlzLnF1YW50aXR5Tm90QWxsb3dlZCA9IDA7XG4gICAgfVxuICB9XG5cbiAgLyoqIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciAqKmVudmlhcioqIG8ocykgYXJxdWl2byhzKSBzZWxlY2lvbmFkbyhzKS4gKi9cbiAgc2VuZEZpbGVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmN1cnJlbnRGaWxlcyAmJiB0aGlzLmN1cnJlbnRGaWxlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMudXBsb2FkRmlsZXModGhpcy5jdXJyZW50RmlsZXMpO1xuICAgIH1cbiAgfVxuXG4gIHNldERpcmVjdG9yeUF0dHJpYnV0ZShjYW5IYW5kbGVEaXJlY3Rvcnk6IGJvb2xlYW4pIHtcbiAgICBpZiAoY2FuSGFuZGxlRGlyZWN0b3J5KSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmlucHV0RmlsZS5uYXRpdmVFbGVtZW50LCAnd2Via2l0ZGlyZWN0b3J5JywgJ3RydWUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5pbnB1dEZpbGUubmF0aXZlRWxlbWVudCwgJ3dlYmtpdGRpcmVjdG9yeScpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENhc28gbyBjb21wb25lbnRlIGVzdGl2ZXIgbm8gbW9kbyBBdXRvVXBsb2FkLCBvIGFycXVpdm8gdGFtYsOpbSBzZXLDoSByZW1vdmlkbyBkYSBsaXN0YS5cbiAgc3RvcFVwbG9hZChmaWxlOiBQb1VwbG9hZEZpbGUpIHtcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2Uuc3RvcFJlcXVlc3RCeUZpbGUoZmlsZSwgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuYXV0b1VwbG9hZCkge1xuICAgICAgICB0aGlzLnJlbW92ZUZpbGUoZmlsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0b3BVcGxvYWRIYW5kbGVyKGZpbGUpO1xuICAgICAgfVxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIHRyYWNrQnlGbihpbmRleCwgZmlsZTogUG9VcGxvYWRGaWxlKSB7XG4gICAgcmV0dXJuIGZpbGUudWlkO1xuICB9XG5cbiAgLy8gRW52aWEgb3MgYXJxdWl2b3MgcGFzc2Fkb3MgcG9yIHBhcsOibWV0cm8sIGV4Y2V0byBvcyBxdWUgasOhIGZvcmFtIGVudmlhZG9zIGFvIHNlcnZpw6dvLlxuICB1cGxvYWRGaWxlcyhmaWxlczogQXJyYXk8UG9VcGxvYWRGaWxlPikge1xuICAgIGNvbnN0IGZpbGVzRmlsdGVyZWQgPSBmaWxlcy5maWx0ZXIoZmlsZSA9PiBmaWxlLnN0YXR1cyAhPT0gUG9VcGxvYWRTdGF0dXMuVXBsb2FkZWQpO1xuICAgIHRoaXMudXBsb2FkU2VydmljZS51cGxvYWQoXG4gICAgICB0aGlzLnVybCxcbiAgICAgIGZpbGVzRmlsdGVyZWQsXG4gICAgICB0aGlzLmhlYWRlcnMsXG4gICAgICB0aGlzLm9uVXBsb2FkLFxuICAgICAgKGZpbGUsIHBlcmNlbnQpOiBhbnkgPT4ge1xuICAgICAgICAvLyBVUExPQURJTkdcbiAgICAgICAgdGhpcy51cGxvYWRpbmdIYW5kbGVyKGZpbGUsIHBlcmNlbnQpO1xuICAgICAgfSxcbiAgICAgIChmaWxlLCBldmVudFJlc3BvbnNlKTogYW55ID0+IHtcbiAgICAgICAgLy8gU1VDQ0VTU1xuICAgICAgICB0aGlzLnJlc3BvbnNlSGFuZGxlcihmaWxlLCBQb1VwbG9hZFN0YXR1cy5VcGxvYWRlZCk7XG4gICAgICAgIHRoaXMub25TdWNjZXNzLmVtaXQoZXZlbnRSZXNwb25zZSk7XG4gICAgICB9LFxuICAgICAgKGZpbGUsIGV2ZW50RXJyb3IpOiBhbnkgPT4ge1xuICAgICAgICAvLyBFcnJvclxuICAgICAgICB0aGlzLnJlc3BvbnNlSGFuZGxlcihmaWxlLCBQb1VwbG9hZFN0YXR1cy5FcnJvcik7XG4gICAgICAgIHRoaXMub25FcnJvci5lbWl0KGV2ZW50RXJyb3IpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuSW5wdXRWYWx1ZSgpIHtcbiAgICB0aGlzLmNhbGxlZEJ5Q2xlYW5JbnB1dFZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLmlucHV0RmlsZS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gIH1cblxuICAvLyBmdW7Dp8OjbyBkaXNwYXJhZGEgbmEgcmVzcG9zdGEgZG8gc3VjZXNzbyBvdSBlcnJvclxuICBwcml2YXRlIHJlc3BvbnNlSGFuZGxlcihmaWxlOiBQb1VwbG9hZEZpbGUsIHN0YXR1czogUG9VcGxvYWRTdGF0dXMpIHtcbiAgICBmaWxlLnN0YXR1cyA9IHN0YXR1cztcbiAgICBmaWxlLnBlcmNlbnQgPSAxMDA7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8vIG3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciBzZXRhciBvcyBhcmd1bWVudG9zIGRvIGkxOG5QaXBlIGRlIGFjb3JkbyBjb20gYSByZXN0cmnDp8Ojby5cbiAgcHJpdmF0ZSBzZXRQaXBlQXJndW1lbnRzKGxpdGVyYWxBdHRyaWJ1dGVzOiBzdHJpbmcsIGxpdGVyYWxBcmd1bWVudHM/KSB7XG4gICAgY29uc3QgcGlwZUFyZ3VtZW50cyA9IHRoaXMuaTE4blBpcGUudHJhbnNmb3JtKHRoaXMubGl0ZXJhbHNbbGl0ZXJhbEF0dHJpYnV0ZXNdLCBsaXRlcmFsQXJndW1lbnRzKTtcbiAgICB0aGlzLm5vdGlmaWNhdGlvbi5pbmZvcm1hdGlvbihwaXBlQXJndW1lbnRzKTtcbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIGRpc3BhcmFkYSBhbyBwYXJhciB1bSBlbnZpbyBkZSBhcnF1aXZvLlxuICBwcml2YXRlIHN0b3BVcGxvYWRIYW5kbGVyKGZpbGU6IFBvVXBsb2FkRmlsZSkge1xuICAgIGZpbGUuc3RhdHVzID0gUG9VcGxvYWRTdGF0dXMuTm9uZTtcbiAgICBmaWxlLnBlcmNlbnQgPSAwO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUZpbGVzKGZpbGVzKSB7XG4gICAgdGhpcy5jdXJyZW50RmlsZXMgPSB0aGlzLnBhcnNlRmlsZXMoZmlsZXMpO1xuXG4gICAgdGhpcy51cGRhdGVNb2RlbChbLi4udGhpcy5jdXJyZW50RmlsZXNdKTtcblxuICAgIGlmICh0aGlzLmF1dG9VcGxvYWQpIHtcbiAgICAgIHRoaXMudXBsb2FkRmlsZXModGhpcy5jdXJyZW50RmlsZXMpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEF0dWFsaXphIG8gbmdNb2RlbCBwYXJhIG9zIGFycXVpdm9zIHBhc3NhZG9zIHBvciBwYXLDom1ldHJvLlxuICBwcml2YXRlIHVwZGF0ZU1vZGVsKGZpbGVzOiBBcnJheTxQb1VwbG9hZEZpbGU+KSB7XG4gICAgY29uc3QgbW9kZWxGaWxlczogQXJyYXk8UG9VcGxvYWRGaWxlPiA9IHRoaXMubWFwQ2xlYW5VcGxvYWRGaWxlcyhmaWxlcyk7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlID8gdGhpcy5vbk1vZGVsQ2hhbmdlKG1vZGVsRmlsZXMpIDogdGhpcy5uZ01vZGVsQ2hhbmdlLmVtaXQobW9kZWxGaWxlcyk7XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBkaXNwYXJhZGEgZW5xdWFudG8gbyBhcnF1aXZvIGVzdMOhIHNlbmRvIGVudmlhZG8gYW8gc2VydmnDp28uXG4gIHByaXZhdGUgdXBsb2FkaW5nSGFuZGxlcihmaWxlOiBhbnksIHBlcmNlbnQ6IG51bWJlcikge1xuICAgIGZpbGUuc3RhdHVzID0gUG9VcGxvYWRTdGF0dXMuVXBsb2FkaW5nO1xuICAgIGZpbGUucGVyY2VudCA9IHBlcmNlbnQ7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8vIHJldG9ybmEgb3Mgb2JqZXRvcyBkbyBhcnJheSBzZW0gYXMgcHJvcHJpZWRhZGVzOiBwZXJjZW50IGUgZGlzcGxheU5hbWVcbiAgcHJpdmF0ZSBtYXBDbGVhblVwbG9hZEZpbGVzKGZpbGVzOiBBcnJheTxQb1VwbG9hZEZpbGU+KTogQXJyYXk8UG9VcGxvYWRGaWxlPiB7XG4gICAgY29uc3QgbWFwZWRCeVVwbG9hZEZpbGUgPSBwcm9ncmVzc0ZpbGUgPT4ge1xuICAgICAgY29uc3QgeyBwZXJjZW50LCBkaXNwbGF5TmFtZSwgLi4udXBsb2FkRmlsZSB9ID0gcHJvZ3Jlc3NGaWxlO1xuXG4gICAgICByZXR1cm4gdXBsb2FkRmlsZTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGZpbGVzLm1hcChtYXBlZEJ5VXBsb2FkRmlsZSk7XG4gIH1cbn1cbiIsIjxwby1maWVsZC1jb250YWluZXIgW3AtbGFiZWxdPVwibGFiZWxcIiBbcC1oZWxwXT1cImhlbHBcIiBbcC1vcHRpb25hbF09XCIhcmVxdWlyZWQgJiYgb3B0aW9uYWxcIj5cbiAgPGRpdiBjbGFzcz1cInBvLXVwbG9hZFwiPlxuICAgIDxpbnB1dFxuICAgICAgI2lucHV0RmlsZVxuICAgICAgY2xhc3M9XCJwby11cGxvYWQtaW5wdXRcIlxuICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgW2FjY2VwdF09XCJhbGxvd2VkRXh0ZW5zaW9uc1wiXG4gICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgW211bHRpcGxlXT1cImlzTXVsdGlwbGVcIlxuICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgIChjaGFuZ2UpPVwib25GaWxlQ2hhbmdlKCRldmVudClcIlxuICAgIC8+XG5cbiAgICA8cG8tdXBsb2FkLWRyYWctZHJvcFxuICAgICAgKm5nSWY9XCJkaXNwbGF5RHJhZ0Ryb3BcIlxuICAgICAgW3AtZGlyZWN0b3J5LWNvbXBhdGlibGVdPVwiY2FuSGFuZGxlRGlyZWN0b3J5XCJcbiAgICAgIFtwLWRpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgW3AtZHJhZy1kcm9wLWhlaWdodF09XCJkcmFnRHJvcEhlaWdodFwiXG4gICAgICBbcC1saXRlcmFsc109XCJsaXRlcmFsc1wiXG4gICAgICAocC1maWxlLWNoYW5nZSk9XCJvbkZpbGVDaGFuZ2VEcmFnRHJvcCgkZXZlbnQpXCJcbiAgICAgIChwLXNlbGVjdC1maWxlcyk9XCJzZWxlY3RGaWxlcygpXCJcbiAgICA+XG4gICAgPC9wby11cGxvYWQtZHJhZy1kcm9wPlxuXG4gICAgPHBvLWJ1dHRvblxuICAgICAgKm5nSWY9XCIhaGlkZVNlbGVjdEJ1dHRvbiAmJiAhZGlzcGxheURyYWdEcm9wXCJcbiAgICAgICN1cGxvYWRCdXR0b25cbiAgICAgIGNsYXNzPVwicG8tdXBsb2FkLWJ1dHRvblwiXG4gICAgICBmb3I9XCJmaWxlXCJcbiAgICAgIFtwLWRpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgW3AtbGFiZWxdPVwic2VsZWN0RmlsZUJ1dHRvbkxhYmVsXCJcbiAgICAgIChwLWNsaWNrKT1cInNlbGVjdEZpbGVzKClcIlxuICAgID5cbiAgICA8L3BvLWJ1dHRvbj5cblxuICAgIDxwby11cGxvYWQtZmlsZS1yZXN0cmljdGlvbnNcbiAgICAgICpuZ0lmPVwiZmlsZVJlc3RyaWN0aW9ucyAmJiAhaGlkZVJlc3RyaWN0aW9uc0luZm9cIlxuICAgICAgY2xhc3M9XCJwby11cGxvYWQtZmlsZS1yZXN0cmljdGlvbnNcIlxuICAgICAgW25nQ2xhc3NdPVwieyAncG8tdXBsb2FkLWZpbGUtcmVzdHJpY3Rpb25zLWRyYWctZHJvcCc6IGRpc3BsYXlEcmFnRHJvcCB9XCJcbiAgICAgIFtwLWFsbG93ZWQtZXh0ZW5zaW9uc109XCJmaWxlUmVzdHJpY3Rpb25zPy5hbGxvd2VkRXh0ZW5zaW9uc1wiXG4gICAgICBbcC1tYXgtZmlsZXNdPVwibWF4RmlsZXNcIlxuICAgICAgW3AtbWF4LWZpbGUtc2l6ZV09XCJmaWxlUmVzdHJpY3Rpb25zPy5tYXhGaWxlU2l6ZVwiXG4gICAgICBbcC1taW4tZmlsZS1zaXplXT1cImZpbGVSZXN0cmljdGlvbnM/Lm1pbkZpbGVTaXplXCJcbiAgICA+XG4gICAgPC9wby11cGxvYWQtZmlsZS1yZXN0cmljdGlvbnM+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiY3VycmVudEZpbGVzICYmIGN1cnJlbnRGaWxlcy5sZW5ndGhcIiBjbGFzcz1cInBvLXVwbG9hZC1wcm9ncmVzcy1jb250YWluZXJcIj5cbiAgICAgIDxwby1jb250YWluZXJcbiAgICAgICAgcC1uby1zaGFkb3dcbiAgICAgICAgW3AtaGVpZ2h0XT1cImhhc01vcmVUaGFuRm91ckl0ZW1zID8gMjgwIDogJ2F1dG8nXCJcbiAgICAgICAgW3Atbm8tYm9yZGVyXT1cIiFoYXNNb3JlVGhhbkZvdXJJdGVtc1wiXG4gICAgICAgIFtwLW5vLXBhZGRpbmddPVwiIWhhc01vcmVUaGFuRm91ckl0ZW1zXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7ICdwby11cGxvYWQtcHJvZ3Jlc3MtY29udGFpbmVyLWFyZWEgcG8tcHQtMiBwby1wbC0xJzogaGFzTW9yZVRoYW5Gb3VySXRlbXMgfVwiPlxuICAgICAgICAgIDxwby1wcm9ncmVzc1xuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZpbGUgb2YgY3VycmVudEZpbGVzOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxuICAgICAgICAgICAgW3AtaW5mb109XCJpbmZvQnlVcGxvYWRTdGF0dXNbZmlsZS5zdGF0dXNdPy50ZXh0KGZpbGUucGVyY2VudClcIlxuICAgICAgICAgICAgW3AtaW5mby1pY29uXT1cImluZm9CeVVwbG9hZFN0YXR1c1tmaWxlLnN0YXR1c10/Lmljb25cIlxuICAgICAgICAgICAgW3Atc3RhdHVzXT1cInByb2dyZXNzU3RhdHVzQnlGaWxlU3RhdHVzW2ZpbGUuc3RhdHVzXVwiXG4gICAgICAgICAgICBbcC10ZXh0XT1cImZpbGUuZGlzcGxheU5hbWVcIlxuICAgICAgICAgICAgW3AtdmFsdWVdPVwiZmlsZS5wZXJjZW50XCJcbiAgICAgICAgICAgIChwLWNhbmNlbCk9XCJjYW5jZWwoZmlsZSlcIlxuICAgICAgICAgICAgKHAtcmV0cnkpPVwidXBsb2FkRmlsZXMoW2ZpbGVdKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvcG8tcHJvZ3Jlc3M+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9wby1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8cG8tYnV0dG9uXG4gICAgICAqbmdJZj1cImRpc3BsYXlTZW5kQnV0dG9uXCJcbiAgICAgIGNsYXNzPVwicG8tdXBsb2FkLXNlbmQtYnV0dG9uXCJcbiAgICAgIFtjbGFzcy5wby1tdC0zXT1cImhhc01vcmVUaGFuRm91ckl0ZW1zXCJcbiAgICAgIHAta2luZD1cInByaW1hcnlcIlxuICAgICAgW3AtZGlzYWJsZWRdPVwiaGFzQW55RmlsZVVwbG9hZGluZyhjdXJyZW50RmlsZXMpXCJcbiAgICAgIFtwLWxhYmVsXT1cImxpdGVyYWxzLnN0YXJ0U2VuZGluZ1wiXG4gICAgICAocC1jbGljayk9XCJ1cGxvYWRGaWxlcyhjdXJyZW50RmlsZXMpXCJcbiAgICA+XG4gICAgPC9wby1idXR0b24+XG4gIDwvZGl2PlxuPC9wby1maWVsZC1jb250YWluZXI+XG4iXX0=
|
|
@@ -95,7 +95,7 @@ function PoListViewComponent_ng_container_4_div_9_po_button_1_Template(rf, ctx)
|
|
|
95
95
|
const action_r35 = ctx.$implicit;
|
|
96
96
|
const item_r7 = i0.ɵɵnextContext(2).$implicit;
|
|
97
97
|
const ctx_r34 = i0.ɵɵnextContext();
|
|
98
|
-
i0.ɵɵproperty("p-disabled", ctx_r34.returnBooleanValue(action_r35, item_r7))("p-icon", action_r35.icon)("p-label", action_r35.label)("p-
|
|
98
|
+
i0.ɵɵproperty("p-disabled", ctx_r34.returnBooleanValue(action_r35, item_r7))("p-icon", action_r35.icon)("p-label", action_r35.label)("p-kind", action_r35.type);
|
|
99
99
|
} }
|
|
100
100
|
function PoListViewComponent_ng_container_4_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
101
101
|
i0.ɵɵelementStart(0, "div", 30);
|
|
@@ -312,7 +312,7 @@ PoListViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoListV
|
|
|
312
312
|
} if (rf & 2) {
|
|
313
313
|
let _t;
|
|
314
314
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.poPopupComponent = _t.first);
|
|
315
|
-
} }, features: [i0.ɵɵInheritDefinitionFeature], decls: 8, vars: 13, consts: [["class", "po-list-view-main-header", 4, "ngIf"], [1, "po-list-view-main-content"], ["class", "po-list-view", 4, "ngIf"], [4, "ngFor", "ngForOf", "ngForTrackBy"], ["class", "po-mb-2 po-text-center", 4, "ngIf"], [3, "p-actions", "p-target"], ["popup", ""], [1, "po-list-view-main-header"], [1, "po-checkbox-group-item"], [1, "po-list-view-main-select"], ["type", "checkbox", 1, "po-input", "po-checkbox-group-input"], [1, "po-checkbox-group-label", "po-list-view-selectable-label", "po-clickable", 3, "click"], [1, "po-list-view"], [1, "po-list-view-container-no-data", "po-text-center"], [1, "po-list-view-container"], [1, "po-list-view-header"], [1, "po-list-view-title", 3, "ngSwitch"], ["class", "po-list-view-select", 4, "ngIf"], ["class", "po-list-view-title-link", "target", "_blank", 3, "href", "click", 4, "ngSwitchCase"], ["class", "po-list-view-title-link", 3, "routerLink", "click", 4, "ngSwitchCase"], ["class", "po-list-view-title-no-link", 3, "po-list-view-title-link", "click", 4, "ngSwitchCase"], ["class", "po-list-view-actions", 4, "ngIf"], ["class", "po-list-view-more-actions", 4, "ngIf"], ["class", "po-list-view-content", 4, "ngIf"], ["class", "po-list-view-detail", 4, "ngIf"], ["class", "po-list-view-detail-button", 4, "ngIf"], [1, "po-list-view-select"], ["target", "_blank", 1, "po-list-view-title-link", 3, "href", "click"], [1, "po-list-view-title-link", 3, "routerLink", "click"], [1, "po-list-view-title-no-link", 3, "click"], [1, "po-list-view-actions"], ["p-small", "true", 3, "p-disabled", "p-icon", "p-label", "p-
|
|
315
|
+
} }, features: [i0.ɵɵInheritDefinitionFeature], decls: 8, vars: 13, consts: [["class", "po-list-view-main-header", 4, "ngIf"], [1, "po-list-view-main-content"], ["class", "po-list-view", 4, "ngIf"], [4, "ngFor", "ngForOf", "ngForTrackBy"], ["class", "po-mb-2 po-text-center", 4, "ngIf"], [3, "p-actions", "p-target"], ["popup", ""], [1, "po-list-view-main-header"], [1, "po-checkbox-group-item"], [1, "po-list-view-main-select"], ["type", "checkbox", 1, "po-input", "po-checkbox-group-input"], [1, "po-checkbox-group-label", "po-list-view-selectable-label", "po-clickable", 3, "click"], [1, "po-list-view"], [1, "po-list-view-container-no-data", "po-text-center"], [1, "po-list-view-container"], [1, "po-list-view-header"], [1, "po-list-view-title", 3, "ngSwitch"], ["class", "po-list-view-select", 4, "ngIf"], ["class", "po-list-view-title-link", "target", "_blank", 3, "href", "click", 4, "ngSwitchCase"], ["class", "po-list-view-title-link", 3, "routerLink", "click", 4, "ngSwitchCase"], ["class", "po-list-view-title-no-link", 3, "po-list-view-title-link", "click", 4, "ngSwitchCase"], ["class", "po-list-view-actions", 4, "ngIf"], ["class", "po-list-view-more-actions", 4, "ngIf"], ["class", "po-list-view-content", 4, "ngIf"], ["class", "po-list-view-detail", 4, "ngIf"], ["class", "po-list-view-detail-button", 4, "ngIf"], [1, "po-list-view-select"], ["target", "_blank", 1, "po-list-view-title-link", 3, "href", "click"], [1, "po-list-view-title-link", 3, "routerLink", "click"], [1, "po-list-view-title-no-link", 3, "click"], [1, "po-list-view-actions"], ["p-small", "true", 3, "p-disabled", "p-icon", "p-label", "p-kind", "p-click", 4, "ngFor", "ngForOf"], ["p-small", "true", 3, "p-disabled", "p-icon", "p-label", "p-kind", "p-click"], [1, "po-list-view-more-actions"], [1, "po-icon", "po-icon-more", "po-list-view-more-icon", "po-clickable", 3, "click"], ["popupTarget", ""], [1, "po-list-view-content"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "po-list-view-detail"], [1, "po-list-view-detail-button"], [1, "po-clickable", 3, "click"], [1, "po-mb-2", "po-text-center"], [3, "p-disabled", "p-label", "p-click"]], template: function PoListViewComponent_Template(rf, ctx) { if (rf & 1) {
|
|
316
316
|
i0.ɵɵelementStart(0, "div");
|
|
317
317
|
i0.ɵɵtemplate(1, PoListViewComponent_div_1_Template, 6, 5, "div", 0);
|
|
318
318
|
i0.ɵɵelementStart(2, "div", 1);
|
|
@@ -351,7 +351,7 @@ PoListViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoListV
|
|
|
351
351
|
transition('* => void', [style({ height: '*', 'overflow-y': 'hidden' }), animate(100, style({ height: 0 }))]),
|
|
352
352
|
transition('void => *', [style({ height: '0' }), animate(100, style({ height: '*' }))])
|
|
353
353
|
])
|
|
354
|
-
], template: "<div\n [class.po-list-view-main-container-header]=\"showHeader\"\n [class.po-list-view-main-container]=\"!showHeader\"\n [style.height.px]=\"height\"\n>\n <div *ngIf=\"showHeader\" class=\"po-list-view-main-header\">\n <div class=\"po-checkbox-group-item\">\n <div class=\"po-list-view-main-select\">\n <input\n class=\"po-input po-checkbox-group-input\"\n type=\"checkbox\"\n [class.po-checkbox-group-input-checked]=\"selectAll\"\n [class.po-checkbox-group-input-indeterminate]=\"selectAll === null\"\n />\n <label\n class=\"po-checkbox-group-label po-list-view-selectable-label po-clickable\"\n (click)=\"selectAllListItems()\"\n >\n {{ literals.selectAll }}\n </label>\n </div>\n </div>\n </div>\n\n <div class=\"po-list-view-main-content\">\n <div class=\"po-list-view\" *ngIf=\"!hasItems()\">\n <div class=\"po-list-view-container-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </div>\n </div>\n\n <ng-container *ngFor=\"let item of items; let index = index; trackBy: trackBy\">\n <div class=\"po-list-view\">\n <div class=\"po-list-view-container\">\n <div class=\"po-list-view-header\">\n <div class=\"po-list-view-title\" [ngSwitch]=\"checkTitleType(item)\">\n <div *ngIf=\"select\" class=\"po-list-view-select\">\n <input\n class=\"po-input po-checkbox-group-input\"\n type=\"checkbox\"\n [class.po-checkbox-group-input-checked]=\"item.$selected\"\n />\n <label\n class=\"po-checkbox-group-label po-list-view-selectable-label po-clickable\"\n (click)=\"selectListItem(item)\"\n ></label>\n </div>\n <a\n *ngSwitchCase=\"'externalLink'\"\n class=\"po-list-view-title-link\"\n target=\"_blank\"\n [href]=\"item[propertyLink]\"\n (click)=\"runTitleAction(item)\"\n >\n {{ getItemTitle(item) }}\n </a>\n <a\n *ngSwitchCase=\"'internalLink'\"\n class=\"po-list-view-title-link\"\n [routerLink]=\"item[propertyLink]\"\n (click)=\"runTitleAction(item)\"\n >\n {{ getItemTitle(item) }}\n </a>\n <span\n *ngSwitchCase=\"'noLink'\"\n class=\"po-list-view-title-no-link\"\n [class.po-list-view-title-link]=\"titleHasAction\"\n (click)=\"titleHasAction && runTitleAction(item)\"\n >\n {{ getItemTitle(item) }}\n </span>\n </div>\n\n <div *ngIf=\"showButtonsActions\" class=\"po-list-view-actions\">\n <po-button\n *ngFor=\"let action of visibleActions\"\n p-small=\"true\"\n [p-disabled]=\"returnBooleanValue(action, item)\"\n [p-icon]=\"action.icon\"\n [p-label]=\"action.label\"\n [p-
|
|
354
|
+
], template: "<div\n [class.po-list-view-main-container-header]=\"showHeader\"\n [class.po-list-view-main-container]=\"!showHeader\"\n [style.height.px]=\"height\"\n>\n <div *ngIf=\"showHeader\" class=\"po-list-view-main-header\">\n <div class=\"po-checkbox-group-item\">\n <div class=\"po-list-view-main-select\">\n <input\n class=\"po-input po-checkbox-group-input\"\n type=\"checkbox\"\n [class.po-checkbox-group-input-checked]=\"selectAll\"\n [class.po-checkbox-group-input-indeterminate]=\"selectAll === null\"\n />\n <label\n class=\"po-checkbox-group-label po-list-view-selectable-label po-clickable\"\n (click)=\"selectAllListItems()\"\n >\n {{ literals.selectAll }}\n </label>\n </div>\n </div>\n </div>\n\n <div class=\"po-list-view-main-content\">\n <div class=\"po-list-view\" *ngIf=\"!hasItems()\">\n <div class=\"po-list-view-container-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </div>\n </div>\n\n <ng-container *ngFor=\"let item of items; let index = index; trackBy: trackBy\">\n <div class=\"po-list-view\">\n <div class=\"po-list-view-container\">\n <div class=\"po-list-view-header\">\n <div class=\"po-list-view-title\" [ngSwitch]=\"checkTitleType(item)\">\n <div *ngIf=\"select\" class=\"po-list-view-select\">\n <input\n class=\"po-input po-checkbox-group-input\"\n type=\"checkbox\"\n [class.po-checkbox-group-input-checked]=\"item.$selected\"\n />\n <label\n class=\"po-checkbox-group-label po-list-view-selectable-label po-clickable\"\n (click)=\"selectListItem(item)\"\n ></label>\n </div>\n <a\n *ngSwitchCase=\"'externalLink'\"\n class=\"po-list-view-title-link\"\n target=\"_blank\"\n [href]=\"item[propertyLink]\"\n (click)=\"runTitleAction(item)\"\n >\n {{ getItemTitle(item) }}\n </a>\n <a\n *ngSwitchCase=\"'internalLink'\"\n class=\"po-list-view-title-link\"\n [routerLink]=\"item[propertyLink]\"\n (click)=\"runTitleAction(item)\"\n >\n {{ getItemTitle(item) }}\n </a>\n <span\n *ngSwitchCase=\"'noLink'\"\n class=\"po-list-view-title-no-link\"\n [class.po-list-view-title-link]=\"titleHasAction\"\n (click)=\"titleHasAction && runTitleAction(item)\"\n >\n {{ getItemTitle(item) }}\n </span>\n </div>\n\n <div *ngIf=\"showButtonsActions\" class=\"po-list-view-actions\">\n <po-button\n *ngFor=\"let action of visibleActions\"\n p-small=\"true\"\n [p-disabled]=\"returnBooleanValue(action, item)\"\n [p-icon]=\"action.icon\"\n [p-label]=\"action.label\"\n [p-kind]=\"action.type\"\n (p-click)=\"onClickAction(action, item)\"\n >\n </po-button>\n </div>\n\n <div *ngIf=\"showPopupActions\" class=\"po-list-view-more-actions\">\n <span\n #popupTarget\n class=\"po-icon po-icon-more po-list-view-more-icon po-clickable\"\n (click)=\"togglePopup(item, popupTarget)\"\n >\n </span>\n </div>\n </div>\n\n <div *ngIf=\"hasContentTemplate\" class=\"po-list-view-content\">\n <ng-template\n [ngTemplateOutlet]=\"listViewContentTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item, index: index }\"\n >\n </ng-template>\n </div>\n\n <div @showHideDetail *ngIf=\"hasDetailTemplate && item.$showDetail\" class=\"po-list-view-detail\">\n <ng-template\n [ngTemplateOutlet]=\"listViewDetailTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item, index: index }\"\n >\n </ng-template>\n </div>\n </div>\n\n <div *ngIf=\"hasDetailTemplate\" class=\"po-list-view-detail-button\">\n <span class=\"po-clickable\" (click)=\"item.$showDetail = !item.$showDetail\">\n {{ item.$showDetail ? literals.hideDetails : literals.showDetails }}\n </span>\n </div>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div *ngIf=\"displayShowMoreButton\" class=\"po-mb-2 po-text-center\">\n <po-button [p-disabled]=\"showMoreDisabled\" [p-label]=\"literals.loadMoreData\" (p-click)=\"onShowMore()\"> </po-button>\n</div>\n\n<po-popup #popup [p-actions]=\"actions\" [p-target]=\"popupTarget\"> </po-popup>\n" }]
|
|
355
355
|
}], function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.IterableDiffers }, { type: i1.PoLanguageService }]; }, { listViewContentTemplate: [{
|
|
356
356
|
type: ContentChild,
|
|
357
357
|
args: [PoListViewContentTemplateDirective, { static: true }]
|
|
@@ -362,4 +362,4 @@ PoListViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoListV
|
|
|
362
362
|
type: ViewChild,
|
|
363
363
|
args: ['popup', { static: true }]
|
|
364
364
|
}] }); })();
|
|
365
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbGlzdC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1saXN0LXZpZXcvcG8tbGlzdC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1saXN0LXZpZXcvcG8tbGlzdC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBR1osU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUs1QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQUM3SCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx1RUFBdUUsQ0FBQzs7Ozs7Ozs7OztJQ2J4SCw4QkFBeUQsYUFBQSxhQUFBO0lBR25ELDRCQUtFO0lBQ0YsaUNBR0M7SUFEQywrSkFBUywyQkFBb0IsSUFBQztJQUU5QixZQUNGO0lBQUEsaUJBQVEsRUFBQSxFQUFBLEVBQUE7OztJQVJOLGVBQW1EO0lBQW5ELG1FQUFtRCxvRUFBQTtJQU9uRCxlQUNGO0lBREUsMERBQ0Y7OztJQU1KLCtCQUE4QyxjQUFBLFdBQUE7SUFFbkMsWUFBc0I7SUFBQSxpQkFBTyxFQUFBLEVBQUE7OztJQUE3QixlQUFzQjtJQUF0Qix1REFBc0I7Ozs7SUFTdkIsK0JBQWdEO0lBQzlDLDRCQUlFO0lBQ0YsaUNBR0M7SUFEQyw4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LENBQUMsQ0FBQyxDQUFDO3FCQUN4RixDQUFDO2lCQUNIO2tJQUlELHVCQUF1QjtrQkFEdEIsWUFBWTttQkFBQyxrQ0FBa0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFHbEUsc0JBQXNCO2tCQURyQixZQUFZO21CQUFDLGlDQUFpQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUczQixnQkFBZ0I7a0JBQXJELFNBQVM7bUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBEb0NoZWNrLFxuICBJdGVyYWJsZURpZmZlcnMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgaXNUeXBlb2YgfSBmcm9tICcuLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBQb1BvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vcG8tcG9wdXAvcG8tcG9wdXAuY29tcG9uZW50JztcblxuaW1wb3J0IHsgUG9MaXN0Vmlld0FjdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1saXN0LXZpZXctYWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0xpc3RWaWV3QmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tbGlzdC12aWV3LWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBvTGlzdFZpZXdDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL3BvLWxpc3Qtdmlldy1jb250ZW50LXRlbXBsYXRlL3BvLWxpc3Qtdmlldy1jb250ZW50LXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQb0xpc3RWaWV3RGV0YWlsVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL3BvLWxpc3Qtdmlldy1kZXRhaWwtdGVtcGxhdGUvcG8tbGlzdC12aWV3LWRldGFpbC10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb0xpc3RWaWV3QmFzZUNvbXBvbmVudFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWxpc3Qtdmlldy1iYXNpY1wiIHRpdGxlPVwiUE8gTGlzdCBWaWV3IEJhc2ljXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1saXN0LXZpZXctYmFzaWMvc2FtcGxlLXBvLWxpc3Qtdmlldy1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1saXN0LXZpZXctYmFzaWMvc2FtcGxlLXBvLWxpc3Qtdmlldy1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1saXN0LXZpZXctbGFic1wiIHRpdGxlPVwiUE8gTGlzdCBWaWV3IExhYnNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxpc3Qtdmlldy1sYWJzL3NhbXBsZS1wby1saXN0LXZpZXctbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1saXN0LXZpZXctbGFicy9zYW1wbGUtcG8tbGlzdC12aWV3LWxhYnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbGlzdC12aWV3LWhpcmluZy1wcm9jZXNzZXNcIiB0aXRsZT1cIlBPIExpc3QgVmlldyAtIEhpcmluZyBQcm9jZXNzZXNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxpc3Qtdmlldy1oaXJpbmctcHJvY2Vzc2VzL3NhbXBsZS1wby1saXN0LXZpZXctaGlyaW5nLXByb2Nlc3Nlcy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1saXN0LXZpZXctaGlyaW5nLXByb2Nlc3Nlcy9zYW1wbGUtcG8tbGlzdC12aWV3LWhpcmluZy1wcm9jZXNzZXMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxpc3Qtdmlldy1oaXJpbmctcHJvY2Vzc2VzL3NhbXBsZS1wby1saXN0LXZpZXctaGlyaW5nLXByb2Nlc3Nlcy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tbGlzdC12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLWxpc3Qtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdzaG93SGlkZURldGFpbCcsIFtcbiAgICAgIHN0YXRlKCcqJywgc3R5bGUoeyAnb3ZlcmZsb3cteSc6ICd2aXNpYmxlJyB9KSksXG4gICAgICBzdGF0ZSgndm9pZCcsIHN0eWxlKHsgJ292ZXJmbG93LXknOiAnaGlkZGVuJyB9KSksXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IHZvaWQnLCBbc3R5bGUoeyBoZWlnaHQ6ICcqJywgJ292ZXJmbG93LXknOiAnaGlkZGVuJyB9KSwgYW5pbWF0ZSgxMDAsIHN0eWxlKHsgaGVpZ2h0OiAwIH0pKV0pLFxuICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgW3N0eWxlKHsgaGVpZ2h0OiAnMCcgfSksIGFuaW1hdGUoMTAwLCBzdHlsZSh7IGhlaWdodDogJyonIH0pKV0pXG4gICAgXSlcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBQb0xpc3RWaWV3Q29tcG9uZW50IGV4dGVuZHMgUG9MaXN0Vmlld0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBEb0NoZWNrIHtcbiAgQENvbnRlbnRDaGlsZChQb0xpc3RWaWV3Q29udGVudFRlbXBsYXRlRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBsaXN0Vmlld0NvbnRlbnRUZW1wbGF0ZTogUG9MaXN0Vmlld0NvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZTtcbiAgQENvbnRlbnRDaGlsZChQb0xpc3RWaWV3RGV0YWlsVGVtcGxhdGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGxpc3RWaWV3RGV0YWlsVGVtcGxhdGU6IFBvTGlzdFZpZXdEZXRhaWxUZW1wbGF0ZURpcmVjdGl2ZTtcblxuICBAVmlld0NoaWxkKCdwb3B1cCcsIHsgc3RhdGljOiB0cnVlIH0pIHBvUG9wdXBDb21wb25lbnQ6IFBvUG9wdXBDb21wb25lbnQ7XG5cbiAgcHJpdmF0ZSBkaWZmZXI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIGRpZmZlcnM6IEl0ZXJhYmxlRGlmZmVycywgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSkge1xuICAgIHN1cGVyKGxhbmd1YWdlU2VydmljZSk7XG4gICAgdGhpcy5kaWZmZXIgPSBkaWZmZXJzLmZpbmQoW10pLmNyZWF0ZShudWxsKTtcbiAgfVxuXG4gIGdldCBoYXNDb250ZW50VGVtcGxhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5saXN0Vmlld0NvbnRlbnRUZW1wbGF0ZTtcbiAgfVxuXG4gIGdldCBoYXNEZXRhaWxUZW1wbGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmxpc3RWaWV3RGV0YWlsVGVtcGxhdGU7XG4gIH1cblxuICBnZXQgZGlzcGxheVNob3dNb3JlQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCAmJiB0aGlzLnNob3dNb3JlLm9ic2VydmVycy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0IHNob3dCdXR0b25zQWN0aW9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlQWN0aW9ucyAmJiB0aGlzLnZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDAgJiYgdGhpcy52aXNpYmxlQWN0aW9ucy5sZW5ndGggPD0gMjtcbiAgfVxuXG4gIGdldCBzaG93UG9wdXBBY3Rpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZpc2libGVBY3Rpb25zICYmIHRoaXMudmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMjtcbiAgfVxuXG4gIGdldCB0aXRsZUhhc0FjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50aXRsZUFjdGlvbi5vYnNlcnZlcnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGdldCB2aXNpYmxlQWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpb25zICYmIHRoaXMuYWN0aW9ucy5maWx0ZXIoYWN0aW9uID0+IGFjdGlvbi52aXNpYmxlICE9PSBmYWxzZSk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0U2hvd0RldGFpbCgpO1xuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIHRoaXMuY2hlY2tJdGVtc0NoYW5nZSgpO1xuICB9XG5cbiAgY2hlY2tUaXRsZVR5cGUoaXRlbTogYW55KSB7XG4gICAgaWYgKHRoaXMucHJvcGVydHlMaW5rICYmIGl0ZW1bdGhpcy5wcm9wZXJ0eUxpbmtdKSB7XG4gICAgICByZXR1cm4gaXRlbVt0aGlzLnByb3BlcnR5TGlua10uc3RhcnRzV2l0aCgnaHR0cCcpID8gJ2V4dGVybmFsTGluaycgOiAnaW50ZXJuYWxMaW5rJztcbiAgICB9XG5cbiAgICByZXR1cm4gJ25vTGluayc7XG4gIH1cblxuICBnZXRJdGVtVGl0bGUoaXRlbSkge1xuICAgIHJldHVybiB0aGlzLmhhc0NvbnRlbnRUZW1wbGF0ZSAmJiB0aGlzLmxpc3RWaWV3Q29udGVudFRlbXBsYXRlLnRpdGxlXG4gICAgICA/IHRoaXMubGlzdFZpZXdDb250ZW50VGVtcGxhdGUudGl0bGUoaXRlbSlcbiAgICAgIDogaXRlbVt0aGlzLnByb3BlcnR5VGl0bGVdO1xuICB9XG5cbiAgaGFzSXRlbXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcmV0dXJuQm9vbGVhblZhbHVlKGxpc3RWaWV3QWN0aW9uOiBQb0xpc3RWaWV3QWN0aW9uLCBpdGVtOiBhbnkpIHtcbiAgICByZXR1cm4gaXNUeXBlb2YobGlzdFZpZXdBY3Rpb24uZGlzYWJsZWQsICdmdW5jdGlvbicpXG4gICAgICA/ICg8YW55Pmxpc3RWaWV3QWN0aW9uKS5kaXNhYmxlZChpdGVtKVxuICAgICAgOiBsaXN0Vmlld0FjdGlvbi5kaXNhYmxlZDtcbiAgfVxuXG4gIHRyYWNrQnkoaW5kZXgpIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICB0b2dnbGVQb3B1cChpdGVtLCB0YXJnZXRSZWY6IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5wb3B1cFRhcmdldCA9IHRhcmdldFJlZjtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHRoaXMucG9Qb3B1cENvbXBvbmVudC50b2dnbGUoaXRlbSk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrSXRlbXNDaGFuZ2UoKSB7XG4gICAgY29uc3QgY2hhbmdlc0l0ZW1zID0gdGhpcy5kaWZmZXIuZGlmZih0aGlzLml0ZW1zKTtcblxuICAgIGlmIChjaGFuZ2VzSXRlbXMgJiYgdGhpcy5zZWxlY3RBbGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc0l0ZW1zICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggJiYgdGhpcy5zZWxlY3QgJiYgIXRoaXMuaGlkZVNlbGVjdEFsbCkge1xuICAgICAgdGhpcy5zaG93SGVhZGVyID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRTaG93RGV0YWlsKCkge1xuICAgIGlmICh0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCAmJiB0aGlzLmhhc0RldGFpbFRlbXBsYXRlICYmIHRoaXMubGlzdFZpZXdEZXRhaWxUZW1wbGF0ZS5zaG93RGV0YWlsKSB7XG4gICAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiAoaXRlbS4kc2hvd0RldGFpbCA9IHRoaXMubGlzdFZpZXdEZXRhaWxUZW1wbGF0ZS5zaG93RGV0YWlsKGl0ZW0pKSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIFtjbGFzcy5wby1saXN0LXZpZXctbWFpbi1jb250YWluZXItaGVhZGVyXT1cInNob3dIZWFkZXJcIlxuICBbY2xhc3MucG8tbGlzdC12aWV3LW1haW4tY29udGFpbmVyXT1cIiFzaG93SGVhZGVyXCJcbiAgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRcIlxuPlxuICA8ZGl2ICpuZ0lmPVwic2hvd0hlYWRlclwiIGNsYXNzPVwicG8tbGlzdC12aWV3LW1haW4taGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInBvLWNoZWNrYm94LWdyb3VwLWl0ZW1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwby1saXN0LXZpZXctbWFpbi1zZWxlY3RcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJwby1pbnB1dCBwby1jaGVja2JveC1ncm91cC1pbnB1dFwiXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBbY2xhc3MucG8tY2hlY2tib3gtZ3JvdXAtaW5wdXQtY2hlY2tlZF09XCJzZWxlY3RBbGxcIlxuICAgICAgICAgIFtjbGFzcy5wby1jaGVja2JveC1ncm91cC1pbnB1dC1pbmRldGVybWluYXRlXT1cInNlbGVjdEFsbCA9PT0gbnVsbFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIGNsYXNzPVwicG8tY2hlY2tib3gtZ3JvdXAtbGFiZWwgcG8tbGlzdC12aWV3LXNlbGVjdGFibGUtbGFiZWwgcG8tY2xpY2thYmxlXCJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0QWxsTGlzdEl0ZW1zKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgbGl0ZXJhbHMuc2VsZWN0QWxsIH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInBvLWxpc3Qtdmlldy1tYWluLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicG8tbGlzdC12aWV3XCIgKm5nSWY9XCIhaGFzSXRlbXMoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBvLWxpc3Qtdmlldy1jb250YWluZXItbm8tZGF0YSBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgICA8c3Bhbj4ge3sgbGl0ZXJhbHMubm9EYXRhIH19IDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgbGV0IGluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwby1saXN0LXZpZXdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvLWxpc3Qtdmlldy1jb250YWluZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicG8tbGlzdC12aWV3LWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvLWxpc3Qtdmlldy10aXRsZVwiIFtuZ1N3aXRjaF09XCJjaGVja1RpdGxlVHlwZShpdGVtKVwiPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0XCIgY2xhc3M9XCJwby1saXN0LXZpZXctc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInBvLWlucHV0IHBvLWNoZWNrYm94LWdyb3VwLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MucG8tY2hlY2tib3gtZ3JvdXAtaW5wdXQtY2hlY2tlZF09XCJpdGVtLiRzZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG8tY2hlY2tib3gtZ3JvdXAtbGFiZWwgcG8tbGlzdC12aWV3LXNlbGVjdGFibGUtbGFiZWwgcG8tY2xpY2thYmxlXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RMaXN0SXRlbShpdGVtKVwiXG4gICAgICAgICAgICAgICAgPjwvbGFiZWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInZXh0ZXJuYWxMaW5rJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwby1saXN0LXZpZXctdGl0bGUtbGlua1wiXG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICBbaHJlZl09XCJpdGVtW3Byb3BlcnR5TGlua11cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW5UaXRsZUFjdGlvbihpdGVtKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBnZXRJdGVtVGl0bGUoaXRlbSkgfX1cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInaW50ZXJuYWxMaW5rJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwby1saXN0LXZpZXctdGl0bGUtbGlua1wiXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiaXRlbVtwcm9wZXJ0eUxpbmtdXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuVGl0bGVBY3Rpb24oaXRlbSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgZ2V0SXRlbVRpdGxlKGl0ZW0pIH19XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ25vTGluaydcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicG8tbGlzdC12aWV3LXRpdGxlLW5vLWxpbmtcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby1saXN0LXZpZXctdGl0bGUtbGlua109XCJ0aXRsZUhhc0FjdGlvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRpdGxlSGFzQWN0aW9uICYmIHJ1blRpdGxlQWN0aW9uKGl0ZW0pXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGdldEl0ZW1UaXRsZShpdGVtKSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dCdXR0b25zQWN0aW9uc1wiIGNsYXNzPVwicG8tbGlzdC12aWV3LWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPHBvLWJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgdmlzaWJsZUFjdGlvbnNcIlxuICAgICAgICAgICAgICAgIHAtc21hbGw9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbcC1kaXNhYmxlZF09XCJyZXR1cm5Cb29sZWFuVmFsdWUoYWN0aW9uLCBpdGVtKVwiXG4gICAgICAgICAgICAgICAgW3AtaWNvbl09XCJhY3Rpb24uaWNvblwiXG4gICAgICAgICAgICAgICAgW3AtbGFiZWxdPVwiYWN0aW9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICBbcC10eXBlXT1cImFjdGlvbi50eXBlXCJcbiAgICAgICAgICAgICAgICAocC1jbGljayk9XCJvbkNsaWNrQWN0aW9uKGFjdGlvbiwgaXRlbSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvcG8tYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93UG9wdXBBY3Rpb25zXCIgY2xhc3M9XCJwby1saXN0LXZpZXctbW9yZS1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgI3BvcHVwVGFyZ2V0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwby1pY29uIHBvLWljb24tbW9yZSBwby1saXN0LXZpZXctbW9yZS1pY29uIHBvLWNsaWNrYWJsZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBvcHVwKGl0ZW0sIHBvcHVwVGFyZ2V0KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaGFzQ29udGVudFRlbXBsYXRlXCIgY2xhc3M9XCJwby1saXN0LXZpZXctY29udGVudFwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RWaWV3Q29udGVudFRlbXBsYXRlLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtLCBpbmRleDogaW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBAc2hvd0hpZGVEZXRhaWwgKm5nSWY9XCJoYXNEZXRhaWxUZW1wbGF0ZSAmJiBpdGVtLiRzaG93RGV0YWlsXCIgY2xhc3M9XCJwby1saXN0LXZpZXctZGV0YWlsXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdFZpZXdEZXRhaWxUZW1wbGF0ZS50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSwgaW5kZXg6IGluZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cImhhc0RldGFpbFRlbXBsYXRlXCIgY2xhc3M9XCJwby1saXN0LXZpZXctZGV0YWlsLWJ1dHRvblwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicG8tY2xpY2thYmxlXCIgKGNsaWNrKT1cIml0ZW0uJHNob3dEZXRhaWwgPSAhaXRlbS4kc2hvd0RldGFpbFwiPlxuICAgICAgICAgICAge3sgaXRlbS4kc2hvd0RldGFpbCA/IGxpdGVyYWxzLmhpZGVEZXRhaWxzIDogbGl0ZXJhbHMuc2hvd0RldGFpbHMgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJkaXNwbGF5U2hvd01vcmVCdXR0b25cIiBjbGFzcz1cInBvLW1iLTIgcG8tdGV4dC1jZW50ZXJcIj5cbiAgPHBvLWJ1dHRvbiBbcC1kaXNhYmxlZF09XCJzaG93TW9yZURpc2FibGVkXCIgW3AtbGFiZWxdPVwibGl0ZXJhbHMubG9hZE1vcmVEYXRhXCIgKHAtY2xpY2spPVwib25TaG93TW9yZSgpXCI+IDwvcG8tYnV0dG9uPlxuPC9kaXY+XG5cbjxwby1wb3B1cCAjcG9wdXAgW3AtYWN0aW9uc109XCJhY3Rpb25zXCIgW3AtdGFyZ2V0XT1cInBvcHVwVGFyZ2V0XCI+IDwvcG8tcG9wdXA+XG4iXX0=
|
|
365
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbGlzdC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1saXN0LXZpZXcvcG8tbGlzdC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1saXN0LXZpZXcvcG8tbGlzdC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBR1osU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUs1QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQUM3SCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx1RUFBdUUsQ0FBQzs7Ozs7Ozs7OztJQ2J4SCw4QkFBeUQsYUFBQSxhQUFBO0lBR25ELDRCQUtFO0lBQ0YsaUNBR0M7SUFEQywrSkFBUywyQkFBb0IsSUFBQztJQUU5QixZQUNGO0lBQUEsaUJBQVEsRUFBQSxFQUFBLEVBQUE7OztJQVJOLGVBQW1EO0lBQW5ELG1FQUFtRCxvRUFBQTtJQU9uRCxlQUNGO0lBREUsMERBQ0Y7OztJQU1KLCtCQUE4QyxjQUFBLFdBQUE7SUFFbkMsWUFBc0I7SUFBQSxpQkFBTyxFQUFBLEVBQUE7OztJQUE3QixlQUFzQjtJQUF0Qix1REFBc0I7Ozs7SUFTdkIsK0JBQWdEO0lBQzlDLDRCQUlFO0lBQ0YsaUNBR0M7SUFEQyw4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LENBQUMsQ0FBQyxDQUFDO3FCQUN4RixDQUFDO2lCQUNIO2tJQUlELHVCQUF1QjtrQkFEdEIsWUFBWTttQkFBQyxrQ0FBa0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFHbEUsc0JBQXNCO2tCQURyQixZQUFZO21CQUFDLGlDQUFpQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUczQixnQkFBZ0I7a0JBQXJELFNBQVM7bUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBEb0NoZWNrLFxuICBJdGVyYWJsZURpZmZlcnMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgaXNUeXBlb2YgfSBmcm9tICcuLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBQb1BvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vcG8tcG9wdXAvcG8tcG9wdXAuY29tcG9uZW50JztcblxuaW1wb3J0IHsgUG9MaXN0Vmlld0FjdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1saXN0LXZpZXctYWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0xpc3RWaWV3QmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tbGlzdC12aWV3LWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBvTGlzdFZpZXdDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL3BvLWxpc3Qtdmlldy1jb250ZW50LXRlbXBsYXRlL3BvLWxpc3Qtdmlldy1jb250ZW50LXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQb0xpc3RWaWV3RGV0YWlsVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL3BvLWxpc3Qtdmlldy1kZXRhaWwtdGVtcGxhdGUvcG8tbGlzdC12aWV3LWRldGFpbC10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb0xpc3RWaWV3QmFzZUNvbXBvbmVudFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWxpc3Qtdmlldy1iYXNpY1wiIHRpdGxlPVwiUE8gTGlzdCBWaWV3IEJhc2ljXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1saXN0LXZpZXctYmFzaWMvc2FtcGxlLXBvLWxpc3Qtdmlldy1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1saXN0LXZpZXctYmFzaWMvc2FtcGxlLXBvLWxpc3Qtdmlldy1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1saXN0LXZpZXctbGFic1wiIHRpdGxlPVwiUE8gTGlzdCBWaWV3IExhYnNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxpc3Qtdmlldy1sYWJzL3NhbXBsZS1wby1saXN0LXZpZXctbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1saXN0LXZpZXctbGFicy9zYW1wbGUtcG8tbGlzdC12aWV3LWxhYnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbGlzdC12aWV3LWhpcmluZy1wcm9jZXNzZXNcIiB0aXRsZT1cIlBPIExpc3QgVmlldyAtIEhpcmluZyBQcm9jZXNzZXNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxpc3Qtdmlldy1oaXJpbmctcHJvY2Vzc2VzL3NhbXBsZS1wby1saXN0LXZpZXctaGlyaW5nLXByb2Nlc3Nlcy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1saXN0LXZpZXctaGlyaW5nLXByb2Nlc3Nlcy9zYW1wbGUtcG8tbGlzdC12aWV3LWhpcmluZy1wcm9jZXNzZXMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxpc3Qtdmlldy1oaXJpbmctcHJvY2Vzc2VzL3NhbXBsZS1wby1saXN0LXZpZXctaGlyaW5nLXByb2Nlc3Nlcy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tbGlzdC12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLWxpc3Qtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdzaG93SGlkZURldGFpbCcsIFtcbiAgICAgIHN0YXRlKCcqJywgc3R5bGUoeyAnb3ZlcmZsb3cteSc6ICd2aXNpYmxlJyB9KSksXG4gICAgICBzdGF0ZSgndm9pZCcsIHN0eWxlKHsgJ292ZXJmbG93LXknOiAnaGlkZGVuJyB9KSksXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IHZvaWQnLCBbc3R5bGUoeyBoZWlnaHQ6ICcqJywgJ292ZXJmbG93LXknOiAnaGlkZGVuJyB9KSwgYW5pbWF0ZSgxMDAsIHN0eWxlKHsgaGVpZ2h0OiAwIH0pKV0pLFxuICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgW3N0eWxlKHsgaGVpZ2h0OiAnMCcgfSksIGFuaW1hdGUoMTAwLCBzdHlsZSh7IGhlaWdodDogJyonIH0pKV0pXG4gICAgXSlcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBQb0xpc3RWaWV3Q29tcG9uZW50IGV4dGVuZHMgUG9MaXN0Vmlld0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBEb0NoZWNrIHtcbiAgQENvbnRlbnRDaGlsZChQb0xpc3RWaWV3Q29udGVudFRlbXBsYXRlRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBsaXN0Vmlld0NvbnRlbnRUZW1wbGF0ZTogUG9MaXN0Vmlld0NvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZTtcbiAgQENvbnRlbnRDaGlsZChQb0xpc3RWaWV3RGV0YWlsVGVtcGxhdGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGxpc3RWaWV3RGV0YWlsVGVtcGxhdGU6IFBvTGlzdFZpZXdEZXRhaWxUZW1wbGF0ZURpcmVjdGl2ZTtcblxuICBAVmlld0NoaWxkKCdwb3B1cCcsIHsgc3RhdGljOiB0cnVlIH0pIHBvUG9wdXBDb21wb25lbnQ6IFBvUG9wdXBDb21wb25lbnQ7XG5cbiAgcHJpdmF0ZSBkaWZmZXI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIGRpZmZlcnM6IEl0ZXJhYmxlRGlmZmVycywgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSkge1xuICAgIHN1cGVyKGxhbmd1YWdlU2VydmljZSk7XG4gICAgdGhpcy5kaWZmZXIgPSBkaWZmZXJzLmZpbmQoW10pLmNyZWF0ZShudWxsKTtcbiAgfVxuXG4gIGdldCBoYXNDb250ZW50VGVtcGxhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5saXN0Vmlld0NvbnRlbnRUZW1wbGF0ZTtcbiAgfVxuXG4gIGdldCBoYXNEZXRhaWxUZW1wbGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmxpc3RWaWV3RGV0YWlsVGVtcGxhdGU7XG4gIH1cblxuICBnZXQgZGlzcGxheVNob3dNb3JlQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCAmJiB0aGlzLnNob3dNb3JlLm9ic2VydmVycy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0IHNob3dCdXR0b25zQWN0aW9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlQWN0aW9ucyAmJiB0aGlzLnZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDAgJiYgdGhpcy52aXNpYmxlQWN0aW9ucy5sZW5ndGggPD0gMjtcbiAgfVxuXG4gIGdldCBzaG93UG9wdXBBY3Rpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZpc2libGVBY3Rpb25zICYmIHRoaXMudmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMjtcbiAgfVxuXG4gIGdldCB0aXRsZUhhc0FjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50aXRsZUFjdGlvbi5vYnNlcnZlcnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGdldCB2aXNpYmxlQWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpb25zICYmIHRoaXMuYWN0aW9ucy5maWx0ZXIoYWN0aW9uID0+IGFjdGlvbi52aXNpYmxlICE9PSBmYWxzZSk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0U2hvd0RldGFpbCgpO1xuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIHRoaXMuY2hlY2tJdGVtc0NoYW5nZSgpO1xuICB9XG5cbiAgY2hlY2tUaXRsZVR5cGUoaXRlbTogYW55KSB7XG4gICAgaWYgKHRoaXMucHJvcGVydHlMaW5rICYmIGl0ZW1bdGhpcy5wcm9wZXJ0eUxpbmtdKSB7XG4gICAgICByZXR1cm4gaXRlbVt0aGlzLnByb3BlcnR5TGlua10uc3RhcnRzV2l0aCgnaHR0cCcpID8gJ2V4dGVybmFsTGluaycgOiAnaW50ZXJuYWxMaW5rJztcbiAgICB9XG5cbiAgICByZXR1cm4gJ25vTGluayc7XG4gIH1cblxuICBnZXRJdGVtVGl0bGUoaXRlbSkge1xuICAgIHJldHVybiB0aGlzLmhhc0NvbnRlbnRUZW1wbGF0ZSAmJiB0aGlzLmxpc3RWaWV3Q29udGVudFRlbXBsYXRlLnRpdGxlXG4gICAgICA/IHRoaXMubGlzdFZpZXdDb250ZW50VGVtcGxhdGUudGl0bGUoaXRlbSlcbiAgICAgIDogaXRlbVt0aGlzLnByb3BlcnR5VGl0bGVdO1xuICB9XG5cbiAgaGFzSXRlbXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcmV0dXJuQm9vbGVhblZhbHVlKGxpc3RWaWV3QWN0aW9uOiBQb0xpc3RWaWV3QWN0aW9uLCBpdGVtOiBhbnkpIHtcbiAgICByZXR1cm4gaXNUeXBlb2YobGlzdFZpZXdBY3Rpb24uZGlzYWJsZWQsICdmdW5jdGlvbicpXG4gICAgICA/ICg8YW55Pmxpc3RWaWV3QWN0aW9uKS5kaXNhYmxlZChpdGVtKVxuICAgICAgOiBsaXN0Vmlld0FjdGlvbi5kaXNhYmxlZDtcbiAgfVxuXG4gIHRyYWNrQnkoaW5kZXgpIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICB0b2dnbGVQb3B1cChpdGVtLCB0YXJnZXRSZWY6IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5wb3B1cFRhcmdldCA9IHRhcmdldFJlZjtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHRoaXMucG9Qb3B1cENvbXBvbmVudC50b2dnbGUoaXRlbSk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrSXRlbXNDaGFuZ2UoKSB7XG4gICAgY29uc3QgY2hhbmdlc0l0ZW1zID0gdGhpcy5kaWZmZXIuZGlmZih0aGlzLml0ZW1zKTtcblxuICAgIGlmIChjaGFuZ2VzSXRlbXMgJiYgdGhpcy5zZWxlY3RBbGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc0l0ZW1zICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggJiYgdGhpcy5zZWxlY3QgJiYgIXRoaXMuaGlkZVNlbGVjdEFsbCkge1xuICAgICAgdGhpcy5zaG93SGVhZGVyID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRTaG93RGV0YWlsKCkge1xuICAgIGlmICh0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCAmJiB0aGlzLmhhc0RldGFpbFRlbXBsYXRlICYmIHRoaXMubGlzdFZpZXdEZXRhaWxUZW1wbGF0ZS5zaG93RGV0YWlsKSB7XG4gICAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiAoaXRlbS4kc2hvd0RldGFpbCA9IHRoaXMubGlzdFZpZXdEZXRhaWxUZW1wbGF0ZS5zaG93RGV0YWlsKGl0ZW0pKSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIFtjbGFzcy5wby1saXN0LXZpZXctbWFpbi1jb250YWluZXItaGVhZGVyXT1cInNob3dIZWFkZXJcIlxuICBbY2xhc3MucG8tbGlzdC12aWV3LW1haW4tY29udGFpbmVyXT1cIiFzaG93SGVhZGVyXCJcbiAgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRcIlxuPlxuICA8ZGl2ICpuZ0lmPVwic2hvd0hlYWRlclwiIGNsYXNzPVwicG8tbGlzdC12aWV3LW1haW4taGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInBvLWNoZWNrYm94LWdyb3VwLWl0ZW1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwby1saXN0LXZpZXctbWFpbi1zZWxlY3RcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJwby1pbnB1dCBwby1jaGVja2JveC1ncm91cC1pbnB1dFwiXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBbY2xhc3MucG8tY2hlY2tib3gtZ3JvdXAtaW5wdXQtY2hlY2tlZF09XCJzZWxlY3RBbGxcIlxuICAgICAgICAgIFtjbGFzcy5wby1jaGVja2JveC1ncm91cC1pbnB1dC1pbmRldGVybWluYXRlXT1cInNlbGVjdEFsbCA9PT0gbnVsbFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIGNsYXNzPVwicG8tY2hlY2tib3gtZ3JvdXAtbGFiZWwgcG8tbGlzdC12aWV3LXNlbGVjdGFibGUtbGFiZWwgcG8tY2xpY2thYmxlXCJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0QWxsTGlzdEl0ZW1zKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgbGl0ZXJhbHMuc2VsZWN0QWxsIH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInBvLWxpc3Qtdmlldy1tYWluLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicG8tbGlzdC12aWV3XCIgKm5nSWY9XCIhaGFzSXRlbXMoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBvLWxpc3Qtdmlldy1jb250YWluZXItbm8tZGF0YSBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgICA8c3Bhbj4ge3sgbGl0ZXJhbHMubm9EYXRhIH19IDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgbGV0IGluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwby1saXN0LXZpZXdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvLWxpc3Qtdmlldy1jb250YWluZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicG8tbGlzdC12aWV3LWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvLWxpc3Qtdmlldy10aXRsZVwiIFtuZ1N3aXRjaF09XCJjaGVja1RpdGxlVHlwZShpdGVtKVwiPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0XCIgY2xhc3M9XCJwby1saXN0LXZpZXctc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInBvLWlucHV0IHBvLWNoZWNrYm94LWdyb3VwLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MucG8tY2hlY2tib3gtZ3JvdXAtaW5wdXQtY2hlY2tlZF09XCJpdGVtLiRzZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG8tY2hlY2tib3gtZ3JvdXAtbGFiZWwgcG8tbGlzdC12aWV3LXNlbGVjdGFibGUtbGFiZWwgcG8tY2xpY2thYmxlXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RMaXN0SXRlbShpdGVtKVwiXG4gICAgICAgICAgICAgICAgPjwvbGFiZWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInZXh0ZXJuYWxMaW5rJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwby1saXN0LXZpZXctdGl0bGUtbGlua1wiXG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICBbaHJlZl09XCJpdGVtW3Byb3BlcnR5TGlua11cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW5UaXRsZUFjdGlvbihpdGVtKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBnZXRJdGVtVGl0bGUoaXRlbSkgfX1cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInaW50ZXJuYWxMaW5rJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwby1saXN0LXZpZXctdGl0bGUtbGlua1wiXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiaXRlbVtwcm9wZXJ0eUxpbmtdXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuVGl0bGVBY3Rpb24oaXRlbSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgZ2V0SXRlbVRpdGxlKGl0ZW0pIH19XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ25vTGluaydcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicG8tbGlzdC12aWV3LXRpdGxlLW5vLWxpbmtcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby1saXN0LXZpZXctdGl0bGUtbGlua109XCJ0aXRsZUhhc0FjdGlvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRpdGxlSGFzQWN0aW9uICYmIHJ1blRpdGxlQWN0aW9uKGl0ZW0pXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGdldEl0ZW1UaXRsZShpdGVtKSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dCdXR0b25zQWN0aW9uc1wiIGNsYXNzPVwicG8tbGlzdC12aWV3LWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPHBvLWJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgdmlzaWJsZUFjdGlvbnNcIlxuICAgICAgICAgICAgICAgIHAtc21hbGw9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbcC1kaXNhYmxlZF09XCJyZXR1cm5Cb29sZWFuVmFsdWUoYWN0aW9uLCBpdGVtKVwiXG4gICAgICAgICAgICAgICAgW3AtaWNvbl09XCJhY3Rpb24uaWNvblwiXG4gICAgICAgICAgICAgICAgW3AtbGFiZWxdPVwiYWN0aW9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICBbcC1raW5kXT1cImFjdGlvbi50eXBlXCJcbiAgICAgICAgICAgICAgICAocC1jbGljayk9XCJvbkNsaWNrQWN0aW9uKGFjdGlvbiwgaXRlbSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvcG8tYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93UG9wdXBBY3Rpb25zXCIgY2xhc3M9XCJwby1saXN0LXZpZXctbW9yZS1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgI3BvcHVwVGFyZ2V0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwby1pY29uIHBvLWljb24tbW9yZSBwby1saXN0LXZpZXctbW9yZS1pY29uIHBvLWNsaWNrYWJsZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBvcHVwKGl0ZW0sIHBvcHVwVGFyZ2V0KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaGFzQ29udGVudFRlbXBsYXRlXCIgY2xhc3M9XCJwby1saXN0LXZpZXctY29udGVudFwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RWaWV3Q29udGVudFRlbXBsYXRlLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtLCBpbmRleDogaW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBAc2hvd0hpZGVEZXRhaWwgKm5nSWY9XCJoYXNEZXRhaWxUZW1wbGF0ZSAmJiBpdGVtLiRzaG93RGV0YWlsXCIgY2xhc3M9XCJwby1saXN0LXZpZXctZGV0YWlsXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdFZpZXdEZXRhaWxUZW1wbGF0ZS50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSwgaW5kZXg6IGluZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cImhhc0RldGFpbFRlbXBsYXRlXCIgY2xhc3M9XCJwby1saXN0LXZpZXctZGV0YWlsLWJ1dHRvblwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicG8tY2xpY2thYmxlXCIgKGNsaWNrKT1cIml0ZW0uJHNob3dEZXRhaWwgPSAhaXRlbS4kc2hvd0RldGFpbFwiPlxuICAgICAgICAgICAge3sgaXRlbS4kc2hvd0RldGFpbCA/IGxpdGVyYWxzLmhpZGVEZXRhaWxzIDogbGl0ZXJhbHMuc2hvd0RldGFpbHMgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJkaXNwbGF5U2hvd01vcmVCdXR0b25cIiBjbGFzcz1cInBvLW1iLTIgcG8tdGV4dC1jZW50ZXJcIj5cbiAgPHBvLWJ1dHRvbiBbcC1kaXNhYmxlZF09XCJzaG93TW9yZURpc2FibGVkXCIgW3AtbGFiZWxdPVwibGl0ZXJhbHMubG9hZE1vcmVEYXRhXCIgKHAtY2xpY2spPVwib25TaG93TW9yZSgpXCI+IDwvcG8tYnV0dG9uPlxuPC9kaXY+XG5cbjxwby1wb3B1cCAjcG9wdXAgW3AtYWN0aW9uc109XCJhY3Rpb25zXCIgW3AtdGFyZ2V0XT1cInBvcHVwVGFyZ2V0XCI+IDwvcG8tcG9wdXA+XG4iXX0=
|
|
@@ -5,11 +5,28 @@ import * as i1 from "./services/po-menu-global.service";
|
|
|
5
5
|
import * as i2 from "./services/po-menu.service";
|
|
6
6
|
import * as i3 from "../../services/po-language/po-language.service";
|
|
7
7
|
export const poMenuLiteralsDefault = {
|
|
8
|
-
en: {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
en: {
|
|
9
|
+
itemNotFound: 'Item not found.',
|
|
10
|
+
emptyLabelError: 'Attribute PoMenuItem.label can not be empty.',
|
|
11
|
+
logomarcaHome: 'Home logo'
|
|
12
|
+
},
|
|
13
|
+
es: {
|
|
14
|
+
itemNotFound: 'Elemento no encontrado.',
|
|
15
|
+
emptyLabelError: 'El atributo PoMenuItem.label no puede ser vacío.',
|
|
16
|
+
logomarcaHome: 'Logomarca inicio'
|
|
17
|
+
},
|
|
18
|
+
pt: {
|
|
19
|
+
itemNotFound: 'Item não encontrado.',
|
|
20
|
+
emptyLabelError: 'O atributo PoMenuItem.label não pode ser vazio.',
|
|
21
|
+
logomarcaHome: 'Logomarca home'
|
|
22
|
+
},
|
|
23
|
+
ru: {
|
|
24
|
+
itemNotFound: 'Предмет не найден.',
|
|
25
|
+
emptyLabelError: 'Атрибут PoMenuItem.label не может быть пустым.',
|
|
26
|
+
logomarcaHome: 'Дом Логомарка'
|
|
27
|
+
}
|
|
12
28
|
};
|
|
29
|
+
export const MAX_LENGHT = 125;
|
|
13
30
|
/**
|
|
14
31
|
* @description
|
|
15
32
|
*
|
|
@@ -29,6 +46,7 @@ export class PoMenuBaseComponent {
|
|
|
29
46
|
};
|
|
30
47
|
this._collapsed = false;
|
|
31
48
|
this._filter = false;
|
|
49
|
+
this._logoAlt = this.literals.logomarcaHome;
|
|
32
50
|
this._maxLevel = 4;
|
|
33
51
|
this._menus = [];
|
|
34
52
|
}
|
|
@@ -169,6 +187,22 @@ export class PoMenuBaseComponent {
|
|
|
169
187
|
get logo() {
|
|
170
188
|
return this._logo;
|
|
171
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
* @optional
|
|
192
|
+
*
|
|
193
|
+
* @description
|
|
194
|
+
*
|
|
195
|
+
* Texto alternativo para o logo.
|
|
196
|
+
*
|
|
197
|
+
* > Caso esta propriedade seja indefinida ou inválida o texto padrão será "Logomarca home".
|
|
198
|
+
*/
|
|
199
|
+
set logoAlt(value) {
|
|
200
|
+
const alt = isTypeof(value, 'string') && value.trim() ? this.maxLength(value) : undefined;
|
|
201
|
+
this._logoAlt = alt ?? this._logoAlt;
|
|
202
|
+
}
|
|
203
|
+
get logoAlt() {
|
|
204
|
+
return this._logoAlt;
|
|
205
|
+
}
|
|
172
206
|
/**
|
|
173
207
|
* @optional
|
|
174
208
|
*
|
|
@@ -282,9 +316,12 @@ export class PoMenuBaseComponent {
|
|
|
282
316
|
});
|
|
283
317
|
}
|
|
284
318
|
}
|
|
319
|
+
maxLength(value) {
|
|
320
|
+
return value.length > MAX_LENGHT ? value.toString().substring(0, MAX_LENGHT) : value;
|
|
321
|
+
}
|
|
285
322
|
}
|
|
286
323
|
PoMenuBaseComponent.ɵfac = function PoMenuBaseComponent_Factory(t) { return new (t || PoMenuBaseComponent)(i0.ɵɵdirectiveInject(i1.PoMenuGlobalService), i0.ɵɵdirectiveInject(i2.PoMenuService), i0.ɵɵdirectiveInject(i3.PoLanguageService)); };
|
|
287
|
-
PoMenuBaseComponent.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoMenuBaseComponent, inputs: { collapsed: ["p-collapsed", "collapsed"], menus: ["p-menus", "menus"], filter: ["p-filter", "filter"], service: ["p-service", "service"], params: ["p-params", "params"], logo: ["p-logo", "logo"], shortLogo: ["p-short-logo", "shortLogo"] } });
|
|
324
|
+
PoMenuBaseComponent.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoMenuBaseComponent, inputs: { collapsed: ["p-collapsed", "collapsed"], menus: ["p-menus", "menus"], filter: ["p-filter", "filter"], service: ["p-service", "service"], params: ["p-params", "params"], logo: ["p-logo", "logo"], logoAlt: ["p-logo-alt", "logoAlt"], shortLogo: ["p-short-logo", "shortLogo"] } });
|
|
288
325
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoMenuBaseComponent, [{
|
|
289
326
|
type: Directive
|
|
290
327
|
}], function () { return [{ type: i1.PoMenuGlobalService }, { type: i2.PoMenuService }, { type: i3.PoLanguageService }]; }, { collapsed: [{
|
|
@@ -305,8 +342,11 @@ PoMenuBaseComponent.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoMenuB
|
|
|
305
342
|
}], logo: [{
|
|
306
343
|
type: Input,
|
|
307
344
|
args: ['p-logo']
|
|
345
|
+
}], logoAlt: [{
|
|
346
|
+
type: Input,
|
|
347
|
+
args: ['p-logo-alt']
|
|
308
348
|
}], shortLogo: [{
|
|
309
349
|
type: Input,
|
|
310
350
|
args: ['p-short-logo']
|
|
311
351
|
}] }); })();
|
|
312
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbWVudS1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1tZW51L3BvLW1lbnUtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osY0FBYyxFQUNkLFFBQVEsRUFDUixVQUFVLEVBQ1YsSUFBSSxFQUNMLE1BQU0sa0JBQWtCLENBQUM7Ozs7O0FBUzFCLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHO0lBQ25DLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsOENBQThDLEVBQUU7SUFDeEcsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLHlCQUF5QixFQUFFLGVBQWUsRUFBRSxrREFBa0QsRUFBRTtJQUNwSCxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsZUFBZSxFQUFFLGlEQUFpRCxFQUFFO0lBQ2hILEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsZ0RBQWdELEVBQUU7Q0FDOUcsQ0FBQztBQUVGOzs7Ozs7O0dBT0c7QUFFSCxNQUFNLE9BQWdCLG1CQUFtQjtJQXNNdkMsWUFDUyxpQkFBc0MsRUFDdEMsV0FBMEIsRUFDMUIsZUFBa0M7UUFGbEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFxQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUMxQixvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUFsTWxDLGFBQVEsR0FBRztZQUNsQixHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNuRSxHQUFHLHFCQUFx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QXRUbUIsbUJBQW1CO3NFQUFuQixtQkFBbUI7dUZBQW5CLG1CQUFtQjtjQUR4QyxTQUFTO2tJQXlDa0IsU0FBUztrQkFBbEMsS0FBSzttQkFBQyxhQUFhO1lBV0UsS0FBSztrQkFBMUIsS0FBSzttQkFBQyxTQUFTO1lBZ0NPLE1BQU07a0JBQTVCLEtBQUs7bUJBQUMsVUFBVTtZQW1DTyxPQUFPO2tCQUE5QixLQUFLO21CQUFDLFdBQVc7WUE4QkssTUFBTTtrQkFBNUIsS0FBSzttQkFBQyxVQUFVO1lBb0JJLElBQUk7a0JBQXhCLEtBQUs7bUJBQUMsUUFBUTtZQXNCWSxTQUFTO2tCQUFuQyxLQUFLO21CQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dCwgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIGJyb3dzZXJMYW5ndWFnZSxcbiAgY29udmVydFRvQm9vbGVhbixcbiAgY29udmVydFRvSW50LFxuICBpc0V4dGVybmFsTGluayxcbiAgaXNUeXBlb2YsXG4gIHZhbGlkVmFsdWUsXG4gIHV1aWRcbn0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbCc7XG5cbmltcG9ydCB7IFBvTWVudUZpbHRlciB9IGZyb20gJy4vcG8tbWVudS1maWx0ZXIvcG8tbWVudS1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTWVudUl0ZW0gfSBmcm9tICcuL3BvLW1lbnUtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9NZW51U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTWVudUdsb2JhbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLW1lbnUtZ2xvYmFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IHBvTG9jYWxlRGVmYXVsdCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLmNvbnN0YW50JztcblxuZXhwb3J0IGNvbnN0IHBvTWVudUxpdGVyYWxzRGVmYXVsdCA9IHtcbiAgZW46IHsgaXRlbU5vdEZvdW5kOiAnSXRlbSBub3QgZm91bmQuJywgZW1wdHlMYWJlbEVycm9yOiAnQXR0cmlidXRlIFBvTWVudUl0ZW0ubGFiZWwgY2FuIG5vdCBiZSBlbXB0eS4nIH0sXG4gIGVzOiB7IGl0ZW1Ob3RGb3VuZDogJ0VsZW1lbnRvIG5vIGVuY29udHJhZG8uJywgZW1wdHlMYWJlbEVycm9yOiAnRWwgYXRyaWJ1dG8gUG9NZW51SXRlbS5sYWJlbCBubyBwdWVkZSBzZXIgdmFjw61vLicgfSxcbiAgcHQ6IHsgaXRlbU5vdEZvdW5kOiAnSXRlbSBuw6NvIGVuY29udHJhZG8uJywgZW1wdHlMYWJlbEVycm9yOiAnTyBhdHJpYnV0byBQb01lbnVJdGVtLmxhYmVsIG7Do28gcG9kZSBzZXIgdmF6aW8uJyB9LFxuICBydTogeyBpdGVtTm90Rm91bmQ6ICfQn9GA0LXQtNC80LXRgiDQvdC1INC90LDQudC00LXQvS4nLCBlbXB0eUxhYmVsRXJyb3I6ICfQkNGC0YDQuNCx0YPRgiBQb01lbnVJdGVtLmxhYmVsINC90LUg0LzQvtC20LXRgiDQsdGL0YLRjCDQv9GD0YHRgtGL0LwuJyB9XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIEVzdGUgw6kgdW0gY29tcG9uZW50ZSBkZSBtZW51IGxhdGVyYWwgcXVlIMOpIHV0aWxpemFkbyBwYXJhIG5hdmVnYcOnw6NvIG5hcyBww6FnaW5hcyBkZSB1bWEgYXBsaWNhw6fDo28uXG4gKlxuICogTyBjb21wb25lbnRlIHBvLW1lbnUgcmVjZWJlIHVtYSBsaXN0YSBkZSBvYmpldG9zIGRvIHRpcG8gYE1lbnVJdGVtYCBjb20gYXMgaW5mb3JtYcOnw7VlcyBkb3MgaXRlbnMgZGUgbWVudSBjb21vXG4gKiB0ZXh0b3MsIGxpbmtzIHBhcmEgcmVkaXJlY2lvbmFtZW50bywgYcOnw7VlcywgYXTDqSA0IG7DrXZlaXMgZGUgbWVudSBlIMOtY29uZXMgcGFyYSBvIHByaW1laXJvIG7DrXZlbCBkZSBtZW51LlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb01lbnVCYXNlQ29tcG9uZW50IHtcbiAgYWxsb3dJY29uczogYm9vbGVhbjtcbiAgYWxsb3dDb2xsYXBzZU1lbnU6IGJvb2xlYW47XG5cbiAgZmlsdGVyZWRJdGVtcztcbiAgZmlsdGVyU2VydmljZTogUG9NZW51RmlsdGVyO1xuXG4gIHJlYWRvbmx5IGxpdGVyYWxzID0ge1xuICAgIC4uLnBvTWVudUxpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlU2VydmljZS5nZXRMYW5ndWFnZURlZmF1bHQoKV0sXG4gICAgLi4ucG9NZW51TGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldFNob3J0TGFuZ3VhZ2UoKV1cbiAgfTtcblxuICBwcml2YXRlIF9jb2xsYXBzZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZmlsdGVyID0gZmFsc2U7XG4gIHByaXZhdGUgX2xldmVsO1xuICBwcml2YXRlIF9sb2dvOiBzdHJpbmc7XG4gIHByaXZhdGUgX21heExldmVsID0gNDtcbiAgcHJpdmF0ZSBfbWVudXMgPSBbXTtcbiAgcHJpdmF0ZSBfcGFyYW1zOiBhbnk7XG4gIHByaXZhdGUgX3NlcnZpY2U6IHN0cmluZyB8IFBvTWVudUZpbHRlcjtcbiAgcHJpdmF0ZSBfc2hvcnRMb2dvOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQ29sYXBzYSAocmV0cmFpKSBvIG1lbnUgZSBjYXNvIHJlY2ViYSBvIHZhbG9yIGBmYWxzZWAgZXhwYW5kZSBvIG1lbnUuXG4gICAqXG4gICAqID4gVXRpbGl6ZSBlc3RhIHByb3ByaWVkYWRlIHBhcmEgaW5pY2lhciBvIG1lbnUgY29sYXBzYWRvLlxuICAgKlxuICAgKiA+IEFvIHV0aWxpemFyIG9zIG3DqXRvZG9zIFtgY29sYXBzZWBdKGRvY3VtZW50YXRpb24vcG8tbWVudSNjb2xhcHNlTWV0aG9kKSwgW2BleHBhbmRgXShkb2N1bWVudGF0aW9uL3BvLW1lbnUjZXhwYW5kTWV0aG9kKSBlXG4gICAqIFtgdG9nZ2xlYF0oZG9jdW1lbnRhdGlvbi9wby1tZW51I3RvZ2dsZU1ldGhvZCkgbyB2YWxvciBkZXN0YSBwcm9wcmllZGFkZSBuw6NvIMOpIGFsdGVyYWRvLlxuICAgKlxuICAgKiAqKkltcG9ydGFudGU6KipcbiAgICpcbiAgICogPiBPIG1lbnUgc2Vyw6EgY29sYXBzYWRvL2V4cGFuZGlkbyBhcGVuYXMgc2UgdG9kb3Mgb3MgaXRlbnMgZGUgbWVudSB0aXZlcmVtIHZhbG9yIG5hcyBwcm9wcmllZGFkZXMgYGljb25gIGUgYHNob3J0TGFiZWxgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtY29sbGFwc2VkJykgc2V0IGNvbGxhcHNlZChjb2xsYXBzZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9jb2xsYXBzZWQgPSBjb252ZXJ0VG9Cb29sZWFuKGNvbGxhcHNlZCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlQ29sbGFwc2VDbGFzcygpO1xuICB9XG5cbiAgZ2V0IGNvbGxhcHNlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sbGFwc2VkO1xuICB9XG5cbiAgLyoqIExpc3RhIGRvcyBpdGVucyBkbyBtZW51LiBTZSBvIHZhbG9yIGVzdGl2ZXIgaW5kZWZpbmlkbyBvdSBpbnbDoWxpZG8sIHNlcsOhIGluaWNpYWxpemFkbyBjb21vIHVtIGFycmF5IHZhemlvLiAqL1xuICBASW5wdXQoJ3AtbWVudXMnKSBzZXQgbWVudXMobWVudXM6IEFycmF5PFBvTWVudUl0ZW0+KSB7XG4gICAgdGhpcy5fbWVudXMgPSBBcnJheS5pc0FycmF5KG1lbnVzKSA/IG1lbnVzIDogW107XG5cbiAgICB0aGlzLm1lbnVHbG9iYWxTZXJ2aWNlLnNlbmRNZW51cyhtZW51cyk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHVybFJvdXRlciA9IHRoaXMuY2hlY2tpbmdSb3V0ZXJDaGlsZHJlbkZyYWdtZW50cygpO1xuICAgICAgdGhpcy5jaGVja0FjdGl2ZU1lbnVCeVVybCh1cmxSb3V0ZXIpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IG1lbnVzKCkge1xuICAgIHJldHVybiB0aGlzLl9tZW51cztcbiAgfVxuXG4gIGdldCBtYXhMZXZlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4TGV2ZWw7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBIYWJpbGl0YSB1bSBjYW1wbyBwYXJhIHBlc3F1aXNhIG5vIG1lbnUuXG4gICAqIEEgcGVzcXVpc2Egw6kgcmVhbGl6YWRhIGVtIHRvZG9zIG9zIG7DrXZlaXMgZG8gbWVudSBlIGJ1c2NhIGFwZW5hcyBwZWxvcyBpdGVucyBxdWUgY29udMOpbSB1bWEgYcOnw6NvIGUvb3UgbGluayBkZWZpbmlkb3MsXG4gICAqIG91IHRhbWLDqW0sIHBvZGUgc2VyIHJlYWxpemFkYSBhdHJhdsOpcyBkZSB1bSBzZXJ2acOnbyBkZWZpbmlkbyBuYSBwcm9wcmllZGFkZSBgcC1zZXJ2aWNlYC5cbiAgICpcbiAgICogPiBPIGNhbXBvIGRlIHBlc3F1aXNhIMOpIGRlc2FiaWxpdGFkbyBzZSBvIG1lbnUgZXN0aXZlciBjb2xhcHNhZG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1maWx0ZXInKSBzZXQgZmlsdGVyKGZpbHRlcjogYm9vbGVhbikge1xuICAgIHRoaXMuX2ZpbHRlciA9IDxhbnk+ZmlsdGVyID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKGZpbHRlcik7XG4gICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gWy4uLnRoaXMuX21lbnVzXTtcbiAgfVxuXG4gIGdldCBmaWx0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE5lc3RhIHByb3ByaWVkYWRlIGRldmUgc2VyIGluZm9ybWFkYSBhIFVSTCBkbyBzZXJ2acOnbyBlbSBxdWUgc2Vyw6EgdXRpbGl6YWRvIHBhcmEgcmVhbGl6YXIgbyBmaWx0cm8gZGUgaXRlbnMgZG9cbiAgICogbWVudSBxdWFuZG8gcmVhbGl6YXIgdW1hIGJ1c2NhLiBDYXNvIGhhamEgYSBuZWNlc3NpZGFkZSBkZSBjdXN0b21pemHDp8OjbywgcG9kZSBzZXIgaW5mb3JtYWRvIHVtXG4gICAqIHNlcnZpw6dvIGltcGxlbWVudGFuZG8gYSBpbnRlcmZhY2UgYFBvTWVudUZpbHRlcmAuXG4gICAqXG4gICAqIENhc28gdXRpbGl6YWRhIHVtYSBVUkwsIG8gc2VydmnDp28gZGV2ZSByZXRvcm5hciBvcyBkYWRvcyBjb25mb3JtZSBvXG4gICAqIFtHdWlhIGRlIGltcGxlbWVudGHDp8OjbyBkZSBBUElzXShodHRwczovL3BvLXVpLmlvL2d1aWRlcy9hcGkpIGRvIFBPIFVJLlxuICAgKlxuICAgKiBRdWFuZG8gdXRpbGl6YWRhIHVtYSBVUkwgZGUgc2VydmnDp28sIHNlcsOhIHJlYWxpemFkbyB1bSAqR0VUKiBuYSBVUkwgaW5mb3JtYWRhLCBwYXNzYW5kbyBvIHZhbG9yIGRpZ2l0YWRvXG4gICAqIG5vIHBhcsOibWV0cm8gYHNlYXJjaGAsIHZlamEgZXhlbXBsbzpcbiAgICpcbiAgICogPiBPIGZpbHRybyBubyBzZXJ2acOnbyBzZXLDoSByZWFsaXphZG8gY2FzbyBjb250ZW5oYSBubyBtw61uaW1vIHRyw6pzIGNhcmFjdGVyZXMgbm8gY2FtcG8gZGUgYnVzY2EsIHBvciBleGVtcGxvIGB0b3RgLlxuICAgKlxuICAgKiBgYGBcbiAgICogPHBvLW1lbnUgcC1zZXJ2aWNlPVwiL2FwaS92MS9mbmQvbWVudVwiPlxuICAgKiA8L3BvLW1lbnU+XG4gICAqXG4gICAqIFJlcXVpc2nDp8OjbzogR0VUIC9hcGkvdjEvZm5kL21lbnU/c2VhcmNoPWNvbnRhc1xuICAgKiBgYGBcbiAgICpcbiAgICogPiDDiSBuZWNlc3PDoXJpbyBxdWUgcHJvcHJpZWRhZGUgYHAtZmlsdGVyYCBlc3RlamEgaGFiaWxpdGFkYS5cbiAgICovXG4gIEBJbnB1dCgncC1zZXJ2aWNlJykgc2V0IHNlcnZpY2UodmFsdWU6IHN0cmluZyB8IFBvTWVudUZpbHRlcikge1xuICAgIHRoaXMuX3NlcnZpY2UgPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLmNvbmZpZ1NlcnZpY2UodGhpcy5zZXJ2aWNlKTtcbiAgfVxuXG4gIGdldCBzZXJ2aWNlKCkge1xuICAgIHJldHVybiB0aGlzLl9zZXJ2aWNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGV2ZSBzZXIgaW5mb3JtYWRvIHVtIG9iamV0byBxdWUgZGVzZWphLXNlIHV0aWxpemFyIG5hIHJlcXVpc2nDp8OjbyBkZSBmaWx0cm8gZG9zIGl0ZW5zIGRlIG1lbnUuXG4gICAqXG4gICAqIENhc28gdXRpbGl6YWRvIHVtIHNlcnZpw6dvIGN1c3RvbWl6YWRvLCBpbXBsZW1lbnRhbmRvIGEgaW50ZXJmYWNlIGBQb01lbnVGaWx0ZXJgLCBvIHZhbG9yIGRlc3RhIHByb3ByaWVkYWRlXG4gICAqIHNlcsOhIHBhc3NhZG8gY29tbyBwYXLDom1ldHJvLCBuYSBmdW7Dp8OjbyBgZ2V0RmlsdGVyZWREYXRhYC5cbiAgICpcbiAgICogUXVhbmRvIHV0aWxpemFkYSB1bWEgVVJMIGRlIHNlcnZpw6dvLCBzZXLDoSByZWFsaXphZG8gdW0gKkdFVCogbmEgVVJMIGluZm9ybWFkYSwgcGFzc2FuZG8gb3MgdmFsb3JlcyBpbmZvcm1hZG9zXG4gICAqIG5lc3RhIHByb3ByaWVkYWRlIGVtIGNvbmp1bnRvIGNvbSBvIHBhcsOibWV0cm8gYHNlYXJjaGAsIHZlamEgZXhlbXBsbzpcbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1tZW51IHAtc2VydmljZT1cIi9hcGkvdjEvZm5kL21lbnVcIiBbcC1wYXJhbXNdPVwieyBjb21wYW55OiAxLCB1c2VyOiAyOTc3Njc1MTIgfVwiPlxuICAgKiA8L3BvLW1lbnU+XG4gICAqXG4gICAqIFJlcXVpc2nDp8OjbzogR0VUIC9hcGkvdjEvZm5kL21lbnU/c2VhcmNoPWNvbnRhcyZjb21wYW55PTEmdXNlcj0yOTc3Njc1MTJcbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoJ3AtcGFyYW1zJykgc2V0IHBhcmFtcyh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fcGFyYW1zID0gdmFsdWUgJiYgaXNUeXBlb2YodmFsdWUsICdvYmplY3QnKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IHBhcmFtcygpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQ2FtaW5obyBwYXJhIGEgbG9nb21hcmNhLCBxdWUgc2Vyw6EgZXhpYmlkYSBxdWFuZG8gbyBjb21wb25lbnRlIGVzdGl2ZXIgZXhwYW5kaWRvLCBsb2NhbGl6YWRhIG5hIHBhcnRlIHN1cGVyaW9yLlxuICAgKlxuICAgKiA+ICoqSW1wb3J0YW50ZToqKlxuICAgKiAtIENhc28gZXN0YSBwcm9wcmllZGFkZSBlc3RpdmVyIGluZGVmaW5pZGEgb3UgaW52w6FsaWRhIG8gZXNwYcOnbyBwYXJhIGxvZ29tYXJjYSBzZXLDoSByZW1vdmlkby5cbiAgICogLSBDb21vIGJvYSBwcsOhdGljYSwgaW5kaWNhLXNlIHV0aWxpemFyIGltYWdlbnMgY29tIGF0w6kgYDI0cHhgIGRlIGFsdHVyYSBlIGAyMjRweGAgZGUgbGFyZ3VyYSxcbiAgICogY2FzbyB1bHRyYXBhc3NhciBlc3NlcyB2YWxvcmVzIGEgaW1hZ2VtIHNlcsOhIHJlYWRlcXVhZGEgbm8gZXNwYcOnbyBkaXNwb27DrXZlbC5cbiAgICovXG4gIEBJbnB1dCgncC1sb2dvJykgc2V0IGxvZ28odmFsdWU6IGFueSkge1xuICAgIHRoaXMuX2xvZ28gPSBpc1R5cGVvZih2YWx1ZSwgJ3N0cmluZycpICYmIHZhbHVlLnRyaW0oKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IGxvZ28oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ287XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBDYW1pbmhvIHBhcmEgYSBsb2dvbWFyY2EsIHF1ZSBzZXLDoSBleGliaWRhIHF1YW5kbyBvIGNvbXBvbmVudGUgZXN0aXZlciBjb2xhcHNhZG8sIGxvY2FsaXphZGEgbmEgcGFydGUgc3VwZXJpb3IuXG4gICAqXG4gICAqID4gKipJbXBvcnRhbnRlOioqXG4gICAqIC0gQ2FzbyBlc3RhIHByb3ByaWVkYWRlIGVzdGl2ZXIgaW5kZWZpbmlkYSBvdSBpbnbDoWxpZGEgcGFzc2EgYSBhc3N1bWlyIG8gdmFsb3IgaW5mb3JtYWRvIG5hIHByb3ByaWVkYWRlIGBwLWxvZ29gIGUgbmEgYXVzw6puY2lhIGRlc3RhIG9cbiAgICogZXNwYcOnbyBwYXJhIGxvZ29tYXJjYSBzZXLDoSByZW1vdmlkby5cbiAgICogLSBDb21vIGJvYSBwcsOhdGljYSwgaW5kaWNhLXNlIHV0aWxpemFyIGltYWdlbnMgY29tIGF0w6kgYDQ4cHhgIGRlIGFsdHVyYSBlIGA0OHB4YCBkZSBsYXJndXJhLFxuICAgKiBjYXNvIHVsdHJhcGFzc2FyIGVzc2VzIHZhbG9yZXMgYSBpbWFnZW0gc2Vyw6EgcmVhZGVxdWFkYSBubyBlc3Bhw6dvIGRpc3BvbsOtdmVsLlxuICAgKiAtIENhc28gbsOjbyBpbmZvcm1hciB1bSB2YWxvciwgZXN0YSBwcm9wcmllZGFkZSBwYXNzYSBhIGFzc3VtaXIgbyB2YWxvciBpbmZvcm1hZG8gbmEgcHJvcHJpZWRhZGUgYHAtbG9nb2AuXG4gICAqL1xuICBASW5wdXQoJ3Atc2hvcnQtbG9nbycpIHNldCBzaG9ydExvZ28odmFsdWU6IGFueSkge1xuICAgIHRoaXMuX3Nob3J0TG9nbyA9IGlzVHlwZW9mKHZhbHVlLCAnc3RyaW5nJykgJiYgdmFsdWUudHJpbSgpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2hvcnRMb2dvKCkge1xuICAgIHJldHVybiB0aGlzLl9zaG9ydExvZ287XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbWVudUdsb2JhbFNlcnZpY2U6IFBvTWVudUdsb2JhbFNlcnZpY2UsXG4gICAgcHVibGljIG1lbnVTZXJ2aWNlOiBQb01lbnVTZXJ2aWNlLFxuICAgIHB1YmxpYyBsYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlXG4gICkge31cblxuICBwcm90ZWN0ZWQgc2V0TWVudUV4dHJhUHJvcGVydGllcygpIHtcbiAgICB0aGlzLmFsbG93SWNvbnMgPSAhIXRoaXMubWVudXMubGVuZ3RoO1xuICAgIHRoaXMuYWxsb3dDb2xsYXBzZU1lbnUgPSAhIXRoaXMubWVudXMubGVuZ3RoO1xuXG4gICAgdGhpcy5tZW51cy5mb3JFYWNoKG1lbnVJdGVtID0+IHtcbiAgICAgIHRoaXMuX2xldmVsID0gMTtcbiAgICAgIHRoaXMuYWxsb3dJY29ucyA9IHRoaXMuYWxsb3dJY29ucyA/IHZhbGlkVmFsdWUobWVudUl0ZW0uaWNvbikgOiBmYWxzZTtcbiAgICAgIHRoaXMuYWxsb3dDb2xsYXBzZU1lbnUgPSB0aGlzLmFsbG93Q29sbGFwc2VNZW51ICYmIHRoaXMuYWxsb3dJY29ucyA/IHZhbGlkVmFsdWUobWVudUl0ZW0uc2hvcnRMYWJlbCkgOiBmYWxzZTtcbiAgICAgIHRoaXMucmVtb3ZlQmFkZ2VBbGVydChtZW51SXRlbSk7XG4gICAgICB0aGlzLnNldE1lbnVJdGVtUHJvcGVydGllcyhtZW51SXRlbSk7XG5cbiAgICAgIGlmIChtZW51SXRlbS5zdWJJdGVtcykge1xuICAgICAgICB0aGlzLl9sZXZlbCsrO1xuICAgICAgICB0aGlzLnByb2Nlc3NTdWJJdGVtcyhtZW51SXRlbSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0TWVudUl0ZW1Qcm9wZXJ0aWVzKG1lbnVJdGVtOiBQb01lbnVJdGVtKTogdm9pZCB7XG4gICAgbWVudUl0ZW1bJ2lkJ10gPSBtZW51SXRlbVsnaWQnXSB8fCB1dWlkKCk7XG4gICAgbWVudUl0ZW1bJ2xldmVsJ10gPSB0aGlzLl9sZXZlbDtcbiAgICBtZW51SXRlbVsndHlwZSddID0gdGhpcy5zZXRNZW51VHlwZShtZW51SXRlbSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVNZW51cyhtZW51cyk6IHZvaWQge1xuICAgIG1lbnVzLmZvckVhY2gobWVudSA9PiB0aGlzLnZhbGlkYXRlTWVudShtZW51KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0TWVudVR5cGUobWVudUl0ZW06IFBvTWVudUl0ZW0pOiBzdHJpbmcge1xuICAgIGlmIChtZW51SXRlbS5zdWJJdGVtcyAmJiBtZW51SXRlbS5zdWJJdGVtcy5sZW5ndGggPiAwICYmIHRoaXMuX2xldmVsIDwgdGhpcy5tYXhMZXZlbCkge1xuICAgICAgcmV0dXJuICdzdWJJdGVtcyc7XG4gICAgfVxuICAgIGlmICghbWVudUl0ZW0ubGluaykge1xuICAgICAgcmV0dXJuICdub0xpbmsnO1xuICAgIH1cbiAgICBpZiAoaXNFeHRlcm5hbExpbmsobWVudUl0ZW0ubGluaykpIHtcbiAgICAgIHJldHVybiAnZXh0ZXJuYWxMaW5rJztcbiAgICB9XG4gICAgcmV0dXJuICdpbnRlcm5hbExpbmsnO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlKHNlcnZpY2U6IHN0cmluZyB8IFBvTWVudUZpbHRlcikge1xuICAgIGlmICh0eXBlb2Ygc2VydmljZSA9PT0gJ3N0cmluZycgJiYgc2VydmljZS50cmltKCkpIHtcbiAgICAgIC8vIHNlcnZpY2UgdXJsXG4gICAgICB0aGlzLm1lbnVTZXJ2aWNlLmNvbmZpZ1Byb3BlcnRpZXMoc2VydmljZSk7XG4gICAgICB0aGlzLmZpbHRlclNlcnZpY2UgPSB0aGlzLm1lbnVTZXJ2aWNlO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHNlcnZpY2UgPT09ICdvYmplY3QnICYmIHNlcnZpY2UuZ2V0RmlsdGVyZWREYXRhKSB7XG4gICAgICAvLyBjdXN0b20gc2VydmljZVxuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlID0gc2VydmljZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc1N1Ykl0ZW1zKG1lbnUpIHtcbiAgICBtZW51LnN1Ykl0ZW1zLmZvckVhY2goKG1lbnVJdGVtLCBpbmRleCwgbWVudUl0ZW1zKSA9PiB7XG4gICAgICBjb25zdCBwcmV2aW91c0l0ZW0gPSBtZW51SXRlbXNbaW5kZXggLSAxXTtcbiAgICAgIGlmIChwcmV2aW91c0l0ZW0gJiYgcHJldmlvdXNJdGVtLnN1Ykl0ZW1zKSB7XG4gICAgICAgIHRoaXMuX2xldmVsID0gcHJldmlvdXNJdGVtWydsZXZlbCddO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fbGV2ZWwgPD0gdGhpcy5tYXhMZXZlbCkge1xuICAgICAgICB0aGlzLnNldE1lbnVJdGVtUHJvcGVydGllcyhtZW51SXRlbSk7XG5cbiAgICAgICAgaWYgKG1lbnVJdGVtLnN1Ykl0ZW1zKSB7XG4gICAgICAgICAgdGhpcy5fbGV2ZWwrKztcbiAgICAgICAgICB0aGlzLnByb2Nlc3NTdWJJdGVtcyhtZW51SXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFtZW51WydiYWRnZUFsZXJ0J10pIHtcbiAgICAgICAgbWVudSA9IHRoaXMuc2V0TWVudUJhZGdlQWxlcnQobWVudSwgbWVudUl0ZW0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbWVudS5zdWJJdGVtcyA9IE9iamVjdC5hc3NpZ24oW10sIG1lbnUuc3ViSXRlbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVCYWRnZUFsZXJ0KG1lbnVJdGVtOiBQb01lbnVJdGVtKTogdm9pZCB7XG4gICAgaWYgKG1lbnVJdGVtWydiYWRnZUFsZXJ0J10pIHtcbiAgICAgIGRlbGV0ZSBtZW51SXRlbVsnYmFkZ2VBbGVydCddO1xuICAgIH1cblxuICAgIGlmIChtZW51SXRlbS5zdWJJdGVtcykge1xuICAgICAgbWVudUl0ZW0uc3ViSXRlbXMuZm9yRWFjaChzdWJJdGVtID0+IHRoaXMucmVtb3ZlQmFkZ2VBbGVydChzdWJJdGVtKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRNZW51QmFkZ2VBbGVydChwYXJlbnQ6IFBvTWVudUl0ZW0sIGNoaWxkOiBQb01lbnVJdGVtKTogUG9NZW51SXRlbSB7XG4gICAgY29uc3QgY2hpbGRIYXNTdWJJdGVtcyA9IGNoaWxkLnN1Ykl0ZW1zICYmIGNoaWxkLnN1Ykl0ZW1zLmxlbmd0aDtcbiAgICBjb25zdCBjaGlsZEhhc0JhZGdlQWxlcnQgPSBjaGlsZFsnYmFkZ2VBbGVydCddO1xuICAgIGNvbnN0IGNoaWxkSGFzQmFkZ2UgPSBjaGlsZC5iYWRnZSAmJiBjb252ZXJ0VG9JbnQoY2hpbGQuYmFkZ2UudmFsdWUpID49IDA7XG5cbiAgICBwYXJlbnRbJ2JhZGdlQWxlcnQnXSA9IGNoaWxkSGFzQmFkZ2VBbGVydCB8fCAoY2hpbGRIYXNCYWRnZSAmJiAhY2hpbGRIYXNTdWJJdGVtcyk7XG5cbiAgICByZXR1cm4gcGFyZW50O1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU1lbnUobWVudUl0ZW06IFBvTWVudUl0ZW0pOiB2b2lkIHtcbiAgICBpZiAoIW1lbnVJdGVtLmxhYmVsIHx8IG1lbnVJdGVtLmxhYmVsLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLmxpdGVyYWxzLmVtcHR5TGFiZWxFcnJvcik7XG4gICAgfSBlbHNlIGlmIChtZW51SXRlbS5zdWJJdGVtcykge1xuICAgICAgbWVudUl0ZW0uc3ViSXRlbXMuZm9yRWFjaChzdWJJdGVtID0+IHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZU1lbnUoc3ViSXRlbSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY2hlY2tBY3RpdmVNZW51QnlVcmwodXJsUm91dGVyKTtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNoZWNraW5nUm91dGVyQ2hpbGRyZW5GcmFnbWVudHMoKTtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHZhbGlkYXRlQ29sbGFwc2VDbGFzcygpO1xufVxuIl19
|
|
352
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbWVudS1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1tZW51L3BvLW1lbnUtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osY0FBYyxFQUNkLFFBQVEsRUFDUixVQUFVLEVBQ1YsSUFBSSxFQUNMLE1BQU0sa0JBQWtCLENBQUM7Ozs7O0FBUzFCLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHO0lBQ25DLEVBQUUsRUFBRTtRQUNGLFlBQVksRUFBRSxpQkFBaUI7UUFDL0IsZUFBZSxFQUFFLDhDQUE4QztRQUMvRCxhQUFhLEVBQUUsV0FBVztLQUMzQjtJQUNELEVBQUUsRUFBRTtRQUNGLFlBQVksRUFBRSx5QkFBeUI7UUFDdkMsZUFBZSxFQUFFLGtEQUFrRDtRQUNuRSxhQUFhLEVBQUUsa0JBQWtCO0tBQ2xDO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsWUFBWSxFQUFFLHNCQUFzQjtRQUNwQyxlQUFlLEVBQUUsaURBQWlEO1FBQ2xFLGFBQWEsRUFBRSxnQkFBZ0I7S0FDaEM7SUFDRCxFQUFFLEVBQUU7UUFDRixZQUFZLEVBQUUsb0JBQW9CO1FBQ2xDLGVBQWUsRUFBRSxnREFBZ0Q7UUFDakUsYUFBYSxFQUFFLGVBQWU7S0FDL0I7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFXLEdBQUcsQ0FBQztBQUV0Qzs7Ozs7OztHQU9HO0FBRUgsTUFBTSxPQUFnQixtQkFBbUI7SUF5TnZDLFlBQ1MsaUJBQXNDLEVBQ3RDLFdBQTBCLEVBQzFCLGVBQWtDO1FBRmxDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBcUI7UUFDdEMsZ0JBQVcsR0FB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QkFBQyxRQUFRO1lBaUJVLE9BQU87a0JBQS9CLEtBQUs7bUJBQUMsWUFBWTtZQXVCUSxTQUFTO2tCQUFuQyxLQUFLO21CQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dCwgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIGJyb3dzZXJMYW5ndWFnZSxcbiAgY29udmVydFRvQm9vbGVhbixcbiAgY29udmVydFRvSW50LFxuICBpc0V4dGVybmFsTGluayxcbiAgaXNUeXBlb2YsXG4gIHZhbGlkVmFsdWUsXG4gIHV1aWRcbn0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbCc7XG5cbmltcG9ydCB7IFBvTWVudUZpbHRlciB9IGZyb20gJy4vcG8tbWVudS1maWx0ZXIvcG8tbWVudS1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTWVudUl0ZW0gfSBmcm9tICcuL3BvLW1lbnUtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9NZW51U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTWVudUdsb2JhbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLW1lbnUtZ2xvYmFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IHBvTG9jYWxlRGVmYXVsdCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLmNvbnN0YW50JztcblxuZXhwb3J0IGNvbnN0IHBvTWVudUxpdGVyYWxzRGVmYXVsdCA9IHtcbiAgZW46IHtcbiAgICBpdGVtTm90Rm91bmQ6ICdJdGVtIG5vdCBmb3VuZC4nLFxuICAgIGVtcHR5TGFiZWxFcnJvcjogJ0F0dHJpYnV0ZSBQb01lbnVJdGVtLmxhYmVsIGNhbiBub3QgYmUgZW1wdHkuJyxcbiAgICBsb2dvbWFyY2FIb21lOiAnSG9tZSBsb2dvJ1xuICB9LFxuICBlczoge1xuICAgIGl0ZW1Ob3RGb3VuZDogJ0VsZW1lbnRvIG5vIGVuY29udHJhZG8uJyxcbiAgICBlbXB0eUxhYmVsRXJyb3I6ICdFbCBhdHJpYnV0byBQb01lbnVJdGVtLmxhYmVsIG5vIHB1ZWRlIHNlciB2YWPDrW8uJyxcbiAgICBsb2dvbWFyY2FIb21lOiAnTG9nb21hcmNhIGluaWNpbydcbiAgfSxcbiAgcHQ6IHtcbiAgICBpdGVtTm90Rm91bmQ6ICdJdGVtIG7Do28gZW5jb250cmFkby4nLFxuICAgIGVtcHR5TGFiZWxFcnJvcjogJ08gYXRyaWJ1dG8gUG9NZW51SXRlbS5sYWJlbCBuw6NvIHBvZGUgc2VyIHZhemlvLicsXG4gICAgbG9nb21hcmNhSG9tZTogJ0xvZ29tYXJjYSBob21lJ1xuICB9LFxuICBydToge1xuICAgIGl0ZW1Ob3RGb3VuZDogJ9Cf0YDQtdC00LzQtdGCINC90LUg0L3QsNC50LTQtdC9LicsXG4gICAgZW1wdHlMYWJlbEVycm9yOiAn0JDRgtGA0LjQsdGD0YIgUG9NZW51SXRlbS5sYWJlbCDQvdC1INC80L7QttC10YIg0LHRi9GC0Ywg0L/Rg9GB0YLRi9C8LicsXG4gICAgbG9nb21hcmNhSG9tZTogJ9CU0L7QvCDQm9C+0LPQvtC80LDRgNC60LAnXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBNQVhfTEVOR0hUOiBudW1iZXIgPSAxMjU7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogRXN0ZSDDqSB1bSBjb21wb25lbnRlIGRlIG1lbnUgbGF0ZXJhbCBxdWUgw6kgdXRpbGl6YWRvIHBhcmEgbmF2ZWdhw6fDo28gbmFzIHDDoWdpbmFzIGRlIHVtYSBhcGxpY2HDp8Ojby5cbiAqXG4gKiBPIGNvbXBvbmVudGUgcG8tbWVudSByZWNlYmUgdW1hIGxpc3RhIGRlIG9iamV0b3MgZG8gdGlwbyBgTWVudUl0ZW1gIGNvbSBhcyBpbmZvcm1hw6fDtWVzIGRvcyBpdGVucyBkZSBtZW51IGNvbW9cbiAqIHRleHRvcywgbGlua3MgcGFyYSByZWRpcmVjaW9uYW1lbnRvLCBhw6fDtWVzLCBhdMOpIDQgbsOtdmVpcyBkZSBtZW51IGUgw61jb25lcyBwYXJhIG8gcHJpbWVpcm8gbsOtdmVsIGRlIG1lbnUuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBvTWVudUJhc2VDb21wb25lbnQge1xuICBhbGxvd0ljb25zOiBib29sZWFuO1xuICBhbGxvd0NvbGxhcHNlTWVudTogYm9vbGVhbjtcblxuICBmaWx0ZXJlZEl0ZW1zO1xuICBmaWx0ZXJTZXJ2aWNlOiBQb01lbnVGaWx0ZXI7XG5cbiAgcmVhZG9ubHkgbGl0ZXJhbHMgPSB7XG4gICAgLi4ucG9NZW51TGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldExhbmd1YWdlRGVmYXVsdCgpXSxcbiAgICAuLi5wb01lbnVMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0U2hvcnRMYW5ndWFnZSgpXVxuICB9O1xuXG4gIHByaXZhdGUgX2NvbGxhcHNlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9maWx0ZXIgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfbGV2ZWw7XG4gIHByaXZhdGUgX2xvZ286IHN0cmluZztcbiAgcHJpdmF0ZSBfbG9nb0FsdDogc3RyaW5nID0gdGhpcy5saXRlcmFscy5sb2dvbWFyY2FIb21lO1xuICBwcml2YXRlIF9tYXhMZXZlbCA9IDQ7XG4gIHByaXZhdGUgX21lbnVzID0gW107XG4gIHByaXZhdGUgX3BhcmFtczogYW55O1xuICBwcml2YXRlIF9zZXJ2aWNlOiBzdHJpbmcgfCBQb01lbnVGaWx0ZXI7XG4gIHByaXZhdGUgX3Nob3J0TG9nbzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIENvbGFwc2EgKHJldHJhaSkgbyBtZW51IGUgY2FzbyByZWNlYmEgbyB2YWxvciBgZmFsc2VgIGV4cGFuZGUgbyBtZW51LlxuICAgKlxuICAgKiA+IFV0aWxpemUgZXN0YSBwcm9wcmllZGFkZSBwYXJhIGluaWNpYXIgbyBtZW51IGNvbGFwc2Fkby5cbiAgICpcbiAgICogPiBBbyB1dGlsaXphciBvcyBtw6l0b2RvcyBbYGNvbGFwc2VgXShkb2N1bWVudGF0aW9uL3BvLW1lbnUjY29sYXBzZU1ldGhvZCksIFtgZXhwYW5kYF0oZG9jdW1lbnRhdGlvbi9wby1tZW51I2V4cGFuZE1ldGhvZCkgZVxuICAgKiBbYHRvZ2dsZWBdKGRvY3VtZW50YXRpb24vcG8tbWVudSN0b2dnbGVNZXRob2QpIG8gdmFsb3IgZGVzdGEgcHJvcHJpZWRhZGUgbsOjbyDDqSBhbHRlcmFkby5cbiAgICpcbiAgICogKipJbXBvcnRhbnRlOioqXG4gICAqXG4gICAqID4gTyBtZW51IHNlcsOhIGNvbGFwc2Fkby9leHBhbmRpZG8gYXBlbmFzIHNlIHRvZG9zIG9zIGl0ZW5zIGRlIG1lbnUgdGl2ZXJlbSB2YWxvciBuYXMgcHJvcHJpZWRhZGVzIGBpY29uYCBlIGBzaG9ydExhYmVsYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWNvbGxhcHNlZCcpIHNldCBjb2xsYXBzZWQoY29sbGFwc2VkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fY29sbGFwc2VkID0gY29udmVydFRvQm9vbGVhbihjb2xsYXBzZWQpO1xuXG4gICAgdGhpcy52YWxpZGF0ZUNvbGxhcHNlQ2xhc3MoKTtcbiAgfVxuXG4gIGdldCBjb2xsYXBzZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbGxhcHNlZDtcbiAgfVxuXG4gIC8qKiBMaXN0YSBkb3MgaXRlbnMgZG8gbWVudS4gU2UgbyB2YWxvciBlc3RpdmVyIGluZGVmaW5pZG8gb3UgaW52w6FsaWRvLCBzZXLDoSBpbmljaWFsaXphZG8gY29tbyB1bSBhcnJheSB2YXppby4gKi9cbiAgQElucHV0KCdwLW1lbnVzJykgc2V0IG1lbnVzKG1lbnVzOiBBcnJheTxQb01lbnVJdGVtPikge1xuICAgIHRoaXMuX21lbnVzID0gQXJyYXkuaXNBcnJheShtZW51cykgPyBtZW51cyA6IFtdO1xuXG4gICAgdGhpcy5tZW51R2xvYmFsU2VydmljZS5zZW5kTWVudXMobWVudXMpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCB1cmxSb3V0ZXIgPSB0aGlzLmNoZWNraW5nUm91dGVyQ2hpbGRyZW5GcmFnbWVudHMoKTtcbiAgICAgIHRoaXMuY2hlY2tBY3RpdmVNZW51QnlVcmwodXJsUm91dGVyKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBtZW51cygpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVudXM7XG4gIH1cblxuICBnZXQgbWF4TGV2ZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21heExldmVsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSGFiaWxpdGEgdW0gY2FtcG8gcGFyYSBwZXNxdWlzYSBubyBtZW51LlxuICAgKiBBIHBlc3F1aXNhIMOpIHJlYWxpemFkYSBlbSB0b2RvcyBvcyBuw612ZWlzIGRvIG1lbnUgZSBidXNjYSBhcGVuYXMgcGVsb3MgaXRlbnMgcXVlIGNvbnTDqW0gdW1hIGHDp8OjbyBlL291IGxpbmsgZGVmaW5pZG9zLFxuICAgKiBvdSB0YW1iw6ltLCBwb2RlIHNlciByZWFsaXphZGEgYXRyYXbDqXMgZGUgdW0gc2VydmnDp28gZGVmaW5pZG8gbmEgcHJvcHJpZWRhZGUgYHAtc2VydmljZWAuXG4gICAqXG4gICAqID4gTyBjYW1wbyBkZSBwZXNxdWlzYSDDqSBkZXNhYmlsaXRhZG8gc2UgbyBtZW51IGVzdGl2ZXIgY29sYXBzYWRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtZmlsdGVyJykgc2V0IGZpbHRlcihmaWx0ZXI6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9maWx0ZXIgPSA8YW55PmZpbHRlciA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbihmaWx0ZXIpO1xuICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IFsuLi50aGlzLl9tZW51c107XG4gIH1cblxuICBnZXQgZmlsdGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXI7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBOZXN0YSBwcm9wcmllZGFkZSBkZXZlIHNlciBpbmZvcm1hZGEgYSBVUkwgZG8gc2VydmnDp28gZW0gcXVlIHNlcsOhIHV0aWxpemFkbyBwYXJhIHJlYWxpemFyIG8gZmlsdHJvIGRlIGl0ZW5zIGRvXG4gICAqIG1lbnUgcXVhbmRvIHJlYWxpemFyIHVtYSBidXNjYS4gQ2FzbyBoYWphIGEgbmVjZXNzaWRhZGUgZGUgY3VzdG9taXphw6fDo28sIHBvZGUgc2VyIGluZm9ybWFkbyB1bVxuICAgKiBzZXJ2acOnbyBpbXBsZW1lbnRhbmRvIGEgaW50ZXJmYWNlIGBQb01lbnVGaWx0ZXJgLlxuICAgKlxuICAgKiBDYXNvIHV0aWxpemFkYSB1bWEgVVJMLCBvIHNlcnZpw6dvIGRldmUgcmV0b3JuYXIgb3MgZGFkb3MgY29uZm9ybWUgb1xuICAgKiBbR3VpYSBkZSBpbXBsZW1lbnRhw6fDo28gZGUgQVBJc10oaHR0cHM6Ly9wby11aS5pby9ndWlkZXMvYXBpKSBkbyBQTyBVSS5cbiAgICpcbiAgICogUXVhbmRvIHV0aWxpemFkYSB1bWEgVVJMIGRlIHNlcnZpw6dvLCBzZXLDoSByZWFsaXphZG8gdW0gKkdFVCogbmEgVVJMIGluZm9ybWFkYSwgcGFzc2FuZG8gbyB2YWxvciBkaWdpdGFkb1xuICAgKiBubyBwYXLDom1ldHJvIGBzZWFyY2hgLCB2ZWphIGV4ZW1wbG86XG4gICAqXG4gICAqID4gTyBmaWx0cm8gbm8gc2VydmnDp28gc2Vyw6EgcmVhbGl6YWRvIGNhc28gY29udGVuaGEgbm8gbcOtbmltbyB0csOqcyBjYXJhY3RlcmVzIG5vIGNhbXBvIGRlIGJ1c2NhLCBwb3IgZXhlbXBsbyBgdG90YC5cbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1tZW51IHAtc2VydmljZT1cIi9hcGkvdjEvZm5kL21lbnVcIj5cbiAgICogPC9wby1tZW51PlxuICAgKlxuICAgKiBSZXF1aXNpw6fDo286IEdFVCAvYXBpL3YxL2ZuZC9tZW51P3NlYXJjaD1jb250YXNcbiAgICogYGBgXG4gICAqXG4gICAqID4gw4kgbmVjZXNzw6FyaW8gcXVlIHByb3ByaWVkYWRlIGBwLWZpbHRlcmAgZXN0ZWphIGhhYmlsaXRhZGEuXG4gICAqL1xuICBASW5wdXQoJ3Atc2VydmljZScpIHNldCBzZXJ2aWNlKHZhbHVlOiBzdHJpbmcgfCBQb01lbnVGaWx0ZXIpIHtcbiAgICB0aGlzLl9zZXJ2aWNlID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xuXG4gICAgdGhpcy5jb25maWdTZXJ2aWNlKHRoaXMuc2VydmljZSk7XG4gIH1cblxuICBnZXQgc2VydmljZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VydmljZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERldmUgc2VyIGluZm9ybWFkbyB1bSBvYmpldG8gcXVlIGRlc2VqYS1zZSB1dGlsaXphciBuYSByZXF1aXNpw6fDo28gZGUgZmlsdHJvIGRvcyBpdGVucyBkZSBtZW51LlxuICAgKlxuICAgKiBDYXNvIHV0aWxpemFkbyB1bSBzZXJ2acOnbyBjdXN0b21pemFkbywgaW1wbGVtZW50YW5kbyBhIGludGVyZmFjZSBgUG9NZW51RmlsdGVyYCwgbyB2YWxvciBkZXN0YSBwcm9wcmllZGFkZVxuICAgKiBzZXLDoSBwYXNzYWRvIGNvbW8gcGFyw6JtZXRybywgbmEgZnVuw6fDo28gYGdldEZpbHRlcmVkRGF0YWAuXG4gICAqXG4gICAqIFF1YW5kbyB1dGlsaXphZGEgdW1hIFVSTCBkZSBzZXJ2acOnbywgc2Vyw6EgcmVhbGl6YWRvIHVtICpHRVQqIG5hIFVSTCBpbmZvcm1hZGEsIHBhc3NhbmRvIG9zIHZhbG9yZXMgaW5mb3JtYWRvc1xuICAgKiBuZXN0YSBwcm9wcmllZGFkZSBlbSBjb25qdW50byBjb20gbyBwYXLDom1ldHJvIGBzZWFyY2hgLCB2ZWphIGV4ZW1wbG86XG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tbWVudSBwLXNlcnZpY2U9XCIvYXBpL3YxL2ZuZC9tZW51XCIgW3AtcGFyYW1zXT1cInsgY29tcGFueTogMSwgdXNlcjogMjk3NzY3NTEyIH1cIj5cbiAgICogPC9wby1tZW51PlxuICAgKlxuICAgKiBSZXF1aXNpw6fDo286IEdFVCAvYXBpL3YxL2ZuZC9tZW51P3NlYXJjaD1jb250YXMmY29tcGFueT0xJnVzZXI9Mjk3NzY3NTEyXG4gICAqIGBgYFxuICAgKi9cbiAgQElucHV0KCdwLXBhcmFtcycpIHNldCBwYXJhbXModmFsdWU6IGFueSkge1xuICAgIHRoaXMuX3BhcmFtcyA9IHZhbHVlICYmIGlzVHlwZW9mKHZhbHVlLCAnb2JqZWN0JykgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBwYXJhbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcmFtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIENhbWluaG8gcGFyYSBhIGxvZ29tYXJjYSwgcXVlIHNlcsOhIGV4aWJpZGEgcXVhbmRvIG8gY29tcG9uZW50ZSBlc3RpdmVyIGV4cGFuZGlkbywgbG9jYWxpemFkYSBuYSBwYXJ0ZSBzdXBlcmlvci5cbiAgICpcbiAgICogPiAqKkltcG9ydGFudGU6KipcbiAgICogLSBDYXNvIGVzdGEgcHJvcHJpZWRhZGUgZXN0aXZlciBpbmRlZmluaWRhIG91IGludsOhbGlkYSBvIGVzcGHDp28gcGFyYSBsb2dvbWFyY2Egc2Vyw6EgcmVtb3ZpZG8uXG4gICAqIC0gQ29tbyBib2EgcHLDoXRpY2EsIGluZGljYS1zZSB1dGlsaXphciBpbWFnZW5zIGNvbSBhdMOpIGAyNHB4YCBkZSBhbHR1cmEgZSBgMjI0cHhgIGRlIGxhcmd1cmEsXG4gICAqIGNhc28gdWx0cmFwYXNzYXIgZXNzZXMgdmFsb3JlcyBhIGltYWdlbSBzZXLDoSByZWFkZXF1YWRhIG5vIGVzcGHDp28gZGlzcG9uw612ZWwuXG4gICAqL1xuICBASW5wdXQoJ3AtbG9nbycpIHNldCBsb2dvKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl9sb2dvID0gaXNUeXBlb2YodmFsdWUsICdzdHJpbmcnKSAmJiB2YWx1ZS50cmltKCkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBsb2dvKCkge1xuICAgIHJldHVybiB0aGlzLl9sb2dvO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogVGV4dG8gYWx0ZXJuYXRpdm8gcGFyYSBvIGxvZ28uXG4gICAqXG4gICAqID4gQ2FzbyBlc3RhIHByb3ByaWVkYWRlIHNlamEgaW5kZWZpbmlkYSBvdSBpbnbDoWxpZGEgbyB0ZXh0byBwYWRyw6NvIHNlcsOhIFwiTG9nb21hcmNhIGhvbWVcIi5cbiAgICovXG4gIEBJbnB1dCgncC1sb2dvLWFsdCcpIHNldCBsb2dvQWx0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhbHQgPSBpc1R5cGVvZih2YWx1ZSwgJ3N0cmluZycpICYmIHZhbHVlLnRyaW0oKSA/IHRoaXMubWF4TGVuZ3RoKHZhbHVlKSA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9sb2dvQWx0ID0gYWx0ID8/IHRoaXMuX2xvZ29BbHQ7XG4gIH1cblxuICBnZXQgbG9nb0FsdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbG9nb0FsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIENhbWluaG8gcGFyYSBhIGxvZ29tYXJjYSwgcXVlIHNlcsOhIGV4aWJpZGEgcXVhbmRvIG8gY29tcG9uZW50ZSBlc3RpdmVyIGNvbGFwc2FkbywgbG9jYWxpemFkYSBuYSBwYXJ0ZSBzdXBlcmlvci5cbiAgICpcbiAgICogPiAqKkltcG9ydGFudGU6KipcbiAgICogLSBDYXNvIGVzdGEgcHJvcHJpZWRhZGUgZXN0aXZlciBpbmRlZmluaWRhIG91IGludsOhbGlkYSBwYXNzYSBhIGFzc3VtaXIgbyB2YWxvciBpbmZvcm1hZG8gbmEgcHJvcHJpZWRhZGUgYHAtbG9nb2AgZSBuYSBhdXPDqm5jaWEgZGVzdGEgb1xuICAgKiBlc3Bhw6dvIHBhcmEgbG9nb21hcmNhIHNlcsOhIHJlbW92aWRvLlxuICAgKiAtIENvbW8gYm9hIHByw6F0aWNhLCBpbmRpY2Etc2UgdXRpbGl6YXIgaW1hZ2VucyBjb20gYXTDqSBgNDhweGAgZGUgYWx0dXJhIGUgYDQ4cHhgIGRlIGxhcmd1cmEsXG4gICAqIGNhc28gdWx0cmFwYXNzYXIgZXNzZXMgdmFsb3JlcyBhIGltYWdlbSBzZXLDoSByZWFkZXF1YWRhIG5vIGVzcGHDp28gZGlzcG9uw612ZWwuXG4gICAqIC0gQ2FzbyBuw6NvIGluZm9ybWFyIHVtIHZhbG9yLCBlc3RhIHByb3ByaWVkYWRlIHBhc3NhIGEgYXNzdW1pciBvIHZhbG9yIGluZm9ybWFkbyBuYSBwcm9wcmllZGFkZSBgcC1sb2dvYC5cbiAgICovXG4gIEBJbnB1dCgncC1zaG9ydC1sb2dvJykgc2V0IHNob3J0TG9nbyh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fc2hvcnRMb2dvID0gaXNUeXBlb2YodmFsdWUsICdzdHJpbmcnKSAmJiB2YWx1ZS50cmltKCkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBzaG9ydExvZ28oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3J0TG9nbztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBtZW51R2xvYmFsU2VydmljZTogUG9NZW51R2xvYmFsU2VydmljZSxcbiAgICBwdWJsaWMgbWVudVNlcnZpY2U6IFBvTWVudVNlcnZpY2UsXG4gICAgcHVibGljIGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHByb3RlY3RlZCBzZXRNZW51RXh0cmFQcm9wZXJ0aWVzKCkge1xuICAgIHRoaXMuYWxsb3dJY29ucyA9ICEhdGhpcy5tZW51cy5sZW5ndGg7XG4gICAgdGhpcy5hbGxvd0NvbGxhcHNlTWVudSA9ICEhdGhpcy5tZW51cy5sZW5ndGg7XG5cbiAgICB0aGlzLm1lbnVzLmZvckVhY2gobWVudUl0ZW0gPT4ge1xuICAgICAgdGhpcy5fbGV2ZWwgPSAxO1xuICAgICAgdGhpcy5hbGxvd0ljb25zID0gdGhpcy5hbGxvd0ljb25zID8gdmFsaWRWYWx1ZShtZW51SXRlbS5pY29uKSA6IGZhbHNlO1xuICAgICAgdGhpcy5hbGxvd0NvbGxhcHNlTWVudSA9IHRoaXMuYWxsb3dDb2xsYXBzZU1lbnUgJiYgdGhpcy5hbGxvd0ljb25zID8gdmFsaWRWYWx1ZShtZW51SXRlbS5zaG9ydExhYmVsKSA6IGZhbHNlO1xuICAgICAgdGhpcy5yZW1vdmVCYWRnZUFsZXJ0KG1lbnVJdGVtKTtcbiAgICAgIHRoaXMuc2V0TWVudUl0ZW1Qcm9wZXJ0aWVzKG1lbnVJdGVtKTtcblxuICAgICAgaWYgKG1lbnVJdGVtLnN1Ykl0ZW1zKSB7XG4gICAgICAgIHRoaXMuX2xldmVsKys7XG4gICAgICAgIHRoaXMucHJvY2Vzc1N1Ykl0ZW1zKG1lbnVJdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRNZW51SXRlbVByb3BlcnRpZXMobWVudUl0ZW06IFBvTWVudUl0ZW0pOiB2b2lkIHtcbiAgICBtZW51SXRlbVsnaWQnXSA9IG1lbnVJdGVtWydpZCddIHx8IHV1aWQoKTtcbiAgICBtZW51SXRlbVsnbGV2ZWwnXSA9IHRoaXMuX2xldmVsO1xuICAgIG1lbnVJdGVtWyd0eXBlJ10gPSB0aGlzLnNldE1lbnVUeXBlKG1lbnVJdGVtKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZU1lbnVzKG1lbnVzKTogdm9pZCB7XG4gICAgbWVudXMuZm9yRWFjaChtZW51ID0+IHRoaXMudmFsaWRhdGVNZW51KG1lbnUpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRNZW51VHlwZShtZW51SXRlbTogUG9NZW51SXRlbSk6IHN0cmluZyB7XG4gICAgaWYgKG1lbnVJdGVtLnN1Ykl0ZW1zICYmIG1lbnVJdGVtLnN1Ykl0ZW1zLmxlbmd0aCA+IDAgJiYgdGhpcy5fbGV2ZWwgPCB0aGlzLm1heExldmVsKSB7XG4gICAgICByZXR1cm4gJ3N1Ykl0ZW1zJztcbiAgICB9XG4gICAgaWYgKCFtZW51SXRlbS5saW5rKSB7XG4gICAgICByZXR1cm4gJ25vTGluayc7XG4gICAgfVxuICAgIGlmIChpc0V4dGVybmFsTGluayhtZW51SXRlbS5saW5rKSkge1xuICAgICAgcmV0dXJuICdleHRlcm5hbExpbmsnO1xuICAgIH1cbiAgICByZXR1cm4gJ2ludGVybmFsTGluayc7XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZ1NlcnZpY2Uoc2VydmljZTogc3RyaW5nIHwgUG9NZW51RmlsdGVyKSB7XG4gICAgaWYgKHR5cGVvZiBzZXJ2aWNlID09PSAnc3RyaW5nJyAmJiBzZXJ2aWNlLnRyaW0oKSkge1xuICAgICAgLy8gc2VydmljZSB1cmxcbiAgICAgIHRoaXMubWVudVNlcnZpY2UuY29uZmlnUHJvcGVydGllcyhzZXJ2aWNlKTtcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZSA9IHRoaXMubWVudVNlcnZpY2U7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygc2VydmljZSA9PT0gJ29iamVjdCcgJiYgc2VydmljZS5nZXRGaWx0ZXJlZERhdGEpIHtcbiAgICAgIC8vIGN1c3RvbSBzZXJ2aWNlXG4gICAgICB0aGlzLmZpbHRlclNlcnZpY2UgPSBzZXJ2aWNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlclNlcnZpY2UgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU3ViSXRlbXMobWVudSkge1xuICAgIG1lbnUuc3ViSXRlbXMuZm9yRWFjaCgobWVudUl0ZW0sIGluZGV4LCBtZW51SXRlbXMpID0+IHtcbiAgICAgIGNvbnN0IHByZXZpb3VzSXRlbSA9IG1lbnVJdGVtc1tpbmRleCAtIDFdO1xuICAgICAgaWYgKHByZXZpb3VzSXRlbSAmJiBwcmV2aW91c0l0ZW0uc3ViSXRlbXMpIHtcbiAgICAgICAgdGhpcy5fbGV2ZWwgPSBwcmV2aW91c0l0ZW1bJ2xldmVsJ107XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9sZXZlbCA8PSB0aGlzLm1heExldmVsKSB7XG4gICAgICAgIHRoaXMuc2V0TWVudUl0ZW1Qcm9wZXJ0aWVzKG1lbnVJdGVtKTtcblxuICAgICAgICBpZiAobWVudUl0ZW0uc3ViSXRlbXMpIHtcbiAgICAgICAgICB0aGlzLl9sZXZlbCsrO1xuICAgICAgICAgIHRoaXMucHJvY2Vzc1N1Ykl0ZW1zKG1lbnVJdGVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIW1lbnVbJ2JhZGdlQWxlcnQnXSkge1xuICAgICAgICBtZW51ID0gdGhpcy5zZXRNZW51QmFkZ2VBbGVydChtZW51LCBtZW51SXRlbSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBtZW51LnN1Ykl0ZW1zID0gT2JqZWN0LmFzc2lnbihbXSwgbWVudS5zdWJJdGVtcyk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUJhZGdlQWxlcnQobWVudUl0ZW06IFBvTWVudUl0ZW0pOiB2b2lkIHtcbiAgICBpZiAobWVudUl0ZW1bJ2JhZGdlQWxlcnQnXSkge1xuICAgICAgZGVsZXRlIG1lbnVJdGVtWydiYWRnZUFsZXJ0J107XG4gICAgfVxuXG4gICAgaWYgKG1lbnVJdGVtLnN1Ykl0ZW1zKSB7XG4gICAgICBtZW51SXRlbS5zdWJJdGVtcy5mb3JFYWNoKHN1Ykl0ZW0gPT4gdGhpcy5yZW1vdmVCYWRnZUFsZXJ0KHN1Ykl0ZW0pKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldE1lbnVCYWRnZUFsZXJ0KHBhcmVudDogUG9NZW51SXRlbSwgY2hpbGQ6IFBvTWVudUl0ZW0pOiBQb01lbnVJdGVtIHtcbiAgICBjb25zdCBjaGlsZEhhc1N1Ykl0ZW1zID0gY2hpbGQuc3ViSXRlbXMgJiYgY2hpbGQuc3ViSXRlbXMubGVuZ3RoO1xuICAgIGNvbnN0IGNoaWxkSGFzQmFkZ2VBbGVydCA9IGNoaWxkWydiYWRnZUFsZXJ0J107XG4gICAgY29uc3QgY2hpbGRIYXNCYWRnZSA9IGNoaWxkLmJhZGdlICYmIGNvbnZlcnRUb0ludChjaGlsZC5iYWRnZS52YWx1ZSkgPj0gMDtcblxuICAgIHBhcmVudFsnYmFkZ2VBbGVydCddID0gY2hpbGRIYXNCYWRnZUFsZXJ0IHx8IChjaGlsZEhhc0JhZGdlICYmICFjaGlsZEhhc1N1Ykl0ZW1zKTtcblxuICAgIHJldHVybiBwYXJlbnQ7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlTWVudShtZW51SXRlbTogUG9NZW51SXRlbSk6IHZvaWQge1xuICAgIGlmICghbWVudUl0ZW0ubGFiZWwgfHwgbWVudUl0ZW0ubGFiZWwudHJpbSgpID09PSAnJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMubGl0ZXJhbHMuZW1wdHlMYWJlbEVycm9yKTtcbiAgICB9IGVsc2UgaWYgKG1lbnVJdGVtLnN1Ykl0ZW1zKSB7XG4gICAgICBtZW51SXRlbS5zdWJJdGVtcy5mb3JFYWNoKHN1Ykl0ZW0gPT4ge1xuICAgICAgICB0aGlzLnZhbGlkYXRlTWVudShzdWJJdGVtKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWF4TGVuZ3RoKHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdmFsdWUubGVuZ3RoID4gTUFYX0xFTkdIVCA/IHZhbHVlLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsIE1BWF9MRU5HSFQpIDogdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY2hlY2tBY3RpdmVNZW51QnlVcmwodXJsUm91dGVyKTtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNoZWNraW5nUm91dGVyQ2hpbGRyZW5GcmFnbWVudHMoKTtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHZhbGlkYXRlQ29sbGFwc2VDbGFzcygpO1xufVxuIl19
|