@cqa-lib/cqa-ui 1.1.6 → 1.1.8

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.
@@ -0,0 +1,116 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class VisualDifferenceModalComponent {
5
+ constructor() {
6
+ this.baselineUrl = '';
7
+ this.currentUrl = '';
8
+ this.differenceUrl = '';
9
+ this.title = 'Visual Difference';
10
+ this.subtitle = 'Comparing Baseline vs. Current Execution';
11
+ this.isOpen = false;
12
+ this.close = new EventEmitter();
13
+ this.currentView = 'baseline';
14
+ this.baselineImageError = false;
15
+ this.currentImageError = false;
16
+ this.differenceImageError = false;
17
+ }
18
+ ngOnChanges(changes) {
19
+ if (changes['baselineUrl']) {
20
+ this.baselineImageError = false;
21
+ }
22
+ if (changes['currentUrl']) {
23
+ this.currentImageError = false;
24
+ }
25
+ if (changes['differenceUrl']) {
26
+ this.differenceImageError = false;
27
+ }
28
+ }
29
+ get currentImageUrl() {
30
+ switch (this.currentView) {
31
+ case 'baseline':
32
+ return this.baselineUrl;
33
+ case 'current':
34
+ return this.currentUrl;
35
+ case 'difference':
36
+ return this.differenceUrl;
37
+ default:
38
+ return '';
39
+ }
40
+ }
41
+ onClose() {
42
+ this.close.emit();
43
+ }
44
+ onBackdropClick(event) {
45
+ const target = event.target;
46
+ const currentTarget = event.currentTarget;
47
+ if (target === currentTarget || target.classList.contains('modal-backdrop')) {
48
+ this.onClose();
49
+ }
50
+ }
51
+ onImageError(event) {
52
+ const img = event.target;
53
+ img.style.display = 'none';
54
+ }
55
+ onThumbnailError(type, event) {
56
+ const img = event.target;
57
+ img.style.display = 'none';
58
+ if (type === 'baseline') {
59
+ this.baselineImageError = true;
60
+ }
61
+ else if (type === 'current') {
62
+ this.currentImageError = true;
63
+ }
64
+ else if (type === 'difference') {
65
+ this.differenceImageError = true;
66
+ }
67
+ }
68
+ hasThumbnailImage(type) {
69
+ if (type === 'baseline') {
70
+ return !!this.baselineUrl && !this.baselineImageError;
71
+ }
72
+ else if (type === 'current') {
73
+ return !!this.currentUrl && !this.currentImageError;
74
+ }
75
+ else if (type === 'difference') {
76
+ return !!this.differenceUrl && !this.differenceImageError;
77
+ }
78
+ return false;
79
+ }
80
+ setView(view) {
81
+ this.currentView = view;
82
+ }
83
+ navigatePrevious() {
84
+ const views = ['baseline', 'current', 'difference'];
85
+ const currentIndex = views.indexOf(this.currentView);
86
+ const previousIndex = currentIndex > 0 ? currentIndex - 1 : views.length - 1;
87
+ this.currentView = views[previousIndex];
88
+ }
89
+ navigateNext() {
90
+ const views = ['baseline', 'current', 'difference'];
91
+ const currentIndex = views.indexOf(this.currentView);
92
+ const nextIndex = currentIndex < views.length - 1 ? currentIndex + 1 : 0;
93
+ this.currentView = views[nextIndex];
94
+ }
95
+ }
96
+ VisualDifferenceModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: VisualDifferenceModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
97
+ VisualDifferenceModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: VisualDifferenceModalComponent, selector: "cqa-visual-difference-modal", inputs: { baselineUrl: "baselineUrl", currentUrl: "currentUrl", differenceUrl: "differenceUrl", title: "title", subtitle: "subtitle", isOpen: "isOpen" }, outputs: { close: "close" }, usesOnChanges: true, ngImport: i0, template: "<div \n *ngIf=\"isOpen\"\n class=\"modal-backdrop cqa-fixed cqa-inset-0 cqa-bg-black cqa-bg-opacity-50 cqa-z-50 cqa-flex cqa-items-center cqa-justify-center cqa-p-4\"\n (click)=\"onBackdropClick($event)\">\n <div \n class=\"cqa-bg-white cqa-rounded-lg cqa-shadow-xl cqa-flex cqa-flex-col cqa-max-w-[90vw] cqa-h-[70vh] cqa-w-full cqa-overflow-hidden\"\n style=\"max-width: 1200px;\"\n (click)=\"$event.stopPropagation()\">\n \n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-px-6 cqa-pt-6 cqa-pb-4 cqa-border-b cqa-border-gray-200 cqa-bg-[#FBFCFF] cqa-gap-4\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\">\n <h2 class=\"cqa-text-[18px] cqa-font-medium cqa-text-[#0B0B0B] cqa-m-0\">\n {{ title }}\n </h2>\n <p class=\"cqa-text-xs cqa-text-[#6D6D74] cqa-m-0\">{{ subtitle }}</p>\n </div>\n \n <div class=\"cqa-flex cqa-items-center cqa-gap-3\">\n <button\n type=\"button\"\n class=\"cqa-p-1.5 cqa-rounded-md cqa-text-gray-400 hover:cqa-text-gray-600 hover:cqa-bg-gray-100 cqa-transition-colors cqa-outline-none\"\n (click)=\"onClose(); $event.stopPropagation()\"\n aria-label=\"Close modal\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15 5L5 15M5 5L15 15\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n </div>\n </div>\n \n <div class=\"cqa-flex-1 cqa-overflow-auto cqa-relative\">\n <button\n type=\"button\"\n class=\"cqa-absolute cqa-left-8 cqa-top-1/2 cqa-transform -cqa-translate-y-1/2 cqa-z-10 cqa-w-10 cqa-h-10 cqa-rounded-full cqa-bg-[#00000080] cqa-text-white hover:cqa-bg-gray-700 cqa-transition-colors cqa-flex cqa-items-center cqa-justify-center cqa-outline-none cqa-shadow-lg\"\n (click)=\"navigatePrevious()\" style=\"transform: translate(-50%, -50%);\"\n aria-label=\"Previous image\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15 18L9 12L15 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n\n <div class=\"cqa-w-full cqa-h-full cqa-flex cqa-items-center cqa-justify-center cqa-p-8 cqa-px-16 cqa-overflow-auto\">\n <div *ngIf=\"currentImageUrl\" \n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-h-full\"\n [style.transition]=\"'transform 0.2s ease-in-out'\">\n <img\n [src]=\"currentImageUrl\"\n [alt]=\"currentView + ' image'\"\n class=\"cqa-max-w-full cqa-max-h-full cqa-object-contain cqa-rounded-md cqa-shadow-lg cqa-bg-white\"\n (error)=\"onImageError($event)\"\n />\n </div>\n \n <div *ngIf=\"!currentImageUrl\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-justify-center cqa-py-12 cqa-px-6\">\n <svg width=\"80\" height=\"80\" viewBox=\"0 0 80 80\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"12\" y=\"12\" width=\"56\" height=\"56\" rx=\"4\" stroke=\"#9CA3AF\" stroke-width=\"2\"/>\n <path d=\"M12 52L28 36L40 48L68 20\" stroke=\"#9CA3AF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <circle cx=\"52\" cy=\"28\" r=\"6\" fill=\"#9CA3AF\"/>\n </svg>\n <p class=\"cqa-text-gray-500 cqa-text-sm cqa-font-medium cqa-mt-2\">No image available</p>\n </div>\n </div>\n\n <button\n type=\"button\"\n class=\"cqa-absolute cqa-right-8 cqa-top-1/2 cqa-transform -cqa-translate-y-1/2 cqa-z-10 cqa-w-10 cqa-h-10 cqa-rounded-full cqa-bg-[#00000080] cqa-text-white hover:cqa-bg-gray-700 cqa-transition-colors cqa-flex cqa-items-center cqa-justify-center cqa-outline-none cqa-shadow-lg\"\n (click)=\"navigateNext()\" style=\"transform: translate(50%, -50%);\"\n aria-label=\"Next image\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 18L15 12L9 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n </div>\n\n <div class=\"cqa-flex cqa-items-center cqa-justify-center cqa-gap-2 cqa-p-4 cqa-bg-white\" style=\"border-top: 1px solid #D8D9FC;\">\n <div class=\"cqa-h-[52px] cqa-w-[76px] cqa-rounded-[6px] cqa-relative cqa-overflow-hidden cqa-cursor-pointer\" style=\"border: 2px solid #374151;\" [ngStyle]=\"{'border-color': currentView === 'baseline' ? '#3F43EE' : '#374151', 'box-shadow': currentView === 'baseline' ? '0px 0px 0px 2px #3B82F64D' : 'none'}\" (click)=\"setView('baseline')\">\n <img \n *ngIf=\"hasThumbnailImage('baseline')\"\n [src]=\"baselineUrl\" \n alt=\"Baseline image\" \n class=\"cqa-h-full cqa-w-full cqa-object-cover\"\n (error)=\"onThumbnailError('baseline', $event)\">\n <div \n *ngIf=\"!hasThumbnailImage('baseline')\"\n class=\"cqa-h-full cqa-w-full cqa-bg-gray-100 cqa-flex cqa-items-center cqa-justify-center\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-text-gray-400\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" stroke=\"currentColor\" stroke-width=\"2\"/>\n <path d=\"M3 15L9 9L13 13L21 5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n <div class=\"cqa-absolute cqa-bottom-0 cqa-left-0 cqa-w-full cqa-h-[19px] cqa-p-[2px] cqa-text-center cqa-bg-[#00000080] cqa-flex cqa-items-center cqa-justify-center\">\n <span class=\"cqa-text-[10px] cqa-text-white cqa-font-medium cqa-capitalize\">Baseline</span>\n </div>\n </div>\n\n <div class=\"cqa-h-[52px] cqa-w-[76px] cqa-rounded-[6px] cqa-relative cqa-overflow-hidden cqa-cursor-pointer\" style=\"border: 2px solid #374151;\" [ngStyle]=\"{'border-color': currentView === 'current' ? '#3F43EE' : '#374151', 'box-shadow': currentView === 'current' ? '0px 0px 0px 2px #3B82F64D' : 'none'}\" (click)=\"setView('current')\">\n <img \n *ngIf=\"hasThumbnailImage('current')\"\n [src]=\"currentUrl\" \n alt=\"Current image\" \n class=\"cqa-h-full cqa-w-full cqa-object-cover\"\n (error)=\"onThumbnailError('current', $event)\">\n <div \n *ngIf=\"!hasThumbnailImage('current')\"\n class=\"cqa-h-full cqa-w-full cqa-bg-gray-100 cqa-flex cqa-items-center cqa-justify-center\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-text-gray-400\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" stroke=\"currentColor\" stroke-width=\"2\"/>\n <path d=\"M3 15L9 9L13 13L21 5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n <div class=\"cqa-absolute cqa-bottom-0 cqa-left-0 cqa-w-full cqa-h-[19px] cqa-p-[2px] cqa-text-center cqa-bg-[#00000080] cqa-flex cqa-items-center cqa-justify-center\">\n <span class=\"cqa-text-[10px] cqa-text-white cqa-font-medium cqa-capitalize\">Current</span>\n </div>\n </div>\n\n <div class=\"cqa-h-[52px] cqa-w-[76px] cqa-rounded-[6px] cqa-relative cqa-overflow-hidden cqa-cursor-pointer\" style=\"border: 2px solid #374151;\" [ngStyle]=\"{'border-color': currentView === 'difference' ? '#3F43EE' : '#374151', 'box-shadow': currentView === 'difference' ? '0px 0px 0px 2px #3B82F64D' : 'none'}\" (click)=\"setView('difference')\">\n <img \n *ngIf=\"hasThumbnailImage('difference')\"\n [src]=\"differenceUrl\" \n alt=\"Difference image\" \n class=\"cqa-h-full cqa-w-full cqa-object-cover\"\n (error)=\"onThumbnailError('difference', $event)\">\n <div \n *ngIf=\"!hasThumbnailImage('difference')\"\n class=\"cqa-h-full cqa-w-full cqa-bg-gray-100 cqa-flex cqa-items-center cqa-justify-center\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-text-gray-400\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" stroke=\"currentColor\" stroke-width=\"2\"/>\n <path d=\"M3 15L9 9L13 13L21 5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n <div class=\"cqa-absolute cqa-bottom-0 cqa-left-0 cqa-w-full cqa-h-[19px] cqa-p-[2px] cqa-text-center cqa-bg-[#00000080] cqa-flex cqa-items-center cqa-justify-center\">\n <span class=\"cqa-text-[10px] cqa-text-white cqa-font-medium cqa-capitalize\">Difference</span>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: VisualDifferenceModalComponent, decorators: [{
99
+ type: Component,
100
+ args: [{ selector: 'cqa-visual-difference-modal', template: "<div \n *ngIf=\"isOpen\"\n class=\"modal-backdrop cqa-fixed cqa-inset-0 cqa-bg-black cqa-bg-opacity-50 cqa-z-50 cqa-flex cqa-items-center cqa-justify-center cqa-p-4\"\n (click)=\"onBackdropClick($event)\">\n <div \n class=\"cqa-bg-white cqa-rounded-lg cqa-shadow-xl cqa-flex cqa-flex-col cqa-max-w-[90vw] cqa-h-[70vh] cqa-w-full cqa-overflow-hidden\"\n style=\"max-width: 1200px;\"\n (click)=\"$event.stopPropagation()\">\n \n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-px-6 cqa-pt-6 cqa-pb-4 cqa-border-b cqa-border-gray-200 cqa-bg-[#FBFCFF] cqa-gap-4\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\">\n <h2 class=\"cqa-text-[18px] cqa-font-medium cqa-text-[#0B0B0B] cqa-m-0\">\n {{ title }}\n </h2>\n <p class=\"cqa-text-xs cqa-text-[#6D6D74] cqa-m-0\">{{ subtitle }}</p>\n </div>\n \n <div class=\"cqa-flex cqa-items-center cqa-gap-3\">\n <button\n type=\"button\"\n class=\"cqa-p-1.5 cqa-rounded-md cqa-text-gray-400 hover:cqa-text-gray-600 hover:cqa-bg-gray-100 cqa-transition-colors cqa-outline-none\"\n (click)=\"onClose(); $event.stopPropagation()\"\n aria-label=\"Close modal\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15 5L5 15M5 5L15 15\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n </div>\n </div>\n \n <div class=\"cqa-flex-1 cqa-overflow-auto cqa-relative\">\n <button\n type=\"button\"\n class=\"cqa-absolute cqa-left-8 cqa-top-1/2 cqa-transform -cqa-translate-y-1/2 cqa-z-10 cqa-w-10 cqa-h-10 cqa-rounded-full cqa-bg-[#00000080] cqa-text-white hover:cqa-bg-gray-700 cqa-transition-colors cqa-flex cqa-items-center cqa-justify-center cqa-outline-none cqa-shadow-lg\"\n (click)=\"navigatePrevious()\" style=\"transform: translate(-50%, -50%);\"\n aria-label=\"Previous image\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15 18L9 12L15 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n\n <div class=\"cqa-w-full cqa-h-full cqa-flex cqa-items-center cqa-justify-center cqa-p-8 cqa-px-16 cqa-overflow-auto\">\n <div *ngIf=\"currentImageUrl\" \n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-h-full\"\n [style.transition]=\"'transform 0.2s ease-in-out'\">\n <img\n [src]=\"currentImageUrl\"\n [alt]=\"currentView + ' image'\"\n class=\"cqa-max-w-full cqa-max-h-full cqa-object-contain cqa-rounded-md cqa-shadow-lg cqa-bg-white\"\n (error)=\"onImageError($event)\"\n />\n </div>\n \n <div *ngIf=\"!currentImageUrl\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-justify-center cqa-py-12 cqa-px-6\">\n <svg width=\"80\" height=\"80\" viewBox=\"0 0 80 80\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"12\" y=\"12\" width=\"56\" height=\"56\" rx=\"4\" stroke=\"#9CA3AF\" stroke-width=\"2\"/>\n <path d=\"M12 52L28 36L40 48L68 20\" stroke=\"#9CA3AF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <circle cx=\"52\" cy=\"28\" r=\"6\" fill=\"#9CA3AF\"/>\n </svg>\n <p class=\"cqa-text-gray-500 cqa-text-sm cqa-font-medium cqa-mt-2\">No image available</p>\n </div>\n </div>\n\n <button\n type=\"button\"\n class=\"cqa-absolute cqa-right-8 cqa-top-1/2 cqa-transform -cqa-translate-y-1/2 cqa-z-10 cqa-w-10 cqa-h-10 cqa-rounded-full cqa-bg-[#00000080] cqa-text-white hover:cqa-bg-gray-700 cqa-transition-colors cqa-flex cqa-items-center cqa-justify-center cqa-outline-none cqa-shadow-lg\"\n (click)=\"navigateNext()\" style=\"transform: translate(50%, -50%);\"\n aria-label=\"Next image\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 18L15 12L9 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n </div>\n\n <div class=\"cqa-flex cqa-items-center cqa-justify-center cqa-gap-2 cqa-p-4 cqa-bg-white\" style=\"border-top: 1px solid #D8D9FC;\">\n <div class=\"cqa-h-[52px] cqa-w-[76px] cqa-rounded-[6px] cqa-relative cqa-overflow-hidden cqa-cursor-pointer\" style=\"border: 2px solid #374151;\" [ngStyle]=\"{'border-color': currentView === 'baseline' ? '#3F43EE' : '#374151', 'box-shadow': currentView === 'baseline' ? '0px 0px 0px 2px #3B82F64D' : 'none'}\" (click)=\"setView('baseline')\">\n <img \n *ngIf=\"hasThumbnailImage('baseline')\"\n [src]=\"baselineUrl\" \n alt=\"Baseline image\" \n class=\"cqa-h-full cqa-w-full cqa-object-cover\"\n (error)=\"onThumbnailError('baseline', $event)\">\n <div \n *ngIf=\"!hasThumbnailImage('baseline')\"\n class=\"cqa-h-full cqa-w-full cqa-bg-gray-100 cqa-flex cqa-items-center cqa-justify-center\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-text-gray-400\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" stroke=\"currentColor\" stroke-width=\"2\"/>\n <path d=\"M3 15L9 9L13 13L21 5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n <div class=\"cqa-absolute cqa-bottom-0 cqa-left-0 cqa-w-full cqa-h-[19px] cqa-p-[2px] cqa-text-center cqa-bg-[#00000080] cqa-flex cqa-items-center cqa-justify-center\">\n <span class=\"cqa-text-[10px] cqa-text-white cqa-font-medium cqa-capitalize\">Baseline</span>\n </div>\n </div>\n\n <div class=\"cqa-h-[52px] cqa-w-[76px] cqa-rounded-[6px] cqa-relative cqa-overflow-hidden cqa-cursor-pointer\" style=\"border: 2px solid #374151;\" [ngStyle]=\"{'border-color': currentView === 'current' ? '#3F43EE' : '#374151', 'box-shadow': currentView === 'current' ? '0px 0px 0px 2px #3B82F64D' : 'none'}\" (click)=\"setView('current')\">\n <img \n *ngIf=\"hasThumbnailImage('current')\"\n [src]=\"currentUrl\" \n alt=\"Current image\" \n class=\"cqa-h-full cqa-w-full cqa-object-cover\"\n (error)=\"onThumbnailError('current', $event)\">\n <div \n *ngIf=\"!hasThumbnailImage('current')\"\n class=\"cqa-h-full cqa-w-full cqa-bg-gray-100 cqa-flex cqa-items-center cqa-justify-center\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-text-gray-400\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" stroke=\"currentColor\" stroke-width=\"2\"/>\n <path d=\"M3 15L9 9L13 13L21 5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n <div class=\"cqa-absolute cqa-bottom-0 cqa-left-0 cqa-w-full cqa-h-[19px] cqa-p-[2px] cqa-text-center cqa-bg-[#00000080] cqa-flex cqa-items-center cqa-justify-center\">\n <span class=\"cqa-text-[10px] cqa-text-white cqa-font-medium cqa-capitalize\">Current</span>\n </div>\n </div>\n\n <div class=\"cqa-h-[52px] cqa-w-[76px] cqa-rounded-[6px] cqa-relative cqa-overflow-hidden cqa-cursor-pointer\" style=\"border: 2px solid #374151;\" [ngStyle]=\"{'border-color': currentView === 'difference' ? '#3F43EE' : '#374151', 'box-shadow': currentView === 'difference' ? '0px 0px 0px 2px #3B82F64D' : 'none'}\" (click)=\"setView('difference')\">\n <img \n *ngIf=\"hasThumbnailImage('difference')\"\n [src]=\"differenceUrl\" \n alt=\"Difference image\" \n class=\"cqa-h-full cqa-w-full cqa-object-cover\"\n (error)=\"onThumbnailError('difference', $event)\">\n <div \n *ngIf=\"!hasThumbnailImage('difference')\"\n class=\"cqa-h-full cqa-w-full cqa-bg-gray-100 cqa-flex cqa-items-center cqa-justify-center\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-text-gray-400\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" stroke=\"currentColor\" stroke-width=\"2\"/>\n <path d=\"M3 15L9 9L13 13L21 5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n <div class=\"cqa-absolute cqa-bottom-0 cqa-left-0 cqa-w-full cqa-h-[19px] cqa-p-[2px] cqa-text-center cqa-bg-[#00000080] cqa-flex cqa-items-center cqa-justify-center\">\n <span class=\"cqa-text-[10px] cqa-text-white cqa-font-medium cqa-capitalize\">Difference</span>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n", styles: [] }]
101
+ }], propDecorators: { baselineUrl: [{
102
+ type: Input
103
+ }], currentUrl: [{
104
+ type: Input
105
+ }], differenceUrl: [{
106
+ type: Input
107
+ }], title: [{
108
+ type: Input
109
+ }], subtitle: [{
110
+ type: Input
111
+ }], isOpen: [{
112
+ type: Input
113
+ }], close: [{
114
+ type: Output
115
+ }] } });
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsLWRpZmZlcmVuY2UtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi92aXN1YWwtZGlmZmVyZW5jZS1tb2RhbC92aXN1YWwtZGlmZmVyZW5jZS1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Zpc3VhbC1kaWZmZXJlbmNlLW1vZGFsL3Zpc3VhbC1kaWZmZXJlbmNlLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQTRCLE1BQU0sZUFBZSxDQUFDOzs7QUFTakcsTUFBTSxPQUFPLDhCQUE4QjtJQUwzQztRQU1XLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFDM0IsVUFBSyxHQUFXLG1CQUFtQixDQUFDO1FBQ3BDLGFBQVEsR0FBVywwQ0FBMEMsQ0FBQztRQUM5RCxXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTNDLGdCQUFXLEdBQWtCLFVBQVUsQ0FBQztRQUN4Qyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFDcEMsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBQ25DLHlCQUFvQixHQUFZLEtBQUssQ0FBQztLQXFGdkM7SUFuRkMsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7U0FDakM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1NBQ2hDO1FBQ0QsSUFBSSxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztTQUNuQztJQUNILENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsUUFBUSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3hCLEtBQUssVUFBVTtnQkFDYixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDMUIsS0FBSyxTQUFTO2dCQUNaLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUN6QixLQUFLLFlBQVk7Z0JBQ2YsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQzVCO2dCQUNFLE9BQU8sRUFBRSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFpQjtRQUMvQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQztRQUMzQyxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBNEIsQ0FBQztRQUV6RCxJQUFJLE1BQU0sS0FBSyxhQUFhLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUMzRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDaEI7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVk7UUFDdkIsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDN0MsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQzdCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUEyQyxFQUFFLEtBQVk7UUFDeEUsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDN0MsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQzNCLElBQUksSUFBSSxLQUFLLFVBQVUsRUFBRTtZQUN2QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1NBQ2hDO2FBQU0sSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQzdCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7U0FDL0I7YUFBTSxJQUFJLElBQUksS0FBSyxZQUFZLEVBQUU7WUFDaEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztTQUNsQztJQUNILENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUEyQztRQUMzRCxJQUFJLElBQUksS0FBSyxVQUFVLEVBQUU7WUFDdkIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztTQUN2RDthQUFNLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUM3QixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1NBQ3JEO2FBQU0sSUFBSSxJQUFJLEtBQUssWUFBWSxFQUFFO1lBQ2hDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUM7U0FDM0Q7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBbUI7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE1BQU0sS0FBSyxHQUFvQixDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDckUsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckQsTUFBTSxhQUFhLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLEtBQUssR0FBb0IsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sU0FBUyxHQUFHLFlBQVksR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7OzJIQWhHVSw4QkFBOEI7K0dBQTlCLDhCQUE4QiwrUUNUM0Mscy9SQTBJQTsyRkRqSWEsOEJBQThCO2tCQUwxQyxTQUFTOytCQUNFLDZCQUE2Qjs4QkFLOUIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IHR5cGUgSW1hZ2VWaWV3VHlwZSA9ICdiYXNlbGluZScgfCAnY3VycmVudCcgfCAnZGlmZmVyZW5jZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS12aXN1YWwtZGlmZmVyZW5jZS1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi92aXN1YWwtZGlmZmVyZW5jZS1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW11cbn0pXG5leHBvcnQgY2xhc3MgVmlzdWFsRGlmZmVyZW5jZU1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgYmFzZWxpbmVVcmw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBjdXJyZW50VXJsOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZGlmZmVyZW5jZVVybDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSAnVmlzdWFsIERpZmZlcmVuY2UnO1xuICBASW5wdXQoKSBzdWJ0aXRsZTogc3RyaW5nID0gJ0NvbXBhcmluZyBCYXNlbGluZSB2cy4gQ3VycmVudCBFeGVjdXRpb24nO1xuICBASW5wdXQoKSBpc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGN1cnJlbnRWaWV3OiBJbWFnZVZpZXdUeXBlID0gJ2Jhc2VsaW5lJztcbiAgYmFzZWxpbmVJbWFnZUVycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIGN1cnJlbnRJbWFnZUVycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIGRpZmZlcmVuY2VJbWFnZUVycm9yOiBib29sZWFuID0gZmFsc2U7XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydiYXNlbGluZVVybCddKSB7XG4gICAgICB0aGlzLmJhc2VsaW5lSW1hZ2VFcnJvciA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snY3VycmVudFVybCddKSB7XG4gICAgICB0aGlzLmN1cnJlbnRJbWFnZUVycm9yID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydkaWZmZXJlbmNlVXJsJ10pIHtcbiAgICAgIHRoaXMuZGlmZmVyZW5jZUltYWdlRXJyb3IgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXQgY3VycmVudEltYWdlVXJsKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLmN1cnJlbnRWaWV3KSB7XG4gICAgICBjYXNlICdiYXNlbGluZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VsaW5lVXJsO1xuICAgICAgY2FzZSAnY3VycmVudCc6XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRVcmw7XG4gICAgICBjYXNlICdkaWZmZXJlbmNlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlmZmVyZW5jZVVybDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgb25CYWNrZHJvcENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIFxuICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQgfHwgdGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnbW9kYWwtYmFja2Ryb3AnKSkge1xuICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgb25JbWFnZUVycm9yKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGltZyA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW1hZ2VFbGVtZW50O1xuICAgIGltZy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICB9XG5cbiAgb25UaHVtYm5haWxFcnJvcih0eXBlOiAnYmFzZWxpbmUnIHwgJ2N1cnJlbnQnIHwgJ2RpZmZlcmVuY2UnLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpbWcgPSBldmVudC50YXJnZXQgYXMgSFRNTEltYWdlRWxlbWVudDtcbiAgICBpbWcuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICBpZiAodHlwZSA9PT0gJ2Jhc2VsaW5lJykge1xuICAgICAgdGhpcy5iYXNlbGluZUltYWdlRXJyb3IgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2N1cnJlbnQnKSB7XG4gICAgICB0aGlzLmN1cnJlbnRJbWFnZUVycm9yID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkaWZmZXJlbmNlJykge1xuICAgICAgdGhpcy5kaWZmZXJlbmNlSW1hZ2VFcnJvciA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaGFzVGh1bWJuYWlsSW1hZ2UodHlwZTogJ2Jhc2VsaW5lJyB8ICdjdXJyZW50JyB8ICdkaWZmZXJlbmNlJyk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlID09PSAnYmFzZWxpbmUnKSB7XG4gICAgICByZXR1cm4gISF0aGlzLmJhc2VsaW5lVXJsICYmICF0aGlzLmJhc2VsaW5lSW1hZ2VFcnJvcjtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdjdXJyZW50Jykge1xuICAgICAgcmV0dXJuICEhdGhpcy5jdXJyZW50VXJsICYmICF0aGlzLmN1cnJlbnRJbWFnZUVycm9yO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2RpZmZlcmVuY2UnKSB7XG4gICAgICByZXR1cm4gISF0aGlzLmRpZmZlcmVuY2VVcmwgJiYgIXRoaXMuZGlmZmVyZW5jZUltYWdlRXJyb3I7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHNldFZpZXcodmlldzogSW1hZ2VWaWV3VHlwZSk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFZpZXcgPSB2aWV3O1xuICB9XG5cbiAgbmF2aWdhdGVQcmV2aW91cygpOiB2b2lkIHtcbiAgICBjb25zdCB2aWV3czogSW1hZ2VWaWV3VHlwZVtdID0gWydiYXNlbGluZScsICdjdXJyZW50JywgJ2RpZmZlcmVuY2UnXTtcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB2aWV3cy5pbmRleE9mKHRoaXMuY3VycmVudFZpZXcpO1xuICAgIGNvbnN0IHByZXZpb3VzSW5kZXggPSBjdXJyZW50SW5kZXggPiAwID8gY3VycmVudEluZGV4IC0gMSA6IHZpZXdzLmxlbmd0aCAtIDE7XG4gICAgdGhpcy5jdXJyZW50VmlldyA9IHZpZXdzW3ByZXZpb3VzSW5kZXhdO1xuICB9XG5cbiAgbmF2aWdhdGVOZXh0KCk6IHZvaWQge1xuICAgIGNvbnN0IHZpZXdzOiBJbWFnZVZpZXdUeXBlW10gPSBbJ2Jhc2VsaW5lJywgJ2N1cnJlbnQnLCAnZGlmZmVyZW5jZSddO1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHZpZXdzLmluZGV4T2YodGhpcy5jdXJyZW50Vmlldyk7XG4gICAgY29uc3QgbmV4dEluZGV4ID0gY3VycmVudEluZGV4IDwgdmlld3MubGVuZ3RoIC0gMSA/IGN1cnJlbnRJbmRleCArIDEgOiAwO1xuICAgIHRoaXMuY3VycmVudFZpZXcgPSB2aWV3c1tuZXh0SW5kZXhdO1xuICB9XG59XG5cbiIsIjxkaXYgXG4gICpuZ0lmPVwiaXNPcGVuXCJcbiAgY2xhc3M9XCJtb2RhbC1iYWNrZHJvcCBjcWEtZml4ZWQgY3FhLWluc2V0LTAgY3FhLWJnLWJsYWNrIGNxYS1iZy1vcGFjaXR5LTUwIGNxYS16LTUwIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1wLTRcIlxuICAoY2xpY2spPVwib25CYWNrZHJvcENsaWNrKCRldmVudClcIj5cbiAgPGRpdiBcbiAgICBjbGFzcz1cImNxYS1iZy13aGl0ZSBjcWEtcm91bmRlZC1sZyBjcWEtc2hhZG93LXhsIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtbWF4LXctWzkwdnddIGNxYS1oLVs3MHZoXSBjcWEtdy1mdWxsIGNxYS1vdmVyZmxvdy1oaWRkZW5cIlxuICAgIHN0eWxlPVwibWF4LXdpZHRoOiAxMjAwcHg7XCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgXG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtcHgtNiBjcWEtcHQtNiBjcWEtcGItNCBjcWEtYm9yZGVyLWIgY3FhLWJvcmRlci1ncmF5LTIwMCBjcWEtYmctWyNGQkZDRkZdIGNxYS1nYXAtNFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTFcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiY3FhLXRleHQtWzE4cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzBCMEIwQl0gY3FhLW0tMFwiPlxuICAgICAgICAgIHt7IHRpdGxlIH19XG4gICAgICAgIDwvaDI+XG4gICAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLXRleHQtWyM2RDZENzRdIGNxYS1tLTBcIj57eyBzdWJ0aXRsZSB9fTwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgXG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTNcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiY3FhLXAtMS41IGNxYS1yb3VuZGVkLW1kIGNxYS10ZXh0LWdyYXktNDAwIGhvdmVyOmNxYS10ZXh0LWdyYXktNjAwIGhvdmVyOmNxYS1iZy1ncmF5LTEwMCBjcWEtdHJhbnNpdGlvbi1jb2xvcnMgY3FhLW91dGxpbmUtbm9uZVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2UgbW9kYWxcIj5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgNUw1IDE1TTUgNUwxNSAxNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBcbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtb3ZlcmZsb3ctYXV0byBjcWEtcmVsYXRpdmVcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS1sZWZ0LTggY3FhLXRvcC0xLzIgY3FhLXRyYW5zZm9ybSAtY3FhLXRyYW5zbGF0ZS15LTEvMiBjcWEtei0xMCBjcWEtdy0xMCBjcWEtaC0xMCBjcWEtcm91bmRlZC1mdWxsIGNxYS1iZy1bIzAwMDAwMDgwXSBjcWEtdGV4dC13aGl0ZSBob3ZlcjpjcWEtYmctZ3JheS03MDAgY3FhLXRyYW5zaXRpb24tY29sb3JzIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1vdXRsaW5lLW5vbmUgY3FhLXNoYWRvdy1sZ1wiXG4gICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVByZXZpb3VzKClcIiBzdHlsZT1cInRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1wiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJQcmV2aW91cyBpbWFnZVwiPlxuICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTE1IDE4TDkgMTJMMTUgNlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1oLWZ1bGwgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXAtOCBjcWEtcHgtMTYgY3FhLW92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImN1cnJlbnRJbWFnZVVybFwiIFxuICAgICAgICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWgtZnVsbFwiXG4gICAgICAgICAgICAgW3N0eWxlLnRyYW5zaXRpb25dPVwiJ3RyYW5zZm9ybSAwLjJzIGVhc2UtaW4tb3V0J1wiPlxuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIFtzcmNdPVwiY3VycmVudEltYWdlVXJsXCJcbiAgICAgICAgICAgIFthbHRdPVwiY3VycmVudFZpZXcgKyAnIGltYWdlJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImNxYS1tYXgtdy1mdWxsIGNxYS1tYXgtaC1mdWxsIGNxYS1vYmplY3QtY29udGFpbiBjcWEtcm91bmRlZC1tZCBjcWEtc2hhZG93LWxnIGNxYS1iZy13aGl0ZVwiXG4gICAgICAgICAgICAoZXJyb3IpPVwib25JbWFnZUVycm9yKCRldmVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFjdXJyZW50SW1hZ2VVcmxcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtcHktMTIgY3FhLXB4LTZcIj5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiODBcIiBoZWlnaHQ9XCI4MFwiIHZpZXdCb3g9XCIwIDAgODAgODBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgIDxyZWN0IHg9XCIxMlwiIHk9XCIxMlwiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHJ4PVwiNFwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2Utd2lkdGg9XCIyXCIvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA1MkwyOCAzNkw0MCA0OEw2OCAyMFwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjUyXCIgY3k9XCIyOFwiIHI9XCI2XCIgZmlsbD1cIiM5Q0EzQUZcIi8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC1ncmF5LTUwMCBjcWEtdGV4dC1zbSBjcWEtZm9udC1tZWRpdW0gY3FhLW10LTJcIj5ObyBpbWFnZSBhdmFpbGFibGU8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS1yaWdodC04IGNxYS10b3AtMS8yIGNxYS10cmFuc2Zvcm0gLWNxYS10cmFuc2xhdGUteS0xLzIgY3FhLXotMTAgY3FhLXctMTAgY3FhLWgtMTAgY3FhLXJvdW5kZWQtZnVsbCBjcWEtYmctWyMwMDAwMDA4MF0gY3FhLXRleHQtd2hpdGUgaG92ZXI6Y3FhLWJnLWdyYXktNzAwIGNxYS10cmFuc2l0aW9uLWNvbG9ycyBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtb3V0bGluZS1ub25lIGNxYS1zaGFkb3ctbGdcIlxuICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVOZXh0KClcIiBzdHlsZT1cInRyYW5zZm9ybTogdHJhbnNsYXRlKDUwJSwgLTUwJSk7XCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIk5leHQgaW1hZ2VcIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk05IDE4TDE1IDEyTDkgNlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWdhcC0yIGNxYS1wLTQgY3FhLWJnLXdoaXRlXCIgc3R5bGU9XCJib3JkZXItdG9wOiAxcHggc29saWQgI0Q4RDlGQztcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtaC1bNTJweF0gY3FhLXctWzc2cHhdIGNxYS1yb3VuZGVkLVs2cHhdIGNxYS1yZWxhdGl2ZSBjcWEtb3ZlcmZsb3ctaGlkZGVuIGNxYS1jdXJzb3ItcG9pbnRlclwiIHN0eWxlPVwiYm9yZGVyOiAycHggc29saWQgIzM3NDE1MTtcIiBbbmdTdHlsZV09XCJ7J2JvcmRlci1jb2xvcic6IGN1cnJlbnRWaWV3ID09PSAnYmFzZWxpbmUnID8gJyMzRjQzRUUnIDogJyMzNzQxNTEnLCAnYm94LXNoYWRvdyc6IGN1cnJlbnRWaWV3ID09PSAnYmFzZWxpbmUnID8gJzBweCAwcHggMHB4IDJweCAjM0I4MkY2NEQnIDogJ25vbmUnfVwiIChjbGljayk9XCJzZXRWaWV3KCdiYXNlbGluZScpXCI+XG4gICAgICAgIDxpbWcgXG4gICAgICAgICAgKm5nSWY9XCJoYXNUaHVtYm5haWxJbWFnZSgnYmFzZWxpbmUnKVwiXG4gICAgICAgICAgW3NyY109XCJiYXNlbGluZVVybFwiIFxuICAgICAgICAgIGFsdD1cIkJhc2VsaW5lIGltYWdlXCIgXG4gICAgICAgICAgY2xhc3M9XCJjcWEtaC1mdWxsIGNxYS13LWZ1bGwgY3FhLW9iamVjdC1jb3ZlclwiXG4gICAgICAgICAgKGVycm9yKT1cIm9uVGh1bWJuYWlsRXJyb3IoJ2Jhc2VsaW5lJywgJGV2ZW50KVwiPlxuICAgICAgICA8ZGl2IFxuICAgICAgICAgICpuZ0lmPVwiIWhhc1RodW1ibmFpbEltYWdlKCdiYXNlbGluZScpXCJcbiAgICAgICAgICBjbGFzcz1cImNxYS1oLWZ1bGwgY3FhLXctZnVsbCBjcWEtYmctZ3JheS0xMDAgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cImNxYS10ZXh0LWdyYXktNDAwXCI+XG4gICAgICAgICAgICA8cmVjdCB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgcng9XCIyXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMyAxNUw5IDlMMTMgMTNMMjEgNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS1ib3R0b20tMCBjcWEtbGVmdC0wIGNxYS13LWZ1bGwgY3FhLWgtWzE5cHhdIGNxYS1wLVsycHhdIGNxYS10ZXh0LWNlbnRlciBjcWEtYmctWyMwMDAwMDA4MF0gY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtdGV4dC13aGl0ZSBjcWEtZm9udC1tZWRpdW0gY3FhLWNhcGl0YWxpemVcIj5CYXNlbGluZTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1oLVs1MnB4XSBjcWEtdy1bNzZweF0gY3FhLXJvdW5kZWQtWzZweF0gY3FhLXJlbGF0aXZlIGNxYS1vdmVyZmxvdy1oaWRkZW4gY3FhLWN1cnNvci1wb2ludGVyXCIgc3R5bGU9XCJib3JkZXI6IDJweCBzb2xpZCAjMzc0MTUxO1wiIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWNvbG9yJzogY3VycmVudFZpZXcgPT09ICdjdXJyZW50JyA/ICcjM0Y0M0VFJyA6ICcjMzc0MTUxJywgJ2JveC1zaGFkb3cnOiBjdXJyZW50VmlldyA9PT0gJ2N1cnJlbnQnID8gJzBweCAwcHggMHB4IDJweCAjM0I4MkY2NEQnIDogJ25vbmUnfVwiIChjbGljayk9XCJzZXRWaWV3KCdjdXJyZW50JylcIj5cbiAgICAgICAgPGltZyBcbiAgICAgICAgICAqbmdJZj1cImhhc1RodW1ibmFpbEltYWdlKCdjdXJyZW50JylcIlxuICAgICAgICAgIFtzcmNdPVwiY3VycmVudFVybFwiIFxuICAgICAgICAgIGFsdD1cIkN1cnJlbnQgaW1hZ2VcIiBcbiAgICAgICAgICBjbGFzcz1cImNxYS1oLWZ1bGwgY3FhLXctZnVsbCBjcWEtb2JqZWN0LWNvdmVyXCJcbiAgICAgICAgICAoZXJyb3IpPVwib25UaHVtYm5haWxFcnJvcignY3VycmVudCcsICRldmVudClcIj5cbiAgICAgICAgPGRpdiBcbiAgICAgICAgICAqbmdJZj1cIiFoYXNUaHVtYm5haWxJbWFnZSgnY3VycmVudCcpXCJcbiAgICAgICAgICBjbGFzcz1cImNxYS1oLWZ1bGwgY3FhLXctZnVsbCBjcWEtYmctZ3JheS0xMDAgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cImNxYS10ZXh0LWdyYXktNDAwXCI+XG4gICAgICAgICAgICA8cmVjdCB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgcng9XCIyXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMyAxNUw5IDlMMTMgMTNMMjEgNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS1ib3R0b20tMCBjcWEtbGVmdC0wIGNxYS13LWZ1bGwgY3FhLWgtWzE5cHhdIGNxYS1wLVsycHhdIGNxYS10ZXh0LWNlbnRlciBjcWEtYmctWyMwMDAwMDA4MF0gY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtdGV4dC13aGl0ZSBjcWEtZm9udC1tZWRpdW0gY3FhLWNhcGl0YWxpemVcIj5DdXJyZW50PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWgtWzUycHhdIGNxYS13LVs3NnB4XSBjcWEtcm91bmRlZC1bNnB4XSBjcWEtcmVsYXRpdmUgY3FhLW92ZXJmbG93LWhpZGRlbiBjcWEtY3Vyc29yLXBvaW50ZXJcIiBzdHlsZT1cImJvcmRlcjogMnB4IHNvbGlkICMzNzQxNTE7XCIgW25nU3R5bGVdPVwieydib3JkZXItY29sb3InOiBjdXJyZW50VmlldyA9PT0gJ2RpZmZlcmVuY2UnID8gJyMzRjQzRUUnIDogJyMzNzQxNTEnLCAnYm94LXNoYWRvdyc6IGN1cnJlbnRWaWV3ID09PSAnZGlmZmVyZW5jZScgPyAnMHB4IDBweCAwcHggMnB4ICMzQjgyRjY0RCcgOiAnbm9uZSd9XCIgKGNsaWNrKT1cInNldFZpZXcoJ2RpZmZlcmVuY2UnKVwiPlxuICAgICAgICA8aW1nIFxuICAgICAgICAgICpuZ0lmPVwiaGFzVGh1bWJuYWlsSW1hZ2UoJ2RpZmZlcmVuY2UnKVwiXG4gICAgICAgICAgW3NyY109XCJkaWZmZXJlbmNlVXJsXCIgXG4gICAgICAgICAgYWx0PVwiRGlmZmVyZW5jZSBpbWFnZVwiIFxuICAgICAgICAgIGNsYXNzPVwiY3FhLWgtZnVsbCBjcWEtdy1mdWxsIGNxYS1vYmplY3QtY292ZXJcIlxuICAgICAgICAgIChlcnJvcik9XCJvblRodW1ibmFpbEVycm9yKCdkaWZmZXJlbmNlJywgJGV2ZW50KVwiPlxuICAgICAgICA8ZGl2IFxuICAgICAgICAgICpuZ0lmPVwiIWhhc1RodW1ibmFpbEltYWdlKCdkaWZmZXJlbmNlJylcIlxuICAgICAgICAgIGNsYXNzPVwiY3FhLWgtZnVsbCBjcWEtdy1mdWxsIGNxYS1iZy1ncmF5LTEwMCBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwiY3FhLXRleHQtZ3JheS00MDBcIj5cbiAgICAgICAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjNcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiByeD1cIjJcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0zIDE1TDkgOUwxMyAxM0wyMSA1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYWJzb2x1dGUgY3FhLWJvdHRvbS0wIGNxYS1sZWZ0LTAgY3FhLXctZnVsbCBjcWEtaC1bMTlweF0gY3FhLXAtWzJweF0gY3FhLXRleHQtY2VudGVyIGNxYS1iZy1bIzAwMDAwMDgwXSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS10ZXh0LXdoaXRlIGNxYS1mb250LW1lZGl1bSBjcWEtY2FwaXRhbGl6ZVwiPkRpZmZlcmVuY2U8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbiJdfQ==
@@ -46,10 +46,11 @@ export * from './lib/console-alert/console-alert.component';
46
46
  export * from './lib/ai-debug-alert/ai-debug-alert.component';
47
47
  export * from './lib/network-request/network-request.component';
48
48
  export * from './lib/run-history-card/run-history-card.component';
49
- export * from './lib/view-image-modal/view-image-modal.component';
49
+ export * from './lib/visual-difference-modal/visual-difference-modal.component';
50
50
  export * from './lib/configuration-card/configuration-card.component';
51
51
  export * from './lib/compare-runs/compare-runs.component';
52
52
  export * from './lib/iterations-loop/iterations-loop.component';
53
53
  export * from './lib/failed-step-card/failed-step-card.component';
54
54
  export * from './lib/custom-input/custom-input.component';
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMsNkRBQTZELENBQUM7QUFDNUUsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLDJEQUEyRCxDQUFDO0FBQzFFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLGtFQUFrRSxDQUFDO0FBQ2pGLGNBQWMsOERBQThELENBQUM7QUFDN0UsY0FBYyxzRUFBc0UsQ0FBQztBQUNyRixjQUFjLDBFQUEwRSxDQUFDO0FBQ3pGLGNBQWMsMEVBQTBFLENBQUM7QUFDekYsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsb0VBQW9FLENBQUM7QUFDbkYsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLDJDQUEyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvdWkta2l0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZWFyY2gtYmFyL3NlYXJjaC1iYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlZ21lbnQtY29udHJvbC9zZWdtZW50LWNvbnRyb2wuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaWFsb2cvZGlhbG9nLm1vZGVscyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaWFsb2cvZGlhbG9nLnRva2Vucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaWFsb2cvZGlhbG9nLXJlZic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlL2R5bmFtaWMtdGFibGUvZHluYW1pYy1jZWxsLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS9keW5hbWljLXRhYmxlL2R5bmFtaWMtY2VsbC1jb250YWluZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlL2R5bmFtaWMtdGFibGUvY29tcG9uZW50LXJlbmRlci1jb25maWcuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWN0aW9uLW1lbnUvYWN0aW9uLW1lbnUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL290aGVyLWJ1dHRvbi9vdGhlci1idXR0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbHRlcnMvZHluYW1pYy1maWx0ZXIvZHluYW1pYy1maWx0ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbHRlcnMvZGF0ZXJhbmdlcGlja2VyL2RhdGVyYW5nZXBpY2tlci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsdGVycy9kYXRlcmFuZ2VwaWNrZXIvZGF0ZXJhbmdlcGlja2VyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2x1bW4tdmlzaWJpbGl0eS9jb2x1bW4tdmlzaWJpbGl0eS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFibGUtYWN0aW9uLXRvb2xiYXIvdGFibGUtYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Rhc2hib2FyZHMvbWV0cmljcy1jYXJkL21ldHJpY3MtY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGFzaGJvYXJkcy9jaGFydC1jYXJkL2NoYXJ0LWNhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Rhc2hib2FyZHMvcHJvZ3Jlc3MtdGV4dC1jYXJkL3Byb2dyZXNzLXRleHQtY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGFzaGJvYXJkcy9kYXNoYm9hcmQtaGVhZGVyL2Rhc2hib2FyZC1oZWFkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Rhc2hib2FyZHMvY292ZXJhZ2UtbW9kdWxlLWNhcmQvY292ZXJhZ2UtbW9kdWxlLWNhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Rhc2hib2FyZHMvdGVzdC1kaXN0cmlidXRpb24tY2FyZC90ZXN0LWRpc3RyaWJ1dGlvbi1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXNoYm9hcmRzL2ZhaWxlZC10ZXN0LWNhc2VzLWNhcmQvZmFpbGVkLXRlc3QtY2FzZXMtY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHluYW1pYy1zZWxlY3QvZHluYW1pYy1zZWxlY3QtZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlbGVjdGVkLWZpbHRlcnMvc2VsZWN0ZWQtZmlsdGVycy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGFzaGJvYXJkcy9pbnNpZ2h0LWNhcmQvaW5zaWdodC1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYWRnZS9iYWRnZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24tYnV0dG9uL2Ryb3Bkb3duLWJ1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGFzaGJvYXJkcy9oZWF0LWVycm9yLW1hcC1jZWxsL2hlYXQtZXJyb3ItbWFwLWNlbGwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS1wcmVzZXRzLmNvbnN0YW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS1jb25maWcuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlcy90YWJsZS10ZW1wbGF0ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXNzZXRzL2ltYWdlcy9pbWFnZS1hc3NldHMuY29uc3RhbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL21ldGFkYXRhLWNvbG9ycy51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Z1bGwtdGFibGUtbG9hZGVyL2Z1bGwtdGFibGUtbG9hZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS1kYXRhLWxvYWRlci90YWJsZS1kYXRhLWxvYWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvdHctb3ZlcmxheS1jb250YWluZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2ltdWxhdG9yL3NpbXVsYXRvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uc29sZS1hbGVydC9jb25zb2xlLWFsZXJ0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9haS1kZWJ1Zy1hbGVydC9haS1kZWJ1Zy1hbGVydC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmV0d29yay1yZXF1ZXN0L25ldHdvcmstcmVxdWVzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcnVuLWhpc3RvcnktY2FyZC9ydW4taGlzdG9yeS1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92aWV3LWltYWdlLW1vZGFsL3ZpZXctaW1hZ2UtbW9kYWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbmZpZ3VyYXRpb24tY2FyZC9jb25maWd1cmF0aW9uLWNhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBhcmUtcnVucy9jb21wYXJlLXJ1bnMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2l0ZXJhdGlvbnMtbG9vcC9pdGVyYXRpb25zLWxvb3AuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZhaWxlZC1zdGVwLWNhcmQvZmFpbGVkLXN0ZXAtY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY3VzdG9tLWlucHV0L2N1c3RvbS1pbnB1dC5jb21wb25lbnQnO1xuIl19
55
+ export * from './lib/ai-reasoning/ai-reasoning.component';
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMsNkRBQTZELENBQUM7QUFDNUUsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLDJEQUEyRCxDQUFDO0FBQzFFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLGtFQUFrRSxDQUFDO0FBQ2pGLGNBQWMsOERBQThELENBQUM7QUFDN0UsY0FBYyxzRUFBc0UsQ0FBQztBQUNyRixjQUFjLDBFQUEwRSxDQUFDO0FBQ3pGLGNBQWMsMEVBQTBFLENBQUM7QUFDekYsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsb0VBQW9FLENBQUM7QUFDbkYsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsaUVBQWlFLENBQUM7QUFDaEYsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsMkNBQTJDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi91aS1raXQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlYXJjaC1iYXIvc2VhcmNoLWJhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VnbWVudC1jb250cm9sL3NlZ21lbnQtY29udHJvbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlhbG9nL2RpYWxvZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpYWxvZy9kaWFsb2cubW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpYWxvZy9kaWFsb2cudG9rZW5zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpYWxvZy9kaWFsb2ctcmVmJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFibGUvZHluYW1pYy10YWJsZS9keW5hbWljLWNlbGwuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlL2R5bmFtaWMtdGFibGUvZHluYW1pYy1jZWxsLWNvbnRhaW5lci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFibGUvZHluYW1pYy10YWJsZS9jb21wb25lbnQtcmVuZGVyLWNvbmZpZy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY3Rpb24tbWVudS9hY3Rpb24tbWVudS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvb3RoZXItYnV0dG9uL290aGVyLWJ1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsdGVycy9keW5hbWljLWZpbHRlci9keW5hbWljLWZpbHRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsdGVycy9kYXRlcmFuZ2VwaWNrZXIvZGF0ZXJhbmdlcGlja2VyLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWx0ZXJzL2RhdGVyYW5nZXBpY2tlci9kYXRlcmFuZ2VwaWNrZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbHVtbi12aXNpYmlsaXR5L2NvbHVtbi12aXNpYmlsaXR5LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS1hY3Rpb24tdG9vbGJhci90YWJsZS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGFzaGJvYXJkcy9tZXRyaWNzLWNhcmQvbWV0cmljcy1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXNoYm9hcmRzL2NoYXJ0LWNhcmQvY2hhcnQtY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGFzaGJvYXJkcy9wcm9ncmVzcy10ZXh0LWNhcmQvcHJvZ3Jlc3MtdGV4dC1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXNoYm9hcmRzL2Rhc2hib2FyZC1oZWFkZXIvZGFzaGJvYXJkLWhlYWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGFzaGJvYXJkcy9jb3ZlcmFnZS1tb2R1bGUtY2FyZC9jb3ZlcmFnZS1tb2R1bGUtY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGFzaGJvYXJkcy90ZXN0LWRpc3RyaWJ1dGlvbi1jYXJkL3Rlc3QtZGlzdHJpYnV0aW9uLWNhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Rhc2hib2FyZHMvZmFpbGVkLXRlc3QtY2FzZXMtY2FyZC9mYWlsZWQtdGVzdC1jYXNlcy1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9keW5hbWljLXNlbGVjdC9keW5hbWljLXNlbGVjdC1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VsZWN0ZWQtZmlsdGVycy9zZWxlY3RlZC1maWx0ZXJzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXNoYm9hcmRzL2luc2lnaHQtY2FyZC9pbnNpZ2h0LWNhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhZGdlL2JhZGdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bi1idXR0b24vZHJvcGRvd24tYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXNoYm9hcmRzL2hlYXQtZXJyb3ItbWFwLWNlbGwvaGVhdC1lcnJvci1tYXAtY2VsbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLXByZXNldHMuY29uc3RhbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLWNvbmZpZy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGVzL3RhYmxlLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hc3NldHMvaW1hZ2VzL2ltYWdlLWFzc2V0cy5jb25zdGFudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvbWV0YWRhdGEtY29sb3JzLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZnVsbC10YWJsZS1sb2FkZXIvZnVsbC10YWJsZS1sb2FkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlLWRhdGEtbG9hZGVyL3RhYmxlLWRhdGEtbG9hZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy90dy1vdmVybGF5LWNvbnRhaW5lcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaW11bGF0b3Ivc2ltdWxhdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25zb2xlLWFsZXJ0L2NvbnNvbGUtYWxlcnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FpLWRlYnVnLWFsZXJ0L2FpLWRlYnVnLWFsZXJ0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZXR3b3JrLXJlcXVlc3QvbmV0d29yay1yZXF1ZXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ydW4taGlzdG9yeS1jYXJkL3J1bi1oaXN0b3J5LWNhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Zpc3VhbC1kaWZmZXJlbmNlLW1vZGFsL3Zpc3VhbC1kaWZmZXJlbmNlLW1vZGFsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25maWd1cmF0aW9uLWNhcmQvY29uZmlndXJhdGlvbi1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wYXJlLXJ1bnMvY29tcGFyZS1ydW5zLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pdGVyYXRpb25zLWxvb3AvaXRlcmF0aW9ucy1sb29wLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mYWlsZWQtc3RlcC1jYXJkL2ZhaWxlZC1zdGVwLWNhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2N1c3RvbS1pbnB1dC9jdXN0b20taW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FpLXJlYXNvbmluZy9haS1yZWFzb25pbmcuY29tcG9uZW50JztcbiJdfQ==