simpo-component-library 3.6.81 → 3.6.83
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.
- package/esm2022/lib/components/hover-elements/hover-elements.component.mjs +3 -3
- package/esm2022/lib/directive/alignment.directive.mjs +23 -0
- package/esm2022/lib/directive/border-directive.mjs +2 -2
- package/esm2022/lib/directive/borderlessImage.directive.mjs +4 -1
- package/esm2022/lib/directive/button-directive.directive.mjs +2 -2
- package/esm2022/lib/directive/content-title-spacing.directive.mjs +4 -4
- package/esm2022/lib/directive/height.directive.mjs +29 -0
- package/esm2022/lib/directive/hover-animation.directive.mjs +8 -1
- package/esm2022/lib/directive/image-editor.directive.mjs +5 -2
- package/esm2022/lib/directive/spacing.directive.mjs +29 -0
- package/esm2022/lib/elements/below-image-card/below-image-card.component.mjs +9 -4
- package/esm2022/lib/elements/covering-image-card/covering-image-card.component.mjs +8 -4
- package/esm2022/lib/elements/editor-service.service.mjs +2 -2
- package/esm2022/lib/elements/pricing-s1/pricing-s1.component.mjs +3 -3
- package/esm2022/lib/elements/text-editor/text-editor.component.mjs +3 -3
- package/esm2022/lib/elements/top-of-image-card/top-of-image-card.component.mjs +3 -3
- package/esm2022/lib/sections/appointment-form/appointment-form.component.mjs +12 -7
- package/esm2022/lib/sections/banner-carousel/banner-carousel.component.mjs +6 -7
- package/esm2022/lib/sections/banner-grid-section/banner-grid-section.component.mjs +41 -6
- package/esm2022/lib/sections/banner-section/banner-section.component.mjs +3 -3
- package/esm2022/lib/sections/choose-us-section/choose-us-section.component.mjs +6 -4
- package/esm2022/lib/sections/contact-us/contact-us.component.mjs +3 -3
- package/esm2022/lib/sections/faq-section/faq-section.component.mjs +4 -4
- package/esm2022/lib/sections/header-section/header-section.component.mjs +3 -3
- package/esm2022/lib/sections/header-text/header-text.component.mjs +3 -3
- package/esm2022/lib/sections/header-text/header-text.model.mjs +1 -1
- package/esm2022/lib/sections/image-section/image-section.component.mjs +9 -4
- package/esm2022/lib/sections/logo-gallery/logo-gallery.component.mjs +9 -4
- package/esm2022/lib/sections/logo-showcase/logo-showcase.component.mjs +3 -3
- package/esm2022/lib/sections/moving-text/moving-text.component.mjs +50 -52
- package/esm2022/lib/sections/new-services/new-services.component.mjs +3 -3
- package/esm2022/lib/sections/new-testimonials/new-testimonials.component.mjs +11 -4
- package/esm2022/lib/sections/process-modern/process-modern.component.mjs +3 -3
- package/esm2022/lib/sections/process-section/process-section.component.mjs +3 -3
- package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.component.mjs +6 -4
- package/esm2022/lib/sections/registration-form/registration-form.component.mjs +4 -4
- package/esm2022/lib/sections/service-section/service-section.component.mjs +3 -3
- package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.component.mjs +6 -3
- package/esm2022/lib/sections/testimonial-section/testimonial-section.component.mjs +18 -3
- package/esm2022/lib/sections/text-image-section/text-image-section.component.mjs +3 -3
- package/esm2022/lib/styles/index.mjs +8 -7
- package/esm2022/lib/styles/style.model.mjs +3 -2
- package/esm2022/lib/styles/types.mjs +1 -1
- package/esm2022/public-api.mjs +4 -1
- package/fesm2022/simpo-component-library.mjs +564 -403
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/directive/alignment.directive.d.ts +11 -0
- package/lib/directive/height.directive.d.ts +11 -0
- package/lib/directive/spacing.directive.d.ts +12 -0
- package/lib/elements/below-image-card/below-image-card.component.d.ts +3 -0
- package/lib/elements/covering-image-card/covering-image-card.component.d.ts +3 -0
- package/lib/elements/link-editor/link-editor.component.d.ts +1 -1
- package/lib/sections/banner-carousel/banner-carousel.component.d.ts +2 -2
- package/lib/sections/banner-grid-section/banner-grid-section.component.d.ts +7 -1
- package/lib/sections/carousel-banner/carousel-banner.component.d.ts +1 -1
- package/lib/sections/header-text/header-text.model.d.ts +2 -1
- package/lib/sections/image-section/image-section.component.d.ts +4 -3
- package/lib/sections/logo-gallery/logo-gallery.component.d.ts +2 -1
- package/lib/sections/logo-showcase/logo-showcase.component.d.ts +1 -1
- package/lib/sections/moving-text/moving-text.component.d.ts +11 -10
- package/lib/sections/new-testimonials/new-testimonials.component.d.ts +2 -1
- package/lib/sections/testimonial-fullwidth/testimonial-fullwidth.component.d.ts +1 -0
- package/lib/sections/testimonial-section/testimonial-section.component.d.ts +1 -0
- package/lib/styles/index.d.ts +2 -7
- package/lib/styles/style.model.d.ts +1 -0
- package/lib/styles/types.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +3 -0
- package/simpo-component-library-3.6.83.tgz +0 -0
- package/simpo-component-library-3.6.81.tgz +0 -0
@@ -328,7 +328,7 @@ export class TextEditorComponent {
|
|
328
328
|
}
|
329
329
|
}
|
330
330
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: TextEditorComponent, deps: [{ token: i1.ElementServiceService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
|
331
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: TextEditorComponent, isStandalone: true, selector: "simpo-text-editor", inputs: { value: "value", editable: "editable", sectionId: "sectionId", label: "label" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }, { propertyName: "editor", first: true, predicate: ["editor"], descendants: true }, { propertyName: "colorPicker", first: true, predicate: ["colorPicker"], descendants: true }, { propertyName: "parentElement", first: true, predicate: ["parentElement"], descendants: true }, { propertyName: "suggestion", first: true, predicate: ["suggestion"], descendants: true }], ngImport: i0, template: "<div class=\"editor-container\" [ngClass]=\"{'border': editable}\" #parentElement>\r\n <div [contenteditable]=\"editable\" [(ngModel)]=\"value\" class=\"editable-text\" (mouseup)=\"showToolbar($event)\" #editor\r\n (ngModelChange)=\"updateText($event)\" (mousedown)=\"hideToolbar($event)\">\r\n </div>\r\n\r\n <div class=\"toolbar\" *ngIf=\"editable && show\" [ngStyle]=\"{'top.px': toolbarY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" #toolbar >\r\n <!-- <select class=\"tool\" (change)=\"onFormatChange($event)\" [(ngModel)]=\"toolbarData.selectedHeading\">\r\n <option value=\"H1\">Heading1</option>\r\n <option value=\"H2\">Heading2</option>\r\n <option value=\"H3\">Heading3</option>\r\n <option value=\"div\">Text</option>\r\n </select> -->\r\n\r\n <button class=\"tool\" (click)=\"formatText('bold')\" [ngClass]=\"{'selectedTool': toolbarData.isBold}\"><mat-icon> format_bold</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('italic')\" [ngClass]=\"{'selectedTool': toolbarData.isItalic}\"><mat-icon> format_italic</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('underline')\" [ngClass]=\"{'selectedTool': toolbarData.isUnderlined}\"><mat-icon> format_underlined</mat-icon></button>\r\n\r\n <select class=\"tool\" (change)=\"changeFontSize($event)\" [(ngModel)]=\"toolbarData.selectedSize\">\r\n <option value=\"\" selected>Default</option>\r\n <option value=\"clamp(0.75rem, 2vw, 1rem)\">Small</option>\r\n <option value=\"clamp(1rem, 3vw, 1.5rem)\">Medium</option>\r\n <option value=\"clamp(1.25rem, 4vw, 2rem)\">Large</option>\r\n <option value=\"clamp(2rem, 5vw, 3rem)\">Extra Large</option>\r\n <option value=\"clamp(3.1rem, 7vw, 4.5rem)\">Huge</option>\r\n </select>\r\n\r\n <button class=\"tool\" (click)=\"formatText('insertOrderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertOrderedList'}\"><mat-icon>format_list_numbered</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('insertUnorderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertUnorderedList'}\"><mat-icon> format_list_bulleted</mat-icon></button>\r\n\r\n <button class=\"tool\" (click)=\"formatText('justifyLeft')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyLeft'}\"><mat-icon> format_align_left</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyCenter')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyCenter'}\"><mat-icon> format_align_center</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyRight')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyRight'}\"><mat-icon> format_align_right</mat-icon></button>\r\n\r\n <div class=\"colorType\">\r\n <button class=\"solid\" [ngClass]=\"{'solidColorSelected': selectedColorType === 'SOLID'}\" (click)=\"selectedColorType = 'SOLID'\">Solid</button>\r\n <button class=\"gradient\" [ngClass]=\"{'gradientColorSelected': selectedColorType === 'GRADIENT'}\" (click)=\"selectedColorType = 'GRADIENT'\">Gradient</button>\r\n </div>\r\n\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker()\" *ngIf=\"selectedColorType === 'SOLID'\">\r\n <mat-icon>format_color_text</mat-icon>\r\n <input type=\"color\" #colorPicker class=\"hidden-color-picker\" (input)=\"changeColor($event)\" [(ngModel)]=\"toolbarData.selectedColor\">\r\n </button>\r\n \r\n <div class=\"colorType\" *ngIf=\"selectedColorType === 'GRADIENT'\">\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); primaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"primaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #primaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"primaryColor\">\r\n </button>\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); secondaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"secondaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #secondaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"secondaryColor\">\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"suggestion-box\" [ngStyle]=\"{'top.px': suggestionY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" *ngIf=\"editable && label && showSuggestion\" #suggestion>\r\n <div class=\"suggestion\" (click)=\"regenerateText()\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/887493c1742273970151Frame%201244831740.png\" alt=\"\">\r\n <div>\r\n <p class=\"name\">Regenerate Text</p>\r\n <p class=\"desc\">Get a fresh variation of a current text</p>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".toolbar,.tool option{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}.editor-container{position:relative;display:inline-block;overflow:visible;width:100%}.editor-container div{outline:none}.editable-text{padding:4px;cursor:text}.toolbar{position:absolute;background:#fff;box-shadow:0 2px 5px #0003;display:flex;gap:5px;align-items:center;z-index:100000;box-shadow:#00000029 0 1px 4px;padding:5px 15px;border-radius:22px}.toolbar:hover{border:1px solid #ccc}.toolbar button{background:none;border:none;padding:5px 8px;cursor:pointer;font-weight:700;display:flex;align-items:center}.toolbar button:hover{background:#ddd}.toolbar select{padding:3px;border:none;outline:none;font-size:14px;font-weight:600;cursor:pointer}.toolbar input[type=color]{border:none;width:30px;height:30px;padding:0;cursor:pointer}.color-picker-btn{position:relative;background:none;border:none;cursor:pointer;padding:5px}.hidden-color-picker{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;cursor:pointer}.border{border:
|
331
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: TextEditorComponent, isStandalone: true, selector: "simpo-text-editor", inputs: { value: "value", editable: "editable", sectionId: "sectionId", label: "label" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }, { propertyName: "editor", first: true, predicate: ["editor"], descendants: true }, { propertyName: "colorPicker", first: true, predicate: ["colorPicker"], descendants: true }, { propertyName: "parentElement", first: true, predicate: ["parentElement"], descendants: true }, { propertyName: "suggestion", first: true, predicate: ["suggestion"], descendants: true }], ngImport: i0, template: "<div class=\"editor-container\" [ngClass]=\"{'border': editable}\" #parentElement>\r\n <div [contenteditable]=\"editable\" [(ngModel)]=\"value\" class=\"editable-text\" (mouseup)=\"showToolbar($event)\" #editor\r\n (ngModelChange)=\"updateText($event)\" (mousedown)=\"hideToolbar($event)\">\r\n </div>\r\n\r\n <div class=\"toolbar\" *ngIf=\"editable && show\" [ngStyle]=\"{'top.px': toolbarY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" #toolbar >\r\n <!-- <select class=\"tool\" (change)=\"onFormatChange($event)\" [(ngModel)]=\"toolbarData.selectedHeading\">\r\n <option value=\"H1\">Heading1</option>\r\n <option value=\"H2\">Heading2</option>\r\n <option value=\"H3\">Heading3</option>\r\n <option value=\"div\">Text</option>\r\n </select> -->\r\n\r\n <button class=\"tool\" (click)=\"formatText('bold')\" [ngClass]=\"{'selectedTool': toolbarData.isBold}\"><mat-icon> format_bold</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('italic')\" [ngClass]=\"{'selectedTool': toolbarData.isItalic}\"><mat-icon> format_italic</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('underline')\" [ngClass]=\"{'selectedTool': toolbarData.isUnderlined}\"><mat-icon> format_underlined</mat-icon></button>\r\n\r\n <select class=\"tool\" (change)=\"changeFontSize($event)\" [(ngModel)]=\"toolbarData.selectedSize\">\r\n <option value=\"\" selected>Default</option>\r\n <option value=\"clamp(0.75rem, 2vw, 1rem)\">Small</option>\r\n <option value=\"clamp(1rem, 3vw, 1.5rem)\">Medium</option>\r\n <option value=\"clamp(1.25rem, 4vw, 2rem)\">Large</option>\r\n <option value=\"clamp(2rem, 5vw, 3rem)\">Extra Large</option>\r\n <option value=\"clamp(3.1rem, 7vw, 4.5rem)\">Huge</option>\r\n </select>\r\n\r\n <button class=\"tool\" (click)=\"formatText('insertOrderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertOrderedList'}\"><mat-icon>format_list_numbered</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('insertUnorderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertUnorderedList'}\"><mat-icon> format_list_bulleted</mat-icon></button>\r\n\r\n <button class=\"tool\" (click)=\"formatText('justifyLeft')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyLeft'}\"><mat-icon> format_align_left</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyCenter')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyCenter'}\"><mat-icon> format_align_center</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyRight')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyRight'}\"><mat-icon> format_align_right</mat-icon></button>\r\n\r\n <div class=\"colorType\">\r\n <button class=\"solid\" [ngClass]=\"{'solidColorSelected': selectedColorType === 'SOLID'}\" (click)=\"selectedColorType = 'SOLID'\">Solid</button>\r\n <button class=\"gradient\" [ngClass]=\"{'gradientColorSelected': selectedColorType === 'GRADIENT'}\" (click)=\"selectedColorType = 'GRADIENT'\">Gradient</button>\r\n </div>\r\n\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker()\" *ngIf=\"selectedColorType === 'SOLID'\">\r\n <mat-icon>format_color_text</mat-icon>\r\n <input type=\"color\" #colorPicker class=\"hidden-color-picker\" (input)=\"changeColor($event)\" [(ngModel)]=\"toolbarData.selectedColor\">\r\n </button>\r\n \r\n <div class=\"colorType\" *ngIf=\"selectedColorType === 'GRADIENT'\">\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); primaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"primaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #primaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"primaryColor\">\r\n </button>\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); secondaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"secondaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #secondaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"secondaryColor\">\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"suggestion-box\" [ngStyle]=\"{'top.px': suggestionY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" *ngIf=\"editable && label && showSuggestion\" #suggestion>\r\n <div class=\"suggestion\" (click)=\"regenerateText()\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/887493c1742273970151Frame%201244831740.png\" alt=\"\">\r\n <div>\r\n <p class=\"name\">Regenerate Text</p>\r\n <p class=\"desc\">Get a fresh variation of a current text</p>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".toolbar,.tool option{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}.editor-container{position:relative;display:inline-block;overflow:visible;width:100%}.editor-container div{outline:none}.editable-text{padding:4px;cursor:text}.toolbar{position:absolute;background:#fff;box-shadow:0 2px 5px #0003;display:flex;gap:5px;align-items:center;z-index:100000;box-shadow:#00000029 0 1px 4px;padding:5px 15px;border-radius:22px}.toolbar:hover{border:1px solid #ccc}.toolbar button{background:none;border:none;padding:5px 8px;cursor:pointer;font-weight:700;display:flex;align-items:center}.toolbar button:hover{background:#ddd}.toolbar select{padding:3px;border:none;outline:none;font-size:14px;font-weight:600;cursor:pointer}.toolbar input[type=color]{border:none;width:30px;height:30px;padding:0;cursor:pointer}.color-picker-btn{position:relative;background:none;border:none;cursor:pointer;padding:5px}.hidden-color-picker{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;cursor:pointer}.border{border:1px solid #E9E9E9!important;border-radius:8px}.selectedTool{background:var(--primary-bg-color)!important;color:#fff;border-radius:5px}p{margin-bottom:0rem!important}.suggestion-box{position:absolute;background:#fff;border:1px solid #ccc;box-shadow:0 2px 5px #0003;z-index:10000;box-shadow:#00000029 0 1px 4px;padding:5px 15px;border-radius:10px}.suggestion{display:flex;gap:10px;width:307px;align-items:center;cursor:pointer}.suggestion img{border-radius:5px;width:32px;height:32px;background:#faf1fc;padding:3px}.suggestion .name{color:#000;font-family:var(--primary-font-family)}.suggestion .desc{color:#000;font-size:12px;color:#918585;font-family:var(--primary-font-family)}.colorType{display:flex;border:1px solid #E9E9E9;border-radius:5px;height:35px}.colorType .solid{border-right:1px solid #E9E9E9;font-size:14px!important;font-family:Mulish}.colorType .gradient{font-size:14px!important;font-family:Mulish}.solidColorSelected{background:var(--primary-bg-color)!important;color:#fff;border-top-left-radius:5px;border-bottom-left-radius:5px}.gradientColorSelected{background:var(--primary-bg-color)!important;color:#fff;border-top-right-radius:5px;border-bottom-right-radius:5px}@media screen and (max-width: 475px){.toolbar{max-width:100%;flex-wrap:wrap;row-gap:15px}.tool{width:max-content!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.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: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ContenteditableValueAccessor, selector: "[contenteditable][ngModel]", inputs: ["contenteditable"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
332
332
|
}
|
333
333
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: TextEditorComponent, decorators: [{
|
334
334
|
type: Component,
|
@@ -337,7 +337,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
337
337
|
FormsModule,
|
338
338
|
ContenteditableValueAccessor,
|
339
339
|
MatIconModule
|
340
|
-
], template: "<div class=\"editor-container\" [ngClass]=\"{'border': editable}\" #parentElement>\r\n <div [contenteditable]=\"editable\" [(ngModel)]=\"value\" class=\"editable-text\" (mouseup)=\"showToolbar($event)\" #editor\r\n (ngModelChange)=\"updateText($event)\" (mousedown)=\"hideToolbar($event)\">\r\n </div>\r\n\r\n <div class=\"toolbar\" *ngIf=\"editable && show\" [ngStyle]=\"{'top.px': toolbarY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" #toolbar >\r\n <!-- <select class=\"tool\" (change)=\"onFormatChange($event)\" [(ngModel)]=\"toolbarData.selectedHeading\">\r\n <option value=\"H1\">Heading1</option>\r\n <option value=\"H2\">Heading2</option>\r\n <option value=\"H3\">Heading3</option>\r\n <option value=\"div\">Text</option>\r\n </select> -->\r\n\r\n <button class=\"tool\" (click)=\"formatText('bold')\" [ngClass]=\"{'selectedTool': toolbarData.isBold}\"><mat-icon> format_bold</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('italic')\" [ngClass]=\"{'selectedTool': toolbarData.isItalic}\"><mat-icon> format_italic</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('underline')\" [ngClass]=\"{'selectedTool': toolbarData.isUnderlined}\"><mat-icon> format_underlined</mat-icon></button>\r\n\r\n <select class=\"tool\" (change)=\"changeFontSize($event)\" [(ngModel)]=\"toolbarData.selectedSize\">\r\n <option value=\"\" selected>Default</option>\r\n <option value=\"clamp(0.75rem, 2vw, 1rem)\">Small</option>\r\n <option value=\"clamp(1rem, 3vw, 1.5rem)\">Medium</option>\r\n <option value=\"clamp(1.25rem, 4vw, 2rem)\">Large</option>\r\n <option value=\"clamp(2rem, 5vw, 3rem)\">Extra Large</option>\r\n <option value=\"clamp(3.1rem, 7vw, 4.5rem)\">Huge</option>\r\n </select>\r\n\r\n <button class=\"tool\" (click)=\"formatText('insertOrderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertOrderedList'}\"><mat-icon>format_list_numbered</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('insertUnorderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertUnorderedList'}\"><mat-icon> format_list_bulleted</mat-icon></button>\r\n\r\n <button class=\"tool\" (click)=\"formatText('justifyLeft')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyLeft'}\"><mat-icon> format_align_left</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyCenter')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyCenter'}\"><mat-icon> format_align_center</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyRight')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyRight'}\"><mat-icon> format_align_right</mat-icon></button>\r\n\r\n <div class=\"colorType\">\r\n <button class=\"solid\" [ngClass]=\"{'solidColorSelected': selectedColorType === 'SOLID'}\" (click)=\"selectedColorType = 'SOLID'\">Solid</button>\r\n <button class=\"gradient\" [ngClass]=\"{'gradientColorSelected': selectedColorType === 'GRADIENT'}\" (click)=\"selectedColorType = 'GRADIENT'\">Gradient</button>\r\n </div>\r\n\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker()\" *ngIf=\"selectedColorType === 'SOLID'\">\r\n <mat-icon>format_color_text</mat-icon>\r\n <input type=\"color\" #colorPicker class=\"hidden-color-picker\" (input)=\"changeColor($event)\" [(ngModel)]=\"toolbarData.selectedColor\">\r\n </button>\r\n \r\n <div class=\"colorType\" *ngIf=\"selectedColorType === 'GRADIENT'\">\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); primaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"primaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #primaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"primaryColor\">\r\n </button>\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); secondaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"secondaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #secondaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"secondaryColor\">\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"suggestion-box\" [ngStyle]=\"{'top.px': suggestionY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" *ngIf=\"editable && label && showSuggestion\" #suggestion>\r\n <div class=\"suggestion\" (click)=\"regenerateText()\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/887493c1742273970151Frame%201244831740.png\" alt=\"\">\r\n <div>\r\n <p class=\"name\">Regenerate Text</p>\r\n <p class=\"desc\">Get a fresh variation of a current text</p>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".toolbar,.tool option{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}.editor-container{position:relative;display:inline-block;overflow:visible;width:100%}.editor-container div{outline:none}.editable-text{padding:4px;cursor:text}.toolbar{position:absolute;background:#fff;box-shadow:0 2px 5px #0003;display:flex;gap:5px;align-items:center;z-index:100000;box-shadow:#00000029 0 1px 4px;padding:5px 15px;border-radius:22px}.toolbar:hover{border:1px solid #ccc}.toolbar button{background:none;border:none;padding:5px 8px;cursor:pointer;font-weight:700;display:flex;align-items:center}.toolbar button:hover{background:#ddd}.toolbar select{padding:3px;border:none;outline:none;font-size:14px;font-weight:600;cursor:pointer}.toolbar input[type=color]{border:none;width:30px;height:30px;padding:0;cursor:pointer}.color-picker-btn{position:relative;background:none;border:none;cursor:pointer;padding:5px}.hidden-color-picker{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;cursor:pointer}.border{border:
|
340
|
+
], template: "<div class=\"editor-container\" [ngClass]=\"{'border': editable}\" #parentElement>\r\n <div [contenteditable]=\"editable\" [(ngModel)]=\"value\" class=\"editable-text\" (mouseup)=\"showToolbar($event)\" #editor\r\n (ngModelChange)=\"updateText($event)\" (mousedown)=\"hideToolbar($event)\">\r\n </div>\r\n\r\n <div class=\"toolbar\" *ngIf=\"editable && show\" [ngStyle]=\"{'top.px': toolbarY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" #toolbar >\r\n <!-- <select class=\"tool\" (change)=\"onFormatChange($event)\" [(ngModel)]=\"toolbarData.selectedHeading\">\r\n <option value=\"H1\">Heading1</option>\r\n <option value=\"H2\">Heading2</option>\r\n <option value=\"H3\">Heading3</option>\r\n <option value=\"div\">Text</option>\r\n </select> -->\r\n\r\n <button class=\"tool\" (click)=\"formatText('bold')\" [ngClass]=\"{'selectedTool': toolbarData.isBold}\"><mat-icon> format_bold</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('italic')\" [ngClass]=\"{'selectedTool': toolbarData.isItalic}\"><mat-icon> format_italic</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('underline')\" [ngClass]=\"{'selectedTool': toolbarData.isUnderlined}\"><mat-icon> format_underlined</mat-icon></button>\r\n\r\n <select class=\"tool\" (change)=\"changeFontSize($event)\" [(ngModel)]=\"toolbarData.selectedSize\">\r\n <option value=\"\" selected>Default</option>\r\n <option value=\"clamp(0.75rem, 2vw, 1rem)\">Small</option>\r\n <option value=\"clamp(1rem, 3vw, 1.5rem)\">Medium</option>\r\n <option value=\"clamp(1.25rem, 4vw, 2rem)\">Large</option>\r\n <option value=\"clamp(2rem, 5vw, 3rem)\">Extra Large</option>\r\n <option value=\"clamp(3.1rem, 7vw, 4.5rem)\">Huge</option>\r\n </select>\r\n\r\n <button class=\"tool\" (click)=\"formatText('insertOrderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertOrderedList'}\"><mat-icon>format_list_numbered</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('insertUnorderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertUnorderedList'}\"><mat-icon> format_list_bulleted</mat-icon></button>\r\n\r\n <button class=\"tool\" (click)=\"formatText('justifyLeft')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyLeft'}\"><mat-icon> format_align_left</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyCenter')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyCenter'}\"><mat-icon> format_align_center</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyRight')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyRight'}\"><mat-icon> format_align_right</mat-icon></button>\r\n\r\n <div class=\"colorType\">\r\n <button class=\"solid\" [ngClass]=\"{'solidColorSelected': selectedColorType === 'SOLID'}\" (click)=\"selectedColorType = 'SOLID'\">Solid</button>\r\n <button class=\"gradient\" [ngClass]=\"{'gradientColorSelected': selectedColorType === 'GRADIENT'}\" (click)=\"selectedColorType = 'GRADIENT'\">Gradient</button>\r\n </div>\r\n\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker()\" *ngIf=\"selectedColorType === 'SOLID'\">\r\n <mat-icon>format_color_text</mat-icon>\r\n <input type=\"color\" #colorPicker class=\"hidden-color-picker\" (input)=\"changeColor($event)\" [(ngModel)]=\"toolbarData.selectedColor\">\r\n </button>\r\n \r\n <div class=\"colorType\" *ngIf=\"selectedColorType === 'GRADIENT'\">\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); primaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"primaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #primaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"primaryColor\">\r\n </button>\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker(); secondaryColorPicker.click()\">\r\n <mat-icon [style.color]=\"secondaryColor\">format_color_text</mat-icon>\r\n <input type=\"color\" #secondaryColorPicker class=\"hidden-color-picker\" (input)=\"changeGradientColor()\" [(ngModel)]=\"secondaryColor\">\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"suggestion-box\" [ngStyle]=\"{'top.px': suggestionY}\" [style.right]=\"rightZero ? '0px' : 'auto'\" [style.left]=\"!rightZero ? '0px' : 'auto'\" *ngIf=\"editable && label && showSuggestion\" #suggestion>\r\n <div class=\"suggestion\" (click)=\"regenerateText()\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/887493c1742273970151Frame%201244831740.png\" alt=\"\">\r\n <div>\r\n <p class=\"name\">Regenerate Text</p>\r\n <p class=\"desc\">Get a fresh variation of a current text</p>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".toolbar,.tool option{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}.editor-container{position:relative;display:inline-block;overflow:visible;width:100%}.editor-container div{outline:none}.editable-text{padding:4px;cursor:text}.toolbar{position:absolute;background:#fff;box-shadow:0 2px 5px #0003;display:flex;gap:5px;align-items:center;z-index:100000;box-shadow:#00000029 0 1px 4px;padding:5px 15px;border-radius:22px}.toolbar:hover{border:1px solid #ccc}.toolbar button{background:none;border:none;padding:5px 8px;cursor:pointer;font-weight:700;display:flex;align-items:center}.toolbar button:hover{background:#ddd}.toolbar select{padding:3px;border:none;outline:none;font-size:14px;font-weight:600;cursor:pointer}.toolbar input[type=color]{border:none;width:30px;height:30px;padding:0;cursor:pointer}.color-picker-btn{position:relative;background:none;border:none;cursor:pointer;padding:5px}.hidden-color-picker{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;cursor:pointer}.border{border:1px solid #E9E9E9!important;border-radius:8px}.selectedTool{background:var(--primary-bg-color)!important;color:#fff;border-radius:5px}p{margin-bottom:0rem!important}.suggestion-box{position:absolute;background:#fff;border:1px solid #ccc;box-shadow:0 2px 5px #0003;z-index:10000;box-shadow:#00000029 0 1px 4px;padding:5px 15px;border-radius:10px}.suggestion{display:flex;gap:10px;width:307px;align-items:center;cursor:pointer}.suggestion img{border-radius:5px;width:32px;height:32px;background:#faf1fc;padding:3px}.suggestion .name{color:#000;font-family:var(--primary-font-family)}.suggestion .desc{color:#000;font-size:12px;color:#918585;font-family:var(--primary-font-family)}.colorType{display:flex;border:1px solid #E9E9E9;border-radius:5px;height:35px}.colorType .solid{border-right:1px solid #E9E9E9;font-size:14px!important;font-family:Mulish}.colorType .gradient{font-size:14px!important;font-family:Mulish}.solidColorSelected{background:var(--primary-bg-color)!important;color:#fff;border-top-left-radius:5px;border-bottom-left-radius:5px}.gradientColorSelected{background:var(--primary-bg-color)!important;color:#fff;border-top-right-radius:5px;border-bottom-right-radius:5px}@media screen and (max-width: 475px){.toolbar{max-width:100%;flex-wrap:wrap;row-gap:15px}.tool{width:max-content!important}}\n"] }]
|
341
341
|
}], ctorParameters: () => [{ type: i1.ElementServiceService }, { type: Object, decorators: [{
|
342
342
|
type: Inject,
|
343
343
|
args: [PLATFORM_ID]
|
@@ -367,4 +367,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
367
367
|
}], label: [{
|
368
368
|
type: Input
|
369
369
|
}] } });
|
370
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7QUFnQnZELE1BQU0sT0FBTyxtQkFBbUI7SUFnQzlCLFlBQW9CLGFBQW9DLEVBQ3pCLFVBQWtCO1FBRDdCLGtCQUFhLEdBQWIsYUFBYSxDQUF1QjtRQUN6QixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBMUJ4QyxVQUFLLEdBQVcscUNBQXFDLENBQUM7UUFDckQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzFDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFJbkMsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUNiLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNoQixjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLG1CQUFjLEdBQVksS0FB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LFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT3V0cHV0LCBQTEFURk9STV9JRCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29udGVudGVkaXRhYmxlVmFsdWVBY2Nlc3NvciB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50ZWRpdGFibGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbGVtZW50U2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi9lZGl0b3Itc2VydmljZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tdGV4dC1lZGl0b3InLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBDb250ZW50ZWRpdGFibGVWYWx1ZUFjY2Vzc29yLFxyXG4gICAgTWF0SWNvbk1vZHVsZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdGV4dC1lZGl0b3IuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFRleHRFZGl0b3JDb21wb25lbnQge1xyXG4gIEBWaWV3Q2hpbGQoJ3Rvb2xiYXInLCB7IHN0YXRpYzogZmFsc2UgfSkgdG9vbGJhciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnZWRpdG9yJywgeyBzdGF0aWM6IGZhbHNlIH0pIGVkaXRvciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnY29sb3JQaWNrZXInKSBjb2xvclBpY2tlciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgncGFyZW50RWxlbWVudCcpIHBhcmVudEVsZW1lbnQhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3N1Z2dlc3Rpb24nLCB7IHN0YXRpYzogZmFsc2UgfSkgc3VnZ2VzdGlvbiE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmcgPSAnPHA+SGVsbG8gdGhpcyBpcyBwYWxhc2ggbWFraGlqYTwvcD4nO1xyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBJbnB1dCgpIGVkaXRhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2VjdGlvbklkPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nO1xyXG5cclxuICBzaG93ID0gZmFsc2U7XHJcbiAgdG9vbGJhclkgPSAwO1xyXG4gIHN1Z2dlc3Rpb25ZID0gMDtcclxuICByaWdodFplcm86IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHNob3dTdWdnZXN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdG9vbGJhckRhdGE6IGFueSA9IHtcclxuICAgIHNlbGVjdGVkSGVhZGluZzogJycsXHJcbiAgICBpc0JvbGQ6IGZhbHNlLFxyXG4gICAgaXNJdGFsaWM6IGZhbHNlLFxyXG4gICAgaXNVbmRlcmxpbmVkOiBmYWxzZSxcclxuICAgIHNlbGVjdGVkU2l6ZTogJycsXHJcbiAgICBzZWxlY3RlZExpc3Q6ICcnLFxyXG4gICAgc2VsZWN0ZWRBbGlnbm1lbnQ6ICcnLFxyXG4gICAgc2VsZWN0ZWRDb2xvcjogJyMwMDAwMDAnXHJcbiAgfVxyXG4gIHNlbGVjdGVkQ29sb3JUeXBlOiAnU09MSUQnIHwgJ0dSQURJRU5UJyA9ICdTT0xJRCc7XHJcbiAgcHJpbWFyeUNvbG9yOiBzdHJpbmcgPSAnIzAwMDAwMCc7XHJcbiAgc2Vjb25kYXJ5Q29sb3I6IHN0cmluZyA9ICcjMDAwMDAwJztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlZGl0b3JTZXJ2aWNlOiBFbGVtZW50U2VydmljZVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oaWRlVG9vbGJhci5iaW5kKHRoaXMpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oaWRlVG9vbGJhci5iaW5kKHRoaXMpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBzaG93VG9vbGJhcihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpIHx8ICF0aGlzLmVkaXRhYmxlKSByZXR1cm47XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG4gICAgaWYgKHNlbGVjdGlvbiA9PSBudWxsKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcclxuICAgIGNvbnN0IHJlY3QgPSByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IHBhcmVudFJlY3QgPSB0aGlzLnBhcmVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IHRvcEZyb21QYXJlbnQgPSByZWN0LnRvcCAtIHBhcmVudFJlY3QudG9wO1xyXG5cclxuICAgIGlmIChzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnJhbmdlQ291bnQgPiAwKSB7XHJcbiAgICAgIHRoaXMuc3VnZ2VzdGlvblkgPSB0b3BGcm9tUGFyZW50ICsgMzA7XHJcbiAgICAgIHRoaXMuc2hvd1N1Z2dlc3Rpb24gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnRvU3RyaW5nKCkudHJpbSgpICE9PSAnJykge1xyXG4gICAgICBjb25zdCB0b29sYmFyV2lkdGggPSA1NDE7XHJcblxyXG4gICAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICAgIGNvbnN0IHJpZ2h0UG9zaXRvbiA9IHZpZXdwb3J0V2lkdGggLSBwYXJlbnRSZWN0LmxlZnQ7XHJcbiAgICAgIGlmIChyaWdodFBvc2l0b24gKyB0b29sYmFyV2lkdGggPiB2aWV3cG9ydFdpZHRoKSB7XHJcbiAgICAgICAgdGhpcy5yaWdodFplcm8gPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJpZ2h0WmVybyA9IHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudG9vbGJhclkgPSB0b3BGcm9tUGFyZW50ICsgMzA7XHJcblxyXG4gICAgICB0aGlzLnJlRm9ybWF0dGluZ0RhdGEoKTtcclxuICAgICAgdGhpcy5yZWFkRm9ybWF0dGluZ1Byb3BlcnRpZXMoKTtcclxuXHJcbiAgICAgIHRoaXMuc2hvdyA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhpZGVUb29sYmFyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHwgIXRoaXMuZWRpdGFibGUpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBjbGlja2VkSW5zaWRlRWRpdG9yID0gdGhpcy5lZGl0b3I/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcclxuICAgIGNvbnN0IGNsaWNrZWRJbnNpZGVUb29sYmFyID0gdGhpcy50b29sYmFyPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XHJcbiAgICBjb25zdCBjbGlja2VkSW5zaWRlU3VnZ2VzdGlvbiA9IHRoaXMuc3VnZ2VzdGlvbj8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xyXG5cclxuICAgIC8vIEhpZGUgdGhlIHRvb2xiYXIgaWYgdGhlIGNsaWNrIGlzIG91dHNpZGUgYm90aCB0aGUgZWRpdG9yIGFuZCB0b29sYmFyXHJcbiAgICBpZiAoIWNsaWNrZWRJbnNpZGVFZGl0b3IgJiYgIWNsaWNrZWRJbnNpZGVUb29sYmFyKSB7XHJcbiAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFjbGlja2VkSW5zaWRlRWRpdG9yICYmICFjbGlja2VkSW5zaWRlU3VnZ2VzdGlvbikge1xyXG4gICAgICB0aGlzLnNob3dTdWdnZXN0aW9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtYXRUZXh0KGNvbW1hbmQ6IHN0cmluZywgdmFsdWU6IHN0cmluZyA9ICcnKSB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcclxuXHJcbiAgICAvLyAgIGlmIChjb21tYW5kID09PSAnZm9ybWF0QmxvY2snKSB7XHJcbiAgICAvLyAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG4gICAgLy8gICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5yYW5nZUNvdW50ID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgLy8gICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XHJcbiAgICAvLyAgICAgY29uc3Qgc2VsZWN0ZWRUZXh0ID0gc2VsZWN0aW9uLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgLy8gICAgIGlmIChzZWxlY3RlZFRleHQpIHtcclxuICAgIC8vICAgICAgICAgY29uc3QgbmV3RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodmFsdWUpO1xyXG4gICAgLy8gICAgICAgICBuZXdFbGVtZW50LnRleHRDb250ZW50ID0gc2VsZWN0ZWRUZXh0O1xyXG5cclxuICAgIC8vICAgICAgICAgcmFuZ2UuZGVsZXRlQ29udGVudHMoKTtcclxuICAgIC8vICAgICAgICAgcmFuZ2UuaW5zZXJ0Tm9kZShuZXdFbGVtZW50KTtcclxuXHJcbiAgICAvLyAgICAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRIZWFkaW5nID0gdmFsdWU7XHJcbiAgICAvLyAgICAgICAgIHJldHVybjtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyB9XHJcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZChjb21tYW5kLCBmYWxzZSwgdmFsdWUpO1xyXG5cclxuICAgIGlmIChjb21tYW5kID09PSAnYm9sZCcpXHJcbiAgICAgIHRoaXMudG9vbGJhckRhdGEuaXNCb2xkID0gIXRoaXMudG9vbGJhckRhdGEuaXNCb2xkO1xyXG4gICAgaWYgKGNvbW1hbmQgPT09ICdpdGFsaWMnKVxyXG4gICAgICB0aGlzLnRvb2xiYXJEYXRhLmlzSXRhbGljID0gIXRoaXMudG9vbGJhckRhdGEuaXNJdGFsaWM7XHJcbiAgICBpZiAoY29tbWFuZCA9PT0gJ3VuZGVybGluZScpXHJcbiAgICAgIHRoaXMudG9vbGJhckRhdGEuaXNVbmRlcmxpbmVkID0gIXRoaXMudG9vbGJhckRhdGEuaXNVbmRlcmxpbmVkXHJcbiAgICBpZiAoY29tbWFuZCA9PT0gJ2luc2VydE9yZGVyZWRMaXN0JyB8fCBjb21tYW5kID09PSAnaW5zZXJ0VW5vcmRlcmVkTGlzdCcpXHJcbiAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRMaXN0ID0gY29tbWFuZCA9PT0gdGhpcy50b29sYmFyRGF0YS5zZWxlY3RlZExpc3QgPyAnJyA6IGNvbW1hbmQ7XHJcbiAgICBpZiAoY29tbWFuZCA9PT0gJ2p1c3RpZnlMZWZ0JyB8fCBjb21tYW5kID09PSAnanVzdGlmeUNlbnRlcicgfHwgY29tbWFuZCA9PT0gJ2p1c3RpZnlSaWdodCcpXHJcbiAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRBbGlnbm1lbnQgPSBjb21tYW5kID09PSB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkQWxpZ25tZW50ID8gJycgOiBjb21tYW5kO1xyXG4gICAgaWYgKGNvbW1hbmQgPT09ICdmb3JtYXRCbG9jaycpXHJcbiAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRIZWFkaW5nID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VGb250U2l6ZShldmVudDogYW55KSB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBzaXplID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG5cclxuICAgIC8vIEFwcGx5IGEgZGVmYXVsdCBzaXplIG9mIDQgKG5lZWRlZCBmb3IgZXhlY0NvbW1hbmQgdG8gd29yaylcclxuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdmb250U2l6ZScsIGZhbHNlLCAnNCcpO1xyXG5cclxuICAgIC8vIENvbnZlcnQgc2VsZWN0ZWQgZm9udCBlbGVtZW50cyB0byBoYXZlIGFjdHVhbCBmb250LXNpemUgaW5zdGVhZCBvZiBcInNpemVcIiBhdHRyaWJ1dGVcclxuICAgIGNvbnN0IGVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImZvbnRbc2l6ZT0nNCddXCIpO1xyXG4gICAgZWxlbWVudHMuZm9yRWFjaChlbCA9PiB7XHJcbiAgICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gZWwgYXMgSFRNTEVsZW1lbnQ7IC8vIOKchSBFeHBsaWNpdGx5IGNhc3QgdG8gSFRNTEVsZW1lbnRcclxuICAgICAgaHRtbEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdzaXplJyk7IC8vIFJlbW92ZSBvbGQgc2l6ZSBhdHRyaWJ1dGVcclxuICAgICAgaHRtbEVsZW1lbnQuc3R5bGUuZm9udFNpemUgPSBzaXplOyAvLyBBcHBseSBDU1MgZm9udCBzaXplXHJcbiAgICB9KTtcclxuICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRTaXplID0gc2l6ZTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmVkaXRvci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCk7XHJcbiAgICAvLyB0aGlzLnNob3cgPSBmYWxzZTsgLy8gSGlkZSB0b29sYmFyIGFmdGVyIGFjdGlvblxyXG4gIH1cclxuXHJcbiAgY2hhbmdlQ29sb3IoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XHJcbiAgICB0aGlzLnJlc3RvcmVTZWxlY3Rpb24oKTsgLy8gUmVzdG9yZSBzZWxlY3Rpb24gYmVmb3JlIHRvdWNoaW5nIERPTVxyXG5cclxuICAgIGNvbnN0IGNvbG9yID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgLy8gR3JhYiBjdXJyZW50IHNlbGVjdGlvblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG4gICAgaWYgKHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24ucmFuZ2VDb3VudCA+IDApIHtcclxuICAgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcclxuICAgICAgbGV0IHRhcmdldE5vZGU6IE5vZGUgfCBudWxsID0gcmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXI7XHJcblxyXG4gICAgICBpZiAoIXRhcmdldE5vZGUpIHJldHVybjtcclxuICAgICAgLy8gSWYgaXQncyBhIHRleHQgbm9kZSwgd29yayB3aXRoIGl0cyBwYXJlbnQgZWxlbWVudFxyXG4gICAgICBpZiAodGFyZ2V0Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgJiYgdGFyZ2V0Tm9kZS5wYXJlbnRFbGVtZW50KSB7XHJcbiAgICAgICAgdGFyZ2V0Tm9kZSA9IHRhcmdldE5vZGUucGFyZW50RWxlbWVudDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRhcmdldE5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IGVsID0gdGFyZ2V0Tm9kZSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAgICAgLy8gMSkgSWYgaXQgKmhhcyogZ3JhZGllbnQgc3R5bGluZywgc3RyaXAgaXQgb2ZmIGFuZCBpbW1lZGlhdGVseSBhcHBseSB5b3VyIHNvbGlkIGNvbG9yXHJcbiAgICAgICAgY29uc3QgaGFzR3JhZGllbnQgPVxyXG4gICAgICAgICAgZWwuc3R5bGUuYmFja2dyb3VuZENsaXAgPT09ICd0ZXh0JyB8fFxyXG4gICAgICAgICAgZWwuc3R5bGUud2Via2l0QmFja2dyb3VuZENsaXAgPT09ICd0ZXh0JztcclxuXHJcbiAgICAgICAgaWYgKGhhc0dyYWRpZW50KSB7XHJcbiAgICAgICAgICBlbC5zdHlsZS5iYWNrZ3JvdW5kID0gJyc7XHJcbiAgICAgICAgICBlbC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9ICcnO1xyXG4gICAgICAgICAgZWwuc3R5bGUud2Via2l0QmFja2dyb3VuZENsaXAgPSAnJztcclxuICAgICAgICAgIGVsLnN0eWxlLndlYmtpdFRleHRGaWxsQ29sb3IgPSAnJztcclxuICAgICAgICAgIGVsLnN0eWxlLmNvbG9yID0gY29sb3I7XHJcblxyXG4gICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuZWRpdG9yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKTtcclxuICAgICAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRDb2xvciA9IGNvbG9yO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gMikgSWYgKm5vKiBncmFkaWVudCBzdHlsaW5nLCBsb29rIGZvciBhbnkgPHNwYW4+IHdyYXBwZXJzIGFuZCB1bndyYXAgdGhlbVxyXG4gICAgICAgIC8vICAgIHNvIHRoYXQgb3VyIGV4ZWNDb21tYW5kKCdmb3JlQ29sb3InKSBjYW4gY2xlYW5seSBhcHBseSB0byBwbGFpbiB0ZXh0XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBzcGFucyA9IHRoaXMuZWRpdG9yLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc3BhbicpO1xyXG4gICAgc3BhbnMuZm9yRWFjaCgoc3BhbjogYW55KSA9PiB7XHJcbiAgICAgIC8vIE9ubHkgdW53cmFwIHNwYW5zIHRoYXQgKmRvbuKAmXQqIGNhcnJ5IGdyYWRpZW504oCUaS5lLiBzdHJpcHMgYW55IHJlc2lkdWFsIHRhZ3NcclxuICAgICAgY29uc3QgcGFyZW50ID0gc3Bhbi5wYXJlbnROb2RlITtcclxuICAgICAgd2hpbGUgKHNwYW4uZmlyc3RDaGlsZCkge1xyXG4gICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoc3Bhbi5maXJzdENoaWxkLCBzcGFuKTtcclxuICAgICAgfVxyXG4gICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQoc3Bhbik7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyAzKSBGaW5hbGx5LCB1c2UgdGhlIGxlZ2FjeSBleGVjQ29tbWFuZCBmb3Igc29saWQgY29sb3JcclxuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdmb3JlQ29sb3InLCBmYWxzZSwgY29sb3IpO1xyXG5cclxuICAgIC8vIFVwZGF0ZSB0b29sYmFyIHN0YXRlXHJcbiAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkQ29sb3IgPSBjb2xvcjtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmVkaXRvci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUZXh0KGV2ZW50OiBFdmVudCkge1xyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5lZGl0b3IubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpXHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5lZGl0b3IubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpO1xyXG4gIH1cclxuXHJcbiAgb25Gb3JtYXRDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MU2VsZWN0RWxlbWVudCkudmFsdWU7XHJcbiAgICB0aGlzLmZvcm1hdFRleHQoJ2Zvcm1hdEJsb2NrJywgc2VsZWN0ZWRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb3BlbkNvbG9yUGlja2VyKCkge1xyXG4gICAgLy8gdGhpcy5jb2xvclBpY2tlci5uYXRpdmVFbGVtZW50LmNsaWNrKCk7IC8vIFByb2dyYW1tYXRpY2FsbHkgdHJpZ2dlciBpbnB1dFxyXG4gICAgdGhpcy5zYXZlU2VsZWN0aW9uKCk7IC8vIFNhdmUgdGhlIGN1cnJlbnQgc2VsZWN0aW9uXHJcbiAgfVxyXG5cclxuICByZWFkRm9ybWF0dGluZ1Byb3BlcnRpZXMoKSB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XHJcbiAgICBpZiAoIXNlbGVjdGlvbikgcmV0dXJuO1xyXG4gICAgY29uc3Qgbm9kZSA9IHNlbGVjdGlvbi5mb2N1c05vZGUgYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgbm9kZSBpcyBudWxsXHJcbiAgICBpZiAoIW5vZGUpIHJldHVybjtcclxuXHJcbiAgICBsZXQgZWxlbWVudCA9IG5vZGUucGFyZW50RWxlbWVudDtcclxuICAgIHdoaWxlIChlbGVtZW50KSB7XHJcbiAgICAgIGNvbnN0IG5vZGVOYW1lID0gZWxlbWVudC5ub2RlTmFtZTtcclxuXHJcbiAgICAgIGlmIChub2RlTmFtZSA9PT0gJ0gxJyB8fCBub2RlTmFtZSA9PT0gJ0gyJyB8fCBub2RlTmFtZSA9PT0gJ0gzJykge1xyXG4gICAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRIZWFkaW5nID0gbm9kZU5hbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09ICdCJyB8fCBub2RlTmFtZSA9PT0gJ1NUUk9ORycpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLmlzQm9sZCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09ICdJJyB8fCBub2RlTmFtZSA9PT0gJ0VNJykge1xyXG4gICAgICAgIHRoaXMudG9vbGJhckRhdGEuaXNJdGFsaWMgPSB0cnVlO1xyXG4gICAgICB9IGVsc2UgaWYgKG5vZGVOYW1lID09PSAnVScpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLmlzVW5kZXJsaW5lZCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09ICdPTCcpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkTGlzdCA9ICdpbnNlcnRPcmRlcmVkTGlzdCc7XHJcbiAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09ICdVTCcpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkTGlzdCA9ICdpbnNlcnRVbm9yZGVyZWRMaXN0JztcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0eWxlLnRleHRBbGlnbikge1xyXG4gICAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRBbGlnbm1lbnQgPSBganVzdGlmeSR7ZWxlbWVudC5zdHlsZS50ZXh0QWxpZ24uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBlbGVtZW50LnN0eWxlLnRleHRBbGlnbi5zbGljZSgxKX1gO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc3R5bGUuZm9udFNpemUpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkU2l6ZSA9IGVsZW1lbnQuc3R5bGUuZm9udFNpemU7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zdHlsZS5jb2xvcikge1xyXG4gICAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRDb2xvciA9IGVsZW1lbnQuc3R5bGUuY29sb3JcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZUZvcm1hdHRpbmdEYXRhKCkge1xyXG4gICAgdGhpcy50b29sYmFyRGF0YSA9IHtcclxuICAgICAgc2VsZWN0ZWRIZWFkaW5nOiAnJyxcclxuICAgICAgaXNCb2xkOiBmYWxzZSxcclxuICAgICAgaXNJdGFsaWM6IGZhbHNlLFxyXG4gICAgICBpc1VuZGVybGluZWQ6IGZhbHNlLFxyXG4gICAgICBzZWxlY3RlZFNpemU6ICcnLFxyXG4gICAgICBzZWxlY3RlZExpc3Q6ICcnLFxyXG4gICAgICBzZWxlY3RlZEFsaWdubWVudDogJycsXHJcbiAgICAgIHNlbGVjdGVkQ29sb3I6ICcnXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VHcmFkaWVudENvbG9yKCkge1xyXG4gICAgdGhpcy5yZXN0b3JlU2VsZWN0aW9uKCk7IC8vIFJlc3RvcmUgdGhlIHNlbGVjdGlvbiBiZWZvcmUgYXBwbHlpbmcgZ3JhZGllbnRcclxuICAgIGNvbnN0IGNvbG9yID0gYGxpbmVhci1ncmFkaWVudCg5MGRlZywgJHt0aGlzLnByaW1hcnlDb2xvcn0gMCUsICR7dGhpcy5zZWNvbmRhcnlDb2xvcn0gMTAwJSlgXHJcbiAgICB0aGlzLmFwcGx5R3JhZGllbnRUb1RleHQoY29sb3IpXHJcbiAgfVxyXG5cclxuICBhcHBseUdyYWRpZW50VG9UZXh0KGdyYWRpZW50VmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG4gICAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDApIHJldHVybjtcclxuXHJcbiAgICAvLyBHZXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHJhbmdlXHJcbiAgICBjb25zdCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xyXG5cclxuICAgIC8vIENoZWNrIGlmIHRoZSByYW5nZSBpcyB2YWxpZCBmb3Igd3JhcHBpbmdcclxuICAgIGlmICghcmFuZ2UgfHwgcmFuZ2UuY29sbGFwc2VkKSByZXR1cm47XHJcblxyXG4gICAgLy8gRXh0cmFjdCB0aGUgc2VsZWN0ZWQgY29udGVudFxyXG4gICAgY29uc3Qgc2VsZWN0ZWRDb250ZW50ID0gcmFuZ2UuZXh0cmFjdENvbnRlbnRzKCk7XHJcblxyXG4gICAgY29uc3Qgc3BhbnMgPSB0aGlzLmVkaXRvci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NwYW4nKTtcclxuICAgIHNwYW5zLmZvckVhY2goKHNwYW46IGFueSkgPT4ge1xyXG4gICAgICAvLyBPbmx5IHVud3JhcCBzcGFucyB0aGF0ICpkb27igJl0KiBjYXJyeSBncmFkaWVudOKAlGkuZS4gc3RyaXBzIGFueSByZXNpZHVhbCB0YWdzXHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IHNwYW4ucGFyZW50Tm9kZSE7XHJcbiAgICAgIHdoaWxlIChzcGFuLmZpcnN0Q2hpbGQpIHtcclxuICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHNwYW4uZmlyc3RDaGlsZCwgc3Bhbik7XHJcbiAgICAgIH1cclxuICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHNwYW4pO1xyXG4gICAgfSk7XHJcblxyXG5cclxuICAgIC8vIENyZWF0ZSBhIG5ldyA8c3Bhbj4gZWxlbWVudCB0byB3cmFwIHRoZSBzZWxlY3RlZCB0ZXh0XHJcbiAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgc3Bhbi5zdHlsZS5iYWNrZ3JvdW5kID0gZ3JhZGllbnRWYWx1ZTtcclxuICAgIHNwYW4uc3R5bGUuYmFja2dyb3VuZENsaXAgPSAndGV4dCc7XHJcbiAgICBzcGFuLnN0eWxlLndlYmtpdEJhY2tncm91bmRDbGlwID0gJ3RleHQnO1xyXG4gICAgc3Bhbi5zdHlsZS5jb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICBzcGFuLnN0eWxlLndlYmtpdFRleHRGaWxsQ29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG5cclxuICAgIC8vIEFwcGVuZCB0aGUgc2VsZWN0ZWQgY29udGVudCB0byB0aGUgPHNwYW4+XHJcbiAgICBzcGFuLmFwcGVuZENoaWxkKHNlbGVjdGVkQ29udGVudCk7XHJcblxyXG4gICAgLy8gSW5zZXJ0IHRoZSA8c3Bhbj4gYmFjayBpbnRvIHRoZSByYW5nZVxyXG4gICAgcmFuZ2UuaW5zZXJ0Tm9kZShzcGFuKTtcclxuXHJcbiAgICAvLyBDbGVhciB0aGUgc2VsZWN0aW9uXHJcbiAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XHJcblxyXG4gICAgLy8gRW1pdCB0aGUgdXBkYXRlZCBIVE1MIGNvbnRlbnRcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmVkaXRvci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcmVnZW5lcmF0ZVRleHQoKSB7XHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgYnVzaW5lc3NJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2J1c2luZXNzSWQnKSxcclxuICAgICAgZGF0YUlkOiB0aGlzLnNlY3Rpb25JZCxcclxuICAgICAgc3ViSW5kdXN0cnlJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3N1YkluZHVzdHJ5SWQnKSxcclxuICAgICAgc3VnZ2VzdGVkRGF0YVR5cGU6ICdDT01QT05FTlQnLFxyXG4gICAgICB0b25lOiAnUFJPRkVTU0lPTkFMJyxcclxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXHJcbiAgICAgIGxhYmVsOiB0aGlzLmxhYmVsXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnJlZ2VuZXJhdGVUZXh0KHBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHJlcy5kYXRhO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2F2ZWRSYW5nZTogUmFuZ2UgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gIHNhdmVTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XHJcbiAgICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5yYW5nZUNvdW50ID4gMCkge1xyXG4gICAgICB0aGlzLnNhdmVkUmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc3RvcmVTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zYXZlZFJhbmdlKSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcclxuICAgICAgc2VsZWN0aW9uPy5yZW1vdmVBbGxSYW5nZXMoKTtcclxuICAgICAgc2VsZWN0aW9uPy5hZGRSYW5nZSh0aGlzLnNhdmVkUmFuZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZWRpdG9yLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsnYm9yZGVyJzogZWRpdGFibGV9XCIgI3BhcmVudEVsZW1lbnQ+XHJcbiAgPGRpdiBbY29udGVudGVkaXRhYmxlXT1cImVkaXRhYmxlXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIGNsYXNzPVwiZWRpdGFibGUtdGV4dFwiIChtb3VzZXVwKT1cInNob3dUb29sYmFyKCRldmVudClcIiAjZWRpdG9yXHJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVUZXh0KCRldmVudClcIiAobW91c2Vkb3duKT1cImhpZGVUb29sYmFyKCRldmVudClcIj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInRvb2xiYXJcIiAqbmdJZj1cImVkaXRhYmxlICYmIHNob3dcIiBbbmdTdHlsZV09XCJ7J3RvcC5weCc6IHRvb2xiYXJZfVwiIFtzdHlsZS5yaWdodF09XCJyaWdodFplcm8gPyAnMHB4JyA6ICdhdXRvJ1wiIFtzdHlsZS5sZWZ0XT1cIiFyaWdodFplcm8gPyAnMHB4JyA6ICdhdXRvJ1wiICN0b29sYmFyID5cclxuICAgIDwhLS0gPHNlbGVjdCBjbGFzcz1cInRvb2xcIiAoY2hhbmdlKT1cIm9uRm9ybWF0Q2hhbmdlKCRldmVudClcIiBbKG5nTW9kZWwpXT1cInRvb2xiYXJEYXRhLnNlbGVjdGVkSGVhZGluZ1wiPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiSDFcIj5IZWFkaW5nMTwvb3B0aW9uPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiSDJcIj5IZWFkaW5nMjwvb3B0aW9uPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiSDNcIj5IZWFkaW5nMzwvb3B0aW9uPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiZGl2XCI+VGV4dDwvb3B0aW9uPlxyXG4gICAgPC9zZWxlY3Q+IC0tPlxyXG5cclxuICAgIDxidXR0b24gY2xhc3M9XCJ0b29sXCIgKGNsaWNrKT1cImZvcm1hdFRleHQoJ2JvbGQnKVwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRUb29sJzogdG9vbGJhckRhdGEuaXNCb2xkfVwiPjxtYXQtaWNvbj4gZm9ybWF0X2JvbGQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInRvb2xcIiAoY2xpY2spPVwiZm9ybWF0VGV4dCgnaXRhbGljJylcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVG9vbCc6IHRvb2xiYXJEYXRhLmlzSXRhbGljfVwiPjxtYXQtaWNvbj4gZm9ybWF0X2l0YWxpYzwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbFwiIChjbGljayk9XCJmb3JtYXRUZXh0KCd1bmRlcmxpbmUnKVwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRUb29sJzogdG9vbGJhckRhdGEuaXNVbmRlcmxpbmVkfVwiPjxtYXQtaWNvbj4gZm9ybWF0X3VuZGVybGluZWQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG5cclxuICAgIDxzZWxlY3QgY2xhc3M9XCJ0b29sXCIgKGNoYW5nZSk9XCJjaGFuZ2VGb250U2l6ZSgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJ0b29sYmFyRGF0YS5zZWxlY3RlZFNpemVcIj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiIHNlbGVjdGVkPkRlZmF1bHQ8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cImNsYW1wKDAuNzVyZW0sIDJ2dywgMXJlbSlcIj5TbWFsbDwvb3B0aW9uPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiY2xhbXAoMXJlbSwgM3Z3LCAxLjVyZW0pXCI+TWVkaXVtPC9vcHRpb24+XHJcbiAgICAgIDxvcHRpb24gdmFsdWU9XCJjbGFtcCgxLjI1cmVtLCA0dncsIDJyZW0pXCI+TGFyZ2U8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cImNsYW1wKDJyZW0sIDV2dywgM3JlbSlcIj5FeHRyYSBMYXJnZTwvb3B0aW9uPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiY2xhbXAoMy4xcmVtLCA3dncsIDQuNXJlbSlcIj5IdWdlPC9vcHRpb24+XHJcbiAgICA8L3NlbGVjdD5cclxuXHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbFwiIChjbGljayk9XCJmb3JtYXRUZXh0KCdpbnNlcnRPcmRlcmVkTGlzdCcpXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZFRvb2wnOiB0b29sYmFyRGF0YS5zZWxlY3RlZExpc3QgPT09ICdpbnNlcnRPcmRlcmVkTGlzdCd9XCI+PG1hdC1pY29uPmZvcm1hdF9saXN0X251bWJlcmVkPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJ0b29sXCIgKGNsaWNrKT1cImZvcm1hdFRleHQoJ2luc2VydFVub3JkZXJlZExpc3QnKVwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRUb29sJzogdG9vbGJhckRhdGEuc2VsZWN0ZWRMaXN0ID09PSAnaW5zZXJ0VW5vcmRlcmVkTGlzdCd9XCI+PG1hdC1pY29uPiBmb3JtYXRfbGlzdF9idWxsZXRlZDwvbWF0LWljb24+PC9idXR0b24+XHJcblxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInRvb2xcIiAoY2xpY2spPVwiZm9ybWF0VGV4dCgnanVzdGlmeUxlZnQnKVwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRUb29sJzogdG9vbGJhckRhdGEuc2VsZWN0ZWRBbGlnbm1lbnQgPT09ICdqdXN0aWZ5TGVmdCd9XCI+PG1hdC1pY29uPiBmb3JtYXRfYWxpZ25fbGVmdDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbFwiIChjbGljayk9XCJmb3JtYXRUZXh0KCdqdXN0aWZ5Q2VudGVyJylcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVG9vbCc6IHRvb2xiYXJEYXRhLnNlbGVjdGVkQWxpZ25tZW50ID09PSAnanVzdGlmeUNlbnRlcid9XCI+PG1hdC1pY29uPiBmb3JtYXRfYWxpZ25fY2VudGVyPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJ0b29sXCIgKGNsaWNrKT1cImZvcm1hdFRleHQoJ2p1c3RpZnlSaWdodCcpXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZFRvb2wnOiB0b29sYmFyRGF0YS5zZWxlY3RlZEFsaWdubWVudCA9PT0gJ2p1c3RpZnlSaWdodCd9XCI+PG1hdC1pY29uPiBmb3JtYXRfYWxpZ25fcmlnaHQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2xvclR5cGVcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInNvbGlkXCIgW25nQ2xhc3NdPVwieydzb2xpZENvbG9yU2VsZWN0ZWQnOiBzZWxlY3RlZENvbG9yVHlwZSA9PT0gJ1NPTElEJ31cIiAoY2xpY2spPVwic2VsZWN0ZWRDb2xvclR5cGUgPSAnU09MSUQnXCI+U29saWQ8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImdyYWRpZW50XCIgW25nQ2xhc3NdPVwieydncmFkaWVudENvbG9yU2VsZWN0ZWQnOiBzZWxlY3RlZENvbG9yVHlwZSA9PT0gJ0dSQURJRU5UJ31cIiAoY2xpY2spPVwic2VsZWN0ZWRDb2xvclR5cGUgPSAnR1JBRElFTlQnXCI+R3JhZGllbnQ8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxidXR0b24gY2xhc3M9XCJ0b29sIGNvbG9yLXBpY2tlci1idG5cIiAoY2xpY2spPVwib3BlbkNvbG9yUGlja2VyKClcIiAqbmdJZj1cInNlbGVjdGVkQ29sb3JUeXBlID09PSAnU09MSUQnXCI+XHJcbiAgICAgIDxtYXQtaWNvbj5mb3JtYXRfY29sb3JfdGV4dDwvbWF0LWljb24+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwiY29sb3JcIiAjY29sb3JQaWNrZXIgY2xhc3M9XCJoaWRkZW4tY29sb3ItcGlja2VyXCIgKGlucHV0KT1cImNoYW5nZUNvbG9yKCRldmVudClcIiBbKG5nTW9kZWwpXT1cInRvb2xiYXJEYXRhLnNlbGVjdGVkQ29sb3JcIj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sb3JUeXBlXCIgKm5nSWY9XCJzZWxlY3RlZENvbG9yVHlwZSA9PT0gJ0dSQURJRU5UJ1wiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCBjb2xvci1waWNrZXItYnRuXCIgKGNsaWNrKT1cIm9wZW5Db2xvclBpY2tlcigpOyBwcmltYXJ5Q29sb3JQaWNrZXIuY2xpY2soKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwicHJpbWFyeUNvbG9yXCI+Zm9ybWF0X2NvbG9yX3RleHQ8L21hdC1pY29uPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY29sb3JcIiAjcHJpbWFyeUNvbG9yUGlja2VyIGNsYXNzPVwiaGlkZGVuLWNvbG9yLXBpY2tlclwiIChpbnB1dCk9XCJjaGFuZ2VHcmFkaWVudENvbG9yKClcIiBbKG5nTW9kZWwpXT1cInByaW1hcnlDb2xvclwiPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvb2wgY29sb3ItcGlja2VyLWJ0blwiIChjbGljayk9XCJvcGVuQ29sb3JQaWNrZXIoKTsgc2Vjb25kYXJ5Q29sb3JQaWNrZXIuY2xpY2soKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwic2Vjb25kYXJ5Q29sb3JcIj5mb3JtYXRfY29sb3JfdGV4dDwvbWF0LWljb24+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJjb2xvclwiICNzZWNvbmRhcnlDb2xvclBpY2tlciBjbGFzcz1cImhpZGRlbi1jb2xvci1waWNrZXJcIiAoaW5wdXQpPVwiY2hhbmdlR3JhZGllbnRDb2xvcigpXCIgWyhuZ01vZGVsKV09XCJzZWNvbmRhcnlDb2xvclwiPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwic3VnZ2VzdGlvbi1ib3hcIiBbbmdTdHlsZV09XCJ7J3RvcC5weCc6IHN1Z2dlc3Rpb25ZfVwiIFtzdHlsZS5yaWdodF09XCJyaWdodFplcm8gPyAnMHB4JyA6ICdhdXRvJ1wiIFtzdHlsZS5sZWZ0XT1cIiFyaWdodFplcm8gPyAnMHB4JyA6ICdhdXRvJ1wiICpuZ0lmPVwiZWRpdGFibGUgJiYgbGFiZWwgJiYgc2hvd1N1Z2dlc3Rpb25cIiAjc3VnZ2VzdGlvbj5cclxuICAgIDxkaXYgY2xhc3M9XCJzdWdnZXN0aW9uXCIgKGNsaWNrKT1cInJlZ2VuZXJhdGVUZXh0KClcIj5cclxuICAgICAgPGltZyBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzg4NzQ5M2MxNzQyMjczOTcwMTUxRnJhbWUlMjAxMjQ0ODMxNzQwLnBuZ1wiIGFsdD1cIlwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxwIGNsYXNzPVwibmFtZVwiPlJlZ2VuZXJhdGUgVGV4dDwvcD5cclxuICAgICAgICA8cCBjbGFzcz1cImRlc2NcIj5HZXQgYSBmcmVzaCB2YXJpYXRpb24gb2YgYSBjdXJyZW50IHRleHQ8L3A+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
370
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7QUFnQnZELE1BQU0sT0FBTyxtQkFBbUI7SUFnQzlCLFlBQW9CLGFBQW9DLEVBQ3pCLFVBQWtCO1FBRDdCLGtCQUFhLEdBQWIsYUFBYSxDQUF1QjtRQUN6QixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBMUJ4QyxVQUFLLEdBQVcscUNBQXFDLENBQUM7UUFDckQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzFDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFJbkMsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUNiLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNoQixjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLG1CQUFjLEdBQVksS0FB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LFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT3V0cHV0LCBQTEFURk9STV9JRCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29udGVudGVkaXRhYmxlVmFsdWVBY2Nlc3NvciB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50ZWRpdGFibGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbGVtZW50U2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi9lZGl0b3Itc2VydmljZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tdGV4dC1lZGl0b3InLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBDb250ZW50ZWRpdGFibGVWYWx1ZUFjY2Vzc29yLFxyXG4gICAgTWF0SWNvbk1vZHVsZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdGV4dC1lZGl0b3IuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFRleHRFZGl0b3JDb21wb25lbnQge1xyXG4gIEBWaWV3Q2hpbGQoJ3Rvb2xiYXInLCB7IHN0YXRpYzogZmFsc2UgfSkgdG9vbGJhciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnZWRpdG9yJywgeyBzdGF0aWM6IGZhbHNlIH0pIGVkaXRvciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnY29sb3JQaWNrZXInKSBjb2xvclBpY2tlciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgncGFyZW50RWxlbWVudCcpIHBhcmVudEVsZW1lbnQhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3N1Z2dlc3Rpb24nLCB7IHN0YXRpYzogZmFsc2UgfSkgc3VnZ2VzdGlvbiE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmcgPSAnPHA+SGVsbG8gdGhpcyBpcyBwYWxhc2ggbWFraGlqYTwvcD4nO1xyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBJbnB1dCgpIGVkaXRhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2VjdGlvbklkPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nO1xyXG5cclxuICBzaG93ID0gZmFsc2U7XHJcbiAgdG9vbGJhclkgPSAwO1xyXG4gIHN1Z2dlc3Rpb25ZID0gMDtcclxuICByaWdodFplcm86IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHNob3dTdWdnZXN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdG9vbGJhckRhdGE6IGFueSA9IHtcclxuICAgIHNlbGVjdGVkSGVhZGluZzogJycsXHJcbiAgICBpc0JvbGQ6IGZhbHNlLFxyXG4gICAgaXNJdGFsaWM6IGZhbHNlLFxyXG4gICAgaXNVbmRlcmxpbmVkOiBmYWxzZSxcclxuICAgIHNlbGVjdGVkU2l6ZTogJycsXHJcbiAgICBzZWxlY3RlZExpc3Q6ICcnLFxyXG4gICAgc2VsZWN0ZWRBbGlnbm1lbnQ6ICcnLFxyXG4gICAgc2VsZWN0ZWRDb2xvcjogJyMwMDAwMDAnXHJcbiAgfVxyXG4gIHNlbGVjdGVkQ29sb3JUeXBlOiAnU09MSUQnIHwgJ0dSQURJRU5UJyA9ICdTT0xJRCc7XHJcbiAgcHJpbWFyeUNvbG9yOiBzdHJpbmcgPSAnIzAwMDAwMCc7XHJcbiAgc2Vjb25kYXJ5Q29sb3I6IHN0cmluZyA9ICcjMDAwMDAwJztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlZGl0b3JTZXJ2aWNlOiBFbGVtZW50U2VydmljZVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oaWRlVG9vbGJhci5iaW5kKHRoaXMpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oaWRlVG9vbGJhci5iaW5kKHRoaXMpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBzaG93VG9vbGJhcihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpIHx8ICF0aGlzLmVkaXRhYmxlKSByZXR1cm47XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG4gICAgaWYgKHNlbGVjdGlvbiA9PSBudWxsKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcclxuICAgIGNvbnN0IHJlY3QgPSByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IHBhcmVudFJlY3QgPSB0aGlzLnBhcmVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IHRvcEZyb21QYXJlbnQgPSByZWN0LnRvcCAtIHBhcmVudFJlY3QudG9wO1xyXG5cclxuICAgIGlmIChzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnJhbmdlQ291bnQgPiAwKSB7XHJcbiAgICAgIHRoaXMuc3VnZ2VzdGlvblkgPSB0b3BGcm9tUGFyZW50ICsgMzA7XHJcbiAgICAgIHRoaXMuc2hvd1N1Z2dlc3Rpb24gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnRvU3RyaW5nKCkudHJpbSgpICE9PSAnJykge1xyXG4gICAgICBjb25zdCB0b29sYmFyV2lkdGggPSA1NDE7XHJcblxyXG4gICAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICAgIGNvbnN0IHJpZ2h0UG9zaXRvbiA9IHZpZXdwb3J0V2lkdGggLSBwYXJlbnRSZWN0LmxlZnQ7XHJcbiAgICAgIGlmIChyaWdodFBvc2l0b24gKyB0b29sYmFyV2lkdGggPiB2aWV3cG9ydFdpZHRoKSB7XHJcbiAgICAgICAgdGhpcy5yaWdodFplcm8gPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJpZ2h0WmVybyA9IHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudG9vbGJhclkgPSB0b3BGcm9tUGFyZW50ICsgMzA7XHJcblxyXG4gICAgICB0aGlzLnJlRm9ybWF0dGluZ0RhdGEoKTtcclxuICAgICAgdGhpcy5yZWFkRm9ybWF0dGluZ1Byb3BlcnRpZXMoKTtcclxuXHJcbiAgICAgIHRoaXMuc2hvdyA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhpZGVUb29sYmFyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHwgIXRoaXMuZWRpdGFibGUpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBjbGlja2VkSW5zaWRlRWRpdG9yID0gdGhpcy5lZGl0b3I/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcclxuICAgIGNvbnN0IGNsaWNrZWRJbnNpZGVUb29sYmFyID0gdGhpcy50b29sYmFyPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XHJcbiAgICBjb25zdCBjbGlja2VkSW5zaWRlU3VnZ2VzdGlvbiA9IHRoaXMuc3VnZ2VzdGlvbj8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xyXG5cclxuICAgIC8vIEhpZGUgdGhlIHRvb2xiYXIgaWYgdGhlIGNsaWNrIGlzIG91dHNpZGUgYm90aCB0aGUgZWRpdG9yIGFuZCB0b29sYmFyXHJcbiAgICBpZiAoIWNsaWNrZWRJbnNpZGVFZGl0b3IgJiYgIWNsaWNrZWRJbnNpZGVUb29sYmFyKSB7XHJcbiAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFjbGlja2VkSW5zaWRlRWRpdG9yICYmICFjbGlja2VkSW5zaWRlU3VnZ2VzdGlvbikge1xyXG4gICAgICB0aGlzLnNob3dTdWdnZXN0aW9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtYXRUZXh0KGNvbW1hbmQ6IHN0cmluZywgdmFsdWU6IHN0cmluZyA9ICcnKSB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcclxuXHJcbiAgICAvLyAgIGlmIChjb21tYW5kID09PSAnZm9ybWF0QmxvY2snKSB7XHJcbiAgICAvLyAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG4gICAgLy8gICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5yYW5nZUNvdW50ID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgLy8gICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XHJcbiAgICAvLyAgICAgY29uc3Qgc2VsZWN0ZWRUZXh0ID0gc2VsZWN0aW9uLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgLy8gICAgIGlmIChzZWxlY3RlZFRleHQpIHtcclxuICAgIC8vICAgICAgICAgY29uc3QgbmV3RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodmFsdWUpO1xyXG4gICAgLy8gICAgICAgICBuZXdFbGVtZW50LnRleHRDb250ZW50ID0gc2VsZWN0ZWRUZXh0O1xyXG5cclxuICAgIC8vICAgICAgICAgcmFuZ2UuZGVsZXRlQ29udGVudHMoKTtcclxuICAgIC8vICAgICAgICAgcmFuZ2UuaW5zZXJ0Tm9kZShuZXdFbGVtZW50KTtcclxuXHJcbiAgICAvLyAgICAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRIZWFkaW5nID0gdmFsdWU7XHJcbiAgICAvLyAgICAgICAgIHJldHVybjtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyB9XHJcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZChjb21tYW5kLCBmYWxzZSwgdmFsdWUpO1xyXG5cclxuICAgIGlmIChjb21tYW5kID09PSAnYm9sZCcpXHJcbiAgICAgIHRoaXMudG9vbGJhckRhdGEuaXNCb2xkID0gIXRoaXMudG9vbGJhckRhdGEuaXNCb2xkO1xyXG4gICAgaWYgKGNvbW1hbmQgPT09ICdpdGFsaWMnKVxyXG4gICAgICB0aGlzLnRvb2xiYXJEYXRhLmlzSXRhbGljID0gIXRoaXMudG9vbGJhckRhdGEuaXNJdGFsaWM7XHJcbiAgICBpZiAoY29tbWFuZCA9PT0gJ3VuZGVybGluZScpXHJcbiAgICAgIHRoaXMudG9vbGJhckRhdGEuaXNVbmRlcmxpbmVkID0gIXRoaXMudG9vbGJhckRhdGEuaXNVbmRlcmxpbmVkXHJcbiAgICBpZiAoY29tbWFuZCA9PT0gJ2luc2VydE9yZGVyZWRMaXN0JyB8fCBjb21tYW5kID09PSAnaW5zZXJ0VW5vcmRlcmVkTGlzdCcpXHJcbiAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRMaXN0ID0gY29tbWFuZCA9PT0gdGhpcy50b29sYmFyRGF0YS5zZWxlY3RlZExpc3QgPyAnJyA6IGNvbW1hbmQ7XHJcbiAgICBpZiAoY29tbWFuZCA9PT0gJ2p1c3RpZnlMZWZ0JyB8fCBjb21tYW5kID09PSAnanVzdGlmeUNlbnRlcicgfHwgY29tbWFuZCA9PT0gJ2p1c3RpZnlSaWdodCcpXHJcbiAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRBbGlnbm1lbnQgPSBjb21tYW5kID09PSB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkQWxpZ25tZW50ID8gJycgOiBjb21tYW5kO1xyXG4gICAgaWYgKGNvbW1hbmQgPT09ICdmb3JtYXRCbG9jaycpXHJcbiAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRIZWFkaW5nID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VGb250U2l6ZShldmVudDogYW55KSB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBzaXplID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG5cclxuICAgIC8vIEFwcGx5IGEgZGVmYXVsdCBzaXplIG9mIDQgKG5lZWRlZCBmb3IgZXhlY0NvbW1hbmQgdG8gd29yaylcclxuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdmb250U2l6ZScsIGZhbHNlLCAnNCcpO1xyXG5cclxuICAgIC8vIENvbnZlcnQgc2VsZWN0ZWQgZm9udCBlbGVtZW50cyB0byBoYXZlIGFjdHVhbCBmb250LXNpemUgaW5zdGVhZCBvZiBcInNpemVcIiBhdHRyaWJ1dGVcclxuICAgIGNvbnN0IGVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImZvbnRbc2l6ZT0nNCddXCIpO1xyXG4gICAgZWxlbWVudHMuZm9yRWFjaChlbCA9PiB7XHJcbiAgICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gZWwgYXMgSFRNTEVsZW1lbnQ7IC8vIOKchSBFeHBsaWNpdGx5IGNhc3QgdG8gSFRNTEVsZW1lbnRcclxuICAgICAgaHRtbEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdzaXplJyk7IC8vIFJlbW92ZSBvbGQgc2l6ZSBhdHRyaWJ1dGVcclxuICAgICAgaHRtbEVsZW1lbnQuc3R5bGUuZm9udFNpemUgPSBzaXplOyAvLyBBcHBseSBDU1MgZm9udCBzaXplXHJcbiAgICB9KTtcclxuICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRTaXplID0gc2l6ZTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmVkaXRvci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCk7XHJcbiAgICAvLyB0aGlzLnNob3cgPSBmYWxzZTsgLy8gSGlkZSB0b29sYmFyIGFmdGVyIGFjdGlvblxyXG4gIH1cclxuXHJcbiAgY2hhbmdlQ29sb3IoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XHJcbiAgICB0aGlzLnJlc3RvcmVTZWxlY3Rpb24oKTsgLy8gUmVzdG9yZSBzZWxlY3Rpb24gYmVmb3JlIHRvdWNoaW5nIERPTVxyXG5cclxuICAgIGNvbnN0IGNvbG9yID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgLy8gR3JhYiBjdXJyZW50IHNlbGVjdGlvblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG4gICAgaWYgKHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24ucmFuZ2VDb3VudCA+IDApIHtcclxuICAgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcclxuICAgICAgbGV0IHRhcmdldE5vZGU6IE5vZGUgfCBudWxsID0gcmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXI7XHJcblxyXG4gICAgICBpZiAoIXRhcmdldE5vZGUpIHJldHVybjtcclxuICAgICAgLy8gSWYgaXQncyBhIHRleHQgbm9kZSwgd29yayB3aXRoIGl0cyBwYXJlbnQgZWxlbWVudFxyXG4gICAgICBpZiAodGFyZ2V0Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgJiYgdGFyZ2V0Tm9kZS5wYXJlbnRFbGVtZW50KSB7XHJcbiAgICAgICAgdGFyZ2V0Tm9kZSA9IHRhcmdldE5vZGUucGFyZW50RWxlbWVudDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRhcmdldE5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IGVsID0gdGFyZ2V0Tm9kZSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAgICAgLy8gMSkgSWYgaXQgKmhhcyogZ3JhZGllbnQgc3R5bGluZywgc3RyaXAgaXQgb2ZmIGFuZCBpbW1lZGlhdGVseSBhcHBseSB5b3VyIHNvbGlkIGNvbG9yXHJcbiAgICAgICAgY29uc3QgaGFzR3JhZGllbnQgPVxyXG4gICAgICAgICAgZWwuc3R5bGUuYmFja2dyb3VuZENsaXAgPT09ICd0ZXh0JyB8fFxyXG4gICAgICAgICAgZWwuc3R5bGUud2Via2l0QmFja2dyb3VuZENsaXAgPT09ICd0ZXh0JztcclxuXHJcbiAgICAgICAgaWYgKGhhc0dyYWRpZW50KSB7XHJcbiAgICAgICAgICBlbC5zdHlsZS5iYWNrZ3JvdW5kID0gJyc7XHJcbiAgICAgICAgICBlbC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9ICcnO1xyXG4gICAgICAgICAgZWwuc3R5bGUud2Via2l0QmFja2dyb3VuZENsaXAgPSAnJztcclxuICAgICAgICAgIGVsLnN0eWxlLndlYmtpdFRleHRGaWxsQ29sb3IgPSAnJztcclxuICAgICAgICAgIGVsLnN0eWxlLmNvbG9yID0gY29sb3I7XHJcblxyXG4gICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuZWRpdG9yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKTtcclxuICAgICAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRDb2xvciA9IGNvbG9yO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gMikgSWYgKm5vKiBncmFkaWVudCBzdHlsaW5nLCBsb29rIGZvciBhbnkgPHNwYW4+IHdyYXBwZXJzIGFuZCB1bndyYXAgdGhlbVxyXG4gICAgICAgIC8vICAgIHNvIHRoYXQgb3VyIGV4ZWNDb21tYW5kKCdmb3JlQ29sb3InKSBjYW4gY2xlYW5seSBhcHBseSB0byBwbGFpbiB0ZXh0XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBzcGFucyA9IHRoaXMuZWRpdG9yLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc3BhbicpO1xyXG4gICAgc3BhbnMuZm9yRWFjaCgoc3BhbjogYW55KSA9PiB7XHJcbiAgICAgIC8vIE9ubHkgdW53cmFwIHNwYW5zIHRoYXQgKmRvbuKAmXQqIGNhcnJ5IGdyYWRpZW504oCUaS5lLiBzdHJpcHMgYW55IHJlc2lkdWFsIHRhZ3NcclxuICAgICAgY29uc3QgcGFyZW50ID0gc3Bhbi5wYXJlbnROb2RlITtcclxuICAgICAgd2hpbGUgKHNwYW4uZmlyc3RDaGlsZCkge1xyXG4gICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoc3Bhbi5maXJzdENoaWxkLCBzcGFuKTtcclxuICAgICAgfVxyXG4gICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQoc3Bhbik7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyAzKSBGaW5hbGx5LCB1c2UgdGhlIGxlZ2FjeSBleGVjQ29tbWFuZCBmb3Igc29saWQgY29sb3JcclxuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdmb3JlQ29sb3InLCBmYWxzZSwgY29sb3IpO1xyXG5cclxuICAgIC8vIFVwZGF0ZSB0b29sYmFyIHN0YXRlXHJcbiAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkQ29sb3IgPSBjb2xvcjtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmVkaXRvci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUZXh0KGV2ZW50OiBFdmVudCkge1xyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5lZGl0b3IubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpXHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5lZGl0b3IubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpO1xyXG4gIH1cclxuXHJcbiAgb25Gb3JtYXRDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MU2VsZWN0RWxlbWVudCkudmFsdWU7XHJcbiAgICB0aGlzLmZvcm1hdFRleHQoJ2Zvcm1hdEJsb2NrJywgc2VsZWN0ZWRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb3BlbkNvbG9yUGlja2VyKCkge1xyXG4gICAgLy8gdGhpcy5jb2xvclBpY2tlci5uYXRpdmVFbGVtZW50LmNsaWNrKCk7IC8vIFByb2dyYW1tYXRpY2FsbHkgdHJpZ2dlciBpbnB1dFxyXG4gICAgdGhpcy5zYXZlU2VsZWN0aW9uKCk7IC8vIFNhdmUgdGhlIGN1cnJlbnQgc2VsZWN0aW9uXHJcbiAgfVxyXG5cclxuICByZWFkRm9ybWF0dGluZ1Byb3BlcnRpZXMoKSB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XHJcbiAgICBpZiAoIXNlbGVjdGlvbikgcmV0dXJuO1xyXG4gICAgY29uc3Qgbm9kZSA9IHNlbGVjdGlvbi5mb2N1c05vZGUgYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgbm9kZSBpcyBudWxsXHJcbiAgICBpZiAoIW5vZGUpIHJldHVybjtcclxuXHJcbiAgICBsZXQgZWxlbWVudCA9IG5vZGUucGFyZW50RWxlbWVudDtcclxuICAgIHdoaWxlIChlbGVtZW50KSB7XHJcbiAgICAgIGNvbnN0IG5vZGVOYW1lID0gZWxlbWVudC5ub2RlTmFtZTtcclxuXHJcbiAgICAgIGlmIChub2RlTmFtZSA9PT0gJ0gxJyB8fCBub2RlTmFtZSA9PT0gJ0gyJyB8fCBub2RlTmFtZSA9PT0gJ0gzJykge1xyXG4gICAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRIZWFkaW5nID0gbm9kZU5hbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09ICdCJyB8fCBub2RlTmFtZSA9PT0gJ1NUUk9ORycpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLmlzQm9sZCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09ICdJJyB8fCBub2RlTmFtZSA9PT0gJ0VNJykge1xyXG4gICAgICAgIHRoaXMudG9vbGJhckRhdGEuaXNJdGFsaWMgPSB0cnVlO1xyXG4gICAgICB9IGVsc2UgaWYgKG5vZGVOYW1lID09PSAnVScpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLmlzVW5kZXJsaW5lZCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09ICdPTCcpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkTGlzdCA9ICdpbnNlcnRPcmRlcmVkTGlzdCc7XHJcbiAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09ICdVTCcpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkTGlzdCA9ICdpbnNlcnRVbm9yZGVyZWRMaXN0JztcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0eWxlLnRleHRBbGlnbikge1xyXG4gICAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRBbGlnbm1lbnQgPSBganVzdGlmeSR7ZWxlbWVudC5zdHlsZS50ZXh0QWxpZ24uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBlbGVtZW50LnN0eWxlLnRleHRBbGlnbi5zbGljZSgxKX1gO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc3R5bGUuZm9udFNpemUpIHtcclxuICAgICAgICB0aGlzLnRvb2xiYXJEYXRhLnNlbGVjdGVkU2l6ZSA9IGVsZW1lbnQuc3R5bGUuZm9udFNpemU7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zdHlsZS5jb2xvcikge1xyXG4gICAgICAgIHRoaXMudG9vbGJhckRhdGEuc2VsZWN0ZWRDb2xvciA9IGVsZW1lbnQuc3R5bGUuY29sb3JcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZUZvcm1hdHRpbmdEYXRhKCkge1xyXG4gICAgdGhpcy50b29sYmFyRGF0YSA9IHtcclxuICAgICAgc2VsZWN0ZWRIZWFkaW5nOiAnJyxcclxuICAgICAgaXNCb2xkOiBmYWxzZSxcclxuICAgICAgaXNJdGFsaWM6IGZhbHNlLFxyXG4gICAgICBpc1VuZGVybGluZWQ6IGZhbHNlLFxyXG4gICAgICBzZWxlY3RlZFNpemU6ICcnLFxyXG4gICAgICBzZWxlY3RlZExpc3Q6ICcnLFxyXG4gICAgICBzZWxlY3RlZEFsaWdubWVudDogJycsXHJcbiAgICAgIHNlbGVjdGVkQ29sb3I6ICcnXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VHcmFkaWVudENvbG9yKCkge1xyXG4gICAgdGhpcy5yZXN0b3JlU2VsZWN0aW9uKCk7IC8vIFJlc3RvcmUgdGhlIHNlbGVjdGlvbiBiZWZvcmUgYXBwbHlpbmcgZ3JhZGllbnRcclxuICAgIGNvbnN0IGNvbG9yID0gYGxpbmVhci1ncmFkaWVudCg5MGRlZywgJHt0aGlzLnByaW1hcnlDb2xvcn0gMCUsICR7dGhpcy5zZWNvbmRhcnlDb2xvcn0gMTAwJSlgXHJcbiAgICB0aGlzLmFwcGx5R3JhZGllbnRUb1RleHQoY29sb3IpXHJcbiAgfVxyXG5cclxuICBhcHBseUdyYWRpZW50VG9UZXh0KGdyYWRpZW50VmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG4gICAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDApIHJldHVybjtcclxuXHJcbiAgICAvLyBHZXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHJhbmdlXHJcbiAgICBjb25zdCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xyXG5cclxuICAgIC8vIENoZWNrIGlmIHRoZSByYW5nZSBpcyB2YWxpZCBmb3Igd3JhcHBpbmdcclxuICAgIGlmICghcmFuZ2UgfHwgcmFuZ2UuY29sbGFwc2VkKSByZXR1cm47XHJcblxyXG4gICAgLy8gRXh0cmFjdCB0aGUgc2VsZWN0ZWQgY29udGVudFxyXG4gICAgY29uc3Qgc2VsZWN0ZWRDb250ZW50ID0gcmFuZ2UuZXh0cmFjdENvbnRlbnRzKCk7XHJcblxyXG4gICAgY29uc3Qgc3BhbnMgPSB0aGlzLmVkaXRvci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NwYW4nKTtcclxuICAgIHNwYW5zLmZvckVhY2goKHNwYW46IGFueSkgPT4ge1xyXG4gICAgICAvLyBPbmx5IHVud3JhcCBzcGFucyB0aGF0ICpkb27igJl0KiBjYXJyeSBncmFkaWVudOKAlGkuZS4gc3RyaXBzIGFueSByZXNpZHVhbCB0YWdzXHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IHNwYW4ucGFyZW50Tm9kZSE7XHJcbiAgICAgIHdoaWxlIChzcGFuLmZpcnN0Q2hpbGQpIHtcclxuICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHNwYW4uZmlyc3RDaGlsZCwgc3Bhbik7XHJcbiAgICAgIH1cclxuICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHNwYW4pO1xyXG4gICAgfSk7XHJcblxyXG5cclxuICAgIC8vIENyZWF0ZSBhIG5ldyA8c3Bhbj4gZWxlbWVudCB0byB3cmFwIHRoZSBzZWxlY3RlZCB0ZXh0XHJcbiAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgc3Bhbi5zdHlsZS5iYWNrZ3JvdW5kID0gZ3JhZGllbnRWYWx1ZTtcclxuICAgIHNwYW4uc3R5bGUuYmFja2dyb3VuZENsaXAgPSAndGV4dCc7XHJcbiAgICBzcGFuLnN0eWxlLndlYmtpdEJhY2tncm91bmRDbGlwID0gJ3RleHQnO1xyXG4gICAgc3Bhbi5zdHlsZS5jb2xvciA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICBzcGFuLnN0eWxlLndlYmtpdFRleHRGaWxsQ29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG5cclxuICAgIC8vIEFwcGVuZCB0aGUgc2VsZWN0ZWQgY29udGVudCB0byB0aGUgPHNwYW4+XHJcbiAgICBzcGFuLmFwcGVuZENoaWxkKHNlbGVjdGVkQ29udGVudCk7XHJcblxyXG4gICAgLy8gSW5zZXJ0IHRoZSA8c3Bhbj4gYmFjayBpbnRvIHRoZSByYW5nZVxyXG4gICAgcmFuZ2UuaW5zZXJ0Tm9kZShzcGFuKTtcclxuXHJcbiAgICAvLyBDbGVhciB0aGUgc2VsZWN0aW9uXHJcbiAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XHJcblxyXG4gICAgLy8gRW1pdCB0aGUgdXBkYXRlZCBIVE1MIGNvbnRlbnRcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmVkaXRvci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcmVnZW5lcmF0ZVRleHQoKSB7XHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgYnVzaW5lc3NJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2J1c2luZXNzSWQnKSxcclxuICAgICAgZGF0YUlkOiB0aGlzLnNlY3Rpb25JZCxcclxuICAgICAgc3ViSW5kdXN0cnlJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3N1YkluZHVzdHJ5SWQnKSxcclxuICAgICAgc3VnZ2VzdGVkRGF0YVR5cGU6ICdDT01QT05FTlQnLFxyXG4gICAgICB0b25lOiAnUFJPRkVTU0lPTkFMJyxcclxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXHJcbiAgICAgIGxhYmVsOiB0aGlzLmxhYmVsXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnJlZ2VuZXJhdGVUZXh0KHBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHJlcy5kYXRhO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2F2ZWRSYW5nZTogUmFuZ2UgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gIHNhdmVTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XHJcbiAgICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5yYW5nZUNvdW50ID4gMCkge1xyXG4gICAgICB0aGlzLnNhdmVkUmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc3RvcmVTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zYXZlZFJhbmdlKSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcclxuICAgICAgc2VsZWN0aW9uPy5yZW1vdmVBbGxSYW5nZXMoKTtcclxuICAgICAgc2VsZWN0aW9uPy5hZGRSYW5nZSh0aGlzLnNhdmVkUmFuZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZWRpdG9yLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsnYm9yZGVyJzogZWRpdGFibGV9XCIgI3BhcmVudEVsZW1lbnQ+XHJcbiAgPGRpdiBbY29udGVudGVkaXRhYmxlXT1cImVkaXRhYmxlXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIGNsYXNzPVwiZWRpdGFibGUtdGV4dFwiIChtb3VzZXVwKT1cInNob3dUb29sYmFyKCRldmVudClcIiAjZWRpdG9yXHJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVUZXh0KCRldmVudClcIiAobW91c2Vkb3duKT1cImhpZGVUb29sYmFyKCRldmVudClcIj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInRvb2xiYXJcIiAqbmdJZj1cImVkaXRhYmxlICYmIHNob3dcIiBbbmdTdHlsZV09XCJ7J3RvcC5weCc6IHRvb2xiYXJZfVwiIFtzdHlsZS5yaWdodF09XCJyaWdodFplcm8gPyAnMHB4JyA6ICdhdXRvJ1wiIFtzdHlsZS5sZWZ0XT1cIiFyaWdodFplcm8gPyAnMHB4JyA6ICdhdXRvJ1wiICN0b29sYmFyID5cclxuICAgIDwhLS0gPHNlbGVjdCBjbGFzcz1cInRvb2xcIiAoY2hhbmdlKT1cIm9uRm9ybWF0Q2hhbmdlKCRldmVudClcIiBbKG5nTW9kZWwpXT1cInRvb2xiYXJEYXRhLnNlbGVjdGVkSGVhZGluZ1wiPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiSDFcIj5IZWFkaW5nMTwvb3B0aW9uPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiSDJcIj5IZWFkaW5nMjwvb3B0aW9uPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiSDNcIj5IZWFkaW5nMzwvb3B0aW9uPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiZGl2XCI+VGV4dDwvb3B0aW9uPlxyXG4gICAgPC9zZWxlY3Q+IC0tPlxyXG5cclxuICAgIDxidXR0b24gY2xhc3M9XCJ0b29sXCIgKGNsaWNrKT1cImZvcm1hdFRleHQoJ2JvbGQnKVwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRUb29sJzogdG9vbGJhckRhdGEuaXNCb2xkfVwiPjxtYXQtaWNvbj4gZm9ybWF0X2JvbGQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInRvb2xcIiAoY2xpY2spPVwiZm9ybWF0VGV4dCgnaXRhbGljJylcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVG9vbCc6IHRvb2xiYXJEYXRhLmlzSXRhbGljfVwiPjxtYXQtaWNvbj4gZm9ybWF0X2l0YWxpYzwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbFwiIChjbGljayk9XCJmb3JtYXRUZXh0KCd1bmRlcmxpbmUnKVwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRUb29sJzogdG9vbGJhckRhdGEuaXNVbmRlcmxpbmVkfVwiPjxtYXQtaWNvbj4gZm9ybWF0X3VuZGVybGluZWQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG5cclxuICAgIDxzZWxlY3QgY2xhc3M9XCJ0b29sXCIgKGNoYW5nZSk9XCJjaGFuZ2VGb250U2l6ZSgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJ0b29sYmFyRGF0YS5zZWxlY3RlZFNpemVcIj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiIHNlbGVjdGVkPkRlZmF1bHQ8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cImNsYW1wKDAuNzVyZW0sIDJ2dywgMXJlbSlcIj5TbWFsbDwvb3B0aW9uPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiY2xhbXAoMXJlbSwgM3Z3LCAxLjVyZW0pXCI+TWVkaXVtPC9vcHRpb24+XHJcbiAgICAgIDxvcHRpb24gdmFsdWU9XCJjbGFtcCgxLjI1cmVtLCA0dncsIDJyZW0pXCI+TGFyZ2U8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cImNsYW1wKDJyZW0sIDV2dywgM3JlbSlcIj5FeHRyYSBMYXJnZTwvb3B0aW9uPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiY2xhbXAoMy4xcmVtLCA3dncsIDQuNXJlbSlcIj5IdWdlPC9vcHRpb24+XHJcbiAgICA8L3NlbGVjdD5cclxuXHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbFwiIChjbGljayk9XCJmb3JtYXRUZXh0KCdpbnNlcnRPcmRlcmVkTGlzdCcpXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZFRvb2wnOiB0b29sYmFyRGF0YS5zZWxlY3RlZExpc3QgPT09ICdpbnNlcnRPcmRlcmVkTGlzdCd9XCI+PG1hdC1pY29uPmZvcm1hdF9saXN0X251bWJlcmVkPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJ0b29sXCIgKGNsaWNrKT1cImZvcm1hdFRleHQoJ2luc2VydFVub3JkZXJlZExpc3QnKVwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRUb29sJzogdG9vbGJhckRhdGEuc2VsZWN0ZWRMaXN0ID09PSAnaW5zZXJ0VW5vcmRlcmVkTGlzdCd9XCI+PG1hdC1pY29uPiBmb3JtYXRfbGlzdF9idWxsZXRlZDwvbWF0LWljb24+PC9idXR0b24+XHJcblxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInRvb2xcIiAoY2xpY2spPVwiZm9ybWF0VGV4dCgnanVzdGlmeUxlZnQnKVwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRUb29sJzogdG9vbGJhckRhdGEuc2VsZWN0ZWRBbGlnbm1lbnQgPT09ICdqdXN0aWZ5TGVmdCd9XCI+PG1hdC1pY29uPiBmb3JtYXRfYWxpZ25fbGVmdDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidG9vbFwiIChjbGljayk9XCJmb3JtYXRUZXh0KCdqdXN0aWZ5Q2VudGVyJylcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkVG9vbCc6IHRvb2xiYXJEYXRhLnNlbGVjdGVkQWxpZ25tZW50ID09PSAnanVzdGlmeUNlbnRlcid9XCI+PG1hdC1pY29uPiBmb3JtYXRfYWxpZ25fY2VudGVyPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJ0b29sXCIgKGNsaWNrKT1cImZvcm1hdFRleHQoJ2p1c3RpZnlSaWdodCcpXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZFRvb2wnOiB0b29sYmFyRGF0YS5zZWxlY3RlZEFsaWdubWVudCA9PT0gJ2p1c3RpZnlSaWdodCd9XCI+PG1hdC1pY29uPiBmb3JtYXRfYWxpZ25fcmlnaHQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2xvclR5cGVcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInNvbGlkXCIgW25nQ2xhc3NdPVwieydzb2xpZENvbG9yU2VsZWN0ZWQnOiBzZWxlY3RlZENvbG9yVHlwZSA9PT0gJ1NPTElEJ31cIiAoY2xpY2spPVwic2VsZWN0ZWRDb2xvclR5cGUgPSAnU09MSUQnXCI+U29saWQ8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImdyYWRpZW50XCIgW25nQ2xhc3NdPVwieydncmFkaWVudENvbG9yU2VsZWN0ZWQnOiBzZWxlY3RlZENvbG9yVHlwZSA9PT0gJ0dSQURJRU5UJ31cIiAoY2xpY2spPVwic2VsZWN0ZWRDb2xvclR5cGUgPSAnR1JBRElFTlQnXCI+R3JhZGllbnQ8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxidXR0b24gY2xhc3M9XCJ0b29sIGNvbG9yLXBpY2tlci1idG5cIiAoY2xpY2spPVwib3BlbkNvbG9yUGlja2VyKClcIiAqbmdJZj1cInNlbGVjdGVkQ29sb3JUeXBlID09PSAnU09MSUQnXCI+XHJcbiAgICAgIDxtYXQtaWNvbj5mb3JtYXRfY29sb3JfdGV4dDwvbWF0LWljb24+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwiY29sb3JcIiAjY29sb3JQaWNrZXIgY2xhc3M9XCJoaWRkZW4tY29sb3ItcGlja2VyXCIgKGlucHV0KT1cImNoYW5nZUNvbG9yKCRldmVudClcIiBbKG5nTW9kZWwpXT1cInRvb2xiYXJEYXRhLnNlbGVjdGVkQ29sb3JcIj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sb3JUeXBlXCIgKm5nSWY9XCJzZWxlY3RlZENvbG9yVHlwZSA9PT0gJ0dSQURJRU5UJ1wiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCBjb2xvci1waWNrZXItYnRuXCIgKGNsaWNrKT1cIm9wZW5Db2xvclBpY2tlcigpOyBwcmltYXJ5Q29sb3JQaWNrZXIuY2xpY2soKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwicHJpbWFyeUNvbG9yXCI+Zm9ybWF0X2NvbG9yX3RleHQ8L21hdC1pY29uPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY29sb3JcIiAjcHJpbWFyeUNvbG9yUGlja2VyIGNsYXNzPVwiaGlkZGVuLWNvbG9yLXBpY2tlclwiIChpbnB1dCk9XCJjaGFuZ2VHcmFkaWVudENvbG9yKClcIiBbKG5nTW9kZWwpXT1cInByaW1hcnlDb2xvclwiPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvb2wgY29sb3ItcGlja2VyLWJ0blwiIChjbGljayk9XCJvcGVuQ29sb3JQaWNrZXIoKTsgc2Vjb25kYXJ5Q29sb3JQaWNrZXIuY2xpY2soKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwic2Vjb25kYXJ5Q29sb3JcIj5mb3JtYXRfY29sb3JfdGV4dDwvbWF0LWljb24+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJjb2xvclwiICNzZWNvbmRhcnlDb2xvclBpY2tlciBjbGFzcz1cImhpZGRlbi1jb2xvci1waWNrZXJcIiAoaW5wdXQpPVwiY2hhbmdlR3JhZGllbnRDb2xvcigpXCIgWyhuZ01vZGVsKV09XCJzZWNvbmRhcnlDb2xvclwiPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwic3VnZ2VzdGlvbi1ib3hcIiBbbmdTdHlsZV09XCJ7J3RvcC5weCc6IHN1Z2dlc3Rpb25ZfVwiIFtzdHlsZS5yaWdodF09XCJyaWdodFplcm8gPyAnMHB4JyA6ICdhdXRvJ1wiIFtzdHlsZS5sZWZ0XT1cIiFyaWdodFplcm8gPyAnMHB4JyA6ICdhdXRvJ1wiICpuZ0lmPVwiZWRpdGFibGUgJiYgbGFiZWwgJiYgc2hvd1N1Z2dlc3Rpb25cIiAjc3VnZ2VzdGlvbj5cclxuICAgIDxkaXYgY2xhc3M9XCJzdWdnZXN0aW9uXCIgKGNsaWNrKT1cInJlZ2VuZXJhdGVUZXh0KClcIj5cclxuICAgICAgPGltZyBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzg4NzQ5M2MxNzQyMjczOTcwMTUxRnJhbWUlMjAxMjQ0ODMxNzQwLnBuZ1wiIGFsdD1cIlwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxwIGNsYXNzPVwibmFtZVwiPlJlZ2VuZXJhdGUgVGV4dDwvcD5cclxuICAgICAgICA8cCBjbGFzcz1cImRlc2NcIj5HZXQgYSBmcmVzaCB2YXJpYXRpb24gb2YgYSBjdXJyZW50IHRleHQ8L3A+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
@@ -22,11 +22,11 @@ export class TopOfImageCardComponent {
|
|
22
22
|
this._eventService.buttonRedirection.emit({ data: this.data.button });
|
23
23
|
}
|
24
24
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: TopOfImageCardComponent, deps: [{ token: i1.EventsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
25
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: TopOfImageCardComponent, isStandalone: true, selector: "simpo-top-of-image-card", inputs: { data: "data", styles: "styles", content: "content", componentId: "componentId", button: "button", edit: "edit" }, ngImport: i0, template: "<!-- <div style=\"position: relative;\">\r\n\r\n <img loading=\"lazy\" [src]=\"data.image.url\" [alt]=\"data.image.altText\" [simpoImageDirective]=\"styles?.image\"\r\n [simpoCorner]=\"styles?.corners\" [id]=\"componentId\" class=\"w-100\" *ngIf=\"content.showImage\">\r\n\r\n <div class=\"content\" [simpoCorner]=\"styles?.corners\" [id]=\"componentId\" [simpoTextBackgroundDirective]=\"styles?.textBackground\">\r\n <div style=\"color: white;\" class=\"heading-medium mb-1\" [innerHtml]=\"data.inputText[0].value\"\r\n *ngIf=\"content.showHeading\"></div>\r\n <div style=\"color: white;\" class=\"body-desc\" [innerHtml]=\"data.inputText[01].value\" *ngIf=\"content.showContent\">\r\n </div>\r\n <app-button-element [buttonData]=\"data?.button\" [sectionId]=\"componentId\" [buttonStyle]=\"styles?.button\" [color]=\"styles?.background?.accentColor\"></app-button-element>\r\n </div>\r\n</div>\r\n -->\r\n<div class=\"top-container\" (click)=\"(content?.display?.showLink && content?.display?.linkType === 'List Item' ? redirectTo() : '')\"\r\n [ngStyle]=\"{'background-image' : content.display.showImage ? 'url('+data.image.url+')' : ''}\"\r\n [simpoCorner]=\"styles?.corners\" [id]=\"componentId\">\r\n <div [simpoImageDirective]=\"styles?.image\" [id]=\"componentId\" *ngIf=\"content.display.showImage\"></div>\r\n <div class=\"content\" [simpoCorner]=\"styles?.corners\" [id]=\"componentId\"\r\n [simpoTextBackgroundDirective]=\"content.display.showImage ? styles?.textBackground : ''\">\r\n <div class=\"heading-medium mb-1 lh-40\" *ngIf=\"content.display.showHeading\">\r\n <simpo-text-editor [(value)]=\"data.inputText[0].value \" [editable]=\"edit || false\"></simpo-text-editor>\r\n\r\n </div>\r\n <div class=\"body-desc\" *ngIf=\"content.display.showContent\">\r\n <simpo-text-editor [(value)]=\"data.inputText[1].value \" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n <div class=\"w-100 d-flex justify-content-center\">\r\n <div *ngIf=\"content.display.showLink && content.display.linkType === 'Button'\" [simpoHoverAnimation]=\"getContentAnimation()\" style=\"width: max-content;\">\r\n <app-button-element [buttonContent]=\"data.button\" [buttonStyle]=\"button?.styles\" [sectionId]=\"componentId\"\r\n [buttonId]=\"button ? button.id : ''\" [color]=\"styles?.background?.accentColor\" [backgroundInfo]=\"
|
25
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: TopOfImageCardComponent, isStandalone: true, selector: "simpo-top-of-image-card", inputs: { data: "data", styles: "styles", content: "content", componentId: "componentId", button: "button", edit: "edit" }, ngImport: i0, template: "<!-- <div style=\"position: relative;\">\r\n\r\n <img loading=\"lazy\" [src]=\"data.image.url\" [alt]=\"data.image.altText\" [simpoImageDirective]=\"styles?.image\"\r\n [simpoCorner]=\"styles?.corners\" [id]=\"componentId\" class=\"w-100\" *ngIf=\"content.showImage\">\r\n\r\n <div class=\"content\" [simpoCorner]=\"styles?.corners\" [id]=\"componentId\" [simpoTextBackgroundDirective]=\"styles?.textBackground\">\r\n <div style=\"color: white;\" class=\"heading-medium mb-1\" [innerHtml]=\"data.inputText[0].value\"\r\n *ngIf=\"content.showHeading\"></div>\r\n <div style=\"color: white;\" class=\"body-desc\" [innerHtml]=\"data.inputText[01].value\" *ngIf=\"content.showContent\">\r\n </div>\r\n <app-button-element [buttonData]=\"data?.button\" [sectionId]=\"componentId\" [buttonStyle]=\"styles?.button\" [color]=\"styles?.background?.accentColor\"></app-button-element>\r\n </div>\r\n</div>\r\n -->\r\n<div class=\"top-container\" (click)=\"(content?.display?.showLink && content?.display?.linkType === 'List Item' ? redirectTo() : '')\"\r\n [ngStyle]=\"{'background-image' : content.display.showImage ? 'url('+data.image.url+')' : ''}\"\r\n [simpoCorner]=\"styles?.corners\" [id]=\"componentId\">\r\n <div [simpoImageDirective]=\"styles?.image\" [id]=\"componentId\" *ngIf=\"content.display.showImage\"></div>\r\n <div class=\"content\" [simpoCorner]=\"styles?.corners\" [id]=\"componentId\"\r\n [simpoTextBackgroundDirective]=\"content.display.showImage ? styles?.textBackground : ''\">\r\n <div class=\"heading-medium mb-1 lh-40\" *ngIf=\"content.display.showHeading\">\r\n <simpo-text-editor [(value)]=\"data.inputText[0].value \" [editable]=\"edit || false\"></simpo-text-editor>\r\n\r\n </div>\r\n <div class=\"body-desc\" *ngIf=\"content.display.showContent\">\r\n <simpo-text-editor [(value)]=\"data.inputText[1].value \" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n <div class=\"w-100 d-flex justify-content-center\">\r\n <div *ngIf=\"content.display.showLink && content.display.linkType === 'Button'\" [simpoHoverAnimation]=\"getContentAnimation()\" style=\"width: max-content;\">\r\n <app-button-element [buttonContent]=\"data.button\" [buttonStyle]=\"button?.styles\" [sectionId]=\"componentId\"\r\n [buttonId]=\"button ? button.id : ''\" [color]=\"styles?.background?.accentColor\" [backgroundInfo]=\"styles?.background\" [edit]=\"edit\"></app-button-element>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".w-100{width:100%}.mb-1{margin-bottom:1rem!important}.content{padding:3rem 1.5rem 1.5rem;min-height:256px;display:flex;flex-direction:column;justify-content:end;bottom:0}.top-container{background-position:center center;background-size:cover;height:100%;position:relative;display:flex;flex-direction:column;justify-content:flex-end}.lh-40{line-height:40px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: ImageDirectiveDirective, selector: "[simpoImageDirective]", inputs: ["simpoImageDirective"] }, { kind: "directive", type: CornerDirective, selector: "[simpoCorner]", inputs: ["simpoCorner"] }, { kind: "directive", type: TextBackgroundDirectiveDirective, selector: "[simpoTextBackgroundDirective]", inputs: ["simpoTextBackgroundDirective"] }, { kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "sectionId", "label"], outputs: ["valueChange"] }, { kind: "component", type: SimpoButtonComponent, selector: "app-button-element", inputs: ["buttonContent", "buttonStyle", "buttonId", "color", "sectionId", "edit", "backgroundInfo"] }, { kind: "directive", type: HoverAnimationDirective, selector: "[simpoHoverAnimation]", inputs: ["simpoHoverAnimation"] }] }); }
|
26
26
|
}
|
27
27
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: TopOfImageCardComponent, decorators: [{
|
28
28
|
type: Component,
|
29
|
-
args: [{ selector: 'simpo-top-of-image-card', standalone: true, imports: [CommonModule, ImageDirectiveDirective, CornerDirective, TextBackgroundDirectiveDirective, TextEditorComponent, SimpoButtonComponent, HoverAnimationDirective], template: "<!-- <div style=\"position: relative;\">\r\n\r\n <img loading=\"lazy\" [src]=\"data.image.url\" [alt]=\"data.image.altText\" [simpoImageDirective]=\"styles?.image\"\r\n [simpoCorner]=\"styles?.corners\" [id]=\"componentId\" class=\"w-100\" *ngIf=\"content.showImage\">\r\n\r\n <div class=\"content\" [simpoCorner]=\"styles?.corners\" [id]=\"componentId\" [simpoTextBackgroundDirective]=\"styles?.textBackground\">\r\n <div style=\"color: white;\" class=\"heading-medium mb-1\" [innerHtml]=\"data.inputText[0].value\"\r\n *ngIf=\"content.showHeading\"></div>\r\n <div style=\"color: white;\" class=\"body-desc\" [innerHtml]=\"data.inputText[01].value\" *ngIf=\"content.showContent\">\r\n </div>\r\n <app-button-element [buttonData]=\"data?.button\" [sectionId]=\"componentId\" [buttonStyle]=\"styles?.button\" [color]=\"styles?.background?.accentColor\"></app-button-element>\r\n </div>\r\n</div>\r\n -->\r\n<div class=\"top-container\" (click)=\"(content?.display?.showLink && content?.display?.linkType === 'List Item' ? redirectTo() : '')\"\r\n [ngStyle]=\"{'background-image' : content.display.showImage ? 'url('+data.image.url+')' : ''}\"\r\n [simpoCorner]=\"styles?.corners\" [id]=\"componentId\">\r\n <div [simpoImageDirective]=\"styles?.image\" [id]=\"componentId\" *ngIf=\"content.display.showImage\"></div>\r\n <div class=\"content\" [simpoCorner]=\"styles?.corners\" [id]=\"componentId\"\r\n [simpoTextBackgroundDirective]=\"content.display.showImage ? styles?.textBackground : ''\">\r\n <div class=\"heading-medium mb-1 lh-40\" *ngIf=\"content.display.showHeading\">\r\n <simpo-text-editor [(value)]=\"data.inputText[0].value \" [editable]=\"edit || false\"></simpo-text-editor>\r\n\r\n </div>\r\n <div class=\"body-desc\" *ngIf=\"content.display.showContent\">\r\n <simpo-text-editor [(value)]=\"data.inputText[1].value \" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n <div class=\"w-100 d-flex justify-content-center\">\r\n <div *ngIf=\"content.display.showLink && content.display.linkType === 'Button'\" [simpoHoverAnimation]=\"getContentAnimation()\" style=\"width: max-content;\">\r\n <app-button-element [buttonContent]=\"data.button\" [buttonStyle]=\"button?.styles\" [sectionId]=\"componentId\"\r\n [buttonId]=\"button ? button.id : ''\" [color]=\"styles?.background?.accentColor\" [backgroundInfo]=\"
|
29
|
+
args: [{ selector: 'simpo-top-of-image-card', standalone: true, imports: [CommonModule, ImageDirectiveDirective, CornerDirective, TextBackgroundDirectiveDirective, TextEditorComponent, SimpoButtonComponent, HoverAnimationDirective], template: "<!-- <div style=\"position: relative;\">\r\n\r\n <img loading=\"lazy\" [src]=\"data.image.url\" [alt]=\"data.image.altText\" [simpoImageDirective]=\"styles?.image\"\r\n [simpoCorner]=\"styles?.corners\" [id]=\"componentId\" class=\"w-100\" *ngIf=\"content.showImage\">\r\n\r\n <div class=\"content\" [simpoCorner]=\"styles?.corners\" [id]=\"componentId\" [simpoTextBackgroundDirective]=\"styles?.textBackground\">\r\n <div style=\"color: white;\" class=\"heading-medium mb-1\" [innerHtml]=\"data.inputText[0].value\"\r\n *ngIf=\"content.showHeading\"></div>\r\n <div style=\"color: white;\" class=\"body-desc\" [innerHtml]=\"data.inputText[01].value\" *ngIf=\"content.showContent\">\r\n </div>\r\n <app-button-element [buttonData]=\"data?.button\" [sectionId]=\"componentId\" [buttonStyle]=\"styles?.button\" [color]=\"styles?.background?.accentColor\"></app-button-element>\r\n </div>\r\n</div>\r\n -->\r\n<div class=\"top-container\" (click)=\"(content?.display?.showLink && content?.display?.linkType === 'List Item' ? redirectTo() : '')\"\r\n [ngStyle]=\"{'background-image' : content.display.showImage ? 'url('+data.image.url+')' : ''}\"\r\n [simpoCorner]=\"styles?.corners\" [id]=\"componentId\">\r\n <div [simpoImageDirective]=\"styles?.image\" [id]=\"componentId\" *ngIf=\"content.display.showImage\"></div>\r\n <div class=\"content\" [simpoCorner]=\"styles?.corners\" [id]=\"componentId\"\r\n [simpoTextBackgroundDirective]=\"content.display.showImage ? styles?.textBackground : ''\">\r\n <div class=\"heading-medium mb-1 lh-40\" *ngIf=\"content.display.showHeading\">\r\n <simpo-text-editor [(value)]=\"data.inputText[0].value \" [editable]=\"edit || false\"></simpo-text-editor>\r\n\r\n </div>\r\n <div class=\"body-desc\" *ngIf=\"content.display.showContent\">\r\n <simpo-text-editor [(value)]=\"data.inputText[1].value \" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n <div class=\"w-100 d-flex justify-content-center\">\r\n <div *ngIf=\"content.display.showLink && content.display.linkType === 'Button'\" [simpoHoverAnimation]=\"getContentAnimation()\" style=\"width: max-content;\">\r\n <app-button-element [buttonContent]=\"data.button\" [buttonStyle]=\"button?.styles\" [sectionId]=\"componentId\"\r\n [buttonId]=\"button ? button.id : ''\" [color]=\"styles?.background?.accentColor\" [backgroundInfo]=\"styles?.background\" [edit]=\"edit\"></app-button-element>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".w-100{width:100%}.mb-1{margin-bottom:1rem!important}.content{padding:3rem 1.5rem 1.5rem;min-height:256px;display:flex;flex-direction:column;justify-content:end;bottom:0}.top-container{background-position:center center;background-size:cover;height:100%;position:relative;display:flex;flex-direction:column;justify-content:flex-end}.lh-40{line-height:40px}\n"] }]
|
30
30
|
}], ctorParameters: () => [{ type: i1.EventsService }], propDecorators: { data: [{
|
31
31
|
type: Input
|
32
32
|
}], styles: [{
|
@@ -40,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
40
40
|
}], edit: [{
|
41
41
|
type: Input
|
42
42
|
}] } });
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wLW9mLWltYWdlLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy90b3Atb2YtaW1hZ2UtY2FyZC90b3Atb2YtaW1hZ2UtY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3RvcC1vZi1pbWFnZS1jYXJkL3RvcC1vZi1pbWFnZS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDekcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFHOUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7QUFTcEYsTUFBTSxPQUFPLHVCQUF1QjtJQVFsQyxZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUFFLENBQUM7SUFDbkQsUUFBUTtJQUNSLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsT0FBTyxFQUFFLGdCQUFnQixFQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUMsQ0FBQTtJQUM1RCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDOzhHQWxCVSx1QkFBdUI7a0dBQXZCLHVCQUF1QiwrTUNsQnBDLHMrRUFtQ0EsOFpEckJZLFlBQVksd05BQUMsdUJBQXVCLG1HQUFDLGVBQWUsbUZBQUMsZ0NBQWdDLHFIQUFDLG1CQUFtQiw2SUFBQyxvQkFBb0IscUtBQUMsdUJBQXVCOzsyRkFJckosdUJBQXVCO2tCQVBuQyxTQUFTOytCQUNFLHlCQUF5QixjQUN2QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUMsdUJBQXVCLEVBQUMsZUFBZSxFQUFDLGdDQUFnQyxFQUFDLG1CQUFtQixFQUFDLG9CQUFvQixFQUFDLHVCQUF1QixDQUFDO2tGQUt4SixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvcm5lckRpcmVjdGl2ZSB9IGZyb20gJy4vLi4vLi4vZGlyZWN0aXZlL2Nvcm5lci1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBJbWFnZURpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4vLi4vLi4vZGlyZWN0aXZlL2ltYWdlLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBUZXh0QmFja2dyb3VuZERpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4vLi4vLi4vZGlyZWN0aXZlL3RleHQtYmFja2dyb3VuZC1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2ltcG9CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9zaW1wby1idXR0b24vc2ltcG8tYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZGVsIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGV4dEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEhvdmVyQW5pbWF0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWFuaW1hdGlvbi5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby10b3Atb2YtaW1hZ2UtY2FyZCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLEltYWdlRGlyZWN0aXZlRGlyZWN0aXZlLENvcm5lckRpcmVjdGl2ZSxUZXh0QmFja2dyb3VuZERpcmVjdGl2ZURpcmVjdGl2ZSxUZXh0RWRpdG9yQ29tcG9uZW50LFNpbXBvQnV0dG9uQ29tcG9uZW50LEhvdmVyQW5pbWF0aW9uRGlyZWN0aXZlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdG9wLW9mLWltYWdlLWNhcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi90b3Atb2YtaW1hZ2UtY2FyZC5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9wT2ZJbWFnZUNhcmRDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIGRhdGE6IGFueTtcclxuICBASW5wdXQoKSBzdHlsZXM6IGFueTtcclxuICBASW5wdXQoKSBjb250ZW50OiBhbnk7XHJcbiAgQElucHV0KCkgY29tcG9uZW50SWQ/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYnV0dG9uPzogQnV0dG9uTW9kZWw7XHJcbiAgQElucHV0KCkgZWRpdD8gOiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ldmVudFNlcnZpY2U6IEV2ZW50c1NlcnZpY2Upe31cclxuICBuZ09uSW5pdCgpe1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGVudEFuaW1hdGlvbigpe1xyXG4gICAgcmV0dXJuIHsgY29udGVudEFuaW1hdGlvbiA6IHRoaXMuc3R5bGVzPy5jb250ZW50QW5pbWF0aW9ufVxyXG4gIH1cclxuXHJcbiAgcmVkaXJlY3RUbygpe1xyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmJ1dHRvblJlZGlyZWN0aW9uLmVtaXQoe2RhdGE6IHRoaXMuZGF0YS5idXR0b259KTtcclxuICB9XHJcbn1cclxuIiwiPCEtLSA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiPlxyXG5cclxuICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgIFtzcmNdPVwiZGF0YS5pbWFnZS51cmxcIiBbYWx0XT1cImRhdGEuaW1hZ2UuYWx0VGV4dFwiIFtzaW1wb0ltYWdlRGlyZWN0aXZlXT1cInN0eWxlcz8uaW1hZ2VcIlxyXG4gICAgW3NpbXBvQ29ybmVyXT1cInN0eWxlcz8uY29ybmVyc1wiIFtpZF09XCJjb21wb25lbnRJZFwiIGNsYXNzPVwidy0xMDBcIiAqbmdJZj1cImNvbnRlbnQuc2hvd0ltYWdlXCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjb250ZW50XCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlcz8uY29ybmVyc1wiIFtpZF09XCJjb21wb25lbnRJZFwiIFtzaW1wb1RleHRCYWNrZ3JvdW5kRGlyZWN0aXZlXT1cInN0eWxlcz8udGV4dEJhY2tncm91bmRcIj5cclxuICAgIDxkaXYgc3R5bGU9XCJjb2xvcjogd2hpdGU7XCIgY2xhc3M9XCJoZWFkaW5nLW1lZGl1bSBtYi0xXCIgW2lubmVySHRtbF09XCJkYXRhLmlucHV0VGV4dFswXS52YWx1ZVwiXHJcbiAgICAgICpuZ0lmPVwiY29udGVudC5zaG93SGVhZGluZ1wiPjwvZGl2PlxyXG4gICAgPGRpdiBzdHlsZT1cImNvbG9yOiB3aGl0ZTtcIiBjbGFzcz1cImJvZHktZGVzY1wiIFtpbm5lckh0bWxdPVwiZGF0YS5pbnB1dFRleHRbMDFdLnZhbHVlXCIgKm5nSWY9XCJjb250ZW50LnNob3dDb250ZW50XCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxhcHAtYnV0dG9uLWVsZW1lbnQgW2J1dHRvbkRhdGFdPVwiZGF0YT8uYnV0dG9uXCIgW3NlY3Rpb25JZF09XCJjb21wb25lbnRJZFwiIFtidXR0b25TdHlsZV09XCJzdHlsZXM/LmJ1dHRvblwiIFtjb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+PC9hcHAtYnV0dG9uLWVsZW1lbnQ+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4gLS0+XHJcbjxkaXYgY2xhc3M9XCJ0b3AtY29udGFpbmVyXCIgIChjbGljayk9XCIoY29udGVudD8uZGlzcGxheT8uc2hvd0xpbmsgJiYgY29udGVudD8uZGlzcGxheT8ubGlua1R5cGUgPT09ICdMaXN0IEl0ZW0nID8gcmVkaXJlY3RUbygpIDogJycpXCJcclxuICBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQtaW1hZ2UnIDogY29udGVudC5kaXNwbGF5LnNob3dJbWFnZSA/ICd1cmwoJytkYXRhLmltYWdlLnVybCsnKScgOiAnJ31cIlxyXG4gIFtzaW1wb0Nvcm5lcl09XCJzdHlsZXM/LmNvcm5lcnNcIiBbaWRdPVwiY29tcG9uZW50SWRcIj5cclxuICA8ZGl2IFtzaW1wb0ltYWdlRGlyZWN0aXZlXT1cInN0eWxlcz8uaW1hZ2VcIiBbaWRdPVwiY29tcG9uZW50SWRcIiAqbmdJZj1cImNvbnRlbnQuZGlzcGxheS5zaG93SW1hZ2VcIj48L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY29udGVudFwiIFtzaW1wb0Nvcm5lcl09XCJzdHlsZXM/LmNvcm5lcnNcIiBbaWRdPVwiY29tcG9uZW50SWRcIlxyXG4gICAgW3NpbXBvVGV4dEJhY2tncm91bmREaXJlY3RpdmVdPVwiY29udGVudC5kaXNwbGF5LnNob3dJbWFnZSA/IHN0eWxlcz8udGV4dEJhY2tncm91bmQgOiAnJ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVkaXVtIG1iLTEgbGgtNDBcIiAgKm5nSWY9XCJjb250ZW50LmRpc3BsYXkuc2hvd0hlYWRpbmdcIj5cclxuICAgICAgPHNpbXBvLXRleHQtZWRpdG9yIFsodmFsdWUpXT1cImRhdGEuaW5wdXRUZXh0WzBdLnZhbHVlIFwiIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCI+PC9zaW1wby10ZXh0LWVkaXRvcj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJib2R5LWRlc2NcIiAqbmdJZj1cImNvbnRlbnQuZGlzcGxheS5zaG93Q29udGVudFwiPlxyXG4gICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwiZGF0YS5pbnB1dFRleHRbMV0udmFsdWUgXCIgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidy0xMDAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQuZGlzcGxheS5zaG93TGluayAmJiBjb250ZW50LmRpc3BsYXkubGlua1R5cGUgPT09ICdCdXR0b24nXCIgW3NpbXBvSG92ZXJBbmltYXRpb25dPVwiZ2V0Q29udGVudEFuaW1hdGlvbigpXCIgc3R5bGU9XCJ3aWR0aDogbWF4LWNvbnRlbnQ7XCI+XHJcbiAgICAgICAgPGFwcC1idXR0b24tZWxlbWVudCBbYnV0dG9uQ29udGVudF09XCJkYXRhLmJ1dHRvblwiIFtidXR0b25TdHlsZV09XCJidXR0b24/LnN0eWxlc1wiIFtzZWN0aW9uSWRdPVwiY29tcG9uZW50SWRcIlxyXG4gICAgICAgICAgW2J1dHRvbklkXT1cImJ1dHRvbiA/IGJ1dHRvbi5pZCA6ICcnXCIgW2NvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiBbYmFja2dyb3VuZEluZm9dPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCIgW2VkaXRdPVwiZWRpdFwiPjwvYXBwLWJ1dHRvbi1lbGVtZW50PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|