@cqa-lib/cqa-ui 1.0.22 → 1.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/badge/badge.component.mjs +20 -9
- package/esm2020/lib/dashboards/coverage-module-card/coverage-module-card.component.mjs +15 -3
- package/esm2020/lib/dashboards/dashboard-header/dashboard-header.component.mjs +6 -3
- package/esm2020/lib/dashboards/failed-test-cases-card/failed-test-cases-card.component.mjs +16 -7
- package/esm2020/lib/dashboards/insight-card/insight-card.component.mjs +13 -7
- package/esm2020/lib/dynamic-select/dynamic-select-field.component.mjs +9 -2
- package/esm2020/lib/filters/dynamic-filter/dynamic-filter.component.mjs +12 -3
- package/esm2020/lib/selected-filters/selected-filters.component.mjs +6 -3
- package/esm2020/lib/table/dynamic-table/component-render-config.interface.mjs +2 -0
- package/esm2020/lib/table/dynamic-table/dynamic-cell-container.directive.mjs +118 -0
- package/esm2020/lib/table/dynamic-table/dynamic-table.component.mjs +121 -6
- package/esm2020/lib/templates/table-template.component.mjs +19 -4
- package/esm2020/lib/ui-kit.module.mjs +6 -1
- package/esm2020/public-api.mjs +3 -1
- package/fesm2015/cqa-lib-cqa-ui.mjs +348 -36
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +345 -36
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/badge/badge.component.d.ts +3 -1
- package/lib/dashboards/coverage-module-card/coverage-module-card.component.d.ts +7 -1
- package/lib/dashboards/dashboard-header/dashboard-header.component.d.ts +2 -1
- package/lib/dashboards/failed-test-cases-card/failed-test-cases-card.component.d.ts +5 -1
- package/lib/dashboards/insight-card/insight-card.component.d.ts +3 -1
- package/lib/dynamic-select/dynamic-select-field.component.d.ts +2 -1
- package/lib/filters/dynamic-filter/dynamic-filter.component.d.ts +3 -1
- package/lib/selected-filters/selected-filters.component.d.ts +2 -1
- package/lib/table/dynamic-table/component-render-config.interface.d.ts +10 -0
- package/lib/table/dynamic-table/dynamic-cell-container.directive.d.ts +24 -0
- package/lib/table/dynamic-table/dynamic-table.component.d.ts +35 -5
- package/lib/templates/table-template.component.d.ts +6 -2
- package/lib/ui-kit.module.d.ts +40 -39
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/styles.css +1 -1
|
@@ -9,6 +9,8 @@ export class InsightCardComponent {
|
|
|
9
9
|
constructor() {
|
|
10
10
|
this.title = '';
|
|
11
11
|
this.description = '';
|
|
12
|
+
/** Show/hide the AI suggestion main button */
|
|
13
|
+
this.showAiSuggestionButton = true;
|
|
12
14
|
this._badges = [];
|
|
13
15
|
this.metadataExpanded = true;
|
|
14
16
|
this.isPrerequisiteMissing = false;
|
|
@@ -38,6 +40,8 @@ export class InsightCardComponent {
|
|
|
38
40
|
const currentState = this.sectionExpandedState.get(section.id) ?? (section.expanded ?? true);
|
|
39
41
|
const newState = !currentState;
|
|
40
42
|
this.sectionExpandedState.set(section.id, newState);
|
|
43
|
+
// Ensure immediate UI feedback by updating the passed section object
|
|
44
|
+
section.expanded = newState;
|
|
41
45
|
this.sectionToggle.emit({ id: section.id, expanded: newState });
|
|
42
46
|
}
|
|
43
47
|
onSectionAction(sectionId) {
|
|
@@ -66,7 +70,7 @@ export class InsightCardComponent {
|
|
|
66
70
|
}
|
|
67
71
|
get visibleSections() {
|
|
68
72
|
const visible = [];
|
|
69
|
-
if (this.isPrerequisiteMissing
|
|
73
|
+
if (this.isPrerequisiteMissing) {
|
|
70
74
|
// Use stored state if available, otherwise default to true
|
|
71
75
|
const expanded = this.sectionExpandedState.has('prerequisite')
|
|
72
76
|
? this.sectionExpandedState.get('prerequisite')
|
|
@@ -75,12 +79,12 @@ export class InsightCardComponent {
|
|
|
75
79
|
id: 'prerequisite',
|
|
76
80
|
title: 'Prerequisite Missing',
|
|
77
81
|
variant: 'warning',
|
|
78
|
-
reason: this.prerequisiteSection,
|
|
82
|
+
reason: this.prerequisiteSection || 'Prerequisite data is missing.',
|
|
79
83
|
actionButtonLabel: 'Attach Prerequisites',
|
|
80
84
|
expanded: expanded,
|
|
81
85
|
});
|
|
82
86
|
}
|
|
83
|
-
if (this.isTestDataMissing
|
|
87
|
+
if (this.isTestDataMissing) {
|
|
84
88
|
// Use stored state if available, otherwise default to true
|
|
85
89
|
const expanded = this.sectionExpandedState.has('test-data')
|
|
86
90
|
? this.sectionExpandedState.get('test-data')
|
|
@@ -89,7 +93,7 @@ export class InsightCardComponent {
|
|
|
89
93
|
id: 'test-data',
|
|
90
94
|
title: 'Test Data Missing',
|
|
91
95
|
variant: 'error',
|
|
92
|
-
reason: this.testDataSection,
|
|
96
|
+
reason: this.testDataSection || 'Test data is missing.',
|
|
93
97
|
actionButtonLabel: 'Import Test Data',
|
|
94
98
|
expanded: expanded,
|
|
95
99
|
});
|
|
@@ -163,14 +167,16 @@ export class InsightCardComponent {
|
|
|
163
167
|
}
|
|
164
168
|
}
|
|
165
169
|
InsightCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: InsightCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
166
|
-
InsightCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: InsightCardComponent, selector: "cqa-insight-card", inputs: { title: "title", description: "description", badges: "badges", metadata: "metadata", prerequisiteSection: "prerequisiteSection", testDataSection: "testDataSection", metadataExpanded: "metadataExpanded", isPrerequisiteMissing: "isPrerequisiteMissing", isTestDataMissing: "isTestDataMissing" }, outputs: { metadataToggle: "metadataToggle", sectionToggle: "sectionToggle", sectionActionClick: "sectionActionClick", onApplySuggestionClick: "onApplySuggestionClick", onAttachPrerequisitesClick: "onAttachPrerequisitesClick", onImportTestDataClick: "onImportTestDataClick" }, ngImport: i0, template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-font-inter cqa-flex cqa-flex-col cqa-gap-4 cqa-px-[21px] cqa-py-3 cqa-border cqa-border-solid cqa-border-[#ECECEC] cqa-rounded-xl cqa-shadow-card\">\n <!-- Section 1: Badges -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-py-[1.5]\" *ngIf=\"visibleBadges.length > 0\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.4866 12.0005L9.15329 2.66714C9.037 2.46194 8.86836 2.29127 8.66457 2.17252C8.46078 2.05378 8.22915 1.99121 7.99329 1.99121C7.75743 1.99121 7.52579 2.05378 7.322 2.17252C7.11822 2.29127 6.94958 2.46194 6.83329 2.66714L1.49995 12.0005C1.38241 12.204 1.32077 12.4351 1.32129 12.6701C1.32181 12.9052 1.38447 13.136 1.50292 13.339C1.62136 13.5421 1.79138 13.7102 1.99575 13.8264C2.20011 13.9425 2.43156 14.0026 2.66662 14.0005H13.3333C13.5672 14.0002 13.797 13.9385 13.9995 13.8213C14.202 13.7042 14.3701 13.5359 14.487 13.3332C14.6038 13.1306 14.6653 12.9007 14.6653 12.6668C14.6652 12.4329 14.6036 12.2031 14.4866 12.0005Z\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 6V8.66667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 11.333H8.00667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <cqa-badge \n *ngFor=\"let badge of visibleBadges\" \n [label]=\"badge.label\"\n [icon]=\"badge.icon\"\n [variant]=\"badge.variant || 'default'\"\n ></cqa-badge>\n </div>\n </div>\n\n <!-- Section 2: Title & Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-font-medium cqa-text-lg cqa-leading-[22px] cqa-text-title\">\n {{ title }}\n </h2>\n <p class=\"cqa-text-base cqa-font-normal cqa-text-description\">\n {{ description }}\n </p>\n </div>\n\n <!-- Section 3: Metadata Section (always visible) -->\n <div *ngIf=\"metadata\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div class=\"cqa-bg-surface-default cqa-rounded-[10px] cqa-px-4 cqa-py-3 cqa-border-t cqa-border-solid cqa-border-t-primary-surface\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-items-center cqa-gap-[25px]\">\n <ng-container *ngFor=\"let item of metadata | keyvalue; let last = last\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-[6px]\">\n <span class=\"cqa-text-xs cqa-font-normal cqa-font-inter cqa-text-metadata-key\">\n {{ item.key }}:\n </span>\n <span \n [ngClass]=\"getMetadataValueClasses(item.key, item.value)\" \n [ngStyle]=\"getMetadataValueStyle(item.key, item.value)\"\n class=\"cqa-font-normal cqa-leading-[18px] cqa-font-inter cqa-text-sm cqa-text-title\">\n {{ getMetadataValue(item.value) }}\n </span>\n </div>\n <div *ngIf=\"!last\" class=\"cqa-h-4 cqa-w-px cqa-bg-gray-200\"></div>\n </ng-container>\n </div>\n </div>\n\n <!-- Section 4: Metadata toggle -->\n <button *ngIf=\"metadata && (isPrerequisiteMissing || isTestDataMissing)\" type=\"button\"\n class=\"cqa-text-sm cqa-text-primary cqa-inline-flex cqa-font-inter cqa-items-center cqa-gap-[6px]\"\n (click)=\"toggleMetadata()\">\n <span>{{ metadataExpanded ? 'Hide details' : 'Show details' }}</span>\n <mat-icon class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px]\">\n {{ metadataExpanded ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n\n <!-- Section 5: Sections (toggle visibility) -->\n <div *ngIf=\"metadataExpanded && visibleSections?.length\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div\n *ngFor=\"let section of visibleSections\"\n class=\"cqa-border-l-4 cqa-border-solid cqa-rounded-[10px] cqa-overflow-hidden\"\n [ngClass]=\"getSectionBorderClass(section)\"\n >\n <div class=\"cqa-p-[10px] cqa-pl-[20px] cqa-flex cqa-flex-col cqa-gap-3\">\n <!-- Section Title with Inline Collapse Button -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <h3 [ngClass]=\"getSectionTitleClasses(section)\" class=\"\">\n {{ section.title }}\n </h3>\n <button\n type=\"button\"\n class=\"cqa-ml-auto cqa-inline-flex cqa-cursor-pointer cqa-outline-none cqa-bg-transparent cqa-border-none cqa-p-1 cqa-items-center cqa-justify-center cqa-min-w-[24px] cqa-min-h-[24px]\"\n (click)=\"toggleSection(section); $event.stopPropagation()\"\n [attr.aria-label]=\"section.expanded !== false ? 'Collapse section' : 'Expand section'\"\n >\n <mat-icon [ngClass]=\"getSectionIconColor(section)\" class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px] cqa-pointer-events-none\">\n {{ section.expanded !== false ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n </div>\n\n <!-- Collapsible Content: Reason and Action Button -->\n <div *ngIf=\"section.expanded !== false\" class=\"cqa-flex cqa-flex-col cqa-gap-[10px]\">\n <!-- Reason -->\n <p class=\"cqa-text-sm cqa-font-normal cqa-leading-[18px] cqa-text-neutral-600\">\n Reason: {{ section.reason }}\n </p>\n \n <!-- Action Button -->\n <div>\n <cqa-button\n variant=\"outlined\"\n (clicked)=\"onSectionAction(section.id)\"\n [customClass]=\"'cqa-py-[9px] cqa-text-[14px] cqa-leading-[17px] cqa-border-slate cqa-text-slate'\"\n >\n {{ section.actionButtonLabel }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <cqa-button\n variant=\"filled\"\n (clicked)=\"onMainAction()\"\n [disabled]=\"isApplying\"\n [customClass]=\"'!cqa-w-full !cqa-text-[14px] !cqa-leading-[20px] !cqa-font-semibold'\"\n >\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.01882 0C9.12979 0.0454767 9.17718 0.15653 9.22261 0.259691C9.24539 0.319799 9.26628 0.380234 9.28657 0.44115C9.29452 0.464493 9.30246 0.487836 9.31065 0.511886C9.41613 0.826009 9.51008 1.1435 9.60457 1.46076C9.62593 1.53238 9.64739 1.60397 9.66885 1.67557C9.7781 2.04007 9.88654 2.4048 9.99438 2.76969C10.0095 2.82093 10.0247 2.87218 10.0398 2.92342C10.0826 3.0679 10.1252 3.21239 10.1677 3.35694C10.2573 3.66239 10.3495 3.96695 10.4476 4.27002C10.4561 4.29653 10.4647 4.32305 10.4735 4.35036C10.7284 5.12999 11.0896 5.82875 11.6818 6.42393C11.6965 6.4394 11.7111 6.45488 11.7262 6.47083C11.979 6.72875 12.3034 6.93541 12.6276 7.10221C12.6441 7.11085 12.6606 7.11948 12.6776 7.12838C13.6317 7.61851 14.779 7.83407 15.8124 8.12101C16.2652 8.24681 16.7166 8.37658 17.1663 8.51206C17.1979 8.52157 17.2296 8.53107 17.2612 8.54055C17.3557 8.5689 17.45 8.59774 17.5442 8.62694C17.5662 8.63358 17.5882 8.64023 17.6108 8.64707C17.7406 8.68812 17.8648 8.73658 17.9713 8.82054C18.0038 8.88837 18.0038 8.88837 17.995 8.95619C17.8913 9.05472 17.7884 9.10092 17.6516 9.14599C17.632 9.15264 17.6124 9.1593 17.5923 9.16615C17.3612 9.24366 17.127 9.31149 16.8925 9.37871C16.8444 9.39261 16.7963 9.40651 16.7482 9.42042C16.4514 9.50603 16.1542 9.5898 15.8566 9.67263C15.4646 9.78175 15.0733 9.89268 14.6823 10.0049C14.6182 10.0232 14.5541 10.0416 14.49 10.0598C14.1534 10.1557 13.8185 10.2551 13.4863 10.3642C13.4587 10.3732 13.4312 10.3822 13.4028 10.3915C12.2902 10.7616 11.4422 11.4522 10.9114 12.462C10.6253 13.0295 10.4565 13.6432 10.2843 14.2489C10.2377 14.4124 10.1882 14.5749 10.1381 14.7374C10.0988 14.8652 10.0604 14.9933 10.023 15.1216C10.0185 15.1369 10.0141 15.1522 10.0095 15.1679C9.98788 15.2419 9.96638 15.3159 9.94503 15.3899C9.89039 15.5776 9.83156 15.7637 9.77111 15.9498C9.66383 16.2804 9.5662 16.6135 9.46917 16.947C9.32288 17.4491 9.32288 17.4491 9.23993 17.6905C9.23443 17.7067 9.22893 17.7229 9.22326 17.7396C9.19298 17.8256 9.16183 17.9047 9.10453 17.9774C9.01734 17.9958 9.01734 17.9958 8.93901 18C8.84946 17.8752 8.79016 17.7542 8.74265 17.6102C8.73574 17.5897 8.72882 17.5693 8.7217 17.5483C8.63368 17.285 8.55502 17.0189 8.47634 16.7529C8.45832 16.6921 8.44022 16.6313 8.42211 16.5705C8.2872 16.1173 8.15451 15.6635 8.02202 15.2096C7.47014 12.9645 7.47014 12.9645 6.078 11.1493C6.05569 11.1319 6.03338 11.1145 6.01039 11.0966C5.09826 10.398 3.89667 10.1394 2.7963 9.83627C2.52415 9.76124 2.2521 9.68587 1.98006 9.61046C1.95628 9.60386 1.95628 9.60386 1.93201 9.59714C1.53962 9.48834 1.14735 9.37925 0.756448 9.26566C0.739911 9.26089 0.723375 9.25612 0.706338 9.25121C0.105798 9.07767 0.105798 9.07767 0.00129307 8.95619C-0.00166252 8.90108 -0.00166252 8.90108 0.0249378 8.84315C0.134167 8.7408 0.240153 8.69696 0.38432 8.65238C0.405194 8.64567 0.426068 8.63897 0.447574 8.63206C0.511506 8.61164 0.575577 8.59169 0.639702 8.57183C0.658001 8.56609 0.676301 8.56035 0.695155 8.55443C0.82457 8.51385 0.95445 8.47479 1.08452 8.43618C1.11648 8.42665 1.11648 8.42665 1.14909 8.41693C1.70454 8.25174 2.26361 8.09801 2.82252 7.94392C3.23899 7.82909 3.65476 7.71236 4.06921 7.59097C4.08825 7.58542 4.1073 7.57987 4.12692 7.57415C5.087 7.29393 6.02557 6.89632 6.64547 6.1074C6.65475 6.09569 6.66403 6.08399 6.6736 6.07194C7.36395 5.1963 7.63315 4.13145 7.93391 3.09241C8.03285 2.75069 8.13298 2.40929 8.23345 2.06798C8.26127 1.97347 8.28906 1.87894 8.31673 1.78439C8.42788 1.40458 8.5407 1.02528 8.66 0.647727C8.67116 0.612372 8.68227 0.577001 8.69333 0.541614C8.86035 0.00797522 8.86035 0.00797522 9.01882 0Z\" fill=\"#FBFCFF\"/><path d=\"M14.4719 1.11069C14.5805 1.22817 14.6022 1.36624 14.636 1.51625C14.7487 1.98751 14.8786 2.42084 15.3293 2.6946C15.6074 2.84167 15.9389 2.90859 16.247 2.9718C16.3771 2.99902 16.4869 3.03515 16.5985 3.1074C16.6236 3.14555 16.6236 3.14555 16.6221 3.21197C16.5963 3.29273 16.5736 3.31878 16.5054 3.37165C16.4308 3.39549 16.4308 3.39549 16.3413 3.41404C16.3075 3.42147 16.2736 3.42898 16.2398 3.43656C16.2217 3.44058 16.2036 3.4446 16.1849 3.44874C15.6339 3.57062 15.6339 3.57062 15.1576 3.84645C15.1421 3.85837 15.1267 3.87029 15.1107 3.88257C14.7703 4.16959 14.6983 4.64703 14.5958 5.04699C14.59 5.06896 14.5841 5.09092 14.578 5.11355C14.573 5.133 14.5679 5.15244 14.5627 5.17248C14.5405 5.23185 14.5176 5.27057 14.4719 5.31607C14.3447 5.33152 14.3447 5.33152 14.2828 5.31607C14.1843 5.24309 14.1623 5.15997 14.1366 5.04828C14.1322 5.03099 14.1279 5.01369 14.1235 4.99587C14.1098 4.94064 14.0965 4.88531 14.0833 4.82996C13.9796 4.39891 13.8625 3.976 13.449 3.72333C13.1258 3.55101 12.7329 3.46951 12.3717 3.4037C12.2727 3.38399 12.216 3.3592 12.1547 3.28121C12.1414 3.20208 12.1414 3.20208 12.1547 3.12294C12.2489 3.02971 12.348 3.00696 12.4754 2.97881C12.5156 2.9693 12.5557 2.95973 12.5958 2.9501C12.6165 2.94516 12.6372 2.94022 12.6586 2.93512C12.7642 2.90911 12.8689 2.87995 12.9734 2.85021C12.9924 2.84494 13.0114 2.83967 13.031 2.83424C13.2436 2.77346 13.4271 2.69571 13.5971 2.5577C13.6129 2.54523 13.6288 2.53276 13.6451 2.5199C13.9096 2.29228 13.9995 1.95032 14.081 1.63124C14.0873 1.60702 14.0935 1.5828 14.0999 1.55784C14.1123 1.50918 14.1244 1.46046 14.1363 1.4117C14.1449 1.37776 14.1449 1.37776 14.1535 1.34315C14.1585 1.32288 14.1635 1.30261 14.1686 1.28172C14.1904 1.21719 14.219 1.16652 14.2591 1.11069C14.3362 1.07385 14.3903 1.0905 14.4719 1.11069Z\" fill=\"#FBFCFF\"/><path d=\"M3.59089 12.4942C3.61902 12.4944 3.61902 12.4944 3.64772 12.4946C3.84954 12.5004 3.98609 12.5623 4.13472 12.692C4.30767 12.8707 4.38753 13.0722 4.38299 13.313C4.36357 13.5082 4.24316 13.6787 4.09547 13.8107C3.92163 13.9448 3.74626 13.9892 3.52411 13.983C3.33681 13.9621 3.1606 13.877 3.02785 13.749C2.86276 13.5336 2.8145 13.3361 2.83869 13.0707C2.88867 12.8618 3.03274 12.6923 3.21701 12.5733C3.34502 12.5113 3.44798 12.493 3.59089 12.4942Z\" fill=\"#FBFCFF\"/></svg>\n {{ isApplying ? 'Applying suggestion' : 'Apply suggestion' }}\n </cqa-button>\n </div>\n</div>\n \n", components: [{ type: i1.BadgeComponent, selector: "cqa-badge", inputs: ["label", "icon", "variant", "backgroundColor", "textColor", "iconBackgroundColor", "iconColor"] }, { type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.ButtonComponent, selector: "cqa-button", inputs: ["variant", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass"], outputs: ["clicked"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "keyvalue": i4.KeyValuePipe } });
|
|
170
|
+
InsightCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: InsightCardComponent, selector: "cqa-insight-card", inputs: { title: "title", description: "description", showAiSuggestionButton: "showAiSuggestionButton", badges: "badges", metadata: "metadata", prerequisiteSection: "prerequisiteSection", testDataSection: "testDataSection", metadataExpanded: "metadataExpanded", isPrerequisiteMissing: "isPrerequisiteMissing", isTestDataMissing: "isTestDataMissing" }, outputs: { metadataToggle: "metadataToggle", sectionToggle: "sectionToggle", sectionActionClick: "sectionActionClick", onApplySuggestionClick: "onApplySuggestionClick", onAttachPrerequisitesClick: "onAttachPrerequisitesClick", onImportTestDataClick: "onImportTestDataClick" }, ngImport: i0, template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-font-inter cqa-flex cqa-flex-col cqa-gap-4 cqa-px-[21px] cqa-py-3 cqa-border cqa-border-solid cqa-border-[#ECECEC] cqa-rounded-xl cqa-shadow-card\">\n <!-- Section 1: Badges -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-py-[1.5]\" *ngIf=\"visibleBadges.length > 0\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.4866 12.0005L9.15329 2.66714C9.037 2.46194 8.86836 2.29127 8.66457 2.17252C8.46078 2.05378 8.22915 1.99121 7.99329 1.99121C7.75743 1.99121 7.52579 2.05378 7.322 2.17252C7.11822 2.29127 6.94958 2.46194 6.83329 2.66714L1.49995 12.0005C1.38241 12.204 1.32077 12.4351 1.32129 12.6701C1.32181 12.9052 1.38447 13.136 1.50292 13.339C1.62136 13.5421 1.79138 13.7102 1.99575 13.8264C2.20011 13.9425 2.43156 14.0026 2.66662 14.0005H13.3333C13.5672 14.0002 13.797 13.9385 13.9995 13.8213C14.202 13.7042 14.3701 13.5359 14.487 13.3332C14.6038 13.1306 14.6653 12.9007 14.6653 12.6668C14.6652 12.4329 14.6036 12.2031 14.4866 12.0005Z\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 6V8.66667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 11.333H8.00667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <cqa-badge \n *ngFor=\"let badge of visibleBadges\" \n [label]=\"badge.label\"\n [icon]=\"badge.icon\"\n [variant]=\"badge.variant || 'default'\"\n ></cqa-badge>\n </div>\n </div>\n\n <!-- Section 2: Title & Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-font-medium cqa-text-lg cqa-leading-[22px] cqa-text-title\">\n {{ title }}\n </h2>\n <p class=\"cqa-text-base cqa-font-normal cqa-text-description\">\n {{ description }}\n </p>\n </div>\n\n <!-- Section 3: Metadata Section (always visible) -->\n <div *ngIf=\"metadata\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div class=\"cqa-bg-surface-default cqa-rounded-[10px] cqa-px-4 cqa-py-3 cqa-border-t cqa-border-solid cqa-border-t-primary-surface\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-items-center cqa-gap-[25px]\">\n <ng-container *ngFor=\"let item of metadata | keyvalue; let last = last\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-[6px]\">\n <span class=\"cqa-text-xs cqa-font-normal cqa-font-inter cqa-text-metadata-key\">\n {{ item.key }}:\n </span>\n <span \n [ngClass]=\"getMetadataValueClasses(item.key, item.value)\" \n [ngStyle]=\"getMetadataValueStyle(item.key, item.value)\"\n class=\"cqa-font-normal cqa-leading-[18px] cqa-font-inter cqa-text-sm cqa-text-title\">\n {{ getMetadataValue(item.value) }}\n </span>\n </div>\n <div *ngIf=\"!last\" class=\"cqa-h-4 cqa-w-px cqa-bg-gray-200\"></div>\n </ng-container>\n </div>\n </div>\n\n <!-- Section 4: Metadata toggle -->\n <button *ngIf=\"metadata && (isPrerequisiteMissing || isTestDataMissing)\" type=\"button\"\n class=\"cqa-text-sm cqa-text-primary cqa-inline-flex cqa-font-inter cqa-items-center cqa-gap-[6px]\"\n (click)=\"toggleMetadata()\">\n <span>{{ metadataExpanded ? 'Hide details' : 'Show details' }}</span>\n <mat-icon class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px]\">\n {{ metadataExpanded ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n\n <!-- Section 5: Sections (toggle visibility) -->\n <div *ngIf=\"metadataExpanded && visibleSections?.length\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div\n *ngFor=\"let section of visibleSections\"\n class=\"cqa-border-l-4 cqa-border-solid cqa-rounded-[10px] cqa-overflow-hidden\"\n [ngClass]=\"getSectionBorderClass(section)\"\n >\n <div class=\"cqa-p-[10px] cqa-pl-[20px] cqa-flex cqa-flex-col cqa-gap-3\">\n <!-- Section Title with Inline Collapse Button -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <h3 [ngClass]=\"getSectionTitleClasses(section)\" class=\"\">\n {{ section.title }}\n </h3>\n <button\n type=\"button\"\n class=\"cqa-ml-auto cqa-inline-flex cqa-cursor-pointer cqa-outline-none cqa-bg-transparent cqa-border-none cqa-p-1 cqa-items-center cqa-justify-center cqa-min-w-[24px] cqa-min-h-[24px]\"\n (click)=\"toggleSection(section); $event.stopPropagation()\"\n [attr.aria-label]=\"section.expanded !== false ? 'Collapse section' : 'Expand section'\"\n >\n <mat-icon [ngClass]=\"getSectionIconColor(section)\" class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px] cqa-pointer-events-none\">\n {{ section.expanded !== false ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n </div>\n\n <!-- Collapsible Content: Reason and Action Button -->\n <div *ngIf=\"section.expanded !== false\" class=\"cqa-flex cqa-flex-col cqa-gap-[10px]\">\n <!-- Reason -->\n <p class=\"cqa-text-sm cqa-font-normal cqa-leading-[18px] cqa-text-neutral-600\">\n Reason: {{ section.reason }}\n </p>\n \n <!-- Action Button -->\n <div>\n <cqa-button\n variant=\"outlined\"\n (clicked)=\"onSectionAction(section.id)\"\n [customClass]=\"'cqa-py-[9px] cqa-text-[14px] cqa-leading-[17px] cqa-border-slate cqa-text-slate cqa-transition cqa-duration-150 cqa-ease-in-out cqa-hover:cqa-border-primary cqa-hover:cqa-text-primary cqa-hover:cqa-bg-primary-surface'\"\n >\n {{ section.actionButtonLabel }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <cqa-button\n *ngIf=\"showAiSuggestionButton\"\n variant=\"filled\"\n (clicked)=\"onMainAction()\"\n [disabled]=\"isApplying\"\n [customClass]=\"'!cqa-w-full !cqa-text-[14px] !cqa-leading-[20px] !cqa-font-semibold'\"\n >\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.01882 0C9.12979 0.0454767 9.17718 0.15653 9.22261 0.259691C9.24539 0.319799 9.26628 0.380234 9.28657 0.44115C9.29452 0.464493 9.30246 0.487836 9.31065 0.511886C9.41613 0.826009 9.51008 1.1435 9.60457 1.46076C9.62593 1.53238 9.64739 1.60397 9.66885 1.67557C9.7781 2.04007 9.88654 2.4048 9.99438 2.76969C10.0095 2.82093 10.0247 2.87218 10.0398 2.92342C10.0826 3.0679 10.1252 3.21239 10.1677 3.35694C10.2573 3.66239 10.3495 3.96695 10.4476 4.27002C10.4561 4.29653 10.4647 4.32305 10.4735 4.35036C10.7284 5.12999 11.0896 5.82875 11.6818 6.42393C11.6965 6.4394 11.7111 6.45488 11.7262 6.47083C11.979 6.72875 12.3034 6.93541 12.6276 7.10221C12.6441 7.11085 12.6606 7.11948 12.6776 7.12838C13.6317 7.61851 14.779 7.83407 15.8124 8.12101C16.2652 8.24681 16.7166 8.37658 17.1663 8.51206C17.1979 8.52157 17.2296 8.53107 17.2612 8.54055C17.3557 8.5689 17.45 8.59774 17.5442 8.62694C17.5662 8.63358 17.5882 8.64023 17.6108 8.64707C17.7406 8.68812 17.8648 8.73658 17.9713 8.82054C18.0038 8.88837 18.0038 8.88837 17.995 8.95619C17.8913 9.05472 17.7884 9.10092 17.6516 9.14599C17.632 9.15264 17.6124 9.1593 17.5923 9.16615C17.3612 9.24366 17.127 9.31149 16.8925 9.37871C16.8444 9.39261 16.7963 9.40651 16.7482 9.42042C16.4514 9.50603 16.1542 9.5898 15.8566 9.67263C15.4646 9.78175 15.0733 9.89268 14.6823 10.0049C14.6182 10.0232 14.5541 10.0416 14.49 10.0598C14.1534 10.1557 13.8185 10.2551 13.4863 10.3642C13.4587 10.3732 13.4312 10.3822 13.4028 10.3915C12.2902 10.7616 11.4422 11.4522 10.9114 12.462C10.6253 13.0295 10.4565 13.6432 10.2843 14.2489C10.2377 14.4124 10.1882 14.5749 10.1381 14.7374C10.0988 14.8652 10.0604 14.9933 10.023 15.1216C10.0185 15.1369 10.0141 15.1522 10.0095 15.1679C9.98788 15.2419 9.96638 15.3159 9.94503 15.3899C9.89039 15.5776 9.83156 15.7637 9.77111 15.9498C9.66383 16.2804 9.5662 16.6135 9.46917 16.947C9.32288 17.4491 9.32288 17.4491 9.23993 17.6905C9.23443 17.7067 9.22893 17.7229 9.22326 17.7396C9.19298 17.8256 9.16183 17.9047 9.10453 17.9774C9.01734 17.9958 9.01734 17.9958 8.93901 18C8.84946 17.8752 8.79016 17.7542 8.74265 17.6102C8.73574 17.5897 8.72882 17.5693 8.7217 17.5483C8.63368 17.285 8.55502 17.0189 8.47634 16.7529C8.45832 16.6921 8.44022 16.6313 8.42211 16.5705C8.2872 16.1173 8.15451 15.6635 8.02202 15.2096C7.47014 12.9645 7.47014 12.9645 6.078 11.1493C6.05569 11.1319 6.03338 11.1145 6.01039 11.0966C5.09826 10.398 3.89667 10.1394 2.7963 9.83627C2.52415 9.76124 2.2521 9.68587 1.98006 9.61046C1.95628 9.60386 1.95628 9.60386 1.93201 9.59714C1.53962 9.48834 1.14735 9.37925 0.756448 9.26566C0.739911 9.26089 0.723375 9.25612 0.706338 9.25121C0.105798 9.07767 0.105798 9.07767 0.00129307 8.95619C-0.00166252 8.90108 -0.00166252 8.90108 0.0249378 8.84315C0.134167 8.7408 0.240153 8.69696 0.38432 8.65238C0.405194 8.64567 0.426068 8.63897 0.447574 8.63206C0.511506 8.61164 0.575577 8.59169 0.639702 8.57183C0.658001 8.56609 0.676301 8.56035 0.695155 8.55443C0.82457 8.51385 0.95445 8.47479 1.08452 8.43618C1.11648 8.42665 1.11648 8.42665 1.14909 8.41693C1.70454 8.25174 2.26361 8.09801 2.82252 7.94392C3.23899 7.82909 3.65476 7.71236 4.06921 7.59097C4.08825 7.58542 4.1073 7.57987 4.12692 7.57415C5.087 7.29393 6.02557 6.89632 6.64547 6.1074C6.65475 6.09569 6.66403 6.08399 6.6736 6.07194C7.36395 5.1963 7.63315 4.13145 7.93391 3.09241C8.03285 2.75069 8.13298 2.40929 8.23345 2.06798C8.26127 1.97347 8.28906 1.87894 8.31673 1.78439C8.42788 1.40458 8.5407 1.02528 8.66 0.647727C8.67116 0.612372 8.68227 0.577001 8.69333 0.541614C8.86035 0.00797522 8.86035 0.00797522 9.01882 0Z\" fill=\"#FBFCFF\"/><path d=\"M14.4719 1.11069C14.5805 1.22817 14.6022 1.36624 14.636 1.51625C14.7487 1.98751 14.8786 2.42084 15.3293 2.6946C15.6074 2.84167 15.9389 2.90859 16.247 2.9718C16.3771 2.99902 16.4869 3.03515 16.5985 3.1074C16.6236 3.14555 16.6236 3.14555 16.6221 3.21197C16.5963 3.29273 16.5736 3.31878 16.5054 3.37165C16.4308 3.39549 16.4308 3.39549 16.3413 3.41404C16.3075 3.42147 16.2736 3.42898 16.2398 3.43656C16.2217 3.44058 16.2036 3.4446 16.1849 3.44874C15.6339 3.57062 15.6339 3.57062 15.1576 3.84645C15.1421 3.85837 15.1267 3.87029 15.1107 3.88257C14.7703 4.16959 14.6983 4.64703 14.5958 5.04699C14.59 5.06896 14.5841 5.09092 14.578 5.11355C14.573 5.133 14.5679 5.15244 14.5627 5.17248C14.5405 5.23185 14.5176 5.27057 14.4719 5.31607C14.3447 5.33152 14.3447 5.33152 14.2828 5.31607C14.1843 5.24309 14.1623 5.15997 14.1366 5.04828C14.1322 5.03099 14.1279 5.01369 14.1235 4.99587C14.1098 4.94064 14.0965 4.88531 14.0833 4.82996C13.9796 4.39891 13.8625 3.976 13.449 3.72333C13.1258 3.55101 12.7329 3.46951 12.3717 3.4037C12.2727 3.38399 12.216 3.3592 12.1547 3.28121C12.1414 3.20208 12.1414 3.20208 12.1547 3.12294C12.2489 3.02971 12.348 3.00696 12.4754 2.97881C12.5156 2.9693 12.5557 2.95973 12.5958 2.9501C12.6165 2.94516 12.6372 2.94022 12.6586 2.93512C12.7642 2.90911 12.8689 2.87995 12.9734 2.85021C12.9924 2.84494 13.0114 2.83967 13.031 2.83424C13.2436 2.77346 13.4271 2.69571 13.5971 2.5577C13.6129 2.54523 13.6288 2.53276 13.6451 2.5199C13.9096 2.29228 13.9995 1.95032 14.081 1.63124C14.0873 1.60702 14.0935 1.5828 14.0999 1.55784C14.1123 1.50918 14.1244 1.46046 14.1363 1.4117C14.1449 1.37776 14.1449 1.37776 14.1535 1.34315C14.1585 1.32288 14.1635 1.30261 14.1686 1.28172C14.1904 1.21719 14.219 1.16652 14.2591 1.11069C14.3362 1.07385 14.3903 1.0905 14.4719 1.11069Z\" fill=\"#FBFCFF\"/><path d=\"M3.59089 12.4942C3.61902 12.4944 3.61902 12.4944 3.64772 12.4946C3.84954 12.5004 3.98609 12.5623 4.13472 12.692C4.30767 12.8707 4.38753 13.0722 4.38299 13.313C4.36357 13.5082 4.24316 13.6787 4.09547 13.8107C3.92163 13.9448 3.74626 13.9892 3.52411 13.983C3.33681 13.9621 3.1606 13.877 3.02785 13.749C2.86276 13.5336 2.8145 13.3361 2.83869 13.0707C2.88867 12.8618 3.03274 12.6923 3.21701 12.5733C3.34502 12.5113 3.44798 12.493 3.59089 12.4942Z\" fill=\"#FBFCFF\"/></svg>\n {{ isApplying ? 'Applying suggestion' : 'Apply suggestion' }}\n </cqa-button>\n </div>\n</div>\n \n", components: [{ type: i1.BadgeComponent, selector: "cqa-badge", inputs: ["label", "icon", "variant", "size", "backgroundColor", "textColor", "iconBackgroundColor", "iconColor"] }, { type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.ButtonComponent, selector: "cqa-button", inputs: ["variant", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass"], outputs: ["clicked"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "keyvalue": i4.KeyValuePipe } });
|
|
167
171
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: InsightCardComponent, decorators: [{
|
|
168
172
|
type: Component,
|
|
169
|
-
args: [{ selector: 'cqa-insight-card', template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-font-inter cqa-flex cqa-flex-col cqa-gap-4 cqa-px-[21px] cqa-py-3 cqa-border cqa-border-solid cqa-border-[#ECECEC] cqa-rounded-xl cqa-shadow-card\">\n <!-- Section 1: Badges -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-py-[1.5]\" *ngIf=\"visibleBadges.length > 0\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.4866 12.0005L9.15329 2.66714C9.037 2.46194 8.86836 2.29127 8.66457 2.17252C8.46078 2.05378 8.22915 1.99121 7.99329 1.99121C7.75743 1.99121 7.52579 2.05378 7.322 2.17252C7.11822 2.29127 6.94958 2.46194 6.83329 2.66714L1.49995 12.0005C1.38241 12.204 1.32077 12.4351 1.32129 12.6701C1.32181 12.9052 1.38447 13.136 1.50292 13.339C1.62136 13.5421 1.79138 13.7102 1.99575 13.8264C2.20011 13.9425 2.43156 14.0026 2.66662 14.0005H13.3333C13.5672 14.0002 13.797 13.9385 13.9995 13.8213C14.202 13.7042 14.3701 13.5359 14.487 13.3332C14.6038 13.1306 14.6653 12.9007 14.6653 12.6668C14.6652 12.4329 14.6036 12.2031 14.4866 12.0005Z\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 6V8.66667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 11.333H8.00667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <cqa-badge \n *ngFor=\"let badge of visibleBadges\" \n [label]=\"badge.label\"\n [icon]=\"badge.icon\"\n [variant]=\"badge.variant || 'default'\"\n ></cqa-badge>\n </div>\n </div>\n\n <!-- Section 2: Title & Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-font-medium cqa-text-lg cqa-leading-[22px] cqa-text-title\">\n {{ title }}\n </h2>\n <p class=\"cqa-text-base cqa-font-normal cqa-text-description\">\n {{ description }}\n </p>\n </div>\n\n <!-- Section 3: Metadata Section (always visible) -->\n <div *ngIf=\"metadata\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div class=\"cqa-bg-surface-default cqa-rounded-[10px] cqa-px-4 cqa-py-3 cqa-border-t cqa-border-solid cqa-border-t-primary-surface\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-items-center cqa-gap-[25px]\">\n <ng-container *ngFor=\"let item of metadata | keyvalue; let last = last\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-[6px]\">\n <span class=\"cqa-text-xs cqa-font-normal cqa-font-inter cqa-text-metadata-key\">\n {{ item.key }}:\n </span>\n <span \n [ngClass]=\"getMetadataValueClasses(item.key, item.value)\" \n [ngStyle]=\"getMetadataValueStyle(item.key, item.value)\"\n class=\"cqa-font-normal cqa-leading-[18px] cqa-font-inter cqa-text-sm cqa-text-title\">\n {{ getMetadataValue(item.value) }}\n </span>\n </div>\n <div *ngIf=\"!last\" class=\"cqa-h-4 cqa-w-px cqa-bg-gray-200\"></div>\n </ng-container>\n </div>\n </div>\n\n <!-- Section 4: Metadata toggle -->\n <button *ngIf=\"metadata && (isPrerequisiteMissing || isTestDataMissing)\" type=\"button\"\n class=\"cqa-text-sm cqa-text-primary cqa-inline-flex cqa-font-inter cqa-items-center cqa-gap-[6px]\"\n (click)=\"toggleMetadata()\">\n <span>{{ metadataExpanded ? 'Hide details' : 'Show details' }}</span>\n <mat-icon class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px]\">\n {{ metadataExpanded ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n\n <!-- Section 5: Sections (toggle visibility) -->\n <div *ngIf=\"metadataExpanded && visibleSections?.length\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div\n *ngFor=\"let section of visibleSections\"\n class=\"cqa-border-l-4 cqa-border-solid cqa-rounded-[10px] cqa-overflow-hidden\"\n [ngClass]=\"getSectionBorderClass(section)\"\n >\n <div class=\"cqa-p-[10px] cqa-pl-[20px] cqa-flex cqa-flex-col cqa-gap-3\">\n <!-- Section Title with Inline Collapse Button -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <h3 [ngClass]=\"getSectionTitleClasses(section)\" class=\"\">\n {{ section.title }}\n </h3>\n <button\n type=\"button\"\n class=\"cqa-ml-auto cqa-inline-flex cqa-cursor-pointer cqa-outline-none cqa-bg-transparent cqa-border-none cqa-p-1 cqa-items-center cqa-justify-center cqa-min-w-[24px] cqa-min-h-[24px]\"\n (click)=\"toggleSection(section); $event.stopPropagation()\"\n [attr.aria-label]=\"section.expanded !== false ? 'Collapse section' : 'Expand section'\"\n >\n <mat-icon [ngClass]=\"getSectionIconColor(section)\" class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px] cqa-pointer-events-none\">\n {{ section.expanded !== false ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n </div>\n\n <!-- Collapsible Content: Reason and Action Button -->\n <div *ngIf=\"section.expanded !== false\" class=\"cqa-flex cqa-flex-col cqa-gap-[10px]\">\n <!-- Reason -->\n <p class=\"cqa-text-sm cqa-font-normal cqa-leading-[18px] cqa-text-neutral-600\">\n Reason: {{ section.reason }}\n </p>\n \n <!-- Action Button -->\n <div>\n <cqa-button\n variant=\"outlined\"\n (clicked)=\"onSectionAction(section.id)\"\n [customClass]=\"'cqa-py-[9px] cqa-text-[14px] cqa-leading-[17px] cqa-border-slate cqa-text-slate'\"\n >\n {{ section.actionButtonLabel }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <cqa-button\n variant=\"filled\"\n (clicked)=\"onMainAction()\"\n [disabled]=\"isApplying\"\n [customClass]=\"'!cqa-w-full !cqa-text-[14px] !cqa-leading-[20px] !cqa-font-semibold'\"\n >\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.01882 0C9.12979 0.0454767 9.17718 0.15653 9.22261 0.259691C9.24539 0.319799 9.26628 0.380234 9.28657 0.44115C9.29452 0.464493 9.30246 0.487836 9.31065 0.511886C9.41613 0.826009 9.51008 1.1435 9.60457 1.46076C9.62593 1.53238 9.64739 1.60397 9.66885 1.67557C9.7781 2.04007 9.88654 2.4048 9.99438 2.76969C10.0095 2.82093 10.0247 2.87218 10.0398 2.92342C10.0826 3.0679 10.1252 3.21239 10.1677 3.35694C10.2573 3.66239 10.3495 3.96695 10.4476 4.27002C10.4561 4.29653 10.4647 4.32305 10.4735 4.35036C10.7284 5.12999 11.0896 5.82875 11.6818 6.42393C11.6965 6.4394 11.7111 6.45488 11.7262 6.47083C11.979 6.72875 12.3034 6.93541 12.6276 7.10221C12.6441 7.11085 12.6606 7.11948 12.6776 7.12838C13.6317 7.61851 14.779 7.83407 15.8124 8.12101C16.2652 8.24681 16.7166 8.37658 17.1663 8.51206C17.1979 8.52157 17.2296 8.53107 17.2612 8.54055C17.3557 8.5689 17.45 8.59774 17.5442 8.62694C17.5662 8.63358 17.5882 8.64023 17.6108 8.64707C17.7406 8.68812 17.8648 8.73658 17.9713 8.82054C18.0038 8.88837 18.0038 8.88837 17.995 8.95619C17.8913 9.05472 17.7884 9.10092 17.6516 9.14599C17.632 9.15264 17.6124 9.1593 17.5923 9.16615C17.3612 9.24366 17.127 9.31149 16.8925 9.37871C16.8444 9.39261 16.7963 9.40651 16.7482 9.42042C16.4514 9.50603 16.1542 9.5898 15.8566 9.67263C15.4646 9.78175 15.0733 9.89268 14.6823 10.0049C14.6182 10.0232 14.5541 10.0416 14.49 10.0598C14.1534 10.1557 13.8185 10.2551 13.4863 10.3642C13.4587 10.3732 13.4312 10.3822 13.4028 10.3915C12.2902 10.7616 11.4422 11.4522 10.9114 12.462C10.6253 13.0295 10.4565 13.6432 10.2843 14.2489C10.2377 14.4124 10.1882 14.5749 10.1381 14.7374C10.0988 14.8652 10.0604 14.9933 10.023 15.1216C10.0185 15.1369 10.0141 15.1522 10.0095 15.1679C9.98788 15.2419 9.96638 15.3159 9.94503 15.3899C9.89039 15.5776 9.83156 15.7637 9.77111 15.9498C9.66383 16.2804 9.5662 16.6135 9.46917 16.947C9.32288 17.4491 9.32288 17.4491 9.23993 17.6905C9.23443 17.7067 9.22893 17.7229 9.22326 17.7396C9.19298 17.8256 9.16183 17.9047 9.10453 17.9774C9.01734 17.9958 9.01734 17.9958 8.93901 18C8.84946 17.8752 8.79016 17.7542 8.74265 17.6102C8.73574 17.5897 8.72882 17.5693 8.7217 17.5483C8.63368 17.285 8.55502 17.0189 8.47634 16.7529C8.45832 16.6921 8.44022 16.6313 8.42211 16.5705C8.2872 16.1173 8.15451 15.6635 8.02202 15.2096C7.47014 12.9645 7.47014 12.9645 6.078 11.1493C6.05569 11.1319 6.03338 11.1145 6.01039 11.0966C5.09826 10.398 3.89667 10.1394 2.7963 9.83627C2.52415 9.76124 2.2521 9.68587 1.98006 9.61046C1.95628 9.60386 1.95628 9.60386 1.93201 9.59714C1.53962 9.48834 1.14735 9.37925 0.756448 9.26566C0.739911 9.26089 0.723375 9.25612 0.706338 9.25121C0.105798 9.07767 0.105798 9.07767 0.00129307 8.95619C-0.00166252 8.90108 -0.00166252 8.90108 0.0249378 8.84315C0.134167 8.7408 0.240153 8.69696 0.38432 8.65238C0.405194 8.64567 0.426068 8.63897 0.447574 8.63206C0.511506 8.61164 0.575577 8.59169 0.639702 8.57183C0.658001 8.56609 0.676301 8.56035 0.695155 8.55443C0.82457 8.51385 0.95445 8.47479 1.08452 8.43618C1.11648 8.42665 1.11648 8.42665 1.14909 8.41693C1.70454 8.25174 2.26361 8.09801 2.82252 7.94392C3.23899 7.82909 3.65476 7.71236 4.06921 7.59097C4.08825 7.58542 4.1073 7.57987 4.12692 7.57415C5.087 7.29393 6.02557 6.89632 6.64547 6.1074C6.65475 6.09569 6.66403 6.08399 6.6736 6.07194C7.36395 5.1963 7.63315 4.13145 7.93391 3.09241C8.03285 2.75069 8.13298 2.40929 8.23345 2.06798C8.26127 1.97347 8.28906 1.87894 8.31673 1.78439C8.42788 1.40458 8.5407 1.02528 8.66 0.647727C8.67116 0.612372 8.68227 0.577001 8.69333 0.541614C8.86035 0.00797522 8.86035 0.00797522 9.01882 0Z\" fill=\"#FBFCFF\"/><path d=\"M14.4719 1.11069C14.5805 1.22817 14.6022 1.36624 14.636 1.51625C14.7487 1.98751 14.8786 2.42084 15.3293 2.6946C15.6074 2.84167 15.9389 2.90859 16.247 2.9718C16.3771 2.99902 16.4869 3.03515 16.5985 3.1074C16.6236 3.14555 16.6236 3.14555 16.6221 3.21197C16.5963 3.29273 16.5736 3.31878 16.5054 3.37165C16.4308 3.39549 16.4308 3.39549 16.3413 3.41404C16.3075 3.42147 16.2736 3.42898 16.2398 3.43656C16.2217 3.44058 16.2036 3.4446 16.1849 3.44874C15.6339 3.57062 15.6339 3.57062 15.1576 3.84645C15.1421 3.85837 15.1267 3.87029 15.1107 3.88257C14.7703 4.16959 14.6983 4.64703 14.5958 5.04699C14.59 5.06896 14.5841 5.09092 14.578 5.11355C14.573 5.133 14.5679 5.15244 14.5627 5.17248C14.5405 5.23185 14.5176 5.27057 14.4719 5.31607C14.3447 5.33152 14.3447 5.33152 14.2828 5.31607C14.1843 5.24309 14.1623 5.15997 14.1366 5.04828C14.1322 5.03099 14.1279 5.01369 14.1235 4.99587C14.1098 4.94064 14.0965 4.88531 14.0833 4.82996C13.9796 4.39891 13.8625 3.976 13.449 3.72333C13.1258 3.55101 12.7329 3.46951 12.3717 3.4037C12.2727 3.38399 12.216 3.3592 12.1547 3.28121C12.1414 3.20208 12.1414 3.20208 12.1547 3.12294C12.2489 3.02971 12.348 3.00696 12.4754 2.97881C12.5156 2.9693 12.5557 2.95973 12.5958 2.9501C12.6165 2.94516 12.6372 2.94022 12.6586 2.93512C12.7642 2.90911 12.8689 2.87995 12.9734 2.85021C12.9924 2.84494 13.0114 2.83967 13.031 2.83424C13.2436 2.77346 13.4271 2.69571 13.5971 2.5577C13.6129 2.54523 13.6288 2.53276 13.6451 2.5199C13.9096 2.29228 13.9995 1.95032 14.081 1.63124C14.0873 1.60702 14.0935 1.5828 14.0999 1.55784C14.1123 1.50918 14.1244 1.46046 14.1363 1.4117C14.1449 1.37776 14.1449 1.37776 14.1535 1.34315C14.1585 1.32288 14.1635 1.30261 14.1686 1.28172C14.1904 1.21719 14.219 1.16652 14.2591 1.11069C14.3362 1.07385 14.3903 1.0905 14.4719 1.11069Z\" fill=\"#FBFCFF\"/><path d=\"M3.59089 12.4942C3.61902 12.4944 3.61902 12.4944 3.64772 12.4946C3.84954 12.5004 3.98609 12.5623 4.13472 12.692C4.30767 12.8707 4.38753 13.0722 4.38299 13.313C4.36357 13.5082 4.24316 13.6787 4.09547 13.8107C3.92163 13.9448 3.74626 13.9892 3.52411 13.983C3.33681 13.9621 3.1606 13.877 3.02785 13.749C2.86276 13.5336 2.8145 13.3361 2.83869 13.0707C2.88867 12.8618 3.03274 12.6923 3.21701 12.5733C3.34502 12.5113 3.44798 12.493 3.59089 12.4942Z\" fill=\"#FBFCFF\"/></svg>\n {{ isApplying ? 'Applying suggestion' : 'Apply suggestion' }}\n </cqa-button>\n </div>\n</div>\n \n", styles: [] }]
|
|
173
|
+
args: [{ selector: 'cqa-insight-card', template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-font-inter cqa-flex cqa-flex-col cqa-gap-4 cqa-px-[21px] cqa-py-3 cqa-border cqa-border-solid cqa-border-[#ECECEC] cqa-rounded-xl cqa-shadow-card\">\n <!-- Section 1: Badges -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-py-[1.5]\" *ngIf=\"visibleBadges.length > 0\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.4866 12.0005L9.15329 2.66714C9.037 2.46194 8.86836 2.29127 8.66457 2.17252C8.46078 2.05378 8.22915 1.99121 7.99329 1.99121C7.75743 1.99121 7.52579 2.05378 7.322 2.17252C7.11822 2.29127 6.94958 2.46194 6.83329 2.66714L1.49995 12.0005C1.38241 12.204 1.32077 12.4351 1.32129 12.6701C1.32181 12.9052 1.38447 13.136 1.50292 13.339C1.62136 13.5421 1.79138 13.7102 1.99575 13.8264C2.20011 13.9425 2.43156 14.0026 2.66662 14.0005H13.3333C13.5672 14.0002 13.797 13.9385 13.9995 13.8213C14.202 13.7042 14.3701 13.5359 14.487 13.3332C14.6038 13.1306 14.6653 12.9007 14.6653 12.6668C14.6652 12.4329 14.6036 12.2031 14.4866 12.0005Z\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 6V8.66667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 11.333H8.00667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <cqa-badge \n *ngFor=\"let badge of visibleBadges\" \n [label]=\"badge.label\"\n [icon]=\"badge.icon\"\n [variant]=\"badge.variant || 'default'\"\n ></cqa-badge>\n </div>\n </div>\n\n <!-- Section 2: Title & Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-font-medium cqa-text-lg cqa-leading-[22px] cqa-text-title\">\n {{ title }}\n </h2>\n <p class=\"cqa-text-base cqa-font-normal cqa-text-description\">\n {{ description }}\n </p>\n </div>\n\n <!-- Section 3: Metadata Section (always visible) -->\n <div *ngIf=\"metadata\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div class=\"cqa-bg-surface-default cqa-rounded-[10px] cqa-px-4 cqa-py-3 cqa-border-t cqa-border-solid cqa-border-t-primary-surface\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-items-center cqa-gap-[25px]\">\n <ng-container *ngFor=\"let item of metadata | keyvalue; let last = last\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-[6px]\">\n <span class=\"cqa-text-xs cqa-font-normal cqa-font-inter cqa-text-metadata-key\">\n {{ item.key }}:\n </span>\n <span \n [ngClass]=\"getMetadataValueClasses(item.key, item.value)\" \n [ngStyle]=\"getMetadataValueStyle(item.key, item.value)\"\n class=\"cqa-font-normal cqa-leading-[18px] cqa-font-inter cqa-text-sm cqa-text-title\">\n {{ getMetadataValue(item.value) }}\n </span>\n </div>\n <div *ngIf=\"!last\" class=\"cqa-h-4 cqa-w-px cqa-bg-gray-200\"></div>\n </ng-container>\n </div>\n </div>\n\n <!-- Section 4: Metadata toggle -->\n <button *ngIf=\"metadata && (isPrerequisiteMissing || isTestDataMissing)\" type=\"button\"\n class=\"cqa-text-sm cqa-text-primary cqa-inline-flex cqa-font-inter cqa-items-center cqa-gap-[6px]\"\n (click)=\"toggleMetadata()\">\n <span>{{ metadataExpanded ? 'Hide details' : 'Show details' }}</span>\n <mat-icon class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px]\">\n {{ metadataExpanded ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n\n <!-- Section 5: Sections (toggle visibility) -->\n <div *ngIf=\"metadataExpanded && visibleSections?.length\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div\n *ngFor=\"let section of visibleSections\"\n class=\"cqa-border-l-4 cqa-border-solid cqa-rounded-[10px] cqa-overflow-hidden\"\n [ngClass]=\"getSectionBorderClass(section)\"\n >\n <div class=\"cqa-p-[10px] cqa-pl-[20px] cqa-flex cqa-flex-col cqa-gap-3\">\n <!-- Section Title with Inline Collapse Button -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <h3 [ngClass]=\"getSectionTitleClasses(section)\" class=\"\">\n {{ section.title }}\n </h3>\n <button\n type=\"button\"\n class=\"cqa-ml-auto cqa-inline-flex cqa-cursor-pointer cqa-outline-none cqa-bg-transparent cqa-border-none cqa-p-1 cqa-items-center cqa-justify-center cqa-min-w-[24px] cqa-min-h-[24px]\"\n (click)=\"toggleSection(section); $event.stopPropagation()\"\n [attr.aria-label]=\"section.expanded !== false ? 'Collapse section' : 'Expand section'\"\n >\n <mat-icon [ngClass]=\"getSectionIconColor(section)\" class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px] cqa-pointer-events-none\">\n {{ section.expanded !== false ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n </div>\n\n <!-- Collapsible Content: Reason and Action Button -->\n <div *ngIf=\"section.expanded !== false\" class=\"cqa-flex cqa-flex-col cqa-gap-[10px]\">\n <!-- Reason -->\n <p class=\"cqa-text-sm cqa-font-normal cqa-leading-[18px] cqa-text-neutral-600\">\n Reason: {{ section.reason }}\n </p>\n \n <!-- Action Button -->\n <div>\n <cqa-button\n variant=\"outlined\"\n (clicked)=\"onSectionAction(section.id)\"\n [customClass]=\"'cqa-py-[9px] cqa-text-[14px] cqa-leading-[17px] cqa-border-slate cqa-text-slate cqa-transition cqa-duration-150 cqa-ease-in-out cqa-hover:cqa-border-primary cqa-hover:cqa-text-primary cqa-hover:cqa-bg-primary-surface'\"\n >\n {{ section.actionButtonLabel }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <cqa-button\n *ngIf=\"showAiSuggestionButton\"\n variant=\"filled\"\n (clicked)=\"onMainAction()\"\n [disabled]=\"isApplying\"\n [customClass]=\"'!cqa-w-full !cqa-text-[14px] !cqa-leading-[20px] !cqa-font-semibold'\"\n >\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.01882 0C9.12979 0.0454767 9.17718 0.15653 9.22261 0.259691C9.24539 0.319799 9.26628 0.380234 9.28657 0.44115C9.29452 0.464493 9.30246 0.487836 9.31065 0.511886C9.41613 0.826009 9.51008 1.1435 9.60457 1.46076C9.62593 1.53238 9.64739 1.60397 9.66885 1.67557C9.7781 2.04007 9.88654 2.4048 9.99438 2.76969C10.0095 2.82093 10.0247 2.87218 10.0398 2.92342C10.0826 3.0679 10.1252 3.21239 10.1677 3.35694C10.2573 3.66239 10.3495 3.96695 10.4476 4.27002C10.4561 4.29653 10.4647 4.32305 10.4735 4.35036C10.7284 5.12999 11.0896 5.82875 11.6818 6.42393C11.6965 6.4394 11.7111 6.45488 11.7262 6.47083C11.979 6.72875 12.3034 6.93541 12.6276 7.10221C12.6441 7.11085 12.6606 7.11948 12.6776 7.12838C13.6317 7.61851 14.779 7.83407 15.8124 8.12101C16.2652 8.24681 16.7166 8.37658 17.1663 8.51206C17.1979 8.52157 17.2296 8.53107 17.2612 8.54055C17.3557 8.5689 17.45 8.59774 17.5442 8.62694C17.5662 8.63358 17.5882 8.64023 17.6108 8.64707C17.7406 8.68812 17.8648 8.73658 17.9713 8.82054C18.0038 8.88837 18.0038 8.88837 17.995 8.95619C17.8913 9.05472 17.7884 9.10092 17.6516 9.14599C17.632 9.15264 17.6124 9.1593 17.5923 9.16615C17.3612 9.24366 17.127 9.31149 16.8925 9.37871C16.8444 9.39261 16.7963 9.40651 16.7482 9.42042C16.4514 9.50603 16.1542 9.5898 15.8566 9.67263C15.4646 9.78175 15.0733 9.89268 14.6823 10.0049C14.6182 10.0232 14.5541 10.0416 14.49 10.0598C14.1534 10.1557 13.8185 10.2551 13.4863 10.3642C13.4587 10.3732 13.4312 10.3822 13.4028 10.3915C12.2902 10.7616 11.4422 11.4522 10.9114 12.462C10.6253 13.0295 10.4565 13.6432 10.2843 14.2489C10.2377 14.4124 10.1882 14.5749 10.1381 14.7374C10.0988 14.8652 10.0604 14.9933 10.023 15.1216C10.0185 15.1369 10.0141 15.1522 10.0095 15.1679C9.98788 15.2419 9.96638 15.3159 9.94503 15.3899C9.89039 15.5776 9.83156 15.7637 9.77111 15.9498C9.66383 16.2804 9.5662 16.6135 9.46917 16.947C9.32288 17.4491 9.32288 17.4491 9.23993 17.6905C9.23443 17.7067 9.22893 17.7229 9.22326 17.7396C9.19298 17.8256 9.16183 17.9047 9.10453 17.9774C9.01734 17.9958 9.01734 17.9958 8.93901 18C8.84946 17.8752 8.79016 17.7542 8.74265 17.6102C8.73574 17.5897 8.72882 17.5693 8.7217 17.5483C8.63368 17.285 8.55502 17.0189 8.47634 16.7529C8.45832 16.6921 8.44022 16.6313 8.42211 16.5705C8.2872 16.1173 8.15451 15.6635 8.02202 15.2096C7.47014 12.9645 7.47014 12.9645 6.078 11.1493C6.05569 11.1319 6.03338 11.1145 6.01039 11.0966C5.09826 10.398 3.89667 10.1394 2.7963 9.83627C2.52415 9.76124 2.2521 9.68587 1.98006 9.61046C1.95628 9.60386 1.95628 9.60386 1.93201 9.59714C1.53962 9.48834 1.14735 9.37925 0.756448 9.26566C0.739911 9.26089 0.723375 9.25612 0.706338 9.25121C0.105798 9.07767 0.105798 9.07767 0.00129307 8.95619C-0.00166252 8.90108 -0.00166252 8.90108 0.0249378 8.84315C0.134167 8.7408 0.240153 8.69696 0.38432 8.65238C0.405194 8.64567 0.426068 8.63897 0.447574 8.63206C0.511506 8.61164 0.575577 8.59169 0.639702 8.57183C0.658001 8.56609 0.676301 8.56035 0.695155 8.55443C0.82457 8.51385 0.95445 8.47479 1.08452 8.43618C1.11648 8.42665 1.11648 8.42665 1.14909 8.41693C1.70454 8.25174 2.26361 8.09801 2.82252 7.94392C3.23899 7.82909 3.65476 7.71236 4.06921 7.59097C4.08825 7.58542 4.1073 7.57987 4.12692 7.57415C5.087 7.29393 6.02557 6.89632 6.64547 6.1074C6.65475 6.09569 6.66403 6.08399 6.6736 6.07194C7.36395 5.1963 7.63315 4.13145 7.93391 3.09241C8.03285 2.75069 8.13298 2.40929 8.23345 2.06798C8.26127 1.97347 8.28906 1.87894 8.31673 1.78439C8.42788 1.40458 8.5407 1.02528 8.66 0.647727C8.67116 0.612372 8.68227 0.577001 8.69333 0.541614C8.86035 0.00797522 8.86035 0.00797522 9.01882 0Z\" fill=\"#FBFCFF\"/><path d=\"M14.4719 1.11069C14.5805 1.22817 14.6022 1.36624 14.636 1.51625C14.7487 1.98751 14.8786 2.42084 15.3293 2.6946C15.6074 2.84167 15.9389 2.90859 16.247 2.9718C16.3771 2.99902 16.4869 3.03515 16.5985 3.1074C16.6236 3.14555 16.6236 3.14555 16.6221 3.21197C16.5963 3.29273 16.5736 3.31878 16.5054 3.37165C16.4308 3.39549 16.4308 3.39549 16.3413 3.41404C16.3075 3.42147 16.2736 3.42898 16.2398 3.43656C16.2217 3.44058 16.2036 3.4446 16.1849 3.44874C15.6339 3.57062 15.6339 3.57062 15.1576 3.84645C15.1421 3.85837 15.1267 3.87029 15.1107 3.88257C14.7703 4.16959 14.6983 4.64703 14.5958 5.04699C14.59 5.06896 14.5841 5.09092 14.578 5.11355C14.573 5.133 14.5679 5.15244 14.5627 5.17248C14.5405 5.23185 14.5176 5.27057 14.4719 5.31607C14.3447 5.33152 14.3447 5.33152 14.2828 5.31607C14.1843 5.24309 14.1623 5.15997 14.1366 5.04828C14.1322 5.03099 14.1279 5.01369 14.1235 4.99587C14.1098 4.94064 14.0965 4.88531 14.0833 4.82996C13.9796 4.39891 13.8625 3.976 13.449 3.72333C13.1258 3.55101 12.7329 3.46951 12.3717 3.4037C12.2727 3.38399 12.216 3.3592 12.1547 3.28121C12.1414 3.20208 12.1414 3.20208 12.1547 3.12294C12.2489 3.02971 12.348 3.00696 12.4754 2.97881C12.5156 2.9693 12.5557 2.95973 12.5958 2.9501C12.6165 2.94516 12.6372 2.94022 12.6586 2.93512C12.7642 2.90911 12.8689 2.87995 12.9734 2.85021C12.9924 2.84494 13.0114 2.83967 13.031 2.83424C13.2436 2.77346 13.4271 2.69571 13.5971 2.5577C13.6129 2.54523 13.6288 2.53276 13.6451 2.5199C13.9096 2.29228 13.9995 1.95032 14.081 1.63124C14.0873 1.60702 14.0935 1.5828 14.0999 1.55784C14.1123 1.50918 14.1244 1.46046 14.1363 1.4117C14.1449 1.37776 14.1449 1.37776 14.1535 1.34315C14.1585 1.32288 14.1635 1.30261 14.1686 1.28172C14.1904 1.21719 14.219 1.16652 14.2591 1.11069C14.3362 1.07385 14.3903 1.0905 14.4719 1.11069Z\" fill=\"#FBFCFF\"/><path d=\"M3.59089 12.4942C3.61902 12.4944 3.61902 12.4944 3.64772 12.4946C3.84954 12.5004 3.98609 12.5623 4.13472 12.692C4.30767 12.8707 4.38753 13.0722 4.38299 13.313C4.36357 13.5082 4.24316 13.6787 4.09547 13.8107C3.92163 13.9448 3.74626 13.9892 3.52411 13.983C3.33681 13.9621 3.1606 13.877 3.02785 13.749C2.86276 13.5336 2.8145 13.3361 2.83869 13.0707C2.88867 12.8618 3.03274 12.6923 3.21701 12.5733C3.34502 12.5113 3.44798 12.493 3.59089 12.4942Z\" fill=\"#FBFCFF\"/></svg>\n {{ isApplying ? 'Applying suggestion' : 'Apply suggestion' }}\n </cqa-button>\n </div>\n</div>\n \n", styles: [] }]
|
|
170
174
|
}], propDecorators: { title: [{
|
|
171
175
|
type: Input
|
|
172
176
|
}], description: [{
|
|
173
177
|
type: Input
|
|
178
|
+
}], showAiSuggestionButton: [{
|
|
179
|
+
type: Input
|
|
174
180
|
}], badges: [{
|
|
175
181
|
type: Input
|
|
176
182
|
}], metadata: [{
|
|
@@ -198,4 +204,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
198
204
|
}], onImportTestDataClick: [{
|
|
199
205
|
type: Output
|
|
200
206
|
}] } });
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zaWdodC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9pbnNpZ2h0LWNhcmQvaW5zaWdodC1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9pbnNpZ2h0LWNhcmQvaW5zaWdodC1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixJQUFJLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQXdCbEcsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDMUIsWUFBTyxHQUFtQixFQUFFLENBQUM7UUFXNUIscUJBQWdCLEdBQVksSUFBSSxDQUFDO1FBQ2pDLDBCQUFxQixHQUFZLEtBQUssQ0FBQztRQUN2QyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFFNUMsb0NBQW9DO1FBQzVCLHlCQUFvQixHQUF5QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRS9ELGdDQUFnQztRQUNoQyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRWxCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUM3QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFxQyxDQUFDO1FBQ3RFLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDaEQsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNsRCwrQkFBMEIsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3RELDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7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LENBQUM7U0FDOUI7SUFDSCxDQUFDOztpSEF2TFUsb0JBQW9CO3FHQUFwQixvQkFBb0IsMm5CQ3pCakMsdThYQW1IQTsyRkQxRmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjs4QkFLbkIsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0YsTUFBTTtzQkFEVCxLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBUUksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csMEJBQTBCO3NCQUFuQyxNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRNZXRhZGF0YVZhbHVlU3R5bGUgYXMgZ2V0TWV0YWRhdGFDb2xvclN0eWxlIH0gZnJvbSAnLi4vLi4vdXRpbHMvbWV0YWRhdGEtY29sb3JzLnV0aWwnO1xuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYWRnZS9iYWRnZS5jb21wb25lbnQnO1xuXG4vLyBVc2UgQmFkZ2VDb21wb25lbnQgaW5wdXRzIGRpcmVjdGx5IGluc3RlYWQgb2YgYSBzZXBhcmF0ZSBpbnRlcmZhY2VcbmV4cG9ydCB0eXBlIEluc2lnaHRCYWRnZSA9IFBpY2s8QmFkZ2VDb21wb25lbnQsICdsYWJlbCcgfCAnaWNvbicgfCAndmFyaWFudCc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEluc2lnaHRNZXRhZGF0YSB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGlnaGxpZ2h0PzogYm9vbGVhbiB9O1xufVxuXG5pbnRlcmZhY2UgSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHZhcmlhbnQ6ICd3YXJuaW5nJyB8ICdlcnJvcicgfCAnZGVmYXVsdCc7XG4gIHJlYXNvbjogc3RyaW5nO1xuICBhY3Rpb25CdXR0b25MYWJlbDogc3RyaW5nO1xuICBleHBhbmRlZD86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1pbnNpZ2h0LWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5zaWdodC1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBJbnNpZ2h0Q2FyZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZGVzY3JpcHRpb246IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9iYWRnZXM6IEluc2lnaHRCYWRnZVtdID0gW107XG4gIEBJbnB1dCgpXG4gIHNldCBiYWRnZXModmFsdWU6IEluc2lnaHRCYWRnZVtdKSB7XG4gICAgdGhpcy5fYmFkZ2VzID0gdmFsdWU7XG4gIH1cbiAgZ2V0IGJhZGdlcygpOiBJbnNpZ2h0QmFkZ2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2JhZGdlcztcbiAgfVxuICBASW5wdXQoKSBtZXRhZGF0YT86IEluc2lnaHRNZXRhZGF0YTtcbiAgQElucHV0KCkgcHJlcmVxdWlzaXRlU2VjdGlvbj86IHN0cmluZztcbiAgQElucHV0KCkgdGVzdERhdGFTZWN0aW9uPzogc3RyaW5nO1xuICBASW5wdXQoKSBtZXRhZGF0YUV4cGFuZGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgaXNQcmVyZXF1aXNpdGVNaXNzaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzVGVzdERhdGFNaXNzaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gVHJhY2sgZXhwYW5kZWQgc3RhdGUgZm9yIHNlY3Rpb25zXG4gIHByaXZhdGUgc2VjdGlvbkV4cGFuZGVkU3RhdGU6IE1hcDxzdHJpbmcsIGJvb2xlYW4+ID0gbmV3IE1hcCgpO1xuICBcbiAgLy8gTG9hZGluZyBzdGF0ZSBmb3IgbWFpbiBhY3Rpb25cbiAgaXNBcHBseWluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBtZXRhZGF0YVRvZ2dsZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHNlY3Rpb25Ub2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaWQ6IHN0cmluZzsgZXhwYW5kZWQ6IGJvb2xlYW4gfT4oKTtcbiAgQE91dHB1dCgpIHNlY3Rpb25BY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgb25BcHBseVN1Z2dlc3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIG9uQXR0YWNoUHJlcmVxdWlzaXRlc0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgb25JbXBvcnRUZXN0RGF0YUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHRvZ2dsZU1ldGFkYXRhKCk6IHZvaWQge1xuICAgIHRoaXMubWV0YWRhdGFFeHBhbmRlZCA9ICF0aGlzLm1ldGFkYXRhRXhwYW5kZWQ7XG4gICAgdGhpcy5tZXRhZGF0YVRvZ2dsZS5lbWl0KHRoaXMubWV0YWRhdGFFeHBhbmRlZCk7XG4gIH1cblxuICB0b2dnbGVTZWN0aW9uKHNlY3Rpb246IEludGVybmFsSW5zaWdodFNlY3Rpb24pOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLnNlY3Rpb25FeHBhbmRlZFN0YXRlLmdldChzZWN0aW9uLmlkKSA/PyAoc2VjdGlvbi5leHBhbmRlZCA/PyB0cnVlKTtcbiAgICBjb25zdCBuZXdTdGF0ZSA9ICFjdXJyZW50U3RhdGU7XG4gICAgdGhpcy5zZWN0aW9uRXhwYW5kZWRTdGF0ZS5zZXQoc2VjdGlvbi5pZCwgbmV3U3RhdGUpO1xuICAgIFxuICAgIHRoaXMuc2VjdGlvblRvZ2dsZS5lbWl0KHsgaWQ6IHNlY3Rpb24uaWQsIGV4cGFuZGVkOiBuZXdTdGF0ZSB9KTtcbiAgfVxuXG4gIG9uU2VjdGlvbkFjdGlvbihzZWN0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VjdGlvbkFjdGlvbkNsaWNrLmVtaXQoc2VjdGlvbklkKTtcbiAgICBcbiAgICAvLyBFbWl0IHNwZWNpZmljIGV2ZW50cyBmb3Iga25vd24gYWN0aW9uc1xuICAgIGlmIChzZWN0aW9uSWQgPT09ICdwcmVyZXF1aXNpdGUnKSB7XG4gICAgICB0aGlzLm9uQXR0YWNoUHJlcmVxdWlzaXRlc0NsaWNrLmVtaXQoKTtcbiAgICB9IGVsc2UgaWYgKHNlY3Rpb25JZCA9PT0gJ3Rlc3QtZGF0YScpIHtcbiAgICAgIHRoaXMub25JbXBvcnRUZXN0RGF0YUNsaWNrLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmlzaWJsZUJhZGdlcygpOiBJbnNpZ2h0QmFkZ2VbXSB7XG4gICAgY29uc3QgdmlzaWJsZTogSW5zaWdodEJhZGdlW10gPSBbXTtcbiAgICBpZiAodGhpcy5pc1ByZXJlcXVpc2l0ZU1pc3NpbmcpIHtcbiAgICAgIHZpc2libGUucHVzaCh7IGxhYmVsOiAnUHJlcmVxdWlzaXRlIE1pc3NpbmcnLCB2YXJpYW50OiAnd2FybmluZycgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzVGVzdERhdGFNaXNzaW5nKSB7XG4gICAgICB2aXNpYmxlLnB1c2goeyBsYWJlbDogJ1Rlc3QgRGF0YSBNaXNzaW5nJywgdmFyaWFudDogJ2Vycm9yJyB9KTtcbiAgICB9XG4gICAgLy8gQWxzbyBpbmNsdWRlIGFueSBjdXN0b20gYmFkZ2VzXG4gICAgaWYgKHRoaXMuYmFkZ2VzKSB7XG4gICAgICB2aXNpYmxlLnB1c2goLi4udGhpcy5iYWRnZXMpO1xuICAgIH1cbiAgICByZXR1cm4gdmlzaWJsZTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlU2VjdGlvbnMoKTogSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbltdIHtcbiAgICBjb25zdCB2aXNpYmxlOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uW10gPSBbXTtcbiAgICBcbiAgICBpZiAodGhpcy5pc1ByZXJlcXVpc2l0ZU1pc3NpbmcgJiYgdGhpcy5wcmVyZXF1aXNpdGVTZWN0aW9uKSB7XG4gICAgICAvLyBVc2Ugc3RvcmVkIHN0YXRlIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGRlZmF1bHQgdG8gdHJ1ZVxuICAgICAgY29uc3QgZXhwYW5kZWQgPSB0aGlzLnNlY3Rpb25FeHBhbmRlZFN0YXRlLmhhcygncHJlcmVxdWlzaXRlJykgXG4gICAgICAgID8gdGhpcy5zZWN0aW9uRXhwYW5kZWRTdGF0ZS5nZXQoJ3ByZXJlcXVpc2l0ZScpIVxuICAgICAgICA6IHRydWU7XG4gICAgICBcbiAgICAgIHZpc2libGUucHVzaCh7XG4gICAgICAgIGlkOiAncHJlcmVxdWlzaXRlJyxcbiAgICAgICAgdGl0bGU6ICdQcmVyZXF1aXNpdGUgTWlzc2luZycsXG4gICAgICAgIHZhcmlhbnQ6ICd3YXJuaW5nJyxcbiAgICAgICAgcmVhc29uOiB0aGlzLnByZXJlcXVpc2l0ZVNlY3Rpb24sXG4gICAgICAgIGFjdGlvbkJ1dHRvbkxhYmVsOiAnQXR0YWNoIFByZXJlcXVpc2l0ZXMnLFxuICAgICAgICBleHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMuaXNUZXN0RGF0YU1pc3NpbmcgJiYgdGhpcy50ZXN0RGF0YVNlY3Rpb24pIHtcbiAgICAgIC8vIFVzZSBzdG9yZWQgc3RhdGUgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgZGVmYXVsdCB0byB0cnVlXG4gICAgICBjb25zdCBleHBhbmRlZCA9IHRoaXMuc2VjdGlvbkV4cGFuZGVkU3RhdGUuaGFzKCd0ZXN0LWRhdGEnKVxuICAgICAgICA/IHRoaXMuc2VjdGlvbkV4cGFuZGVkU3RhdGUuZ2V0KCd0ZXN0LWRhdGEnKSFcbiAgICAgICAgOiB0cnVlO1xuICAgICAgXG4gICAgICB2aXNpYmxlLnB1c2goe1xuICAgICAgICBpZDogJ3Rlc3QtZGF0YScsXG4gICAgICAgIHRpdGxlOiAnVGVzdCBEYXRhIE1pc3NpbmcnLFxuICAgICAgICB2YXJpYW50OiAnZXJyb3InLFxuICAgICAgICByZWFzb246IHRoaXMudGVzdERhdGFTZWN0aW9uLFxuICAgICAgICBhY3Rpb25CdXR0b25MYWJlbDogJ0ltcG9ydCBUZXN0IERhdGEnLFxuICAgICAgICBleHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHZpc2libGU7XG4gIH1cblxuICBhc3luYyBvbk1haW5BY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNBcHBseWluZykge1xuICAgICAgcmV0dXJuOyAvLyBQcmV2ZW50IG11bHRpcGxlIGNsaWNrc1xuICAgIH1cbiAgICBcbiAgICB0aGlzLmlzQXBwbHlpbmcgPSB0cnVlO1xuICAgIFxuICAgIHRyeSB7XG4gICAgICB0aGlzLm9uQXBwbHlTdWdnZXN0aW9uQ2xpY2suZW1pdCgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBSZXNldCBsb2FkaW5nIHN0YXRlIGFmdGVyIGFjdGlvbiBjb21wbGV0ZXNcbiAgICAgIC8vIElmIHlvdSBuZWVkIHRvIGtlZXAgdGhlIGxvYWRpbmcgc3RhdGUgbG9uZ2VyLCBjYWxsIHJlc2V0QXBwbHlpbmdTdGF0ZSgpIG1hbnVhbGx5XG4gICAgICAvLyBhZnRlciB5b3VyIGFzeW5jIG9wZXJhdGlvbiBjb21wbGV0ZXNcbiAgICAgIHRoaXMuaXNBcHBseWluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIE1ldGhvZCB0byByZXNldCBsb2FkaW5nIHN0YXRlIChjYW4gYmUgY2FsbGVkIGV4dGVybmFsbHkgaWYgbmVlZGVkKVxuICByZXNldEFwcGx5aW5nU3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5pc0FwcGx5aW5nID0gZmFsc2U7XG4gIH1cblxuICAvLyBSZW1vdmVkIGdldEJhZGdlQ2xhc3NlcyAtIG5vdyB1c2luZyBCYWRnZUNvbXBvbmVudFxuXG4gIGdldFNlY3Rpb25Cb3JkZXJDbGFzcyhzZWN0aW9uOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHNlY3Rpb24udmFyaWFudCkge1xuICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgIHJldHVybiAnY3FhLWJvcmRlci1sLTQgY3FhLWJvcmRlci1sLXllbGxvdy01MDAnO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gJ2NxYS1ib3JkZXItbC00IGNxYS1ib3JkZXItbC1yZWQtNTAwJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLWJvcmRlci1sLTQgY3FhLWJvcmRlci1sLWdyYXktNTAwJztcbiAgICB9XG4gIH1cblxuICBnZXRNZXRhZGF0YVZhbHVlQ2xhc3NlcyhrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGlnaGxpZ2h0PzogYm9vbGVhbiB9KTogc3RyaW5nIHtcbiAgICAvLyBCYXNlIGNsYXNzZXMgZm9yIGFsbCB2YWx1ZXMgKGZvbnQtc2l6ZTogMTRweCwgbGluZS1oZWlnaHQ6IDE4cHgsIGZvbnQtd2VpZ2h0OiA0MDApXG4gICAgcmV0dXJuICdjcWEtZm9udC1ub3JtYWwgY3FhLWxlYWRpbmctWzE4cHhdIGNxYS10cmFja2luZy1ub3JtYWwnO1xuICB9XG5cbiAgZ2V0TWV0YWRhdGFWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyBoaWdobGlnaHQ/OiBib29sZWFuIH0pOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcbiAgfVxuXG4gIGdldE1ldGFkYXRhVmFsdWVTdHlsZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGlnaGxpZ2h0PzogYm9vbGVhbiB9KTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgLy8gVXNlIHRoZSBzaGFyZWQgdXRpbGl0eSBmdW5jdGlvbiBmb3IgY29uc2lzdGVudCBjb2xvcnNcbiAgICByZXR1cm4gZ2V0TWV0YWRhdGFDb2xvclN0eWxlKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0U2VjdGlvblRpdGxlQ2xhc3NlcyhzZWN0aW9uOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlQ2xhc3NlcyA9IFsnY3FhLXRleHQtc20nLCAnY3FhLWxlYWRpbmctWzE3cHhdJywgJ2NxYS1mb250LXNlbWlib2xkJ107XG4gICAgXG4gICAgc3dpdGNoIChzZWN0aW9uLnZhcmlhbnQpIHtcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtWyM3ODM1MEZdJ10uam9pbignICcpO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtWyM4ODEzMzddJ10uam9pbignICcpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtaW5rJ10uam9pbignICcpO1xuICAgIH1cbiAgfVxuXG4gIGdldFNlY3Rpb25JY29uQ29sb3Ioc2VjdGlvbjogSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbik6IHN0cmluZyB7XG4gICAgc3dpdGNoIChzZWN0aW9uLnZhcmlhbnQpIHtcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gJ2NxYS10ZXh0LVsjNzgzNTBGXSc7XG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHJldHVybiAnY3FhLXRleHQtWyM4ODEzMzddJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLXRleHQtZ3JheS00MDAnO1xuICAgIH1cbiAgfVxufVxuXG5cbiIsIjxkaXYgaWQ9XCJjcWEtdWktcm9vdFwiPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZvbnQtaW50ZXIgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtNCBjcWEtcHgtWzIxcHhdIGNxYS1weS0zIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRUNFQ0VDXSBjcWEtcm91bmRlZC14bCBjcWEtc2hhZG93LWNhcmRcIj5cbiAgICA8IS0tIFNlY3Rpb24gMTogQmFkZ2VzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMyBjcWEtcHktWzEuNV1cIiAqbmdJZj1cInZpc2libGVCYWRnZXMubGVuZ3RoID4gMFwiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xNC40ODY2IDEyLjAwMDVMOS4xNTMyOSAyLjY2NzE0QzkuMDM3IDIuNDYxOTQgOC44NjgzNiAyLjI5MTI3IDguNjY0NTcgMi4xNzI1MkM4LjQ2MDc4IDIuMDUzNzggOC4yMjkxNSAxLjk5MTIxIDcuOTkzMjkgMS45OTEyMUM3Ljc1NzQzIDEuOTkxMjEgNy41MjU3OSAyLjA1Mzc4IDcuMzIyIDIuMTcyNTJDNy4xMTgyMiAyLjI5MTI3IDYuOTQ5NTggMi40NjE5NCA2LjgzMzI5IDIuNjY3MTRMMS40OTk5NSAxMi4wMDA1QzEuMzgyNDEgMTIuMjA0IDEuMzIwNzcgMTIuNDM1MSAxLjMyMTI5IDEyLjY3MDFDMS4zMjE4MSAxMi45MDUyIDEuMzg0NDcgMTMuMTM2IDEuNTAyOTIgMTMuMzM5QzEuNjIxMzYgMTMuNTQyMSAxLjc5MTM4IDEzLjcxMDIgMS45OTU3NSAxMy44MjY0QzIuMjAwMTEgMTMuOTQyNSAyLjQzMTU2IDE0LjAwMjYgMi42NjY2MiAxNC4wMDA1SDEzLjMzMzNDMTMuNTY3MiAxNC4wMDAyIDEzLjc5NyAxMy45Mzg1IDEzLjk5OTUgMTMuODIxM0MxNC4yMDIgMTMuNzA0MiAxNC4zNzAxIDEzLjUzNTkgMTQuNDg3IDEzLjMzMzJDMTQuNjAzOCAxMy4xMzA2IDE0LjY2NTMgMTIuOTAwNyAxNC42NjUzIDEyLjY2NjhDMTQuNjY1MiAxMi40MzI5IDE0LjYwMzYgMTIuMjAzMSAxNC40ODY2IDEyLjAwMDVaXCIgc3Ryb2tlPVwiI0UyQUMyMFwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk04IDZWOC42NjY2N1wiIHN0cm9rZT1cIiNFMkFDMjBcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNOCAxMS4zMzNIOC4wMDY2N1wiIHN0cm9rZT1cIiNFMkFDMjBcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxjcWEtYmFkZ2UgXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGJhZGdlIG9mIHZpc2libGVCYWRnZXNcIiBcbiAgICAgICAgICBbbGFiZWxdPVwiYmFkZ2UubGFiZWxcIlxuICAgICAgICAgIFtpY29uXT1cImJhZGdlLmljb25cIlxuICAgICAgICAgIFt2YXJpYW50XT1cImJhZGdlLnZhcmlhbnQgfHwgJ2RlZmF1bHQnXCJcbiAgICAgICAgPjwvY3FhLWJhZGdlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNlY3Rpb24gMjogVGl0bGUgJiBEZXNjcmlwdGlvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtM1wiPlxuICAgICAgPGgyIGNsYXNzPVwiY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LWxnIGNxYS1sZWFkaW5nLVsyMnB4XSBjcWEtdGV4dC10aXRsZVwiPlxuICAgICAgICB7eyB0aXRsZSB9fVxuICAgICAgPC9oMj5cbiAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtYmFzZSBjcWEtZm9udC1ub3JtYWwgY3FhLXRleHQtZGVzY3JpcHRpb25cIj5cbiAgICAgICAge3sgZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cblxuICA8IS0tIFNlY3Rpb24gMzogTWV0YWRhdGEgU2VjdGlvbiAoYWx3YXlzIHZpc2libGUpIC0tPlxuICA8ZGl2ICpuZ0lmPVwibWV0YWRhdGFcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWJnLXN1cmZhY2UtZGVmYXVsdCBjcWEtcm91bmRlZC1bMTBweF0gY3FhLXB4LTQgY3FhLXB5LTMgY3FhLWJvcmRlci10IGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci10LXByaW1hcnktc3VyZmFjZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLVsyNXB4XVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1ldGFkYXRhIHwga2V5dmFsdWU7IGxldCBsYXN0ID0gbGFzdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtWzZweF1cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLWZvbnQtbm9ybWFsIGNxYS1mb250LWludGVyIGNxYS10ZXh0LW1ldGFkYXRhLWtleVwiPlxuICAgICAgICAgICAgICB7eyBpdGVtLmtleSB9fTpcbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIFxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRNZXRhZGF0YVZhbHVlQ2xhc3NlcyhpdGVtLmtleSwgaXRlbS52YWx1ZSlcIiBcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0TWV0YWRhdGFWYWx1ZVN0eWxlKGl0ZW0ua2V5LCBpdGVtLnZhbHVlKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3FhLWZvbnQtbm9ybWFsIGNxYS1sZWFkaW5nLVsxOHB4XSBjcWEtZm9udC1pbnRlciBjcWEtdGV4dC1zbSBjcWEtdGV4dC10aXRsZVwiPlxuICAgICAgICAgICAgICB7eyBnZXRNZXRhZGF0YVZhbHVlKGl0ZW0udmFsdWUpIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFsYXN0XCIgY2xhc3M9XCJjcWEtaC00IGNxYS13LXB4IGNxYS1iZy1ncmF5LTIwMFwiPjwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWN0aW9uIDQ6IE1ldGFkYXRhIHRvZ2dsZSAtLT5cbiAgICA8YnV0dG9uICpuZ0lmPVwibWV0YWRhdGEgJiYgKGlzUHJlcmVxdWlzaXRlTWlzc2luZyB8fCBpc1Rlc3REYXRhTWlzc2luZylcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLXRleHQtcHJpbWFyeSBjcWEtaW5saW5lLWZsZXggY3FhLWZvbnQtaW50ZXIgY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLVs2cHhdXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVNZXRhZGF0YSgpXCI+XG4gICAgICA8c3Bhbj57eyBtZXRhZGF0YUV4cGFuZGVkID8gJ0hpZGUgZGV0YWlscycgOiAnU2hvdyBkZXRhaWxzJyB9fTwvc3Bhbj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS13LVsxNHB4XSBjcWEtaC1bMTRweF0gY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsxNHB4XVwiPlxuICAgICAgICB7eyBtZXRhZGF0YUV4cGFuZGVkID8gJ2V4cGFuZF9sZXNzJyA6ICdleHBhbmRfbW9yZScgfX1cbiAgICAgIDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgPCEtLSBTZWN0aW9uIDU6IFNlY3Rpb25zICh0b2dnbGUgdmlzaWJpbGl0eSkgLS0+XG4gIDxkaXYgKm5nSWY9XCJtZXRhZGF0YUV4cGFuZGVkICYmIHZpc2libGVTZWN0aW9ucz8ubGVuZ3RoXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC00XCI+XG4gICAgPGRpdlxuICAgICAgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgdmlzaWJsZVNlY3Rpb25zXCJcbiAgICAgIGNsYXNzPVwiY3FhLWJvcmRlci1sLTQgY3FhLWJvcmRlci1zb2xpZCBjcWEtcm91bmRlZC1bMTBweF0gY3FhLW92ZXJmbG93LWhpZGRlblwiXG4gICAgICBbbmdDbGFzc109XCJnZXRTZWN0aW9uQm9yZGVyQ2xhc3Moc2VjdGlvbilcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtcC1bMTBweF0gY3FhLXBsLVsyMHB4XSBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0zXCI+XG4gICAgICAgIDwhLS0gU2VjdGlvbiBUaXRsZSB3aXRoIElubGluZSBDb2xsYXBzZSBCdXR0b24gLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDxoMyBbbmdDbGFzc109XCJnZXRTZWN0aW9uVGl0bGVDbGFzc2VzKHNlY3Rpb24pXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgIHt7IHNlY3Rpb24udGl0bGUgfX1cbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJjcWEtbWwtYXV0byBjcWEtaW5saW5lLWZsZXggY3FhLWN1cnNvci1wb2ludGVyIGNxYS1vdXRsaW5lLW5vbmUgY3FhLWJnLXRyYW5zcGFyZW50IGNxYS1ib3JkZXItbm9uZSBjcWEtcC0xIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1taW4tdy1bMjRweF0gY3FhLW1pbi1oLVsyNHB4XVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2VjdGlvbihzZWN0aW9uKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwic2VjdGlvbi5leHBhbmRlZCAhPT0gZmFsc2UgPyAnQ29sbGFwc2Ugc2VjdGlvbicgOiAnRXhwYW5kIHNlY3Rpb24nXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24gW25nQ2xhc3NdPVwiZ2V0U2VjdGlvbkljb25Db2xvcihzZWN0aW9uKVwiIGNsYXNzPVwiY3FhLXctNCBjcWEtaC00IGNxYS10ZXh0LVsxNnB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLXBvaW50ZXItZXZlbnRzLW5vbmVcIj5cbiAgICAgICAgICAgICAge3sgc2VjdGlvbi5leHBhbmRlZCAhPT0gZmFsc2UgPyAnZXhwYW5kX2xlc3MnIDogJ2V4cGFuZF9tb3JlJyB9fVxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBDb2xsYXBzaWJsZSBDb250ZW50OiBSZWFzb24gYW5kIEFjdGlvbiBCdXR0b24gLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzZWN0aW9uLmV4cGFuZGVkICE9PSBmYWxzZVwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtWzEwcHhdXCI+XG4gICAgICAgICAgPCEtLSBSZWFzb24gLS0+XG4gICAgICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtZm9udC1ub3JtYWwgY3FhLWxlYWRpbmctWzE4cHhdIGNxYS10ZXh0LW5ldXRyYWwtNjAwXCI+XG4gICAgICAgICAgICBSZWFzb246IHt7IHNlY3Rpb24ucmVhc29uIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIFxuICAgICAgICAgIDwhLS0gQWN0aW9uIEJ1dHRvbiAtLT5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGNxYS1idXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgICAgKGNsaWNrZWQpPVwib25TZWN0aW9uQWN0aW9uKHNlY3Rpb24uaWQpXCJcbiAgICAgICAgICAgICAgW2N1c3RvbUNsYXNzXT1cIidjcWEtcHktWzlweF0gY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsxN3B4XSBjcWEtYm9yZGVyLXNsYXRlIGNxYS10ZXh0LXNsYXRlJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHNlY3Rpb24uYWN0aW9uQnV0dG9uTGFiZWwgfX1cbiAgICAgICAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIFxuICA8Y3FhLWJ1dHRvblxuICAgICAgdmFyaWFudD1cImZpbGxlZFwiXG4gICAgICAoY2xpY2tlZCk9XCJvbk1haW5BY3Rpb24oKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiaXNBcHBseWluZ1wiXG4gICAgICBbY3VzdG9tQ2xhc3NdPVwiJyFjcWEtdy1mdWxsICFjcWEtdGV4dC1bMTRweF0gIWNxYS1sZWFkaW5nLVsyMHB4XSAhY3FhLWZvbnQtc2VtaWJvbGQnXCJcbiAgICA+XG4gICAgICA8c3ZnIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTkuMDE4ODIgMEM5LjEyOTc5IDAuMDQ1NDc2NyA5LjE3NzE4IDAuMTU2NTMgOS4yMjI2MSAwLjI1OTY5MUM5LjI0NTM5IDAuMzE5Nzk5IDkuMjY2MjggMC4zODAyMzQgOS4yODY1NyAwLjQ0MTE1QzkuMjk0NTIgMC40NjQ0OTMgOS4zMDI0NiAwLjQ4NzgzNiA5LjMxMDY1IDAuNTExODg2QzkuNDE2MTMgMC44MjYwMDkgOS41MTAwOCAxLjE0MzUgOS42MDQ1NyAxLjQ2MDc2QzkuNjI1OTMgMS41MzIzOCA5LjY0NzM5IDEuNjAzOTcgOS42Njg4NSAxLjY3NTU3QzkuNzc4MSAyLjA0MDA3IDkuODg2NTQgMi40MDQ4IDkuOTk0MzggMi43Njk2OUMxMC4wMDk1IDIuODIwOTMgMTAuMDI0NyAyLjg3MjE4IDEwLjAzOTggMi45MjM0MkMxMC4wODI2IDMuMDY3OSAxMC4xMjUyIDMuMjEyMzkgMTAuMTY3NyAzLjM1Njk0QzEwLjI1NzMgMy42NjIzOSAxMC4zNDk1IDMuOTY2OTUgMTAuNDQ3NiA0LjI3MDAyQzEwLjQ1NjEgNC4yOTY1MyAxMC40NjQ3IDQuMzIzMDUgMTAuNDczNSA0LjM1MDM2QzEwLjcyODQgNS4xMjk5OSAxMS4wODk2IDUuODI4NzUgMTEuNjgxOCA2LjQyMzkzQzExLjY5NjUgNi40Mzk0IDExLjcxMTEgNi40NTQ4OCAxMS43MjYyIDYuNDcwODNDMTEuOTc5IDYuNzI4NzUgMTIuMzAzNCA2LjkzNTQxIDEyLjYyNzYgNy4xMDIyMUMxMi42NDQxIDcuMTEwODUgMTIuNjYwNiA3LjExOTQ4IDEyLjY3NzYgNy4xMjgzOEMxMy42MzE3IDcuNjE4NTEgMTQuNzc5IDcuODM0MDcgMTUuODEyNCA4LjEyMTAxQzE2LjI2NTIgOC4yNDY4MSAxNi43MTY2IDguMzc2NTggMTcuMTY2MyA4LjUxMjA2QzE3LjE5NzkgOC41MjE1NyAxNy4yMjk2IDguNTMxMDcgMTcuMjYxMiA4LjU0MDU1QzE3LjM1NTcgOC41Njg5IDE3LjQ1IDguNTk3NzQgMTcuNTQ0MiA4LjYyNjk0QzE3LjU2NjIgOC42MzM1OCAxNy41ODgyIDguNjQwMjMgMTcuNjEwOCA4LjY0NzA3QzE3Ljc0MDYgOC42ODgxMiAxNy44NjQ4IDguNzM2NTggMTcuOTcxMyA4LjgyMDU0QzE4LjAwMzggOC44ODgzNyAxOC4wMDM4IDguODg4MzcgMTcuOTk1IDguOTU2MTlDMTcuODkxMyA5LjA1NDcyIDE3Ljc4ODQgOS4xMDA5MiAxNy42NTE2IDkuMTQ1OTlDMTcuNjMyIDkuMTUyNjQgMTcuNjEyNCA5LjE1OTMgMTcuNTkyMyA5LjE2NjE1QzE3LjM2MTIgOS4yNDM2NiAxNy4xMjcgOS4zMTE0OSAxNi44OTI1IDkuMzc4NzFDMTYuODQ0NCA5LjM5MjYxIDE2Ljc5NjMgOS40MDY1MSAxNi43NDgyIDkuNDIwNDJDMTYuNDUxNCA5LjUwNjAzIDE2LjE1NDIgOS41ODk4IDE1Ljg1NjYgOS42NzI2M0MxNS40NjQ2IDkuNzgxNzUgMTUuMDczMyA5Ljg5MjY4IDE0LjY4MjMgMTAuMDA0OUMxNC42MTgyIDEwLjAyMzIgMTQuNTU0MSAxMC4wNDE2IDE0LjQ5IDEwLjA1OThDMTQuMTUzNCAxMC4xNTU3IDEzLjgxODUgMTAuMjU1MSAxMy40ODYzIDEwLjM2NDJDMTMuNDU4NyAxMC4zNzMyIDEzLjQzMTIgMTAuMzgyMiAxMy40MDI4IDEwLjM5MTVDMTIuMjkwMiAxMC43NjE2IDExLjQ0MjIgMTEuNDUyMiAxMC45MTE0IDEyLjQ2MkMxMC42MjUzIDEzLjAyOTUgMTAuNDU2NSAxMy42NDMyIDEwLjI4NDMgMTQuMjQ4OUMxMC4yMzc3IDE0LjQxMjQgMTAuMTg4MiAxNC41NzQ5IDEwLjEzODEgMTQuNzM3NEMxMC4wOTg4IDE0Ljg2NTIgMTAuMDYwNCAxNC45OTMzIDEwLjAyMyAxNS4xMjE2QzEwLjAxODUgMTUuMTM2OSAxMC4wMTQxIDE1LjE1MjIgMTAuMDA5NSAxNS4xNjc5QzkuOTg3ODggMTUuMjQxOSA5Ljk2NjM4IDE1LjMxNTkgOS45NDUwMyAxNS4zODk5QzkuODkwMzkgMTUuNTc3NiA5LjgzMTU2IDE1Ljc2MzcgOS43NzExMSAxNS45NDk4QzkuNjYzODMgMTYuMjgwNCA5LjU2NjIgMTYuNjEzNSA5LjQ2OTE3IDE2Ljk0N0M5LjMyMjg4IDE3LjQ0OTEgOS4zMjI4OCAxNy40NDkxIDkuMjM5OTMgMTcuNjkwNUM5LjIzNDQzIDE3LjcwNjcgOS4yMjg5MyAxNy43MjI5IDkuMjIzMjYgMTcuNzM5NkM5LjE5Mjk4IDE3LjgyNTYgOS4xNjE4MyAxNy45MDQ3IDkuMTA0NTMgMTcuOTc3NEM5LjAxNzM0IDE3Ljk5NTggOS4wMTczNCAxNy45OTU4IDguOTM5MDEgMThDOC44NDk0NiAxNy44NzUyIDguNzkwMTYgMTcuNzU0MiA4Ljc0MjY1IDE3LjYxMDJDOC43MzU3NCAxNy41ODk3IDguNzI4ODIgMTcuNTY5MyA4LjcyMTcgMTcuNTQ4M0M4LjYzMzY4IDE3LjI4NSA4LjU1NTAyIDE3LjAxODkgOC40NzYzNCAxNi43NTI5QzguNDU4MzIgMTYuNjkyMSA4LjQ0MDIyIDE2LjYzMTMgOC40MjIxMSAxNi41NzA1QzguMjg3MiAxNi4xMTczIDguMTU0NTEgMTUuNjYzNSA4LjAyMjAyIDE1LjIwOTZDNy40NzAxNCAxMi45NjQ1IDcuNDcwMTQgMTIuOTY0NSA2LjA3OCAxMS4xNDkzQzYuMDU1NjkgMTEuMTMxOSA2LjAzMzM4IDExLjExNDUgNi4wMTAzOSAxMS4wOTY2QzUuMDk4MjYgMTAuMzk4IDMuODk2NjcgMTAuMTM5NCAyLjc5NjMgOS44MzYyN0MyLjUyNDE1IDkuNzYxMjQgMi4yNTIxIDkuNjg1ODcgMS45ODAwNiA5LjYxMDQ2QzEuOTU2MjggOS42MDM4NiAxLjk1NjI4IDkuNjAzODYgMS45MzIwMSA5LjU5NzE0QzEuNTM5NjIgOS40ODgzNCAxLjE0NzM1IDkuMzc5MjUgMC43NTY0NDggOS4yNjU2NkMwLjczOTkxMSA5LjI2MDg5IDAuNzIzMzc1IDkuMjU2MTIgMC43MDYzMzggOS4yNTEyMUMwLjEwNTc5OCA5LjA3NzY3IDAuMTA1Nzk4IDkuMDc3NjcgMC4wMDEyOTMwNyA4Ljk1NjE5Qy0wLjAwMTY2MjUyIDguOTAxMDggLTAuMDAxNjYyNTIgOC45MDEwOCAwLjAyNDkzNzggOC44NDMxNUMwLjEzNDE2NyA4Ljc0MDggMC4yNDAxNTMgOC42OTY5NiAwLjM4NDMyIDguNjUyMzhDMC40MDUxOTQgOC42NDU2NyAwLjQyNjA2OCA4LjYzODk3IDAuNDQ3NTc0IDguNjMyMDZDMC41MTE1MDYgOC42MTE2NCAwLjU3NTU3NyA4LjU5MTY5IDAuNjM5NzAyIDguNTcxODNDMC42NTgwMDEgOC41NjYwOSAwLjY3NjMwMSA4LjU2MDM1IDAuNjk1MTU1IDguNTU0NDNDMC44MjQ1NyA4LjUxMzg1IDAuOTU0NDUgOC40NzQ3OSAxLjA4NDUyIDguNDM2MThDMS4xMTY0OCA4LjQyNjY1IDEuMTE2NDggOC40MjY2NSAxLjE0OTA5IDguNDE2OTNDMS43MDQ1NCA4LjI1MTc0IDIuMjYzNjEgOC4wOTgwMSAyLjgyMjUyIDcuOTQzOTJDMy4yMzg5OSA3LjgyOTA5IDMuNjU0NzYgNy43MTIzNiA0LjA2OTIxIDcuNTkwOTdDNC4wODgyNSA3LjU4NTQyIDQuMTA3MyA3LjU3OTg3IDQuMTI2OTIgNy41NzQxNUM1LjA4NyA3LjI5MzkzIDYuMDI1NTcgNi44OTYzMiA2LjY0NTQ3IDYuMTA3NEM2LjY1NDc1IDYuMDk1NjkgNi42NjQwMyA2LjA4Mzk5IDYuNjczNiA2LjA3MTk0QzcuMzYzOTUgNS4xOTYzIDcuNjMzMTUgNC4xMzE0NSA3LjkzMzkxIDMuMDkyNDFDOC4wMzI4NSAyLjc1MDY5IDguMTMyOTggMi40MDkyOSA4LjIzMzQ1IDIuMDY3OThDOC4yNjEyNyAxLjk3MzQ3IDguMjg5MDYgMS44Nzg5NCA4LjMxNjczIDEuNzg0MzlDOC40Mjc4OCAxLjQwNDU4IDguNTQwNyAxLjAyNTI4IDguNjYgMC42NDc3MjdDOC42NzExNiAwLjYxMjM3MiA4LjY4MjI3IDAuNTc3MDAxIDguNjkzMzMgMC41NDE2MTRDOC44NjAzNSAwLjAwNzk3NTIyIDguODYwMzUgMC4wMDc5NzUyMiA5LjAxODgyIDBaXCIgZmlsbD1cIiNGQkZDRkZcIi8+PHBhdGggZD1cIk0xNC40NzE5IDEuMTEwNjlDMTQuNTgwNSAxLjIyODE3IDE0LjYwMjIgMS4zNjYyNCAxNC42MzYgMS41MTYyNUMxNC43NDg3IDEuOTg3NTEgMTQuODc4NiAyLjQyMDg0IDE1LjMyOTMgMi42OTQ2QzE1LjYwNzQgMi44NDE2NyAxNS45Mzg5IDIuOTA4NTkgMTYuMjQ3IDIuOTcxOEMxNi4zNzcxIDIuOTk5MDIgMTYuNDg2OSAzLjAzNTE1IDE2LjU5ODUgMy4xMDc0QzE2LjYyMzYgMy4xNDU1NSAxNi42MjM2IDMuMTQ1NTUgMTYuNjIyMSAzLjIxMTk3QzE2LjU5NjMgMy4yOTI3MyAxNi41NzM2IDMuMzE4NzggMTYuNTA1NCAzLjM3MTY1QzE2LjQzMDggMy4zOTU0OSAxNi40MzA4IDMuMzk1NDkgMTYuMzQxMyAzLjQxNDA0QzE2LjMwNzUgMy40MjE0NyAxNi4yNzM2IDMuNDI4OTggMTYuMjM5OCAzLjQzNjU2QzE2LjIyMTcgMy40NDA1OCAxNi4yMDM2IDMuNDQ0NiAxNi4xODQ5IDMuNDQ4NzRDMTUuNjMzOSAzLjU3MDYyIDE1LjYzMzkgMy41NzA2MiAxNS4xNTc2IDMuODQ2NDVDMTUuMTQyMSAzLjg1ODM3IDE1LjEyNjcgMy44NzAyOSAxNS4xMTA3IDMuODgyNTdDMTQuNzcwMyA0LjE2OTU5IDE0LjY5ODMgNC42NDcwMyAxNC41OTU4IDUuMDQ2OTlDMTQuNTkgNS4wNjg5NiAxNC41ODQxIDUuMDkwOTIgMTQuNTc4IDUuMTEzNTVDMTQuNTczIDUuMTMzIDE0LjU2NzkgNS4xNTI0NCAxNC41NjI3IDUuMTcyNDhDMTQuNTQwNSA1LjIzMTg1IDE0LjUxNzYgNS4yNzA1NyAxNC40NzE5IDUuMzE2MDdDMTQuMzQ0NyA1LjMzMTUyIDE0LjM0NDcgNS4zMzE1MiAxNC4yODI4IDUuMzE2MDdDMTQuMTg0MyA1LjI0MzA5IDE0LjE2MjMgNS4xNTk5NyAxNC4xMzY2IDUuMDQ4MjhDMTQuMTMyMiA1LjAzMDk5IDE0LjEyNzkgNS4wMTM2OSAxNC4xMjM1IDQuOTk1ODdDMTQuMTA5OCA0Ljk0MDY0IDE0LjA5NjUgNC44ODUzMSAxNC4wODMzIDQuODI5OTZDMTMuOTc5NiA0LjM5ODkxIDEzLjg2MjUgMy45NzYgMTMuNDQ5IDMuNzIzMzNDMTMuMTI1OCAzLjU1MTAxIDEyLjczMjkgMy40Njk1MSAxMi4zNzE3IDMuNDAzN0MxMi4yNzI3IDMuMzgzOTkgMTIuMjE2IDMuMzU5MiAxMi4xNTQ3IDMuMjgxMjFDMTIuMTQxNCAzLjIwMjA4IDEyLjE0MTQgMy4yMDIwOCAxMi4xNTQ3IDMuMTIyOTRDMTIuMjQ4OSAzLjAyOTcxIDEyLjM0OCAzLjAwNjk2IDEyLjQ3NTQgMi45Nzg4MUMxMi41MTU2IDIuOTY5MyAxMi41NTU3IDIuOTU5NzMgMTIuNTk1OCAyLjk1MDFDMTIuNjE2NSAyLjk0NTE2IDEyLjYzNzIgMi45NDAyMiAxMi42NTg2IDIuOTM1MTJDMTIuNzY0MiAyLjkwOTExIDEyLjg2ODkgMi44Nzk5NSAxMi45NzM0IDIuODUwMjFDMTIuOTkyNCAyLjg0NDk0IDEzLjAxMTQgMi44Mzk2NyAxMy4wMzEgMi44MzQyNEMxMy4yNDM2IDIuNzczNDYgMTMuNDI3MSAyLjY5NTcxIDEzLjU5NzEgMi41NTc3QzEzLjYxMjkgMi41NDUyMyAxMy42Mjg4IDIuNTMyNzYgMTMuNjQ1MSAyLjUxOTlDMTMuOTA5NiAyLjI5MjI4IDEzLjk5OTUgMS45NTAzMiAxNC4wODEgMS42MzEyNEMxNC4wODczIDEuNjA3MDIgMTQuMDkzNSAxLjU4MjggMTQuMDk5OSAxLjU1Nzg0QzE0LjExMjMgMS41MDkxOCAxNC4xMjQ0IDEuNDYwNDYgMTQuMTM2MyAxLjQxMTdDMTQuMTQ0OSAxLjM3Nzc2IDE0LjE0NDkgMS4zNzc3NiAxNC4xNTM1IDEuMzQzMTVDMTQuMTU4NSAxLjMyMjg4IDE0LjE2MzUgMS4zMDI2MSAxNC4xNjg2IDEuMjgxNzJDMTQuMTkwNCAxLjIxNzE5IDE0LjIxOSAxLjE2NjUyIDE0LjI1OTEgMS4xMTA2OUMxNC4zMzYyIDEuMDczODUgMTQuMzkwMyAxLjA5MDUgMTQuNDcxOSAxLjExMDY5WlwiIGZpbGw9XCIjRkJGQ0ZGXCIvPjxwYXRoIGQ9XCJNMy41OTA4OSAxMi40OTQyQzMuNjE5MDIgMTIuNDk0NCAzLjYxOTAyIDEyLjQ5NDQgMy42NDc3MiAxMi40OTQ2QzMuODQ5NTQgMTIuNTAwNCAzLjk4NjA5IDEyLjU2MjMgNC4xMzQ3MiAxMi42OTJDNC4zMDc2NyAxMi44NzA3IDQuMzg3NTMgMTMuMDcyMiA0LjM4Mjk5IDEzLjMxM0M0LjM2MzU3IDEzLjUwODIgNC4yNDMxNiAxMy42Nzg3IDQuMDk1NDcgMTMuODEwN0MzLjkyMTYzIDEzLjk0NDggMy43NDYyNiAxMy45ODkyIDMuNTI0MTEgMTMuOTgzQzMuMzM2ODEgMTMuOTYyMSAzLjE2MDYgMTMuODc3IDMuMDI3ODUgMTMuNzQ5QzIuODYyNzYgMTMuNTMzNiAyLjgxNDUgMTMuMzM2MSAyLjgzODY5IDEzLjA3MDdDMi44ODg2NyAxMi44NjE4IDMuMDMyNzQgMTIuNjkyMyAzLjIxNzAxIDEyLjU3MzNDMy4zNDUwMiAxMi41MTEzIDMuNDQ3OTggMTIuNDkzIDMuNTkwODkgMTIuNDk0MlpcIiBmaWxsPVwiI0ZCRkNGRlwiLz48L3N2Zz5cbiAgICAgIHt7IGlzQXBwbHlpbmcgPyAnQXBwbHlpbmcgc3VnZ2VzdGlvbicgOiAnQXBwbHkgc3VnZ2VzdGlvbicgfX1cbiAgICA8L2NxYS1idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4gXG4iXX0=
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zaWdodC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9pbnNpZ2h0LWNhcmQvaW5zaWdodC1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9pbnNpZ2h0LWNhcmQvaW5zaWdodC1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixJQUFJLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQXdCbEcsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDbEMsOENBQThDO1FBQ3JDLDJCQUFzQixHQUFZLElBQUksQ0FBQztRQUN4QyxZQUFPLEdBQW1CLEVBQUUsQ0FBQztRQVc1QixxQkFBZ0IsR0FBWSxJQUFJLENBQUM7UUFDakMsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBQ3ZDLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUU1QyxvQ0FBb0M7UUFDNUIseUJBQW9CLEdBQXlCLElBQUksR0FBRyxFQUFFLENBQUM7UUFFL0QsZ0NBQWdDO1FBQ2hDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFbEIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzdDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQXFDLENBQUM7UUFDdEUsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNoRCwyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2xELCtCQUEwQixHQUFHLElBQUksWUFBWSxFQUFRLENB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QUFvQixDQUFDO1lBQzlCLEtBQUssT0FBTztnQkFDVixPQUFPLG9CQUFvQixDQUFDO1lBQzlCO2dCQUNFLE9BQU8sbUJBQW1CLENBQUM7U0FDOUI7SUFDSCxDQUFDOztpSEEzTFUsb0JBQW9CO3FHQUFwQixvQkFBb0IsNnFCQ3pCakMsd25ZQW9IQTsyRkQzRmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjs4QkFLbkIsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsc0JBQXNCO3NCQUE5QixLQUFLO2dCQUdGLE1BQU07c0JBRFQsS0FBSztnQkFPRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQVFJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNO2dCQUNHLDBCQUEwQjtzQkFBbkMsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0TWV0YWRhdGFWYWx1ZVN0eWxlIGFzIGdldE1ldGFkYXRhQ29sb3JTdHlsZSB9IGZyb20gJy4uLy4uL3V0aWxzL21ldGFkYXRhLWNvbG9ycy51dGlsJztcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFkZ2UvYmFkZ2UuY29tcG9uZW50JztcblxuLy8gVXNlIEJhZGdlQ29tcG9uZW50IGlucHV0cyBkaXJlY3RseSBpbnN0ZWFkIG9mIGEgc2VwYXJhdGUgaW50ZXJmYWNlXG5leHBvcnQgdHlwZSBJbnNpZ2h0QmFkZ2UgPSBQaWNrPEJhZGdlQ29tcG9uZW50LCAnbGFiZWwnIHwgJ2ljb24nIHwgJ3ZhcmlhbnQnPjtcblxuZXhwb3J0IGludGVyZmFjZSBJbnNpZ2h0TWV0YWRhdGEge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmc7IGhpZ2hsaWdodD86IGJvb2xlYW4gfTtcbn1cblxuaW50ZXJmYWNlIEludGVybmFsSW5zaWdodFNlY3Rpb24ge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICB2YXJpYW50OiAnd2FybmluZycgfCAnZXJyb3InIHwgJ2RlZmF1bHQnO1xuICByZWFzb246IHN0cmluZztcbiAgYWN0aW9uQnV0dG9uTGFiZWw6IHN0cmluZztcbiAgZXhwYW5kZWQ/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtaW5zaWdodC1jYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2luc2lnaHQtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW11cbn0pXG5leHBvcnQgY2xhc3MgSW5zaWdodENhcmRDb21wb25lbnQge1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcbiAgLyoqIFNob3cvaGlkZSB0aGUgQUkgc3VnZ2VzdGlvbiBtYWluIGJ1dHRvbiAqL1xuICBASW5wdXQoKSBzaG93QWlTdWdnZXN0aW9uQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfYmFkZ2VzOiBJbnNpZ2h0QmFkZ2VbXSA9IFtdO1xuICBASW5wdXQoKVxuICBzZXQgYmFkZ2VzKHZhbHVlOiBJbnNpZ2h0QmFkZ2VbXSkge1xuICAgIHRoaXMuX2JhZGdlcyA9IHZhbHVlO1xuICB9XG4gIGdldCBiYWRnZXMoKTogSW5zaWdodEJhZGdlW10ge1xuICAgIHJldHVybiB0aGlzLl9iYWRnZXM7XG4gIH1cbiAgQElucHV0KCkgbWV0YWRhdGE/OiBJbnNpZ2h0TWV0YWRhdGE7XG4gIEBJbnB1dCgpIHByZXJlcXVpc2l0ZVNlY3Rpb24/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRlc3REYXRhU2VjdGlvbj86IHN0cmluZztcbiAgQElucHV0KCkgbWV0YWRhdGFFeHBhbmRlZDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGlzUHJlcmVxdWlzaXRlTWlzc2luZzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc1Rlc3REYXRhTWlzc2luZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIFRyYWNrIGV4cGFuZGVkIHN0YXRlIGZvciBzZWN0aW9uc1xuICBwcml2YXRlIHNlY3Rpb25FeHBhbmRlZFN0YXRlOiBNYXA8c3RyaW5nLCBib29sZWFuPiA9IG5ldyBNYXAoKTtcbiAgXG4gIC8vIExvYWRpbmcgc3RhdGUgZm9yIG1haW4gYWN0aW9uXG4gIGlzQXBwbHlpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgbWV0YWRhdGFUb2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBzZWN0aW9uVG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGlkOiBzdHJpbmc7IGV4cGFuZGVkOiBib29sZWFuIH0+KCk7XG4gIEBPdXRwdXQoKSBzZWN0aW9uQWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIG9uQXBwbHlTdWdnZXN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBvbkF0dGFjaFByZXJlcXVpc2l0ZXNDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIG9uSW1wb3J0VGVzdERhdGFDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICB0b2dnbGVNZXRhZGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLm1ldGFkYXRhRXhwYW5kZWQgPSAhdGhpcy5tZXRhZGF0YUV4cGFuZGVkO1xuICAgIHRoaXMubWV0YWRhdGFUb2dnbGUuZW1pdCh0aGlzLm1ldGFkYXRhRXhwYW5kZWQpO1xuICB9XG5cbiAgdG9nZ2xlU2VjdGlvbihzZWN0aW9uOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFN0YXRlID0gdGhpcy5zZWN0aW9uRXhwYW5kZWRTdGF0ZS5nZXQoc2VjdGlvbi5pZCkgPz8gKHNlY3Rpb24uZXhwYW5kZWQgPz8gdHJ1ZSk7XG4gICAgY29uc3QgbmV3U3RhdGUgPSAhY3VycmVudFN0YXRlO1xuICAgIHRoaXMuc2VjdGlvbkV4cGFuZGVkU3RhdGUuc2V0KHNlY3Rpb24uaWQsIG5ld1N0YXRlKTtcbiAgICAvLyBFbnN1cmUgaW1tZWRpYXRlIFVJIGZlZWRiYWNrIGJ5IHVwZGF0aW5nIHRoZSBwYXNzZWQgc2VjdGlvbiBvYmplY3RcbiAgICBzZWN0aW9uLmV4cGFuZGVkID0gbmV3U3RhdGU7XG4gICAgXG4gICAgdGhpcy5zZWN0aW9uVG9nZ2xlLmVtaXQoeyBpZDogc2VjdGlvbi5pZCwgZXhwYW5kZWQ6IG5ld1N0YXRlIH0pO1xuICB9XG5cbiAgb25TZWN0aW9uQWN0aW9uKHNlY3Rpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWN0aW9uQWN0aW9uQ2xpY2suZW1pdChzZWN0aW9uSWQpO1xuICAgIFxuICAgIC8vIEVtaXQgc3BlY2lmaWMgZXZlbnRzIGZvciBrbm93biBhY3Rpb25zXG4gICAgaWYgKHNlY3Rpb25JZCA9PT0gJ3ByZXJlcXVpc2l0ZScpIHtcbiAgICAgIHRoaXMub25BdHRhY2hQcmVyZXF1aXNpdGVzQ2xpY2suZW1pdCgpO1xuICAgIH0gZWxzZSBpZiAoc2VjdGlvbklkID09PSAndGVzdC1kYXRhJykge1xuICAgICAgdGhpcy5vbkltcG9ydFRlc3REYXRhQ2xpY2suZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2aXNpYmxlQmFkZ2VzKCk6IEluc2lnaHRCYWRnZVtdIHtcbiAgICBjb25zdCB2aXNpYmxlOiBJbnNpZ2h0QmFkZ2VbXSA9IFtdO1xuICAgIGlmICh0aGlzLmlzUHJlcmVxdWlzaXRlTWlzc2luZykge1xuICAgICAgdmlzaWJsZS5wdXNoKHsgbGFiZWw6ICdQcmVyZXF1aXNpdGUgTWlzc2luZycsIHZhcmlhbnQ6ICd3YXJuaW5nJyB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNUZXN0RGF0YU1pc3NpbmcpIHtcbiAgICAgIHZpc2libGUucHVzaCh7IGxhYmVsOiAnVGVzdCBEYXRhIE1pc3NpbmcnLCB2YXJpYW50OiAnZXJyb3InIH0pO1xuICAgIH1cbiAgICAvLyBBbHNvIGluY2x1ZGUgYW55IGN1c3RvbSBiYWRnZXNcbiAgICBpZiAodGhpcy5iYWRnZXMpIHtcbiAgICAgIHZpc2libGUucHVzaCguLi50aGlzLmJhZGdlcyk7XG4gICAgfVxuICAgIHJldHVybiB2aXNpYmxlO1xuICB9XG5cbiAgZ2V0IHZpc2libGVTZWN0aW9ucygpOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uW10ge1xuICAgIGNvbnN0IHZpc2libGU6IEludGVybmFsSW5zaWdodFNlY3Rpb25bXSA9IFtdO1xuICAgIFxuICAgIGlmICh0aGlzLmlzUHJlcmVxdWlzaXRlTWlzc2luZykge1xuICAgICAgLy8gVXNlIHN0b3JlZCBzdGF0ZSBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBkZWZhdWx0IHRvIHRydWVcbiAgICAgIGNvbnN0IGV4cGFuZGVkID0gdGhpcy5zZWN0aW9uRXhwYW5kZWRTdGF0ZS5oYXMoJ3ByZXJlcXVpc2l0ZScpIFxuICAgICAgICA/IHRoaXMuc2VjdGlvbkV4cGFuZGVkU3RhdGUuZ2V0KCdwcmVyZXF1aXNpdGUnKSFcbiAgICAgICAgOiB0cnVlO1xuICAgICAgXG4gICAgICB2aXNpYmxlLnB1c2goe1xuICAgICAgICBpZDogJ3ByZXJlcXVpc2l0ZScsXG4gICAgICAgIHRpdGxlOiAnUHJlcmVxdWlzaXRlIE1pc3NpbmcnLFxuICAgICAgICB2YXJpYW50OiAnd2FybmluZycsXG4gICAgICAgIHJlYXNvbjogdGhpcy5wcmVyZXF1aXNpdGVTZWN0aW9uIHx8ICdQcmVyZXF1aXNpdGUgZGF0YSBpcyBtaXNzaW5nLicsXG4gICAgICAgIGFjdGlvbkJ1dHRvbkxhYmVsOiAnQXR0YWNoIFByZXJlcXVpc2l0ZXMnLFxuICAgICAgICBleHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMuaXNUZXN0RGF0YU1pc3NpbmcpIHtcbiAgICAgIC8vIFVzZSBzdG9yZWQgc3RhdGUgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgZGVmYXVsdCB0byB0cnVlXG4gICAgICBjb25zdCBleHBhbmRlZCA9IHRoaXMuc2VjdGlvbkV4cGFuZGVkU3RhdGUuaGFzKCd0ZXN0LWRhdGEnKVxuICAgICAgICA/IHRoaXMuc2VjdGlvbkV4cGFuZGVkU3RhdGUuZ2V0KCd0ZXN0LWRhdGEnKSFcbiAgICAgICAgOiB0cnVlO1xuICAgICAgXG4gICAgICB2aXNpYmxlLnB1c2goe1xuICAgICAgICBpZDogJ3Rlc3QtZGF0YScsXG4gICAgICAgIHRpdGxlOiAnVGVzdCBEYXRhIE1pc3NpbmcnLFxuICAgICAgICB2YXJpYW50OiAnZXJyb3InLFxuICAgICAgICByZWFzb246IHRoaXMudGVzdERhdGFTZWN0aW9uIHx8ICdUZXN0IGRhdGEgaXMgbWlzc2luZy4nLFxuICAgICAgICBhY3Rpb25CdXR0b25MYWJlbDogJ0ltcG9ydCBUZXN0IERhdGEnLFxuICAgICAgICBleHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHZpc2libGU7XG4gIH1cblxuICBhc3luYyBvbk1haW5BY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNBcHBseWluZykge1xuICAgICAgcmV0dXJuOyAvLyBQcmV2ZW50IG11bHRpcGxlIGNsaWNrc1xuICAgIH1cbiAgICBcbiAgICB0aGlzLmlzQXBwbHlpbmcgPSB0cnVlO1xuICAgIFxuICAgIHRyeSB7XG4gICAgICB0aGlzLm9uQXBwbHlTdWdnZXN0aW9uQ2xpY2suZW1pdCgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBSZXNldCBsb2FkaW5nIHN0YXRlIGFmdGVyIGFjdGlvbiBjb21wbGV0ZXNcbiAgICAgIC8vIElmIHlvdSBuZWVkIHRvIGtlZXAgdGhlIGxvYWRpbmcgc3RhdGUgbG9uZ2VyLCBjYWxsIHJlc2V0QXBwbHlpbmdTdGF0ZSgpIG1hbnVhbGx5XG4gICAgICAvLyBhZnRlciB5b3VyIGFzeW5jIG9wZXJhdGlvbiBjb21wbGV0ZXNcbiAgICAgIHRoaXMuaXNBcHBseWluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIE1ldGhvZCB0byByZXNldCBsb2FkaW5nIHN0YXRlIChjYW4gYmUgY2FsbGVkIGV4dGVybmFsbHkgaWYgbmVlZGVkKVxuICByZXNldEFwcGx5aW5nU3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5pc0FwcGx5aW5nID0gZmFsc2U7XG4gIH1cblxuICAvLyBSZW1vdmVkIGdldEJhZGdlQ2xhc3NlcyAtIG5vdyB1c2luZyBCYWRnZUNvbXBvbmVudFxuXG4gIGdldFNlY3Rpb25Cb3JkZXJDbGFzcyhzZWN0aW9uOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHNlY3Rpb24udmFyaWFudCkge1xuICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgIHJldHVybiAnY3FhLWJvcmRlci1sLTQgY3FhLWJvcmRlci1sLXllbGxvdy01MDAnO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gJ2NxYS1ib3JkZXItbC00IGNxYS1ib3JkZXItbC1yZWQtNTAwJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLWJvcmRlci1sLTQgY3FhLWJvcmRlci1sLWdyYXktNTAwJztcbiAgICB9XG4gIH1cblxuICBnZXRNZXRhZGF0YVZhbHVlQ2xhc3NlcyhrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGlnaGxpZ2h0PzogYm9vbGVhbiB9KTogc3RyaW5nIHtcbiAgICAvLyBCYXNlIGNsYXNzZXMgZm9yIGFsbCB2YWx1ZXMgKGZvbnQtc2l6ZTogMTRweCwgbGluZS1oZWlnaHQ6IDE4cHgsIGZvbnQtd2VpZ2h0OiA0MDApXG4gICAgcmV0dXJuICdjcWEtZm9udC1ub3JtYWwgY3FhLWxlYWRpbmctWzE4cHhdIGNxYS10cmFja2luZy1ub3JtYWwnO1xuICB9XG5cbiAgZ2V0TWV0YWRhdGFWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyBoaWdobGlnaHQ/OiBib29sZWFuIH0pOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcbiAgfVxuXG4gIGdldE1ldGFkYXRhVmFsdWVTdHlsZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGlnaGxpZ2h0PzogYm9vbGVhbiB9KTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgLy8gVXNlIHRoZSBzaGFyZWQgdXRpbGl0eSBmdW5jdGlvbiBmb3IgY29uc2lzdGVudCBjb2xvcnNcbiAgICByZXR1cm4gZ2V0TWV0YWRhdGFDb2xvclN0eWxlKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0U2VjdGlvblRpdGxlQ2xhc3NlcyhzZWN0aW9uOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlQ2xhc3NlcyA9IFsnY3FhLXRleHQtc20nLCAnY3FhLWxlYWRpbmctWzE3cHhdJywgJ2NxYS1mb250LXNlbWlib2xkJ107XG4gICAgXG4gICAgc3dpdGNoIChzZWN0aW9uLnZhcmlhbnQpIHtcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtWyM3ODM1MEZdJ10uam9pbignICcpO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtWyM4ODEzMzddJ10uam9pbignICcpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtaW5rJ10uam9pbignICcpO1xuICAgIH1cbiAgfVxuXG4gIGdldFNlY3Rpb25JY29uQ29sb3Ioc2VjdGlvbjogSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbik6IHN0cmluZyB7XG4gICAgc3dpdGNoIChzZWN0aW9uLnZhcmlhbnQpIHtcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gJ2NxYS10ZXh0LVsjNzgzNTBGXSc7XG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHJldHVybiAnY3FhLXRleHQtWyM4ODEzMzddJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLXRleHQtZ3JheS00MDAnO1xuICAgIH1cbiAgfVxufVxuXG5cbiIsIjxkaXYgaWQ9XCJjcWEtdWktcm9vdFwiPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZvbnQtaW50ZXIgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtNCBjcWEtcHgtWzIxcHhdIGNxYS1weS0zIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRUNFQ0VDXSBjcWEtcm91bmRlZC14bCBjcWEtc2hhZG93LWNhcmRcIj5cbiAgICA8IS0tIFNlY3Rpb24gMTogQmFkZ2VzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMyBjcWEtcHktWzEuNV1cIiAqbmdJZj1cInZpc2libGVCYWRnZXMubGVuZ3RoID4gMFwiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xNC40ODY2IDEyLjAwMDVMOS4xNTMyOSAyLjY2NzE0QzkuMDM3IDIuNDYxOTQgOC44NjgzNiAyLjI5MTI3IDguNjY0NTcgMi4xNzI1MkM4LjQ2MDc4IDIuMDUzNzggOC4yMjkxNSAxLjk5MTIxIDcuOTkzMjkgMS45OTEyMUM3Ljc1NzQzIDEuOTkxMjEgNy41MjU3OSAyLjA1Mzc4IDcuMzIyIDIuMTcyNTJDNy4xMTgyMiAyLjI5MTI3IDYuOTQ5NTggMi40NjE5NCA2LjgzMzI5IDIuNjY3MTRMMS40OTk5NSAxMi4wMDA1QzEuMzgyNDEgMTIuMjA0IDEuMzIwNzcgMTIuNDM1MSAxLjMyMTI5IDEyLjY3MDFDMS4zMjE4MSAxMi45MDUyIDEuMzg0NDcgMTMuMTM2IDEuNTAyOTIgMTMuMzM5QzEuNjIxMzYgMTMuNTQyMSAxLjc5MTM4IDEzLjcxMDIgMS45OTU3NSAxMy44MjY0QzIuMjAwMTEgMTMuOTQyNSAyLjQzMTU2IDE0LjAwMjYgMi42NjY2MiAxNC4wMDA1SDEzLjMzMzNDMTMuNTY3MiAxNC4wMDAyIDEzLjc5NyAxMy45Mzg1IDEzLjk5OTUgMTMuODIxM0MxNC4yMDIgMTMuNzA0MiAxNC4zNzAxIDEzLjUzNTkgMTQuNDg3IDEzLjMzMzJDMTQuNjAzOCAxMy4xMzA2IDE0LjY2NTMgMTIuOTAwNyAxNC42NjUzIDEyLjY2NjhDMTQuNjY1MiAxMi40MzI5IDE0LjYwMzYgMTIuMjAzMSAxNC40ODY2IDEyLjAwMDVaXCIgc3Ryb2tlPVwiI0UyQUMyMFwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk04IDZWOC42NjY2N1wiIHN0cm9rZT1cIiNFMkFDMjBcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNOCAxMS4zMzNIOC4wMDY2N1wiIHN0cm9rZT1cIiNFMkFDMjBcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxjcWEtYmFkZ2UgXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGJhZGdlIG9mIHZpc2libGVCYWRnZXNcIiBcbiAgICAgICAgICBbbGFiZWxdPVwiYmFkZ2UubGFiZWxcIlxuICAgICAgICAgIFtpY29uXT1cImJhZGdlLmljb25cIlxuICAgICAgICAgIFt2YXJpYW50XT1cImJhZGdlLnZhcmlhbnQgfHwgJ2RlZmF1bHQnXCJcbiAgICAgICAgPjwvY3FhLWJhZGdlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNlY3Rpb24gMjogVGl0bGUgJiBEZXNjcmlwdGlvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtM1wiPlxuICAgICAgPGgyIGNsYXNzPVwiY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LWxnIGNxYS1sZWFkaW5nLVsyMnB4XSBjcWEtdGV4dC10aXRsZVwiPlxuICAgICAgICB7eyB0aXRsZSB9fVxuICAgICAgPC9oMj5cbiAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtYmFzZSBjcWEtZm9udC1ub3JtYWwgY3FhLXRleHQtZGVzY3JpcHRpb25cIj5cbiAgICAgICAge3sgZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cblxuICA8IS0tIFNlY3Rpb24gMzogTWV0YWRhdGEgU2VjdGlvbiAoYWx3YXlzIHZpc2libGUpIC0tPlxuICA8ZGl2ICpuZ0lmPVwibWV0YWRhdGFcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWJnLXN1cmZhY2UtZGVmYXVsdCBjcWEtcm91bmRlZC1bMTBweF0gY3FhLXB4LTQgY3FhLXB5LTMgY3FhLWJvcmRlci10IGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci10LXByaW1hcnktc3VyZmFjZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLVsyNXB4XVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1ldGFkYXRhIHwga2V5dmFsdWU7IGxldCBsYXN0ID0gbGFzdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtWzZweF1cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLWZvbnQtbm9ybWFsIGNxYS1mb250LWludGVyIGNxYS10ZXh0LW1ldGFkYXRhLWtleVwiPlxuICAgICAgICAgICAgICB7eyBpdGVtLmtleSB9fTpcbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIFxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRNZXRhZGF0YVZhbHVlQ2xhc3NlcyhpdGVtLmtleSwgaXRlbS52YWx1ZSlcIiBcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0TWV0YWRhdGFWYWx1ZVN0eWxlKGl0ZW0ua2V5LCBpdGVtLnZhbHVlKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3FhLWZvbnQtbm9ybWFsIGNxYS1sZWFkaW5nLVsxOHB4XSBjcWEtZm9udC1pbnRlciBjcWEtdGV4dC1zbSBjcWEtdGV4dC10aXRsZVwiPlxuICAgICAgICAgICAgICB7eyBnZXRNZXRhZGF0YVZhbHVlKGl0ZW0udmFsdWUpIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFsYXN0XCIgY2xhc3M9XCJjcWEtaC00IGNxYS13LXB4IGNxYS1iZy1ncmF5LTIwMFwiPjwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWN0aW9uIDQ6IE1ldGFkYXRhIHRvZ2dsZSAtLT5cbiAgICA8YnV0dG9uICpuZ0lmPVwibWV0YWRhdGEgJiYgKGlzUHJlcmVxdWlzaXRlTWlzc2luZyB8fCBpc1Rlc3REYXRhTWlzc2luZylcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLXRleHQtcHJpbWFyeSBjcWEtaW5saW5lLWZsZXggY3FhLWZvbnQtaW50ZXIgY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLVs2cHhdXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVNZXRhZGF0YSgpXCI+XG4gICAgICA8c3Bhbj57eyBtZXRhZGF0YUV4cGFuZGVkID8gJ0hpZGUgZGV0YWlscycgOiAnU2hvdyBkZXRhaWxzJyB9fTwvc3Bhbj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS13LVsxNHB4XSBjcWEtaC1bMTRweF0gY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsxNHB4XVwiPlxuICAgICAgICB7eyBtZXRhZGF0YUV4cGFuZGVkID8gJ2V4cGFuZF9sZXNzJyA6ICdleHBhbmRfbW9yZScgfX1cbiAgICAgIDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgPCEtLSBTZWN0aW9uIDU6IFNlY3Rpb25zICh0b2dnbGUgdmlzaWJpbGl0eSkgLS0+XG4gIDxkaXYgKm5nSWY9XCJtZXRhZGF0YUV4cGFuZGVkICYmIHZpc2libGVTZWN0aW9ucz8ubGVuZ3RoXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC00XCI+XG4gICAgPGRpdlxuICAgICAgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgdmlzaWJsZVNlY3Rpb25zXCJcbiAgICAgIGNsYXNzPVwiY3FhLWJvcmRlci1sLTQgY3FhLWJvcmRlci1zb2xpZCBjcWEtcm91bmRlZC1bMTBweF0gY3FhLW92ZXJmbG93LWhpZGRlblwiXG4gICAgICBbbmdDbGFzc109XCJnZXRTZWN0aW9uQm9yZGVyQ2xhc3Moc2VjdGlvbilcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtcC1bMTBweF0gY3FhLXBsLVsyMHB4XSBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0zXCI+XG4gICAgICAgIDwhLS0gU2VjdGlvbiBUaXRsZSB3aXRoIElubGluZSBDb2xsYXBzZSBCdXR0b24gLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDxoMyBbbmdDbGFzc109XCJnZXRTZWN0aW9uVGl0bGVDbGFzc2VzKHNlY3Rpb24pXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgIHt7IHNlY3Rpb24udGl0bGUgfX1cbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJjcWEtbWwtYXV0byBjcWEtaW5saW5lLWZsZXggY3FhLWN1cnNvci1wb2ludGVyIGNxYS1vdXRsaW5lLW5vbmUgY3FhLWJnLXRyYW5zcGFyZW50IGNxYS1ib3JkZXItbm9uZSBjcWEtcC0xIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1taW4tdy1bMjRweF0gY3FhLW1pbi1oLVsyNHB4XVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2VjdGlvbihzZWN0aW9uKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwic2VjdGlvbi5leHBhbmRlZCAhPT0gZmFsc2UgPyAnQ29sbGFwc2Ugc2VjdGlvbicgOiAnRXhwYW5kIHNlY3Rpb24nXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24gW25nQ2xhc3NdPVwiZ2V0U2VjdGlvbkljb25Db2xvcihzZWN0aW9uKVwiIGNsYXNzPVwiY3FhLXctNCBjcWEtaC00IGNxYS10ZXh0LVsxNnB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLXBvaW50ZXItZXZlbnRzLW5vbmVcIj5cbiAgICAgICAgICAgICAge3sgc2VjdGlvbi5leHBhbmRlZCAhPT0gZmFsc2UgPyAnZXhwYW5kX2xlc3MnIDogJ2V4cGFuZF9tb3JlJyB9fVxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBDb2xsYXBzaWJsZSBDb250ZW50OiBSZWFzb24gYW5kIEFjdGlvbiBCdXR0b24gLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzZWN0aW9uLmV4cGFuZGVkICE9PSBmYWxzZVwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtWzEwcHhdXCI+XG4gICAgICAgICAgPCEtLSBSZWFzb24gLS0+XG4gICAgICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtZm9udC1ub3JtYWwgY3FhLWxlYWRpbmctWzE4cHhdIGNxYS10ZXh0LW5ldXRyYWwtNjAwXCI+XG4gICAgICAgICAgICBSZWFzb246IHt7IHNlY3Rpb24ucmVhc29uIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIFxuICAgICAgICAgIDwhLS0gQWN0aW9uIEJ1dHRvbiAtLT5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGNxYS1idXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgICAgKGNsaWNrZWQpPVwib25TZWN0aW9uQWN0aW9uKHNlY3Rpb24uaWQpXCJcbiAgICAgICAgICAgICAgW2N1c3RvbUNsYXNzXT1cIidjcWEtcHktWzlweF0gY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsxN3B4XSBjcWEtYm9yZGVyLXNsYXRlIGNxYS10ZXh0LXNsYXRlIGNxYS10cmFuc2l0aW9uIGNxYS1kdXJhdGlvbi0xNTAgY3FhLWVhc2UtaW4tb3V0IGNxYS1ob3ZlcjpjcWEtYm9yZGVyLXByaW1hcnkgY3FhLWhvdmVyOmNxYS10ZXh0LXByaW1hcnkgY3FhLWhvdmVyOmNxYS1iZy1wcmltYXJ5LXN1cmZhY2UnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgc2VjdGlvbi5hY3Rpb25CdXR0b25MYWJlbCB9fVxuICAgICAgICAgICAgPC9jcWEtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgXG4gIDxjcWEtYnV0dG9uXG4gICAgICAqbmdJZj1cInNob3dBaVN1Z2dlc3Rpb25CdXR0b25cIlxuICAgICAgdmFyaWFudD1cImZpbGxlZFwiXG4gICAgICAoY2xpY2tlZCk9XCJvbk1haW5BY3Rpb24oKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiaXNBcHBseWluZ1wiXG4gICAgICBbY3VzdG9tQ2xhc3NdPVwiJyFjcWEtdy1mdWxsICFjcWEtdGV4dC1bMTRweF0gIWNxYS1sZWFkaW5nLVsyMHB4XSAhY3FhLWZvbnQtc2VtaWJvbGQnXCJcbiAgICA+XG4gICAgICA8c3ZnIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTkuMDE4ODIgMEM5LjEyOTc5IDAuMDQ1NDc2NyA5LjE3NzE4IDAuMTU2NTMgOS4yMjI2MSAwLjI1OTY5MUM5LjI0NTM5IDAuMzE5Nzk5IDkuMjY2MjggMC4zODAyMzQgOS4yODY1NyAwLjQ0MTE1QzkuMjk0NTIgMC40NjQ0OTMgOS4zMDI0NiAwLjQ4NzgzNiA5LjMxMDY1IDAuNTExODg2QzkuNDE2MTMgMC44MjYwMDkgOS41MTAwOCAxLjE0MzUgOS42MDQ1NyAxLjQ2MDc2QzkuNjI1OTMgMS41MzIzOCA5LjY0NzM5IDEuNjAzOTcgOS42Njg4NSAxLjY3NTU3QzkuNzc4MSAyLjA0MDA3IDkuODg2NTQgMi40MDQ4IDkuOTk0MzggMi43Njk2OUMxMC4wMDk1IDIuODIwOTMgMTAuMDI0NyAyLjg3MjE4IDEwLjAzOTggMi45MjM0MkMxMC4wODI2IDMuMDY3OSAxMC4xMjUyIDMuMjEyMzkgMTAuMTY3NyAzLjM1Njk0QzEwLjI1NzMgMy42NjIzOSAxMC4zNDk1IDMuOTY2OTUgMTAuNDQ3NiA0LjI3MDAyQzEwLjQ1NjEgNC4yOTY1MyAxMC40NjQ3IDQuMzIzMDUgMTAuNDczNSA0LjM1MDM2QzEwLjcyODQgNS4xMjk5OSAxMS4wODk2IDUuODI4NzUgMTEuNjgxOCA2LjQyMzkzQzExLjY5NjUgNi40Mzk0IDExLjcxMTEgNi40NTQ4OCAxMS43MjYyIDYuNDcwODNDMTEuOTc5IDYuNzI4NzUgMTIuMzAzNCA2LjkzNTQxIDEyLjYyNzYgNy4xMDIyMUMxMi42NDQxIDcuMTEwODUgMTIuNjYwNiA3LjExOTQ4IDEyLjY3NzYgNy4xMjgzOEMxMy42MzE3IDcuNjE4NTEgMTQuNzc5IDcuODM0MDcgMTUuODEyNCA4LjEyMTAxQzE2LjI2NTIgOC4yNDY4MSAxNi43MTY2IDguMzc2NTggMTcuMTY2MyA4LjUxMjA2QzE3LjE5NzkgOC41MjE1NyAxNy4yMjk2IDguNTMxMDcgMTcuMjYxMiA4LjU0MDU1QzE3LjM1NTcgOC41Njg5IDE3LjQ1IDguNTk3NzQgMTcuNTQ0MiA4LjYyNjk0QzE3LjU2NjIgOC42MzM1OCAxNy41ODgyIDguNjQwMjMgMTcuNjEwOCA4LjY0NzA3QzE3Ljc0MDYgOC42ODgxMiAxNy44NjQ4IDguNzM2NTggMTcuOTcxMyA4LjgyMDU0QzE4LjAwMzggOC44ODgzNyAxOC4wMDM4IDguODg4MzcgMTcuOTk1IDguOTU2MTlDMTcuODkxMyA5LjA1NDcyIDE3Ljc4ODQgOS4xMDA5MiAxNy42NTE2IDkuMTQ1OTlDMTcuNjMyIDkuMTUyNjQgMTcuNjEyNCA5LjE1OTMgMTcuNTkyMyA5LjE2NjE1QzE3LjM2MTIgOS4yNDM2NiAxNy4xMjcgOS4zMTE0OSAxNi44OTI1IDkuMzc4NzFDMTYuODQ0NCA5LjM5MjYxIDE2Ljc5NjMgOS40MDY1MSAxNi43NDgyIDkuNDIwNDJDMTYuNDUxNCA5LjUwNjAzIDE2LjE1NDIgOS41ODk4IDE1Ljg1NjYgOS42NzI2M0MxNS40NjQ2IDkuNzgxNzUgMTUuMDczMyA5Ljg5MjY4IDE0LjY4MjMgMTAuMDA0OUMxNC42MTgyIDEwLjAyMzIgMTQuNTU0MSAxMC4wNDE2IDE0LjQ5IDEwLjA1OThDMTQuMTUzNCAxMC4xNTU3IDEzLjgxODUgMTAuMjU1MSAxMy40ODYzIDEwLjM2NDJDMTMuNDU4NyAxMC4zNzMyIDEzLjQzMTIgMTAuMzgyMiAxMy40MDI4IDEwLjM5MTVDMTIuMjkwMiAxMC43NjE2IDExLjQ0MjIgMTEuNDUyMiAxMC45MTE0IDEyLjQ2MkMxMC42MjUzIDEzLjAyOTUgMTAuNDU2NSAxMy42NDMyIDEwLjI4NDMgMTQuMjQ4OUMxMC4yMzc3IDE0LjQxMjQgMTAuMTg4MiAxNC41NzQ5IDEwLjEzODEgMTQuNzM3NEMxMC4wOTg4IDE0Ljg2NTIgMTAuMDYwNCAxNC45OTMzIDEwLjAyMyAxNS4xMjE2QzEwLjAxODUgMTUuMTM2OSAxMC4wMTQxIDE1LjE1MjIgMTAuMDA5NSAxNS4xNjc5QzkuOTg3ODggMTUuMjQxOSA5Ljk2NjM4IDE1LjMxNTkgOS45NDUwMyAxNS4zODk5QzkuODkwMzkgMTUuNTc3NiA5LjgzMTU2IDE1Ljc2MzcgOS43NzExMSAxNS45NDk4QzkuNjYzODMgMTYuMjgwNCA5LjU2NjIgMTYuNjEzNSA5LjQ2OTE3IDE2Ljk0N0M5LjMyMjg4IDE3LjQ0OTEgOS4zMjI4OCAxNy40NDkxIDkuMjM5OTMgMTcuNjkwNUM5LjIzNDQzIDE3LjcwNjcgOS4yMjg5MyAxNy43MjI5IDkuMjIzMjYgMTcuNzM5NkM5LjE5Mjk4IDE3LjgyNTYgOS4xNjE4MyAxNy45MDQ3IDkuMTA0NTMgMTcuOTc3NEM5LjAxNzM0IDE3Ljk5NTggOS4wMTczNCAxNy45OTU4IDguOTM5MDEgMThDOC44NDk0NiAxNy44NzUyIDguNzkwMTYgMTcuNzU0MiA4Ljc0MjY1IDE3LjYxMDJDOC43MzU3NCAxNy41ODk3IDguNzI4ODIgMTcuNTY5MyA4LjcyMTcgMTcuNTQ4M0M4LjYzMzY4IDE3LjI4NSA4LjU1NTAyIDE3LjAxODkgOC40NzYzNCAxNi43NTI5QzguNDU4MzIgMTYuNjkyMSA4LjQ0MDIyIDE2LjYzMTMgOC40MjIxMSAxNi41NzA1QzguMjg3MiAxNi4xMTczIDguMTU0NTEgMTUuNjYzNSA4LjAyMjAyIDE1LjIwOTZDNy40NzAxNCAxMi45NjQ1IDcuNDcwMTQgMTIuOTY0NSA2LjA3OCAxMS4xNDkzQzYuMDU1NjkgMTEuMTMxOSA2LjAzMzM4IDExLjExNDUgNi4wMTAzOSAxMS4wOTY2QzUuMDk4MjYgMTAuMzk4IDMuODk2NjcgMTAuMTM5NCAyLjc5NjMgOS44MzYyN0MyLjUyNDE1IDkuNzYxMjQgMi4yNTIxIDkuNjg1ODcgMS45ODAwNiA5LjYxMDQ2QzEuOTU2MjggOS42MDM4NiAxLjk1NjI4IDkuNjAzODYgMS45MzIwMSA5LjU5NzE0QzEuNTM5NjIgOS40ODgzNCAxLjE0NzM1IDkuMzc5MjUgMC43NTY0NDggOS4yNjU2NkMwLjczOTkxMSA5LjI2MDg5IDAuNzIzMzc1IDkuMjU2MTIgMC43MDYzMzggOS4yNTEyMUMwLjEwNTc5OCA5LjA3NzY3IDAuMTA1Nzk4IDkuMDc3NjcgMC4wMDEyOTMwNyA4Ljk1NjE5Qy0wLjAwMTY2MjUyIDguOTAxMDggLTAuMDAxNjYyNTIgOC45MDEwOCAwLjAyNDkzNzggOC44NDMxNUMwLjEzNDE2NyA4Ljc0MDggMC4yNDAxNTMgOC42OTY5NiAwLjM4NDMyIDguNjUyMzhDMC40MDUxOTQgOC42NDU2NyAwLjQyNjA2OCA4LjYzODk3IDAuNDQ3NTc0IDguNjMyMDZDMC41MTE1MDYgOC42MTE2NCAwLjU3NTU3NyA4LjU5MTY5IDAuNjM5NzAyIDguNTcxODNDMC42NTgwMDEgOC41NjYwOSAwLjY3NjMwMSA4LjU2MDM1IDAuNjk1MTU1IDguNTU0NDNDMC44MjQ1NyA4LjUxMzg1IDAuOTU0NDUgOC40NzQ3OSAxLjA4NDUyIDguNDM2MThDMS4xMTY0OCA4LjQyNjY1IDEuMTE2NDggOC40MjY2NSAxLjE0OTA5IDguNDE2OTNDMS43MDQ1NCA4LjI1MTc0IDIuMjYzNjEgOC4wOTgwMSAyLjgyMjUyIDcuOTQzOTJDMy4yMzg5OSA3LjgyOTA5IDMuNjU0NzYgNy43MTIzNiA0LjA2OTIxIDcuNTkwOTdDNC4wODgyNSA3LjU4NTQyIDQuMTA3MyA3LjU3OTg3IDQuMTI2OTIgNy41NzQxNUM1LjA4NyA3LjI5MzkzIDYuMDI1NTcgNi44OTYzMiA2LjY0NTQ3IDYuMTA3NEM2LjY1NDc1IDYuMDk1NjkgNi42NjQwMyA2LjA4Mzk5IDYuNjczNiA2LjA3MTk0QzcuMzYzOTUgNS4xOTYzIDcuNjMzMTUgNC4xMzE0NSA3LjkzMzkxIDMuMDkyNDFDOC4wMzI4NSAyLjc1MDY5IDguMTMyOTggMi40MDkyOSA4LjIzMzQ1IDIuMDY3OThDOC4yNjEyNyAxLjk3MzQ3IDguMjg5MDYgMS44Nzg5NCA4LjMxNjczIDEuNzg0MzlDOC40Mjc4OCAxLjQwNDU4IDguNTQwNyAxLjAyNTI4IDguNjYgMC42NDc3MjdDOC42NzExNiAwLjYxMjM3MiA4LjY4MjI3IDAuNTc3MDAxIDguNjkzMzMgMC41NDE2MTRDOC44NjAzNSAwLjAwNzk3NTIyIDguODYwMzUgMC4wMDc5NzUyMiA5LjAxODgyIDBaXCIgZmlsbD1cIiNGQkZDRkZcIi8+PHBhdGggZD1cIk0xNC40NzE5IDEuMTEwNjlDMTQuNTgwNSAxLjIyODE3IDE0LjYwMjIgMS4zNjYyNCAxNC42MzYgMS41MTYyNUMxNC43NDg3IDEuOTg3NTEgMTQuODc4NiAyLjQyMDg0IDE1LjMyOTMgMi42OTQ2QzE1LjYwNzQgMi44NDE2NyAxNS45Mzg5IDIuOTA4NTkgMTYuMjQ3IDIuOTcxOEMxNi4zNzcxIDIuOTk5MDIgMTYuNDg2OSAzLjAzNTE1IDE2LjU5ODUgMy4xMDc0QzE2LjYyMzYgMy4xNDU1NSAxNi42MjM2IDMuMTQ1NTUgMTYuNjIyMSAzLjIxMTk3QzE2LjU5NjMgMy4yOTI3MyAxNi41NzM2IDMuMzE4NzggMTYuNTA1NCAzLjM3MTY1QzE2LjQzMDggMy4zOTU0OSAxNi40MzA4IDMuMzk1NDkgMTYuMzQxMyAzLjQxNDA0QzE2LjMwNzUgMy40MjE0NyAxNi4yNzM2IDMuNDI4OTggMTYuMjM5OCAzLjQzNjU2QzE2LjIyMTcgMy40NDA1OCAxNi4yMDM2IDMuNDQ0NiAxNi4xODQ5IDMuNDQ4NzRDMTUuNjMzOSAzLjU3MDYyIDE1LjYzMzkgMy41NzA2MiAxNS4xNTc2IDMuODQ2NDVDMTUuMTQyMSAzLjg1ODM3IDE1LjEyNjcgMy44NzAyOSAxNS4xMTA3IDMuODgyNTdDMTQuNzcwMyA0LjE2OTU5IDE0LjY5ODMgNC42NDcwMyAxNC41OTU4IDUuMDQ2OTlDMTQuNTkgNS4wNjg5NiAxNC41ODQxIDUuMDkwOTIgMTQuNTc4IDUuMTEzNTVDMTQuNTczIDUuMTMzIDE0LjU2NzkgNS4xNTI0NCAxNC41NjI3IDUuMTcyNDhDMTQuNTQwNSA1LjIzMTg1IDE0LjUxNzYgNS4yNzA1NyAxNC40NzE5IDUuMzE2MDdDMTQuMzQ0NyA1LjMzMTUyIDE0LjM0NDcgNS4zMzE1MiAxNC4yODI4IDUuMzE2MDdDMTQuMTg0MyA1LjI0MzA5IDE0LjE2MjMgNS4xNTk5NyAxNC4xMzY2IDUuMDQ4MjhDMTQuMTMyMiA1LjAzMDk5IDE0LjEyNzkgNS4wMTM2OSAxNC4xMjM1IDQuOTk1ODdDMTQuMTA5OCA0Ljk0MDY0IDE0LjA5NjUgNC44ODUzMSAxNC4wODMzIDQuODI5OTZDMTMuOTc5NiA0LjM5ODkxIDEzLjg2MjUgMy45NzYgMTMuNDQ5IDMuNzIzMzNDMTMuMTI1OCAzLjU1MTAxIDEyLjczMjkgMy40Njk1MSAxMi4zNzE3IDMuNDAzN0MxMi4yNzI3IDMuMzgzOTkgMTIuMjE2IDMuMzU5MiAxMi4xNTQ3IDMuMjgxMjFDMTIuMTQxNCAzLjIwMjA4IDEyLjE0MTQgMy4yMDIwOCAxMi4xNTQ3IDMuMTIyOTRDMTIuMjQ4OSAzLjAyOTcxIDEyLjM0OCAzLjAwNjk2IDEyLjQ3NTQgMi45Nzg4MUMxMi41MTU2IDIuOTY5MyAxMi41NTU3IDIuOTU5NzMgMTIuNTk1OCAyLjk1MDFDMTIuNjE2NSAyLjk0NTE2IDEyLjYzNzIgMi45NDAyMiAxMi42NTg2IDIuOTM1MTJDMTIuNzY0MiAyLjkwOTExIDEyLjg2ODkgMi44Nzk5NSAxMi45NzM0IDIuODUwMjFDMTIuOTkyNCAyLjg0NDk0IDEzLjAxMTQgMi44Mzk2NyAxMy4wMzEgMi44MzQyNEMxMy4yNDM2IDIuNzczNDYgMTMuNDI3MSAyLjY5NTcxIDEzLjU5NzEgMi41NTc3QzEzLjYxMjkgMi41NDUyMyAxMy42Mjg4IDIuNTMyNzYgMTMuNjQ1MSAyLjUxOTlDMTMuOTA5NiAyLjI5MjI4IDEzLjk5OTUgMS45NTAzMiAxNC4wODEgMS42MzEyNEMxNC4wODczIDEuNjA3MDIgMTQuMDkzNSAxLjU4MjggMTQuMDk5OSAxLjU1Nzg0QzE0LjExMjMgMS41MDkxOCAxNC4xMjQ0IDEuNDYwNDYgMTQuMTM2MyAxLjQxMTdDMTQuMTQ0OSAxLjM3Nzc2IDE0LjE0NDkgMS4zNzc3NiAxNC4xNTM1IDEuMzQzMTVDMTQuMTU4NSAxLjMyMjg4IDE0LjE2MzUgMS4zMDI2MSAxNC4xNjg2IDEuMjgxNzJDMTQuMTkwNCAxLjIxNzE5IDE0LjIxOSAxLjE2NjUyIDE0LjI1OTEgMS4xMTA2OUMxNC4zMzYyIDEuMDczODUgMTQuMzkwMyAxLjA5MDUgMTQuNDcxOSAxLjExMDY5WlwiIGZpbGw9XCIjRkJGQ0ZGXCIvPjxwYXRoIGQ9XCJNMy41OTA4OSAxMi40OTQyQzMuNjE5MDIgMTIuNDk0NCAzLjYxOTAyIDEyLjQ5NDQgMy42NDc3MiAxMi40OTQ2QzMuODQ5NTQgMTIuNTAwNCAzLjk4NjA5IDEyLjU2MjMgNC4xMzQ3MiAxMi42OTJDNC4zMDc2NyAxMi44NzA3IDQuMzg3NTMgMTMuMDcyMiA0LjM4Mjk5IDEzLjMxM0M0LjM2MzU3IDEzLjUwODIgNC4yNDMxNiAxMy42Nzg3IDQuMDk1NDcgMTMuODEwN0MzLjkyMTYzIDEzLjk0NDggMy43NDYyNiAxMy45ODkyIDMuNTI0MTEgMTMuOTgzQzMuMzM2ODEgMTMuOTYyMSAzLjE2MDYgMTMuODc3IDMuMDI3ODUgMTMuNzQ5QzIuODYyNzYgMTMuNTMzNiAyLjgxNDUgMTMuMzM2MSAyLjgzODY5IDEzLjA3MDdDMi44ODg2NyAxMi44NjE4IDMuMDMyNzQgMTIuNjkyMyAzLjIxNzAxIDEyLjU3MzNDMy4zNDUwMiAxMi41MTEzIDMuNDQ3OTggMTIuNDkzIDMuNTkwODkgMTIuNDk0MlpcIiBmaWxsPVwiI0ZCRkNGRlwiLz48L3N2Zz5cbiAgICAgIHt7IGlzQXBwbHlpbmcgPyAnQXBwbHlpbmcgc3VnZ2VzdGlvbicgOiAnQXBwbHkgc3VnZ2VzdGlvbicgfX1cbiAgICA8L2NxYS1idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4gXG4iXX0=
|
|
@@ -8,6 +8,7 @@ import * as i5 from "@angular/common";
|
|
|
8
8
|
export class DynamicSelectFieldComponent {
|
|
9
9
|
constructor() {
|
|
10
10
|
this.selectionChange = new EventEmitter();
|
|
11
|
+
this.selectClick = new EventEmitter();
|
|
11
12
|
// Must be public for template access in Angular's strict template checking mode
|
|
12
13
|
this.searchTextByKey = {};
|
|
13
14
|
}
|
|
@@ -121,6 +122,10 @@ export class DynamicSelectFieldComponent {
|
|
|
121
122
|
return true;
|
|
122
123
|
}
|
|
123
124
|
onSelectOpenedChange(opened, _select) {
|
|
125
|
+
if (opened) {
|
|
126
|
+
// Emit click event when select is opened (clicked)
|
|
127
|
+
this.selectClick.emit();
|
|
128
|
+
}
|
|
124
129
|
if (!opened) {
|
|
125
130
|
// Reset search text on close so the next open shows full list
|
|
126
131
|
if (this.config?.key) {
|
|
@@ -207,7 +212,7 @@ export class DynamicSelectFieldComponent {
|
|
|
207
212
|
}
|
|
208
213
|
}
|
|
209
214
|
DynamicSelectFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DynamicSelectFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
210
|
-
DynamicSelectFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: DynamicSelectFieldComponent, selector: "cqa-dynamic-select", inputs: { form: "form", config: "config" }, outputs: { selectionChange: "selectionChange" }, host: { listeners: { "document:click": "handleDocumentClick($event)" } }, viewQueries: [{ propertyName: "selectRef", first: true, predicate: ["selectRef"], descendants: true }, { propertyName: "hostEl", first: true, predicate: ["host"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div id=\"cqa-ui-root\">\n <ng-container [formGroup]=\"form\">\n <label *ngIf=\"config.label\"\n class=\"form-label cqa-text-[#374151] cqa-text-[14px] cqa-font-medium cqa-block cqa-leading-[1.4] cqa-mb-2\">{{\n config.label }}</label>\n <mat-form-field #host class=\"mat-select-custom cqa-w-full\" appearance=\"fill\">\n <mat-select #selectRef=\"matSelect\" [placeholder]=\"displayPlaceholder\" [disabled]=\"isDisabled\" [multiple]=\"isMultiple\"\n disableOptionCentering [panelClass]=\"panelClass\" [formControlName]=\"config.key\"\n (openedChange)=\"onSelectOpenedChange($event, selectRef)\" (selectionChange)=\"onSelectionChange($event, selectRef)\">\n\n <mat-option *ngIf=\"config.searchable\" class=\"ts-select-search\" disabled>\n <input class=\"ts-select-search-input\" type=\"text\" [value]=\"searchTextByKey[config.key] || ''\"\n (click)=\"$event.stopPropagation()\" (mousedown)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\" (input)=\"onSearch(config.key, $any($event.target).value)\"\n placeholder=\"Search...\" />\n </mat-option>\n\n <mat-option *ngFor=\"let opt of filteredOptions(config)\" [value]=\"opt.id ?? opt.value\"\n [textContent]=\"opt.name ?? opt.label ?? opt.value\">\n {{ opt.name ?? opt.label ?? opt.value }}\n </mat-option>\n </mat-select>\n\n <div>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4 6L8 10L12 6\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n </mat-form-field>\n </ng-container>\n</div>", components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i2.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
215
|
+
DynamicSelectFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: DynamicSelectFieldComponent, selector: "cqa-dynamic-select", inputs: { form: "form", config: "config" }, outputs: { selectionChange: "selectionChange", selectClick: "selectClick" }, host: { listeners: { "document:click": "handleDocumentClick($event)" } }, viewQueries: [{ propertyName: "selectRef", first: true, predicate: ["selectRef"], descendants: true }, { propertyName: "hostEl", first: true, predicate: ["host"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div id=\"cqa-ui-root\">\n <ng-container [formGroup]=\"form\">\n <label *ngIf=\"config.label\"\n class=\"form-label cqa-text-[#374151] cqa-text-[14px] cqa-font-medium cqa-block cqa-leading-[1.4] cqa-mb-2\">{{\n config.label }}</label>\n <mat-form-field #host class=\"mat-select-custom cqa-w-full\" appearance=\"fill\">\n <mat-select #selectRef=\"matSelect\" [placeholder]=\"displayPlaceholder\" [disabled]=\"isDisabled\" [multiple]=\"isMultiple\"\n disableOptionCentering [panelClass]=\"panelClass\" [formControlName]=\"config.key\"\n (openedChange)=\"onSelectOpenedChange($event, selectRef)\" (selectionChange)=\"onSelectionChange($event, selectRef)\">\n\n <mat-option *ngIf=\"config.searchable\" class=\"ts-select-search\" disabled>\n <input class=\"ts-select-search-input\" type=\"text\" [value]=\"searchTextByKey[config.key] || ''\"\n (click)=\"$event.stopPropagation()\" (mousedown)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\" (input)=\"onSearch(config.key, $any($event.target).value)\"\n placeholder=\"Search...\" />\n </mat-option>\n\n <mat-option *ngFor=\"let opt of filteredOptions(config)\" [value]=\"opt.id ?? opt.value\"\n [textContent]=\"opt.name ?? opt.label ?? opt.value\">\n {{ opt.name ?? opt.label ?? opt.value }}\n </mat-option>\n </mat-select>\n\n <div>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4 6L8 10L12 6\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n </mat-form-field>\n </ng-container>\n</div>", components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i2.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
211
216
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DynamicSelectFieldComponent, decorators: [{
|
|
212
217
|
type: Component,
|
|
213
218
|
args: [{ selector: 'cqa-dynamic-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div id=\"cqa-ui-root\">\n <ng-container [formGroup]=\"form\">\n <label *ngIf=\"config.label\"\n class=\"form-label cqa-text-[#374151] cqa-text-[14px] cqa-font-medium cqa-block cqa-leading-[1.4] cqa-mb-2\">{{\n config.label }}</label>\n <mat-form-field #host class=\"mat-select-custom cqa-w-full\" appearance=\"fill\">\n <mat-select #selectRef=\"matSelect\" [placeholder]=\"displayPlaceholder\" [disabled]=\"isDisabled\" [multiple]=\"isMultiple\"\n disableOptionCentering [panelClass]=\"panelClass\" [formControlName]=\"config.key\"\n (openedChange)=\"onSelectOpenedChange($event, selectRef)\" (selectionChange)=\"onSelectionChange($event, selectRef)\">\n\n <mat-option *ngIf=\"config.searchable\" class=\"ts-select-search\" disabled>\n <input class=\"ts-select-search-input\" type=\"text\" [value]=\"searchTextByKey[config.key] || ''\"\n (click)=\"$event.stopPropagation()\" (mousedown)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\" (input)=\"onSearch(config.key, $any($event.target).value)\"\n placeholder=\"Search...\" />\n </mat-option>\n\n <mat-option *ngFor=\"let opt of filteredOptions(config)\" [value]=\"opt.id ?? opt.value\"\n [textContent]=\"opt.name ?? opt.label ?? opt.value\">\n {{ opt.name ?? opt.label ?? opt.value }}\n </mat-option>\n </mat-select>\n\n <div>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4 6L8 10L12 6\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n </mat-form-field>\n </ng-container>\n</div>", styles: [] }]
|
|
@@ -217,6 +222,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
217
222
|
type: Input
|
|
218
223
|
}], selectionChange: [{
|
|
219
224
|
type: Output
|
|
225
|
+
}], selectClick: [{
|
|
226
|
+
type: Output
|
|
220
227
|
}], selectRef: [{
|
|
221
228
|
type: ViewChild,
|
|
222
229
|
args: ['selectRef', { static: false }]
|
|
@@ -227,4 +234,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
227
234
|
type: HostListener,
|
|
228
235
|
args: ['document:click', ['$event']]
|
|
229
236
|
}] } });
|
|
230
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1zZWxlY3QtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9keW5hbWljLXNlbGVjdC9keW5hbWljLXNlbGVjdC1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2R5bmFtaWMtc2VsZWN0L2R5bmFtaWMtc2VsZWN0LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFvQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBa0N2SyxNQUFNLE9BQU8sMkJBQTJCO0lBTnhDO1FBU1ksb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBdUQsQ0FBQztRQUtwRyxnRkFBZ0Y7UUFDaEYsb0JBQWUsR0FBMkIsRUFBRSxDQUFDO0tBdU05QztJQXBNQyxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7U0FDeEU7UUFDRCxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUM7UUFDN0IsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQztRQUN4RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUM7SUFDcEYsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLFFBQVEsSUFBSSxPQUFPLEVBQUU7WUFDdkIsd0ZBQXdGO1lBQ3hGLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxNQUFNLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUNyRCxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztTQUNuQztJQUNILENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLG9CQUFvQixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hFLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLFNBQVMsQ0FBQyxLQUFjO1FBQzlCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsS0FBSyxNQUFNLElBQUksQ0FBQyxLQUFLLEdBQUc7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDM0MsSUFBSSxDQUFDLEtBQUssT0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDekQsT0FBTyxJQUFJLENBQUMsQ0FBQywrQ0FBK0M7U0FDN0Q7UUFDRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUM3QixPQUFPLEtBQUssS0FBSyxDQUFDLENBQUM7U0FDcEI7UUFDRCxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVPLCtCQUErQjtRQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQztRQUM3QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBQy9CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUNyQixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ25DLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLFlBQVksSUFBSSxJQUFJO2dCQUFFLE9BQU87WUFDakMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztnQkFBRSxPQUFPO1lBQ3hDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3hEO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7Z0JBQUUsT0FBTztZQUN6QyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDdEY7SUFDSCxDQUFDO0lBRU8sMEJBQTBCO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO1FBQzdCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFDL0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQ3JCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDO1FBQ2pELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDbkMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDdkMsT0FBTztTQUNSO1FBQ0QsSUFBSSxhQUFhLEtBQUssU0FBUyxJQUFJLGFBQWEsS0FBSyxJQUFJLEVBQUU7WUFDekQsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUN4RixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FDM0IsQ0FBQztZQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTTtnQkFBRSxPQUFPO1lBQy9CLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDcEQ7YUFBTTtZQUNMLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO2dCQUM3QyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDdkQsQ0FBQyxDQUFDLGFBQWEsQ0FBQztZQUNsQixJQUFJLFVBQVUsS0FBSyxTQUFTO2dCQUFFLE9BQU87WUFDckMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ2pDLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3pDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTLElBQUksR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQzdFO1FBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDN0IsT0FBTyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztTQUNoQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQWUsRUFBRSxPQUFrQjtRQUN0RCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsOERBQThEO1lBQzlELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDNUM7WUFDRCwwRUFBMEU7WUFDMUUsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUN2QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO2FBQ2pDO1lBQ0QsT0FBTztTQUNSO1FBRUQsa0NBQWtDO1FBQ2xDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUU7WUFDM0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFtQix5QkFBeUIsQ0FBQyxDQUFDO2dCQUNsRixLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDakIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ1A7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQ2pDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsZUFBZSxDQUFDLENBQTJCO1FBQ3pDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkUsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3RDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1RSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUZBQWlGO0lBQ2pGLGlCQUFpQixDQUFDLEtBQXNCLEVBQUUsTUFBaUI7UUFDekQscURBQXFEO1FBQ3JELHdEQUF3RDtRQUN4RCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMzRSxJQUFJLFdBQVcsRUFBRTtZQUNmLElBQUk7Z0JBQ0YsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2hCO1lBQUMsTUFBTSxHQUFFO1NBQ1g7UUFDRCxpRkFBaUY7UUFDakYsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtZQUMvQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQzVDO1FBRUQsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxLQUFLLFVBQVUsRUFBRTtZQUMvQyxJQUFJO2dCQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDMUM7WUFBQyxPQUFPLEtBQUssRUFBRTtnQkFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLDRDQUE0QyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ3BFO1NBQ0Y7UUFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztZQUN4QixHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHO1lBQ3JCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztZQUNsQixLQUFLO1NBQ04sQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELG1CQUFtQixDQUFDLEtBQWlCO1FBQ25DLDJFQUEyRTtRQUMzRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUU7WUFDOUIsT0FBTztTQUNSO1FBQ0QsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQTRCLENBQUM7UUFDbEQsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBQ3BCLGdEQUFnRDtRQUNoRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM1RSxPQUFPO1NBQ1I7UUFDRCx1REFBdUQ7UUFDdkQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsQ0FBa0IsQ0FBQztRQUM3RixNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNwRSxJQUFJLGdCQUFnQixFQUFFO1lBQ3BCLE9BQU87U0FDUjtRQUNELElBQUk7WUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3hCO1FBQUMsTUFBTSxHQUFFO0lBQ1osQ0FBQzs7d0hBL01VLDJCQUEyQjs0R0FBM0IsMkJBQTJCLHFZQU1JLFVBQVUsa0RDeEN0RCxtdkRBK0JNOzJGREdPLDJCQUEyQjtrQkFOdkMsU0FBUzsrQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUVvQyxTQUFTO3NCQUFuRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ2UsTUFBTTtzQkFBN0QsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBcUx0RCxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0U2VsZWN0LCBNYXRTZWxlY3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuXG4vLyBMb2NhbCBvcHRpb24gbW9kZWwgKHByZXZpb3VzbHkgaW1wb3J0ZWQgZnJvbSByZW1vdmVkIGNxYS1zZWxlY3QgY29tcG9uZW50KVxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RPcHRpb24ge1xuICBpZD86IGFueTtcbiAgdmFsdWU/OiBhbnk7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNTZWxlY3RGaWVsZENvbmZpZyB7XG4gIGtleTogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgbXVsdGlwbGU/OiBib29sZWFuO1xuICBzZWFyY2hhYmxlPzogYm9vbGVhbjtcbiAgLyoqIElmIHRydWUsIGNsb3NlIHRoZSBwYW5lbCB3aGVuIGFuIG9wdGlvbiBpcyBzZWxlY3RlZCAodXNlZnVsIGZvciBtdWx0aS1zZWxlY3QgaW4gaGVhZGVycykuICovXG4gIGNsb3NlT25TZWxlY3Q/OiBib29sZWFuO1xuICAvKiogUHJvdmlkZSBhIGRlZmF1bHQgc2VsZWN0ZWQgdmFsdWUgKG9yIGFycmF5IGZvciBtdWx0aS1zZWxlY3QpIGlmIHRoZSBjb250cm9sIGhhcyBubyB2YWx1ZSB5ZXQuICovXG4gIHNlbGVjdGVkVmFsdWU/OiBhbnkgfCBhbnlbXTtcbiAgLyoqIE9wdGlvbmFsIGNhbGxiYWNrIGludm9rZWQgd2hlbmV2ZXIgdGhlIHNlbGVjdGlvbiBjaGFuZ2VzLiAqL1xuICBvbkNoYW5nZT86ICh2YWx1ZTogYW55LCBldmVudD86IE1hdFNlbGVjdENoYW5nZSkgPT4gdm9pZDtcbiAgb3B0aW9uczogU2VsZWN0T3B0aW9uW107XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1keW5hbWljLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLXNlbGVjdC1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljU2VsZWN0RmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGZvcm0hOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIGNvbmZpZyE6IER5bmFtaWNTZWxlY3RGaWVsZENvbmZpZztcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBrZXk6IHN0cmluZzsgdmFsdWU6IGFueTsgZXZlbnQ6IE1hdFNlbGVjdENoYW5nZSB9PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdFJlZicsIHsgc3RhdGljOiBmYWxzZSB9KSBzZWxlY3RSZWY/OiBNYXRTZWxlY3Q7XG4gIEBWaWV3Q2hpbGQoJ2hvc3QnLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IEVsZW1lbnRSZWYgfSkgaG9zdEVsPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgLy8gTXVzdCBiZSBwdWJsaWMgZm9yIHRlbXBsYXRlIGFjY2VzcyBpbiBBbmd1bGFyJ3Mgc3RyaWN0IHRlbXBsYXRlIGNoZWNraW5nIG1vZGVcbiAgc2VhcmNoVGV4dEJ5S2V5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIHByaXZhdGUgb3V0c2lkZUNsZWFudXA/OiAoKSA9PiB2b2lkO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb25maWcgfHwgIXRoaXMuY29uZmlnLmtleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcWEtZHluYW1pYy1zZWxlY3Q6IGlucHV0IFwiY29uZmlnLmtleVwiIGlzIHJlcXVpcmVkLicpO1xuICAgIH1cbiAgICB0aGlzLmFwcGx5U2VsZWN0ZWRWYWx1ZUlmTmVlZGVkKCk7XG4gIH1cblxuICBnZXQgZGlzcGxheVBsYWNlaG9sZGVyKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5jb25maWc/LmtleTtcbiAgICBpZiAoIWtleSB8fCAhdGhpcy5mb3JtKSByZXR1cm4gdGhpcy5jb25maWc/LnBsYWNlaG9sZGVyO1xuICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9IHRoaXMuZm9ybS5nZXQoa2V5KT8udmFsdWU7XG4gICAgcmV0dXJuIHRoaXMuaGFzRXhpc3RpbmdWYWx1ZShjb250cm9sVmFsdWUpID8gdW5kZWZpbmVkIDogdGhpcy5jb25maWc/LnBsYWNlaG9sZGVyO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICgnY29uZmlnJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAvLyBXaGVuIGNvbmZpZyBjaGFuZ2VzIChpbmNsdWRpbmcgdG9nZ2xpbmcgbXVsdGlwbGUpLCBlbnN1cmUgY29udHJvbCB2YWx1ZSBzaGFwZSBtYXRjaGVzXG4gICAgICB0aGlzLnN5bmNDb250cm9sVmFsdWVGb3JNdWx0aXBsZU1vZGUoKTtcbiAgICAgIHRoaXMuYXBwbHlTZWxlY3RlZFZhbHVlSWZOZWVkZWQoKTtcbiAgICB9XG4gICAgaWYgKCdmb3JtJyBpbiBjaGFuZ2VzICYmICFjaGFuZ2VzWydmb3JtJ10uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuYXBwbHlTZWxlY3RlZFZhbHVlSWZOZWVkZWQoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcGFuZWxDbGFzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgY3RjLXNlbGVjdC1wYW5lbCAke3RoaXMuaXNNdWx0aXBsZSA/ICdtdWx0aXBsZScgOiAnJ31gLnRyaW0oKTtcbiAgfVxuXG4gIGdldCBpc011bHRpcGxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRvQm9vbGVhbih0aGlzLmNvbmZpZz8ubXVsdGlwbGUpO1xuICB9XG5cbiAgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9Cb29sZWFuKHRoaXMuY29uZmlnPy5kaXNhYmxlZCk7XG4gIH1cblxuICBwcml2YXRlIHRvQm9vbGVhbih2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCB2ID0gdmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAodiA9PT0gJ3RydWUnIHx8IHYgPT09ICcxJykgcmV0dXJuIHRydWU7XG4gICAgICBpZiAodiA9PT0gJ2ZhbHNlJyB8fCB2ID09PSAnMCcgfHwgdiA9PT0gJycpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiB0cnVlOyAvLyBhbnkgb3RoZXIgbm9uLWVtcHR5IHN0cmluZyB0cmVhdGVkIGFzIHRydXRoeVxuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHZhbHVlICE9PSAwO1xuICAgIH1cbiAgICByZXR1cm4gISF2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3luY0NvbnRyb2xWYWx1ZUZvck11bHRpcGxlTW9kZSgpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmNvbmZpZz8ua2V5O1xuICAgIGlmICgha2V5IHx8ICF0aGlzLmZvcm0pIHJldHVybjtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChrZXkpO1xuICAgIGlmICghY29udHJvbCkgcmV0dXJuO1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgaWYgKHRoaXMuaXNNdWx0aXBsZSkge1xuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBudWxsKSByZXR1cm47XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50VmFsdWUpKSByZXR1cm47XG4gICAgICBjb250cm9sLnNldFZhbHVlKFtjdXJyZW50VmFsdWVdLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShjdXJyZW50VmFsdWUpKSByZXR1cm47XG4gICAgICBjb250cm9sLnNldFZhbHVlKGN1cnJlbnRWYWx1ZS5sZW5ndGggPyBjdXJyZW50VmFsdWVbMF0gOiBudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVNlbGVjdGVkVmFsdWVJZk5lZWRlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmNvbmZpZz8ua2V5O1xuICAgIGlmICgha2V5IHx8ICF0aGlzLmZvcm0pIHJldHVybjtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChrZXkpO1xuICAgIGlmICghY29udHJvbCkgcmV0dXJuO1xuICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSB0aGlzLmNvbmZpZz8uc2VsZWN0ZWRWYWx1ZTtcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgIGlmICh0aGlzLmhhc0V4aXN0aW5nVmFsdWUoY3VycmVudFZhbHVlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc2VsZWN0ZWRWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHNlbGVjdGVkVmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc011bHRpcGxlKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWRWYWx1ZSkgPyBzZWxlY3RlZFZhbHVlIDogW3NlbGVjdGVkVmFsdWVdKS5maWx0ZXIoXG4gICAgICAgICh2YWwpID0+IHZhbCAhPT0gdW5kZWZpbmVkLFxuICAgICAgKTtcbiAgICAgIGlmICghbm9ybWFsaXplZC5sZW5ndGgpIHJldHVybjtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUobm9ybWFsaXplZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gQXJyYXkuaXNBcnJheShzZWxlY3RlZFZhbHVlKVxuICAgICAgICA/IChzZWxlY3RlZFZhbHVlLmxlbmd0aCA/IHNlbGVjdGVkVmFsdWVbMF0gOiB1bmRlZmluZWQpXG4gICAgICAgIDogc2VsZWN0ZWRWYWx1ZTtcbiAgICAgIGlmIChub3JtYWxpemVkID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUobm9ybWFsaXplZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFzRXhpc3RpbmdWYWx1ZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUuc29tZSgodmFsKSA9PiB2YWwgIT09IG51bGwgJiYgdmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSAnJyk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdmFsdWUudHJpbSgpLmxlbmd0aCA+IDA7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgb25TZWxlY3RPcGVuZWRDaGFuZ2Uob3BlbmVkOiBib29sZWFuLCBfc2VsZWN0OiBNYXRTZWxlY3QpOiB2b2lkIHtcbiAgICBpZiAoIW9wZW5lZCkge1xuICAgICAgLy8gUmVzZXQgc2VhcmNoIHRleHQgb24gY2xvc2Ugc28gdGhlIG5leHQgb3BlbiBzaG93cyBmdWxsIGxpc3RcbiAgICAgIGlmICh0aGlzLmNvbmZpZz8ua2V5KSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dEJ5S2V5W3RoaXMuY29uZmlnLmtleV0gPSAnJztcbiAgICAgIH1cbiAgICAgIC8vIEVuc3VyZSBhbnkgcHJldmlvdXMgY3VzdG9tIGxpc3RlbmVycyBhcmUgY2xlYXJlZCAobGVnYWN5IGNvbXBhdGliaWxpdHkpXG4gICAgICBpZiAodGhpcy5vdXRzaWRlQ2xlYW51cCkge1xuICAgICAgICB0aGlzLm91dHNpZGVDbGVhbnVwKCk7XG4gICAgICAgIHRoaXMub3V0c2lkZUNsZWFudXAgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRm9jdXMgdGhlIHNlYXJjaCBib3ggaWYgZW5hYmxlZFxuICAgIGlmICh0aGlzLmNvbmZpZz8uc2VhcmNoYWJsZSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MSW5wdXRFbGVtZW50PignLnRzLXNlbGVjdC1zZWFyY2gtaW5wdXQnKTtcbiAgICAgICAgaW5wdXQ/LmZvY3VzKCk7XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGV4dEJ5S2V5W2tleV0gPSB2YWx1ZSA/PyAnJztcbiAgfVxuXG4gIGZpbHRlcmVkT3B0aW9ucyhjOiBEeW5hbWljU2VsZWN0RmllbGRDb25maWcpOiBTZWxlY3RPcHRpb25bXSB7XG4gICAgY29uc3QgdCA9ICh0aGlzLnNlYXJjaFRleHRCeUtleVtjLmtleV0gfHwgJycpLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIGlmICghdCkgcmV0dXJuIGMub3B0aW9ucyB8fCBbXTtcbiAgICByZXR1cm4gKGMub3B0aW9ucyB8fCBbXSkuZmlsdGVyKChvcHQpID0+IHtcbiAgICAgIGNvbnN0IHRleHQgPSBTdHJpbmcob3B0Lm5hbWUgPz8gb3B0LmxhYmVsID8/IG9wdC52YWx1ZSA/PyAnJykudG9Mb3dlckNhc2UoKTtcbiAgICAgIHJldHVybiB0ZXh0LmluY2x1ZGVzKHQpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gQ2xvc2Ugd2hlbiBhbiBvcHRpb24gaXMgc2VsZWN0ZWQgaWYgcmVxdWVzdGVkLiBBbHdheXMgY2xvc2UgZm9yIHNpbmdsZS1zZWxlY3QuXG4gIG9uU2VsZWN0aW9uQ2hhbmdlKGV2ZW50OiBNYXRTZWxlY3RDaGFuZ2UsIHNlbGVjdDogTWF0U2VsZWN0KTogdm9pZCB7XG4gICAgLy8gTGV0IEFuZ3VsYXIgTWF0ZXJpYWwgYXV0by1jbG9zZSBmb3Igc2luZ2xlLXNlbGVjdC5cbiAgICAvLyBGb3IgbXVsdGktc2VsZWN0LCBjbG9zZSBvbmx5IGlmIGV4cGxpY2l0bHkgcmVxdWVzdGVkLlxuICAgIGNvbnN0IHNob3VsZENsb3NlID0gdGhpcy5pc011bHRpcGxlID8gISF0aGlzLmNvbmZpZz8uY2xvc2VPblNlbGVjdCA6IGZhbHNlO1xuICAgIGlmIChzaG91bGRDbG9zZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2VsZWN0LmNsb3NlKCk7XG4gICAgICB9IGNhdGNoIHt9XG4gICAgfVxuICAgIC8vIElmIHNlYXJjaGFibGUsIGNsZWFyIHRoZSBzZWFyY2ggYWZ0ZXIgc2VsZWN0aW9uIHNvIHJlb3BlbmluZyB3b3JrcyBwcmVkaWN0YWJseVxuICAgIGlmICh0aGlzLmNvbmZpZz8uc2VhcmNoYWJsZSAmJiB0aGlzLmNvbmZpZz8ua2V5KSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHRCeUtleVt0aGlzLmNvbmZpZy5rZXldID0gJyc7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0aGlzLmNvbmZpZz8ub25DaGFuZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuY29uZmlnLm9uQ2hhbmdlKGV2ZW50LnZhbHVlLCBldmVudCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdjcWEtZHluYW1pYy1zZWxlY3Qgb25DaGFuZ2UgaGFuZGxlciBlcnJvcjonLCBlcnJvcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh7XG4gICAgICBrZXk6IHRoaXMuY29uZmlnPy5rZXksXG4gICAgICB2YWx1ZTogZXZlbnQudmFsdWUsXG4gICAgICBldmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlRG9jdW1lbnRDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIC8vIENsb3NlIHdoZW4gY2xpY2tpbmcgb3V0c2lkZSBvZiB0aGUgdHJpZ2dlciBhbmQgb3V0c2lkZSBvZiB0aGUgb3BlbiBwYW5lbFxuICAgIGlmICghdGhpcy5zZWxlY3RSZWY/LnBhbmVsT3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGlmICghdGFyZ2V0KSByZXR1cm47XG4gICAgLy8gSWYgY2xpY2sgaXMgaW5zaWRlIHRoZSBjb21wb25lbnQgaG9zdCwgaWdub3JlXG4gICAgaWYgKHRoaXMuaG9zdEVsPy5uYXRpdmVFbGVtZW50ICYmIHRoaXMuaG9zdEVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBJZiBjbGljayBpcyBpbnNpZGUgYW55IG9wZW4gbWF0LXNlbGVjdCBwYW5lbCwgaWdub3JlXG4gICAgY29uc3QgcGFuZWxFbHMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tYXQtc2VsZWN0LXBhbmVsJykpIGFzIEhUTUxFbGVtZW50W107XG4gICAgY29uc3QgY2xpY2tJbnNpZGVQYW5lbCA9IHBhbmVsRWxzLnNvbWUoKGVsKSA9PiBlbC5jb250YWlucyh0YXJnZXQpKTtcbiAgICBpZiAoY2xpY2tJbnNpZGVQYW5lbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgdGhpcy5zZWxlY3RSZWYuY2xvc2UoKTtcbiAgICB9IGNhdGNoIHt9XG4gIH1cbn1cblxuXG4iLCI8ZGl2IGlkPVwiY3FhLXVpLXJvb3RcIj5cbiAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICA8bGFiZWwgKm5nSWY9XCJjb25maWcubGFiZWxcIlxuICAgICAgY2xhc3M9XCJmb3JtLWxhYmVsIGNxYS10ZXh0LVsjMzc0MTUxXSBjcWEtdGV4dC1bMTRweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1ibG9jayBjcWEtbGVhZGluZy1bMS40XSBjcWEtbWItMlwiPnt7XG4gICAgICBjb25maWcubGFiZWwgfX08L2xhYmVsPlxuICAgIDxtYXQtZm9ybS1maWVsZCAjaG9zdCBjbGFzcz1cIm1hdC1zZWxlY3QtY3VzdG9tIGNxYS13LWZ1bGxcIiBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgPG1hdC1zZWxlY3QgI3NlbGVjdFJlZj1cIm1hdFNlbGVjdFwiIFtwbGFjZWhvbGRlcl09XCJkaXNwbGF5UGxhY2Vob2xkZXJcIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiIFttdWx0aXBsZV09XCJpc011bHRpcGxlXCJcbiAgICAgICAgZGlzYWJsZU9wdGlvbkNlbnRlcmluZyBbcGFuZWxDbGFzc109XCJwYW5lbENsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb25maWcua2V5XCJcbiAgICAgICAgKG9wZW5lZENoYW5nZSk9XCJvblNlbGVjdE9wZW5lZENoYW5nZSgkZXZlbnQsIHNlbGVjdFJlZilcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudCwgc2VsZWN0UmVmKVwiPlxuXG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiY29uZmlnLnNlYXJjaGFibGVcIiBjbGFzcz1cInRzLXNlbGVjdC1zZWFyY2hcIiBkaXNhYmxlZD5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ0cy1zZWxlY3Qtc2VhcmNoLWlucHV0XCIgdHlwZT1cInRleHRcIiBbdmFsdWVdPVwic2VhcmNoVGV4dEJ5S2V5W2NvbmZpZy5rZXldIHx8ICcnXCJcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAoaW5wdXQpPVwib25TZWFyY2goY29uZmlnLmtleSwgJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiAvPlxuICAgICAgICA8L21hdC1vcHRpb24+XG5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdCBvZiBmaWx0ZXJlZE9wdGlvbnMoY29uZmlnKVwiIFt2YWx1ZV09XCJvcHQuaWQgPz8gb3B0LnZhbHVlXCJcbiAgICAgICAgICBbdGV4dENvbnRlbnRdPVwib3B0Lm5hbWUgPz8gb3B0LmxhYmVsID8/IG9wdC52YWx1ZVwiPlxuICAgICAgICAgIHt7IG9wdC5uYW1lID8/IG9wdC5sYWJlbCA/PyBvcHQudmFsdWUgfX1cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuXG4gICAgICA8ZGl2PlxuICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTQgNkw4IDEwTDEyIDZcIiBzdHJva2U9XCIjMEEwQTBBXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+Il19
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1zZWxlY3QtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9keW5hbWljLXNlbGVjdC9keW5hbWljLXNlbGVjdC1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2R5bmFtaWMtc2VsZWN0L2R5bmFtaWMtc2VsZWN0LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFvQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBa0N2SyxNQUFNLE9BQU8sMkJBQTJCO0lBTnhDO1FBU1ksb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBdUQsQ0FBQztRQUMxRixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFLakQsZ0ZBQWdGO1FBQ2hGLG9CQUFlLEdBQTJCLEVBQUUsQ0FBQztLQTRNOUM7SUF6TUMsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1NBQ3hFO1FBQ0QsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO1FBQzdCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUM7UUFDeEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFH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QUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFNlbGVjdCwgTWF0U2VsZWN0Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcblxuLy8gTG9jYWwgb3B0aW9uIG1vZGVsIChwcmV2aW91c2x5IGltcG9ydGVkIGZyb20gcmVtb3ZlZCBjcWEtc2VsZWN0IGNvbXBvbmVudClcbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0T3B0aW9uIHtcbiAgaWQ/OiBhbnk7XG4gIHZhbHVlPzogYW55O1xuICBuYW1lPzogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljU2VsZWN0RmllbGRDb25maWcge1xuICBrZXk6IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIG11bHRpcGxlPzogYm9vbGVhbjtcbiAgc2VhcmNoYWJsZT86IGJvb2xlYW47XG4gIC8qKiBJZiB0cnVlLCBjbG9zZSB0aGUgcGFuZWwgd2hlbiBhbiBvcHRpb24gaXMgc2VsZWN0ZWQgKHVzZWZ1bCBmb3IgbXVsdGktc2VsZWN0IGluIGhlYWRlcnMpLiAqL1xuICBjbG9zZU9uU2VsZWN0PzogYm9vbGVhbjtcbiAgLyoqIFByb3ZpZGUgYSBkZWZhdWx0IHNlbGVjdGVkIHZhbHVlIChvciBhcnJheSBmb3IgbXVsdGktc2VsZWN0KSBpZiB0aGUgY29udHJvbCBoYXMgbm8gdmFsdWUgeWV0LiAqL1xuICBzZWxlY3RlZFZhbHVlPzogYW55IHwgYW55W107XG4gIC8qKiBPcHRpb25hbCBjYWxsYmFjayBpbnZva2VkIHdoZW5ldmVyIHRoZSBzZWxlY3Rpb24gY2hhbmdlcy4gKi9cbiAgb25DaGFuZ2U/OiAodmFsdWU6IGFueSwgZXZlbnQ/OiBNYXRTZWxlY3RDaGFuZ2UpID0+IHZvaWQ7XG4gIG9wdGlvbnM6IFNlbGVjdE9wdGlvbltdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtZHluYW1pYy1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1zZWxlY3QtZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY1NlbGVjdEZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBmb3JtITogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBjb25maWchOiBEeW5hbWljU2VsZWN0RmllbGRDb25maWc7XG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsga2V5OiBzdHJpbmc7IHZhbHVlOiBhbnk7IGV2ZW50OiBNYXRTZWxlY3RDaGFuZ2UgfT4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdFJlZicsIHsgc3RhdGljOiBmYWxzZSB9KSBzZWxlY3RSZWY/OiBNYXRTZWxlY3Q7XG4gIEBWaWV3Q2hpbGQoJ2hvc3QnLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IEVsZW1lbnRSZWYgfSkgaG9zdEVsPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgLy8gTXVzdCBiZSBwdWJsaWMgZm9yIHRlbXBsYXRlIGFjY2VzcyBpbiBBbmd1bGFyJ3Mgc3RyaWN0IHRlbXBsYXRlIGNoZWNraW5nIG1vZGVcbiAgc2VhcmNoVGV4dEJ5S2V5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIHByaXZhdGUgb3V0c2lkZUNsZWFudXA/OiAoKSA9PiB2b2lkO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb25maWcgfHwgIXRoaXMuY29uZmlnLmtleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcWEtZHluYW1pYy1zZWxlY3Q6IGlucHV0IFwiY29uZmlnLmtleVwiIGlzIHJlcXVpcmVkLicpO1xuICAgIH1cbiAgICB0aGlzLmFwcGx5U2VsZWN0ZWRWYWx1ZUlmTmVlZGVkKCk7XG4gIH1cblxuICBnZXQgZGlzcGxheVBsYWNlaG9sZGVyKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5jb25maWc/LmtleTtcbiAgICBpZiAoIWtleSB8fCAhdGhpcy5mb3JtKSByZXR1cm4gdGhpcy5jb25maWc/LnBsYWNlaG9sZGVyO1xuICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9IHRoaXMuZm9ybS5nZXQoa2V5KT8udmFsdWU7XG4gICAgcmV0dXJuIHRoaXMuaGFzRXhpc3RpbmdWYWx1ZShjb250cm9sVmFsdWUpID8gdW5kZWZpbmVkIDogdGhpcy5jb25maWc/LnBsYWNlaG9sZGVyO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICgnY29uZmlnJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAvLyBXaGVuIGNvbmZpZyBjaGFuZ2VzIChpbmNsdWRpbmcgdG9nZ2xpbmcgbXVsdGlwbGUpLCBlbnN1cmUgY29udHJvbCB2YWx1ZSBzaGFwZSBtYXRjaGVzXG4gICAgICB0aGlzLnN5bmNDb250cm9sVmFsdWVGb3JNdWx0aXBsZU1vZGUoKTtcbiAgICAgIHRoaXMuYXBwbHlTZWxlY3RlZFZhbHVlSWZOZWVkZWQoKTtcbiAgICB9XG4gICAgaWYgKCdmb3JtJyBpbiBjaGFuZ2VzICYmICFjaGFuZ2VzWydmb3JtJ10uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuYXBwbHlTZWxlY3RlZFZhbHVlSWZOZWVkZWQoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcGFuZWxDbGFzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgY3RjLXNlbGVjdC1wYW5lbCAke3RoaXMuaXNNdWx0aXBsZSA/ICdtdWx0aXBsZScgOiAnJ31gLnRyaW0oKTtcbiAgfVxuXG4gIGdldCBpc011bHRpcGxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRvQm9vbGVhbih0aGlzLmNvbmZpZz8ubXVsdGlwbGUpO1xuICB9XG5cbiAgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9Cb29sZWFuKHRoaXMuY29uZmlnPy5kaXNhYmxlZCk7XG4gIH1cblxuICBwcml2YXRlIHRvQm9vbGVhbih2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCB2ID0gdmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAodiA9PT0gJ3RydWUnIHx8IHYgPT09ICcxJykgcmV0dXJuIHRydWU7XG4gICAgICBpZiAodiA9PT0gJ2ZhbHNlJyB8fCB2ID09PSAnMCcgfHwgdiA9PT0gJycpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiB0cnVlOyAvLyBhbnkgb3RoZXIgbm9uLWVtcHR5IHN0cmluZyB0cmVhdGVkIGFzIHRydXRoeVxuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHZhbHVlICE9PSAwO1xuICAgIH1cbiAgICByZXR1cm4gISF2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3luY0NvbnRyb2xWYWx1ZUZvck11bHRpcGxlTW9kZSgpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmNvbmZpZz8ua2V5O1xuICAgIGlmICgha2V5IHx8ICF0aGlzLmZvcm0pIHJldHVybjtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChrZXkpO1xuICAgIGlmICghY29udHJvbCkgcmV0dXJuO1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgaWYgKHRoaXMuaXNNdWx0aXBsZSkge1xuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBudWxsKSByZXR1cm47XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50VmFsdWUpKSByZXR1cm47XG4gICAgICBjb250cm9sLnNldFZhbHVlKFtjdXJyZW50VmFsdWVdLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShjdXJyZW50VmFsdWUpKSByZXR1cm47XG4gICAgICBjb250cm9sLnNldFZhbHVlKGN1cnJlbnRWYWx1ZS5sZW5ndGggPyBjdXJyZW50VmFsdWVbMF0gOiBudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVNlbGVjdGVkVmFsdWVJZk5lZWRlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmNvbmZpZz8ua2V5O1xuICAgIGlmICgha2V5IHx8ICF0aGlzLmZvcm0pIHJldHVybjtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChrZXkpO1xuICAgIGlmICghY29udHJvbCkgcmV0dXJuO1xuICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSB0aGlzLmNvbmZpZz8uc2VsZWN0ZWRWYWx1ZTtcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgIGlmICh0aGlzLmhhc0V4aXN0aW5nVmFsdWUoY3VycmVudFZhbHVlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc2VsZWN0ZWRWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHNlbGVjdGVkVmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc011bHRpcGxlKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWRWYWx1ZSkgPyBzZWxlY3RlZFZhbHVlIDogW3NlbGVjdGVkVmFsdWVdKS5maWx0ZXIoXG4gICAgICAgICh2YWwpID0+IHZhbCAhPT0gdW5kZWZpbmVkLFxuICAgICAgKTtcbiAgICAgIGlmICghbm9ybWFsaXplZC5sZW5ndGgpIHJldHVybjtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUobm9ybWFsaXplZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gQXJyYXkuaXNBcnJheShzZWxlY3RlZFZhbHVlKVxuICAgICAgICA/IChzZWxlY3RlZFZhbHVlLmxlbmd0aCA/IHNlbGVjdGVkVmFsdWVbMF0gOiB1bmRlZmluZWQpXG4gICAgICAgIDogc2VsZWN0ZWRWYWx1ZTtcbiAgICAgIGlmIChub3JtYWxpemVkID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUobm9ybWFsaXplZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFzRXhpc3RpbmdWYWx1ZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUuc29tZSgodmFsKSA9PiB2YWwgIT09IG51bGwgJiYgdmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSAnJyk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdmFsdWUudHJpbSgpLmxlbmd0aCA+IDA7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgb25TZWxlY3RPcGVuZWRDaGFuZ2Uob3BlbmVkOiBib29sZWFuLCBfc2VsZWN0OiBNYXRTZWxlY3QpOiB2b2lkIHtcbiAgICBpZiAob3BlbmVkKSB7XG4gICAgICAvLyBFbWl0IGNsaWNrIGV2ZW50IHdoZW4gc2VsZWN0IGlzIG9wZW5lZCAoY2xpY2tlZClcbiAgICAgIHRoaXMuc2VsZWN0Q2xpY2suZW1pdCgpO1xuICAgIH1cbiAgICBcbiAgICBpZiAoIW9wZW5lZCkge1xuICAgICAgLy8gUmVzZXQgc2VhcmNoIHRleHQgb24gY2xvc2Ugc28gdGhlIG5leHQgb3BlbiBzaG93cyBmdWxsIGxpc3RcbiAgICAgIGlmICh0aGlzLmNvbmZpZz8ua2V5KSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dEJ5S2V5W3RoaXMuY29uZmlnLmtleV0gPSAnJztcbiAgICAgIH1cbiAgICAgIC8vIEVuc3VyZSBhbnkgcHJldmlvdXMgY3VzdG9tIGxpc3RlbmVycyBhcmUgY2xlYXJlZCAobGVnYWN5IGNvbXBhdGliaWxpdHkpXG4gICAgICBpZiAodGhpcy5vdXRzaWRlQ2xlYW51cCkge1xuICAgICAgICB0aGlzLm91dHNpZGVDbGVhbnVwKCk7XG4gICAgICAgIHRoaXMub3V0c2lkZUNsZWFudXAgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRm9jdXMgdGhlIHNlYXJjaCBib3ggaWYgZW5hYmxlZFxuICAgIGlmICh0aGlzLmNvbmZpZz8uc2VhcmNoYWJsZSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MSW5wdXRFbGVtZW50PignLnRzLXNlbGVjdC1zZWFyY2gtaW5wdXQnKTtcbiAgICAgICAgaW5wdXQ/LmZvY3VzKCk7XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGV4dEJ5S2V5W2tleV0gPSB2YWx1ZSA/PyAnJztcbiAgfVxuXG4gIGZpbHRlcmVkT3B0aW9ucyhjOiBEeW5hbWljU2VsZWN0RmllbGRDb25maWcpOiBTZWxlY3RPcHRpb25bXSB7XG4gICAgY29uc3QgdCA9ICh0aGlzLnNlYXJjaFRleHRCeUtleVtjLmtleV0gfHwgJycpLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIGlmICghdCkgcmV0dXJuIGMub3B0aW9ucyB8fCBbXTtcbiAgICByZXR1cm4gKGMub3B0aW9ucyB8fCBbXSkuZmlsdGVyKChvcHQpID0+IHtcbiAgICAgIGNvbnN0IHRleHQgPSBTdHJpbmcob3B0Lm5hbWUgPz8gb3B0LmxhYmVsID8/IG9wdC52YWx1ZSA/PyAnJykudG9Mb3dlckNhc2UoKTtcbiAgICAgIHJldHVybiB0ZXh0LmluY2x1ZGVzKHQpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gQ2xvc2Ugd2hlbiBhbiBvcHRpb24gaXMgc2VsZWN0ZWQgaWYgcmVxdWVzdGVkLiBBbHdheXMgY2xvc2UgZm9yIHNpbmdsZS1zZWxlY3QuXG4gIG9uU2VsZWN0aW9uQ2hhbmdlKGV2ZW50OiBNYXRTZWxlY3RDaGFuZ2UsIHNlbGVjdDogTWF0U2VsZWN0KTogdm9pZCB7XG4gICAgLy8gTGV0IEFuZ3VsYXIgTWF0ZXJpYWwgYXV0by1jbG9zZSBmb3Igc2luZ2xlLXNlbGVjdC5cbiAgICAvLyBGb3IgbXVsdGktc2VsZWN0LCBjbG9zZSBvbmx5IGlmIGV4cGxpY2l0bHkgcmVxdWVzdGVkLlxuICAgIGNvbnN0IHNob3VsZENsb3NlID0gdGhpcy5pc011bHRpcGxlID8gISF0aGlzLmNvbmZpZz8uY2xvc2VPblNlbGVjdCA6IGZhbHNlO1xuICAgIGlmIChzaG91bGRDbG9zZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2VsZWN0LmNsb3NlKCk7XG4gICAgICB9IGNhdGNoIHt9XG4gICAgfVxuICAgIC8vIElmIHNlYXJjaGFibGUsIGNsZWFyIHRoZSBzZWFyY2ggYWZ0ZXIgc2VsZWN0aW9uIHNvIHJlb3BlbmluZyB3b3JrcyBwcmVkaWN0YWJseVxuICAgIGlmICh0aGlzLmNvbmZpZz8uc2VhcmNoYWJsZSAmJiB0aGlzLmNvbmZpZz8ua2V5KSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHRCeUtleVt0aGlzLmNvbmZpZy5rZXldID0gJyc7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0aGlzLmNvbmZpZz8ub25DaGFuZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuY29uZmlnLm9uQ2hhbmdlKGV2ZW50LnZhbHVlLCBldmVudCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdjcWEtZHluYW1pYy1zZWxlY3Qgb25DaGFuZ2UgaGFuZGxlciBlcnJvcjonLCBlcnJvcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh7XG4gICAgICBrZXk6IHRoaXMuY29uZmlnPy5rZXksXG4gICAgICB2YWx1ZTogZXZlbnQudmFsdWUsXG4gICAgICBldmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlRG9jdW1lbnRDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIC8vIENsb3NlIHdoZW4gY2xpY2tpbmcgb3V0c2lkZSBvZiB0aGUgdHJpZ2dlciBhbmQgb3V0c2lkZSBvZiB0aGUgb3BlbiBwYW5lbFxuICAgIGlmICghdGhpcy5zZWxlY3RSZWY/LnBhbmVsT3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGlmICghdGFyZ2V0KSByZXR1cm47XG4gICAgLy8gSWYgY2xpY2sgaXMgaW5zaWRlIHRoZSBjb21wb25lbnQgaG9zdCwgaWdub3JlXG4gICAgaWYgKHRoaXMuaG9zdEVsPy5uYXRpdmVFbGVtZW50ICYmIHRoaXMuaG9zdEVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBJZiBjbGljayBpcyBpbnNpZGUgYW55IG9wZW4gbWF0LXNlbGVjdCBwYW5lbCwgaWdub3JlXG4gICAgY29uc3QgcGFuZWxFbHMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tYXQtc2VsZWN0LXBhbmVsJykpIGFzIEhUTUxFbGVtZW50W107XG4gICAgY29uc3QgY2xpY2tJbnNpZGVQYW5lbCA9IHBhbmVsRWxzLnNvbWUoKGVsKSA9PiBlbC5jb250YWlucyh0YXJnZXQpKTtcbiAgICBpZiAoY2xpY2tJbnNpZGVQYW5lbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgdGhpcy5zZWxlY3RSZWYuY2xvc2UoKTtcbiAgICB9IGNhdGNoIHt9XG4gIH1cbn1cblxuXG4iLCI8ZGl2IGlkPVwiY3FhLXVpLXJvb3RcIj5cbiAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICA8bGFiZWwgKm5nSWY9XCJjb25maWcubGFiZWxcIlxuICAgICAgY2xhc3M9XCJmb3JtLWxhYmVsIGNxYS10ZXh0LVsjMzc0MTUxXSBjcWEtdGV4dC1bMTRweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1ibG9jayBjcWEtbGVhZGluZy1bMS40XSBjcWEtbWItMlwiPnt7XG4gICAgICBjb25maWcubGFiZWwgfX08L2xhYmVsPlxuICAgIDxtYXQtZm9ybS1maWVsZCAjaG9zdCBjbGFzcz1cIm1hdC1zZWxlY3QtY3VzdG9tIGNxYS13LWZ1bGxcIiBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgPG1hdC1zZWxlY3QgI3NlbGVjdFJlZj1cIm1hdFNlbGVjdFwiIFtwbGFjZWhvbGRlcl09XCJkaXNwbGF5UGxhY2Vob2xkZXJcIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiIFttdWx0aXBsZV09XCJpc011bHRpcGxlXCJcbiAgICAgICAgZGlzYWJsZU9wdGlvbkNlbnRlcmluZyBbcGFuZWxDbGFzc109XCJwYW5lbENsYXNzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb25maWcua2V5XCJcbiAgICAgICAgKG9wZW5lZENoYW5nZSk9XCJvblNlbGVjdE9wZW5lZENoYW5nZSgkZXZlbnQsIHNlbGVjdFJlZilcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudCwgc2VsZWN0UmVmKVwiPlxuXG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiY29uZmlnLnNlYXJjaGFibGVcIiBjbGFzcz1cInRzLXNlbGVjdC1zZWFyY2hcIiBkaXNhYmxlZD5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ0cy1zZWxlY3Qtc2VhcmNoLWlucHV0XCIgdHlwZT1cInRleHRcIiBbdmFsdWVdPVwic2VhcmNoVGV4dEJ5S2V5W2NvbmZpZy5rZXldIHx8ICcnXCJcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAoaW5wdXQpPVwib25TZWFyY2goY29uZmlnLmtleSwgJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiAvPlxuICAgICAgICA8L21hdC1vcHRpb24+XG5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdCBvZiBmaWx0ZXJlZE9wdGlvbnMoY29uZmlnKVwiIFt2YWx1ZV09XCJvcHQuaWQgPz8gb3B0LnZhbHVlXCJcbiAgICAgICAgICBbdGV4dENvbnRlbnRdPVwib3B0Lm5hbWUgPz8gb3B0LmxhYmVsID8/IG9wdC52YWx1ZVwiPlxuICAgICAgICAgIHt7IG9wdC5uYW1lID8/IG9wdC5sYWJlbCA/PyBvcHQudmFsdWUgfX1cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuXG4gICAgICA8ZGl2PlxuICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTQgNkw4IDEwTDEyIDZcIiBzdHJva2U9XCIjMEEwQTBBXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+Il19
|