@pepperi-addons/ngx-lib 0.4.2-beta.37 → 0.4.2-beta.38
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/core/common/services/file.service.d.ts +4 -0
- package/esm2020/core/common/services/file.service.mjs +39 -1
- package/esm2020/files-uploader/files-uploader.component.mjs +3 -6
- package/fesm2015/pepperi-addons-ngx-lib-files-uploader.mjs +2 -5
- package/fesm2015/pepperi-addons-ngx-lib-files-uploader.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib.mjs +38 -0
- package/fesm2015/pepperi-addons-ngx-lib.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-files-uploader.mjs +2 -5
- package/fesm2020/pepperi-addons-ngx-lib-files-uploader.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib.mjs +38 -0
- package/fesm2020/pepperi-addons-ngx-lib.mjs.map +1 -1
- package/files-uploader/files-uploader.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -17,6 +17,10 @@ export declare class PepFileService {
|
|
|
17
17
|
getFileExtension(filePath: string): string;
|
|
18
18
|
isValidUrl(url: string): boolean;
|
|
19
19
|
convertFromb64toBlob(b64Data: any, contentType?: string, sliceSize?: number): Blob;
|
|
20
|
+
getBase64FileSize(base64String: string): number;
|
|
21
|
+
fileToBase64(file: File): Promise<unknown>;
|
|
22
|
+
isValidFileExtension(fileExtension: any, acceptedExtensions: any): boolean;
|
|
23
|
+
isValidFileSize(fileStr: any, sizeLimitMB?: number): boolean;
|
|
20
24
|
getAssetsPath(assetsDomain?: string, libName?: string): string;
|
|
21
25
|
getAssetsTranslationsSuffix(libName?: string): string;
|
|
22
26
|
getAssetsTranslationsPath(assetsDomain?: string, libName?: string): string;
|
|
@@ -183,6 +183,44 @@ export class PepFileService {
|
|
|
183
183
|
const blob = new Blob(byteArrays, { type: contentType });
|
|
184
184
|
return blob;
|
|
185
185
|
}
|
|
186
|
+
getBase64FileSize(base64String) {
|
|
187
|
+
let fileSize;
|
|
188
|
+
try {
|
|
189
|
+
base64String = base64String.slice(base64String.indexOf(',') + 1);
|
|
190
|
+
fileSize = atob(base64String).length;
|
|
191
|
+
}
|
|
192
|
+
catch (e) {
|
|
193
|
+
fileSize = -1;
|
|
194
|
+
}
|
|
195
|
+
return fileSize; // return size in bytes;
|
|
196
|
+
}
|
|
197
|
+
fileToBase64(file) {
|
|
198
|
+
return new Promise((resolve, reject) => {
|
|
199
|
+
const reader = new FileReader();
|
|
200
|
+
reader.readAsDataURL(file);
|
|
201
|
+
reader.onload = () => resolve(reader.result);
|
|
202
|
+
reader.onerror = (error) => reject(error);
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
isValidFileExtension(fileExtension, acceptedExtensions) {
|
|
206
|
+
const extensionOK = acceptedExtensions === '' ||
|
|
207
|
+
acceptedExtensions.indexOf(fileExtension.toLowerCase()) !== -1;
|
|
208
|
+
return extensionOK;
|
|
209
|
+
}
|
|
210
|
+
isValidFileSize(fileStr, sizeLimitMB = 5) {
|
|
211
|
+
const file = fileStr;
|
|
212
|
+
let fileSize = 0;
|
|
213
|
+
// check if got file as Base64
|
|
214
|
+
if (typeof fileStr === 'string' && fileStr.indexOf('data:') > -1) {
|
|
215
|
+
fileSize = this.getBase64FileSize(fileStr);
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
fileSize = file.size;
|
|
219
|
+
}
|
|
220
|
+
// check the size and the extension
|
|
221
|
+
const sizeOK = fileSize !== -1 && file != null && fileSize < sizeLimitMB * 1048576;
|
|
222
|
+
return sizeOK;
|
|
223
|
+
}
|
|
186
224
|
getAssetsPath(assetsDomain = '', libName = 'ngx-lib') {
|
|
187
225
|
const concatChar = assetsDomain === '' || assetsDomain.endsWith('/') ? '' : '/';
|
|
188
226
|
return `${assetsDomain}${concatChar}assets/${libName}/`;
|
|
@@ -210,4 +248,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
210
248
|
providedIn: 'root',
|
|
211
249
|
}]
|
|
212
250
|
}], ctorParameters: function () { return []; } });
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9zcmMvY29yZS9jb21tb24vc2VydmljZXMvZmlsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBYzNDLE1BQU0sT0FBTyxjQUFjO0lBSXZCO1FBQ0ksSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBNEMsQ0FBQztRQUNuRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxFQUE0QyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBOEI7UUFDcEMsTUFBTSxRQUFRLEdBQVUsRUFBRSxDQUFDO1FBQzNCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNuQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO2dCQUN2QixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDNUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDL0IsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQzdDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUE4QjtRQUN0QyxLQUNJLElBQUksS0FBSyxHQUFHLENBQUMsRUFDYixLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU07WUFDcEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUk7WUFDakIsS0FBSyxDQUFDLEtBQUss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LEdBQUcsVUFBVSxVQUFVLE9BQU8sR0FBRyxDQUFDO0lBQzVELENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxPQUFPLEdBQUcsU0FBUztRQUMzQyxPQUFPLElBQUksT0FBTyxPQUFPLENBQUM7SUFDOUIsQ0FBQztJQUVELHlCQUF5QixDQUFDLFlBQVksR0FBRyxFQUFFLEVBQUUsT0FBTyxHQUFHLFNBQVM7UUFDNUQsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDL0QsQ0FBQztJQUVELG1CQUFtQixDQUFDLFlBQVksR0FBRyxFQUFFLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxPQUFPLEdBQUcsU0FBUztRQUNsRSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFVBQVUsS0FBSyxFQUFFLENBQUM7SUFDekUsQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQVc7UUFDeEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDOzsyR0F0UFEsY0FBYzsrR0FBZCxjQUFjLGNBRlgsTUFBTTsyRkFFVCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IHR5cGUgUGVwRmlsZVR5cGUgPSAnc2NyaXB0JyB8ICdzdHlsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcEV4dGVybmFsRmlsZU1vZGVsIHtcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgdHlwZTogUGVwRmlsZVR5cGU7XG59XG5cbmRlY2xhcmUgbGV0IGRvY3VtZW50OiBhbnk7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFBlcEZpbGVTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHNjcmlwdHM6IE1hcDxzdHJpbmcsIHsgbG9hZGVkOiBib29sZWFuOyBzcmM6IHN0cmluZyB9PjtcbiAgICBwcml2YXRlIHN0eWxlczogTWFwPHN0cmluZywgeyBsb2FkZWQ6IGJvb2xlYW47IHNyYzogc3RyaW5nIH0+O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuc2NyaXB0cyA9IG5ldyBNYXA8c3RyaW5nLCB7IGxvYWRlZDogYm9vbGVhbjsgc3JjOiBzdHJpbmcgfT4oKTtcbiAgICAgICAgdGhpcy5zdHlsZXMgPSBuZXcgTWFwPHN0cmluZywgeyBsb2FkZWQ6IGJvb2xlYW47IHNyYzogc3RyaW5nIH0+KCk7XG4gICAgfVxuXG4gICAgbG9hZEZpbGVzKGZpbGVzOiBJUGVwRXh0ZXJuYWxGaWxlTW9kZWxbXSk6IFByb21pc2U8YW55W10+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXM6IGFueVtdID0gW107XG4gICAgICAgIGZpbGVzLmZvckVhY2goKGZpbGUpID0+IHtcbiAgICAgICAgICAgIGlmIChmaWxlLnR5cGUgPT09ICdzdHlsZScpIHtcbiAgICAgICAgICAgICAgICBwcm9taXNlcy5wdXNoKHRoaXMubG9hZFN0eWxlKGZpbGUucGF0aCkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlLnR5cGUgPT09ICdzY3JpcHQnKSB7XG4gICAgICAgICAgICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLmxvYWRTY3JpcHQoZmlsZS5wYXRoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgIH1cblxuICAgIHJlbW92ZUZpbGVzKGZpbGVzOiBJUGVwRXh0ZXJuYWxGaWxlTW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBmb3IgKFxuICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgICAgIGluZGV4IDwgZmlsZXMubGVuZ3RoICYmXG4gICAgICAgICAgICBmaWxlc1tpbmRleF0ucGF0aCAmJlxuICAgICAgICAgICAgZmlsZXNbaW5kZXhdLnBhdGgudHJpbSgpICE9PSAnJztcbiAgICAgICAgICAgIGluZGV4KytcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gdGhpcy5nZXRGaWxlTmFtZShmaWxlc1tpbmRleF0ucGF0aCwgdHJ1ZSk7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobmFtZSk7XG4gICAgICAgICAgICBlbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XG5cbiAgICAgICAgICAgIGlmIChmaWxlc1tpbmRleF0udHlwZSA9PT0gJ3NjcmlwdCcgJiYgdGhpcy5zY3JpcHRzLmhhcyhuYW1lKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2NyaXB0cy5kZWxldGUobmFtZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZpbGVzW2luZGV4XS50eXBlID09PSAnc3R5bGUnICYmIHRoaXMuc3R5bGVzLmhhcyhuYW1lKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3R5bGVzLmRlbGV0ZShuYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxvYWRTY3JpcHQocGF0aDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldEZpbGVOYW1lKHBhdGgsIHRydWUpO1xuXG4gICAgICAgICAgICAvLyBJZiB0aGUgc2NyaXB0IGlzbid0IGV4aXN0IGFkZCBpdC5cbiAgICAgICAgICAgIGlmICghdGhpcy5zY3JpcHRzLmhhcyhuYW1lKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2NyaXB0cy5zZXQobmFtZSwgeyBsb2FkZWQ6IGZhbHNlLCBzcmM6IHBhdGggfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNjcmlwdEl0ZW0gPSB0aGlzLnNjcmlwdHMuZ2V0KG5hbWUpO1xuXG4gICAgICAgICAgICAvLyBSZXNvbHZlIGlmIGFscmVhZHkgbG9hZGVkXG4gICAgICAgICAgICBpZiAoc2NyaXB0SXRlbS5sb2FkZWQpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgICAgICAgc2NyaXB0OiBuYW1lLFxuICAgICAgICAgICAgICAgICAgICBsb2FkZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogJ0FscmVhZHkgTG9hZGVkJyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gTG9hZCBzY3JpcHRcbiAgICAgICAgICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgICAgICAgICAgICBzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuICAgICAgICAgICAgICAgIHNjcmlwdC5zcmMgPSBzY3JpcHRJdGVtLnNyYztcbiAgICAgICAgICAgICAgICBzY3JpcHQuc2V0QXR0cmlidXRlKCdpZCcsIG5hbWUpO1xuICAgICAgICAgICAgICAgIHNjcmlwdC5hc3luYyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNjcmlwdC5yZWFkeVN0YXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElFXG4gICAgICAgICAgICAgICAgICAgIHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0LnJlYWR5U3RhdGUgPT09ICdsb2FkZWQnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0LnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdEl0ZW0ubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3NjcmlwdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnTG9hZGVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBPdGhlcnNcbiAgICAgICAgICAgICAgICAgICAgc2NyaXB0Lm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdEl0ZW0ubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3NjcmlwdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogJ0xvYWRlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoZXJyb3I6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3NjcmlwdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnTG9hZGVkJyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBsb2FkU3R5bGUocGF0aDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldEZpbGVOYW1lKHBhdGgsIHRydWUpO1xuXG4gICAgICAgICAgICAvLyBJZiB0aGUgc3R5bGUgaXNuJ3QgZXhpc3QgYWRkIGl0LlxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0eWxlcy5oYXMobmFtZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0eWxlcy5zZXQobmFtZSwgeyBsb2FkZWQ6IGZhbHNlLCBzcmM6IHBhdGggfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHN0eWxlSXRlbSA9IHRoaXMuc3R5bGVzLmdldChuYW1lKTtcblxuICAgICAgICAgICAgLy8gUmVzb2x2ZSBpZiBhbHJlYWR5IGxvYWRlZFxuICAgICAgICAgICAgaWYgKHN0eWxlSXRlbS5sb2FkZWQpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3N0eWxlJyxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6ICdBbHJlYWR5IExvYWRlZCcsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIExvYWQgc3R5bGVcbiAgICAgICAgICAgICAgICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcbiAgICAgICAgICAgICAgICBzdHlsZS50eXBlID0gJ3RleHQvY3NzJztcbiAgICAgICAgICAgICAgICBzdHlsZS5yZWwgPSAnc3R5bGVzaGVldCc7XG4gICAgICAgICAgICAgICAgc3R5bGUuaHJlZiA9IHN0eWxlSXRlbS5zcmM7XG4gICAgICAgICAgICAgICAgc3R5bGUubWVkaWEgPSAnYWxsJztcbiAgICAgICAgICAgICAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoJ2lkJywgbmFtZSk7XG5cbiAgICAgICAgICAgICAgICBzdHlsZUl0ZW0ubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3N0eWxlJyxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6ICdMb2FkZWQnLFxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGxvYWRGb250U3R5bGUoc3R5bGVJZDogc3RyaW5nLCBocmVmOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG5cbiAgICAgICAgY29uc3Qgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gICAgICAgICAgICBzdHlsZUlkXG4gICAgICAgICkgYXMgSFRNTExpbmtFbGVtZW50O1xuXG4gICAgICAgIGlmIChzdHlsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHN0eWxlRWxlbWVudC5ocmVmID0gaHJlZjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuICAgICAgICAgICAgc3R5bGUuaWQgPSBzdHlsZUlkO1xuICAgICAgICAgICAgc3R5bGUucmVsID0gJ3N0eWxlc2hlZXQnO1xuICAgICAgICAgICAgc3R5bGUuaHJlZiA9IGAke2hyZWZ9YDtcblxuICAgICAgICAgICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRGaWxlTmFtZShmaWxlUGF0aDogc3RyaW5nLCB3aXRoRXh0ZW5zdGlvbiA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgbGFzdEluZGV4ID0gd2l0aEV4dGVuc3Rpb25cbiAgICAgICAgICAgID8gZmlsZVBhdGgubGVuZ3RoIC0gMVxuICAgICAgICAgICAgOiBmaWxlUGF0aC5sYXN0SW5kZXhPZignLicpO1xuXG4gICAgICAgIHJldHVybiBmaWxlUGF0aC5zdWJzdHIoZmlsZVBhdGgubGFzdEluZGV4T2YoJy8nKSArIDEsIGxhc3RJbmRleCk7XG4gICAgfVxuXG4gICAgZ2V0RmlsZUV4dGVuc2lvbihmaWxlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZmlsZVNwbGl0ID0gZmlsZVBhdGguc3BsaXQoJy4nKTtcbiAgICAgICAgbGV0IGZpbGVFeHQgPSAnJztcbiAgICAgICAgaWYgKGZpbGVTcGxpdC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBmaWxlRXh0ID0gZmlsZVNwbGl0W2ZpbGVTcGxpdC5sZW5ndGggLSAyXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsZUV4dDtcbiAgICB9XG5cbiAgICAvKiBSZXR1cm5zIHRydWUgaWYgdXJsIGlzIHZhbGlkICovXG4gICAgaXNWYWxpZFVybCh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICAvKiBUcnkgY3JlYXRpbmcgYSB2YWxpZCBVUkwgKi9cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHRtcCA9IG5ldyBVUkwodXJsKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb252ZXJ0RnJvbWI2NHRvQmxvYihcbiAgICAgICAgYjY0RGF0YTogYW55LFxuICAgICAgICBjb250ZW50VHlwZSA9ICcnLFxuICAgICAgICBzbGljZVNpemUgPSA1MTJcbiAgICApOiBCbG9iIHtcbiAgICAgICAgY29uc3QgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGI2NERhdGEpO1xuICAgICAgICBjb25zdCBieXRlQXJyYXlzID0gW107XG5cbiAgICAgICAgZm9yIChcbiAgICAgICAgICAgIGxldCBvZmZzZXQgPSAwO1xuICAgICAgICAgICAgb2Zmc2V0IDwgYnl0ZUNoYXJhY3RlcnMubGVuZ3RoO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IHNsaWNlU2l6ZVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHNsaWNlID0gYnl0ZUNoYXJhY3RlcnMuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBzbGljZVNpemUpO1xuXG4gICAgICAgICAgICBjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShzbGljZS5sZW5ndGgpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbGljZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGJ5dGVOdW1iZXJzW2ldID0gc2xpY2UuY2hhckNvZGVBdChpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZU51bWJlcnMpO1xuICAgICAgICAgICAgYnl0ZUFycmF5cy5wdXNoKGJ5dGVBcnJheSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoYnl0ZUFycmF5cywgeyB0eXBlOiBjb250ZW50VHlwZSB9KTtcbiAgICAgICAgcmV0dXJuIGJsb2I7XG4gICAgfVxuXG4gICAgZ2V0QXNzZXRzUGF0aChhc3NldHNEb21haW4gPSAnJywgbGliTmFtZSA9ICduZ3gtbGliJyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGNvbmNhdENoYXIgPVxuICAgICAgICAgICAgYXNzZXRzRG9tYWluID09PSAnJyB8fCBhc3NldHNEb21haW4uZW5kc1dpdGgoJy8nKSA/ICcnIDogJy8nO1xuICAgICAgICByZXR1cm4gYCR7YXNzZXRzRG9tYWlufSR7Y29uY2F0Q2hhcn1hc3NldHMvJHtsaWJOYW1lfS9gO1xuICAgIH1cblxuICAgIGdldEFzc2V0c1RyYW5zbGF0aW9uc1N1ZmZpeChsaWJOYW1lID0gJ25neC1saWInKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAuJHtsaWJOYW1lfS5qc29uYDtcbiAgICB9XG5cbiAgICBnZXRBc3NldHNUcmFuc2xhdGlvbnNQYXRoKGFzc2V0c0RvbWFpbiA9ICcnLCBsaWJOYW1lID0gJ25neC1saWInKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0QXNzZXRzUGF0aChhc3NldHNEb21haW4sIGxpYk5hbWUpfWkxOG4vYDtcbiAgICB9XG5cbiAgICBnZXRBc3NldHNJbWFnZXNQYXRoKGFzc2V0c0RvbWFpbiA9ICcnLCBpbWFnZSA9ICcnLCBsaWJOYW1lID0gJ25neC1saWInKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0QXNzZXRzUGF0aChhc3NldHNEb21haW4sIGxpYk5hbWUpfWltYWdlcy8ke2ltYWdlfWA7XG4gICAgfVxuXG4gICAgZ2V0U3ZnQXNJbWFnZVNyYyhzdmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbc3ZnXSwgeyB0eXBlOiAnaW1hZ2Uvc3ZnK3htbCcgfSk7XG4gICAgICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgfVxufVxuIl19
|
|
251
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9zcmMvY29yZS9jb21tb24vc2VydmljZXMvZmlsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBYzNDLE1BQU0sT0FBTyxjQUFjO0lBSXZCO1FBQ0ksSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBNEMsQ0FBQztRQUNuRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxFQUE0QyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBOEI7UUFDcEMsTUFBTSxRQUFRLEdBQVUsRUFBRSxDQUFDO1FBQzNCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNuQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO2dCQUN2QixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDNUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDL0IsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQzdDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUE4QjtRQUN0QyxLQUNJLElBQUksS0FBSyxHQUFHLENBQUMsRUFDYixLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU07WUFDcEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUk7WUFDakIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQy9CLEtBQUssRUFBRSxFQUNUO1lBQ0UsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFeEMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDN0I7aUJBQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDNUI7U0FDSjtJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBWTtRQUNuQixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ25DLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRTFDLG9DQUFvQztZQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFDeEQ7WUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUUxQyw0QkFBNEI7WUFDNUIsSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFO2dCQUNuQixPQUFPLENBQUM7b0JBQ0osTUFBTSxFQUFFLElBQUk7b0JBQ1osTUFBTSxFQUFFLElBQUk7b0JBQ1osTUFBTSxFQUFFLGdCQUFnQjtpQkFDM0IsQ0FBQyxDQUFDO2FBQ047aUJBQU07Z0JBQ0gsY0FBYztnQkFDZCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNoRCxNQUFNLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO2dCQUNoQyxNQUFNLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUM7Z0JBQzVCLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNoQyxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFFckIsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFO29CQUNuQixLQUFLO29CQUNMLE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLEVBQUU7d0JBQzdCLElBQ0ksTUFBTSxDQUFDLFVBQVUsS0FBSyxRQUFROzRCQUM5QixNQUFNLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFDbEM7NEJBQ0UsTUFBTSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQzs0QkFDakMsVUFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7NEJBQ3pCLE9BQU8sQ0FBQztnQ0FDSixJQUFJO2dDQUNKLElBQUksRUFBRSxRQUFRO2dDQUNkLE1BQU0sRUFBRSxJQUFJO2dDQUNaLE1BQU0sRUFBRSxRQUFROzZCQUNuQixDQUFDLENBQUM7eUJBQ047b0JBQ0wsQ0FBQyxDQUFDO2lCQUNMO3FCQUFNO29CQUNILFNBQVM7b0JBQ1QsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7d0JBQ2pCLFVBQVUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO3dCQUN6QixPQUFPLENBQUM7NEJBQ0osSUFBSTs0QkFDSixJQUFJLEVBQUUsUUFBUTs0QkFDZCxNQUFNLEVBQUUsSUFBSTs0QkFDWixNQUFNLEVBQUUsUUFBUTt5QkFDbkIsQ0FBQyxDQUFDO29CQUNQLENBQUMsQ0FBQztpQkFDTDtnQkFDRCxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FDNUIsT0FBTyxDQUFDO29CQUNKLElBQUk7b0JBQ0osSUFBSSxFQUFFLFFBQVE7b0JBQ2QsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsTUFBTSxFQUFFLFFBQVE7aUJBQ25CLENBQUMsQ0FBQztnQkFDUCxRQUFRLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2hFO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVk7UUFDbEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNuQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUUxQyxtQ0FBbUM7WUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZEO1lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFeEMsNEJBQTRCO1lBQzVCLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRTtnQkFDbEIsT0FBTyxDQUFDO29CQUNKLElBQUk7b0JBQ0osSUFBSSxFQUFFLE9BQU87b0JBQ2IsTUFBTSxFQUFFLElBQUk7b0JBQ1osTUFBTSxFQUFFLGdCQUFnQjtpQkFDM0IsQ0FBQyxDQUFDO2FBQ047aUJBQU07Z0JBQ0gsYUFBYTtnQkFDYixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM3QyxLQUFLLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztnQkFDeEIsS0FBSyxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUM7Z0JBQ3pCLEtBQUssQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQztnQkFDM0IsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUUvQixTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDeEIsT0FBTyxDQUFDO29CQUNKLElBQUk7b0JBQ0osSUFBSSxFQUFFLE9BQU87b0JBQ2IsTUFBTSxFQUFFLElBQUk7b0JBQ1osTUFBTSxFQUFFLFFBQVE7aUJBQ25CLENBQUMsQ0FBQztnQkFFSCxRQUFRLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQy9EO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQWUsRUFBRSxJQUFZO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV0RCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsY0FBYyxDQUN4QyxPQUFPLENBQ1MsQ0FBQztRQUVyQixJQUFJLFlBQVksRUFBRTtZQUNkLFlBQVksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQzVCO2FBQU07WUFDSCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdDLEtBQUssQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDO1lBQ25CLEtBQUssQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDO1lBQ3pCLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLEVBQUUsQ0FBQztZQUV2QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFnQixFQUFFLGNBQWMsR0FBRyxLQUFLO1FBQ2hELE1BQU0sU0FBUyxHQUFHLGNBQWM7WUFDNUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUNyQixDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVoQyxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELGdCQUFnQixDQUFDLFFBQWdCO1FBQzdCLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdEIsT0FBTyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzdDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxVQUFVLENBQUMsR0FBVztRQUNsQiw4QkFBOEI7UUFDOUIsSUFBSTtZQUNBLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO0lBQ0wsQ0FBQztJQUVELG9CQUFvQixDQUNoQixPQUFZLEVBQ1osV0FBVyxHQUFHLEVBQUUsRUFDaEIsU0FBUyxHQUFHLEdBQUc7UUFFZixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckMsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBRXRCLEtBQ0ksSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUNkLE1BQU0sR0FBRyxjQUFjLENBQUMsTUFBTSxFQUM5QixNQUFNLElBQUksU0FBUyxFQUNyQjtZQUNFLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQztZQUUvRCxNQUFNLFdBQVcsR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ25DLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3hDO1lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDOUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM5QjtRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxZQUFvQjtRQUNsQyxJQUFJLFFBQWdCLENBQUM7UUFFckIsSUFBSTtZQUNBLFlBQVksR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDakUsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUM7U0FDeEM7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNqQjtRQUVELE9BQU8sUUFBUSxDQUFDLENBQUMsd0JBQXdCO0lBQzdDLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBVTtRQUNuQixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ25DLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0MsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELG9CQUFvQixDQUNoQixhQUFhLEVBQ2Isa0JBQWtCO1FBRWxCLE1BQU0sV0FBVyxHQUNiLGtCQUFrQixLQUFLLEVBQUU7WUFDekIsa0JBQWtCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRW5FLE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxlQUFlLENBQ1gsT0FBTyxFQUNQLFdBQVcsR0FBRyxDQUFDO1FBRWYsTUFBTSxJQUFJLEdBQVEsT0FBTyxDQUFDO1FBQzFCLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNqQiw4QkFBOEI7UUFDOUIsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUM5RCxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzlDO2FBQU07WUFDSCxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUN4QjtRQUNELG1DQUFtQztRQUNuQyxNQUFNLE1BQU0sR0FBWSxRQUFRLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxRQUFRLEdBQUcsV0FBVyxHQUFHLE9BQU8sQ0FBQztRQUM1RixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsYUFBYSxDQUFDLFlBQVksR0FBRyxFQUFFLEVBQUUsT0FBTyxHQUFHLFNBQVM7UUFDaEQsTUFBTSxVQUFVLEdBQ1osWUFBWSxLQUFLLEVBQUUsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNqRSxPQUFPLEdBQUcsWUFBWSxHQUFHLFVBQVUsVUFBVSxPQUFPLEdBQUcsQ0FBQztJQUM1RCxDQUFDO0lBRUQsMkJBQTJCLENBQUMsT0FBTyxHQUFHLFNBQVM7UUFDM0MsT0FBTyxJQUFJLE9BQU8sT0FBTyxDQUFDO0lBQzlCLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxZQUFZLEdBQUcsRUFBRSxFQUFFLE9BQU8sR0FBRyxTQUFTO1FBQzVELE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQy9ELENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxZQUFZLEdBQUcsRUFBRSxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUUsT0FBTyxHQUFHLFNBQVM7UUFDbEUsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEtBQUssRUFBRSxDQUFDO0lBQ3pFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFXO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUN4RCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQzs7MkdBeFNRLGNBQWM7K0dBQWQsY0FBYyxjQUZYLE1BQU07MkZBRVQsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIFBlcEZpbGVUeXBlID0gJ3NjcmlwdCcgfCAnc3R5bGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQZXBFeHRlcm5hbEZpbGVNb2RlbCB7XG4gICAgcGF0aDogc3RyaW5nO1xuICAgIHR5cGU6IFBlcEZpbGVUeXBlO1xufVxuXG5kZWNsYXJlIGxldCBkb2N1bWVudDogYW55O1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBGaWxlU2VydmljZSB7XG4gICAgcHJpdmF0ZSBzY3JpcHRzOiBNYXA8c3RyaW5nLCB7IGxvYWRlZDogYm9vbGVhbjsgc3JjOiBzdHJpbmcgfT47XG4gICAgcHJpdmF0ZSBzdHlsZXM6IE1hcDxzdHJpbmcsIHsgbG9hZGVkOiBib29sZWFuOyBzcmM6IHN0cmluZyB9PjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnNjcmlwdHMgPSBuZXcgTWFwPHN0cmluZywgeyBsb2FkZWQ6IGJvb2xlYW47IHNyYzogc3RyaW5nIH0+KCk7XG4gICAgICAgIHRoaXMuc3R5bGVzID0gbmV3IE1hcDxzdHJpbmcsIHsgbG9hZGVkOiBib29sZWFuOyBzcmM6IHN0cmluZyB9PigpO1xuICAgIH1cblxuICAgIGxvYWRGaWxlcyhmaWxlczogSVBlcEV4dGVybmFsRmlsZU1vZGVsW10pOiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzOiBhbnlbXSA9IFtdO1xuICAgICAgICBmaWxlcy5mb3JFYWNoKChmaWxlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZmlsZS50eXBlID09PSAnc3R5bGUnKSB7XG4gICAgICAgICAgICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLmxvYWRTdHlsZShmaWxlLnBhdGgpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsZS50eXBlID09PSAnc2NyaXB0Jykge1xuICAgICAgICAgICAgICAgIHByb21pc2VzLnB1c2godGhpcy5sb2FkU2NyaXB0KGZpbGUucGF0aCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICB9XG5cbiAgICByZW1vdmVGaWxlcyhmaWxlczogSVBlcEV4dGVybmFsRmlsZU1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgZm9yIChcbiAgICAgICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgICAgICBpbmRleCA8IGZpbGVzLmxlbmd0aCAmJlxuICAgICAgICAgICAgZmlsZXNbaW5kZXhdLnBhdGggJiZcbiAgICAgICAgICAgIGZpbGVzW2luZGV4XS5wYXRoLnRyaW0oKSAhPT0gJyc7XG4gICAgICAgICAgICBpbmRleCsrXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0RmlsZU5hbWUoZmlsZXNbaW5kZXhdLnBhdGgsIHRydWUpO1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5hbWUpO1xuICAgICAgICAgICAgZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW1lbnQpO1xuXG4gICAgICAgICAgICBpZiAoZmlsZXNbaW5kZXhdLnR5cGUgPT09ICdzY3JpcHQnICYmIHRoaXMuc2NyaXB0cy5oYXMobmFtZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmlwdHMuZGVsZXRlKG5hbWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlc1tpbmRleF0udHlwZSA9PT0gJ3N0eWxlJyAmJiB0aGlzLnN0eWxlcy5oYXMobmFtZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0eWxlcy5kZWxldGUobmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsb2FkU2NyaXB0KHBhdGg6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gdGhpcy5nZXRGaWxlTmFtZShwYXRoLCB0cnVlKTtcblxuICAgICAgICAgICAgLy8gSWYgdGhlIHNjcmlwdCBpc24ndCBleGlzdCBhZGQgaXQuXG4gICAgICAgICAgICBpZiAoIXRoaXMuc2NyaXB0cy5oYXMobmFtZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmlwdHMuc2V0KG5hbWUsIHsgbG9hZGVkOiBmYWxzZSwgc3JjOiBwYXRoIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzY3JpcHRJdGVtID0gdGhpcy5zY3JpcHRzLmdldChuYW1lKTtcblxuICAgICAgICAgICAgLy8gUmVzb2x2ZSBpZiBhbHJlYWR5IGxvYWRlZFxuICAgICAgICAgICAgaWYgKHNjcmlwdEl0ZW0ubG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICAgICAgICAgIHNjcmlwdDogbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6ICdBbHJlYWR5IExvYWRlZCcsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIExvYWQgc2NyaXB0XG4gICAgICAgICAgICAgICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICAgICAgICAgICAgc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcbiAgICAgICAgICAgICAgICBzY3JpcHQuc3JjID0gc2NyaXB0SXRlbS5zcmM7XG4gICAgICAgICAgICAgICAgc2NyaXB0LnNldEF0dHJpYnV0ZSgnaWQnLCBuYW1lKTtcbiAgICAgICAgICAgICAgICBzY3JpcHQuYXN5bmMgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGlmIChzY3JpcHQucmVhZHlTdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBJRVxuICAgICAgICAgICAgICAgICAgICBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdC5yZWFkeVN0YXRlID09PSAnbG9hZGVkJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRJdGVtLmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzY3JpcHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogJ0xvYWRlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gT3RoZXJzXG4gICAgICAgICAgICAgICAgICAgIHNjcmlwdC5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRJdGVtLmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzY3JpcHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6ICdMb2FkZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNjcmlwdC5vbmVycm9yID0gKGVycm9yOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzY3JpcHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogJ0xvYWRlZCcsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbG9hZFN0eWxlKHBhdGg6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gdGhpcy5nZXRGaWxlTmFtZShwYXRoLCB0cnVlKTtcblxuICAgICAgICAgICAgLy8gSWYgdGhlIHN0eWxlIGlzbid0IGV4aXN0IGFkZCBpdC5cbiAgICAgICAgICAgIGlmICghdGhpcy5zdHlsZXMuaGFzKG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdHlsZXMuc2V0KG5hbWUsIHsgbG9hZGVkOiBmYWxzZSwgc3JjOiBwYXRoIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzdHlsZUl0ZW0gPSB0aGlzLnN0eWxlcy5nZXQobmFtZSk7XG5cbiAgICAgICAgICAgIC8vIFJlc29sdmUgaWYgYWxyZWFkeSBsb2FkZWRcbiAgICAgICAgICAgIGlmIChzdHlsZUl0ZW0ubG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzdHlsZScsXG4gICAgICAgICAgICAgICAgICAgIGxvYWRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnQWxyZWFkeSBMb2FkZWQnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBMb2FkIHN0eWxlXG4gICAgICAgICAgICAgICAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7XG4gICAgICAgICAgICAgICAgc3R5bGUudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgICAgICAgICAgICAgc3R5bGUucmVsID0gJ3N0eWxlc2hlZXQnO1xuICAgICAgICAgICAgICAgIHN0eWxlLmhyZWYgPSBzdHlsZUl0ZW0uc3JjO1xuICAgICAgICAgICAgICAgIHN0eWxlLm1lZGlhID0gJ2FsbCc7XG4gICAgICAgICAgICAgICAgc3R5bGUuc2V0QXR0cmlidXRlKCdpZCcsIG5hbWUpO1xuXG4gICAgICAgICAgICAgICAgc3R5bGVJdGVtLmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzdHlsZScsXG4gICAgICAgICAgICAgICAgICAgIGxvYWRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnTG9hZGVkJyxcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBsb2FkRm9udFN0eWxlKHN0eWxlSWQ6IHN0cmluZywgaHJlZjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuXG4gICAgICAgIGNvbnN0IHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgc3R5bGVJZFxuICAgICAgICApIGFzIEhUTUxMaW5rRWxlbWVudDtcblxuICAgICAgICBpZiAoc3R5bGVFbGVtZW50KSB7XG4gICAgICAgICAgICBzdHlsZUVsZW1lbnQuaHJlZiA9IGhyZWY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcbiAgICAgICAgICAgIHN0eWxlLmlkID0gc3R5bGVJZDtcbiAgICAgICAgICAgIHN0eWxlLnJlbCA9ICdzdHlsZXNoZWV0JztcbiAgICAgICAgICAgIHN0eWxlLmhyZWYgPSBgJHtocmVmfWA7XG5cbiAgICAgICAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RmlsZU5hbWUoZmlsZVBhdGg6IHN0cmluZywgd2l0aEV4dGVuc3Rpb24gPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGxhc3RJbmRleCA9IHdpdGhFeHRlbnN0aW9uXG4gICAgICAgICAgICA/IGZpbGVQYXRoLmxlbmd0aCAtIDFcbiAgICAgICAgICAgIDogZmlsZVBhdGgubGFzdEluZGV4T2YoJy4nKTtcblxuICAgICAgICByZXR1cm4gZmlsZVBhdGguc3Vic3RyKGZpbGVQYXRoLmxhc3RJbmRleE9mKCcvJykgKyAxLCBsYXN0SW5kZXgpO1xuICAgIH1cblxuICAgIGdldEZpbGVFeHRlbnNpb24oZmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGZpbGVTcGxpdCA9IGZpbGVQYXRoLnNwbGl0KCcuJyk7XG4gICAgICAgIGxldCBmaWxlRXh0ID0gJyc7XG4gICAgICAgIGlmIChmaWxlU3BsaXQubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgZmlsZUV4dCA9IGZpbGVTcGxpdFtmaWxlU3BsaXQubGVuZ3RoIC0gMl07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbGVFeHQ7XG4gICAgfVxuXG4gICAgLyogUmV0dXJucyB0cnVlIGlmIHVybCBpcyB2YWxpZCAqL1xuICAgIGlzVmFsaWRVcmwodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgLyogVHJ5IGNyZWF0aW5nIGEgdmFsaWQgVVJMICovXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB0bXAgPSBuZXcgVVJMKHVybCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29udmVydEZyb21iNjR0b0Jsb2IoXG4gICAgICAgIGI2NERhdGE6IGFueSxcbiAgICAgICAgY29udGVudFR5cGUgPSAnJyxcbiAgICAgICAgc2xpY2VTaXplID0gNTEyXG4gICAgKTogQmxvYiB7XG4gICAgICAgIGNvbnN0IGJ5dGVDaGFyYWN0ZXJzID0gYXRvYihiNjREYXRhKTtcbiAgICAgICAgY29uc3QgYnl0ZUFycmF5cyA9IFtdO1xuXG4gICAgICAgIGZvciAoXG4gICAgICAgICAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIG9mZnNldCA8IGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aDtcbiAgICAgICAgICAgIG9mZnNldCArPSBzbGljZVNpemVcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBzbGljZSA9IGJ5dGVDaGFyYWN0ZXJzLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgc2xpY2VTaXplKTtcblxuICAgICAgICAgICAgY29uc3QgYnl0ZU51bWJlcnMgPSBuZXcgQXJyYXkoc2xpY2UubGVuZ3RoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2xpY2UubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBieXRlTnVtYmVyc1tpXSA9IHNsaWNlLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcbiAgICAgICAgICAgIGJ5dGVBcnJheXMucHVzaChieXRlQXJyYXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKGJ5dGVBcnJheXMsIHsgdHlwZTogY29udGVudFR5cGUgfSk7XG4gICAgICAgIHJldHVybiBibG9iO1xuICAgIH1cblxuICAgIGdldEJhc2U2NEZpbGVTaXplKGJhc2U2NFN0cmluZzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGZpbGVTaXplOiBudW1iZXI7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGJhc2U2NFN0cmluZyA9IGJhc2U2NFN0cmluZy5zbGljZShiYXNlNjRTdHJpbmcuaW5kZXhPZignLCcpICsgMSk7XG4gICAgICAgICAgICBmaWxlU2l6ZSA9IGF0b2IoYmFzZTY0U3RyaW5nKS5sZW5ndGg7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGZpbGVTaXplID0gLTE7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsZVNpemU7IC8vIHJldHVybiBzaXplIGluIGJ5dGVzO1xuICAgIH1cblxuICAgIGZpbGVUb0Jhc2U2NChmaWxlOiBGaWxlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4gcmVzb2x2ZShyZWFkZXIucmVzdWx0KTtcbiAgICAgICAgICAgIHJlYWRlci5vbmVycm9yID0gKGVycm9yKSA9PiByZWplY3QoZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpc1ZhbGlkRmlsZUV4dGVuc2lvbihcbiAgICAgICAgZmlsZUV4dGVuc2lvbixcbiAgICAgICAgYWNjZXB0ZWRFeHRlbnNpb25zXG4gICAgKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbk9LID1cbiAgICAgICAgICAgIGFjY2VwdGVkRXh0ZW5zaW9ucyA9PT0gJycgfHxcbiAgICAgICAgICAgIGFjY2VwdGVkRXh0ZW5zaW9ucy5pbmRleE9mKGZpbGVFeHRlbnNpb24udG9Mb3dlckNhc2UoKSkgIT09IC0xO1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIGV4dGVuc2lvbk9LO1xuICAgIH1cblxuICAgIGlzVmFsaWRGaWxlU2l6ZShcbiAgICAgICAgZmlsZVN0cixcbiAgICAgICAgc2l6ZUxpbWl0TUIgPSA1XG4gICAgKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGZpbGU6IGFueSA9IGZpbGVTdHI7XG4gICAgICAgIGxldCBmaWxlU2l6ZSA9IDA7XG4gICAgICAgIC8vIGNoZWNrIGlmIGdvdCBmaWxlIGFzIEJhc2U2NFxuICAgICAgICBpZiAodHlwZW9mIGZpbGVTdHIgPT09ICdzdHJpbmcnICYmIGZpbGVTdHIuaW5kZXhPZignZGF0YTonKSA+IC0xKSB7XG4gICAgICAgICAgICBmaWxlU2l6ZSA9IHRoaXMuZ2V0QmFzZTY0RmlsZVNpemUoZmlsZVN0cik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWxlU2l6ZSA9IGZpbGUuc2l6ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjaGVjayB0aGUgc2l6ZSBhbmQgdGhlIGV4dGVuc2lvblxuICAgICAgICBjb25zdCBzaXplT0s6IGJvb2xlYW4gPSBmaWxlU2l6ZSAhPT0gLTEgJiYgZmlsZSAhPSBudWxsICYmIGZpbGVTaXplIDwgc2l6ZUxpbWl0TUIgKiAxMDQ4NTc2O1xuICAgICAgICByZXR1cm4gc2l6ZU9LO1xuICAgIH1cblxuICAgIGdldEFzc2V0c1BhdGgoYXNzZXRzRG9tYWluID0gJycsIGxpYk5hbWUgPSAnbmd4LWxpYicpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBjb25jYXRDaGFyID1cbiAgICAgICAgICAgIGFzc2V0c0RvbWFpbiA9PT0gJycgfHwgYXNzZXRzRG9tYWluLmVuZHNXaXRoKCcvJykgPyAnJyA6ICcvJztcbiAgICAgICAgcmV0dXJuIGAke2Fzc2V0c0RvbWFpbn0ke2NvbmNhdENoYXJ9YXNzZXRzLyR7bGliTmFtZX0vYDtcbiAgICB9XG5cbiAgICBnZXRBc3NldHNUcmFuc2xhdGlvbnNTdWZmaXgobGliTmFtZSA9ICduZ3gtbGliJyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgLiR7bGliTmFtZX0uanNvbmA7XG4gICAgfVxuXG4gICAgZ2V0QXNzZXRzVHJhbnNsYXRpb25zUGF0aChhc3NldHNEb21haW4gPSAnJywgbGliTmFtZSA9ICduZ3gtbGliJyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldEFzc2V0c1BhdGgoYXNzZXRzRG9tYWluLCBsaWJOYW1lKX1pMThuL2A7XG4gICAgfVxuXG4gICAgZ2V0QXNzZXRzSW1hZ2VzUGF0aChhc3NldHNEb21haW4gPSAnJywgaW1hZ2UgPSAnJywgbGliTmFtZSA9ICduZ3gtbGliJyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldEFzc2V0c1BhdGgoYXNzZXRzRG9tYWluLCBsaWJOYW1lKX1pbWFnZXMvJHtpbWFnZX1gO1xuICAgIH1cblxuICAgIGdldFN2Z0FzSW1hZ2VTcmMoc3ZnOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3N2Z10sIHsgdHlwZTogJ2ltYWdlL3N2Zyt4bWwnIH0pO1xuICAgICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICByZXR1cm4gdXJsO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -52,6 +52,7 @@ export class PepFilesUploaderComponent {
|
|
|
52
52
|
//const fileNameArray = item._file.name.split('.');
|
|
53
53
|
const fileName = this.getFileName(item._file.name); //fileNameArray[0];
|
|
54
54
|
const fileExt = this.getFileExtension(item._file.name); //fileNameArray[1]; // item._file.name.split('.').pop();
|
|
55
|
+
const fileSize = item._file.size;
|
|
55
56
|
const target = event.target || event.srcElement;
|
|
56
57
|
const fileStr = target.result;
|
|
57
58
|
const errorMsg = this.isValidFile(fileStr, fileExt, this.acceptedExtensions, this.sizeLimitMB);
|
|
@@ -64,6 +65,7 @@ export class PepFilesUploaderComponent {
|
|
|
64
65
|
fileStr,
|
|
65
66
|
fileName,
|
|
66
67
|
fileExt,
|
|
68
|
+
fileSize,
|
|
67
69
|
});
|
|
68
70
|
}
|
|
69
71
|
else {
|
|
@@ -177,11 +179,6 @@ export class PepFilesUploaderComponent {
|
|
|
177
179
|
const empltValue = '';
|
|
178
180
|
this.src = empltValue;
|
|
179
181
|
this.fileChange.emit(null);
|
|
180
|
-
// this.fileChange.emit({
|
|
181
|
-
// acceptedExtensions: this.acceptedExtensions,
|
|
182
|
-
// fileStr: null,
|
|
183
|
-
// fileExt: null,
|
|
184
|
-
// });
|
|
185
182
|
}
|
|
186
183
|
onElementClicked(event) {
|
|
187
184
|
this.elementClick.emit({
|
|
@@ -264,4 +261,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
264
261
|
type: ViewChild,
|
|
265
262
|
args: ['imagePreview']
|
|
266
263
|
}] } });
|
|
267
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtdXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9maWxlcy11cGxvYWRlci9maWxlcy11cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2ZpbGVzLXVwbG9hZGVyL2ZpbGVzLXVwbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDSCxTQUFTLEVBRVQsVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsRUFFVCx1QkFBdUIsR0FFMUIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFLSCw0QkFBNEIsRUFFNUIsWUFBWSxHQUNmLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUVILGFBQWEsR0FDaEIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFnQi9ELE1BQU0sT0FBTyx5QkFBeUI7SUE4Q2xDLFlBQ1ksYUFBK0IsRUFDL0Isb0JBQTZDLEVBQzdDLFdBQTJCLEVBQzNCLFNBQTJCO1FBSDNCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXlCO1FBQzdDLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQWpEOUIsUUFBRyxHQUFHLEVBQUUsQ0FBQztRQUNULFFBQUcsR0FBRyxFQUFFLENBQUM7UUFDVCxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGVBQVUsR0FBMkIsNEJBQTRCLENB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QUFDLE1BQU07O2tCQUVsRCxVQUFVO3lNQUVFLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUlGLE9BQU87c0JBRFYsS0FBSztnQkFRRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFHTixVQUFVO3NCQURULE1BQU07Z0JBSVAsVUFBVTtzQkFEVCxNQUFNO2dCQUdQLFlBQVk7c0JBRFgsTUFBTTtnQkFHaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNLLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBJbmplY3RhYmxlLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgVmlld0NoaWxkLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIE9wdGlvbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEZpbGVVcGxvYWRlciB9IGZyb20gJ25nMi1maWxlLXVwbG9hZCc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIFBlcEZpbGVTZXJ2aWNlLFxuICAgIFBlcExheW91dFR5cGUsXG4gICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UsXG4gICAgUGVwSG9yaXpvbnRhbEFsaWdubWVudCxcbiAgICBERUZBVUxUX0hPUklaT05UQUxfQUxJR05NRU5ULFxuICAgIElQZXBGaWVsZENsaWNrRXZlbnQsXG4gICAgUGVwRmllbGRCYXNlLFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5pbXBvcnQge1xuICAgIFBlcERpYWxvZ1NlcnZpY2UsXG4gICAgUGVwRGlhbG9nRGF0YSxcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZGlhbG9nJztcbmltcG9ydCB7IHBlcEljb25Ob0ltYWdlMiB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2ljb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQZXBGaWxlQ2hhbmdlRXZlbnQge1xuICAgIGFjY2VwdGVkRXh0ZW5zaW9ucz86IHN0cmluZztcbiAgICBmaWxlU3RyPzogc3RyaW5nO1xuICAgIGZpbGVOYW1lPzogc3RyaW5nO1xuICAgIGZpbGVFeHQ/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGVwLWZpbGVzLXVwbG9hZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsZXMtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpbGVzLXVwbG9hZGVyLmNvbXBvbmVudC5zY3NzJywgJy4vZmlsZXMtdXBsb2FkZXIuY29tcG9uZW50LnRoZW1lLnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUGVwRmlsZXNVcGxvYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkga2V5ID0gJyc7XG4gICAgQElucHV0KCkgc3JjID0gJyc7XG4gICAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgICBASW5wdXQoKSBtYW5kYXRvcnkgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHhBbGlnbm1lbnQ6IFBlcEhvcml6b250YWxBbGlnbm1lbnQgPSBERUZBVUxUX0hPUklaT05UQUxfQUxJR05NRU5UO1xuXG4gICAgcHJpdmF0ZSBfcm93U3BhbiA9IDE7XG4gICAgQElucHV0KClcbiAgICBzZXQgcm93U3Bhbih2YWx1ZSkge1xuICAgICAgICB0aGlzLl9yb3dTcGFuID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCByb3dTcGFuKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3dTcGFuO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGNvbnRyb2xUeXBlID0gJyc7XG4gICAgQElucHV0KCkgc2l6ZUxpbWl0TUIgPSA1O1xuXG4gICAgQElucHV0KCkgZm9ybTogRm9ybUdyb3VwO1xuICAgIEBJbnB1dCgpIGFjY2VwdGVkRXh0ZW5zaW9ucyA9ICdibXAsanBnLGpwZWcscG5nLGdpZixpY28sc3ZnLGh0bWwsY3NzJztcbiAgICBASW5wdXQoKSBsYXlvdXRUeXBlOiBQZXBMYXlvdXRUeXBlID0gJ2Zvcm0nO1xuXG4gICAgQElucHV0KCkgZmllbGRIZWlnaHQgPSAnJztcbiAgICBcbiAgICAvLyBUbyBrbm93IGlmIGhhbmRsZSBhY3Rpb25zIG9yIGp1c3QgcmFpc2UgdGhlbSBhcyBvdXRwdXRcbiAgICBASW5wdXQoKSBoYW5kbGVBY3Rpb25zID0gdHJ1ZTtcbiAgICBcbiAgICBAT3V0cHV0KClcbiAgICBjaG9vc2VGaWxlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7IC8vIFRoaXMgZXZlbnQgd2lsbCBmaXJlZCBvbmx5IHdoZW4gaGFuZGxlQWN0aW9ucyBJbnB1dCBpcyBmYWxzZVxuICAgIFxuICAgIEBPdXRwdXQoKVxuICAgIGZpbGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJUGVwRmlsZUNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SVBlcEZpbGVDaGFuZ2VFdmVudD4oKTtcbiAgICBAT3V0cHV0KClcbiAgICBlbGVtZW50Q2xpY2s6IEV2ZW50RW1pdHRlcjxJUGVwRmllbGRDbGlja0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SVBlcEZpZWxkQ2xpY2tFdmVudD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dDogYW55O1xuICAgIEBWaWV3Q2hpbGQoJ2ltYWdlUHJldmlldycpIGltYWdlUHJldmlldzogYW55O1xuXG4gICAgLy8gbXVsdGlwbGUgPSBmYWxzZTtcbiAgICB1cGxvYWRlcjogRmlsZVVwbG9hZGVyO1xuICAgIHByb2dyZXNzID0gMDtcbiAgICAvLyByZXNwb25zZTogc3RyaW5nO1xuICAgIGludGVydmFsSUQ6IGFueSA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBQZXBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGN1c3RvbWl6YXRpb25TZXJ2aWNlOiBQZXBDdXN0b21pemF0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBmaWxlU2VydmljZTogUGVwRmlsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMudXBsb2FkZXIgPSBuZXcgRmlsZVVwbG9hZGVyKHsgcmVtb3ZlQWZ0ZXJVcGxvYWQ6IHRydWUgfSk7XG5cbiAgICAgICAgdGhpcy51cGxvYWRlci5vbkFmdGVyQWRkaW5nRmlsZSA9IChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5maWxlSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBmaXggZm9yIERJLTE5Mzc2IC0gd2hlbiB0aGVyZSBpcyBhIGRvdCBvbiB0aGUgZmlsZSBuYW1lIChub3QgaW5jbHVkZSB0aGUgZXh0YW50aW9uIG9uZSlcbiAgICAgICAgICAgICAgICAvL2NvbnN0IGZpbGVOYW1lQXJyYXkgPSBpdGVtLl9maWxlLm5hbWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IHRoaXMuZ2V0RmlsZU5hbWUoaXRlbS5fZmlsZS5uYW1lKTsgLy9maWxlTmFtZUFycmF5WzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVFeHQgPSB0aGlzLmdldEZpbGVFeHRlbnNpb24oaXRlbS5fZmlsZS5uYW1lKTsgLy9maWxlTmFtZUFycmF5WzFdOyAvLyBpdGVtLl9maWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgfHwgZXZlbnQuc3JjRWxlbWVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlU3RyID0gdGFyZ2V0LnJlc3VsdDtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvck1zZyA9IHRoaXMuaXNWYWxpZEZpbGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbGVTdHIsXG4gICAgICAgICAgICAgICAgICAgIGZpbGVFeHQsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWNjZXB0ZWRFeHRlbnNpb25zLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpemVMaW1pdE1CXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JNc2cgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3JjID0gZmlsZVN0cjtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5zZXRJbnRlcnZhbFgoMjUsIDc1KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5zZXRQcm9ncmVzcyg1KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0ZWRFeHRlbnNpb25zOiB0aGlzLmFjY2VwdGVkRXh0ZW5zaW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVTdHIsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVFeHQsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICdNRVNTQUdFUy5USVRMRV9OT1RJQ0UnXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBuZXcgUGVwRGlhbG9nRGF0YSh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGVycm9yTXNnLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW5EZWZhdWx0RGlhbG9nKGRhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChpdGVtLl9maWxlKTtcblxuICAgICAgICAgICAgXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2V0RmlsZU5hbWUoZmlsZW5hbWUpe1xuICAgICAgICAvLyBnZXQgZmlsZSBuYW1lXG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gZmlsZW5hbWUuc3Vic3RyaW5nKDAsZmlsZW5hbWUubGFzdEluZGV4T2YoJy4nKSk7XG4gICAgICAgIHJldHVybiBmaWxlTmFtZTtcbiAgICB9XG5cbiAgICBnZXRGaWxlRXh0ZW5zaW9uKGZpbGVuYW1lKXtcbiAgICAgICAgLy8gZ2V0IGZpbGUgZXh0ZW5zaW9uXG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGVuYW1lLnN1YnN0cmluZyhmaWxlbmFtZS5sYXN0SW5kZXhPZignLicpICsgMSwgZmlsZW5hbWUubGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIGV4dGVuc2lvbjtcbiAgICB9XG4gICAgXG4gICAgcHJpdmF0ZSBzZXREZWZhdWx0Rm9ybSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGVwRmllbGQgPSBuZXcgUGVwRmllbGRCYXNlKHtcbiAgICAgICAgICAgIGtleTogdGhpcy5rZXksXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5zcmMsXG4gICAgICAgICAgICBtYW5kYXRvcnk6IHRoaXMubWFuZGF0b3J5LFxuICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmdldERlZmF1bHRGcm9tR3JvdXAocGVwRmllbGQpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mb3JtID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnNldERlZmF1bHRGb3JtKCk7XG4gICAgICAgIH1cbiAgICAgICAgLyp0aGlzLnVwbG9hZGVyLm9uQ29tcGxldGVBbGwgPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgIH0qL1xuICAgIH1cblxuICAgIGlzVmFsaWRGaWxlKFxuICAgICAgICBmaWxlU3RyLFxuICAgICAgICBmaWxlRXh0ZW5zaW9uLFxuICAgICAgICBhY2NlcHRlZEV4dGVuc2lvbnMsXG4gICAgICAgIHNpemVMaW1pdE1CID0gNVxuICAgICk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGZpbGU6IGFueSA9IGZpbGVTdHI7XG4gICAgICAgIGxldCBmaWxlU2l6ZSA9IDA7XG4gICAgICAgIGxldCBjb250ZW50ID0gJyc7XG4gICAgICAgIC8vIGNoZWNrIGlmIGdvdCBmaWxlIGFzIEJhc2U2NFxuICAgICAgICBpZiAodHlwZW9mIGZpbGVTdHIgPT09ICdzdHJpbmcnICYmIGZpbGVTdHIuaW5kZXhPZignZGF0YTonKSA+IC0xKSB7XG4gICAgICAgICAgICBmaWxlU2l6ZSA9IHRoaXMuZ2V0QmFzZTY0RmlsZVNpemUoZmlsZVN0cik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWxlU2l6ZSA9IGZpbGUuc2l6ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjaGVjayB0aGUgc2l6ZSBhbmQgdGhlIGV4dGVuc2lvblxuICAgICAgICBjb25zdCBzaXplT0s6IGJvb2xlYW4gPVxuICAgICAgICAgICAgZmlsZVNpemUgIT09IC0xICYmIGZpbGUgIT0gbnVsbCAmJiBmaWxlU2l6ZSA8IHNpemVMaW1pdE1CICogMTA0ODU3NjtcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uT0sgPVxuICAgICAgICAgICAgYWNjZXB0ZWRFeHRlbnNpb25zID09PSAnJyB8fFxuICAgICAgICAgICAgYWNjZXB0ZWRFeHRlbnNpb25zLmluZGV4T2YoZmlsZUV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpKSAhPT0gLTE7XG4gICAgICAgIGlmICghZXh0ZW5zaW9uT0spIHtcbiAgICAgICAgICAgIGNvbnRlbnQgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICdNRVNTQUdFUy5FUlJPUl9GQUlMRF9UT19MT0FEX0VYVEVOU0lPTicsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBmaWxlRXh0ZW5zaW9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgXCI8bGFiZWwgY2xhc3M9J3VwcGVyY2FzZSBib2xkJz5cIiArXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlRXh0ZW5zaW9uICtcbiAgICAgICAgICAgICAgICAgICAgICAgICc8L2xhYmVsPicsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmICghc2l6ZU9LKSB7XG4gICAgICAgICAgICBjb250ZW50ID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAnTUVTU0FHRVMuRVJST1JfRkFJTERfVE9fTE9BRF9TSVpFJyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVTaXplOlxuICAgICAgICAgICAgICAgICAgICAgICAgXCI8bGFiZWwgY2xhc3M9J3VwcGVyY2FzZSBib2xkJz5cIiArXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplTGltaXRNQi50b1N0cmluZygpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICc8L2xhYmVsPicsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG5cbiAgICBnZXRCYXNlNjRGaWxlU2l6ZShiYXNlNjRTdHJpbmc6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGxldCBmaWxlU2l6ZTogbnVtYmVyO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBiYXNlNjRTdHJpbmcgPSBiYXNlNjRTdHJpbmcuc3Vic3RyKGJhc2U2NFN0cmluZy5pbmRleE9mKCcsJykgKyAxKTtcbiAgICAgICAgICAgIGZpbGVTaXplID0gYXRvYihiYXNlNjRTdHJpbmcpLmxlbmd0aDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgZmlsZVNpemUgPSAtMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWxlU2l6ZTsgLy8gcmV0dXJuIHNpemUgaW4gYnl0ZXM7XG4gICAgfVxuXG4gICAgLy8gc2V0SW50ZXJ2YWxYKGRlbGF5LCByZXBldGl0aW9ucyk6IHZvaWQge1xuICAgIC8vICAgICBsZXQgeCA9IDA7XG4gICAgLy8gICAgIHRoaXMuaW50ZXJ2YWxJRCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgLy8gICAgICAgICAvLyB0aGlzLnNldFByb2dyZXNzKHRoaXMucHJvZ3Jlc3MgKyA1KTtcbiAgICAvLyAgICAgICAgIGlmICgrK3ggPT09IHJlcGV0aXRpb25zIHx8IHRoaXMudXBsb2FkZXIucHJvZ3Jlc3MgPj0gMTAwKSB7XG4gICAgLy8gICAgICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElEKTtcbiAgICAvLyAgICAgICAgIH1cbiAgICAvLyAgICAgfSwgZGVsYXkpO1xuICAgIC8vIH1cblxuICAgIGVycm9ySGFuZGxlcihldmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC50YXJnZXQuc3JjID0gdGhpcy5maWxlU2VydmljZS5nZXRTdmdBc0ltYWdlU3JjKFxuICAgICAgICAgICAgcGVwSWNvbk5vSW1hZ2UyLmRhdGFcbiAgICAgICAgKTtcbiAgICAgICAgZXZlbnQudGFyZ2V0LnRpdGxlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnSU1BR0UuTk9fSU1BR0UnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFByb2dyZXNzKHByb2dyZXNzKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSBwcm9ncmVzcztcbiAgICAgICAgdGhpcy51cGxvYWRlci5wcm9ncmVzcyA9IHByb2dyZXNzO1xuICAgIH1cblxuICAgIGRlbGV0ZUZpbGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBsb2FkZXIuY2xlYXJRdWV1ZSgpO1xuICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSUQpO1xuICAgICAgICB0aGlzLnNldFByb2dyZXNzKDApO1xuXG4gICAgICAgIGNvbnN0IGVtcGx0VmFsdWUgPSAnJztcbiAgICAgICAgdGhpcy5zcmMgPSBlbXBsdFZhbHVlO1xuXG4gICAgICAgIHRoaXMuZmlsZUNoYW5nZS5lbWl0KG51bGwpO1xuXG4gICAgICAgIC8vIHRoaXMuZmlsZUNoYW5nZS5lbWl0KHtcbiAgICAgICAgLy8gICAgIGFjY2VwdGVkRXh0ZW5zaW9uczogdGhpcy5hY2NlcHRlZEV4dGVuc2lvbnMsXG4gICAgICAgIC8vICAgICBmaWxlU3RyOiBudWxsLFxuICAgICAgICAvLyAgICAgZmlsZUV4dDogbnVsbCxcbiAgICAgICAgLy8gfSk7XG4gICAgfVxuXG4gICAgb25FbGVtZW50Q2xpY2tlZChldmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVsZW1lbnRDbGljay5lbWl0KHtcbiAgICAgICAgICAgIGtleTogdGhpcy5rZXksXG4gICAgICAgICAgICBjb250cm9sVHlwZTogdGhpcy5jb250cm9sVHlwZSxcbiAgICAgICAgICAgIGV2ZW50V2hpY2g6IGV2ZW50LndoaWNoLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNsaWNrX0Nob29zZUZpbGUoZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaGFuZGxlQWN0aW9ucykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZmlsZUlucHV0Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaG9vc2VGaWxlLmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uS2V5UHJlc3NfQ2hvb3NlRmlsZShldmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5oYW5kbGVBY3Rpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBlID0gZXZlbnQgYXMgS2V5Ym9hcmRFdmVudDtcblxuICAgICAgICAgICAgaWYgKFsxMywgMzJdLmluZGV4T2YoZS53aGljaCkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsZUlucHV0Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNob29zZUZpbGUuZW1pdCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNwZXBUZW1wbGF0ZT5cbiAgICA8bWF0LWZvcm0tZmllbGQgW2Zvcm1Hcm91cF09XCJmb3JtXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBlcC1maWxlLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXAtZmlsZSBib2R5LXNtXCIgW3N0eWxlLmhlaWdodF09XCJmaWVsZEhlaWdodFwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgJ29uZS1yb3cnOiByb3dTcGFuID09IDEsXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGU6IGRpc2FibGVkXG4gICAgICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzcmMgIT0gJyc7IHRoZW4gd2l0aEltZzsgZWxzZSBub0ltZ1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjd2l0aEltZz5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFkaXNhYmxlZFwiIG1hdC1idXR0b24gKGNsaWNrKT1cImRlbGV0ZUZpbGUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBlcC1idXR0b24gaWNvbi1idXR0b24gd2VhayBtZCBkZWxldGVcIiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3JpZ2h0LWFsaWdubWVudCc6IHhBbGlnbm1lbnQgPT0gJ3JpZ2h0JyB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJzeXN0ZW1fYmluXCI+PC9wZXAtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVwLWZpbGUtcHJldmlld1wiIChjbGljayk9XCJvbkVsZW1lbnRDbGlja2VkKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJjb250cm9sVHlwZSA9PT0gJ2ltYWdlJ1wiICNpbWFnZVByZXZpZXcgW3NyY109XCJzcmNcIiBjbGFzcz1cInBlcC1maWxlLXByZXZpZXctaW1nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodF09XCJmaWVsZEhlaWdodFwiIChlcnJvcik9XCJlcnJvckhhbmRsZXIoJGV2ZW50KVwiIFthbHRdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlsndGV4dC1hbGlnbi0nICsgeEFsaWdubWVudF1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRyb2xUeXBlID09PSAnYXR0YWNobWVudCdcIiBjbGFzcz1cImVsbGlwc2lzIHBlcC1maWxlLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cInNyYyAhPSAnJ1wiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwicGVwLXNwYWNpbmctZWxlbWVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJzeXN0ZW1fYXR0YWNoXCI+PC9wZXAtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJib2R5LXNtIGVsbGlwc2lzXCI+e3sgJ0ZJTEUuU0VFX09SSUdJTkFMJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vSW1nPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWxsaXBzaXMgcGVwLWZpbGUtbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiY29udHJvbFR5cGUgPT09ICdhdHRhY2htZW50J1wiIGNsYXNzPVwicGVwLXNwYWNpbmctZWxlbWVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwZXAtaWNvbiBuYW1lPVwic3lzdGVtX2F0dGFjaFwiPjwvcGVwLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiY29udHJvbFR5cGUgPT09ICdpbWFnZSdcIiBjbGFzcz1cInBlcC1zcGFjaW5nLWVsZW1lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGVwLWljb24gbmFtZT1cInN5c3RlbV9maWxlX3VwbG9hZF9jbG91ZFwiPjwvcGVwLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJib2R5LXNtIGVsbGlwc2lzXCIgKm5nSWY9XCJwcm9ncmVzcyA9PSAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgKGRpc2FibGVkID8gKGNvbnRyb2xUeXBlID09PSAnaW1hZ2UnID8gJ01FU1NBR0VTLklORk9fTUlTU0lOR19JTUFHRScgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdNRVNTQUdFUy5JTkZPX01JU1NJTkdfRklMRScpIDogJ0ZJTEUuSElOVCcpIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxwICpuZ0lmPVwicHJvZ3Jlc3MgIT0gMFwiIGNsYXNzPVwicHVsbC1sZWZ0IGZsaXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3B1bGwtbGVmdCBmbGlwJzogcm93U3BhbiA9PSAxLCBpbWFnZTogY29udHJvbFR5cGUgPT0gJ2ltYWdlJywgYXR0YWNobWVudDogY29udHJvbFR5cGUgPT0gJ2F0dGFjaG1lbnQnIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnRklMRS5VUExPQURJTkdfRklMRScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRpc2FibGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJoYW5kbGVBY3Rpb25zXCIgI2ZpbGVJbnB1dCBpZD1cInBlcC1maWxlLXt7IGtleSB9fVwiIHRhYmluZGV4PVwiLTFcIiB0eXBlPVwiZmlsZVwiIGFjY2VwdD1cImFjY2VwdGVkRXh0ZW5zaW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmcyRmlsZVNlbGVjdCBbdXBsb2FkZXJdPVwidXBsb2FkZXJcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicHJvZ3Jlc3MgIT0gMFwiIG1hdC1idXR0b24gY2xhc3M9XCJwZXAtYnV0dG9uIGljb24tYnV0dG9uIHdlYWsgbWQgZGVsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdyaWdodC1hbGlnbm1lbnQnOiB4QWxpZ25tZW50ID09ICdyaWdodCcgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJzeXN0ZW1fcHJvY2Vzc2luZ1wiIFtzcGluXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wZXAtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpbnB1dCBbaWRdPVwia2V5XCIgbWF0SW5wdXQgW25hbWVdPVwia2V5XCIgW2Zvcm1Db250cm9sTmFtZV09XCJrZXlcIiBjbGFzcz1cImhpZGRlbi1pbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwic3JjXCIgKGNsaWNrKT1cIm9uQ2xpY2tfQ2hvb3NlRmlsZSgkZXZlbnQpXCIgKGtleXByZXNzKT1cIm9uS2V5UHJlc3NfQ2hvb3NlRmlsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bWF0LWVycm9yPjxzcGFuIGNsYXNzPVwiYm9keS14c1wiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIm1hbmRhdG9yeSAmJiBzcmMubGVuZ3RoID09IDAgPyAoJ01FU1NBR0VTLkVSUk9SX0lTX1JFUVVJUkVEJyB8IHRyYW5zbGF0ZTogeyBmaWVsZDogbGFiZWwgfSkgOiAoJ01FU1NBR0VTLkVSUk9SX0lTX05PVF9WQUxJRCcgfCB0cmFuc2xhdGU6IHsgZmllbGQ6IGxhYmVsIH0pXCJcbiAgICAgICAgICAgICAgICBbaW5uZXJUZXh0XT1cIm1hbmRhdG9yeSAmJiBzcmMubGVuZ3RoID09IDAgPyAoJ01FU1NBR0VTLkVSUk9SX0lTX1JFUVVJUkVEJyB8IHRyYW5zbGF0ZTogeyBmaWVsZDogbGFiZWwgfSkgOiAoJ01FU1NBR0VTLkVSUk9SX0lTX05PVF9WQUxJRCcgfCB0cmFuc2xhdGU6IHsgZmllbGQ6IGxhYmVsIH0pXCI+PC9zcGFuPlxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImxheW91dFR5cGUgPT09ICdmb3JtJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwZXBUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJsYXlvdXRUeXBlID09PSAnY2FyZCdcIj5cbiAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwZXBUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPiAtLT5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwibGF5b3V0VHlwZSA9PT0gJ3RhYmxlJ1wiPlxuICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBlcFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+IC0tPlxuPC9uZy1jb250YWluZXI+Il19
|
|
264
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtdXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9maWxlcy11cGxvYWRlci9maWxlcy11cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2ZpbGVzLXVwbG9hZGVyL2ZpbGVzLXVwbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDSCxTQUFTLEVBRVQsVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsRUFFVCx1QkFBdUIsR0FFMUIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFLSCw0QkFBNEIsRUFFNUIsWUFBWSxHQUNmLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUVILGFBQWEsR0FDaEIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFpQi9ELE1BQU0sT0FBTyx5QkFBeUI7SUE4Q2xDLFlBQ1ksYUFBK0IsRUFDL0Isb0JBQTZDLEVBQzdDLFdBQTJCLEVBQzNCLFNBQTJCO1FBSDNCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXlCO1FBQzdDLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQWpEOUIsUUFBRyxHQUFHLEVBQUUsQ0FBQztRQUNULFFBQUcsR0FBRyxFQUFFLENBQUM7UUFDVCxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGVBQVUsR0FBMkIsNEJBQTRCLENB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Q0FBQyxNQUFNOztrQkFFbEQsVUFBVTt5TUFFRSxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFJRixPQUFPO3NCQURWLEtBQUs7Z0JBUUcsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR04sVUFBVTtzQkFEVCxNQUFNO2dCQUlQLFVBQVU7c0JBRFQsTUFBTTtnQkFHUCxZQUFZO3NCQURYLE1BQU07Z0JBR2lCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDSyxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgSW5qZWN0YWJsZSxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIFZpZXdDaGlsZCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBPcHRpb25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkZXIgfSBmcm9tICduZzItZmlsZS11cGxvYWQnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBQZXBGaWxlU2VydmljZSxcbiAgICBQZXBMYXlvdXRUeXBlLFxuICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgIFBlcEhvcml6b250YWxBbGlnbm1lbnQsXG4gICAgREVGQVVMVF9IT1JJWk9OVEFMX0FMSUdOTUVOVCxcbiAgICBJUGVwRmllbGRDbGlja0V2ZW50LFxuICAgIFBlcEZpZWxkQmFzZSxcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHtcbiAgICBQZXBEaWFsb2dTZXJ2aWNlLFxuICAgIFBlcERpYWxvZ0RhdGEsXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2RpYWxvZyc7XG5pbXBvcnQgeyBwZXBJY29uTm9JbWFnZTIgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9pY29uJztcblxuZXhwb3J0IGludGVyZmFjZSBJUGVwRmlsZUNoYW5nZUV2ZW50IHtcbiAgICBhY2NlcHRlZEV4dGVuc2lvbnM/OiBzdHJpbmc7XG4gICAgZmlsZVN0cj86IHN0cmluZztcbiAgICBmaWxlTmFtZT86IHN0cmluZztcbiAgICBmaWxlRXh0Pzogc3RyaW5nO1xuICAgIGZpbGVTaXplPzogbnVtYmVyO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1maWxlcy11cGxvYWRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbGVzLXVwbG9hZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9maWxlcy11cGxvYWRlci5jb21wb25lbnQuc2NzcycsICcuL2ZpbGVzLXVwbG9hZGVyLmNvbXBvbmVudC50aGVtZS5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFBlcEZpbGVzVXBsb2FkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGtleSA9ICcnO1xuICAgIEBJbnB1dCgpIHNyYyA9ICcnO1xuICAgIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gICAgQElucHV0KCkgbWFuZGF0b3J5ID0gZmFsc2U7XG4gICAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoKSB4QWxpZ25tZW50OiBQZXBIb3Jpem9udGFsQWxpZ25tZW50ID0gREVGQVVMVF9IT1JJWk9OVEFMX0FMSUdOTUVOVDtcblxuICAgIHByaXZhdGUgX3Jvd1NwYW4gPSAxO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHJvd1NwYW4odmFsdWUpIHtcbiAgICAgICAgdGhpcy5fcm93U3BhbiA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgcm93U3BhbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93U3BhbjtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBjb250cm9sVHlwZSA9ICcnO1xuICAgIEBJbnB1dCgpIHNpemVMaW1pdE1CID0gNTtcblxuICAgIEBJbnB1dCgpIGZvcm06IEZvcm1Hcm91cDtcbiAgICBASW5wdXQoKSBhY2NlcHRlZEV4dGVuc2lvbnMgPSAnYm1wLGpwZyxqcGVnLHBuZyxnaWYsaWNvLHN2ZyxodG1sLGNzcyc7XG4gICAgQElucHV0KCkgbGF5b3V0VHlwZTogUGVwTGF5b3V0VHlwZSA9ICdmb3JtJztcblxuICAgIEBJbnB1dCgpIGZpZWxkSGVpZ2h0ID0gJyc7XG4gICAgXG4gICAgLy8gVG8ga25vdyBpZiBoYW5kbGUgYWN0aW9ucyBvciBqdXN0IHJhaXNlIHRoZW0gYXMgb3V0cHV0XG4gICAgQElucHV0KCkgaGFuZGxlQWN0aW9ucyA9IHRydWU7XG4gICAgXG4gICAgQE91dHB1dCgpXG4gICAgY2hvb3NlRmlsZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpOyAvLyBUaGlzIGV2ZW50IHdpbGwgZmlyZWQgb25seSB3aGVuIGhhbmRsZUFjdGlvbnMgSW5wdXQgaXMgZmFsc2VcbiAgICBcbiAgICBAT3V0cHV0KClcbiAgICBmaWxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SVBlcEZpbGVDaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBGaWxlQ2hhbmdlRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpXG4gICAgZWxlbWVudENsaWNrOiBFdmVudEVtaXR0ZXI8SVBlcEZpZWxkQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBGaWVsZENsaWNrRXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXQ6IGFueTtcbiAgICBAVmlld0NoaWxkKCdpbWFnZVByZXZpZXcnKSBpbWFnZVByZXZpZXc6IGFueTtcblxuICAgIC8vIG11bHRpcGxlID0gZmFsc2U7XG4gICAgdXBsb2FkZXI6IEZpbGVVcGxvYWRlcjtcbiAgICBwcm9ncmVzcyA9IDA7XG4gICAgLy8gcmVzcG9uc2U6IHN0cmluZztcbiAgICBpbnRlcnZhbElEOiBhbnkgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogUGVwRGlhbG9nU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjdXN0b21pemF0aW9uU2VydmljZTogUGVwQ3VzdG9taXphdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZmlsZVNlcnZpY2U6IFBlcEZpbGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLnVwbG9hZGVyID0gbmV3IEZpbGVVcGxvYWRlcih7IHJlbW92ZUFmdGVyVXBsb2FkOiB0cnVlIH0pO1xuXG4gICAgICAgIHRoaXMudXBsb2FkZXIub25BZnRlckFkZGluZ0ZpbGUgPSAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZmlsZUlucHV0Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gZml4IGZvciBESS0xOTM3NiAtIHdoZW4gdGhlcmUgaXMgYSBkb3Qgb24gdGhlIGZpbGUgbmFtZSAobm90IGluY2x1ZGUgdGhlIGV4dGFudGlvbiBvbmUpXG4gICAgICAgICAgICAgICAgLy9jb25zdCBmaWxlTmFtZUFycmF5ID0gaXRlbS5fZmlsZS5uYW1lLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZU5hbWUgPSB0aGlzLmdldEZpbGVOYW1lKGl0ZW0uX2ZpbGUubmFtZSk7IC8vZmlsZU5hbWVBcnJheVswXTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlRXh0ID0gdGhpcy5nZXRGaWxlRXh0ZW5zaW9uKGl0ZW0uX2ZpbGUubmFtZSk7IC8vZmlsZU5hbWVBcnJheVsxXTsgLy8gaXRlbS5fZmlsZS5uYW1lLnNwbGl0KCcuJykucG9wKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZVNpemUgPSBpdGVtLl9maWxlLnNpemU7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IHx8IGV2ZW50LnNyY0VsZW1lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZVN0ciA9IHRhcmdldC5yZXN1bHQ7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvck1zZyA9IHRoaXMuaXNWYWxpZEZpbGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbGVTdHIsXG4gICAgICAgICAgICAgICAgICAgIGZpbGVFeHQsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWNjZXB0ZWRFeHRlbnNpb25zLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpemVMaW1pdE1CXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JNc2cgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3JjID0gZmlsZVN0cjtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5zZXRJbnRlcnZhbFgoMjUsIDc1KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5zZXRQcm9ncmVzcyg1KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0ZWRFeHRlbnNpb25zOiB0aGlzLmFjY2VwdGVkRXh0ZW5zaW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVTdHIsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVFeHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgJ01FU1NBR0VTLlRJVExFX05PVElDRSdcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IG5ldyBQZXBEaWFsb2dEYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogZXJyb3JNc2csXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbkRlZmF1bHREaWFsb2coZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGl0ZW0uX2ZpbGUpO1xuXG4gICAgICAgICAgICBcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXRGaWxlTmFtZShmaWxlbmFtZSl7XG4gICAgICAgIC8vIGdldCBmaWxlIG5hbWVcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBmaWxlbmFtZS5zdWJzdHJpbmcoMCxmaWxlbmFtZS5sYXN0SW5kZXhPZignLicpKTtcbiAgICAgICAgcmV0dXJuIGZpbGVOYW1lO1xuICAgIH1cblxuICAgIGdldEZpbGVFeHRlbnNpb24oZmlsZW5hbWUpe1xuICAgICAgICAvLyBnZXQgZmlsZSBleHRlbnNpb25cbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gZmlsZW5hbWUuc3Vic3RyaW5nKGZpbGVuYW1lLmxhc3RJbmRleE9mKCcuJykgKyAxLCBmaWxlbmFtZS5sZW5ndGgpO1xuICAgICAgICByZXR1cm4gZXh0ZW5zaW9uO1xuICAgIH1cbiAgICBcbiAgICBwcml2YXRlIHNldERlZmF1bHRGb3JtKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwZXBGaWVsZCA9IG5ldyBQZXBGaWVsZEJhc2Uoe1xuICAgICAgICAgICAga2V5OiB0aGlzLmtleSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnNyYyxcbiAgICAgICAgICAgIG1hbmRhdG9yeTogdGhpcy5tYW5kYXRvcnksXG4gICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2UuZ2V0RGVmYXVsdEZyb21Hcm91cChwZXBGaWVsZCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZvcm0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdEZvcm0oKTtcbiAgICAgICAgfVxuICAgICAgICAvKnRoaXMudXBsb2FkZXIub25Db21wbGV0ZUFsbCA9ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgfSovXG4gICAgfVxuXG4gICAgaXNWYWxpZEZpbGUoXG4gICAgICAgIGZpbGVTdHIsXG4gICAgICAgIGZpbGVFeHRlbnNpb24sXG4gICAgICAgIGFjY2VwdGVkRXh0ZW5zaW9ucyxcbiAgICAgICAgc2l6ZUxpbWl0TUIgPSA1XG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZmlsZTogYW55ID0gZmlsZVN0cjtcbiAgICAgICAgbGV0IGZpbGVTaXplID0gMDtcbiAgICAgICAgbGV0IGNvbnRlbnQgPSAnJztcbiAgICAgICAgLy8gY2hlY2sgaWYgZ290IGZpbGUgYXMgQmFzZTY0XG4gICAgICAgIGlmICh0eXBlb2YgZmlsZVN0ciA9PT0gJ3N0cmluZycgJiYgZmlsZVN0ci5pbmRleE9mKCdkYXRhOicpID4gLTEpIHtcbiAgICAgICAgICAgIGZpbGVTaXplID0gdGhpcy5nZXRCYXNlNjRGaWxlU2l6ZShmaWxlU3RyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpbGVTaXplID0gZmlsZS5zaXplO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNoZWNrIHRoZSBzaXplIGFuZCB0aGUgZXh0ZW5zaW9uXG4gICAgICAgIGNvbnN0IHNpemVPSzogYm9vbGVhbiA9XG4gICAgICAgICAgICBmaWxlU2l6ZSAhPT0gLTEgJiYgZmlsZSAhPSBudWxsICYmIGZpbGVTaXplIDwgc2l6ZUxpbWl0TUIgKiAxMDQ4NTc2O1xuICAgICAgICBjb25zdCBleHRlbnNpb25PSyA9XG4gICAgICAgICAgICBhY2NlcHRlZEV4dGVuc2lvbnMgPT09ICcnIHx8XG4gICAgICAgICAgICBhY2NlcHRlZEV4dGVuc2lvbnMuaW5kZXhPZihmaWxlRXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCkpICE9PSAtMTtcbiAgICAgICAgaWYgKCFleHRlbnNpb25PSykge1xuICAgICAgICAgICAgY29udGVudCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgJ01FU1NBR0VTLkVSUk9SX0ZBSUxEX1RPX0xPQURfRVhURU5TSU9OJyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVFeHRlbnNpb246XG4gICAgICAgICAgICAgICAgICAgICAgICBcIjxsYWJlbCBjbGFzcz0ndXBwZXJjYXNlIGJvbGQnPlwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVFeHRlbnNpb24gK1xuICAgICAgICAgICAgICAgICAgICAgICAgJzwvbGFiZWw+JyxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKCFzaXplT0spIHtcbiAgICAgICAgICAgIGNvbnRlbnQgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICdNRVNTQUdFUy5FUlJPUl9GQUlMRF9UT19MT0FEX1NJWkUnLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZVNpemU6XG4gICAgICAgICAgICAgICAgICAgICAgICBcIjxsYWJlbCBjbGFzcz0ndXBwZXJjYXNlIGJvbGQnPlwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVMaW1pdE1CLnRvU3RyaW5nKCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJzwvbGFiZWw+JyxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH1cblxuICAgIGdldEJhc2U2NEZpbGVTaXplKGJhc2U2NFN0cmluZzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGZpbGVTaXplOiBudW1iZXI7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGJhc2U2NFN0cmluZyA9IGJhc2U2NFN0cmluZy5zdWJzdHIoYmFzZTY0U3RyaW5nLmluZGV4T2YoJywnKSArIDEpO1xuICAgICAgICAgICAgZmlsZVNpemUgPSBhdG9iKGJhc2U2NFN0cmluZykubGVuZ3RoO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBmaWxlU2l6ZSA9IC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbGVTaXplOyAvLyByZXR1cm4gc2l6ZSBpbiBieXRlcztcbiAgICB9XG5cbiAgICAvLyBzZXRJbnRlcnZhbFgoZGVsYXksIHJlcGV0aXRpb25zKTogdm9pZCB7XG4gICAgLy8gICAgIGxldCB4ID0gMDtcbiAgICAvLyAgICAgdGhpcy5pbnRlcnZhbElEID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgICAvLyAgICAgICAgIC8vIHRoaXMuc2V0UHJvZ3Jlc3ModGhpcy5wcm9ncmVzcyArIDUpO1xuICAgIC8vICAgICAgICAgaWYgKCsreCA9PT0gcmVwZXRpdGlvbnMgfHwgdGhpcy51cGxvYWRlci5wcm9ncmVzcyA+PSAxMDApIHtcbiAgICAvLyAgICAgICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSUQpO1xuICAgIC8vICAgICAgICAgfVxuICAgIC8vICAgICB9LCBkZWxheSk7XG4gICAgLy8gfVxuXG4gICAgZXJyb3JIYW5kbGVyKGV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnRhcmdldC5zcmMgPSB0aGlzLmZpbGVTZXJ2aWNlLmdldFN2Z0FzSW1hZ2VTcmMoXG4gICAgICAgICAgICBwZXBJY29uTm9JbWFnZTIuZGF0YVxuICAgICAgICApO1xuICAgICAgICBldmVudC50YXJnZXQudGl0bGUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdJTUFHRS5OT19JTUFHRScpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0UHJvZ3Jlc3MocHJvZ3Jlc3MpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9ncmVzcyA9IHByb2dyZXNzO1xuICAgICAgICB0aGlzLnVwbG9hZGVyLnByb2dyZXNzID0gcHJvZ3Jlc3M7XG4gICAgfVxuXG4gICAgZGVsZXRlRmlsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGxvYWRlci5jbGVhclF1ZXVlKCk7XG4gICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxJRCk7XG4gICAgICAgIHRoaXMuc2V0UHJvZ3Jlc3MoMCk7XG5cbiAgICAgICAgY29uc3QgZW1wbHRWYWx1ZSA9ICcnO1xuICAgICAgICB0aGlzLnNyYyA9IGVtcGx0VmFsdWU7XG5cbiAgICAgICAgdGhpcy5maWxlQ2hhbmdlLmVtaXQobnVsbCk7XG4gICAgfVxuXG4gICAgb25FbGVtZW50Q2xpY2tlZChldmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVsZW1lbnRDbGljay5lbWl0KHtcbiAgICAgICAgICAgIGtleTogdGhpcy5rZXksXG4gICAgICAgICAgICBjb250cm9sVHlwZTogdGhpcy5jb250cm9sVHlwZSxcbiAgICAgICAgICAgIGV2ZW50V2hpY2g6IGV2ZW50LndoaWNoLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNsaWNrX0Nob29zZUZpbGUoZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaGFuZGxlQWN0aW9ucykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZmlsZUlucHV0Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaG9vc2VGaWxlLmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uS2V5UHJlc3NfQ2hvb3NlRmlsZShldmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5oYW5kbGVBY3Rpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBlID0gZXZlbnQgYXMgS2V5Ym9hcmRFdmVudDtcblxuICAgICAgICAgICAgaWYgKFsxMywgMzJdLmluZGV4T2YoZS53aGljaCkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsZUlucHV0Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNob29zZUZpbGUuZW1pdCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNwZXBUZW1wbGF0ZT5cbiAgICA8bWF0LWZvcm0tZmllbGQgW2Zvcm1Hcm91cF09XCJmb3JtXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBlcC1maWxlLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXAtZmlsZSBib2R5LXNtXCIgW3N0eWxlLmhlaWdodF09XCJmaWVsZEhlaWdodFwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgJ29uZS1yb3cnOiByb3dTcGFuID09IDEsXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGU6IGRpc2FibGVkXG4gICAgICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzcmMgIT0gJyc7IHRoZW4gd2l0aEltZzsgZWxzZSBub0ltZ1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjd2l0aEltZz5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFkaXNhYmxlZFwiIG1hdC1idXR0b24gKGNsaWNrKT1cImRlbGV0ZUZpbGUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBlcC1idXR0b24gaWNvbi1idXR0b24gd2VhayBtZCBkZWxldGVcIiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3JpZ2h0LWFsaWdubWVudCc6IHhBbGlnbm1lbnQgPT0gJ3JpZ2h0JyB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJzeXN0ZW1fYmluXCI+PC9wZXAtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVwLWZpbGUtcHJldmlld1wiIChjbGljayk9XCJvbkVsZW1lbnRDbGlja2VkKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJjb250cm9sVHlwZSA9PT0gJ2ltYWdlJ1wiICNpbWFnZVByZXZpZXcgW3NyY109XCJzcmNcIiBjbGFzcz1cInBlcC1maWxlLXByZXZpZXctaW1nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodF09XCJmaWVsZEhlaWdodFwiIChlcnJvcik9XCJlcnJvckhhbmRsZXIoJGV2ZW50KVwiIFthbHRdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlsndGV4dC1hbGlnbi0nICsgeEFsaWdubWVudF1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRyb2xUeXBlID09PSAnYXR0YWNobWVudCdcIiBjbGFzcz1cImVsbGlwc2lzIHBlcC1maWxlLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cInNyYyAhPSAnJ1wiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwicGVwLXNwYWNpbmctZWxlbWVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJzeXN0ZW1fYXR0YWNoXCI+PC9wZXAtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJib2R5LXNtIGVsbGlwc2lzXCI+e3sgJ0ZJTEUuU0VFX09SSUdJTkFMJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vSW1nPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWxsaXBzaXMgcGVwLWZpbGUtbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiY29udHJvbFR5cGUgPT09ICdhdHRhY2htZW50J1wiIGNsYXNzPVwicGVwLXNwYWNpbmctZWxlbWVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwZXAtaWNvbiBuYW1lPVwic3lzdGVtX2F0dGFjaFwiPjwvcGVwLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiY29udHJvbFR5cGUgPT09ICdpbWFnZSdcIiBjbGFzcz1cInBlcC1zcGFjaW5nLWVsZW1lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGVwLWljb24gbmFtZT1cInN5c3RlbV9maWxlX3VwbG9hZF9jbG91ZFwiPjwvcGVwLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJib2R5LXNtIGVsbGlwc2lzXCIgKm5nSWY9XCJwcm9ncmVzcyA9PSAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgKGRpc2FibGVkID8gKGNvbnRyb2xUeXBlID09PSAnaW1hZ2UnID8gJ01FU1NBR0VTLklORk9fTUlTU0lOR19JTUFHRScgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdNRVNTQUdFUy5JTkZPX01JU1NJTkdfRklMRScpIDogJ0ZJTEUuSElOVCcpIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxwICpuZ0lmPVwicHJvZ3Jlc3MgIT0gMFwiIGNsYXNzPVwicHVsbC1sZWZ0IGZsaXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3B1bGwtbGVmdCBmbGlwJzogcm93U3BhbiA9PSAxLCBpbWFnZTogY29udHJvbFR5cGUgPT0gJ2ltYWdlJywgYXR0YWNobWVudDogY29udHJvbFR5cGUgPT0gJ2F0dGFjaG1lbnQnIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnRklMRS5VUExPQURJTkdfRklMRScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRpc2FibGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJoYW5kbGVBY3Rpb25zXCIgI2ZpbGVJbnB1dCBpZD1cInBlcC1maWxlLXt7IGtleSB9fVwiIHRhYmluZGV4PVwiLTFcIiB0eXBlPVwiZmlsZVwiIGFjY2VwdD1cImFjY2VwdGVkRXh0ZW5zaW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmcyRmlsZVNlbGVjdCBbdXBsb2FkZXJdPVwidXBsb2FkZXJcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicHJvZ3Jlc3MgIT0gMFwiIG1hdC1idXR0b24gY2xhc3M9XCJwZXAtYnV0dG9uIGljb24tYnV0dG9uIHdlYWsgbWQgZGVsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdyaWdodC1hbGlnbm1lbnQnOiB4QWxpZ25tZW50ID09ICdyaWdodCcgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJzeXN0ZW1fcHJvY2Vzc2luZ1wiIFtzcGluXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wZXAtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpbnB1dCBbaWRdPVwia2V5XCIgbWF0SW5wdXQgW25hbWVdPVwia2V5XCIgW2Zvcm1Db250cm9sTmFtZV09XCJrZXlcIiBjbGFzcz1cImhpZGRlbi1pbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwic3JjXCIgKGNsaWNrKT1cIm9uQ2xpY2tfQ2hvb3NlRmlsZSgkZXZlbnQpXCIgKGtleXByZXNzKT1cIm9uS2V5UHJlc3NfQ2hvb3NlRmlsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bWF0LWVycm9yPjxzcGFuIGNsYXNzPVwiYm9keS14c1wiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIm1hbmRhdG9yeSAmJiBzcmMubGVuZ3RoID09IDAgPyAoJ01FU1NBR0VTLkVSUk9SX0lTX1JFUVVJUkVEJyB8IHRyYW5zbGF0ZTogeyBmaWVsZDogbGFiZWwgfSkgOiAoJ01FU1NBR0VTLkVSUk9SX0lTX05PVF9WQUxJRCcgfCB0cmFuc2xhdGU6IHsgZmllbGQ6IGxhYmVsIH0pXCJcbiAgICAgICAgICAgICAgICBbaW5uZXJUZXh0XT1cIm1hbmRhdG9yeSAmJiBzcmMubGVuZ3RoID09IDAgPyAoJ01FU1NBR0VTLkVSUk9SX0lTX1JFUVVJUkVEJyB8IHRyYW5zbGF0ZTogeyBmaWVsZDogbGFiZWwgfSkgOiAoJ01FU1NBR0VTLkVSUk9SX0lTX05PVF9WQUxJRCcgfCB0cmFuc2xhdGU6IHsgZmllbGQ6IGxhYmVsIH0pXCI+PC9zcGFuPlxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImxheW91dFR5cGUgPT09ICdmb3JtJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwZXBUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJsYXlvdXRUeXBlID09PSAnY2FyZCdcIj5cbiAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwZXBUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPiAtLT5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwibGF5b3V0VHlwZSA9PT0gJ3RhYmxlJ1wiPlxuICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBlcFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+IC0tPlxuPC9uZy1jb250YWluZXI+Il19
|
|
@@ -61,6 +61,7 @@ class PepFilesUploaderComponent {
|
|
|
61
61
|
//const fileNameArray = item._file.name.split('.');
|
|
62
62
|
const fileName = this.getFileName(item._file.name); //fileNameArray[0];
|
|
63
63
|
const fileExt = this.getFileExtension(item._file.name); //fileNameArray[1]; // item._file.name.split('.').pop();
|
|
64
|
+
const fileSize = item._file.size;
|
|
64
65
|
const target = event.target || event.srcElement;
|
|
65
66
|
const fileStr = target.result;
|
|
66
67
|
const errorMsg = this.isValidFile(fileStr, fileExt, this.acceptedExtensions, this.sizeLimitMB);
|
|
@@ -73,6 +74,7 @@ class PepFilesUploaderComponent {
|
|
|
73
74
|
fileStr,
|
|
74
75
|
fileName,
|
|
75
76
|
fileExt,
|
|
77
|
+
fileSize,
|
|
76
78
|
});
|
|
77
79
|
}
|
|
78
80
|
else {
|
|
@@ -186,11 +188,6 @@ class PepFilesUploaderComponent {
|
|
|
186
188
|
const empltValue = '';
|
|
187
189
|
this.src = empltValue;
|
|
188
190
|
this.fileChange.emit(null);
|
|
189
|
-
// this.fileChange.emit({
|
|
190
|
-
// acceptedExtensions: this.acceptedExtensions,
|
|
191
|
-
// fileStr: null,
|
|
192
|
-
// fileExt: null,
|
|
193
|
-
// });
|
|
194
191
|
}
|
|
195
192
|
onElementClicked(event) {
|
|
196
193
|
this.elementClick.emit({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pepperi-addons-ngx-lib-files-uploader.mjs","sources":["../../../projects/ngx-lib/files-uploader/files-uploader.component.ts","../../../projects/ngx-lib/files-uploader/files-uploader.component.html","../../../projects/ngx-lib/files-uploader/files-uploader.module.ts","../../../projects/ngx-lib/files-uploader/public-api.ts","../../../projects/ngx-lib/files-uploader/pepperi-addons-ngx-lib-files-uploader.ts"],"sourcesContent":["import { Observable } from 'rxjs';\nimport {\n Component,\n OnInit,\n Injectable,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n Optional,\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { FileUploader } from 'ng2-file-upload';\nimport { FormGroup } from '@angular/forms';\nimport {\n PepFileService,\n PepLayoutType,\n PepCustomizationService,\n PepHorizontalAlignment,\n DEFAULT_HORIZONTAL_ALIGNMENT,\n IPepFieldClickEvent,\n PepFieldBase,\n} from '@pepperi-addons/ngx-lib';\nimport {\n PepDialogService,\n PepDialogData,\n} from '@pepperi-addons/ngx-lib/dialog';\nimport { pepIconNoImage2 } from '@pepperi-addons/ngx-lib/icon';\n\nexport interface IPepFileChangeEvent {\n acceptedExtensions?: string;\n fileStr?: string;\n fileName?: string;\n fileExt?: string;\n}\n\n@Component({\n selector: 'pep-files-uploader',\n templateUrl: './files-uploader.component.html',\n styleUrls: ['./files-uploader.component.scss', './files-uploader.component.theme.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n@Injectable()\nexport class PepFilesUploaderComponent implements OnInit {\n @Input() key = '';\n @Input() src = '';\n @Input() label = '';\n @Input() mandatory = false;\n @Input() disabled = false;\n @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\n\n private _rowSpan = 1;\n @Input()\n set rowSpan(value) {\n this._rowSpan = value;\n }\n get rowSpan(): number {\n return this._rowSpan;\n }\n\n @Input() controlType = '';\n @Input() sizeLimitMB = 5;\n\n @Input() form: FormGroup;\n @Input() acceptedExtensions = 'bmp,jpg,jpeg,png,gif,ico,svg,html,css';\n @Input() layoutType: PepLayoutType = 'form';\n\n @Input() fieldHeight = '';\n \n // To know if handle actions or just raise them as output\n @Input() handleActions = true;\n \n @Output()\n chooseFile: EventEmitter<void> = new EventEmitter<void>(); // This event will fired only when handleActions Input is false\n \n @Output()\n fileChange: EventEmitter<IPepFileChangeEvent> = new EventEmitter<IPepFileChangeEvent>();\n @Output()\n elementClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n\n @ViewChild('fileInput') fileInput: any;\n @ViewChild('imagePreview') imagePreview: any;\n\n // multiple = false;\n uploader: FileUploader;\n progress = 0;\n // response: string;\n intervalID: any = null;\n\n constructor(\n private dialogService: PepDialogService,\n private customizationService: PepCustomizationService,\n private fileService: PepFileService,\n private translate: TranslateService\n ) {\n this.uploader = new FileUploader({ removeAfterUpload: true });\n\n this.uploader.onAfterAddingFile = (item) => {\n if (this.fileInput?.nativeElement) {\n this.fileInput.nativeElement.value = '';\n }\n const reader = new FileReader();\n\n reader.onload = (event: any) => {\n // fix for DI-19376 - when there is a dot on the file name (not include the extantion one)\n //const fileNameArray = item._file.name.split('.');\n const fileName = this.getFileName(item._file.name); //fileNameArray[0];\n const fileExt = this.getFileExtension(item._file.name); //fileNameArray[1]; // item._file.name.split('.').pop();\n const target = event.target || event.srcElement;\n const fileStr = target.result;\n const errorMsg = this.isValidFile(\n fileStr,\n fileExt,\n this.acceptedExtensions,\n this.sizeLimitMB\n );\n if (errorMsg === '') {\n this.src = fileStr;\n // this.setIntervalX(25, 75);\n // this.setProgress(5);\n this.fileChange.emit({\n acceptedExtensions: this.acceptedExtensions,\n fileStr,\n fileName,\n fileExt,\n });\n } else {\n const title = this.translate.instant(\n 'MESSAGES.TITLE_NOTICE'\n );\n const data = new PepDialogData({\n title,\n content: errorMsg,\n });\n this.dialogService.openDefaultDialog(data);\n }\n };\n reader.readAsDataURL(item._file);\n\n \n };\n }\n\n getFileName(filename){\n // get file name\n const fileName = filename.substring(0,filename.lastIndexOf('.'));\n return fileName;\n }\n\n getFileExtension(filename){\n // get file extension\n const extension = filename.substring(filename.lastIndexOf('.') + 1, filename.length);\n return extension;\n }\n \n private setDefaultForm(): void {\n const pepField = new PepFieldBase({\n key: this.key,\n value: this.src,\n mandatory: this.mandatory,\n disabled: this.disabled,\n });\n this.form = this.customizationService.getDefaultFromGroup(pepField);\n }\n\n ngOnInit(): void {\n if (this.form === null) {\n this.setDefaultForm();\n }\n /*this.uploader.onCompleteAll = () => {\n this.fileInput.nativeElement.value = '';\n }*/\n }\n\n isValidFile(\n fileStr,\n fileExtension,\n acceptedExtensions,\n sizeLimitMB = 5\n ): string {\n const file: any = fileStr;\n let fileSize = 0;\n let content = '';\n // check if got file as Base64\n if (typeof fileStr === 'string' && fileStr.indexOf('data:') > -1) {\n fileSize = this.getBase64FileSize(fileStr);\n } else {\n fileSize = file.size;\n }\n // check the size and the extension\n const sizeOK: boolean =\n fileSize !== -1 && file != null && fileSize < sizeLimitMB * 1048576;\n const extensionOK =\n acceptedExtensions === '' ||\n acceptedExtensions.indexOf(fileExtension.toLowerCase()) !== -1;\n if (!extensionOK) {\n content = this.translate.instant(\n 'MESSAGES.ERROR_FAILD_TO_LOAD_EXTENSION',\n {\n fileExtension:\n \"<label class='uppercase bold'>\" +\n fileExtension +\n '</label>',\n }\n );\n } else if (!sizeOK) {\n content = this.translate.instant(\n 'MESSAGES.ERROR_FAILD_TO_LOAD_SIZE',\n {\n fileSize:\n \"<label class='uppercase bold'>\" +\n sizeLimitMB.toString() +\n '</label>',\n }\n );\n }\n return content;\n }\n\n getBase64FileSize(base64String: string): number {\n let fileSize: number;\n\n try {\n base64String = base64String.substr(base64String.indexOf(',') + 1);\n fileSize = atob(base64String).length;\n } catch (e) {\n fileSize = -1;\n }\n\n return fileSize; // return size in bytes;\n }\n\n // setIntervalX(delay, repetitions): void {\n // let x = 0;\n // this.intervalID = window.setInterval(() => {\n // // this.setProgress(this.progress + 5);\n // if (++x === repetitions || this.uploader.progress >= 100) {\n // window.clearInterval(this.intervalID);\n // }\n // }, delay);\n // }\n\n errorHandler(event): void {\n event.target.src = this.fileService.getSvgAsImageSrc(\n pepIconNoImage2.data\n );\n event.target.title = this.translate.instant('IMAGE.NO_IMAGE');\n }\n\n private setProgress(progress): void {\n this.progress = progress;\n this.uploader.progress = progress;\n }\n\n deleteFile(): void {\n this.uploader.clearQueue();\n window.clearInterval(this.intervalID);\n this.setProgress(0);\n\n const empltValue = '';\n this.src = empltValue;\n\n this.fileChange.emit(null);\n\n // this.fileChange.emit({\n // acceptedExtensions: this.acceptedExtensions,\n // fileStr: null,\n // fileExt: null,\n // });\n }\n\n onElementClicked(event): void {\n this.elementClick.emit({\n key: this.key,\n controlType: this.controlType,\n eventWhich: event.which,\n });\n }\n\n onClick_ChooseFile(event): void {\n if (this.handleActions) {\n if (this.fileInput?.nativeElement) {\n this.fileInput.nativeElement.click();\n }\n } else {\n this.chooseFile.emit();\n }\n }\n\n onKeyPress_ChooseFile(event): void {\n if (this.handleActions) {\n const e = event as KeyboardEvent;\n\n if ([13, 32].indexOf(e.which) !== -1) {\n if (this.fileInput?.nativeElement) {\n this.fileInput.nativeElement.click();\n }\n }\n e.preventDefault();\n } else {\n this.chooseFile.emit();\n }\n }\n}\n","<ng-template #pepTemplate>\n <mat-form-field [formGroup]=\"form\" appearance=\"outline\">\n <div class=\"pep-file-wrapper\">\n <div class=\"pep-file body-sm\" [style.height]=\"fieldHeight\" [ngClass]=\"{\n 'one-row': rowSpan == 1,\n disable: disabled\n }\">\n <ng-container *ngIf=\"src != ''; then withImg; else noImg\"></ng-container>\n <ng-template #withImg>\n <button *ngIf=\"!disabled\" mat-button (click)=\"deleteFile()\"\n class=\"pep-button icon-button weak md delete\" tabindex=\"-1\"\n [ngClass]=\"{ 'right-alignment': xAlignment == 'right' }\">\n <mat-icon>\n <pep-icon name=\"system_bin\"></pep-icon>\n </mat-icon>\n </button>\n <div class=\"pep-file-preview\" (click)=\"onElementClicked($event)\">\n <img *ngIf=\"controlType === 'image'\" #imagePreview [src]=\"src\" class=\"pep-file-preview-img\"\n [style.max-height]=\"fieldHeight\" (error)=\"errorHandler($event)\" [alt]=\"label\"\n [ngClass]=\"['text-align-' + xAlignment]\" />\n <div *ngIf=\"controlType === 'attachment'\" class=\"ellipsis pep-file-message\">\n <a *ngIf=\"src != ''\" href=\"javascript:void(0)\">\n <mat-icon class=\"pep-spacing-element\">\n <pep-icon name=\"system_attach\"></pep-icon>\n </mat-icon>\n <span class=\"body-sm ellipsis\">{{ 'FILE.SEE_ORIGINAL' | translate }}</span>\n </a>\n </div>\n </div>\n </ng-template>\n <ng-template #noImg>\n <div class=\"ellipsis pep-file-message\">\n <mat-icon *ngIf=\"controlType === 'attachment'\" class=\"pep-spacing-element\">\n <pep-icon name=\"system_attach\"></pep-icon>\n </mat-icon>\n <mat-icon *ngIf=\"controlType === 'image'\" class=\"pep-spacing-element\">\n <pep-icon name=\"system_file_upload_cloud\"></pep-icon>\n </mat-icon>\n <span class=\"body-sm ellipsis\" *ngIf=\"progress == 0\">\n {{ (disabled ? (controlType === 'image' ? 'MESSAGES.INFO_MISSING_IMAGE' :\n 'MESSAGES.INFO_MISSING_FILE') : 'FILE.HINT') | translate }}\n </span>\n <!-- <p *ngIf=\"progress != 0\" class=\"pull-left flip\"\n [ngClass]=\"{ 'pull-left flip': rowSpan == 1, image: controlType == 'image', attachment: controlType == 'attachment' }\">\n {{ 'FILE.UPLOADING_FILE' | translate }}\n </p> -->\n </div>\n <ng-container *ngIf=\"!disabled\">\n <input *ngIf=\"handleActions\" #fileInput id=\"pep-file-{{ key }}\" tabindex=\"-1\" type=\"file\" accept=\"acceptedExtensions\"\n ng2FileSelect [uploader]=\"uploader\" autocomplete=\"off\" />\n \n <button *ngIf=\"progress != 0\" mat-button class=\"pep-button icon-button weak md delete\"\n [ngClass]=\"{ 'right-alignment': xAlignment == 'right' }\">\n <mat-icon>\n <pep-icon name=\"system_processing\" [spin]=\"true\">\n </pep-icon>\n </mat-icon>\n </button>\n </ng-container>\n </ng-template>\n </div>\n <input [id]=\"key\" matInput [name]=\"key\" [formControlName]=\"key\" class=\"hidden-input\" type=\"text\"\n [value]=\"src\" (click)=\"onClick_ChooseFile($event)\" (keypress)=\"onKeyPress_ChooseFile($event)\"\n autocomplete=\"off\" />\n </div>\n\n <mat-error><span class=\"body-xs\"\n [title]=\"mandatory && src.length == 0 ? ('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label }) : ('MESSAGES.ERROR_IS_NOT_VALID' | translate: { field: label })\"\n [innerText]=\"mandatory && src.length == 0 ? ('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label }) : ('MESSAGES.ERROR_IS_NOT_VALID' | translate: { field: label })\"></span>\n </mat-error>\n </mat-form-field>\n</ng-template>\n\n<ng-container *ngIf=\"layoutType === 'form'\">\n <ng-container *ngTemplateOutlet=\"pepTemplate\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"layoutType === 'card'\">\n <!-- <ng-container *ngTemplateOutlet=\"pepTemplate\"></ng-container> -->\n</ng-container>\n\n<ng-container *ngIf=\"layoutType === 'table'\">\n <!-- <ng-container *ngTemplateOutlet=\"pepTemplate\"></ng-container> -->\n</ng-container>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { FileUploadModule } from 'ng2-file-upload';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconSystemBin,\n pepIconSystemAttach,\n pepIconSystemFileUploadCloud,\n pepIconSystemProcessing,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\n\nimport { PepFilesUploaderComponent } from './files-uploader.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n // Material modules,\n MatCommonModule,\n MatButtonModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n // External modules\n FileUploadModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepIconModule,\n PepDialogModule,\n ],\n exports: [PepFilesUploaderComponent],\n declarations: [PepFilesUploaderComponent],\n})\nexport class PepFilesUploaderModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconSystemBin,\n pepIconSystemAttach,\n pepIconSystemFileUploadCloud,\n pepIconSystemProcessing,\n ]);\n }\n}\n","/*\n * Public API Surface of ngx-lib/files-uploader\n */\nexport * from './files-uploader.module';\nexport * from './files-uploader.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i11","i1"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;MA6Ca,yBAAyB,CAAA;AA8ClC,IAAA,WAAA,CACY,aAA+B,EAC/B,oBAA6C,EAC7C,WAA2B,EAC3B,SAA2B,EAAA;AAH3B,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;AAC/B,QAAA,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAyB;AAC7C,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAgB;AAC3B,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;AAjD9B,QAAA,IAAG,CAAA,GAAA,GAAG,EAAE,CAAC;AACT,QAAA,IAAG,CAAA,GAAA,GAAG,EAAE,CAAC;AACT,QAAA,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;AACX,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAClB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB,QAAA,IAAU,CAAA,UAAA,GAA2B,4BAA4B,CAAC;AAEnE,QAAA,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;AASZ,QAAA,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;AACjB,QAAA,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;AAGhB,QAAA,IAAkB,CAAA,kBAAA,GAAG,uCAAuC,CAAC;AAC7D,QAAA,IAAU,CAAA,UAAA,GAAkB,MAAM,CAAC;AAEnC,QAAA,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;;AAGjB,QAAA,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;QAG9B,IAAA,CAAA,UAAU,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAG1D,QAAA,IAAA,CAAA,UAAU,GAAsC,IAAI,YAAY,EAAuB,CAAC;AAExF,QAAA,IAAA,CAAA,YAAY,GAAsC,IAAI,YAAY,EAAuB,CAAC;AAO1F,QAAA,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;;AAEb,QAAA,IAAU,CAAA,UAAA,GAAQ,IAAI,CAAC;AAQnB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9D,IAAI,CAAC,QAAQ,CAAC,iBAAiB,GAAG,CAAC,IAAI,KAAI;;AACvC,YAAA,IAAI,MAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,EAAE;gBAC/B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;AAC3C,aAAA;AACD,YAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;AAEhC,YAAA,MAAM,CAAC,MAAM,GAAG,CAAC,KAAU,KAAI;;;AAG3B,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnD,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACvD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC;AAChD,gBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AAC9B,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAC7B,OAAO,EACP,OAAO,EACP,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,WAAW,CACnB,CAAC;gBACF,IAAI,QAAQ,KAAK,EAAE,EAAE;AACjB,oBAAA,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC;;;AAGnB,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;wBACjB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;wBAC3C,OAAO;wBACP,QAAQ;wBACR,OAAO;AACV,qBAAA,CAAC,CAAC;AACN,iBAAA;AAAM,qBAAA;oBACH,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAChC,uBAAuB,CAC1B,CAAC;AACF,oBAAA,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC;wBAC3B,KAAK;AACL,wBAAA,OAAO,EAAE,QAAQ;AACpB,qBAAA,CAAC,CAAC;AACH,oBAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC9C,iBAAA;AACL,aAAC,CAAC;AACF,YAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAGrC,SAAC,CAAC;KACL;IAzFD,IACI,OAAO,CAAC,KAAK,EAAA;AACb,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB;AACD,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAqFD,IAAA,WAAW,CAAC,QAAQ,EAAA;;AAEhB,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,QAAA,OAAO,QAAQ,CAAC;KACnB;AAED,IAAA,gBAAgB,CAAC,QAAQ,EAAA;;AAErB,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrF,QAAA,OAAO,SAAS,CAAC;KACpB;IAEO,cAAc,GAAA;AAClB,QAAA,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC;YAC9B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,GAAG;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC1B,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;KACvE;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;YACpB,IAAI,CAAC,cAAc,EAAE,CAAC;AACzB,SAAA;AACD;;AAEG;KACN;IAED,WAAW,CACP,OAAO,EACP,aAAa,EACb,kBAAkB,EAClB,WAAW,GAAG,CAAC,EAAA;QAEf,MAAM,IAAI,GAAQ,OAAO,CAAC;QAC1B,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,OAAO,GAAG,EAAE,CAAC;;AAEjB,QAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;AAC9D,YAAA,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC9C,SAAA;AAAM,aAAA;AACH,YAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;AACxB,SAAA;;AAED,QAAA,MAAM,MAAM,GACR,QAAQ,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;AACxE,QAAA,MAAM,WAAW,GACb,kBAAkB,KAAK,EAAE;YACzB,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,WAAW,EAAE;YACd,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAC5B,wCAAwC,EACxC;AACI,gBAAA,aAAa,EACT,gCAAgC;oBAChC,aAAa;oBACb,UAAU;AACjB,aAAA,CACJ,CAAC;AACL,SAAA;aAAM,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAC5B,mCAAmC,EACnC;AACI,gBAAA,QAAQ,EACJ,gCAAgC;oBAChC,WAAW,CAAC,QAAQ,EAAE;oBACtB,UAAU;AACjB,aAAA,CACJ,CAAC;AACL,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAClB;AAED,IAAA,iBAAiB,CAAC,YAAoB,EAAA;AAClC,QAAA,IAAI,QAAgB,CAAC;QAErB,IAAI;AACA,YAAA,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE,YAAA,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;AACxC,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;YACR,QAAQ,GAAG,CAAC,CAAC,CAAC;AACjB,SAAA;QAED,OAAO,QAAQ,CAAC;KACnB;;;;;;;;;;AAYD,IAAA,YAAY,CAAC,KAAK,EAAA;AACd,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAChD,eAAe,CAAC,IAAI,CACvB,CAAC;AACF,QAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;KACjE;AAEO,IAAA,WAAW,CAAC,QAAQ,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;KACrC;IAED,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC3B,QAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAEpB,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC;AAEtB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;;;;KAO9B;AAED,IAAA,gBAAgB,CAAC,KAAK,EAAA;AAClB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACnB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,KAAK,CAAC,KAAK;AAC1B,SAAA,CAAC,CAAC;KACN;AAED,IAAA,kBAAkB,CAAC,KAAK,EAAA;;QACpB,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,MAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,EAAE;AAC/B,gBAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACxC,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AAC1B,SAAA;KACJ;AAED,IAAA,qBAAqB,CAAC,KAAK,EAAA;;QACvB,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,MAAM,CAAC,GAAG,KAAsB,CAAC;AAEjC,YAAA,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AAClC,gBAAA,IAAI,MAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,EAAE;AAC/B,oBAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACxC,iBAAA;AACJ,aAAA;YACD,CAAC,CAAC,cAAc,EAAE,CAAC;AACtB,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AAC1B,SAAA;KACJ;;sHAnQQ,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,srBC7CtC,gmKAmFe,EAAA,MAAA,EAAA,CAAA,klwBAAA,EAAA,4sqCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;0HDtCF,yBAAyB,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;+BACI,oBAAoB,EAAA,eAAA,EAGb,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,gmKAAA,EAAA,MAAA,EAAA,CAAA,klwBAAA,EAAA,4sqCAAA,CAAA,EAAA,CAAA;;kBAElD,UAAU;yMAEE,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAIF,OAAO,EAAA,CAAA;sBADV,KAAK;gBAQG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAGG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAGN,UAAU,EAAA,CAAA;sBADT,MAAM;gBAIP,UAAU,EAAA,CAAA;sBADT,MAAM;gBAGP,YAAY,EAAA,CAAA;sBADX,MAAM;gBAGiB,SAAS,EAAA,CAAA;sBAAhC,SAAS;uBAAC,WAAW,CAAA;gBACK,YAAY,EAAA,CAAA;sBAAtC,SAAS;uBAAC,cAAc,CAAA;;;MEtChB,sBAAsB,CAAA;AAC/B,IAAA,WAAA,CAAoB,eAAgC,EAAA;AAAhC,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAChD,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;YAC/B,gBAAgB;YAChB,mBAAmB;YACnB,4BAA4B;YAC5B,uBAAuB;AAC1B,SAAA,CAAC,CAAC;KACN;;mHARQ,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;oHAAtB,sBAAsB,EAAA,YAAA,EAAA,CAFhB,yBAAyB,CAAA,EAAA,OAAA,EAAA,CAhBpC,YAAY;QACZ,mBAAmB;;QAEnB,eAAe;QACf,eAAe;QACf,kBAAkB;QAClB,cAAc;QACd,aAAa;;QAEb,gBAAgB;;QAEhB,eAAe;QACf,aAAa;QACb,eAAe,aAET,yBAAyB,CAAA,EAAA,CAAA,CAAA;AAG1B,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAlB3B,YAAY;QACZ,mBAAmB;;QAEnB,eAAe;QACf,eAAe;QACf,kBAAkB;QAClB,cAAc;QACd,aAAa;;QAEb,gBAAgB;;QAEhB,eAAe;QACf,aAAa;QACb,eAAe,CAAA,EAAA,CAAA,CAAA;2FAKV,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBApBlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,mBAAmB;;wBAEnB,eAAe;wBACf,eAAe;wBACf,kBAAkB;wBAClB,cAAc;wBACd,aAAa;;wBAEb,gBAAgB;;wBAEhB,eAAe;wBACf,aAAa;wBACb,eAAe;AAClB,qBAAA;oBACD,OAAO,EAAE,CAAC,yBAAyB,CAAC;oBACpC,YAAY,EAAE,CAAC,yBAAyB,CAAC;iBAC5C,CAAA;;;AC5CD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"pepperi-addons-ngx-lib-files-uploader.mjs","sources":["../../../projects/ngx-lib/files-uploader/files-uploader.component.ts","../../../projects/ngx-lib/files-uploader/files-uploader.component.html","../../../projects/ngx-lib/files-uploader/files-uploader.module.ts","../../../projects/ngx-lib/files-uploader/public-api.ts","../../../projects/ngx-lib/files-uploader/pepperi-addons-ngx-lib-files-uploader.ts"],"sourcesContent":["import { Observable } from 'rxjs';\nimport {\n Component,\n OnInit,\n Injectable,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n Optional,\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { FileUploader } from 'ng2-file-upload';\nimport { FormGroup } from '@angular/forms';\nimport {\n PepFileService,\n PepLayoutType,\n PepCustomizationService,\n PepHorizontalAlignment,\n DEFAULT_HORIZONTAL_ALIGNMENT,\n IPepFieldClickEvent,\n PepFieldBase,\n} from '@pepperi-addons/ngx-lib';\nimport {\n PepDialogService,\n PepDialogData,\n} from '@pepperi-addons/ngx-lib/dialog';\nimport { pepIconNoImage2 } from '@pepperi-addons/ngx-lib/icon';\n\nexport interface IPepFileChangeEvent {\n acceptedExtensions?: string;\n fileStr?: string;\n fileName?: string;\n fileExt?: string;\n fileSize?: number;\n}\n\n@Component({\n selector: 'pep-files-uploader',\n templateUrl: './files-uploader.component.html',\n styleUrls: ['./files-uploader.component.scss', './files-uploader.component.theme.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n@Injectable()\nexport class PepFilesUploaderComponent implements OnInit {\n @Input() key = '';\n @Input() src = '';\n @Input() label = '';\n @Input() mandatory = false;\n @Input() disabled = false;\n @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\n\n private _rowSpan = 1;\n @Input()\n set rowSpan(value) {\n this._rowSpan = value;\n }\n get rowSpan(): number {\n return this._rowSpan;\n }\n\n @Input() controlType = '';\n @Input() sizeLimitMB = 5;\n\n @Input() form: FormGroup;\n @Input() acceptedExtensions = 'bmp,jpg,jpeg,png,gif,ico,svg,html,css';\n @Input() layoutType: PepLayoutType = 'form';\n\n @Input() fieldHeight = '';\n \n // To know if handle actions or just raise them as output\n @Input() handleActions = true;\n \n @Output()\n chooseFile: EventEmitter<void> = new EventEmitter<void>(); // This event will fired only when handleActions Input is false\n \n @Output()\n fileChange: EventEmitter<IPepFileChangeEvent> = new EventEmitter<IPepFileChangeEvent>();\n @Output()\n elementClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n\n @ViewChild('fileInput') fileInput: any;\n @ViewChild('imagePreview') imagePreview: any;\n\n // multiple = false;\n uploader: FileUploader;\n progress = 0;\n // response: string;\n intervalID: any = null;\n\n constructor(\n private dialogService: PepDialogService,\n private customizationService: PepCustomizationService,\n private fileService: PepFileService,\n private translate: TranslateService\n ) {\n this.uploader = new FileUploader({ removeAfterUpload: true });\n\n this.uploader.onAfterAddingFile = (item) => {\n if (this.fileInput?.nativeElement) {\n this.fileInput.nativeElement.value = '';\n }\n const reader = new FileReader();\n\n reader.onload = (event: any) => {\n // fix for DI-19376 - when there is a dot on the file name (not include the extantion one)\n //const fileNameArray = item._file.name.split('.');\n const fileName = this.getFileName(item._file.name); //fileNameArray[0];\n const fileExt = this.getFileExtension(item._file.name); //fileNameArray[1]; // item._file.name.split('.').pop();\n const fileSize = item._file.size;\n const target = event.target || event.srcElement;\n const fileStr = target.result;\n\n const errorMsg = this.isValidFile(\n fileStr,\n fileExt,\n this.acceptedExtensions,\n this.sizeLimitMB\n );\n if (errorMsg === '') {\n this.src = fileStr;\n // this.setIntervalX(25, 75);\n // this.setProgress(5);\n this.fileChange.emit({\n acceptedExtensions: this.acceptedExtensions,\n fileStr,\n fileName,\n fileExt,\n fileSize,\n });\n } else {\n const title = this.translate.instant(\n 'MESSAGES.TITLE_NOTICE'\n );\n const data = new PepDialogData({\n title,\n content: errorMsg,\n });\n this.dialogService.openDefaultDialog(data);\n }\n };\n reader.readAsDataURL(item._file);\n\n \n };\n }\n\n getFileName(filename){\n // get file name\n const fileName = filename.substring(0,filename.lastIndexOf('.'));\n return fileName;\n }\n\n getFileExtension(filename){\n // get file extension\n const extension = filename.substring(filename.lastIndexOf('.') + 1, filename.length);\n return extension;\n }\n \n private setDefaultForm(): void {\n const pepField = new PepFieldBase({\n key: this.key,\n value: this.src,\n mandatory: this.mandatory,\n disabled: this.disabled,\n });\n this.form = this.customizationService.getDefaultFromGroup(pepField);\n }\n\n ngOnInit(): void {\n if (this.form === null) {\n this.setDefaultForm();\n }\n /*this.uploader.onCompleteAll = () => {\n this.fileInput.nativeElement.value = '';\n }*/\n }\n\n isValidFile(\n fileStr,\n fileExtension,\n acceptedExtensions,\n sizeLimitMB = 5\n ): string {\n const file: any = fileStr;\n let fileSize = 0;\n let content = '';\n // check if got file as Base64\n if (typeof fileStr === 'string' && fileStr.indexOf('data:') > -1) {\n fileSize = this.getBase64FileSize(fileStr);\n } else {\n fileSize = file.size;\n }\n // check the size and the extension\n const sizeOK: boolean =\n fileSize !== -1 && file != null && fileSize < sizeLimitMB * 1048576;\n const extensionOK =\n acceptedExtensions === '' ||\n acceptedExtensions.indexOf(fileExtension.toLowerCase()) !== -1;\n if (!extensionOK) {\n content = this.translate.instant(\n 'MESSAGES.ERROR_FAILD_TO_LOAD_EXTENSION',\n {\n fileExtension:\n \"<label class='uppercase bold'>\" +\n fileExtension +\n '</label>',\n }\n );\n } else if (!sizeOK) {\n content = this.translate.instant(\n 'MESSAGES.ERROR_FAILD_TO_LOAD_SIZE',\n {\n fileSize:\n \"<label class='uppercase bold'>\" +\n sizeLimitMB.toString() +\n '</label>',\n }\n );\n }\n return content;\n }\n\n getBase64FileSize(base64String: string): number {\n let fileSize: number;\n\n try {\n base64String = base64String.substr(base64String.indexOf(',') + 1);\n fileSize = atob(base64String).length;\n } catch (e) {\n fileSize = -1;\n }\n\n return fileSize; // return size in bytes;\n }\n\n // setIntervalX(delay, repetitions): void {\n // let x = 0;\n // this.intervalID = window.setInterval(() => {\n // // this.setProgress(this.progress + 5);\n // if (++x === repetitions || this.uploader.progress >= 100) {\n // window.clearInterval(this.intervalID);\n // }\n // }, delay);\n // }\n\n errorHandler(event): void {\n event.target.src = this.fileService.getSvgAsImageSrc(\n pepIconNoImage2.data\n );\n event.target.title = this.translate.instant('IMAGE.NO_IMAGE');\n }\n\n private setProgress(progress): void {\n this.progress = progress;\n this.uploader.progress = progress;\n }\n\n deleteFile(): void {\n this.uploader.clearQueue();\n window.clearInterval(this.intervalID);\n this.setProgress(0);\n\n const empltValue = '';\n this.src = empltValue;\n\n this.fileChange.emit(null);\n }\n\n onElementClicked(event): void {\n this.elementClick.emit({\n key: this.key,\n controlType: this.controlType,\n eventWhich: event.which,\n });\n }\n\n onClick_ChooseFile(event): void {\n if (this.handleActions) {\n if (this.fileInput?.nativeElement) {\n this.fileInput.nativeElement.click();\n }\n } else {\n this.chooseFile.emit();\n }\n }\n\n onKeyPress_ChooseFile(event): void {\n if (this.handleActions) {\n const e = event as KeyboardEvent;\n\n if ([13, 32].indexOf(e.which) !== -1) {\n if (this.fileInput?.nativeElement) {\n this.fileInput.nativeElement.click();\n }\n }\n e.preventDefault();\n } else {\n this.chooseFile.emit();\n }\n }\n}\n","<ng-template #pepTemplate>\n <mat-form-field [formGroup]=\"form\" appearance=\"outline\">\n <div class=\"pep-file-wrapper\">\n <div class=\"pep-file body-sm\" [style.height]=\"fieldHeight\" [ngClass]=\"{\n 'one-row': rowSpan == 1,\n disable: disabled\n }\">\n <ng-container *ngIf=\"src != ''; then withImg; else noImg\"></ng-container>\n <ng-template #withImg>\n <button *ngIf=\"!disabled\" mat-button (click)=\"deleteFile()\"\n class=\"pep-button icon-button weak md delete\" tabindex=\"-1\"\n [ngClass]=\"{ 'right-alignment': xAlignment == 'right' }\">\n <mat-icon>\n <pep-icon name=\"system_bin\"></pep-icon>\n </mat-icon>\n </button>\n <div class=\"pep-file-preview\" (click)=\"onElementClicked($event)\">\n <img *ngIf=\"controlType === 'image'\" #imagePreview [src]=\"src\" class=\"pep-file-preview-img\"\n [style.max-height]=\"fieldHeight\" (error)=\"errorHandler($event)\" [alt]=\"label\"\n [ngClass]=\"['text-align-' + xAlignment]\" />\n <div *ngIf=\"controlType === 'attachment'\" class=\"ellipsis pep-file-message\">\n <a *ngIf=\"src != ''\" href=\"javascript:void(0)\">\n <mat-icon class=\"pep-spacing-element\">\n <pep-icon name=\"system_attach\"></pep-icon>\n </mat-icon>\n <span class=\"body-sm ellipsis\">{{ 'FILE.SEE_ORIGINAL' | translate }}</span>\n </a>\n </div>\n </div>\n </ng-template>\n <ng-template #noImg>\n <div class=\"ellipsis pep-file-message\">\n <mat-icon *ngIf=\"controlType === 'attachment'\" class=\"pep-spacing-element\">\n <pep-icon name=\"system_attach\"></pep-icon>\n </mat-icon>\n <mat-icon *ngIf=\"controlType === 'image'\" class=\"pep-spacing-element\">\n <pep-icon name=\"system_file_upload_cloud\"></pep-icon>\n </mat-icon>\n <span class=\"body-sm ellipsis\" *ngIf=\"progress == 0\">\n {{ (disabled ? (controlType === 'image' ? 'MESSAGES.INFO_MISSING_IMAGE' :\n 'MESSAGES.INFO_MISSING_FILE') : 'FILE.HINT') | translate }}\n </span>\n <!-- <p *ngIf=\"progress != 0\" class=\"pull-left flip\"\n [ngClass]=\"{ 'pull-left flip': rowSpan == 1, image: controlType == 'image', attachment: controlType == 'attachment' }\">\n {{ 'FILE.UPLOADING_FILE' | translate }}\n </p> -->\n </div>\n <ng-container *ngIf=\"!disabled\">\n <input *ngIf=\"handleActions\" #fileInput id=\"pep-file-{{ key }}\" tabindex=\"-1\" type=\"file\" accept=\"acceptedExtensions\"\n ng2FileSelect [uploader]=\"uploader\" autocomplete=\"off\" />\n \n <button *ngIf=\"progress != 0\" mat-button class=\"pep-button icon-button weak md delete\"\n [ngClass]=\"{ 'right-alignment': xAlignment == 'right' }\">\n <mat-icon>\n <pep-icon name=\"system_processing\" [spin]=\"true\">\n </pep-icon>\n </mat-icon>\n </button>\n </ng-container>\n </ng-template>\n </div>\n <input [id]=\"key\" matInput [name]=\"key\" [formControlName]=\"key\" class=\"hidden-input\" type=\"text\"\n [value]=\"src\" (click)=\"onClick_ChooseFile($event)\" (keypress)=\"onKeyPress_ChooseFile($event)\"\n autocomplete=\"off\" />\n </div>\n\n <mat-error><span class=\"body-xs\"\n [title]=\"mandatory && src.length == 0 ? ('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label }) : ('MESSAGES.ERROR_IS_NOT_VALID' | translate: { field: label })\"\n [innerText]=\"mandatory && src.length == 0 ? ('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label }) : ('MESSAGES.ERROR_IS_NOT_VALID' | translate: { field: label })\"></span>\n </mat-error>\n </mat-form-field>\n</ng-template>\n\n<ng-container *ngIf=\"layoutType === 'form'\">\n <ng-container *ngTemplateOutlet=\"pepTemplate\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"layoutType === 'card'\">\n <!-- <ng-container *ngTemplateOutlet=\"pepTemplate\"></ng-container> -->\n</ng-container>\n\n<ng-container *ngIf=\"layoutType === 'table'\">\n <!-- <ng-container *ngTemplateOutlet=\"pepTemplate\"></ng-container> -->\n</ng-container>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { FileUploadModule } from 'ng2-file-upload';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconSystemBin,\n pepIconSystemAttach,\n pepIconSystemFileUploadCloud,\n pepIconSystemProcessing,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\n\nimport { PepFilesUploaderComponent } from './files-uploader.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n // Material modules,\n MatCommonModule,\n MatButtonModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n // External modules\n FileUploadModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepIconModule,\n PepDialogModule,\n ],\n exports: [PepFilesUploaderComponent],\n declarations: [PepFilesUploaderComponent],\n})\nexport class PepFilesUploaderModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconSystemBin,\n pepIconSystemAttach,\n pepIconSystemFileUploadCloud,\n pepIconSystemProcessing,\n ]);\n }\n}\n","/*\n * Public API Surface of ngx-lib/files-uploader\n */\nexport * from './files-uploader.module';\nexport * from './files-uploader.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i11","i1"],"mappings":"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"}
|
|
@@ -1700,6 +1700,44 @@ class PepFileService {
|
|
|
1700
1700
|
const blob = new Blob(byteArrays, { type: contentType });
|
|
1701
1701
|
return blob;
|
|
1702
1702
|
}
|
|
1703
|
+
getBase64FileSize(base64String) {
|
|
1704
|
+
let fileSize;
|
|
1705
|
+
try {
|
|
1706
|
+
base64String = base64String.slice(base64String.indexOf(',') + 1);
|
|
1707
|
+
fileSize = atob(base64String).length;
|
|
1708
|
+
}
|
|
1709
|
+
catch (e) {
|
|
1710
|
+
fileSize = -1;
|
|
1711
|
+
}
|
|
1712
|
+
return fileSize; // return size in bytes;
|
|
1713
|
+
}
|
|
1714
|
+
fileToBase64(file) {
|
|
1715
|
+
return new Promise((resolve, reject) => {
|
|
1716
|
+
const reader = new FileReader();
|
|
1717
|
+
reader.readAsDataURL(file);
|
|
1718
|
+
reader.onload = () => resolve(reader.result);
|
|
1719
|
+
reader.onerror = (error) => reject(error);
|
|
1720
|
+
});
|
|
1721
|
+
}
|
|
1722
|
+
isValidFileExtension(fileExtension, acceptedExtensions) {
|
|
1723
|
+
const extensionOK = acceptedExtensions === '' ||
|
|
1724
|
+
acceptedExtensions.indexOf(fileExtension.toLowerCase()) !== -1;
|
|
1725
|
+
return extensionOK;
|
|
1726
|
+
}
|
|
1727
|
+
isValidFileSize(fileStr, sizeLimitMB = 5) {
|
|
1728
|
+
const file = fileStr;
|
|
1729
|
+
let fileSize = 0;
|
|
1730
|
+
// check if got file as Base64
|
|
1731
|
+
if (typeof fileStr === 'string' && fileStr.indexOf('data:') > -1) {
|
|
1732
|
+
fileSize = this.getBase64FileSize(fileStr);
|
|
1733
|
+
}
|
|
1734
|
+
else {
|
|
1735
|
+
fileSize = file.size;
|
|
1736
|
+
}
|
|
1737
|
+
// check the size and the extension
|
|
1738
|
+
const sizeOK = fileSize !== -1 && file != null && fileSize < sizeLimitMB * 1048576;
|
|
1739
|
+
return sizeOK;
|
|
1740
|
+
}
|
|
1703
1741
|
getAssetsPath(assetsDomain = '', libName = 'ngx-lib') {
|
|
1704
1742
|
const concatChar = assetsDomain === '' || assetsDomain.endsWith('/') ? '' : '/';
|
|
1705
1743
|
return `${assetsDomain}${concatChar}assets/${libName}/`;
|