@aakash58/chatbot 1.1.19 → 1.1.20

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.
@@ -103,11 +103,11 @@ export class AccountSectionComponent {
103
103
  });
104
104
  }
105
105
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
106
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AccountSectionComponent, isStandalone: true, selector: "app-account-section", inputs: { organizationId: "organizationId" }, outputs: { onDeleteAllHistory: "onDeleteAllHistory", onLogoutAll: "onLogoutAll", onLogoutSession: "onLogoutSession", onDeleteAccount: "onDeleteAccount" }, ngImport: i0, template: "<div class=\"account-container\">\r\n <div class=\"settings-list\">\r\n\r\n <!-- Delete all chats row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Delete all chats</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger\" (click)=\"confirmDeleteAllHistory()\">Delete all</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Export data row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Export data</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn\">Export</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Org ID row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Organization ID</span>\r\n <span class=\"row-sublabel\">Used for workspace identification</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <code class=\"org-id\">{{ organizationId }}</code>\r\n <button mat-icon-button (click)=\"copyOrgId()\" [matTooltip]=\"isCopied ? 'Copied!' : 'Copy ID'\">\r\n <mat-icon>{{ isCopied ? 'check' : 'content_copy' }}</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Logout all row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Global Logout</span>\r\n <span class=\"row-sublabel\">Sign out from all active devices</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger\" (click)=\"confirmLogoutAll()\">Logout all</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Delete account row -->\r\n <div class=\"settings-row no-border\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label danger-text\">Delete account</span>\r\n <span class=\"row-sublabel\">Permanently delete your profile and data</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger-filled\" (click)=\"confirmDeleteAccount()\">Delete Account</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Active Sessions Section -->\r\n <div class=\"sessions-section\">\r\n <h3>Active sessions</h3>\r\n <div class=\"sessions-table-container\">\r\n <table class=\"sessions-table\">\r\n <thead>\r\n <tr>\r\n <th>Device</th>\r\n <th>Location</th>\r\n <th>Created</th>\r\n <th>Updated</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (session of sessions; track session.id) {\r\n <tr [class.current]=\"session.isCurrent\">\r\n <td>\r\n <div class=\"device-cell\">\r\n <mat-icon>{{ session.device.includes('Windows') ? 'laptop' : 'smartphone' }}</mat-icon>\r\n <div class=\"device-info\">\r\n <span class=\"device-name\">{{ session.device }}</span>\r\n @if (session.isCurrent) {\r\n <span class=\"current-badge\">Current</span>\r\n }\r\n </div>\r\n </div>\r\n </td>\r\n <td>{{ session.location }}</td>\r\n <td>{{ session.created }}</td>\r\n <td>{{ session.updated }}</td>\r\n <td class=\"action-cell\">\r\n @if (!session.isCurrent) {\r\n <button mat-icon-button [matMenuTriggerFor]=\"sessionMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #sessionMenu=\"matMenu\" xPosition=\"before\">\r\n <button mat-menu-item (click)=\"confirmLogoutSession(session)\">\r\n <mat-icon>logout</mat-icon>\r\n <span>Log out of session</span>\r\n </button>\r\n </mat-menu>\r\n }\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n</div>", styles: [".account-container{padding:32px 48px;display:flex;flex-direction:column;gap:48px;animation:fadeIn .3s ease-out}.settings-list{display:flex;flex-direction:column;background:rgba(var(--black-rgb),.02);border-radius:16px;border:1px solid rgba(var(--black-rgb),.05);overflow:hidden}.settings-row{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid rgba(var(--black-rgb),.05);transition:background .2s ease}.settings-row.clickable{cursor:pointer}.settings-row.clickable:hover{background:rgba(var(--black-rgb),.04)}.settings-row.no-border{border-bottom:none}.settings-row .row-info{display:flex;flex-direction:column;gap:4px}.settings-row .row-info .row-label{font-size:1.05rem;font-weight:500;color:var(--text-color)}.settings-row .row-info .row-sublabel{font-size:.9rem;color:var(--secondary-text-color)}.settings-row .row-info .danger-text{color:var(--warn-color)}.settings-row .row-action{display:flex;align-items:center;gap:16px}.settings-row .row-action .status-text{font-size:.95rem;color:var(--secondary-text-color)}.settings-row .row-action .chevron{color:var(--secondary-text-color);font-size:20px}.settings-row .row-action .org-id{font-family:Space Mono,monospace;padding:4px 12px;background:rgba(var(--primary-rgb),.05);border-radius:6px;font-size:.9rem;color:var(--primary-color)}.pill-btn{background:none;border:1.5px solid rgba(var(--black-rgb),.15);border-radius:100px;padding:8px 24px;font-size:.9rem;font-weight:600;color:var(--text-color);cursor:pointer;transition:all .2s ease}.pill-btn:hover{background:rgba(var(--black-rgb),.05);border-color:rgba(var(--black-rgb),.3)}.pill-btn.danger{color:var(--warn-color);border-color:rgba(var(--warn-rgb),.3)}.pill-btn.danger:hover{background:rgba(var(--warn-rgb),.05);border-color:var(--warn-color)}.pill-btn.danger-filled{background:transparent;color:var(--text-color);border:var(--red)}.pill-btn.danger-filled:hover{background:var(--red);box-shadow:0 4px 12px rgba(var(--warn-rgb),.2)}.sessions-section{display:flex;flex-direction:column;gap:20px}.sessions-section h3{margin:0;font-size:1.25rem;font-weight:700;color:var(--text-color)}.sessions-table-container{border:1px solid rgba(var(--black-rgb),.05);border-radius:16px;background:rgba(var(--black-rgb),.01);overflow:hidden}.sessions-table{width:100%;border-collapse:collapse;text-align:left}.sessions-table th{padding:16px 20px;background:rgba(var(--black-rgb),.03);font-size:.8rem;font-weight:700;color:var(--secondary-text-color);text-transform:uppercase;letter-spacing:.05em}.sessions-table td{padding:20px;border-top:1px solid rgba(var(--black-rgb),.05);font-size:.95rem;color:var(--text-color)}.sessions-table tr.current{background:rgba(var(--primary-rgb),.03)}.sessions-table .action-cell{text-align:right;padding-right:12px;color:var(--secondary-text-color)}.device-cell{display:flex;align-items:center;gap:16px}.device-cell mat-icon{font-size:24px;color:var(--secondary-text-color)}.device-cell .device-info{display:flex;flex-direction:column;gap:4px}.device-cell .device-info .device-name{font-weight:600}.device-cell .device-info .current-badge{font-size:.7rem;color:var(--primary-color);background:rgba(var(--primary-rgb),.1);padding:2px 8px;border-radius:4px;width:fit-content;font-weight:700;text-transform:uppercase}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] }); }
106
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AccountSectionComponent, isStandalone: true, selector: "app-account-section", inputs: { organizationId: "organizationId" }, outputs: { onDeleteAllHistory: "onDeleteAllHistory", onLogoutAll: "onLogoutAll", onLogoutSession: "onLogoutSession", onDeleteAccount: "onDeleteAccount" }, ngImport: i0, template: "<div class=\"account-container\">\r\n <div class=\"settings-list\">\r\n\r\n <!-- Delete all chats row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Delete all chats</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger\" (click)=\"confirmDeleteAllHistory()\">Delete all</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Export data row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Export data</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn\">Export</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Org ID row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Organization ID</span>\r\n <span class=\"row-sublabel\">Used for workspace identification</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <code class=\"org-id\">{{ organizationId }}</code>\r\n <button mat-icon-button (click)=\"copyOrgId()\" [matTooltip]=\"isCopied ? 'Copied!' : 'Copy ID'\">\r\n <mat-icon>{{ isCopied ? 'check' : 'content_copy' }}</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Logout all row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Global Logout</span>\r\n <span class=\"row-sublabel\">Sign out from all active devices</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger\" (click)=\"confirmLogoutAll()\">Logout all</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Delete account row -->\r\n <div class=\"settings-row no-border\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label danger-text\">Delete account</span>\r\n <span class=\"row-sublabel\">Permanently delete your profile and data</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger-filled\" (click)=\"confirmDeleteAccount()\">Delete Account</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Active Sessions Section -->\r\n <div class=\"sessions-section\">\r\n <h3>Active sessions</h3>\r\n <div class=\"sessions-table-container\">\r\n <table class=\"sessions-table\">\r\n <thead>\r\n <tr>\r\n <th>Device</th>\r\n <th>Location</th>\r\n <th>Created</th>\r\n <th>Updated</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (session of sessions; track session.id) {\r\n <tr [class.current]=\"session.isCurrent\">\r\n <td>\r\n <div class=\"device-cell\">\r\n <mat-icon>{{ session.device.includes('Windows') ? 'laptop' : 'smartphone' }}</mat-icon>\r\n <div class=\"device-info\">\r\n <span class=\"device-name\">{{ session.device }}</span>\r\n @if (session.isCurrent) {\r\n <span class=\"current-badge\">Current</span>\r\n }\r\n </div>\r\n </div>\r\n </td>\r\n <td>{{ session.location }}</td>\r\n <td>{{ session.created }}</td>\r\n <td>{{ session.updated }}</td>\r\n <td class=\"action-cell\">\r\n @if (!session.isCurrent) {\r\n <button mat-icon-button [matMenuTriggerFor]=\"sessionMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #sessionMenu=\"matMenu\" xPosition=\"before\">\r\n <button mat-menu-item (click)=\"confirmLogoutSession(session)\">\r\n <mat-icon>logout</mat-icon>\r\n <span>Log out of session</span>\r\n </button>\r\n </mat-menu>\r\n }\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n</div>", styles: [".account-container{padding:32px 48px;display:flex;flex-direction:column;gap:48px;animation:fadeIn .3s ease-out}.settings-list{display:flex;flex-direction:column;background:rgba(var(--black-rgb),.02);border-radius:16px;border:1px solid rgba(var(--black-rgb),.05);overflow:hidden}.settings-row{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid rgba(var(--black-rgb),.05);transition:background .2s ease}.settings-row.clickable{cursor:pointer}.settings-row.clickable:hover{background:rgba(var(--black-rgb),.04)}.settings-row.no-border{border-bottom:none}.settings-row .row-info{display:flex;flex-direction:column;gap:4px}.settings-row .row-info .row-label{font-size:1.05rem;font-weight:500;color:var(--text-color)}.settings-row .row-info .row-sublabel{font-size:.9rem;color:var(--secondary-text-color)}.settings-row .row-info .danger-text{color:var(--warn-color)}.settings-row .row-action{display:flex;align-items:center;gap:16px}.settings-row .row-action .status-text{font-size:.95rem;color:var(--secondary-text-color)}.settings-row .row-action .chevron{color:var(--secondary-text-color);font-size:20px}.settings-row .row-action .org-id{font-family:Space Mono,monospace;padding:4px 12px;background:rgba(var(--primary-rgb),.05);border-radius:6px;font-size:.9rem;color:var(--primary-color)}.pill-btn{background:none;border:1.5px solid rgba(var(--black-rgb),.15);border-radius:100px;padding:8px 24px;font-size:.9rem;font-weight:600;color:var(--text-color);cursor:pointer;transition:all .2s ease}.pill-btn:hover{background:rgba(var(--black-rgb),.05);border-color:rgba(var(--black-rgb),.3)}.pill-btn.danger{color:var(--warn-color);border-color:rgba(var(--warn-rgb),.3)}.pill-btn.danger:hover{background:rgba(var(--warn-rgb),.05);border-color:var(--warn-color)}.pill-btn.danger-filled{background:transparent;color:var(--text-color);border:var(--red)}.pill-btn.danger-filled:hover{background:var(--red);box-shadow:0 4px 12px rgba(var(--warn-rgb),.2)}.sessions-section{display:flex;flex-direction:column;gap:20px}.sessions-section h3{margin:0;font-size:1.25rem;font-weight:700;color:var(--text-color)}.sessions-table-container{border:1px solid rgba(var(--black-rgb),.05);border-radius:16px;background:rgba(var(--black-rgb),.01);overflow:hidden}.sessions-table{width:100%;border-collapse:collapse;text-align:left}.sessions-table th{padding:16px 20px;background:rgba(var(--black-rgb),.03);font-size:.8rem;font-weight:700;color:var(--secondary-text-color);text-transform:uppercase;letter-spacing:.05em}.sessions-table td{padding:20px;border-top:1px solid rgba(var(--black-rgb),.05);font-size:.95rem;color:var(--text-color)}.sessions-table tr.current{background:rgba(var(--primary-rgb),.03)}.sessions-table .action-cell{text-align:right;padding-right:12px;color:var(--secondary-text-color)}.device-cell{display:flex;align-items:center;gap:16px}.device-cell mat-icon{font-size:24px;color:var(--secondary-text-color)}.device-cell .device-info{display:flex;flex-direction:column;gap:4px}.device-cell .device-info .device-name{font-weight:600}.device-cell .device-info .current-badge{font-size:.7rem;color:var(--primary-color);background:rgba(var(--primary-rgb),.1);padding:2px 8px;border-radius:4px;width:-moz-fit-content;width:fit-content;font-weight:700;text-transform:uppercase}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] }); }
107
107
  }
108
108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountSectionComponent, decorators: [{
109
109
  type: Component,
110
- args: [{ selector: 'app-account-section', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule, MatTooltipModule, MatMenuModule], template: "<div class=\"account-container\">\r\n <div class=\"settings-list\">\r\n\r\n <!-- Delete all chats row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Delete all chats</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger\" (click)=\"confirmDeleteAllHistory()\">Delete all</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Export data row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Export data</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn\">Export</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Org ID row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Organization ID</span>\r\n <span class=\"row-sublabel\">Used for workspace identification</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <code class=\"org-id\">{{ organizationId }}</code>\r\n <button mat-icon-button (click)=\"copyOrgId()\" [matTooltip]=\"isCopied ? 'Copied!' : 'Copy ID'\">\r\n <mat-icon>{{ isCopied ? 'check' : 'content_copy' }}</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Logout all row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Global Logout</span>\r\n <span class=\"row-sublabel\">Sign out from all active devices</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger\" (click)=\"confirmLogoutAll()\">Logout all</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Delete account row -->\r\n <div class=\"settings-row no-border\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label danger-text\">Delete account</span>\r\n <span class=\"row-sublabel\">Permanently delete your profile and data</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger-filled\" (click)=\"confirmDeleteAccount()\">Delete Account</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Active Sessions Section -->\r\n <div class=\"sessions-section\">\r\n <h3>Active sessions</h3>\r\n <div class=\"sessions-table-container\">\r\n <table class=\"sessions-table\">\r\n <thead>\r\n <tr>\r\n <th>Device</th>\r\n <th>Location</th>\r\n <th>Created</th>\r\n <th>Updated</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (session of sessions; track session.id) {\r\n <tr [class.current]=\"session.isCurrent\">\r\n <td>\r\n <div class=\"device-cell\">\r\n <mat-icon>{{ session.device.includes('Windows') ? 'laptop' : 'smartphone' }}</mat-icon>\r\n <div class=\"device-info\">\r\n <span class=\"device-name\">{{ session.device }}</span>\r\n @if (session.isCurrent) {\r\n <span class=\"current-badge\">Current</span>\r\n }\r\n </div>\r\n </div>\r\n </td>\r\n <td>{{ session.location }}</td>\r\n <td>{{ session.created }}</td>\r\n <td>{{ session.updated }}</td>\r\n <td class=\"action-cell\">\r\n @if (!session.isCurrent) {\r\n <button mat-icon-button [matMenuTriggerFor]=\"sessionMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #sessionMenu=\"matMenu\" xPosition=\"before\">\r\n <button mat-menu-item (click)=\"confirmLogoutSession(session)\">\r\n <mat-icon>logout</mat-icon>\r\n <span>Log out of session</span>\r\n </button>\r\n </mat-menu>\r\n }\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n</div>", styles: [".account-container{padding:32px 48px;display:flex;flex-direction:column;gap:48px;animation:fadeIn .3s ease-out}.settings-list{display:flex;flex-direction:column;background:rgba(var(--black-rgb),.02);border-radius:16px;border:1px solid rgba(var(--black-rgb),.05);overflow:hidden}.settings-row{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid rgba(var(--black-rgb),.05);transition:background .2s ease}.settings-row.clickable{cursor:pointer}.settings-row.clickable:hover{background:rgba(var(--black-rgb),.04)}.settings-row.no-border{border-bottom:none}.settings-row .row-info{display:flex;flex-direction:column;gap:4px}.settings-row .row-info .row-label{font-size:1.05rem;font-weight:500;color:var(--text-color)}.settings-row .row-info .row-sublabel{font-size:.9rem;color:var(--secondary-text-color)}.settings-row .row-info .danger-text{color:var(--warn-color)}.settings-row .row-action{display:flex;align-items:center;gap:16px}.settings-row .row-action .status-text{font-size:.95rem;color:var(--secondary-text-color)}.settings-row .row-action .chevron{color:var(--secondary-text-color);font-size:20px}.settings-row .row-action .org-id{font-family:Space Mono,monospace;padding:4px 12px;background:rgba(var(--primary-rgb),.05);border-radius:6px;font-size:.9rem;color:var(--primary-color)}.pill-btn{background:none;border:1.5px solid rgba(var(--black-rgb),.15);border-radius:100px;padding:8px 24px;font-size:.9rem;font-weight:600;color:var(--text-color);cursor:pointer;transition:all .2s ease}.pill-btn:hover{background:rgba(var(--black-rgb),.05);border-color:rgba(var(--black-rgb),.3)}.pill-btn.danger{color:var(--warn-color);border-color:rgba(var(--warn-rgb),.3)}.pill-btn.danger:hover{background:rgba(var(--warn-rgb),.05);border-color:var(--warn-color)}.pill-btn.danger-filled{background:transparent;color:var(--text-color);border:var(--red)}.pill-btn.danger-filled:hover{background:var(--red);box-shadow:0 4px 12px rgba(var(--warn-rgb),.2)}.sessions-section{display:flex;flex-direction:column;gap:20px}.sessions-section h3{margin:0;font-size:1.25rem;font-weight:700;color:var(--text-color)}.sessions-table-container{border:1px solid rgba(var(--black-rgb),.05);border-radius:16px;background:rgba(var(--black-rgb),.01);overflow:hidden}.sessions-table{width:100%;border-collapse:collapse;text-align:left}.sessions-table th{padding:16px 20px;background:rgba(var(--black-rgb),.03);font-size:.8rem;font-weight:700;color:var(--secondary-text-color);text-transform:uppercase;letter-spacing:.05em}.sessions-table td{padding:20px;border-top:1px solid rgba(var(--black-rgb),.05);font-size:.95rem;color:var(--text-color)}.sessions-table tr.current{background:rgba(var(--primary-rgb),.03)}.sessions-table .action-cell{text-align:right;padding-right:12px;color:var(--secondary-text-color)}.device-cell{display:flex;align-items:center;gap:16px}.device-cell mat-icon{font-size:24px;color:var(--secondary-text-color)}.device-cell .device-info{display:flex;flex-direction:column;gap:4px}.device-cell .device-info .device-name{font-weight:600}.device-cell .device-info .current-badge{font-size:.7rem;color:var(--primary-color);background:rgba(var(--primary-rgb),.1);padding:2px 8px;border-radius:4px;width:fit-content;font-weight:700;text-transform:uppercase}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}\n"] }]
110
+ args: [{ selector: 'app-account-section', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule, MatTooltipModule, MatMenuModule], template: "<div class=\"account-container\">\r\n <div class=\"settings-list\">\r\n\r\n <!-- Delete all chats row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Delete all chats</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger\" (click)=\"confirmDeleteAllHistory()\">Delete all</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Export data row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Export data</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn\">Export</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Org ID row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Organization ID</span>\r\n <span class=\"row-sublabel\">Used for workspace identification</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <code class=\"org-id\">{{ organizationId }}</code>\r\n <button mat-icon-button (click)=\"copyOrgId()\" [matTooltip]=\"isCopied ? 'Copied!' : 'Copy ID'\">\r\n <mat-icon>{{ isCopied ? 'check' : 'content_copy' }}</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Logout all row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Global Logout</span>\r\n <span class=\"row-sublabel\">Sign out from all active devices</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger\" (click)=\"confirmLogoutAll()\">Logout all</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Delete account row -->\r\n <div class=\"settings-row no-border\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label danger-text\">Delete account</span>\r\n <span class=\"row-sublabel\">Permanently delete your profile and data</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger-filled\" (click)=\"confirmDeleteAccount()\">Delete Account</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Active Sessions Section -->\r\n <div class=\"sessions-section\">\r\n <h3>Active sessions</h3>\r\n <div class=\"sessions-table-container\">\r\n <table class=\"sessions-table\">\r\n <thead>\r\n <tr>\r\n <th>Device</th>\r\n <th>Location</th>\r\n <th>Created</th>\r\n <th>Updated</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (session of sessions; track session.id) {\r\n <tr [class.current]=\"session.isCurrent\">\r\n <td>\r\n <div class=\"device-cell\">\r\n <mat-icon>{{ session.device.includes('Windows') ? 'laptop' : 'smartphone' }}</mat-icon>\r\n <div class=\"device-info\">\r\n <span class=\"device-name\">{{ session.device }}</span>\r\n @if (session.isCurrent) {\r\n <span class=\"current-badge\">Current</span>\r\n }\r\n </div>\r\n </div>\r\n </td>\r\n <td>{{ session.location }}</td>\r\n <td>{{ session.created }}</td>\r\n <td>{{ session.updated }}</td>\r\n <td class=\"action-cell\">\r\n @if (!session.isCurrent) {\r\n <button mat-icon-button [matMenuTriggerFor]=\"sessionMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #sessionMenu=\"matMenu\" xPosition=\"before\">\r\n <button mat-menu-item (click)=\"confirmLogoutSession(session)\">\r\n <mat-icon>logout</mat-icon>\r\n <span>Log out of session</span>\r\n </button>\r\n </mat-menu>\r\n }\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n</div>", styles: [".account-container{padding:32px 48px;display:flex;flex-direction:column;gap:48px;animation:fadeIn .3s ease-out}.settings-list{display:flex;flex-direction:column;background:rgba(var(--black-rgb),.02);border-radius:16px;border:1px solid rgba(var(--black-rgb),.05);overflow:hidden}.settings-row{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid rgba(var(--black-rgb),.05);transition:background .2s ease}.settings-row.clickable{cursor:pointer}.settings-row.clickable:hover{background:rgba(var(--black-rgb),.04)}.settings-row.no-border{border-bottom:none}.settings-row .row-info{display:flex;flex-direction:column;gap:4px}.settings-row .row-info .row-label{font-size:1.05rem;font-weight:500;color:var(--text-color)}.settings-row .row-info .row-sublabel{font-size:.9rem;color:var(--secondary-text-color)}.settings-row .row-info .danger-text{color:var(--warn-color)}.settings-row .row-action{display:flex;align-items:center;gap:16px}.settings-row .row-action .status-text{font-size:.95rem;color:var(--secondary-text-color)}.settings-row .row-action .chevron{color:var(--secondary-text-color);font-size:20px}.settings-row .row-action .org-id{font-family:Space Mono,monospace;padding:4px 12px;background:rgba(var(--primary-rgb),.05);border-radius:6px;font-size:.9rem;color:var(--primary-color)}.pill-btn{background:none;border:1.5px solid rgba(var(--black-rgb),.15);border-radius:100px;padding:8px 24px;font-size:.9rem;font-weight:600;color:var(--text-color);cursor:pointer;transition:all .2s ease}.pill-btn:hover{background:rgba(var(--black-rgb),.05);border-color:rgba(var(--black-rgb),.3)}.pill-btn.danger{color:var(--warn-color);border-color:rgba(var(--warn-rgb),.3)}.pill-btn.danger:hover{background:rgba(var(--warn-rgb),.05);border-color:var(--warn-color)}.pill-btn.danger-filled{background:transparent;color:var(--text-color);border:var(--red)}.pill-btn.danger-filled:hover{background:var(--red);box-shadow:0 4px 12px rgba(var(--warn-rgb),.2)}.sessions-section{display:flex;flex-direction:column;gap:20px}.sessions-section h3{margin:0;font-size:1.25rem;font-weight:700;color:var(--text-color)}.sessions-table-container{border:1px solid rgba(var(--black-rgb),.05);border-radius:16px;background:rgba(var(--black-rgb),.01);overflow:hidden}.sessions-table{width:100%;border-collapse:collapse;text-align:left}.sessions-table th{padding:16px 20px;background:rgba(var(--black-rgb),.03);font-size:.8rem;font-weight:700;color:var(--secondary-text-color);text-transform:uppercase;letter-spacing:.05em}.sessions-table td{padding:20px;border-top:1px solid rgba(var(--black-rgb),.05);font-size:.95rem;color:var(--text-color)}.sessions-table tr.current{background:rgba(var(--primary-rgb),.03)}.sessions-table .action-cell{text-align:right;padding-right:12px;color:var(--secondary-text-color)}.device-cell{display:flex;align-items:center;gap:16px}.device-cell mat-icon{font-size:24px;color:var(--secondary-text-color)}.device-cell .device-info{display:flex;flex-direction:column;gap:4px}.device-cell .device-info .device-name{font-weight:600}.device-cell .device-info .current-badge{font-size:.7rem;color:var(--primary-color);background:rgba(var(--primary-rgb),.1);padding:2px 8px;border-radius:4px;width:-moz-fit-content;width:fit-content;font-weight:700;text-transform:uppercase}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}\n"] }]
111
111
  }], propDecorators: { organizationId: [{
112
112
  type: Input
113
113
  }], onDeleteAllHistory: [{
@@ -119,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
119
119
  }], onDeleteAccount: [{
120
120
  type: Output
121
121
  }] } });
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9hcHAvcGVyc29uYWxpemF0aW9uL3NlY3Rpb25zL2FjY291bnQvYWNjb3VudC1zZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9hcHAvcGVyc29uYWxpemF0aW9uL3NlY3Rpb25zL2FjY291bnQvYWNjb3VudC1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7QUFrQmpFLE1BQU0sT0FBTyx1QkFBdUI7SUFQcEM7UUFRWSxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsQyxPQUFFLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFOUIs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QUFTO2dCQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDcEIsS0FBSyxFQUFFLHFCQUFxQjtZQUM1QixPQUFPLEVBQUUsMEhBQTBIO1lBQ25JLFdBQVcsRUFBRSxnQkFBZ0I7WUFDN0IsVUFBVSxFQUFFLFFBQVE7WUFDcEIsa0JBQWtCLEVBQUUsTUFBTTtZQUMxQixJQUFJLEVBQUUsZUFBZTtTQUN4QixDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3JCLElBQUksU0FBUztnQkFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0E5RlEsdUJBQXVCO21HQUF2Qix1QkFBdUIsd1JDekJwQyx5NkpBOEdNLHkzR0R6RlEsWUFBWSw4QkFBRSxhQUFhLG1MQUFFLGVBQWUsMklBQUUsZ0JBQWdCLDRUQUFFLGFBQWE7OzRGQUk5RSx1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0kscUJBQXFCLGNBQ25CLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsQ0FBQzs4QkFTL0UsY0FBYztzQkFBdEIsS0FBSztnQkFTSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9hdXRoL2F1dGguc2VydmljZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2ZVNlc3Npb24ge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIGRldmljZTogc3RyaW5nO1xyXG4gICAgbG9jYXRpb246IHN0cmluZztcclxuICAgIGNyZWF0ZWQ6IHN0cmluZztcclxuICAgIHVwZGF0ZWQ6IHN0cmluZztcclxuICAgIGlzQ3VycmVudD86IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhcHAtYWNjb3VudC1zZWN0aW9uJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGUsIE1hdE1lbnVNb2R1bGVdLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjY291bnQtc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9hY2NvdW50LXNlY3Rpb24uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWNjb3VudFNlY3Rpb25Db21wb25lbnQge1xyXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlID0gaW5qZWN0KERpYWxvZ1NlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XHJcbiAgICBwcml2YXRlIGNkID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgICBASW5wdXQoKSBvcmdhbml6YXRpb25JZDogc3RyaW5nID0gJyc7XHJcbiAgICBwdWJsaWMgaXNDb3BpZWQgPSBmYWxzZTtcclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMub3JnYW5pemF0aW9uSWQpIHtcclxuICAgICAgICAgICAgdGhpcy5vcmdhbml6YXRpb25JZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKSB8fCAnJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpIG9uRGVsZXRlQWxsSGlzdG9yeSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkxvZ291dEFsbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkxvZ291dFNlc3Npb24gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkRlbGV0ZUFjY291bnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgcHVibGljIHNlc3Npb25zOiBBY3RpdmVTZXNzaW9uW10gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZDogJ3Nlc3Npb24tMScsXHJcbiAgICAgICAgICAgIGRldmljZTogJ0Nocm9tZSAoV2luZG93cyknLFxyXG4gICAgICAgICAgICBsb2NhdGlvbjogJ0thdGhtYW5kdSwgQmFnbWF0aSBQcm92aW5jZSwgTlAnLFxyXG4gICAgICAgICAgICBjcmVhdGVkOiAnSmFuIDksIDIwMjYsIDk6MjEgQU0nLFxyXG4gICAgICAgICAgICB1cGRhdGVkOiAnSmFuIDksIDIwMjYsIDk6MjEgQU0nLFxyXG4gICAgICAgICAgICBpc0N1cnJlbnQ6IHRydWVcclxuICAgICAgICB9XHJcbiAgICBdO1xyXG5cclxuICAgIGNvcHlPcmdJZCgpIHtcclxuICAgICAgICBjb25zdCBvcmdJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKTtcclxuICAgICAgICBpZiAob3JnSWQpIHtcclxuICAgICAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQob3JnSWQpO1xyXG4gICAgICAgICAgICB0aGlzLmlzQ29waWVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNDb3BpZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9LCA4MDApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25maXJtTG9nb3V0QWxsKCkge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKHtcclxuICAgICAgICAgICAgdGl0bGU6ICdMb2cgb3V0IG9mIGFsbCBkZXZpY2VzJyxcclxuICAgICAgICAgICAgbWVzc2FnZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBsb2cgb3V0IG9mIGFsbCBhY3RpdmUgZGV2aWNlcz8gWW91IHdpbGwgYmUgc2lnbmVkIG91dCBldmVyeXdoZXJlIGV4Y2VwdCBoZXJlLicsXHJcbiAgICAgICAgICAgIGNvbmZpcm1UZXh0OiAnTG9nIG91dCBhbGwnLFxyXG4gICAgICAgICAgICBjYW5jZWxUZXh0OiAnQ2FuY2VsJyxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiAnd2FybicsXHJcbiAgICAgICAgICAgIGljb246ICdsb2dvdXQnXHJcbiAgICAgICAgfSkuc3Vic2NyaWJlKGNvbmZpcm1lZCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb25maXJtZWQpIHRoaXMub25Mb2dvdXRBbGwuZW1pdCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbmZpcm1Mb2dvdXRTZXNzaW9uKHNlc3Npb246IEFjdGl2ZVNlc3Npb24pIHtcclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uub3Blbih7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnTG9nIG91dCBvZiBzZXNzaW9uJyxcclxuICAgICAgICAgICAgbWVzc2FnZTogYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBsb2cgb3V0IGZyb20gJHtzZXNzaW9uLmRldmljZX0gYXQgJHtzZXNzaW9uLmxvY2F0aW9ufT9gLFxyXG4gICAgICAgICAgICBjb25maXJtVGV4dDogJ0xvZyBvdXQnLFxyXG4gICAgICAgICAgICBjYW5jZWxUZXh0OiAnQ2FuY2VsJyxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiAnd2FybicsXHJcbiAgICAgICAgICAgIGljb246ICdsb2dvdXQnXHJcbiAgICAgICAgfSkuc3Vic2NyaWJlKGNvbmZpcm1lZCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb25maXJtZWQpIHRoaXMub25Mb2dvdXRTZXNzaW9uLmVtaXQoc2Vzc2lvbi5pZCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uZmlybURlbGV0ZUFsbEhpc3RvcnkoKSB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oe1xyXG4gICAgICAgICAgICB0aXRsZTogJ0NsZWFyIEFsbCBIaXN0b3J5JyxcclxuICAgICAgICAgICAgbWVzc2FnZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgYWxsIGNoYXQgaGlzdG9yeT8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS4nLFxyXG4gICAgICAgICAgICBjb25maXJtVGV4dDogJ0NsZWFyIEFsbCcsXHJcbiAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdDYW5jZWwnLFxyXG4gICAgICAgICAgICBjb25maXJtQnV0dG9uQ29sb3I6ICd3YXJuJyxcclxuICAgICAgICAgICAgaWNvbjogJ2RlbGV0ZV9zd2VlcCdcclxuICAgICAgICB9KS5zdWJzY3JpYmUoY29uZmlybWVkID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbmZpcm1lZCkgdGhpcy5vbkRlbGV0ZUFsbEhpc3RvcnkuZW1pdCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbmZpcm1EZWxldGVBY2NvdW50KCkge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKHtcclxuICAgICAgICAgICAgdGl0bGU6ICdEZWxldGUgWW91ciBBY2NvdW50JyxcclxuICAgICAgICAgICAgbWVzc2FnZTogJ1RoaXMgd2lsbCBwZXJtYW5lbnRseSBkZWxldGUgeW91ciBhY2NvdW50IGFuZCBhbGwgYXNzb2NpYXRlZCBkYXRhLiBUaGlzIGFjdGlvbiBpcyBpcnJldmVyc2libGUuIEFyZSB5b3UgYWJzb2x1dGVseSBzdXJlPycsXHJcbiAgICAgICAgICAgIGNvbmZpcm1UZXh0OiAnRGVsZXRlIEFjY291bnQnLFxyXG4gICAgICAgICAgICBjYW5jZWxUZXh0OiAnQ2FuY2VsJyxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiAnd2FybicsXHJcbiAgICAgICAgICAgIGljb246ICdwZXJzb25fcmVtb3ZlJ1xyXG4gICAgICAgIH0pLnN1YnNjcmliZShjb25maXJtZWQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29uZmlybWVkKSB0aGlzLm9uRGVsZXRlQWNjb3VudC5lbWl0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImFjY291bnQtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3MtbGlzdFwiPlxyXG5cclxuICAgICAgICA8IS0tIERlbGV0ZSBhbGwgY2hhdHMgcm93IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5ncy1yb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJvdy1sYWJlbFwiPkRlbGV0ZSBhbGwgY2hhdHM8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWFjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBpbGwtYnRuIGRhbmdlclwiIChjbGljayk9XCJjb25maXJtRGVsZXRlQWxsSGlzdG9yeSgpXCI+RGVsZXRlIGFsbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBFeHBvcnQgZGF0YSByb3cgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNldHRpbmdzLXJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWluZm9cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm93LWxhYmVsXCI+RXhwb3J0IGRhdGE8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWFjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBpbGwtYnRuXCI+RXhwb3J0PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIE9yZyBJRCByb3cgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNldHRpbmdzLXJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWluZm9cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm93LWxhYmVsXCI+T3JnYW5pemF0aW9uIElEPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb3ctc3VibGFiZWxcIj5Vc2VkIGZvciB3b3Jrc3BhY2UgaWRlbnRpZmljYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWFjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9XCJvcmctaWRcIj57eyBvcmdhbml6YXRpb25JZCB9fTwvY29kZT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjb3B5T3JnSWQoKVwiIFttYXRUb29sdGlwXT1cImlzQ29waWVkID8gJ0NvcGllZCEnIDogJ0NvcHkgSUQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7IGlzQ29waWVkID8gJ2NoZWNrJyA6ICdjb250ZW50X2NvcHknIH19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBMb2dvdXQgYWxsIHJvdyAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3Mtcm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb3ctbGFiZWxcIj5HbG9iYWwgTG9nb3V0PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb3ctc3VibGFiZWxcIj5TaWduIG91dCBmcm9tIGFsbCBhY3RpdmUgZGV2aWNlczwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctYWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGlsbC1idG4gZGFuZ2VyXCIgKGNsaWNrKT1cImNvbmZpcm1Mb2dvdXRBbGwoKVwiPkxvZ291dCBhbGw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gRGVsZXRlIGFjY291bnQgcm93IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5ncy1yb3cgbm8tYm9yZGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb3ctbGFiZWwgZGFuZ2VyLXRleHRcIj5EZWxldGUgYWNjb3VudDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm93LXN1YmxhYmVsXCI+UGVybWFuZW50bHkgZGVsZXRlIHlvdXIgcHJvZmlsZSBhbmQgZGF0YTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctYWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGlsbC1idG4gZGFuZ2VyLWZpbGxlZFwiIChjbGljayk9XCJjb25maXJtRGVsZXRlQWNjb3VudCgpXCI+RGVsZXRlIEFjY291bnQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEFjdGl2ZSBTZXNzaW9ucyBTZWN0aW9uIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInNlc3Npb25zLXNlY3Rpb25cIj5cclxuICAgICAgICA8aDM+QWN0aXZlIHNlc3Npb25zPC9oMz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2Vzc2lvbnMtdGFibGUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInNlc3Npb25zLXRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+RGV2aWNlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkxvY2F0aW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkNyZWF0ZWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+VXBkYXRlZDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKHNlc3Npb24gb2Ygc2Vzc2lvbnM7IHRyYWNrIHNlc3Npb24uaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICA8dHIgW2NsYXNzLmN1cnJlbnRdPVwic2Vzc2lvbi5pc0N1cnJlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldmljZS1jZWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7IHNlc3Npb24uZGV2aWNlLmluY2x1ZGVzKCdXaW5kb3dzJykgPyAnbGFwdG9wJyA6ICdzbWFydHBob25lJyB9fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldmljZS1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV2aWNlLW5hbWVcIj57eyBzZXNzaW9uLmRldmljZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzZXNzaW9uLmlzQ3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnJlbnQtYmFkZ2VcIj5DdXJyZW50PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IHNlc3Npb24ubG9jYXRpb24gfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgc2Vzc2lvbi5jcmVhdGVkIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IHNlc3Npb24udXBkYXRlZCB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImFjdGlvbi1jZWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFzZXNzaW9uLmlzQ3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInNlc3Npb25NZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjc2Vzc2lvbk1lbnU9XCJtYXRNZW51XCIgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJjb25maXJtTG9nb3V0U2Vzc2lvbihzZXNzaW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+bG9nb3V0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+TG9nIG91dCBvZiBzZXNzaW9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9hcHAvcGVyc29uYWxpemF0aW9uL3NlY3Rpb25zL2FjY291bnQvYWNjb3VudC1zZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9hcHAvcGVyc29uYWxpemF0aW9uL3NlY3Rpb25zL2FjY291bnQvYWNjb3VudC1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7QUFrQmpFLE1BQU0sT0FBTyx1QkFBdUI7SUFQcEM7UUFRWSxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsQyxPQUFFLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFOUIs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QUFTO2dCQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDcEIsS0FBSyxFQUFFLHFCQUFxQjtZQUM1QixPQUFPLEVBQUUsMEhBQTBIO1lBQ25JLFdBQVcsRUFBRSxnQkFBZ0I7WUFDN0IsVUFBVSxFQUFFLFFBQVE7WUFDcEIsa0JBQWtCLEVBQUUsTUFBTTtZQUMxQixJQUFJLEVBQUUsZUFBZTtTQUN4QixDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3JCLElBQUksU0FBUztnQkFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0E5RlEsdUJBQXVCO21HQUF2Qix1QkFBdUIsd1JDekJwQyx5NkpBOEdNLGc1R0R6RlEsWUFBWSw4QkFBRSxhQUFhLG1MQUFFLGVBQWUsMklBQUUsZ0JBQWdCLDRUQUFFLGFBQWE7OzRGQUk5RSx1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0kscUJBQXFCLGNBQ25CLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsQ0FBQzs4QkFTL0UsY0FBYztzQkFBdEIsS0FBSztnQkFTSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9hdXRoL2F1dGguc2VydmljZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2ZVNlc3Npb24ge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIGRldmljZTogc3RyaW5nO1xyXG4gICAgbG9jYXRpb246IHN0cmluZztcclxuICAgIGNyZWF0ZWQ6IHN0cmluZztcclxuICAgIHVwZGF0ZWQ6IHN0cmluZztcclxuICAgIGlzQ3VycmVudD86IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhcHAtYWNjb3VudC1zZWN0aW9uJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGUsIE1hdE1lbnVNb2R1bGVdLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjY291bnQtc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9hY2NvdW50LXNlY3Rpb24uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWNjb3VudFNlY3Rpb25Db21wb25lbnQge1xyXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlID0gaW5qZWN0KERpYWxvZ1NlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XHJcbiAgICBwcml2YXRlIGNkID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgICBASW5wdXQoKSBvcmdhbml6YXRpb25JZDogc3RyaW5nID0gJyc7XHJcbiAgICBwdWJsaWMgaXNDb3BpZWQgPSBmYWxzZTtcclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMub3JnYW5pemF0aW9uSWQpIHtcclxuICAgICAgICAgICAgdGhpcy5vcmdhbml6YXRpb25JZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKSB8fCAnJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpIG9uRGVsZXRlQWxsSGlzdG9yeSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkxvZ291dEFsbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkxvZ291dFNlc3Npb24gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkRlbGV0ZUFjY291bnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgcHVibGljIHNlc3Npb25zOiBBY3RpdmVTZXNzaW9uW10gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZDogJ3Nlc3Npb24tMScsXHJcbiAgICAgICAgICAgIGRldmljZTogJ0Nocm9tZSAoV2luZG93cyknLFxyXG4gICAgICAgICAgICBsb2NhdGlvbjogJ0thdGhtYW5kdSwgQmFnbWF0aSBQcm92aW5jZSwgTlAnLFxyXG4gICAgICAgICAgICBjcmVhdGVkOiAnSmFuIDksIDIwMjYsIDk6MjEgQU0nLFxyXG4gICAgICAgICAgICB1cGRhdGVkOiAnSmFuIDksIDIwMjYsIDk6MjEgQU0nLFxyXG4gICAgICAgICAgICBpc0N1cnJlbnQ6IHRydWVcclxuICAgICAgICB9XHJcbiAgICBdO1xyXG5cclxuICAgIGNvcHlPcmdJZCgpIHtcclxuICAgICAgICBjb25zdCBvcmdJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKTtcclxuICAgICAgICBpZiAob3JnSWQpIHtcclxuICAgICAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQob3JnSWQpO1xyXG4gICAgICAgICAgICB0aGlzLmlzQ29waWVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNDb3BpZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9LCA4MDApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25maXJtTG9nb3V0QWxsKCkge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKHtcclxuICAgICAgICAgICAgdGl0bGU6ICdMb2cgb3V0IG9mIGFsbCBkZXZpY2VzJyxcclxuICAgICAgICAgICAgbWVzc2FnZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBsb2cgb3V0IG9mIGFsbCBhY3RpdmUgZGV2aWNlcz8gWW91IHdpbGwgYmUgc2lnbmVkIG91dCBldmVyeXdoZXJlIGV4Y2VwdCBoZXJlLicsXHJcbiAgICAgICAgICAgIGNvbmZpcm1UZXh0OiAnTG9nIG91dCBhbGwnLFxyXG4gICAgICAgICAgICBjYW5jZWxUZXh0OiAnQ2FuY2VsJyxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiAnd2FybicsXHJcbiAgICAgICAgICAgIGljb246ICdsb2dvdXQnXHJcbiAgICAgICAgfSkuc3Vic2NyaWJlKGNvbmZpcm1lZCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb25maXJtZWQpIHRoaXMub25Mb2dvdXRBbGwuZW1pdCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbmZpcm1Mb2dvdXRTZXNzaW9uKHNlc3Npb246IEFjdGl2ZVNlc3Npb24pIHtcclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uub3Blbih7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnTG9nIG91dCBvZiBzZXNzaW9uJyxcclxuICAgICAgICAgICAgbWVzc2FnZTogYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBsb2cgb3V0IGZyb20gJHtzZXNzaW9uLmRldmljZX0gYXQgJHtzZXNzaW9uLmxvY2F0aW9ufT9gLFxyXG4gICAgICAgICAgICBjb25maXJtVGV4dDogJ0xvZyBvdXQnLFxyXG4gICAgICAgICAgICBjYW5jZWxUZXh0OiAnQ2FuY2VsJyxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiAnd2FybicsXHJcbiAgICAgICAgICAgIGljb246ICdsb2dvdXQnXHJcbiAgICAgICAgfSkuc3Vic2NyaWJlKGNvbmZpcm1lZCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb25maXJtZWQpIHRoaXMub25Mb2dvdXRTZXNzaW9uLmVtaXQoc2Vzc2lvbi5pZCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uZmlybURlbGV0ZUFsbEhpc3RvcnkoKSB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oe1xyXG4gICAgICAgICAgICB0aXRsZTogJ0NsZWFyIEFsbCBIaXN0b3J5JyxcclxuICAgICAgICAgICAgbWVzc2FnZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgYWxsIGNoYXQgaGlzdG9yeT8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS4nLFxyXG4gICAgICAgICAgICBjb25maXJtVGV4dDogJ0NsZWFyIEFsbCcsXHJcbiAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdDYW5jZWwnLFxyXG4gICAgICAgICAgICBjb25maXJtQnV0dG9uQ29sb3I6ICd3YXJuJyxcclxuICAgICAgICAgICAgaWNvbjogJ2RlbGV0ZV9zd2VlcCdcclxuICAgICAgICB9KS5zdWJzY3JpYmUoY29uZmlybWVkID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbmZpcm1lZCkgdGhpcy5vbkRlbGV0ZUFsbEhpc3RvcnkuZW1pdCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbmZpcm1EZWxldGVBY2NvdW50KCkge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKHtcclxuICAgICAgICAgICAgdGl0bGU6ICdEZWxldGUgWW91ciBBY2NvdW50JyxcclxuICAgICAgICAgICAgbWVzc2FnZTogJ1RoaXMgd2lsbCBwZXJtYW5lbnRseSBkZWxldGUgeW91ciBhY2NvdW50IGFuZCBhbGwgYXNzb2NpYXRlZCBkYXRhLiBUaGlzIGFjdGlvbiBpcyBpcnJldmVyc2libGUuIEFyZSB5b3UgYWJzb2x1dGVseSBzdXJlPycsXHJcbiAgICAgICAgICAgIGNvbmZpcm1UZXh0OiAnRGVsZXRlIEFjY291bnQnLFxyXG4gICAgICAgICAgICBjYW5jZWxUZXh0OiAnQ2FuY2VsJyxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiAnd2FybicsXHJcbiAgICAgICAgICAgIGljb246ICdwZXJzb25fcmVtb3ZlJ1xyXG4gICAgICAgIH0pLnN1YnNjcmliZShjb25maXJtZWQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29uZmlybWVkKSB0aGlzLm9uRGVsZXRlQWNjb3VudC5lbWl0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImFjY291bnQtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3MtbGlzdFwiPlxyXG5cclxuICAgICAgICA8IS0tIERlbGV0ZSBhbGwgY2hhdHMgcm93IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5ncy1yb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJvdy1sYWJlbFwiPkRlbGV0ZSBhbGwgY2hhdHM8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWFjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBpbGwtYnRuIGRhbmdlclwiIChjbGljayk9XCJjb25maXJtRGVsZXRlQWxsSGlzdG9yeSgpXCI+RGVsZXRlIGFsbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBFeHBvcnQgZGF0YSByb3cgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNldHRpbmdzLXJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWluZm9cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm93LWxhYmVsXCI+RXhwb3J0IGRhdGE8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWFjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBpbGwtYnRuXCI+RXhwb3J0PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIE9yZyBJRCByb3cgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNldHRpbmdzLXJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWluZm9cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm93LWxhYmVsXCI+T3JnYW5pemF0aW9uIElEPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb3ctc3VibGFiZWxcIj5Vc2VkIGZvciB3b3Jrc3BhY2UgaWRlbnRpZmljYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWFjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9XCJvcmctaWRcIj57eyBvcmdhbml6YXRpb25JZCB9fTwvY29kZT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjb3B5T3JnSWQoKVwiIFttYXRUb29sdGlwXT1cImlzQ29waWVkID8gJ0NvcGllZCEnIDogJ0NvcHkgSUQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7IGlzQ29waWVkID8gJ2NoZWNrJyA6ICdjb250ZW50X2NvcHknIH19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBMb2dvdXQgYWxsIHJvdyAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3Mtcm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb3ctbGFiZWxcIj5HbG9iYWwgTG9nb3V0PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb3ctc3VibGFiZWxcIj5TaWduIG91dCBmcm9tIGFsbCBhY3RpdmUgZGV2aWNlczwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctYWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGlsbC1idG4gZGFuZ2VyXCIgKGNsaWNrKT1cImNvbmZpcm1Mb2dvdXRBbGwoKVwiPkxvZ291dCBhbGw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gRGVsZXRlIGFjY291bnQgcm93IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5ncy1yb3cgbm8tYm9yZGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb3ctbGFiZWwgZGFuZ2VyLXRleHRcIj5EZWxldGUgYWNjb3VudDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm93LXN1YmxhYmVsXCI+UGVybWFuZW50bHkgZGVsZXRlIHlvdXIgcHJvZmlsZSBhbmQgZGF0YTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctYWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGlsbC1idG4gZGFuZ2VyLWZpbGxlZFwiIChjbGljayk9XCJjb25maXJtRGVsZXRlQWNjb3VudCgpXCI+RGVsZXRlIEFjY291bnQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEFjdGl2ZSBTZXNzaW9ucyBTZWN0aW9uIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInNlc3Npb25zLXNlY3Rpb25cIj5cclxuICAgICAgICA8aDM+QWN0aXZlIHNlc3Npb25zPC9oMz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2Vzc2lvbnMtdGFibGUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInNlc3Npb25zLXRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+RGV2aWNlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkxvY2F0aW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkNyZWF0ZWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+VXBkYXRlZDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKHNlc3Npb24gb2Ygc2Vzc2lvbnM7IHRyYWNrIHNlc3Npb24uaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICA8dHIgW2NsYXNzLmN1cnJlbnRdPVwic2Vzc2lvbi5pc0N1cnJlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldmljZS1jZWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7IHNlc3Npb24uZGV2aWNlLmluY2x1ZGVzKCdXaW5kb3dzJykgPyAnbGFwdG9wJyA6ICdzbWFydHBob25lJyB9fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldmljZS1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV2aWNlLW5hbWVcIj57eyBzZXNzaW9uLmRldmljZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzZXNzaW9uLmlzQ3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnJlbnQtYmFkZ2VcIj5DdXJyZW50PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IHNlc3Npb24ubG9jYXRpb24gfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgc2Vzc2lvbi5jcmVhdGVkIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IHNlc3Npb24udXBkYXRlZCB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImFjdGlvbi1jZWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFzZXNzaW9uLmlzQ3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInNlc3Npb25NZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjc2Vzc2lvbk1lbnU9XCJtYXRNZW51XCIgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJjb25maXJtTG9nb3V0U2Vzc2lvbihzZXNzaW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+bG9nb3V0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+TG9nIG91dCBvZiBzZXNzaW9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -3651,11 +3651,11 @@ class AccountSectionComponent {
3651
3651
  });
3652
3652
  }
3653
3653
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3654
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AccountSectionComponent, isStandalone: true, selector: "app-account-section", inputs: { organizationId: "organizationId" }, outputs: { onDeleteAllHistory: "onDeleteAllHistory", onLogoutAll: "onLogoutAll", onLogoutSession: "onLogoutSession", onDeleteAccount: "onDeleteAccount" }, ngImport: i0, template: "<div class=\"account-container\">\r\n <div class=\"settings-list\">\r\n\r\n <!-- Delete all chats row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Delete all chats</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger\" (click)=\"confirmDeleteAllHistory()\">Delete all</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Export data row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Export data</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn\">Export</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Org ID row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Organization ID</span>\r\n <span class=\"row-sublabel\">Used for workspace identification</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <code class=\"org-id\">{{ organizationId }}</code>\r\n <button mat-icon-button (click)=\"copyOrgId()\" [matTooltip]=\"isCopied ? 'Copied!' : 'Copy ID'\">\r\n <mat-icon>{{ isCopied ? 'check' : 'content_copy' }}</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Logout all row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Global Logout</span>\r\n <span class=\"row-sublabel\">Sign out from all active devices</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger\" (click)=\"confirmLogoutAll()\">Logout all</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Delete account row -->\r\n <div class=\"settings-row no-border\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label danger-text\">Delete account</span>\r\n <span class=\"row-sublabel\">Permanently delete your profile and data</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger-filled\" (click)=\"confirmDeleteAccount()\">Delete Account</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Active Sessions Section -->\r\n <div class=\"sessions-section\">\r\n <h3>Active sessions</h3>\r\n <div class=\"sessions-table-container\">\r\n <table class=\"sessions-table\">\r\n <thead>\r\n <tr>\r\n <th>Device</th>\r\n <th>Location</th>\r\n <th>Created</th>\r\n <th>Updated</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (session of sessions; track session.id) {\r\n <tr [class.current]=\"session.isCurrent\">\r\n <td>\r\n <div class=\"device-cell\">\r\n <mat-icon>{{ session.device.includes('Windows') ? 'laptop' : 'smartphone' }}</mat-icon>\r\n <div class=\"device-info\">\r\n <span class=\"device-name\">{{ session.device }}</span>\r\n @if (session.isCurrent) {\r\n <span class=\"current-badge\">Current</span>\r\n }\r\n </div>\r\n </div>\r\n </td>\r\n <td>{{ session.location }}</td>\r\n <td>{{ session.created }}</td>\r\n <td>{{ session.updated }}</td>\r\n <td class=\"action-cell\">\r\n @if (!session.isCurrent) {\r\n <button mat-icon-button [matMenuTriggerFor]=\"sessionMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #sessionMenu=\"matMenu\" xPosition=\"before\">\r\n <button mat-menu-item (click)=\"confirmLogoutSession(session)\">\r\n <mat-icon>logout</mat-icon>\r\n <span>Log out of session</span>\r\n </button>\r\n </mat-menu>\r\n }\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n</div>", styles: [".account-container{padding:32px 48px;display:flex;flex-direction:column;gap:48px;animation:fadeIn .3s ease-out}.settings-list{display:flex;flex-direction:column;background:rgba(var(--black-rgb),.02);border-radius:16px;border:1px solid rgba(var(--black-rgb),.05);overflow:hidden}.settings-row{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid rgba(var(--black-rgb),.05);transition:background .2s ease}.settings-row.clickable{cursor:pointer}.settings-row.clickable:hover{background:rgba(var(--black-rgb),.04)}.settings-row.no-border{border-bottom:none}.settings-row .row-info{display:flex;flex-direction:column;gap:4px}.settings-row .row-info .row-label{font-size:1.05rem;font-weight:500;color:var(--text-color)}.settings-row .row-info .row-sublabel{font-size:.9rem;color:var(--secondary-text-color)}.settings-row .row-info .danger-text{color:var(--warn-color)}.settings-row .row-action{display:flex;align-items:center;gap:16px}.settings-row .row-action .status-text{font-size:.95rem;color:var(--secondary-text-color)}.settings-row .row-action .chevron{color:var(--secondary-text-color);font-size:20px}.settings-row .row-action .org-id{font-family:Space Mono,monospace;padding:4px 12px;background:rgba(var(--primary-rgb),.05);border-radius:6px;font-size:.9rem;color:var(--primary-color)}.pill-btn{background:none;border:1.5px solid rgba(var(--black-rgb),.15);border-radius:100px;padding:8px 24px;font-size:.9rem;font-weight:600;color:var(--text-color);cursor:pointer;transition:all .2s ease}.pill-btn:hover{background:rgba(var(--black-rgb),.05);border-color:rgba(var(--black-rgb),.3)}.pill-btn.danger{color:var(--warn-color);border-color:rgba(var(--warn-rgb),.3)}.pill-btn.danger:hover{background:rgba(var(--warn-rgb),.05);border-color:var(--warn-color)}.pill-btn.danger-filled{background:transparent;color:var(--text-color);border:var(--red)}.pill-btn.danger-filled:hover{background:var(--red);box-shadow:0 4px 12px rgba(var(--warn-rgb),.2)}.sessions-section{display:flex;flex-direction:column;gap:20px}.sessions-section h3{margin:0;font-size:1.25rem;font-weight:700;color:var(--text-color)}.sessions-table-container{border:1px solid rgba(var(--black-rgb),.05);border-radius:16px;background:rgba(var(--black-rgb),.01);overflow:hidden}.sessions-table{width:100%;border-collapse:collapse;text-align:left}.sessions-table th{padding:16px 20px;background:rgba(var(--black-rgb),.03);font-size:.8rem;font-weight:700;color:var(--secondary-text-color);text-transform:uppercase;letter-spacing:.05em}.sessions-table td{padding:20px;border-top:1px solid rgba(var(--black-rgb),.05);font-size:.95rem;color:var(--text-color)}.sessions-table tr.current{background:rgba(var(--primary-rgb),.03)}.sessions-table .action-cell{text-align:right;padding-right:12px;color:var(--secondary-text-color)}.device-cell{display:flex;align-items:center;gap:16px}.device-cell mat-icon{font-size:24px;color:var(--secondary-text-color)}.device-cell .device-info{display:flex;flex-direction:column;gap:4px}.device-cell .device-info .device-name{font-weight:600}.device-cell .device-info .current-badge{font-size:.7rem;color:var(--primary-color);background:rgba(var(--primary-rgb),.1);padding:2px 8px;border-radius:4px;width:fit-content;font-weight:700;text-transform:uppercase}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] }); }
3654
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AccountSectionComponent, isStandalone: true, selector: "app-account-section", inputs: { organizationId: "organizationId" }, outputs: { onDeleteAllHistory: "onDeleteAllHistory", onLogoutAll: "onLogoutAll", onLogoutSession: "onLogoutSession", onDeleteAccount: "onDeleteAccount" }, ngImport: i0, template: "<div class=\"account-container\">\r\n <div class=\"settings-list\">\r\n\r\n <!-- Delete all chats row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Delete all chats</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger\" (click)=\"confirmDeleteAllHistory()\">Delete all</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Export data row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Export data</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn\">Export</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Org ID row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Organization ID</span>\r\n <span class=\"row-sublabel\">Used for workspace identification</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <code class=\"org-id\">{{ organizationId }}</code>\r\n <button mat-icon-button (click)=\"copyOrgId()\" [matTooltip]=\"isCopied ? 'Copied!' : 'Copy ID'\">\r\n <mat-icon>{{ isCopied ? 'check' : 'content_copy' }}</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Logout all row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Global Logout</span>\r\n <span class=\"row-sublabel\">Sign out from all active devices</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger\" (click)=\"confirmLogoutAll()\">Logout all</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Delete account row -->\r\n <div class=\"settings-row no-border\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label danger-text\">Delete account</span>\r\n <span class=\"row-sublabel\">Permanently delete your profile and data</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger-filled\" (click)=\"confirmDeleteAccount()\">Delete Account</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Active Sessions Section -->\r\n <div class=\"sessions-section\">\r\n <h3>Active sessions</h3>\r\n <div class=\"sessions-table-container\">\r\n <table class=\"sessions-table\">\r\n <thead>\r\n <tr>\r\n <th>Device</th>\r\n <th>Location</th>\r\n <th>Created</th>\r\n <th>Updated</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (session of sessions; track session.id) {\r\n <tr [class.current]=\"session.isCurrent\">\r\n <td>\r\n <div class=\"device-cell\">\r\n <mat-icon>{{ session.device.includes('Windows') ? 'laptop' : 'smartphone' }}</mat-icon>\r\n <div class=\"device-info\">\r\n <span class=\"device-name\">{{ session.device }}</span>\r\n @if (session.isCurrent) {\r\n <span class=\"current-badge\">Current</span>\r\n }\r\n </div>\r\n </div>\r\n </td>\r\n <td>{{ session.location }}</td>\r\n <td>{{ session.created }}</td>\r\n <td>{{ session.updated }}</td>\r\n <td class=\"action-cell\">\r\n @if (!session.isCurrent) {\r\n <button mat-icon-button [matMenuTriggerFor]=\"sessionMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #sessionMenu=\"matMenu\" xPosition=\"before\">\r\n <button mat-menu-item (click)=\"confirmLogoutSession(session)\">\r\n <mat-icon>logout</mat-icon>\r\n <span>Log out of session</span>\r\n </button>\r\n </mat-menu>\r\n }\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n</div>", styles: [".account-container{padding:32px 48px;display:flex;flex-direction:column;gap:48px;animation:fadeIn .3s ease-out}.settings-list{display:flex;flex-direction:column;background:rgba(var(--black-rgb),.02);border-radius:16px;border:1px solid rgba(var(--black-rgb),.05);overflow:hidden}.settings-row{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid rgba(var(--black-rgb),.05);transition:background .2s ease}.settings-row.clickable{cursor:pointer}.settings-row.clickable:hover{background:rgba(var(--black-rgb),.04)}.settings-row.no-border{border-bottom:none}.settings-row .row-info{display:flex;flex-direction:column;gap:4px}.settings-row .row-info .row-label{font-size:1.05rem;font-weight:500;color:var(--text-color)}.settings-row .row-info .row-sublabel{font-size:.9rem;color:var(--secondary-text-color)}.settings-row .row-info .danger-text{color:var(--warn-color)}.settings-row .row-action{display:flex;align-items:center;gap:16px}.settings-row .row-action .status-text{font-size:.95rem;color:var(--secondary-text-color)}.settings-row .row-action .chevron{color:var(--secondary-text-color);font-size:20px}.settings-row .row-action .org-id{font-family:Space Mono,monospace;padding:4px 12px;background:rgba(var(--primary-rgb),.05);border-radius:6px;font-size:.9rem;color:var(--primary-color)}.pill-btn{background:none;border:1.5px solid rgba(var(--black-rgb),.15);border-radius:100px;padding:8px 24px;font-size:.9rem;font-weight:600;color:var(--text-color);cursor:pointer;transition:all .2s ease}.pill-btn:hover{background:rgba(var(--black-rgb),.05);border-color:rgba(var(--black-rgb),.3)}.pill-btn.danger{color:var(--warn-color);border-color:rgba(var(--warn-rgb),.3)}.pill-btn.danger:hover{background:rgba(var(--warn-rgb),.05);border-color:var(--warn-color)}.pill-btn.danger-filled{background:transparent;color:var(--text-color);border:var(--red)}.pill-btn.danger-filled:hover{background:var(--red);box-shadow:0 4px 12px rgba(var(--warn-rgb),.2)}.sessions-section{display:flex;flex-direction:column;gap:20px}.sessions-section h3{margin:0;font-size:1.25rem;font-weight:700;color:var(--text-color)}.sessions-table-container{border:1px solid rgba(var(--black-rgb),.05);border-radius:16px;background:rgba(var(--black-rgb),.01);overflow:hidden}.sessions-table{width:100%;border-collapse:collapse;text-align:left}.sessions-table th{padding:16px 20px;background:rgba(var(--black-rgb),.03);font-size:.8rem;font-weight:700;color:var(--secondary-text-color);text-transform:uppercase;letter-spacing:.05em}.sessions-table td{padding:20px;border-top:1px solid rgba(var(--black-rgb),.05);font-size:.95rem;color:var(--text-color)}.sessions-table tr.current{background:rgba(var(--primary-rgb),.03)}.sessions-table .action-cell{text-align:right;padding-right:12px;color:var(--secondary-text-color)}.device-cell{display:flex;align-items:center;gap:16px}.device-cell mat-icon{font-size:24px;color:var(--secondary-text-color)}.device-cell .device-info{display:flex;flex-direction:column;gap:4px}.device-cell .device-info .device-name{font-weight:600}.device-cell .device-info .current-badge{font-size:.7rem;color:var(--primary-color);background:rgba(var(--primary-rgb),.1);padding:2px 8px;border-radius:4px;width:-moz-fit-content;width:fit-content;font-weight:700;text-transform:uppercase}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }] }); }
3655
3655
  }
3656
3656
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountSectionComponent, decorators: [{
3657
3657
  type: Component,
3658
- args: [{ selector: 'app-account-section', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule, MatTooltipModule, MatMenuModule], template: "<div class=\"account-container\">\r\n <div class=\"settings-list\">\r\n\r\n <!-- Delete all chats row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Delete all chats</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger\" (click)=\"confirmDeleteAllHistory()\">Delete all</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Export data row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Export data</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn\">Export</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Org ID row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Organization ID</span>\r\n <span class=\"row-sublabel\">Used for workspace identification</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <code class=\"org-id\">{{ organizationId }}</code>\r\n <button mat-icon-button (click)=\"copyOrgId()\" [matTooltip]=\"isCopied ? 'Copied!' : 'Copy ID'\">\r\n <mat-icon>{{ isCopied ? 'check' : 'content_copy' }}</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Logout all row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Global Logout</span>\r\n <span class=\"row-sublabel\">Sign out from all active devices</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger\" (click)=\"confirmLogoutAll()\">Logout all</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Delete account row -->\r\n <div class=\"settings-row no-border\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label danger-text\">Delete account</span>\r\n <span class=\"row-sublabel\">Permanently delete your profile and data</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger-filled\" (click)=\"confirmDeleteAccount()\">Delete Account</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Active Sessions Section -->\r\n <div class=\"sessions-section\">\r\n <h3>Active sessions</h3>\r\n <div class=\"sessions-table-container\">\r\n <table class=\"sessions-table\">\r\n <thead>\r\n <tr>\r\n <th>Device</th>\r\n <th>Location</th>\r\n <th>Created</th>\r\n <th>Updated</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (session of sessions; track session.id) {\r\n <tr [class.current]=\"session.isCurrent\">\r\n <td>\r\n <div class=\"device-cell\">\r\n <mat-icon>{{ session.device.includes('Windows') ? 'laptop' : 'smartphone' }}</mat-icon>\r\n <div class=\"device-info\">\r\n <span class=\"device-name\">{{ session.device }}</span>\r\n @if (session.isCurrent) {\r\n <span class=\"current-badge\">Current</span>\r\n }\r\n </div>\r\n </div>\r\n </td>\r\n <td>{{ session.location }}</td>\r\n <td>{{ session.created }}</td>\r\n <td>{{ session.updated }}</td>\r\n <td class=\"action-cell\">\r\n @if (!session.isCurrent) {\r\n <button mat-icon-button [matMenuTriggerFor]=\"sessionMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #sessionMenu=\"matMenu\" xPosition=\"before\">\r\n <button mat-menu-item (click)=\"confirmLogoutSession(session)\">\r\n <mat-icon>logout</mat-icon>\r\n <span>Log out of session</span>\r\n </button>\r\n </mat-menu>\r\n }\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n</div>", styles: [".account-container{padding:32px 48px;display:flex;flex-direction:column;gap:48px;animation:fadeIn .3s ease-out}.settings-list{display:flex;flex-direction:column;background:rgba(var(--black-rgb),.02);border-radius:16px;border:1px solid rgba(var(--black-rgb),.05);overflow:hidden}.settings-row{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid rgba(var(--black-rgb),.05);transition:background .2s ease}.settings-row.clickable{cursor:pointer}.settings-row.clickable:hover{background:rgba(var(--black-rgb),.04)}.settings-row.no-border{border-bottom:none}.settings-row .row-info{display:flex;flex-direction:column;gap:4px}.settings-row .row-info .row-label{font-size:1.05rem;font-weight:500;color:var(--text-color)}.settings-row .row-info .row-sublabel{font-size:.9rem;color:var(--secondary-text-color)}.settings-row .row-info .danger-text{color:var(--warn-color)}.settings-row .row-action{display:flex;align-items:center;gap:16px}.settings-row .row-action .status-text{font-size:.95rem;color:var(--secondary-text-color)}.settings-row .row-action .chevron{color:var(--secondary-text-color);font-size:20px}.settings-row .row-action .org-id{font-family:Space Mono,monospace;padding:4px 12px;background:rgba(var(--primary-rgb),.05);border-radius:6px;font-size:.9rem;color:var(--primary-color)}.pill-btn{background:none;border:1.5px solid rgba(var(--black-rgb),.15);border-radius:100px;padding:8px 24px;font-size:.9rem;font-weight:600;color:var(--text-color);cursor:pointer;transition:all .2s ease}.pill-btn:hover{background:rgba(var(--black-rgb),.05);border-color:rgba(var(--black-rgb),.3)}.pill-btn.danger{color:var(--warn-color);border-color:rgba(var(--warn-rgb),.3)}.pill-btn.danger:hover{background:rgba(var(--warn-rgb),.05);border-color:var(--warn-color)}.pill-btn.danger-filled{background:transparent;color:var(--text-color);border:var(--red)}.pill-btn.danger-filled:hover{background:var(--red);box-shadow:0 4px 12px rgba(var(--warn-rgb),.2)}.sessions-section{display:flex;flex-direction:column;gap:20px}.sessions-section h3{margin:0;font-size:1.25rem;font-weight:700;color:var(--text-color)}.sessions-table-container{border:1px solid rgba(var(--black-rgb),.05);border-radius:16px;background:rgba(var(--black-rgb),.01);overflow:hidden}.sessions-table{width:100%;border-collapse:collapse;text-align:left}.sessions-table th{padding:16px 20px;background:rgba(var(--black-rgb),.03);font-size:.8rem;font-weight:700;color:var(--secondary-text-color);text-transform:uppercase;letter-spacing:.05em}.sessions-table td{padding:20px;border-top:1px solid rgba(var(--black-rgb),.05);font-size:.95rem;color:var(--text-color)}.sessions-table tr.current{background:rgba(var(--primary-rgb),.03)}.sessions-table .action-cell{text-align:right;padding-right:12px;color:var(--secondary-text-color)}.device-cell{display:flex;align-items:center;gap:16px}.device-cell mat-icon{font-size:24px;color:var(--secondary-text-color)}.device-cell .device-info{display:flex;flex-direction:column;gap:4px}.device-cell .device-info .device-name{font-weight:600}.device-cell .device-info .current-badge{font-size:.7rem;color:var(--primary-color);background:rgba(var(--primary-rgb),.1);padding:2px 8px;border-radius:4px;width:fit-content;font-weight:700;text-transform:uppercase}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}\n"] }]
3658
+ args: [{ selector: 'app-account-section', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule, MatTooltipModule, MatMenuModule], template: "<div class=\"account-container\">\r\n <div class=\"settings-list\">\r\n\r\n <!-- Delete all chats row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Delete all chats</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger\" (click)=\"confirmDeleteAllHistory()\">Delete all</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Export data row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Export data</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn\">Export</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Org ID row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Organization ID</span>\r\n <span class=\"row-sublabel\">Used for workspace identification</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <code class=\"org-id\">{{ organizationId }}</code>\r\n <button mat-icon-button (click)=\"copyOrgId()\" [matTooltip]=\"isCopied ? 'Copied!' : 'Copy ID'\">\r\n <mat-icon>{{ isCopied ? 'check' : 'content_copy' }}</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Logout all row -->\r\n <div class=\"settings-row\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label\">Global Logout</span>\r\n <span class=\"row-sublabel\">Sign out from all active devices</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger\" (click)=\"confirmLogoutAll()\">Logout all</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Delete account row -->\r\n <div class=\"settings-row no-border\">\r\n <div class=\"row-info\">\r\n <span class=\"row-label danger-text\">Delete account</span>\r\n <span class=\"row-sublabel\">Permanently delete your profile and data</span>\r\n </div>\r\n <div class=\"row-action\">\r\n <button class=\"pill-btn danger-filled\" (click)=\"confirmDeleteAccount()\">Delete Account</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Active Sessions Section -->\r\n <div class=\"sessions-section\">\r\n <h3>Active sessions</h3>\r\n <div class=\"sessions-table-container\">\r\n <table class=\"sessions-table\">\r\n <thead>\r\n <tr>\r\n <th>Device</th>\r\n <th>Location</th>\r\n <th>Created</th>\r\n <th>Updated</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (session of sessions; track session.id) {\r\n <tr [class.current]=\"session.isCurrent\">\r\n <td>\r\n <div class=\"device-cell\">\r\n <mat-icon>{{ session.device.includes('Windows') ? 'laptop' : 'smartphone' }}</mat-icon>\r\n <div class=\"device-info\">\r\n <span class=\"device-name\">{{ session.device }}</span>\r\n @if (session.isCurrent) {\r\n <span class=\"current-badge\">Current</span>\r\n }\r\n </div>\r\n </div>\r\n </td>\r\n <td>{{ session.location }}</td>\r\n <td>{{ session.created }}</td>\r\n <td>{{ session.updated }}</td>\r\n <td class=\"action-cell\">\r\n @if (!session.isCurrent) {\r\n <button mat-icon-button [matMenuTriggerFor]=\"sessionMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #sessionMenu=\"matMenu\" xPosition=\"before\">\r\n <button mat-menu-item (click)=\"confirmLogoutSession(session)\">\r\n <mat-icon>logout</mat-icon>\r\n <span>Log out of session</span>\r\n </button>\r\n </mat-menu>\r\n }\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n</div>", styles: [".account-container{padding:32px 48px;display:flex;flex-direction:column;gap:48px;animation:fadeIn .3s ease-out}.settings-list{display:flex;flex-direction:column;background:rgba(var(--black-rgb),.02);border-radius:16px;border:1px solid rgba(var(--black-rgb),.05);overflow:hidden}.settings-row{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid rgba(var(--black-rgb),.05);transition:background .2s ease}.settings-row.clickable{cursor:pointer}.settings-row.clickable:hover{background:rgba(var(--black-rgb),.04)}.settings-row.no-border{border-bottom:none}.settings-row .row-info{display:flex;flex-direction:column;gap:4px}.settings-row .row-info .row-label{font-size:1.05rem;font-weight:500;color:var(--text-color)}.settings-row .row-info .row-sublabel{font-size:.9rem;color:var(--secondary-text-color)}.settings-row .row-info .danger-text{color:var(--warn-color)}.settings-row .row-action{display:flex;align-items:center;gap:16px}.settings-row .row-action .status-text{font-size:.95rem;color:var(--secondary-text-color)}.settings-row .row-action .chevron{color:var(--secondary-text-color);font-size:20px}.settings-row .row-action .org-id{font-family:Space Mono,monospace;padding:4px 12px;background:rgba(var(--primary-rgb),.05);border-radius:6px;font-size:.9rem;color:var(--primary-color)}.pill-btn{background:none;border:1.5px solid rgba(var(--black-rgb),.15);border-radius:100px;padding:8px 24px;font-size:.9rem;font-weight:600;color:var(--text-color);cursor:pointer;transition:all .2s ease}.pill-btn:hover{background:rgba(var(--black-rgb),.05);border-color:rgba(var(--black-rgb),.3)}.pill-btn.danger{color:var(--warn-color);border-color:rgba(var(--warn-rgb),.3)}.pill-btn.danger:hover{background:rgba(var(--warn-rgb),.05);border-color:var(--warn-color)}.pill-btn.danger-filled{background:transparent;color:var(--text-color);border:var(--red)}.pill-btn.danger-filled:hover{background:var(--red);box-shadow:0 4px 12px rgba(var(--warn-rgb),.2)}.sessions-section{display:flex;flex-direction:column;gap:20px}.sessions-section h3{margin:0;font-size:1.25rem;font-weight:700;color:var(--text-color)}.sessions-table-container{border:1px solid rgba(var(--black-rgb),.05);border-radius:16px;background:rgba(var(--black-rgb),.01);overflow:hidden}.sessions-table{width:100%;border-collapse:collapse;text-align:left}.sessions-table th{padding:16px 20px;background:rgba(var(--black-rgb),.03);font-size:.8rem;font-weight:700;color:var(--secondary-text-color);text-transform:uppercase;letter-spacing:.05em}.sessions-table td{padding:20px;border-top:1px solid rgba(var(--black-rgb),.05);font-size:.95rem;color:var(--text-color)}.sessions-table tr.current{background:rgba(var(--primary-rgb),.03)}.sessions-table .action-cell{text-align:right;padding-right:12px;color:var(--secondary-text-color)}.device-cell{display:flex;align-items:center;gap:16px}.device-cell mat-icon{font-size:24px;color:var(--secondary-text-color)}.device-cell .device-info{display:flex;flex-direction:column;gap:4px}.device-cell .device-info .device-name{font-weight:600}.device-cell .device-info .current-badge{font-size:.7rem;color:var(--primary-color);background:rgba(var(--primary-rgb),.1);padding:2px 8px;border-radius:4px;width:-moz-fit-content;width:fit-content;font-weight:700;text-transform:uppercase}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}\n"] }]
3659
3659
  }], propDecorators: { organizationId: [{
3660
3660
  type: Input
3661
3661
  }], onDeleteAllHistory: [{