@unifylib/ui-lib 1.1.64 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli/generators/dashboard.js +147 -0
- package/cli/generators/form-screen.js +95 -0
- package/cli/generators/line-editor.js +110 -0
- package/cli/generators/permission-matrix.js +115 -0
- package/cli/generators/section-form.js +103 -0
- package/cli/generators/table-screen.js +181 -0
- package/cli/index.js +185 -0
- package/cli/utils.js +228 -0
- package/esm2022/lib/base-model/audit-log-entry.mjs +1 -1
- package/esm2022/lib/base-model/field-info.mjs +2 -1
- package/esm2022/lib/components/action-comment/action-comment.component.mjs +6 -5
- package/esm2022/lib/components/advanced-filter/filter-builder/filter-builder.component.mjs +8 -3
- package/esm2022/lib/components/audit-log-list/audit-log.component.mjs +58 -22
- package/esm2022/lib/components/auto-complete/auto-complete.component.mjs +11 -3
- package/esm2022/lib/components/base-form/base-form.component.mjs +1 -1
- package/esm2022/lib/components/base-form-canvas/base-form-canvas.component.mjs +72 -4
- package/esm2022/lib/components/base-table/base-table.component.mjs +81 -24
- package/esm2022/lib/components/button-actions/button-actions.component.mjs +3 -3
- package/esm2022/lib/components/editable-base-table/editable-base-table.component.mjs +3 -3
- package/esm2022/lib/components/equation-builder/equation-builder.component.mjs +9 -4
- package/esm2022/lib/components/multi-auto-complete/multi-auto-complete.component.mjs +20 -4
- package/esm2022/lib/components/paginator/paginator.component.mjs +26 -6
- package/esm2022/lib/components/permission-matrix/permission-matrix.component.mjs +46 -4
- package/esm2022/lib/components/report-details-dialog/report-details-dialog.component.mjs +3 -3
- package/esm2022/lib/components/report-form/report-form.component.mjs +3 -3
- package/esm2022/lib/components/search-bar/search-bar.component.mjs +5 -4
- package/esm2022/lib/components/section-form-canvas/section-form-canvas.component.mjs +11 -3
- package/esm2022/lib/components/shared/attachment-uploader/attachment-uploader.component.mjs +5 -3
- package/esm2022/lib/components/snackbar-static/snackbar-static.component.mjs +3 -3
- package/esm2022/lib/components/title-bar/title-bar.component.mjs +3 -3
- package/esm2022/lib/utils/base-utils.mjs +6 -3
- package/fesm2022/iq-ui-lib.mjs +375 -108
- package/fesm2022/iq-ui-lib.mjs.map +1 -1
- package/fesm2022/unifylib-ui-lib.mjs +375 -108
- package/fesm2022/unifylib-ui-lib.mjs.map +1 -1
- package/lib/base-model/audit-log-entry.d.ts +1 -0
- package/lib/base-model/field-info.d.ts +1 -0
- package/lib/components/advanced-filter/filter-builder/filter-builder.component.d.ts +2 -0
- package/lib/components/audit-log-list/audit-log.component.d.ts +6 -2
- package/lib/components/auto-complete/auto-complete.component.d.ts +2 -1
- package/lib/components/base-form-canvas/base-form-canvas.component.d.ts +5 -0
- package/lib/components/base-table/base-table.component.d.ts +11 -3
- package/lib/components/multi-auto-complete/multi-auto-complete.component.d.ts +3 -1
- package/lib/components/paginator/paginator.component.d.ts +6 -1
- package/lib/components/permission-matrix/permission-matrix.component.d.ts +5 -1
- package/lib/components/section-form-canvas/section-form-canvas.component.d.ts +3 -1
- package/lib/components/shared/attachment-uploader/attachment-uploader.component.d.ts +2 -1
- package/package.json +4 -1
|
@@ -21,6 +21,7 @@ export class PermissionMatrixComponent {
|
|
|
21
21
|
this.expandAllLabelKey = 'GROUPS.expandAll';
|
|
22
22
|
this.collapseAllLabelKey = 'GROUPS.collapseAll';
|
|
23
23
|
this.readonly = false;
|
|
24
|
+
this.autoLockView = false;
|
|
24
25
|
this.itemsChange = new EventEmitter();
|
|
25
26
|
this.permissionChange = new EventEmitter();
|
|
26
27
|
}
|
|
@@ -59,6 +60,9 @@ export class PermissionMatrixComponent {
|
|
|
59
60
|
item.permissions[perm.key] = newValue;
|
|
60
61
|
}
|
|
61
62
|
});
|
|
63
|
+
if (this.autoLockView) {
|
|
64
|
+
this.syncViewPermission(item);
|
|
65
|
+
}
|
|
62
66
|
this.emitItemsChange();
|
|
63
67
|
}
|
|
64
68
|
isPermissionSelected(item, permission) {
|
|
@@ -67,9 +71,19 @@ export class PermissionMatrixComponent {
|
|
|
67
71
|
}
|
|
68
72
|
return item.permissions[permission.key];
|
|
69
73
|
}
|
|
74
|
+
isPermissionDisabled(item, permission) {
|
|
75
|
+
if (this.readonly) {
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
if (this.autoLockView && permission.key === 'view') {
|
|
79
|
+
return this.hasNonViewPermission(item);
|
|
80
|
+
}
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
70
83
|
togglePermission(item, permission) {
|
|
71
|
-
if (this.
|
|
84
|
+
if (this.isPermissionDisabled(item, permission)) {
|
|
72
85
|
return;
|
|
86
|
+
}
|
|
73
87
|
const currentValue = this.isPermissionSelected(item, permission);
|
|
74
88
|
const newValue = !currentValue;
|
|
75
89
|
if (permission.combinedKeys) {
|
|
@@ -80,6 +94,9 @@ export class PermissionMatrixComponent {
|
|
|
80
94
|
else {
|
|
81
95
|
item.permissions[permission.key] = newValue;
|
|
82
96
|
}
|
|
97
|
+
if (this.autoLockView) {
|
|
98
|
+
this.syncViewPermission(item);
|
|
99
|
+
}
|
|
83
100
|
this.permissionChange.emit({
|
|
84
101
|
item,
|
|
85
102
|
permissionKey: permission.key,
|
|
@@ -87,7 +104,30 @@ export class PermissionMatrixComponent {
|
|
|
87
104
|
});
|
|
88
105
|
this.emitItemsChange();
|
|
89
106
|
}
|
|
107
|
+
hasNonViewPermission(item) {
|
|
108
|
+
return this.permissions.some(perm => {
|
|
109
|
+
if (perm.key === 'view') {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
if (perm.combinedKeys) {
|
|
113
|
+
return perm.combinedKeys.some(key => item.permissions[key]);
|
|
114
|
+
}
|
|
115
|
+
return !!item.permissions[perm.key];
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
syncViewPermission(item) {
|
|
119
|
+
const viewKey = this.permissions.find(p => p.key === 'view' && !p.combinedKeys)?.key;
|
|
120
|
+
if (!viewKey) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (this.hasNonViewPermission(item)) {
|
|
124
|
+
item.permissions[viewKey] = true;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
90
127
|
emitItemsChange() {
|
|
128
|
+
if (this.autoLockView) {
|
|
129
|
+
this.items.forEach(item => this.syncViewPermission(item));
|
|
130
|
+
}
|
|
91
131
|
this.itemsChange.emit([...this.items]);
|
|
92
132
|
}
|
|
93
133
|
trackByItem(index, item) {
|
|
@@ -97,7 +137,7 @@ export class PermissionMatrixComponent {
|
|
|
97
137
|
return permission.key;
|
|
98
138
|
}
|
|
99
139
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PermissionMatrixComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
100
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PermissionMatrixComponent, isStandalone: true, selector: "lib-permission-matrix", inputs: { items: "items", permissions: "permissions", titleKey: "titleKey", selectAllLabelKey: "selectAllLabelKey", expandAllLabelKey: "expandAllLabelKey", collapseAllLabelKey: "collapseAllLabelKey", readonly: "readonly" }, outputs: { itemsChange: "itemsChange", permissionChange: "permissionChange" }, ngImport: i0, template: "<div class=\"permission-matrix-card\">\r\n <div class=\"matrix-header\">\r\n <h3 class=\"matrix-title\">{{ titleKey | translate }}</h3>\r\n <button\r\n class=\"expand-all-btn\"\r\n type=\"button\"\r\n (click)=\"expandAllGroups()\"\r\n [attr.aria-label]=\"(areAllExpanded() ? collapseAllLabelKey : expandAllLabelKey) | translate\">\r\n <mat-icon class=\"expand-icon\" [class.rotated]=\"areAllExpanded()\">unfold_more</mat-icon>\r\n <span>{{ (areAllExpanded() ? collapseAllLabelKey : expandAllLabelKey) | translate }}</span>\r\n </button>\r\n </div>\r\n\r\n <div class=\"matrix-divider\"></div>\r\n\r\n <div class=\"matrix-accordion-list\">\r\n <div\r\n *ngFor=\"let item of items; trackBy: trackByItem\"\r\n class=\"matrix-accordion-item\"\r\n [class.expanded]=\"item.expanded\">\r\n\r\n <!-- Accordion Header -->\r\n <div\r\n class=\"accordion-header\"\r\n (click)=\"toggleGroup(item)\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n [attr.aria-expanded]=\"item.expanded\"\r\n (keydown.enter)=\"toggleGroup(item)\"\r\n (keydown.space)=\"toggleGroup(item); $event.preventDefault()\">\r\n <div class=\"accordion-content\">\r\n <h4 class=\"accordion-title\">{{ item.title }}</h4>\r\n <p *ngIf=\"item.description\" class=\"accordion-description\">{{ item.description }}</p>\r\n </div>\r\n <mat-icon class=\"accordion-icon\" [class.rotated]=\"item.expanded\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n\r\n <!-- Accordion Body -->\r\n <ng-container *ngIf=\"item.expanded\">\r\n <div class=\"accordion-divider\"></div>\r\n <div class=\"accordion-body\">\r\n <!-- Permission Header Row -->\r\n <div class=\"permission-header-row\">\r\n <span class=\"permission-group-label\">{{ item.title }}</span>\r\n <div class=\"permission-separator\"></div>\r\n <div class=\"select-all-container\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"select-all-label\">{{ selectAllLabelKey | translate }}</span>\r\n <mat-checkbox\r\n [checked]=\"isAllPermissionsSelected(item)\"\r\n [disabled]=\"readonly\"\r\n (change)=\"toggleSelectAll(item)\"\r\n color=\"primary\"\r\n class=\"select-all-checkbox\">\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n\r\n <!-- Permissions Row -->\r\n <div class=\"permissions-row\" (click)=\"$event.stopPropagation()\">\r\n <div\r\n *ngFor=\"let permission of permissions; trackBy: trackByPermission\"\r\n class=\"permission-item\">\r\n <mat-checkbox\r\n [checked]=\"isPermissionSelected(item, permission)\"\r\n [disabled]=\"
|
|
140
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PermissionMatrixComponent, isStandalone: true, selector: "lib-permission-matrix", inputs: { items: "items", permissions: "permissions", titleKey: "titleKey", selectAllLabelKey: "selectAllLabelKey", expandAllLabelKey: "expandAllLabelKey", collapseAllLabelKey: "collapseAllLabelKey", readonly: "readonly", autoLockView: "autoLockView" }, outputs: { itemsChange: "itemsChange", permissionChange: "permissionChange" }, ngImport: i0, template: "<div class=\"permission-matrix-card\">\r\n <div class=\"matrix-header\">\r\n <h3 class=\"matrix-title\">{{ titleKey | translate }}</h3>\r\n <button\r\n class=\"expand-all-btn\"\r\n type=\"button\"\r\n (click)=\"expandAllGroups()\"\r\n [attr.aria-label]=\"(areAllExpanded() ? collapseAllLabelKey : expandAllLabelKey) | translate\">\r\n <mat-icon class=\"expand-icon\" [class.rotated]=\"areAllExpanded()\">unfold_more</mat-icon>\r\n <span>{{ (areAllExpanded() ? collapseAllLabelKey : expandAllLabelKey) | translate }}</span>\r\n </button>\r\n </div>\r\n\r\n <div class=\"matrix-divider\"></div>\r\n\r\n <div class=\"matrix-accordion-list\">\r\n <div\r\n *ngFor=\"let item of items; trackBy: trackByItem\"\r\n class=\"matrix-accordion-item\"\r\n [class.expanded]=\"item.expanded\">\r\n\r\n <!-- Accordion Header -->\r\n <div\r\n class=\"accordion-header\"\r\n (click)=\"toggleGroup(item)\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n [attr.aria-expanded]=\"item.expanded\"\r\n (keydown.enter)=\"toggleGroup(item)\"\r\n (keydown.space)=\"toggleGroup(item); $event.preventDefault()\">\r\n <div class=\"accordion-content\">\r\n <h4 class=\"accordion-title\">{{ item.title }}</h4>\r\n <p *ngIf=\"item.description\" class=\"accordion-description\">{{ item.description }}</p>\r\n </div>\r\n <mat-icon class=\"accordion-icon\" [class.rotated]=\"item.expanded\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n\r\n <!-- Accordion Body -->\r\n <ng-container *ngIf=\"item.expanded\">\r\n <div class=\"accordion-divider\"></div>\r\n <div class=\"accordion-body\">\r\n <!-- Permission Header Row -->\r\n <div class=\"permission-header-row\">\r\n <span class=\"permission-group-label\">{{ item.title }}</span>\r\n <div class=\"permission-separator\"></div>\r\n <div class=\"select-all-container\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"select-all-label\">{{ selectAllLabelKey | translate }}</span>\r\n <mat-checkbox\r\n [checked]=\"isAllPermissionsSelected(item)\"\r\n [disabled]=\"readonly\"\r\n (change)=\"toggleSelectAll(item)\"\r\n color=\"primary\"\r\n class=\"select-all-checkbox\">\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n\r\n <!-- Permissions Row -->\r\n <div class=\"permissions-row\" (click)=\"$event.stopPropagation()\">\r\n <div\r\n *ngFor=\"let permission of permissions; trackBy: trackByPermission\"\r\n class=\"permission-item\">\r\n <mat-checkbox\r\n [checked]=\"isPermissionSelected(item, permission)\"\r\n [disabled]=\"isPermissionDisabled(item, permission)\"\r\n (change)=\"togglePermission(item, permission)\"\r\n color=\"primary\">\r\n </mat-checkbox>\r\n <span class=\"permission-label\">{{ permission.labelKey | translate }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>", styles: [".permission-matrix-card{background:#fff;border:1px solid #f0eeee;border-radius:8px;padding:16px;display:flex;flex-direction:column;gap:20px}.matrix-header{display:flex;align-items:center;justify-content:space-between;min-height:27px}.matrix-title{font-family:lusail-bold,sans-serif;font-weight:700;font-size:24px;line-height:1.2;color:#000;margin:0}.expand-all-btn{display:flex;align-items:center;gap:4px;background:transparent;border:none;cursor:pointer;padding:0;font-family:lusail-regular,sans-serif;font-weight:400;font-size:20px;line-height:1.2;color:#000;transition:all .2s ease}.expand-all-btn:hover{color:#0d4261}.expand-all-btn:focus-visible{outline:2px solid #0d4261;outline-offset:2px;border-radius:4px}.expand-icon{font-size:24px;width:24px;height:24px;color:#000;transition:transform .3s ease}.expand-icon.rotated{transform:rotate(180deg)}.matrix-divider{height:2px;background-color:#0d4261;width:100%}.matrix-accordion-list{display:flex;flex-direction:column;gap:0}.matrix-accordion-item{background:#fff;border:1px solid #f0eeee;border-radius:8px;padding:16px;margin-bottom:0;transition:all .2s ease}.matrix-accordion-item:not(:last-child){margin-bottom:20px}.accordion-header{display:flex;align-items:center;justify-content:space-between;cursor:pointer;width:100%}.accordion-header:focus-visible{outline:2px solid #0d4261;outline-offset:2px;border-radius:4px}.accordion-content{flex:1;display:flex;flex-direction:column;gap:0}.accordion-title{font-family:lusail-bold,sans-serif;font-weight:700;font-size:20px;line-height:1.2;color:#000;margin:0 0 4px}.accordion-description{font-family:lusail-light,sans-serif;font-weight:300;font-size:16px;line-height:1.2;color:#888;margin:0}.accordion-icon{font-size:24px;width:24px;height:24px;color:#222;transition:transform .3s ease;flex-shrink:0}.accordion-icon.rotated{transform:rotate(180deg)}.accordion-divider{margin-top:16px;height:1px;background-color:#f0eeee;width:calc(100% + 32px);margin-left:-16px;margin-right:-16px;border:none}.accordion-body{padding-top:16px;display:flex;flex-direction:column;gap:12px;margin-left:-16px;margin-right:-16px;padding-left:16px;padding-right:16px}.permission-header-row{display:flex;align-items:center;gap:4px;width:100%}.permission-group-label{font-family:lusail-regular,sans-serif;font-weight:400;font-size:16px;line-height:1.2;color:#5c5c5c;flex-shrink:0}.permission-separator{flex:1;height:1px;background-color:#f0eeee;margin:0 4px}.select-all-container{display:flex;align-items:center;gap:4px;flex-shrink:0;flex-direction:row-reverse}.select-all-label{font-family:lusail-regular,sans-serif;font-weight:400;font-size:20px;line-height:1.2;color:#000}.select-all-checkbox{flex-shrink:0}.permissions-row{display:flex;gap:20px;align-items:center;flex-wrap:wrap}.permission-item{display:flex;align-items:center;gap:4px;min-height:19px}.permission-label{font-family:lusail-medium,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#222;white-space:nowrap}::ng-deep .select-all-checkbox .mdc-checkbox__background,::ng-deep .permission-item .mdc-checkbox__background{border-color:#b7b7b7!important;border-radius:4px!important}::ng-deep .select-all-checkbox.mat-mdc-checkbox-checked .mdc-checkbox__background,::ng-deep .permission-item.mat-mdc-checkbox-checked .mdc-checkbox__background{background-color:#0d4261!important;border-color:#0d4261!important}::ng-deep .mdc-checkbox__checkmark{color:#fff!important}::ng-deep .mdc-checkbox{display:inline-block;position:relative;flex:0 0 18px;box-sizing:content-box;width:18px;height:28px!important;line-height:0;white-space:nowrap;cursor:pointer;vertical-align:bottom;padding:calc((var(--mdc-checkbox-state-layer-size) - 25px) / 2)!important;margin:calc((var(--mdc-checkbox-state-layer-size) - var(--mdc-checkbox-state-layer-size)) / 2)}:host-context([dir=rtl]) .matrix-header{direction:rtl}:host-context([dir=rtl]) .accordion-header{direction:rtl}:host-context([dir=rtl]) .select-all-container{flex-direction:row}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
101
141
|
}
|
|
102
142
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PermissionMatrixComponent, decorators: [{
|
|
103
143
|
type: Component,
|
|
@@ -106,7 +146,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
106
146
|
MatIconModule,
|
|
107
147
|
MatCheckboxModule,
|
|
108
148
|
TranslateModule
|
|
109
|
-
], template: "<div class=\"permission-matrix-card\">\r\n <div class=\"matrix-header\">\r\n <h3 class=\"matrix-title\">{{ titleKey | translate }}</h3>\r\n <button\r\n class=\"expand-all-btn\"\r\n type=\"button\"\r\n (click)=\"expandAllGroups()\"\r\n [attr.aria-label]=\"(areAllExpanded() ? collapseAllLabelKey : expandAllLabelKey) | translate\">\r\n <mat-icon class=\"expand-icon\" [class.rotated]=\"areAllExpanded()\">unfold_more</mat-icon>\r\n <span>{{ (areAllExpanded() ? collapseAllLabelKey : expandAllLabelKey) | translate }}</span>\r\n </button>\r\n </div>\r\n\r\n <div class=\"matrix-divider\"></div>\r\n\r\n <div class=\"matrix-accordion-list\">\r\n <div\r\n *ngFor=\"let item of items; trackBy: trackByItem\"\r\n class=\"matrix-accordion-item\"\r\n [class.expanded]=\"item.expanded\">\r\n\r\n <!-- Accordion Header -->\r\n <div\r\n class=\"accordion-header\"\r\n (click)=\"toggleGroup(item)\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n [attr.aria-expanded]=\"item.expanded\"\r\n (keydown.enter)=\"toggleGroup(item)\"\r\n (keydown.space)=\"toggleGroup(item); $event.preventDefault()\">\r\n <div class=\"accordion-content\">\r\n <h4 class=\"accordion-title\">{{ item.title }}</h4>\r\n <p *ngIf=\"item.description\" class=\"accordion-description\">{{ item.description }}</p>\r\n </div>\r\n <mat-icon class=\"accordion-icon\" [class.rotated]=\"item.expanded\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n\r\n <!-- Accordion Body -->\r\n <ng-container *ngIf=\"item.expanded\">\r\n <div class=\"accordion-divider\"></div>\r\n <div class=\"accordion-body\">\r\n <!-- Permission Header Row -->\r\n <div class=\"permission-header-row\">\r\n <span class=\"permission-group-label\">{{ item.title }}</span>\r\n <div class=\"permission-separator\"></div>\r\n <div class=\"select-all-container\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"select-all-label\">{{ selectAllLabelKey | translate }}</span>\r\n <mat-checkbox\r\n [checked]=\"isAllPermissionsSelected(item)\"\r\n [disabled]=\"readonly\"\r\n (change)=\"toggleSelectAll(item)\"\r\n color=\"primary\"\r\n class=\"select-all-checkbox\">\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n\r\n <!-- Permissions Row -->\r\n <div class=\"permissions-row\" (click)=\"$event.stopPropagation()\">\r\n <div\r\n *ngFor=\"let permission of permissions; trackBy: trackByPermission\"\r\n class=\"permission-item\">\r\n <mat-checkbox\r\n [checked]=\"isPermissionSelected(item, permission)\"\r\n [disabled]=\"
|
|
149
|
+
], template: "<div class=\"permission-matrix-card\">\r\n <div class=\"matrix-header\">\r\n <h3 class=\"matrix-title\">{{ titleKey | translate }}</h3>\r\n <button\r\n class=\"expand-all-btn\"\r\n type=\"button\"\r\n (click)=\"expandAllGroups()\"\r\n [attr.aria-label]=\"(areAllExpanded() ? collapseAllLabelKey : expandAllLabelKey) | translate\">\r\n <mat-icon class=\"expand-icon\" [class.rotated]=\"areAllExpanded()\">unfold_more</mat-icon>\r\n <span>{{ (areAllExpanded() ? collapseAllLabelKey : expandAllLabelKey) | translate }}</span>\r\n </button>\r\n </div>\r\n\r\n <div class=\"matrix-divider\"></div>\r\n\r\n <div class=\"matrix-accordion-list\">\r\n <div\r\n *ngFor=\"let item of items; trackBy: trackByItem\"\r\n class=\"matrix-accordion-item\"\r\n [class.expanded]=\"item.expanded\">\r\n\r\n <!-- Accordion Header -->\r\n <div\r\n class=\"accordion-header\"\r\n (click)=\"toggleGroup(item)\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n [attr.aria-expanded]=\"item.expanded\"\r\n (keydown.enter)=\"toggleGroup(item)\"\r\n (keydown.space)=\"toggleGroup(item); $event.preventDefault()\">\r\n <div class=\"accordion-content\">\r\n <h4 class=\"accordion-title\">{{ item.title }}</h4>\r\n <p *ngIf=\"item.description\" class=\"accordion-description\">{{ item.description }}</p>\r\n </div>\r\n <mat-icon class=\"accordion-icon\" [class.rotated]=\"item.expanded\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n\r\n <!-- Accordion Body -->\r\n <ng-container *ngIf=\"item.expanded\">\r\n <div class=\"accordion-divider\"></div>\r\n <div class=\"accordion-body\">\r\n <!-- Permission Header Row -->\r\n <div class=\"permission-header-row\">\r\n <span class=\"permission-group-label\">{{ item.title }}</span>\r\n <div class=\"permission-separator\"></div>\r\n <div class=\"select-all-container\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"select-all-label\">{{ selectAllLabelKey | translate }}</span>\r\n <mat-checkbox\r\n [checked]=\"isAllPermissionsSelected(item)\"\r\n [disabled]=\"readonly\"\r\n (change)=\"toggleSelectAll(item)\"\r\n color=\"primary\"\r\n class=\"select-all-checkbox\">\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n\r\n <!-- Permissions Row -->\r\n <div class=\"permissions-row\" (click)=\"$event.stopPropagation()\">\r\n <div\r\n *ngFor=\"let permission of permissions; trackBy: trackByPermission\"\r\n class=\"permission-item\">\r\n <mat-checkbox\r\n [checked]=\"isPermissionSelected(item, permission)\"\r\n [disabled]=\"isPermissionDisabled(item, permission)\"\r\n (change)=\"togglePermission(item, permission)\"\r\n color=\"primary\">\r\n </mat-checkbox>\r\n <span class=\"permission-label\">{{ permission.labelKey | translate }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>", styles: [".permission-matrix-card{background:#fff;border:1px solid #f0eeee;border-radius:8px;padding:16px;display:flex;flex-direction:column;gap:20px}.matrix-header{display:flex;align-items:center;justify-content:space-between;min-height:27px}.matrix-title{font-family:lusail-bold,sans-serif;font-weight:700;font-size:24px;line-height:1.2;color:#000;margin:0}.expand-all-btn{display:flex;align-items:center;gap:4px;background:transparent;border:none;cursor:pointer;padding:0;font-family:lusail-regular,sans-serif;font-weight:400;font-size:20px;line-height:1.2;color:#000;transition:all .2s ease}.expand-all-btn:hover{color:#0d4261}.expand-all-btn:focus-visible{outline:2px solid #0d4261;outline-offset:2px;border-radius:4px}.expand-icon{font-size:24px;width:24px;height:24px;color:#000;transition:transform .3s ease}.expand-icon.rotated{transform:rotate(180deg)}.matrix-divider{height:2px;background-color:#0d4261;width:100%}.matrix-accordion-list{display:flex;flex-direction:column;gap:0}.matrix-accordion-item{background:#fff;border:1px solid #f0eeee;border-radius:8px;padding:16px;margin-bottom:0;transition:all .2s ease}.matrix-accordion-item:not(:last-child){margin-bottom:20px}.accordion-header{display:flex;align-items:center;justify-content:space-between;cursor:pointer;width:100%}.accordion-header:focus-visible{outline:2px solid #0d4261;outline-offset:2px;border-radius:4px}.accordion-content{flex:1;display:flex;flex-direction:column;gap:0}.accordion-title{font-family:lusail-bold,sans-serif;font-weight:700;font-size:20px;line-height:1.2;color:#000;margin:0 0 4px}.accordion-description{font-family:lusail-light,sans-serif;font-weight:300;font-size:16px;line-height:1.2;color:#888;margin:0}.accordion-icon{font-size:24px;width:24px;height:24px;color:#222;transition:transform .3s ease;flex-shrink:0}.accordion-icon.rotated{transform:rotate(180deg)}.accordion-divider{margin-top:16px;height:1px;background-color:#f0eeee;width:calc(100% + 32px);margin-left:-16px;margin-right:-16px;border:none}.accordion-body{padding-top:16px;display:flex;flex-direction:column;gap:12px;margin-left:-16px;margin-right:-16px;padding-left:16px;padding-right:16px}.permission-header-row{display:flex;align-items:center;gap:4px;width:100%}.permission-group-label{font-family:lusail-regular,sans-serif;font-weight:400;font-size:16px;line-height:1.2;color:#5c5c5c;flex-shrink:0}.permission-separator{flex:1;height:1px;background-color:#f0eeee;margin:0 4px}.select-all-container{display:flex;align-items:center;gap:4px;flex-shrink:0;flex-direction:row-reverse}.select-all-label{font-family:lusail-regular,sans-serif;font-weight:400;font-size:20px;line-height:1.2;color:#000}.select-all-checkbox{flex-shrink:0}.permissions-row{display:flex;gap:20px;align-items:center;flex-wrap:wrap}.permission-item{display:flex;align-items:center;gap:4px;min-height:19px}.permission-label{font-family:lusail-medium,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#222;white-space:nowrap}::ng-deep .select-all-checkbox .mdc-checkbox__background,::ng-deep .permission-item .mdc-checkbox__background{border-color:#b7b7b7!important;border-radius:4px!important}::ng-deep .select-all-checkbox.mat-mdc-checkbox-checked .mdc-checkbox__background,::ng-deep .permission-item.mat-mdc-checkbox-checked .mdc-checkbox__background{background-color:#0d4261!important;border-color:#0d4261!important}::ng-deep .mdc-checkbox__checkmark{color:#fff!important}::ng-deep .mdc-checkbox{display:inline-block;position:relative;flex:0 0 18px;box-sizing:content-box;width:18px;height:28px!important;line-height:0;white-space:nowrap;cursor:pointer;vertical-align:bottom;padding:calc((var(--mdc-checkbox-state-layer-size) - 25px) / 2)!important;margin:calc((var(--mdc-checkbox-state-layer-size) - var(--mdc-checkbox-state-layer-size)) / 2)}:host-context([dir=rtl]) .matrix-header{direction:rtl}:host-context([dir=rtl]) .accordion-header{direction:rtl}:host-context([dir=rtl]) .select-all-container{flex-direction:row}\n"] }]
|
|
110
150
|
}], propDecorators: { items: [{
|
|
111
151
|
type: Input
|
|
112
152
|
}], permissions: [{
|
|
@@ -121,9 +161,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
121
161
|
type: Input
|
|
122
162
|
}], readonly: [{
|
|
123
163
|
type: Input
|
|
164
|
+
}], autoLockView: [{
|
|
165
|
+
type: Input
|
|
124
166
|
}], itemsChange: [{
|
|
125
167
|
type: Output
|
|
126
168
|
}], permissionChange: [{
|
|
127
169
|
type: Output
|
|
128
170
|
}] } });
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1tYXRyaXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9wZXJtaXNzaW9uLW1hdHJpeC9wZXJtaXNzaW9uLW1hdHJpeC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL3Blcm1pc3Npb24tbWF0cml4L3Blcm1pc3Npb24tbWF0cml4LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7OztBQWV0RCxNQUFNLE9BQU8seUJBQXlCO0lBWnRDO1FBY1csVUFBSyxHQUEyQixFQUFFLENBQUM7UUFDbkMsZ0JBQVcsR0FBdUI7WUFDekMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7WUFDeEMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7WUFDeEMsRUFBRSxHQUFHLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLDZCQUE2QixFQUFFLFlBQVksRUFBRSxDQUFDLG9CQUFvQixFQUFFLHFCQUFxQixDQUFDLEVBQUU7U0FDdEksQ0FBQztRQUNPLGFBQVEsR0FBVyxvQkFBb0IsQ0FBQztR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LFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsZUFBZTtxQkFDaEI7OEJBTVEsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25Db25maWcsIFBlcm1pc3Npb25NYXRyaXhJdGVtLCBQZXJtaXNzaW9uQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi8uLi9iYXNlLW1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXBlcm1pc3Npb24tbWF0cml4JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Blcm1pc3Npb24tbWF0cml4LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vcGVybWlzc2lvbi1tYXRyaXguY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uTWF0cml4Q29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KCkgaXRlbXM6IFBlcm1pc3Npb25NYXRyaXhJdGVtW10gPSBbXTtcclxuICBASW5wdXQoKSBwZXJtaXNzaW9uczogUGVybWlzc2lvbkNvbmZpZ1tdID0gW1xyXG4gICAgeyBrZXk6ICd2aWV3JywgbGFiZWxLZXk6ICdHUk9VUFMudmlldycgfSxcclxuICAgIHsga2V5OiAnZWRpdCcsIGxhYmVsS2V5OiAnR1JPVVBTLmVkaXQnIH0sXHJcbiAgICB7IGtleTogJ2NvbXBsZXRlQW5kVGVybWluYXRlJywgbGFiZWxLZXk6ICdHUk9VUFMuY29tcGxldGVBbmRUZXJtaW5hdGUnLCBjb21iaW5lZEtleXM6IFsnY29tcGxldGVQZXJtaXNzaW9uJywgJ3Rlcm1pbmF0ZVBlcm1pc3Npb24nXSB9XHJcbiAgXTtcclxuICBASW5wdXQoKSB0aXRsZUtleTogc3RyaW5nID0gJ0dST1VQUy5ncm91cE1hdHJpeCc7XHJcbiAgQElucHV0KCkgc2VsZWN0QWxsTGFiZWxLZXk6IHN0cmluZyA9ICdHUk9VUFMuc2VsZWN0QWxsJztcclxuICBASW5wdXQoKSBleHBhbmRBbGxMYWJlbEtleTogc3RyaW5nID0gJ0dST1VQUy5leHBhbmRBbGwnO1xyXG4gIEBJbnB1dCgpIGNvbGxhcHNlQWxsTGFiZWxLZXk6IHN0cmluZyA9ICdHUk9VUFMuY29sbGFwc2VBbGwnO1xyXG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIGl0ZW1zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQZXJtaXNzaW9uTWF0cml4SXRlbVtdPigpO1xyXG4gIEBPdXRwdXQoKSBwZXJtaXNzaW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQZXJtaXNzaW9uQ2hhbmdlRXZlbnQ+KCk7XHJcblxyXG4gIGFyZUFsbEV4cGFuZGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbXMubGVuZ3RoID4gMCAmJiB0aGlzLml0ZW1zLmV2ZXJ5KGl0ZW0gPT4gaXRlbS5leHBhbmRlZCk7XHJcbiAgfVxyXG5cclxuICBleHBhbmRBbGxHcm91cHMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBleHBhbmQgPSAhdGhpcy5hcmVBbGxFeHBhbmRlZCgpO1xyXG4gICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4gaXRlbS5leHBhbmRlZCA9IGV4cGFuZCk7XHJcbiAgICB0aGlzLmVtaXRJdGVtc0NoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlR3JvdXAoaXRlbTogUGVybWlzc2lvbk1hdHJpeEl0ZW0pOiB2b2lkIHtcclxuICAgIGl0ZW0uZXhwYW5kZWQgPSAhaXRlbS5leHBhbmRlZDtcclxuICAgIHRoaXMuZW1pdEl0ZW1zQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBpc0FsbFBlcm1pc3Npb25zU2VsZWN0ZWQoaXRlbTogUGVybWlzc2lvbk1hdHJpeEl0ZW0pOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnBlcm1pc3Npb25zLmV2ZXJ5KHBlcm0gPT4ge1xyXG4gICAgICBpZiAocGVybS5jb21iaW5lZEtleXMpIHtcclxuICAgICAgICByZXR1cm4gcGVybS5jb21iaW5lZEtleXMuZXZlcnkoa2V5ID0+IGl0ZW0ucGVybWlzc2lvbnNba2V5XSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGl0ZW0ucGVybWlzc2lvbnNbcGVybS5rZXldO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVTZWxlY3RBbGwoaXRlbTogUGVybWlzc2lvbk1hdHJpeEl0ZW0pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnJlYWRvbmx5KSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgYWxsU2VsZWN0ZWQgPSB0aGlzLmlzQWxsUGVybWlzc2lvbnNTZWxlY3RlZChpdGVtKTtcclxuICAgIGNvbnN0IG5ld1ZhbHVlID0gIWFsbFNlbGVjdGVkO1xyXG5cclxuICAgIHRoaXMucGVybWlzc2lvbnMuZm9yRWFjaChwZXJtID0+IHtcclxuICAgICAgaWYgKHBlcm0uY29tYmluZWRLZXlzKSB7XHJcbiAgICAgICAgcGVybS5jb21iaW5lZEtleXMuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgaXRlbS5wZXJtaXNzaW9uc1trZXldID0gbmV3VmFsdWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaXRlbS5wZXJtaXNzaW9uc1twZXJtLmtleV0gPSBuZXdWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5lbWl0SXRlbXNDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIGlzUGVybWlzc2lvblNlbGVjdGVkKGl0ZW06IFBlcm1pc3Npb25NYXRyaXhJdGVtLCBwZXJtaXNzaW9uOiBQZXJtaXNzaW9uQ29uZmlnKTogYm9vbGVhbiB7XHJcbiAgICBpZiAocGVybWlzc2lvbi5jb21iaW5lZEtleXMpIHtcclxuICAgICAgcmV0dXJuIHBlcm1pc3Npb24uY29tYmluZWRLZXlzLmV2ZXJ5KGtleSA9PiBpdGVtLnBlcm1pc3Npb25zW2tleV0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGl0ZW0ucGVybWlzc2lvbnNbcGVybWlzc2lvbi5rZXldO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlUGVybWlzc2lvbihpdGVtOiBQZXJtaXNzaW9uTWF0cml4SXRlbSwgcGVybWlzc2lvbjogUGVybWlzc2lvbkNvbmZpZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucmVhZG9ubHkpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmlzUGVybWlzc2lvblNlbGVjdGVkKGl0ZW0sIHBlcm1pc3Npb24pO1xyXG4gICAgY29uc3QgbmV3VmFsdWUgPSAhY3VycmVudFZhbHVlO1xyXG5cclxuICAgIGlmIChwZXJtaXNzaW9uLmNvbWJpbmVkS2V5cykge1xyXG4gICAgICBwZXJtaXNzaW9uLmNvbWJpbmVkS2V5cy5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgaXRlbS5wZXJtaXNzaW9uc1trZXldID0gbmV3VmFsdWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXRlbS5wZXJtaXNzaW9uc1twZXJtaXNzaW9uLmtleV0gPSBuZXdWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBlcm1pc3Npb25DaGFuZ2UuZW1pdCh7XHJcbiAgICAgIGl0ZW0sXHJcbiAgICAgIHBlcm1pc3Npb25LZXk6IHBlcm1pc3Npb24ua2V5LFxyXG4gICAgICBuZXdWYWx1ZVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5lbWl0SXRlbXNDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdEl0ZW1zQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pdGVtc0NoYW5nZS5lbWl0KFsuLi50aGlzLml0ZW1zXSk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5SXRlbShpbmRleDogbnVtYmVyLCBpdGVtOiBQZXJtaXNzaW9uTWF0cml4SXRlbSk6IHN0cmluZyB8IG51bWJlciB7XHJcbiAgICByZXR1cm4gaXRlbS5pZCA/PyBpbmRleDtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlQZXJtaXNzaW9uKGluZGV4OiBudW1iZXIsIHBlcm1pc3Npb246IFBlcm1pc3Npb25Db25maWcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHBlcm1pc3Npb24ua2V5O1xyXG4gIH1cclxufSIsIjxkaXYgY2xhc3M9XCJwZXJtaXNzaW9uLW1hdHJpeC1jYXJkXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1hdHJpeC1oZWFkZXJcIj5cclxuICAgIDxoMyBjbGFzcz1cIm1hdHJpeC10aXRsZVwiPnt7IHRpdGxlS2V5IHwgdHJhbnNsYXRlIH19PC9oMz5cclxuICAgIDxidXR0b25cclxuICAgICAgY2xhc3M9XCJleHBhbmQtYWxsLWJ0blwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAoY2xpY2spPVwiZXhwYW5kQWxsR3JvdXBzKClcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIihhcmVBbGxFeHBhbmRlZCgpID8gY29sbGFwc2VBbGxMYWJlbEtleSA6IGV4cGFuZEFsbExhYmVsS2V5KSB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJleHBhbmQtaWNvblwiIFtjbGFzcy5yb3RhdGVkXT1cImFyZUFsbEV4cGFuZGVkKClcIj51bmZvbGRfbW9yZTwvbWF0LWljb24+XHJcbiAgICAgIDxzcGFuPnt7IChhcmVBbGxFeHBhbmRlZCgpID8gY29sbGFwc2VBbGxMYWJlbEtleSA6IGV4cGFuZEFsbExhYmVsS2V5KSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwibWF0cml4LWRpdmlkZXJcIj48L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cIm1hdHJpeC1hY2NvcmRpb24tbGlzdFwiPlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgdHJhY2tCeTogdHJhY2tCeUl0ZW1cIlxyXG4gICAgICBjbGFzcz1cIm1hdHJpeC1hY2NvcmRpb24taXRlbVwiXHJcbiAgICAgIFtjbGFzcy5leHBhbmRlZF09XCJpdGVtLmV4cGFuZGVkXCI+XHJcblxyXG4gICAgICA8IS0tIEFjY29yZGlvbiBIZWFkZXIgLS0+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImFjY29yZGlvbi1oZWFkZXJcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVHcm91cChpdGVtKVwiXHJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXHJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIml0ZW0uZXhwYW5kZWRcIlxyXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cInRvZ2dsZUdyb3VwKGl0ZW0pXCJcclxuICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJ0b2dnbGVHcm91cChpdGVtKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWNjb3JkaW9uLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxoNCBjbGFzcz1cImFjY29yZGlvbi10aXRsZVwiPnt7IGl0ZW0udGl0bGUgfX08L2g0PlxyXG4gICAgICAgICAgPHAgKm5nSWY9XCJpdGVtLmRlc2NyaXB0aW9uXCIgY2xhc3M9XCJhY2NvcmRpb24tZGVzY3JpcHRpb25cIj57eyBpdGVtLmRlc2NyaXB0aW9uIH19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFjY29yZGlvbi1pY29uXCIgW2NsYXNzLnJvdGF0ZWRdPVwiaXRlbS5leHBhbmRlZFwiPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gQWNjb3JkaW9uIEJvZHkgLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmV4cGFuZGVkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFjY29yZGlvbi1kaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFjY29yZGlvbi1ib2R5XCI+XHJcbiAgICAgICAgICA8IS0tIFBlcm1pc3Npb24gSGVhZGVyIFJvdyAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJtaXNzaW9uLWhlYWRlci1yb3dcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJtaXNzaW9uLWdyb3VwLWxhYmVsXCI+e3sgaXRlbS50aXRsZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcm1pc3Npb24tc2VwYXJhdG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QtYWxsLWNvbnRhaW5lclwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdC1hbGwtbGFiZWxcIj57eyBzZWxlY3RBbGxMYWJlbEtleSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0FsbFBlcm1pc3Npb25zU2VsZWN0ZWQoaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0QWxsKGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1hbGwtY2hlY2tib3hcIj5cclxuICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIFBlcm1pc3Npb25zIFJvdyAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJtaXNzaW9ucy1yb3dcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcGVybWlzc2lvbiBvZiBwZXJtaXNzaW9uczsgdHJhY2tCeTogdHJhY2tCeVBlcm1pc3Npb25cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicGVybWlzc2lvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxyXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNQZXJtaXNzaW9uU2VsZWN0ZWQoaXRlbSwgcGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlUGVybWlzc2lvbihpdGVtLCBwZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcm1pc3Npb24tbGFiZWxcIj57eyBwZXJtaXNzaW9uLmxhYmVsS2V5IHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1tYXRyaXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9wZXJtaXNzaW9uLW1hdHJpeC9wZXJtaXNzaW9uLW1hdHJpeC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL3Blcm1pc3Npb24tbWF0cml4L3Blcm1pc3Npb24tbWF0cml4LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7OztBQWV0RCxNQUFNLE9BQU8seUJBQXlCO0lBWnRDO1FBY1csVUFBSyxHQUEyQixFQUFFLENBQUM7UUFDbkMsZ0JBQVcsR0FBdUI7WUFDekMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7WUFDeEMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7WUFDeEMsRUFBRSxHQUFHLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLDZCQUE2QixFQUFFLFlBQVksRUFBRSxDQUFDLG9CQUFvQixFQUFFLHFCQUFxQixDQUFDLEVBQUU7U0FDdEksQ0FBQztRQUNPLGFBQVEsR0FBVyxvQkFBb0IsQ0FBQztR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QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhLEVBQUUsSUFBMEI7UUFDbkQsT0FBTyxJQUFJLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBYSxFQUFFLFVBQTRCO1FBQzNELE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQztJQUN4QixDQUFDOytHQWpKVSx5QkFBeUI7bUdBQXpCLHlCQUF5Qiw4WkNuQnRDLDB1R0EyRU0sdTdIRGhFRixZQUFZLCtQQUNaLGFBQWEsbUxBQ2IsaUJBQWlCLDZXQUNqQixlQUFlOzs0RkFLTix5QkFBeUI7a0JBWnJDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixlQUFlO3FCQUNoQjs4QkFNUSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uQ29uZmlnLCBQZXJtaXNzaW9uTWF0cml4SXRlbSwgUGVybWlzc2lvbkNoYW5nZUV2ZW50IH0gZnJvbSAnLi4vLi4vYmFzZS1tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1wZXJtaXNzaW9uLW1hdHJpeCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wZXJtaXNzaW9uLW1hdHJpeC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3Blcm1pc3Npb24tbWF0cml4LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbk1hdHJpeENvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIGl0ZW1zOiBQZXJtaXNzaW9uTWF0cml4SXRlbVtdID0gW107XHJcbiAgQElucHV0KCkgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25Db25maWdbXSA9IFtcclxuICAgIHsga2V5OiAndmlldycsIGxhYmVsS2V5OiAnR1JPVVBTLnZpZXcnIH0sXHJcbiAgICB7IGtleTogJ2VkaXQnLCBsYWJlbEtleTogJ0dST1VQUy5lZGl0JyB9LFxyXG4gICAgeyBrZXk6ICdjb21wbGV0ZUFuZFRlcm1pbmF0ZScsIGxhYmVsS2V5OiAnR1JPVVBTLmNvbXBsZXRlQW5kVGVybWluYXRlJywgY29tYmluZWRLZXlzOiBbJ2NvbXBsZXRlUGVybWlzc2lvbicsICd0ZXJtaW5hdGVQZXJtaXNzaW9uJ10gfVxyXG4gIF07XHJcbiAgQElucHV0KCkgdGl0bGVLZXk6IHN0cmluZyA9ICdHUk9VUFMuZ3JvdXBNYXRyaXgnO1xyXG4gIEBJbnB1dCgpIHNlbGVjdEFsbExhYmVsS2V5OiBzdHJpbmcgPSAnR1JPVVBTLnNlbGVjdEFsbCc7XHJcbiAgQElucHV0KCkgZXhwYW5kQWxsTGFiZWxLZXk6IHN0cmluZyA9ICdHUk9VUFMuZXhwYW5kQWxsJztcclxuICBASW5wdXQoKSBjb2xsYXBzZUFsbExhYmVsS2V5OiBzdHJpbmcgPSAnR1JPVVBTLmNvbGxhcHNlQWxsJztcclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGF1dG9Mb2NrVmlldzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBpdGVtc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGVybWlzc2lvbk1hdHJpeEl0ZW1bXT4oKTtcclxuICBAT3V0cHV0KCkgcGVybWlzc2lvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGVybWlzc2lvbkNoYW5nZUV2ZW50PigpO1xyXG5cclxuICBhcmVBbGxFeHBhbmRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zLmxlbmd0aCA+IDAgJiYgdGhpcy5pdGVtcy5ldmVyeShpdGVtID0+IGl0ZW0uZXhwYW5kZWQpO1xyXG4gIH1cclxuXHJcbiAgZXhwYW5kQWxsR3JvdXBzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZXhwYW5kID0gIXRoaXMuYXJlQWxsRXhwYW5kZWQoKTtcclxuICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IGl0ZW0uZXhwYW5kZWQgPSBleHBhbmQpO1xyXG4gICAgdGhpcy5lbWl0SXRlbXNDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUdyb3VwKGl0ZW06IFBlcm1pc3Npb25NYXRyaXhJdGVtKTogdm9pZCB7XHJcbiAgICBpdGVtLmV4cGFuZGVkID0gIWl0ZW0uZXhwYW5kZWQ7XHJcbiAgICB0aGlzLmVtaXRJdGVtc0NoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgaXNBbGxQZXJtaXNzaW9uc1NlbGVjdGVkKGl0ZW06IFBlcm1pc3Npb25NYXRyaXhJdGVtKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wZXJtaXNzaW9ucy5ldmVyeShwZXJtID0+IHtcclxuICAgICAgaWYgKHBlcm0uY29tYmluZWRLZXlzKSB7XHJcbiAgICAgICAgcmV0dXJuIHBlcm0uY29tYmluZWRLZXlzLmV2ZXJ5KGtleSA9PiBpdGVtLnBlcm1pc3Npb25zW2tleV0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBpdGVtLnBlcm1pc3Npb25zW3Blcm0ua2V5XTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU2VsZWN0QWxsKGl0ZW06IFBlcm1pc3Npb25NYXRyaXhJdGVtKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5yZWFkb25seSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gdGhpcy5pc0FsbFBlcm1pc3Npb25zU2VsZWN0ZWQoaXRlbSk7XHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9ICFhbGxTZWxlY3RlZDtcclxuXHJcbiAgICB0aGlzLnBlcm1pc3Npb25zLmZvckVhY2gocGVybSA9PiB7XHJcbiAgICAgIGlmIChwZXJtLmNvbWJpbmVkS2V5cykge1xyXG4gICAgICAgIHBlcm0uY29tYmluZWRLZXlzLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgIGl0ZW0ucGVybWlzc2lvbnNba2V5XSA9IG5ld1ZhbHVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGl0ZW0ucGVybWlzc2lvbnNbcGVybS5rZXldID0gbmV3VmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLmF1dG9Mb2NrVmlldykge1xyXG4gICAgICB0aGlzLnN5bmNWaWV3UGVybWlzc2lvbihpdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVtaXRJdGVtc0NoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgaXNQZXJtaXNzaW9uU2VsZWN0ZWQoaXRlbTogUGVybWlzc2lvbk1hdHJpeEl0ZW0sIHBlcm1pc3Npb246IFBlcm1pc3Npb25Db25maWcpOiBib29sZWFuIHtcclxuICAgIGlmIChwZXJtaXNzaW9uLmNvbWJpbmVkS2V5cykge1xyXG4gICAgICByZXR1cm4gcGVybWlzc2lvbi5jb21iaW5lZEtleXMuZXZlcnkoa2V5ID0+IGl0ZW0ucGVybWlzc2lvbnNba2V5XSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXRlbS5wZXJtaXNzaW9uc1twZXJtaXNzaW9uLmtleV07XHJcbiAgfVxyXG5cclxuICBpc1Blcm1pc3Npb25EaXNhYmxlZChpdGVtOiBQZXJtaXNzaW9uTWF0cml4SXRlbSwgcGVybWlzc2lvbjogUGVybWlzc2lvbkNvbmZpZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hdXRvTG9ja1ZpZXcgJiYgcGVybWlzc2lvbi5rZXkgPT09ICd2aWV3Jykge1xyXG4gICAgICByZXR1cm4gdGhpcy5oYXNOb25WaWV3UGVybWlzc2lvbihpdGVtKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVBlcm1pc3Npb24oaXRlbTogUGVybWlzc2lvbk1hdHJpeEl0ZW0sIHBlcm1pc3Npb246IFBlcm1pc3Npb25Db25maWcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzUGVybWlzc2lvbkRpc2FibGVkKGl0ZW0sIHBlcm1pc3Npb24pKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmlzUGVybWlzc2lvblNlbGVjdGVkKGl0ZW0sIHBlcm1pc3Npb24pO1xyXG4gICAgY29uc3QgbmV3VmFsdWUgPSAhY3VycmVudFZhbHVlO1xyXG5cclxuICAgIGlmIChwZXJtaXNzaW9uLmNvbWJpbmVkS2V5cykge1xyXG4gICAgICBwZXJtaXNzaW9uLmNvbWJpbmVkS2V5cy5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgaXRlbS5wZXJtaXNzaW9uc1trZXldID0gbmV3VmFsdWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXRlbS5wZXJtaXNzaW9uc1twZXJtaXNzaW9uLmtleV0gPSBuZXdWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hdXRvTG9ja1ZpZXcpIHtcclxuICAgICAgdGhpcy5zeW5jVmlld1Blcm1pc3Npb24oaXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wZXJtaXNzaW9uQ2hhbmdlLmVtaXQoe1xyXG4gICAgICBpdGVtLFxyXG4gICAgICBwZXJtaXNzaW9uS2V5OiBwZXJtaXNzaW9uLmtleSxcclxuICAgICAgbmV3VmFsdWVcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZW1pdEl0ZW1zQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc05vblZpZXdQZXJtaXNzaW9uKGl0ZW06IFBlcm1pc3Npb25NYXRyaXhJdGVtKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wZXJtaXNzaW9ucy5zb21lKHBlcm0gPT4ge1xyXG4gICAgICBpZiAocGVybS5rZXkgPT09ICd2aWV3Jykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocGVybS5jb21iaW5lZEtleXMpIHtcclxuICAgICAgICByZXR1cm4gcGVybS5jb21iaW5lZEtleXMuc29tZShrZXkgPT4gaXRlbS5wZXJtaXNzaW9uc1trZXldKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gISFpdGVtLnBlcm1pc3Npb25zW3Blcm0ua2V5XTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzeW5jVmlld1Blcm1pc3Npb24oaXRlbTogUGVybWlzc2lvbk1hdHJpeEl0ZW0pOiB2b2lkIHtcclxuICAgIGNvbnN0IHZpZXdLZXkgPSB0aGlzLnBlcm1pc3Npb25zLmZpbmQocCA9PiBwLmtleSA9PT0gJ3ZpZXcnICYmICFwLmNvbWJpbmVkS2V5cyk/LmtleTtcclxuICAgIGlmICghdmlld0tleSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5oYXNOb25WaWV3UGVybWlzc2lvbihpdGVtKSkge1xyXG4gICAgICBpdGVtLnBlcm1pc3Npb25zW3ZpZXdLZXldID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdEl0ZW1zQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYXV0b0xvY2tWaWV3KSB7XHJcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHRoaXMuc3luY1ZpZXdQZXJtaXNzaW9uKGl0ZW0pKTtcclxuICAgIH1cclxuICAgIHRoaXMuaXRlbXNDaGFuZ2UuZW1pdChbLi4udGhpcy5pdGVtc10pO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUl0ZW0oaW5kZXg6IG51bWJlciwgaXRlbTogUGVybWlzc2lvbk1hdHJpeEl0ZW0pOiBzdHJpbmcgfCBudW1iZXIge1xyXG4gICAgcmV0dXJuIGl0ZW0uaWQgPz8gaW5kZXg7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5UGVybWlzc2lvbihpbmRleDogbnVtYmVyLCBwZXJtaXNzaW9uOiBQZXJtaXNzaW9uQ29uZmlnKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBwZXJtaXNzaW9uLmtleTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInBlcm1pc3Npb24tbWF0cml4LWNhcmRcIj5cclxuICA8ZGl2IGNsYXNzPVwibWF0cml4LWhlYWRlclwiPlxyXG4gICAgPGgzIGNsYXNzPVwibWF0cml4LXRpdGxlXCI+e3sgdGl0bGVLZXkgfCB0cmFuc2xhdGUgfX08L2gzPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICBjbGFzcz1cImV4cGFuZC1hbGwtYnRuXCJcclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIChjbGljayk9XCJleHBhbmRBbGxHcm91cHMoKVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiKGFyZUFsbEV4cGFuZGVkKCkgPyBjb2xsYXBzZUFsbExhYmVsS2V5IDogZXhwYW5kQWxsTGFiZWxLZXkpIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImV4cGFuZC1pY29uXCIgW2NsYXNzLnJvdGF0ZWRdPVwiYXJlQWxsRXhwYW5kZWQoKVwiPnVuZm9sZF9tb3JlPC9tYXQtaWNvbj5cclxuICAgICAgPHNwYW4+e3sgKGFyZUFsbEV4cGFuZGVkKCkgPyBjb2xsYXBzZUFsbExhYmVsS2V5IDogZXhwYW5kQWxsTGFiZWxLZXkpIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJtYXRyaXgtZGl2aWRlclwiPjwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwibWF0cml4LWFjY29yZGlvbi1saXN0XCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyB0cmFja0J5OiB0cmFja0J5SXRlbVwiXHJcbiAgICAgIGNsYXNzPVwibWF0cml4LWFjY29yZGlvbi1pdGVtXCJcclxuICAgICAgW2NsYXNzLmV4cGFuZGVkXT1cIml0ZW0uZXhwYW5kZWRcIj5cclxuXHJcbiAgICAgIDwhLS0gQWNjb3JkaW9uIEhlYWRlciAtLT5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiYWNjb3JkaW9uLWhlYWRlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUdyb3VwKGl0ZW0pXCJcclxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcclxuICAgICAgICB0YWJpbmRleD1cIjBcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXRlbS5leHBhbmRlZFwiXHJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwidG9nZ2xlR3JvdXAoaXRlbSlcIlxyXG4gICAgICAgIChrZXlkb3duLnNwYWNlKT1cInRvZ2dsZUdyb3VwKGl0ZW0pOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY2NvcmRpb24tY29udGVudFwiPlxyXG4gICAgICAgICAgPGg0IGNsYXNzPVwiYWNjb3JkaW9uLXRpdGxlXCI+e3sgaXRlbS50aXRsZSB9fTwvaDQ+XHJcbiAgICAgICAgICA8cCAqbmdJZj1cIml0ZW0uZGVzY3JpcHRpb25cIiBjbGFzcz1cImFjY29yZGlvbi1kZXNjcmlwdGlvblwiPnt7IGl0ZW0uZGVzY3JpcHRpb24gfX08L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiYWNjb3JkaW9uLWljb25cIiBbY2xhc3Mucm90YXRlZF09XCJpdGVtLmV4cGFuZGVkXCI+a2V5Ym9hcmRfYXJyb3dfZG93bjwvbWF0LWljb24+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBBY2NvcmRpb24gQm9keSAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uZXhwYW5kZWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWNjb3JkaW9uLWRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWNjb3JkaW9uLWJvZHlcIj5cclxuICAgICAgICAgIDwhLS0gUGVybWlzc2lvbiBIZWFkZXIgUm93IC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBlcm1pc3Npb24taGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcm1pc3Npb24tZ3JvdXAtbGFiZWxcIj57eyBpdGVtLnRpdGxlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVybWlzc2lvbi1zZXBhcmF0b3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC1hbGwtY29udGFpbmVyXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0LWFsbC1sYWJlbFwiPnt7IHNlbGVjdEFsbExhYmVsS2V5IHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQWxsUGVybWlzc2lvbnNTZWxlY3RlZChpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGwoaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gUGVybWlzc2lvbnMgUm93IC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBlcm1pc3Npb25zLXJvd1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwZXJtaXNzaW9uIG9mIHBlcm1pc3Npb25zOyB0cmFja0J5OiB0cmFja0J5UGVybWlzc2lvblwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwZXJtaXNzaW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1Blcm1pc3Npb25TZWxlY3RlZChpdGVtLCBwZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNQZXJtaXNzaW9uRGlzYWJsZWQoaXRlbSwgcGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVQZXJtaXNzaW9uKGl0ZW0sIHBlcm1pc3Npb24pXCJcclxuICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVybWlzc2lvbi1sYWJlbFwiPnt7IHBlcm1pc3Npb24ubGFiZWxLZXkgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -76,7 +76,7 @@ export class ReportDetailsDialogComponent {
|
|
|
76
76
|
return `${mainLine}${directorateLine}`;
|
|
77
77
|
}
|
|
78
78
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReportDetailsDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.TranslateService }, { token: i3.BackendService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
79
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ReportDetailsDialogComponent, isStandalone: true, selector: "app-audit-log-details-dialog", host: { listeners: { "window:keyup.esc": "onKeyUp()", "document:click": "onBackdropClick($event)" } }, ngImport: i0, template: "<mat-dialog-content style=\"max-height: 70vh; overflow: auto; position: relative;\">\r\n <button
|
|
79
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ReportDetailsDialogComponent, isStandalone: true, selector: "app-audit-log-details-dialog", host: { listeners: { "window:keyup.esc": "onKeyUp()", "document:click": "onBackdropClick($event)" } }, ngImport: i0, template: "<mat-dialog-content style=\"max-height: 70vh; overflow: auto; position: relative;\">\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n class=\"close-button\"\r\n (click)=\"cancel()\"\r\n [attr.dir]=\"dialogDirection\"\r\n id=\"report-details-close-btn\"\r\n [attr.aria-label]=\"'BASE_TABLE.closeDialog' | translate\">\r\n <mat-icon aria-hidden=\"true\">close</mat-icon>\r\n </button>\r\n\r\n <h1 mat-dialog-title [innerHTML]=\"getTitle()\"></h1>\r\n\r\n <app-base-table\r\n [pageInfo]=\"pageInfo\"\r\n [columns]=\"columns\"\r\n id=\"junior\"\r\n [enforceRefresh]=\"true\"\r\n [reportRequest]=\"reportRequest\">\r\n </app-base-table>\r\n</mat-dialog-content>\r\n\r\n", styles: ["::ng-deep .mat-dialog-actions{justify-content:flex-end!important}.close-button{position:absolute;right:8px;top:8px;z-index:10;background-color:#fff;border-radius:50%}:host-context([dir=\"rtl\"]) .close-button{right:auto;left:8px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: BaseTableComponent, selector: "app-base-table", inputs: ["filterFields", "noDataFoundSvgPath", "noDataFoundTitle", "noDataFoundSubtitle", "noResultSvgPath", "noResultTitle", "noResultSubtitle", "pageInfo", "enablePagination", "mobilePageSize", "mobileLoadMoreIncrement", "data", "listAction", "extraActions", "buttonsDisplayMode", "columns", "filters", "pathParam", "extraButton", "enforceRefresh", "isPending", "trigger", "reportRequest", "separateEndpointData", "manageablePages", "totalPagesCount", "currentPageIndex", "customizedData"], outputs: ["buttonClicked", "pageChange", "userAction", "hyperLinkAction", "extraAction", "selectedColumn", "listActionClicked", "showDialog", "clickRoutePage"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
80
80
|
}
|
|
81
81
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReportDetailsDialogComponent, decorators: [{
|
|
82
82
|
type: Component,
|
|
@@ -88,7 +88,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
88
88
|
MatDialogTitle,
|
|
89
89
|
MatIconButton,
|
|
90
90
|
MatIcon
|
|
91
|
-
], template: "<mat-dialog-content style=\"max-height: 70vh; overflow: auto; position: relative;\">\r\n <button
|
|
91
|
+
], template: "<mat-dialog-content style=\"max-height: 70vh; overflow: auto; position: relative;\">\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n class=\"close-button\"\r\n (click)=\"cancel()\"\r\n [attr.dir]=\"dialogDirection\"\r\n id=\"report-details-close-btn\"\r\n [attr.aria-label]=\"'BASE_TABLE.closeDialog' | translate\">\r\n <mat-icon aria-hidden=\"true\">close</mat-icon>\r\n </button>\r\n\r\n <h1 mat-dialog-title [innerHTML]=\"getTitle()\"></h1>\r\n\r\n <app-base-table\r\n [pageInfo]=\"pageInfo\"\r\n [columns]=\"columns\"\r\n id=\"junior\"\r\n [enforceRefresh]=\"true\"\r\n [reportRequest]=\"reportRequest\">\r\n </app-base-table>\r\n</mat-dialog-content>\r\n\r\n", styles: ["::ng-deep .mat-dialog-actions{justify-content:flex-end!important}.close-button{position:absolute;right:8px;top:8px;z-index:10;background-color:#fff;border-radius:50%}:host-context([dir=\"rtl\"]) .close-button{right:auto;left:8px}\n"] }]
|
|
92
92
|
}], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
93
93
|
type: Inject,
|
|
94
94
|
args: [MAT_DIALOG_DATA]
|
|
@@ -99,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
99
99
|
type: HostListener,
|
|
100
100
|
args: ['document:click', ['$event']]
|
|
101
101
|
}] } });
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRldGFpbHMtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludm9pY2VxL3VpLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0LWRldGFpbHMtZGlhbG9nL3JlcG9ydC1kZXRhaWxzLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydC1kZXRhaWxzLWRpYWxvZy9yZXBvcnQtZGV0YWlscy1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQ0wsZUFBZSxFQUFvQixnQkFBZ0IsRUFDckMsY0FBYyxHQUM3QixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZUFBZSxFQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBRXRFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sRUFBWSxhQUFhLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUVsRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBaUIvQyxNQUFNLE9BQU8sNEJBQTRCO0lBZXZDLFlBQW1CLFNBQXFELEVBQzVCLElBQVMsRUFDakMsZ0JBQWtDLEVBQ25DLGNBQTZCLEVBQzVCLEtBQWlCO1FBSmxCLGNBQVMsR0FBVCxTQUFTLENBQTRDO1FBQzVCLFNBQUksR0FBSixJQUFJLENBQUs7UUFDakMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNuQyxtQkFBYyxHQUFk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QUFXLDhCQUNYLGVBQWUsK0JBQ2Ysa0JBQWtCLHlzQkFDbEIsZ0JBQWdCLHlHQUNoQixjQUFjLCtIQUNkLGFBQWEsNkZBQ2IsT0FBTzs7NEZBS0UsNEJBQTRCO2tCQWZ4QyxTQUFTOytCQUNFLDhCQUE4QixjQUM1QixJQUFJLFdBQ1A7d0JBQ1AsV0FBVzt3QkFDWCxlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsT0FBTztxQkFDUjs7MEJBb0JZLE1BQU07MkJBQUMsZUFBZTs4SEFNRCxPQUFPO3NCQUF4QyxZQUFZO3VCQUFDLGtCQUFrQjtnQkEyQmhDLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ0FjdGlvbnMsIE1hdERpYWxvZ0NvbnRlbnQsXHJcbiAgTWF0RGlhbG9nUmVmLCBNYXREaWFsb2dUaXRsZSxcclxufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHtGaWVsZEluZm8sIFBhZ2VJbmZvLCBSZXBvcnRSZXF1ZXN0LCBUYWJsZUNvbHVtbn0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWxcIjtcclxuaW1wb3J0IHtCYXNlVGFibGVDb21wb25lbnR9IGZyb20gXCIuLi9iYXNlLXRhYmxlL2Jhc2UtdGFibGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7TWF0QnV0dG9uLCBNYXRJY29uQnV0dG9ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlc1wiO1xyXG5pbXBvcnQge01hdEljb259IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1hdWRpdC1sb2ctZGV0YWlscy1kaWFsb2cnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBCYXNlVGFibGVDb21wb25lbnQsXHJcbiAgICBNYXREaWFsb2dDb250ZW50LFxyXG4gICAgTWF0RGlhbG9nVGl0bGUsXHJcbiAgICBNYXRJY29uQnV0dG9uLFxyXG4gICAgTWF0SWNvblxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcG9ydC1kZXRhaWxzLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3JlcG9ydC1kZXRhaWxzLWRpYWxvZy5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVwb3J0RGV0YWlsc0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCAsIEFmdGVyVmlld0luaXR7XHJcbiAgZGlhbG9nRGlyZWN0aW9uOiAnbHRyJyB8ICdydGwnID0gJ2x0cic7XHJcblxyXG4gIHBhZ2VJbmZvOiBQYWdlSW5mbztcclxuICBmaWVsZHM6IEZpZWxkSW5mb1tdID0gW107XHJcblxyXG4gIGlzVGVybWluYXRpb24gOiBib29sZWFuPWZhbHNlO1xyXG4gIGNvbW1lbnQ6IHN0cmluZyA9ICcnO1xyXG4gIGV4dGVybmFsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2lnbmluZ1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdG9rZW5SZWZlcmVuY2U6IHN0cmluZyA9IFwiXCI7XHJcbiAgd2FybmluZ01zZyA9IGZhbHNlO1xyXG4gIGl0ZW06IGFueSA9IHt9O1xyXG4gIHJlcG9ydFJlcXVlc3Q6IFJlcG9ydFJlcXVlc3Q7XHJcbiAgY29sdW1uczogVGFibGVDb2x1bW48YW55PltdO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxSZXBvcnREZXRhaWxzRGlhbG9nQ29tcG9uZW50PixcclxuICAgICAgICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcclxuICAgICAgICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHVibGljIGJhY2tlbmRTZXJ2aWNlOkJhY2tlbmRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgIGRpYWxvZ1JlZi5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5dXAuZXNjJykgb25LZXlVcCgpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYWdlSW5mbyA9IHRoaXMuZGF0YS5wYWdlSW5mbztcclxuICAgIHRoaXMucGFnZUluZm8uaGlkZVRpdGxlID0gdHJ1ZTtcclxuICAgIHRoaXMuaXRlbSA9IHRoaXMuZGF0YS5pdGVtO1xyXG4gICAgdGhpcy5wYWdlSW5mby5oaWRlRXh0cmFjdEJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5kYXRhLmNvbHVtbnM7XHJcbiAgICB0aGlzLnJlcG9ydFJlcXVlc3QgPSB0aGlzLmRhdGEucmVxdWVzdDtcclxuICAgIHRoaXMud2FybmluZ01zZyA9IHRoaXMuZGF0YS53YXJuaW5nTXNnIHx8IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnbWF0LWRpYWxvZy1jb250YWluZXInKTtcclxuICAgIGlmIChjb250YWluZXIgJiYgY29udGFpbmVyLmdldEF0dHJpYnV0ZSgnZGlyJykpIHtcclxuICAgICAgdGhpcy5kaWFsb2dEaXJlY3Rpb24gPSBjb250YWluZXIuZ2V0QXR0cmlidXRlKCdkaXInKSBhcyAnbHRyJyB8ICdydGwnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuY2VsKCkge1xyXG4gICAgdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QuZmlsdGVycyA9IFtdO1xyXG4gICAgdGhpcy5iYWNrZW5kU2VydmljZS5pc0VtcHR5SXRlbXMgPSBmYWxzZTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25CYWNrZHJvcENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAodGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnY2RrLW92ZXJsYXktYmFja2Ryb3AnKSkge1xyXG4gICAgICB0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdC5maWx0ZXJzID0gW107XHJcbiAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UuaXNFbXB0eUl0ZW1zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUaXRsZSgpIHtcclxuICAgIGlmICh0aGlzLml0ZW0/LmlzZWNfdmFsdWVfYXIpIHtcclxuICAgICAgY29uc3QgaXNlY0xhYmVsID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0lTRUMnKTtcclxuICAgICAgcmV0dXJuIGA8c3Ryb25nPiR7aXNlY0xhYmVsfSAke3RoaXMuaXRlbS5pc2VjX3ZhbHVlX2FyfTwvc3Ryb25nPmA7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VjdG9yTGFiZWwgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnU0VDVE9SJyk7XHJcbiAgICBjb25zdCBwZXJpb2RMYWJlbCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdGT1JfUEVSSU9EJyk7XHJcbiAgICBjb25zdCBkaXJlY3RvcmF0ZUxhYmVsID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0RJUkVDVE9SQVRFJyk7XHJcblxyXG4gICAgY29uc3Qgc2VjdG9yVGV4dCA9IHRoaXMuaXRlbS5zZWN0b3IgPyBgJHtzZWN0b3JMYWJlbH0gJHt0aGlzLml0ZW0uc2VjdG9yfWAgOiAnJztcclxuICAgIGNvbnN0IHBlcmlvZFRleHQgPSB0aGlzLml0ZW0ucGVyaW9kID8gYCAke3BlcmlvZExhYmVsfSAke3RoaXMuaXRlbS5wZXJpb2R9YCA6ICcnO1xyXG4gICAgY29uc3QgeWVhclRleHQgPSB0aGlzLml0ZW0ueWVhciA/IGAgLSAke3RoaXMuaXRlbS55ZWFyfWAgOiAnJztcclxuICAgIGNvbnN0IGRpcmVjdG9yYXRlTGluZSA9IHRoaXMuaXRlbS5kaXJlY3RvcmF0ZSA/IGA8YnI+PHN0cm9uZz4ke2RpcmVjdG9yYXRlTGFiZWx9IC0gJHt0aGlzLml0ZW0uZGlyZWN0b3JhdGV9PC9zdHJvbmc+YCA6ICcnO1xyXG5cclxuICAgIGNvbnN0IG1haW5MaW5lID0gKHNlY3RvclRleHQgfHwgcGVyaW9kVGV4dCB8fCB5ZWFyVGV4dClcclxuICAgICAgPyBgPHN0cm9uZz4ke1tzZWN0b3JUZXh0LCBwZXJpb2RUZXh0LCB5ZWFyVGV4dF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJycpfTwvc3Ryb25nPmBcclxuICAgICAgOiAnJztcclxuXHJcbiAgICByZXR1cm4gYCR7bWFpbkxpbmV9JHtkaXJlY3RvcmF0ZUxpbmV9YDtcclxuICB9XHJcblxyXG5cclxuXHJcbn1cclxuIiwiPG1hdC1kaWFsb2ctY29udGVudCBzdHlsZT1cIm1heC1oZWlnaHQ6IDcwdmg7IG92ZXJmbG93OiBhdXRvOyBwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJjbG9zZS1idXR0b25cIiAoY2xpY2spPVwiY2FuY2VsKClcIiBbYXR0ci5kaXJdPVwiZGlhbG9nRGlyZWN0aW9uXCIgaWQ9XCJyZXBvcnQtZGV0YWlscy1jbG9zZS1idG5cIj5cclxuICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgPC9idXR0b24+XHJcblxyXG4gICAgPGgxIG1hdC1kaWFsb2ctdGl0bGUgW2lubmVySFRNTF09XCJnZXRUaXRsZSgpXCI+PC9oMT5cclxuXHJcbiAgICA8YXBwLWJhc2UtdGFibGVcclxuICAgICAgICAgICAgW3BhZ2VJbmZvXT1cInBhZ2VJbmZvXCJcclxuICAgICAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAgICAgICAgICAgIGlkPVwianVuaW9yXCJcclxuICAgICAgICAgICAgW2VuZm9yY2VSZWZyZXNoXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbcmVwb3J0UmVxdWVzdF09XCJyZXBvcnRSZXF1ZXN0XCI+XHJcbiAgICA8L2FwcC1iYXNlLXRhYmxlPlxyXG48L21hdC1kaWFsb2ctY29udGVudD5cclxuXHJcbiJdfQ==
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRldGFpbHMtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludm9pY2VxL3VpLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0LWRldGFpbHMtZGlhbG9nL3JlcG9ydC1kZXRhaWxzLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydC1kZXRhaWxzLWRpYWxvZy9yZXBvcnQtZGV0YWlscy1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQ0wsZUFBZSxFQUFvQixnQkFBZ0IsRUFDckMsY0FBYyxHQUM3QixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZUFBZSxFQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBRXRFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sRUFBWSxhQUFhLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUVsRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBaUIvQyxNQUFNLE9BQU8sNEJBQTRCO0lBZXZDLFlBQW1CLFNBQXFELEVBQzVCLElBQVMsRUFDakMsZ0JBQWtDLEVBQ25DLGNBQTZCLEVBQzVCLEtBQWlCO1FBSmxCLGNBQVMsR0FBVCxTQUFTLENBQTRDO1FBQzVCLFNBQUksR0FBSixJQUFJLENBQUs7UUFDakMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNuQyxtQkFBYyxHQUFk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QUFXLDhCQUNYLGVBQWUsNEZBQ2Ysa0JBQWtCLHlzQkFDbEIsZ0JBQWdCLHlHQUNoQixjQUFjLCtIQUNkLGFBQWEsNkZBQ2IsT0FBTzs7NEZBS0UsNEJBQTRCO2tCQWZ4QyxTQUFTOytCQUNFLDhCQUE4QixjQUM1QixJQUFJLFdBQ1A7d0JBQ1AsV0FBVzt3QkFDWCxlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsT0FBTztxQkFDUjs7MEJBb0JZLE1BQU07MkJBQUMsZUFBZTs4SEFNRCxPQUFPO3NCQUF4QyxZQUFZO3VCQUFDLGtCQUFrQjtnQkEyQmhDLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ0FjdGlvbnMsIE1hdERpYWxvZ0NvbnRlbnQsXHJcbiAgTWF0RGlhbG9nUmVmLCBNYXREaWFsb2dUaXRsZSxcclxufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHtGaWVsZEluZm8sIFBhZ2VJbmZvLCBSZXBvcnRSZXF1ZXN0LCBUYWJsZUNvbHVtbn0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWxcIjtcclxuaW1wb3J0IHtCYXNlVGFibGVDb21wb25lbnR9IGZyb20gXCIuLi9iYXNlLXRhYmxlL2Jhc2UtdGFibGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7TWF0QnV0dG9uLCBNYXRJY29uQnV0dG9ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlc1wiO1xyXG5pbXBvcnQge01hdEljb259IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1hdWRpdC1sb2ctZGV0YWlscy1kaWFsb2cnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBCYXNlVGFibGVDb21wb25lbnQsXHJcbiAgICBNYXREaWFsb2dDb250ZW50LFxyXG4gICAgTWF0RGlhbG9nVGl0bGUsXHJcbiAgICBNYXRJY29uQnV0dG9uLFxyXG4gICAgTWF0SWNvblxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcG9ydC1kZXRhaWxzLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3JlcG9ydC1kZXRhaWxzLWRpYWxvZy5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVwb3J0RGV0YWlsc0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCAsIEFmdGVyVmlld0luaXR7XHJcbiAgZGlhbG9nRGlyZWN0aW9uOiAnbHRyJyB8ICdydGwnID0gJ2x0cic7XHJcblxyXG4gIHBhZ2VJbmZvOiBQYWdlSW5mbztcclxuICBmaWVsZHM6IEZpZWxkSW5mb1tdID0gW107XHJcblxyXG4gIGlzVGVybWluYXRpb24gOiBib29sZWFuPWZhbHNlO1xyXG4gIGNvbW1lbnQ6IHN0cmluZyA9ICcnO1xyXG4gIGV4dGVybmFsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2lnbmluZ1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdG9rZW5SZWZlcmVuY2U6IHN0cmluZyA9IFwiXCI7XHJcbiAgd2FybmluZ01zZyA9IGZhbHNlO1xyXG4gIGl0ZW06IGFueSA9IHt9O1xyXG4gIHJlcG9ydFJlcXVlc3Q6IFJlcG9ydFJlcXVlc3Q7XHJcbiAgY29sdW1uczogVGFibGVDb2x1bW48YW55PltdO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxSZXBvcnREZXRhaWxzRGlhbG9nQ29tcG9uZW50PixcclxuICAgICAgICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcclxuICAgICAgICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHVibGljIGJhY2tlbmRTZXJ2aWNlOkJhY2tlbmRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgIGRpYWxvZ1JlZi5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5dXAuZXNjJykgb25LZXlVcCgpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYWdlSW5mbyA9IHRoaXMuZGF0YS5wYWdlSW5mbztcclxuICAgIHRoaXMucGFnZUluZm8uaGlkZVRpdGxlID0gdHJ1ZTtcclxuICAgIHRoaXMuaXRlbSA9IHRoaXMuZGF0YS5pdGVtO1xyXG4gICAgdGhpcy5wYWdlSW5mby5oaWRlRXh0cmFjdEJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5kYXRhLmNvbHVtbnM7XHJcbiAgICB0aGlzLnJlcG9ydFJlcXVlc3QgPSB0aGlzLmRhdGEucmVxdWVzdDtcclxuICAgIHRoaXMud2FybmluZ01zZyA9IHRoaXMuZGF0YS53YXJuaW5nTXNnIHx8IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnbWF0LWRpYWxvZy1jb250YWluZXInKTtcclxuICAgIGlmIChjb250YWluZXIgJiYgY29udGFpbmVyLmdldEF0dHJpYnV0ZSgnZGlyJykpIHtcclxuICAgICAgdGhpcy5kaWFsb2dEaXJlY3Rpb24gPSBjb250YWluZXIuZ2V0QXR0cmlidXRlKCdkaXInKSBhcyAnbHRyJyB8ICdydGwnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuY2VsKCkge1xyXG4gICAgdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QuZmlsdGVycyA9IFtdO1xyXG4gICAgdGhpcy5iYWNrZW5kU2VydmljZS5pc0VtcHR5SXRlbXMgPSBmYWxzZTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25CYWNrZHJvcENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAodGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnY2RrLW92ZXJsYXktYmFja2Ryb3AnKSkge1xyXG4gICAgICB0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdC5maWx0ZXJzID0gW107XHJcbiAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UuaXNFbXB0eUl0ZW1zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUaXRsZSgpIHtcclxuICAgIGlmICh0aGlzLml0ZW0/LmlzZWNfdmFsdWVfYXIpIHtcclxuICAgICAgY29uc3QgaXNlY0xhYmVsID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0lTRUMnKTtcclxuICAgICAgcmV0dXJuIGA8c3Ryb25nPiR7aXNlY0xhYmVsfSAke3RoaXMuaXRlbS5pc2VjX3ZhbHVlX2FyfTwvc3Ryb25nPmA7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VjdG9yTGFiZWwgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnU0VDVE9SJyk7XHJcbiAgICBjb25zdCBwZXJpb2RMYWJlbCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdGT1JfUEVSSU9EJyk7XHJcbiAgICBjb25zdCBkaXJlY3RvcmF0ZUxhYmVsID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0RJUkVDVE9SQVRFJyk7XHJcblxyXG4gICAgY29uc3Qgc2VjdG9yVGV4dCA9IHRoaXMuaXRlbS5zZWN0b3IgPyBgJHtzZWN0b3JMYWJlbH0gJHt0aGlzLml0ZW0uc2VjdG9yfWAgOiAnJztcclxuICAgIGNvbnN0IHBlcmlvZFRleHQgPSB0aGlzLml0ZW0ucGVyaW9kID8gYCAke3BlcmlvZExhYmVsfSAke3RoaXMuaXRlbS5wZXJpb2R9YCA6ICcnO1xyXG4gICAgY29uc3QgeWVhclRleHQgPSB0aGlzLml0ZW0ueWVhciA/IGAgLSAke3RoaXMuaXRlbS55ZWFyfWAgOiAnJztcclxuICAgIGNvbnN0IGRpcmVjdG9yYXRlTGluZSA9IHRoaXMuaXRlbS5kaXJlY3RvcmF0ZSA/IGA8YnI+PHN0cm9uZz4ke2RpcmVjdG9yYXRlTGFiZWx9IC0gJHt0aGlzLml0ZW0uZGlyZWN0b3JhdGV9PC9zdHJvbmc+YCA6ICcnO1xyXG5cclxuICAgIGNvbnN0IG1haW5MaW5lID0gKHNlY3RvclRleHQgfHwgcGVyaW9kVGV4dCB8fCB5ZWFyVGV4dClcclxuICAgICAgPyBgPHN0cm9uZz4ke1tzZWN0b3JUZXh0LCBwZXJpb2RUZXh0LCB5ZWFyVGV4dF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJycpfTwvc3Ryb25nPmBcclxuICAgICAgOiAnJztcclxuXHJcbiAgICByZXR1cm4gYCR7bWFpbkxpbmV9JHtkaXJlY3RvcmF0ZUxpbmV9YDtcclxuICB9XHJcblxyXG5cclxuXHJcbn1cclxuIiwiPG1hdC1kaWFsb2ctY29udGVudCBzdHlsZT1cIm1heC1oZWlnaHQ6IDcwdmg7IG92ZXJmbG93OiBhdXRvOyBwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcbiAgPGJ1dHRvblxyXG4gICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgIGNsYXNzPVwiY2xvc2UtYnV0dG9uXCJcclxuICAgIChjbGljayk9XCJjYW5jZWwoKVwiXHJcbiAgICBbYXR0ci5kaXJdPVwiZGlhbG9nRGlyZWN0aW9uXCJcclxuICAgIGlkPVwicmVwb3J0LWRldGFpbHMtY2xvc2UtYnRuXCJcclxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0JBU0VfVEFCTEUuY2xvc2VEaWFsb2cnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICA8bWF0LWljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gIDwvYnV0dG9uPlxyXG5cclxuICAgIDxoMSBtYXQtZGlhbG9nLXRpdGxlIFtpbm5lckhUTUxdPVwiZ2V0VGl0bGUoKVwiPjwvaDE+XHJcblxyXG4gICAgPGFwcC1iYXNlLXRhYmxlXHJcbiAgICAgICAgICAgIFtwYWdlSW5mb109XCJwYWdlSW5mb1wiXHJcbiAgICAgICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxyXG4gICAgICAgICAgICBpZD1cImp1bmlvclwiXHJcbiAgICAgICAgICAgIFtlbmZvcmNlUmVmcmVzaF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW3JlcG9ydFJlcXVlc3RdPVwicmVwb3J0UmVxdWVzdFwiPlxyXG4gICAgPC9hcHAtYmFzZS10YWJsZT5cclxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XHJcblxyXG4iXX0=
|