@pepperi/lib
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.0.1.
412 lines • 48.9 kB
JavaScript
import { Component, Injectable, Input, Output, EventEmitter, ViewChild, ChangeDetectionStrategy } from '@angular/core';
import { FileUploader } from 'ng2-file-upload';
import { LAYOUT_TYPE } from '@pepperi/lib';
import { DialogData, DialogDataType } from '@pepperi/lib/dialog';
import * as i0 from "@angular/core";
import * as i1 from "@ngx-translate/core";
import * as i2 from "@pepperi/lib/dialog";
import * as i3 from "@pepperi/lib";
import * as i4 from "@angular/common";
import * as i5 from "@angular/material/form-field";
import * as i6 from "@angular/forms";
import * as i7 from "@angular/material/input";
import * as i8 from "@angular/material/button";
import * as i9 from "@angular/material/icon";
import * as i10 from "@pepperi/lib/icon";
import * as i11 from "ng2-file-upload";
const _c0 = ["fileInput"];
const _c1 = ["imagePreview"];
function FilesUploaderComponent_ng_template_0_ng_container_3_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementContainer(0);
} }
const _c2 = function (a0) { return { "right-alignment": a0 }; };
function FilesUploaderComponent_ng_template_0_ng_template_4_button_0_Template(rf, ctx) { if (rf & 1) {
const _r14 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "button", 14);
i0.ɵɵlistener("click", function FilesUploaderComponent_ng_template_0_ng_template_4_button_0_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r13 = i0.ɵɵnextContext(3); return ctx_r13.deleteFile(); });
i0.ɵɵelementStart(1, "mat-icon");
i0.ɵɵelement(2, "pep-icon", 15);
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r10 = i0.ɵɵnextContext(3);
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(1, _c2, ctx_r10.xAlignment == "2"));
} }
const _c3 = function (a0) { return [a0]; };
function FilesUploaderComponent_ng_template_0_ng_template_4_img_2_Template(rf, ctx) { if (rf & 1) {
const _r17 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "img", 16, 17);
i0.ɵɵlistener("error", function FilesUploaderComponent_ng_template_0_ng_template_4_img_2_Template_img_error_0_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r16 = i0.ɵɵnextContext(3); return ctx_r16.errorHandler($event); });
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r11 = i0.ɵɵnextContext(3);
i0.ɵɵstyleProp("max-height", ctx_r11.fieldHeight);
i0.ɵɵproperty("src", ctx_r11.src, i0.ɵɵsanitizeUrl)("alt", ctx_r11.label)("ngClass", i0.ɵɵpureFunction1(5, _c3, "text-align-" + ctx_r11.xAlignment));
} }
function FilesUploaderComponent_ng_template_0_ng_template_4_div_3_a_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "a", 20);
i0.ɵɵelement(1, "pep-icon", 21);
i0.ɵɵelementStart(2, "span", 22);
i0.ɵɵtext(3);
i0.ɵɵpipe(4, "translate");
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
} if (rf & 2) {
i0.ɵɵadvance(3);
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 1, "FilesUploader_SeeOriginal"));
} }
function FilesUploaderComponent_ng_template_0_ng_template_4_div_3_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 18);
i0.ɵɵtemplate(1, FilesUploaderComponent_ng_template_0_ng_template_4_div_3_a_1_Template, 5, 3, "a", 19);
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r12 = i0.ɵɵnextContext(3);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx_r12.src != "");
} }
function FilesUploaderComponent_ng_template_0_ng_template_4_Template(rf, ctx) { if (rf & 1) {
const _r20 = i0.ɵɵgetCurrentView();
i0.ɵɵtemplate(0, FilesUploaderComponent_ng_template_0_ng_template_4_button_0_Template, 3, 3, "button", 10);
i0.ɵɵelementStart(1, "div", 11);
i0.ɵɵlistener("click", function FilesUploaderComponent_ng_template_0_ng_template_4_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r19 = i0.ɵɵnextContext(2); return ctx_r19.onElementClicked($event); });
i0.ɵɵtemplate(2, FilesUploaderComponent_ng_template_0_ng_template_4_img_2_Template, 2, 7, "img", 12);
i0.ɵɵtemplate(3, FilesUploaderComponent_ng_template_0_ng_template_4_div_3_Template, 2, 1, "div", 13);
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r7 = i0.ɵɵnextContext(2);
i0.ɵɵproperty("ngIf", !ctx_r7.disabled);
i0.ɵɵadvance(2);
i0.ɵɵproperty("ngIf", ctx_r7.controlType === "image");
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx_r7.controlType === "attachment");
} }
function FilesUploaderComponent_ng_template_0_ng_template_6_pep_icon_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelement(0, "pep-icon", 21);
} }
function FilesUploaderComponent_ng_template_0_ng_template_6_pep_icon_2_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelement(0, "pep-icon", 26);
} }
function FilesUploaderComponent_ng_template_0_ng_template_6_span_3_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "span", 22);
i0.ɵɵtext(1);
i0.ɵɵpipe(2, "translate");
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r23 = i0.ɵɵnextContext(3);
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, ctx_r23.disabled ? ctx_r23.controlType === "image" ? "FilesUploader_MissingImageMsg" : "FilesUploader_MissingFileMsg" : "FilesUploader_DragDropMsg"), " ");
} }
function FilesUploaderComponent_ng_template_0_ng_template_6_ng_container_4_button_3_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "button", 30);
i0.ɵɵelementStart(1, "mat-icon");
i0.ɵɵelement(2, "pep-icon", 31);
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r26 = i0.ɵɵnextContext(4);
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(1, _c2, ctx_r26.xAlignment == "2"));
} }
function FilesUploaderComponent_ng_template_0_ng_template_6_ng_container_4_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementContainerStart(0);
i0.ɵɵelement(1, "input", 27, 28);
i0.ɵɵtemplate(3, FilesUploaderComponent_ng_template_0_ng_template_6_ng_container_4_button_3_Template, 3, 3, "button", 29);
i0.ɵɵelementContainerEnd();
} if (rf & 2) {
const ctx_r24 = i0.ɵɵnextContext(3);
i0.ɵɵadvance(1);
i0.ɵɵpropertyInterpolate1("id", "pepperi-file-", ctx_r24.key, "");
i0.ɵɵproperty("uploader", ctx_r24.uploader);
i0.ɵɵadvance(2);
i0.ɵɵproperty("ngIf", ctx_r24.progress != 0);
} }
function FilesUploaderComponent_ng_template_0_ng_template_6_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 18);
i0.ɵɵtemplate(1, FilesUploaderComponent_ng_template_0_ng_template_6_pep_icon_1_Template, 1, 0, "pep-icon", 23);
i0.ɵɵtemplate(2, FilesUploaderComponent_ng_template_0_ng_template_6_pep_icon_2_Template, 1, 0, "pep-icon", 24);
i0.ɵɵtemplate(3, FilesUploaderComponent_ng_template_0_ng_template_6_span_3_Template, 3, 3, "span", 25);
i0.ɵɵelementEnd();
i0.ɵɵtemplate(4, FilesUploaderComponent_ng_template_0_ng_template_6_ng_container_4_Template, 4, 3, "ng-container", 1);
} if (rf & 2) {
const ctx_r9 = i0.ɵɵnextContext(2);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx_r9.controlType === "attachment");
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx_r9.controlType === "image");
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx_r9.progress == 0);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", !ctx_r9.disabled);
} }
const _c4 = function (a0, a1) { return { "one-row": a0, disable: a1 }; };
const _c5 = function (a0) { return { field: a0 }; };
function FilesUploaderComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {
const _r28 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "mat-form-field", 2);
i0.ɵɵelementStart(1, "div", 3);
i0.ɵɵelementStart(2, "div", 4);
i0.ɵɵtemplate(3, FilesUploaderComponent_ng_template_0_ng_container_3_Template, 1, 0, "ng-container", 5);
i0.ɵɵtemplate(4, FilesUploaderComponent_ng_template_0_ng_template_4_Template, 4, 3, "ng-template", null, 6, i0.ɵɵtemplateRefExtractor);
i0.ɵɵtemplate(6, FilesUploaderComponent_ng_template_0_ng_template_6_Template, 5, 4, "ng-template", null, 7, i0.ɵɵtemplateRefExtractor);
i0.ɵɵelementEnd();
i0.ɵɵelementStart(8, "input", 8);
i0.ɵɵlistener("click", function FilesUploaderComponent_ng_template_0_Template_input_click_8_listener($event) { i0.ɵɵrestoreView(_r28); const ctx_r27 = i0.ɵɵnextContext(); return ctx_r27.onClick_ChooseFile($event); })("keypress", function FilesUploaderComponent_ng_template_0_Template_input_keypress_8_listener($event) { i0.ɵɵrestoreView(_r28); const ctx_r29 = i0.ɵɵnextContext(); return ctx_r29.onKeyPress_ChooseFile($event); });
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵelementStart(9, "mat-error");
i0.ɵɵelement(10, "span", 9);
i0.ɵɵpipe(11, "translate");
i0.ɵɵpipe(12, "translate");
i0.ɵɵpipe(13, "translate");
i0.ɵɵpipe(14, "translate");
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
} if (rf & 2) {
const _r6 = i0.ɵɵreference(5);
const _r8 = i0.ɵɵreference(7);
const ctx_r1 = i0.ɵɵnextContext();
i0.ɵɵproperty("formGroup", ctx_r1.form);
i0.ɵɵadvance(2);
i0.ɵɵstyleProp("height", ctx_r1.fieldHeight);
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(26, _c4, ctx_r1.rowSpan == 1, ctx_r1.disabled));
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx_r1.src != "")("ngIfThen", _r6)("ngIfElse", _r8);
i0.ɵɵadvance(5);
i0.ɵɵproperty("id", ctx_r1.key)("name", ctx_r1.key)("formControlName", ctx_r1.key)("value", ctx_r1.src)("disabled", ctx_r1.disabled);
i0.ɵɵadvance(2);
i0.ɵɵproperty("title", ctx_r1.required && ctx_r1.src.length == 0 ? i0.ɵɵpipeBind2(11, 14, "Msg_Is_Required", i0.ɵɵpureFunction1(29, _c5, ctx_r1.label)) : i0.ɵɵpipeBind2(12, 17, "Msg_Is_Not_Valid", i0.ɵɵpureFunction1(31, _c5, ctx_r1.label)))("innerText", ctx_r1.required && ctx_r1.src.length == 0 ? i0.ɵɵpipeBind2(13, 20, "Msg_Is_Required", i0.ɵɵpureFunction1(33, _c5, ctx_r1.label)) : i0.ɵɵpipeBind2(14, 23, "Msg_Is_Not_Valid", i0.ɵɵpureFunction1(35, _c5, ctx_r1.label)));
} }
function FilesUploaderComponent_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementContainer(0);
} }
function FilesUploaderComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementContainerStart(0);
i0.ɵɵtemplate(1, FilesUploaderComponent_ng_container_2_ng_container_1_Template, 1, 0, "ng-container", 32);
i0.ɵɵelementContainerEnd();
} if (rf & 2) {
i0.ɵɵnextContext();
const _r0 = i0.ɵɵreference(1);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngTemplateOutlet", _r0);
} }
function FilesUploaderComponent_ng_container_3_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementContainer(0);
} }
function FilesUploaderComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementContainer(0);
} }
export class FilesUploaderComponent {
constructor(translate, dialogService, customizationService, fileService) {
this.translate = translate;
this.dialogService = dialogService;
this.customizationService = customizationService;
this.fileService = fileService;
this.key = '';
this.src = '';
this.label = '';
this.required = false;
this.disabled = false;
this.xAlignment = '0';
this.rowSpan = 1;
this.controlType = '';
this.sizeLimitMB = 5;
this.standAlone = false;
this.acceptedExtensions = 'bmp,jpg,jpeg,png,gif,ico,svg,html,css';
this.layoutType = LAYOUT_TYPE.PepperiForm;
this.fileChanged = new EventEmitter();
this.elementClicked = new EventEmitter();
this.LAYOUT_TYPE = LAYOUT_TYPE;
this.fieldHeight = '';
this.progress = 0;
// response: string;
this.intervalID = null;
const self = this;
this.uploader = new FileUploader({ removeAfterUpload: true });
this.uploader.onAfterAddingFile = (item) => {
var _a;
if ((_a = self.fileInput) === null || _a === void 0 ? void 0 : _a.nativeElement) {
self.fileInput.nativeElement.value = '';
}
const reader = new FileReader();
reader.onload = (event) => {
const fileExt = item._file.name.split('.').pop();
const target = event.target || event.srcElement;
const fileStr = target.result;
const errorMsg = self.isValidFile(fileStr, fileExt, self.acceptedExtensions, self.sizeLimitMB);
if (errorMsg === '') {
self.src = fileStr;
self.setIntervalX(25, 75);
self.setProgress(5);
self.fileChanged.emit(JSON.stringify({
acceptedExtensions: self.acceptedExtensions,
fileStr,
fileExt,
}));
}
else {
const title = self.translate.instant('Msg_Notice_Title');
const data = new DialogData({
title,
content: errorMsg,
contentType: DialogDataType.Html
});
self.dialogService.openDefaultDialog(data);
}
};
reader.readAsDataURL(item._file);
};
}
ngOnInit() {
this.fieldHeight = this.customizationService.calculateFieldHeight(this.layoutType, this.rowSpan, this.standAlone);
/*this.uploader.onCompleteAll = () => {
this.fileInput.nativeElement.value = '';
}*/
}
isValidFile(fileStr, fileExtension, acceptedExtensions, sizeLimitMB = 5) {
const file = fileStr;
let fileSize = 0;
let content = '';
// check if got file as Base64
if (typeof fileStr === 'string' && fileStr.indexOf('data:') > -1) {
fileSize = this.getBase64FileSize(fileStr);
}
else {
fileSize = file.size;
}
// check the size and the extension
const sizeOK = fileSize !== -1 && file != null && fileSize < sizeLimitMB * (1048576);
const extensionOK = acceptedExtensions === '' || acceptedExtensions.indexOf(fileExtension.toLowerCase()) !== -1;
if (!extensionOK) {
content = this.translate.instant('FaildToLoadImageExtension', { fileExtension: '<label class=\'upperCaseBold\'>' + fileExtension + '</label>' });
}
else if (!sizeOK) {
content = this.translate.instant('FaildToLoadImageSize', { fileSize: '<label class=\'upperCaseBold\'>' + (sizeLimitMB).toString() + '</label>' });
}
return content;
}
getBase64FileSize(base64String) {
let fileSize;
try {
base64String = base64String.substr(base64String.indexOf(',') + 1);
fileSize = atob(base64String).length;
}
catch (e) {
fileSize = -1;
}
return fileSize; // return size in bytes;
}
setIntervalX(delay, repetitions) {
const self = this;
let x = 0;
this.intervalID = window.setInterval(() => {
// self.setProgress(self.progress + 5);
if (++x === repetitions || self.uploader.progress >= 100) {
window.clearInterval(self.intervalID);
}
}, delay);
}
errorHandler(event) {
event.target.src = this.fileService.getNoImagePath();
event.target.title = this.translate.instant('NoImage');
}
setProgress(progress) {
this.progress = progress;
this.uploader.progress = progress;
}
deleteFile() {
this.uploader.clearQueue();
window.clearInterval(this.intervalID);
this.setProgress(0);
const value = '';
this.src = value;
this.fileChanged.emit(value);
}
onElementClicked(event) {
this.elementClicked.emit({ apiName: this.key, event });
}
onClick_ChooseFile(event) {
var _a;
if ((_a = this.fileInput) === null || _a === void 0 ? void 0 : _a.nativeElement) {
this.fileInput.nativeElement.click();
}
}
onKeyPress_ChooseFile(event) {
var _a;
const e = event;
if ([13, 32].indexOf(e.which) !== -1) {
if ((_a = this.fileInput) === null || _a === void 0 ? void 0 : _a.nativeElement) {
this.fileInput.nativeElement.click();
}
}
e.preventDefault();
}
}
FilesUploaderComponent.ɵfac = function FilesUploaderComponent_Factory(t) { return new (t || FilesUploaderComponent)(i0.ɵɵdirectiveInject(i1.TranslateService), i0.ɵɵdirectiveInject(i2.DialogService), i0.ɵɵdirectiveInject(i3.CustomizationService), i0.ɵɵdirectiveInject(i3.FileService)); };
FilesUploaderComponent.ɵcmp = i0.ɵɵdefineComponent({ type: FilesUploaderComponent, selectors: [["files-uploader"]], viewQuery: function FilesUploaderComponent_Query(rf, ctx) { if (rf & 1) {
i0.ɵɵviewQuery(_c0, true);
i0.ɵɵviewQuery(_c1, true);
} if (rf & 2) {
var _t;
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.fileInput = _t.first);
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.imagePreview = _t.first);
} }, inputs: { key: "key", src: "src", label: "label", required: "required", disabled: "disabled", xAlignment: "xAlignment", rowSpan: "rowSpan", controlType: "controlType", sizeLimitMB: "sizeLimitMB", form: "form", standAlone: "standAlone", acceptedExtensions: "acceptedExtensions", layoutType: "layoutType" }, outputs: { fileChanged: "fileChanged", elementClicked: "elementClicked" }, decls: 5, vars: 3, consts: [["pepperiTemplate", ""], [4, "ngIf"], ["appearance", "outline", 3, "formGroup"], [1, "pepperi-file-wrapper"], [1, "pepperi-file", "body-sm", 3, "ngClass"], [4, "ngIf", "ngIfThen", "ngIfElse"], ["withImg", ""], ["noImg", ""], ["matInput", "", "type", "text", "autocomplete", "off", 1, "hidden-input", 3, "id", "name", "formControlName", "value", "disabled", "click", "keypress"], [1, "body-xs", 3, "title", "innerText"], ["mat-button", "", "class", "pepperi-button icon-button weak md delete", "tabindex", "-1", 3, "ngClass", "click", 4, "ngIf"], [1, "pepperi-file-preview", 3, "click"], ["class", "pepperi-file-preview-img", 3, "src", "max-height", "alt", "ngClass", "error", 4, "ngIf"], ["class", "ellipsis pepperi-file-message", 4, "ngIf"], ["mat-button", "", "tabindex", "-1", 1, "pepperi-button", "icon-button", "weak", "md", "delete", 3, "ngClass", "click"], ["name", "system_bin"], [1, "pepperi-file-preview-img", 3, "src", "alt", "ngClass", "error"], ["imagePreview", ""], [1, "ellipsis", "pepperi-file-message"], ["href", "javascript:void(0)", 4, "ngIf"], ["href", "javascript:void(0)"], ["name", "system_attach"], [1, "body-sm", "ellipsis"], ["name", "system_attach", 4, "ngIf"], ["name", "system_file_upload_cloud", 4, "ngIf"], ["class", "body-sm ellipsis", 4, "ngIf"], ["name", "system_file_upload_cloud"], ["tabindex", "-1", "type", "file", "accept", "acceptedExtensions", "ng2FileSelect", "", "autocomplete", "off", 3, "id", "uploader"], ["fileInput", ""], ["mat-button", "", "class", "pepperi-button icon-button weak md delete", 3, "ngClass", 4, "ngIf"], ["mat-button", "", 1, "pepperi-button", "icon-button", "weak", "md", "delete", 3, "ngClass"], ["name", "system_processing", 1, "spin-icon"], [4, "ngTemplateOutlet"]], template: function FilesUploaderComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵtemplate(0, FilesUploaderComponent_ng_template_0_Template, 15, 37, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
i0.ɵɵtemplate(2, FilesUploaderComponent_ng_container_2_Template, 2, 1, "ng-container", 1);
i0.ɵɵtemplate(3, FilesUploaderComponent_ng_container_3_Template, 1, 0, "ng-container", 1);
i0.ɵɵtemplate(4, FilesUploaderComponent_ng_container_4_Template, 1, 0, "ng-container", 1);
} if (rf & 2) {
i0.ɵɵadvance(2);
i0.ɵɵproperty("ngIf", ctx.layoutType === ctx.LAYOUT_TYPE.PepperiForm);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx.layoutType === ctx.LAYOUT_TYPE.PepperiCard);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx.layoutType === ctx.LAYOUT_TYPE.PepperiTable);
} }, directives: [i4.NgIf, i5.MatFormField, i6.NgControlStatusGroup, i6.FormGroupDirective, i4.NgClass, i7.MatInput, i6.DefaultValueAccessor, i6.NgControlStatus, i6.FormControlName, i5.MatError, i8.MatButton, i9.MatIcon, i10.PepperiIconComponent, i11.FileSelectDirective, i4.NgTemplateOutlet], pipes: [i1.TranslatePipe], styles: ["[_nghost-%COMP%]{display:-ms-grid;display:grid;height:inherit}"], changeDetection: 0 });
FilesUploaderComponent.ɵprov = i0.ɵɵdefineInjectable({ token: FilesUploaderComponent, factory: FilesUploaderComponent.ɵfac });
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(FilesUploaderComponent, [{
type: Component,
args: [{
selector: 'files-uploader',
templateUrl: './files-uploader.component.html',
styleUrls: ['./files-uploader.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush
}]
}, {
type: Injectable
}], function () { return [{ type: i1.TranslateService }, { type: i2.DialogService }, { type: i3.CustomizationService }, { type: i3.FileService }]; }, { key: [{
type: Input
}], src: [{
type: Input
}], label: [{
type: Input
}], required: [{
type: Input
}], disabled: [{
type: Input
}], xAlignment: [{
type: Input
}], rowSpan: [{
type: Input
}], controlType: [{
type: Input
}], sizeLimitMB: [{
type: Input
}], form: [{
type: Input
}], standAlone: [{
type: Input
}], acceptedExtensions: [{
type: Input
}], layoutType: [{
type: Input
}], fileChanged: [{
type: Output
}], elementClicked: [{
type: Output
}], fileInput: [{
type: ViewChild,
args: ['fileInput']
}], imagePreview: [{
type: ViewChild,
args: ['imagePreview']
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtdXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGVwcGVyaS1saWIvZmlsZXMtdXBsb2FkZXIvZmlsZXMtdXBsb2FkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGVwcGVyaS1saWIvZmlsZXMtdXBsb2FkZXIvZmlsZXMtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFxQix1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsSixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFlLFdBQVcsRUFBd0IsTUFBTSxjQUFjLENBQUM7QUFDOUUsT0FBTyxFQUFpQixVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUNFaEUsd0JBQXlFOzs7OztJQUVyRSxrQ0FHSTtJQUhpQyw2TkFBc0I7SUFHdkQsZ0NBQ0k7SUFBQSwrQkFDVztJQUNmLGlCQUFXO0lBQ2YsaUJBQVM7OztJQUxMLCtFQUFvRDs7Ozs7SUFPcEQsbUNBR0E7SUFGcUMscU9BQThCO0lBRG5FLGlCQUdBOzs7SUFGSSxpREFBZ0M7SUFEZSxtREFBVyxzQkFBQSwyRUFBQTs7O0lBSTFELDZCQUNJO0lBQUEsK0JBQ1c7SUFDWCxnQ0FBK0I7SUFBQSxZQUE2Qzs7SUFBQSxpQkFBTztJQUN2RixpQkFBSTs7SUFEK0IsZUFBNkM7SUFBN0MsdUVBQTZDOzs7SUFKcEYsK0JBQ0k7SUFBQSxzR0FDSTtJQUlSLGlCQUFNOzs7SUFMQyxlQUFpQjtJQUFqQix3Q0FBaUI7Ozs7SUFiNUIsMEdBR0k7SUFLSiwrQkFDSTtJQUQ4QixtT0FBa0M7SUFDaEUs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UTtrQkFBaEIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxPQUFPO2tCQUFmLEtBQUs7WUFDRyxXQUFXO2tCQUFuQixLQUFLO1lBQ0csV0FBVztrQkFBbkIsS0FBSztZQUVHLElBQUk7a0JBQVosS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxrQkFBa0I7a0JBQTFCLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBRUksV0FBVztrQkFBcEIsTUFBTTtZQUNHLGNBQWM7a0JBQXZCLE1BQU07WUFFaUIsU0FBUztrQkFBaEMsU0FBUzttQkFBQyxXQUFXO1lBQ0ssWUFBWTtrQkFBdEMsU0FBUzttQkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0YWJsZSwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIENoYW5nZURldGVjdG9yUmVmLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRlciB9IGZyb20gJ25nMi1maWxlLXVwbG9hZCc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRmlsZVNlcnZpY2UsIExBWU9VVF9UWVBFLCBDdXN0b21pemF0aW9uU2VydmljZSB9IGZyb20gJ0BwZXBwZXJpL2xpYic7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UsIERpYWxvZ0RhdGEsIERpYWxvZ0RhdGFUeXBlIH0gZnJvbSAnQHBlcHBlcmkvbGliL2RpYWxvZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnZmlsZXMtdXBsb2FkZXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbGVzLXVwbG9hZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2ZpbGVzLXVwbG9hZGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBGaWxlc1VwbG9hZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBJbnB1dCgpIGtleSA9ICcnO1xyXG4gICAgQElucHV0KCkgc3JjID0gJyc7XHJcbiAgICBASW5wdXQoKSBsYWJlbCA9ICcnO1xyXG4gICAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSB4QWxpZ25tZW50ID0gJzAnO1xyXG4gICAgQElucHV0KCkgcm93U3BhbiA9IDE7XHJcbiAgICBASW5wdXQoKSBjb250cm9sVHlwZSA9ICcnO1xyXG4gICAgQElucHV0KCkgc2l6ZUxpbWl0TUIgPSA1O1xyXG5cclxuICAgIEBJbnB1dCgpIGZvcm06IEZvcm1Hcm91cDtcclxuICAgIEBJbnB1dCgpIHN0YW5kQWxvbmUgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGFjY2VwdGVkRXh0ZW5zaW9ucyA9ICdibXAsanBnLGpwZWcscG5nLGdpZixpY28sc3ZnLGh0bWwsY3NzJztcclxuICAgIEBJbnB1dCgpIGxheW91dFR5cGU6IExBWU9VVF9UWVBFID0gTEFZT1VUX1RZUEUuUGVwcGVyaUZvcm07XHJcblxyXG4gICAgQE91dHB1dCgpIGZpbGVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIGVsZW1lbnRDbGlja2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dDogYW55O1xyXG4gICAgQFZpZXdDaGlsZCgnaW1hZ2VQcmV2aWV3JykgaW1hZ2VQcmV2aWV3OiBhbnk7XHJcblxyXG4gICAgTEFZT1VUX1RZUEUgPSBMQVlPVVRfVFlQRTtcclxuICAgIGZpZWxkSGVpZ2h0ID0gJyc7XHJcblxyXG4gICAgLy8gbXVsdGlwbGUgPSBmYWxzZTtcclxuICAgIHVwbG9hZGVyOiBGaWxlVXBsb2FkZXI7XHJcbiAgICBwcm9ncmVzcyA9IDA7XHJcbiAgICAvLyByZXNwb25zZTogc3RyaW5nO1xyXG4gICAgaW50ZXJ2YWxJRDogYW55ID0gbnVsbDtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjdXN0b21pemF0aW9uU2VydmljZTogQ3VzdG9taXphdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBmaWxlU2VydmljZTogRmlsZVNlcnZpY2UpXHJcbiAgICB7XHJcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy51cGxvYWRlciA9IG5ldyBGaWxlVXBsb2FkZXIoeyByZW1vdmVBZnRlclVwbG9hZDogdHJ1ZSB9KTtcclxuXHJcbiAgICAgICAgdGhpcy51cGxvYWRlci5vbkFmdGVyQWRkaW5nRmlsZSA9IChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzZWxmLmZpbGVJbnB1dD8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgc2VsZi5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcblxyXG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVFeHQgPSBpdGVtLl9maWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCB8fCBldmVudC5zcmNFbGVtZW50O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZVN0ciA9IHRhcmdldC5yZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvck1zZyA9IHNlbGYuaXNWYWxpZEZpbGUoZmlsZVN0ciwgZmlsZUV4dCwgc2VsZi5hY2NlcHRlZEV4dGVuc2lvbnMsIHNlbGYuc2l6ZUxpbWl0TUIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yTXNnID09PSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc3JjID0gZmlsZVN0cjtcclxuICAgICAgICAgICAgICAgICAgICBzZWxmLnNldEludGVydmFsWCgyNSwgNzUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0UHJvZ3Jlc3MoNSk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxlQ2hhbmdlZC5lbWl0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZEV4dGVuc2lvbnM6IHNlbGYuYWNjZXB0ZWRFeHRlbnNpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZVN0cixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVFeHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gc2VsZi50cmFuc2xhdGUuaW5zdGFudCgnTXNnX05vdGljZV9UaXRsZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBuZXcgRGlhbG9nRGF0YSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBlcnJvck1zZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGU6IERpYWxvZ0RhdGFUeXBlLkh0bWx9KTtcclxuICAgICAgICAgICAgICAgICAgICBzZWxmLmRpYWxvZ1NlcnZpY2Uub3BlbkRlZmF1bHREaWFsb2coZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChpdGVtLl9maWxlKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZmllbGRIZWlnaHQgPSB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmNhbGN1bGF0ZUZpZWxkSGVpZ2h0KHRoaXMubGF5b3V0VHlwZSwgdGhpcy5yb3dTcGFuLCB0aGlzLnN0YW5kQWxvbmUpO1xyXG5cclxuICAgICAgICAvKnRoaXMudXBsb2FkZXIub25Db21wbGV0ZUFsbCA9ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgIH0qL1xyXG4gICAgfVxyXG5cclxuICAgIGlzVmFsaWRGaWxlKGZpbGVTdHIsIGZpbGVFeHRlbnNpb24sIGFjY2VwdGVkRXh0ZW5zaW9ucywgc2l6ZUxpbWl0TUIgPSA1KTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBmaWxlOiBhbnkgPSBmaWxlU3RyO1xyXG4gICAgICAgIGxldCBmaWxlU2l6ZSA9IDA7XHJcbiAgICAgICAgbGV0IGNvbnRlbnQgPSAnJztcclxuICAgICAgICAvLyBjaGVjayBpZiBnb3QgZmlsZSBhcyBCYXNlNjRcclxuICAgICAgICBpZiAodHlwZW9mIGZpbGVTdHIgPT09ICdzdHJpbmcnICYmIGZpbGVTdHIuaW5kZXhPZignZGF0YTonKSA+IC0xKSB7XHJcbiAgICAgICAgICAgIGZpbGVTaXplID0gdGhpcy5nZXRCYXNlNjRGaWxlU2l6ZShmaWxlU3RyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmaWxlU2l6ZSA9IGZpbGUuc2l6ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY2hlY2sgdGhlIHNpemUgYW5kIHRoZSBleHRlbnNpb25cclxuICAgICAgICBjb25zdCBzaXplT0s6IGJvb2xlYW4gPSBmaWxlU2l6ZSAhPT0gLTEgJiYgZmlsZSAhPSBudWxsICYmIGZpbGVTaXplIDwgc2l6ZUxpbWl0TUIgKiAoMTA0ODU3Nik7XHJcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uT0sgPSBhY2NlcHRlZEV4dGVuc2lvbnMgPT09ICcnIHx8IGFjY2VwdGVkRXh0ZW5zaW9ucy5pbmRleE9mKGZpbGVFeHRlbnNpb24udG9Mb3dlckNhc2UoKSkgIT09IC0xO1xyXG4gICAgICAgIGlmICghZXh0ZW5zaW9uT0spIHtcclxuICAgICAgICAgICAgY29udGVudCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0ZhaWxkVG9Mb2FkSW1hZ2VFeHRlbnNpb24nLFxyXG4gICAgICAgICAgICAgICAgeyBmaWxlRXh0ZW5zaW9uOiAnPGxhYmVsIGNsYXNzPVxcJ3VwcGVyQ2FzZUJvbGRcXCc+JyArIGZpbGVFeHRlbnNpb24gKyAnPC9sYWJlbD4nIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoIXNpemVPSykge1xyXG4gICAgICAgICAgICBjb250ZW50ID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnRmFpbGRUb0xvYWRJbWFnZVNpemUnLFxyXG4gICAgICAgICAgICAgICAgeyBmaWxlU2l6ZTogJzxsYWJlbCBjbGFzcz1cXCd1cHBlckNhc2VCb2xkXFwnPicgKyAoc2l6ZUxpbWl0TUIpLnRvU3RyaW5nKCkgKyAnPC9sYWJlbD4nIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY29udGVudDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRCYXNlNjRGaWxlU2l6ZShiYXNlNjRTdHJpbmc6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICAgICAgbGV0IGZpbGVTaXplOiBudW1iZXI7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGJhc2U2NFN0cmluZyA9IGJhc2U2NFN0cmluZy5zdWJzdHIoYmFzZTY0U3RyaW5nLmluZGV4T2YoJywnKSArIDEpO1xyXG4gICAgICAgICAgICBmaWxlU2l6ZSA9IGF0b2IoYmFzZTY0U3RyaW5nKS5sZW5ndGg7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBmaWxlU2l6ZSA9IC0xO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZpbGVTaXplOyAvLyByZXR1cm4gc2l6ZSBpbiBieXRlcztcclxuICAgIH1cclxuXHJcbiAgICBzZXRJbnRlcnZhbFgoZGVsYXksIHJlcGV0aXRpb25zKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgbGV0IHggPSAwO1xyXG4gICAgICAgIHRoaXMuaW50ZXJ2YWxJRCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIHNlbGYuc2V0UHJvZ3Jlc3Moc2VsZi5wcm9ncmVzcyArIDUpO1xyXG4gICAgICAgICAgICBpZiAoKyt4ID09PSByZXBldGl0aW9ucyB8fCBzZWxmLnVwbG9hZGVyLnByb2dyZXNzID49IDEwMCkge1xyXG4gICAgICAgICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoc2VsZi5pbnRlcnZhbElEKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIGRlbGF5KTtcclxuICAgIH1cclxuXHJcbiAgICBlcnJvckhhbmRsZXIoZXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBldmVudC50YXJnZXQuc3JjID0gdGhpcy5maWxlU2VydmljZS5nZXROb0ltYWdlUGF0aCgpO1xyXG4gICAgICAgIGV2ZW50LnRhcmdldC50aXRsZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ05vSW1hZ2UnKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldFByb2dyZXNzKHByb2dyZXNzKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wcm9ncmVzcyA9IHByb2dyZXNzO1xyXG4gICAgICAgIHRoaXMudXBsb2FkZXIucHJvZ3Jlc3MgPSBwcm9ncmVzcztcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVGaWxlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudXBsb2FkZXIuY2xlYXJRdWV1ZSgpO1xyXG4gICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxJRCk7XHJcbiAgICAgICAgdGhpcy5zZXRQcm9ncmVzcygwKTtcclxuXHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSAnJztcclxuICAgICAgICB0aGlzLnNyYyA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuZmlsZUNoYW5nZWQuZW1pdCh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25FbGVtZW50Q2xpY2tlZChldmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZWxlbWVudENsaWNrZWQuZW1pdCh7IGFwaU5hbWU6IHRoaXMua2V5LCBldmVudCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrX0Nob29zZUZpbGUoZXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5maWxlSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbktleVByZXNzX0Nob29zZUZpbGUoZXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBlID0gZXZlbnQgYXMgS2V5Ym9hcmRFdmVudDtcclxuXHJcbiAgICAgICAgaWYgKFsxMywgMzJdLmluZGV4T2YoZS53aGljaCkgIT09IC0xKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZpbGVJbnB1dD8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxufVxyXG4iLCI8IS0tIE5ldyBjb2RlIC0tPlxyXG48bmctdGVtcGxhdGUgI3BlcHBlcmlUZW1wbGF0ZT5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBbZm9ybUdyb3VwXT1cImZvcm1cIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwZXBwZXJpLWZpbGUtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVwcGVyaS1maWxlIGJvZHktc21cIiBbc3R5bGUuaGVpZ2h0XT1cImZpZWxkSGVpZ2h0XCIgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICdvbmUtcm93Jzogcm93U3BhbiA9PSAxLFxyXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGU6IGRpc2FibGVkXHJcbiAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3JjICE9ICcnOyB0aGVuIHdpdGhJbWc7IGVsc2Ugbm9JbWdcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjd2l0aEltZz5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWRpc2FibGVkXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlRmlsZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwZXBwZXJpLWJ1dHRvbiBpY29uLWJ1dHRvbiB3ZWFrIG1kIGRlbGV0ZVwiIHRhYmluZGV4PVwiLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdyaWdodC1hbGlnbm1lbnQnOiB4QWxpZ25tZW50ID09ICcyJyB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwZXAtaWNvbiBuYW1lPVwic3lzdGVtX2JpblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wZXAtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVwcGVyaS1maWxlLXByZXZpZXdcIiAoY2xpY2spPVwib25FbGVtZW50Q2xpY2tlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJjb250cm9sVHlwZSA9PT0gJ2ltYWdlJ1wiICNpbWFnZVByZXZpZXcgW3NyY109XCJzcmNcIiBjbGFzcz1cInBlcHBlcmktZmlsZS1wcmV2aWV3LWltZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodF09XCJmaWVsZEhlaWdodFwiIChlcnJvcik9XCJlcnJvckhhbmRsZXIoJGV2ZW50KVwiIFthbHRdPVwibGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiWyd0ZXh0LWFsaWduLScgKyB4QWxpZ25tZW50XVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb250cm9sVHlwZSA9PT0gJ2F0dGFjaG1lbnQnXCIgY2xhc3M9XCJlbGxpcHNpcyBwZXBwZXJpLWZpbGUtbWVzc2FnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJzcmMgIT0gJydcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJzeXN0ZW1fYXR0YWNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wZXAtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvZHktc20gZWxsaXBzaXNcIj57eyAnRmlsZXNVcGxvYWRlcl9TZWVPcmlnaW5hbCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9JbWc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVsbGlwc2lzIHBlcHBlcmktZmlsZS1tZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwZXAtaWNvbiAqbmdJZj1cImNvbnRyb2xUeXBlID09PSAnYXR0YWNobWVudCdcIiBuYW1lPVwic3lzdGVtX2F0dGFjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3BlcC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGVwLWljb24gKm5nSWY9XCJjb250cm9sVHlwZSA9PT0gJ2ltYWdlJ1wiIG5hbWU9XCJzeXN0ZW1fZmlsZV91cGxvYWRfY2xvdWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wZXAtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJib2R5LXNtIGVsbGlwc2lzXCIgKm5nSWY9XCJwcm9ncmVzcyA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAoZGlzYWJsZWQgPyAoY29udHJvbFR5cGUgPT09ICdpbWFnZScgPyAnRmlsZXNVcGxvYWRlcl9NaXNzaW5nSW1hZ2VNc2cnIDogJ0ZpbGVzVXBsb2FkZXJfTWlzc2luZ0ZpbGVNc2cnKSA6ICdGaWxlc1VwbG9hZGVyX0RyYWdEcm9wTXNnJykgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICNmaWxlSW5wdXQgaWQ9XCJwZXBwZXJpLWZpbGUte3sga2V5IH19XCIgdGFiaW5kZXg9XCItMVwiIHR5cGU9XCJmaWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdD1cImFjY2VwdGVkRXh0ZW5zaW9uc1wiIG5nMkZpbGVTZWxlY3QgW3VwbG9hZGVyXT1cInVwbG9hZGVyXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInByb2dyZXNzICE9IDBcIiBtYXQtYnV0dG9uIGNsYXNzPVwicGVwcGVyaS1idXR0b24gaWNvbi1idXR0b24gd2VhayBtZCBkZWxldGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncmlnaHQtYWxpZ25tZW50JzogeEFsaWdubWVudCA9PSAnMicgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwZXAtaWNvbiBuYW1lPVwic3lzdGVtX3Byb2Nlc3NpbmdcIiBjbGFzcz1cInNwaW4taWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGVwLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8aW5wdXQgW2lkXT1cImtleVwiIG1hdElucHV0IFtuYW1lXT1cImtleVwiIFtmb3JtQ29udHJvbE5hbWVdPVwia2V5XCIgY2xhc3M9XCJoaWRkZW4taW5wdXRcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwic3JjXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgKGNsaWNrKT1cIm9uQ2xpY2tfQ2hvb3NlRmlsZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbktleVByZXNzX0Nob29zZUZpbGUoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxtYXQtZXJyb3I+PHNwYW4gY2xhc3M9XCJib2R5LXhzXCJcclxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJyZXF1aXJlZCAmJiBzcmMubGVuZ3RoID09IDAgPyAoJ01zZ19Jc19SZXF1aXJlZCcgfCB0cmFuc2xhdGU6IHsgZmllbGQ6IGxhYmVsIH0pIDogKCdNc2dfSXNfTm90X1ZhbGlkJyB8IHRyYW5zbGF0ZTogeyBmaWVsZDogbGFiZWwgfSlcIlxyXG4gICAgICAgICAgICAgICAgW2lubmVyVGV4dF09XCJyZXF1aXJlZCAmJiBzcmMubGVuZ3RoID09IDAgPyAoJ01zZ19Jc19SZXF1aXJlZCcgfCB0cmFuc2xhdGU6IHsgZmllbGQ6IGxhYmVsIH0pIDogKCdNc2dfSXNfTm90X1ZhbGlkJyB8IHRyYW5zbGF0ZTogeyBmaWVsZDogbGFiZWwgfSlcIj48L3NwYW4+XHJcbiAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImxheW91dFR5cGUgPT09IExBWU9VVF9UWVBFLlBlcHBlcmlGb3JtXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGVwcGVyaVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImxheW91dFR5cGUgPT09IExBWU9VVF9UWVBFLlBlcHBlcmlDYXJkXCI+XHJcbiAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwZXBwZXJpVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj4gLS0+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImxheW91dFR5cGUgPT09IExBWU9VVF9UWVBFLlBlcHBlcmlUYWJsZVwiPlxyXG4gICAgPCEtLSA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGVwcGVyaVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+IC0tPlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19