@unifylib/ui-lib 1.2.1 → 1.2.3
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/base-model/field-info.mjs +2 -1
- package/esm2022/lib/components/base-form-canvas/NumbersOnlyDirective.mjs +34 -2
- package/esm2022/lib/components/base-form-canvas/PhoneNumberOnlyDirective.mjs +123 -0
- package/esm2022/lib/components/base-form-canvas/base-form-canvas.component.mjs +3 -3
- package/esm2022/lib/components/permission-matrix/permission-matrix.component.mjs +35 -14
- package/fesm2022/iq-ui-lib.mjs +70 -16
- package/fesm2022/iq-ui-lib.mjs.map +1 -1
- package/fesm2022/unifylib-ui-lib.mjs +70 -16
- package/fesm2022/unifylib-ui-lib.mjs.map +1 -1
- package/lib/base-model/field-info.d.ts +1 -0
- package/lib/components/base-form-canvas/NumbersOnlyDirective.d.ts +3 -1
- package/lib/components/base-form-canvas/PhoneNumberOnlyDirective.d.ts +16 -0
- package/lib/components/permission-matrix/permission-matrix.component.d.ts +4 -1
- package/package.json +1 -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.hideSelectAll = false;
|
|
24
25
|
this.autoLockView = false;
|
|
25
26
|
this.itemsChange = new EventEmitter();
|
|
26
27
|
this.permissionChange = new EventEmitter();
|
|
@@ -51,6 +52,9 @@ export class PermissionMatrixComponent {
|
|
|
51
52
|
const allSelected = this.isAllPermissionsSelected(item);
|
|
52
53
|
const newValue = !allSelected;
|
|
53
54
|
this.permissions.forEach(perm => {
|
|
55
|
+
if (this.autoLockView && !newValue && perm.key === 'view') {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
54
58
|
if (perm.combinedKeys) {
|
|
55
59
|
perm.combinedKeys.forEach(key => {
|
|
56
60
|
item.permissions[key] = newValue;
|
|
@@ -72,13 +76,7 @@ export class PermissionMatrixComponent {
|
|
|
72
76
|
return item.permissions[permission.key];
|
|
73
77
|
}
|
|
74
78
|
isPermissionDisabled(item, permission) {
|
|
75
|
-
|
|
76
|
-
return true;
|
|
77
|
-
}
|
|
78
|
-
if (this.autoLockView && permission.key === 'view') {
|
|
79
|
-
return this.hasNonViewPermission(item);
|
|
80
|
-
}
|
|
81
|
-
return false;
|
|
79
|
+
return this.readonly;
|
|
82
80
|
}
|
|
83
81
|
togglePermission(item, permission) {
|
|
84
82
|
if (this.isPermissionDisabled(item, permission)) {
|
|
@@ -86,6 +84,16 @@ export class PermissionMatrixComponent {
|
|
|
86
84
|
}
|
|
87
85
|
const currentValue = this.isPermissionSelected(item, permission);
|
|
88
86
|
const newValue = !currentValue;
|
|
87
|
+
if (this.autoLockView && permission.key === 'view' && !newValue) {
|
|
88
|
+
this.clearAllPermissions(item);
|
|
89
|
+
this.permissionChange.emit({
|
|
90
|
+
item,
|
|
91
|
+
permissionKey: permission.key,
|
|
92
|
+
newValue: false
|
|
93
|
+
});
|
|
94
|
+
this.emitItemsChange();
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
89
97
|
if (permission.combinedKeys) {
|
|
90
98
|
permission.combinedKeys.forEach(key => {
|
|
91
99
|
item.permissions[key] = newValue;
|
|
@@ -115,14 +123,25 @@ export class PermissionMatrixComponent {
|
|
|
115
123
|
return !!item.permissions[perm.key];
|
|
116
124
|
});
|
|
117
125
|
}
|
|
126
|
+
clearAllPermissions(item) {
|
|
127
|
+
this.permissions.forEach(perm => {
|
|
128
|
+
if (perm.combinedKeys) {
|
|
129
|
+
perm.combinedKeys.forEach(key => {
|
|
130
|
+
item.permissions[key] = false;
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
item.permissions[perm.key] = false;
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/** Auto-select view when any non-view permission is selected; never auto-clear view. */
|
|
118
139
|
syncViewPermission(item) {
|
|
119
140
|
const viewKey = this.permissions.find(p => p.key === 'view' && !p.combinedKeys)?.key;
|
|
120
|
-
if (!viewKey) {
|
|
141
|
+
if (!viewKey || !this.hasNonViewPermission(item)) {
|
|
121
142
|
return;
|
|
122
143
|
}
|
|
123
|
-
|
|
124
|
-
item.permissions[viewKey] = true;
|
|
125
|
-
}
|
|
144
|
+
item.permissions[viewKey] = true;
|
|
126
145
|
}
|
|
127
146
|
emitItemsChange() {
|
|
128
147
|
if (this.autoLockView) {
|
|
@@ -137,7 +156,7 @@ export class PermissionMatrixComponent {
|
|
|
137
156
|
return permission.key;
|
|
138
157
|
}
|
|
139
158
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PermissionMatrixComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
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
|
|
159
|
+
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", hideSelectAll: "hideSelectAll", 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 *ngIf=\"!hideSelectAll\" class=\"permission-separator\"></div>\r\n <div\r\n *ngIf=\"!hideSelectAll\"\r\n class=\"select-all-container\"\r\n (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" }] }); }
|
|
141
160
|
}
|
|
142
161
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PermissionMatrixComponent, decorators: [{
|
|
143
162
|
type: Component,
|
|
@@ -146,7 +165,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
146
165
|
MatIconModule,
|
|
147
166
|
MatCheckboxModule,
|
|
148
167
|
TranslateModule
|
|
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
|
|
168
|
+
], 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 *ngIf=\"!hideSelectAll\" class=\"permission-separator\"></div>\r\n <div\r\n *ngIf=\"!hideSelectAll\"\r\n class=\"select-all-container\"\r\n (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"] }]
|
|
150
169
|
}], propDecorators: { items: [{
|
|
151
170
|
type: Input
|
|
152
171
|
}], permissions: [{
|
|
@@ -161,6 +180,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
161
180
|
type: Input
|
|
162
181
|
}], readonly: [{
|
|
163
182
|
type: Input
|
|
183
|
+
}], hideSelectAll: [{
|
|
184
|
+
type: Input
|
|
164
185
|
}], autoLockView: [{
|
|
165
186
|
type: Input
|
|
166
187
|
}], itemsChange: [{
|
|
@@ -168,4 +189,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
168
189
|
}], permissionChange: [{
|
|
169
190
|
type: Output
|
|
170
191
|
}] } });
|
|
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==
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1tYXRyaXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9wZXJtaXNzaW9uLW1hdHJpeC9wZXJtaXNzaW9uLW1hdHJpeC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL3Blcm1pc3Npb24tbWF0cml4L3Blcm1pc3Npb24tbWF0cml4LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7OztBQWV0RCxNQUFNLE9BQU8seUJBQXlCO0lBWnRDO1FBY1csVUFBSyxHQUEyQixFQUFFLENBQUM7UUFDbkMsZ0JBQVcsR0FBdUI7WUFDekMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7WUFDeEMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7WUFDeEMsRUFBRSxHQUFHLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLDZCQUE2QixFQUFFLFlBQVksRUFBRSxDQUFDLG9CQUFvQixFQUFFLHFCQUFxQixDQUFDLEVBQUU7U0FDdEksQ0FBQztRQUNPLGFBQVEsR0FBVyxvQkFBb0IsQ0FBQztR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QjtRQUMzRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDeEIsQ0FBQzsrR0FyS1UseUJBQXlCO21HQUF6Qix5QkFBeUIsOGJDbkJ0QywrMEdBOEVNLHU3SERuRUYsWUFBWSwrUEFDWixhQUFhLG1MQUNiLGlCQUFpQiw2V0FDakIsZUFBZTs7NEZBS04seUJBQXlCO2tCQVpyQyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsZUFBZTtxQkFDaEI7OEJBTVEsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uQ29uZmlnLCBQZXJtaXNzaW9uTWF0cml4SXRlbSwgUGVybWlzc2lvbkNoYW5nZUV2ZW50IH0gZnJvbSAnLi4vLi4vYmFzZS1tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1wZXJtaXNzaW9uLW1hdHJpeCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wZXJtaXNzaW9uLW1hdHJpeC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3Blcm1pc3Npb24tbWF0cml4LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbk1hdHJpeENvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIGl0ZW1zOiBQZXJtaXNzaW9uTWF0cml4SXRlbVtdID0gW107XHJcbiAgQElucHV0KCkgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25Db25maWdbXSA9IFtcclxuICAgIHsga2V5OiAndmlldycsIGxhYmVsS2V5OiAnR1JPVVBTLnZpZXcnIH0sXHJcbiAgICB7IGtleTogJ2VkaXQnLCBsYWJlbEtleTogJ0dST1VQUy5lZGl0JyB9LFxyXG4gICAgeyBrZXk6ICdjb21wbGV0ZUFuZFRlcm1pbmF0ZScsIGxhYmVsS2V5OiAnR1JPVVBTLmNvbXBsZXRlQW5kVGVybWluYXRlJywgY29tYmluZWRLZXlzOiBbJ2NvbXBsZXRlUGVybWlzc2lvbicsICd0ZXJtaW5hdGVQZXJtaXNzaW9uJ10gfVxyXG4gIF07XHJcbiAgQElucHV0KCkgdGl0bGVLZXk6IHN0cmluZyA9ICdHUk9VUFMuZ3JvdXBNYXRyaXgnO1xyXG4gIEBJbnB1dCgpIHNlbGVjdEFsbExhYmVsS2V5OiBzdHJpbmcgPSAnR1JPVVBTLnNlbGVjdEFsbCc7XHJcbiAgQElucHV0KCkgZXhwYW5kQWxsTGFiZWxLZXk6IHN0cmluZyA9ICdHUk9VUFMuZXhwYW5kQWxsJztcclxuICBASW5wdXQoKSBjb2xsYXBzZUFsbExhYmVsS2V5OiBzdHJpbmcgPSAnR1JPVVBTLmNvbGxhcHNlQWxsJztcclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhpZGVTZWxlY3RBbGw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBhdXRvTG9ja1ZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgaXRlbXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBlcm1pc3Npb25NYXRyaXhJdGVtW10+KCk7XHJcbiAgQE91dHB1dCgpIHBlcm1pc3Npb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBlcm1pc3Npb25DaGFuZ2VFdmVudD4oKTtcclxuXHJcbiAgYXJlQWxsRXhwYW5kZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5sZW5ndGggPiAwICYmIHRoaXMuaXRlbXMuZXZlcnkoaXRlbSA9PiBpdGVtLmV4cGFuZGVkKTtcclxuICB9XHJcblxyXG4gIGV4cGFuZEFsbEdyb3VwcygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGV4cGFuZCA9ICF0aGlzLmFyZUFsbEV4cGFuZGVkKCk7XHJcbiAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiBpdGVtLmV4cGFuZGVkID0gZXhwYW5kKTtcclxuICAgIHRoaXMuZW1pdEl0ZW1zQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVHcm91cChpdGVtOiBQZXJtaXNzaW9uTWF0cml4SXRlbSk6IHZvaWQge1xyXG4gICAgaXRlbS5leHBhbmRlZCA9ICFpdGVtLmV4cGFuZGVkO1xyXG4gICAgdGhpcy5lbWl0SXRlbXNDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIGlzQWxsUGVybWlzc2lvbnNTZWxlY3RlZChpdGVtOiBQZXJtaXNzaW9uTWF0cml4SXRlbSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucGVybWlzc2lvbnMuZXZlcnkocGVybSA9PiB7XHJcbiAgICAgIGlmIChwZXJtLmNvbWJpbmVkS2V5cykge1xyXG4gICAgICAgIHJldHVybiBwZXJtLmNvbWJpbmVkS2V5cy5ldmVyeShrZXkgPT4gaXRlbS5wZXJtaXNzaW9uc1trZXldKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gaXRlbS5wZXJtaXNzaW9uc1twZXJtLmtleV07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVNlbGVjdEFsbChpdGVtOiBQZXJtaXNzaW9uTWF0cml4SXRlbSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucmVhZG9ubHkpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBhbGxTZWxlY3RlZCA9IHRoaXMuaXNBbGxQZXJtaXNzaW9uc1NlbGVjdGVkKGl0ZW0pO1xyXG4gICAgY29uc3QgbmV3VmFsdWUgPSAhYWxsU2VsZWN0ZWQ7XHJcblxyXG4gICAgdGhpcy5wZXJtaXNzaW9ucy5mb3JFYWNoKHBlcm0gPT4ge1xyXG4gICAgICBpZiAodGhpcy5hdXRvTG9ja1ZpZXcgJiYgIW5ld1ZhbHVlICYmIHBlcm0ua2V5ID09PSAndmlldycpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHBlcm0uY29tYmluZWRLZXlzKSB7XHJcbiAgICAgICAgcGVybS5jb21iaW5lZEtleXMuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgaXRlbS5wZXJtaXNzaW9uc1trZXldID0gbmV3VmFsdWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaXRlbS5wZXJtaXNzaW9uc1twZXJtLmtleV0gPSBuZXdWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuYXV0b0xvY2tWaWV3KSB7XHJcbiAgICAgIHRoaXMuc3luY1ZpZXdQZXJtaXNzaW9uKGl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZW1pdEl0ZW1zQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBpc1Blcm1pc3Npb25TZWxlY3RlZChpdGVtOiBQZXJtaXNzaW9uTWF0cml4SXRlbSwgcGVybWlzc2lvbjogUGVybWlzc2lvbkNvbmZpZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHBlcm1pc3Npb24uY29tYmluZWRLZXlzKSB7XHJcbiAgICAgIHJldHVybiBwZXJtaXNzaW9uLmNvbWJpbmVkS2V5cy5ldmVyeShrZXkgPT4gaXRlbS5wZXJtaXNzaW9uc1trZXldKTtcclxuICAgIH1cclxuICAgIHJldHVybiBpdGVtLnBlcm1pc3Npb25zW3Blcm1pc3Npb24ua2V5XTtcclxuICB9XHJcblxyXG4gIGlzUGVybWlzc2lvbkRpc2FibGVkKGl0ZW06IFBlcm1pc3Npb25NYXRyaXhJdGVtLCBwZXJtaXNzaW9uOiBQZXJtaXNzaW9uQ29uZmlnKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWFkb25seTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVBlcm1pc3Npb24oaXRlbTogUGVybWlzc2lvbk1hdHJpeEl0ZW0sIHBlcm1pc3Npb246IFBlcm1pc3Npb25Db25maWcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzUGVybWlzc2lvbkRpc2FibGVkKGl0ZW0sIHBlcm1pc3Npb24pKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmlzUGVybWlzc2lvblNlbGVjdGVkKGl0ZW0sIHBlcm1pc3Npb24pO1xyXG4gICAgY29uc3QgbmV3VmFsdWUgPSAhY3VycmVudFZhbHVlO1xyXG5cclxuICAgIGlmICh0aGlzLmF1dG9Mb2NrVmlldyAmJiBwZXJtaXNzaW9uLmtleSA9PT0gJ3ZpZXcnICYmICFuZXdWYWx1ZSkge1xyXG4gICAgICB0aGlzLmNsZWFyQWxsUGVybWlzc2lvbnMoaXRlbSk7XHJcbiAgICAgIHRoaXMucGVybWlzc2lvbkNoYW5nZS5lbWl0KHtcclxuICAgICAgICBpdGVtLFxyXG4gICAgICAgIHBlcm1pc3Npb25LZXk6IHBlcm1pc3Npb24ua2V5LFxyXG4gICAgICAgIG5ld1ZhbHVlOiBmYWxzZVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5lbWl0SXRlbXNDaGFuZ2UoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwZXJtaXNzaW9uLmNvbWJpbmVkS2V5cykge1xyXG4gICAgICBwZXJtaXNzaW9uLmNvbWJpbmVkS2V5cy5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgaXRlbS5wZXJtaXNzaW9uc1trZXldID0gbmV3VmFsdWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXRlbS5wZXJtaXNzaW9uc1twZXJtaXNzaW9uLmtleV0gPSBuZXdWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hdXRvTG9ja1ZpZXcpIHtcclxuICAgICAgdGhpcy5zeW5jVmlld1Blcm1pc3Npb24oaXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wZXJtaXNzaW9uQ2hhbmdlLmVtaXQoe1xyXG4gICAgICBpdGVtLFxyXG4gICAgICBwZXJtaXNzaW9uS2V5OiBwZXJtaXNzaW9uLmtleSxcclxuICAgICAgbmV3VmFsdWVcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZW1pdEl0ZW1zQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc05vblZpZXdQZXJtaXNzaW9uKGl0ZW06IFBlcm1pc3Npb25NYXRyaXhJdGVtKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wZXJtaXNzaW9ucy5zb21lKHBlcm0gPT4ge1xyXG4gICAgICBpZiAocGVybS5rZXkgPT09ICd2aWV3Jykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocGVybS5jb21iaW5lZEtleXMpIHtcclxuICAgICAgICByZXR1cm4gcGVybS5jb21iaW5lZEtleXMuc29tZShrZXkgPT4gaXRlbS5wZXJtaXNzaW9uc1trZXldKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gISFpdGVtLnBlcm1pc3Npb25zW3Blcm0ua2V5XTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhckFsbFBlcm1pc3Npb25zKGl0ZW06IFBlcm1pc3Npb25NYXRyaXhJdGVtKTogdm9pZCB7XHJcbiAgICB0aGlzLnBlcm1pc3Npb25zLmZvckVhY2gocGVybSA9PiB7XHJcbiAgICAgIGlmIChwZXJtLmNvbWJpbmVkS2V5cykge1xyXG4gICAgICAgIHBlcm0uY29tYmluZWRLZXlzLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgIGl0ZW0ucGVybWlzc2lvbnNba2V5XSA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGl0ZW0ucGVybWlzc2lvbnNbcGVybS5rZXldID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIEF1dG8tc2VsZWN0IHZpZXcgd2hlbiBhbnkgbm9uLXZpZXcgcGVybWlzc2lvbiBpcyBzZWxlY3RlZDsgbmV2ZXIgYXV0by1jbGVhciB2aWV3LiAqL1xyXG4gIHByaXZhdGUgc3luY1ZpZXdQZXJtaXNzaW9uKGl0ZW06IFBlcm1pc3Npb25NYXRyaXhJdGVtKTogdm9pZCB7XHJcbiAgICBjb25zdCB2aWV3S2V5ID0gdGhpcy5wZXJtaXNzaW9ucy5maW5kKHAgPT4gcC5rZXkgPT09ICd2aWV3JyAmJiAhcC5jb21iaW5lZEtleXMpPy5rZXk7XHJcbiAgICBpZiAoIXZpZXdLZXkgfHwgIXRoaXMuaGFzTm9uVmlld1Blcm1pc3Npb24oaXRlbSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaXRlbS5wZXJtaXNzaW9uc1t2aWV3S2V5XSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtaXRJdGVtc0NoYW5nZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmF1dG9Mb2NrVmlldykge1xyXG4gICAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiB0aGlzLnN5bmNWaWV3UGVybWlzc2lvbihpdGVtKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQoWy4uLnRoaXMuaXRlbXNdKTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlJdGVtKGluZGV4OiBudW1iZXIsIGl0ZW06IFBlcm1pc3Npb25NYXRyaXhJdGVtKTogc3RyaW5nIHwgbnVtYmVyIHtcclxuICAgIHJldHVybiBpdGVtLmlkID8/IGluZGV4O1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeVBlcm1pc3Npb24oaW5kZXg6IG51bWJlciwgcGVybWlzc2lvbjogUGVybWlzc2lvbkNvbmZpZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gcGVybWlzc2lvbi5rZXk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJwZXJtaXNzaW9uLW1hdHJpeC1jYXJkXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1hdHJpeC1oZWFkZXJcIj5cclxuICAgIDxoMyBjbGFzcz1cIm1hdHJpeC10aXRsZVwiPnt7IHRpdGxlS2V5IHwgdHJhbnNsYXRlIH19PC9oMz5cclxuICAgIDxidXR0b25cclxuICAgICAgY2xhc3M9XCJleHBhbmQtYWxsLWJ0blwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAoY2xpY2spPVwiZXhwYW5kQWxsR3JvdXBzKClcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIihhcmVBbGxFeHBhbmRlZCgpID8gY29sbGFwc2VBbGxMYWJlbEtleSA6IGV4cGFuZEFsbExhYmVsS2V5KSB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJleHBhbmQtaWNvblwiIFtjbGFzcy5yb3RhdGVkXT1cImFyZUFsbEV4cGFuZGVkKClcIj51bmZvbGRfbW9yZTwvbWF0LWljb24+XHJcbiAgICAgIDxzcGFuPnt7IChhcmVBbGxFeHBhbmRlZCgpID8gY29sbGFwc2VBbGxMYWJlbEtleSA6IGV4cGFuZEFsbExhYmVsS2V5KSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwibWF0cml4LWRpdmlkZXJcIj48L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cIm1hdHJpeC1hY2NvcmRpb24tbGlzdFwiPlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgdHJhY2tCeTogdHJhY2tCeUl0ZW1cIlxyXG4gICAgICBjbGFzcz1cIm1hdHJpeC1hY2NvcmRpb24taXRlbVwiXHJcbiAgICAgIFtjbGFzcy5leHBhbmRlZF09XCJpdGVtLmV4cGFuZGVkXCI+XHJcblxyXG4gICAgICA8IS0tIEFjY29yZGlvbiBIZWFkZXIgLS0+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImFjY29yZGlvbi1oZWFkZXJcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVHcm91cChpdGVtKVwiXHJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXHJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIml0ZW0uZXhwYW5kZWRcIlxyXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cInRvZ2dsZUdyb3VwKGl0ZW0pXCJcclxuICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJ0b2dnbGVHcm91cChpdGVtKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWNjb3JkaW9uLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxoNCBjbGFzcz1cImFjY29yZGlvbi10aXRsZVwiPnt7IGl0ZW0udGl0bGUgfX08L2g0PlxyXG4gICAgICAgICAgPHAgKm5nSWY9XCJpdGVtLmRlc2NyaXB0aW9uXCIgY2xhc3M9XCJhY2NvcmRpb24tZGVzY3JpcHRpb25cIj57eyBpdGVtLmRlc2NyaXB0aW9uIH19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFjY29yZGlvbi1pY29uXCIgW2NsYXNzLnJvdGF0ZWRdPVwiaXRlbS5leHBhbmRlZFwiPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gQWNjb3JkaW9uIEJvZHkgLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmV4cGFuZGVkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFjY29yZGlvbi1kaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFjY29yZGlvbi1ib2R5XCI+XHJcbiAgICAgICAgICA8IS0tIFBlcm1pc3Npb24gSGVhZGVyIFJvdyAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJtaXNzaW9uLWhlYWRlci1yb3dcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJtaXNzaW9uLWdyb3VwLWxhYmVsXCI+e3sgaXRlbS50aXRsZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFoaWRlU2VsZWN0QWxsXCIgY2xhc3M9XCJwZXJtaXNzaW9uLXNlcGFyYXRvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZVNlbGVjdEFsbFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3QtYWxsLWNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0LWFsbC1sYWJlbFwiPnt7IHNlbGVjdEFsbExhYmVsS2V5IHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQWxsUGVybWlzc2lvbnNTZWxlY3RlZChpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGwoaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gUGVybWlzc2lvbnMgUm93IC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBlcm1pc3Npb25zLXJvd1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwZXJtaXNzaW9uIG9mIHBlcm1pc3Npb25zOyB0cmFja0J5OiB0cmFja0J5UGVybWlzc2lvblwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwZXJtaXNzaW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1Blcm1pc3Npb25TZWxlY3RlZChpdGVtLCBwZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNQZXJtaXNzaW9uRGlzYWJsZWQoaXRlbSwgcGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVQZXJtaXNzaW9uKGl0ZW0sIHBlcm1pc3Npb24pXCJcclxuICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVybWlzc2lvbi1sYWJlbFwiPnt7IHBlcm1pc3Npb24ubGFiZWxLZXkgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|