survey-creator-angular
Version:
A white-label drag-and-drop form builder for Angular that lets you design complex, interactive forms and surveys without writing code. It generates JSON schemas used by the SurveyJS Form Library to render dynamic forms in your Angular app.
58 lines • 18.2 kB
JavaScript
import { Component, Input } from "@angular/core";
import { AngularComponentFactory, EmbeddedViewContentComponent } from "survey-angular-ui";
import { QuestionImageAdornerViewModel } from "survey-creator-core";
import { QuestionDesignerComponent } from "../question.component";
import * as i0 from "@angular/core";
import * as i1 from "survey-angular-ui";
import * as i2 from "../question-element-content.component";
import * as i3 from "../question-banner.component";
import * as i4 from "@angular/common";
export class QuestionImageDesignerComponent extends QuestionDesignerComponent {
constructor() {
super(...arguments);
this.adornerComponent = "svc-image-question-adorner";
}
createModel() {
if (this.componentData) {
this.adorner = new QuestionImageAdornerViewModel(this.creator, this.model, null);
}
}
get placeholderComponent() {
return "file-question";
}
get placeholderComponentData() {
return { model: this.adorner.filePresentationModel };
}
get showPlaceholderComponent() {
return !!this.placeholderComponentData;
}
}
QuestionImageDesignerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionImageDesignerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
QuestionImageDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: QuestionImageDesignerComponent, selector: "svc-image-question", usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div *ngIf=\"adorner\" class=\"svc-question__adorner\" [class]=\"adorner.rootCss()\" (dblclick)=\"adorner.dblclick($event)\"\n (mouseover)=\"adorner.hover($event, $event.currentTarget)\" (mouseleave)=\"adorner.hover($event, $event.currentTarget)\"\n [attr.data-sv-drop-target-survey-element]=\"adorner.element.name || null\" #container>\n <div *ngIf=\"adorner.showHiddenTitle\" [class]=\"adorner.cssCollapsedHiddenHeader\">\n <sv-ng-element-title *ngIf=\"!!model.hasTitle\" [element]=\"model\" [renderActions]=\"false\"></sv-ng-element-title>\n <div *ngIf=\"!model.hasTitle\" [class]=\"adorner.cssCollapsedHiddenTitle\">\n <span class=\"svc-fake-title\">{{model.name}}</span>\n </div>\n </div>\n <div [class]=\"adorner.css()\" [key2click]=\"{ disableTabStop: true }\" (click)=\"adorner.select(adorner, $event)\">\n <div class=\"svc-question__drop-indicator svc-question__drop-indicator--left\"></div>\n <div class=\"svc-question__drop-indicator svc-question__drop-indicator--right\"></div>\n <div class=\"svc-question__drop-indicator svc-question__drop-indicator--top\"></div>\n <div class=\"svc-question__drop-indicator svc-question__drop-indicator--bottom\"></div>\n <div *ngIf=\"adorner.allowDragging\" class=\"svc-question__drag-area\" (pointerdown)=\"adorner.onPointerDown($event)\">\n <svg class=\"svc-question__drag-element\" [iconName]=\"'icon-drag-area-indicator_24x16'\" [size]=\"'auto'\"\n sv-ng-svg-icon></svg>\n <div class=\"svc-question__top-actions\">\n <sv-action-bar [model]=\"adorner.topActionContainer\" [handleClick]=\"false\"></sv-action-bar>\n </div>\n </div>\n <ng-container *ngIf=\"adorner.needToRenderContent\">\n <svc-question-element-content \n [componentName]=\"componentName\" \n [componentData]=\"componentData\">\n </svc-question-element-content>\n <div *ngIf=\"adorner.isEmptyElement && !showPlaceholderComponent\" class=\"svc-panel__placeholder_frame-wrapper\">\n <div class=\"svc-panel__placeholder_frame\">\n <div class=\"svc-panel__placeholder\">{{ adorner.placeholderText }}</div>\n </div>\n </div>\n <ng-template *ngIf=\"adorner.isEmptyElement && !!showPlaceholderComponent\"\n [component]=\"{ name: placeholderComponent, data: placeholderComponentData }\">\n </ng-template>\n <ng-template *ngIf=\"adornerComponent\"\n [component]=\"{ name: adornerComponent, data: { adorner: adorner, question: model } }\">\n </ng-template>\n <svc-question-banner *ngIf=\"adorner.isBannerShowing\" [model]=\"adorner.createBannerParams()\">\n </svc-question-banner>\n <div class=\"svc-question__content-actions\" (focusin)=\"adorner.select(adorner, $event)\">\n <sv-action-bar [model]=\"adorner.actionContainer\" [handleClick]=\"false\"></sv-action-bar>\n </div>\n </ng-container>\n </div>\n </div>\n</ng-template>", styles: [":host { display: none; }"], components: [{ type: i1.ElementTitleComponent, selector: "sv-ng-element-title", inputs: ["element", "renderActions"] }, { type: i1.SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }, { type: i1.ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }, { type: i2.QuestionElementContentComponent, selector: "svc-question-element-content", inputs: ["componentName", "componentData"] }, { type: i3.QuestionBannerComponent, selector: "svc-question-banner", inputs: ["model"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.Key2ClickDirective, selector: "[key2click]", inputs: ["key2click"] }, { type: i1.DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionImageDesignerComponent, decorators: [{
type: Component,
args: [{
selector: "svc-image-question",
templateUrl: "../question.component.html",
styles: [":host { display: none; }"]
}]
}] });
AngularComponentFactory.Instance.registerComponent("svc-image-question", QuestionImageDesignerComponent);
export class QuestionImageAdornerDesignerComponent extends EmbeddedViewContentComponent {
}
QuestionImageAdornerDesignerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionImageAdornerDesignerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
QuestionImageAdornerDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: QuestionImageAdornerDesignerComponent, selector: "svc-image-question-adorner", inputs: { adorner: "adorner", question: "question" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div class=\"svc-image-question-controls\" *ngIf=\"!adorner.isUploading && !adorner.isEmptyElement\">\n <ng-container *ngIf=\"adorner.allowEdit\">\n <input type=\"file\" aria-hidden=\"true\" tabindex=\"-1\" [accept]=\"adorner.acceptedTypes\"\n class=\"svc-choose-file-input\" />\n <span class=\"svc-context-button\" [key2click] [attr.title]=\"undefined\" [attr.aria-label]=\"undefined\">\n <svg [iconName]=\"'icon-choosefile'\" [size]=\"'auto'\" (click)=\"adorner.chooseFile(adorner)\" sv-ng-svg-icon></svg>\n </span>\n </ng-container>\n </div>\n <div class=\"svc-image-question__loading-placeholder\" *ngIf=\"adorner.isUploading && !adorner.isEmptyElement\">\n <div class=\"svc-image-question__loading\">\n <sv-ng-loading-indicator></sv-ng-loading-indicator>\n </div>\n </div>\n</ng-template>", styles: [":host { display: none; }"], components: [{ type: i1.SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }, { type: i1.LoadingIndicatorComponent, selector: "sv-ng-loading-indicator" }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.Key2ClickDirective, selector: "[key2click]", inputs: ["key2click"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionImageAdornerDesignerComponent, decorators: [{
type: Component,
args: [{
selector: "svc-image-question-adorner",
templateUrl: "./question-image.component.html",
styles: [":host { display: none; }"]
}]
}], propDecorators: { adorner: [{
type: Input
}], question: [{
type: Input
}] } });
AngularComponentFactory.Instance.registerComponent("svc-image-question-adorner", QuestionImageAdornerDesignerComponent);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24taW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Fkb3JuZXJzL3F1ZXN0aW9uLWltYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9xdWVzdGlvbi5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uL3NyYy9hZG9ybmVycy9xdWVzdGlvbi1pbWFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQU9sRSxNQUFNLE9BQU8sOEJBQStCLFNBQVEseUJBQXlCO0lBTDdFOztRQVdrQixxQkFBZ0IsR0FBRyw0QkFBNEIsQ0FBQztLQVVqRTtJQWZvQixXQUFXO1FBQzVCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksNkJBQTZCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFPLElBQUksQ0FBQyxDQUFDO1NBQ3ZGO0lBQ0gsQ0FBQztJQUVELElBQW9CLG9CQUFvQjtRQUN0QyxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBb0Isd0JBQXdCO1FBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQWtDLElBQUksQ0FBQyxPQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUN4RixDQUFDO0lBQ0QsSUFBb0Isd0JBQXdCO1FBQzFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztJQUN6QyxDQUFDOzs0SEFmVSw4QkFBOEI7Z0hBQTlCLDhCQUE4QixpRkNWM0MsaytGQThDYzs0RkRwQ0QsOEJBQThCO2tCQUwxQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFdBQVcsRUFBRSw0QkFBNEI7b0JBQ3pDLE1BQU0sRUFBRSxDQUFDLDBCQUEwQixDQUFDO2lCQUNyQzs7QUFtQkQsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixFQUFFLDhCQUE4QixDQUFDLENBQUM7QUFPekcsTUFBTSxPQUFPLHFDQUFzQyxTQUFRLDRCQUE0Qjs7bUlBQTFFLHFDQUFxQzt1SEFBckMscUNBQXFDLCtJRW5DbEQsdTJCQWVjOzRGRm9CRCxxQ0FBcUM7a0JBTGpELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsV0FBVyxFQUFFLGlDQUFpQztvQkFDOUMsTUFBTSxFQUFFLENBQUMsMEJBQTBCLENBQUM7aUJBQ3JDOzhCQUVVLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLOztBQUdSLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyw0QkFBNEIsRUFBRSxxQ0FBcUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRGYWN0b3J5LCBFbWJlZGRlZFZpZXdDb250ZW50Q29tcG9uZW50IH0gZnJvbSBcInN1cnZleS1hbmd1bGFyLXVpXCI7XG5pbXBvcnQgeyBRdWVzdGlvbkltYWdlQWRvcm5lclZpZXdNb2RlbCB9IGZyb20gXCJzdXJ2ZXktY3JlYXRvci1jb3JlXCI7XG5pbXBvcnQgeyBRdWVzdGlvbkRlc2lnbmVyQ29tcG9uZW50IH0gZnJvbSBcIi4uL3F1ZXN0aW9uLmNvbXBvbmVudFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic3ZjLWltYWdlLXF1ZXN0aW9uXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4uL3F1ZXN0aW9uLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlczogW1wiOmhvc3QgeyBkaXNwbGF5OiBub25lOyB9XCJdXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9uSW1hZ2VEZXNpZ25lckNvbXBvbmVudCBleHRlbmRzIFF1ZXN0aW9uRGVzaWduZXJDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY3JlYXRlTW9kZWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50RGF0YSkge1xuICAgICAgdGhpcy5hZG9ybmVyID0gbmV3IFF1ZXN0aW9uSW1hZ2VBZG9ybmVyVmlld01vZGVsKHRoaXMuY3JlYXRvciwgdGhpcy5tb2RlbCwgPGFueT5udWxsKTtcbiAgICB9XG4gIH1cbiAgcHVibGljIG92ZXJyaWRlIGFkb3JuZXJDb21wb25lbnQgPSBcInN2Yy1pbWFnZS1xdWVzdGlvbi1hZG9ybmVyXCI7XG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgcGxhY2Vob2xkZXJDb21wb25lbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gXCJmaWxlLXF1ZXN0aW9uXCI7XG4gIH1cbiAgcHVibGljIG92ZXJyaWRlIGdldCBwbGFjZWhvbGRlckNvbXBvbmVudERhdGEoKSB7XG4gICAgcmV0dXJuIHsgbW9kZWw6ICg8UXVlc3Rpb25JbWFnZUFkb3JuZXJWaWV3TW9kZWw+dGhpcy5hZG9ybmVyKS5maWxlUHJlc2VudGF0aW9uTW9kZWwgfTtcbiAgfVxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHNob3dQbGFjZWhvbGRlckNvbXBvbmVudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnBsYWNlaG9sZGVyQ29tcG9uZW50RGF0YTtcbiAgfVxufVxuXG5Bbmd1bGFyQ29tcG9uZW50RmFjdG9yeS5JbnN0YW5jZS5yZWdpc3RlckNvbXBvbmVudChcInN2Yy1pbWFnZS1xdWVzdGlvblwiLCBRdWVzdGlvbkltYWdlRGVzaWduZXJDb21wb25lbnQpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic3ZjLWltYWdlLXF1ZXN0aW9uLWFkb3JuZXJcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9xdWVzdGlvbi1pbWFnZS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZXM6IFtcIjpob3N0IHsgZGlzcGxheTogbm9uZTsgfVwiXVxufSlcbmV4cG9ydCBjbGFzcyBRdWVzdGlvbkltYWdlQWRvcm5lckRlc2lnbmVyQ29tcG9uZW50IGV4dGVuZHMgRW1iZWRkZWRWaWV3Q29udGVudENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGFkb3JuZXIhOiBRdWVzdGlvbkltYWdlQWRvcm5lclZpZXdNb2RlbDtcbiAgQElucHV0KCkgcXVlc3Rpb24hOiBhbnk7XG59XG5cbkFuZ3VsYXJDb21wb25lbnRGYWN0b3J5Lkluc3RhbmNlLnJlZ2lzdGVyQ29tcG9uZW50KFwic3ZjLWltYWdlLXF1ZXN0aW9uLWFkb3JuZXJcIiwgUXVlc3Rpb25JbWFnZUFkb3JuZXJEZXNpZ25lckNvbXBvbmVudCk7XG5cbiIsIjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gIDxkaXYgKm5nSWY9XCJhZG9ybmVyXCIgY2xhc3M9XCJzdmMtcXVlc3Rpb25fX2Fkb3JuZXJcIiBbY2xhc3NdPVwiYWRvcm5lci5yb290Q3NzKClcIiAoZGJsY2xpY2spPVwiYWRvcm5lci5kYmxjbGljaygkZXZlbnQpXCJcbiAgICAobW91c2VvdmVyKT1cImFkb3JuZXIuaG92ZXIoJGV2ZW50LCAkZXZlbnQuY3VycmVudFRhcmdldClcIiAobW91c2VsZWF2ZSk9XCJhZG9ybmVyLmhvdmVyKCRldmVudCwgJGV2ZW50LmN1cnJlbnRUYXJnZXQpXCJcbiAgICBbYXR0ci5kYXRhLXN2LWRyb3AtdGFyZ2V0LXN1cnZleS1lbGVtZW50XT1cImFkb3JuZXIuZWxlbWVudC5uYW1lIHx8IG51bGxcIiAjY29udGFpbmVyPlxuICAgIDxkaXYgKm5nSWY9XCJhZG9ybmVyLnNob3dIaWRkZW5UaXRsZVwiIFtjbGFzc109XCJhZG9ybmVyLmNzc0NvbGxhcHNlZEhpZGRlbkhlYWRlclwiPlxuICAgICAgPHN2LW5nLWVsZW1lbnQtdGl0bGUgKm5nSWY9XCIhIW1vZGVsLmhhc1RpdGxlXCIgW2VsZW1lbnRdPVwibW9kZWxcIiBbcmVuZGVyQWN0aW9uc109XCJmYWxzZVwiPjwvc3YtbmctZWxlbWVudC10aXRsZT5cbiAgICAgIDxkaXYgKm5nSWY9XCIhbW9kZWwuaGFzVGl0bGVcIiBbY2xhc3NdPVwiYWRvcm5lci5jc3NDb2xsYXBzZWRIaWRkZW5UaXRsZVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInN2Yy1mYWtlLXRpdGxlXCI+e3ttb2RlbC5uYW1lfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IFtjbGFzc109XCJhZG9ybmVyLmNzcygpXCIgW2tleTJjbGlja109XCJ7IGRpc2FibGVUYWJTdG9wOiB0cnVlIH1cIiAoY2xpY2spPVwiYWRvcm5lci5zZWxlY3QoYWRvcm5lciwgJGV2ZW50KVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInN2Yy1xdWVzdGlvbl9fZHJvcC1pbmRpY2F0b3Igc3ZjLXF1ZXN0aW9uX19kcm9wLWluZGljYXRvci0tbGVmdFwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInN2Yy1xdWVzdGlvbl9fZHJvcC1pbmRpY2F0b3Igc3ZjLXF1ZXN0aW9uX19kcm9wLWluZGljYXRvci0tcmlnaHRcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdmMtcXVlc3Rpb25fX2Ryb3AtaW5kaWNhdG9yIHN2Yy1xdWVzdGlvbl9fZHJvcC1pbmRpY2F0b3ItLXRvcFwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInN2Yy1xdWVzdGlvbl9fZHJvcC1pbmRpY2F0b3Igc3ZjLXF1ZXN0aW9uX19kcm9wLWluZGljYXRvci0tYm90dG9tXCI+PC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiYWRvcm5lci5hbGxvd0RyYWdnaW5nXCIgY2xhc3M9XCJzdmMtcXVlc3Rpb25fX2RyYWctYXJlYVwiIChwb2ludGVyZG93bik9XCJhZG9ybmVyLm9uUG9pbnRlckRvd24oJGV2ZW50KVwiPlxuICAgICAgICA8c3ZnIGNsYXNzPVwic3ZjLXF1ZXN0aW9uX19kcmFnLWVsZW1lbnRcIiBbaWNvbk5hbWVdPVwiJ2ljb24tZHJhZy1hcmVhLWluZGljYXRvcl8yNHgxNidcIiBbc2l6ZV09XCInYXV0bydcIlxuICAgICAgICAgIHN2LW5nLXN2Zy1pY29uPjwvc3ZnPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3ZjLXF1ZXN0aW9uX190b3AtYWN0aW9uc1wiPlxuICAgICAgICAgIDxzdi1hY3Rpb24tYmFyIFttb2RlbF09XCJhZG9ybmVyLnRvcEFjdGlvbkNvbnRhaW5lclwiIFtoYW5kbGVDbGlja109XCJmYWxzZVwiPjwvc3YtYWN0aW9uLWJhcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZG9ybmVyLm5lZWRUb1JlbmRlckNvbnRlbnRcIj5cbiAgICAgICAgPHN2Yy1xdWVzdGlvbi1lbGVtZW50LWNvbnRlbnQgXG4gICAgICAgICAgW2NvbXBvbmVudE5hbWVdPVwiY29tcG9uZW50TmFtZVwiIFxuICAgICAgICAgIFtjb21wb25lbnREYXRhXT1cImNvbXBvbmVudERhdGFcIj5cbiAgICAgICAgPC9zdmMtcXVlc3Rpb24tZWxlbWVudC1jb250ZW50PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYWRvcm5lci5pc0VtcHR5RWxlbWVudCAmJiAhc2hvd1BsYWNlaG9sZGVyQ29tcG9uZW50XCIgY2xhc3M9XCJzdmMtcGFuZWxfX3BsYWNlaG9sZGVyX2ZyYW1lLXdyYXBwZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ZjLXBhbmVsX19wbGFjZWhvbGRlcl9mcmFtZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN2Yy1wYW5lbF9fcGxhY2Vob2xkZXJcIj57eyBhZG9ybmVyLnBsYWNlaG9sZGVyVGV4dCB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiYWRvcm5lci5pc0VtcHR5RWxlbWVudCAmJiAhIXNob3dQbGFjZWhvbGRlckNvbXBvbmVudFwiXG4gICAgICAgICAgW2NvbXBvbmVudF09XCJ7IG5hbWU6IHBsYWNlaG9sZGVyQ29tcG9uZW50LCBkYXRhOiBwbGFjZWhvbGRlckNvbXBvbmVudERhdGEgfVwiPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJhZG9ybmVyQ29tcG9uZW50XCJcbiAgICAgICAgICBbY29tcG9uZW50XT1cInsgbmFtZTogYWRvcm5lckNvbXBvbmVudCwgZGF0YTogeyBhZG9ybmVyOiBhZG9ybmVyLCBxdWVzdGlvbjogbW9kZWwgfSB9XCI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxzdmMtcXVlc3Rpb24tYmFubmVyICpuZ0lmPVwiYWRvcm5lci5pc0Jhbm5lclNob3dpbmdcIiBbbW9kZWxdPVwiYWRvcm5lci5jcmVhdGVCYW5uZXJQYXJhbXMoKVwiPlxuICAgICAgICA8L3N2Yy1xdWVzdGlvbi1iYW5uZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdmMtcXVlc3Rpb25fX2NvbnRlbnQtYWN0aW9uc1wiIChmb2N1c2luKT1cImFkb3JuZXIuc2VsZWN0KGFkb3JuZXIsICRldmVudClcIj5cbiAgICAgICAgICA8c3YtYWN0aW9uLWJhciBbbW9kZWxdPVwiYWRvcm5lci5hY3Rpb25Db250YWluZXJcIiBbaGFuZGxlQ2xpY2tdPVwiZmFsc2VcIj48L3N2LWFjdGlvbi1iYXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iLCI8bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwic3ZjLWltYWdlLXF1ZXN0aW9uLWNvbnRyb2xzXCIgKm5nSWY9XCIhYWRvcm5lci5pc1VwbG9hZGluZyAmJiAhYWRvcm5lci5pc0VtcHR5RWxlbWVudFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZG9ybmVyLmFsbG93RWRpdFwiPlxuICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGFiaW5kZXg9XCItMVwiIFthY2NlcHRdPVwiYWRvcm5lci5hY2NlcHRlZFR5cGVzXCJcbiAgICAgICAgY2xhc3M9XCJzdmMtY2hvb3NlLWZpbGUtaW5wdXRcIiAvPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmMtY29udGV4dC1idXR0b25cIiBba2V5MmNsaWNrXSBbYXR0ci50aXRsZV09XCJ1bmRlZmluZWRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInVuZGVmaW5lZFwiPlxuICAgICAgICA8c3ZnIFtpY29uTmFtZV09XCInaWNvbi1jaG9vc2VmaWxlJ1wiIFtzaXplXT1cIidhdXRvJ1wiIChjbGljayk9XCJhZG9ybmVyLmNob29zZUZpbGUoYWRvcm5lcilcIiBzdi1uZy1zdmctaWNvbj48L3N2Zz5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJzdmMtaW1hZ2UtcXVlc3Rpb25fX2xvYWRpbmctcGxhY2Vob2xkZXJcIiAqbmdJZj1cImFkb3JuZXIuaXNVcGxvYWRpbmcgJiYgIWFkb3JuZXIuaXNFbXB0eUVsZW1lbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwic3ZjLWltYWdlLXF1ZXN0aW9uX19sb2FkaW5nXCI+XG4gICAgICA8c3YtbmctbG9hZGluZy1pbmRpY2F0b3I+PC9zdi1uZy1sb2FkaW5nLWluZGljYXRvcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==