tango-app-ui-manage-settings 3.0.39-dev → 3.0.40-dev
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/configurations/email-configuration/email-configuration.component.mjs
CHANGED
|
@@ -18,8 +18,8 @@ export class EmailConfigurationComponent {
|
|
|
18
18
|
endTime;
|
|
19
19
|
dropDown = false;
|
|
20
20
|
dropdownItems = ['Admin', 'User', 'Super Admin'];
|
|
21
|
-
selectedRole = 'Admin';
|
|
22
|
-
offset =
|
|
21
|
+
selectedRole = 'Super Admin';
|
|
22
|
+
offset = 1;
|
|
23
23
|
limit = 10;
|
|
24
24
|
sortBy = -1;
|
|
25
25
|
sortColumName;
|
|
@@ -157,7 +157,7 @@ export class EmailConfigurationComponent {
|
|
|
157
157
|
"searchValue": this.searchInstallation,
|
|
158
158
|
"sortColumName": this.sortColumName,
|
|
159
159
|
"sortBy": this.sortBy,
|
|
160
|
-
"
|
|
160
|
+
"offset": this.offset,
|
|
161
161
|
"limit": this.limit
|
|
162
162
|
};
|
|
163
163
|
this.loading = true;
|
|
@@ -200,11 +200,11 @@ export class EmailConfigurationComponent {
|
|
|
200
200
|
});
|
|
201
201
|
}
|
|
202
202
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EmailConfigurationComponent, deps: [{ token: i1.NgbModal }, { token: i2.ToastService }, { token: i0.ChangeDetectorRef }, { token: i3.ClientApiService }], target: i0.ɵɵFactoryTarget.Component });
|
|
203
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: EmailConfigurationComponent, selector: "lib-email-configuration", host: { listeners: { "document:click": "onClick($event)" } }, viewQueries: [{ propertyName: "confirmationModal", first: true, predicate: ["confirmationModal"], descendants: true }], ngImport: i0, template: "\r\n<div class=\"mb-5 py-3 px-5\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap mb-10\">\r\n <li class=\"nav-item\" (click)=\"Selectedtabs('Infra Report')\">\r\n <a \r\n [ngClass]=\"SelectedTab === 'Infra Report' ? 'active' : ''\" class=\"nav-link cursor-pointer no-border me-3\">\r\n Infra Report\r\n </a>\r\n </li>\r\n <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('Data Report')\">\r\n <a \r\n [ngClass]=\"SelectedTab === 'Data Report' ? 'active' : ''\" class=\"nav-link cursor-pointer no-border me-3\">\r\n Data Report\r\n </a>\r\n </li> \r\n <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('Insight Report')\">\r\n <a [ngClass]=\"SelectedTab ==='Insight Report' ? 'active' :''\" class=\"nav-link cursor-pointer me-3\">Insight Report</a>\r\n </li>\r\n <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('All')\"><a [ngClass]=\"SelectedTab ==='All' ? 'active' :''\"\r\n class=\"nav-link cursor-pointer no-border me-3\">All</a>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"w-100 d-flex align-items-center\">\r\n <span class=\"timingtext fw-bold\">Send Daily Report at</span> <span> <input type=\"time\" [(ngModel)]=\"startTime\" class=\"form-control w-auto mx-5\"></span><span class=\"timingtext fw-bold\">and</span><span><input type=\"time\" [(ngModel)]=\"endTime\" class=\"form-control w-auto mx-5\"></span>\r\n </div>\r\n</div>\r\n<div class=\"card\">\r\n <div class=\"card-header border-0\">\r\n <div class=\"card-title d-grid\">\r\n <div class=\"title fw-bold\">Users List</div>\r\n <div class=\"sub-title\">Select your required email & schedule the mail timing accordingly</div>\r\n </div>\r\n <div class=\"card-toolbar\"> \r\n <input type=\"text\" class=\"form-control w-auto ps-3 me-2\" placeholder=\"Search\"\r\n autocomplete=\"off\" [(ngModel)]=\"searchInstallation\"\r\n (change)=\"searchInstallationTable()\" />\r\n <div class=\"position-relative w-150px mt-5 mb-5 ms-2\">\r\n <button type=\"button\" (click)=\"openDropdown($event)\"\r\n class=\"btn btn-default w-100 btn-outline btn-outline-default rounded-3 text-nowrap border-val d-flex justify-content-between\">\r\n {{selectedRole ? selectedRole : dropdownItems[0]}}\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </button>\r\n <div *ngIf=\"dropDown\" class=\"card py-1 w-100 position-absolute z-1 top-50px end-0\">\r\n <ul *ngFor=\"let item of dropdownItems\" class=\"list-unstyled\">\r\n <li [ngClass]=\"selectedRole === item ? 'active' : ''\"\r\n class=\"camera px-5 items fw-semibold cursor-pointer py-2\"\r\n (click)=\"selectItem(item)\">{{item}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div *ngIf=\"!loading && !noData \">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <div class=\"d-flex align-items-center\">\r\n <input type=\"checkbox\" id=\"selectAllCheckbox\" (change)=\"selectAll($event)\">\r\n <div class=\"d-flex align-items-center cursor-pointer\" (click)=\"sortData('userName')\">\r\n <span class=\"ms-2 me-1\">User</span>\r\n <span *ngIf=\"sortColumName === 'userName' && sortBy !== 1 || sortColumName !== 'userName' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'userName' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('email')\">Email\r\n <span *ngIf=\"sortColumName === 'email' && sortBy !== 1 || sortColumName !== 'email' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'email' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div></th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('assigned')\">Store Count\r\n <span *ngIf=\"sortColumName === 'assigned' && sortBy !== 1 || sortColumName !== 'assigned' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'assigned' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of emailuserList?.result\">\r\n <td>\r\n <div class=\"d-flex align-items-center\">\r\n <input type=\"checkbox\" class=\"me-5\" [(ngModel)]=\"item.infraAlert\" (change)=\"selectItems($event, item)\">\r\n <div>\r\n {{ item?.userName ? item?.userName : 'NA' }}\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div>{{ item?.email ? item?.email :'NA' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"text-title text-primary cursor-pointer text-decoration-underline mb-1\" (click)=\"storeDetails(item?.assignedValue,item?.userName,item?.email)\">{{ item?.assigned }}</div></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"limit\" [currentPage]=\"offset\"\r\n [totalItems]=\"emailuserList?.count\" [paginationSizes]=\"[10,20,30]\" [pageSize]=\"limit\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n <div>\r\n\r\n <div class=\"mt-10 d-flex justify-content-end\">\r\n <button class=\"btn btn-outline btn-default me-3\" (click)=\"cancelSelectedItems()\">\r\n Cancel\r\n </button>\r\n <button class=\"btn btn-primary btn-default\" (click)=\"updateSelectedItems()\">\r\n Save Chages\r\n </button>\r\n </div> \r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div> \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"p-8 card-title\">\r\n <div class=\"title\">\r\n Stores List of the user\r\n </div>\r\n <div class=\"d-flex align-items-center mt-10 mb-10\">\r\n <div class=\"rounded-5 profile d-flex align-items-center justify-content-center fw-semibold\">{{Email.slice(0,2) | uppercase}}</div>\r\n <div class=\"ms-3\">\r\n <div class=\"title1 mb-1 fw-bold\">{{userName}}</div>\r\n <div class=\"text-sub\">{{Email}}</div>\r\n </div>\r\n </div>\r\n <div class=\"mt-5 border border-gray border-1 rounded-3 p-5\">\r\n <span *ngFor=\"let list of storeList\" class=\"badge badge-light-default me-3\">{{list?.storeName}}</span>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-100\" (click)=\"modal.dismiss()\">Close</button>\r\n </div>\r\n </div>\r\n </ng-template>", styles: [".nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.items{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.img-src{width:25%!important}tr{vertical-align:middle!important}.card-title .title{color:var(--Gray-900, #101828);font-size:18px;font-weight:600;line-height:28px}.card-title .sub-title{color:var(--Gray-500, #667085);font-size:12px;font-weight:400;line-height:18px}input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.timingtext{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.disabled-list{pointer-events:none;opacity:.5}.profile{color:var(--Primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF);font-size:14px;line-height:20px;width:40px;height:40px}.title1{color:var(--Gray-700, #344054);font-size:14px!important;line-height:20px}.text-sub{color:var(--Gray-500, #667085);line-height:20px;font-weight:400}table tr{vertical-align:middle!important;padding-top:16px;padding-bottom:16px}table td .text-sub{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "pipe", type: i4.UpperCasePipe, name: "uppercase" }] });
|
|
203
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: EmailConfigurationComponent, selector: "lib-email-configuration", host: { listeners: { "document:click": "onClick($event)" } }, viewQueries: [{ propertyName: "confirmationModal", first: true, predicate: ["confirmationModal"], descendants: true }], ngImport: i0, template: "\r\n<div class=\"mb-5 py-3 px-5\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap mb-10\">\r\n <li class=\"nav-item\" (click)=\"Selectedtabs('Infra Report')\">\r\n <a \r\n [ngClass]=\"SelectedTab === 'Infra Report' ? 'active' : ''\" class=\"nav-link cursor-pointer no-border me-3\">\r\n Infra Report\r\n </a>\r\n </li>\r\n <!-- <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('Data Report')\">\r\n <a \r\n [ngClass]=\"SelectedTab === 'Data Report' ? 'active' : ''\" class=\"nav-link cursor-pointer no-border me-3\">\r\n Data Report\r\n </a>\r\n </li> \r\n <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('Insight Report')\">\r\n <a [ngClass]=\"SelectedTab ==='Insight Report' ? 'active' :''\" class=\"nav-link cursor-pointer me-3\">Insight Report</a>\r\n </li>\r\n <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('All')\"><a [ngClass]=\"SelectedTab ==='All' ? 'active' :''\"\r\n class=\"nav-link cursor-pointer no-border me-3\">All</a>\r\n </li> -->\r\n </ul>\r\n\r\n <div class=\"w-100 d-flex align-items-center\">\r\n <span class=\"timingtext fw-bold\">Send Daily Report at</span> <span> <input type=\"time\" [(ngModel)]=\"startTime\" class=\"form-control w-auto mx-5\"></span><span class=\"timingtext fw-bold\">and</span><span><input type=\"time\" [(ngModel)]=\"endTime\" class=\"form-control w-auto mx-5\"></span>\r\n </div>\r\n</div>\r\n<div class=\"card\">\r\n <div class=\"card-header border-0\">\r\n <div class=\"card-title d-grid\">\r\n <div class=\"title fw-bold\">Users List</div>\r\n <div class=\"sub-title\">Select your required email & schedule the mail timing accordingly</div>\r\n </div>\r\n <div class=\"card-toolbar\"> \r\n <input type=\"text\" class=\"form-control w-auto ps-3 me-2\" placeholder=\"Search\"\r\n autocomplete=\"off\" [(ngModel)]=\"searchInstallation\"\r\n (change)=\"searchInstallationTable()\" />\r\n <div class=\"position-relative w-150px mt-5 mb-5 ms-2\">\r\n <button type=\"button\" (click)=\"openDropdown($event)\"\r\n class=\"btn btn-default w-100 btn-outline btn-outline-default rounded-3 text-nowrap border-val d-flex justify-content-between\">\r\n {{selectedRole ? selectedRole : dropdownItems[0]}}\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </button>\r\n <div *ngIf=\"dropDown\" class=\"card py-1 w-100 position-absolute z-1 top-50px end-0\">\r\n <ul *ngFor=\"let item of dropdownItems\" class=\"list-unstyled\">\r\n <li [ngClass]=\"selectedRole === item ? 'active' : ''\"\r\n class=\"camera px-5 items fw-semibold cursor-pointer py-2\"\r\n (click)=\"selectItem(item)\">{{item}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div *ngIf=\"!loading && !noData \">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <div class=\"d-flex align-items-center\">\r\n <input type=\"checkbox\" id=\"selectAllCheckbox\" (change)=\"selectAll($event)\">\r\n <div class=\"d-flex align-items-center cursor-pointer\" (click)=\"sortData('userName')\">\r\n <span class=\"ms-2 me-1\">User</span>\r\n <span *ngIf=\"sortColumName === 'userName' && sortBy !== 1 || sortColumName !== 'userName' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'userName' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('email')\">Email\r\n <span *ngIf=\"sortColumName === 'email' && sortBy !== 1 || sortColumName !== 'email' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'email' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div></th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('assigned')\">Store Count\r\n <span *ngIf=\"sortColumName === 'assigned' && sortBy !== 1 || sortColumName !== 'assigned' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'assigned' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of emailuserList?.result\">\r\n <td>\r\n <div class=\"d-flex align-items-center\">\r\n <input type=\"checkbox\" class=\"me-5\" [(ngModel)]=\"item.infraAlert\" (change)=\"selectItems($event, item)\">\r\n <div>\r\n {{ item?.userName ? item?.userName : 'NA' }}\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div>{{ item?.email ? item?.email :'NA' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"text-title text-primary cursor-pointer text-decoration-underline mb-1\" (click)=\"storeDetails(item?.assignedValue,item?.userName,item?.email)\">{{ item?.assigned }}</div></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"limit\" [currentPage]=\"offset\"\r\n [totalItems]=\"emailuserList?.count\" [paginationSizes]=\"[10,20,30]\" [pageSize]=\"limit\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n <div>\r\n\r\n <div class=\"mt-10 d-flex justify-content-end\">\r\n <button class=\"btn btn-outline btn-default me-3\" (click)=\"cancelSelectedItems()\">\r\n Cancel\r\n </button>\r\n <button class=\"btn btn-primary btn-default\" (click)=\"updateSelectedItems()\">\r\n Save Chages\r\n </button>\r\n </div> \r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div> \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"p-8 card-title\">\r\n <div class=\"title\">\r\n Stores List of the user\r\n </div>\r\n <div class=\"d-flex align-items-center mt-10 mb-10\">\r\n <div class=\"rounded-5 profile d-flex align-items-center justify-content-center fw-semibold\">{{Email.slice(0,2) | uppercase}}</div>\r\n <div class=\"ms-3\">\r\n <div class=\"title1 mb-1 fw-bold\">{{userName}}</div>\r\n <div class=\"text-sub\">{{Email}}</div>\r\n </div>\r\n </div>\r\n <div class=\"mt-5 border border-gray border-1 rounded-3 p-5\">\r\n <span *ngFor=\"let list of storeList\" class=\"badge badge-light-default me-3\">{{list?.storeName}}</span>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-100\" (click)=\"modal.dismiss()\">Close</button>\r\n </div>\r\n </div>\r\n </ng-template>", styles: [".nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.items{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.img-src{width:25%!important}tr{vertical-align:middle!important}.card-title .title{color:var(--Gray-900, #101828);font-size:18px;font-weight:600;line-height:28px}.card-title .sub-title{color:var(--Gray-500, #667085);font-size:12px;font-weight:400;line-height:18px}input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.timingtext{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.disabled-list{pointer-events:none;opacity:.5}.profile{color:var(--Primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF);font-size:14px;line-height:20px;width:40px;height:40px}.title1{color:var(--Gray-700, #344054);font-size:14px!important;line-height:20px}.text-sub{color:var(--Gray-500, #667085);line-height:20px;font-weight:400}table tr{vertical-align:middle!important;padding-top:16px;padding-bottom:16px}table td .text-sub{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "pipe", type: i4.UpperCasePipe, name: "uppercase" }] });
|
|
204
204
|
}
|
|
205
205
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EmailConfigurationComponent, decorators: [{
|
|
206
206
|
type: Component,
|
|
207
|
-
args: [{ selector: 'lib-email-configuration', template: "\r\n<div class=\"mb-5 py-3 px-5\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap mb-10\">\r\n <li class=\"nav-item\" (click)=\"Selectedtabs('Infra Report')\">\r\n <a \r\n [ngClass]=\"SelectedTab === 'Infra Report' ? 'active' : ''\" class=\"nav-link cursor-pointer no-border me-3\">\r\n Infra Report\r\n </a>\r\n </li>\r\n <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('Data Report')\">\r\n <a \r\n [ngClass]=\"SelectedTab === 'Data Report' ? 'active' : ''\" class=\"nav-link cursor-pointer no-border me-3\">\r\n Data Report\r\n </a>\r\n </li> \r\n <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('Insight Report')\">\r\n <a [ngClass]=\"SelectedTab ==='Insight Report' ? 'active' :''\" class=\"nav-link cursor-pointer me-3\">Insight Report</a>\r\n </li>\r\n <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('All')\"><a [ngClass]=\"SelectedTab ==='All' ? 'active' :''\"\r\n class=\"nav-link cursor-pointer no-border me-3\">All</a>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"w-100 d-flex align-items-center\">\r\n <span class=\"timingtext fw-bold\">Send Daily Report at</span> <span> <input type=\"time\" [(ngModel)]=\"startTime\" class=\"form-control w-auto mx-5\"></span><span class=\"timingtext fw-bold\">and</span><span><input type=\"time\" [(ngModel)]=\"endTime\" class=\"form-control w-auto mx-5\"></span>\r\n </div>\r\n</div>\r\n<div class=\"card\">\r\n <div class=\"card-header border-0\">\r\n <div class=\"card-title d-grid\">\r\n <div class=\"title fw-bold\">Users List</div>\r\n <div class=\"sub-title\">Select your required email & schedule the mail timing accordingly</div>\r\n </div>\r\n <div class=\"card-toolbar\"> \r\n <input type=\"text\" class=\"form-control w-auto ps-3 me-2\" placeholder=\"Search\"\r\n autocomplete=\"off\" [(ngModel)]=\"searchInstallation\"\r\n (change)=\"searchInstallationTable()\" />\r\n <div class=\"position-relative w-150px mt-5 mb-5 ms-2\">\r\n <button type=\"button\" (click)=\"openDropdown($event)\"\r\n class=\"btn btn-default w-100 btn-outline btn-outline-default rounded-3 text-nowrap border-val d-flex justify-content-between\">\r\n {{selectedRole ? selectedRole : dropdownItems[0]}}\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </button>\r\n <div *ngIf=\"dropDown\" class=\"card py-1 w-100 position-absolute z-1 top-50px end-0\">\r\n <ul *ngFor=\"let item of dropdownItems\" class=\"list-unstyled\">\r\n <li [ngClass]=\"selectedRole === item ? 'active' : ''\"\r\n class=\"camera px-5 items fw-semibold cursor-pointer py-2\"\r\n (click)=\"selectItem(item)\">{{item}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div *ngIf=\"!loading && !noData \">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <div class=\"d-flex align-items-center\">\r\n <input type=\"checkbox\" id=\"selectAllCheckbox\" (change)=\"selectAll($event)\">\r\n <div class=\"d-flex align-items-center cursor-pointer\" (click)=\"sortData('userName')\">\r\n <span class=\"ms-2 me-1\">User</span>\r\n <span *ngIf=\"sortColumName === 'userName' && sortBy !== 1 || sortColumName !== 'userName' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'userName' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('email')\">Email\r\n <span *ngIf=\"sortColumName === 'email' && sortBy !== 1 || sortColumName !== 'email' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'email' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div></th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('assigned')\">Store Count\r\n <span *ngIf=\"sortColumName === 'assigned' && sortBy !== 1 || sortColumName !== 'assigned' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'assigned' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of emailuserList?.result\">\r\n <td>\r\n <div class=\"d-flex align-items-center\">\r\n <input type=\"checkbox\" class=\"me-5\" [(ngModel)]=\"item.infraAlert\" (change)=\"selectItems($event, item)\">\r\n <div>\r\n {{ item?.userName ? item?.userName : 'NA' }}\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div>{{ item?.email ? item?.email :'NA' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"text-title text-primary cursor-pointer text-decoration-underline mb-1\" (click)=\"storeDetails(item?.assignedValue,item?.userName,item?.email)\">{{ item?.assigned }}</div></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"limit\" [currentPage]=\"offset\"\r\n [totalItems]=\"emailuserList?.count\" [paginationSizes]=\"[10,20,30]\" [pageSize]=\"limit\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n <div>\r\n\r\n <div class=\"mt-10 d-flex justify-content-end\">\r\n <button class=\"btn btn-outline btn-default me-3\" (click)=\"cancelSelectedItems()\">\r\n Cancel\r\n </button>\r\n <button class=\"btn btn-primary btn-default\" (click)=\"updateSelectedItems()\">\r\n Save Chages\r\n </button>\r\n </div> \r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div> \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"p-8 card-title\">\r\n <div class=\"title\">\r\n Stores List of the user\r\n </div>\r\n <div class=\"d-flex align-items-center mt-10 mb-10\">\r\n <div class=\"rounded-5 profile d-flex align-items-center justify-content-center fw-semibold\">{{Email.slice(0,2) | uppercase}}</div>\r\n <div class=\"ms-3\">\r\n <div class=\"title1 mb-1 fw-bold\">{{userName}}</div>\r\n <div class=\"text-sub\">{{Email}}</div>\r\n </div>\r\n </div>\r\n <div class=\"mt-5 border border-gray border-1 rounded-3 p-5\">\r\n <span *ngFor=\"let list of storeList\" class=\"badge badge-light-default me-3\">{{list?.storeName}}</span>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-100\" (click)=\"modal.dismiss()\">Close</button>\r\n </div>\r\n </div>\r\n </ng-template>", styles: [".nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.items{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.img-src{width:25%!important}tr{vertical-align:middle!important}.card-title .title{color:var(--Gray-900, #101828);font-size:18px;font-weight:600;line-height:28px}.card-title .sub-title{color:var(--Gray-500, #667085);font-size:12px;font-weight:400;line-height:18px}input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.timingtext{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.disabled-list{pointer-events:none;opacity:.5}.profile{color:var(--Primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF);font-size:14px;line-height:20px;width:40px;height:40px}.title1{color:var(--Gray-700, #344054);font-size:14px!important;line-height:20px}.text-sub{color:var(--Gray-500, #667085);line-height:20px;font-weight:400}table tr{vertical-align:middle!important;padding-top:16px;padding-bottom:16px}table td .text-sub{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}\n"] }]
|
|
207
|
+
args: [{ selector: 'lib-email-configuration', template: "\r\n<div class=\"mb-5 py-3 px-5\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap mb-10\">\r\n <li class=\"nav-item\" (click)=\"Selectedtabs('Infra Report')\">\r\n <a \r\n [ngClass]=\"SelectedTab === 'Infra Report' ? 'active' : ''\" class=\"nav-link cursor-pointer no-border me-3\">\r\n Infra Report\r\n </a>\r\n </li>\r\n <!-- <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('Data Report')\">\r\n <a \r\n [ngClass]=\"SelectedTab === 'Data Report' ? 'active' : ''\" class=\"nav-link cursor-pointer no-border me-3\">\r\n Data Report\r\n </a>\r\n </li> \r\n <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('Insight Report')\">\r\n <a [ngClass]=\"SelectedTab ==='Insight Report' ? 'active' :''\" class=\"nav-link cursor-pointer me-3\">Insight Report</a>\r\n </li>\r\n <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('All')\"><a [ngClass]=\"SelectedTab ==='All' ? 'active' :''\"\r\n class=\"nav-link cursor-pointer no-border me-3\">All</a>\r\n </li> -->\r\n </ul>\r\n\r\n <div class=\"w-100 d-flex align-items-center\">\r\n <span class=\"timingtext fw-bold\">Send Daily Report at</span> <span> <input type=\"time\" [(ngModel)]=\"startTime\" class=\"form-control w-auto mx-5\"></span><span class=\"timingtext fw-bold\">and</span><span><input type=\"time\" [(ngModel)]=\"endTime\" class=\"form-control w-auto mx-5\"></span>\r\n </div>\r\n</div>\r\n<div class=\"card\">\r\n <div class=\"card-header border-0\">\r\n <div class=\"card-title d-grid\">\r\n <div class=\"title fw-bold\">Users List</div>\r\n <div class=\"sub-title\">Select your required email & schedule the mail timing accordingly</div>\r\n </div>\r\n <div class=\"card-toolbar\"> \r\n <input type=\"text\" class=\"form-control w-auto ps-3 me-2\" placeholder=\"Search\"\r\n autocomplete=\"off\" [(ngModel)]=\"searchInstallation\"\r\n (change)=\"searchInstallationTable()\" />\r\n <div class=\"position-relative w-150px mt-5 mb-5 ms-2\">\r\n <button type=\"button\" (click)=\"openDropdown($event)\"\r\n class=\"btn btn-default w-100 btn-outline btn-outline-default rounded-3 text-nowrap border-val d-flex justify-content-between\">\r\n {{selectedRole ? selectedRole : dropdownItems[0]}}\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </button>\r\n <div *ngIf=\"dropDown\" class=\"card py-1 w-100 position-absolute z-1 top-50px end-0\">\r\n <ul *ngFor=\"let item of dropdownItems\" class=\"list-unstyled\">\r\n <li [ngClass]=\"selectedRole === item ? 'active' : ''\"\r\n class=\"camera px-5 items fw-semibold cursor-pointer py-2\"\r\n (click)=\"selectItem(item)\">{{item}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div *ngIf=\"!loading && !noData \">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <div class=\"d-flex align-items-center\">\r\n <input type=\"checkbox\" id=\"selectAllCheckbox\" (change)=\"selectAll($event)\">\r\n <div class=\"d-flex align-items-center cursor-pointer\" (click)=\"sortData('userName')\">\r\n <span class=\"ms-2 me-1\">User</span>\r\n <span *ngIf=\"sortColumName === 'userName' && sortBy !== 1 || sortColumName !== 'userName' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'userName' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('email')\">Email\r\n <span *ngIf=\"sortColumName === 'email' && sortBy !== 1 || sortColumName !== 'email' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'email' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div></th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('assigned')\">Store Count\r\n <span *ngIf=\"sortColumName === 'assigned' && sortBy !== 1 || sortColumName !== 'assigned' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'assigned' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of emailuserList?.result\">\r\n <td>\r\n <div class=\"d-flex align-items-center\">\r\n <input type=\"checkbox\" class=\"me-5\" [(ngModel)]=\"item.infraAlert\" (change)=\"selectItems($event, item)\">\r\n <div>\r\n {{ item?.userName ? item?.userName : 'NA' }}\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div>{{ item?.email ? item?.email :'NA' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"text-title text-primary cursor-pointer text-decoration-underline mb-1\" (click)=\"storeDetails(item?.assignedValue,item?.userName,item?.email)\">{{ item?.assigned }}</div></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"limit\" [currentPage]=\"offset\"\r\n [totalItems]=\"emailuserList?.count\" [paginationSizes]=\"[10,20,30]\" [pageSize]=\"limit\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n <div>\r\n\r\n <div class=\"mt-10 d-flex justify-content-end\">\r\n <button class=\"btn btn-outline btn-default me-3\" (click)=\"cancelSelectedItems()\">\r\n Cancel\r\n </button>\r\n <button class=\"btn btn-primary btn-default\" (click)=\"updateSelectedItems()\">\r\n Save Chages\r\n </button>\r\n </div> \r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div> \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"p-8 card-title\">\r\n <div class=\"title\">\r\n Stores List of the user\r\n </div>\r\n <div class=\"d-flex align-items-center mt-10 mb-10\">\r\n <div class=\"rounded-5 profile d-flex align-items-center justify-content-center fw-semibold\">{{Email.slice(0,2) | uppercase}}</div>\r\n <div class=\"ms-3\">\r\n <div class=\"title1 mb-1 fw-bold\">{{userName}}</div>\r\n <div class=\"text-sub\">{{Email}}</div>\r\n </div>\r\n </div>\r\n <div class=\"mt-5 border border-gray border-1 rounded-3 p-5\">\r\n <span *ngFor=\"let list of storeList\" class=\"badge badge-light-default me-3\">{{list?.storeName}}</span>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-100\" (click)=\"modal.dismiss()\">Close</button>\r\n </div>\r\n </div>\r\n </ng-template>", styles: [".nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.items{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.img-src{width:25%!important}tr{vertical-align:middle!important}.card-title .title{color:var(--Gray-900, #101828);font-size:18px;font-weight:600;line-height:28px}.card-title .sub-title{color:var(--Gray-500, #667085);font-size:12px;font-weight:400;line-height:18px}input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.timingtext{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.disabled-list{pointer-events:none;opacity:.5}.profile{color:var(--Primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF);font-size:14px;line-height:20px;width:40px;height:40px}.title1{color:var(--Gray-700, #344054);font-size:14px!important;line-height:20px}.text-sub{color:var(--Gray-500, #667085);line-height:20px;font-weight:400}table tr{vertical-align:middle!important;padding-top:16px;padding-bottom:16px}table td .text-sub{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}\n"] }]
|
|
208
208
|
}], ctorParameters: () => [{ type: i1.NgbModal }, { type: i2.ToastService }, { type: i0.ChangeDetectorRef }, { type: i3.ClientApiService }], propDecorators: { confirmationModal: [{
|
|
209
209
|
type: ViewChild,
|
|
210
210
|
args: ['confirmationModal']
|
|
@@ -212,4 +212,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
212
212
|
type: HostListener,
|
|
213
213
|
args: ['document:click', ['$event']]
|
|
214
214
|
}] } });
|
|
215
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwtY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb25zL2VtYWlsLWNvbmZpZ3VyYXRpb24vZW1haWwtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb25zL2VtYWlsLWNvbmZpZ3VyYXRpb24vZW1haWwtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFTLFlBQVksRUFBQyxTQUFTLEVBQThCLE1BQU0sZUFBZSxDQUFDO0FBR3JHLE9BQU8sRUFBRSxPQUFPLEVBQU8sU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBUS9DLE1BQU0sT0FBTywyQkFBMkI7SUFvQ2xCO0lBQStCO0lBQzVDO0lBQTZCO0lBbkNKLGlCQUFpQixDQUFNO0lBQ3ZELFFBQVEsQ0FBMEI7SUFDbEMsV0FBVyxHQUFLLGNBQWMsQ0FBQTtJQUM5QixTQUFTLENBQUs7SUFDZCxPQUFPLENBQUs7SUFDWixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLGFBQWEsR0FBUyxDQUFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsYUFBYSxDQUFDLENBQUE7SUFDcEQsWUFBWSxHQUFPLE9BQU8sQ0FBRTtJQUM1QixNQUFNLEdBQU8sQ0FBQyxDQUFDO0lBQ2YsS0FBSyxHQUFPLEVBQUUsQ0FBQztJQUNmLE1BQU0sR0FBTyxDQUFDLENBQUMsQ0FBQztJQUNoQixhQUFhLENBQUs7SUFDbEIsVUFBVSxDQUFLO0lBQ2Ysa0JBQWtCLENBQU07SUFDeEIsTUFBTSxDQUFN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bUJBQW1CO2dCQTBCOUIsT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsSG9zdExpc3RlbmVyLFZpZXdDaGlsZCxDaGFuZ2VEZXRlY3RvclJlZixPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwsTmdiTW9kYWxSZWYgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IENsaWVudEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jbGllbnQtYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWVtYWlsLWNvbmZpZ3VyYXRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lbWFpbC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZW1haWwtY29uZmlndXJhdGlvbi5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEVtYWlsQ29uZmlndXJhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCxPbkRlc3Ryb3kge1xyXG5cclxuICBAVmlld0NoaWxkKCdjb25maXJtYXRpb25Nb2RhbCcpIGNvbmZpcm1hdGlvbk1vZGFsOiBhbnk7XHJcbiAgbW9kYWxSZWY6IE5nYk1vZGFsUmVmIHwgdW5kZWZpbmVkO1xyXG4gIFNlbGVjdGVkVGFiOmFueT0nSW5mcmEgUmVwb3J0J1xyXG4gIHN0YXJ0VGltZTphbnk7XHJcbiAgZW5kVGltZTphbnk7XHJcbiAgZHJvcERvd246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkcm9wZG93bkl0ZW1zOmFueVtdID0gWydBZG1pbicsJ1VzZXInLCdTdXBlciBBZG1pbiddXHJcbiAgc2VsZWN0ZWRSb2xlOmFueSA9ICdBZG1pbicgO1xyXG4gIG9mZnNldDphbnkgPSAwO1xyXG4gIGxpbWl0OmFueSA9IDEwO1xyXG4gIHNvcnRCeTphbnkgPSAtMTtcclxuICBzb3J0Q29sdW1OYW1lOmFueTtcclxuICB0b3RhbENvdW50OmFueTtcclxuICBzZWFyY2hJbnN0YWxsYXRpb246IGFueTtcclxuICBub0RhdGE6IGFueTtcclxuICBsb2FkaW5nOiBhbnk7XHJcbiAgc2VsZWN0ZWRJdGVtczogYW55O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGVtYWlsdXNlckxpc3Q6IGFueTtcclxuICBkdW1teUVtYWlsTGlzdDphbnk7XHJcbiAgY2xpZW50SWQ6IGFueTtcclxuICBzdG9yZUxpc3Q6IGFueTtcclxuICBFbWFpbDogYW55O1xyXG4gIHVzZXJOYW1lOiBhbnk7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBjb25zdFxyXG4gICAgICB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAoIXRhcmdldC5jbG9zZXN0KCcuZHJvcGRvd24nKSkge1xyXG4gICAgICB0aGlzLmRyb3BEb3duID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwscHJpdmF0ZSB0b2FzdDpUb2FzdFNlcnZpY2UsXHJcbiBwcml2YXRlIGNkOkNoYW5nZURldGVjdG9yUmVmLHByaXZhdGUgc2VydmljZTogQ2xpZW50QXBpU2VydmljZSl7XHJcbiAgdGhpcy5zZXJ2aWNlLmNsaWVudERhdGEucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgaWYgKGUpIHtcclxuICAgICAgdGhpcy5jbGllbnRJZCA9IGUuY2xpZW50SWRcclxuICAgIH1cclxuICB9KVxyXG4gICAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgICAgdGhpcy5TZWxlY3RlZHRhYnModGhpcy5TZWxlY3RlZFRhYik7IFxyXG4gICAgICAgICAgdGhpcy5nZXRCcmFuZERldGFpbHMoKTtcclxuICAgICAgICAgIHRoaXMudXNlckxpc3QoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWxsKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGNoZWNrZWQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcclxuICAgIHRoaXMuZW1haWx1c2VyTGlzdD8ucmVzdWx0LmZvckVhY2goKGl0ZW06YW55KSA9PiB7XHJcbiAgICAgICAgaWYoY2hlY2tlZCl7XHJcbiAgICAgICAgICBpdGVtLmluZnJhQWxlcnQgPSBjaGVja2VkO1xyXG4gICAgICAgIC8vICB0aGlzLnVwZGF0ZVNlbGVjdGVkSXRlbXMoKTtcclxuICAgICAgICB9ZWxzZSB7aXRlbS5pbmZyYUFsZXJ0ID0gZmFsc2V9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0SXRlbXMoZXZlbnQ6IGFueSwgaXRlbTogYW55KSB7XHJcbiAgICBpdGVtLmluZnJhQWxlcnQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcclxuICAgIHRoaXMuY2hlY2tTZWxlY3RBbGwoKTtcclxuICAgIC8vIHRoaXMudXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tTZWxlY3RBbGwoKSB7XHJcbiAgICBjb25zdCBhbGxTZWxlY3RlZCA9IHRoaXMuZW1haWx1c2VyTGlzdD8ucmVzdWx0LmV2ZXJ5KChpdGVtOmFueSkgPT4gaXRlbS5pbmZyYUFsZXJ0KTtcclxuICAgIGNvbnN0IHNlbGVjdEFsbENoZWNrYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlbGVjdEFsbENoZWNrYm94JykgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmIChzZWxlY3RBbGxDaGVja2JveCkge1xyXG4gICAgICBzZWxlY3RBbGxDaGVja2JveC5jaGVja2VkID0gYWxsU2VsZWN0ZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTZWxlY3RlZEl0ZW1zKCkge1xyXG4gICAgaWYodGhpcy5lbmRUaW1lID4gdGhpcy5zdGFydFRpbWUpe1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLmVtYWlsdXNlckxpc3Q/LnJlc3VsdC5tYXAoKGl0ZW06YW55LGluZGV4OmFueSk9PntcclxuICAgICAgICByZXR1cm4ge2VtYWlsOml0ZW0uZW1haWwsaW5mcmFBbGVydDppdGVtLmluZnJhQWxlcnR9O1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy51cGRhdGVVc2VyTGlzdCgpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnSW52YWxpZCBUaW1lIFRha2VuJylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbmNlbFNlbGVjdGVkSXRlbXMoKXtcclxuICAgIHRoaXMuZW1haWx1c2VyTGlzdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5kdW1teUVtYWlsTGlzdCkpO1xyXG4gICAgdGhpcy5jaGVja1NlbGVjdEFsbCgpO1xyXG4gIH1cclxuXHJcbiAgU2VsZWN0ZWR0YWJzKHZhbHVlOmFueSl7XHJcbiAgICB0aGlzLlNlbGVjdGVkVGFiID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RJdGVtKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb2xlID0gdmFsdWU7XHJcbiAgICB0aGlzLmRyb3BEb3duID0gZmFsc2U7XHJcbiAgICB0aGlzLnVzZXJMaXN0KCk7XHJcbiAgICAvLyB0aGlzLnRhYmxlRGF0YS5maWx0ZXIgPSB0aGlzLnNlbGVjdGVkSXRlbSA9PT0gXCJBbGxcIiA/IFtdIDogdmFsdWVcclxuICB9XHJcblxyXG4gIG9wZW5Ecm9wZG93bihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmRyb3BEb3duID0gIXRoaXMuZHJvcERvd247XHJcbiAgfVxyXG4gIHNlYXJjaEluc3RhbGxhdGlvblRhYmxlKCkge1xyXG4gICAgICAgdGhpcy51c2VyTGlzdCgpXHJcbiAgfVxyXG5cclxuICBvblBhZ2VDaGFuZ2UocGFnZU9mZnNldDogYW55KSB7XHJcbiAgICB0aGlzLm9mZnNldCA9IHBhZ2VPZmZzZXQ7XHJcbiAgICB0aGlzLnVzZXJMaXN0KCk7XHJcbiAgXHJcbiAgfVxyXG4gIFxyXG4gIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IGFueSkge1xyXG4gICAgdGhpcy5saW1pdCA9IHBhZ2VTaXplO1xyXG4gICB0aGlzLnVzZXJMaXN0KCk7XHJcbiAgXHJcbiAgfVxyXG4gIHNvcnREYXRhKHZhbHVlOmFueSl7XHJcbiAgICB0aGlzLnNvcnRDb2x1bU5hbWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuc29ydEJ5ICo9IC0xO1xyXG4gICAgdGhpcy51c2VyTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgc3RvcmVEZXRhaWxzKG9iajphbnksZW1haWw6YW55LHVzZXJOYW1lOmFueSl7XHJcbiAgICB0aGlzLnN0b3JlTGlzdCA9IG9iajtcclxuICAgIHRoaXMuRW1haWwgPSBlbWFpbDtcclxuICAgIHRoaXMudXNlck5hbWUgPSB1c2VyTmFtZTtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLmNvbmZpcm1hdGlvbk1vZGFsLCB7IGNlbnRlcmVkOiB0cnVlIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QnJhbmREZXRhaWxzKCl7XHJcbiAgICAgdGhpcy5zZXJ2aWNlLmdldEJyYW5kRGV0YWlscyh0aGlzLmNsaWVudElkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OihyZXM6YW55KT0+e1xyXG4gICAgICAgIGlmKHJlcyYmcmVzLmNvZGU9PScyMDAnKXtcclxuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IHJlcz8uZGF0YT8udGlja2V0Q29uZmlncztcclxuICAgICAgICAgIHRoaXMuc3RhcnRUaW1lID0gcmVzcG9uc2VEYXRhPy5pbmZyYVJlcG9ydD8uc3RhcnQ7XHJcbiAgICAgICAgICB0aGlzLmVuZFRpbWUgPSByZXNwb25zZURhdGE/LmluZnJhUmVwb3J0Py5lbmQ7XHJcbiAgICAgICAgfWVsc2V7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6KGVycik9PntcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfSxcclxuICAgICB9KVxyXG4gIH1cclxuXHJcbiAgdXNlckxpc3QoKXtcclxuICAgICBsZXQgZGF0YSA9e1xyXG4gICAgICBcImNsaWVudElkXCI6dGhpcy5jbGllbnRJZCxcclxuICAgICAgXCJyb2xlXCI6dGhpcy5zZWxlY3RlZFJvbGUucmVwbGFjZSgnICcsJycpLnRvTG93ZXJDYXNlKCksXHJcbiAgICAgIFwic2VhcmNoVmFsdWVcIjp0aGlzLnNlYXJjaEluc3RhbGxhdGlvbixcclxuICAgICAgXCJzb3J0Q29sdW1OYW1lXCI6dGhpcy5zb3J0Q29sdW1OYW1lLFxyXG4gICAgICBcInNvcnRCeVwiOnRoaXMuc29ydEJ5LFxyXG4gICAgICBcInNraXBcIjp0aGlzLm9mZnNldCxcclxuICAgICAgXCJsaW1pdFwiOnRoaXMubGltaXRcclxuICAgICB9XHJcbiAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgIHRoaXMuc2VydmljZS5lbWFpbFVzZXJMaXN0KGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OihyZXM6YW55KT0+e1xyXG4gICAgICBpZihyZXMgJiYgcmVzLmNvZGU9PScyMDAnICYmIHJlcz8uZGF0YT8ucmVzdWx0Py5sZW5ndGgpe1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5lbWFpbHVzZXJMaXN0ID0gcmVzLmRhdGE7XHJcbiAgICAgICAgdGhpcy5kdW1teUVtYWlsTGlzdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5lbWFpbHVzZXJMaXN0KSlcclxuICAgICAgICBcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICB9LFxyXG4gICAgICBlcnJvcjooZXJyKT0+e1xyXG4gICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgfSlcclxuXHJcbiAgfVxyXG5cclxuICB1cGRhdGVVc2VyTGlzdCgpe1xyXG4gICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgIGNsaWVudElkOnRoaXMuY2xpZW50SWQsXHJcbiAgICAgIHN0YXJ0OiB0aGlzLnN0YXJ0VGltZSxcclxuICAgICAgZW5kOiB0aGlzLmVuZFRpbWUsXHJcbiAgICAgIFwidXNlckxpc3RcIjogdGhpcy5zZWxlY3RlZEl0ZW1zLFxyXG4gIH1cclxuICB0aGlzLnNlcnZpY2Uuc2F2ZUluZnJhRW1haWxDb25maWcoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OihyZXM6YW55KT0+e1xyXG4gICAgaWYocmVzICYmIHJlcy5jb2RlPT0nMjAwJyl7XHJcbiAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KHJlcz8ubWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgIH0sXHJcbiAgICBlcnJvcjooZXJyKT0+e1xyXG4gICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoZXJyPy5lcnJvcilcclxuICAgIH0sXHJcbiB9KVxyXG5cclxufVxyXG5cclxufVxyXG5cclxuIiwiXHJcbjxkaXYgY2xhc3M9XCJtYi01IHB5LTMgcHgtNVwiPlxyXG4gICAgPHVsIGNsYXNzPVwibmF2IG5hdi1zdHJldGNoIG5hdi1saW5lLXRhYnMxIG5hdi1saW5lLXRhYnMgYm9yZGVyLXRyYW5zcGFyZW50IGZsZXgtbm93cmFwIG1iLTEwXCI+XHJcbiAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiAoY2xpY2spPVwiU2VsZWN0ZWR0YWJzKCdJbmZyYSBSZXBvcnQnKVwiPlxyXG4gICAgICAgICAgICA8YSBcclxuICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiU2VsZWN0ZWRUYWIgPT09ICdJbmZyYSBSZXBvcnQnID8gJ2FjdGl2ZScgOiAnJ1wiIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXIgbm8tYm9yZGVyIG1lLTNcIj5cclxuICAgICAgICAgICAgICAgIEluZnJhIFJlcG9ydFxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBkaXNhYmxlZC1saXN0IFwiIChjbGljayk9XCJTZWxlY3RlZHRhYnMoJ0RhdGEgUmVwb3J0JylcIj5cclxuICAgICAgICAgICAgPGEgXHJcbiAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlNlbGVjdGVkVGFiID09PSAnRGF0YSBSZXBvcnQnID8gJ2FjdGl2ZScgOiAnJ1wiIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXIgbm8tYm9yZGVyIG1lLTNcIj5cclxuICAgICAgICAgICAgICAgIERhdGEgUmVwb3J0XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICA8L2xpPiAgICBcclxuICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBkaXNhYmxlZC1saXN0IFwiIChjbGljayk9XCJTZWxlY3RlZHRhYnMoJ0luc2lnaHQgUmVwb3J0JylcIj5cclxuICAgICAgICAgICAgPGEgW25nQ2xhc3NdPVwiU2VsZWN0ZWRUYWIgPT09J0luc2lnaHQgUmVwb3J0JyA/ICdhY3RpdmUnIDonJ1wiIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXIgbWUtM1wiPkluc2lnaHQgUmVwb3J0PC9hPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gZGlzYWJsZWQtbGlzdCBcIiAoY2xpY2spPVwiU2VsZWN0ZWR0YWJzKCdBbGwnKVwiPjxhIFtuZ0NsYXNzXT1cIlNlbGVjdGVkVGFiID09PSdBbGwnID8gJ2FjdGl2ZScgOicnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayBjdXJzb3ItcG9pbnRlciBuby1ib3JkZXIgbWUtM1wiPkFsbDwvYT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgPC91bD5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwidy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGltaW5ndGV4dCBmdy1ib2xkXCI+U2VuZCBEYWlseSBSZXBvcnQgYXQ8L3NwYW4+IDxzcGFuPiA8aW5wdXQgdHlwZT1cInRpbWVcIiBbKG5nTW9kZWwpXT1cInN0YXJ0VGltZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHctYXV0byBteC01XCI+PC9zcGFuPjxzcGFuIGNsYXNzPVwidGltaW5ndGV4dCBmdy1ib2xkXCI+YW5kPC9zcGFuPjxzcGFuPjxpbnB1dCB0eXBlPVwidGltZVwiIFsobmdNb2RlbCldPVwiZW5kVGltZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHctYXV0byBteC01XCI+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgZC1ncmlkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZSBmdy1ib2xkXCI+VXNlcnMgTGlzdDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLXRpdGxlXCI+U2VsZWN0IHlvdXIgcmVxdWlyZWQgZW1haWwgJiBzY2hlZHVsZSB0aGUgbWFpbCB0aW1pbmcgYWNjb3JkaW5nbHk8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+ICAgXHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHctYXV0byBwcy0zIG1lLTJcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFsobmdNb2RlbCldPVwic2VhcmNoSW5zdGFsbGF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZWFyY2hJbnN0YWxsYXRpb25UYWJsZSgpXCIgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIHctMTUwcHggbXQtNSBtYi01IG1zLTJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuRHJvcGRvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgdy0xMDAgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICB7e3NlbGVjdGVkUm9sZSA/IHNlbGVjdGVkUm9sZSA6IGRyb3Bkb3duSXRlbXNbMF19fVxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNSA3LjVMMTAgMTIuNUwxNSA3LjVcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZHJvcERvd25cIiBjbGFzcz1cImNhcmQgcHktMSB3LTEwMCBwb3NpdGlvbi1hYnNvbHV0ZSB6LTEgdG9wLTUwcHggZW5kLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZHJvcGRvd25JdGVtc1wiIGNsYXNzPVwibGlzdC11bnN0eWxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwic2VsZWN0ZWRSb2xlID09PSBpdGVtID8gJ2FjdGl2ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhbWVyYSBweC01IGl0ZW1zIGZ3LXNlbWlib2xkIGN1cnNvci1wb2ludGVyIHB5LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oaXRlbSlcIj57e2l0ZW19fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmcgJiYgIW5vRGF0YSBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cInNlbGVjdEFsbENoZWNrYm94XCIgKGNoYW5nZSk9XCJzZWxlY3RBbGwoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ3VzZXJOYW1lJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTIgbWUtMVwiPlVzZXI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAndXNlck5hbWUnICYmIHNvcnRCeSAhPT0gMSB8fCBzb3J0Q29sdW1OYW1lICE9PSAndXNlck5hbWUnIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMS4zMzMzN1YxMC42NjY3TTYuMDAwMTYgMTAuNjY2N0wxMC42NjY4IDYuMDAwMDRNNi4wMDAxNiAxMC42NjY3TDEuMzMzNSA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ3VzZXJOYW1lJyAmJiBzb3J0QnkgIT09IC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxMC42NjY3TDYuMDAwMTYgMS4zMzMzN002LjAwMDE2IDEuMzMzMzdMMS4zMzM1IDYuMDAwMDRNNi4wMDAxNiAxLjMzMzM3TDEwLjY2NjggNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRoPjxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnZW1haWwnKVwiPkVtYWlsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ2VtYWlsJyAmJiBzb3J0QnkgIT09IDEgfHwgc29ydENvbHVtTmFtZSAhPT0gJ2VtYWlsJyBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEuMzMzMzdWMTAuNjY2N002LjAwMDE2IDEwLjY2NjdMMTAuNjY2OCA2LjAwMDA0TTYuMDAwMTYgMTAuNjY2N0wxLjMzMzUgNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdlbWFpbCcgJiYgc29ydEJ5ICE9PSAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMTAuNjY2N0w2LjAwMDE2IDEuMzMzMzdNNi4wMDAxNiAxLjMzMzM3TDEuMzMzNSA2LjAwMDA0TTYuMDAwMTYgMS4zMzMzN0wxMC42NjY4IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0aD48ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2Fzc2lnbmVkJylcIj5TdG9yZSBDb3VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdhc3NpZ25lZCcgJiYgc29ydEJ5ICE9PSAxIHx8IHNvcnRDb2x1bU5hbWUgIT09ICdhc3NpZ25lZCcgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxLjMzMzM3VjEwLjY2NjdNNi4wMDAxNiAxMC42NjY3TDEwLjY2NjggNi4wMDAwNE02LjAwMDE2IDEwLjY2NjdMMS4zMzM1IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnYXNzaWduZWQnICYmIHNvcnRCeSAhPT0gLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEwLjY2NjdMNi4wMDAxNiAxLjMzMzM3TTYuMDAwMTYgMS4zMzMzN0wxLjMzMzUgNi4wMDAwNE02LjAwMDE2IDEuMzMzMzdMMTAuNjY2OCA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBlbWFpbHVzZXJMaXN0Py5yZXN1bHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJtZS01XCIgWyhuZ01vZGVsKV09XCJpdGVtLmluZnJhQWxlcnRcIiAoY2hhbmdlKT1cInNlbGVjdEl0ZW1zKCRldmVudCwgaXRlbSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0/LnVzZXJOYW1lID8gaXRlbT8udXNlck5hbWUgOiAnTkEnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGl0ZW0/LmVtYWlsID8gaXRlbT8uZW1haWwgOidOQScgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXRpdGxlIHRleHQtcHJpbWFyeSBjdXJzb3ItcG9pbnRlciB0ZXh0LWRlY29yYXRpb24tdW5kZXJsaW5lIG1iLTFcIiAoY2xpY2spPVwic3RvcmVEZXRhaWxzKGl0ZW0/LmFzc2lnbmVkVmFsdWUsaXRlbT8udXNlck5hbWUsaXRlbT8uZW1haWwpXCI+e3sgaXRlbT8uYXNzaWduZWQgfX08L2Rpdj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGxpYi1wYWdpbmF0aW9uIFtpdGVtc1BlclBhZ2VdPVwibGltaXRcIiBbY3VycmVudFBhZ2VdPVwib2Zmc2V0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwiZW1haWx1c2VyTGlzdD8uY291bnRcIiBbcGFnaW5hdGlvblNpemVzXT1cIlsxMCwyMCwzMF1cIiBbcGFnZVNpemVdPVwibGltaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG5cclxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0xMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBidG4tZGVmYXVsdCBtZS0zXCIgKGNsaWNrKT1cImNhbmNlbFNlbGVjdGVkSXRlbXMoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIENhbmNlbFxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1kZWZhdWx0XCIgKGNsaWNrKT1cInVwZGF0ZVNlbGVjdGVkSXRlbXMoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFNhdmUgQ2hhZ2VzXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgIDwvZGl2PiAgIFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJub0RhdGFcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjIHctMjVcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb25maXJtYXRpb25Nb2RhbCBsZXQtbW9kYWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwicC04IGNhcmQtdGl0bGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cclxuICAgICAgICAgICAgU3RvcmVzIExpc3Qgb2YgdGhlIHVzZXJcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtdC0xMCBtYi0xMFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm91bmRlZC01IHByb2ZpbGUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZ3LXNlbWlib2xkXCI+e3tFbWFpbC5zbGljZSgwLDIpIHwgdXBwZXJjYXNlfX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZTEgbWItMSBmdy1ib2xkXCI+e3t1c2VyTmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zdWJcIj57e0VtYWlsfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTUgYm9yZGVyIGJvcmRlci1ncmF5IGJvcmRlci0xIHJvdW5kZWQtMyBwLTVcIj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGxpc3Qgb2Ygc3RvcmVMaXN0XCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0IG1lLTNcIj57e2xpc3Q/LnN0b3JlTmFtZX19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMTBcIj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lIHctMTAwXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPkNsb3NlPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPiJdfQ==
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwtY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb25zL2VtYWlsLWNvbmZpZ3VyYXRpb24vZW1haWwtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb25zL2VtYWlsLWNvbmZpZ3VyYXRpb24vZW1haWwtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFTLFlBQVksRUFBQyxTQUFTLEVBQThCLE1BQU0sZUFBZSxDQUFDO0FBR3JHLE9BQU8sRUFBRSxPQUFPLEVBQU8sU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBUS9DLE1BQU0sT0FBTywyQkFBMkI7SUFvQ2xCO0lBQStCO0lBQzVDO0lBQTZCO0lBbkNKLGlCQUFpQixDQUFNO0lBQ3ZELFFBQVEsQ0FBMEI7SUFDbEMsV0FBVyxHQUFLLGNBQWMsQ0FBQTtJQUM5QixTQUFTLENBQUs7SUFDZCxPQUFPLENBQUs7SUFDWixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLGFBQWEsR0FBUyxDQUFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsYUFBYSxDQUFDLENBQUE7SUFDcEQsWUFBWSxHQUFPLGFBQWEsQ0FBRTtJQUNsQyxNQUFNLEdBQU8sQ0FBQyxDQUFDO0lBQ2YsS0FBSyxHQUFPLEVBQUUsQ0FBQztJQUNmLE1BQU0sR0FBTyxDQUFDLENBQUMsQ0FBQztJQUNoQixhQUFhLENBQUs7SUFDbEIsVUFBVSxDQUFLO0lBQ2Ysa0JBQWtCLENBQU07SUFDeEIsTUFBTSxDQUFN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bUJBQW1CO2dCQTBCOUIsT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsSG9zdExpc3RlbmVyLFZpZXdDaGlsZCxDaGFuZ2VEZXRlY3RvclJlZixPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwsTmdiTW9kYWxSZWYgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IENsaWVudEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jbGllbnQtYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWVtYWlsLWNvbmZpZ3VyYXRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lbWFpbC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZW1haWwtY29uZmlndXJhdGlvbi5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEVtYWlsQ29uZmlndXJhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCxPbkRlc3Ryb3kge1xyXG5cclxuICBAVmlld0NoaWxkKCdjb25maXJtYXRpb25Nb2RhbCcpIGNvbmZpcm1hdGlvbk1vZGFsOiBhbnk7XHJcbiAgbW9kYWxSZWY6IE5nYk1vZGFsUmVmIHwgdW5kZWZpbmVkO1xyXG4gIFNlbGVjdGVkVGFiOmFueT0nSW5mcmEgUmVwb3J0J1xyXG4gIHN0YXJ0VGltZTphbnk7XHJcbiAgZW5kVGltZTphbnk7XHJcbiAgZHJvcERvd246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkcm9wZG93bkl0ZW1zOmFueVtdID0gWydBZG1pbicsJ1VzZXInLCdTdXBlciBBZG1pbiddXHJcbiAgc2VsZWN0ZWRSb2xlOmFueSA9ICdTdXBlciBBZG1pbicgO1xyXG4gIG9mZnNldDphbnkgPSAxO1xyXG4gIGxpbWl0OmFueSA9IDEwO1xyXG4gIHNvcnRCeTphbnkgPSAtMTtcclxuICBzb3J0Q29sdW1OYW1lOmFueTtcclxuICB0b3RhbENvdW50OmFueTtcclxuICBzZWFyY2hJbnN0YWxsYXRpb246IGFueTtcclxuICBub0RhdGE6IGFueTtcclxuICBsb2FkaW5nOiBhbnk7XHJcbiAgc2VsZWN0ZWRJdGVtczogYW55O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGVtYWlsdXNlckxpc3Q6IGFueTtcclxuICBkdW1teUVtYWlsTGlzdDphbnk7XHJcbiAgY2xpZW50SWQ6IGFueTtcclxuICBzdG9yZUxpc3Q6IGFueTtcclxuICBFbWFpbDogYW55O1xyXG4gIHVzZXJOYW1lOiBhbnk7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBjb25zdFxyXG4gICAgICB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAoIXRhcmdldC5jbG9zZXN0KCcuZHJvcGRvd24nKSkge1xyXG4gICAgICB0aGlzLmRyb3BEb3duID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwscHJpdmF0ZSB0b2FzdDpUb2FzdFNlcnZpY2UsXHJcbiBwcml2YXRlIGNkOkNoYW5nZURldGVjdG9yUmVmLHByaXZhdGUgc2VydmljZTogQ2xpZW50QXBpU2VydmljZSl7XHJcbiAgdGhpcy5zZXJ2aWNlLmNsaWVudERhdGEucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgaWYgKGUpIHtcclxuICAgICAgdGhpcy5jbGllbnRJZCA9IGUuY2xpZW50SWRcclxuICAgIH1cclxuICB9KVxyXG4gICAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgICAgdGhpcy5TZWxlY3RlZHRhYnModGhpcy5TZWxlY3RlZFRhYik7IFxyXG4gICAgICAgICAgdGhpcy5nZXRCcmFuZERldGFpbHMoKTtcclxuICAgICAgICAgIHRoaXMudXNlckxpc3QoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWxsKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGNoZWNrZWQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcclxuICAgIHRoaXMuZW1haWx1c2VyTGlzdD8ucmVzdWx0LmZvckVhY2goKGl0ZW06YW55KSA9PiB7XHJcbiAgICAgICAgaWYoY2hlY2tlZCl7XHJcbiAgICAgICAgICBpdGVtLmluZnJhQWxlcnQgPSBjaGVja2VkO1xyXG4gICAgICAgIC8vICB0aGlzLnVwZGF0ZVNlbGVjdGVkSXRlbXMoKTtcclxuICAgICAgICB9ZWxzZSB7aXRlbS5pbmZyYUFsZXJ0ID0gZmFsc2V9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0SXRlbXMoZXZlbnQ6IGFueSwgaXRlbTogYW55KSB7XHJcbiAgICBpdGVtLmluZnJhQWxlcnQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcclxuICAgIHRoaXMuY2hlY2tTZWxlY3RBbGwoKTtcclxuICAgIC8vIHRoaXMudXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tTZWxlY3RBbGwoKSB7XHJcbiAgICBjb25zdCBhbGxTZWxlY3RlZCA9IHRoaXMuZW1haWx1c2VyTGlzdD8ucmVzdWx0LmV2ZXJ5KChpdGVtOmFueSkgPT4gaXRlbS5pbmZyYUFsZXJ0KTtcclxuICAgIGNvbnN0IHNlbGVjdEFsbENoZWNrYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlbGVjdEFsbENoZWNrYm94JykgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmIChzZWxlY3RBbGxDaGVja2JveCkge1xyXG4gICAgICBzZWxlY3RBbGxDaGVja2JveC5jaGVja2VkID0gYWxsU2VsZWN0ZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTZWxlY3RlZEl0ZW1zKCkge1xyXG4gICAgaWYodGhpcy5lbmRUaW1lID4gdGhpcy5zdGFydFRpbWUpe1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLmVtYWlsdXNlckxpc3Q/LnJlc3VsdC5tYXAoKGl0ZW06YW55LGluZGV4OmFueSk9PntcclxuICAgICAgICByZXR1cm4ge2VtYWlsOml0ZW0uZW1haWwsaW5mcmFBbGVydDppdGVtLmluZnJhQWxlcnR9O1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy51cGRhdGVVc2VyTGlzdCgpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnSW52YWxpZCBUaW1lIFRha2VuJylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbmNlbFNlbGVjdGVkSXRlbXMoKXtcclxuICAgIHRoaXMuZW1haWx1c2VyTGlzdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5kdW1teUVtYWlsTGlzdCkpO1xyXG4gICAgdGhpcy5jaGVja1NlbGVjdEFsbCgpO1xyXG4gIH1cclxuXHJcbiAgU2VsZWN0ZWR0YWJzKHZhbHVlOmFueSl7XHJcbiAgICB0aGlzLlNlbGVjdGVkVGFiID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RJdGVtKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb2xlID0gdmFsdWU7XHJcbiAgICB0aGlzLmRyb3BEb3duID0gZmFsc2U7XHJcbiAgICB0aGlzLnVzZXJMaXN0KCk7XHJcbiAgICAvLyB0aGlzLnRhYmxlRGF0YS5maWx0ZXIgPSB0aGlzLnNlbGVjdGVkSXRlbSA9PT0gXCJBbGxcIiA/IFtdIDogdmFsdWVcclxuICB9XHJcblxyXG4gIG9wZW5Ecm9wZG93bihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmRyb3BEb3duID0gIXRoaXMuZHJvcERvd247XHJcbiAgfVxyXG4gIHNlYXJjaEluc3RhbGxhdGlvblRhYmxlKCkge1xyXG4gICAgICAgdGhpcy51c2VyTGlzdCgpXHJcbiAgfVxyXG5cclxuICBvblBhZ2VDaGFuZ2UocGFnZU9mZnNldDogYW55KSB7XHJcbiAgICB0aGlzLm9mZnNldCA9IHBhZ2VPZmZzZXQ7XHJcbiAgICB0aGlzLnVzZXJMaXN0KCk7XHJcbiAgXHJcbiAgfVxyXG4gIFxyXG4gIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IGFueSkge1xyXG4gICAgdGhpcy5saW1pdCA9IHBhZ2VTaXplO1xyXG4gICB0aGlzLnVzZXJMaXN0KCk7XHJcbiAgXHJcbiAgfVxyXG4gIHNvcnREYXRhKHZhbHVlOmFueSl7XHJcbiAgICB0aGlzLnNvcnRDb2x1bU5hbWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuc29ydEJ5ICo9IC0xO1xyXG4gICAgdGhpcy51c2VyTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgc3RvcmVEZXRhaWxzKG9iajphbnksZW1haWw6YW55LHVzZXJOYW1lOmFueSl7XHJcbiAgICB0aGlzLnN0b3JlTGlzdCA9IG9iajtcclxuICAgIHRoaXMuRW1haWwgPSBlbWFpbDtcclxuICAgIHRoaXMudXNlck5hbWUgPSB1c2VyTmFtZTtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLmNvbmZpcm1hdGlvbk1vZGFsLCB7IGNlbnRlcmVkOiB0cnVlIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QnJhbmREZXRhaWxzKCl7XHJcbiAgICAgdGhpcy5zZXJ2aWNlLmdldEJyYW5kRGV0YWlscyh0aGlzLmNsaWVudElkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OihyZXM6YW55KT0+e1xyXG4gICAgICAgIGlmKHJlcyYmcmVzLmNvZGU9PScyMDAnKXtcclxuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IHJlcz8uZGF0YT8udGlja2V0Q29uZmlncztcclxuICAgICAgICAgIHRoaXMuc3RhcnRUaW1lID0gcmVzcG9uc2VEYXRhPy5pbmZyYVJlcG9ydD8uc3RhcnQ7XHJcbiAgICAgICAgICB0aGlzLmVuZFRpbWUgPSByZXNwb25zZURhdGE/LmluZnJhUmVwb3J0Py5lbmQ7XHJcbiAgICAgICAgfWVsc2V7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6KGVycik9PntcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfSxcclxuICAgICB9KVxyXG4gIH1cclxuXHJcbiAgdXNlckxpc3QoKXtcclxuICAgICBsZXQgZGF0YSA9e1xyXG4gICAgICBcImNsaWVudElkXCI6dGhpcy5jbGllbnRJZCxcclxuICAgICAgXCJyb2xlXCI6dGhpcy5zZWxlY3RlZFJvbGUucmVwbGFjZSgnICcsJycpLnRvTG93ZXJDYXNlKCksXHJcbiAgICAgIFwic2VhcmNoVmFsdWVcIjp0aGlzLnNlYXJjaEluc3RhbGxhdGlvbixcclxuICAgICAgXCJzb3J0Q29sdW1OYW1lXCI6dGhpcy5zb3J0Q29sdW1OYW1lLFxyXG4gICAgICBcInNvcnRCeVwiOnRoaXMuc29ydEJ5LFxyXG4gICAgICBcIm9mZnNldFwiOnRoaXMub2Zmc2V0LFxyXG4gICAgICBcImxpbWl0XCI6dGhpcy5saW1pdFxyXG4gICAgIH1cclxuICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgdGhpcy5zZXJ2aWNlLmVtYWlsVXNlckxpc3QoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6KHJlczphbnkpPT57XHJcbiAgICAgIGlmKHJlcyAmJiByZXMuY29kZT09JzIwMCcgJiYgcmVzPy5kYXRhPy5yZXN1bHQ/Lmxlbmd0aCl7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmVtYWlsdXNlckxpc3QgPSByZXMuZGF0YTtcclxuICAgICAgICB0aGlzLmR1bW15RW1haWxMaXN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmVtYWlsdXNlckxpc3QpKVxyXG4gICAgICAgIFxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgIH0sXHJcbiAgICAgIGVycm9yOihlcnIpPT57XHJcbiAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICB9KVxyXG5cclxuICB9XHJcblxyXG4gIHVwZGF0ZVVzZXJMaXN0KCl7XHJcbiAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgY2xpZW50SWQ6dGhpcy5jbGllbnRJZCxcclxuICAgICAgc3RhcnQ6IHRoaXMuc3RhcnRUaW1lLFxyXG4gICAgICBlbmQ6IHRoaXMuZW5kVGltZSxcclxuICAgICAgXCJ1c2VyTGlzdFwiOiB0aGlzLnNlbGVjdGVkSXRlbXMsXHJcbiAgfVxyXG4gIHRoaXMuc2VydmljZS5zYXZlSW5mcmFFbWFpbENvbmZpZyhkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgIG5leHQ6KHJlczphbnkpPT57XHJcbiAgICBpZihyZXMgJiYgcmVzLmNvZGU9PScyMDAnKXtcclxuICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QocmVzPy5tZXNzYWdlKTtcclxuICAgIH1cclxuICAgfSxcclxuICAgIGVycm9yOihlcnIpPT57XHJcbiAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yKVxyXG4gICAgfSxcclxuIH0pXHJcblxyXG59XHJcblxyXG59XHJcblxyXG4iLCJcclxuPGRpdiBjbGFzcz1cIm1iLTUgcHktMyBweC01XCI+XHJcbiAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFiczEgbmF2LWxpbmUtdGFicyBib3JkZXItdHJhbnNwYXJlbnQgZmxleC1ub3dyYXAgbWItMTBcIj5cclxuICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiIChjbGljayk9XCJTZWxlY3RlZHRhYnMoJ0luZnJhIFJlcG9ydCcpXCI+XHJcbiAgICAgICAgICAgIDxhIFxyXG4gICAgICAgICAgICAgICBbbmdDbGFzc109XCJTZWxlY3RlZFRhYiA9PT0gJ0luZnJhIFJlcG9ydCcgPyAnYWN0aXZlJyA6ICcnXCIgY2xhc3M9XCJuYXYtbGluayBjdXJzb3ItcG9pbnRlciBuby1ib3JkZXIgbWUtM1wiPlxyXG4gICAgICAgICAgICAgICAgSW5mcmEgUmVwb3J0XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwhLS0gPGxpIGNsYXNzPVwibmF2LWl0ZW0gZGlzYWJsZWQtbGlzdCBcIiAoY2xpY2spPVwiU2VsZWN0ZWR0YWJzKCdEYXRhIFJlcG9ydCcpXCI+XHJcbiAgICAgICAgICAgIDxhIFxyXG4gICAgICAgICAgICAgICBbbmdDbGFzc109XCJTZWxlY3RlZFRhYiA9PT0gJ0RhdGEgUmVwb3J0JyA/ICdhY3RpdmUnIDogJydcIiBjbGFzcz1cIm5hdi1saW5rIGN1cnNvci1wb2ludGVyIG5vLWJvcmRlciBtZS0zXCI+XHJcbiAgICAgICAgICAgICAgICBEYXRhIFJlcG9ydFxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9saT4gICAgXHJcbiAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gZGlzYWJsZWQtbGlzdCBcIiAoY2xpY2spPVwiU2VsZWN0ZWR0YWJzKCdJbnNpZ2h0IFJlcG9ydCcpXCI+XHJcbiAgICAgICAgICAgIDxhIFtuZ0NsYXNzXT1cIlNlbGVjdGVkVGFiID09PSdJbnNpZ2h0IFJlcG9ydCcgPyAnYWN0aXZlJyA6JydcIiBjbGFzcz1cIm5hdi1saW5rIGN1cnNvci1wb2ludGVyIG1lLTNcIj5JbnNpZ2h0IFJlcG9ydDwvYT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIGRpc2FibGVkLWxpc3QgXCIgKGNsaWNrKT1cIlNlbGVjdGVkdGFicygnQWxsJylcIj48YSBbbmdDbGFzc109XCJTZWxlY3RlZFRhYiA9PT0nQWxsJyA/ICdhY3RpdmUnIDonJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXIgbm8tYm9yZGVyIG1lLTNcIj5BbGw8L2E+XHJcbiAgICAgICAgPC9saT4gLS0+XHJcbiAgICA8L3VsPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1pbmd0ZXh0IGZ3LWJvbGRcIj5TZW5kIERhaWx5IFJlcG9ydCBhdDwvc3Bhbj4gPHNwYW4+IDxpbnB1dCB0eXBlPVwidGltZVwiIFsobmdNb2RlbCldPVwic3RhcnRUaW1lXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdy1hdXRvIG14LTVcIj48L3NwYW4+PHNwYW4gY2xhc3M9XCJ0aW1pbmd0ZXh0IGZ3LWJvbGRcIj5hbmQ8L3NwYW4+PHNwYW4+PGlucHV0IHR5cGU9XCJ0aW1lXCIgWyhuZ01vZGVsKV09XCJlbmRUaW1lXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdy1hdXRvIG14LTVcIj48L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBkLWdyaWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlIGZ3LWJvbGRcIj5Vc2VycyBMaXN0PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGl0bGVcIj5TZWxlY3QgeW91ciByZXF1aXJlZCBlbWFpbCAmIHNjaGVkdWxlIHRoZSBtYWlsIHRpbWluZyBhY2NvcmRpbmdseTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj4gICBcclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdy1hdXRvIHBzLTMgbWUtMlwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hJbnN0YWxsYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlYXJjaEluc3RhbGxhdGlvblRhYmxlKClcIiAvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgdy0xNTBweCBtdC01IG1iLTUgbXMtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5Ecm9wZG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCB3LTEwMCBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7c2VsZWN0ZWRSb2xlID8gc2VsZWN0ZWRSb2xlIDogZHJvcGRvd25JdGVtc1swXX19XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01IDcuNUwxMCAxMi41TDE1IDcuNVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkcm9wRG93blwiIGNsYXNzPVwiY2FyZCBweS0xIHctMTAwIHBvc2l0aW9uLWFic29sdXRlIHotMSB0b3AtNTBweCBlbmQtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkcm9wZG93bkl0ZW1zXCIgY2xhc3M9XCJsaXN0LXVuc3R5bGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBbbmdDbGFzc109XCJzZWxlY3RlZFJvbGUgPT09IGl0ZW0gPyAnYWN0aXZlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FtZXJhIHB4LTUgaXRlbXMgZnctc2VtaWJvbGQgY3Vyc29yLXBvaW50ZXIgcHktMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SXRlbShpdGVtKVwiPnt7aXRlbX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhbG9hZGluZyAmJiAhbm9EYXRhIFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYm90dG9tLWJvcmRlciB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwic2VsZWN0QWxsQ2hlY2tib3hcIiAoY2hhbmdlKT1cInNlbGVjdEFsbCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgndXNlck5hbWUnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBtZS0xXCI+VXNlcjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICd1c2VyTmFtZScgJiYgc29ydEJ5ICE9PSAxIHx8IHNvcnRDb2x1bU5hbWUgIT09ICd1c2VyTmFtZScgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxLjMzMzM3VjEwLjY2NjdNNi4wMDAxNiAxMC42NjY3TDEwLjY2NjggNi4wMDAwNE02LjAwMDE2IDEwLjY2NjdMMS4zMzM1IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAndXNlck5hbWUnICYmIHNvcnRCeSAhPT0gLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEwLjY2NjdMNi4wMDAxNiAxLjMzMzM3TTYuMDAwMTYgMS4zMzMzN0wxLjMzMzUgNi4wMDAwNE02LjAwMDE2IDEuMzMzMzdMMTAuNjY2OCA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGg+PGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdlbWFpbCcpXCI+RW1haWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnZW1haWwnICYmIHNvcnRCeSAhPT0gMSB8fCBzb3J0Q29sdW1OYW1lICE9PSAnZW1haWwnIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMS4zMzMzN1YxMC42NjY3TTYuMDAwMTYgMTAuNjY2N0wxMC42NjY4IDYuMDAwMDRNNi4wMDAxNiAxMC42NjY3TDEuMzMzNSA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ2VtYWlsJyAmJiBzb3J0QnkgIT09IC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxMC42NjY3TDYuMDAwMTYgMS4zMzMzN002LjAwMDE2IDEuMzMzMzdMMS4zMzM1IDYuMDAwMDRNNi4wMDAxNiAxLjMzMzM3TDEwLjY2NjggNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRoPjxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnYXNzaWduZWQnKVwiPlN0b3JlIENvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ2Fzc2lnbmVkJyAmJiBzb3J0QnkgIT09IDEgfHwgc29ydENvbHVtTmFtZSAhPT0gJ2Fzc2lnbmVkJyBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEuMzMzMzdWMTAuNjY2N002LjAwMDE2IDEwLjY2NjdMMTAuNjY2OCA2LjAwMDA0TTYuMDAwMTYgMTAuNjY2N0wxLjMzMzUgNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdhc3NpZ25lZCcgJiYgc29ydEJ5ICE9PSAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMTAuNjY2N0w2LjAwMDE2IDEuMzMzMzdNNi4wMDAxNiAxLjMzMzM3TDEuMzMzNSA2LjAwMDA0TTYuMDAwMTYgMS4zMzMzN0wxMC42NjY4IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGVtYWlsdXNlckxpc3Q/LnJlc3VsdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cIm1lLTVcIiBbKG5nTW9kZWwpXT1cIml0ZW0uaW5mcmFBbGVydFwiIChjaGFuZ2UpPVwic2VsZWN0SXRlbXMoJGV2ZW50LCBpdGVtKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbT8udXNlck5hbWUgPyBpdGVtPy51c2VyTmFtZSA6ICdOQScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgaXRlbT8uZW1haWwgPyBpdGVtPy5lbWFpbCA6J05BJyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdGl0bGUgdGV4dC1wcmltYXJ5IGN1cnNvci1wb2ludGVyIHRleHQtZGVjb3JhdGlvbi11bmRlcmxpbmUgbWItMVwiIChjbGljayk9XCJzdG9yZURldGFpbHMoaXRlbT8uYXNzaWduZWRWYWx1ZSxpdGVtPy51c2VyTmFtZSxpdGVtPy5lbWFpbClcIj57eyBpdGVtPy5hc3NpZ25lZCB9fTwvZGl2PjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gW2l0ZW1zUGVyUGFnZV09XCJsaW1pdFwiIFtjdXJyZW50UGFnZV09XCJvZmZzZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG90YWxJdGVtc109XCJlbWFpbHVzZXJMaXN0Py5jb3VudFwiIFtwYWdpbmF0aW9uU2l6ZXNdPVwiWzEwLDIwLDMwXVwiIFtwYWdlU2l6ZV09XCJsaW1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCIgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcblxyXG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTEwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIGJ0bi1kZWZhdWx0IG1lLTNcIiAoY2xpY2spPVwiY2FuY2VsU2VsZWN0ZWRJdGVtcygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLWRlZmF1bHRcIiAoY2xpY2spPVwidXBkYXRlU2VsZWN0ZWRJdGVtcygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgU2F2ZSBDaGFnZXNcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgPC9kaXY+ICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICBcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vRGF0YVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgdy0yNVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbmZpcm1hdGlvbk1vZGFsIGxldC1tb2RhbD5cclxuICAgIDxkaXYgY2xhc3M9XCJwLTggY2FyZC10aXRsZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPlxyXG4gICAgICAgICAgICBTdG9yZXMgTGlzdCBvZiB0aGUgdXNlclxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG10LTEwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3VuZGVkLTUgcHJvZmlsZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZnctc2VtaWJvbGRcIj57e0VtYWlsLnNsaWNlKDAsMikgfCB1cHBlcmNhc2V9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlMSBtYi0xIGZ3LWJvbGRcIj57e3VzZXJOYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXN1YlwiPnt7RW1haWx9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNSBib3JkZXIgYm9yZGVyLWdyYXkgYm9yZGVyLTEgcm91bmRlZC0zIHAtNVwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgbGlzdCBvZiBzdG9yZUxpc3RcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgbWUtM1wiPnt7bGlzdD8uc3RvcmVOYW1lfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0xMFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmUgdy0xMDBcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+Il19
|
|
@@ -4283,8 +4283,8 @@ class EmailConfigurationComponent {
|
|
|
4283
4283
|
endTime;
|
|
4284
4284
|
dropDown = false;
|
|
4285
4285
|
dropdownItems = ['Admin', 'User', 'Super Admin'];
|
|
4286
|
-
selectedRole = 'Admin';
|
|
4287
|
-
offset =
|
|
4286
|
+
selectedRole = 'Super Admin';
|
|
4287
|
+
offset = 1;
|
|
4288
4288
|
limit = 10;
|
|
4289
4289
|
sortBy = -1;
|
|
4290
4290
|
sortColumName;
|
|
@@ -4422,7 +4422,7 @@ class EmailConfigurationComponent {
|
|
|
4422
4422
|
"searchValue": this.searchInstallation,
|
|
4423
4423
|
"sortColumName": this.sortColumName,
|
|
4424
4424
|
"sortBy": this.sortBy,
|
|
4425
|
-
"
|
|
4425
|
+
"offset": this.offset,
|
|
4426
4426
|
"limit": this.limit
|
|
4427
4427
|
};
|
|
4428
4428
|
this.loading = true;
|
|
@@ -4465,11 +4465,11 @@ class EmailConfigurationComponent {
|
|
|
4465
4465
|
});
|
|
4466
4466
|
}
|
|
4467
4467
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EmailConfigurationComponent, deps: [{ token: i1$2.NgbModal }, { token: i4$2.ToastService }, { token: i0.ChangeDetectorRef }, { token: ClientApiService }], target: i0.ɵɵFactoryTarget.Component });
|
|
4468
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: EmailConfigurationComponent, selector: "lib-email-configuration", host: { listeners: { "document:click": "onClick($event)" } }, viewQueries: [{ propertyName: "confirmationModal", first: true, predicate: ["confirmationModal"], descendants: true }], ngImport: i0, template: "\r\n<div class=\"mb-5 py-3 px-5\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap mb-10\">\r\n <li class=\"nav-item\" (click)=\"Selectedtabs('Infra Report')\">\r\n <a \r\n [ngClass]=\"SelectedTab === 'Infra Report' ? 'active' : ''\" class=\"nav-link cursor-pointer no-border me-3\">\r\n Infra Report\r\n </a>\r\n </li>\r\n <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('Data Report')\">\r\n <a \r\n [ngClass]=\"SelectedTab === 'Data Report' ? 'active' : ''\" class=\"nav-link cursor-pointer no-border me-3\">\r\n Data Report\r\n </a>\r\n </li> \r\n <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('Insight Report')\">\r\n <a [ngClass]=\"SelectedTab ==='Insight Report' ? 'active' :''\" class=\"nav-link cursor-pointer me-3\">Insight Report</a>\r\n </li>\r\n <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('All')\"><a [ngClass]=\"SelectedTab ==='All' ? 'active' :''\"\r\n class=\"nav-link cursor-pointer no-border me-3\">All</a>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"w-100 d-flex align-items-center\">\r\n <span class=\"timingtext fw-bold\">Send Daily Report at</span> <span> <input type=\"time\" [(ngModel)]=\"startTime\" class=\"form-control w-auto mx-5\"></span><span class=\"timingtext fw-bold\">and</span><span><input type=\"time\" [(ngModel)]=\"endTime\" class=\"form-control w-auto mx-5\"></span>\r\n </div>\r\n</div>\r\n<div class=\"card\">\r\n <div class=\"card-header border-0\">\r\n <div class=\"card-title d-grid\">\r\n <div class=\"title fw-bold\">Users List</div>\r\n <div class=\"sub-title\">Select your required email & schedule the mail timing accordingly</div>\r\n </div>\r\n <div class=\"card-toolbar\"> \r\n <input type=\"text\" class=\"form-control w-auto ps-3 me-2\" placeholder=\"Search\"\r\n autocomplete=\"off\" [(ngModel)]=\"searchInstallation\"\r\n (change)=\"searchInstallationTable()\" />\r\n <div class=\"position-relative w-150px mt-5 mb-5 ms-2\">\r\n <button type=\"button\" (click)=\"openDropdown($event)\"\r\n class=\"btn btn-default w-100 btn-outline btn-outline-default rounded-3 text-nowrap border-val d-flex justify-content-between\">\r\n {{selectedRole ? selectedRole : dropdownItems[0]}}\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </button>\r\n <div *ngIf=\"dropDown\" class=\"card py-1 w-100 position-absolute z-1 top-50px end-0\">\r\n <ul *ngFor=\"let item of dropdownItems\" class=\"list-unstyled\">\r\n <li [ngClass]=\"selectedRole === item ? 'active' : ''\"\r\n class=\"camera px-5 items fw-semibold cursor-pointer py-2\"\r\n (click)=\"selectItem(item)\">{{item}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div *ngIf=\"!loading && !noData \">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <div class=\"d-flex align-items-center\">\r\n <input type=\"checkbox\" id=\"selectAllCheckbox\" (change)=\"selectAll($event)\">\r\n <div class=\"d-flex align-items-center cursor-pointer\" (click)=\"sortData('userName')\">\r\n <span class=\"ms-2 me-1\">User</span>\r\n <span *ngIf=\"sortColumName === 'userName' && sortBy !== 1 || sortColumName !== 'userName' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'userName' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('email')\">Email\r\n <span *ngIf=\"sortColumName === 'email' && sortBy !== 1 || sortColumName !== 'email' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'email' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div></th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('assigned')\">Store Count\r\n <span *ngIf=\"sortColumName === 'assigned' && sortBy !== 1 || sortColumName !== 'assigned' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'assigned' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of emailuserList?.result\">\r\n <td>\r\n <div class=\"d-flex align-items-center\">\r\n <input type=\"checkbox\" class=\"me-5\" [(ngModel)]=\"item.infraAlert\" (change)=\"selectItems($event, item)\">\r\n <div>\r\n {{ item?.userName ? item?.userName : 'NA' }}\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div>{{ item?.email ? item?.email :'NA' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"text-title text-primary cursor-pointer text-decoration-underline mb-1\" (click)=\"storeDetails(item?.assignedValue,item?.userName,item?.email)\">{{ item?.assigned }}</div></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"limit\" [currentPage]=\"offset\"\r\n [totalItems]=\"emailuserList?.count\" [paginationSizes]=\"[10,20,30]\" [pageSize]=\"limit\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n <div>\r\n\r\n <div class=\"mt-10 d-flex justify-content-end\">\r\n <button class=\"btn btn-outline btn-default me-3\" (click)=\"cancelSelectedItems()\">\r\n Cancel\r\n </button>\r\n <button class=\"btn btn-primary btn-default\" (click)=\"updateSelectedItems()\">\r\n Save Chages\r\n </button>\r\n </div> \r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div> \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"p-8 card-title\">\r\n <div class=\"title\">\r\n Stores List of the user\r\n </div>\r\n <div class=\"d-flex align-items-center mt-10 mb-10\">\r\n <div class=\"rounded-5 profile d-flex align-items-center justify-content-center fw-semibold\">{{Email.slice(0,2) | uppercase}}</div>\r\n <div class=\"ms-3\">\r\n <div class=\"title1 mb-1 fw-bold\">{{userName}}</div>\r\n <div class=\"text-sub\">{{Email}}</div>\r\n </div>\r\n </div>\r\n <div class=\"mt-5 border border-gray border-1 rounded-3 p-5\">\r\n <span *ngFor=\"let list of storeList\" class=\"badge badge-light-default me-3\">{{list?.storeName}}</span>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-100\" (click)=\"modal.dismiss()\">Close</button>\r\n </div>\r\n </div>\r\n </ng-template>", styles: [".nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.items{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.img-src{width:25%!important}tr{vertical-align:middle!important}.card-title .title{color:var(--Gray-900, #101828);font-size:18px;font-weight:600;line-height:28px}.card-title .sub-title{color:var(--Gray-500, #667085);font-size:12px;font-weight:400;line-height:18px}input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.timingtext{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.disabled-list{pointer-events:none;opacity:.5}.profile{color:var(--Primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF);font-size:14px;line-height:20px;width:40px;height:40px}.title1{color:var(--Gray-700, #344054);font-size:14px!important;line-height:20px}.text-sub{color:var(--Gray-500, #667085);line-height:20px;font-weight:400}table tr{vertical-align:middle!important;padding-top:16px;padding-bottom:16px}table td .text-sub{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$2.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "pipe", type: i4.UpperCasePipe, name: "uppercase" }] });
|
|
4468
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: EmailConfigurationComponent, selector: "lib-email-configuration", host: { listeners: { "document:click": "onClick($event)" } }, viewQueries: [{ propertyName: "confirmationModal", first: true, predicate: ["confirmationModal"], descendants: true }], ngImport: i0, template: "\r\n<div class=\"mb-5 py-3 px-5\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap mb-10\">\r\n <li class=\"nav-item\" (click)=\"Selectedtabs('Infra Report')\">\r\n <a \r\n [ngClass]=\"SelectedTab === 'Infra Report' ? 'active' : ''\" class=\"nav-link cursor-pointer no-border me-3\">\r\n Infra Report\r\n </a>\r\n </li>\r\n <!-- <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('Data Report')\">\r\n <a \r\n [ngClass]=\"SelectedTab === 'Data Report' ? 'active' : ''\" class=\"nav-link cursor-pointer no-border me-3\">\r\n Data Report\r\n </a>\r\n </li> \r\n <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('Insight Report')\">\r\n <a [ngClass]=\"SelectedTab ==='Insight Report' ? 'active' :''\" class=\"nav-link cursor-pointer me-3\">Insight Report</a>\r\n </li>\r\n <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('All')\"><a [ngClass]=\"SelectedTab ==='All' ? 'active' :''\"\r\n class=\"nav-link cursor-pointer no-border me-3\">All</a>\r\n </li> -->\r\n </ul>\r\n\r\n <div class=\"w-100 d-flex align-items-center\">\r\n <span class=\"timingtext fw-bold\">Send Daily Report at</span> <span> <input type=\"time\" [(ngModel)]=\"startTime\" class=\"form-control w-auto mx-5\"></span><span class=\"timingtext fw-bold\">and</span><span><input type=\"time\" [(ngModel)]=\"endTime\" class=\"form-control w-auto mx-5\"></span>\r\n </div>\r\n</div>\r\n<div class=\"card\">\r\n <div class=\"card-header border-0\">\r\n <div class=\"card-title d-grid\">\r\n <div class=\"title fw-bold\">Users List</div>\r\n <div class=\"sub-title\">Select your required email & schedule the mail timing accordingly</div>\r\n </div>\r\n <div class=\"card-toolbar\"> \r\n <input type=\"text\" class=\"form-control w-auto ps-3 me-2\" placeholder=\"Search\"\r\n autocomplete=\"off\" [(ngModel)]=\"searchInstallation\"\r\n (change)=\"searchInstallationTable()\" />\r\n <div class=\"position-relative w-150px mt-5 mb-5 ms-2\">\r\n <button type=\"button\" (click)=\"openDropdown($event)\"\r\n class=\"btn btn-default w-100 btn-outline btn-outline-default rounded-3 text-nowrap border-val d-flex justify-content-between\">\r\n {{selectedRole ? selectedRole : dropdownItems[0]}}\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </button>\r\n <div *ngIf=\"dropDown\" class=\"card py-1 w-100 position-absolute z-1 top-50px end-0\">\r\n <ul *ngFor=\"let item of dropdownItems\" class=\"list-unstyled\">\r\n <li [ngClass]=\"selectedRole === item ? 'active' : ''\"\r\n class=\"camera px-5 items fw-semibold cursor-pointer py-2\"\r\n (click)=\"selectItem(item)\">{{item}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div *ngIf=\"!loading && !noData \">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <div class=\"d-flex align-items-center\">\r\n <input type=\"checkbox\" id=\"selectAllCheckbox\" (change)=\"selectAll($event)\">\r\n <div class=\"d-flex align-items-center cursor-pointer\" (click)=\"sortData('userName')\">\r\n <span class=\"ms-2 me-1\">User</span>\r\n <span *ngIf=\"sortColumName === 'userName' && sortBy !== 1 || sortColumName !== 'userName' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'userName' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('email')\">Email\r\n <span *ngIf=\"sortColumName === 'email' && sortBy !== 1 || sortColumName !== 'email' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'email' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div></th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('assigned')\">Store Count\r\n <span *ngIf=\"sortColumName === 'assigned' && sortBy !== 1 || sortColumName !== 'assigned' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'assigned' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of emailuserList?.result\">\r\n <td>\r\n <div class=\"d-flex align-items-center\">\r\n <input type=\"checkbox\" class=\"me-5\" [(ngModel)]=\"item.infraAlert\" (change)=\"selectItems($event, item)\">\r\n <div>\r\n {{ item?.userName ? item?.userName : 'NA' }}\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div>{{ item?.email ? item?.email :'NA' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"text-title text-primary cursor-pointer text-decoration-underline mb-1\" (click)=\"storeDetails(item?.assignedValue,item?.userName,item?.email)\">{{ item?.assigned }}</div></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"limit\" [currentPage]=\"offset\"\r\n [totalItems]=\"emailuserList?.count\" [paginationSizes]=\"[10,20,30]\" [pageSize]=\"limit\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n <div>\r\n\r\n <div class=\"mt-10 d-flex justify-content-end\">\r\n <button class=\"btn btn-outline btn-default me-3\" (click)=\"cancelSelectedItems()\">\r\n Cancel\r\n </button>\r\n <button class=\"btn btn-primary btn-default\" (click)=\"updateSelectedItems()\">\r\n Save Chages\r\n </button>\r\n </div> \r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div> \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"p-8 card-title\">\r\n <div class=\"title\">\r\n Stores List of the user\r\n </div>\r\n <div class=\"d-flex align-items-center mt-10 mb-10\">\r\n <div class=\"rounded-5 profile d-flex align-items-center justify-content-center fw-semibold\">{{Email.slice(0,2) | uppercase}}</div>\r\n <div class=\"ms-3\">\r\n <div class=\"title1 mb-1 fw-bold\">{{userName}}</div>\r\n <div class=\"text-sub\">{{Email}}</div>\r\n </div>\r\n </div>\r\n <div class=\"mt-5 border border-gray border-1 rounded-3 p-5\">\r\n <span *ngFor=\"let list of storeList\" class=\"badge badge-light-default me-3\">{{list?.storeName}}</span>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-100\" (click)=\"modal.dismiss()\">Close</button>\r\n </div>\r\n </div>\r\n </ng-template>", styles: [".nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.items{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.img-src{width:25%!important}tr{vertical-align:middle!important}.card-title .title{color:var(--Gray-900, #101828);font-size:18px;font-weight:600;line-height:28px}.card-title .sub-title{color:var(--Gray-500, #667085);font-size:12px;font-weight:400;line-height:18px}input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.timingtext{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.disabled-list{pointer-events:none;opacity:.5}.profile{color:var(--Primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF);font-size:14px;line-height:20px;width:40px;height:40px}.title1{color:var(--Gray-700, #344054);font-size:14px!important;line-height:20px}.text-sub{color:var(--Gray-500, #667085);line-height:20px;font-weight:400}table tr{vertical-align:middle!important;padding-top:16px;padding-bottom:16px}table td .text-sub{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$2.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "pipe", type: i4.UpperCasePipe, name: "uppercase" }] });
|
|
4469
4469
|
}
|
|
4470
4470
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EmailConfigurationComponent, decorators: [{
|
|
4471
4471
|
type: Component,
|
|
4472
|
-
args: [{ selector: 'lib-email-configuration', template: "\r\n<div class=\"mb-5 py-3 px-5\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap mb-10\">\r\n <li class=\"nav-item\" (click)=\"Selectedtabs('Infra Report')\">\r\n <a \r\n [ngClass]=\"SelectedTab === 'Infra Report' ? 'active' : ''\" class=\"nav-link cursor-pointer no-border me-3\">\r\n Infra Report\r\n </a>\r\n </li>\r\n <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('Data Report')\">\r\n <a \r\n [ngClass]=\"SelectedTab === 'Data Report' ? 'active' : ''\" class=\"nav-link cursor-pointer no-border me-3\">\r\n Data Report\r\n </a>\r\n </li> \r\n <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('Insight Report')\">\r\n <a [ngClass]=\"SelectedTab ==='Insight Report' ? 'active' :''\" class=\"nav-link cursor-pointer me-3\">Insight Report</a>\r\n </li>\r\n <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('All')\"><a [ngClass]=\"SelectedTab ==='All' ? 'active' :''\"\r\n class=\"nav-link cursor-pointer no-border me-3\">All</a>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"w-100 d-flex align-items-center\">\r\n <span class=\"timingtext fw-bold\">Send Daily Report at</span> <span> <input type=\"time\" [(ngModel)]=\"startTime\" class=\"form-control w-auto mx-5\"></span><span class=\"timingtext fw-bold\">and</span><span><input type=\"time\" [(ngModel)]=\"endTime\" class=\"form-control w-auto mx-5\"></span>\r\n </div>\r\n</div>\r\n<div class=\"card\">\r\n <div class=\"card-header border-0\">\r\n <div class=\"card-title d-grid\">\r\n <div class=\"title fw-bold\">Users List</div>\r\n <div class=\"sub-title\">Select your required email & schedule the mail timing accordingly</div>\r\n </div>\r\n <div class=\"card-toolbar\"> \r\n <input type=\"text\" class=\"form-control w-auto ps-3 me-2\" placeholder=\"Search\"\r\n autocomplete=\"off\" [(ngModel)]=\"searchInstallation\"\r\n (change)=\"searchInstallationTable()\" />\r\n <div class=\"position-relative w-150px mt-5 mb-5 ms-2\">\r\n <button type=\"button\" (click)=\"openDropdown($event)\"\r\n class=\"btn btn-default w-100 btn-outline btn-outline-default rounded-3 text-nowrap border-val d-flex justify-content-between\">\r\n {{selectedRole ? selectedRole : dropdownItems[0]}}\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </button>\r\n <div *ngIf=\"dropDown\" class=\"card py-1 w-100 position-absolute z-1 top-50px end-0\">\r\n <ul *ngFor=\"let item of dropdownItems\" class=\"list-unstyled\">\r\n <li [ngClass]=\"selectedRole === item ? 'active' : ''\"\r\n class=\"camera px-5 items fw-semibold cursor-pointer py-2\"\r\n (click)=\"selectItem(item)\">{{item}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div *ngIf=\"!loading && !noData \">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <div class=\"d-flex align-items-center\">\r\n <input type=\"checkbox\" id=\"selectAllCheckbox\" (change)=\"selectAll($event)\">\r\n <div class=\"d-flex align-items-center cursor-pointer\" (click)=\"sortData('userName')\">\r\n <span class=\"ms-2 me-1\">User</span>\r\n <span *ngIf=\"sortColumName === 'userName' && sortBy !== 1 || sortColumName !== 'userName' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'userName' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('email')\">Email\r\n <span *ngIf=\"sortColumName === 'email' && sortBy !== 1 || sortColumName !== 'email' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'email' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div></th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('assigned')\">Store Count\r\n <span *ngIf=\"sortColumName === 'assigned' && sortBy !== 1 || sortColumName !== 'assigned' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'assigned' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of emailuserList?.result\">\r\n <td>\r\n <div class=\"d-flex align-items-center\">\r\n <input type=\"checkbox\" class=\"me-5\" [(ngModel)]=\"item.infraAlert\" (change)=\"selectItems($event, item)\">\r\n <div>\r\n {{ item?.userName ? item?.userName : 'NA' }}\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div>{{ item?.email ? item?.email :'NA' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"text-title text-primary cursor-pointer text-decoration-underline mb-1\" (click)=\"storeDetails(item?.assignedValue,item?.userName,item?.email)\">{{ item?.assigned }}</div></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"limit\" [currentPage]=\"offset\"\r\n [totalItems]=\"emailuserList?.count\" [paginationSizes]=\"[10,20,30]\" [pageSize]=\"limit\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n <div>\r\n\r\n <div class=\"mt-10 d-flex justify-content-end\">\r\n <button class=\"btn btn-outline btn-default me-3\" (click)=\"cancelSelectedItems()\">\r\n Cancel\r\n </button>\r\n <button class=\"btn btn-primary btn-default\" (click)=\"updateSelectedItems()\">\r\n Save Chages\r\n </button>\r\n </div> \r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div> \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"p-8 card-title\">\r\n <div class=\"title\">\r\n Stores List of the user\r\n </div>\r\n <div class=\"d-flex align-items-center mt-10 mb-10\">\r\n <div class=\"rounded-5 profile d-flex align-items-center justify-content-center fw-semibold\">{{Email.slice(0,2) | uppercase}}</div>\r\n <div class=\"ms-3\">\r\n <div class=\"title1 mb-1 fw-bold\">{{userName}}</div>\r\n <div class=\"text-sub\">{{Email}}</div>\r\n </div>\r\n </div>\r\n <div class=\"mt-5 border border-gray border-1 rounded-3 p-5\">\r\n <span *ngFor=\"let list of storeList\" class=\"badge badge-light-default me-3\">{{list?.storeName}}</span>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-100\" (click)=\"modal.dismiss()\">Close</button>\r\n </div>\r\n </div>\r\n </ng-template>", styles: [".nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.items{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.img-src{width:25%!important}tr{vertical-align:middle!important}.card-title .title{color:var(--Gray-900, #101828);font-size:18px;font-weight:600;line-height:28px}.card-title .sub-title{color:var(--Gray-500, #667085);font-size:12px;font-weight:400;line-height:18px}input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.timingtext{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.disabled-list{pointer-events:none;opacity:.5}.profile{color:var(--Primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF);font-size:14px;line-height:20px;width:40px;height:40px}.title1{color:var(--Gray-700, #344054);font-size:14px!important;line-height:20px}.text-sub{color:var(--Gray-500, #667085);line-height:20px;font-weight:400}table tr{vertical-align:middle!important;padding-top:16px;padding-bottom:16px}table td .text-sub{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}\n"] }]
|
|
4472
|
+
args: [{ selector: 'lib-email-configuration', template: "\r\n<div class=\"mb-5 py-3 px-5\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap mb-10\">\r\n <li class=\"nav-item\" (click)=\"Selectedtabs('Infra Report')\">\r\n <a \r\n [ngClass]=\"SelectedTab === 'Infra Report' ? 'active' : ''\" class=\"nav-link cursor-pointer no-border me-3\">\r\n Infra Report\r\n </a>\r\n </li>\r\n <!-- <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('Data Report')\">\r\n <a \r\n [ngClass]=\"SelectedTab === 'Data Report' ? 'active' : ''\" class=\"nav-link cursor-pointer no-border me-3\">\r\n Data Report\r\n </a>\r\n </li> \r\n <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('Insight Report')\">\r\n <a [ngClass]=\"SelectedTab ==='Insight Report' ? 'active' :''\" class=\"nav-link cursor-pointer me-3\">Insight Report</a>\r\n </li>\r\n <li class=\"nav-item disabled-list \" (click)=\"Selectedtabs('All')\"><a [ngClass]=\"SelectedTab ==='All' ? 'active' :''\"\r\n class=\"nav-link cursor-pointer no-border me-3\">All</a>\r\n </li> -->\r\n </ul>\r\n\r\n <div class=\"w-100 d-flex align-items-center\">\r\n <span class=\"timingtext fw-bold\">Send Daily Report at</span> <span> <input type=\"time\" [(ngModel)]=\"startTime\" class=\"form-control w-auto mx-5\"></span><span class=\"timingtext fw-bold\">and</span><span><input type=\"time\" [(ngModel)]=\"endTime\" class=\"form-control w-auto mx-5\"></span>\r\n </div>\r\n</div>\r\n<div class=\"card\">\r\n <div class=\"card-header border-0\">\r\n <div class=\"card-title d-grid\">\r\n <div class=\"title fw-bold\">Users List</div>\r\n <div class=\"sub-title\">Select your required email & schedule the mail timing accordingly</div>\r\n </div>\r\n <div class=\"card-toolbar\"> \r\n <input type=\"text\" class=\"form-control w-auto ps-3 me-2\" placeholder=\"Search\"\r\n autocomplete=\"off\" [(ngModel)]=\"searchInstallation\"\r\n (change)=\"searchInstallationTable()\" />\r\n <div class=\"position-relative w-150px mt-5 mb-5 ms-2\">\r\n <button type=\"button\" (click)=\"openDropdown($event)\"\r\n class=\"btn btn-default w-100 btn-outline btn-outline-default rounded-3 text-nowrap border-val d-flex justify-content-between\">\r\n {{selectedRole ? selectedRole : dropdownItems[0]}}\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </button>\r\n <div *ngIf=\"dropDown\" class=\"card py-1 w-100 position-absolute z-1 top-50px end-0\">\r\n <ul *ngFor=\"let item of dropdownItems\" class=\"list-unstyled\">\r\n <li [ngClass]=\"selectedRole === item ? 'active' : ''\"\r\n class=\"camera px-5 items fw-semibold cursor-pointer py-2\"\r\n (click)=\"selectItem(item)\">{{item}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div *ngIf=\"!loading && !noData \">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <div class=\"d-flex align-items-center\">\r\n <input type=\"checkbox\" id=\"selectAllCheckbox\" (change)=\"selectAll($event)\">\r\n <div class=\"d-flex align-items-center cursor-pointer\" (click)=\"sortData('userName')\">\r\n <span class=\"ms-2 me-1\">User</span>\r\n <span *ngIf=\"sortColumName === 'userName' && sortBy !== 1 || sortColumName !== 'userName' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'userName' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('email')\">Email\r\n <span *ngIf=\"sortColumName === 'email' && sortBy !== 1 || sortColumName !== 'email' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'email' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div></th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('assigned')\">Store Count\r\n <span *ngIf=\"sortColumName === 'assigned' && sortBy !== 1 || sortColumName !== 'assigned' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'assigned' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of emailuserList?.result\">\r\n <td>\r\n <div class=\"d-flex align-items-center\">\r\n <input type=\"checkbox\" class=\"me-5\" [(ngModel)]=\"item.infraAlert\" (change)=\"selectItems($event, item)\">\r\n <div>\r\n {{ item?.userName ? item?.userName : 'NA' }}\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div>{{ item?.email ? item?.email :'NA' }}</div>\r\n </td>\r\n <td>\r\n <div class=\"text-title text-primary cursor-pointer text-decoration-underline mb-1\" (click)=\"storeDetails(item?.assignedValue,item?.userName,item?.email)\">{{ item?.assigned }}</div></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"limit\" [currentPage]=\"offset\"\r\n [totalItems]=\"emailuserList?.count\" [paginationSizes]=\"[10,20,30]\" [pageSize]=\"limit\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n <div>\r\n\r\n <div class=\"mt-10 d-flex justify-content-end\">\r\n <button class=\"btn btn-outline btn-default me-3\" (click)=\"cancelSelectedItems()\">\r\n Cancel\r\n </button>\r\n <button class=\"btn btn-primary btn-default\" (click)=\"updateSelectedItems()\">\r\n Save Chages\r\n </button>\r\n </div> \r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div> \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"p-8 card-title\">\r\n <div class=\"title\">\r\n Stores List of the user\r\n </div>\r\n <div class=\"d-flex align-items-center mt-10 mb-10\">\r\n <div class=\"rounded-5 profile d-flex align-items-center justify-content-center fw-semibold\">{{Email.slice(0,2) | uppercase}}</div>\r\n <div class=\"ms-3\">\r\n <div class=\"title1 mb-1 fw-bold\">{{userName}}</div>\r\n <div class=\"text-sub\">{{Email}}</div>\r\n </div>\r\n </div>\r\n <div class=\"mt-5 border border-gray border-1 rounded-3 p-5\">\r\n <span *ngFor=\"let list of storeList\" class=\"badge badge-light-default me-3\">{{list?.storeName}}</span>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-100\" (click)=\"modal.dismiss()\">Close</button>\r\n </div>\r\n </div>\r\n </ng-template>", styles: [".nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.items{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.img-src{width:25%!important}tr{vertical-align:middle!important}.card-title .title{color:var(--Gray-900, #101828);font-size:18px;font-weight:600;line-height:28px}.card-title .sub-title{color:var(--Gray-500, #667085);font-size:12px;font-weight:400;line-height:18px}input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.timingtext{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.disabled-list{pointer-events:none;opacity:.5}.profile{color:var(--Primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF);font-size:14px;line-height:20px;width:40px;height:40px}.title1{color:var(--Gray-700, #344054);font-size:14px!important;line-height:20px}.text-sub{color:var(--Gray-500, #667085);line-height:20px;font-weight:400}table tr{vertical-align:middle!important;padding-top:16px;padding-bottom:16px}table td .text-sub{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}\n"] }]
|
|
4473
4473
|
}], ctorParameters: () => [{ type: i1$2.NgbModal }, { type: i4$2.ToastService }, { type: i0.ChangeDetectorRef }, { type: ClientApiService }], propDecorators: { confirmationModal: [{
|
|
4474
4474
|
type: ViewChild,
|
|
4475
4475
|
args: ['confirmationModal']
|