simpo-component-library 2.1.22 → 2.1.23

Sign up to get free protection for your applications and to get access to all the features.
@@ -64,13 +64,13 @@ export class InputFieldsComponent {
64
64
  }
65
65
  }
66
66
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: InputFieldsComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
67
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: InputFieldsComponent, isStandalone: true, selector: "simpo-input-fields", inputs: { feild: "feild", opacity: "opacity", bgColor: "bgColor", sectionId: "sectionId" }, host: { listeners: { "document:click": "handleOutsideClick($event)" } }, usesOnChanges: true, ngImport: i0, template: "<section [ngSwitch]=\"feild.type\" class=\"mt-15\">\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'text'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"text\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'address'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"text\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'email'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"email\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'password'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"password\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'rating'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <div class=\"d-flex\">\r\n <span class=\"fa fa-star\" *ngFor=\"let _ of [].constructor(5); let idx = index\" [ngClass]=\"{'checked': idx < (ratingHoverIndex ?? feild.value) }\" (mouseenter)=\"ratingHoverIndex = idx +1\" (mouseleave)=\"ratingHoverIndex = null\" (click)=\"feild.value = idx +1\"></span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'date'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"date\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'checkbox'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <div class=\"d-flex align-items-center flex-wrap\" style=\"gap: 10px;\">\r\n <ng-container *ngFor=\"let checkbox of feild.options\">\r\n <div class=\"d-flex align-items-center\" style=\"gap: 5px;\">\r\n <input type=\"checkbox\" [attr.id]=\"checkbox.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"checkbox.status\">\r\n <label [attr.for]=\"checkbox.value\" class=\"mb-0 mt-1 checkboxFont\">{{ checkbox.value }}</label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'number'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"number\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'money'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"text\" class=\"p-2\" value=\"\u20B9\" (keydown)=\"handleMoneyInput($event)\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'desc'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <textarea class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\"></textarea>\r\n </div>\r\n <div class=\"d-flex flex-column mr-2 position-relative\" *ngSwitchCase=\"'dropdown'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n\r\n <div class=\"position-relative d-flex align-items-center\" (click)=\"selectedDropdown === feild.value ? selectedDropdown = null : selectedDropdown = feild.value\" >\r\n <input type=\"text\" readonly [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [value]=\"enteredValue\" \r\n [(ngModel)]=\"feild.inputValue\" class=\"w-100\">\r\n <mat-icon class=\"down-arrow\">{{feild.value != selectedDropdown ? 'keyboard_arrow_down' : 'keyboard_arrow_up'}}</mat-icon>\r\n </div>\r\n <div class=\"container-list position-absolute\" [hidden]=\"feild.value != selectedDropdown\">\r\n <ng-container *ngFor=\"let option of feild.options\">\r\n <div class=\"container\" [ngClass]=\"{'container-selected': option.value == selectedDropdown}\" (click)=\"selectDropdown(option.value)\">{{ option.value }}</div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</section>\r\n", styles: ["input,textarea,select{border-radius:5px;padding:8px 8px 8px 10px!important;font-size:large;background-color:#000;font-weight:400;border:1px solid #b9b9b9}.checkboxFont{font-size:16px;font-weight:400}.down-arrow{position:absolute;right:5px}.fa-star{opacity:.3;cursor:pointer;font-size:20px}input[type=checkbox]{height:18px;width:18px}.checked{opacity:1;color:#daa520}.input-field-label{font-size:16px;font-weight:400}.mt-15{margin-top:15px}.container-list{box-shadow:0 0 3px #999;background-color:#fff;border-radius:5px;padding:3px 0;font-weight:400;overflow:hidden;position:absolute;top:70px;width:100%;z-index:1}.container-list .container{cursor:pointer;padding:10px;font-size:18px}.container-list .container-selected{color:#fff;background-color:purple}.container-list .container:hover{color:#fff;background-color:purple;width:100%;font-weight:600!important}sup{color:red}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.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: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ColorDirective, selector: "[simpoColor]", inputs: ["simpoColor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
67
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: InputFieldsComponent, isStandalone: true, selector: "simpo-input-fields", inputs: { feild: "feild", opacity: "opacity", bgColor: "bgColor", sectionId: "sectionId" }, host: { listeners: { "document:click": "handleOutsideClick($event)" } }, usesOnChanges: true, ngImport: i0, template: "<section [ngSwitch]=\"feild.type\" class=\"mt-15\">\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'text'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"text\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'address'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"text\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'email'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"email\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'password'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"password\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'rating'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <div class=\"d-flex\">\r\n <span class=\"fa fa-star\" *ngFor=\"let _ of [].constructor(5); let idx = index\" [ngClass]=\"{'checked': idx < (ratingHoverIndex ?? feild.value) }\" (mouseenter)=\"ratingHoverIndex = idx +1\" (mouseleave)=\"ratingHoverIndex = null\" (click)=\"feild.value = idx +1\"></span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'date'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"date\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'checkbox'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <div class=\"d-flex align-items-center flex-wrap\" style=\"gap: 10px;\">\r\n <ng-container *ngFor=\"let checkbox of feild.options\">\r\n <div class=\"d-flex align-items-center\" style=\"gap: 5px;\">\r\n <input type=\"checkbox\" [attr.id]=\"checkbox.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"checkbox.status\">\r\n <label [attr.for]=\"checkbox.value\" class=\"mb-0 mt-1 checkboxFont\">{{ checkbox.value }}</label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'number'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"number\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'money'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"text\" class=\"p-2\" value=\"\u20B9\" (keydown)=\"handleMoneyInput($event)\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'desc'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <textarea class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\"></textarea>\r\n </div>\r\n <div class=\"d-flex flex-column mr-2 position-relative\" *ngSwitchCase=\"'dropdown'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n\r\n <div class=\"position-relative d-flex align-items-center\" (click)=\"selectedDropdown === feild.value ? selectedDropdown = null : selectedDropdown = feild.value\" >\r\n <input type=\"text\" readonly [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [value]=\"enteredValue\" \r\n [(ngModel)]=\"feild.inputValue\" class=\"w-100\">\r\n <mat-icon class=\"down-arrow\">{{feild.value != selectedDropdown ? 'keyboard_arrow_down' : 'keyboard_arrow_up'}}</mat-icon>\r\n </div>\r\n <div class=\"container-list position-absolute\" [hidden]=\"feild.value != selectedDropdown\">\r\n <ng-container *ngFor=\"let option of feild.options\">\r\n <div class=\"container\" [ngClass]=\"{'container-selected': option.value == selectedDropdown}\" (click)=\"selectDropdown(option.value)\">{{ option.value }}</div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</section>\r\n", styles: ["input,textarea,select{border-radius:5px;padding:8px 8px 8px 10px!important;font-size:large;background-color:#000;font-weight:400;border:1px solid #b9b9b9}.checkboxFont{font-size:16px;font-weight:400}.down-arrow{position:absolute;right:5px}.fa-star{opacity:.3;cursor:pointer;font-size:20px}input[type=checkbox]{height:18px;width:18px}.checked{opacity:1;color:#daa520}.input-field-label{font-size:16px;font-weight:400}.mt-15{margin-top:15px}.container-list{box-shadow:0 0 3px #999;background-color:#fff;border-radius:5px;padding:3px 0;font-weight:400;overflow:hidden;position:absolute;top:70px;width:100%;z-index:1;max-height:200px;overflow:scroll}.container-list .container{cursor:pointer;padding:10px;font-size:18px}.container-list .container-selected{color:#fff;background-color:purple}.container-list .container:hover{color:#fff;background-color:purple;width:100%;font-weight:600!important}sup{color:red}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.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: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ColorDirective, selector: "[simpoColor]", inputs: ["simpoColor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
68
68
  }
69
69
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: InputFieldsComponent, decorators: [{
70
70
  type: Component,
71
71
  args: [{ selector: 'simpo-input-fields', standalone: true, imports: [
72
72
  CommonModule, FormsModule, ColorDirective, MatIcon
73
- ], template: "<section [ngSwitch]=\"feild.type\" class=\"mt-15\">\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'text'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"text\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'address'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"text\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'email'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"email\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'password'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"password\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'rating'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <div class=\"d-flex\">\r\n <span class=\"fa fa-star\" *ngFor=\"let _ of [].constructor(5); let idx = index\" [ngClass]=\"{'checked': idx < (ratingHoverIndex ?? feild.value) }\" (mouseenter)=\"ratingHoverIndex = idx +1\" (mouseleave)=\"ratingHoverIndex = null\" (click)=\"feild.value = idx +1\"></span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'date'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"date\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'checkbox'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <div class=\"d-flex align-items-center flex-wrap\" style=\"gap: 10px;\">\r\n <ng-container *ngFor=\"let checkbox of feild.options\">\r\n <div class=\"d-flex align-items-center\" style=\"gap: 5px;\">\r\n <input type=\"checkbox\" [attr.id]=\"checkbox.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"checkbox.status\">\r\n <label [attr.for]=\"checkbox.value\" class=\"mb-0 mt-1 checkboxFont\">{{ checkbox.value }}</label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'number'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"number\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'money'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"text\" class=\"p-2\" value=\"\u20B9\" (keydown)=\"handleMoneyInput($event)\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'desc'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <textarea class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\"></textarea>\r\n </div>\r\n <div class=\"d-flex flex-column mr-2 position-relative\" *ngSwitchCase=\"'dropdown'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n\r\n <div class=\"position-relative d-flex align-items-center\" (click)=\"selectedDropdown === feild.value ? selectedDropdown = null : selectedDropdown = feild.value\" >\r\n <input type=\"text\" readonly [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [value]=\"enteredValue\" \r\n [(ngModel)]=\"feild.inputValue\" class=\"w-100\">\r\n <mat-icon class=\"down-arrow\">{{feild.value != selectedDropdown ? 'keyboard_arrow_down' : 'keyboard_arrow_up'}}</mat-icon>\r\n </div>\r\n <div class=\"container-list position-absolute\" [hidden]=\"feild.value != selectedDropdown\">\r\n <ng-container *ngFor=\"let option of feild.options\">\r\n <div class=\"container\" [ngClass]=\"{'container-selected': option.value == selectedDropdown}\" (click)=\"selectDropdown(option.value)\">{{ option.value }}</div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</section>\r\n", styles: ["input,textarea,select{border-radius:5px;padding:8px 8px 8px 10px!important;font-size:large;background-color:#000;font-weight:400;border:1px solid #b9b9b9}.checkboxFont{font-size:16px;font-weight:400}.down-arrow{position:absolute;right:5px}.fa-star{opacity:.3;cursor:pointer;font-size:20px}input[type=checkbox]{height:18px;width:18px}.checked{opacity:1;color:#daa520}.input-field-label{font-size:16px;font-weight:400}.mt-15{margin-top:15px}.container-list{box-shadow:0 0 3px #999;background-color:#fff;border-radius:5px;padding:3px 0;font-weight:400;overflow:hidden;position:absolute;top:70px;width:100%;z-index:1}.container-list .container{cursor:pointer;padding:10px;font-size:18px}.container-list .container-selected{color:#fff;background-color:purple}.container-list .container:hover{color:#fff;background-color:purple;width:100%;font-weight:600!important}sup{color:red}\n"] }]
73
+ ], template: "<section [ngSwitch]=\"feild.type\" class=\"mt-15\">\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'text'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"text\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'address'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"text\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'email'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"email\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'password'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"password\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'rating'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <div class=\"d-flex\">\r\n <span class=\"fa fa-star\" *ngFor=\"let _ of [].constructor(5); let idx = index\" [ngClass]=\"{'checked': idx < (ratingHoverIndex ?? feild.value) }\" (mouseenter)=\"ratingHoverIndex = idx +1\" (mouseleave)=\"ratingHoverIndex = null\" (click)=\"feild.value = idx +1\"></span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'date'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"date\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'checkbox'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <div class=\"d-flex align-items-center flex-wrap\" style=\"gap: 10px;\">\r\n <ng-container *ngFor=\"let checkbox of feild.options\">\r\n <div class=\"d-flex align-items-center\" style=\"gap: 5px;\">\r\n <input type=\"checkbox\" [attr.id]=\"checkbox.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"checkbox.status\">\r\n <label [attr.for]=\"checkbox.value\" class=\"mb-0 mt-1 checkboxFont\">{{ checkbox.value }}</label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'number'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"number\" class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'money'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <input type=\"text\" class=\"p-2\" value=\"\u20B9\" (keydown)=\"handleMoneyInput($event)\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\">\r\n </div>\r\n <div class=\"d-flex flex-column mr-2\" *ngSwitchCase=\"'desc'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n <textarea class=\"p-2\" [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [(ngModel)]=\"feild.inputValue\"></textarea>\r\n </div>\r\n <div class=\"d-flex flex-column mr-2 position-relative\" *ngSwitchCase=\"'dropdown'\">\r\n <label [attr.for]=\"feild.value\" [simpoColor]=\"bgColor\" [id]=\"sectionId\" class=\"input-field-label\">{{ feild.value }} <sup *ngIf=\"feild.required\">*</sup></label>\r\n\r\n <div class=\"position-relative d-flex align-items-center\" (click)=\"selectedDropdown === feild.value ? selectedDropdown = null : selectedDropdown = feild.value\" >\r\n <input type=\"text\" readonly [attr.id]=\"feild.value\" [style.background]=\"colorCode\" [style.color]=\"getTextColor\" [value]=\"enteredValue\" \r\n [(ngModel)]=\"feild.inputValue\" class=\"w-100\">\r\n <mat-icon class=\"down-arrow\">{{feild.value != selectedDropdown ? 'keyboard_arrow_down' : 'keyboard_arrow_up'}}</mat-icon>\r\n </div>\r\n <div class=\"container-list position-absolute\" [hidden]=\"feild.value != selectedDropdown\">\r\n <ng-container *ngFor=\"let option of feild.options\">\r\n <div class=\"container\" [ngClass]=\"{'container-selected': option.value == selectedDropdown}\" (click)=\"selectDropdown(option.value)\">{{ option.value }}</div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</section>\r\n", styles: ["input,textarea,select{border-radius:5px;padding:8px 8px 8px 10px!important;font-size:large;background-color:#000;font-weight:400;border:1px solid #b9b9b9}.checkboxFont{font-size:16px;font-weight:400}.down-arrow{position:absolute;right:5px}.fa-star{opacity:.3;cursor:pointer;font-size:20px}input[type=checkbox]{height:18px;width:18px}.checked{opacity:1;color:#daa520}.input-field-label{font-size:16px;font-weight:400}.mt-15{margin-top:15px}.container-list{box-shadow:0 0 3px #999;background-color:#fff;border-radius:5px;padding:3px 0;font-weight:400;overflow:hidden;position:absolute;top:70px;width:100%;z-index:1;max-height:200px;overflow:scroll}.container-list .container{cursor:pointer;padding:10px;font-size:18px}.container-list .container-selected{color:#fff;background-color:purple}.container-list .container:hover{color:#fff;background-color:purple;width:100%;font-weight:600!important}sup{color:red}\n"] }]
74
74
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { feild: [{
75
75
  type: Input
76
76
  }], opacity: [{
@@ -83,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
83
83
  type: HostListener,
84
84
  args: ['document:click', ['$event']]
85
85
  }] } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmllbGRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC1maWVsZHMvaW5wdXQtZmllbGRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC1maWVsZHMvaW5wdXQtZmllbGRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7O0FBWWpELE1BQU0sT0FBTyxvQkFBb0I7SUFXL0IsWUFDVSxVQUF1QjtRQUF2QixlQUFVLEdBQVYsVUFBVSxDQUFhO1FBVnhCLFlBQU8sR0FBdUIsQ0FBQyxDQUFDO1FBSWxDLHFCQUFnQixHQUFrQixJQUFJLENBQUM7UUFFdkMscUJBQWdCLEdBQWtCLElBQUksQ0FBQztRQUN2QyxpQkFBWSxHQUFrQixJQUFJLENBQUM7UUFNeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQ0QsV0FBVyxDQUFDLE9BQXNCO1FBRWhDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQVU7UUFDekIsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN6RixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsT0FBTztRQUNULENBQUM7UUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2pILENBQUM7SUFDRCxJQUFJLFlBQVk7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3BELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLE1BQWM7UUFDN0QsSUFBSSxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sTUFBTSxDQUFDO1FBQ2hDLElBQUksTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLE1BQU0sQ0FBQztRQUVoQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVwRSxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEQsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVsRCxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEQsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVoRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFDckQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUVyRCxPQUFPLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVcsRUFBRSxNQUFjO1FBQ2pDLE9BQU8sR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ3JFLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxNQUFjO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyx1Q0FBdUM7UUFDcEUsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDakMsQ0FBQztJQUdELGtCQUFrQixDQUFDLEtBQWlCO1FBQ2xDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7OEdBNUVZLG9CQUFvQjtrR0FBcEIsb0JBQW9CLHdRQ2hCakMseXZNQWlFQSxvNkJEdERJLFlBQVkseWhCQUFFLFdBQVcsazhCQUFFLGNBQWMsaUZBQUUsT0FBTzs7MkZBS3pDLG9CQUFvQjtrQkFUaEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQO3dCQUNQLFlBQVksRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE9BQU87cUJBQ25EOytFQUtRLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBbUVSLGtCQUFrQjtzQkFEakIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb2xvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb2xvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1pbnB1dC1maWVsZHMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgQ29sb3JEaXJlY3RpdmUsIE1hdEljb25cclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1maWVsZHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9pbnB1dC1maWVsZHMuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0RmllbGRzQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBmZWlsZDogYW55O1xyXG4gIEBJbnB1dCgpIG9wYWNpdHk6IG51bWJlciB8IHVuZGVmaW5lZCA9IDE7XHJcbiAgQElucHV0KCkgYmdDb2xvcj86IHN0cmluZztcclxuICBASW5wdXQoKSBzZWN0aW9uSWQ/OiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyByYXRpbmdIb3ZlckluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBwdWJsaWMgY29sb3JDb2RlOiBzdHJpbmc7XHJcbiAgcHVibGljIHNlbGVjdGVkRHJvcGRvd246IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHB1YmxpYyBlbnRlcmVkVmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZWxlbWVudFJlZiA6IEVsZW1lbnRSZWZcclxuICApIHtcclxuXHJcbiAgICB0aGlzLmNvbG9yQ29kZSA9IHRoaXMuZ2VuZXJhdGVDb2xvckJhc2VkT25OdW1iZXIodGhpcy5vcGFjaXR5ID8/IDApO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5jb2xvckNvZGUgPSB0aGlzLmdlbmVyYXRlQ29sb3JCYXNlZE9uTnVtYmVyKHRoaXMub3BhY2l0eSA/PyAwKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU1vbmV5SW5wdXQoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKCEoZXZlbnQuY29kZS5pbmNsdWRlcyhcIkRpZ2l0XCIpIHx8IGV2ZW50LmNvZGUuaW5jbHVkZXMoXCJCYWNrc3BhY2VcIikpIHx8ICFldmVudC50YXJnZXQpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IFwi4oK5XCIgKyBOdW1iZXIoZXZlbnQudGFyZ2V0LnZhbHVlLnJlcGxhY2VBbGwoXCIsXCIsIFwiXCIpLnJlcGxhY2VBbGwoXCLigrlcIiwgXCJcIikpLnRvTG9jYWxlU3RyaW5nKCk7XHJcbiAgfVxyXG4gIGdldCBnZXRUZXh0Q29sb3IoKSB7XHJcbiAgICByZXR1cm4gKHRoaXMub3BhY2l0eSA/PyAwKSA8IDUwID8gJyNGRkYnIDogJyMwMDAnO1xyXG4gIH1cclxuXHJcbiAgaW50ZXJwb2xhdGVDb2xvcihjb2xvcjE6IHN0cmluZywgY29sb3IyOiBzdHJpbmcsIGZhY3RvcjogbnVtYmVyKSB7XHJcbiAgICBpZiAoZmFjdG9yID09PSAwKSByZXR1cm4gY29sb3IxO1xyXG4gICAgaWYgKGZhY3RvciA9PT0gMSkgcmV0dXJuIGNvbG9yMjtcclxuXHJcbiAgICBjb25zdCBoZXggPSAoeDogYW55KSA9PiB0aGlzLnBhZFplcm8oTWF0aC5yb3VuZCh4KS50b1N0cmluZygxNiksIDIpO1xyXG5cclxuICAgIGNvbnN0IHIxID0gcGFyc2VJbnQoY29sb3IxLnN1YnN0cmluZygxLCAzKSwgMTYpO1xyXG4gICAgY29uc3QgZzEgPSBwYXJzZUludChjb2xvcjEuc3Vic3RyaW5nKDMsIDUpLCAxNik7XHJcbiAgICBjb25zdCBiMSA9IHBhcnNlSW50KGNvbG9yMS5zdWJzdHJpbmcgICg1LCA3KSwgMTYpO1xyXG5cclxuICAgIGNvbnN0IHIyID0gcGFyc2VJbnQoY29sb3IyLnN1YnN0cmluZygxLCAzKSwgMTYpO1xyXG4gICAgY29uc3QgZzIgPSBwYXJzZUludChjb2xvcjIuc3Vic3RyaW5nKDMsIDUpLCAxNik7XHJcbiAgICBjb25zdCBiMiA9IHBhcnNlSW50KGNvbG9yMi5zdWJzdHJpbmcoNSwgNyksIDE2KTtcclxuXHJcbiAgICBjb25zdCByID0gTWF0aC5jZWlsKHIxICogKDEgLSBmYWN0b3IpICsgcjIgKiBmYWN0b3IpO1xyXG4gICAgY29uc3QgZyA9IE1hdGguY2VpbChnMSAqICgxIC0gZmFjdG9yKSArIGcyICogZmFjdG9yKTtcclxuICAgIGNvbnN0IGIgPSBNYXRoLmNlaWwoYjEgKiAoMSAtIGZhY3RvcikgKyBiMiAqIGZhY3Rvcik7XHJcblxyXG4gICAgcmV0dXJuIGAjJHtoZXgocil9JHtoZXgoZyl9JHtoZXgoYil9YDtcclxuICB9XHJcblxyXG4gIHBhZFplcm8oc3RyOiBzdHJpbmcsIGxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBzdHIubGVuZ3RoIDwgbGVuZ3RoID8gdGhpcy5wYWRaZXJvKFwiMFwiICsgc3RyLCBsZW5ndGgpIDogc3RyO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVDb2xvckJhc2VkT25OdW1iZXIobnVtYmVyOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGZhY3RvciA9IG51bWJlciAvIDEwMDsgLy8gQXNzdW1pbmcgbnVtYmVyIHJhbmdlcyBmcm9tIDAgdG8gMTAwXHJcbiAgICByZXR1cm4gdGhpcy5pbnRlcnBvbGF0ZUNvbG9yKFwiIzAwMDAwMFwiLCBcIiNGRkZGRkZcIiwgZmFjdG9yKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdERyb3Bkb3duKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZW50ZXJlZFZhbHVlID0gdmFsdWU7XHJcbiAgICB0aGlzLmZlaWxkLmlucHV0VmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuc2VsZWN0ZWREcm9wZG93biA9IG51bGw7XHJcbn1cclxuXHJcbkBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuaGFuZGxlT3V0c2lkZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgY29uc3QgY2xpY2tlZEluc2lkZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XHJcbiAgaWYgKCFjbGlja2VkSW5zaWRlKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRHJvcGRvd24gPSBudWxsO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbn1cclxuIiwiPHNlY3Rpb24gW25nU3dpdGNoXT1cImZlaWxkLnR5cGVcIiAgY2xhc3M9XCJtdC0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtci0yXCIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiPlxyXG4gICAgICAgIDxsYWJlbCBbYXR0ci5mb3JdPVwiZmVpbGQudmFsdWVcIiBbc2ltcG9Db2xvcl09XCJiZ0NvbG9yXCIgW2lkXT1cInNlY3Rpb25JZFwiIGNsYXNzPVwiaW5wdXQtZmllbGQtbGFiZWxcIj57eyBmZWlsZC52YWx1ZSB9fSA8c3VwICpuZ0lmPVwiZmVpbGQucmVxdWlyZWRcIj4qPC9zdXA+PC9sYWJlbD5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cInAtMlwiIFthdHRyLmlkXT1cImZlaWxkLnZhbHVlXCIgW3N0eWxlLmJhY2tncm91bmRdPVwiY29sb3JDb2RlXCIgW3N0eWxlLmNvbG9yXT1cImdldFRleHRDb2xvclwiIFsobmdNb2RlbCldPVwiZmVpbGQuaW5wdXRWYWx1ZVwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIG1yLTJcIiAqbmdTd2l0Y2hDYXNlPVwiJ2FkZHJlc3MnXCI+XHJcbiAgICAgICAgPGxhYmVsIFthdHRyLmZvcl09XCJmZWlsZC52YWx1ZVwiICBbc2ltcG9Db2xvcl09XCJiZ0NvbG9yXCIgW2lkXT1cInNlY3Rpb25JZFwiIGNsYXNzPVwiaW5wdXQtZmllbGQtbGFiZWxcIj57eyBmZWlsZC52YWx1ZSB9fSA8c3VwICpuZ0lmPVwiZmVpbGQucmVxdWlyZWRcIj4qPC9zdXA+PC9sYWJlbD5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cInAtMlwiIFthdHRyLmlkXT1cImZlaWxkLnZhbHVlXCIgW3N0eWxlLmJhY2tncm91bmRdPVwiY29sb3JDb2RlXCIgW3N0eWxlLmNvbG9yXT1cImdldFRleHRDb2xvclwiIFsobmdNb2RlbCldPVwiZmVpbGQuaW5wdXRWYWx1ZVwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIG1yLTJcIiAqbmdTd2l0Y2hDYXNlPVwiJ2VtYWlsJ1wiPlxyXG4gICAgICAgIDxsYWJlbCBbYXR0ci5mb3JdPVwiZmVpbGQudmFsdWVcIiBbc2ltcG9Db2xvcl09XCJiZ0NvbG9yXCIgW2lkXT1cInNlY3Rpb25JZFwiIGNsYXNzPVwiaW5wdXQtZmllbGQtbGFiZWxcIj57eyBmZWlsZC52YWx1ZSB9fSA8c3VwICpuZ0lmPVwiZmVpbGQucmVxdWlyZWRcIj4qPC9zdXA+PC9sYWJlbD5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cImVtYWlsXCIgY2xhc3M9XCJwLTJcIiBbYXR0ci5pZF09XCJmZWlsZC52YWx1ZVwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImNvbG9yQ29kZVwiIFtzdHlsZS5jb2xvcl09XCJnZXRUZXh0Q29sb3JcIiBbKG5nTW9kZWwpXT1cImZlaWxkLmlucHV0VmFsdWVcIj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtci0yXCIgKm5nU3dpdGNoQ2FzZT1cIidwYXNzd29yZCdcIj5cclxuICAgICAgICA8bGFiZWwgW2F0dHIuZm9yXT1cImZlaWxkLnZhbHVlXCIgW3NpbXBvQ29sb3JdPVwiYmdDb2xvclwiIFtpZF09XCJzZWN0aW9uSWRcIiBjbGFzcz1cImlucHV0LWZpZWxkLWxhYmVsXCI+e3sgZmVpbGQudmFsdWUgfX0gPHN1cCAqbmdJZj1cImZlaWxkLnJlcXVpcmVkXCI+Kjwvc3VwPjwvbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIGNsYXNzPVwicC0yXCIgW2F0dHIuaWRdPVwiZmVpbGQudmFsdWVcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJjb2xvckNvZGVcIiBbc3R5bGUuY29sb3JdPVwiZ2V0VGV4dENvbG9yXCIgWyhuZ01vZGVsKV09XCJmZWlsZC5pbnB1dFZhbHVlXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbXItMlwiICpuZ1N3aXRjaENhc2U9XCIncmF0aW5nJ1wiPlxyXG4gICAgICAgIDxsYWJlbCBbYXR0ci5mb3JdPVwiZmVpbGQudmFsdWVcIiBbc2ltcG9Db2xvcl09XCJiZ0NvbG9yXCIgW2lkXT1cInNlY3Rpb25JZFwiIGNsYXNzPVwiaW5wdXQtZmllbGQtbGFiZWxcIj57eyBmZWlsZC52YWx1ZSB9fSA8c3VwICpuZ0lmPVwiZmVpbGQucmVxdWlyZWRcIj4qPC9zdXA+PC9sYWJlbD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtc3RhclwiICpuZ0Zvcj1cImxldCBfIG9mIFtdLmNvbnN0cnVjdG9yKDUpOyBsZXQgaWR4ID0gaW5kZXhcIiBbbmdDbGFzc109XCJ7J2NoZWNrZWQnOiBpZHggPCAocmF0aW5nSG92ZXJJbmRleCA/PyBmZWlsZC52YWx1ZSkgIH1cIiAobW91c2VlbnRlcik9XCJyYXRpbmdIb3ZlckluZGV4ID0gaWR4ICsxXCIgKG1vdXNlbGVhdmUpPVwicmF0aW5nSG92ZXJJbmRleCA9IG51bGxcIiAoY2xpY2spPVwiZmVpbGQudmFsdWUgPSBpZHggKzFcIj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbXItMlwiICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cclxuICAgICAgICA8bGFiZWwgW2F0dHIuZm9yXT1cImZlaWxkLnZhbHVlXCIgW3NpbXBvQ29sb3JdPVwiYmdDb2xvclwiIFtpZF09XCJzZWN0aW9uSWRcIiBjbGFzcz1cImlucHV0LWZpZWxkLWxhYmVsXCI+e3sgZmVpbGQudmFsdWUgfX0gPHN1cCAqbmdJZj1cImZlaWxkLnJlcXVpcmVkXCI+Kjwvc3VwPjwvbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJkYXRlXCIgY2xhc3M9XCJwLTJcIiBbYXR0ci5pZF09XCJmZWlsZC52YWx1ZVwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImNvbG9yQ29kZVwiIFtzdHlsZS5jb2xvcl09XCJnZXRUZXh0Q29sb3JcIiBbKG5nTW9kZWwpXT1cImZlaWxkLmlucHV0VmFsdWVcIj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtci0yXCIgKm5nU3dpdGNoQ2FzZT1cIidjaGVja2JveCdcIj5cclxuICAgICAgICA8bGFiZWwgW2F0dHIuZm9yXT1cImZlaWxkLnZhbHVlXCIgW3NpbXBvQ29sb3JdPVwiYmdDb2xvclwiIFtpZF09XCJzZWN0aW9uSWRcIiBjbGFzcz1cImlucHV0LWZpZWxkLWxhYmVsXCI+e3sgZmVpbGQudmFsdWUgfX0gPHN1cCAqbmdJZj1cImZlaWxkLnJlcXVpcmVkXCI+Kjwvc3VwPjwvbGFiZWw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC13cmFwXCIgc3R5bGU9XCJnYXA6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoZWNrYm94IG9mIGZlaWxkLm9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJnYXA6IDVweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2F0dHIuaWRdPVwiY2hlY2tib3gudmFsdWVcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJjb2xvckNvZGVcIiBbc3R5bGUuY29sb3JdPVwiZ2V0VGV4dENvbG9yXCIgIFsobmdNb2RlbCldPVwiY2hlY2tib3guc3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFthdHRyLmZvcl09XCJjaGVja2JveC52YWx1ZVwiIGNsYXNzPVwibWItMCBtdC0xIGNoZWNrYm94Rm9udFwiPnt7IGNoZWNrYm94LnZhbHVlIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtci0yXCIgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCI+XHJcbiAgICAgICAgPGxhYmVsIFthdHRyLmZvcl09XCJmZWlsZC52YWx1ZVwiIFtzaW1wb0NvbG9yXT1cImJnQ29sb3JcIiBbaWRdPVwic2VjdGlvbklkXCIgY2xhc3M9XCJpbnB1dC1maWVsZC1sYWJlbFwiPnt7IGZlaWxkLnZhbHVlIH19IDxzdXAgKm5nSWY9XCJmZWlsZC5yZXF1aXJlZFwiPio8L3N1cD48L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJwLTJcIiBbYXR0ci5pZF09XCJmZWlsZC52YWx1ZVwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImNvbG9yQ29kZVwiIFtzdHlsZS5jb2xvcl09XCJnZXRUZXh0Q29sb3JcIiAgWyhuZ01vZGVsKV09XCJmZWlsZC5pbnB1dFZhbHVlXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbXItMlwiICpuZ1N3aXRjaENhc2U9XCInbW9uZXknXCI+XHJcbiAgICAgICAgPGxhYmVsIFthdHRyLmZvcl09XCJmZWlsZC52YWx1ZVwiIFtzaW1wb0NvbG9yXT1cImJnQ29sb3JcIiBbaWRdPVwic2VjdGlvbklkXCIgY2xhc3M9XCJpbnB1dC1maWVsZC1sYWJlbFwiPnt7IGZlaWxkLnZhbHVlIH19IDxzdXAgKm5nSWY9XCJmZWlsZC5yZXF1aXJlZFwiPio8L3N1cD48L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwicC0yXCIgdmFsdWU9XCLigrlcIiAoa2V5ZG93bik9XCJoYW5kbGVNb25leUlucHV0KCRldmVudClcIiBbYXR0ci5pZF09XCJmZWlsZC52YWx1ZVwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImNvbG9yQ29kZVwiIFtzdHlsZS5jb2xvcl09XCJnZXRUZXh0Q29sb3JcIiAgWyhuZ01vZGVsKV09XCJmZWlsZC5pbnB1dFZhbHVlXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbXItMlwiICpuZ1N3aXRjaENhc2U9XCInZGVzYydcIj5cclxuICAgICAgICA8bGFiZWwgW2F0dHIuZm9yXT1cImZlaWxkLnZhbHVlXCIgW3NpbXBvQ29sb3JdPVwiYmdDb2xvclwiIFtpZF09XCJzZWN0aW9uSWRcIiBjbGFzcz1cImlucHV0LWZpZWxkLWxhYmVsXCI+e3sgZmVpbGQudmFsdWUgfX0gPHN1cCAqbmdJZj1cImZlaWxkLnJlcXVpcmVkXCI+Kjwvc3VwPjwvbGFiZWw+XHJcbiAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwicC0yXCIgW2F0dHIuaWRdPVwiZmVpbGQudmFsdWVcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJjb2xvckNvZGVcIiBbc3R5bGUuY29sb3JdPVwiZ2V0VGV4dENvbG9yXCIgIFsobmdNb2RlbCldPVwiZmVpbGQuaW5wdXRWYWx1ZVwiPjwvdGV4dGFyZWE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbXItMiBwb3NpdGlvbi1yZWxhdGl2ZVwiICpuZ1N3aXRjaENhc2U9XCInZHJvcGRvd24nXCI+XHJcbiAgICAgICAgPGxhYmVsIFthdHRyLmZvcl09XCJmZWlsZC52YWx1ZVwiIFtzaW1wb0NvbG9yXT1cImJnQ29sb3JcIiBbaWRdPVwic2VjdGlvbklkXCIgY2xhc3M9XCJpbnB1dC1maWVsZC1sYWJlbFwiPnt7IGZlaWxkLnZhbHVlIH19IDxzdXAgKm5nSWY9XCJmZWlsZC5yZXF1aXJlZFwiPio8L3N1cD48L2xhYmVsPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIChjbGljayk9XCJzZWxlY3RlZERyb3Bkb3duID09PSBmZWlsZC52YWx1ZSA/IHNlbGVjdGVkRHJvcGRvd24gPSBudWxsIDogc2VsZWN0ZWREcm9wZG93biA9IGZlaWxkLnZhbHVlXCIgPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiByZWFkb25seSBbYXR0ci5pZF09XCJmZWlsZC52YWx1ZVwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImNvbG9yQ29kZVwiIFtzdHlsZS5jb2xvcl09XCJnZXRUZXh0Q29sb3JcIiBbdmFsdWVdPVwiZW50ZXJlZFZhbHVlXCIgXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmVpbGQuaW5wdXRWYWx1ZVwiIGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZG93bi1hcnJvd1wiPnt7ZmVpbGQudmFsdWUgIT0gc2VsZWN0ZWREcm9wZG93biA/ICdrZXlib2FyZF9hcnJvd19kb3duJyA6ICdrZXlib2FyZF9hcnJvd191cCd9fTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1saXN0IHBvc2l0aW9uLWFic29sdXRlXCIgW2hpZGRlbl09XCJmZWlsZC52YWx1ZSAhPSBzZWxlY3RlZERyb3Bkb3duXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmZWlsZC5vcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieydjb250YWluZXItc2VsZWN0ZWQnOiBvcHRpb24udmFsdWUgPT0gc2VsZWN0ZWREcm9wZG93bn1cIiAoY2xpY2spPVwic2VsZWN0RHJvcGRvd24ob3B0aW9uLnZhbHVlKVwiPnt7IG9wdGlvbi52YWx1ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcbiJdfQ==
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmllbGRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC1maWVsZHMvaW5wdXQtZmllbGRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC1maWVsZHMvaW5wdXQtZmllbGRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7O0FBWWpELE1BQU0sT0FBTyxvQkFBb0I7SUFXL0IsWUFDVSxVQUF1QjtRQUF2QixlQUFVLEdBQVYsVUFBVSxDQUFhO1FBVnhCLFlBQU8sR0FBdUIsQ0FBQyxDQUFDO1FBSWxDLHFCQUFnQixHQUFrQixJQUFJLENBQUM7UUFFdkMscUJBQWdCLEdBQWtCLElBQUksQ0FBQztRQUN2QyxpQkFBWSxHQUFrQixJQUFJLENBQUM7UUFNeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQ0QsV0FBVyxDQUFDLE9BQXNCO1FBRWhDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQVU7UUFDekIsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN6RixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsT0FBTztRQUNULENBQUM7UUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2pILENBQUM7SUFDRCxJQUFJLFlBQVk7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3BELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLE1BQWM7UUFDN0QsSUFBSSxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sTUFBTSxDQUFDO1FBQ2hDLElBQUksTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLE1BQU0sQ0FBQztRQUVoQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVwRSxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEQsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVsRCxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEQsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVoRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFDckQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUVyRCxPQUFPLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVcsRUFBRSxNQUFjO1FBQ2pDLE9BQU8sR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ3JFLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxNQUFjO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyx1Q0FBdUM7UUFDcEUsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDakMsQ0FBQztJQUdELGtCQUFrQixDQUFDLEtBQWlCO1FBQ2xDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7OEdBNUVZLG9CQUFvQjtrR0FBcEIsb0JBQW9CLHdRQ2hCakMseXZNQWlFQSxxOEJEdERJLFlBQVkseWhCQUFFLFdBQVcsazhCQUFFLGNBQWMsaUZBQUUsT0FBTzs7MkZBS3pDLG9CQUFvQjtrQkFUaEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQO3dCQUNQLFlBQVksRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE9BQU87cUJBQ25EOytFQUtRLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBbUVSLGtCQUFrQjtzQkFEakIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb2xvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb2xvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1pbnB1dC1maWVsZHMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgQ29sb3JEaXJlY3RpdmUsIE1hdEljb25cclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1maWVsZHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9pbnB1dC1maWVsZHMuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0RmllbGRzQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBmZWlsZDogYW55O1xyXG4gIEBJbnB1dCgpIG9wYWNpdHk6IG51bWJlciB8IHVuZGVmaW5lZCA9IDE7XHJcbiAgQElucHV0KCkgYmdDb2xvcj86IHN0cmluZztcclxuICBASW5wdXQoKSBzZWN0aW9uSWQ/OiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyByYXRpbmdIb3ZlckluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBwdWJsaWMgY29sb3JDb2RlOiBzdHJpbmc7XHJcbiAgcHVibGljIHNlbGVjdGVkRHJvcGRvd246IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHB1YmxpYyBlbnRlcmVkVmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZWxlbWVudFJlZiA6IEVsZW1lbnRSZWZcclxuICApIHtcclxuXHJcbiAgICB0aGlzLmNvbG9yQ29kZSA9IHRoaXMuZ2VuZXJhdGVDb2xvckJhc2VkT25OdW1iZXIodGhpcy5vcGFjaXR5ID8/IDApO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5jb2xvckNvZGUgPSB0aGlzLmdlbmVyYXRlQ29sb3JCYXNlZE9uTnVtYmVyKHRoaXMub3BhY2l0eSA/PyAwKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU1vbmV5SW5wdXQoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKCEoZXZlbnQuY29kZS5pbmNsdWRlcyhcIkRpZ2l0XCIpIHx8IGV2ZW50LmNvZGUuaW5jbHVkZXMoXCJCYWNrc3BhY2VcIikpIHx8ICFldmVudC50YXJnZXQpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IFwi4oK5XCIgKyBOdW1iZXIoZXZlbnQudGFyZ2V0LnZhbHVlLnJlcGxhY2VBbGwoXCIsXCIsIFwiXCIpLnJlcGxhY2VBbGwoXCLigrlcIiwgXCJcIikpLnRvTG9jYWxlU3RyaW5nKCk7XHJcbiAgfVxyXG4gIGdldCBnZXRUZXh0Q29sb3IoKSB7XHJcbiAgICByZXR1cm4gKHRoaXMub3BhY2l0eSA/PyAwKSA8IDUwID8gJyNGRkYnIDogJyMwMDAnO1xyXG4gIH1cclxuXHJcbiAgaW50ZXJwb2xhdGVDb2xvcihjb2xvcjE6IHN0cmluZywgY29sb3IyOiBzdHJpbmcsIGZhY3RvcjogbnVtYmVyKSB7XHJcbiAgICBpZiAoZmFjdG9yID09PSAwKSByZXR1cm4gY29sb3IxO1xyXG4gICAgaWYgKGZhY3RvciA9PT0gMSkgcmV0dXJuIGNvbG9yMjtcclxuXHJcbiAgICBjb25zdCBoZXggPSAoeDogYW55KSA9PiB0aGlzLnBhZFplcm8oTWF0aC5yb3VuZCh4KS50b1N0cmluZygxNiksIDIpO1xyXG5cclxuICAgIGNvbnN0IHIxID0gcGFyc2VJbnQoY29sb3IxLnN1YnN0cmluZygxLCAzKSwgMTYpO1xyXG4gICAgY29uc3QgZzEgPSBwYXJzZUludChjb2xvcjEuc3Vic3RyaW5nKDMsIDUpLCAxNik7XHJcbiAgICBjb25zdCBiMSA9IHBhcnNlSW50KGNvbG9yMS5zdWJzdHJpbmcgICg1LCA3KSwgMTYpO1xyXG5cclxuICAgIGNvbnN0IHIyID0gcGFyc2VJbnQoY29sb3IyLnN1YnN0cmluZygxLCAzKSwgMTYpO1xyXG4gICAgY29uc3QgZzIgPSBwYXJzZUludChjb2xvcjIuc3Vic3RyaW5nKDMsIDUpLCAxNik7XHJcbiAgICBjb25zdCBiMiA9IHBhcnNlSW50KGNvbG9yMi5zdWJzdHJpbmcoNSwgNyksIDE2KTtcclxuXHJcbiAgICBjb25zdCByID0gTWF0aC5jZWlsKHIxICogKDEgLSBmYWN0b3IpICsgcjIgKiBmYWN0b3IpO1xyXG4gICAgY29uc3QgZyA9IE1hdGguY2VpbChnMSAqICgxIC0gZmFjdG9yKSArIGcyICogZmFjdG9yKTtcclxuICAgIGNvbnN0IGIgPSBNYXRoLmNlaWwoYjEgKiAoMSAtIGZhY3RvcikgKyBiMiAqIGZhY3Rvcik7XHJcblxyXG4gICAgcmV0dXJuIGAjJHtoZXgocil9JHtoZXgoZyl9JHtoZXgoYil9YDtcclxuICB9XHJcblxyXG4gIHBhZFplcm8oc3RyOiBzdHJpbmcsIGxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBzdHIubGVuZ3RoIDwgbGVuZ3RoID8gdGhpcy5wYWRaZXJvKFwiMFwiICsgc3RyLCBsZW5ndGgpIDogc3RyO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVDb2xvckJhc2VkT25OdW1iZXIobnVtYmVyOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGZhY3RvciA9IG51bWJlciAvIDEwMDsgLy8gQXNzdW1pbmcgbnVtYmVyIHJhbmdlcyBmcm9tIDAgdG8gMTAwXHJcbiAgICByZXR1cm4gdGhpcy5pbnRlcnBvbGF0ZUNvbG9yKFwiIzAwMDAwMFwiLCBcIiNGRkZGRkZcIiwgZmFjdG9yKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdERyb3Bkb3duKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZW50ZXJlZFZhbHVlID0gdmFsdWU7XHJcbiAgICB0aGlzLmZlaWxkLmlucHV0VmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuc2VsZWN0ZWREcm9wZG93biA9IG51bGw7XHJcbn1cclxuXHJcbkBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuaGFuZGxlT3V0c2lkZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgY29uc3QgY2xpY2tlZEluc2lkZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XHJcbiAgaWYgKCFjbGlja2VkSW5zaWRlKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRHJvcGRvd24gPSBudWxsO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbn1cclxuIiwiPHNlY3Rpb24gW25nU3dpdGNoXT1cImZlaWxkLnR5cGVcIiAgY2xhc3M9XCJtdC0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtci0yXCIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiPlxyXG4gICAgICAgIDxsYWJlbCBbYXR0ci5mb3JdPVwiZmVpbGQudmFsdWVcIiBbc2ltcG9Db2xvcl09XCJiZ0NvbG9yXCIgW2lkXT1cInNlY3Rpb25JZFwiIGNsYXNzPVwiaW5wdXQtZmllbGQtbGFiZWxcIj57eyBmZWlsZC52YWx1ZSB9fSA8c3VwICpuZ0lmPVwiZmVpbGQucmVxdWlyZWRcIj4qPC9zdXA+PC9sYWJlbD5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cInAtMlwiIFthdHRyLmlkXT1cImZlaWxkLnZhbHVlXCIgW3N0eWxlLmJhY2tncm91bmRdPVwiY29sb3JDb2RlXCIgW3N0eWxlLmNvbG9yXT1cImdldFRleHRDb2xvclwiIFsobmdNb2RlbCldPVwiZmVpbGQuaW5wdXRWYWx1ZVwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIG1yLTJcIiAqbmdTd2l0Y2hDYXNlPVwiJ2FkZHJlc3MnXCI+XHJcbiAgICAgICAgPGxhYmVsIFthdHRyLmZvcl09XCJmZWlsZC52YWx1ZVwiICBbc2ltcG9Db2xvcl09XCJiZ0NvbG9yXCIgW2lkXT1cInNlY3Rpb25JZFwiIGNsYXNzPVwiaW5wdXQtZmllbGQtbGFiZWxcIj57eyBmZWlsZC52YWx1ZSB9fSA8c3VwICpuZ0lmPVwiZmVpbGQucmVxdWlyZWRcIj4qPC9zdXA+PC9sYWJlbD5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cInAtMlwiIFthdHRyLmlkXT1cImZlaWxkLnZhbHVlXCIgW3N0eWxlLmJhY2tncm91bmRdPVwiY29sb3JDb2RlXCIgW3N0eWxlLmNvbG9yXT1cImdldFRleHRDb2xvclwiIFsobmdNb2RlbCldPVwiZmVpbGQuaW5wdXRWYWx1ZVwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIG1yLTJcIiAqbmdTd2l0Y2hDYXNlPVwiJ2VtYWlsJ1wiPlxyXG4gICAgICAgIDxsYWJlbCBbYXR0ci5mb3JdPVwiZmVpbGQudmFsdWVcIiBbc2ltcG9Db2xvcl09XCJiZ0NvbG9yXCIgW2lkXT1cInNlY3Rpb25JZFwiIGNsYXNzPVwiaW5wdXQtZmllbGQtbGFiZWxcIj57eyBmZWlsZC52YWx1ZSB9fSA8c3VwICpuZ0lmPVwiZmVpbGQucmVxdWlyZWRcIj4qPC9zdXA+PC9sYWJlbD5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cImVtYWlsXCIgY2xhc3M9XCJwLTJcIiBbYXR0ci5pZF09XCJmZWlsZC52YWx1ZVwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImNvbG9yQ29kZVwiIFtzdHlsZS5jb2xvcl09XCJnZXRUZXh0Q29sb3JcIiBbKG5nTW9kZWwpXT1cImZlaWxkLmlucHV0VmFsdWVcIj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtci0yXCIgKm5nU3dpdGNoQ2FzZT1cIidwYXNzd29yZCdcIj5cclxuICAgICAgICA8bGFiZWwgW2F0dHIuZm9yXT1cImZlaWxkLnZhbHVlXCIgW3NpbXBvQ29sb3JdPVwiYmdDb2xvclwiIFtpZF09XCJzZWN0aW9uSWRcIiBjbGFzcz1cImlucHV0LWZpZWxkLWxhYmVsXCI+e3sgZmVpbGQudmFsdWUgfX0gPHN1cCAqbmdJZj1cImZlaWxkLnJlcXVpcmVkXCI+Kjwvc3VwPjwvbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIGNsYXNzPVwicC0yXCIgW2F0dHIuaWRdPVwiZmVpbGQudmFsdWVcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJjb2xvckNvZGVcIiBbc3R5bGUuY29sb3JdPVwiZ2V0VGV4dENvbG9yXCIgWyhuZ01vZGVsKV09XCJmZWlsZC5pbnB1dFZhbHVlXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbXItMlwiICpuZ1N3aXRjaENhc2U9XCIncmF0aW5nJ1wiPlxyXG4gICAgICAgIDxsYWJlbCBbYXR0ci5mb3JdPVwiZmVpbGQudmFsdWVcIiBbc2ltcG9Db2xvcl09XCJiZ0NvbG9yXCIgW2lkXT1cInNlY3Rpb25JZFwiIGNsYXNzPVwiaW5wdXQtZmllbGQtbGFiZWxcIj57eyBmZWlsZC52YWx1ZSB9fSA8c3VwICpuZ0lmPVwiZmVpbGQucmVxdWlyZWRcIj4qPC9zdXA+PC9sYWJlbD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtc3RhclwiICpuZ0Zvcj1cImxldCBfIG9mIFtdLmNvbnN0cnVjdG9yKDUpOyBsZXQgaWR4ID0gaW5kZXhcIiBbbmdDbGFzc109XCJ7J2NoZWNrZWQnOiBpZHggPCAocmF0aW5nSG92ZXJJbmRleCA/PyBmZWlsZC52YWx1ZSkgIH1cIiAobW91c2VlbnRlcik9XCJyYXRpbmdIb3ZlckluZGV4ID0gaWR4ICsxXCIgKG1vdXNlbGVhdmUpPVwicmF0aW5nSG92ZXJJbmRleCA9IG51bGxcIiAoY2xpY2spPVwiZmVpbGQudmFsdWUgPSBpZHggKzFcIj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbXItMlwiICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cclxuICAgICAgICA8bGFiZWwgW2F0dHIuZm9yXT1cImZlaWxkLnZhbHVlXCIgW3NpbXBvQ29sb3JdPVwiYmdDb2xvclwiIFtpZF09XCJzZWN0aW9uSWRcIiBjbGFzcz1cImlucHV0LWZpZWxkLWxhYmVsXCI+e3sgZmVpbGQudmFsdWUgfX0gPHN1cCAqbmdJZj1cImZlaWxkLnJlcXVpcmVkXCI+Kjwvc3VwPjwvbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJkYXRlXCIgY2xhc3M9XCJwLTJcIiBbYXR0ci5pZF09XCJmZWlsZC52YWx1ZVwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImNvbG9yQ29kZVwiIFtzdHlsZS5jb2xvcl09XCJnZXRUZXh0Q29sb3JcIiBbKG5nTW9kZWwpXT1cImZlaWxkLmlucHV0VmFsdWVcIj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtci0yXCIgKm5nU3dpdGNoQ2FzZT1cIidjaGVja2JveCdcIj5cclxuICAgICAgICA8bGFiZWwgW2F0dHIuZm9yXT1cImZlaWxkLnZhbHVlXCIgW3NpbXBvQ29sb3JdPVwiYmdDb2xvclwiIFtpZF09XCJzZWN0aW9uSWRcIiBjbGFzcz1cImlucHV0LWZpZWxkLWxhYmVsXCI+e3sgZmVpbGQudmFsdWUgfX0gPHN1cCAqbmdJZj1cImZlaWxkLnJlcXVpcmVkXCI+Kjwvc3VwPjwvbGFiZWw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC13cmFwXCIgc3R5bGU9XCJnYXA6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoZWNrYm94IG9mIGZlaWxkLm9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJnYXA6IDVweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2F0dHIuaWRdPVwiY2hlY2tib3gudmFsdWVcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJjb2xvckNvZGVcIiBbc3R5bGUuY29sb3JdPVwiZ2V0VGV4dENvbG9yXCIgIFsobmdNb2RlbCldPVwiY2hlY2tib3guc3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFthdHRyLmZvcl09XCJjaGVja2JveC52YWx1ZVwiIGNsYXNzPVwibWItMCBtdC0xIGNoZWNrYm94Rm9udFwiPnt7IGNoZWNrYm94LnZhbHVlIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtci0yXCIgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCI+XHJcbiAgICAgICAgPGxhYmVsIFthdHRyLmZvcl09XCJmZWlsZC52YWx1ZVwiIFtzaW1wb0NvbG9yXT1cImJnQ29sb3JcIiBbaWRdPVwic2VjdGlvbklkXCIgY2xhc3M9XCJpbnB1dC1maWVsZC1sYWJlbFwiPnt7IGZlaWxkLnZhbHVlIH19IDxzdXAgKm5nSWY9XCJmZWlsZC5yZXF1aXJlZFwiPio8L3N1cD48L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJwLTJcIiBbYXR0ci5pZF09XCJmZWlsZC52YWx1ZVwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImNvbG9yQ29kZVwiIFtzdHlsZS5jb2xvcl09XCJnZXRUZXh0Q29sb3JcIiAgWyhuZ01vZGVsKV09XCJmZWlsZC5pbnB1dFZhbHVlXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbXItMlwiICpuZ1N3aXRjaENhc2U9XCInbW9uZXknXCI+XHJcbiAgICAgICAgPGxhYmVsIFthdHRyLmZvcl09XCJmZWlsZC52YWx1ZVwiIFtzaW1wb0NvbG9yXT1cImJnQ29sb3JcIiBbaWRdPVwic2VjdGlvbklkXCIgY2xhc3M9XCJpbnB1dC1maWVsZC1sYWJlbFwiPnt7IGZlaWxkLnZhbHVlIH19IDxzdXAgKm5nSWY9XCJmZWlsZC5yZXF1aXJlZFwiPio8L3N1cD48L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwicC0yXCIgdmFsdWU9XCLigrlcIiAoa2V5ZG93bik9XCJoYW5kbGVNb25leUlucHV0KCRldmVudClcIiBbYXR0ci5pZF09XCJmZWlsZC52YWx1ZVwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImNvbG9yQ29kZVwiIFtzdHlsZS5jb2xvcl09XCJnZXRUZXh0Q29sb3JcIiAgWyhuZ01vZGVsKV09XCJmZWlsZC5pbnB1dFZhbHVlXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbXItMlwiICpuZ1N3aXRjaENhc2U9XCInZGVzYydcIj5cclxuICAgICAgICA8bGFiZWwgW2F0dHIuZm9yXT1cImZlaWxkLnZhbHVlXCIgW3NpbXBvQ29sb3JdPVwiYmdDb2xvclwiIFtpZF09XCJzZWN0aW9uSWRcIiBjbGFzcz1cImlucHV0LWZpZWxkLWxhYmVsXCI+e3sgZmVpbGQudmFsdWUgfX0gPHN1cCAqbmdJZj1cImZlaWxkLnJlcXVpcmVkXCI+Kjwvc3VwPjwvbGFiZWw+XHJcbiAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwicC0yXCIgW2F0dHIuaWRdPVwiZmVpbGQudmFsdWVcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJjb2xvckNvZGVcIiBbc3R5bGUuY29sb3JdPVwiZ2V0VGV4dENvbG9yXCIgIFsobmdNb2RlbCldPVwiZmVpbGQuaW5wdXRWYWx1ZVwiPjwvdGV4dGFyZWE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbXItMiBwb3NpdGlvbi1yZWxhdGl2ZVwiICpuZ1N3aXRjaENhc2U9XCInZHJvcGRvd24nXCI+XHJcbiAgICAgICAgPGxhYmVsIFthdHRyLmZvcl09XCJmZWlsZC52YWx1ZVwiIFtzaW1wb0NvbG9yXT1cImJnQ29sb3JcIiBbaWRdPVwic2VjdGlvbklkXCIgY2xhc3M9XCJpbnB1dC1maWVsZC1sYWJlbFwiPnt7IGZlaWxkLnZhbHVlIH19IDxzdXAgKm5nSWY9XCJmZWlsZC5yZXF1aXJlZFwiPio8L3N1cD48L2xhYmVsPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIChjbGljayk9XCJzZWxlY3RlZERyb3Bkb3duID09PSBmZWlsZC52YWx1ZSA/IHNlbGVjdGVkRHJvcGRvd24gPSBudWxsIDogc2VsZWN0ZWREcm9wZG93biA9IGZlaWxkLnZhbHVlXCIgPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiByZWFkb25seSBbYXR0ci5pZF09XCJmZWlsZC52YWx1ZVwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImNvbG9yQ29kZVwiIFtzdHlsZS5jb2xvcl09XCJnZXRUZXh0Q29sb3JcIiBbdmFsdWVdPVwiZW50ZXJlZFZhbHVlXCIgXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmVpbGQuaW5wdXRWYWx1ZVwiIGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZG93bi1hcnJvd1wiPnt7ZmVpbGQudmFsdWUgIT0gc2VsZWN0ZWREcm9wZG93biA/ICdrZXlib2FyZF9hcnJvd19kb3duJyA6ICdrZXlib2FyZF9hcnJvd191cCd9fTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1saXN0IHBvc2l0aW9uLWFic29sdXRlXCIgW2hpZGRlbl09XCJmZWlsZC52YWx1ZSAhPSBzZWxlY3RlZERyb3Bkb3duXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmZWlsZC5vcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieydjb250YWluZXItc2VsZWN0ZWQnOiBvcHRpb24udmFsdWUgPT0gc2VsZWN0ZWREcm9wZG93bn1cIiAoY2xpY2spPVwic2VsZWN0RHJvcGRvd24ob3B0aW9uLnZhbHVlKVwiPnt7IG9wdGlvbi52YWx1ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcbiJdfQ==