@cqa-lib/cqa-ui 1.1.442 → 1.1.444

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.
Files changed (39) hide show
  1. package/esm2020/lib/change-history/change-history.component.mjs +79 -0
  2. package/esm2020/lib/change-history/change-history.types.mjs +2 -0
  3. package/esm2020/lib/custom-input/custom-input.component.mjs +6 -4
  4. package/esm2020/lib/export-code-modal/export-code-modal.component.mjs +1 -1
  5. package/esm2020/lib/questionnaire-list/questionnaire-list.component.mjs +105 -0
  6. package/esm2020/lib/questionnaire-list/questionnaire-list.types.mjs +2 -0
  7. package/esm2020/lib/step-builder/advanced-variables-form/advanced-variables-form.component.mjs +1 -1
  8. package/esm2020/lib/step-builder/step-builder-ai-agent/step-builder-ai-agent.component.mjs +1 -1
  9. package/esm2020/lib/step-builder/step-builder-custom-code/step-builder-custom-code.component.mjs +1 -1
  10. package/esm2020/lib/step-builder/step-builder-database/step-builder-database.component.mjs +1 -1
  11. package/esm2020/lib/step-builder/step-builder-document/step-builder-document.component.mjs +1 -1
  12. package/esm2020/lib/step-builder/step-builder-document-generation-template-step/step-builder-document-generation-template-step.component.mjs +1 -1
  13. package/esm2020/lib/step-builder/step-builder-group/step-builder-group.component.mjs +1 -1
  14. package/esm2020/lib/step-builder/step-builder-loop/step-builder-loop.component.mjs +1 -1
  15. package/esm2020/lib/step-builder/template-variables-form/template-variables-form.component.mjs +1 -1
  16. package/esm2020/lib/test-case-details/api-edit-step/api-edit-step.component.mjs +1 -1
  17. package/esm2020/lib/test-case-details/condition-step/condition-step.component.mjs +1 -1
  18. package/esm2020/lib/test-case-details/create-step-group/create-step-group.component.mjs +1 -1
  19. package/esm2020/lib/test-case-details/element-popup/element-form/element-form.component.mjs +1 -1
  20. package/esm2020/lib/test-case-details/step-details-drawer/step-details-drawer.component.mjs +1 -1
  21. package/esm2020/lib/test-case-details/test-case-details-edit/test-case-details-edit.component.mjs +1 -1
  22. package/esm2020/lib/test-case-details/test-data-modal/test-data-modal.component.mjs +1 -1
  23. package/esm2020/lib/ui-kit.module.mjs +11 -1
  24. package/esm2020/lib/version-history/new-version-history-detail/new-version-history-detail.component.mjs +3 -3
  25. package/esm2020/public-api.mjs +6 -1
  26. package/fesm2015/cqa-lib-cqa-ui.mjs +207 -23
  27. package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
  28. package/fesm2020/cqa-lib-cqa-ui.mjs +206 -23
  29. package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
  30. package/lib/change-history/change-history.component.d.ts +15 -0
  31. package/lib/change-history/change-history.types.d.ts +14 -0
  32. package/lib/custom-input/custom-input.component.d.ts +2 -1
  33. package/lib/questionnaire-list/questionnaire-list.component.d.ts +31 -0
  34. package/lib/questionnaire-list/questionnaire-list.types.d.ts +6 -0
  35. package/lib/ui-kit.module.d.ts +33 -31
  36. package/lib/version-history/new-version-history-detail/new-version-history-detail.component.d.ts +1 -1
  37. package/package.json +1 -1
  38. package/public-api.d.ts +5 -0
  39. package/styles.css +1 -1
@@ -132,10 +132,10 @@ export class NewVersionHistoryDetailComponent {
132
132
  }
133
133
  }
134
134
  NewVersionHistoryDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NewVersionHistoryDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
135
- NewVersionHistoryDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: NewVersionHistoryDetailComponent, selector: "cqa-new-version-history-detail", inputs: { selectedVersion: "selectedVersion", selectedIsCurrent: "selectedIsCurrent", isRestoring: "isRestoring", getAuthorLabelFn: "getAuthorLabelFn", getFieldLabelFn: "getFieldLabelFn", getStepPrefixFn: "getStepPrefixFn", getCategoryLabelFn: "getCategoryLabelFn", formatDisplayValueFn: "formatDisplayValueFn", getStepActionHtmlFn: "getStepActionHtmlFn", hiddenFields: "hiddenFields", parseFieldAsTableFn: "parseFieldAsTableFn" }, outputs: { compare: "compare", restore: "restore" }, ngImport: i0, template: "<ng-container *ngIf=\"selectedVersion; else noSelection\">\n <!-- ========== Header (same as old component) ========== -->\n <div class=\"d-flex align-items-start justify-content-between cqa-nvh-detail-header\">\n <div>\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; margin-bottom: 6px;\">\n <h3 class=\"cqa-nvh-detail-version-number\">Version {{ selectedVersion.versionNumber }}</h3>\n <cqa-badge *ngIf=\"selectedIsCurrent\" label=\"Current\" size=\"small\" variant=\"info\" backgroundColor=\"#EFF4FF\"\n textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n <div class=\"cqa-nvh-detail-meta\">\n {{ getAuthorLabelFn(selectedVersion) }} \u00B7 {{ selectedVersion.createdDate | date:'MMM d, yyyy \u00B7 h:mm a' }}\n </div>\n <div *ngIf=\"selectedVersion.changeSummary\" class=\"cqa-nvh-detail-summary\">\n {{ selectedVersion.changeSummary }}\n </div>\n </div>\n <div *ngIf=\"!selectedIsCurrent\" class=\"cqa-nvh-detail-actions\">\n <cqa-button variant=\"outlined\" text=\"Compare with Current\" (clicked)=\"compare.emit()\"></cqa-button>\n <cqa-button variant=\"filled\" icon=\"refresh\" [text]=\"isRestoring ? 'Restoring...' : 'Restore this Version'\"\n [disabled]=\"isRestoring\" (clicked)=\"restore.emit()\"></cqa-button>\n </div>\n </div>\n\n <!-- ========== Summary bar ========== -->\n <!-- <div *ngIf=\"stepsSummary\" class=\"cqa-nvh-detail-summary-bar\">\n <span *ngIf=\"stepsSummary.added\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--added\">+{{ stepsSummary.added }} added</span>\n <span *ngIf=\"stepsSummary.modified\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--modified\">{{ stepsSummary.modified }} modified</span>\n <span *ngIf=\"stepsSummary.removed\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--removed\">{{ stepsSummary.removed }} removed</span>\n <span *ngIf=\"stepsSummary.unchanged\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--unchanged\">{{ stepsSummary.unchanged }} unchanged</span>\n </div> -->\n\n <!-- ========== Test Case Changes ========== -->\n <ng-container *ngIf=\"hasTestCaseChanges\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Test Case Changes</span>\n <cqa-badge [label]=\"'' + testCaseChangedFields.length\" size=\"small\" variant=\"info\"\n backgroundColor=\"#EFF4FF\" textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let field of testCaseChangedFields; trackBy: trackByField\" class=\"cqa-nvh-change-card\">\n <div class=\"cqa-nvh-change-field-label\">{{ getFieldLabelFn(field) }}</div>\n <ng-container\n *ngTemplateOutlet=\"beforeAfterBlock; context: {\n oldValue: selectedVersion.testCase.old?.[field],\n newValue: selectedVersion.testCase.new?.[field],\n field: field,\n oldStepData: selectedVersion.testCase.old,\n newStepData: selectedVersion.testCase.new\n }\">\n </ng-container>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Steps Added ========== -->\n <ng-container *ngIf=\"stepsAdded.length\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Steps Added</span>\n <cqa-badge [label]=\"'' + stepsAdded.length\" size=\"small\" backgroundColor=\"#ECFDF3\"\n textColor=\"#027A48\" borderColor=\"#A7F3D0\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let step of stepsAdded; trackBy: trackByStepId\" class=\"cqa-nvh-change-card cqa-nvh-change-card--added\">\n <div class=\"cqa-nvh-step-header\">\n <cqa-badge label=\"Added\" size=\"small\" backgroundColor=\"#ECFDF3\" textColor=\"#027A48\"\n borderColor=\"#A7F3D0\"></cqa-badge>\n <span class=\"cqa-nvh-step-prefix\">{{ getStepPrefixFn(step) }}</span>\n <span class=\"cqa-nvh-step-action cqa-action-format\" [innerHTML]=\"getStepActionHtmlFn(step)\"></span>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Steps Deleted ========== -->\n <ng-container *ngIf=\"stepsDeleted.length\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Steps Removed</span>\n <cqa-badge [label]=\"'' + stepsDeleted.length\" size=\"small\" backgroundColor=\"#FEF3F2\"\n textColor=\"#B42318\" borderColor=\"#FECDCA\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let step of stepsDeleted; trackBy: trackByStepId\" class=\"cqa-nvh-change-card cqa-nvh-change-card--removed\">\n <div class=\"cqa-nvh-step-header\">\n <cqa-badge label=\"Removed\" size=\"small\" backgroundColor=\"#FEF3F2\" textColor=\"#B42318\"\n borderColor=\"#FECDCA\"></cqa-badge>\n <span class=\"cqa-nvh-step-prefix\">{{ getStepPrefixFn(step) }}</span>\n <span class=\"cqa-nvh-step-action cqa-action-format\" [innerHTML]=\"getStepActionHtmlFn(step)\"></span>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Steps Updated ========== -->\n <ng-container *ngIf=\"stepsUpdated.length\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Steps Modified</span>\n <cqa-badge [label]=\"'' + stepsUpdated.length\" size=\"small\" backgroundColor=\"#FFFAEB\"\n textColor=\"#B54708\" borderColor=\"#FEDF89\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let step of stepsUpdated; trackBy: trackByStepId\" class=\"cqa-nvh-change-card\">\n <!-- Step header with category badge -->\n <div class=\"cqa-nvh-step-header\">\n <cqa-badge [label]=\"getCategoryLabelFn(step.category)\" size=\"small\" backgroundColor=\"#EDF1F3\"\n textColor=\"#636A71\" borderColor=\"#DBDEE1\"></cqa-badge>\n <span class=\"cqa-nvh-step-prefix\">{{ getStepPrefixFn(step) }}</span>\n <span class=\"cqa-nvh-step-action cqa-action-format\" [innerHTML]=\"getStepActionHtmlFn(step)\"></span>\n </div>\n\n <!-- Changed fields with before/after -->\n <div *ngFor=\"let field of visibleChangedFields(step); trackBy: trackByField\" class=\"cqa-nvh-field-diff\">\n <div class=\"cqa-nvh-change-field-label\">{{ getFieldLabelFn(field) }}</div>\n <ng-container\n *ngTemplateOutlet=\"beforeAfterBlock; context: {\n oldValue: step.old?.[field],\n newValue: step.new?.[field],\n field: field,\n oldStepData: step.old,\n newStepData: step.new\n }\">\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Empty state ========== -->\n <div *ngIf=\"!hasAnyChanges\" class=\"cqa-nvh-detail-empty\">\n <cqa-empty-state title=\"No changes\" description=\"No changes recorded for this version.\"></cqa-empty-state>\n </div>\n</ng-container>\n\n<ng-template #noSelection>\n <div class=\"cqa-nvh-detail-no-selection\">\n Select a version to view details.\n </div>\n</ng-template>\n\n<!-- ===== Reusable before/after block ===== -->\n<ng-template #beforeAfterBlock let-oldValue=\"oldValue\" let-newValue=\"newValue\" let-field=\"field\" let-oldStepData=\"oldStepData\" let-newStepData=\"newStepData\">\n <!-- 1. Custom table via parseFieldAsTableFn (e.g. testDataList) -->\n <ng-container *ngIf=\"parseFieldAsTableFn(field, oldValue, oldStepData) || parseFieldAsTableFn(field, newValue, newStepData); else nativeObjectCheck\">\n <ng-container\n *ngTemplateOutlet=\"objTable; context: {\n oldObj: parseFieldAsTableFn(field, oldValue, oldStepData),\n newObj: parseFieldAsTableFn(field, newValue, newStepData)\n }\">\n </ng-container>\n </ng-container>\n\n <!-- 2. Native object / JSON string -->\n <ng-template #nativeObjectCheck>\n <ng-container *ngIf=\"parseObjectValue(oldValue) || parseObjectValue(newValue); else simpleValue\">\n <ng-container\n *ngTemplateOutlet=\"objTable; context: {\n oldObj: parseObjectValue(oldValue),\n newObj: parseObjectValue(newValue)\n }\">\n </ng-container>\n </ng-container>\n </ng-template>\n\n <!-- 3. Primitive fallback -->\n <ng-template #simpleValue>\n <div class=\"cqa-nvh-before-after\">\n <div class=\"cqa-nvh-value-row cqa-nvh-value-row--before\">\n <cqa-badge label=\"Before\" size=\"small\" backgroundColor=\"#FEF2F2\" textColor=\"#FB2C36\"\n borderColor=\"#FFE2E2\"></cqa-badge>\n <span class=\"cqa-nvh-value-text\">{{ formatDisplayValueFn(oldValue, field) }}</span>\n </div>\n <div class=\"cqa-nvh-value-row cqa-nvh-value-row--after\">\n <cqa-badge label=\"After\" size=\"small\" backgroundColor=\"#ECFDF5\" textColor=\"#009966\"\n borderColor=\"#D0FAE5\"></cqa-badge>\n <span class=\"cqa-nvh-value-text\">{{ formatDisplayValueFn(newValue, field) }}</span>\n </div>\n </div>\n </ng-template>\n</ng-template>\n\n<!-- ===== Shared object table ===== -->\n<ng-template #objTable let-oldObj=\"oldObj\" let-newObj=\"newObj\">\n <div class=\"cqa-nvh-obj-table\" *ngIf=\"objectKeys(oldObj, newObj).length > 0\">\n <div class=\"cqa-nvh-obj-header\">\n <span></span>\n <span class=\"cqa-nvh-obj-col-label cqa-nvh-obj-col-label--before\">Before</span>\n <span class=\"cqa-nvh-obj-col-label cqa-nvh-obj-col-label--after\">After</span>\n </div>\n <div\n *ngFor=\"let key of objectKeys(oldObj, newObj); trackBy: trackByKey\"\n class=\"cqa-nvh-obj-row\">\n <span class=\"cqa-nvh-obj-key\">{{ getFieldLabelFn(key) }}</span>\n <span class=\"cqa-nvh-obj-val cqa-nvh-obj-val--before\">\n {{ formatPrimitiveValue(oldObj?.[key]) }}\n </span>\n <span class=\"cqa-nvh-obj-val cqa-nvh-obj-val--after\">\n {{ formatPrimitiveValue(newObj?.[key]) }}\n </span>\n </div>\n </div>\n</ng-template>\n", styles: [".cqa-nvh-detail-header{padding:16px 0 12px;border-bottom:1px solid #E4E7EC;margin-bottom:16px}.cqa-nvh-detail-version-number{font-size:18px;font-weight:600;color:#101828;margin:0}.cqa-nvh-detail-meta{font-size:13px;color:#667085}.cqa-nvh-detail-summary{font-size:13px;color:#344054;margin-top:4px}.cqa-nvh-detail-actions{display:flex;gap:8px;flex-shrink:0}.cqa-nvh-detail-summary-bar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.cqa-nvh-summary-chip{font-size:12px;font-weight:500;padding:2px 8px;border-radius:4px;border:1px solid}.cqa-nvh-summary-chip--added{background-color:#ecfdf3;color:#027a48;border-color:#a7f3d0}.cqa-nvh-summary-chip--modified{background-color:#fffaeb;color:#b54708;border-color:#fedf89}.cqa-nvh-summary-chip--removed{background-color:#fef3f2;color:#b42318;border-color:#fecdca}.cqa-nvh-summary-chip--unchanged{background-color:#f2f4f7;color:#667085;border-color:#e4e7ec}.cqa-nvh-section-header{display:flex;align-items:center;gap:8px;margin:20px 0 10px}.cqa-nvh-section-label{font-size:14px;font-weight:600;color:#344054}.cqa-nvh-changes-list{display:flex;flex-direction:column;gap:8px}.cqa-nvh-change-card{border:1px solid #E4E7EC;border-radius:8px;padding:12px 16px;background:#fff}.cqa-nvh-change-card--added{border-left:3px solid #027A48}.cqa-nvh-change-card--removed{border-left:3px solid #B42318}.cqa-nvh-step-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.cqa-nvh-step-prefix{font-size:14px;font-weight:600;color:#344054;white-space:nowrap}.cqa-nvh-step-action{font-size:14px;line-height:18px;color:#111827;min-width:0;flex:1;display:flex;align-items:center}.cqa-nvh-field-diff{padding:8px 0;border-top:1px solid #F2F4F7}.cqa-nvh-field-diff:first-child{border-top:none}.cqa-nvh-change-field-label{font-size:12px;font-weight:600;color:#667085;margin-bottom:6px;text-transform:uppercase;letter-spacing:.3px}.cqa-nvh-before-after{display:flex;flex-direction:column;gap:4px}.cqa-nvh-value-row{display:flex;align-items:flex-start;gap:8px;padding:4px 0}.cqa-nvh-value-row--before .cqa-nvh-value-text{color:#b42318}.cqa-nvh-value-row--after .cqa-nvh-value-text{color:#027a48}.cqa-nvh-value-text{font-size:13px;color:#344054;word-break:break-word;line-height:1.5}.cqa-nvh-obj-table{width:100%;border:1px solid #E4E7EC;border-radius:6px;overflow:hidden;font-size:13px}.cqa-nvh-obj-header{display:grid;grid-template-columns:1fr 1fr 1fr;background:#F9FAFB;border-bottom:1px solid #E4E7EC;padding:6px 10px}.cqa-nvh-obj-col-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px}.cqa-nvh-obj-col-label--before{color:#b42318}.cqa-nvh-obj-col-label--after{color:#027a48}.cqa-nvh-obj-row{display:grid;grid-template-columns:1fr 1fr 1fr;padding:5px 10px;border-bottom:1px solid #F2F4F7;align-items:baseline}.cqa-nvh-obj-row:last-child{border-bottom:none}.cqa-nvh-obj-row--changed{background:#FFFAEB}.cqa-nvh-obj-row--changed .cqa-nvh-obj-key{font-weight:600;color:#101828}.cqa-nvh-obj-row--changed .cqa-nvh-obj-val--before{color:#b42318}.cqa-nvh-obj-row--changed .cqa-nvh-obj-val--after{color:#027a48}.cqa-nvh-obj-key{font-size:12px;color:#667085;font-weight:500;word-break:break-all}.cqa-nvh-obj-val{font-size:12px;color:#344054;word-break:break-all;white-space:pre-line}.cqa-nvh-detail-empty{padding:40px 0;text-align:center}.cqa-nvh-detail-no-selection{display:flex;align-items:center;justify-content:center;height:200px;color:#98a2b3;font-size:14px}\n"], components: [{ type: i1.BadgeComponent, selector: "cqa-badge", inputs: ["type", "label", "icon", "iconLibrary", "variant", "size", "backgroundColor", "textColor", "borderColor", "iconBackgroundColor", "iconColor", "iconSize", "inlineStyles", "key", "value", "keyTextColor", "valueTextColor", "isLoading", "fullWidth", "centerContent", "title"] }, { type: i2.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }, { type: i3.EmptyStateComponent, selector: "cqa-empty-state", inputs: ["preset", "imageUrl", "title", "description", "actions"], outputs: ["actionClick"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "date": i4.DatePipe } });
135
+ NewVersionHistoryDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: NewVersionHistoryDetailComponent, selector: "cqa-new-version-history-detail", inputs: { selectedVersion: "selectedVersion", selectedIsCurrent: "selectedIsCurrent", isRestoring: "isRestoring", getAuthorLabelFn: "getAuthorLabelFn", getFieldLabelFn: "getFieldLabelFn", getStepPrefixFn: "getStepPrefixFn", getCategoryLabelFn: "getCategoryLabelFn", formatDisplayValueFn: "formatDisplayValueFn", getStepActionHtmlFn: "getStepActionHtmlFn", hiddenFields: "hiddenFields", parseFieldAsTableFn: "parseFieldAsTableFn" }, outputs: { compare: "compare", restore: "restore" }, ngImport: i0, template: "<ng-container *ngIf=\"selectedVersion; else noSelection\">\n <!-- ========== Header (same as old component) ========== -->\n <div class=\"d-flex align-items-start justify-content-between cqa-nvh-detail-header\">\n <div>\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; margin-bottom: 6px;\">\n <h3 class=\"cqa-nvh-detail-version-number\">Version {{ selectedVersion.versionNumber }}</h3>\n <cqa-badge *ngIf=\"selectedIsCurrent\" label=\"Current\" size=\"small\" variant=\"info\" backgroundColor=\"#EFF4FF\"\n textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n <div class=\"cqa-nvh-detail-meta\">\n {{ getAuthorLabelFn(selectedVersion) }} \u00B7 {{ selectedVersion.createdDate | date:'MMM d, yyyy \u00B7 h:mm a' }}\n </div>\n <div *ngIf=\"selectedVersion.changeSummary\" class=\"cqa-nvh-detail-summary\">\n {{ selectedVersion.changeSummary }}\n </div>\n </div>\n <div *ngIf=\"!selectedIsCurrent\" class=\"cqa-nvh-detail-actions\">\n <cqa-button variant=\"outlined\" text=\"Compare with Current\" (clicked)=\"compare.emit()\"></cqa-button>\n <cqa-button variant=\"filled\" icon=\"refresh\" [text]=\"isRestoring ? 'Restoring...' : 'Restore this Version'\"\n [disabled]=\"isRestoring\" (clicked)=\"restore.emit()\"></cqa-button>\n </div>\n </div>\n\n <!-- ========== Summary bar ========== -->\n <!-- <div *ngIf=\"stepsSummary\" class=\"cqa-nvh-detail-summary-bar\">\n <span *ngIf=\"stepsSummary.added\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--added\">+{{ stepsSummary.added }} added</span>\n <span *ngIf=\"stepsSummary.modified\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--modified\">{{ stepsSummary.modified }} modified</span>\n <span *ngIf=\"stepsSummary.removed\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--removed\">{{ stepsSummary.removed }} removed</span>\n <span *ngIf=\"stepsSummary.unchanged\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--unchanged\">{{ stepsSummary.unchanged }} unchanged</span>\n </div> -->\n\n <!-- ========== Test Case Changes ========== -->\n <ng-container *ngIf=\"hasTestCaseChanges\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Test Case Changes</span>\n <cqa-badge [label]=\"'' + testCaseChangedFields.length\" size=\"small\" variant=\"info\"\n backgroundColor=\"#EFF4FF\" textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let field of testCaseChangedFields; trackBy: trackByField\" class=\"cqa-nvh-change-card\">\n <div class=\"cqa-nvh-change-field-label\">{{ getFieldLabelFn(field) }}</div>\n <ng-container\n *ngTemplateOutlet=\"beforeAfterBlock; context: {\n oldValue: selectedVersion.testCase.old?.[field],\n newValue: selectedVersion.testCase.new?.[field],\n field: field,\n oldStepData: selectedVersion.testCase.old,\n newStepData: selectedVersion.testCase.new\n }\">\n </ng-container>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Steps Added ========== -->\n <ng-container *ngIf=\"stepsAdded.length\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Steps Added</span>\n <cqa-badge [label]=\"'' + stepsAdded.length\" size=\"small\" backgroundColor=\"#ECFDF3\"\n textColor=\"#027A48\" borderColor=\"#A7F3D0\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let step of stepsAdded; trackBy: trackByStepId\" class=\"cqa-nvh-change-card cqa-nvh-change-card--added\">\n <div class=\"cqa-nvh-step-header\">\n <cqa-badge label=\"Added\" size=\"small\" backgroundColor=\"#ECFDF3\" textColor=\"#027A48\"\n borderColor=\"#A7F3D0\"></cqa-badge>\n <span class=\"cqa-nvh-step-prefix\">{{ getStepPrefixFn(step) }}</span>\n <span class=\"cqa-nvh-step-action cqa-action-format\" [innerHTML]=\"getStepActionHtmlFn(step)\"></span>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Steps Deleted ========== -->\n <ng-container *ngIf=\"stepsDeleted.length\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Steps Removed</span>\n <cqa-badge [label]=\"'' + stepsDeleted.length\" size=\"small\" backgroundColor=\"#FEF3F2\"\n textColor=\"#B42318\" borderColor=\"#FECDCA\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let step of stepsDeleted; trackBy: trackByStepId\" class=\"cqa-nvh-change-card cqa-nvh-change-card--removed\">\n <div class=\"cqa-nvh-step-header\">\n <cqa-badge label=\"Removed\" size=\"small\" backgroundColor=\"#FEF3F2\" textColor=\"#B42318\"\n borderColor=\"#FECDCA\"></cqa-badge>\n <span class=\"cqa-nvh-step-prefix\">{{ getStepPrefixFn(step) }}</span>\n <span class=\"cqa-nvh-step-action cqa-action-format\" [innerHTML]=\"getStepActionHtmlFn(step)\"></span>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Steps Updated ========== -->\n <ng-container *ngIf=\"stepsUpdated.length\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Steps Modified</span>\n <cqa-badge [label]=\"'' + stepsUpdated.length\" size=\"small\" backgroundColor=\"#FFFAEB\"\n textColor=\"#B54708\" borderColor=\"#FEDF89\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let step of stepsUpdated; trackBy: trackByStepId\" class=\"cqa-nvh-change-card\">\n <!-- Step header with category badge -->\n <div class=\"cqa-nvh-step-header\">\n <cqa-badge [label]=\"getCategoryLabelFn(step.category)\" size=\"small\" backgroundColor=\"#EDF1F3\"\n textColor=\"#636A71\" borderColor=\"#DBDEE1\"></cqa-badge>\n <span class=\"cqa-nvh-step-prefix\">{{ getStepPrefixFn(step) }}</span>\n <span class=\"cqa-nvh-step-action cqa-action-format\" [innerHTML]=\"getStepActionHtmlFn(step)\"></span>\n </div>\n\n <!-- Changed fields with before/after -->\n <div *ngFor=\"let field of visibleChangedFields(step); trackBy: trackByField\" class=\"cqa-nvh-field-diff\">\n <div class=\"cqa-nvh-change-field-label\">{{ getFieldLabelFn(field) }}</div>\n <ng-container\n *ngTemplateOutlet=\"beforeAfterBlock; context: {\n oldValue: step.old?.[field],\n newValue: step.new?.[field],\n field: field,\n oldStepData: step.old,\n newStepData: step.new\n }\">\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Empty state ========== -->\n <div *ngIf=\"!hasAnyChanges\" class=\"cqa-nvh-detail-empty\">\n <cqa-empty-state title=\"No changes\" description=\"No changes recorded for this version.\"></cqa-empty-state>\n </div>\n</ng-container>\n\n<ng-template #noSelection>\n <div class=\"cqa-nvh-detail-no-selection\">\n Select a version to view details.\n </div>\n</ng-template>\n\n<!-- ===== Reusable before/after block ===== -->\n<ng-template #beforeAfterBlock let-oldValue=\"oldValue\" let-newValue=\"newValue\" let-field=\"field\" let-oldStepData=\"oldStepData\" let-newStepData=\"newStepData\">\n <!-- 1. Custom table via parseFieldAsTableFn (e.g. testDataList) -->\n <ng-container *ngIf=\"parseFieldAsTableFn(field, oldValue, oldStepData) || parseFieldAsTableFn(field, newValue, newStepData); else nativeObjectCheck\">\n <ng-container\n *ngTemplateOutlet=\"objTable; context: {\n oldObj: parseFieldAsTableFn(field, oldValue, oldStepData),\n newObj: parseFieldAsTableFn(field, newValue, newStepData)\n }\">\n </ng-container>\n </ng-container>\n\n <!-- 2. Native object / JSON string -->\n <ng-template #nativeObjectCheck>\n <ng-container *ngIf=\"parseObjectValue(oldValue) || parseObjectValue(newValue); else simpleValue\">\n <ng-container\n *ngTemplateOutlet=\"objTable; context: {\n oldObj: parseObjectValue(oldValue),\n newObj: parseObjectValue(newValue)\n }\">\n </ng-container>\n </ng-container>\n </ng-template>\n\n <!-- 3. Primitive fallback -->\n <ng-template #simpleValue>\n <div class=\"cqa-nvh-before-after\">\n <div class=\"cqa-nvh-value-row cqa-nvh-value-row--before\">\n <cqa-badge label=\"Before\" size=\"small\" backgroundColor=\"#FEF2F2\" textColor=\"#FB2C36\"\n borderColor=\"#FFE2E2\"></cqa-badge>\n <span class=\"cqa-nvh-value-text\">{{ formatDisplayValueFn(oldValue, field, oldStepData) }}</span>\n </div>\n <div class=\"cqa-nvh-value-row cqa-nvh-value-row--after\">\n <cqa-badge label=\"After\" size=\"small\" backgroundColor=\"#ECFDF5\" textColor=\"#009966\"\n borderColor=\"#D0FAE5\"></cqa-badge>\n <span class=\"cqa-nvh-value-text\">{{ formatDisplayValueFn(newValue, field, newStepData) }}</span>\n </div>\n </div>\n </ng-template>\n</ng-template>\n\n<!-- ===== Shared object table ===== -->\n<ng-template #objTable let-oldObj=\"oldObj\" let-newObj=\"newObj\">\n <div class=\"cqa-nvh-obj-table\" *ngIf=\"objectKeys(oldObj, newObj).length > 0\">\n <div class=\"cqa-nvh-obj-header\">\n <span></span>\n <span class=\"cqa-nvh-obj-col-label cqa-nvh-obj-col-label--before\">Before</span>\n <span class=\"cqa-nvh-obj-col-label cqa-nvh-obj-col-label--after\">After</span>\n </div>\n <div\n *ngFor=\"let key of objectKeys(oldObj, newObj); trackBy: trackByKey\"\n class=\"cqa-nvh-obj-row\">\n <span class=\"cqa-nvh-obj-key\">{{ getFieldLabelFn(key) }}</span>\n <span class=\"cqa-nvh-obj-val cqa-nvh-obj-val--before\">\n {{ formatPrimitiveValue(oldObj?.[key]) }}\n </span>\n <span class=\"cqa-nvh-obj-val cqa-nvh-obj-val--after\">\n {{ formatPrimitiveValue(newObj?.[key]) }}\n </span>\n </div>\n </div>\n</ng-template>\n", components: [{ type: i1.BadgeComponent, selector: "cqa-badge", inputs: ["type", "label", "icon", "iconLibrary", "variant", "size", "backgroundColor", "textColor", "borderColor", "iconBackgroundColor", "iconColor", "iconSize", "inlineStyles", "key", "value", "keyTextColor", "valueTextColor", "isLoading", "fullWidth", "centerContent", "title"] }, { type: i2.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }, { type: i3.EmptyStateComponent, selector: "cqa-empty-state", inputs: ["preset", "imageUrl", "title", "description", "actions"], outputs: ["actionClick"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "date": i4.DatePipe } });
136
136
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NewVersionHistoryDetailComponent, decorators: [{
137
137
  type: Component,
138
- args: [{ selector: 'cqa-new-version-history-detail', template: "<ng-container *ngIf=\"selectedVersion; else noSelection\">\n <!-- ========== Header (same as old component) ========== -->\n <div class=\"d-flex align-items-start justify-content-between cqa-nvh-detail-header\">\n <div>\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; margin-bottom: 6px;\">\n <h3 class=\"cqa-nvh-detail-version-number\">Version {{ selectedVersion.versionNumber }}</h3>\n <cqa-badge *ngIf=\"selectedIsCurrent\" label=\"Current\" size=\"small\" variant=\"info\" backgroundColor=\"#EFF4FF\"\n textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n <div class=\"cqa-nvh-detail-meta\">\n {{ getAuthorLabelFn(selectedVersion) }} \u00B7 {{ selectedVersion.createdDate | date:'MMM d, yyyy \u00B7 h:mm a' }}\n </div>\n <div *ngIf=\"selectedVersion.changeSummary\" class=\"cqa-nvh-detail-summary\">\n {{ selectedVersion.changeSummary }}\n </div>\n </div>\n <div *ngIf=\"!selectedIsCurrent\" class=\"cqa-nvh-detail-actions\">\n <cqa-button variant=\"outlined\" text=\"Compare with Current\" (clicked)=\"compare.emit()\"></cqa-button>\n <cqa-button variant=\"filled\" icon=\"refresh\" [text]=\"isRestoring ? 'Restoring...' : 'Restore this Version'\"\n [disabled]=\"isRestoring\" (clicked)=\"restore.emit()\"></cqa-button>\n </div>\n </div>\n\n <!-- ========== Summary bar ========== -->\n <!-- <div *ngIf=\"stepsSummary\" class=\"cqa-nvh-detail-summary-bar\">\n <span *ngIf=\"stepsSummary.added\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--added\">+{{ stepsSummary.added }} added</span>\n <span *ngIf=\"stepsSummary.modified\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--modified\">{{ stepsSummary.modified }} modified</span>\n <span *ngIf=\"stepsSummary.removed\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--removed\">{{ stepsSummary.removed }} removed</span>\n <span *ngIf=\"stepsSummary.unchanged\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--unchanged\">{{ stepsSummary.unchanged }} unchanged</span>\n </div> -->\n\n <!-- ========== Test Case Changes ========== -->\n <ng-container *ngIf=\"hasTestCaseChanges\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Test Case Changes</span>\n <cqa-badge [label]=\"'' + testCaseChangedFields.length\" size=\"small\" variant=\"info\"\n backgroundColor=\"#EFF4FF\" textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let field of testCaseChangedFields; trackBy: trackByField\" class=\"cqa-nvh-change-card\">\n <div class=\"cqa-nvh-change-field-label\">{{ getFieldLabelFn(field) }}</div>\n <ng-container\n *ngTemplateOutlet=\"beforeAfterBlock; context: {\n oldValue: selectedVersion.testCase.old?.[field],\n newValue: selectedVersion.testCase.new?.[field],\n field: field,\n oldStepData: selectedVersion.testCase.old,\n newStepData: selectedVersion.testCase.new\n }\">\n </ng-container>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Steps Added ========== -->\n <ng-container *ngIf=\"stepsAdded.length\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Steps Added</span>\n <cqa-badge [label]=\"'' + stepsAdded.length\" size=\"small\" backgroundColor=\"#ECFDF3\"\n textColor=\"#027A48\" borderColor=\"#A7F3D0\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let step of stepsAdded; trackBy: trackByStepId\" class=\"cqa-nvh-change-card cqa-nvh-change-card--added\">\n <div class=\"cqa-nvh-step-header\">\n <cqa-badge label=\"Added\" size=\"small\" backgroundColor=\"#ECFDF3\" textColor=\"#027A48\"\n borderColor=\"#A7F3D0\"></cqa-badge>\n <span class=\"cqa-nvh-step-prefix\">{{ getStepPrefixFn(step) }}</span>\n <span class=\"cqa-nvh-step-action cqa-action-format\" [innerHTML]=\"getStepActionHtmlFn(step)\"></span>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Steps Deleted ========== -->\n <ng-container *ngIf=\"stepsDeleted.length\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Steps Removed</span>\n <cqa-badge [label]=\"'' + stepsDeleted.length\" size=\"small\" backgroundColor=\"#FEF3F2\"\n textColor=\"#B42318\" borderColor=\"#FECDCA\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let step of stepsDeleted; trackBy: trackByStepId\" class=\"cqa-nvh-change-card cqa-nvh-change-card--removed\">\n <div class=\"cqa-nvh-step-header\">\n <cqa-badge label=\"Removed\" size=\"small\" backgroundColor=\"#FEF3F2\" textColor=\"#B42318\"\n borderColor=\"#FECDCA\"></cqa-badge>\n <span class=\"cqa-nvh-step-prefix\">{{ getStepPrefixFn(step) }}</span>\n <span class=\"cqa-nvh-step-action cqa-action-format\" [innerHTML]=\"getStepActionHtmlFn(step)\"></span>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Steps Updated ========== -->\n <ng-container *ngIf=\"stepsUpdated.length\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Steps Modified</span>\n <cqa-badge [label]=\"'' + stepsUpdated.length\" size=\"small\" backgroundColor=\"#FFFAEB\"\n textColor=\"#B54708\" borderColor=\"#FEDF89\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let step of stepsUpdated; trackBy: trackByStepId\" class=\"cqa-nvh-change-card\">\n <!-- Step header with category badge -->\n <div class=\"cqa-nvh-step-header\">\n <cqa-badge [label]=\"getCategoryLabelFn(step.category)\" size=\"small\" backgroundColor=\"#EDF1F3\"\n textColor=\"#636A71\" borderColor=\"#DBDEE1\"></cqa-badge>\n <span class=\"cqa-nvh-step-prefix\">{{ getStepPrefixFn(step) }}</span>\n <span class=\"cqa-nvh-step-action cqa-action-format\" [innerHTML]=\"getStepActionHtmlFn(step)\"></span>\n </div>\n\n <!-- Changed fields with before/after -->\n <div *ngFor=\"let field of visibleChangedFields(step); trackBy: trackByField\" class=\"cqa-nvh-field-diff\">\n <div class=\"cqa-nvh-change-field-label\">{{ getFieldLabelFn(field) }}</div>\n <ng-container\n *ngTemplateOutlet=\"beforeAfterBlock; context: {\n oldValue: step.old?.[field],\n newValue: step.new?.[field],\n field: field,\n oldStepData: step.old,\n newStepData: step.new\n }\">\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Empty state ========== -->\n <div *ngIf=\"!hasAnyChanges\" class=\"cqa-nvh-detail-empty\">\n <cqa-empty-state title=\"No changes\" description=\"No changes recorded for this version.\"></cqa-empty-state>\n </div>\n</ng-container>\n\n<ng-template #noSelection>\n <div class=\"cqa-nvh-detail-no-selection\">\n Select a version to view details.\n </div>\n</ng-template>\n\n<!-- ===== Reusable before/after block ===== -->\n<ng-template #beforeAfterBlock let-oldValue=\"oldValue\" let-newValue=\"newValue\" let-field=\"field\" let-oldStepData=\"oldStepData\" let-newStepData=\"newStepData\">\n <!-- 1. Custom table via parseFieldAsTableFn (e.g. testDataList) -->\n <ng-container *ngIf=\"parseFieldAsTableFn(field, oldValue, oldStepData) || parseFieldAsTableFn(field, newValue, newStepData); else nativeObjectCheck\">\n <ng-container\n *ngTemplateOutlet=\"objTable; context: {\n oldObj: parseFieldAsTableFn(field, oldValue, oldStepData),\n newObj: parseFieldAsTableFn(field, newValue, newStepData)\n }\">\n </ng-container>\n </ng-container>\n\n <!-- 2. Native object / JSON string -->\n <ng-template #nativeObjectCheck>\n <ng-container *ngIf=\"parseObjectValue(oldValue) || parseObjectValue(newValue); else simpleValue\">\n <ng-container\n *ngTemplateOutlet=\"objTable; context: {\n oldObj: parseObjectValue(oldValue),\n newObj: parseObjectValue(newValue)\n }\">\n </ng-container>\n </ng-container>\n </ng-template>\n\n <!-- 3. Primitive fallback -->\n <ng-template #simpleValue>\n <div class=\"cqa-nvh-before-after\">\n <div class=\"cqa-nvh-value-row cqa-nvh-value-row--before\">\n <cqa-badge label=\"Before\" size=\"small\" backgroundColor=\"#FEF2F2\" textColor=\"#FB2C36\"\n borderColor=\"#FFE2E2\"></cqa-badge>\n <span class=\"cqa-nvh-value-text\">{{ formatDisplayValueFn(oldValue, field) }}</span>\n </div>\n <div class=\"cqa-nvh-value-row cqa-nvh-value-row--after\">\n <cqa-badge label=\"After\" size=\"small\" backgroundColor=\"#ECFDF5\" textColor=\"#009966\"\n borderColor=\"#D0FAE5\"></cqa-badge>\n <span class=\"cqa-nvh-value-text\">{{ formatDisplayValueFn(newValue, field) }}</span>\n </div>\n </div>\n </ng-template>\n</ng-template>\n\n<!-- ===== Shared object table ===== -->\n<ng-template #objTable let-oldObj=\"oldObj\" let-newObj=\"newObj\">\n <div class=\"cqa-nvh-obj-table\" *ngIf=\"objectKeys(oldObj, newObj).length > 0\">\n <div class=\"cqa-nvh-obj-header\">\n <span></span>\n <span class=\"cqa-nvh-obj-col-label cqa-nvh-obj-col-label--before\">Before</span>\n <span class=\"cqa-nvh-obj-col-label cqa-nvh-obj-col-label--after\">After</span>\n </div>\n <div\n *ngFor=\"let key of objectKeys(oldObj, newObj); trackBy: trackByKey\"\n class=\"cqa-nvh-obj-row\">\n <span class=\"cqa-nvh-obj-key\">{{ getFieldLabelFn(key) }}</span>\n <span class=\"cqa-nvh-obj-val cqa-nvh-obj-val--before\">\n {{ formatPrimitiveValue(oldObj?.[key]) }}\n </span>\n <span class=\"cqa-nvh-obj-val cqa-nvh-obj-val--after\">\n {{ formatPrimitiveValue(newObj?.[key]) }}\n </span>\n </div>\n </div>\n</ng-template>\n", styles: [".cqa-nvh-detail-header{padding:16px 0 12px;border-bottom:1px solid #E4E7EC;margin-bottom:16px}.cqa-nvh-detail-version-number{font-size:18px;font-weight:600;color:#101828;margin:0}.cqa-nvh-detail-meta{font-size:13px;color:#667085}.cqa-nvh-detail-summary{font-size:13px;color:#344054;margin-top:4px}.cqa-nvh-detail-actions{display:flex;gap:8px;flex-shrink:0}.cqa-nvh-detail-summary-bar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.cqa-nvh-summary-chip{font-size:12px;font-weight:500;padding:2px 8px;border-radius:4px;border:1px solid}.cqa-nvh-summary-chip--added{background-color:#ecfdf3;color:#027a48;border-color:#a7f3d0}.cqa-nvh-summary-chip--modified{background-color:#fffaeb;color:#b54708;border-color:#fedf89}.cqa-nvh-summary-chip--removed{background-color:#fef3f2;color:#b42318;border-color:#fecdca}.cqa-nvh-summary-chip--unchanged{background-color:#f2f4f7;color:#667085;border-color:#e4e7ec}.cqa-nvh-section-header{display:flex;align-items:center;gap:8px;margin:20px 0 10px}.cqa-nvh-section-label{font-size:14px;font-weight:600;color:#344054}.cqa-nvh-changes-list{display:flex;flex-direction:column;gap:8px}.cqa-nvh-change-card{border:1px solid #E4E7EC;border-radius:8px;padding:12px 16px;background:#fff}.cqa-nvh-change-card--added{border-left:3px solid #027A48}.cqa-nvh-change-card--removed{border-left:3px solid #B42318}.cqa-nvh-step-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.cqa-nvh-step-prefix{font-size:14px;font-weight:600;color:#344054;white-space:nowrap}.cqa-nvh-step-action{font-size:14px;line-height:18px;color:#111827;min-width:0;flex:1;display:flex;align-items:center}.cqa-nvh-field-diff{padding:8px 0;border-top:1px solid #F2F4F7}.cqa-nvh-field-diff:first-child{border-top:none}.cqa-nvh-change-field-label{font-size:12px;font-weight:600;color:#667085;margin-bottom:6px;text-transform:uppercase;letter-spacing:.3px}.cqa-nvh-before-after{display:flex;flex-direction:column;gap:4px}.cqa-nvh-value-row{display:flex;align-items:flex-start;gap:8px;padding:4px 0}.cqa-nvh-value-row--before .cqa-nvh-value-text{color:#b42318}.cqa-nvh-value-row--after .cqa-nvh-value-text{color:#027a48}.cqa-nvh-value-text{font-size:13px;color:#344054;word-break:break-word;line-height:1.5}.cqa-nvh-obj-table{width:100%;border:1px solid #E4E7EC;border-radius:6px;overflow:hidden;font-size:13px}.cqa-nvh-obj-header{display:grid;grid-template-columns:1fr 1fr 1fr;background:#F9FAFB;border-bottom:1px solid #E4E7EC;padding:6px 10px}.cqa-nvh-obj-col-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px}.cqa-nvh-obj-col-label--before{color:#b42318}.cqa-nvh-obj-col-label--after{color:#027a48}.cqa-nvh-obj-row{display:grid;grid-template-columns:1fr 1fr 1fr;padding:5px 10px;border-bottom:1px solid #F2F4F7;align-items:baseline}.cqa-nvh-obj-row:last-child{border-bottom:none}.cqa-nvh-obj-row--changed{background:#FFFAEB}.cqa-nvh-obj-row--changed .cqa-nvh-obj-key{font-weight:600;color:#101828}.cqa-nvh-obj-row--changed .cqa-nvh-obj-val--before{color:#b42318}.cqa-nvh-obj-row--changed .cqa-nvh-obj-val--after{color:#027a48}.cqa-nvh-obj-key{font-size:12px;color:#667085;font-weight:500;word-break:break-all}.cqa-nvh-obj-val{font-size:12px;color:#344054;word-break:break-all;white-space:pre-line}.cqa-nvh-detail-empty{padding:40px 0;text-align:center}.cqa-nvh-detail-no-selection{display:flex;align-items:center;justify-content:center;height:200px;color:#98a2b3;font-size:14px}\n"] }]
138
+ args: [{ selector: 'cqa-new-version-history-detail', template: "<ng-container *ngIf=\"selectedVersion; else noSelection\">\n <!-- ========== Header (same as old component) ========== -->\n <div class=\"d-flex align-items-start justify-content-between cqa-nvh-detail-header\">\n <div>\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; margin-bottom: 6px;\">\n <h3 class=\"cqa-nvh-detail-version-number\">Version {{ selectedVersion.versionNumber }}</h3>\n <cqa-badge *ngIf=\"selectedIsCurrent\" label=\"Current\" size=\"small\" variant=\"info\" backgroundColor=\"#EFF4FF\"\n textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n <div class=\"cqa-nvh-detail-meta\">\n {{ getAuthorLabelFn(selectedVersion) }} \u00B7 {{ selectedVersion.createdDate | date:'MMM d, yyyy \u00B7 h:mm a' }}\n </div>\n <div *ngIf=\"selectedVersion.changeSummary\" class=\"cqa-nvh-detail-summary\">\n {{ selectedVersion.changeSummary }}\n </div>\n </div>\n <div *ngIf=\"!selectedIsCurrent\" class=\"cqa-nvh-detail-actions\">\n <cqa-button variant=\"outlined\" text=\"Compare with Current\" (clicked)=\"compare.emit()\"></cqa-button>\n <cqa-button variant=\"filled\" icon=\"refresh\" [text]=\"isRestoring ? 'Restoring...' : 'Restore this Version'\"\n [disabled]=\"isRestoring\" (clicked)=\"restore.emit()\"></cqa-button>\n </div>\n </div>\n\n <!-- ========== Summary bar ========== -->\n <!-- <div *ngIf=\"stepsSummary\" class=\"cqa-nvh-detail-summary-bar\">\n <span *ngIf=\"stepsSummary.added\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--added\">+{{ stepsSummary.added }} added</span>\n <span *ngIf=\"stepsSummary.modified\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--modified\">{{ stepsSummary.modified }} modified</span>\n <span *ngIf=\"stepsSummary.removed\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--removed\">{{ stepsSummary.removed }} removed</span>\n <span *ngIf=\"stepsSummary.unchanged\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--unchanged\">{{ stepsSummary.unchanged }} unchanged</span>\n </div> -->\n\n <!-- ========== Test Case Changes ========== -->\n <ng-container *ngIf=\"hasTestCaseChanges\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Test Case Changes</span>\n <cqa-badge [label]=\"'' + testCaseChangedFields.length\" size=\"small\" variant=\"info\"\n backgroundColor=\"#EFF4FF\" textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let field of testCaseChangedFields; trackBy: trackByField\" class=\"cqa-nvh-change-card\">\n <div class=\"cqa-nvh-change-field-label\">{{ getFieldLabelFn(field) }}</div>\n <ng-container\n *ngTemplateOutlet=\"beforeAfterBlock; context: {\n oldValue: selectedVersion.testCase.old?.[field],\n newValue: selectedVersion.testCase.new?.[field],\n field: field,\n oldStepData: selectedVersion.testCase.old,\n newStepData: selectedVersion.testCase.new\n }\">\n </ng-container>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Steps Added ========== -->\n <ng-container *ngIf=\"stepsAdded.length\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Steps Added</span>\n <cqa-badge [label]=\"'' + stepsAdded.length\" size=\"small\" backgroundColor=\"#ECFDF3\"\n textColor=\"#027A48\" borderColor=\"#A7F3D0\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let step of stepsAdded; trackBy: trackByStepId\" class=\"cqa-nvh-change-card cqa-nvh-change-card--added\">\n <div class=\"cqa-nvh-step-header\">\n <cqa-badge label=\"Added\" size=\"small\" backgroundColor=\"#ECFDF3\" textColor=\"#027A48\"\n borderColor=\"#A7F3D0\"></cqa-badge>\n <span class=\"cqa-nvh-step-prefix\">{{ getStepPrefixFn(step) }}</span>\n <span class=\"cqa-nvh-step-action cqa-action-format\" [innerHTML]=\"getStepActionHtmlFn(step)\"></span>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Steps Deleted ========== -->\n <ng-container *ngIf=\"stepsDeleted.length\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Steps Removed</span>\n <cqa-badge [label]=\"'' + stepsDeleted.length\" size=\"small\" backgroundColor=\"#FEF3F2\"\n textColor=\"#B42318\" borderColor=\"#FECDCA\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let step of stepsDeleted; trackBy: trackByStepId\" class=\"cqa-nvh-change-card cqa-nvh-change-card--removed\">\n <div class=\"cqa-nvh-step-header\">\n <cqa-badge label=\"Removed\" size=\"small\" backgroundColor=\"#FEF3F2\" textColor=\"#B42318\"\n borderColor=\"#FECDCA\"></cqa-badge>\n <span class=\"cqa-nvh-step-prefix\">{{ getStepPrefixFn(step) }}</span>\n <span class=\"cqa-nvh-step-action cqa-action-format\" [innerHTML]=\"getStepActionHtmlFn(step)\"></span>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Steps Updated ========== -->\n <ng-container *ngIf=\"stepsUpdated.length\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Steps Modified</span>\n <cqa-badge [label]=\"'' + stepsUpdated.length\" size=\"small\" backgroundColor=\"#FFFAEB\"\n textColor=\"#B54708\" borderColor=\"#FEDF89\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let step of stepsUpdated; trackBy: trackByStepId\" class=\"cqa-nvh-change-card\">\n <!-- Step header with category badge -->\n <div class=\"cqa-nvh-step-header\">\n <cqa-badge [label]=\"getCategoryLabelFn(step.category)\" size=\"small\" backgroundColor=\"#EDF1F3\"\n textColor=\"#636A71\" borderColor=\"#DBDEE1\"></cqa-badge>\n <span class=\"cqa-nvh-step-prefix\">{{ getStepPrefixFn(step) }}</span>\n <span class=\"cqa-nvh-step-action cqa-action-format\" [innerHTML]=\"getStepActionHtmlFn(step)\"></span>\n </div>\n\n <!-- Changed fields with before/after -->\n <div *ngFor=\"let field of visibleChangedFields(step); trackBy: trackByField\" class=\"cqa-nvh-field-diff\">\n <div class=\"cqa-nvh-change-field-label\">{{ getFieldLabelFn(field) }}</div>\n <ng-container\n *ngTemplateOutlet=\"beforeAfterBlock; context: {\n oldValue: step.old?.[field],\n newValue: step.new?.[field],\n field: field,\n oldStepData: step.old,\n newStepData: step.new\n }\">\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Empty state ========== -->\n <div *ngIf=\"!hasAnyChanges\" class=\"cqa-nvh-detail-empty\">\n <cqa-empty-state title=\"No changes\" description=\"No changes recorded for this version.\"></cqa-empty-state>\n </div>\n</ng-container>\n\n<ng-template #noSelection>\n <div class=\"cqa-nvh-detail-no-selection\">\n Select a version to view details.\n </div>\n</ng-template>\n\n<!-- ===== Reusable before/after block ===== -->\n<ng-template #beforeAfterBlock let-oldValue=\"oldValue\" let-newValue=\"newValue\" let-field=\"field\" let-oldStepData=\"oldStepData\" let-newStepData=\"newStepData\">\n <!-- 1. Custom table via parseFieldAsTableFn (e.g. testDataList) -->\n <ng-container *ngIf=\"parseFieldAsTableFn(field, oldValue, oldStepData) || parseFieldAsTableFn(field, newValue, newStepData); else nativeObjectCheck\">\n <ng-container\n *ngTemplateOutlet=\"objTable; context: {\n oldObj: parseFieldAsTableFn(field, oldValue, oldStepData),\n newObj: parseFieldAsTableFn(field, newValue, newStepData)\n }\">\n </ng-container>\n </ng-container>\n\n <!-- 2. Native object / JSON string -->\n <ng-template #nativeObjectCheck>\n <ng-container *ngIf=\"parseObjectValue(oldValue) || parseObjectValue(newValue); else simpleValue\">\n <ng-container\n *ngTemplateOutlet=\"objTable; context: {\n oldObj: parseObjectValue(oldValue),\n newObj: parseObjectValue(newValue)\n }\">\n </ng-container>\n </ng-container>\n </ng-template>\n\n <!-- 3. Primitive fallback -->\n <ng-template #simpleValue>\n <div class=\"cqa-nvh-before-after\">\n <div class=\"cqa-nvh-value-row cqa-nvh-value-row--before\">\n <cqa-badge label=\"Before\" size=\"small\" backgroundColor=\"#FEF2F2\" textColor=\"#FB2C36\"\n borderColor=\"#FFE2E2\"></cqa-badge>\n <span class=\"cqa-nvh-value-text\">{{ formatDisplayValueFn(oldValue, field, oldStepData) }}</span>\n </div>\n <div class=\"cqa-nvh-value-row cqa-nvh-value-row--after\">\n <cqa-badge label=\"After\" size=\"small\" backgroundColor=\"#ECFDF5\" textColor=\"#009966\"\n borderColor=\"#D0FAE5\"></cqa-badge>\n <span class=\"cqa-nvh-value-text\">{{ formatDisplayValueFn(newValue, field, newStepData) }}</span>\n </div>\n </div>\n </ng-template>\n</ng-template>\n\n<!-- ===== Shared object table ===== -->\n<ng-template #objTable let-oldObj=\"oldObj\" let-newObj=\"newObj\">\n <div class=\"cqa-nvh-obj-table\" *ngIf=\"objectKeys(oldObj, newObj).length > 0\">\n <div class=\"cqa-nvh-obj-header\">\n <span></span>\n <span class=\"cqa-nvh-obj-col-label cqa-nvh-obj-col-label--before\">Before</span>\n <span class=\"cqa-nvh-obj-col-label cqa-nvh-obj-col-label--after\">After</span>\n </div>\n <div\n *ngFor=\"let key of objectKeys(oldObj, newObj); trackBy: trackByKey\"\n class=\"cqa-nvh-obj-row\">\n <span class=\"cqa-nvh-obj-key\">{{ getFieldLabelFn(key) }}</span>\n <span class=\"cqa-nvh-obj-val cqa-nvh-obj-val--before\">\n {{ formatPrimitiveValue(oldObj?.[key]) }}\n </span>\n <span class=\"cqa-nvh-obj-val cqa-nvh-obj-val--after\">\n {{ formatPrimitiveValue(newObj?.[key]) }}\n </span>\n </div>\n </div>\n</ng-template>\n", styles: [] }]
139
139
  }], propDecorators: { selectedVersion: [{
140
140
  type: Input
141
141
  }], selectedIsCurrent: [{
@@ -163,4 +163,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
163
163
  }], restore: [{
164
164
  type: Output
165
165
  }] } });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LXZlcnNpb24taGlzdG9yeS1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi92ZXJzaW9uLWhpc3RvcnkvbmV3LXZlcnNpb24taGlzdG9yeS1kZXRhaWwvbmV3LXZlcnNpb24taGlzdG9yeS1kZXRhaWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi92ZXJzaW9uLWhpc3RvcnkvbmV3LXZlcnNpb24taGlzdG9yeS1kZXRhaWwvbmV3LXZlcnNpb24taGlzdG9yeS1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBT3ZFLE1BQU0sT0FBTyxnQ0FBZ0M7SUFMN0M7UUFNbUIsc0JBQWlCLEdBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUdqRCxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFcEIscUJBQWdCLEdBQTZCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN0RCxvQkFBZSxHQUE4QixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQzlELG9CQUFlLEdBQTBCLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUN0RCx1QkFBa0IsR0FBaUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUMxRix5QkFBb0IsR0FBMkMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xHLHdCQUFtQixHQUEwQixHQUFH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QU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNuRixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUN2QixPQUFPLE1BQU0sQ0FBQztTQUNmO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sQ0FBQyxHQUFHLFdBQVcsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OzZIQXpJVSxnQ0FBZ0M7aUhBQWhDLGdDQUFnQywyaUJDUDdDLHU2VEE0TUE7MkZEck1hLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDRSxnQ0FBZ0M7OEJBT2pDLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFSSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtbmV3LXZlcnNpb24taGlzdG9yeS1kZXRhaWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbmV3LXZlcnNpb24taGlzdG9yeS1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9uZXctdmVyc2lvbi1oaXN0b3J5LWRldGFpbC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE5ld1ZlcnNpb25IaXN0b3J5RGV0YWlsQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBwcmlvcml0aXplZEZpZWxkczogc3RyaW5nW10gPSBbJ2FjdGlvbiddO1xuXG4gIEBJbnB1dCgpIHNlbGVjdGVkVmVyc2lvbjogYW55O1xuICBASW5wdXQoKSBzZWxlY3RlZElzQ3VycmVudCA9IGZhbHNlO1xuICBASW5wdXQoKSBpc1Jlc3RvcmluZyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGdldEF1dGhvckxhYmVsRm46ICh2ZXJzaW9uOiBhbnkpID0+IHN0cmluZyA9ICgpID0+ICcnO1xuICBASW5wdXQoKSBnZXRGaWVsZExhYmVsRm46IChmaWVsZDogc3RyaW5nKSA9PiBzdHJpbmcgPSAoZmllbGQpID0+IGZpZWxkO1xuICBASW5wdXQoKSBnZXRTdGVwUHJlZml4Rm46IChzdGVwOiBhbnkpID0+IHN0cmluZyA9ICgpID0+ICdTdGVwJztcbiAgQElucHV0KCkgZ2V0Q2F0ZWdvcnlMYWJlbEZuOiAoY2F0ZWdvcnk6IHN0cmluZykgPT4gc3RyaW5nID0gKGNhdCkgPT4gKGNhdCB8fCAnT3RoZXInKSArICcgQ2hhbmdlcyc7XG4gIEBJbnB1dCgpIGZvcm1hdERpc3BsYXlWYWx1ZUZuOiAodmFsdWU6IGFueSwgZmllbGQ/OiBzdHJpbmcpID0+IHN0cmluZyA9ICh2KSA9PiB2ID09IG51bGwgPyAnLScgOiBTdHJpbmcodik7XG4gIEBJbnB1dCgpIGdldFN0ZXBBY3Rpb25IdG1sRm46IChzdGVwOiBhbnkpID0+IHN0cmluZyA9ICgpID0+ICcnO1xuICBASW5wdXQoKSBoaWRkZW5GaWVsZHM6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIHBhcnNlRmllbGRBc1RhYmxlRm46IChmaWVsZDogc3RyaW5nLCB2YWx1ZTogYW55LCBzdGVwRGF0YT86IGFueSkgPT4gUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwgPSAoKSA9PiBudWxsO1xuXG4gIEBPdXRwdXQoKSBjb21wYXJlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcmVzdG9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBnZXQgaGFzVGVzdENhc2VDaGFuZ2VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVmVyc2lvbj8udGVzdENhc2U/Lmhhc0NoYW5nZXMgPT09IHRydWU7XG4gIH1cblxuICBnZXQgdGVzdENhc2VDaGFuZ2VkRmllbGRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlRmllbGRzKHRoaXMuc2VsZWN0ZWRWZXJzaW9uPy50ZXN0Q2FzZT8uY2hhbmdlZEZpZWxkcyB8fCBbXSk7XG4gIH1cblxuICB2aXNpYmxlRmllbGRzKGZpZWxkczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgdmlzaWJsZSA9IHRoaXMuaGlkZGVuRmllbGRzPy5sZW5ndGhcbiAgICAgID8gZmllbGRzLmZpbHRlcihmID0+ICF0aGlzLmhpZGRlbkZpZWxkcy5pbmNsdWRlcyhmKSlcbiAgICAgIDogWy4uLmZpZWxkc107XG4gICAgcmV0dXJuIHRoaXMucHJpb3JpdGl6ZUZpZWxkcyh2aXNpYmxlKTtcbiAgfVxuXG4gIHZpc2libGVDaGFuZ2VkRmllbGRzKHN0ZXA6IGFueSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlRmllbGRzKHN0ZXA/LmNoYW5nZWRGaWVsZHMgfHwgW10pO1xuICB9XG5cbiAgZ2V0IHN0ZXBzQWRkZWQoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVmVyc2lvbj8uc3RlcHM/LmFkZGVkIHx8IFtdO1xuICB9XG5cbiAgZ2V0IHN0ZXBzRGVsZXRlZCgpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWZXJzaW9uPy5zdGVwcz8uZGVsZXRlZCB8fCBbXTtcbiAgfVxuXG4gIGdldCBzdGVwc1VwZGF0ZWQoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVmVyc2lvbj8uc3RlcHM/LnVwZGF0ZWQgfHwgW107XG4gIH1cblxuICBnZXQgc3RlcHNTdW1tYXJ5KCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWZXJzaW9uPy5zdGVwcz8uc3VtbWFyeTtcbiAgfVxuXG4gIGdldCBoYXNBbnlDaGFuZ2VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhc1Rlc3RDYXNlQ2hhbmdlc1xuICAgICAgfHwgdGhpcy5zdGVwc0FkZGVkLmxlbmd0aCA+IDBcbiAgICAgIHx8IHRoaXMuc3RlcHNEZWxldGVkLmxlbmd0aCA+IDBcbiAgICAgIHx8IHRoaXMuc3RlcHNVcGRhdGVkLmxlbmd0aCA+IDA7XG4gIH1cblxuICAvKipcbiAgICogVHJpZXMgdG8gcGFyc2UgdGhlIHZhbHVlIGFzIGEgcGxhaW4gb2JqZWN0IChvciBhIEpTT04gc3RyaW5nIHRoYXQgaXMgYW4gb2JqZWN0KS5cbiAgICogUmV0dXJucyB0aGUgcGFyc2VkIG9iamVjdCwgb3IgbnVsbCBpZiB0aGUgdmFsdWUgaXMgbm90IGFuIG9iamVjdC9KU09OLW9iamVjdC5cbiAgICovXG4gIHBhcnNlT2JqZWN0VmFsdWUodmFsdWU6IGFueSk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkgeyByZXR1cm4gbnVsbDsgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkgeyByZXR1cm4gdmFsdWU7IH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgdHJpbW1lZCA9IHZhbHVlLnRyaW0oKTtcbiAgICAgIGlmICh0cmltbWVkLnN0YXJ0c1dpdGgoJ3snKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UodHJpbW1lZCk7XG4gICAgICAgICAgaWYgKHBhcnNlZCAmJiB0eXBlb2YgcGFyc2VkID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShwYXJzZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VkO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7IC8qIG5vdCB2YWxpZCBKU09OICovIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKiogUmV0dXJucyBvbmx5IHRoZSBrZXlzIHdoZXJlIG9sZCBhbmQgbmV3IHZhbHVlcyBkaWZmZXIuICovXG4gIG9iamVjdEtleXMob2xkT2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCwgbmV3T2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBhbGxLZXlzID0gbmV3IFNldChbXG4gICAgICAuLi5PYmplY3Qua2V5cyhvbGRPYmogfHwge30pLFxuICAgICAgLi4uT2JqZWN0LmtleXMobmV3T2JqIHx8IHt9KVxuICAgIF0pO1xuICAgIGNvbnN0IGNoYW5nZWQgPSBBcnJheS5mcm9tKGFsbEtleXMpLmZpbHRlcihrZXkgPT5cbiAgICAgIEpTT04uc3RyaW5naWZ5KChvbGRPYmogfHwge30pW2tleV0pICE9PSBKU09OLnN0cmluZ2lmeSgobmV3T2JqIHx8IHt9KVtrZXldKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMucHJpb3JpdGl6ZUZpZWxkcyhjaGFuZ2VkKTtcbiAgfVxuXG4gIC8qKiBUcnVlIHdoZW4gdGhlIHZhbHVlIGZvciBhIGtleSBkaWZmZXJzIGJldHdlZW4gb2xkIGFuZCBuZXcuICovXG4gIGlzS2V5Q2hhbmdlZChvbGRPYmo6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsLCBuZXdPYmo6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsLCBrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSgob2xkT2JqIHx8IHt9KVtrZXldKSAhPT0gSlNPTi5zdHJpbmdpZnkoKG5ld09iaiB8fCB7fSlba2V5XSk7XG4gIH1cblxuICBmb3JtYXRQcmltaXRpdmVWYWx1ZSh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkgeyByZXR1cm4gJy0nOyB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7IHJldHVybiB2YWx1ZSA/ICd0cnVlJyA6ICdmYWxzZSc7IH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDApIHsgcmV0dXJuICctJzsgfVxuICAgICAgcmV0dXJuIHZhbHVlLm1hcCgoaXRlbSwgaSkgPT5cbiAgICAgICAgYCR7aSArIDF9LiAke3R5cGVvZiBpdGVtID09PSAnb2JqZWN0JyA/IEpTT04uc3RyaW5naWZ5KGl0ZW0pIDogU3RyaW5nKGl0ZW0pfWBcbiAgICAgICkuam9pbignXFxuJyk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7IHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7IH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIHRyYWNrQnlLZXkoX2luZGV4OiBudW1iZXIsIGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4ga2V5O1xuICB9XG5cbiAgdHJhY2tCeUZpZWxkKF9pbmRleDogbnVtYmVyLCBmaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZmllbGQ7XG4gIH1cblxuICB0cmFja0J5U3RlcElkKF9pbmRleDogbnVtYmVyLCBzdGVwOiBhbnkpOiBudW1iZXIge1xuICAgIHJldHVybiBzdGVwLnN0ZXBJZCA/PyBzdGVwLm9sZD8uaWQgPz8gc3RlcC5uZXc/LmlkID8/IF9pbmRleDtcbiAgfVxuXG4gIHByaXZhdGUgcHJpb3JpdGl6ZUZpZWxkcyhmaWVsZHM6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIGlmICghZmllbGRzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmaWVsZHM7XG4gICAgfVxuXG4gICAgY29uc3QgcHJpb3JpdGl6ZWQgPSB0aGlzLnByaW9yaXRpemVkRmllbGRzLmZpbHRlcihmaWVsZCA9PiBmaWVsZHMuaW5jbHVkZXMoZmllbGQpKTtcbiAgICBpZiAoIXByaW9yaXRpemVkLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZpZWxkcztcbiAgICB9XG5cbiAgICBjb25zdCBwcmlvcml0aXplZFNldCA9IG5ldyBTZXQocHJpb3JpdGl6ZWQpO1xuICAgIGNvbnN0IHJlbWFpbmluZyA9IGZpZWxkcy5maWx0ZXIoZmllbGQgPT4gIXByaW9yaXRpemVkU2V0LmhhcyhmaWVsZCkpO1xuICAgIHJldHVybiBbLi4ucHJpb3JpdGl6ZWQsIC4uLnJlbWFpbmluZ107XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFZlcnNpb247IGVsc2Ugbm9TZWxlY3Rpb25cIj5cbiAgPCEtLSA9PT09PT09PT09IEhlYWRlciAoc2FtZSBhcyBvbGQgY29tcG9uZW50KSA9PT09PT09PT09IC0tPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGNxYS1udmgtZGV0YWlsLWhlYWRlclwiPlxuICAgIDxkaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwiZ2FwOiA4cHg7IG1hcmdpbi1ib3R0b206IDZweDtcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwiY3FhLW52aC1kZXRhaWwtdmVyc2lvbi1udW1iZXJcIj5WZXJzaW9uIHt7IHNlbGVjdGVkVmVyc2lvbi52ZXJzaW9uTnVtYmVyIH19PC9oMz5cbiAgICAgICAgPGNxYS1iYWRnZSAqbmdJZj1cInNlbGVjdGVkSXNDdXJyZW50XCIgbGFiZWw9XCJDdXJyZW50XCIgc2l6ZT1cInNtYWxsXCIgdmFyaWFudD1cImluZm9cIiBiYWNrZ3JvdW5kQ29sb3I9XCIjRUZGNEZGXCJcbiAgICAgICAgICB0ZXh0Q29sb3I9XCIjM2Y0M2VlXCIgYm9yZGVyQ29sb3I9XCIjQzdEN0ZFXCI+PC9jcWEtYmFkZ2U+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtbnZoLWRldGFpbC1tZXRhXCI+XG4gICAgICAgIHt7IGdldEF1dGhvckxhYmVsRm4oc2VsZWN0ZWRWZXJzaW9uKSB9fSDCtyB7eyBzZWxlY3RlZFZlcnNpb24uY3JlYXRlZERhdGUgfCBkYXRlOidNTU0gZCwgeXl5eSDCtyBoOm1tIGEnIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFZlcnNpb24uY2hhbmdlU3VtbWFyeVwiIGNsYXNzPVwiY3FhLW52aC1kZXRhaWwtc3VtbWFyeVwiPlxuICAgICAgICB7eyBzZWxlY3RlZFZlcnNpb24uY2hhbmdlU3VtbWFyeSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFzZWxlY3RlZElzQ3VycmVudFwiIGNsYXNzPVwiY3FhLW52aC1kZXRhaWwtYWN0aW9uc1wiPlxuICAgICAgPGNxYS1idXR0b24gdmFyaWFudD1cIm91dGxpbmVkXCIgdGV4dD1cIkNvbXBhcmUgd2l0aCBDdXJyZW50XCIgKGNsaWNrZWQpPVwiY29tcGFyZS5lbWl0KClcIj48L2NxYS1idXR0b24+XG4gICAgICA8Y3FhLWJ1dHRvbiB2YXJpYW50PVwiZmlsbGVkXCIgaWNvbj1cInJlZnJlc2hcIiBbdGV4dF09XCJpc1Jlc3RvcmluZyA/ICdSZXN0b3JpbmcuLi4nIDogJ1Jlc3RvcmUgdGhpcyBWZXJzaW9uJ1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc1Jlc3RvcmluZ1wiIChjbGlja2VkKT1cInJlc3RvcmUuZW1pdCgpXCI+PC9jcWEtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tID09PT09PT09PT0gU3VtbWFyeSBiYXIgPT09PT09PT09PSAtLT5cbiAgPCEtLSA8ZGl2ICpuZ0lmPVwic3RlcHNTdW1tYXJ5XCIgY2xhc3M9XCJjcWEtbnZoLWRldGFpbC1zdW1tYXJ5LWJhclwiPlxuICAgIDxzcGFuICpuZ0lmPVwic3RlcHNTdW1tYXJ5LmFkZGVkXCIgY2xhc3M9XCJjcWEtbnZoLXN1bW1hcnktY2hpcCBjcWEtbnZoLXN1bW1hcnktY2hpcC0tYWRkZWRcIj4re3sgc3RlcHNTdW1tYXJ5LmFkZGVkIH19IGFkZGVkPC9zcGFuPlxuICAgIDxzcGFuICpuZ0lmPVwic3RlcHNTdW1tYXJ5Lm1vZGlmaWVkXCIgY2xhc3M9XCJjcWEtbnZoLXN1bW1hcnktY2hpcCBjcWEtbnZoLXN1bW1hcnktY2hpcC0tbW9kaWZpZWRcIj57eyBzdGVwc1N1bW1hcnkubW9kaWZpZWQgfX0gbW9kaWZpZWQ8L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCJzdGVwc1N1bW1hcnkucmVtb3ZlZFwiIGNsYXNzPVwiY3FhLW52aC1zdW1tYXJ5LWNoaXAgY3FhLW52aC1zdW1tYXJ5LWNoaXAtLXJlbW92ZWRcIj57eyBzdGVwc1N1bW1hcnkucmVtb3ZlZCB9fSByZW1vdmVkPC9zcGFuPlxuICAgIDxzcGFuICpuZ0lmPVwic3RlcHNTdW1tYXJ5LnVuY2hhbmdlZFwiIGNsYXNzPVwiY3FhLW52aC1zdW1tYXJ5LWNoaXAgY3FhLW52aC1zdW1tYXJ5LWNoaXAtLXVuY2hhbmdlZFwiPnt7IHN0ZXBzU3VtbWFyeS51bmNoYW5nZWQgfX0gdW5jaGFuZ2VkPC9zcGFuPlxuICA8L2Rpdj4gLS0+XG5cbiAgPCEtLSA9PT09PT09PT09IFRlc3QgQ2FzZSBDaGFuZ2VzID09PT09PT09PT0gLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNUZXN0Q2FzZUNoYW5nZXNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLW52aC1zZWN0aW9uLWhlYWRlclwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtbnZoLXNlY3Rpb24tbGFiZWxcIj5UZXN0IENhc2UgQ2hhbmdlczwvc3Bhbj5cbiAgICAgIDxjcWEtYmFkZ2UgW2xhYmVsXT1cIicnICsgdGVzdENhc2VDaGFuZ2VkRmllbGRzLmxlbmd0aFwiIHNpemU9XCJzbWFsbFwiIHZhcmlhbnQ9XCJpbmZvXCJcbiAgICAgICAgYmFja2dyb3VuZENvbG9yPVwiI0VGRjRGRlwiIHRleHRDb2xvcj1cIiMzZjQzZWVcIiBib3JkZXJDb2xvcj1cIiNDN0Q3RkVcIj48L2NxYS1iYWRnZT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjcWEtbnZoLWNoYW5nZXMtbGlzdFwiPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZmllbGQgb2YgdGVzdENhc2VDaGFuZ2VkRmllbGRzOyB0cmFja0J5OiB0cmFja0J5RmllbGRcIiBjbGFzcz1cImNxYS1udmgtY2hhbmdlLWNhcmRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1udmgtY2hhbmdlLWZpZWxkLWxhYmVsXCI+e3sgZ2V0RmllbGRMYWJlbEZuKGZpZWxkKSB9fTwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJiZWZvcmVBZnRlckJsb2NrOyBjb250ZXh0OiB7XG4gICAgICAgICAgICBvbGRWYWx1ZTogc2VsZWN0ZWRWZXJzaW9uLnRlc3RDYXNlLm9sZD8uW2ZpZWxkXSxcbiAgICAgICAgICAgIG5ld1ZhbHVlOiBzZWxlY3RlZFZlcnNpb24udGVzdENhc2UubmV3Py5bZmllbGRdLFxuICAgICAgICAgICAgZmllbGQ6IGZpZWxkLFxuICAgICAgICAgICAgb2xkU3RlcERhdGE6IHNlbGVjdGVkVmVyc2lvbi50ZXN0Q2FzZS5vbGQsXG4gICAgICAgICAgICBuZXdTdGVwRGF0YTogc2VsZWN0ZWRWZXJzaW9uLnRlc3RDYXNlLm5ld1xuICAgICAgICAgIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSA9PT09PT09PT09IFN0ZXBzIEFkZGVkID09PT09PT09PT0gLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGVwc0FkZGVkLmxlbmd0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtbnZoLXNlY3Rpb24taGVhZGVyXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS1udmgtc2VjdGlvbi1sYWJlbFwiPlN0ZXBzIEFkZGVkPC9zcGFuPlxuICAgICAgPGNxYS1iYWRnZSBbbGFiZWxdPVwiJycgKyBzdGVwc0FkZGVkLmxlbmd0aFwiIHNpemU9XCJzbWFsbFwiIGJhY2tncm91bmRDb2xvcj1cIiNFQ0ZERjNcIlxuICAgICAgICB0ZXh0Q29sb3I9XCIjMDI3QTQ4XCIgYm9yZGVyQ29sb3I9XCIjQTdGM0QwXCI+PC9jcWEtYmFkZ2U+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLW52aC1jaGFuZ2VzLWxpc3RcIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcHNBZGRlZDsgdHJhY2tCeTogdHJhY2tCeVN0ZXBJZFwiIGNsYXNzPVwiY3FhLW52aC1jaGFuZ2UtY2FyZCBjcWEtbnZoLWNoYW5nZS1jYXJkLS1hZGRlZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLW52aC1zdGVwLWhlYWRlclwiPlxuICAgICAgICAgIDxjcWEtYmFkZ2UgbGFiZWw9XCJBZGRlZFwiIHNpemU9XCJzbWFsbFwiIGJhY2tncm91bmRDb2xvcj1cIiNFQ0ZERjNcIiB0ZXh0Q29sb3I9XCIjMDI3QTQ4XCJcbiAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiI0E3RjNEMFwiPjwvY3FhLWJhZGdlPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLW52aC1zdGVwLXByZWZpeFwiPnt7IGdldFN0ZXBQcmVmaXhGbihzdGVwKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1udmgtc3RlcC1hY3Rpb24gY3FhLWFjdGlvbi1mb3JtYXRcIiBbaW5uZXJIVE1MXT1cImdldFN0ZXBBY3Rpb25IdG1sRm4oc3RlcClcIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gPT09PT09PT09PSBTdGVwcyBEZWxldGVkID09PT09PT09PT0gLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGVwc0RlbGV0ZWQubGVuZ3RoXCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1udmgtc2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLW52aC1zZWN0aW9uLWxhYmVsXCI+U3RlcHMgUmVtb3ZlZDwvc3Bhbj5cbiAgICAgIDxjcWEtYmFkZ2UgW2xhYmVsXT1cIicnICsgc3RlcHNEZWxldGVkLmxlbmd0aFwiIHNpemU9XCJzbWFsbFwiIGJhY2tncm91bmRDb2xvcj1cIiNGRUYzRjJcIlxuICAgICAgICB0ZXh0Q29sb3I9XCIjQjQyMzE4XCIgYm9yZGVyQ29sb3I9XCIjRkVDRENBXCI+PC9jcWEtYmFkZ2U+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLW52aC1jaGFuZ2VzLWxpc3RcIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcHNEZWxldGVkOyB0cmFja0J5OiB0cmFja0J5U3RlcElkXCIgY2xhc3M9XCJjcWEtbnZoLWNoYW5nZS1jYXJkIGNxYS1udmgtY2hhbmdlLWNhcmQtLXJlbW92ZWRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1udmgtc3RlcC1oZWFkZXJcIj5cbiAgICAgICAgICA8Y3FhLWJhZGdlIGxhYmVsPVwiUmVtb3ZlZFwiIHNpemU9XCJzbWFsbFwiIGJhY2tncm91bmRDb2xvcj1cIiNGRUYzRjJcIiB0ZXh0Q29sb3I9XCIjQjQyMzE4XCJcbiAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiI0ZFQ0RDQVwiPjwvY3FhLWJhZGdlPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLW52aC1zdGVwLXByZWZpeFwiPnt7IGdldFN0ZXBQcmVmaXhGbihzdGVwKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1udmgtc3RlcC1hY3Rpb24gY3FhLWFjdGlvbi1mb3JtYXRcIiBbaW5uZXJIVE1MXT1cImdldFN0ZXBBY3Rpb25IdG1sRm4oc3RlcClcIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gPT09PT09PT09PSBTdGVwcyBVcGRhdGVkID09PT09PT09PT0gLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGVwc1VwZGF0ZWQubGVuZ3RoXCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1udmgtc2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLW52aC1zZWN0aW9uLWxhYmVsXCI+U3RlcHMgTW9kaWZpZWQ8L3NwYW4+XG4gICAgICA8Y3FhLWJhZGdlIFtsYWJlbF09XCInJyArIHN0ZXBzVXBkYXRlZC5sZW5ndGhcIiBzaXplPVwic21hbGxcIiBiYWNrZ3JvdW5kQ29sb3I9XCIjRkZGQUVCXCJcbiAgICAgICAgdGV4dENvbG9yPVwiI0I1NDcwOFwiIGJvcmRlckNvbG9yPVwiI0ZFREY4OVwiPjwvY3FhLWJhZGdlPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNxYS1udmgtY2hhbmdlcy1saXN0XCI+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzdGVwIG9mIHN0ZXBzVXBkYXRlZDsgdHJhY2tCeTogdHJhY2tCeVN0ZXBJZFwiIGNsYXNzPVwiY3FhLW52aC1jaGFuZ2UtY2FyZFwiPlxuICAgICAgICA8IS0tIFN0ZXAgaGVhZGVyIHdpdGggY2F0ZWdvcnkgYmFkZ2UgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtbnZoLXN0ZXAtaGVhZGVyXCI+XG4gICAgICAgICAgPGNxYS1iYWRnZSBbbGFiZWxdPVwiZ2V0Q2F0ZWdvcnlMYWJlbEZuKHN0ZXAuY2F0ZWdvcnkpXCIgc2l6ZT1cInNtYWxsXCIgYmFja2dyb3VuZENvbG9yPVwiI0VERjFGM1wiXG4gICAgICAgICAgICB0ZXh0Q29sb3I9XCIjNjM2QTcxXCIgYm9yZGVyQ29sb3I9XCIjREJERUUxXCI+PC9jcWEtYmFkZ2U+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtbnZoLXN0ZXAtcHJlZml4XCI+e3sgZ2V0U3RlcFByZWZpeEZuKHN0ZXApIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLW52aC1zdGVwLWFjdGlvbiBjcWEtYWN0aW9uLWZvcm1hdFwiIFtpbm5lckhUTUxdPVwiZ2V0U3RlcEFjdGlvbkh0bWxGbihzdGVwKVwiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBDaGFuZ2VkIGZpZWxkcyB3aXRoIGJlZm9yZS9hZnRlciAtLT5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZmllbGQgb2YgdmlzaWJsZUNoYW5nZWRGaWVsZHMoc3RlcCk7IHRyYWNrQnk6IHRyYWNrQnlGaWVsZFwiIGNsYXNzPVwiY3FhLW52aC1maWVsZC1kaWZmXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1udmgtY2hhbmdlLWZpZWxkLWxhYmVsXCI+e3sgZ2V0RmllbGRMYWJlbEZuKGZpZWxkKSB9fTwvZGl2PlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiYmVmb3JlQWZ0ZXJCbG9jazsgY29udGV4dDoge1xuICAgICAgICAgICAgICBvbGRWYWx1ZTogc3RlcC5vbGQ/LltmaWVsZF0sXG4gICAgICAgICAgICAgIG5ld1ZhbHVlOiBzdGVwLm5ldz8uW2ZpZWxkXSxcbiAgICAgICAgICAgICAgZmllbGQ6IGZpZWxkLFxuICAgICAgICAgICAgICBvbGRTdGVwRGF0YTogc3RlcC5vbGQsXG4gICAgICAgICAgICAgIG5ld1N0ZXBEYXRhOiBzdGVwLm5ld1xuICAgICAgICAgICAgfVwiPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tID09PT09PT09PT0gRW1wdHkgc3RhdGUgPT09PT09PT09PSAtLT5cbiAgPGRpdiAqbmdJZj1cIiFoYXNBbnlDaGFuZ2VzXCIgY2xhc3M9XCJjcWEtbnZoLWRldGFpbC1lbXB0eVwiPlxuICAgIDxjcWEtZW1wdHktc3RhdGUgdGl0bGU9XCJObyBjaGFuZ2VzXCIgZGVzY3JpcHRpb249XCJObyBjaGFuZ2VzIHJlY29yZGVkIGZvciB0aGlzIHZlcnNpb24uXCI+PC9jcWEtZW1wdHktc3RhdGU+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjbm9TZWxlY3Rpb24+XG4gIDxkaXYgY2xhc3M9XCJjcWEtbnZoLWRldGFpbC1uby1zZWxlY3Rpb25cIj5cbiAgICBTZWxlY3QgYSB2ZXJzaW9uIHRvIHZpZXcgZGV0YWlscy5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tID09PT09IFJldXNhYmxlIGJlZm9yZS9hZnRlciBibG9jayA9PT09PSAtLT5cbjxuZy10ZW1wbGF0ZSAjYmVmb3JlQWZ0ZXJCbG9jayBsZXQtb2xkVmFsdWU9XCJvbGRWYWx1ZVwiIGxldC1uZXdWYWx1ZT1cIm5ld1ZhbHVlXCIgbGV0LWZpZWxkPVwiZmllbGRcIiBsZXQtb2xkU3RlcERhdGE9XCJvbGRTdGVwRGF0YVwiIGxldC1uZXdTdGVwRGF0YT1cIm5ld1N0ZXBEYXRhXCI+XG4gIDwhLS0gMS4gQ3VzdG9tIHRhYmxlIHZpYSBwYXJzZUZpZWxkQXNUYWJsZUZuIChlLmcuIHRlc3REYXRhTGlzdCkgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYXJzZUZpZWxkQXNUYWJsZUZuKGZpZWxkLCBvbGRWYWx1ZSwgb2xkU3RlcERhdGEpIHx8IHBhcnNlRmllbGRBc1RhYmxlRm4oZmllbGQsIG5ld1ZhbHVlLCBuZXdTdGVwRGF0YSk7IGVsc2UgbmF0aXZlT2JqZWN0Q2hlY2tcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm9ialRhYmxlOyBjb250ZXh0OiB7XG4gICAgICAgIG9sZE9iajogcGFyc2VGaWVsZEFzVGFibGVGbihmaWVsZCwgb2xkVmFsdWUsIG9sZFN0ZXBEYXRhKSxcbiAgICAgICAgbmV3T2JqOiBwYXJzZUZpZWxkQXNUYWJsZUZuKGZpZWxkLCBuZXdWYWx1ZSwgbmV3U3RlcERhdGEpXG4gICAgICB9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gMi4gTmF0aXZlIG9iamVjdCAvIEpTT04gc3RyaW5nIC0tPlxuICA8bmctdGVtcGxhdGUgI25hdGl2ZU9iamVjdENoZWNrPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYXJzZU9iamVjdFZhbHVlKG9sZFZhbHVlKSB8fCBwYXJzZU9iamVjdFZhbHVlKG5ld1ZhbHVlKTsgZWxzZSBzaW1wbGVWYWx1ZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm9ialRhYmxlOyBjb250ZXh0OiB7XG4gICAgICAgICAgb2xkT2JqOiBwYXJzZU9iamVjdFZhbHVlKG9sZFZhbHVlKSxcbiAgICAgICAgICBuZXdPYmo6IHBhcnNlT2JqZWN0VmFsdWUobmV3VmFsdWUpXG4gICAgICAgIH1cIj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gMy4gUHJpbWl0aXZlIGZhbGxiYWNrIC0tPlxuICA8bmctdGVtcGxhdGUgI3NpbXBsZVZhbHVlPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtbnZoLWJlZm9yZS1hZnRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1udmgtdmFsdWUtcm93IGNxYS1udmgtdmFsdWUtcm93LS1iZWZvcmVcIj5cbiAgICAgICAgPGNxYS1iYWRnZSBsYWJlbD1cIkJlZm9yZVwiIHNpemU9XCJzbWFsbFwiIGJhY2tncm91bmRDb2xvcj1cIiNGRUYyRjJcIiB0ZXh0Q29sb3I9XCIjRkIyQzM2XCJcbiAgICAgICAgICBib3JkZXJDb2xvcj1cIiNGRkUyRTJcIj48L2NxYS1iYWRnZT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtbnZoLXZhbHVlLXRleHRcIj57eyBmb3JtYXREaXNwbGF5VmFsdWVGbihvbGRWYWx1ZSwgZmllbGQpIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLW52aC12YWx1ZS1yb3cgY3FhLW52aC12YWx1ZS1yb3ctLWFmdGVyXCI+XG4gICAgICAgIDxjcWEtYmFkZ2UgbGFiZWw9XCJBZnRlclwiIHNpemU9XCJzbWFsbFwiIGJhY2tncm91bmRDb2xvcj1cIiNFQ0ZERjVcIiB0ZXh0Q29sb3I9XCIjMDA5OTY2XCJcbiAgICAgICAgICBib3JkZXJDb2xvcj1cIiNEMEZBRTVcIj48L2NxYS1iYWRnZT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtbnZoLXZhbHVlLXRleHRcIj57eyBmb3JtYXREaXNwbGF5VmFsdWVGbihuZXdWYWx1ZSwgZmllbGQpIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tID09PT09IFNoYXJlZCBvYmplY3QgdGFibGUgPT09PT0gLS0+XG48bmctdGVtcGxhdGUgI29ialRhYmxlIGxldC1vbGRPYmo9XCJvbGRPYmpcIiBsZXQtbmV3T2JqPVwibmV3T2JqXCI+XG4gIDxkaXYgY2xhc3M9XCJjcWEtbnZoLW9iai10YWJsZVwiICpuZ0lmPVwib2JqZWN0S2V5cyhvbGRPYmosIG5ld09iaikubGVuZ3RoID4gMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtbnZoLW9iai1oZWFkZXJcIj5cbiAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLW52aC1vYmotY29sLWxhYmVsIGNxYS1udmgtb2JqLWNvbC1sYWJlbC0tYmVmb3JlXCI+QmVmb3JlPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtbnZoLW9iai1jb2wtbGFiZWwgY3FhLW52aC1vYmotY29sLWxhYmVsLS1hZnRlclwiPkFmdGVyPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgICpuZ0Zvcj1cImxldCBrZXkgb2Ygb2JqZWN0S2V5cyhvbGRPYmosIG5ld09iaik7IHRyYWNrQnk6IHRyYWNrQnlLZXlcIlxuICAgICAgY2xhc3M9XCJjcWEtbnZoLW9iai1yb3dcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLW52aC1vYmota2V5XCI+e3sgZ2V0RmllbGRMYWJlbEZuKGtleSkgfX08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS1udmgtb2JqLXZhbCBjcWEtbnZoLW9iai12YWwtLWJlZm9yZVwiPlxuICAgICAgICB7eyBmb3JtYXRQcmltaXRpdmVWYWx1ZShvbGRPYmo/LltrZXldKSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtbnZoLW9iai12YWwgY3FhLW52aC1vYmotdmFsLS1hZnRlclwiPlxuICAgICAgICB7eyBmb3JtYXRQcmltaXRpdmVWYWx1ZShuZXdPYmo/LltrZXldKSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LXZlcnNpb24taGlzdG9yeS1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi92ZXJzaW9uLWhpc3RvcnkvbmV3LXZlcnNpb24taGlzdG9yeS1kZXRhaWwvbmV3LXZlcnNpb24taGlzdG9yeS1kZXRhaWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi92ZXJzaW9uLWhpc3RvcnkvbmV3LXZlcnNpb24taGlzdG9yeS1kZXRhaWwvbmV3LXZlcnNpb24taGlzdG9yeS1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBT3ZFLE1BQU0sT0FBTyxnQ0FBZ0M7SUFMN0M7UUFNbUIsc0JBQWlCLEdBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUdqRCxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFcEIscUJBQWdCLEdBQTZCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN0RCxvQkFBZSxHQUE4QixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQzlELG9CQUFlLEdBQTBCLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUN0RCx1QkFBa0IsR0FBaUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUMxRix5QkFBb0IsR0FBMkQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xILHdCQUFtQixHQUEwQixHQUFH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QU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNuRixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUN2QixPQUFPLE1BQU0sQ0FBQztTQUNmO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sQ0FBQyxHQUFHLFdBQVcsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OzZIQXpJVSxnQ0FBZ0M7aUhBQWhDLGdDQUFnQywyaUJDUDdDLGk4VEE0TUE7MkZEck1hLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDRSxnQ0FBZ0M7OEJBT2pDLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFSSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtbmV3LXZlcnNpb24taGlzdG9yeS1kZXRhaWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbmV3LXZlcnNpb24taGlzdG9yeS1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIE5ld1ZlcnNpb25IaXN0b3J5RGV0YWlsQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBwcmlvcml0aXplZEZpZWxkczogc3RyaW5nW10gPSBbJ2FjdGlvbiddO1xuXG4gIEBJbnB1dCgpIHNlbGVjdGVkVmVyc2lvbjogYW55O1xuICBASW5wdXQoKSBzZWxlY3RlZElzQ3VycmVudCA9IGZhbHNlO1xuICBASW5wdXQoKSBpc1Jlc3RvcmluZyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGdldEF1dGhvckxhYmVsRm46ICh2ZXJzaW9uOiBhbnkpID0+IHN0cmluZyA9ICgpID0+ICcnO1xuICBASW5wdXQoKSBnZXRGaWVsZExhYmVsRm46IChmaWVsZDogc3RyaW5nKSA9PiBzdHJpbmcgPSAoZmllbGQpID0+IGZpZWxkO1xuICBASW5wdXQoKSBnZXRTdGVwUHJlZml4Rm46IChzdGVwOiBhbnkpID0+IHN0cmluZyA9ICgpID0+ICdTdGVwJztcbiAgQElucHV0KCkgZ2V0Q2F0ZWdvcnlMYWJlbEZuOiAoY2F0ZWdvcnk6IHN0cmluZykgPT4gc3RyaW5nID0gKGNhdCkgPT4gKGNhdCB8fCAnT3RoZXInKSArICcgQ2hhbmdlcyc7XG4gIEBJbnB1dCgpIGZvcm1hdERpc3BsYXlWYWx1ZUZuOiAodmFsdWU6IGFueSwgZmllbGQ/OiBzdHJpbmcsIHN0ZXBEYXRhPzogYW55KSA9PiBzdHJpbmcgPSAodikgPT4gdiA9PSBudWxsID8gJy0nIDogU3RyaW5nKHYpO1xuICBASW5wdXQoKSBnZXRTdGVwQWN0aW9uSHRtbEZuOiAoc3RlcDogYW55KSA9PiBzdHJpbmcgPSAoKSA9PiAnJztcbiAgQElucHV0KCkgaGlkZGVuRmllbGRzOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBwYXJzZUZpZWxkQXNUYWJsZUZuOiAoZmllbGQ6IHN0cmluZywgdmFsdWU6IGFueSwgc3RlcERhdGE/OiBhbnkpID0+IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsID0gKCkgPT4gbnVsbDtcblxuICBAT3V0cHV0KCkgY29tcGFyZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHJlc3RvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgZ2V0IGhhc1Rlc3RDYXNlQ2hhbmdlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFZlcnNpb24/LnRlc3RDYXNlPy5oYXNDaGFuZ2VzID09PSB0cnVlO1xuICB9XG5cbiAgZ2V0IHRlc3RDYXNlQ2hhbmdlZEZpZWxkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUZpZWxkcyh0aGlzLnNlbGVjdGVkVmVyc2lvbj8udGVzdENhc2U/LmNoYW5nZWRGaWVsZHMgfHwgW10pO1xuICB9XG5cbiAgdmlzaWJsZUZpZWxkcyhmaWVsZHM6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHZpc2libGUgPSB0aGlzLmhpZGRlbkZpZWxkcz8ubGVuZ3RoXG4gICAgICA/IGZpZWxkcy5maWx0ZXIoZiA9PiAhdGhpcy5oaWRkZW5GaWVsZHMuaW5jbHVkZXMoZikpXG4gICAgICA6IFsuLi5maWVsZHNdO1xuICAgIHJldHVybiB0aGlzLnByaW9yaXRpemVGaWVsZHModmlzaWJsZSk7XG4gIH1cblxuICB2aXNpYmxlQ2hhbmdlZEZpZWxkcyhzdGVwOiBhbnkpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUZpZWxkcyhzdGVwPy5jaGFuZ2VkRmllbGRzIHx8IFtdKTtcbiAgfVxuXG4gIGdldCBzdGVwc0FkZGVkKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFZlcnNpb24/LnN0ZXBzPy5hZGRlZCB8fCBbXTtcbiAgfVxuXG4gIGdldCBzdGVwc0RlbGV0ZWQoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVmVyc2lvbj8uc3RlcHM/LmRlbGV0ZWQgfHwgW107XG4gIH1cblxuICBnZXQgc3RlcHNVcGRhdGVkKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFZlcnNpb24/LnN0ZXBzPy51cGRhdGVkIHx8IFtdO1xuICB9XG5cbiAgZ2V0IHN0ZXBzU3VtbWFyeSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVmVyc2lvbj8uc3RlcHM/LnN1bW1hcnk7XG4gIH1cblxuICBnZXQgaGFzQW55Q2hhbmdlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXNUZXN0Q2FzZUNoYW5nZXNcbiAgICAgIHx8IHRoaXMuc3RlcHNBZGRlZC5sZW5ndGggPiAwXG4gICAgICB8fCB0aGlzLnN0ZXBzRGVsZXRlZC5sZW5ndGggPiAwXG4gICAgICB8fCB0aGlzLnN0ZXBzVXBkYXRlZC5sZW5ndGggPiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWVzIHRvIHBhcnNlIHRoZSB2YWx1ZSBhcyBhIHBsYWluIG9iamVjdCAob3IgYSBKU09OIHN0cmluZyB0aGF0IGlzIGFuIG9iamVjdCkuXG4gICAqIFJldHVybnMgdGhlIHBhcnNlZCBvYmplY3QsIG9yIG51bGwgaWYgdGhlIHZhbHVlIGlzIG5vdCBhbiBvYmplY3QvSlNPTi1vYmplY3QuXG4gICAqL1xuICBwYXJzZU9iamVjdFZhbHVlKHZhbHVlOiBhbnkpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHsgcmV0dXJuIG51bGw7IH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHsgcmV0dXJuIHZhbHVlOyB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IHRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG4gICAgICBpZiAodHJpbW1lZC5zdGFydHNXaXRoKCd7JykpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHRyaW1tZWQpO1xuICAgICAgICAgIGlmIChwYXJzZWQgJiYgdHlwZW9mIHBhcnNlZCA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkocGFyc2VkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggeyAvKiBub3QgdmFsaWQgSlNPTiAqLyB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqIFJldHVybnMgb25seSB0aGUga2V5cyB3aGVyZSBvbGQgYW5kIG5ldyB2YWx1ZXMgZGlmZmVyLiAqL1xuICBvYmplY3RLZXlzKG9sZE9iajogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwsIG5ld09iajogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgYWxsS2V5cyA9IG5ldyBTZXQoW1xuICAgICAgLi4uT2JqZWN0LmtleXMob2xkT2JqIHx8IHt9KSxcbiAgICAgIC4uLk9iamVjdC5rZXlzKG5ld09iaiB8fCB7fSlcbiAgICBdKTtcbiAgICBjb25zdCBjaGFuZ2VkID0gQXJyYXkuZnJvbShhbGxLZXlzKS5maWx0ZXIoa2V5ID0+XG4gICAgICBKU09OLnN0cmluZ2lmeSgob2xkT2JqIHx8IHt9KVtrZXldKSAhPT0gSlNPTi5zdHJpbmdpZnkoKG5ld09iaiB8fCB7fSlba2V5XSlcbiAgICApO1xuICAgIHJldHVybiB0aGlzLnByaW9yaXRpemVGaWVsZHMoY2hhbmdlZCk7XG4gIH1cblxuICAvKiogVHJ1ZSB3aGVuIHRoZSB2YWx1ZSBmb3IgYSBrZXkgZGlmZmVycyBiZXR3ZWVuIG9sZCBhbmQgbmV3LiAqL1xuICBpc0tleUNoYW5nZWQob2xkT2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCwgbmV3T2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCwga2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoKG9sZE9iaiB8fCB7fSlba2V5XSkgIT09IEpTT04uc3RyaW5naWZ5KChuZXdPYmogfHwge30pW2tleV0pO1xuICB9XG5cbiAgZm9ybWF0UHJpbWl0aXZlVmFsdWUodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHsgcmV0dXJuICctJzsgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykgeyByZXR1cm4gdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnOyB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBpZiAodmFsdWUubGVuZ3RoID09PSAwKSB7IHJldHVybiAnLSc7IH1cbiAgICAgIHJldHVybiB2YWx1ZS5tYXAoKGl0ZW0sIGkpID0+XG4gICAgICAgIGAke2kgKyAxfS4gJHt0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeShpdGVtKSA6IFN0cmluZyhpdGVtKX1gXG4gICAgICApLmpvaW4oJ1xcbicpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JykgeyByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpOyB9XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIH1cblxuICB0cmFja0J5S2V5KF9pbmRleDogbnVtYmVyLCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGtleTtcbiAgfVxuXG4gIHRyYWNrQnlGaWVsZChfaW5kZXg6IG51bWJlciwgZmllbGQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGZpZWxkO1xuICB9XG5cbiAgdHJhY2tCeVN0ZXBJZChfaW5kZXg6IG51bWJlciwgc3RlcDogYW55KTogbnVtYmVyIHtcbiAgICByZXR1cm4gc3RlcC5zdGVwSWQgPz8gc3RlcC5vbGQ/LmlkID8/IHN0ZXAubmV3Py5pZCA/PyBfaW5kZXg7XG4gIH1cblxuICBwcml2YXRlIHByaW9yaXRpemVGaWVsZHMoZmllbGRzOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIWZpZWxkcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmllbGRzO1xuICAgIH1cblxuICAgIGNvbnN0IHByaW9yaXRpemVkID0gdGhpcy5wcmlvcml0aXplZEZpZWxkcy5maWx0ZXIoZmllbGQgPT4gZmllbGRzLmluY2x1ZGVzKGZpZWxkKSk7XG4gICAgaWYgKCFwcmlvcml0aXplZC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmaWVsZHM7XG4gICAgfVxuXG4gICAgY29uc3QgcHJpb3JpdGl6ZWRTZXQgPSBuZXcgU2V0KHByaW9yaXRpemVkKTtcbiAgICBjb25zdCByZW1haW5pbmcgPSBmaWVsZHMuZmlsdGVyKGZpZWxkID0+ICFwcmlvcml0aXplZFNldC5oYXMoZmllbGQpKTtcbiAgICByZXR1cm4gWy4uLnByaW9yaXRpemVkLCAuLi5yZW1haW5pbmddO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRWZXJzaW9uOyBlbHNlIG5vU2VsZWN0aW9uXCI+XG4gIDwhLS0gPT09PT09PT09PSBIZWFkZXIgKHNhbWUgYXMgb2xkIGNvbXBvbmVudCkgPT09PT09PT09PSAtLT5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1zdGFydCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBjcWEtbnZoLWRldGFpbC1oZWFkZXJcIj5cbiAgICA8ZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cImdhcDogOHB4OyBtYXJnaW4tYm90dG9tOiA2cHg7XCI+XG4gICAgICAgIDxoMyBjbGFzcz1cImNxYS1udmgtZGV0YWlsLXZlcnNpb24tbnVtYmVyXCI+VmVyc2lvbiB7eyBzZWxlY3RlZFZlcnNpb24udmVyc2lvbk51bWJlciB9fTwvaDM+XG4gICAgICAgIDxjcWEtYmFkZ2UgKm5nSWY9XCJzZWxlY3RlZElzQ3VycmVudFwiIGxhYmVsPVwiQ3VycmVudFwiIHNpemU9XCJzbWFsbFwiIHZhcmlhbnQ9XCJpbmZvXCIgYmFja2dyb3VuZENvbG9yPVwiI0VGRjRGRlwiXG4gICAgICAgICAgdGV4dENvbG9yPVwiIzNmNDNlZVwiIGJvcmRlckNvbG9yPVwiI0M3RDdGRVwiPjwvY3FhLWJhZGdlPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLW52aC1kZXRhaWwtbWV0YVwiPlxuICAgICAgICB7eyBnZXRBdXRob3JMYWJlbEZuKHNlbGVjdGVkVmVyc2lvbikgfX0gwrcge3sgc2VsZWN0ZWRWZXJzaW9uLmNyZWF0ZWREYXRlIHwgZGF0ZTonTU1NIGQsIHl5eXkgwrcgaDptbSBhJyB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRWZXJzaW9uLmNoYW5nZVN1bW1hcnlcIiBjbGFzcz1cImNxYS1udmgtZGV0YWlsLXN1bW1hcnlcIj5cbiAgICAgICAge3sgc2VsZWN0ZWRWZXJzaW9uLmNoYW5nZVN1bW1hcnkgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhc2VsZWN0ZWRJc0N1cnJlbnRcIiBjbGFzcz1cImNxYS1udmgtZGV0YWlsLWFjdGlvbnNcIj5cbiAgICAgIDxjcWEtYnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lZFwiIHRleHQ9XCJDb21wYXJlIHdpdGggQ3VycmVudFwiIChjbGlja2VkKT1cImNvbXBhcmUuZW1pdCgpXCI+PC9jcWEtYnV0dG9uPlxuICAgICAgPGNxYS1idXR0b24gdmFyaWFudD1cImZpbGxlZFwiIGljb249XCJyZWZyZXNoXCIgW3RleHRdPVwiaXNSZXN0b3JpbmcgPyAnUmVzdG9yaW5nLi4uJyA6ICdSZXN0b3JlIHRoaXMgVmVyc2lvbidcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNSZXN0b3JpbmdcIiAoY2xpY2tlZCk9XCJyZXN0b3JlLmVtaXQoKVwiPjwvY3FhLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSA9PT09PT09PT09IFN1bW1hcnkgYmFyID09PT09PT09PT0gLS0+XG4gIDwhLS0gPGRpdiAqbmdJZj1cInN0ZXBzU3VtbWFyeVwiIGNsYXNzPVwiY3FhLW52aC1kZXRhaWwtc3VtbWFyeS1iYXJcIj5cbiAgICA8c3BhbiAqbmdJZj1cInN0ZXBzU3VtbWFyeS5hZGRlZFwiIGNsYXNzPVwiY3FhLW52aC1zdW1tYXJ5LWNoaXAgY3FhLW52aC1zdW1tYXJ5LWNoaXAtLWFkZGVkXCI+K3t7IHN0ZXBzU3VtbWFyeS5hZGRlZCB9fSBhZGRlZDwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cInN0ZXBzU3VtbWFyeS5tb2RpZmllZFwiIGNsYXNzPVwiY3FhLW52aC1zdW1tYXJ5LWNoaXAgY3FhLW52aC1zdW1tYXJ5LWNoaXAtLW1vZGlmaWVkXCI+e3sgc3RlcHNTdW1tYXJ5Lm1vZGlmaWVkIH19IG1vZGlmaWVkPC9zcGFuPlxuICAgIDxzcGFuICpuZ0lmPVwic3RlcHNTdW1tYXJ5LnJlbW92ZWRcIiBjbGFzcz1cImNxYS1udmgtc3VtbWFyeS1jaGlwIGNxYS1udmgtc3VtbWFyeS1jaGlwLS1yZW1vdmVkXCI+e3sgc3RlcHNTdW1tYXJ5LnJlbW92ZWQgfX0gcmVtb3ZlZDwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cInN0ZXBzU3VtbWFyeS51bmNoYW5nZWRcIiBjbGFzcz1cImNxYS1udmgtc3VtbWFyeS1jaGlwIGNxYS1udmgtc3VtbWFyeS1jaGlwLS11bmNoYW5nZWRcIj57eyBzdGVwc1N1bW1hcnkudW5jaGFuZ2VkIH19IHVuY2hhbmdlZDwvc3Bhbj5cbiAgPC9kaXY+IC0tPlxuXG4gIDwhLS0gPT09PT09PT09PSBUZXN0IENhc2UgQ2hhbmdlcyA9PT09PT09PT09IC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzVGVzdENhc2VDaGFuZ2VzXCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1udmgtc2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLW52aC1zZWN0aW9uLWxhYmVsXCI+VGVzdCBDYXNlIENoYW5nZXM8L3NwYW4+XG4gICAgICA8Y3FhLWJhZGdlIFtsYWJlbF09XCInJyArIHRlc3RDYXNlQ2hhbmdlZEZpZWxkcy5sZW5ndGhcIiBzaXplPVwic21hbGxcIiB2YXJpYW50PVwiaW5mb1wiXG4gICAgICAgIGJhY2tncm91bmRDb2xvcj1cIiNFRkY0RkZcIiB0ZXh0Q29sb3I9XCIjM2Y0M2VlXCIgYm9yZGVyQ29sb3I9XCIjQzdEN0ZFXCI+PC9jcWEtYmFkZ2U+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLW52aC1jaGFuZ2VzLWxpc3RcIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHRlc3RDYXNlQ2hhbmdlZEZpZWxkczsgdHJhY2tCeTogdHJhY2tCeUZpZWxkXCIgY2xhc3M9XCJjcWEtbnZoLWNoYW5nZS1jYXJkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtbnZoLWNoYW5nZS1maWVsZC1sYWJlbFwiPnt7IGdldEZpZWxkTGFiZWxGbihmaWVsZCkgfX08L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiYmVmb3JlQWZ0ZXJCbG9jazsgY29udGV4dDoge1xuICAgICAgICAgICAgb2xkVmFsdWU6IHNlbGVjdGVkVmVyc2lvbi50ZXN0Q2FzZS5vbGQ/LltmaWVsZF0sXG4gICAgICAgICAgICBuZXdWYWx1ZTogc2VsZWN0ZWRWZXJzaW9uLnRlc3RDYXNlLm5ldz8uW2ZpZWxkXSxcbiAgICAgICAgICAgIGZpZWxkOiBmaWVsZCxcbiAgICAgICAgICAgIG9sZFN0ZXBEYXRhOiBzZWxlY3RlZFZlcnNpb24udGVzdENhc2Uub2xkLFxuICAgICAgICAgICAgbmV3U3RlcERhdGE6IHNlbGVjdGVkVmVyc2lvbi50ZXN0Q2FzZS5uZXdcbiAgICAgICAgICB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gPT09PT09PT09PSBTdGVwcyBBZGRlZCA9PT09PT09PT09IC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcHNBZGRlZC5sZW5ndGhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLW52aC1zZWN0aW9uLWhlYWRlclwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtbnZoLXNlY3Rpb24tbGFiZWxcIj5TdGVwcyBBZGRlZDwvc3Bhbj5cbiAgICAgIDxjcWEtYmFkZ2UgW2xhYmVsXT1cIicnICsgc3RlcHNBZGRlZC5sZW5ndGhcIiBzaXplPVwic21hbGxcIiBiYWNrZ3JvdW5kQ29sb3I9XCIjRUNGREYzXCJcbiAgICAgICAgdGV4dENvbG9yPVwiIzAyN0E0OFwiIGJvcmRlckNvbG9yPVwiI0E3RjNEMFwiPjwvY3FhLWJhZGdlPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNxYS1udmgtY2hhbmdlcy1saXN0XCI+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzdGVwIG9mIHN0ZXBzQWRkZWQ7IHRyYWNrQnk6IHRyYWNrQnlTdGVwSWRcIiBjbGFzcz1cImNxYS1udmgtY2hhbmdlLWNhcmQgY3FhLW52aC1jaGFuZ2UtY2FyZC0tYWRkZWRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1udmgtc3RlcC1oZWFkZXJcIj5cbiAgICAgICAgICA8Y3FhLWJhZGdlIGxhYmVsPVwiQWRkZWRcIiBzaXplPVwic21hbGxcIiBiYWNrZ3JvdW5kQ29sb3I9XCIjRUNGREYzXCIgdGV4dENvbG9yPVwiIzAyN0E0OFwiXG4gICAgICAgICAgICBib3JkZXJDb2xvcj1cIiNBN0YzRDBcIj48L2NxYS1iYWRnZT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1udmgtc3RlcC1wcmVmaXhcIj57eyBnZXRTdGVwUHJlZml4Rm4oc3RlcCkgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtbnZoLXN0ZXAtYWN0aW9uIGNxYS1hY3Rpb24tZm9ybWF0XCIgW2lubmVySFRNTF09XCJnZXRTdGVwQWN0aW9uSHRtbEZuKHN0ZXApXCI+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tID09PT09PT09PT0gU3RlcHMgRGVsZXRlZCA9PT09PT09PT09IC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcHNEZWxldGVkLmxlbmd0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtbnZoLXNlY3Rpb24taGVhZGVyXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS1udmgtc2VjdGlvbi1sYWJlbFwiPlN0ZXBzIFJlbW92ZWQ8L3NwYW4+XG4gICAgICA8Y3FhLWJhZGdlIFtsYWJlbF09XCInJyArIHN0ZXBzRGVsZXRlZC5sZW5ndGhcIiBzaXplPVwic21hbGxcIiBiYWNrZ3JvdW5kQ29sb3I9XCIjRkVGM0YyXCJcbiAgICAgICAgdGV4dENvbG9yPVwiI0I0MjMxOFwiIGJvcmRlckNvbG9yPVwiI0ZFQ0RDQVwiPjwvY3FhLWJhZGdlPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNxYS1udmgtY2hhbmdlcy1saXN0XCI+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzdGVwIG9mIHN0ZXBzRGVsZXRlZDsgdHJhY2tCeTogdHJhY2tCeVN0ZXBJZFwiIGNsYXNzPVwiY3FhLW52aC1jaGFuZ2UtY2FyZCBjcWEtbnZoLWNoYW5nZS1jYXJkLS1yZW1vdmVkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtbnZoLXN0ZXAtaGVhZGVyXCI+XG4gICAgICAgICAgPGNxYS1iYWRnZSBsYWJlbD1cIlJlbW92ZWRcIiBzaXplPVwic21hbGxcIiBiYWNrZ3JvdW5kQ29sb3I9XCIjRkVGM0YyXCIgdGV4dENvbG9yPVwiI0I0MjMxOFwiXG4gICAgICAgICAgICBib3JkZXJDb2xvcj1cIiNGRUNEQ0FcIj48L2NxYS1iYWRnZT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1udmgtc3RlcC1wcmVmaXhcIj57eyBnZXRTdGVwUHJlZml4Rm4oc3RlcCkgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtbnZoLXN0ZXAtYWN0aW9uIGNxYS1hY3Rpb24tZm9ybWF0XCIgW2lubmVySFRNTF09XCJnZXRTdGVwQWN0aW9uSHRtbEZuKHN0ZXApXCI+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tID09PT09PT09PT0gU3RlcHMgVXBkYXRlZCA9PT09PT09PT09IC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcHNVcGRhdGVkLmxlbmd0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtbnZoLXNlY3Rpb24taGVhZGVyXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS1udmgtc2VjdGlvbi1sYWJlbFwiPlN0ZXBzIE1vZGlmaWVkPC9zcGFuPlxuICAgICAgPGNxYS1iYWRnZSBbbGFiZWxdPVwiJycgKyBzdGVwc1VwZGF0ZWQubGVuZ3RoXCIgc2l6ZT1cInNtYWxsXCIgYmFja2dyb3VuZENvbG9yPVwiI0ZGRkFFQlwiXG4gICAgICAgIHRleHRDb2xvcj1cIiNCNTQ3MDhcIiBib3JkZXJDb2xvcj1cIiNGRURGODlcIj48L2NxYS1iYWRnZT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjcWEtbnZoLWNoYW5nZXMtbGlzdFwiPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwc1VwZGF0ZWQ7IHRyYWNrQnk6IHRyYWNrQnlTdGVwSWRcIiBjbGFzcz1cImNxYS1udmgtY2hhbmdlLWNhcmRcIj5cbiAgICAgICAgPCEtLSBTdGVwIGhlYWRlciB3aXRoIGNhdGVnb3J5IGJhZGdlIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLW52aC1zdGVwLWhlYWRlclwiPlxuICAgICAgICAgIDxjcWEtYmFkZ2UgW2xhYmVsXT1cImdldENhdGVnb3J5TGFiZWxGbihzdGVwLmNhdGVnb3J5KVwiIHNpemU9XCJzbWFsbFwiIGJhY2tncm91bmRDb2xvcj1cIiNFREYxRjNcIlxuICAgICAgICAgICAgdGV4dENvbG9yPVwiIzYzNkE3MVwiIGJvcmRlckNvbG9yPVwiI0RCREVFMVwiPjwvY3FhLWJhZGdlPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLW52aC1zdGVwLXByZWZpeFwiPnt7IGdldFN0ZXBQcmVmaXhGbihzdGVwKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1udmgtc3RlcC1hY3Rpb24gY3FhLWFjdGlvbi1mb3JtYXRcIiBbaW5uZXJIVE1MXT1cImdldFN0ZXBBY3Rpb25IdG1sRm4oc3RlcClcIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQ2hhbmdlZCBmaWVsZHMgd2l0aCBiZWZvcmUvYWZ0ZXIgLS0+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHZpc2libGVDaGFuZ2VkRmllbGRzKHN0ZXApOyB0cmFja0J5OiB0cmFja0J5RmllbGRcIiBjbGFzcz1cImNxYS1udmgtZmllbGQtZGlmZlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtbnZoLWNoYW5nZS1maWVsZC1sYWJlbFwiPnt7IGdldEZpZWxkTGFiZWxGbihmaWVsZCkgfX08L2Rpdj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImJlZm9yZUFmdGVyQmxvY2s7IGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgb2xkVmFsdWU6IHN0ZXAub2xkPy5bZmllbGRdLFxuICAgICAgICAgICAgICBuZXdWYWx1ZTogc3RlcC5uZXc/LltmaWVsZF0sXG4gICAgICAgICAgICAgIGZpZWxkOiBmaWVsZCxcbiAgICAgICAgICAgICAgb2xkU3RlcERhdGE6IHN0ZXAub2xkLFxuICAgICAgICAgICAgICBuZXdTdGVwRGF0YTogc3RlcC5uZXdcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSA9PT09PT09PT09IEVtcHR5IHN0YXRlID09PT09PT09PT0gLS0+XG4gIDxkaXYgKm5nSWY9XCIhaGFzQW55Q2hhbmdlc1wiIGNsYXNzPVwiY3FhLW52aC1kZXRhaWwtZW1wdHlcIj5cbiAgICA8Y3FhLWVtcHR5LXN0YXRlIHRpdGxlPVwiTm8gY2hhbmdlc1wiIGRlc2NyaXB0aW9uPVwiTm8gY2hhbmdlcyByZWNvcmRlZCBmb3IgdGhpcyB2ZXJzaW9uLlwiPjwvY3FhLWVtcHR5LXN0YXRlPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI25vU2VsZWN0aW9uPlxuICA8ZGl2IGNsYXNzPVwiY3FhLW52aC1kZXRhaWwtbm8tc2VsZWN0aW9uXCI+XG4gICAgU2VsZWN0IGEgdmVyc2lvbiB0byB2aWV3IGRldGFpbHMuXG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSA9PT09PSBSZXVzYWJsZSBiZWZvcmUvYWZ0ZXIgYmxvY2sgPT09PT0gLS0+XG48bmctdGVtcGxhdGUgI2JlZm9yZUFmdGVyQmxvY2sgbGV0LW9sZFZhbHVlPVwib2xkVmFsdWVcIiBsZXQtbmV3VmFsdWU9XCJuZXdWYWx1ZVwiIGxldC1maWVsZD1cImZpZWxkXCIgbGV0LW9sZFN0ZXBEYXRhPVwib2xkU3RlcERhdGFcIiBsZXQtbmV3U3RlcERhdGE9XCJuZXdTdGVwRGF0YVwiPlxuICA8IS0tIDEuIEN1c3RvbSB0YWJsZSB2aWEgcGFyc2VGaWVsZEFzVGFibGVGbiAoZS5nLiB0ZXN0RGF0YUxpc3QpIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFyc2VGaWVsZEFzVGFibGVGbihmaWVsZCwgb2xkVmFsdWUsIG9sZFN0ZXBEYXRhKSB8fCBwYXJzZUZpZWxkQXNUYWJsZUZuKGZpZWxkLCBuZXdWYWx1ZSwgbmV3U3RlcERhdGEpOyBlbHNlIG5hdGl2ZU9iamVjdENoZWNrXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJvYmpUYWJsZTsgY29udGV4dDoge1xuICAgICAgICBvbGRPYmo6IHBhcnNlRmllbGRBc1RhYmxlRm4oZmllbGQsIG9sZFZhbHVlLCBvbGRTdGVwRGF0YSksXG4gICAgICAgIG5ld09iajogcGFyc2VGaWVsZEFzVGFibGVGbihmaWVsZCwgbmV3VmFsdWUsIG5ld1N0ZXBEYXRhKVxuICAgICAgfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIDIuIE5hdGl2ZSBvYmplY3QgLyBKU09OIHN0cmluZyAtLT5cbiAgPG5nLXRlbXBsYXRlICNuYXRpdmVPYmplY3RDaGVjaz5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFyc2VPYmplY3RWYWx1ZShvbGRWYWx1ZSkgfHwgcGFyc2VPYmplY3RWYWx1ZShuZXdWYWx1ZSk7IGVsc2Ugc2ltcGxlVmFsdWVcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJvYmpUYWJsZTsgY29udGV4dDoge1xuICAgICAgICAgIG9sZE9iajogcGFyc2VPYmplY3RWYWx1ZShvbGRWYWx1ZSksXG4gICAgICAgICAgbmV3T2JqOiBwYXJzZU9iamVjdFZhbHVlKG5ld1ZhbHVlKVxuICAgICAgICB9XCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8IS0tIDMuIFByaW1pdGl2ZSBmYWxsYmFjayAtLT5cbiAgPG5nLXRlbXBsYXRlICNzaW1wbGVWYWx1ZT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLW52aC1iZWZvcmUtYWZ0ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtbnZoLXZhbHVlLXJvdyBjcWEtbnZoLXZhbHVlLXJvdy0tYmVmb3JlXCI+XG4gICAgICAgIDxjcWEtYmFkZ2UgbGFiZWw9XCJCZWZvcmVcIiBzaXplPVwic21hbGxcIiBiYWNrZ3JvdW5kQ29sb3I9XCIjRkVGMkYyXCIgdGV4dENvbG9yPVwiI0ZCMkMzNlwiXG4gICAgICAgICAgYm9yZGVyQ29sb3I9XCIjRkZFMkUyXCI+PC9jcWEtYmFkZ2U+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLW52aC12YWx1ZS10ZXh0XCI+e3sgZm9ybWF0RGlzcGxheVZhbHVlRm4ob2xkVmFsdWUsIGZpZWxkLCBvbGRTdGVwRGF0YSkgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtbnZoLXZhbHVlLXJvdyBjcWEtbnZoLXZhbHVlLXJvdy0tYWZ0ZXJcIj5cbiAgICAgICAgPGNxYS1iYWRnZSBsYWJlbD1cIkFmdGVyXCIgc2l6ZT1cInNtYWxsXCIgYmFja2dyb3VuZENvbG9yPVwiI0VDRkRGNVwiIHRleHRDb2xvcj1cIiMwMDk5NjZcIlxuICAgICAgICAgIGJvcmRlckNvbG9yPVwiI0QwRkFFNVwiPjwvY3FhLWJhZGdlPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1udmgtdmFsdWUtdGV4dFwiPnt7IGZvcm1hdERpc3BsYXlWYWx1ZUZuKG5ld1ZhbHVlLCBmaWVsZCwgbmV3U3RlcERhdGEpIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tID09PT09IFNoYXJlZCBvYmplY3QgdGFibGUgPT09PT0gLS0+XG48bmctdGVtcGxhdGUgI29ialRhYmxlIGxldC1vbGRPYmo9XCJvbGRPYmpcIiBsZXQtbmV3T2JqPVwibmV3T2JqXCI+XG4gIDxkaXYgY2xhc3M9XCJjcWEtbnZoLW9iai10YWJsZVwiICpuZ0lmPVwib2JqZWN0S2V5cyhvbGRPYmosIG5ld09iaikubGVuZ3RoID4gMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtbnZoLW9iai1oZWFkZXJcIj5cbiAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLW52aC1vYmotY29sLWxhYmVsIGNxYS1udmgtb2JqLWNvbC1sYWJlbC0tYmVmb3JlXCI+QmVmb3JlPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtbnZoLW9iai1jb2wtbGFiZWwgY3FhLW52aC1vYmotY29sLWxhYmVsLS1hZnRlclwiPkFmdGVyPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgICpuZ0Zvcj1cImxldCBrZXkgb2Ygb2JqZWN0S2V5cyhvbGRPYmosIG5ld09iaik7IHRyYWNrQnk6IHRyYWNrQnlLZXlcIlxuICAgICAgY2xhc3M9XCJjcWEtbnZoLW9iai1yb3dcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLW52aC1vYmota2V5XCI+e3sgZ2V0RmllbGRMYWJlbEZuKGtleSkgfX08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS1udmgtb2JqLXZhbCBjcWEtbnZoLW9iai12YWwtLWJlZm9yZVwiPlxuICAgICAgICB7eyBmb3JtYXRQcmltaXRpdmVWYWx1ZShvbGRPYmo/LltrZXldKSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtbnZoLW9iai12YWwgY3FhLW52aC1vYmotdmFsLS1hZnRlclwiPlxuICAgICAgICB7eyBmb3JtYXRQcmltaXRpdmVWYWx1ZShuZXdPYmo/LltrZXldKSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -160,10 +160,15 @@ export * from './lib/execution-screen/jump-to-step-modal/jump-to-step-modal.comp
160
160
  export * from './lib/execution-screen/breakpoints-modal/breakpoints-modal.component';
161
161
  export * from './lib/execution-screen/recording-banner/recording-banner.component';
162
162
  export * from './lib/execution-screen/review-recorded-steps-modal/review-recorded-steps-modal.component';
163
+ export * from './lib/questionnaire-list/questionnaire-list.component';
164
+ export * from './lib/questionnaire-list/questionnaire-list.types';
165
+ export * from './lib/change-history/change-history.component';
166
+ export * from './lib/change-history/change-history.types';
167
+ export * from './lib/dashboards/workspace-selector/workspace-selector.component';
163
168
  export * from './lib/dashboards/workspace-selector/workspace-selector.component';
164
169
  export * from './lib/version-history/version-history-list/version-history-list.component';
165
170
  export * from './lib/version-history/version-history-compare/version-history-compare.component';
166
171
  export * from './lib/version-history/version-history-detail/version-history-detail.component';
167
172
  export * from './lib/version-history/version-history-restore-confirm/version-history-restore-confirm.component';
168
173
  export * from './lib/version-history/new-version-history-detail/new-version-history-detail.component';
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLDZEQUE2RCxDQUFDO0FBQzVFLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxrRUFBa0UsQ0FBQztBQUNqRixjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsc0VBQXNFLENBQUM7QUFDckYsY0FBYywwRUFBMEUsQ0FBQztBQUN6RixjQUFjLDBFQUEwRSxDQUFDO0FBQ3pGLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYywrRUFBK0UsQ0FBQztBQUM5RixjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsc0RBQXNELENBQUM7QUFD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Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLG1FQUFtRSxDQUFDO0FBQ2xGLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsaUZBQWlGLENBQUM7QUFDaEcsY0FBYyxvRUFBb0UsQ0FBQztBQUNuRixjQUFjLHdFQUF3RSxDQUFDO0FBQ3ZGLGNBQWMsc0VBQXNFLENBQUM7QUFDckYsY0FBYyxvRUFBb0UsQ0FBQztBQUNuRixjQUFjLDBGQUEwRixDQUFDO0FBQ3pHLGNBQWMsa0VBQWtFLENBQUM7QUFDakYsY0FBYywyRUFBMkUsQ0FBQztBQUMxRixjQUFjLGlGQUFpRixDQUFDO0FBQ2hHLGNBQWMsK0VBQStFLENBQUM7QUFDOUYsY0FBYyxpR0FBaUcsQ0FBQztBQUNoSCxjQUFjLHVGQUF1RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvdWkta2l0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZWFyY2gtYmFyL3NlYXJjaC1iYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VnbWVudC1jb250cm9sL3NlZ21lbnQtY29udHJvbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlhbG9nL2RpYWxvZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpYWxvZy9kaWFsb2cubW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpYWxvZy9kaWFsb2cudG9rZW5zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpYWxvZy9kaWFsb2ctcmVmJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFibGUvZHluYW1pYy10YWJsZS9keW5hbWljLWNlbGwuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlL2R5bmFtaWMtdGFibGUvZHluYW1pYy1jZWxsLWNvbnRhaW5lci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFibGUvZHluYW1pYy10YWJsZS9jb21wb25lbnQtcmVuZGVyLWNvbmZpZy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY3Rpb24tbWVudS9hY3Rpb24tbWVudS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvb3RoZXItYnV0dG9uL290aGVyLWJ1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsdGVycy9keW5hbWljLWZpbHRlci9keW5hbWljLWZpbHRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsdGVycy9kYXRlcmFuZ2VwaWNrZXIvZGF0ZXJhbmdlcGlja2VyLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWx0ZXJzL2RhdGVyYW5nZXBpY2tlci9kYXRlcmFuZ2VwaWNrZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbHVtbi12aXNpYmlsaXR5L2NvbHVtbi12aXNpYmlsaXR5LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS1hY3Rpb24tdG9vbGJhci90YWJsZS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGFzaGJvYXJkcy9tZXRyaWNzLWNhcmQvbWV0cmljcy1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXNoYm9hcmRzL2NoYXJ0LWNhcmQvY2hhcnQtY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGFzaGJvYXJkcy9wcm9ncmVzcy10ZXh0LWNhcmQvcHJvZ3Jlc3MtdGV4dC1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXNoYm9hcmRzL2Rhc2hib2FyZC1oZWFkZXIvZGFzaGJvYXJkLWhlYWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGFzaGJvYXJkcy9jb3ZlcmFnZS1tb2R1bGUtY2FyZC9jb3ZlcmFnZS1tb2R1bGUtY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGFzaGJvYXJkcy90ZXN0LWRpc3RyaWJ1dGlvbi1jYXJkL3Rlc3QtZGlzdHJpYnV0aW9uLWNhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Rhc2hib2FyZHMvZmFpbGVkLXRlc3QtY2FzZXMtY2FyZC9mYWlsZWQtdGVzdC1jYXNlcy1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9keW5hbWljLXNlbGVjdC9keW5hbWljLXNlbGVjdC1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWRkLXByZXJlcXVpc2l0ZS1jYXNlcy1zZWN0aW9uL2FkZC1wcmVyZXF1aXNpdGUtY2FzZXMtc2VjdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VsZWN0ZWQtZmlsdGVycy9zZWxlY3RlZC1maWx0ZXJzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXNoYm9hcmRzL2luc2lnaHQtY2FyZC9pbnNpZ2h0LWNhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhZGdlL2JhZGdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bi1idXR0b24vZHJvcGRvd24tYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXNoYm9hcmRzL2hlYXQtZXJyb3ItbWFwLWNlbGwvaGVhdC1lcnJvci1tYXAtY2VsbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLXByZXNldHMuY29uc3RhbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLWNvbmZpZy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGVzL3RhYmxlLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hc3NldHMvaW1hZ2VzL2ltYWdlLWFzc2V0cy5jb25zdGFudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvbWV0YWRhdGEtY29sb3JzLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZnVsbC10YWJsZS1sb2FkZXIvZnVsbC10YWJsZS1sb2FkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlLWRhdGEtbG9hZGVyL3RhYmxlLWRhdGEtbG9hZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy90dy1vdmVybGF5LWNvbnRhaW5lcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaW11bGF0b3Ivc2ltdWxhdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25zb2xlLWFsZXJ0L2NvbnNvbGUtYWxlcnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FpLWRlYnVnLWFsZXJ0L2FpLWRlYnVnLWFsZXJ0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZXR3b3JrLXJlcXVlc3QvbmV0d29yay1yZXF1ZXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ydW4taGlzdG9yeS1jYXJkL3J1bi1oaXN0b3J5LWNhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Zpc3VhbC1kaWZmZXJlbmNlLW1vZGFsL3Zpc3VhbC1kaWZmZXJlbmNlLW1vZGFsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25maWd1cmF0aW9uLWNhcmQvY29uZmlndXJhdGlvbi1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wYXJlLXJ1bnMvY29tcGFyZS1ydW5zLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pdGVyYXRpb25zLWxvb3AvaXRlcmF0aW9ucy1sb29wLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mYWlsZWQtc3RlcC1jYXJkL2ZhaWxlZC1zdGVwLWNhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2N1c3RvbS1pbnB1dC9jdXN0b20taW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2N1c3RvbS10ZXh0YXJlYS9jdXN0b20tdGV4dGFyZWEuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZGUtZWRpdG9yL2NvZGUtZWRpdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jdXN0b20tdG9nZ2xlL2N1c3RvbS10b2dnbGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4ZWN1dGlvbi1zY3JlZW4vYmFzaWMtc3RlcC9iYXNpYy1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL3N0ZXAtZ3JvdXAvc3RlcC1ncm91cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXhlY3V0aW9uLXNjcmVlbi9sb29wLXN0ZXAvbG9vcC1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL2NvbmRpdGlvbi1zdGVwL2NvbmRpdGlvbi1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL2NvbmRpdGlvbi1kZWJ1Zy1zdGVwL2NvbmRpdGlvbi1kZWJ1Zy1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL2NvbmRpdGlvbi1kZWJ1Zy1zdGVwL2NvbmRpdGlvbi1icmFuY2gtZWRpdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL2ZhaWxlZC1zdGVwL2ZhaWxlZC1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL3VwZGF0ZWQtZmFpbGVkLXN0ZXAvdXBkYXRlZC1mYWlsZWQtc3RlcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXhlY3V0aW9uLXNjcmVlbi92aWV3LW1vcmUtZmFpbGVkLXN0ZXAtYnV0dG9uL3ZpZXctbW9yZS1mYWlsZWQtc3RlcC1idXR0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4ZWN1dGlvbi1zY3JlZW4vc2VsZi1oZWFsLWFuYWx5c2lzL3NlbGYtaGVhbC1hbmFseXNpcy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXhlY3V0aW9uLXNjcmVlbi9haS1hZ2VudC1zdGVwL2FpLWFnZW50LXN0ZXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4ZWN1dGlvbi1zY3JlZW4vYWktYWN0aW9uLXN0ZXAvYWktYWN0aW9uLXN0ZXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4ZWN1dGlvbi1zY3JlZW4vYXBpLXN0ZXAvYXBpLXN0ZXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4ZWN1dGlvbi1zY3JlZW4vZmlsZS1kb3dubG9hZC1zdGVwL2ZpbGUtZG93bmxvYWQtc3RlcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXhlY3V0aW9uLXNjcmVlbi9kb2N1bWVudC12ZXJpZmljYXRpb24tc3RlcC9kb2N1bWVudC12ZXJpZmljYXRpb24tc3RlcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXhlY3V0aW9uLXNjcmVlbi9saXZlLWV4ZWN1dGlvbi1zdGVwL2xpdmUtZXhlY3V0aW9uLXN0ZXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4ZWN1dGlvbi1zY3JlZW4vYWktbG9ncy13aXRoLXJlYXNvbmluZy9haS1sb2dzLXdpdGgtcmVhc29uaW5nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL21haW4tc3RlcC1jb2xsYXBzZS9tYWluLXN0ZXAtY29sbGFwc2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4ZWN1dGlvbi1zY3JlZW4vdmlzdWFsLWNvbXBhcmlzb24vdmlzdWFsLWNvbXBhcmlzb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4ZWN1dGlvbi1zY3JlZW4vc3RlcC1yZW5kZXJlci9zdGVwLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9haS1yZWFzb25pbmcvYWktcmVhc29uaW5nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tcmVzdWx0LW1vZGFsL2V4ZWN1dGlvbi1yZXN1bHQtbW9kYWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4ZWN1dGlvbi1zY3JlZW4vc2Vzc2lvbi1jaGFuZ2VzLW1vZGFsL3Nlc3Npb24tY2hhbmdlcy1tb2RhbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXJyb3ItbW9kYWwvZXJyb3ItbW9kYWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4cG9ydC1jb2RlLW1vZGFsL2V4cG9ydC1jb2RlLW1vZGFsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcm9ncmVzcy1pbmRpY2F0b3IvcHJvZ3Jlc3MtaW5kaWNhdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGVwLXByb2dyZXNzLWNhcmQvc3RlcC1wcm9ncmVzcy1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGVwLXN0YXR1cy1jYXJkL3N0ZXAtc3RhdHVzLWNhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4ZWN1dGlvbi1zY3JlZW4vZGItdmVyaWZpY2F0aW9uLXN0ZXAvZGItdmVyaWZpY2F0aW9uLXN0ZXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4ZWN1dGlvbi1zY3JlZW4vZGItcXVlcnktZXhlY3V0aW9uLWl0ZW0vZGItcXVlcnktZXhlY3V0aW9uLWl0ZW0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL25vcm1hbC1zdGVwL25vcm1hbC1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9sb29wLXN0ZXAvbG9vcC1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9jb25kaXRpb24tc3RlcC9jb25kaXRpb24tc3RlcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvc3RlcC1ncm91cC9zdGVwLWdyb3VwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlci90ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvYXBpLXN0ZXAvYXBpLXN0ZXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2RhdGFiYXNlLXN0ZXAvZGF0YWJhc2Utc3RlcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvYWktYWdlbnQtc3RlcC9haS1hZ2VudC1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9haS12ZXJpZnktc3RlcC9haS12ZXJpZnktc3RlcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvdXBsb2FkLXN0ZXAvdXBsb2FkLXN0ZXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3NjcmVlbnNob3Qtc3RlcC9zY3JlZW5zaG90LXN0ZXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3Njcm9sbC1zdGVwL3Njcm9sbC1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy92ZXJpZnktdXJsLXN0ZXAvdmVyaWZ5LXVybC1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9yZXN0b3JlLXNlc3Npb24tc3RlcC9yZXN0b3JlLXNlc3Npb24tc3RlcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvY3VzdG9tLWNvZGUtc3RlcC9jdXN0b20tY29kZS1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9jdXN0b20tZWRpdC1zdGVwL2N1c3RvbS1lZGl0LXN0ZXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2N1c3RvbS1lZGl0LXN0ZXAvY3VzdG9tLWVkaXQtc3RlcC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2N1c3RvbS1lZGl0LXN0ZXAvY3VzdG9tLWVkaXQtc3RlcC1yZWYnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvY3VzdG9tLWVkaXQtc3RlcC9jdXN0b20tZWRpdC1zdGVwLWRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvc3RlcC1kZXRhaWxzLWRyYXdlci9zdGVwLWRldGFpbHMtZHJhd2VyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9zdGVwLWRldGFpbHMtZHJhd2VyL3N0ZXAtZGV0YWlscy1kcmF3ZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9zdGVwLWRldGFpbHMtZHJhd2VyL3N0ZXAtZGV0YWlscy1kcmF3ZXItcmVmJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3N0ZXAtZGV0YWlscy1kcmF3ZXIvc3RlcC1kZXRhaWxzLWRyYXdlci1kYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3N0ZXAtZGV0YWlscy1kcmF3ZXIvc3RlcC1kZXRhaWxzLWRyYXdlci1maWVsZC5jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvc3RlcC1kZXRhaWxzLW1vZGFsL3N0ZXAtZGV0YWlscy1tb2RhbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvc3RlcC1kZXRhaWxzLW1vZGFsL3N0ZXAtZGV0YWlscy1tb2RhbC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3N0ZXAtZGV0YWlscy1tb2RhbC9zdGVwLWRldGFpbHMtbW9kYWwtcmVmJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3N0ZXAtZGV0YWlscy1tb2RhbC9zdGVwLWRldGFpbHMtbW9kYWwtZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pdGVtLWxpc3QvaXRlbS1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pdGVtLWxpc3QvaXRlbS1saXN0Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3Rlc3QtZGF0YS1tb2RhbC90ZXN0LWRhdGEtbW9kYWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3Rlc3QtZGF0YS1tb2RhbC90ZXN0LWRhdGEtbW9kYWwuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWRhdGEtbW9kYWwvdGVzdC1kYXRhLW1vZGFsLXJlZic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWRhdGEtbW9kYWwvdGVzdC1kYXRhLW1vZGFsLWRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvY3JlYXRlLXN0ZXAtZ3JvdXAvY3JlYXRlLXN0ZXAtZ3JvdXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2RlbGV0ZS1zdGVwcy9kZWxldGUtc3RlcHMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3J1bi1leGVjdXRpb24tYWxlcnQvcnVuLWV4ZWN1dGlvbi1hbGVydC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvYXBpLWVkaXQtc3RlcC9hcGktZWRpdC1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWNhc2Utc3RlcC5tb2RlbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbGl2ZS1jb252ZXJzYXRpb24vbGl2ZS1jb252ZXJzYXRpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0ZXAtYnVpbGRlci9zdGVwLWJ1aWxkZXItYWN0aW9uL3N0ZXAtYnVpbGRlci1hY3Rpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0ZXAtYnVpbGRlci90ZW1wbGF0ZS12YXJpYWJsZXMtZm9ybS90ZW1wbGF0ZS12YXJpYWJsZXMtZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RlcC1idWlsZGVyL2FkdmFuY2VkLXZhcmlhYmxlcy1mb3JtL2FkdmFuY2VkLXZhcmlhYmxlcy1mb3JtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLWxvb3Avc3RlcC1idWlsZGVyLWxvb3AuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2VsZW1lbnQtcG9wdXAvZWxlbWVudC1wb3B1cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvZWxlbWVudC1wb3B1cC9lbGVtZW50LWZvcm0vZWxlbWVudC1mb3JtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9lbGVtZW50LXBvcHVwL2VsZW1lbnQtcG9wdXAtcmVmJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2VsZW1lbnQtcG9wdXAvZWxlbWVudC1wb3B1cC1kYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2VsZW1lbnQtcG9wdXAvZWxlbWVudC1wb3B1cC1mb3JtLWRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvZWxlbWVudC1wb3B1cC9lbGVtZW50LXBvcHVwLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RlcC1idWlsZGVyL3N0ZXAtYnVpbGRlci1jb25kaXRpb24vc3RlcC1idWlsZGVyLWNvbmRpdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RlcC1idWlsZGVyL3N0ZXAtYnVpbGRlci1kYXRhYmFzZS9zdGVwLWJ1aWxkZXItZGF0YWJhc2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0ZXAtYnVpbGRlci9zdGVwLWJ1aWxkZXItYWktYWdlbnQvc3RlcC1idWlsZGVyLWFpLWFnZW50LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9lbGVtZW50LWxpc3QvZWxlbWVudC1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLWRvY3VtZW50L3N0ZXAtYnVpbGRlci1kb2N1bWVudC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RlcC1idWlsZGVyL3N0ZXAtYnVpbGRlci1jdXN0b20tY29kZS9zdGVwLWJ1aWxkZXItY3VzdG9tLWNvZGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0ZXAtYnVpbGRlci9zdGVwLWJ1aWxkZXItcmVjb3JkLXN0ZXAvc3RlcC1idWlsZGVyLXJlY29yZC1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLWRvY3VtZW50LWdlbmVyYXRpb24tdGVtcGxhdGUtc3RlcC9zdGVwLWJ1aWxkZXItZG9jdW1lbnQtZ2VuZXJhdGlvbi10ZW1wbGF0ZS1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGV0YWlsLXNpZGUtcGFuZWwvZGV0YWlsLXNpZGUtcGFuZWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RldGFpbC1zaWRlLXBhbmVsL2RldGFpbC1zaWRlLXBhbmVsLm1vZGVscyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kZXRhaWwtZHJhd2VyL2RldGFpbC1kcmF3ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RldGFpbC1kcmF3ZXIvZGV0YWlsLWRyYXdlci10YWIvZGV0YWlsLWRyYXdlci10YWIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RldGFpbC1kcmF3ZXIvZGV0YWlsLWRyYXdlci10YWItY29udGVudC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvdGVzdC1jYXNlLWRldGFpbHMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3Rlc3QtY2FzZS1kZXRhaWxzLm1vZGVscyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWNhc2UtZGV0YWlscy1lZGl0L3Rlc3QtY2FzZS1kZXRhaWxzLWVkaXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0ZXAtYnVpbGRlci9zdGVwLWJ1aWxkZXItZ3JvdXAvc3RlcC1idWlsZGVyLWdyb3VwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL2p1bXAtdG8tc3RlcC1tb2RhbC9qdW1wLXRvLXN0ZXAtbW9kYWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4ZWN1dGlvbi1zY3JlZW4vYnJlYWtwb2ludHMtbW9kYWwvYnJlYWtwb2ludHMtbW9kYWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4ZWN1dGlvbi1zY3JlZW4vcmVjb3JkaW5nLWJhbm5lci9yZWNvcmRpbmctYmFubmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL3Jldmlldy1yZWNvcmRlZC1zdGVwcy1tb2RhbC9yZXZpZXctcmVjb3JkZWQtc3RlcHMtbW9kYWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Rhc2hib2FyZHMvd29ya3NwYWNlLXNlbGVjdG9yL3dvcmtzcGFjZS1zZWxlY3Rvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmVyc2lvbi1oaXN0b3J5L3ZlcnNpb24taGlzdG9yeS1saXN0L3ZlcnNpb24taGlzdG9yeS1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92ZXJzaW9uLWhpc3RvcnkvdmVyc2lvbi1oaXN0b3J5LWNvbXBhcmUvdmVyc2lvbi1oaXN0b3J5LWNvbXBhcmUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZlcnNpb24taGlzdG9yeS92ZXJzaW9uLWhpc3RvcnktZGV0YWlsL3ZlcnNpb24taGlzdG9yeS1kZXRhaWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZlcnNpb24taGlzdG9yeS92ZXJzaW9uLWhpc3RvcnktcmVzdG9yZS1jb25maXJtL3ZlcnNpb24taGlzdG9yeS1yZXN0b3JlLWNvbmZpcm0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZlcnNpb24taGlzdG9yeS9uZXctdmVyc2lvbi1oaXN0b3J5LWRldGFpbC9uZXctdmVyc2lvbi1oaXN0b3J5LWRldGFpbC5jb21wb25lbnQnOyJdfQ==
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLDZEQUE2RCxDQUFDO0FBQzVFLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxrRUFBa0UsQ0FBQztBQUNqRixjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsc0VBQXNFLENBQUM7QUFDckYsY0FBYywwRUFBMEUsQ0FBQztBQUN6RixjQUFjLDBFQUEwRSxDQUFDO0FBQ3pGLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYywrRUFBK0UsQ0FBQztBQUM5RixjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsc0RBQXNELENBQUM7QUFD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Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLG1FQUFtRSxDQUFDO0FBQ2xGLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsaUZBQWlGLENBQUM7QUFDaEcsY0FBYyxvRUFBb0UsQ0FBQztBQUNuRixjQUFjLHdFQUF3RSxDQUFDO0FBQ3ZGLGNBQWMsc0VBQXNFLENBQUM7QUFDckYsY0FBYyxvRUFBb0UsQ0FBQztBQUNuRixjQUFjLDBGQUEwRixDQUFDO0FBQ3pHLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxrRUFBa0UsQ0FBQztBQUNqRixjQUFjLGtFQUFrRSxDQUFDO0FBQ2pGLGNBQWMsMkVBQTJFLENBQUM7QUFDMUYsY0FBYyxpRkFBaUYsQ0FBQztBQUNoRyxjQUFjLCtFQUErRSxDQUFDO0FBQzlGLGNBQWMsaUdBQWlHLENBQUM7QUFDaEgsY0FBYyx1RkFBdUYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL3VpLWtpdC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VhcmNoLWJhci9zZWFyY2gtYmFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlZ21lbnQtY29udHJvbC9zZWdtZW50LWNvbnRyb2wuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaWFsb2cvZGlhbG9nLm1vZGVscyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaWFsb2cvZGlhbG9nLnRva2Vucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaWFsb2cvZGlhbG9nLXJlZic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlL2R5bmFtaWMtdGFibGUvZHluYW1pYy1jZWxsLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS9keW5hbWljLXRhYmxlL2R5bmFtaWMtY2VsbC1jb250YWluZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlL2R5bmFtaWMtdGFibGUvY29tcG9uZW50LXJlbmRlci1jb25maWcuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWN0aW9uLW1lbnUvYWN0aW9uLW1lbnUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL290aGVyLWJ1dHRvbi9vdGhlci1idXR0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbHRlcnMvZHluYW1pYy1maWx0ZXIvZHluYW1pYy1maWx0ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbHRlcnMvZGF0ZXJhbmdlcGlja2VyL2RhdGVyYW5nZXBpY2tlci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsdGVycy9kYXRlcmFuZ2VwaWNrZXIvZGF0ZXJhbmdlcGlja2VyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2x1bW4tdmlzaWJpbGl0eS9jb2x1bW4tdmlzaWJpbGl0eS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFibGUtYWN0aW9uLXRvb2xiYXIvdGFibGUtYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Rhc2hib2FyZHMvbWV0cmljcy1jYXJkL21ldHJpY3MtY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGFzaGJvYXJkcy9jaGFydC1jYXJkL2NoYXJ0LWNhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Rhc2hib2FyZHMvcHJvZ3Jlc3MtdGV4dC1jYXJkL3Byb2dyZXNzLXRleHQtY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGFzaGJvYXJkcy9kYXNoYm9hcmQtaGVhZGVyL2Rhc2hib2FyZC1oZWFkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Rhc2hib2FyZHMvY292ZXJhZ2UtbW9kdWxlLWNhcmQvY292ZXJhZ2UtbW9kdWxlLWNhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Rhc2hib2FyZHMvdGVzdC1kaXN0cmlidXRpb24tY2FyZC90ZXN0LWRpc3RyaWJ1dGlvbi1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXNoYm9hcmRzL2ZhaWxlZC10ZXN0LWNhc2VzLWNhcmQvZmFpbGVkLXRlc3QtY2FzZXMtY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHluYW1pYy1zZWxlY3QvZHluYW1pYy1zZWxlY3QtZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FkZC1wcmVyZXF1aXNpdGUtY2FzZXMtc2VjdGlvbi9hZGQtcHJlcmVxdWlzaXRlLWNhc2VzLXNlY3Rpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlbGVjdGVkLWZpbHRlcnMvc2VsZWN0ZWQtZmlsdGVycy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGFzaGJvYXJkcy9pbnNpZ2h0LWNhcmQvaW5zaWdodC1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYWRnZS9iYWRnZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24tYnV0dG9uL2Ryb3Bkb3duLWJ1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGFzaGJvYXJkcy9oZWF0LWVycm9yLW1hcC1jZWxsL2hlYXQtZXJyb3ItbWFwLWNlbGwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS1wcmVzZXRzLmNvbnN0YW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS1jb25maWcuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlcy90YWJsZS10ZW1wbGF0ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXNzZXRzL2ltYWdlcy9pbWFnZS1hc3NldHMuY29uc3RhbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL21ldGFkYXRhLWNvbG9ycy51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Z1bGwtdGFibGUtbG9hZGVyL2Z1bGwtdGFibGUtbG9hZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS1kYXRhLWxvYWRlci90YWJsZS1kYXRhLWxvYWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvdHctb3ZlcmxheS1jb250YWluZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2ltdWxhdG9yL3NpbXVsYXRvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uc29sZS1hbGVydC9jb25zb2xlLWFsZXJ0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9haS1kZWJ1Zy1hbGVydC9haS1kZWJ1Zy1hbGVydC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmV0d29yay1yZXF1ZXN0L25ldHdvcmstcmVxdWVzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcnVuLWhpc3RvcnktY2FyZC9ydW4taGlzdG9yeS1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92aXN1YWwtZGlmZmVyZW5jZS1tb2RhbC92aXN1YWwtZGlmZmVyZW5jZS1tb2RhbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uZmlndXJhdGlvbi1jYXJkL2NvbmZpZ3VyYXRpb24tY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcGFyZS1ydW5zL2NvbXBhcmUtcnVucy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaXRlcmF0aW9ucy1sb29wL2l0ZXJhdGlvbnMtbG9vcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmFpbGVkLXN0ZXAtY2FyZC9mYWlsZWQtc3RlcC1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jdXN0b20taW5wdXQvY3VzdG9tLWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jdXN0b20tdGV4dGFyZWEvY3VzdG9tLXRleHRhcmVhLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2RlLWVkaXRvci9jb2RlLWVkaXRvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY3VzdG9tLXRvZ2dsZS9jdXN0b20tdG9nZ2xlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL2Jhc2ljLXN0ZXAvYmFzaWMtc3RlcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXhlY3V0aW9uLXNjcmVlbi9zdGVwLWdyb3VwL3N0ZXAtZ3JvdXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4ZWN1dGlvbi1zY3JlZW4vbG9vcC1zdGVwL2xvb3Atc3RlcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXhlY3V0aW9uLXNjcmVlbi9jb25kaXRpb24tc3RlcC9jb25kaXRpb24tc3RlcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXhlY3V0aW9uLXNjcmVlbi9jb25kaXRpb24tZGVidWctc3RlcC9jb25kaXRpb24tZGVidWctc3RlcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXhlY3V0aW9uLXNjcmVlbi9jb25kaXRpb24tZGVidWctc3RlcC9jb25kaXRpb24tYnJhbmNoLWVkaXRvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXhlY3V0aW9uLXNjcmVlbi9mYWlsZWQtc3RlcC9mYWlsZWQtc3RlcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXhlY3V0aW9uLXNjcmVlbi91cGRhdGVkLWZhaWxlZC1zdGVwL3VwZGF0ZWQtZmFpbGVkLXN0ZXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4ZWN1dGlvbi1zY3JlZW4vdmlldy1tb3JlLWZhaWxlZC1zdGVwLWJ1dHRvbi92aWV3LW1vcmUtZmFpbGVkLXN0ZXAtYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL3NlbGYtaGVhbC1hbmFseXNpcy9zZWxmLWhlYWwtYW5hbHlzaXMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4ZWN1dGlvbi1zY3JlZW4vYWktYWdlbnQtc3RlcC9haS1hZ2VudC1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL2FpLWFjdGlvbi1zdGVwL2FpLWFjdGlvbi1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL2FwaS1zdGVwL2FwaS1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL2ZpbGUtZG93bmxvYWQtc3RlcC9maWxlLWRvd25sb2FkLXN0ZXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4ZWN1dGlvbi1zY3JlZW4vZG9jdW1lbnQtdmVyaWZpY2F0aW9uLXN0ZXAvZG9jdW1lbnQtdmVyaWZpY2F0aW9uLXN0ZXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4ZWN1dGlvbi1zY3JlZW4vbGl2ZS1leGVjdXRpb24tc3RlcC9saXZlLWV4ZWN1dGlvbi1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL2FpLWxvZ3Mtd2l0aC1yZWFzb25pbmcvYWktbG9ncy13aXRoLXJlYXNvbmluZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXhlY3V0aW9uLXNjcmVlbi9tYWluLXN0ZXAtY29sbGFwc2UvbWFpbi1zdGVwLWNvbGxhcHNlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL3Zpc3VhbC1jb21wYXJpc29uL3Zpc3VhbC1jb21wYXJpc29uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL3N0ZXAtcmVuZGVyZXIvc3RlcC1yZW5kZXJlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWktcmVhc29uaW5nL2FpLXJlYXNvbmluZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXhlY3V0aW9uLXJlc3VsdC1tb2RhbC9leGVjdXRpb24tcmVzdWx0LW1vZGFsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL3Nlc3Npb24tY2hhbmdlcy1tb2RhbC9zZXNzaW9uLWNoYW5nZXMtbW9kYWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Vycm9yLW1vZGFsL2Vycm9yLW1vZGFsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leHBvcnQtY29kZS1tb2RhbC9leHBvcnQtY29kZS1tb2RhbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJvZ3Jlc3MtaW5kaWNhdG9yL3Byb2dyZXNzLWluZGljYXRvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RlcC1wcm9ncmVzcy1jYXJkL3N0ZXAtcHJvZ3Jlc3MtY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RlcC1zdGF0dXMtY2FyZC9zdGVwLXN0YXR1cy1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL2RiLXZlcmlmaWNhdGlvbi1zdGVwL2RiLXZlcmlmaWNhdGlvbi1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL2RiLXF1ZXJ5LWV4ZWN1dGlvbi1pdGVtL2RiLXF1ZXJ5LWV4ZWN1dGlvbi1pdGVtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9ub3JtYWwtc3RlcC9ub3JtYWwtc3RlcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvbG9vcC1zdGVwL2xvb3Atc3RlcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvY29uZGl0aW9uLXN0ZXAvY29uZGl0aW9uLXN0ZXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3N0ZXAtZ3JvdXAvc3RlcC1ncm91cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvdGVzdC1jYXNlLWRldGFpbHMtcmVuZGVyZXIvdGVzdC1jYXNlLWRldGFpbHMtcmVuZGVyZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2FwaS1zdGVwL2FwaS1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9kYXRhYmFzZS1zdGVwL2RhdGFiYXNlLXN0ZXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2FpLWFnZW50LXN0ZXAvYWktYWdlbnQtc3RlcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvYWktdmVyaWZ5LXN0ZXAvYWktdmVyaWZ5LXN0ZXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3VwbG9hZC1zdGVwL3VwbG9hZC1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9zY3JlZW5zaG90LXN0ZXAvc2NyZWVuc2hvdC1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9zY3JvbGwtc3RlcC9zY3JvbGwtc3RlcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvdmVyaWZ5LXVybC1zdGVwL3ZlcmlmeS11cmwtc3RlcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvcmVzdG9yZS1zZXNzaW9uLXN0ZXAvcmVzdG9yZS1zZXNzaW9uLXN0ZXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2N1c3RvbS1jb2RlLXN0ZXAvY3VzdG9tLWNvZGUtc3RlcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvY3VzdG9tLWVkaXQtc3RlcC9jdXN0b20tZWRpdC1zdGVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9jdXN0b20tZWRpdC1zdGVwL2N1c3RvbS1lZGl0LXN0ZXAuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9jdXN0b20tZWRpdC1zdGVwL2N1c3RvbS1lZGl0LXN0ZXAtcmVmJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2N1c3RvbS1lZGl0LXN0ZXAvY3VzdG9tLWVkaXQtc3RlcC1kYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3N0ZXAtZGV0YWlscy1kcmF3ZXIvc3RlcC1kZXRhaWxzLWRyYXdlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvc3RlcC1kZXRhaWxzLWRyYXdlci9zdGVwLWRldGFpbHMtZHJhd2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvc3RlcC1kZXRhaWxzLWRyYXdlci9zdGVwLWRldGFpbHMtZHJhd2VyLXJlZic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9zdGVwLWRldGFpbHMtZHJhd2VyL3N0ZXAtZGV0YWlscy1kcmF3ZXItZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9zdGVwLWRldGFpbHMtZHJhd2VyL3N0ZXAtZGV0YWlscy1kcmF3ZXItZmllbGQuY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3N0ZXAtZGV0YWlscy1tb2RhbC9zdGVwLWRldGFpbHMtbW9kYWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3N0ZXAtZGV0YWlscy1tb2RhbC9zdGVwLWRldGFpbHMtbW9kYWwuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9zdGVwLWRldGFpbHMtbW9kYWwvc3RlcC1kZXRhaWxzLW1vZGFsLXJlZic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9zdGVwLWRldGFpbHMtbW9kYWwvc3RlcC1kZXRhaWxzLW1vZGFsLWRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaXRlbS1saXN0L2l0ZW0tbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaXRlbS1saXN0L2l0ZW0tbGlzdC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWRhdGEtbW9kYWwvdGVzdC1kYXRhLW1vZGFsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWRhdGEtbW9kYWwvdGVzdC1kYXRhLW1vZGFsLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvdGVzdC1kYXRhLW1vZGFsL3Rlc3QtZGF0YS1tb2RhbC1yZWYnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvdGVzdC1kYXRhLW1vZGFsL3Rlc3QtZGF0YS1tb2RhbC1kYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2NyZWF0ZS1zdGVwLWdyb3VwL2NyZWF0ZS1zdGVwLWdyb3VwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9kZWxldGUtc3RlcHMvZGVsZXRlLXN0ZXBzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9ydW4tZXhlY3V0aW9uLWFsZXJ0L3J1bi1leGVjdXRpb24tYWxlcnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2FwaS1lZGl0LXN0ZXAvYXBpLWVkaXQtc3RlcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvdGVzdC1jYXNlLXN0ZXAubW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpdmUtY29udmVyc2F0aW9uL2xpdmUtY29udmVyc2F0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLWFjdGlvbi9zdGVwLWJ1aWxkZXItYWN0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGVwLWJ1aWxkZXIvdGVtcGxhdGUtdmFyaWFibGVzLWZvcm0vdGVtcGxhdGUtdmFyaWFibGVzLWZvcm0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0ZXAtYnVpbGRlci9hZHZhbmNlZC12YXJpYWJsZXMtZm9ybS9hZHZhbmNlZC12YXJpYWJsZXMtZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RlcC1idWlsZGVyL3N0ZXAtYnVpbGRlci1sb29wL3N0ZXAtYnVpbGRlci1sb29wLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9lbGVtZW50LXBvcHVwL2VsZW1lbnQtcG9wdXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2VsZW1lbnQtcG9wdXAvZWxlbWVudC1mb3JtL2VsZW1lbnQtZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvZWxlbWVudC1wb3B1cC9lbGVtZW50LXBvcHVwLXJlZic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9lbGVtZW50LXBvcHVwL2VsZW1lbnQtcG9wdXAtZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9lbGVtZW50LXBvcHVwL2VsZW1lbnQtcG9wdXAtZm9ybS1kYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2VsZW1lbnQtcG9wdXAvZWxlbWVudC1wb3B1cC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0ZXAtYnVpbGRlci9zdGVwLWJ1aWxkZXItY29uZGl0aW9uL3N0ZXAtYnVpbGRlci1jb25kaXRpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0ZXAtYnVpbGRlci9zdGVwLWJ1aWxkZXItZGF0YWJhc2Uvc3RlcC1idWlsZGVyLWRhdGFiYXNlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLWFpLWFnZW50L3N0ZXAtYnVpbGRlci1haS1hZ2VudC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvZWxlbWVudC1saXN0L2VsZW1lbnQtbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RlcC1idWlsZGVyL3N0ZXAtYnVpbGRlci1kb2N1bWVudC9zdGVwLWJ1aWxkZXItZG9jdW1lbnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0ZXAtYnVpbGRlci9zdGVwLWJ1aWxkZXItY3VzdG9tLWNvZGUvc3RlcC1idWlsZGVyLWN1c3RvbS1jb2RlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLXJlY29yZC1zdGVwL3N0ZXAtYnVpbGRlci1yZWNvcmQtc3RlcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RlcC1idWlsZGVyL3N0ZXAtYnVpbGRlci1kb2N1bWVudC1nZW5lcmF0aW9uLXRlbXBsYXRlLXN0ZXAvc3RlcC1idWlsZGVyLWRvY3VtZW50LWdlbmVyYXRpb24tdGVtcGxhdGUtc3RlcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RldGFpbC1zaWRlLXBhbmVsL2RldGFpbC1zaWRlLXBhbmVsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kZXRhaWwtc2lkZS1wYW5lbC9kZXRhaWwtc2lkZS1wYW5lbC5tb2RlbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGV0YWlsLWRyYXdlci9kZXRhaWwtZHJhd2VyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kZXRhaWwtZHJhd2VyL2RldGFpbC1kcmF3ZXItdGFiL2RldGFpbC1kcmF3ZXItdGFiLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kZXRhaWwtZHJhd2VyL2RldGFpbC1kcmF3ZXItdGFiLWNvbnRlbnQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3Rlc3QtY2FzZS1kZXRhaWxzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWNhc2UtZGV0YWlscy5tb2RlbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVzdC1jYXNlLWRldGFpbHMvdGVzdC1jYXNlLWRldGFpbHMtZWRpdC90ZXN0LWNhc2UtZGV0YWlscy1lZGl0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLWdyb3VwL3N0ZXAtYnVpbGRlci1ncm91cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXhlY3V0aW9uLXNjcmVlbi9qdW1wLXRvLXN0ZXAtbW9kYWwvanVtcC10by1zdGVwLW1vZGFsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL2JyZWFrcG9pbnRzLW1vZGFsL2JyZWFrcG9pbnRzLW1vZGFsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGVjdXRpb24tc2NyZWVuL3JlY29yZGluZy1iYW5uZXIvcmVjb3JkaW5nLWJhbm5lci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXhlY3V0aW9uLXNjcmVlbi9yZXZpZXctcmVjb3JkZWQtc3RlcHMtbW9kYWwvcmV2aWV3LXJlY29yZGVkLXN0ZXBzLW1vZGFsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9xdWVzdGlvbm5haXJlLWxpc3QvcXVlc3Rpb25uYWlyZS1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9xdWVzdGlvbm5haXJlLWxpc3QvcXVlc3Rpb25uYWlyZS1saXN0LnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYW5nZS1oaXN0b3J5L2NoYW5nZS1oaXN0b3J5LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGFuZ2UtaGlzdG9yeS9jaGFuZ2UtaGlzdG9yeS50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXNoYm9hcmRzL3dvcmtzcGFjZS1zZWxlY3Rvci93b3Jrc3BhY2Utc2VsZWN0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Rhc2hib2FyZHMvd29ya3NwYWNlLXNlbGVjdG9yL3dvcmtzcGFjZS1zZWxlY3Rvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmVyc2lvbi1oaXN0b3J5L3ZlcnNpb24taGlzdG9yeS1saXN0L3ZlcnNpb24taGlzdG9yeS1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92ZXJzaW9uLWhpc3RvcnkvdmVyc2lvbi1oaXN0b3J5LWNvbXBhcmUvdmVyc2lvbi1oaXN0b3J5LWNvbXBhcmUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZlcnNpb24taGlzdG9yeS92ZXJzaW9uLWhpc3RvcnktZGV0YWlsL3ZlcnNpb24taGlzdG9yeS1kZXRhaWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZlcnNpb24taGlzdG9yeS92ZXJzaW9uLWhpc3RvcnktcmVzdG9yZS1jb25maXJtL3ZlcnNpb24taGlzdG9yeS1yZXN0b3JlLWNvbmZpcm0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZlcnNpb24taGlzdG9yeS9uZXctdmVyc2lvbi1oaXN0b3J5LWRldGFpbC9uZXctdmVyc2lvbi1oaXN0b3J5LWRldGFpbC5jb21wb25lbnQnO1xuIl19