ctt-puro 0.20.0 → 0.20.2

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.
@@ -24,7 +24,7 @@ export class PuroContactFormComponent {
24
24
  controls[input.name] = ['', input.validators];
25
25
  }
26
26
  });
27
- if (this.textarea) {
27
+ if (this.textarea && this.textarea.name) {
28
28
  controls[this.textarea.name] = ['', this.textarea?.validators];
29
29
  }
30
30
  controls['conditions'] = [false, Validators.requiredTrue];
@@ -41,13 +41,13 @@ export class PuroContactFormComponent {
41
41
  case 'email':
42
42
  this.emailInput = input;
43
43
  break;
44
- case 'nombre':
44
+ case 'name':
45
45
  this.nameInput = input;
46
46
  break;
47
- case 'apellido':
47
+ case 'apellidos':
48
48
  this.surnameInput = input;
49
49
  break;
50
- case 'telefono':
50
+ case 'phone':
51
51
  this.phoneInput = input;
52
52
  break;
53
53
  default:
@@ -56,7 +56,7 @@ export class PuroContactFormComponent {
56
56
  });
57
57
  }
58
58
  validateInput(input) {
59
- if (input) {
59
+ if (input && input.name) {
60
60
  input.valid = this.form.controls[input.name].errors === null;
61
61
  }
62
62
  }
@@ -76,11 +76,11 @@ export class PuroContactFormComponent {
76
76
  });
77
77
  }
78
78
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroContactFormComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
79
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroContactFormComponent, isStandalone: true, selector: "lib-puro-contact-form", inputs: { title: "title", subtitle: "subtitle", promotions: "promotions", requiredLabel: "requiredLabel", img: "img", conditionsLink: "conditionsLink", prefix: "prefix", dropdown: "dropdown", ndDropdown: "ndDropdown", inputs: "inputs", textarea: "textarea", button: "button" }, outputs: { submit: "submit" }, ngImport: i0, template: "<section class=\"contactForm\">\r\n @if (title) {\r\n <span class=\"contactForm__title\">{{ title }}</span>\r\n }\r\n <div class=\"contactForm__inner\">\r\n <div class=\"contactForm__graphic\">\r\n <div class=\"contactForm__graphicInner\">\r\n @if (img) {\r\n <img\r\n [src]=\"img.src\"\r\n [alt]=\"img.alt\"\r\n width=\"467\"\r\n height=\"551\"\r\n class=\"contactForm__graphicInner--img\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__content\">\r\n @if (title) {\r\n <span class=\"contactForm__title\">{{ title }}</span>\r\n }\r\n @if (subtitle) {\r\n <div\r\n class=\"contactForm__paragraph\"\r\n [innerHtml]=\"subtitle\"\r\n ></div>\r\n }\r\n <form [formGroup]=\"form\" class=\"form\">\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (dropdown) {\r\n <div class=\"form__group withIcon\">\r\n <select class=\"form__control\">\r\n <option>\r\n {{ dropdown.placeholder }}\r\n </option>\r\n @for (\r\n option of dropdown.options;\r\n track $index\r\n ) {\r\n @if (option) {\r\n <option [value]=\"option.code\">\r\n {{ option.name }}\r\n </option>\r\n }\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (ndDropdown) {\r\n <div class=\"form__group withIcon\">\r\n <select class=\"form__control\">\r\n <option>\r\n {{ ndDropdown.placeholder }}\r\n </option>\r\n @for (\r\n option of ndDropdown.options;\r\n track $index\r\n ) {\r\n <option [value]=\"option.code\">\r\n {{ option.name }}\r\n </option>\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n @if (emailInput) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"email\"\r\n class=\"form__control\"\r\n [placeholder]=\"emailInput.placeholder\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"19\"\r\n height=\"15\"\r\n >\r\n <use href=\"#email\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (nameInput && nameInput.name) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"Name\"\r\n id=\"Name\"\r\n [placeholder]=\"nameInput.placeholder\"\r\n [formControlName]=\"nameInput.name\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"18\"\r\n height=\"20\"\r\n >\r\n <use href=\"#user\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"contactForm__col\">\r\n @if (surnameInput && surnameInput.name) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"Apellidos\"\r\n id=\"apellidos\"\r\n [placeholder]=\"surnameInput.placeholder\"\r\n [formControlName]=\"surnameInput.name\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"18\"\r\n height=\"20\"\r\n >\r\n <use href=\"#user\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (prefix) {\r\n <div class=\"form__group withIcon\">\r\n <select\r\n class=\"form__control\"\r\n name=\"Prefijo\"\r\n formControlName=\"prefix\"\r\n >\r\n @if (prefix.placeholder) {\r\n <option>\r\n {{ prefix.placeholder }}\r\n </option>\r\n }\r\n @for (\r\n item of prefix.options || [];\r\n track $index\r\n ) {\r\n <option [value]=\"item.code\">\r\n {{ item.name }}\r\n </option>\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"contactForm__col\">\r\n @if (phoneInput) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"phone\"\r\n id=\"phone\"\r\n [placeholder]=\"phoneInput.placeholder\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"17\"\r\n height=\"17\"\r\n >\r\n <use href=\"#phone\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (textarea) {\r\n <div class=\"form__group no-dot\">\r\n <textarea\r\n class=\"form__control\"\r\n [placeholder]=\"textarea.placeholder\"\r\n ></textarea>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n <div class=\"block-checkbox\">\r\n @if (requiredLabel) {\r\n <span class=\"required-label\">{{\r\n requiredLabel\r\n }}</span>\r\n }\r\n @if (conditionsLink) {\r\n <label class=\"form__checkbox\">\r\n <input\r\n type=\"checkbox\"\r\n checked\r\n class=\"checkbox\"\r\n formControlName=\"conditions\"\r\n />\r\n <span class=\"box\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"9\"\r\n height=\"7\"\r\n >\r\n <use href=\"#checkbox-tick\"></use>\r\n </svg>\r\n </span>\r\n <span [innerHTML]=\"conditionsLink\"> </span>\r\n </label>\r\n }\r\n @if (promotions) {\r\n <label class=\"form__checkbox\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"checkbox\"\r\n formControlName=\"promotions\"\r\n />\r\n <span class=\"box\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"9\"\r\n height=\"7\"\r\n >\r\n <use href=\"#checkbox-tick\"></use>\r\n </svg>\r\n </span>\r\n <span>{{ promotions }}</span>\r\n </label>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"btn__group\">\r\n @if (button) {\r\n <button\r\n class=\"btn btn__primary--outline js-active-modal\"\r\n data-modal_name=\"thankyou\"\r\n [attr.aria-label]=\"button.label\"\r\n >\r\n <span>{{ button.label }}</span>\r\n </button>\r\n }\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</section>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
79
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroContactFormComponent, isStandalone: true, selector: "lib-puro-contact-form", inputs: { title: "title", subtitle: "subtitle", promotions: "promotions", requiredLabel: "requiredLabel", img: "img", conditionsLink: "conditionsLink", prefix: "prefix", dropdown: "dropdown", ndDropdown: "ndDropdown", inputs: "inputs", textarea: "textarea", button: "button" }, outputs: { submit: "submit" }, ngImport: i0, template: "<section class=\"contactForm\">\r\n @if (title) {\r\n <span class=\"contactForm__title\">{{ title }}</span>\r\n }\r\n <div class=\"contactForm__inner\">\r\n <div class=\"contactForm__graphic\">\r\n <div class=\"contactForm__graphicInner\">\r\n @if (img) {\r\n <img\r\n [src]=\"img.src\"\r\n [alt]=\"img.alt\"\r\n width=\"467\"\r\n height=\"551\"\r\n class=\"contactForm__graphicInner--img\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__content\">\r\n @if (title) {\r\n <span class=\"contactForm__title\">{{ title }}</span>\r\n }\r\n @if (subtitle) {\r\n <div\r\n class=\"contactForm__paragraph\"\r\n [innerHtml]=\"subtitle\"\r\n ></div>\r\n }\r\n <form [formGroup]=\"form\" class=\"form\">\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (dropdown) {\r\n <div class=\"form__group withIcon\">\r\n <select class=\"form__control\">\r\n <option>\r\n {{ dropdown.placeholder }}\r\n </option>\r\n @for (\r\n option of dropdown.options;\r\n track $index\r\n ) {\r\n @if (option) {\r\n <option [value]=\"option.code\">\r\n {{ option.name }}\r\n </option>\r\n }\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (ndDropdown) {\r\n <div class=\"form__group withIcon\">\r\n <select class=\"form__control\">\r\n <option>\r\n {{ ndDropdown.placeholder }}\r\n </option>\r\n @for (\r\n option of ndDropdown.options;\r\n track $index\r\n ) {\r\n <option [value]=\"option.code\">\r\n {{ option.name }}\r\n </option>\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n @if (emailInput) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"email\"\r\n class=\"form__control\"\r\n [placeholder]=\"emailInput.placeholder\"\r\n (blur)=\"validateInput(emailInput)\"\r\n (change)=\"inputChange($event, emailInput)\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"19\"\r\n height=\"15\"\r\n >\r\n <use href=\"#email\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n @if (!emailInput.valid) {\r\n <span class=\"form-error\">{{\r\n emailInput.error\r\n }}</span>\r\n }\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (nameInput && nameInput.name) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"Name\"\r\n id=\"Name\"\r\n [placeholder]=\"nameInput.placeholder\"\r\n [formControlName]=\"nameInput.name\"\r\n (blur)=\"validateInput(nameInput)\"\r\n (change)=\"inputChange($event, nameInput)\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"18\"\r\n height=\"20\"\r\n >\r\n <use href=\"#user\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n @if (!nameInput.valid) {\r\n <span class=\"form-error\">{{\r\n nameInput.error\r\n }}</span>\r\n }\r\n }\r\n </div>\r\n <div class=\"contactForm__col\">\r\n @if (surnameInput && surnameInput.name) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"Apellidos\"\r\n id=\"apellidos\"\r\n [placeholder]=\"surnameInput.placeholder\"\r\n [formControlName]=\"surnameInput.name\"\r\n (blur)=\"validateInput(surnameInput)\"\r\n (change)=\"inputChange($event, surnameInput)\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"18\"\r\n height=\"20\"\r\n >\r\n <use href=\"#user\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n @if (!surnameInput.valid) {\r\n <span class=\"form-error\">{{\r\n surnameInput.error\r\n }}</span>\r\n }\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (prefix) {\r\n <div class=\"form__group withIcon\">\r\n <select\r\n class=\"form__control\"\r\n name=\"Prefijo\"\r\n formControlName=\"prefix\"\r\n >\r\n @if (prefix.placeholder) {\r\n <option>\r\n {{ prefix.placeholder }}\r\n </option>\r\n }\r\n @for (\r\n item of prefix.options || [];\r\n track $index\r\n ) {\r\n <option [value]=\"item.code\">\r\n {{ item.name }}\r\n </option>\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"contactForm__col\">\r\n @if (phoneInput) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"phone\"\r\n id=\"phone\"\r\n [placeholder]=\"phoneInput.placeholder\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"17\"\r\n height=\"17\"\r\n >\r\n <use href=\"#phone\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n @if (!phoneInput.valid) {\r\n <span class=\"form-error\">{{\r\n phoneInput.error\r\n }}</span>\r\n }\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (textarea) {\r\n <div class=\"form__group no-dot\">\r\n <textarea\r\n class=\"form__control\"\r\n [placeholder]=\"textarea.placeholder\"\r\n ></textarea>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n <div class=\"block-checkbox\">\r\n @if (requiredLabel) {\r\n <span class=\"required-label\">{{\r\n requiredLabel\r\n }}</span>\r\n }\r\n @if (conditionsLink) {\r\n <label class=\"form__checkbox\">\r\n <input\r\n type=\"checkbox\"\r\n checked\r\n class=\"checkbox\"\r\n formControlName=\"conditions\"\r\n />\r\n <span class=\"box\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"9\"\r\n height=\"7\"\r\n >\r\n <use href=\"#checkbox-tick\"></use>\r\n </svg>\r\n </span>\r\n <span [innerHTML]=\"conditionsLink\"> </span>\r\n </label>\r\n }\r\n @if (promotions) {\r\n <label class=\"form__checkbox\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"checkbox\"\r\n formControlName=\"promotions\"\r\n />\r\n <span class=\"box\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"9\"\r\n height=\"7\"\r\n >\r\n <use href=\"#checkbox-tick\"></use>\r\n </svg>\r\n </span>\r\n <span>{{ promotions }}</span>\r\n </label>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"btn__group\">\r\n @if (button) {\r\n <button\r\n class=\"btn btn__primary--outline js-active-modal\"\r\n data-modal_name=\"thankyou\"\r\n [attr.aria-label]=\"button.label\"\r\n >\r\n <span>{{ button.label }}</span>\r\n </button>\r\n }\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</section>\r\n", styles: [".form-error{position:relative;top:10px;color:var(--grey)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
80
80
  }
81
81
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroContactFormComponent, decorators: [{
82
82
  type: Component,
83
- args: [{ selector: 'lib-puro-contact-form', standalone: true, imports: [CommonModule, FormsModule, ReactiveFormsModule], template: "<section class=\"contactForm\">\r\n @if (title) {\r\n <span class=\"contactForm__title\">{{ title }}</span>\r\n }\r\n <div class=\"contactForm__inner\">\r\n <div class=\"contactForm__graphic\">\r\n <div class=\"contactForm__graphicInner\">\r\n @if (img) {\r\n <img\r\n [src]=\"img.src\"\r\n [alt]=\"img.alt\"\r\n width=\"467\"\r\n height=\"551\"\r\n class=\"contactForm__graphicInner--img\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__content\">\r\n @if (title) {\r\n <span class=\"contactForm__title\">{{ title }}</span>\r\n }\r\n @if (subtitle) {\r\n <div\r\n class=\"contactForm__paragraph\"\r\n [innerHtml]=\"subtitle\"\r\n ></div>\r\n }\r\n <form [formGroup]=\"form\" class=\"form\">\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (dropdown) {\r\n <div class=\"form__group withIcon\">\r\n <select class=\"form__control\">\r\n <option>\r\n {{ dropdown.placeholder }}\r\n </option>\r\n @for (\r\n option of dropdown.options;\r\n track $index\r\n ) {\r\n @if (option) {\r\n <option [value]=\"option.code\">\r\n {{ option.name }}\r\n </option>\r\n }\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (ndDropdown) {\r\n <div class=\"form__group withIcon\">\r\n <select class=\"form__control\">\r\n <option>\r\n {{ ndDropdown.placeholder }}\r\n </option>\r\n @for (\r\n option of ndDropdown.options;\r\n track $index\r\n ) {\r\n <option [value]=\"option.code\">\r\n {{ option.name }}\r\n </option>\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n @if (emailInput) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"email\"\r\n class=\"form__control\"\r\n [placeholder]=\"emailInput.placeholder\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"19\"\r\n height=\"15\"\r\n >\r\n <use href=\"#email\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (nameInput && nameInput.name) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"Name\"\r\n id=\"Name\"\r\n [placeholder]=\"nameInput.placeholder\"\r\n [formControlName]=\"nameInput.name\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"18\"\r\n height=\"20\"\r\n >\r\n <use href=\"#user\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"contactForm__col\">\r\n @if (surnameInput && surnameInput.name) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"Apellidos\"\r\n id=\"apellidos\"\r\n [placeholder]=\"surnameInput.placeholder\"\r\n [formControlName]=\"surnameInput.name\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"18\"\r\n height=\"20\"\r\n >\r\n <use href=\"#user\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (prefix) {\r\n <div class=\"form__group withIcon\">\r\n <select\r\n class=\"form__control\"\r\n name=\"Prefijo\"\r\n formControlName=\"prefix\"\r\n >\r\n @if (prefix.placeholder) {\r\n <option>\r\n {{ prefix.placeholder }}\r\n </option>\r\n }\r\n @for (\r\n item of prefix.options || [];\r\n track $index\r\n ) {\r\n <option [value]=\"item.code\">\r\n {{ item.name }}\r\n </option>\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"contactForm__col\">\r\n @if (phoneInput) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"phone\"\r\n id=\"phone\"\r\n [placeholder]=\"phoneInput.placeholder\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"17\"\r\n height=\"17\"\r\n >\r\n <use href=\"#phone\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (textarea) {\r\n <div class=\"form__group no-dot\">\r\n <textarea\r\n class=\"form__control\"\r\n [placeholder]=\"textarea.placeholder\"\r\n ></textarea>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n <div class=\"block-checkbox\">\r\n @if (requiredLabel) {\r\n <span class=\"required-label\">{{\r\n requiredLabel\r\n }}</span>\r\n }\r\n @if (conditionsLink) {\r\n <label class=\"form__checkbox\">\r\n <input\r\n type=\"checkbox\"\r\n checked\r\n class=\"checkbox\"\r\n formControlName=\"conditions\"\r\n />\r\n <span class=\"box\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"9\"\r\n height=\"7\"\r\n >\r\n <use href=\"#checkbox-tick\"></use>\r\n </svg>\r\n </span>\r\n <span [innerHTML]=\"conditionsLink\"> </span>\r\n </label>\r\n }\r\n @if (promotions) {\r\n <label class=\"form__checkbox\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"checkbox\"\r\n formControlName=\"promotions\"\r\n />\r\n <span class=\"box\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"9\"\r\n height=\"7\"\r\n >\r\n <use href=\"#checkbox-tick\"></use>\r\n </svg>\r\n </span>\r\n <span>{{ promotions }}</span>\r\n </label>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"btn__group\">\r\n @if (button) {\r\n <button\r\n class=\"btn btn__primary--outline js-active-modal\"\r\n data-modal_name=\"thankyou\"\r\n [attr.aria-label]=\"button.label\"\r\n >\r\n <span>{{ button.label }}</span>\r\n </button>\r\n }\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</section>\r\n" }]
83
+ args: [{ selector: 'lib-puro-contact-form', standalone: true, imports: [CommonModule, FormsModule, ReactiveFormsModule], template: "<section class=\"contactForm\">\r\n @if (title) {\r\n <span class=\"contactForm__title\">{{ title }}</span>\r\n }\r\n <div class=\"contactForm__inner\">\r\n <div class=\"contactForm__graphic\">\r\n <div class=\"contactForm__graphicInner\">\r\n @if (img) {\r\n <img\r\n [src]=\"img.src\"\r\n [alt]=\"img.alt\"\r\n width=\"467\"\r\n height=\"551\"\r\n class=\"contactForm__graphicInner--img\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__content\">\r\n @if (title) {\r\n <span class=\"contactForm__title\">{{ title }}</span>\r\n }\r\n @if (subtitle) {\r\n <div\r\n class=\"contactForm__paragraph\"\r\n [innerHtml]=\"subtitle\"\r\n ></div>\r\n }\r\n <form [formGroup]=\"form\" class=\"form\">\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (dropdown) {\r\n <div class=\"form__group withIcon\">\r\n <select class=\"form__control\">\r\n <option>\r\n {{ dropdown.placeholder }}\r\n </option>\r\n @for (\r\n option of dropdown.options;\r\n track $index\r\n ) {\r\n @if (option) {\r\n <option [value]=\"option.code\">\r\n {{ option.name }}\r\n </option>\r\n }\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (ndDropdown) {\r\n <div class=\"form__group withIcon\">\r\n <select class=\"form__control\">\r\n <option>\r\n {{ ndDropdown.placeholder }}\r\n </option>\r\n @for (\r\n option of ndDropdown.options;\r\n track $index\r\n ) {\r\n <option [value]=\"option.code\">\r\n {{ option.name }}\r\n </option>\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n @if (emailInput) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"email\"\r\n class=\"form__control\"\r\n [placeholder]=\"emailInput.placeholder\"\r\n (blur)=\"validateInput(emailInput)\"\r\n (change)=\"inputChange($event, emailInput)\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"19\"\r\n height=\"15\"\r\n >\r\n <use href=\"#email\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n @if (!emailInput.valid) {\r\n <span class=\"form-error\">{{\r\n emailInput.error\r\n }}</span>\r\n }\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (nameInput && nameInput.name) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"Name\"\r\n id=\"Name\"\r\n [placeholder]=\"nameInput.placeholder\"\r\n [formControlName]=\"nameInput.name\"\r\n (blur)=\"validateInput(nameInput)\"\r\n (change)=\"inputChange($event, nameInput)\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"18\"\r\n height=\"20\"\r\n >\r\n <use href=\"#user\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n @if (!nameInput.valid) {\r\n <span class=\"form-error\">{{\r\n nameInput.error\r\n }}</span>\r\n }\r\n }\r\n </div>\r\n <div class=\"contactForm__col\">\r\n @if (surnameInput && surnameInput.name) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"Apellidos\"\r\n id=\"apellidos\"\r\n [placeholder]=\"surnameInput.placeholder\"\r\n [formControlName]=\"surnameInput.name\"\r\n (blur)=\"validateInput(surnameInput)\"\r\n (change)=\"inputChange($event, surnameInput)\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"18\"\r\n height=\"20\"\r\n >\r\n <use href=\"#user\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n @if (!surnameInput.valid) {\r\n <span class=\"form-error\">{{\r\n surnameInput.error\r\n }}</span>\r\n }\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (prefix) {\r\n <div class=\"form__group withIcon\">\r\n <select\r\n class=\"form__control\"\r\n name=\"Prefijo\"\r\n formControlName=\"prefix\"\r\n >\r\n @if (prefix.placeholder) {\r\n <option>\r\n {{ prefix.placeholder }}\r\n </option>\r\n }\r\n @for (\r\n item of prefix.options || [];\r\n track $index\r\n ) {\r\n <option [value]=\"item.code\">\r\n {{ item.name }}\r\n </option>\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"contactForm__col\">\r\n @if (phoneInput) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"phone\"\r\n id=\"phone\"\r\n [placeholder]=\"phoneInput.placeholder\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"17\"\r\n height=\"17\"\r\n >\r\n <use href=\"#phone\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n @if (!phoneInput.valid) {\r\n <span class=\"form-error\">{{\r\n phoneInput.error\r\n }}</span>\r\n }\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (textarea) {\r\n <div class=\"form__group no-dot\">\r\n <textarea\r\n class=\"form__control\"\r\n [placeholder]=\"textarea.placeholder\"\r\n ></textarea>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n <div class=\"block-checkbox\">\r\n @if (requiredLabel) {\r\n <span class=\"required-label\">{{\r\n requiredLabel\r\n }}</span>\r\n }\r\n @if (conditionsLink) {\r\n <label class=\"form__checkbox\">\r\n <input\r\n type=\"checkbox\"\r\n checked\r\n class=\"checkbox\"\r\n formControlName=\"conditions\"\r\n />\r\n <span class=\"box\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"9\"\r\n height=\"7\"\r\n >\r\n <use href=\"#checkbox-tick\"></use>\r\n </svg>\r\n </span>\r\n <span [innerHTML]=\"conditionsLink\"> </span>\r\n </label>\r\n }\r\n @if (promotions) {\r\n <label class=\"form__checkbox\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"checkbox\"\r\n formControlName=\"promotions\"\r\n />\r\n <span class=\"box\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"9\"\r\n height=\"7\"\r\n >\r\n <use href=\"#checkbox-tick\"></use>\r\n </svg>\r\n </span>\r\n <span>{{ promotions }}</span>\r\n </label>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"btn__group\">\r\n @if (button) {\r\n <button\r\n class=\"btn btn__primary--outline js-active-modal\"\r\n data-modal_name=\"thankyou\"\r\n [attr.aria-label]=\"button.label\"\r\n >\r\n <span>{{ button.label }}</span>\r\n </button>\r\n }\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</section>\r\n", styles: [".form-error{position:relative;top:10px;color:var(--grey)}\n"] }]
84
84
  }], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { title: [{
85
85
  type: Input
86
86
  }], subtitle: [{
@@ -108,4 +108,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
108
108
  }], submit: [{
109
109
  type: Output
110
110
  }] } });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1jb250YWN0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1jb250YWN0LWZvcm0vcHVyby1jb250YWN0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1jb250YWN0LWZvcm0vcHVyby1jb250YWN0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFHSCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDOzs7QUFXeEIsTUFBTSxPQUFPLHdCQUF3QjtJQVVqQyxJQUFhLE1BQU0sQ0FBQyxHQUFpQjtRQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztRQUNuQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBZ0JELFlBQTZCLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBWmxDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTNDLFlBQU8sR0FBaUIsRUFBRSxDQUFDO1FBRzNCLGVBQVUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFPVyxDQUFDO0lBRWhELFFBQVE7UUFDSixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGNBQWM7UUFDVixNQUFNLFFBQVEsR0FBMkIsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUNaLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2pEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ25FO1FBRUQsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMxRCxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkQsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUvQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzVCLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRTtnQkFDaEIsS0FBSyxPQUFPO29CQUNSLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO29CQUN4QixNQUFNO2dCQUNWLEtBQUssUUFBUTtvQkFDVCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztvQkFDdkIsTUFBTTtnQkFDVixLQUFLLFVBQVU7b0JBQ1gsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7b0JBQzFCLE1BQU07Z0JBQ1YsS0FBSyxVQUFVO29CQUNYLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO29CQUN4QixNQUFNO2dCQUVWO29CQUNJLE1BQU07YUFDYjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFpQjtRQUMzQixJQUFJLEtBQUssRUFBRTtZQUNQLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUM7U0FDakU7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVksRUFBRSxLQUFpQjtRQUN2QyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUV0RCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFO1lBQ3RCLFlBQVksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ25FO0lBQ0wsQ0FBQztJQUVELFNBQVM7UUFDTCxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztTQUM1QjtRQUNELElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDNUIsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQXJHUSx3QkFBd0I7bUdBQXhCLHdCQUF3QixzWUNuQnJDLDY3ZEE4U0EseUREL1JjLFlBQVksOEJBQUUsV0FBVyx1dUNBQUUsbUJBQW1COzs0RkFJL0Msd0JBQXdCO2tCQVBwQyxTQUFTOytCQUNJLHVCQUF1QixjQUNyQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixDQUFDO2dGQUtoRCxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDTyxNQUFNO3NCQUFsQixLQUFLO2dCQUlHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIEZvcm1CdWlsZGVyLFxyXG4gICAgRm9ybUdyb3VwLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFB1cm9CdXR0b25JLCBQdXJvSW1hZ2VJLCBQdXJvSW5wdXRJIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFB1cm9Ecm9wZG93bkkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3B1cm8tZHJvcGRvd24uaW50ZXJmYWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItcHVyby1jb250YWN0LWZvcm0nLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9wdXJvLWNvbnRhY3QtZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybDogJy4vcHVyby1jb250YWN0LWZvcm0uY29tcG9uZW50LnNjc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHVyb0NvbnRhY3RGb3JtQ29tcG9uZW50IHtcclxuICAgIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgc3VidGl0bGU/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBwcm9tb3Rpb25zPzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgcmVxdWlyZWRMYWJlbD86IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGltZz86IFB1cm9JbWFnZUk7XHJcbiAgICBASW5wdXQoKSBjb25kaXRpb25zTGluaz86IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHByZWZpeD86IFB1cm9Ecm9wZG93bkk7XHJcbiAgICBASW5wdXQoKSBkcm9wZG93bj86IFB1cm9Ecm9wZG93bkk7XHJcbiAgICBASW5wdXQoKSBuZERyb3Bkb3duPzogUHVyb0Ryb3Bkb3duSTtcclxuICAgIEBJbnB1dCgpIHNldCBpbnB1dHMoaW5wOiBQdXJvSW5wdXRJW10pIHtcclxuICAgICAgICB0aGlzLl9pbnB1dHMgPSBpbnA7XHJcbiAgICAgICAgdGhpcy5zZXRJbnB1dFByb3BlcnRpZXMoKTtcclxuICAgIH1cclxuICAgIEBJbnB1dCgpIHRleHRhcmVhPzogUHVyb0lucHV0STtcclxuICAgIEBJbnB1dCgpIGJ1dHRvbj86IFB1cm9CdXR0b25JO1xyXG5cclxuICAgIEBPdXRwdXQoKSBzdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICBfaW5wdXRzOiBQdXJvSW5wdXRJW10gPSBbXTtcclxuXHJcbiAgICBmb3JtITogRm9ybUdyb3VwO1xyXG4gICAgZm9ybVJlYWR5JCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gICAgZW1haWxJbnB1dD86IFB1cm9JbnB1dEk7XHJcbiAgICBuYW1lSW5wdXQ/OiBQdXJvSW5wdXRJO1xyXG4gICAgc3VybmFtZUlucHV0PzogUHVyb0lucHV0STtcclxuICAgIHBob25lSW5wdXQ/OiBQdXJvSW5wdXRJO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyKSB7fVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0aWFsaXplRm9ybSgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjb250cm9sczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG4gICAgICAgIHRoaXMuX2lucHV0cz8uZm9yRWFjaCgoaW5wdXQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGlucHV0Lm5hbWUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRyb2xzW2lucHV0Lm5hbWVdID0gWycnLCBpbnB1dC52YWxpZGF0b3JzXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAodGhpcy50ZXh0YXJlYSkge1xyXG4gICAgICAgICAgICBjb250cm9sc1t0aGlzLnRleHRhcmVhLm5hbWUhXSA9IFsnJywgdGhpcy50ZXh0YXJlYT8udmFsaWRhdG9yc107XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb250cm9sc1snY29uZGl0aW9ucyddID0gW2ZhbHNlLCBWYWxpZGF0b3JzLnJlcXVpcmVkVHJ1ZV07XHJcbiAgICAgICAgY29udHJvbHNbJ3Byb21vdGlvbnMnXSA9IFtmYWxzZV07XHJcbiAgICAgICAgY29udHJvbHNbJ2Ryb3Bkb3duJ10gPSBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdO1xyXG4gICAgICAgIGNvbnRyb2xzWyduZERyb3Bkb3duJ10gPSBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdO1xyXG4gICAgICAgIGNvbnRyb2xzWydwcmVmaXgnXSA9IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF07XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoY29udHJvbHMpO1xyXG4gICAgICAgIHRoaXMuZm9ybVJlYWR5JC5zZXQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SW5wdXRQcm9wZXJ0aWVzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2lucHV0cz8uZm9yRWFjaCgoaW5wdXQpID0+IHtcclxuICAgICAgICAgICAgc3dpdGNoIChpbnB1dC5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdlbWFpbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWFpbElucHV0ID0gaW5wdXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdub21icmUnOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZUlucHV0ID0gaW5wdXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdhcGVsbGlkbyc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdXJuYW1lSW5wdXQgPSBpbnB1dDtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3RlbGVmb25vJzpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBob25lSW5wdXQgPSBpbnB1dDtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFsaWRhdGVJbnB1dChpbnB1dDogUHVyb0lucHV0SSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChpbnB1dCkge1xyXG4gICAgICAgICAgICBpbnB1dC52YWxpZCA9IHRoaXMuZm9ybS5jb250cm9sc1tpbnB1dC5uYW1lIV0uZXJyb3JzID09PSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbnB1dENoYW5nZShldmVudDogRXZlbnQsIGlucHV0OiBQdXJvSW5wdXRJKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgaW5wdXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcblxyXG4gICAgICAgIGlmIChpbnB1dC50eXBlID09PSAndGVsJykge1xyXG4gICAgICAgICAgICBpbnB1dEVsZW1lbnQudmFsdWUgPSBpbnB1dEVsZW1lbnQudmFsdWUucmVwbGFjZSgvW14wLTkrXS9nLCAnJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlc2V0Rm9ybSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZvcm0/LnJlc2V0KCk7XHJcbiAgICAgICAgaWYgKHRoaXMudGV4dGFyZWEpIHtcclxuICAgICAgICAgICAgdGhpcy50ZXh0YXJlYS52YWx1ZSA9ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9pbnB1dHM/LmZvckVhY2goKGlucHV0KSA9PiB7XHJcbiAgICAgICAgICAgIGlucHV0LnZhbHVlID0gJyc7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPHNlY3Rpb24gY2xhc3M9XCJjb250YWN0Rm9ybVwiPlxyXG4gICAgQGlmICh0aXRsZSkge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGFjdEZvcm1fX3RpdGxlXCI+e3sgdGl0bGUgfX08L3NwYW4+XHJcbiAgICB9XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX2lubmVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19ncmFwaGljXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fZ3JhcGhpY0lubmVyXCI+XHJcbiAgICAgICAgICAgICAgICBAaWYgKGltZykge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWcuc3JjXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJpbWcuYWx0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI0NjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI1NTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRhY3RGb3JtX19ncmFwaGljSW5uZXItLWltZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19jb250ZW50XCI+XHJcbiAgICAgICAgICAgIEBpZiAodGl0bGUpIHtcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGFjdEZvcm1fX3RpdGxlXCI+e3sgdGl0bGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQGlmIChzdWJ0aXRsZSkge1xyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udGFjdEZvcm1fX3BhcmFncmFwaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubmVySHRtbF09XCJzdWJ0aXRsZVwiXHJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJmb3JtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX3Jvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZHJvcGRvd24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtX19ncm91cCB3aXRoSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtX19jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkcm9wZG93bi5wbGFjZWhvbGRlciB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24gb2YgZHJvcGRvd24ub3B0aW9ucztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrICRpbmRleFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAob3B0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwib3B0aW9uLmNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI3NlbGVjdC1hcnJvd1wiPjwvdXNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX3Jvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobmREcm9wZG93bikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2dyb3VwIHdpdGhJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm1fX2NvbnRyb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG5kRHJvcGRvd24ucGxhY2Vob2xkZXIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uIG9mIG5kRHJvcGRvd24ub3B0aW9ucztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrICRpbmRleFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi5jb2RlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlIGhyZWY9XCIjc2VsZWN0LWFycm93XCI+PC91c2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZW1haWxJbnB1dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2dyb3VwIHdpdGhJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJlbWFpbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybV9fY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJlbWFpbElucHV0LnBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxOVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgaHJlZj1cIiNlbWFpbFwiPjwvdXNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX3Jvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobmFtZUlucHV0ICYmIG5hbWVJbnB1dC5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybV9fZ3JvdXAgd2l0aEljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm1fX2NvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJuYW1lSW5wdXQucGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5hbWVJbnB1dC5uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgaHJlZj1cIiN1c2VyXCI+PC91c2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzdXJuYW1lSW5wdXQgJiYgc3VybmFtZUlucHV0Lm5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtX19ncm91cCB3aXRoSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybV9fY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJBcGVsbGlkb3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImFwZWxsaWRvc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzdXJuYW1lSW5wdXQucGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInN1cm5hbWVJbnB1dC5uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgaHJlZj1cIiN1c2VyXCI+PC91c2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChwcmVmaXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtX19ncm91cCB3aXRoSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtX19jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIlByZWZpam9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcmVmaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChwcmVmaXgucGxhY2Vob2xkZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcHJlZml4LnBsYWNlaG9sZGVyIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gb2YgcHJlZml4Lm9wdGlvbnMgfHwgW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayAkaW5kZXhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJpdGVtLmNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlIGhyZWY9XCIjc2VsZWN0LWFycm93XCI+PC91c2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChwaG9uZUlucHV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybV9fZ3JvdXAgd2l0aEljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm1fX2NvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicGhvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInBob25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBob25lSW5wdXQucGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI3Bob25lXCI+PC91c2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICh0ZXh0YXJlYSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2dyb3VwIG5vLWRvdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm1fX2NvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwidGV4dGFyZWEucGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX2NvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmxvY2stY2hlY2tib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocmVxdWlyZWRMYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWQtbGFiZWxcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZExhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbmRpdGlvbnNMaW5rKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybV9fY2hlY2tib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb25kaXRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgaHJlZj1cIiNjaGVja2JveC10aWNrXCI+PC91c2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImNvbmRpdGlvbnNMaW5rXCI+IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChwcm9tb3Rpb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybV9fY2hlY2tib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcm9tb3Rpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgaHJlZj1cIiNjaGVja2JveC10aWNrXCI+PC91c2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBwcm9tb3Rpb25zIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bl9fZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICBAaWYgKGJ1dHRvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fX3ByaW1hcnktLW91dGxpbmUganMtYWN0aXZlLW1vZGFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtbW9kYWxfbmFtZT1cInRoYW5reW91XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYnV0dG9uLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuIl19
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1jb250YWN0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1jb250YWN0LWZvcm0vcHVyby1jb250YWN0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1jb250YWN0LWZvcm0vcHVyby1jb250YWN0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFHSCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDOzs7QUFXeEIsTUFBTSxPQUFPLHdCQUF3QjtJQVVqQyxJQUFhLE1BQU0sQ0FBQyxHQUFpQjtRQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztRQUNuQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBZ0JELFlBQTZCLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBWmxDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTNDLFlBQU8sR0FBaUIsRUFBRSxDQUFDO1FBRzNCLGVBQVUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFPVyxDQUFDO0lBRWhELFFBQVE7UUFDSixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGNBQWM7UUFDVixNQUFNLFFBQVEsR0FBMkIsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUNaLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2pEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDckMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztTQUNsRTtRQUVELFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUQsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRCxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25ELFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM1QixRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7Z0JBQ2hCLEtBQUssT0FBTztvQkFDUixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztvQkFDeEIsTUFBTTtnQkFDVixLQUFLLE1BQU07b0JBQ1AsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7b0JBQ3ZCLE1BQU07Z0JBQ1YsS0FBSyxXQUFXO29CQUNaLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO29CQUMxQixNQUFNO2dCQUNWLEtBQUssT0FBTztvQkFDUixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztvQkFDeEIsTUFBTTtnQkFFVjtvQkFDSSxNQUFNO2FBQ2I7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBaUI7UUFDM0IsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtZQUNyQixLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDO1NBQ2hFO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFZLEVBQUUsS0FBaUI7UUFDdkMsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFFdEQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRTtZQUN0QixZQUFZLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUNuRTtJQUNMLENBQUM7SUFFRCxTQUFTO1FBQ0wsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNuQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDNUI7UUFDRCxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzVCLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0FyR1Esd0JBQXdCO21HQUF4Qix3QkFBd0Isc1lDbkJyQyxxNmdCQXlVQSxvSEQxVGMsWUFBWSw4QkFBRSxXQUFXLHV1Q0FBRSxtQkFBbUI7OzRGQUkvQyx3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0ksdUJBQXVCLGNBQ3JCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsbUJBQW1CLENBQUM7Z0ZBS2hELEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNPLE1BQU07c0JBQWxCLEtBQUs7Z0JBSUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gICAgRm9ybUJ1aWxkZXIsXHJcbiAgICBGb3JtR3JvdXAsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUHVyb0J1dHRvbkksIFB1cm9JbWFnZUksIFB1cm9JbnB1dEkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgUHVyb0Ryb3Bkb3duSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcHVyby1kcm9wZG93bi5pbnRlcmZhY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi1wdXJvLWNvbnRhY3QtZm9ybScsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3B1cm8tY29udGFjdC1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsOiAnLi9wdXJvLWNvbnRhY3QtZm9ybS5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQdXJvQ29udGFjdEZvcm1Db21wb25lbnQge1xyXG4gICAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBzdWJ0aXRsZT86IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHByb21vdGlvbnM/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSByZXF1aXJlZExhYmVsPzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgaW1nPzogUHVyb0ltYWdlSTtcclxuICAgIEBJbnB1dCgpIGNvbmRpdGlvbnNMaW5rPzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgcHJlZml4PzogUHVyb0Ryb3Bkb3duSTtcclxuICAgIEBJbnB1dCgpIGRyb3Bkb3duPzogUHVyb0Ryb3Bkb3duSTtcclxuICAgIEBJbnB1dCgpIG5kRHJvcGRvd24/OiBQdXJvRHJvcGRvd25JO1xyXG4gICAgQElucHV0KCkgc2V0IGlucHV0cyhpbnA6IFB1cm9JbnB1dElbXSkge1xyXG4gICAgICAgIHRoaXMuX2lucHV0cyA9IGlucDtcclxuICAgICAgICB0aGlzLnNldElucHV0UHJvcGVydGllcygpO1xyXG4gICAgfVxyXG4gICAgQElucHV0KCkgdGV4dGFyZWE/OiBQdXJvSW5wdXRJO1xyXG4gICAgQElucHV0KCkgYnV0dG9uPzogUHVyb0J1dHRvbkk7XHJcblxyXG4gICAgQE91dHB1dCgpIHN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIF9pbnB1dHM6IFB1cm9JbnB1dElbXSA9IFtdO1xyXG5cclxuICAgIGZvcm0hOiBGb3JtR3JvdXA7XHJcbiAgICBmb3JtUmVhZHkkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgICBlbWFpbElucHV0PzogUHVyb0lucHV0STtcclxuICAgIG5hbWVJbnB1dD86IFB1cm9JbnB1dEk7XHJcbiAgICBzdXJuYW1lSW5wdXQ/OiBQdXJvSW5wdXRJO1xyXG4gICAgcGhvbmVJbnB1dD86IFB1cm9JbnB1dEk7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIpIHt9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRpYWxpemVGb3JtKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2xzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XHJcbiAgICAgICAgdGhpcy5faW5wdXRzPy5mb3JFYWNoKChpbnB1dCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaW5wdXQubmFtZSkge1xyXG4gICAgICAgICAgICAgICAgY29udHJvbHNbaW5wdXQubmFtZV0gPSBbJycsIGlucHV0LnZhbGlkYXRvcnNdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnRleHRhcmVhICYmIHRoaXMudGV4dGFyZWEubmFtZSkge1xyXG4gICAgICAgICAgICBjb250cm9sc1t0aGlzLnRleHRhcmVhLm5hbWVdID0gWycnLCB0aGlzLnRleHRhcmVhPy52YWxpZGF0b3JzXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnRyb2xzWydjb25kaXRpb25zJ10gPSBbZmFsc2UsIFZhbGlkYXRvcnMucmVxdWlyZWRUcnVlXTtcclxuICAgICAgICBjb250cm9sc1sncHJvbW90aW9ucyddID0gW2ZhbHNlXTtcclxuICAgICAgICBjb250cm9sc1snZHJvcGRvd24nXSA9IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF07XHJcbiAgICAgICAgY29udHJvbHNbJ25kRHJvcGRvd24nXSA9IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF07XHJcbiAgICAgICAgY29udHJvbHNbJ3ByZWZpeCddID0gWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXTtcclxuXHJcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cChjb250cm9scyk7XHJcbiAgICAgICAgdGhpcy5mb3JtUmVhZHkkLnNldCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRJbnB1dFByb3BlcnRpZXMoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5faW5wdXRzPy5mb3JFYWNoKChpbnB1dCkgPT4ge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKGlucHV0Lm5hbWUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2VtYWlsJzpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtYWlsSW5wdXQgPSBpbnB1dDtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ25hbWUnOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZUlucHV0ID0gaW5wdXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdhcGVsbGlkb3MnOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VybmFtZUlucHV0ID0gaW5wdXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdwaG9uZSc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5waG9uZUlucHV0ID0gaW5wdXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHZhbGlkYXRlSW5wdXQoaW5wdXQ6IFB1cm9JbnB1dEkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoaW5wdXQgJiYgaW5wdXQubmFtZSkge1xyXG4gICAgICAgICAgICBpbnB1dC52YWxpZCA9IHRoaXMuZm9ybS5jb250cm9sc1tpbnB1dC5uYW1lXS5lcnJvcnMgPT09IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCwgaW5wdXQ6IFB1cm9JbnB1dEkpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuXHJcbiAgICAgICAgaWYgKGlucHV0LnR5cGUgPT09ICd0ZWwnKSB7XHJcbiAgICAgICAgICAgIGlucHV0RWxlbWVudC52YWx1ZSA9IGlucHV0RWxlbWVudC52YWx1ZS5yZXBsYWNlKC9bXjAtOStdL2csICcnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVzZXRGb3JtKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZm9ybT8ucmVzZXQoKTtcclxuICAgICAgICBpZiAodGhpcy50ZXh0YXJlYSkge1xyXG4gICAgICAgICAgICB0aGlzLnRleHRhcmVhLnZhbHVlID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2lucHV0cz8uZm9yRWFjaCgoaW5wdXQpID0+IHtcclxuICAgICAgICAgICAgaW5wdXQudmFsdWUgPSAnJztcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iLCI8c2VjdGlvbiBjbGFzcz1cImNvbnRhY3RGb3JtXCI+XHJcbiAgICBAaWYgKHRpdGxlKSB7XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjb250YWN0Rm9ybV9fdGl0bGVcIj57eyB0aXRsZSB9fTwvc3Bhbj5cclxuICAgIH1cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9faW5uZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX2dyYXBoaWNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19ncmFwaGljSW5uZXJcIj5cclxuICAgICAgICAgICAgICAgIEBpZiAoaW1nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltZy5zcmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cImltZy5hbHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjQ2N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjU1MVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udGFjdEZvcm1fX2dyYXBoaWNJbm5lci0taW1nXCJcclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX2NvbnRlbnRcIj5cclxuICAgICAgICAgICAgQGlmICh0aXRsZSkge1xyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb250YWN0Rm9ybV9fdGl0bGVcIj57eyB0aXRsZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAaWYgKHN1YnRpdGxlKSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb250YWN0Rm9ybV9fcGFyYWdyYXBoXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5uZXJIdG1sXT1cInN1YnRpdGxlXCJcclxuICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChkcm9wZG93bikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2dyb3VwIHdpdGhJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm1fX2NvbnRyb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRyb3Bkb3duLnBsYWNlaG9sZGVyIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiBvZiBkcm9wZG93bi5vcHRpb25zO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChvcHRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRpb24uY29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlIGhyZWY9XCIjc2VsZWN0LWFycm93XCI+PC91c2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChuZERyb3Bkb3duKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybV9fZ3JvdXAgd2l0aEljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybV9fY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbmREcm9wZG93bi5wbGFjZWhvbGRlciB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24gb2YgbmREcm9wZG93bi5vcHRpb25zO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwib3B0aW9uLmNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgaHJlZj1cIiNzZWxlY3QtYXJyb3dcIj48L3VzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChlbWFpbElucHV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybV9fZ3JvdXAgd2l0aEljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImVtYWlsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtX19jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImVtYWlsSW5wdXQucGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJ2YWxpZGF0ZUlucHV0KGVtYWlsSW5wdXQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJpbnB1dENoYW5nZSgkZXZlbnQsIGVtYWlsSW5wdXQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxOVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgaHJlZj1cIiNlbWFpbFwiPjwvdXNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFlbWFpbElucHV0LnZhbGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLWVycm9yXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1haWxJbnB1dC5lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChuYW1lSW5wdXQgJiYgbmFtZUlucHV0Lm5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtX19ncm91cCB3aXRoSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybV9fY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIm5hbWVJbnB1dC5wbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFtZUlucHV0Lm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJ2YWxpZGF0ZUlucHV0KG5hbWVJbnB1dClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImlucHV0Q2hhbmdlKCRldmVudCwgbmFtZUlucHV0KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlIGhyZWY9XCIjdXNlclwiPjwvdXNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIW5hbWVJbnB1dC52YWxpZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1lcnJvclwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVJbnB1dC5lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzdXJuYW1lSW5wdXQgJiYgc3VybmFtZUlucHV0Lm5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtX19ncm91cCB3aXRoSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybV9fY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJBcGVsbGlkb3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImFwZWxsaWRvc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzdXJuYW1lSW5wdXQucGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInN1cm5hbWVJbnB1dC5uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwidmFsaWRhdGVJbnB1dChzdXJuYW1lSW5wdXQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJpbnB1dENoYW5nZSgkZXZlbnQsIHN1cm5hbWVJbnB1dClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI3VzZXJcIj48L3VzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFzdXJuYW1lSW5wdXQudmFsaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0tZXJyb3JcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXJuYW1lSW5wdXQuZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX3Jvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocHJlZml4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybV9fZ3JvdXAgd2l0aEljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybV9fY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJQcmVmaWpvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJlZml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocHJlZml4LnBsYWNlaG9sZGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHByZWZpeC5wbGFjZWhvbGRlciB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtIG9mIHByZWZpeC5vcHRpb25zIHx8IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiaXRlbS5jb2RlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI3NlbGVjdC1hcnJvd1wiPjwvdXNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocGhvbmVJbnB1dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2dyb3VwIHdpdGhJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtX19jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInBob25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJwaG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwaG9uZUlucHV0LnBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgaHJlZj1cIiNwaG9uZVwiPjwvdXNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIXBob25lSW5wdXQudmFsaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0tZXJyb3JcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZUlucHV0LmVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX2NvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHRleHRhcmVhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybV9fZ3JvdXAgbm8tZG90XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybV9fY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0ZXh0YXJlYS5wbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX3Jvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJibG9jay1jaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChyZXF1aXJlZExhYmVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZC1sYWJlbFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkTGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29uZGl0aW9uc0xpbmspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtX19jaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvbmRpdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiOVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI2NoZWNrYm94LXRpY2tcIj48L3VzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiY29uZGl0aW9uc0xpbmtcIj4gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHByb21vdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtX19jaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb21vdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiOVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI2NoZWNrYm94LXRpY2tcIj48L3VzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHByb21vdGlvbnMgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuX19ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYnV0dG9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9fcHJpbWFyeS0tb3V0bGluZSBqcy1hY3RpdmUtbW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1tb2RhbF9uYW1lPVwidGhhbmt5b3VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJidXR0b24ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBidXR0b24ubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG4iXX0=
@@ -5,14 +5,14 @@ import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common";
6
6
  export class PuroListGeneralComponent {
7
7
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroListGeneralComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroListGeneralComponent, isStandalone: true, selector: "lib-puro-list-general", inputs: { title: "title", items: "items" }, ngImport: i0, template: "<section class=\"suites suites__list\">\r\n @if (title) {\r\n <span class=\"suites__title\">{{ title }}</span>\r\n }\r\n\r\n <div class=\"suites__container\">\r\n @for (item of items; track $index) {\r\n <div\r\n class=\"suites__item js-active-slider\"\r\n [ngClass]=\"{ 'image--right': $index % 2 !== 0 }\"\r\n data-slides_infinite=\"true\"\r\n [puroSlider]=\"items\"\r\n data-slider_name=\"js-photo-slider\"\r\n data-slider_showbtns=\"true\"\r\n data-slider_showdots=\"false\"\r\n data-slider_fade=\"true\"\r\n data-slider_autoplay=\"false\"\r\n data-slides_pc=\"1\"\r\n >\r\n <div class=\"suites__graphic relative\">\r\n <div class=\"js-photo-slider\">\r\n @for (image of item.images; track $index) {\r\n <div>\r\n <img\r\n [src]=\"image.src\"\r\n width=\"789\"\r\n class=\"suites__graphic--img\"\r\n height=\"748\"\r\n [alt]=\"image.alt\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n <div class=\"js-slider-arrows\"></div>\r\n </div>\r\n <div class=\"suites__content\">\r\n <div>\r\n @if (item.title) {\r\n <h2 class=\"suites__heading\">{{ item.title }}</h2>\r\n }\r\n <div class=\"suites__slider withOutSlider\">\r\n @for (equipment of item.equipment; track $index) {\r\n <div class=\"suites__service\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"50\"\r\n height=\"40\"\r\n [ngClass]=\"equipment.icon\"\r\n ></svg>\r\n <span>{{ equipment.text }}</span>\r\n </div>\r\n }\r\n </div>\r\n @if (item.description) {\r\n <div class=\"suites__paragraph\">\r\n <p [innerHTML]=\"item.description\"></p>\r\n </div>\r\n }\r\n <div class=\"btn__group\">\r\n @for (button of item.buttons; track $index) {\r\n <a\r\n [href]=\"button.url\"\r\n [linkType]=\"button.linkType\"\r\n class=\"btn\"\r\n [ngClass]=\"{\r\n btn__primary: $index === 1,\r\n 'btn__primary--outline': $index === 0,\r\n }\"\r\n [attr.aria-label]=\"button.label\"\r\n >\r\n <span>{{ button.label }}</span>\r\n </a>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</section>\r\n", styles: ["svg{background-color:var(--cl-title);max-height:unset!important}.suites__slider{row-gap:2rem;flex-wrap:wrap}.suites__service{flex:1 0 33.3333333333%}@media (max-width: 480px){.suites_service+.suites_service:nth-child(2n):before{display:none}}@media (min-width: 480px) and (max-width: 1024px){.suites_service+.suites_service:nth-child(3n):before{display:none}}@media (min-width: 1024px) and (max-width: 1680px){.suites_service+.suites_service:nth-child(odd):before{display:none}}@media (min-width: 1680px){.suites_service+.suites_service:nth-child(3n):before{display:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href"], outputs: ["bookClick"] }, { kind: "directive", type: PuroSliderDirective, selector: "[puroSlider]", inputs: ["puroSlider"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroListGeneralComponent, isStandalone: true, selector: "lib-puro-list-general", inputs: { title: "title", items: "items" }, ngImport: i0, template: "<section class=\"suites suites__list\">\r\n @if (title) {\r\n <span class=\"suites__title\">{{ title }}</span>\r\n }\r\n\r\n <div class=\"suites__container\">\r\n @for (item of items; track $index) {\r\n <div\r\n class=\"suites__item js-active-slider\"\r\n [ngClass]=\"{ 'image--right': $odd }\"\r\n data-slides_infinite=\"true\"\r\n [puroSlider]=\"items\"\r\n data-slider_name=\"js-photo-slider\"\r\n data-slider_showbtns=\"true\"\r\n data-slider_showdots=\"false\"\r\n data-slider_fade=\"true\"\r\n data-slider_autoplay=\"false\"\r\n data-slides_pc=\"1\"\r\n >\r\n <div class=\"suites__graphic relative\">\r\n <div class=\"js-photo-slider\">\r\n @for (image of item.images; track $index) {\r\n <div>\r\n <img\r\n [src]=\"image.src\"\r\n width=\"789\"\r\n class=\"suites__graphic--img\"\r\n height=\"748\"\r\n [alt]=\"image.alt\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n <div class=\"js-slider-arrows\"></div>\r\n </div>\r\n <div class=\"suites__content\">\r\n <div>\r\n @if (item.title) {\r\n <h2 class=\"suites__heading\">{{ item.title }}</h2>\r\n }\r\n <div class=\"suites__slider withOutSlider\">\r\n @for (equipment of item.equipment; track $index) {\r\n <div class=\"suites__service\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"50\"\r\n height=\"40\"\r\n [ngClass]=\"equipment.icon\"\r\n ></svg>\r\n <span>{{ equipment.text }}</span>\r\n </div>\r\n }\r\n </div>\r\n @if (item.description) {\r\n <div class=\"suites__paragraph\">\r\n <p [innerHTML]=\"item.description\"></p>\r\n </div>\r\n }\r\n <div class=\"btn__group\">\r\n @for (button of item.buttons; track $index) {\r\n <a\r\n [href]=\"button.url\"\r\n [linkType]=\"button.linkType\"\r\n class=\"btn\"\r\n [ngClass]=\"{\r\n btn__primary: $index === 1,\r\n 'btn__primary--outline': $index === 0,\r\n }\"\r\n [attr.aria-label]=\"button.label\"\r\n >\r\n <span>{{ button.label }}</span>\r\n </a>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</section>\r\n", styles: ["svg{background-color:var(--cl-title);max-height:unset!important}.suites__slider{row-gap:2rem;flex-wrap:wrap}.suites__service{flex:1 0 33.3333333333%}@media (max-width: 480px){.suites_service+.suites_service:nth-child(2n):before{display:none}}@media (min-width: 480px) and (max-width: 1024px){.suites_service+.suites_service:nth-child(3n):before{display:none}}@media (min-width: 1024px) and (max-width: 1680px){.suites_service+.suites_service:nth-child(odd):before{display:none}}@media (min-width: 1680px){.suites_service+.suites_service:nth-child(3n):before{display:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href"], outputs: ["bookClick"] }, { kind: "directive", type: PuroSliderDirective, selector: "[puroSlider]", inputs: ["puroSlider"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9
9
  }
10
10
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroListGeneralComponent, decorators: [{
11
11
  type: Component,
12
- args: [{ selector: 'lib-puro-list-general', standalone: true, imports: [CommonModule, PuroLinkTypeDirective, PuroSliderDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"suites suites__list\">\r\n @if (title) {\r\n <span class=\"suites__title\">{{ title }}</span>\r\n }\r\n\r\n <div class=\"suites__container\">\r\n @for (item of items; track $index) {\r\n <div\r\n class=\"suites__item js-active-slider\"\r\n [ngClass]=\"{ 'image--right': $index % 2 !== 0 }\"\r\n data-slides_infinite=\"true\"\r\n [puroSlider]=\"items\"\r\n data-slider_name=\"js-photo-slider\"\r\n data-slider_showbtns=\"true\"\r\n data-slider_showdots=\"false\"\r\n data-slider_fade=\"true\"\r\n data-slider_autoplay=\"false\"\r\n data-slides_pc=\"1\"\r\n >\r\n <div class=\"suites__graphic relative\">\r\n <div class=\"js-photo-slider\">\r\n @for (image of item.images; track $index) {\r\n <div>\r\n <img\r\n [src]=\"image.src\"\r\n width=\"789\"\r\n class=\"suites__graphic--img\"\r\n height=\"748\"\r\n [alt]=\"image.alt\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n <div class=\"js-slider-arrows\"></div>\r\n </div>\r\n <div class=\"suites__content\">\r\n <div>\r\n @if (item.title) {\r\n <h2 class=\"suites__heading\">{{ item.title }}</h2>\r\n }\r\n <div class=\"suites__slider withOutSlider\">\r\n @for (equipment of item.equipment; track $index) {\r\n <div class=\"suites__service\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"50\"\r\n height=\"40\"\r\n [ngClass]=\"equipment.icon\"\r\n ></svg>\r\n <span>{{ equipment.text }}</span>\r\n </div>\r\n }\r\n </div>\r\n @if (item.description) {\r\n <div class=\"suites__paragraph\">\r\n <p [innerHTML]=\"item.description\"></p>\r\n </div>\r\n }\r\n <div class=\"btn__group\">\r\n @for (button of item.buttons; track $index) {\r\n <a\r\n [href]=\"button.url\"\r\n [linkType]=\"button.linkType\"\r\n class=\"btn\"\r\n [ngClass]=\"{\r\n btn__primary: $index === 1,\r\n 'btn__primary--outline': $index === 0,\r\n }\"\r\n [attr.aria-label]=\"button.label\"\r\n >\r\n <span>{{ button.label }}</span>\r\n </a>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</section>\r\n", styles: ["svg{background-color:var(--cl-title);max-height:unset!important}.suites__slider{row-gap:2rem;flex-wrap:wrap}.suites__service{flex:1 0 33.3333333333%}@media (max-width: 480px){.suites_service+.suites_service:nth-child(2n):before{display:none}}@media (min-width: 480px) and (max-width: 1024px){.suites_service+.suites_service:nth-child(3n):before{display:none}}@media (min-width: 1024px) and (max-width: 1680px){.suites_service+.suites_service:nth-child(odd):before{display:none}}@media (min-width: 1680px){.suites_service+.suites_service:nth-child(3n):before{display:none}}\n"] }]
12
+ args: [{ selector: 'lib-puro-list-general', standalone: true, imports: [CommonModule, PuroLinkTypeDirective, PuroSliderDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"suites suites__list\">\r\n @if (title) {\r\n <span class=\"suites__title\">{{ title }}</span>\r\n }\r\n\r\n <div class=\"suites__container\">\r\n @for (item of items; track $index) {\r\n <div\r\n class=\"suites__item js-active-slider\"\r\n [ngClass]=\"{ 'image--right': $odd }\"\r\n data-slides_infinite=\"true\"\r\n [puroSlider]=\"items\"\r\n data-slider_name=\"js-photo-slider\"\r\n data-slider_showbtns=\"true\"\r\n data-slider_showdots=\"false\"\r\n data-slider_fade=\"true\"\r\n data-slider_autoplay=\"false\"\r\n data-slides_pc=\"1\"\r\n >\r\n <div class=\"suites__graphic relative\">\r\n <div class=\"js-photo-slider\">\r\n @for (image of item.images; track $index) {\r\n <div>\r\n <img\r\n [src]=\"image.src\"\r\n width=\"789\"\r\n class=\"suites__graphic--img\"\r\n height=\"748\"\r\n [alt]=\"image.alt\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n <div class=\"js-slider-arrows\"></div>\r\n </div>\r\n <div class=\"suites__content\">\r\n <div>\r\n @if (item.title) {\r\n <h2 class=\"suites__heading\">{{ item.title }}</h2>\r\n }\r\n <div class=\"suites__slider withOutSlider\">\r\n @for (equipment of item.equipment; track $index) {\r\n <div class=\"suites__service\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"50\"\r\n height=\"40\"\r\n [ngClass]=\"equipment.icon\"\r\n ></svg>\r\n <span>{{ equipment.text }}</span>\r\n </div>\r\n }\r\n </div>\r\n @if (item.description) {\r\n <div class=\"suites__paragraph\">\r\n <p [innerHTML]=\"item.description\"></p>\r\n </div>\r\n }\r\n <div class=\"btn__group\">\r\n @for (button of item.buttons; track $index) {\r\n <a\r\n [href]=\"button.url\"\r\n [linkType]=\"button.linkType\"\r\n class=\"btn\"\r\n [ngClass]=\"{\r\n btn__primary: $index === 1,\r\n 'btn__primary--outline': $index === 0,\r\n }\"\r\n [attr.aria-label]=\"button.label\"\r\n >\r\n <span>{{ button.label }}</span>\r\n </a>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</section>\r\n", styles: ["svg{background-color:var(--cl-title);max-height:unset!important}.suites__slider{row-gap:2rem;flex-wrap:wrap}.suites__service{flex:1 0 33.3333333333%}@media (max-width: 480px){.suites_service+.suites_service:nth-child(2n):before{display:none}}@media (min-width: 480px) and (max-width: 1024px){.suites_service+.suites_service:nth-child(3n):before{display:none}}@media (min-width: 1024px) and (max-width: 1680px){.suites_service+.suites_service:nth-child(odd):before{display:none}}@media (min-width: 1680px){.suites_service+.suites_service:nth-child(3n):before{display:none}}\n"] }]
13
13
  }], propDecorators: { title: [{
14
14
  type: Input
15
15
  }], items: [{
16
16
  type: Input
17
17
  }] } });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1saXN0LWdlbmVyYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1saXN0LWdlbmVyYWwvcHVyby1saXN0LWdlbmVyYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1saXN0LWdlbmVyYWwvcHVyby1saXN0LWdlbmVyYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFXOUUsTUFBTSxPQUFPLHdCQUF3QjsrR0FBeEIsd0JBQXdCO21HQUF4Qix3QkFBd0IsNkhDYnJDLCt4SEFpRkEsdW5CRHpFYyxZQUFZLDZIQUFFLHFCQUFxQiw2R0FBRSxtQkFBbUI7OzRGQUt6RCx3QkFBd0I7a0JBUnBDLFNBQVM7K0JBQ0ksdUJBQXVCLGNBQ3JCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsQ0FBQyxtQkFHbEQsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFB1cm9MaW5rVHlwZURpcmVjdGl2ZSwgUHVyb1NsaWRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xyXG5pbXBvcnQgeyBQdXJvQnV0dG9uSSwgUHVyb0ltYWdlSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi1wdXJvLWxpc3QtZ2VuZXJhbCcsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUHVyb0xpbmtUeXBlRGlyZWN0aXZlLCBQdXJvU2xpZGVyRGlyZWN0aXZlXSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9wdXJvLWxpc3QtZ2VuZXJhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybDogJy4vcHVyby1saXN0LWdlbmVyYWwuY29tcG9uZW50LnNjc3MnLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQdXJvTGlzdEdlbmVyYWxDb21wb25lbnQge1xyXG4gICAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBpdGVtcz86IFB1cm9MaXN0R2VuZXJhbEl0ZW1bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQdXJvTGlzdEdlbmVyYWxJdGVtIHtcclxuICAgIHRpdGxlPzogc3RyaW5nO1xyXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgICBsb2dvPzogUHVyb0ltYWdlSTtcclxuICAgIGltYWdlcz86IFB1cm9JbWFnZUlbXTtcclxuICAgIGVxdWlwbWVudD86IHsgaWNvbj86IHN0cmluZzsgdGV4dD86IHN0cmluZyB9W107XHJcbiAgICBidXR0b25zPzogUHVyb0J1dHRvbklbXTtcclxufVxyXG4iLCI8c2VjdGlvbiBjbGFzcz1cInN1aXRlcyBzdWl0ZXNfX2xpc3RcIj5cclxuICAgIEBpZiAodGl0bGUpIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cInN1aXRlc19fdGl0bGVcIj57eyB0aXRsZSB9fTwvc3Bhbj5cclxuICAgIH1cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwic3VpdGVzX19jb250YWluZXJcIj5cclxuICAgICAgICBAZm9yIChpdGVtIG9mIGl0ZW1zOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdWl0ZXNfX2l0ZW0ganMtYWN0aXZlLXNsaWRlclwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpbWFnZS0tcmlnaHQnOiAkaW5kZXggJSAyICE9PSAwIH1cIlxyXG4gICAgICAgICAgICAgICAgZGF0YS1zbGlkZXNfaW5maW5pdGU9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtwdXJvU2xpZGVyXT1cIml0ZW1zXCJcclxuICAgICAgICAgICAgICAgIGRhdGEtc2xpZGVyX25hbWU9XCJqcy1waG90by1zbGlkZXJcIlxyXG4gICAgICAgICAgICAgICAgZGF0YS1zbGlkZXJfc2hvd2J0bnM9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIGRhdGEtc2xpZGVyX3Nob3dkb3RzPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgZGF0YS1zbGlkZXJfZmFkZT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgZGF0YS1zbGlkZXJfYXV0b3BsYXk9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBkYXRhLXNsaWRlc19wYz1cIjFcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VpdGVzX19ncmFwaGljIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImpzLXBob3RvLXNsaWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpbWFnZSBvZiBpdGVtLmltYWdlczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZS5zcmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjc4OVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3VpdGVzX19ncmFwaGljLS1pbWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI3NDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cImltYWdlLmFsdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImpzLXNsaWRlci1hcnJvd3NcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1aXRlc19fY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS50aXRsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwic3VpdGVzX19oZWFkaW5nXCI+e3sgaXRlbS50aXRsZSB9fTwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1aXRlc19fc2xpZGVyIHdpdGhPdXRTbGlkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGVxdWlwbWVudCBvZiBpdGVtLmVxdWlwbWVudDsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1aXRlc19fc2VydmljZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI1MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI0MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJlcXVpcG1lbnQuaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZXF1aXBtZW50LnRleHQgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uZGVzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWl0ZXNfX3BhcmFncmFwaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiaXRlbS5kZXNjcmlwdGlvblwiPjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG5fX2dyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChidXR0b24gb2YgaXRlbS5idXR0b25zOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJidXR0b24udXJsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cImJ1dHRvbi5saW5rVHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuX19wcmltYXJ5OiAkaW5kZXggPT09IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnRuX19wcmltYXJ5LS1vdXRsaW5lJzogJGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGJ1dHRvbi5sYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1saXN0LWdlbmVyYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1saXN0LWdlbmVyYWwvcHVyby1saXN0LWdlbmVyYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1saXN0LWdlbmVyYWwvcHVyby1saXN0LWdlbmVyYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFXOUUsTUFBTSxPQUFPLHdCQUF3QjsrR0FBeEIsd0JBQXdCO21HQUF4Qix3QkFBd0IsNkhDYnJDLGt4SEFpRkEsdW5CRHpFYyxZQUFZLDZIQUFFLHFCQUFxQiw2R0FBRSxtQkFBbUI7OzRGQUt6RCx3QkFBd0I7a0JBUnBDLFNBQVM7K0JBQ0ksdUJBQXVCLGNBQ3JCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsQ0FBQyxtQkFHbEQsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFB1cm9MaW5rVHlwZURpcmVjdGl2ZSwgUHVyb1NsaWRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xyXG5pbXBvcnQgeyBQdXJvQnV0dG9uSSwgUHVyb0ltYWdlSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi1wdXJvLWxpc3QtZ2VuZXJhbCcsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUHVyb0xpbmtUeXBlRGlyZWN0aXZlLCBQdXJvU2xpZGVyRGlyZWN0aXZlXSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9wdXJvLWxpc3QtZ2VuZXJhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybDogJy4vcHVyby1saXN0LWdlbmVyYWwuY29tcG9uZW50LnNjc3MnLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQdXJvTGlzdEdlbmVyYWxDb21wb25lbnQge1xyXG4gICAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBpdGVtcz86IFB1cm9MaXN0R2VuZXJhbEl0ZW1bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQdXJvTGlzdEdlbmVyYWxJdGVtIHtcclxuICAgIHRpdGxlPzogc3RyaW5nO1xyXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgICBsb2dvPzogUHVyb0ltYWdlSTtcclxuICAgIGltYWdlcz86IFB1cm9JbWFnZUlbXTtcclxuICAgIGVxdWlwbWVudD86IHsgaWNvbj86IHN0cmluZzsgdGV4dD86IHN0cmluZyB9W107XHJcbiAgICBidXR0b25zPzogUHVyb0J1dHRvbklbXTtcclxufVxyXG4iLCI8c2VjdGlvbiBjbGFzcz1cInN1aXRlcyBzdWl0ZXNfX2xpc3RcIj5cclxuICAgIEBpZiAodGl0bGUpIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cInN1aXRlc19fdGl0bGVcIj57eyB0aXRsZSB9fTwvc3Bhbj5cclxuICAgIH1cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwic3VpdGVzX19jb250YWluZXJcIj5cclxuICAgICAgICBAZm9yIChpdGVtIG9mIGl0ZW1zOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdWl0ZXNfX2l0ZW0ganMtYWN0aXZlLXNsaWRlclwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpbWFnZS0tcmlnaHQnOiAkb2RkIH1cIlxyXG4gICAgICAgICAgICAgICAgZGF0YS1zbGlkZXNfaW5maW5pdGU9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtwdXJvU2xpZGVyXT1cIml0ZW1zXCJcclxuICAgICAgICAgICAgICAgIGRhdGEtc2xpZGVyX25hbWU9XCJqcy1waG90by1zbGlkZXJcIlxyXG4gICAgICAgICAgICAgICAgZGF0YS1zbGlkZXJfc2hvd2J0bnM9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIGRhdGEtc2xpZGVyX3Nob3dkb3RzPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgZGF0YS1zbGlkZXJfZmFkZT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgZGF0YS1zbGlkZXJfYXV0b3BsYXk9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBkYXRhLXNsaWRlc19wYz1cIjFcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VpdGVzX19ncmFwaGljIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImpzLXBob3RvLXNsaWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpbWFnZSBvZiBpdGVtLmltYWdlczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZS5zcmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjc4OVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3VpdGVzX19ncmFwaGljLS1pbWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI3NDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cImltYWdlLmFsdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImpzLXNsaWRlci1hcnJvd3NcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1aXRlc19fY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS50aXRsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwic3VpdGVzX19oZWFkaW5nXCI+e3sgaXRlbS50aXRsZSB9fTwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1aXRlc19fc2xpZGVyIHdpdGhPdXRTbGlkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGVxdWlwbWVudCBvZiBpdGVtLmVxdWlwbWVudDsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1aXRlc19fc2VydmljZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI1MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI0MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJlcXVpcG1lbnQuaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZXF1aXBtZW50LnRleHQgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uZGVzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWl0ZXNfX3BhcmFncmFwaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiaXRlbS5kZXNjcmlwdGlvblwiPjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG5fX2dyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChidXR0b24gb2YgaXRlbS5idXR0b25zOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJidXR0b24udXJsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cImJ1dHRvbi5saW5rVHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuX19wcmltYXJ5OiAkaW5kZXggPT09IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnRuX19wcmltYXJ5LS1vdXRsaW5lJzogJGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJidXR0b24ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYnV0dG9uLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuIl19