tango-app-ui-ai-audio 3.0.21 → 3.0.23

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.
@@ -68,7 +68,8 @@ export class AudioPageComponent {
68
68
  const imgStyle = 'max-width:100%;border-radius:8px;margin:8px 0;display:block;';
69
69
  let processed = text
70
70
  .replace(/<img\s[^>]*>/gi, (match) => {
71
- const tag = /style=/i.test(match) ? match : match.replace(/\/?>$/, ` style="${imgStyle}" />`);
71
+ const hasStyle = /style=/i.test(match);
72
+ const tag = hasStyle ? match : match.replace(/\/?>$/, ` style="${imgStyle}" />`);
72
73
  imgPlaceholders.push(tag);
73
74
  return `%%IMG_${imgPlaceholders.length - 1}%%`;
74
75
  })
@@ -960,11 +961,11 @@ export class AudioPageComponent {
960
961
  this.router.navigate(['/manage/ai-audio/filters']);
961
962
  }
962
963
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AudioPageComponent, deps: [{ token: i1.PageInfoService }, { token: i2.AudioService }, { token: i1.GlobalStateService }, { token: i3.Router }, { token: i4.DomSanitizer }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
963
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AudioPageComponent, selector: "lib-audio-page", host: { listeners: { "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "chatThreadMessages", first: true, predicate: ["chatThreadMessages"], descendants: true }, { propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true }], ngImport: i0, template: "<div class=\"audio-page\">\n\n <!-- \u2500\u2500 Header Row \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"header-row-container mb-4\" *ngIf=\"cohortOptions.length > 0\">\n <div class=\"d-flex align-items-center justify-content-between\">\n <div class=\"d-flex align-items-center gap-3\">\n <!-- Custom Single-select Cohort Dropdown -->\n <div class=\"cohort-dropdown\" [class.open]=\"isCohortDropdownOpen\">\n <div class=\"cohort-dropdown-trigger\"\n (click)=\"isCohortDropdownOpen = !isCohortDropdownOpen; $event.stopPropagation()\">\n <span>{{ filterType }}</span>\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\" [class.rotate]=\"isCohortDropdownOpen\">\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div class=\"cohort-dropdown-menu\" *ngIf=\"isCohortDropdownOpen\" (click)=\"$event.stopPropagation()\">\n <div class=\"cohort-option\" *ngFor=\"let opt of cohortOptions\" [class.selected]=\"opt === filterType\"\n (click)=\"selectCohortType(opt)\">\n {{ opt }}\n </div>\n </div>\n </div>\n <h4 class=\"section-title mb-0\">Cohort Analysis</h4>\n </div>\n <div class=\"total-audio-label\">Total Audio Available <strong>{{ totalAudio }}</strong></div>\n </div>\n </div>\n\n <!-- \u2500\u2500 Stats Grid (Dynamic) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"stats-grid mb-4\">\n\n <!-- Loader -->\n <ng-container *ngIf=\"isLoadingCards\">\n <div class=\"stat-card\" *ngFor=\"let s of [1,2,3,4,5,6]\">\n <div class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <div class=\"stat-card\" *ngFor=\"let card of cohortCards\" [hidden]=\"isLoadingCards\">\n <div class=\"stat-card-header text-capitalize ellipse1 cursor-pointer\" (click)=\"onCardRowClick('', card.name)\">\n {{ card.name }}\n </div>\n <div class=\"stat-card-body\">\n\n <!-- BOOLEAN_BASKET: label + responses + score -->\n <ng-container *ngIf=\"card.type === 'BOOLEAN_BASKET'\">\n <table class=\"cohort-table w-100\">\n <tbody>\n <tr *ngFor=\"let row of card?.booleanRows\">\n <td class=\"text-primary text-capitalize text-decoration-underline cursor-pointer\" (click)=\"onCardRowClick('', row?.label)\">{{ row?.label.split('_').join(' ').toLowerCase() }}</td>\n <td class=\"text-end\">{{ row?.responses }}</td>\n <td class=\"text-end\">{{ row?.score }}%</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n <!-- NUMERIC_SCALAR: total + avg -->\n <ng-container *ngIf=\"card.type === 'NUMERIC_SCALAR' || card.type === 'NUMERIC_ARRAY'\">\n <table class=\"cohort-table w-100\">\n <tbody>\n <tr>\n <td>Total</td>\n <td class=\"text-end\">{{ card.numericData?.total }}</td>\n </tr>\n <tr>\n <td>Average</td>\n <td class=\"text-end\">{{ card.numericData?.avg }}</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n <!-- SUBJECTIVE: id + reasoning text -->\n <ng-container *ngIf=\"card.type === 'SUBJECTIVE'\">\n <table class=\"cohort-table w-100\">\n <tbody>\n <tr *ngFor=\"let row of card.subjectiveRows\">\n <td class=\"text-nowrap\">{{ row?.store_id || '\u2014' }}</td>\n <td class=\"text-nowrap\">{{ row?.date || '\u2014' }}</td>\n <td class=\"text-primary text-capitalize text-decoration-underline cursor-pointer\" (click)=\"onCardRowClick(row?._id,'')\" [ngbTooltip]=\"row?.reasoning || 'No description available'\" placement=\"top\" container=\"body\" tooltipClass=\"audio-tooltip\">{{ row?.reasoning && row?.reasoning !== '' ? row?.reasoning?.slice(0, 25) + '...' : 'No reasoning available' }}</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n <ng-container *ngIf=\"card.type === 'SUBJECTIVE_COUNT'\">\n <table class=\"cohort-table w-100\">\n <tbody>\n <tr *ngFor=\"let row of card.subjectiveRows\">\n <td class=\"text-nowrap fw-bold\"\n [ngbTooltip]=\"row?._id\" placement=\"top\" container=\"body\" tooltipClass=\"audio-tooltip\">{{ row?._id }}</td>\n <td [ngbTooltip]=\"row?.reasoning || 'No description available'\" placement=\"top\" container=\"body\" tooltipClass=\"audio-tooltip\">{{ row?.reasoning && row?.reasoning !== '' ? row?.reasoning?.slice(0, 25) : 'No reasoning available' }}</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n <!-- UNIQUE_PITCHES: pitchId + description -->\n <ng-container *ngIf=\"card.type === 'UNIQUE_PITCHES'\">\n <table class=\"cohort-table w-100\">\n <tbody>\n <tr *ngFor=\"let pitch of card.pitchRows\">\n <td class=\"text-nowrap fw-bold\"\n [ngbTooltip]=\"pitch.id\" placement=\"top\" container=\"body\" tooltipClass=\"audio-tooltip\">{{ pitch.id }}</td>\n <td [ngbTooltip]=\"pitch.desc || 'No description available'\" placement=\"top\" container=\"body\" tooltipClass=\"audio-tooltip\">{{ pitch.desc ? pitch.desc.slice(0, 75) + '...' : 'No description available' }}</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n </div>\n </div>\n\n </div>\n\n <!-- \u2500\u2500 Conversation Analysis \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"conversation-area bg-white p-4 rounded-3\">\n\n <!-- Section Header -->\n <div class=\"d-flex justify-content-between align-items-center px-2 bottom-border mb-4\">\n <h5 class=\"section-title mb-0\">Conversation Analysis</h5>\n <button class=\"export-btn btn btn-default mx-1 btn-outline bg-white btn-outline-default\" (click)=\"exportData()\" ngbTooltip=\"Export conversation data to CSV\" placement=\"top\" [disabled]=\"totalItems === 0\">\n <span class=\"export-text\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\n fill=\"none\">\n <path\n d=\"M8.125 13.125H16.3563L14.7438 14.7438L15.625 15.625L18.75 12.5L15.625 9.375L14.7438 10.2562L16.3563 11.875H8.125V13.125Z\"\n fill=\"black\" />\n <path\n d=\"M13.75 8.75001V6.25001C13.7505 6.16776 13.7347 6.08622 13.7036 6.01007C13.6725 5.93392 13.6267 5.86466 13.5688 5.80626L9.19375 1.43126C9.13535 1.37333 9.06609 1.32751 8.98994 1.2964C8.91379 1.2653 8.83225 1.24953 8.75 1.25001H2.5C2.16848 1.25001 1.85054 1.38171 1.61612 1.61613C1.3817 1.85055 1.25 2.16849 1.25 2.50001V17.5C1.25 17.8315 1.3817 18.1495 1.61612 18.3839C1.85054 18.6183 2.16848 18.75 2.5 18.75H12.5C12.8315 18.75 13.1495 18.6183 13.3839 18.3839C13.6183 18.1495 13.75 17.8315 13.75 17.5V16.25H12.5V17.5H2.5V2.50001H7.5V6.25001C7.5 6.58153 7.6317 6.89947 7.86612 7.13389C8.10054 7.36831 8.41848 7.50001 8.75 7.50001H12.5V8.75001H13.75ZM8.75 6.25001V2.75626L12.2438 6.25001H8.75Z\"\n fill=\"black\" />\n </svg> Export</span>\n </button>\n </div>\n\n <!-- \u2500\u2500 Tango AI Chat \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"chat-page\">\n <div class=\"chat-layout-container\">\n <div class=\"chat-main\">\n <header class=\"chat-header\">\n <div class=\"header-top\">\n <div class=\"header-content text-center\"></div>\n </div>\n </header>\n\n <!-- Message Area -->\n <div class=\"chat-messages-area scrollbar-hidden\" #scrollContainer>\n <div class=\"d-flex justify-content-center align-items-center py-4\" *ngIf=\"isChatLoading\">\n <span class=\"text-muted\">Loading conversation...</span>\n </div>\n <div *ngFor=\"let msg of messages\" class=\"message-wrapper\" [class.user]=\"msg.sender === 'user'\">\n <div class=\"message\" [class.assistant]=\"msg.sender === 'assistant'\">\n <div class=\"message-avatar\" *ngIf=\"msg.sender === 'assistant'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <rect width=\"24\" height=\"24\" rx=\"12\" fill=\"#EAF8FF\" />\n <path d=\"M15.9941 14.5561L15.4565 14.0185L9.663 8.225L11.3816 6.5064L11.7934 6.0938C11.8327 6.05395 11.8549 6.00032 11.8552 5.9428C11.855 5.91668 11.8494 5.88931 11.8387 5.86381C11.828 5.8383 11.8123 5.81517 11.7926 5.79572L11.38 5.38312L9.5574 3.55729L9.1448 3.14469C9.1253 3.12485 9.1021 3.10909 9.0764 3.09833C9.0508 3.08757 9.0232 3.08203 8.9954 3.08203C8.9676 3.08203 8.94 3.08757 8.9144 3.09833C8.8887 3.10909 8.8655 3.12485 8.8459 3.14469L8.4333 3.5581L6.1998 5.79166C6.18 5.81109 6.1642 5.83428 6.1535 5.85988C6.1427 5.88547 6.1372 5.91294 6.1372 5.9407C6.1372 5.96846 6.1427 5.99593 6.1535 6.02152C6.1642 6.04712 6.18 6.07031 6.1998 6.08974L8.3334 8.2242L2.5392 14.0185L2.004 14.5561C1.9643 14.5955 1.9418 14.6489 1.9414 14.7048C1.9416 14.7588 1.9622 14.8107 1.9991 14.8502C2.0187 14.8712 2.0425 14.8879 2.0689 14.8994C2.0953 14.9108 2.1238 14.9168 2.1526 14.9168H7.3645C7.4204 14.9166 7.474 14.8942 7.5136 14.8547C7.5531 14.8151 7.5754 14.7615 7.5757 14.7056V14.1874C7.5757 14.1313 7.5534 14.0775 7.5139 14.0378C7.4743 13.9981 7.4206 13.9756 7.3645 13.9754H3.9126L8.9978 8.8902L14.083 13.9754H10.6011C10.545 13.9756 10.4913 13.9981 10.4517 14.0378C10.4122 14.0775 10.3899 14.1313 10.3899 14.1874V14.7056C10.3898 14.7334 10.3953 14.761 10.4061 14.7867C10.4168 14.8123 10.4326 14.8356 10.4525 14.855C10.4919 14.8944 10.5454 14.9166 10.6011 14.9168H15.8447C15.8736 14.9169 15.9023 14.911 15.9288 14.8995C15.9554 14.8881 15.9793 14.8713 15.999 14.8502C16.037 14.8103 16.0577 14.7572 16.0568 14.7022C16.0559 14.6471 16.0334 14.5947 15.9941 14.5561ZM8.9946 4.32645L10.6133 5.94517L8.9986 7.5598L7.3799 5.94111L8.9946 4.32645Z\" fill=\"#00A3FF\"/>\n </svg>\n </div>\n <div class=\"message-content\">\n <div class=\"message-bubble\">\n <div [innerHTML]=\"parseMarkdown(msg.text)\"></div>\n <span class=\"msg-sender-tag\" *ngIf=\"msg.sender === 'user'\">{{ userInitials }}</span>\n </div>\n <div class=\"message-actions\" *ngIf=\"msg.sender === 'assistant' && msg.text\">\n <button class=\"btn-copy\" (click)=\"copyToClipboard(msg.text)\" title=\"Copy to clipboard\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"#667085\" stroke-width=\"1.67\">\n <path d=\"M13.3333 13.3333V16.6667C13.3333 17.5872 12.5872 18.3333 11.6667 18.3333H3.33333C2.41286 18.3333 1.66667 17.5872 1.66667 16.6667V8.33333C1.66667 7.41286 2.41286 6.66667 3.33333 6.66667H6.66667M8.33333 3.33333V11.6667C8.33333 12.5872 9.07953 13.3333 10 13.3333H16.6667C17.5872 13.3333 18.3333 12.5872 18.3333 11.6667V3.33333C18.3333 2.41286 17.5872 1.66667 16.6667 1.66667H10C9.07953 1.66667 8.33333 2.41286 8.33333 3.33333Z\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n </div>\n </div>\n <!-- Typing Indicator -->\n <div class=\"message-wrapper assistant\" *ngIf=\"isTyping\">\n <div class=\"message assistant\">\n <div class=\"message-avatar\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <rect width=\"24\" height=\"24\" rx=\"12\" fill=\"#EAF8FF\" />\n <path d=\"M15.9941 14.5561L15.4565 14.0185L9.663 8.225L11.3816 6.5064L11.7934 6.0938C11.8327 6.05395 11.8549 6.00032 11.8552 5.9428C11.855 5.91668 11.8494 5.88931 11.8387 5.86381C11.828 5.8383 11.8123 5.81517 11.7926 5.79572L11.38 5.38312L9.5574 3.55729L9.1448 3.14469C9.1253 3.12485 9.1021 3.10909 9.0764 3.09833C9.0508 3.08757 9.0232 3.08203 8.9954 3.08203C8.9676 3.08203 8.94 3.08757 8.9144 3.09833C8.8887 3.10909 8.8655 3.12485 8.8459 3.14469L8.4333 3.5581L6.1998 5.79166C6.18 5.81109 6.1642 5.83428 6.1535 5.85988C6.1427 5.88547 6.1372 5.91294 6.1372 5.9407C6.1372 5.96846 6.1427 5.99593 6.1535 6.02152C6.1642 6.04712 6.18 6.07031 6.1998 6.08974L8.3334 8.2242L2.5392 14.0185L2.004 14.5561C1.9643 14.5955 1.9418 14.6489 1.9414 14.7048C1.9416 14.7588 1.9622 14.8107 1.9991 14.8502C2.0187 14.8712 2.0425 14.8879 2.0689 14.8994C2.0953 14.9108 2.1238 14.9168 2.1526 14.9168H7.3645C7.4204 14.9166 7.474 14.8942 7.5136 14.8547C7.5531 14.8151 7.5754 14.7615 7.5757 14.7056V14.1874C7.5757 14.1313 7.5534 14.0775 7.5139 14.0378C7.4743 13.9981 7.4206 13.9756 7.3645 13.9754H3.9126L8.9978 8.8902L14.083 13.9754H10.6011C10.545 13.9756 10.4913 13.9981 10.4517 14.0378C10.4122 14.0775 10.3899 14.1313 10.3899 14.1874V14.7056C10.3898 14.7334 10.3953 14.761 10.4061 14.7867C10.4168 14.8123 10.4326 14.8356 10.4525 14.855C10.4919 14.8944 10.5454 14.9166 10.6011 14.9168H15.8447C15.8736 14.9169 15.9023 14.911 15.9288 14.8995C15.9554 14.8881 15.9793 14.8713 15.999 14.8502C16.037 14.8103 16.0577 14.7572 16.0568 14.7022C16.0559 14.6471 16.0334 14.5947 15.9941 14.5561ZM8.9946 4.32645L10.6133 5.94517L8.9986 7.5598L7.3799 5.94111L8.9946 4.32645Z\" fill=\"#00A3FF\"/>\n </svg>\n </div>\n <div class=\"message-content mt-3\">\n <div class=\"message-bubble typing\">\n <span class=\"dot\"></span><span class=\"dot\"></span><span class=\"dot\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Copy Feedback Toast -->\n <div class=\"copy-feedback-toast\" *ngIf=\"copyFeedback\">{{ copyFeedback }}</div>\n <!-- Input Area -->\n <div class=\"chat-input-area border-top\">\n <div class=\"chat-footer d-flex align-items-center justify-content-between\">\n <div class=\"input-wrapper d-flex align-items-center flex-grow-1\">\n <div class=\"plus-menu-wrap me-2\">\n <button class=\"btn-plus\" type=\"button\" (click)=\"togglePlusMenu()\" [class.open]=\"showPlusMenu\">/</button>\n <div class=\"plus-popup\" *ngIf=\"showPlusMenu\">\n <div class=\"plus-popup-section-label\">Model</div>\n <button class=\"plus-popup-item\" type=\"button\" *ngFor=\"let m of modelOptions\"\n [class.selected]=\"selectedModel === m.value\" (click)=\"selectModel(m.value); closePlusMenu()\">\n <span class=\"model-hint fw-bold text-dark fs-5\">{{ m.label | titlecase }}</span>\n <svg *ngIf=\"selectedModel === m.value\" class=\"check-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#009BF3\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\"/>\n </svg>\n </button>\n <div class=\"plus-popup-divider\"></div>\n <button class=\"plus-popup-item\" type=\"button\" (click)=\"closePlusMenu(); newChat()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#344054\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M12 20h9M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z\"/>\n </svg>\n <span>New Chat</span>\n </button>\n <button class=\"plus-popup-item\" type=\"button\" (click)=\"closePlusMenu(); toggleChatHistory()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#344054\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M12 8v4l3 3m6-3a9 9 0 1 1-18 0 9 9 0 0 1 18 0z\"/>\n </svg>\n <span>Chat History</span>\n </button>\n </div>\n </div>\n <input type=\"text\" [(ngModel)]=\"userMessage\" class=\"chat-input\" placeholder=\"Ask anything...\"\n (keyup.enter)=\"sendMessage()\" [disabled]=\"isTyping\">\n <button class=\"btn-history-inline\" *ngIf=\"!showChatHistory\" (click)=\"toggleChatHistory()\" title=\"Chat History\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#667085\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M12 8v4l3 3m6-3a9 9 0 1 1-18 0 9 9 0 0 1 18 0z\"/>\n </svg>\n </button>\n <button class=\"btn-send\" (click)=\"sendMessage()\" [disabled]=\"!userMessage.trim() || isTyping\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"></line>\n <polygon points=\"22 2 15 22 11 13 2 9 22 2\"></polygon>\n </svg>\n </button>\n </div>\n </div>\n </div>\n </div>\n <!-- Backdrop -->\n <div class=\"chat-history-backdrop\" *ngIf=\"showChatHistory\" (click)=\"toggleChatHistory()\"></div>\n <!-- Right Sidebar: Chat History -->\n <aside class=\"chat-history-sidebar border-start\" *ngIf=\"showChatHistory\">\n <div class=\"sidebar-header p-3 border-bottom d-flex justify-content-between align-items-center\">\n <h6 (click)=\"toggleChatHistory()\" class=\"mb-0 fw-bold cursor-pointer\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M10.8333 14.1673L15 10.0007L10.8333 5.83398M5 14.1673L9.16667 10.0007L5 5.83398\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg> Chat History\n </h6>\n </div>\n <div class=\"sidebar-search p-3 pb-0\">\n <div class=\"history-search-wrapper\">\n <i class=\"bi bi-search\"></i>\n <input type=\"text\" placeholder=\"Search chats..\" [(ngModel)]=\"searchText\">\n </div>\n </div>\n <div class=\"sidebar-content p-3 scrollbar-hidden\">\n <div class=\"text-center text-muted py-3\" *ngIf=\"isHistoryLoading\">Loading...</div>\n <div class=\"text-center text-muted py-3\" *ngIf=\"!isHistoryLoading && filteredHistory.length === 0\">No chats found</div>\n <div *ngFor=\"let chat of filteredHistory\" class=\"history-item\" [class.active]=\"selectedChatId === chat.session_id\"\n (click)=\"loadChat(chat.session_id)\">\n <div class=\"item-title text-truncate\">{{ chat.session_title }}</div>\n </div>\n </div>\n <div class=\"sidebar-footer p-3 mt-auto\">\n <button class=\"btn-new-chat w-100\" (click)=\"newChat()\">\n <i class=\"bi bi-plus-lg me-2\"></i> New Chat\n </button>\n </div>\n </aside>\n </div>\n</div>\n\n <!-- Conversations Count -->\n <div class=\"conversations-count mb-3 d-flex align-items-center flex-wrap gap-2\">\n <strong>{{ totalItems }} Total Conversations Found</strong>\n <span *ngIf=\"selectedCardId || selectedCardName\" class=\"active-filter-chip\">\n <span class=\"chip-label\">{{ selectedCardId || selectedCardName }}</span>\n <button class=\"chip-remove\" (click)=\"clearCardFilter()\" title=\"Remove filter\">&times;</button>\n </span>\n </div>\n\n <!-- Conversation Cards -->\n <div class=\"conversations-list\">\n\n <!-- Loader -->\n <ng-container *ngIf=\"isLoadingConversations\">\n <div class=\"conversation-card p-3\" *ngFor=\"let s of [1,2,3]\">\n <div class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- No Data -->\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column my-10\"\n *ngIf=\"!isLoadingConversations && displayedConversations.length === 0\">\n <img class=\"img-map\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\n <div class=\"nodata-title\">No data found</div>\n <div class=\"nodata-sub\">No cohorts has been created yet.<br>\n Please Create a cohort to view the dashboard.</div>\n <button class=\"btn btn-primary rounded-3 w-25 p-4 mt-3\" (click)=\"createCohort()\">\n <span class=\"fw-bold fs-4 mx-2 d-flex align-items-center justify-content-center\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n<path d=\"M10.0013 4.16699V15.8337M4.16797 10.0003H15.8346\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n <span class=\"fw-bold fs-4 d-flex align-items-center justify-content-center ms-2\">Create\n Cohorts</span>\n </span>\n </button>\n </div>\n\n <div class=\"conversation-card\" *ngFor=\"let c of displayedConversations; let mi = index\"\n [hidden]=\"isLoadingConversations\">\n\n <!-- Summary Row (always visible) -->\n <div class=\"conv-summary d-flex justify-content-between\" (click)=\"toggleConversation(c.audioId)\">\n <div class=\"conv-summary-left\">\n <div class=\"d-flex align-items-center gap-2 my-2\">\n <span class=\"conv-id m-0\">{{ c.audioId }}</span>\n </div>\n <div class=\"conv-meta-row my-2\">\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\n fill=\"none\">\n <path\n d=\"M4.08984 9.46777C3.93408 9.48707 3.77504 9.5 3.61328 9.5C3.51562 9.49999 3.41967 9.49448 3.3252 9.4873V14.2236C3.3252 14.9015 3.88652 15.4648 4.58984 15.4648H13.4111C14.1145 15.4648 14.6758 14.9015 14.6758 14.2236V9.48828C14.5827 9.49512 14.4878 9.5 14.3926 9.5C14.2297 9.49998 14.0691 9.48762 13.9111 9.46777V12.9824H4.08984V9.46777ZM13.9189 2.53613H4.08203C3.98145 2.53623 3.8913 2.58826 3.84473 2.66113V2.66211L2.26465 5.12988L2.24316 5.16309C1.63609 6.15653 2.22253 7.46491 3.34277 7.6123C3.43532 7.62358 3.52388 7.62988 3.61133 7.62988C4.18312 7.62975 4.68923 7.3838 5.04102 7.00195L5.40918 6.60156L5.77734 7.00293C6.12562 7.38334 6.63076 7.62988 7.20605 7.62988C7.7788 7.62982 8.28675 7.38306 8.63477 7.00293L12.5986 6.60059L12.9668 7.00293C13.3148 7.38307 13.8227 7.62982 14.3955 7.62988C14.4806 7.62988 14.5716 7.62357 14.6641 7.6123H14.6631C15.7899 7.46139 16.377 6.12516 15.7393 5.12988L14.1572 2.66211L14.1562 2.66113C14.1097 2.58826 14.0195 2.53619 13.9189 2.53613Z\"\n stroke=\"#667085\" />\n </svg> <span class=\"text-name\">Store:</span> <span class=\"name-val\">{{ c.storeName }}</span></span>\n <span class=\"meta-sep\"></span>\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"15\" viewBox=\"0 0 14 15\"\n fill=\"none\">\n <path\n d=\"M12.75 14.25V12.75C12.75 11.9544 12.4339 11.1913 11.8713 10.6287C11.3087 10.0661 10.5456 9.75 9.75 9.75H3.75C2.95435 9.75 2.19129 10.0661 1.62868 10.6287C1.06607 11.1913 0.75 11.9544 0.75 12.75V14.25M9.75 3.75C9.75 5.40685 8.40685 6.75 6.75 6.75C5.09315 6.75 3.75 5.40685 3.75 3.75C3.75 2.09315 5.09315 0.75 6.75 0.75C8.40685 0.75 9.75 2.09315 9.75 3.75Z\"\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg><span class=\"text-name\">Staff:</span> <span class=\"name-val\">{{ c.userName }}</span></span>\n <span class=\"meta-sep\"></span>\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\n fill=\"none\">\n <path\n d=\"M10.875 13.6875C10.35 13.6875 9.90625 13.5062 9.54375 13.1437C9.18125 12.7812 9 12.3375 9 11.8125C9 11.2875 9.18125 10.8438 9.54375 10.4813C9.90625 10.1188 10.35 9.9375 10.875 9.9375C11.4 9.9375 11.8438 10.1188 12.2063 10.4813C12.5688 10.8438 12.75 11.2875 12.75 11.8125C12.75 12.3375 12.5688 12.7812 12.2063 13.1437C11.8438 13.5062 11.4 13.6875 10.875 13.6875ZM3.75 16.6875C3.3375 16.6875 2.9845 16.5408 2.691 16.2472C2.3975 15.9537 2.2505 15.6005 2.25 15.1875V4.6875C2.25 4.275 2.397 3.922 2.691 3.6285C2.985 3.335 3.338 3.188 3.75 3.1875H4.5V1.6875H6V3.1875H12V1.6875H13.5V3.1875H14.25C14.6625 3.1875 15.0158 3.3345 15.3098 3.6285C15.6038 3.9225 15.7505 4.2755 15.75 4.6875V15.1875C15.75 15.6 15.6033 15.9532 15.3098 16.2472C15.0163 16.5413 14.663 16.688 14.25 16.6875H3.75ZM3.75 15.1875H14.25V7.6875H3.75V15.1875Z\"\n fill=\"#667085\" />\n </svg><span class=\"text-name\">Date:</span> <span class=\"name-val\">{{ c.date }}</span></span>\n <span class=\"meta-sep\"></span>\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_1849_13302)\">\n <path\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1849_13302\">\n <rect width=\"18\" height=\"18\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg><span class=\"text-name\">Timestamp:</span> <span class=\"name-val\">{{ c.time | date:'hh:mm a' }}</span></span>\n <span class=\"meta-sep\"></span>\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\n fill=\"none\">\n <path\n d=\"M6.875 2.15267C6.875 1.96481 6.94963 1.78464 7.08247 1.6518C7.21531 1.51896 7.39547 1.44434 7.58333 1.44434H10.4167C10.6045 1.44434 10.7847 1.51896 10.9175 1.6518C11.0504 1.78464 11.125 1.96481 11.125 2.15267C11.125 2.34053 11.0504 2.5207 10.9175 2.65354C10.7847 2.78637 10.6045 2.861 10.4167 2.861H9.70833V3.80545L9.70739 3.84417C10.9047 3.97536 12.0396 4.44553 12.9789 5.19945L12.9856 5.19378L13.6939 4.48545C13.7805 4.39221 13.8906 4.32404 14.0127 4.28814C14.1347 4.25224 14.2642 4.24993 14.3875 4.28144C14.5108 4.31296 14.6233 4.37715 14.7131 4.46724C14.803 4.55732 14.8669 4.66998 14.8981 4.79333C14.9295 4.91647 14.9273 5.04581 14.8915 5.16777C14.8558 5.28974 14.7879 5.39985 14.695 5.48656L13.9867 6.19489L13.981 6.2015C14.7302 7.13944 15.1994 8.26985 15.3345 9.46266C15.4696 10.6555 15.2652 11.8622 14.7448 12.9439C14.2244 14.0257 13.4091 14.9385 12.3928 15.5774C11.3765 16.2163 10.2004 16.5552 9 16.5552C7.79957 16.5552 6.62353 16.2163 5.60722 15.5774C4.59091 14.9385 3.77564 14.0257 3.25522 12.9439C2.73481 11.8622 2.5304 10.6555 2.66552 9.46266C2.80064 8.26985 3.2698 7.13944 4.019 6.2015L4.01334 6.19489L3.305 5.48656C3.17973 5.35231 3.11148 5.17466 3.11466 4.99107C3.11783 4.80747 3.19217 4.63229 3.322 4.50245C3.45185 4.37261 3.62703 4.29827 3.81062 4.2951C3.99422 4.29193 4.17187 4.36017 4.30611 4.48545L5.01445 5.19378L5.02106 5.19945C5.9601 4.4457 7.09472 3.97554 8.29167 3.84417V2.861H7.58333C7.39547 2.861 7.21531 2.78637 7.08247 2.65354C6.94963 2.5207 6.875 2.34053 6.875 2.15267ZM9 15.1388C10.3152 15.1386 11.5764 14.6161 12.5063 13.686C13.4361 12.756 13.9585 11.4947 13.9583 10.1795C13.9582 8.86434 13.4356 7.6031 12.5056 6.67323C11.5756 5.74337 10.3142 5.22104 8.99906 5.22117C7.6839 5.22129 6.42266 5.74386 5.49279 6.6739C4.56292 7.60395 4.0406 8.86529 4.04072 10.1804C4.04085 11.4956 4.56341 12.7568 5.49346 13.6867C6.4235 14.6166 7.68484 15.1389 9 15.1388ZM9.36739 8.811L10.6235 7.55489C10.6888 7.4872 10.7669 7.43321 10.8533 7.39604C10.9397 7.35888 11.0327 7.3393 11.1267 7.33843C11.2208 7.33757 11.3141 7.35545 11.4011 7.39103C11.4882 7.4266 11.5673 7.47916 11.6339 7.54563C11.7004 7.61211 11.753 7.69117 11.7887 7.77821C11.8243 7.86524 11.8423 7.9585 11.8415 8.05256C11.8408 8.14661 11.8213 8.23957 11.7842 8.326C11.7471 8.41244 11.6932 8.49062 11.6256 8.556L10.3694 9.81305C10.4252 10.023 10.4321 10.243 10.3895 10.4561C10.3468 10.6692 10.2559 10.8696 10.1236 11.0419C9.99127 11.2143 9.82117 11.354 9.62637 11.4502C9.43157 11.5465 9.21728 11.5967 9 11.5971C8.79949 11.5954 8.60163 11.5511 8.41953 11.4671C8.23743 11.3832 8.07524 11.2615 7.94369 11.1102C7.81215 10.9588 7.71426 10.7813 7.65649 10.5893C7.59873 10.3973 7.58241 10.1952 7.60863 9.99636C7.63484 9.79756 7.70299 9.6066 7.80855 9.43612C7.91412 9.26564 8.05469 9.11953 8.22097 9.00746C8.38725 8.89539 8.57543 8.81993 8.77307 8.78606C8.97071 8.75219 9.17328 8.76069 9.36739 8.811Z\"\n fill=\"#667085\" />\n </svg><span class=\"text-name\"> Duration:</span> <span class=\"name-val\">{{ formatDuration(c.duration) }}</span></span>\n <span class=\"meta-sep\"></span>\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path d=\"M9 1.5C6.23858 1.5 4 3.73858 4 6.5C4 10.25 9 16.5 9 16.5C9 16.5 14 10.25 14 6.5C14 3.73858 11.7614 1.5 9 1.5ZM9 8.75C7.75736 8.75 6.75 7.74264 6.75 6.5C6.75 5.25736 7.75736 4.25 9 4.25C10.2426 4.25 11.25 5.25736 11.25 6.5C11.25 7.74264 10.2426 8.75 9 8.75Z\" fill=\"#667085\"/>\n</svg><span class=\"text-name\"> Location:</span> <span class=\"name-val location-truncate\" [title]=\"c.location\">{{ c.location }}</span></span>\n\n </div>\n <div class=\"conv-excerpt my-2\">{{ c.audioDescription }}</div>\n <a *ngIf=\"c.eyeTestLink\" class=\"eye-test-link\" href=\"#\" (click)=\"$event.stopPropagation()\">\n View Eye Test <span>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M15 10.8333V15.8333C15 16.2754 14.8244 16.6993 14.5118 17.0118C14.1993 17.3244 13.7754 17.5 13.3333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V6.66667C2.5 6.22464 2.67559 5.80072 2.98816 5.48816C3.30072 5.17559 3.72464 5 4.16667 5H9.16667M12.5 2.5H17.5M17.5 2.5V7.5M17.5 2.5L8.33333 11.6667\"\n stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </a>\n </div>\n <div class=\"conv-toggle-btn text-nowrap\" (click)=\"$event.stopPropagation(); toggleConversation(c.audioId)\">\n <span>{{ openId === c.audioId ? 'View Less' : 'View More' }}</span>\n\n <!-- down arrow when closed -->\n <svg *ngIf=\"openId !== c.audioId\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\n viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M5.83203 10.8333L9.9987 15L14.1654 10.8333M5.83203 5L9.9987 9.16667L14.1654 5\" stroke=\"#667085\"\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n\n <!-- up arrow when open -->\n <svg *ngIf=\"openId === c.audioId\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\n viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M5.83203 10.8333L9.9987 15L14.1654 10.8333M5.83203 5L9.9987 9.16667L14.1654 5\" stroke=\"#667085\"\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" transform=\"rotate(180 10 10)\" />\n </svg>\n </div>\n </div>\n\n <!-- Expanded Body -->\n <div class=\"conv-body\" *ngIf=\"openId === c.audioId\">\n\n <!-- Detail Loading shimmer -->\n <ng-container *ngIf=\"c._detailLoading\">\n <div class=\"row loader d-flex justify-content-center align-items-center px-4 py-3\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- No data / error after load -->\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column my-6\"\n *ngIf=\"!c._detailLoading && (c._detailError || (c._detailLoaded && !c.conversationDetails?.audioSummary && c.metrics?.length === 0))\">\n <img class=\"img-map\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\n <div class=\"nodata-title\">No data found</div>\n <div class=\"nodata-sub\">No details available for this conversation</div>\n </div>\n\n <div class=\"conv-body-inner\" *ngIf=\"!c._detailLoading && !c._detailError\">\n\n <!-- Left: Recording + Summary + Insights -->\n <div class=\"conv-left\">\n\n <div class=\"recording-box mb-2\" [class.is-playing-box]=\"playingConvId === c.audioId\" *ngIf=\"c.audioUrl\">\n <div class=\"recording-title\">Conversation Recording</div>\n\n <!-- Waveform: per-conversation playing state -->\n <div class=\"waveform-bars\" [class.is-playing]=\"playingConvId === c.audioId\">\n <div class=\"wf-bar\" *ngFor=\"let h of waveformHeights; let i = index\" [style.height.px]=\"h\"\n [class.wf-bar--played]=\"(playbackStates[c.audioId]?.progress || 0) > i / waveformHeights.length\">\n </div>\n </div>\n\n <!-- Player controls -->\n <div class=\"player-row\">\n\n <!-- Play / Pause button with white outer ring -->\n <div class=\"play-btn-wrap\">\n <button class=\"play-btn-circle\" (click)=\"togglePlay(c.audioId)\">\n <!-- Play icon -->\n <svg *ngIf=\"playingConvId !== c.audioId\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"white\">\n <path d=\"M8 5v14l11-7z\" />\n </svg>\n <!-- Pause icon -->\n <svg *ngIf=\"playingConvId === c.audioId\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"white\">\n <path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\" />\n </svg>\n </button>\n </div>\n\n <!-- Progress bar + times -->\n <div class=\"player-progress w-100\">\n <div class=\"d-flex justify-content-between\">\n <span class=\"player-time start-time\">{{ playbackStates[c.audioId]?.currentTime || '0:00' }}</span>\n <span class=\"player-time end-time\">{{ playbackStates[c.audioId]?.totalTime || c.duration }}</span>\n </div>\n\n <div class=\"progress-track\" (click)=\"seekAudio($event, c.audioId)\" style=\"cursor: pointer;\">\n <div class=\"progress-fill\" [style.width.%]=\"(playbackStates[c.audioId]?.progress || 0) * 100\">\n </div>\n </div>\n\n </div>\n <audio [id]=\"'audio-' + c.audioId\" [src]=\"c.audioUrl\"\n preload=\"metadata\"\n (timeupdate)=\"onTimeUpdate(audioPlayer, c.audioId)\"\n (loadedmetadata)=\"onLoadedMetadata(audioPlayer, c.audioId, c.duration)\"\n (ended)=\"playingConvId = null\" #audioPlayer>\n </audio>\n <!-- <audio #audioPlayer (timeupdate)=\"onTimeUpdate(audioPlayer)\"\n (loadedmetadata)=\"onLoadedMetadata(audioPlayer)\">\n </audio> -->\n\n <!-- Mute / Unmute button -->\n <button class=\"mute-btn\" (click)=\"toggleMute()\" [title]=\"isMuted ? 'Unmute' : 'Mute'\">\n <!-- Volume on -->\n <svg *ngIf=\"!isMuted\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path\n d=\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\" />\n </svg>\n <!-- Volume muted -->\n <svg *ngIf=\"isMuted\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path\n d=\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z\" />\n </svg>\n </button>\n\n </div>\n </div>\n\n <!-- Tabs -->\n <div class=\"border-layer mb-2\">\n\n <div class=\"conv-tabs\">\n <button class=\"conv-tab\" [class.active]=\"activeTab[c.audioId] !== 'transcript'\"\n (click)=\"$event.stopPropagation(); setTab(c.audioId, 'summary')\">Summary</button>\n <button class=\"conv-tab\" [class.active]=\"activeTab[c.audioId] === 'transcript'\"\n (click)=\"$event.stopPropagation(); setTab(c.audioId, 'transcript')\">Transcript</button>\n </div>\n\n <div class=\"conv-body-text mt-2\">\n <p *ngIf=\"activeTab[c.audioId] !== 'transcript'\">\n {{ c.conversationDetails.audioSummary }}\n </p>\n <p *ngIf=\"activeTab[c.audioId] === 'transcript'\">\n {{ c.conversationDetails.transcription }}\n </p>\n </div>\n </div>\n\n <!-- AI Insights -->\n <div class=\"ai-insights-box\">\n <div class=\"ai-insights-header\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"36\" height=\"37\" viewBox=\"0 0 36 37\" fill=\"none\">\n <mask id=\"path-1-inside-1_1849_13384\" fill=\"white\">\n <path\n d=\"M29.5151 29.3227L28.6156 28.4232L18.9244 18.732L21.7993 15.8571L22.4882 15.167C22.5539 15.1003 22.5909 15.0106 22.5914 14.917C22.5912 14.8707 22.5818 14.8249 22.5639 14.7822C22.5459 14.7396 22.5197 14.7009 22.4868 14.6683L21.7966 13.9781L18.7478 10.9239L18.0576 10.2337C18.025 10.2005 17.9861 10.1742 17.9432 10.1562C17.9002 10.1382 17.8542 10.1289 17.8076 10.1289C17.7611 10.1289 17.715 10.1382 17.6721 10.1562C17.6292 10.1742 17.5903 10.2005 17.5576 10.2337L16.8674 10.9253L13.1312 14.6615C13.098 14.694 13.0717 14.7328 13.0537 14.7756C13.0357 14.8185 13.0265 14.8644 13.0265 14.9108C13.0265 14.9573 13.0357 15.0032 13.0537 15.0461C13.0717 15.0889 13.098 15.1277 13.1312 15.1602L16.7003 18.7307L7.00777 28.4232L6.11243 29.3227C6.04604 29.3884 6.00842 29.4778 6.00781 29.5713C6.0082 29.6616 6.04265 29.7485 6.10428 29.8145C6.13718 29.8496 6.17695 29.8777 6.22111 29.8968C6.26528 29.916 6.31291 29.9259 6.36106 29.9259H15.0795C15.173 29.9255 15.2627 29.8882 15.3289 29.822C15.395 29.7559 15.4324 29.6662 15.4327 29.5726V28.7058C15.4327 28.612 15.3955 28.522 15.3293 28.4556C15.2631 28.3891 15.1733 28.3516 15.0795 28.3512H9.30524L17.8117 19.8448L26.3182 28.3512H20.4937C20.3999 28.3516 20.31 28.3891 20.2438 28.4556C20.1776 28.522 20.1404 28.612 20.1404 28.7058V29.5726C20.1402 29.6192 20.1494 29.6653 20.1674 29.7083C20.1853 29.7512 20.2118 29.7901 20.245 29.8226C20.311 29.8885 20.4004 29.9256 20.4937 29.9259H29.2651C29.3134 29.9261 29.3613 29.9163 29.4057 29.8971C29.4502 29.8779 29.4901 29.8498 29.5232 29.8145C29.5867 29.7478 29.6214 29.6589 29.6199 29.5669C29.6184 29.4749 29.5807 29.3872 29.5151 29.3227ZM17.8063 12.2105L20.514 14.9183L17.8131 17.6193L15.1053 14.9115L17.8063 12.2105Z\" />\n </mask>\n <path\n d=\"M29.5151 29.3227L-18.1139 76.9516L-17.9024 77.1631L-17.6891 77.3727L29.5151 29.3227ZM28.6156 28.4232L76.2446 -19.2057V-19.2057L28.6156 28.4232ZM18.9244 18.732L-28.7045 -28.8969L-76.3335 18.732L-28.7046 66.361L18.9244 18.732ZM21.7993 15.8571L69.4283 63.4861L69.4518 63.4626L69.4753 63.4391L21.7993 15.8571ZM22.4882 15.167L70.1641 62.7489L70.3095 62.6032L70.454 62.4566L22.4882 15.167ZM22.5914 14.917L89.9481 15.2605L89.9498 14.9226L89.9481 14.5848L22.5914 14.917ZM22.4868 14.6683L-25.1422 62.2973L-24.9939 62.4456L-24.8447 62.5929L22.4868 14.6683ZM21.7966 13.9781L-25.8748 61.5647L-25.8536 61.5859L-25.8324 61.6071L21.7966 13.9781ZM18.7478 10.9239L66.4192 -36.6626L66.398 -36.6839L66.3768 -36.7051L18.7478 10.9239ZM18.0576 10.2337L-29.9803 57.4502L-29.7767 57.6574L-29.5713 57.8627L18.0576 10.2337ZM17.5576 10.2337L65.2334 57.8159L65.4152 57.6337L65.5956 57.4502L17.5576 10.2337ZM16.8674 10.9253L64.4964 58.5542L64.5198 58.5308L64.5432 58.5074L16.8674 10.9253ZM13.1312 14.6615L60.2907 62.7554L60.5266 62.5241L60.7602 62.2905L13.1312 14.6615ZM13.0265 14.9108H80.384H13.0265ZM13.1312 15.1602L60.7692 -32.4597L60.5312 -32.6979L60.2907 -32.9337L13.1312 15.1602ZM16.7003 18.7307L64.3293 66.3596L111.949 18.7397L64.3384 -28.8892L16.7003 18.7307ZM7.00777 28.4232L-40.6212 -19.2057L-40.6753 -19.1517L-40.7292 -19.0975L7.00777 28.4232ZM6.11243 29.3227L53.5203 77.1717L53.6855 77.0081L53.8494 76.8434L6.11243 29.3227ZM6.00781 29.5713L-61.3483 29.1316L-61.3507 29.496L-61.3491 29.8604L6.00781 29.5713ZM6.10428 29.8145L-43.1376 75.774L-43.1037 75.8103L-43.0699 75.8465L6.10428 29.8145ZM6.36106 29.9259L6.33973 97.2834L6.3504 97.2834H6.36106V29.9259ZM15.0795 29.9259V97.2834H15.2083L15.3371 97.283L15.0795 29.9259ZM15.4327 29.5726L82.7898 29.8302L82.7903 29.7014V29.5726H15.4327ZM15.4327 28.7058L-51.9248 28.7053V28.7058H15.4327ZM15.0795 28.3512L15.3375 -39.0058L15.2085 -39.0063H15.0795V28.3512ZM9.30524 28.3512L-38.3237 -19.2778L-153.31 95.7088H9.30524V28.3512ZM17.8117 19.8448L65.4407 -27.7842L17.8117 -75.4132L-29.8173 -27.7842L17.8117 19.8448ZM26.3182 28.3512V95.7088H188.934L73.9472 -19.2778L26.3182 28.3512ZM20.4937 28.3512V-39.0063H20.3646L20.2356 -39.0058L20.4937 28.3512ZM20.1404 28.7058H87.498V28.7053L20.1404 28.7058ZM20.1404 29.5726L87.4975 29.831L87.498 29.7018V29.5726H20.1404ZM20.245 29.8226L67.8348 -17.8455L67.5897 -18.0902L67.3422 -18.3323L20.245 29.8226ZM20.4937 29.9259L20.3133 97.2832L20.4035 97.2834H20.4937V29.9259ZM29.2651 29.9259L29.5034 -37.4312L29.3842 -37.4317H29.2651V29.9259ZM29.5232 29.8145L-19.2474 -16.6449L-19.4503 -16.4319L-19.6513 -16.2171L29.5232 29.8145ZM17.8063 12.2105L65.4353 -35.4184L17.8063 -83.0474L-29.8227 -35.4184L17.8063 12.2105ZM20.514 14.9183L68.143 62.5473L115.772 14.9183L68.143 -32.7107L20.514 14.9183ZM17.8131 17.6193L-29.8159 65.2483L17.813 112.877L65.442 65.2483L17.8131 17.6193ZM15.1053 14.9115L-32.5237 -32.7174L-80.1527 14.9115L-32.5237 62.5405L15.1053 14.9115ZM29.5151 29.3227L77.144 -18.3063L76.2446 -19.2057L28.6156 28.4232L-19.0133 76.0522L-18.1139 76.9516L29.5151 29.3227ZM28.6156 28.4232L76.2446 -19.2057L66.5534 -28.8969L18.9244 18.732L-28.7046 66.361L-19.0133 76.0522L28.6156 28.4232ZM18.9244 18.732L66.5534 66.361L69.4283 63.4861L21.7993 15.8571L-25.8297 -31.7718L-28.7045 -28.8969L18.9244 18.732ZM21.7993 15.8571L69.4753 63.4391L70.1641 62.7489L22.4882 15.167L-25.1878 -32.415L-25.8766 -31.7248L21.7993 15.8571ZM22.4882 15.167L70.454 62.4566C82.8622 49.8711 89.8579 32.9334 89.9481 15.2605L22.5914 14.917L-44.7653 14.5734C-44.6761 -2.91221 -37.7544 -19.6705 -25.4777 -32.1227L22.4882 15.167ZM22.5914 14.917L89.9481 14.5848C89.9042 5.67953 88.104 -3.13075 84.6494 -11.3412L22.5639 14.7822L-39.5216 40.9056C-42.9404 32.7805 -44.7219 24.0618 -44.7653 15.2492L22.5914 14.917ZM22.5639 14.7822L84.6494 -11.3412C81.1952 -19.5504 76.1554 -26.9976 69.8183 -33.2563L22.4868 14.6683L-24.8447 62.5929C-31.1159 56.3994 -36.1034 49.0295 -39.5216 40.9056L22.5639 14.7822ZM22.4868 14.6683L70.1158 -32.9606L69.4256 -33.6508L21.7966 13.9781L-25.8324 61.6071L-25.1422 62.2973L22.4868 14.6683ZM21.7966 13.9781L69.468 -33.6084L66.4192 -36.6626L18.7478 10.9239L-28.9236 58.5105L-25.8748 61.5647L21.7966 13.9781ZM18.7478 10.9239L66.3768 -36.7051L65.6866 -37.3953L18.0576 10.2337L-29.5713 57.8627L-28.8811 58.5529L18.7478 10.9239ZM18.0576 10.2337L66.0956 -36.9828C59.7945 -43.3934 52.2793 -48.486 43.9879 -51.9624L17.9432 10.1562L-8.10155 72.2747C-16.3072 68.8343 -23.7445 63.7945 -29.9803 57.4502L18.0576 10.2337ZM17.9432 10.1562L43.9879 -51.9624C35.697 -55.4385 26.7972 -57.2286 17.8076 -57.2286V10.1289V77.4865C8.91115 77.4865 0.103456 75.7149 -8.10155 72.2747L17.9432 10.1562ZM17.8076 10.1289V-57.2286C8.81786 -57.2286 -0.0819659 -55.4384 -8.37262 -51.9624L17.6721 10.1562L43.7168 72.2747C35.512 75.7148 26.7043 77.4865 17.8076 77.4865V10.1289ZM17.6721 10.1562L-8.37262 -51.9624C-16.6635 -48.4862 -24.1788 -43.3938 -30.4803 -36.9828L17.5576 10.2337L65.5956 57.4502C59.3594 63.7949 51.9219 68.8345 43.7168 72.2747L17.6721 10.1562ZM17.5576 10.2337L-30.1181 -37.3484L-30.8083 -36.6569L16.8674 10.9253L64.5432 58.5074L65.2334 57.8159L17.5576 10.2337ZM16.8674 10.9253L-30.7615 -36.7037L-34.4978 -32.9674L13.1312 14.6615L60.7602 62.2905L64.4964 58.5542L16.8674 10.9253ZM13.1312 14.6615L-34.0284 -33.4323C-40.4566 -27.129 -45.5632 -19.6068 -49.0494 -11.3058L13.0537 14.7756L75.1568 40.8571C71.7066 49.0725 66.6526 56.5171 60.2907 62.7554L13.1312 14.6615ZM13.0537 14.7756L-49.0494 -11.3058C-52.5351 -3.00584 -54.3311 5.90682 -54.3311 14.9108H13.0265H80.384C80.384 23.822 78.6066 32.6427 75.1568 40.8571L13.0537 14.7756ZM13.0265 14.9108H-54.3311C-54.3311 23.9148 -52.5352 32.8274 -49.0494 41.1275L13.0537 15.0461L75.1568 -11.0354C78.6067 -2.82096 80.384 5.99978 80.384 14.9108H13.0265ZM13.0537 15.0461L-49.0494 41.1275C-45.5631 49.4288 -40.4564 56.9509 -34.0284 63.254L13.1312 15.1602L60.2907 -32.9337C66.6524 -26.6956 71.7065 -19.2511 75.1568 -11.0354L13.0537 15.0461ZM13.1312 15.1602L-34.5069 62.7801L-30.9377 66.3506L16.7003 18.7307L64.3384 -28.8892L60.7692 -32.4597L13.1312 15.1602ZM16.7003 18.7307L-30.9287 -28.8983L-40.6212 -19.2057L7.00777 28.4232L54.6368 76.0522L64.3293 66.3596L16.7003 18.7307ZM7.00777 28.4232L-40.7292 -19.0975L-41.6246 -18.1981L6.11243 29.3227L53.8494 76.8434L54.7448 75.944L7.00777 28.4232ZM6.11243 29.3227L-41.2955 -18.5264C-54.0208 -5.91838 -61.2314 11.2185 -61.3483 29.1316L6.00781 29.5713L73.3639 30.011C73.2482 47.7372 66.1129 64.6952 53.5203 77.1717L6.11243 29.3227ZM6.00781 29.5713L-61.3491 29.8604C-61.2759 46.9123 -54.7721 63.3086 -43.1376 75.774L6.10428 29.8145L55.3461 -16.1451C66.8574 -3.81166 73.2923 12.4109 73.3647 29.2822L6.00781 29.5713ZM6.10428 29.8145L-43.0699 75.8465C-36.7393 82.6091 -29.0879 88.0015 -20.5883 91.6892L6.22111 29.8968L33.0305 -31.8955C41.4417 -28.2462 49.0137 -22.9099 55.2784 -16.2175L6.10428 29.8145ZM6.22111 29.8968L-20.5883 91.6892C-12.0905 95.3761 -2.92551 97.2805 6.33973 97.2834L6.36106 29.9259L6.38239 -37.4317C15.5513 -37.4287 24.621 -35.5441 33.0305 -31.8955L6.22111 29.8968ZM6.36106 29.9259V97.2834H15.0795V29.9259V-37.4317H6.36106V29.9259ZM15.0795 29.9259L15.3371 97.283C33.2059 97.2146 50.323 90.0859 62.9578 77.451L15.3289 29.822L-32.3001 -17.8069C-19.7976 -30.3095 -2.85977 -37.3635 14.8219 -37.4312L15.0795 29.9259ZM15.3289 29.822L62.9578 77.451C75.5938 64.815 82.7215 47.6975 82.7898 29.8302L15.4327 29.5726L-51.9243 29.3151C-51.8567 11.635 -44.8037 -5.30332 -32.3001 -17.8069L15.3289 29.822ZM15.4327 29.5726H82.7903V28.7058H15.4327H-51.9248V29.5726H15.4327ZM15.4327 28.7058L82.7903 28.7063C82.7904 10.7927 75.692 -6.39093 63.0497 -19.0819L15.3293 28.4556L-32.391 75.993C-44.9009 63.435 -51.925 46.4314 -51.9248 28.7053L15.4327 28.7058ZM15.3293 28.4556L63.0497 -19.0819C50.408 -31.7721 33.2521 -38.9372 15.3375 -39.0058L15.0795 28.3512L14.8214 95.7083C-2.90555 95.6404 -19.8818 88.5503 -32.391 75.993L15.3293 28.4556ZM15.0795 28.3512V-39.0063H9.30524V28.3512V95.7088H15.0795V28.3512ZM9.30524 28.3512L56.9342 75.9802L65.4407 67.4737L17.8117 19.8448L-29.8173 -27.7842L-38.3237 -19.2778L9.30524 28.3512ZM17.8117 19.8448L-29.8173 67.4737L-21.3108 75.9802L26.3182 28.3512L73.9472 -19.2778L65.4407 -27.7842L17.8117 19.8448ZM26.3182 28.3512V-39.0063H20.4937V28.3512V95.7088H26.3182V28.3512ZM20.4937 28.3512L20.2356 -39.0058C2.32124 -38.9372 -14.8348 -31.7723 -27.4765 -19.0819L20.2438 28.4556L67.9641 75.993C55.4548 88.5505 38.4785 95.6404 20.7517 95.7083L20.4937 28.3512ZM20.2438 28.4556L-27.4765 -19.0819C-40.1185 -6.39129 -47.2173 10.7922 -47.2171 28.7063L20.1404 28.7058L87.498 28.7053C87.4981 46.4319 80.4737 63.4354 67.9641 75.993L20.2438 28.4556ZM20.1404 28.7058H-47.2171V29.5726H20.1404H87.498V28.7058H20.1404ZM20.1404 29.5726L-47.2166 29.3143C-47.2514 38.3759 -45.4668 47.352 -41.9688 55.7109L20.1674 29.7083L82.3035 3.70562C85.7656 11.9786 87.5319 20.8625 87.4975 29.831L20.1404 29.5726ZM20.1674 29.7083L-41.9688 55.7109C-38.4705 64.0703 -33.33 71.642 -26.8521 77.9776L20.245 29.8226L67.3422 -18.3323C73.7535 -12.0618 78.8412 -4.56794 82.3035 3.70562L20.1674 29.7083ZM20.245 29.8226L-27.3447 77.4908C-14.6945 90.1202 2.43691 97.2353 20.3133 97.2832L20.4937 29.9259L20.6741 -37.4314C38.3639 -37.384 55.3166 -30.3431 67.8348 -17.8455L20.245 29.8226ZM20.4937 29.9259V97.2834H29.2651V29.9259V-37.4317H20.4937V29.9259ZM29.2651 29.9259L29.0267 97.283C38.3372 97.316 47.552 95.4284 56.0962 91.7409L29.4057 29.8971L2.71525 -31.9467C11.1706 -35.5959 20.2897 -37.4638 29.5034 -37.4312L29.2651 29.9259ZM29.4057 29.8971L56.0962 91.7409C64.643 88.0523 72.3369 82.6412 78.6977 75.8461L29.5232 29.8145L-19.6513 -16.2171C-13.3566 -22.9416 -5.74266 -28.2965 2.71525 -31.9467L29.4057 29.8971ZM29.5232 29.8145L78.2938 76.2738C90.5543 63.4034 97.2628 46.2265 96.9682 28.4506L29.6199 29.5669L-37.7284 30.6832C-38.02 13.0914 -31.3809 -3.9077 -19.2474 -16.6449L29.5232 29.8145ZM29.6199 29.5669L96.9682 28.4506C96.6736 10.6753 89.3999 -6.26998 76.7192 -18.7274L29.5151 29.3227L-17.6891 77.3727C-30.2385 65.0443 -37.4368 48.2744 -37.7284 30.6832L29.6199 29.5669ZM17.8063 12.2105L-29.8227 59.8395L-27.1149 62.5473L20.514 14.9183L68.143 -32.7107L65.4353 -35.4184L17.8063 12.2105ZM20.514 14.9183L-27.1149 -32.7107L-29.8159 -30.0097L17.8131 17.6193L65.442 65.2483L68.143 62.5473L20.514 14.9183ZM17.8131 17.6193L65.4421 -30.0097L62.7343 -32.7174L15.1053 14.9115L-32.5237 62.5405L-29.8159 65.2483L17.8131 17.6193ZM15.1053 14.9115L62.7343 62.5405L65.4353 59.8395L17.8063 12.2105L-29.8227 -35.4184L-32.5237 -32.7174L15.1053 14.9115Z\"\n fill=\"#00A3FF\" mask=\"url(#path-1-inside-1_1849_13384)\" />\n <path\n d=\"M26.2537 0.740234L26.6974 2.58437C26.9235 3.52457 27.4255 4.3977 28.1545 5.11862C28.8836 5.83954 29.8147 6.38366 30.8571 6.69791L31.8394 6.99391L30.8571 7.28992C29.8147 7.60417 28.8836 8.14828 28.1545 8.86921C27.4255 9.59013 26.9235 10.4633 26.6974 11.4035L26.2537 13.2476L25.81 11.4035C25.5839 10.4633 25.0819 9.59013 24.3528 8.86921C23.6238 8.14828 22.6927 7.60417 21.6503 7.28992L20.668 6.99391L21.6503 6.69791C22.6927 6.38366 23.6238 5.83954 24.3528 5.11862C25.0819 4.3977 25.5839 3.52457 25.81 2.58437L26.2537 0.740234Z\"\n fill=\"url(#paint0_linear_1849_13384)\" />\n <path\n d=\"M9.9244 9.51351L9.77279 8.86035L9.62117 9.51351C9.51252 9.98254 9.26666 10.4192 8.90739 10.7812C8.54812 11.1433 8.0876 11.4184 7.57042 11.58L7.37891 11.6398L7.57042 11.6995C8.0876 11.8611 8.54812 12.1363 8.90739 12.4983C9.26666 12.8603 9.51252 13.297 9.62117 13.766L9.77279 14.4192L9.9244 13.766C10.033 13.297 10.2789 12.8603 10.6382 12.4983C10.9975 12.1363 11.458 11.8611 11.9752 11.6995L12.1667 11.6398L11.9752 11.58C11.458 11.4184 10.9975 11.1433 10.6382 10.7812C10.2789 10.4192 10.033 9.98254 9.9244 9.51351Z\"\n fill=\"url(#paint1_linear_1849_13384)\" />\n <path opacity=\"0.6\"\n d=\"M7.68961 21.5624L7.50608 20.6758L7.32334 21.5631C7.27549 21.7943 7.16109 22.0112 6.99084 22.1935C6.82059 22.3758 6.60005 22.5175 6.34983 22.6054L5.91016 22.7603L6.34983 22.9153C6.6 23.0034 6.82045 23.1452 6.99056 23.3276C7.16067 23.51 7.27489 23.727 7.32255 23.9583L7.50608 24.8449L7.68881 23.9576C7.73667 23.7263 7.85107 23.5095 8.02131 23.3272C8.19156 23.1449 8.4121 23.0032 8.66232 22.9153L9.102 22.7603L8.66232 22.6054C8.41215 22.5173 8.19171 22.3755 8.0216 22.1931C7.85149 22.0107 7.73726 21.7937 7.68961 21.5624Z\"\n fill=\"url(#paint2_linear_1849_13384)\" />\n <defs>\n <linearGradient id=\"paint0_linear_1849_13384\" x1=\"23.46\" y1=\"13.9422\" x2=\"23.46\" y2=\"0.0451625\"\n gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#117FF5\" stop-opacity=\"0.2\" />\n <stop offset=\"1\" stop-color=\"#0591FF\" />\n </linearGradient>\n <linearGradient id=\"paint1_linear_1849_13384\" x1=\"15.7575\" y1=\"22.7574\" x2=\"15.7575\" y2=\"8.86035\"\n gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"white\" />\n <stop offset=\"1\" stop-color=\"#0591FF\" />\n </linearGradient>\n <linearGradient id=\"paint2_linear_1849_13384\" x1=\"5.91016\" y1=\"20.6758\" x2=\"9.102\" y2=\"20.6758\"\n gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#00A3FF\" />\n <stop offset=\"1\" stop-color=\"#33B5FF\" />\n </linearGradient>\n </defs>\n </svg>\n <span class=\"ai-insights-title text-dark\">{{ c.aiInsights.title }}</span>\n </div>\n <ul class=\"ai-insights-list bg-white my-4 p-4 rounded-lg\">\n <li *ngFor=\"let insight of c.aiInsights.summary\">\n <span class=\"insight-bullet-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#33B5FF\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n {{ insight }}\n </li>\n </ul>\n </div>\n\n </div>\n\n <!-- Right: Metrics -->\n <div class=\"conv-right\">\n <div class=\"metrics-panel\">\n <div class=\"metrics-title\">Metrics</div>\n\n <ng-container *ngFor=\"let m of c.metrics; let mi = index\">\n\n <!-- BOOLEAN_BASKET -->\n <ng-container *ngIf=\"m.type === 'BOOLEAN_BASKET'\">\n <div class=\"metric-section-label mb-1\">{{ m.name }}</div>\n <div class=\"metric-row-item\" *ngFor=\"let row of m.value\">\n <span class=\"metric-key\"><span class=\"dot\"></span>{{ row.name }}</span>\n <strong class=\"metric-val\">{{ row.score }}</strong>\n </div>\n <div class=\"metric-divider\"></div>\n </ng-container>\n\n <!-- NUMERIC_SCALAR -->\n <ng-container *ngIf=\"m.type === 'NUMERIC_SCALAR' || m.type === 'NUMERIC_ARRAY'\">\n <div class=\"metric-section-label mb-1\">{{ m.name }}</div>\n <div class=\"metric-row-item\" *ngFor=\"let row of m.value\">\n <span class=\"metric-key\">Total</span>\n <strong class=\"metric-val\">{{ row.Total }}</strong>\n </div>\n <div class=\"metric-row-item\" *ngFor=\"let row of m.value\">\n <span class=\"metric-key\">Avg</span>\n <strong class=\"metric-val\">{{ row.Avg }}</strong>\n </div>\n <div class=\"metric-divider\"></div>\n </ng-container>\n\n <!-- SUBJECTIVE -->\n <ng-container *ngIf=\"m.type === 'SUBJECTIVE'\">\n <div class=\"metric-section-label mb-1\">{{ m.name }}</div>\n <ul class=\"metric-bullet-list metric-bullet-list--text\">\n <li *ngFor=\"let row of m.value\">{{ row.reasoning }}</li>\n </ul>\n <div class=\"metric-divider\"></div>\n </ng-container>\n\n </ng-container>\n\n </div>\n </div>\n\n </div>\n </div>\n\n </div>\n </div>\n <lib-pagination *ngIf=\"totalItems > 0\" [itemsPerPage]=\"pageSize\" [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\"\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\n </div>\n</div>", styles: ["@charset \"UTF-8\";.audio-page{padding:24px;background-color:#f5f7fa}.audio-page .header-row-container{background:#fff;padding:14px 24px;border-radius:8px;border:1px solid #e8edf3}.audio-page .section-title{font-size:16px;font-weight:600;color:#1a2b4b}.audio-page .total-audio-label{font-size:14px;color:#555}.audio-page .total-audio-label strong{font-weight:700;color:#1a2b4b}.audio-page .cohort-dropdown{position:relative}.audio-page .cohort-dropdown .cohort-dropdown-trigger{display:flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid #D0D5DD;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;color:#344054;-webkit-user-select:none;user-select:none;transition:border-color .2s,background .2s;min-width:150px;justify-content:space-between}.audio-page .cohort-dropdown .cohort-dropdown-trigger svg{transition:transform .2s ease;flex-shrink:0}.audio-page .cohort-dropdown .cohort-dropdown-trigger svg.rotate{transform:rotate(180deg)}.audio-page .cohort-dropdown .cohort-dropdown-menu{position:absolute;top:calc(100% + 4px);left:0;z-index:999;min-width:180px;background:#fff;border:1px solid #D0D5DD;border-radius:8px;padding:6px;box-shadow:0 12px 16px -4px #10182814,0 4px 6px -2px #10182808}.audio-page .cohort-dropdown .cohort-dropdown-menu .cohort-option{padding:10px 12px;font-size:14px;color:#344054;border-radius:6px;cursor:pointer;transition:background .15s}.audio-page .cohort-dropdown .cohort-dropdown-menu .cohort-option:hover{background:#f9fafb}.audio-page .cohort-dropdown .cohort-dropdown-menu .cohort-option.selected{background:#eaf8ff;color:#00a3ff;font-weight:600}.audio-page .stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;overflow:hidden}.audio-page .stats-grid .cards-full-loader{grid-column:1/-1;min-height:120px;padding:24px}.audio-page .ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #eaecf0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.audio-page .stat-card{background:#fff;border-radius:12px;border:1px solid #EAECF0;box-shadow:0 1px 2px #1018280d;min-width:0;overflow:hidden}.audio-page .stat-card .stat-card-header{padding:16px 20px;border-bottom:1px solid #EAECF0;font-weight:600;font-size:17px;color:#101828}.audio-page .stat-card .stat-card-body{max-height:300px;overflow-y:auto;overflow-x:hidden}.audio-page .stat-card .stat-row{display:flex;align-items:center;padding:12px 0;border-bottom:1px solid #F2F4F7}.audio-page .stat-card .stat-row:last-child{border-bottom:none}.audio-page .stat-card .stat-row .stat-label{font-size:14px;font-weight:500;color:#344054;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-page .stat-card .stat-row .stat-values{display:flex;align-items:center;gap:8px;flex-shrink:0}.audio-page .stat-card .stat-row .stat-values .stat-number{font-size:14px;font-weight:700;color:#101828;min-width:24px;text-align:right}.audio-page .stat-card .stat-row .stat-values .stat-meta{font-size:12px;color:#1d2939;font-weight:400;margin-right:4px}.audio-page .stat-card .stat-row .stat-values .stat-score{font-size:14px;font-weight:700;color:#101828}.audio-page .stat-card .stat-row .stat-values .stat-score-label{font-size:12px;color:#1d2939;font-weight:400}.audio-page .stat-card .cohort-table{border-collapse:collapse;font-size:13px}.audio-page .stat-card .cohort-table thead tr{background:#f9fafb}.audio-page .stat-card .cohort-table th{padding:8px 10px;font-size:12px;font-weight:600;color:#667085;border-bottom:1px solid #EAECF0;white-space:nowrap}.audio-page .stat-card .cohort-table td{padding:8px 10px;color:#344054;border-bottom:1px solid #F2F4F7;vertical-align:middle;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-page .stat-card .cohort-table tbody tr:last-child td{border-bottom:none}.audio-page .stat-card .cohort-table tbody tr:hover{background:#f9fafb}.audio-page .stat-card .pitch-row,.audio-page .stat-card .subjective-row{display:flow;align-items:center;gap:0;padding:10px 0;border-bottom:1px solid #F2F4F7}.audio-page .stat-card .pitch-row:last-child,.audio-page .stat-card .subjective-row:last-child{border-bottom:none}.audio-page .stat-card .pitch-row .pitch-id,.audio-page .stat-card .subjective-row .pitch-id{font-weight:600;color:#101828;font-size:13px;flex:0 0 45%;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:8px}.audio-page .stat-card .pitch-row .pitch-desc,.audio-page .stat-card .subjective-row .pitch-desc{font-size:13px;color:#344054;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.audio-page .export-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 16px;border:1px solid #d0d7e2;border-radius:6px;background:#fff;font-size:14px;color:#344054;cursor:pointer}.audio-page .export-btn:hover{background:#f5f7fa}.audio-page .chat-section{text-align:center;padding:32px 0}.audio-page .chat-section .chat-title-group{margin-bottom:24px}.audio-page .chat-section .chat-title{font-size:32px;font-weight:700;color:#00a3ff;margin:0;display:flex;align-items:center;justify-content:center}.audio-page .chat-section .chat-title .tango-icon-wrap{display:flex;align-items:center;gap:8px}.audio-page .chat-section .chat-title .tango-icon-wrap svg{display:block}.audio-page .chat-section .chat-subtext{font-size:14px;color:#667085;font-weight:500;margin-top:4px}.audio-page .chat-section .btn-chat-history{background:#fff;border:1px solid #D0D5DD;border-radius:100px;padding:8px 16px;font-size:12px;font-weight:600;color:#344054;cursor:pointer;box-shadow:0 1px 2px #1018280d;transition:all .2s ease}.audio-page .chat-section .btn-chat-history:hover{background:#f9fafb;border-color:#98a2b3}.audio-page .chat-section .chat-input-wrapper{display:flex;align-items:center;background:#fff;border:1px solid #D0D5DD;border-radius:12px;padding:8px 12px;width:100%;max-width:600px;box-shadow:0 4px 10px #0000000d;position:relative}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap{position:relative;flex-shrink:0;margin-right:8px}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus{width:28px;height:28px;border-radius:50%;border:1.5px solid #D0D5DD;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#344054;font-size:16px;font-weight:600;line-height:1;transition:background .15s,border-color .15s}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus:hover,.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus.open{background:#f2f4f7;border-color:#009bf3;color:#009bf3}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup{position:absolute;bottom:calc(100% + 8px);left:0;background:#fff;border:1px solid #EAECF0;border-radius:12px;box-shadow:0 8px 24px #1018281f;padding:6px;min-width:210px;z-index:200;animation:popupFadeInAudio .15s ease-out}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-section-label{font-size:11px;font-weight:600;color:#98a2b3;text-transform:uppercase;letter-spacing:.5px;padding:6px 12px 4px}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;border-radius:8px;padding:9px 12px;font-size:13px;font-weight:500;color:#344054;cursor:pointer;text-align:left;transition:background .12s}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item .check-icon{margin-left:auto}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item.selected{background:#f0f9ff;color:#009bf3}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item:hover:not(.selected){background:#f9fafb;color:#101828}.audio-page .chat-section .chat-input-wrapper .model-version-tag{font-size:11px;font-weight:700;color:#009bf3;background:#eaf8ff;border:1px solid #B2E0FB;border-radius:6px;padding:2px 7px;white-space:nowrap;flex-shrink:0}.audio-page .chat-section .chat-input-wrapper .chat-input-field{flex:1;border:none;outline:none;font-size:14px;color:#101828;background:transparent}.audio-page .chat-section .chat-input-wrapper .chat-input-field::placeholder{color:#667085}.audio-page .chat-section .chat-input-wrapper .chat-input-actions{display:flex;align-items:center;gap:12px;color:#667085}.audio-page .chat-section .chat-input-wrapper .chat-input-actions .chat-icon-btn,.audio-page .chat-section .chat-input-wrapper .chat-input-actions .chat-send-btn{background:none;border:none;padding:4px;cursor:pointer;color:inherit;display:flex;align-items:center;justify-content:center;transition:color .2s ease}.audio-page .chat-section .chat-input-wrapper .chat-input-actions .chat-icon-btn:hover,.audio-page .chat-section .chat-input-wrapper .chat-input-actions .chat-send-btn:hover{color:#00a3ff}.audio-page input[type=text]:focus{box-shadow:none}.audio-page .ai-message-box{background:linear-gradient(135deg,#eaf8ff,#f0f9ff);border-radius:8px;padding:16px 20px}.audio-page .ai-message-box .ai-message-header{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:600;line-height:24px;color:#101828;margin-bottom:8px}.audio-page .ai-message-box .ai-message-header .ai-avatar-icon{font-size:20px;color:#3b7de5}.audio-page .ai-message-box .ai-message-body{font-weight:400;font-size:16px;line-height:24px;letter-spacing:0%;color:#344054;padding-left:28px}.audio-page .ai-message-box .ai-store-list{margin:8px 0 0;padding-left:20px}.audio-page .ai-message-box .ai-store-list li{margin-bottom:4px}.audio-page .conversations-count{font-size:15px;color:#1a2b4b;font-weight:600}.audio-page .active-filter-chip{display:inline-flex;align-items:center;gap:4px;background:#e8f0fe;border:1px solid #4a7fdd;border-radius:20px;padding:2px 10px 2px 12px;font-size:13px;font-weight:500;color:#1a2b4b}.audio-page .active-filter-chip .chip-label{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-page .active-filter-chip .chip-remove{background:none;border:none;cursor:pointer;font-size:16px;line-height:1;color:#4a7fdd;padding:0 0 0 2px}.audio-page .active-filter-chip .chip-remove:hover{color:#d32f2f}.audio-page .conversations-list{display:flex;flex-direction:column;gap:16px}.audio-page .conversation-card{background:#fff;border:1px solid #EAECF0;border-radius:12px;box-shadow:0 1px 2px #1018280d;overflow:hidden;transition:all .2s ease}.audio-page .conversation-card.is-expanded{border-color:#00a3ff;box-shadow:0 4px 12px #00a3ff14}.audio-page .conv-summary{padding:20px 24px;cursor:pointer}.audio-page .conv-summary .conv-id{font-size:16px;font-weight:700;color:#101828}.audio-page .conv-summary .conv-meta-row{display:flex;align-items:center;flex-wrap:wrap;gap:16px}.audio-page .conv-summary .conv-meta-row .meta-item{font-size:13px;font-weight:500;color:#667085;display:flex;align-items:center;gap:6px}.audio-page .conv-summary .conv-meta-row .meta-item i,.audio-page .conv-summary .conv-meta-row .meta-item svg{font-size:14px;color:#98a2b3;flex-shrink:0}.audio-page .conv-summary .conv-meta-row .meta-item .text-name{color:#98a2b3;font-weight:400}.audio-page .conv-summary .conv-meta-row .meta-item .name-val{color:#98a2b3;font-weight:600}.audio-page .conv-summary .conv-meta-row .meta-item .location-truncate{display:inline-block;max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.audio-page .conv-summary .conv-meta-row .meta-sep{width:1px;height:12px;background-color:#d0d5dd;margin:0 4px}.audio-page .conv-summary .conv-excerpt{font-size:14px;line-height:20px;color:#475467}.audio-page .conv-summary .eye-test-link{font-size:14px;font-weight:600;color:#00a3ff;text-decoration:none}.audio-page .conv-summary .eye-test-link:hover{text-decoration:underline}.audio-page .conv-summary .conv-toggle-btn{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:600;color:#667085}.audio-page .conv-summary .conv-toggle-btn svg{transition:transform .2s ease}.audio-page .conv-summary .conv-toggle-btn svg.rotate-180{transform:rotate(180deg)}.audio-page .conv-body{border-top:1px solid #EAECF0;background:#fcfcfd}.audio-page .conv-body-inner{position:relative;padding:24px 436px 24px 24px}.audio-page .conv-left{min-width:0}.audio-page .conv-right{position:absolute;top:24px;right:24px;bottom:24px;width:380px;display:flex;flex-direction:column;overflow-y:auto}.audio-page .recording-box{background:#fff;border:1px solid #EAECF0;border-radius:12px;padding:24px;box-shadow:0 1px 2px #1018280d}.audio-page .recording-box .recording-title{font-size:14px;font-weight:700;color:#101828;margin-bottom:24px}.audio-page .waveform-bars{position:relative;display:flex;align-items:center;gap:3px;height:72px;margin-bottom:14px;padding:4px 6px;border-radius:8px;transition:background .3s ease}.audio-page .waveform-bars:before{content:\"\";position:absolute;inset:0;border-radius:8px;background:#0a19371a;opacity:0;transition:opacity .3s ease;pointer-events:none;z-index:0}.audio-page .waveform-bars .wf-bar{position:relative;z-index:1;flex:1;border-radius:100px;min-height:4px;background:#d1e9ff;transform-origin:center;transition:background .1s}.audio-page .waveform-bars .wf-bar.wf-bar--played{background:#00a3ff}.audio-page .waveform-bars.is-playing .wf-bar{animation:wf-bounce .65s ease-in-out infinite}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(2n){animation-duration:.75s;animation-delay:.1s}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(3n){animation-duration:.5s;animation-delay:.22s}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(5n){animation-duration:.85s;animation-delay:.05s}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(7n){animation-duration:.42s;animation-delay:.18s}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(11n){animation-duration:.6s;animation-delay:.3s}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(13n){animation-duration:.7s;animation-delay:.08s}.audio-page .player-row{display:flex;align-items:center;gap:16px}.audio-page .player-row .play-btn-wrap{width:48px;height:48px;background:#00a3ff1a;border-radius:50%;display:flex;align-items:center;justify-content:center}.audio-page .player-row .play-btn-wrap .play-btn-circle{width:36px;height:36px;background:#00a3ff;border:none;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px;cursor:pointer;transition:background .2s ease}.audio-page .player-row .play-btn-wrap .play-btn-circle:hover{background:#0087d5}.audio-page .player-row .mute-btn{background:none;border:none;color:#667085;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center}.audio-page .player-row .mute-btn:hover{color:#101828}.audio-page .player-row .player-progress .progress-track{height:8px;background:#f2f4f7;border-radius:4px;overflow:hidden}.audio-page .player-row .player-progress .progress-track .progress-fill{height:100%;background:#00a3ff;border-radius:4px}.audio-page .player-row .player-progress .player-time{font-size:12px;font-weight:500;color:#667085}.audio-page .player-row .player-progress .player-time.start-time{color:#00a3ff}.audio-page .border-layer{background:#fff;border:1px solid #EAECF0;border-radius:12px;padding:24px}.audio-page .conv-tabs{display:flex;border-bottom:1px solid #EAECF0;gap:24px}.audio-page .conv-tab{background:none;border:none;padding:12px 0;font-size:14px;font-weight:600;color:#667085;cursor:pointer;position:relative;transition:color .2s ease}.audio-page .conv-tab.active{color:#00a3ff;background:#eaf8ff;padding:0 8px}.audio-page .conv-tab.active:after{content:\"\";position:absolute;bottom:-1px;left:0;right:0;height:2px;background:#00a3ff}.audio-page .conv-tab:hover:not(.active){color:#344054}.audio-page .conv-body-text{font-size:14px;line-height:24px;color:#475467}.audio-page .ai-insights-box{background:#f0f9ff;border:1px solid #B9E6FE;border-radius:12px;padding:20px;margin-top:20px}.audio-page .ai-insights-box .ai-insights-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}.audio-page .ai-insights-box .ai-insights-header .ai-icon-badge{width:32px;height:32px;background:#00a3ff;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.audio-page .ai-insights-box .ai-insights-header .ai-icon-badge svg{display:block}.audio-page .ai-insights-box .ai-insights-header .ai-insights-title{font-size:18px;font-weight:700;color:#101828}.audio-page .ai-insights-list{list-style:none;padding:0;margin:0}.audio-page .ai-insights-list li{display:flex;align-items:flex-start;gap:12px;font-size:14px;line-height:20px;color:#344054;margin-bottom:12px}.audio-page .ai-insights-list li:last-child{margin-bottom:0}.audio-page .ai-insights-list li .insight-bullet-icon{flex-shrink:0;margin-top:2px;color:#00a3ff}.audio-page .ai-insights-list li .insight-bullet-icon svg{display:block}.audio-page .metrics-panel{background:#fff;border:1px solid #EAECF0;border-radius:12px;padding:24px;box-shadow:0 1px 2px #1018280d;flex:1;overflow-y:auto}.audio-page .metrics-panel .metrics-title{font-size:16px;font-weight:700;color:#101828;border-bottom:1px solid #F2F4F7;padding-bottom:12px;margin-bottom:16px}.audio-page .metrics-panel .metric-row-item{display:flex;justify-content:space-between;align-items:center;padding:8px 0}.audio-page .metrics-panel .metric-row-item .metric-key{font-size:14px;font-weight:500;color:#475467;text-align:left;flex:1;display:flex;align-items:center;gap:8px}.audio-page .metrics-panel .metric-row-item .metric-key .dot:before{content:\"\\2022\";color:#000;font-size:18px}.audio-page .metrics-panel .metric-row-item .metric-val{font-size:14px;font-weight:700}.audio-page .metrics-panel .metric-row-item .metric-val.text-success{color:#12b76a}.audio-page .metrics-panel .metric-row-item .metric-val.text-primary{color:#00a3ff}.audio-page .metrics-panel .metric-divider{height:1px;background-color:#f2f4f7;margin:12px 0}.audio-page .metrics-panel .metric-section-label{font-size:15px;font-weight:600;color:#191919;letter-spacing:.5px}.audio-page .metrics-panel .metric-bullet-list li{display:flex;align-items:center;width:100%}.audio-page .metrics-panel .metric-bullet-list{list-style:none;padding:0;margin:0}.audio-page .metrics-panel .metric-bullet-list li{font-size:14px;color:#475467;display:flex;align-items:center;gap:8px;margin-bottom:4px}.audio-page .metrics-panel .metric-bullet-list li:before{content:\"\\2022\";color:#000;font-size:18px;margin-right:4px}.audio-page .metrics-panel .metric-bullet-list li .metric-pct{font-weight:700;color:#101828;margin-left:auto}.audio-page .metrics-panel .metric-bullet-list--text li{justify-content:flex-start}.audio-page .metrics-panel .metric-bullet-list--text li:before{margin-right:8px}.audio-page .pagination-row{display:flex;justify-content:center;margin-top:32px;padding-bottom:40px}.audio-page .pagination-row .pagination-list{display:flex;list-style:none;padding:0;gap:8px}.audio-page .pagination-row .pagination-list .page-item{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid #D0D5DD;background:#fff;font-size:14px;font-weight:600;color:#344054;cursor:pointer;transition:all .2s ease}.audio-page .pagination-row .pagination-list .page-item:hover{background:#f9fafb}.audio-page .pagination-row .pagination-list .page-item.active{background:#f0f9ff;border-color:#00a3ff;color:#00a3ff}.sparkle{font-size:10px;animation:twinkle 1.5s infinite ease-in-out}.chat-history-overlay .chat-history-session-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-radius:8px;cursor:pointer;margin-bottom:6px;border:1px solid #EAECF0;transition:background .15s}.chat-history-overlay .chat-history-session-item .session-title{font-size:14px;font-weight:500;color:#344054;flex:1;margin-right:8px}.chat-history-overlay .chat-history-msg.user{background:#f0f9ff;color:#101828;align-self:flex-end;border-radius:10px 10px 0}.chat-thread-header{display:flex;justify-content:flex-end;margin-bottom:8px}.chat-thread-header .btn-new-chat{display:flex;align-items:center;gap:6px;padding:6px 14px;background:#fff;border:1px solid #D0D5DD;border-radius:8px;font-size:13px;font-weight:600;color:#344054;cursor:pointer;transition:background .15s,border-color .15s}.chat-thread-header .btn-new-chat:hover{background:#f2f4f7;border-color:#009bf3;color:#009bf3}.chat-thread{border:1px solid #EAECF0;border-radius:12px;background:#fff;overflow:hidden}.chat-thread .chat-thread-messages{display:flex;flex-direction:column;gap:12px;max-height:350px;overflow-y:auto;padding:16px}.chat-thread .chat-thread-input{border-top:1px solid #EAECF0;padding:12px 16px;background:#fafbfc;display:flex;justify-content:center}.chat-msg{display:flex}.chat-msg.chat-msg--user{justify-content:flex-end}.chat-msg.chat-msg--ai{justify-content:flex-start}.chat-msg-bubble{max-width:80%;padding:12px 16px;border-radius:12px;font-size:14px;line-height:1.6}.chat-msg-bubble.chat-msg-bubble--user{background:#009af3;color:#fff;border-radius:12px 12px 0}.chat-msg-bubble.chat-msg-bubble--ai{background:linear-gradient(135deg,#eaf8ff,#f0f9ff);color:#344054;border-radius:12px 12px 12px 0;text-align:left}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-header{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:#101828;margin-bottom:8px}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-header .ai-avatar-icon{display:flex;align-items:center}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-body{font-size:14px;line-height:1.6;padding-left:30px}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-actions{display:flex;justify-content:flex-end;padding-top:6px}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-actions .btn-copy{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid #EAECF0;border-radius:6px;background:#fff;cursor:pointer;transition:background .15s,border-color .15s}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-actions .btn-copy:hover{background:#f2f4f7;border-color:#009bf3}@keyframes popupFadeInAudio{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}:host ::ng-deep .audio-tooltip .tooltip-inner{background:#1d2939;color:#fff;font-size:12px;font-weight:400;line-height:1.5;max-width:360px;white-space:normal;word-break:break-all;padding:8px 12px;border-radius:8px;text-align:left}:host ::ng-deep .audio-tooltip .tooltip-arrow:before{border-top-color:#1d2939}.transcript-page{padding:24px;background-color:#f5f7fa}.transcript-page .transcript-header-row{background:#fff;padding:14px 24px;border-radius:8px;border:1px solid #e8edf3}.transcript-page .section-title{font-size:16px;font-weight:600;color:#1a2b4b}.transcript-page .cohort-dropdown{position:relative}.transcript-page .cohort-dropdown .cohort-dropdown-trigger{display:flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid #D0D5DD;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;color:#344054;-webkit-user-select:none;user-select:none;transition:border-color .2s,background .2s;min-width:150px;justify-content:space-between}.transcript-page .cohort-dropdown .cohort-dropdown-trigger svg{transition:transform .2s ease;flex-shrink:0}.transcript-page .cohort-dropdown .cohort-dropdown-trigger svg.rotate{transform:rotate(180deg)}.transcript-page .cohort-dropdown .cohort-dropdown-menu{position:absolute;top:calc(100% + 4px);left:0;background:#fff;border:1px solid #D0D5DD;border-radius:8px;box-shadow:0 4px 16px #0000001a;z-index:200;min-width:180px;overflow:hidden}.transcript-page .cohort-dropdown .cohort-option{padding:10px 16px;font-size:14px;color:#344054;cursor:pointer;transition:background .15s}.transcript-page .cohort-dropdown .cohort-option:hover{background:#f0f4ff}.transcript-page .cohort-dropdown .cohort-option.selected{background:#e8f0fe;color:#1a73e8;font-weight:600}.transcript-page .transcript-search-wrap{position:relative;display:flex;align-items:center}.transcript-page .transcript-search-wrap .search-icon{position:absolute;left:10px;pointer-events:none}.transcript-page .transcript-search-wrap .transcript-search-input{height:38px;padding:0 32px 0 34px;border:1px solid #D0D5DD;border-radius:8px;font-size:14px;color:#344054;width:260px;outline:none;transition:border-color .2s}.transcript-page .transcript-search-wrap .transcript-search-input:focus{border-color:#84adff}.transcript-page .transcript-search-wrap .transcript-search-input::placeholder{color:#98a2b3}.transcript-page .transcript-search-wrap .search-clear-btn{position:absolute;right:8px;background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center}.transcript-page .btn-search{height:38px;padding:0 16px;background:#1a73e8;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:background .2s}.transcript-page .btn-search:hover{background:#1558b0}.transcript-page .export-btn{height:38px;display:flex;align-items:center}.transcript-page .export-btn .export-text{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:500}.transcript-page .conversation-area{border:1px solid #e8edf3}.transcript-page .conversations-count{font-size:14px;color:#344054}.transcript-page .conversation-card{border:1px solid #e8edf3;border-radius:10px;margin-bottom:12px;overflow:hidden;background:#fff}.transcript-page .conversation-card .conv-summary{padding:16px 20px;cursor:pointer;transition:background .15s}.transcript-page .conversation-card .conv-summary:hover{background:#f8fafc}.transcript-page .conversation-card .conv-summary-left{flex:1;min-width:0}.transcript-page .conversation-card .conv-id{font-size:13px;font-weight:600;color:#344054;background:#f0f4ff;border-radius:4px;padding:2px 8px}.transcript-page .conversation-card .conv-meta-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.transcript-page .conversation-card .meta-item{display:flex;align-items:center;gap:4px;font-size:13px;color:#667085}.transcript-page .conversation-card .meta-item .text-name{color:#98a2b3}.transcript-page .conversation-card .meta-item .name-val{color:#344054;font-weight:500}.transcript-page .conversation-card .meta-item .location-truncate{display:inline-block;max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.transcript-page .conversation-card .meta-sep{width:4px;height:4px;background:#d0d5dd;border-radius:50%;display:inline-block}.transcript-page .conversation-card .conv-excerpt{font-size:13px;color:#667085;line-height:1.5}.transcript-page .conversation-card .conv-toggle-btn{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:#344054;cursor:pointer;padding-left:16px;flex-shrink:0;align-self:flex-start;margin-top:16px}.transcript-page .conversation-card .conv-body{border-top:1px solid #e8edf3}.transcript-page .conversation-card .transcript-content .transcript-section{margin-bottom:20px}.transcript-page .conversation-card .transcript-content .transcript-section:last-child{margin-bottom:0}.transcript-page .conversation-card .transcript-content .transcript-section-title{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:#344054;margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid #f0f4ff}.transcript-page .conversation-card .transcript-content .transcript-summary-text{font-size:14px;color:#475467;line-height:1.7;margin:0}.transcript-page .conversation-card .transcript-content .transcript-text{font-size:14px;color:#475467;line-height:1.8;white-space:pre-wrap;background:#f8fafc;border-radius:8px;padding:16px;border:1px solid #e8edf3;max-height:400px;overflow-y:auto}.transcript-page .chat-section{text-align:center;padding:10px 0}.transcript-page .chat-section .chat-title{font-size:32px;font-weight:700;color:#00a3ff;margin:0;display:flex;align-items:center;justify-content:center}.transcript-page .chat-section .sparkle{display:inline-flex;align-items:center;margin-left:6px}.transcript-page .chat-section .chat-subtext{font-size:14px;color:#667085;font-weight:500;margin-top:4px}.transcript-page .chat-section .chat-input-wrapper{display:flex;align-items:center;background:#fff;border:1px solid #D0D5DD;border-radius:12px;padding:8px 12px;width:100%;max-width:600px;box-shadow:0 4px 10px #0000000d;position:relative}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap{position:relative;flex-shrink:0;margin-right:8px}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus{width:28px;height:28px;border-radius:50%;border:1.5px solid #D0D5DD;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#344054;font-size:16px;font-weight:600;transition:background .15s,border-color .15s}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus:hover,.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus.open{background:#f2f4f7;border-color:#009bf3;color:#009bf3}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup{position:absolute;bottom:calc(100% + 8px);left:0;background:#fff;border:1px solid #EAECF0;border-radius:12px;box-shadow:0 8px 24px #1018281f;padding:6px;min-width:210px;z-index:200;animation:popupFadeInTranscript .15s ease-out}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-section-label{font-size:11px;font-weight:600;color:#98a2b3;text-transform:uppercase;letter-spacing:.5px;padding:6px 12px 4px}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;border-radius:8px;padding:9px 12px;font-size:13px;font-weight:500;color:#344054;cursor:pointer;text-align:left;transition:background .12s}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item .check-icon{margin-left:auto}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item.selected{background:#f0f9ff;color:#009bf3}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item:hover:not(.selected){background:#f9fafb;color:#101828}.transcript-page .chat-section .chat-input-wrapper .chat-input-field{flex:1;border:none;outline:none;font-size:14px;color:#101828;background:transparent}.transcript-page .chat-section .chat-input-wrapper .chat-input-field::placeholder{color:#667085}.transcript-page .chat-section .chat-input-wrapper .chat-input-actions{display:flex;align-items:center;gap:12px;color:#667085}.transcript-page .chat-section .chat-input-wrapper .chat-input-actions .chat-icon-btn,.transcript-page .chat-section .chat-input-wrapper .chat-input-actions .chat-send-btn{background:none;border:none;padding:4px;cursor:pointer;color:inherit;display:flex;align-items:center;justify-content:center;transition:color .2s ease}.transcript-page .chat-section .chat-input-wrapper .chat-input-actions .chat-icon-btn:hover,.transcript-page .chat-section .chat-input-wrapper .chat-input-actions .chat-send-btn:hover{color:#00a3ff}.transcript-page input[type=text]:focus{box-shadow:none}.transcript-page .chat-messages-area{flex:1;padding:24px 16px;overflow-y:auto;display:flex;flex-direction:column;gap:24px;max-height:650px}.transcript-page .chat-messages-area.scrollbar-hidden{scrollbar-width:none}.transcript-page .chat-messages-area.scrollbar-hidden::-webkit-scrollbar{display:none}.transcript-page .message-wrapper{display:flex;flex-direction:column;max-width:85%}.transcript-page .message-wrapper.user{align-self:flex-end}.transcript-page .message-wrapper.user .message{flex-direction:row-reverse}.transcript-page .message-wrapper.user .message .message-bubble{background:#fff;color:#101828;border-radius:12px 12px 0;position:relative;padding-right:40px}.transcript-page .message{display:flex;gap:12px}.transcript-page .message.assistant{align-self:flex-start}.transcript-page .message.assistant .message-avatar{flex-shrink:0;margin-top:14px}.transcript-page .message.assistant .message-content{display:flex;flex-direction:column;gap:8px}.transcript-page .message.assistant .message-bubble{color:#101828;border-radius:12px 12px 12px 0}.transcript-page .message.assistant .message-bubble.typing{display:flex;align-items:center;gap:4px;padding:12px 20px}.transcript-page .message.assistant .message-bubble.typing .dot{width:6px;height:6px;background:#00a3ff;border-radius:50%;display:inline-block;animation:typingAnimation 1.4s infinite ease-in-out both}.transcript-page .message.assistant .message-bubble.typing .dot:nth-child(1){animation-delay:-.32s}.transcript-page .message.assistant .message-bubble.typing .dot:nth-child(2){animation-delay:-.16s}.transcript-page .message .message-bubble{padding:6px;font-size:15px;line-height:24px;position:relative}.transcript-page .message .message-bubble p{margin:0 0 6px;white-space:pre-wrap}.transcript-page .message .message-bubble p:last-child{margin-bottom:0}.transcript-page .message .message-bubble h3,.transcript-page .message .message-bubble h4,.transcript-page .message .message-bubble h5{margin:8px 0 4px;font-weight:700;line-height:1.4}.transcript-page .message .message-bubble h3{font-size:17px}.transcript-page .message .message-bubble h4{font-size:16px}.transcript-page .message .message-bubble h5{font-size:15px}.transcript-page .message .message-bubble strong{font-weight:700}.transcript-page .message .message-bubble em{font-style:italic}.transcript-page .message .message-bubble ul{margin:4px 0;padding-left:18px}.transcript-page .message .message-bubble ul li{margin-bottom:2px}.transcript-page .message .message-bubble .msg-sender-tag{position:absolute;right:6px;bottom:16px;background:#eaf8ff;color:#00a3ff;font-size:10px;font-weight:700;padding:2px 8px;border-radius:50%}.transcript-page .message .message-actions{display:flex;gap:8px}.transcript-page .message .message-actions .btn-copy{background:none;border:none;padding:4px;cursor:pointer;color:#667085;display:flex;align-items:center;justify-content:center;opacity:.6;transition:opacity .2s}.transcript-page .message .message-actions .btn-copy:hover{opacity:1}.transcript-page .copy-feedback-toast{position:fixed;bottom:120px;left:50%;transform:translate(-50%);background:#101828;color:#fff;padding:8px 16px;border-radius:8px;font-size:14px;font-weight:500;z-index:1000;box-shadow:0 4px 12px #0000001a;animation:fadeInOut 2s ease-in-out forwards}.transcript-page .chat-footer{padding:12px 16px;background:#fff}.transcript-page .chat-footer .input-wrapper{display:flex;align-items:center;background:#fff;border:1px solid #D0D5DD;border-radius:8px;padding:8px 20px;box-shadow:0 1px 2px #1018280d}.transcript-page .chat-footer .input-wrapper .chat-input{flex:1;border:none;outline:none;font-size:15px;color:#101828}.transcript-page .chat-footer .input-wrapper .btn-send{background:none;border:none;color:#00a3ff;cursor:pointer;display:flex;align-items:center;transition:transform .2s}.transcript-page .chat-footer .input-wrapper .btn-send:hover{transform:scale(1.1)}.transcript-page .recording-box{background:#fff;border:1px solid #EAECF0;border-radius:12px;padding:24px;box-shadow:0 1px 2px #1018280d}.transcript-page .recording-box .recording-title{font-size:14px;font-weight:700;color:#101828;margin-bottom:24px}@keyframes wf-bounce{0%{transform:scaleY(1)}50%{transform:scaleY(.28)}to{transform:scaleY(.75)}}.transcript-page .waveform-bars{position:relative;display:flex;align-items:center;gap:2px;height:72px;margin-bottom:14px;padding:4px 6px;border-radius:8px;transition:background .3s ease}.transcript-page .waveform-bars:before{content:\"\";position:absolute;inset:0;border-radius:8px;background:#0a19371a;opacity:0;transition:opacity .3s ease;pointer-events:none;z-index:0}.transcript-page .waveform-bars .wf-bar{position:relative;z-index:1;flex:1 1 0;border-radius:100px;min-height:4px;background:#d1e9ff;transform-origin:center;transition:background .1s}.transcript-page .waveform-bars .wf-bar.wf-bar--played{background:#00a3ff}.transcript-page .waveform-bars.is-playing .wf-bar{animation:wf-bounce .65s ease-in-out infinite}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(2n){animation-duration:.75s;animation-delay:.1s}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(3n){animation-duration:.5s;animation-delay:.22s}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(5n){animation-duration:.85s;animation-delay:.05s}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(7n){animation-duration:.42s;animation-delay:.18s}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(11n){animation-duration:.6s;animation-delay:.3s}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(13n){animation-duration:.7s;animation-delay:.08s}.transcript-page .player-row{display:flex;align-items:center;gap:16px}.transcript-page .player-row .play-btn-wrap{width:48px;height:48px;background:#00a3ff1a;border-radius:50%;display:flex;align-items:center;justify-content:center}.transcript-page .player-row .play-btn-wrap .play-btn-circle{width:36px;height:36px;background:#00a3ff;border:none;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s ease}.transcript-page .player-row .play-btn-wrap .play-btn-circle:hover{background:#0087d5}.transcript-page .player-row .mute-btn{background:none;border:none;color:#667085;cursor:pointer;display:flex;align-items:center;justify-content:center}.transcript-page .player-row .mute-btn:hover{color:#101828}.transcript-page .player-row .player-progress .progress-track{height:8px;background:#f2f4f7;border-radius:4px;overflow:hidden}.transcript-page .player-row .player-progress .progress-track .progress-fill{height:100%;background:#00a3ff;border-radius:4px}.transcript-page .player-row .player-progress .player-time{font-size:12px;font-weight:500;color:#667085}.transcript-page .player-row .player-progress .player-time.start-time{color:#00a3ff}.transcript-page .shimmer{width:100%}.transcript-page .shimmer .wrapper{padding:8px}.transcript-page .shimmer .wrapper .stroke{height:12px;border-radius:4px;background:#e0e0e0;margin-bottom:8px}.transcript-page .shimmer .wrapper .stroke.title{width:60%}.transcript-page .shimmer .wrapper .stroke.link{width:40%}.transcript-page .shimmer .wrapper .stroke.description{width:80%}.transcript-page .shimmer .wrapper .stroke.animate{animation:shimmer 1.4s infinite linear;background:linear-gradient(to right,#eee 8%,#ddd 18%,#eee 33%);background-size:800px 104px}@keyframes shimmer{0%{background-position:-468px 0}to{background-position:468px 0}}.transcript-page .nodata-title{font-size:15px;font-weight:600;color:#344054;margin-top:8px}.transcript-page .nodata-sub{font-size:13px;color:#98a2b3;margin-top:4px;text-align:center}.chat-history-backdrop{position:fixed;inset:0;z-index:999;background:transparent}.chat-history-overlay{position:fixed;top:0;right:0;height:100vh;width:340px;background:#fff;box-shadow:-4px 0 24px #0000001f;z-index:1000;display:flex;flex-direction:column;transform:translate(100%);transition:transform .3s ease}.chat-history-overlay.open{transform:translate(0)}.chat-history-overlay .chat-history-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid #EAECF0}.chat-history-overlay .chat-history-header .chat-history-title{font-size:15px;font-weight:700;color:#101828}.chat-history-overlay .chat-history-header .chat-history-close{background:none;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;border-radius:6px}.chat-history-overlay .chat-history-header .chat-history-close:hover{background:#f2f4f7}.chat-history-overlay .chat-history-body{flex:1;overflow-y:auto;padding:20px}.chat-history-overlay .chat-history-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:12px;color:#98a2b3;font-size:14px;text-align:center}.chat-history-overlay .chat-history-session-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-radius:8px;margin-bottom:6px;border:1px solid #EAECF0;transition:background .15s}.chat-history-overlay .chat-history-session-item:hover{background:#f2f4f7}.chat-history-overlay .chat-history-session-item .session-title{font-size:14px;font-weight:500;color:#344054;flex:1;margin-right:8px;cursor:pointer}.chat-history-overlay .chat-history-session-item .btn-continue-inline{background:#009bf3;color:#fff;border:none;cursor:pointer;padding:4px 12px;font-size:12px;font-weight:600;border-radius:6px;flex-shrink:0;transition:background .15s}.chat-history-overlay .chat-history-session-item .btn-continue-inline:hover{background:#0087d5}.chat-history-overlay .chat-history-session-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.chat-history-overlay .chat-history-session-back{display:flex;align-items:center;gap:4px;font-size:13px;font-weight:600;color:#009bf3;cursor:pointer}.chat-history-overlay .chat-history-session-back:hover{opacity:.8}.chat-history-overlay .chat-history-messages{display:flex;flex-direction:column;gap:12px}.chat-history-overlay .btn-continue-chat{width:100%;margin-top:16px;padding:10px 16px;background:#009bf3;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:background .2s}.chat-history-overlay .btn-continue-chat:hover{background:#0087d5}.chat-history-overlay .chat-history-msg{padding:10px 14px;border-radius:10px;font-size:13px;line-height:1.5}.chat-history-overlay .chat-history-msg.user{background:#f0f9ff;color:#101828;border-radius:10px 10px 0}.chat-history-overlay .chat-history-msg.assistant{background:#f9fafb;color:#344054;border:1px solid #EAECF0;border-radius:10px 10px 10px 0}.chat-history-overlay .chat-history-msg p{margin:0;white-space:pre-wrap}@keyframes popupFadeInTranscript{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.plus-menu-wrap{position:relative;flex-shrink:0}.plus-menu-wrap .btn-plus{width:30px;height:30px;border-radius:50%;border:1.5px solid #D0D5DD;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#344054;font-size:16px;font-weight:600;line-height:1;transition:background .15s,border-color .15s}.plus-menu-wrap .btn-plus:hover,.plus-menu-wrap .btn-plus.open{background:#f2f4f7;border-color:#009bf3;color:#009bf3}.plus-menu-wrap .plus-popup{position:absolute;bottom:calc(100% + 10px);left:0;background:#fff;border:1px solid #EAECF0;border-radius:12px;box-shadow:0 8px 24px #1018281f;padding:6px;min-width:210px;z-index:200;animation:popupFadeIn .15s ease-out}.plus-menu-wrap .plus-popup .plus-popup-section-label{font-size:11px;font-weight:600;color:#98a2b3;text-transform:uppercase;letter-spacing:.5px;padding:6px 12px 4px}.plus-menu-wrap .plus-popup .plus-popup-divider{height:1px;background:#eaecf0;margin:4px 0}.plus-menu-wrap .plus-popup .plus-popup-item{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;border-radius:8px;padding:9px 12px;font-size:14px;font-weight:500;color:#344054;cursor:pointer;text-align:left;transition:background .12s}.plus-menu-wrap .plus-popup .plus-popup-item svg{flex-shrink:0}.plus-menu-wrap .plus-popup .plus-popup-item .check-icon{margin-left:auto}.plus-menu-wrap .plus-popup .plus-popup-item .model-hint{font-size:11px;font-weight:400;color:#98a2b3;margin-left:4px}.plus-menu-wrap .plus-popup .plus-popup-item.selected{background:#f0f9ff;color:#009bf3}.plus-menu-wrap .plus-popup .plus-popup-item.selected svg{stroke:#009bf3}.plus-menu-wrap .plus-popup .plus-popup-item:hover:not(.selected){background:#f9fafb;color:#101828}@keyframes popupFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.model-version-tag{font-size:11px;font-weight:700;color:#009bf3;background:#eaf8ff;border:1px solid #B2E0FB;border-radius:6px;padding:2px 7px;white-space:nowrap;flex-shrink:0}.model-switcher{display:flex;align-items:center;background:#f2f4f7;border-radius:8px;padding:3px;gap:2px;flex-shrink:0}.model-switcher .model-option{background:transparent;border:none;border-radius:6px;padding:4px 12px;font-size:12px;font-weight:600;color:#667085;cursor:pointer;transition:background .15s,color .15s;white-space:nowrap}.model-switcher .model-option:hover:not(.active){background:#e4e7ec;color:#344054}.model-switcher .model-option.active{background:#fff;color:#009bf3;box-shadow:0 1px 3px #1018281a}.chat-page{background:#fff;display:flex;flex-direction:column}.chat-page .chat-layout-container{display:flex;position:relative}.chat-page .chat-main{flex:1;display:flex;flex-direction:column;background:#fff}.chat-page .chat-header{padding:0 12px}.chat-page .chat-header .header-top{position:relative;display:flex;align-items:center;justify-content:center}.chat-page .chat-header .header-top>.btn{position:absolute;right:0;top:50%;transform:translateY(-50%)}.chat-page .chat-header .header-top>.btn:focus,.chat-page .chat-header .header-top>.btn:focus-visible{box-shadow:none;outline:none}.chat-page .chat-header .view-history{font-size:14px;font-weight:600;color:#667085;text-decoration:none;cursor:pointer;display:inline-flex;align-items:center;gap:8px}.chat-page .chat-header .view-history:hover{color:#101828}.chat-page .chat-header .btn-history-toggle{background:#f2f4f7;border:none;border-radius:100px;padding:6px 14px;font-size:13px;font-weight:600;color:#344054;cursor:pointer;display:flex;align-items:center}.chat-page .chat-header .btn-history-toggle:hover{background:#eaecf0}.chat-page .chat-header .page-title{font-size:30px;font-weight:600;color:#009bf3;margin:0}.chat-page .chat-header .page-description{font-size:20px;color:#101828;font-weight:600}.chat-page .chat-messages-area{padding:24px;display:flex;flex-direction:column;gap:24px;max-height:60vh;overflow-y:auto}.chat-page .chat-messages-area:empty,.chat-page .chat-messages-area:not(:has(.message-wrapper)){max-height:none;overflow:visible;padding:0}.chat-page .chat-messages-area.scrollbar-hidden{scrollbar-width:none}.chat-page .chat-messages-area.scrollbar-hidden::-webkit-scrollbar{display:none}.chat-page .message-wrapper{display:flex;flex-direction:column;max-width:85%}.chat-page .message-wrapper.user{align-self:flex-end}.chat-page .message-wrapper.user .message{flex-direction:row-reverse}.chat-page .message-wrapper.user .message .message-bubble{background:#fff;color:#101828;border-radius:12px 12px 0;position:relative;padding-right:40px}.chat-page .message{display:flex;gap:12px}.chat-page .message.assistant{align-self:flex-start}.chat-page .message.assistant .message-avatar{flex-shrink:0;margin-top:14px}.chat-page .message.assistant .message-content{display:flex;flex-direction:column;gap:8px}.chat-page .message.assistant .message-bubble{color:#101828;border-radius:12px 12px 12px 0}.chat-page .message.assistant .message-bubble.typing{display:flex;align-items:center;gap:4px;padding:12px 20px}.chat-page .message.assistant .message-bubble.typing .dot{width:6px;height:6px;background:#00a3ff;border-radius:50%;display:inline-block;animation:typingAnimation 1.4s infinite ease-in-out both}.chat-page .message.assistant .message-bubble.typing .dot:nth-child(1){animation-delay:-.32s}.chat-page .message.assistant .message-bubble.typing .dot:nth-child(2){animation-delay:-.16s}.chat-page .message .message-bubble{padding:6px;font-size:15px;line-height:24px;position:relative}.chat-page .message .message-bubble p{margin:0 0 6px;white-space:pre-wrap}.chat-page .message .message-bubble p:last-child{margin-bottom:0}.chat-page .message .message-bubble h3,.chat-page .message .message-bubble h4,.chat-page .message .message-bubble h5{margin:8px 0 4px;font-weight:700;line-height:1.4}.chat-page .message .message-bubble h3{font-size:17px}.chat-page .message .message-bubble h4{font-size:16px}.chat-page .message .message-bubble h5{font-size:15px}.chat-page .message .message-bubble strong{font-weight:700}.chat-page .message .message-bubble em{font-style:italic}.chat-page .message .message-bubble ul{margin:4px 0;padding-left:18px}.chat-page .message .message-bubble ul li{margin-bottom:2px}.chat-page .message .message-bubble .msg-sender-tag{position:absolute;right:6px;bottom:16px;background:#eaf8ff;color:#00a3ff;font-size:10px;font-weight:700;padding:2px 8px;border-radius:50%}.chat-page .message .message-actions{display:flex;gap:8px}.chat-page .message .message-actions .btn-copy{background:none;border:none;padding:4px;cursor:pointer;color:#667085;display:flex;align-items:center;justify-content:center;opacity:.6;transition:opacity .2s}.chat-page .message .message-actions .btn-copy:hover{opacity:1}.chat-page .copy-feedback-toast{position:fixed;bottom:120px;left:50%;transform:translate(-50%);background:#101828;color:#fff;padding:8px 16px;border-radius:8px;font-size:14px;font-weight:500;z-index:1000;box-shadow:0 4px 12px #0000001a;animation:fadeInOut 2s ease-in-out forwards}.chat-page .chat-input-area{padding:24px 150px;background:#fff}.chat-page .chat-input-area .filter-chips-container{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;align-items:center}.chat-page .chat-input-area .filter-chips-container .filter-chip{background:#f9fafb;border:1px solid #EAECF0;border-radius:8px;padding:4px 12px;display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:#344054}.chat-page .chat-input-area .filter-chips-container .filter-chip .btn-remove-chip{background:none;border:none;font-size:16px;color:#98a2b3;cursor:pointer;padding:0;line-height:1}.chat-page .chat-input-area .filter-chips-container .btn-clear-all{background:none;border:none;font-size:13px;font-weight:600;color:#667085;text-decoration:underline;cursor:pointer;margin-left:auto}.chat-page .chat-input-area .filter-chips-container .btn-clear-all:hover{color:#101828}.chat-page .chat-input-area .input-wrapper{display:flex;align-items:center;background:#fff;border:1px solid #D0D5DD;border-radius:8px;padding:8px 20px;box-shadow:0 1px 2px #1018280d}.chat-page .chat-input-area .input-wrapper .chat-input{flex:1;border:none;outline:none;font-size:15px;color:#101828}.chat-page .chat-input-area .input-wrapper .btn-filter-icon{background:#fff;border:1px solid #D0D5DD;border-radius:8px;padding:6px 12px;font-size:14px;font-weight:600;color:#344054;display:flex;align-items:center;gap:8px;margin-right:12px;cursor:pointer}.chat-page .chat-input-area .input-wrapper .btn-filter-icon:hover{background:#f9fafb}.chat-page .chat-input-area .input-wrapper .btn-history-inline{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;opacity:.6;transition:opacity .2s}.chat-page .chat-input-area .input-wrapper .btn-history-inline:hover{opacity:1}.chat-page .chat-input-area .input-wrapper .btn-send{background:none;border:none;color:#00a3ff;cursor:pointer;display:flex;align-items:center;transition:transform .2s}.chat-page .chat-input-area .input-wrapper .btn-send:hover{transform:scale(1.1)}.chat-page .chat-history-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;z-index:999;background:#00000026;cursor:default}.chat-page .chat-history-sidebar{position:fixed;top:0;right:0;width:320px;height:100vh;background:#fcfcfd;display:flex;flex-direction:column;z-index:1000;box-shadow:-4px 0 24px #0000001f;animation:slideInRight .25s ease-out}.chat-page .chat-history-sidebar .sidebar-header{padding:24px!important}.chat-page .chat-history-sidebar .sidebar-header h6{font-size:16px;color:#101828;display:flex;align-items:center}.chat-page .chat-history-sidebar .sidebar-search{padding:0 24px 16px}.chat-page .chat-history-sidebar .sidebar-search .history-search-wrapper{position:relative;display:flex;align-items:center;background:#fff;border:1px solid #D0D5DD;border-radius:8px;padding:8px 12px}.chat-page .chat-history-sidebar .sidebar-search .history-search-wrapper i{color:#667085;position:absolute;left:12px}.chat-page .chat-history-sidebar .sidebar-search .history-search-wrapper input{border:none;outline:none;font-size:14px;padding-left:24px;width:100%}.chat-page .chat-history-sidebar .sidebar-search .history-search-wrapper input::placeholder{color:#667085}.chat-page .chat-history-sidebar .sidebar-content{flex:1;padding:12px 24px!important;overflow-y:auto}.chat-page .chat-history-sidebar .sidebar-content.scrollbar-hidden{scrollbar-width:none}.chat-page .chat-history-sidebar .sidebar-content.scrollbar-hidden::-webkit-scrollbar{display:none}.chat-page .chat-history-sidebar .sidebar-content .history-item{padding:12px 16px;border-radius:12px;cursor:pointer;margin-bottom:8px;transition:all .2s;border:1px solid transparent}.chat-page .chat-history-sidebar .sidebar-content .history-item:hover{background:#f2f4f7}.chat-page .chat-history-sidebar .sidebar-content .history-item.active{background:#f0f9ff;border-color:#b9e6fe}.chat-page .chat-history-sidebar .sidebar-content .history-item.active .item-title{color:#00a3ff}.chat-page .chat-history-sidebar .sidebar-content .history-item .item-title{font-size:14px;font-weight:600;color:#344054}.chat-page .chat-history-sidebar .sidebar-content .history-item .item-date{font-size:12px;margin-top:4px;color:#667085}.chat-page .chat-history-sidebar .sidebar-footer{padding:24px!important}.chat-page .chat-history-sidebar .sidebar-footer .btn-new-chat{background:#fff;border:1px solid #D0D5DD;border-radius:100px;padding:12px;font-size:14px;font-weight:600;color:#344054;cursor:pointer;box-shadow:0 1px 2px #1018280d}.chat-page .chat-history-sidebar .sidebar-footer .btn-new-chat:hover{background:#f9fafb}input[type=text]:focus{outline:none;box-shadow:none}@keyframes slideInRight{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes typingAnimation{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}@keyframes fadeInOut{0%{opacity:0;transform:translate(-50%,20px)}10%{opacity:1;transform:translate(-50%)}90%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-20px)}}.sparkle{font-size:60px;animation:twinkle 1.5s infinite ease-in-out}@keyframes twinkle{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.1)}}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "directive", type: i8.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "pipe", type: i5.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i5.DatePipe, name: "date" }] });
964
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AudioPageComponent, selector: "lib-audio-page", host: { listeners: { "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "chatThreadMessages", first: true, predicate: ["chatThreadMessages"], descendants: true }, { propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true }], ngImport: i0, template: "<div class=\"audio-page\">\n\n <!-- \u2500\u2500 Header Row \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"header-row-container mb-4\" *ngIf=\"cohortOptions.length > 0\">\n <div class=\"d-flex align-items-center justify-content-between\">\n <div class=\"d-flex align-items-center gap-3\">\n <!-- Custom Single-select Cohort Dropdown -->\n <div class=\"cohort-dropdown\" [class.open]=\"isCohortDropdownOpen\">\n <div class=\"cohort-dropdown-trigger\"\n (click)=\"isCohortDropdownOpen = !isCohortDropdownOpen; $event.stopPropagation()\">\n <span>{{ filterType }}</span>\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\" [class.rotate]=\"isCohortDropdownOpen\">\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div class=\"cohort-dropdown-menu\" *ngIf=\"isCohortDropdownOpen\" (click)=\"$event.stopPropagation()\">\n <div class=\"cohort-option\" *ngFor=\"let opt of cohortOptions\" [class.selected]=\"opt === filterType\"\n (click)=\"selectCohortType(opt)\">\n {{ opt }}\n </div>\n </div>\n </div>\n <h4 class=\"section-title mb-0\">Cohort Analysis</h4>\n </div>\n <div class=\"total-audio-label\">Total Audio Available <strong>{{ totalAudio }}</strong></div>\n </div>\n </div>\n\n <!-- \u2500\u2500 Stats Grid (Dynamic) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"stats-grid mb-4\">\n\n <!-- Loader -->\n <ng-container *ngIf=\"isLoadingCards\">\n <div class=\"stat-card\" *ngFor=\"let s of [1,2,3,4,5,6]\">\n <div class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <div class=\"stat-card\" *ngFor=\"let card of cohortCards\" [hidden]=\"isLoadingCards\">\n <div class=\"stat-card-header text-capitalize ellipse1 cursor-pointer\" (click)=\"onCardRowClick('', card.name)\">\n {{ card.name }}\n </div>\n <div class=\"stat-card-body\">\n\n <!-- BOOLEAN_BASKET: label + responses + score -->\n <ng-container *ngIf=\"card.type === 'BOOLEAN_BASKET'\">\n <table class=\"cohort-table w-100\">\n <tbody>\n <tr *ngFor=\"let row of card?.booleanRows\">\n <td class=\"text-primary text-capitalize text-decoration-underline cursor-pointer\" (click)=\"onCardRowClick('', row?.label)\">{{ row?.label.split('_').join(' ').toLowerCase() }}</td>\n <td class=\"text-end\">{{ row?.responses }}</td>\n <td class=\"text-end\">{{ row?.score }}%</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n <!-- NUMERIC_SCALAR: total + avg -->\n <ng-container *ngIf=\"card.type === 'NUMERIC_SCALAR' || card.type === 'NUMERIC_ARRAY'\">\n <table class=\"cohort-table w-100\">\n <tbody>\n <tr>\n <td>Total</td>\n <td class=\"text-end\">{{ card.numericData?.total }}</td>\n </tr>\n <tr>\n <td>Average</td>\n <td class=\"text-end\">{{ card.numericData?.avg }}</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n <!-- SUBJECTIVE: id + reasoning text -->\n <ng-container *ngIf=\"card.type === 'SUBJECTIVE'\">\n <table class=\"cohort-table w-100\">\n <tbody>\n <tr *ngFor=\"let row of card.subjectiveRows\">\n <td class=\"text-nowrap\">{{ row?.store_id || '\u2014' }}</td>\n <td class=\"text-nowrap\">{{ row?.date || '\u2014' }}</td>\n <td class=\"text-primary text-capitalize text-decoration-underline cursor-pointer\" (click)=\"onCardRowClick(row?._id,'')\" [ngbTooltip]=\"row?.reasoning || 'No description available'\" placement=\"top\" container=\"body\" tooltipClass=\"audio-tooltip\">{{ row?.reasoning && row?.reasoning !== '' ? row?.reasoning?.slice(0, 25) + '...' : 'No reasoning available' }}</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n <ng-container *ngIf=\"card.type === 'SUBJECTIVE_COUNT'\">\n <table class=\"cohort-table w-100\">\n <tbody>\n <tr *ngFor=\"let row of card.subjectiveRows\">\n <td class=\"text-nowrap fw-bold\"\n [ngbTooltip]=\"row?._id\" placement=\"top\" container=\"body\" tooltipClass=\"audio-tooltip\">{{ row?._id }}</td>\n <td [ngbTooltip]=\"row?.reasoning || 'No description available'\" placement=\"top\" container=\"body\" tooltipClass=\"audio-tooltip\">{{ row?.reasoning && row?.reasoning !== '' ? row?.reasoning?.slice(0, 25) : 'No reasoning available' }}</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n <!-- UNIQUE_PITCHES: pitchId + description -->\n <ng-container *ngIf=\"card.type === 'UNIQUE_PITCHES'\">\n <table class=\"cohort-table w-100\">\n <tbody>\n <tr *ngFor=\"let pitch of card.pitchRows\">\n <td class=\"text-nowrap fw-bold\"\n [ngbTooltip]=\"pitch.id\" placement=\"top\" container=\"body\" tooltipClass=\"audio-tooltip\">{{ pitch.id }}</td>\n <td [ngbTooltip]=\"pitch.desc || 'No description available'\" placement=\"top\" container=\"body\" tooltipClass=\"audio-tooltip\">{{ pitch.desc ? pitch.desc.slice(0, 75) + '...' : 'No description available' }}</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n </div>\n </div>\n\n </div>\n\n <!-- \u2500\u2500 Conversation Analysis \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"conversation-area bg-white p-4 rounded-3\">\n\n <!-- Section Header -->\n <div class=\"d-flex justify-content-between align-items-center px-2 bottom-border mb-4\">\n <h5 class=\"section-title mb-0\">Conversation Analysis</h5>\n <button class=\"export-btn btn btn-default mx-1 btn-outline bg-white btn-outline-default\" (click)=\"exportData()\" ngbTooltip=\"Export conversation data to CSV\" placement=\"top\" [disabled]=\"totalItems === 0\">\n <span class=\"export-text\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\n fill=\"none\">\n <path\n d=\"M8.125 13.125H16.3563L14.7438 14.7438L15.625 15.625L18.75 12.5L15.625 9.375L14.7438 10.2562L16.3563 11.875H8.125V13.125Z\"\n fill=\"black\" />\n <path\n d=\"M13.75 8.75001V6.25001C13.7505 6.16776 13.7347 6.08622 13.7036 6.01007C13.6725 5.93392 13.6267 5.86466 13.5688 5.80626L9.19375 1.43126C9.13535 1.37333 9.06609 1.32751 8.98994 1.2964C8.91379 1.2653 8.83225 1.24953 8.75 1.25001H2.5C2.16848 1.25001 1.85054 1.38171 1.61612 1.61613C1.3817 1.85055 1.25 2.16849 1.25 2.50001V17.5C1.25 17.8315 1.3817 18.1495 1.61612 18.3839C1.85054 18.6183 2.16848 18.75 2.5 18.75H12.5C12.8315 18.75 13.1495 18.6183 13.3839 18.3839C13.6183 18.1495 13.75 17.8315 13.75 17.5V16.25H12.5V17.5H2.5V2.50001H7.5V6.25001C7.5 6.58153 7.6317 6.89947 7.86612 7.13389C8.10054 7.36831 8.41848 7.50001 8.75 7.50001H12.5V8.75001H13.75ZM8.75 6.25001V2.75626L12.2438 6.25001H8.75Z\"\n fill=\"black\" />\n </svg> Export</span>\n </button>\n </div>\n\n <!-- \u2500\u2500 Tango AI Chat \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"chat-page\">\n <div class=\"chat-layout-container\">\n <div class=\"chat-main\">\n <header class=\"chat-header\">\n <div class=\"header-top\">\n <div class=\"header-content text-center\"></div>\n </div>\n </header>\n\n <!-- Message Area -->\n <div class=\"chat-messages-area scrollbar-hidden\" #scrollContainer>\n <div class=\"d-flex justify-content-center align-items-center py-4\" *ngIf=\"isChatLoading\">\n <span class=\"text-muted\">Loading conversation...</span>\n </div>\n <div *ngFor=\"let msg of messages\" class=\"message-wrapper\" [class.user]=\"msg.sender === 'user'\">\n <div class=\"message\" [class.assistant]=\"msg.sender === 'assistant'\">\n <div class=\"message-avatar\" *ngIf=\"msg.sender === 'assistant'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <rect width=\"24\" height=\"24\" rx=\"12\" fill=\"#EAF8FF\" />\n <mask id=\"path-2-inside-1_1902_107186\" fill=\"white\">\n <path\n d=\"M18.9941 17.5561L18.4565 17.0185L12.663 11.225L14.3816 9.5064L14.7934 9.0938C14.8327 9.05395 14.8549 9.00032 14.8552 8.94436C14.855 8.91668 14.8494 8.88931 14.8387 8.86381C14.828 8.8383 14.8123 8.81517 14.7926 8.79572L14.38 8.38312L12.5574 6.55729L12.1448 6.14469C12.1253 6.12485 12.1021 6.10909 12.0764 6.09833C12.0508 6.08757 12.0232 6.08203 11.9954 6.08203C11.9676 6.08203 11.94 6.08757 11.9144 6.09833C11.8887 6.10909 11.8655 6.12485 11.8459 6.14469L11.4333 6.5581L9.19979 8.79166C9.17997 8.81109 9.16423 8.83428 9.15348 8.85988C9.14273 8.88547 9.1372 8.91294 9.1372 8.9407C9.1372 8.96846 9.14273 8.99593 9.15348 9.02152C9.16423 9.04712 9.17997 9.07031 9.19979 9.08974L11.3334 11.2242L5.53919 17.0185L5.00395 17.5561C4.96426 17.5955 4.94177 17.6489 4.94141 17.7048C4.94164 17.7588 4.96223 17.8107 4.99907 17.8502C5.01874 17.8712 5.04251 17.8879 5.06892 17.8994C5.09532 17.9108 5.1238 17.9168 5.15258 17.9168H10.3645C10.4204 17.9166 10.474 17.8942 10.5136 17.8547C10.5531 17.8151 10.5754 17.7615 10.5757 17.7056V17.1874C10.5757 17.1313 10.5534 17.0775 10.5139 17.0378C10.4743 16.9981 10.4206 16.9756 10.3645 16.9754H6.91262L11.9978 11.8902L17.083 16.9754H13.6011C13.545 16.9756 13.4913 16.9981 13.4517 17.0378C13.4122 17.0775 13.3899 17.1313 13.3899 17.1874V17.7056C13.3898 17.7334 13.3953 17.761 13.4061 17.7867C13.4168 17.8123 13.4326 17.8356 13.4525 17.855C13.4919 17.8944 13.5454 17.9166 13.6011 17.9168H18.8447C18.8736 17.9169 18.9023 17.911 18.9288 17.8995C18.9554 17.8881 18.9793 17.8713 18.999 17.8502C19.037 17.8103 19.0577 17.7572 19.0568 17.7022C19.0559 17.6471 19.0334 17.5947 18.9941 17.5561ZM11.9946 7.32645L13.6133 8.94517L11.9986 10.5598L10.3799 8.94111L11.9946 7.32645Z\" />\n </mask>\n <path\n d=\"M18.9941 17.5561L-9.47869 46.029L-9.35225 46.1554L-9.2247 46.2807L18.9941 17.5561ZM18.4565 17.0185L46.9293 -11.4544V-11.4544L18.4565 17.0185ZM12.663 11.225L-15.8098 -17.2478L-44.2826 11.225L-15.8098 39.6979L12.663 11.225ZM14.3816 9.5064L42.8545 37.9792L42.8685 37.9652L42.8826 37.9511L14.3816 9.5064ZM14.7934 9.0938L43.2943 37.5385L43.3813 37.4514L43.4677 37.3638L14.7934 9.0938ZM14.8552 8.94436L55.1213 9.14972L55.1223 8.94774L55.1213 8.74576L14.8552 8.94436ZM14.7926 8.79572L-13.6802 37.2686L-13.5916 37.3572L-13.5024 37.4453L14.7926 8.79572ZM14.38 8.38312L-14.1182 36.8306L-14.1055 36.8433L-14.0928 36.856L14.38 8.38312ZM12.5574 6.55729L41.0556 -21.8902L41.0429 -21.9029L41.0302 -21.9156L12.5574 6.55729ZM12.1448 6.14469L-16.5725 34.3709L-16.4508 34.4948L-16.328 34.6175L12.1448 6.14469ZM11.8459 6.14469L40.3467 34.5895L40.4554 34.4806L40.5633 34.3709L11.8459 6.14469ZM11.4333 6.5581L39.9062 35.0309L39.9202 35.0169L39.9341 35.0029L11.4333 6.5581ZM9.19979 8.79166L37.392 37.5424L37.533 37.4041L37.6726 37.2645L9.19979 8.79166ZM9.1372 8.9407H49.4039H9.1372ZM9.19979 9.08974L37.678 -19.3777L37.5357 -19.52L37.392 -19.661L9.19979 9.08974ZM11.3334 11.2242L39.8063 39.697L68.2737 11.2296L39.8117 -17.2432L11.3334 11.2242ZM5.53919 17.0185L-22.9337 -11.4544L-22.966 -11.422L-22.9982 -11.3896L5.53919 17.0185ZM5.00395 17.5561L33.3446 46.1605L33.4433 46.0627L33.5414 45.9643L5.00395 17.5561ZM4.94141 17.7048L-35.3244 17.4419L-35.3258 17.6598L-35.3249 17.8776L4.94141 17.7048ZM4.99907 17.8502L-24.4379 45.325L-24.4177 45.3467L-24.3975 45.3683L4.99907 17.8502ZM5.15258 17.9168L5.13983 58.1834H5.15258V17.9168ZM10.3645 17.9168V58.1834H10.4415L10.5185 58.1831L10.3645 17.9168ZM10.5757 17.7056L50.842 17.8596L50.8423 17.7826V17.7056H10.5757ZM10.5757 17.1874L-29.691 17.1871V17.1874H10.5757ZM10.3645 16.9754L10.5188 -23.291L10.4416 -23.2912H10.3645V16.9754ZM6.91262 16.9754L-21.5602 -11.4974L-90.2997 57.2421H6.91262V16.9754ZM11.9978 11.8902L40.4707 -16.5826L11.9978 -45.0555L-16.475 -16.5826L11.9978 11.8902ZM17.083 16.9754V57.2421H114.295L45.5559 -11.4974L17.083 16.9754ZM13.6011 16.9754V-23.2912H13.524L13.4468 -23.291L13.6011 16.9754ZM13.3899 17.1874H53.6566V17.1871L13.3899 17.1874ZM13.3899 17.7056L53.6563 17.86L53.6566 17.7828V17.7056H13.3899ZM13.4525 17.855L41.9019 -10.6412L41.7554 -10.7875L41.6074 -10.9322L13.4525 17.855ZM13.6011 17.9168L13.4933 58.1833L13.5472 58.1834H13.6011V17.9168ZM18.8447 17.9168L18.9872 -22.3497L18.9159 -22.3499H18.8447V17.9168ZM18.999 17.8502L-10.1563 -9.92346L-10.2776 -9.79612L-10.3977 -9.66773L18.999 17.8502ZM11.9946 7.32645L40.4674 -21.1464L11.9946 -49.6192L-16.4783 -21.1464L11.9946 7.32645ZM13.6133 8.94517L42.0861 37.418L70.559 8.94517L42.0861 -19.5277L13.6133 8.94517ZM11.9986 10.5598L-16.4742 39.0327L11.9986 67.5055L40.4715 39.0327L11.9986 10.5598ZM10.3799 8.94111L-18.0929 -19.5317L-46.5657 8.94111L-18.0929 37.4139L10.3799 8.94111ZM18.9941 17.5561L47.467 -10.9167L46.9293 -11.4544L18.4565 17.0185L-10.0164 45.4913L-9.47869 46.029L18.9941 17.5561ZM18.4565 17.0185L46.9293 -11.4544L41.1359 -17.2478L12.663 11.225L-15.8098 39.6979L-10.0164 45.4913L18.4565 17.0185ZM12.663 11.225L41.1359 39.6979L42.8545 37.9792L14.3816 9.5064L-14.0912 -18.9664L-15.8098 -17.2478L12.663 11.225ZM14.3816 9.5064L42.8826 37.9511L43.2943 37.5385L14.7934 9.0938L-13.7075 -19.3509L-14.1193 -18.9383L14.3816 9.5064ZM14.7934 9.0938L43.4677 37.3638C50.8853 29.8401 55.0674 19.7146 55.1213 9.14972L14.8552 8.94436L-25.411 8.73899C-25.3577 -1.71401 -21.2199 -11.7322 -13.8808 -19.1762L14.7934 9.0938ZM14.8552 8.94436L55.1213 8.74576C55.0951 3.42217 54.0189 -1.84466 51.9537 -6.75289L14.8387 8.86381L-22.2763 24.4805C-24.3201 19.6233 -25.385 14.4112 -25.411 9.14295L14.8552 8.94436ZM14.8387 8.86381L51.9537 -6.75289C49.8888 -11.6604 46.8759 -16.1124 43.0876 -19.8538L14.7926 8.79572L-13.5024 37.4453C-17.2513 33.7427 -20.2329 29.337 -22.2763 24.4805L14.8387 8.86381ZM14.7926 8.79572L43.2655 -19.6771L42.8529 -20.0897L14.38 8.38312L-14.0928 36.856L-13.6802 37.2686L14.7926 8.79572ZM14.38 8.38312L42.8782 -20.0643L41.0556 -21.8902L12.5574 6.55729L-15.9407 35.0048L-14.1182 36.8306L14.38 8.38312ZM12.5574 6.55729L41.0302 -21.9156L40.6176 -22.3282L12.1448 6.14469L-16.328 34.6175L-15.9154 35.0301L12.5574 6.55729ZM12.1448 6.14469L40.8622 -22.0815C37.0954 -25.9139 32.6028 -28.9582 27.6461 -31.0364L12.0764 6.09833L-3.49324 43.2331C-8.3986 41.1764 -12.8447 38.1636 -16.5725 34.3709L12.1448 6.14469ZM12.0764 6.09833L27.6461 -31.0364C22.6898 -33.1145 17.3694 -34.1846 11.9954 -34.1846V6.08203V46.3487C6.67703 46.3487 1.41175 45.2896 -3.49324 43.2331L12.0764 6.09833ZM11.9954 6.08203V-34.1846C6.62127 -34.1846 1.30091 -33.1144 -3.65529 -31.0364L11.9144 6.09833L27.484 43.2331C22.5791 45.2896 17.3139 46.3487 11.9954 46.3487V6.08203ZM11.9144 6.09833L-3.65529 -31.0364C-8.61164 -28.9584 -13.1043 -25.9141 -16.8714 -22.0815L11.8459 6.14469L40.5633 34.3709C36.8352 38.1638 32.3891 41.1765 27.484 43.2331L11.9144 6.09833ZM11.8459 6.14469L-16.6549 -22.3002L-17.0675 -21.8867L11.4333 6.5581L39.9341 35.0029L40.3467 34.5895L11.8459 6.14469ZM11.4333 6.5581L-17.0395 -21.9147L-19.273 -19.6812L9.19979 8.79166L37.6726 37.2645L39.9062 35.0309L11.4333 6.5581ZM9.19979 8.79166L-18.9924 -19.9591C-22.8352 -16.1909 -25.888 -11.6941 -27.9721 -6.73176L9.15348 8.85988L46.279 24.4515C44.2165 29.3627 41.1952 33.8131 37.392 37.5424L9.19979 8.79166ZM9.15348 8.85988L-27.9721 -6.73176C-30.0559 -1.76998 -31.1295 3.55805 -31.1295 8.9407H9.1372H49.4039C49.4039 14.2678 48.3413 19.5409 46.279 24.4515L9.15348 8.85988ZM9.1372 8.9407H-31.1295C-31.1295 14.3233 -30.0559 19.6513 -27.9721 24.6132L9.15348 9.02152L46.279 -6.57011C48.3413 -1.65946 49.4039 3.61362 49.4039 8.9407H9.1372ZM9.15348 9.02152L-27.9721 24.6132C-25.8879 29.5757 -22.8351 34.0724 -18.9924 37.8405L9.19979 9.08974L37.392 -19.661C41.195 -15.9318 44.2164 -11.4815 46.279 -6.57011L9.15348 9.02152ZM9.19979 9.08974L-19.2785 37.5571L-17.1448 39.6916L11.3334 11.2242L39.8117 -17.2432L37.678 -19.3777L9.19979 9.08974ZM11.3334 11.2242L-17.1394 -17.2486L-22.9337 -11.4544L5.53919 17.0185L34.012 45.4913L39.8063 39.697L11.3334 11.2242ZM5.53919 17.0185L-22.9982 -11.3896L-23.5335 -10.852L5.00395 17.5561L33.5414 45.9643L34.0766 45.4266L5.53919 17.0185ZM5.00395 17.5561L-23.3367 -11.0482C-30.944 -3.51111 -35.2545 6.73339 -35.3244 17.4419L4.94141 17.7048L45.2072 17.9676C45.138 28.5644 40.8725 38.7021 33.3446 46.1605L5.00395 17.5561ZM4.94141 17.7048L-35.3249 17.8776C-35.2811 28.0714 -31.3931 37.8731 -24.4379 45.325L4.99907 17.8502L34.4361 -9.62469C41.3176 -2.25171 45.1644 7.4462 45.2077 17.532L4.94141 17.7048ZM4.99907 17.8502L-24.3975 45.3683C-20.613 49.4111 -16.039 52.6347 -10.9579 54.8392L5.06892 17.8994L21.0957 -19.0404C26.124 -16.8588 30.6505 -13.6687 34.3956 -9.66798L4.99907 17.8502ZM5.06892 17.8994L-10.9579 54.8392C-5.87783 57.0432 -0.398977 58.1817 5.13983 58.1834L5.15258 17.9168L5.16533 -22.3499C10.6466 -22.3482 16.0685 -21.2215 21.0957 -19.0404L5.06892 17.8994ZM5.15258 17.9168V58.1834H10.3645V17.9168V-22.3499H5.15258V17.9168ZM10.3645 17.9168L10.5185 58.1831C21.2005 58.1423 31.4332 53.8807 38.9864 46.3275L10.5136 17.8547L-17.9593 -10.6182C-10.4852 -18.0922 -0.359679 -22.3092 10.2105 -22.3496L10.3645 17.9168ZM10.5136 17.8547L38.9864 46.3275C46.5403 38.7737 50.8012 28.5407 50.842 17.8596L10.5757 17.7056L-29.6907 17.5516C-29.6503 6.98236 -25.434 -3.14343 -17.9593 -10.6182L10.5136 17.8547ZM10.5757 17.7056H50.8423V17.1874H10.5757H-29.691V17.7056H10.5757ZM10.5757 17.1874L50.8423 17.1877C50.8424 6.47884 46.599 -3.79361 39.0413 -11.3803L10.5139 17.0378L-18.0136 45.4559C-25.4921 37.9487 -29.6911 27.7838 -29.691 17.1871L10.5757 17.1874ZM10.5139 17.0378L39.0413 -11.3803C31.4841 -18.9666 21.2282 -23.2499 10.5188 -23.291L10.3645 16.9754L10.2102 57.2418C-0.387043 57.2012 -10.5355 52.9627 -18.0136 45.4559L10.5139 17.0378ZM10.3645 16.9754V-23.2912H6.91262V16.9754V57.2421H10.3645V16.9754ZM6.91262 16.9754L35.3855 45.4483L40.4707 40.3631L11.9978 11.8902L-16.475 -16.5826L-21.5602 -11.4974L6.91262 16.9754ZM11.9978 11.8902L-16.475 40.363L-11.3898 45.4483L17.083 16.9754L45.5559 -11.4974L40.4707 -16.5826L11.9978 11.8902ZM17.083 16.9754V-23.2912H13.6011V16.9754V57.2421H17.083V16.9754ZM13.6011 16.9754L13.4468 -23.291C2.73756 -23.2499 -7.51838 -18.9667 -15.0757 -11.3803L13.4517 17.0378L41.9792 45.4559C34.501 52.9628 24.3525 57.2012 13.7554 57.2418L13.6011 16.9754ZM13.4517 17.0378L-15.0757 -11.3803C-22.6331 -3.79383 -26.8768 6.47853 -26.8767 17.1877L13.3899 17.1874L53.6566 17.1871C53.6567 27.7841 49.4575 37.9489 41.9792 45.4559L13.4517 17.0378ZM13.3899 17.1874H-26.8767V17.7056H13.3899H53.6566V17.1874H13.3899ZM13.3899 17.7056L-26.8764 17.5512C-26.8972 22.9682 -25.8304 28.3342 -23.7392 33.3312L13.4061 17.7867L50.5514 2.24216C52.621 7.18779 53.6769 12.4986 53.6563 17.86L13.3899 17.7056ZM13.4061 17.7867L-23.7392 33.3312C-21.648 38.3285 -18.5749 42.8549 -14.7024 46.6423L13.4525 17.855L41.6074 -10.9322C45.4401 -7.1837 48.4816 -2.70382 50.5514 2.24216L13.4061 17.7867ZM13.4525 17.855L-14.9969 46.3513C-7.43456 53.9012 2.8067 58.1547 13.4933 58.1833L13.6011 17.9168L13.709 -22.3498C24.284 -22.3214 34.4184 -18.1123 41.9019 -10.6412L13.4525 17.855ZM13.6011 17.9168V58.1834H18.8447V17.9168V-22.3499H13.6011V17.9168ZM18.8447 17.9168L18.7022 58.1832C24.2681 58.2029 29.7767 57.0745 34.8845 54.8701L18.9288 17.8995L2.9731 -19.071C8.02777 -21.2525 13.4792 -22.3691 18.9872 -22.3497L18.8447 17.9168ZM18.9288 17.8995L34.8845 54.8701C39.9938 52.665 44.5932 49.4302 48.3958 45.3681L18.999 17.8502L-10.3977 -9.66773C-6.63472 -13.6877 -2.08308 -16.8888 2.9731 -19.071L18.9288 17.8995ZM18.999 17.8502L48.1543 45.6238C55.4837 37.9298 59.4941 27.6613 59.318 17.0348L19.0568 17.7022L-21.2043 18.3695C-21.3786 7.853 -17.4098 -2.30912 -10.1563 -9.92346L18.999 17.8502ZM19.0568 17.7022L59.318 17.0348C59.1418 6.4087 54.7936 -3.7213 47.213 -11.1684L18.9941 17.5561L-9.2247 46.2807C-16.7268 38.9107 -21.03 28.8856 -21.2043 18.3695L19.0568 17.7022ZM11.9946 7.32645L-16.4783 35.7993L-14.8595 37.418L13.6133 8.94517L42.0861 -19.5277L40.4674 -21.1464L11.9946 7.32645ZM13.6133 8.94517L-14.8595 -19.5277L-16.4742 -17.913L11.9986 10.5598L40.4715 39.0327L42.0861 37.418L13.6133 8.94517ZM11.9986 10.5598L40.4715 -17.913L38.8528 -19.5317L10.3799 8.94111L-18.0929 37.4139L-16.4742 39.0327L11.9986 10.5598ZM10.3799 8.94111L38.8528 37.4139L40.4674 35.7993L11.9946 7.32645L-16.4783 -21.1464L-18.0929 -19.5317L10.3799 8.94111Z\"\n fill=\"#00A3FF\" mask=\"url(#path-2-inside-1_1902_107186)\" />\n </svg>\n </div>\n <div class=\"message-content\">\n <div class=\"message-bubble\">\n <div [innerHTML]=\"parseMarkdown(msg.text)\"></div>\n <span class=\"msg-sender-tag\" *ngIf=\"msg.sender === 'user'\">{{ userInitials }}</span>\n </div>\n <div class=\"message-actions\" *ngIf=\"msg.sender === 'assistant' && msg.text\">\n <button class=\"btn-copy\" (click)=\"copyToClipboard(msg.text)\" title=\"Copy to clipboard\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"#667085\" stroke-width=\"1.67\">\n <path d=\"M13.3333 13.3333V16.6667C13.3333 17.5872 12.5872 18.3333 11.6667 18.3333H3.33333C2.41286 18.3333 1.66667 17.5872 1.66667 16.6667V8.33333C1.66667 7.41286 2.41286 6.66667 3.33333 6.66667H6.66667M8.33333 3.33333V11.6667C8.33333 12.5872 9.07953 13.3333 10 13.3333H16.6667C17.5872 13.3333 18.3333 12.5872 18.3333 11.6667V3.33333C18.3333 2.41286 17.5872 1.66667 16.6667 1.66667H10C9.07953 1.66667 8.33333 2.41286 8.33333 3.33333Z\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n </div>\n </div>\n <!-- Typing Indicator -->\n <div class=\"message-wrapper assistant\" *ngIf=\"isTyping\">\n <div class=\"message assistant\">\n <div class=\"message-avatar\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <rect width=\"24\" height=\"24\" rx=\"12\" fill=\"#EAF8FF\" />\n <path d=\"M15.9941 14.5561L15.4565 14.0185L9.663 8.225L11.3816 6.5064L11.7934 6.0938C11.8327 6.05395 11.8549 6.00032 11.8552 5.9428C11.855 5.91668 11.8494 5.88931 11.8387 5.86381C11.828 5.8383 11.8123 5.81517 11.7926 5.79572L11.38 5.38312L9.5574 3.55729L9.1448 3.14469C9.1253 3.12485 9.1021 3.10909 9.0764 3.09833C9.0508 3.08757 9.0232 3.08203 8.9954 3.08203C8.9676 3.08203 8.94 3.08757 8.9144 3.09833C8.8887 3.10909 8.8655 3.12485 8.8459 3.14469L8.4333 3.5581L6.1998 5.79166C6.18 5.81109 6.1642 5.83428 6.1535 5.85988C6.1427 5.88547 6.1372 5.91294 6.1372 5.9407C6.1372 5.96846 6.1427 5.99593 6.1535 6.02152C6.1642 6.04712 6.18 6.07031 6.1998 6.08974L8.3334 8.2242L2.5392 14.0185L2.004 14.5561C1.9643 14.5955 1.9418 14.6489 1.9414 14.7048C1.9416 14.7588 1.9622 14.8107 1.9991 14.8502C2.0187 14.8712 2.0425 14.8879 2.0689 14.8994C2.0953 14.9108 2.1238 14.9168 2.1526 14.9168H7.3645C7.4204 14.9166 7.474 14.8942 7.5136 14.8547C7.5531 14.8151 7.5754 14.7615 7.5757 14.7056V14.1874C7.5757 14.1313 7.5534 14.0775 7.5139 14.0378C7.4743 13.9981 7.4206 13.9756 7.3645 13.9754H3.9126L8.9978 8.8902L14.083 13.9754H10.6011C10.545 13.9756 10.4913 13.9981 10.4517 14.0378C10.4122 14.0775 10.3899 14.1313 10.3899 14.1874V14.7056C10.3898 14.7334 10.3953 14.761 10.4061 14.7867C10.4168 14.8123 10.4326 14.8356 10.4525 14.855C10.4919 14.8944 10.5454 14.9166 10.6011 14.9168H15.8447C15.8736 14.9169 15.9023 14.911 15.9288 14.8995C15.9554 14.8881 15.9793 14.8713 15.999 14.8502C16.037 14.8103 16.0577 14.7572 16.0568 14.7022C16.0559 14.6471 16.0334 14.5947 15.9941 14.5561ZM8.9946 4.32645L10.6133 5.94517L8.9986 7.5598L7.3799 5.94111L8.9946 4.32645Z\" fill=\"#00A3FF\"/>\n </svg>\n </div>\n <div class=\"message-content mt-3\">\n <div class=\"message-bubble typing\">\n <span class=\"dot\"></span><span class=\"dot\"></span><span class=\"dot\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Copy Feedback Toast -->\n <div class=\"copy-feedback-toast\" *ngIf=\"copyFeedback\">{{ copyFeedback }}</div>\n <!-- Input Area -->\n <div class=\"chat-input-area border-top\">\n <div class=\"chat-footer d-flex align-items-center justify-content-between\">\n <div class=\"input-wrapper d-flex align-items-center flex-grow-1\">\n <div class=\"plus-menu-wrap me-2\">\n <button class=\"btn-plus\" type=\"button\" (click)=\"togglePlusMenu()\" [class.open]=\"showPlusMenu\">/</button>\n <div class=\"plus-popup\" *ngIf=\"showPlusMenu\">\n <div class=\"plus-popup-section-label\">Model</div>\n <button class=\"plus-popup-item\" type=\"button\" *ngFor=\"let m of modelOptions\"\n [class.selected]=\"selectedModel === m.value\" (click)=\"selectModel(m.value); closePlusMenu()\">\n <span class=\"model-hint fw-bold text-dark fs-5\">{{ m.label | titlecase }}</span>\n <svg *ngIf=\"selectedModel === m.value\" class=\"check-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#009BF3\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\"/>\n </svg>\n </button>\n <div class=\"plus-popup-divider\"></div>\n <button class=\"plus-popup-item\" type=\"button\" (click)=\"closePlusMenu(); newChat()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#344054\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M12 20h9M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z\"/>\n </svg>\n <span>New Chat</span>\n </button>\n <button class=\"plus-popup-item\" type=\"button\" (click)=\"closePlusMenu(); toggleChatHistory()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#344054\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M12 8v4l3 3m6-3a9 9 0 1 1-18 0 9 9 0 0 1 18 0z\"/>\n </svg>\n <span>Chat History</span>\n </button>\n </div>\n </div>\n <input type=\"text\" [(ngModel)]=\"userMessage\" class=\"chat-input\" placeholder=\"Ask anything...\"\n (keyup.enter)=\"sendMessage()\" [disabled]=\"isTyping\">\n <button class=\"btn-history-inline\" *ngIf=\"!showChatHistory\" (click)=\"toggleChatHistory()\" title=\"Chat History\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#667085\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M12 8v4l3 3m6-3a9 9 0 1 1-18 0 9 9 0 0 1 18 0z\"/>\n </svg>\n </button>\n <button class=\"btn-send\" (click)=\"sendMessage()\" [disabled]=\"!userMessage.trim() || isTyping\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"></line>\n <polygon points=\"22 2 15 22 11 13 2 9 22 2\"></polygon>\n </svg>\n </button>\n </div>\n </div>\n </div>\n </div>\n <!-- Backdrop -->\n <div class=\"chat-history-backdrop\" *ngIf=\"showChatHistory\" (click)=\"toggleChatHistory()\"></div>\n <!-- Right Sidebar: Chat History -->\n <aside class=\"chat-history-sidebar border-start\" *ngIf=\"showChatHistory\">\n <div class=\"sidebar-header p-3 border-bottom d-flex justify-content-between align-items-center\">\n <h6 (click)=\"toggleChatHistory()\" class=\"mb-0 fw-bold cursor-pointer\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M10.8333 14.1673L15 10.0007L10.8333 5.83398M5 14.1673L9.16667 10.0007L5 5.83398\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg> Chat History\n </h6>\n </div>\n <div class=\"sidebar-search p-3 pb-0\">\n <div class=\"history-search-wrapper\">\n <i class=\"bi bi-search\"></i>\n <input type=\"text\" placeholder=\"Search chats..\" [(ngModel)]=\"searchText\">\n </div>\n </div>\n <div class=\"sidebar-content p-3 scrollbar-hidden\">\n <div class=\"text-center text-muted py-3\" *ngIf=\"isHistoryLoading\">Loading...</div>\n <div class=\"text-center text-muted py-3\" *ngIf=\"!isHistoryLoading && filteredHistory.length === 0\">No chats found</div>\n <div *ngFor=\"let chat of filteredHistory\" class=\"history-item\" [class.active]=\"selectedChatId === chat.session_id\"\n (click)=\"loadChat(chat.session_id)\">\n <div class=\"item-title text-truncate\">{{ chat.session_title }}</div>\n </div>\n </div>\n <div class=\"sidebar-footer p-3 mt-auto\">\n <button class=\"btn-new-chat w-100\" (click)=\"newChat()\">\n <i class=\"bi bi-plus-lg me-2\"></i> New Chat\n </button>\n </div>\n </aside>\n </div>\n</div>\n\n <!-- Conversations Count -->\n <div class=\"conversations-count mb-3 d-flex align-items-center flex-wrap gap-2\">\n <strong>{{ totalItems }} Total Conversations Found</strong>\n <span *ngIf=\"selectedCardId || selectedCardName\" class=\"active-filter-chip\">\n <span class=\"chip-label\">{{ selectedCardId || selectedCardName }}</span>\n <button class=\"chip-remove\" (click)=\"clearCardFilter()\" title=\"Remove filter\">&times;</button>\n </span>\n </div>\n\n <!-- Conversation Cards -->\n <div class=\"conversations-list\">\n\n <!-- Loader -->\n <ng-container *ngIf=\"isLoadingConversations\">\n <div class=\"conversation-card p-3\" *ngFor=\"let s of [1,2,3]\">\n <div class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- No Data -->\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column my-10\"\n *ngIf=\"!isLoadingConversations && displayedConversations.length === 0\">\n <img class=\"img-map\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\n <div class=\"nodata-title\">No data found</div>\n <div class=\"nodata-sub\">No cohorts has been created yet.<br>\n Please Create a cohort to view the dashboard.</div>\n <button class=\"btn btn-primary rounded-3 w-25 p-4 mt-3\" (click)=\"createCohort()\">\n <span class=\"fw-bold fs-4 mx-2 d-flex align-items-center justify-content-center\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n<path d=\"M10.0013 4.16699V15.8337M4.16797 10.0003H15.8346\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n <span class=\"fw-bold fs-4 d-flex align-items-center justify-content-center ms-2\">Create\n Cohorts</span>\n </span>\n </button>\n </div>\n\n <div class=\"conversation-card\" *ngFor=\"let c of displayedConversations; let mi = index\"\n [hidden]=\"isLoadingConversations\">\n\n <!-- Summary Row (always visible) -->\n <div class=\"conv-summary d-flex justify-content-between\" (click)=\"toggleConversation(c.audioId)\">\n <div class=\"conv-summary-left\">\n <div class=\"d-flex align-items-center gap-2 my-2\">\n <span class=\"conv-id m-0\">{{ c.audioId }}</span>\n </div>\n <div class=\"conv-meta-row my-2\">\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\n fill=\"none\">\n <path\n d=\"M4.08984 9.46777C3.93408 9.48707 3.77504 9.5 3.61328 9.5C3.51562 9.49999 3.41967 9.49448 3.3252 9.4873V14.2236C3.3252 14.9015 3.88652 15.4648 4.58984 15.4648H13.4111C14.1145 15.4648 14.6758 14.9015 14.6758 14.2236V9.48828C14.5827 9.49512 14.4878 9.5 14.3926 9.5C14.2297 9.49998 14.0691 9.48762 13.9111 9.46777V12.9824H4.08984V9.46777ZM13.9189 2.53613H4.08203C3.98145 2.53623 3.8913 2.58826 3.84473 2.66113V2.66211L2.26465 5.12988L2.24316 5.16309C1.63609 6.15653 2.22253 7.46491 3.34277 7.6123C3.43532 7.62358 3.52388 7.62988 3.61133 7.62988C4.18312 7.62975 4.68923 7.3838 5.04102 7.00195L5.40918 6.60156L5.77734 7.00293C6.12562 7.38334 6.63076 7.62988 7.20605 7.62988C7.7788 7.62982 8.28675 7.38306 8.63477 7.00293L12.5986 6.60059L12.9668 7.00293C13.3148 7.38307 13.8227 7.62982 14.3955 7.62988C14.4806 7.62988 14.5716 7.62357 14.6641 7.6123H14.6631C15.7899 7.46139 16.377 6.12516 15.7393 5.12988L14.1572 2.66211L14.1562 2.66113C14.1097 2.58826 14.0195 2.53619 13.9189 2.53613Z\"\n stroke=\"#667085\" />\n </svg> <span class=\"text-name\">Store:</span> <span class=\"name-val\">{{ c.storeName }}</span></span>\n <span class=\"meta-sep\"></span>\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"15\" viewBox=\"0 0 14 15\"\n fill=\"none\">\n <path\n d=\"M12.75 14.25V12.75C12.75 11.9544 12.4339 11.1913 11.8713 10.6287C11.3087 10.0661 10.5456 9.75 9.75 9.75H3.75C2.95435 9.75 2.19129 10.0661 1.62868 10.6287C1.06607 11.1913 0.75 11.9544 0.75 12.75V14.25M9.75 3.75C9.75 5.40685 8.40685 6.75 6.75 6.75C5.09315 6.75 3.75 5.40685 3.75 3.75C3.75 2.09315 5.09315 0.75 6.75 0.75C8.40685 0.75 9.75 2.09315 9.75 3.75Z\"\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg><span class=\"text-name\">Staff:</span> <span class=\"name-val\">{{ c.userName }}</span></span>\n <span class=\"meta-sep\"></span>\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\n fill=\"none\">\n <path\n d=\"M10.875 13.6875C10.35 13.6875 9.90625 13.5062 9.54375 13.1437C9.18125 12.7812 9 12.3375 9 11.8125C9 11.2875 9.18125 10.8438 9.54375 10.4813C9.90625 10.1188 10.35 9.9375 10.875 9.9375C11.4 9.9375 11.8438 10.1188 12.2063 10.4813C12.5688 10.8438 12.75 11.2875 12.75 11.8125C12.75 12.3375 12.5688 12.7812 12.2063 13.1437C11.8438 13.5062 11.4 13.6875 10.875 13.6875ZM3.75 16.6875C3.3375 16.6875 2.9845 16.5408 2.691 16.2472C2.3975 15.9537 2.2505 15.6005 2.25 15.1875V4.6875C2.25 4.275 2.397 3.922 2.691 3.6285C2.985 3.335 3.338 3.188 3.75 3.1875H4.5V1.6875H6V3.1875H12V1.6875H13.5V3.1875H14.25C14.6625 3.1875 15.0158 3.3345 15.3098 3.6285C15.6038 3.9225 15.7505 4.2755 15.75 4.6875V15.1875C15.75 15.6 15.6033 15.9532 15.3098 16.2472C15.0163 16.5413 14.663 16.688 14.25 16.6875H3.75ZM3.75 15.1875H14.25V7.6875H3.75V15.1875Z\"\n fill=\"#667085\" />\n </svg><span class=\"text-name\">Date:</span> <span class=\"name-val\">{{ c.date }}</span></span>\n <span class=\"meta-sep\"></span>\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_1849_13302)\">\n <path\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1849_13302\">\n <rect width=\"18\" height=\"18\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg><span class=\"text-name\">Timestamp:</span> <span class=\"name-val\">{{ c.time | date:'hh:mm a' }}</span></span>\n <span class=\"meta-sep\"></span>\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\n fill=\"none\">\n <path\n d=\"M6.875 2.15267C6.875 1.96481 6.94963 1.78464 7.08247 1.6518C7.21531 1.51896 7.39547 1.44434 7.58333 1.44434H10.4167C10.6045 1.44434 10.7847 1.51896 10.9175 1.6518C11.0504 1.78464 11.125 1.96481 11.125 2.15267C11.125 2.34053 11.0504 2.5207 10.9175 2.65354C10.7847 2.78637 10.6045 2.861 10.4167 2.861H9.70833V3.80545L9.70739 3.84417C10.9047 3.97536 12.0396 4.44553 12.9789 5.19945L12.9856 5.19378L13.6939 4.48545C13.7805 4.39221 13.8906 4.32404 14.0127 4.28814C14.1347 4.25224 14.2642 4.24993 14.3875 4.28144C14.5108 4.31296 14.6233 4.37715 14.7131 4.46724C14.803 4.55732 14.8669 4.66998 14.8981 4.79333C14.9295 4.91647 14.9273 5.04581 14.8915 5.16777C14.8558 5.28974 14.7879 5.39985 14.695 5.48656L13.9867 6.19489L13.981 6.2015C14.7302 7.13944 15.1994 8.26985 15.3345 9.46266C15.4696 10.6555 15.2652 11.8622 14.7448 12.9439C14.2244 14.0257 13.4091 14.9385 12.3928 15.5774C11.3765 16.2163 10.2004 16.5552 9 16.5552C7.79957 16.5552 6.62353 16.2163 5.60722 15.5774C4.59091 14.9385 3.77564 14.0257 3.25522 12.9439C2.73481 11.8622 2.5304 10.6555 2.66552 9.46266C2.80064 8.26985 3.2698 7.13944 4.019 6.2015L4.01334 6.19489L3.305 5.48656C3.17973 5.35231 3.11148 5.17466 3.11466 4.99107C3.11783 4.80747 3.19217 4.63229 3.322 4.50245C3.45185 4.37261 3.62703 4.29827 3.81062 4.2951C3.99422 4.29193 4.17187 4.36017 4.30611 4.48545L5.01445 5.19378L5.02106 5.19945C5.9601 4.4457 7.09472 3.97554 8.29167 3.84417V2.861H7.58333C7.39547 2.861 7.21531 2.78637 7.08247 2.65354C6.94963 2.5207 6.875 2.34053 6.875 2.15267ZM9 15.1388C10.3152 15.1386 11.5764 14.6161 12.5063 13.686C13.4361 12.756 13.9585 11.4947 13.9583 10.1795C13.9582 8.86434 13.4356 7.6031 12.5056 6.67323C11.5756 5.74337 10.3142 5.22104 8.99906 5.22117C7.6839 5.22129 6.42266 5.74386 5.49279 6.6739C4.56292 7.60395 4.0406 8.86529 4.04072 10.1804C4.04085 11.4956 4.56341 12.7568 5.49346 13.6867C6.4235 14.6166 7.68484 15.1389 9 15.1388ZM9.36739 8.811L10.6235 7.55489C10.6888 7.4872 10.7669 7.43321 10.8533 7.39604C10.9397 7.35888 11.0327 7.3393 11.1267 7.33843C11.2208 7.33757 11.3141 7.35545 11.4011 7.39103C11.4882 7.4266 11.5673 7.47916 11.6339 7.54563C11.7004 7.61211 11.753 7.69117 11.7887 7.77821C11.8243 7.86524 11.8423 7.9585 11.8415 8.05256C11.8408 8.14661 11.8213 8.23957 11.7842 8.326C11.7471 8.41244 11.6932 8.49062 11.6256 8.556L10.3694 9.81305C10.4252 10.023 10.4321 10.243 10.3895 10.4561C10.3468 10.6692 10.2559 10.8696 10.1236 11.0419C9.99127 11.2143 9.82117 11.354 9.62637 11.4502C9.43157 11.5465 9.21728 11.5967 9 11.5971C8.79949 11.5954 8.60163 11.5511 8.41953 11.4671C8.23743 11.3832 8.07524 11.2615 7.94369 11.1102C7.81215 10.9588 7.71426 10.7813 7.65649 10.5893C7.59873 10.3973 7.58241 10.1952 7.60863 9.99636C7.63484 9.79756 7.70299 9.6066 7.80855 9.43612C7.91412 9.26564 8.05469 9.11953 8.22097 9.00746C8.38725 8.89539 8.57543 8.81993 8.77307 8.78606C8.97071 8.75219 9.17328 8.76069 9.36739 8.811Z\"\n fill=\"#667085\" />\n </svg><span class=\"text-name\"> Duration:</span> <span class=\"name-val\">{{ formatDuration(c.duration) }}</span></span>\n <span class=\"meta-sep\"></span>\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path d=\"M9 1.5C6.23858 1.5 4 3.73858 4 6.5C4 10.25 9 16.5 9 16.5C9 16.5 14 10.25 14 6.5C14 3.73858 11.7614 1.5 9 1.5ZM9 8.75C7.75736 8.75 6.75 7.74264 6.75 6.5C6.75 5.25736 7.75736 4.25 9 4.25C10.2426 4.25 11.25 5.25736 11.25 6.5C11.25 7.74264 10.2426 8.75 9 8.75Z\" fill=\"#667085\"/>\n</svg><span class=\"text-name\"> Location:</span> <span class=\"name-val location-truncate\" [title]=\"c.location\">{{ c.location }}</span></span>\n\n </div>\n <div class=\"conv-excerpt my-2\">{{ c.audioDescription }}</div>\n <a *ngIf=\"c.eyeTestLink\" class=\"eye-test-link\" href=\"#\" (click)=\"$event.stopPropagation()\">\n View Eye Test <span>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M15 10.8333V15.8333C15 16.2754 14.8244 16.6993 14.5118 17.0118C14.1993 17.3244 13.7754 17.5 13.3333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V6.66667C2.5 6.22464 2.67559 5.80072 2.98816 5.48816C3.30072 5.17559 3.72464 5 4.16667 5H9.16667M12.5 2.5H17.5M17.5 2.5V7.5M17.5 2.5L8.33333 11.6667\"\n stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </a>\n </div>\n <div class=\"conv-toggle-btn text-nowrap\" (click)=\"$event.stopPropagation(); toggleConversation(c.audioId)\">\n <span>{{ openId === c.audioId ? 'View Less' : 'View More' }}</span>\n\n <!-- down arrow when closed -->\n <svg *ngIf=\"openId !== c.audioId\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\n viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M5.83203 10.8333L9.9987 15L14.1654 10.8333M5.83203 5L9.9987 9.16667L14.1654 5\" stroke=\"#667085\"\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n\n <!-- up arrow when open -->\n <svg *ngIf=\"openId === c.audioId\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\n viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M5.83203 10.8333L9.9987 15L14.1654 10.8333M5.83203 5L9.9987 9.16667L14.1654 5\" stroke=\"#667085\"\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" transform=\"rotate(180 10 10)\" />\n </svg>\n </div>\n </div>\n\n <!-- Expanded Body -->\n <div class=\"conv-body\" *ngIf=\"openId === c.audioId\">\n\n <!-- Detail Loading shimmer -->\n <ng-container *ngIf=\"c._detailLoading\">\n <div class=\"row loader d-flex justify-content-center align-items-center px-4 py-3\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- No data / error after load -->\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column my-6\"\n *ngIf=\"!c._detailLoading && (c._detailError || (c._detailLoaded && !c.conversationDetails?.audioSummary && c.metrics?.length === 0))\">\n <img class=\"img-map\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\n <div class=\"nodata-title\">No data found</div>\n <div class=\"nodata-sub\">No details available for this conversation</div>\n </div>\n\n <div class=\"conv-body-inner\" *ngIf=\"!c._detailLoading && !c._detailError\">\n\n <!-- Left: Recording + Summary + Insights -->\n <div class=\"conv-left\">\n\n <div class=\"recording-box mb-2\" [class.is-playing-box]=\"playingConvId === c.audioId\" *ngIf=\"c.audioUrl\">\n <div class=\"recording-title\">Conversation Recording</div>\n\n <!-- Waveform: per-conversation playing state -->\n <div class=\"waveform-bars\" [class.is-playing]=\"playingConvId === c.audioId\">\n <div class=\"wf-bar\" *ngFor=\"let h of waveformHeights; let i = index\" [style.height.px]=\"h\"\n [class.wf-bar--played]=\"(playbackStates[c.audioId]?.progress || 0) > i / waveformHeights.length\">\n </div>\n </div>\n\n <!-- Player controls -->\n <div class=\"player-row\">\n\n <!-- Play / Pause button with white outer ring -->\n <div class=\"play-btn-wrap\">\n <button class=\"play-btn-circle\" (click)=\"togglePlay(c.audioId)\">\n <!-- Play icon -->\n <svg *ngIf=\"playingConvId !== c.audioId\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"white\">\n <path d=\"M8 5v14l11-7z\" />\n </svg>\n <!-- Pause icon -->\n <svg *ngIf=\"playingConvId === c.audioId\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"white\">\n <path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\" />\n </svg>\n </button>\n </div>\n\n <!-- Progress bar + times -->\n <div class=\"player-progress w-100\">\n <div class=\"d-flex justify-content-between\">\n <span class=\"player-time start-time\">{{ playbackStates[c.audioId]?.currentTime || '0:00' }}</span>\n <span class=\"player-time end-time\">{{ playbackStates[c.audioId]?.totalTime || c.duration }}</span>\n </div>\n\n <div class=\"progress-track\" (click)=\"seekAudio($event, c.audioId)\" style=\"cursor: pointer;\">\n <div class=\"progress-fill\" [style.width.%]=\"(playbackStates[c.audioId]?.progress || 0) * 100\">\n </div>\n </div>\n\n </div>\n <audio [id]=\"'audio-' + c.audioId\" [src]=\"c.audioUrl\"\n preload=\"metadata\"\n (timeupdate)=\"onTimeUpdate(audioPlayer, c.audioId)\"\n (loadedmetadata)=\"onLoadedMetadata(audioPlayer, c.audioId, c.duration)\"\n (ended)=\"playingConvId = null\" #audioPlayer>\n </audio>\n <!-- <audio #audioPlayer (timeupdate)=\"onTimeUpdate(audioPlayer)\"\n (loadedmetadata)=\"onLoadedMetadata(audioPlayer)\">\n </audio> -->\n\n <!-- Mute / Unmute button -->\n <button class=\"mute-btn\" (click)=\"toggleMute()\" [title]=\"isMuted ? 'Unmute' : 'Mute'\">\n <!-- Volume on -->\n <svg *ngIf=\"!isMuted\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path\n d=\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\" />\n </svg>\n <!-- Volume muted -->\n <svg *ngIf=\"isMuted\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path\n d=\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z\" />\n </svg>\n </button>\n\n </div>\n </div>\n\n <!-- Tabs -->\n <div class=\"border-layer mb-2\">\n\n <div class=\"conv-tabs\">\n <button class=\"conv-tab\" [class.active]=\"activeTab[c.audioId] !== 'transcript'\"\n (click)=\"$event.stopPropagation(); setTab(c.audioId, 'summary')\">Summary</button>\n <button class=\"conv-tab\" [class.active]=\"activeTab[c.audioId] === 'transcript'\"\n (click)=\"$event.stopPropagation(); setTab(c.audioId, 'transcript')\">Transcript</button>\n </div>\n\n <div class=\"conv-body-text mt-2\">\n <p *ngIf=\"activeTab[c.audioId] !== 'transcript'\">\n {{ c.conversationDetails.audioSummary }}\n </p>\n <p *ngIf=\"activeTab[c.audioId] === 'transcript'\">\n {{ c.conversationDetails.transcription }}\n </p>\n </div>\n </div>\n\n <!-- AI Insights -->\n <div class=\"ai-insights-box\">\n <div class=\"ai-insights-header\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"36\" height=\"37\" viewBox=\"0 0 36 37\" fill=\"none\">\n <mask id=\"path-1-inside-1_1849_13384\" fill=\"white\">\n <path\n d=\"M29.5151 29.3227L28.6156 28.4232L18.9244 18.732L21.7993 15.8571L22.4882 15.167C22.5539 15.1003 22.5909 15.0106 22.5914 14.917C22.5912 14.8707 22.5818 14.8249 22.5639 14.7822C22.5459 14.7396 22.5197 14.7009 22.4868 14.6683L21.7966 13.9781L18.7478 10.9239L18.0576 10.2337C18.025 10.2005 17.9861 10.1742 17.9432 10.1562C17.9002 10.1382 17.8542 10.1289 17.8076 10.1289C17.7611 10.1289 17.715 10.1382 17.6721 10.1562C17.6292 10.1742 17.5903 10.2005 17.5576 10.2337L16.8674 10.9253L13.1312 14.6615C13.098 14.694 13.0717 14.7328 13.0537 14.7756C13.0357 14.8185 13.0265 14.8644 13.0265 14.9108C13.0265 14.9573 13.0357 15.0032 13.0537 15.0461C13.0717 15.0889 13.098 15.1277 13.1312 15.1602L16.7003 18.7307L7.00777 28.4232L6.11243 29.3227C6.04604 29.3884 6.00842 29.4778 6.00781 29.5713C6.0082 29.6616 6.04265 29.7485 6.10428 29.8145C6.13718 29.8496 6.17695 29.8777 6.22111 29.8968C6.26528 29.916 6.31291 29.9259 6.36106 29.9259H15.0795C15.173 29.9255 15.2627 29.8882 15.3289 29.822C15.395 29.7559 15.4324 29.6662 15.4327 29.5726V28.7058C15.4327 28.612 15.3955 28.522 15.3293 28.4556C15.2631 28.3891 15.1733 28.3516 15.0795 28.3512H9.30524L17.8117 19.8448L26.3182 28.3512H20.4937C20.3999 28.3516 20.31 28.3891 20.2438 28.4556C20.1776 28.522 20.1404 28.612 20.1404 28.7058V29.5726C20.1402 29.6192 20.1494 29.6653 20.1674 29.7083C20.1853 29.7512 20.2118 29.7901 20.245 29.8226C20.311 29.8885 20.4004 29.9256 20.4937 29.9259H29.2651C29.3134 29.9261 29.3613 29.9163 29.4057 29.8971C29.4502 29.8779 29.4901 29.8498 29.5232 29.8145C29.5867 29.7478 29.6214 29.6589 29.6199 29.5669C29.6184 29.4749 29.5807 29.3872 29.5151 29.3227ZM17.8063 12.2105L20.514 14.9183L17.8131 17.6193L15.1053 14.9115L17.8063 12.2105Z\" />\n </mask>\n <path\n d=\"M29.5151 29.3227L-18.1139 76.9516L-17.9024 77.1631L-17.6891 77.3727L29.5151 29.3227ZM28.6156 28.4232L76.2446 -19.2057V-19.2057L28.6156 28.4232ZM18.9244 18.732L-28.7045 -28.8969L-76.3335 18.732L-28.7046 66.361L18.9244 18.732ZM21.7993 15.8571L69.4283 63.4861L69.4518 63.4626L69.4753 63.4391L21.7993 15.8571ZM22.4882 15.167L70.1641 62.7489L70.3095 62.6032L70.454 62.4566L22.4882 15.167ZM22.5914 14.917L89.9481 15.2605L89.9498 14.9226L89.9481 14.5848L22.5914 14.917ZM22.4868 14.6683L-25.1422 62.2973L-24.9939 62.4456L-24.8447 62.5929L22.4868 14.6683ZM21.7966 13.9781L-25.8748 61.5647L-25.8536 61.5859L-25.8324 61.6071L21.7966 13.9781ZM18.7478 10.9239L66.4192 -36.6626L66.398 -36.6839L66.3768 -36.7051L18.7478 10.9239ZM18.0576 10.2337L-29.9803 57.4502L-29.7767 57.6574L-29.5713 57.8627L18.0576 10.2337ZM17.5576 10.2337L65.2334 57.8159L65.4152 57.6337L65.5956 57.4502L17.5576 10.2337ZM16.8674 10.9253L64.4964 58.5542L64.5198 58.5308L64.5432 58.5074L16.8674 10.9253ZM13.1312 14.6615L60.2907 62.7554L60.5266 62.5241L60.7602 62.2905L13.1312 14.6615ZM13.0265 14.9108H80.384H13.0265ZM13.1312 15.1602L60.7692 -32.4597L60.5312 -32.6979L60.2907 -32.9337L13.1312 15.1602ZM16.7003 18.7307L64.3293 66.3596L111.949 18.7397L64.3384 -28.8892L16.7003 18.7307ZM7.00777 28.4232L-40.6212 -19.2057L-40.6753 -19.1517L-40.7292 -19.0975L7.00777 28.4232ZM6.11243 29.3227L53.5203 77.1717L53.6855 77.0081L53.8494 76.8434L6.11243 29.3227ZM6.00781 29.5713L-61.3483 29.1316L-61.3507 29.496L-61.3491 29.8604L6.00781 29.5713ZM6.10428 29.8145L-43.1376 75.774L-43.1037 75.8103L-43.0699 75.8465L6.10428 29.8145ZM6.36106 29.9259L6.33973 97.2834L6.3504 97.2834H6.36106V29.9259ZM15.0795 29.9259V97.2834H15.2083L15.3371 97.283L15.0795 29.9259ZM15.4327 29.5726L82.7898 29.8302L82.7903 29.7014V29.5726H15.4327ZM15.4327 28.7058L-51.9248 28.7053V28.7058H15.4327ZM15.0795 28.3512L15.3375 -39.0058L15.2085 -39.0063H15.0795V28.3512ZM9.30524 28.3512L-38.3237 -19.2778L-153.31 95.7088H9.30524V28.3512ZM17.8117 19.8448L65.4407 -27.7842L17.8117 -75.4132L-29.8173 -27.7842L17.8117 19.8448ZM26.3182 28.3512V95.7088H188.934L73.9472 -19.2778L26.3182 28.3512ZM20.4937 28.3512V-39.0063H20.3646L20.2356 -39.0058L20.4937 28.3512ZM20.1404 28.7058H87.498V28.7053L20.1404 28.7058ZM20.1404 29.5726L87.4975 29.831L87.498 29.7018V29.5726H20.1404ZM20.245 29.8226L67.8348 -17.8455L67.5897 -18.0902L67.3422 -18.3323L20.245 29.8226ZM20.4937 29.9259L20.3133 97.2832L20.4035 97.2834H20.4937V29.9259ZM29.2651 29.9259L29.5034 -37.4312L29.3842 -37.4317H29.2651V29.9259ZM29.5232 29.8145L-19.2474 -16.6449L-19.4503 -16.4319L-19.6513 -16.2171L29.5232 29.8145ZM17.8063 12.2105L65.4353 -35.4184L17.8063 -83.0474L-29.8227 -35.4184L17.8063 12.2105ZM20.514 14.9183L68.143 62.5473L115.772 14.9183L68.143 -32.7107L20.514 14.9183ZM17.8131 17.6193L-29.8159 65.2483L17.813 112.877L65.442 65.2483L17.8131 17.6193ZM15.1053 14.9115L-32.5237 -32.7174L-80.1527 14.9115L-32.5237 62.5405L15.1053 14.9115ZM29.5151 29.3227L77.144 -18.3063L76.2446 -19.2057L28.6156 28.4232L-19.0133 76.0522L-18.1139 76.9516L29.5151 29.3227ZM28.6156 28.4232L76.2446 -19.2057L66.5534 -28.8969L18.9244 18.732L-28.7046 66.361L-19.0133 76.0522L28.6156 28.4232ZM18.9244 18.732L66.5534 66.361L69.4283 63.4861L21.7993 15.8571L-25.8297 -31.7718L-28.7045 -28.8969L18.9244 18.732ZM21.7993 15.8571L69.4753 63.4391L70.1641 62.7489L22.4882 15.167L-25.1878 -32.415L-25.8766 -31.7248L21.7993 15.8571ZM22.4882 15.167L70.454 62.4566C82.8622 49.8711 89.8579 32.9334 89.9481 15.2605L22.5914 14.917L-44.7653 14.5734C-44.6761 -2.91221 -37.7544 -19.6705 -25.4777 -32.1227L22.4882 15.167ZM22.5914 14.917L89.9481 14.5848C89.9042 5.67953 88.104 -3.13075 84.6494 -11.3412L22.5639 14.7822L-39.5216 40.9056C-42.9404 32.7805 -44.7219 24.0618 -44.7653 15.2492L22.5914 14.917ZM22.5639 14.7822L84.6494 -11.3412C81.1952 -19.5504 76.1554 -26.9976 69.8183 -33.2563L22.4868 14.6683L-24.8447 62.5929C-31.1159 56.3994 -36.1034 49.0295 -39.5216 40.9056L22.5639 14.7822ZM22.4868 14.6683L70.1158 -32.9606L69.4256 -33.6508L21.7966 13.9781L-25.8324 61.6071L-25.1422 62.2973L22.4868 14.6683ZM21.7966 13.9781L69.468 -33.6084L66.4192 -36.6626L18.7478 10.9239L-28.9236 58.5105L-25.8748 61.5647L21.7966 13.9781ZM18.7478 10.9239L66.3768 -36.7051L65.6866 -37.3953L18.0576 10.2337L-29.5713 57.8627L-28.8811 58.5529L18.7478 10.9239ZM18.0576 10.2337L66.0956 -36.9828C59.7945 -43.3934 52.2793 -48.486 43.9879 -51.9624L17.9432 10.1562L-8.10155 72.2747C-16.3072 68.8343 -23.7445 63.7945 -29.9803 57.4502L18.0576 10.2337ZM17.9432 10.1562L43.9879 -51.9624C35.697 -55.4385 26.7972 -57.2286 17.8076 -57.2286V10.1289V77.4865C8.91115 77.4865 0.103456 75.7149 -8.10155 72.2747L17.9432 10.1562ZM17.8076 10.1289V-57.2286C8.81786 -57.2286 -0.0819659 -55.4384 -8.37262 -51.9624L17.6721 10.1562L43.7168 72.2747C35.512 75.7148 26.7043 77.4865 17.8076 77.4865V10.1289ZM17.6721 10.1562L-8.37262 -51.9624C-16.6635 -48.4862 -24.1788 -43.3938 -30.4803 -36.9828L17.5576 10.2337L65.5956 57.4502C59.3594 63.7949 51.9219 68.8345 43.7168 72.2747L17.6721 10.1562ZM17.5576 10.2337L-30.1181 -37.3484L-30.8083 -36.6569L16.8674 10.9253L64.5432 58.5074L65.2334 57.8159L17.5576 10.2337ZM16.8674 10.9253L-30.7615 -36.7037L-34.4978 -32.9674L13.1312 14.6615L60.7602 62.2905L64.4964 58.5542L16.8674 10.9253ZM13.1312 14.6615L-34.0284 -33.4323C-40.4566 -27.129 -45.5632 -19.6068 -49.0494 -11.3058L13.0537 14.7756L75.1568 40.8571C71.7066 49.0725 66.6526 56.5171 60.2907 62.7554L13.1312 14.6615ZM13.0537 14.7756L-49.0494 -11.3058C-52.5351 -3.00584 -54.3311 5.90682 -54.3311 14.9108H13.0265H80.384C80.384 23.822 78.6066 32.6427 75.1568 40.8571L13.0537 14.7756ZM13.0265 14.9108H-54.3311C-54.3311 23.9148 -52.5352 32.8274 -49.0494 41.1275L13.0537 15.0461L75.1568 -11.0354C78.6067 -2.82096 80.384 5.99978 80.384 14.9108H13.0265ZM13.0537 15.0461L-49.0494 41.1275C-45.5631 49.4288 -40.4564 56.9509 -34.0284 63.254L13.1312 15.1602L60.2907 -32.9337C66.6524 -26.6956 71.7065 -19.2511 75.1568 -11.0354L13.0537 15.0461ZM13.1312 15.1602L-34.5069 62.7801L-30.9377 66.3506L16.7003 18.7307L64.3384 -28.8892L60.7692 -32.4597L13.1312 15.1602ZM16.7003 18.7307L-30.9287 -28.8983L-40.6212 -19.2057L7.00777 28.4232L54.6368 76.0522L64.3293 66.3596L16.7003 18.7307ZM7.00777 28.4232L-40.7292 -19.0975L-41.6246 -18.1981L6.11243 29.3227L53.8494 76.8434L54.7448 75.944L7.00777 28.4232ZM6.11243 29.3227L-41.2955 -18.5264C-54.0208 -5.91838 -61.2314 11.2185 -61.3483 29.1316L6.00781 29.5713L73.3639 30.011C73.2482 47.7372 66.1129 64.6952 53.5203 77.1717L6.11243 29.3227ZM6.00781 29.5713L-61.3491 29.8604C-61.2759 46.9123 -54.7721 63.3086 -43.1376 75.774L6.10428 29.8145L55.3461 -16.1451C66.8574 -3.81166 73.2923 12.4109 73.3647 29.2822L6.00781 29.5713ZM6.10428 29.8145L-43.0699 75.8465C-36.7393 82.6091 -29.0879 88.0015 -20.5883 91.6892L6.22111 29.8968L33.0305 -31.8955C41.4417 -28.2462 49.0137 -22.9099 55.2784 -16.2175L6.10428 29.8145ZM6.22111 29.8968L-20.5883 91.6892C-12.0905 95.3761 -2.92551 97.2805 6.33973 97.2834L6.36106 29.9259L6.38239 -37.4317C15.5513 -37.4287 24.621 -35.5441 33.0305 -31.8955L6.22111 29.8968ZM6.36106 29.9259V97.2834H15.0795V29.9259V-37.4317H6.36106V29.9259ZM15.0795 29.9259L15.3371 97.283C33.2059 97.2146 50.323 90.0859 62.9578 77.451L15.3289 29.822L-32.3001 -17.8069C-19.7976 -30.3095 -2.85977 -37.3635 14.8219 -37.4312L15.0795 29.9259ZM15.3289 29.822L62.9578 77.451C75.5938 64.815 82.7215 47.6975 82.7898 29.8302L15.4327 29.5726L-51.9243 29.3151C-51.8567 11.635 -44.8037 -5.30332 -32.3001 -17.8069L15.3289 29.822ZM15.4327 29.5726H82.7903V28.7058H15.4327H-51.9248V29.5726H15.4327ZM15.4327 28.7058L82.7903 28.7063C82.7904 10.7927 75.692 -6.39093 63.0497 -19.0819L15.3293 28.4556L-32.391 75.993C-44.9009 63.435 -51.925 46.4314 -51.9248 28.7053L15.4327 28.7058ZM15.3293 28.4556L63.0497 -19.0819C50.408 -31.7721 33.2521 -38.9372 15.3375 -39.0058L15.0795 28.3512L14.8214 95.7083C-2.90555 95.6404 -19.8818 88.5503 -32.391 75.993L15.3293 28.4556ZM15.0795 28.3512V-39.0063H9.30524V28.3512V95.7088H15.0795V28.3512ZM9.30524 28.3512L56.9342 75.9802L65.4407 67.4737L17.8117 19.8448L-29.8173 -27.7842L-38.3237 -19.2778L9.30524 28.3512ZM17.8117 19.8448L-29.8173 67.4737L-21.3108 75.9802L26.3182 28.3512L73.9472 -19.2778L65.4407 -27.7842L17.8117 19.8448ZM26.3182 28.3512V-39.0063H20.4937V28.3512V95.7088H26.3182V28.3512ZM20.4937 28.3512L20.2356 -39.0058C2.32124 -38.9372 -14.8348 -31.7723 -27.4765 -19.0819L20.2438 28.4556L67.9641 75.993C55.4548 88.5505 38.4785 95.6404 20.7517 95.7083L20.4937 28.3512ZM20.2438 28.4556L-27.4765 -19.0819C-40.1185 -6.39129 -47.2173 10.7922 -47.2171 28.7063L20.1404 28.7058L87.498 28.7053C87.4981 46.4319 80.4737 63.4354 67.9641 75.993L20.2438 28.4556ZM20.1404 28.7058H-47.2171V29.5726H20.1404H87.498V28.7058H20.1404ZM20.1404 29.5726L-47.2166 29.3143C-47.2514 38.3759 -45.4668 47.352 -41.9688 55.7109L20.1674 29.7083L82.3035 3.70562C85.7656 11.9786 87.5319 20.8625 87.4975 29.831L20.1404 29.5726ZM20.1674 29.7083L-41.9688 55.7109C-38.4705 64.0703 -33.33 71.642 -26.8521 77.9776L20.245 29.8226L67.3422 -18.3323C73.7535 -12.0618 78.8412 -4.56794 82.3035 3.70562L20.1674 29.7083ZM20.245 29.8226L-27.3447 77.4908C-14.6945 90.1202 2.43691 97.2353 20.3133 97.2832L20.4937 29.9259L20.6741 -37.4314C38.3639 -37.384 55.3166 -30.3431 67.8348 -17.8455L20.245 29.8226ZM20.4937 29.9259V97.2834H29.2651V29.9259V-37.4317H20.4937V29.9259ZM29.2651 29.9259L29.0267 97.283C38.3372 97.316 47.552 95.4284 56.0962 91.7409L29.4057 29.8971L2.71525 -31.9467C11.1706 -35.5959 20.2897 -37.4638 29.5034 -37.4312L29.2651 29.9259ZM29.4057 29.8971L56.0962 91.7409C64.643 88.0523 72.3369 82.6412 78.6977 75.8461L29.5232 29.8145L-19.6513 -16.2171C-13.3566 -22.9416 -5.74266 -28.2965 2.71525 -31.9467L29.4057 29.8971ZM29.5232 29.8145L78.2938 76.2738C90.5543 63.4034 97.2628 46.2265 96.9682 28.4506L29.6199 29.5669L-37.7284 30.6832C-38.02 13.0914 -31.3809 -3.9077 -19.2474 -16.6449L29.5232 29.8145ZM29.6199 29.5669L96.9682 28.4506C96.6736 10.6753 89.3999 -6.26998 76.7192 -18.7274L29.5151 29.3227L-17.6891 77.3727C-30.2385 65.0443 -37.4368 48.2744 -37.7284 30.6832L29.6199 29.5669ZM17.8063 12.2105L-29.8227 59.8395L-27.1149 62.5473L20.514 14.9183L68.143 -32.7107L65.4353 -35.4184L17.8063 12.2105ZM20.514 14.9183L-27.1149 -32.7107L-29.8159 -30.0097L17.8131 17.6193L65.442 65.2483L68.143 62.5473L20.514 14.9183ZM17.8131 17.6193L65.4421 -30.0097L62.7343 -32.7174L15.1053 14.9115L-32.5237 62.5405L-29.8159 65.2483L17.8131 17.6193ZM15.1053 14.9115L62.7343 62.5405L65.4353 59.8395L17.8063 12.2105L-29.8227 -35.4184L-32.5237 -32.7174L15.1053 14.9115Z\"\n fill=\"#00A3FF\" mask=\"url(#path-1-inside-1_1849_13384)\" />\n <path\n d=\"M26.2537 0.740234L26.6974 2.58437C26.9235 3.52457 27.4255 4.3977 28.1545 5.11862C28.8836 5.83954 29.8147 6.38366 30.8571 6.69791L31.8394 6.99391L30.8571 7.28992C29.8147 7.60417 28.8836 8.14828 28.1545 8.86921C27.4255 9.59013 26.9235 10.4633 26.6974 11.4035L26.2537 13.2476L25.81 11.4035C25.5839 10.4633 25.0819 9.59013 24.3528 8.86921C23.6238 8.14828 22.6927 7.60417 21.6503 7.28992L20.668 6.99391L21.6503 6.69791C22.6927 6.38366 23.6238 5.83954 24.3528 5.11862C25.0819 4.3977 25.5839 3.52457 25.81 2.58437L26.2537 0.740234Z\"\n fill=\"url(#paint0_linear_1849_13384)\" />\n <path\n d=\"M9.9244 9.51351L9.77279 8.86035L9.62117 9.51351C9.51252 9.98254 9.26666 10.4192 8.90739 10.7812C8.54812 11.1433 8.0876 11.4184 7.57042 11.58L7.37891 11.6398L7.57042 11.6995C8.0876 11.8611 8.54812 12.1363 8.90739 12.4983C9.26666 12.8603 9.51252 13.297 9.62117 13.766L9.77279 14.4192L9.9244 13.766C10.033 13.297 10.2789 12.8603 10.6382 12.4983C10.9975 12.1363 11.458 11.8611 11.9752 11.6995L12.1667 11.6398L11.9752 11.58C11.458 11.4184 10.9975 11.1433 10.6382 10.7812C10.2789 10.4192 10.033 9.98254 9.9244 9.51351Z\"\n fill=\"url(#paint1_linear_1849_13384)\" />\n <path opacity=\"0.6\"\n d=\"M7.68961 21.5624L7.50608 20.6758L7.32334 21.5631C7.27549 21.7943 7.16109 22.0112 6.99084 22.1935C6.82059 22.3758 6.60005 22.5175 6.34983 22.6054L5.91016 22.7603L6.34983 22.9153C6.6 23.0034 6.82045 23.1452 6.99056 23.3276C7.16067 23.51 7.27489 23.727 7.32255 23.9583L7.50608 24.8449L7.68881 23.9576C7.73667 23.7263 7.85107 23.5095 8.02131 23.3272C8.19156 23.1449 8.4121 23.0032 8.66232 22.9153L9.102 22.7603L8.66232 22.6054C8.41215 22.5173 8.19171 22.3755 8.0216 22.1931C7.85149 22.0107 7.73726 21.7937 7.68961 21.5624Z\"\n fill=\"url(#paint2_linear_1849_13384)\" />\n <defs>\n <linearGradient id=\"paint0_linear_1849_13384\" x1=\"23.46\" y1=\"13.9422\" x2=\"23.46\" y2=\"0.0451625\"\n gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#117FF5\" stop-opacity=\"0.2\" />\n <stop offset=\"1\" stop-color=\"#0591FF\" />\n </linearGradient>\n <linearGradient id=\"paint1_linear_1849_13384\" x1=\"15.7575\" y1=\"22.7574\" x2=\"15.7575\" y2=\"8.86035\"\n gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"white\" />\n <stop offset=\"1\" stop-color=\"#0591FF\" />\n </linearGradient>\n <linearGradient id=\"paint2_linear_1849_13384\" x1=\"5.91016\" y1=\"20.6758\" x2=\"9.102\" y2=\"20.6758\"\n gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#00A3FF\" />\n <stop offset=\"1\" stop-color=\"#33B5FF\" />\n </linearGradient>\n </defs>\n </svg>\n <span class=\"ai-insights-title text-dark\">{{ c.aiInsights.title }}</span>\n </div>\n <ul class=\"ai-insights-list bg-white my-4 p-4 rounded-lg\">\n <li *ngFor=\"let insight of c.aiInsights.summary\">\n <span class=\"insight-bullet-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#33B5FF\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n {{ insight }}\n </li>\n </ul>\n </div>\n\n </div>\n\n <!-- Right: Metrics -->\n <div class=\"conv-right\">\n <div class=\"metrics-panel\">\n <div class=\"metrics-title\">Metrics</div>\n\n <ng-container *ngFor=\"let m of c.metrics; let mi = index\">\n\n <!-- BOOLEAN_BASKET -->\n <ng-container *ngIf=\"m.type === 'BOOLEAN_BASKET'\">\n <div class=\"metric-section-label mb-1\">{{ m.name }}</div>\n <div class=\"metric-row-item\" *ngFor=\"let row of m.value\">\n <span class=\"metric-key\"><span class=\"dot\"></span>{{ row.name }}</span>\n <strong class=\"metric-val\">{{ row.score }}</strong>\n </div>\n <div class=\"metric-divider\"></div>\n </ng-container>\n\n <!-- NUMERIC_SCALAR -->\n <ng-container *ngIf=\"m.type === 'NUMERIC_SCALAR' || m.type === 'NUMERIC_ARRAY'\">\n <div class=\"metric-section-label mb-1\">{{ m.name }}</div>\n <div class=\"metric-row-item\" *ngFor=\"let row of m.value\">\n <span class=\"metric-key\">Total</span>\n <strong class=\"metric-val\">{{ row.Total }}</strong>\n </div>\n <div class=\"metric-row-item\" *ngFor=\"let row of m.value\">\n <span class=\"metric-key\">Avg</span>\n <strong class=\"metric-val\">{{ row.Avg }}</strong>\n </div>\n <div class=\"metric-divider\"></div>\n </ng-container>\n\n <!-- SUBJECTIVE -->\n <ng-container *ngIf=\"m.type === 'SUBJECTIVE'\">\n <div class=\"metric-section-label mb-1\">{{ m.name }}</div>\n <ul class=\"metric-bullet-list metric-bullet-list--text\">\n <li *ngFor=\"let row of m.value\">{{ row.reasoning }}</li>\n </ul>\n <div class=\"metric-divider\"></div>\n </ng-container>\n\n </ng-container>\n\n </div>\n </div>\n\n </div>\n </div>\n\n </div>\n </div>\n <lib-pagination *ngIf=\"totalItems > 0\" [itemsPerPage]=\"pageSize\" [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\"\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\n </div>\n</div>", styles: ["@charset \"UTF-8\";.audio-page{padding:24px;background-color:#f5f7fa}.audio-page .header-row-container{background:#fff;padding:14px 24px;border-radius:8px;border:1px solid #e8edf3}.audio-page .section-title{font-size:16px;font-weight:600;color:#1a2b4b}.audio-page .total-audio-label{font-size:14px;color:#555}.audio-page .total-audio-label strong{font-weight:700;color:#1a2b4b}.audio-page .cohort-dropdown{position:relative}.audio-page .cohort-dropdown .cohort-dropdown-trigger{display:flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid #D0D5DD;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;color:#344054;-webkit-user-select:none;user-select:none;transition:border-color .2s,background .2s;min-width:150px;justify-content:space-between}.audio-page .cohort-dropdown .cohort-dropdown-trigger svg{transition:transform .2s ease;flex-shrink:0}.audio-page .cohort-dropdown .cohort-dropdown-trigger svg.rotate{transform:rotate(180deg)}.audio-page .cohort-dropdown .cohort-dropdown-menu{position:absolute;top:calc(100% + 4px);left:0;z-index:999;min-width:180px;background:#fff;border:1px solid #D0D5DD;border-radius:8px;padding:6px;box-shadow:0 12px 16px -4px #10182814,0 4px 6px -2px #10182808}.audio-page .cohort-dropdown .cohort-dropdown-menu .cohort-option{padding:10px 12px;font-size:14px;color:#344054;border-radius:6px;cursor:pointer;transition:background .15s}.audio-page .cohort-dropdown .cohort-dropdown-menu .cohort-option:hover{background:#f9fafb}.audio-page .cohort-dropdown .cohort-dropdown-menu .cohort-option.selected{background:#eaf8ff;color:#00a3ff;font-weight:600}.audio-page .stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;overflow:hidden}.audio-page .stats-grid .cards-full-loader{grid-column:1/-1;min-height:120px;padding:24px}.audio-page .ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #eaecf0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.audio-page .stat-card{background:#fff;border-radius:12px;border:1px solid #EAECF0;box-shadow:0 1px 2px #1018280d;min-width:0;overflow:hidden}.audio-page .stat-card .stat-card-header{padding:16px 20px;border-bottom:1px solid #EAECF0;font-weight:600;font-size:17px;color:#101828}.audio-page .stat-card .stat-card-body{max-height:300px;overflow-y:auto;overflow-x:hidden}.audio-page .stat-card .stat-row{display:flex;align-items:center;padding:12px 0;border-bottom:1px solid #F2F4F7}.audio-page .stat-card .stat-row:last-child{border-bottom:none}.audio-page .stat-card .stat-row .stat-label{font-size:14px;font-weight:500;color:#344054;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-page .stat-card .stat-row .stat-values{display:flex;align-items:center;gap:8px;flex-shrink:0}.audio-page .stat-card .stat-row .stat-values .stat-number{font-size:14px;font-weight:700;color:#101828;min-width:24px;text-align:right}.audio-page .stat-card .stat-row .stat-values .stat-meta{font-size:12px;color:#1d2939;font-weight:400;margin-right:4px}.audio-page .stat-card .stat-row .stat-values .stat-score{font-size:14px;font-weight:700;color:#101828}.audio-page .stat-card .stat-row .stat-values .stat-score-label{font-size:12px;color:#1d2939;font-weight:400}.audio-page .stat-card .cohort-table{border-collapse:collapse;font-size:13px}.audio-page .stat-card .cohort-table thead tr{background:#f9fafb}.audio-page .stat-card .cohort-table th{padding:8px 10px;font-size:12px;font-weight:600;color:#667085;border-bottom:1px solid #EAECF0;white-space:nowrap}.audio-page .stat-card .cohort-table td{padding:8px 10px;color:#344054;border-bottom:1px solid #F2F4F7;vertical-align:middle;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-page .stat-card .cohort-table tbody tr:last-child td{border-bottom:none}.audio-page .stat-card .cohort-table tbody tr:hover{background:#f9fafb}.audio-page .stat-card .pitch-row,.audio-page .stat-card .subjective-row{display:flow;align-items:center;gap:0;padding:10px 0;border-bottom:1px solid #F2F4F7}.audio-page .stat-card .pitch-row:last-child,.audio-page .stat-card .subjective-row:last-child{border-bottom:none}.audio-page .stat-card .pitch-row .pitch-id,.audio-page .stat-card .subjective-row .pitch-id{font-weight:600;color:#101828;font-size:13px;flex:0 0 45%;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:8px}.audio-page .stat-card .pitch-row .pitch-desc,.audio-page .stat-card .subjective-row .pitch-desc{font-size:13px;color:#344054;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.audio-page .export-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 16px;border:1px solid #d0d7e2;border-radius:6px;background:#fff;font-size:14px;color:#344054;cursor:pointer}.audio-page .export-btn:hover{background:#f5f7fa}.audio-page .chat-section{text-align:center;padding:32px 0}.audio-page .chat-section .chat-title-group{margin-bottom:24px}.audio-page .chat-section .chat-title{font-size:32px;font-weight:700;color:#00a3ff;margin:0;display:flex;align-items:center;justify-content:center}.audio-page .chat-section .chat-title .tango-icon-wrap{display:flex;align-items:center;gap:8px}.audio-page .chat-section .chat-title .tango-icon-wrap svg{display:block}.audio-page .chat-section .chat-subtext{font-size:14px;color:#667085;font-weight:500;margin-top:4px}.audio-page .chat-section .btn-chat-history{background:#fff;border:1px solid #D0D5DD;border-radius:100px;padding:8px 16px;font-size:12px;font-weight:600;color:#344054;cursor:pointer;box-shadow:0 1px 2px #1018280d;transition:all .2s ease}.audio-page .chat-section .btn-chat-history:hover{background:#f9fafb;border-color:#98a2b3}.audio-page .chat-section .chat-input-wrapper{display:flex;align-items:center;background:#fff;border:1px solid #D0D5DD;border-radius:12px;padding:8px 12px;width:100%;max-width:600px;box-shadow:0 4px 10px #0000000d;position:relative}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap{position:relative;flex-shrink:0;margin-right:8px}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus{width:28px;height:28px;border-radius:50%;border:1.5px solid #D0D5DD;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#344054;font-size:16px;font-weight:600;line-height:1;transition:background .15s,border-color .15s}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus:hover,.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus.open{background:#f2f4f7;border-color:#009bf3;color:#009bf3}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup{position:absolute;bottom:calc(100% + 8px);left:0;background:#fff;border:1px solid #EAECF0;border-radius:12px;box-shadow:0 8px 24px #1018281f;padding:6px;min-width:210px;z-index:200;animation:popupFadeInAudio .15s ease-out}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-section-label{font-size:11px;font-weight:600;color:#98a2b3;text-transform:uppercase;letter-spacing:.5px;padding:6px 12px 4px}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;border-radius:8px;padding:9px 12px;font-size:13px;font-weight:500;color:#344054;cursor:pointer;text-align:left;transition:background .12s}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item .check-icon{margin-left:auto}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item.selected{background:#f0f9ff;color:#009bf3}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item:hover:not(.selected){background:#f9fafb;color:#101828}.audio-page .chat-section .chat-input-wrapper .model-version-tag{font-size:11px;font-weight:700;color:#009bf3;background:#eaf8ff;border:1px solid #B2E0FB;border-radius:6px;padding:2px 7px;white-space:nowrap;flex-shrink:0}.audio-page .chat-section .chat-input-wrapper .chat-input-field{flex:1;border:none;outline:none;font-size:14px;color:#101828;background:transparent}.audio-page .chat-section .chat-input-wrapper .chat-input-field::placeholder{color:#667085}.audio-page .chat-section .chat-input-wrapper .chat-input-actions{display:flex;align-items:center;gap:12px;color:#667085}.audio-page .chat-section .chat-input-wrapper .chat-input-actions .chat-icon-btn,.audio-page .chat-section .chat-input-wrapper .chat-input-actions .chat-send-btn{background:none;border:none;padding:4px;cursor:pointer;color:inherit;display:flex;align-items:center;justify-content:center;transition:color .2s ease}.audio-page .chat-section .chat-input-wrapper .chat-input-actions .chat-icon-btn:hover,.audio-page .chat-section .chat-input-wrapper .chat-input-actions .chat-send-btn:hover{color:#00a3ff}.audio-page input[type=text]:focus{box-shadow:none}.audio-page .ai-message-box{background:linear-gradient(135deg,#eaf8ff,#f0f9ff);border-radius:8px;padding:16px 20px}.audio-page .ai-message-box .ai-message-header{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:600;line-height:24px;color:#101828;margin-bottom:8px}.audio-page .ai-message-box .ai-message-header .ai-avatar-icon{font-size:20px;color:#3b7de5}.audio-page .ai-message-box .ai-message-body{font-weight:400;font-size:16px;line-height:24px;letter-spacing:0%;color:#344054;padding-left:28px}.audio-page .ai-message-box .ai-store-list{margin:8px 0 0;padding-left:20px}.audio-page .ai-message-box .ai-store-list li{margin-bottom:4px}.audio-page .conversations-count{font-size:15px;color:#1a2b4b;font-weight:600}.audio-page .active-filter-chip{display:inline-flex;align-items:center;gap:4px;background:#e8f0fe;border:1px solid #4a7fdd;border-radius:20px;padding:2px 10px 2px 12px;font-size:13px;font-weight:500;color:#1a2b4b}.audio-page .active-filter-chip .chip-label{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-page .active-filter-chip .chip-remove{background:none;border:none;cursor:pointer;font-size:16px;line-height:1;color:#4a7fdd;padding:0 0 0 2px}.audio-page .active-filter-chip .chip-remove:hover{color:#d32f2f}.audio-page .conversations-list{display:flex;flex-direction:column;gap:16px}.audio-page .conversation-card{background:#fff;border:1px solid #EAECF0;border-radius:12px;box-shadow:0 1px 2px #1018280d;overflow:hidden;transition:all .2s ease}.audio-page .conversation-card.is-expanded{border-color:#00a3ff;box-shadow:0 4px 12px #00a3ff14}.audio-page .conv-summary{padding:20px 24px;cursor:pointer}.audio-page .conv-summary .conv-id{font-size:16px;font-weight:700;color:#101828}.audio-page .conv-summary .conv-meta-row{display:flex;align-items:center;flex-wrap:wrap;gap:16px}.audio-page .conv-summary .conv-meta-row .meta-item{font-size:13px;font-weight:500;color:#667085;display:flex;align-items:center;gap:6px}.audio-page .conv-summary .conv-meta-row .meta-item i,.audio-page .conv-summary .conv-meta-row .meta-item svg{font-size:14px;color:#98a2b3;flex-shrink:0}.audio-page .conv-summary .conv-meta-row .meta-item .text-name{color:#98a2b3;font-weight:400}.audio-page .conv-summary .conv-meta-row .meta-item .name-val{color:#98a2b3;font-weight:600}.audio-page .conv-summary .conv-meta-row .meta-item .location-truncate{display:inline-block;max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.audio-page .conv-summary .conv-meta-row .meta-sep{width:1px;height:12px;background-color:#d0d5dd;margin:0 4px}.audio-page .conv-summary .conv-excerpt{font-size:14px;line-height:20px;color:#475467}.audio-page .conv-summary .eye-test-link{font-size:14px;font-weight:600;color:#00a3ff;text-decoration:none}.audio-page .conv-summary .eye-test-link:hover{text-decoration:underline}.audio-page .conv-summary .conv-toggle-btn{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:600;color:#667085}.audio-page .conv-summary .conv-toggle-btn svg{transition:transform .2s ease}.audio-page .conv-summary .conv-toggle-btn svg.rotate-180{transform:rotate(180deg)}.audio-page .conv-body{border-top:1px solid #EAECF0;background:#fcfcfd}.audio-page .conv-body-inner{position:relative;padding:24px 436px 24px 24px}.audio-page .conv-left{min-width:0}.audio-page .conv-right{position:absolute;top:24px;right:24px;bottom:24px;width:380px;display:flex;flex-direction:column;overflow-y:auto}.audio-page .recording-box{background:#fff;border:1px solid #EAECF0;border-radius:12px;padding:24px;box-shadow:0 1px 2px #1018280d}.audio-page .recording-box .recording-title{font-size:14px;font-weight:700;color:#101828;margin-bottom:24px}.audio-page .waveform-bars{position:relative;display:flex;align-items:center;gap:3px;height:72px;margin-bottom:14px;padding:4px 6px;border-radius:8px;transition:background .3s ease}.audio-page .waveform-bars:before{content:\"\";position:absolute;inset:0;border-radius:8px;background:#0a19371a;opacity:0;transition:opacity .3s ease;pointer-events:none;z-index:0}.audio-page .waveform-bars .wf-bar{position:relative;z-index:1;flex:1;border-radius:100px;min-height:4px;background:#d1e9ff;transform-origin:center;transition:background .1s}.audio-page .waveform-bars .wf-bar.wf-bar--played{background:#00a3ff}.audio-page .waveform-bars.is-playing .wf-bar{animation:wf-bounce .65s ease-in-out infinite}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(2n){animation-duration:.75s;animation-delay:.1s}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(3n){animation-duration:.5s;animation-delay:.22s}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(5n){animation-duration:.85s;animation-delay:.05s}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(7n){animation-duration:.42s;animation-delay:.18s}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(11n){animation-duration:.6s;animation-delay:.3s}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(13n){animation-duration:.7s;animation-delay:.08s}.audio-page .player-row{display:flex;align-items:center;gap:16px}.audio-page .player-row .play-btn-wrap{width:48px;height:48px;background:#00a3ff1a;border-radius:50%;display:flex;align-items:center;justify-content:center}.audio-page .player-row .play-btn-wrap .play-btn-circle{width:36px;height:36px;background:#00a3ff;border:none;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px;cursor:pointer;transition:background .2s ease}.audio-page .player-row .play-btn-wrap .play-btn-circle:hover{background:#0087d5}.audio-page .player-row .mute-btn{background:none;border:none;color:#667085;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center}.audio-page .player-row .mute-btn:hover{color:#101828}.audio-page .player-row .player-progress .progress-track{height:8px;background:#f2f4f7;border-radius:4px;overflow:hidden}.audio-page .player-row .player-progress .progress-track .progress-fill{height:100%;background:#00a3ff;border-radius:4px}.audio-page .player-row .player-progress .player-time{font-size:12px;font-weight:500;color:#667085}.audio-page .player-row .player-progress .player-time.start-time{color:#00a3ff}.audio-page .border-layer{background:#fff;border:1px solid #EAECF0;border-radius:12px;padding:24px}.audio-page .conv-tabs{display:flex;border-bottom:1px solid #EAECF0;gap:24px}.audio-page .conv-tab{background:none;border:none;padding:12px 0;font-size:14px;font-weight:600;color:#667085;cursor:pointer;position:relative;transition:color .2s ease}.audio-page .conv-tab.active{color:#00a3ff;background:#eaf8ff;padding:0 8px}.audio-page .conv-tab.active:after{content:\"\";position:absolute;bottom:-1px;left:0;right:0;height:2px;background:#00a3ff}.audio-page .conv-tab:hover:not(.active){color:#344054}.audio-page .conv-body-text{font-size:14px;line-height:24px;color:#475467}.audio-page .ai-insights-box{background:#f0f9ff;border:1px solid #B9E6FE;border-radius:12px;padding:20px;margin-top:20px}.audio-page .ai-insights-box .ai-insights-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}.audio-page .ai-insights-box .ai-insights-header .ai-icon-badge{width:32px;height:32px;background:#00a3ff;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.audio-page .ai-insights-box .ai-insights-header .ai-icon-badge svg{display:block}.audio-page .ai-insights-box .ai-insights-header .ai-insights-title{font-size:18px;font-weight:700;color:#101828}.audio-page .ai-insights-list{list-style:none;padding:0;margin:0}.audio-page .ai-insights-list li{display:flex;align-items:flex-start;gap:12px;font-size:14px;line-height:20px;color:#344054;margin-bottom:12px}.audio-page .ai-insights-list li:last-child{margin-bottom:0}.audio-page .ai-insights-list li .insight-bullet-icon{flex-shrink:0;margin-top:2px;color:#00a3ff}.audio-page .ai-insights-list li .insight-bullet-icon svg{display:block}.audio-page .metrics-panel{background:#fff;border:1px solid #EAECF0;border-radius:12px;padding:24px;box-shadow:0 1px 2px #1018280d;flex:1;overflow-y:auto}.audio-page .metrics-panel .metrics-title{font-size:16px;font-weight:700;color:#101828;border-bottom:1px solid #F2F4F7;padding-bottom:12px;margin-bottom:16px}.audio-page .metrics-panel .metric-row-item{display:flex;justify-content:space-between;align-items:center;padding:8px 0}.audio-page .metrics-panel .metric-row-item .metric-key{font-size:14px;font-weight:500;color:#475467;text-align:left;flex:1;display:flex;align-items:center;gap:8px}.audio-page .metrics-panel .metric-row-item .metric-key .dot:before{content:\"\\2022\";color:#000;font-size:18px}.audio-page .metrics-panel .metric-row-item .metric-val{font-size:14px;font-weight:700}.audio-page .metrics-panel .metric-row-item .metric-val.text-success{color:#12b76a}.audio-page .metrics-panel .metric-row-item .metric-val.text-primary{color:#00a3ff}.audio-page .metrics-panel .metric-divider{height:1px;background-color:#f2f4f7;margin:12px 0}.audio-page .metrics-panel .metric-section-label{font-size:15px;font-weight:600;color:#191919;letter-spacing:.5px}.audio-page .metrics-panel .metric-bullet-list li{display:flex;align-items:center;width:100%}.audio-page .metrics-panel .metric-bullet-list{list-style:none;padding:0;margin:0}.audio-page .metrics-panel .metric-bullet-list li{font-size:14px;color:#475467;display:flex;align-items:center;gap:8px;margin-bottom:4px}.audio-page .metrics-panel .metric-bullet-list li:before{content:\"\\2022\";color:#000;font-size:18px;margin-right:4px}.audio-page .metrics-panel .metric-bullet-list li .metric-pct{font-weight:700;color:#101828;margin-left:auto}.audio-page .metrics-panel .metric-bullet-list--text li{justify-content:flex-start}.audio-page .metrics-panel .metric-bullet-list--text li:before{margin-right:8px}.audio-page .pagination-row{display:flex;justify-content:center;margin-top:32px;padding-bottom:40px}.audio-page .pagination-row .pagination-list{display:flex;list-style:none;padding:0;gap:8px}.audio-page .pagination-row .pagination-list .page-item{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid #D0D5DD;background:#fff;font-size:14px;font-weight:600;color:#344054;cursor:pointer;transition:all .2s ease}.audio-page .pagination-row .pagination-list .page-item:hover{background:#f9fafb}.audio-page .pagination-row .pagination-list .page-item.active{background:#f0f9ff;border-color:#00a3ff;color:#00a3ff}.sparkle{font-size:10px;animation:twinkle 1.5s infinite ease-in-out}.chat-history-overlay .chat-history-session-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-radius:8px;cursor:pointer;margin-bottom:6px;border:1px solid #EAECF0;transition:background .15s}.chat-history-overlay .chat-history-session-item .session-title{font-size:14px;font-weight:500;color:#344054;flex:1;margin-right:8px}.chat-history-overlay .chat-history-msg.user{background:#f0f9ff;color:#101828;align-self:flex-end;border-radius:10px 10px 0}.chat-thread-header{display:flex;justify-content:flex-end;margin-bottom:8px}.chat-thread-header .btn-new-chat{display:flex;align-items:center;gap:6px;padding:6px 14px;background:#fff;border:1px solid #D0D5DD;border-radius:8px;font-size:13px;font-weight:600;color:#344054;cursor:pointer;transition:background .15s,border-color .15s}.chat-thread-header .btn-new-chat:hover{background:#f2f4f7;border-color:#009bf3;color:#009bf3}.chat-thread{border:1px solid #EAECF0;border-radius:12px;background:#fff;overflow:hidden}.chat-thread .chat-thread-messages{display:flex;flex-direction:column;gap:12px;max-height:350px;overflow-y:auto;padding:16px}.chat-thread .chat-thread-input{border-top:1px solid #EAECF0;padding:12px 16px;background:#fafbfc;display:flex;justify-content:center}.chat-msg{display:flex}.chat-msg.chat-msg--user{justify-content:flex-end}.chat-msg.chat-msg--ai{justify-content:flex-start}.chat-msg-bubble{max-width:80%;padding:12px 16px;border-radius:12px;font-size:14px;line-height:1.6}.chat-msg-bubble.chat-msg-bubble--user{background:#009af3;color:#fff;border-radius:12px 12px 0}.chat-msg-bubble.chat-msg-bubble--ai{background:linear-gradient(135deg,#eaf8ff,#f0f9ff);color:#344054;border-radius:12px 12px 12px 0;text-align:left}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-header{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:#101828;margin-bottom:8px}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-header .ai-avatar-icon{display:flex;align-items:center}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-body{font-size:14px;line-height:1.6;padding-left:30px}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-actions{display:flex;justify-content:flex-end;padding-top:6px}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-actions .btn-copy{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid #EAECF0;border-radius:6px;background:#fff;cursor:pointer;transition:background .15s,border-color .15s}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-actions .btn-copy:hover{background:#f2f4f7;border-color:#009bf3}@keyframes popupFadeInAudio{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}:host ::ng-deep .audio-tooltip .tooltip-inner{background:#1d2939;color:#fff;font-size:12px;font-weight:400;line-height:1.5;max-width:360px;white-space:normal;word-break:break-all;padding:8px 12px;border-radius:8px;text-align:left}:host ::ng-deep .audio-tooltip .tooltip-arrow:before{border-top-color:#1d2939}.transcript-page{padding:24px;background-color:#f5f7fa}.transcript-page .transcript-header-row{background:#fff;padding:14px 24px;border-radius:8px;border:1px solid #e8edf3}.transcript-page .section-title{font-size:16px;font-weight:600;color:#1a2b4b}.transcript-page .cohort-dropdown{position:relative}.transcript-page .cohort-dropdown .cohort-dropdown-trigger{display:flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid #D0D5DD;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;color:#344054;-webkit-user-select:none;user-select:none;transition:border-color .2s,background .2s;min-width:150px;justify-content:space-between}.transcript-page .cohort-dropdown .cohort-dropdown-trigger svg{transition:transform .2s ease;flex-shrink:0}.transcript-page .cohort-dropdown .cohort-dropdown-trigger svg.rotate{transform:rotate(180deg)}.transcript-page .cohort-dropdown .cohort-dropdown-menu{position:absolute;top:calc(100% + 4px);left:0;background:#fff;border:1px solid #D0D5DD;border-radius:8px;box-shadow:0 4px 16px #0000001a;z-index:200;min-width:180px;overflow:hidden}.transcript-page .cohort-dropdown .cohort-option{padding:10px 16px;font-size:14px;color:#344054;cursor:pointer;transition:background .15s}.transcript-page .cohort-dropdown .cohort-option:hover{background:#f0f4ff}.transcript-page .cohort-dropdown .cohort-option.selected{background:#e8f0fe;color:#1a73e8;font-weight:600}.transcript-page .transcript-search-wrap{position:relative;display:flex;align-items:center}.transcript-page .transcript-search-wrap .search-icon{position:absolute;left:10px;pointer-events:none}.transcript-page .transcript-search-wrap .transcript-search-input{height:38px;padding:0 32px 0 34px;border:1px solid #D0D5DD;border-radius:8px;font-size:14px;color:#344054;width:260px;outline:none;transition:border-color .2s}.transcript-page .transcript-search-wrap .transcript-search-input:focus{border-color:#84adff}.transcript-page .transcript-search-wrap .transcript-search-input::placeholder{color:#98a2b3}.transcript-page .transcript-search-wrap .search-clear-btn{position:absolute;right:8px;background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center}.transcript-page .btn-search{height:38px;padding:0 16px;background:#1a73e8;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:background .2s}.transcript-page .btn-search:hover{background:#1558b0}.transcript-page .export-btn{height:38px;display:flex;align-items:center}.transcript-page .export-btn .export-text{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:500}.transcript-page .conversation-area{border:1px solid #e8edf3}.transcript-page .conversations-count{font-size:14px;color:#344054}.transcript-page .conversation-card{border:1px solid #e8edf3;border-radius:10px;margin-bottom:12px;overflow:hidden;background:#fff}.transcript-page .conversation-card .conv-summary{padding:16px 20px;cursor:pointer;transition:background .15s}.transcript-page .conversation-card .conv-summary:hover{background:#f8fafc}.transcript-page .conversation-card .conv-summary-left{flex:1;min-width:0}.transcript-page .conversation-card .conv-id{font-size:13px;font-weight:600;color:#344054;background:#f0f4ff;border-radius:4px;padding:2px 8px}.transcript-page .conversation-card .conv-meta-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.transcript-page .conversation-card .meta-item{display:flex;align-items:center;gap:4px;font-size:13px;color:#667085}.transcript-page .conversation-card .meta-item .text-name{color:#98a2b3}.transcript-page .conversation-card .meta-item .name-val{color:#344054;font-weight:500}.transcript-page .conversation-card .meta-item .location-truncate{display:inline-block;max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.transcript-page .conversation-card .meta-sep{width:4px;height:4px;background:#d0d5dd;border-radius:50%;display:inline-block}.transcript-page .conversation-card .conv-excerpt{font-size:13px;color:#667085;line-height:1.5}.transcript-page .conversation-card .conv-toggle-btn{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:#344054;cursor:pointer;padding-left:16px;flex-shrink:0;align-self:flex-start;margin-top:16px}.transcript-page .conversation-card .conv-body{border-top:1px solid #e8edf3}.transcript-page .conversation-card .transcript-content .transcript-section{margin-bottom:20px}.transcript-page .conversation-card .transcript-content .transcript-section:last-child{margin-bottom:0}.transcript-page .conversation-card .transcript-content .transcript-section-title{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:#344054;margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid #f0f4ff}.transcript-page .conversation-card .transcript-content .transcript-summary-text{font-size:14px;color:#475467;line-height:1.7;margin:0}.transcript-page .conversation-card .transcript-content .transcript-text{font-size:14px;color:#475467;line-height:1.8;white-space:pre-wrap;background:#f8fafc;border-radius:8px;padding:16px;border:1px solid #e8edf3;max-height:400px;overflow-y:auto}.transcript-page .chat-section{text-align:center;padding:10px 0}.transcript-page .chat-section .chat-title{font-size:32px;font-weight:700;color:#00a3ff;margin:0;display:flex;align-items:center;justify-content:center}.transcript-page .chat-section .sparkle{display:inline-flex;align-items:center;margin-left:6px}.transcript-page .chat-section .chat-subtext{font-size:14px;color:#667085;font-weight:500;margin-top:4px}.transcript-page .chat-section .chat-input-wrapper{display:flex;align-items:center;background:#fff;border:1px solid #D0D5DD;border-radius:12px;padding:8px 12px;width:100%;max-width:600px;box-shadow:0 4px 10px #0000000d;position:relative}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap{position:relative;flex-shrink:0;margin-right:8px}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus{width:28px;height:28px;border-radius:50%;border:1.5px solid #D0D5DD;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#344054;font-size:16px;font-weight:600;transition:background .15s,border-color .15s}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus:hover,.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus.open{background:#f2f4f7;border-color:#009bf3;color:#009bf3}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup{position:absolute;bottom:calc(100% + 8px);left:0;background:#fff;border:1px solid #EAECF0;border-radius:12px;box-shadow:0 8px 24px #1018281f;padding:6px;min-width:210px;z-index:200;animation:popupFadeInTranscript .15s ease-out}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-section-label{font-size:11px;font-weight:600;color:#98a2b3;text-transform:uppercase;letter-spacing:.5px;padding:6px 12px 4px}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;border-radius:8px;padding:9px 12px;font-size:13px;font-weight:500;color:#344054;cursor:pointer;text-align:left;transition:background .12s}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item .check-icon{margin-left:auto}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item.selected{background:#f0f9ff;color:#009bf3}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item:hover:not(.selected){background:#f9fafb;color:#101828}.transcript-page .chat-section .chat-input-wrapper .chat-input-field{flex:1;border:none;outline:none;font-size:14px;color:#101828;background:transparent}.transcript-page .chat-section .chat-input-wrapper .chat-input-field::placeholder{color:#667085}.transcript-page .chat-section .chat-input-wrapper .chat-input-actions{display:flex;align-items:center;gap:12px;color:#667085}.transcript-page .chat-section .chat-input-wrapper .chat-input-actions .chat-icon-btn,.transcript-page .chat-section .chat-input-wrapper .chat-input-actions .chat-send-btn{background:none;border:none;padding:4px;cursor:pointer;color:inherit;display:flex;align-items:center;justify-content:center;transition:color .2s ease}.transcript-page .chat-section .chat-input-wrapper .chat-input-actions .chat-icon-btn:hover,.transcript-page .chat-section .chat-input-wrapper .chat-input-actions .chat-send-btn:hover{color:#00a3ff}.transcript-page input[type=text]:focus{box-shadow:none}.transcript-page .chat-messages-area{flex:1;padding:24px 16px;overflow-y:auto;display:flex;flex-direction:column;gap:24px;max-height:650px}.transcript-page .chat-messages-area.scrollbar-hidden{scrollbar-width:none}.transcript-page .chat-messages-area.scrollbar-hidden::-webkit-scrollbar{display:none}.transcript-page .message-wrapper{display:flex;flex-direction:column;max-width:85%}.transcript-page .message-wrapper.user{align-self:flex-end}.transcript-page .message-wrapper.user .message{flex-direction:row-reverse}.transcript-page .message-wrapper.user .message .message-bubble{background:#fff;color:#101828;border-radius:12px 12px 0;position:relative;padding-right:40px}.transcript-page .message{display:flex;gap:12px}.transcript-page .message.assistant{align-self:flex-start}.transcript-page .message.assistant .message-avatar{flex-shrink:0;margin-top:14px}.transcript-page .message.assistant .message-content{display:flex;flex-direction:column;gap:8px}.transcript-page .message.assistant .message-bubble{color:#101828;border-radius:12px 12px 12px 0}.transcript-page .message.assistant .message-bubble.typing{display:flex;align-items:center;gap:4px;padding:12px 20px}.transcript-page .message.assistant .message-bubble.typing .dot{width:6px;height:6px;background:#00a3ff;border-radius:50%;display:inline-block;animation:typingAnimation 1.4s infinite ease-in-out both}.transcript-page .message.assistant .message-bubble.typing .dot:nth-child(1){animation-delay:-.32s}.transcript-page .message.assistant .message-bubble.typing .dot:nth-child(2){animation-delay:-.16s}.transcript-page .message .message-bubble{padding:6px;font-size:15px;line-height:24px;position:relative}.transcript-page .message .message-bubble p{margin:0 0 6px;white-space:pre-wrap}.transcript-page .message .message-bubble p:last-child{margin-bottom:0}.transcript-page .message .message-bubble h3,.transcript-page .message .message-bubble h4,.transcript-page .message .message-bubble h5{margin:8px 0 4px;font-weight:700;line-height:1.4}.transcript-page .message .message-bubble h3{font-size:17px}.transcript-page .message .message-bubble h4{font-size:16px}.transcript-page .message .message-bubble h5{font-size:15px}.transcript-page .message .message-bubble strong{font-weight:700}.transcript-page .message .message-bubble em{font-style:italic}.transcript-page .message .message-bubble ul{margin:4px 0;padding-left:18px}.transcript-page .message .message-bubble ul li{margin-bottom:2px}.transcript-page .message .message-bubble .msg-sender-tag{position:absolute;right:6px;bottom:16px;background:#eaf8ff;color:#00a3ff;font-size:10px;font-weight:700;padding:2px 8px;border-radius:50%}.transcript-page .message .message-actions{display:flex;gap:8px}.transcript-page .message .message-actions .btn-copy{background:none;border:none;padding:4px;cursor:pointer;color:#667085;display:flex;align-items:center;justify-content:center;opacity:.6;transition:opacity .2s}.transcript-page .message .message-actions .btn-copy:hover{opacity:1}.transcript-page .copy-feedback-toast{position:fixed;bottom:120px;left:50%;transform:translate(-50%);background:#101828;color:#fff;padding:8px 16px;border-radius:8px;font-size:14px;font-weight:500;z-index:1000;box-shadow:0 4px 12px #0000001a;animation:fadeInOut 2s ease-in-out forwards}.transcript-page .chat-footer{padding:12px 16px;background:#fff}.transcript-page .chat-footer .input-wrapper{display:flex;align-items:center;background:#fff;border:1px solid #D0D5DD;border-radius:8px;padding:8px 20px;box-shadow:0 1px 2px #1018280d}.transcript-page .chat-footer .input-wrapper .chat-input{flex:1;border:none;outline:none;font-size:15px;color:#101828}.transcript-page .chat-footer .input-wrapper .btn-send{background:none;border:none;color:#00a3ff;cursor:pointer;display:flex;align-items:center;transition:transform .2s}.transcript-page .chat-footer .input-wrapper .btn-send:hover{transform:scale(1.1)}.transcript-page .recording-box{background:#fff;border:1px solid #EAECF0;border-radius:12px;padding:24px;box-shadow:0 1px 2px #1018280d}.transcript-page .recording-box .recording-title{font-size:14px;font-weight:700;color:#101828;margin-bottom:24px}@keyframes wf-bounce{0%{transform:scaleY(1)}50%{transform:scaleY(.28)}to{transform:scaleY(.75)}}.transcript-page .waveform-bars{position:relative;display:flex;align-items:center;gap:2px;height:72px;margin-bottom:14px;padding:4px 6px;border-radius:8px;transition:background .3s ease}.transcript-page .waveform-bars:before{content:\"\";position:absolute;inset:0;border-radius:8px;background:#0a19371a;opacity:0;transition:opacity .3s ease;pointer-events:none;z-index:0}.transcript-page .waveform-bars .wf-bar{position:relative;z-index:1;flex:1 1 0;border-radius:100px;min-height:4px;background:#d1e9ff;transform-origin:center;transition:background .1s}.transcript-page .waveform-bars .wf-bar.wf-bar--played{background:#00a3ff}.transcript-page .waveform-bars.is-playing .wf-bar{animation:wf-bounce .65s ease-in-out infinite}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(2n){animation-duration:.75s;animation-delay:.1s}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(3n){animation-duration:.5s;animation-delay:.22s}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(5n){animation-duration:.85s;animation-delay:.05s}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(7n){animation-duration:.42s;animation-delay:.18s}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(11n){animation-duration:.6s;animation-delay:.3s}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(13n){animation-duration:.7s;animation-delay:.08s}.transcript-page .player-row{display:flex;align-items:center;gap:16px}.transcript-page .player-row .play-btn-wrap{width:48px;height:48px;background:#00a3ff1a;border-radius:50%;display:flex;align-items:center;justify-content:center}.transcript-page .player-row .play-btn-wrap .play-btn-circle{width:36px;height:36px;background:#00a3ff;border:none;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s ease}.transcript-page .player-row .play-btn-wrap .play-btn-circle:hover{background:#0087d5}.transcript-page .player-row .mute-btn{background:none;border:none;color:#667085;cursor:pointer;display:flex;align-items:center;justify-content:center}.transcript-page .player-row .mute-btn:hover{color:#101828}.transcript-page .player-row .player-progress .progress-track{height:8px;background:#f2f4f7;border-radius:4px;overflow:hidden}.transcript-page .player-row .player-progress .progress-track .progress-fill{height:100%;background:#00a3ff;border-radius:4px}.transcript-page .player-row .player-progress .player-time{font-size:12px;font-weight:500;color:#667085}.transcript-page .player-row .player-progress .player-time.start-time{color:#00a3ff}.transcript-page .shimmer{width:100%}.transcript-page .shimmer .wrapper{padding:8px}.transcript-page .shimmer .wrapper .stroke{height:12px;border-radius:4px;background:#e0e0e0;margin-bottom:8px}.transcript-page .shimmer .wrapper .stroke.title{width:60%}.transcript-page .shimmer .wrapper .stroke.link{width:40%}.transcript-page .shimmer .wrapper .stroke.description{width:80%}.transcript-page .shimmer .wrapper .stroke.animate{animation:shimmer 1.4s infinite linear;background:linear-gradient(to right,#eee 8%,#ddd 18%,#eee 33%);background-size:800px 104px}@keyframes shimmer{0%{background-position:-468px 0}to{background-position:468px 0}}.transcript-page .nodata-title{font-size:15px;font-weight:600;color:#344054;margin-top:8px}.transcript-page .nodata-sub{font-size:13px;color:#98a2b3;margin-top:4px;text-align:center}.chat-history-backdrop{position:fixed;inset:0;z-index:999;background:transparent}.chat-history-overlay{position:fixed;top:0;right:0;height:100vh;width:340px;background:#fff;box-shadow:-4px 0 24px #0000001f;z-index:1000;display:flex;flex-direction:column;transform:translate(100%);transition:transform .3s ease}.chat-history-overlay.open{transform:translate(0)}.chat-history-overlay .chat-history-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid #EAECF0}.chat-history-overlay .chat-history-header .chat-history-title{font-size:15px;font-weight:700;color:#101828}.chat-history-overlay .chat-history-header .chat-history-close{background:none;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;border-radius:6px}.chat-history-overlay .chat-history-header .chat-history-close:hover{background:#f2f4f7}.chat-history-overlay .chat-history-body{flex:1;overflow-y:auto;padding:20px}.chat-history-overlay .chat-history-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:12px;color:#98a2b3;font-size:14px;text-align:center}.chat-history-overlay .chat-history-session-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-radius:8px;margin-bottom:6px;border:1px solid #EAECF0;transition:background .15s}.chat-history-overlay .chat-history-session-item:hover{background:#f2f4f7}.chat-history-overlay .chat-history-session-item .session-title{font-size:14px;font-weight:500;color:#344054;flex:1;margin-right:8px;cursor:pointer}.chat-history-overlay .chat-history-session-item .btn-continue-inline{background:#009bf3;color:#fff;border:none;cursor:pointer;padding:4px 12px;font-size:12px;font-weight:600;border-radius:6px;flex-shrink:0;transition:background .15s}.chat-history-overlay .chat-history-session-item .btn-continue-inline:hover{background:#0087d5}.chat-history-overlay .chat-history-session-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.chat-history-overlay .chat-history-session-back{display:flex;align-items:center;gap:4px;font-size:13px;font-weight:600;color:#009bf3;cursor:pointer}.chat-history-overlay .chat-history-session-back:hover{opacity:.8}.chat-history-overlay .chat-history-messages{display:flex;flex-direction:column;gap:12px}.chat-history-overlay .btn-continue-chat{width:100%;margin-top:16px;padding:10px 16px;background:#009bf3;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:background .2s}.chat-history-overlay .btn-continue-chat:hover{background:#0087d5}.chat-history-overlay .chat-history-msg{padding:10px 14px;border-radius:10px;font-size:13px;line-height:1.5}.chat-history-overlay .chat-history-msg.user{background:#f0f9ff;color:#101828;border-radius:10px 10px 0}.chat-history-overlay .chat-history-msg.assistant{background:#f9fafb;color:#344054;border:1px solid #EAECF0;border-radius:10px 10px 10px 0}.chat-history-overlay .chat-history-msg p{margin:0;white-space:pre-wrap}@keyframes popupFadeInTranscript{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.plus-menu-wrap{position:relative;flex-shrink:0}.plus-menu-wrap .btn-plus{width:30px;height:30px;border-radius:50%;border:1.5px solid #D0D5DD;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#344054;font-size:16px;font-weight:600;line-height:1;transition:background .15s,border-color .15s}.plus-menu-wrap .btn-plus:hover,.plus-menu-wrap .btn-plus.open{background:#f2f4f7;border-color:#009bf3;color:#009bf3}.plus-menu-wrap .plus-popup{position:absolute;bottom:calc(100% + 10px);left:0;background:#fff;border:1px solid #EAECF0;border-radius:12px;box-shadow:0 8px 24px #1018281f;padding:6px;min-width:210px;z-index:200;animation:popupFadeIn .15s ease-out}.plus-menu-wrap .plus-popup .plus-popup-section-label{font-size:11px;font-weight:600;color:#98a2b3;text-transform:uppercase;letter-spacing:.5px;padding:6px 12px 4px}.plus-menu-wrap .plus-popup .plus-popup-divider{height:1px;background:#eaecf0;margin:4px 0}.plus-menu-wrap .plus-popup .plus-popup-item{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;border-radius:8px;padding:9px 12px;font-size:14px;font-weight:500;color:#344054;cursor:pointer;text-align:left;transition:background .12s}.plus-menu-wrap .plus-popup .plus-popup-item svg{flex-shrink:0}.plus-menu-wrap .plus-popup .plus-popup-item .check-icon{margin-left:auto}.plus-menu-wrap .plus-popup .plus-popup-item .model-hint{font-size:11px;font-weight:400;color:#98a2b3;margin-left:4px}.plus-menu-wrap .plus-popup .plus-popup-item.selected{background:#f0f9ff;color:#009bf3}.plus-menu-wrap .plus-popup .plus-popup-item.selected svg{stroke:#009bf3}.plus-menu-wrap .plus-popup .plus-popup-item:hover:not(.selected){background:#f9fafb;color:#101828}@keyframes popupFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.model-version-tag{font-size:11px;font-weight:700;color:#009bf3;background:#eaf8ff;border:1px solid #B2E0FB;border-radius:6px;padding:2px 7px;white-space:nowrap;flex-shrink:0}.model-switcher{display:flex;align-items:center;background:#f2f4f7;border-radius:8px;padding:3px;gap:2px;flex-shrink:0}.model-switcher .model-option{background:transparent;border:none;border-radius:6px;padding:4px 12px;font-size:12px;font-weight:600;color:#667085;cursor:pointer;transition:background .15s,color .15s;white-space:nowrap}.model-switcher .model-option:hover:not(.active){background:#e4e7ec;color:#344054}.model-switcher .model-option.active{background:#fff;color:#009bf3;box-shadow:0 1px 3px #1018281a}.chat-page{background:#fff;display:flex;flex-direction:column}.chat-page .chat-layout-container{display:flex;position:relative}.chat-page .chat-main{flex:1;display:flex;flex-direction:column;background:#fff}.chat-page .chat-header{padding:0 12px}.chat-page .chat-header .header-top{position:relative;display:flex;align-items:center;justify-content:center}.chat-page .chat-header .header-top>.btn{position:absolute;right:0;top:50%;transform:translateY(-50%)}.chat-page .chat-header .header-top>.btn:focus,.chat-page .chat-header .header-top>.btn:focus-visible{box-shadow:none;outline:none}.chat-page .chat-header .view-history{font-size:14px;font-weight:600;color:#667085;text-decoration:none;cursor:pointer;display:inline-flex;align-items:center;gap:8px}.chat-page .chat-header .view-history:hover{color:#101828}.chat-page .chat-header .btn-history-toggle{background:#f2f4f7;border:none;border-radius:100px;padding:6px 14px;font-size:13px;font-weight:600;color:#344054;cursor:pointer;display:flex;align-items:center}.chat-page .chat-header .btn-history-toggle:hover{background:#eaecf0}.chat-page .chat-header .page-title{font-size:30px;font-weight:600;color:#009bf3;margin:0}.chat-page .chat-header .page-description{font-size:20px;color:#101828;font-weight:600}.chat-page .chat-messages-area{padding:24px;display:flex;flex-direction:column;gap:24px;max-height:60vh;overflow-y:auto}.chat-page .chat-messages-area:empty,.chat-page .chat-messages-area:not(:has(.message-wrapper)){max-height:none;overflow:visible;padding:0}.chat-page .chat-messages-area.scrollbar-hidden{scrollbar-width:none}.chat-page .chat-messages-area.scrollbar-hidden::-webkit-scrollbar{display:none}.chat-page .message-wrapper{display:flex;flex-direction:column;max-width:85%}.chat-page .message-wrapper.user{align-self:flex-end}.chat-page .message-wrapper.user .message{flex-direction:row-reverse}.chat-page .message-wrapper.user .message .message-bubble{background:#fff;color:#101828;border-radius:12px 12px 0;position:relative;padding-right:40px}.chat-page .message{display:flex;gap:12px}.chat-page .message.assistant{align-self:flex-start}.chat-page .message.assistant .message-avatar{flex-shrink:0;margin-top:14px}.chat-page .message.assistant .message-content{display:flex;flex-direction:column;gap:8px}.chat-page .message.assistant .message-bubble{color:#101828;border-radius:12px 12px 12px 0}.chat-page .message.assistant .message-bubble.typing{display:flex;align-items:center;gap:4px;padding:12px 20px}.chat-page .message.assistant .message-bubble.typing .dot{width:6px;height:6px;background:#00a3ff;border-radius:50%;display:inline-block;animation:typingAnimation 1.4s infinite ease-in-out both}.chat-page .message.assistant .message-bubble.typing .dot:nth-child(1){animation-delay:-.32s}.chat-page .message.assistant .message-bubble.typing .dot:nth-child(2){animation-delay:-.16s}.chat-page .message .message-bubble{padding:6px;font-size:15px;line-height:24px;position:relative}.chat-page .message .message-bubble p{margin:0 0 6px;white-space:pre-wrap}.chat-page .message .message-bubble p:last-child{margin-bottom:0}.chat-page .message .message-bubble h3,.chat-page .message .message-bubble h4,.chat-page .message .message-bubble h5{margin:8px 0 4px;font-weight:700;line-height:1.4}.chat-page .message .message-bubble h3{font-size:17px}.chat-page .message .message-bubble h4{font-size:16px}.chat-page .message .message-bubble h5{font-size:15px}.chat-page .message .message-bubble strong{font-weight:700}.chat-page .message .message-bubble em{font-style:italic}.chat-page .message .message-bubble ul{margin:4px 0;padding-left:18px}.chat-page .message .message-bubble ul li{margin-bottom:2px}.chat-page .message .message-bubble .msg-sender-tag{position:absolute;right:6px;bottom:16px;background:#eaf8ff;color:#00a3ff;font-size:10px;font-weight:700;padding:2px 8px;border-radius:50%}.chat-page .message .message-actions{display:flex;gap:8px}.chat-page .message .message-actions .btn-copy{background:none;border:none;padding:4px;cursor:pointer;color:#667085;display:flex;align-items:center;justify-content:center;opacity:.6;transition:opacity .2s}.chat-page .message .message-actions .btn-copy:hover{opacity:1}.chat-page .copy-feedback-toast{position:fixed;bottom:120px;left:50%;transform:translate(-50%);background:#101828;color:#fff;padding:8px 16px;border-radius:8px;font-size:14px;font-weight:500;z-index:1000;box-shadow:0 4px 12px #0000001a;animation:fadeInOut 2s ease-in-out forwards}.chat-page .chat-input-area{padding:24px 150px;background:#fff}.chat-page .chat-input-area .filter-chips-container{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;align-items:center}.chat-page .chat-input-area .filter-chips-container .filter-chip{background:#f9fafb;border:1px solid #EAECF0;border-radius:8px;padding:4px 12px;display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:#344054}.chat-page .chat-input-area .filter-chips-container .filter-chip .btn-remove-chip{background:none;border:none;font-size:16px;color:#98a2b3;cursor:pointer;padding:0;line-height:1}.chat-page .chat-input-area .filter-chips-container .btn-clear-all{background:none;border:none;font-size:13px;font-weight:600;color:#667085;text-decoration:underline;cursor:pointer;margin-left:auto}.chat-page .chat-input-area .filter-chips-container .btn-clear-all:hover{color:#101828}.chat-page .chat-input-area .input-wrapper{display:flex;align-items:center;background:#fff;border:1px solid #D0D5DD;border-radius:8px;padding:8px 20px;box-shadow:0 1px 2px #1018280d}.chat-page .chat-input-area .input-wrapper .chat-input{flex:1;border:none;outline:none;font-size:15px;color:#101828}.chat-page .chat-input-area .input-wrapper .btn-filter-icon{background:#fff;border:1px solid #D0D5DD;border-radius:8px;padding:6px 12px;font-size:14px;font-weight:600;color:#344054;display:flex;align-items:center;gap:8px;margin-right:12px;cursor:pointer}.chat-page .chat-input-area .input-wrapper .btn-filter-icon:hover{background:#f9fafb}.chat-page .chat-input-area .input-wrapper .btn-history-inline{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;opacity:.6;transition:opacity .2s}.chat-page .chat-input-area .input-wrapper .btn-history-inline:hover{opacity:1}.chat-page .chat-input-area .input-wrapper .btn-send{background:none;border:none;color:#00a3ff;cursor:pointer;display:flex;align-items:center;transition:transform .2s}.chat-page .chat-input-area .input-wrapper .btn-send:hover{transform:scale(1.1)}.chat-page .chat-history-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;z-index:999;background:#00000026;cursor:default}.chat-page .chat-history-sidebar{position:fixed;top:0;right:0;width:320px;height:100vh;background:#fcfcfd;display:flex;flex-direction:column;z-index:1000;box-shadow:-4px 0 24px #0000001f;animation:slideInRight .25s ease-out}.chat-page .chat-history-sidebar .sidebar-header{padding:24px!important}.chat-page .chat-history-sidebar .sidebar-header h6{font-size:16px;color:#101828;display:flex;align-items:center}.chat-page .chat-history-sidebar .sidebar-search{padding:0 24px 16px}.chat-page .chat-history-sidebar .sidebar-search .history-search-wrapper{position:relative;display:flex;align-items:center;background:#fff;border:1px solid #D0D5DD;border-radius:8px;padding:8px 12px}.chat-page .chat-history-sidebar .sidebar-search .history-search-wrapper i{color:#667085;position:absolute;left:12px}.chat-page .chat-history-sidebar .sidebar-search .history-search-wrapper input{border:none;outline:none;font-size:14px;padding-left:24px;width:100%}.chat-page .chat-history-sidebar .sidebar-search .history-search-wrapper input::placeholder{color:#667085}.chat-page .chat-history-sidebar .sidebar-content{flex:1;padding:12px 24px!important;overflow-y:auto}.chat-page .chat-history-sidebar .sidebar-content.scrollbar-hidden{scrollbar-width:none}.chat-page .chat-history-sidebar .sidebar-content.scrollbar-hidden::-webkit-scrollbar{display:none}.chat-page .chat-history-sidebar .sidebar-content .history-item{padding:12px 16px;border-radius:12px;cursor:pointer;margin-bottom:8px;transition:all .2s;border:1px solid transparent}.chat-page .chat-history-sidebar .sidebar-content .history-item:hover{background:#f2f4f7}.chat-page .chat-history-sidebar .sidebar-content .history-item.active{background:#f0f9ff;border-color:#b9e6fe}.chat-page .chat-history-sidebar .sidebar-content .history-item.active .item-title{color:#00a3ff}.chat-page .chat-history-sidebar .sidebar-content .history-item .item-title{font-size:14px;font-weight:600;color:#344054}.chat-page .chat-history-sidebar .sidebar-content .history-item .item-date{font-size:12px;margin-top:4px;color:#667085}.chat-page .chat-history-sidebar .sidebar-footer{padding:24px!important}.chat-page .chat-history-sidebar .sidebar-footer .btn-new-chat{background:#fff;border:1px solid #D0D5DD;border-radius:100px;padding:12px;font-size:14px;font-weight:600;color:#344054;cursor:pointer;box-shadow:0 1px 2px #1018280d}.chat-page .chat-history-sidebar .sidebar-footer .btn-new-chat:hover{background:#f9fafb}input[type=text]:focus{outline:none;box-shadow:none}@keyframes slideInRight{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes typingAnimation{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}@keyframes fadeInOut{0%{opacity:0;transform:translate(-50%,20px)}10%{opacity:1;transform:translate(-50%)}90%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-20px)}}.sparkle{font-size:60px;animation:twinkle 1.5s infinite ease-in-out}@keyframes twinkle{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.1)}}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "directive", type: i8.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "pipe", type: i5.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i5.DatePipe, name: "date" }] });
964
965
  }
965
966
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AudioPageComponent, decorators: [{
966
967
  type: Component,
967
- args: [{ selector: 'lib-audio-page', template: "<div class=\"audio-page\">\n\n <!-- \u2500\u2500 Header Row \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"header-row-container mb-4\" *ngIf=\"cohortOptions.length > 0\">\n <div class=\"d-flex align-items-center justify-content-between\">\n <div class=\"d-flex align-items-center gap-3\">\n <!-- Custom Single-select Cohort Dropdown -->\n <div class=\"cohort-dropdown\" [class.open]=\"isCohortDropdownOpen\">\n <div class=\"cohort-dropdown-trigger\"\n (click)=\"isCohortDropdownOpen = !isCohortDropdownOpen; $event.stopPropagation()\">\n <span>{{ filterType }}</span>\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\" [class.rotate]=\"isCohortDropdownOpen\">\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div class=\"cohort-dropdown-menu\" *ngIf=\"isCohortDropdownOpen\" (click)=\"$event.stopPropagation()\">\n <div class=\"cohort-option\" *ngFor=\"let opt of cohortOptions\" [class.selected]=\"opt === filterType\"\n (click)=\"selectCohortType(opt)\">\n {{ opt }}\n </div>\n </div>\n </div>\n <h4 class=\"section-title mb-0\">Cohort Analysis</h4>\n </div>\n <div class=\"total-audio-label\">Total Audio Available <strong>{{ totalAudio }}</strong></div>\n </div>\n </div>\n\n <!-- \u2500\u2500 Stats Grid (Dynamic) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"stats-grid mb-4\">\n\n <!-- Loader -->\n <ng-container *ngIf=\"isLoadingCards\">\n <div class=\"stat-card\" *ngFor=\"let s of [1,2,3,4,5,6]\">\n <div class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <div class=\"stat-card\" *ngFor=\"let card of cohortCards\" [hidden]=\"isLoadingCards\">\n <div class=\"stat-card-header text-capitalize ellipse1 cursor-pointer\" (click)=\"onCardRowClick('', card.name)\">\n {{ card.name }}\n </div>\n <div class=\"stat-card-body\">\n\n <!-- BOOLEAN_BASKET: label + responses + score -->\n <ng-container *ngIf=\"card.type === 'BOOLEAN_BASKET'\">\n <table class=\"cohort-table w-100\">\n <tbody>\n <tr *ngFor=\"let row of card?.booleanRows\">\n <td class=\"text-primary text-capitalize text-decoration-underline cursor-pointer\" (click)=\"onCardRowClick('', row?.label)\">{{ row?.label.split('_').join(' ').toLowerCase() }}</td>\n <td class=\"text-end\">{{ row?.responses }}</td>\n <td class=\"text-end\">{{ row?.score }}%</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n <!-- NUMERIC_SCALAR: total + avg -->\n <ng-container *ngIf=\"card.type === 'NUMERIC_SCALAR' || card.type === 'NUMERIC_ARRAY'\">\n <table class=\"cohort-table w-100\">\n <tbody>\n <tr>\n <td>Total</td>\n <td class=\"text-end\">{{ card.numericData?.total }}</td>\n </tr>\n <tr>\n <td>Average</td>\n <td class=\"text-end\">{{ card.numericData?.avg }}</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n <!-- SUBJECTIVE: id + reasoning text -->\n <ng-container *ngIf=\"card.type === 'SUBJECTIVE'\">\n <table class=\"cohort-table w-100\">\n <tbody>\n <tr *ngFor=\"let row of card.subjectiveRows\">\n <td class=\"text-nowrap\">{{ row?.store_id || '\u2014' }}</td>\n <td class=\"text-nowrap\">{{ row?.date || '\u2014' }}</td>\n <td class=\"text-primary text-capitalize text-decoration-underline cursor-pointer\" (click)=\"onCardRowClick(row?._id,'')\" [ngbTooltip]=\"row?.reasoning || 'No description available'\" placement=\"top\" container=\"body\" tooltipClass=\"audio-tooltip\">{{ row?.reasoning && row?.reasoning !== '' ? row?.reasoning?.slice(0, 25) + '...' : 'No reasoning available' }}</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n <ng-container *ngIf=\"card.type === 'SUBJECTIVE_COUNT'\">\n <table class=\"cohort-table w-100\">\n <tbody>\n <tr *ngFor=\"let row of card.subjectiveRows\">\n <td class=\"text-nowrap fw-bold\"\n [ngbTooltip]=\"row?._id\" placement=\"top\" container=\"body\" tooltipClass=\"audio-tooltip\">{{ row?._id }}</td>\n <td [ngbTooltip]=\"row?.reasoning || 'No description available'\" placement=\"top\" container=\"body\" tooltipClass=\"audio-tooltip\">{{ row?.reasoning && row?.reasoning !== '' ? row?.reasoning?.slice(0, 25) : 'No reasoning available' }}</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n <!-- UNIQUE_PITCHES: pitchId + description -->\n <ng-container *ngIf=\"card.type === 'UNIQUE_PITCHES'\">\n <table class=\"cohort-table w-100\">\n <tbody>\n <tr *ngFor=\"let pitch of card.pitchRows\">\n <td class=\"text-nowrap fw-bold\"\n [ngbTooltip]=\"pitch.id\" placement=\"top\" container=\"body\" tooltipClass=\"audio-tooltip\">{{ pitch.id }}</td>\n <td [ngbTooltip]=\"pitch.desc || 'No description available'\" placement=\"top\" container=\"body\" tooltipClass=\"audio-tooltip\">{{ pitch.desc ? pitch.desc.slice(0, 75) + '...' : 'No description available' }}</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n </div>\n </div>\n\n </div>\n\n <!-- \u2500\u2500 Conversation Analysis \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"conversation-area bg-white p-4 rounded-3\">\n\n <!-- Section Header -->\n <div class=\"d-flex justify-content-between align-items-center px-2 bottom-border mb-4\">\n <h5 class=\"section-title mb-0\">Conversation Analysis</h5>\n <button class=\"export-btn btn btn-default mx-1 btn-outline bg-white btn-outline-default\" (click)=\"exportData()\" ngbTooltip=\"Export conversation data to CSV\" placement=\"top\" [disabled]=\"totalItems === 0\">\n <span class=\"export-text\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\n fill=\"none\">\n <path\n d=\"M8.125 13.125H16.3563L14.7438 14.7438L15.625 15.625L18.75 12.5L15.625 9.375L14.7438 10.2562L16.3563 11.875H8.125V13.125Z\"\n fill=\"black\" />\n <path\n d=\"M13.75 8.75001V6.25001C13.7505 6.16776 13.7347 6.08622 13.7036 6.01007C13.6725 5.93392 13.6267 5.86466 13.5688 5.80626L9.19375 1.43126C9.13535 1.37333 9.06609 1.32751 8.98994 1.2964C8.91379 1.2653 8.83225 1.24953 8.75 1.25001H2.5C2.16848 1.25001 1.85054 1.38171 1.61612 1.61613C1.3817 1.85055 1.25 2.16849 1.25 2.50001V17.5C1.25 17.8315 1.3817 18.1495 1.61612 18.3839C1.85054 18.6183 2.16848 18.75 2.5 18.75H12.5C12.8315 18.75 13.1495 18.6183 13.3839 18.3839C13.6183 18.1495 13.75 17.8315 13.75 17.5V16.25H12.5V17.5H2.5V2.50001H7.5V6.25001C7.5 6.58153 7.6317 6.89947 7.86612 7.13389C8.10054 7.36831 8.41848 7.50001 8.75 7.50001H12.5V8.75001H13.75ZM8.75 6.25001V2.75626L12.2438 6.25001H8.75Z\"\n fill=\"black\" />\n </svg> Export</span>\n </button>\n </div>\n\n <!-- \u2500\u2500 Tango AI Chat \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"chat-page\">\n <div class=\"chat-layout-container\">\n <div class=\"chat-main\">\n <header class=\"chat-header\">\n <div class=\"header-top\">\n <div class=\"header-content text-center\"></div>\n </div>\n </header>\n\n <!-- Message Area -->\n <div class=\"chat-messages-area scrollbar-hidden\" #scrollContainer>\n <div class=\"d-flex justify-content-center align-items-center py-4\" *ngIf=\"isChatLoading\">\n <span class=\"text-muted\">Loading conversation...</span>\n </div>\n <div *ngFor=\"let msg of messages\" class=\"message-wrapper\" [class.user]=\"msg.sender === 'user'\">\n <div class=\"message\" [class.assistant]=\"msg.sender === 'assistant'\">\n <div class=\"message-avatar\" *ngIf=\"msg.sender === 'assistant'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <rect width=\"24\" height=\"24\" rx=\"12\" fill=\"#EAF8FF\" />\n <path d=\"M15.9941 14.5561L15.4565 14.0185L9.663 8.225L11.3816 6.5064L11.7934 6.0938C11.8327 6.05395 11.8549 6.00032 11.8552 5.9428C11.855 5.91668 11.8494 5.88931 11.8387 5.86381C11.828 5.8383 11.8123 5.81517 11.7926 5.79572L11.38 5.38312L9.5574 3.55729L9.1448 3.14469C9.1253 3.12485 9.1021 3.10909 9.0764 3.09833C9.0508 3.08757 9.0232 3.08203 8.9954 3.08203C8.9676 3.08203 8.94 3.08757 8.9144 3.09833C8.8887 3.10909 8.8655 3.12485 8.8459 3.14469L8.4333 3.5581L6.1998 5.79166C6.18 5.81109 6.1642 5.83428 6.1535 5.85988C6.1427 5.88547 6.1372 5.91294 6.1372 5.9407C6.1372 5.96846 6.1427 5.99593 6.1535 6.02152C6.1642 6.04712 6.18 6.07031 6.1998 6.08974L8.3334 8.2242L2.5392 14.0185L2.004 14.5561C1.9643 14.5955 1.9418 14.6489 1.9414 14.7048C1.9416 14.7588 1.9622 14.8107 1.9991 14.8502C2.0187 14.8712 2.0425 14.8879 2.0689 14.8994C2.0953 14.9108 2.1238 14.9168 2.1526 14.9168H7.3645C7.4204 14.9166 7.474 14.8942 7.5136 14.8547C7.5531 14.8151 7.5754 14.7615 7.5757 14.7056V14.1874C7.5757 14.1313 7.5534 14.0775 7.5139 14.0378C7.4743 13.9981 7.4206 13.9756 7.3645 13.9754H3.9126L8.9978 8.8902L14.083 13.9754H10.6011C10.545 13.9756 10.4913 13.9981 10.4517 14.0378C10.4122 14.0775 10.3899 14.1313 10.3899 14.1874V14.7056C10.3898 14.7334 10.3953 14.761 10.4061 14.7867C10.4168 14.8123 10.4326 14.8356 10.4525 14.855C10.4919 14.8944 10.5454 14.9166 10.6011 14.9168H15.8447C15.8736 14.9169 15.9023 14.911 15.9288 14.8995C15.9554 14.8881 15.9793 14.8713 15.999 14.8502C16.037 14.8103 16.0577 14.7572 16.0568 14.7022C16.0559 14.6471 16.0334 14.5947 15.9941 14.5561ZM8.9946 4.32645L10.6133 5.94517L8.9986 7.5598L7.3799 5.94111L8.9946 4.32645Z\" fill=\"#00A3FF\"/>\n </svg>\n </div>\n <div class=\"message-content\">\n <div class=\"message-bubble\">\n <div [innerHTML]=\"parseMarkdown(msg.text)\"></div>\n <span class=\"msg-sender-tag\" *ngIf=\"msg.sender === 'user'\">{{ userInitials }}</span>\n </div>\n <div class=\"message-actions\" *ngIf=\"msg.sender === 'assistant' && msg.text\">\n <button class=\"btn-copy\" (click)=\"copyToClipboard(msg.text)\" title=\"Copy to clipboard\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"#667085\" stroke-width=\"1.67\">\n <path d=\"M13.3333 13.3333V16.6667C13.3333 17.5872 12.5872 18.3333 11.6667 18.3333H3.33333C2.41286 18.3333 1.66667 17.5872 1.66667 16.6667V8.33333C1.66667 7.41286 2.41286 6.66667 3.33333 6.66667H6.66667M8.33333 3.33333V11.6667C8.33333 12.5872 9.07953 13.3333 10 13.3333H16.6667C17.5872 13.3333 18.3333 12.5872 18.3333 11.6667V3.33333C18.3333 2.41286 17.5872 1.66667 16.6667 1.66667H10C9.07953 1.66667 8.33333 2.41286 8.33333 3.33333Z\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n </div>\n </div>\n <!-- Typing Indicator -->\n <div class=\"message-wrapper assistant\" *ngIf=\"isTyping\">\n <div class=\"message assistant\">\n <div class=\"message-avatar\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <rect width=\"24\" height=\"24\" rx=\"12\" fill=\"#EAF8FF\" />\n <path d=\"M15.9941 14.5561L15.4565 14.0185L9.663 8.225L11.3816 6.5064L11.7934 6.0938C11.8327 6.05395 11.8549 6.00032 11.8552 5.9428C11.855 5.91668 11.8494 5.88931 11.8387 5.86381C11.828 5.8383 11.8123 5.81517 11.7926 5.79572L11.38 5.38312L9.5574 3.55729L9.1448 3.14469C9.1253 3.12485 9.1021 3.10909 9.0764 3.09833C9.0508 3.08757 9.0232 3.08203 8.9954 3.08203C8.9676 3.08203 8.94 3.08757 8.9144 3.09833C8.8887 3.10909 8.8655 3.12485 8.8459 3.14469L8.4333 3.5581L6.1998 5.79166C6.18 5.81109 6.1642 5.83428 6.1535 5.85988C6.1427 5.88547 6.1372 5.91294 6.1372 5.9407C6.1372 5.96846 6.1427 5.99593 6.1535 6.02152C6.1642 6.04712 6.18 6.07031 6.1998 6.08974L8.3334 8.2242L2.5392 14.0185L2.004 14.5561C1.9643 14.5955 1.9418 14.6489 1.9414 14.7048C1.9416 14.7588 1.9622 14.8107 1.9991 14.8502C2.0187 14.8712 2.0425 14.8879 2.0689 14.8994C2.0953 14.9108 2.1238 14.9168 2.1526 14.9168H7.3645C7.4204 14.9166 7.474 14.8942 7.5136 14.8547C7.5531 14.8151 7.5754 14.7615 7.5757 14.7056V14.1874C7.5757 14.1313 7.5534 14.0775 7.5139 14.0378C7.4743 13.9981 7.4206 13.9756 7.3645 13.9754H3.9126L8.9978 8.8902L14.083 13.9754H10.6011C10.545 13.9756 10.4913 13.9981 10.4517 14.0378C10.4122 14.0775 10.3899 14.1313 10.3899 14.1874V14.7056C10.3898 14.7334 10.3953 14.761 10.4061 14.7867C10.4168 14.8123 10.4326 14.8356 10.4525 14.855C10.4919 14.8944 10.5454 14.9166 10.6011 14.9168H15.8447C15.8736 14.9169 15.9023 14.911 15.9288 14.8995C15.9554 14.8881 15.9793 14.8713 15.999 14.8502C16.037 14.8103 16.0577 14.7572 16.0568 14.7022C16.0559 14.6471 16.0334 14.5947 15.9941 14.5561ZM8.9946 4.32645L10.6133 5.94517L8.9986 7.5598L7.3799 5.94111L8.9946 4.32645Z\" fill=\"#00A3FF\"/>\n </svg>\n </div>\n <div class=\"message-content mt-3\">\n <div class=\"message-bubble typing\">\n <span class=\"dot\"></span><span class=\"dot\"></span><span class=\"dot\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Copy Feedback Toast -->\n <div class=\"copy-feedback-toast\" *ngIf=\"copyFeedback\">{{ copyFeedback }}</div>\n <!-- Input Area -->\n <div class=\"chat-input-area border-top\">\n <div class=\"chat-footer d-flex align-items-center justify-content-between\">\n <div class=\"input-wrapper d-flex align-items-center flex-grow-1\">\n <div class=\"plus-menu-wrap me-2\">\n <button class=\"btn-plus\" type=\"button\" (click)=\"togglePlusMenu()\" [class.open]=\"showPlusMenu\">/</button>\n <div class=\"plus-popup\" *ngIf=\"showPlusMenu\">\n <div class=\"plus-popup-section-label\">Model</div>\n <button class=\"plus-popup-item\" type=\"button\" *ngFor=\"let m of modelOptions\"\n [class.selected]=\"selectedModel === m.value\" (click)=\"selectModel(m.value); closePlusMenu()\">\n <span class=\"model-hint fw-bold text-dark fs-5\">{{ m.label | titlecase }}</span>\n <svg *ngIf=\"selectedModel === m.value\" class=\"check-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#009BF3\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\"/>\n </svg>\n </button>\n <div class=\"plus-popup-divider\"></div>\n <button class=\"plus-popup-item\" type=\"button\" (click)=\"closePlusMenu(); newChat()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#344054\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M12 20h9M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z\"/>\n </svg>\n <span>New Chat</span>\n </button>\n <button class=\"plus-popup-item\" type=\"button\" (click)=\"closePlusMenu(); toggleChatHistory()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#344054\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M12 8v4l3 3m6-3a9 9 0 1 1-18 0 9 9 0 0 1 18 0z\"/>\n </svg>\n <span>Chat History</span>\n </button>\n </div>\n </div>\n <input type=\"text\" [(ngModel)]=\"userMessage\" class=\"chat-input\" placeholder=\"Ask anything...\"\n (keyup.enter)=\"sendMessage()\" [disabled]=\"isTyping\">\n <button class=\"btn-history-inline\" *ngIf=\"!showChatHistory\" (click)=\"toggleChatHistory()\" title=\"Chat History\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#667085\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M12 8v4l3 3m6-3a9 9 0 1 1-18 0 9 9 0 0 1 18 0z\"/>\n </svg>\n </button>\n <button class=\"btn-send\" (click)=\"sendMessage()\" [disabled]=\"!userMessage.trim() || isTyping\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"></line>\n <polygon points=\"22 2 15 22 11 13 2 9 22 2\"></polygon>\n </svg>\n </button>\n </div>\n </div>\n </div>\n </div>\n <!-- Backdrop -->\n <div class=\"chat-history-backdrop\" *ngIf=\"showChatHistory\" (click)=\"toggleChatHistory()\"></div>\n <!-- Right Sidebar: Chat History -->\n <aside class=\"chat-history-sidebar border-start\" *ngIf=\"showChatHistory\">\n <div class=\"sidebar-header p-3 border-bottom d-flex justify-content-between align-items-center\">\n <h6 (click)=\"toggleChatHistory()\" class=\"mb-0 fw-bold cursor-pointer\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M10.8333 14.1673L15 10.0007L10.8333 5.83398M5 14.1673L9.16667 10.0007L5 5.83398\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg> Chat History\n </h6>\n </div>\n <div class=\"sidebar-search p-3 pb-0\">\n <div class=\"history-search-wrapper\">\n <i class=\"bi bi-search\"></i>\n <input type=\"text\" placeholder=\"Search chats..\" [(ngModel)]=\"searchText\">\n </div>\n </div>\n <div class=\"sidebar-content p-3 scrollbar-hidden\">\n <div class=\"text-center text-muted py-3\" *ngIf=\"isHistoryLoading\">Loading...</div>\n <div class=\"text-center text-muted py-3\" *ngIf=\"!isHistoryLoading && filteredHistory.length === 0\">No chats found</div>\n <div *ngFor=\"let chat of filteredHistory\" class=\"history-item\" [class.active]=\"selectedChatId === chat.session_id\"\n (click)=\"loadChat(chat.session_id)\">\n <div class=\"item-title text-truncate\">{{ chat.session_title }}</div>\n </div>\n </div>\n <div class=\"sidebar-footer p-3 mt-auto\">\n <button class=\"btn-new-chat w-100\" (click)=\"newChat()\">\n <i class=\"bi bi-plus-lg me-2\"></i> New Chat\n </button>\n </div>\n </aside>\n </div>\n</div>\n\n <!-- Conversations Count -->\n <div class=\"conversations-count mb-3 d-flex align-items-center flex-wrap gap-2\">\n <strong>{{ totalItems }} Total Conversations Found</strong>\n <span *ngIf=\"selectedCardId || selectedCardName\" class=\"active-filter-chip\">\n <span class=\"chip-label\">{{ selectedCardId || selectedCardName }}</span>\n <button class=\"chip-remove\" (click)=\"clearCardFilter()\" title=\"Remove filter\">&times;</button>\n </span>\n </div>\n\n <!-- Conversation Cards -->\n <div class=\"conversations-list\">\n\n <!-- Loader -->\n <ng-container *ngIf=\"isLoadingConversations\">\n <div class=\"conversation-card p-3\" *ngFor=\"let s of [1,2,3]\">\n <div class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- No Data -->\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column my-10\"\n *ngIf=\"!isLoadingConversations && displayedConversations.length === 0\">\n <img class=\"img-map\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\n <div class=\"nodata-title\">No data found</div>\n <div class=\"nodata-sub\">No cohorts has been created yet.<br>\n Please Create a cohort to view the dashboard.</div>\n <button class=\"btn btn-primary rounded-3 w-25 p-4 mt-3\" (click)=\"createCohort()\">\n <span class=\"fw-bold fs-4 mx-2 d-flex align-items-center justify-content-center\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n<path d=\"M10.0013 4.16699V15.8337M4.16797 10.0003H15.8346\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n <span class=\"fw-bold fs-4 d-flex align-items-center justify-content-center ms-2\">Create\n Cohorts</span>\n </span>\n </button>\n </div>\n\n <div class=\"conversation-card\" *ngFor=\"let c of displayedConversations; let mi = index\"\n [hidden]=\"isLoadingConversations\">\n\n <!-- Summary Row (always visible) -->\n <div class=\"conv-summary d-flex justify-content-between\" (click)=\"toggleConversation(c.audioId)\">\n <div class=\"conv-summary-left\">\n <div class=\"d-flex align-items-center gap-2 my-2\">\n <span class=\"conv-id m-0\">{{ c.audioId }}</span>\n </div>\n <div class=\"conv-meta-row my-2\">\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\n fill=\"none\">\n <path\n d=\"M4.08984 9.46777C3.93408 9.48707 3.77504 9.5 3.61328 9.5C3.51562 9.49999 3.41967 9.49448 3.3252 9.4873V14.2236C3.3252 14.9015 3.88652 15.4648 4.58984 15.4648H13.4111C14.1145 15.4648 14.6758 14.9015 14.6758 14.2236V9.48828C14.5827 9.49512 14.4878 9.5 14.3926 9.5C14.2297 9.49998 14.0691 9.48762 13.9111 9.46777V12.9824H4.08984V9.46777ZM13.9189 2.53613H4.08203C3.98145 2.53623 3.8913 2.58826 3.84473 2.66113V2.66211L2.26465 5.12988L2.24316 5.16309C1.63609 6.15653 2.22253 7.46491 3.34277 7.6123C3.43532 7.62358 3.52388 7.62988 3.61133 7.62988C4.18312 7.62975 4.68923 7.3838 5.04102 7.00195L5.40918 6.60156L5.77734 7.00293C6.12562 7.38334 6.63076 7.62988 7.20605 7.62988C7.7788 7.62982 8.28675 7.38306 8.63477 7.00293L12.5986 6.60059L12.9668 7.00293C13.3148 7.38307 13.8227 7.62982 14.3955 7.62988C14.4806 7.62988 14.5716 7.62357 14.6641 7.6123H14.6631C15.7899 7.46139 16.377 6.12516 15.7393 5.12988L14.1572 2.66211L14.1562 2.66113C14.1097 2.58826 14.0195 2.53619 13.9189 2.53613Z\"\n stroke=\"#667085\" />\n </svg> <span class=\"text-name\">Store:</span> <span class=\"name-val\">{{ c.storeName }}</span></span>\n <span class=\"meta-sep\"></span>\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"15\" viewBox=\"0 0 14 15\"\n fill=\"none\">\n <path\n d=\"M12.75 14.25V12.75C12.75 11.9544 12.4339 11.1913 11.8713 10.6287C11.3087 10.0661 10.5456 9.75 9.75 9.75H3.75C2.95435 9.75 2.19129 10.0661 1.62868 10.6287C1.06607 11.1913 0.75 11.9544 0.75 12.75V14.25M9.75 3.75C9.75 5.40685 8.40685 6.75 6.75 6.75C5.09315 6.75 3.75 5.40685 3.75 3.75C3.75 2.09315 5.09315 0.75 6.75 0.75C8.40685 0.75 9.75 2.09315 9.75 3.75Z\"\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg><span class=\"text-name\">Staff:</span> <span class=\"name-val\">{{ c.userName }}</span></span>\n <span class=\"meta-sep\"></span>\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\n fill=\"none\">\n <path\n d=\"M10.875 13.6875C10.35 13.6875 9.90625 13.5062 9.54375 13.1437C9.18125 12.7812 9 12.3375 9 11.8125C9 11.2875 9.18125 10.8438 9.54375 10.4813C9.90625 10.1188 10.35 9.9375 10.875 9.9375C11.4 9.9375 11.8438 10.1188 12.2063 10.4813C12.5688 10.8438 12.75 11.2875 12.75 11.8125C12.75 12.3375 12.5688 12.7812 12.2063 13.1437C11.8438 13.5062 11.4 13.6875 10.875 13.6875ZM3.75 16.6875C3.3375 16.6875 2.9845 16.5408 2.691 16.2472C2.3975 15.9537 2.2505 15.6005 2.25 15.1875V4.6875C2.25 4.275 2.397 3.922 2.691 3.6285C2.985 3.335 3.338 3.188 3.75 3.1875H4.5V1.6875H6V3.1875H12V1.6875H13.5V3.1875H14.25C14.6625 3.1875 15.0158 3.3345 15.3098 3.6285C15.6038 3.9225 15.7505 4.2755 15.75 4.6875V15.1875C15.75 15.6 15.6033 15.9532 15.3098 16.2472C15.0163 16.5413 14.663 16.688 14.25 16.6875H3.75ZM3.75 15.1875H14.25V7.6875H3.75V15.1875Z\"\n fill=\"#667085\" />\n </svg><span class=\"text-name\">Date:</span> <span class=\"name-val\">{{ c.date }}</span></span>\n <span class=\"meta-sep\"></span>\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_1849_13302)\">\n <path\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1849_13302\">\n <rect width=\"18\" height=\"18\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg><span class=\"text-name\">Timestamp:</span> <span class=\"name-val\">{{ c.time | date:'hh:mm a' }}</span></span>\n <span class=\"meta-sep\"></span>\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\n fill=\"none\">\n <path\n d=\"M6.875 2.15267C6.875 1.96481 6.94963 1.78464 7.08247 1.6518C7.21531 1.51896 7.39547 1.44434 7.58333 1.44434H10.4167C10.6045 1.44434 10.7847 1.51896 10.9175 1.6518C11.0504 1.78464 11.125 1.96481 11.125 2.15267C11.125 2.34053 11.0504 2.5207 10.9175 2.65354C10.7847 2.78637 10.6045 2.861 10.4167 2.861H9.70833V3.80545L9.70739 3.84417C10.9047 3.97536 12.0396 4.44553 12.9789 5.19945L12.9856 5.19378L13.6939 4.48545C13.7805 4.39221 13.8906 4.32404 14.0127 4.28814C14.1347 4.25224 14.2642 4.24993 14.3875 4.28144C14.5108 4.31296 14.6233 4.37715 14.7131 4.46724C14.803 4.55732 14.8669 4.66998 14.8981 4.79333C14.9295 4.91647 14.9273 5.04581 14.8915 5.16777C14.8558 5.28974 14.7879 5.39985 14.695 5.48656L13.9867 6.19489L13.981 6.2015C14.7302 7.13944 15.1994 8.26985 15.3345 9.46266C15.4696 10.6555 15.2652 11.8622 14.7448 12.9439C14.2244 14.0257 13.4091 14.9385 12.3928 15.5774C11.3765 16.2163 10.2004 16.5552 9 16.5552C7.79957 16.5552 6.62353 16.2163 5.60722 15.5774C4.59091 14.9385 3.77564 14.0257 3.25522 12.9439C2.73481 11.8622 2.5304 10.6555 2.66552 9.46266C2.80064 8.26985 3.2698 7.13944 4.019 6.2015L4.01334 6.19489L3.305 5.48656C3.17973 5.35231 3.11148 5.17466 3.11466 4.99107C3.11783 4.80747 3.19217 4.63229 3.322 4.50245C3.45185 4.37261 3.62703 4.29827 3.81062 4.2951C3.99422 4.29193 4.17187 4.36017 4.30611 4.48545L5.01445 5.19378L5.02106 5.19945C5.9601 4.4457 7.09472 3.97554 8.29167 3.84417V2.861H7.58333C7.39547 2.861 7.21531 2.78637 7.08247 2.65354C6.94963 2.5207 6.875 2.34053 6.875 2.15267ZM9 15.1388C10.3152 15.1386 11.5764 14.6161 12.5063 13.686C13.4361 12.756 13.9585 11.4947 13.9583 10.1795C13.9582 8.86434 13.4356 7.6031 12.5056 6.67323C11.5756 5.74337 10.3142 5.22104 8.99906 5.22117C7.6839 5.22129 6.42266 5.74386 5.49279 6.6739C4.56292 7.60395 4.0406 8.86529 4.04072 10.1804C4.04085 11.4956 4.56341 12.7568 5.49346 13.6867C6.4235 14.6166 7.68484 15.1389 9 15.1388ZM9.36739 8.811L10.6235 7.55489C10.6888 7.4872 10.7669 7.43321 10.8533 7.39604C10.9397 7.35888 11.0327 7.3393 11.1267 7.33843C11.2208 7.33757 11.3141 7.35545 11.4011 7.39103C11.4882 7.4266 11.5673 7.47916 11.6339 7.54563C11.7004 7.61211 11.753 7.69117 11.7887 7.77821C11.8243 7.86524 11.8423 7.9585 11.8415 8.05256C11.8408 8.14661 11.8213 8.23957 11.7842 8.326C11.7471 8.41244 11.6932 8.49062 11.6256 8.556L10.3694 9.81305C10.4252 10.023 10.4321 10.243 10.3895 10.4561C10.3468 10.6692 10.2559 10.8696 10.1236 11.0419C9.99127 11.2143 9.82117 11.354 9.62637 11.4502C9.43157 11.5465 9.21728 11.5967 9 11.5971C8.79949 11.5954 8.60163 11.5511 8.41953 11.4671C8.23743 11.3832 8.07524 11.2615 7.94369 11.1102C7.81215 10.9588 7.71426 10.7813 7.65649 10.5893C7.59873 10.3973 7.58241 10.1952 7.60863 9.99636C7.63484 9.79756 7.70299 9.6066 7.80855 9.43612C7.91412 9.26564 8.05469 9.11953 8.22097 9.00746C8.38725 8.89539 8.57543 8.81993 8.77307 8.78606C8.97071 8.75219 9.17328 8.76069 9.36739 8.811Z\"\n fill=\"#667085\" />\n </svg><span class=\"text-name\"> Duration:</span> <span class=\"name-val\">{{ formatDuration(c.duration) }}</span></span>\n <span class=\"meta-sep\"></span>\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path d=\"M9 1.5C6.23858 1.5 4 3.73858 4 6.5C4 10.25 9 16.5 9 16.5C9 16.5 14 10.25 14 6.5C14 3.73858 11.7614 1.5 9 1.5ZM9 8.75C7.75736 8.75 6.75 7.74264 6.75 6.5C6.75 5.25736 7.75736 4.25 9 4.25C10.2426 4.25 11.25 5.25736 11.25 6.5C11.25 7.74264 10.2426 8.75 9 8.75Z\" fill=\"#667085\"/>\n</svg><span class=\"text-name\"> Location:</span> <span class=\"name-val location-truncate\" [title]=\"c.location\">{{ c.location }}</span></span>\n\n </div>\n <div class=\"conv-excerpt my-2\">{{ c.audioDescription }}</div>\n <a *ngIf=\"c.eyeTestLink\" class=\"eye-test-link\" href=\"#\" (click)=\"$event.stopPropagation()\">\n View Eye Test <span>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M15 10.8333V15.8333C15 16.2754 14.8244 16.6993 14.5118 17.0118C14.1993 17.3244 13.7754 17.5 13.3333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V6.66667C2.5 6.22464 2.67559 5.80072 2.98816 5.48816C3.30072 5.17559 3.72464 5 4.16667 5H9.16667M12.5 2.5H17.5M17.5 2.5V7.5M17.5 2.5L8.33333 11.6667\"\n stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </a>\n </div>\n <div class=\"conv-toggle-btn text-nowrap\" (click)=\"$event.stopPropagation(); toggleConversation(c.audioId)\">\n <span>{{ openId === c.audioId ? 'View Less' : 'View More' }}</span>\n\n <!-- down arrow when closed -->\n <svg *ngIf=\"openId !== c.audioId\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\n viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M5.83203 10.8333L9.9987 15L14.1654 10.8333M5.83203 5L9.9987 9.16667L14.1654 5\" stroke=\"#667085\"\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n\n <!-- up arrow when open -->\n <svg *ngIf=\"openId === c.audioId\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\n viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M5.83203 10.8333L9.9987 15L14.1654 10.8333M5.83203 5L9.9987 9.16667L14.1654 5\" stroke=\"#667085\"\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" transform=\"rotate(180 10 10)\" />\n </svg>\n </div>\n </div>\n\n <!-- Expanded Body -->\n <div class=\"conv-body\" *ngIf=\"openId === c.audioId\">\n\n <!-- Detail Loading shimmer -->\n <ng-container *ngIf=\"c._detailLoading\">\n <div class=\"row loader d-flex justify-content-center align-items-center px-4 py-3\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- No data / error after load -->\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column my-6\"\n *ngIf=\"!c._detailLoading && (c._detailError || (c._detailLoaded && !c.conversationDetails?.audioSummary && c.metrics?.length === 0))\">\n <img class=\"img-map\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\n <div class=\"nodata-title\">No data found</div>\n <div class=\"nodata-sub\">No details available for this conversation</div>\n </div>\n\n <div class=\"conv-body-inner\" *ngIf=\"!c._detailLoading && !c._detailError\">\n\n <!-- Left: Recording + Summary + Insights -->\n <div class=\"conv-left\">\n\n <div class=\"recording-box mb-2\" [class.is-playing-box]=\"playingConvId === c.audioId\" *ngIf=\"c.audioUrl\">\n <div class=\"recording-title\">Conversation Recording</div>\n\n <!-- Waveform: per-conversation playing state -->\n <div class=\"waveform-bars\" [class.is-playing]=\"playingConvId === c.audioId\">\n <div class=\"wf-bar\" *ngFor=\"let h of waveformHeights; let i = index\" [style.height.px]=\"h\"\n [class.wf-bar--played]=\"(playbackStates[c.audioId]?.progress || 0) > i / waveformHeights.length\">\n </div>\n </div>\n\n <!-- Player controls -->\n <div class=\"player-row\">\n\n <!-- Play / Pause button with white outer ring -->\n <div class=\"play-btn-wrap\">\n <button class=\"play-btn-circle\" (click)=\"togglePlay(c.audioId)\">\n <!-- Play icon -->\n <svg *ngIf=\"playingConvId !== c.audioId\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"white\">\n <path d=\"M8 5v14l11-7z\" />\n </svg>\n <!-- Pause icon -->\n <svg *ngIf=\"playingConvId === c.audioId\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"white\">\n <path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\" />\n </svg>\n </button>\n </div>\n\n <!-- Progress bar + times -->\n <div class=\"player-progress w-100\">\n <div class=\"d-flex justify-content-between\">\n <span class=\"player-time start-time\">{{ playbackStates[c.audioId]?.currentTime || '0:00' }}</span>\n <span class=\"player-time end-time\">{{ playbackStates[c.audioId]?.totalTime || c.duration }}</span>\n </div>\n\n <div class=\"progress-track\" (click)=\"seekAudio($event, c.audioId)\" style=\"cursor: pointer;\">\n <div class=\"progress-fill\" [style.width.%]=\"(playbackStates[c.audioId]?.progress || 0) * 100\">\n </div>\n </div>\n\n </div>\n <audio [id]=\"'audio-' + c.audioId\" [src]=\"c.audioUrl\"\n preload=\"metadata\"\n (timeupdate)=\"onTimeUpdate(audioPlayer, c.audioId)\"\n (loadedmetadata)=\"onLoadedMetadata(audioPlayer, c.audioId, c.duration)\"\n (ended)=\"playingConvId = null\" #audioPlayer>\n </audio>\n <!-- <audio #audioPlayer (timeupdate)=\"onTimeUpdate(audioPlayer)\"\n (loadedmetadata)=\"onLoadedMetadata(audioPlayer)\">\n </audio> -->\n\n <!-- Mute / Unmute button -->\n <button class=\"mute-btn\" (click)=\"toggleMute()\" [title]=\"isMuted ? 'Unmute' : 'Mute'\">\n <!-- Volume on -->\n <svg *ngIf=\"!isMuted\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path\n d=\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\" />\n </svg>\n <!-- Volume muted -->\n <svg *ngIf=\"isMuted\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path\n d=\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z\" />\n </svg>\n </button>\n\n </div>\n </div>\n\n <!-- Tabs -->\n <div class=\"border-layer mb-2\">\n\n <div class=\"conv-tabs\">\n <button class=\"conv-tab\" [class.active]=\"activeTab[c.audioId] !== 'transcript'\"\n (click)=\"$event.stopPropagation(); setTab(c.audioId, 'summary')\">Summary</button>\n <button class=\"conv-tab\" [class.active]=\"activeTab[c.audioId] === 'transcript'\"\n (click)=\"$event.stopPropagation(); setTab(c.audioId, 'transcript')\">Transcript</button>\n </div>\n\n <div class=\"conv-body-text mt-2\">\n <p *ngIf=\"activeTab[c.audioId] !== 'transcript'\">\n {{ c.conversationDetails.audioSummary }}\n </p>\n <p *ngIf=\"activeTab[c.audioId] === 'transcript'\">\n {{ c.conversationDetails.transcription }}\n </p>\n </div>\n </div>\n\n <!-- AI Insights -->\n <div class=\"ai-insights-box\">\n <div class=\"ai-insights-header\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"36\" height=\"37\" viewBox=\"0 0 36 37\" fill=\"none\">\n <mask id=\"path-1-inside-1_1849_13384\" fill=\"white\">\n <path\n d=\"M29.5151 29.3227L28.6156 28.4232L18.9244 18.732L21.7993 15.8571L22.4882 15.167C22.5539 15.1003 22.5909 15.0106 22.5914 14.917C22.5912 14.8707 22.5818 14.8249 22.5639 14.7822C22.5459 14.7396 22.5197 14.7009 22.4868 14.6683L21.7966 13.9781L18.7478 10.9239L18.0576 10.2337C18.025 10.2005 17.9861 10.1742 17.9432 10.1562C17.9002 10.1382 17.8542 10.1289 17.8076 10.1289C17.7611 10.1289 17.715 10.1382 17.6721 10.1562C17.6292 10.1742 17.5903 10.2005 17.5576 10.2337L16.8674 10.9253L13.1312 14.6615C13.098 14.694 13.0717 14.7328 13.0537 14.7756C13.0357 14.8185 13.0265 14.8644 13.0265 14.9108C13.0265 14.9573 13.0357 15.0032 13.0537 15.0461C13.0717 15.0889 13.098 15.1277 13.1312 15.1602L16.7003 18.7307L7.00777 28.4232L6.11243 29.3227C6.04604 29.3884 6.00842 29.4778 6.00781 29.5713C6.0082 29.6616 6.04265 29.7485 6.10428 29.8145C6.13718 29.8496 6.17695 29.8777 6.22111 29.8968C6.26528 29.916 6.31291 29.9259 6.36106 29.9259H15.0795C15.173 29.9255 15.2627 29.8882 15.3289 29.822C15.395 29.7559 15.4324 29.6662 15.4327 29.5726V28.7058C15.4327 28.612 15.3955 28.522 15.3293 28.4556C15.2631 28.3891 15.1733 28.3516 15.0795 28.3512H9.30524L17.8117 19.8448L26.3182 28.3512H20.4937C20.3999 28.3516 20.31 28.3891 20.2438 28.4556C20.1776 28.522 20.1404 28.612 20.1404 28.7058V29.5726C20.1402 29.6192 20.1494 29.6653 20.1674 29.7083C20.1853 29.7512 20.2118 29.7901 20.245 29.8226C20.311 29.8885 20.4004 29.9256 20.4937 29.9259H29.2651C29.3134 29.9261 29.3613 29.9163 29.4057 29.8971C29.4502 29.8779 29.4901 29.8498 29.5232 29.8145C29.5867 29.7478 29.6214 29.6589 29.6199 29.5669C29.6184 29.4749 29.5807 29.3872 29.5151 29.3227ZM17.8063 12.2105L20.514 14.9183L17.8131 17.6193L15.1053 14.9115L17.8063 12.2105Z\" />\n </mask>\n <path\n d=\"M29.5151 29.3227L-18.1139 76.9516L-17.9024 77.1631L-17.6891 77.3727L29.5151 29.3227ZM28.6156 28.4232L76.2446 -19.2057V-19.2057L28.6156 28.4232ZM18.9244 18.732L-28.7045 -28.8969L-76.3335 18.732L-28.7046 66.361L18.9244 18.732ZM21.7993 15.8571L69.4283 63.4861L69.4518 63.4626L69.4753 63.4391L21.7993 15.8571ZM22.4882 15.167L70.1641 62.7489L70.3095 62.6032L70.454 62.4566L22.4882 15.167ZM22.5914 14.917L89.9481 15.2605L89.9498 14.9226L89.9481 14.5848L22.5914 14.917ZM22.4868 14.6683L-25.1422 62.2973L-24.9939 62.4456L-24.8447 62.5929L22.4868 14.6683ZM21.7966 13.9781L-25.8748 61.5647L-25.8536 61.5859L-25.8324 61.6071L21.7966 13.9781ZM18.7478 10.9239L66.4192 -36.6626L66.398 -36.6839L66.3768 -36.7051L18.7478 10.9239ZM18.0576 10.2337L-29.9803 57.4502L-29.7767 57.6574L-29.5713 57.8627L18.0576 10.2337ZM17.5576 10.2337L65.2334 57.8159L65.4152 57.6337L65.5956 57.4502L17.5576 10.2337ZM16.8674 10.9253L64.4964 58.5542L64.5198 58.5308L64.5432 58.5074L16.8674 10.9253ZM13.1312 14.6615L60.2907 62.7554L60.5266 62.5241L60.7602 62.2905L13.1312 14.6615ZM13.0265 14.9108H80.384H13.0265ZM13.1312 15.1602L60.7692 -32.4597L60.5312 -32.6979L60.2907 -32.9337L13.1312 15.1602ZM16.7003 18.7307L64.3293 66.3596L111.949 18.7397L64.3384 -28.8892L16.7003 18.7307ZM7.00777 28.4232L-40.6212 -19.2057L-40.6753 -19.1517L-40.7292 -19.0975L7.00777 28.4232ZM6.11243 29.3227L53.5203 77.1717L53.6855 77.0081L53.8494 76.8434L6.11243 29.3227ZM6.00781 29.5713L-61.3483 29.1316L-61.3507 29.496L-61.3491 29.8604L6.00781 29.5713ZM6.10428 29.8145L-43.1376 75.774L-43.1037 75.8103L-43.0699 75.8465L6.10428 29.8145ZM6.36106 29.9259L6.33973 97.2834L6.3504 97.2834H6.36106V29.9259ZM15.0795 29.9259V97.2834H15.2083L15.3371 97.283L15.0795 29.9259ZM15.4327 29.5726L82.7898 29.8302L82.7903 29.7014V29.5726H15.4327ZM15.4327 28.7058L-51.9248 28.7053V28.7058H15.4327ZM15.0795 28.3512L15.3375 -39.0058L15.2085 -39.0063H15.0795V28.3512ZM9.30524 28.3512L-38.3237 -19.2778L-153.31 95.7088H9.30524V28.3512ZM17.8117 19.8448L65.4407 -27.7842L17.8117 -75.4132L-29.8173 -27.7842L17.8117 19.8448ZM26.3182 28.3512V95.7088H188.934L73.9472 -19.2778L26.3182 28.3512ZM20.4937 28.3512V-39.0063H20.3646L20.2356 -39.0058L20.4937 28.3512ZM20.1404 28.7058H87.498V28.7053L20.1404 28.7058ZM20.1404 29.5726L87.4975 29.831L87.498 29.7018V29.5726H20.1404ZM20.245 29.8226L67.8348 -17.8455L67.5897 -18.0902L67.3422 -18.3323L20.245 29.8226ZM20.4937 29.9259L20.3133 97.2832L20.4035 97.2834H20.4937V29.9259ZM29.2651 29.9259L29.5034 -37.4312L29.3842 -37.4317H29.2651V29.9259ZM29.5232 29.8145L-19.2474 -16.6449L-19.4503 -16.4319L-19.6513 -16.2171L29.5232 29.8145ZM17.8063 12.2105L65.4353 -35.4184L17.8063 -83.0474L-29.8227 -35.4184L17.8063 12.2105ZM20.514 14.9183L68.143 62.5473L115.772 14.9183L68.143 -32.7107L20.514 14.9183ZM17.8131 17.6193L-29.8159 65.2483L17.813 112.877L65.442 65.2483L17.8131 17.6193ZM15.1053 14.9115L-32.5237 -32.7174L-80.1527 14.9115L-32.5237 62.5405L15.1053 14.9115ZM29.5151 29.3227L77.144 -18.3063L76.2446 -19.2057L28.6156 28.4232L-19.0133 76.0522L-18.1139 76.9516L29.5151 29.3227ZM28.6156 28.4232L76.2446 -19.2057L66.5534 -28.8969L18.9244 18.732L-28.7046 66.361L-19.0133 76.0522L28.6156 28.4232ZM18.9244 18.732L66.5534 66.361L69.4283 63.4861L21.7993 15.8571L-25.8297 -31.7718L-28.7045 -28.8969L18.9244 18.732ZM21.7993 15.8571L69.4753 63.4391L70.1641 62.7489L22.4882 15.167L-25.1878 -32.415L-25.8766 -31.7248L21.7993 15.8571ZM22.4882 15.167L70.454 62.4566C82.8622 49.8711 89.8579 32.9334 89.9481 15.2605L22.5914 14.917L-44.7653 14.5734C-44.6761 -2.91221 -37.7544 -19.6705 -25.4777 -32.1227L22.4882 15.167ZM22.5914 14.917L89.9481 14.5848C89.9042 5.67953 88.104 -3.13075 84.6494 -11.3412L22.5639 14.7822L-39.5216 40.9056C-42.9404 32.7805 -44.7219 24.0618 -44.7653 15.2492L22.5914 14.917ZM22.5639 14.7822L84.6494 -11.3412C81.1952 -19.5504 76.1554 -26.9976 69.8183 -33.2563L22.4868 14.6683L-24.8447 62.5929C-31.1159 56.3994 -36.1034 49.0295 -39.5216 40.9056L22.5639 14.7822ZM22.4868 14.6683L70.1158 -32.9606L69.4256 -33.6508L21.7966 13.9781L-25.8324 61.6071L-25.1422 62.2973L22.4868 14.6683ZM21.7966 13.9781L69.468 -33.6084L66.4192 -36.6626L18.7478 10.9239L-28.9236 58.5105L-25.8748 61.5647L21.7966 13.9781ZM18.7478 10.9239L66.3768 -36.7051L65.6866 -37.3953L18.0576 10.2337L-29.5713 57.8627L-28.8811 58.5529L18.7478 10.9239ZM18.0576 10.2337L66.0956 -36.9828C59.7945 -43.3934 52.2793 -48.486 43.9879 -51.9624L17.9432 10.1562L-8.10155 72.2747C-16.3072 68.8343 -23.7445 63.7945 -29.9803 57.4502L18.0576 10.2337ZM17.9432 10.1562L43.9879 -51.9624C35.697 -55.4385 26.7972 -57.2286 17.8076 -57.2286V10.1289V77.4865C8.91115 77.4865 0.103456 75.7149 -8.10155 72.2747L17.9432 10.1562ZM17.8076 10.1289V-57.2286C8.81786 -57.2286 -0.0819659 -55.4384 -8.37262 -51.9624L17.6721 10.1562L43.7168 72.2747C35.512 75.7148 26.7043 77.4865 17.8076 77.4865V10.1289ZM17.6721 10.1562L-8.37262 -51.9624C-16.6635 -48.4862 -24.1788 -43.3938 -30.4803 -36.9828L17.5576 10.2337L65.5956 57.4502C59.3594 63.7949 51.9219 68.8345 43.7168 72.2747L17.6721 10.1562ZM17.5576 10.2337L-30.1181 -37.3484L-30.8083 -36.6569L16.8674 10.9253L64.5432 58.5074L65.2334 57.8159L17.5576 10.2337ZM16.8674 10.9253L-30.7615 -36.7037L-34.4978 -32.9674L13.1312 14.6615L60.7602 62.2905L64.4964 58.5542L16.8674 10.9253ZM13.1312 14.6615L-34.0284 -33.4323C-40.4566 -27.129 -45.5632 -19.6068 -49.0494 -11.3058L13.0537 14.7756L75.1568 40.8571C71.7066 49.0725 66.6526 56.5171 60.2907 62.7554L13.1312 14.6615ZM13.0537 14.7756L-49.0494 -11.3058C-52.5351 -3.00584 -54.3311 5.90682 -54.3311 14.9108H13.0265H80.384C80.384 23.822 78.6066 32.6427 75.1568 40.8571L13.0537 14.7756ZM13.0265 14.9108H-54.3311C-54.3311 23.9148 -52.5352 32.8274 -49.0494 41.1275L13.0537 15.0461L75.1568 -11.0354C78.6067 -2.82096 80.384 5.99978 80.384 14.9108H13.0265ZM13.0537 15.0461L-49.0494 41.1275C-45.5631 49.4288 -40.4564 56.9509 -34.0284 63.254L13.1312 15.1602L60.2907 -32.9337C66.6524 -26.6956 71.7065 -19.2511 75.1568 -11.0354L13.0537 15.0461ZM13.1312 15.1602L-34.5069 62.7801L-30.9377 66.3506L16.7003 18.7307L64.3384 -28.8892L60.7692 -32.4597L13.1312 15.1602ZM16.7003 18.7307L-30.9287 -28.8983L-40.6212 -19.2057L7.00777 28.4232L54.6368 76.0522L64.3293 66.3596L16.7003 18.7307ZM7.00777 28.4232L-40.7292 -19.0975L-41.6246 -18.1981L6.11243 29.3227L53.8494 76.8434L54.7448 75.944L7.00777 28.4232ZM6.11243 29.3227L-41.2955 -18.5264C-54.0208 -5.91838 -61.2314 11.2185 -61.3483 29.1316L6.00781 29.5713L73.3639 30.011C73.2482 47.7372 66.1129 64.6952 53.5203 77.1717L6.11243 29.3227ZM6.00781 29.5713L-61.3491 29.8604C-61.2759 46.9123 -54.7721 63.3086 -43.1376 75.774L6.10428 29.8145L55.3461 -16.1451C66.8574 -3.81166 73.2923 12.4109 73.3647 29.2822L6.00781 29.5713ZM6.10428 29.8145L-43.0699 75.8465C-36.7393 82.6091 -29.0879 88.0015 -20.5883 91.6892L6.22111 29.8968L33.0305 -31.8955C41.4417 -28.2462 49.0137 -22.9099 55.2784 -16.2175L6.10428 29.8145ZM6.22111 29.8968L-20.5883 91.6892C-12.0905 95.3761 -2.92551 97.2805 6.33973 97.2834L6.36106 29.9259L6.38239 -37.4317C15.5513 -37.4287 24.621 -35.5441 33.0305 -31.8955L6.22111 29.8968ZM6.36106 29.9259V97.2834H15.0795V29.9259V-37.4317H6.36106V29.9259ZM15.0795 29.9259L15.3371 97.283C33.2059 97.2146 50.323 90.0859 62.9578 77.451L15.3289 29.822L-32.3001 -17.8069C-19.7976 -30.3095 -2.85977 -37.3635 14.8219 -37.4312L15.0795 29.9259ZM15.3289 29.822L62.9578 77.451C75.5938 64.815 82.7215 47.6975 82.7898 29.8302L15.4327 29.5726L-51.9243 29.3151C-51.8567 11.635 -44.8037 -5.30332 -32.3001 -17.8069L15.3289 29.822ZM15.4327 29.5726H82.7903V28.7058H15.4327H-51.9248V29.5726H15.4327ZM15.4327 28.7058L82.7903 28.7063C82.7904 10.7927 75.692 -6.39093 63.0497 -19.0819L15.3293 28.4556L-32.391 75.993C-44.9009 63.435 -51.925 46.4314 -51.9248 28.7053L15.4327 28.7058ZM15.3293 28.4556L63.0497 -19.0819C50.408 -31.7721 33.2521 -38.9372 15.3375 -39.0058L15.0795 28.3512L14.8214 95.7083C-2.90555 95.6404 -19.8818 88.5503 -32.391 75.993L15.3293 28.4556ZM15.0795 28.3512V-39.0063H9.30524V28.3512V95.7088H15.0795V28.3512ZM9.30524 28.3512L56.9342 75.9802L65.4407 67.4737L17.8117 19.8448L-29.8173 -27.7842L-38.3237 -19.2778L9.30524 28.3512ZM17.8117 19.8448L-29.8173 67.4737L-21.3108 75.9802L26.3182 28.3512L73.9472 -19.2778L65.4407 -27.7842L17.8117 19.8448ZM26.3182 28.3512V-39.0063H20.4937V28.3512V95.7088H26.3182V28.3512ZM20.4937 28.3512L20.2356 -39.0058C2.32124 -38.9372 -14.8348 -31.7723 -27.4765 -19.0819L20.2438 28.4556L67.9641 75.993C55.4548 88.5505 38.4785 95.6404 20.7517 95.7083L20.4937 28.3512ZM20.2438 28.4556L-27.4765 -19.0819C-40.1185 -6.39129 -47.2173 10.7922 -47.2171 28.7063L20.1404 28.7058L87.498 28.7053C87.4981 46.4319 80.4737 63.4354 67.9641 75.993L20.2438 28.4556ZM20.1404 28.7058H-47.2171V29.5726H20.1404H87.498V28.7058H20.1404ZM20.1404 29.5726L-47.2166 29.3143C-47.2514 38.3759 -45.4668 47.352 -41.9688 55.7109L20.1674 29.7083L82.3035 3.70562C85.7656 11.9786 87.5319 20.8625 87.4975 29.831L20.1404 29.5726ZM20.1674 29.7083L-41.9688 55.7109C-38.4705 64.0703 -33.33 71.642 -26.8521 77.9776L20.245 29.8226L67.3422 -18.3323C73.7535 -12.0618 78.8412 -4.56794 82.3035 3.70562L20.1674 29.7083ZM20.245 29.8226L-27.3447 77.4908C-14.6945 90.1202 2.43691 97.2353 20.3133 97.2832L20.4937 29.9259L20.6741 -37.4314C38.3639 -37.384 55.3166 -30.3431 67.8348 -17.8455L20.245 29.8226ZM20.4937 29.9259V97.2834H29.2651V29.9259V-37.4317H20.4937V29.9259ZM29.2651 29.9259L29.0267 97.283C38.3372 97.316 47.552 95.4284 56.0962 91.7409L29.4057 29.8971L2.71525 -31.9467C11.1706 -35.5959 20.2897 -37.4638 29.5034 -37.4312L29.2651 29.9259ZM29.4057 29.8971L56.0962 91.7409C64.643 88.0523 72.3369 82.6412 78.6977 75.8461L29.5232 29.8145L-19.6513 -16.2171C-13.3566 -22.9416 -5.74266 -28.2965 2.71525 -31.9467L29.4057 29.8971ZM29.5232 29.8145L78.2938 76.2738C90.5543 63.4034 97.2628 46.2265 96.9682 28.4506L29.6199 29.5669L-37.7284 30.6832C-38.02 13.0914 -31.3809 -3.9077 -19.2474 -16.6449L29.5232 29.8145ZM29.6199 29.5669L96.9682 28.4506C96.6736 10.6753 89.3999 -6.26998 76.7192 -18.7274L29.5151 29.3227L-17.6891 77.3727C-30.2385 65.0443 -37.4368 48.2744 -37.7284 30.6832L29.6199 29.5669ZM17.8063 12.2105L-29.8227 59.8395L-27.1149 62.5473L20.514 14.9183L68.143 -32.7107L65.4353 -35.4184L17.8063 12.2105ZM20.514 14.9183L-27.1149 -32.7107L-29.8159 -30.0097L17.8131 17.6193L65.442 65.2483L68.143 62.5473L20.514 14.9183ZM17.8131 17.6193L65.4421 -30.0097L62.7343 -32.7174L15.1053 14.9115L-32.5237 62.5405L-29.8159 65.2483L17.8131 17.6193ZM15.1053 14.9115L62.7343 62.5405L65.4353 59.8395L17.8063 12.2105L-29.8227 -35.4184L-32.5237 -32.7174L15.1053 14.9115Z\"\n fill=\"#00A3FF\" mask=\"url(#path-1-inside-1_1849_13384)\" />\n <path\n d=\"M26.2537 0.740234L26.6974 2.58437C26.9235 3.52457 27.4255 4.3977 28.1545 5.11862C28.8836 5.83954 29.8147 6.38366 30.8571 6.69791L31.8394 6.99391L30.8571 7.28992C29.8147 7.60417 28.8836 8.14828 28.1545 8.86921C27.4255 9.59013 26.9235 10.4633 26.6974 11.4035L26.2537 13.2476L25.81 11.4035C25.5839 10.4633 25.0819 9.59013 24.3528 8.86921C23.6238 8.14828 22.6927 7.60417 21.6503 7.28992L20.668 6.99391L21.6503 6.69791C22.6927 6.38366 23.6238 5.83954 24.3528 5.11862C25.0819 4.3977 25.5839 3.52457 25.81 2.58437L26.2537 0.740234Z\"\n fill=\"url(#paint0_linear_1849_13384)\" />\n <path\n d=\"M9.9244 9.51351L9.77279 8.86035L9.62117 9.51351C9.51252 9.98254 9.26666 10.4192 8.90739 10.7812C8.54812 11.1433 8.0876 11.4184 7.57042 11.58L7.37891 11.6398L7.57042 11.6995C8.0876 11.8611 8.54812 12.1363 8.90739 12.4983C9.26666 12.8603 9.51252 13.297 9.62117 13.766L9.77279 14.4192L9.9244 13.766C10.033 13.297 10.2789 12.8603 10.6382 12.4983C10.9975 12.1363 11.458 11.8611 11.9752 11.6995L12.1667 11.6398L11.9752 11.58C11.458 11.4184 10.9975 11.1433 10.6382 10.7812C10.2789 10.4192 10.033 9.98254 9.9244 9.51351Z\"\n fill=\"url(#paint1_linear_1849_13384)\" />\n <path opacity=\"0.6\"\n d=\"M7.68961 21.5624L7.50608 20.6758L7.32334 21.5631C7.27549 21.7943 7.16109 22.0112 6.99084 22.1935C6.82059 22.3758 6.60005 22.5175 6.34983 22.6054L5.91016 22.7603L6.34983 22.9153C6.6 23.0034 6.82045 23.1452 6.99056 23.3276C7.16067 23.51 7.27489 23.727 7.32255 23.9583L7.50608 24.8449L7.68881 23.9576C7.73667 23.7263 7.85107 23.5095 8.02131 23.3272C8.19156 23.1449 8.4121 23.0032 8.66232 22.9153L9.102 22.7603L8.66232 22.6054C8.41215 22.5173 8.19171 22.3755 8.0216 22.1931C7.85149 22.0107 7.73726 21.7937 7.68961 21.5624Z\"\n fill=\"url(#paint2_linear_1849_13384)\" />\n <defs>\n <linearGradient id=\"paint0_linear_1849_13384\" x1=\"23.46\" y1=\"13.9422\" x2=\"23.46\" y2=\"0.0451625\"\n gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#117FF5\" stop-opacity=\"0.2\" />\n <stop offset=\"1\" stop-color=\"#0591FF\" />\n </linearGradient>\n <linearGradient id=\"paint1_linear_1849_13384\" x1=\"15.7575\" y1=\"22.7574\" x2=\"15.7575\" y2=\"8.86035\"\n gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"white\" />\n <stop offset=\"1\" stop-color=\"#0591FF\" />\n </linearGradient>\n <linearGradient id=\"paint2_linear_1849_13384\" x1=\"5.91016\" y1=\"20.6758\" x2=\"9.102\" y2=\"20.6758\"\n gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#00A3FF\" />\n <stop offset=\"1\" stop-color=\"#33B5FF\" />\n </linearGradient>\n </defs>\n </svg>\n <span class=\"ai-insights-title text-dark\">{{ c.aiInsights.title }}</span>\n </div>\n <ul class=\"ai-insights-list bg-white my-4 p-4 rounded-lg\">\n <li *ngFor=\"let insight of c.aiInsights.summary\">\n <span class=\"insight-bullet-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#33B5FF\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n {{ insight }}\n </li>\n </ul>\n </div>\n\n </div>\n\n <!-- Right: Metrics -->\n <div class=\"conv-right\">\n <div class=\"metrics-panel\">\n <div class=\"metrics-title\">Metrics</div>\n\n <ng-container *ngFor=\"let m of c.metrics; let mi = index\">\n\n <!-- BOOLEAN_BASKET -->\n <ng-container *ngIf=\"m.type === 'BOOLEAN_BASKET'\">\n <div class=\"metric-section-label mb-1\">{{ m.name }}</div>\n <div class=\"metric-row-item\" *ngFor=\"let row of m.value\">\n <span class=\"metric-key\"><span class=\"dot\"></span>{{ row.name }}</span>\n <strong class=\"metric-val\">{{ row.score }}</strong>\n </div>\n <div class=\"metric-divider\"></div>\n </ng-container>\n\n <!-- NUMERIC_SCALAR -->\n <ng-container *ngIf=\"m.type === 'NUMERIC_SCALAR' || m.type === 'NUMERIC_ARRAY'\">\n <div class=\"metric-section-label mb-1\">{{ m.name }}</div>\n <div class=\"metric-row-item\" *ngFor=\"let row of m.value\">\n <span class=\"metric-key\">Total</span>\n <strong class=\"metric-val\">{{ row.Total }}</strong>\n </div>\n <div class=\"metric-row-item\" *ngFor=\"let row of m.value\">\n <span class=\"metric-key\">Avg</span>\n <strong class=\"metric-val\">{{ row.Avg }}</strong>\n </div>\n <div class=\"metric-divider\"></div>\n </ng-container>\n\n <!-- SUBJECTIVE -->\n <ng-container *ngIf=\"m.type === 'SUBJECTIVE'\">\n <div class=\"metric-section-label mb-1\">{{ m.name }}</div>\n <ul class=\"metric-bullet-list metric-bullet-list--text\">\n <li *ngFor=\"let row of m.value\">{{ row.reasoning }}</li>\n </ul>\n <div class=\"metric-divider\"></div>\n </ng-container>\n\n </ng-container>\n\n </div>\n </div>\n\n </div>\n </div>\n\n </div>\n </div>\n <lib-pagination *ngIf=\"totalItems > 0\" [itemsPerPage]=\"pageSize\" [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\"\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\n </div>\n</div>", styles: ["@charset \"UTF-8\";.audio-page{padding:24px;background-color:#f5f7fa}.audio-page .header-row-container{background:#fff;padding:14px 24px;border-radius:8px;border:1px solid #e8edf3}.audio-page .section-title{font-size:16px;font-weight:600;color:#1a2b4b}.audio-page .total-audio-label{font-size:14px;color:#555}.audio-page .total-audio-label strong{font-weight:700;color:#1a2b4b}.audio-page .cohort-dropdown{position:relative}.audio-page .cohort-dropdown .cohort-dropdown-trigger{display:flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid #D0D5DD;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;color:#344054;-webkit-user-select:none;user-select:none;transition:border-color .2s,background .2s;min-width:150px;justify-content:space-between}.audio-page .cohort-dropdown .cohort-dropdown-trigger svg{transition:transform .2s ease;flex-shrink:0}.audio-page .cohort-dropdown .cohort-dropdown-trigger svg.rotate{transform:rotate(180deg)}.audio-page .cohort-dropdown .cohort-dropdown-menu{position:absolute;top:calc(100% + 4px);left:0;z-index:999;min-width:180px;background:#fff;border:1px solid #D0D5DD;border-radius:8px;padding:6px;box-shadow:0 12px 16px -4px #10182814,0 4px 6px -2px #10182808}.audio-page .cohort-dropdown .cohort-dropdown-menu .cohort-option{padding:10px 12px;font-size:14px;color:#344054;border-radius:6px;cursor:pointer;transition:background .15s}.audio-page .cohort-dropdown .cohort-dropdown-menu .cohort-option:hover{background:#f9fafb}.audio-page .cohort-dropdown .cohort-dropdown-menu .cohort-option.selected{background:#eaf8ff;color:#00a3ff;font-weight:600}.audio-page .stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;overflow:hidden}.audio-page .stats-grid .cards-full-loader{grid-column:1/-1;min-height:120px;padding:24px}.audio-page .ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #eaecf0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.audio-page .stat-card{background:#fff;border-radius:12px;border:1px solid #EAECF0;box-shadow:0 1px 2px #1018280d;min-width:0;overflow:hidden}.audio-page .stat-card .stat-card-header{padding:16px 20px;border-bottom:1px solid #EAECF0;font-weight:600;font-size:17px;color:#101828}.audio-page .stat-card .stat-card-body{max-height:300px;overflow-y:auto;overflow-x:hidden}.audio-page .stat-card .stat-row{display:flex;align-items:center;padding:12px 0;border-bottom:1px solid #F2F4F7}.audio-page .stat-card .stat-row:last-child{border-bottom:none}.audio-page .stat-card .stat-row .stat-label{font-size:14px;font-weight:500;color:#344054;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-page .stat-card .stat-row .stat-values{display:flex;align-items:center;gap:8px;flex-shrink:0}.audio-page .stat-card .stat-row .stat-values .stat-number{font-size:14px;font-weight:700;color:#101828;min-width:24px;text-align:right}.audio-page .stat-card .stat-row .stat-values .stat-meta{font-size:12px;color:#1d2939;font-weight:400;margin-right:4px}.audio-page .stat-card .stat-row .stat-values .stat-score{font-size:14px;font-weight:700;color:#101828}.audio-page .stat-card .stat-row .stat-values .stat-score-label{font-size:12px;color:#1d2939;font-weight:400}.audio-page .stat-card .cohort-table{border-collapse:collapse;font-size:13px}.audio-page .stat-card .cohort-table thead tr{background:#f9fafb}.audio-page .stat-card .cohort-table th{padding:8px 10px;font-size:12px;font-weight:600;color:#667085;border-bottom:1px solid #EAECF0;white-space:nowrap}.audio-page .stat-card .cohort-table td{padding:8px 10px;color:#344054;border-bottom:1px solid #F2F4F7;vertical-align:middle;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-page .stat-card .cohort-table tbody tr:last-child td{border-bottom:none}.audio-page .stat-card .cohort-table tbody tr:hover{background:#f9fafb}.audio-page .stat-card .pitch-row,.audio-page .stat-card .subjective-row{display:flow;align-items:center;gap:0;padding:10px 0;border-bottom:1px solid #F2F4F7}.audio-page .stat-card .pitch-row:last-child,.audio-page .stat-card .subjective-row:last-child{border-bottom:none}.audio-page .stat-card .pitch-row .pitch-id,.audio-page .stat-card .subjective-row .pitch-id{font-weight:600;color:#101828;font-size:13px;flex:0 0 45%;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:8px}.audio-page .stat-card .pitch-row .pitch-desc,.audio-page .stat-card .subjective-row .pitch-desc{font-size:13px;color:#344054;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.audio-page .export-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 16px;border:1px solid #d0d7e2;border-radius:6px;background:#fff;font-size:14px;color:#344054;cursor:pointer}.audio-page .export-btn:hover{background:#f5f7fa}.audio-page .chat-section{text-align:center;padding:32px 0}.audio-page .chat-section .chat-title-group{margin-bottom:24px}.audio-page .chat-section .chat-title{font-size:32px;font-weight:700;color:#00a3ff;margin:0;display:flex;align-items:center;justify-content:center}.audio-page .chat-section .chat-title .tango-icon-wrap{display:flex;align-items:center;gap:8px}.audio-page .chat-section .chat-title .tango-icon-wrap svg{display:block}.audio-page .chat-section .chat-subtext{font-size:14px;color:#667085;font-weight:500;margin-top:4px}.audio-page .chat-section .btn-chat-history{background:#fff;border:1px solid #D0D5DD;border-radius:100px;padding:8px 16px;font-size:12px;font-weight:600;color:#344054;cursor:pointer;box-shadow:0 1px 2px #1018280d;transition:all .2s ease}.audio-page .chat-section .btn-chat-history:hover{background:#f9fafb;border-color:#98a2b3}.audio-page .chat-section .chat-input-wrapper{display:flex;align-items:center;background:#fff;border:1px solid #D0D5DD;border-radius:12px;padding:8px 12px;width:100%;max-width:600px;box-shadow:0 4px 10px #0000000d;position:relative}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap{position:relative;flex-shrink:0;margin-right:8px}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus{width:28px;height:28px;border-radius:50%;border:1.5px solid #D0D5DD;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#344054;font-size:16px;font-weight:600;line-height:1;transition:background .15s,border-color .15s}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus:hover,.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus.open{background:#f2f4f7;border-color:#009bf3;color:#009bf3}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup{position:absolute;bottom:calc(100% + 8px);left:0;background:#fff;border:1px solid #EAECF0;border-radius:12px;box-shadow:0 8px 24px #1018281f;padding:6px;min-width:210px;z-index:200;animation:popupFadeInAudio .15s ease-out}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-section-label{font-size:11px;font-weight:600;color:#98a2b3;text-transform:uppercase;letter-spacing:.5px;padding:6px 12px 4px}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;border-radius:8px;padding:9px 12px;font-size:13px;font-weight:500;color:#344054;cursor:pointer;text-align:left;transition:background .12s}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item .check-icon{margin-left:auto}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item.selected{background:#f0f9ff;color:#009bf3}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item:hover:not(.selected){background:#f9fafb;color:#101828}.audio-page .chat-section .chat-input-wrapper .model-version-tag{font-size:11px;font-weight:700;color:#009bf3;background:#eaf8ff;border:1px solid #B2E0FB;border-radius:6px;padding:2px 7px;white-space:nowrap;flex-shrink:0}.audio-page .chat-section .chat-input-wrapper .chat-input-field{flex:1;border:none;outline:none;font-size:14px;color:#101828;background:transparent}.audio-page .chat-section .chat-input-wrapper .chat-input-field::placeholder{color:#667085}.audio-page .chat-section .chat-input-wrapper .chat-input-actions{display:flex;align-items:center;gap:12px;color:#667085}.audio-page .chat-section .chat-input-wrapper .chat-input-actions .chat-icon-btn,.audio-page .chat-section .chat-input-wrapper .chat-input-actions .chat-send-btn{background:none;border:none;padding:4px;cursor:pointer;color:inherit;display:flex;align-items:center;justify-content:center;transition:color .2s ease}.audio-page .chat-section .chat-input-wrapper .chat-input-actions .chat-icon-btn:hover,.audio-page .chat-section .chat-input-wrapper .chat-input-actions .chat-send-btn:hover{color:#00a3ff}.audio-page input[type=text]:focus{box-shadow:none}.audio-page .ai-message-box{background:linear-gradient(135deg,#eaf8ff,#f0f9ff);border-radius:8px;padding:16px 20px}.audio-page .ai-message-box .ai-message-header{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:600;line-height:24px;color:#101828;margin-bottom:8px}.audio-page .ai-message-box .ai-message-header .ai-avatar-icon{font-size:20px;color:#3b7de5}.audio-page .ai-message-box .ai-message-body{font-weight:400;font-size:16px;line-height:24px;letter-spacing:0%;color:#344054;padding-left:28px}.audio-page .ai-message-box .ai-store-list{margin:8px 0 0;padding-left:20px}.audio-page .ai-message-box .ai-store-list li{margin-bottom:4px}.audio-page .conversations-count{font-size:15px;color:#1a2b4b;font-weight:600}.audio-page .active-filter-chip{display:inline-flex;align-items:center;gap:4px;background:#e8f0fe;border:1px solid #4a7fdd;border-radius:20px;padding:2px 10px 2px 12px;font-size:13px;font-weight:500;color:#1a2b4b}.audio-page .active-filter-chip .chip-label{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-page .active-filter-chip .chip-remove{background:none;border:none;cursor:pointer;font-size:16px;line-height:1;color:#4a7fdd;padding:0 0 0 2px}.audio-page .active-filter-chip .chip-remove:hover{color:#d32f2f}.audio-page .conversations-list{display:flex;flex-direction:column;gap:16px}.audio-page .conversation-card{background:#fff;border:1px solid #EAECF0;border-radius:12px;box-shadow:0 1px 2px #1018280d;overflow:hidden;transition:all .2s ease}.audio-page .conversation-card.is-expanded{border-color:#00a3ff;box-shadow:0 4px 12px #00a3ff14}.audio-page .conv-summary{padding:20px 24px;cursor:pointer}.audio-page .conv-summary .conv-id{font-size:16px;font-weight:700;color:#101828}.audio-page .conv-summary .conv-meta-row{display:flex;align-items:center;flex-wrap:wrap;gap:16px}.audio-page .conv-summary .conv-meta-row .meta-item{font-size:13px;font-weight:500;color:#667085;display:flex;align-items:center;gap:6px}.audio-page .conv-summary .conv-meta-row .meta-item i,.audio-page .conv-summary .conv-meta-row .meta-item svg{font-size:14px;color:#98a2b3;flex-shrink:0}.audio-page .conv-summary .conv-meta-row .meta-item .text-name{color:#98a2b3;font-weight:400}.audio-page .conv-summary .conv-meta-row .meta-item .name-val{color:#98a2b3;font-weight:600}.audio-page .conv-summary .conv-meta-row .meta-item .location-truncate{display:inline-block;max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.audio-page .conv-summary .conv-meta-row .meta-sep{width:1px;height:12px;background-color:#d0d5dd;margin:0 4px}.audio-page .conv-summary .conv-excerpt{font-size:14px;line-height:20px;color:#475467}.audio-page .conv-summary .eye-test-link{font-size:14px;font-weight:600;color:#00a3ff;text-decoration:none}.audio-page .conv-summary .eye-test-link:hover{text-decoration:underline}.audio-page .conv-summary .conv-toggle-btn{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:600;color:#667085}.audio-page .conv-summary .conv-toggle-btn svg{transition:transform .2s ease}.audio-page .conv-summary .conv-toggle-btn svg.rotate-180{transform:rotate(180deg)}.audio-page .conv-body{border-top:1px solid #EAECF0;background:#fcfcfd}.audio-page .conv-body-inner{position:relative;padding:24px 436px 24px 24px}.audio-page .conv-left{min-width:0}.audio-page .conv-right{position:absolute;top:24px;right:24px;bottom:24px;width:380px;display:flex;flex-direction:column;overflow-y:auto}.audio-page .recording-box{background:#fff;border:1px solid #EAECF0;border-radius:12px;padding:24px;box-shadow:0 1px 2px #1018280d}.audio-page .recording-box .recording-title{font-size:14px;font-weight:700;color:#101828;margin-bottom:24px}.audio-page .waveform-bars{position:relative;display:flex;align-items:center;gap:3px;height:72px;margin-bottom:14px;padding:4px 6px;border-radius:8px;transition:background .3s ease}.audio-page .waveform-bars:before{content:\"\";position:absolute;inset:0;border-radius:8px;background:#0a19371a;opacity:0;transition:opacity .3s ease;pointer-events:none;z-index:0}.audio-page .waveform-bars .wf-bar{position:relative;z-index:1;flex:1;border-radius:100px;min-height:4px;background:#d1e9ff;transform-origin:center;transition:background .1s}.audio-page .waveform-bars .wf-bar.wf-bar--played{background:#00a3ff}.audio-page .waveform-bars.is-playing .wf-bar{animation:wf-bounce .65s ease-in-out infinite}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(2n){animation-duration:.75s;animation-delay:.1s}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(3n){animation-duration:.5s;animation-delay:.22s}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(5n){animation-duration:.85s;animation-delay:.05s}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(7n){animation-duration:.42s;animation-delay:.18s}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(11n){animation-duration:.6s;animation-delay:.3s}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(13n){animation-duration:.7s;animation-delay:.08s}.audio-page .player-row{display:flex;align-items:center;gap:16px}.audio-page .player-row .play-btn-wrap{width:48px;height:48px;background:#00a3ff1a;border-radius:50%;display:flex;align-items:center;justify-content:center}.audio-page .player-row .play-btn-wrap .play-btn-circle{width:36px;height:36px;background:#00a3ff;border:none;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px;cursor:pointer;transition:background .2s ease}.audio-page .player-row .play-btn-wrap .play-btn-circle:hover{background:#0087d5}.audio-page .player-row .mute-btn{background:none;border:none;color:#667085;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center}.audio-page .player-row .mute-btn:hover{color:#101828}.audio-page .player-row .player-progress .progress-track{height:8px;background:#f2f4f7;border-radius:4px;overflow:hidden}.audio-page .player-row .player-progress .progress-track .progress-fill{height:100%;background:#00a3ff;border-radius:4px}.audio-page .player-row .player-progress .player-time{font-size:12px;font-weight:500;color:#667085}.audio-page .player-row .player-progress .player-time.start-time{color:#00a3ff}.audio-page .border-layer{background:#fff;border:1px solid #EAECF0;border-radius:12px;padding:24px}.audio-page .conv-tabs{display:flex;border-bottom:1px solid #EAECF0;gap:24px}.audio-page .conv-tab{background:none;border:none;padding:12px 0;font-size:14px;font-weight:600;color:#667085;cursor:pointer;position:relative;transition:color .2s ease}.audio-page .conv-tab.active{color:#00a3ff;background:#eaf8ff;padding:0 8px}.audio-page .conv-tab.active:after{content:\"\";position:absolute;bottom:-1px;left:0;right:0;height:2px;background:#00a3ff}.audio-page .conv-tab:hover:not(.active){color:#344054}.audio-page .conv-body-text{font-size:14px;line-height:24px;color:#475467}.audio-page .ai-insights-box{background:#f0f9ff;border:1px solid #B9E6FE;border-radius:12px;padding:20px;margin-top:20px}.audio-page .ai-insights-box .ai-insights-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}.audio-page .ai-insights-box .ai-insights-header .ai-icon-badge{width:32px;height:32px;background:#00a3ff;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.audio-page .ai-insights-box .ai-insights-header .ai-icon-badge svg{display:block}.audio-page .ai-insights-box .ai-insights-header .ai-insights-title{font-size:18px;font-weight:700;color:#101828}.audio-page .ai-insights-list{list-style:none;padding:0;margin:0}.audio-page .ai-insights-list li{display:flex;align-items:flex-start;gap:12px;font-size:14px;line-height:20px;color:#344054;margin-bottom:12px}.audio-page .ai-insights-list li:last-child{margin-bottom:0}.audio-page .ai-insights-list li .insight-bullet-icon{flex-shrink:0;margin-top:2px;color:#00a3ff}.audio-page .ai-insights-list li .insight-bullet-icon svg{display:block}.audio-page .metrics-panel{background:#fff;border:1px solid #EAECF0;border-radius:12px;padding:24px;box-shadow:0 1px 2px #1018280d;flex:1;overflow-y:auto}.audio-page .metrics-panel .metrics-title{font-size:16px;font-weight:700;color:#101828;border-bottom:1px solid #F2F4F7;padding-bottom:12px;margin-bottom:16px}.audio-page .metrics-panel .metric-row-item{display:flex;justify-content:space-between;align-items:center;padding:8px 0}.audio-page .metrics-panel .metric-row-item .metric-key{font-size:14px;font-weight:500;color:#475467;text-align:left;flex:1;display:flex;align-items:center;gap:8px}.audio-page .metrics-panel .metric-row-item .metric-key .dot:before{content:\"\\2022\";color:#000;font-size:18px}.audio-page .metrics-panel .metric-row-item .metric-val{font-size:14px;font-weight:700}.audio-page .metrics-panel .metric-row-item .metric-val.text-success{color:#12b76a}.audio-page .metrics-panel .metric-row-item .metric-val.text-primary{color:#00a3ff}.audio-page .metrics-panel .metric-divider{height:1px;background-color:#f2f4f7;margin:12px 0}.audio-page .metrics-panel .metric-section-label{font-size:15px;font-weight:600;color:#191919;letter-spacing:.5px}.audio-page .metrics-panel .metric-bullet-list li{display:flex;align-items:center;width:100%}.audio-page .metrics-panel .metric-bullet-list{list-style:none;padding:0;margin:0}.audio-page .metrics-panel .metric-bullet-list li{font-size:14px;color:#475467;display:flex;align-items:center;gap:8px;margin-bottom:4px}.audio-page .metrics-panel .metric-bullet-list li:before{content:\"\\2022\";color:#000;font-size:18px;margin-right:4px}.audio-page .metrics-panel .metric-bullet-list li .metric-pct{font-weight:700;color:#101828;margin-left:auto}.audio-page .metrics-panel .metric-bullet-list--text li{justify-content:flex-start}.audio-page .metrics-panel .metric-bullet-list--text li:before{margin-right:8px}.audio-page .pagination-row{display:flex;justify-content:center;margin-top:32px;padding-bottom:40px}.audio-page .pagination-row .pagination-list{display:flex;list-style:none;padding:0;gap:8px}.audio-page .pagination-row .pagination-list .page-item{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid #D0D5DD;background:#fff;font-size:14px;font-weight:600;color:#344054;cursor:pointer;transition:all .2s ease}.audio-page .pagination-row .pagination-list .page-item:hover{background:#f9fafb}.audio-page .pagination-row .pagination-list .page-item.active{background:#f0f9ff;border-color:#00a3ff;color:#00a3ff}.sparkle{font-size:10px;animation:twinkle 1.5s infinite ease-in-out}.chat-history-overlay .chat-history-session-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-radius:8px;cursor:pointer;margin-bottom:6px;border:1px solid #EAECF0;transition:background .15s}.chat-history-overlay .chat-history-session-item .session-title{font-size:14px;font-weight:500;color:#344054;flex:1;margin-right:8px}.chat-history-overlay .chat-history-msg.user{background:#f0f9ff;color:#101828;align-self:flex-end;border-radius:10px 10px 0}.chat-thread-header{display:flex;justify-content:flex-end;margin-bottom:8px}.chat-thread-header .btn-new-chat{display:flex;align-items:center;gap:6px;padding:6px 14px;background:#fff;border:1px solid #D0D5DD;border-radius:8px;font-size:13px;font-weight:600;color:#344054;cursor:pointer;transition:background .15s,border-color .15s}.chat-thread-header .btn-new-chat:hover{background:#f2f4f7;border-color:#009bf3;color:#009bf3}.chat-thread{border:1px solid #EAECF0;border-radius:12px;background:#fff;overflow:hidden}.chat-thread .chat-thread-messages{display:flex;flex-direction:column;gap:12px;max-height:350px;overflow-y:auto;padding:16px}.chat-thread .chat-thread-input{border-top:1px solid #EAECF0;padding:12px 16px;background:#fafbfc;display:flex;justify-content:center}.chat-msg{display:flex}.chat-msg.chat-msg--user{justify-content:flex-end}.chat-msg.chat-msg--ai{justify-content:flex-start}.chat-msg-bubble{max-width:80%;padding:12px 16px;border-radius:12px;font-size:14px;line-height:1.6}.chat-msg-bubble.chat-msg-bubble--user{background:#009af3;color:#fff;border-radius:12px 12px 0}.chat-msg-bubble.chat-msg-bubble--ai{background:linear-gradient(135deg,#eaf8ff,#f0f9ff);color:#344054;border-radius:12px 12px 12px 0;text-align:left}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-header{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:#101828;margin-bottom:8px}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-header .ai-avatar-icon{display:flex;align-items:center}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-body{font-size:14px;line-height:1.6;padding-left:30px}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-actions{display:flex;justify-content:flex-end;padding-top:6px}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-actions .btn-copy{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid #EAECF0;border-radius:6px;background:#fff;cursor:pointer;transition:background .15s,border-color .15s}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-actions .btn-copy:hover{background:#f2f4f7;border-color:#009bf3}@keyframes popupFadeInAudio{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}:host ::ng-deep .audio-tooltip .tooltip-inner{background:#1d2939;color:#fff;font-size:12px;font-weight:400;line-height:1.5;max-width:360px;white-space:normal;word-break:break-all;padding:8px 12px;border-radius:8px;text-align:left}:host ::ng-deep .audio-tooltip .tooltip-arrow:before{border-top-color:#1d2939}.transcript-page{padding:24px;background-color:#f5f7fa}.transcript-page .transcript-header-row{background:#fff;padding:14px 24px;border-radius:8px;border:1px solid #e8edf3}.transcript-page .section-title{font-size:16px;font-weight:600;color:#1a2b4b}.transcript-page .cohort-dropdown{position:relative}.transcript-page .cohort-dropdown .cohort-dropdown-trigger{display:flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid #D0D5DD;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;color:#344054;-webkit-user-select:none;user-select:none;transition:border-color .2s,background .2s;min-width:150px;justify-content:space-between}.transcript-page .cohort-dropdown .cohort-dropdown-trigger svg{transition:transform .2s ease;flex-shrink:0}.transcript-page .cohort-dropdown .cohort-dropdown-trigger svg.rotate{transform:rotate(180deg)}.transcript-page .cohort-dropdown .cohort-dropdown-menu{position:absolute;top:calc(100% + 4px);left:0;background:#fff;border:1px solid #D0D5DD;border-radius:8px;box-shadow:0 4px 16px #0000001a;z-index:200;min-width:180px;overflow:hidden}.transcript-page .cohort-dropdown .cohort-option{padding:10px 16px;font-size:14px;color:#344054;cursor:pointer;transition:background .15s}.transcript-page .cohort-dropdown .cohort-option:hover{background:#f0f4ff}.transcript-page .cohort-dropdown .cohort-option.selected{background:#e8f0fe;color:#1a73e8;font-weight:600}.transcript-page .transcript-search-wrap{position:relative;display:flex;align-items:center}.transcript-page .transcript-search-wrap .search-icon{position:absolute;left:10px;pointer-events:none}.transcript-page .transcript-search-wrap .transcript-search-input{height:38px;padding:0 32px 0 34px;border:1px solid #D0D5DD;border-radius:8px;font-size:14px;color:#344054;width:260px;outline:none;transition:border-color .2s}.transcript-page .transcript-search-wrap .transcript-search-input:focus{border-color:#84adff}.transcript-page .transcript-search-wrap .transcript-search-input::placeholder{color:#98a2b3}.transcript-page .transcript-search-wrap .search-clear-btn{position:absolute;right:8px;background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center}.transcript-page .btn-search{height:38px;padding:0 16px;background:#1a73e8;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:background .2s}.transcript-page .btn-search:hover{background:#1558b0}.transcript-page .export-btn{height:38px;display:flex;align-items:center}.transcript-page .export-btn .export-text{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:500}.transcript-page .conversation-area{border:1px solid #e8edf3}.transcript-page .conversations-count{font-size:14px;color:#344054}.transcript-page .conversation-card{border:1px solid #e8edf3;border-radius:10px;margin-bottom:12px;overflow:hidden;background:#fff}.transcript-page .conversation-card .conv-summary{padding:16px 20px;cursor:pointer;transition:background .15s}.transcript-page .conversation-card .conv-summary:hover{background:#f8fafc}.transcript-page .conversation-card .conv-summary-left{flex:1;min-width:0}.transcript-page .conversation-card .conv-id{font-size:13px;font-weight:600;color:#344054;background:#f0f4ff;border-radius:4px;padding:2px 8px}.transcript-page .conversation-card .conv-meta-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.transcript-page .conversation-card .meta-item{display:flex;align-items:center;gap:4px;font-size:13px;color:#667085}.transcript-page .conversation-card .meta-item .text-name{color:#98a2b3}.transcript-page .conversation-card .meta-item .name-val{color:#344054;font-weight:500}.transcript-page .conversation-card .meta-item .location-truncate{display:inline-block;max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.transcript-page .conversation-card .meta-sep{width:4px;height:4px;background:#d0d5dd;border-radius:50%;display:inline-block}.transcript-page .conversation-card .conv-excerpt{font-size:13px;color:#667085;line-height:1.5}.transcript-page .conversation-card .conv-toggle-btn{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:#344054;cursor:pointer;padding-left:16px;flex-shrink:0;align-self:flex-start;margin-top:16px}.transcript-page .conversation-card .conv-body{border-top:1px solid #e8edf3}.transcript-page .conversation-card .transcript-content .transcript-section{margin-bottom:20px}.transcript-page .conversation-card .transcript-content .transcript-section:last-child{margin-bottom:0}.transcript-page .conversation-card .transcript-content .transcript-section-title{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:#344054;margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid #f0f4ff}.transcript-page .conversation-card .transcript-content .transcript-summary-text{font-size:14px;color:#475467;line-height:1.7;margin:0}.transcript-page .conversation-card .transcript-content .transcript-text{font-size:14px;color:#475467;line-height:1.8;white-space:pre-wrap;background:#f8fafc;border-radius:8px;padding:16px;border:1px solid #e8edf3;max-height:400px;overflow-y:auto}.transcript-page .chat-section{text-align:center;padding:10px 0}.transcript-page .chat-section .chat-title{font-size:32px;font-weight:700;color:#00a3ff;margin:0;display:flex;align-items:center;justify-content:center}.transcript-page .chat-section .sparkle{display:inline-flex;align-items:center;margin-left:6px}.transcript-page .chat-section .chat-subtext{font-size:14px;color:#667085;font-weight:500;margin-top:4px}.transcript-page .chat-section .chat-input-wrapper{display:flex;align-items:center;background:#fff;border:1px solid #D0D5DD;border-radius:12px;padding:8px 12px;width:100%;max-width:600px;box-shadow:0 4px 10px #0000000d;position:relative}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap{position:relative;flex-shrink:0;margin-right:8px}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus{width:28px;height:28px;border-radius:50%;border:1.5px solid #D0D5DD;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#344054;font-size:16px;font-weight:600;transition:background .15s,border-color .15s}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus:hover,.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus.open{background:#f2f4f7;border-color:#009bf3;color:#009bf3}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup{position:absolute;bottom:calc(100% + 8px);left:0;background:#fff;border:1px solid #EAECF0;border-radius:12px;box-shadow:0 8px 24px #1018281f;padding:6px;min-width:210px;z-index:200;animation:popupFadeInTranscript .15s ease-out}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-section-label{font-size:11px;font-weight:600;color:#98a2b3;text-transform:uppercase;letter-spacing:.5px;padding:6px 12px 4px}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;border-radius:8px;padding:9px 12px;font-size:13px;font-weight:500;color:#344054;cursor:pointer;text-align:left;transition:background .12s}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item .check-icon{margin-left:auto}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item.selected{background:#f0f9ff;color:#009bf3}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item:hover:not(.selected){background:#f9fafb;color:#101828}.transcript-page .chat-section .chat-input-wrapper .chat-input-field{flex:1;border:none;outline:none;font-size:14px;color:#101828;background:transparent}.transcript-page .chat-section .chat-input-wrapper .chat-input-field::placeholder{color:#667085}.transcript-page .chat-section .chat-input-wrapper .chat-input-actions{display:flex;align-items:center;gap:12px;color:#667085}.transcript-page .chat-section .chat-input-wrapper .chat-input-actions .chat-icon-btn,.transcript-page .chat-section .chat-input-wrapper .chat-input-actions .chat-send-btn{background:none;border:none;padding:4px;cursor:pointer;color:inherit;display:flex;align-items:center;justify-content:center;transition:color .2s ease}.transcript-page .chat-section .chat-input-wrapper .chat-input-actions .chat-icon-btn:hover,.transcript-page .chat-section .chat-input-wrapper .chat-input-actions .chat-send-btn:hover{color:#00a3ff}.transcript-page input[type=text]:focus{box-shadow:none}.transcript-page .chat-messages-area{flex:1;padding:24px 16px;overflow-y:auto;display:flex;flex-direction:column;gap:24px;max-height:650px}.transcript-page .chat-messages-area.scrollbar-hidden{scrollbar-width:none}.transcript-page .chat-messages-area.scrollbar-hidden::-webkit-scrollbar{display:none}.transcript-page .message-wrapper{display:flex;flex-direction:column;max-width:85%}.transcript-page .message-wrapper.user{align-self:flex-end}.transcript-page .message-wrapper.user .message{flex-direction:row-reverse}.transcript-page .message-wrapper.user .message .message-bubble{background:#fff;color:#101828;border-radius:12px 12px 0;position:relative;padding-right:40px}.transcript-page .message{display:flex;gap:12px}.transcript-page .message.assistant{align-self:flex-start}.transcript-page .message.assistant .message-avatar{flex-shrink:0;margin-top:14px}.transcript-page .message.assistant .message-content{display:flex;flex-direction:column;gap:8px}.transcript-page .message.assistant .message-bubble{color:#101828;border-radius:12px 12px 12px 0}.transcript-page .message.assistant .message-bubble.typing{display:flex;align-items:center;gap:4px;padding:12px 20px}.transcript-page .message.assistant .message-bubble.typing .dot{width:6px;height:6px;background:#00a3ff;border-radius:50%;display:inline-block;animation:typingAnimation 1.4s infinite ease-in-out both}.transcript-page .message.assistant .message-bubble.typing .dot:nth-child(1){animation-delay:-.32s}.transcript-page .message.assistant .message-bubble.typing .dot:nth-child(2){animation-delay:-.16s}.transcript-page .message .message-bubble{padding:6px;font-size:15px;line-height:24px;position:relative}.transcript-page .message .message-bubble p{margin:0 0 6px;white-space:pre-wrap}.transcript-page .message .message-bubble p:last-child{margin-bottom:0}.transcript-page .message .message-bubble h3,.transcript-page .message .message-bubble h4,.transcript-page .message .message-bubble h5{margin:8px 0 4px;font-weight:700;line-height:1.4}.transcript-page .message .message-bubble h3{font-size:17px}.transcript-page .message .message-bubble h4{font-size:16px}.transcript-page .message .message-bubble h5{font-size:15px}.transcript-page .message .message-bubble strong{font-weight:700}.transcript-page .message .message-bubble em{font-style:italic}.transcript-page .message .message-bubble ul{margin:4px 0;padding-left:18px}.transcript-page .message .message-bubble ul li{margin-bottom:2px}.transcript-page .message .message-bubble .msg-sender-tag{position:absolute;right:6px;bottom:16px;background:#eaf8ff;color:#00a3ff;font-size:10px;font-weight:700;padding:2px 8px;border-radius:50%}.transcript-page .message .message-actions{display:flex;gap:8px}.transcript-page .message .message-actions .btn-copy{background:none;border:none;padding:4px;cursor:pointer;color:#667085;display:flex;align-items:center;justify-content:center;opacity:.6;transition:opacity .2s}.transcript-page .message .message-actions .btn-copy:hover{opacity:1}.transcript-page .copy-feedback-toast{position:fixed;bottom:120px;left:50%;transform:translate(-50%);background:#101828;color:#fff;padding:8px 16px;border-radius:8px;font-size:14px;font-weight:500;z-index:1000;box-shadow:0 4px 12px #0000001a;animation:fadeInOut 2s ease-in-out forwards}.transcript-page .chat-footer{padding:12px 16px;background:#fff}.transcript-page .chat-footer .input-wrapper{display:flex;align-items:center;background:#fff;border:1px solid #D0D5DD;border-radius:8px;padding:8px 20px;box-shadow:0 1px 2px #1018280d}.transcript-page .chat-footer .input-wrapper .chat-input{flex:1;border:none;outline:none;font-size:15px;color:#101828}.transcript-page .chat-footer .input-wrapper .btn-send{background:none;border:none;color:#00a3ff;cursor:pointer;display:flex;align-items:center;transition:transform .2s}.transcript-page .chat-footer .input-wrapper .btn-send:hover{transform:scale(1.1)}.transcript-page .recording-box{background:#fff;border:1px solid #EAECF0;border-radius:12px;padding:24px;box-shadow:0 1px 2px #1018280d}.transcript-page .recording-box .recording-title{font-size:14px;font-weight:700;color:#101828;margin-bottom:24px}@keyframes wf-bounce{0%{transform:scaleY(1)}50%{transform:scaleY(.28)}to{transform:scaleY(.75)}}.transcript-page .waveform-bars{position:relative;display:flex;align-items:center;gap:2px;height:72px;margin-bottom:14px;padding:4px 6px;border-radius:8px;transition:background .3s ease}.transcript-page .waveform-bars:before{content:\"\";position:absolute;inset:0;border-radius:8px;background:#0a19371a;opacity:0;transition:opacity .3s ease;pointer-events:none;z-index:0}.transcript-page .waveform-bars .wf-bar{position:relative;z-index:1;flex:1 1 0;border-radius:100px;min-height:4px;background:#d1e9ff;transform-origin:center;transition:background .1s}.transcript-page .waveform-bars .wf-bar.wf-bar--played{background:#00a3ff}.transcript-page .waveform-bars.is-playing .wf-bar{animation:wf-bounce .65s ease-in-out infinite}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(2n){animation-duration:.75s;animation-delay:.1s}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(3n){animation-duration:.5s;animation-delay:.22s}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(5n){animation-duration:.85s;animation-delay:.05s}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(7n){animation-duration:.42s;animation-delay:.18s}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(11n){animation-duration:.6s;animation-delay:.3s}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(13n){animation-duration:.7s;animation-delay:.08s}.transcript-page .player-row{display:flex;align-items:center;gap:16px}.transcript-page .player-row .play-btn-wrap{width:48px;height:48px;background:#00a3ff1a;border-radius:50%;display:flex;align-items:center;justify-content:center}.transcript-page .player-row .play-btn-wrap .play-btn-circle{width:36px;height:36px;background:#00a3ff;border:none;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s ease}.transcript-page .player-row .play-btn-wrap .play-btn-circle:hover{background:#0087d5}.transcript-page .player-row .mute-btn{background:none;border:none;color:#667085;cursor:pointer;display:flex;align-items:center;justify-content:center}.transcript-page .player-row .mute-btn:hover{color:#101828}.transcript-page .player-row .player-progress .progress-track{height:8px;background:#f2f4f7;border-radius:4px;overflow:hidden}.transcript-page .player-row .player-progress .progress-track .progress-fill{height:100%;background:#00a3ff;border-radius:4px}.transcript-page .player-row .player-progress .player-time{font-size:12px;font-weight:500;color:#667085}.transcript-page .player-row .player-progress .player-time.start-time{color:#00a3ff}.transcript-page .shimmer{width:100%}.transcript-page .shimmer .wrapper{padding:8px}.transcript-page .shimmer .wrapper .stroke{height:12px;border-radius:4px;background:#e0e0e0;margin-bottom:8px}.transcript-page .shimmer .wrapper .stroke.title{width:60%}.transcript-page .shimmer .wrapper .stroke.link{width:40%}.transcript-page .shimmer .wrapper .stroke.description{width:80%}.transcript-page .shimmer .wrapper .stroke.animate{animation:shimmer 1.4s infinite linear;background:linear-gradient(to right,#eee 8%,#ddd 18%,#eee 33%);background-size:800px 104px}@keyframes shimmer{0%{background-position:-468px 0}to{background-position:468px 0}}.transcript-page .nodata-title{font-size:15px;font-weight:600;color:#344054;margin-top:8px}.transcript-page .nodata-sub{font-size:13px;color:#98a2b3;margin-top:4px;text-align:center}.chat-history-backdrop{position:fixed;inset:0;z-index:999;background:transparent}.chat-history-overlay{position:fixed;top:0;right:0;height:100vh;width:340px;background:#fff;box-shadow:-4px 0 24px #0000001f;z-index:1000;display:flex;flex-direction:column;transform:translate(100%);transition:transform .3s ease}.chat-history-overlay.open{transform:translate(0)}.chat-history-overlay .chat-history-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid #EAECF0}.chat-history-overlay .chat-history-header .chat-history-title{font-size:15px;font-weight:700;color:#101828}.chat-history-overlay .chat-history-header .chat-history-close{background:none;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;border-radius:6px}.chat-history-overlay .chat-history-header .chat-history-close:hover{background:#f2f4f7}.chat-history-overlay .chat-history-body{flex:1;overflow-y:auto;padding:20px}.chat-history-overlay .chat-history-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:12px;color:#98a2b3;font-size:14px;text-align:center}.chat-history-overlay .chat-history-session-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-radius:8px;margin-bottom:6px;border:1px solid #EAECF0;transition:background .15s}.chat-history-overlay .chat-history-session-item:hover{background:#f2f4f7}.chat-history-overlay .chat-history-session-item .session-title{font-size:14px;font-weight:500;color:#344054;flex:1;margin-right:8px;cursor:pointer}.chat-history-overlay .chat-history-session-item .btn-continue-inline{background:#009bf3;color:#fff;border:none;cursor:pointer;padding:4px 12px;font-size:12px;font-weight:600;border-radius:6px;flex-shrink:0;transition:background .15s}.chat-history-overlay .chat-history-session-item .btn-continue-inline:hover{background:#0087d5}.chat-history-overlay .chat-history-session-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.chat-history-overlay .chat-history-session-back{display:flex;align-items:center;gap:4px;font-size:13px;font-weight:600;color:#009bf3;cursor:pointer}.chat-history-overlay .chat-history-session-back:hover{opacity:.8}.chat-history-overlay .chat-history-messages{display:flex;flex-direction:column;gap:12px}.chat-history-overlay .btn-continue-chat{width:100%;margin-top:16px;padding:10px 16px;background:#009bf3;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:background .2s}.chat-history-overlay .btn-continue-chat:hover{background:#0087d5}.chat-history-overlay .chat-history-msg{padding:10px 14px;border-radius:10px;font-size:13px;line-height:1.5}.chat-history-overlay .chat-history-msg.user{background:#f0f9ff;color:#101828;border-radius:10px 10px 0}.chat-history-overlay .chat-history-msg.assistant{background:#f9fafb;color:#344054;border:1px solid #EAECF0;border-radius:10px 10px 10px 0}.chat-history-overlay .chat-history-msg p{margin:0;white-space:pre-wrap}@keyframes popupFadeInTranscript{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.plus-menu-wrap{position:relative;flex-shrink:0}.plus-menu-wrap .btn-plus{width:30px;height:30px;border-radius:50%;border:1.5px solid #D0D5DD;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#344054;font-size:16px;font-weight:600;line-height:1;transition:background .15s,border-color .15s}.plus-menu-wrap .btn-plus:hover,.plus-menu-wrap .btn-plus.open{background:#f2f4f7;border-color:#009bf3;color:#009bf3}.plus-menu-wrap .plus-popup{position:absolute;bottom:calc(100% + 10px);left:0;background:#fff;border:1px solid #EAECF0;border-radius:12px;box-shadow:0 8px 24px #1018281f;padding:6px;min-width:210px;z-index:200;animation:popupFadeIn .15s ease-out}.plus-menu-wrap .plus-popup .plus-popup-section-label{font-size:11px;font-weight:600;color:#98a2b3;text-transform:uppercase;letter-spacing:.5px;padding:6px 12px 4px}.plus-menu-wrap .plus-popup .plus-popup-divider{height:1px;background:#eaecf0;margin:4px 0}.plus-menu-wrap .plus-popup .plus-popup-item{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;border-radius:8px;padding:9px 12px;font-size:14px;font-weight:500;color:#344054;cursor:pointer;text-align:left;transition:background .12s}.plus-menu-wrap .plus-popup .plus-popup-item svg{flex-shrink:0}.plus-menu-wrap .plus-popup .plus-popup-item .check-icon{margin-left:auto}.plus-menu-wrap .plus-popup .plus-popup-item .model-hint{font-size:11px;font-weight:400;color:#98a2b3;margin-left:4px}.plus-menu-wrap .plus-popup .plus-popup-item.selected{background:#f0f9ff;color:#009bf3}.plus-menu-wrap .plus-popup .plus-popup-item.selected svg{stroke:#009bf3}.plus-menu-wrap .plus-popup .plus-popup-item:hover:not(.selected){background:#f9fafb;color:#101828}@keyframes popupFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.model-version-tag{font-size:11px;font-weight:700;color:#009bf3;background:#eaf8ff;border:1px solid #B2E0FB;border-radius:6px;padding:2px 7px;white-space:nowrap;flex-shrink:0}.model-switcher{display:flex;align-items:center;background:#f2f4f7;border-radius:8px;padding:3px;gap:2px;flex-shrink:0}.model-switcher .model-option{background:transparent;border:none;border-radius:6px;padding:4px 12px;font-size:12px;font-weight:600;color:#667085;cursor:pointer;transition:background .15s,color .15s;white-space:nowrap}.model-switcher .model-option:hover:not(.active){background:#e4e7ec;color:#344054}.model-switcher .model-option.active{background:#fff;color:#009bf3;box-shadow:0 1px 3px #1018281a}.chat-page{background:#fff;display:flex;flex-direction:column}.chat-page .chat-layout-container{display:flex;position:relative}.chat-page .chat-main{flex:1;display:flex;flex-direction:column;background:#fff}.chat-page .chat-header{padding:0 12px}.chat-page .chat-header .header-top{position:relative;display:flex;align-items:center;justify-content:center}.chat-page .chat-header .header-top>.btn{position:absolute;right:0;top:50%;transform:translateY(-50%)}.chat-page .chat-header .header-top>.btn:focus,.chat-page .chat-header .header-top>.btn:focus-visible{box-shadow:none;outline:none}.chat-page .chat-header .view-history{font-size:14px;font-weight:600;color:#667085;text-decoration:none;cursor:pointer;display:inline-flex;align-items:center;gap:8px}.chat-page .chat-header .view-history:hover{color:#101828}.chat-page .chat-header .btn-history-toggle{background:#f2f4f7;border:none;border-radius:100px;padding:6px 14px;font-size:13px;font-weight:600;color:#344054;cursor:pointer;display:flex;align-items:center}.chat-page .chat-header .btn-history-toggle:hover{background:#eaecf0}.chat-page .chat-header .page-title{font-size:30px;font-weight:600;color:#009bf3;margin:0}.chat-page .chat-header .page-description{font-size:20px;color:#101828;font-weight:600}.chat-page .chat-messages-area{padding:24px;display:flex;flex-direction:column;gap:24px;max-height:60vh;overflow-y:auto}.chat-page .chat-messages-area:empty,.chat-page .chat-messages-area:not(:has(.message-wrapper)){max-height:none;overflow:visible;padding:0}.chat-page .chat-messages-area.scrollbar-hidden{scrollbar-width:none}.chat-page .chat-messages-area.scrollbar-hidden::-webkit-scrollbar{display:none}.chat-page .message-wrapper{display:flex;flex-direction:column;max-width:85%}.chat-page .message-wrapper.user{align-self:flex-end}.chat-page .message-wrapper.user .message{flex-direction:row-reverse}.chat-page .message-wrapper.user .message .message-bubble{background:#fff;color:#101828;border-radius:12px 12px 0;position:relative;padding-right:40px}.chat-page .message{display:flex;gap:12px}.chat-page .message.assistant{align-self:flex-start}.chat-page .message.assistant .message-avatar{flex-shrink:0;margin-top:14px}.chat-page .message.assistant .message-content{display:flex;flex-direction:column;gap:8px}.chat-page .message.assistant .message-bubble{color:#101828;border-radius:12px 12px 12px 0}.chat-page .message.assistant .message-bubble.typing{display:flex;align-items:center;gap:4px;padding:12px 20px}.chat-page .message.assistant .message-bubble.typing .dot{width:6px;height:6px;background:#00a3ff;border-radius:50%;display:inline-block;animation:typingAnimation 1.4s infinite ease-in-out both}.chat-page .message.assistant .message-bubble.typing .dot:nth-child(1){animation-delay:-.32s}.chat-page .message.assistant .message-bubble.typing .dot:nth-child(2){animation-delay:-.16s}.chat-page .message .message-bubble{padding:6px;font-size:15px;line-height:24px;position:relative}.chat-page .message .message-bubble p{margin:0 0 6px;white-space:pre-wrap}.chat-page .message .message-bubble p:last-child{margin-bottom:0}.chat-page .message .message-bubble h3,.chat-page .message .message-bubble h4,.chat-page .message .message-bubble h5{margin:8px 0 4px;font-weight:700;line-height:1.4}.chat-page .message .message-bubble h3{font-size:17px}.chat-page .message .message-bubble h4{font-size:16px}.chat-page .message .message-bubble h5{font-size:15px}.chat-page .message .message-bubble strong{font-weight:700}.chat-page .message .message-bubble em{font-style:italic}.chat-page .message .message-bubble ul{margin:4px 0;padding-left:18px}.chat-page .message .message-bubble ul li{margin-bottom:2px}.chat-page .message .message-bubble .msg-sender-tag{position:absolute;right:6px;bottom:16px;background:#eaf8ff;color:#00a3ff;font-size:10px;font-weight:700;padding:2px 8px;border-radius:50%}.chat-page .message .message-actions{display:flex;gap:8px}.chat-page .message .message-actions .btn-copy{background:none;border:none;padding:4px;cursor:pointer;color:#667085;display:flex;align-items:center;justify-content:center;opacity:.6;transition:opacity .2s}.chat-page .message .message-actions .btn-copy:hover{opacity:1}.chat-page .copy-feedback-toast{position:fixed;bottom:120px;left:50%;transform:translate(-50%);background:#101828;color:#fff;padding:8px 16px;border-radius:8px;font-size:14px;font-weight:500;z-index:1000;box-shadow:0 4px 12px #0000001a;animation:fadeInOut 2s ease-in-out forwards}.chat-page .chat-input-area{padding:24px 150px;background:#fff}.chat-page .chat-input-area .filter-chips-container{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;align-items:center}.chat-page .chat-input-area .filter-chips-container .filter-chip{background:#f9fafb;border:1px solid #EAECF0;border-radius:8px;padding:4px 12px;display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:#344054}.chat-page .chat-input-area .filter-chips-container .filter-chip .btn-remove-chip{background:none;border:none;font-size:16px;color:#98a2b3;cursor:pointer;padding:0;line-height:1}.chat-page .chat-input-area .filter-chips-container .btn-clear-all{background:none;border:none;font-size:13px;font-weight:600;color:#667085;text-decoration:underline;cursor:pointer;margin-left:auto}.chat-page .chat-input-area .filter-chips-container .btn-clear-all:hover{color:#101828}.chat-page .chat-input-area .input-wrapper{display:flex;align-items:center;background:#fff;border:1px solid #D0D5DD;border-radius:8px;padding:8px 20px;box-shadow:0 1px 2px #1018280d}.chat-page .chat-input-area .input-wrapper .chat-input{flex:1;border:none;outline:none;font-size:15px;color:#101828}.chat-page .chat-input-area .input-wrapper .btn-filter-icon{background:#fff;border:1px solid #D0D5DD;border-radius:8px;padding:6px 12px;font-size:14px;font-weight:600;color:#344054;display:flex;align-items:center;gap:8px;margin-right:12px;cursor:pointer}.chat-page .chat-input-area .input-wrapper .btn-filter-icon:hover{background:#f9fafb}.chat-page .chat-input-area .input-wrapper .btn-history-inline{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;opacity:.6;transition:opacity .2s}.chat-page .chat-input-area .input-wrapper .btn-history-inline:hover{opacity:1}.chat-page .chat-input-area .input-wrapper .btn-send{background:none;border:none;color:#00a3ff;cursor:pointer;display:flex;align-items:center;transition:transform .2s}.chat-page .chat-input-area .input-wrapper .btn-send:hover{transform:scale(1.1)}.chat-page .chat-history-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;z-index:999;background:#00000026;cursor:default}.chat-page .chat-history-sidebar{position:fixed;top:0;right:0;width:320px;height:100vh;background:#fcfcfd;display:flex;flex-direction:column;z-index:1000;box-shadow:-4px 0 24px #0000001f;animation:slideInRight .25s ease-out}.chat-page .chat-history-sidebar .sidebar-header{padding:24px!important}.chat-page .chat-history-sidebar .sidebar-header h6{font-size:16px;color:#101828;display:flex;align-items:center}.chat-page .chat-history-sidebar .sidebar-search{padding:0 24px 16px}.chat-page .chat-history-sidebar .sidebar-search .history-search-wrapper{position:relative;display:flex;align-items:center;background:#fff;border:1px solid #D0D5DD;border-radius:8px;padding:8px 12px}.chat-page .chat-history-sidebar .sidebar-search .history-search-wrapper i{color:#667085;position:absolute;left:12px}.chat-page .chat-history-sidebar .sidebar-search .history-search-wrapper input{border:none;outline:none;font-size:14px;padding-left:24px;width:100%}.chat-page .chat-history-sidebar .sidebar-search .history-search-wrapper input::placeholder{color:#667085}.chat-page .chat-history-sidebar .sidebar-content{flex:1;padding:12px 24px!important;overflow-y:auto}.chat-page .chat-history-sidebar .sidebar-content.scrollbar-hidden{scrollbar-width:none}.chat-page .chat-history-sidebar .sidebar-content.scrollbar-hidden::-webkit-scrollbar{display:none}.chat-page .chat-history-sidebar .sidebar-content .history-item{padding:12px 16px;border-radius:12px;cursor:pointer;margin-bottom:8px;transition:all .2s;border:1px solid transparent}.chat-page .chat-history-sidebar .sidebar-content .history-item:hover{background:#f2f4f7}.chat-page .chat-history-sidebar .sidebar-content .history-item.active{background:#f0f9ff;border-color:#b9e6fe}.chat-page .chat-history-sidebar .sidebar-content .history-item.active .item-title{color:#00a3ff}.chat-page .chat-history-sidebar .sidebar-content .history-item .item-title{font-size:14px;font-weight:600;color:#344054}.chat-page .chat-history-sidebar .sidebar-content .history-item .item-date{font-size:12px;margin-top:4px;color:#667085}.chat-page .chat-history-sidebar .sidebar-footer{padding:24px!important}.chat-page .chat-history-sidebar .sidebar-footer .btn-new-chat{background:#fff;border:1px solid #D0D5DD;border-radius:100px;padding:12px;font-size:14px;font-weight:600;color:#344054;cursor:pointer;box-shadow:0 1px 2px #1018280d}.chat-page .chat-history-sidebar .sidebar-footer .btn-new-chat:hover{background:#f9fafb}input[type=text]:focus{outline:none;box-shadow:none}@keyframes slideInRight{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes typingAnimation{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}@keyframes fadeInOut{0%{opacity:0;transform:translate(-50%,20px)}10%{opacity:1;transform:translate(-50%)}90%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-20px)}}.sparkle{font-size:60px;animation:twinkle 1.5s infinite ease-in-out}@keyframes twinkle{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.1)}}\n"] }]
968
+ args: [{ selector: 'lib-audio-page', template: "<div class=\"audio-page\">\n\n <!-- \u2500\u2500 Header Row \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"header-row-container mb-4\" *ngIf=\"cohortOptions.length > 0\">\n <div class=\"d-flex align-items-center justify-content-between\">\n <div class=\"d-flex align-items-center gap-3\">\n <!-- Custom Single-select Cohort Dropdown -->\n <div class=\"cohort-dropdown\" [class.open]=\"isCohortDropdownOpen\">\n <div class=\"cohort-dropdown-trigger\"\n (click)=\"isCohortDropdownOpen = !isCohortDropdownOpen; $event.stopPropagation()\">\n <span>{{ filterType }}</span>\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\" [class.rotate]=\"isCohortDropdownOpen\">\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div class=\"cohort-dropdown-menu\" *ngIf=\"isCohortDropdownOpen\" (click)=\"$event.stopPropagation()\">\n <div class=\"cohort-option\" *ngFor=\"let opt of cohortOptions\" [class.selected]=\"opt === filterType\"\n (click)=\"selectCohortType(opt)\">\n {{ opt }}\n </div>\n </div>\n </div>\n <h4 class=\"section-title mb-0\">Cohort Analysis</h4>\n </div>\n <div class=\"total-audio-label\">Total Audio Available <strong>{{ totalAudio }}</strong></div>\n </div>\n </div>\n\n <!-- \u2500\u2500 Stats Grid (Dynamic) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"stats-grid mb-4\">\n\n <!-- Loader -->\n <ng-container *ngIf=\"isLoadingCards\">\n <div class=\"stat-card\" *ngFor=\"let s of [1,2,3,4,5,6]\">\n <div class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <div class=\"stat-card\" *ngFor=\"let card of cohortCards\" [hidden]=\"isLoadingCards\">\n <div class=\"stat-card-header text-capitalize ellipse1 cursor-pointer\" (click)=\"onCardRowClick('', card.name)\">\n {{ card.name }}\n </div>\n <div class=\"stat-card-body\">\n\n <!-- BOOLEAN_BASKET: label + responses + score -->\n <ng-container *ngIf=\"card.type === 'BOOLEAN_BASKET'\">\n <table class=\"cohort-table w-100\">\n <tbody>\n <tr *ngFor=\"let row of card?.booleanRows\">\n <td class=\"text-primary text-capitalize text-decoration-underline cursor-pointer\" (click)=\"onCardRowClick('', row?.label)\">{{ row?.label.split('_').join(' ').toLowerCase() }}</td>\n <td class=\"text-end\">{{ row?.responses }}</td>\n <td class=\"text-end\">{{ row?.score }}%</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n <!-- NUMERIC_SCALAR: total + avg -->\n <ng-container *ngIf=\"card.type === 'NUMERIC_SCALAR' || card.type === 'NUMERIC_ARRAY'\">\n <table class=\"cohort-table w-100\">\n <tbody>\n <tr>\n <td>Total</td>\n <td class=\"text-end\">{{ card.numericData?.total }}</td>\n </tr>\n <tr>\n <td>Average</td>\n <td class=\"text-end\">{{ card.numericData?.avg }}</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n <!-- SUBJECTIVE: id + reasoning text -->\n <ng-container *ngIf=\"card.type === 'SUBJECTIVE'\">\n <table class=\"cohort-table w-100\">\n <tbody>\n <tr *ngFor=\"let row of card.subjectiveRows\">\n <td class=\"text-nowrap\">{{ row?.store_id || '\u2014' }}</td>\n <td class=\"text-nowrap\">{{ row?.date || '\u2014' }}</td>\n <td class=\"text-primary text-capitalize text-decoration-underline cursor-pointer\" (click)=\"onCardRowClick(row?._id,'')\" [ngbTooltip]=\"row?.reasoning || 'No description available'\" placement=\"top\" container=\"body\" tooltipClass=\"audio-tooltip\">{{ row?.reasoning && row?.reasoning !== '' ? row?.reasoning?.slice(0, 25) + '...' : 'No reasoning available' }}</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n <ng-container *ngIf=\"card.type === 'SUBJECTIVE_COUNT'\">\n <table class=\"cohort-table w-100\">\n <tbody>\n <tr *ngFor=\"let row of card.subjectiveRows\">\n <td class=\"text-nowrap fw-bold\"\n [ngbTooltip]=\"row?._id\" placement=\"top\" container=\"body\" tooltipClass=\"audio-tooltip\">{{ row?._id }}</td>\n <td [ngbTooltip]=\"row?.reasoning || 'No description available'\" placement=\"top\" container=\"body\" tooltipClass=\"audio-tooltip\">{{ row?.reasoning && row?.reasoning !== '' ? row?.reasoning?.slice(0, 25) : 'No reasoning available' }}</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n <!-- UNIQUE_PITCHES: pitchId + description -->\n <ng-container *ngIf=\"card.type === 'UNIQUE_PITCHES'\">\n <table class=\"cohort-table w-100\">\n <tbody>\n <tr *ngFor=\"let pitch of card.pitchRows\">\n <td class=\"text-nowrap fw-bold\"\n [ngbTooltip]=\"pitch.id\" placement=\"top\" container=\"body\" tooltipClass=\"audio-tooltip\">{{ pitch.id }}</td>\n <td [ngbTooltip]=\"pitch.desc || 'No description available'\" placement=\"top\" container=\"body\" tooltipClass=\"audio-tooltip\">{{ pitch.desc ? pitch.desc.slice(0, 75) + '...' : 'No description available' }}</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n </div>\n </div>\n\n </div>\n\n <!-- \u2500\u2500 Conversation Analysis \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"conversation-area bg-white p-4 rounded-3\">\n\n <!-- Section Header -->\n <div class=\"d-flex justify-content-between align-items-center px-2 bottom-border mb-4\">\n <h5 class=\"section-title mb-0\">Conversation Analysis</h5>\n <button class=\"export-btn btn btn-default mx-1 btn-outline bg-white btn-outline-default\" (click)=\"exportData()\" ngbTooltip=\"Export conversation data to CSV\" placement=\"top\" [disabled]=\"totalItems === 0\">\n <span class=\"export-text\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\n fill=\"none\">\n <path\n d=\"M8.125 13.125H16.3563L14.7438 14.7438L15.625 15.625L18.75 12.5L15.625 9.375L14.7438 10.2562L16.3563 11.875H8.125V13.125Z\"\n fill=\"black\" />\n <path\n d=\"M13.75 8.75001V6.25001C13.7505 6.16776 13.7347 6.08622 13.7036 6.01007C13.6725 5.93392 13.6267 5.86466 13.5688 5.80626L9.19375 1.43126C9.13535 1.37333 9.06609 1.32751 8.98994 1.2964C8.91379 1.2653 8.83225 1.24953 8.75 1.25001H2.5C2.16848 1.25001 1.85054 1.38171 1.61612 1.61613C1.3817 1.85055 1.25 2.16849 1.25 2.50001V17.5C1.25 17.8315 1.3817 18.1495 1.61612 18.3839C1.85054 18.6183 2.16848 18.75 2.5 18.75H12.5C12.8315 18.75 13.1495 18.6183 13.3839 18.3839C13.6183 18.1495 13.75 17.8315 13.75 17.5V16.25H12.5V17.5H2.5V2.50001H7.5V6.25001C7.5 6.58153 7.6317 6.89947 7.86612 7.13389C8.10054 7.36831 8.41848 7.50001 8.75 7.50001H12.5V8.75001H13.75ZM8.75 6.25001V2.75626L12.2438 6.25001H8.75Z\"\n fill=\"black\" />\n </svg> Export</span>\n </button>\n </div>\n\n <!-- \u2500\u2500 Tango AI Chat \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"chat-page\">\n <div class=\"chat-layout-container\">\n <div class=\"chat-main\">\n <header class=\"chat-header\">\n <div class=\"header-top\">\n <div class=\"header-content text-center\"></div>\n </div>\n </header>\n\n <!-- Message Area -->\n <div class=\"chat-messages-area scrollbar-hidden\" #scrollContainer>\n <div class=\"d-flex justify-content-center align-items-center py-4\" *ngIf=\"isChatLoading\">\n <span class=\"text-muted\">Loading conversation...</span>\n </div>\n <div *ngFor=\"let msg of messages\" class=\"message-wrapper\" [class.user]=\"msg.sender === 'user'\">\n <div class=\"message\" [class.assistant]=\"msg.sender === 'assistant'\">\n <div class=\"message-avatar\" *ngIf=\"msg.sender === 'assistant'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <rect width=\"24\" height=\"24\" rx=\"12\" fill=\"#EAF8FF\" />\n <mask id=\"path-2-inside-1_1902_107186\" fill=\"white\">\n <path\n d=\"M18.9941 17.5561L18.4565 17.0185L12.663 11.225L14.3816 9.5064L14.7934 9.0938C14.8327 9.05395 14.8549 9.00032 14.8552 8.94436C14.855 8.91668 14.8494 8.88931 14.8387 8.86381C14.828 8.8383 14.8123 8.81517 14.7926 8.79572L14.38 8.38312L12.5574 6.55729L12.1448 6.14469C12.1253 6.12485 12.1021 6.10909 12.0764 6.09833C12.0508 6.08757 12.0232 6.08203 11.9954 6.08203C11.9676 6.08203 11.94 6.08757 11.9144 6.09833C11.8887 6.10909 11.8655 6.12485 11.8459 6.14469L11.4333 6.5581L9.19979 8.79166C9.17997 8.81109 9.16423 8.83428 9.15348 8.85988C9.14273 8.88547 9.1372 8.91294 9.1372 8.9407C9.1372 8.96846 9.14273 8.99593 9.15348 9.02152C9.16423 9.04712 9.17997 9.07031 9.19979 9.08974L11.3334 11.2242L5.53919 17.0185L5.00395 17.5561C4.96426 17.5955 4.94177 17.6489 4.94141 17.7048C4.94164 17.7588 4.96223 17.8107 4.99907 17.8502C5.01874 17.8712 5.04251 17.8879 5.06892 17.8994C5.09532 17.9108 5.1238 17.9168 5.15258 17.9168H10.3645C10.4204 17.9166 10.474 17.8942 10.5136 17.8547C10.5531 17.8151 10.5754 17.7615 10.5757 17.7056V17.1874C10.5757 17.1313 10.5534 17.0775 10.5139 17.0378C10.4743 16.9981 10.4206 16.9756 10.3645 16.9754H6.91262L11.9978 11.8902L17.083 16.9754H13.6011C13.545 16.9756 13.4913 16.9981 13.4517 17.0378C13.4122 17.0775 13.3899 17.1313 13.3899 17.1874V17.7056C13.3898 17.7334 13.3953 17.761 13.4061 17.7867C13.4168 17.8123 13.4326 17.8356 13.4525 17.855C13.4919 17.8944 13.5454 17.9166 13.6011 17.9168H18.8447C18.8736 17.9169 18.9023 17.911 18.9288 17.8995C18.9554 17.8881 18.9793 17.8713 18.999 17.8502C19.037 17.8103 19.0577 17.7572 19.0568 17.7022C19.0559 17.6471 19.0334 17.5947 18.9941 17.5561ZM11.9946 7.32645L13.6133 8.94517L11.9986 10.5598L10.3799 8.94111L11.9946 7.32645Z\" />\n </mask>\n <path\n d=\"M18.9941 17.5561L-9.47869 46.029L-9.35225 46.1554L-9.2247 46.2807L18.9941 17.5561ZM18.4565 17.0185L46.9293 -11.4544V-11.4544L18.4565 17.0185ZM12.663 11.225L-15.8098 -17.2478L-44.2826 11.225L-15.8098 39.6979L12.663 11.225ZM14.3816 9.5064L42.8545 37.9792L42.8685 37.9652L42.8826 37.9511L14.3816 9.5064ZM14.7934 9.0938L43.2943 37.5385L43.3813 37.4514L43.4677 37.3638L14.7934 9.0938ZM14.8552 8.94436L55.1213 9.14972L55.1223 8.94774L55.1213 8.74576L14.8552 8.94436ZM14.7926 8.79572L-13.6802 37.2686L-13.5916 37.3572L-13.5024 37.4453L14.7926 8.79572ZM14.38 8.38312L-14.1182 36.8306L-14.1055 36.8433L-14.0928 36.856L14.38 8.38312ZM12.5574 6.55729L41.0556 -21.8902L41.0429 -21.9029L41.0302 -21.9156L12.5574 6.55729ZM12.1448 6.14469L-16.5725 34.3709L-16.4508 34.4948L-16.328 34.6175L12.1448 6.14469ZM11.8459 6.14469L40.3467 34.5895L40.4554 34.4806L40.5633 34.3709L11.8459 6.14469ZM11.4333 6.5581L39.9062 35.0309L39.9202 35.0169L39.9341 35.0029L11.4333 6.5581ZM9.19979 8.79166L37.392 37.5424L37.533 37.4041L37.6726 37.2645L9.19979 8.79166ZM9.1372 8.9407H49.4039H9.1372ZM9.19979 9.08974L37.678 -19.3777L37.5357 -19.52L37.392 -19.661L9.19979 9.08974ZM11.3334 11.2242L39.8063 39.697L68.2737 11.2296L39.8117 -17.2432L11.3334 11.2242ZM5.53919 17.0185L-22.9337 -11.4544L-22.966 -11.422L-22.9982 -11.3896L5.53919 17.0185ZM5.00395 17.5561L33.3446 46.1605L33.4433 46.0627L33.5414 45.9643L5.00395 17.5561ZM4.94141 17.7048L-35.3244 17.4419L-35.3258 17.6598L-35.3249 17.8776L4.94141 17.7048ZM4.99907 17.8502L-24.4379 45.325L-24.4177 45.3467L-24.3975 45.3683L4.99907 17.8502ZM5.15258 17.9168L5.13983 58.1834H5.15258V17.9168ZM10.3645 17.9168V58.1834H10.4415L10.5185 58.1831L10.3645 17.9168ZM10.5757 17.7056L50.842 17.8596L50.8423 17.7826V17.7056H10.5757ZM10.5757 17.1874L-29.691 17.1871V17.1874H10.5757ZM10.3645 16.9754L10.5188 -23.291L10.4416 -23.2912H10.3645V16.9754ZM6.91262 16.9754L-21.5602 -11.4974L-90.2997 57.2421H6.91262V16.9754ZM11.9978 11.8902L40.4707 -16.5826L11.9978 -45.0555L-16.475 -16.5826L11.9978 11.8902ZM17.083 16.9754V57.2421H114.295L45.5559 -11.4974L17.083 16.9754ZM13.6011 16.9754V-23.2912H13.524L13.4468 -23.291L13.6011 16.9754ZM13.3899 17.1874H53.6566V17.1871L13.3899 17.1874ZM13.3899 17.7056L53.6563 17.86L53.6566 17.7828V17.7056H13.3899ZM13.4525 17.855L41.9019 -10.6412L41.7554 -10.7875L41.6074 -10.9322L13.4525 17.855ZM13.6011 17.9168L13.4933 58.1833L13.5472 58.1834H13.6011V17.9168ZM18.8447 17.9168L18.9872 -22.3497L18.9159 -22.3499H18.8447V17.9168ZM18.999 17.8502L-10.1563 -9.92346L-10.2776 -9.79612L-10.3977 -9.66773L18.999 17.8502ZM11.9946 7.32645L40.4674 -21.1464L11.9946 -49.6192L-16.4783 -21.1464L11.9946 7.32645ZM13.6133 8.94517L42.0861 37.418L70.559 8.94517L42.0861 -19.5277L13.6133 8.94517ZM11.9986 10.5598L-16.4742 39.0327L11.9986 67.5055L40.4715 39.0327L11.9986 10.5598ZM10.3799 8.94111L-18.0929 -19.5317L-46.5657 8.94111L-18.0929 37.4139L10.3799 8.94111ZM18.9941 17.5561L47.467 -10.9167L46.9293 -11.4544L18.4565 17.0185L-10.0164 45.4913L-9.47869 46.029L18.9941 17.5561ZM18.4565 17.0185L46.9293 -11.4544L41.1359 -17.2478L12.663 11.225L-15.8098 39.6979L-10.0164 45.4913L18.4565 17.0185ZM12.663 11.225L41.1359 39.6979L42.8545 37.9792L14.3816 9.5064L-14.0912 -18.9664L-15.8098 -17.2478L12.663 11.225ZM14.3816 9.5064L42.8826 37.9511L43.2943 37.5385L14.7934 9.0938L-13.7075 -19.3509L-14.1193 -18.9383L14.3816 9.5064ZM14.7934 9.0938L43.4677 37.3638C50.8853 29.8401 55.0674 19.7146 55.1213 9.14972L14.8552 8.94436L-25.411 8.73899C-25.3577 -1.71401 -21.2199 -11.7322 -13.8808 -19.1762L14.7934 9.0938ZM14.8552 8.94436L55.1213 8.74576C55.0951 3.42217 54.0189 -1.84466 51.9537 -6.75289L14.8387 8.86381L-22.2763 24.4805C-24.3201 19.6233 -25.385 14.4112 -25.411 9.14295L14.8552 8.94436ZM14.8387 8.86381L51.9537 -6.75289C49.8888 -11.6604 46.8759 -16.1124 43.0876 -19.8538L14.7926 8.79572L-13.5024 37.4453C-17.2513 33.7427 -20.2329 29.337 -22.2763 24.4805L14.8387 8.86381ZM14.7926 8.79572L43.2655 -19.6771L42.8529 -20.0897L14.38 8.38312L-14.0928 36.856L-13.6802 37.2686L14.7926 8.79572ZM14.38 8.38312L42.8782 -20.0643L41.0556 -21.8902L12.5574 6.55729L-15.9407 35.0048L-14.1182 36.8306L14.38 8.38312ZM12.5574 6.55729L41.0302 -21.9156L40.6176 -22.3282L12.1448 6.14469L-16.328 34.6175L-15.9154 35.0301L12.5574 6.55729ZM12.1448 6.14469L40.8622 -22.0815C37.0954 -25.9139 32.6028 -28.9582 27.6461 -31.0364L12.0764 6.09833L-3.49324 43.2331C-8.3986 41.1764 -12.8447 38.1636 -16.5725 34.3709L12.1448 6.14469ZM12.0764 6.09833L27.6461 -31.0364C22.6898 -33.1145 17.3694 -34.1846 11.9954 -34.1846V6.08203V46.3487C6.67703 46.3487 1.41175 45.2896 -3.49324 43.2331L12.0764 6.09833ZM11.9954 6.08203V-34.1846C6.62127 -34.1846 1.30091 -33.1144 -3.65529 -31.0364L11.9144 6.09833L27.484 43.2331C22.5791 45.2896 17.3139 46.3487 11.9954 46.3487V6.08203ZM11.9144 6.09833L-3.65529 -31.0364C-8.61164 -28.9584 -13.1043 -25.9141 -16.8714 -22.0815L11.8459 6.14469L40.5633 34.3709C36.8352 38.1638 32.3891 41.1765 27.484 43.2331L11.9144 6.09833ZM11.8459 6.14469L-16.6549 -22.3002L-17.0675 -21.8867L11.4333 6.5581L39.9341 35.0029L40.3467 34.5895L11.8459 6.14469ZM11.4333 6.5581L-17.0395 -21.9147L-19.273 -19.6812L9.19979 8.79166L37.6726 37.2645L39.9062 35.0309L11.4333 6.5581ZM9.19979 8.79166L-18.9924 -19.9591C-22.8352 -16.1909 -25.888 -11.6941 -27.9721 -6.73176L9.15348 8.85988L46.279 24.4515C44.2165 29.3627 41.1952 33.8131 37.392 37.5424L9.19979 8.79166ZM9.15348 8.85988L-27.9721 -6.73176C-30.0559 -1.76998 -31.1295 3.55805 -31.1295 8.9407H9.1372H49.4039C49.4039 14.2678 48.3413 19.5409 46.279 24.4515L9.15348 8.85988ZM9.1372 8.9407H-31.1295C-31.1295 14.3233 -30.0559 19.6513 -27.9721 24.6132L9.15348 9.02152L46.279 -6.57011C48.3413 -1.65946 49.4039 3.61362 49.4039 8.9407H9.1372ZM9.15348 9.02152L-27.9721 24.6132C-25.8879 29.5757 -22.8351 34.0724 -18.9924 37.8405L9.19979 9.08974L37.392 -19.661C41.195 -15.9318 44.2164 -11.4815 46.279 -6.57011L9.15348 9.02152ZM9.19979 9.08974L-19.2785 37.5571L-17.1448 39.6916L11.3334 11.2242L39.8117 -17.2432L37.678 -19.3777L9.19979 9.08974ZM11.3334 11.2242L-17.1394 -17.2486L-22.9337 -11.4544L5.53919 17.0185L34.012 45.4913L39.8063 39.697L11.3334 11.2242ZM5.53919 17.0185L-22.9982 -11.3896L-23.5335 -10.852L5.00395 17.5561L33.5414 45.9643L34.0766 45.4266L5.53919 17.0185ZM5.00395 17.5561L-23.3367 -11.0482C-30.944 -3.51111 -35.2545 6.73339 -35.3244 17.4419L4.94141 17.7048L45.2072 17.9676C45.138 28.5644 40.8725 38.7021 33.3446 46.1605L5.00395 17.5561ZM4.94141 17.7048L-35.3249 17.8776C-35.2811 28.0714 -31.3931 37.8731 -24.4379 45.325L4.99907 17.8502L34.4361 -9.62469C41.3176 -2.25171 45.1644 7.4462 45.2077 17.532L4.94141 17.7048ZM4.99907 17.8502L-24.3975 45.3683C-20.613 49.4111 -16.039 52.6347 -10.9579 54.8392L5.06892 17.8994L21.0957 -19.0404C26.124 -16.8588 30.6505 -13.6687 34.3956 -9.66798L4.99907 17.8502ZM5.06892 17.8994L-10.9579 54.8392C-5.87783 57.0432 -0.398977 58.1817 5.13983 58.1834L5.15258 17.9168L5.16533 -22.3499C10.6466 -22.3482 16.0685 -21.2215 21.0957 -19.0404L5.06892 17.8994ZM5.15258 17.9168V58.1834H10.3645V17.9168V-22.3499H5.15258V17.9168ZM10.3645 17.9168L10.5185 58.1831C21.2005 58.1423 31.4332 53.8807 38.9864 46.3275L10.5136 17.8547L-17.9593 -10.6182C-10.4852 -18.0922 -0.359679 -22.3092 10.2105 -22.3496L10.3645 17.9168ZM10.5136 17.8547L38.9864 46.3275C46.5403 38.7737 50.8012 28.5407 50.842 17.8596L10.5757 17.7056L-29.6907 17.5516C-29.6503 6.98236 -25.434 -3.14343 -17.9593 -10.6182L10.5136 17.8547ZM10.5757 17.7056H50.8423V17.1874H10.5757H-29.691V17.7056H10.5757ZM10.5757 17.1874L50.8423 17.1877C50.8424 6.47884 46.599 -3.79361 39.0413 -11.3803L10.5139 17.0378L-18.0136 45.4559C-25.4921 37.9487 -29.6911 27.7838 -29.691 17.1871L10.5757 17.1874ZM10.5139 17.0378L39.0413 -11.3803C31.4841 -18.9666 21.2282 -23.2499 10.5188 -23.291L10.3645 16.9754L10.2102 57.2418C-0.387043 57.2012 -10.5355 52.9627 -18.0136 45.4559L10.5139 17.0378ZM10.3645 16.9754V-23.2912H6.91262V16.9754V57.2421H10.3645V16.9754ZM6.91262 16.9754L35.3855 45.4483L40.4707 40.3631L11.9978 11.8902L-16.475 -16.5826L-21.5602 -11.4974L6.91262 16.9754ZM11.9978 11.8902L-16.475 40.363L-11.3898 45.4483L17.083 16.9754L45.5559 -11.4974L40.4707 -16.5826L11.9978 11.8902ZM17.083 16.9754V-23.2912H13.6011V16.9754V57.2421H17.083V16.9754ZM13.6011 16.9754L13.4468 -23.291C2.73756 -23.2499 -7.51838 -18.9667 -15.0757 -11.3803L13.4517 17.0378L41.9792 45.4559C34.501 52.9628 24.3525 57.2012 13.7554 57.2418L13.6011 16.9754ZM13.4517 17.0378L-15.0757 -11.3803C-22.6331 -3.79383 -26.8768 6.47853 -26.8767 17.1877L13.3899 17.1874L53.6566 17.1871C53.6567 27.7841 49.4575 37.9489 41.9792 45.4559L13.4517 17.0378ZM13.3899 17.1874H-26.8767V17.7056H13.3899H53.6566V17.1874H13.3899ZM13.3899 17.7056L-26.8764 17.5512C-26.8972 22.9682 -25.8304 28.3342 -23.7392 33.3312L13.4061 17.7867L50.5514 2.24216C52.621 7.18779 53.6769 12.4986 53.6563 17.86L13.3899 17.7056ZM13.4061 17.7867L-23.7392 33.3312C-21.648 38.3285 -18.5749 42.8549 -14.7024 46.6423L13.4525 17.855L41.6074 -10.9322C45.4401 -7.1837 48.4816 -2.70382 50.5514 2.24216L13.4061 17.7867ZM13.4525 17.855L-14.9969 46.3513C-7.43456 53.9012 2.8067 58.1547 13.4933 58.1833L13.6011 17.9168L13.709 -22.3498C24.284 -22.3214 34.4184 -18.1123 41.9019 -10.6412L13.4525 17.855ZM13.6011 17.9168V58.1834H18.8447V17.9168V-22.3499H13.6011V17.9168ZM18.8447 17.9168L18.7022 58.1832C24.2681 58.2029 29.7767 57.0745 34.8845 54.8701L18.9288 17.8995L2.9731 -19.071C8.02777 -21.2525 13.4792 -22.3691 18.9872 -22.3497L18.8447 17.9168ZM18.9288 17.8995L34.8845 54.8701C39.9938 52.665 44.5932 49.4302 48.3958 45.3681L18.999 17.8502L-10.3977 -9.66773C-6.63472 -13.6877 -2.08308 -16.8888 2.9731 -19.071L18.9288 17.8995ZM18.999 17.8502L48.1543 45.6238C55.4837 37.9298 59.4941 27.6613 59.318 17.0348L19.0568 17.7022L-21.2043 18.3695C-21.3786 7.853 -17.4098 -2.30912 -10.1563 -9.92346L18.999 17.8502ZM19.0568 17.7022L59.318 17.0348C59.1418 6.4087 54.7936 -3.7213 47.213 -11.1684L18.9941 17.5561L-9.2247 46.2807C-16.7268 38.9107 -21.03 28.8856 -21.2043 18.3695L19.0568 17.7022ZM11.9946 7.32645L-16.4783 35.7993L-14.8595 37.418L13.6133 8.94517L42.0861 -19.5277L40.4674 -21.1464L11.9946 7.32645ZM13.6133 8.94517L-14.8595 -19.5277L-16.4742 -17.913L11.9986 10.5598L40.4715 39.0327L42.0861 37.418L13.6133 8.94517ZM11.9986 10.5598L40.4715 -17.913L38.8528 -19.5317L10.3799 8.94111L-18.0929 37.4139L-16.4742 39.0327L11.9986 10.5598ZM10.3799 8.94111L38.8528 37.4139L40.4674 35.7993L11.9946 7.32645L-16.4783 -21.1464L-18.0929 -19.5317L10.3799 8.94111Z\"\n fill=\"#00A3FF\" mask=\"url(#path-2-inside-1_1902_107186)\" />\n </svg>\n </div>\n <div class=\"message-content\">\n <div class=\"message-bubble\">\n <div [innerHTML]=\"parseMarkdown(msg.text)\"></div>\n <span class=\"msg-sender-tag\" *ngIf=\"msg.sender === 'user'\">{{ userInitials }}</span>\n </div>\n <div class=\"message-actions\" *ngIf=\"msg.sender === 'assistant' && msg.text\">\n <button class=\"btn-copy\" (click)=\"copyToClipboard(msg.text)\" title=\"Copy to clipboard\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"#667085\" stroke-width=\"1.67\">\n <path d=\"M13.3333 13.3333V16.6667C13.3333 17.5872 12.5872 18.3333 11.6667 18.3333H3.33333C2.41286 18.3333 1.66667 17.5872 1.66667 16.6667V8.33333C1.66667 7.41286 2.41286 6.66667 3.33333 6.66667H6.66667M8.33333 3.33333V11.6667C8.33333 12.5872 9.07953 13.3333 10 13.3333H16.6667C17.5872 13.3333 18.3333 12.5872 18.3333 11.6667V3.33333C18.3333 2.41286 17.5872 1.66667 16.6667 1.66667H10C9.07953 1.66667 8.33333 2.41286 8.33333 3.33333Z\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n </div>\n </div>\n <!-- Typing Indicator -->\n <div class=\"message-wrapper assistant\" *ngIf=\"isTyping\">\n <div class=\"message assistant\">\n <div class=\"message-avatar\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <rect width=\"24\" height=\"24\" rx=\"12\" fill=\"#EAF8FF\" />\n <path d=\"M15.9941 14.5561L15.4565 14.0185L9.663 8.225L11.3816 6.5064L11.7934 6.0938C11.8327 6.05395 11.8549 6.00032 11.8552 5.9428C11.855 5.91668 11.8494 5.88931 11.8387 5.86381C11.828 5.8383 11.8123 5.81517 11.7926 5.79572L11.38 5.38312L9.5574 3.55729L9.1448 3.14469C9.1253 3.12485 9.1021 3.10909 9.0764 3.09833C9.0508 3.08757 9.0232 3.08203 8.9954 3.08203C8.9676 3.08203 8.94 3.08757 8.9144 3.09833C8.8887 3.10909 8.8655 3.12485 8.8459 3.14469L8.4333 3.5581L6.1998 5.79166C6.18 5.81109 6.1642 5.83428 6.1535 5.85988C6.1427 5.88547 6.1372 5.91294 6.1372 5.9407C6.1372 5.96846 6.1427 5.99593 6.1535 6.02152C6.1642 6.04712 6.18 6.07031 6.1998 6.08974L8.3334 8.2242L2.5392 14.0185L2.004 14.5561C1.9643 14.5955 1.9418 14.6489 1.9414 14.7048C1.9416 14.7588 1.9622 14.8107 1.9991 14.8502C2.0187 14.8712 2.0425 14.8879 2.0689 14.8994C2.0953 14.9108 2.1238 14.9168 2.1526 14.9168H7.3645C7.4204 14.9166 7.474 14.8942 7.5136 14.8547C7.5531 14.8151 7.5754 14.7615 7.5757 14.7056V14.1874C7.5757 14.1313 7.5534 14.0775 7.5139 14.0378C7.4743 13.9981 7.4206 13.9756 7.3645 13.9754H3.9126L8.9978 8.8902L14.083 13.9754H10.6011C10.545 13.9756 10.4913 13.9981 10.4517 14.0378C10.4122 14.0775 10.3899 14.1313 10.3899 14.1874V14.7056C10.3898 14.7334 10.3953 14.761 10.4061 14.7867C10.4168 14.8123 10.4326 14.8356 10.4525 14.855C10.4919 14.8944 10.5454 14.9166 10.6011 14.9168H15.8447C15.8736 14.9169 15.9023 14.911 15.9288 14.8995C15.9554 14.8881 15.9793 14.8713 15.999 14.8502C16.037 14.8103 16.0577 14.7572 16.0568 14.7022C16.0559 14.6471 16.0334 14.5947 15.9941 14.5561ZM8.9946 4.32645L10.6133 5.94517L8.9986 7.5598L7.3799 5.94111L8.9946 4.32645Z\" fill=\"#00A3FF\"/>\n </svg>\n </div>\n <div class=\"message-content mt-3\">\n <div class=\"message-bubble typing\">\n <span class=\"dot\"></span><span class=\"dot\"></span><span class=\"dot\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Copy Feedback Toast -->\n <div class=\"copy-feedback-toast\" *ngIf=\"copyFeedback\">{{ copyFeedback }}</div>\n <!-- Input Area -->\n <div class=\"chat-input-area border-top\">\n <div class=\"chat-footer d-flex align-items-center justify-content-between\">\n <div class=\"input-wrapper d-flex align-items-center flex-grow-1\">\n <div class=\"plus-menu-wrap me-2\">\n <button class=\"btn-plus\" type=\"button\" (click)=\"togglePlusMenu()\" [class.open]=\"showPlusMenu\">/</button>\n <div class=\"plus-popup\" *ngIf=\"showPlusMenu\">\n <div class=\"plus-popup-section-label\">Model</div>\n <button class=\"plus-popup-item\" type=\"button\" *ngFor=\"let m of modelOptions\"\n [class.selected]=\"selectedModel === m.value\" (click)=\"selectModel(m.value); closePlusMenu()\">\n <span class=\"model-hint fw-bold text-dark fs-5\">{{ m.label | titlecase }}</span>\n <svg *ngIf=\"selectedModel === m.value\" class=\"check-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#009BF3\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\"/>\n </svg>\n </button>\n <div class=\"plus-popup-divider\"></div>\n <button class=\"plus-popup-item\" type=\"button\" (click)=\"closePlusMenu(); newChat()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#344054\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M12 20h9M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z\"/>\n </svg>\n <span>New Chat</span>\n </button>\n <button class=\"plus-popup-item\" type=\"button\" (click)=\"closePlusMenu(); toggleChatHistory()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#344054\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M12 8v4l3 3m6-3a9 9 0 1 1-18 0 9 9 0 0 1 18 0z\"/>\n </svg>\n <span>Chat History</span>\n </button>\n </div>\n </div>\n <input type=\"text\" [(ngModel)]=\"userMessage\" class=\"chat-input\" placeholder=\"Ask anything...\"\n (keyup.enter)=\"sendMessage()\" [disabled]=\"isTyping\">\n <button class=\"btn-history-inline\" *ngIf=\"!showChatHistory\" (click)=\"toggleChatHistory()\" title=\"Chat History\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#667085\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M12 8v4l3 3m6-3a9 9 0 1 1-18 0 9 9 0 0 1 18 0z\"/>\n </svg>\n </button>\n <button class=\"btn-send\" (click)=\"sendMessage()\" [disabled]=\"!userMessage.trim() || isTyping\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"></line>\n <polygon points=\"22 2 15 22 11 13 2 9 22 2\"></polygon>\n </svg>\n </button>\n </div>\n </div>\n </div>\n </div>\n <!-- Backdrop -->\n <div class=\"chat-history-backdrop\" *ngIf=\"showChatHistory\" (click)=\"toggleChatHistory()\"></div>\n <!-- Right Sidebar: Chat History -->\n <aside class=\"chat-history-sidebar border-start\" *ngIf=\"showChatHistory\">\n <div class=\"sidebar-header p-3 border-bottom d-flex justify-content-between align-items-center\">\n <h6 (click)=\"toggleChatHistory()\" class=\"mb-0 fw-bold cursor-pointer\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M10.8333 14.1673L15 10.0007L10.8333 5.83398M5 14.1673L9.16667 10.0007L5 5.83398\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg> Chat History\n </h6>\n </div>\n <div class=\"sidebar-search p-3 pb-0\">\n <div class=\"history-search-wrapper\">\n <i class=\"bi bi-search\"></i>\n <input type=\"text\" placeholder=\"Search chats..\" [(ngModel)]=\"searchText\">\n </div>\n </div>\n <div class=\"sidebar-content p-3 scrollbar-hidden\">\n <div class=\"text-center text-muted py-3\" *ngIf=\"isHistoryLoading\">Loading...</div>\n <div class=\"text-center text-muted py-3\" *ngIf=\"!isHistoryLoading && filteredHistory.length === 0\">No chats found</div>\n <div *ngFor=\"let chat of filteredHistory\" class=\"history-item\" [class.active]=\"selectedChatId === chat.session_id\"\n (click)=\"loadChat(chat.session_id)\">\n <div class=\"item-title text-truncate\">{{ chat.session_title }}</div>\n </div>\n </div>\n <div class=\"sidebar-footer p-3 mt-auto\">\n <button class=\"btn-new-chat w-100\" (click)=\"newChat()\">\n <i class=\"bi bi-plus-lg me-2\"></i> New Chat\n </button>\n </div>\n </aside>\n </div>\n</div>\n\n <!-- Conversations Count -->\n <div class=\"conversations-count mb-3 d-flex align-items-center flex-wrap gap-2\">\n <strong>{{ totalItems }} Total Conversations Found</strong>\n <span *ngIf=\"selectedCardId || selectedCardName\" class=\"active-filter-chip\">\n <span class=\"chip-label\">{{ selectedCardId || selectedCardName }}</span>\n <button class=\"chip-remove\" (click)=\"clearCardFilter()\" title=\"Remove filter\">&times;</button>\n </span>\n </div>\n\n <!-- Conversation Cards -->\n <div class=\"conversations-list\">\n\n <!-- Loader -->\n <ng-container *ngIf=\"isLoadingConversations\">\n <div class=\"conversation-card p-3\" *ngFor=\"let s of [1,2,3]\">\n <div class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- No Data -->\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column my-10\"\n *ngIf=\"!isLoadingConversations && displayedConversations.length === 0\">\n <img class=\"img-map\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\n <div class=\"nodata-title\">No data found</div>\n <div class=\"nodata-sub\">No cohorts has been created yet.<br>\n Please Create a cohort to view the dashboard.</div>\n <button class=\"btn btn-primary rounded-3 w-25 p-4 mt-3\" (click)=\"createCohort()\">\n <span class=\"fw-bold fs-4 mx-2 d-flex align-items-center justify-content-center\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n<path d=\"M10.0013 4.16699V15.8337M4.16797 10.0003H15.8346\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n <span class=\"fw-bold fs-4 d-flex align-items-center justify-content-center ms-2\">Create\n Cohorts</span>\n </span>\n </button>\n </div>\n\n <div class=\"conversation-card\" *ngFor=\"let c of displayedConversations; let mi = index\"\n [hidden]=\"isLoadingConversations\">\n\n <!-- Summary Row (always visible) -->\n <div class=\"conv-summary d-flex justify-content-between\" (click)=\"toggleConversation(c.audioId)\">\n <div class=\"conv-summary-left\">\n <div class=\"d-flex align-items-center gap-2 my-2\">\n <span class=\"conv-id m-0\">{{ c.audioId }}</span>\n </div>\n <div class=\"conv-meta-row my-2\">\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\n fill=\"none\">\n <path\n d=\"M4.08984 9.46777C3.93408 9.48707 3.77504 9.5 3.61328 9.5C3.51562 9.49999 3.41967 9.49448 3.3252 9.4873V14.2236C3.3252 14.9015 3.88652 15.4648 4.58984 15.4648H13.4111C14.1145 15.4648 14.6758 14.9015 14.6758 14.2236V9.48828C14.5827 9.49512 14.4878 9.5 14.3926 9.5C14.2297 9.49998 14.0691 9.48762 13.9111 9.46777V12.9824H4.08984V9.46777ZM13.9189 2.53613H4.08203C3.98145 2.53623 3.8913 2.58826 3.84473 2.66113V2.66211L2.26465 5.12988L2.24316 5.16309C1.63609 6.15653 2.22253 7.46491 3.34277 7.6123C3.43532 7.62358 3.52388 7.62988 3.61133 7.62988C4.18312 7.62975 4.68923 7.3838 5.04102 7.00195L5.40918 6.60156L5.77734 7.00293C6.12562 7.38334 6.63076 7.62988 7.20605 7.62988C7.7788 7.62982 8.28675 7.38306 8.63477 7.00293L12.5986 6.60059L12.9668 7.00293C13.3148 7.38307 13.8227 7.62982 14.3955 7.62988C14.4806 7.62988 14.5716 7.62357 14.6641 7.6123H14.6631C15.7899 7.46139 16.377 6.12516 15.7393 5.12988L14.1572 2.66211L14.1562 2.66113C14.1097 2.58826 14.0195 2.53619 13.9189 2.53613Z\"\n stroke=\"#667085\" />\n </svg> <span class=\"text-name\">Store:</span> <span class=\"name-val\">{{ c.storeName }}</span></span>\n <span class=\"meta-sep\"></span>\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"15\" viewBox=\"0 0 14 15\"\n fill=\"none\">\n <path\n d=\"M12.75 14.25V12.75C12.75 11.9544 12.4339 11.1913 11.8713 10.6287C11.3087 10.0661 10.5456 9.75 9.75 9.75H3.75C2.95435 9.75 2.19129 10.0661 1.62868 10.6287C1.06607 11.1913 0.75 11.9544 0.75 12.75V14.25M9.75 3.75C9.75 5.40685 8.40685 6.75 6.75 6.75C5.09315 6.75 3.75 5.40685 3.75 3.75C3.75 2.09315 5.09315 0.75 6.75 0.75C8.40685 0.75 9.75 2.09315 9.75 3.75Z\"\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg><span class=\"text-name\">Staff:</span> <span class=\"name-val\">{{ c.userName }}</span></span>\n <span class=\"meta-sep\"></span>\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\n fill=\"none\">\n <path\n d=\"M10.875 13.6875C10.35 13.6875 9.90625 13.5062 9.54375 13.1437C9.18125 12.7812 9 12.3375 9 11.8125C9 11.2875 9.18125 10.8438 9.54375 10.4813C9.90625 10.1188 10.35 9.9375 10.875 9.9375C11.4 9.9375 11.8438 10.1188 12.2063 10.4813C12.5688 10.8438 12.75 11.2875 12.75 11.8125C12.75 12.3375 12.5688 12.7812 12.2063 13.1437C11.8438 13.5062 11.4 13.6875 10.875 13.6875ZM3.75 16.6875C3.3375 16.6875 2.9845 16.5408 2.691 16.2472C2.3975 15.9537 2.2505 15.6005 2.25 15.1875V4.6875C2.25 4.275 2.397 3.922 2.691 3.6285C2.985 3.335 3.338 3.188 3.75 3.1875H4.5V1.6875H6V3.1875H12V1.6875H13.5V3.1875H14.25C14.6625 3.1875 15.0158 3.3345 15.3098 3.6285C15.6038 3.9225 15.7505 4.2755 15.75 4.6875V15.1875C15.75 15.6 15.6033 15.9532 15.3098 16.2472C15.0163 16.5413 14.663 16.688 14.25 16.6875H3.75ZM3.75 15.1875H14.25V7.6875H3.75V15.1875Z\"\n fill=\"#667085\" />\n </svg><span class=\"text-name\">Date:</span> <span class=\"name-val\">{{ c.date }}</span></span>\n <span class=\"meta-sep\"></span>\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_1849_13302)\">\n <path\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1849_13302\">\n <rect width=\"18\" height=\"18\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg><span class=\"text-name\">Timestamp:</span> <span class=\"name-val\">{{ c.time | date:'hh:mm a' }}</span></span>\n <span class=\"meta-sep\"></span>\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\n fill=\"none\">\n <path\n d=\"M6.875 2.15267C6.875 1.96481 6.94963 1.78464 7.08247 1.6518C7.21531 1.51896 7.39547 1.44434 7.58333 1.44434H10.4167C10.6045 1.44434 10.7847 1.51896 10.9175 1.6518C11.0504 1.78464 11.125 1.96481 11.125 2.15267C11.125 2.34053 11.0504 2.5207 10.9175 2.65354C10.7847 2.78637 10.6045 2.861 10.4167 2.861H9.70833V3.80545L9.70739 3.84417C10.9047 3.97536 12.0396 4.44553 12.9789 5.19945L12.9856 5.19378L13.6939 4.48545C13.7805 4.39221 13.8906 4.32404 14.0127 4.28814C14.1347 4.25224 14.2642 4.24993 14.3875 4.28144C14.5108 4.31296 14.6233 4.37715 14.7131 4.46724C14.803 4.55732 14.8669 4.66998 14.8981 4.79333C14.9295 4.91647 14.9273 5.04581 14.8915 5.16777C14.8558 5.28974 14.7879 5.39985 14.695 5.48656L13.9867 6.19489L13.981 6.2015C14.7302 7.13944 15.1994 8.26985 15.3345 9.46266C15.4696 10.6555 15.2652 11.8622 14.7448 12.9439C14.2244 14.0257 13.4091 14.9385 12.3928 15.5774C11.3765 16.2163 10.2004 16.5552 9 16.5552C7.79957 16.5552 6.62353 16.2163 5.60722 15.5774C4.59091 14.9385 3.77564 14.0257 3.25522 12.9439C2.73481 11.8622 2.5304 10.6555 2.66552 9.46266C2.80064 8.26985 3.2698 7.13944 4.019 6.2015L4.01334 6.19489L3.305 5.48656C3.17973 5.35231 3.11148 5.17466 3.11466 4.99107C3.11783 4.80747 3.19217 4.63229 3.322 4.50245C3.45185 4.37261 3.62703 4.29827 3.81062 4.2951C3.99422 4.29193 4.17187 4.36017 4.30611 4.48545L5.01445 5.19378L5.02106 5.19945C5.9601 4.4457 7.09472 3.97554 8.29167 3.84417V2.861H7.58333C7.39547 2.861 7.21531 2.78637 7.08247 2.65354C6.94963 2.5207 6.875 2.34053 6.875 2.15267ZM9 15.1388C10.3152 15.1386 11.5764 14.6161 12.5063 13.686C13.4361 12.756 13.9585 11.4947 13.9583 10.1795C13.9582 8.86434 13.4356 7.6031 12.5056 6.67323C11.5756 5.74337 10.3142 5.22104 8.99906 5.22117C7.6839 5.22129 6.42266 5.74386 5.49279 6.6739C4.56292 7.60395 4.0406 8.86529 4.04072 10.1804C4.04085 11.4956 4.56341 12.7568 5.49346 13.6867C6.4235 14.6166 7.68484 15.1389 9 15.1388ZM9.36739 8.811L10.6235 7.55489C10.6888 7.4872 10.7669 7.43321 10.8533 7.39604C10.9397 7.35888 11.0327 7.3393 11.1267 7.33843C11.2208 7.33757 11.3141 7.35545 11.4011 7.39103C11.4882 7.4266 11.5673 7.47916 11.6339 7.54563C11.7004 7.61211 11.753 7.69117 11.7887 7.77821C11.8243 7.86524 11.8423 7.9585 11.8415 8.05256C11.8408 8.14661 11.8213 8.23957 11.7842 8.326C11.7471 8.41244 11.6932 8.49062 11.6256 8.556L10.3694 9.81305C10.4252 10.023 10.4321 10.243 10.3895 10.4561C10.3468 10.6692 10.2559 10.8696 10.1236 11.0419C9.99127 11.2143 9.82117 11.354 9.62637 11.4502C9.43157 11.5465 9.21728 11.5967 9 11.5971C8.79949 11.5954 8.60163 11.5511 8.41953 11.4671C8.23743 11.3832 8.07524 11.2615 7.94369 11.1102C7.81215 10.9588 7.71426 10.7813 7.65649 10.5893C7.59873 10.3973 7.58241 10.1952 7.60863 9.99636C7.63484 9.79756 7.70299 9.6066 7.80855 9.43612C7.91412 9.26564 8.05469 9.11953 8.22097 9.00746C8.38725 8.89539 8.57543 8.81993 8.77307 8.78606C8.97071 8.75219 9.17328 8.76069 9.36739 8.811Z\"\n fill=\"#667085\" />\n </svg><span class=\"text-name\"> Duration:</span> <span class=\"name-val\">{{ formatDuration(c.duration) }}</span></span>\n <span class=\"meta-sep\"></span>\n <span class=\"meta-item\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path d=\"M9 1.5C6.23858 1.5 4 3.73858 4 6.5C4 10.25 9 16.5 9 16.5C9 16.5 14 10.25 14 6.5C14 3.73858 11.7614 1.5 9 1.5ZM9 8.75C7.75736 8.75 6.75 7.74264 6.75 6.5C6.75 5.25736 7.75736 4.25 9 4.25C10.2426 4.25 11.25 5.25736 11.25 6.5C11.25 7.74264 10.2426 8.75 9 8.75Z\" fill=\"#667085\"/>\n</svg><span class=\"text-name\"> Location:</span> <span class=\"name-val location-truncate\" [title]=\"c.location\">{{ c.location }}</span></span>\n\n </div>\n <div class=\"conv-excerpt my-2\">{{ c.audioDescription }}</div>\n <a *ngIf=\"c.eyeTestLink\" class=\"eye-test-link\" href=\"#\" (click)=\"$event.stopPropagation()\">\n View Eye Test <span>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M15 10.8333V15.8333C15 16.2754 14.8244 16.6993 14.5118 17.0118C14.1993 17.3244 13.7754 17.5 13.3333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V6.66667C2.5 6.22464 2.67559 5.80072 2.98816 5.48816C3.30072 5.17559 3.72464 5 4.16667 5H9.16667M12.5 2.5H17.5M17.5 2.5V7.5M17.5 2.5L8.33333 11.6667\"\n stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </a>\n </div>\n <div class=\"conv-toggle-btn text-nowrap\" (click)=\"$event.stopPropagation(); toggleConversation(c.audioId)\">\n <span>{{ openId === c.audioId ? 'View Less' : 'View More' }}</span>\n\n <!-- down arrow when closed -->\n <svg *ngIf=\"openId !== c.audioId\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\n viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M5.83203 10.8333L9.9987 15L14.1654 10.8333M5.83203 5L9.9987 9.16667L14.1654 5\" stroke=\"#667085\"\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n\n <!-- up arrow when open -->\n <svg *ngIf=\"openId === c.audioId\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\n viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M5.83203 10.8333L9.9987 15L14.1654 10.8333M5.83203 5L9.9987 9.16667L14.1654 5\" stroke=\"#667085\"\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" transform=\"rotate(180 10 10)\" />\n </svg>\n </div>\n </div>\n\n <!-- Expanded Body -->\n <div class=\"conv-body\" *ngIf=\"openId === c.audioId\">\n\n <!-- Detail Loading shimmer -->\n <ng-container *ngIf=\"c._detailLoading\">\n <div class=\"row loader d-flex justify-content-center align-items-center px-4 py-3\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- No data / error after load -->\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column my-6\"\n *ngIf=\"!c._detailLoading && (c._detailError || (c._detailLoaded && !c.conversationDetails?.audioSummary && c.metrics?.length === 0))\">\n <img class=\"img-map\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\n <div class=\"nodata-title\">No data found</div>\n <div class=\"nodata-sub\">No details available for this conversation</div>\n </div>\n\n <div class=\"conv-body-inner\" *ngIf=\"!c._detailLoading && !c._detailError\">\n\n <!-- Left: Recording + Summary + Insights -->\n <div class=\"conv-left\">\n\n <div class=\"recording-box mb-2\" [class.is-playing-box]=\"playingConvId === c.audioId\" *ngIf=\"c.audioUrl\">\n <div class=\"recording-title\">Conversation Recording</div>\n\n <!-- Waveform: per-conversation playing state -->\n <div class=\"waveform-bars\" [class.is-playing]=\"playingConvId === c.audioId\">\n <div class=\"wf-bar\" *ngFor=\"let h of waveformHeights; let i = index\" [style.height.px]=\"h\"\n [class.wf-bar--played]=\"(playbackStates[c.audioId]?.progress || 0) > i / waveformHeights.length\">\n </div>\n </div>\n\n <!-- Player controls -->\n <div class=\"player-row\">\n\n <!-- Play / Pause button with white outer ring -->\n <div class=\"play-btn-wrap\">\n <button class=\"play-btn-circle\" (click)=\"togglePlay(c.audioId)\">\n <!-- Play icon -->\n <svg *ngIf=\"playingConvId !== c.audioId\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"white\">\n <path d=\"M8 5v14l11-7z\" />\n </svg>\n <!-- Pause icon -->\n <svg *ngIf=\"playingConvId === c.audioId\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"white\">\n <path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\" />\n </svg>\n </button>\n </div>\n\n <!-- Progress bar + times -->\n <div class=\"player-progress w-100\">\n <div class=\"d-flex justify-content-between\">\n <span class=\"player-time start-time\">{{ playbackStates[c.audioId]?.currentTime || '0:00' }}</span>\n <span class=\"player-time end-time\">{{ playbackStates[c.audioId]?.totalTime || c.duration }}</span>\n </div>\n\n <div class=\"progress-track\" (click)=\"seekAudio($event, c.audioId)\" style=\"cursor: pointer;\">\n <div class=\"progress-fill\" [style.width.%]=\"(playbackStates[c.audioId]?.progress || 0) * 100\">\n </div>\n </div>\n\n </div>\n <audio [id]=\"'audio-' + c.audioId\" [src]=\"c.audioUrl\"\n preload=\"metadata\"\n (timeupdate)=\"onTimeUpdate(audioPlayer, c.audioId)\"\n (loadedmetadata)=\"onLoadedMetadata(audioPlayer, c.audioId, c.duration)\"\n (ended)=\"playingConvId = null\" #audioPlayer>\n </audio>\n <!-- <audio #audioPlayer (timeupdate)=\"onTimeUpdate(audioPlayer)\"\n (loadedmetadata)=\"onLoadedMetadata(audioPlayer)\">\n </audio> -->\n\n <!-- Mute / Unmute button -->\n <button class=\"mute-btn\" (click)=\"toggleMute()\" [title]=\"isMuted ? 'Unmute' : 'Mute'\">\n <!-- Volume on -->\n <svg *ngIf=\"!isMuted\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path\n d=\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\" />\n </svg>\n <!-- Volume muted -->\n <svg *ngIf=\"isMuted\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path\n d=\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z\" />\n </svg>\n </button>\n\n </div>\n </div>\n\n <!-- Tabs -->\n <div class=\"border-layer mb-2\">\n\n <div class=\"conv-tabs\">\n <button class=\"conv-tab\" [class.active]=\"activeTab[c.audioId] !== 'transcript'\"\n (click)=\"$event.stopPropagation(); setTab(c.audioId, 'summary')\">Summary</button>\n <button class=\"conv-tab\" [class.active]=\"activeTab[c.audioId] === 'transcript'\"\n (click)=\"$event.stopPropagation(); setTab(c.audioId, 'transcript')\">Transcript</button>\n </div>\n\n <div class=\"conv-body-text mt-2\">\n <p *ngIf=\"activeTab[c.audioId] !== 'transcript'\">\n {{ c.conversationDetails.audioSummary }}\n </p>\n <p *ngIf=\"activeTab[c.audioId] === 'transcript'\">\n {{ c.conversationDetails.transcription }}\n </p>\n </div>\n </div>\n\n <!-- AI Insights -->\n <div class=\"ai-insights-box\">\n <div class=\"ai-insights-header\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"36\" height=\"37\" viewBox=\"0 0 36 37\" fill=\"none\">\n <mask id=\"path-1-inside-1_1849_13384\" fill=\"white\">\n <path\n d=\"M29.5151 29.3227L28.6156 28.4232L18.9244 18.732L21.7993 15.8571L22.4882 15.167C22.5539 15.1003 22.5909 15.0106 22.5914 14.917C22.5912 14.8707 22.5818 14.8249 22.5639 14.7822C22.5459 14.7396 22.5197 14.7009 22.4868 14.6683L21.7966 13.9781L18.7478 10.9239L18.0576 10.2337C18.025 10.2005 17.9861 10.1742 17.9432 10.1562C17.9002 10.1382 17.8542 10.1289 17.8076 10.1289C17.7611 10.1289 17.715 10.1382 17.6721 10.1562C17.6292 10.1742 17.5903 10.2005 17.5576 10.2337L16.8674 10.9253L13.1312 14.6615C13.098 14.694 13.0717 14.7328 13.0537 14.7756C13.0357 14.8185 13.0265 14.8644 13.0265 14.9108C13.0265 14.9573 13.0357 15.0032 13.0537 15.0461C13.0717 15.0889 13.098 15.1277 13.1312 15.1602L16.7003 18.7307L7.00777 28.4232L6.11243 29.3227C6.04604 29.3884 6.00842 29.4778 6.00781 29.5713C6.0082 29.6616 6.04265 29.7485 6.10428 29.8145C6.13718 29.8496 6.17695 29.8777 6.22111 29.8968C6.26528 29.916 6.31291 29.9259 6.36106 29.9259H15.0795C15.173 29.9255 15.2627 29.8882 15.3289 29.822C15.395 29.7559 15.4324 29.6662 15.4327 29.5726V28.7058C15.4327 28.612 15.3955 28.522 15.3293 28.4556C15.2631 28.3891 15.1733 28.3516 15.0795 28.3512H9.30524L17.8117 19.8448L26.3182 28.3512H20.4937C20.3999 28.3516 20.31 28.3891 20.2438 28.4556C20.1776 28.522 20.1404 28.612 20.1404 28.7058V29.5726C20.1402 29.6192 20.1494 29.6653 20.1674 29.7083C20.1853 29.7512 20.2118 29.7901 20.245 29.8226C20.311 29.8885 20.4004 29.9256 20.4937 29.9259H29.2651C29.3134 29.9261 29.3613 29.9163 29.4057 29.8971C29.4502 29.8779 29.4901 29.8498 29.5232 29.8145C29.5867 29.7478 29.6214 29.6589 29.6199 29.5669C29.6184 29.4749 29.5807 29.3872 29.5151 29.3227ZM17.8063 12.2105L20.514 14.9183L17.8131 17.6193L15.1053 14.9115L17.8063 12.2105Z\" />\n </mask>\n <path\n d=\"M29.5151 29.3227L-18.1139 76.9516L-17.9024 77.1631L-17.6891 77.3727L29.5151 29.3227ZM28.6156 28.4232L76.2446 -19.2057V-19.2057L28.6156 28.4232ZM18.9244 18.732L-28.7045 -28.8969L-76.3335 18.732L-28.7046 66.361L18.9244 18.732ZM21.7993 15.8571L69.4283 63.4861L69.4518 63.4626L69.4753 63.4391L21.7993 15.8571ZM22.4882 15.167L70.1641 62.7489L70.3095 62.6032L70.454 62.4566L22.4882 15.167ZM22.5914 14.917L89.9481 15.2605L89.9498 14.9226L89.9481 14.5848L22.5914 14.917ZM22.4868 14.6683L-25.1422 62.2973L-24.9939 62.4456L-24.8447 62.5929L22.4868 14.6683ZM21.7966 13.9781L-25.8748 61.5647L-25.8536 61.5859L-25.8324 61.6071L21.7966 13.9781ZM18.7478 10.9239L66.4192 -36.6626L66.398 -36.6839L66.3768 -36.7051L18.7478 10.9239ZM18.0576 10.2337L-29.9803 57.4502L-29.7767 57.6574L-29.5713 57.8627L18.0576 10.2337ZM17.5576 10.2337L65.2334 57.8159L65.4152 57.6337L65.5956 57.4502L17.5576 10.2337ZM16.8674 10.9253L64.4964 58.5542L64.5198 58.5308L64.5432 58.5074L16.8674 10.9253ZM13.1312 14.6615L60.2907 62.7554L60.5266 62.5241L60.7602 62.2905L13.1312 14.6615ZM13.0265 14.9108H80.384H13.0265ZM13.1312 15.1602L60.7692 -32.4597L60.5312 -32.6979L60.2907 -32.9337L13.1312 15.1602ZM16.7003 18.7307L64.3293 66.3596L111.949 18.7397L64.3384 -28.8892L16.7003 18.7307ZM7.00777 28.4232L-40.6212 -19.2057L-40.6753 -19.1517L-40.7292 -19.0975L7.00777 28.4232ZM6.11243 29.3227L53.5203 77.1717L53.6855 77.0081L53.8494 76.8434L6.11243 29.3227ZM6.00781 29.5713L-61.3483 29.1316L-61.3507 29.496L-61.3491 29.8604L6.00781 29.5713ZM6.10428 29.8145L-43.1376 75.774L-43.1037 75.8103L-43.0699 75.8465L6.10428 29.8145ZM6.36106 29.9259L6.33973 97.2834L6.3504 97.2834H6.36106V29.9259ZM15.0795 29.9259V97.2834H15.2083L15.3371 97.283L15.0795 29.9259ZM15.4327 29.5726L82.7898 29.8302L82.7903 29.7014V29.5726H15.4327ZM15.4327 28.7058L-51.9248 28.7053V28.7058H15.4327ZM15.0795 28.3512L15.3375 -39.0058L15.2085 -39.0063H15.0795V28.3512ZM9.30524 28.3512L-38.3237 -19.2778L-153.31 95.7088H9.30524V28.3512ZM17.8117 19.8448L65.4407 -27.7842L17.8117 -75.4132L-29.8173 -27.7842L17.8117 19.8448ZM26.3182 28.3512V95.7088H188.934L73.9472 -19.2778L26.3182 28.3512ZM20.4937 28.3512V-39.0063H20.3646L20.2356 -39.0058L20.4937 28.3512ZM20.1404 28.7058H87.498V28.7053L20.1404 28.7058ZM20.1404 29.5726L87.4975 29.831L87.498 29.7018V29.5726H20.1404ZM20.245 29.8226L67.8348 -17.8455L67.5897 -18.0902L67.3422 -18.3323L20.245 29.8226ZM20.4937 29.9259L20.3133 97.2832L20.4035 97.2834H20.4937V29.9259ZM29.2651 29.9259L29.5034 -37.4312L29.3842 -37.4317H29.2651V29.9259ZM29.5232 29.8145L-19.2474 -16.6449L-19.4503 -16.4319L-19.6513 -16.2171L29.5232 29.8145ZM17.8063 12.2105L65.4353 -35.4184L17.8063 -83.0474L-29.8227 -35.4184L17.8063 12.2105ZM20.514 14.9183L68.143 62.5473L115.772 14.9183L68.143 -32.7107L20.514 14.9183ZM17.8131 17.6193L-29.8159 65.2483L17.813 112.877L65.442 65.2483L17.8131 17.6193ZM15.1053 14.9115L-32.5237 -32.7174L-80.1527 14.9115L-32.5237 62.5405L15.1053 14.9115ZM29.5151 29.3227L77.144 -18.3063L76.2446 -19.2057L28.6156 28.4232L-19.0133 76.0522L-18.1139 76.9516L29.5151 29.3227ZM28.6156 28.4232L76.2446 -19.2057L66.5534 -28.8969L18.9244 18.732L-28.7046 66.361L-19.0133 76.0522L28.6156 28.4232ZM18.9244 18.732L66.5534 66.361L69.4283 63.4861L21.7993 15.8571L-25.8297 -31.7718L-28.7045 -28.8969L18.9244 18.732ZM21.7993 15.8571L69.4753 63.4391L70.1641 62.7489L22.4882 15.167L-25.1878 -32.415L-25.8766 -31.7248L21.7993 15.8571ZM22.4882 15.167L70.454 62.4566C82.8622 49.8711 89.8579 32.9334 89.9481 15.2605L22.5914 14.917L-44.7653 14.5734C-44.6761 -2.91221 -37.7544 -19.6705 -25.4777 -32.1227L22.4882 15.167ZM22.5914 14.917L89.9481 14.5848C89.9042 5.67953 88.104 -3.13075 84.6494 -11.3412L22.5639 14.7822L-39.5216 40.9056C-42.9404 32.7805 -44.7219 24.0618 -44.7653 15.2492L22.5914 14.917ZM22.5639 14.7822L84.6494 -11.3412C81.1952 -19.5504 76.1554 -26.9976 69.8183 -33.2563L22.4868 14.6683L-24.8447 62.5929C-31.1159 56.3994 -36.1034 49.0295 -39.5216 40.9056L22.5639 14.7822ZM22.4868 14.6683L70.1158 -32.9606L69.4256 -33.6508L21.7966 13.9781L-25.8324 61.6071L-25.1422 62.2973L22.4868 14.6683ZM21.7966 13.9781L69.468 -33.6084L66.4192 -36.6626L18.7478 10.9239L-28.9236 58.5105L-25.8748 61.5647L21.7966 13.9781ZM18.7478 10.9239L66.3768 -36.7051L65.6866 -37.3953L18.0576 10.2337L-29.5713 57.8627L-28.8811 58.5529L18.7478 10.9239ZM18.0576 10.2337L66.0956 -36.9828C59.7945 -43.3934 52.2793 -48.486 43.9879 -51.9624L17.9432 10.1562L-8.10155 72.2747C-16.3072 68.8343 -23.7445 63.7945 -29.9803 57.4502L18.0576 10.2337ZM17.9432 10.1562L43.9879 -51.9624C35.697 -55.4385 26.7972 -57.2286 17.8076 -57.2286V10.1289V77.4865C8.91115 77.4865 0.103456 75.7149 -8.10155 72.2747L17.9432 10.1562ZM17.8076 10.1289V-57.2286C8.81786 -57.2286 -0.0819659 -55.4384 -8.37262 -51.9624L17.6721 10.1562L43.7168 72.2747C35.512 75.7148 26.7043 77.4865 17.8076 77.4865V10.1289ZM17.6721 10.1562L-8.37262 -51.9624C-16.6635 -48.4862 -24.1788 -43.3938 -30.4803 -36.9828L17.5576 10.2337L65.5956 57.4502C59.3594 63.7949 51.9219 68.8345 43.7168 72.2747L17.6721 10.1562ZM17.5576 10.2337L-30.1181 -37.3484L-30.8083 -36.6569L16.8674 10.9253L64.5432 58.5074L65.2334 57.8159L17.5576 10.2337ZM16.8674 10.9253L-30.7615 -36.7037L-34.4978 -32.9674L13.1312 14.6615L60.7602 62.2905L64.4964 58.5542L16.8674 10.9253ZM13.1312 14.6615L-34.0284 -33.4323C-40.4566 -27.129 -45.5632 -19.6068 -49.0494 -11.3058L13.0537 14.7756L75.1568 40.8571C71.7066 49.0725 66.6526 56.5171 60.2907 62.7554L13.1312 14.6615ZM13.0537 14.7756L-49.0494 -11.3058C-52.5351 -3.00584 -54.3311 5.90682 -54.3311 14.9108H13.0265H80.384C80.384 23.822 78.6066 32.6427 75.1568 40.8571L13.0537 14.7756ZM13.0265 14.9108H-54.3311C-54.3311 23.9148 -52.5352 32.8274 -49.0494 41.1275L13.0537 15.0461L75.1568 -11.0354C78.6067 -2.82096 80.384 5.99978 80.384 14.9108H13.0265ZM13.0537 15.0461L-49.0494 41.1275C-45.5631 49.4288 -40.4564 56.9509 -34.0284 63.254L13.1312 15.1602L60.2907 -32.9337C66.6524 -26.6956 71.7065 -19.2511 75.1568 -11.0354L13.0537 15.0461ZM13.1312 15.1602L-34.5069 62.7801L-30.9377 66.3506L16.7003 18.7307L64.3384 -28.8892L60.7692 -32.4597L13.1312 15.1602ZM16.7003 18.7307L-30.9287 -28.8983L-40.6212 -19.2057L7.00777 28.4232L54.6368 76.0522L64.3293 66.3596L16.7003 18.7307ZM7.00777 28.4232L-40.7292 -19.0975L-41.6246 -18.1981L6.11243 29.3227L53.8494 76.8434L54.7448 75.944L7.00777 28.4232ZM6.11243 29.3227L-41.2955 -18.5264C-54.0208 -5.91838 -61.2314 11.2185 -61.3483 29.1316L6.00781 29.5713L73.3639 30.011C73.2482 47.7372 66.1129 64.6952 53.5203 77.1717L6.11243 29.3227ZM6.00781 29.5713L-61.3491 29.8604C-61.2759 46.9123 -54.7721 63.3086 -43.1376 75.774L6.10428 29.8145L55.3461 -16.1451C66.8574 -3.81166 73.2923 12.4109 73.3647 29.2822L6.00781 29.5713ZM6.10428 29.8145L-43.0699 75.8465C-36.7393 82.6091 -29.0879 88.0015 -20.5883 91.6892L6.22111 29.8968L33.0305 -31.8955C41.4417 -28.2462 49.0137 -22.9099 55.2784 -16.2175L6.10428 29.8145ZM6.22111 29.8968L-20.5883 91.6892C-12.0905 95.3761 -2.92551 97.2805 6.33973 97.2834L6.36106 29.9259L6.38239 -37.4317C15.5513 -37.4287 24.621 -35.5441 33.0305 -31.8955L6.22111 29.8968ZM6.36106 29.9259V97.2834H15.0795V29.9259V-37.4317H6.36106V29.9259ZM15.0795 29.9259L15.3371 97.283C33.2059 97.2146 50.323 90.0859 62.9578 77.451L15.3289 29.822L-32.3001 -17.8069C-19.7976 -30.3095 -2.85977 -37.3635 14.8219 -37.4312L15.0795 29.9259ZM15.3289 29.822L62.9578 77.451C75.5938 64.815 82.7215 47.6975 82.7898 29.8302L15.4327 29.5726L-51.9243 29.3151C-51.8567 11.635 -44.8037 -5.30332 -32.3001 -17.8069L15.3289 29.822ZM15.4327 29.5726H82.7903V28.7058H15.4327H-51.9248V29.5726H15.4327ZM15.4327 28.7058L82.7903 28.7063C82.7904 10.7927 75.692 -6.39093 63.0497 -19.0819L15.3293 28.4556L-32.391 75.993C-44.9009 63.435 -51.925 46.4314 -51.9248 28.7053L15.4327 28.7058ZM15.3293 28.4556L63.0497 -19.0819C50.408 -31.7721 33.2521 -38.9372 15.3375 -39.0058L15.0795 28.3512L14.8214 95.7083C-2.90555 95.6404 -19.8818 88.5503 -32.391 75.993L15.3293 28.4556ZM15.0795 28.3512V-39.0063H9.30524V28.3512V95.7088H15.0795V28.3512ZM9.30524 28.3512L56.9342 75.9802L65.4407 67.4737L17.8117 19.8448L-29.8173 -27.7842L-38.3237 -19.2778L9.30524 28.3512ZM17.8117 19.8448L-29.8173 67.4737L-21.3108 75.9802L26.3182 28.3512L73.9472 -19.2778L65.4407 -27.7842L17.8117 19.8448ZM26.3182 28.3512V-39.0063H20.4937V28.3512V95.7088H26.3182V28.3512ZM20.4937 28.3512L20.2356 -39.0058C2.32124 -38.9372 -14.8348 -31.7723 -27.4765 -19.0819L20.2438 28.4556L67.9641 75.993C55.4548 88.5505 38.4785 95.6404 20.7517 95.7083L20.4937 28.3512ZM20.2438 28.4556L-27.4765 -19.0819C-40.1185 -6.39129 -47.2173 10.7922 -47.2171 28.7063L20.1404 28.7058L87.498 28.7053C87.4981 46.4319 80.4737 63.4354 67.9641 75.993L20.2438 28.4556ZM20.1404 28.7058H-47.2171V29.5726H20.1404H87.498V28.7058H20.1404ZM20.1404 29.5726L-47.2166 29.3143C-47.2514 38.3759 -45.4668 47.352 -41.9688 55.7109L20.1674 29.7083L82.3035 3.70562C85.7656 11.9786 87.5319 20.8625 87.4975 29.831L20.1404 29.5726ZM20.1674 29.7083L-41.9688 55.7109C-38.4705 64.0703 -33.33 71.642 -26.8521 77.9776L20.245 29.8226L67.3422 -18.3323C73.7535 -12.0618 78.8412 -4.56794 82.3035 3.70562L20.1674 29.7083ZM20.245 29.8226L-27.3447 77.4908C-14.6945 90.1202 2.43691 97.2353 20.3133 97.2832L20.4937 29.9259L20.6741 -37.4314C38.3639 -37.384 55.3166 -30.3431 67.8348 -17.8455L20.245 29.8226ZM20.4937 29.9259V97.2834H29.2651V29.9259V-37.4317H20.4937V29.9259ZM29.2651 29.9259L29.0267 97.283C38.3372 97.316 47.552 95.4284 56.0962 91.7409L29.4057 29.8971L2.71525 -31.9467C11.1706 -35.5959 20.2897 -37.4638 29.5034 -37.4312L29.2651 29.9259ZM29.4057 29.8971L56.0962 91.7409C64.643 88.0523 72.3369 82.6412 78.6977 75.8461L29.5232 29.8145L-19.6513 -16.2171C-13.3566 -22.9416 -5.74266 -28.2965 2.71525 -31.9467L29.4057 29.8971ZM29.5232 29.8145L78.2938 76.2738C90.5543 63.4034 97.2628 46.2265 96.9682 28.4506L29.6199 29.5669L-37.7284 30.6832C-38.02 13.0914 -31.3809 -3.9077 -19.2474 -16.6449L29.5232 29.8145ZM29.6199 29.5669L96.9682 28.4506C96.6736 10.6753 89.3999 -6.26998 76.7192 -18.7274L29.5151 29.3227L-17.6891 77.3727C-30.2385 65.0443 -37.4368 48.2744 -37.7284 30.6832L29.6199 29.5669ZM17.8063 12.2105L-29.8227 59.8395L-27.1149 62.5473L20.514 14.9183L68.143 -32.7107L65.4353 -35.4184L17.8063 12.2105ZM20.514 14.9183L-27.1149 -32.7107L-29.8159 -30.0097L17.8131 17.6193L65.442 65.2483L68.143 62.5473L20.514 14.9183ZM17.8131 17.6193L65.4421 -30.0097L62.7343 -32.7174L15.1053 14.9115L-32.5237 62.5405L-29.8159 65.2483L17.8131 17.6193ZM15.1053 14.9115L62.7343 62.5405L65.4353 59.8395L17.8063 12.2105L-29.8227 -35.4184L-32.5237 -32.7174L15.1053 14.9115Z\"\n fill=\"#00A3FF\" mask=\"url(#path-1-inside-1_1849_13384)\" />\n <path\n d=\"M26.2537 0.740234L26.6974 2.58437C26.9235 3.52457 27.4255 4.3977 28.1545 5.11862C28.8836 5.83954 29.8147 6.38366 30.8571 6.69791L31.8394 6.99391L30.8571 7.28992C29.8147 7.60417 28.8836 8.14828 28.1545 8.86921C27.4255 9.59013 26.9235 10.4633 26.6974 11.4035L26.2537 13.2476L25.81 11.4035C25.5839 10.4633 25.0819 9.59013 24.3528 8.86921C23.6238 8.14828 22.6927 7.60417 21.6503 7.28992L20.668 6.99391L21.6503 6.69791C22.6927 6.38366 23.6238 5.83954 24.3528 5.11862C25.0819 4.3977 25.5839 3.52457 25.81 2.58437L26.2537 0.740234Z\"\n fill=\"url(#paint0_linear_1849_13384)\" />\n <path\n d=\"M9.9244 9.51351L9.77279 8.86035L9.62117 9.51351C9.51252 9.98254 9.26666 10.4192 8.90739 10.7812C8.54812 11.1433 8.0876 11.4184 7.57042 11.58L7.37891 11.6398L7.57042 11.6995C8.0876 11.8611 8.54812 12.1363 8.90739 12.4983C9.26666 12.8603 9.51252 13.297 9.62117 13.766L9.77279 14.4192L9.9244 13.766C10.033 13.297 10.2789 12.8603 10.6382 12.4983C10.9975 12.1363 11.458 11.8611 11.9752 11.6995L12.1667 11.6398L11.9752 11.58C11.458 11.4184 10.9975 11.1433 10.6382 10.7812C10.2789 10.4192 10.033 9.98254 9.9244 9.51351Z\"\n fill=\"url(#paint1_linear_1849_13384)\" />\n <path opacity=\"0.6\"\n d=\"M7.68961 21.5624L7.50608 20.6758L7.32334 21.5631C7.27549 21.7943 7.16109 22.0112 6.99084 22.1935C6.82059 22.3758 6.60005 22.5175 6.34983 22.6054L5.91016 22.7603L6.34983 22.9153C6.6 23.0034 6.82045 23.1452 6.99056 23.3276C7.16067 23.51 7.27489 23.727 7.32255 23.9583L7.50608 24.8449L7.68881 23.9576C7.73667 23.7263 7.85107 23.5095 8.02131 23.3272C8.19156 23.1449 8.4121 23.0032 8.66232 22.9153L9.102 22.7603L8.66232 22.6054C8.41215 22.5173 8.19171 22.3755 8.0216 22.1931C7.85149 22.0107 7.73726 21.7937 7.68961 21.5624Z\"\n fill=\"url(#paint2_linear_1849_13384)\" />\n <defs>\n <linearGradient id=\"paint0_linear_1849_13384\" x1=\"23.46\" y1=\"13.9422\" x2=\"23.46\" y2=\"0.0451625\"\n gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#117FF5\" stop-opacity=\"0.2\" />\n <stop offset=\"1\" stop-color=\"#0591FF\" />\n </linearGradient>\n <linearGradient id=\"paint1_linear_1849_13384\" x1=\"15.7575\" y1=\"22.7574\" x2=\"15.7575\" y2=\"8.86035\"\n gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"white\" />\n <stop offset=\"1\" stop-color=\"#0591FF\" />\n </linearGradient>\n <linearGradient id=\"paint2_linear_1849_13384\" x1=\"5.91016\" y1=\"20.6758\" x2=\"9.102\" y2=\"20.6758\"\n gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#00A3FF\" />\n <stop offset=\"1\" stop-color=\"#33B5FF\" />\n </linearGradient>\n </defs>\n </svg>\n <span class=\"ai-insights-title text-dark\">{{ c.aiInsights.title }}</span>\n </div>\n <ul class=\"ai-insights-list bg-white my-4 p-4 rounded-lg\">\n <li *ngFor=\"let insight of c.aiInsights.summary\">\n <span class=\"insight-bullet-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#33B5FF\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n {{ insight }}\n </li>\n </ul>\n </div>\n\n </div>\n\n <!-- Right: Metrics -->\n <div class=\"conv-right\">\n <div class=\"metrics-panel\">\n <div class=\"metrics-title\">Metrics</div>\n\n <ng-container *ngFor=\"let m of c.metrics; let mi = index\">\n\n <!-- BOOLEAN_BASKET -->\n <ng-container *ngIf=\"m.type === 'BOOLEAN_BASKET'\">\n <div class=\"metric-section-label mb-1\">{{ m.name }}</div>\n <div class=\"metric-row-item\" *ngFor=\"let row of m.value\">\n <span class=\"metric-key\"><span class=\"dot\"></span>{{ row.name }}</span>\n <strong class=\"metric-val\">{{ row.score }}</strong>\n </div>\n <div class=\"metric-divider\"></div>\n </ng-container>\n\n <!-- NUMERIC_SCALAR -->\n <ng-container *ngIf=\"m.type === 'NUMERIC_SCALAR' || m.type === 'NUMERIC_ARRAY'\">\n <div class=\"metric-section-label mb-1\">{{ m.name }}</div>\n <div class=\"metric-row-item\" *ngFor=\"let row of m.value\">\n <span class=\"metric-key\">Total</span>\n <strong class=\"metric-val\">{{ row.Total }}</strong>\n </div>\n <div class=\"metric-row-item\" *ngFor=\"let row of m.value\">\n <span class=\"metric-key\">Avg</span>\n <strong class=\"metric-val\">{{ row.Avg }}</strong>\n </div>\n <div class=\"metric-divider\"></div>\n </ng-container>\n\n <!-- SUBJECTIVE -->\n <ng-container *ngIf=\"m.type === 'SUBJECTIVE'\">\n <div class=\"metric-section-label mb-1\">{{ m.name }}</div>\n <ul class=\"metric-bullet-list metric-bullet-list--text\">\n <li *ngFor=\"let row of m.value\">{{ row.reasoning }}</li>\n </ul>\n <div class=\"metric-divider\"></div>\n </ng-container>\n\n </ng-container>\n\n </div>\n </div>\n\n </div>\n </div>\n\n </div>\n </div>\n <lib-pagination *ngIf=\"totalItems > 0\" [itemsPerPage]=\"pageSize\" [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\"\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\n </div>\n</div>", styles: ["@charset \"UTF-8\";.audio-page{padding:24px;background-color:#f5f7fa}.audio-page .header-row-container{background:#fff;padding:14px 24px;border-radius:8px;border:1px solid #e8edf3}.audio-page .section-title{font-size:16px;font-weight:600;color:#1a2b4b}.audio-page .total-audio-label{font-size:14px;color:#555}.audio-page .total-audio-label strong{font-weight:700;color:#1a2b4b}.audio-page .cohort-dropdown{position:relative}.audio-page .cohort-dropdown .cohort-dropdown-trigger{display:flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid #D0D5DD;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;color:#344054;-webkit-user-select:none;user-select:none;transition:border-color .2s,background .2s;min-width:150px;justify-content:space-between}.audio-page .cohort-dropdown .cohort-dropdown-trigger svg{transition:transform .2s ease;flex-shrink:0}.audio-page .cohort-dropdown .cohort-dropdown-trigger svg.rotate{transform:rotate(180deg)}.audio-page .cohort-dropdown .cohort-dropdown-menu{position:absolute;top:calc(100% + 4px);left:0;z-index:999;min-width:180px;background:#fff;border:1px solid #D0D5DD;border-radius:8px;padding:6px;box-shadow:0 12px 16px -4px #10182814,0 4px 6px -2px #10182808}.audio-page .cohort-dropdown .cohort-dropdown-menu .cohort-option{padding:10px 12px;font-size:14px;color:#344054;border-radius:6px;cursor:pointer;transition:background .15s}.audio-page .cohort-dropdown .cohort-dropdown-menu .cohort-option:hover{background:#f9fafb}.audio-page .cohort-dropdown .cohort-dropdown-menu .cohort-option.selected{background:#eaf8ff;color:#00a3ff;font-weight:600}.audio-page .stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;overflow:hidden}.audio-page .stats-grid .cards-full-loader{grid-column:1/-1;min-height:120px;padding:24px}.audio-page .ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #eaecf0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.audio-page .stat-card{background:#fff;border-radius:12px;border:1px solid #EAECF0;box-shadow:0 1px 2px #1018280d;min-width:0;overflow:hidden}.audio-page .stat-card .stat-card-header{padding:16px 20px;border-bottom:1px solid #EAECF0;font-weight:600;font-size:17px;color:#101828}.audio-page .stat-card .stat-card-body{max-height:300px;overflow-y:auto;overflow-x:hidden}.audio-page .stat-card .stat-row{display:flex;align-items:center;padding:12px 0;border-bottom:1px solid #F2F4F7}.audio-page .stat-card .stat-row:last-child{border-bottom:none}.audio-page .stat-card .stat-row .stat-label{font-size:14px;font-weight:500;color:#344054;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-page .stat-card .stat-row .stat-values{display:flex;align-items:center;gap:8px;flex-shrink:0}.audio-page .stat-card .stat-row .stat-values .stat-number{font-size:14px;font-weight:700;color:#101828;min-width:24px;text-align:right}.audio-page .stat-card .stat-row .stat-values .stat-meta{font-size:12px;color:#1d2939;font-weight:400;margin-right:4px}.audio-page .stat-card .stat-row .stat-values .stat-score{font-size:14px;font-weight:700;color:#101828}.audio-page .stat-card .stat-row .stat-values .stat-score-label{font-size:12px;color:#1d2939;font-weight:400}.audio-page .stat-card .cohort-table{border-collapse:collapse;font-size:13px}.audio-page .stat-card .cohort-table thead tr{background:#f9fafb}.audio-page .stat-card .cohort-table th{padding:8px 10px;font-size:12px;font-weight:600;color:#667085;border-bottom:1px solid #EAECF0;white-space:nowrap}.audio-page .stat-card .cohort-table td{padding:8px 10px;color:#344054;border-bottom:1px solid #F2F4F7;vertical-align:middle;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-page .stat-card .cohort-table tbody tr:last-child td{border-bottom:none}.audio-page .stat-card .cohort-table tbody tr:hover{background:#f9fafb}.audio-page .stat-card .pitch-row,.audio-page .stat-card .subjective-row{display:flow;align-items:center;gap:0;padding:10px 0;border-bottom:1px solid #F2F4F7}.audio-page .stat-card .pitch-row:last-child,.audio-page .stat-card .subjective-row:last-child{border-bottom:none}.audio-page .stat-card .pitch-row .pitch-id,.audio-page .stat-card .subjective-row .pitch-id{font-weight:600;color:#101828;font-size:13px;flex:0 0 45%;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:8px}.audio-page .stat-card .pitch-row .pitch-desc,.audio-page .stat-card .subjective-row .pitch-desc{font-size:13px;color:#344054;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.audio-page .export-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 16px;border:1px solid #d0d7e2;border-radius:6px;background:#fff;font-size:14px;color:#344054;cursor:pointer}.audio-page .export-btn:hover{background:#f5f7fa}.audio-page .chat-section{text-align:center;padding:32px 0}.audio-page .chat-section .chat-title-group{margin-bottom:24px}.audio-page .chat-section .chat-title{font-size:32px;font-weight:700;color:#00a3ff;margin:0;display:flex;align-items:center;justify-content:center}.audio-page .chat-section .chat-title .tango-icon-wrap{display:flex;align-items:center;gap:8px}.audio-page .chat-section .chat-title .tango-icon-wrap svg{display:block}.audio-page .chat-section .chat-subtext{font-size:14px;color:#667085;font-weight:500;margin-top:4px}.audio-page .chat-section .btn-chat-history{background:#fff;border:1px solid #D0D5DD;border-radius:100px;padding:8px 16px;font-size:12px;font-weight:600;color:#344054;cursor:pointer;box-shadow:0 1px 2px #1018280d;transition:all .2s ease}.audio-page .chat-section .btn-chat-history:hover{background:#f9fafb;border-color:#98a2b3}.audio-page .chat-section .chat-input-wrapper{display:flex;align-items:center;background:#fff;border:1px solid #D0D5DD;border-radius:12px;padding:8px 12px;width:100%;max-width:600px;box-shadow:0 4px 10px #0000000d;position:relative}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap{position:relative;flex-shrink:0;margin-right:8px}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus{width:28px;height:28px;border-radius:50%;border:1.5px solid #D0D5DD;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#344054;font-size:16px;font-weight:600;line-height:1;transition:background .15s,border-color .15s}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus:hover,.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus.open{background:#f2f4f7;border-color:#009bf3;color:#009bf3}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup{position:absolute;bottom:calc(100% + 8px);left:0;background:#fff;border:1px solid #EAECF0;border-radius:12px;box-shadow:0 8px 24px #1018281f;padding:6px;min-width:210px;z-index:200;animation:popupFadeInAudio .15s ease-out}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-section-label{font-size:11px;font-weight:600;color:#98a2b3;text-transform:uppercase;letter-spacing:.5px;padding:6px 12px 4px}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;border-radius:8px;padding:9px 12px;font-size:13px;font-weight:500;color:#344054;cursor:pointer;text-align:left;transition:background .12s}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item .check-icon{margin-left:auto}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item.selected{background:#f0f9ff;color:#009bf3}.audio-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item:hover:not(.selected){background:#f9fafb;color:#101828}.audio-page .chat-section .chat-input-wrapper .model-version-tag{font-size:11px;font-weight:700;color:#009bf3;background:#eaf8ff;border:1px solid #B2E0FB;border-radius:6px;padding:2px 7px;white-space:nowrap;flex-shrink:0}.audio-page .chat-section .chat-input-wrapper .chat-input-field{flex:1;border:none;outline:none;font-size:14px;color:#101828;background:transparent}.audio-page .chat-section .chat-input-wrapper .chat-input-field::placeholder{color:#667085}.audio-page .chat-section .chat-input-wrapper .chat-input-actions{display:flex;align-items:center;gap:12px;color:#667085}.audio-page .chat-section .chat-input-wrapper .chat-input-actions .chat-icon-btn,.audio-page .chat-section .chat-input-wrapper .chat-input-actions .chat-send-btn{background:none;border:none;padding:4px;cursor:pointer;color:inherit;display:flex;align-items:center;justify-content:center;transition:color .2s ease}.audio-page .chat-section .chat-input-wrapper .chat-input-actions .chat-icon-btn:hover,.audio-page .chat-section .chat-input-wrapper .chat-input-actions .chat-send-btn:hover{color:#00a3ff}.audio-page input[type=text]:focus{box-shadow:none}.audio-page .ai-message-box{background:linear-gradient(135deg,#eaf8ff,#f0f9ff);border-radius:8px;padding:16px 20px}.audio-page .ai-message-box .ai-message-header{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:600;line-height:24px;color:#101828;margin-bottom:8px}.audio-page .ai-message-box .ai-message-header .ai-avatar-icon{font-size:20px;color:#3b7de5}.audio-page .ai-message-box .ai-message-body{font-weight:400;font-size:16px;line-height:24px;letter-spacing:0%;color:#344054;padding-left:28px}.audio-page .ai-message-box .ai-store-list{margin:8px 0 0;padding-left:20px}.audio-page .ai-message-box .ai-store-list li{margin-bottom:4px}.audio-page .conversations-count{font-size:15px;color:#1a2b4b;font-weight:600}.audio-page .active-filter-chip{display:inline-flex;align-items:center;gap:4px;background:#e8f0fe;border:1px solid #4a7fdd;border-radius:20px;padding:2px 10px 2px 12px;font-size:13px;font-weight:500;color:#1a2b4b}.audio-page .active-filter-chip .chip-label{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-page .active-filter-chip .chip-remove{background:none;border:none;cursor:pointer;font-size:16px;line-height:1;color:#4a7fdd;padding:0 0 0 2px}.audio-page .active-filter-chip .chip-remove:hover{color:#d32f2f}.audio-page .conversations-list{display:flex;flex-direction:column;gap:16px}.audio-page .conversation-card{background:#fff;border:1px solid #EAECF0;border-radius:12px;box-shadow:0 1px 2px #1018280d;overflow:hidden;transition:all .2s ease}.audio-page .conversation-card.is-expanded{border-color:#00a3ff;box-shadow:0 4px 12px #00a3ff14}.audio-page .conv-summary{padding:20px 24px;cursor:pointer}.audio-page .conv-summary .conv-id{font-size:16px;font-weight:700;color:#101828}.audio-page .conv-summary .conv-meta-row{display:flex;align-items:center;flex-wrap:wrap;gap:16px}.audio-page .conv-summary .conv-meta-row .meta-item{font-size:13px;font-weight:500;color:#667085;display:flex;align-items:center;gap:6px}.audio-page .conv-summary .conv-meta-row .meta-item i,.audio-page .conv-summary .conv-meta-row .meta-item svg{font-size:14px;color:#98a2b3;flex-shrink:0}.audio-page .conv-summary .conv-meta-row .meta-item .text-name{color:#98a2b3;font-weight:400}.audio-page .conv-summary .conv-meta-row .meta-item .name-val{color:#98a2b3;font-weight:600}.audio-page .conv-summary .conv-meta-row .meta-item .location-truncate{display:inline-block;max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.audio-page .conv-summary .conv-meta-row .meta-sep{width:1px;height:12px;background-color:#d0d5dd;margin:0 4px}.audio-page .conv-summary .conv-excerpt{font-size:14px;line-height:20px;color:#475467}.audio-page .conv-summary .eye-test-link{font-size:14px;font-weight:600;color:#00a3ff;text-decoration:none}.audio-page .conv-summary .eye-test-link:hover{text-decoration:underline}.audio-page .conv-summary .conv-toggle-btn{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:600;color:#667085}.audio-page .conv-summary .conv-toggle-btn svg{transition:transform .2s ease}.audio-page .conv-summary .conv-toggle-btn svg.rotate-180{transform:rotate(180deg)}.audio-page .conv-body{border-top:1px solid #EAECF0;background:#fcfcfd}.audio-page .conv-body-inner{position:relative;padding:24px 436px 24px 24px}.audio-page .conv-left{min-width:0}.audio-page .conv-right{position:absolute;top:24px;right:24px;bottom:24px;width:380px;display:flex;flex-direction:column;overflow-y:auto}.audio-page .recording-box{background:#fff;border:1px solid #EAECF0;border-radius:12px;padding:24px;box-shadow:0 1px 2px #1018280d}.audio-page .recording-box .recording-title{font-size:14px;font-weight:700;color:#101828;margin-bottom:24px}.audio-page .waveform-bars{position:relative;display:flex;align-items:center;gap:3px;height:72px;margin-bottom:14px;padding:4px 6px;border-radius:8px;transition:background .3s ease}.audio-page .waveform-bars:before{content:\"\";position:absolute;inset:0;border-radius:8px;background:#0a19371a;opacity:0;transition:opacity .3s ease;pointer-events:none;z-index:0}.audio-page .waveform-bars .wf-bar{position:relative;z-index:1;flex:1;border-radius:100px;min-height:4px;background:#d1e9ff;transform-origin:center;transition:background .1s}.audio-page .waveform-bars .wf-bar.wf-bar--played{background:#00a3ff}.audio-page .waveform-bars.is-playing .wf-bar{animation:wf-bounce .65s ease-in-out infinite}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(2n){animation-duration:.75s;animation-delay:.1s}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(3n){animation-duration:.5s;animation-delay:.22s}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(5n){animation-duration:.85s;animation-delay:.05s}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(7n){animation-duration:.42s;animation-delay:.18s}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(11n){animation-duration:.6s;animation-delay:.3s}.audio-page .waveform-bars.is-playing .wf-bar:nth-child(13n){animation-duration:.7s;animation-delay:.08s}.audio-page .player-row{display:flex;align-items:center;gap:16px}.audio-page .player-row .play-btn-wrap{width:48px;height:48px;background:#00a3ff1a;border-radius:50%;display:flex;align-items:center;justify-content:center}.audio-page .player-row .play-btn-wrap .play-btn-circle{width:36px;height:36px;background:#00a3ff;border:none;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px;cursor:pointer;transition:background .2s ease}.audio-page .player-row .play-btn-wrap .play-btn-circle:hover{background:#0087d5}.audio-page .player-row .mute-btn{background:none;border:none;color:#667085;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center}.audio-page .player-row .mute-btn:hover{color:#101828}.audio-page .player-row .player-progress .progress-track{height:8px;background:#f2f4f7;border-radius:4px;overflow:hidden}.audio-page .player-row .player-progress .progress-track .progress-fill{height:100%;background:#00a3ff;border-radius:4px}.audio-page .player-row .player-progress .player-time{font-size:12px;font-weight:500;color:#667085}.audio-page .player-row .player-progress .player-time.start-time{color:#00a3ff}.audio-page .border-layer{background:#fff;border:1px solid #EAECF0;border-radius:12px;padding:24px}.audio-page .conv-tabs{display:flex;border-bottom:1px solid #EAECF0;gap:24px}.audio-page .conv-tab{background:none;border:none;padding:12px 0;font-size:14px;font-weight:600;color:#667085;cursor:pointer;position:relative;transition:color .2s ease}.audio-page .conv-tab.active{color:#00a3ff;background:#eaf8ff;padding:0 8px}.audio-page .conv-tab.active:after{content:\"\";position:absolute;bottom:-1px;left:0;right:0;height:2px;background:#00a3ff}.audio-page .conv-tab:hover:not(.active){color:#344054}.audio-page .conv-body-text{font-size:14px;line-height:24px;color:#475467}.audio-page .ai-insights-box{background:#f0f9ff;border:1px solid #B9E6FE;border-radius:12px;padding:20px;margin-top:20px}.audio-page .ai-insights-box .ai-insights-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}.audio-page .ai-insights-box .ai-insights-header .ai-icon-badge{width:32px;height:32px;background:#00a3ff;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.audio-page .ai-insights-box .ai-insights-header .ai-icon-badge svg{display:block}.audio-page .ai-insights-box .ai-insights-header .ai-insights-title{font-size:18px;font-weight:700;color:#101828}.audio-page .ai-insights-list{list-style:none;padding:0;margin:0}.audio-page .ai-insights-list li{display:flex;align-items:flex-start;gap:12px;font-size:14px;line-height:20px;color:#344054;margin-bottom:12px}.audio-page .ai-insights-list li:last-child{margin-bottom:0}.audio-page .ai-insights-list li .insight-bullet-icon{flex-shrink:0;margin-top:2px;color:#00a3ff}.audio-page .ai-insights-list li .insight-bullet-icon svg{display:block}.audio-page .metrics-panel{background:#fff;border:1px solid #EAECF0;border-radius:12px;padding:24px;box-shadow:0 1px 2px #1018280d;flex:1;overflow-y:auto}.audio-page .metrics-panel .metrics-title{font-size:16px;font-weight:700;color:#101828;border-bottom:1px solid #F2F4F7;padding-bottom:12px;margin-bottom:16px}.audio-page .metrics-panel .metric-row-item{display:flex;justify-content:space-between;align-items:center;padding:8px 0}.audio-page .metrics-panel .metric-row-item .metric-key{font-size:14px;font-weight:500;color:#475467;text-align:left;flex:1;display:flex;align-items:center;gap:8px}.audio-page .metrics-panel .metric-row-item .metric-key .dot:before{content:\"\\2022\";color:#000;font-size:18px}.audio-page .metrics-panel .metric-row-item .metric-val{font-size:14px;font-weight:700}.audio-page .metrics-panel .metric-row-item .metric-val.text-success{color:#12b76a}.audio-page .metrics-panel .metric-row-item .metric-val.text-primary{color:#00a3ff}.audio-page .metrics-panel .metric-divider{height:1px;background-color:#f2f4f7;margin:12px 0}.audio-page .metrics-panel .metric-section-label{font-size:15px;font-weight:600;color:#191919;letter-spacing:.5px}.audio-page .metrics-panel .metric-bullet-list li{display:flex;align-items:center;width:100%}.audio-page .metrics-panel .metric-bullet-list{list-style:none;padding:0;margin:0}.audio-page .metrics-panel .metric-bullet-list li{font-size:14px;color:#475467;display:flex;align-items:center;gap:8px;margin-bottom:4px}.audio-page .metrics-panel .metric-bullet-list li:before{content:\"\\2022\";color:#000;font-size:18px;margin-right:4px}.audio-page .metrics-panel .metric-bullet-list li .metric-pct{font-weight:700;color:#101828;margin-left:auto}.audio-page .metrics-panel .metric-bullet-list--text li{justify-content:flex-start}.audio-page .metrics-panel .metric-bullet-list--text li:before{margin-right:8px}.audio-page .pagination-row{display:flex;justify-content:center;margin-top:32px;padding-bottom:40px}.audio-page .pagination-row .pagination-list{display:flex;list-style:none;padding:0;gap:8px}.audio-page .pagination-row .pagination-list .page-item{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid #D0D5DD;background:#fff;font-size:14px;font-weight:600;color:#344054;cursor:pointer;transition:all .2s ease}.audio-page .pagination-row .pagination-list .page-item:hover{background:#f9fafb}.audio-page .pagination-row .pagination-list .page-item.active{background:#f0f9ff;border-color:#00a3ff;color:#00a3ff}.sparkle{font-size:10px;animation:twinkle 1.5s infinite ease-in-out}.chat-history-overlay .chat-history-session-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-radius:8px;cursor:pointer;margin-bottom:6px;border:1px solid #EAECF0;transition:background .15s}.chat-history-overlay .chat-history-session-item .session-title{font-size:14px;font-weight:500;color:#344054;flex:1;margin-right:8px}.chat-history-overlay .chat-history-msg.user{background:#f0f9ff;color:#101828;align-self:flex-end;border-radius:10px 10px 0}.chat-thread-header{display:flex;justify-content:flex-end;margin-bottom:8px}.chat-thread-header .btn-new-chat{display:flex;align-items:center;gap:6px;padding:6px 14px;background:#fff;border:1px solid #D0D5DD;border-radius:8px;font-size:13px;font-weight:600;color:#344054;cursor:pointer;transition:background .15s,border-color .15s}.chat-thread-header .btn-new-chat:hover{background:#f2f4f7;border-color:#009bf3;color:#009bf3}.chat-thread{border:1px solid #EAECF0;border-radius:12px;background:#fff;overflow:hidden}.chat-thread .chat-thread-messages{display:flex;flex-direction:column;gap:12px;max-height:350px;overflow-y:auto;padding:16px}.chat-thread .chat-thread-input{border-top:1px solid #EAECF0;padding:12px 16px;background:#fafbfc;display:flex;justify-content:center}.chat-msg{display:flex}.chat-msg.chat-msg--user{justify-content:flex-end}.chat-msg.chat-msg--ai{justify-content:flex-start}.chat-msg-bubble{max-width:80%;padding:12px 16px;border-radius:12px;font-size:14px;line-height:1.6}.chat-msg-bubble.chat-msg-bubble--user{background:#009af3;color:#fff;border-radius:12px 12px 0}.chat-msg-bubble.chat-msg-bubble--ai{background:linear-gradient(135deg,#eaf8ff,#f0f9ff);color:#344054;border-radius:12px 12px 12px 0;text-align:left}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-header{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:#101828;margin-bottom:8px}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-header .ai-avatar-icon{display:flex;align-items:center}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-body{font-size:14px;line-height:1.6;padding-left:30px}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-actions{display:flex;justify-content:flex-end;padding-top:6px}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-actions .btn-copy{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid #EAECF0;border-radius:6px;background:#fff;cursor:pointer;transition:background .15s,border-color .15s}.chat-msg-bubble.chat-msg-bubble--ai .chat-msg-ai-actions .btn-copy:hover{background:#f2f4f7;border-color:#009bf3}@keyframes popupFadeInAudio{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}:host ::ng-deep .audio-tooltip .tooltip-inner{background:#1d2939;color:#fff;font-size:12px;font-weight:400;line-height:1.5;max-width:360px;white-space:normal;word-break:break-all;padding:8px 12px;border-radius:8px;text-align:left}:host ::ng-deep .audio-tooltip .tooltip-arrow:before{border-top-color:#1d2939}.transcript-page{padding:24px;background-color:#f5f7fa}.transcript-page .transcript-header-row{background:#fff;padding:14px 24px;border-radius:8px;border:1px solid #e8edf3}.transcript-page .section-title{font-size:16px;font-weight:600;color:#1a2b4b}.transcript-page .cohort-dropdown{position:relative}.transcript-page .cohort-dropdown .cohort-dropdown-trigger{display:flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid #D0D5DD;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;color:#344054;-webkit-user-select:none;user-select:none;transition:border-color .2s,background .2s;min-width:150px;justify-content:space-between}.transcript-page .cohort-dropdown .cohort-dropdown-trigger svg{transition:transform .2s ease;flex-shrink:0}.transcript-page .cohort-dropdown .cohort-dropdown-trigger svg.rotate{transform:rotate(180deg)}.transcript-page .cohort-dropdown .cohort-dropdown-menu{position:absolute;top:calc(100% + 4px);left:0;background:#fff;border:1px solid #D0D5DD;border-radius:8px;box-shadow:0 4px 16px #0000001a;z-index:200;min-width:180px;overflow:hidden}.transcript-page .cohort-dropdown .cohort-option{padding:10px 16px;font-size:14px;color:#344054;cursor:pointer;transition:background .15s}.transcript-page .cohort-dropdown .cohort-option:hover{background:#f0f4ff}.transcript-page .cohort-dropdown .cohort-option.selected{background:#e8f0fe;color:#1a73e8;font-weight:600}.transcript-page .transcript-search-wrap{position:relative;display:flex;align-items:center}.transcript-page .transcript-search-wrap .search-icon{position:absolute;left:10px;pointer-events:none}.transcript-page .transcript-search-wrap .transcript-search-input{height:38px;padding:0 32px 0 34px;border:1px solid #D0D5DD;border-radius:8px;font-size:14px;color:#344054;width:260px;outline:none;transition:border-color .2s}.transcript-page .transcript-search-wrap .transcript-search-input:focus{border-color:#84adff}.transcript-page .transcript-search-wrap .transcript-search-input::placeholder{color:#98a2b3}.transcript-page .transcript-search-wrap .search-clear-btn{position:absolute;right:8px;background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center}.transcript-page .btn-search{height:38px;padding:0 16px;background:#1a73e8;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:background .2s}.transcript-page .btn-search:hover{background:#1558b0}.transcript-page .export-btn{height:38px;display:flex;align-items:center}.transcript-page .export-btn .export-text{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:500}.transcript-page .conversation-area{border:1px solid #e8edf3}.transcript-page .conversations-count{font-size:14px;color:#344054}.transcript-page .conversation-card{border:1px solid #e8edf3;border-radius:10px;margin-bottom:12px;overflow:hidden;background:#fff}.transcript-page .conversation-card .conv-summary{padding:16px 20px;cursor:pointer;transition:background .15s}.transcript-page .conversation-card .conv-summary:hover{background:#f8fafc}.transcript-page .conversation-card .conv-summary-left{flex:1;min-width:0}.transcript-page .conversation-card .conv-id{font-size:13px;font-weight:600;color:#344054;background:#f0f4ff;border-radius:4px;padding:2px 8px}.transcript-page .conversation-card .conv-meta-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.transcript-page .conversation-card .meta-item{display:flex;align-items:center;gap:4px;font-size:13px;color:#667085}.transcript-page .conversation-card .meta-item .text-name{color:#98a2b3}.transcript-page .conversation-card .meta-item .name-val{color:#344054;font-weight:500}.transcript-page .conversation-card .meta-item .location-truncate{display:inline-block;max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.transcript-page .conversation-card .meta-sep{width:4px;height:4px;background:#d0d5dd;border-radius:50%;display:inline-block}.transcript-page .conversation-card .conv-excerpt{font-size:13px;color:#667085;line-height:1.5}.transcript-page .conversation-card .conv-toggle-btn{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:#344054;cursor:pointer;padding-left:16px;flex-shrink:0;align-self:flex-start;margin-top:16px}.transcript-page .conversation-card .conv-body{border-top:1px solid #e8edf3}.transcript-page .conversation-card .transcript-content .transcript-section{margin-bottom:20px}.transcript-page .conversation-card .transcript-content .transcript-section:last-child{margin-bottom:0}.transcript-page .conversation-card .transcript-content .transcript-section-title{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:#344054;margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid #f0f4ff}.transcript-page .conversation-card .transcript-content .transcript-summary-text{font-size:14px;color:#475467;line-height:1.7;margin:0}.transcript-page .conversation-card .transcript-content .transcript-text{font-size:14px;color:#475467;line-height:1.8;white-space:pre-wrap;background:#f8fafc;border-radius:8px;padding:16px;border:1px solid #e8edf3;max-height:400px;overflow-y:auto}.transcript-page .chat-section{text-align:center;padding:10px 0}.transcript-page .chat-section .chat-title{font-size:32px;font-weight:700;color:#00a3ff;margin:0;display:flex;align-items:center;justify-content:center}.transcript-page .chat-section .sparkle{display:inline-flex;align-items:center;margin-left:6px}.transcript-page .chat-section .chat-subtext{font-size:14px;color:#667085;font-weight:500;margin-top:4px}.transcript-page .chat-section .chat-input-wrapper{display:flex;align-items:center;background:#fff;border:1px solid #D0D5DD;border-radius:12px;padding:8px 12px;width:100%;max-width:600px;box-shadow:0 4px 10px #0000000d;position:relative}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap{position:relative;flex-shrink:0;margin-right:8px}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus{width:28px;height:28px;border-radius:50%;border:1.5px solid #D0D5DD;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#344054;font-size:16px;font-weight:600;transition:background .15s,border-color .15s}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus:hover,.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .btn-plus.open{background:#f2f4f7;border-color:#009bf3;color:#009bf3}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup{position:absolute;bottom:calc(100% + 8px);left:0;background:#fff;border:1px solid #EAECF0;border-radius:12px;box-shadow:0 8px 24px #1018281f;padding:6px;min-width:210px;z-index:200;animation:popupFadeInTranscript .15s ease-out}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-section-label{font-size:11px;font-weight:600;color:#98a2b3;text-transform:uppercase;letter-spacing:.5px;padding:6px 12px 4px}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;border-radius:8px;padding:9px 12px;font-size:13px;font-weight:500;color:#344054;cursor:pointer;text-align:left;transition:background .12s}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item .check-icon{margin-left:auto}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item.selected{background:#f0f9ff;color:#009bf3}.transcript-page .chat-section .chat-input-wrapper .plus-menu-wrap .plus-popup .plus-popup-item:hover:not(.selected){background:#f9fafb;color:#101828}.transcript-page .chat-section .chat-input-wrapper .chat-input-field{flex:1;border:none;outline:none;font-size:14px;color:#101828;background:transparent}.transcript-page .chat-section .chat-input-wrapper .chat-input-field::placeholder{color:#667085}.transcript-page .chat-section .chat-input-wrapper .chat-input-actions{display:flex;align-items:center;gap:12px;color:#667085}.transcript-page .chat-section .chat-input-wrapper .chat-input-actions .chat-icon-btn,.transcript-page .chat-section .chat-input-wrapper .chat-input-actions .chat-send-btn{background:none;border:none;padding:4px;cursor:pointer;color:inherit;display:flex;align-items:center;justify-content:center;transition:color .2s ease}.transcript-page .chat-section .chat-input-wrapper .chat-input-actions .chat-icon-btn:hover,.transcript-page .chat-section .chat-input-wrapper .chat-input-actions .chat-send-btn:hover{color:#00a3ff}.transcript-page input[type=text]:focus{box-shadow:none}.transcript-page .chat-messages-area{flex:1;padding:24px 16px;overflow-y:auto;display:flex;flex-direction:column;gap:24px;max-height:650px}.transcript-page .chat-messages-area.scrollbar-hidden{scrollbar-width:none}.transcript-page .chat-messages-area.scrollbar-hidden::-webkit-scrollbar{display:none}.transcript-page .message-wrapper{display:flex;flex-direction:column;max-width:85%}.transcript-page .message-wrapper.user{align-self:flex-end}.transcript-page .message-wrapper.user .message{flex-direction:row-reverse}.transcript-page .message-wrapper.user .message .message-bubble{background:#fff;color:#101828;border-radius:12px 12px 0;position:relative;padding-right:40px}.transcript-page .message{display:flex;gap:12px}.transcript-page .message.assistant{align-self:flex-start}.transcript-page .message.assistant .message-avatar{flex-shrink:0;margin-top:14px}.transcript-page .message.assistant .message-content{display:flex;flex-direction:column;gap:8px}.transcript-page .message.assistant .message-bubble{color:#101828;border-radius:12px 12px 12px 0}.transcript-page .message.assistant .message-bubble.typing{display:flex;align-items:center;gap:4px;padding:12px 20px}.transcript-page .message.assistant .message-bubble.typing .dot{width:6px;height:6px;background:#00a3ff;border-radius:50%;display:inline-block;animation:typingAnimation 1.4s infinite ease-in-out both}.transcript-page .message.assistant .message-bubble.typing .dot:nth-child(1){animation-delay:-.32s}.transcript-page .message.assistant .message-bubble.typing .dot:nth-child(2){animation-delay:-.16s}.transcript-page .message .message-bubble{padding:6px;font-size:15px;line-height:24px;position:relative}.transcript-page .message .message-bubble p{margin:0 0 6px;white-space:pre-wrap}.transcript-page .message .message-bubble p:last-child{margin-bottom:0}.transcript-page .message .message-bubble h3,.transcript-page .message .message-bubble h4,.transcript-page .message .message-bubble h5{margin:8px 0 4px;font-weight:700;line-height:1.4}.transcript-page .message .message-bubble h3{font-size:17px}.transcript-page .message .message-bubble h4{font-size:16px}.transcript-page .message .message-bubble h5{font-size:15px}.transcript-page .message .message-bubble strong{font-weight:700}.transcript-page .message .message-bubble em{font-style:italic}.transcript-page .message .message-bubble ul{margin:4px 0;padding-left:18px}.transcript-page .message .message-bubble ul li{margin-bottom:2px}.transcript-page .message .message-bubble .msg-sender-tag{position:absolute;right:6px;bottom:16px;background:#eaf8ff;color:#00a3ff;font-size:10px;font-weight:700;padding:2px 8px;border-radius:50%}.transcript-page .message .message-actions{display:flex;gap:8px}.transcript-page .message .message-actions .btn-copy{background:none;border:none;padding:4px;cursor:pointer;color:#667085;display:flex;align-items:center;justify-content:center;opacity:.6;transition:opacity .2s}.transcript-page .message .message-actions .btn-copy:hover{opacity:1}.transcript-page .copy-feedback-toast{position:fixed;bottom:120px;left:50%;transform:translate(-50%);background:#101828;color:#fff;padding:8px 16px;border-radius:8px;font-size:14px;font-weight:500;z-index:1000;box-shadow:0 4px 12px #0000001a;animation:fadeInOut 2s ease-in-out forwards}.transcript-page .chat-footer{padding:12px 16px;background:#fff}.transcript-page .chat-footer .input-wrapper{display:flex;align-items:center;background:#fff;border:1px solid #D0D5DD;border-radius:8px;padding:8px 20px;box-shadow:0 1px 2px #1018280d}.transcript-page .chat-footer .input-wrapper .chat-input{flex:1;border:none;outline:none;font-size:15px;color:#101828}.transcript-page .chat-footer .input-wrapper .btn-send{background:none;border:none;color:#00a3ff;cursor:pointer;display:flex;align-items:center;transition:transform .2s}.transcript-page .chat-footer .input-wrapper .btn-send:hover{transform:scale(1.1)}.transcript-page .recording-box{background:#fff;border:1px solid #EAECF0;border-radius:12px;padding:24px;box-shadow:0 1px 2px #1018280d}.transcript-page .recording-box .recording-title{font-size:14px;font-weight:700;color:#101828;margin-bottom:24px}@keyframes wf-bounce{0%{transform:scaleY(1)}50%{transform:scaleY(.28)}to{transform:scaleY(.75)}}.transcript-page .waveform-bars{position:relative;display:flex;align-items:center;gap:2px;height:72px;margin-bottom:14px;padding:4px 6px;border-radius:8px;transition:background .3s ease}.transcript-page .waveform-bars:before{content:\"\";position:absolute;inset:0;border-radius:8px;background:#0a19371a;opacity:0;transition:opacity .3s ease;pointer-events:none;z-index:0}.transcript-page .waveform-bars .wf-bar{position:relative;z-index:1;flex:1 1 0;border-radius:100px;min-height:4px;background:#d1e9ff;transform-origin:center;transition:background .1s}.transcript-page .waveform-bars .wf-bar.wf-bar--played{background:#00a3ff}.transcript-page .waveform-bars.is-playing .wf-bar{animation:wf-bounce .65s ease-in-out infinite}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(2n){animation-duration:.75s;animation-delay:.1s}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(3n){animation-duration:.5s;animation-delay:.22s}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(5n){animation-duration:.85s;animation-delay:.05s}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(7n){animation-duration:.42s;animation-delay:.18s}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(11n){animation-duration:.6s;animation-delay:.3s}.transcript-page .waveform-bars.is-playing .wf-bar:nth-child(13n){animation-duration:.7s;animation-delay:.08s}.transcript-page .player-row{display:flex;align-items:center;gap:16px}.transcript-page .player-row .play-btn-wrap{width:48px;height:48px;background:#00a3ff1a;border-radius:50%;display:flex;align-items:center;justify-content:center}.transcript-page .player-row .play-btn-wrap .play-btn-circle{width:36px;height:36px;background:#00a3ff;border:none;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s ease}.transcript-page .player-row .play-btn-wrap .play-btn-circle:hover{background:#0087d5}.transcript-page .player-row .mute-btn{background:none;border:none;color:#667085;cursor:pointer;display:flex;align-items:center;justify-content:center}.transcript-page .player-row .mute-btn:hover{color:#101828}.transcript-page .player-row .player-progress .progress-track{height:8px;background:#f2f4f7;border-radius:4px;overflow:hidden}.transcript-page .player-row .player-progress .progress-track .progress-fill{height:100%;background:#00a3ff;border-radius:4px}.transcript-page .player-row .player-progress .player-time{font-size:12px;font-weight:500;color:#667085}.transcript-page .player-row .player-progress .player-time.start-time{color:#00a3ff}.transcript-page .shimmer{width:100%}.transcript-page .shimmer .wrapper{padding:8px}.transcript-page .shimmer .wrapper .stroke{height:12px;border-radius:4px;background:#e0e0e0;margin-bottom:8px}.transcript-page .shimmer .wrapper .stroke.title{width:60%}.transcript-page .shimmer .wrapper .stroke.link{width:40%}.transcript-page .shimmer .wrapper .stroke.description{width:80%}.transcript-page .shimmer .wrapper .stroke.animate{animation:shimmer 1.4s infinite linear;background:linear-gradient(to right,#eee 8%,#ddd 18%,#eee 33%);background-size:800px 104px}@keyframes shimmer{0%{background-position:-468px 0}to{background-position:468px 0}}.transcript-page .nodata-title{font-size:15px;font-weight:600;color:#344054;margin-top:8px}.transcript-page .nodata-sub{font-size:13px;color:#98a2b3;margin-top:4px;text-align:center}.chat-history-backdrop{position:fixed;inset:0;z-index:999;background:transparent}.chat-history-overlay{position:fixed;top:0;right:0;height:100vh;width:340px;background:#fff;box-shadow:-4px 0 24px #0000001f;z-index:1000;display:flex;flex-direction:column;transform:translate(100%);transition:transform .3s ease}.chat-history-overlay.open{transform:translate(0)}.chat-history-overlay .chat-history-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid #EAECF0}.chat-history-overlay .chat-history-header .chat-history-title{font-size:15px;font-weight:700;color:#101828}.chat-history-overlay .chat-history-header .chat-history-close{background:none;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;border-radius:6px}.chat-history-overlay .chat-history-header .chat-history-close:hover{background:#f2f4f7}.chat-history-overlay .chat-history-body{flex:1;overflow-y:auto;padding:20px}.chat-history-overlay .chat-history-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:12px;color:#98a2b3;font-size:14px;text-align:center}.chat-history-overlay .chat-history-session-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-radius:8px;margin-bottom:6px;border:1px solid #EAECF0;transition:background .15s}.chat-history-overlay .chat-history-session-item:hover{background:#f2f4f7}.chat-history-overlay .chat-history-session-item .session-title{font-size:14px;font-weight:500;color:#344054;flex:1;margin-right:8px;cursor:pointer}.chat-history-overlay .chat-history-session-item .btn-continue-inline{background:#009bf3;color:#fff;border:none;cursor:pointer;padding:4px 12px;font-size:12px;font-weight:600;border-radius:6px;flex-shrink:0;transition:background .15s}.chat-history-overlay .chat-history-session-item .btn-continue-inline:hover{background:#0087d5}.chat-history-overlay .chat-history-session-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.chat-history-overlay .chat-history-session-back{display:flex;align-items:center;gap:4px;font-size:13px;font-weight:600;color:#009bf3;cursor:pointer}.chat-history-overlay .chat-history-session-back:hover{opacity:.8}.chat-history-overlay .chat-history-messages{display:flex;flex-direction:column;gap:12px}.chat-history-overlay .btn-continue-chat{width:100%;margin-top:16px;padding:10px 16px;background:#009bf3;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:background .2s}.chat-history-overlay .btn-continue-chat:hover{background:#0087d5}.chat-history-overlay .chat-history-msg{padding:10px 14px;border-radius:10px;font-size:13px;line-height:1.5}.chat-history-overlay .chat-history-msg.user{background:#f0f9ff;color:#101828;border-radius:10px 10px 0}.chat-history-overlay .chat-history-msg.assistant{background:#f9fafb;color:#344054;border:1px solid #EAECF0;border-radius:10px 10px 10px 0}.chat-history-overlay .chat-history-msg p{margin:0;white-space:pre-wrap}@keyframes popupFadeInTranscript{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.plus-menu-wrap{position:relative;flex-shrink:0}.plus-menu-wrap .btn-plus{width:30px;height:30px;border-radius:50%;border:1.5px solid #D0D5DD;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#344054;font-size:16px;font-weight:600;line-height:1;transition:background .15s,border-color .15s}.plus-menu-wrap .btn-plus:hover,.plus-menu-wrap .btn-plus.open{background:#f2f4f7;border-color:#009bf3;color:#009bf3}.plus-menu-wrap .plus-popup{position:absolute;bottom:calc(100% + 10px);left:0;background:#fff;border:1px solid #EAECF0;border-radius:12px;box-shadow:0 8px 24px #1018281f;padding:6px;min-width:210px;z-index:200;animation:popupFadeIn .15s ease-out}.plus-menu-wrap .plus-popup .plus-popup-section-label{font-size:11px;font-weight:600;color:#98a2b3;text-transform:uppercase;letter-spacing:.5px;padding:6px 12px 4px}.plus-menu-wrap .plus-popup .plus-popup-divider{height:1px;background:#eaecf0;margin:4px 0}.plus-menu-wrap .plus-popup .plus-popup-item{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;border-radius:8px;padding:9px 12px;font-size:14px;font-weight:500;color:#344054;cursor:pointer;text-align:left;transition:background .12s}.plus-menu-wrap .plus-popup .plus-popup-item svg{flex-shrink:0}.plus-menu-wrap .plus-popup .plus-popup-item .check-icon{margin-left:auto}.plus-menu-wrap .plus-popup .plus-popup-item .model-hint{font-size:11px;font-weight:400;color:#98a2b3;margin-left:4px}.plus-menu-wrap .plus-popup .plus-popup-item.selected{background:#f0f9ff;color:#009bf3}.plus-menu-wrap .plus-popup .plus-popup-item.selected svg{stroke:#009bf3}.plus-menu-wrap .plus-popup .plus-popup-item:hover:not(.selected){background:#f9fafb;color:#101828}@keyframes popupFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.model-version-tag{font-size:11px;font-weight:700;color:#009bf3;background:#eaf8ff;border:1px solid #B2E0FB;border-radius:6px;padding:2px 7px;white-space:nowrap;flex-shrink:0}.model-switcher{display:flex;align-items:center;background:#f2f4f7;border-radius:8px;padding:3px;gap:2px;flex-shrink:0}.model-switcher .model-option{background:transparent;border:none;border-radius:6px;padding:4px 12px;font-size:12px;font-weight:600;color:#667085;cursor:pointer;transition:background .15s,color .15s;white-space:nowrap}.model-switcher .model-option:hover:not(.active){background:#e4e7ec;color:#344054}.model-switcher .model-option.active{background:#fff;color:#009bf3;box-shadow:0 1px 3px #1018281a}.chat-page{background:#fff;display:flex;flex-direction:column}.chat-page .chat-layout-container{display:flex;position:relative}.chat-page .chat-main{flex:1;display:flex;flex-direction:column;background:#fff}.chat-page .chat-header{padding:0 12px}.chat-page .chat-header .header-top{position:relative;display:flex;align-items:center;justify-content:center}.chat-page .chat-header .header-top>.btn{position:absolute;right:0;top:50%;transform:translateY(-50%)}.chat-page .chat-header .header-top>.btn:focus,.chat-page .chat-header .header-top>.btn:focus-visible{box-shadow:none;outline:none}.chat-page .chat-header .view-history{font-size:14px;font-weight:600;color:#667085;text-decoration:none;cursor:pointer;display:inline-flex;align-items:center;gap:8px}.chat-page .chat-header .view-history:hover{color:#101828}.chat-page .chat-header .btn-history-toggle{background:#f2f4f7;border:none;border-radius:100px;padding:6px 14px;font-size:13px;font-weight:600;color:#344054;cursor:pointer;display:flex;align-items:center}.chat-page .chat-header .btn-history-toggle:hover{background:#eaecf0}.chat-page .chat-header .page-title{font-size:30px;font-weight:600;color:#009bf3;margin:0}.chat-page .chat-header .page-description{font-size:20px;color:#101828;font-weight:600}.chat-page .chat-messages-area{padding:24px;display:flex;flex-direction:column;gap:24px;max-height:60vh;overflow-y:auto}.chat-page .chat-messages-area:empty,.chat-page .chat-messages-area:not(:has(.message-wrapper)){max-height:none;overflow:visible;padding:0}.chat-page .chat-messages-area.scrollbar-hidden{scrollbar-width:none}.chat-page .chat-messages-area.scrollbar-hidden::-webkit-scrollbar{display:none}.chat-page .message-wrapper{display:flex;flex-direction:column;max-width:85%}.chat-page .message-wrapper.user{align-self:flex-end}.chat-page .message-wrapper.user .message{flex-direction:row-reverse}.chat-page .message-wrapper.user .message .message-bubble{background:#fff;color:#101828;border-radius:12px 12px 0;position:relative;padding-right:40px}.chat-page .message{display:flex;gap:12px}.chat-page .message.assistant{align-self:flex-start}.chat-page .message.assistant .message-avatar{flex-shrink:0;margin-top:14px}.chat-page .message.assistant .message-content{display:flex;flex-direction:column;gap:8px}.chat-page .message.assistant .message-bubble{color:#101828;border-radius:12px 12px 12px 0}.chat-page .message.assistant .message-bubble.typing{display:flex;align-items:center;gap:4px;padding:12px 20px}.chat-page .message.assistant .message-bubble.typing .dot{width:6px;height:6px;background:#00a3ff;border-radius:50%;display:inline-block;animation:typingAnimation 1.4s infinite ease-in-out both}.chat-page .message.assistant .message-bubble.typing .dot:nth-child(1){animation-delay:-.32s}.chat-page .message.assistant .message-bubble.typing .dot:nth-child(2){animation-delay:-.16s}.chat-page .message .message-bubble{padding:6px;font-size:15px;line-height:24px;position:relative}.chat-page .message .message-bubble p{margin:0 0 6px;white-space:pre-wrap}.chat-page .message .message-bubble p:last-child{margin-bottom:0}.chat-page .message .message-bubble h3,.chat-page .message .message-bubble h4,.chat-page .message .message-bubble h5{margin:8px 0 4px;font-weight:700;line-height:1.4}.chat-page .message .message-bubble h3{font-size:17px}.chat-page .message .message-bubble h4{font-size:16px}.chat-page .message .message-bubble h5{font-size:15px}.chat-page .message .message-bubble strong{font-weight:700}.chat-page .message .message-bubble em{font-style:italic}.chat-page .message .message-bubble ul{margin:4px 0;padding-left:18px}.chat-page .message .message-bubble ul li{margin-bottom:2px}.chat-page .message .message-bubble .msg-sender-tag{position:absolute;right:6px;bottom:16px;background:#eaf8ff;color:#00a3ff;font-size:10px;font-weight:700;padding:2px 8px;border-radius:50%}.chat-page .message .message-actions{display:flex;gap:8px}.chat-page .message .message-actions .btn-copy{background:none;border:none;padding:4px;cursor:pointer;color:#667085;display:flex;align-items:center;justify-content:center;opacity:.6;transition:opacity .2s}.chat-page .message .message-actions .btn-copy:hover{opacity:1}.chat-page .copy-feedback-toast{position:fixed;bottom:120px;left:50%;transform:translate(-50%);background:#101828;color:#fff;padding:8px 16px;border-radius:8px;font-size:14px;font-weight:500;z-index:1000;box-shadow:0 4px 12px #0000001a;animation:fadeInOut 2s ease-in-out forwards}.chat-page .chat-input-area{padding:24px 150px;background:#fff}.chat-page .chat-input-area .filter-chips-container{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;align-items:center}.chat-page .chat-input-area .filter-chips-container .filter-chip{background:#f9fafb;border:1px solid #EAECF0;border-radius:8px;padding:4px 12px;display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:#344054}.chat-page .chat-input-area .filter-chips-container .filter-chip .btn-remove-chip{background:none;border:none;font-size:16px;color:#98a2b3;cursor:pointer;padding:0;line-height:1}.chat-page .chat-input-area .filter-chips-container .btn-clear-all{background:none;border:none;font-size:13px;font-weight:600;color:#667085;text-decoration:underline;cursor:pointer;margin-left:auto}.chat-page .chat-input-area .filter-chips-container .btn-clear-all:hover{color:#101828}.chat-page .chat-input-area .input-wrapper{display:flex;align-items:center;background:#fff;border:1px solid #D0D5DD;border-radius:8px;padding:8px 20px;box-shadow:0 1px 2px #1018280d}.chat-page .chat-input-area .input-wrapper .chat-input{flex:1;border:none;outline:none;font-size:15px;color:#101828}.chat-page .chat-input-area .input-wrapper .btn-filter-icon{background:#fff;border:1px solid #D0D5DD;border-radius:8px;padding:6px 12px;font-size:14px;font-weight:600;color:#344054;display:flex;align-items:center;gap:8px;margin-right:12px;cursor:pointer}.chat-page .chat-input-area .input-wrapper .btn-filter-icon:hover{background:#f9fafb}.chat-page .chat-input-area .input-wrapper .btn-history-inline{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;opacity:.6;transition:opacity .2s}.chat-page .chat-input-area .input-wrapper .btn-history-inline:hover{opacity:1}.chat-page .chat-input-area .input-wrapper .btn-send{background:none;border:none;color:#00a3ff;cursor:pointer;display:flex;align-items:center;transition:transform .2s}.chat-page .chat-input-area .input-wrapper .btn-send:hover{transform:scale(1.1)}.chat-page .chat-history-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;z-index:999;background:#00000026;cursor:default}.chat-page .chat-history-sidebar{position:fixed;top:0;right:0;width:320px;height:100vh;background:#fcfcfd;display:flex;flex-direction:column;z-index:1000;box-shadow:-4px 0 24px #0000001f;animation:slideInRight .25s ease-out}.chat-page .chat-history-sidebar .sidebar-header{padding:24px!important}.chat-page .chat-history-sidebar .sidebar-header h6{font-size:16px;color:#101828;display:flex;align-items:center}.chat-page .chat-history-sidebar .sidebar-search{padding:0 24px 16px}.chat-page .chat-history-sidebar .sidebar-search .history-search-wrapper{position:relative;display:flex;align-items:center;background:#fff;border:1px solid #D0D5DD;border-radius:8px;padding:8px 12px}.chat-page .chat-history-sidebar .sidebar-search .history-search-wrapper i{color:#667085;position:absolute;left:12px}.chat-page .chat-history-sidebar .sidebar-search .history-search-wrapper input{border:none;outline:none;font-size:14px;padding-left:24px;width:100%}.chat-page .chat-history-sidebar .sidebar-search .history-search-wrapper input::placeholder{color:#667085}.chat-page .chat-history-sidebar .sidebar-content{flex:1;padding:12px 24px!important;overflow-y:auto}.chat-page .chat-history-sidebar .sidebar-content.scrollbar-hidden{scrollbar-width:none}.chat-page .chat-history-sidebar .sidebar-content.scrollbar-hidden::-webkit-scrollbar{display:none}.chat-page .chat-history-sidebar .sidebar-content .history-item{padding:12px 16px;border-radius:12px;cursor:pointer;margin-bottom:8px;transition:all .2s;border:1px solid transparent}.chat-page .chat-history-sidebar .sidebar-content .history-item:hover{background:#f2f4f7}.chat-page .chat-history-sidebar .sidebar-content .history-item.active{background:#f0f9ff;border-color:#b9e6fe}.chat-page .chat-history-sidebar .sidebar-content .history-item.active .item-title{color:#00a3ff}.chat-page .chat-history-sidebar .sidebar-content .history-item .item-title{font-size:14px;font-weight:600;color:#344054}.chat-page .chat-history-sidebar .sidebar-content .history-item .item-date{font-size:12px;margin-top:4px;color:#667085}.chat-page .chat-history-sidebar .sidebar-footer{padding:24px!important}.chat-page .chat-history-sidebar .sidebar-footer .btn-new-chat{background:#fff;border:1px solid #D0D5DD;border-radius:100px;padding:12px;font-size:14px;font-weight:600;color:#344054;cursor:pointer;box-shadow:0 1px 2px #1018280d}.chat-page .chat-history-sidebar .sidebar-footer .btn-new-chat:hover{background:#f9fafb}input[type=text]:focus{outline:none;box-shadow:none}@keyframes slideInRight{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes typingAnimation{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}@keyframes fadeInOut{0%{opacity:0;transform:translate(-50%,20px)}10%{opacity:1;transform:translate(-50%)}90%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-20px)}}.sparkle{font-size:60px;animation:twinkle 1.5s infinite ease-in-out}@keyframes twinkle{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.1)}}\n"] }]
968
969
  }], ctorParameters: () => [{ type: i1.PageInfoService }, { type: i2.AudioService }, { type: i1.GlobalStateService }, { type: i3.Router }, { type: i4.DomSanitizer }, { type: i0.ChangeDetectorRef }], propDecorators: { chatThreadMessages: [{
969
970
  type: ViewChild,
970
971
  args: ['chatThreadMessages']
@@ -975,4 +976,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
975
976
  type: HostListener,
976
977
  args: ['document:click', ['$event']]
977
978
  }] } });
978
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8tcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1haS1hdWRpby9zcmMvbGliL2NvbXBvbmVudHMvYXVkaW8tcGFnZS9hdWRpby1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFpLWF1ZGlvL3NyYy9saWIvY29tcG9uZW50cy9hdWRpby1wYWdlL2F1ZGlvLXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQWMsWUFBWSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckgsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFXMUMsTUFBTSxPQUFPLGtCQUFrQjtJQTBEbkI7SUFDQTtJQUNEO0lBQ0M7SUFDQTtJQUNBO0lBOURGLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQ04sa0JBQWtCLENBQThCO0lBQzNDLGVBQWUsQ0FBYztJQUVuRSxtREFBbUQ7SUFDbkQsUUFBUSxHQUFVLEVBQUUsQ0FBQztJQUNyQixXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4QixXQUFXLEdBQXNFLEVBQUUsQ0FBQztJQUNwRixjQUFjLEdBQWtCLElBQUksQ0FBQztJQUNyQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFFaEIsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDakMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVB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QUFFLENBQUMsQ0FBQyxDQUFDO1NBQzFFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxjQUFjO1FBQ3BCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJO2dCQUNGLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDO2dCQUMvQyxJQUFJLEVBQUU7b0JBQUUsRUFBRSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDO2FBQ3hDO1lBQUMsTUFBTSxHQUFFO1FBQ1osQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO3dHQWorQlksa0JBQWtCOzRGQUFsQixrQkFBa0IsMlZDYi9CLDBrMkRBNG9CTTs7NEZEL25CTyxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZ0JBQWdCO2dPQU1PLGtCQUFrQjtzQkFBbEQsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBQ08sZUFBZTtzQkFBcEQsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBOEs1QixlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBdWRpb1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdWRpby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWF1ZGlvLXBhZ2UnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hdWRpby1wYWdlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hdWRpby1wYWdlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEF1ZGlvUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBAVmlld0NoaWxkKCdjaGF0VGhyZWFkTWVzc2FnZXMnKSBjaGF0VGhyZWFkTWVzc2FnZXMhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdzY3JvbGxDb250YWluZXInKSBwcml2YXRlIHNjcm9sbENvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIC8vIGFpLWNoYXQgdmFyaWFibGVzICh1c2VkIGJ5IGlubGluZWQgYWktY2hhdCBIVE1MKVxyXG4gIG1lc3NhZ2VzOiBhbnlbXSA9IFtdO1xyXG4gIHVzZXJNZXNzYWdlID0gJyc7XHJcbiAgaXNUeXBpbmcgPSBmYWxzZTtcclxuICBzaG93Q2hhdEhpc3RvcnkgPSBmYWxzZTtcclxuICBjaGF0SGlzdG9yeTogeyBzZXNzaW9uX2lkOiBzdHJpbmc7IHNlc3Npb25fdGl0bGU6IHN0cmluZzsgbWVzc2FnZXM/OiBhbnlbXSB9W10gPSBbXTtcclxuICBzZWxlY3RlZENoYXRJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgaXNDaGF0TG9hZGluZyA9IGZhbHNlO1xyXG4gIHNlYXJjaFRleHQgPSAnJztcclxuXHJcbiAgZ2V0IGZpbHRlcmVkSGlzdG9yeSgpIHtcclxuICAgIHJldHVybiB0aGlzLmNoYXRIaXN0b3J5LmZpbHRlcihoID0+XHJcbiAgICAgIGguc2Vzc2lvbl90aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldENoYXRUaXRsZSgpOiBzdHJpbmcgeyByZXR1cm4gJ1RhbmdvIFNTRyBBSSc7IH1cclxuXHJcbiAgdG90YWxBdWRpbyA9IDA7XHJcbiAgZmlsdGVyVHlwZSA9ICcnO1xyXG4gIHNlbGVjdGVkQ29ob3J0SWQgPSAnJztcclxuICBpc0NvaG9ydERyb3Bkb3duT3BlbiA9IGZhbHNlO1xyXG4gIGNvaG9ydExpc3Q6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH1bXSA9IFtdO1xyXG4gIGNvaG9ydE9wdGlvbnM6IHN0cmluZ1tdID0gW107XHJcbiAgY2hhdFF1ZXJ5ID0gJyc7XHJcblxyXG4gIGN1cnJlbnRQYWdlID0gMTtcclxuICBvZmZzZXQgPSAxO1xyXG4gIHBhZ2VTaXplID0gMTA7XHJcbiAgdG90YWxJdGVtcyA9IDA7XHJcbiAgcGFnaW5hdGlvblNpemVzID0gWzEwLCAyMCwgMzBdO1xyXG4gIGRpc3BsYXllZENvbnZlcnNhdGlvbnM6IGFueVtdID0gW107XHJcblxyXG4gIGlzTG9hZGluZ0NhcmRzID0gZmFsc2U7XHJcbiAgaXNMb2FkaW5nQ29udmVyc2F0aW9ucyA9IGZhbHNlO1xyXG5cclxuICBzZWxlY3RlZENhcmRJZCA9ICcnO1xyXG4gIHNlbGVjdGVkQ2FyZE5hbWUgPSAnJztcclxuXHJcblxyXG4gIC8vIOKUgOKUgCBXZWlnaHRhZ2Ugb3B0aW9ucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuICB3ZWlnaHRhZ2VPcHRpb25zID0gWydMb3cnLCAnTWVkaXVtJywgJ0hpZ2gnLCAnQ3JpdGljYWwnXTtcclxuXHJcbiAgLy8g4pSA4pSAIER5bmFtaWMgU3RhdCBDYXJkcyBmcm9tIEFQSSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuICBjb2hvcnRDYXJkczoge1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgdHlwZTogYW55O1xyXG4gICAgYm9vbGVhblJvd3M/OiBhbnlbXTtcclxuICAgIG51bWVyaWNEYXRhPzogYW55O1xyXG4gICAgc3ViamVjdGl2ZVJvd3M/OiBhbnlbXTtcclxuICAgIHBpdGNoUm93cz86IGFueVtdO1xyXG4gIH1bXSA9IFtdO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBwYWdlSW5mbzogUGFnZUluZm9TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdWRpb1NlcnZpY2U6IEF1ZGlvU2VydmljZSxcclxuICAgIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHt9XHJcblxyXG4gIHBhcnNlTWFya2Rvd24odGV4dDogc3RyaW5nKTogU2FmZUh0bWwge1xyXG4gICAgaWYgKCF0ZXh0KSByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoJycpO1xyXG5cclxuICAgIGNvbnN0IGltZ1BsYWNlaG9sZGVyczogc3RyaW5nW10gPSBbXTtcclxuICAgIGNvbnN0IGltZ1N0eWxlID0gJ21heC13aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6OHB4O21hcmdpbjo4cHggMDtkaXNwbGF5OmJsb2NrOyc7XHJcblxyXG4gICAgbGV0IHByb2Nlc3NlZCA9IHRleHRcclxuICAgICAgLnJlcGxhY2UoLzxpbWdcXHNbXj5dKj4vZ2ksIChtYXRjaCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHRhZyA9IC9zdHlsZT0vaS50ZXN0KG1hdGNoKSA/IG1hdGNoIDogbWF0Y2gucmVwbGFjZSgvXFwvPz4kLywgYCBzdHlsZT1cIiR7aW1nU3R5bGV9XCIgLz5gKTtcclxuICAgICAgICBpbWdQbGFjZWhvbGRlcnMucHVzaCh0YWcpO1xyXG4gICAgICAgIHJldHVybiBgJSVJTUdfJHtpbWdQbGFjZWhvbGRlcnMubGVuZ3RoIC0gMX0lJWA7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5yZXBsYWNlKC8hXFxbKFteXFxdXSopXFxdXFwoKGh0dHBzPzpcXC9cXC9bXildKylcXCkvZywgKF8sIGFsdCwgc3JjKSA9PiB7XHJcbiAgICAgICAgaW1nUGxhY2Vob2xkZXJzLnB1c2goYDxpbWcgc3JjPVwiJHtzcmN9XCIgYWx0PVwiJHthbHR9XCIgc3R5bGU9XCIke2ltZ1N0eWxlfVwiIC8+YCk7XHJcbiAgICAgICAgcmV0dXJuIGAlJUlNR18ke2ltZ1BsYWNlaG9sZGVycy5sZW5ndGggLSAxfSUlYDtcclxuICAgICAgfSlcclxuICAgICAgLnJlcGxhY2UoLyhodHRwcz86XFwvXFwvXFxTK1xcLig/OmpwZ3xqcGVnfHBuZ3xnaWZ8d2VicHxzdmcpKFxcP1teXFxzXSopPykvZ2ksIChfLCBzcmMpID0+IHtcclxuICAgICAgICBpbWdQbGFjZWhvbGRlcnMucHVzaChgPGltZyBzcmM9XCIke3NyY31cIiBhbHQ9XCJpbWFnZVwiIHN0eWxlPVwiJHtpbWdTdHlsZX1cIiAvPmApO1xyXG4gICAgICAgIHJldHVybiBgJSVJTUdfJHtpbWdQbGFjZWhvbGRlcnMubGVuZ3RoIC0gMX0lJWA7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGxldCBodG1sID0gcHJvY2Vzc2VkXHJcbiAgICAgIC5yZXBsYWNlKC8mL2csICcmYW1wOycpLnJlcGxhY2UoLzwvZywgJyZsdDsnKS5yZXBsYWNlKC8+L2csICcmZ3Q7JylcclxuICAgICAgLnJlcGxhY2UoL14jIyMgKC4rKSQvZ20sICc8aDU+JDE8L2g1PicpXHJcbiAgICAgIC5yZXBsYWNlKC9eIyMgKC4rKSQvZ20sICc8aDQ+JDE8L2g0PicpXHJcbiAgICAgIC5yZXBsYWNlKC9eIyAoLispJC9nbSwgJzxoMz4kMTwvaDM+JylcclxuICAgICAgLnJlcGxhY2UoL1xcKlxcKiguKz8pXFwqXFwqL2csICc8c3Ryb25nPiQxPC9zdHJvbmc+JylcclxuICAgICAgLnJlcGxhY2UoL19fKC4rPylfXy9nLCAnPHN0cm9uZz4kMTwvc3Ryb25nPicpXHJcbiAgICAgIC5yZXBsYWNlKC9cXCooLis/KVxcKi9nLCAnPGVtPiQxPC9lbT4nKVxyXG4gICAgICAucmVwbGFjZSgvXyguKz8pXy9nLCAnPGVtPiQxPC9lbT4nKVxyXG4gICAgICAucmVwbGFjZSgvXlxccypbLSpdICguKykkL2dtLCAnPGxpPiQxPC9saT4nKVxyXG4gICAgICAucmVwbGFjZSgvXlxccypcXGQrXFwuICguKykkL2dtLCAnPGxpPiQxPC9saT4nKVxyXG4gICAgICAucmVwbGFjZSgvKDxsaT4uKjxcXC9saT4pL2dzLCAnPHVsPiQxPC91bD4nKVxyXG4gICAgICAucmVwbGFjZSgvXFxuezIsfS9nLCAnPC9wPjxwPicpXHJcbiAgICAgIC5yZXBsYWNlKC9cXG4vZywgJzxicj4nKTtcclxuICAgIGh0bWwgPSBgPHA+JHtodG1sfTwvcD5gO1xyXG4gICAgaHRtbCA9IGh0bWwucmVwbGFjZSgvJSVJTUdfKFxcZCspJSUvZywgKF8sIGkpID0+IGltZ1BsYWNlaG9sZGVyc1sraV0gfHwgJycpO1xyXG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGh0bWwpO1xyXG4gIH1cclxuXHJcbiAgcGFyc2VDb2hvcnRBbmFseXNpcyhyZXNwb25zZTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBhbmFseXNpcyA9IHJlc3BvbnNlPy5kYXRhPy5jb2hvcnRBbmFseXNpcztcclxuICAgIGlmICghYW5hbHlzaXMpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnRvdGFsQXVkaW8gPSBhbmFseXNpcy50b3RhbEF1ZGlvQXZhaWxhYmxlIHx8IDA7XHJcbiAgICB0aGlzLmNvaG9ydENhcmRzID0gW107XHJcblxyXG4gICAgY29uc3Qgc2tpcEtleXMgPSBuZXcgU2V0KFsndG90YWxBdWRpb0F2YWlsYWJsZScsICdjb2hvcnRUeXBlJywgJ2RhdGVSYW5nZScsICd1bmlxdWVQaXRjaGVzJ10pO1xyXG5cclxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGFuYWx5c2lzKSkge1xyXG4gICAgICBpZiAoc2tpcEtleXMuaGFzKGtleSkpIGNvbnRpbnVlO1xyXG4gICAgICBjb25zdCBzZWN0aW9uID0gYW5hbHlzaXNba2V5XTtcclxuICAgICAgaWYgKCFzZWN0aW9uIHx8IHR5cGVvZiBzZWN0aW9uICE9PSAnb2JqZWN0JykgY29udGludWU7XHJcblxyXG4gICAgICBjb25zdCB2YWx1ZXM6IGFueVtdID0gc2VjdGlvbi52YWx1ZSB8fCBbXTtcclxuICAgICAgY29uc3QgdHlwZSA9IHNlY3Rpb24udHlwZTtcclxuXHJcbiAgICAgIGlmICghdmFsdWVzLmxlbmd0aCkgY29udGludWU7XHJcblxyXG4gICAgICBpZiAodHlwZSA9PT0gJ0JPT0xFQU5fQkFTS0VUJykge1xyXG4gICAgICAgIHRoaXMuY29ob3J0Q2FyZHMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiBzZWN0aW9uLm5hbWUgfHwga2V5LFxyXG4gICAgICAgICAgdHlwZTogJ0JPT0xFQU5fQkFTS0VUJyxcclxuICAgICAgICAgIGJvb2xlYW5Sb3dzOiB2YWx1ZXMubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgIGlkOiBpdGVtLl9pZCB8fCAnJyxcclxuICAgICAgICAgICAgbGFiZWw6IGl0ZW0ubmFtZSxcclxuICAgICAgICAgICAgcmVzcG9uc2VzOiBpdGVtLlJlc3BvbnNlcyA/PyBpdGVtLmNvdW50ID8/IDAsXHJcbiAgICAgICAgICAgIHNjb3JlOiBpdGVtLnNjb3JlID8/IDBcclxuICAgICAgICAgIH0pKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdOVU1FUklDX1NDQUxBUicpIHtcclxuICAgICAgICBjb25zdCBpdGVtID0gdmFsdWVzWzBdIHx8IHt9O1xyXG4gICAgICAgIHRoaXMuY29ob3J0Q2FyZHMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiBzZWN0aW9uLm5hbWUgfHwga2V5LFxyXG4gICAgICAgICAgdHlwZTogJ05VTUVSSUNfU0NBTEFSJyxcclxuICAgICAgICAgIG51bWVyaWNEYXRhOiB7IHRvdGFsOiBpdGVtLlRvdGFsID8/IDAsIGF2ZzogaXRlbS5BdmcgPz8gMCB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ05VTUVSSUNfQVJSQVknKSB7XHJcbiAgICAgICAgIGNvbnN0IGl0ZW0gPSB2YWx1ZXNbMF0gfHwge307XHJcbiAgICAgICAgdGhpcy5jb2hvcnRDYXJkcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHNlY3Rpb24ubmFtZSB8fCBrZXksXHJcbiAgICAgICAgICB0eXBlOiAnTlVNRVJJQ19BUlJBWScsXHJcbiAgICAgICAgICBudW1lcmljRGF0YTogeyB0b3RhbDogaXRlbS5Ub3RhbCA/PyAwLCBhdmc6IGl0ZW0uQXZnID8/IDAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICdTVUJKRUNUSVZFJ3x8dHlwZT09PSdTVUJKRUNUSVZFX0NPVU5UJykge1xyXG4gICAgICAgIHRoaXMuY29ob3J0Q2FyZHMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiBzZWN0aW9uLm5hbWUgfHwga2V5LFxyXG4gICAgICAgICAgdHlwZTogdHlwZSxcclxuICAgICAgICAgIHN1YmplY3RpdmVSb3dzOiB2YWx1ZXMubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgIF9pZDogaXRlbS5faWQgfHwgJycsXHJcbiAgICAgICAgICAgIHJlYXNvbmluZzogaXRlbS5yZWFzb25pbmcgfHwgJycsXHJcbiAgICAgICAgICAgIHN0b3JlX2lkOiBpdGVtLnN0b3JlX2lkIHx8ICcnLFxyXG4gICAgICAgICAgICBkYXRlOiBpdGVtLmRhdGUgfHwgJydcclxuICAgICAgICAgIH0pKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW5zZXJ0IHVuaXF1ZSBwaXRjaGVzIGNhcmQgaWYgcHJlc2VudFxyXG4gICAgaWYgKGFuYWx5c2lzLnVuaXF1ZVBpdGNoZXMgJiYgQXJyYXkuaXNBcnJheShhbmFseXNpcy51bmlxdWVQaXRjaGVzKSkge1xyXG4gICAgICBjb25zdCBwaXRjaEluc2VydElkeCA9IHRoaXMuY29ob3J0Q2FyZHMubGVuZ3RoID49IDIgPyAyIDogdGhpcy5jb2hvcnRDYXJkcy5sZW5ndGg7XHJcbiAgICAgIHRoaXMuY29ob3J0Q2FyZHMuc3BsaWNlKHBpdGNoSW5zZXJ0SWR4LCAwLCB7XHJcbiAgICAgICAgbmFtZTogJ1VuaXF1ZSBQaXRjaGVzJyxcclxuICAgICAgICB0eXBlOiAnVU5JUVVFX1BJVENIRVMnLFxyXG4gICAgICAgIHBpdGNoUm93czogYW5hbHlzaXMudW5pcXVlUGl0Y2hlcy5tYXAoKHA6IGFueSkgPT4gKHsgaWQ6IHAucGl0Y2hJZCwgZGVzYzogcC5kZXNjcmlwdGlvbiB9KSlcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25Eb2N1bWVudENsaWNrKGU6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCcuY29ob3J0LWRyb3Bkb3duJykpIHtcclxuICAgICAgdGhpcy5pc0NvaG9ydERyb3Bkb3duT3BlbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKCEoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJy5wbHVzLW1lbnUtd3JhcCcpKSB7XHJcbiAgICAgIHRoaXMuc2hvd1BsdXNNZW51ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIAgQUkgTW9kZWwg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcbiAgcmVhZG9ubHkgbW9kZWxPcHRpb25zID0gW1xyXG4gICAgeyBsYWJlbDogJ3YxJywgdmFsdWU6ICdnZW1pbmktMi41LXBybycgfSxcclxuICAgIHsgbGFiZWw6ICd2MicsIHZhbHVlOiAnY2xhdWRlLXNvbm5ldC00LTYnIH1cclxuICBdO1xyXG4gIHNlbGVjdGVkTW9kZWwgPSAnZ2VtaW5pLTIuNS1wcm8nO1xyXG4gIHNob3dQbHVzTWVudSA9IGZhbHNlO1xyXG5cclxuICBnZXQgc2VsZWN0ZWRNb2RlbFZlcnNpb24oKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG1hdGNoID0gdGhpcy5zZWxlY3RlZE1vZGVsLm1hdGNoKC8oXFxkK1xcLlxcZCspLyk7XHJcbiAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0TW9kZWwodmFsdWU6IHN0cmluZyk6IHZvaWQgeyB0aGlzLnNlbGVjdGVkTW9kZWwgPSB2YWx1ZTsgfVxyXG4gIHRvZ2dsZVBsdXNNZW51KCk6IHZvaWQgeyB0aGlzLnNob3dQbHVzTWVudSA9ICF0aGlzLnNob3dQbHVzTWVudTsgfVxyXG4gIGNsb3NlUGx1c01lbnUoKTogdm9pZCB7IHRoaXMuc2hvd1BsdXNNZW51ID0gZmFsc2U7IH1cclxuXHJcbiAgc2VsZWN0Q29ob3J0VHlwZShvcHRpb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXJUeXBlID0gb3B0aW9uO1xyXG4gICAgY29uc3QgZm91bmQgPSB0aGlzLmNvaG9ydExpc3QuZmluZChjID0+IGMubmFtZSA9PT0gb3B0aW9uKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb2hvcnRJZCA9IGZvdW5kID8gZm91bmQuaWQgOiAnJztcclxuICAgIHRoaXMuaXNDb2hvcnREcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gICAgdGhpcy5zZWxlY3RlZENhcmRJZCA9ICcnO1xyXG4gICAgdGhpcy5zZWxlY3RlZENhcmROYW1lID0gJyc7XHJcbiAgICB0aGlzLmZldGNoQ29ob3J0Q2FyZHMoKTtcclxuICAgIHRoaXMuZmV0Y2hDb252ZXJzYXRpb25zKCk7XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIAgV2F2ZWZvcm0gJiBQbGF5ZXIg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4gIHdhdmVmb3JtSGVpZ2h0cyA9IFtcclxuICAgIDgsIDIyLCAzOCwgNTIsIDQ0LCAyOCwgNTYsIDQyLCAxOCwgMzIsIDU0LCA0NiwgMjQsIDQwLCA2MCwgNTAsIDI2LCA0NCxcclxuICAgIDM2LCAxOCwgNTIsIDM4LCAyOCwgNDYsIDM0LCAyMCwgNTYsIDQyLCAxNCwgMzYsIDUwLCAzMCwgMjIsIDQ0LCA1NiwgMzgsXHJcbiAgICAyMCwgNDYsIDMwLCAxNiwgNTAsIDM2LCAyNCwgNTQsIDQyLCAyOCwgMzYsIDIwLCA0NiwgMzIsIDE4LCA0MCwgNTYsIDQ0LFxyXG4gICAgMjQsIDM2LCAyMCwgNTAsIDM0LCAyMlxyXG4gIF07XHJcblxyXG4gIC8qKiAwLjAg4oCTIDEuMDogZnJhY3Rpb24gb2YgYXVkaW8gdGhhdCBoYXMgYmVlbiBwbGF5ZWQgKi9cclxuICAvLyBwbGF5UHJvZ3Jlc3MgPSAwLjE4O1xyXG4gIC8qKiBJRCBvZiB0aGUgY29udmVyc2F0aW9uIHdob3NlIGF1ZGlvIGlzIGN1cnJlbnRseSBwbGF5aW5nIChudWxsID0gbm9uZSkgKi9cclxuICBwbGF5aW5nQ29udklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBpc011dGVkID0gZmFsc2U7XHJcbiAgLy8gUGVyLWNvbnZlcnNhdGlvbiBwbGF5YmFjayBzdGF0ZXMgZm9yIFVJIHBlcnNpc3RlbmNlXHJcbiAgcGxheWJhY2tTdGF0ZXM6IHsgW2lkOiBzdHJpbmddOiB7IGN1cnJlbnRUaW1lOiBzdHJpbmcsIHRvdGFsVGltZTogc3RyaW5nLCBwcm9ncmVzczogbnVtYmVyIH0gfCB1bmRlZmluZWQgfSA9IHt9O1xyXG5cclxuICBvbkxvYWRlZE1ldGFkYXRhKGF1ZGlvOiBIVE1MQXVkaW9FbGVtZW50LCBjb252SWQ6IHN0cmluZywgYXBpRHVyYXRpb24/OiBzdHJpbmcpIHtcclxuICAgIGlmICghdGhpcy5wbGF5YmFja1N0YXRlc1tjb252SWRdKSB7XHJcbiAgICAgIHRoaXMucGxheWJhY2tTdGF0ZXNbY29udklkXSA9IHsgY3VycmVudFRpbWU6ICcwOjAwJywgdG90YWxUaW1lOiAnMDowMCcsIHByb2dyZXNzOiAwIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMucGxheWJhY2tTdGF0ZXNbY29udklkXSE7XHJcbiAgICAvLyBVc2UgYnJvd3NlciBkdXJhdGlvbiBpZiB2YWxpZDsgb3RoZXJ3aXNlIGZhbGwgYmFjayB0byBBUEktcHJvdmlkZWQgc3RyaW5nXHJcbiAgICBpZiAoaXNGaW5pdGUoYXVkaW8uZHVyYXRpb24pICYmIGF1ZGlvLmR1cmF0aW9uID4gMCkge1xyXG4gICAgICBzdGF0ZS50b3RhbFRpbWUgPSB0aGlzLmZvcm1hdFRpbWUoYXVkaW8uZHVyYXRpb24pO1xyXG4gICAgfSBlbHNlIGlmIChhcGlEdXJhdGlvbikge1xyXG4gICAgICBzdGF0ZS50b3RhbFRpbWUgPSBhcGlEdXJhdGlvbjtcclxuICAgIH1cclxuICAgIC8vIFJlc3RvcmUgc2F2ZWQgcGxheWJhY2sgcG9zaXRpb24gaWYgdXNlciBoYWQgYmVlbiBsaXN0ZW5pbmcgYmVmb3JlXHJcbiAgICBpZiAoc3RhdGUucHJvZ3Jlc3MgPiAwICYmIGlzRmluaXRlKGF1ZGlvLmR1cmF0aW9uKSAmJiBhdWRpby5kdXJhdGlvbiA+IDApIHtcclxuICAgICAgYXVkaW8uY3VycmVudFRpbWUgPSBzdGF0ZS5wcm9ncmVzcyAqIGF1ZGlvLmR1cmF0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25UaW1lVXBkYXRlKGF1ZGlvOiBIVE1MQXVkaW9FbGVtZW50LCBjb252SWQ6IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLnBsYXliYWNrU3RhdGVzW2NvbnZJZF0pIHtcclxuICAgICAgdGhpcy5wbGF5YmFja1N0YXRlc1tjb252SWRdID0geyBjdXJyZW50VGltZTogJzA6MDAnLCB0b3RhbFRpbWU6ICcwOjAwJywgcHJvZ3Jlc3M6IDAgfTtcclxuICAgIH1cclxuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5wbGF5YmFja1N0YXRlc1tjb252SWRdITtcclxuICAgIHN0YXRlLmN1cnJlbnRUaW1lID0gdGhpcy5mb3JtYXRUaW1lKGF1ZGlvLmN1cnJlbnRUaW1lKTtcclxuICAgIGlmIChpc0Zpbml0ZShhdWRpby5kdXJhdGlvbikgJiYgYXVkaW8uZHVyYXRpb24gPiAwKSB7XHJcbiAgICAgIHN0YXRlLnByb2dyZXNzID0gYXVkaW8uY3VycmVudFRpbWUgLyBhdWRpby5kdXJhdGlvbjtcclxuICAgIH1cclxuICB9XHJcblxyXG5mb3JtYXRUaW1lKHNlY29uZHM6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgaWYgKCFzZWNvbmRzKSByZXR1cm4gJzA6MDAnO1xyXG5cclxuICBjb25zdCBtaW5zID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gNjApO1xyXG4gIGNvbnN0IHNlY3MgPSBNYXRoLmZsb29yKHNlY29uZHMgJSA2MCk7XHJcblxyXG4gIHJldHVybiBgJHttaW5zfToke3NlY3MgPCAxMCA/ICcwJyArIHNlY3MgOiBzZWNzfWA7XHJcbn1cclxuXHJcbiAgc2Vla0F1ZGlvKGV2ZW50OiBNb3VzZUV2ZW50LCBjb252SWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgdHJhY2sgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgY29uc3QgcmF0aW8gPSBldmVudC5vZmZzZXRYIC8gdHJhY2sub2Zmc2V0V2lkdGg7XHJcbiAgICBjb25zdCBhdWRpbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBhdWRpby0ke2NvbnZJZH1gKSBhcyBIVE1MQXVkaW9FbGVtZW50O1xyXG4gICAgaWYgKCFhdWRpbyB8fCAhYXVkaW8uZHVyYXRpb24pIHJldHVybjtcclxuICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gcmF0aW8gKiBhdWRpby5kdXJhdGlvbjtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVBsYXkoY29udklkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGF1ZGlvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYGF1ZGlvLSR7Y29udklkfWApIGFzIEhUTUxBdWRpb0VsZW1lbnQ7XHJcbiAgICBpZiAoIWF1ZGlvKSByZXR1cm47XHJcblxyXG4gICAgaWYgKHRoaXMucGxheWluZ0NvbnZJZCA9PT0gY29udklkKSB7XHJcbiAgICAgIGF1ZGlvLnBhdXNlKCk7XHJcbiAgICAgIHRoaXMucGxheWluZ0NvbnZJZCA9IG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBQYXVzZSBwcmV2aW91c2x5IHBsYXlpbmcgYXVkaW9cclxuICAgICAgaWYgKHRoaXMucGxheWluZ0NvbnZJZCkge1xyXG4gICAgICAgIGNvbnN0IG90aGVyQXVkaW8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgYXVkaW8tJHt0aGlzLnBsYXlpbmdDb252SWR9YCkgYXMgSFRNTEF1ZGlvRWxlbWVudDtcclxuICAgICAgICBpZiAob3RoZXJBdWRpbykgb3RoZXJBdWRpby5wYXVzZSgpO1xyXG4gICAgICAgIHRoaXMucGxheWluZ0NvbnZJZCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgLy8gcGxheSgpIHJldHVybnMgYSBQcm9taXNlIOKAlCBoYW5kbGUgcmVqZWN0aW9uIHRvIGF2b2lkIHNpbGVudCBmYWlsdXJlc1xyXG4gICAgICBjb25zdCBwbGF5UHJvbWlzZSA9IGF1ZGlvLnBsYXkoKTtcclxuICAgICAgaWYgKHBsYXlQcm9taXNlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBwbGF5UHJvbWlzZS50aGVuKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMucGxheWluZ0NvbnZJZCA9IGNvbnZJZDtcclxuICAgICAgICB9KS5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbQXVkaW9dIFBsYXkgZmFpbGVkOicsIGVycik7XHJcbiAgICAgICAgICB0aGlzLnBsYXlpbmdDb252SWQgPSBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucGxheWluZ0NvbnZJZCA9IGNvbnZJZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlTXV0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNNdXRlZCA9ICF0aGlzLmlzTXV0ZWQ7XHJcbiAgICBjb25zdCBhdWRpb3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhdWRpbycpO1xyXG4gICAgYXVkaW9zLmZvckVhY2goYSA9PiBhLm11dGVkID0gdGhpcy5pc011dGVkKTtcclxuICB9XHJcblxyXG4gIC8vIOKUgOKUgCBBY2NvcmRpb24gU3RhdGUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4gIG9wZW5JZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgYWN0aXZlVGFiOiB7IFtpZDogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuaGVhZGVyRGF0YTogYW55O1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRQYWdlRGF0YSgpO1xyXG4gICAgdGhpcy5pbml0Q2hhdFNlc3Npb24oKTtcclxuICAgIHRoaXMubG9hZENoYXRIaXN0b3J5TGlzdCgpO1xyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLmhlYWRlckRhdGEgPSBkYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgICAgICB0aGlzLm9mZnNldCA9IDE7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhcmRJZCA9ICcnO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXJkTmFtZSA9ICcnO1xyXG4gICAgICAgIGlmICghdGhpcy5jb2hvcnRMaXN0TG9hZGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmZldGNoQ29ob3J0TGlzdCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmZldGNoQ29ob3J0Q2FyZHMoKTtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hDb252ZXJzYXRpb25zKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29ob3J0TGlzdExvYWRlZCA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIGZldGNoQ29ob3J0TGlzdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNsaWVudElkID0gJzExJztcclxuICAgIHRoaXMuYXVkaW9TZXJ2aWNlLmxpc3RDb2hvcnRzKGNsaWVudElkLCAxMDAsIDApLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmNvaG9ydExpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGNvaG9ydHMgPSByZXM/LmRhdGE/LmNvaG9ydHMgfHwgW107XHJcbiAgICAgICAgdGhpcy5jb2hvcnRMaXN0ID0gY29ob3J0cy5tYXAoKGM6IGFueSkgPT4gKHsgaWQ6IGMuY29ob3J0SWQsIG5hbWU6IGMuY29ob3J0TmFtZSB8fCAnJyB9KSk7XHJcbiAgICAgICAgdGhpcy5jb2hvcnRPcHRpb25zID0gdGhpcy5jb2hvcnRMaXN0Lm1hcChjID0+IGMubmFtZSk7XHJcbiAgICAgICAgaWYgKHRoaXMuY29ob3J0TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlclR5cGUgPSB0aGlzLmNvaG9ydExpc3RbMF0ubmFtZTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2hvcnRJZCA9IHRoaXMuY29ob3J0TGlzdFswXS5pZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5mZXRjaENvaG9ydENhcmRzKCk7XHJcbiAgICAgICAgdGhpcy5mZXRjaENvbnZlcnNhdGlvbnMoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmNvaG9ydExpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZmV0Y2hDb2hvcnRDYXJkcygpO1xyXG4gICAgICAgIHRoaXMuZmV0Y2hDb252ZXJzYXRpb25zKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRQYXlsb2FkKCk6IGFueSB7XHJcbiAgICBjb25zdCBjbGllbnRJZCA9ICAnMTEnO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY2xpZW50SWQ6IEFycmF5LmlzQXJyYXkoY2xpZW50SWQpID8gY2xpZW50SWQgOiBbY2xpZW50SWRdLFxyXG4gICAgICBzdG9yZUlkOiBbXHJcbiAgICAgICAgXCIxMS0xMDYyXCIsXHJcbiAgICAgICAgXCIxMS0xMDc4XCIsXHJcbiAgICAgICAgXCIxMS0xMDgzXCIsXHJcbiAgICAgICAgXCIxMS0xNTE1XCIsXHJcbiAgICAgICAgXCIxMS0xNTRcIixcclxuICAgICAgICBcIjExLTE2MjZcIixcclxuICAgICAgICBcIjExLTE4MVwiLFxyXG4gICAgICAgIFwiMTEtMTk0N1wiLFxyXG4gICAgICAgIFwiMTEtMTk5NFwiLFxyXG4gICAgICAgIFwiMTEtMjAwXCIsXHJcbiAgICAgICAgXCIxMS0yMDJcIixcclxuICAgICAgICBcIjExLTIxNVwiLFxyXG4gICAgICAgIFwiMTEtMjYwXCIsXHJcbiAgICAgICAgXCIxMS03OFwiLFxyXG4gICAgICAgIFwiMTEtODE5XCJcclxuICAgIF0sXHJcbiAgICAgIGNvaG9ydFR5cGU6IHRoaXMuc2VsZWN0ZWRDb2hvcnRJZCA/IFt0aGlzLnNlbGVjdGVkQ29ob3J0SWRdIDogW10sXHJcbiAgICAgIHN0YXJ0RGF0ZTogXCIyMDI2LTAzLTAxXCIsXHJcbiAgICAgIGVuZERhdGU6IFwiMjAyNi0wMy0yOFwiLFxyXG4gICAgICBpc0FJOiB0cnVlLFxyXG4gICAgICBhbmFseXRpY3NUeXBlOiAnYXVkaW8nLFxyXG4gICAgICBpc0V4cG9ydDogZmFsc2VcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBmZXRjaENvaG9ydENhcmRzKCk6IHZvaWQge1xyXG4gICBcclxuICAgIHRoaXMuaXNMb2FkaW5nQ2FyZHMgPSB0cnVlO1xyXG4gICAgdGhpcy5hdWRpb1NlcnZpY2UuZ2V0Q29ob3J0QW5hbHlzaXNDYXJkKHRoaXMuYnVpbGRQYXlsb2FkKCkpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnBhcnNlQ29ob3J0QW5hbHlzaXMocmVzKTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZ0NhcmRzID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7IHRoaXMuaXNMb2FkaW5nQ2FyZHMgPSBmYWxzZTsgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gICAgdGhpcy5zZW5kQ2hhdE1lc3NhZ2UoKTtcclxuICB9XHJcblxyXG4gIGZldGNoQ29udmVyc2F0aW9ucygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5wYWdlU2l6ZSB8fCB0aGlzLnBhZ2VTaXplIDwgMSkgeyB0aGlzLnBhZ2VTaXplID0gMTA7IH1cclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIC4uLnRoaXMuYnVpbGRQYXlsb2FkKCksXHJcbiAgICAgIC8vIHNlYXJjaFZhbHVlOiB0aGlzLmNoYXRRdWVyeSB8fCAnJyxcclxuICAgICAgbGltaXQ6IHRoaXMucGFnZVNpemUsXHJcbiAgICAgIF9pZDogdGhpcy5zZWxlY3RlZENhcmRJZCA/IFt0aGlzLnNlbGVjdGVkQ2FyZElkXSA6IFtdLFxyXG4gICAgICBuYW1lOiB0aGlzLnNlbGVjdGVkQ2FyZElkID8gJycgOiAodGhpcy5zZWxlY3RlZENhcmROYW1lIHx8ICcnKSxcclxuICAgICAgb2Zmc2V0OiB0aGlzLmN1cnJlbnRQYWdlIC0gMVxyXG4gICAgfTtcclxuICAgIHRoaXMuaXNMb2FkaW5nQ29udmVyc2F0aW9ucyA9IHRydWU7XHJcbiAgICB0aGlzLmF1ZGlvU2VydmljZS5nZXRDb252ZXJzYXRpb25zTGlzdChwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbGlzdCA9IHJlcz8uZGF0YT8uZGF0YSB8fCByZXM/LmRhdGE/LmNvbnZlcnNhdGlvbnMgfHwgW107XHJcbiAgICAgICAgdGhpcy5jb252ZXJzYXRpb25zID0gbGlzdC5tYXAoKGl0ZW06IGFueSkgPT4gdGhpcy5tYXBDb252ZXJzYXRpb24oaXRlbSkpO1xyXG4gICAgICAgIHRoaXMudG90YWxJdGVtcyA9IHJlcz8uZGF0YT8uY291bnQgPz8gcmVzPy5kYXRhPy5wYWdpbmF0aW9uPy50b3RhbCA/PyB0aGlzLmNvbnZlcnNhdGlvbnMubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gdGhpcy50b3RhbEl0ZW1zID4gMTAgPyBbMTAsIDIwLCA1MCwgMTAwXSA6IFt0aGlzLnRvdGFsSXRlbXMgfHwgMTBdO1xyXG4gICAgICAgIHRoaXMucGFnZVNpemUgPSB0aGlzLnBhZ2luYXRpb25TaXplcy5pbmNsdWRlcyh0aGlzLnBhZ2VTaXplKSA/IHRoaXMucGFnZVNpemUgOiB0aGlzLnBhZ2luYXRpb25TaXplc1swXTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURpc3BsYXllZENvbnZlcnNhdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZ0NvbnZlcnNhdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICAvLyBBdXRvLW9wZW4gZmlyc3QgY29udmVyc2F0aW9uXHJcbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheWVkQ29udmVyc2F0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBjb25zdCBmaXJzdCA9IHRoaXMuZGlzcGxheWVkQ29udmVyc2F0aW9uc1swXTtcclxuICAgICAgICAgIHRoaXMub3BlbklkID0gZmlyc3QuYXVkaW9JZDtcclxuICAgICAgICAgIGlmICghdGhpcy5hY3RpdmVUYWJbZmlyc3QuYXVkaW9JZF0pIHRoaXMuYWN0aXZlVGFiW2ZpcnN0LmF1ZGlvSWRdID0gJ3N1bW1hcnknO1xyXG4gICAgICAgICAgdGhpcy5sb2FkQ29udmVyc2F0aW9uRGV0YWlsKGZpcnN0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb252ZXJzYXRpb25zID0gW107XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb252ZXJzYXRpb25zID0gW107XHJcbiAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZ0NvbnZlcnNhdGlvbnMgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhcnNlTWV0cmljcyhyYXc6IGFueSk6IHsgbmFtZTogc3RyaW5nOyB0eXBlOiBzdHJpbmc7IHZhbHVlOiBhbnlbXSB9W10ge1xyXG4gICAgaWYgKCFyYXcgfHwgdHlwZW9mIHJhdyAhPT0gJ29iamVjdCcpIHJldHVybiBbXTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHJhdykpIHJldHVybiByYXc7IC8vIGFscmVhZHkgcGFyc2VkXHJcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhyYXcpXHJcbiAgICAgIC5maWx0ZXIoKHNlY3Rpb246IGFueSkgPT4gc2VjdGlvbiAmJiB0eXBlb2Ygc2VjdGlvbiA9PT0gJ29iamVjdCcgJiYgc2VjdGlvbi50eXBlKVxyXG4gICAgICAubWFwKChzZWN0aW9uOiBhbnkpID0+ICh7XHJcbiAgICAgICAgbmFtZTogc2VjdGlvbi5uYW1lIHx8ICcnLFxyXG4gICAgICAgIHR5cGU6IHNlY3Rpb24udHlwZSB8fCAnJyxcclxuICAgICAgICB2YWx1ZTogc2VjdGlvbi52YWx1ZSB8fCBbXVxyXG4gICAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1hcENvbnZlcnNhdGlvbihpdGVtOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgaGFzRGV0YWlsID0gISEoaXRlbS5haUluc2lnaHRzIHx8IGl0ZW0uY29udmVyc2F0aW9uRGV0YWlscyk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBhdWRpb0lkOiBpdGVtLmRvY19pZCB8fCBpdGVtLmF1ZGlvSWQgfHwgaXRlbS5faWQgfHwgJycsXHJcbiAgICAgIHN0b3JlSWQ6IGl0ZW0uc3RvcmVJZCB8fCAnJyxcclxuICAgICAgc3RvcmVOYW1lOiBpdGVtLnN0b3JlTmFtZSB8fCAnJyxcclxuICAgICAgdXNlck5hbWU6IGl0ZW0uc3RhZmYgfHwgaXRlbS5zdGFmZklkIHx8IGl0ZW0udXNlck5hbWUgfHwgaXRlbS5zdGFmZk5hbWUgfHwgJycsXHJcbiAgICAgIGxvY2F0aW9uOiBpdGVtLmxvY2F0aW9uIHx8IGl0ZW0uc3RhdGUgfHwgJycsXHJcbiAgICAgIGRhdGU6IGl0ZW0uZGF0ZSB8fCAnJyxcclxuICAgICAgdGltZTogaXRlbS5UaW1lc3RhbXAgfHwgaXRlbS50aW1lIHx8ICcnLFxyXG4gICAgICBkdXJhdGlvbjogaXRlbS5EdXJhdGlvbiB8fCBpdGVtLmR1cmF0aW9uIHx8ICcnLFxyXG4gICAgICBhdWRpb0Rlc2NyaXB0aW9uOiBpdGVtLlN1bW1hcnkgfHwgaXRlbS5hdWRpb0Rlc2NyaXB0aW9uIHx8IGl0ZW0uc3VtbWFyeSB8fCBpdGVtLmNvbnZlcnNhdGlvbkRldGFpbHM/LmF1ZGlvU3VtbWFyeSB8fCAnJyxcclxuICAgICAgZXllVGVzdExpbms6ICEhaXRlbS5leWVUZXN0TGluayxcclxuICAgICAgYXVkaW9Vcmw6IGl0ZW0uYXVkaW9VcmwgfHwgaXRlbS5hdWRpb191cmwgfHwgJycsXHJcbiAgICAgIG1ldHJpY3M6IHRoaXMucGFyc2VNZXRyaWNzKGl0ZW0ubWV0cmljcyksXHJcbiAgICAgIGFpSW5zaWdodHM6IGl0ZW0uYWlJbnNpZ2h0cyB8fCB7IHRpdGxlOiAnVGFuZ28gQUkgR2VuZXJhdGVkIEluc2lnaHRzJywgc3VtbWFyeTogW10gfSxcclxuICAgICAgY29udmVyc2F0aW9uRGV0YWlsczogaXRlbS5jb252ZXJzYXRpb25EZXRhaWxzIHx8IHsgYXVkaW9TdW1tYXJ5OiAnJywgdHJhbnNjcmlwdGlvbjogJycgfSxcclxuICAgICAgX2RldGFpbExvYWRlZDogaGFzRGV0YWlsLFxyXG4gICAgICBfZGV0YWlsTG9hZGluZzogZmFsc2UsXHJcbiAgICAgIF9kZXRhaWxFcnJvcjogZmFsc2VcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBsb2FkQ29udmVyc2F0aW9uRGV0YWlsKGNvbnY6IGFueSk6IHZvaWQge1xyXG4gICAgLy8gU2tpcCBpZiBhbHJlYWR5IGxvYWRlZCBBTkQgYXVkaW9VcmwgaXMgcG9wdWxhdGVkOyBhbHdheXMgcmUtZmV0Y2ggaWYgYXVkaW9VcmwgaXMgbWlzc2luZ1xyXG4gICAgaWYgKChjb252Ll9kZXRhaWxMb2FkZWQgJiYgY29udi5hdWRpb1VybCkgfHwgY29udi5fZGV0YWlsTG9hZGluZykgcmV0dXJuO1xyXG4gICAgY29udi5fZGV0YWlsTG9hZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBwYXlsb2FkID0geyBjb2hvcnRJZDogdGhpcy5zZWxlY3RlZENvaG9ydElkID8gW3RoaXMuc2VsZWN0ZWRDb2hvcnRJZF0gOiBbXSwgY2xpZW50SWQ6ICcxMScgfTtcclxuICAgIHRoaXMuYXVkaW9TZXJ2aWNlLmdldENvbnZlcnNhdGlvbkRldGFpbChjb252LmF1ZGlvSWQsIHBheWxvYWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZygnW0F1ZGlvRGV0YWlsXSByYXcgcmVzcG9uc2U6JywgSlNPTi5zdHJpbmdpZnkocmVzKSk7XHJcbiAgICAgICAgLy8gaGFuZGxlOiB7IGRhdGE6IGl0ZW0gfSBvciB7IGRhdGE6IHsgZGF0YTogaXRlbSB9IH0gb3IgaXRlbSBkaXJlY3RseVxyXG4gICAgICAgIGNvbnN0IHJhdyA9IHJlcz8uZGF0YTtcclxuICAgICAgICBjb25zdCBkZXRhaWwgPSByYXc/LmF1ZGlvSWQgPyByYXcgOiAocmF3Py5kYXRhPy5hdWRpb0lkID8gcmF3LmRhdGEgOiAocmF3IHx8IHt9KSk7XHJcbiAgICAgICAgaWYgKGRldGFpbC5tZXRyaWNzKSBjb252Lm1ldHJpY3MgPSB0aGlzLnBhcnNlTWV0cmljcyhkZXRhaWwubWV0cmljcyk7XHJcbiAgICAgICAgaWYgKGRldGFpbC5haUluc2lnaHRzPy5zdW1tYXJ5Py5sZW5ndGgpIGNvbnYuYWlJbnNpZ2h0cyA9IGRldGFpbC5haUluc2lnaHRzO1xyXG4gICAgICAgIGlmIChkZXRhaWwuY29udmVyc2F0aW9uRGV0YWlscz8uYXVkaW9TdW1tYXJ5KSBjb252LmNvbnZlcnNhdGlvbkRldGFpbHMgPSBkZXRhaWwuY29udmVyc2F0aW9uRGV0YWlscztcclxuICAgICAgICBpZiAoZGV0YWlsLmF1ZGlvVXJsIHx8IGRldGFpbC5hdWRpb191cmwpIGNvbnYuYXVkaW9VcmwgPSBkZXRhaWwuYXVkaW9VcmwgfHwgZGV0YWlsLmF1ZGlvX3VybDtcclxuICAgICAgICBjb252Ll9kZXRhaWxMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIGNvbnYuX2RldGFpbExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHsgY29udi5fZGV0YWlsTG9hZGluZyA9IGZhbHNlOyBjb252Ll9kZXRhaWxFcnJvciA9IHRydWU7IH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBzZXRQYWdlRGF0YSgpIHtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0VGl0bGUoJ0NvaG9ydHMnKTtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0RGVzY3JpcHRpb24oJ1RvIG9wdGltaXplIGFuZCBpbXByb3ZlIGV4aXN0aW5nIGFsZ29yaXRobScpO1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRCcmVhZGNydW1icyhbXHJcbiAgICAgIHsgdGl0bGU6ICdBdWRpbycsIHBhdGg6ICcvbWFuYWdlL2FpLWF1ZGlvL2F1ZGlvJywgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogJ0NvaG9ydHMnLCBwYXRoOiAnJywgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogdHJ1ZSB9LFxyXG4gICAgXSk7XHJcbiAgfVxyXG4gIGNvbnZlcnNhdGlvbnM6IGFueVtdID0gW107XHJcblxyXG4gIHRvZ2dsZUNvbnZlcnNhdGlvbihpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBpc0Nsb3NpbmcgPSB0aGlzLm9wZW5JZCA9PT0gaWQ7XHJcbiAgICAvLyBCZWZvcmUgY2xvc2luZywgc2F2ZSBjdXJyZW50IHBsYXliYWNrIHN0YXRlIGFuZCBwYXVzZVxyXG4gICAgaWYgKGlzQ2xvc2luZyAmJiB0aGlzLnBsYXlpbmdDb252SWQgPT09IGlkKSB7XHJcbiAgICAgIGNvbnN0IGF1ZGlvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYGF1ZGlvLSR7aWR9YCkgYXMgSFRNTEF1ZGlvRWxlbWVudDtcclxuICAgICAgaWYgKGF1ZGlvKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnBsYXliYWNrU3RhdGVzW2lkXSkge1xyXG4gICAgICAgICAgdGhpcy5wbGF5YmFja1N0YXRlc1tpZF0gPSB7IGN1cnJlbnRUaW1lOiAnMDowMCcsIHRvdGFsVGltZTogJzA6MDAnLCBwcm9ncmVzczogMCB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBsYXliYWNrU3RhdGVzW2lkXSEuY3VycmVudFRpbWUgPSB0aGlzLmZvcm1hdFRpbWUoYXVkaW8uY3VycmVudFRpbWUpO1xyXG4gICAgICAgIHRoaXMucGxheWJhY2tTdGF0ZXNbaWRdIS5wcm9ncmVzcyA9IChpc0Zpbml0ZShhdWRpby5kdXJhdGlvbikgJiYgYXVkaW8uZHVyYXRpb24gPiAwKVxyXG4gICAgICAgICAgPyBhdWRpby5jdXJyZW50VGltZSAvIGF1ZGlvLmR1cmF0aW9uIDogMDtcclxuICAgICAgICBhdWRpby5wYXVzZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucGxheWluZ0NvbnZJZCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9wZW5JZCA9IGlzQ2xvc2luZyA/IG51bGwgOiBpZDtcclxuICAgIGlmICghdGhpcy5hY3RpdmVUYWJbaWRdKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlVGFiW2lkXSA9ICdzdW1tYXJ5JztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wZW5JZCA9PT0gaWQpIHtcclxuICAgICAgY29uc3QgY29udiA9IHRoaXMuZGlzcGxheWVkQ29udmVyc2F0aW9ucy5maW5kKGMgPT4gYy5hdWRpb0lkID09PSBpZCk7XHJcbiAgICAgIGlmIChjb252KSB0aGlzLmxvYWRDb252ZXJzYXRpb25EZXRhaWwoY29udik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRUYWIoaWQ6IHN0cmluZywgdGFiOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlVGFiW2lkXSA9IHRhYjtcclxuICB9XHJcblxyXG4gIHVwZGF0ZURpc3BsYXllZENvbnZlcnNhdGlvbnMoKTogdm9pZCB7XHJcbiAgICAvLyBjb25zdCBzdGFydCA9ICh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLnBhZ2VTaXplO1xyXG4gICAgLy8gY29uc3QgZW5kID0gc3RhcnQgKyB0aGlzLnBhZ2VTaXplO1xyXG4gICAgLy8gdGhpcy5kaXNwbGF5ZWRDb252ZXJzYXRpb25zID0gdGhpcy5jb252ZXJzYXRpb25zLnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG4gICAgdGhpcy5kaXNwbGF5ZWRDb252ZXJzYXRpb25zID0gdGhpcy5jb252ZXJzYXRpb25zO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlQ2hhbmdlKGV2ZW50OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBldmVudDtcclxuICAgIHRoaXMub2Zmc2V0ID0gZXZlbnQ7XHJcbiAgICB0aGlzLmZldGNoQ29udmVyc2F0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlU2l6ZUNoYW5nZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gcGFyc2VJbnQoZXZlbnQpO1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLm9mZnNldCA9IDE7XHJcbiAgICB0aGlzLmZldGNoQ29udmVyc2F0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlV2VpZ2h0YWdlRHJvcGRvd24obWk6IG51bWJlciwgY2k6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgY29udiA9IHRoaXMuY29udmVyc2F0aW9uc1ttaV07XHJcbiAgICBjb25zdCBwaXRjaE1ldHJpYyA9IGNvbnY/Lm1ldHJpY3M/LmZpbmQoKG06IGFueSkgPT4gbS50eXBlID09PSAnQk9PTEVBTl9CQVNLRVQnICYmIG0ubmFtZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygncGl0Y2gnKSk7XHJcbiAgICBpZiAocGl0Y2hNZXRyaWM/LnZhbHVlPy5bY2ldKSB7XHJcbiAgICAgIHBpdGNoTWV0cmljLnZhbHVlW2NpXS5pc1dlaWdodGFnZU9wZW4gPSAhcGl0Y2hNZXRyaWMudmFsdWVbY2ldLmlzV2VpZ2h0YWdlT3BlbjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdFdlaWdodGFnZShtaTogbnVtYmVyLCBjaTogbnVtYmVyLCB3ZWlnaHQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgY29udiA9IHRoaXMuY29udmVyc2F0aW9uc1ttaV07XHJcbiAgICBjb25zdCBwaXRjaE1ldHJpYyA9IGNvbnY/Lm1ldHJpY3M/LmZpbmQoKG06IGFueSkgPT4gbS50eXBlID09PSAnQk9PTEVBTl9CQVNLRVQnICYmIG0ubmFtZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygncGl0Y2gnKSk7XHJcbiAgICBpZiAocGl0Y2hNZXRyaWM/LnZhbHVlPy5bY2ldKSB7XHJcbiAgICAgIHBpdGNoTWV0cmljLnZhbHVlW2NpXS53ZWlnaHRhZ2UgPSB3ZWlnaHQ7XHJcbiAgICAgIHBpdGNoTWV0cmljLnZhbHVlW2NpXS5pc1dlaWdodGFnZU9wZW4gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbmV4cG9ydERhdGEoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICAuLi50aGlzLmJ1aWxkUGF5bG9hZCgpLFxyXG4gICAgICBpc0FJOiBmYWxzZSxcclxuICAgICAgaXNFeHBvcnQ6IHRydWUsXHJcbiAgICAgIC8vIHNlYXJjaFZhbHVlOiB0aGlzLmNoYXRRdWVyeSB8fCAnJyxcclxuICAgICAgbGltaXQ6IHRoaXMucGFnZVNpemUsXHJcbiAgICAgIG9mZnNldDogMCxcclxuICAgIH07XHJcbiAgICB0aGlzLmF1ZGlvU2VydmljZS5nZXRDb252ZXJzYXRpb25MaXN0RXhwb3J0KHBheWxvYWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCB1cmwgPSByZXM/Lm1lc3NhZ2U7XHJcbiAgICAgICAgaWYgKHVybCkge1xyXG4gICAgICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAgIGEuaHJlZiA9IHVybDtcclxuICAgICAgICAgIGEudGFyZ2V0ID0gJ19ibGFuayc7XHJcbiAgICAgICAgICBhLmRvd25sb2FkID0gJyc7XHJcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xyXG4gICAgICAgICAgYS5jbGljaygpO1xyXG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgLy8gSGFuZGxlIGV4cG9ydCBlcnJvciBpZiBuZWVkZWRcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuZm9ybWF0RHVyYXRpb24oc2Vjb25kczogbnVtYmVyKTogc3RyaW5nIHtcclxuICBjb25zdCBtaW5zID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gNjApO1xyXG4gIHJldHVybiBgJHttaW5zfSBtaW5zYDtcclxufVxyXG5jcmVhdGVDb2hvcnQoKTogdm9pZCB7XHJcbiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvbWFuYWdlL2FpLWF1ZGlvL2FkZC1tYW5hZ2UtY29ob3J0XCJdLCB7XHJcbiAgICAgIHN0YXRlOiB7IG1vZGU6IFwiY3JlYXRlXCIgfSxcclxuICAgIH0pO1xyXG59XHJcblxyXG4vLyDilIDilIAgQUkgQXNzaXN0YW50IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5jaGF0TWVzc2FnZXM6IHsgc2VuZGVyOiAndXNlcicgfCAnYXNzaXN0YW50JzsgdGV4dDogc3RyaW5nIH1bXSA9IFtdO1xyXG5pc0FpTG9hZGluZyA9IGZhbHNlO1xyXG5wcml2YXRlIGNoYXRTZXNzaW9uSWQgPSAnJztcclxucHJpdmF0ZSBjaGF0VXNlcklkID0gJyc7XHJcblxyXG5wcml2YXRlIHNjcm9sbENoYXRUb0JvdHRvbSgpOiB2b2lkIHtcclxuICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5jaGF0VGhyZWFkTWVzc2FnZXM/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoZWwpIGVsLnNjcm9sbFRvcCA9IGVsLnNjcm9sbEhlaWdodDtcclxuICB9KTtcclxufVxyXG5cclxuc3RhcnROZXdDaGF0KCk6IHZvaWQge1xyXG4gIHRoaXMuY2hhdE1lc3NhZ2VzID0gW107XHJcbiAgdGhpcy5jaGF0UXVlcnkgPSAnJztcclxuICB0aGlzLmlzQWlMb2FkaW5nID0gZmFsc2U7XHJcbiAgdGhpcy5jaGF0U2Vzc2lvbklkID0gYEFVRElPXyR7RGF0ZS5ub3coKX1gO1xyXG59XHJcblxyXG5wcml2YXRlIGluaXRDaGF0U2Vzc2lvbigpOiB2b2lkIHtcclxuICB0cnkge1xyXG4gICAgY29uc3QgdXNlciA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXItaW5mbycpIGFzIHN0cmluZyk7XHJcbiAgICB0aGlzLmNoYXRVc2VySWQgPSB1c2VyPy5faWQgfHwgJyc7XHJcbiAgICBjb25zdCBuYW1lOiBzdHJpbmcgPSB1c2VyPy51c2VyTmFtZSB8fCB1c2VyPy5uYW1lIHx8IHVzZXI/LmZ1bGxOYW1lIHx8ICcnO1xyXG4gICAgY29uc3QgcGFydHMgPSBuYW1lLnRyaW0oKS5zcGxpdCgvXFxzKy8pO1xyXG4gICAgdGhpcy51c2VySW5pdGlhbHMgPSBwYXJ0cy5sZW5ndGggPj0gMlxyXG4gICAgICA/IChwYXJ0c1swXVswXSArIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdWzBdKS50b1VwcGVyQ2FzZSgpXHJcbiAgICAgIDogbmFtZS5zdWJzdHJpbmcoMCwgMikudG9VcHBlckNhc2UoKTtcclxuICB9IGNhdGNoIHsgdGhpcy5jaGF0VXNlcklkID0gJyc7IH1cclxuICB0aGlzLmNoYXRTZXNzaW9uSWQgPSBgQVVESU9fJHtEYXRlLm5vdygpfWA7XHJcbn1cclxuXHJcbnNlbmRDaGF0TWVzc2FnZSgpOiB2b2lkIHtcclxuICBpZiAoIXRoaXMuY2hhdFF1ZXJ5LnRyaW0oKSB8fCB0aGlzLmlzQWlMb2FkaW5nKSByZXR1cm47XHJcbiAgaWYgKCF0aGlzLmNoYXRTZXNzaW9uSWQpIHRoaXMuaW5pdENoYXRTZXNzaW9uKCk7XHJcblxyXG4gIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICB1c2VyX2lkOiB0aGlzLmNoYXRVc2VySWQsXHJcbiAgICBzZXNzaW9uX2lkOiB0aGlzLmNoYXRTZXNzaW9uSWQsXHJcbiAgICBzZXNzaW9uX2RhdGU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zbGljZSgwLCAxMCksXHJcbiAgICBzZXNzaW9uX3RpbWV6b25lOiBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmUsXHJcbiAgICBtZXNzYWdlOiB0aGlzLmNoYXRRdWVyeSxcclxuICAgIGFuYWx5dGljc1R5cGU6ICdhdWRpbycsXHJcbiAgICBjb25maWc6IHtcclxuICAgICAgc2VsZWN0ZWRfY29ob3J0OiB0aGlzLnNlbGVjdGVkQ29ob3J0SWQgPyBbdGhpcy5zZWxlY3RlZENvaG9ydElkXSA6IFtdLFxyXG4gICAgICBzZWxlY3RlZF9zdG9yZXM6IFtcclxuICAgIFwiTEtTVDExNjZcIixcclxuICAgIFwiTEtTVDExOTlcIixcclxuICAgIFwiTEtTVDc4MFwiLFxyXG4gICAgXCJMS1NUMTc3MFwiLFxyXG4gICAgXCJMS1NUMzMyXCIsXHJcbiAgICBcIkxLU1QxNjczXCIsXHJcbiAgICBcIkxLU1QyOTNcIixcclxuICAgIFwiTEtTVDE4NjFcIixcclxuICAgIFwiTEtTVDE5NjdcIixcclxuICAgIFwiTEtTVDI3NFwiLFxyXG4gICAgXCJMS1NUMDNcIixcclxuICAgIFwiTEtTVDMzM1wiLFxyXG4gICAgXCJMS1NUNTM0XCIsXHJcbiAgICBcIkxLU1Q0OTZcIixcclxuICAgIFwiTEtTVDc3OVwiXHJcbl0sXHJcbiAgICAgIGRhdGVfcmFuZ2U6IHtcclxuICAgICAgICBzdGFydDogXCIyMDI2LTAzLTAxXCIsXHJcbiAgICAgICAgZW5kOlwiMjAyNi0wMy0yOFwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHNlbGVjdGVkX3Byb2R1Y3RzOiBbJ0F1ZGlvJ11cclxuICAgIH1cclxuICB9O1xyXG5cclxuICAvLyBQdXNoIHVzZXIgbWVzc2FnZSB0byB0aHJlYWRcclxuICB0aGlzLmNoYXRNZXNzYWdlcy5wdXNoKHsgc2VuZGVyOiAndXNlcicsIHRleHQ6IHRoaXMuY2hhdFF1ZXJ5IH0pO1xyXG4gIHRoaXMuY2hhdFF1ZXJ5ID0gJyc7XHJcbiAgdGhpcy5pc0FpTG9hZGluZyA9IHRydWU7XHJcbiAgdGhpcy5zY3JvbGxDaGF0VG9Cb3R0b20oKTtcclxuXHJcbiAgLy8gUGxhY2Vob2xkZXIgZm9yIEFJIHJlc3BvbnNlICh1cGRhdGVkIGFzIHN0cmVhbSBhcnJpdmVzKVxyXG4gIGNvbnN0IGFpSW5kZXggPSB0aGlzLmNoYXRNZXNzYWdlcy5wdXNoKHsgc2VuZGVyOiAnYXNzaXN0YW50JywgdGV4dDogJycgfSkgLSAxO1xyXG5cclxuICB0aGlzLmF1ZGlvU2VydmljZS5jaGF0U3RyZWFtKHBheWxvYWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgbmV4dDogKHRleHQ6IHN0cmluZykgPT4ge1xyXG4gICAgICB0aGlzLmNoYXRNZXNzYWdlc1thaUluZGV4XS50ZXh0ID0gdGV4dDtcclxuICAgICAgdGhpcy5pc0FpTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNjcm9sbENoYXRUb0JvdHRvbSgpO1xyXG4gICAgfSxcclxuICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgIHRoaXMuY2hhdE1lc3NhZ2VzW2FpSW5kZXhdLnRleHQgPSAnU29ycnksIHNvbWV0aGluZyB3ZW50IHdyb25nLiBQbGVhc2UgdHJ5IGFnYWluLic7XHJcbiAgICAgIHRoaXMuaXNBaUxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0sXHJcbiAgICBjb21wbGV0ZTogKCkgPT4geyB0aGlzLmlzQWlMb2FkaW5nID0gZmFsc2U7IH1cclxuICB9KTtcclxufVxyXG5cclxuY29weUZlZWRiYWNrOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxudXNlckluaXRpYWxzID0gJyc7XHJcbmNvcHlUb0NsaXBib2FyZCh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcclxuICB0aGlzLmNvcHlGZWVkYmFjayA9IG51bGw7XHJcbiAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5jb3B5RmVlZGJhY2sgPSAnQ29waWVkIHRvIGNsaXBib2FyZCEnO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY29weUZlZWRiYWNrID0gbnVsbCwgMjAwMCk7XHJcbiAgICB9KTtcclxuICB9LCAwKTtcclxufVxyXG5cclxuaXNDaGF0SGlzdG9yeU9wZW4gPSBmYWxzZTtcclxuY2hhdEhpc3RvcnlMaXN0OiB7IHNlc3Npb25faWQ6IHN0cmluZzsgc2Vzc2lvbl90aXRsZTogc3RyaW5nIH1bXSA9IFtdO1xyXG5pc0hpc3RvcnlMb2FkaW5nID0gZmFsc2U7XHJcbnNlbGVjdGVkSGlzdG9yeVNlc3Npb25JZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbnNlc3Npb25NZXNzYWdlczogeyBzZW5kZXI6IHN0cmluZzsgdGV4dDogc3RyaW5nIH1bXSA9IFtdO1xyXG5pc1Nlc3Npb25Mb2FkaW5nID0gZmFsc2U7XHJcbnByaXZhdGUgaGlzdG9yeVVzZXJJZCA9ICcnO1xyXG5cclxudG9nZ2xlQ2hhdEhpc3RvcnkoKTogdm9pZCB7XHJcbiAgdGhpcy5zaG93Q2hhdEhpc3RvcnkgPSAhdGhpcy5zaG93Q2hhdEhpc3Rvcnk7XHJcbiAgaWYgKHRoaXMuc2hvd0NoYXRIaXN0b3J5KSB7XHJcbiAgICB0aGlzLmxvYWRDaGF0SGlzdG9yeUxpc3QoKTtcclxuICB9XHJcbn1cclxuXHJcbmxvYWRIaXN0b3J5TGlzdCgpOiB2b2lkIHtcclxuICBpZiAoIXRoaXMuaGlzdG9yeVVzZXJJZCkgcmV0dXJuO1xyXG4gIHRoaXMuaXNIaXN0b3J5TG9hZGluZyA9IHRydWU7XHJcbiAgdGhpcy5hdWRpb1NlcnZpY2UuZ2V0Q2hhdEhpc3RvcnlMaXN0KHRoaXMuaGlzdG9yeVVzZXJJZCkuc3Vic2NyaWJlKHtcclxuICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmNoYXRIaXN0b3J5TGlzdCA9IChyZXM/LmRhdGE/LnNlc3Npb25zIHx8IFtdKS5tYXAoKHM6IGFueSkgPT4gKHtcclxuICAgICAgICBzZXNzaW9uX2lkOiBzLnNlc3Npb25faWQsXHJcbiAgICAgICAgc2Vzc2lvbl90aXRsZTogcy5zZXNzaW9uX3RpdGxlXHJcbiAgICAgIH0pKTtcclxuICAgICAgdGhpcy5pc0hpc3RvcnlMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9LFxyXG4gICAgZXJyb3I6ICgpID0+IHsgdGhpcy5pc0hpc3RvcnlMb2FkaW5nID0gZmFsc2U7IH1cclxuICB9KTtcclxufVxyXG5cclxuY2xlYXJDYXJkRmlsdGVyKCk6IHZvaWQge1xyXG4gIHRoaXMuc2VsZWN0ZWRDYXJkSWQgPSAnJztcclxuICB0aGlzLnNlbGVjdGVkQ2FyZE5hbWUgPSAnJztcclxuICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICB0aGlzLm9mZnNldCA9IDE7XHJcbiAgdGhpcy5mZXRjaENvbnZlcnNhdGlvbnMoKTtcclxufVxyXG5cclxub25DYXJkUm93Q2xpY2soaWQ6IGFueSwgbmFtZTogYW55KTogdm9pZCB7XHJcbiAgdGhpcy5zZWxlY3RlZENhcmRJZCA9IGlkIHx8ICcnO1xyXG4gIHRoaXMuc2VsZWN0ZWRDYXJkTmFtZSA9IGlkID8gJycgOiAobmFtZSB8fCAnJyk7XHJcbiAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgdGhpcy5vZmZzZXQgPSAxO1xyXG5cclxuICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgLi4udGhpcy5idWlsZFBheWxvYWQoKSxcclxuICAgIC8vIHNlYXJjaFZhbHVlOiB0aGlzLmNoYXRRdWVyeSB8fCAnJyxcclxuICAgIGxpbWl0OiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgX2lkOiB0aGlzLnNlbGVjdGVkQ2FyZElkID8gW3RoaXMuc2VsZWN0ZWRDYXJkSWRdIDogW10sXHJcbiAgICBuYW1lOiB0aGlzLnNlbGVjdGVkQ2FyZE5hbWUsXHJcbiAgICBvZmZzZXQ6IDBcclxuICB9O1xyXG4gIHRoaXMuaXNMb2FkaW5nQ29udmVyc2F0aW9ucyA9IHRydWU7XHJcbiAgdGhpcy5hdWRpb1NlcnZpY2UuZ2V0Q29udmVyc2F0aW9uc0xpc3QocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgbGlzdCA9IHJlcz8uZGF0YT8uZGF0YSB8fCByZXM/LmRhdGE/LmNvbnZlcnNhdGlvbnMgfHwgW107XHJcbiAgICAgIHRoaXMuY29udmVyc2F0aW9ucyA9IGxpc3QubWFwKChpdGVtOiBhbnkpID0+IHRoaXMubWFwQ29udmVyc2F0aW9uKGl0ZW0pKTtcclxuICAgICAgdGhpcy50b3RhbEl0ZW1zID0gcmVzPy5kYXRhPy5jb3VudCA/PyByZXM/LmRhdGE/LnBhZ2luYXRpb24/LnRvdGFsID8/IHRoaXMuY29udmVyc2F0aW9ucy5sZW5ndGg7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gdGhpcy50b3RhbEl0ZW1zID4gMTAgPyBbMTAsIDIwLCA1MCwgMTAwXSA6IFt0aGlzLnRvdGFsSXRlbXMgfHwgMTBdO1xyXG4gICAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5wYWdpbmF0aW9uU2l6ZXMuaW5jbHVkZXModGhpcy5wYWdlU2l6ZSkgPyB0aGlzLnBhZ2VTaXplIDogdGhpcy5wYWdpbmF0aW9uU2l6ZXNbMF07XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgICB0aGlzLnVwZGF0ZURpc3BsYXllZENvbnZlcnNhdGlvbnMoKTtcclxuICAgICAgdGhpcy5pc0xvYWRpbmdDb252ZXJzYXRpb25zID0gZmFsc2U7XHJcbiAgICAgIGlmICh0aGlzLmRpc3BsYXllZENvbnZlcnNhdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5kaXNwbGF5ZWRDb252ZXJzYXRpb25zWzBdO1xyXG4gICAgICAgIHRoaXMub3BlbklkID0gZmlyc3QuYXVkaW9JZDtcclxuICAgICAgICBpZiAoIXRoaXMuYWN0aXZlVGFiW2ZpcnN0LmF1ZGlvSWRdKSB0aGlzLmFjdGl2ZVRhYltmaXJzdC5hdWRpb0lkXSA9ICdzdW1tYXJ5JztcclxuICAgICAgICB0aGlzLmxvYWRDb252ZXJzYXRpb25EZXRhaWwoZmlyc3QpO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgdGhpcy5jb252ZXJzYXRpb25zID0gW107XHJcbiAgICAgIHRoaXMuZGlzcGxheWVkQ29udmVyc2F0aW9ucyA9IFtdO1xyXG4gICAgICB0aGlzLnRvdGFsSXRlbXMgPSAwO1xyXG4gICAgICB0aGlzLmlzTG9hZGluZ0NvbnZlcnNhdGlvbnMgPSBmYWxzZTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxubG9hZEhpc3RvcnlTZXNzaW9uKHNlc3Npb25JZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgaWYgKHRoaXMuc2VsZWN0ZWRIaXN0b3J5U2Vzc2lvbklkID09PSBzZXNzaW9uSWQpIHJldHVybjtcclxuICB0aGlzLnNlbGVjdGVkSGlzdG9yeVNlc3Npb25JZCA9IHNlc3Npb25JZDtcclxuICB0aGlzLnNlc3Npb25NZXNzYWdlcyA9IFtdO1xyXG4gIHRoaXMuaXNTZXNzaW9uTG9hZGluZyA9IHRydWU7XHJcbiAgdGhpcy5hdWRpb1NlcnZpY2UuZ2V0Q2hhdChzZXNzaW9uSWQpLnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgZGF0YSA9IHJlcz8uZGF0YSB8fCByZXM7XHJcbiAgICAgIGNvbnN0IGNvbnZlcnNhdGlvbnM6IGFueVtdID0gZGF0YT8uY29udmVyc2F0aW9uIHx8IFtdO1xyXG4gICAgICB0aGlzLnNlc3Npb25NZXNzYWdlcyA9IFtdO1xyXG4gICAgICBjb252ZXJzYXRpb25zLmZvckVhY2goKGM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChjLmh1bWFuKSB0aGlzLnNlc3Npb25NZXNzYWdlcy5wdXNoKHsgc2VuZGVyOiAndXNlcicsIHRleHQ6IGMuaHVtYW4gfSk7XHJcbiAgICAgICAgaWYgKGMuYWkpIHRoaXMuc2Vzc2lvbk1lc3NhZ2VzLnB1c2goeyBzZW5kZXI6ICdhc3Npc3RhbnQnLCB0ZXh0OiBjLmFpIH0pO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5pc1Nlc3Npb25Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvLyAgIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY2hhdC1oaXN0b3J5LWJvZHknKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgLy8gICBpZiAoYm9keSkgYm9keS5zY3JvbGxUb3AgPSBib2R5LnNjcm9sbEhlaWdodDtcclxuICAgICAgLy8gfSwgNTApO1xyXG4gICAgfSxcclxuICAgIGVycm9yOiAoKSA9PiB7IHRoaXMuaXNTZXNzaW9uTG9hZGluZyA9IGZhbHNlOyB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmNvbnRpbnVlSGlzdG9yeVNlc3Npb24oc2Vzc2lvbklkOiBzdHJpbmcpOiB2b2lkIHtcclxuICB0aGlzLmlzU2Vzc2lvbkxvYWRpbmcgPSB0cnVlO1xyXG4gIHRoaXMuYXVkaW9TZXJ2aWNlLmdldENoYXQoc2Vzc2lvbklkKS5zdWJzY3JpYmUoe1xyXG4gICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSByZXM/LmRhdGEgfHwgcmVzO1xyXG4gICAgICBjb25zdCBjb252ZXJzYXRpb25zOiBhbnlbXSA9IGRhdGE/LmNvbnZlcnNhdGlvbiB8fCBbXTtcclxuICAgICAgdGhpcy5tZXNzYWdlcyA9IFtdO1xyXG4gICAgICBjb252ZXJzYXRpb25zLmZvckVhY2goKGM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChjLmh1bWFuKSB0aGlzLm1lc3NhZ2VzLnB1c2goeyBzZW5kZXI6ICd1c2VyJywgdGV4dDogYy5odW1hbiB9KTtcclxuICAgICAgICBpZiAoYy5haSkgdGhpcy5tZXNzYWdlcy5wdXNoKHsgc2VuZGVyOiAnYXNzaXN0YW50JywgdGV4dDogYy5haSB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY2hhdFNlc3Npb25JZCA9IHNlc3Npb25JZDtcclxuICAgICAgdGhpcy5zZWxlY3RlZENoYXRJZCA9IHNlc3Npb25JZDtcclxuICAgICAgdGhpcy5pc1Nlc3Npb25Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNDaGF0SGlzdG9yeU9wZW4gPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEhpc3RvcnlTZXNzaW9uSWQgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlc3Npb25NZXNzYWdlcyA9IFtdO1xyXG4gICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcbiAgICB9LFxyXG4gICAgZXJyb3I6ICgpID0+IHsgdGhpcy5pc1Nlc3Npb25Mb2FkaW5nID0gZmFsc2U7IH1cclxuICB9KTtcclxufVxyXG5cclxuLy8g4pSA4pSAIGFpLWNoYXQgbWV0aG9kcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuc2VuZE1lc3NhZ2UoKTogdm9pZCB7XHJcbiAgaWYgKCF0aGlzLnVzZXJNZXNzYWdlLnRyaW0oKSB8fCB0aGlzLmlzVHlwaW5nKSByZXR1cm47XHJcbiAgY29uc3QgY3VycmVudFF1ZXJ5ID0gdGhpcy51c2VyTWVzc2FnZS50cmltKCk7XHJcblxyXG4gIHRoaXMubWVzc2FnZXMucHVzaCh7IHRleHQ6IGN1cnJlbnRRdWVyeSwgc2VuZGVyOiAndXNlcicsIHRpbWVzdGFtcDogbmV3IERhdGUoKSB9KTtcclxuICB0aGlzLnVzZXJNZXNzYWdlID0gJyc7XHJcbiAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xyXG5cclxuICBpZiAodGhpcy5zZWxlY3RlZENoYXRJZCA9PT0gbnVsbCkge1xyXG4gICAgdGhpcy5jaGF0SGlzdG9yeS51bnNoaWZ0KHtcclxuICAgICAgc2Vzc2lvbl9pZDogdGhpcy5jaGF0U2Vzc2lvbklkLFxyXG4gICAgICBzZXNzaW9uX3RpdGxlOiBjdXJyZW50UXVlcnkubGVuZ3RoID4gMzAgPyBjdXJyZW50UXVlcnkuc3Vic3RyaW5nKDAsIDMwKSArICcuLi4nIDogY3VycmVudFF1ZXJ5XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDaGF0SWQgPSB0aGlzLmNoYXRTZXNzaW9uSWQ7XHJcbiAgfVxyXG5cclxuICB0aGlzLmlzVHlwaW5nID0gdHJ1ZTtcclxuICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgdXNlcl9pZDogdGhpcy5jaGF0VXNlcklkLFxyXG4gICAgc2Vzc2lvbl9pZDogdGhpcy5jaGF0U2Vzc2lvbklkLFxyXG4gICAgc2Vzc2lvbl9kYXRlOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwgMTApLFxyXG4gICAgc2Vzc2lvbl90aW1lem9uZTogJ0FzaWEvS29sa2F0YScsXHJcbiAgICBtZXNzYWdlOiBjdXJyZW50UXVlcnksXHJcbiAgICBhbmFseXRpY3NUeXBlOiAnYXVkaW8nLFxyXG4gICAgY29uZmlnOiB7XHJcbiAgICAgIHNlbGVjdGVkX21vZGVsOiB0aGlzLnNlbGVjdGVkTW9kZWwsXHJcbiAgICAgIHNlbGVjdGVkX3N0b3JlczogW1xyXG4gICAgICAgIFwiTEtTVDExNjZcIixcIkxLU1QxMTk5XCIsXCJMS1NUNzgwXCIsXCJMS1NUMTc3MFwiLFwiTEtTVDMzMlwiLFxyXG4gICAgICAgIFwiTEtTVDE2NzNcIixcIkxLU1QyOTNcIixcIkxLU1QxODYxXCIsXCJMS1NUMTk2N1wiLFwiTEtTVDI3NFwiLFxyXG4gICAgICAgIFwiTEtTVDAzXCIsXCJMS1NUMzMzXCIsXCJMS1NUNTM0XCIsXCJMS1NUNDk2XCIsXCJMS1NUNzc5XCJcclxuICAgICAgXSxcclxuICAgICAgZGF0ZV9yYW5nZTogeyBzdGFydDogXCIyMDI2LTAzLTAxXCIsIGVuZDogXCIyMDI2LTAzLTI4XCIgfSxcclxuICAgICAgc2VsZWN0ZWRfcHJvZHVjdHM6IFsnQXVkaW8nXVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGNvbnN0IGFzc2lzdGFudE1zZzogYW55ID0geyBzZW5kZXI6ICdhc3Npc3RhbnQnLCB0ZXh0OiAnJywgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLCBzdHJlYW1pbmc6IHRydWUgfTtcclxuICBsZXQgcGxhY2Vob2xkZXJBZGRlZCA9IGZhbHNlO1xyXG5cclxuICB0aGlzLmF1ZGlvU2VydmljZS5jaGF0U3RyZWFtKHBheWxvYWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgbmV4dDogKGNodW5rOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKCFwbGFjZWhvbGRlckFkZGVkKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlcy5wdXNoKGFzc2lzdGFudE1zZyk7XHJcbiAgICAgICAgdGhpcy5pc1R5cGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHBsYWNlaG9sZGVyQWRkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGFzc2lzdGFudE1zZy50ZXh0ICs9IGNodW5rO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcclxuICAgIH0sXHJcbiAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICBpZiAoIXBsYWNlaG9sZGVyQWRkZWQpIHsgdGhpcy5tZXNzYWdlcy5wdXNoKGFzc2lzdGFudE1zZyk7IHRoaXMuaXNUeXBpbmcgPSBmYWxzZTsgfVxyXG4gICAgICBhc3Npc3RhbnRNc2cudGV4dCA9IGFzc2lzdGFudE1zZy50ZXh0IHx8ICdTb21ldGhpbmcgd2VudCB3cm9uZy4gUGxlYXNlIHRyeSBhZ2Fpbi4nO1xyXG4gICAgICBhc3Npc3RhbnRNc2cuc3RyZWFtaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sXHJcbiAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICBhc3Npc3RhbnRNc2cuc3RyZWFtaW5nID0gZmFsc2U7XHJcbiAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5jaGF0SGlzdG9yeS5maW5kKGMgPT4gYy5zZXNzaW9uX2lkID09PSB0aGlzLnNlbGVjdGVkQ2hhdElkKTtcclxuICAgICAgaWYgKGVudHJ5KSBlbnRyeS5tZXNzYWdlcyA9IFsuLi50aGlzLm1lc3NhZ2VzXTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5uZXdDaGF0KCk6IHZvaWQge1xyXG4gIHRoaXMubWVzc2FnZXMgPSBbXTtcclxuICB0aGlzLnNlbGVjdGVkQ2hhdElkID0gbnVsbDtcclxuICB0aGlzLnVzZXJNZXNzYWdlID0gJyc7XHJcbiAgdGhpcy5jaGF0U2Vzc2lvbklkID0gYEFVRElPXyR7RGF0ZS5ub3coKX1gO1xyXG4gIHRoaXMubG9hZENoYXRIaXN0b3J5TGlzdCgpO1xyXG59XHJcblxyXG5sb2FkQ2hhdChzZXNzaW9uSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gIGlmICh0aGlzLnNlbGVjdGVkQ2hhdElkID09PSBzZXNzaW9uSWQpIHJldHVybjtcclxuICB0aGlzLnNlbGVjdGVkQ2hhdElkID0gc2Vzc2lvbklkO1xyXG4gIHRoaXMuY2hhdFNlc3Npb25JZCA9IHNlc3Npb25JZDtcclxuICB0aGlzLm1lc3NhZ2VzID0gW107XHJcbiAgdGhpcy5pc1R5cGluZyA9IGZhbHNlO1xyXG5cclxuICBjb25zdCBjYWNoZWQgPSB0aGlzLmNoYXRIaXN0b3J5LmZpbmQoYyA9PiBjLnNlc3Npb25faWQgPT09IHNlc3Npb25JZCk7XHJcbiAgaWYgKGNhY2hlZD8ubWVzc2FnZXMpIHtcclxuICAgIHRoaXMubWVzc2FnZXMgPSBbLi4uY2FjaGVkLm1lc3NhZ2VzXTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIHRoaXMuaXNDaGF0TG9hZGluZyA9IHRydWU7XHJcbiAgdGhpcy5hdWRpb1NlcnZpY2UuZ2V0Q2hhdChzZXNzaW9uSWQpLnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgZGF0YSA9IHJlcz8uZGF0YSB8fCByZXM7XHJcbiAgICAgIGNvbnN0IGNvbnZlcnNhdGlvbnM6IGFueVtdID0gZGF0YT8uY29udmVyc2F0aW9uIHx8IFtdO1xyXG4gICAgICB0aGlzLm1lc3NhZ2VzID0gW107XHJcbiAgICAgIGNvbnZlcnNhdGlvbnMuZm9yRWFjaCgoYzogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGMuaHVtYW4pIHRoaXMubWVzc2FnZXMucHVzaCh7IHNlbmRlcjogJ3VzZXInLCB0ZXh0OiBjLmh1bWFuIH0pO1xyXG4gICAgICAgIGlmIChjLmFpKSB0aGlzLm1lc3NhZ2VzLnB1c2goeyBzZW5kZXI6ICdhc3Npc3RhbnQnLCB0ZXh0OiBjLmFpIH0pO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKGNhY2hlZCkgY2FjaGVkLm1lc3NhZ2VzID0gWy4uLnRoaXMubWVzc2FnZXNdO1xyXG4gICAgICB0aGlzLmlzQ2hhdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcbiAgICB9LFxyXG4gICAgZXJyb3I6ICgpID0+IHsgdGhpcy5pc0NoYXRMb2FkaW5nID0gZmFsc2U7IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTsgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5sb2FkQ2hhdEhpc3RvcnlMaXN0KCk6IHZvaWQge1xyXG4gIGlmICghdGhpcy5jaGF0VXNlcklkKSByZXR1cm47XHJcbiAgdGhpcy5pc0hpc3RvcnlMb2FkaW5nID0gdHJ1ZTtcclxuICB0aGlzLmF1ZGlvU2VydmljZS5nZXRDaGF0SGlzdG9yeUxpc3QodGhpcy5jaGF0VXNlcklkKS5zdWJzY3JpYmUoe1xyXG4gICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuY2hhdEhpc3RvcnkgPSAocmVzPy5kYXRhPy5zZXNzaW9ucyB8fCBbXSkubWFwKChzOiBhbnkpID0+ICh7XHJcbiAgICAgICAgc2Vzc2lvbl9pZDogcy5zZXNzaW9uX2lkLFxyXG4gICAgICAgIHNlc3Npb25fdGl0bGU6IHMuc2Vzc2lvbl90aXRsZVxyXG4gICAgICB9KSk7XHJcbiAgICAgIHRoaXMuaXNIaXN0b3J5TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LFxyXG4gICAgZXJyb3I6ICgpID0+IHsgdGhpcy5pc0hpc3RvcnlMb2FkaW5nID0gZmFsc2U7IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTsgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5wcml2YXRlIHNjcm9sbFRvQm90dG9tKCk6IHZvaWQge1xyXG4gIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZWwgPSB0aGlzLnNjcm9sbENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgaWYgKGVsKSBlbC5zY3JvbGxUb3AgPSBlbC5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGNhdGNoIHt9XHJcbiAgfSwgMCk7XHJcbn1cclxuXHJcbmdvQmFja1RvRmlsdGVycygpOiB2b2lkIHtcclxuICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9tYW5hZ2UvYWktYXVkaW8vZmlsdGVycyddKTtcclxufVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJhdWRpby1wYWdlXCI+XG5cbiAgPCEtLSDilIDilIAgSGVhZGVyIFJvdyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgLS0+XG4gIDxkaXYgY2xhc3M9XCJoZWFkZXItcm93LWNvbnRhaW5lciBtYi00XCIgKm5nSWY9XCJjb2hvcnRPcHRpb25zLmxlbmd0aCA+IDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgPCEtLSBDdXN0b20gU2luZ2xlLXNlbGVjdCBDb2hvcnQgRHJvcGRvd24gLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2hvcnQtZHJvcGRvd25cIiBbY2xhc3Mub3Blbl09XCJpc0NvaG9ydERyb3Bkb3duT3BlblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2hvcnQtZHJvcGRvd24tdHJpZ2dlclwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaXNDb2hvcnREcm9wZG93bk9wZW4gPSAhaXNDb2hvcnREcm9wZG93bk9wZW47ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgZmlsdGVyVHlwZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCIgW2NsYXNzLnJvdGF0ZV09XCJpc0NvaG9ydERyb3Bkb3duT3BlblwiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUgNy41TDEwIDEyLjVMMTUgNy41XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29ob3J0LWRyb3Bkb3duLW1lbnVcIiAqbmdJZj1cImlzQ29ob3J0RHJvcGRvd25PcGVuXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvaG9ydC1vcHRpb25cIiAqbmdGb3I9XCJsZXQgb3B0IG9mIGNvaG9ydE9wdGlvbnNcIiBbY2xhc3Muc2VsZWN0ZWRdPVwib3B0ID09PSBmaWx0ZXJUeXBlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdENvaG9ydFR5cGUob3B0KVwiPlxuICAgICAgICAgICAgICB7eyBvcHQgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGg0IGNsYXNzPVwic2VjdGlvbi10aXRsZSBtYi0wXCI+Q29ob3J0IEFuYWx5c2lzPC9oND5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInRvdGFsLWF1ZGlvLWxhYmVsXCI+VG90YWwgQXVkaW8gQXZhaWxhYmxlIDxzdHJvbmc+e3sgdG90YWxBdWRpbyB9fTwvc3Ryb25nPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIOKUgOKUgCBTdGF0cyBHcmlkIChEeW5hbWljKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgLS0+XG4gIDxkaXYgY2xhc3M9XCJzdGF0cy1ncmlkIG1iLTRcIj5cblxuICAgIDwhLS0gTG9hZGVyIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xvYWRpbmdDYXJkc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInN0YXQtY2FyZFwiICpuZ0Zvcj1cImxldCBzIG9mIFsxLDIsMyw0LDUsNl1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cInN0YXQtY2FyZFwiICpuZ0Zvcj1cImxldCBjYXJkIG9mIGNvaG9ydENhcmRzXCIgW2hpZGRlbl09XCJpc0xvYWRpbmdDYXJkc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJzdGF0LWNhcmQtaGVhZGVyIHRleHQtY2FwaXRhbGl6ZSBlbGxpcHNlMSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvbkNhcmRSb3dDbGljaygnJywgY2FyZC5uYW1lKVwiPlxuICB7eyBjYXJkLm5hbWUgfX1cbiAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGF0LWNhcmQtYm9keVwiPlxuXG4gICAgICAgIDwhLS0gQk9PTEVBTl9CQVNLRVQ6IGxhYmVsICsgcmVzcG9uc2VzICsgc2NvcmUgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJkLnR5cGUgPT09ICdCT09MRUFOX0JBU0tFVCdcIj5cbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJjb2hvcnQtdGFibGUgdy0xMDBcIj5cbiAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2YgY2FyZD8uYm9vbGVhblJvd3NcIj5cbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgdGV4dC1jYXBpdGFsaXplIHRleHQtZGVjb3JhdGlvbi11bmRlcmxpbmUgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25DYXJkUm93Q2xpY2soJycsIHJvdz8ubGFiZWwpXCI+e3sgcm93Py5sYWJlbC5zcGxpdCgnXycpLmpvaW4oJyAnKS50b0xvd2VyQ2FzZSgpIH19PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IHJvdz8ucmVzcG9uc2VzIH19PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IHJvdz8uc2NvcmUgfX0lPC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBOVU1FUklDX1NDQUxBUjogdG90YWwgKyBhdmcgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJkLnR5cGUgPT09ICdOVU1FUklDX1NDQUxBUicgfHwgY2FyZC50eXBlID09PSAnTlVNRVJJQ19BUlJBWSdcIj5cbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJjb2hvcnQtdGFibGUgdy0xMDBcIj5cbiAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0ZD5Ub3RhbDwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj57eyBjYXJkLm51bWVyaWNEYXRhPy50b3RhbCB9fTwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGQ+QXZlcmFnZTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj57eyBjYXJkLm51bWVyaWNEYXRhPy5hdmcgfX08L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIFNVQkpFQ1RJVkU6IGlkICsgcmVhc29uaW5nIHRleHQgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJkLnR5cGUgPT09ICdTVUJKRUNUSVZFJ1wiPlxuICAgICAgICAgIDx0YWJsZSBjbGFzcz1cImNvaG9ydC10YWJsZSB3LTEwMFwiPlxuICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBjYXJkLnN1YmplY3RpdmVSb3dzXCI+XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1ub3dyYXBcIj57eyByb3c/LnN0b3JlX2lkIHx8ICfigJQnIH19PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiPnt7IHJvdz8uZGF0ZSB8fCAn4oCUJyB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1wcmltYXJ5IHRleHQtY2FwaXRhbGl6ZSB0ZXh0LWRlY29yYXRpb24tdW5kZXJsaW5lIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uQ2FyZFJvd0NsaWNrKHJvdz8uX2lkLCcnKVwiIFtuZ2JUb29sdGlwXT1cInJvdz8ucmVhc29uaW5nIHx8ICdObyBkZXNjcmlwdGlvbiBhdmFpbGFibGUnXCIgcGxhY2VtZW50PVwidG9wXCIgY29udGFpbmVyPVwiYm9keVwiIHRvb2x0aXBDbGFzcz1cImF1ZGlvLXRvb2x0aXBcIj57eyByb3c/LnJlYXNvbmluZyAmJiByb3c/LnJlYXNvbmluZyAhPT0gJycgPyByb3c/LnJlYXNvbmluZz8uc2xpY2UoMCwgMjUpICsgJy4uLicgOiAnTm8gcmVhc29uaW5nIGF2YWlsYWJsZScgfX08L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhcmQudHlwZSA9PT0gJ1NVQkpFQ1RJVkVfQ09VTlQnXCI+XG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwiY29ob3J0LXRhYmxlIHctMTAwXCI+XG4gICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIGNhcmQuc3ViamVjdGl2ZVJvd3NcIj5cbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LW5vd3JhcCBmdy1ib2xkXCJcbiAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInJvdz8uX2lkXCIgcGxhY2VtZW50PVwidG9wXCIgY29udGFpbmVyPVwiYm9keVwiIHRvb2x0aXBDbGFzcz1cImF1ZGlvLXRvb2x0aXBcIj57eyByb3c/Ll9pZCB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIFtuZ2JUb29sdGlwXT1cInJvdz8ucmVhc29uaW5nIHx8ICdObyBkZXNjcmlwdGlvbiBhdmFpbGFibGUnXCIgcGxhY2VtZW50PVwidG9wXCIgY29udGFpbmVyPVwiYm9keVwiIHRvb2x0aXBDbGFzcz1cImF1ZGlvLXRvb2x0aXBcIj57eyByb3c/LnJlYXNvbmluZyAmJiByb3c/LnJlYXNvbmluZyAhPT0gJycgPyByb3c/LnJlYXNvbmluZz8uc2xpY2UoMCwgMjUpICA6ICdObyByZWFzb25pbmcgYXZhaWxhYmxlJyB9fTwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gVU5JUVVFX1BJVENIRVM6IHBpdGNoSWQgKyBkZXNjcmlwdGlvbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhcmQudHlwZSA9PT0gJ1VOSVFVRV9QSVRDSEVTJ1wiPlxuICAgICAgICAgIDx0YWJsZSBjbGFzcz1cImNvaG9ydC10YWJsZSB3LTEwMFwiPlxuICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHBpdGNoIG9mIGNhcmQucGl0Y2hSb3dzXCI+XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1ub3dyYXAgZnctYm9sZFwiXG4gICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJwaXRjaC5pZFwiIHBsYWNlbWVudD1cInRvcFwiIGNvbnRhaW5lcj1cImJvZHlcIiB0b29sdGlwQ2xhc3M9XCJhdWRpby10b29sdGlwXCI+e3sgcGl0Y2guaWQgfX08L3RkPlxuICAgICAgICAgICAgICAgIDx0ZCBbbmdiVG9vbHRpcF09XCJwaXRjaC5kZXNjIHx8ICdObyBkZXNjcmlwdGlvbiBhdmFpbGFibGUnXCIgcGxhY2VtZW50PVwidG9wXCIgY29udGFpbmVyPVwiYm9keVwiIHRvb2x0aXBDbGFzcz1cImF1ZGlvLXRvb2x0aXBcIj57eyBwaXRjaC5kZXNjID8gcGl0Y2guZGVzYy5zbGljZSgwLCA3NSkgKyAnLi4uJyA6ICdObyBkZXNjcmlwdGlvbiBhdmFpbGFibGUnIH19PC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuXG4gIDwhLS0g4pSA4pSAIENvbnZlcnNhdGlvbiBBbmFseXNpcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgLS0+XG4gIDxkaXYgY2xhc3M9XCJjb252ZXJzYXRpb24tYXJlYSBiZy13aGl0ZSBwLTQgcm91bmRlZC0zXCI+XG5cbiAgICA8IS0tIFNlY3Rpb24gSGVhZGVyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHB4LTIgYm90dG9tLWJvcmRlciBtYi00XCI+XG4gICAgICA8aDUgY2xhc3M9XCJzZWN0aW9uLXRpdGxlICBtYi0wXCI+Q29udmVyc2F0aW9uIEFuYWx5c2lzPC9oNT5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJleHBvcnQtYnRuIGJ0biBidG4tZGVmYXVsdCBteC0xIGJ0bi1vdXRsaW5lIGJnLXdoaXRlIGJ0bi1vdXRsaW5lLWRlZmF1bHRcIiAoY2xpY2spPVwiZXhwb3J0RGF0YSgpXCIgbmdiVG9vbHRpcD1cIkV4cG9ydCBjb252ZXJzYXRpb24gZGF0YSB0byBDU1ZcIiBwbGFjZW1lbnQ9XCJ0b3BcIiBbZGlzYWJsZWRdPVwidG90YWxJdGVtcyA9PT0gMFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImV4cG9ydC10ZXh0XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgZD1cIk04LjEyNSAxMy4xMjVIMTYuMzU2M0wxNC43NDM4IDE0Ljc0MzhMMTUuNjI1IDE1LjYyNUwxOC43NSAxMi41TDE1LjYyNSA5LjM3NUwxNC43NDM4IDEwLjI1NjJMMTYuMzU2MyAxMS44NzVIOC4xMjVWMTMuMTI1WlwiXG4gICAgICAgICAgICAgIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTEzLjc1IDguNzUwMDFWNi4yNTAwMUMxMy43NTA1IDYuMTY3NzYgMTMuNzM0NyA2LjA4NjIyIDEzLjcwMzYgNi4wMTAwN0MxMy42NzI1IDUuOTMzOTIgMTMuNjI2NyA1Ljg2NDY2IDEzLjU2ODggNS44MDYyNkw5LjE5Mzc1IDEuNDMxMjZDOS4xMzUzNSAxLjM3MzMzIDkuMDY2MDkgMS4zMjc1MSA4Ljk4OTk0IDEuMjk2NEM4LjkxMzc5IDEuMjY1MyA4LjgzMjI1IDEuMjQ5NTMgOC43NSAxLjI1MDAxSDIuNUMyLjE2ODQ4IDEuMjUwMDEgMS44NTA1NCAxLjM4MTcxIDEuNjE2MTIgMS42MTYxM0MxLjM4MTcgMS44NTA1NSAxLjI1IDIuMTY4NDkgMS4yNSAyLjUwMDAxVjE3LjVDMS4yNSAxNy44MzE1IDEuMzgxNyAxOC4xNDk1IDEuNjE2MTIgMTguMzgzOUMxLjg1MDU0IDE4LjYxODMgMi4xNjg0OCAxOC43NSAyLjUgMTguNzVIMTIuNUMxMi44MzE1IDE4Ljc1IDEzLjE0OTUgMTguNjE4MyAxMy4zODM5IDE4LjM4MzlDMTMuNjE4MyAxOC4xNDk1IDEzLjc1IDE3LjgzMTUgMTMuNzUgMTcuNVYxNi4yNUgxMi41VjE3LjVIMi41VjIuNTAwMDFINy41VjYuMjUwMDFDNy41IDYuNTgxNTMgNy42MzE3IDYuODk5NDcgNy44NjYxMiA3LjEzMzg5QzguMTAwNTQgNy4zNjgzMSA4LjQxODQ4IDcuNTAwMDEgOC43NSA3LjUwMDAxSDEyLjVWOC43NTAwMUgxMy43NVpNOC43NSA2LjI1MDAxVjIuNzU2MjZMMTIuMjQzOCA2LjI1MDAxSDguNzVaXCJcbiAgICAgICAgICAgICAgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICA8L3N2Zz4gRXhwb3J0PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIOKUgOKUgCBUYW5nbyBBSSBDaGF0IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY2hhdC1wYWdlXCI+XG4gIDxkaXYgY2xhc3M9XCJjaGF0LWxheW91dC1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2hhdC1tYWluXCI+XG4gICAgICA8aGVhZGVyIGNsYXNzPVwiY2hhdC1oZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci10b3BcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWNvbnRlbnQgdGV4dC1jZW50ZXJcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2hlYWRlcj5cblxuICAgICAgPCEtLSBNZXNzYWdlIEFyZWEgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2hhdC1tZXNzYWdlcy1hcmVhIHNjcm9sbGJhci1oaWRkZW5cIiAjc2Nyb2xsQ29udGFpbmVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHB5LTRcIiAqbmdJZj1cImlzQ2hhdExvYWRpbmdcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbXV0ZWRcIj5Mb2FkaW5nIGNvbnZlcnNhdGlvbi4uLjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG1zZyBvZiBtZXNzYWdlc1wiIGNsYXNzPVwibWVzc2FnZS13cmFwcGVyXCIgW2NsYXNzLnVzZXJdPVwibXNnLnNlbmRlciA9PT0gJ3VzZXInXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2VcIiBbY2xhc3MuYXNzaXN0YW50XT1cIm1zZy5zZW5kZXIgPT09ICdhc3Npc3RhbnQnXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZS1hdmF0YXJcIiAqbmdJZj1cIm1zZy5zZW5kZXIgPT09ICdhc3Npc3RhbnQnXCI+XG4gICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHJ4PVwiMTJcIiBmaWxsPVwiI0VBRjhGRlwiIC8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNS45OTQxIDE0LjU1NjFMMTUuNDU2NSAxNC4wMTg1TDkuNjYzIDguMjI1TDExLjM4MTYgNi41MDY0TDExLjc5MzQgNi4wOTM4QzExLjgzMjcgNi4wNTM5NSAxMS44NTQ5IDYuMDAwMzIgMTEuODU1MiA1Ljk0MjhDMTEuODU1IDUuOTE2NjggMTEuODQ5NCA1Ljg4OTMxIDExLjgzODcgNS44NjM4MUMxMS44MjggNS44MzgzIDExLjgxMjMgNS44MTUxNyAxMS43OTI2IDUuNzk1NzJMMTEuMzggNS4zODMxMkw5LjU1NzQgMy41NTcyOUw5LjE0NDggMy4xNDQ2OUM5LjEyNTMgMy4xMjQ4NSA5LjEwMjEgMy4xMDkwOSA5LjA3NjQgMy4wOTgzM0M5LjA1MDggMy4wODc1NyA5LjAyMzIgMy4wODIwMyA4Ljk5NTQgMy4wODIwM0M4Ljk2NzYgMy4wODIwMyA4Ljk0IDMuMDg3NTcgOC45MTQ0IDMuMDk4MzNDOC44ODg3IDMuMTA5MDkgOC44NjU1IDMuMTI0ODUgOC44NDU5IDMuMTQ0NjlMOC40MzMzIDMuNTU4MUw2LjE5OTggNS43OTE2NkM2LjE4IDUuODExMDkgNi4xNjQyIDUuODM0MjggNi4xNTM1IDUuODU5ODhDNi4xNDI3IDUuODg1NDcgNi4xMzcyIDUuOTEyOTQgNi4xMzcyIDUuOTQwN0M2LjEzNzIgNS45Njg0NiA2LjE0MjcgNS45OTU5MyA2LjE1MzUgNi4wMjE1MkM2LjE2NDIgNi4wNDcxMiA2LjE4IDYuMDcwMzEgNi4xOTk4IDYuMDg5NzRMOC4zMzM0IDguMjI0MkwyLjUzOTIgMTQuMDE4NUwyLjAwNCAxNC41NTYxQzEuOTY0MyAxNC41OTU1IDEuOTQxOCAxNC42NDg5IDEuOTQxNCAxNC43MDQ4QzEuOTQxNiAxNC43NTg4IDEuOTYyMiAxNC44MTA3IDEuOTk5MSAxNC44NTAyQzIuMDE4NyAxNC44NzEyIDIuMDQyNSAxNC44ODc5IDIuMDY4OSAxNC44OTk0QzIuMDk1MyAxNC45MTA4IDIuMTIzOCAxNC45MTY4IDIuMTUyNiAxNC45MTY4SDcuMzY0NUM3LjQyMDQgMTQuOTE2NiA3LjQ3NCAxNC44OTQyIDcuNTEzNiAxNC44NTQ3QzcuNTUzMSAxNC44MTUxIDcuNTc1NCAxNC43NjE1IDcuNTc1NyAxNC43MDU2VjE0LjE4NzRDNy41NzU3IDE0LjEzMTMgNy41NTM0IDE0LjA3NzUgNy41MTM5IDE0LjAzNzhDNy40NzQzIDEzLjk5ODEgNy40MjA2IDEzLjk3NTYgNy4zNjQ1IDEzLjk3NTRIMy45MTI2TDguOTk3OCA4Ljg5MDJMMTQuMDgzIDEzLjk3NTRIMTAuNjAxMUMxMC41NDUgMTMuOTc1NiAxMC40OTEzIDEzLjk5ODEgMTAuNDUxNyAxNC4wMzc4QzEwLjQxMjIgMTQuMDc3NSAxMC4zODk5IDE0LjEzMTMgMTAuMzg5OSAxNC4xODc0VjE0LjcwNTZDMTAuMzg5OCAxNC43MzM0IDEwLjM5NTMgMTQuNzYxIDEwLjQwNjEgMTQuNzg2N0MxMC40MTY4IDE0LjgxMjMgMTAuNDMyNiAxNC44MzU2IDEwLjQ1MjUgMTQuODU1QzEwLjQ5MTkgMTQuODk0NCAxMC41NDU0IDE0LjkxNjYgMTAuNjAxMSAxNC45MTY4SDE1Ljg0NDdDMTUuODczNiAxNC45MTY5IDE1LjkwMjMgMTQuOTExIDE1LjkyODggMTQuODk5NUMxNS45NTU0IDE0Ljg4ODEgMTUuOTc5MyAxNC44NzEzIDE1Ljk5OSAxNC44NTAyQzE2LjAzNyAxNC44MTAzIDE2LjA1NzcgMTQuNzU3MiAxNi4wNTY4IDE0LjcwMjJDMTYuMDU1OSAxNC42NDcxIDE2LjAzMzQgMTQuNTk0NyAxNS45OTQxIDE0LjU1NjFaTTguOTk0NiA0LjMyNjQ1TDEwLjYxMzMgNS45NDUxN0w4Ljk5ODYgNy41NTk4TDcuMzc5OSA1Ljk0MTExTDguOTk0NiA0LjMyNjQ1WlwiIGZpbGw9XCIjMDBBM0ZGXCIvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2UtY29udGVudFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZS1idWJibGVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwicGFyc2VNYXJrZG93bihtc2cudGV4dClcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zZy1zZW5kZXItdGFnXCIgKm5nSWY9XCJtc2cuc2VuZGVyID09PSAndXNlcidcIj57eyB1c2VySW5pdGlhbHMgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZS1hY3Rpb25zXCIgKm5nSWY9XCJtc2cuc2VuZGVyID09PSAnYXNzaXN0YW50JyAmJiBtc2cudGV4dFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY29weVwiIChjbGljayk9XCJjb3B5VG9DbGlwYm9hcmQobXNnLnRleHQpXCIgdGl0bGU9XCJDb3B5IHRvIGNsaXBib2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzLjMzMzMgMTMuMzMzM1YxNi42NjY3QzEzLjMzMzMgMTcuNTg3MiAxMi41ODcyIDE4LjMzMzMgMTEuNjY2NyAxOC4zMzMzSDMuMzMzMzNDMi40MTI4NiAxOC4zMzMzIDEuNjY2NjcgMTcuNTg3MiAxLjY2NjY3IDE2LjY2NjdWOC4zMzMzM0MxLjY2NjY3IDcuNDEyODYgMi40MTI4NiA2LjY2NjY3IDMuMzMzMzMgNi42NjY2N0g2LjY2NjY3TTguMzMzMzMgMy4zMzMzM1YxMS42NjY3QzguMzMzMzMgMTIuNTg3MiA5LjA3OTUzIDEzLjMzMzMgMTAgMTMuMzMzM0gxNi42NjY3QzE3LjU4NzIgMTMuMzMzMyAxOC4zMzMzIDEyLjU4NzIgMTguMzMzMyAxMS42NjY3VjMuMzMzMzNDMTguMzMzMyAyLjQxMjg2IDE3LjU4NzIgMS42NjY2NyAxNi42NjY3IDEuNjY2NjdIMTBDOS4wNzk1MyAxLjY2NjY3IDguMzMzMzMgMi40MTI4NiA4LjMzMzMzIDMuMzMzMzNaXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBUeXBpbmcgSW5kaWNhdG9yIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZS13cmFwcGVyIGFzc2lzdGFudFwiICpuZ0lmPVwiaXNUeXBpbmdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZSBhc3Npc3RhbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlLWF2YXRhclwiPlxuICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiByeD1cIjEyXCIgZmlsbD1cIiNFQUY4RkZcIiAvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUuOTk0MSAxNC41NTYxTDE1LjQ1NjUgMTQuMDE4NUw5LjY2MyA4LjIyNUwxMS4zODE2IDYuNTA2NEwxMS43OTM0IDYuMDkzOEMxMS44MzI3IDYuMDUzOTUgMTEuODU0OSA2LjAwMDMyIDExLjg1NTIgNS45NDI4QzExLjg1NSA1LjkxNjY4IDExLjg0OTQgNS44ODkzMSAxMS44Mzg3IDUuODYzODFDMTEuODI4IDUuODM4MyAxMS44MTIzIDUuODE1MTcgMTEuNzkyNiA1Ljc5NTcyTDExLjM4IDUuMzgzMTJMOS41NTc0IDMuNTU3MjlMOS4xNDQ4IDMuMTQ0NjlDOS4xMjUzIDMuMTI0ODUgOS4xMDIxIDMuMTA5MDkgOS4wNzY0IDMuMDk4MzNDOS4wNTA4IDMuMDg3NTcgOS4wMjMyIDMuMDgyMDMgOC45OTU0IDMuMDgyMDNDOC45Njc2IDMuMDgyMDMgOC45NCAzLjA4NzU3IDguOTE0NCAzLjA5ODMzQzguODg4NyAzLjEwOTA5IDguODY1NSAzLjEyNDg1IDguODQ1OSAzLjE0NDY5TDguNDMzMyAzLjU1ODFMNi4xOTk4IDUuNzkxNjZDNi4xOCA1LjgxMTA5IDYuMTY0MiA1LjgzNDI4IDYuMTUzNSA1Ljg1OTg4QzYuMTQyNyA1Ljg4NTQ3IDYuMTM3MiA1LjkxMjk0IDYuMTM3MiA1Ljk0MDdDNi4xMzcyIDUuOTY4NDYgNi4xNDI3IDUuOTk1OTMgNi4xNTM1IDYuMDIxNTJDNi4xNjQyIDYuMDQ3MTIgNi4xOCA2LjA3MDMxIDYuMTk5OCA2LjA4OTc0TDguMzMzNCA4LjIyNDJMMi41MzkyIDE0LjAxODVMMi4wMDQgMTQuNTU2MUMxLjk2NDMgMTQuNTk1NSAxLjk0MTggMTQuNjQ4OSAxLjk0MTQgMTQuNzA0OEMxLjk0MTYgMTQuNzU4OCAxLjk2MjIgMTQuODEwNyAxLjk5OTEgMTQuODUwMkMyLjAxODcgMTQuODcxMiAyLjA0MjUgMTQuODg3OSAyLjA2ODkgMTQuODk5NEMyLjA5NTMgMTQuOTEwOCAyLjEyMzggMTQuOTE2OCAyLjE1MjYgMTQuOTE2OEg3LjM2NDVDNy40MjA0IDE0LjkxNjYgNy40NzQgMTQuODk0MiA3LjUxMzYgMTQuODU0N0M3LjU1MzEgMTQuODE1MSA3LjU3NTQgMTQuNzYxNSA3LjU3NTcgMTQuNzA1NlYxNC4xODc0QzcuNTc1NyAxNC4xMzEzIDcuNTUzNCAxNC4wNzc1IDcuNTEzOSAxNC4wMzc4QzcuNDc0MyAxMy45OTgxIDcuNDIwNiAxMy45NzU2IDcuMzY0NSAxMy45NzU0SDMuOTEyNkw4Ljk5NzggOC44OTAyTDE0LjA4MyAxMy45NzU0SDEwLjYwMTFDMTAuNTQ1IDEzLjk3NTYgMTAuNDkxMyAxMy45OTgxIDEwLjQ1MTcgMTQuMDM3OEMxMC40MTIyIDE0LjA3NzUgMTAuMzg5OSAxNC4xMzEzIDEwLjM4OTkgMTQuMTg3NFYxNC43MDU2QzEwLjM4OTggMTQuNzMzNCAxMC4zOTUzIDE0Ljc2MSAxMC40MDYxIDE0Ljc4NjdDMTAuNDE2OCAxNC44MTIzIDEwLjQzMjYgMTQuODM1NiAxMC40NTI1IDE0Ljg1NUMxMC40OTE5IDE0Ljg5NDQgMTAuNTQ1NCAxNC45MTY2IDEwLjYwMTEgMTQuOTE2OEgxNS44NDQ3QzE1Ljg3MzYgMTQuOTE2OSAxNS45MDIzIDE0LjkxMSAxNS45Mjg4IDE0Ljg5OTVDMTUuOTU1NCAxNC44ODgxIDE1Ljk3OTMgMTQuODcxMyAxNS45OTkgMTQuODUwMkMxNi4wMzcgMTQuODEwMyAxNi4wNTc3IDE0Ljc1NzIgMTYuMDU2OCAxNC43MDIyQzE2LjA1NTkgMTQuNjQ3MSAxNi4wMzM0IDE0LjU5NDcgMTUuOTk0MSAxNC41NTYxWk04Ljk5NDYgNC4zMjY0NUwxMC42MTMzIDUuOTQ1MTdMOC45OTg2IDcuNTU5OEw3LjM3OTkgNS45NDExMUw4Ljk5NDYgNC4zMjY0NVpcIiBmaWxsPVwiIzAwQTNGRlwiLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlLWNvbnRlbnQgbXQtM1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZS1idWJibGUgdHlwaW5nXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj48L3NwYW4+PHNwYW4gY2xhc3M9XCJkb3RcIj48L3NwYW4+PHNwYW4gY2xhc3M9XCJkb3RcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIENvcHkgRmVlZGJhY2sgVG9hc3QgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29weS1mZWVkYmFjay10b2FzdFwiICpuZ0lmPVwiY29weUZlZWRiYWNrXCI+e3sgY29weUZlZWRiYWNrIH19PC9kaXY+XG4gICAgICA8IS0tIElucHV0IEFyZWEgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2hhdC1pbnB1dC1hcmVhIGJvcmRlci10b3BcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNoYXQtZm9vdGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtd3JhcHBlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtZ3Jvdy0xXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGx1cy1tZW51LXdyYXAgbWUtMlwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLXBsdXNcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZVBsdXNNZW51KClcIiBbY2xhc3Mub3Blbl09XCJzaG93UGx1c01lbnVcIj4vPC9idXR0b24+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbHVzLXBvcHVwXCIgKm5nSWY9XCJzaG93UGx1c01lbnVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGx1cy1wb3B1cC1zZWN0aW9uLWxhYmVsXCI+TW9kZWw8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGx1cy1wb3B1cC1pdGVtXCIgdHlwZT1cImJ1dHRvblwiICpuZ0Zvcj1cImxldCBtIG9mIG1vZGVsT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwic2VsZWN0ZWRNb2RlbCA9PT0gbS52YWx1ZVwiIChjbGljayk9XCJzZWxlY3RNb2RlbChtLnZhbHVlKTsgY2xvc2VQbHVzTWVudSgpXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vZGVsLWhpbnQgZnctYm9sZCB0ZXh0LWRhcmsgZnMtNVwiPnt7IG0ubGFiZWwgfCB0aXRsZWNhc2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwic2VsZWN0ZWRNb2RlbCA9PT0gbS52YWx1ZVwiIGNsYXNzPVwiY2hlY2staWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMi41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9XCIyMCA2IDkgMTcgNCAxMlwiLz5cbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbHVzLXBvcHVwLWRpdmlkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGx1cy1wb3B1cC1pdGVtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZVBsdXNNZW51KCk7IG5ld0NoYXQoKVwiPlxuICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuOFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDIwaDlNMTYuNSAzLjVhMi4xMjEgMi4xMjEgMCAwIDEgMyAzTDcgMTlsLTQgMSAxLTRMMTYuNSAzLjV6XCIvPlxuICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5OZXcgQ2hhdDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGx1cy1wb3B1cC1pdGVtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZVBsdXNNZW51KCk7IHRvZ2dsZUNoYXRIaXN0b3J5KClcIj5cbiAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA4djRsMyAzbTYtM2E5IDkgMCAxIDEtMTggMCA5IDkgMCAwIDEgMTggMHpcIi8+XG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPkNoYXQgSGlzdG9yeTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwidXNlck1lc3NhZ2VcIiBjbGFzcz1cImNoYXQtaW5wdXRcIiBwbGFjZWhvbGRlcj1cIkFzayBhbnl0aGluZy4uLlwiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzZW5kTWVzc2FnZSgpXCIgW2Rpc2FibGVkXT1cImlzVHlwaW5nXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWhpc3RvcnktaW5saW5lXCIgKm5nSWY9XCIhc2hvd0NoYXRIaXN0b3J5XCIgKGNsaWNrKT1cInRvZ2dsZUNoYXRIaXN0b3J5KClcIiB0aXRsZT1cIkNoYXQgSGlzdG9yeVwiPlxuICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS44XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA4djRsMyAzbTYtM2E5IDkgMCAxIDEtMTggMCA5IDkgMCAwIDEgMTggMHpcIi8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLXNlbmRcIiAoY2xpY2spPVwic2VuZE1lc3NhZ2UoKVwiIFtkaXNhYmxlZF09XCIhdXNlck1lc3NhZ2UudHJpbSgpIHx8IGlzVHlwaW5nXCI+XG4gICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiPlxuICAgICAgICAgICAgICAgIDxsaW5lIHgxPVwiMjJcIiB5MT1cIjJcIiB4Mj1cIjExXCIgeTI9XCIxM1wiPjwvbGluZT5cbiAgICAgICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9XCIyMiAyIDE1IDIyIDExIDEzIDIgOSAyMiAyXCI+PC9wb2x5Z29uPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gQmFja2Ryb3AgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNoYXQtaGlzdG9yeS1iYWNrZHJvcFwiICpuZ0lmPVwic2hvd0NoYXRIaXN0b3J5XCIgKGNsaWNrKT1cInRvZ2dsZUNoYXRIaXN0b3J5KClcIj48L2Rpdj5cbiAgICA8IS0tIFJpZ2h0IFNpZGViYXI6IENoYXQgSGlzdG9yeSAtLT5cbiAgICA8YXNpZGUgY2xhc3M9XCJjaGF0LWhpc3Rvcnktc2lkZWJhciBib3JkZXItc3RhcnRcIiAqbmdJZj1cInNob3dDaGF0SGlzdG9yeVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNpZGViYXItaGVhZGVyIHAtMyBib3JkZXItYm90dG9tIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGg2IChjbGljayk9XCJ0b2dnbGVDaGF0SGlzdG9yeSgpXCIgY2xhc3M9XCJtYi0wIGZ3LWJvbGQgY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuODMzMyAxNC4xNjczTDE1IDEwLjAwMDdMMTAuODMzMyA1LjgzMzk4TTUgMTQuMTY3M0w5LjE2NjY3IDEwLjAwMDdMNSA1LjgzMzk4XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgIDwvc3ZnPiBDaGF0IEhpc3RvcnlcbiAgICAgICAgPC9oNj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNpZGViYXItc2VhcmNoIHAtMyBwYi0wXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoaXN0b3J5LXNlYXJjaC13cmFwcGVyXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJiaSBiaS1zZWFyY2hcIj48L2k+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY2hhdHMuLlwiIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNpZGViYXItY29udGVudCBwLTMgc2Nyb2xsYmFyLWhpZGRlblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCBweS0zXCIgKm5nSWY9XCJpc0hpc3RvcnlMb2FkaW5nXCI+TG9hZGluZy4uLjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCBweS0zXCIgKm5nSWY9XCIhaXNIaXN0b3J5TG9hZGluZyAmJiBmaWx0ZXJlZEhpc3RvcnkubGVuZ3RoID09PSAwXCI+Tm8gY2hhdHMgZm91bmQ8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY2hhdCBvZiBmaWx0ZXJlZEhpc3RvcnlcIiBjbGFzcz1cImhpc3RvcnktaXRlbVwiIFtjbGFzcy5hY3RpdmVdPVwic2VsZWN0ZWRDaGF0SWQgPT09IGNoYXQuc2Vzc2lvbl9pZFwiXG4gICAgICAgICAgKGNsaWNrKT1cImxvYWRDaGF0KGNoYXQuc2Vzc2lvbl9pZClcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS10aXRsZSB0ZXh0LXRydW5jYXRlXCI+e3sgY2hhdC5zZXNzaW9uX3RpdGxlIH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2lkZWJhci1mb290ZXIgcC0zIG10LWF1dG9cIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1uZXctY2hhdCB3LTEwMFwiIChjbGljayk9XCJuZXdDaGF0KClcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLXBsdXMtbGcgbWUtMlwiPjwvaT4gTmV3IENoYXRcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2FzaWRlPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG4gICAgPCEtLSBDb252ZXJzYXRpb25zIENvdW50IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjb252ZXJzYXRpb25zLWNvdW50IG1iLTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LXdyYXAgZ2FwLTJcIj5cbiAgICAgIDxzdHJvbmc+e3sgdG90YWxJdGVtcyB9fSBUb3RhbCBDb252ZXJzYXRpb25zIEZvdW5kPC9zdHJvbmc+XG4gICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdGVkQ2FyZElkIHx8IHNlbGVjdGVkQ2FyZE5hbWVcIiBjbGFzcz1cImFjdGl2ZS1maWx0ZXItY2hpcFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXAtbGFiZWxcIj57eyBzZWxlY3RlZENhcmRJZCB8fCBzZWxlY3RlZENhcmROYW1lIH19PC9zcGFuPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hpcC1yZW1vdmVcIiAoY2xpY2spPVwiY2xlYXJDYXJkRmlsdGVyKClcIiB0aXRsZT1cIlJlbW92ZSBmaWx0ZXJcIj4mdGltZXM7PC9idXR0b24+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIENvbnZlcnNhdGlvbiBDYXJkcyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY29udmVyc2F0aW9ucy1saXN0XCI+XG5cbiAgICAgIDwhLS0gTG9hZGVyIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTG9hZGluZ0NvbnZlcnNhdGlvbnNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnZlcnNhdGlvbi1jYXJkIHAtM1wiICpuZ0Zvcj1cImxldCBzIG9mIFsxLDIsM11cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBObyBEYXRhIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW4gbXktMTBcIlxuICAgICAgICAqbmdJZj1cIiFpc0xvYWRpbmdDb252ZXJzYXRpb25zICYmIGRpc3BsYXllZENvbnZlcnNhdGlvbnMubGVuZ3RoID09PSAwXCI+XG4gICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbWFwXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj5ObyBjb2hvcnRzIGhhcyBiZWVuIGNyZWF0ZWQgeWV0Ljxicj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2UgQ3JlYXRlIGEgY29ob3J0IHRvIHZpZXcgdGhlIGRhc2hib2FyZC48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSAgcm91bmRlZC0zIHctMjUgcC00IG10LTNcIiAoY2xpY2spPVwiY3JlYXRlQ29ob3J0KClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1ib2xkIGZzLTQgbXgtMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cbjxwYXRoIGQ9XCJNMTAuMDAxMyA0LjE2Njk5VjE1LjgzMzdNNC4xNjc5NyAxMC4wMDAzSDE1LjgzNDZcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG48L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctYm9sZCBmcy00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtcy0yXCI+Q3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29ob3J0czwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb252ZXJzYXRpb24tY2FyZFwiICpuZ0Zvcj1cImxldCBjIG9mIGRpc3BsYXllZENvbnZlcnNhdGlvbnM7IGxldCBtaSA9IGluZGV4XCJcbiAgICAgICAgW2hpZGRlbl09XCJpc0xvYWRpbmdDb252ZXJzYXRpb25zXCI+XG5cbiAgICAgICAgPCEtLSBTdW1tYXJ5IFJvdyAoYWx3YXlzIHZpc2libGUpIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udi1zdW1tYXJ5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiIChjbGljayk9XCJ0b2dnbGVDb252ZXJzYXRpb24oYy5hdWRpb0lkKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb252LXN1bW1hcnktbGVmdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbXktMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbnYtaWQgbS0wXCI+e3sgYy5hdWRpb0lkIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udi1tZXRhLXJvdyBteS0yXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YS1pdGVtXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgZD1cIk00LjA4OTg0IDkuNDY3NzdDMy45MzQwOCA5LjQ4NzA3IDMuNzc1MDQgOS41IDMuNjEzMjggOS41QzMuNTE1NjIgOS40OTk5OSAzLjQxOTY3IDkuNDk0NDggMy4zMjUyIDkuNDg3M1YxNC4yMjM2QzMuMzI1MiAxNC45MDE1IDMuODg2NTIgMTUuNDY0OCA0LjU4OTg0IDE1LjQ2NDhIMTMuNDExMUMxNC4xMTQ1IDE1LjQ2NDggMTQuNjc1OCAxNC45MDE1IDE0LjY3NTggMTQuMjIzNlY5LjQ4ODI4QzE0LjU4MjcgOS40OTUxMiAxNC40ODc4IDkuNSAxNC4zOTI2IDkuNUMxNC4yMjk3IDkuNDk5OTggMTQuMDY5MSA5LjQ4NzYyIDEzLjkxMTEgOS40Njc3N1YxMi45ODI0SDQuMDg5ODRWOS40Njc3N1pNMTMuOTE4OSAyLjUzNjEzSDQuMDgyMDNDMy45ODE0NSAyLjUzNjIzIDMuODkxMyAyLjU4ODI2IDMuODQ0NzMgMi42NjExM1YyLjY2MjExTDIuMjY0NjUgNS4xMjk4OEwyLjI0MzE2IDUuMTYzMDlDMS42MzYwOSA2LjE1NjUzIDIuMjIyNTMgNy40NjQ5MSAzLjM0Mjc3IDcuNjEyM0MzLjQzNTMyIDcuNjIzNTggMy41MjM4OCA3LjYyOTg4IDMuNjExMzMgNy42Mjk4OEM0LjE4MzEyIDcuNjI5NzUgNC42ODkyMyA3LjM4MzggNS4wNDEwMiA3LjAwMTk1TDUuNDA5MTggNi42MDE1Nkw1Ljc3NzM0IDcuMDAyOTNDNi4xMjU2MiA3LjM4MzM0IDYuNjMwNzYgNy42Mjk4OCA3LjIwNjA1IDcuNjI5ODhDNy43Nzg4IDcuNjI5ODIgOC4yODY3NSA3LjM4MzA2IDguNjM0NzcgNy4wMDI5M0wxMi41OTg2IDYuNjAwNTlMMTIuOTY2OCA3LjAwMjkzQzEzLjMxNDggNy4zODMwNyAxMy44MjI3IDcuNjI5ODIgMTQuMzk1NSA3LjYyOTg4QzE0LjQ4MDYgNy42Mjk4OCAxNC41NzE2IDcuNjIzNTcgMTQuNjY0MSA3LjYxMjNIMTQuNjYzMUMxNS43ODk5IDcuNDYxMzkgMTYuMzc3IDYuMTI1MTYgMTUuNzM5MyA1LjEyOTg4TDE0LjE1NzIgMi42NjIxMUwxNC4xNTYyIDIuNjYxMTNDMTQuMTA5NyAyLjU4ODI2IDE0LjAxOTUgMi41MzYxOSAxMy45MTg5IDIuNTM2MTNaXCJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+IDxzcGFuIGNsYXNzPVwidGV4dC1uYW1lXCI+U3RvcmU6PC9zcGFuPiA8c3BhbiBjbGFzcz1cIm5hbWUtdmFsXCI+e3sgYy5zdG9yZU5hbWUgfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtc2VwXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtaXRlbVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNVwiIHZpZXdCb3g9XCIwIDAgMTQgMTVcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIuNzUgMTQuMjVWMTIuNzVDMTIuNzUgMTEuOTU0NCAxMi40MzM5IDExLjE5MTMgMTEuODcxMyAxMC42Mjg3QzExLjMwODcgMTAuMDY2MSAxMC41NDU2IDkuNzUgOS43NSA5Ljc1SDMuNzVDMi45NTQzNSA5Ljc1IDIuMTkxMjkgMTAuMDY2MSAxLjYyODY4IDEwLjYyODdDMS4wNjYwNyAxMS4xOTEzIDAuNzUgMTEuOTU0NCAwLjc1IDEyLjc1VjE0LjI1TTkuNzUgMy43NUM5Ljc1IDUuNDA2ODUgOC40MDY4NSA2Ljc1IDYuNzUgNi43NUM1LjA5MzE1IDYuNzUgMy43NSA1LjQwNjg1IDMuNzUgMy43NUMzLjc1IDIuMDkzMTUgNS4wOTMxNSAwLjc1IDYuNzUgMC43NUM4LjQwNjg1IDAuNzUgOS43NSAyLjA5MzE1IDkuNzUgMy43NVpcIlxuICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cInRleHQtbmFtZVwiPlN0YWZmOjwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJuYW1lLXZhbFwiPnt7IGMudXNlck5hbWUgfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtc2VwXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtaXRlbVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNMTAuODc1IDEzLjY4NzVDMTAuMzUgMTMuNjg3NSA5LjkwNjI1IDEzLjUwNjIgOS41NDM3NSAxMy4xNDM3QzkuMTgxMjUgMTIuNzgxMiA5IDEyLjMzNzUgOSAxMS44MTI1QzkgMTEuMjg3NSA5LjE4MTI1IDEwLjg0MzggOS41NDM3NSAxMC40ODEzQzkuOTA2MjUgMTAuMTE4OCAxMC4zNSA5LjkzNzUgMTAuODc1IDkuOTM3NUMxMS40IDkuOTM3NSAxMS44NDM4IDEwLjExODggMTIuMjA2MyAxMC40ODEzQzEyLjU2ODggMTAuODQzOCAxMi43NSAxMS4yODc1IDEyLjc1IDExLjgxMjVDMTIuNzUgMTIuMzM3NSAxMi41Njg4IDEyLjc4MTIgMTIuMjA2MyAxMy4xNDM3QzExLjg0MzggMTMuNTA2MiAxMS40IDEzLjY4NzUgMTAuODc1IDEzLjY4NzVaTTMuNzUgMTYuNjg3NUMzLjMzNzUgMTYuNjg3NSAyLjk4NDUgMTYuNTQwOCAyLjY5MSAxNi4yNDcyQzIuMzk3NSAxNS45NTM3IDIuMjUwNSAxNS42MDA1IDIuMjUgMTUuMTg3NVY0LjY4NzVDMi4yNSA0LjI3NSAyLjM5NyAzLjkyMiAyLjY5MSAzLjYyODVDMi45ODUgMy4zMzUgMy4zMzggMy4xODggMy43NSAzLjE4NzVINC41VjEuNjg3NUg2VjMuMTg3NUgxMlYxLjY4NzVIMTMuNVYzLjE4NzVIMTQuMjVDMTQuNjYyNSAzLjE4NzUgMTUuMDE1OCAzLjMzNDUgMTUuMzA5OCAzLjYyODVDMTUuNjAzOCAzLjkyMjUgMTUuNzUwNSA0LjI3NTUgMTUuNzUgNC42ODc1VjE1LjE4NzVDMTUuNzUgMTUuNiAxNS42MDMzIDE1Ljk1MzIgMTUuMzA5OCAxNi4yNDcyQzE1LjAxNjMgMTYuNTQxMyAxNC42NjMgMTYuNjg4IDE0LjI1IDE2LjY4NzVIMy43NVpNMy43NSAxNS4xODc1SDE0LjI1VjcuNjg3NUgzLjc1VjE1LjE4NzVaXCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM2NjcwODVcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwidGV4dC1uYW1lXCI+RGF0ZTo8L3NwYW4+IDxzcGFuIGNsYXNzPVwibmFtZS12YWxcIj57eyBjLmRhdGUgfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtc2VwXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtaXRlbVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTg0OV8xMzMwMilcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkgNC41VjlMMTIgMTAuNU0xNi41IDlDMTYuNSAxMy4xNDIxIDEzLjE0MjEgMTYuNSA5IDE2LjVDNC44NTc4NiAxNi41IDEuNSAxMy4xNDIxIDEuNSA5QzEuNSA0Ljg1Nzg2IDQuODU3ODYgMS41IDkgMS41QzEzLjE0MjEgMS41IDE2LjUgNC44NTc4NiAxNi41IDlaXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTg0OV8xMzMwMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJ0ZXh0LW5hbWVcIj5UaW1lc3RhbXA6PC9zcGFuPiA8c3BhbiBjbGFzcz1cIm5hbWUtdmFsXCI+e3sgYy50aW1lIHwgZGF0ZTonaGg6bW0gYScgfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtc2VwXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtaXRlbVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNNi44NzUgMi4xNTI2N0M2Ljg3NSAxLjk2NDgxIDYuOTQ5NjMgMS43ODQ2NCA3LjA4MjQ3IDEuNjUxOEM3LjIxNTMxIDEuNTE4OTYgNy4zOTU0NyAxLjQ0NDM0IDcuNTgzMzMgMS40NDQzNEgxMC40MTY3QzEwLjYwNDUgMS40NDQzNCAxMC43ODQ3IDEuNTE4OTYgMTAuOTE3NSAxLjY1MThDMTEuMDUwNCAxLjc4NDY0IDExLjEyNSAxLjk2NDgxIDExLjEyNSAyLjE1MjY3QzExLjEyNSAyLjM0MDUzIDExLjA1MDQgMi41MjA3IDEwLjkxNzUgMi42NTM1NEMxMC43ODQ3IDIuNzg2MzcgMTAuNjA0NSAyLjg2MSAxMC40MTY3IDIuODYxSDkuNzA4MzNWMy44MDU0NUw5LjcwNzM5IDMuODQ0MTdDMTAuOTA0NyAzLjk3NTM2IDEyLjAzOTYgNC40NDU1MyAxMi45Nzg5IDUuMTk5NDVMMTIuOTg1NiA1LjE5Mzc4TDEzLjY5MzkgNC40ODU0NUMxMy43ODA1IDQuMzkyMjEgMTMuODkwNiA0LjMyNDA0IDE0LjAxMjcgNC4yODgxNEMxNC4xMzQ3IDQuMjUyMjQgMTQuMjY0MiA0LjI0OTkzIDE0LjM4NzUgNC4yODE0NEMxNC41MTA4IDQuMzEyOTYgMTQuNjIzMyA0LjM3NzE1IDE0LjcxMzEgNC40NjcyNEMxNC44MDMgNC41NTczMiAxNC44NjY5IDQuNjY5OTggMTQuODk4MSA0Ljc5MzMzQzE0LjkyOTUgNC45MTY0NyAxNC45MjczIDUuMDQ1ODEgMTQuODkxNSA1LjE2Nzc3QzE0Ljg1NTggNS4yODk3NCAxNC43ODc5IDUuMzk5ODUgMTQuNjk1IDUuNDg2NTZMMTMuOTg2NyA2LjE5NDg5TDEzLjk4MSA2LjIwMTVDMTQuNzMwMiA3LjEzOTQ0IDE1LjE5OTQgOC4yNjk4NSAxNS4zMzQ1IDkuNDYyNjZDMTUuNDY5NiAxMC42NTU1IDE1LjI2NTIgMTEuODYyMiAxNC43NDQ4IDEyLjk0MzlDMTQuMjI0NCAxNC4wMjU3IDEzLjQwOTEgMTQuOTM4NSAxMi4zOTI4IDE1LjU3NzRDMTEuMzc2NSAxNi4yMTYzIDEwLjIwMDQgMTYuNTU1MiA5IDE2LjU1NTJDNy43OTk1NyAxNi41NTUyIDYuNjIzNTMgMTYuMjE2MyA1LjYwNzIyIDE1LjU3NzRDNC41OTA5MSAxNC45Mzg1IDMuNzc1NjQgMTQuMDI1NyAzLjI1NTIyIDEyLjk0MzlDMi43MzQ4MSAxMS44NjIyIDIuNTMwNCAxMC42NTU1IDIuNjY1NTIgOS40NjI2NkMyLjgwMDY0IDguMjY5ODUgMy4yNjk4IDcuMTM5NDQgNC4wMTkgNi4yMDE1TDQuMDEzMzQgNi4xOTQ4OUwzLjMwNSA1LjQ4NjU2QzMuMTc5NzMgNS4zNTIzMSAzLjExMTQ4IDUuMTc0NjYgMy4xMTQ2NiA0Ljk5MTA3QzMuMTE3ODMgNC44MDc0NyAzLjE5MjE3IDQuNjMyMjkgMy4zMjIgNC41MDI0NUMzLjQ1MTg1IDQuMzcyNjEgMy42MjcwMyA0LjI5ODI3IDMuODEwNjIgNC4yOTUxQzMuOTk0MjIgNC4yOTE5MyA0LjE3MTg3IDQuMzYwMTcgNC4zMDYxMSA0LjQ4NTQ1TDUuMDE0NDUgNS4xOTM3OEw1LjAyMTA2IDUuMTk5NDVDNS45NjAxIDQuNDQ1NyA3LjA5NDcyIDMuOTc1NTQgOC4yOTE2NyAzLjg0NDE3VjIuODYxSDcuNTgzMzNDNy4zOTU0NyAyLjg2MSA3LjIxNTMxIDIuNzg2MzcgNy4wODI0NyAyLjY1MzU0QzYuOTQ5NjMgMi41MjA3IDYuODc1IDIuMzQwNTMgNi44NzUgMi4xNTI2N1pNOSAxNS4xMzg4QzEwLjMxNTIgMTUuMTM4NiAxMS41NzY0IDE0LjYxNjEgMTIuNTA2MyAxMy42ODZDMTMuNDM2MSAxMi43NTYgMTMuOTU4NSAxMS40OTQ3IDEzLjk1ODMgMTAuMTc5NUMxMy45NTgyIDguODY0MzQgMTMuNDM1NiA3LjYwMzEgMTIuNTA1NiA2LjY3MzIzQzExLjU3NTYgNS43NDMzNyAxMC4zMTQyIDUuMjIxMDQgOC45OTkwNiA1LjIyMTE3QzcuNjgzOSA1LjIyMTI5IDYuNDIyNjYgNS43NDM4NiA1LjQ5Mjc5IDYuNjczOUM0LjU2MjkyIDcuNjAzOTUgNC4wNDA2IDguODY1MjkgNC4wNDA3MiAxMC4xODA0QzQuMDQwODUgMTEuNDk1NiA0LjU2MzQxIDEyLjc1NjggNS40OTM0NiAxMy42ODY3QzYuNDIzNSAxNC42MTY2IDcuNjg0ODQgMTUuMTM4OSA5IDE1LjEzODhaTTkuMzY3MzkgOC44MTFMMTAuNjIzNSA3LjU1NDg5QzEwLjY4ODggNy40ODcyIDEwLjc2NjkgNy40MzMyMSAxMC44NTMzIDcuMzk2MDRDMTAuOTM5NyA3LjM1ODg4IDExLjAzMjcgNy4zMzkzIDExLjEyNjcgNy4zMzg0M0MxMS4yMjA4IDcuMzM3NTcgMTEuMzE0MSA3LjM1NTQ1IDExLjQwMTEgNy4zOTEwM0MxMS40ODgyIDcuNDI2NiAxMS41NjczIDcuNDc5MTYgMTEuNjMzOSA3LjU0NTYzQzExLjcwMDQgNy42MTIxMSAxMS43NTMgNy42OTExNyAxMS43ODg3IDcuNzc4MjFDMTEuODI0MyA3Ljg2NTI0IDExLjg0MjMgNy45NTg1IDExLjg0MTUgOC4wNTI1NkMxMS44NDA4IDguMTQ2NjEgMTEuODIxMyA4LjIzOTU3IDExLjc4NDIgOC4zMjZDMTEuNzQ3MSA4LjQxMjQ0IDExLjY5MzIgOC40OTA2MiAxMS42MjU2IDguNTU2TDEwLjM2OTQgOS44MTMwNUMxMC40MjUyIDEwLjAyMyAxMC40MzIxIDEwLjI0MyAxMC4zODk1IDEwLjQ1NjFDMTAuMzQ2OCAxMC42NjkyIDEwLjI1NTkgMTAuODY5NiAxMC4xMjM2IDExLjA0MTlDOS45OTEyNyAxMS4yMTQzIDkuODIxMTcgMTEuMzU0IDkuNjI2MzcgMTEuNDUwMkM5LjQzMTU3IDExLjU0NjUgOS4yMTcyOCAxMS41OTY3IDkgMTEuNTk3MUM4Ljc5OTQ5IDExLjU5NTQgOC42MDE2MyAxMS41NTExIDguNDE5NTMgMTEuNDY3MUM4LjIzNzQzIDExLjM4MzIgOC4wNzUyNCAxMS4yNjE1IDcuOTQzNjkgMTEuMTEwMkM3LjgxMjE1IDEwLjk1ODggNy43MTQyNiAxMC43ODEzIDcuNjU2NDkgMTAuNTg5M0M3LjU5ODczIDEwLjM5NzMgNy41ODI0MSAxMC4xOTUyIDcuNjA4NjMgOS45OTYzNkM3LjYzNDg0IDkuNzk3NTYgNy43MDI5OSA5LjYwNjYgNy44MDg1NSA5LjQzNjEyQzcuOTE0MTIgOS4yNjU2NCA4LjA1NDY5IDkuMTE5NTMgOC4yMjA5NyA5LjAwNzQ2QzguMzg3MjUgOC44OTUzOSA4LjU3NTQzIDguODE5OTMgOC43NzMwNyA4Ljc4NjA2QzguOTcwNzEgOC43NTIxOSA5LjE3MzI4IDguNzYwNjkgOS4zNjczOSA4LjgxMVpcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzY2NzA4NVwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJ0ZXh0LW5hbWVcIj4gRHVyYXRpb246PC9zcGFuPiA8c3BhbiBjbGFzcz1cIm5hbWUtdmFsXCI+e3sgZm9ybWF0RHVyYXRpb24oYy5kdXJhdGlvbikgfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtc2VwXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtaXRlbVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxuICA8cGF0aCBkPVwiTTkgMS41QzYuMjM4NTggMS41IDQgMy43Mzg1OCA0IDYuNUM0IDEwLjI1IDkgMTYuNSA5IDE2LjVDOSAxNi41IDE0IDEwLjI1IDE0IDYuNUMxNCAzLjczODU4IDExLjc2MTQgMS41IDkgMS41Wk05IDguNzVDNy43NTczNiA4Ljc1IDYuNzUgNy43NDI2NCA2Ljc1IDYuNUM2Ljc1IDUuMjU3MzYgNy43NTczNiA0LjI1IDkgNC4yNUMxMC4yNDI2IDQuMjUgMTEuMjUgNS4yNTczNiAxMS4yNSA2LjVDMTEuMjUgNy43NDI2NCAxMC4yNDI2IDguNzUgOSA4Ljc1WlwiIGZpbGw9XCIjNjY3MDg1XCIvPlxuPC9zdmc+PHNwYW4gY2xhc3M9XCJ0ZXh0LW5hbWVcIj4gTG9jYXRpb246PC9zcGFuPiA8c3BhbiBjbGFzcz1cIm5hbWUtdmFsIGxvY2F0aW9uLXRydW5jYXRlXCIgW3RpdGxlXT1cImMubG9jYXRpb25cIj57eyBjLmxvY2F0aW9uIH19PC9zcGFuPjwvc3Bhbj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udi1leGNlcnB0IG15LTJcIj57eyBjLmF1ZGlvRGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgIDxhICpuZ0lmPVwiYy5leWVUZXN0TGlua1wiIGNsYXNzPVwiZXllLXRlc3QtbGlua1wiIGhyZWY9XCIjXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgICBWaWV3IEV5ZSBUZXN0IDxzcGFuPlxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0xNSAxMC44MzMzVjE1LjgzMzNDMTUgMTYuMjc1NCAxNC44MjQ0IDE2LjY5OTMgMTQuNTExOCAxNy4wMTE4QzE0LjE5OTMgMTcuMzI0NCAxMy43NzU0IDE3LjUgMTMuMzMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjYuNjY2NjdDMi41IDYuMjI0NjQgMi42NzU1OSA1LjgwMDcyIDIuOTg4MTYgNS40ODgxNkMzLjMwMDcyIDUuMTc1NTkgMy43MjQ2NCA1IDQuMTY2NjcgNUg5LjE2NjY3TTEyLjUgMi41SDE3LjVNMTcuNSAyLjVWNy41TTE3LjUgMi41TDguMzMzMzMgMTEuNjY2N1wiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb252LXRvZ2dsZS1idG4gdGV4dC1ub3dyYXBcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVDb252ZXJzYXRpb24oYy5hdWRpb0lkKVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgb3BlbklkID09PSBjLmF1ZGlvSWQgPyAnVmlldyBMZXNzJyA6ICdWaWV3IE1vcmUnIH19PC9zcGFuPlxuXG4gICAgICAgICAgICA8IS0tIGRvd24gYXJyb3cgd2hlbiBjbG9zZWQgLS0+XG4gICAgICAgICAgICA8c3ZnICpuZ0lmPVwib3BlbklkICE9PSBjLmF1ZGlvSWRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcbiAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNS44MzIwMyAxMC44MzMzTDkuOTk4NyAxNUwxNC4xNjU0IDEwLjgzMzNNNS44MzIwMyA1TDkuOTk4NyA5LjE2NjY3TDE0LjE2NTQgNVwiIHN0cm9rZT1cIiM2NjcwODVcIlxuICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgPC9zdmc+XG5cbiAgICAgICAgICAgIDwhLS0gdXAgYXJyb3cgd2hlbiBvcGVuIC0tPlxuICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIm9wZW5JZCA9PT0gYy5hdWRpb0lkXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXG4gICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUuODMyMDMgMTAuODMzM0w5Ljk5ODcgMTVMMTQuMTY1NCAxMC44MzMzTTUuODMyMDMgNUw5Ljk5ODcgOS4xNjY2N0wxNC4xNjU0IDVcIiBzdHJva2U9XCIjNjY3MDg1XCJcbiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgdHJhbnNmb3JtPVwicm90YXRlKDE4MCAxMCAxMClcIiAvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gRXhwYW5kZWQgQm9keSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnYtYm9keVwiICpuZ0lmPVwib3BlbklkID09PSBjLmF1ZGlvSWRcIj5cblxuICAgICAgICAgIDwhLS0gRGV0YWlsIExvYWRpbmcgc2hpbW1lciAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYy5fZGV0YWlsTG9hZGluZ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHB4LTQgcHktM1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPCEtLSBObyBkYXRhIC8gZXJyb3IgYWZ0ZXIgbG9hZCAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtbiBteS02XCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWMuX2RldGFpbExvYWRpbmcgJiYgKGMuX2RldGFpbEVycm9yIHx8IChjLl9kZXRhaWxMb2FkZWQgJiYgIWMuY29udmVyc2F0aW9uRGV0YWlscz8uYXVkaW9TdW1tYXJ5ICYmIGMubWV0cmljcz8ubGVuZ3RoID09PSAwKSlcIj5cbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbWFwXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPk5vIGRldGFpbHMgYXZhaWxhYmxlIGZvciB0aGlzIGNvbnZlcnNhdGlvbjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnYtYm9keS1pbm5lclwiICpuZ0lmPVwiIWMuX2RldGFpbExvYWRpbmcgJiYgIWMuX2RldGFpbEVycm9yXCI+XG5cbiAgICAgICAgICAgIDwhLS0gTGVmdDogUmVjb3JkaW5nICsgU3VtbWFyeSArIEluc2lnaHRzIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnYtbGVmdFwiPlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWNvcmRpbmctYm94IG1iLTJcIiBbY2xhc3MuaXMtcGxheWluZy1ib3hdPVwicGxheWluZ0NvbnZJZCA9PT0gYy5hdWRpb0lkXCIgKm5nSWY9XCJjLmF1ZGlvVXJsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZGluZy10aXRsZVwiPkNvbnZlcnNhdGlvbiBSZWNvcmRpbmc8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwhLS0gV2F2ZWZvcm06IHBlci1jb252ZXJzYXRpb24gcGxheWluZyBzdGF0ZSAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2F2ZWZvcm0tYmFyc1wiIFtjbGFzcy5pcy1wbGF5aW5nXT1cInBsYXlpbmdDb252SWQgPT09IGMuYXVkaW9JZFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWJhclwiICpuZ0Zvcj1cImxldCBoIG9mIHdhdmVmb3JtSGVpZ2h0czsgbGV0IGkgPSBpbmRleFwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy53Zi1iYXItLXBsYXllZF09XCIocGxheWJhY2tTdGF0ZXNbYy5hdWRpb0lkXT8ucHJvZ3Jlc3MgfHwgMCkgPiBpIC8gd2F2ZWZvcm1IZWlnaHRzLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIFBsYXllciBjb250cm9scyAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxheWVyLXJvd1wiPlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIFBsYXkgLyBQYXVzZSBidXR0b24gd2l0aCB3aGl0ZSBvdXRlciByaW5nIC0tPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYXktYnRuLXdyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBsYXktYnRuLWNpcmNsZVwiIChjbGljayk9XCJ0b2dnbGVQbGF5KGMuYXVkaW9JZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBsYXkgaWNvbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwicGxheWluZ0NvbnZJZCAhPT0gYy5hdWRpb0lkXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJ3aGl0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04IDV2MTRsMTEtN3pcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUGF1c2UgaWNvbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwicGxheWluZ0NvbnZJZCA9PT0gYy5hdWRpb0lkXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJ3aGl0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02IDE5aDRWNUg2djE0em04LTE0djE0aDRWNWgtNHpcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIFByb2dyZXNzIGJhciArIHRpbWVzIC0tPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYXllci1wcm9ncmVzcyB3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbGF5ZXItdGltZSBzdGFydC10aW1lXCI+e3sgcGxheWJhY2tTdGF0ZXNbYy5hdWRpb0lkXT8uY3VycmVudFRpbWUgfHwgJzA6MDAnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGxheWVyLXRpbWUgZW5kLXRpbWVcIj57eyBwbGF5YmFja1N0YXRlc1tjLmF1ZGlvSWRdPy50b3RhbFRpbWUgfHwgYy5kdXJhdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLXRyYWNrXCIgKGNsaWNrKT1cInNlZWtBdWRpbygkZXZlbnQsIGMuYXVkaW9JZClcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtZmlsbFwiIFtzdHlsZS53aWR0aC4lXT1cIihwbGF5YmFja1N0YXRlc1tjLmF1ZGlvSWRdPy5wcm9ncmVzcyB8fCAwKSAqIDEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8YXVkaW8gW2lkXT1cIidhdWRpby0nICsgYy5hdWRpb0lkXCIgW3NyY109XCJjLmF1ZGlvVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgcHJlbG9hZD1cIm1ldGFkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgKHRpbWV1cGRhdGUpPVwib25UaW1lVXBkYXRlKGF1ZGlvUGxheWVyLCBjLmF1ZGlvSWQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGxvYWRlZG1ldGFkYXRhKT1cIm9uTG9hZGVkTWV0YWRhdGEoYXVkaW9QbGF5ZXIsIGMuYXVkaW9JZCwgYy5kdXJhdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICAoZW5kZWQpPVwicGxheWluZ0NvbnZJZCA9IG51bGxcIiAjYXVkaW9QbGF5ZXI+XG4gICAgICAgICAgICAgICAgICA8L2F1ZGlvPlxuICAgICAgICAgICAgICAgICAgPCEtLSA8YXVkaW8gI2F1ZGlvUGxheWVyICh0aW1ldXBkYXRlKT1cIm9uVGltZVVwZGF0ZShhdWRpb1BsYXllcilcIlxuICAgICAgICAgICAgICAgICAgICAobG9hZGVkbWV0YWRhdGEpPVwib25Mb2FkZWRNZXRhZGF0YShhdWRpb1BsYXllcilcIj5cbiAgICAgICAgICAgICAgICAgIDwvYXVkaW8+IC0tPlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIE11dGUgLyBVbm11dGUgYnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm11dGUtYnRuXCIgKGNsaWNrKT1cInRvZ2dsZU11dGUoKVwiIFt0aXRsZV09XCJpc011dGVkID8gJ1VubXV0ZScgOiAnTXV0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBWb2x1bWUgb24gLS0+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhaXNNdXRlZFwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMyA5djZoNGw1IDVWNEw3IDlIM3ptMTMuNSAzYzAtMS43Ny0xLjAyLTMuMjktMi41LTQuMDN2OC4wNWMxLjQ4LS43MyAyLjUtMi4yNSAyLjUtNC4wMnpNMTQgMy4yM3YyLjA2YzIuODkuODYgNSAzLjU0IDUgNi43MXMtMi4xMSA1Ljg1LTUgNi43MXYyLjA2YzQuMDEtLjkxIDctNC40OSA3LTguNzdzLTIuOTktNy44Ni03LTguNzd6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVm9sdW1lIG11dGVkIC0tPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXNNdXRlZFwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNSAxMmMwLTEuNzctMS4wMi0zLjI5LTIuNS00LjAzdjIuMjFsMi40NSAyLjQ1Yy4wMy0uMi4wNS0uNDEuMDUtLjYzem0yLjUgMGMwIC45NC0uMiAxLjgyLS41NCAyLjY0bDEuNTEgMS41MUMyMC42MyAxNC45MSAyMSAxMy41IDIxIDEyYzAtNC4yOC0yLjk5LTcuODYtNy04Ljc3djIuMDZjMi44OS44NiA1IDMuNTQgNSA2Ljcxek00LjI3IDNMMyA0LjI3IDcuNzMgOUgzdjZoNGw1IDV2LTYuNzNsNC4yNSA0LjI1Yy0uNjcuNTItMS40Mi45My0yLjI1IDEuMTh2Mi4wNmMxLjM4LS4zMSAyLjYzLS45NSAzLjY5LTEuODFMMTkuNzMgMjEgMjEgMTkuNzNsLTktOUw0LjI3IDN6TTEyIDRMOS45MSA2LjA5IDEyIDguMThWNHpcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDwhLS0gVGFicyAtLT5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1sYXllciBtYi0yXCI+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udi10YWJzXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29udi10YWJcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYltjLmF1ZGlvSWRdICE9PSAndHJhbnNjcmlwdCdcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBzZXRUYWIoYy5hdWRpb0lkLCAnc3VtbWFyeScpXCI+U3VtbWFyeTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbnYtdGFiXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUYWJbYy5hdWRpb0lkXSA9PT0gJ3RyYW5zY3JpcHQnXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgc2V0VGFiKGMuYXVkaW9JZCwgJ3RyYW5zY3JpcHQnKVwiPlRyYW5zY3JpcHQ8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb252LWJvZHktdGV4dCBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cImFjdGl2ZVRhYltjLmF1ZGlvSWRdICE9PSAndHJhbnNjcmlwdCdcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgYy5jb252ZXJzYXRpb25EZXRhaWxzLmF1ZGlvU3VtbWFyeSB9fVxuICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJhY3RpdmVUYWJbYy5hdWRpb0lkXSA9PT0gJ3RyYW5zY3JpcHQnXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGMuY29udmVyc2F0aW9uRGV0YWlscy50cmFuc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDwhLS0gQUkgSW5zaWdodHMgLS0+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1pbnNpZ2h0cy1ib3hcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktaW5zaWdodHMtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzdcIiB2aWV3Qm94PVwiMCAwIDM2IDM3XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hc2sgaWQ9XCJwYXRoLTEtaW5zaWRlLTFfMTg0OV8xMzM4NFwiIGZpbGw9XCJ3aGl0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTI5LjUxNTEgMjkuMzIyN0wyOC42MTU2IDI4LjQyMzJMMTguOTI0NCAxOC43MzJMMjEuNzk5MyAxNS44NTcxTDIyLjQ4ODIgMTUuMTY3QzIyLjU1MzkgMTUuMTAwMyAyMi41OTA5IDE1LjAxMDYgMjIuNTkxNCAxNC45MTdDMjIuNTkxMiAxNC44NzA3IDIyLjU4MTggMTQuODI0OSAyMi41NjM5IDE0Ljc4MjJDMjIuNTQ1OSAxNC43Mzk2IDIyLjUxOTcgMTQuNzAwOSAyMi40ODY4IDE0LjY2ODNMMjEuNzk2NiAxMy45NzgxTDE4Ljc0NzggMTAuOTIzOUwxOC4wNTc2IDEwLjIzMzdDMTguMDI1IDEwLjIwMDUgMTcuOTg2MSAxMC4xNzQyIDE3Ljk0MzIgMTAuMTU2MkMxNy45MDAyIDEwLjEzODIgMTcuODU0MiAxMC4xMjg5IDE3LjgwNzYgMTAuMTI4OUMxNy43NjExIDEwLjEyODkgMTcuNzE1IDEwLjEzODIgMTcuNjcyMSAxMC4xNTYyQzE3LjYyOTIgMTAuMTc0MiAxNy41OTAzIDEwLjIwMDUgMTcuNTU3NiAxMC4yMzM3TDE2Ljg2NzQgMTAuOTI1M0wxMy4xMzEyIDE0LjY2MTVDMTMuMDk4IDE0LjY5NCAxMy4wNzE3IDE0LjczMjggMTMuMDUzNyAxNC43NzU2QzEzLjAzNTcgMTQuODE4NSAxMy4wMjY1IDE0Ljg2NDQgMTMuMDI2NSAxNC45MTA4QzEzLjAyNjUgMTQuOTU3MyAxMy4wMzU3IDE1LjAwMzIgMTMuMDUzNyAxNS4wNDYxQzEzLjA3MTcgMTUuMDg4OSAxMy4wOTggMTUuMTI3NyAxMy4xMzEyIDE1LjE2MDJMMTYuNzAwMyAxOC43MzA3TDcuMDA3NzcgMjguNDIzMkw2LjExMjQzIDI5LjMyMjdDNi4wNDYwNCAyOS4zODg0IDYuMDA4NDIgMjkuNDc3OCA2LjAwNzgxIDI5LjU3MTNDNi4wMDgyIDI5LjY2MTYgNi4wNDI2NSAyOS43NDg1IDYuMTA0MjggMjkuODE0NUM2LjEzNzE4IDI5Ljg0OTYgNi4xNzY5NSAyOS44Nzc3IDYuMjIxMTEgMjkuODk2OEM2LjI2NTI4IDI5LjkxNiA2LjMxMjkxIDI5LjkyNTkgNi4zNjEwNiAyOS45MjU5SDE1LjA3OTVDMTUuMTczIDI5LjkyNTUgMTUuMjYyNyAyOS44ODgyIDE1LjMyODkgMjkuODIyQzE1LjM5NSAyOS43NTU5IDE1LjQzMjQgMjkuNjY2MiAxNS40MzI3IDI5LjU3MjZWMjguNzA1OEMxNS40MzI3IDI4LjYxMiAxNS4zOTU1IDI4LjUyMiAxNS4zMjkzIDI4LjQ1NTZDMTUuMjYzMSAyOC4zODkxIDE1LjE3MzMgMjguMzUxNiAxNS4wNzk1IDI4LjM1MTJIOS4zMDUyNEwxNy44MTE3IDE5Ljg0NDhMMjYuMzE4MiAyOC4zNTEySDIwLjQ5MzdDMjAuMzk5OSAyOC4zNTE2IDIwLjMxIDI4LjM4OTEgMjAuMjQzOCAyOC40NTU2QzIwLjE3NzYgMjguNTIyIDIwLjE0MDQgMjguNjEyIDIwLjE0MDQgMjguNzA1OFYyOS41NzI2QzIwLjE0MDIgMjkuNjE5MiAyMC4xNDk0IDI5LjY2NTMgMjAuMTY3NCAyOS43MDgzQzIwLjE4NTMgMjkuNzUxMiAyMC4yMTE4IDI5Ljc5MDEgMjAuMjQ1IDI5LjgyMjZDMjAuMzExIDI5Ljg4ODUgMjAuNDAwNCAyOS45MjU2IDIwLjQ5MzcgMjkuOTI1OUgyOS4yNjUxQzI5LjMxMzQgMjkuOTI2MSAyOS4zNjEzIDI5LjkxNjMgMjkuNDA1NyAyOS44OTcxQzI5LjQ1MDIgMjkuODc3OSAyOS40OTAxIDI5Ljg0OTggMjkuNTIzMiAyOS44MTQ1QzI5LjU4NjcgMjkuNzQ3OCAyOS42MjE0IDI5LjY1ODkgMjkuNjE5OSAyOS41NjY5QzI5LjYxODQgMjkuNDc0OSAyOS41ODA3IDI5LjM4NzIgMjkuNTE1MSAyOS4zMjI3Wk0xNy44MDYzIDEyLjIxMDVMMjAuNTE0IDE0LjkxODNMMTcuODEzMSAxNy42MTkzTDE1LjEwNTMgMTQuOTExNUwxNy44MDYzIDEyLjIxMDVaXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXNrPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjkuNTE1MSAyOS4zMjI3TC0xOC4xMTM5IDc2Ljk1MTZMLTE3LjkwMjQgNzcuMTYzMUwtMTcuNjg5MSA3Ny4zNzI3TDI5LjUxNTEgMjkuMzIyN1pNMjguNjE1NiAyOC40MjMyTDc2LjI0NDYgLTE5LjIwNTdWLTE5LjIwNTdMMjguNjE1NiAyOC40MjMyWk0xOC45MjQ0IDE4LjczMkwtMjguNzA0NSAtMjguODk2OUwtNzYuMzMzNSAxOC43MzJMLTI4LjcwNDYgNjYuMzYxTDE4LjkyNDQgMTguNzMyWk0yMS43OTkzIDE1Ljg1NzFMNjkuNDI4MyA2My40ODYxTDY5LjQ1MTggNjMuNDYyNkw2OS40NzUzIDYzLjQzOTFMMjEuNzk5MyAxNS44NTcxWk0yMi40ODgyIDE1LjE2N0w3MC4xNjQxIDYyLjc0ODlMNzAuMzA5NSA2Mi42MDMyTDcwLjQ1NCA2Mi40NTY2TDIyLjQ4ODIgMTUuMTY3Wk0yMi41OTE0IDE0LjkxN0w4OS45NDgxIDE1LjI2MDVMODkuOTQ5OCAxNC45MjI2TDg5Ljk0ODEgMTQuNTg0OEwyMi41OTE0IDE0LjkxN1pNMjIuNDg2OCAxNC42NjgzTC0yNS4xNDIyIDYyLjI5NzNMLTI0Ljk5MzkgNjIuNDQ1NkwtMjQuODQ0NyA2Mi41OTI5TDIyLjQ4NjggMTQuNjY4M1pNMjEuNzk2NiAxMy45NzgxTC0yNS44NzQ4IDYxLjU2NDdMLTI1Ljg1MzYgNjEuNTg1OUwtMjUuODMyNCA2MS42MDcxTDIxLjc5NjYgMTMuOTc4MVpNMTguNzQ3OCAxMC45MjM5TDY2LjQxOTIgLTM2LjY2MjZMNjYuMzk4IC0zNi42ODM5TDY2LjM3NjggLTM2LjcwNTFMMTguNzQ3OCAxMC45MjM5Wk0xOC4wNTc2IDEwLjIzMzdMLTI5Ljk4MDMgNTcuNDUwMkwtMjkuNzc2NyA1Ny42NTc0TC0yOS41NzEzIDU3Ljg2MjdMMTguMDU3NiAxMC4yMzM3Wk0xNy41NTc2IDEwLjIzMzdMNjUuMjMzNCA1Ny44MTU5TDY1LjQxNTIgNTcuNjMzN0w2NS41OTU2IDU3LjQ1MDJMMTcuNTU3NiAxMC4yMzM3Wk0xNi44Njc0IDEwLjkyNTNMNjQuNDk2NCA1OC41NTQyTDY0LjUxOTggNTguNTMwOEw2NC41NDMyIDU4LjUwNzRMMTYuODY3NCAxMC45MjUzWk0xMy4xMzEyIDE0LjY2MTVMNjAuMjkwNyA2Mi43NTU0TDYwLjUyNjYgNjIuNTI0MUw2MC43NjAyIDYyLjI5MDVMMTMuMTMxMiAxNC42NjE1Wk0xMy4wMjY1IDE0LjkxMDhIODAuMzg0SDEzLjAyNjVaTTEzLjEzMTIgMTUuMTYwMkw2MC43NjkyIC0zMi40NTk3TDYwLjUzMTIgLTMyLjY5NzlMNjAuMjkwNyAtMzIuOTMzN0wxMy4xMzEyIDE1LjE2MDJaTTE2LjcwMDMgMTguNzMwN0w2NC4zMjkzIDY2LjM1OTZMMTExLjk0OSAxOC43Mzk3TDY0LjMzODQgLTI4Ljg4OTJMMTYuNzAwMyAxOC43MzA3Wk03LjAwNzc3IDI4LjQyMzJMLTQwLjYyMTIgLTE5LjIwNTdMLTQwLjY3NTMgLTE5LjE1MTdMLTQwLjcyOTIgLTE5LjA5NzVMNy4wMDc3NyAyOC40MjMyWk02LjExMjQzIDI5LjMyMjdMNTMuNTIwMyA3Ny4xNzE3TDUzLjY4NTUgNzcuMDA4MUw1My44NDk0IDc2Ljg0MzRMNi4xMTI0MyAyOS4zMjI3Wk02LjAwNzgxIDI5LjU3MTNMLTYxLjM0ODMgMjkuMTMxNkwtNjEuMzUwNyAyOS40OTZMLTYxLjM0OTEgMjkuODYwNEw2LjAwNzgxIDI5LjU3MTNaTTYuMTA0MjggMjkuODE0NUwtNDMuMTM3NiA3NS43NzRMLTQzLjEwMzcgNzUuODEwM0wtNDMuMDY5OSA3NS44NDY1TDYuMTA0MjggMjkuODE0NVpNNi4zNjEwNiAyOS45MjU5TDYuMzM5NzMgOTcuMjgzNEw2LjM1MDQgOTcuMjgzNEg2LjM2MTA2VjI5LjkyNTlaTTE1LjA3OTUgMjkuOTI1OVY5Ny4yODM0SDE1LjIwODNMMTUuMzM3MSA5Ny4yODNMMTUuMDc5NSAyOS45MjU5Wk0xNS40MzI3IDI5LjU3MjZMODIuNzg5OCAyOS44MzAyTDgyLjc5MDMgMjkuNzAxNFYyOS41NzI2SDE1LjQzMjdaTTE1LjQzMjcgMjguNzA1OEwtNTEuOTI0OCAyOC43MDUzVjI4LjcwNThIMTUuNDMyN1pNMTUuMDc5NSAyOC4zNTEyTDE1LjMzNzUgLTM5LjAwNThMMTUuMjA4NSAtMzkuMDA2M0gxNS4wNzk1VjI4LjM1MTJaTTkuMzA1MjQgMjguMzUxMkwtMzguMzIzNyAtMTkuMjc3OEwtMTUzLjMxIDk1LjcwODhIOS4zMDUyNFYyOC4zNTEyWk0xNy44MTE3IDE5Ljg0NDhMNjUuNDQwNyAtMjcuNzg0MkwxNy44MTE3IC03NS40MTMyTC0yOS44MTczIC0yNy43ODQyTDE3LjgxMTcgMTkuODQ0OFpNMjYuMzE4MiAyOC4zNTEyVjk1LjcwODhIMTg4LjkzNEw3My45NDcyIC0xOS4yNzc4TDI2LjMxODIgMjguMzUxMlpNMjAuNDkzNyAyOC4zNTEyVi0zOS4wMDYzSDIwLjM2NDZMMjAuMjM1NiAtMzkuMDA1OEwyMC40OTM3IDI4LjM1MTJaTTIwLjE0MDQgMjguNzA1OEg4Ny40OThWMjguNzA1M0wyMC4xNDA0IDI4LjcwNThaTTIwLjE0MDQgMjkuNTcyNkw4Ny40OTc1IDI5LjgzMUw4Ny40OTggMjkuNzAxOFYyOS41NzI2SDIwLjE0MDRaTTIwLjI0NSAyOS44MjI2TDY3LjgzNDggLTE3Ljg0NTVMNjcuNTg5NyAtMTguMDkwMkw2Ny4zNDIyIC0xOC4zMzIzTDIwLjI0NSAyOS44MjI2Wk0yMC40OTM3IDI5LjkyNTlMMjAuMzEzMyA5Ny4yODMyTDIwLjQwMzUgOTcuMjgzNEgyMC40OTM3VjI5LjkyNTlaTTI5LjI2NTEgMjkuOTI1OUwyOS41MDM0IC0zNy40MzEyTDI5LjM4NDIgLTM3LjQzMTdIMjkuMjY1MVYyOS45MjU5Wk0yOS41MjMyIDI5LjgxNDVMLTE5LjI0NzQgLTE2LjY0NDlMLTE5LjQ1MDMgLTE2LjQzMTlMLTE5LjY1MTMgLTE2LjIxNzFMMjkuNTIzMiAyOS44MTQ1Wk0xNy44MDYzIDEyLjIxMDVMNjUuNDM1MyAtMzUuNDE4NEwxNy44MDYzIC04My4wNDc0TC0yOS44MjI3IC0zNS40MTg0TDE3LjgwNjMgMTIuMjEwNVpNMjAuNTE0IDE0LjkxODNMNjguMTQzIDYyLjU0NzNMMTE1Ljc3MiAxNC45MTgzTDY4LjE0MyAtMzIuNzEwN0wyMC41MTQgMTQuOTE4M1pNMTcuODEzMSAxNy42MTkzTC0yOS44MTU5IDY1LjI0ODNMMTcuODEzIDExMi44NzdMNjUuNDQyIDY1LjI0ODNMMTcuODEzMSAxNy42MTkzWk0xNS4xMDUzIDE0LjkxMTVMLTMyLjUyMzcgLTMyLjcxNzRMLTgwLjE1MjcgMTQuOTExNUwtMzIuNTIzNyA2Mi41NDA1TDE1LjEwNTMgMTQuOTExNVpNMjkuNTE1MSAyOS4zMjI3TDc3LjE0NCAtMTguMzA2M0w3Ni4yNDQ2IC0xOS4yMDU3TDI4LjYxNTYgMjguNDIzMkwtMTkuMDEzMyA3Ni4wNTIyTC0xOC4xMTM5IDc2Ljk1MTZMMjkuNTE1MSAyOS4zMjI3Wk0yOC42MTU2IDI4LjQyMzJMNzYuMjQ0NiAtMTkuMjA1N0w2Ni41NTM0IC0yOC44OTY5TDE4LjkyNDQgMTguNzMyTC0yOC43MDQ2IDY2LjM2MUwtMTkuMDEzMyA3Ni4wNTIyTDI4LjYxNTYgMjguNDIzMlpNMTguOTI0NCAxOC43MzJMNjYuNTUzNCA2Ni4zNjFMNjkuNDI4MyA2My40ODYxTDIxLjc5OTMgMTUuODU3MUwtMjUuODI5NyAtMzEuNzcxOEwtMjguNzA0NSAtMjguODk2OUwxOC45MjQ0IDE4LjczMlpNMjEuNzk5MyAxNS44NTcxTDY5LjQ3NTMgNjMuNDM5MUw3MC4xNjQxIDYyLjc0ODlMMjIuNDg4MiAxNS4xNjdMLTI1LjE4NzggLTMyLjQxNUwtMjUuODc2NiAtMzEuNzI0OEwyMS43OTkzIDE1Ljg1NzFaTTIyLjQ4ODIgMTUuMTY3TDcwLjQ1NCA2Mi40NTY2QzgyLjg2MjIgNDkuODcxMSA4OS44NTc5IDMyLjkzMzQgODkuOTQ4MSAxNS4yNjA1TDIyLjU5MTQgMTQuOTE3TC00NC43NjUzIDE0LjU3MzRDLTQ0LjY3NjEgLTIuOTEyMjEgLTM3Ljc1NDQgLTE5LjY3MDUgLTI1LjQ3NzcgLTMyLjEyMjdMMjIuNDg4MiAxNS4xNjdaTTIyLjU5MTQgMTQuOTE3TDg5Ljk0ODEgMTQuNTg0OEM4OS45MDQyIDUuNjc5NTMgODguMTA0IC0zLjEzMDc1IDg0LjY0OTQgLTExLjM0MTJMMjIuNTYzOSAxNC43ODIyTC0zOS41MjE2IDQwLjkwNTZDLTQyLjk0MDQgMzIuNzgwNSAtNDQuNzIxOSAyNC4wNjE4IC00NC43NjUzIDE1LjI0OTJMMjIuNTkxNCAxNC45MTdaTTIyLjU2MzkgMTQuNzgyMkw4NC42NDk0IC0xMS4zNDEyQzgxLjE5NTIgLTE5LjU1MDQgNzYuMTU1NCAtMjYuOTk3NiA2OS44MTgzIC0zMy4yNTYzTDIyLjQ4NjggMTQuNjY4M0wtMjQuODQ0NyA2Mi41OTI5Qy0zMS4xMTU5IDU2LjM5OTQgLTM2LjEwMzQgNDkuMDI5NSAtMzkuNTIxNiA0MC45MDU2TDIyLjU2MzkgMTQuNzgyMlpNMjIuNDg2OCAxNC42NjgzTDcwLjExNTggLTMyLjk2MDZMNjkuNDI1NiAtMzMuNjUwOEwyMS43OTY2IDEzLjk3ODFMLTI1LjgzMjQgNjEuNjA3MUwtMjUuMTQyMiA2Mi4yOTczTDIyLjQ4NjggMTQuNjY4M1pNMjEuNzk2NiAxMy45NzgxTDY5LjQ2OCAtMzMuNjA4NEw2Ni40MTkyIC0zNi42NjI2TDE4Ljc0NzggMTAuOTIzOUwtMjguOTIzNiA1OC41MTA1TC0yNS44NzQ4IDYxLjU2NDdMMjEuNzk2NiAxMy45NzgxWk0xOC43NDc4IDEwLjkyMzlMNjYuMzc2OCAtMzYuNzA1MUw2NS42ODY2IC0zNy4zOTUzTDE4LjA1NzYgMTAuMjMzN0wtMjkuNTcxMyA1Ny44NjI3TC0yOC44ODExIDU4LjU1MjlMMTguNzQ3OCAxMC45MjM5Wk0xOC4wNTc2IDEwLjIzMzdMNjYuMDk1NiAtMzYuOTgyOEM1OS43OTQ1IC00My4zOTM0IDUyLjI3OTMgLTQ4LjQ4NiA0My45ODc5IC01MS45NjI0TDE3Ljk0MzIgMTAuMTU2MkwtOC4xMDE1NSA3Mi4yNzQ3Qy0xNi4zMDcyIDY4LjgzNDMgLTIzLjc0NDUgNjMuNzk0NSAtMjkuOTgwMyA1Ny40NTAyTDE4LjA1NzYgMTAuMjMzN1pNMTcuOTQzMiAxMC4xNTYyTDQzLjk4NzkgLTUxLjk2MjRDMzUuNjk3IC01NS40Mzg1IDI2Ljc5NzIgLTU3LjIyODYgMTcuODA3NiAtNTcuMjI4NlYxMC4xMjg5Vjc3LjQ4NjVDOC45MTExNSA3Ny40ODY1IDAuMTAzNDU2IDc1LjcxNDkgLTguMTAxNTUgNzIuMjc0N0wxNy45NDMyIDEwLjE1NjJaTTE3LjgwNzYgMTAuMTI4OVYtNTcuMjI4NkM4LjgxNzg2IC01Ny4yMjg2IC0wLjA4MTk2NTkgLTU1LjQzODQgLTguMzcyNjIgLTUxLjk2MjRMMTcuNjcyMSAxMC4xNTYyTDQzLjcxNjggNzIuMjc0N0MzNS41MTIgNzUuNzE0OCAyNi43MDQzIDc3LjQ4NjUgMTcuODA3NiA3Ny40ODY1VjEwLjEyODlaTTE3LjY3MjEgMTAuMTU2MkwtOC4zNzI2MiAtNTEuOTYyNEMtMTYuNjYzNSAtNDguNDg2MiAtMjQuMTc4OCAtNDMuMzkzOCAtMzAuNDgwMyAtMzYuOTgyOEwxNy41NTc2IDEwLjIzMzdMNjUuNTk1NiA1Ny40NTAyQzU5LjM1OTQgNjMuNzk0OSA1MS45MjE5IDY4LjgzNDUgNDMuNzE2OCA3Mi4yNzQ3TDE3LjY3MjEgMTAuMTU2MlpNMTcuNTU3NiAxMC4yMzM3TC0zMC4xMTgxIC0zNy4zNDg0TC0zMC44MDgzIC0zNi42NTY5TDE2Ljg2NzQgMTAuOTI1M0w2NC41NDMyIDU4LjUwNzRMNjUuMjMzNCA1Ny44MTU5TDE3LjU1NzYgMTAuMjMzN1pNMTYuODY3NCAxMC45MjUzTC0zMC43NjE1IC0zNi43MDM3TC0zNC40OTc4IC0zMi45Njc0TDEzLjEzMTIgMTQuNjYxNUw2MC43NjAyIDYyLjI5MDVMNjQuNDk2NCA1OC41NTQyTDE2Ljg2NzQgMTAuOTI1M1pNMTMuMTMxMiAxNC42NjE1TC0zNC4wMjg0IC0zMy40MzIzQy00MC40NTY2IC0yNy4xMjkgLTQ1LjU2MzIgLTE5LjYwNjggLTQ5LjA0OTQgLTExLjMwNThMMTMuMDUzNyAxNC43NzU2TDc1LjE1NjggNDAuODU3MUM3MS43MDY2IDQ5LjA3MjUgNjYuNjUyNiA1Ni41MTcxIDYwLjI5MDcgNjIuNzU1NEwxMy4xMzEyIDE0LjY2MTVaTTEzLjA1MzcgMTQuNzc1NkwtNDkuMDQ5NCAtMTEuMzA1OEMtNTIuNTM1MSAtMy4wMDU4NCAtNTQuMzMxMSA1LjkwNjgyIC01NC4zMzExIDE0LjkxMDhIMTMuMDI2NUg4MC4zODRDODAuMzg0IDIzLjgyMiA3OC42MDY2IDMyLjY0MjcgNzUuMTU2OCA0MC44NTcxTDEzLjA1MzcgMTQuNzc1NlpNMTMuMDI2NSAxNC45MTA4SC01NC4zMzExQy01NC4zMzExIDIzLjkxNDggLTUyLjUzNTIgMzIuODI3NCAtNDkuMDQ5NCA0MS4xMjc1TDEzLjA1MzcgMTUuMDQ2MUw3NS4xNTY4IC0xMS4wMzU0Qzc4LjYwNjcgLTIuODIwOTYgODAuMzg0IDUuOTk5NzggODAuMzg0IDE0LjkxMDhIMTMuMDI2NVpNMTMuMDUzNyAxNS4wNDYxTC00OS4wNDk0IDQxLjEyNzVDLTQ1LjU2MzEgNDkuNDI4OCAtNDAuNDU2NCA1Ni45NTA5IC0zNC4wMjg0IDYzLjI1NEwxMy4xMzEyIDE1LjE2MDJMNjAuMjkwNyAtMzIuOTMzN0M2Ni42NTI0IC0yNi42OTU2IDcxLjcwNjUgLTE5LjI1MTEgNzUuMTU2OCAtMTEuMDM1NEwxMy4wNTM3IDE1LjA0NjFaTTEzLjEzMTIgMTUuMTYwMkwtMzQuNTA2OSA2Mi43ODAxTC0zMC45Mzc3IDY2LjM1MDZMMTYuNzAwMyAxOC43MzA3TDY0LjMzODQgLTI4Ljg4OTJMNjAuNzY5MiAtMzIuNDU5N0wxMy4xMzEyIDE1LjE2MDJaTTE2LjcwMDMgMTguNzMwN0wtMzAuOTI4NyAtMjguODk4M0wtNDAuNjIxMiAtMTkuMjA1N0w3LjAwNzc3IDI4LjQyMzJMNTQuNjM2OCA3Ni4wNTIyTDY0LjMyOTMgNjYuMzU5NkwxNi43MDAzIDE4LjczMDdaTTcuMDA3NzcgMjguNDIzMkwtNDAuNzI5MiAtMTkuMDk3NUwtNDEuNjI0NiAtMTguMTk4MUw2LjExMjQzIDI5LjMyMjdMNTMuODQ5NCA3Ni44NDM0TDU0Ljc0NDggNzUuOTQ0TDcuMDA3NzcgMjguNDIzMlpNNi4xMTI0MyAyOS4zMjI3TC00MS4yOTU1IC0xOC41MjY0Qy01NC4wMjA4IC01LjkxODM4IC02MS4yMzE0IDExLjIxODUgLTYxLjM0ODMgMjkuMTMxNkw2LjAwNzgxIDI5LjU3MTNMNzMuMzYzOSAzMC4wMTFDNzMuMjQ4MiA0Ny43MzcyIDY2LjExMjkgNjQuNjk1MiA1My41MjAzIDc3LjE3MTdMNi4xMTI0MyAyOS4zMjI3Wk02LjAwNzgxIDI5LjU3MTNMLTYxLjM0OTEgMjkuODYwNEMtNjEuMjc1OSA0Ni45MTIzIC01NC43NzIxIDYzLjMwODYgLTQzLjEzNzYgNzUuNzc0TDYuMTA0MjggMjkuODE0NUw1NS4zNDYxIC0xNi4xNDUxQzY2Ljg1NzQgLTMuODExNjYgNzMuMjkyMyAxMi40MTA5IDczLjM2NDcgMjkuMjgyMkw2LjAwNzgxIDI5LjU3MTNaTTYuMTA0MjggMjkuODE0NUwtNDMuMDY5OSA3NS44NDY1Qy0zNi43MzkzIDgyLjYwOTEgLTI5LjA4NzkgODguMDAxNSAtMjAuNTg4MyA5MS42ODkyTDYuMjIxMTEgMjkuODk2OEwzMy4wMzA1IC0zMS44OTU1QzQxLjQ0MTcgLTI4LjI0NjIgNDkuMDEzNyAtMjIuOTA5OSA1NS4yNzg0IC0xNi4yMTc1TDYuMTA0MjggMjkuODE0NVpNNi4yMjExMSAyOS44OTY4TC0yMC41ODgzIDkxLjY4OTJDLTEyLjA5MDUgOTUuMzc2MSAtMi45MjU1MSA5Ny4yODA1IDYuMzM5NzMgOTcuMjgzNEw2LjM2MTA2IDI5LjkyNTlMNi4zODIzOSAtMzcuNDMxN0MxNS41NTEzIC0zNy40Mjg3IDI0LjYyMSAtMzUuNTQ0MSAzMy4wMzA1IC0zMS44OTU1TDYuMjIxMTEgMjkuODk2OFpNNi4zNjEwNiAyOS45MjU5Vjk3LjI4MzRIMTUuMDc5NVYyOS45MjU5Vi0zNy40MzE3SDYuMzYxMDZWMjkuOTI1OVpNMTUuMDc5NSAyOS45MjU5TDE1LjMzNzEgOTcuMjgzQzMzLjIwNTkgOTcuMjE0NiA1MC4zMjMgOTAuMDg1OSA2Mi45NTc4IDc3LjQ1MUwxNS4zMjg5IDI5LjgyMkwtMzIuMzAwMSAtMTcuODA2OUMtMTkuNzk3NiAtMzAuMzA5NSAtMi44NTk3NyAtMzcuMzYzNSAxNC44MjE5IC0zNy40MzEyTDE1LjA3OTUgMjkuOTI1OVpNMTUuMzI4OSAyOS44MjJMNjIuOTU3OCA3Ny40NTFDNzUuNTkzOCA2NC44MTUgODIuNzIxNSA0Ny42OTc1IDgyLjc4OTggMjkuODMwMkwxNS40MzI3IDI5LjU3MjZMLTUxLjkyNDMgMjkuMzE1MUMtNTEuODU2NyAxMS42MzUgLTQ0LjgwMzcgLTUuMzAzMzIgLTMyLjMwMDEgLTE3LjgwNjlMMTUuMzI4OSAyOS44MjJaTTE1LjQzMjcgMjkuNTcyNkg4Mi43OTAzVjI4LjcwNThIMTUuNDMyN0gtNTEuOTI0OFYyOS41NzI2SDE1LjQzMjdaTTE1LjQzMjcgMjguNzA1OEw4Mi43OTAzIDI4LjcwNjNDODIuNzkwNCAxMC43OTI3IDc1LjY5MiAtNi4zOTA5MyA2My4wNDk3IC0xOS4wODE5TDE1LjMyOTMgMjguNDU1NkwtMzIuMzkxIDc1Ljk5M0MtNDQuOTAwOSA2My40MzUgLTUxLjkyNSA0Ni40MzE0IC01MS45MjQ4IDI4LjcwNTNMMTUuNDMyNyAyOC43MDU4Wk0xNS4zMjkzIDI4LjQ1NTZMNjMuMDQ5NyAtMTkuMDgxOUM1MC40MDggLTMxLjc3MjEgMzMuMjUyMSAtMzguOTM3MiAxNS4zMzc1IC0zOS4wMDU4TDE1LjA3OTUgMjguMzUxMkwxNC44MjE0IDk1LjcwODNDLTIuOTA1NTUgOTUuNjQwNCAtMTkuODgxOCA4OC41NTAzIC0zMi4zOTEgNzUuOTkzTDE1LjMyOTMgMjguNDU1NlpNMTUuMDc5NSAyOC4zNTEyVi0zOS4wMDYzSDkuMzA1MjRWMjguMzUxMlY5NS43MDg4SDE1LjA3OTVWMjguMzUxMlpNOS4zMDUyNCAyOC4zNTEyTDU2LjkzNDIgNzUuOTgwMkw2NS40NDA3IDY3LjQ3MzdMMTcuODExNyAxOS44NDQ4TC0yOS44MTczIC0yNy43ODQyTC0zOC4zMjM3IC0xOS4yNzc4TDkuMzA1MjQgMjguMzUxMlpNMTcuODExNyAxOS44NDQ4TC0yOS44MTczIDY3LjQ3MzdMLTIxLjMxMDggNzUuOTgwMkwyNi4zMTgyIDI4LjM1MTJMNzMuOTQ3MiAtMTkuMjc3OEw2NS40NDA3IC0yNy43ODQyTDE3LjgxMTcgMTkuODQ0OFpNMjYuMzE4MiAyOC4zNTEyVi0zOS4wMDYzSDIwLjQ5MzdWMjguMzUxMlY5NS43MDg4SDI2LjMxODJWMjguMzUxMlpNMjAuNDkzNyAyOC4zNTEyTDIwLjIzNTYgLTM5LjAwNThDMi4zMjEyNCAtMzguOTM3MiAtMTQuODM0OCAtMzEuNzcyMyAtMjcuNDc2NSAtMTkuMDgxOUwyMC4yNDM4IDI4LjQ1NTZMNjcuOTY0MSA3NS45OTNDNTUuNDU0OCA4OC41NTA1IDM4LjQ3ODUgOTUuNjQwNCAyMC43NTE3IDk1LjcwODNMMjAuNDkzNyAyOC4zNTEyWk0yMC4yNDM4IDI4LjQ1NTZMLTI3LjQ3NjUgLTE5LjA4MTlDLTQwLjExODUgLTYuMzkxMjkgLTQ3LjIxNzMgMTAuNzkyMiAtNDcuMjE3MSAyOC43MDYzTDIwLjE0MDQgMjguNzA1OEw4Ny40OTggMjguNzA1M0M4Ny40OTgxIDQ2LjQzMTkgODAuNDczNyA2My40MzU0IDY3Ljk2NDEgNzUuOTkzTDIwLjI0MzggMjguNDU1NlpNMjAuMTQwNCAyOC43MDU4SC00Ny4yMTcxVjI5LjU3MjZIMjAuMTQwNEg4Ny40OThWMjguNzA1OEgyMC4xNDA0Wk0yMC4xNDA0IDI5LjU3MjZMLTQ3LjIxNjYgMjkuMzE0M0MtNDcuMjUxNCAzOC4zNzU5IC00NS40NjY4IDQ3LjM1MiAtNDEuOTY4OCA1NS43MTA5TDIwLjE2NzQgMjkuNzA4M0w4Mi4zMDM1IDMuNzA1NjJDODUuNzY1NiAxMS45Nzg2IDg3LjUzMTkgMjAuODYyNSA4Ny40OTc1IDI5LjgzMUwyMC4xNDA0IDI5LjU3MjZaTTIwLjE2NzQgMjkuNzA4M0wtNDEuOTY4OCA1NS43MTA5Qy0zOC40NzA1IDY0LjA3MDMgLTMzLjMzIDcxLjY0MiAtMjYuODUyMSA3Ny45Nzc2TDIwLjI0NSAyOS44MjI2TDY3LjM0MjIgLTE4LjMzMjNDNzMuNzUzNSAtMTIuMDYxOCA3OC44NDEyIC00LjU2Nzk0IDgyLjMwMzUgMy43MDU2MkwyMC4xNjc0IDI5LjcwODNaTTIwLjI0NSAyOS44MjI2TC0yNy4zNDQ3IDc3LjQ5MDhDLTE0LjY5NDUgOTAuMTIwMiAyLjQzNjkxIDk3LjIzNTMgMjAuMzEzMyA5Ny4yODMyTDIwLjQ5MzcgMjkuOTI1OUwyMC42NzQxIC0zNy40MzE0QzM4LjM2MzkgLTM3LjM4NCA1NS4zMTY2IC0zMC4zNDMxIDY3LjgzNDggLTE3Ljg0NTVMMjAuMjQ1IDI5LjgyMjZaTTIwLjQ5MzcgMjkuOTI1OVY5Ny4yODM0SDI5LjI2NTFWMjkuOTI1OVYtMzcuNDMxN0gyMC40OTM3VjI5LjkyNTlaTTI5LjI2NTEgMjkuOTI1OUwyOS4wMjY3IDk3LjI4M0MzOC4zMzcyIDk3LjMxNiA0Ny41NTIgOTUuNDI4NCA1Ni4wOTYyIDkxLjc0MDlMMjkuNDA1NyAyOS44OTcxTDIuNzE1MjUgLTMxLjk0NjdDMTEuMTcwNiAtMzUuNTk1OSAyMC4yODk3IC0zNy40NjM4IDI5LjUwMzQgLTM3LjQzMTJMMjkuMjY1MSAyOS45MjU5Wk0yOS40MDU3IDI5Ljg5NzFMNTYuMDk2MiA5MS43NDA5QzY0LjY0MyA4OC4wNTIzIDcyLjMzNjkgODIuNjQxMiA3OC42OTc3IDc1Ljg0NjFMMjkuNTIzMiAyOS44MTQ1TC0xOS42NTEzIC0xNi4yMTcxQy0xMy4zNTY2IC0yMi45NDE2IC01Ljc0MjY2IC0yOC4yOTY1IDIuNzE1MjUgLTMxLjk0NjdMMjkuNDA1NyAyOS44OTcxWk0yOS41MjMyIDI5LjgxNDVMNzguMjkzOCA3Ni4yNzM4QzkwLjU1NDMgNjMuNDAzNCA5Ny4yNjI4IDQ2LjIyNjUgOTYuOTY4MiAyOC40NTA2TDI5LjYxOTkgMjkuNTY2OUwtMzcuNzI4NCAzMC42ODMyQy0zOC4wMiAxMy4wOTE0IC0zMS4zODA5IC0zLjkwNzcgLTE5LjI0NzQgLTE2LjY0NDlMMjkuNTIzMiAyOS44MTQ1Wk0yOS42MTk5IDI5LjU2NjlMOTYuOTY4MiAyOC40NTA2Qzk2LjY3MzYgMTAuNjc1MyA4OS4zOTk5IC02LjI2OTk4IDc2LjcxOTIgLTE4LjcyNzRMMjkuNTE1MSAyOS4zMjI3TC0xNy42ODkxIDc3LjM3MjdDLTMwLjIzODUgNjUuMDQ0MyAtMzcuNDM2OCA0OC4yNzQ0IC0zNy43Mjg0IDMwLjY4MzJMMjkuNjE5OSAyOS41NjY5Wk0xNy44MDYzIDEyLjIxMDVMLTI5LjgyMjcgNTkuODM5NUwtMjcuMTE0OSA2Mi41NDczTDIwLjUxNCAxNC45MTgzTDY4LjE0MyAtMzIuNzEwN0w2NS40MzUzIC0zNS40MTg0TDE3LjgwNjMgMTIuMjEwNVpNMjAuNTE0IDE0LjkxODNMLTI3LjExNDkgLTMyLjcxMDdMLTI5LjgxNTkgLTMwLjAwOTdMMTcuODEzMSAxNy42MTkzTDY1LjQ0MiA2NS4yNDgzTDY4LjE0MyA2Mi41NDczTDIwLjUxNCAxNC45MTgzWk0xNy44MTMxIDE3LjYxOTNMNjUuNDQyMSAtMzAuMDA5N0w2Mi43MzQzIC0zMi43MTc0TDE1LjEwNTMgMTQuOTExNUwtMzIuNTIzNyA2Mi41NDA1TC0yOS44MTU5IDY1LjI0ODNMMTcuODEzMSAxNy42MTkzWk0xNS4xMDUzIDE0LjkxMTVMNjIuNzM0MyA2Mi41NDA1TDY1LjQzNTMgNTkuODM5NUwxNy44MDYzIDEyLjIxMDVMLTI5LjgyMjcgLTM1LjQxODRMLTMyLjUyMzcgLTMyLjcxNzRMMTUuMTA1MyAxNC45MTE1WlwiXG4gICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiBtYXNrPVwidXJsKCNwYXRoLTEtaW5zaWRlLTFfMTg0OV8xMzM4NClcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjYuMjUzNyAwLjc0MDIzNEwyNi42OTc0IDIuNTg0MzdDMjYuOTIzNSAzLjUyNDU3IDI3LjQyNTUgNC4zOTc3IDI4LjE1NDUgNS4xMTg2MkMyOC44ODM2IDUuODM5NTQgMjkuODE0NyA2LjM4MzY2IDMwLjg1NzEgNi42OTc5MUwzMS44Mzk0IDYuOTkzOTFMMzAuODU3MSA3LjI4OTkyQzI5LjgxNDcgNy42MDQxNyAyOC44ODM2IDguMTQ4MjggMjguMTU0NSA4Ljg2OTIxQzI3LjQyNTUgOS41OTAxMyAyNi45MjM1IDEwLjQ2MzMgMjYuNjk3NCAxMS40MDM1TDI2LjI1MzcgMTMuMjQ3NkwyNS44MSAxMS40MDM1QzI1LjU4MzkgMTAuNDYzMyAyNS4wODE5IDkuNTkwMTMgMjQuMzUyOCA4Ljg2OTIxQzIzLjYyMzggOC4xNDgyOCAyMi42OTI3IDcuNjA0MTcgMjEuNjUwMyA3LjI4OTkyTDIwLjY2OCA2Ljk5MzkxTDIxLjY1MDMgNi42OTc5MUMyMi42OTI3IDYuMzgzNjYgMjMuNjIzOCA1LjgzOTU0IDI0LjM1MjggNS4xMTg2MkMyNS4wODE5IDQuMzk3NyAyNS41ODM5IDMuNTI0NTcgMjUuODEgMi41ODQzN0wyNi4yNTM3IDAuNzQwMjM0WlwiXG4gICAgICAgICAgICAgICAgICAgICAgZmlsbD1cInVybCgjcGFpbnQwX2xpbmVhcl8xODQ5XzEzMzg0KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjkyNDQgOS41MTM1MUw5Ljc3Mjc5IDguODYwMzVMOS42MjExNyA5LjUxMzUxQzkuNTEyNTIgOS45ODI1NCA5LjI2NjY2IDEwLjQxOTIgOC45MDczOSAxMC43ODEyQzguNTQ4MTIgMTEuMTQzMyA4LjA4NzYgMTEuNDE4NCA3LjU3MDQyIDExLjU4TDcuMzc4OTEgMTEuNjM5OEw3LjU3MDQyIDExLjY5OTVDOC4wODc2IDExLjg2MTEgOC41NDgxMiAxMi4xMzYzIDguOTA3MzkgMTIuNDk4M0M5LjI2NjY2IDEyLjg2MDMgOS41MTI1MiAxMy4yOTcgOS42MjExNyAxMy43NjZMOS43NzI3OSAxNC40MTkyTDkuOTI0NCAxMy43NjZDMTAuMDMzIDEzLjI5NyAxMC4yNzg5IDEyLjg2MDMgMTAuNjM4MiAxMi40OTgzQzEwLjk5NzUgMTIuMTM2MyAxMS40NTggMTEuODYxMSAxMS45NzUyIDExLjY5OTVMMTIuMTY2NyAxMS42Mzk4TDExLjk3NTIgMTEuNThDMTEuNDU4IDExLjQxODQgMTAuOTk3NSAxMS4xNDMzIDEwLjYzODIgMTAuNzgxMkMxMC4yNzg5IDEwLjQxOTIgMTAuMDMzIDkuOTgyNTQgOS45MjQ0IDkuNTEzNTFaXCJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwidXJsKCNwYWludDFfbGluZWFyXzE4NDlfMTMzODQpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggb3BhY2l0eT1cIjAuNlwiXG4gICAgICAgICAgICAgICAgICAgICAgZD1cIk03LjY4OTYxIDIxLjU2MjRMNy41MDYwOCAyMC42NzU4TDcuMzIzMzQgMjEuNTYzMUM3LjI3NTQ5IDIxLjc5NDMgNy4xNjEwOSAyMi4wMTEyIDYuOTkwODQgMjIuMTkzNUM2LjgyMDU5IDIyLjM3NTggNi42MDAwNSAyMi41MTc1IDYuMzQ5ODMgMjIuNjA1NEw1LjkxMDE2IDIyLjc2MDNMNi4zNDk4MyAyMi45MTUzQzYuNiAyMy4wMDM0IDYuODIwNDUgMjMuMTQ1MiA2Ljk5MDU2IDIzLjMyNzZDNy4xNjA2NyAyMy41MSA3LjI3NDg5IDIzLjcyNyA3LjMyMjU1IDIzLjk1ODNMNy41MDYwOCAyNC44NDQ5TDcuNjg4ODEgMjMuOTU3NkM3LjczNjY3IDIzLjcyNjMgNy44NTEwNyAyMy41MDk1IDguMDIxMzEgMjMuMzI3MkM4LjE5MTU2IDIzLjE0NDkgOC40MTIxIDIzLjAwMzIgOC42NjIzMiAyMi45MTUzTDkuMTAyIDIyLjc2MDNMOC42NjIzMiAyMi42MDU0QzguNDEyMTUgMjIuNTE3MyA4LjE5MTcxIDIyLjM3NTUgOC4wMjE2IDIyLjE5MzFDNy44NTE0OSAyMi4wMTA3IDcuNzM3MjYgMjEuNzkzNyA3LjY4OTYxIDIxLjU2MjRaXCJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwidXJsKCNwYWludDJfbGluZWFyXzE4NDlfMTMzODQpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50IGlkPVwicGFpbnQwX2xpbmVhcl8xODQ5XzEzMzg0XCIgeDE9XCIyMy40NlwiIHkxPVwiMTMuOTQyMlwiIHgyPVwiMjMuNDZcIiB5Mj1cIjAuMDQ1MTYyNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9XCIjMTE3RkY1XCIgc3RvcC1vcGFjaXR5PVwiMC4yXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzA1OTFGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9saW5lYXJHcmFkaWVudD5cbiAgICAgICAgICAgICAgICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9XCJwYWludDFfbGluZWFyXzE4NDlfMTMzODRcIiB4MT1cIjE1Ljc1NzVcIiB5MT1cIjIyLjc1NzRcIiB4Mj1cIjE1Ljc1NzVcIiB5Mj1cIjguODYwMzVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMDU5MUZGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICAgICAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cInBhaW50Ml9saW5lYXJfMTg0OV8xMzM4NFwiIHgxPVwiNS45MTAxNlwiIHkxPVwiMjAuNjc1OFwiIHgyPVwiOS4xMDJcIiB5Mj1cIjIwLjY3NThcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwiIzAwQTNGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMzM0I1RkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhaS1pbnNpZ2h0cy10aXRsZSB0ZXh0LWRhcmtcIj57eyBjLmFpSW5zaWdodHMudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWktaW5zaWdodHMtbGlzdCBiZy13aGl0ZSBteS00IHAtNCByb3VuZGVkLWxnXCI+XG4gICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGluc2lnaHQgb2YgYy5haUluc2lnaHRzLnN1bW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnNpZ2h0LWJ1bGxldC1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzIDJMMyAxNEgxMkwxMSAyMkwyMSAxMEgxMkwxMyAyWlwiIHN0cm9rZT1cIiMzM0I1RkZcIiBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB7eyBpbnNpZ2h0IH19XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBSaWdodDogTWV0cmljcyAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb252LXJpZ2h0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWNzLXBhbmVsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpY3MtdGl0bGVcIj5NZXRyaWNzPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtIG9mIGMubWV0cmljczsgbGV0IG1pID0gaW5kZXhcIj5cblxuICAgICAgICAgICAgICAgICAgPCEtLSBCT09MRUFOX0JBU0tFVCAtLT5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtLnR5cGUgPT09ICdCT09MRUFOX0JBU0tFVCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1zZWN0aW9uLWxhYmVsIG1iLTFcIj57eyBtLm5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1yb3ctaXRlbVwiICpuZ0Zvcj1cImxldCByb3cgb2YgbS52YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0cmljLWtleVwiPjxzcGFuIGNsYXNzPVwiZG90XCI+PC9zcGFuPnt7IHJvdy5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJtZXRyaWMtdmFsXCI+e3sgcm93LnNjb3JlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWRpdmlkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIE5VTUVSSUNfU0NBTEFSIC0tPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm0udHlwZSA9PT0gJ05VTUVSSUNfU0NBTEFSJyB8fCBtLnR5cGUgPT09ICdOVU1FUklDX0FSUkFZJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLXNlY3Rpb24tbGFiZWwgbWItMVwiPnt7IG0ubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLXJvdy1pdGVtXCIgKm5nRm9yPVwibGV0IHJvdyBvZiBtLnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRyaWMta2V5XCI+VG90YWw8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cIm1ldHJpYy12YWxcIj57eyByb3cuVG90YWwgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtcm93LWl0ZW1cIiAqbmdGb3I9XCJsZXQgcm93IG9mIG0udmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldHJpYy1rZXlcIj5Bdmc8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cIm1ldHJpYy12YWxcIj57eyByb3cuQXZnIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWRpdmlkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIFNVQkpFQ1RJVkUgLS0+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibS50eXBlID09PSAnU1VCSkVDVElWRSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1zZWN0aW9uLWxhYmVsIG1iLTFcIj57eyBtLm5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibWV0cmljLWJ1bGxldC1saXN0IG1ldHJpYy1idWxsZXQtbGlzdC0tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxsaSAgKm5nRm9yPVwibGV0IHJvdyBvZiBtLnZhbHVlXCI+e3sgcm93LnJlYXNvbmluZyB9fTwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtZGl2aWRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bGliLXBhZ2luYXRpb24gKm5nSWY9XCJ0b3RhbEl0ZW1zID4gMFwiIFtpdGVtc1BlclBhZ2VdPVwicGFnZVNpemVcIiBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIiBbdG90YWxJdGVtc109XCJ0b3RhbEl0ZW1zXCJcbiAgICAgIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCIgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxuICAgICAgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XG4gIDwvZGl2PlxuPC9kaXY+Il19
979
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8tcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1haS1hdWRpby9zcmMvbGliL2NvbXBvbmVudHMvYXVkaW8tcGFnZS9hdWRpby1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFpLWF1ZGlvL3NyYy9saWIvY29tcG9uZW50cy9hdWRpby1wYWdlL2F1ZGlvLXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQWMsWUFBWSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckgsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFXMUMsTUFBTSxPQUFPLGtCQUFrQjtJQTBEbkI7SUFDQTtJQUNEO0lBQ0M7SUFDQTtJQUNBO0lBOURGLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQ04sa0JBQWtCLENBQThCO0lBQzNDLGVBQWUsQ0FBYztJQUVuRSxtREFBbUQ7SUFDbkQsUUFBUSxHQUFVLEVBQUUsQ0FBQztJQUNyQixXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4QixXQUFXLEdBQXNFLEVBQUUsQ0FBQztJQUNwRixjQUFjLEdBQWtCLElBQUksQ0FBQztJQUNyQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFFaEIsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDakMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVB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Q0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMxRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sY0FBYztRQUNwQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSTtnQkFDRixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLGFBQWEsQ0FBQztnQkFDL0MsSUFBSSxFQUFFO29CQUFFLEVBQUUsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQzthQUN4QztZQUFDLE1BQU0sR0FBRTtRQUNaLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQzt3R0FwK0JZLGtCQUFrQjs0RkFBbEIsa0JBQWtCLDJWQ2IvQiwrOXFFQWtwQk07OzRGRHJvQk8sa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGdCQUFnQjtnT0FNTyxrQkFBa0I7c0JBQWxELFNBQVM7dUJBQUMsb0JBQW9CO2dCQUNPLGVBQWU7c0JBQXBELFNBQVM7dUJBQUMsaUJBQWlCO2dCQWlMNUIsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXVkaW9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXVkaW8uc2VydmljZSc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hdWRpby1wYWdlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXVkaW8tcGFnZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYXVkaW8tcGFnZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdWRpb1BhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgQFZpZXdDaGlsZCgnY2hhdFRocmVhZE1lc3NhZ2VzJykgY2hhdFRocmVhZE1lc3NhZ2VzITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnc2Nyb2xsQ29udGFpbmVyJykgcHJpdmF0ZSBzY3JvbGxDb250YWluZXIhOiBFbGVtZW50UmVmO1xyXG5cclxuICAvLyBhaS1jaGF0IHZhcmlhYmxlcyAodXNlZCBieSBpbmxpbmVkIGFpLWNoYXQgSFRNTClcclxuICBtZXNzYWdlczogYW55W10gPSBbXTtcclxuICB1c2VyTWVzc2FnZSA9ICcnO1xyXG4gIGlzVHlwaW5nID0gZmFsc2U7XHJcbiAgc2hvd0NoYXRIaXN0b3J5ID0gZmFsc2U7XHJcbiAgY2hhdEhpc3Rvcnk6IHsgc2Vzc2lvbl9pZDogc3RyaW5nOyBzZXNzaW9uX3RpdGxlOiBzdHJpbmc7IG1lc3NhZ2VzPzogYW55W10gfVtdID0gW107XHJcbiAgc2VsZWN0ZWRDaGF0SWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGlzQ2hhdExvYWRpbmcgPSBmYWxzZTtcclxuICBzZWFyY2hUZXh0ID0gJyc7XHJcblxyXG4gIGdldCBmaWx0ZXJlZEhpc3RvcnkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGF0SGlzdG9yeS5maWx0ZXIoaCA9PlxyXG4gICAgICBoLnNlc3Npb25fdGl0bGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnNlYXJjaFRleHQudG9Mb3dlckNhc2UoKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRDaGF0VGl0bGUoKTogc3RyaW5nIHsgcmV0dXJuICdUYW5nbyBTU0cgQUknOyB9XHJcblxyXG4gIHRvdGFsQXVkaW8gPSAwO1xyXG4gIGZpbHRlclR5cGUgPSAnJztcclxuICBzZWxlY3RlZENvaG9ydElkID0gJyc7XHJcbiAgaXNDb2hvcnREcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICBjb2hvcnRMaXN0OiB7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9W10gPSBbXTtcclxuICBjb2hvcnRPcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGNoYXRRdWVyeSA9ICcnO1xyXG5cclxuICBjdXJyZW50UGFnZSA9IDE7XHJcbiAgb2Zmc2V0ID0gMTtcclxuICBwYWdlU2l6ZSA9IDEwO1xyXG4gIHRvdGFsSXRlbXMgPSAwO1xyXG4gIHBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcclxuICBkaXNwbGF5ZWRDb252ZXJzYXRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICBpc0xvYWRpbmdDYXJkcyA9IGZhbHNlO1xyXG4gIGlzTG9hZGluZ0NvbnZlcnNhdGlvbnMgPSBmYWxzZTtcclxuXHJcbiAgc2VsZWN0ZWRDYXJkSWQgPSAnJztcclxuICBzZWxlY3RlZENhcmROYW1lID0gJyc7XHJcblxyXG5cclxuICAvLyDilIDilIAgV2VpZ2h0YWdlIG9wdGlvbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcbiAgd2VpZ2h0YWdlT3B0aW9ucyA9IFsnTG93JywgJ01lZGl1bScsICdIaWdoJywgJ0NyaXRpY2FsJ107XHJcblxyXG4gIC8vIOKUgOKUgCBEeW5hbWljIFN0YXQgQ2FyZHMgZnJvbSBBUEkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcbiAgY29ob3J0Q2FyZHM6IHtcclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIHR5cGU6IGFueTtcclxuICAgIGJvb2xlYW5Sb3dzPzogYW55W107XHJcbiAgICBudW1lcmljRGF0YT86IGFueTtcclxuICAgIHN1YmplY3RpdmVSb3dzPzogYW55W107XHJcbiAgICBwaXRjaFJvd3M/OiBhbnlbXTtcclxuICB9W10gPSBbXTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcGFnZUluZm86IFBhZ2VJbmZvU2VydmljZSxcclxuICAgIHByaXZhdGUgYXVkaW9TZXJ2aWNlOiBBdWRpb1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7fVxyXG5cclxuICBwYXJzZU1hcmtkb3duKHRleHQ6IHN0cmluZyk6IFNhZmVIdG1sIHtcclxuICAgIGlmICghdGV4dCkgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKCcnKTtcclxuXHJcbiAgICBjb25zdCBpbWdQbGFjZWhvbGRlcnM6IHN0cmluZ1tdID0gW107XHJcbiAgICBjb25zdCBpbWdTdHlsZSA9ICdtYXgtd2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjhweDttYXJnaW46OHB4IDA7ZGlzcGxheTpibG9jazsnO1xyXG5cclxuICAgIGxldCBwcm9jZXNzZWQgPSB0ZXh0XHJcbiAgICAgIC5yZXBsYWNlKC88aW1nXFxzW14+XSo+L2dpLCAobWF0Y2gpID0+IHtcclxuICAgICAgICBjb25zdCBoYXNTdHlsZSA9IC9zdHlsZT0vaS50ZXN0KG1hdGNoKTtcclxuICAgICAgICBjb25zdCB0YWcgPSBoYXNTdHlsZSA/IG1hdGNoIDogbWF0Y2gucmVwbGFjZSgvXFwvPz4kLywgYCBzdHlsZT1cIiR7aW1nU3R5bGV9XCIgLz5gKTtcclxuICAgICAgICBpbWdQbGFjZWhvbGRlcnMucHVzaCh0YWcpO1xyXG4gICAgICAgIHJldHVybiBgJSVJTUdfJHtpbWdQbGFjZWhvbGRlcnMubGVuZ3RoIC0gMX0lJWA7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5yZXBsYWNlKC8hXFxbKFteXFxdXSopXFxdXFwoKGh0dHBzPzpcXC9cXC9bXildKylcXCkvZywgKF8sIGFsdCwgc3JjKSA9PiB7XHJcbiAgICAgICAgaW1nUGxhY2Vob2xkZXJzLnB1c2goYDxpbWcgc3JjPVwiJHtzcmN9XCIgYWx0PVwiJHthbHR9XCIgc3R5bGU9XCIke2ltZ1N0eWxlfVwiIC8+YCk7XHJcbiAgICAgICAgcmV0dXJuIGAlJUlNR18ke2ltZ1BsYWNlaG9sZGVycy5sZW5ndGggLSAxfSUlYDtcclxuICAgICAgfSlcclxuICAgICAgLnJlcGxhY2UoLyhodHRwcz86XFwvXFwvXFxTK1xcLig/OmpwZ3xqcGVnfHBuZ3xnaWZ8d2VicHxzdmcpKFxcP1teXFxzXSopPykvZ2ksIChfLCBzcmMpID0+IHtcclxuICAgICAgICBpbWdQbGFjZWhvbGRlcnMucHVzaChgPGltZyBzcmM9XCIke3NyY31cIiBhbHQ9XCJpbWFnZVwiIHN0eWxlPVwiJHtpbWdTdHlsZX1cIiAvPmApO1xyXG4gICAgICAgIHJldHVybiBgJSVJTUdfJHtpbWdQbGFjZWhvbGRlcnMubGVuZ3RoIC0gMX0lJWA7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGxldCBodG1sID0gcHJvY2Vzc2VkXHJcbiAgICAgIC5yZXBsYWNlKC8mL2csICcmYW1wOycpLnJlcGxhY2UoLzwvZywgJyZsdDsnKS5yZXBsYWNlKC8+L2csICcmZ3Q7JylcclxuICAgICAgLnJlcGxhY2UoL14jIyMgKC4rKSQvZ20sICc8aDU+JDE8L2g1PicpXHJcbiAgICAgIC5yZXBsYWNlKC9eIyMgKC4rKSQvZ20sICc8aDQ+JDE8L2g0PicpXHJcbiAgICAgIC5yZXBsYWNlKC9eIyAoLispJC9nbSwgJzxoMz4kMTwvaDM+JylcclxuICAgICAgLnJlcGxhY2UoL1xcKlxcKiguKz8pXFwqXFwqL2csICc8c3Ryb25nPiQxPC9zdHJvbmc+JylcclxuICAgICAgLnJlcGxhY2UoL19fKC4rPylfXy9nLCAnPHN0cm9uZz4kMTwvc3Ryb25nPicpXHJcbiAgICAgIC5yZXBsYWNlKC9cXCooLis/KVxcKi9nLCAnPGVtPiQxPC9lbT4nKVxyXG4gICAgICAucmVwbGFjZSgvXyguKz8pXy9nLCAnPGVtPiQxPC9lbT4nKVxyXG4gICAgICAucmVwbGFjZSgvXlxccypbLSpdICguKykkL2dtLCAnPGxpPiQxPC9saT4nKVxyXG4gICAgICAucmVwbGFjZSgvXlxccypcXGQrXFwuICguKykkL2dtLCAnPGxpPiQxPC9saT4nKVxyXG4gICAgICAucmVwbGFjZSgvKDxsaT4uKjxcXC9saT4pL2dzLCAnPHVsPiQxPC91bD4nKVxyXG4gICAgICAucmVwbGFjZSgvXFxuezIsfS9nLCAnPC9wPjxwPicpXHJcbiAgICAgIC5yZXBsYWNlKC9cXG4vZywgJzxicj4nKTtcclxuICAgIGh0bWwgPSBgPHA+JHtodG1sfTwvcD5gO1xyXG5cclxuICAgIGh0bWwgPSBodG1sLnJlcGxhY2UoLyUlSU1HXyhcXGQrKSUlL2csIChfLCBpKSA9PiBpbWdQbGFjZWhvbGRlcnNbK2ldIHx8ICcnKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoaHRtbCk7XHJcbiAgfVxyXG5cclxuICBwYXJzZUNvaG9ydEFuYWx5c2lzKHJlc3BvbnNlOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGFuYWx5c2lzID0gcmVzcG9uc2U/LmRhdGE/LmNvaG9ydEFuYWx5c2lzO1xyXG4gICAgaWYgKCFhbmFseXNpcykgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMudG90YWxBdWRpbyA9IGFuYWx5c2lzLnRvdGFsQXVkaW9BdmFpbGFibGUgfHwgMDtcclxuICAgIHRoaXMuY29ob3J0Q2FyZHMgPSBbXTtcclxuXHJcbiAgICBjb25zdCBza2lwS2V5cyA9IG5ldyBTZXQoWyd0b3RhbEF1ZGlvQXZhaWxhYmxlJywgJ2NvaG9ydFR5cGUnLCAnZGF0ZVJhbmdlJywgJ3VuaXF1ZVBpdGNoZXMnXSk7XHJcblxyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoYW5hbHlzaXMpKSB7XHJcbiAgICAgIGlmIChza2lwS2V5cy5oYXMoa2V5KSkgY29udGludWU7XHJcbiAgICAgIGNvbnN0IHNlY3Rpb24gPSBhbmFseXNpc1trZXldO1xyXG4gICAgICBpZiAoIXNlY3Rpb24gfHwgdHlwZW9mIHNlY3Rpb24gIT09ICdvYmplY3QnKSBjb250aW51ZTtcclxuXHJcbiAgICAgIGNvbnN0IHZhbHVlczogYW55W10gPSBzZWN0aW9uLnZhbHVlIHx8IFtdO1xyXG4gICAgICBjb25zdCB0eXBlID0gc2VjdGlvbi50eXBlO1xyXG5cclxuICAgICAgaWYgKCF2YWx1ZXMubGVuZ3RoKSBjb250aW51ZTtcclxuXHJcbiAgICAgIGlmICh0eXBlID09PSAnQk9PTEVBTl9CQVNLRVQnKSB7XHJcbiAgICAgICAgdGhpcy5jb2hvcnRDYXJkcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHNlY3Rpb24ubmFtZSB8fCBrZXksXHJcbiAgICAgICAgICB0eXBlOiAnQk9PTEVBTl9CQVNLRVQnLFxyXG4gICAgICAgICAgYm9vbGVhblJvd3M6IHZhbHVlcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgaWQ6IGl0ZW0uX2lkIHx8ICcnLFxyXG4gICAgICAgICAgICBsYWJlbDogaXRlbS5uYW1lLFxyXG4gICAgICAgICAgICByZXNwb25zZXM6IGl0ZW0uUmVzcG9uc2VzID8/IGl0ZW0uY291bnQgPz8gMCxcclxuICAgICAgICAgICAgc2NvcmU6IGl0ZW0uc2NvcmUgPz8gMFxyXG4gICAgICAgICAgfSkpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ05VTUVSSUNfU0NBTEFSJykge1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSB2YWx1ZXNbMF0gfHwge307XHJcbiAgICAgICAgdGhpcy5jb2hvcnRDYXJkcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHNlY3Rpb24ubmFtZSB8fCBrZXksXHJcbiAgICAgICAgICB0eXBlOiAnTlVNRVJJQ19TQ0FMQVInLFxyXG4gICAgICAgICAgbnVtZXJpY0RhdGE6IHsgdG90YWw6IGl0ZW0uVG90YWwgPz8gMCwgYXZnOiBpdGVtLkF2ZyA/PyAwIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnTlVNRVJJQ19BUlJBWScpIHtcclxuICAgICAgICAgY29uc3QgaXRlbSA9IHZhbHVlc1swXSB8fCB7fTtcclxuICAgICAgICB0aGlzLmNvaG9ydENhcmRzLnB1c2goe1xyXG4gICAgICAgICAgbmFtZTogc2VjdGlvbi5uYW1lIHx8IGtleSxcclxuICAgICAgICAgIHR5cGU6ICdOVU1FUklDX0FSUkFZJyxcclxuICAgICAgICAgIG51bWVyaWNEYXRhOiB7IHRvdGFsOiBpdGVtLlRvdGFsID8/IDAsIGF2ZzogaXRlbS5BdmcgPz8gMCB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodHlwZSA9PT0gJ1NVQkpFQ1RJVkUnfHx0eXBlPT09J1NVQkpFQ1RJVkVfQ09VTlQnKSB7XHJcbiAgICAgICAgdGhpcy5jb2hvcnRDYXJkcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHNlY3Rpb24ubmFtZSB8fCBrZXksXHJcbiAgICAgICAgICB0eXBlOiB0eXBlLFxyXG4gICAgICAgICAgc3ViamVjdGl2ZVJvd3M6IHZhbHVlcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgX2lkOiBpdGVtLl9pZCB8fCAnJyxcclxuICAgICAgICAgICAgcmVhc29uaW5nOiBpdGVtLnJlYXNvbmluZyB8fCAnJyxcclxuICAgICAgICAgICAgc3RvcmVfaWQ6IGl0ZW0uc3RvcmVfaWQgfHwgJycsXHJcbiAgICAgICAgICAgIGRhdGU6IGl0ZW0uZGF0ZSB8fCAnJ1xyXG4gICAgICAgICAgfSkpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBJbnNlcnQgdW5pcXVlIHBpdGNoZXMgY2FyZCBpZiBwcmVzZW50XHJcbiAgICBpZiAoYW5hbHlzaXMudW5pcXVlUGl0Y2hlcyAmJiBBcnJheS5pc0FycmF5KGFuYWx5c2lzLnVuaXF1ZVBpdGNoZXMpKSB7XHJcbiAgICAgIGNvbnN0IHBpdGNoSW5zZXJ0SWR4ID0gdGhpcy5jb2hvcnRDYXJkcy5sZW5ndGggPj0gMiA/IDIgOiB0aGlzLmNvaG9ydENhcmRzLmxlbmd0aDtcclxuICAgICAgdGhpcy5jb2hvcnRDYXJkcy5zcGxpY2UocGl0Y2hJbnNlcnRJZHgsIDAsIHtcclxuICAgICAgICBuYW1lOiAnVW5pcXVlIFBpdGNoZXMnLFxyXG4gICAgICAgIHR5cGU6ICdVTklRVUVfUElUQ0hFUycsXHJcbiAgICAgICAgcGl0Y2hSb3dzOiBhbmFseXNpcy51bmlxdWVQaXRjaGVzLm1hcCgocDogYW55KSA9PiAoeyBpZDogcC5waXRjaElkLCBkZXNjOiBwLmRlc2NyaXB0aW9uIH0pKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbkRvY3VtZW50Q2xpY2soZTogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKCEoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJy5jb2hvcnQtZHJvcGRvd24nKSkge1xyXG4gICAgICB0aGlzLmlzQ29ob3J0RHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAoIShlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnLnBsdXMtbWVudS13cmFwJykpIHtcclxuICAgICAgdGhpcy5zaG93UGx1c01lbnUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOKUgOKUgCBBSSBNb2RlbCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuICByZWFkb25seSBtb2RlbE9wdGlvbnMgPSBbXHJcbiAgICB7IGxhYmVsOiAndjEnLCB2YWx1ZTogJ2dlbWluaS0yLjUtcHJvJyB9LFxyXG4gICAgeyBsYWJlbDogJ3YyJywgdmFsdWU6ICdjbGF1ZGUtc29ubmV0LTQtNicgfVxyXG4gIF07XHJcbiAgc2VsZWN0ZWRNb2RlbCA9ICdnZW1pbmktMi41LXBybyc7XHJcbiAgc2hvd1BsdXNNZW51ID0gZmFsc2U7XHJcblxyXG4gIGdldCBzZWxlY3RlZE1vZGVsVmVyc2lvbigpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbWF0Y2ggPSB0aGlzLnNlbGVjdGVkTW9kZWwubWF0Y2goLyhcXGQrXFwuXFxkKykvKTtcclxuICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogJyc7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RNb2RlbCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7IHRoaXMuc2VsZWN0ZWRNb2RlbCA9IHZhbHVlOyB9XHJcbiAgdG9nZ2xlUGx1c01lbnUoKTogdm9pZCB7IHRoaXMuc2hvd1BsdXNNZW51ID0gIXRoaXMuc2hvd1BsdXNNZW51OyB9XHJcbiAgY2xvc2VQbHVzTWVudSgpOiB2b2lkIHsgdGhpcy5zaG93UGx1c01lbnUgPSBmYWxzZTsgfVxyXG5cclxuICBzZWxlY3RDb2hvcnRUeXBlKG9wdGlvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlclR5cGUgPSBvcHRpb247XHJcbiAgICBjb25zdCBmb3VuZCA9IHRoaXMuY29ob3J0TGlzdC5maW5kKGMgPT4gYy5uYW1lID09PSBvcHRpb24pO1xyXG4gICAgdGhpcy5zZWxlY3RlZENvaG9ydElkID0gZm91bmQgPyBmb3VuZC5pZCA6ICcnO1xyXG4gICAgdGhpcy5pc0NvaG9ydERyb3Bkb3duT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLm9mZnNldCA9IDE7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2FyZElkID0gJyc7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2FyZE5hbWUgPSAnJztcclxuICAgIHRoaXMuZmV0Y2hDb2hvcnRDYXJkcygpO1xyXG4gICAgdGhpcy5mZXRjaENvbnZlcnNhdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIC8vIOKUgOKUgCBXYXZlZm9ybSAmIFBsYXllciDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbiAgd2F2ZWZvcm1IZWlnaHRzID0gW1xyXG4gICAgOCwgMjIsIDM4LCA1MiwgNDQsIDI4LCA1NiwgNDIsIDE4LCAzMiwgNTQsIDQ2LCAyNCwgNDAsIDYwLCA1MCwgMjYsIDQ0LFxyXG4gICAgMzYsIDE4LCA1MiwgMzgsIDI4LCA0NiwgMzQsIDIwLCA1NiwgNDIsIDE0LCAzNiwgNTAsIDMwLCAyMiwgNDQsIDU2LCAzOCxcclxuICAgIDIwLCA0NiwgMzAsIDE2LCA1MCwgMzYsIDI0LCA1NCwgNDIsIDI4LCAzNiwgMjAsIDQ2LCAzMiwgMTgsIDQwLCA1NiwgNDQsXHJcbiAgICAyNCwgMzYsIDIwLCA1MCwgMzQsIDIyXHJcbiAgXTtcclxuXHJcbiAgLyoqIDAuMCDigJMgMS4wOiBmcmFjdGlvbiBvZiBhdWRpbyB0aGF0IGhhcyBiZWVuIHBsYXllZCAqL1xyXG4gIC8vIHBsYXlQcm9ncmVzcyA9IDAuMTg7XHJcbiAgLyoqIElEIG9mIHRoZSBjb252ZXJzYXRpb24gd2hvc2UgYXVkaW8gaXMgY3VycmVudGx5IHBsYXlpbmcgKG51bGwgPSBub25lKSAqL1xyXG4gIHBsYXlpbmdDb252SWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGlzTXV0ZWQgPSBmYWxzZTtcclxuICAvLyBQZXItY29udmVyc2F0aW9uIHBsYXliYWNrIHN0YXRlcyBmb3IgVUkgcGVyc2lzdGVuY2VcclxuICBwbGF5YmFja1N0YXRlczogeyBbaWQ6IHN0cmluZ106IHsgY3VycmVudFRpbWU6IHN0cmluZywgdG90YWxUaW1lOiBzdHJpbmcsIHByb2dyZXNzOiBudW1iZXIgfSB8IHVuZGVmaW5lZCB9ID0ge307XHJcblxyXG4gIG9uTG9hZGVkTWV0YWRhdGEoYXVkaW86IEhUTUxBdWRpb0VsZW1lbnQsIGNvbnZJZDogc3RyaW5nLCBhcGlEdXJhdGlvbj86IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLnBsYXliYWNrU3RhdGVzW2NvbnZJZF0pIHtcclxuICAgICAgdGhpcy5wbGF5YmFja1N0YXRlc1tjb252SWRdID0geyBjdXJyZW50VGltZTogJzA6MDAnLCB0b3RhbFRpbWU6ICcwOjAwJywgcHJvZ3Jlc3M6IDAgfTtcclxuICAgIH1cclxuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5wbGF5YmFja1N0YXRlc1tjb252SWRdITtcclxuICAgIC8vIFVzZSBicm93c2VyIGR1cmF0aW9uIGlmIHZhbGlkOyBvdGhlcndpc2UgZmFsbCBiYWNrIHRvIEFQSS1wcm92aWRlZCBzdHJpbmdcclxuICAgIGlmIChpc0Zpbml0ZShhdWRpby5kdXJhdGlvbikgJiYgYXVkaW8uZHVyYXRpb24gPiAwKSB7XHJcbiAgICAgIHN0YXRlLnRvdGFsVGltZSA9IHRoaXMuZm9ybWF0VGltZShhdWRpby5kdXJhdGlvbik7XHJcbiAgICB9IGVsc2UgaWYgKGFwaUR1cmF0aW9uKSB7XHJcbiAgICAgIHN0YXRlLnRvdGFsVGltZSA9IGFwaUR1cmF0aW9uO1xyXG4gICAgfVxyXG4gICAgLy8gUmVzdG9yZSBzYXZlZCBwbGF5YmFjayBwb3NpdGlvbiBpZiB1c2VyIGhhZCBiZWVuIGxpc3RlbmluZyBiZWZvcmVcclxuICAgIGlmIChzdGF0ZS5wcm9ncmVzcyA+IDAgJiYgaXNGaW5pdGUoYXVkaW8uZHVyYXRpb24pICYmIGF1ZGlvLmR1cmF0aW9uID4gMCkge1xyXG4gICAgICBhdWRpby5jdXJyZW50VGltZSA9IHN0YXRlLnByb2dyZXNzICogYXVkaW8uZHVyYXRpb247XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblRpbWVVcGRhdGUoYXVkaW86IEhUTUxBdWRpb0VsZW1lbnQsIGNvbnZJZDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRoaXMucGxheWJhY2tTdGF0ZXNbY29udklkXSkge1xyXG4gICAgICB0aGlzLnBsYXliYWNrU3RhdGVzW2NvbnZJZF0gPSB7IGN1cnJlbnRUaW1lOiAnMDowMCcsIHRvdGFsVGltZTogJzA6MDAnLCBwcm9ncmVzczogMCB9O1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnBsYXliYWNrU3RhdGVzW2NvbnZJZF0hO1xyXG4gICAgc3RhdGUuY3VycmVudFRpbWUgPSB0aGlzLmZvcm1hdFRpbWUoYXVkaW8uY3VycmVudFRpbWUpO1xyXG4gICAgaWYgKGlzRmluaXRlKGF1ZGlvLmR1cmF0aW9uKSAmJiBhdWRpby5kdXJhdGlvbiA+IDApIHtcclxuICAgICAgc3RhdGUucHJvZ3Jlc3MgPSBhdWRpby5jdXJyZW50VGltZSAvIGF1ZGlvLmR1cmF0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbmZvcm1hdFRpbWUoc2Vjb25kczogbnVtYmVyKTogc3RyaW5nIHtcclxuICBpZiAoIXNlY29uZHMpIHJldHVybiAnMDowMCc7XHJcblxyXG4gIGNvbnN0IG1pbnMgPSBNYXRoLmZsb29yKHNlY29uZHMgLyA2MCk7XHJcbiAgY29uc3Qgc2VjcyA9IE1hdGguZmxvb3Ioc2Vjb25kcyAlIDYwKTtcclxuXHJcbiAgcmV0dXJuIGAke21pbnN9OiR7c2VjcyA8IDEwID8gJzAnICsgc2VjcyA6IHNlY3N9YDtcclxufVxyXG5cclxuICBzZWVrQXVkaW8oZXZlbnQ6IE1vdXNlRXZlbnQsIGNvbnZJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCB0cmFjayA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCByYXRpbyA9IGV2ZW50Lm9mZnNldFggLyB0cmFjay5vZmZzZXRXaWR0aDtcclxuICAgIGNvbnN0IGF1ZGlvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYGF1ZGlvLSR7Y29udklkfWApIGFzIEhUTUxBdWRpb0VsZW1lbnQ7XHJcbiAgICBpZiAoIWF1ZGlvIHx8ICFhdWRpby5kdXJhdGlvbikgcmV0dXJuO1xyXG4gICAgYXVkaW8uY3VycmVudFRpbWUgPSByYXRpbyAqIGF1ZGlvLmR1cmF0aW9uO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlUGxheShjb252SWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgYXVkaW8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgYXVkaW8tJHtjb252SWR9YCkgYXMgSFRNTEF1ZGlvRWxlbWVudDtcclxuICAgIGlmICghYXVkaW8pIHJldHVybjtcclxuXHJcbiAgICBpZiAodGhpcy5wbGF5aW5nQ29udklkID09PSBjb252SWQpIHtcclxuICAgICAgYXVkaW8ucGF1c2UoKTtcclxuICAgICAgdGhpcy5wbGF5aW5nQ29udklkID0gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIFBhdXNlIHByZXZpb3VzbHkgcGxheWluZyBhdWRpb1xyXG4gICAgICBpZiAodGhpcy5wbGF5aW5nQ29udklkKSB7XHJcbiAgICAgICAgY29uc3Qgb3RoZXJBdWRpbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBhdWRpby0ke3RoaXMucGxheWluZ0NvbnZJZH1gKSBhcyBIVE1MQXVkaW9FbGVtZW50O1xyXG4gICAgICAgIGlmIChvdGhlckF1ZGlvKSBvdGhlckF1ZGlvLnBhdXNlKCk7XHJcbiAgICAgICAgdGhpcy5wbGF5aW5nQ29udklkID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICAvLyBwbGF5KCkgcmV0dXJucyBhIFByb21pc2Ug4oCUIGhhbmRsZSByZWplY3Rpb24gdG8gYXZvaWQgc2lsZW50IGZhaWx1cmVzXHJcbiAgICAgIGNvbnN0IHBsYXlQcm9taXNlID0gYXVkaW8ucGxheSgpO1xyXG4gICAgICBpZiAocGxheVByb21pc2UgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHBsYXlQcm9taXNlLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbGF5aW5nQ29udklkID0gY29udklkO1xyXG4gICAgICAgIH0pLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tBdWRpb10gUGxheSBmYWlsZWQ6JywgZXJyKTtcclxuICAgICAgICAgIHRoaXMucGxheWluZ0NvbnZJZCA9IG51bGw7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wbGF5aW5nQ29udklkID0gY29udklkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b2dnbGVNdXRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc011dGVkID0gIXRoaXMuaXNNdXRlZDtcclxuICAgIGNvbnN0IGF1ZGlvcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F1ZGlvJyk7XHJcbiAgICBhdWRpb3MuZm9yRWFjaChhID0+IGEubXV0ZWQgPSB0aGlzLmlzTXV0ZWQpO1xyXG4gIH1cclxuXHJcbiAgLy8g4pSA4pSAIEFjY29yZGlvbiBTdGF0ZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbiAgb3BlbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBhY3RpdmVUYWI6IHsgW2lkOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG5oZWFkZXJEYXRhOiBhbnk7XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldFBhZ2VEYXRhKCk7XHJcbiAgICB0aGlzLmluaXRDaGF0U2Vzc2lvbigpO1xyXG4gICAgdGhpcy5sb2FkQ2hhdEhpc3RvcnlMaXN0KCk7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIHRoaXMuaGVhZGVyRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgICAgIHRoaXMub2Zmc2V0ID0gMTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2FyZElkID0gJyc7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhcmROYW1lID0gJyc7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvaG9ydExpc3RMb2FkZWQpIHtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hDb2hvcnRMaXN0KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hDb2hvcnRDYXJkcygpO1xyXG4gICAgICAgICAgdGhpcy5mZXRjaENvbnZlcnNhdGlvbnMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb2hvcnRMaXN0TG9hZGVkID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgZmV0Y2hDb2hvcnRMaXN0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgY2xpZW50SWQgPSAnMTEnO1xyXG4gICAgdGhpcy5hdWRpb1NlcnZpY2UubGlzdENvaG9ydHMoY2xpZW50SWQsIDEwMCwgMCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29ob3J0TGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgY29ob3J0cyA9IHJlcz8uZGF0YT8uY29ob3J0cyB8fCBbXTtcclxuICAgICAgICB0aGlzLmNvaG9ydExpc3QgPSBjb2hvcnRzLm1hcCgoYzogYW55KSA9PiAoeyBpZDogYy5jb2hvcnRJZCwgbmFtZTogYy5jb2hvcnROYW1lIHx8ICcnIH0pKTtcclxuICAgICAgICB0aGlzLmNvaG9ydE9wdGlvbnMgPSB0aGlzLmNvaG9ydExpc3QubWFwKGMgPT4gYy5uYW1lKTtcclxuICAgICAgICBpZiAodGhpcy5jb2hvcnRMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyVHlwZSA9IHRoaXMuY29ob3J0TGlzdFswXS5uYW1lO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvaG9ydElkID0gdGhpcy5jb2hvcnRMaXN0WzBdLmlkO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZldGNoQ29ob3J0Q2FyZHMoKTtcclxuICAgICAgICB0aGlzLmZldGNoQ29udmVyc2F0aW9ucygpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29ob3J0TGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5mZXRjaENvaG9ydENhcmRzKCk7XHJcbiAgICAgICAgdGhpcy5mZXRjaENvbnZlcnNhdGlvbnMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZFBheWxvYWQoKTogYW55IHtcclxuICAgIGNvbnN0IGNsaWVudElkID0gICcxMSc7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBjbGllbnRJZDogQXJyYXkuaXNBcnJheShjbGllbnRJZCkgPyBjbGllbnRJZCA6IFtjbGllbnRJZF0sXHJcbiAgICAgIHN0b3JlSWQ6IFtcclxuICAgICAgICBcIjExLTEwNjJcIixcclxuICAgICAgICBcIjExLTEwNzhcIixcclxuICAgICAgICBcIjExLTEwODNcIixcclxuICAgICAgICBcIjExLTE1MTVcIixcclxuICAgICAgICBcIjExLTE1NFwiLFxyXG4gICAgICAgIFwiMTEtMTYyNlwiLFxyXG4gICAgICAgIFwiMTEtMTgxXCIsXHJcbiAgICAgICAgXCIxMS0xOTQ3XCIsXHJcbiAgICAgICAgXCIxMS0xOTk0XCIsXHJcbiAgICAgICAgXCIxMS0yMDBcIixcclxuICAgICAgICBcIjExLTIwMlwiLFxyXG4gICAgICAgIFwiMTEtMjE1XCIsXHJcbiAgICAgICAgXCIxMS0yNjBcIixcclxuICAgICAgICBcIjExLTc4XCIsXHJcbiAgICAgICAgXCIxMS04MTlcIlxyXG4gICAgXSxcclxuICAgICAgY29ob3J0VHlwZTogdGhpcy5zZWxlY3RlZENvaG9ydElkID8gW3RoaXMuc2VsZWN0ZWRDb2hvcnRJZF0gOiBbXSxcclxuICAgICAgc3RhcnREYXRlOiBcIjIwMjYtMDMtMDFcIixcclxuICAgICAgZW5kRGF0ZTogXCIyMDI2LTAzLTI4XCIsXHJcbiAgICAgIGlzQUk6IHRydWUsXHJcbiAgICAgIGFuYWx5dGljc1R5cGU6ICdhdWRpbycsXHJcbiAgICAgIGlzRXhwb3J0OiBmYWxzZVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGZldGNoQ29ob3J0Q2FyZHMoKTogdm9pZCB7XHJcbiAgIFxyXG4gICAgdGhpcy5pc0xvYWRpbmdDYXJkcyA9IHRydWU7XHJcbiAgICB0aGlzLmF1ZGlvU2VydmljZS5nZXRDb2hvcnRBbmFseXNpc0NhcmQodGhpcy5idWlsZFBheWxvYWQoKSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMucGFyc2VDb2hvcnRBbmFseXNpcyhyZXMpO1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nQ2FyZHMgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHsgdGhpcy5pc0xvYWRpbmdDYXJkcyA9IGZhbHNlOyB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLm9mZnNldCA9IDE7XHJcbiAgICB0aGlzLnNlbmRDaGF0TWVzc2FnZSgpO1xyXG4gIH1cclxuXHJcbiAgZmV0Y2hDb252ZXJzYXRpb25zKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnBhZ2VTaXplIHx8IHRoaXMucGFnZVNpemUgPCAxKSB7IHRoaXMucGFnZVNpemUgPSAxMDsgfVxyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgLi4udGhpcy5idWlsZFBheWxvYWQoKSxcclxuICAgICAgLy8gc2VhcmNoVmFsdWU6IHRoaXMuY2hhdFF1ZXJ5IHx8ICcnLFxyXG4gICAgICBsaW1pdDogdGhpcy5wYWdlU2l6ZSxcclxuICAgICAgX2lkOiB0aGlzLnNlbGVjdGVkQ2FyZElkID8gW3RoaXMuc2VsZWN0ZWRDYXJkSWRdIDogW10sXHJcbiAgICAgIG5hbWU6IHRoaXMuc2VsZWN0ZWRDYXJkSWQgPyAnJyA6ICh0aGlzLnNlbGVjdGVkQ2FyZE5hbWUgfHwgJycpLFxyXG4gICAgICBvZmZzZXQ6IHRoaXMuY3VycmVudFBhZ2UgLSAxXHJcbiAgICB9O1xyXG4gICAgdGhpcy5pc0xvYWRpbmdDb252ZXJzYXRpb25zID0gdHJ1ZTtcclxuICAgIHRoaXMuYXVkaW9TZXJ2aWNlLmdldENvbnZlcnNhdGlvbnNMaXN0KHBheWxvYWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBsaXN0ID0gcmVzPy5kYXRhPy5kYXRhIHx8IHJlcz8uZGF0YT8uY29udmVyc2F0aW9ucyB8fCBbXTtcclxuICAgICAgICB0aGlzLmNvbnZlcnNhdGlvbnMgPSBsaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB0aGlzLm1hcENvbnZlcnNhdGlvbihpdGVtKSk7XHJcbiAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gcmVzPy5kYXRhPy5jb3VudCA/PyByZXM/LmRhdGE/LnBhZ2luYXRpb24/LnRvdGFsID8/IHRoaXMuY29udmVyc2F0aW9ucy5sZW5ndGg7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSB0aGlzLnRvdGFsSXRlbXMgPiAxMCA/IFsxMCwgMjAsIDUwLCAxMDBdIDogW3RoaXMudG90YWxJdGVtcyB8fCAxMF07XHJcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IHRoaXMucGFnaW5hdGlvblNpemVzLmluY2x1ZGVzKHRoaXMucGFnZVNpemUpID8gdGhpcy5wYWdlU2l6ZSA6IHRoaXMucGFnaW5hdGlvblNpemVzWzBdO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGlzcGxheWVkQ29udmVyc2F0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nQ29udmVyc2F0aW9ucyA9IGZhbHNlO1xyXG4gICAgICAgIC8vIEF1dG8tb3BlbiBmaXJzdCBjb252ZXJzYXRpb25cclxuICAgICAgICBpZiAodGhpcy5kaXNwbGF5ZWRDb252ZXJzYXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5kaXNwbGF5ZWRDb252ZXJzYXRpb25zWzBdO1xyXG4gICAgICAgICAgdGhpcy5vcGVuSWQgPSBmaXJzdC5hdWRpb0lkO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmFjdGl2ZVRhYltmaXJzdC5hdWRpb0lkXSkgdGhpcy5hY3RpdmVUYWJbZmlyc3QuYXVkaW9JZF0gPSAnc3VtbWFyeSc7XHJcbiAgICAgICAgICB0aGlzLmxvYWRDb252ZXJzYXRpb25EZXRhaWwoZmlyc3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmNvbnZlcnNhdGlvbnMgPSBbXTtcclxuICAgICAgICB0aGlzLmRpc3BsYXllZENvbnZlcnNhdGlvbnMgPSBbXTtcclxuICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSAwO1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nQ29udmVyc2F0aW9ucyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGFyc2VNZXRyaWNzKHJhdzogYW55KTogeyBuYW1lOiBzdHJpbmc7IHR5cGU6IHN0cmluZzsgdmFsdWU6IGFueVtdIH1bXSB7XHJcbiAgICBpZiAoIXJhdyB8fCB0eXBlb2YgcmF3ICE9PSAnb2JqZWN0JykgcmV0dXJuIFtdO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmF3KSkgcmV0dXJuIHJhdzsgLy8gYWxyZWFkeSBwYXJzZWRcclxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHJhdylcclxuICAgICAgLmZpbHRlcigoc2VjdGlvbjogYW55KSA9PiBzZWN0aW9uICYmIHR5cGVvZiBzZWN0aW9uID09PSAnb2JqZWN0JyAmJiBzZWN0aW9uLnR5cGUpXHJcbiAgICAgIC5tYXAoKHNlY3Rpb246IGFueSkgPT4gKHtcclxuICAgICAgICBuYW1lOiBzZWN0aW9uLm5hbWUgfHwgJycsXHJcbiAgICAgICAgdHlwZTogc2VjdGlvbi50eXBlIHx8ICcnLFxyXG4gICAgICAgIHZhbHVlOiBzZWN0aW9uLnZhbHVlIHx8IFtdXHJcbiAgICAgIH0pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFwQ29udmVyc2F0aW9uKGl0ZW06IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBoYXNEZXRhaWwgPSAhIShpdGVtLmFpSW5zaWdodHMgfHwgaXRlbS5jb252ZXJzYXRpb25EZXRhaWxzKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGF1ZGlvSWQ6IGl0ZW0uZG9jX2lkIHx8IGl0ZW0uYXVkaW9JZCB8fCBpdGVtLl9pZCB8fCAnJyxcclxuICAgICAgc3RvcmVJZDogaXRlbS5zdG9yZUlkIHx8ICcnLFxyXG4gICAgICBzdG9yZU5hbWU6IGl0ZW0uc3RvcmVOYW1lIHx8ICcnLFxyXG4gICAgICB1c2VyTmFtZTogaXRlbS5zdGFmZiB8fCBpdGVtLnN0YWZmSWQgfHwgaXRlbS51c2VyTmFtZSB8fCBpdGVtLnN0YWZmTmFtZSB8fCAnJyxcclxuICAgICAgbG9jYXRpb246IGl0ZW0ubG9jYXRpb24gfHwgaXRlbS5zdGF0ZSB8fCAnJyxcclxuICAgICAgZGF0ZTogaXRlbS5kYXRlIHx8ICcnLFxyXG4gICAgICB0aW1lOiBpdGVtLlRpbWVzdGFtcCB8fCBpdGVtLnRpbWUgfHwgJycsXHJcbiAgICAgIGR1cmF0aW9uOiBpdGVtLkR1cmF0aW9uIHx8IGl0ZW0uZHVyYXRpb24gfHwgJycsXHJcbiAgICAgIGF1ZGlvRGVzY3JpcHRpb246IGl0ZW0uU3VtbWFyeSB8fCBpdGVtLmF1ZGlvRGVzY3JpcHRpb24gfHwgaXRlbS5zdW1tYXJ5IHx8IGl0ZW0uY29udmVyc2F0aW9uRGV0YWlscz8uYXVkaW9TdW1tYXJ5IHx8ICcnLFxyXG4gICAgICBleWVUZXN0TGluazogISFpdGVtLmV5ZVRlc3RMaW5rLFxyXG4gICAgICBhdWRpb1VybDogaXRlbS5hdWRpb1VybCB8fCBpdGVtLmF1ZGlvX3VybCB8fCAnJyxcclxuICAgICAgbWV0cmljczogdGhpcy5wYXJzZU1ldHJpY3MoaXRlbS5tZXRyaWNzKSxcclxuICAgICAgYWlJbnNpZ2h0czogaXRlbS5haUluc2lnaHRzIHx8IHsgdGl0bGU6ICdUYW5nbyBBSSBHZW5lcmF0ZWQgSW5zaWdodHMnLCBzdW1tYXJ5OiBbXSB9LFxyXG4gICAgICBjb252ZXJzYXRpb25EZXRhaWxzOiBpdGVtLmNvbnZlcnNhdGlvbkRldGFpbHMgfHwgeyBhdWRpb1N1bW1hcnk6ICcnLCB0cmFuc2NyaXB0aW9uOiAnJyB9LFxyXG4gICAgICBfZGV0YWlsTG9hZGVkOiBoYXNEZXRhaWwsXHJcbiAgICAgIF9kZXRhaWxMb2FkaW5nOiBmYWxzZSxcclxuICAgICAgX2RldGFpbEVycm9yOiBmYWxzZVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGxvYWRDb252ZXJzYXRpb25EZXRhaWwoY29udjogYW55KTogdm9pZCB7XHJcbiAgICAvLyBTa2lwIGlmIGFscmVhZHkgbG9hZGVkIEFORCBhdWRpb1VybCBpcyBwb3B1bGF0ZWQ7IGFsd2F5cyByZS1mZXRjaCBpZiBhdWRpb1VybCBpcyBtaXNzaW5nXHJcbiAgICBpZiAoKGNvbnYuX2RldGFpbExvYWRlZCAmJiBjb252LmF1ZGlvVXJsKSB8fCBjb252Ll9kZXRhaWxMb2FkaW5nKSByZXR1cm47XHJcbiAgICBjb252Ll9kZXRhaWxMb2FkaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7IGNvaG9ydElkOiB0aGlzLnNlbGVjdGVkQ29ob3J0SWQgPyBbdGhpcy5zZWxlY3RlZENvaG9ydElkXSA6IFtdLCBjbGllbnRJZDogJzExJyB9O1xyXG4gICAgdGhpcy5hdWRpb1NlcnZpY2UuZ2V0Q29udmVyc2F0aW9uRGV0YWlsKGNvbnYuYXVkaW9JZCwgcGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdbQXVkaW9EZXRhaWxdIHJhdyByZXNwb25zZTonLCBKU09OLnN0cmluZ2lmeShyZXMpKTtcclxuICAgICAgICAvLyBoYW5kbGU6IHsgZGF0YTogaXRlbSB9IG9yIHsgZGF0YTogeyBkYXRhOiBpdGVtIH0gfSBvciBpdGVtIGRpcmVjdGx5XHJcbiAgICAgICAgY29uc3QgcmF3ID0gcmVzPy5kYXRhO1xyXG4gICAgICAgIGNvbnN0IGRldGFpbCA9IHJhdz8uYXVkaW9JZCA/IHJhdyA6IChyYXc/LmRhdGE/LmF1ZGlvSWQgPyByYXcuZGF0YSA6IChyYXcgfHwge30pKTtcclxuICAgICAgICBpZiAoZGV0YWlsLm1ldHJpY3MpIGNvbnYubWV0cmljcyA9IHRoaXMucGFyc2VNZXRyaWNzKGRldGFpbC5tZXRyaWNzKTtcclxuICAgICAgICBpZiAoZGV0YWlsLmFpSW5zaWdodHM/LnN1bW1hcnk/Lmxlbmd0aCkgY29udi5haUluc2lnaHRzID0gZGV0YWlsLmFpSW5zaWdodHM7XHJcbiAgICAgICAgaWYgKGRldGFpbC5jb252ZXJzYXRpb25EZXRhaWxzPy5hdWRpb1N1bW1hcnkpIGNvbnYuY29udmVyc2F0aW9uRGV0YWlscyA9IGRldGFpbC5jb252ZXJzYXRpb25EZXRhaWxzO1xyXG4gICAgICAgIGlmIChkZXRhaWwuYXVkaW9VcmwgfHwgZGV0YWlsLmF1ZGlvX3VybCkgY29udi5hdWRpb1VybCA9IGRldGFpbC5hdWRpb1VybCB8fCBkZXRhaWwuYXVkaW9fdXJsO1xyXG4gICAgICAgIGNvbnYuX2RldGFpbExvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgY29udi5fZGV0YWlsTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKCkgPT4geyBjb252Ll9kZXRhaWxMb2FkaW5nID0gZmFsc2U7IGNvbnYuX2RldGFpbEVycm9yID0gdHJ1ZTsgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNldFBhZ2VEYXRhKCkge1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRUaXRsZSgnQ29ob3J0cycpO1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXREZXNjcmlwdGlvbignVG8gb3B0aW1pemUgYW5kIGltcHJvdmUgZXhpc3RpbmcgYWxnb3JpdGhtJyk7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldEJyZWFkY3J1bWJzKFtcclxuICAgICAgeyB0aXRsZTogJ0F1ZGlvJywgcGF0aDogJy9tYW5hZ2UvYWktYXVkaW8vYXVkaW8nLCBpc0FjdGl2ZTogZmFsc2UsIGlzU2VwYXJhdG9yOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiAnQ29ob3J0cycsIHBhdGg6ICcnLCBpc0FjdGl2ZTogZmFsc2UsIGlzU2VwYXJhdG9yOiB0cnVlIH0sXHJcbiAgICBdKTtcclxuICB9XHJcbiAgY29udmVyc2F0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgdG9nZ2xlQ29udmVyc2F0aW9uKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlzQ2xvc2luZyA9IHRoaXMub3BlbklkID09PSBpZDtcclxuICAgIC8vIEJlZm9yZSBjbG9zaW5nLCBzYXZlIGN1cnJlbnQgcGxheWJhY2sgc3RhdGUgYW5kIHBhdXNlXHJcbiAgICBpZiAoaXNDbG9zaW5nICYmIHRoaXMucGxheWluZ0NvbnZJZCA9PT0gaWQpIHtcclxuICAgICAgY29uc3QgYXVkaW8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgYXVkaW8tJHtpZH1gKSBhcyBIVE1MQXVkaW9FbGVtZW50O1xyXG4gICAgICBpZiAoYXVkaW8pIHtcclxuICAgICAgICBpZiAoIXRoaXMucGxheWJhY2tTdGF0ZXNbaWRdKSB7XHJcbiAgICAgICAgICB0aGlzLnBsYXliYWNrU3RhdGVzW2lkXSA9IHsgY3VycmVudFRpbWU6ICcwOjAwJywgdG90YWxUaW1lOiAnMDowMCcsIHByb2dyZXNzOiAwIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucGxheWJhY2tTdGF0ZXNbaWRdIS5jdXJyZW50VGltZSA9IHRoaXMuZm9ybWF0VGltZShhdWRpby5jdXJyZW50VGltZSk7XHJcbiAgICAgICAgdGhpcy5wbGF5YmFja1N0YXRlc1tpZF0hLnByb2dyZXNzID0gKGlzRmluaXRlKGF1ZGlvLmR1cmF0aW9uKSAmJiBhdWRpby5kdXJhdGlvbiA+IDApXHJcbiAgICAgICAgICA/IGF1ZGlvLmN1cnJlbnRUaW1lIC8gYXVkaW8uZHVyYXRpb24gOiAwO1xyXG4gICAgICAgIGF1ZGlvLnBhdXNlKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wbGF5aW5nQ29udklkID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMub3BlbklkID0gaXNDbG9zaW5nID8gbnVsbCA6IGlkO1xyXG4gICAgaWYgKCF0aGlzLmFjdGl2ZVRhYltpZF0pIHtcclxuICAgICAgdGhpcy5hY3RpdmVUYWJbaWRdID0gJ3N1bW1hcnknO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3BlbklkID09PSBpZCkge1xyXG4gICAgICBjb25zdCBjb252ID0gdGhpcy5kaXNwbGF5ZWRDb252ZXJzYXRpb25zLmZpbmQoYyA9PiBjLmF1ZGlvSWQgPT09IGlkKTtcclxuICAgICAgaWYgKGNvbnYpIHRoaXMubG9hZENvbnZlcnNhdGlvbkRldGFpbChjb252KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFRhYihpZDogc3RyaW5nLCB0YWI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmVUYWJbaWRdID0gdGFiO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGlzcGxheWVkQ29udmVyc2F0aW9ucygpOiB2b2lkIHtcclxuICAgIC8vIGNvbnN0IHN0YXJ0ID0gKHRoaXMuY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMucGFnZVNpemU7XHJcbiAgICAvLyBjb25zdCBlbmQgPSBzdGFydCArIHRoaXMucGFnZVNpemU7XHJcbiAgICAvLyB0aGlzLmRpc3BsYXllZENvbnZlcnNhdGlvbnMgPSB0aGlzLmNvbnZlcnNhdGlvbnMuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcbiAgICB0aGlzLmRpc3BsYXllZENvbnZlcnNhdGlvbnMgPSB0aGlzLmNvbnZlcnNhdGlvbnM7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IGV2ZW50O1xyXG4gICAgdGhpcy5vZmZzZXQgPSBldmVudDtcclxuICAgIHRoaXMuZmV0Y2hDb252ZXJzYXRpb25zKCk7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VTaXplQ2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMucGFnZVNpemUgPSBwYXJzZUludChldmVudCk7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMub2Zmc2V0ID0gMTtcclxuICAgIHRoaXMuZmV0Y2hDb252ZXJzYXRpb25zKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVXZWlnaHRhZ2VEcm9wZG93bihtaTogbnVtYmVyLCBjaTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb252ID0gdGhpcy5jb252ZXJzYXRpb25zW21pXTtcclxuICAgIGNvbnN0IHBpdGNoTWV0cmljID0gY29udj8ubWV0cmljcz8uZmluZCgobTogYW55KSA9PiBtLnR5cGUgPT09ICdCT09MRUFOX0JBU0tFVCcgJiYgbS5uYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdwaXRjaCcpKTtcclxuICAgIGlmIChwaXRjaE1ldHJpYz8udmFsdWU/LltjaV0pIHtcclxuICAgICAgcGl0Y2hNZXRyaWMudmFsdWVbY2ldLmlzV2VpZ2h0YWdlT3BlbiA9ICFwaXRjaE1ldHJpYy52YWx1ZVtjaV0uaXNXZWlnaHRhZ2VPcGVuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0V2VpZ2h0YWdlKG1pOiBudW1iZXIsIGNpOiBudW1iZXIsIHdlaWdodDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb252ID0gdGhpcy5jb252ZXJzYXRpb25zW21pXTtcclxuICAgIGNvbnN0IHBpdGNoTWV0cmljID0gY29udj8ubWV0cmljcz8uZmluZCgobTogYW55KSA9PiBtLnR5cGUgPT09ICdCT09MRUFOX0JBU0tFVCcgJiYgbS5uYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdwaXRjaCcpKTtcclxuICAgIGlmIChwaXRjaE1ldHJpYz8udmFsdWU/LltjaV0pIHtcclxuICAgICAgcGl0Y2hNZXRyaWMudmFsdWVbY2ldLndlaWdodGFnZSA9IHdlaWdodDtcclxuICAgICAgcGl0Y2hNZXRyaWMudmFsdWVbY2ldLmlzV2VpZ2h0YWdlT3BlbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuZXhwb3J0RGF0YSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIC4uLnRoaXMuYnVpbGRQYXlsb2FkKCksXHJcbiAgICAgIGlzQUk6IGZhbHNlLFxyXG4gICAgICBpc0V4cG9ydDogdHJ1ZSxcclxuICAgICAgLy8gc2VhcmNoVmFsdWU6IHRoaXMuY2hhdFF1ZXJ5IHx8ICcnLFxyXG4gICAgICBsaW1pdDogdGhpcy5wYWdlU2l6ZSxcclxuICAgICAgb2Zmc2V0OiAwLFxyXG4gICAgfTtcclxuICAgIHRoaXMuYXVkaW9TZXJ2aWNlLmdldENvbnZlcnNhdGlvbkxpc3RFeHBvcnQocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IHJlcz8ubWVzc2FnZTtcclxuICAgICAgICBpZiAodXJsKSB7XHJcbiAgICAgICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgICAgYS5ocmVmID0gdXJsO1xyXG4gICAgICAgICAgYS50YXJnZXQgPSAnX2JsYW5rJztcclxuICAgICAgICAgIGEuZG93bmxvYWQgPSAnJztcclxuICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XHJcbiAgICAgICAgICBhLmNsaWNrKCk7XHJcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAvLyBIYW5kbGUgZXhwb3J0IGVycm9yIGlmIG5lZWRlZFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5mb3JtYXREdXJhdGlvbihzZWNvbmRzOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gIGNvbnN0IG1pbnMgPSBNYXRoLmZsb29yKHNlY29uZHMgLyA2MCk7XHJcbiAgcmV0dXJuIGAke21pbnN9IG1pbnNgO1xyXG59XHJcbmNyZWF0ZUNvaG9ydCgpOiB2b2lkIHtcclxuIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tYW5hZ2UvYWktYXVkaW8vYWRkLW1hbmFnZS1jb2hvcnRcIl0sIHtcclxuICAgICAgc3RhdGU6IHsgbW9kZTogXCJjcmVhdGVcIiB9LFxyXG4gICAgfSk7XHJcbn1cclxuXHJcbi8vIOKUgOKUgCBBSSBBc3Npc3RhbnQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcbmNoYXRNZXNzYWdlczogeyBzZW5kZXI6ICd1c2VyJyB8ICdhc3Npc3RhbnQnOyB0ZXh0OiBzdHJpbmcgfVtdID0gW107XHJcbmlzQWlMb2FkaW5nID0gZmFsc2U7XHJcbnByaXZhdGUgY2hhdFNlc3Npb25JZCA9ICcnO1xyXG5wcml2YXRlIGNoYXRVc2VySWQgPSAnJztcclxuXHJcbnByaXZhdGUgc2Nyb2xsQ2hhdFRvQm90dG9tKCk6IHZvaWQge1xyXG4gIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLmNoYXRUaHJlYWRNZXNzYWdlcz8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmIChlbCkgZWwuc2Nyb2xsVG9wID0gZWwuc2Nyb2xsSGVpZ2h0O1xyXG4gIH0pO1xyXG59XHJcblxyXG5zdGFydE5ld0NoYXQoKTogdm9pZCB7XHJcbiAgdGhpcy5jaGF0TWVzc2FnZXMgPSBbXTtcclxuICB0aGlzLmNoYXRRdWVyeSA9ICcnO1xyXG4gIHRoaXMuaXNBaUxvYWRpbmcgPSBmYWxzZTtcclxuICB0aGlzLmNoYXRTZXNzaW9uSWQgPSBgQVVESU9fJHtEYXRlLm5vdygpfWA7XHJcbn1cclxuXHJcbnByaXZhdGUgaW5pdENoYXRTZXNzaW9uKCk6IHZvaWQge1xyXG4gIHRyeSB7XHJcbiAgICBjb25zdCB1c2VyID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXNlci1pbmZvJykgYXMgc3RyaW5nKTtcclxuICAgIHRoaXMuY2hhdFVzZXJJZCA9IHVzZXI/Ll9pZCB8fCAnJztcclxuICAgIGNvbnN0IG5hbWU6IHN0cmluZyA9IHVzZXI/LnVzZXJOYW1lIHx8IHVzZXI/Lm5hbWUgfHwgdXNlcj8uZnVsbE5hbWUgfHwgJyc7XHJcbiAgICBjb25zdCBwYXJ0cyA9IG5hbWUudHJpbSgpLnNwbGl0KC9cXHMrLyk7XHJcbiAgICB0aGlzLnVzZXJJbml0aWFscyA9IHBhcnRzLmxlbmd0aCA+PSAyXHJcbiAgICAgID8gKHBhcnRzWzBdWzBdICsgcGFydHNbcGFydHMubGVuZ3RoIC0gMV1bMF0pLnRvVXBwZXJDYXNlKClcclxuICAgICAgOiBuYW1lLnN1YnN0cmluZygwLCAyKS50b1VwcGVyQ2FzZSgpO1xyXG4gIH0gY2F0Y2ggeyB0aGlzLmNoYXRVc2VySWQgPSAnJzsgfVxyXG4gIHRoaXMuY2hhdFNlc3Npb25JZCA9IGBBVURJT18ke0RhdGUubm93KCl9YDtcclxufVxyXG5cclxuc2VuZENoYXRNZXNzYWdlKCk6IHZvaWQge1xyXG4gIGlmICghdGhpcy5jaGF0UXVlcnkudHJpbSgpIHx8IHRoaXMuaXNBaUxvYWRpbmcpIHJldHVybjtcclxuICBpZiAoIXRoaXMuY2hhdFNlc3Npb25JZCkgdGhpcy5pbml0Q2hhdFNlc3Npb24oKTtcclxuXHJcbiAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgIHVzZXJfaWQ6IHRoaXMuY2hhdFVzZXJJZCxcclxuICAgIHNlc3Npb25faWQ6IHRoaXMuY2hhdFNlc3Npb25JZCxcclxuICAgIHNlc3Npb25fZGF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNsaWNlKDAsIDEwKSxcclxuICAgIHNlc3Npb25fdGltZXpvbmU6IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZSxcclxuICAgIG1lc3NhZ2U6IHRoaXMuY2hhdFF1ZXJ5LFxyXG4gICAgYW5hbHl0aWNzVHlwZTogJ2F1ZGlvJyxcclxuICAgIGNvbmZpZzoge1xyXG4gICAgICBzZWxlY3RlZF9jb2hvcnQ6IHRoaXMuc2VsZWN0ZWRDb2hvcnRJZCA/IFt0aGlzLnNlbGVjdGVkQ29ob3J0SWRdIDogW10sXHJcbiAgICAgIHNlbGVjdGVkX3N0b3JlczogW1xyXG4gICAgXCJMS1NUMTE2NlwiLFxyXG4gICAgXCJMS1NUMTE5OVwiLFxyXG4gICAgXCJMS1NUNzgwXCIsXHJcbiAgICBcIkxLU1QxNzcwXCIsXHJcbiAgICBcIkxLU1QzMzJcIixcclxuICAgIFwiTEtTVDE2NzNcIixcclxuICAgIFwiTEtTVDI5M1wiLFxyXG4gICAgXCJMS1NUMTg2MVwiLFxyXG4gICAgXCJMS1NUMTk2N1wiLFxyXG4gICAgXCJMS1NUMjc0XCIsXHJcbiAgICBcIkxLU1QwM1wiLFxyXG4gICAgXCJMS1NUMzMzXCIsXHJcbiAgICBcIkxLU1Q1MzRcIixcclxuICAgIFwiTEtTVDQ5NlwiLFxyXG4gICAgXCJMS1NUNzc5XCJcclxuXSxcclxuICAgICAgZGF0ZV9yYW5nZToge1xyXG4gICAgICAgIHN0YXJ0OiBcIjIwMjYtMDMtMDFcIixcclxuICAgICAgICBlbmQ6XCIyMDI2LTAzLTI4XCJcclxuICAgICAgfSxcclxuICAgICAgc2VsZWN0ZWRfcHJvZHVjdHM6IFsnQXVkaW8nXVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIC8vIFB1c2ggdXNlciBtZXNzYWdlIHRvIHRocmVhZFxyXG4gIHRoaXMuY2hhdE1lc3NhZ2VzLnB1c2goeyBzZW5kZXI6ICd1c2VyJywgdGV4dDogdGhpcy5jaGF0UXVlcnkgfSk7XHJcbiAgdGhpcy5jaGF0UXVlcnkgPSAnJztcclxuICB0aGlzLmlzQWlMb2FkaW5nID0gdHJ1ZTtcclxuICB0aGlzLnNjcm9sbENoYXRUb0JvdHRvbSgpO1xyXG5cclxuICAvLyBQbGFjZWhvbGRlciBmb3IgQUkgcmVzcG9uc2UgKHVwZGF0ZWQgYXMgc3RyZWFtIGFycml2ZXMpXHJcbiAgY29uc3QgYWlJbmRleCA9IHRoaXMuY2hhdE1lc3NhZ2VzLnB1c2goeyBzZW5kZXI6ICdhc3Npc3RhbnQnLCB0ZXh0OiAnJyB9KSAtIDE7XHJcblxyXG4gIHRoaXMuYXVkaW9TZXJ2aWNlLmNoYXRTdHJlYW0ocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OiAodGV4dDogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHRoaXMuY2hhdE1lc3NhZ2VzW2FpSW5kZXhdLnRleHQgPSB0ZXh0O1xyXG4gICAgICB0aGlzLmlzQWlMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2Nyb2xsQ2hhdFRvQm90dG9tKCk7XHJcbiAgICB9LFxyXG4gICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgdGhpcy5jaGF0TWVzc2FnZXNbYWlJbmRleF0udGV4dCA9ICdTb3JyeSwgc29tZXRoaW5nIHdlbnQgd3JvbmcuIFBsZWFzZSB0cnkgYWdhaW4uJztcclxuICAgICAgdGhpcy5pc0FpTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSxcclxuICAgIGNvbXBsZXRlOiAoKSA9PiB7IHRoaXMuaXNBaUxvYWRpbmcgPSBmYWxzZTsgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5jb3B5RmVlZGJhY2s6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG51c2VySW5pdGlhbHMgPSAnJztcclxuY29weVRvQ2xpcGJvYXJkKHRleHQ6IHN0cmluZyk6IHZvaWQge1xyXG4gIHRoaXMuY29weUZlZWRiYWNrID0gbnVsbDtcclxuICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpLnRoZW4oKCkgPT4ge1xyXG4gICAgICB0aGlzLmNvcHlGZWVkYmFjayA9ICdDb3BpZWQgdG8gY2xpcGJvYXJkISc7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb3B5RmVlZGJhY2sgPSBudWxsLCAyMDAwKTtcclxuICAgIH0pO1xyXG4gIH0sIDApO1xyXG59XHJcblxyXG5pc0NoYXRIaXN0b3J5T3BlbiA9IGZhbHNlO1xyXG5jaGF0SGlzdG9yeUxpc3Q6IHsgc2Vzc2lvbl9pZDogc3RyaW5nOyBzZXNzaW9uX3RpdGxlOiBzdHJpbmcgfVtdID0gW107XHJcbmlzSGlzdG9yeUxvYWRpbmcgPSBmYWxzZTtcclxuc2VsZWN0ZWRIaXN0b3J5U2Vzc2lvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuc2Vzc2lvbk1lc3NhZ2VzOiB7IHNlbmRlcjogc3RyaW5nOyB0ZXh0OiBzdHJpbmcgfVtdID0gW107XHJcbmlzU2Vzc2lvbkxvYWRpbmcgPSBmYWxzZTtcclxucHJpdmF0ZSBoaXN0b3J5VXNlcklkID0gJyc7XHJcblxyXG50b2dnbGVDaGF0SGlzdG9yeSgpOiB2b2lkIHtcclxuICB0aGlzLnNob3dDaGF0SGlzdG9yeSA9ICF0aGlzLnNob3dDaGF0SGlzdG9yeTtcclxuICBpZiAodGhpcy5zaG93Q2hhdEhpc3RvcnkpIHtcclxuICAgIHRoaXMubG9hZENoYXRIaXN0b3J5TGlzdCgpO1xyXG4gIH1cclxufVxyXG5cclxubG9hZEhpc3RvcnlMaXN0KCk6IHZvaWQge1xyXG4gIGlmICghdGhpcy5oaXN0b3J5VXNlcklkKSByZXR1cm47XHJcbiAgdGhpcy5pc0hpc3RvcnlMb2FkaW5nID0gdHJ1ZTtcclxuICB0aGlzLmF1ZGlvU2VydmljZS5nZXRDaGF0SGlzdG9yeUxpc3QodGhpcy5oaXN0b3J5VXNlcklkKS5zdWJzY3JpYmUoe1xyXG4gICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuY2hhdEhpc3RvcnlMaXN0ID0gKHJlcz8uZGF0YT8uc2Vzc2lvbnMgfHwgW10pLm1hcCgoczogYW55KSA9PiAoe1xyXG4gICAgICAgIHNlc3Npb25faWQ6IHMuc2Vzc2lvbl9pZCxcclxuICAgICAgICBzZXNzaW9uX3RpdGxlOiBzLnNlc3Npb25fdGl0bGVcclxuICAgICAgfSkpO1xyXG4gICAgICB0aGlzLmlzSGlzdG9yeUxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0sXHJcbiAgICBlcnJvcjogKCkgPT4geyB0aGlzLmlzSGlzdG9yeUxvYWRpbmcgPSBmYWxzZTsgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5jbGVhckNhcmRGaWx0ZXIoKTogdm9pZCB7XHJcbiAgdGhpcy5zZWxlY3RlZENhcmRJZCA9ICcnO1xyXG4gIHRoaXMuc2VsZWN0ZWRDYXJkTmFtZSA9ICcnO1xyXG4gIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gIHRoaXMub2Zmc2V0ID0gMTtcclxuICB0aGlzLmZldGNoQ29udmVyc2F0aW9ucygpO1xyXG59XHJcblxyXG5vbkNhcmRSb3dDbGljayhpZDogYW55LCBuYW1lOiBhbnkpOiB2b2lkIHtcclxuICB0aGlzLnNlbGVjdGVkQ2FyZElkID0gaWQgfHwgJyc7XHJcbiAgdGhpcy5zZWxlY3RlZENhcmROYW1lID0gaWQgPyAnJyA6IChuYW1lIHx8ICcnKTtcclxuICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICB0aGlzLm9mZnNldCA9IDE7XHJcblxyXG4gIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAuLi50aGlzLmJ1aWxkUGF5bG9hZCgpLFxyXG4gICAgLy8gc2VhcmNoVmFsdWU6IHRoaXMuY2hhdFF1ZXJ5IHx8ICcnLFxyXG4gICAgbGltaXQ6IHRoaXMucGFnZVNpemUsXHJcbiAgICBfaWQ6IHRoaXMuc2VsZWN0ZWRDYXJkSWQgPyBbdGhpcy5zZWxlY3RlZENhcmRJZF0gOiBbXSxcclxuICAgIG5hbWU6IHRoaXMuc2VsZWN0ZWRDYXJkTmFtZSxcclxuICAgIG9mZnNldDogMFxyXG4gIH07XHJcbiAgdGhpcy5pc0xvYWRpbmdDb252ZXJzYXRpb25zID0gdHJ1ZTtcclxuICB0aGlzLmF1ZGlvU2VydmljZS5nZXRDb252ZXJzYXRpb25zTGlzdChwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBsaXN0ID0gcmVzPy5kYXRhPy5kYXRhIHx8IHJlcz8uZGF0YT8uY29udmVyc2F0aW9ucyB8fCBbXTtcclxuICAgICAgdGhpcy5jb252ZXJzYXRpb25zID0gbGlzdC5tYXAoKGl0ZW06IGFueSkgPT4gdGhpcy5tYXBDb252ZXJzYXRpb24oaXRlbSkpO1xyXG4gICAgICB0aGlzLnRvdGFsSXRlbXMgPSByZXM/LmRhdGE/LmNvdW50ID8/IHJlcz8uZGF0YT8ucGFnaW5hdGlvbj8udG90YWwgPz8gdGhpcy5jb252ZXJzYXRpb25zLmxlbmd0aDtcclxuICAgICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSB0aGlzLnRvdGFsSXRlbXMgPiAxMCA/IFsxMCwgMjAsIDUwLCAxMDBdIDogW3RoaXMudG90YWxJdGVtcyB8fCAxMF07XHJcbiAgICAgIHRoaXMucGFnZVNpemUgPSB0aGlzLnBhZ2luYXRpb25TaXplcy5pbmNsdWRlcyh0aGlzLnBhZ2VTaXplKSA/IHRoaXMucGFnZVNpemUgOiB0aGlzLnBhZ2luYXRpb25TaXplc1swXTtcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgIHRoaXMudXBkYXRlRGlzcGxheWVkQ29udmVyc2F0aW9ucygpO1xyXG4gICAgICB0aGlzLmlzTG9hZGluZ0NvbnZlcnNhdGlvbnMgPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMuZGlzcGxheWVkQ29udmVyc2F0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29uc3QgZmlyc3QgPSB0aGlzLmRpc3BsYXllZENvbnZlcnNhdGlvbnNbMF07XHJcbiAgICAgICAgdGhpcy5vcGVuSWQgPSBmaXJzdC5hdWRpb0lkO1xyXG4gICAgICAgIGlmICghdGhpcy5hY3RpdmVUYWJbZmlyc3QuYXVkaW9JZF0pIHRoaXMuYWN0aXZlVGFiW2ZpcnN0LmF1ZGlvSWRdID0gJ3N1bW1hcnknO1xyXG4gICAgICAgIHRoaXMubG9hZENvbnZlcnNhdGlvbkRldGFpbChmaXJzdCk7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICB0aGlzLmNvbnZlcnNhdGlvbnMgPSBbXTtcclxuICAgICAgdGhpcy5kaXNwbGF5ZWRDb252ZXJzYXRpb25zID0gW107XHJcbiAgICAgIHRoaXMudG90YWxJdGVtcyA9IDA7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nQ29udmVyc2F0aW9ucyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5sb2FkSGlzdG9yeVNlc3Npb24oc2Vzc2lvbklkOiBzdHJpbmcpOiB2b2lkIHtcclxuICBpZiAodGhpcy5zZWxlY3RlZEhpc3RvcnlTZXNzaW9uSWQgPT09IHNlc3Npb25JZCkgcmV0dXJuO1xyXG4gIHRoaXMuc2VsZWN0ZWRIaXN0b3J5U2Vzc2lvbklkID0gc2Vzc2lvbklkO1xyXG4gIHRoaXMuc2Vzc2lvbk1lc3NhZ2VzID0gW107XHJcbiAgdGhpcy5pc1Nlc3Npb25Mb2FkaW5nID0gdHJ1ZTtcclxuICB0aGlzLmF1ZGlvU2VydmljZS5nZXRDaGF0KHNlc3Npb25JZCkuc3Vic2NyaWJlKHtcclxuICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBkYXRhID0gcmVzPy5kYXRhIHx8IHJlcztcclxuICAgICAgY29uc3QgY29udmVyc2F0aW9uczogYW55W10gPSBkYXRhPy5jb252ZXJzYXRpb24gfHwgW107XHJcbiAgICAgIHRoaXMuc2Vzc2lvbk1lc3NhZ2VzID0gW107XHJcbiAgICAgIGNvbnZlcnNhdGlvbnMuZm9yRWFjaCgoYzogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGMuaHVtYW4pIHRoaXMuc2Vzc2lvbk1lc3NhZ2VzLnB1c2goeyBzZW5kZXI6ICd1c2VyJywgdGV4dDogYy5odW1hbiB9KTtcclxuICAgICAgICBpZiAoYy5haSkgdGhpcy5zZXNzaW9uTWVzc2FnZXMucHVzaCh7IHNlbmRlcjogJ2Fzc2lzdGFudCcsIHRleHQ6IGMuYWkgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmlzU2Vzc2lvbkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIC8vICAgY29uc3QgYm9keSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jaGF0LWhpc3RvcnktYm9keScpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAvLyAgIGlmIChib2R5KSBib2R5LnNjcm9sbFRvcCA9IGJvZHkuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgICAvLyB9LCA1MCk7XHJcbiAgICB9LFxyXG4gICAgZXJyb3I6ICgpID0+IHsgdGhpcy5pc1Nlc3Npb25Mb2FkaW5nID0gZmFsc2U7IH1cclxuICB9KTtcclxufVxyXG5cclxuY29udGludWVIaXN0b3J5U2Vzc2lvbihzZXNzaW9uSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gIHRoaXMuaXNTZXNzaW9uTG9hZGluZyA9IHRydWU7XHJcbiAgdGhpcy5hdWRpb1NlcnZpY2UuZ2V0Q2hhdChzZXNzaW9uSWQpLnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgZGF0YSA9IHJlcz8uZGF0YSB8fCByZXM7XHJcbiAgICAgIGNvbnN0IGNvbnZlcnNhdGlvbnM6IGFueVtdID0gZGF0YT8uY29udmVyc2F0aW9uIHx8IFtdO1xyXG4gICAgICB0aGlzLm1lc3NhZ2VzID0gW107XHJcbiAgICAgIGNvbnZlcnNhdGlvbnMuZm9yRWFjaCgoYzogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGMuaHVtYW4pIHRoaXMubWVzc2FnZXMucHVzaCh7IHNlbmRlcjogJ3VzZXInLCB0ZXh0OiBjLmh1bWFuIH0pO1xyXG4gICAgICAgIGlmIChjLmFpKSB0aGlzLm1lc3NhZ2VzLnB1c2goeyBzZW5kZXI6ICdhc3Npc3RhbnQnLCB0ZXh0OiBjLmFpIH0pO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5jaGF0U2Vzc2lvbklkID0gc2Vzc2lvbklkO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ2hhdElkID0gc2Vzc2lvbklkO1xyXG4gICAgICB0aGlzLmlzU2Vzc2lvbkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc0NoYXRIaXN0b3J5T3BlbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSGlzdG9yeVNlc3Npb25JZCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2Vzc2lvbk1lc3NhZ2VzID0gW107XHJcbiAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcclxuICAgIH0sXHJcbiAgICBlcnJvcjogKCkgPT4geyB0aGlzLmlzU2Vzc2lvbkxvYWRpbmcgPSBmYWxzZTsgfVxyXG4gIH0pO1xyXG59XHJcblxyXG4vLyDilIDilIAgYWktY2hhdCBtZXRob2RzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5zZW5kTWVzc2FnZSgpOiB2b2lkIHtcclxuICBpZiAoIXRoaXMudXNlck1lc3NhZ2UudHJpbSgpIHx8IHRoaXMuaXNUeXBpbmcpIHJldHVybjtcclxuICBjb25zdCBjdXJyZW50UXVlcnkgPSB0aGlzLnVzZXJNZXNzYWdlLnRyaW0oKTtcclxuXHJcbiAgdGhpcy5tZXNzYWdlcy5wdXNoKHsgdGV4dDogY3VycmVudFF1ZXJ5LCBzZW5kZXI6ICd1c2VyJywgdGltZXN0YW1wOiBuZXcgRGF0ZSgpIH0pO1xyXG4gIHRoaXMudXNlck1lc3NhZ2UgPSAnJztcclxuICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcblxyXG4gIGlmICh0aGlzLnNlbGVjdGVkQ2hhdElkID09PSBudWxsKSB7XHJcbiAgICB0aGlzLmNoYXRIaXN0b3J5LnVuc2hpZnQoe1xyXG4gICAgICBzZXNzaW9uX2lkOiB0aGlzLmNoYXRTZXNzaW9uSWQsXHJcbiAgICAgIHNlc3Npb25fdGl0bGU6IGN1cnJlbnRRdWVyeS5sZW5ndGggPiAzMCA/IGN1cnJlbnRRdWVyeS5zdWJzdHJpbmcoMCwgMzApICsgJy4uLicgOiBjdXJyZW50UXVlcnlcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZWxlY3RlZENoYXRJZCA9IHRoaXMuY2hhdFNlc3Npb25JZDtcclxuICB9XHJcblxyXG4gIHRoaXMuaXNUeXBpbmcgPSB0cnVlO1xyXG4gIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICB1c2VyX2lkOiB0aGlzLmNoYXRVc2VySWQsXHJcbiAgICBzZXNzaW9uX2lkOiB0aGlzLmNoYXRTZXNzaW9uSWQsXHJcbiAgICBzZXNzaW9uX2RhdGU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zbGljZSgwLCAxMCksXHJcbiAgICBzZXNzaW9uX3RpbWV6b25lOiAnQXNpYS9Lb2xrYXRhJyxcclxuICAgIG1lc3NhZ2U6IGN1cnJlbnRRdWVyeSxcclxuICAgIGFuYWx5dGljc1R5cGU6ICdhdWRpbycsXHJcbiAgICBjb25maWc6IHtcclxuICAgICAgc2VsZWN0ZWRfbW9kZWw6IHRoaXMuc2VsZWN0ZWRNb2RlbCxcclxuICAgICAgc2VsZWN0ZWRfc3RvcmVzOiBbXHJcbiAgICAgICAgXCJMS1NUMTE2NlwiLFwiTEtTVDExOTlcIixcIkxLU1Q3ODBcIixcIkxLU1QxNzcwXCIsXCJMS1NUMzMyXCIsXHJcbiAgICAgICAgXCJMS1NUMTY3M1wiLFwiTEtTVDI5M1wiLFwiTEtTVDE4NjFcIixcIkxLU1QxOTY3XCIsXCJMS1NUMjc0XCIsXHJcbiAgICAgICAgXCJMS1NUMDNcIixcIkxLU1QzMzNcIixcIkxLU1Q1MzRcIixcIkxLU1Q0OTZcIixcIkxLU1Q3NzlcIlxyXG4gICAgICBdLFxyXG4gICAgICBkYXRlX3JhbmdlOiB7IHN0YXJ0OiBcIjIwMjYtMDMtMDFcIiwgZW5kOiBcIjIwMjYtMDMtMjhcIiB9LFxyXG4gICAgICBzZWxlY3RlZF9wcm9kdWN0czogWydBdWRpbyddXHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgYXNzaXN0YW50TXNnOiBhbnkgPSB7IHNlbmRlcjogJ2Fzc2lzdGFudCcsIHRleHQ6ICcnLCB0aW1lc3RhbXA6IG5ldyBEYXRlKCksIHN0cmVhbWluZzogdHJ1ZSB9O1xyXG4gIGxldCBwbGFjZWhvbGRlckFkZGVkID0gZmFsc2U7XHJcblxyXG4gIHRoaXMuYXVkaW9TZXJ2aWNlLmNoYXRTdHJlYW0ocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OiAoY2h1bms6IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAoIXBsYWNlaG9sZGVyQWRkZWQpIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VzLnB1c2goYXNzaXN0YW50TXNnKTtcclxuICAgICAgICB0aGlzLmlzVHlwaW5nID0gZmFsc2U7XHJcbiAgICAgICAgcGxhY2Vob2xkZXJBZGRlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgYXNzaXN0YW50TXNnLnRleHQgKz0gY2h1bms7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xyXG4gICAgfSxcclxuICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgIGlmICghcGxhY2Vob2xkZXJBZGRlZCkgeyB0aGlzLm1lc3NhZ2VzLnB1c2goYXNzaXN0YW50TXNnKTsgdGhpcy5pc1R5cGluZyA9IGZhbHNlOyB9XHJcbiAgICAgIGFzc2lzdGFudE1zZy50ZXh0ID0gYXNzaXN0YW50TXNnLnRleHQgfHwgJ1NvbWV0aGluZyB3ZW50IHdyb25nLiBQbGVhc2UgdHJ5IGFnYWluLic7XHJcbiAgICAgIGFzc2lzdGFudE1zZy5zdHJlYW1pbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSxcclxuICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgIGFzc2lzdGFudE1zZy5zdHJlYW1pbmcgPSBmYWxzZTtcclxuICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmNoYXRIaXN0b3J5LmZpbmQoYyA9PiBjLnNlc3Npb25faWQgPT09IHRoaXMuc2VsZWN0ZWRDaGF0SWQpO1xyXG4gICAgICBpZiAoZW50cnkpIGVudHJ5Lm1lc3NhZ2VzID0gWy4uLnRoaXMubWVzc2FnZXNdO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbm5ld0NoYXQoKTogdm9pZCB7XHJcbiAgdGhpcy5tZXNzYWdlcyA9IFtdO1xyXG4gIHRoaXMuc2VsZWN0ZWRDaGF0SWQgPSBudWxsO1xyXG4gIHRoaXMudXNlck1lc3NhZ2UgPSAnJztcclxuICB0aGlzLmNoYXRTZXNzaW9uSWQgPSBgQVVESU9fJHtEYXRlLm5vdygpfWA7XHJcbiAgdGhpcy5sb2FkQ2hhdEhpc3RvcnlMaXN0KCk7XHJcbn1cclxuXHJcbmxvYWRDaGF0KHNlc3Npb25JZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgaWYgKHRoaXMuc2VsZWN0ZWRDaGF0SWQgPT09IHNlc3Npb25JZCkgcmV0dXJuO1xyXG4gIHRoaXMuc2VsZWN0ZWRDaGF0SWQgPSBzZXNzaW9uSWQ7XHJcbiAgdGhpcy5jaGF0U2Vzc2lvbklkID0gc2Vzc2lvbklkO1xyXG4gIHRoaXMubWVzc2FnZXMgPSBbXTtcclxuICB0aGlzLmlzVHlwaW5nID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0IGNhY2hlZCA9IHRoaXMuY2hhdEhpc3RvcnkuZmluZChjID0+IGMuc2Vzc2lvbl9pZCA9PT0gc2Vzc2lvbklkKTtcclxuICBpZiAoY2FjaGVkPy5tZXNzYWdlcykge1xyXG4gICAgdGhpcy5tZXNzYWdlcyA9IFsuLi5jYWNoZWQubWVzc2FnZXNdO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgdGhpcy5pc0NoYXRMb2FkaW5nID0gdHJ1ZTtcclxuICB0aGlzLmF1ZGlvU2VydmljZS5nZXRDaGF0KHNlc3Npb25JZCkuc3Vic2NyaWJlKHtcclxuICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBkYXRhID0gcmVzPy5kYXRhIHx8IHJlcztcclxuICAgICAgY29uc3QgY29udmVyc2F0aW9uczogYW55W10gPSBkYXRhPy5jb252ZXJzYXRpb24gfHwgW107XHJcbiAgICAgIHRoaXMubWVzc2FnZXMgPSBbXTtcclxuICAgICAgY29udmVyc2F0aW9ucy5mb3JFYWNoKChjOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoYy5odW1hbikgdGhpcy5tZXNzYWdlcy5wdXNoKHsgc2VuZGVyOiAndXNlcicsIHRleHQ6IGMuaHVtYW4gfSk7XHJcbiAgICAgICAgaWYgKGMuYWkpIHRoaXMubWVzc2FnZXMucHVzaCh7IHNlbmRlcjogJ2Fzc2lzdGFudCcsIHRleHQ6IGMuYWkgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoY2FjaGVkKSBjYWNoZWQubWVzc2FnZXMgPSBbLi4udGhpcy5tZXNzYWdlc107XHJcbiAgICAgIHRoaXMuaXNDaGF0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcclxuICAgIH0sXHJcbiAgICBlcnJvcjogKCkgPT4geyB0aGlzLmlzQ2hhdExvYWRpbmcgPSBmYWxzZTsgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpOyB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmxvYWRDaGF0SGlzdG9yeUxpc3QoKTogdm9pZCB7XHJcbiAgaWYgKCF0aGlzLmNoYXRVc2VySWQpIHJldHVybjtcclxuICB0aGlzLmlzSGlzdG9yeUxvYWRpbmcgPSB0cnVlO1xyXG4gIHRoaXMuYXVkaW9TZXJ2aWNlLmdldENoYXRIaXN0b3J5TGlzdCh0aGlzLmNoYXRVc2VySWQpLnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5jaGF0SGlzdG9yeSA9IChyZXM/LmRhdGE/LnNlc3Npb25zIHx8IFtdKS5tYXAoKHM6IGFueSkgPT4gKHtcclxuICAgICAgICBzZXNzaW9uX2lkOiBzLnNlc3Npb25faWQsXHJcbiAgICAgICAgc2Vzc2lvbl90aXRsZTogcy5zZXNzaW9uX3RpdGxlXHJcbiAgICAgIH0pKTtcclxuICAgICAgdGhpcy5pc0hpc3RvcnlMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sXHJcbiAgICBlcnJvcjogKCkgPT4geyB0aGlzLmlzSGlzdG9yeUxvYWRpbmcgPSBmYWxzZTsgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpOyB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbnByaXZhdGUgc2Nyb2xsVG9Cb3R0b20oKTogdm9pZCB7XHJcbiAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBlbCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgICBpZiAoZWwpIGVsLnNjcm9sbFRvcCA9IGVsLnNjcm9sbEhlaWdodDtcclxuICAgIH0gY2F0Y2gge31cclxuICB9LCAwKTtcclxufVxyXG5cclxuZ29CYWNrVG9GaWx0ZXJzKCk6IHZvaWQge1xyXG4gIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL21hbmFnZS9haS1hdWRpby9maWx0ZXJzJ10pO1xyXG59XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImF1ZGlvLXBhZ2VcIj5cblxuICA8IS0tIOKUgOKUgCBIZWFkZXIgUm93IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAtLT5cbiAgPGRpdiBjbGFzcz1cImhlYWRlci1yb3ctY29udGFpbmVyIG1iLTRcIiAqbmdJZj1cImNvaG9ydE9wdGlvbnMubGVuZ3RoID4gMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICA8IS0tIEN1c3RvbSBTaW5nbGUtc2VsZWN0IENvaG9ydCBEcm9wZG93biAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvaG9ydC1kcm9wZG93blwiIFtjbGFzcy5vcGVuXT1cImlzQ29ob3J0RHJvcGRvd25PcGVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvaG9ydC1kcm9wZG93bi10cmlnZ2VyXCJcbiAgICAgICAgICAgIChjbGljayk9XCJpc0NvaG9ydERyb3Bkb3duT3BlbiA9ICFpc0NvaG9ydERyb3Bkb3duT3BlbjsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyBmaWx0ZXJUeXBlIH19PC9zcGFuPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIiBbY2xhc3Mucm90YXRlXT1cImlzQ29ob3J0RHJvcGRvd25PcGVuXCI+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNSA3LjVMMTAgMTIuNUwxNSA3LjVcIiBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2hvcnQtZHJvcGRvd24tbWVudVwiICpuZ0lmPVwiaXNDb2hvcnREcm9wZG93bk9wZW5cIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29ob3J0LW9wdGlvblwiICpuZ0Zvcj1cImxldCBvcHQgb2YgY29ob3J0T3B0aW9uc1wiIFtjbGFzcy5zZWxlY3RlZF09XCJvcHQgPT09IGZpbHRlclR5cGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0Q29ob3J0VHlwZShvcHQpXCI+XG4gICAgICAgICAgICAgIHt7IG9wdCB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aDQgY2xhc3M9XCJzZWN0aW9uLXRpdGxlIG1iLTBcIj5Db2hvcnQgQW5hbHlzaXM8L2g0PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidG90YWwtYXVkaW8tbGFiZWxcIj5Ub3RhbCBBdWRpbyBBdmFpbGFibGUgPHN0cm9uZz57eyB0b3RhbEF1ZGlvIH19PC9zdHJvbmc+PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0g4pSA4pSAIFN0YXRzIEdyaWQgKER5bmFtaWMpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAtLT5cbiAgPGRpdiBjbGFzcz1cInN0YXRzLWdyaWQgbWItNFwiPlxuXG4gICAgPCEtLSBMb2FkZXIgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTG9hZGluZ0NhcmRzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RhdC1jYXJkXCIgKm5nRm9yPVwibGV0IHMgb2YgWzEsMiwzLDQsNSw2XVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwic3RhdC1jYXJkXCIgKm5nRm9yPVwibGV0IGNhcmQgb2YgY29ob3J0Q2FyZHNcIiBbaGlkZGVuXT1cImlzTG9hZGluZ0NhcmRzXCI+XG4gICAgPGRpdiBjbGFzcz1cInN0YXQtY2FyZC1oZWFkZXIgdGV4dC1jYXBpdGFsaXplIGVsbGlwc2UxIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uQ2FyZFJvd0NsaWNrKCcnLCBjYXJkLm5hbWUpXCI+XG4gIHt7IGNhcmQubmFtZSB9fVxuICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInN0YXQtY2FyZC1ib2R5XCI+XG5cbiAgICAgICAgPCEtLSBCT09MRUFOX0JBU0tFVDogbGFiZWwgKyByZXNwb25zZXMgKyBzY29yZSAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhcmQudHlwZSA9PT0gJ0JPT0xFQU5fQkFTS0VUJ1wiPlxuICAgICAgICAgIDx0YWJsZSBjbGFzcz1cImNvaG9ydC10YWJsZSB3LTEwMFwiPlxuICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBjYXJkPy5ib29sZWFuUm93c1wiPlxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtcHJpbWFyeSB0ZXh0LWNhcGl0YWxpemUgdGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvbkNhcmRSb3dDbGljaygnJywgcm93Py5sYWJlbClcIj57eyByb3c/LmxhYmVsLnNwbGl0KCdfJykuam9pbignICcpLnRvTG93ZXJDYXNlKCkgfX08L3RkPlxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZW5kXCI+e3sgcm93Py5yZXNwb25zZXMgfX08L3RkPlxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZW5kXCI+e3sgcm93Py5zY29yZSB9fSU8L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIE5VTUVSSUNfU0NBTEFSOiB0b3RhbCArIGF2ZyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhcmQudHlwZSA9PT0gJ05VTUVSSUNfU0NBTEFSJyB8fCBjYXJkLnR5cGUgPT09ICdOVU1FUklDX0FSUkFZJ1wiPlxuICAgICAgICAgIDx0YWJsZSBjbGFzcz1cImNvaG9ydC10YWJsZSB3LTEwMFwiPlxuICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgPHRkPlRvdGFsPC90ZD5cbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IGNhcmQubnVtZXJpY0RhdGE/LnRvdGFsIH19PC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0ZD5BdmVyYWdlPC90ZD5cbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IGNhcmQubnVtZXJpY0RhdGE/LmF2ZyB9fTwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gU1VCSkVDVElWRTogaWQgKyByZWFzb25pbmcgdGV4dCAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhcmQudHlwZSA9PT0gJ1NVQkpFQ1RJVkUnXCI+XG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwiY29ob3J0LXRhYmxlIHctMTAwXCI+XG4gICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIGNhcmQuc3ViamVjdGl2ZVJvd3NcIj5cbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiPnt7IHJvdz8uc3RvcmVfaWQgfHwgJ+KAlCcgfX08L3RkPlxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtbm93cmFwXCI+e3sgcm93Py5kYXRlIHx8ICfigJQnIH19PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgdGV4dC1jYXBpdGFsaXplIHRleHQtZGVjb3JhdGlvbi11bmRlcmxpbmUgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25DYXJkUm93Q2xpY2socm93Py5faWQsJycpXCIgW25nYlRvb2x0aXBdPVwicm93Py5yZWFzb25pbmcgfHwgJ05vIGRlc2NyaXB0aW9uIGF2YWlsYWJsZSdcIiBwbGFjZW1lbnQ9XCJ0b3BcIiBjb250YWluZXI9XCJib2R5XCIgdG9vbHRpcENsYXNzPVwiYXVkaW8tdG9vbHRpcFwiPnt7IHJvdz8ucmVhc29uaW5nICYmIHJvdz8ucmVhc29uaW5nICE9PSAnJyA/IHJvdz8ucmVhc29uaW5nPy5zbGljZSgwLCAyNSkgKyAnLi4uJyA6ICdObyByZWFzb25pbmcgYXZhaWxhYmxlJyB9fTwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FyZC50eXBlID09PSAnU1VCSkVDVElWRV9DT1VOVCdcIj5cbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJjb2hvcnQtdGFibGUgdy0xMDBcIj5cbiAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2YgY2FyZC5zdWJqZWN0aXZlUm93c1wiPlxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtbm93cmFwIGZ3LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwicm93Py5faWRcIiBwbGFjZW1lbnQ9XCJ0b3BcIiBjb250YWluZXI9XCJib2R5XCIgdG9vbHRpcENsYXNzPVwiYXVkaW8tdG9vbHRpcFwiPnt7IHJvdz8uX2lkIH19PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQgW25nYlRvb2x0aXBdPVwicm93Py5yZWFzb25pbmcgfHwgJ05vIGRlc2NyaXB0aW9uIGF2YWlsYWJsZSdcIiBwbGFjZW1lbnQ9XCJ0b3BcIiBjb250YWluZXI9XCJib2R5XCIgdG9vbHRpcENsYXNzPVwiYXVkaW8tdG9vbHRpcFwiPnt7IHJvdz8ucmVhc29uaW5nICYmIHJvdz8ucmVhc29uaW5nICE9PSAnJyA/IHJvdz8ucmVhc29uaW5nPy5zbGljZSgwLCAyNSkgIDogJ05vIHJlYXNvbmluZyBhdmFpbGFibGUnIH19PC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBVTklRVUVfUElUQ0hFUzogcGl0Y2hJZCArIGRlc2NyaXB0aW9uIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FyZC50eXBlID09PSAnVU5JUVVFX1BJVENIRVMnXCI+XG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwiY29ob3J0LXRhYmxlIHctMTAwXCI+XG4gICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcGl0Y2ggb2YgY2FyZC5waXRjaFJvd3NcIj5cbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LW5vd3JhcCBmdy1ib2xkXCJcbiAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInBpdGNoLmlkXCIgcGxhY2VtZW50PVwidG9wXCIgY29udGFpbmVyPVwiYm9keVwiIHRvb2x0aXBDbGFzcz1cImF1ZGlvLXRvb2x0aXBcIj57eyBwaXRjaC5pZCB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIFtuZ2JUb29sdGlwXT1cInBpdGNoLmRlc2MgfHwgJ05vIGRlc2NyaXB0aW9uIGF2YWlsYWJsZSdcIiBwbGFjZW1lbnQ9XCJ0b3BcIiBjb250YWluZXI9XCJib2R5XCIgdG9vbHRpcENsYXNzPVwiYXVkaW8tdG9vbHRpcFwiPnt7IHBpdGNoLmRlc2MgPyBwaXRjaC5kZXNjLnNsaWNlKDAsIDc1KSArICcuLi4nIDogJ05vIGRlc2NyaXB0aW9uIGF2YWlsYWJsZScgfX08L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG5cbiAgPCEtLSDilIDilIAgQ29udmVyc2F0aW9uIEFuYWx5c2lzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAtLT5cbiAgPGRpdiBjbGFzcz1cImNvbnZlcnNhdGlvbi1hcmVhIGJnLXdoaXRlIHAtNCByb3VuZGVkLTNcIj5cblxuICAgIDwhLS0gU2VjdGlvbiBIZWFkZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtMiBib3R0b20tYm9yZGVyIG1iLTRcIj5cbiAgICAgIDxoNSBjbGFzcz1cInNlY3Rpb24tdGl0bGUgIG1iLTBcIj5Db252ZXJzYXRpb24gQW5hbHlzaXM8L2g1PlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImV4cG9ydC1idG4gYnRuIGJ0bi1kZWZhdWx0IG14LTEgYnRuLW91dGxpbmUgYmctd2hpdGUgYnRuLW91dGxpbmUtZGVmYXVsdFwiIChjbGljayk9XCJleHBvcnREYXRhKClcIiBuZ2JUb29sdGlwPVwiRXhwb3J0IGNvbnZlcnNhdGlvbiBkYXRhIHRvIENTVlwiIHBsYWNlbWVudD1cInRvcFwiIFtkaXNhYmxlZF09XCJ0b3RhbEl0ZW1zID09PSAwXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXhwb3J0LXRleHRcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTguMTI1IDEzLjEyNUgxNi4zNTYzTDE0Ljc0MzggMTQuNzQzOEwxNS42MjUgMTUuNjI1TDE4Ljc1IDEyLjVMMTUuNjI1IDkuMzc1TDE0Ljc0MzggMTAuMjU2MkwxNi4zNTYzIDExLjg3NUg4LjEyNVYxMy4xMjVaXCJcbiAgICAgICAgICAgICAgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNMTMuNzUgOC43NTAwMVY2LjI1MDAxQzEzLjc1MDUgNi4xNjc3NiAxMy43MzQ3IDYuMDg2MjIgMTMuNzAzNiA2LjAxMDA3QzEzLjY3MjUgNS45MzM5MiAxMy42MjY3IDUuODY0NjYgMTMuNTY4OCA1LjgwNjI2TDkuMTkzNzUgMS40MzEyNkM5LjEzNTM1IDEuMzczMzMgOS4wNjYwOSAxLjMyNzUxIDguOTg5OTQgMS4yOTY0QzguOTEzNzkgMS4yNjUzIDguODMyMjUgMS4yNDk1MyA4Ljc1IDEuMjUwMDFIMi41QzIuMTY4NDggMS4yNTAwMSAxLjg1MDU0IDEuMzgxNzEgMS42MTYxMiAxLjYxNjEzQzEuMzgxNyAxLjg1MDU1IDEuMjUgMi4xNjg0OSAxLjI1IDIuNTAwMDFWMTcuNUMxLjI1IDE3LjgzMTUgMS4zODE3IDE4LjE0OTUgMS42MTYxMiAxOC4zODM5QzEuODUwNTQgMTguNjE4MyAyLjE2ODQ4IDE4Ljc1IDIuNSAxOC43NUgxMi41QzEyLjgzMTUgMTguNzUgMTMuMTQ5NSAxOC42MTgzIDEzLjM4MzkgMTguMzgzOUMxMy42MTgzIDE4LjE0OTUgMTMuNzUgMTcuODMxNSAxMy43NSAxNy41VjE2LjI1SDEyLjVWMTcuNUgyLjVWMi41MDAwMUg3LjVWNi4yNTAwMUM3LjUgNi41ODE1MyA3LjYzMTcgNi44OTk0NyA3Ljg2NjEyIDcuMTMzODlDOC4xMDA1NCA3LjM2ODMxIDguNDE4NDggNy41MDAwMSA4Ljc1IDcuNTAwMDFIMTIuNVY4Ljc1MDAxSDEzLjc1Wk04Ljc1IDYuMjUwMDFWMi43NTYyNkwxMi4yNDM4IDYuMjUwMDFIOC43NVpcIlxuICAgICAgICAgICAgICBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgIDwvc3ZnPiBFeHBvcnQ8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0g4pSA4pSAIFRhbmdvIEFJIENoYXQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjaGF0LXBhZ2VcIj5cbiAgPGRpdiBjbGFzcz1cImNoYXQtbGF5b3V0LWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjaGF0LW1haW5cIj5cbiAgICAgIDxoZWFkZXIgY2xhc3M9XCJjaGF0LWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXRvcFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItY29udGVudCB0ZXh0LWNlbnRlclwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaGVhZGVyPlxuXG4gICAgICA8IS0tIE1lc3NhZ2UgQXJlYSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjaGF0LW1lc3NhZ2VzLWFyZWEgc2Nyb2xsYmFyLWhpZGRlblwiICNzY3JvbGxDb250YWluZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgcHktNFwiICpuZ0lmPVwiaXNDaGF0TG9hZGluZ1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZFwiPkxvYWRpbmcgY29udmVyc2F0aW9uLi4uPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbXNnIG9mIG1lc3NhZ2VzXCIgY2xhc3M9XCJtZXNzYWdlLXdyYXBwZXJcIiBbY2xhc3MudXNlcl09XCJtc2cuc2VuZGVyID09PSAndXNlcidcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZVwiIFtjbGFzcy5hc3Npc3RhbnRdPVwibXNnLnNlbmRlciA9PT0gJ2Fzc2lzdGFudCdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlLWF2YXRhclwiICpuZ0lmPVwibXNnLnNlbmRlciA9PT0gJ2Fzc2lzdGFudCdcIj5cbiAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgcng9XCIxMlwiIGZpbGw9XCIjRUFGOEZGXCIgLz5cbiAgICAgICAgICAgICAgICA8bWFzayBpZD1cInBhdGgtMi1pbnNpZGUtMV8xOTAyXzEwNzE4NlwiIGZpbGw9XCJ3aGl0ZVwiPlxuICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0xOC45OTQxIDE3LjU1NjFMMTguNDU2NSAxNy4wMTg1TDEyLjY2MyAxMS4yMjVMMTQuMzgxNiA5LjUwNjRMMTQuNzkzNCA5LjA5MzhDMTQuODMyNyA5LjA1Mzk1IDE0Ljg1NDkgOS4wMDAzMiAxNC44NTUyIDguOTQ0MzZDMTQuODU1IDguOTE2NjggMTQuODQ5NCA4Ljg4OTMxIDE0LjgzODcgOC44NjM4MUMxNC44MjggOC44MzgzIDE0LjgxMjMgOC44MTUxNyAxNC43OTI2IDguNzk1NzJMMTQuMzggOC4zODMxMkwxMi41NTc0IDYuNTU3MjlMMTIuMTQ0OCA2LjE0NDY5QzEyLjEyNTMgNi4xMjQ4NSAxMi4xMDIxIDYuMTA5MDkgMTIuMDc2NCA2LjA5ODMzQzEyLjA1MDggNi4wODc1NyAxMi4wMjMyIDYuMDgyMDMgMTEuOTk1NCA2LjA4MjAzQzExLjk2NzYgNi4wODIwMyAxMS45NCA2LjA4NzU3IDExLjkxNDQgNi4wOTgzM0MxMS44ODg3IDYuMTA5MDkgMTEuODY1NSA2LjEyNDg1IDExLjg0NTkgNi4xNDQ2OUwxMS40MzMzIDYuNTU4MUw5LjE5OTc5IDguNzkxNjZDOS4xNzk5NyA4LjgxMTA5IDkuMTY0MjMgOC44MzQyOCA5LjE1MzQ4IDguODU5ODhDOS4xNDI3MyA4Ljg4NTQ3IDkuMTM3MiA4LjkxMjk0IDkuMTM3MiA4Ljk0MDdDOS4xMzcyIDguOTY4NDYgOS4xNDI3MyA4Ljk5NTkzIDkuMTUzNDggOS4wMjE1MkM5LjE2NDIzIDkuMDQ3MTIgOS4xNzk5NyA5LjA3MDMxIDkuMTk5NzkgOS4wODk3NEwxMS4zMzM0IDExLjIyNDJMNS41MzkxOSAxNy4wMTg1TDUuMDAzOTUgMTcuNTU2MUM0Ljk2NDI2IDE3LjU5NTUgNC45NDE3NyAxNy42NDg5IDQuOTQxNDEgMTcuNzA0OEM0Ljk0MTY0IDE3Ljc1ODggNC45NjIyMyAxNy44MTA3IDQuOTk5MDcgMTcuODUwMkM1LjAxODc0IDE3Ljg3MTIgNS4wNDI1MSAxNy44ODc5IDUuMDY4OTIgMTcuODk5NEM1LjA5NTMyIDE3LjkxMDggNS4xMjM4IDE3LjkxNjggNS4xNTI1OCAxNy45MTY4SDEwLjM2NDVDMTAuNDIwNCAxNy45MTY2IDEwLjQ3NCAxNy44OTQyIDEwLjUxMzYgMTcuODU0N0MxMC41NTMxIDE3LjgxNTEgMTAuNTc1NCAxNy43NjE1IDEwLjU3NTcgMTcuNzA1NlYxNy4xODc0QzEwLjU3NTcgMTcuMTMxMyAxMC41NTM0IDE3LjA3NzUgMTAuNTEzOSAxNy4wMzc4QzEwLjQ3NDMgMTYuOTk4MSAxMC40MjA2IDE2Ljk3NTYgMTAuMzY0NSAxNi45NzU0SDYuOTEyNjJMMTEuOTk3OCAxMS44OTAyTDE3LjA4MyAxNi45NzU0SDEzLjYwMTFDMTMuNTQ1IDE2Ljk3NTYgMTMuNDkxMyAxNi45OTgxIDEzLjQ1MTcgMTcuMDM3OEMxMy40MTIyIDE3LjA3NzUgMTMuMzg5OSAxNy4xMzEzIDEzLjM4OTkgMTcuMTg3NFYxNy43MDU2QzEzLjM4OTggMTcuNzMzNCAxMy4zOTUzIDE3Ljc2MSAxMy40MDYxIDE3Ljc4NjdDMTMuNDE2OCAxNy44MTIzIDEzLjQzMjYgMTcuODM1NiAxMy40NTI1IDE3Ljg1NUMxMy40OTE5IDE3Ljg5NDQgMTMuNTQ1NCAxNy45MTY2IDEzLjYwMTEgMTcuOTE2OEgxOC44NDQ3QzE4Ljg3MzYgMTcuOTE2OSAxOC45MDIzIDE3LjkxMSAxOC45Mjg4IDE3Ljg5OTVDMTguOTU1NCAxNy44ODgxIDE4Ljk3OTMgMTcuODcxMyAxOC45OTkgMTcuODUwMkMxOS4wMzcgMTcuODEwMyAxOS4wNTc3IDE3Ljc1NzIgMTkuMDU2OCAxNy43MDIyQzE5LjA1NTkgMTcuNjQ3MSAxOS4wMzM0IDE3LjU5NDcgMTguOTk0MSAxNy41NTYxWk0xMS45OTQ2IDcuMzI2NDVMMTMuNjEzMyA4Ljk0NTE3TDExLjk5ODYgMTAuNTU5OEwxMC4zNzk5IDguOTQxMTFMMTEuOTk0NiA3LjMyNjQ1WlwiIC8+XG4gICAgICAgICAgICAgICAgPC9tYXNrPlxuICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICBkPVwiTTE4Ljk5NDEgMTcuNTU2MUwtOS40Nzg2OSA0Ni4wMjlMLTkuMzUyMjUgNDYuMTU1NEwtOS4yMjQ3IDQ2LjI4MDdMMTguOTk0MSAxNy41NTYxWk0xOC40NTY1IDE3LjAxODVMNDYuOTI5MyAtMTEuNDU0NFYtMTEuNDU0NEwxOC40NTY1IDE3LjAxODVaTTEyLjY2MyAxMS4yMjVMLTE1LjgwOTggLTE3LjI0NzhMLTQ0LjI4MjYgMTEuMjI1TC0xNS44MDk4IDM5LjY5NzlMMTIuNjYzIDExLjIyNVpNMTQuMzgxNiA5LjUwNjRMNDIuODU0NSAzNy45NzkyTDQyLjg2ODUgMzcuOTY1Mkw0Mi44ODI2IDM3Ljk1MTFMMTQuMzgxNiA5LjUwNjRaTTE0Ljc5MzQgOS4wOTM4TDQzLjI5NDMgMzcuNTM4NUw0My4zODEzIDM3LjQ1MTRMNDMuNDY3NyAzNy4zNjM4TDE0Ljc5MzQgOS4wOTM4Wk0xNC44NTUyIDguOTQ0MzZMNTUuMTIxMyA5LjE0OTcyTDU1LjEyMjMgOC45NDc3NEw1NS4xMjEzIDguNzQ1NzZMMTQuODU1MiA4Ljk0NDM2Wk0xNC43OTI2IDguNzk1NzJMLTEzLjY4MDIgMzcuMjY4NkwtMTMuNTkxNiAzNy4zNTcyTC0xMy41MDI0IDM3LjQ0NTNMMTQuNzkyNiA4Ljc5NTcyWk0xNC4zOCA4LjM4MzEyTC0xNC4xMTgyIDM2LjgzMDZMLTE0LjEwNTUgMzYuODQzM0wtMTQuMDkyOCAzNi44NTZMMTQuMzggOC4zODMxMlpNMTIuNTU3NCA2LjU1NzI5TDQxLjA1NTYgLTIxLjg5MDJMNDEuMDQyOSAtMjEuOTAyOUw0MS4wMzAyIC0yMS45MTU2TDEyLjU1NzQgNi41NTcyOVpNMTIuMTQ0OCA2LjE0NDY5TC0xNi41NzI1IDM0LjM3MDlMLTE2LjQ1MDggMzQuNDk0OEwtMTYuMzI4IDM0LjYxNzVMMTIuMTQ0OCA2LjE0NDY5Wk0xMS44NDU5IDYuMTQ0NjlMNDAuMzQ2NyAzNC41ODk1TDQwLjQ1NTQgMzQuNDgwNkw0MC41NjMzIDM0LjM3MDlMMTEuODQ1OSA2LjE0NDY5Wk0xMS40MzMzIDYuNTU4MUwzOS45MDYyIDM1LjAzMDlMMzkuOTIwMiAzNS4wMTY5TDM5LjkzNDEgMzUuMDAyOUwxMS40MzMzIDYuNTU4MVpNOS4xOTk3OSA4Ljc5MTY2TDM3LjM5MiAzNy41NDI0TDM3LjUzMyAzNy40MDQxTDM3LjY3MjYgMzcuMjY0NUw5LjE5OTc5IDguNzkxNjZaTTkuMTM3MiA4Ljk0MDdINDkuNDAzOUg5LjEzNzJaTTkuMTk5NzkgOS4wODk3NEwzNy42NzggLTE5LjM3NzdMMzcuNTM1NyAtMTkuNTJMMzcuMzkyIC0xOS42NjFMOS4xOTk3OSA5LjA4OTc0Wk0xMS4zMzM0IDExLjIyNDJMMzkuODA2MyAzOS42OTdMNjguMjczNyAxMS4yMjk2TDM5LjgxMTcgLTE3LjI0MzJMMTEuMzMzNCAxMS4yMjQyWk01LjUzOTE5IDE3LjAxODVMLTIyLjkzMzcgLTExLjQ1NDRMLTIyLjk2NiAtMTEuNDIyTC0yMi45OTgyIC0xMS4zODk2TDUuNTM5MTkgMTcuMDE4NVpNNS4wMDM5NSAxNy41NTYxTDMzLjM0NDYgNDYuMTYwNUwzMy40NDMzIDQ2LjA2MjdMMzMuNTQxNCA0NS45NjQzTDUuMDAzOTUgMTcuNTU2MVpNNC45NDE0MSAxNy43MDQ4TC0zNS4zMjQ0IDE3LjQ0MTlMLTM1LjMyNTggMTcuNjU5OEwtMzUuMzI0OSAxNy44Nzc2TDQuOTQxNDEgMTcuNzA0OFpNNC45OTkwNyAxNy44NTAyTC0yNC40Mzc5IDQ1LjMyNUwtMjQuNDE3NyA0NS4zNDY3TC0yNC4zOTc1IDQ1LjM2ODNMNC45OTkwNyAxNy44NTAyWk01LjE1MjU4IDE3LjkxNjhMNS4xMzk4MyA1OC4xODM0SDUuMTUyNThWMTcuOTE2OFpNMTAuMzY0NSAxNy45MTY4VjU4LjE4MzRIMTAuNDQxNUwxMC41MTg1IDU4LjE4MzFMMTAuMzY0NSAxNy45MTY4Wk0xMC41NzU3IDE3LjcwNTZMNTAuODQyIDE3Ljg1OTZMNTAuODQyMyAxNy43ODI2VjE3LjcwNTZIMTAuNTc1N1pNMTAuNTc1NyAxNy4xODc0TC0yOS42OTEgMTcuMTg3MVYxNy4xODc0SDEwLjU3NTdaTTEwLjM2NDUgMTYuOTc1NEwxMC41MTg4IC0yMy4yOTFMMTAuNDQxNiAtMjMuMjkxMkgxMC4zNjQ1VjE2Ljk3NTRaTTYuOTEyNjIgMTYuOTc1NEwtMjEuNTYwMiAtMTEuNDk3NEwtOTAuMjk5NyA1Ny4yNDIxSDYuOTEyNjJWMTYuOTc1NFpNMTEuOTk3OCAxMS44OTAyTDQwLjQ3MDcgLTE2LjU4MjZMMTEuOTk3OCAtNDUuMDU1NUwtMTYuNDc1IC0xNi41ODI2TDExLjk5NzggMTEuODkwMlpNMTcuMDgzIDE2Ljk3NTRWNTcuMjQyMUgxMTQuMjk1TDQ1LjU1NTkgLTExLjQ5NzRMMTcuMDgzIDE2Ljk3NTRaTTEzLjYwMTEgMTYuOTc1NFYtMjMuMjkxMkgxMy41MjRMMTMuNDQ2OCAtMjMuMjkxTDEzLjYwMTEgMTYuOTc1NFpNMTMuMzg5OSAxNy4xODc0SDUzLjY1NjZWMTcuMTg3MUwxMy4zODk5IDE3LjE4NzRaTTEzLjM4OTkgMTcuNzA1Nkw1My42NTYzIDE3Ljg2TDUzLjY1NjYgMTcuNzgyOFYxNy43MDU2SDEzLjM4OTlaTTEzLjQ1MjUgMTcuODU1TDQxLjkwMTkgLTEwLjY0MTJMNDEuNzU1NCAtMTAuNzg3NUw0MS42MDc0IC0xMC45MzIyTDEzLjQ1MjUgMTcuODU1Wk0xMy42MDExIDE3LjkxNjhMMTMuNDkzMyA1OC4xODMzTDEzLjU0NzIgNTguMTgzNEgxMy42MDExVjE3LjkxNjhaTTE4Ljg0NDcgMTcuOTE2OEwxOC45ODcyIC0yMi4zNDk3TDE4LjkxNTkgLTIyLjM0OTlIMTguODQ0N1YxNy45MTY4Wk0xOC45OTkgMTcuODUwMkwtMTAuMTU2MyAtOS45MjM0NkwtMTAuMjc3NiAtOS43OTYxMkwtMTAuMzk3NyAtOS42Njc3M0wxOC45OTkgMTcuODUwMlpNMTEuOTk0NiA3LjMyNjQ1TDQwLjQ2NzQgLTIxLjE0NjRMMTEuOTk0NiAtNDkuNjE5MkwtMTYuNDc4MyAtMjEuMTQ2NEwxMS45OTQ2IDcuMzI2NDVaTTEzLjYxMzMgOC45NDUxN0w0Mi4wODYxIDM3LjQxOEw3MC41NTkgOC45NDUxN0w0Mi4wODYxIC0xOS41Mjc3TDEzLjYxMzMgOC45NDUxN1pNMTEuOTk4NiAxMC41NTk4TC0xNi40NzQyIDM5LjAzMjdMMTEuOTk4NiA2Ny41MDU1TDQwLjQ3MTUgMzkuMDMyN0wxMS45OTg2IDEwLjU1OThaTTEwLjM3OTkgOC45NDExMUwtMTguMDkyOSAtMTkuNTMxN0wtNDYuNTY1NyA4Ljk0MTExTC0xOC4wOTI5IDM3LjQxMzlMMTAuMzc5OSA4Ljk0MTExWk0xOC45OTQxIDE3LjU1NjFMNDcuNDY3IC0xMC45MTY3TDQ2LjkyOTMgLTExLjQ1NDRMMTguNDU2NSAxNy4wMTg1TC0xMC4wMTY0IDQ1LjQ5MTNMLTkuNDc4NjkgNDYuMDI5TDE4Ljk5NDEgMTcuNTU2MVpNMTguNDU2NSAxNy4wMTg1TDQ2LjkyOTMgLTExLjQ1NDRMNDEuMTM1OSAtMTcuMjQ3OEwxMi42NjMgMTEuMjI1TC0xNS44MDk4IDM5LjY5NzlMLTEwLjAxNjQgNDUuNDkxM0wxOC40NTY1IDE3LjAxODVaTTEyLjY2MyAxMS4yMjVMNDEuMTM1OSAzOS42OTc5TDQyLjg1NDUgMzcuOTc5MkwxNC4zODE2IDkuNTA2NEwtMTQuMDkxMiAtMTguOTY2NEwtMTUuODA5OCAtMTcuMjQ3OEwxMi42NjMgMTEuMjI1Wk0xNC4zODE2IDkuNTA2NEw0Mi44ODI2IDM3Ljk1MTFMNDMuMjk0MyAzNy41Mzg1TDE0Ljc5MzQgOS4wOTM4TC0xMy43MDc1IC0xOS4zNTA5TC0xNC4xMTkzIC0xOC45MzgzTDE0LjM4MTYgOS41MDY0Wk0xNC43OTM0IDkuMDkzOEw0My40Njc3IDM3LjM2MzhDNTAuODg1MyAyOS44NDAxIDU1LjA2NzQgMTkuNzE0NiA1NS4xMjEzIDkuMTQ5NzJMMTQuODU1MiA4Ljk0NDM2TC0yNS40MTEgOC43Mzg5OUMtMjUuMzU3NyAtMS43MTQwMSAtMjEuMjE5OSAtMTEuNzMyMiAtMTMuODgwOCAtMTkuMTc2MkwxNC43OTM0IDkuMDkzOFpNMTQuODU1MiA4Ljk0NDM2TDU1LjEyMTMgOC43NDU3NkM1NS4wOTUxIDMuNDIyMTcgNTQuMDE4OSAtMS44NDQ2NiA1MS45NTM3IC02Ljc1Mjg5TDE0LjgzODcgOC44NjM4MUwtMjIuMjc2MyAyNC40ODA1Qy0yNC4zMjAxIDE5LjYyMzMgLTI1LjM4NSAxNC40MTEyIC0yNS40MTEgOS4xNDI5NUwxNC44NTUyIDguOTQ0MzZaTTE0LjgzODcgOC44NjM4MUw1MS45NTM3IC02Ljc1Mjg5QzQ5Ljg4ODggLTExLjY2MDQgNDYuODc1OSAtMTYuMTEyNCA0My4wODc2IC0xOS44NTM4TDE0Ljc5MjYgOC43OTU3MkwtMTMuNTAyNCAzNy40NDUzQy0xNy4yNTEzIDMzLjc0MjcgLTIwLjIzMjkgMjkuMzM3IC0yMi4yNzYzIDI0LjQ4MDVMMTQuODM4NyA4Ljg2MzgxWk0xNC43OTI2IDguNzk1NzJMNDMuMjY1NSAtMTkuNjc3MUw0Mi44NTI5IC0yMC4wODk3TDE0LjM4IDguMzgzMTJMLTE0LjA5MjggMzYuODU2TC0xMy42ODAyIDM3LjI2ODZMMTQuNzkyNiA4Ljc5NTcyWk0xNC4zOCA4LjM4MzEyTDQyLjg3ODIgLTIwLjA2NDNMNDEuMDU1NiAtMjEuODkwMkwxMi41NTc0IDYuNTU3MjlMLTE1Ljk0MDcgMzUuMDA0OEwtMTQuMTE4MiAzNi44MzA2TDE0LjM4IDguMzgzMTJaTTEyLjU1NzQgNi41NTcyOUw0MS4wMzAyIC0yMS45MTU2TDQwLjYxNzYgLTIyLjMyODJMMTIuMTQ0OCA2LjE0NDY5TC0xNi4zMjggMzQuNjE3NUwtMTUuOTE1NCAzNS4wMzAxTDEyLjU1NzQgNi41NTcyOVpNMTIuMTQ0OCA2LjE0NDY5TDQwLjg2MjIgLTIyLjA4MTVDMzcuMDk1NCAtMjUuOTEzOSAzMi42MDI4IC0yOC45NTgyIDI3LjY0NjEgLTMxLjAzNjRMMTIuMDc2NCA2LjA5ODMzTC0zLjQ5MzI0IDQzLjIzMzFDLTguMzk4NiA0MS4xNzY0IC0xMi44NDQ3IDM4LjE2MzYgLTE2LjU3MjUgMzQuMzcwOUwxMi4xNDQ4IDYuMTQ0NjlaTTEyLjA3NjQgNi4wOTgzM0wyNy42NDYxIC0zMS4wMzY0QzIyLjY4OTggLTMzLjExNDUgMTcuMzY5NCAtMzQuMTg0NiAxMS45OTU0IC0zNC4xODQ2VjYuMDgyMDNWNDYuMzQ4N0M2LjY3NzAzIDQ2LjM0ODcgMS40MTE3NSA0NS4yODk2IC0zLjQ5MzI0IDQzLjIzMzFMMTIuMDc2NCA2LjA5ODMzWk0xMS45OTU0IDYuMDgyMDNWLTM0LjE4NDZDNi42MjEyNyAtMzQuMTg0NiAxLjMwMDkxIC0zMy4xMTQ0IC0zLjY1NTI5IC0zMS4wMzY0TDExLjkxNDQgNi4wOTgzM0wyNy40ODQgNDMuMjMzMUMyMi41NzkxIDQ1LjI4OTYgMTcuMzEzOSA0Ni4zNDg3IDExLjk5NTQgNDYuMzQ4N1Y2LjA4MjAzWk0xMS45MTQ0IDYuMDk4MzNMLTMuNjU1MjkgLTMxLjAzNjRDLTguNjExNjQgLTI4Ljk1ODQgLTEzLjEwNDMgLTI1LjkxNDEgLTE2Ljg3MTQgLTIyLjA4MTVMMTEuODQ1OSA2LjE0NDY5TDQwLjU2MzMgMzQuMzcwOUMzNi44MzUyIDM4LjE2MzggMzIuMzg5MSA0MS4xNzY1IDI3LjQ4NCA0My4yMzMxTDExLjkxNDQgNi4wOTgzM1pNMTEuODQ1OSA2LjE0NDY5TC0xNi42NTQ5IC0yMi4zMDAyTC0xNy4wNjc1IC0yMS44ODY3TDExLjQzMzMgNi41NTgxTDM5LjkzNDEgMzUuMDAyOUw0MC4zNDY3IDM0LjU4OTVMMTEuODQ1OSA2LjE0NDY5Wk0xMS40MzMzIDYuNTU4MUwtMTcuMDM5NSAtMjEuOTE0N0wtMTkuMjczIC0xOS42ODEyTDkuMTk5NzkgOC43OTE2NkwzNy42NzI2IDM3LjI2NDVMMzkuOTA2MiAzNS4wMzA5TDExLjQzMzMgNi41NTgxWk05LjE5OTc5IDguNzkxNjZMLTE4Ljk5MjQgLTE5Ljk1OTFDLTIyLjgzNTIgLTE2LjE5MDkgLTI1Ljg4OCAtMTEuNjk0MSAtMjcuOTcyMSAtNi43MzE3Nkw5LjE1MzQ4IDguODU5ODhMNDYuMjc5IDI0LjQ1MTVDNDQuMjE2NSAyOS4zNjI3IDQxLjE5NTIgMzMuODEzMSAzNy4zOTIgMzcuNTQyNEw5LjE5OTc5IDguNzkxNjZaTTkuMTUzNDggOC44NTk4OEwtMjcuOTcyMSAtNi43MzE3NkMtMzAuMDU1OSAtMS43Njk5OCAtMzEuMTI5NSAzLjU1ODA1IC0zMS4xMjk1IDguOTQwN0g5LjEzNzJINDkuNDAzOUM0OS40MDM5IDE0LjI2NzggNDguMzQxMyAxOS41NDA5IDQ2LjI3OSAyNC40NTE1TDkuMTUzNDggOC44NTk4OFpNOS4xMzcyIDguOTQwN0gtMzEuMTI5NUMtMzEuMTI5NSAxNC4zMjMzIC0zMC4wNTU5IDE5LjY1MTMgLTI3Ljk3MjEgMjQuNjEzMkw5LjE1MzQ4IDkuMDIxNTJMNDYuMjc5IC02LjU3MDExQzQ4LjM0MTMgLTEuNjU5NDYgNDkuNDAzOSAzLjYxMzYyIDQ5LjQwMzkgOC45NDA3SDkuMTM3MlpNOS4xNTM0OCA5LjAyMTUyTC0yNy45NzIxIDI0LjYxMzJDLTI1Ljg4NzkgMjkuNTc1NyAtMjIuODM1MSAzNC4wNzI0IC0xOC45OTI0IDM3Ljg0MDVMOS4xOTk3OSA5LjA4OTc0TDM3LjM5MiAtMTkuNjYxQzQxLjE5NSAtMTUuOTMxOCA0NC4yMTY0IC0xMS40ODE1IDQ2LjI3OSAtNi41NzAxMUw5LjE1MzQ4IDkuMDIxNTJaTTkuMTk5NzkgOS4wODk3NEwtMTkuMjc4NSAzNy41NTcxTC0xNy4xNDQ4IDM5LjY5MTZMMTEuMzMzNCAxMS4yMjQyTDM5LjgxMTcgLTE3LjI0MzJMMzcuNjc4IC0xOS4zNzc3TDkuMTk5NzkgOS4wODk3NFpNMTEuMzMzNCAxMS4yMjQyTC0xNy4xMzk0IC0xNy4yNDg2TC0yMi45MzM3IC0xMS40NTQ0TDUuNTM5MTkgMTcuMDE4NUwzNC4wMTIgNDUuNDkxM0wzOS44MDYzIDM5LjY5N0wxMS4zMzM0IDExLjIyNDJaTTUuNTM5MTkgMTcuMDE4NUwtMjIuOTk4MiAtMTEuMzg5NkwtMjMuNTMzNSAtMTAuODUyTDUuMDAzOTUgMTcuNTU2MUwzMy41NDE0IDQ1Ljk2NDNMMzQuMDc2NiA0NS40MjY2TDUuNTM5MTkgMTcuMDE4NVpNNS4wMDM5NSAxNy41NTYxTC0yMy4zMzY3IC0xMS4wNDgyQy0zMC45NDQgLTMuNTExMTEgLTM1LjI1NDUgNi43MzMzOSAtMzUuMzI0NCAxNy40NDE5TDQuOTQxNDEgMTcuNzA0OEw0NS4yMDcyIDE3Ljk2NzZDNDUuMTM4IDI4LjU2NDQgNDAuODcyNSAzOC43MDIxIDMzLjM0NDYgNDYuMTYwNUw1LjAwMzk1IDE3LjU1NjFaTTQuOTQxNDEgMTcuNzA0OEwtMzUuMzI0OSAxNy44Nzc2Qy0zNS4yODExIDI4LjA3MTQgLTMxLjM5MzEgMzcuODczMSAtMjQuNDM3OSA0NS4zMjVMNC45OTkwNyAxNy44NTAyTDM0LjQzNjEgLTkuNjI0NjlDNDEuMzE3NiAtMi4yNTE3MSA0NS4xNjQ0IDcuNDQ2MiA0NS4yMDc3IDE3LjUzMkw0Ljk0MTQxIDE3LjcwNDhaTTQuOTk5MDcgMTcuODUwMkwtMjQuMzk3NSA0NS4zNjgzQy0yMC42MTMgNDkuNDExMSAtMTYuMDM5IDUyLjYzNDcgLTEwLjk1NzkgNTQuODM5Mkw1LjA2ODkyIDE3Ljg5OTRMMjEuMDk1NyAtMTkuMDQwNEMyNi4xMjQgLTE2Ljg1ODggMzAuNjUwNSAtMTMuNjY4NyAzNC4zOTU2IC05LjY2Nzk4TDQuOTk5MDcgMTcuODUwMlpNNS4wNjg5MiAxNy44OTk0TC0xMC45NTc5IDU0LjgzOTJDLTUuODc3ODMgNTcuMDQzMiAtMC4zOTg5NzcgNTguMTgxNyA1LjEzOTgzIDU4LjE4MzRMNS4xNTI1OCAxNy45MTY4TDUuMTY1MzMgLTIyLjM0OTlDMTAuNjQ2NiAtMjIuMzQ4MiAxNi4wNjg1IC0yMS4yMjE1IDIxLjA5NTcgLTE5LjA0MDRMNS4wNjg5MiAxNy44OTk0Wk01LjE1MjU4IDE3LjkxNjhWNTguMTgzNEgxMC4zNjQ1VjE3LjkxNjhWLTIyLjM0OTlINS4xNTI1OFYxNy45MTY4Wk0xMC4zNjQ1IDE3LjkxNjhMMTAuNTE4NSA1OC4xODMxQzIxLjIwMDUgNTguMTQyMyAzMS40MzMyIDUzLjg4MDcgMzguOTg2NCA0Ni4zMjc1TDEwLjUxMzYgMTcuODU0N0wtMTcuOTU5MyAtMTAuNjE4MkMtMTAuNDg1MiAtMTguMDkyMiAtMC4zNTk2NzkgLTIyLjMwOTIgMTAuMjEwNSAtMjIuMzQ5NkwxMC4zNjQ1IDE3LjkxNjhaTTEwLjUxMzYgMTcuODU0N0wzOC45ODY0IDQ2LjMyNzVDNDYuNTQwMyAzOC43NzM3IDUwLjgwMTIgMjguNTQwNyA1MC44NDIgMTcuODU5NkwxMC41NzU3IDE3LjcwNTZMLTI5LjY5MDcgMTcuNTUxNkMtMjkuNjUwMyA2Ljk4MjM2IC0yNS40MzQgLTMuMTQzNDMgLTE3Ljk1OTMgLTEwLjYxODJMMTAuNTEzNiAxNy44NTQ3Wk0xMC41NzU3IDE3LjcwNTZINTAuODQyM1YxNy4xODc0SDEwLjU3NTdILTI5LjY5MVYxNy43MDU2SDEwLjU3NTdaTTEwLjU3NTcgMTcuMTg3NEw1MC44NDIzIDE3LjE4NzdDNTAuODQyNCA2LjQ3ODg0IDQ2LjU5OSAtMy43OTM2MSAzOS4wNDEzIC0xMS4zODAzTDEwLjUxMzkgMTcuMDM3OEwtMTguMDEzNiA0NS40NTU5Qy0yNS40OTIxIDM3Ljk0ODcgLTI5LjY5MTEgMjcuNzgzOCAtMjkuNjkxIDE3LjE4NzFMMTAuNTc1NyAxNy4xODc0Wk0xMC41MTM5IDE3LjAzNzhMMzkuMDQxMyAtMTEuMzgwM0MzMS40ODQxIC0xOC45NjY2IDIxLjIyODIgLTIzLjI0OTkgMTAuNTE4OCAtMjMuMjkxTDEwLjM2NDUgMTYuOTc1NEwxMC4yMTAyIDU3LjI0MThDLTAuMzg3MDQzIDU3LjIwMTIgLTEwLjUzNTUgNTIuOTYyNyAtMTguMDEzNiA0NS40NTU5TDEwLjUxMzkgMTcuMDM3OFpNMTAuMzY0NSAxNi45NzU0Vi0yMy4yOTEySDYuOTEyNjJWMTYuOTc1NFY1Ny4yNDIxSDEwLjM2NDVWMTYuOTc1NFpNNi45MTI2MiAxNi45NzU0TDM1LjM4NTUgNDUuNDQ4M0w0MC40NzA3IDQwLjM2MzFMMTEuOTk3OCAxMS44OTAyTC0xNi40NzUgLTE2LjU4MjZMLTIxLjU2MDIgLTExLjQ5NzRMNi45MTI2MiAxNi45NzU0Wk0xMS45OTc4IDExLjg5MDJMLTE2LjQ3NSA0MC4zNjNMLTExLjM4OTggNDUuNDQ4M0wxNy4wODMgMTYuOTc1NEw0NS41NTU5IC0xMS40OTc0TDQwLjQ3MDcgLTE2LjU4MjZMMTEuOTk3OCAxMS44OTAyWk0xNy4wODMgMTYuOTc1NFYtMjMuMjkxMkgxMy42MDExVjE2Ljk3NTRWNTcuMjQyMUgxNy4wODNWMTYuOTc1NFpNMTMuNjAxMSAxNi45NzU0TDEzLjQ0NjggLTIzLjI5MUMyLjczNzU2IC0yMy4yNDk5IC03LjUxODM4IC0xOC45NjY3IC0xNS4wNzU3IC0xMS4zODAzTDEzLjQ1MTcgMTcuMDM3OEw0MS45NzkyIDQ1LjQ1NTlDMzQuNTAxIDUyLjk2MjggMjQuMzUyNSA1Ny4yMDEyIDEzLjc1NTQgNTcuMjQxOEwxMy42MDExIDE2Ljk3NTRaTTEzLjQ1MTcgMTcuMDM3OEwtMTUuMDc1NyAtMTEuMzgwM0MtMjIuNjMzMSAtMy43OTM4MyAtMjYuODc2OCA2LjQ3ODUzIC0yNi44NzY3IDE3LjE4NzdMMTMuMzg5OSAxNy4xODc0TDUzLjY1NjYgMTcuMTg3MUM1My42NTY3IDI3Ljc4NDEgNDkuNDU3NSAzNy45NDg5IDQxLjk3OTIgNDUuNDU1OUwxMy40NTE3IDE3LjAzNzhaTTEzLjM4OTkgMTcuMTg3NEgtMjYuODc2N1YxNy43MDU2SDEzLjM4OTlINTMuNjU2NlYxNy4xODc0SDEzLjM4OTlaTTEzLjM4OTkgMTcuNzA1NkwtMjYuODc2NCAxNy41NTEyQy0yNi44OTcyIDIyLjk2ODIgLTI1LjgzMDQgMjguMzM0MiAtMjMuNzM5MiAzMy4zMzEyTDEzLjQwNjEgMTcuNzg2N0w1MC41NTE0IDIuMjQyMTZDNTIuNjIxIDcuMTg3NzkgNTMuNjc2OSAxMi40OTg2IDUzLjY1NjMgMTcuODZMMTMuMzg5OSAxNy43MDU2Wk0xMy40MDYxIDE3Ljc4NjdMLTIzLjczOTIgMzMuMzMxMkMtMjEuNjQ4IDM4LjMyODUgLTE4LjU3NDkgNDIuODU0OSAtMTQuNzAyNCA0Ni42NDIzTDEzLjQ1MjUgMTcuODU1TDQxLjYwNzQgLTEwLjkzMjJDNDUuNDQwMSAtNy4xODM3IDQ4LjQ4MTYgLTIuNzAzODIgNTAuNTUxNCAyLjI0MjE2TDEzLjQwNjEgMTcuNzg2N1pNMTMuNDUyNSAxNy44NTVMLTE0Ljk5NjkgNDYuMzUxM0MtNy40MzQ1NiA1My45MDEyIDIuODA2NyA1OC4xNTQ3IDEzLjQ5MzMgNTguMTgzM0wxMy42MDExIDE3LjkxNjhMMTMuNzA5IC0yMi4zNDk4QzI0LjI4NCAtMjIuMzIxNCAzNC40MTg0IC0xOC4xMTIzIDQxLjkwMTkgLTEwLjY0MTJMMTMuNDUyNSAxNy44NTVaTTEzLjYwMTEgMTcuOTE2OFY1OC4xODM0SDE4Ljg0NDdWMTcuOTE2OFYtMjIuMzQ5OUgxMy42MDExVjE3LjkxNjhaTTE4Ljg0NDcgMTcuOTE2OEwxOC43MDIyIDU4LjE4MzJDMjQuMjY4MSA1OC4yMDI5IDI5Ljc3NjcgNTcuMDc0NSAzNC44ODQ1IDU0Ljg3MDFMMTguOTI4OCAxNy44OTk1TDIuOTczMSAtMTkuMDcxQzguMDI3NzcgLTIxLjI1MjUgMTMuNDc5MiAtMjIuMzY5MSAxOC45ODcyIC0yMi4zNDk3TDE4Ljg0NDcgMTcuOTE2OFpNMTguOTI4OCAxNy44OTk1TDM0Ljg4NDUgNTQuODcwMUMzOS45OTM4IDUyLjY2NSA0NC41OTMyIDQ5LjQzMDIgNDguMzk1OCA0NS4zNjgxTDE4Ljk5OSAxNy44NTAyTC0xMC4zOTc3IC05LjY2NzczQy02LjYzNDcyIC0xMy42ODc3IC0yLjA4MzA4IC0xNi44ODg4IDIuOTczMSAtMTkuMDcxTDE4LjkyODggMTcuODk5NVpNMTguOTk5IDE3Ljg1MDJMNDguMTU0MyA0NS42MjM4QzU1LjQ4MzcgMzcuOTI5OCA1OS40OTQxIDI3LjY2MTMgNTkuMzE4IDE3LjAzNDhMMTkuMDU2OCAxNy43MDIyTC0yMS4yMDQzIDE4LjM2OTVDLTIxLjM3ODYgNy44NTMgLTE3LjQwOTggLTIuMzA5MTIgLTEwLjE1NjMgLTkuOTIzNDZMMTguOTk5IDE3Ljg1MDJaTTE5LjA1NjggMTcuNzAyMkw1OS4zMTggMTcuMDM0OEM1OS4xNDE4IDYuNDA4NyA1NC43OTM2IC0zLjcyMTMgNDcuMjEzIC0xMS4xNjg0TDE4Ljk5NDEgMTcuNTU2MUwtOS4yMjQ3IDQ2LjI4MDdDLTE2LjcyNjggMzguOTEwNyAtMjEuMDMgMjguODg1NiAtMjEuMjA0MyAxOC4zNjk1TDE5LjA1NjggMTcuNzAyMlpNMTEuOTk0NiA3LjMyNjQ1TC0xNi40NzgzIDM1Ljc5OTNMLTE0Ljg1OTUgMzcuNDE4TDEzLjYxMzMgOC45NDUxN0w0Mi4wODYxIC0xOS41Mjc3TDQwLjQ2NzQgLTIxLjE0NjRMMTEuOTk0NiA3LjMyNjQ1Wk0xMy42MTMzIDguOTQ1MTdMLTE0Ljg1OTUgLTE5LjUyNzdMLTE2LjQ3NDIgLTE3LjkxM0wxMS45OTg2IDEwLjU1OThMNDAuNDcxNSAzOS4wMzI3TDQyLjA4NjEgMzcuNDE4TDEzLjYxMzMgOC45NDUxN1pNMTEuOTk4NiAxMC41NTk4TDQwLjQ3MTUgLTE3LjkxM0wzOC44NTI4IC0xOS41MzE3TDEwLjM3OTkgOC45NDExMUwtMTguMDkyOSAzNy40MTM5TC0xNi40NzQyIDM5LjAzMjdMMTEuOTk4NiAxMC41NTk4Wk0xMC4zNzk5IDguOTQxMTFMMzguODUyOCAzNy40MTM5TDQwLjQ2NzQgMzUuNzk5M0wxMS45OTQ2IDcuMzI2NDVMLTE2LjQ3ODMgLTIxLjE0NjRMLTE4LjA5MjkgLTE5LjUzMTdMMTAuMzc5OSA4Ljk0MTExWlwiXG4gICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIG1hc2s9XCJ1cmwoI3BhdGgtMi1pbnNpZGUtMV8xOTAyXzEwNzE4NilcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2UtY29udGVudFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZS1idWJibGVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwicGFyc2VNYXJrZG93bihtc2cudGV4dClcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zZy1zZW5kZXItdGFnXCIgKm5nSWY9XCJtc2cuc2VuZGVyID09PSAndXNlcidcIj57eyB1c2VySW5pdGlhbHMgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZS1hY3Rpb25zXCIgKm5nSWY9XCJtc2cuc2VuZGVyID09PSAnYXNzaXN0YW50JyAmJiBtc2cudGV4dFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY29weVwiIChjbGljayk9XCJjb3B5VG9DbGlwYm9hcmQobXNnLnRleHQpXCIgdGl0bGU9XCJDb3B5IHRvIGNsaXBib2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzLjMzMzMgMTMuMzMzM1YxNi42NjY3QzEzLjMzMzMgMTcuNTg3MiAxMi41ODcyIDE4LjMzMzMgMTEuNjY2NyAxOC4zMzMzSDMuMzMzMzNDMi40MTI4NiAxOC4zMzMzIDEuNjY2NjcgMTcuNTg3MiAxLjY2NjY3IDE2LjY2NjdWOC4zMzMzM0MxLjY2NjY3IDcuNDEyODYgMi40MTI4NiA2LjY2NjY3IDMuMzMzMzMgNi42NjY2N0g2LjY2NjY3TTguMzMzMzMgMy4zMzMzM1YxMS42NjY3QzguMzMzMzMgMTIuNTg3MiA5LjA3OTUzIDEzLjMzMzMgMTAgMTMuMzMzM0gxNi42NjY3QzE3LjU4NzIgMTMuMzMzMyAxOC4zMzMzIDEyLjU4NzIgMTguMzMzMyAxMS42NjY3VjMuMzMzMzNDMTguMzMzMyAyLjQxMjg2IDE3LjU4NzIgMS42NjY2NyAxNi42NjY3IDEuNjY2NjdIMTBDOS4wNzk1MyAxLjY2NjY3IDguMzMzMzMgMi40MTI4NiA4LjMzMzMzIDMuMzMzMzNaXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBUeXBpbmcgSW5kaWNhdG9yIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZS13cmFwcGVyIGFzc2lzdGFudFwiICpuZ0lmPVwiaXNUeXBpbmdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZSBhc3Npc3RhbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlLWF2YXRhclwiPlxuICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiByeD1cIjEyXCIgZmlsbD1cIiNFQUY4RkZcIiAvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUuOTk0MSAxNC41NTYxTDE1LjQ1NjUgMTQuMDE4NUw5LjY2MyA4LjIyNUwxMS4zODE2IDYuNTA2NEwxMS43OTM0IDYuMDkzOEMxMS44MzI3IDYuMDUzOTUgMTEuODU0OSA2LjAwMDMyIDExLjg1NTIgNS45NDI4QzExLjg1NSA1LjkxNjY4IDExLjg0OTQgNS44ODkzMSAxMS44Mzg3IDUuODYzODFDMTEuODI4IDUuODM4MyAxMS44MTIzIDUuODE1MTcgMTEuNzkyNiA1Ljc5NTcyTDExLjM4IDUuMzgzMTJMOS41NTc0IDMuNTU3MjlMOS4xNDQ4IDMuMTQ0NjlDOS4xMjUzIDMuMTI0ODUgOS4xMDIxIDMuMTA5MDkgOS4wNzY0IDMuMDk4MzNDOS4wNTA4IDMuMDg3NTcgOS4wMjMyIDMuMDgyMDMgOC45OTU0IDMuMDgyMDNDOC45Njc2IDMuMDgyMDMgOC45NCAzLjA4NzU3IDguOTE0NCAzLjA5ODMzQzguODg4NyAzLjEwOTA5IDguODY1NSAzLjEyNDg1IDguODQ1OSAzLjE0NDY5TDguNDMzMyAzLjU1ODFMNi4xOTk4IDUuNzkxNjZDNi4xOCA1LjgxMTA5IDYuMTY0MiA1LjgzNDI4IDYuMTUzNSA1Ljg1OTg4QzYuMTQyNyA1Ljg4NTQ3IDYuMTM3MiA1LjkxMjk0IDYuMTM3MiA1Ljk0MDdDNi4xMzcyIDUuOTY4NDYgNi4xNDI3IDUuOTk1OTMgNi4xNTM1IDYuMDIxNTJDNi4xNjQyIDYuMDQ3MTIgNi4xOCA2LjA3MDMxIDYuMTk5OCA2LjA4OTc0TDguMzMzNCA4LjIyNDJMMi41MzkyIDE0LjAxODVMMi4wMDQgMTQuNTU2MUMxLjk2NDMgMTQuNTk1NSAxLjk0MTggMTQuNjQ4OSAxLjk0MTQgMTQuNzA0OEMxLjk0MTYgMTQuNzU4OCAxLjk2MjIgMTQuODEwNyAxLjk5OTEgMTQuODUwMkMyLjAxODcgMTQuODcxMiAyLjA0MjUgMTQuODg3OSAyLjA2ODkgMTQuODk5NEMyLjA5NTMgMTQuOTEwOCAyLjEyMzggMTQuOTE2OCAyLjE1MjYgMTQuOTE2OEg3LjM2NDVDNy40MjA0IDE0LjkxNjYgNy40NzQgMTQuODk0MiA3LjUxMzYgMTQuODU0N0M3LjU1MzEgMTQuODE1MSA3LjU3NTQgMTQuNzYxNSA3LjU3NTcgMTQuNzA1NlYxNC4xODc0QzcuNTc1NyAxNC4xMzEzIDcuNTUzNCAxNC4wNzc1IDcuNTEzOSAxNC4wMzc4QzcuNDc0MyAxMy45OTgxIDcuNDIwNiAxMy45NzU2IDcuMzY0NSAxMy45NzU0SDMuOTEyNkw4Ljk5NzggOC44OTAyTDE0LjA4MyAxMy45NzU0SDEwLjYwMTFDMTAuNTQ1IDEzLjk3NTYgMTAuNDkxMyAxMy45OTgxIDEwLjQ1MTcgMTQuMDM3OEMxMC40MTIyIDE0LjA3NzUgMTAuMzg5OSAxNC4xMzEzIDEwLjM4OTkgMTQuMTg3NFYxNC43MDU2QzEwLjM4OTggMTQuNzMzNCAxMC4zOTUzIDE0Ljc2MSAxMC40MDYxIDE0Ljc4NjdDMTAuNDE2OCAxNC44MTIzIDEwLjQzMjYgMTQuODM1NiAxMC40NTI1IDE0Ljg1NUMxMC40OTE5IDE0Ljg5NDQgMTAuNTQ1NCAxNC45MTY2IDEwLjYwMTEgMTQuOTE2OEgxNS44NDQ3QzE1Ljg3MzYgMTQuOTE2OSAxNS45MDIzIDE0LjkxMSAxNS45Mjg4IDE0Ljg5OTVDMTUuOTU1NCAxNC44ODgxIDE1Ljk3OTMgMTQuODcxMyAxNS45OTkgMTQuODUwMkMxNi4wMzcgMTQuODEwMyAxNi4wNTc3IDE0Ljc1NzIgMTYuMDU2OCAxNC43MDIyQzE2LjA1NTkgMTQuNjQ3MSAxNi4wMzM0IDE0LjU5NDcgMTUuOTk0MSAxNC41NTYxWk04Ljk5NDYgNC4zMjY0NUwxMC42MTMzIDUuOTQ1MTdMOC45OTg2IDcuNTU5OEw3LjM3OTkgNS45NDExMUw4Ljk5NDYgNC4zMjY0NVpcIiBmaWxsPVwiIzAwQTNGRlwiLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlLWNvbnRlbnQgbXQtM1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZS1idWJibGUgdHlwaW5nXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj48L3NwYW4+PHNwYW4gY2xhc3M9XCJkb3RcIj48L3NwYW4+PHNwYW4gY2xhc3M9XCJkb3RcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIENvcHkgRmVlZGJhY2sgVG9hc3QgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29weS1mZWVkYmFjay10b2FzdFwiICpuZ0lmPVwiY29weUZlZWRiYWNrXCI+e3sgY29weUZlZWRiYWNrIH19PC9kaXY+XG4gICAgICA8IS0tIElucHV0IEFyZWEgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2hhdC1pbnB1dC1hcmVhIGJvcmRlci10b3BcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNoYXQtZm9vdGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtd3JhcHBlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtZ3Jvdy0xXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGx1cy1tZW51LXdyYXAgbWUtMlwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLXBsdXNcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZVBsdXNNZW51KClcIiBbY2xhc3Mub3Blbl09XCJzaG93UGx1c01lbnVcIj4vPC9idXR0b24+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbHVzLXBvcHVwXCIgKm5nSWY9XCJzaG93UGx1c01lbnVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGx1cy1wb3B1cC1zZWN0aW9uLWxhYmVsXCI+TW9kZWw8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGx1cy1wb3B1cC1pdGVtXCIgdHlwZT1cImJ1dHRvblwiICpuZ0Zvcj1cImxldCBtIG9mIG1vZGVsT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwic2VsZWN0ZWRNb2RlbCA9PT0gbS52YWx1ZVwiIChjbGljayk9XCJzZWxlY3RNb2RlbChtLnZhbHVlKTsgY2xvc2VQbHVzTWVudSgpXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vZGVsLWhpbnQgZnctYm9sZCB0ZXh0LWRhcmsgZnMtNVwiPnt7IG0ubGFiZWwgfCB0aXRsZWNhc2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwic2VsZWN0ZWRNb2RlbCA9PT0gbS52YWx1ZVwiIGNsYXNzPVwiY2hlY2staWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMi41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9XCIyMCA2IDkgMTcgNCAxMlwiLz5cbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbHVzLXBvcHVwLWRpdmlkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGx1cy1wb3B1cC1pdGVtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZVBsdXNNZW51KCk7IG5ld0NoYXQoKVwiPlxuICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuOFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDIwaDlNMTYuNSAzLjVhMi4xMjEgMi4xMjEgMCAwIDEgMyAzTDcgMTlsLTQgMSAxLTRMMTYuNSAzLjV6XCIvPlxuICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5OZXcgQ2hhdDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGx1cy1wb3B1cC1pdGVtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZVBsdXNNZW51KCk7IHRvZ2dsZUNoYXRIaXN0b3J5KClcIj5cbiAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA4djRsMyAzbTYtM2E5IDkgMCAxIDEtMTggMCA5IDkgMCAwIDEgMTggMHpcIi8+XG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPkNoYXQgSGlzdG9yeTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwidXNlck1lc3NhZ2VcIiBjbGFzcz1cImNoYXQtaW5wdXRcIiBwbGFjZWhvbGRlcj1cIkFzayBhbnl0aGluZy4uLlwiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzZW5kTWVzc2FnZSgpXCIgW2Rpc2FibGVkXT1cImlzVHlwaW5nXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWhpc3RvcnktaW5saW5lXCIgKm5nSWY9XCIhc2hvd0NoYXRIaXN0b3J5XCIgKGNsaWNrKT1cInRvZ2dsZUNoYXRIaXN0b3J5KClcIiB0aXRsZT1cIkNoYXQgSGlzdG9yeVwiPlxuICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS44XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA4djRsMyAzbTYtM2E5IDkgMCAxIDEtMTggMCA5IDkgMCAwIDEgMTggMHpcIi8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLXNlbmRcIiAoY2xpY2spPVwic2VuZE1lc3NhZ2UoKVwiIFtkaXNhYmxlZF09XCIhdXNlck1lc3NhZ2UudHJpbSgpIHx8IGlzVHlwaW5nXCI+XG4gICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiPlxuICAgICAgICAgICAgICAgIDxsaW5lIHgxPVwiMjJcIiB5MT1cIjJcIiB4Mj1cIjExXCIgeTI9XCIxM1wiPjwvbGluZT5cbiAgICAgICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9XCIyMiAyIDE1IDIyIDExIDEzIDIgOSAyMiAyXCI+PC9wb2x5Z29uPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gQmFja2Ryb3AgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNoYXQtaGlzdG9yeS1iYWNrZHJvcFwiICpuZ0lmPVwic2hvd0NoYXRIaXN0b3J5XCIgKGNsaWNrKT1cInRvZ2dsZUNoYXRIaXN0b3J5KClcIj48L2Rpdj5cbiAgICA8IS0tIFJpZ2h0IFNpZGViYXI6IENoYXQgSGlzdG9yeSAtLT5cbiAgICA8YXNpZGUgY2xhc3M9XCJjaGF0LWhpc3Rvcnktc2lkZWJhciBib3JkZXItc3RhcnRcIiAqbmdJZj1cInNob3dDaGF0SGlzdG9yeVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNpZGViYXItaGVhZGVyIHAtMyBib3JkZXItYm90dG9tIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGg2IChjbGljayk9XCJ0b2dnbGVDaGF0SGlzdG9yeSgpXCIgY2xhc3M9XCJtYi0wIGZ3LWJvbGQgY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuODMzMyAxNC4xNjczTDE1IDEwLjAwMDdMMTAuODMzMyA1LjgzMzk4TTUgMTQuMTY3M0w5LjE2NjY3IDEwLjAwMDdMNSA1LjgzMzk4XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgIDwvc3ZnPiBDaGF0IEhpc3RvcnlcbiAgICAgICAgPC9oNj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNpZGViYXItc2VhcmNoIHAtMyBwYi0wXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoaXN0b3J5LXNlYXJjaC13cmFwcGVyXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJiaSBiaS1zZWFyY2hcIj48L2k+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY2hhdHMuLlwiIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNpZGViYXItY29udGVudCBwLTMgc2Nyb2xsYmFyLWhpZGRlblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCBweS0zXCIgKm5nSWY9XCJpc0hpc3RvcnlMb2FkaW5nXCI+TG9hZGluZy4uLjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCBweS0zXCIgKm5nSWY9XCIhaXNIaXN0b3J5TG9hZGluZyAmJiBmaWx0ZXJlZEhpc3RvcnkubGVuZ3RoID09PSAwXCI+Tm8gY2hhdHMgZm91bmQ8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY2hhdCBvZiBmaWx0ZXJlZEhpc3RvcnlcIiBjbGFzcz1cImhpc3RvcnktaXRlbVwiIFtjbGFzcy5hY3RpdmVdPVwic2VsZWN0ZWRDaGF0SWQgPT09IGNoYXQuc2Vzc2lvbl9pZFwiXG4gICAgICAgICAgKGNsaWNrKT1cImxvYWRDaGF0KGNoYXQuc2Vzc2lvbl9pZClcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS10aXRsZSB0ZXh0LXRydW5jYXRlXCI+e3sgY2hhdC5zZXNzaW9uX3RpdGxlIH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2lkZWJhci1mb290ZXIgcC0zIG10LWF1dG9cIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1uZXctY2hhdCB3LTEwMFwiIChjbGljayk9XCJuZXdDaGF0KClcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLXBsdXMtbGcgbWUtMlwiPjwvaT4gTmV3IENoYXRcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2FzaWRlPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG4gICAgPCEtLSBDb252ZXJzYXRpb25zIENvdW50IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjb252ZXJzYXRpb25zLWNvdW50IG1iLTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LXdyYXAgZ2FwLTJcIj5cbiAgICAgIDxzdHJvbmc+e3sgdG90YWxJdGVtcyB9fSBUb3RhbCBDb252ZXJzYXRpb25zIEZvdW5kPC9zdHJvbmc+XG4gICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdGVkQ2FyZElkIHx8IHNlbGVjdGVkQ2FyZE5hbWVcIiBjbGFzcz1cImFjdGl2ZS1maWx0ZXItY2hpcFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXAtbGFiZWxcIj57eyBzZWxlY3RlZENhcmRJZCB8fCBzZWxlY3RlZENhcmROYW1lIH19PC9zcGFuPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hpcC1yZW1vdmVcIiAoY2xpY2spPVwiY2xlYXJDYXJkRmlsdGVyKClcIiB0aXRsZT1cIlJlbW92ZSBmaWx0ZXJcIj4mdGltZXM7PC9idXR0b24+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIENvbnZlcnNhdGlvbiBDYXJkcyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY29udmVyc2F0aW9ucy1saXN0XCI+XG5cbiAgICAgIDwhLS0gTG9hZGVyIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTG9hZGluZ0NvbnZlcnNhdGlvbnNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnZlcnNhdGlvbi1jYXJkIHAtM1wiICpuZ0Zvcj1cImxldCBzIG9mIFsxLDIsM11cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBObyBEYXRhIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW4gbXktMTBcIlxuICAgICAgICAqbmdJZj1cIiFpc0xvYWRpbmdDb252ZXJzYXRpb25zICYmIGRpc3BsYXllZENvbnZlcnNhdGlvbnMubGVuZ3RoID09PSAwXCI+XG4gICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbWFwXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj5ObyBjb2hvcnRzIGhhcyBiZWVuIGNyZWF0ZWQgeWV0Ljxicj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2UgQ3JlYXRlIGEgY29ob3J0IHRvIHZpZXcgdGhlIGRhc2hib2FyZC48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSAgcm91bmRlZC0zIHctMjUgcC00IG10LTNcIiAoY2xpY2spPVwiY3JlYXRlQ29ob3J0KClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1ib2xkIGZzLTQgbXgtMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cbjxwYXRoIGQ9XCJNMTAuMDAxMyA0LjE2Njk5VjE1LjgzMzdNNC4xNjc5NyAxMC4wMDAzSDE1LjgzNDZcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG48L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctYm9sZCBmcy00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtcy0yXCI+Q3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29ob3J0czwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb252ZXJzYXRpb24tY2FyZFwiICpuZ0Zvcj1cImxldCBjIG9mIGRpc3BsYXllZENvbnZlcnNhdGlvbnM7IGxldCBtaSA9IGluZGV4XCJcbiAgICAgICAgW2hpZGRlbl09XCJpc0xvYWRpbmdDb252ZXJzYXRpb25zXCI+XG5cbiAgICAgICAgPCEtLSBTdW1tYXJ5IFJvdyAoYWx3YXlzIHZpc2libGUpIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udi1zdW1tYXJ5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiIChjbGljayk9XCJ0b2dnbGVDb252ZXJzYXRpb24oYy5hdWRpb0lkKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb252LXN1bW1hcnktbGVmdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbXktMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbnYtaWQgbS0wXCI+e3sgYy5hdWRpb0lkIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udi1tZXRhLXJvdyBteS0yXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YS1pdGVtXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgZD1cIk00LjA4OTg0IDkuNDY3NzdDMy45MzQwOCA5LjQ4NzA3IDMuNzc1MDQgOS41IDMuNjEzMjggOS41QzMuNTE1NjIgOS40OTk5OSAzLjQxOTY3IDkuNDk0NDggMy4zMjUyIDkuNDg3M1YxNC4yMjM2QzMuMzI1MiAxNC45MDE1IDMuODg2NTIgMTUuNDY0OCA0LjU4OTg0IDE1LjQ2NDhIMTMuNDExMUMxNC4xMTQ1IDE1LjQ2NDggMTQuNjc1OCAxNC45MDE1IDE0LjY3NTggMTQuMjIzNlY5LjQ4ODI4QzE0LjU4MjcgOS40OTUxMiAxNC40ODc4IDkuNSAxNC4zOTI2IDkuNUMxNC4yMjk3IDkuNDk5OTggMTQuMDY5MSA5LjQ4NzYyIDEzLjkxMTEgOS40Njc3N1YxMi45ODI0SDQuMDg5ODRWOS40Njc3N1pNMTMuOTE4OSAyLjUzNjEzSDQuMDgyMDNDMy45ODE0NSAyLjUzNjIzIDMuODkxMyAyLjU4ODI2IDMuODQ0NzMgMi42NjExM1YyLjY2MjExTDIuMjY0NjUgNS4xMjk4OEwyLjI0MzE2IDUuMTYzMDlDMS42MzYwOSA2LjE1NjUzIDIuMjIyNTMgNy40NjQ5MSAzLjM0Mjc3IDcuNjEyM0MzLjQzNTMyIDcuNjIzNTggMy41MjM4OCA3LjYyOTg4IDMuNjExMzMgNy42Mjk4OEM0LjE4MzEyIDcuNjI5NzUgNC42ODkyMyA3LjM4MzggNS4wNDEwMiA3LjAwMTk1TDUuNDA5MTggNi42MDE1Nkw1Ljc3NzM0IDcuMDAyOTNDNi4xMjU2MiA3LjM4MzM0IDYuNjMwNzYgNy42Mjk4OCA3LjIwNjA1IDcuNjI5ODhDNy43Nzg4IDcuNjI5ODIgOC4yODY3NSA3LjM4MzA2IDguNjM0NzcgNy4wMDI5M0wxMi41OTg2IDYuNjAwNTlMMTIuOTY2OCA3LjAwMjkzQzEzLjMxNDggNy4zODMwNyAxMy44MjI3IDcuNjI5ODIgMTQuMzk1NSA3LjYyOTg4QzE0LjQ4MDYgNy42Mjk4OCAxNC41NzE2IDcuNjIzNTcgMTQuNjY0MSA3LjYxMjNIMTQuNjYzMUMxNS43ODk5IDcuNDYxMzkgMTYuMzc3IDYuMTI1MTYgMTUuNzM5MyA1LjEyOTg4TDE0LjE1NzIgMi42NjIxMUwxNC4xNTYyIDIuNjYxMTNDMTQuMTA5NyAyLjU4ODI2IDE0LjAxOTUgMi41MzYxOSAxMy45MTg5IDIuNTM2MTNaXCJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+IDxzcGFuIGNsYXNzPVwidGV4dC1uYW1lXCI+U3RvcmU6PC9zcGFuPiA8c3BhbiBjbGFzcz1cIm5hbWUtdmFsXCI+e3sgYy5zdG9yZU5hbWUgfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtc2VwXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtaXRlbVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNVwiIHZpZXdCb3g9XCIwIDAgMTQgMTVcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIuNzUgMTQuMjVWMTIuNzVDMTIuNzUgMTEuOTU0NCAxMi40MzM5IDExLjE5MTMgMTEuODcxMyAxMC42Mjg3QzExLjMwODcgMTAuMDY2MSAxMC41NDU2IDkuNzUgOS43NSA5Ljc1SDMuNzVDMi45NTQzNSA5Ljc1IDIuMTkxMjkgMTAuMDY2MSAxLjYyODY4IDEwLjYyODdDMS4wNjYwNyAxMS4xOTEzIDAuNzUgMTEuOTU0NCAwLjc1IDEyLjc1VjE0LjI1TTkuNzUgMy43NUM5Ljc1IDUuNDA2ODUgOC40MDY4NSA2Ljc1IDYuNzUgNi43NUM1LjA5MzE1IDYuNzUgMy43NSA1LjQwNjg1IDMuNzUgMy43NUMzLjc1IDIuMDkzMTUgNS4wOTMxNSAwLjc1IDYuNzUgMC43NUM4LjQwNjg1IDAuNzUgOS43NSAyLjA5MzE1IDkuNzUgMy43NVpcIlxuICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cInRleHQtbmFtZVwiPlN0YWZmOjwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJuYW1lLXZhbFwiPnt7IGMudXNlck5hbWUgfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtc2VwXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtaXRlbVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNMTAuODc1IDEzLjY4NzVDMTAuMzUgMTMuNjg3NSA5LjkwNjI1IDEzLjUwNjIgOS41NDM3NSAxMy4xNDM3QzkuMTgxMjUgMTIuNzgxMiA5IDEyLjMzNzUgOSAxMS44MTI1QzkgMTEuMjg3NSA5LjE4MTI1IDEwLjg0MzggOS41NDM3NSAxMC40ODEzQzkuOTA2MjUgMTAuMTE4OCAxMC4zNSA5LjkzNzUgMTAuODc1IDkuOTM3NUMxMS40IDkuOTM3NSAxMS44NDM4IDEwLjExODggMTIuMjA2MyAxMC40ODEzQzEyLjU2ODggMTAuODQzOCAxMi43NSAxMS4yODc1IDEyLjc1IDExLjgxMjVDMTIuNzUgMTIuMzM3NSAxMi41Njg4IDEyLjc4MTIgMTIuMjA2MyAxMy4xNDM3QzExLjg0MzggMTMuNTA2MiAxMS40IDEzLjY4NzUgMTAuODc1IDEzLjY4NzVaTTMuNzUgMTYuNjg3NUMzLjMzNzUgMTYuNjg3NSAyLjk4NDUgMTYuNTQwOCAyLjY5MSAxNi4yNDcyQzIuMzk3NSAxNS45NTM3IDIuMjUwNSAxNS42MDA1IDIuMjUgMTUuMTg3NVY0LjY4NzVDMi4yNSA0LjI3NSAyLjM5NyAzLjkyMiAyLjY5MSAzLjYyODVDMi45ODUgMy4zMzUgMy4zMzggMy4xODggMy43NSAzLjE4NzVINC41VjEuNjg3NUg2VjMuMTg3NUgxMlYxLjY4NzVIMTMuNVYzLjE4NzVIMTQuMjVDMTQuNjYyNSAzLjE4NzUgMTUuMDE1OCAzLjMzNDUgMTUuMzA5OCAzLjYyODVDMTUuNjAzOCAzLjkyMjUgMTUuNzUwNSA0LjI3NTUgMTUuNzUgNC42ODc1VjE1LjE4NzVDMTUuNzUgMTUuNiAxNS42MDMzIDE1Ljk1MzIgMTUuMzA5OCAxNi4yNDcyQzE1LjAxNjMgMTYuNTQxMyAxNC42NjMgMTYuNjg4IDE0LjI1IDE2LjY4NzVIMy43NVpNMy43NSAxNS4xODc1SDE0LjI1VjcuNjg3NUgzLjc1VjE1LjE4NzVaXCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM2NjcwODVcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwidGV4dC1uYW1lXCI+RGF0ZTo8L3NwYW4+IDxzcGFuIGNsYXNzPVwibmFtZS12YWxcIj57eyBjLmRhdGUgfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtc2VwXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtaXRlbVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTg0OV8xMzMwMilcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkgNC41VjlMMTIgMTAuNU0xNi41IDlDMTYuNSAxMy4xNDIxIDEzLjE0MjEgMTYuNSA5IDE2LjVDNC44NTc4NiAxNi41IDEuNSAxMy4xNDIxIDEuNSA5QzEuNSA0Ljg1Nzg2IDQuODU3ODYgMS41IDkgMS41QzEzLjE0MjEgMS41IDE2LjUgNC44NTc4NiAxNi41IDlaXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTg0OV8xMzMwMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJ0ZXh0LW5hbWVcIj5UaW1lc3RhbXA6PC9zcGFuPiA8c3BhbiBjbGFzcz1cIm5hbWUtdmFsXCI+e3sgYy50aW1lIHwgZGF0ZTonaGg6bW0gYScgfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtc2VwXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtaXRlbVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNNi44NzUgMi4xNTI2N0M2Ljg3NSAxLjk2NDgxIDYuOTQ5NjMgMS43ODQ2NCA3LjA4MjQ3IDEuNjUxOEM3LjIxNTMxIDEuNTE4OTYgNy4zOTU0NyAxLjQ0NDM0IDcuNTgzMzMgMS40NDQzNEgxMC40MTY3QzEwLjYwNDUgMS40NDQzNCAxMC43ODQ3IDEuNTE4OTYgMTAuOTE3NSAxLjY1MThDMTEuMDUwNCAxLjc4NDY0IDExLjEyNSAxLjk2NDgxIDExLjEyNSAyLjE1MjY3QzExLjEyNSAyLjM0MDUzIDExLjA1MDQgMi41MjA3IDEwLjkxNzUgMi42NTM1NEMxMC43ODQ3IDIuNzg2MzcgMTAuNjA0NSAyLjg2MSAxMC40MTY3IDIuODYxSDkuNzA4MzNWMy44MDU0NUw5LjcwNzM5IDMuODQ0MTdDMTAuOTA0NyAzLjk3NTM2IDEyLjAzOTYgNC40NDU1MyAxMi45Nzg5IDUuMTk5NDVMMTIuOTg1NiA1LjE5Mzc4TDEzLjY5MzkgNC40ODU0NUMxMy43ODA1IDQuMzkyMjEgMTMuODkwNiA0LjMyNDA0IDE0LjAxMjcgNC4yODgxNEMxNC4xMzQ3IDQuMjUyMjQgMTQuMjY0MiA0LjI0OTkzIDE0LjM4NzUgNC4yODE0NEMxNC41MTA4IDQuMzEyOTYgMTQuNjIzMyA0LjM3NzE1IDE0LjcxMzEgNC40NjcyNEMxNC44MDMgNC41NTczMiAxNC44NjY5IDQuNjY5OTggMTQuODk4MSA0Ljc5MzMzQzE0LjkyOTUgNC45MTY0NyAxNC45MjczIDUuMDQ1ODEgMTQuODkxNSA1LjE2Nzc3QzE0Ljg1NTggNS4yODk3NCAxNC43ODc5IDUuMzk5ODUgMTQuNjk1IDUuNDg2NTZMMTMuOTg2NyA2LjE5NDg5TDEzLjk4MSA2LjIwMTVDMTQuNzMwMiA3LjEzOTQ0IDE1LjE5OTQgOC4yNjk4NSAxNS4zMzQ1IDkuNDYyNjZDMTUuNDY5NiAxMC42NTU1IDE1LjI2NTIgMTEuODYyMiAxNC43NDQ4IDEyLjk0MzlDMTQuMjI0NCAxNC4wMjU3IDEzLjQwOTEgMTQuOTM4NSAxMi4zOTI4IDE1LjU3NzRDMTEuMzc2NSAxNi4yMTYzIDEwLjIwMDQgMTYuNTU1MiA5IDE2LjU1NTJDNy43OTk1NyAxNi41NTUyIDYuNjIzNTMgMTYuMjE2MyA1LjYwNzIyIDE1LjU3NzRDNC41OTA5MSAxNC45Mzg1IDMuNzc1NjQgMTQuMDI1NyAzLjI1NTIyIDEyLjk0MzlDMi43MzQ4MSAxMS44NjIyIDIuNTMwNCAxMC42NTU1IDIuNjY1NTIgOS40NjI2NkMyLjgwMDY0IDguMjY5ODUgMy4yNjk4IDcuMTM5NDQgNC4wMTkgNi4yMDE1TDQuMDEzMzQgNi4xOTQ4OUwzLjMwNSA1LjQ4NjU2QzMuMTc5NzMgNS4zNTIzMSAzLjExMTQ4IDUuMTc0NjYgMy4xMTQ2NiA0Ljk5MTA3QzMuMTE3ODMgNC44MDc0NyAzLjE5MjE3IDQuNjMyMjkgMy4zMjIgNC41MDI0NUMzLjQ1MTg1IDQuMzcyNjEgMy42MjcwMyA0LjI5ODI3IDMuODEwNjIgNC4yOTUxQzMuOTk0MjIgNC4yOTE5MyA0LjE3MTg3IDQuMzYwMTcgNC4zMDYxMSA0LjQ4NTQ1TDUuMDE0NDUgNS4xOTM3OEw1LjAyMTA2IDUuMTk5NDVDNS45NjAxIDQuNDQ1NyA3LjA5NDcyIDMuOTc1NTQgOC4yOTE2NyAzLjg0NDE3VjIuODYxSDcuNTgzMzNDNy4zOTU0NyAyLjg2MSA3LjIxNTMxIDIuNzg2MzcgNy4wODI0NyAyLjY1MzU0QzYuOTQ5NjMgMi41MjA3IDYuODc1IDIuMzQwNTMgNi44NzUgMi4xNTI2N1pNOSAxNS4xMzg4QzEwLjMxNTIgMTUuMTM4NiAxMS41NzY0IDE0LjYxNjEgMTIuNTA2MyAxMy42ODZDMTMuNDM2MSAxMi43NTYgMTMuOTU4NSAxMS40OTQ3IDEzLjk1ODMgMTAuMTc5NUMxMy45NTgyIDguODY0MzQgMTMuNDM1NiA3LjYwMzEgMTIuNTA1NiA2LjY3MzIzQzExLjU3NTYgNS43NDMzNyAxMC4zMTQyIDUuMjIxMDQgOC45OTkwNiA1LjIyMTE3QzcuNjgzOSA1LjIyMTI5IDYuNDIyNjYgNS43NDM4NiA1LjQ5Mjc5IDYuNjczOUM0LjU2MjkyIDcuNjAzOTUgNC4wNDA2IDguODY1MjkgNC4wNDA3MiAxMC4xODA0QzQuMDQwODUgMTEuNDk1NiA0LjU2MzQxIDEyLjc1NjggNS40OTM0NiAxMy42ODY3QzYuNDIzNSAxNC42MTY2IDcuNjg0ODQgMTUuMTM4OSA5IDE1LjEzODhaTTkuMzY3MzkgOC44MTFMMTAuNjIzNSA3LjU1NDg5QzEwLjY4ODggNy40ODcyIDEwLjc2NjkgNy40MzMyMSAxMC44NTMzIDcuMzk2MDRDMTAuOTM5NyA3LjM1ODg4IDExLjAzMjcgNy4zMzkzIDExLjEyNjcgNy4zMzg0M0MxMS4yMjA4IDcuMzM3NTcgMTEuMzE0MSA3LjM1NTQ1IDExLjQwMTEgNy4zOTEwM0MxMS40ODgyIDcuNDI2NiAxMS41NjczIDcuNDc5MTYgMTEuNjMzOSA3LjU0NTYzQzExLjcwMDQgNy42MTIxMSAxMS43NTMgNy42OTExNyAxMS43ODg3IDcuNzc4MjFDMTEuODI0MyA3Ljg2NTI0IDExLjg0MjMgNy45NTg1IDExLjg0MTUgOC4wNTI1NkMxMS44NDA4IDguMTQ2NjEgMTEuODIxMyA4LjIzOTU3IDExLjc4NDIgOC4zMjZDMTEuNzQ3MSA4LjQxMjQ0IDExLjY5MzIgOC40OTA2MiAxMS42MjU2IDguNTU2TDEwLjM2OTQgOS44MTMwNUMxMC40MjUyIDEwLjAyMyAxMC40MzIxIDEwLjI0MyAxMC4zODk1IDEwLjQ1NjFDMTAuMzQ2OCAxMC42NjkyIDEwLjI1NTkgMTAuODY5NiAxMC4xMjM2IDExLjA0MTlDOS45OTEyNyAxMS4yMTQzIDkuODIxMTcgMTEuMzU0IDkuNjI2MzcgMTEuNDUwMkM5LjQzMTU3IDExLjU0NjUgOS4yMTcyOCAxMS41OTY3IDkgMTEuNTk3MUM4Ljc5OTQ5IDExLjU5NTQgOC42MDE2MyAxMS41NTExIDguNDE5NTMgMTEuNDY3MUM4LjIzNzQzIDExLjM4MzIgOC4wNzUyNCAxMS4yNjE1IDcuOTQzNjkgMTEuMTEwMkM3LjgxMjE1IDEwLjk1ODggNy43MTQyNiAxMC43ODEzIDcuNjU2NDkgMTAuNTg5M0M3LjU5ODczIDEwLjM5NzMgNy41ODI0MSAxMC4xOTUyIDcuNjA4NjMgOS45OTYzNkM3LjYzNDg0IDkuNzk3NTYgNy43MDI5OSA5LjYwNjYgNy44MDg1NSA5LjQzNjEyQzcuOTE0MTIgOS4yNjU2NCA4LjA1NDY5IDkuMTE5NTMgOC4yMjA5NyA5LjAwNzQ2QzguMzg3MjUgOC44OTUzOSA4LjU3NTQzIDguODE5OTMgOC43NzMwNyA4Ljc4NjA2QzguOTcwNzEgOC43NTIxOSA5LjE3MzI4IDguNzYwNjkgOS4zNjczOSA4LjgxMVpcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzY2NzA4NVwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJ0ZXh0LW5hbWVcIj4gRHVyYXRpb246PC9zcGFuPiA8c3BhbiBjbGFzcz1cIm5hbWUtdmFsXCI+e3sgZm9ybWF0RHVyYXRpb24oYy5kdXJhdGlvbikgfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtc2VwXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtaXRlbVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxuICA8cGF0aCBkPVwiTTkgMS41QzYuMjM4NTggMS41IDQgMy43Mzg1OCA0IDYuNUM0IDEwLjI1IDkgMTYuNSA5IDE2LjVDOSAxNi41IDE0IDEwLjI1IDE0IDYuNUMxNCAzLjczODU4IDExLjc2MTQgMS41IDkgMS41Wk05IDguNzVDNy43NTczNiA4Ljc1IDYuNzUgNy43NDI2NCA2Ljc1IDYuNUM2Ljc1IDUuMjU3MzYgNy43NTczNiA0LjI1IDkgNC4yNUMxMC4yNDI2IDQuMjUgMTEuMjUgNS4yNTczNiAxMS4yNSA2LjVDMTEuMjUgNy43NDI2NCAxMC4yNDI2IDguNzUgOSA4Ljc1WlwiIGZpbGw9XCIjNjY3MDg1XCIvPlxuPC9zdmc+PHNwYW4gY2xhc3M9XCJ0ZXh0LW5hbWVcIj4gTG9jYXRpb246PC9zcGFuPiA8c3BhbiBjbGFzcz1cIm5hbWUtdmFsIGxvY2F0aW9uLXRydW5jYXRlXCIgW3RpdGxlXT1cImMubG9jYXRpb25cIj57eyBjLmxvY2F0aW9uIH19PC9zcGFuPjwvc3Bhbj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udi1leGNlcnB0IG15LTJcIj57eyBjLmF1ZGlvRGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgIDxhICpuZ0lmPVwiYy5leWVUZXN0TGlua1wiIGNsYXNzPVwiZXllLXRlc3QtbGlua1wiIGhyZWY9XCIjXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgICBWaWV3IEV5ZSBUZXN0IDxzcGFuPlxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0xNSAxMC44MzMzVjE1LjgzMzNDMTUgMTYuMjc1NCAxNC44MjQ0IDE2LjY5OTMgMTQuNTExOCAxNy4wMTE4QzE0LjE5OTMgMTcuMzI0NCAxMy43NzU0IDE3LjUgMTMuMzMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjYuNjY2NjdDMi41IDYuMjI0NjQgMi42NzU1OSA1LjgwMDcyIDIuOTg4MTYgNS40ODgxNkMzLjMwMDcyIDUuMTc1NTkgMy43MjQ2NCA1IDQuMTY2NjcgNUg5LjE2NjY3TTEyLjUgMi41SDE3LjVNMTcuNSAyLjVWNy41TTE3LjUgMi41TDguMzMzMzMgMTEuNjY2N1wiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb252LXRvZ2dsZS1idG4gdGV4dC1ub3dyYXBcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVDb252ZXJzYXRpb24oYy5hdWRpb0lkKVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgb3BlbklkID09PSBjLmF1ZGlvSWQgPyAnVmlldyBMZXNzJyA6ICdWaWV3IE1vcmUnIH19PC9zcGFuPlxuXG4gICAgICAgICAgICA8IS0tIGRvd24gYXJyb3cgd2hlbiBjbG9zZWQgLS0+XG4gICAgICAgICAgICA8c3ZnICpuZ0lmPVwib3BlbklkICE9PSBjLmF1ZGlvSWRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcbiAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNS44MzIwMyAxMC44MzMzTDkuOTk4NyAxNUwxNC4xNjU0IDEwLjgzMzNNNS44MzIwMyA1TDkuOTk4NyA5LjE2NjY3TDE0LjE2NTQgNVwiIHN0cm9rZT1cIiM2NjcwODVcIlxuICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgPC9zdmc+XG5cbiAgICAgICAgICAgIDwhLS0gdXAgYXJyb3cgd2hlbiBvcGVuIC0tPlxuICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIm9wZW5JZCA9PT0gYy5hdWRpb0lkXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXG4gICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUuODMyMDMgMTAuODMzM0w5Ljk5ODcgMTVMMTQuMTY1NCAxMC44MzMzTTUuODMyMDMgNUw5Ljk5ODcgOS4xNjY2N0wxNC4xNjU0IDVcIiBzdHJva2U9XCIjNjY3MDg1XCJcbiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgdHJhbnNmb3JtPVwicm90YXRlKDE4MCAxMCAxMClcIiAvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gRXhwYW5kZWQgQm9keSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnYtYm9keVwiICpuZ0lmPVwib3BlbklkID09PSBjLmF1ZGlvSWRcIj5cblxuICAgICAgICAgIDwhLS0gRGV0YWlsIExvYWRpbmcgc2hpbW1lciAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYy5fZGV0YWlsTG9hZGluZ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHB4LTQgcHktM1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPCEtLSBObyBkYXRhIC8gZXJyb3IgYWZ0ZXIgbG9hZCAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtbiBteS02XCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWMuX2RldGFpbExvYWRpbmcgJiYgKGMuX2RldGFpbEVycm9yIHx8IChjLl9kZXRhaWxMb2FkZWQgJiYgIWMuY29udmVyc2F0aW9uRGV0YWlscz8uYXVkaW9TdW1tYXJ5ICYmIGMubWV0cmljcz8ubGVuZ3RoID09PSAwKSlcIj5cbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbWFwXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPk5vIGRldGFpbHMgYXZhaWxhYmxlIGZvciB0aGlzIGNvbnZlcnNhdGlvbjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnYtYm9keS1pbm5lclwiICpuZ0lmPVwiIWMuX2RldGFpbExvYWRpbmcgJiYgIWMuX2RldGFpbEVycm9yXCI+XG5cbiAgICAgICAgICAgIDwhLS0gTGVmdDogUmVjb3JkaW5nICsgU3VtbWFyeSArIEluc2lnaHRzIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnYtbGVmdFwiPlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWNvcmRpbmctYm94IG1iLTJcIiBbY2xhc3MuaXMtcGxheWluZy1ib3hdPVwicGxheWluZ0NvbnZJZCA9PT0gYy5hdWRpb0lkXCIgKm5nSWY9XCJjLmF1ZGlvVXJsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZGluZy10aXRsZVwiPkNvbnZlcnNhdGlvbiBSZWNvcmRpbmc8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwhLS0gV2F2ZWZvcm06IHBlci1jb252ZXJzYXRpb24gcGxheWluZyBzdGF0ZSAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2F2ZWZvcm0tYmFyc1wiIFtjbGFzcy5pcy1wbGF5aW5nXT1cInBsYXlpbmdDb252SWQgPT09IGMuYXVkaW9JZFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWJhclwiICpuZ0Zvcj1cImxldCBoIG9mIHdhdmVmb3JtSGVpZ2h0czsgbGV0IGkgPSBpbmRleFwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy53Zi1iYXItLXBsYXllZF09XCIocGxheWJhY2tTdGF0ZXNbYy5hdWRpb0lkXT8ucHJvZ3Jlc3MgfHwgMCkgPiBpIC8gd2F2ZWZvcm1IZWlnaHRzLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIFBsYXllciBjb250cm9scyAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxheWVyLXJvd1wiPlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIFBsYXkgLyBQYXVzZSBidXR0b24gd2l0aCB3aGl0ZSBvdXRlciByaW5nIC0tPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYXktYnRuLXdyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBsYXktYnRuLWNpcmNsZVwiIChjbGljayk9XCJ0b2dnbGVQbGF5KGMuYXVkaW9JZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBsYXkgaWNvbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwicGxheWluZ0NvbnZJZCAhPT0gYy5hdWRpb0lkXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJ3aGl0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04IDV2MTRsMTEtN3pcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUGF1c2UgaWNvbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwicGxheWluZ0NvbnZJZCA9PT0gYy5hdWRpb0lkXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJ3aGl0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02IDE5aDRWNUg2djE0em04LTE0djE0aDRWNWgtNHpcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIFByb2dyZXNzIGJhciArIHRpbWVzIC0tPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYXllci1wcm9ncmVzcyB3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbGF5ZXItdGltZSBzdGFydC10aW1lXCI+e3sgcGxheWJhY2tTdGF0ZXNbYy5hdWRpb0lkXT8uY3VycmVudFRpbWUgfHwgJzA6MDAnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGxheWVyLXRpbWUgZW5kLXRpbWVcIj57eyBwbGF5YmFja1N0YXRlc1tjLmF1ZGlvSWRdPy50b3RhbFRpbWUgfHwgYy5kdXJhdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLXRyYWNrXCIgKGNsaWNrKT1cInNlZWtBdWRpbygkZXZlbnQsIGMuYXVkaW9JZClcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtZmlsbFwiIFtzdHlsZS53aWR0aC4lXT1cIihwbGF5YmFja1N0YXRlc1tjLmF1ZGlvSWRdPy5wcm9ncmVzcyB8fCAwKSAqIDEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8YXVkaW8gW2lkXT1cIidhdWRpby0nICsgYy5hdWRpb0lkXCIgW3NyY109XCJjLmF1ZGlvVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgcHJlbG9hZD1cIm1ldGFkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgKHRpbWV1cGRhdGUpPVwib25UaW1lVXBkYXRlKGF1ZGlvUGxheWVyLCBjLmF1ZGlvSWQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGxvYWRlZG1ldGFkYXRhKT1cIm9uTG9hZGVkTWV0YWRhdGEoYXVkaW9QbGF5ZXIsIGMuYXVkaW9JZCwgYy5kdXJhdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICAoZW5kZWQpPVwicGxheWluZ0NvbnZJZCA9IG51bGxcIiAjYXVkaW9QbGF5ZXI+XG4gICAgICAgICAgICAgICAgICA8L2F1ZGlvPlxuICAgICAgICAgICAgICAgICAgPCEtLSA8YXVkaW8gI2F1ZGlvUGxheWVyICh0aW1ldXBkYXRlKT1cIm9uVGltZVVwZGF0ZShhdWRpb1BsYXllcilcIlxuICAgICAgICAgICAgICAgICAgICAobG9hZGVkbWV0YWRhdGEpPVwib25Mb2FkZWRNZXRhZGF0YShhdWRpb1BsYXllcilcIj5cbiAgICAgICAgICAgICAgICAgIDwvYXVkaW8+IC0tPlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIE11dGUgLyBVbm11dGUgYnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm11dGUtYnRuXCIgKGNsaWNrKT1cInRvZ2dsZU11dGUoKVwiIFt0aXRsZV09XCJpc011dGVkID8gJ1VubXV0ZScgOiAnTXV0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBWb2x1bWUgb24gLS0+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhaXNNdXRlZFwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMyA5djZoNGw1IDVWNEw3IDlIM3ptMTMuNSAzYzAtMS43Ny0xLjAyLTMuMjktMi41LTQuMDN2OC4wNWMxLjQ4LS43MyAyLjUtMi4yNSAyLjUtNC4wMnpNMTQgMy4yM3YyLjA2YzIuODkuODYgNSAzLjU0IDUgNi43MXMtMi4xMSA1Ljg1LTUgNi43MXYyLjA2YzQuMDEtLjkxIDctNC40OSA3LTguNzdzLTIuOTktNy44Ni03LTguNzd6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVm9sdW1lIG11dGVkIC0tPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXNNdXRlZFwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNSAxMmMwLTEuNzctMS4wMi0zLjI5LTIuNS00LjAzdjIuMjFsMi40NSAyLjQ1Yy4wMy0uMi4wNS0uNDEuMDUtLjYzem0yLjUgMGMwIC45NC0uMiAxLjgyLS41NCAyLjY0bDEuNTEgMS41MUMyMC42MyAxNC45MSAyMSAxMy41IDIxIDEyYzAtNC4yOC0yLjk5LTcuODYtNy04Ljc3djIuMDZjMi44OS44NiA1IDMuNTQgNSA2Ljcxek00LjI3IDNMMyA0LjI3IDcuNzMgOUgzdjZoNGw1IDV2LTYuNzNsNC4yNSA0LjI1Yy0uNjcuNTItMS40Mi45My0yLjI1IDEuMTh2Mi4wNmMxLjM4LS4zMSAyLjYzLS45NSAzLjY5LTEuODFMMTkuNzMgMjEgMjEgMTkuNzNsLTktOUw0LjI3IDN6TTEyIDRMOS45MSA2LjA5IDEyIDguMThWNHpcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDwhLS0gVGFicyAtLT5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1sYXllciBtYi0yXCI+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udi10YWJzXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29udi10YWJcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYltjLmF1ZGlvSWRdICE9PSAndHJhbnNjcmlwdCdcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBzZXRUYWIoYy5hdWRpb0lkLCAnc3VtbWFyeScpXCI+U3VtbWFyeTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbnYtdGFiXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUYWJbYy5hdWRpb0lkXSA9PT0gJ3RyYW5zY3JpcHQnXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgc2V0VGFiKGMuYXVkaW9JZCwgJ3RyYW5zY3JpcHQnKVwiPlRyYW5zY3JpcHQ8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb252LWJvZHktdGV4dCBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cImFjdGl2ZVRhYltjLmF1ZGlvSWRdICE9PSAndHJhbnNjcmlwdCdcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgYy5jb252ZXJzYXRpb25EZXRhaWxzLmF1ZGlvU3VtbWFyeSB9fVxuICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJhY3RpdmVUYWJbYy5hdWRpb0lkXSA9PT0gJ3RyYW5zY3JpcHQnXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGMuY29udmVyc2F0aW9uRGV0YWlscy50cmFuc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDwhLS0gQUkgSW5zaWdodHMgLS0+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1pbnNpZ2h0cy1ib3hcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktaW5zaWdodHMtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzdcIiB2aWV3Qm94PVwiMCAwIDM2IDM3XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hc2sgaWQ9XCJwYXRoLTEtaW5zaWRlLTFfMTg0OV8xMzM4NFwiIGZpbGw9XCJ3aGl0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTI5LjUxNTEgMjkuMzIyN0wyOC42MTU2IDI4LjQyMzJMMTguOTI0NCAxOC43MzJMMjEuNzk5MyAxNS44NTcxTDIyLjQ4ODIgMTUuMTY3QzIyLjU1MzkgMTUuMTAwMyAyMi41OTA5IDE1LjAxMDYgMjIuNTkxNCAxNC45MTdDMjIuNTkxMiAxNC44NzA3IDIyLjU4MTggMTQuODI0OSAyMi41NjM5IDE0Ljc4MjJDMjIuNTQ1OSAxNC43Mzk2IDIyLjUxOTcgMTQuNzAwOSAyMi40ODY4IDE0LjY2ODNMMjEuNzk2NiAxMy45NzgxTDE4Ljc0NzggMTAuOTIzOUwxOC4wNTc2IDEwLjIzMzdDMTguMDI1IDEwLjIwMDUgMTcuOTg2MSAxMC4xNzQyIDE3Ljk0MzIgMTAuMTU2MkMxNy45MDAyIDEwLjEzODIgMTcuODU0MiAxMC4xMjg5IDE3LjgwNzYgMTAuMTI4OUMxNy43NjExIDEwLjEyODkgMTcuNzE1IDEwLjEzODIgMTcuNjcyMSAxMC4xNTYyQzE3LjYyOTIgMTAuMTc0MiAxNy41OTAzIDEwLjIwMDUgMTcuNTU3NiAxMC4yMzM3TDE2Ljg2NzQgMTAuOTI1M0wxMy4xMzEyIDE0LjY2MTVDMTMuMDk4IDE0LjY5NCAxMy4wNzE3IDE0LjczMjggMTMuMDUzNyAxNC43NzU2QzEzLjAzNTcgMTQuODE4NSAxMy4wMjY1IDE0Ljg2NDQgMTMuMDI2NSAxNC45MTA4QzEzLjAyNjUgMTQuOTU3MyAxMy4wMzU3IDE1LjAwMzIgMTMuMDUzNyAxNS4wNDYxQzEzLjA3MTcgMTUuMDg4OSAxMy4wOTggMTUuMTI3NyAxMy4xMzEyIDE1LjE2MDJMMTYuNzAwMyAxOC43MzA3TDcuMDA3NzcgMjguNDIzMkw2LjExMjQzIDI5LjMyMjdDNi4wNDYwNCAyOS4zODg0IDYuMDA4NDIgMjkuNDc3OCA2LjAwNzgxIDI5LjU3MTNDNi4wMDgyIDI5LjY2MTYgNi4wNDI2NSAyOS43NDg1IDYuMTA0MjggMjkuODE0NUM2LjEzNzE4IDI5Ljg0OTYgNi4xNzY5NSAyOS44Nzc3IDYuMjIxMTEgMjkuODk2OEM2LjI2NTI4IDI5LjkxNiA2LjMxMjkxIDI5LjkyNTkgNi4zNjEwNiAyOS45MjU5SDE1LjA3OTVDMTUuMTczIDI5LjkyNTUgMTUuMjYyNyAyOS44ODgyIDE1LjMyODkgMjkuODIyQzE1LjM5NSAyOS43NTU5IDE1LjQzMjQgMjkuNjY2MiAxNS40MzI3IDI5LjU3MjZWMjguNzA1OEMxNS40MzI3IDI4LjYxMiAxNS4zOTU1IDI4LjUyMiAxNS4zMjkzIDI4LjQ1NTZDMTUuMjYzMSAyOC4zODkxIDE1LjE3MzMgMjguMzUxNiAxNS4wNzk1IDI4LjM1MTJIOS4zMDUyNEwxNy44MTE3IDE5Ljg0NDhMMjYuMzE4MiAyOC4zNTEySDIwLjQ5MzdDMjAuMzk5OSAyOC4zNTE2IDIwLjMxIDI4LjM4OTEgMjAuMjQzOCAyOC40NTU2QzIwLjE3NzYgMjguNTIyIDIwLjE0MDQgMjguNjEyIDIwLjE0MDQgMjguNzA1OFYyOS41NzI2QzIwLjE0MDIgMjkuNjE5MiAyMC4xNDk0IDI5LjY2NTMgMjAuMTY3NCAyOS43MDgzQzIwLjE4NTMgMjkuNzUxMiAyMC4yMTE4IDI5Ljc5MDEgMjAuMjQ1IDI5LjgyMjZDMjAuMzExIDI5Ljg4ODUgMjAuNDAwNCAyOS45MjU2IDIwLjQ5MzcgMjkuOTI1OUgyOS4yNjUxQzI5LjMxMzQgMjkuOTI2MSAyOS4zNjEzIDI5LjkxNjMgMjkuNDA1NyAyOS44OTcxQzI5LjQ1MDIgMjkuODc3OSAyOS40OTAxIDI5Ljg0OTggMjkuNTIzMiAyOS44MTQ1QzI5LjU4NjcgMjkuNzQ3OCAyOS42MjE0IDI5LjY1ODkgMjkuNjE5OSAyOS41NjY5QzI5LjYxODQgMjkuNDc0OSAyOS41ODA3IDI5LjM4NzIgMjkuNTE1MSAyOS4zMjI3Wk0xNy44MDYzIDEyLjIxMDVMMjAuNTE0IDE0LjkxODNMMTcuODEzMSAxNy42MTkzTDE1LjEwNTMgMTQuOTExNUwxNy44MDYzIDEyLjIxMDVaXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXNrPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjkuNTE1MSAyOS4zMjI3TC0xOC4xMTM5IDc2Ljk1MTZMLTE3LjkwMjQgNzcuMTYzMUwtMTcuNjg5MSA3Ny4zNzI3TDI5LjUxNTEgMjkuMzIyN1pNMjguNjE1NiAyOC40MjMyTDc2LjI0NDYgLTE5LjIwNTdWLTE5LjIwNTdMMjguNjE1NiAyOC40MjMyWk0xOC45MjQ0IDE4LjczMkwtMjguNzA0NSAtMjguODk2OUwtNzYuMzMzNSAxOC43MzJMLTI4LjcwNDYgNjYuMzYxTDE4LjkyNDQgMTguNzMyWk0yMS43OTkzIDE1Ljg1NzFMNjkuNDI4MyA2My40ODYxTDY5LjQ1MTggNjMuNDYyNkw2OS40NzUzIDYzLjQzOTFMMjEuNzk5MyAxNS44NTcxWk0yMi40ODgyIDE1LjE2N0w3MC4xNjQxIDYyLjc0ODlMNzAuMzA5NSA2Mi42MDMyTDcwLjQ1NCA2Mi40NTY2TDIyLjQ4ODIgMTUuMTY3Wk0yMi41OTE0IDE0LjkxN0w4OS45NDgxIDE1LjI2MDVMODkuOTQ5OCAxNC45MjI2TDg5Ljk0ODEgMTQuNTg0OEwyMi41OTE0IDE0LjkxN1pNMjIuNDg2OCAxNC42NjgzTC0yNS4xNDIyIDYyLjI5NzNMLTI0Ljk5MzkgNjIuNDQ1NkwtMjQuODQ0NyA2Mi41OTI5TDIyLjQ4NjggMTQuNjY4M1pNMjEuNzk2NiAxMy45NzgxTC0yNS44NzQ4IDYxLjU2NDdMLTI1Ljg1MzYgNjEuNTg1OUwtMjUuODMyNCA2MS42MDcxTDIxLjc5NjYgMTMuOTc4MVpNMTguNzQ3OCAxMC45MjM5TDY2LjQxOTIgLTM2LjY2MjZMNjYuMzk4IC0zNi42ODM5TDY2LjM3NjggLTM2LjcwNTFMMTguNzQ3OCAxMC45MjM5Wk0xOC4wNTc2IDEwLjIzMzdMLTI5Ljk4MDMgNTcuNDUwMkwtMjkuNzc2NyA1Ny42NTc0TC0yOS41NzEzIDU3Ljg2MjdMMTguMDU3NiAxMC4yMzM3Wk0xNy41NTc2IDEwLjIzMzdMNjUuMjMzNCA1Ny44MTU5TDY1LjQxNTIgNTcuNjMzN0w2NS41OTU2IDU3LjQ1MDJMMTcuNTU3NiAxMC4yMzM3Wk0xNi44Njc0IDEwLjkyNTNMNjQuNDk2NCA1OC41NTQyTDY0LjUxOTggNTguNTMwOEw2NC41NDMyIDU4LjUwNzRMMTYuODY3NCAxMC45MjUzWk0xMy4xMzEyIDE0LjY2MTVMNjAuMjkwNyA2Mi43NTU0TDYwLjUyNjYgNjIuNTI0MUw2MC43NjAyIDYyLjI5MDVMMTMuMTMxMiAxNC42NjE1Wk0xMy4wMjY1IDE0LjkxMDhIODAuMzg0SDEzLjAyNjVaTTEzLjEzMTIgMTUuMTYwMkw2MC43NjkyIC0zMi40NTk3TDYwLjUzMTIgLTMyLjY5NzlMNjAuMjkwNyAtMzIuOTMzN0wxMy4xMzEyIDE1LjE2MDJaTTE2LjcwMDMgMTguNzMwN0w2NC4zMjkzIDY2LjM1OTZMMTExLjk0OSAxOC43Mzk3TDY0LjMzODQgLTI4Ljg4OTJMMTYuNzAwMyAxOC43MzA3Wk03LjAwNzc3IDI4LjQyMzJMLTQwLjYyMTIgLTE5LjIwNTdMLTQwLjY3NTMgLTE5LjE1MTdMLTQwLjcyOTIgLTE5LjA5NzVMNy4wMDc3NyAyOC40MjMyWk02LjExMjQzIDI5LjMyMjdMNTMuNTIwMyA3Ny4xNzE3TDUzLjY4NTUgNzcuMDA4MUw1My44NDk0IDc2Ljg0MzRMNi4xMTI0MyAyOS4zMjI3Wk02LjAwNzgxIDI5LjU3MTNMLTYxLjM0ODMgMjkuMTMxNkwtNjEuMzUwNyAyOS40OTZMLTYxLjM0OTEgMjkuODYwNEw2LjAwNzgxIDI5LjU3MTNaTTYuMTA0MjggMjkuODE0NUwtNDMuMTM3NiA3NS43NzRMLTQzLjEwMzcgNzUuODEwM0wtNDMuMDY5OSA3NS44NDY1TDYuMTA0MjggMjkuODE0NVpNNi4zNjEwNiAyOS45MjU5TDYuMzM5NzMgOTcuMjgzNEw2LjM1MDQgOTcuMjgzNEg2LjM2MTA2VjI5LjkyNTlaTTE1LjA3OTUgMjkuOTI1OVY5Ny4yODM0SDE1LjIwODNMMTUuMzM3MSA5Ny4yODNMMTUuMDc5NSAyOS45MjU5Wk0xNS40MzI3IDI5LjU3MjZMODIuNzg5OCAyOS44MzAyTDgyLjc5MDMgMjkuNzAxNFYyOS41NzI2SDE1LjQzMjdaTTE1LjQzMjcgMjguNzA1OEwtNTEuOTI0OCAyOC43MDUzVjI4LjcwNThIMTUuNDMyN1pNMTUuMDc5NSAyOC4zNTEyTDE1LjMzNzUgLTM5LjAwNThMMTUuMjA4NSAtMzkuMDA2M0gxNS4wNzk1VjI4LjM1MTJaTTkuMzA1MjQgMjguMzUxMkwtMzguMzIzNyAtMTkuMjc3OEwtMTUzLjMxIDk1LjcwODhIOS4zMDUyNFYyOC4zNTEyWk0xNy44MTE3IDE5Ljg0NDhMNjUuNDQwNyAtMjcuNzg0MkwxNy44MTE3IC03NS40MTMyTC0yOS44MTczIC0yNy43ODQyTDE3LjgxMTcgMTkuODQ0OFpNMjYuMzE4MiAyOC4zNTEyVjk1LjcwODhIMTg4LjkzNEw3My45NDcyIC0xOS4yNzc4TDI2LjMxODIgMjguMzUxMlpNMjAuNDkzNyAyOC4zNTEyVi0zOS4wMDYzSDIwLjM2NDZMMjAuMjM1NiAtMzkuMDA1OEwyMC40OTM3IDI4LjM1MTJaTTIwLjE0MDQgMjguNzA1OEg4Ny40OThWMjguNzA1M0wyMC4xNDA0IDI4LjcwNThaTTIwLjE0MDQgMjkuNTcyNkw4Ny40OTc1IDI5LjgzMUw4Ny40OTggMjkuNzAxOFYyOS41NzI2SDIwLjE0MDRaTTIwLjI0NSAyOS44MjI2TDY3LjgzNDggLTE3Ljg0NTVMNjcuNTg5NyAtMTguMDkwMkw2Ny4zNDIyIC0xOC4zMzIzTDIwLjI0NSAyOS44MjI2Wk0yMC40OTM3IDI5LjkyNTlMMjAuMzEzMyA5Ny4yODMyTDIwLjQwMzUgOTcuMjgzNEgyMC40OTM3VjI5LjkyNTlaTTI5LjI2NTEgMjkuOTI1OUwyOS41MDM0IC0zNy40MzEyTDI5LjM4NDIgLTM3LjQzMTdIMjkuMjY1MVYyOS45MjU5Wk0yOS41MjMyIDI5LjgxNDVMLTE5LjI0NzQgLTE2LjY0NDlMLTE5LjQ1MDMgLTE2LjQzMTlMLTE5LjY1MTMgLTE2LjIxNzFMMjkuNTIzMiAyOS44MTQ1Wk0xNy44MDYzIDEyLjIxMDVMNjUuNDM1MyAtMzUuNDE4NEwxNy44MDYzIC04My4wNDc0TC0yOS44MjI3IC0zNS40MTg0TDE3LjgwNjMgMTIuMjEwNVpNMjAuNTE0IDE0LjkxODNMNjguMTQzIDYyLjU0NzNMMTE1Ljc3MiAxNC45MTgzTDY4LjE0MyAtMzIuNzEwN0wyMC41MTQgMTQuOTE4M1pNMTcuODEzMSAxNy42MTkzTC0yOS44MTU5IDY1LjI0ODNMMTcuODEzIDExMi44NzdMNjUuNDQyIDY1LjI0ODNMMTcuODEzMSAxNy42MTkzWk0xNS4xMDUzIDE0LjkxMTVMLTMyLjUyMzcgLTMyLjcxNzRMLTgwLjE1MjcgMTQuOTExNUwtMzIuNTIzNyA2Mi41NDA1TDE1LjEwNTMgMTQuOTExNVpNMjkuNTE1MSAyOS4zMjI3TDc3LjE0NCAtMTguMzA2M0w3Ni4yNDQ2IC0xOS4yMDU3TDI4LjYxNTYgMjguNDIzMkwtMTkuMDEzMyA3Ni4wNTIyTC0xOC4xMTM5IDc2Ljk1MTZMMjkuNTE1MSAyOS4zMjI3Wk0yOC42MTU2IDI4LjQyMzJMNzYuMjQ0NiAtMTkuMjA1N0w2Ni41NTM0IC0yOC44OTY5TDE4LjkyNDQgMTguNzMyTC0yOC43MDQ2IDY2LjM2MUwtMTkuMDEzMyA3Ni4wNTIyTDI4LjYxNTYgMjguNDIzMlpNMTguOTI0NCAxOC43MzJMNjYuNTUzNCA2Ni4zNjFMNjkuNDI4MyA2My40ODYxTDIxLjc5OTMgMTUuODU3MUwtMjUuODI5NyAtMzEuNzcxOEwtMjguNzA0NSAtMjguODk2OUwxOC45MjQ0IDE4LjczMlpNMjEuNzk5MyAxNS44NTcxTDY5LjQ3NTMgNjMuNDM5MUw3MC4xNjQxIDYyLjc0ODlMMjIuNDg4MiAxNS4xNjdMLTI1LjE4NzggLTMyLjQxNUwtMjUuODc2NiAtMzEuNzI0OEwyMS43OTkzIDE1Ljg1NzFaTTIyLjQ4ODIgMTUuMTY3TDcwLjQ1NCA2Mi40NTY2QzgyLjg2MjIgNDkuODcxMSA4OS44NTc5IDMyLjkzMzQgODkuOTQ4MSAxNS4yNjA1TDIyLjU5MTQgMTQuOTE3TC00NC43NjUzIDE0LjU3MzRDLTQ0LjY3NjEgLTIuOTEyMjEgLTM3Ljc1NDQgLTE5LjY3MDUgLTI1LjQ3NzcgLTMyLjEyMjdMMjIuNDg4MiAxNS4xNjdaTTIyLjU5MTQgMTQuOTE3TDg5Ljk0ODEgMTQuNTg0OEM4OS45MDQyIDUuNjc5NTMgODguMTA0IC0zLjEzMDc1IDg0LjY0OTQgLTExLjM0MTJMMjIuNTYzOSAxNC43ODIyTC0zOS41MjE2IDQwLjkwNTZDLTQyLjk0MDQgMzIuNzgwNSAtNDQuNzIxOSAyNC4wNjE4IC00NC43NjUzIDE1LjI0OTJMMjIuNTkxNCAxNC45MTdaTTIyLjU2MzkgMTQuNzgyMkw4NC42NDk0IC0xMS4zNDEyQzgxLjE5NTIgLTE5LjU1MDQgNzYuMTU1NCAtMjYuOTk3NiA2OS44MTgzIC0zMy4yNTYzTDIyLjQ4NjggMTQuNjY4M0wtMjQuODQ0NyA2Mi41OTI5Qy0zMS4xMTU5IDU2LjM5OTQgLTM2LjEwMzQgNDkuMDI5NSAtMzkuNTIxNiA0MC45MDU2TDIyLjU2MzkgMTQuNzgyMlpNMjIuNDg2OCAxNC42NjgzTDcwLjExNTggLTMyLjk2MDZMNjkuNDI1NiAtMzMuNjUwOEwyMS43OTY2IDEzLjk3ODFMLTI1LjgzMjQgNjEuNjA3MUwtMjUuMTQyMiA2Mi4yOTczTDIyLjQ4NjggMTQuNjY4M1pNMjEuNzk2NiAxMy45NzgxTDY5LjQ2OCAtMzMuNjA4NEw2Ni40MTkyIC0zNi42NjI2TDE4Ljc0NzggMTAuOTIzOUwtMjguOTIzNiA1OC41MTA1TC0yNS44NzQ4IDYxLjU2NDdMMjEuNzk2NiAxMy45NzgxWk0xOC43NDc4IDEwLjkyMzlMNjYuMzc2OCAtMzYuNzA1MUw2NS42ODY2IC0zNy4zOTUzTDE4LjA1NzYgMTAuMjMzN0wtMjkuNTcxMyA1Ny44NjI3TC0yOC44ODExIDU4LjU1MjlMMTguNzQ3OCAxMC45MjM5Wk0xOC4wNTc2IDEwLjIzMzdMNjYuMDk1NiAtMzYuOTgyOEM1OS43OTQ1IC00My4zOTM0IDUyLjI3OTMgLTQ4LjQ4NiA0My45ODc5IC01MS45NjI0TDE3Ljk0MzIgMTAuMTU2MkwtOC4xMDE1NSA3Mi4yNzQ3Qy0xNi4zMDcyIDY4LjgzNDMgLTIzLjc0NDUgNjMuNzk0NSAtMjkuOTgwMyA1Ny40NTAyTDE4LjA1NzYgMTAuMjMzN1pNMTcuOTQzMiAxMC4xNTYyTDQzLjk4NzkgLTUxLjk2MjRDMzUuNjk3IC01NS40Mzg1IDI2Ljc5NzIgLTU3LjIyODYgMTcuODA3NiAtNTcuMjI4NlYxMC4xMjg5Vjc3LjQ4NjVDOC45MTExNSA3Ny40ODY1IDAuMTAzNDU2IDc1LjcxNDkgLTguMTAxNTUgNzIuMjc0N0wxNy45NDMyIDEwLjE1NjJaTTE3LjgwNzYgMTAuMTI4OVYtNTcuMjI4NkM4LjgxNzg2IC01Ny4yMjg2IC0wLjA4MTk2NTkgLTU1LjQzODQgLTguMzcyNjIgLTUxLjk2MjRMMTcuNjcyMSAxMC4xNTYyTDQzLjcxNjggNzIuMjc0N0MzNS41MTIgNzUuNzE0OCAyNi43MDQzIDc3LjQ4NjUgMTcuODA3NiA3Ny40ODY1VjEwLjEyODlaTTE3LjY3MjEgMTAuMTU2MkwtOC4zNzI2MiAtNTEuOTYyNEMtMTYuNjYzNSAtNDguNDg2MiAtMjQuMTc4OCAtNDMuMzkzOCAtMzAuNDgwMyAtMzYuOTgyOEwxNy41NTc2IDEwLjIzMzdMNjUuNTk1NiA1Ny40NTAyQzU5LjM1OTQgNjMuNzk0OSA1MS45MjE5IDY4LjgzNDUgNDMuNzE2OCA3Mi4yNzQ3TDE3LjY3MjEgMTAuMTU2MlpNMTcuNTU3NiAxMC4yMzM3TC0zMC4xMTgxIC0zNy4zNDg0TC0zMC44MDgzIC0zNi42NTY5TDE2Ljg2NzQgMTAuOTI1M0w2NC41NDMyIDU4LjUwNzRMNjUuMjMzNCA1Ny44MTU5TDE3LjU1NzYgMTAuMjMzN1pNMTYuODY3NCAxMC45MjUzTC0zMC43NjE1IC0zNi43MDM3TC0zNC40OTc4IC0zMi45Njc0TDEzLjEzMTIgMTQuNjYxNUw2MC43NjAyIDYyLjI5MDVMNjQuNDk2NCA1OC41NTQyTDE2Ljg2NzQgMTAuOTI1M1pNMTMuMTMxMiAxNC42NjE1TC0zNC4wMjg0IC0zMy40MzIzQy00MC40NTY2IC0yNy4xMjkgLTQ1LjU2MzIgLTE5LjYwNjggLTQ5LjA0OTQgLTExLjMwNThMMTMuMDUzNyAxNC43NzU2TDc1LjE1NjggNDAuODU3MUM3MS43MDY2IDQ5LjA3MjUgNjYuNjUyNiA1Ni41MTcxIDYwLjI5MDcgNjIuNzU1NEwxMy4xMzEyIDE0LjY2MTVaTTEzLjA1MzcgMTQuNzc1NkwtNDkuMDQ5NCAtMTEuMzA1OEMtNTIuNTM1MSAtMy4wMDU4NCAtNTQuMzMxMSA1LjkwNjgyIC01NC4zMzExIDE0LjkxMDhIMTMuMDI2NUg4MC4zODRDODAuMzg0IDIzLjgyMiA3OC42MDY2IDMyLjY0MjcgNzUuMTU2OCA0MC44NTcxTDEzLjA1MzcgMTQuNzc1NlpNMTMuMDI2NSAxNC45MTA4SC01NC4zMzExQy01NC4zMzExIDIzLjkxNDggLTUyLjUzNTIgMzIuODI3NCAtNDkuMDQ5NCA0MS4xMjc1TDEzLjA1MzcgMTUuMDQ2MUw3NS4xNTY4IC0xMS4wMzU0Qzc4LjYwNjcgLTIuODIwOTYgODAuMzg0IDUuOTk5NzggODAuMzg0IDE0LjkxMDhIMTMuMDI2NVpNMTMuMDUzNyAxNS4wNDYxTC00OS4wNDk0IDQxLjEyNzVDLTQ1LjU2MzEgNDkuNDI4OCAtNDAuNDU2NCA1Ni45NTA5IC0zNC4wMjg0IDYzLjI1NEwxMy4xMzEyIDE1LjE2MDJMNjAuMjkwNyAtMzIuOTMzN0M2Ni42NTI0IC0yNi42OTU2IDcxLjcwNjUgLTE5LjI1MTEgNzUuMTU2OCAtMTEuMDM1NEwxMy4wNTM3IDE1LjA0NjFaTTEzLjEzMTIgMTUuMTYwMkwtMzQuNTA2OSA2Mi43ODAxTC0zMC45Mzc3IDY2LjM1MDZMMTYuNzAwMyAxOC43MzA3TDY0LjMzODQgLTI4Ljg4OTJMNjAuNzY5MiAtMzIuNDU5N0wxMy4xMzEyIDE1LjE2MDJaTTE2LjcwMDMgMTguNzMwN0wtMzAuOTI4NyAtMjguODk4M0wtNDAuNjIxMiAtMTkuMjA1N0w3LjAwNzc3IDI4LjQyMzJMNTQuNjM2OCA3Ni4wNTIyTDY0LjMyOTMgNjYuMzU5NkwxNi43MDAzIDE4LjczMDdaTTcuMDA3NzcgMjguNDIzMkwtNDAuNzI5MiAtMTkuMDk3NUwtNDEuNjI0NiAtMTguMTk4MUw2LjExMjQzIDI5LjMyMjdMNTMuODQ5NCA3Ni44NDM0TDU0Ljc0NDggNzUuOTQ0TDcuMDA3NzcgMjguNDIzMlpNNi4xMTI0MyAyOS4zMjI3TC00MS4yOTU1IC0xOC41MjY0Qy01NC4wMjA4IC01LjkxODM4IC02MS4yMzE0IDExLjIxODUgLTYxLjM0ODMgMjkuMTMxNkw2LjAwNzgxIDI5LjU3MTNMNzMuMzYzOSAzMC4wMTFDNzMuMjQ4MiA0Ny43MzcyIDY2LjExMjkgNjQuNjk1MiA1My41MjAzIDc3LjE3MTdMNi4xMTI0MyAyOS4zMjI3Wk02LjAwNzgxIDI5LjU3MTNMLTYxLjM0OTEgMjkuODYwNEMtNjEuMjc1OSA0Ni45MTIzIC01NC43NzIxIDYzLjMwODYgLTQzLjEzNzYgNzUuNzc0TDYuMTA0MjggMjkuODE0NUw1NS4zNDYxIC0xNi4xNDUxQzY2Ljg1NzQgLTMuODExNjYgNzMuMjkyMyAxMi40MTA5IDczLjM2NDcgMjkuMjgyMkw2LjAwNzgxIDI5LjU3MTNaTTYuMTA0MjggMjkuODE0NUwtNDMuMDY5OSA3NS44NDY1Qy0zNi43MzkzIDgyLjYwOTEgLTI5LjA4NzkgODguMDAxNSAtMjAuNTg4MyA5MS42ODkyTDYuMjIxMTEgMjkuODk2OEwzMy4wMzA1IC0zMS44OTU1QzQxLjQ0MTcgLTI4LjI0NjIgNDkuMDEzNyAtMjIuOTA5OSA1NS4yNzg0IC0xNi4yMTc1TDYuMTA0MjggMjkuODE0NVpNNi4yMjExMSAyOS44OTY4TC0yMC41ODgzIDkxLjY4OTJDLTEyLjA5MDUgOTUuMzc2MSAtMi45MjU1MSA5Ny4yODA1IDYuMzM5NzMgOTcuMjgzNEw2LjM2MTA2IDI5LjkyNTlMNi4zODIzOSAtMzcuNDMxN0MxNS41NTEzIC0zNy40Mjg3IDI0LjYyMSAtMzUuNTQ0MSAzMy4wMzA1IC0zMS44OTU1TDYuMjIxMTEgMjkuODk2OFpNNi4zNjEwNiAyOS45MjU5Vjk3LjI4MzRIMTUuMDc5NVYyOS45MjU5Vi0zNy40MzE3SDYuMzYxMDZWMjkuOTI1OVpNMTUuMDc5NSAyOS45MjU5TDE1LjMzNzEgOTcuMjgzQzMzLjIwNTkgOTcuMjE0NiA1MC4zMjMgOTAuMDg1OSA2Mi45NTc4IDc3LjQ1MUwxNS4zMjg5IDI5LjgyMkwtMzIuMzAwMSAtMTcuODA2OUMtMTkuNzk3NiAtMzAuMzA5NSAtMi44NTk3NyAtMzcuMzYzNSAxNC44MjE5IC0zNy40MzEyTDE1LjA3OTUgMjkuOTI1OVpNMTUuMzI4OSAyOS44MjJMNjIuOTU3OCA3Ny40NTFDNzUuNTkzOCA2NC44MTUgODIuNzIxNSA0Ny42OTc1IDgyLjc4OTggMjkuODMwMkwxNS40MzI3IDI5LjU3MjZMLTUxLjkyNDMgMjkuMzE1MUMtNTEuODU2NyAxMS42MzUgLTQ0LjgwMzcgLTUuMzAzMzIgLTMyLjMwMDEgLTE3LjgwNjlMMTUuMzI4OSAyOS44MjJaTTE1LjQzMjcgMjkuNTcyNkg4Mi43OTAzVjI4LjcwNThIMTUuNDMyN0gtNTEuOTI0OFYyOS41NzI2SDE1LjQzMjdaTTE1LjQzMjcgMjguNzA1OEw4Mi43OTAzIDI4LjcwNjNDODIuNzkwNCAxMC43OTI3IDc1LjY5MiAtNi4zOTA5MyA2My4wNDk3IC0xOS4wODE5TDE1LjMyOTMgMjguNDU1NkwtMzIuMzkxIDc1Ljk5M0MtNDQuOTAwOSA2My40MzUgLTUxLjkyNSA0Ni40MzE0IC01MS45MjQ4IDI4LjcwNTNMMTUuNDMyNyAyOC43MDU4Wk0xNS4zMjkzIDI4LjQ1NTZMNjMuMDQ5NyAtMTkuMDgxOUM1MC40MDggLTMxLjc3MjEgMzMuMjUyMSAtMzguOTM3MiAxNS4zMzc1IC0zOS4wMDU4TDE1LjA3OTUgMjguMzUxMkwxNC44MjE0IDk1LjcwODNDLTIuOTA1NTUgOTUuNjQwNCAtMTkuODgxOCA4OC41NTAzIC0zMi4zOTEgNzUuOTkzTDE1LjMyOTMgMjguNDU1NlpNMTUuMDc5NSAyOC4zNTEyVi0zOS4wMDYzSDkuMzA1MjRWMjguMzUxMlY5NS43MDg4SDE1LjA3OTVWMjguMzUxMlpNOS4zMDUyNCAyOC4zNTEyTDU2LjkzNDIgNzUuOTgwMkw2NS40NDA3IDY3LjQ3MzdMMTcuODExNyAxOS44NDQ4TC0yOS44MTczIC0yNy43ODQyTC0zOC4zMjM3IC0xOS4yNzc4TDkuMzA1MjQgMjguMzUxMlpNMTcuODExNyAxOS44NDQ4TC0yOS44MTczIDY3LjQ3MzdMLTIxLjMxMDggNzUuOTgwMkwyNi4zMTgyIDI4LjM1MTJMNzMuOTQ3MiAtMTkuMjc3OEw2NS40NDA3IC0yNy43ODQyTDE3LjgxMTcgMTkuODQ0OFpNMjYuMzE4MiAyOC4zNTEyVi0zOS4wMDYzSDIwLjQ5MzdWMjguMzUxMlY5NS43MDg4SDI2LjMxODJWMjguMzUxMlpNMjAuNDkzNyAyOC4zNTEyTDIwLjIzNTYgLTM5LjAwNThDMi4zMjEyNCAtMzguOTM3MiAtMTQuODM0OCAtMzEuNzcyMyAtMjcuNDc2NSAtMTkuMDgxOUwyMC4yNDM4IDI4LjQ1NTZMNjcuOTY0MSA3NS45OTNDNTUuNDU0OCA4OC41NTA1IDM4LjQ3ODUgOTUuNjQwNCAyMC43NTE3IDk1LjcwODNMMjAuNDkzNyAyOC4zNTEyWk0yMC4yNDM4IDI4LjQ1NTZMLTI3LjQ3NjUgLTE5LjA4MTlDLTQwLjExODUgLTYuMzkxMjkgLTQ3LjIxNzMgMTAuNzkyMiAtNDcuMjE3MSAyOC43MDYzTDIwLjE0MDQgMjguNzA1OEw4Ny40OTggMjguNzA1M0M4Ny40OTgxIDQ2LjQzMTkgODAuNDczNyA2My40MzU0IDY3Ljk2NDEgNzUuOTkzTDIwLjI0MzggMjguNDU1NlpNMjAuMTQwNCAyOC43MDU4SC00Ny4yMTcxVjI5LjU3MjZIMjAuMTQwNEg4Ny40OThWMjguNzA1OEgyMC4xNDA0Wk0yMC4xNDA0IDI5LjU3MjZMLTQ3LjIxNjYgMjkuMzE0M0MtNDcuMjUxNCAzOC4zNzU5IC00NS40NjY4IDQ3LjM1MiAtNDEuOTY4OCA1NS43MTA5TDIwLjE2NzQgMjkuNzA4M0w4Mi4zMDM1IDMuNzA1NjJDODUuNzY1NiAxMS45Nzg2IDg3LjUzMTkgMjAuODYyNSA4Ny40OTc1IDI5LjgzMUwyMC4xNDA0IDI5LjU3MjZaTTIwLjE2NzQgMjkuNzA4M0wtNDEuOTY4OCA1NS43MTA5Qy0zOC40NzA1IDY0LjA3MDMgLTMzLjMzIDcxLjY0MiAtMjYuODUyMSA3Ny45Nzc2TDIwLjI0NSAyOS44MjI2TDY3LjM0MjIgLTE4LjMzMjNDNzMuNzUzNSAtMTIuMDYxOCA3OC44NDEyIC00LjU2Nzk0IDgyLjMwMzUgMy43MDU2MkwyMC4xNjc0IDI5LjcwODNaTTIwLjI0NSAyOS44MjI2TC0yNy4zNDQ3IDc3LjQ5MDhDLTE0LjY5NDUgOTAuMTIwMiAyLjQzNjkxIDk3LjIzNTMgMjAuMzEzMyA5Ny4yODMyTDIwLjQ5MzcgMjkuOTI1OUwyMC42NzQxIC0zNy40MzE0QzM4LjM2MzkgLTM3LjM4NCA1NS4zMTY2IC0zMC4zNDMxIDY3LjgzNDggLTE3Ljg0NTVMMjAuMjQ1IDI5LjgyMjZaTTIwLjQ5MzcgMjkuOTI1OVY5Ny4yODM0SDI5LjI2NTFWMjkuOTI1OVYtMzcuNDMxN0gyMC40OTM3VjI5LjkyNTlaTTI5LjI2NTEgMjkuOTI1OUwyOS4wMjY3IDk3LjI4M0MzOC4zMzcyIDk3LjMxNiA0Ny41NTIgOTUuNDI4NCA1Ni4wOTYyIDkxLjc0MDlMMjkuNDA1NyAyOS44OTcxTDIuNzE1MjUgLTMxLjk0NjdDMTEuMTcwNiAtMzUuNTk1OSAyMC4yODk3IC0zNy40NjM4IDI5LjUwMzQgLTM3LjQzMTJMMjkuMjY1MSAyOS45MjU5Wk0yOS40MDU3IDI5Ljg5NzFMNTYuMDk2MiA5MS43NDA5QzY0LjY0MyA4OC4wNTIzIDcyLjMzNjkgODIuNjQxMiA3OC42OTc3IDc1Ljg0NjFMMjkuNTIzMiAyOS44MTQ1TC0xOS42NTEzIC0xNi4yMTcxQy0xMy4zNTY2IC0yMi45NDE2IC01Ljc0MjY2IC0yOC4yOTY1IDIuNzE1MjUgLTMxLjk0NjdMMjkuNDA1NyAyOS44OTcxWk0yOS41MjMyIDI5LjgxNDVMNzguMjkzOCA3Ni4yNzM4QzkwLjU1NDMgNjMuNDAzNCA5Ny4yNjI4IDQ2LjIyNjUgOTYuOTY4MiAyOC40NTA2TDI5LjYxOTkgMjkuNTY2OUwtMzcuNzI4NCAzMC42ODMyQy0zOC4wMiAxMy4wOTE0IC0zMS4zODA5IC0zLjkwNzcgLTE5LjI0NzQgLTE2LjY0NDlMMjkuNTIzMiAyOS44MTQ1Wk0yOS42MTk5IDI5LjU2NjlMOTYuOTY4MiAyOC40NTA2Qzk2LjY3MzYgMTAuNjc1MyA4OS4zOTk5IC02LjI2OTk4IDc2LjcxOTIgLTE4LjcyNzRMMjkuNTE1MSAyOS4zMjI3TC0xNy42ODkxIDc3LjM3MjdDLTMwLjIzODUgNjUuMDQ0MyAtMzcuNDM2OCA0OC4yNzQ0IC0zNy43Mjg0IDMwLjY4MzJMMjkuNjE5OSAyOS41NjY5Wk0xNy44MDYzIDEyLjIxMDVMLTI5LjgyMjcgNTkuODM5NUwtMjcuMTE0OSA2Mi41NDczTDIwLjUxNCAxNC45MTgzTDY4LjE0MyAtMzIuNzEwN0w2NS40MzUzIC0zNS40MTg0TDE3LjgwNjMgMTIuMjEwNVpNMjAuNTE0IDE0LjkxODNMLTI3LjExNDkgLTMyLjcxMDdMLTI5LjgxNTkgLTMwLjAwOTdMMTcuODEzMSAxNy42MTkzTDY1LjQ0MiA2NS4yNDgzTDY4LjE0MyA2Mi41NDczTDIwLjUxNCAxNC45MTgzWk0xNy44MTMxIDE3LjYxOTNMNjUuNDQyMSAtMzAuMDA5N0w2Mi43MzQzIC0zMi43MTc0TDE1LjEwNTMgMTQuOTExNUwtMzIuNTIzNyA2Mi41NDA1TC0yOS44MTU5IDY1LjI0ODNMMTcuODEzMSAxNy42MTkzWk0xNS4xMDUzIDE0LjkxMTVMNjIuNzM0MyA2Mi41NDA1TDY1LjQzNTMgNTkuODM5NUwxNy44MDYzIDEyLjIxMDVMLTI5LjgyMjcgLTM1LjQxODRMLTMyLjUyMzcgLTMyLjcxNzRMMTUuMTA1MyAxNC45MTE1WlwiXG4gICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiBtYXNrPVwidXJsKCNwYXRoLTEtaW5zaWRlLTFfMTg0OV8xMzM4NClcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjYuMjUzNyAwLjc0MDIzNEwyNi42OTc0IDIuNTg0MzdDMjYuOTIzNSAzLjUyNDU3IDI3LjQyNTUgNC4zOTc3IDI4LjE1NDUgNS4xMTg2MkMyOC44ODM2IDUuODM5NTQgMjkuODE0NyA2LjM4MzY2IDMwLjg1NzEgNi42OTc5MUwzMS44Mzk0IDYuOTkzOTFMMzAuODU3MSA3LjI4OTkyQzI5LjgxNDcgNy42MDQxNyAyOC44ODM2IDguMTQ4MjggMjguMTU0NSA4Ljg2OTIxQzI3LjQyNTUgOS41OTAxMyAyNi45MjM1IDEwLjQ2MzMgMjYuNjk3NCAxMS40MDM1TDI2LjI1MzcgMTMuMjQ3NkwyNS44MSAxMS40MDM1QzI1LjU4MzkgMTAuNDYzMyAyNS4wODE5IDkuNTkwMTMgMjQuMzUyOCA4Ljg2OTIxQzIzLjYyMzggOC4xNDgyOCAyMi42OTI3IDcuNjA0MTcgMjEuNjUwMyA3LjI4OTkyTDIwLjY2OCA2Ljk5MzkxTDIxLjY1MDMgNi42OTc5MUMyMi42OTI3IDYuMzgzNjYgMjMuNjIzOCA1LjgzOTU0IDI0LjM1MjggNS4xMTg2MkMyNS4wODE5IDQuMzk3NyAyNS41ODM5IDMuNTI0NTcgMjUuODEgMi41ODQzN0wyNi4yNTM3IDAuNzQwMjM0WlwiXG4gICAgICAgICAgICAgICAgICAgICAgZmlsbD1cInVybCgjcGFpbnQwX2xpbmVhcl8xODQ5XzEzMzg0KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjkyNDQgOS41MTM1MUw5Ljc3Mjc5IDguODYwMzVMOS42MjExNyA5LjUxMzUxQzkuNTEyNTIgOS45ODI1NCA5LjI2NjY2IDEwLjQxOTIgOC45MDczOSAxMC43ODEyQzguNTQ4MTIgMTEuMTQzMyA4LjA4NzYgMTEuNDE4NCA3LjU3MDQyIDExLjU4TDcuMzc4OTEgMTEuNjM5OEw3LjU3MDQyIDExLjY5OTVDOC4wODc2IDExLjg2MTEgOC41NDgxMiAxMi4xMzYzIDguOTA3MzkgMTIuNDk4M0M5LjI2NjY2IDEyLjg2MDMgOS41MTI1MiAxMy4yOTcgOS42MjExNyAxMy43NjZMOS43NzI3OSAxNC40MTkyTDkuOTI0NCAxMy43NjZDMTAuMDMzIDEzLjI5NyAxMC4yNzg5IDEyLjg2MDMgMTAuNjM4MiAxMi40OTgzQzEwLjk5NzUgMTIuMTM2MyAxMS40NTggMTEuODYxMSAxMS45NzUyIDExLjY5OTVMMTIuMTY2NyAxMS42Mzk4TDExLjk3NTIgMTEuNThDMTEuNDU4IDExLjQxODQgMTAuOTk3NSAxMS4xNDMzIDEwLjYzODIgMTAuNzgxMkMxMC4yNzg5IDEwLjQxOTIgMTAuMDMzIDkuOTgyNTQgOS45MjQ0IDkuNTEzNTFaXCJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwidXJsKCNwYWludDFfbGluZWFyXzE4NDlfMTMzODQpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggb3BhY2l0eT1cIjAuNlwiXG4gICAgICAgICAgICAgICAgICAgICAgZD1cIk03LjY4OTYxIDIxLjU2MjRMNy41MDYwOCAyMC42NzU4TDcuMzIzMzQgMjEuNTYzMUM3LjI3NTQ5IDIxLjc5NDMgNy4xNjEwOSAyMi4wMTEyIDYuOTkwODQgMjIuMTkzNUM2LjgyMDU5IDIyLjM3NTggNi42MDAwNSAyMi41MTc1IDYuMzQ5ODMgMjIuNjA1NEw1LjkxMDE2IDIyLjc2MDNMNi4zNDk4MyAyMi45MTUzQzYuNiAyMy4wMDM0IDYuODIwNDUgMjMuMTQ1MiA2Ljk5MDU2IDIzLjMyNzZDNy4xNjA2NyAyMy41MSA3LjI3NDg5IDIzLjcyNyA3LjMyMjU1IDIzLjk1ODNMNy41MDYwOCAyNC44NDQ5TDcuNjg4ODEgMjMuOTU3NkM3LjczNjY3IDIzLjcyNjMgNy44NTEwNyAyMy41MDk1IDguMDIxMzEgMjMuMzI3MkM4LjE5MTU2IDIzLjE0NDkgOC40MTIxIDIzLjAwMzIgOC42NjIzMiAyMi45MTUzTDkuMTAyIDIyLjc2MDNMOC42NjIzMiAyMi42MDU0QzguNDEyMTUgMjIuNTE3MyA4LjE5MTcxIDIyLjM3NTUgOC4wMjE2IDIyLjE5MzFDNy44NTE0OSAyMi4wMTA3IDcuNzM3MjYgMjEuNzkzNyA3LjY4OTYxIDIxLjU2MjRaXCJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwidXJsKCNwYWludDJfbGluZWFyXzE4NDlfMTMzODQpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50IGlkPVwicGFpbnQwX2xpbmVhcl8xODQ5XzEzMzg0XCIgeDE9XCIyMy40NlwiIHkxPVwiMTMuOTQyMlwiIHgyPVwiMjMuNDZcIiB5Mj1cIjAuMDQ1MTYyNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9XCIjMTE3RkY1XCIgc3RvcC1vcGFjaXR5PVwiMC4yXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzA1OTFGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9saW5lYXJHcmFkaWVudD5cbiAgICAgICAgICAgICAgICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9XCJwYWludDFfbGluZWFyXzE4NDlfMTMzODRcIiB4MT1cIjE1Ljc1NzVcIiB5MT1cIjIyLjc1NzRcIiB4Mj1cIjE1Ljc1NzVcIiB5Mj1cIjguODYwMzVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMDU5MUZGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICAgICAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cInBhaW50Ml9saW5lYXJfMTg0OV8xMzM4NFwiIHgxPVwiNS45MTAxNlwiIHkxPVwiMjAuNjc1OFwiIHgyPVwiOS4xMDJcIiB5Mj1cIjIwLjY3NThcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwiIzAwQTNGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMzM0I1RkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhaS1pbnNpZ2h0cy10aXRsZSB0ZXh0LWRhcmtcIj57eyBjLmFpSW5zaWdodHMudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWktaW5zaWdodHMtbGlzdCBiZy13aGl0ZSBteS00IHAtNCByb3VuZGVkLWxnXCI+XG4gICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGluc2lnaHQgb2YgYy5haUluc2lnaHRzLnN1bW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnNpZ2h0LWJ1bGxldC1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzIDJMMyAxNEgxMkwxMSAyMkwyMSAxMEgxMkwxMyAyWlwiIHN0cm9rZT1cIiMzM0I1RkZcIiBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB7eyBpbnNpZ2h0IH19XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBSaWdodDogTWV0cmljcyAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb252LXJpZ2h0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWNzLXBhbmVsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpY3MtdGl0bGVcIj5NZXRyaWNzPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtIG9mIGMubWV0cmljczsgbGV0IG1pID0gaW5kZXhcIj5cblxuICAgICAgICAgICAgICAgICAgPCEtLSBCT09MRUFOX0JBU0tFVCAtLT5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtLnR5cGUgPT09ICdCT09MRUFOX0JBU0tFVCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1zZWN0aW9uLWxhYmVsIG1iLTFcIj57eyBtLm5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1yb3ctaXRlbVwiICpuZ0Zvcj1cImxldCByb3cgb2YgbS52YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0cmljLWtleVwiPjxzcGFuIGNsYXNzPVwiZG90XCI+PC9zcGFuPnt7IHJvdy5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJtZXRyaWMtdmFsXCI+e3sgcm93LnNjb3JlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWRpdmlkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIE5VTUVSSUNfU0NBTEFSIC0tPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm0udHlwZSA9PT0gJ05VTUVSSUNfU0NBTEFSJyB8fCBtLnR5cGUgPT09ICdOVU1FUklDX0FSUkFZJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLXNlY3Rpb24tbGFiZWwgbWItMVwiPnt7IG0ubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLXJvdy1pdGVtXCIgKm5nRm9yPVwibGV0IHJvdyBvZiBtLnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRyaWMta2V5XCI+VG90YWw8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cIm1ldHJpYy12YWxcIj57eyByb3cuVG90YWwgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtcm93LWl0ZW1cIiAqbmdGb3I9XCJsZXQgcm93IG9mIG0udmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldHJpYy1rZXlcIj5Bdmc8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cIm1ldHJpYy12YWxcIj57eyByb3cuQXZnIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWRpdmlkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIFNVQkpFQ1RJVkUgLS0+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibS50eXBlID09PSAnU1VCSkVDVElWRSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1zZWN0aW9uLWxhYmVsIG1iLTFcIj57eyBtLm5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibWV0cmljLWJ1bGxldC1saXN0IG1ldHJpYy1idWxsZXQtbGlzdC0tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxsaSAgKm5nRm9yPVwibGV0IHJvdyBvZiBtLnZhbHVlXCI+e3sgcm93LnJlYXNvbmluZyB9fTwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtZGl2aWRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bGliLXBhZ2luYXRpb24gKm5nSWY9XCJ0b3RhbEl0ZW1zID4gMFwiIFtpdGVtc1BlclBhZ2VdPVwicGFnZVNpemVcIiBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIiBbdG90YWxJdGVtc109XCJ0b3RhbEl0ZW1zXCJcbiAgICAgIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCIgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxuICAgICAgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XG4gIDwvZGl2PlxuPC9kaXY+Il19