@cqa-lib/cqa-ui 1.1.418 → 1.1.420

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.
@@ -11,6 +11,7 @@ export class SessionChangesModalComponent {
11
11
  this.deletedSteps = [];
12
12
  this.saveButtonLabel = 'Save to Test Case';
13
13
  this.saveButtonDisabled = false;
14
+ this.executionInProgress = false;
14
15
  this.commitMessageTemplate = 'This will commit all {{count}} changes to the test case';
15
16
  this.closeModal = new EventEmitter();
16
17
  this.saveToTestCase = new EventEmitter();
@@ -33,8 +34,16 @@ export class SessionChangesModalComponent {
33
34
  onClose() {
34
35
  this.closeModal.emit();
35
36
  }
37
+ get isSaveDisabled() {
38
+ return this.saveButtonDisabled || this.executionInProgress || this.totalChangesCount === 0;
39
+ }
40
+ get saveButtonTooltip() {
41
+ if (this.executionInProgress)
42
+ return 'Button will be enabled after execution is complete';
43
+ return '';
44
+ }
36
45
  onSave() {
37
- if (!this.saveButtonDisabled) {
46
+ if (!this.isSaveDisabled) {
38
47
  this.saveToTestCase.emit();
39
48
  }
40
49
  }
@@ -53,10 +62,10 @@ export class SessionChangesModalComponent {
53
62
  }
54
63
  }
55
64
  SessionChangesModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SessionChangesModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
56
- SessionChangesModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: SessionChangesModalComponent, selector: "cqa-session-changes-modal", inputs: { isOpen: "isOpen", title: "title", addedSteps: "addedSteps", editedSteps: "editedSteps", deletedSteps: "deletedSteps", saveButtonLabel: "saveButtonLabel", saveButtonDisabled: "saveButtonDisabled", commitMessageTemplate: "commitMessageTemplate" }, outputs: { closeModal: "closeModal", saveToTestCase: "saveToTestCase", removeStep: "removeStep" }, host: { listeners: { "document:keydown.escape": "onEscape()" }, classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div\n *ngIf=\"isOpen\"\n class=\"session-changes-modal-backdrop cqa-fixed cqa-inset-0 cqa-bg-black cqa-bg-opacity-50 cqa-z-50 cqa-flex cqa-items-center cqa-justify-center cqa-p-4\"\n (click)=\"onBackdropClick($event)\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"'session-changes-title'\"\n [attr.aria-describedby]=\"'session-changes-content'\">\n <div\n class=\"cqa-rounded-[12px] cqa-bg-white cqa-shadow-xl cqa-w-full cqa-max-w-[500px] cqa-overflow-hidden cqa-flex cqa-flex-col cqa-max-h-[90vh] cqa-font-inter\"\n style=\"box-shadow: 0px 8px 8px -4px rgba(16, 24, 40, 0.08);\"\n (click)=\"$event.stopPropagation()\">\n <!-- Header -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-px-6 cqa-pt-6 cqa-pb-4 cqa-border-b cqa-border-[#E5E7EB]\">\n <h2\n id=\"session-changes-title\"\n class=\"cqa-text-[18px] cqa-font-semibold cqa-leading-[28px] cqa-text-[#333333] cqa-m-0\">\n {{ title }}\n </h2>\n <cqa-button\n type=\"button\"\n variant=\"text\"\n btnSize=\"md\"\n icon=\"close\"\n iconColor=\"#4A5565\"\n [tooltip]=\"'Close modal'\"\n tooltipPosition=\"below\"\n customClass=\"!cqa-min-w-0 cqa-p-1\"\n (clicked)=\"onClose()\">\n </cqa-button>\n </div>\n\n <!-- Content -->\n <div id=\"session-changes-content\" class=\"cqa-flex-1 cqa-overflow-y-auto cqa-px-6 cqa-py-4 cqa-flex cqa-flex-col cqa-gap-6\" style=\"scrollbar-width: thin;\">\n <!-- Added Steps -->\n <section\n *ngIf=\"addedSteps?.length\"\n class=\"cqa-flex cqa-flex-col cqa-gap-3\"\n aria-labelledby=\"added-steps-heading\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-5 cqa-h-5\" aria-hidden=\"true\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 2V12M2 7H12\" stroke=\"#22C55E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </span>\n <h3 id=\"added-steps-heading\" class=\"cqa-text-[14px] cqa-leading-[20px] cqa-m-0\" textColor=\"#0A0A0A\">\n Added Steps\n </h3>\n <span\n class=\"cqa-inline-flex cqa-items-center cqa-justify-center cqa-py-0.5 cqa-px-2 cqa-rounded-full cqa-text-[12px] cqa-font-medium cqa-leading-[16px]\"\n style=\"background-color: #E5E7EB; color: #6B7280;\">\n {{ addedSteps.length }}\n </span>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div\n *ngFor=\"let step of addedSteps; trackBy: trackByStepId\"\n class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-rounded-[8px] cqa-p-3 cqa-bg-[#F9FAFB] cqa-border cqa-border-[#E5E7EB]\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#0A0A0A] cqa-m-0\" style=\"word-break: break-word;\">\n {{ step.stepDescription }}\n </p>\n <p class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-[#6B7280] cqa-mt-1 cqa-m-0\">\n {{ step.timestamp }}\n </p>\n </div>\n <cqa-button\n type=\"button\"\n variant=\"text\"\n btnSize=\"md\"\n icon=\"delete_outline\"\n iconColor=\"#99999E\"\n [tooltip]=\"'Remove step: ' + step.stepDescription\"\n tooltipPosition=\"below\"\n customClass=\"cqa-shrink-0\"\n (clicked)=\"onRemoveStep(step, $event)\">\n </cqa-button>\n </div>\n </div>\n </section>\n\n <!-- Edited Steps -->\n <section\n *ngIf=\"editedSteps?.length\"\n class=\"cqa-flex cqa-flex-col cqa-gap-3\"\n aria-labelledby=\"edited-steps-heading\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-5 cqa-h-5\" aria-hidden=\"true\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8.5 2L12 5.5L5 12.5L1 13L2 9L8.5 2Z\" stroke=\"#F59E0B\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </span>\n <h3 id=\"edited-steps-heading\" class=\"cqa-text-[14px] cqa-leading-[20px] cqa-m-0\" cqa-text-color=\"#0A0A0A\">\n Edited Steps\n </h3>\n <span\n class=\"cqa-inline-flex cqa-items-center cqa-justify-center cqa-py-0.5 cqa-px-2 cqa-rounded-full cqa-text-[12px] cqa-font-medium cqa-leading-[16px]\"\n style=\"background-color: #E5E7EB; color: #6B7280;\">\n {{ editedSteps.length }}\n </span>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div\n *ngFor=\"let step of editedSteps; trackBy: trackByStepId\"\n class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-rounded-[8px] cqa-p-3 cqa-bg-[#F9FAFB] cqa-border cqa-border-[#E5E7EB]\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#0A0A0A] cqa-m-0\" style=\"word-break: break-word;\">\n {{ step.stepDescription }}\n </p>\n <p class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-[#6B7280] cqa-mt-1 cqa-m-0\">\n {{ step.timestamp }}\n </p>\n </div>\n <cqa-button\n type=\"button\"\n variant=\"text\"\n btnSize=\"md\"\n icon=\"delete_outline\"\n iconColor=\"#99999E\"\n [tooltip]=\"'Remove step: ' + step.stepDescription\"\n tooltipPosition=\"below\"\n customClass=\"cqa-shrink-0\"\n (clicked)=\"onRemoveStep(step, $event)\">\n </cqa-button>\n </div>\n </div>\n </section>\n\n <!-- Deleted Steps -->\n <section\n *ngIf=\"deletedSteps?.length\"\n class=\"cqa-flex cqa-flex-col cqa-gap-3\"\n aria-labelledby=\"deleted-steps-heading\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-5 cqa-h-5\" aria-hidden=\"true\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 7H12\" stroke=\"#EF4444\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </span>\n <h3 id=\"deleted-steps-heading\" class=\"cqa-text-[14px] cqa-leading-[20px] cqa-m-0\" textColor=\"#0A0A0A\">\n Deleted Steps\n </h3>\n <span\n class=\"cqa-inline-flex cqa-items-center cqa-justify-center cqa-py-0.5 cqa-px-2 cqa-rounded-full cqa-text-[12px] cqa-font-medium cqa-leading-[16px]\"\n style=\"background-color: #E5E7EB; color: #6B7280;\">\n {{ deletedSteps.length }}\n </span>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div\n *ngFor=\"let step of deletedSteps; trackBy: trackByStepId\"\n class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-rounded-[8px] cqa-p-3 cqa-bg-[#F9FAFB] cqa-border cqa-border-[#E5E7EB]\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#0A0A0A] cqa-m-0\" style=\"word-break: break-word;\">\n {{ step.stepDescription }}\n </p>\n <p class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-[#6B7280] cqa-mt-1 cqa-m-0\">\n {{ step.timestamp }}\n </p>\n </div>\n <cqa-button\n type=\"button\"\n variant=\"text\"\n btnSize=\"md\"\n icon=\"delete_outline\"\n iconColor=\"#99999E\"\n [tooltip]=\"'Remove step: ' + step.stepDescription\"\n tooltipPosition=\"below\"\n customClass=\"cqa-shrink-0\"\n (clicked)=\"onRemoveStep(step, $event)\">\n </cqa-button>\n </div>\n </div>\n </section>\n\n <!-- Empty state -->\n <p *ngIf=\"!addedSteps?.length && !editedSteps?.length && !deletedSteps?.length\" class=\"cqa-text-[14px] cqa-text-[#6B7280] cqa-m-0\">\n No session changes to display.\n </p>\n </div>\n\n <!-- Footer -->\n <div class=\"cqa-px-6 cqa-pb-6 cqa-pt-2 cqa-border-t cqa-border-[#E5E7EB]\">\n <div\n *ngIf=\"totalChangesCount > 0\"\n class=\"cqa-w-full cqa-rounded-[12px] cqa-bg-[#FCD9D9] cqa-px-3 cqa-py-[17px] cqa-mb-4\" style=\"border: 1px solid #F47F7F\">\n <div class=\"cqa-flex cqa-gap-1\">\n <span class=\"cqa-shrink-0 cqa-flex cqa-items-start cqa-mt-0.5\" aria-hidden=\"true\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <g clip-path=\"url(#clip0_4369_21268)\">\n <path d=\"M8 14.5C11.5899 14.5 14.5 11.5899 14.5 8C14.5 4.41015 11.5899 1.5 8 1.5C4.41015 1.5 1.5 4.41015 1.5 8C1.5 11.5899 4.41015 14.5 8 14.5Z\" stroke=\"#EE3F3F\" stroke-width=\"1.5\"/>\n <path d=\"M8 4.66699V8.00032\" stroke=\"#EE3F3F\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <path d=\"M8 10.667H8.00667\" stroke=\"#EE3F3F\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_4369_21268\">\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n </span>\n <div class=\"cqa-min-w-0\">\n <p class=\"cqa-text-[14px] cqa-font-semibold cqa-text-[#9F2A2A] cqa-m-0\">\n This action cannot be undone\n </p>\n <p class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-[#9F2A2A] cqa-mt-1 cqa-m-0\">\n The original test case will be permanently overwritten with your changes.\n </p>\n </div>\n </div>\n </div>\n <cqa-button\n [text]=\"saveButtonLabel\"\n variant=\"filled\"\n btnSize=\"lg\"\n [fullWidth]=\"true\"\n [disabled]=\"saveButtonDisabled || totalChangesCount === 0\"\n [attr.aria-disabled]=\"saveButtonDisabled || totalChangesCount === 0\"\n (clicked)=\"onSave()\"\n [inlineStyles]=\"'background-color: #4F46E5; border-color: #4F46E5; color: #FFFFFF;'\">\n </cqa-button>\n <p *ngIf=\"totalChangesCount > 0\" class=\"cqa-text-[10px] cqa-leading-[16px] cqa-text-[#414146] cqa-mt-2 cqa-mb-0 cqa-text-center\">\n {{ commitMessage }}\n </p>\n </div>\n </div>\n</div>\n", components: [{ type: i1.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
65
+ SessionChangesModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: SessionChangesModalComponent, selector: "cqa-session-changes-modal", inputs: { isOpen: "isOpen", title: "title", addedSteps: "addedSteps", editedSteps: "editedSteps", deletedSteps: "deletedSteps", saveButtonLabel: "saveButtonLabel", saveButtonDisabled: "saveButtonDisabled", executionInProgress: "executionInProgress", commitMessageTemplate: "commitMessageTemplate" }, outputs: { closeModal: "closeModal", saveToTestCase: "saveToTestCase", removeStep: "removeStep" }, host: { listeners: { "document:keydown.escape": "onEscape()" }, classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div\n *ngIf=\"isOpen\"\n class=\"session-changes-modal-backdrop cqa-fixed cqa-inset-0 cqa-bg-black cqa-bg-opacity-50 cqa-z-50 cqa-flex cqa-items-center cqa-justify-center cqa-p-4\"\n (click)=\"onBackdropClick($event)\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"'session-changes-title'\"\n [attr.aria-describedby]=\"'session-changes-content'\">\n <div\n class=\"cqa-rounded-[12px] cqa-bg-white cqa-shadow-xl cqa-w-full cqa-max-w-[500px] cqa-overflow-hidden cqa-flex cqa-flex-col cqa-max-h-[90vh] cqa-font-inter\"\n style=\"box-shadow: 0px 8px 8px -4px rgba(16, 24, 40, 0.08);\"\n (click)=\"$event.stopPropagation()\">\n <!-- Header -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-px-6 cqa-pt-6 cqa-pb-4 cqa-border-b cqa-border-[#E5E7EB]\">\n <h2\n id=\"session-changes-title\"\n class=\"cqa-text-[18px] cqa-font-semibold cqa-leading-[28px] cqa-text-[#333333] cqa-m-0\">\n {{ title }}\n </h2>\n <cqa-button\n type=\"button\"\n variant=\"text\"\n btnSize=\"md\"\n icon=\"close\"\n iconColor=\"#4A5565\"\n [tooltip]=\"'Close modal'\"\n tooltipPosition=\"below\"\n customClass=\"!cqa-min-w-0 cqa-p-1\"\n (clicked)=\"onClose()\">\n </cqa-button>\n </div>\n\n <!-- Content -->\n <div id=\"session-changes-content\" class=\"cqa-flex-1 cqa-overflow-y-auto cqa-px-6 cqa-py-4 cqa-flex cqa-flex-col cqa-gap-6\" style=\"scrollbar-width: thin;\">\n <!-- Added Steps -->\n <section\n *ngIf=\"addedSteps?.length\"\n class=\"cqa-flex cqa-flex-col cqa-gap-3\"\n aria-labelledby=\"added-steps-heading\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-5 cqa-h-5\" aria-hidden=\"true\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 2V12M2 7H12\" stroke=\"#22C55E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </span>\n <h3 id=\"added-steps-heading\" class=\"cqa-text-[14px] cqa-leading-[20px] cqa-m-0\" textColor=\"#0A0A0A\">\n Added Steps\n </h3>\n <span\n class=\"cqa-inline-flex cqa-items-center cqa-justify-center cqa-py-0.5 cqa-px-2 cqa-rounded-full cqa-text-[12px] cqa-font-medium cqa-leading-[16px]\"\n style=\"background-color: #E5E7EB; color: #6B7280;\">\n {{ addedSteps.length }}\n </span>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div\n *ngFor=\"let step of addedSteps; trackBy: trackByStepId\"\n class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-rounded-[8px] cqa-p-3 cqa-bg-[#F9FAFB] cqa-border cqa-border-[#E5E7EB]\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#0A0A0A] cqa-m-0\" style=\"word-break: break-word;\">\n <span *ngIf=\"step.stepNumber\" class=\"cqa-font-semibold\">{{ step.stepNumber }}.</span>\n {{ step.stepDescription }}\n </p>\n <p class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-[#6B7280] cqa-mt-1 cqa-m-0\">\n {{ step.timestamp }}\n </p>\n </div>\n <cqa-button\n type=\"button\"\n variant=\"text\"\n btnSize=\"md\"\n icon=\"delete_outline\"\n iconColor=\"#99999E\"\n [tooltip]=\"'Remove step: ' + step.stepDescription\"\n tooltipPosition=\"below\"\n customClass=\"cqa-shrink-0\"\n (clicked)=\"onRemoveStep(step, $event)\">\n </cqa-button>\n </div>\n </div>\n </section>\n\n <!-- Edited Steps -->\n <section\n *ngIf=\"editedSteps?.length\"\n class=\"cqa-flex cqa-flex-col cqa-gap-3\"\n aria-labelledby=\"edited-steps-heading\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-5 cqa-h-5\" aria-hidden=\"true\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8.5 2L12 5.5L5 12.5L1 13L2 9L8.5 2Z\" stroke=\"#F59E0B\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </span>\n <h3 id=\"edited-steps-heading\" class=\"cqa-text-[14px] cqa-leading-[20px] cqa-m-0\" cqa-text-color=\"#0A0A0A\">\n Edited Steps\n </h3>\n <span\n class=\"cqa-inline-flex cqa-items-center cqa-justify-center cqa-py-0.5 cqa-px-2 cqa-rounded-full cqa-text-[12px] cqa-font-medium cqa-leading-[16px]\"\n style=\"background-color: #E5E7EB; color: #6B7280;\">\n {{ editedSteps.length }}\n </span>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div\n *ngFor=\"let step of editedSteps; trackBy: trackByStepId\"\n class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-rounded-[8px] cqa-p-3 cqa-bg-[#F9FAFB] cqa-border cqa-border-[#E5E7EB]\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#0A0A0A] cqa-m-0\" style=\"word-break: break-word;\">\n <span *ngIf=\"step.stepNumber\" class=\"cqa-font-semibold\">{{ step.stepNumber }}.</span>\n {{ step.stepDescription }}\n </p>\n <p class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-[#6B7280] cqa-mt-1 cqa-m-0\">\n {{ step.timestamp }}\n </p>\n </div>\n <cqa-button\n type=\"button\"\n variant=\"text\"\n btnSize=\"md\"\n icon=\"delete_outline\"\n iconColor=\"#99999E\"\n [tooltip]=\"'Remove step: ' + step.stepDescription\"\n tooltipPosition=\"below\"\n customClass=\"cqa-shrink-0\"\n (clicked)=\"onRemoveStep(step, $event)\">\n </cqa-button>\n </div>\n </div>\n </section>\n\n <!-- Deleted Steps -->\n <section\n *ngIf=\"deletedSteps?.length\"\n class=\"cqa-flex cqa-flex-col cqa-gap-3\"\n aria-labelledby=\"deleted-steps-heading\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-5 cqa-h-5\" aria-hidden=\"true\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 7H12\" stroke=\"#EF4444\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </span>\n <h3 id=\"deleted-steps-heading\" class=\"cqa-text-[14px] cqa-leading-[20px] cqa-m-0\" textColor=\"#0A0A0A\">\n Deleted Steps\n </h3>\n <span\n class=\"cqa-inline-flex cqa-items-center cqa-justify-center cqa-py-0.5 cqa-px-2 cqa-rounded-full cqa-text-[12px] cqa-font-medium cqa-leading-[16px]\"\n style=\"background-color: #E5E7EB; color: #6B7280;\">\n {{ deletedSteps.length }}\n </span>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div\n *ngFor=\"let step of deletedSteps; trackBy: trackByStepId\"\n class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-rounded-[8px] cqa-p-3 cqa-bg-[#F9FAFB] cqa-border cqa-border-[#E5E7EB]\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#0A0A0A] cqa-m-0\" style=\"word-break: break-word;\">\n <span *ngIf=\"step.stepNumber\" class=\"cqa-font-semibold\">{{ step.stepNumber }}.</span>\n {{ step.stepDescription }}\n </p>\n <p class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-[#6B7280] cqa-mt-1 cqa-m-0\">\n {{ step.timestamp }}\n </p>\n </div>\n <cqa-button\n type=\"button\"\n variant=\"text\"\n btnSize=\"md\"\n icon=\"delete_outline\"\n iconColor=\"#99999E\"\n [tooltip]=\"'Remove step: ' + step.stepDescription\"\n tooltipPosition=\"below\"\n customClass=\"cqa-shrink-0\"\n (clicked)=\"onRemoveStep(step, $event)\">\n </cqa-button>\n </div>\n </div>\n </section>\n\n <!-- Empty state -->\n <p *ngIf=\"!addedSteps?.length && !editedSteps?.length && !deletedSteps?.length\" class=\"cqa-text-[14px] cqa-text-[#6B7280] cqa-m-0\">\n No session changes to display.\n </p>\n </div>\n\n <!-- Footer -->\n <div class=\"cqa-px-6 cqa-pb-6 cqa-pt-2 cqa-border-t cqa-border-[#E5E7EB]\">\n <div\n *ngIf=\"totalChangesCount > 0\"\n class=\"cqa-w-full cqa-rounded-[12px] cqa-bg-[#FCD9D9] cqa-px-3 cqa-py-[17px] cqa-mb-4\" style=\"border: 1px solid #F47F7F\">\n <div class=\"cqa-flex cqa-gap-1\">\n <span class=\"cqa-shrink-0 cqa-flex cqa-items-start cqa-mt-0.5\" aria-hidden=\"true\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <g clip-path=\"url(#clip0_4369_21268)\">\n <path d=\"M8 14.5C11.5899 14.5 14.5 11.5899 14.5 8C14.5 4.41015 11.5899 1.5 8 1.5C4.41015 1.5 1.5 4.41015 1.5 8C1.5 11.5899 4.41015 14.5 8 14.5Z\" stroke=\"#EE3F3F\" stroke-width=\"1.5\"/>\n <path d=\"M8 4.66699V8.00032\" stroke=\"#EE3F3F\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <path d=\"M8 10.667H8.00667\" stroke=\"#EE3F3F\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_4369_21268\">\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n </span>\n <div class=\"cqa-min-w-0\">\n <p class=\"cqa-text-[14px] cqa-font-semibold cqa-text-[#9F2A2A] cqa-m-0\">\n This action cannot be undone\n </p>\n <p class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-[#9F2A2A] cqa-mt-1 cqa-m-0\">\n The original test case will be permanently overwritten with your changes.\n </p>\n </div>\n </div>\n </div>\n <cqa-button\n [text]=\"saveButtonLabel\"\n variant=\"filled\"\n btnSize=\"lg\"\n [fullWidth]=\"true\"\n [disabled]=\"isSaveDisabled\"\n [attr.aria-disabled]=\"isSaveDisabled\"\n [tooltip]=\"saveButtonTooltip\"\n tooltipPosition=\"above\"\n (clicked)=\"onSave()\"\n [inlineStyles]=\"'background-color: #4F46E5; border-color: #4F46E5; color: #FFFFFF;'\">\n </cqa-button>\n <p *ngIf=\"totalChangesCount > 0\" class=\"cqa-text-[10px] cqa-leading-[16px] cqa-text-[#414146] cqa-mt-2 cqa-mb-0 cqa-text-center\">\n {{ commitMessage }}\n </p>\n </div>\n </div>\n</div>\n", components: [{ type: i1.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
57
66
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SessionChangesModalComponent, decorators: [{
58
67
  type: Component,
59
- args: [{ selector: 'cqa-session-changes-modal', host: { class: 'cqa-ui-root' }, template: "<div\n *ngIf=\"isOpen\"\n class=\"session-changes-modal-backdrop cqa-fixed cqa-inset-0 cqa-bg-black cqa-bg-opacity-50 cqa-z-50 cqa-flex cqa-items-center cqa-justify-center cqa-p-4\"\n (click)=\"onBackdropClick($event)\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"'session-changes-title'\"\n [attr.aria-describedby]=\"'session-changes-content'\">\n <div\n class=\"cqa-rounded-[12px] cqa-bg-white cqa-shadow-xl cqa-w-full cqa-max-w-[500px] cqa-overflow-hidden cqa-flex cqa-flex-col cqa-max-h-[90vh] cqa-font-inter\"\n style=\"box-shadow: 0px 8px 8px -4px rgba(16, 24, 40, 0.08);\"\n (click)=\"$event.stopPropagation()\">\n <!-- Header -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-px-6 cqa-pt-6 cqa-pb-4 cqa-border-b cqa-border-[#E5E7EB]\">\n <h2\n id=\"session-changes-title\"\n class=\"cqa-text-[18px] cqa-font-semibold cqa-leading-[28px] cqa-text-[#333333] cqa-m-0\">\n {{ title }}\n </h2>\n <cqa-button\n type=\"button\"\n variant=\"text\"\n btnSize=\"md\"\n icon=\"close\"\n iconColor=\"#4A5565\"\n [tooltip]=\"'Close modal'\"\n tooltipPosition=\"below\"\n customClass=\"!cqa-min-w-0 cqa-p-1\"\n (clicked)=\"onClose()\">\n </cqa-button>\n </div>\n\n <!-- Content -->\n <div id=\"session-changes-content\" class=\"cqa-flex-1 cqa-overflow-y-auto cqa-px-6 cqa-py-4 cqa-flex cqa-flex-col cqa-gap-6\" style=\"scrollbar-width: thin;\">\n <!-- Added Steps -->\n <section\n *ngIf=\"addedSteps?.length\"\n class=\"cqa-flex cqa-flex-col cqa-gap-3\"\n aria-labelledby=\"added-steps-heading\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-5 cqa-h-5\" aria-hidden=\"true\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 2V12M2 7H12\" stroke=\"#22C55E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </span>\n <h3 id=\"added-steps-heading\" class=\"cqa-text-[14px] cqa-leading-[20px] cqa-m-0\" textColor=\"#0A0A0A\">\n Added Steps\n </h3>\n <span\n class=\"cqa-inline-flex cqa-items-center cqa-justify-center cqa-py-0.5 cqa-px-2 cqa-rounded-full cqa-text-[12px] cqa-font-medium cqa-leading-[16px]\"\n style=\"background-color: #E5E7EB; color: #6B7280;\">\n {{ addedSteps.length }}\n </span>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div\n *ngFor=\"let step of addedSteps; trackBy: trackByStepId\"\n class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-rounded-[8px] cqa-p-3 cqa-bg-[#F9FAFB] cqa-border cqa-border-[#E5E7EB]\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#0A0A0A] cqa-m-0\" style=\"word-break: break-word;\">\n {{ step.stepDescription }}\n </p>\n <p class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-[#6B7280] cqa-mt-1 cqa-m-0\">\n {{ step.timestamp }}\n </p>\n </div>\n <cqa-button\n type=\"button\"\n variant=\"text\"\n btnSize=\"md\"\n icon=\"delete_outline\"\n iconColor=\"#99999E\"\n [tooltip]=\"'Remove step: ' + step.stepDescription\"\n tooltipPosition=\"below\"\n customClass=\"cqa-shrink-0\"\n (clicked)=\"onRemoveStep(step, $event)\">\n </cqa-button>\n </div>\n </div>\n </section>\n\n <!-- Edited Steps -->\n <section\n *ngIf=\"editedSteps?.length\"\n class=\"cqa-flex cqa-flex-col cqa-gap-3\"\n aria-labelledby=\"edited-steps-heading\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-5 cqa-h-5\" aria-hidden=\"true\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8.5 2L12 5.5L5 12.5L1 13L2 9L8.5 2Z\" stroke=\"#F59E0B\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </span>\n <h3 id=\"edited-steps-heading\" class=\"cqa-text-[14px] cqa-leading-[20px] cqa-m-0\" cqa-text-color=\"#0A0A0A\">\n Edited Steps\n </h3>\n <span\n class=\"cqa-inline-flex cqa-items-center cqa-justify-center cqa-py-0.5 cqa-px-2 cqa-rounded-full cqa-text-[12px] cqa-font-medium cqa-leading-[16px]\"\n style=\"background-color: #E5E7EB; color: #6B7280;\">\n {{ editedSteps.length }}\n </span>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div\n *ngFor=\"let step of editedSteps; trackBy: trackByStepId\"\n class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-rounded-[8px] cqa-p-3 cqa-bg-[#F9FAFB] cqa-border cqa-border-[#E5E7EB]\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#0A0A0A] cqa-m-0\" style=\"word-break: break-word;\">\n {{ step.stepDescription }}\n </p>\n <p class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-[#6B7280] cqa-mt-1 cqa-m-0\">\n {{ step.timestamp }}\n </p>\n </div>\n <cqa-button\n type=\"button\"\n variant=\"text\"\n btnSize=\"md\"\n icon=\"delete_outline\"\n iconColor=\"#99999E\"\n [tooltip]=\"'Remove step: ' + step.stepDescription\"\n tooltipPosition=\"below\"\n customClass=\"cqa-shrink-0\"\n (clicked)=\"onRemoveStep(step, $event)\">\n </cqa-button>\n </div>\n </div>\n </section>\n\n <!-- Deleted Steps -->\n <section\n *ngIf=\"deletedSteps?.length\"\n class=\"cqa-flex cqa-flex-col cqa-gap-3\"\n aria-labelledby=\"deleted-steps-heading\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-5 cqa-h-5\" aria-hidden=\"true\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 7H12\" stroke=\"#EF4444\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </span>\n <h3 id=\"deleted-steps-heading\" class=\"cqa-text-[14px] cqa-leading-[20px] cqa-m-0\" textColor=\"#0A0A0A\">\n Deleted Steps\n </h3>\n <span\n class=\"cqa-inline-flex cqa-items-center cqa-justify-center cqa-py-0.5 cqa-px-2 cqa-rounded-full cqa-text-[12px] cqa-font-medium cqa-leading-[16px]\"\n style=\"background-color: #E5E7EB; color: #6B7280;\">\n {{ deletedSteps.length }}\n </span>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div\n *ngFor=\"let step of deletedSteps; trackBy: trackByStepId\"\n class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-rounded-[8px] cqa-p-3 cqa-bg-[#F9FAFB] cqa-border cqa-border-[#E5E7EB]\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#0A0A0A] cqa-m-0\" style=\"word-break: break-word;\">\n {{ step.stepDescription }}\n </p>\n <p class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-[#6B7280] cqa-mt-1 cqa-m-0\">\n {{ step.timestamp }}\n </p>\n </div>\n <cqa-button\n type=\"button\"\n variant=\"text\"\n btnSize=\"md\"\n icon=\"delete_outline\"\n iconColor=\"#99999E\"\n [tooltip]=\"'Remove step: ' + step.stepDescription\"\n tooltipPosition=\"below\"\n customClass=\"cqa-shrink-0\"\n (clicked)=\"onRemoveStep(step, $event)\">\n </cqa-button>\n </div>\n </div>\n </section>\n\n <!-- Empty state -->\n <p *ngIf=\"!addedSteps?.length && !editedSteps?.length && !deletedSteps?.length\" class=\"cqa-text-[14px] cqa-text-[#6B7280] cqa-m-0\">\n No session changes to display.\n </p>\n </div>\n\n <!-- Footer -->\n <div class=\"cqa-px-6 cqa-pb-6 cqa-pt-2 cqa-border-t cqa-border-[#E5E7EB]\">\n <div\n *ngIf=\"totalChangesCount > 0\"\n class=\"cqa-w-full cqa-rounded-[12px] cqa-bg-[#FCD9D9] cqa-px-3 cqa-py-[17px] cqa-mb-4\" style=\"border: 1px solid #F47F7F\">\n <div class=\"cqa-flex cqa-gap-1\">\n <span class=\"cqa-shrink-0 cqa-flex cqa-items-start cqa-mt-0.5\" aria-hidden=\"true\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <g clip-path=\"url(#clip0_4369_21268)\">\n <path d=\"M8 14.5C11.5899 14.5 14.5 11.5899 14.5 8C14.5 4.41015 11.5899 1.5 8 1.5C4.41015 1.5 1.5 4.41015 1.5 8C1.5 11.5899 4.41015 14.5 8 14.5Z\" stroke=\"#EE3F3F\" stroke-width=\"1.5\"/>\n <path d=\"M8 4.66699V8.00032\" stroke=\"#EE3F3F\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <path d=\"M8 10.667H8.00667\" stroke=\"#EE3F3F\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_4369_21268\">\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n </span>\n <div class=\"cqa-min-w-0\">\n <p class=\"cqa-text-[14px] cqa-font-semibold cqa-text-[#9F2A2A] cqa-m-0\">\n This action cannot be undone\n </p>\n <p class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-[#9F2A2A] cqa-mt-1 cqa-m-0\">\n The original test case will be permanently overwritten with your changes.\n </p>\n </div>\n </div>\n </div>\n <cqa-button\n [text]=\"saveButtonLabel\"\n variant=\"filled\"\n btnSize=\"lg\"\n [fullWidth]=\"true\"\n [disabled]=\"saveButtonDisabled || totalChangesCount === 0\"\n [attr.aria-disabled]=\"saveButtonDisabled || totalChangesCount === 0\"\n (clicked)=\"onSave()\"\n [inlineStyles]=\"'background-color: #4F46E5; border-color: #4F46E5; color: #FFFFFF;'\">\n </cqa-button>\n <p *ngIf=\"totalChangesCount > 0\" class=\"cqa-text-[10px] cqa-leading-[16px] cqa-text-[#414146] cqa-mt-2 cqa-mb-0 cqa-text-center\">\n {{ commitMessage }}\n </p>\n </div>\n </div>\n</div>\n", styles: [] }]
68
+ args: [{ selector: 'cqa-session-changes-modal', host: { class: 'cqa-ui-root' }, template: "<div\n *ngIf=\"isOpen\"\n class=\"session-changes-modal-backdrop cqa-fixed cqa-inset-0 cqa-bg-black cqa-bg-opacity-50 cqa-z-50 cqa-flex cqa-items-center cqa-justify-center cqa-p-4\"\n (click)=\"onBackdropClick($event)\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"'session-changes-title'\"\n [attr.aria-describedby]=\"'session-changes-content'\">\n <div\n class=\"cqa-rounded-[12px] cqa-bg-white cqa-shadow-xl cqa-w-full cqa-max-w-[500px] cqa-overflow-hidden cqa-flex cqa-flex-col cqa-max-h-[90vh] cqa-font-inter\"\n style=\"box-shadow: 0px 8px 8px -4px rgba(16, 24, 40, 0.08);\"\n (click)=\"$event.stopPropagation()\">\n <!-- Header -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-px-6 cqa-pt-6 cqa-pb-4 cqa-border-b cqa-border-[#E5E7EB]\">\n <h2\n id=\"session-changes-title\"\n class=\"cqa-text-[18px] cqa-font-semibold cqa-leading-[28px] cqa-text-[#333333] cqa-m-0\">\n {{ title }}\n </h2>\n <cqa-button\n type=\"button\"\n variant=\"text\"\n btnSize=\"md\"\n icon=\"close\"\n iconColor=\"#4A5565\"\n [tooltip]=\"'Close modal'\"\n tooltipPosition=\"below\"\n customClass=\"!cqa-min-w-0 cqa-p-1\"\n (clicked)=\"onClose()\">\n </cqa-button>\n </div>\n\n <!-- Content -->\n <div id=\"session-changes-content\" class=\"cqa-flex-1 cqa-overflow-y-auto cqa-px-6 cqa-py-4 cqa-flex cqa-flex-col cqa-gap-6\" style=\"scrollbar-width: thin;\">\n <!-- Added Steps -->\n <section\n *ngIf=\"addedSteps?.length\"\n class=\"cqa-flex cqa-flex-col cqa-gap-3\"\n aria-labelledby=\"added-steps-heading\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-5 cqa-h-5\" aria-hidden=\"true\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 2V12M2 7H12\" stroke=\"#22C55E\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </span>\n <h3 id=\"added-steps-heading\" class=\"cqa-text-[14px] cqa-leading-[20px] cqa-m-0\" textColor=\"#0A0A0A\">\n Added Steps\n </h3>\n <span\n class=\"cqa-inline-flex cqa-items-center cqa-justify-center cqa-py-0.5 cqa-px-2 cqa-rounded-full cqa-text-[12px] cqa-font-medium cqa-leading-[16px]\"\n style=\"background-color: #E5E7EB; color: #6B7280;\">\n {{ addedSteps.length }}\n </span>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div\n *ngFor=\"let step of addedSteps; trackBy: trackByStepId\"\n class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-rounded-[8px] cqa-p-3 cqa-bg-[#F9FAFB] cqa-border cqa-border-[#E5E7EB]\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#0A0A0A] cqa-m-0\" style=\"word-break: break-word;\">\n <span *ngIf=\"step.stepNumber\" class=\"cqa-font-semibold\">{{ step.stepNumber }}.</span>\n {{ step.stepDescription }}\n </p>\n <p class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-[#6B7280] cqa-mt-1 cqa-m-0\">\n {{ step.timestamp }}\n </p>\n </div>\n <cqa-button\n type=\"button\"\n variant=\"text\"\n btnSize=\"md\"\n icon=\"delete_outline\"\n iconColor=\"#99999E\"\n [tooltip]=\"'Remove step: ' + step.stepDescription\"\n tooltipPosition=\"below\"\n customClass=\"cqa-shrink-0\"\n (clicked)=\"onRemoveStep(step, $event)\">\n </cqa-button>\n </div>\n </div>\n </section>\n\n <!-- Edited Steps -->\n <section\n *ngIf=\"editedSteps?.length\"\n class=\"cqa-flex cqa-flex-col cqa-gap-3\"\n aria-labelledby=\"edited-steps-heading\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-5 cqa-h-5\" aria-hidden=\"true\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8.5 2L12 5.5L5 12.5L1 13L2 9L8.5 2Z\" stroke=\"#F59E0B\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </span>\n <h3 id=\"edited-steps-heading\" class=\"cqa-text-[14px] cqa-leading-[20px] cqa-m-0\" cqa-text-color=\"#0A0A0A\">\n Edited Steps\n </h3>\n <span\n class=\"cqa-inline-flex cqa-items-center cqa-justify-center cqa-py-0.5 cqa-px-2 cqa-rounded-full cqa-text-[12px] cqa-font-medium cqa-leading-[16px]\"\n style=\"background-color: #E5E7EB; color: #6B7280;\">\n {{ editedSteps.length }}\n </span>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div\n *ngFor=\"let step of editedSteps; trackBy: trackByStepId\"\n class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-rounded-[8px] cqa-p-3 cqa-bg-[#F9FAFB] cqa-border cqa-border-[#E5E7EB]\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#0A0A0A] cqa-m-0\" style=\"word-break: break-word;\">\n <span *ngIf=\"step.stepNumber\" class=\"cqa-font-semibold\">{{ step.stepNumber }}.</span>\n {{ step.stepDescription }}\n </p>\n <p class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-[#6B7280] cqa-mt-1 cqa-m-0\">\n {{ step.timestamp }}\n </p>\n </div>\n <cqa-button\n type=\"button\"\n variant=\"text\"\n btnSize=\"md\"\n icon=\"delete_outline\"\n iconColor=\"#99999E\"\n [tooltip]=\"'Remove step: ' + step.stepDescription\"\n tooltipPosition=\"below\"\n customClass=\"cqa-shrink-0\"\n (clicked)=\"onRemoveStep(step, $event)\">\n </cqa-button>\n </div>\n </div>\n </section>\n\n <!-- Deleted Steps -->\n <section\n *ngIf=\"deletedSteps?.length\"\n class=\"cqa-flex cqa-flex-col cqa-gap-3\"\n aria-labelledby=\"deleted-steps-heading\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-5 cqa-h-5\" aria-hidden=\"true\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 7H12\" stroke=\"#EF4444\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </span>\n <h3 id=\"deleted-steps-heading\" class=\"cqa-text-[14px] cqa-leading-[20px] cqa-m-0\" textColor=\"#0A0A0A\">\n Deleted Steps\n </h3>\n <span\n class=\"cqa-inline-flex cqa-items-center cqa-justify-center cqa-py-0.5 cqa-px-2 cqa-rounded-full cqa-text-[12px] cqa-font-medium cqa-leading-[16px]\"\n style=\"background-color: #E5E7EB; color: #6B7280;\">\n {{ deletedSteps.length }}\n </span>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div\n *ngFor=\"let step of deletedSteps; trackBy: trackByStepId\"\n class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-rounded-[8px] cqa-p-3 cqa-bg-[#F9FAFB] cqa-border cqa-border-[#E5E7EB]\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#0A0A0A] cqa-m-0\" style=\"word-break: break-word;\">\n <span *ngIf=\"step.stepNumber\" class=\"cqa-font-semibold\">{{ step.stepNumber }}.</span>\n {{ step.stepDescription }}\n </p>\n <p class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-[#6B7280] cqa-mt-1 cqa-m-0\">\n {{ step.timestamp }}\n </p>\n </div>\n <cqa-button\n type=\"button\"\n variant=\"text\"\n btnSize=\"md\"\n icon=\"delete_outline\"\n iconColor=\"#99999E\"\n [tooltip]=\"'Remove step: ' + step.stepDescription\"\n tooltipPosition=\"below\"\n customClass=\"cqa-shrink-0\"\n (clicked)=\"onRemoveStep(step, $event)\">\n </cqa-button>\n </div>\n </div>\n </section>\n\n <!-- Empty state -->\n <p *ngIf=\"!addedSteps?.length && !editedSteps?.length && !deletedSteps?.length\" class=\"cqa-text-[14px] cqa-text-[#6B7280] cqa-m-0\">\n No session changes to display.\n </p>\n </div>\n\n <!-- Footer -->\n <div class=\"cqa-px-6 cqa-pb-6 cqa-pt-2 cqa-border-t cqa-border-[#E5E7EB]\">\n <div\n *ngIf=\"totalChangesCount > 0\"\n class=\"cqa-w-full cqa-rounded-[12px] cqa-bg-[#FCD9D9] cqa-px-3 cqa-py-[17px] cqa-mb-4\" style=\"border: 1px solid #F47F7F\">\n <div class=\"cqa-flex cqa-gap-1\">\n <span class=\"cqa-shrink-0 cqa-flex cqa-items-start cqa-mt-0.5\" aria-hidden=\"true\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <g clip-path=\"url(#clip0_4369_21268)\">\n <path d=\"M8 14.5C11.5899 14.5 14.5 11.5899 14.5 8C14.5 4.41015 11.5899 1.5 8 1.5C4.41015 1.5 1.5 4.41015 1.5 8C1.5 11.5899 4.41015 14.5 8 14.5Z\" stroke=\"#EE3F3F\" stroke-width=\"1.5\"/>\n <path d=\"M8 4.66699V8.00032\" stroke=\"#EE3F3F\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <path d=\"M8 10.667H8.00667\" stroke=\"#EE3F3F\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_4369_21268\">\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n </span>\n <div class=\"cqa-min-w-0\">\n <p class=\"cqa-text-[14px] cqa-font-semibold cqa-text-[#9F2A2A] cqa-m-0\">\n This action cannot be undone\n </p>\n <p class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-[#9F2A2A] cqa-mt-1 cqa-m-0\">\n The original test case will be permanently overwritten with your changes.\n </p>\n </div>\n </div>\n </div>\n <cqa-button\n [text]=\"saveButtonLabel\"\n variant=\"filled\"\n btnSize=\"lg\"\n [fullWidth]=\"true\"\n [disabled]=\"isSaveDisabled\"\n [attr.aria-disabled]=\"isSaveDisabled\"\n [tooltip]=\"saveButtonTooltip\"\n tooltipPosition=\"above\"\n (clicked)=\"onSave()\"\n [inlineStyles]=\"'background-color: #4F46E5; border-color: #4F46E5; color: #FFFFFF;'\">\n </cqa-button>\n <p *ngIf=\"totalChangesCount > 0\" class=\"cqa-text-[10px] cqa-leading-[16px] cqa-text-[#414146] cqa-mt-2 cqa-mb-0 cqa-text-center\">\n {{ commitMessage }}\n </p>\n </div>\n </div>\n</div>\n", styles: [] }]
60
69
  }], propDecorators: { isOpen: [{
61
70
  type: Input
62
71
  }], title: [{
@@ -71,6 +80,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
71
80
  type: Input
72
81
  }], saveButtonDisabled: [{
73
82
  type: Input
83
+ }], executionInProgress: [{
84
+ type: Input
74
85
  }], commitMessageTemplate: [{
75
86
  type: Input
76
87
  }], closeModal: [{
@@ -83,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
83
94
  type: HostListener,
84
95
  args: ['document:keydown.escape']
85
96
  }] } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1jaGFuZ2VzLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9zZXNzaW9uLWNoYW5nZXMtbW9kYWwvc2Vzc2lvbi1jaGFuZ2VzLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9zZXNzaW9uLWNoYW5nZXMtbW9kYWwvc2Vzc2lvbi1jaGFuZ2VzLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBaUJyRixNQUFNLE9BQU8sNEJBQTRCO0lBTnpDO1FBT1csV0FBTSxHQUFZLEtBQUssQ0FBQztRQUN4QixVQUFLLEdBQVcsaUJBQWlCLENBQUM7UUFDbEMsZUFBVSxHQUF3QixFQUFFLENBQUM7UUFDckMsZ0JBQVcsR0FBd0IsRUFBRSxDQUFDO1FBQ3RDLGlCQUFZLEdBQXdCLEVBQUUsQ0FBQztRQUN2QyxvQkFBZSxHQUFXLG1CQUFtQixDQUFDO1FBQzlDLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUNwQywwQkFBcUIsR0FBVyx5REFBeUQsQ0FBQztRQUV6RixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN0QyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDMUMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUEyQyxDQUFDO0tBNkNwRjtJQTNDQyxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBaUI7UUFDL0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQXFCLENBQUM7UUFDM0MsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQTRCLENBQUM7UUFDekQsSUFBSSxNQUFNLEtBQUssYUFBYSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGdDQUFnQyxDQUFDLEVBQUU7WUFDM0YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUF1QixFQUFFLEtBQVk7UUFDaEQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBR0QsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNoQjtJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsTUFBYyxFQUFFLElBQXVCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNqQixDQUFDOzt5SEF4RFUsNEJBQTRCOzZHQUE1Qiw0QkFBNEIscWdCQ2pCekMsNjFWQW1PQTsyRkRsTmEsNEJBQTRCO2tCQU54QyxTQUFTOytCQUNFLDJCQUEyQixRQUcvQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7OEJBR3JCLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQW9DUCxRQUFRO3NCQURQLFlBQVk7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBTZXNzaW9uQ2hhbmdlVHlwZSA9ICdhZGRlZCcgfCAnZWRpdGVkJyB8ICdkZWxldGVkJztcblxuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uQ2hhbmdlU3RlcCB7XG4gIGlkOiBzdHJpbmc7XG4gIHN0ZXBEZXNjcmlwdGlvbjogc3RyaW5nO1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgdHlwZTogU2Vzc2lvbkNoYW5nZVR5cGU7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1zZXNzaW9uLWNoYW5nZXMtbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2Vzc2lvbi1jaGFuZ2VzLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9LFxufSlcbmV4cG9ydCBjbGFzcyBTZXNzaW9uQ2hhbmdlc01vZGFsQ29tcG9uZW50IHtcbiAgQElucHV0KCkgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSAnU2Vzc2lvbiBDaGFuZ2VzJztcbiAgQElucHV0KCkgYWRkZWRTdGVwczogU2Vzc2lvbkNoYW5nZVN0ZXBbXSA9IFtdO1xuICBASW5wdXQoKSBlZGl0ZWRTdGVwczogU2Vzc2lvbkNoYW5nZVN0ZXBbXSA9IFtdO1xuICBASW5wdXQoKSBkZWxldGVkU3RlcHM6IFNlc3Npb25DaGFuZ2VTdGVwW10gPSBbXTtcbiAgQElucHV0KCkgc2F2ZUJ1dHRvbkxhYmVsOiBzdHJpbmcgPSAnU2F2ZSB0byBUZXN0IENhc2UnO1xuICBASW5wdXQoKSBzYXZlQnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY29tbWl0TWVzc2FnZVRlbXBsYXRlOiBzdHJpbmcgPSAnVGhpcyB3aWxsIGNvbW1pdCBhbGwge3tjb3VudH19IGNoYW5nZXMgdG8gdGhlIHRlc3QgY2FzZSc7XG5cbiAgQE91dHB1dCgpIGNsb3NlTW9kYWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzYXZlVG9UZXN0Q2FzZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHJlbW92ZVN0ZXAgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaWQ6IHN0cmluZzsgdHlwZTogU2Vzc2lvbkNoYW5nZVR5cGUgfT4oKTtcblxuICBnZXQgdG90YWxDaGFuZ2VzQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuYWRkZWRTdGVwcz8ubGVuZ3RoIHx8IDApICsgKHRoaXMuZWRpdGVkU3RlcHM/Lmxlbmd0aCB8fCAwKSArICh0aGlzLmRlbGV0ZWRTdGVwcz8ubGVuZ3RoIHx8IDApO1xuICB9XG5cbiAgZ2V0IGNvbW1pdE1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb3VudCA9IHRoaXMudG90YWxDaGFuZ2VzQ291bnQ7XG4gICAgcmV0dXJuIHRoaXMuY29tbWl0TWVzc2FnZVRlbXBsYXRlLnJlcGxhY2UoL1xce1xce2NvdW50XFx9XFx9L2csIFN0cmluZyhjb3VudCkpO1xuICB9XG5cbiAgb25CYWNrZHJvcENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQgfHwgdGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnc2Vzc2lvbi1jaGFuZ2VzLW1vZGFsLWJhY2tkcm9wJykpIHtcbiAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZU1vZGFsLmVtaXQoKTtcbiAgfVxuXG4gIG9uU2F2ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2F2ZUJ1dHRvbkRpc2FibGVkKSB7XG4gICAgICB0aGlzLnNhdmVUb1Rlc3RDYXNlLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBvblJlbW92ZVN0ZXAoc3RlcDogU2Vzc2lvbkNoYW5nZVN0ZXAsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5yZW1vdmVTdGVwLmVtaXQoeyBpZDogc3RlcC5pZCwgdHlwZTogc3RlcC50eXBlIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnKVxuICBvbkVzY2FwZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHRyYWNrQnlTdGVwSWQoX2luZGV4OiBudW1iZXIsIHN0ZXA6IFNlc3Npb25DaGFuZ2VTdGVwKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3RlcC5pZDtcbiAgfVxufVxuIiwiPGRpdlxuICAqbmdJZj1cImlzT3BlblwiXG4gIGNsYXNzPVwic2Vzc2lvbi1jaGFuZ2VzLW1vZGFsLWJhY2tkcm9wIGNxYS1maXhlZCBjcWEtaW5zZXQtMCBjcWEtYmctYmxhY2sgY3FhLWJnLW9wYWNpdHktNTAgY3FhLXotNTAgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXAtNFwiXG4gIChjbGljayk9XCJvbkJhY2tkcm9wQ2xpY2soJGV2ZW50KVwiXG4gIHJvbGU9XCJkaWFsb2dcIlxuICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInc2Vzc2lvbi1jaGFuZ2VzLXRpdGxlJ1wiXG4gIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ3Nlc3Npb24tY2hhbmdlcy1jb250ZW50J1wiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjcWEtcm91bmRlZC1bMTJweF0gY3FhLWJnLXdoaXRlIGNxYS1zaGFkb3cteGwgY3FhLXctZnVsbCBjcWEtbWF4LXctWzUwMHB4XSBjcWEtb3ZlcmZsb3ctaGlkZGVuIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtbWF4LWgtWzkwdmhdIGNxYS1mb250LWludGVyXCJcbiAgICBzdHlsZT1cImJveC1zaGFkb3c6IDBweCA4cHggOHB4IC00cHggcmdiYSgxNiwgMjQsIDQwLCAwLjA4KTtcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICA8IS0tIEhlYWRlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1weC02IGNxYS1wdC02IGNxYS1wYi00IGNxYS1ib3JkZXItYiBjcWEtYm9yZGVyLVsjRTVFN0VCXVwiPlxuICAgICAgPGgyXG4gICAgICAgIGlkPVwic2Vzc2lvbi1jaGFuZ2VzLXRpdGxlXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtdGV4dC1bMThweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLWxlYWRpbmctWzI4cHhdIGNxYS10ZXh0LVsjMzMzMzMzXSBjcWEtbS0wXCI+XG4gICAgICAgIHt7IHRpdGxlIH19XG4gICAgICA8L2gyPlxuICAgICAgPGNxYS1idXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgYnRuU2l6ZT1cIm1kXCJcbiAgICAgICAgaWNvbj1cImNsb3NlXCJcbiAgICAgICAgaWNvbkNvbG9yPVwiIzRBNTU2NVwiXG4gICAgICAgIFt0b29sdGlwXT1cIidDbG9zZSBtb2RhbCdcIlxuICAgICAgICB0b29sdGlwUG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAgIGN1c3RvbUNsYXNzPVwiIWNxYS1taW4tdy0wIGNxYS1wLTFcIlxuICAgICAgICAoY2xpY2tlZCk9XCJvbkNsb3NlKClcIj5cbiAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQ29udGVudCAtLT5cbiAgICA8ZGl2IGlkPVwic2Vzc2lvbi1jaGFuZ2VzLWNvbnRlbnRcIiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLW92ZXJmbG93LXktYXV0byBjcWEtcHgtNiBjcWEtcHktNCBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC02XCIgc3R5bGU9XCJzY3JvbGxiYXItd2lkdGg6IHRoaW47XCI+XG4gICAgICA8IS0tIEFkZGVkIFN0ZXBzIC0tPlxuICAgICAgPHNlY3Rpb25cbiAgICAgICAgKm5nSWY9XCJhZGRlZFN0ZXBzPy5sZW5ndGhcIlxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTNcIlxuICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJhZGRlZC1zdGVwcy1oZWFkaW5nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXctNSBjcWEtaC01XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk03IDJWMTJNMiA3SDEyXCIgc3Ryb2tlPVwiIzIyQzU1RVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8aDMgaWQ9XCJhZGRlZC1zdGVwcy1oZWFkaW5nXCIgY2xhc3M9XCJjcWEtdGV4dC1bMTRweF0gIGNxYS1sZWFkaW5nLVsyMHB4XSBjcWEtbS0wXCIgdGV4dENvbG9yPVwiIzBBMEEwQVwiPlxuICAgICAgICAgICAgQWRkZWQgU3RlcHNcbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImNxYS1pbmxpbmUtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtcHktMC41IGNxYS1weC0yIGNxYS1yb3VuZGVkLWZ1bGwgY3FhLXRleHQtWzEycHhdIGNxYS1mb250LW1lZGl1bSBjcWEtbGVhZGluZy1bMTZweF1cIlxuICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjRTVFN0VCOyBjb2xvcjogIzZCNzI4MDtcIj5cbiAgICAgICAgICAgIHt7IGFkZGVkU3RlcHMubGVuZ3RoIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3RlcCBvZiBhZGRlZFN0ZXBzOyB0cmFja0J5OiB0cmFja0J5U3RlcElkXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTMgY3FhLXJvdW5kZWQtWzhweF0gY3FhLXAtMyBjcWEtYmctWyNGOUZBRkJdIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1bI0U1RTdFQl1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS1taW4tdy0wXCI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsyMHB4XSBjcWEtdGV4dC1bIzBBMEEwQV0gY3FhLW0tMFwiIHN0eWxlPVwid29yZC1icmVhazogYnJlYWstd29yZDtcIj5cbiAgICAgICAgICAgICAgICB7eyBzdGVwLnN0ZXBEZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XSBjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLW10LTEgY3FhLW0tMFwiPlxuICAgICAgICAgICAgICAgIHt7IHN0ZXAudGltZXN0YW1wIH19XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGNxYS1idXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgYnRuU2l6ZT1cIm1kXCJcbiAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZV9vdXRsaW5lXCJcbiAgICAgICAgICAgICAgaWNvbkNvbG9yPVwiIzk5OTk5RVwiXG4gICAgICAgICAgICAgIFt0b29sdGlwXT1cIidSZW1vdmUgc3RlcDogJyArIHN0ZXAuc3RlcERlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgICAgICAgICBjdXN0b21DbGFzcz1cImNxYS1zaHJpbmstMFwiXG4gICAgICAgICAgICAgIChjbGlja2VkKT1cIm9uUmVtb3ZlU3RlcChzdGVwLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L2NxYS1idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICA8IS0tIEVkaXRlZCBTdGVwcyAtLT5cbiAgICAgIDxzZWN0aW9uXG4gICAgICAgICpuZ0lmPVwiZWRpdGVkU3RlcHM/Lmxlbmd0aFwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtM1wiXG4gICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImVkaXRlZC1zdGVwcy1oZWFkaW5nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXctNSBjcWEtaC01XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjUgMkwxMiA1LjVMNSAxMi41TDEgMTNMMiA5TDguNSAyWlwiIHN0cm9rZT1cIiNGNTlFMEJcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPGgzIGlkPVwiZWRpdGVkLXN0ZXBzLWhlYWRpbmdcIiBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMjBweF0gY3FhLW0tMFwiIGNxYS10ZXh0LWNvbG9yPVwiIzBBMEEwQVwiPlxuICAgICAgICAgICAgRWRpdGVkIFN0ZXBzXG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJjcWEtaW5saW5lLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXB5LTAuNSBjcWEtcHgtMiBjcWEtcm91bmRlZC1mdWxsIGNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWxlYWRpbmctWzE2cHhdXCJcbiAgICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI0U1RTdFQjsgY29sb3I6ICM2QjcyODA7XCI+XG4gICAgICAgICAgICB7eyBlZGl0ZWRTdGVwcy5sZW5ndGggfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdGVwIG9mIGVkaXRlZFN0ZXBzOyB0cmFja0J5OiB0cmFja0J5U3RlcElkXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTMgY3FhLXJvdW5kZWQtWzhweF0gY3FhLXAtMyBjcWEtYmctWyNGOUZBRkJdIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1bI0U1RTdFQl1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS1taW4tdy0wXCI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsyMHB4XSBjcWEtdGV4dC1bIzBBMEEwQV0gY3FhLW0tMFwiIHN0eWxlPVwid29yZC1icmVhazogYnJlYWstd29yZDtcIj5cbiAgICAgICAgICAgICAgICB7eyBzdGVwLnN0ZXBEZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XSBjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLW10LTEgY3FhLW0tMFwiPlxuICAgICAgICAgICAgICAgIHt7IHN0ZXAudGltZXN0YW1wIH19XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGNxYS1idXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgYnRuU2l6ZT1cIm1kXCJcbiAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZV9vdXRsaW5lXCJcbiAgICAgICAgICAgICAgaWNvbkNvbG9yPVwiIzk5OTk5RVwiXG4gICAgICAgICAgICAgIFt0b29sdGlwXT1cIidSZW1vdmUgc3RlcDogJyArIHN0ZXAuc3RlcERlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgICAgICAgICBjdXN0b21DbGFzcz1cImNxYS1zaHJpbmstMFwiXG4gICAgICAgICAgICAgIChjbGlja2VkKT1cIm9uUmVtb3ZlU3RlcChzdGVwLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L2NxYS1idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICA8IS0tIERlbGV0ZWQgU3RlcHMgLS0+XG4gICAgICA8c2VjdGlvblxuICAgICAgICAqbmdJZj1cImRlbGV0ZWRTdGVwcz8ubGVuZ3RoXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0zXCJcbiAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZGVsZXRlZC1zdGVwcy1oZWFkaW5nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXctNSBjcWEtaC01XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk0yIDdIMTJcIiBzdHJva2U9XCIjRUY0NDQ0XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxoMyBpZD1cImRlbGV0ZWQtc3RlcHMtaGVhZGluZ1wiIGNsYXNzPVwiY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsyMHB4XSBjcWEtbS0wXCIgdGV4dENvbG9yPVwiIzBBMEEwQVwiPlxuICAgICAgICAgICAgRGVsZXRlZCBTdGVwc1xuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLWlubGluZS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1weS0wLjUgY3FhLXB4LTIgY3FhLXJvdW5kZWQtZnVsbCBjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1sZWFkaW5nLVsxNnB4XVwiXG4gICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNFNUU3RUI7IGNvbG9yOiAjNkI3MjgwO1wiPlxuICAgICAgICAgICAge3sgZGVsZXRlZFN0ZXBzLmxlbmd0aCB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHN0ZXAgb2YgZGVsZXRlZFN0ZXBzOyB0cmFja0J5OiB0cmFja0J5U3RlcElkXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTMgY3FhLXJvdW5kZWQtWzhweF0gY3FhLXAtMyBjcWEtYmctWyNGOUZBRkJdIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1bI0U1RTdFQl1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS1taW4tdy0wXCI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsyMHB4XSBjcWEtdGV4dC1bIzBBMEEwQV0gY3FhLW0tMFwiIHN0eWxlPVwid29yZC1icmVhazogYnJlYWstd29yZDtcIj5cbiAgICAgICAgICAgICAgICB7eyBzdGVwLnN0ZXBEZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XSBjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLW10LTEgY3FhLW0tMFwiPlxuICAgICAgICAgICAgICAgIHt7IHN0ZXAudGltZXN0YW1wIH19XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGNxYS1idXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgYnRuU2l6ZT1cIm1kXCJcbiAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZV9vdXRsaW5lXCJcbiAgICAgICAgICAgICAgaWNvbkNvbG9yPVwiIzk5OTk5RVwiXG4gICAgICAgICAgICAgIFt0b29sdGlwXT1cIidSZW1vdmUgc3RlcDogJyArIHN0ZXAuc3RlcERlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgICAgICAgICBjdXN0b21DbGFzcz1cImNxYS1zaHJpbmstMFwiXG4gICAgICAgICAgICAgIChjbGlja2VkKT1cIm9uUmVtb3ZlU3RlcChzdGVwLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L2NxYS1idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICA8IS0tIEVtcHR5IHN0YXRlIC0tPlxuICAgICAgPHAgKm5nSWY9XCIhYWRkZWRTdGVwcz8ubGVuZ3RoICYmICFlZGl0ZWRTdGVwcz8ubGVuZ3RoICYmICFkZWxldGVkU3RlcHM/Lmxlbmd0aFwiIGNsYXNzPVwiY3FhLXRleHQtWzE0cHhdIGNxYS10ZXh0LVsjNkI3MjgwXSBjcWEtbS0wXCI+XG4gICAgICAgIE5vIHNlc3Npb24gY2hhbmdlcyB0byBkaXNwbGF5LlxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBGb290ZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1weC02IGNxYS1wYi02IGNxYS1wdC0yIGNxYS1ib3JkZXItdCBjcWEtYm9yZGVyLVsjRTVFN0VCXVwiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cInRvdGFsQ2hhbmdlc0NvdW50ID4gMFwiXG4gICAgICAgIGNsYXNzPVwiY3FhLXctZnVsbCBjcWEtcm91bmRlZC1bMTJweF0gY3FhLWJnLVsjRkNEOUQ5XSBjcWEtcHgtMyBjcWEtcHktWzE3cHhdIGNxYS1tYi00XCIgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCAjRjQ3RjdGXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZ2FwLTFcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1zaHJpbmstMCBjcWEtZmxleCBjcWEtaXRlbXMtc3RhcnQgY3FhLW10LTAuNVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNDM2OV8yMTI2OClcIj5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk04IDE0LjVDMTEuNTg5OSAxNC41IDE0LjUgMTEuNTg5OSAxNC41IDhDMTQuNSA0LjQxMDE1IDExLjU4OTkgMS41IDggMS41QzQuNDEwMTUgMS41IDEuNSA0LjQxMDE1IDEuNSA4QzEuNSAxMS41ODk5IDQuNDEwMTUgMTQuNSA4IDE0LjVaXCIgc3Ryb2tlPVwiI0VFM0YzRlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiLz5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk04IDQuNjY2OTlWOC4wMDAzMlwiIHN0cm9rZT1cIiNFRTNGM0ZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTggMTAuNjY3SDguMDA2NjdcIiBzdHJva2U9XCIjRUUzRjNGXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfNDM2OV8yMTI2OFwiPlxuICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIi8+XG4gICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtbWluLXctMFwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC1bMTRweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyM5RjJBMkFdIGNxYS1tLTBcIj5cbiAgICAgICAgICAgICAgVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE2cHhdIGNxYS10ZXh0LVsjOUYyQTJBXSBjcWEtbXQtMSBjcWEtbS0wXCI+XG4gICAgICAgICAgICAgIFRoZSBvcmlnaW5hbCB0ZXN0IGNhc2Ugd2lsbCBiZSBwZXJtYW5lbnRseSBvdmVyd3JpdHRlbiB3aXRoIHlvdXIgY2hhbmdlcy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgIFt0ZXh0XT1cInNhdmVCdXR0b25MYWJlbFwiXG4gICAgICAgIHZhcmlhbnQ9XCJmaWxsZWRcIlxuICAgICAgICBidG5TaXplPVwibGdcIlxuICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwic2F2ZUJ1dHRvbkRpc2FibGVkIHx8IHRvdGFsQ2hhbmdlc0NvdW50ID09PSAwXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJzYXZlQnV0dG9uRGlzYWJsZWQgfHwgdG90YWxDaGFuZ2VzQ291bnQgPT09IDBcIlxuICAgICAgICAoY2xpY2tlZCk9XCJvblNhdmUoKVwiXG4gICAgICAgIFtpbmxpbmVTdHlsZXNdPVwiJ2JhY2tncm91bmQtY29sb3I6ICM0RjQ2RTU7IGJvcmRlci1jb2xvcjogIzRGNDZFNTsgY29sb3I6ICNGRkZGRkY7J1wiPlxuICAgICAgPC9jcWEtYnV0dG9uPlxuICAgICAgPHAgKm5nSWY9XCJ0b3RhbENoYW5nZXNDb3VudCA+IDBcIiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLXRleHQtWyM0MTQxNDZdIGNxYS1tdC0yIGNxYS1tYi0wIGNxYS10ZXh0LWNlbnRlclwiPlxuICAgICAgICB7eyBjb21taXRNZXNzYWdlIH19XG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1jaGFuZ2VzLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9zZXNzaW9uLWNoYW5nZXMtbW9kYWwvc2Vzc2lvbi1jaGFuZ2VzLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9zZXNzaW9uLWNoYW5nZXMtbW9kYWwvc2Vzc2lvbi1jaGFuZ2VzLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBa0JyRixNQUFNLE9BQU8sNEJBQTRCO0lBTnpDO1FBT1csV0FBTSxHQUFZLEtBQUssQ0FBQztRQUN4QixVQUFLLEdBQVcsaUJBQWlCLENBQUM7UUFDbEMsZUFBVSxHQUF3QixFQUFFLENBQUM7UUFDckMsZ0JBQVcsR0FBd0IsRUFBRSxDQUFDO1FBQ3RDLGlCQUFZLEdBQXdCLEVBQUUsQ0FBQztRQUN2QyxvQkFBZSxHQUFXLG1CQUFtQixDQUFDO1FBQzlDLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUNwQyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDckMsMEJBQXFCLEdBQVcseURBQXlELENBQUM7UUFFekYsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDdEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQzFDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBMkMsQ0FBQztLQXNEcEY7SUFwREMsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM3RyxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWlCO1FBQy9CLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFxQixDQUFDO1FBQzNDLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUE0QixDQUFDO1FBQ3pELElBQUksTUFBTSxLQUFLLGFBQWEsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUFFO1lBQzNGLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNoQjtJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNuQixJQUFJLElBQUksQ0FBQyxtQkFBbUI7WUFBQyxPQUFPLG9EQUFvRCxDQUFDO1FBQ3pGLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUF1QixFQUFFLEtBQVk7UUFDaEQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBR0QsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNoQjtJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsTUFBYyxFQUFFLElBQXVCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNqQixDQUFDOzt5SEFsRVUsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsaWpCQ2xCekMsNHFXQXdPQTsyRkR0TmEsNEJBQTRCO2tCQU54QyxTQUFTOytCQUNFLDJCQUEyQixRQUcvQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7OEJBR3JCLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkE2Q1AsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IHR5cGUgU2Vzc2lvbkNoYW5nZVR5cGUgPSAnYWRkZWQnIHwgJ2VkaXRlZCcgfCAnZGVsZXRlZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvbkNoYW5nZVN0ZXAge1xuICBpZDogc3RyaW5nO1xuICBzdGVwTnVtYmVyPzogc3RyaW5nO1xuICBzdGVwRGVzY3JpcHRpb246IHN0cmluZztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIHR5cGU6IFNlc3Npb25DaGFuZ2VUeXBlO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtc2Vzc2lvbi1jaGFuZ2VzLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Nlc3Npb24tY2hhbmdlcy1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcgfSxcbn0pXG5leHBvcnQgY2xhc3MgU2Vzc2lvbkNoYW5nZXNNb2RhbENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJ1Nlc3Npb24gQ2hhbmdlcyc7XG4gIEBJbnB1dCgpIGFkZGVkU3RlcHM6IFNlc3Npb25DaGFuZ2VTdGVwW10gPSBbXTtcbiAgQElucHV0KCkgZWRpdGVkU3RlcHM6IFNlc3Npb25DaGFuZ2VTdGVwW10gPSBbXTtcbiAgQElucHV0KCkgZGVsZXRlZFN0ZXBzOiBTZXNzaW9uQ2hhbmdlU3RlcFtdID0gW107XG4gIEBJbnB1dCgpIHNhdmVCdXR0b25MYWJlbDogc3RyaW5nID0gJ1NhdmUgdG8gVGVzdCBDYXNlJztcbiAgQElucHV0KCkgc2F2ZUJ1dHRvbkRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGV4ZWN1dGlvbkluUHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY29tbWl0TWVzc2FnZVRlbXBsYXRlOiBzdHJpbmcgPSAnVGhpcyB3aWxsIGNvbW1pdCBhbGwge3tjb3VudH19IGNoYW5nZXMgdG8gdGhlIHRlc3QgY2FzZSc7XG5cbiAgQE91dHB1dCgpIGNsb3NlTW9kYWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzYXZlVG9UZXN0Q2FzZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHJlbW92ZVN0ZXAgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaWQ6IHN0cmluZzsgdHlwZTogU2Vzc2lvbkNoYW5nZVR5cGUgfT4oKTtcblxuICBnZXQgdG90YWxDaGFuZ2VzQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuYWRkZWRTdGVwcz8ubGVuZ3RoIHx8IDApICsgKHRoaXMuZWRpdGVkU3RlcHM/Lmxlbmd0aCB8fCAwKSArICh0aGlzLmRlbGV0ZWRTdGVwcz8ubGVuZ3RoIHx8IDApO1xuICB9XG5cbiAgZ2V0IGNvbW1pdE1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb3VudCA9IHRoaXMudG90YWxDaGFuZ2VzQ291bnQ7XG4gICAgcmV0dXJuIHRoaXMuY29tbWl0TWVzc2FnZVRlbXBsYXRlLnJlcGxhY2UoL1xce1xce2NvdW50XFx9XFx9L2csIFN0cmluZyhjb3VudCkpO1xuICB9XG5cbiAgb25CYWNrZHJvcENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQgfHwgdGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnc2Vzc2lvbi1jaGFuZ2VzLW1vZGFsLWJhY2tkcm9wJykpIHtcbiAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZU1vZGFsLmVtaXQoKTtcbiAgfVxuXG4gIGdldCBpc1NhdmVEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zYXZlQnV0dG9uRGlzYWJsZWQgfHwgdGhpcy5leGVjdXRpb25JblByb2dyZXNzIHx8IHRoaXMudG90YWxDaGFuZ2VzQ291bnQgPT09IDA7XG4gIH1cblxuICBnZXQgc2F2ZUJ1dHRvblRvb2x0aXAoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5leGVjdXRpb25JblByb2dyZXNzKXJldHVybiAnQnV0dG9uIHdpbGwgYmUgZW5hYmxlZCBhZnRlciBleGVjdXRpb24gaXMgY29tcGxldGUnO1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIG9uU2F2ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNTYXZlRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2F2ZVRvVGVzdENhc2UuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uUmVtb3ZlU3RlcChzdGVwOiBTZXNzaW9uQ2hhbmdlU3RlcCwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnJlbW92ZVN0ZXAuZW1pdCh7IGlkOiBzdGVwLmlkLCB0eXBlOiBzdGVwLnR5cGUgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScpXG4gIG9uRXNjYXBlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tCeVN0ZXBJZChfaW5kZXg6IG51bWJlciwgc3RlcDogU2Vzc2lvbkNoYW5nZVN0ZXApOiBzdHJpbmcge1xuICAgIHJldHVybiBzdGVwLmlkO1xuICB9XG59XG4iLCI8ZGl2XG4gICpuZ0lmPVwiaXNPcGVuXCJcbiAgY2xhc3M9XCJzZXNzaW9uLWNoYW5nZXMtbW9kYWwtYmFja2Ryb3AgY3FhLWZpeGVkIGNxYS1pbnNldC0wIGNxYS1iZy1ibGFjayBjcWEtYmctb3BhY2l0eS01MCBjcWEtei01MCBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtcC00XCJcbiAgKGNsaWNrKT1cIm9uQmFja2Ryb3BDbGljaygkZXZlbnQpXCJcbiAgcm9sZT1cImRpYWxvZ1wiXG4gIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidzZXNzaW9uLWNoYW5nZXMtdGl0bGUnXCJcbiAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCInc2Vzc2lvbi1jaGFuZ2VzLWNvbnRlbnQnXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNxYS1yb3VuZGVkLVsxMnB4XSBjcWEtYmctd2hpdGUgY3FhLXNoYWRvdy14bCBjcWEtdy1mdWxsIGNxYS1tYXgtdy1bNTAwcHhdIGNxYS1vdmVyZmxvdy1oaWRkZW4gY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1tYXgtaC1bOTB2aF0gY3FhLWZvbnQtaW50ZXJcIlxuICAgIHN0eWxlPVwiYm94LXNoYWRvdzogMHB4IDhweCA4cHggLTRweCByZ2JhKDE2LCAyNCwgNDAsIDAuMDgpO1wiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgIDwhLS0gSGVhZGVyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLXB4LTYgY3FhLXB0LTYgY3FhLXBiLTQgY3FhLWJvcmRlci1iIGNxYS1ib3JkZXItWyNFNUU3RUJdXCI+XG4gICAgICA8aDJcbiAgICAgICAgaWQ9XCJzZXNzaW9uLWNoYW5nZXMtdGl0bGVcIlxuICAgICAgICBjbGFzcz1cImNxYS10ZXh0LVsxOHB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtbGVhZGluZy1bMjhweF0gY3FhLXRleHQtWyMzMzMzMzNdIGNxYS1tLTBcIj5cbiAgICAgICAge3sgdGl0bGUgfX1cbiAgICAgIDwvaDI+XG4gICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICBidG5TaXplPVwibWRcIlxuICAgICAgICBpY29uPVwiY2xvc2VcIlxuICAgICAgICBpY29uQ29sb3I9XCIjNEE1NTY1XCJcbiAgICAgICAgW3Rvb2x0aXBdPVwiJ0Nsb3NlIG1vZGFsJ1wiXG4gICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCJcbiAgICAgICAgY3VzdG9tQ2xhc3M9XCIhY3FhLW1pbi13LTAgY3FhLXAtMVwiXG4gICAgICAgIChjbGlja2VkKT1cIm9uQ2xvc2UoKVwiPlxuICAgICAgPC9jcWEtYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDb250ZW50IC0tPlxuICAgIDxkaXYgaWQ9XCJzZXNzaW9uLWNoYW5nZXMtY29udGVudFwiIGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtb3ZlcmZsb3cteS1hdXRvIGNxYS1weC02IGNxYS1weS00IGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTZcIiBzdHlsZT1cInNjcm9sbGJhci13aWR0aDogdGhpbjtcIj5cbiAgICAgIDwhLS0gQWRkZWQgU3RlcHMgLS0+XG4gICAgICA8c2VjdGlvblxuICAgICAgICAqbmdJZj1cImFkZGVkU3RlcHM/Lmxlbmd0aFwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtM1wiXG4gICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImFkZGVkLXN0ZXBzLWhlYWRpbmdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtdy01IGNxYS1oLTVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcgMlYxMk0yIDdIMTJcIiBzdHJva2U9XCIjMjJDNTVFXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxoMyBpZD1cImFkZGVkLXN0ZXBzLWhlYWRpbmdcIiBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSAgY3FhLWxlYWRpbmctWzIwcHhdIGNxYS1tLTBcIiB0ZXh0Q29sb3I9XCIjMEEwQTBBXCI+XG4gICAgICAgICAgICBBZGRlZCBTdGVwc1xuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLWlubGluZS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1weS0wLjUgY3FhLXB4LTIgY3FhLXJvdW5kZWQtZnVsbCBjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1sZWFkaW5nLVsxNnB4XVwiXG4gICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNFNUU3RUI7IGNvbG9yOiAjNkI3MjgwO1wiPlxuICAgICAgICAgICAge3sgYWRkZWRTdGVwcy5sZW5ndGggfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdGVwIG9mIGFkZGVkU3RlcHM7IHRyYWNrQnk6IHRyYWNrQnlTdGVwSWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMyBjcWEtcm91bmRlZC1bOHB4XSBjcWEtcC0zIGNxYS1iZy1bI0Y5RkFGQl0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLVsjRTVFN0VCXVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLW1pbi13LTBcIj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzIwcHhdIGNxYS10ZXh0LVsjMEEwQTBBXSBjcWEtbS0wXCIgc3R5bGU9XCJ3b3JkLWJyZWFrOiBicmVhay13b3JkO1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic3RlcC5zdGVwTnVtYmVyXCIgY2xhc3M9XCJjcWEtZm9udC1zZW1pYm9sZFwiPnt7IHN0ZXAuc3RlcE51bWJlciB9fS48L3NwYW4+XG4gICAgICAgICAgICAgICAge3sgc3RlcC5zdGVwRGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLXRleHQtWyM2QjcyODBdIGNxYS1tdC0xIGNxYS1tLTBcIj5cbiAgICAgICAgICAgICAgICB7eyBzdGVwLnRpbWVzdGFtcCB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICAgIGJ0blNpemU9XCJtZFwiXG4gICAgICAgICAgICAgIGljb249XCJkZWxldGVfb3V0bGluZVwiXG4gICAgICAgICAgICAgIGljb25Db2xvcj1cIiM5OTk5OUVcIlxuICAgICAgICAgICAgICBbdG9vbHRpcF09XCInUmVtb3ZlIHN0ZXA6ICcgKyBzdGVwLnN0ZXBEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCJcbiAgICAgICAgICAgICAgY3VzdG9tQ2xhc3M9XCJjcWEtc2hyaW5rLTBcIlxuICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvblJlbW92ZVN0ZXAoc3RlcCwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9jcWEtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgPCEtLSBFZGl0ZWQgU3RlcHMgLS0+XG4gICAgICA8c2VjdGlvblxuICAgICAgICAqbmdJZj1cImVkaXRlZFN0ZXBzPy5sZW5ndGhcIlxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTNcIlxuICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJlZGl0ZWQtc3RlcHMtaGVhZGluZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS13LTUgY3FhLWgtNVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC41IDJMMTIgNS41TDUgMTIuNUwxIDEzTDIgOUw4LjUgMlpcIiBzdHJva2U9XCIjRjU5RTBCXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxoMyBpZD1cImVkaXRlZC1zdGVwcy1oZWFkaW5nXCIgY2xhc3M9XCJjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzIwcHhdIGNxYS1tLTBcIiBjcWEtdGV4dC1jb2xvcj1cIiMwQTBBMEFcIj5cbiAgICAgICAgICAgIEVkaXRlZCBTdGVwc1xuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLWlubGluZS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1weS0wLjUgY3FhLXB4LTIgY3FhLXJvdW5kZWQtZnVsbCBjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1sZWFkaW5nLVsxNnB4XVwiXG4gICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNFNUU3RUI7IGNvbG9yOiAjNkI3MjgwO1wiPlxuICAgICAgICAgICAge3sgZWRpdGVkU3RlcHMubGVuZ3RoIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3RlcCBvZiBlZGl0ZWRTdGVwczsgdHJhY2tCeTogdHJhY2tCeVN0ZXBJZFwiXG4gICAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS1yb3VuZGVkLVs4cHhdIGNxYS1wLTMgY3FhLWJnLVsjRjlGQUZCXSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItWyNFNUU3RUJdXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtbWluLXctMFwiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMjBweF0gY3FhLXRleHQtWyMwQTBBMEFdIGNxYS1tLTBcIiBzdHlsZT1cIndvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzdGVwLnN0ZXBOdW1iZXJcIiBjbGFzcz1cImNxYS1mb250LXNlbWlib2xkXCI+e3sgc3RlcC5zdGVwTnVtYmVyIH19Ljwvc3Bhbj5cbiAgICAgICAgICAgICAgICB7eyBzdGVwLnN0ZXBEZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XSBjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLW10LTEgY3FhLW0tMFwiPlxuICAgICAgICAgICAgICAgIHt7IHN0ZXAudGltZXN0YW1wIH19XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGNxYS1idXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgYnRuU2l6ZT1cIm1kXCJcbiAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZV9vdXRsaW5lXCJcbiAgICAgICAgICAgICAgaWNvbkNvbG9yPVwiIzk5OTk5RVwiXG4gICAgICAgICAgICAgIFt0b29sdGlwXT1cIidSZW1vdmUgc3RlcDogJyArIHN0ZXAuc3RlcERlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgICAgICAgICBjdXN0b21DbGFzcz1cImNxYS1zaHJpbmstMFwiXG4gICAgICAgICAgICAgIChjbGlja2VkKT1cIm9uUmVtb3ZlU3RlcChzdGVwLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L2NxYS1idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICA8IS0tIERlbGV0ZWQgU3RlcHMgLS0+XG4gICAgICA8c2VjdGlvblxuICAgICAgICAqbmdJZj1cImRlbGV0ZWRTdGVwcz8ubGVuZ3RoXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0zXCJcbiAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZGVsZXRlZC1zdGVwcy1oZWFkaW5nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXctNSBjcWEtaC01XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk0yIDdIMTJcIiBzdHJva2U9XCIjRUY0NDQ0XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxoMyBpZD1cImRlbGV0ZWQtc3RlcHMtaGVhZGluZ1wiIGNsYXNzPVwiY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsyMHB4XSBjcWEtbS0wXCIgdGV4dENvbG9yPVwiIzBBMEEwQVwiPlxuICAgICAgICAgICAgRGVsZXRlZCBTdGVwc1xuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLWlubGluZS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1weS0wLjUgY3FhLXB4LTIgY3FhLXJvdW5kZWQtZnVsbCBjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1sZWFkaW5nLVsxNnB4XVwiXG4gICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNFNUU3RUI7IGNvbG9yOiAjNkI3MjgwO1wiPlxuICAgICAgICAgICAge3sgZGVsZXRlZFN0ZXBzLmxlbmd0aCB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHN0ZXAgb2YgZGVsZXRlZFN0ZXBzOyB0cmFja0J5OiB0cmFja0J5U3RlcElkXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTMgY3FhLXJvdW5kZWQtWzhweF0gY3FhLXAtMyBjcWEtYmctWyNGOUZBRkJdIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1bI0U1RTdFQl1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS1taW4tdy0wXCI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsyMHB4XSBjcWEtdGV4dC1bIzBBMEEwQV0gY3FhLW0tMFwiIHN0eWxlPVwid29yZC1icmVhazogYnJlYWstd29yZDtcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInN0ZXAuc3RlcE51bWJlclwiIGNsYXNzPVwiY3FhLWZvbnQtc2VtaWJvbGRcIj57eyBzdGVwLnN0ZXBOdW1iZXIgfX0uPC9zcGFuPlxuICAgICAgICAgICAgICAgIHt7IHN0ZXAuc3RlcERlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE2cHhdIGNxYS10ZXh0LVsjNkI3MjgwXSBjcWEtbXQtMSBjcWEtbS0wXCI+XG4gICAgICAgICAgICAgICAge3sgc3RlcC50aW1lc3RhbXAgfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgICBidG5TaXplPVwibWRcIlxuICAgICAgICAgICAgICBpY29uPVwiZGVsZXRlX291dGxpbmVcIlxuICAgICAgICAgICAgICBpY29uQ29sb3I9XCIjOTk5OTlFXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ1JlbW92ZSBzdGVwOiAnICsgc3RlcC5zdGVwRGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAgICAgICAgIGN1c3RvbUNsYXNzPVwiY3FhLXNocmluay0wXCJcbiAgICAgICAgICAgICAgKGNsaWNrZWQpPVwib25SZW1vdmVTdGVwKHN0ZXAsICRldmVudClcIj5cbiAgICAgICAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NlY3Rpb24+XG5cbiAgICAgIDwhLS0gRW1wdHkgc3RhdGUgLS0+XG4gICAgICA8cCAqbmdJZj1cIiFhZGRlZFN0ZXBzPy5sZW5ndGggJiYgIWVkaXRlZFN0ZXBzPy5sZW5ndGggJiYgIWRlbGV0ZWRTdGVwcz8ubGVuZ3RoXCIgY2xhc3M9XCJjcWEtdGV4dC1bMTRweF0gY3FhLXRleHQtWyM2QjcyODBdIGNxYS1tLTBcIj5cbiAgICAgICAgTm8gc2Vzc2lvbiBjaGFuZ2VzIHRvIGRpc3BsYXkuXG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEZvb3RlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLXB4LTYgY3FhLXBiLTYgY3FhLXB0LTIgY3FhLWJvcmRlci10IGNxYS1ib3JkZXItWyNFNUU3RUJdXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwidG90YWxDaGFuZ2VzQ291bnQgPiAwXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1yb3VuZGVkLVsxMnB4XSBjcWEtYmctWyNGQ0Q5RDldIGNxYS1weC0zIGNxYS1weS1bMTdweF0gY3FhLW1iLTRcIiBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkICNGNDdGN0ZcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1nYXAtMVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXNocmluay0wIGNxYS1mbGV4IGNxYS1pdGVtcy1zdGFydCBjcWEtbXQtMC41XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF80MzY5XzIxMjY4KVwiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTggMTQuNUMxMS41ODk5IDE0LjUgMTQuNSAxMS41ODk5IDE0LjUgOEMxNC41IDQuNDEwMTUgMTEuNTg5OSAxLjUgOCAxLjVDNC40MTAxNSAxLjUgMS41IDQuNDEwMTUgMS41IDhDMS41IDExLjU4OTkgNC40MTAxNSAxNC41IDggMTQuNVpcIiBzdHJva2U9XCIjRUUzRjNGXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTggNC42NjY5OVY4LjAwMDMyXCIgc3Ryb2tlPVwiI0VFM0YzRlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOCAxMC42NjdIOC4wMDY2N1wiIHN0cm9rZT1cIiNFRTNGM0ZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF80MzY5XzIxMjY4XCI+XG4gICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiLz5cbiAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1taW4tdy0wXCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzlGMkEyQV0gY3FhLW0tMFwiPlxuICAgICAgICAgICAgICBUaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLXRleHQtWyM5RjJBMkFdIGNxYS1tdC0xIGNxYS1tLTBcIj5cbiAgICAgICAgICAgICAgVGhlIG9yaWdpbmFsIHRlc3QgY2FzZSB3aWxsIGJlIHBlcm1hbmVudGx5IG92ZXJ3cml0dGVuIHdpdGggeW91ciBjaGFuZ2VzLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGNxYS1idXR0b25cbiAgICAgICAgW3RleHRdPVwic2F2ZUJ1dHRvbkxhYmVsXCJcbiAgICAgICAgdmFyaWFudD1cImZpbGxlZFwiXG4gICAgICAgIGJ0blNpemU9XCJsZ1wiXG4gICAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc1NhdmVEaXNhYmxlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNTYXZlRGlzYWJsZWRcIlxuICAgICAgICBbdG9vbHRpcF09XCJzYXZlQnV0dG9uVG9vbHRpcFwiXG4gICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcbiAgICAgICAgKGNsaWNrZWQpPVwib25TYXZlKClcIlxuICAgICAgICBbaW5saW5lU3R5bGVzXT1cIidiYWNrZ3JvdW5kLWNvbG9yOiAjNEY0NkU1OyBib3JkZXItY29sb3I6ICM0RjQ2RTU7IGNvbG9yOiAjRkZGRkZGOydcIj5cbiAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICAgIDxwICpuZ0lmPVwidG90YWxDaGFuZ2VzQ291bnQgPiAwXCIgY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE2cHhdIGNxYS10ZXh0LVsjNDE0MTQ2XSBjcWEtbXQtMiBjcWEtbWItMCBjcWEtdGV4dC1jZW50ZXJcIj5cbiAgICAgICAge3sgY29tbWl0TWVzc2FnZSB9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -36,6 +36,17 @@ export class TableActionToolbarComponent {
36
36
  const ctx = { selected: this.selectedItems || [] };
37
37
  return action.disabled ? !!action.disabled(ctx) : false;
38
38
  }
39
+ /**
40
+ * Keep first click actionable by preventing pointer down from being used only for focus transfer.
41
+ */
42
+ onActionMouseDown(event, action) {
43
+ if (this.isDisabled(action) || event.button !== 0) {
44
+ return;
45
+ }
46
+ event.preventDefault();
47
+ event.stopPropagation();
48
+ this.onAction(action);
49
+ }
39
50
  onAction(action) {
40
51
  if (this.isDisabled(action)) {
41
52
  return;
@@ -65,10 +76,10 @@ export class TableActionToolbarComponent {
65
76
  }
66
77
  TableActionToolbarComponent.ACTION_COOLDOWN_MS = 500;
67
78
  TableActionToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TableActionToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
68
- TableActionToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TableActionToolbarComponent, selector: "cqa-table-action-toolbar", inputs: { selectedItems: "selectedItems", actions: "actions", showSelectAll: "showSelectAll", allSelected: "allSelected", showDismiss: "showDismiss" }, outputs: { actionClick: "actionClick", selectAllChange: "selectAllChange", dismiss: "dismiss" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div class=\"cqa-ui-root\">\n <div\n class=\"action-toolbar cqa-flex cqa-items-center cqa-justify-center xl:cqa-justify-between cqa-gap-2 cqa-flex-wrap cqa-py-[15.5px] sm:cqa-px-[34px] cqa-px-[20px] cqa-bg-primary cqa-text-white cqa-rounded-[7px] cqa-shadow-md\"\n *ngIf=\"hasSelection\">\n <div class=\"action-toolbar-left cqa-flex cqa-items-center cqa-gap-2 cqa-text-[14px] cqa-leading-[21px] cqa-font-medium\">\n <ng-container *ngIf=\"showSelectAll\">\n <label class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-cursor-pointer cqa-select-none\">\n <input type=\"checkbox\" [checked]=\"allSelected\" (change)=\"onSelectAllChange($any($event.target).checked)\"\n class=\"select-all cqa-w-4 cqa-h-4 cqa-rounded cqa-border cqa-border-white cqa-bg-transparent hover:cqa-bg-transparent cqa-accent-primary\" />\n <span>Select all</span>\n </label>\n <span class=\"cqa-border-l cqa-border-white/50 cqa-pl-2 cqa-border-solid cqa-self-stretch cqa-flex cqa-items-center\">{{ selectionLabel }}</span>\n </ng-container>\n <span *ngIf=\"!showSelectAll\">{{ selectionLabel }}</span>\n </div>\n <div class=\"action-toolbar-right cqa-flex cqa-items-center cqa-gap-[7px]\">\n <ng-container *ngFor=\"let action of visibleActions()\">\n <div [attr.aria-disabled]=\"isDisabled(action)\" [class.cqa-opacity-50]=\"isDisabled(action)\" [class.cqa-cursor-not-allowed]=\"isDisabled(action)\" (click)=\"!isDisabled(action) && onAction(action)\"\n class=\"cqa-flex cqa-items-center cqa-gap-[8.75px] cqa-py-[5px] cqa-px-[8.75px] cqa-cursor-pointer cqa-text-[12.3px] cqa-leading-[17.5px] cqa-font-medium hover:cqa-bg-white/10 cqa-rounded\">\n <mat-icon class=\"!cqa-w-[16px] !cqa-h-[16px] !cqa-text-[16px]\">{{ action.icon }}</mat-icon>\n <span class=\"md:cqa-flex cqa-hidden\">{{ action.label }}</span>\n </div>\n </ng-container>\n <button *ngIf=\"showDismiss\" type=\"button\" (click)=\"onDismiss()\" class=\"cqa-p-1 cqa-rounded hover:cqa-bg-white/10 cqa-flex cqa-items-center cqa-justify-center\"\n title=\"Dismiss\" aria-label=\"Dismiss\">\n <mat-icon class=\"!cqa-w-[20px] !cqa-h-[20px] !cqa-text-[20px]\">close</mat-icon>\n </button>\n </div>\n </div>\n</div>", components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
79
+ TableActionToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TableActionToolbarComponent, selector: "cqa-table-action-toolbar", inputs: { selectedItems: "selectedItems", actions: "actions", showSelectAll: "showSelectAll", allSelected: "allSelected", showDismiss: "showDismiss" }, outputs: { actionClick: "actionClick", selectAllChange: "selectAllChange", dismiss: "dismiss" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div class=\"cqa-ui-root\">\n <div\n class=\"action-toolbar cqa-flex cqa-items-center cqa-justify-center xl:cqa-justify-between cqa-gap-2 cqa-flex-wrap cqa-py-[15.5px] sm:cqa-px-[34px] cqa-px-[20px] cqa-bg-primary cqa-text-white cqa-rounded-[7px] cqa-shadow-md\"\n *ngIf=\"hasSelection\">\n <div class=\"action-toolbar-left cqa-flex cqa-items-center cqa-gap-2 cqa-text-[14px] cqa-leading-[21px] cqa-font-medium\">\n <ng-container *ngIf=\"showSelectAll\">\n <label class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-cursor-pointer cqa-select-none\">\n <input type=\"checkbox\" [checked]=\"allSelected\" (change)=\"onSelectAllChange($any($event.target).checked)\"\n class=\"select-all cqa-w-4 cqa-h-4 cqa-rounded cqa-border cqa-border-white cqa-bg-transparent hover:cqa-bg-transparent cqa-accent-primary\" />\n <span>Select all</span>\n </label>\n <span class=\"cqa-border-l cqa-border-white/50 cqa-pl-2 cqa-border-solid cqa-self-stretch cqa-flex cqa-items-center\">{{ selectionLabel }}</span>\n </ng-container>\n <span *ngIf=\"!showSelectAll\">{{ selectionLabel }}</span>\n </div>\n <div class=\"action-toolbar-right cqa-flex cqa-items-center cqa-gap-[7px]\">\n <ng-container *ngFor=\"let action of visibleActions()\">\n <div [attr.aria-disabled]=\"isDisabled(action)\" [class.cqa-opacity-50]=\"isDisabled(action)\" [class.cqa-cursor-not-allowed]=\"isDisabled(action)\"\n (mousedown)=\"onActionMouseDown($event, action)\"\n class=\"cqa-flex cqa-items-center cqa-gap-[8.75px] cqa-py-[5px] cqa-px-[8.75px] cqa-cursor-pointer cqa-text-[12.3px] cqa-leading-[17.5px] cqa-font-medium hover:cqa-bg-white/10 cqa-rounded\">\n <mat-icon class=\"!cqa-w-[16px] !cqa-h-[16px] !cqa-text-[16px]\">{{ action.icon }}</mat-icon>\n <span class=\"md:cqa-flex cqa-hidden\">{{ action.label }}</span>\n </div>\n </ng-container>\n <button *ngIf=\"showDismiss\" type=\"button\" (click)=\"onDismiss()\" class=\"cqa-p-1 cqa-rounded hover:cqa-bg-white/10 cqa-flex cqa-items-center cqa-justify-center\"\n title=\"Dismiss\" aria-label=\"Dismiss\">\n <mat-icon class=\"!cqa-w-[20px] !cqa-h-[20px] !cqa-text-[20px]\">close</mat-icon>\n </button>\n </div>\n </div>\n</div>", components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
69
80
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TableActionToolbarComponent, decorators: [{
70
81
  type: Component,
71
- args: [{ selector: 'cqa-table-action-toolbar', changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'cqa-ui-root' }, template: "<div class=\"cqa-ui-root\">\n <div\n class=\"action-toolbar cqa-flex cqa-items-center cqa-justify-center xl:cqa-justify-between cqa-gap-2 cqa-flex-wrap cqa-py-[15.5px] sm:cqa-px-[34px] cqa-px-[20px] cqa-bg-primary cqa-text-white cqa-rounded-[7px] cqa-shadow-md\"\n *ngIf=\"hasSelection\">\n <div class=\"action-toolbar-left cqa-flex cqa-items-center cqa-gap-2 cqa-text-[14px] cqa-leading-[21px] cqa-font-medium\">\n <ng-container *ngIf=\"showSelectAll\">\n <label class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-cursor-pointer cqa-select-none\">\n <input type=\"checkbox\" [checked]=\"allSelected\" (change)=\"onSelectAllChange($any($event.target).checked)\"\n class=\"select-all cqa-w-4 cqa-h-4 cqa-rounded cqa-border cqa-border-white cqa-bg-transparent hover:cqa-bg-transparent cqa-accent-primary\" />\n <span>Select all</span>\n </label>\n <span class=\"cqa-border-l cqa-border-white/50 cqa-pl-2 cqa-border-solid cqa-self-stretch cqa-flex cqa-items-center\">{{ selectionLabel }}</span>\n </ng-container>\n <span *ngIf=\"!showSelectAll\">{{ selectionLabel }}</span>\n </div>\n <div class=\"action-toolbar-right cqa-flex cqa-items-center cqa-gap-[7px]\">\n <ng-container *ngFor=\"let action of visibleActions()\">\n <div [attr.aria-disabled]=\"isDisabled(action)\" [class.cqa-opacity-50]=\"isDisabled(action)\" [class.cqa-cursor-not-allowed]=\"isDisabled(action)\" (click)=\"!isDisabled(action) && onAction(action)\"\n class=\"cqa-flex cqa-items-center cqa-gap-[8.75px] cqa-py-[5px] cqa-px-[8.75px] cqa-cursor-pointer cqa-text-[12.3px] cqa-leading-[17.5px] cqa-font-medium hover:cqa-bg-white/10 cqa-rounded\">\n <mat-icon class=\"!cqa-w-[16px] !cqa-h-[16px] !cqa-text-[16px]\">{{ action.icon }}</mat-icon>\n <span class=\"md:cqa-flex cqa-hidden\">{{ action.label }}</span>\n </div>\n </ng-container>\n <button *ngIf=\"showDismiss\" type=\"button\" (click)=\"onDismiss()\" class=\"cqa-p-1 cqa-rounded hover:cqa-bg-white/10 cqa-flex cqa-items-center cqa-justify-center\"\n title=\"Dismiss\" aria-label=\"Dismiss\">\n <mat-icon class=\"!cqa-w-[20px] !cqa-h-[20px] !cqa-text-[20px]\">close</mat-icon>\n </button>\n </div>\n </div>\n</div>", styles: [] }]
82
+ args: [{ selector: 'cqa-table-action-toolbar', changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'cqa-ui-root' }, template: "<div class=\"cqa-ui-root\">\n <div\n class=\"action-toolbar cqa-flex cqa-items-center cqa-justify-center xl:cqa-justify-between cqa-gap-2 cqa-flex-wrap cqa-py-[15.5px] sm:cqa-px-[34px] cqa-px-[20px] cqa-bg-primary cqa-text-white cqa-rounded-[7px] cqa-shadow-md\"\n *ngIf=\"hasSelection\">\n <div class=\"action-toolbar-left cqa-flex cqa-items-center cqa-gap-2 cqa-text-[14px] cqa-leading-[21px] cqa-font-medium\">\n <ng-container *ngIf=\"showSelectAll\">\n <label class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-cursor-pointer cqa-select-none\">\n <input type=\"checkbox\" [checked]=\"allSelected\" (change)=\"onSelectAllChange($any($event.target).checked)\"\n class=\"select-all cqa-w-4 cqa-h-4 cqa-rounded cqa-border cqa-border-white cqa-bg-transparent hover:cqa-bg-transparent cqa-accent-primary\" />\n <span>Select all</span>\n </label>\n <span class=\"cqa-border-l cqa-border-white/50 cqa-pl-2 cqa-border-solid cqa-self-stretch cqa-flex cqa-items-center\">{{ selectionLabel }}</span>\n </ng-container>\n <span *ngIf=\"!showSelectAll\">{{ selectionLabel }}</span>\n </div>\n <div class=\"action-toolbar-right cqa-flex cqa-items-center cqa-gap-[7px]\">\n <ng-container *ngFor=\"let action of visibleActions()\">\n <div [attr.aria-disabled]=\"isDisabled(action)\" [class.cqa-opacity-50]=\"isDisabled(action)\" [class.cqa-cursor-not-allowed]=\"isDisabled(action)\"\n (mousedown)=\"onActionMouseDown($event, action)\"\n class=\"cqa-flex cqa-items-center cqa-gap-[8.75px] cqa-py-[5px] cqa-px-[8.75px] cqa-cursor-pointer cqa-text-[12.3px] cqa-leading-[17.5px] cqa-font-medium hover:cqa-bg-white/10 cqa-rounded\">\n <mat-icon class=\"!cqa-w-[16px] !cqa-h-[16px] !cqa-text-[16px]\">{{ action.icon }}</mat-icon>\n <span class=\"md:cqa-flex cqa-hidden\">{{ action.label }}</span>\n </div>\n </ng-container>\n <button *ngIf=\"showDismiss\" type=\"button\" (click)=\"onDismiss()\" class=\"cqa-p-1 cqa-rounded hover:cqa-bg-white/10 cqa-flex cqa-items-center cqa-justify-center\"\n title=\"Dismiss\" aria-label=\"Dismiss\">\n <mat-icon class=\"!cqa-w-[20px] !cqa-h-[20px] !cqa-text-[20px]\">close</mat-icon>\n </button>\n </div>\n </div>\n</div>", styles: [] }]
72
83
  }], propDecorators: { selectedItems: [{
73
84
  type: Input
74
85
  }], actions: [{
@@ -86,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
86
97
  }], dismiss: [{
87
98
  type: Output
88
99
  }] } });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90YWJsZS1hY3Rpb24tdG9vbGJhci90YWJsZS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3RhYmxlLWFjdGlvbi10b29sYmFyL3RhYmxlLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFvQmhHLE1BQU0sT0FBTywyQkFBMkI7SUFQeEM7UUFRVyxrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUMxQixZQUFPLEdBQWtCLEVBQUUsQ0FBQztRQUVyQyx3R0FBd0c7UUFDL0Ysa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDeEMsbUVBQW1FO1FBQzFELGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQ3RDLHNFQUFzRTtRQUM3RCxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUU1QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFtQyxDQUFDO1FBQ2xFLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUM5QyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUU3Qyw0RUFBNEU7UUFDcEUsbUJBQWMsR0FBd0MsSUFBSSxDQUFDO0tBdURwRTtJQXBEQyxJQUFJLFlBQVk7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFB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QXhCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQWN0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICB0b29sdGlwPzogc3RyaW5nO1xuICBzaG93PzogKGNvbnRleHQ6IHsgc2VsZWN0ZWQ6IGFueVtdIH0pID0+IGJvb2xlYW47XG4gIGRpc2FibGVkPzogKGNvbnRleHQ6IHsgc2VsZWN0ZWQ6IGFueVtdIH0pID0+IGJvb2xlYW47XG4gIG9uQ2xpY2s/OiAoY29udGV4dDogeyBpZDogc3RyaW5nOyBzZWxlY3RlZDogYW55W10gfSkgPT4gdm9pZDtcbiAgYWN0aW9uPzogKGNvbnRleHQ6IHsgaWQ6IHN0cmluZzsgc2VsZWN0ZWQ6IGFueVtdIH0pID0+IHZvaWQ7IC8vIFN1cHBvcnQgJ2FjdGlvbicgYXMgYW4gYWxpYXMgZm9yIG9uQ2xpY2tcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLXRhYmxlLWFjdGlvbi10b29sYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcgfVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUFjdGlvblRvb2xiYXJDb21wb25lbnQge1xuICBASW5wdXQoKSBzZWxlY3RlZEl0ZW1zOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBhY3Rpb25zOiBUYWJsZUFjdGlvbltdID0gW107XG5cbiAgLyoqIFdoZW4gdHJ1ZSwgc2hvdyBhIFwiU2VsZWN0IGFsbFwiIGNoZWNrYm94IG5leHQgdG8gdGhlIHNlbGVjdGlvbiBjb3VudCAoZS5nLiBmb3IgdGVzdCBjYXNlIGRldGFpbHMpLiAqL1xuICBASW5wdXQoKSBzaG93U2VsZWN0QWxsOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBCb3VuZCB0byB0aGUgU2VsZWN0IGFsbCBjaGVja2JveCB3aGVuIHNob3dTZWxlY3RBbGwgaXMgdHJ1ZS4gKi9cbiAgQElucHV0KCkgYWxsU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqIFdoZW4gdHJ1ZSwgc2hvdyBhIGRpc21pc3MgKFgpIGJ1dHRvbiBhdCB0aGUgZW5kIG9mIHRoZSB0b29sYmFyLiAqL1xuICBASW5wdXQoKSBzaG93RGlzbWlzczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBhY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpZDogc3RyaW5nOyBzZWxlY3RlZDogYW55W10gfT4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdEFsbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGRpc21pc3MgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqIENvb2xkb3duIG1zIHRvIHByZXZlbnQgZG91YmxlLWNsaWNrIGZyb20gZmlyaW5nIHRoZSBzYW1lIGFjdGlvbiB0d2ljZSAqL1xuICBwcml2YXRlIGxhc3RBY3Rpb25FbWl0OiB7IGlkOiBzdHJpbmc7IHRpbWU6IG51bWJlciB9IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFDVElPTl9DT09MRE9XTl9NUyA9IDUwMDtcblxuICBnZXQgaGFzU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5zZWxlY3RlZEl0ZW1zPy5sZW5ndGggfHwgMCkgPiAwO1xuICB9XG5cbiAgZ2V0IGlzU2luZ2xlU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXM/Lmxlbmd0aCA9PT0gMTtcbiAgfVxuXG4gIGdldCBzZWxlY3Rpb25MYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG4gPSB0aGlzLnNlbGVjdGVkSXRlbXM/Lmxlbmd0aCB8fCAwO1xuICAgIHJldHVybiBuID09PSAxID8gJzEgc2VsZWN0ZWQnIDogYCR7bn0gc2VsZWN0ZWRgO1xuICB9XG5cbiAgdmlzaWJsZUFjdGlvbnMoKTogVGFibGVBY3Rpb25bXSB7XG4gICAgY29uc3QgY3R4ID0geyBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZEl0ZW1zIHx8IFtdIH07XG4gICAgcmV0dXJuICh0aGlzLmFjdGlvbnMgfHwgW10pLmZpbHRlcihhID0+IChhLnNob3cgPyBhLnNob3coY3R4KSA6IHRydWUpKTtcbiAgfVxuXG4gIGlzRGlzYWJsZWQoYWN0aW9uOiBUYWJsZUFjdGlvbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGN0eCA9IHsgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRJdGVtcyB8fCBbXSB9O1xuICAgIHJldHVybiBhY3Rpb24uZGlzYWJsZWQgPyAhIWFjdGlvbi5kaXNhYmxlZChjdHgpIDogZmFsc2U7XG4gIH1cblxuICBvbkFjdGlvbihhY3Rpb246IFRhYmxlQWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZChhY3Rpb24pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5sYXN0QWN0aW9uRW1pdCAmJlxuICAgICAgdGhpcy5sYXN0QWN0aW9uRW1pdC5pZCA9PT0gYWN0aW9uLmlkICYmXG4gICAgICBub3cgLSB0aGlzLmxhc3RBY3Rpb25FbWl0LnRpbWUgPCBUYWJsZUFjdGlvblRvb2xiYXJDb21wb25lbnQuQUNUSU9OX0NPT0xET1dOX01TXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubGFzdEFjdGlvbkVtaXQgPSB7IGlkOiBhY3Rpb24uaWQsIHRpbWU6IG5vdyB9O1xuICAgIGNvbnN0IGNvbnRleHQgPSB7IGlkOiBhY3Rpb24uaWQsIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkSXRlbXMgfHwgW10gfTtcbiAgICBpZiAoYWN0aW9uLm9uQ2xpY2spIHtcbiAgICAgIGFjdGlvbi5vbkNsaWNrKGNvbnRleHQpO1xuICAgIH0gZWxzZSBpZiAoYWN0aW9uLmFjdGlvbikge1xuICAgICAgYWN0aW9uLmFjdGlvbihjb250ZXh0KTtcbiAgICB9XG4gICAgdGhpcy5hY3Rpb25DbGljay5lbWl0KGNvbnRleHQpO1xuICB9XG5cbiAgb25TZWxlY3RBbGxDaGFuZ2UoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0QWxsQ2hhbmdlLmVtaXQoY2hlY2tlZCk7XG4gIH1cblxuICBvbkRpc21pc3MoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNtaXNzLmVtaXQoKTtcbiAgfVxufVxuXG5cbiIsIjxkaXYgY2xhc3M9XCJjcWEtdWktcm9vdFwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJhY3Rpb24tdG9vbGJhciBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciB4bDpjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1nYXAtMiBjcWEtZmxleC13cmFwIGNxYS1weS1bMTUuNXB4XSBzbTpjcWEtcHgtWzM0cHhdIGNxYS1weC1bMjBweF0gY3FhLWJnLXByaW1hcnkgY3FhLXRleHQtd2hpdGUgY3FhLXJvdW5kZWQtWzdweF0gY3FhLXNoYWRvdy1tZFwiXG4gICAgKm5nSWY9XCJoYXNTZWxlY3Rpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLXRvb2xiYXItbGVmdCBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzIxcHhdIGNxYS1mb250LW1lZGl1bVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dTZWxlY3RBbGxcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLWN1cnNvci1wb2ludGVyIGNxYS1zZWxlY3Qtbm9uZVwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJhbGxTZWxlY3RlZFwiIChjaGFuZ2UpPVwib25TZWxlY3RBbGxDaGFuZ2UoJGFueSgkZXZlbnQudGFyZ2V0KS5jaGVja2VkKVwiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1hbGwgY3FhLXctNCBjcWEtaC00IGNxYS1yb3VuZGVkIGNxYS1ib3JkZXIgY3FhLWJvcmRlci13aGl0ZSBjcWEtYmctdHJhbnNwYXJlbnQgaG92ZXI6Y3FhLWJnLXRyYW5zcGFyZW50IGNxYS1hY2NlbnQtcHJpbWFyeVwiIC8+XG4gICAgICAgICAgPHNwYW4+U2VsZWN0IGFsbDwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtYm9yZGVyLWwgY3FhLWJvcmRlci13aGl0ZS81MCBjcWEtcGwtMiBjcWEtYm9yZGVyLXNvbGlkIGNxYS1zZWxmLXN0cmV0Y2ggY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlclwiPnt7IHNlbGVjdGlvbkxhYmVsIH19PC9zcGFuPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFzaG93U2VsZWN0QWxsXCI+e3sgc2VsZWN0aW9uTGFiZWwgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbi10b29sYmFyLXJpZ2h0IGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC1bN3B4XVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHZpc2libGVBY3Rpb25zKClcIj5cbiAgICAgICAgPGRpdiBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoYWN0aW9uKVwiIFtjbGFzcy5jcWEtb3BhY2l0eS01MF09XCJpc0Rpc2FibGVkKGFjdGlvbilcIiBbY2xhc3MuY3FhLWN1cnNvci1ub3QtYWxsb3dlZF09XCJpc0Rpc2FibGVkKGFjdGlvbilcIiAoY2xpY2spPVwiIWlzRGlzYWJsZWQoYWN0aW9uKSAmJiBvbkFjdGlvbihhY3Rpb24pXCJcbiAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC1bOC43NXB4XSBjcWEtcHktWzVweF0gY3FhLXB4LVs4Ljc1cHhdIGNxYS1jdXJzb3ItcG9pbnRlciBjcWEtdGV4dC1bMTIuM3B4XSBjcWEtbGVhZGluZy1bMTcuNXB4XSBjcWEtZm9udC1tZWRpdW0gaG92ZXI6Y3FhLWJnLXdoaXRlLzEwIGNxYS1yb3VuZGVkXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiIWNxYS13LVsxNnB4XSAhY3FhLWgtWzE2cHhdICFjcWEtdGV4dC1bMTZweF1cIj57eyBhY3Rpb24uaWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZDpjcWEtZmxleCBjcWEtaGlkZGVuXCI+e3sgYWN0aW9uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dEaXNtaXNzXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkRpc21pc3MoKVwiIGNsYXNzPVwiY3FhLXAtMSBjcWEtcm91bmRlZCBob3ZlcjpjcWEtYmctd2hpdGUvMTAgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXJcIlxuICAgICAgICB0aXRsZT1cIkRpc21pc3NcIiBhcmlhLWxhYmVsPVwiRGlzbWlzc1wiPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCIhY3FhLXctWzIwcHhdICFjcWEtaC1bMjBweF0gIWNxYS10ZXh0LVsyMHB4XVwiPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90YWJsZS1hY3Rpb24tdG9vbGJhci90YWJsZS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3RhYmxlLWFjdGlvbi10b29sYmFyL3RhYmxlLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFvQmhHLE1BQU0sT0FBTywyQkFBMkI7SUFQeEM7UUFRVyxrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUMxQixZQUFPLEdBQWtCLEVBQUUsQ0FBQztRQUVyQyx3R0FBd0c7UUFDL0Ysa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDeEMsbUVBQW1FO1FBQzFELGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQ3RDLHNFQUFzRTtRQUM3RCxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUU1QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFtQyxDQUFDO1FBQ2xFLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUM5QyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUU3Qyw0RUFBNEU7UUFDcEUsbUJBQWMsR0FBd0MsSUFBSSxDQUFDO0tBbUVwRTtJQWhFQyxJQUFJLFlBQVk7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFB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QThCTTsyRkRWTywyQkFBMkI7a0JBUHZDLFNBQVM7K0JBQ0UsMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTs4QkFHckIsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUFjdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbiAgdG9vbHRpcD86IHN0cmluZztcbiAgc2hvdz86IChjb250ZXh0OiB7IHNlbGVjdGVkOiBhbnlbXSB9KSA9PiBib29sZWFuO1xuICBkaXNhYmxlZD86IChjb250ZXh0OiB7IHNlbGVjdGVkOiBhbnlbXSB9KSA9PiBib29sZWFuO1xuICBvbkNsaWNrPzogKGNvbnRleHQ6IHsgaWQ6IHN0cmluZzsgc2VsZWN0ZWQ6IGFueVtdIH0pID0+IHZvaWQ7XG4gIGFjdGlvbj86IChjb250ZXh0OiB7IGlkOiBzdHJpbmc7IHNlbGVjdGVkOiBhbnlbXSB9KSA9PiB2b2lkOyAvLyBTdXBwb3J0ICdhY3Rpb24nIGFzIGFuIGFsaWFzIGZvciBvbkNsaWNrXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS10YWJsZS1hY3Rpb24tdG9vbGJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH1cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVBY3Rpb25Ub29sYmFyQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgYWN0aW9uczogVGFibGVBY3Rpb25bXSA9IFtdO1xuXG4gIC8qKiBXaGVuIHRydWUsIHNob3cgYSBcIlNlbGVjdCBhbGxcIiBjaGVja2JveCBuZXh0IHRvIHRoZSBzZWxlY3Rpb24gY291bnQgKGUuZy4gZm9yIHRlc3QgY2FzZSBkZXRhaWxzKS4gKi9cbiAgQElucHV0KCkgc2hvd1NlbGVjdEFsbDogYm9vbGVhbiA9IGZhbHNlO1xuICAvKiogQm91bmQgdG8gdGhlIFNlbGVjdCBhbGwgY2hlY2tib3ggd2hlbiBzaG93U2VsZWN0QWxsIGlzIHRydWUuICovXG4gIEBJbnB1dCgpIGFsbFNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBXaGVuIHRydWUsIHNob3cgYSBkaXNtaXNzIChYKSBidXR0b24gYXQgdGhlIGVuZCBvZiB0aGUgdG9vbGJhci4gKi9cbiAgQElucHV0KCkgc2hvd0Rpc21pc3M6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaWQ6IHN0cmluZzsgc2VsZWN0ZWQ6IGFueVtdIH0+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RBbGxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBkaXNtaXNzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKiBDb29sZG93biBtcyB0byBwcmV2ZW50IGRvdWJsZS1jbGljayBmcm9tIGZpcmluZyB0aGUgc2FtZSBhY3Rpb24gdHdpY2UgKi9cbiAgcHJpdmF0ZSBsYXN0QWN0aW9uRW1pdDogeyBpZDogc3RyaW5nOyB0aW1lOiBudW1iZXIgfSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBQ1RJT05fQ09PTERPV05fTVMgPSA1MDA7XG5cbiAgZ2V0IGhhc1NlbGVjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoIHx8IDApID4gMDtcbiAgfVxuXG4gIGdldCBpc1NpbmdsZVNlbGVjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zPy5sZW5ndGggPT09IDE7XG4gIH1cblxuICBnZXQgc2VsZWN0aW9uTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBuID0gdGhpcy5zZWxlY3RlZEl0ZW1zPy5sZW5ndGggfHwgMDtcbiAgICByZXR1cm4gbiA9PT0gMSA/ICcxIHNlbGVjdGVkJyA6IGAke259IHNlbGVjdGVkYDtcbiAgfVxuXG4gIHZpc2libGVBY3Rpb25zKCk6IFRhYmxlQWN0aW9uW10ge1xuICAgIGNvbnN0IGN0eCA9IHsgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRJdGVtcyB8fCBbXSB9O1xuICAgIHJldHVybiAodGhpcy5hY3Rpb25zIHx8IFtdKS5maWx0ZXIoYSA9PiAoYS5zaG93ID8gYS5zaG93KGN0eCkgOiB0cnVlKSk7XG4gIH1cblxuICBpc0Rpc2FibGVkKGFjdGlvbjogVGFibGVBY3Rpb24pOiBib29sZWFuIHtcbiAgICBjb25zdCBjdHggPSB7IHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkSXRlbXMgfHwgW10gfTtcbiAgICByZXR1cm4gYWN0aW9uLmRpc2FibGVkID8gISFhY3Rpb24uZGlzYWJsZWQoY3R4KSA6IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEtlZXAgZmlyc3QgY2xpY2sgYWN0aW9uYWJsZSBieSBwcmV2ZW50aW5nIHBvaW50ZXIgZG93biBmcm9tIGJlaW5nIHVzZWQgb25seSBmb3IgZm9jdXMgdHJhbnNmZXIuXG4gICAqL1xuICBvbkFjdGlvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCwgYWN0aW9uOiBUYWJsZUFjdGlvbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQoYWN0aW9uKSB8fCBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLm9uQWN0aW9uKGFjdGlvbik7XG4gIH1cblxuICBvbkFjdGlvbihhY3Rpb246IFRhYmxlQWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZChhY3Rpb24pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5sYXN0QWN0aW9uRW1pdCAmJlxuICAgICAgdGhpcy5sYXN0QWN0aW9uRW1pdC5pZCA9PT0gYWN0aW9uLmlkICYmXG4gICAgICBub3cgLSB0aGlzLmxhc3RBY3Rpb25FbWl0LnRpbWUgPCBUYWJsZUFjdGlvblRvb2xiYXJDb21wb25lbnQuQUNUSU9OX0NPT0xET1dOX01TXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubGFzdEFjdGlvbkVtaXQgPSB7IGlkOiBhY3Rpb24uaWQsIHRpbWU6IG5vdyB9O1xuICAgIGNvbnN0IGNvbnRleHQgPSB7IGlkOiBhY3Rpb24uaWQsIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkSXRlbXMgfHwgW10gfTtcbiAgICBpZiAoYWN0aW9uLm9uQ2xpY2spIHtcbiAgICAgIGFjdGlvbi5vbkNsaWNrKGNvbnRleHQpO1xuICAgIH0gZWxzZSBpZiAoYWN0aW9uLmFjdGlvbikge1xuICAgICAgYWN0aW9uLmFjdGlvbihjb250ZXh0KTtcbiAgICB9XG4gICAgdGhpcy5hY3Rpb25DbGljay5lbWl0KGNvbnRleHQpO1xuICB9XG5cbiAgb25TZWxlY3RBbGxDaGFuZ2UoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0QWxsQ2hhbmdlLmVtaXQoY2hlY2tlZCk7XG4gIH1cblxuICBvbkRpc21pc3MoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNtaXNzLmVtaXQoKTtcbiAgfVxufVxuXG5cbiIsIjxkaXYgY2xhc3M9XCJjcWEtdWktcm9vdFwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJhY3Rpb24tdG9vbGJhciBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciB4bDpjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1nYXAtMiBjcWEtZmxleC13cmFwIGNxYS1weS1bMTUuNXB4XSBzbTpjcWEtcHgtWzM0cHhdIGNxYS1weC1bMjBweF0gY3FhLWJnLXByaW1hcnkgY3FhLXRleHQtd2hpdGUgY3FhLXJvdW5kZWQtWzdweF0gY3FhLXNoYWRvdy1tZFwiXG4gICAgKm5nSWY9XCJoYXNTZWxlY3Rpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLXRvb2xiYXItbGVmdCBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzIxcHhdIGNxYS1mb250LW1lZGl1bVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dTZWxlY3RBbGxcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLWN1cnNvci1wb2ludGVyIGNxYS1zZWxlY3Qtbm9uZVwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJhbGxTZWxlY3RlZFwiIChjaGFuZ2UpPVwib25TZWxlY3RBbGxDaGFuZ2UoJGFueSgkZXZlbnQudGFyZ2V0KS5jaGVja2VkKVwiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1hbGwgY3FhLXctNCBjcWEtaC00IGNxYS1yb3VuZGVkIGNxYS1ib3JkZXIgY3FhLWJvcmRlci13aGl0ZSBjcWEtYmctdHJhbnNwYXJlbnQgaG92ZXI6Y3FhLWJnLXRyYW5zcGFyZW50IGNxYS1hY2NlbnQtcHJpbWFyeVwiIC8+XG4gICAgICAgICAgPHNwYW4+U2VsZWN0IGFsbDwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtYm9yZGVyLWwgY3FhLWJvcmRlci13aGl0ZS81MCBjcWEtcGwtMiBjcWEtYm9yZGVyLXNvbGlkIGNxYS1zZWxmLXN0cmV0Y2ggY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlclwiPnt7IHNlbGVjdGlvbkxhYmVsIH19PC9zcGFuPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFzaG93U2VsZWN0QWxsXCI+e3sgc2VsZWN0aW9uTGFiZWwgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbi10b29sYmFyLXJpZ2h0IGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC1bN3B4XVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHZpc2libGVBY3Rpb25zKClcIj5cbiAgICAgICAgPGRpdiBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoYWN0aW9uKVwiIFtjbGFzcy5jcWEtb3BhY2l0eS01MF09XCJpc0Rpc2FibGVkKGFjdGlvbilcIiBbY2xhc3MuY3FhLWN1cnNvci1ub3QtYWxsb3dlZF09XCJpc0Rpc2FibGVkKGFjdGlvbilcIlxuICAgICAgICAgIChtb3VzZWRvd24pPVwib25BY3Rpb25Nb3VzZURvd24oJGV2ZW50LCBhY3Rpb24pXCJcbiAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC1bOC43NXB4XSBjcWEtcHktWzVweF0gY3FhLXB4LVs4Ljc1cHhdIGNxYS1jdXJzb3ItcG9pbnRlciBjcWEtdGV4dC1bMTIuM3B4XSBjcWEtbGVhZGluZy1bMTcuNXB4XSBjcWEtZm9udC1tZWRpdW0gaG92ZXI6Y3FhLWJnLXdoaXRlLzEwIGNxYS1yb3VuZGVkXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiIWNxYS13LVsxNnB4XSAhY3FhLWgtWzE2cHhdICFjcWEtdGV4dC1bMTZweF1cIj57eyBhY3Rpb24uaWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZDpjcWEtZmxleCBjcWEtaGlkZGVuXCI+e3sgYWN0aW9uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dEaXNtaXNzXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkRpc21pc3MoKVwiIGNsYXNzPVwiY3FhLXAtMSBjcWEtcm91bmRlZCBob3ZlcjpjcWEtYmctd2hpdGUvMTAgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXJcIlxuICAgICAgICB0aXRsZT1cIkRpc21pc3NcIiBhcmlhLWxhYmVsPVwiRGlzbWlzc1wiPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCIhY3FhLXctWzIwcHhdICFjcWEtaC1bMjBweF0gIWNxYS10ZXh0LVsyMHB4XVwiPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==