ontimize-web-ngx
Version:
Ontimize Web framework using Angular 15
117 lines • 19.5 kB
JavaScript
import { Component, Injector } from "@angular/core";
import { MatDialogRef } from "@angular/material/dialog";
import { OTranslateService } from "../../../services/translate/o-translate.service";
import * as i0 from "@angular/core";
import * as i1 from "@angular/material/dialog";
import * as i2 from "@angular/common";
import * as i3 from "@angular/flex-layout/flex";
import * as i4 from "@angular/material/button";
import * as i5 from "@angular/material/icon";
export class ODialogInternalComponent {
constructor(dialogRef, injector) {
this.dialogRef = dialogRef;
this.injector = injector;
this.translateService = injector.get(OTranslateService);
}
onOkClick() {
if (this.dialogRef) {
this.dialogRef.close(true);
}
}
alert(title, message, config) {
config = this.ensureConfig(config);
this.configureDefaultAlert(title, message, config);
}
confirm(title, message, config) {
config = this.ensureConfig(config);
this.configureDefaultAlert(title, message, config);
this.twoOptions = true;
}
ensureConfig(config) {
if (!config) {
config = {};
}
return config;
}
getTranslation(value) {
return this.translateService.get(value);
}
configureDefaultAlert(title, message, config) {
this.twoOptions = false;
this.title = title;
this.message = message;
this.icon = (typeof (config.icon) !== 'undefined') ? config.icon : undefined;
if (this.icon !== undefined) {
this.useIcon = true;
}
this.alertType = config.alertType;
this.okButtonText = (typeof (config.okButtonText) !== 'undefined') ? config.okButtonText : ODialogInternalComponent.DEFAULT_OK_BUTTON_TEXT;
this.cancelButtonText = (typeof (config.cancelButtonText) !== 'undefined') ? config.cancelButtonText : ODialogInternalComponent.DEFAULT_CANCEL_BUTTON_TEXT;
}
get isInfo() {
return this.alertType === 'info';
}
get isWarn() {
return this.alertType === 'warn';
}
get isError() {
return this.alertType === 'error';
}
get title() {
return this._title;
}
set title(val) {
this._title = val;
}
get message() {
return this._message;
}
set message(val) {
this._message = val;
}
get okButtonText() {
return this._okButtonText;
}
set okButtonText(val) {
this._okButtonText = val;
}
get cancelButtonText() {
return this._cancelButtonText;
}
set cancelButtonText(val) {
this._cancelButtonText = val;
}
get icon() {
return this._icon;
}
set icon(val) {
this._icon = val;
}
get alertType() {
return this._alertType;
}
set alertType(val) {
this._alertType = val;
}
get twoOptions() {
return this._twoOptions;
}
set twoOptions(val) {
this._twoOptions = val;
}
get useIcon() {
return this._useIcon;
}
set useIcon(val) {
this._useIcon = val;
}
}
ODialogInternalComponent.DEFAULT_OK_BUTTON_TEXT = 'OK';
ODialogInternalComponent.DEFAULT_CANCEL_BUTTON_TEXT = 'CANCEL';
ODialogInternalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ODialogInternalComponent, deps: [{ token: i1.MatDialogRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
ODialogInternalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ODialogInternalComponent, selector: "app-local-dialog", ngImport: i0, template: "<div *ngIf=\"title && title.length > 0\" mat-dialog-title>{{ getTranslation(title) }}</div>\n<div mat-dialog-content>\n <div fxLayout=\"row\" class=\"alert-content\" [class.alert-content-icon]=\"useIcon\" fxLayoutAlign=\"space-between center\">\n <mat-icon *ngIf=\"useIcon\" class=\"alert-icon\" [class.info]=\"isInfo\" [class.warn]=\"isWarn\" [class.error]=\"isError\">\n {{ icon }}\n </mat-icon>\n <span [innerHTML]=\"getTranslation(message) \"></span>\n </div>\n</div>\n<mat-dialog-actions align=\"end\">\n <span fxFlex></span>\n <button type=\"button\" *ngIf=\"twoOptions\" mat-stroked-button mat-dialog-close class=\"o-button-default cancel\">\n {{getTranslation( cancelButtonText) }}\n </button>\n <button type=\"button\" mat-stroked-button class=\"o-button-primary\" (click)=\"onOkClick()\">{{ getTranslation(okButtonText) }}</button>\n</mat-dialog-actions>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ODialogInternalComponent, decorators: [{
type: Component,
args: [{ selector: 'app-local-dialog', template: "<div *ngIf=\"title && title.length > 0\" mat-dialog-title>{{ getTranslation(title) }}</div>\n<div mat-dialog-content>\n <div fxLayout=\"row\" class=\"alert-content\" [class.alert-content-icon]=\"useIcon\" fxLayoutAlign=\"space-between center\">\n <mat-icon *ngIf=\"useIcon\" class=\"alert-icon\" [class.info]=\"isInfo\" [class.warn]=\"isWarn\" [class.error]=\"isError\">\n {{ icon }}\n </mat-icon>\n <span [innerHTML]=\"getTranslation(message) \"></span>\n </div>\n</div>\n<mat-dialog-actions align=\"end\">\n <span fxFlex></span>\n <button type=\"button\" *ngIf=\"twoOptions\" mat-stroked-button mat-dialog-close class=\"o-button-default cancel\">\n {{getTranslation( cancelButtonText) }}\n </button>\n <button type=\"button\" mat-stroked-button class=\"o-button-primary\" (click)=\"onOkClick()\">{{ getTranslation(okButtonText) }}</button>\n</mat-dialog-actions>\n" }]
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: i0.Injector }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1kaWFsb2ctaW50ZXJuYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL2RpYWxvZy9vLWRpYWxvZy1pbnRlcm5hbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvZGlhbG9nL28tZGlhbG9nLWludGVybmFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7Ozs7OztBQU9wRixNQUFNLE9BQU8sd0JBQXdCO0lBY25DLFlBQ1MsU0FBaUQsRUFBWSxRQUFrQjtRQUEvRSxjQUFTLEdBQVQsU0FBUyxDQUF3QztRQUFZLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDdEYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsS0FBYSxFQUFFLE9BQWUsRUFBRSxNQUFzQjtRQUNqRSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFN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QUMsR0FBVztRQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLEdBQVc7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsR0FBVztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztJQUN4QixDQUFDO0lBR0QsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLFVBQVUsQ0FBQyxHQUFZO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLEdBQVk7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7SUFDdEIsQ0FBQzs7QUF0SWdCLCtDQUFzQixHQUFHLElBQUksQ0FBQztBQUM5QixtREFBMEIsR0FBRyxRQUFRLENBQUM7c0hBSDVDLHdCQUF3QjswR0FBeEIsd0JBQXdCLHdEQ1RyQywyM0JBZ0JBOzRGRFBhLHdCQUF3QjtrQkFKcEMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcbmltcG9ydCB7IE9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS9vLXRyYW5zbGF0ZS5zZXJ2aWNlXCI7XG5pbXBvcnQgdHlwZSB7IE9EaWFsb2dDb25maWcgfSBmcm9tIFwiLi9vLWRpYWxvZy5jb25maWdcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxvY2FsLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLWRpYWxvZy1pbnRlcm5hbC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIE9EaWFsb2dJbnRlcm5hbENvbXBvbmVudCB7XG5cbiAgcHJvdGVjdGVkIHN0YXRpYyBERUZBVUxUX09LX0JVVFRPTl9URVhUID0gJ09LJztcbiAgcHJvdGVjdGVkIHN0YXRpYyBERUZBVUxUX0NBTkNFTF9CVVRUT05fVEVYVCA9ICdDQU5DRUwnO1xuXG4gIHByb3RlY3RlZCBfdGl0bGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9tZXNzYWdlOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfb2tCdXR0b25UZXh0OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfY2FuY2VsQnV0dG9uVGV4dDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3R3b09wdGlvbnM6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfdXNlSWNvbjogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIF9pY29uOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfYWxlcnRUeXBlOiBzdHJpbmc7XG4gIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogT1RyYW5zbGF0ZVNlcnZpY2U7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxPRGlhbG9nSW50ZXJuYWxDb21wb25lbnQ+LCBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KE9UcmFuc2xhdGVTZXJ2aWNlKTtcbiAgfVxuXG4gIG9uT2tDbGljaygpIHtcbiAgICBpZiAodGhpcy5kaWFsb2dSZWYpIHtcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhbGVydCh0aXRsZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIGNvbmZpZz86IE9EaWFsb2dDb25maWcpIHtcbiAgICBjb25maWcgPSB0aGlzLmVuc3VyZUNvbmZpZyhjb25maWcpO1xuICAgIHRoaXMuY29uZmlndXJlRGVmYXVsdEFsZXJ0KHRpdGxlLCBtZXNzYWdlLCBjb25maWcpO1xuICB9XG5cbiAgcHVibGljIGNvbmZpcm0odGl0bGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCBjb25maWc/OiBPRGlhbG9nQ29uZmlnKSB7XG4gICAgY29uZmlnID0gdGhpcy5lbnN1cmVDb25maWcoY29uZmlnKTtcbiAgICB0aGlzLmNvbmZpZ3VyZURlZmF1bHRBbGVydCh0aXRsZSwgbWVzc2FnZSwgY29uZmlnKTtcbiAgICB0aGlzLnR3b09wdGlvbnMgPSB0cnVlO1xuICB9XG5cbiAgLyogVXRpbGl0eSBtZXRob2RzICovXG4gIHByb3RlY3RlZCBlbnN1cmVDb25maWcoY29uZmlnOiBPRGlhbG9nQ29uZmlnKTogT0RpYWxvZ0NvbmZpZyB7XG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIGNvbmZpZyA9IHt9O1xuICAgIH1cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG4gIHB1YmxpYyBnZXRUcmFuc2xhdGlvbih2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCh2YWx1ZSk7XG4gIH1cbiAgcHJvdGVjdGVkIGNvbmZpZ3VyZURlZmF1bHRBbGVydCh0aXRsZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIGNvbmZpZz86IE9EaWFsb2dDb25maWcpIHtcbiAgICB0aGlzLnR3b09wdGlvbnMgPSBmYWxzZTtcbiAgICB0aGlzLnRpdGxlID0gdGl0bGU7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcblxuICAgIHRoaXMuaWNvbiA9ICh0eXBlb2YgKGNvbmZpZy5pY29uKSAhPT0gJ3VuZGVmaW5lZCcpID8gY29uZmlnLmljb24gOiB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuaWNvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnVzZUljb24gPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLmFsZXJ0VHlwZSA9IGNvbmZpZy5hbGVydFR5cGU7XG5cbiAgICB0aGlzLm9rQnV0dG9uVGV4dCA9ICh0eXBlb2YgKGNvbmZpZy5va0J1dHRvblRleHQpICE9PSAndW5kZWZpbmVkJykgPyBjb25maWcub2tCdXR0b25UZXh0IDogT0RpYWxvZ0ludGVybmFsQ29tcG9uZW50LkRFRkFVTFRfT0tfQlVUVE9OX1RFWFQ7XG4gICAgdGhpcy5jYW5jZWxCdXR0b25UZXh0ID0gKHR5cGVvZiAoY29uZmlnLmNhbmNlbEJ1dHRvblRleHQpICE9PSAndW5kZWZpbmVkJykgPyBjb25maWcuY2FuY2VsQnV0dG9uVGV4dCA6IE9EaWFsb2dJbnRlcm5hbENvbXBvbmVudC5ERUZBVUxUX0NBTkNFTF9CVVRUT05fVEVYVDtcbiAgfVxuXG4gIGdldCBpc0luZm8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWxlcnRUeXBlID09PSAnaW5mbyc7XG4gIH1cblxuICBnZXQgaXNXYXJuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFsZXJ0VHlwZSA9PT0gJ3dhcm4nO1xuICB9XG5cbiAgZ2V0IGlzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWxlcnRUeXBlID09PSAnZXJyb3InO1xuICB9XG5cbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RpdGxlO1xuICB9XG5cbiAgc2V0IHRpdGxlKHZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGl0bGUgPSB2YWw7XG4gIH1cblxuICBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9tZXNzYWdlO1xuICB9XG5cbiAgc2V0IG1lc3NhZ2UodmFsOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9tZXNzYWdlID0gdmFsO1xuICB9XG5cbiAgZ2V0IG9rQnV0dG9uVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9va0J1dHRvblRleHQ7XG4gIH1cblxuICBzZXQgb2tCdXR0b25UZXh0KHZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5fb2tCdXR0b25UZXh0ID0gdmFsO1xuICB9XG5cbiAgZ2V0IGNhbmNlbEJ1dHRvblRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY2FuY2VsQnV0dG9uVGV4dDtcbiAgfVxuXG4gIHNldCBjYW5jZWxCdXR0b25UZXh0KHZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5fY2FuY2VsQnV0dG9uVGV4dCA9IHZhbDtcbiAgfVxuXG4gIGdldCBpY29uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ljb247XG4gIH1cblxuICBzZXQgaWNvbih2YWw6IHN0cmluZykge1xuICAgIHRoaXMuX2ljb24gPSB2YWw7XG4gIH1cblxuICBnZXQgYWxlcnRUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2FsZXJ0VHlwZTtcbiAgfVxuXG4gIHNldCBhbGVydFR5cGUodmFsOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9hbGVydFR5cGUgPSB2YWw7XG4gIH1cblxuXG4gIGdldCB0d29PcHRpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl90d29PcHRpb25zO1xuICB9XG5cbiAgc2V0IHR3b09wdGlvbnModmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5fdHdvT3B0aW9ucyA9IHZhbDtcbiAgfVxuXG4gIGdldCB1c2VJY29uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl91c2VJY29uO1xuICB9XG5cbiAgc2V0IHVzZUljb24odmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5fdXNlSWNvbiA9IHZhbDtcbiAgfVxuXG5cbn0iLCI8ZGl2ICpuZ0lmPVwidGl0bGUgJiYgdGl0bGUubGVuZ3RoID4gMFwiIG1hdC1kaWFsb2ctdGl0bGU+e3sgZ2V0VHJhbnNsYXRpb24odGl0bGUpIH19PC9kaXY+XG48ZGl2IG1hdC1kaWFsb2ctY29udGVudD5cbiAgPGRpdiBmeExheW91dD1cInJvd1wiIGNsYXNzPVwiYWxlcnQtY29udGVudFwiIFtjbGFzcy5hbGVydC1jb250ZW50LWljb25dPVwidXNlSWNvblwiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIGNlbnRlclwiPlxuICAgIDxtYXQtaWNvbiAqbmdJZj1cInVzZUljb25cIiBjbGFzcz1cImFsZXJ0LWljb25cIiBbY2xhc3MuaW5mb109XCJpc0luZm9cIiBbY2xhc3Mud2Fybl09XCJpc1dhcm5cIiBbY2xhc3MuZXJyb3JdPVwiaXNFcnJvclwiPlxuICAgICAge3sgaWNvbiB9fVxuICAgIDwvbWF0LWljb24+XG4gICAgPHNwYW4gW2lubmVySFRNTF09XCJnZXRUcmFuc2xhdGlvbihtZXNzYWdlKSBcIj48L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG48bWF0LWRpYWxvZy1hY3Rpb25zIGFsaWduPVwiZW5kXCI+XG4gIDxzcGFuIGZ4RmxleD48L3NwYW4+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwidHdvT3B0aW9uc1wiIG1hdC1zdHJva2VkLWJ1dHRvbiBtYXQtZGlhbG9nLWNsb3NlIGNsYXNzPVwiby1idXR0b24tZGVmYXVsdCBjYW5jZWxcIj5cbiAgICB7e2dldFRyYW5zbGF0aW9uKCBjYW5jZWxCdXR0b25UZXh0KSB9fVxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwiby1idXR0b24tcHJpbWFyeVwiIChjbGljayk9XCJvbk9rQ2xpY2soKVwiPnt7IGdldFRyYW5zbGF0aW9uKG9rQnV0dG9uVGV4dCkgfX08L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuIl19