@ieeesa-npm/tenants 0.1.0 → 0.1.1
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/esm2022/lib/components/create-tenant-application/create-tenant-application.component.mjs
CHANGED
|
@@ -41,6 +41,7 @@ export class CreateTenantApplicationComponent {
|
|
|
41
41
|
];
|
|
42
42
|
}
|
|
43
43
|
ngOnInit() {
|
|
44
|
+
this.fileUploadService.setApiBaseUrl(this.tenantAppService?.apiBaseUrl);
|
|
44
45
|
this.getFeatures();
|
|
45
46
|
}
|
|
46
47
|
/**
|
|
@@ -417,4 +418,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
417
418
|
}], formCancel: [{
|
|
418
419
|
type: Output
|
|
419
420
|
}] } });
|
|
420
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXRlbmFudC1hcHBsaWNhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW5hbnRzL3NyYy9saWIvY29tcG9uZW50cy9jcmVhdGUtdGVuYW50LWFwcGxpY2F0aW9uL2NyZWF0ZS10ZW5hbnQtYXBwbGljYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVuYW50cy9zcmMvbGliL2NvbXBvbmVudHMvY3JlYXRlLXRlbmFudC1hcHBsaWNhdGlvbi9jcmVhdGUtdGVuYW50LWFwcGxpY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUdaLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxTQUFTLEVBSVQsZUFBZSxFQUVmLGdCQUFnQixFQUdoQixvQkFBb0IsR0FDckIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEtBQUssV0FBVyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBd0IsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7OztBQXFCakQsTUFBTSxPQUFPLGdDQUFnQztJQTRCM0M7SUFDRSwwQ0FBMEM7SUFDbkMsaUJBQW9DO0lBQzNDLDBDQUEwQztJ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QWE7UUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUNEOzs7T0FHRztJQUNILHFCQUFxQixDQUFDLFdBQXdCO1FBQzVDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxXQUFXLENBQUM7SUFDM0MsQ0FBQztJQUNEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLENBQUM7K0dBL2NVLGdDQUFnQzttR0FBaEMsZ0NBQWdDLG1PQVdoQyxvQkFBb0IsZ0RDM0RqQyx5eUJBa0JBLDQrVUR5QlksWUFBWSxtSUFBRSxvQkFBb0I7OzRGQUtqQyxnQ0FBZ0M7a0JBUjVDLFNBQVM7K0JBQ0Usa0NBQWtDLGNBQ2hDLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxvQkFBb0IsQ0FBQyxpQkFHOUIsaUJBQWlCLENBQUMsSUFBSTs0S0FjckMsb0JBQW9CO3NCQURuQixTQUFTO3VCQUFDLG9CQUFvQjtnQkFFckIsa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFsaWduVHlwZSxcclxuICBDaGVja2JveE9wdGlvbixcclxuICBGb3JtR3JpZCxcclxuICBSYWRpb09wdGlvbixcclxuICBGb3JtQ29udHJvbFR5cGUsXHJcbiAgRm9ybU1vZGVsLFxyXG4gIEFsbG93ZWRGaWxlVHlwZXMsXHJcbiAgRmlsZVVwbG9hZFNlcnZpY2UsXHJcbiAgRmlsZVVwbG9hZFByZXNpZ25lZFVybCxcclxuICBEeW5hbWljRm9ybUNvbXBvbmVudCxcclxufSBmcm9tICdAaWVlZXNhLW5wbS9wcmVzZW50YXRpb24nO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgc2NyZWVuVGV4dHMgZnJvbSAnLi4vLi4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRlbmFudHNWYWxpZGF0aW9uUGF0dGVybnMgfSBmcm9tICcuLi8uLi9hc3NldHMvdGVuYW50LXZhbGlkYXRpb25zJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybVN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXN0YXR1cy5tb2RlbCc7XHJcbmltcG9ydCB7IHZhbGlkQ29sb3JWYWxpZGF0b3IgfSBmcm9tICduZ3gtY29sb3JzJztcclxuaW1wb3J0IHsgRmVhdHVyZXMsIEdldEZlYXR1cmVzUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmVhdHVyZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGVuYW50LWFwcGxpY2F0aW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBBcHBUeXBlQ29uZmlnLFxyXG4gIEdldEFwcFR5cGVzUmVzcG9uc2UsXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcC10eXBlLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgQ3JlYXRlVGVuYW50UmVxdWVzdFBheWxvYWQsXHJcbiAgQ3JlYXRlVGVuYW50UmVzcG9uc2UsXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL3RlbmFudC5tb2RlbCc7XHJcbmltcG9ydCB7IFNoYXJlZFNlcnZpY2UgfSBmcm9tICdAaWVlZXNhLW5wbS9zaGFyZWQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtY3JlYXRlLXRlbmFudC1hcHBsaWNhdGlvbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBEeW5hbWljRm9ybUNvbXBvbmVudF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS10ZW5hbnQtYXBwbGljYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NyZWF0ZS10ZW5hbnQtYXBwbGljYXRpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3JlYXRlVGVuYW50QXBwbGljYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBzY3JlZW5UZXh0cztcclxuICBjcmVhdGVUZW5hbnRUZXh0cyA9IHRoaXMuY29uc3RhbnRzPy5jcmVhdGVUZW5hbnQ7XHJcbiAgbGVmdEJ1dHRvbkxhYmVsID0gdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmxlZnRCdXR0b25MYWJlbDtcclxuICByaWdodEJ1dHRvbkxhYmVsID0gdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LnJpZ2h0QnV0dG9uTGFiZWw7XHJcbiAgY29sV2lkdGg6IEZvcm1HcmlkID0geyB4czogMTIsIHhsOiAxMiwgc206IDEyLCBtZDogMTIsIGxnOiAxMiB9O1xyXG4gIGNyZWF0ZVRlbmFudEZvcm1Hcm91cCE6IEZvcm1Nb2RlbDtcclxuICBhY3Rpb25CdXR0b25BbGlnbiA9IEFsaWduVHlwZS5MRUZUO1xyXG4gIGNyZWF0ZVRlbmFudEZvcm1Hcm91cFJlZiE6IEZvcm1Hcm91cDtcclxuICBAVmlld0NoaWxkKER5bmFtaWNGb3JtQ29tcG9uZW50KVxyXG4gIGR5bmFtaWNGb3JtQ29tcG9uZW50ITogRHluYW1pY0Zvcm1Db21wb25lbnQ7XHJcbiAgQE91dHB1dCgpIHN1Ym1pdEZvcm1SZXNwb25zZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZm9ybUNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBmZWF0dXJlc09wdGlvbnMhOiBDaGVja2JveE9wdGlvbltdO1xyXG4gIGFwcFR5cGVPcHRpb25zITogUmFkaW9PcHRpb25bXTtcclxuICBjcmVhdGVUZW5hbnRQYXlsb2FkITogQ3JlYXRlVGVuYW50UmVxdWVzdFBheWxvYWQ7XHJcbiAgZmlsZVVwbG9hZFByZXNpZ25lZFVybCE6IHN0cmluZztcclxuICBmaWxlRG93bmxvYWRQcmVzaWduZWRVcmwhOiBzdHJpbmc7XHJcbiAgZmlsZSE6IEZpbGUgfCBGaWxlTGlzdDtcclxuICBhbGxvd2VkRmlsZVR5cGVzID0gW1xyXG4gICAgQWxsb3dlZEZpbGVUeXBlcy5KUEcsXHJcbiAgICBBbGxvd2VkRmlsZVR5cGVzLlBORyxcclxuICAgIEFsbG93ZWRGaWxlVHlwZXMuU1ZHLFxyXG4gIF07XHJcbiAgc2VsZWN0ZWRDb2xvciE6IHN0cmluZztcclxuICBzZWxlY3RlZEFwcFR5cGVPcHRpb24hOiBSYWRpb09wdGlvbjtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGZpbGVVcGxvYWRTZXJ2aWNlOiBGaWxlVXBsb2FkU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSB0ZW5hbnRBcHBTZXJ2aWNlOiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIHNoYXJlZFNlcnZpY2U6IFNoYXJlZFNlcnZpY2UgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgKSB7fVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5nZXRGZWF0dXJlcygpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIGZlYXR1cmVzIGFuZCB1cGRhdGVzIHRoZSBmb3JtIGNvbnRyb2wuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZVRlbmFudEFwcGxpY2F0aW9uQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0RmVhdHVyZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2VcclxuICAgICAgLmdldEZlYXR1cmVzKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IEdldEZlYXR1cmVzUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZT8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmVhdHVyZXNPcHRpb25zID0gdGhpcy50ZW5hbnRBcHBTZXJ2aWNlLmdldEZlYXR1cmVPcHRpb25zKFxyXG4gICAgICAgICAgICAgIHJlc3BvbnNlPy5ib2R5IGFzIEZlYXR1cmVzW11cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRBcHBsaWNhdGlvblR5cGVzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmhhbmRsZUVycm9ycyhcclxuICAgICAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmVycm9yc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgYXBwbGljYXRpb24vdGVuYW50IHR5cGVzIGFuZCB1cGRhdGVzIHRoZSBmb3JtIGNvbnRyb2wuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZVRlbmFudEFwcGxpY2F0aW9uQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0QXBwbGljYXRpb25UeXBlcygpOiB2b2lkIHtcclxuICAgIHRoaXMudGVuYW50QXBwU2VydmljZVxyXG4gICAgICAuZ2V0QXBwbGljYXRpb25UeXBlcygpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBHZXRBcHBUeXBlc1Jlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2U/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLmFwcFR5cGVPcHRpb25zID1cclxuICAgICAgICAgICAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2UuZ2V0QXBwbGljYXRpb25UeXBlT3B0aW9ucyhcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlPy5ib2R5IGFzIEFwcFR5cGVDb25maWdbXVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUNyZWF0ZVRlbmFudEZvcm1Hcm91cCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5oYW5kbGVFcnJvcnMoXHJcbiAgICAgICAgICAgIGVycm9yLFxyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5lcnJvcnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIGNyZWF0ZSB0ZW5hbnQgZm9ybSBncm91cCBhcnJheS5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlVGVuYW50QXBwbGljYXRpb25Db21wb25lbnRcclxuICAgKi9cclxuICBpbml0aWFsaXplQ3JlYXRlVGVuYW50Rm9ybUdyb3VwKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jcmVhdGVUZW5hbnRGb3JtR3JvdXAgPSB7XHJcbiAgICAgIGZvcm1Hcm91cDogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxlZ2VuZDogJycsXHJcbiAgICAgICAgICBjb250cm9sczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLklOUFVULFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXBwVGl0bGUgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdhcHBUaXRsZScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aChcclxuICAgICAgICAgICAgICAgICAgVGVuYW50c1ZhbGlkYXRpb25QYXR0ZXJucy5hcHBUaXRsZU1heExlbmd0aFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5zdXBwb3J0VGV4dD8uYXBwVGl0bGUsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgbWF4RXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0Py5hcHBUaXRsZU1heENoYXJzLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uYXBwVGl0bGUsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmFwcFRpdGxlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLklOUFVULFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXBwSWQgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdhcHBJZCcsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aChUZW5hbnRzVmFsaWRhdGlvblBhdHRlcm5zLmFwcElkTWF4TGVuZ3RoKSxcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihUZW5hbnRzVmFsaWRhdGlvblBhdHRlcm5zLmFscGhhTnVtZXJpYyksXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8uc3VwcG9ydFRleHQ/LmFwcElkLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIG1heEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5saW1pdD8uYXBwSWRNYXhDaGFycyxcclxuICAgICAgICAgICAgICBwYXR0ZXJuRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnBhdHRlcm4/LmFwcElkLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uYXBwSWQsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmFwcElkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlPy5GSUxFX1VQTE9BRCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFwcExvZ28sXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdhcHBMb2dvJyxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5zdXBwb3J0VGV4dD8uYXBwTG9nbyxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5hcHBMb2dvLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5hcHBMb2dvLFxyXG4gICAgICAgICAgICAgIGlzTXVsdGlGaWxlVXBsb2FkOiBmYWxzZSxcclxuICAgICAgICAgICAgICBtYXhVcGxvYWRGaWxlU2l6ZTogMixcclxuICAgICAgICAgICAgICBtYXhGaWxlU2l6ZUVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5saW1pdD8uYXBwTG9nb01heFNpemUsXHJcbiAgICAgICAgICAgICAgYWxsb3dlZEZpbGVUeXBlRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmludmFsaWRGaWxlLFxyXG4gICAgICAgICAgICAgIGFsbG93ZWRGaWxlVHlwZXM6IHRoaXMuYWxsb3dlZEZpbGVUeXBlcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5JTlBVVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFwcEhlYWRpbmcgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdhcHBIZWFkaW5nJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1xyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKFxyXG4gICAgICAgICAgICAgICAgICBUZW5hbnRzVmFsaWRhdGlvblBhdHRlcm5zLmFwcEhlYWRpbmdNYXhMZW5ndGhcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8uc3VwcG9ydFRleHQ/LmFwcEhlYWRpbmcsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgbWF4RXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0XHJcbiAgICAgICAgICAgICAgICAgID8uYXBwSGVhZGluZ01heENoYXJzLFxyXG4gICAgICAgICAgICAgIHBhdHRlcm5FcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucGF0dGVybj8uZW1haWwsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5hcHBIZWFkaW5nLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5hcHBIZWFkaW5nLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlRFWFRfQVJFQSxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFwcERlc2NyaXB0aW9uICsgJyonLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnYXBwRGVzY3JpcHRpb24nLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoXHJcbiAgICAgICAgICAgICAgICAgIFRlbmFudHNWYWxpZGF0aW9uUGF0dGVybnMuYXBwRGVzY3JpcHRpb25NYXhMZW5ndGhcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LnN1cHBvcnRUZXh0Py5hcHBEZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICBtYXhFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8ubGltaXRcclxuICAgICAgICAgICAgICAgICAgPy5hcHBEZXNjcmlwdGlvbk1heENoYXJzLFxyXG4gICAgICAgICAgICAgIG1heENoYXJDb3VudDogVGVuYW50c1ZhbGlkYXRpb25QYXR0ZXJucy5hcHBEZXNjcmlwdGlvbk1heExlbmd0aCxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5hcHBEZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZFxyXG4gICAgICAgICAgICAgICAgICA/LmFwcERlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgIGFyaWFNdWx0aWxpbmU6IHRydWUsXHJcbiAgICAgICAgICAgICAgaXNSZXNpemU6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuQ09MT1JfUElDS0VSLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXBwQmdDb2xvciArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2JhY2tncm91bmRDb2xvcicsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcclxuICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8uc3VwcG9ydFRleHQ/LmFwcEJnQ29sb3IsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHZhbGlkQ29sb3JWYWxpZGF0b3IoKV0sXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgaW52YWxpZENvbG9yRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmludmFsaWRDb2xvcixcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LnN1cHBvcnRUZXh0Py5hcHBCZ0NvbG9yLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8uc3VwcG9ydFRleHQ/LmFwcEJnQ29sb3IsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuSU5QVVQsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcHBIZWxwTGluayArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2FwcEhlbHBMaW5rJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1xyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihUZW5hbnRzVmFsaWRhdGlvblBhdHRlcm5zLnVybCksXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8uc3VwcG9ydFRleHQ/LmFwcEhlbHBMaW5rLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIHBhdHRlcm5FcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucGF0dGVybj8uYXBwSGVscExpbmssXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5hcHBIZWxwTGluayxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uYXBwSGVscExpbmssXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuQ0hFQ0tCT1gsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5mZWF0dXJlc0xpc3QgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdmZWF0dXJlcycsXHJcbiAgICAgICAgICAgICAgY2hlY2tib3hPcHRpb25zOiB0aGlzLmZlYXR1cmVzT3B0aW9ucyxcclxuICAgICAgICAgICAgICBtaW5TZWxlY3Rpb25SZXF1aXJlZDogMSxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmZlYXR1cmVzTGlzdCxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uZmVhdHVyZXNMaXN0LFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5zdXBwb3J0VGV4dD8uZmVhdHVyZXNMaXN0LFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5JTlBVVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmRvbWFpblVSTCArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2FwcERvbWFpblVybCcsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oVGVuYW50c1ZhbGlkYXRpb25QYXR0ZXJucy51cmwpLFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgc3VwcG9ydE1lc3NhZ2U6IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LnN1cHBvcnRUZXh0Py5kb21haW5VUkwsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgcGF0dGVybkVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5wYXR0ZXJuPy5hcHBEb21haW5VcmwsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5kb21haW5VUkwsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmRvbWFpblVSTCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5SQURJTyxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFwcFR5cGUgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdhcHBUeXBlJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgcmFkaW9PcHRpb25zOiB0aGlzLmFwcFR5cGVPcHRpb25zLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmFwcFR5cGUsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmFwcFR5cGUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyB0ZW5hbnQgb24gZm9ybSBzdWJtaXNzaW9uLlxyXG4gICAqIEBwYXJhbSB7Rm9ybUdyb3VwW119IGZvcm1cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlVGVuYW50QXBwbGljYXRpb25Db21wb25lbnRcclxuICAgKi9cclxuICBvbkNyZWF0ZVRlbmFudEZvcm1TdWJtaXQoZm9ybTogRm9ybUdyb3VwW10pOiB2b2lkIHtcclxuICAgIGZvcm1bMF0/Lm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgIGlmIChmb3JtWzBdLnN0YXR1cyA9PT0gRm9ybVN0YXR1cy5WQUxJRCkge1xyXG4gICAgICB0aGlzLmNyZWF0ZVRlbmFudFBheWxvYWQgPSB0aGlzLmdldENyZWF0ZVRlbmFudFBheWxvYWQoXHJcbiAgICAgICAgZm9ybVswXS5nZXRSYXdWYWx1ZSgpXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0aGlzLmZpbGUpIHRoaXMuZ2V0RmlsZVVwbG9hZFByZXNpZ25lZFVybCh0aGlzLmZpbGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyBjcmVhdGUgdGVuYW50IHBheWxvYWQgZnJvbSB0aGUgZm9ybSBkYXRhIGFuZCByZXR1cm5zLlxyXG4gICAqIEBwYXJhbSB7Kn0gZm9ybURhdGFcclxuICAgKiBAcmV0dXJuIHtDcmVhdGVUZW5hbnRSZXF1ZXN0UGF5bG9hZH1cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlVGVuYW50QXBwbGljYXRpb25Db21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGdldENyZWF0ZVRlbmFudFBheWxvYWQoZm9ybURhdGE6IGFueSk6IENyZWF0ZVRlbmFudFJlcXVlc3RQYXlsb2FkIHtcclxuICAgIGNvbnN0IHBheWxvYWQ6IENyZWF0ZVRlbmFudFJlcXVlc3RQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgYXBwVGl0bGU6IGZvcm1EYXRhPy5hcHBUaXRsZSxcclxuICAgICAgICBhcHBJZDogZm9ybURhdGE/LmFwcElkLFxyXG4gICAgICAgIGFwcEhlYWRpbmc6IGZvcm1EYXRhPy5hcHBIZWFkaW5nLFxyXG4gICAgICAgIGFwcERlc2NyaXB0aW9uOiBmb3JtRGF0YT8uYXBwRGVzY3JpcHRpb24sXHJcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBmb3JtRGF0YT8uYmFja2dyb3VuZENvbG9yLFxyXG4gICAgICAgIGFwcExvZ286IGZvcm1EYXRhPy5hcHBMb2dvLFxyXG4gICAgICAgIGFwcERvbWFpblVybDogZm9ybURhdGE/LmFwcERvbWFpblVybCxcclxuICAgICAgICBhcHBIZWxwTGluazogZm9ybURhdGE/LmFwcEhlbHBMaW5rLFxyXG4gICAgICAgIGFwcFR5cGU6IHRoaXMuc2VsZWN0ZWRBcHBUeXBlT3B0aW9uPy5pZCBhcyBzdHJpbmcsXHJcbiAgICAgICAgZmVhdHVyZXM6IHRoaXMudGVuYW50QXBwU2VydmljZS5nZXRGZWF0dXJlSWRzKHRoaXMuZmVhdHVyZXNPcHRpb25zKSxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gcGF5bG9hZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgY3JlYXRlIHRlbmFudCBmb3JtIGdyb3VwIHJlZmVyZW5jZSBhbmQgZGlzYWJsZXMgZGVmYXVsdCBmZWF0dXJlcy5cclxuICAgKiBAcGFyYW0ge0Zvcm1Hcm91cFtdfSBmb3JtXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZVRlbmFudEFwcGxpY2F0aW9uQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0Q3JlYXRlVGVuYW50Rm9ybUdyb3VwUmVmKGZvcm06IEZvcm1Hcm91cFtdKTogdm9pZCB7XHJcbiAgICB0aGlzLmNyZWF0ZVRlbmFudEZvcm1Hcm91cFJlZiA9IGZvcm1bMF07XHJcbiAgICBjb25zdCBmZWF0dXJlc0Zvcm1BcnJheSA9IHRoaXMuY3JlYXRlVGVuYW50Rm9ybUdyb3VwUmVmPy5jb250cm9sc1tcclxuICAgICAgJ2ZlYXR1cmVzJ1xyXG4gICAgXSBhcyBGb3JtQXJyYXk7XHJcbiAgICB0aGlzLmZlYXR1cmVzT3B0aW9ucz8uZm9yRWFjaCgob3B0aW9uOiBDaGVja2JveE9wdGlvbiwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICBpZiAob3B0aW9uPy5kaXNhYmxlZCkge1xyXG4gICAgICAgIGZlYXR1cmVzRm9ybUFycmF5Py5hdChpbmRleCkuZGlzYWJsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyBjcmVhdGVUZW5hbnRGb3JtR3JvdXBSZWYgb24gYWRkIHRlbmFudCBmb3JtIGNoYW5nZSBldmVudC5cclxuICAgKiBAcGFyYW0ge0Zvcm1Hcm91cFtdfSBmb3JtXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZVRlbmFudEFwcGxpY2F0aW9uQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25DcmVhdGVUZW5hbnRGb3JtQ2hhbmdlKGZvcm06IEZvcm1Hcm91cFtdKTogdm9pZCB7XHJcbiAgICB0aGlzLmNyZWF0ZVRlbmFudEZvcm1Hcm91cFJlZiA9IGZvcm1bMF07XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIGZvcm0gY2FuY2VsIGV2ZW50LlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVUZW5hbnRBcHBsaWNhdGlvbkNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRm9ybUNhbmNlbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybUNhbmNlbC5lbWl0KCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHNlbGVjdGVkIGZpbGUgd2hlbiB0aGUgZmlsZSBpcyBicm93c2VkIGFuZCBvbiBmb3JtRmlsZVVwbG9hZCBldmVudCBpcyB0cmlnZ2VyZWQuXHJcbiAgICogQHBhcmFtIHtGaWxlIHwgRmlsZUxpc3R9IGZpbGVcclxuICAgKi9cclxuICBvbkZvcm1GaWxlVXBsb2FkKGZpbGU6IEZpbGUgfCBGaWxlTGlzdCk6IHZvaWQge1xyXG4gICAgdGhpcy5maWxlID0gZmlsZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyBwcmUtc2lnbmVkIFVSTCB0byB1cGxvYWQgdGhlIHNlbGVjdGVkIGZpbGUgdG8gQVdTIFMzIGJ1Y2tldC5cclxuICAgKiBAcGFyYW0ge0ZpbGUgfCBGaWxlTGlzdH0gZmlsZVxyXG4gICAqL1xyXG4gIGdldEZpbGVVcGxvYWRQcmVzaWduZWRVcmwoZmlsZTogRmlsZSB8IEZpbGVMaXN0KTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlXHJcbiAgICAgIC5nZXRGaWxlVXBsb2FkUHJlc2lnbmVkVXJsKGZpbGUpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBGaWxlVXBsb2FkUHJlc2lnbmVkVXJsKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRQcmVzaWduZWRVcmwgPSByZXNwb25zZT8uYm9keTtcclxuICAgICAgICAgIGlmICh0aGlzLmZpbGVVcGxvYWRQcmVzaWduZWRVcmwpIHRoaXMudXBsb2FkRmlsZVRvUzMoZmlsZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSwgbm8tdW51c2VkLXZhcnMsIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uLCBuby1lbXB0eS1mdW5jdGlvblxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmhhbmRsZUVycm9ycyhcclxuICAgICAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmVycm9yc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVXBsb2FkcyB0aGUgZmlsZSB0byBBV1MgUzMgYnVja2V0IGFuZCBzdWJtaXQgdGhlIGZvcm0gZGF0YSB0byBBUEkgdG8gY3JlYXRlIG5ldyB0ZW5hbnQuXHJcbiAgICogQHBhcmFtIHtGaWxlIHwgRmlsZUxpc3R9IGZpbGVcclxuICAgKi9cclxuICB1cGxvYWRGaWxlVG9TMyhmaWxlOiBGaWxlIHwgRmlsZUxpc3QpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsZVVwbG9hZFNlcnZpY2VcclxuICAgICAgLnVwbG9hZEZpbGVUb1MzKHRoaXMuZmlsZVVwbG9hZFByZXNpZ25lZFVybCwgZmlsZSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMsIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlLnNldEZpbGVVcGxvYWRTdGF0dXModHJ1ZSk7XHJcbiAgICAgICAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2VcclxuICAgICAgICAgICAgLmNyZWF0ZVRlbmFudCh0aGlzLmNyZWF0ZVRlbmFudFBheWxvYWQpXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBDcmVhdGVUZW5hbnRSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cykge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2Uuc2V0VGVuYW50QmFzaWNJbmZvKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50UGF5bG9hZFxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnN1Ym1pdEZvcm1SZXNwb25zZS5lbWl0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuaGFuZGxlRXJyb3JzKFxyXG4gICAgICAgICAgICAgICAgICBlcnJvcixcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8uZXJyb3JzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMsIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZFNlcnZpY2Uuc2V0RmlsZVVwbG9hZFN0YXR1cyhmYWxzZSk7XHJcbiAgICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuaGFuZGxlRXJyb3JzKFxyXG4gICAgICAgICAgICBlcnJvcixcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8uZXJyb3JzXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBUcmlnZ2VycyB3aGVuIHRoZSBjb2xvciBwaWNrZXIgdmFsdWVzIGhhcyBiZWVuIGNoYW5nZWQuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbG9yXHJcbiAgICovXHJcbiAgb25Db2xvclBpY2tlckNoYW5nZShjb2xvcjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ29sb3IgPSBjb2xvcjtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVHJpZ2dlcnMgd2hlbiB0aGUgcmFkaW8gb3B0aW9uIGhhcyBiZWVuIGNoYW5nZWQuXHJcbiAgICogQHBhcmFtIHtSYWRpb09wdGlvbn0gcmFkaW9PcHRpb25cclxuICAgKi9cclxuICBvblJhZGlvT3B0aW9uU2VsZWN0ZWQocmFkaW9PcHRpb246IFJhZGlvT3B0aW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkQXBwVHlwZU9wdGlvbiA9IHJhZGlvT3B0aW9uO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBJbXBsZW1lbnRhdGlvbiBvZiBuZ09uRGVzdHJveSBsaWZlY3ljbGUgaG9vayBtZXRob2QgdG8gdW5zdWJzY3JpYmUgdGhlIG9wZW4gb2JzZXJ2YWJsZSBzdWJzY3JpcHRpb25zLlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVUZW5hbnRBcHBsaWNhdGlvbkNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8aWVlZXNhLWR5bmFtaWMtZm9ybVxyXG4gICpuZ0lmPVwiY3JlYXRlVGVuYW50Rm9ybUdyb3VwXCJcclxuICBjbGFzcz1cImllZWVzYS1jcmVhdGUtdGVuYW50LWZvcm1cIlxyXG4gIFtsZWZ0QnV0dG9uTGFiZWxdPVwibGVmdEJ1dHRvbkxhYmVsXCJcclxuICBbcmlnaHRCdXR0b25MYWJlbF09XCJyaWdodEJ1dHRvbkxhYmVsXCJcclxuICBbaXNMZWdlbmRWaXNpYmxlXT1cImZhbHNlXCJcclxuICBbY29sV2lkdGhdPVwiY29sV2lkdGhcIlxyXG4gIFthY3Rpb25CdXR0b25BbGlnbl09XCJhY3Rpb25CdXR0b25BbGlnblwiXHJcbiAgW2Zvcm1Hcm91cHNdPVwiY3JlYXRlVGVuYW50Rm9ybUdyb3VwXCJcclxuICBbaXNMZWZ0QnV0dG9uTmVlZGVkXT1cInRydWVcIlxyXG4gIChmb3JtU3VibWl0KT1cIm9uQ3JlYXRlVGVuYW50Rm9ybVN1Ym1pdCgkZXZlbnQpXCJcclxuICAoZm9ybUNoYW5nZSk9XCJvbkNyZWF0ZVRlbmFudEZvcm1DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgKGZvcm1MZWZ0QnV0dG9uQ2xpY2tlZCk9XCJvbkZvcm1DYW5jZWwoKVwiXHJcbiAgKGZvcm1Hcm91cHNSZWZlcmVuY2UpPVwiZ2V0Q3JlYXRlVGVuYW50Rm9ybUdyb3VwUmVmKCRldmVudClcIlxyXG4gIChmb3JtRmlsZVVwbG9hZCk9XCJvbkZvcm1GaWxlVXBsb2FkKCRldmVudClcIlxyXG4gIChmb3JtQ29sb3JQaWNrZXJDaGFuZ2UpPVwib25Db2xvclBpY2tlckNoYW5nZSgkZXZlbnQpXCJcclxuICAoZm9ybVJhZGlvT3B0aW9uU2VsZWN0ZWQpPVwib25SYWRpb09wdGlvblNlbGVjdGVkKCRldmVudClcIlxyXG4+PC9pZWVlc2EtZHluYW1pYy1mb3JtPlxyXG4iXX0=
|
|
421
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXRlbmFudC1hcHBsaWNhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW5hbnRzL3NyYy9saWIvY29tcG9uZW50cy9jcmVhdGUtdGVuYW50LWFwcGxpY2F0aW9uL2NyZWF0ZS10ZW5hbnQtYXBwbGljYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVuYW50cy9zcmMvbGliL2NvbXBvbmVudHMvY3JlYXRlLXRlbmFudC1hcHBsaWNhdGlvbi9jcmVhdGUtdGVuYW50LWFwcGxpY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUdaLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxTQUFTLEVBSVQsZUFBZSxFQUVmLGdCQUFnQixFQUdoQixvQkFBb0IsR0FDckIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEtBQUssV0FBVyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBd0IsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7OztBQXFCakQsTUFBTSxPQUFPLGdDQUFnQztJQTRCM0M7SUFDRSwwQ0FBMEM7SUFDbkMsaUJBQW9DO0lBQzNDLDBDQUEwQztJ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Qy9CLENBQUM7WUFDSixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNEOzs7T0FHRztJQUNILG1CQUFtQixDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUNEOzs7T0FHRztJQUNILHFCQUFxQixDQUFDLFdBQXdCO1FBQzVDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxXQUFXLENBQUM7SUFDM0MsQ0FBQztJQUNEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLENBQUM7K0dBaGRVLGdDQUFnQzttR0FBaEMsZ0NBQWdDLG1PQVdoQyxvQkFBb0IsZ0RDM0RqQyx5eUJBa0JBLDQrVUR5QlksWUFBWSxtSUFBRSxvQkFBb0I7OzRGQUtqQyxnQ0FBZ0M7a0JBUjVDLFNBQVM7K0JBQ0Usa0NBQWtDLGNBQ2hDLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxvQkFBb0IsQ0FBQyxpQkFHOUIsaUJBQWlCLENBQUMsSUFBSTs0S0FjckMsb0JBQW9CO3NCQURuQixTQUFTO3VCQUFDLG9CQUFvQjtnQkFFckIsa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFsaWduVHlwZSxcclxuICBDaGVja2JveE9wdGlvbixcclxuICBGb3JtR3JpZCxcclxuICBSYWRpb09wdGlvbixcclxuICBGb3JtQ29udHJvbFR5cGUsXHJcbiAgRm9ybU1vZGVsLFxyXG4gIEFsbG93ZWRGaWxlVHlwZXMsXHJcbiAgRmlsZVVwbG9hZFNlcnZpY2UsXHJcbiAgRmlsZVVwbG9hZFByZXNpZ25lZFVybCxcclxuICBEeW5hbWljRm9ybUNvbXBvbmVudCxcclxufSBmcm9tICdAaWVlZXNhLW5wbS9wcmVzZW50YXRpb24nO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgc2NyZWVuVGV4dHMgZnJvbSAnLi4vLi4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRlbmFudHNWYWxpZGF0aW9uUGF0dGVybnMgfSBmcm9tICcuLi8uLi9hc3NldHMvdGVuYW50LXZhbGlkYXRpb25zJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybVN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXN0YXR1cy5tb2RlbCc7XHJcbmltcG9ydCB7IHZhbGlkQ29sb3JWYWxpZGF0b3IgfSBmcm9tICduZ3gtY29sb3JzJztcclxuaW1wb3J0IHsgRmVhdHVyZXMsIEdldEZlYXR1cmVzUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmVhdHVyZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGVuYW50LWFwcGxpY2F0aW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBBcHBUeXBlQ29uZmlnLFxyXG4gIEdldEFwcFR5cGVzUmVzcG9uc2UsXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcC10eXBlLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgQ3JlYXRlVGVuYW50UmVxdWVzdFBheWxvYWQsXHJcbiAgQ3JlYXRlVGVuYW50UmVzcG9uc2UsXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL3RlbmFudC5tb2RlbCc7XHJcbmltcG9ydCB7IFNoYXJlZFNlcnZpY2UgfSBmcm9tICdAaWVlZXNhLW5wbS9zaGFyZWQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtY3JlYXRlLXRlbmFudC1hcHBsaWNhdGlvbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBEeW5hbWljRm9ybUNvbXBvbmVudF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS10ZW5hbnQtYXBwbGljYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NyZWF0ZS10ZW5hbnQtYXBwbGljYXRpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3JlYXRlVGVuYW50QXBwbGljYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBzY3JlZW5UZXh0cztcclxuICBjcmVhdGVUZW5hbnRUZXh0cyA9IHRoaXMuY29uc3RhbnRzPy5jcmVhdGVUZW5hbnQ7XHJcbiAgbGVmdEJ1dHRvbkxhYmVsID0gdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmxlZnRCdXR0b25MYWJlbDtcclxuICByaWdodEJ1dHRvbkxhYmVsID0gdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LnJpZ2h0QnV0dG9uTGFiZWw7XHJcbiAgY29sV2lkdGg6IEZvcm1HcmlkID0geyB4czogMTIsIHhsOiAxMiwgc206IDEyLCBtZDogMTIsIGxnOiAxMiB9O1xyXG4gIGNyZWF0ZVRlbmFudEZvcm1Hcm91cCE6IEZvcm1Nb2RlbDtcclxuICBhY3Rpb25CdXR0b25BbGlnbiA9IEFsaWduVHlwZS5MRUZUO1xyXG4gIGNyZWF0ZVRlbmFudEZvcm1Hcm91cFJlZiE6IEZvcm1Hcm91cDtcclxuICBAVmlld0NoaWxkKER5bmFtaWNGb3JtQ29tcG9uZW50KVxyXG4gIGR5bmFtaWNGb3JtQ29tcG9uZW50ITogRHluYW1pY0Zvcm1Db21wb25lbnQ7XHJcbiAgQE91dHB1dCgpIHN1Ym1pdEZvcm1SZXNwb25zZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZm9ybUNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBmZWF0dXJlc09wdGlvbnMhOiBDaGVja2JveE9wdGlvbltdO1xyXG4gIGFwcFR5cGVPcHRpb25zITogUmFkaW9PcHRpb25bXTtcclxuICBjcmVhdGVUZW5hbnRQYXlsb2FkITogQ3JlYXRlVGVuYW50UmVxdWVzdFBheWxvYWQ7XHJcbiAgZmlsZVVwbG9hZFByZXNpZ25lZFVybCE6IHN0cmluZztcclxuICBmaWxlRG93bmxvYWRQcmVzaWduZWRVcmwhOiBzdHJpbmc7XHJcbiAgZmlsZSE6IEZpbGUgfCBGaWxlTGlzdDtcclxuICBhbGxvd2VkRmlsZVR5cGVzID0gW1xyXG4gICAgQWxsb3dlZEZpbGVUeXBlcy5KUEcsXHJcbiAgICBBbGxvd2VkRmlsZVR5cGVzLlBORyxcclxuICAgIEFsbG93ZWRGaWxlVHlwZXMuU1ZHLFxyXG4gIF07XHJcbiAgc2VsZWN0ZWRDb2xvciE6IHN0cmluZztcclxuICBzZWxlY3RlZEFwcFR5cGVPcHRpb24hOiBSYWRpb09wdGlvbjtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGZpbGVVcGxvYWRTZXJ2aWNlOiBGaWxlVXBsb2FkU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSB0ZW5hbnRBcHBTZXJ2aWNlOiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIHNoYXJlZFNlcnZpY2U6IFNoYXJlZFNlcnZpY2UgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgKSB7fVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5maWxlVXBsb2FkU2VydmljZS5zZXRBcGlCYXNlVXJsKHRoaXMudGVuYW50QXBwU2VydmljZT8uYXBpQmFzZVVybCk7XHJcbiAgICB0aGlzLmdldEZlYXR1cmVzKCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGxpc3Qgb2YgZmVhdHVyZXMgYW5kIHVwZGF0ZXMgdGhlIGZvcm0gY29udHJvbC5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlVGVuYW50QXBwbGljYXRpb25Db21wb25lbnRcclxuICAgKi9cclxuICBnZXRGZWF0dXJlcygpOiB2b2lkIHtcclxuICAgIHRoaXMudGVuYW50QXBwU2VydmljZVxyXG4gICAgICAuZ2V0RmVhdHVyZXMoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogR2V0RmVhdHVyZXNSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlc09wdGlvbnMgPSB0aGlzLnRlbmFudEFwcFNlcnZpY2UuZ2V0RmVhdHVyZU9wdGlvbnMoXHJcbiAgICAgICAgICAgICAgcmVzcG9uc2U/LmJvZHkgYXMgRmVhdHVyZXNbXVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLmdldEFwcGxpY2F0aW9uVHlwZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuaGFuZGxlRXJyb3JzKFxyXG4gICAgICAgICAgICBlcnJvcixcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8uZXJyb3JzXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBhcHBsaWNhdGlvbi90ZW5hbnQgdHlwZXMgYW5kIHVwZGF0ZXMgdGhlIGZvcm0gY29udHJvbC5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlVGVuYW50QXBwbGljYXRpb25Db21wb25lbnRcclxuICAgKi9cclxuICBnZXRBcHBsaWNhdGlvblR5cGVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlXHJcbiAgICAgIC5nZXRBcHBsaWNhdGlvblR5cGVzKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IEdldEFwcFR5cGVzUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZT8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwVHlwZU9wdGlvbnMgPVxyXG4gICAgICAgICAgICAgIHRoaXMudGVuYW50QXBwU2VydmljZS5nZXRBcHBsaWNhdGlvblR5cGVPcHRpb25zKFxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2U/LmJvZHkgYXMgQXBwVHlwZUNvbmZpZ1tdXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplQ3JlYXRlVGVuYW50Rm9ybUdyb3VwKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmhhbmRsZUVycm9ycyhcclxuICAgICAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmVycm9yc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSB0aGUgY3JlYXRlIHRlbmFudCBmb3JtIGdyb3VwIGFycmF5LlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVUZW5hbnRBcHBsaWNhdGlvbkNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGluaXRpYWxpemVDcmVhdGVUZW5hbnRGb3JtR3JvdXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNyZWF0ZVRlbmFudEZvcm1Hcm91cCA9IHtcclxuICAgICAgZm9ybUdyb3VwOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGVnZW5kOiAnJyxcclxuICAgICAgICAgIGNvbnRyb2xzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuSU5QVVQsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcHBUaXRsZSArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2FwcFRpdGxlJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1xyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKFxyXG4gICAgICAgICAgICAgICAgICBUZW5hbnRzVmFsaWRhdGlvblBhdHRlcm5zLmFwcFRpdGxlTWF4TGVuZ3RoXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgc3VwcG9ydE1lc3NhZ2U6IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LnN1cHBvcnRUZXh0Py5hcHBUaXRsZSxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICBtYXhFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8ubGltaXQ/LmFwcFRpdGxlTWF4Q2hhcnMsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5hcHBUaXRsZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uYXBwVGl0bGUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuSU5QVVQsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcHBJZCArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2FwcElkJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1xyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKFRlbmFudHNWYWxpZGF0aW9uUGF0dGVybnMuYXBwSWRNYXhMZW5ndGgpLFxyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKFRlbmFudHNWYWxpZGF0aW9uUGF0dGVybnMuYWxwaGFOdW1lcmljKSxcclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5zdXBwb3J0VGV4dD8uYXBwSWQsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgbWF4RXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0Py5hcHBJZE1heENoYXJzLFxyXG4gICAgICAgICAgICAgIHBhdHRlcm5FcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucGF0dGVybj8uYXBwSWQsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5hcHBJZCxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uYXBwSWQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGU/LkZJTEVfVVBMT0FELFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXBwTG9nbyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2FwcExvZ28nLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJycsXHJcbiAgICAgICAgICAgICAgc3VwcG9ydE1lc3NhZ2U6IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LnN1cHBvcnRUZXh0Py5hcHBMb2dvLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmFwcExvZ28sXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmFwcExvZ28sXHJcbiAgICAgICAgICAgICAgaXNNdWx0aUZpbGVVcGxvYWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIG1heFVwbG9hZEZpbGVTaXplOiAyLFxyXG4gICAgICAgICAgICAgIG1heEZpbGVTaXplRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0Py5hcHBMb2dvTWF4U2l6ZSxcclxuICAgICAgICAgICAgICBhbGxvd2VkRmlsZVR5cGVFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8uaW52YWxpZEZpbGUsXHJcbiAgICAgICAgICAgICAgYWxsb3dlZEZpbGVUeXBlczogdGhpcy5hbGxvd2VkRmlsZVR5cGVzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLklOUFVULFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXBwSGVhZGluZyArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2FwcEhlYWRpbmcnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoXHJcbiAgICAgICAgICAgICAgICAgIFRlbmFudHNWYWxpZGF0aW9uUGF0dGVybnMuYXBwSGVhZGluZ01heExlbmd0aFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5zdXBwb3J0VGV4dD8uYXBwSGVhZGluZyxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICBtYXhFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8ubGltaXRcclxuICAgICAgICAgICAgICAgICAgPy5hcHBIZWFkaW5nTWF4Q2hhcnMsXHJcbiAgICAgICAgICAgICAgcGF0dGVybkVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5wYXR0ZXJuPy5lbWFpbCxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmFwcEhlYWRpbmcsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmFwcEhlYWRpbmcsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuVEVYVF9BUkVBLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXBwRGVzY3JpcHRpb24gKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdhcHBEZXNjcmlwdGlvbicsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aChcclxuICAgICAgICAgICAgICAgICAgVGVuYW50c1ZhbGlkYXRpb25QYXR0ZXJucy5hcHBEZXNjcmlwdGlvbk1heExlbmd0aFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8uc3VwcG9ydFRleHQ/LmFwcERlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIG1heEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5saW1pdFxyXG4gICAgICAgICAgICAgICAgICA/LmFwcERlc2NyaXB0aW9uTWF4Q2hhcnMsXHJcbiAgICAgICAgICAgICAgbWF4Q2hhckNvdW50OiBUZW5hbnRzVmFsaWRhdGlvblBhdHRlcm5zLmFwcERlc2NyaXB0aW9uTWF4TGVuZ3RoLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmFwcERlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkXHJcbiAgICAgICAgICAgICAgICAgID8uYXBwRGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgYXJpYU11bHRpbGluZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBpc1Jlc2l6ZTogdHJ1ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5DT0xPUl9QSUNLRVIsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcHBCZ0NvbG9yICsgJyonLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnYmFja2dyb3VuZENvbG9yJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5zdXBwb3J0VGV4dD8uYXBwQmdDb2xvcixcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgdmFsaWRDb2xvclZhbGlkYXRvcigpXSxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICBpbnZhbGlkQ29sb3JFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8uaW52YWxpZENvbG9yLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8uc3VwcG9ydFRleHQ/LmFwcEJnQ29sb3IsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5zdXBwb3J0VGV4dD8uYXBwQmdDb2xvcixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5JTlBVVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFwcEhlbHBMaW5rICsgJyonLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnYXBwSGVscExpbmsnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKFRlbmFudHNWYWxpZGF0aW9uUGF0dGVybnMudXJsKSxcclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5zdXBwb3J0VGV4dD8uYXBwSGVscExpbmssXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgcGF0dGVybkVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5wYXR0ZXJuPy5hcHBIZWxwTGluayxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmFwcEhlbHBMaW5rLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5hcHBIZWxwTGluayxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5DSEVDS0JPWCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmZlYXR1cmVzTGlzdCArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2ZlYXR1cmVzJyxcclxuICAgICAgICAgICAgICBjaGVja2JveE9wdGlvbnM6IHRoaXMuZmVhdHVyZXNPcHRpb25zLFxyXG4gICAgICAgICAgICAgIG1pblNlbGVjdGlvblJlcXVpcmVkOiAxLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uZmVhdHVyZXNMaXN0LFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5mZWF0dXJlc0xpc3QsXHJcbiAgICAgICAgICAgICAgc3VwcG9ydE1lc3NhZ2U6IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LnN1cHBvcnRUZXh0Py5mZWF0dXJlc0xpc3QsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLklOUFVULFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uZG9tYWluVVJMICsgJyonLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnYXBwRG9tYWluVXJsJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1xyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihUZW5hbnRzVmFsaWRhdGlvblBhdHRlcm5zLnVybCksXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8uc3VwcG9ydFRleHQ/LmRvbWFpblVSTCxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICBwYXR0ZXJuRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnBhdHRlcm4/LmFwcERvbWFpblVybCxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmRvbWFpblVSTCxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uZG9tYWluVVJMLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlJBRElPLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXBwVHlwZSArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2FwcFR5cGUnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgICByYWRpb09wdGlvbnM6IHRoaXMuYXBwVHlwZU9wdGlvbnMsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uYXBwVHlwZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uYXBwVHlwZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIHRlbmFudCBvbiBmb3JtIHN1Ym1pc3Npb24uXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVUZW5hbnRBcHBsaWNhdGlvbkNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uQ3JlYXRlVGVuYW50Rm9ybVN1Ym1pdChmb3JtOiBGb3JtR3JvdXBbXSk6IHZvaWQge1xyXG4gICAgZm9ybVswXT8ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgaWYgKGZvcm1bMF0uc3RhdHVzID09PSBGb3JtU3RhdHVzLlZBTElEKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlVGVuYW50UGF5bG9hZCA9IHRoaXMuZ2V0Q3JlYXRlVGVuYW50UGF5bG9hZChcclxuICAgICAgICBmb3JtWzBdLmdldFJhd1ZhbHVlKClcclxuICAgICAgKTtcclxuICAgICAgaWYgKHRoaXMuZmlsZSkgdGhpcy5nZXRGaWxlVXBsb2FkUHJlc2lnbmVkVXJsKHRoaXMuZmlsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb25zdHJ1Y3RzIGNyZWF0ZSB0ZW5hbnQgcGF5bG9hZCBmcm9tIHRoZSBmb3JtIGRhdGEgYW5kIHJldHVybnMuXHJcbiAgICogQHBhcmFtIHsqfSBmb3JtRGF0YVxyXG4gICAqIEByZXR1cm4ge0NyZWF0ZVRlbmFudFJlcXVlc3RQYXlsb2FkfVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVUZW5hbnRBcHBsaWNhdGlvbkNvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZ2V0Q3JlYXRlVGVuYW50UGF5bG9hZChmb3JtRGF0YTogYW55KTogQ3JlYXRlVGVuYW50UmVxdWVzdFBheWxvYWQge1xyXG4gICAgY29uc3QgcGF5bG9hZDogQ3JlYXRlVGVuYW50UmVxdWVzdFBheWxvYWQgPSB7XHJcbiAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICBhcHBUaXRsZTogZm9ybURhdGE/LmFwcFRpdGxlLFxyXG4gICAgICAgIGFwcElkOiBmb3JtRGF0YT8uYXBwSWQsXHJcbiAgICAgICAgYXBwSGVhZGluZzogZm9ybURhdGE/LmFwcEhlYWRpbmcsXHJcbiAgICAgICAgYXBwRGVzY3JpcHRpb246IGZvcm1EYXRhPy5hcHBEZXNjcmlwdGlvbixcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGZvcm1EYXRhPy5iYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgICAgYXBwTG9nbzogZm9ybURhdGE/LmFwcExvZ28sXHJcbiAgICAgICAgYXBwRG9tYWluVXJsOiBmb3JtRGF0YT8uYXBwRG9tYWluVXJsLFxyXG4gICAgICAgIGFwcEhlbHBMaW5rOiBmb3JtRGF0YT8uYXBwSGVscExpbmssXHJcbiAgICAgICAgYXBwVHlwZTogdGhpcy5zZWxlY3RlZEFwcFR5cGVPcHRpb24/LmlkIGFzIHN0cmluZyxcclxuICAgICAgICBmZWF0dXJlczogdGhpcy50ZW5hbnRBcHBTZXJ2aWNlLmdldEZlYXR1cmVJZHModGhpcy5mZWF0dXJlc09wdGlvbnMpLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHJldHVybiBwYXlsb2FkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBjcmVhdGUgdGVuYW50IGZvcm0gZ3JvdXAgcmVmZXJlbmNlIGFuZCBkaXNhYmxlcyBkZWZhdWx0IGZlYXR1cmVzLlxyXG4gICAqIEBwYXJhbSB7Rm9ybUdyb3VwW119IGZvcm1cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlVGVuYW50QXBwbGljYXRpb25Db21wb25lbnRcclxuICAgKi9cclxuICBnZXRDcmVhdGVUZW5hbnRGb3JtR3JvdXBSZWYoZm9ybTogRm9ybUdyb3VwW10pOiB2b2lkIHtcclxuICAgIHRoaXMuY3JlYXRlVGVuYW50Rm9ybUdyb3VwUmVmID0gZm9ybVswXTtcclxuICAgIGNvbnN0IGZlYXR1cmVzRm9ybUFycmF5ID0gdGhpcy5jcmVhdGVUZW5hbnRGb3JtR3JvdXBSZWY/LmNvbnRyb2xzW1xyXG4gICAgICAnZmVhdHVyZXMnXHJcbiAgICBdIGFzIEZvcm1BcnJheTtcclxuICAgIHRoaXMuZmVhdHVyZXNPcHRpb25zPy5mb3JFYWNoKChvcHRpb246IENoZWNrYm94T3B0aW9uLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGlmIChvcHRpb24/LmRpc2FibGVkKSB7XHJcbiAgICAgICAgZmVhdHVyZXNGb3JtQXJyYXk/LmF0KGluZGV4KS5kaXNhYmxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBVcGRhdGVzIGNyZWF0ZVRlbmFudEZvcm1Hcm91cFJlZiBvbiBhZGQgdGVuYW50IGZvcm0gY2hhbmdlIGV2ZW50LlxyXG4gICAqIEBwYXJhbSB7Rm9ybUdyb3VwW119IGZvcm1cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlVGVuYW50QXBwbGljYXRpb25Db21wb25lbnRcclxuICAgKi9cclxuICBvbkNyZWF0ZVRlbmFudEZvcm1DaGFuZ2UoZm9ybTogRm9ybUdyb3VwW10pOiB2b2lkIHtcclxuICAgIHRoaXMuY3JlYXRlVGVuYW50Rm9ybUdyb3VwUmVmID0gZm9ybVswXTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRW1pdHMgZm9ybSBjYW5jZWwgZXZlbnQuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZVRlbmFudEFwcGxpY2F0aW9uQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Gb3JtQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtQ2FuY2VsLmVtaXQoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgc2VsZWN0ZWQgZmlsZSB3aGVuIHRoZSBmaWxlIGlzIGJyb3dzZWQgYW5kIG9uIGZvcm1GaWxlVXBsb2FkIGV2ZW50IGlzIHRyaWdnZXJlZC5cclxuICAgKiBAcGFyYW0ge0ZpbGUgfCBGaWxlTGlzdH0gZmlsZVxyXG4gICAqL1xyXG4gIG9uRm9ybUZpbGVVcGxvYWQoZmlsZTogRmlsZSB8IEZpbGVMaXN0KTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGUgPSBmaWxlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIHByZS1zaWduZWQgVVJMIHRvIHVwbG9hZCB0aGUgc2VsZWN0ZWQgZmlsZSB0byBBV1MgUzMgYnVja2V0LlxyXG4gICAqIEBwYXJhbSB7RmlsZSB8IEZpbGVMaXN0fSBmaWxlXHJcbiAgICovXHJcbiAgZ2V0RmlsZVVwbG9hZFByZXNpZ25lZFVybChmaWxlOiBGaWxlIHwgRmlsZUxpc3QpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsZVVwbG9hZFNlcnZpY2VcclxuICAgICAgLmdldEZpbGVVcGxvYWRQcmVzaWduZWRVcmwoZmlsZSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IEZpbGVVcGxvYWRQcmVzaWduZWRVcmwpID0+IHtcclxuICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZFByZXNpZ25lZFVybCA9IHJlc3BvbnNlPy5ib2R5O1xyXG4gICAgICAgICAgaWYgKHRoaXMuZmlsZVVwbG9hZFByZXNpZ25lZFVybCkgdGhpcy51cGxvYWRGaWxlVG9TMyhmaWxlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55LCBuby11bnVzZWQtdmFycywgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb24sIG5vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuaGFuZGxlRXJyb3JzKFxyXG4gICAgICAgICAgICBlcnJvcixcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8uZXJyb3JzXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBVcGxvYWRzIHRoZSBmaWxlIHRvIEFXUyBTMyBidWNrZXQgYW5kIHN1Ym1pdCB0aGUgZm9ybSBkYXRhIHRvIEFQSSB0byBjcmVhdGUgbmV3IHRlbmFudC5cclxuICAgKiBAcGFyYW0ge0ZpbGUgfCBGaWxlTGlzdH0gZmlsZVxyXG4gICAqL1xyXG4gIHVwbG9hZEZpbGVUb1MzKGZpbGU6IEZpbGUgfCBGaWxlTGlzdCk6IHZvaWQge1xyXG4gICAgdGhpcy5maWxlVXBsb2FkU2VydmljZVxyXG4gICAgICAudXBsb2FkRmlsZVRvUzModGhpcy5maWxlVXBsb2FkUHJlc2lnbmVkVXJsLCBmaWxlKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycywgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZFNlcnZpY2Uuc2V0RmlsZVVwbG9hZFN0YXR1cyh0cnVlKTtcclxuICAgICAgICAgIHRoaXMudGVuYW50QXBwU2VydmljZVxyXG4gICAgICAgICAgICAuY3JlYXRlVGVuYW50KHRoaXMuY3JlYXRlVGVuYW50UGF5bG9hZClcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICBuZXh0OiAocmVzcG9uc2U6IENyZWF0ZVRlbmFudFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudGVuYW50QXBwU2VydmljZS5zZXRUZW5hbnRCYXNpY0luZm8oXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRQYXlsb2FkXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3VibWl0Rm9ybVJlc3BvbnNlLmVtaXQocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5oYW5kbGVFcnJvcnMoXHJcbiAgICAgICAgICAgICAgICAgIGVycm9yLFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5lcnJvcnNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMsIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5maWxlVXBsb2FkU2VydmljZS5zZXRGaWxlVXBsb2FkU3RhdHVzKGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5oYW5kbGVFcnJvcnMoXHJcbiAgICAgICAgICAgIGVycm9yLFxyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5lcnJvcnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFRyaWdnZXJzIHdoZW4gdGhlIGNvbG9yIHBpY2tlciB2YWx1ZXMgaGFzIGJlZW4gY2hhbmdlZC5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29sb3JcclxuICAgKi9cclxuICBvbkNvbG9yUGlja2VyQ2hhbmdlKGNvbG9yOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb2xvciA9IGNvbG9yO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBUcmlnZ2VycyB3aGVuIHRoZSByYWRpbyBvcHRpb24gaGFzIGJlZW4gY2hhbmdlZC5cclxuICAgKiBAcGFyYW0ge1JhZGlvT3B0aW9ufSByYWRpb09wdGlvblxyXG4gICAqL1xyXG4gIG9uUmFkaW9PcHRpb25TZWxlY3RlZChyYWRpb09wdGlvbjogUmFkaW9PcHRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRBcHBUeXBlT3B0aW9uID0gcmFkaW9PcHRpb247XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEltcGxlbWVudGF0aW9uIG9mIG5nT25EZXN0cm95IGxpZmVjeWNsZSBob29rIG1ldGhvZCB0byB1bnN1YnNjcmliZSB0aGUgb3BlbiBvYnNlcnZhYmxlIHN1YnNjcmlwdGlvbnMuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZVRlbmFudEFwcGxpY2F0aW9uQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxpZWVlc2EtZHluYW1pYy1mb3JtXHJcbiAgKm5nSWY9XCJjcmVhdGVUZW5hbnRGb3JtR3JvdXBcIlxyXG4gIGNsYXNzPVwiaWVlZXNhLWNyZWF0ZS10ZW5hbnQtZm9ybVwiXHJcbiAgW2xlZnRCdXR0b25MYWJlbF09XCJsZWZ0QnV0dG9uTGFiZWxcIlxyXG4gIFtyaWdodEJ1dHRvbkxhYmVsXT1cInJpZ2h0QnV0dG9uTGFiZWxcIlxyXG4gIFtpc0xlZ2VuZFZpc2libGVdPVwiZmFsc2VcIlxyXG4gIFtjb2xXaWR0aF09XCJjb2xXaWR0aFwiXHJcbiAgW2FjdGlvbkJ1dHRvbkFsaWduXT1cImFjdGlvbkJ1dHRvbkFsaWduXCJcclxuICBbZm9ybUdyb3Vwc109XCJjcmVhdGVUZW5hbnRGb3JtR3JvdXBcIlxyXG4gIFtpc0xlZnRCdXR0b25OZWVkZWRdPVwidHJ1ZVwiXHJcbiAgKGZvcm1TdWJtaXQpPVwib25DcmVhdGVUZW5hbnRGb3JtU3VibWl0KCRldmVudClcIlxyXG4gIChmb3JtQ2hhbmdlKT1cIm9uQ3JlYXRlVGVuYW50Rm9ybUNoYW5nZSgkZXZlbnQpXCJcclxuICAoZm9ybUxlZnRCdXR0b25DbGlja2VkKT1cIm9uRm9ybUNhbmNlbCgpXCJcclxuICAoZm9ybUdyb3Vwc1JlZmVyZW5jZSk9XCJnZXRDcmVhdGVUZW5hbnRGb3JtR3JvdXBSZWYoJGV2ZW50KVwiXHJcbiAgKGZvcm1GaWxlVXBsb2FkKT1cIm9uRm9ybUZpbGVVcGxvYWQoJGV2ZW50KVwiXHJcbiAgKGZvcm1Db2xvclBpY2tlckNoYW5nZSk9XCJvbkNvbG9yUGlja2VyQ2hhbmdlKCRldmVudClcIlxyXG4gIChmb3JtUmFkaW9PcHRpb25TZWxlY3RlZCk9XCJvblJhZGlvT3B0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiXHJcbj48L2llZWVzYS1keW5hbWljLWZvcm0+XHJcbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ieeesa-npm-tenants.mjs","sources":["../../../projects/tenants/src/lib/models/permission-type.model.ts","../../../projects/tenants/src/lib/models/table-column-schema-view-tenant-list.model.ts","../../../projects/tenants/src/lib/assets/tenant-validations.ts","../../../projects/tenants/src/lib/models/form-status.model.ts","../../../projects/tenants/src/lib/services/tenant-permissions.service.ts","../../../projects/tenants/src/lib/services/tenant-permissions-map.service.ts","../../../projects/tenants/src/lib/services/tenant-applications.service.ts","../../../projects/tenants/src/lib/components/create-tenant-application/create-tenant-application.component.ts","../../../projects/tenants/src/lib/components/create-tenant-application/create-tenant-application.component.html","../../../projects/tenants/src/lib/components/view-tenants-list/view-tenants-list.component.ts","../../../projects/tenants/src/lib/components/view-tenants-list/view-tenants-list.component.html","../../../projects/tenants/src/lib/models/feature-permission-id.model.ts","../../../projects/tenants/src/lib/components/view-tenant-details/view-tenant-details.component.ts","../../../projects/tenants/src/lib/components/view-tenant-details/view-tenant-details.component.html","../../../projects/tenants/src/lib/tenant-applications.component.ts","../../../projects/tenants/src/lib/tenant-applications.component.html","../../../projects/tenants/src/lib/models/app-type.model.ts","../../../projects/tenants/src/lib/tenant-applications.module.ts","../../../projects/tenants/src/public-api.ts","../../../projects/tenants/src/ieeesa-npm-tenants.ts"],"sourcesContent":["/* eslint-disable no-unused-vars */\r\nexport enum PermissionType {\r\n VIEW_TENANTS = 'VIEW_TENANTS',\r\n MANAGE_TENANT = 'MANAGE_TENANT',\r\n}\r\nexport enum TenantStatus {\r\n ACTIVE = 'Active',\r\n INACTIVE = 'Inactive',\r\n}\r\n","/* eslint-disable no-unused-vars */\r\nexport enum ViewTenantsColumnSchemaDef {\r\n APP_ID = 'appId',\r\n APP_TITLE = 'appTitle',\r\n APP_DESCRIPTION = 'appDescription',\r\n APP_HEADING = 'appHeading',\r\n FEATURES = 'features',\r\n STATUS = 'status',\r\n}\r\nexport enum SortOrderBy {\r\n DESC = 'DESC',\r\n ASC = 'ASC',\r\n}\r\nexport interface GetTenantsPayload {\r\n payload: {\r\n offset: number;\r\n pageSize: number;\r\n sortedBy: string;\r\n sortedOrderBy: string;\r\n };\r\n}\r\n","/* eslint-disable no-useless-escape */\r\nexport const TenantsValidationPatterns = {\r\n appTitleMaxLength: 50,\r\n appIdMaxLength: 10,\r\n appHeadingMaxLength: 150,\r\n appDescriptionMaxLength: 500,\r\n url: /^https:\\/\\//,\r\n alphaNumeric: /^[a-zA-Z0-9]+$/\r\n };","/* eslint-disable no-unused-vars */\r\nexport enum FormStatus {\r\n VALID = \"VALID\",\r\n INVALID = \"INVALID\",\r\n }","import { Injectable } from '@angular/core';\r\nimport { PermissionType } from '../models/permission-type.model';\r\nimport {\r\n UserPermission,\r\n TenantsPermissions,\r\n} from '../models/tenants-permission.model';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TenantPermissionsService {\r\n /**\r\n * Returns access provision for the passed action/feature based on whether the signed in user has appropriate permission.\r\n * @param {PermissionType} permission\r\n * @param {TenantsPermission[]} tenantsPermissions\r\n * @return {boolean}\r\n * @memberof TenantPermissionsService\r\n */\r\n validateAccessPermission(\r\n permission: PermissionType,\r\n userTenantsPermissions: TenantsPermissions[]\r\n ): boolean {\r\n const isPermitted =\r\n userTenantsPermissions && userTenantsPermissions.length\r\n ? userTenantsPermissions?.some(\r\n ({ permissionType }) => permissionType === permission\r\n )\r\n : false;\r\n return isPermitted;\r\n }\r\n /**\r\n * Filters signed in user tenants permissions from entire tenants permissions.\r\n * @param { UserPermission[] }\r\n * @return {TenantsPermissions[]}\r\n * @memberof TenantPermissionsService\r\n */\r\n filterTenantsPermissions(\r\n userPermissions: UserPermission[],\r\n tenantsPermissions: TenantsPermissions[]\r\n ): TenantsPermissions[] {\r\n const userTenantsPermission = tenantsPermissions?.filter(\r\n (permission: TenantsPermissions) => {\r\n return userPermissions?.find(\r\n ({ permissionId }) => permission?.permissionId === permissionId\r\n );\r\n }\r\n );\r\n return userTenantsPermission;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { PermissionType } from '../models/permission-type.model';\r\nimport { TenantsPermissions } from '../models/tenants-permission.model';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TenantPermissionsMapService {\r\n globalTenantsPermissions: TenantsPermissions[] = [\r\n {\r\n permissionType: PermissionType.VIEW_TENANTS,\r\n permissionId: 'PERM_SAAPPS_1a2dbbb5-5fe1-4261-85b1-a5373f41075a',\r\n permissionName: 'View Tenant Applications',\r\n },\r\n {\r\n permissionType: PermissionType.MANAGE_TENANT,\r\n permissionId: 'PERM_SAAPPS_315c49ec-f79a-4dcd-9795-6f97838c8c83',\r\n permissionName: 'Manage (Create, Edit, Disable) Tenant Application',\r\n },\r\n ];\r\n /**\r\n * Returns global permissions mapping for tenants.\r\n * @return {TenantsPermissions[]}\r\n * @memberof TenantsPermissionsMapService\r\n */\r\n getGlobalTenantsPermissions(): TenantsPermissions[] {\r\n return this.globalTenantsPermissions;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpService } from '@ieeesa-npm/utility';\r\nimport { Observable, catchError, map } from 'rxjs';\r\nimport * as screenTexts from '../assets/constants.json';\r\nimport {\r\n GetTenantsResponse,\r\n TenantInfo,\r\n TenantDetailsResponse,\r\n} from '../models/tenants.model';\r\nimport { GetTenantsPayload } from '../models/table-column-schema-view-tenant-list.model';\r\nimport {\r\n TenantsPermissions,\r\n UserPermission,\r\n} from '../models/tenants-permission.model';\r\nimport { PermissionType } from '../models/permission-type.model';\r\nimport { TenantPermissionsMapService } from './tenant-permissions-map.service';\r\nimport {\r\n CreateTenantRequestPayload,\r\n CreateTenantResponse,\r\n TenantBasicInfo,\r\n} from '../models/tenant.model';\r\nimport { CheckboxOption, RadioOption } from '@ieeesa-npm/presentation';\r\nimport {\r\n FeatureId,\r\n Features,\r\n GetFeaturesResponse,\r\n} from '../models/features.model';\r\nimport {\r\n AppTypeConfig,\r\n GetAppTypesResponse,\r\n} from '../models/app-type-config.model';\r\nimport { TenantPermissionsService } from './tenant-permissions.service';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TenantApplicationsService {\r\n tenantsText = screenTexts?.errors;\r\n apiBaseUrl!: string;\r\n userPermission!: UserPermission[];\r\n selectedTenantInfo!: TenantInfo | undefined;\r\n userTenantsPermissions!: TenantsPermissions[];\r\n tenantsInfo!: TenantInfo;\r\n createTenantsText = screenTexts?.createTenant?.errors;\r\n tenantBasicInfo!: TenantBasicInfo;\r\n radioOptions: RadioOption[] = [];\r\n checkBoxOptions: CheckboxOption[] = [];\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n private httpService: HttpService,\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantPermissionsService: TenantPermissionsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantPermissionsMapService: TenantPermissionsMapService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n setAppConfig(apiBaseUrl: string, userPermission: UserPermission[]): void {\r\n this.apiBaseUrl = apiBaseUrl;\r\n this.userPermission = userPermission;\r\n }\r\n\r\n /**\r\n * Gets tenant details from server using HttpService\r\n * @param {string} appId\r\n * @return {Observable<TenantDetailsResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getTenantDetails(appId: string): Observable<TenantDetailsResponse> {\r\n return this.httpService\r\n .getData(`${this.apiBaseUrl}/configurations/app/details/${appId}`)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Sets the user tenants permissions\r\n * @param {TenantsPermissions[]} TenantsPermissions\r\n * @memberof TenantApplicationsService\r\n */\r\n setUserTenantsPermissions(userTenantsPermissions: TenantsPermissions[]) {\r\n this.userTenantsPermissions = userTenantsPermissions;\r\n }\r\n /**\r\n * Returns the user tenants permissions\r\n * @return {TenantsPermissions[]}\r\n * @memberof TenantApplicationsService\r\n */\r\n getUserTenantsPermissions(): TenantsPermissions[] {\r\n return this.userTenantsPermissions;\r\n }\r\n\r\n /**\r\n * Sets the user tenants information\r\n * @param {TenantInfo} tenantInfo\r\n * @memberof TenantApplicationsService\r\n */\r\n setSelectedTenantInformation(tenantInfo: TenantInfo): void {\r\n this.selectedTenantInfo = tenantInfo;\r\n }\r\n /**\r\n * Returns the tenants information\r\n * @return {TenantInfo}\r\n * @memberof TenantApplicationsService\r\n */\r\n getSelectedTenantInformation(): TenantInfo | undefined {\r\n return this.selectedTenantInfo;\r\n }\r\n /**\r\n * Filter permissions\r\n * @param usersPermissions\r\n * @returns @memberof TenantApplicationsService\r\n */\r\n filterPermission(usersPermissions: UserPermission[]): TenantsPermissions[] {\r\n return this.tenantPermissionsService?.filterTenantsPermissions(\r\n usersPermissions,\r\n this.tenantPermissionsMapService?.getGlobalTenantsPermissions()\r\n );\r\n }\r\n /**\r\n * Validating access for tenants\r\n * @param permissionType Permission Type to validate permission\r\n * @param mappedUserPermissions Permission which are mapped with tenants\r\n * @returns true if permission is granted\r\n */\r\n validateAccess(\r\n permissionType: PermissionType,\r\n permissions: TenantsPermissions[]\r\n ): boolean {\r\n return this.tenantPermissionsService.validateAccessPermission(\r\n permissionType,\r\n permissions\r\n );\r\n }\r\n /**\r\n * Gets the tenants.\r\n * @param {GetTenantsPayload} payload\r\n * @return {Observable<GetTenantsResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getTenantsList(payload: GetTenantsPayload): Observable<GetTenantsResponse> {\r\n return this.httpService\r\n .postData(`${this.apiBaseUrl}/configurations/app/config`, payload)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Gets list of features from server using HttpService.\r\n * @return {Observable<GetFeaturesResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getFeatures(): Observable<GetFeaturesResponse> {\r\n return this.httpService\r\n .getData(`${this.apiBaseUrl}/configurations/app/features`)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Gets list of application types from server using HttpService.\r\n * @return {Observable<GetAppTypesResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getApplicationTypes(): Observable<GetAppTypesResponse> {\r\n return this.httpService\r\n .getData(`${this.apiBaseUrl}/configurations/config/app_type`)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Posts tenant application form data to server using HttpService for creating new tenant application.\r\n * @param {CreateTenantPayload} createTenantPayload\r\n * @return {Observable<CreateTenantResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n createTenant(\r\n createTenantPayload: CreateTenantRequestPayload\r\n ): Observable<CreateTenantResponse> {\r\n return this.httpService\r\n .postData(\r\n `${this.apiBaseUrl}/configurations/app/createTenant`,\r\n createTenantPayload\r\n )\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Constructs the checkbox options from features list from server.\r\n * @param {FeaturesList[]} features\r\n * @returns {CheckboxOption[]}\r\n */\r\n getFeatureOptions(features: Features[]): CheckboxOption[] {\r\n this.checkBoxOptions = [];\r\n features?.forEach((feature: Features) => {\r\n this.checkBoxOptions?.push({\r\n id: feature?.featureId,\r\n name: feature?.featureName,\r\n checked: feature?.isDefault,\r\n disabled: feature?.isDefault,\r\n });\r\n });\r\n return this.checkBoxOptions;\r\n }\r\n /**\r\n * Constructs the radio options from application types from server.\r\n * @param {AppTypeConfig[]} appTypeOptions\r\n * @returns {RadioOption[]}\r\n */\r\n getApplicationTypeOptions(appTypeOptions: AppTypeConfig[]): RadioOption[] {\r\n this.radioOptions = [];\r\n appTypeOptions?.forEach((appType: AppTypeConfig) => {\r\n this.radioOptions?.push({\r\n id: appType?.configFieldId,\r\n label: appType?.configFieldValue?.type,\r\n });\r\n });\r\n return this.radioOptions;\r\n }\r\n /**\r\n * Constructs the selected features id's.\r\n * @param {CheckboxOption[]} featureOptions\r\n * @returns {FeatureId[]}\r\n */\r\n getFeatureIds(featureOptions: CheckboxOption[]): FeatureId[] {\r\n const featureIds: FeatureId[] = [];\r\n featureOptions?.forEach((featureOption: CheckboxOption) => {\r\n if (featureOption?.checked) {\r\n featureIds.push({\r\n featureId: featureOption.id as string,\r\n });\r\n }\r\n })\r\n return featureIds;\r\n }\r\n /**\r\n * Sets the tenant basic information.\r\n * @param {CreateTenantRequestPayload} createTenantPayload\r\n */\r\n setTenantBasicInfo(createTenantPayload: CreateTenantRequestPayload): void {\r\n this.tenantBasicInfo = createTenantPayload?.payload;\r\n }\r\n /**\r\n * Returns the tenant basic information.\r\n */\r\n get getTenantBasicInfo(): TenantBasicInfo {\r\n return this.tenantBasicInfo;\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n AlignType,\r\n CheckboxOption,\r\n FormGrid,\r\n RadioOption,\r\n FormControlType,\r\n FormModel,\r\n AllowedFileTypes,\r\n FileUploadService,\r\n FileUploadPresignedUrl,\r\n DynamicFormComponent,\r\n} from '@ieeesa-npm/presentation';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as screenTexts from '../../assets/constants.json';\r\nimport { FormArray, FormGroup, Validators } from '@angular/forms';\r\nimport { TenantsValidationPatterns } from '../../assets/tenant-validations';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormStatus } from '../../models/form-status.model';\r\nimport { validColorValidator } from 'ngx-colors';\r\nimport { Features, GetFeaturesResponse } from '../../models/features.model';\r\nimport { TenantApplicationsService } from '../../services/tenant-applications.service';\r\nimport {\r\n AppTypeConfig,\r\n GetAppTypesResponse,\r\n} from '../../models/app-type-config.model';\r\nimport {\r\n CreateTenantRequestPayload,\r\n CreateTenantResponse,\r\n} from '../../models/tenant.model';\r\nimport { SharedService } from '@ieeesa-npm/shared';\r\n\r\n@Component({\r\n selector: 'ieeesa-create-tenant-application',\r\n standalone: true,\r\n imports: [CommonModule, DynamicFormComponent],\r\n templateUrl: './create-tenant-application.component.html',\r\n styleUrls: ['./create-tenant-application.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CreateTenantApplicationComponent implements OnInit, OnDestroy {\r\n destroy$ = new Subject<boolean>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = screenTexts;\r\n createTenantTexts = this.constants?.createTenant;\r\n leftButtonLabel = this.createTenantTexts?.label?.leftButtonLabel;\r\n rightButtonLabel = this.createTenantTexts?.label?.rightButtonLabel;\r\n colWidth: FormGrid = { xs: 12, xl: 12, sm: 12, md: 12, lg: 12 };\r\n createTenantFormGroup!: FormModel;\r\n actionButtonAlign = AlignType.LEFT;\r\n createTenantFormGroupRef!: FormGroup;\r\n @ViewChild(DynamicFormComponent)\r\n dynamicFormComponent!: DynamicFormComponent;\r\n @Output() submitFormResponse = new EventEmitter();\r\n @Output() formCancel = new EventEmitter();\r\n featuresOptions!: CheckboxOption[];\r\n appTypeOptions!: RadioOption[];\r\n createTenantPayload!: CreateTenantRequestPayload;\r\n fileUploadPresignedUrl!: string;\r\n fileDownloadPresignedUrl!: string;\r\n file!: File | FileList;\r\n allowedFileTypes = [\r\n AllowedFileTypes.JPG,\r\n AllowedFileTypes.PNG,\r\n AllowedFileTypes.SVG,\r\n ];\r\n selectedColor!: string;\r\n selectedAppTypeOption!: RadioOption;\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n public fileUploadService: FileUploadService,\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantAppService: TenantApplicationsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private sharedService: SharedService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n ngOnInit(): void {\r\n this.getFeatures();\r\n }\r\n /**\r\n * Gets the list of features and updates the form control.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n getFeatures(): void {\r\n this.tenantAppService\r\n .getFeatures()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: GetFeaturesResponse) => {\r\n if (response?.status) {\r\n this.featuresOptions = this.tenantAppService.getFeatureOptions(\r\n response?.body as Features[]\r\n );\r\n this.getApplicationTypes();\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Gets the application/tenant types and updates the form control.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n getApplicationTypes(): void {\r\n this.tenantAppService\r\n .getApplicationTypes()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: GetAppTypesResponse) => {\r\n if (response?.status) {\r\n this.appTypeOptions =\r\n this.tenantAppService.getApplicationTypeOptions(\r\n response?.body as AppTypeConfig[]\r\n );\r\n this.initializeCreateTenantFormGroup();\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Initialize the create tenant form group array.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n initializeCreateTenantFormGroup(): void {\r\n this.createTenantFormGroup = {\r\n formGroup: [\r\n {\r\n legend: '',\r\n controls: [\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createTenantTexts?.label?.appTitle + '*',\r\n controlName: 'appTitle',\r\n value: '',\r\n validation: [\r\n Validators.required,\r\n Validators.maxLength(\r\n TenantsValidationPatterns.appTitleMaxLength\r\n ),\r\n ],\r\n supportMessage: this.createTenantTexts?.supportText?.appTitle,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n maxErrorMessage:\r\n this.createTenantTexts?.message?.error?.limit?.appTitleMaxChars,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appTitle,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appTitle,\r\n },\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createTenantTexts?.label?.appId + '*',\r\n controlName: 'appId',\r\n value: '',\r\n validation: [\r\n Validators.required,\r\n Validators.maxLength(TenantsValidationPatterns.appIdMaxLength),\r\n Validators.pattern(TenantsValidationPatterns.alphaNumeric),\r\n ],\r\n supportMessage: this.createTenantTexts?.supportText?.appId,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n maxErrorMessage:\r\n this.createTenantTexts?.message?.error?.limit?.appIdMaxChars,\r\n patternErrorMessage:\r\n this.createTenantTexts?.message?.error?.pattern?.appId,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appId,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appId,\r\n },\r\n {\r\n type: FormControlType?.FILE_UPLOAD,\r\n label: this.createTenantTexts?.label?.appLogo,\r\n controlName: 'appLogo',\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n value: '',\r\n placeholder: '',\r\n supportMessage: this.createTenantTexts?.supportText?.appLogo,\r\n validation: [Validators.required],\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appLogo,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appLogo,\r\n isMultiFileUpload: false,\r\n maxUploadFileSize: 2,\r\n maxFileSizeErrorMessage:\r\n this.createTenantTexts?.message?.error?.limit?.appLogoMaxSize,\r\n allowedFileTypeErrorMessage:\r\n this.createTenantTexts?.message?.error?.invalidFile,\r\n allowedFileTypes: this.allowedFileTypes,\r\n },\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createTenantTexts?.label?.appHeading + '*',\r\n controlName: 'appHeading',\r\n value: '',\r\n validation: [\r\n Validators.required,\r\n Validators.maxLength(\r\n TenantsValidationPatterns.appHeadingMaxLength\r\n ),\r\n ],\r\n supportMessage: this.createTenantTexts?.supportText?.appHeading,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n maxErrorMessage:\r\n this.createTenantTexts?.message?.error?.limit\r\n ?.appHeadingMaxChars,\r\n patternErrorMessage:\r\n this.createTenantTexts?.message?.error?.pattern?.email,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appHeading,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appHeading,\r\n },\r\n {\r\n type: FormControlType.TEXT_AREA,\r\n label: this.createTenantTexts?.label?.appDescription + '*',\r\n controlName: 'appDescription',\r\n value: '',\r\n validation: [\r\n Validators.required,\r\n Validators.maxLength(\r\n TenantsValidationPatterns.appDescriptionMaxLength\r\n ),\r\n ],\r\n supportMessage:\r\n this.createTenantTexts?.supportText?.appDescription,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n maxErrorMessage:\r\n this.createTenantTexts?.message?.error?.limit\r\n ?.appDescriptionMaxChars,\r\n maxCharCount: TenantsValidationPatterns.appDescriptionMaxLength,\r\n ariaLabel:\r\n this.createTenantTexts?.label?.ariaLabel?.appDescription,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById\r\n ?.appDescription,\r\n ariaMultiline: true,\r\n isResize: true,\r\n },\r\n {\r\n type: FormControlType.COLOR_PICKER,\r\n label: this.createTenantTexts?.label?.appBgColor + '*',\r\n controlName: 'backgroundColor',\r\n value: '',\r\n placeholder: '',\r\n supportMessage: this.createTenantTexts?.supportText?.appBgColor,\r\n validation: [Validators.required, validColorValidator()],\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n invalidColorErrorMessage:\r\n this.createTenantTexts?.message?.error?.invalidColor,\r\n ariaLabel: this.createTenantTexts?.supportText?.appBgColor,\r\n ariaDescribedById:\r\n this.createTenantTexts?.supportText?.appBgColor,\r\n },\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createTenantTexts?.label?.appHelpLink + '*',\r\n controlName: 'appHelpLink',\r\n value: '',\r\n validation: [\r\n Validators.required,\r\n Validators.pattern(TenantsValidationPatterns.url),\r\n ],\r\n supportMessage: this.createTenantTexts?.supportText?.appHelpLink,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n patternErrorMessage:\r\n this.createTenantTexts?.message?.error?.pattern?.appHelpLink,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appHelpLink,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appHelpLink,\r\n },\r\n {\r\n type: FormControlType.CHECKBOX,\r\n label: this.createTenantTexts?.label?.featuresList + '*',\r\n controlName: 'features',\r\n checkboxOptions: this.featuresOptions,\r\n minSelectionRequired: 1,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.featuresList,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.featuresList,\r\n supportMessage: this.createTenantTexts?.supportText?.featuresList,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n validation: [Validators.required],\r\n },\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createTenantTexts?.label?.domainURL + '*',\r\n controlName: 'appDomainUrl',\r\n value: '',\r\n validation: [\r\n Validators.required,\r\n Validators.pattern(TenantsValidationPatterns.url),\r\n ],\r\n supportMessage: this.createTenantTexts?.supportText?.domainURL,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n patternErrorMessage:\r\n this.createTenantTexts?.message?.error?.pattern?.appDomainUrl,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.domainURL,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.domainURL,\r\n },\r\n {\r\n type: FormControlType.RADIO,\r\n label: this.createTenantTexts?.label?.appType + '*',\r\n controlName: 'appType',\r\n value: '',\r\n radioOptions: this.appTypeOptions,\r\n validation: [Validators.required],\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appType,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appType,\r\n },\r\n ],\r\n },\r\n ],\r\n };\r\n }\r\n\r\n /**\r\n * Creates tenant on form submission.\r\n * @param {FormGroup[]} form\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n onCreateTenantFormSubmit(form: FormGroup[]): void {\r\n form[0]?.markAllAsTouched();\r\n if (form[0].status === FormStatus.VALID) {\r\n this.createTenantPayload = this.getCreateTenantPayload(\r\n form[0].getRawValue()\r\n );\r\n if (this.file) this.getFileUploadPresignedUrl(this.file);\r\n }\r\n }\r\n\r\n /**\r\n * Constructs create tenant payload from the form data and returns.\r\n * @param {*} formData\r\n * @return {CreateTenantRequestPayload}\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n getCreateTenantPayload(formData: any): CreateTenantRequestPayload {\r\n const payload: CreateTenantRequestPayload = {\r\n payload: {\r\n appTitle: formData?.appTitle,\r\n appId: formData?.appId,\r\n appHeading: formData?.appHeading,\r\n appDescription: formData?.appDescription,\r\n backgroundColor: formData?.backgroundColor,\r\n appLogo: formData?.appLogo,\r\n appDomainUrl: formData?.appDomainUrl,\r\n appHelpLink: formData?.appHelpLink,\r\n appType: this.selectedAppTypeOption?.id as string,\r\n features: this.tenantAppService.getFeatureIds(this.featuresOptions),\r\n },\r\n };\r\n return payload;\r\n }\r\n\r\n /**\r\n * Gets create tenant form group reference and disables default features.\r\n * @param {FormGroup[]} form\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n getCreateTenantFormGroupRef(form: FormGroup[]): void {\r\n this.createTenantFormGroupRef = form[0];\r\n const featuresFormArray = this.createTenantFormGroupRef?.controls[\r\n 'features'\r\n ] as FormArray;\r\n this.featuresOptions?.forEach((option: CheckboxOption, index: number) => {\r\n if (option?.disabled) {\r\n featuresFormArray?.at(index).disable();\r\n }\r\n });\r\n }\r\n /**\r\n * Updates createTenantFormGroupRef on add tenant form change event.\r\n * @param {FormGroup[]} form\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n onCreateTenantFormChange(form: FormGroup[]): void {\r\n this.createTenantFormGroupRef = form[0];\r\n }\r\n /**\r\n * Emits form cancel event.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n onFormCancel(): void {\r\n this.formCancel.emit();\r\n }\r\n /**\r\n * Gets the selected file when the file is browsed and on formFileUpload event is triggered.\r\n * @param {File | FileList} file\r\n */\r\n onFormFileUpload(file: File | FileList): void {\r\n this.file = file;\r\n }\r\n /**\r\n * Gets pre-signed URL to upload the selected file to AWS S3 bucket.\r\n * @param {File | FileList} file\r\n */\r\n getFileUploadPresignedUrl(file: File | FileList): void {\r\n this.fileUploadService\r\n .getFileUploadPresignedUrl(file)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: FileUploadPresignedUrl) => {\r\n this.fileUploadPresignedUrl = response?.body;\r\n if (this.fileUploadPresignedUrl) this.uploadFileToS3(file);\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, no-unused-vars, @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function, no-empty-function\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Uploads the file to AWS S3 bucket and submit the form data to API to create new tenant.\r\n * @param {File | FileList} file\r\n */\r\n uploadFileToS3(file: File | FileList): void {\r\n this.fileUploadService\r\n .uploadFileToS3(this.fileUploadPresignedUrl, file)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\r\n next: (response: any) => {\r\n this.fileUploadService.setFileUploadStatus(true);\r\n this.tenantAppService\r\n .createTenant(this.createTenantPayload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: CreateTenantResponse) => {\r\n if (response.status) {\r\n this.tenantAppService.setTenantBasicInfo(\r\n this.createTenantPayload\r\n );\r\n this.submitFormResponse.emit(response);\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n },\r\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.fileUploadService.setFileUploadStatus(false);\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Triggers when the color picker values has been changed.\r\n * @param {string} color\r\n */\r\n onColorPickerChange(color: string): void {\r\n this.selectedColor = color;\r\n }\r\n /**\r\n * Triggers when the radio option has been changed.\r\n * @param {RadioOption} radioOption\r\n */\r\n onRadioOptionSelected(radioOption: RadioOption): void {\r\n this.selectedAppTypeOption = radioOption;\r\n }\r\n /**\r\n * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","<ieeesa-dynamic-form\r\n *ngIf=\"createTenantFormGroup\"\r\n class=\"ieeesa-create-tenant-form\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"createTenantFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onCreateTenantFormSubmit($event)\"\r\n (formChange)=\"onCreateTenantFormChange($event)\"\r\n (formLeftButtonClicked)=\"onFormCancel()\"\r\n (formGroupsReference)=\"getCreateTenantFormGroupRef($event)\"\r\n (formFileUpload)=\"onFormFileUpload($event)\"\r\n (formColorPickerChange)=\"onColorPickerChange($event)\"\r\n (formRadioOptionSelected)=\"onRadioOptionSelected($event)\"\r\n></ieeesa-dynamic-form>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n DataTableComponent,\r\n ModalComponent,\r\n PaginatorConfig,\r\n TableActions,\r\n TableColumnSchema,\r\n TableColumnSortDirection,\r\n TableColumnType,\r\n} from '@ieeesa-npm/presentation';\r\nimport { FeatureInfo, TenantInfo } from '../../models/tenants.model';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as constants from '../../assets/constants.json';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport {\r\n AlertType,\r\n AlertsService,\r\n BreakpointObserverService,\r\n ModalType,\r\n} from '@ieeesa-npm/utility';\r\nimport { TenantsRoutesConfig } from '../../models/route-config.model';\r\nimport { SharedService } from '@ieeesa-npm/shared';\r\nimport { TenantApplicationsService } from '../../services/tenant-applications.service';\r\nimport { Router } from '@angular/router';\r\nimport { PageEvent } from '@angular/material/paginator';\r\nimport { Sort } from '@angular/material/sort';\r\nimport {\r\n TenantStatus,\r\n PermissionType,\r\n} from '../../models/permission-type.model';\r\nimport {\r\n TenantsPermissions,\r\n UserPermission,\r\n} from '../../models/tenants-permission.model';\r\nimport {\r\n ViewTenantsColumnSchemaDef,\r\n SortOrderBy,\r\n GetTenantsPayload,\r\n} from '../../models/table-column-schema-view-tenant-list.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { CreateTenantApplicationComponent } from '../create-tenant-application/create-tenant-application.component';\r\n@Component({\r\n selector: 'ieeesa-view-tenants-list',\r\n templateUrl: './view-tenants-list.component.html',\r\n styleUrls: ['./view-tenants-list.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, MatButtonModule, DataTableComponent],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ViewTenantsListComponent implements OnInit, OnDestroy {\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = constants;\r\n viewTenantsConstants = this.constants?.viewTenants;\r\n isMobileView = false;\r\n @Input() tenantsPageInfo: {\r\n tenantsTitle: string;\r\n } = {\r\n tenantsTitle: '',\r\n };\r\n @Input() apiBaseURL = '';\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Input() routePaths!: TenantsRoutesConfig;\r\n @Input() userPermissions!: UserPermission[];\r\n @Input() defaultSortedColumn: string = ViewTenantsColumnSchemaDef.APP_ID;\r\n @Output() createTenant = new EventEmitter();\r\n @Output() viewTenantsDetails: EventEmitter<TenantInfo> =\r\n new EventEmitter<TenantInfo>();\r\n tableData!: TenantInfo[];\r\n columnSchema!: TableColumnSchema[];\r\n tableActions: TableActions = {\r\n isPaginationNeeded: true,\r\n };\r\n tableColumns = this.viewTenantsConstants?.tableColumns;\r\n emptyFieldValueReplacedBy =\r\n this.viewTenantsConstants?.emptyFieldValueReplacedBy;\r\n paginatorConfig: PaginatorConfig = {\r\n recordsPerPage: this.viewTenantsConstants?.pageSizeOptions?.[0],\r\n pageSizeOptions: this.viewTenantsConstants.pageSizeOptions,\r\n totalRecords: 0,\r\n };\r\n userTenantsPermissions!: TenantsPermissions[];\r\n permissionType = PermissionType;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dialogRef: any;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n createTenantScreenTexts: any = this.constants?.createTenant;\r\n defaultColumnSortDirection = true;\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n public dialog: MatDialog,\r\n // eslint-disable-next-line no-unused-vars\r\n public alertService: AlertsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private breakpointObserverService: BreakpointObserverService,\r\n // eslint-disable-next-line no-unused-vars\r\n private sharedService: SharedService,\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantApplicationsService: TenantApplicationsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private router: Router\r\n ) {\r\n this.breakpointObserverService\r\n .getBreakpoint()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((result: { matches: boolean }) => {\r\n this.isMobileView = result.matches;\r\n });\r\n }\r\n\r\n /**\r\n * Sets the user permissions, router config path, base API URL, table column schema and gets the tenants list.\r\n * @memberof ViewTenantsListComponent\r\n */\r\n ngOnInit(): void {\r\n this.userTenantsPermissions =\r\n this.tenantApplicationsService?.filterPermission(this.userPermissions);\r\n this.tenantApplicationsService?.setAppConfig(\r\n this.apiBaseURL,\r\n this.userPermissions\r\n );\r\n this.tenantsPageInfo = {\r\n tenantsTitle: this.viewTenantsConstants?.tenantsTitle,\r\n };\r\n this.routePaths = this.routePaths ?? this.constants?.routeConfigPath;\r\n this.sharedService?.setRoutePaths(this.routePaths);\r\n this.configureTableInfo();\r\n this.defaultSortedColumn = this.columnSchema[0].columnDef;\r\n this.getTenantsAndInitializeTableView({\r\n payload: {\r\n offset: 0,\r\n pageSize: this.paginatorConfig?.recordsPerPage,\r\n sortedBy: ViewTenantsColumnSchemaDef.APP_ID,\r\n sortedOrderBy: this.filterSortedOrderBy(\r\n this.defaultColumnSortDirection\r\n ),\r\n },\r\n });\r\n }\r\n /**\r\n * Validates permission based access for provided feature.\r\n * @param {PermissionType} permissionType\r\n * @return {boolean}\r\n * @memberof ViewTenantsListComponent\r\n */\r\n validateAccess(permissionType: PermissionType): boolean {\r\n return this.tenantApplicationsService.validateAccess(\r\n permissionType,\r\n this.userTenantsPermissions\r\n );\r\n }\r\n /**\r\n * Configures table schema to display the tenants in table view.\r\n * @memberof ViewTenantsListComponent\r\n */\r\n configureTableInfo(): void {\r\n this.columnSchema = [\r\n {\r\n id: 1,\r\n columnDef: ViewTenantsColumnSchemaDef.APP_ID,\r\n heading: this.tableColumns?.appId,\r\n columnType: TableColumnType.LINK,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) => `${element.appId}`,\r\n isSortableColumn: true,\r\n },\r\n {\r\n id: 2,\r\n columnDef: ViewTenantsColumnSchemaDef.APP_TITLE,\r\n heading: this.tableColumns?.appTitle,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) =>\r\n `${element.appTitle ?? this.emptyFieldValueReplacedBy}`,\r\n isSortableColumn: true,\r\n },\r\n {\r\n id: 3,\r\n columnDef: ViewTenantsColumnSchemaDef.APP_DESCRIPTION,\r\n heading: this.tableColumns?.appDescription,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) =>\r\n `${element.appDescription ?? this.emptyFieldValueReplacedBy}`,\r\n },\r\n\r\n {\r\n id: 4,\r\n columnDef: ViewTenantsColumnSchemaDef.FEATURES,\r\n heading: this.tableColumns?.features,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) =>\r\n `${\r\n element?.features && element?.features?.length > 0\r\n ? this.formatFeaturesName(element?.features)\r\n : this.emptyFieldValueReplacedBy\r\n }`,\r\n },\r\n {\r\n id: 5,\r\n columnDef: ViewTenantsColumnSchemaDef.STATUS,\r\n heading: this.tableColumns?.status,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) =>\r\n `${element.status ? TenantStatus.ACTIVE : TenantStatus.INACTIVE}`,\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Format the features name in to single sentence with comma separated.\r\n * @memberof ViewTenantsListComponent\r\n */\r\n formatFeaturesName(features: FeatureInfo[]): string {\r\n return features\r\n .map((feature: FeatureInfo) => {\r\n // eslint-disable-next-line no-unused-expressions\r\n return feature.featureName;\r\n })\r\n ?.join(', ');\r\n }\r\n /**\r\n * Fetching details of tenants and initialize table view\r\n * @param {GetTenantsPayload} payload\r\n * @memberof ViewTenantsListComponent\r\n */\r\n getTenantsAndInitializeTableView(payload: GetTenantsPayload): void {\r\n this.tenantApplicationsService\r\n .getTenantsList(payload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response) => {\r\n this.tableData = response?.body?.appDetails as TenantInfo[];\r\n this.paginatorConfig.totalRecords = response?.body\r\n ?.totalRecords as number;\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(error, this.constants?.errors);\r\n },\r\n });\r\n }\r\n /**\r\n * Sets the dialog options for create tenant modal and calls openModal method.\r\n * @return -returns nothing\r\n * @memberof ViewTenantsListComponent\r\n */\r\n openCreateTenantForm(): void {\r\n const dialogOptions = {\r\n heading: this.viewTenantsConstants?.addTenant,\r\n isCloseNeeded: true,\r\n componentReference: CreateTenantApplicationComponent,\r\n modalType: ModalType.FORM,\r\n };\r\n this.openModal(dialogOptions, 'ieeesa-create-tenant');\r\n }\r\n /**\r\n * Opens modal component with received params and handles form submission success and errors.\r\n * @param {*} dialogOptions\r\n * @param {string} [className]\r\n * @return -returns nothing\r\n * @memberof ViewTenantsListComponent\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-inferrable-types, no-unused-vars\r\n openModal(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dialogOptions: any,\r\n className?: string\r\n ): void {\r\n className = className ?? '';\r\n this.dialogRef = this.dialog?.open(ModalComponent, {\r\n data: dialogOptions,\r\n width: '',\r\n panelClass: ['ieeesa-modal-dialog', className],\r\n ariaModal: true,\r\n });\r\n this.dialogRef?.componentInstance?.submitFormResponse\r\n .pipe(takeUntil(this.destroy$))\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, no-unused-vars\r\n .subscribe((result: any) => {\r\n this.dialogRef?.close();\r\n const appTitle =\r\n this.tenantApplicationsService.getTenantBasicInfo?.appTitle;\r\n this.sharedService.showAlertMessage(\r\n AlertType?.SUCCESS,\r\n `${appTitle} ${this.createTenantScreenTexts?.message?.success?.submission}`\r\n );\r\n this.getTenantsAndInitializeTableView({\r\n payload: {\r\n offset: 0,\r\n pageSize: this.paginatorConfig?.recordsPerPage,\r\n sortedBy: ViewTenantsColumnSchemaDef.APP_ID,\r\n sortedOrderBy: this.filterSortedOrderBy(\r\n this.defaultColumnSortDirection\r\n ),\r\n },\r\n });\r\n });\r\n this.dialogRef?.componentInstance?.formCancel\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.dialogRef?.close();\r\n });\r\n }\r\n /**\r\n * Sorts the tenants by application id or title in ascending or descending.\r\n * @param {Sort} sort\r\n * @memberof ViewTenantsListComponent\r\n */\r\n onSortTenants(sort: Sort): void {\r\n this.defaultSortedColumn = sort.active;\r\n this.defaultColumnSortDirection =\r\n sort.direction === TableColumnSortDirection.ASCENDING;\r\n const payload: GetTenantsPayload = {\r\n payload: {\r\n offset: 0,\r\n pageSize: this.paginatorConfig?.recordsPerPage,\r\n sortedBy: this.defaultSortedColumn,\r\n sortedOrderBy: this.filterSortedOrderBy(\r\n this.defaultColumnSortDirection\r\n ),\r\n },\r\n };\r\n this.getTenantsAndInitializeTableView(payload);\r\n }\r\n\r\n /**\r\n * Returning sorting order according to column definition\r\n * @param defaultColumnSortDirection\r\n * @returns SortOrderBy.ASC | SortOrderBy.DESC\r\n */\r\n filterSortedOrderBy(defaultColumnSortDirection: boolean): string {\r\n return defaultColumnSortDirection ? SortOrderBy.ASC : SortOrderBy.DESC;\r\n }\r\n /**\r\n * Get the the records according to pagination\r\n * @param {{\r\n * pageOffset: number;\r\n * pageLimit: number;\r\n * }} pageEvent\r\n * @memberof ViewTenantsListComponent\r\n */\r\n onTablePaginationChange(pageEvent: PageEvent): void {\r\n this.getTenantsAndInitializeTableView({\r\n payload: {\r\n offset: pageEvent.pageIndex,\r\n pageSize: pageEvent.pageSize,\r\n sortedBy: this.defaultSortedColumn,\r\n sortedOrderBy: this.filterSortedOrderBy(\r\n this.defaultColumnSortDirection\r\n ),\r\n },\r\n });\r\n }\r\n /**\r\n * Navigates to view tenants detail component\r\n * @memberof ViewTenantsListComponent\r\n */\r\n navigateToViewTenantDetails(tenantInfo: TenantInfo): void {\r\n if (tenantInfo) {\r\n this.tenantApplicationsService.setSelectedTenantInformation(tenantInfo);\r\n }\r\n if (this.routePaths?.viewTenantDetails)\r\n this.router.navigate([this.routePaths?.viewTenantDetails]);\r\n else this.viewTenantsDetails.emit(tenantInfo);\r\n }\r\n /**\r\n * NgOnDestroy performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n * @memberof ViewTenantsListComponent\r\n * @return -returns nothing\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","<div\r\n class=\"ieeesa-view-tenants-list\"\r\n [ngClass]=\"{ 'ieeesa-view-tenants-list__mobile': isMobileView }\"\r\n>\r\n <p class=\"ieeesa-headline-lg-32 py-3 mb-0\">\r\n {{ tenantsPageInfo.tenantsTitle }}\r\n </p>\r\n <div class=\"ieeesa-view-tenants-list__content\">\r\n <div class=\"d-flex justify-content-end\">\r\n <button\r\n mat-button\r\n class=\"mat-tertiary-button me-3\"\r\n [attr.aria-label]=\"viewTenantsConstants?.ariaLabel?.add\"\r\n (click)=\"openCreateTenantForm()\"\r\n *ngIf=\"validateAccess(permissionType.MANAGE_TENANT)\"\r\n >\r\n {{ viewTenantsConstants?.addTenant }}\r\n </button>\r\n </div>\r\n <ieeesa-data-table\r\n [tableDataInfo]=\"tableData\"\r\n [columnSchemaInfo]=\"columnSchema\"\r\n [isCellTextOverflowEllipsis]=\"true\"\r\n [tableActions]=\"tableActions\"\r\n [paginatorConfig]=\"paginatorConfig\"\r\n [defaultSortedColumn]=\"defaultSortedColumn\"\r\n (sortChange)=\"onSortTenants($event)\"\r\n (paginationChange)=\"onTablePaginationChange($event)\"\r\n (rowLink)=\"navigateToViewTenantDetails($event)\"\r\n ></ieeesa-data-table>\r\n </div>\r\n</div>\r\n","export enum FeaturePermissionId {\r\n // eslint-disable-next-line no-unused-vars\r\n MEETINGS_AND_EVENTS = 'FEATURE_049753e8-ea5c-4fad-adb0-e1456e69c7a5',\r\n // eslint-disable-next-line no-unused-vars\r\n BALLOTS = 'FEATURE_a0ad3616-20dc-43da-813f-9b76d33f227a',\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n BreakpointObserverService,\r\n GlobalErrorHandlerService,\r\n} from '@ieeesa-npm/utility';\r\nimport {\r\n AccordionComponent,\r\n AccordionInfo,\r\n SlideToggleComponent,\r\n} from '@ieeesa-npm/presentation';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as screenText from '../../assets/constants.json';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { TenantInfo, TenantDetailsResponse } from '../../models/tenants.model';\r\nimport { TenantApplicationsService } from '../../services/tenant-applications.service';\r\nimport { UserPermission } from '../../models/tenants-permission.model';\r\nimport { SharedService } from '@ieeesa-npm/shared';\r\nimport { TenantsRoutesConfig } from '../../models/route-config.model';\r\nimport { Features } from '../../models/features.model';\r\nimport { FeaturePermissionId } from '../../models/feature-permission-id.model';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'ieeesa-view-tenant-details',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n SlideToggleComponent,\r\n AccordionComponent,\r\n MatDividerModule,\r\n ],\r\n templateUrl: './view-tenant-details.component.html',\r\n styleUrls: ['./view-tenant-details.component.scss'],\r\n})\r\nexport class ViewTenantDetailsComponent implements OnInit, OnDestroy {\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n @Input() apiBaseURL!: string;\r\n @Input() userPermissions!: UserPermission[];\r\n @Input() routePaths!: TenantsRoutesConfig;\r\n isMobileView = false;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = screenText;\r\n tenantLabels = this.constants?.viewTenants?.label;\r\n slideToggleOption = {\r\n id: 1,\r\n label: this.constants?.viewTenants?.label?.active,\r\n checked: true,\r\n disabled: false,\r\n };\r\n tenantDetails!: TenantInfo;\r\n accordionInfoList: AccordionInfo[] = JSON.parse(\r\n JSON.stringify(this.constants?.TenantAccordionInfo)\r\n );\r\n viewTenantsRouteUrl!: string;\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n private breakpointObserverService: BreakpointObserverService,\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantAppService: TenantApplicationsService,\r\n // eslint-disable-next-line no-unused-vars\r\n public globalErrorHandlerService: GlobalErrorHandlerService,\r\n // eslint-disable-next-line no-unused-vars\r\n private sharedService: SharedService\r\n ) {\r\n this.breakpointObserverService\r\n .getBreakpoint()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((result: { matches: boolean }) => {\r\n this.isMobileView = result?.matches;\r\n });\r\n }\r\n\r\n /**\r\n * Initializes view tenant details component.\r\n * @return -returns nothing\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n ngOnInit(): void {\r\n this.routePaths = this.routePaths ?? this.constants?.routeConfigPath;\r\n this.viewTenantsRouteUrl = `/${this.routePaths?.viewTenants}`;\r\n this.tenantAppService?.setAppConfig(this.apiBaseURL, this.userPermissions);\r\n const appId = this.tenantAppService.getSelectedTenantInformation()\r\n ?.appId as string;\r\n this.getTenantDetails(appId);\r\n }\r\n\r\n /**\r\n * Gets the selected tenant details from server.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n getTenantDetails(appId: string): void {\r\n this.tenantAppService\r\n .getTenantDetails(appId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: TenantDetailsResponse) => {\r\n if (response?.status) {\r\n this.tenantDetails = response?.body as TenantInfo;\r\n this.slideToggleOption.checked = this.tenantDetails\r\n .status as boolean;\r\n this.slideToggleOption.label = this.tenantDetails.status\r\n ? this.tenantLabels?.active\r\n : this.tenantLabels?.inactive;\r\n const features = this.tenantDetails.features as Features[];\r\n features.map((feature: Features) => {\r\n if (\r\n feature?.featureId ===\r\n FeaturePermissionId.MEETINGS_AND_EVENTS ||\r\n feature?.featureId === FeaturePermissionId.BALLOTS\r\n )\r\n this.accordionInfoList.push({\r\n id: this.accordionInfoList.length + 1,\r\n isDisabled: false,\r\n title: feature?.featureName,\r\n });\r\n });\r\n }\r\n },\r\n error: (error) => {\r\n this.sharedService.handleErrors(error, this.constants?.errors);\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Keeps track of the accordion based on the element's ID in DOM tree.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n trackByAccordionFn(index: number, item: AccordionInfo): number {\r\n return item?.id as number;\r\n }\r\n /**\r\n * Performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$?.next(true);\r\n this.destroy$?.unsubscribe();\r\n }\r\n}\r\n","<div\r\n class=\"ieeesa-view-tenant-info px-4 pb-4\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-view-tenant-info--bg-white'\r\n : 'ieeesa-view-tenant-info--bg-blue'\r\n \"\r\n>\r\n <div\r\n class=\"d-flex justify-content-between gap-lg-4 gap-md-3 gap-sm-2 gap-3\"\r\n [ngClass]=\"isMobileView ? 'flex-column gap-2 pb-3' : 'align-item-center'\"\r\n >\r\n <div\r\n class=\"d-flex gap-lg-4 gap-md-3 gap-sm-3 gap-3 ps-0 align-items-md-center align-items-xl-center\"\r\n [ngClass]=\"isMobileView ? 'flex-column' : ''\"\r\n >\r\n <p\r\n class=\"mb-0 ieeesa-headline-lg-32 py-3\"\r\n [ngClass]=\"isMobileView ? '' : 'ieeesa-view-tenant-info--title'\"\r\n >\r\n {{ tenantDetails?.appTitle }}\r\n </p>\r\n <div class=\"d-flex gap-lg-2 gap-md-2 gap-sm-2 gap-2\">\r\n <span\r\n class=\"mb-0 ieeesa-title-sm-14 mt-1\"\r\n [ngClass]=\"isMobileView ? 'p-0' : 'ieeesa-view-tenant-info--app-id'\"\r\n >\r\n {{ tenantLabels?.appId }}:\r\n </span>\r\n {{ tenantDetails?.appId }}\r\n <ng-container *ngIf=\"tenantDetails?.appId !== tenantLabels?.saAppId\">\r\n <mat-divider [vertical]=\"true\"></mat-divider>\r\n <span\r\n class=\"mb-0 mt-1 ieeesa-title-sm-14 ieeesa-view-tenant-info--app-status\"\r\n [ngClass]=\"isMobileView ? 'p-0' : ''\"\r\n >\r\n {{ tenantLabels?.status }}:\r\n </span>\r\n <ieeesa-slide-toggle\r\n [slideToggle]=\"slideToggleOption\"\r\n ></ieeesa-slide-toggle>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <a\r\n class=\"ieeesa-btn-label-lg-bold-16 text-decoration-none mt-lg-3 mt-xl-6 p-sm-0 p-md-0\"\r\n href=\"javascript:void(0)\"\r\n rel=\"noopener noreferrer\"\r\n [routerLink]=\"viewTenantsRouteUrl\"\r\n [ngClass]=\"isMobileView ? '' : 'ieeesa-view-tenant-info--link'\"\r\n >{{ tenantLabels?.viewAllApps }}</a\r\n >\r\n </div>\r\n <div\r\n class=\"ieeesa-view-tenant-info__accordion ieeesa-view-tenant-info__accordion--blue-bg\"\r\n [ngClass]=\"isMobileView ? 'ieeesa-view-tenant-info__accordion--info' : ''\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let accordionInfo of accordionInfoList;\r\n trackBy: trackByAccordionFn\r\n \"\r\n >\r\n <ieeesa-accordion [accordionInfo]=\"accordionInfo\"> </ieeesa-accordion>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","/* eslint-disable no-empty-function */\r\nimport { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n@Component({\r\n selector: 'ieeesa-tenant-applications',\r\n standalone: true,\r\n imports: [CommonModule, MatButtonModule],\r\n templateUrl: './tenant-applications.component.html',\r\n styleUrls: ['./tenant-applications.component.scss'],\r\n})\r\nexport class TenantApplicationsComponent {}\r\n","","/* eslint-disable no-unused-vars */\r\nexport enum AppType {\r\n GENERIC = 'Generic',\r\n STANDALONE = 'Standalone'\r\n}","import { NgModule } from '@angular/core';\r\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [],\r\n exports: [],\r\n})\r\nexport class TenantApplicationsModule {}\r\n","/*\r\n * Public API Surface of tenants\r\n */\r\nexport * from './lib/components/view-tenants-list/view-tenants-list.component';\r\nexport * from './lib/components/view-tenant-details/view-tenant-details.component';\r\nexport * from './lib/components/create-tenant-application/create-tenant-application.component';\r\nexport * from './lib/tenant-applications.component';\r\n\r\nexport * from './lib/models/app-type-config.model';\r\nexport * from './lib/models/app-type.model';\r\nexport * from './lib/models/tenant.model';\r\nexport * from './lib/models/tenants.model';\r\nexport * from './lib/models/features.model';\r\nexport * from './lib/models/form-status.model';\r\nexport * from './lib/models/permission-type.model';\r\nexport * from './lib/models/tenants-permission.model';\r\nexport * from './lib/models/route-config.model';\r\nexport * from './lib/models/table-column-schema-view-tenant-list.model';\r\n\r\nexport * from './lib/services/tenant-applications.service';\r\nexport * from './lib/services/tenant-permissions-map.service';\r\nexport * from './lib/services/tenant-permissions.service';\r\n\r\nexport * from './lib/assets/tenant-validations';\r\n\r\nexport * from './lib/tenant-applications.module';\r\nexport * from './lib/models/feature-permission-id.model';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["screenTexts?.errors","screenTexts?.createTenant","i2.TenantPermissionsService","i3.TenantPermissionsMapService","screenTexts","i1","i2.TenantApplicationsService","constants","i2","i4.TenantApplicationsService","i6"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ieeesa-npm-tenants.mjs","sources":["../../../projects/tenants/src/lib/models/permission-type.model.ts","../../../projects/tenants/src/lib/models/table-column-schema-view-tenant-list.model.ts","../../../projects/tenants/src/lib/assets/tenant-validations.ts","../../../projects/tenants/src/lib/models/form-status.model.ts","../../../projects/tenants/src/lib/services/tenant-permissions.service.ts","../../../projects/tenants/src/lib/services/tenant-permissions-map.service.ts","../../../projects/tenants/src/lib/services/tenant-applications.service.ts","../../../projects/tenants/src/lib/components/create-tenant-application/create-tenant-application.component.ts","../../../projects/tenants/src/lib/components/create-tenant-application/create-tenant-application.component.html","../../../projects/tenants/src/lib/components/view-tenants-list/view-tenants-list.component.ts","../../../projects/tenants/src/lib/components/view-tenants-list/view-tenants-list.component.html","../../../projects/tenants/src/lib/models/feature-permission-id.model.ts","../../../projects/tenants/src/lib/components/view-tenant-details/view-tenant-details.component.ts","../../../projects/tenants/src/lib/components/view-tenant-details/view-tenant-details.component.html","../../../projects/tenants/src/lib/tenant-applications.component.ts","../../../projects/tenants/src/lib/tenant-applications.component.html","../../../projects/tenants/src/lib/models/app-type.model.ts","../../../projects/tenants/src/lib/tenant-applications.module.ts","../../../projects/tenants/src/public-api.ts","../../../projects/tenants/src/ieeesa-npm-tenants.ts"],"sourcesContent":["/* eslint-disable no-unused-vars */\r\nexport enum PermissionType {\r\n VIEW_TENANTS = 'VIEW_TENANTS',\r\n MANAGE_TENANT = 'MANAGE_TENANT',\r\n}\r\nexport enum TenantStatus {\r\n ACTIVE = 'Active',\r\n INACTIVE = 'Inactive',\r\n}\r\n","/* eslint-disable no-unused-vars */\r\nexport enum ViewTenantsColumnSchemaDef {\r\n APP_ID = 'appId',\r\n APP_TITLE = 'appTitle',\r\n APP_DESCRIPTION = 'appDescription',\r\n APP_HEADING = 'appHeading',\r\n FEATURES = 'features',\r\n STATUS = 'status',\r\n}\r\nexport enum SortOrderBy {\r\n DESC = 'DESC',\r\n ASC = 'ASC',\r\n}\r\nexport interface GetTenantsPayload {\r\n payload: {\r\n offset: number;\r\n pageSize: number;\r\n sortedBy: string;\r\n sortedOrderBy: string;\r\n };\r\n}\r\n","/* eslint-disable no-useless-escape */\r\nexport const TenantsValidationPatterns = {\r\n appTitleMaxLength: 50,\r\n appIdMaxLength: 10,\r\n appHeadingMaxLength: 150,\r\n appDescriptionMaxLength: 500,\r\n url: /^https:\\/\\//,\r\n alphaNumeric: /^[a-zA-Z0-9]+$/\r\n };","/* eslint-disable no-unused-vars */\r\nexport enum FormStatus {\r\n VALID = \"VALID\",\r\n INVALID = \"INVALID\",\r\n }","import { Injectable } from '@angular/core';\r\nimport { PermissionType } from '../models/permission-type.model';\r\nimport {\r\n UserPermission,\r\n TenantsPermissions,\r\n} from '../models/tenants-permission.model';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TenantPermissionsService {\r\n /**\r\n * Returns access provision for the passed action/feature based on whether the signed in user has appropriate permission.\r\n * @param {PermissionType} permission\r\n * @param {TenantsPermission[]} tenantsPermissions\r\n * @return {boolean}\r\n * @memberof TenantPermissionsService\r\n */\r\n validateAccessPermission(\r\n permission: PermissionType,\r\n userTenantsPermissions: TenantsPermissions[]\r\n ): boolean {\r\n const isPermitted =\r\n userTenantsPermissions && userTenantsPermissions.length\r\n ? userTenantsPermissions?.some(\r\n ({ permissionType }) => permissionType === permission\r\n )\r\n : false;\r\n return isPermitted;\r\n }\r\n /**\r\n * Filters signed in user tenants permissions from entire tenants permissions.\r\n * @param { UserPermission[] }\r\n * @return {TenantsPermissions[]}\r\n * @memberof TenantPermissionsService\r\n */\r\n filterTenantsPermissions(\r\n userPermissions: UserPermission[],\r\n tenantsPermissions: TenantsPermissions[]\r\n ): TenantsPermissions[] {\r\n const userTenantsPermission = tenantsPermissions?.filter(\r\n (permission: TenantsPermissions) => {\r\n return userPermissions?.find(\r\n ({ permissionId }) => permission?.permissionId === permissionId\r\n );\r\n }\r\n );\r\n return userTenantsPermission;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { PermissionType } from '../models/permission-type.model';\r\nimport { TenantsPermissions } from '../models/tenants-permission.model';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TenantPermissionsMapService {\r\n globalTenantsPermissions: TenantsPermissions[] = [\r\n {\r\n permissionType: PermissionType.VIEW_TENANTS,\r\n permissionId: 'PERM_SAAPPS_1a2dbbb5-5fe1-4261-85b1-a5373f41075a',\r\n permissionName: 'View Tenant Applications',\r\n },\r\n {\r\n permissionType: PermissionType.MANAGE_TENANT,\r\n permissionId: 'PERM_SAAPPS_315c49ec-f79a-4dcd-9795-6f97838c8c83',\r\n permissionName: 'Manage (Create, Edit, Disable) Tenant Application',\r\n },\r\n ];\r\n /**\r\n * Returns global permissions mapping for tenants.\r\n * @return {TenantsPermissions[]}\r\n * @memberof TenantsPermissionsMapService\r\n */\r\n getGlobalTenantsPermissions(): TenantsPermissions[] {\r\n return this.globalTenantsPermissions;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpService } from '@ieeesa-npm/utility';\r\nimport { Observable, catchError, map } from 'rxjs';\r\nimport * as screenTexts from '../assets/constants.json';\r\nimport {\r\n GetTenantsResponse,\r\n TenantInfo,\r\n TenantDetailsResponse,\r\n} from '../models/tenants.model';\r\nimport { GetTenantsPayload } from '../models/table-column-schema-view-tenant-list.model';\r\nimport {\r\n TenantsPermissions,\r\n UserPermission,\r\n} from '../models/tenants-permission.model';\r\nimport { PermissionType } from '../models/permission-type.model';\r\nimport { TenantPermissionsMapService } from './tenant-permissions-map.service';\r\nimport {\r\n CreateTenantRequestPayload,\r\n CreateTenantResponse,\r\n TenantBasicInfo,\r\n} from '../models/tenant.model';\r\nimport { CheckboxOption, RadioOption } from '@ieeesa-npm/presentation';\r\nimport {\r\n FeatureId,\r\n Features,\r\n GetFeaturesResponse,\r\n} from '../models/features.model';\r\nimport {\r\n AppTypeConfig,\r\n GetAppTypesResponse,\r\n} from '../models/app-type-config.model';\r\nimport { TenantPermissionsService } from './tenant-permissions.service';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TenantApplicationsService {\r\n tenantsText = screenTexts?.errors;\r\n apiBaseUrl!: string;\r\n userPermission!: UserPermission[];\r\n selectedTenantInfo!: TenantInfo | undefined;\r\n userTenantsPermissions!: TenantsPermissions[];\r\n tenantsInfo!: TenantInfo;\r\n createTenantsText = screenTexts?.createTenant?.errors;\r\n tenantBasicInfo!: TenantBasicInfo;\r\n radioOptions: RadioOption[] = [];\r\n checkBoxOptions: CheckboxOption[] = [];\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n private httpService: HttpService,\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantPermissionsService: TenantPermissionsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantPermissionsMapService: TenantPermissionsMapService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n setAppConfig(apiBaseUrl: string, userPermission: UserPermission[]): void {\r\n this.apiBaseUrl = apiBaseUrl;\r\n this.userPermission = userPermission;\r\n }\r\n\r\n /**\r\n * Gets tenant details from server using HttpService\r\n * @param {string} appId\r\n * @return {Observable<TenantDetailsResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getTenantDetails(appId: string): Observable<TenantDetailsResponse> {\r\n return this.httpService\r\n .getData(`${this.apiBaseUrl}/configurations/app/details/${appId}`)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Sets the user tenants permissions\r\n * @param {TenantsPermissions[]} TenantsPermissions\r\n * @memberof TenantApplicationsService\r\n */\r\n setUserTenantsPermissions(userTenantsPermissions: TenantsPermissions[]) {\r\n this.userTenantsPermissions = userTenantsPermissions;\r\n }\r\n /**\r\n * Returns the user tenants permissions\r\n * @return {TenantsPermissions[]}\r\n * @memberof TenantApplicationsService\r\n */\r\n getUserTenantsPermissions(): TenantsPermissions[] {\r\n return this.userTenantsPermissions;\r\n }\r\n\r\n /**\r\n * Sets the user tenants information\r\n * @param {TenantInfo} tenantInfo\r\n * @memberof TenantApplicationsService\r\n */\r\n setSelectedTenantInformation(tenantInfo: TenantInfo): void {\r\n this.selectedTenantInfo = tenantInfo;\r\n }\r\n /**\r\n * Returns the tenants information\r\n * @return {TenantInfo}\r\n * @memberof TenantApplicationsService\r\n */\r\n getSelectedTenantInformation(): TenantInfo | undefined {\r\n return this.selectedTenantInfo;\r\n }\r\n /**\r\n * Filter permissions\r\n * @param usersPermissions\r\n * @returns @memberof TenantApplicationsService\r\n */\r\n filterPermission(usersPermissions: UserPermission[]): TenantsPermissions[] {\r\n return this.tenantPermissionsService?.filterTenantsPermissions(\r\n usersPermissions,\r\n this.tenantPermissionsMapService?.getGlobalTenantsPermissions()\r\n );\r\n }\r\n /**\r\n * Validating access for tenants\r\n * @param permissionType Permission Type to validate permission\r\n * @param mappedUserPermissions Permission which are mapped with tenants\r\n * @returns true if permission is granted\r\n */\r\n validateAccess(\r\n permissionType: PermissionType,\r\n permissions: TenantsPermissions[]\r\n ): boolean {\r\n return this.tenantPermissionsService.validateAccessPermission(\r\n permissionType,\r\n permissions\r\n );\r\n }\r\n /**\r\n * Gets the tenants.\r\n * @param {GetTenantsPayload} payload\r\n * @return {Observable<GetTenantsResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getTenantsList(payload: GetTenantsPayload): Observable<GetTenantsResponse> {\r\n return this.httpService\r\n .postData(`${this.apiBaseUrl}/configurations/app/config`, payload)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Gets list of features from server using HttpService.\r\n * @return {Observable<GetFeaturesResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getFeatures(): Observable<GetFeaturesResponse> {\r\n return this.httpService\r\n .getData(`${this.apiBaseUrl}/configurations/app/features`)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Gets list of application types from server using HttpService.\r\n * @return {Observable<GetAppTypesResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getApplicationTypes(): Observable<GetAppTypesResponse> {\r\n return this.httpService\r\n .getData(`${this.apiBaseUrl}/configurations/config/app_type`)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Posts tenant application form data to server using HttpService for creating new tenant application.\r\n * @param {CreateTenantPayload} createTenantPayload\r\n * @return {Observable<CreateTenantResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n createTenant(\r\n createTenantPayload: CreateTenantRequestPayload\r\n ): Observable<CreateTenantResponse> {\r\n return this.httpService\r\n .postData(\r\n `${this.apiBaseUrl}/configurations/app/createTenant`,\r\n createTenantPayload\r\n )\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Constructs the checkbox options from features list from server.\r\n * @param {FeaturesList[]} features\r\n * @returns {CheckboxOption[]}\r\n */\r\n getFeatureOptions(features: Features[]): CheckboxOption[] {\r\n this.checkBoxOptions = [];\r\n features?.forEach((feature: Features) => {\r\n this.checkBoxOptions?.push({\r\n id: feature?.featureId,\r\n name: feature?.featureName,\r\n checked: feature?.isDefault,\r\n disabled: feature?.isDefault,\r\n });\r\n });\r\n return this.checkBoxOptions;\r\n }\r\n /**\r\n * Constructs the radio options from application types from server.\r\n * @param {AppTypeConfig[]} appTypeOptions\r\n * @returns {RadioOption[]}\r\n */\r\n getApplicationTypeOptions(appTypeOptions: AppTypeConfig[]): RadioOption[] {\r\n this.radioOptions = [];\r\n appTypeOptions?.forEach((appType: AppTypeConfig) => {\r\n this.radioOptions?.push({\r\n id: appType?.configFieldId,\r\n label: appType?.configFieldValue?.type,\r\n });\r\n });\r\n return this.radioOptions;\r\n }\r\n /**\r\n * Constructs the selected features id's.\r\n * @param {CheckboxOption[]} featureOptions\r\n * @returns {FeatureId[]}\r\n */\r\n getFeatureIds(featureOptions: CheckboxOption[]): FeatureId[] {\r\n const featureIds: FeatureId[] = [];\r\n featureOptions?.forEach((featureOption: CheckboxOption) => {\r\n if (featureOption?.checked) {\r\n featureIds.push({\r\n featureId: featureOption.id as string,\r\n });\r\n }\r\n })\r\n return featureIds;\r\n }\r\n /**\r\n * Sets the tenant basic information.\r\n * @param {CreateTenantRequestPayload} createTenantPayload\r\n */\r\n setTenantBasicInfo(createTenantPayload: CreateTenantRequestPayload): void {\r\n this.tenantBasicInfo = createTenantPayload?.payload;\r\n }\r\n /**\r\n * Returns the tenant basic information.\r\n */\r\n get getTenantBasicInfo(): TenantBasicInfo {\r\n return this.tenantBasicInfo;\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n AlignType,\r\n CheckboxOption,\r\n FormGrid,\r\n RadioOption,\r\n FormControlType,\r\n FormModel,\r\n AllowedFileTypes,\r\n FileUploadService,\r\n FileUploadPresignedUrl,\r\n DynamicFormComponent,\r\n} from '@ieeesa-npm/presentation';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as screenTexts from '../../assets/constants.json';\r\nimport { FormArray, FormGroup, Validators } from '@angular/forms';\r\nimport { TenantsValidationPatterns } from '../../assets/tenant-validations';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormStatus } from '../../models/form-status.model';\r\nimport { validColorValidator } from 'ngx-colors';\r\nimport { Features, GetFeaturesResponse } from '../../models/features.model';\r\nimport { TenantApplicationsService } from '../../services/tenant-applications.service';\r\nimport {\r\n AppTypeConfig,\r\n GetAppTypesResponse,\r\n} from '../../models/app-type-config.model';\r\nimport {\r\n CreateTenantRequestPayload,\r\n CreateTenantResponse,\r\n} from '../../models/tenant.model';\r\nimport { SharedService } from '@ieeesa-npm/shared';\r\n\r\n@Component({\r\n selector: 'ieeesa-create-tenant-application',\r\n standalone: true,\r\n imports: [CommonModule, DynamicFormComponent],\r\n templateUrl: './create-tenant-application.component.html',\r\n styleUrls: ['./create-tenant-application.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CreateTenantApplicationComponent implements OnInit, OnDestroy {\r\n destroy$ = new Subject<boolean>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = screenTexts;\r\n createTenantTexts = this.constants?.createTenant;\r\n leftButtonLabel = this.createTenantTexts?.label?.leftButtonLabel;\r\n rightButtonLabel = this.createTenantTexts?.label?.rightButtonLabel;\r\n colWidth: FormGrid = { xs: 12, xl: 12, sm: 12, md: 12, lg: 12 };\r\n createTenantFormGroup!: FormModel;\r\n actionButtonAlign = AlignType.LEFT;\r\n createTenantFormGroupRef!: FormGroup;\r\n @ViewChild(DynamicFormComponent)\r\n dynamicFormComponent!: DynamicFormComponent;\r\n @Output() submitFormResponse = new EventEmitter();\r\n @Output() formCancel = new EventEmitter();\r\n featuresOptions!: CheckboxOption[];\r\n appTypeOptions!: RadioOption[];\r\n createTenantPayload!: CreateTenantRequestPayload;\r\n fileUploadPresignedUrl!: string;\r\n fileDownloadPresignedUrl!: string;\r\n file!: File | FileList;\r\n allowedFileTypes = [\r\n AllowedFileTypes.JPG,\r\n AllowedFileTypes.PNG,\r\n AllowedFileTypes.SVG,\r\n ];\r\n selectedColor!: string;\r\n selectedAppTypeOption!: RadioOption;\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n public fileUploadService: FileUploadService,\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantAppService: TenantApplicationsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private sharedService: SharedService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n ngOnInit(): void {\r\n this.fileUploadService.setApiBaseUrl(this.tenantAppService?.apiBaseUrl);\r\n this.getFeatures();\r\n }\r\n /**\r\n * Gets the list of features and updates the form control.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n getFeatures(): void {\r\n this.tenantAppService\r\n .getFeatures()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: GetFeaturesResponse) => {\r\n if (response?.status) {\r\n this.featuresOptions = this.tenantAppService.getFeatureOptions(\r\n response?.body as Features[]\r\n );\r\n this.getApplicationTypes();\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Gets the application/tenant types and updates the form control.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n getApplicationTypes(): void {\r\n this.tenantAppService\r\n .getApplicationTypes()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: GetAppTypesResponse) => {\r\n if (response?.status) {\r\n this.appTypeOptions =\r\n this.tenantAppService.getApplicationTypeOptions(\r\n response?.body as AppTypeConfig[]\r\n );\r\n this.initializeCreateTenantFormGroup();\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Initialize the create tenant form group array.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n initializeCreateTenantFormGroup(): void {\r\n this.createTenantFormGroup = {\r\n formGroup: [\r\n {\r\n legend: '',\r\n controls: [\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createTenantTexts?.label?.appTitle + '*',\r\n controlName: 'appTitle',\r\n value: '',\r\n validation: [\r\n Validators.required,\r\n Validators.maxLength(\r\n TenantsValidationPatterns.appTitleMaxLength\r\n ),\r\n ],\r\n supportMessage: this.createTenantTexts?.supportText?.appTitle,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n maxErrorMessage:\r\n this.createTenantTexts?.message?.error?.limit?.appTitleMaxChars,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appTitle,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appTitle,\r\n },\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createTenantTexts?.label?.appId + '*',\r\n controlName: 'appId',\r\n value: '',\r\n validation: [\r\n Validators.required,\r\n Validators.maxLength(TenantsValidationPatterns.appIdMaxLength),\r\n Validators.pattern(TenantsValidationPatterns.alphaNumeric),\r\n ],\r\n supportMessage: this.createTenantTexts?.supportText?.appId,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n maxErrorMessage:\r\n this.createTenantTexts?.message?.error?.limit?.appIdMaxChars,\r\n patternErrorMessage:\r\n this.createTenantTexts?.message?.error?.pattern?.appId,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appId,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appId,\r\n },\r\n {\r\n type: FormControlType?.FILE_UPLOAD,\r\n label: this.createTenantTexts?.label?.appLogo,\r\n controlName: 'appLogo',\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n value: '',\r\n placeholder: '',\r\n supportMessage: this.createTenantTexts?.supportText?.appLogo,\r\n validation: [Validators.required],\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appLogo,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appLogo,\r\n isMultiFileUpload: false,\r\n maxUploadFileSize: 2,\r\n maxFileSizeErrorMessage:\r\n this.createTenantTexts?.message?.error?.limit?.appLogoMaxSize,\r\n allowedFileTypeErrorMessage:\r\n this.createTenantTexts?.message?.error?.invalidFile,\r\n allowedFileTypes: this.allowedFileTypes,\r\n },\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createTenantTexts?.label?.appHeading + '*',\r\n controlName: 'appHeading',\r\n value: '',\r\n validation: [\r\n Validators.required,\r\n Validators.maxLength(\r\n TenantsValidationPatterns.appHeadingMaxLength\r\n ),\r\n ],\r\n supportMessage: this.createTenantTexts?.supportText?.appHeading,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n maxErrorMessage:\r\n this.createTenantTexts?.message?.error?.limit\r\n ?.appHeadingMaxChars,\r\n patternErrorMessage:\r\n this.createTenantTexts?.message?.error?.pattern?.email,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appHeading,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appHeading,\r\n },\r\n {\r\n type: FormControlType.TEXT_AREA,\r\n label: this.createTenantTexts?.label?.appDescription + '*',\r\n controlName: 'appDescription',\r\n value: '',\r\n validation: [\r\n Validators.required,\r\n Validators.maxLength(\r\n TenantsValidationPatterns.appDescriptionMaxLength\r\n ),\r\n ],\r\n supportMessage:\r\n this.createTenantTexts?.supportText?.appDescription,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n maxErrorMessage:\r\n this.createTenantTexts?.message?.error?.limit\r\n ?.appDescriptionMaxChars,\r\n maxCharCount: TenantsValidationPatterns.appDescriptionMaxLength,\r\n ariaLabel:\r\n this.createTenantTexts?.label?.ariaLabel?.appDescription,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById\r\n ?.appDescription,\r\n ariaMultiline: true,\r\n isResize: true,\r\n },\r\n {\r\n type: FormControlType.COLOR_PICKER,\r\n label: this.createTenantTexts?.label?.appBgColor + '*',\r\n controlName: 'backgroundColor',\r\n value: '',\r\n placeholder: '',\r\n supportMessage: this.createTenantTexts?.supportText?.appBgColor,\r\n validation: [Validators.required, validColorValidator()],\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n invalidColorErrorMessage:\r\n this.createTenantTexts?.message?.error?.invalidColor,\r\n ariaLabel: this.createTenantTexts?.supportText?.appBgColor,\r\n ariaDescribedById:\r\n this.createTenantTexts?.supportText?.appBgColor,\r\n },\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createTenantTexts?.label?.appHelpLink + '*',\r\n controlName: 'appHelpLink',\r\n value: '',\r\n validation: [\r\n Validators.required,\r\n Validators.pattern(TenantsValidationPatterns.url),\r\n ],\r\n supportMessage: this.createTenantTexts?.supportText?.appHelpLink,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n patternErrorMessage:\r\n this.createTenantTexts?.message?.error?.pattern?.appHelpLink,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appHelpLink,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appHelpLink,\r\n },\r\n {\r\n type: FormControlType.CHECKBOX,\r\n label: this.createTenantTexts?.label?.featuresList + '*',\r\n controlName: 'features',\r\n checkboxOptions: this.featuresOptions,\r\n minSelectionRequired: 1,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.featuresList,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.featuresList,\r\n supportMessage: this.createTenantTexts?.supportText?.featuresList,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n validation: [Validators.required],\r\n },\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createTenantTexts?.label?.domainURL + '*',\r\n controlName: 'appDomainUrl',\r\n value: '',\r\n validation: [\r\n Validators.required,\r\n Validators.pattern(TenantsValidationPatterns.url),\r\n ],\r\n supportMessage: this.createTenantTexts?.supportText?.domainURL,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n patternErrorMessage:\r\n this.createTenantTexts?.message?.error?.pattern?.appDomainUrl,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.domainURL,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.domainURL,\r\n },\r\n {\r\n type: FormControlType.RADIO,\r\n label: this.createTenantTexts?.label?.appType + '*',\r\n controlName: 'appType',\r\n value: '',\r\n radioOptions: this.appTypeOptions,\r\n validation: [Validators.required],\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appType,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appType,\r\n },\r\n ],\r\n },\r\n ],\r\n };\r\n }\r\n\r\n /**\r\n * Creates tenant on form submission.\r\n * @param {FormGroup[]} form\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n onCreateTenantFormSubmit(form: FormGroup[]): void {\r\n form[0]?.markAllAsTouched();\r\n if (form[0].status === FormStatus.VALID) {\r\n this.createTenantPayload = this.getCreateTenantPayload(\r\n form[0].getRawValue()\r\n );\r\n if (this.file) this.getFileUploadPresignedUrl(this.file);\r\n }\r\n }\r\n\r\n /**\r\n * Constructs create tenant payload from the form data and returns.\r\n * @param {*} formData\r\n * @return {CreateTenantRequestPayload}\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n getCreateTenantPayload(formData: any): CreateTenantRequestPayload {\r\n const payload: CreateTenantRequestPayload = {\r\n payload: {\r\n appTitle: formData?.appTitle,\r\n appId: formData?.appId,\r\n appHeading: formData?.appHeading,\r\n appDescription: formData?.appDescription,\r\n backgroundColor: formData?.backgroundColor,\r\n appLogo: formData?.appLogo,\r\n appDomainUrl: formData?.appDomainUrl,\r\n appHelpLink: formData?.appHelpLink,\r\n appType: this.selectedAppTypeOption?.id as string,\r\n features: this.tenantAppService.getFeatureIds(this.featuresOptions),\r\n },\r\n };\r\n return payload;\r\n }\r\n\r\n /**\r\n * Gets create tenant form group reference and disables default features.\r\n * @param {FormGroup[]} form\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n getCreateTenantFormGroupRef(form: FormGroup[]): void {\r\n this.createTenantFormGroupRef = form[0];\r\n const featuresFormArray = this.createTenantFormGroupRef?.controls[\r\n 'features'\r\n ] as FormArray;\r\n this.featuresOptions?.forEach((option: CheckboxOption, index: number) => {\r\n if (option?.disabled) {\r\n featuresFormArray?.at(index).disable();\r\n }\r\n });\r\n }\r\n /**\r\n * Updates createTenantFormGroupRef on add tenant form change event.\r\n * @param {FormGroup[]} form\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n onCreateTenantFormChange(form: FormGroup[]): void {\r\n this.createTenantFormGroupRef = form[0];\r\n }\r\n /**\r\n * Emits form cancel event.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n onFormCancel(): void {\r\n this.formCancel.emit();\r\n }\r\n /**\r\n * Gets the selected file when the file is browsed and on formFileUpload event is triggered.\r\n * @param {File | FileList} file\r\n */\r\n onFormFileUpload(file: File | FileList): void {\r\n this.file = file;\r\n }\r\n /**\r\n * Gets pre-signed URL to upload the selected file to AWS S3 bucket.\r\n * @param {File | FileList} file\r\n */\r\n getFileUploadPresignedUrl(file: File | FileList): void {\r\n this.fileUploadService\r\n .getFileUploadPresignedUrl(file)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: FileUploadPresignedUrl) => {\r\n this.fileUploadPresignedUrl = response?.body;\r\n if (this.fileUploadPresignedUrl) this.uploadFileToS3(file);\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, no-unused-vars, @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function, no-empty-function\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Uploads the file to AWS S3 bucket and submit the form data to API to create new tenant.\r\n * @param {File | FileList} file\r\n */\r\n uploadFileToS3(file: File | FileList): void {\r\n this.fileUploadService\r\n .uploadFileToS3(this.fileUploadPresignedUrl, file)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\r\n next: (response: any) => {\r\n this.fileUploadService.setFileUploadStatus(true);\r\n this.tenantAppService\r\n .createTenant(this.createTenantPayload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: CreateTenantResponse) => {\r\n if (response.status) {\r\n this.tenantAppService.setTenantBasicInfo(\r\n this.createTenantPayload\r\n );\r\n this.submitFormResponse.emit(response);\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n },\r\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.fileUploadService.setFileUploadStatus(false);\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Triggers when the color picker values has been changed.\r\n * @param {string} color\r\n */\r\n onColorPickerChange(color: string): void {\r\n this.selectedColor = color;\r\n }\r\n /**\r\n * Triggers when the radio option has been changed.\r\n * @param {RadioOption} radioOption\r\n */\r\n onRadioOptionSelected(radioOption: RadioOption): void {\r\n this.selectedAppTypeOption = radioOption;\r\n }\r\n /**\r\n * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","<ieeesa-dynamic-form\r\n *ngIf=\"createTenantFormGroup\"\r\n class=\"ieeesa-create-tenant-form\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"createTenantFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onCreateTenantFormSubmit($event)\"\r\n (formChange)=\"onCreateTenantFormChange($event)\"\r\n (formLeftButtonClicked)=\"onFormCancel()\"\r\n (formGroupsReference)=\"getCreateTenantFormGroupRef($event)\"\r\n (formFileUpload)=\"onFormFileUpload($event)\"\r\n (formColorPickerChange)=\"onColorPickerChange($event)\"\r\n (formRadioOptionSelected)=\"onRadioOptionSelected($event)\"\r\n></ieeesa-dynamic-form>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n DataTableComponent,\r\n ModalComponent,\r\n PaginatorConfig,\r\n TableActions,\r\n TableColumnSchema,\r\n TableColumnSortDirection,\r\n TableColumnType,\r\n} from '@ieeesa-npm/presentation';\r\nimport { FeatureInfo, TenantInfo } from '../../models/tenants.model';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as constants from '../../assets/constants.json';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport {\r\n AlertType,\r\n AlertsService,\r\n BreakpointObserverService,\r\n ModalType,\r\n} from '@ieeesa-npm/utility';\r\nimport { TenantsRoutesConfig } from '../../models/route-config.model';\r\nimport { SharedService } from '@ieeesa-npm/shared';\r\nimport { TenantApplicationsService } from '../../services/tenant-applications.service';\r\nimport { Router } from '@angular/router';\r\nimport { PageEvent } from '@angular/material/paginator';\r\nimport { Sort } from '@angular/material/sort';\r\nimport {\r\n TenantStatus,\r\n PermissionType,\r\n} from '../../models/permission-type.model';\r\nimport {\r\n TenantsPermissions,\r\n UserPermission,\r\n} from '../../models/tenants-permission.model';\r\nimport {\r\n ViewTenantsColumnSchemaDef,\r\n SortOrderBy,\r\n GetTenantsPayload,\r\n} from '../../models/table-column-schema-view-tenant-list.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { CreateTenantApplicationComponent } from '../create-tenant-application/create-tenant-application.component';\r\n@Component({\r\n selector: 'ieeesa-view-tenants-list',\r\n templateUrl: './view-tenants-list.component.html',\r\n styleUrls: ['./view-tenants-list.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, MatButtonModule, DataTableComponent],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ViewTenantsListComponent implements OnInit, OnDestroy {\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = constants;\r\n viewTenantsConstants = this.constants?.viewTenants;\r\n isMobileView = false;\r\n @Input() tenantsPageInfo: {\r\n tenantsTitle: string;\r\n } = {\r\n tenantsTitle: '',\r\n };\r\n @Input() apiBaseURL = '';\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Input() routePaths!: TenantsRoutesConfig;\r\n @Input() userPermissions!: UserPermission[];\r\n @Input() defaultSortedColumn: string = ViewTenantsColumnSchemaDef.APP_ID;\r\n @Output() createTenant = new EventEmitter();\r\n @Output() viewTenantsDetails: EventEmitter<TenantInfo> =\r\n new EventEmitter<TenantInfo>();\r\n tableData!: TenantInfo[];\r\n columnSchema!: TableColumnSchema[];\r\n tableActions: TableActions = {\r\n isPaginationNeeded: true,\r\n };\r\n tableColumns = this.viewTenantsConstants?.tableColumns;\r\n emptyFieldValueReplacedBy =\r\n this.viewTenantsConstants?.emptyFieldValueReplacedBy;\r\n paginatorConfig: PaginatorConfig = {\r\n recordsPerPage: this.viewTenantsConstants?.pageSizeOptions?.[0],\r\n pageSizeOptions: this.viewTenantsConstants.pageSizeOptions,\r\n totalRecords: 0,\r\n };\r\n userTenantsPermissions!: TenantsPermissions[];\r\n permissionType = PermissionType;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dialogRef: any;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n createTenantScreenTexts: any = this.constants?.createTenant;\r\n defaultColumnSortDirection = true;\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n public dialog: MatDialog,\r\n // eslint-disable-next-line no-unused-vars\r\n public alertService: AlertsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private breakpointObserverService: BreakpointObserverService,\r\n // eslint-disable-next-line no-unused-vars\r\n private sharedService: SharedService,\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantApplicationsService: TenantApplicationsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private router: Router\r\n ) {\r\n this.breakpointObserverService\r\n .getBreakpoint()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((result: { matches: boolean }) => {\r\n this.isMobileView = result.matches;\r\n });\r\n }\r\n\r\n /**\r\n * Sets the user permissions, router config path, base API URL, table column schema and gets the tenants list.\r\n * @memberof ViewTenantsListComponent\r\n */\r\n ngOnInit(): void {\r\n this.userTenantsPermissions =\r\n this.tenantApplicationsService?.filterPermission(this.userPermissions);\r\n this.tenantApplicationsService?.setAppConfig(\r\n this.apiBaseURL,\r\n this.userPermissions\r\n );\r\n this.tenantsPageInfo = {\r\n tenantsTitle: this.viewTenantsConstants?.tenantsTitle,\r\n };\r\n this.routePaths = this.routePaths ?? this.constants?.routeConfigPath;\r\n this.sharedService?.setRoutePaths(this.routePaths);\r\n this.configureTableInfo();\r\n this.defaultSortedColumn = this.columnSchema[0].columnDef;\r\n this.getTenantsAndInitializeTableView({\r\n payload: {\r\n offset: 0,\r\n pageSize: this.paginatorConfig?.recordsPerPage,\r\n sortedBy: ViewTenantsColumnSchemaDef.APP_ID,\r\n sortedOrderBy: this.filterSortedOrderBy(\r\n this.defaultColumnSortDirection\r\n ),\r\n },\r\n });\r\n }\r\n /**\r\n * Validates permission based access for provided feature.\r\n * @param {PermissionType} permissionType\r\n * @return {boolean}\r\n * @memberof ViewTenantsListComponent\r\n */\r\n validateAccess(permissionType: PermissionType): boolean {\r\n return this.tenantApplicationsService.validateAccess(\r\n permissionType,\r\n this.userTenantsPermissions\r\n );\r\n }\r\n /**\r\n * Configures table schema to display the tenants in table view.\r\n * @memberof ViewTenantsListComponent\r\n */\r\n configureTableInfo(): void {\r\n this.columnSchema = [\r\n {\r\n id: 1,\r\n columnDef: ViewTenantsColumnSchemaDef.APP_ID,\r\n heading: this.tableColumns?.appId,\r\n columnType: TableColumnType.LINK,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) => `${element.appId}`,\r\n isSortableColumn: true,\r\n },\r\n {\r\n id: 2,\r\n columnDef: ViewTenantsColumnSchemaDef.APP_TITLE,\r\n heading: this.tableColumns?.appTitle,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) =>\r\n `${element.appTitle ?? this.emptyFieldValueReplacedBy}`,\r\n isSortableColumn: true,\r\n },\r\n {\r\n id: 3,\r\n columnDef: ViewTenantsColumnSchemaDef.APP_DESCRIPTION,\r\n heading: this.tableColumns?.appDescription,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) =>\r\n `${element.appDescription ?? this.emptyFieldValueReplacedBy}`,\r\n },\r\n\r\n {\r\n id: 4,\r\n columnDef: ViewTenantsColumnSchemaDef.FEATURES,\r\n heading: this.tableColumns?.features,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) =>\r\n `${\r\n element?.features && element?.features?.length > 0\r\n ? this.formatFeaturesName(element?.features)\r\n : this.emptyFieldValueReplacedBy\r\n }`,\r\n },\r\n {\r\n id: 5,\r\n columnDef: ViewTenantsColumnSchemaDef.STATUS,\r\n heading: this.tableColumns?.status,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) =>\r\n `${element.status ? TenantStatus.ACTIVE : TenantStatus.INACTIVE}`,\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Format the features name in to single sentence with comma separated.\r\n * @memberof ViewTenantsListComponent\r\n */\r\n formatFeaturesName(features: FeatureInfo[]): string {\r\n return features\r\n .map((feature: FeatureInfo) => {\r\n // eslint-disable-next-line no-unused-expressions\r\n return feature.featureName;\r\n })\r\n ?.join(', ');\r\n }\r\n /**\r\n * Fetching details of tenants and initialize table view\r\n * @param {GetTenantsPayload} payload\r\n * @memberof ViewTenantsListComponent\r\n */\r\n getTenantsAndInitializeTableView(payload: GetTenantsPayload): void {\r\n this.tenantApplicationsService\r\n .getTenantsList(payload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response) => {\r\n this.tableData = response?.body?.appDetails as TenantInfo[];\r\n this.paginatorConfig.totalRecords = response?.body\r\n ?.totalRecords as number;\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(error, this.constants?.errors);\r\n },\r\n });\r\n }\r\n /**\r\n * Sets the dialog options for create tenant modal and calls openModal method.\r\n * @return -returns nothing\r\n * @memberof ViewTenantsListComponent\r\n */\r\n openCreateTenantForm(): void {\r\n const dialogOptions = {\r\n heading: this.viewTenantsConstants?.addTenant,\r\n isCloseNeeded: true,\r\n componentReference: CreateTenantApplicationComponent,\r\n modalType: ModalType.FORM,\r\n };\r\n this.openModal(dialogOptions, 'ieeesa-create-tenant');\r\n }\r\n /**\r\n * Opens modal component with received params and handles form submission success and errors.\r\n * @param {*} dialogOptions\r\n * @param {string} [className]\r\n * @return -returns nothing\r\n * @memberof ViewTenantsListComponent\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-inferrable-types, no-unused-vars\r\n openModal(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dialogOptions: any,\r\n className?: string\r\n ): void {\r\n className = className ?? '';\r\n this.dialogRef = this.dialog?.open(ModalComponent, {\r\n data: dialogOptions,\r\n width: '',\r\n panelClass: ['ieeesa-modal-dialog', className],\r\n ariaModal: true,\r\n });\r\n this.dialogRef?.componentInstance?.submitFormResponse\r\n .pipe(takeUntil(this.destroy$))\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, no-unused-vars\r\n .subscribe((result: any) => {\r\n this.dialogRef?.close();\r\n const appTitle =\r\n this.tenantApplicationsService.getTenantBasicInfo?.appTitle;\r\n this.sharedService.showAlertMessage(\r\n AlertType?.SUCCESS,\r\n `${appTitle} ${this.createTenantScreenTexts?.message?.success?.submission}`\r\n );\r\n this.getTenantsAndInitializeTableView({\r\n payload: {\r\n offset: 0,\r\n pageSize: this.paginatorConfig?.recordsPerPage,\r\n sortedBy: ViewTenantsColumnSchemaDef.APP_ID,\r\n sortedOrderBy: this.filterSortedOrderBy(\r\n this.defaultColumnSortDirection\r\n ),\r\n },\r\n });\r\n });\r\n this.dialogRef?.componentInstance?.formCancel\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.dialogRef?.close();\r\n });\r\n }\r\n /**\r\n * Sorts the tenants by application id or title in ascending or descending.\r\n * @param {Sort} sort\r\n * @memberof ViewTenantsListComponent\r\n */\r\n onSortTenants(sort: Sort): void {\r\n this.defaultSortedColumn = sort.active;\r\n this.defaultColumnSortDirection =\r\n sort.direction === TableColumnSortDirection.ASCENDING;\r\n const payload: GetTenantsPayload = {\r\n payload: {\r\n offset: 0,\r\n pageSize: this.paginatorConfig?.recordsPerPage,\r\n sortedBy: this.defaultSortedColumn,\r\n sortedOrderBy: this.filterSortedOrderBy(\r\n this.defaultColumnSortDirection\r\n ),\r\n },\r\n };\r\n this.getTenantsAndInitializeTableView(payload);\r\n }\r\n\r\n /**\r\n * Returning sorting order according to column definition\r\n * @param defaultColumnSortDirection\r\n * @returns SortOrderBy.ASC | SortOrderBy.DESC\r\n */\r\n filterSortedOrderBy(defaultColumnSortDirection: boolean): string {\r\n return defaultColumnSortDirection ? SortOrderBy.ASC : SortOrderBy.DESC;\r\n }\r\n /**\r\n * Get the the records according to pagination\r\n * @param {{\r\n * pageOffset: number;\r\n * pageLimit: number;\r\n * }} pageEvent\r\n * @memberof ViewTenantsListComponent\r\n */\r\n onTablePaginationChange(pageEvent: PageEvent): void {\r\n this.getTenantsAndInitializeTableView({\r\n payload: {\r\n offset: pageEvent.pageIndex,\r\n pageSize: pageEvent.pageSize,\r\n sortedBy: this.defaultSortedColumn,\r\n sortedOrderBy: this.filterSortedOrderBy(\r\n this.defaultColumnSortDirection\r\n ),\r\n },\r\n });\r\n }\r\n /**\r\n * Navigates to view tenants detail component\r\n * @memberof ViewTenantsListComponent\r\n */\r\n navigateToViewTenantDetails(tenantInfo: TenantInfo): void {\r\n if (tenantInfo) {\r\n this.tenantApplicationsService.setSelectedTenantInformation(tenantInfo);\r\n }\r\n if (this.routePaths?.viewTenantDetails)\r\n this.router.navigate([this.routePaths?.viewTenantDetails]);\r\n else this.viewTenantsDetails.emit(tenantInfo);\r\n }\r\n /**\r\n * NgOnDestroy performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n * @memberof ViewTenantsListComponent\r\n * @return -returns nothing\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","<div\r\n class=\"ieeesa-view-tenants-list\"\r\n [ngClass]=\"{ 'ieeesa-view-tenants-list__mobile': isMobileView }\"\r\n>\r\n <p class=\"ieeesa-headline-lg-32 py-3 mb-0\">\r\n {{ tenantsPageInfo.tenantsTitle }}\r\n </p>\r\n <div class=\"ieeesa-view-tenants-list__content\">\r\n <div class=\"d-flex justify-content-end\">\r\n <button\r\n mat-button\r\n class=\"mat-tertiary-button me-3\"\r\n [attr.aria-label]=\"viewTenantsConstants?.ariaLabel?.add\"\r\n (click)=\"openCreateTenantForm()\"\r\n *ngIf=\"validateAccess(permissionType.MANAGE_TENANT)\"\r\n >\r\n {{ viewTenantsConstants?.addTenant }}\r\n </button>\r\n </div>\r\n <ieeesa-data-table\r\n [tableDataInfo]=\"tableData\"\r\n [columnSchemaInfo]=\"columnSchema\"\r\n [isCellTextOverflowEllipsis]=\"true\"\r\n [tableActions]=\"tableActions\"\r\n [paginatorConfig]=\"paginatorConfig\"\r\n [defaultSortedColumn]=\"defaultSortedColumn\"\r\n (sortChange)=\"onSortTenants($event)\"\r\n (paginationChange)=\"onTablePaginationChange($event)\"\r\n (rowLink)=\"navigateToViewTenantDetails($event)\"\r\n ></ieeesa-data-table>\r\n </div>\r\n</div>\r\n","export enum FeaturePermissionId {\r\n // eslint-disable-next-line no-unused-vars\r\n MEETINGS_AND_EVENTS = 'FEATURE_049753e8-ea5c-4fad-adb0-e1456e69c7a5',\r\n // eslint-disable-next-line no-unused-vars\r\n BALLOTS = 'FEATURE_a0ad3616-20dc-43da-813f-9b76d33f227a',\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n BreakpointObserverService,\r\n GlobalErrorHandlerService,\r\n} from '@ieeesa-npm/utility';\r\nimport {\r\n AccordionComponent,\r\n AccordionInfo,\r\n SlideToggleComponent,\r\n} from '@ieeesa-npm/presentation';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as screenText from '../../assets/constants.json';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { TenantInfo, TenantDetailsResponse } from '../../models/tenants.model';\r\nimport { TenantApplicationsService } from '../../services/tenant-applications.service';\r\nimport { UserPermission } from '../../models/tenants-permission.model';\r\nimport { SharedService } from '@ieeesa-npm/shared';\r\nimport { TenantsRoutesConfig } from '../../models/route-config.model';\r\nimport { Features } from '../../models/features.model';\r\nimport { FeaturePermissionId } from '../../models/feature-permission-id.model';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'ieeesa-view-tenant-details',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n SlideToggleComponent,\r\n AccordionComponent,\r\n MatDividerModule,\r\n ],\r\n templateUrl: './view-tenant-details.component.html',\r\n styleUrls: ['./view-tenant-details.component.scss'],\r\n})\r\nexport class ViewTenantDetailsComponent implements OnInit, OnDestroy {\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n @Input() apiBaseURL!: string;\r\n @Input() userPermissions!: UserPermission[];\r\n @Input() routePaths!: TenantsRoutesConfig;\r\n isMobileView = false;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = screenText;\r\n tenantLabels = this.constants?.viewTenants?.label;\r\n slideToggleOption = {\r\n id: 1,\r\n label: this.constants?.viewTenants?.label?.active,\r\n checked: true,\r\n disabled: false,\r\n };\r\n tenantDetails!: TenantInfo;\r\n accordionInfoList: AccordionInfo[] = JSON.parse(\r\n JSON.stringify(this.constants?.TenantAccordionInfo)\r\n );\r\n viewTenantsRouteUrl!: string;\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n private breakpointObserverService: BreakpointObserverService,\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantAppService: TenantApplicationsService,\r\n // eslint-disable-next-line no-unused-vars\r\n public globalErrorHandlerService: GlobalErrorHandlerService,\r\n // eslint-disable-next-line no-unused-vars\r\n private sharedService: SharedService\r\n ) {\r\n this.breakpointObserverService\r\n .getBreakpoint()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((result: { matches: boolean }) => {\r\n this.isMobileView = result?.matches;\r\n });\r\n }\r\n\r\n /**\r\n * Initializes view tenant details component.\r\n * @return -returns nothing\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n ngOnInit(): void {\r\n this.routePaths = this.routePaths ?? this.constants?.routeConfigPath;\r\n this.viewTenantsRouteUrl = `/${this.routePaths?.viewTenants}`;\r\n this.tenantAppService?.setAppConfig(this.apiBaseURL, this.userPermissions);\r\n const appId = this.tenantAppService.getSelectedTenantInformation()\r\n ?.appId as string;\r\n this.getTenantDetails(appId);\r\n }\r\n\r\n /**\r\n * Gets the selected tenant details from server.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n getTenantDetails(appId: string): void {\r\n this.tenantAppService\r\n .getTenantDetails(appId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: TenantDetailsResponse) => {\r\n if (response?.status) {\r\n this.tenantDetails = response?.body as TenantInfo;\r\n this.slideToggleOption.checked = this.tenantDetails\r\n .status as boolean;\r\n this.slideToggleOption.label = this.tenantDetails.status\r\n ? this.tenantLabels?.active\r\n : this.tenantLabels?.inactive;\r\n const features = this.tenantDetails.features as Features[];\r\n features.map((feature: Features) => {\r\n if (\r\n feature?.featureId ===\r\n FeaturePermissionId.MEETINGS_AND_EVENTS ||\r\n feature?.featureId === FeaturePermissionId.BALLOTS\r\n )\r\n this.accordionInfoList.push({\r\n id: this.accordionInfoList.length + 1,\r\n isDisabled: false,\r\n title: feature?.featureName,\r\n });\r\n });\r\n }\r\n },\r\n error: (error) => {\r\n this.sharedService.handleErrors(error, this.constants?.errors);\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Keeps track of the accordion based on the element's ID in DOM tree.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n trackByAccordionFn(index: number, item: AccordionInfo): number {\r\n return item?.id as number;\r\n }\r\n /**\r\n * Performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$?.next(true);\r\n this.destroy$?.unsubscribe();\r\n }\r\n}\r\n","<div\r\n class=\"ieeesa-view-tenant-info px-4 pb-4\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-view-tenant-info--bg-white'\r\n : 'ieeesa-view-tenant-info--bg-blue'\r\n \"\r\n>\r\n <div\r\n class=\"d-flex justify-content-between gap-lg-4 gap-md-3 gap-sm-2 gap-3\"\r\n [ngClass]=\"isMobileView ? 'flex-column gap-2 pb-3' : 'align-item-center'\"\r\n >\r\n <div\r\n class=\"d-flex gap-lg-4 gap-md-3 gap-sm-3 gap-3 ps-0 align-items-md-center align-items-xl-center\"\r\n [ngClass]=\"isMobileView ? 'flex-column' : ''\"\r\n >\r\n <p\r\n class=\"mb-0 ieeesa-headline-lg-32 py-3\"\r\n [ngClass]=\"isMobileView ? '' : 'ieeesa-view-tenant-info--title'\"\r\n >\r\n {{ tenantDetails?.appTitle }}\r\n </p>\r\n <div class=\"d-flex gap-lg-2 gap-md-2 gap-sm-2 gap-2\">\r\n <span\r\n class=\"mb-0 ieeesa-title-sm-14 mt-1\"\r\n [ngClass]=\"isMobileView ? 'p-0' : 'ieeesa-view-tenant-info--app-id'\"\r\n >\r\n {{ tenantLabels?.appId }}:\r\n </span>\r\n {{ tenantDetails?.appId }}\r\n <ng-container *ngIf=\"tenantDetails?.appId !== tenantLabels?.saAppId\">\r\n <mat-divider [vertical]=\"true\"></mat-divider>\r\n <span\r\n class=\"mb-0 mt-1 ieeesa-title-sm-14 ieeesa-view-tenant-info--app-status\"\r\n [ngClass]=\"isMobileView ? 'p-0' : ''\"\r\n >\r\n {{ tenantLabels?.status }}:\r\n </span>\r\n <ieeesa-slide-toggle\r\n [slideToggle]=\"slideToggleOption\"\r\n ></ieeesa-slide-toggle>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <a\r\n class=\"ieeesa-btn-label-lg-bold-16 text-decoration-none mt-lg-3 mt-xl-6 p-sm-0 p-md-0\"\r\n href=\"javascript:void(0)\"\r\n rel=\"noopener noreferrer\"\r\n [routerLink]=\"viewTenantsRouteUrl\"\r\n [ngClass]=\"isMobileView ? '' : 'ieeesa-view-tenant-info--link'\"\r\n >{{ tenantLabels?.viewAllApps }}</a\r\n >\r\n </div>\r\n <div\r\n class=\"ieeesa-view-tenant-info__accordion ieeesa-view-tenant-info__accordion--blue-bg\"\r\n [ngClass]=\"isMobileView ? 'ieeesa-view-tenant-info__accordion--info' : ''\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let accordionInfo of accordionInfoList;\r\n trackBy: trackByAccordionFn\r\n \"\r\n >\r\n <ieeesa-accordion [accordionInfo]=\"accordionInfo\"> </ieeesa-accordion>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","/* eslint-disable no-empty-function */\r\nimport { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n@Component({\r\n selector: 'ieeesa-tenant-applications',\r\n standalone: true,\r\n imports: [CommonModule, MatButtonModule],\r\n templateUrl: './tenant-applications.component.html',\r\n styleUrls: ['./tenant-applications.component.scss'],\r\n})\r\nexport class TenantApplicationsComponent {}\r\n","","/* eslint-disable no-unused-vars */\r\nexport enum AppType {\r\n GENERIC = 'Generic',\r\n STANDALONE = 'Standalone'\r\n}","import { NgModule } from '@angular/core';\r\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [],\r\n exports: [],\r\n})\r\nexport class TenantApplicationsModule {}\r\n","/*\r\n * Public API Surface of tenants\r\n */\r\nexport * from './lib/components/view-tenants-list/view-tenants-list.component';\r\nexport * from './lib/components/view-tenant-details/view-tenant-details.component';\r\nexport * from './lib/components/create-tenant-application/create-tenant-application.component';\r\nexport * from './lib/tenant-applications.component';\r\n\r\nexport * from './lib/models/app-type-config.model';\r\nexport * from './lib/models/app-type.model';\r\nexport * from './lib/models/tenant.model';\r\nexport * from './lib/models/tenants.model';\r\nexport * from './lib/models/features.model';\r\nexport * from './lib/models/form-status.model';\r\nexport * from './lib/models/permission-type.model';\r\nexport * from './lib/models/tenants-permission.model';\r\nexport * from './lib/models/route-config.model';\r\nexport * from './lib/models/table-column-schema-view-tenant-list.model';\r\n\r\nexport * from './lib/services/tenant-applications.service';\r\nexport * from './lib/services/tenant-permissions-map.service';\r\nexport * from './lib/services/tenant-permissions.service';\r\n\r\nexport * from './lib/assets/tenant-validations';\r\n\r\nexport * from './lib/tenant-applications.module';\r\nexport * from './lib/models/feature-permission-id.model';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["screenTexts?.errors","screenTexts?.createTenant","i2.TenantPermissionsService","i3.TenantPermissionsMapService","screenTexts","i1","i2.TenantApplicationsService","constants","i2","i4.TenantApplicationsService","i6"],"mappings":"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"}
|