@cqa-lib/cqa-ui 1.1.557-beta.20 → 1.1.557-beta.24
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/dialog/dialog.component.mjs +7 -2
- package/esm2022/lib/sidebar/nav-item.component.mjs +3 -3
- package/esm2022/lib/sidebar/nav-menu.component.mjs +3 -3
- package/esm2022/lib/sidebar/nav-sub-item.component.mjs +3 -3
- package/esm2022/lib/sidebar/profile-menu/profile-menu.component.mjs +128 -0
- package/esm2022/lib/sidebar/profile-menu/profile-menu.models.mjs +4 -0
- package/esm2022/lib/sidebar/sidebar.component.mjs +61 -12
- package/esm2022/lib/sidebar/sidebar.models.mjs +2 -1
- package/esm2022/lib/templates/modular-table-template/modular-table-template.component.mjs +3 -3
- package/esm2022/lib/ui-kit.module.mjs +6 -1
- package/esm2022/lib/utils/tw-overlay-container.mjs +2 -1
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/cqa-lib-cqa-ui.mjs +221 -38
- package/fesm2022/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/sidebar/profile-menu/profile-menu.component.d.ts +35 -0
- package/lib/sidebar/profile-menu/profile-menu.models.d.ts +35 -0
- package/lib/sidebar/sidebar.component.d.ts +24 -4
- package/lib/sidebar/sidebar.models.d.ts +1 -0
- package/lib/ui-kit.module.d.ts +158 -157
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/styles.css +1 -1
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ViewChild, } from '@angular/core';
|
|
2
|
+
import { TemplatePortal } from '@angular/cdk/portal';
|
|
3
|
+
import { isProfileMenuDivider, } from './profile-menu.models';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/cdk/overlay";
|
|
6
|
+
import * as i2 from "@angular/common";
|
|
7
|
+
import * as i3 from "../../pipes/safe-html.pipe";
|
|
8
|
+
export class ProfileMenuComponent {
|
|
9
|
+
overlay;
|
|
10
|
+
viewContainerRef;
|
|
11
|
+
user;
|
|
12
|
+
entries = [];
|
|
13
|
+
anchor = null;
|
|
14
|
+
/** Optional id on the popover element — useful for aria-labelledby wiring. */
|
|
15
|
+
popoverId;
|
|
16
|
+
itemClick = new EventEmitter();
|
|
17
|
+
dismissed = new EventEmitter();
|
|
18
|
+
popoverTpl;
|
|
19
|
+
overlayRef = null;
|
|
20
|
+
keySub = null;
|
|
21
|
+
backdropSub = null;
|
|
22
|
+
viewInitialized = false;
|
|
23
|
+
constructor(overlay, viewContainerRef) {
|
|
24
|
+
this.overlay = overlay;
|
|
25
|
+
this.viewContainerRef = viewContainerRef;
|
|
26
|
+
}
|
|
27
|
+
ngAfterViewInit() {
|
|
28
|
+
this.viewInitialized = true;
|
|
29
|
+
if (this.anchor) {
|
|
30
|
+
this.openOverlay();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
ngOnChanges(changes) {
|
|
34
|
+
if (!this.viewInitialized || !changes['anchor'])
|
|
35
|
+
return;
|
|
36
|
+
if (this.anchor) {
|
|
37
|
+
this.openOverlay();
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
this.closeOverlay();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
ngOnDestroy() {
|
|
44
|
+
this.closeOverlay();
|
|
45
|
+
}
|
|
46
|
+
isDivider = isProfileMenuDivider;
|
|
47
|
+
/** Narrowing helper for the template — Angular's template type checker can't
|
|
48
|
+
* follow our custom type guard through `*ngIf-else`, so we surface a typed cast
|
|
49
|
+
* via this method instead. */
|
|
50
|
+
asItem(entry) {
|
|
51
|
+
return isProfileMenuDivider(entry) ? null : entry;
|
|
52
|
+
}
|
|
53
|
+
trackByEntry = (index, _entry) => index;
|
|
54
|
+
onItemClick(item) {
|
|
55
|
+
if (item.disabled) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
this.itemClick.emit(item.id);
|
|
59
|
+
}
|
|
60
|
+
openOverlay() {
|
|
61
|
+
if (!this.anchor) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
this.closeOverlay();
|
|
65
|
+
// Popover floats out to the right of the profile card, bottom-aligned with the card.
|
|
66
|
+
// `withPush(false)` is critical — otherwise CDK slides the overlay back over the sidebar
|
|
67
|
+
// when its viewport calculation thinks the popover doesn't fit (e.g. in narrow iframes).
|
|
68
|
+
const positions = [
|
|
69
|
+
{ originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom', offsetX: 0, offsetY: 0 },
|
|
70
|
+
{ originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetX: 0, offsetY: -4 },
|
|
71
|
+
];
|
|
72
|
+
const positionStrategy = this.overlay
|
|
73
|
+
.position()
|
|
74
|
+
.flexibleConnectedTo(this.anchor)
|
|
75
|
+
.withPositions(positions)
|
|
76
|
+
.withFlexibleDimensions(false)
|
|
77
|
+
.withViewportMargin(8)
|
|
78
|
+
.withPush(false);
|
|
79
|
+
this.overlayRef = this.overlay.create({
|
|
80
|
+
positionStrategy,
|
|
81
|
+
scrollStrategy: this.overlay.scrollStrategies.reposition(),
|
|
82
|
+
hasBackdrop: true,
|
|
83
|
+
backdropClass: 'cdk-overlay-transparent-backdrop',
|
|
84
|
+
panelClass: 'cqa-profile-menu-panel',
|
|
85
|
+
});
|
|
86
|
+
const portal = new TemplatePortal(this.popoverTpl, this.viewContainerRef);
|
|
87
|
+
this.overlayRef.attach(portal);
|
|
88
|
+
this.backdropSub = this.overlayRef.backdropClick().subscribe(() => this.dismissed.emit());
|
|
89
|
+
this.keySub = this.overlayRef.keydownEvents().subscribe((event) => {
|
|
90
|
+
if (event.key === 'Escape') {
|
|
91
|
+
event.preventDefault();
|
|
92
|
+
this.dismissed.emit();
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
closeOverlay() {
|
|
97
|
+
this.backdropSub?.unsubscribe();
|
|
98
|
+
this.backdropSub = null;
|
|
99
|
+
this.keySub?.unsubscribe();
|
|
100
|
+
this.keySub = null;
|
|
101
|
+
if (this.overlayRef) {
|
|
102
|
+
this.overlayRef.dispose();
|
|
103
|
+
this.overlayRef = null;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProfileMenuComponent, deps: [{ token: i1.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
107
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ProfileMenuComponent, selector: "cqa-profile-menu", inputs: { user: "user", entries: "entries", anchor: "anchor", popoverId: "popoverId" }, outputs: { itemClick: "itemClick", dismissed: "dismissed" }, viewQueries: [{ propertyName: "popoverTpl", first: true, predicate: ["popoverTpl"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #popoverTpl>\n <div class=\"cqa-pm\" [attr.id]=\"popoverId\" role=\"menu\" aria-orientation=\"vertical\">\n <!-- ===== Header ===== -->\n <div class=\"cqa-pm-header\">\n <div class=\"cqa-pm-avatar\" [style.background]=\"user?.avatarColor || null\">\n {{ user?.initials }}\n </div>\n <div class=\"cqa-pm-identity\">\n <span class=\"cqa-pm-name\" [title]=\"user?.name\">{{ user?.name }}</span>\n <span *ngIf=\"user?.email\" class=\"cqa-pm-email\" [title]=\"user?.email\">{{ user?.email }}</span>\n <span\n *ngIf=\"user?.badge?.label\"\n class=\"cqa-pm-badge\"\n [class.cqa-pm-badge--admin]=\"(user?.badge?.variant || 'admin') === 'admin'\"\n [class.cqa-pm-badge--default]=\"user?.badge?.variant === 'default'\">\n {{ user?.badge?.label }}\n </span>\n </div>\n </div>\n\n <div class=\"cqa-pm-divider\"></div>\n\n <!-- ===== Entries ===== -->\n <ul class=\"cqa-pm-list\">\n <ng-container *ngFor=\"let entry of entries; trackBy: trackByEntry\">\n <li *ngIf=\"isDivider(entry); else itemTpl\" class=\"cqa-pm-list-divider\" role=\"separator\"></li>\n <ng-template #itemTpl>\n <li *ngIf=\"asItem(entry) as item\">\n <button\n type=\"button\"\n class=\"cqa-pm-item\"\n [class.cqa-pm-item--danger]=\"item.variant === 'danger'\"\n [class.cqa-pm-item--disabled]=\"item.disabled\"\n [disabled]=\"item.disabled\"\n role=\"menuitem\"\n (click)=\"onItemClick(item)\">\n <span\n *ngIf=\"item.iconSvg || item.iconClass\"\n class=\"cqa-pm-item-icon\"\n aria-hidden=\"true\">\n <span\n *ngIf=\"item.iconSvg; else fontIcon\"\n [innerHTML]=\"item.iconSvg | cqaSafeHtml\">\n </span>\n <ng-template #fontIcon>\n <i *ngIf=\"item.iconClass\" [ngClass]=\"item.iconClass\"></i>\n </ng-template>\n </span>\n <span class=\"cqa-pm-item-label\">{{ item.label }}</span>\n <span *ngIf=\"item.shortcut\" class=\"cqa-pm-item-shortcut\">{{ item.shortcut }}</span>\n </button>\n </li>\n </ng-template>\n </ng-container>\n </ul>\n </div>\n</ng-template>\n", styles: ["::ng-deep .cqa-profile-menu-panel{z-index:1200}.cqa-pm{width:270px;background:#fbfcff;border-radius:12px;box-shadow:0 0 0 1px #0f12a80a,0 12px 32px #0f12a82e;padding:6px;font-family:inherit;color:#161617;-webkit-user-select:none;user-select:none;animation:cqaPmFadeIn .12s cubic-bezier(.16,1,.3,1)}@keyframes cqaPmFadeIn{0%{opacity:0;transform:translateY(2px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}.cqa-pm-header{display:flex;align-items:flex-start;gap:10px;padding:10px 10px 12px}.cqa-pm-avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,#f472b6,#db2777);color:#fff;font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;letter-spacing:.2px}.cqa-pm-identity{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.cqa-pm-name{font-size:14px;font-weight:600;line-height:1;color:#161617;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cqa-pm-email{font-size:11.5px;font-weight:400;line-height:1;color:#6d6d74;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cqa-pm-badge{display:inline-flex;align-items:center;align-self:flex-start;padding:2px 7px;border-radius:999px;font-size:10px;font-weight:700;line-height:1;white-space:nowrap}.cqa-pm-badge--admin{background:#6366f11a;color:#1216cc}.cqa-pm-badge--default{background:#eef0f3;color:#374151}.cqa-pm-divider{height:1px;background:#f0f0f1;margin:0}.cqa-pm-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.cqa-pm-list-divider{height:1px;background:#f0f0f1;margin:6px}.cqa-pm-item{width:100%;display:flex;align-items:center;gap:10px;padding:12px 10px 8px;background:transparent;border:none;border-radius:8px;cursor:pointer;font-family:inherit;font-size:13px;font-weight:400;line-height:1;color:#4c4c51;text-align:left;transition:background .12s,color .12s}.cqa-pm-item:hover:not(:disabled){background:#f4f5f7}.cqa-pm-item:focus-visible{outline:2px solid #4f46e5;outline-offset:1px}.cqa-pm-item--danger,.cqa-pm-item--danger .cqa-pm-item-icon{color:#e23a3a}.cqa-pm-item--danger:hover:not(:disabled){background:#fbeaea}.cqa-pm-item--disabled,.cqa-pm-item:disabled{cursor:not-allowed;opacity:.5}.cqa-pm-item-icon{width:16px;height:16px;font-size:16px;color:#161617a6;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.cqa-pm-item-label{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cqa-pm-item-shortcut{background:#eef0f3;color:#6b7280;font-size:11px;font-weight:600;line-height:16px;padding:1px 6px;border-radius:4px;flex-shrink:0}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.SafeHtmlPipe, name: "cqaSafeHtml" }] });
|
|
108
|
+
}
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProfileMenuComponent, decorators: [{
|
|
110
|
+
type: Component,
|
|
111
|
+
args: [{ selector: 'cqa-profile-menu', template: "<ng-template #popoverTpl>\n <div class=\"cqa-pm\" [attr.id]=\"popoverId\" role=\"menu\" aria-orientation=\"vertical\">\n <!-- ===== Header ===== -->\n <div class=\"cqa-pm-header\">\n <div class=\"cqa-pm-avatar\" [style.background]=\"user?.avatarColor || null\">\n {{ user?.initials }}\n </div>\n <div class=\"cqa-pm-identity\">\n <span class=\"cqa-pm-name\" [title]=\"user?.name\">{{ user?.name }}</span>\n <span *ngIf=\"user?.email\" class=\"cqa-pm-email\" [title]=\"user?.email\">{{ user?.email }}</span>\n <span\n *ngIf=\"user?.badge?.label\"\n class=\"cqa-pm-badge\"\n [class.cqa-pm-badge--admin]=\"(user?.badge?.variant || 'admin') === 'admin'\"\n [class.cqa-pm-badge--default]=\"user?.badge?.variant === 'default'\">\n {{ user?.badge?.label }}\n </span>\n </div>\n </div>\n\n <div class=\"cqa-pm-divider\"></div>\n\n <!-- ===== Entries ===== -->\n <ul class=\"cqa-pm-list\">\n <ng-container *ngFor=\"let entry of entries; trackBy: trackByEntry\">\n <li *ngIf=\"isDivider(entry); else itemTpl\" class=\"cqa-pm-list-divider\" role=\"separator\"></li>\n <ng-template #itemTpl>\n <li *ngIf=\"asItem(entry) as item\">\n <button\n type=\"button\"\n class=\"cqa-pm-item\"\n [class.cqa-pm-item--danger]=\"item.variant === 'danger'\"\n [class.cqa-pm-item--disabled]=\"item.disabled\"\n [disabled]=\"item.disabled\"\n role=\"menuitem\"\n (click)=\"onItemClick(item)\">\n <span\n *ngIf=\"item.iconSvg || item.iconClass\"\n class=\"cqa-pm-item-icon\"\n aria-hidden=\"true\">\n <span\n *ngIf=\"item.iconSvg; else fontIcon\"\n [innerHTML]=\"item.iconSvg | cqaSafeHtml\">\n </span>\n <ng-template #fontIcon>\n <i *ngIf=\"item.iconClass\" [ngClass]=\"item.iconClass\"></i>\n </ng-template>\n </span>\n <span class=\"cqa-pm-item-label\">{{ item.label }}</span>\n <span *ngIf=\"item.shortcut\" class=\"cqa-pm-item-shortcut\">{{ item.shortcut }}</span>\n </button>\n </li>\n </ng-template>\n </ng-container>\n </ul>\n </div>\n</ng-template>\n", styles: ["::ng-deep .cqa-profile-menu-panel{z-index:1200}.cqa-pm{width:270px;background:#fbfcff;border-radius:12px;box-shadow:0 0 0 1px #0f12a80a,0 12px 32px #0f12a82e;padding:6px;font-family:inherit;color:#161617;-webkit-user-select:none;user-select:none;animation:cqaPmFadeIn .12s cubic-bezier(.16,1,.3,1)}@keyframes cqaPmFadeIn{0%{opacity:0;transform:translateY(2px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}.cqa-pm-header{display:flex;align-items:flex-start;gap:10px;padding:10px 10px 12px}.cqa-pm-avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,#f472b6,#db2777);color:#fff;font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;letter-spacing:.2px}.cqa-pm-identity{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.cqa-pm-name{font-size:14px;font-weight:600;line-height:1;color:#161617;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cqa-pm-email{font-size:11.5px;font-weight:400;line-height:1;color:#6d6d74;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cqa-pm-badge{display:inline-flex;align-items:center;align-self:flex-start;padding:2px 7px;border-radius:999px;font-size:10px;font-weight:700;line-height:1;white-space:nowrap}.cqa-pm-badge--admin{background:#6366f11a;color:#1216cc}.cqa-pm-badge--default{background:#eef0f3;color:#374151}.cqa-pm-divider{height:1px;background:#f0f0f1;margin:0}.cqa-pm-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.cqa-pm-list-divider{height:1px;background:#f0f0f1;margin:6px}.cqa-pm-item{width:100%;display:flex;align-items:center;gap:10px;padding:12px 10px 8px;background:transparent;border:none;border-radius:8px;cursor:pointer;font-family:inherit;font-size:13px;font-weight:400;line-height:1;color:#4c4c51;text-align:left;transition:background .12s,color .12s}.cqa-pm-item:hover:not(:disabled){background:#f4f5f7}.cqa-pm-item:focus-visible{outline:2px solid #4f46e5;outline-offset:1px}.cqa-pm-item--danger,.cqa-pm-item--danger .cqa-pm-item-icon{color:#e23a3a}.cqa-pm-item--danger:hover:not(:disabled){background:#fbeaea}.cqa-pm-item--disabled,.cqa-pm-item:disabled{cursor:not-allowed;opacity:.5}.cqa-pm-item-icon{width:16px;height:16px;font-size:16px;color:#161617a6;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.cqa-pm-item-label{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cqa-pm-item-shortcut{background:#eef0f3;color:#6b7280;font-size:11px;font-weight:600;line-height:16px;padding:1px 6px;border-radius:4px;flex-shrink:0}\n"] }]
|
|
112
|
+
}], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.ViewContainerRef }], propDecorators: { user: [{
|
|
113
|
+
type: Input
|
|
114
|
+
}], entries: [{
|
|
115
|
+
type: Input
|
|
116
|
+
}], anchor: [{
|
|
117
|
+
type: Input
|
|
118
|
+
}], popoverId: [{
|
|
119
|
+
type: Input
|
|
120
|
+
}], itemClick: [{
|
|
121
|
+
type: Output
|
|
122
|
+
}], dismissed: [{
|
|
123
|
+
type: Output
|
|
124
|
+
}], popoverTpl: [{
|
|
125
|
+
type: ViewChild,
|
|
126
|
+
args: ['popoverTpl', { static: true }]
|
|
127
|
+
}] } });
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2lkZWJhci9wcm9maWxlLW1lbnUvcHJvZmlsZS1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2lkZWJhci9wcm9maWxlLW1lbnUvcHJvZmlsZS1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBSVosU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBSUwsb0JBQW9CLEdBQ3JCLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBTy9CLE1BQU0sT0FBTyxvQkFBb0I7SUFrQnJCO0lBQ0E7SUFsQkQsSUFBSSxDQUFtQjtJQUN2QixPQUFPLEdBQXVCLEVBQUUsQ0FBQztJQUNqQyxNQUFNLEdBQXVCLElBQUksQ0FBQztJQUMzQyw4RUFBOEU7SUFDckUsU0FBUyxDQUFVO0lBRWxCLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBQ3ZDLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBRUosVUFBVSxDQUF3QjtJQUVyRSxVQUFVLEdBQXNCLElBQUksQ0FBQztJQUNyQyxNQUFNLEdBQXdCLElBQUksQ0FBQztJQUNuQyxXQUFXLEdBQXdCLElBQUksQ0FBQztJQUN4QyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBRWhDLFlBQ1UsT0FBZ0IsRUFDaEIsZ0JBQWtDO1FBRGxDLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUN6QyxDQUFDO0lBRUosZUFBZTtRQUNiLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FB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aW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlSZWYsIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBQcm9maWxlTWVudUVudHJ5LFxuICBQcm9maWxlTWVudUl0ZW0sXG4gIFByb2ZpbGVNZW51VXNlcixcbiAgaXNQcm9maWxlTWVudURpdmlkZXIsXG59IGZyb20gJy4vcHJvZmlsZS1tZW51Lm1vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1wcm9maWxlLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZmlsZS1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZmlsZS1tZW51LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFByb2ZpbGVNZW51Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSB1c2VyITogUHJvZmlsZU1lbnVVc2VyO1xuICBASW5wdXQoKSBlbnRyaWVzOiBQcm9maWxlTWVudUVudHJ5W10gPSBbXTtcbiAgQElucHV0KCkgYW5jaG9yOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAvKiogT3B0aW9uYWwgaWQgb24gdGhlIHBvcG92ZXIgZWxlbWVudCDigJQgdXNlZnVsIGZvciBhcmlhLWxhYmVsbGVkYnkgd2lyaW5nLiAqL1xuICBASW5wdXQoKSBwb3BvdmVySWQ/OiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpIGl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgZGlzbWlzc2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3BvcG92ZXJUcGwnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwb3BvdmVyVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgcHJpdmF0ZSBvdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUga2V5U3ViOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBiYWNrZHJvcFN1YjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgdmlld0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdJbml0aWFsaXplZCA9IHRydWU7XG4gICAgaWYgKHRoaXMuYW5jaG9yKSB7XG4gICAgICB0aGlzLm9wZW5PdmVybGF5KCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICghdGhpcy52aWV3SW5pdGlhbGl6ZWQgfHwgIWNoYW5nZXNbJ2FuY2hvciddKSByZXR1cm47XG4gICAgaWYgKHRoaXMuYW5jaG9yKSB7XG4gICAgICB0aGlzLm9wZW5PdmVybGF5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xvc2VPdmVybGF5KCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZU92ZXJsYXkoKTtcbiAgfVxuXG4gIGlzRGl2aWRlciA9IGlzUHJvZmlsZU1lbnVEaXZpZGVyO1xuXG4gIC8qKiBOYXJyb3dpbmcgaGVscGVyIGZvciB0aGUgdGVtcGxhdGUg4oCUIEFuZ3VsYXIncyB0ZW1wbGF0ZSB0eXBlIGNoZWNrZXIgY2FuJ3RcbiAgICogZm9sbG93IG91ciBjdXN0b20gdHlwZSBndWFyZCB0aHJvdWdoIGAqbmdJZi1lbHNlYCwgc28gd2Ugc3VyZmFjZSBhIHR5cGVkIGNhc3RcbiAgICogdmlhIHRoaXMgbWV0aG9kIGluc3RlYWQuICovXG4gIGFzSXRlbShlbnRyeTogUHJvZmlsZU1lbnVFbnRyeSk6IFByb2ZpbGVNZW51SXRlbSB8IG51bGwge1xuICAgIHJldHVybiBpc1Byb2ZpbGVNZW51RGl2aWRlcihlbnRyeSkgPyBudWxsIDogZW50cnk7XG4gIH1cblxuICB0cmFja0J5RW50cnkgPSAoaW5kZXg6IG51bWJlciwgX2VudHJ5OiBQcm9maWxlTWVudUVudHJ5KTogbnVtYmVyID0+IGluZGV4O1xuXG4gIG9uSXRlbUNsaWNrKGl0ZW06IFByb2ZpbGVNZW51SXRlbSk6IHZvaWQge1xuICAgIGlmIChpdGVtLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXRlbUNsaWNrLmVtaXQoaXRlbS5pZCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5PdmVybGF5KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hbmNob3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jbG9zZU92ZXJsYXkoKTtcblxuICAgIC8vIFBvcG92ZXIgZmxvYXRzIG91dCB0byB0aGUgcmlnaHQgb2YgdGhlIHByb2ZpbGUgY2FyZCwgYm90dG9tLWFsaWduZWQgd2l0aCB0aGUgY2FyZC5cbiAgICAvLyBgd2l0aFB1c2goZmFsc2UpYCBpcyBjcml0aWNhbCDigJQgb3RoZXJ3aXNlIENESyBzbGlkZXMgdGhlIG92ZXJsYXkgYmFjayBvdmVyIHRoZSBzaWRlYmFyXG4gICAgLy8gd2hlbiBpdHMgdmlld3BvcnQgY2FsY3VsYXRpb24gdGhpbmtzIHRoZSBwb3BvdmVyIGRvZXNuJ3QgZml0IChlLmcuIGluIG5hcnJvdyBpZnJhbWVzKS5cbiAgICBjb25zdCBwb3NpdGlvbnM6IENvbm5lY3Rpb25Qb3NpdGlvblBhaXJbXSA9IFtcbiAgICAgIHsgb3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICdib3R0b20nLCBvdmVybGF5WDogJ3N0YXJ0Jywgb3ZlcmxheVk6ICdib3R0b20nLCBvZmZzZXRYOiAwLCBvZmZzZXRZOiAwIH0sXG4gICAgICB7IG9yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAndG9wJywgICAgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAnYm90dG9tJywgb2Zmc2V0WDogMCwgb2Zmc2V0WTogLTQgfSxcbiAgICBdO1xuXG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuYW5jaG9yKVxuICAgICAgLndpdGhQb3NpdGlvbnMocG9zaXRpb25zKVxuICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAud2l0aFZpZXdwb3J0TWFyZ2luKDgpXG4gICAgICAud2l0aFB1c2goZmFsc2UpO1xuXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcbiAgICAgIHBhbmVsQ2xhc3M6ICdjcWEtcHJvZmlsZS1tZW51LXBhbmVsJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnBvcG92ZXJUcGwsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xuXG4gICAgdGhpcy5iYWNrZHJvcFN1YiA9IHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZGlzbWlzc2VkLmVtaXQoKSk7XG4gICAgdGhpcy5rZXlTdWIgPSB0aGlzLm92ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuZGlzbWlzc2VkLmVtaXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VPdmVybGF5KCk6IHZvaWQge1xuICAgIHRoaXMuYmFja2Ryb3BTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5iYWNrZHJvcFN1YiA9IG51bGw7XG4gICAgdGhpcy5rZXlTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5rZXlTdWIgPSBudWxsO1xuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSBudWxsO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNwb3BvdmVyVHBsPlxuICA8ZGl2IGNsYXNzPVwiY3FhLXBtXCIgW2F0dHIuaWRdPVwicG9wb3ZlcklkXCIgcm9sZT1cIm1lbnVcIiBhcmlhLW9yaWVudGF0aW9uPVwidmVydGljYWxcIj5cbiAgICA8IS0tID09PT09IEhlYWRlciA9PT09PSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLXBtLWhlYWRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1wbS1hdmF0YXJcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJ1c2VyPy5hdmF0YXJDb2xvciB8fCBudWxsXCI+XG4gICAgICAgIHt7IHVzZXI/LmluaXRpYWxzIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtcG0taWRlbnRpdHlcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtcG0tbmFtZVwiIFt0aXRsZV09XCJ1c2VyPy5uYW1lXCI+e3sgdXNlcj8ubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJ1c2VyPy5lbWFpbFwiIGNsYXNzPVwiY3FhLXBtLWVtYWlsXCIgW3RpdGxlXT1cInVzZXI/LmVtYWlsXCI+e3sgdXNlcj8uZW1haWwgfX08L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKm5nSWY9XCJ1c2VyPy5iYWRnZT8ubGFiZWxcIlxuICAgICAgICAgIGNsYXNzPVwiY3FhLXBtLWJhZGdlXCJcbiAgICAgICAgICBbY2xhc3MuY3FhLXBtLWJhZGdlLS1hZG1pbl09XCIodXNlcj8uYmFkZ2U/LnZhcmlhbnQgfHwgJ2FkbWluJykgPT09ICdhZG1pbidcIlxuICAgICAgICAgIFtjbGFzcy5jcWEtcG0tYmFkZ2UtLWRlZmF1bHRdPVwidXNlcj8uYmFkZ2U/LnZhcmlhbnQgPT09ICdkZWZhdWx0J1wiPlxuICAgICAgICAgIHt7IHVzZXI/LmJhZGdlPy5sYWJlbCB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjcWEtcG0tZGl2aWRlclwiPjwvZGl2PlxuXG4gICAgPCEtLSA9PT09PSBFbnRyaWVzID09PT09IC0tPlxuICAgIDx1bCBjbGFzcz1cImNxYS1wbS1saXN0XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbnRyeSBvZiBlbnRyaWVzOyB0cmFja0J5OiB0cmFja0J5RW50cnlcIj5cbiAgICAgICAgPGxpICpuZ0lmPVwiaXNEaXZpZGVyKGVudHJ5KTsgZWxzZSBpdGVtVHBsXCIgY2xhc3M9XCJjcWEtcG0tbGlzdC1kaXZpZGVyXCIgcm9sZT1cInNlcGFyYXRvclwiPjwvbGk+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjaXRlbVRwbD5cbiAgICAgICAgICA8bGkgKm5nSWY9XCJhc0l0ZW0oZW50cnkpIGFzIGl0ZW1cIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3FhLXBtLWl0ZW1cIlxuICAgICAgICAgICAgICBbY2xhc3MuY3FhLXBtLWl0ZW0tLWRhbmdlcl09XCJpdGVtLnZhcmlhbnQgPT09ICdkYW5nZXInXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmNxYS1wbS1pdGVtLS1kaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICByb2xlPVwibWVudWl0ZW1cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSlcIj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uaWNvblN2ZyB8fCBpdGVtLmljb25DbGFzc1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjcWEtcG0taXRlbS1pY29uXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmljb25Tdmc7IGVsc2UgZm9udEljb25cIlxuICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJpdGVtLmljb25TdmcgfCBjcWFTYWZlSHRtbFwiPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ZvbnRJY29uPlxuICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJpdGVtLmljb25DbGFzc1wiIFtuZ0NsYXNzXT1cIml0ZW0uaWNvbkNsYXNzXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtcG0taXRlbS1sYWJlbFwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5zaG9ydGN1dFwiIGNsYXNzPVwiY3FhLXBtLWl0ZW0tc2hvcnRjdXRcIj57eyBpdGVtLnNob3J0Y3V0IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export function isProfileMenuDivider(entry) {
|
|
2
|
+
return entry.type === 'divider';
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1tZW51Lm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2lkZWJhci9wcm9maWxlLW1lbnUvcHJvZmlsZS1tZW51Lm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzQ0EsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEtBQXVCO0lBQzFELE9BQVEsS0FBNEIsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDO0FBQzFELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFByb2ZpbGVNZW51VXNlciB7XG4gIC8qKiBUd28tbGV0dGVyIGluaXRpYWxzIHNob3duIGluIHRoZSBhdmF0YXIgY2lyY2xlIChlLmcuIFwiVEJcIikuICovXG4gIGluaXRpYWxzOiBzdHJpbmc7XG4gIC8qKiBEaXNwbGF5IG5hbWUgKGUuZy4gXCJUZXNsaW0gQmVsbG9cIikuICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIGVtYWlsIHNob3duIHVuZGVyIHRoZSBuYW1lLiAqL1xuICBlbWFpbD86IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIHJvbGUgcGlsbCByZW5kZXJlZCBiZWxvdyB0aGUgZW1haWwgKGUuZy4gXCJXb3Jrc3BhY2UgQWRtaW5cIikuICovXG4gIGJhZGdlPzoge1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgLyoqIFZpc3VhbCB2YXJpYW50OiAnYWRtaW4nIChwdXJwbGUsIGRlZmF1bHQpIG9yICdkZWZhdWx0JyAobmV1dHJhbCkuICovXG4gICAgdmFyaWFudD86ICdhZG1pbicgfCAnZGVmYXVsdCc7XG4gIH07XG4gIC8qKiBPcHRpb25hbCBDU1MgYmFja2dyb3VuZCBvdmVycmlkZSBmb3IgdGhlIGF2YXRhciAoZ3JhZGllbnQgb3Igc29saWQpLiAqL1xuICBhdmF0YXJDb2xvcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9maWxlTWVudUl0ZW0ge1xuICAvKiogU3RhYmxlIGlkZW50aWZpZXIgZW1pdHRlZCB2aWEgYGl0ZW1DbGlja2Agd2hlbiB0aGUgcm93IGlzIGNsaWNrZWQuICovXG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKiBJY29uIGZvbnQgY2xhc3Mg4oCUIHNhbWUgY29udmVudGlvbiBhcyBOYXZJdGVtLmljb25DbGFzcyAoZS5nLiBcImZhLXNvbGlkIGZhLXVzZXJcIikuICovXG4gIGljb25DbGFzcz86IHN0cmluZztcbiAgLyoqIFJhdyBpbmxpbmUgU1ZHIG1hcmt1cC4gU2FuaXRpemVkIGludGVybmFsbHkgYmVmb3JlIHJlbmRlci4gVGFrZXMgcHJlY2VkZW5jZSBvdmVyIGBpY29uQ2xhc3NgLiAqL1xuICBpY29uU3ZnPzogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwga2V5Ym9hcmQgaGludCBjaGlwIHJlbmRlcmVkIG9uIHRoZSByaWdodCAoZS5nLiBcIuKMmE9cIikuICovXG4gIHNob3J0Y3V0Pzogc3RyaW5nO1xuICAvKiogJ2RhbmdlcicgcmVuZGVycyB0aGUgcm93IGluIHJlZCAodXNlZCBmb3IgTG9nb3V0KS4gKi9cbiAgdmFyaWFudD86ICdkZWZhdWx0JyB8ICdkYW5nZXInO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZmlsZU1lbnVEaXZpZGVyIHtcbiAgdHlwZTogJ2RpdmlkZXInO1xufVxuXG5leHBvcnQgdHlwZSBQcm9maWxlTWVudUVudHJ5ID0gUHJvZmlsZU1lbnVJdGVtIHwgUHJvZmlsZU1lbnVEaXZpZGVyO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNQcm9maWxlTWVudURpdmlkZXIoZW50cnk6IFByb2ZpbGVNZW51RW50cnkpOiBlbnRyeSBpcyBQcm9maWxlTWVudURpdmlkZXIge1xuICByZXR1cm4gKGVudHJ5IGFzIFByb2ZpbGVNZW51RGl2aWRlcikudHlwZSA9PT0gJ2RpdmlkZXInO1xufVxuIl19
|