simpo-component-library 3.6.590 → 3.6.591

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (20) hide show
  1. package/esm2022/lib/elements/image-editor/image-editor.component.mjs +3 -3
  2. package/esm2022/lib/sections/condensed-and-gradient/condensed-and-gradient.component.mjs +68 -0
  3. package/esm2022/lib/sections/four-features-centered-image/four-features-centered-image.component.mjs +102 -0
  4. package/esm2022/lib/sections/four-features-centered-image/four-features-centered-image.modal.mjs +2 -0
  5. package/esm2022/lib/sections/image-background/image-background/image-background.component.mjs +3 -3
  6. package/esm2022/public-api.mjs +3 -1
  7. package/fesm2022/simpo-component-library.mjs +132 -5
  8. package/fesm2022/simpo-component-library.mjs.map +1 -1
  9. package/lib/ecommerce/sections/featured-category/featured-category.component.d.ts +1 -1
  10. package/lib/ecommerce/sections/featured-category/featured-collection.component.d.ts +1 -1
  11. package/lib/ecommerce/sections/new-collection/new-collection.component.d.ts +1 -1
  12. package/lib/sections/condensed-and-gradient/condensed-and-gradient.component.d.ts +19 -0
  13. package/lib/sections/four-features-centered-image/four-features-centered-image.component.d.ts +26 -0
  14. package/lib/sections/four-features-centered-image/four-features-centered-image.modal.d.ts +20 -0
  15. package/lib/sections/image-grid-hotspot/image-grid-hotspot.component.d.ts +1 -1
  16. package/lib/sections/image-grid-section/image-grid-section.component.d.ts +1 -1
  17. package/package.json +1 -1
  18. package/public-api.d.ts +2 -0
  19. package/simpo-component-library-3.6.591.tgz +0 -0
  20. package/simpo-component-library-3.6.590.tgz +0 -0
@@ -222,13 +222,13 @@ export class ImageEditorComponent {
222
222
  }
223
223
  }
224
224
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageEditorComponent, deps: [{ token: i1.EventsService }, { token: i2.ElementServiceService }, { token: i3.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i3.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
225
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ImageEditorComponent, isStandalone: true, selector: "simpo-image-editor", ngImport: i0, template: "<section class=\"main-section\">\r\n <div class=\"header-section d-flex justify-content-between align-items-center\">\r\n <div class=\"head-text\">Image Settings</div>\r\n <mat-icon class=\"d-flex align-items-center justify-content-center f-18 cp\"\r\n (click)=\"dialogRef.close()\">close</mat-icon>\r\n </div>\r\n <div>\r\n <!-- <p class=\"heading mb-0\">Image</p> -->\r\n <div class=\"upload-image cp\" *ngIf=\"!imageData.url && !iconData.url\" (click)=\"updateImage()\">\r\n <img loading=\"lazy\"\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/547500c1744698830343upload-one%20%281%29.png\"\r\n alt=\"\">\r\n <p class=\"upload-text mb-0\">Upload a file</p>\r\n <p class=\"upload-text mb-0\">or select an existing one</p>\r\n <span class=\"upload-text\">up to 32MB</span>\r\n </div>\r\n <div class=\"sec d-flex align-items-center\" *ngIf=\"imageData.url || iconData.url\">\r\n <ng-container *ngIf=\"!imgLoader\">\r\n <img [src]=\"imageData.url || iconData.url\" [alt]=\"imageData.altText ?? ''\"\r\n *ngIf=\"!imageData?.url?.includes('.mp4')\">\r\n <video [src]=\"imageData.url\" class=\"w-100 h-100\" *ngIf=\"imageData?.url?.includes('.mp4')\" muted loop></video>\r\n <div class=\"repalce-image cursor-pointer\" (click)=\"updateImage()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\"\r\n height=\"24\" class=\"icon w-4 h-4\" aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"\r\n d=\"m4 16 4.58579-4.5858c.78104-.781 2.04741-.781 2.82841 0L16 16m-2-2 1.5858-1.5858c.781-.781 2.0474-.781 2.8284 0L20 14m-6-6h.01M6 20h12c1.1046 0 2-.8954 2-2V6c0-1.10457-.8954-2-2-2H6c-1.10457 0-2 .89543-2 2v12c0 1.1046.89543 2 2 2Z\">\r\n </path>\r\n </svg>\r\n </div>\r\n\r\n <div class=\"delete-image cursor-pointer \" (click)=\"deleteImage()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"#ffffff\" viewBox=\"0 0 24 24\" width=\"24\"\r\n height=\"24\" class=\"icon h-4 w-4\" aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"\r\n d=\"m19 7-.8673 12.1425C18.0579 20.1891 17.187 21 16.1378 21H7.86224c-1.04928 0-1.92016-.8109-1.99492-1.8575L5 7m5 4v6m4-6v6m1-10V4c0-.55228-.4477-1-1-1h-4c-.55228 0-1 .44772-1 1v3M4 7h16\">\r\n </path>\r\n </svg>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"imgLoader\">\r\n <div class=\"upload_spinner d-flex w-100 h-100 justify-content-center align-items-center\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"data.showIcon\">\r\n <span class=\"p-0-10 clr-red\">Note : This Icon Feature Supports SVG and PNG in black and white format only.</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"!data.showIcon\">\r\n <div class=\"w-100 p-0-10 mb-22\" *ngIf=\"imageData.hasOwnProperty('altText')\">\r\n <p class=\"heading mb-2\">Alt text</p>\r\n <input type=\"text\" placeholder=\"Enter alt text\" class=\"input-field w-100\" [(ngModel)]=\"imageData.altText\">\r\n <div class=\"sub-text\">When the image fails to load, this text will be displayed.</div>\r\n </div>\r\n\r\n <div class=\"image mb-22\" *ngIf=\"imageData.hasOwnProperty('position')\">\r\n <p class=\"heading mb-1\">Image Position</p>\r\n <div class=\"horizontal-action\">\r\n <label>Horizontal</label>\r\n <div class=\"slider d-flex align-items-center justify-content-start cp\">\r\n <input [min]=\"min\" [max]=\"max\" step=\"5\" type=\"range\" [(ngModel)]=\"imageData.position.x\"\r\n (input)=\"horizontalPosition()\" class=\"w-75\">\r\n </div>\r\n </div>\r\n <div class=\"horizontal-action\" style=\"margin-top: 5px;\">\r\n <label>Vertical</label>\r\n <div class=\"slider d-flex align-items-center justify-content-start cp\">\r\n <input [min]=\"min\" [max]=\"max\" step=\"5\" type=\"range\" [(ngModel)]=\"imageData.position.y\"\r\n (input)=\"horizontalPosition()\" class=\"w-75\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"groups cp px-3\">\r\n <div *ngFor=\"let type of linkType\" [ngClass]=\"{'selectedType' : type.type === selectedType}\"\r\n (click)=\"changeType(type.type)\">{{type.type}}</div>\r\n </div>\r\n <div class=\"field-container mt-3 mx-3\">\r\n <div *ngIf=\"link.linkType === RedirectionLink.Page\">\r\n <label class=\"input-label-1 mt-3 mb-2\">Select Page</label>\r\n <div class=\"drop-down-container w-100 d-flex mb-2\">\r\n <select [(ngModel)]=\"link.pageId\" (change)=\"onPageChange($event)\">\r\n <option value=\"\" selected>Select from your existing pages</option>\r\n <option *ngFor=\"let page of templatePage\" [value]=\"page.id\" style=\"padding: 10px;\">\r\n {{page.pageName}}</option>\r\n </select>\r\n <div class=\"down-arrow d-flex align-items-center justify-content-center\"><img\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/268410c1742286052940Down%202.png\" alt=\"\">\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"pageName == 'Product List'\">\r\n <label class=\"input-label-1 mt-3 mb-2\">Select Collection</label>\r\n <div class=\"drop-down-container w-100 d-flex mb-2\">\r\n <select [(ngModel)]=\"collectionPath\" (ngModelChange)=\"addCollectionToPath()\">\r\n <option value=\"\" selected>Select from your existing pages</option>\r\n <option *ngFor=\"let coll of collectionList\" style=\"padding: 10px;\" [value]=\"coll.collectionName\">\r\n {{coll?.collectionName}}</option>\r\n </select>\r\n </div>\r\n <label class=\"input-label-1 mt-3 mb-2\">Select Category</label>\r\n <div class=\"drop-down-container w-100 d-flex mb-2\">\r\n <select [(ngModel)]=\"categoryPath\" (ngModelChange)=\"addCategoryToPath()\">\r\n <option value=\"\" selected>Select from your existing pages</option>\r\n <option *ngFor=\"let coll of categoryList\" style=\"padding: 10px;\" [value]=\"coll.categoryName\">\r\n {{coll?.categoryName}}</option>\r\n </select>\r\n </div>\r\n </ng-container>\r\n <!-- <div class=\"sub-text\">Select from your existing pages</div> -->\r\n </div>\r\n <div *ngIf=\"link.linkType === RedirectionLink.section\">\r\n <label class=\"mt-3 mb-2 input-label-1\">Section</label>\r\n <div class=\"drop-down-container w-100 d-flex mb-2\">\r\n <select [(ngModel)]=\"link.pageId\">\r\n <option value=\"\" selected>Select the Section</option>\r\n <option *ngFor=\"let section of templatePage[0]?.components\" [value]=\"section.id\">{{section.sectionName}}\r\n </option>\r\n </select>\r\n <div class=\"down-arrow d-flex align-items-center justify-content-center\"><img\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/268410c1742286052940Down%202.png\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <label class=\"input-label-2\">Open in a new browser tab</label>\r\n <div class=\"form-check form-switch ml-auto\">\r\n <input class=\"form-check-input switch-btn cursor-pointer\" type=\"checkbox\" [(ngModel)]=\"link.newTab\"\r\n role=\"switch\">\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"link.linkType === RedirectionLink.External || link.linkType === RedirectionLink.Email || link.linkType === RedirectionLink.Phone\">\r\n <label class=\"mt-3 mb-2 input-label-1\">Select type</label>\r\n <div class=\"drop-down-container w-100 d-flex mb-2\">\r\n <select [(ngModel)]=\"link.linkType\">\r\n <option value=\"\" selected>Select the Type</option>\r\n <option *ngFor=\"let type of externalLinkType\" [value]=\"type.type\">{{type.type}}</option>\r\n </select>\r\n <div class=\"down-arrow d-flex align-items-center justify-content-center\"><img\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/268410c1742286052940Down%202.png\" alt=\"\">\r\n </div>\r\n </div>\r\n <label class=\"input-label mb-2\">{{link.linkType === RedirectionLink.External ? 'Website' : link.linkType ===\r\n RedirectionLink.Email ? 'Email Address' : 'Phone Number'}}</label>\r\n <input type=\"text\" class=\"input-text\" [(ngModel)]=\"link.redirectionUrl\"\r\n [placeholder]=\"link.linkType === RedirectionLink.External ? 'example : https://facebook.com': ''\">\r\n </div>\r\n\r\n\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngIf=\"data.showIcon\">\r\n <div class=\"icon-color px-3 mb-3 d-flex flex-column justify-content-center align-items-center\">\r\n <label class=\"input-label-1 mb-4 w-100\">Icon Color</label>\r\n <div [style.backgroundColor]=\"iconData.color\" class=\"custom-input\" (click)=\"colorInput.click()\"></div>\r\n <input type=\"color\" [(ngModel)]=\"iconData.color\" (ngModelChange)=\"changeIconColor()\" class=\"input-text d-none\"\r\n #colorInput />\r\n </div>\r\n\r\n <div class=\"background-on d-flex justify-content-between px-3 mb-2\">\r\n <label class=\"input-label-1\">Show Background</label>\r\n <div class=\"form-check form-switch ml-auto\">\r\n <input class=\"form-check-input switch-btn cursor-pointer\" type=\"checkbox\" [(ngModel)]=\"iconData.showBackground\"\r\n role=\"switch\">\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"tabs d-flex px-3 gap-3 mb-2\" *ngIf=\"iconData.showBackground\">\r\n <div class=\"tab px-3 py-2\" *ngFor=\"let tab of tabs\" (click)=\"iconData.backgroundType = tab\"\r\n [class.selectedTab]=\"iconData.backgroundType == tab\">\r\n {{tab}}\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"icon-background px-3 d-flex flex-column justify-content-center align-items-center\"\r\n *ngIf=\"iconData.showBackground\">\r\n <label class=\"input-label-1 mb-3 w-100\">Icon Background</label>\r\n <div [style.backgroundColor]=\"iconData?.backgroundColor\" class=\"custom-input mb-2\" (click)=\"colorInput1.click()\">\r\n </div>\r\n <input type=\"color\" [(ngModel)]=\"iconData.backgroundColor\" class=\"input-text d-none\" #colorInput1 />\r\n </div>\r\n\r\n <div class=\"icon-background px-3 d-flex flex-column justify-content-center align-items-center\"\r\n *ngIf=\"iconData.showBackground && iconData.backgroundType === 'Gradient'\">\r\n <label class=\"input-label-1 mb-3 w-100\">Icon Secondary Background</label>\r\n <div [style.backgroundColor]=\"iconData?.secondaryColor\" class=\"custom-input\" (click)=\"colorInput2.click()\"></div>\r\n <input type=\"color\" [(ngModel)]=\"iconData.secondaryColor\" class=\"input-text d-none\" #colorInput2 />\r\n </div>\r\n </ng-container>\r\n\r\n\r\n</section>", styles: ["*{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}:host{--grey-color: rgba(250, 250, 250, 1)}.custom-input{height:35px;width:100%;border-radius:2rem;box-shadow:0 1px 3px #3c404326,0 1px 2px #3c404326}.tab{border:1px solid rgba(44,44,44,.6);border-radius:12px}.selectedTab{background:#39393934;font-weight:700}.clr-red{color:red;font-size:12px;margin-bottom:10px}.heading{color:#000;font-size:17px;font-weight:600}.upload-text{background:var(--primary-bg-color);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-weight:500}.upload-image{border:3px dashed rgba(44,44,44,.6);display:flex;flex-direction:column;justify-content:center;align-items:center;padding:2rem;margin:10px 10px 22px;border-radius:20px;box-shadow:#0000000d 0 1px 2px}.upload-image img{margin-bottom:8px;height:40px}.mb-0{margin-bottom:0!important}.desc{color:#fafafa;font-size:15px}.input-field{font-size:14px;outline:none;border:unset;border-radius:5px;padding:10px;color:#090909e6;background:#fafafa}.horizontal-action{display:flex;justify-content:space-between;align-items:center}.horizontal-action label{width:25%;font-size:14px;font-weight:400!important}.main-section{display:flex;flex-direction:column}.image{display:flex;flex-direction:column;gap:5px;padding:0 10px}.slider{width:70%}.cp{cursor:pointer}.sec{padding:10px 10px 22px;position:relative}.sec img{width:100%;height:200px;border-radius:20px}.delete-image{background-color:#d92d20;width:30px;height:30px;border-radius:6px;display:flex;justify-content:center;align-items:center;position:absolute;top:20px;right:20px}.repalce-image{display:flex;align-items:center;background:#fff;padding:2px;border-radius:6px;position:absolute;bottom:30px;left:20px}.f-18{font-size:18px}.header-section{padding:10px;box-shadow:0 0 4px #00000040}.header-section .head-text{font-weight:600;font-size:15px;color:#000}.header-section mat-icon{color:#2d264b}.p-0-10{padding:0 10px}.sub-text{font-size:13px;font-weight:400;line-height:24px;color:#09090980}.w-75{width:75%}.groups{display:flex;justify-content:space-between;margin-top:25px}.groups div{font-size:15px;font-weight:600;color:#2c2c2c99;padding:6px 30px;cursor:pointer}.selectedType{position:relative;text-align:center;background:var(--primary-bg-color);background-clip:text;box-shadow:0 0 4px #00000040;border-radius:10px}.selectedType:before{content:\"\";position:absolute;inset:0;padding:1px;border-radius:10px;background:var(--primary-bg-color);mask:linear-gradient(white 0 0) content-box,linear-gradient(white 0 0);mask-composite:xor;mask-composite:exclude}.field-container{background:var(--grey-color);border-radius:13px;padding:10px}.drop-down-container{padding:10px;border-radius:8px;background:#fff;cursor:pointer}.drop-down-container select{width:90%;appearance:none;position:relative;outline:unset;border:unset;border-right:3px solid rgba(230,230,230,1);background:#fff;font-size:14px;padding:0 10px;border-radius:unset}.drop-down-container .down-arrow{width:10%;padding:0 6px}.input-label-1{font-size:16px;font-weight:600}.input-text{height:37px;width:100%;border:1px solid var(--grey-color);border-radius:5px;outline:none;font-size:14px;padding:10px 20px;font-weight:400;color:#090909e6}.mb-22{margin-bottom:22px}input[type=range]{-webkit-appearance:none;width:100%;height:8px;border-radius:20px;overflow:hidden;background:#fafafa}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;height:8px;width:10px;background:var(--primary-bg-color);box-shadow:-50rem 0 5rem 20rem #250d5e,-40rem 0 5rem 30rem #0bf,-30rem 0 2rem 25rem #250d5e,-25.5rem 0 0 25rem #0bf;border-radius:50%;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.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: i5.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSliderModule }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] }); }
225
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ImageEditorComponent, isStandalone: true, selector: "simpo-image-editor", ngImport: i0, template: "<section class=\"main-section\">\r\n <div class=\"header-section d-flex justify-content-between align-items-center\">\r\n <div class=\"head-text\">Image Settings</div>\r\n <mat-icon class=\"d-flex align-items-center justify-content-center f-18 cp\"\r\n (click)=\"dialogRef.close()\">close</mat-icon>\r\n </div>\r\n <div>\r\n <!-- <p class=\"heading mb-0\">Image</p> -->\r\n <div class=\"upload-image cp\" *ngIf=\"!imageData?.url && !iconData?.url\" (click)=\"updateImage()\">\r\n <img loading=\"lazy\"\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/547500c1744698830343upload-one%20%281%29.png\"\r\n alt=\"\">\r\n <p class=\"upload-text mb-0\">Upload a file</p>\r\n <p class=\"upload-text mb-0\">or select an existing one</p>\r\n <span class=\"upload-text\">up to 32MB</span>\r\n </div>\r\n <div class=\"sec d-flex align-items-center\" *ngIf=\"imageData?.url || iconData?.url\">\r\n <ng-container *ngIf=\"!imgLoader\">\r\n <img [src]=\"imageData?.url || iconData.url\" [alt]=\"imageData?.altText ?? ''\"\r\n *ngIf=\"!imageData?.url?.includes('.mp4')\">\r\n <video [src]=\"imageData?.url\" class=\"w-100 h-100\" *ngIf=\"imageData?.url?.includes('.mp4')\" muted loop></video>\r\n <div class=\"repalce-image cursor-pointer\" (click)=\"updateImage()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\"\r\n height=\"24\" class=\"icon w-4 h-4\" aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"\r\n d=\"m4 16 4.58579-4.5858c.78104-.781 2.04741-.781 2.82841 0L16 16m-2-2 1.5858-1.5858c.781-.781 2.0474-.781 2.8284 0L20 14m-6-6h.01M6 20h12c1.1046 0 2-.8954 2-2V6c0-1.10457-.8954-2-2-2H6c-1.10457 0-2 .89543-2 2v12c0 1.1046.89543 2 2 2Z\">\r\n </path>\r\n </svg>\r\n </div>\r\n\r\n <div class=\"delete-image cursor-pointer \" (click)=\"deleteImage()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"#ffffff\" viewBox=\"0 0 24 24\" width=\"24\"\r\n height=\"24\" class=\"icon h-4 w-4\" aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"\r\n d=\"m19 7-.8673 12.1425C18.0579 20.1891 17.187 21 16.1378 21H7.86224c-1.04928 0-1.92016-.8109-1.99492-1.8575L5 7m5 4v6m4-6v6m1-10V4c0-.55228-.4477-1-1-1h-4c-.55228 0-1 .44772-1 1v3M4 7h16\">\r\n </path>\r\n </svg>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"imgLoader\">\r\n <div class=\"upload_spinner d-flex w-100 h-100 justify-content-center align-items-center\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"data.showIcon\">\r\n <span class=\"p-0-10 clr-red\">Note : This Icon Feature Supports SVG and PNG in black and white format only.</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"!data.showIcon\">\r\n <div class=\"w-100 p-0-10 mb-22\" *ngIf=\"imageData?.hasOwnProperty('altText')\">\r\n <p class=\"heading mb-2\">Alt text</p>\r\n <input type=\"text\" placeholder=\"Enter alt text\" class=\"input-field w-100\" [(ngModel)]=\"imageData.altText\">\r\n <div class=\"sub-text\">When the image fails to load, this text will be displayed.</div>\r\n </div>\r\n\r\n <div class=\"image mb-22\" *ngIf=\"imageData?.hasOwnProperty('position')\">\r\n <p class=\"heading mb-1\">Image Position</p>\r\n <div class=\"horizontal-action\">\r\n <label>Horizontal</label>\r\n <div class=\"slider d-flex align-items-center justify-content-start cp\">\r\n <input [min]=\"min\" [max]=\"max\" step=\"5\" type=\"range\" [(ngModel)]=\"imageData.position.x\"\r\n (input)=\"horizontalPosition()\" class=\"w-75\">\r\n </div>\r\n </div>\r\n <div class=\"horizontal-action\" style=\"margin-top: 5px;\">\r\n <label>Vertical</label>\r\n <div class=\"slider d-flex align-items-center justify-content-start cp\">\r\n <input [min]=\"min\" [max]=\"max\" step=\"5\" type=\"range\" [(ngModel)]=\"imageData.position.y\"\r\n (input)=\"horizontalPosition()\" class=\"w-75\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"groups cp px-3\">\r\n <div *ngFor=\"let type of linkType\" [ngClass]=\"{'selectedType' : type.type === selectedType}\"\r\n (click)=\"changeType(type.type)\">{{type.type}}</div>\r\n </div>\r\n <div class=\"field-container mt-3 mx-3\">\r\n <div *ngIf=\"link.linkType === RedirectionLink.Page\">\r\n <label class=\"input-label-1 mt-3 mb-2\">Select Page</label>\r\n <div class=\"drop-down-container w-100 d-flex mb-2\">\r\n <select [(ngModel)]=\"link.pageId\" (change)=\"onPageChange($event)\">\r\n <option value=\"\" selected>Select from your existing pages</option>\r\n <option *ngFor=\"let page of templatePage\" [value]=\"page.id\" style=\"padding: 10px;\">\r\n {{page.pageName}}</option>\r\n </select>\r\n <div class=\"down-arrow d-flex align-items-center justify-content-center\"><img\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/268410c1742286052940Down%202.png\" alt=\"\">\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"pageName == 'Product List'\">\r\n <label class=\"input-label-1 mt-3 mb-2\">Select Collection</label>\r\n <div class=\"drop-down-container w-100 d-flex mb-2\">\r\n <select [(ngModel)]=\"collectionPath\" (ngModelChange)=\"addCollectionToPath()\">\r\n <option value=\"\" selected>Select from your existing pages</option>\r\n <option *ngFor=\"let coll of collectionList\" style=\"padding: 10px;\" [value]=\"coll.collectionName\">\r\n {{coll?.collectionName}}</option>\r\n </select>\r\n </div>\r\n <label class=\"input-label-1 mt-3 mb-2\">Select Category</label>\r\n <div class=\"drop-down-container w-100 d-flex mb-2\">\r\n <select [(ngModel)]=\"categoryPath\" (ngModelChange)=\"addCategoryToPath()\">\r\n <option value=\"\" selected>Select from your existing pages</option>\r\n <option *ngFor=\"let coll of categoryList\" style=\"padding: 10px;\" [value]=\"coll.categoryName\">\r\n {{coll?.categoryName}}</option>\r\n </select>\r\n </div>\r\n </ng-container>\r\n <!-- <div class=\"sub-text\">Select from your existing pages</div> -->\r\n </div>\r\n <div *ngIf=\"link.linkType === RedirectionLink.section\">\r\n <label class=\"mt-3 mb-2 input-label-1\">Section</label>\r\n <div class=\"drop-down-container w-100 d-flex mb-2\">\r\n <select [(ngModel)]=\"link.pageId\">\r\n <option value=\"\" selected>Select the Section</option>\r\n <option *ngFor=\"let section of templatePage[0]?.components\" [value]=\"section.id\">{{section.sectionName}}\r\n </option>\r\n </select>\r\n <div class=\"down-arrow d-flex align-items-center justify-content-center\"><img\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/268410c1742286052940Down%202.png\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <label class=\"input-label-2\">Open in a new browser tab</label>\r\n <div class=\"form-check form-switch ml-auto\">\r\n <input class=\"form-check-input switch-btn cursor-pointer\" type=\"checkbox\" [(ngModel)]=\"link.newTab\"\r\n role=\"switch\">\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"link.linkType === RedirectionLink.External || link.linkType === RedirectionLink.Email || link.linkType === RedirectionLink.Phone\">\r\n <label class=\"mt-3 mb-2 input-label-1\">Select type</label>\r\n <div class=\"drop-down-container w-100 d-flex mb-2\">\r\n <select [(ngModel)]=\"link.linkType\">\r\n <option value=\"\" selected>Select the Type</option>\r\n <option *ngFor=\"let type of externalLinkType\" [value]=\"type.type\">{{type.type}}</option>\r\n </select>\r\n <div class=\"down-arrow d-flex align-items-center justify-content-center\"><img\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/268410c1742286052940Down%202.png\" alt=\"\">\r\n </div>\r\n </div>\r\n <label class=\"input-label mb-2\">{{link.linkType === RedirectionLink.External ? 'Website' : link.linkType ===\r\n RedirectionLink.Email ? 'Email Address' : 'Phone Number'}}</label>\r\n <input type=\"text\" class=\"input-text\" [(ngModel)]=\"link.redirectionUrl\"\r\n [placeholder]=\"link.linkType === RedirectionLink.External ? 'example : https://facebook.com': ''\">\r\n </div>\r\n\r\n\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngIf=\"data.showIcon\">\r\n <div class=\"icon-color px-3 mb-3 d-flex flex-column justify-content-center align-items-center\">\r\n <label class=\"input-label-1 mb-4 w-100\">Icon Color</label>\r\n <div [style.backgroundColor]=\"iconData.color\" class=\"custom-input\" (click)=\"colorInput.click()\"></div>\r\n <input type=\"color\" [(ngModel)]=\"iconData.color\" (ngModelChange)=\"changeIconColor()\" class=\"input-text d-none\"\r\n #colorInput />\r\n </div>\r\n\r\n <div class=\"background-on d-flex justify-content-between px-3 mb-2\">\r\n <label class=\"input-label-1\">Show Background</label>\r\n <div class=\"form-check form-switch ml-auto\">\r\n <input class=\"form-check-input switch-btn cursor-pointer\" type=\"checkbox\" [(ngModel)]=\"iconData.showBackground\"\r\n role=\"switch\">\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"tabs d-flex px-3 gap-3 mb-2\" *ngIf=\"iconData.showBackground\">\r\n <div class=\"tab px-3 py-2\" *ngFor=\"let tab of tabs\" (click)=\"iconData.backgroundType = tab\"\r\n [class.selectedTab]=\"iconData.backgroundType == tab\">\r\n {{tab}}\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"icon-background px-3 d-flex flex-column justify-content-center align-items-center\"\r\n *ngIf=\"iconData.showBackground\">\r\n <label class=\"input-label-1 mb-3 w-100\">Icon Background</label>\r\n <div [style.backgroundColor]=\"iconData?.backgroundColor\" class=\"custom-input mb-2\" (click)=\"colorInput1.click()\">\r\n </div>\r\n <input type=\"color\" [(ngModel)]=\"iconData.backgroundColor\" class=\"input-text d-none\" #colorInput1 />\r\n </div>\r\n\r\n <div class=\"icon-background px-3 d-flex flex-column justify-content-center align-items-center\"\r\n *ngIf=\"iconData.showBackground && iconData.backgroundType === 'Gradient'\">\r\n <label class=\"input-label-1 mb-3 w-100\">Icon Secondary Background</label>\r\n <div [style.backgroundColor]=\"iconData?.secondaryColor\" class=\"custom-input\" (click)=\"colorInput2.click()\"></div>\r\n <input type=\"color\" [(ngModel)]=\"iconData.secondaryColor\" class=\"input-text d-none\" #colorInput2 />\r\n </div>\r\n </ng-container>\r\n\r\n\r\n</section>", styles: ["*{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}:host{--grey-color: rgba(250, 250, 250, 1)}.custom-input{height:35px;width:100%;border-radius:2rem;box-shadow:0 1px 3px #3c404326,0 1px 2px #3c404326}.tab{border:1px solid rgba(44,44,44,.6);border-radius:12px}.selectedTab{background:#39393934;font-weight:700}.clr-red{color:red;font-size:12px;margin-bottom:10px}.heading{color:#000;font-size:17px;font-weight:600}.upload-text{background:var(--primary-bg-color);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-weight:500}.upload-image{border:3px dashed rgba(44,44,44,.6);display:flex;flex-direction:column;justify-content:center;align-items:center;padding:2rem;margin:10px 10px 22px;border-radius:20px;box-shadow:#0000000d 0 1px 2px}.upload-image img{margin-bottom:8px;height:40px}.mb-0{margin-bottom:0!important}.desc{color:#fafafa;font-size:15px}.input-field{font-size:14px;outline:none;border:unset;border-radius:5px;padding:10px;color:#090909e6;background:#fafafa}.horizontal-action{display:flex;justify-content:space-between;align-items:center}.horizontal-action label{width:25%;font-size:14px;font-weight:400!important}.main-section{display:flex;flex-direction:column}.image{display:flex;flex-direction:column;gap:5px;padding:0 10px}.slider{width:70%}.cp{cursor:pointer}.sec{padding:10px 10px 22px;position:relative}.sec img{width:100%;height:200px;border-radius:20px}.delete-image{background-color:#d92d20;width:30px;height:30px;border-radius:6px;display:flex;justify-content:center;align-items:center;position:absolute;top:20px;right:20px}.repalce-image{display:flex;align-items:center;background:#fff;padding:2px;border-radius:6px;position:absolute;bottom:30px;left:20px}.f-18{font-size:18px}.header-section{padding:10px;box-shadow:0 0 4px #00000040}.header-section .head-text{font-weight:600;font-size:15px;color:#000}.header-section mat-icon{color:#2d264b}.p-0-10{padding:0 10px}.sub-text{font-size:13px;font-weight:400;line-height:24px;color:#09090980}.w-75{width:75%}.groups{display:flex;justify-content:space-between;margin-top:25px}.groups div{font-size:15px;font-weight:600;color:#2c2c2c99;padding:6px 30px;cursor:pointer}.selectedType{position:relative;text-align:center;background:var(--primary-bg-color);background-clip:text;box-shadow:0 0 4px #00000040;border-radius:10px}.selectedType:before{content:\"\";position:absolute;inset:0;padding:1px;border-radius:10px;background:var(--primary-bg-color);mask:linear-gradient(white 0 0) content-box,linear-gradient(white 0 0);mask-composite:xor;mask-composite:exclude}.field-container{background:var(--grey-color);border-radius:13px;padding:10px}.drop-down-container{padding:10px;border-radius:8px;background:#fff;cursor:pointer}.drop-down-container select{width:90%;appearance:none;position:relative;outline:unset;border:unset;border-right:3px solid rgba(230,230,230,1);background:#fff;font-size:14px;padding:0 10px;border-radius:unset}.drop-down-container .down-arrow{width:10%;padding:0 6px}.input-label-1{font-size:16px;font-weight:600}.input-text{height:37px;width:100%;border:1px solid var(--grey-color);border-radius:5px;outline:none;font-size:14px;padding:10px 20px;font-weight:400;color:#090909e6}.mb-22{margin-bottom:22px}input[type=range]{-webkit-appearance:none;width:100%;height:8px;border-radius:20px;overflow:hidden;background:#fafafa}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;height:8px;width:10px;background:var(--primary-bg-color);box-shadow:-50rem 0 5rem 20rem #250d5e,-40rem 0 5rem 30rem #0bf,-30rem 0 2rem 25rem #250d5e,-25.5rem 0 0 25rem #0bf;border-radius:50%;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.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: i5.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSliderModule }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] }); }
226
226
  }
227
227
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageEditorComponent, decorators: [{
228
228
  type: Component,
229
- args: [{ selector: 'simpo-image-editor', standalone: true, imports: [CommonModule, FormsModule, MatIconModule, MatSliderModule, MatProgressSpinner], template: "<section class=\"main-section\">\r\n <div class=\"header-section d-flex justify-content-between align-items-center\">\r\n <div class=\"head-text\">Image Settings</div>\r\n <mat-icon class=\"d-flex align-items-center justify-content-center f-18 cp\"\r\n (click)=\"dialogRef.close()\">close</mat-icon>\r\n </div>\r\n <div>\r\n <!-- <p class=\"heading mb-0\">Image</p> -->\r\n <div class=\"upload-image cp\" *ngIf=\"!imageData.url && !iconData.url\" (click)=\"updateImage()\">\r\n <img loading=\"lazy\"\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/547500c1744698830343upload-one%20%281%29.png\"\r\n alt=\"\">\r\n <p class=\"upload-text mb-0\">Upload a file</p>\r\n <p class=\"upload-text mb-0\">or select an existing one</p>\r\n <span class=\"upload-text\">up to 32MB</span>\r\n </div>\r\n <div class=\"sec d-flex align-items-center\" *ngIf=\"imageData.url || iconData.url\">\r\n <ng-container *ngIf=\"!imgLoader\">\r\n <img [src]=\"imageData.url || iconData.url\" [alt]=\"imageData.altText ?? ''\"\r\n *ngIf=\"!imageData?.url?.includes('.mp4')\">\r\n <video [src]=\"imageData.url\" class=\"w-100 h-100\" *ngIf=\"imageData?.url?.includes('.mp4')\" muted loop></video>\r\n <div class=\"repalce-image cursor-pointer\" (click)=\"updateImage()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\"\r\n height=\"24\" class=\"icon w-4 h-4\" aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"\r\n d=\"m4 16 4.58579-4.5858c.78104-.781 2.04741-.781 2.82841 0L16 16m-2-2 1.5858-1.5858c.781-.781 2.0474-.781 2.8284 0L20 14m-6-6h.01M6 20h12c1.1046 0 2-.8954 2-2V6c0-1.10457-.8954-2-2-2H6c-1.10457 0-2 .89543-2 2v12c0 1.1046.89543 2 2 2Z\">\r\n </path>\r\n </svg>\r\n </div>\r\n\r\n <div class=\"delete-image cursor-pointer \" (click)=\"deleteImage()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"#ffffff\" viewBox=\"0 0 24 24\" width=\"24\"\r\n height=\"24\" class=\"icon h-4 w-4\" aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"\r\n d=\"m19 7-.8673 12.1425C18.0579 20.1891 17.187 21 16.1378 21H7.86224c-1.04928 0-1.92016-.8109-1.99492-1.8575L5 7m5 4v6m4-6v6m1-10V4c0-.55228-.4477-1-1-1h-4c-.55228 0-1 .44772-1 1v3M4 7h16\">\r\n </path>\r\n </svg>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"imgLoader\">\r\n <div class=\"upload_spinner d-flex w-100 h-100 justify-content-center align-items-center\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"data.showIcon\">\r\n <span class=\"p-0-10 clr-red\">Note : This Icon Feature Supports SVG and PNG in black and white format only.</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"!data.showIcon\">\r\n <div class=\"w-100 p-0-10 mb-22\" *ngIf=\"imageData.hasOwnProperty('altText')\">\r\n <p class=\"heading mb-2\">Alt text</p>\r\n <input type=\"text\" placeholder=\"Enter alt text\" class=\"input-field w-100\" [(ngModel)]=\"imageData.altText\">\r\n <div class=\"sub-text\">When the image fails to load, this text will be displayed.</div>\r\n </div>\r\n\r\n <div class=\"image mb-22\" *ngIf=\"imageData.hasOwnProperty('position')\">\r\n <p class=\"heading mb-1\">Image Position</p>\r\n <div class=\"horizontal-action\">\r\n <label>Horizontal</label>\r\n <div class=\"slider d-flex align-items-center justify-content-start cp\">\r\n <input [min]=\"min\" [max]=\"max\" step=\"5\" type=\"range\" [(ngModel)]=\"imageData.position.x\"\r\n (input)=\"horizontalPosition()\" class=\"w-75\">\r\n </div>\r\n </div>\r\n <div class=\"horizontal-action\" style=\"margin-top: 5px;\">\r\n <label>Vertical</label>\r\n <div class=\"slider d-flex align-items-center justify-content-start cp\">\r\n <input [min]=\"min\" [max]=\"max\" step=\"5\" type=\"range\" [(ngModel)]=\"imageData.position.y\"\r\n (input)=\"horizontalPosition()\" class=\"w-75\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"groups cp px-3\">\r\n <div *ngFor=\"let type of linkType\" [ngClass]=\"{'selectedType' : type.type === selectedType}\"\r\n (click)=\"changeType(type.type)\">{{type.type}}</div>\r\n </div>\r\n <div class=\"field-container mt-3 mx-3\">\r\n <div *ngIf=\"link.linkType === RedirectionLink.Page\">\r\n <label class=\"input-label-1 mt-3 mb-2\">Select Page</label>\r\n <div class=\"drop-down-container w-100 d-flex mb-2\">\r\n <select [(ngModel)]=\"link.pageId\" (change)=\"onPageChange($event)\">\r\n <option value=\"\" selected>Select from your existing pages</option>\r\n <option *ngFor=\"let page of templatePage\" [value]=\"page.id\" style=\"padding: 10px;\">\r\n {{page.pageName}}</option>\r\n </select>\r\n <div class=\"down-arrow d-flex align-items-center justify-content-center\"><img\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/268410c1742286052940Down%202.png\" alt=\"\">\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"pageName == 'Product List'\">\r\n <label class=\"input-label-1 mt-3 mb-2\">Select Collection</label>\r\n <div class=\"drop-down-container w-100 d-flex mb-2\">\r\n <select [(ngModel)]=\"collectionPath\" (ngModelChange)=\"addCollectionToPath()\">\r\n <option value=\"\" selected>Select from your existing pages</option>\r\n <option *ngFor=\"let coll of collectionList\" style=\"padding: 10px;\" [value]=\"coll.collectionName\">\r\n {{coll?.collectionName}}</option>\r\n </select>\r\n </div>\r\n <label class=\"input-label-1 mt-3 mb-2\">Select Category</label>\r\n <div class=\"drop-down-container w-100 d-flex mb-2\">\r\n <select [(ngModel)]=\"categoryPath\" (ngModelChange)=\"addCategoryToPath()\">\r\n <option value=\"\" selected>Select from your existing pages</option>\r\n <option *ngFor=\"let coll of categoryList\" style=\"padding: 10px;\" [value]=\"coll.categoryName\">\r\n {{coll?.categoryName}}</option>\r\n </select>\r\n </div>\r\n </ng-container>\r\n <!-- <div class=\"sub-text\">Select from your existing pages</div> -->\r\n </div>\r\n <div *ngIf=\"link.linkType === RedirectionLink.section\">\r\n <label class=\"mt-3 mb-2 input-label-1\">Section</label>\r\n <div class=\"drop-down-container w-100 d-flex mb-2\">\r\n <select [(ngModel)]=\"link.pageId\">\r\n <option value=\"\" selected>Select the Section</option>\r\n <option *ngFor=\"let section of templatePage[0]?.components\" [value]=\"section.id\">{{section.sectionName}}\r\n </option>\r\n </select>\r\n <div class=\"down-arrow d-flex align-items-center justify-content-center\"><img\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/268410c1742286052940Down%202.png\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <label class=\"input-label-2\">Open in a new browser tab</label>\r\n <div class=\"form-check form-switch ml-auto\">\r\n <input class=\"form-check-input switch-btn cursor-pointer\" type=\"checkbox\" [(ngModel)]=\"link.newTab\"\r\n role=\"switch\">\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"link.linkType === RedirectionLink.External || link.linkType === RedirectionLink.Email || link.linkType === RedirectionLink.Phone\">\r\n <label class=\"mt-3 mb-2 input-label-1\">Select type</label>\r\n <div class=\"drop-down-container w-100 d-flex mb-2\">\r\n <select [(ngModel)]=\"link.linkType\">\r\n <option value=\"\" selected>Select the Type</option>\r\n <option *ngFor=\"let type of externalLinkType\" [value]=\"type.type\">{{type.type}}</option>\r\n </select>\r\n <div class=\"down-arrow d-flex align-items-center justify-content-center\"><img\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/268410c1742286052940Down%202.png\" alt=\"\">\r\n </div>\r\n </div>\r\n <label class=\"input-label mb-2\">{{link.linkType === RedirectionLink.External ? 'Website' : link.linkType ===\r\n RedirectionLink.Email ? 'Email Address' : 'Phone Number'}}</label>\r\n <input type=\"text\" class=\"input-text\" [(ngModel)]=\"link.redirectionUrl\"\r\n [placeholder]=\"link.linkType === RedirectionLink.External ? 'example : https://facebook.com': ''\">\r\n </div>\r\n\r\n\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngIf=\"data.showIcon\">\r\n <div class=\"icon-color px-3 mb-3 d-flex flex-column justify-content-center align-items-center\">\r\n <label class=\"input-label-1 mb-4 w-100\">Icon Color</label>\r\n <div [style.backgroundColor]=\"iconData.color\" class=\"custom-input\" (click)=\"colorInput.click()\"></div>\r\n <input type=\"color\" [(ngModel)]=\"iconData.color\" (ngModelChange)=\"changeIconColor()\" class=\"input-text d-none\"\r\n #colorInput />\r\n </div>\r\n\r\n <div class=\"background-on d-flex justify-content-between px-3 mb-2\">\r\n <label class=\"input-label-1\">Show Background</label>\r\n <div class=\"form-check form-switch ml-auto\">\r\n <input class=\"form-check-input switch-btn cursor-pointer\" type=\"checkbox\" [(ngModel)]=\"iconData.showBackground\"\r\n role=\"switch\">\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"tabs d-flex px-3 gap-3 mb-2\" *ngIf=\"iconData.showBackground\">\r\n <div class=\"tab px-3 py-2\" *ngFor=\"let tab of tabs\" (click)=\"iconData.backgroundType = tab\"\r\n [class.selectedTab]=\"iconData.backgroundType == tab\">\r\n {{tab}}\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"icon-background px-3 d-flex flex-column justify-content-center align-items-center\"\r\n *ngIf=\"iconData.showBackground\">\r\n <label class=\"input-label-1 mb-3 w-100\">Icon Background</label>\r\n <div [style.backgroundColor]=\"iconData?.backgroundColor\" class=\"custom-input mb-2\" (click)=\"colorInput1.click()\">\r\n </div>\r\n <input type=\"color\" [(ngModel)]=\"iconData.backgroundColor\" class=\"input-text d-none\" #colorInput1 />\r\n </div>\r\n\r\n <div class=\"icon-background px-3 d-flex flex-column justify-content-center align-items-center\"\r\n *ngIf=\"iconData.showBackground && iconData.backgroundType === 'Gradient'\">\r\n <label class=\"input-label-1 mb-3 w-100\">Icon Secondary Background</label>\r\n <div [style.backgroundColor]=\"iconData?.secondaryColor\" class=\"custom-input\" (click)=\"colorInput2.click()\"></div>\r\n <input type=\"color\" [(ngModel)]=\"iconData.secondaryColor\" class=\"input-text d-none\" #colorInput2 />\r\n </div>\r\n </ng-container>\r\n\r\n\r\n</section>", styles: ["*{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}:host{--grey-color: rgba(250, 250, 250, 1)}.custom-input{height:35px;width:100%;border-radius:2rem;box-shadow:0 1px 3px #3c404326,0 1px 2px #3c404326}.tab{border:1px solid rgba(44,44,44,.6);border-radius:12px}.selectedTab{background:#39393934;font-weight:700}.clr-red{color:red;font-size:12px;margin-bottom:10px}.heading{color:#000;font-size:17px;font-weight:600}.upload-text{background:var(--primary-bg-color);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-weight:500}.upload-image{border:3px dashed rgba(44,44,44,.6);display:flex;flex-direction:column;justify-content:center;align-items:center;padding:2rem;margin:10px 10px 22px;border-radius:20px;box-shadow:#0000000d 0 1px 2px}.upload-image img{margin-bottom:8px;height:40px}.mb-0{margin-bottom:0!important}.desc{color:#fafafa;font-size:15px}.input-field{font-size:14px;outline:none;border:unset;border-radius:5px;padding:10px;color:#090909e6;background:#fafafa}.horizontal-action{display:flex;justify-content:space-between;align-items:center}.horizontal-action label{width:25%;font-size:14px;font-weight:400!important}.main-section{display:flex;flex-direction:column}.image{display:flex;flex-direction:column;gap:5px;padding:0 10px}.slider{width:70%}.cp{cursor:pointer}.sec{padding:10px 10px 22px;position:relative}.sec img{width:100%;height:200px;border-radius:20px}.delete-image{background-color:#d92d20;width:30px;height:30px;border-radius:6px;display:flex;justify-content:center;align-items:center;position:absolute;top:20px;right:20px}.repalce-image{display:flex;align-items:center;background:#fff;padding:2px;border-radius:6px;position:absolute;bottom:30px;left:20px}.f-18{font-size:18px}.header-section{padding:10px;box-shadow:0 0 4px #00000040}.header-section .head-text{font-weight:600;font-size:15px;color:#000}.header-section mat-icon{color:#2d264b}.p-0-10{padding:0 10px}.sub-text{font-size:13px;font-weight:400;line-height:24px;color:#09090980}.w-75{width:75%}.groups{display:flex;justify-content:space-between;margin-top:25px}.groups div{font-size:15px;font-weight:600;color:#2c2c2c99;padding:6px 30px;cursor:pointer}.selectedType{position:relative;text-align:center;background:var(--primary-bg-color);background-clip:text;box-shadow:0 0 4px #00000040;border-radius:10px}.selectedType:before{content:\"\";position:absolute;inset:0;padding:1px;border-radius:10px;background:var(--primary-bg-color);mask:linear-gradient(white 0 0) content-box,linear-gradient(white 0 0);mask-composite:xor;mask-composite:exclude}.field-container{background:var(--grey-color);border-radius:13px;padding:10px}.drop-down-container{padding:10px;border-radius:8px;background:#fff;cursor:pointer}.drop-down-container select{width:90%;appearance:none;position:relative;outline:unset;border:unset;border-right:3px solid rgba(230,230,230,1);background:#fff;font-size:14px;padding:0 10px;border-radius:unset}.drop-down-container .down-arrow{width:10%;padding:0 6px}.input-label-1{font-size:16px;font-weight:600}.input-text{height:37px;width:100%;border:1px solid var(--grey-color);border-radius:5px;outline:none;font-size:14px;padding:10px 20px;font-weight:400;color:#090909e6}.mb-22{margin-bottom:22px}input[type=range]{-webkit-appearance:none;width:100%;height:8px;border-radius:20px;overflow:hidden;background:#fafafa}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;height:8px;width:10px;background:var(--primary-bg-color);box-shadow:-50rem 0 5rem 20rem #250d5e,-40rem 0 5rem 30rem #0bf,-30rem 0 2rem 25rem #250d5e,-25.5rem 0 0 25rem #0bf;border-radius:50%;cursor:pointer}\n"] }]
229
+ args: [{ selector: 'simpo-image-editor', standalone: true, imports: [CommonModule, FormsModule, MatIconModule, MatSliderModule, MatProgressSpinner], template: "<section class=\"main-section\">\r\n <div class=\"header-section d-flex justify-content-between align-items-center\">\r\n <div class=\"head-text\">Image Settings</div>\r\n <mat-icon class=\"d-flex align-items-center justify-content-center f-18 cp\"\r\n (click)=\"dialogRef.close()\">close</mat-icon>\r\n </div>\r\n <div>\r\n <!-- <p class=\"heading mb-0\">Image</p> -->\r\n <div class=\"upload-image cp\" *ngIf=\"!imageData?.url && !iconData?.url\" (click)=\"updateImage()\">\r\n <img loading=\"lazy\"\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/547500c1744698830343upload-one%20%281%29.png\"\r\n alt=\"\">\r\n <p class=\"upload-text mb-0\">Upload a file</p>\r\n <p class=\"upload-text mb-0\">or select an existing one</p>\r\n <span class=\"upload-text\">up to 32MB</span>\r\n </div>\r\n <div class=\"sec d-flex align-items-center\" *ngIf=\"imageData?.url || iconData?.url\">\r\n <ng-container *ngIf=\"!imgLoader\">\r\n <img [src]=\"imageData?.url || iconData.url\" [alt]=\"imageData?.altText ?? ''\"\r\n *ngIf=\"!imageData?.url?.includes('.mp4')\">\r\n <video [src]=\"imageData?.url\" class=\"w-100 h-100\" *ngIf=\"imageData?.url?.includes('.mp4')\" muted loop></video>\r\n <div class=\"repalce-image cursor-pointer\" (click)=\"updateImage()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\"\r\n height=\"24\" class=\"icon w-4 h-4\" aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"\r\n d=\"m4 16 4.58579-4.5858c.78104-.781 2.04741-.781 2.82841 0L16 16m-2-2 1.5858-1.5858c.781-.781 2.0474-.781 2.8284 0L20 14m-6-6h.01M6 20h12c1.1046 0 2-.8954 2-2V6c0-1.10457-.8954-2-2-2H6c-1.10457 0-2 .89543-2 2v12c0 1.1046.89543 2 2 2Z\">\r\n </path>\r\n </svg>\r\n </div>\r\n\r\n <div class=\"delete-image cursor-pointer \" (click)=\"deleteImage()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"#ffffff\" viewBox=\"0 0 24 24\" width=\"24\"\r\n height=\"24\" class=\"icon h-4 w-4\" aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"\r\n d=\"m19 7-.8673 12.1425C18.0579 20.1891 17.187 21 16.1378 21H7.86224c-1.04928 0-1.92016-.8109-1.99492-1.8575L5 7m5 4v6m4-6v6m1-10V4c0-.55228-.4477-1-1-1h-4c-.55228 0-1 .44772-1 1v3M4 7h16\">\r\n </path>\r\n </svg>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"imgLoader\">\r\n <div class=\"upload_spinner d-flex w-100 h-100 justify-content-center align-items-center\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"data.showIcon\">\r\n <span class=\"p-0-10 clr-red\">Note : This Icon Feature Supports SVG and PNG in black and white format only.</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"!data.showIcon\">\r\n <div class=\"w-100 p-0-10 mb-22\" *ngIf=\"imageData?.hasOwnProperty('altText')\">\r\n <p class=\"heading mb-2\">Alt text</p>\r\n <input type=\"text\" placeholder=\"Enter alt text\" class=\"input-field w-100\" [(ngModel)]=\"imageData.altText\">\r\n <div class=\"sub-text\">When the image fails to load, this text will be displayed.</div>\r\n </div>\r\n\r\n <div class=\"image mb-22\" *ngIf=\"imageData?.hasOwnProperty('position')\">\r\n <p class=\"heading mb-1\">Image Position</p>\r\n <div class=\"horizontal-action\">\r\n <label>Horizontal</label>\r\n <div class=\"slider d-flex align-items-center justify-content-start cp\">\r\n <input [min]=\"min\" [max]=\"max\" step=\"5\" type=\"range\" [(ngModel)]=\"imageData.position.x\"\r\n (input)=\"horizontalPosition()\" class=\"w-75\">\r\n </div>\r\n </div>\r\n <div class=\"horizontal-action\" style=\"margin-top: 5px;\">\r\n <label>Vertical</label>\r\n <div class=\"slider d-flex align-items-center justify-content-start cp\">\r\n <input [min]=\"min\" [max]=\"max\" step=\"5\" type=\"range\" [(ngModel)]=\"imageData.position.y\"\r\n (input)=\"horizontalPosition()\" class=\"w-75\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"groups cp px-3\">\r\n <div *ngFor=\"let type of linkType\" [ngClass]=\"{'selectedType' : type.type === selectedType}\"\r\n (click)=\"changeType(type.type)\">{{type.type}}</div>\r\n </div>\r\n <div class=\"field-container mt-3 mx-3\">\r\n <div *ngIf=\"link.linkType === RedirectionLink.Page\">\r\n <label class=\"input-label-1 mt-3 mb-2\">Select Page</label>\r\n <div class=\"drop-down-container w-100 d-flex mb-2\">\r\n <select [(ngModel)]=\"link.pageId\" (change)=\"onPageChange($event)\">\r\n <option value=\"\" selected>Select from your existing pages</option>\r\n <option *ngFor=\"let page of templatePage\" [value]=\"page.id\" style=\"padding: 10px;\">\r\n {{page.pageName}}</option>\r\n </select>\r\n <div class=\"down-arrow d-flex align-items-center justify-content-center\"><img\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/268410c1742286052940Down%202.png\" alt=\"\">\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"pageName == 'Product List'\">\r\n <label class=\"input-label-1 mt-3 mb-2\">Select Collection</label>\r\n <div class=\"drop-down-container w-100 d-flex mb-2\">\r\n <select [(ngModel)]=\"collectionPath\" (ngModelChange)=\"addCollectionToPath()\">\r\n <option value=\"\" selected>Select from your existing pages</option>\r\n <option *ngFor=\"let coll of collectionList\" style=\"padding: 10px;\" [value]=\"coll.collectionName\">\r\n {{coll?.collectionName}}</option>\r\n </select>\r\n </div>\r\n <label class=\"input-label-1 mt-3 mb-2\">Select Category</label>\r\n <div class=\"drop-down-container w-100 d-flex mb-2\">\r\n <select [(ngModel)]=\"categoryPath\" (ngModelChange)=\"addCategoryToPath()\">\r\n <option value=\"\" selected>Select from your existing pages</option>\r\n <option *ngFor=\"let coll of categoryList\" style=\"padding: 10px;\" [value]=\"coll.categoryName\">\r\n {{coll?.categoryName}}</option>\r\n </select>\r\n </div>\r\n </ng-container>\r\n <!-- <div class=\"sub-text\">Select from your existing pages</div> -->\r\n </div>\r\n <div *ngIf=\"link.linkType === RedirectionLink.section\">\r\n <label class=\"mt-3 mb-2 input-label-1\">Section</label>\r\n <div class=\"drop-down-container w-100 d-flex mb-2\">\r\n <select [(ngModel)]=\"link.pageId\">\r\n <option value=\"\" selected>Select the Section</option>\r\n <option *ngFor=\"let section of templatePage[0]?.components\" [value]=\"section.id\">{{section.sectionName}}\r\n </option>\r\n </select>\r\n <div class=\"down-arrow d-flex align-items-center justify-content-center\"><img\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/268410c1742286052940Down%202.png\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <label class=\"input-label-2\">Open in a new browser tab</label>\r\n <div class=\"form-check form-switch ml-auto\">\r\n <input class=\"form-check-input switch-btn cursor-pointer\" type=\"checkbox\" [(ngModel)]=\"link.newTab\"\r\n role=\"switch\">\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"link.linkType === RedirectionLink.External || link.linkType === RedirectionLink.Email || link.linkType === RedirectionLink.Phone\">\r\n <label class=\"mt-3 mb-2 input-label-1\">Select type</label>\r\n <div class=\"drop-down-container w-100 d-flex mb-2\">\r\n <select [(ngModel)]=\"link.linkType\">\r\n <option value=\"\" selected>Select the Type</option>\r\n <option *ngFor=\"let type of externalLinkType\" [value]=\"type.type\">{{type.type}}</option>\r\n </select>\r\n <div class=\"down-arrow d-flex align-items-center justify-content-center\"><img\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/268410c1742286052940Down%202.png\" alt=\"\">\r\n </div>\r\n </div>\r\n <label class=\"input-label mb-2\">{{link.linkType === RedirectionLink.External ? 'Website' : link.linkType ===\r\n RedirectionLink.Email ? 'Email Address' : 'Phone Number'}}</label>\r\n <input type=\"text\" class=\"input-text\" [(ngModel)]=\"link.redirectionUrl\"\r\n [placeholder]=\"link.linkType === RedirectionLink.External ? 'example : https://facebook.com': ''\">\r\n </div>\r\n\r\n\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngIf=\"data.showIcon\">\r\n <div class=\"icon-color px-3 mb-3 d-flex flex-column justify-content-center align-items-center\">\r\n <label class=\"input-label-1 mb-4 w-100\">Icon Color</label>\r\n <div [style.backgroundColor]=\"iconData.color\" class=\"custom-input\" (click)=\"colorInput.click()\"></div>\r\n <input type=\"color\" [(ngModel)]=\"iconData.color\" (ngModelChange)=\"changeIconColor()\" class=\"input-text d-none\"\r\n #colorInput />\r\n </div>\r\n\r\n <div class=\"background-on d-flex justify-content-between px-3 mb-2\">\r\n <label class=\"input-label-1\">Show Background</label>\r\n <div class=\"form-check form-switch ml-auto\">\r\n <input class=\"form-check-input switch-btn cursor-pointer\" type=\"checkbox\" [(ngModel)]=\"iconData.showBackground\"\r\n role=\"switch\">\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"tabs d-flex px-3 gap-3 mb-2\" *ngIf=\"iconData.showBackground\">\r\n <div class=\"tab px-3 py-2\" *ngFor=\"let tab of tabs\" (click)=\"iconData.backgroundType = tab\"\r\n [class.selectedTab]=\"iconData.backgroundType == tab\">\r\n {{tab}}\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"icon-background px-3 d-flex flex-column justify-content-center align-items-center\"\r\n *ngIf=\"iconData.showBackground\">\r\n <label class=\"input-label-1 mb-3 w-100\">Icon Background</label>\r\n <div [style.backgroundColor]=\"iconData?.backgroundColor\" class=\"custom-input mb-2\" (click)=\"colorInput1.click()\">\r\n </div>\r\n <input type=\"color\" [(ngModel)]=\"iconData.backgroundColor\" class=\"input-text d-none\" #colorInput1 />\r\n </div>\r\n\r\n <div class=\"icon-background px-3 d-flex flex-column justify-content-center align-items-center\"\r\n *ngIf=\"iconData.showBackground && iconData.backgroundType === 'Gradient'\">\r\n <label class=\"input-label-1 mb-3 w-100\">Icon Secondary Background</label>\r\n <div [style.backgroundColor]=\"iconData?.secondaryColor\" class=\"custom-input\" (click)=\"colorInput2.click()\"></div>\r\n <input type=\"color\" [(ngModel)]=\"iconData.secondaryColor\" class=\"input-text d-none\" #colorInput2 />\r\n </div>\r\n </ng-container>\r\n\r\n\r\n</section>", styles: ["*{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}:host{--grey-color: rgba(250, 250, 250, 1)}.custom-input{height:35px;width:100%;border-radius:2rem;box-shadow:0 1px 3px #3c404326,0 1px 2px #3c404326}.tab{border:1px solid rgba(44,44,44,.6);border-radius:12px}.selectedTab{background:#39393934;font-weight:700}.clr-red{color:red;font-size:12px;margin-bottom:10px}.heading{color:#000;font-size:17px;font-weight:600}.upload-text{background:var(--primary-bg-color);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-weight:500}.upload-image{border:3px dashed rgba(44,44,44,.6);display:flex;flex-direction:column;justify-content:center;align-items:center;padding:2rem;margin:10px 10px 22px;border-radius:20px;box-shadow:#0000000d 0 1px 2px}.upload-image img{margin-bottom:8px;height:40px}.mb-0{margin-bottom:0!important}.desc{color:#fafafa;font-size:15px}.input-field{font-size:14px;outline:none;border:unset;border-radius:5px;padding:10px;color:#090909e6;background:#fafafa}.horizontal-action{display:flex;justify-content:space-between;align-items:center}.horizontal-action label{width:25%;font-size:14px;font-weight:400!important}.main-section{display:flex;flex-direction:column}.image{display:flex;flex-direction:column;gap:5px;padding:0 10px}.slider{width:70%}.cp{cursor:pointer}.sec{padding:10px 10px 22px;position:relative}.sec img{width:100%;height:200px;border-radius:20px}.delete-image{background-color:#d92d20;width:30px;height:30px;border-radius:6px;display:flex;justify-content:center;align-items:center;position:absolute;top:20px;right:20px}.repalce-image{display:flex;align-items:center;background:#fff;padding:2px;border-radius:6px;position:absolute;bottom:30px;left:20px}.f-18{font-size:18px}.header-section{padding:10px;box-shadow:0 0 4px #00000040}.header-section .head-text{font-weight:600;font-size:15px;color:#000}.header-section mat-icon{color:#2d264b}.p-0-10{padding:0 10px}.sub-text{font-size:13px;font-weight:400;line-height:24px;color:#09090980}.w-75{width:75%}.groups{display:flex;justify-content:space-between;margin-top:25px}.groups div{font-size:15px;font-weight:600;color:#2c2c2c99;padding:6px 30px;cursor:pointer}.selectedType{position:relative;text-align:center;background:var(--primary-bg-color);background-clip:text;box-shadow:0 0 4px #00000040;border-radius:10px}.selectedType:before{content:\"\";position:absolute;inset:0;padding:1px;border-radius:10px;background:var(--primary-bg-color);mask:linear-gradient(white 0 0) content-box,linear-gradient(white 0 0);mask-composite:xor;mask-composite:exclude}.field-container{background:var(--grey-color);border-radius:13px;padding:10px}.drop-down-container{padding:10px;border-radius:8px;background:#fff;cursor:pointer}.drop-down-container select{width:90%;appearance:none;position:relative;outline:unset;border:unset;border-right:3px solid rgba(230,230,230,1);background:#fff;font-size:14px;padding:0 10px;border-radius:unset}.drop-down-container .down-arrow{width:10%;padding:0 6px}.input-label-1{font-size:16px;font-weight:600}.input-text{height:37px;width:100%;border:1px solid var(--grey-color);border-radius:5px;outline:none;font-size:14px;padding:10px 20px;font-weight:400;color:#090909e6}.mb-22{margin-bottom:22px}input[type=range]{-webkit-appearance:none;width:100%;height:8px;border-radius:20px;overflow:hidden;background:#fafafa}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;height:8px;width:10px;background:var(--primary-bg-color);box-shadow:-50rem 0 5rem 20rem #250d5e,-40rem 0 5rem 30rem #0bf,-30rem 0 2rem 25rem #250d5e,-25.5rem 0 0 25rem #0bf;border-radius:50%;cursor:pointer}\n"] }]
230
230
  }], ctorParameters: () => [{ type: i1.EventsService }, { type: i2.ElementServiceService }, { type: i3.MatDialogRef }, { type: undefined, decorators: [{
231
231
  type: Inject,
232
232
  args: [MAT_DIALOG_DATA]
233
233
  }] }, { type: i3.MatDialog }] });
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWxlbWVudHMvaW1hZ2UtZWRpdG9yL2ltYWdlLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL2ltYWdlLWVkaXRvci9pbWFnZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUEyQixNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHM0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFHcEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7O0FBVXhFLE1BQU0sT0FBTyxvQkFBb0I7SUFFL0IsWUFDVSxhQUE0QixFQUM1QixhQUFvQyxFQUNyQyxTQUE2QyxFQUNwQixJQUFTLEVBQ2pDLFNBQW9CO1FBSnBCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGtCQUFhLEdBQWIsYUFBYSxDQUF1QjtRQUNyQyxjQUFTLEdBQVQsU0FBUyxDQUFvQztRQUNwQixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFLOUIsY0FBUyxHQUFVO1lBQ2pCLEVBQUUsRUFBRSxFQUFFO1lBQ04sR0FBRyxFQUFFLEVBQUU7WUFDUCxRQUFRLEVBQUUsRUFBRTtZQUNaLE9BQU8sRUFBRSxFQUFFO1lBQ1gsUUFBUSxFQUFFO2dCQUNSLENBQUMsRUFBRSxDQUFDO2dCQUNKLENBQUMsRUFBRSxDQUFDO2FBQ0w7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsUUFBUSxFQUFFLG1CQUFtQixDQUFDLElBQUk7Z0JBQ2xDLGNBQWMsRUFBRSxFQUFFO2dCQUNsQixNQUFNLEVBQUUsRUFBRTtnQkFDVixNQUFNLEVBQUUsS0FBSzthQUNkO1NBQ0YsQ0FBQztRQUNGLGFBQVEsR0FBUztZQUNmLEdBQUcsRUFBRSxFQUFFO1lBQ1AsS0FBSyxFQUFFLEVBQUU7WUFDVCxjQUFjLEVBQUUsS0FBSztZQUNyQixlQUFlLEVBQUUsRUFBRTtTQUNwQixDQUFBO1FBRU8sYUFBUSxHQUF1QixJQUFJLENBQUM7UUFDNUMsU0FBSSxHQUFXO1lBQ2IsUUFBUSxFQUFFLG1CQUFtQixDQUFDLElBQUk7WUFDbEMsS0FBSyxFQUFFLEVBQUU7WUFDVCxjQUFjLEVBQUUsRUFBRTtZQUNsQixNQUFNLEVBQUUsRUFBRTtZQUNWLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQztRQVVGLG9CQUFlLEdBQUcsbUJBQW1CLENBQUE7UUFDckMsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixRQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ1YsUUFBRyxHQUFHLENBQUMsQ0FBQztRQUNSLFNBQUksR0FBdUIsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFHakQsY0FBUyxHQUFZLEtBQUssQ0FBQztRQXNDM0IsYUFBUSxHQUFVO1lBQ2hCO2dCQUNFLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxJQUFJO2FBQy9CO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLG1CQUFtQixDQUFDLE9BQU87YUFDbEM7WUFDRDtnQkFDRSxJQUFJLEVBQUUsbUJBQW1CLENBQUMsUUFBUTthQUNuQztTQUNGLENBQUE7UUFDRCxpQkFBWSxHQUF3QixtQkFBbUIsQ0FBQyxJQUFJLENBQUM7UUFLN0QsaUJBQVksR0FBVSxFQUFFLENBQUM7UUFNekIscUJBQWdCLEdBQWdCO1lBQzlCO2dCQUNFLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxRQUFRO2FBQ25DO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLG1CQUFtQixDQUFDLEtBQUs7YUFDaEM7WUFDRDtnQkFDRSxJQUFJLEVBQUUsbUJBQW1CLENBQUMsS0FBSzthQUNoQztTQUNGLENBQUE7UUFDRCxtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUN6QixpQkFBWSxHQUFRLEVBQUUsQ0FBQztRQUN2QixtQkFBYyxHQUFRLEVBQUUsQ0FBQTtRQWlCeEIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQWdCdEIsaUJBQVksR0FBUSxFQUFFLENBQUM7SUE1SnZCLENBQUM7SUFrQ0QsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3JDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFTRCxLQUFLLENBQUMsV0FBVztRQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtRQUNwSSxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDMUMsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDUixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7d0JBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO3dCQUN6QyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUM7NEJBQ3BHLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQzt3QkFDdEcsQ0FBQztvQkFDSCxDQUFDO3lCQUNJLENBQUM7d0JBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7b0JBQzVDLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQTtZQUN4QixDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDbEksQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLENBQUM7YUFDSSxDQUFDO1lBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBYUQsVUFBVSxDQUFDLElBQXlCO1FBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDekMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFlRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLENBQUMsU0FBUyxDQUFDO1lBQy9DLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsQ0FBQztZQUM1QixDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUMsU0FBUyxDQUFDO1lBQzlDLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQztZQUMxQixDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUlELG1CQUFtQjtRQUNqQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5RSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUM1RixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUN6RixDQUFDO1FBRUgsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDOUYsQ0FBQzthQUNJLENBQUM7WUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUM5RixDQUFDO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ3ZGLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzlGLENBQUM7UUFDSCxDQUFDO2FBQ0ksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUMzRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN6RixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3pGLENBQUM7SUFDSCxDQUFDO0lBQ0QsWUFBWSxDQUFDLEtBQVU7UUFDckIsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDMUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLGNBQWMsQ0FBQyxDQUFDO1FBQ2hGLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQztZQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFDdEMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUI7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssbUJBQW1CLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM3SyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDdkQsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLGNBQWMsQ0FBQztZQUMvQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkQsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3BELE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDO1lBQy9CLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0MsQ0FBQztJQUNILENBQUM7K0dBek5VLG9CQUFvQixnSEFNckIsZUFBZTttR0FOZCxvQkFBb0IsOEVDdEJqQyw4dldBc01VLG9vSERwTEUsWUFBWSw2VkFBRSxXQUFXLHcxQ0FBRSxhQUFhLG1MQUFFLGVBQWUsK0JBQUUsa0JBQWtCOzs0RkFJNUUsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLENBQUM7OzBCQVVyRixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdFNsaWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlcic7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEJ1dHRvbiwgSWNvbiwgSW1hZ2UgfSBmcm9tICcuLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xyXG5pbXBvcnQgeyBNZWRpYVNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vbWVkaWEtc2VsZWN0b3IvbWVkaWEtc2VsZWN0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVsZW1lbnRTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uL2VkaXRvci1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZWRpcmVjdGlvbkxpbmtUeXBlIH0gZnJvbSAnLi4vLi4vc3R5bGVzL2luZGV4JztcclxuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXJcIjtcclxuaW1wb3J0IHsgQkFDS0dST1VORF9UWVBFIH0gZnJvbSAnQHNpbXBvLXVpL3N0eWxlcy90eXBlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLWltYWdlLWVkaXRvcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0U2xpZGVyTW9kdWxlLCBNYXRQcm9ncmVzc1NwaW5uZXJdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9pbWFnZS1lZGl0b3IuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEltYWdlRWRpdG9yQ29tcG9uZW50IHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGV2ZW50c1NlcnZpY2U6IEV2ZW50c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVkaXRvclNlcnZpY2U6IEVsZW1lbnRTZXJ2aWNlU2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxJbWFnZUVkaXRvckNvbXBvbmVudD4sXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcclxuICAgIHByaXZhdGUgbWF0RGlhbG9nOiBNYXREaWFsb2csXHJcbiAgKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgaW1hZ2VEYXRhOiBJbWFnZSA9IHtcclxuICAgIGlkOiAnJyxcclxuICAgIHVybDogJycsXHJcbiAgICBibHVyaGFzaDogJycsXHJcbiAgICBhbHRUZXh0OiAnJyxcclxuICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgIHg6IDAsXHJcbiAgICAgIHk6IDBcclxuICAgIH0sXHJcbiAgICBjb250ZW50OiB7XHJcbiAgICAgIGxhYmVsOiAnJyxcclxuICAgICAgbGlua1R5cGU6IFJlZGlyZWN0aW9uTGlua1R5cGUuUGFnZSxcclxuICAgICAgcmVkaXJlY3Rpb25Vcmw6ICcnLFxyXG4gICAgICBwYWdlSWQ6ICcnLFxyXG4gICAgICBuZXdUYWI6IGZhbHNlXHJcbiAgICB9XHJcbiAgfTtcclxuICBpY29uRGF0YTogSWNvbiA9IHtcclxuICAgIHVybDogJycsXHJcbiAgICBjb2xvcjogJycsXHJcbiAgICBzaG93QmFja2dyb3VuZDogZmFsc2UsXHJcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcnXHJcbiAgfVxyXG4gIHNlY3Rpb25JZCE6IHN0cmluZztcclxuICBwcml2YXRlIGJhY2tEcm9wOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG4gIGxpbms6IEJ1dHRvbiA9IHtcclxuICAgIGxpbmtUeXBlOiBSZWRpcmVjdGlvbkxpbmtUeXBlLlBhZ2UsXHJcbiAgICBsYWJlbDogJycsXHJcbiAgICByZWRpcmVjdGlvblVybDogJycsXHJcbiAgICBwYWdlSWQ6ICcnLFxyXG4gICAgbmV3VGFiOiBmYWxzZVxyXG4gIH07XHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNlY3Rpb25JZCA9IHRoaXMuZGF0YS5zZWN0aW9uSWQ7XHJcbiAgICBpZiAodGhpcy5kYXRhPy5zaG93SWNvbikge1xyXG4gICAgICB0aGlzLmljb25EYXRhID0gdGhpcy5kYXRhLmljb25EYXRhO1xyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmljb25EYXRhKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW1hZ2VIZWxwZXJGdW5jdGlvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuICBSZWRpcmVjdGlvbkxpbmsgPSBSZWRpcmVjdGlvbkxpbmtUeXBlXHJcbiAgYWRkTGluazogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG1heCA9IDEwMDtcclxuICBtaW4gPSAwO1xyXG4gIHRhYnMgIDogQkFDS0dST1VORF9UWVBFW109IFsnU29saWQnLCAnR3JhZGllbnQnXTtcclxuXHJcblxyXG4gIGltZ0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFzeW5jIHVwZGF0ZUltYWdlKCkge1xyXG4gICAgdGhpcy5pbWdMb2FkZXIgPSB0cnVlO1xyXG4gICAgY29uc3QgbWVkaWFTZWxlY3RvckRpYWxvZyA9IHRoaXMubWF0RGlhbG9nLm9wZW4oTWVkaWFTZWxlY3RvckNvbXBvbmVudCwgeyBkYXRhOiB7IG11bHRpcGxlOiBmYWxzZSB9LCBwYW5lbENsYXNzOiBcIm1lZGlhLXNlbGVjdG9yXCIgfSlcclxuICAgIG1lZGlhU2VsZWN0b3JEaWFsb2cuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGF0YT8uc2hvd0ljb24pIHtcclxuICAgICAgICAgICAgdGhpcy5pY29uRGF0YS51cmwgPSByZXNbMF0uYXNzZXRzWzBdLnVybDtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaWNvbkRhdGEudXJsICYmICh0aGlzLmljb25EYXRhLnVybC5pbmNsdWRlcygnLnBuZycpIHx8IHRoaXMuaWNvbkRhdGEudXJsLmluY2x1ZGVzKCcuc3ZnJykpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ldmVudHNTZXJ2aWNlLmljb25DaGFuZ2VkLmVtaXQoeyBpZDogdGhpcy5zZWN0aW9uSWQgKyB0aGlzLmljb25EYXRhLmlkLCBpY29uOiB0aGlzLmljb25EYXRhIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pbWFnZURhdGEudXJsID0gcmVzWzBdLmFzc2V0c1swXS51cmw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaW1nTG9hZGVyID0gZmFsc2VcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNoYW5nZUljb25Db2xvcigpIHtcclxuICAgIHRoaXMuZXZlbnRzU2VydmljZS5pY29uQ2hhbmdlZC5lbWl0KHsgaWQ6IHRoaXMuc2VjdGlvbklkICsgdGhpcy5pY29uRGF0YS5pZCwgaWNvbjogdGhpcy5pY29uRGF0YSB9KTtcclxuICB9XHJcblxyXG4gIGhvcml6b250YWxQb3NpdGlvbigpIHtcclxuICAgIHRoaXMuZXZlbnRzU2VydmljZS5vYmplY3RQb3NpdGlvbkNoYW5nZUNoZWNrLmVtaXQoeyBpZDogdGhpcy5zZWN0aW9uSWQgKyB0aGlzLmltYWdlRGF0YS5pZCwgcG9zaXRpb246IHRoaXMuaW1hZ2VEYXRhLnBvc2l0aW9uIH0pXHJcbiAgfVxyXG5cclxuICBkZWxldGVJbWFnZSgpIHtcclxuICAgIGlmICh0aGlzLmRhdGE/LnNob3dJY29uKSB7XHJcbiAgICAgIHRoaXMuaWNvbkRhdGEudXJsID0gJyc7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5pbWFnZURhdGEudXJsID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGxpbmtUeXBlOiBhbnlbXSA9IFtcclxuICAgIHtcclxuICAgICAgdHlwZTogUmVkaXJlY3Rpb25MaW5rVHlwZS5QYWdlXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICB0eXBlOiBSZWRpcmVjdGlvbkxpbmtUeXBlLnNlY3Rpb25cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHR5cGU6IFJlZGlyZWN0aW9uTGlua1R5cGUuRXh0ZXJuYWxcclxuICAgIH1cclxuICBdXHJcbiAgc2VsZWN0ZWRUeXBlOiBSZWRpcmVjdGlvbkxpbmtUeXBlID0gUmVkaXJlY3Rpb25MaW5rVHlwZS5QYWdlO1xyXG4gIGNoYW5nZVR5cGUodHlwZTogUmVkaXJlY3Rpb25MaW5rVHlwZSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFR5cGUgPSB0eXBlO1xyXG4gICAgdGhpcy5saW5rLmxpbmtUeXBlID0gdGhpcy5zZWxlY3RlZFR5cGU7XHJcbiAgfVxyXG4gIHRlbXBsYXRlUGFnZTogYW55W10gPSBbXTtcclxuICBnZXRUZW1wbGF0ZVBhZ2UoKSB7XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuZ2V0VGVtcGxhdGUoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMudGVtcGxhdGVQYWdlID0gcmVzLmRhdGE7XHJcbiAgICB9KVxyXG4gIH1cclxuICBleHRlcm5hbExpbmtUeXBlOiBBcnJheTx0eXBlPiA9IFtcclxuICAgIHtcclxuICAgICAgdHlwZTogUmVkaXJlY3Rpb25MaW5rVHlwZS5FeHRlcm5hbFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgdHlwZTogUmVkaXJlY3Rpb25MaW5rVHlwZS5FbWFpbFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgdHlwZTogUmVkaXJlY3Rpb25MaW5rVHlwZS5QaG9uZVxyXG4gICAgfVxyXG4gIF1cclxuICBjb2xsZWN0aW9uTGlzdDogYW55ID0gW107XHJcbiAgY2F0ZWdvcnlMaXN0OiBhbnkgPSBbXTtcclxuICBjb2xsZWN0aW9uUGF0aDogYW55ID0gXCJcIlxyXG4gIGdldENvbGxlY3Rpb25MaXN0KCkge1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmdldEFsbENvbGxlY3Rpb25zKCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uTGlzdCA9IHJlcztcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgZ2V0Q2F0ZWdvcnlMaXN0KCkge1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmdldEFsbENhdGVnb3JpZXMoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdCA9IHJlcztcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuICBwYWdlTmFtZTogc3RyaW5nID0gXCJcIjtcclxuICBhZGRDb2xsZWN0aW9uVG9QYXRoKCkge1xyXG4gICAgaWYgKHRoaXMubGluay5yZWRpcmVjdGlvblVybC5pbmNsdWRlcyhcIj9jb2xsZWN0aW9ucz1cIikpIHtcclxuICAgICAgdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsID0gdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsLnNwbGl0KFwiP2NvbGxlY3Rpb25zPVwiKVswXTtcclxuICAgICAgdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsID0gdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsICsgXCI/Y29sbGVjdGlvbnM9XCIgKyB0aGlzLmNvbGxlY3Rpb25QYXRoO1xyXG4gICAgICBpZiAodGhpcy5jYXRlZ29yeVBhdGgubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMubGluay5yZWRpcmVjdGlvblVybCA9IHRoaXMubGluay5yZWRpcmVjdGlvblVybCArIFwiJmNhdGVnb3J5PVwiICsgdGhpcy5jYXRlZ29yeVBhdGg7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubGluay5yZWRpcmVjdGlvblVybC5pbmNsdWRlcyhcImNhdGVnb3J5PVwiKSkge1xyXG4gICAgICB0aGlzLmxpbmsucmVkaXJlY3Rpb25VcmwgPSB0aGlzLmxpbmsucmVkaXJlY3Rpb25VcmwgKyBcIiZjb2xsZWN0aW9ucz1cIiArIHRoaXMuY29sbGVjdGlvblBhdGg7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsID0gdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsICsgXCI/Y29sbGVjdGlvbnM9XCIgKyB0aGlzLmNvbGxlY3Rpb25QYXRoO1xyXG4gICAgfVxyXG4gIH1cclxuICBjYXRlZ29yeVBhdGg6IGFueSA9IFwiXCI7XHJcbiAgYWRkQ2F0ZWdvcnlUb1BhdGgoKSB7XHJcbiAgICBpZiAodGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsLmluY2x1ZGVzKFwiP2NhdGVnb3J5PVwiKSkge1xyXG4gICAgICB0aGlzLmxpbmsucmVkaXJlY3Rpb25VcmwgPSB0aGlzLmxpbmsucmVkaXJlY3Rpb25Vcmwuc3BsaXQoXCI/Y2F0ZWdvcnk9XCIpWzBdO1xyXG4gICAgICB0aGlzLmxpbmsucmVkaXJlY3Rpb25VcmwgPSB0aGlzLmxpbmsucmVkaXJlY3Rpb25VcmwgKyBcIj9jYXRlZ29yeT1cIiArIHRoaXMuY2F0ZWdvcnlQYXRoO1xyXG4gICAgICBpZiAodGhpcy5jb2xsZWN0aW9uUGF0aC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsID0gdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsICsgXCImY29sbGVjdGlvbnM9XCIgKyB0aGlzLmNvbGxlY3Rpb25QYXRoO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmxpbmsucmVkaXJlY3Rpb25VcmwuaW5jbHVkZXMoXCJjb2xsZWN0aW9ucz1cIikpIHtcclxuICAgICAgdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsID0gdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsICsgXCImY2F0ZWdvcnk9XCIgKyB0aGlzLmNhdGVnb3J5UGF0aDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubGluay5yZWRpcmVjdGlvblVybCA9IHRoaXMubGluay5yZWRpcmVjdGlvblVybCArIFwiP2NhdGVnb3J5PVwiICsgdGhpcy5jYXRlZ29yeVBhdGg7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uUGFnZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZFBhZ2VJZCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgIGNvbnN0IHNlbGVjdGVkUGFnZSA9IHRoaXMudGVtcGxhdGVQYWdlLmZpbmQocGFnZSA9PiBwYWdlLmlkID09PSBzZWxlY3RlZFBhZ2VJZCk7XHJcbiAgICBpZiAoc2VsZWN0ZWRQYWdlKSB7XHJcbiAgICAgIHRoaXMubGluay5yZWRpcmVjdGlvblVybCA9IHNlbGVjdGVkUGFnZS5wYXRoO1xyXG4gICAgICB0aGlzLnBhZ2VOYW1lID0gc2VsZWN0ZWRQYWdlLnBhZ2VOYW1lO1xyXG4gICAgICBpZiAodGhpcy5wYWdlTmFtZSA9PSAnUHJvZHVjdCBMaXN0Jykge1xyXG4gICAgICAgIHRoaXMuZ2V0Q29sbGVjdGlvbkxpc3QoKTtcclxuICAgICAgICB0aGlzLmdldENhdGVnb3J5TGlzdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBpbWFnZUhlbHBlckZ1bmN0aW9uKCkge1xyXG4gICAgdGhpcy5pbWFnZURhdGEgPSB0aGlzLmRhdGEuaW1hZ2VEYXRhO1xyXG4gICAgdGhpcy5hZGRMaW5rID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmRhdGE/LmltYWdlRGF0YT8uY29udGVudCkge1xyXG4gICAgICB0aGlzLmxpbmsgPSB0aGlzLmRhdGEuaW1hZ2VEYXRhPy5jb250ZW50O1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVHlwZSA9IHRoaXMubGluay5saW5rVHlwZSA9PT0gUmVkaXJlY3Rpb25MaW5rVHlwZS5FbWFpbCB8fCB0aGlzLmxpbmsubGlua1R5cGUgPT09IFJlZGlyZWN0aW9uTGlua1R5cGUuUGhvbmUgPyBSZWRpcmVjdGlvbkxpbmtUeXBlLkV4dGVybmFsIDogdGhpcy5saW5rLmxpbmtUeXBlO1xyXG4gICAgICB0aGlzLmFkZExpbmsgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0VGVtcGxhdGVQYWdlKCk7XHJcbiAgICBpZiAodGhpcy5saW5rPy5yZWRpcmVjdGlvblVybC5pbmNsdWRlcyhcImNvbGxlY3Rpb25zPVwiKSkge1xyXG4gICAgICBhd2FpdCB0aGlzLmdldENvbGxlY3Rpb25MaXN0KCk7XHJcbiAgICAgIHRoaXMucGFnZU5hbWUgPSBcIlByb2R1Y3QgTGlzdFwiO1xyXG4gICAgICBsZXQgcXVlcnkgPSB0aGlzLmxpbmsucmVkaXJlY3Rpb25Vcmwuc3BsaXQoXCI/XCIpWzFdO1xyXG4gICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5KTtcclxuICAgICAgdGhpcy5jb2xsZWN0aW9uUGF0aCA9IHBhcmFtcy5nZXQoJ2NvbGxlY3Rpb25zJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5saW5rPy5yZWRpcmVjdGlvblVybC5pbmNsdWRlcyhcImNhdGVnb3J5PVwiKSkge1xyXG4gICAgICBhd2FpdCB0aGlzLmdldENhdGVnb3J5TGlzdCgpO1xyXG4gICAgICB0aGlzLnBhZ2VOYW1lID0gXCJQcm9kdWN0IExpc3RcIjtcclxuICAgICAgbGV0IHF1ZXJ5ID0gdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsLnNwbGl0KFwiP1wiKVsxXTtcclxuICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeSk7XHJcbiAgICAgIHRoaXMuY2F0ZWdvcnlQYXRoID0gcGFyYW1zLmdldCgnY2F0ZWdvcnknKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbmludGVyZmFjZSB0eXBlIHtcclxuICB0eXBlOiBzdHJpbmc7XHJcbn1cclxuIiwiPHNlY3Rpb24gY2xhc3M9XCJtYWluLXNlY3Rpb25cIj5cclxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXNlY3Rpb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImhlYWQtdGV4dFwiPkltYWdlIFNldHRpbmdzPC9kaXY+XHJcbiAgICA8bWF0LWljb24gY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZi0xOCBjcFwiXHJcbiAgICAgIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2UoKVwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2PlxyXG4gICAgPCEtLSA8cCBjbGFzcz1cImhlYWRpbmcgbWItMFwiPkltYWdlPC9wPiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtaW1hZ2UgY3BcIiAqbmdJZj1cIiFpbWFnZURhdGEudXJsICYmICFpY29uRGF0YS51cmxcIiAoY2xpY2spPVwidXBkYXRlSW1hZ2UoKVwiPlxyXG4gICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCJcclxuICAgICAgICBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzU0NzUwMGMxNzQ0Njk4ODMwMzQzdXBsb2FkLW9uZSUyMCUyODElMjkucG5nXCJcclxuICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgPHAgY2xhc3M9XCJ1cGxvYWQtdGV4dCBtYi0wXCI+VXBsb2FkIGEgZmlsZTwvcD5cclxuICAgICAgPHAgY2xhc3M9XCJ1cGxvYWQtdGV4dCBtYi0wXCI+b3Igc2VsZWN0IGFuIGV4aXN0aW5nIG9uZTwvcD5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJ1cGxvYWQtdGV4dFwiPnVwIHRvIDMyTUI8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiICpuZ0lmPVwiaW1hZ2VEYXRhLnVybCB8fCBpY29uRGF0YS51cmxcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbWdMb2FkZXJcIj5cclxuICAgICAgICA8aW1nIFtzcmNdPVwiaW1hZ2VEYXRhLnVybCB8fCBpY29uRGF0YS51cmxcIiBbYWx0XT1cImltYWdlRGF0YS5hbHRUZXh0ID8/ICcnXCJcclxuICAgICAgICAgICpuZ0lmPVwiIWltYWdlRGF0YT8udXJsPy5pbmNsdWRlcygnLm1wNCcpXCI+XHJcbiAgICAgICAgPHZpZGVvIFtzcmNdPVwiaW1hZ2VEYXRhLnVybFwiIGNsYXNzPVwidy0xMDAgaC0xMDBcIiAqbmdJZj1cImltYWdlRGF0YT8udXJsPy5pbmNsdWRlcygnLm1wNCcpXCIgbXV0ZWQgbG9vcD48L3ZpZGVvPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXBhbGNlLWltYWdlIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInVwZGF0ZUltYWdlKClcIj5cclxuICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIlxyXG4gICAgICAgICAgICBoZWlnaHQ9XCIyNFwiIGNsYXNzPVwiaWNvbiB3LTQgaC00XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgZD1cIm00IDE2IDQuNTg1NzktNC41ODU4Yy43ODEwNC0uNzgxIDIuMDQ3NDEtLjc4MSAyLjgyODQxIDBMMTYgMTZtLTItMiAxLjU4NTgtMS41ODU4Yy43ODEtLjc4MSAyLjA0NzQtLjc4MSAyLjgyODQgMEwyMCAxNG0tNi02aC4wMU02IDIwaDEyYzEuMTA0NiAwIDItLjg5NTQgMi0yVjZjMC0xLjEwNDU3LS44OTU0LTItMi0ySDZjLTEuMTA0NTcgMC0yIC44OTU0My0yIDJ2MTJjMCAxLjEwNDYuODk1NDMgMiAyIDJaXCI+XHJcbiAgICAgICAgICAgIDwvcGF0aD5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsZXRlLWltYWdlIGN1cnNvci1wb2ludGVyIFwiIChjbGljayk9XCJkZWxldGVJbWFnZSgpXCI+XHJcbiAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiNmZmZmZmZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiXHJcbiAgICAgICAgICAgIGhlaWdodD1cIjI0XCIgY2xhc3M9XCJpY29uIGgtNCB3LTRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICBkPVwibTE5IDctLjg2NzMgMTIuMTQyNUMxOC4wNTc5IDIwLjE4OTEgMTcuMTg3IDIxIDE2LjEzNzggMjFINy44NjIyNGMtMS4wNDkyOCAwLTEuOTIwMTYtLjgxMDktMS45OTQ5Mi0xLjg1NzVMNSA3bTUgNHY2bTQtNnY2bTEtMTBWNGMwLS41NTIyOC0uNDQ3Ny0xLTEtMWgtNGMtLjU1MjI4IDAtMSAuNDQ3NzItMSAxdjNNNCA3aDE2XCI+XHJcbiAgICAgICAgICAgIDwvcGF0aD5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImltZ0xvYWRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWRfc3Bpbm5lciBkLWZsZXggdy0xMDAgaC0xMDAganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxtYXQtc3Bpbm5lcj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5zaG93SWNvblwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJwLTAtMTAgY2xyLXJlZFwiPk5vdGUgOiBUaGlzIEljb24gRmVhdHVyZSBTdXBwb3J0cyBTVkcgYW5kIFBORyBpbiBibGFjayBhbmQgd2hpdGUgZm9ybWF0IG9ubHkuPC9zcGFuPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGF0YS5zaG93SWNvblwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInctMTAwIHAtMC0xMCBtYi0yMlwiICpuZ0lmPVwiaW1hZ2VEYXRhLmhhc093blByb3BlcnR5KCdhbHRUZXh0JylcIj5cclxuICAgICAgPHAgY2xhc3M9XCJoZWFkaW5nIG1iLTJcIj5BbHQgdGV4dDwvcD5cclxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJFbnRlciBhbHQgdGV4dFwiIGNsYXNzPVwiaW5wdXQtZmllbGQgdy0xMDBcIiBbKG5nTW9kZWwpXT1cImltYWdlRGF0YS5hbHRUZXh0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPldoZW4gdGhlIGltYWdlIGZhaWxzIHRvIGxvYWQsIHRoaXMgdGV4dCB3aWxsIGJlIGRpc3BsYXllZC48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJpbWFnZSBtYi0yMlwiICpuZ0lmPVwiaW1hZ2VEYXRhLmhhc093blByb3BlcnR5KCdwb3NpdGlvbicpXCI+XHJcbiAgICAgIDxwIGNsYXNzPVwiaGVhZGluZyBtYi0xXCI+SW1hZ2UgUG9zaXRpb248L3A+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWFjdGlvblwiPlxyXG4gICAgICAgIDxsYWJlbD5Ib3Jpem9udGFsPC9sYWJlbD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LXN0YXJ0IGNwXCI+XHJcbiAgICAgICAgICA8aW5wdXQgW21pbl09XCJtaW5cIiBbbWF4XT1cIm1heFwiIHN0ZXA9XCI1XCIgdHlwZT1cInJhbmdlXCIgWyhuZ01vZGVsKV09XCJpbWFnZURhdGEucG9zaXRpb24ueFwiXHJcbiAgICAgICAgICAgIChpbnB1dCk9XCJob3Jpem9udGFsUG9zaXRpb24oKVwiIGNsYXNzPVwidy03NVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhvcml6b250YWwtYWN0aW9uXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiA1cHg7XCI+XHJcbiAgICAgICAgPGxhYmVsPlZlcnRpY2FsPC9sYWJlbD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LXN0YXJ0IGNwXCI+XHJcbiAgICAgICAgICA8aW5wdXQgW21pbl09XCJtaW5cIiBbbWF4XT1cIm1heFwiIHN0ZXA9XCI1XCIgdHlwZT1cInJhbmdlXCIgWyhuZ01vZGVsKV09XCJpbWFnZURhdGEucG9zaXRpb24ueVwiXHJcbiAgICAgICAgICAgIChpbnB1dCk9XCJob3Jpem9udGFsUG9zaXRpb24oKVwiIGNsYXNzPVwidy03NVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImdyb3VwcyBjcCBweC0zXCI+XHJcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHR5cGUgb2YgbGlua1R5cGVcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVHlwZScgOiB0eXBlLnR5cGUgPT09IHNlbGVjdGVkVHlwZX1cIlxyXG4gICAgICAgIChjbGljayk9XCJjaGFuZ2VUeXBlKHR5cGUudHlwZSlcIj57e3R5cGUudHlwZX19PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1jb250YWluZXIgbXQtMyBteC0zXCI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJsaW5rLmxpbmtUeXBlID09PSBSZWRpcmVjdGlvbkxpbmsuUGFnZVwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImlucHV0LWxhYmVsLTEgbXQtMyBtYi0yXCI+U2VsZWN0IFBhZ2U8L2xhYmVsPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wLWRvd24tY29udGFpbmVyIHctMTAwIGQtZmxleCBtYi0yXCI+XHJcbiAgICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwibGluay5wYWdlSWRcIiAoY2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiBzZWxlY3RlZD5TZWxlY3QgZnJvbSB5b3VyIGV4aXN0aW5nIHBhZ2VzPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHBhZ2Ugb2YgdGVtcGxhdGVQYWdlXCIgW3ZhbHVlXT1cInBhZ2UuaWRcIiBzdHlsZT1cInBhZGRpbmc6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAge3twYWdlLnBhZ2VOYW1lfX08L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRvd24tYXJyb3cgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+PGltZ1xyXG4gICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvMjY4NDEwYzE3NDIyODYwNTI5NDBEb3duJTIwMi5wbmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdlTmFtZSA9PSAnUHJvZHVjdCBMaXN0J1wiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaW5wdXQtbGFiZWwtMSBtdC0zIG1iLTJcIj5TZWxlY3QgQ29sbGVjdGlvbjwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcC1kb3duLWNvbnRhaW5lciB3LTEwMCBkLWZsZXggbWItMlwiPlxyXG4gICAgICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwiY29sbGVjdGlvblBhdGhcIiAobmdNb2RlbENoYW5nZSk9XCJhZGRDb2xsZWN0aW9uVG9QYXRoKClcIj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgc2VsZWN0ZWQ+U2VsZWN0IGZyb20geW91ciBleGlzdGluZyBwYWdlczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGNvbGwgb2YgY29sbGVjdGlvbkxpc3RcIiBzdHlsZT1cInBhZGRpbmc6IDEwcHg7XCIgW3ZhbHVlXT1cImNvbGwuY29sbGVjdGlvbk5hbWVcIj5cclxuICAgICAgICAgICAgICAgIHt7Y29sbD8uY29sbGVjdGlvbk5hbWV9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaW5wdXQtbGFiZWwtMSBtdC0zIG1iLTJcIj5TZWxlY3QgQ2F0ZWdvcnk8L2xhYmVsPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3AtZG93bi1jb250YWluZXIgdy0xMDAgZC1mbGV4IG1iLTJcIj5cclxuICAgICAgICAgICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cImNhdGVnb3J5UGF0aFwiIChuZ01vZGVsQ2hhbmdlKT1cImFkZENhdGVnb3J5VG9QYXRoKClcIj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgc2VsZWN0ZWQ+U2VsZWN0IGZyb20geW91ciBleGlzdGluZyBwYWdlczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGNvbGwgb2YgY2F0ZWdvcnlMaXN0XCIgc3R5bGU9XCJwYWRkaW5nOiAxMHB4O1wiIFt2YWx1ZV09XCJjb2xsLmNhdGVnb3J5TmFtZVwiPlxyXG4gICAgICAgICAgICAgICAge3tjb2xsPy5jYXRlZ29yeU5hbWV9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInN1Yi10ZXh0XCI+U2VsZWN0IGZyb20geW91ciBleGlzdGluZyBwYWdlczwvZGl2PiAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJsaW5rLmxpbmtUeXBlID09PSBSZWRpcmVjdGlvbkxpbmsuc2VjdGlvblwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cIm10LTMgbWItMiBpbnB1dC1sYWJlbC0xXCI+U2VjdGlvbjwvbGFiZWw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3AtZG93bi1jb250YWluZXIgdy0xMDAgZC1mbGV4IG1iLTJcIj5cclxuICAgICAgICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJsaW5rLnBhZ2VJZFwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgc2VsZWN0ZWQ+U2VsZWN0IHRoZSBTZWN0aW9uPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgdGVtcGxhdGVQYWdlWzBdPy5jb21wb25lbnRzXCIgW3ZhbHVlXT1cInNlY3Rpb24uaWRcIj57e3NlY3Rpb24uc2VjdGlvbk5hbWV9fVxyXG4gICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRvd24tYXJyb3cgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+PGltZ1xyXG4gICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvMjY4NDEwYzE3NDIyODYwNTI5NDBEb3duJTIwMi5wbmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMTBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJpbnB1dC1sYWJlbC0yXCI+T3BlbiBpbiBhIG5ldyBicm93c2VyIHRhYjwvbGFiZWw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbWwtYXV0b1wiPlxyXG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBzd2l0Y2gtYnRuIGN1cnNvci1wb2ludGVyXCIgdHlwZT1cImNoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJsaW5rLm5ld1RhYlwiXHJcbiAgICAgICAgICAgIHJvbGU9XCJzd2l0Y2hcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJsaW5rLmxpbmtUeXBlID09PSBSZWRpcmVjdGlvbkxpbmsuRXh0ZXJuYWwgfHwgbGluay5saW5rVHlwZSA9PT0gUmVkaXJlY3Rpb25MaW5rLkVtYWlsIHx8IGxpbmsubGlua1R5cGUgPT09IFJlZGlyZWN0aW9uTGluay5QaG9uZVwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cIm10LTMgbWItMiBpbnB1dC1sYWJlbC0xXCI+U2VsZWN0IHR5cGU8L2xhYmVsPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wLWRvd24tY29udGFpbmVyIHctMTAwIGQtZmxleCBtYi0yXCI+XHJcbiAgICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwibGluay5saW5rVHlwZVwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgc2VsZWN0ZWQ+U2VsZWN0IHRoZSBUeXBlPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHR5cGUgb2YgZXh0ZXJuYWxMaW5rVHlwZVwiIFt2YWx1ZV09XCJ0eXBlLnR5cGVcIj57e3R5cGUudHlwZX19PC9vcHRpb24+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb3duLWFycm93IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPjxpbWdcclxuICAgICAgICAgICAgICBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzI2ODQxMGMxNzQyMjg2MDUyOTQwRG93biUyMDIucG5nXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJpbnB1dC1sYWJlbCBtYi0yXCI+e3tsaW5rLmxpbmtUeXBlID09PSBSZWRpcmVjdGlvbkxpbmsuRXh0ZXJuYWwgPyAnV2Vic2l0ZScgOiBsaW5rLmxpbmtUeXBlID09PVxyXG4gICAgICAgICAgUmVkaXJlY3Rpb25MaW5rLkVtYWlsID8gJ0VtYWlsIEFkZHJlc3MnIDogJ1Bob25lIE51bWJlcid9fTwvbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dC10ZXh0XCIgWyhuZ01vZGVsKV09XCJsaW5rLnJlZGlyZWN0aW9uVXJsXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJsaW5rLmxpbmtUeXBlID09PSBSZWRpcmVjdGlvbkxpbmsuRXh0ZXJuYWwgPyAnZXhhbXBsZSA6IGh0dHBzOi8vZmFjZWJvb2suY29tJzogJydcIj5cclxuICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEuc2hvd0ljb25cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvbG9yIHB4LTMgbWItMyBkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiaW5wdXQtbGFiZWwtMSBtYi00IHctMTAwXCI+SWNvbiBDb2xvcjwvbGFiZWw+XHJcbiAgICAgIDxkaXYgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJpY29uRGF0YS5jb2xvclwiIGNsYXNzPVwiY3VzdG9tLWlucHV0XCIgKGNsaWNrKT1cImNvbG9ySW5wdXQuY2xpY2soKVwiPjwvZGl2PlxyXG4gICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgWyhuZ01vZGVsKV09XCJpY29uRGF0YS5jb2xvclwiIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUljb25Db2xvcigpXCIgY2xhc3M9XCJpbnB1dC10ZXh0IGQtbm9uZVwiXHJcbiAgICAgICAgI2NvbG9ySW5wdXQgLz5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJiYWNrZ3JvdW5kLW9uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBweC0zIG1iLTJcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiaW5wdXQtbGFiZWwtMVwiPlNob3cgQmFja2dyb3VuZDwvbGFiZWw+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG1sLWF1dG9cIj5cclxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IHN3aXRjaC1idG4gY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cImljb25EYXRhLnNob3dCYWNrZ3JvdW5kXCJcclxuICAgICAgICAgIHJvbGU9XCJzd2l0Y2hcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInRhYnMgZC1mbGV4IHB4LTMgZ2FwLTMgbWItMlwiICpuZ0lmPVwiaWNvbkRhdGEuc2hvd0JhY2tncm91bmRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRhYiBweC0zIHB5LTJcIiAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIiAoY2xpY2spPVwiaWNvbkRhdGEuYmFja2dyb3VuZFR5cGUgPSB0YWJcIlxyXG4gICAgICAgIFtjbGFzcy5zZWxlY3RlZFRhYl09XCJpY29uRGF0YS5iYWNrZ3JvdW5kVHlwZSA9PSB0YWJcIj5cclxuICAgICAgICB7e3RhYn19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJpY29uLWJhY2tncm91bmQgcHgtMyAgZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgKm5nSWY9XCJpY29uRGF0YS5zaG93QmFja2dyb3VuZFwiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJpbnB1dC1sYWJlbC0xIG1iLTMgdy0xMDBcIj5JY29uIEJhY2tncm91bmQ8L2xhYmVsPlxyXG4gICAgICA8ZGl2IFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaWNvbkRhdGE/LmJhY2tncm91bmRDb2xvclwiIGNsYXNzPVwiY3VzdG9tLWlucHV0IG1iLTJcIiAoY2xpY2spPVwiY29sb3JJbnB1dDEuY2xpY2soKVwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJjb2xvclwiIFsobmdNb2RlbCldPVwiaWNvbkRhdGEuYmFja2dyb3VuZENvbG9yXCIgY2xhc3M9XCJpbnB1dC10ZXh0IGQtbm9uZVwiICNjb2xvcklucHV0MSAvPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImljb24tYmFja2dyb3VuZCBweC0zICBkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAqbmdJZj1cImljb25EYXRhLnNob3dCYWNrZ3JvdW5kICYmIGljb25EYXRhLmJhY2tncm91bmRUeXBlID09PSAnR3JhZGllbnQnXCI+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImlucHV0LWxhYmVsLTEgbWItMyB3LTEwMFwiPkljb24gU2Vjb25kYXJ5IEJhY2tncm91bmQ8L2xhYmVsPlxyXG4gICAgICA8ZGl2IFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaWNvbkRhdGE/LnNlY29uZGFyeUNvbG9yXCIgY2xhc3M9XCJjdXN0b20taW5wdXRcIiAoY2xpY2spPVwiY29sb3JJbnB1dDIuY2xpY2soKVwiPjwvZGl2PlxyXG4gICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgWyhuZ01vZGVsKV09XCJpY29uRGF0YS5zZWNvbmRhcnlDb2xvclwiIGNsYXNzPVwiaW5wdXQtdGV4dCBkLW5vbmVcIiAjY29sb3JJbnB1dDIgLz5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbjwvc2VjdGlvbj4iXX0=
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWxlbWVudHMvaW1hZ2UtZWRpdG9yL2ltYWdlLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL2ltYWdlLWVkaXRvci9pbWFnZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUEyQixNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHM0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFHcEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7O0FBVXhFLE1BQU0sT0FBTyxvQkFBb0I7SUFFL0IsWUFDVSxhQUE0QixFQUM1QixhQUFvQyxFQUNyQyxTQUE2QyxFQUNwQixJQUFTLEVBQ2pDLFNBQW9CO1FBSnBCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGtCQUFhLEdBQWIsYUFBYSxDQUF1QjtRQUNyQyxjQUFTLEdBQVQsU0FBUyxDQUFvQztRQUNwQixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFLOUIsY0FBUyxHQUFVO1lBQ2pCLEVBQUUsRUFBRSxFQUFFO1lBQ04sR0FBRyxFQUFFLEVBQUU7WUFDUCxRQUFRLEVBQUUsRUFBRTtZQUNaLE9BQU8sRUFBRSxFQUFFO1lBQ1gsUUFBUSxFQUFFO2dCQUNSLENBQUMsRUFBRSxDQUFDO2dCQUNKLENBQUMsRUFBRSxDQUFDO2FBQ0w7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsUUFBUSxFQUFFLG1CQUFtQixDQUFDLElBQUk7Z0JBQ2xDLGNBQWMsRUFBRSxFQUFFO2dCQUNsQixNQUFNLEVBQUUsRUFBRTtnQkFDVixNQUFNLEVBQUUsS0FBSzthQUNkO1NBQ0YsQ0FBQztRQUNGLGFBQVEsR0FBUztZQUNmLEdBQUcsRUFBRSxFQUFFO1lBQ1AsS0FBSyxFQUFFLEVBQUU7WUFDVCxjQUFjLEVBQUUsS0FBSztZQUNyQixlQUFlLEVBQUUsRUFBRTtTQUNwQixDQUFBO1FBRU8sYUFBUSxHQUF1QixJQUFJLENBQUM7UUFDNUMsU0FBSSxHQUFXO1lBQ2IsUUFBUSxFQUFFLG1CQUFtQixDQUFDLElBQUk7WUFDbEMsS0FBSyxFQUFFLEVBQUU7WUFDVCxjQUFjLEVBQUUsRUFBRTtZQUNsQixNQUFNLEVBQUUsRUFBRTtZQUNWLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQztRQVVGLG9CQUFlLEdBQUcsbUJBQW1CLENBQUE7UUFDckMsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixRQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ1YsUUFBRyxHQUFHLENBQUMsQ0FBQztRQUNSLFNBQUksR0FBdUIsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFHakQsY0FBUyxHQUFZLEtBQUssQ0FBQztRQXNDM0IsYUFBUSxHQUFVO1lBQ2hCO2dCQUNFLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxJQUFJO2FBQy9CO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLG1CQUFtQixDQUFDLE9BQU87YUFDbEM7WUFDRDtnQkFDRSxJQUFJLEVBQUUsbUJBQW1CLENBQUMsUUFBUTthQUNuQztTQUNGLENBQUE7UUFDRCxpQkFBWSxHQUF3QixtQkFBbUIsQ0FBQyxJQUFJLENBQUM7UUFLN0QsaUJBQVksR0FBVSxFQUFFLENBQUM7UUFNekIscUJBQWdCLEdBQWdCO1lBQzlCO2dCQUNFLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxRQUFRO2FBQ25DO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLG1CQUFtQixDQUFDLEtBQUs7YUFDaEM7WUFDRDtnQkFDRSxJQUFJLEVBQUUsbUJBQW1CLENBQUMsS0FBSzthQUNoQztTQUNGLENBQUE7UUFDRCxtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUN6QixpQkFBWSxHQUFRLEVBQUUsQ0FBQztRQUN2QixtQkFBYyxHQUFRLEVBQUUsQ0FBQTtRQWlCeEIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQWdCdEIsaUJBQVksR0FBUSxFQUFFLENBQUM7SUE1SnZCLENBQUM7SUFrQ0QsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3JDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFTRCxLQUFLLENBQUMsV0FBVztRQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtRQUNwSSxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDMUMsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDUixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7d0JBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO3dCQUN6QyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUM7NEJBQ3BHLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQzt3QkFDdEcsQ0FBQztvQkFDSCxDQUFDO3lCQUNJLENBQUM7d0JBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7b0JBQzVDLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQTtZQUN4QixDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDbEksQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLENBQUM7YUFDSSxDQUFDO1lBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBYUQsVUFBVSxDQUFDLElBQXlCO1FBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDekMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFlRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLENBQUMsU0FBUyxDQUFDO1lBQy9DLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsQ0FBQztZQUM1QixDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUMsU0FBUyxDQUFDO1lBQzlDLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQztZQUMxQixDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUlELG1CQUFtQjtRQUNqQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5RSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUM1RixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUN6RixDQUFDO1FBRUgsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDOUYsQ0FBQzthQUNJLENBQUM7WUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUM5RixDQUFDO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ3ZGLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzlGLENBQUM7UUFDSCxDQUFDO2FBQ0ksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUMzRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN6RixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3pGLENBQUM7SUFDSCxDQUFDO0lBQ0QsWUFBWSxDQUFDLEtBQVU7UUFDckIsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDMUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLGNBQWMsQ0FBQyxDQUFDO1FBQ2hGLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQztZQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFDdEMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUI7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssbUJBQW1CLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM3SyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDdkQsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLGNBQWMsQ0FBQztZQUMvQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkQsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3BELE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDO1lBQy9CLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0MsQ0FBQztJQUNILENBQUM7K0dBek5VLG9CQUFvQixnSEFNckIsZUFBZTttR0FOZCxvQkFBb0IsOEVDdEJqQyx1d1dBc01VLG9vSERwTEUsWUFBWSw2VkFBRSxXQUFXLHcxQ0FBRSxhQUFhLG1MQUFFLGVBQWUsK0JBQUUsa0JBQWtCOzs0RkFJNUUsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLENBQUM7OzBCQVVyRixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdFNsaWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlcic7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEJ1dHRvbiwgSWNvbiwgSW1hZ2UgfSBmcm9tICcuLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xyXG5pbXBvcnQgeyBNZWRpYVNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vbWVkaWEtc2VsZWN0b3IvbWVkaWEtc2VsZWN0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVsZW1lbnRTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uL2VkaXRvci1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZWRpcmVjdGlvbkxpbmtUeXBlIH0gZnJvbSAnLi4vLi4vc3R5bGVzL2luZGV4JztcclxuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXJcIjtcclxuaW1wb3J0IHsgQkFDS0dST1VORF9UWVBFIH0gZnJvbSAnQHNpbXBvLXVpL3N0eWxlcy90eXBlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLWltYWdlLWVkaXRvcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0U2xpZGVyTW9kdWxlLCBNYXRQcm9ncmVzc1NwaW5uZXJdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9pbWFnZS1lZGl0b3IuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEltYWdlRWRpdG9yQ29tcG9uZW50IHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGV2ZW50c1NlcnZpY2U6IEV2ZW50c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVkaXRvclNlcnZpY2U6IEVsZW1lbnRTZXJ2aWNlU2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxJbWFnZUVkaXRvckNvbXBvbmVudD4sXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcclxuICAgIHByaXZhdGUgbWF0RGlhbG9nOiBNYXREaWFsb2csXHJcbiAgKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgaW1hZ2VEYXRhOiBJbWFnZSA9IHtcclxuICAgIGlkOiAnJyxcclxuICAgIHVybDogJycsXHJcbiAgICBibHVyaGFzaDogJycsXHJcbiAgICBhbHRUZXh0OiAnJyxcclxuICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgIHg6IDAsXHJcbiAgICAgIHk6IDBcclxuICAgIH0sXHJcbiAgICBjb250ZW50OiB7XHJcbiAgICAgIGxhYmVsOiAnJyxcclxuICAgICAgbGlua1R5cGU6IFJlZGlyZWN0aW9uTGlua1R5cGUuUGFnZSxcclxuICAgICAgcmVkaXJlY3Rpb25Vcmw6ICcnLFxyXG4gICAgICBwYWdlSWQ6ICcnLFxyXG4gICAgICBuZXdUYWI6IGZhbHNlXHJcbiAgICB9XHJcbiAgfTtcclxuICBpY29uRGF0YTogSWNvbiA9IHtcclxuICAgIHVybDogJycsXHJcbiAgICBjb2xvcjogJycsXHJcbiAgICBzaG93QmFja2dyb3VuZDogZmFsc2UsXHJcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcnXHJcbiAgfVxyXG4gIHNlY3Rpb25JZCE6IHN0cmluZztcclxuICBwcml2YXRlIGJhY2tEcm9wOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG4gIGxpbms6IEJ1dHRvbiA9IHtcclxuICAgIGxpbmtUeXBlOiBSZWRpcmVjdGlvbkxpbmtUeXBlLlBhZ2UsXHJcbiAgICBsYWJlbDogJycsXHJcbiAgICByZWRpcmVjdGlvblVybDogJycsXHJcbiAgICBwYWdlSWQ6ICcnLFxyXG4gICAgbmV3VGFiOiBmYWxzZVxyXG4gIH07XHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNlY3Rpb25JZCA9IHRoaXMuZGF0YS5zZWN0aW9uSWQ7XHJcbiAgICBpZiAodGhpcy5kYXRhPy5zaG93SWNvbikge1xyXG4gICAgICB0aGlzLmljb25EYXRhID0gdGhpcy5kYXRhLmljb25EYXRhO1xyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmljb25EYXRhKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW1hZ2VIZWxwZXJGdW5jdGlvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuICBSZWRpcmVjdGlvbkxpbmsgPSBSZWRpcmVjdGlvbkxpbmtUeXBlXHJcbiAgYWRkTGluazogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG1heCA9IDEwMDtcclxuICBtaW4gPSAwO1xyXG4gIHRhYnMgIDogQkFDS0dST1VORF9UWVBFW109IFsnU29saWQnLCAnR3JhZGllbnQnXTtcclxuXHJcblxyXG4gIGltZ0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFzeW5jIHVwZGF0ZUltYWdlKCkge1xyXG4gICAgdGhpcy5pbWdMb2FkZXIgPSB0cnVlO1xyXG4gICAgY29uc3QgbWVkaWFTZWxlY3RvckRpYWxvZyA9IHRoaXMubWF0RGlhbG9nLm9wZW4oTWVkaWFTZWxlY3RvckNvbXBvbmVudCwgeyBkYXRhOiB7IG11bHRpcGxlOiBmYWxzZSB9LCBwYW5lbENsYXNzOiBcIm1lZGlhLXNlbGVjdG9yXCIgfSlcclxuICAgIG1lZGlhU2VsZWN0b3JEaWFsb2cuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGF0YT8uc2hvd0ljb24pIHtcclxuICAgICAgICAgICAgdGhpcy5pY29uRGF0YS51cmwgPSByZXNbMF0uYXNzZXRzWzBdLnVybDtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaWNvbkRhdGEudXJsICYmICh0aGlzLmljb25EYXRhLnVybC5pbmNsdWRlcygnLnBuZycpIHx8IHRoaXMuaWNvbkRhdGEudXJsLmluY2x1ZGVzKCcuc3ZnJykpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ldmVudHNTZXJ2aWNlLmljb25DaGFuZ2VkLmVtaXQoeyBpZDogdGhpcy5zZWN0aW9uSWQgKyB0aGlzLmljb25EYXRhLmlkLCBpY29uOiB0aGlzLmljb25EYXRhIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pbWFnZURhdGEudXJsID0gcmVzWzBdLmFzc2V0c1swXS51cmw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaW1nTG9hZGVyID0gZmFsc2VcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNoYW5nZUljb25Db2xvcigpIHtcclxuICAgIHRoaXMuZXZlbnRzU2VydmljZS5pY29uQ2hhbmdlZC5lbWl0KHsgaWQ6IHRoaXMuc2VjdGlvbklkICsgdGhpcy5pY29uRGF0YS5pZCwgaWNvbjogdGhpcy5pY29uRGF0YSB9KTtcclxuICB9XHJcblxyXG4gIGhvcml6b250YWxQb3NpdGlvbigpIHtcclxuICAgIHRoaXMuZXZlbnRzU2VydmljZS5vYmplY3RQb3NpdGlvbkNoYW5nZUNoZWNrLmVtaXQoeyBpZDogdGhpcy5zZWN0aW9uSWQgKyB0aGlzLmltYWdlRGF0YS5pZCwgcG9zaXRpb246IHRoaXMuaW1hZ2VEYXRhLnBvc2l0aW9uIH0pXHJcbiAgfVxyXG5cclxuICBkZWxldGVJbWFnZSgpIHtcclxuICAgIGlmICh0aGlzLmRhdGE/LnNob3dJY29uKSB7XHJcbiAgICAgIHRoaXMuaWNvbkRhdGEudXJsID0gJyc7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5pbWFnZURhdGEudXJsID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGxpbmtUeXBlOiBhbnlbXSA9IFtcclxuICAgIHtcclxuICAgICAgdHlwZTogUmVkaXJlY3Rpb25MaW5rVHlwZS5QYWdlXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICB0eXBlOiBSZWRpcmVjdGlvbkxpbmtUeXBlLnNlY3Rpb25cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHR5cGU6IFJlZGlyZWN0aW9uTGlua1R5cGUuRXh0ZXJuYWxcclxuICAgIH1cclxuICBdXHJcbiAgc2VsZWN0ZWRUeXBlOiBSZWRpcmVjdGlvbkxpbmtUeXBlID0gUmVkaXJlY3Rpb25MaW5rVHlwZS5QYWdlO1xyXG4gIGNoYW5nZVR5cGUodHlwZTogUmVkaXJlY3Rpb25MaW5rVHlwZSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFR5cGUgPSB0eXBlO1xyXG4gICAgdGhpcy5saW5rLmxpbmtUeXBlID0gdGhpcy5zZWxlY3RlZFR5cGU7XHJcbiAgfVxyXG4gIHRlbXBsYXRlUGFnZTogYW55W10gPSBbXTtcclxuICBnZXRUZW1wbGF0ZVBhZ2UoKSB7XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuZ2V0VGVtcGxhdGUoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMudGVtcGxhdGVQYWdlID0gcmVzLmRhdGE7XHJcbiAgICB9KVxyXG4gIH1cclxuICBleHRlcm5hbExpbmtUeXBlOiBBcnJheTx0eXBlPiA9IFtcclxuICAgIHtcclxuICAgICAgdHlwZTogUmVkaXJlY3Rpb25MaW5rVHlwZS5FeHRlcm5hbFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgdHlwZTogUmVkaXJlY3Rpb25MaW5rVHlwZS5FbWFpbFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgdHlwZTogUmVkaXJlY3Rpb25MaW5rVHlwZS5QaG9uZVxyXG4gICAgfVxyXG4gIF1cclxuICBjb2xsZWN0aW9uTGlzdDogYW55ID0gW107XHJcbiAgY2F0ZWdvcnlMaXN0OiBhbnkgPSBbXTtcclxuICBjb2xsZWN0aW9uUGF0aDogYW55ID0gXCJcIlxyXG4gIGdldENvbGxlY3Rpb25MaXN0KCkge1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmdldEFsbENvbGxlY3Rpb25zKCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uTGlzdCA9IHJlcztcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgZ2V0Q2F0ZWdvcnlMaXN0KCkge1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmdldEFsbENhdGVnb3JpZXMoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdCA9IHJlcztcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuICBwYWdlTmFtZTogc3RyaW5nID0gXCJcIjtcclxuICBhZGRDb2xsZWN0aW9uVG9QYXRoKCkge1xyXG4gICAgaWYgKHRoaXMubGluay5yZWRpcmVjdGlvblVybC5pbmNsdWRlcyhcIj9jb2xsZWN0aW9ucz1cIikpIHtcclxuICAgICAgdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsID0gdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsLnNwbGl0KFwiP2NvbGxlY3Rpb25zPVwiKVswXTtcclxuICAgICAgdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsID0gdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsICsgXCI/Y29sbGVjdGlvbnM9XCIgKyB0aGlzLmNvbGxlY3Rpb25QYXRoO1xyXG4gICAgICBpZiAodGhpcy5jYXRlZ29yeVBhdGgubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMubGluay5yZWRpcmVjdGlvblVybCA9IHRoaXMubGluay5yZWRpcmVjdGlvblVybCArIFwiJmNhdGVnb3J5PVwiICsgdGhpcy5jYXRlZ29yeVBhdGg7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubGluay5yZWRpcmVjdGlvblVybC5pbmNsdWRlcyhcImNhdGVnb3J5PVwiKSkge1xyXG4gICAgICB0aGlzLmxpbmsucmVkaXJlY3Rpb25VcmwgPSB0aGlzLmxpbmsucmVkaXJlY3Rpb25VcmwgKyBcIiZjb2xsZWN0aW9ucz1cIiArIHRoaXMuY29sbGVjdGlvblBhdGg7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsID0gdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsICsgXCI/Y29sbGVjdGlvbnM9XCIgKyB0aGlzLmNvbGxlY3Rpb25QYXRoO1xyXG4gICAgfVxyXG4gIH1cclxuICBjYXRlZ29yeVBhdGg6IGFueSA9IFwiXCI7XHJcbiAgYWRkQ2F0ZWdvcnlUb1BhdGgoKSB7XHJcbiAgICBpZiAodGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsLmluY2x1ZGVzKFwiP2NhdGVnb3J5PVwiKSkge1xyXG4gICAgICB0aGlzLmxpbmsucmVkaXJlY3Rpb25VcmwgPSB0aGlzLmxpbmsucmVkaXJlY3Rpb25Vcmwuc3BsaXQoXCI/Y2F0ZWdvcnk9XCIpWzBdO1xyXG4gICAgICB0aGlzLmxpbmsucmVkaXJlY3Rpb25VcmwgPSB0aGlzLmxpbmsucmVkaXJlY3Rpb25VcmwgKyBcIj9jYXRlZ29yeT1cIiArIHRoaXMuY2F0ZWdvcnlQYXRoO1xyXG4gICAgICBpZiAodGhpcy5jb2xsZWN0aW9uUGF0aC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsID0gdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsICsgXCImY29sbGVjdGlvbnM9XCIgKyB0aGlzLmNvbGxlY3Rpb25QYXRoO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmxpbmsucmVkaXJlY3Rpb25VcmwuaW5jbHVkZXMoXCJjb2xsZWN0aW9ucz1cIikpIHtcclxuICAgICAgdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsID0gdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsICsgXCImY2F0ZWdvcnk9XCIgKyB0aGlzLmNhdGVnb3J5UGF0aDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubGluay5yZWRpcmVjdGlvblVybCA9IHRoaXMubGluay5yZWRpcmVjdGlvblVybCArIFwiP2NhdGVnb3J5PVwiICsgdGhpcy5jYXRlZ29yeVBhdGg7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uUGFnZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZFBhZ2VJZCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgIGNvbnN0IHNlbGVjdGVkUGFnZSA9IHRoaXMudGVtcGxhdGVQYWdlLmZpbmQocGFnZSA9PiBwYWdlLmlkID09PSBzZWxlY3RlZFBhZ2VJZCk7XHJcbiAgICBpZiAoc2VsZWN0ZWRQYWdlKSB7XHJcbiAgICAgIHRoaXMubGluay5yZWRpcmVjdGlvblVybCA9IHNlbGVjdGVkUGFnZS5wYXRoO1xyXG4gICAgICB0aGlzLnBhZ2VOYW1lID0gc2VsZWN0ZWRQYWdlLnBhZ2VOYW1lO1xyXG4gICAgICBpZiAodGhpcy5wYWdlTmFtZSA9PSAnUHJvZHVjdCBMaXN0Jykge1xyXG4gICAgICAgIHRoaXMuZ2V0Q29sbGVjdGlvbkxpc3QoKTtcclxuICAgICAgICB0aGlzLmdldENhdGVnb3J5TGlzdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBpbWFnZUhlbHBlckZ1bmN0aW9uKCkge1xyXG4gICAgdGhpcy5pbWFnZURhdGEgPSB0aGlzLmRhdGEuaW1hZ2VEYXRhO1xyXG4gICAgdGhpcy5hZGRMaW5rID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmRhdGE/LmltYWdlRGF0YT8uY29udGVudCkge1xyXG4gICAgICB0aGlzLmxpbmsgPSB0aGlzLmRhdGEuaW1hZ2VEYXRhPy5jb250ZW50O1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVHlwZSA9IHRoaXMubGluay5saW5rVHlwZSA9PT0gUmVkaXJlY3Rpb25MaW5rVHlwZS5FbWFpbCB8fCB0aGlzLmxpbmsubGlua1R5cGUgPT09IFJlZGlyZWN0aW9uTGlua1R5cGUuUGhvbmUgPyBSZWRpcmVjdGlvbkxpbmtUeXBlLkV4dGVybmFsIDogdGhpcy5saW5rLmxpbmtUeXBlO1xyXG4gICAgICB0aGlzLmFkZExpbmsgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0VGVtcGxhdGVQYWdlKCk7XHJcbiAgICBpZiAodGhpcy5saW5rPy5yZWRpcmVjdGlvblVybC5pbmNsdWRlcyhcImNvbGxlY3Rpb25zPVwiKSkge1xyXG4gICAgICBhd2FpdCB0aGlzLmdldENvbGxlY3Rpb25MaXN0KCk7XHJcbiAgICAgIHRoaXMucGFnZU5hbWUgPSBcIlByb2R1Y3QgTGlzdFwiO1xyXG4gICAgICBsZXQgcXVlcnkgPSB0aGlzLmxpbmsucmVkaXJlY3Rpb25Vcmwuc3BsaXQoXCI/XCIpWzFdO1xyXG4gICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5KTtcclxuICAgICAgdGhpcy5jb2xsZWN0aW9uUGF0aCA9IHBhcmFtcy5nZXQoJ2NvbGxlY3Rpb25zJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5saW5rPy5yZWRpcmVjdGlvblVybC5pbmNsdWRlcyhcImNhdGVnb3J5PVwiKSkge1xyXG4gICAgICBhd2FpdCB0aGlzLmdldENhdGVnb3J5TGlzdCgpO1xyXG4gICAgICB0aGlzLnBhZ2VOYW1lID0gXCJQcm9kdWN0IExpc3RcIjtcclxuICAgICAgbGV0IHF1ZXJ5ID0gdGhpcy5saW5rLnJlZGlyZWN0aW9uVXJsLnNwbGl0KFwiP1wiKVsxXTtcclxuICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeSk7XHJcbiAgICAgIHRoaXMuY2F0ZWdvcnlQYXRoID0gcGFyYW1zLmdldCgnY2F0ZWdvcnknKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbmludGVyZmFjZSB0eXBlIHtcclxuICB0eXBlOiBzdHJpbmc7XHJcbn1cclxuIiwiPHNlY3Rpb24gY2xhc3M9XCJtYWluLXNlY3Rpb25cIj5cclxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXNlY3Rpb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImhlYWQtdGV4dFwiPkltYWdlIFNldHRpbmdzPC9kaXY+XHJcbiAgICA8bWF0LWljb24gY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZi0xOCBjcFwiXHJcbiAgICAgIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2UoKVwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2PlxyXG4gICAgPCEtLSA8cCBjbGFzcz1cImhlYWRpbmcgbWItMFwiPkltYWdlPC9wPiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtaW1hZ2UgY3BcIiAqbmdJZj1cIiFpbWFnZURhdGE/LnVybCAmJiAhaWNvbkRhdGE/LnVybFwiIChjbGljayk9XCJ1cGRhdGVJbWFnZSgpXCI+XHJcbiAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIlxyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvNTQ3NTAwYzE3NDQ2OTg4MzAzNDN1cGxvYWQtb25lJTIwJTI4MSUyOS5wbmdcIlxyXG4gICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICA8cCBjbGFzcz1cInVwbG9hZC10ZXh0IG1iLTBcIj5VcGxvYWQgYSBmaWxlPC9wPlxyXG4gICAgICA8cCBjbGFzcz1cInVwbG9hZC10ZXh0IG1iLTBcIj5vciBzZWxlY3QgYW4gZXhpc3Rpbmcgb25lPC9wPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInVwbG9hZC10ZXh0XCI+dXAgdG8gMzJNQjwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInNlYyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgKm5nSWY9XCJpbWFnZURhdGE/LnVybCB8fCBpY29uRGF0YT8udXJsXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW1nTG9hZGVyXCI+XHJcbiAgICAgICAgPGltZyBbc3JjXT1cImltYWdlRGF0YT8udXJsIHx8IGljb25EYXRhLnVybFwiIFthbHRdPVwiaW1hZ2VEYXRhPy5hbHRUZXh0ID8/ICcnXCJcclxuICAgICAgICAgICpuZ0lmPVwiIWltYWdlRGF0YT8udXJsPy5pbmNsdWRlcygnLm1wNCcpXCI+XHJcbiAgICAgICAgPHZpZGVvIFtzcmNdPVwiaW1hZ2VEYXRhPy51cmxcIiBjbGFzcz1cInctMTAwIGgtMTAwXCIgKm5nSWY9XCJpbWFnZURhdGE/LnVybD8uaW5jbHVkZXMoJy5tcDQnKVwiIG11dGVkIGxvb3A+PC92aWRlbz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVwYWxjZS1pbWFnZSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJ1cGRhdGVJbWFnZSgpXCI+XHJcbiAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCJcclxuICAgICAgICAgICAgaGVpZ2h0PVwiMjRcIiBjbGFzcz1cImljb24gdy00IGgtNFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgIGQ9XCJtNCAxNiA0LjU4NTc5LTQuNTg1OGMuNzgxMDQtLjc4MSAyLjA0NzQxLS43ODEgMi44Mjg0MSAwTDE2IDE2bS0yLTIgMS41ODU4LTEuNTg1OGMuNzgxLS43ODEgMi4wNDc0LS43ODEgMi44Mjg0IDBMMjAgMTRtLTYtNmguMDFNNiAyMGgxMmMxLjEwNDYgMCAyLS44OTU0IDItMlY2YzAtMS4xMDQ1Ny0uODk1NC0yLTItMkg2Yy0xLjEwNDU3IDAtMiAuODk1NDMtMiAydjEyYzAgMS4xMDQ2Ljg5NTQzIDIgMiAyWlwiPlxyXG4gICAgICAgICAgICA8L3BhdGg+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRlbGV0ZS1pbWFnZSBjdXJzb3ItcG9pbnRlciBcIiAoY2xpY2spPVwiZGVsZXRlSW1hZ2UoKVwiPlxyXG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjZmZmZmZmXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIlxyXG4gICAgICAgICAgICBoZWlnaHQ9XCIyNFwiIGNsYXNzPVwiaWNvbiBoLTQgdy00XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgZD1cIm0xOSA3LS44NjczIDEyLjE0MjVDMTguMDU3OSAyMC4xODkxIDE3LjE4NyAyMSAxNi4xMzc4IDIxSDcuODYyMjRjLTEuMDQ5MjggMC0xLjkyMDE2LS44MTA5LTEuOTk0OTItMS44NTc1TDUgN201IDR2Nm00LTZ2Nm0xLTEwVjRjMC0uNTUyMjgtLjQ0NzctMS0xLTFoLTRjLS41NTIyOCAwLTEgLjQ0NzcyLTEgMXYzTTQgN2gxNlwiPlxyXG4gICAgICAgICAgICA8L3BhdGg+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbWdMb2FkZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkX3NwaW5uZXIgZC1mbGV4IHctMTAwIGgtMTAwIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICA8bWF0LXNwaW5uZXI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEuc2hvd0ljb25cIj5cclxuICAgIDxzcGFuIGNsYXNzPVwicC0wLTEwIGNsci1yZWRcIj5Ob3RlIDogVGhpcyBJY29uIEZlYXR1cmUgU3VwcG9ydHMgU1ZHIGFuZCBQTkcgaW4gYmxhY2sgYW5kIHdoaXRlIGZvcm1hdCBvbmx5Ljwvc3Bhbj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRhdGEuc2hvd0ljb25cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBwLTAtMTAgbWItMjJcIiAqbmdJZj1cImltYWdlRGF0YT8uaGFzT3duUHJvcGVydHkoJ2FsdFRleHQnKVwiPlxyXG4gICAgICA8cCBjbGFzcz1cImhlYWRpbmcgbWItMlwiPkFsdCB0ZXh0PC9wPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkVudGVyIGFsdCB0ZXh0XCIgY2xhc3M9XCJpbnB1dC1maWVsZCB3LTEwMFwiIFsobmdNb2RlbCldPVwiaW1hZ2VEYXRhLmFsdFRleHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0XCI+V2hlbiB0aGUgaW1hZ2UgZmFpbHMgdG8gbG9hZCwgdGhpcyB0ZXh0IHdpbGwgYmUgZGlzcGxheWVkLjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImltYWdlIG1iLTIyXCIgKm5nSWY9XCJpbWFnZURhdGE/Lmhhc093blByb3BlcnR5KCdwb3NpdGlvbicpXCI+XHJcbiAgICAgIDxwIGNsYXNzPVwiaGVhZGluZyBtYi0xXCI+SW1hZ2UgUG9zaXRpb248L3A+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWFjdGlvblwiPlxyXG4gICAgICAgIDxsYWJlbD5Ib3Jpem9udGFsPC9sYWJlbD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LXN0YXJ0IGNwXCI+XHJcbiAgICAgICAgICA8aW5wdXQgW21pbl09XCJtaW5cIiBbbWF4XT1cIm1heFwiIHN0ZXA9XCI1XCIgdHlwZT1cInJhbmdlXCIgWyhuZ01vZGVsKV09XCJpbWFnZURhdGEucG9zaXRpb24ueFwiXHJcbiAgICAgICAgICAgIChpbnB1dCk9XCJob3Jpem9udGFsUG9zaXRpb24oKVwiIGNsYXNzPVwidy03NVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhvcml6b250YWwtYWN0aW9uXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiA1cHg7XCI+XHJcbiAgICAgICAgPGxhYmVsPlZlcnRpY2FsPC9sYWJlbD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LXN0YXJ0IGNwXCI+XHJcbiAgICAgICAgICA8aW5wdXQgW21pbl09XCJtaW5cIiBbbWF4XT1cIm1heFwiIHN0ZXA9XCI1XCIgdHlwZT1cInJhbmdlXCIgWyhuZ01vZGVsKV09XCJpbWFnZURhdGEucG9zaXRpb24ueVwiXHJcbiAgICAgICAgICAgIChpbnB1dCk9XCJob3Jpem9udGFsUG9zaXRpb24oKVwiIGNsYXNzPVwidy03NVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImdyb3VwcyBjcCBweC0zXCI+XHJcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHR5cGUgb2YgbGlua1R5cGVcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVHlwZScgOiB0eXBlLnR5cGUgPT09IHNlbGVjdGVkVHlwZX1cIlxyXG4gICAgICAgIChjbGljayk9XCJjaGFuZ2VUeXBlKHR5cGUudHlwZSlcIj57e3R5cGUudHlwZX19PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1jb250YWluZXIgbXQtMyBteC0zXCI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJsaW5rLmxpbmtUeXBlID09PSBSZWRpcmVjdGlvbkxpbmsuUGFnZVwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImlucHV0LWxhYmVsLTEgbXQtMyBtYi0yXCI+U2VsZWN0IFBhZ2U8L2xhYmVsPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wLWRvd24tY29udGFpbmVyIHctMTAwIGQtZmxleCBtYi0yXCI+XHJcbiAgICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwibGluay5wYWdlSWRcIiAoY2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiBzZWxlY3RlZD5TZWxlY3QgZnJvbSB5b3VyIGV4aXN0aW5nIHBhZ2VzPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHBhZ2Ugb2YgdGVtcGxhdGVQYWdlXCIgW3ZhbHVlXT1cInBhZ2UuaWRcIiBzdHlsZT1cInBhZGRpbmc6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAge3twYWdlLnBhZ2VOYW1lfX08L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRvd24tYXJyb3cgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+PGltZ1xyXG4gICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvMjY4NDEwYzE3NDIyODYwNTI5NDBEb3duJTIwMi5wbmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdlTmFtZSA9PSAnUHJvZHVjdCBMaXN0J1wiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaW5wdXQtbGFiZWwtMSBtdC0zIG1iLTJcIj5TZWxlY3QgQ29sbGVjdGlvbjwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcC1kb3duLWNvbnRhaW5lciB3LTEwMCBkLWZsZXggbWItMlwiPlxyXG4gICAgICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwiY29sbGVjdGlvblBhdGhcIiAobmdNb2RlbENoYW5nZSk9XCJhZGRDb2xsZWN0aW9uVG9QYXRoKClcIj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgc2VsZWN0ZWQ+U2VsZWN0IGZyb20geW91ciBleGlzdGluZyBwYWdlczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGNvbGwgb2YgY29sbGVjdGlvbkxpc3RcIiBzdHlsZT1cInBhZGRpbmc6IDEwcHg7XCIgW3ZhbHVlXT1cImNvbGwuY29sbGVjdGlvbk5hbWVcIj5cclxuICAgICAgICAgICAgICAgIHt7Y29sbD8uY29sbGVjdGlvbk5hbWV9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaW5wdXQtbGFiZWwtMSBtdC0zIG1iLTJcIj5TZWxlY3QgQ2F0ZWdvcnk8L2xhYmVsPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3AtZG93bi1jb250YWluZXIgdy0xMDAgZC1mbGV4IG1iLTJcIj5cclxuICAgICAgICAgICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cImNhdGVnb3J5UGF0aFwiIChuZ01vZGVsQ2hhbmdlKT1cImFkZENhdGVnb3J5VG9QYXRoKClcIj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgc2VsZWN0ZWQ+U2VsZWN0IGZyb20geW91ciBleGlzdGluZyBwYWdlczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGNvbGwgb2YgY2F0ZWdvcnlMaXN0XCIgc3R5bGU9XCJwYWRkaW5nOiAxMHB4O1wiIFt2YWx1ZV09XCJjb2xsLmNhdGVnb3J5TmFtZVwiPlxyXG4gICAgICAgICAgICAgICAge3tjb2xsPy5jYXRlZ29yeU5hbWV9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInN1Yi10ZXh0XCI+U2VsZWN0IGZyb20geW91ciBleGlzdGluZyBwYWdlczwvZGl2PiAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJsaW5rLmxpbmtUeXBlID09PSBSZWRpcmVjdGlvbkxpbmsuc2VjdGlvblwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cIm10LTMgbWItMiBpbnB1dC1sYWJlbC0xXCI+U2VjdGlvbjwvbGFiZWw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3AtZG93bi1jb250YWluZXIgdy0xMDAgZC1mbGV4IG1iLTJcIj5cclxuICAgICAgICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJsaW5rLnBhZ2VJZFwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgc2VsZWN0ZWQ+U2VsZWN0IHRoZSBTZWN0aW9uPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgdGVtcGxhdGVQYWdlWzBdPy5jb21wb25lbnRzXCIgW3ZhbHVlXT1cInNlY3Rpb24uaWRcIj57e3NlY3Rpb24uc2VjdGlvbk5hbWV9fVxyXG4gICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRvd24tYXJyb3cgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+PGltZ1xyXG4gICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvMjY4NDEwYzE3NDIyODYwNTI5NDBEb3duJTIwMi5wbmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMTBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJpbnB1dC1sYWJlbC0yXCI+T3BlbiBpbiBhIG5ldyBicm93c2VyIHRhYjwvbGFiZWw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbWwtYXV0b1wiPlxyXG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBzd2l0Y2gtYnRuIGN1cnNvci1wb2ludGVyXCIgdHlwZT1cImNoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJsaW5rLm5ld1RhYlwiXHJcbiAgICAgICAgICAgIHJvbGU9XCJzd2l0Y2hcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJsaW5rLmxpbmtUeXBlID09PSBSZWRpcmVjdGlvbkxpbmsuRXh0ZXJuYWwgfHwgbGluay5saW5rVHlwZSA9PT0gUmVkaXJlY3Rpb25MaW5rLkVtYWlsIHx8IGxpbmsubGlua1R5cGUgPT09IFJlZGlyZWN0aW9uTGluay5QaG9uZVwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cIm10LTMgbWItMiBpbnB1dC1sYWJlbC0xXCI+U2VsZWN0IHR5cGU8L2xhYmVsPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wLWRvd24tY29udGFpbmVyIHctMTAwIGQtZmxleCBtYi0yXCI+XHJcbiAgICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwibGluay5saW5rVHlwZVwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgc2VsZWN0ZWQ+U2VsZWN0IHRoZSBUeXBlPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHR5cGUgb2YgZXh0ZXJuYWxMaW5rVHlwZVwiIFt2YWx1ZV09XCJ0eXBlLnR5cGVcIj57e3R5cGUudHlwZX19PC9vcHRpb24+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb3duLWFycm93IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPjxpbWdcclxuICAgICAgICAgICAgICBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzI2ODQxMGMxNzQyMjg2MDUyOTQwRG93biUyMDIucG5nXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJpbnB1dC1sYWJlbCBtYi0yXCI+e3tsaW5rLmxpbmtUeXBlID09PSBSZWRpcmVjdGlvbkxpbmsuRXh0ZXJuYWwgPyAnV2Vic2l0ZScgOiBsaW5rLmxpbmtUeXBlID09PVxyXG4gICAgICAgICAgUmVkaXJlY3Rpb25MaW5rLkVtYWlsID8gJ0VtYWlsIEFkZHJlc3MnIDogJ1Bob25lIE51bWJlcid9fTwvbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dC10ZXh0XCIgWyhuZ01vZGVsKV09XCJsaW5rLnJlZGlyZWN0aW9uVXJsXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJsaW5rLmxpbmtUeXBlID09PSBSZWRpcmVjdGlvbkxpbmsuRXh0ZXJuYWwgPyAnZXhhbXBsZSA6IGh0dHBzOi8vZmFjZWJvb2suY29tJzogJydcIj5cclxuICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEuc2hvd0ljb25cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvbG9yIHB4LTMgbWItMyBkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiaW5wdXQtbGFiZWwtMSBtYi00IHctMTAwXCI+SWNvbiBDb2xvcjwvbGFiZWw+XHJcbiAgICAgIDxkaXYgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJpY29uRGF0YS5jb2xvclwiIGNsYXNzPVwiY3VzdG9tLWlucHV0XCIgKGNsaWNrKT1cImNvbG9ySW5wdXQuY2xpY2soKVwiPjwvZGl2PlxyXG4gICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgWyhuZ01vZGVsKV09XCJpY29uRGF0YS5jb2xvclwiIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUljb25Db2xvcigpXCIgY2xhc3M9XCJpbnB1dC10ZXh0IGQtbm9uZVwiXHJcbiAgICAgICAgI2NvbG9ySW5wdXQgLz5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJiYWNrZ3JvdW5kLW9uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBweC0zIG1iLTJcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiaW5wdXQtbGFiZWwtMVwiPlNob3cgQmFja2dyb3VuZDwvbGFiZWw+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG1sLWF1dG9cIj5cclxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IHN3aXRjaC1idG4gY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cImljb25EYXRhLnNob3dCYWNrZ3JvdW5kXCJcclxuICAgICAgICAgIHJvbGU9XCJzd2l0Y2hcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInRhYnMgZC1mbGV4IHB4LTMgZ2FwLTMgbWItMlwiICpuZ0lmPVwiaWNvbkRhdGEuc2hvd0JhY2tncm91bmRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRhYiBweC0zIHB5LTJcIiAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIiAoY2xpY2spPVwiaWNvbkRhdGEuYmFja2dyb3VuZFR5cGUgPSB0YWJcIlxyXG4gICAgICAgIFtjbGFzcy5zZWxlY3RlZFRhYl09XCJpY29uRGF0YS5iYWNrZ3JvdW5kVHlwZSA9PSB0YWJcIj5cclxuICAgICAgICB7e3RhYn19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJpY29uLWJhY2tncm91bmQgcHgtMyAgZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgKm5nSWY9XCJpY29uRGF0YS5zaG93QmFja2dyb3VuZFwiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJpbnB1dC1sYWJlbC0xIG1iLTMgdy0xMDBcIj5JY29uIEJhY2tncm91bmQ8L2xhYmVsPlxyXG4gICAgICA8ZGl2IFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaWNvbkRhdGE/LmJhY2tncm91bmRDb2xvclwiIGNsYXNzPVwiY3VzdG9tLWlucHV0IG1iLTJcIiAoY2xpY2spPVwiY29sb3JJbnB1dDEuY2xpY2soKVwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJjb2xvclwiIFsobmdNb2RlbCldPVwiaWNvbkRhdGEuYmFja2dyb3VuZENvbG9yXCIgY2xhc3M9XCJpbnB1dC10ZXh0IGQtbm9uZVwiICNjb2xvcklucHV0MSAvPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImljb24tYmFja2dyb3VuZCBweC0zICBkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAqbmdJZj1cImljb25EYXRhLnNob3dCYWNrZ3JvdW5kICYmIGljb25EYXRhLmJhY2tncm91bmRUeXBlID09PSAnR3JhZGllbnQnXCI+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImlucHV0LWxhYmVsLTEgbWItMyB3LTEwMFwiPkljb24gU2Vjb25kYXJ5IEJhY2tncm91bmQ8L2xhYmVsPlxyXG4gICAgICA8ZGl2IFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaWNvbkRhdGE/LnNlY29uZGFyeUNvbG9yXCIgY2xhc3M9XCJjdXN0b20taW5wdXRcIiAoY2xpY2spPVwiY29sb3JJbnB1dDIuY2xpY2soKVwiPjwvZGl2PlxyXG4gICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgWyhuZ01vZGVsKV09XCJpY29uRGF0YS5zZWNvbmRhcnlDb2xvclwiIGNsYXNzPVwiaW5wdXQtdGV4dCBkLW5vbmVcIiAjY29sb3JJbnB1dDIgLz5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbjwvc2VjdGlvbj4iXX0=
@@ -0,0 +1,68 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { SimpoElementsModule } from '../../elements/index';
4
+ import { SimpoComponentModule } from '../../components/index';
5
+ import { TextEditorComponent } from '../../elements/text-editor/text-editor.component';
6
+ import { BackgroundDirective } from '../../directive/background-directive';
7
+ import { HoverDirective } from '../../directive/hover-element-directive';
8
+ import { OverlayDirective } from '../../directive/overlay-directive';
9
+ import { BorderDirective } from '../../directive/border-directive';
10
+ import { SpacingHorizontalDirective } from '../../directive/spacing-horizontal.directive';
11
+ import { ContentFitDirective } from '../../directive/content-fit-directive';
12
+ import BaseSection from '../BaseSection';
13
+ import { ImageEditorDirective } from '../../directive/image-editor.directive';
14
+ import { IconDirectiveDirective } from '../../directive/icon-directive.directive';
15
+ import * as i0 from "@angular/core";
16
+ import * as i1 from "@angular/common";
17
+ import * as i2 from "../../elements/simpo-button/simpo-button.component";
18
+ import * as i3 from "../../elements/svg-divider/svg-divider.component";
19
+ import * as i4 from "../../components/hover-elements/hover-elements.component";
20
+ import * as i5 from "../../components/delete-hover-element/delete-hover-element.component";
21
+ export class CondensedAndGradientComponent extends BaseSection {
22
+ ngOnInit() {
23
+ this.content = this.data?.content;
24
+ this.style = this.data?.styles;
25
+ }
26
+ get stylesLayout() {
27
+ return { ...this.style?.layout };
28
+ }
29
+ getIconBackground(icon) {
30
+ if (icon?.backgroundType === 'Gradient') {
31
+ const direction = icon?.backgroundGradientDirection || 'to bottom';
32
+ return `linear-gradient(${direction}, ${icon?.backgroundColor}, ${icon?.secondaryColor})`;
33
+ }
34
+ return icon?.backgroundColor;
35
+ }
36
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CondensedAndGradientComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
37
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CondensedAndGradientComponent, isStandalone: true, selector: "simpo-condensed-and-gradient", inputs: { edit: "edit", data: "data", customClass: "customClass", nextComponentColor: "nextComponentColor", index: "index", delete: "delete" }, usesInheritance: true, ngImport: i0, template: "<section>\r\n <div [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\" class=\"sale-wrapper total-container\"\r\n [attr.style]=\"customClass\" [simpoBackground]=\"style?.background\">\r\n <div #mainContainer [id]=\"data?.id\" [simpoOverlay]=\"style?.background\" [simpoBorder]=\"style?.border\"\r\n [spacingHorizontal]=\"stylesLayout\" [simpoLayout]=\"style?.layout\" class=\"sale-bar\">\r\n\r\n <!-- LEFT -->\r\n <div class=\"left-section\">\r\n <div class=\"logo\"\r\n [style.background]=\"content?.icon?.showBackground ? getIconBackground(content?.icon) : 'transparent'\"\r\n [appImageEditor]=\"edit || false\" [iconData]=\"content?.icon\" [sectionId]=\"data?.id\" [showIcon]=\"true\">\r\n <div [iconId]=\"data?.id + (content?.icon?.id || '')\" [simpoIconDirective]=\"content?.icon\" class=\"w-75 h-75\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"text\">\r\n <div class=\"sale-text\">\r\n <simpo-text-editor [(value)]=\"content.inputText[0].value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n\r\n <div class=\"sale-description\">\r\n <simpo-text-editor [(value)]=\"content.inputText[1].value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- RIGHT BUTTON -->\r\n <div class=\"sale-action\" *ngIf=\"data?.action?.display\">\r\n <div *ngFor=\"let button of data?.action?.buttons\">\r\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\" [buttonId]=\"button.id\"\r\n [sectionId]=\"data?.id\" [color]=\"data?.styles?.background?.accentColor\" [edit]=\"edit\"\r\n [backgroundInfo]=\"data?.styles?.background\">\r\n </app-button-element>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Divider -->\r\n <ng-container *ngIf=\"style?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"style?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\r\n\r\n <!-- EDIT SELECTOR -->\r\n <div [ngClass]=\"{ hover_effect: edit }\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n\r\n <!-- DELETE -->\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{ hover_effect: delete }\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n </div>\r\n</section>", styles: [".sale-wrapper{width:100%}.total-container{height:auto;position:relative}.sale-bar{width:100%;color:#fff;display:flex;justify-content:space-between;align-items:center;padding:28px 50px}.left-section{display:flex;align-items:center;gap:14px;width:47%;min-width:320px}.sale-text{font-size:26px;font-weight:600;width:100%;display:block;text-align:left}.sale-description{width:100%;display:block;font-size:16px;opacity:.9;text-align:left;min-height:20px}.text{flex:1;width:100%;min-width:260px;text-align:left}.sale-timer{display:flex;gap:18px}.left-section{display:flex;justify-content:space-between;width:47%}.logo{width:60px;height:60px;min-width:60px;border-radius:50%;display:flex;align-items:center;justify-content:center}.time-card{background-color:#fff;color:#1c2a39;padding:6px 14px;border-radius:8px;text-align:center;min-width:60px}.time-card span{display:block;font-size:18px;font-weight:600}.time-card small{font-size:11px;letter-spacing:1px;font-weight:500}.sale-action{display:flex;align-items:center;gap:20px}.shop-button{background-color:#fff;color:#1c2a39;border:none;padding:5px 14px;border-radius:30px;font-size:14px;font-weight:500;cursor:pointer;transition:.3s ease}.shop-button:hover{background-color:#f2f2f2}.close-icon{font-size:20px;cursor:pointer;opacity:.8}.close-icon:hover{opacity:1}@media (max-width: 768px){.sale-bar{flex-direction:column;align-items:center;text-align:center;padding:20px;gap:18px}.left-section{width:100%;flex-direction:row;align-items:center;gap:12px}.logo{width:22%;height:60px}.editor-container{text-align:start}.text{text-align:start;width:100%}.sale-text{font-size:20px}.sale-description{font-size:14px;opacity:.9}.sale-action{width:100%;justify-content:center}}@media (min-width: 769px) and (max-width: 1024px){.sale-bar{padding:22px 30px;gap:20px}.left-section{width:65%;gap:15px}.logo{width:55px;height:55px}.sale-text{font-size:22px}.sale-description{font-size:15px}.sale-action{align-items:center}}\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: "ngmodule", type: SimpoElementsModule }, { kind: "component", type: i2.SimpoButtonComponent, selector: "app-button-element", inputs: ["buttonContent", "buttonStyle", "buttonId", "color", "sectionId", "edit", "backgroundInfo"] }, { kind: "component", type: i3.SvgDividerComponent, selector: "simpo-svg-divider", inputs: ["dividerType", "color"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i4.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i5.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "sectionId", "label", "type"], outputs: ["valueChange"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "directive", type: OverlayDirective, selector: "[simpoOverlay]", inputs: ["simpoOverlay"] }, { kind: "directive", type: SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }, { kind: "directive", type: BorderDirective, selector: "[simpoBorder]", inputs: ["simpoBorder"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: ImageEditorDirective, selector: "[appImageEditor]", inputs: ["appImageEditor", "imageData", "sectionId", "showIcon", "iconData"] }, { kind: "directive", type: IconDirectiveDirective, selector: "[simpoIconDirective]", inputs: ["simpoIconDirective", "iconId"] }] }); }
38
+ }
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CondensedAndGradientComponent, decorators: [{
40
+ type: Component,
41
+ args: [{ selector: 'simpo-condensed-and-gradient', standalone: true, imports: [
42
+ CommonModule,
43
+ SimpoElementsModule,
44
+ SimpoComponentModule,
45
+ TextEditorComponent,
46
+ BackgroundDirective,
47
+ HoverDirective,
48
+ OverlayDirective,
49
+ SpacingHorizontalDirective,
50
+ BorderDirective,
51
+ ContentFitDirective,
52
+ ImageEditorDirective,
53
+ IconDirectiveDirective
54
+ ], template: "<section>\r\n <div [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\" class=\"sale-wrapper total-container\"\r\n [attr.style]=\"customClass\" [simpoBackground]=\"style?.background\">\r\n <div #mainContainer [id]=\"data?.id\" [simpoOverlay]=\"style?.background\" [simpoBorder]=\"style?.border\"\r\n [spacingHorizontal]=\"stylesLayout\" [simpoLayout]=\"style?.layout\" class=\"sale-bar\">\r\n\r\n <!-- LEFT -->\r\n <div class=\"left-section\">\r\n <div class=\"logo\"\r\n [style.background]=\"content?.icon?.showBackground ? getIconBackground(content?.icon) : 'transparent'\"\r\n [appImageEditor]=\"edit || false\" [iconData]=\"content?.icon\" [sectionId]=\"data?.id\" [showIcon]=\"true\">\r\n <div [iconId]=\"data?.id + (content?.icon?.id || '')\" [simpoIconDirective]=\"content?.icon\" class=\"w-75 h-75\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"text\">\r\n <div class=\"sale-text\">\r\n <simpo-text-editor [(value)]=\"content.inputText[0].value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n\r\n <div class=\"sale-description\">\r\n <simpo-text-editor [(value)]=\"content.inputText[1].value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- RIGHT BUTTON -->\r\n <div class=\"sale-action\" *ngIf=\"data?.action?.display\">\r\n <div *ngFor=\"let button of data?.action?.buttons\">\r\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\" [buttonId]=\"button.id\"\r\n [sectionId]=\"data?.id\" [color]=\"data?.styles?.background?.accentColor\" [edit]=\"edit\"\r\n [backgroundInfo]=\"data?.styles?.background\">\r\n </app-button-element>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Divider -->\r\n <ng-container *ngIf=\"style?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"style?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\r\n\r\n <!-- EDIT SELECTOR -->\r\n <div [ngClass]=\"{ hover_effect: edit }\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n\r\n <!-- DELETE -->\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{ hover_effect: delete }\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n </div>\r\n</section>", styles: [".sale-wrapper{width:100%}.total-container{height:auto;position:relative}.sale-bar{width:100%;color:#fff;display:flex;justify-content:space-between;align-items:center;padding:28px 50px}.left-section{display:flex;align-items:center;gap:14px;width:47%;min-width:320px}.sale-text{font-size:26px;font-weight:600;width:100%;display:block;text-align:left}.sale-description{width:100%;display:block;font-size:16px;opacity:.9;text-align:left;min-height:20px}.text{flex:1;width:100%;min-width:260px;text-align:left}.sale-timer{display:flex;gap:18px}.left-section{display:flex;justify-content:space-between;width:47%}.logo{width:60px;height:60px;min-width:60px;border-radius:50%;display:flex;align-items:center;justify-content:center}.time-card{background-color:#fff;color:#1c2a39;padding:6px 14px;border-radius:8px;text-align:center;min-width:60px}.time-card span{display:block;font-size:18px;font-weight:600}.time-card small{font-size:11px;letter-spacing:1px;font-weight:500}.sale-action{display:flex;align-items:center;gap:20px}.shop-button{background-color:#fff;color:#1c2a39;border:none;padding:5px 14px;border-radius:30px;font-size:14px;font-weight:500;cursor:pointer;transition:.3s ease}.shop-button:hover{background-color:#f2f2f2}.close-icon{font-size:20px;cursor:pointer;opacity:.8}.close-icon:hover{opacity:1}@media (max-width: 768px){.sale-bar{flex-direction:column;align-items:center;text-align:center;padding:20px;gap:18px}.left-section{width:100%;flex-direction:row;align-items:center;gap:12px}.logo{width:22%;height:60px}.editor-container{text-align:start}.text{text-align:start;width:100%}.sale-text{font-size:20px}.sale-description{font-size:14px;opacity:.9}.sale-action{width:100%;justify-content:center}}@media (min-width: 769px) and (max-width: 1024px){.sale-bar{padding:22px 30px;gap:20px}.left-section{width:65%;gap:15px}.logo{width:55px;height:55px}.sale-text{font-size:22px}.sale-description{font-size:15px}.sale-action{align-items:center}}\n"] }]
55
+ }], propDecorators: { edit: [{
56
+ type: Input
57
+ }], data: [{
58
+ type: Input
59
+ }], customClass: [{
60
+ type: Input
61
+ }], nextComponentColor: [{
62
+ type: Input
63
+ }], index: [{
64
+ type: Input
65
+ }], delete: [{
66
+ type: Input
67
+ }] } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGVuc2VkLWFuZC1ncmFkaWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL2NvbmRlbnNlZC1hbmQtZ3JhZGllbnQvY29uZGVuc2VkLWFuZC1ncmFkaWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL2NvbmRlbnNlZC1hbmQtZ3JhZGllbnQvY29uZGVuc2VkLWFuZC1ncmFkaWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFFdkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMxRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUc1RSxPQUFPLFdBQVcsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7OztBQXNCbEYsTUFBTSxPQUFPLDZCQUE4QixTQUFRLFdBQVc7SUFZNUQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBUztRQUN6QixJQUFJLElBQUksRUFBRSxjQUFjLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDeEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxFQUFFLDJCQUEyQixJQUFJLFdBQVcsQ0FBQztZQUNuRSxPQUFPLG1CQUFtQixTQUFTLEtBQUssSUFBSSxFQUFFLGVBQWUsS0FBSyxJQUFJLEVBQUUsY0FBYyxHQUFHLENBQUM7UUFDNUYsQ0FBQztRQUNELE9BQU8sSUFBSSxFQUFFLGVBQWUsQ0FBQztJQUMvQixDQUFDOytHQTNCVSw2QkFBNkI7bUdBQTdCLDZCQUE2QiwrUEM1QzFDLHlrRkFxRFUsNDlERHpCTixZQUFZLDZWQUNaLG1CQUFtQixnVkFDbkIsb0JBQW9CLG9XQUNwQixtQkFBbUIscUpBQ25CLG1CQUFtQiwwR0FDbkIsY0FBYyxnRkFDZCxnQkFBZ0IscUZBQ2hCLDBCQUEwQiwyR0FDMUIsZUFBZSxtRkFDZixtQkFBbUIsbUZBQ25CLG9CQUFvQiwySUFDcEIsc0JBQXNCOzs0RkFLYiw2QkFBNkI7a0JBcEJ6QyxTQUFTOytCQUNFLDhCQUE4QixjQUM1QixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQiwwQkFBMEI7d0JBQzFCLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLHNCQUFzQjtxQkFDdkI7OEJBTVEsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBTaW1wb0VsZW1lbnRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBUZXh0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvdGV4dC1lZGl0b3IvdGV4dC1lZGl0b3IuY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvb3ZlcmxheS1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCb3JkZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYm9yZGVyLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3NwYWNpbmctaG9yaXpvbnRhbC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250ZW50Rml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtZml0LWRpcmVjdGl2ZSc7XHJcblxyXG5pbXBvcnQgeyBCYWNrZ3JvdW5kTW9kZWwsIExheU91dE1vZGVsIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcclxuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uL0Jhc2VTZWN0aW9uJztcclxuXHJcbmltcG9ydCB7IEltYWdlRWRpdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2ltYWdlLWVkaXRvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBJY29uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2ljb24tZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLWNvbmRlbnNlZC1hbmQtZ3JhZGllbnQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgU2ltcG9FbGVtZW50c01vZHVsZSxcclxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgVGV4dEVkaXRvckNvbXBvbmVudCxcclxuICAgIEJhY2tncm91bmREaXJlY3RpdmUsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIE92ZXJsYXlEaXJlY3RpdmUsXHJcbiAgICBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSxcclxuICAgIEJvcmRlckRpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBJbWFnZUVkaXRvckRpcmVjdGl2ZSxcclxuICAgIEljb25EaXJlY3RpdmVEaXJlY3RpdmVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25kZW5zZWQtYW5kLWdyYWRpZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY29uZGVuc2VkLWFuZC1ncmFkaWVudC5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29uZGVuc2VkQW5kR3JhZGllbnRDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIGVkaXQ/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRhdGE/OiBhbnk7XHJcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3M/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbmV4dENvbXBvbmVudENvbG9yPzogQmFja2dyb3VuZE1vZGVsO1xyXG4gIEBJbnB1dCgpIGluZGV4PzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZT86IGJvb2xlYW47XHJcblxyXG4gIHN0eWxlOiBhbnk7XHJcbiAgY29udGVudDogYW55O1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29udGVudCA9IHRoaXMuZGF0YT8uY29udGVudDtcclxuICAgIHRoaXMuc3R5bGUgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICB9XHJcblxyXG4gIGdldCBzdHlsZXNMYXlvdXQoKTogTGF5T3V0TW9kZWwge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdHlsZT8ubGF5b3V0IH07XHJcbiAgfVxyXG5cclxuICBnZXRJY29uQmFja2dyb3VuZChpY29uOiBhbnkpIHtcclxuICAgIGlmIChpY29uPy5iYWNrZ3JvdW5kVHlwZSA9PT0gJ0dyYWRpZW50Jykge1xyXG4gICAgICBjb25zdCBkaXJlY3Rpb24gPSBpY29uPy5iYWNrZ3JvdW5kR3JhZGllbnREaXJlY3Rpb24gfHwgJ3RvIGJvdHRvbSc7XHJcbiAgICAgIHJldHVybiBgbGluZWFyLWdyYWRpZW50KCR7ZGlyZWN0aW9ufSwgJHtpY29uPy5iYWNrZ3JvdW5kQ29sb3J9LCAke2ljb24/LnNlY29uZGFyeUNvbG9yfSlgO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGljb24/LmJhY2tncm91bmRDb2xvcjtcclxuICB9XHJcbn1cclxuIiwiPHNlY3Rpb24+XHJcbiAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIiBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiIGNsYXNzPVwic2FsZS13cmFwcGVyIHRvdGFsLWNvbnRhaW5lclwiXHJcbiAgICBbYXR0ci5zdHlsZV09XCJjdXN0b21DbGFzc1wiIFtzaW1wb0JhY2tncm91bmRdPVwic3R5bGU/LmJhY2tncm91bmRcIj5cclxuICAgIDxkaXYgI21haW5Db250YWluZXIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvT3ZlcmxheV09XCJzdHlsZT8uYmFja2dyb3VuZFwiIFtzaW1wb0JvcmRlcl09XCJzdHlsZT8uYm9yZGVyXCJcclxuICAgICAgW3NwYWNpbmdIb3Jpem9udGFsXT1cInN0eWxlc0xheW91dFwiIFtzaW1wb0xheW91dF09XCJzdHlsZT8ubGF5b3V0XCIgY2xhc3M9XCJzYWxlLWJhclwiPlxyXG5cclxuICAgICAgPCEtLSBMRUZUIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdC1zZWN0aW9uXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxvZ29cIlxyXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiY29udGVudD8uaWNvbj8uc2hvd0JhY2tncm91bmQgPyBnZXRJY29uQmFja2dyb3VuZChjb250ZW50Py5pY29uKSA6ICd0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgW2FwcEltYWdlRWRpdG9yXT1cImVkaXQgfHwgZmFsc2VcIiBbaWNvbkRhdGFdPVwiY29udGVudD8uaWNvblwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbc2hvd0ljb25dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBbaWNvbklkXT1cImRhdGE/LmlkICsgKGNvbnRlbnQ/Lmljb24/LmlkIHx8ICcnKVwiIFtzaW1wb0ljb25EaXJlY3RpdmVdPVwiY29udGVudD8uaWNvblwiIGNsYXNzPVwidy03NSBoLTc1XCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYWxlLXRleHRcIj5cclxuICAgICAgICAgICAgPHNpbXBvLXRleHQtZWRpdG9yIFsodmFsdWUpXT1cImNvbnRlbnQuaW5wdXRUZXh0WzBdLnZhbHVlXCIgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNhbGUtZGVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgPHNpbXBvLXRleHQtZWRpdG9yIFsodmFsdWUpXT1cImNvbnRlbnQuaW5wdXRUZXh0WzFdLnZhbHVlXCIgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBSSUdIVCBCVVRUT04gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzYWxlLWFjdGlvblwiICpuZ0lmPVwiZGF0YT8uYWN0aW9uPy5kaXNwbGF5XCI+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGRhdGE/LmFjdGlvbj8uYnV0dG9uc1wiPlxyXG4gICAgICAgICAgPGFwcC1idXR0b24tZWxlbWVudCBbYnV0dG9uQ29udGVudF09XCJidXR0b24uY29udGVudFwiIFtidXR0b25TdHlsZV09XCJidXR0b24uc3R5bGVzXCIgW2J1dHRvbklkXT1cImJ1dHRvbi5pZFwiXHJcbiAgICAgICAgICAgIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIFtlZGl0XT1cImVkaXRcIlxyXG4gICAgICAgICAgICBbYmFja2dyb3VuZEluZm9dPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kXCI+XHJcbiAgICAgICAgICA8L2FwcC1idXR0b24tZWxlbWVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIERpdmlkZXIgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3R5bGU/LmRldmlkZXI/LmRpc3BsYXlcIj5cclxuICAgICAgPHNpbXBvLXN2Zy1kaXZpZGVyIFtkaXZpZGVyVHlwZV09XCJzdHlsZT8uZGV2aWRlcj8uZGV2aWRlclR5cGVcIlxyXG4gICAgICAgIFtjb2xvcl09XCJuZXh0Q29tcG9uZW50Q29sb3I/LmNvbG9yXCI+PC9zaW1wby1zdmctZGl2aWRlcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gRURJVCBTRUxFQ1RPUiAtLT5cclxuICAgIDxkaXYgW25nQ2xhc3NdPVwieyBob3Zlcl9lZmZlY3Q6IGVkaXQgfVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIERFTEVURSAtLT5cclxuICAgIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieyBob3Zlcl9lZmZlY3Q6IGRlbGV0ZSB9XCI+XHJcbiAgICAgIDxzaW1wby1kZWxldGUtaG92ZXItZWxlbWVudCBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCI+PC9zaW1wby1kZWxldGUtaG92ZXItZWxlbWVudD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+Il19