@sd-angular/core 1.3.54 → 1.3.56
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/bundles/sd-angular-core-common.umd.js +131 -0
- package/bundles/sd-angular-core-common.umd.js.map +1 -1
- package/bundles/sd-angular-core-common.umd.min.js +1 -1
- package/bundles/sd-angular-core-common.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-export.umd.js +186 -152
- package/bundles/sd-angular-core-export.umd.js.map +1 -1
- package/bundles/sd-angular-core-export.umd.min.js +1 -1
- package/bundles/sd-angular-core-export.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-pdf.umd.js +3 -22
- package/bundles/sd-angular-core-pdf.umd.js.map +1 -1
- package/bundles/sd-angular-core-pdf.umd.min.js +2 -2
- package/bundles/sd-angular-core-pdf.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-upload-excel.umd.js +1 -1
- package/bundles/sd-angular-core-upload-excel.umd.js.map +1 -1
- package/bundles/sd-angular-core-upload-excel.umd.min.js +1 -1
- package/bundles/sd-angular-core-upload-excel.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-zip.umd.js +3 -21
- package/bundles/sd-angular-core-zip.umd.js.map +1 -1
- package/bundles/sd-angular-core-zip.umd.min.js +2 -2
- package/bundles/sd-angular-core-zip.umd.min.js.map +1 -1
- package/common/src/lib/typings/utility.extension.d.ts +18 -0
- package/common/src/public-api.d.ts +1 -0
- package/esm2015/common/src/lib/typings/utility.extension.js +122 -0
- package/esm2015/common/src/public-api.js +2 -1
- package/esm2015/export/src/lib/export.model.js +1 -6
- package/esm2015/export/src/lib/export.service.js +83 -67
- package/esm2015/pdf/src/lib/pdf.service.js +4 -22
- package/esm2015/upload-excel/src/lib/upload-excel.component.js +2 -2
- package/esm2015/zip/src/lib/zip.service.js +4 -21
- package/export/sd-angular-core-export.metadata.json +1 -1
- package/export/src/lib/export.model.d.ts +0 -5
- package/export/src/lib/export.service.d.ts +1 -11
- package/fesm2015/sd-angular-core-common.js +122 -1
- package/fesm2015/sd-angular-core-common.js.map +1 -1
- package/fesm2015/sd-angular-core-export.js +81 -69
- package/fesm2015/sd-angular-core-export.js.map +1 -1
- package/fesm2015/sd-angular-core-pdf.js +3 -21
- package/fesm2015/sd-angular-core-pdf.js.map +1 -1
- package/fesm2015/sd-angular-core-upload-excel.js +1 -1
- package/fesm2015/sd-angular-core-upload-excel.js.map +1 -1
- package/fesm2015/sd-angular-core-zip.js +3 -20
- package/fesm2015/sd-angular-core-zip.js.map +1 -1
- package/package.json +1 -1
- package/{sd-angular-core-1.3.54.tgz → sd-angular-core-1.3.56.tgz} +0 -0
- package/zip/sd-angular-core-zip.metadata.json +1 -1
|
@@ -262,7 +262,7 @@ export class SdUploadExcel {
|
|
|
262
262
|
continue;
|
|
263
263
|
}
|
|
264
264
|
}
|
|
265
|
-
if (!
|
|
265
|
+
if (!validation.data[column.field].error && column.errorValidation) {
|
|
266
266
|
const error = yield column.errorValidation(item, item[column.field], idx);
|
|
267
267
|
if (error) {
|
|
268
268
|
validation.data[column.field].error = `${error}`;
|
|
@@ -509,4 +509,4 @@ SdUploadExcel.propDecorators = {
|
|
|
509
509
|
modal: [{ type: ViewChild, args: ['modal',] }],
|
|
510
510
|
paginator: [{ type: ViewChild, args: [MatPaginator,] }]
|
|
511
511
|
};
|
|
512
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWV4Y2VsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdXBsb2FkLWV4Y2VsLyIsInNvdXJjZXMiOlsic3JjL2xpYi91cGxvYWQtZXhjZWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFFeEIsT0FBTyxFQUNMLGVBQWUsRUFDaEIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2pCLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUNMLGtCQUFrQixFQUNuQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3BDLE9BQU8sRUFBMkMsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFRaEUsTUFBTSxPQUFPLGFBQWE7SUEwQnhCLFlBQ1UsR0FBc0IsRUFDdEIsYUFBOEIsRUFDOUIsZ0JBQW9DLEVBQ3BDLGFBQThCLEVBQzlCLGNBQWtDLEVBQ2xDLGNBQWdDO1FBTGhDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUM5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBQ3BDLGtCQUFhLEdBQWIs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QyxLQUFLLEVBQUUsQ0FBQyxDQUFDOzRCQUN6RyxTQUFTO3lCQUNWO3dCQUNELElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFOzRCQUN6RSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7NEJBQzVHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLGNBQWMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQzs0QkFDekcsU0FBUzt5QkFDVjtxQkFDRjt5QkFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO3dCQUNqQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxFQUFFOzRCQUM1RCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQzt5QkFDMUI7d0JBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRTs0QkFDM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUM7eUJBQzFCO3dCQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTs0QkFDdEIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNsQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtnQ0FDdkQsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsU0FBUyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQztnQ0FDOUUsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLEtBQUssY0FBYyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDOzZCQUMxRztpQ0FBTTtnQ0FDTCxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7b0NBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUM7aUNBQ2pEOzZCQUNGO3lCQUNGO3FCQUNGO3lCQUFNLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7d0JBQ25DLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRTs0QkFDOUcsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDOzRCQUNoRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksTUFBTSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsS0FBSyxjQUFjLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7NEJBQ3pHLFNBQVM7eUJBQ1Y7d0JBQ0QsSUFBSSxNQUFNLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRTs0QkFDOUgsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLENBQUMsY0FBYyxDQUFDLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDOzRCQUNySCxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksTUFBTSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsS0FBSyxjQUFjLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7NEJBQ3pHLFNBQVM7eUJBQ1Y7cUJBQ0Y7eUJBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTt3QkFDekYsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUM7d0JBQ2hDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQy9CLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7NEJBQ2hDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsRUFBRTtnQ0FDN0IsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztnQ0FDaEcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLEtBQUssY0FBYyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dDQUN6RyxTQUFTOzZCQUNWOzRCQUNELElBQUksSUFBSSxLQUFLLE1BQU0sSUFBSSxDQUFDLGdEQUFBLElBQUksRUFBYyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0NBQ3RELFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7Z0NBQ2hHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLGNBQWMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztnQ0FDekcsU0FBUzs2QkFDVjs0QkFDRCxJQUFJLElBQUksS0FBSyxNQUFNLElBQUksQ0FBQyxnREFBQSxJQUFJLEVBQWMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dDQUN0RCxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO2dDQUNoRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksTUFBTSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsS0FBSyxjQUFjLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Z0NBQ3pHLFNBQVM7NkJBQ1Y7NEJBQ0QsSUFBSSxJQUFJLEtBQUssVUFBVSxJQUFJLENBQUMsb0RBQUEsSUFBSSxFQUFrQixNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0NBQzlELFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7Z0NBQ2hHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLGNBQWMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztnQ0FDekcsU0FBUzs2QkFDVjs0QkFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQzt5QkFDekY7d0JBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7NEJBQzFELFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7NEJBQzVGLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLGNBQWMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQzs0QkFDekcsU0FBUzt5QkFDVjtxQkFDRjtvQkFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFO3dCQUM1QyxNQUFNLEtBQUssR0FBRyxNQUFNLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7d0JBQzFFLElBQUksS0FBSyxFQUFFOzRCQUNULFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLEtBQUssRUFBRSxDQUFDOzRCQUNqRCxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksTUFBTSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsS0FBSyxjQUFjLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7eUJBQzFHO3FCQUNGO29CQUVELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLGlCQUFpQixFQUFFO3dCQUN0RSxNQUFNLE9BQU8sR0FBRyxNQUFNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDOUUsSUFBSSxPQUFPLEVBQUU7NEJBQ1gsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxHQUFHLEdBQUcsT0FBTyxFQUFFLENBQUM7NEJBQ3JELFVBQVUsQ0FBQyxPQUFPLElBQUksWUFBWSxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLGNBQWMsT0FBTyxNQUFNLENBQUM7eUJBQzNGO3FCQUNGO2lCQUNGO2dCQUFDLE9BQU8sRUFBRSxFQUFFO29CQUNYLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUEsRUFBRSxhQUFGLEVBQUUsdUJBQUYsRUFBRSxDQUFFLE9BQU8sTUFBSSxFQUFFLGFBQUYsRUFBRSx1QkFBRixFQUFFLENBQUUsS0FBSyxDQUFBLElBQUksRUFBRSxJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUM3RixNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksTUFBTSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsS0FBSyxjQUFjLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7aUJBQzFHO2FBQ0Y7WUFDRCxVQUFVLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFBLENBQUE7UUFFRCxpQkFBUyxDQUFDLElBQWlCLEVBQUUsRUFBRTtZQUM3QixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxFQUFBO1FBRUQsbUJBQVcsQ0FBQyxJQUFpQixFQUFFLEVBQUU7WUFDL0IsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztZQUN0QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsRUFBQTtRQUVELFdBQU0sR0FBRyxHQUFHLEVBQUU7O1lBQ1osTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLDBDQUFpQixDQUFDLEdBQUcsd0NBQWUsQ0FBQztZQUMzRSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sd0NBQWUsQ0FBQyxHQUFHLHdDQUFlLENBQUM7WUFDdkUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLDBDQUFpQixDQUFDLEdBQUcsd0NBQWUsQ0FBQztZQUMzRSxNQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsd0NBQWUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3hHLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLENBQUMsQ0FBQTtRQUVELGtCQUFhLEdBQUcsQ0FBQyxTQUFxRyxFQUFFLEVBQUU7WUFDeEgsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUM1QixTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO29CQUNyRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDO29CQUN6RSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDO2dCQUMzRSxDQUFDLENBQUMsQ0FBQzthQUNKO1lBQ0QsMkNBQUEsSUFBSSxDQUFVLENBQUM7WUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQTtRQUVELFNBQUksR0FBRyxDQUFDLFVBQW1ELEtBQUssRUFBRSxFQUFFO1lBQ2xFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBQ3ZCLHlDQUFnQixTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLDJDQUFBLElBQUksQ0FBVSxDQUFDO1FBQ2pCLENBQUMsQ0FBQTtRQUVELHFCQUFnQixHQUFHLEdBQVMsRUFBRTs7WUFDNUIsTUFBTSxNQUFNLEdBSU4sRUFBRSxDQUFDO1lBQ1QsSUFBSSxLQUFLLENBQUMsT0FBTyxPQUFDLElBQUksQ0FBQyxNQUFNLDBDQUFFLE1BQU0sQ0FBQyxFQUFFO2dCQUN0QyxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO29CQUN0QyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO3dCQUM3QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFOzRCQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDO2dDQUNWLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtnQ0FDaEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dDQUNsQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07NkJBQ3JCLENBQUMsQ0FBQzt5QkFDSjs2QkFBTTs0QkFDTCxNQUFNLENBQUMsSUFBSSxDQUFDO2dDQUNWLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtnQ0FDaEIsS0FBSyxFQUFFLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRTtnQ0FDMUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNOzZCQUNyQixDQUFDLENBQUM7eUJBQ0o7cUJBQ0Y7aUJBQ0Y7YUFDRjtZQUNELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNyRyxNQUFNLGFBQWEsR0FBcUI7Z0JBQ3RDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxVQUFVO2dCQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUNyQyxPQUFPO3dCQUNMLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSzt3QkFDbkIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO3dCQUNuQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7d0JBQ25CLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTt3QkFDekIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO3dCQUMvQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7d0JBQzNCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtxQkFDbEIsQ0FBQztnQkFDSixDQUFDLENBQUM7Z0JBQ0YsTUFBTTthQUNQLENBQUM7WUFDRixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO2dCQUNwRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFBLENBQUE7UUFFRCxXQUFNLEdBQUcsR0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDNUIsTUFBTSxPQUFPLEdBQTRCLENBQUM7b0JBQ3hDLEtBQUssRUFBRSxXQUFXO29CQUNsQixLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDeEQsS0FBSyxFQUFFLE9BQU87b0JBQ2QsUUFBUSxFQUFFLEtBQUs7aUJBQ2hCLEVBQUUsR0FBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEYsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztnQkFDOUIsT0FBTztnQkFDUCxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7O29CQUNoQyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7b0JBQ2hCLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO3dCQUM1QixNQUFNLG1DQUNELE1BQU0sS0FDVCxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sMENBQUcsTUFBTSxDQUFDLEtBQUssSUFDM0MsQ0FBQTtxQkFDRjtvQkFDRCx1Q0FDSyxNQUFNLEtBQ1QsU0FBUyxRQUFFLENBQUMsT0FBQSxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsMENBQUUsS0FBSyxZQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSwwQ0FBRSxPQUFPLENBQUEsV0FBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsMENBQUUsT0FBTyxDQUFBLENBQUMsMENBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQ2pILE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUN6QixPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksS0FDeEI7Z0JBQ0osQ0FBQyxDQUFDO2FBQ0gsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQSxDQUFBO1FBRUQsa0JBQVUsR0FBRyxFQUFFO1lBQ2IsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUM1QyxPQUFPLElBQUksT0FBTyxDQUErQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDbkUsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7b0JBQ2pDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDbEQ7Z0JBQ0QsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLElBQUksQ0FBQyxRQUFRLHdDQUF3QyxDQUFDLENBQUM7Z0JBRXRGLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDL0MsSUFBSTt3QkFDRixNQUFNLE1BQU0sR0FBaUIsR0FBRyxDQUFDLE1BQU0sQ0FBQzt3QkFDeEMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7NEJBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQzt5QkFDekQ7d0JBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDN0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQzNDLElBQUksT0FBTyxLQUFLLENBQUMsQ0FBQyxFQUFFOzRCQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7eUJBQ3REO3dCQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDbkQsSUFBSSxTQUFTLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTSxFQUFFOzRCQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUM7eUJBQ3hEO3dCQUNELE1BQU0sTUFBTSxHQUFlLElBQUksVUFBVSxFQUFFLENBQUM7d0JBQzVDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRTs0QkFDekIsTUFBTSxJQUFJLEdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7NEJBQ3JDLE1BQU0sRUFBRSxHQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDOzRCQUM5RCxNQUFNLE1BQU0sR0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUN4QyxNQUFNLEVBQUUsR0FBbUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQzs0QkFDN0MsTUFBTSxLQUFLLEdBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOzRCQUNqRSxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7NEJBQ25CLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDekIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQ25CLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0NBQ25CLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztnQ0FDbEIsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO2dDQUNyQixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO29DQUNoQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29DQUM3QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7d0NBQy9FLFFBQVEsR0FBRyxJQUFJLENBQUM7cUNBQ2pCO29DQUNELElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRTt3Q0FDeEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztxQ0FDeEM7b0NBQ0QsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxTQUFTLEVBQUU7d0NBQ3pELE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7cUNBQ3ZCO2dDQUNILENBQUMsQ0FBQyxDQUFDO2dDQUNILElBQUksUUFBUSxFQUFFO29DQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7aUNBQ3RCOzRCQUNILENBQUMsQ0FBQyxDQUFDOzRCQUNILE9BQU8sQ0FBQztnQ0FDTixLQUFLLEVBQUUsT0FBTztnQ0FDZCxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7NkJBQ3RCLENBQUMsQ0FBQzt3QkFDTCxDQUFDLENBQUM7d0JBQ0YsTUFBTSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDNUM7b0JBQUMsT0FBTyxLQUFLLEVBQUU7d0JBQ2QsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUNmO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsRUFBQTtRQUVELHVCQUFlLENBQUMsTUFBYyxFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQy9DLElBQUksQ0FBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsTUFBTSxPQUFLLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxNQUFNLENBQUEsRUFBRTtnQkFDcEMsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUNELE1BQU0sS0FBSyxHQUFHLHFVQUFxVSxDQUFDO1lBQ3BWLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDLEVBQUE7UUFFRCx1QkFBZSxDQUFDLE1BQWMsRUFBRSxLQUFhLEVBQUUsRUFBRTtZQUMvQyxJQUFJLENBQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLE1BQU0sT0FBSyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsTUFBTSxDQUFBLEVBQUU7Z0JBQ3BDLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsRUFBQTtRQUVELDJCQUFtQixDQUFDLE1BQWMsRUFBRSxLQUFhLEVBQUUsRUFBRTtZQUNuRCxJQUFJLENBQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLE1BQU0sT0FBSyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsTUFBTSxDQUFBLEVBQUU7Z0JBQ3BDLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFDRCxNQUFNLEtBQUssR0FBRyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3RCLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFDRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLGdEQUFBLElBQUksRUFBYyxZQUFZLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQzFDLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFDRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsTUFBTSxLQUFLLEdBQUcsaURBQWlELENBQUM7WUFDaEUsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLENBQUMsRUFBQTtJQXhkRCxDQUFDO0lBakJELElBQTZCLFNBQVMsQ0FBQyxTQUF1QjtRQUM1RCxJQUFJLFNBQVMsSUFBSSw2Q0FBb0IsU0FBUyxFQUFFO1lBQzlDLHVCQUFBLElBQUksY0FBYyxTQUFTLEVBQUM7WUFDNUIsNENBQW1CLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsdUNBQWMsQ0FBQyxDQUFDO1NBQ2hFO0lBQ0gsQ0FBQztJQWNELFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVztRQUNULDRDQUFtQixXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzs7O1lBOUNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQiwyNE5BQTRDOzthQUU3Qzs7O1lBNUI2QyxpQkFBaUI7WUFvQmIsZUFBZTtZQU4vRCxrQkFBa0I7WUFSbEIsZUFBZTtZQWVSLGtCQUFrQjtZQVh6QixnQkFBZ0I7OztxQkFxQmYsS0FBSztvQkFDTCxTQUFTLFNBQUMsT0FBTzt3QkFhakIsU0FBUyxTQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgJCBmcm9tICdqcXVlcnknO1xyXG5pbXBvcnQgWExTWCBmcm9tICd4bHN4JztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2ROb3RpZnlTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9ub3RpZnknO1xyXG5cclxuaW1wb3J0IHtcclxuICBTZExvYWRpbmdTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9sb2FkaW5nJztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2RUcmFuc2xhdGVTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS90cmFuc2xhdGUnO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2RNb2RhbCB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvbW9kYWwnO1xyXG5pbXBvcnQgeyBTZEV4Y2VsSXRlbSwgU2RVcGxvYWRFeGNlbE9wdGlvbiwgU2RVcGxvYWRFeGNlbFZhbGlkYXRpb24gfSBmcm9tICcuL3VwbG9hZC1leGNlbC5tb2RlbCc7XHJcbmltcG9ydCB7IFNkRXhwb3J0VGVtcGF0ZUNvbHVtbiwgU2RFeHBvcnRUZW1wbGF0ZSwgU2RFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9leHBvcnQnO1xyXG5pbXBvcnQgeyBTZENvbHVtbkhpZGRlblBpcGUgfSBmcm9tICcuL3BpcGVzL2NvbHVtbS1oaWRkZW4ucGlwZSc7XHJcbnR5cGUgQU9BID0gQXJyYXk8QXJyYXk8YW55Pj47XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLXVwbG9hZC1leGNlbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZC1leGNlbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdXBsb2FkLWV4Y2VsLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNkVXBsb2FkRXhjZWwgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBpbXBvcnRJZCA9ICdJJyArIHV1aWQudjQoKTtcclxuICBASW5wdXQoKSBvcHRpb246IFNkVXBsb2FkRXhjZWxPcHRpb247XHJcbiAgQFZpZXdDaGlsZCgnbW9kYWwnKSBtb2RhbDogU2RNb2RhbDtcclxuICBpdGVtczogU2RFeGNlbEl0ZW1bXSA9IFtdO1xyXG4gIC8vIG9yaWdpbkl0ZW1zOiBTZEV4Y2VsSXRlbVtdID0gW107XHJcbiAgaGFzRGVzY3JpcHRpb24gPSBmYWxzZTtcclxuXHJcbiAgc2hvd2luZzogJ0FMTCcgfCAnU1VDQ0VTUycgfCAnV0FSTklORycgfCAnRVJST1InID0gJ0FMTCc7XHJcbiAgZmlsdGVyZWRJdGVtczogU2RFeGNlbEl0ZW1bXSA9IFtdO1xyXG4gIHZpZXdJdGVtczogU2RFeGNlbEl0ZW1bXSA9IFtdO1xyXG4gIG51bWJlck9mU3VjY2VzcyA9IDA7XHJcbiAgbnVtYmVyT2ZFcnJvciA9IDA7XHJcbiAgbnVtYmVyT2ZXYXJuaW5nID0gMDtcclxuICBmaWxlOiBGaWxlO1xyXG4gICNwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvcikgc2V0IHBhZ2luYXRvcihwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcikge1xyXG4gICAgaWYgKHBhZ2luYXRvciAmJiB0aGlzLiNwYWdpbmF0b3IgIT09IHBhZ2luYXRvcikge1xyXG4gICAgICB0aGlzLiNwYWdpbmF0b3IgPSBwYWdpbmF0b3I7XHJcbiAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQocGFnaW5hdG9yLnBhZ2Uuc3Vic2NyaWJlKHRoaXMuI3JlbG9hZCkpO1xyXG4gICAgfVxyXG4gIH1cclxuICAjc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIHVwbG9hZGluZzogYm9vbGVhbjtcclxuICBpc1VwbG9hZGVkOiBib29sZWFuO1xyXG4gIGlzRG93bmxvYWRUZW1wbGF0ZSA9IGZhbHNlO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBleHBvcnRTZXJ2aWNlOiBTZEV4cG9ydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFNkVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgbm90aWZ5U2VydmljZTogU2ROb3RpZnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzZENvbHVtbkhpZGRlbjogU2RDb2x1bW5IaWRkZW5QaXBlLFxyXG4gICAgcHJpdmF0ZSBsb2FkaW5nU2VydmljZTogU2RMb2FkaW5nU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmlzVXBsb2FkZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBvcGVuID0gKCkgPT4ge1xyXG4gICAgdGhpcy4jcmVzZXQoKTtcclxuICAgIHRoaXMubW9kYWwub3BlbigpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UgPSAoKSA9PiB7XHJcbiAgICB0aGlzLm1vZGFsLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICAjcmVzZXQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLml0ZW1zID0gW107XHJcbiAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSBbXTtcclxuICAgIHRoaXMudmlld0l0ZW1zID0gW107XHJcbiAgICB0aGlzLm51bWJlck9mU3VjY2VzcyA9IDA7XHJcbiAgICB0aGlzLm51bWJlck9mRXJyb3IgPSAwO1xyXG4gICAgdGhpcy5udW1iZXJPZldhcm5pbmcgPSAwO1xyXG4gICAgdGhpcy5zaG93aW5nID0gJ0FMTCc7XHJcbiAgfVxyXG5cclxuICAjcmVsb2FkID0gKCkgPT4ge1xyXG4gICAgY29uc3QgcGFnZUluZGV4ID0gdGhpcy4jcGFnaW5hdG9yLnBhZ2VJbmRleDtcclxuICAgIGNvbnN0IHBhZ2VTaXplID0gdGhpcy4jcGFnaW5hdG9yLnBhZ2VTaXplO1xyXG4gICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoKGl0ZW0pID0+IHtcclxuICAgICAgY29uc3QgeyB2YWxpZGF0aW9uIH0gPSBpdGVtLnNkO1xyXG4gICAgICBpZiAodGhpcy5zaG93aW5nID09PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICByZXR1cm4gIXZhbGlkYXRpb24/LmVycm9yICYmICF2YWxpZGF0aW9uPy53YXJuaW5nO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2hvd2luZyA9PT0gJ1dBUk5JTkcnKSB7XHJcbiAgICAgICAgcmV0dXJuICEhdmFsaWRhdGlvbj8ud2FybmluZyAmJiAhdmFsaWRhdGlvbj8uZXJyb3I7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zaG93aW5nID09PSAnRVJST1InKSB7XHJcbiAgICAgICAgcmV0dXJuICEhdmFsaWRhdGlvbj8uZXJyb3I7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9KTtcclxuICAgIHRoaXMudmlld0l0ZW1zID0gdGhpcy5maWx0ZXJlZEl0ZW1zXHJcbiAgICAgIC5maWx0ZXIoKGl0ZW0sIGluZGV4KSA9PiBpbmRleCA+PSBwYWdlSW5kZXggKiBwYWdlU2l6ZSAmJiBpbmRleCA8IChwYWdlSW5kZXggKyAxKSAqIHBhZ2VTaXplKTtcclxuXHJcbiAgICB0aGlzLm51bWJlck9mU3VjY2VzcyA9IHRoaXMuaXRlbXMuZmlsdGVyKHRoaXMuI2lzU3VjY2VzcykubGVuZ3RoO1xyXG4gICAgdGhpcy5udW1iZXJPZkVycm9yID0gdGhpcy5pdGVtcy5maWx0ZXIodGhpcy4jaXNFcnJvcikubGVuZ3RoO1xyXG4gICAgdGhpcy5udW1iZXJPZldhcm5pbmcgPSB0aGlzLml0ZW1zLmZpbHRlcih0aGlzLiNpc1dhcm5pbmcpLmxlbmd0aDtcclxuICB9XHJcblxyXG4gICNpc0Vycm9yID0gKGl0ZW06IFNkRXhjZWxJdGVtKSA9PiAhIWl0ZW0uc2QudmFsaWRhdGlvbi5lcnJvcjtcclxuICAjaXNXYXJuaW5nID0gKGl0ZW06IFNkRXhjZWxJdGVtKSA9PiBpdGVtLnNkLnZhbGlkYXRpb24/Lndhcm5pbmcgJiYgIWl0ZW0uc2QudmFsaWRhdGlvbj8uZXJyb3I7XHJcbiAgI2lzU3VjY2VzcyA9IChpdGVtOiBTZEV4Y2VsSXRlbSkgPT4gIWl0ZW0uc2QudmFsaWRhdGlvbj8uZXJyb3IgJiYgIWl0ZW0uc2QudmFsaWRhdGlvbj8ud2FybmluZztcclxuXHJcbiAgdXBsb2FkID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgeyBtYXBwaW5nSXRlbXMsIGVycm9yVmFsaWRhdGlvbiwgd2FybmluZ1ZhbGlkYXRpb24gfSA9IHRoaXMub3B0aW9uO1xyXG4gICAgICBjb25zdCB7IHRyYW5zbGF0ZSB9ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlO1xyXG4gICAgICBjb25zdCB7IGl0ZW1zLCBmaWxlIH0gPSBhd2FpdCB0aGlzLiNpbXBvcnQoKTtcclxuICAgICAgdGhpcy5oYXNEZXNjcmlwdGlvbiA9IHRoaXMub3B0aW9uLmNvbHVtbnMuc29tZShlID0+ICEhZS5kZXNjcmlwdGlvbik7XHJcbiAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuaGFzRGVzY3JpcHRpb24gPyAyIDogMTtcclxuICAgICAgaXRlbXMuc3BsaWNlKDAsIG9mZnNldCk7XHJcbiAgICAgIGlmIChpdGVtcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcoYCR7dHJhbnNsYXRlKGBObyBkYXRhIHRvIGltcG9ydGApfWApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXRlbXMubGVuZ3RoID4gdGhpcy5vcHRpb24ubGltaXQpIHtcclxuICAgICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcoYCR7dHJhbnNsYXRlKGBMaW1pdCByb3dzYCl9OiAke3RoaXMub3B0aW9uLmxpbWl0fWApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLiNyZXNldCgpO1xyXG4gICAgICAvLyB0aGlzLm9yaWdpbkl0ZW1zID0gaXRlbXMubWFwKGRhdGEgPT4gKHtcclxuICAgICAgLy8gICBkYXRhLFxyXG4gICAgICAvLyAgIHNkOiB7fVxyXG4gICAgICAvLyB9KSk7XHJcbiAgICAgIHRoaXMuaXRlbXMgPSBpdGVtcy5tYXAoKGRhdGEsIGlkeCkgPT4gKHtcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIHNkOiB7XHJcbiAgICAgICAgICBleGNlbEluZGV4OiBpZHggKyAodGhpcy5oYXNEZXNjcmlwdGlvbiA/IDQgOiAzKSxcclxuICAgICAgICAgIHZhbGlkYXRpb246IHtcclxuICAgICAgICAgICAgZGF0YToge31cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBvcmlnaW46IHsgLi4uZGF0YSB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSk7XHJcblxyXG4gICAgICBpZiAobWFwcGluZ0l0ZW1zKSB7XHJcbiAgICAgICAgY29uc3QgbWFwcGVkSXRlbXMgPSBtYXBwaW5nSXRlbXModGhpcy5pdGVtcyk7XHJcbiAgICAgICAgaWYgKG1hcHBlZEl0ZW1zIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgdGhpcy51cGxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pdGVtcyA9IChhd2FpdCBtYXBwZWRJdGVtcy5maW5hbGx5KCgpID0+IHRoaXMudXBsb2FkaW5nID0gZmFsc2UpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pdGVtcyA9IChtYXBwZWRJdGVtcyB8fCB0aGlzLml0ZW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5maWxlID0gZmlsZTtcclxuICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdGFydCgpO1xyXG4gICAgICBmb3IgKGNvbnN0IFtpZHgsIGl0ZW1dIG9mIHRoaXMuaXRlbXMuZW50cmllcygpKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy52YWxpZGF0ZShpdGVtLCBpZHgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBO4bq/dSBraMO0bmcgY8OzIGVycm9yIHRow6wgdGnhur9wIHThu6VjIHZhbGlkYXRlIHThu6sgb3B0aW9uIHZhbGlkYXRlIHRydXnhu4FuIHbDoG9cclxuICAgICAgaWYgKCF0aGlzLml0ZW1zLnNvbWUodGhpcy4jaXNFcnJvcikgJiYgZXJyb3JWYWxpZGF0aW9uKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGVycm9yVmFsaWRhdGlvbih0aGlzLml0ZW1zLm1hcChlID0+IGUuZGF0YSkpO1xyXG4gICAgICAgIHJlc3VsdHMuZm9yRWFjaChyZXN1bHQgPT4gdGhpcy5pdGVtc1tyZXN1bHQuaWR4XS5zZC52YWxpZGF0aW9uLmVycm9yID0gcmVzdWx0Lm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBO4bq/dSBraMO0bmcgY8OzIHdhcm5pbmcgdGjDrCB0aeG6v3AgdOG7pWMgdmFsaWRhdGUgdOG7qyBvcHRpb24gdmFsaWRhdGUgdHJ1eeG7gW4gdsOgb1xyXG4gICAgICBpZiAoIXRoaXMuaXRlbXMuc29tZSh0aGlzLiNpc1dhcm5pbmcpICYmIHdhcm5pbmdWYWxpZGF0aW9uKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHdhcm5pbmdWYWxpZGF0aW9uKHRoaXMuaXRlbXMubWFwKGUgPT4gZS5kYXRhKSk7XHJcbiAgICAgICAgcmVzdWx0cy5mb3JFYWNoKHJlc3VsdCA9PiB0aGlzLml0ZW1zW3Jlc3VsdC5pZHhdLnNkLnZhbGlkYXRpb24ud2FybmluZyA9IHJlc3VsdC5tZXNzYWdlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy4jcGFnaW5hdG9yLnBhZ2VJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuI3JlbG9hZCgpO1xyXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICB0aGlzLmlzVXBsb2FkZWQgPSBmYWxzZTtcclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICB0aGlzLm5vdGlmeVNlcnZpY2UuaGFuZGxlLmVycm9yKGVycik7XHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0b3AoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbGlkYXRlID0gYXN5bmMgKGV4Y2VsSXRlbTogU2RFeGNlbEl0ZW0sIGlkeDogbnVtYmVyKSA9PiB7XHJcbiAgICBjb25zdCB7IGRhdGE6IGl0ZW0sIHNkOiB7IHZhbGlkYXRpb24gfSB9ID0gZXhjZWxJdGVtO1xyXG4gICAgY29uc3QgeyB0cmFuc2xhdGUgfSA9IHRoaXMudHJhbnNsYXRlU2VydmljZTtcclxuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcclxuICAgIGZvciAoY29uc3QgY29sdW1uIG9mIHRoaXMub3B0aW9uLmNvbHVtbnMpIHtcclxuICAgICAgdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0gPSB7fTtcclxuICAgICAgaWYgKCF0aGlzLnNkQ29sdW1uSGlkZGVuLnRyYW5zZm9ybShjb2x1bW4pKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgdHJ5IHtcclxuICAgICAgICBpZiAoY29sdW1uLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBpdGVtW2NvbHVtbi5maWVsZF0gPSBpdGVtW2NvbHVtbi5maWVsZF0gPz8gY29sdW1uLmRlZmF1bHRWYWx1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi5yZXF1aXJlZCAmJiAhaXRlbVtjb2x1bW4uZmllbGRdICYmIGl0ZW1bY29sdW1uLmZpZWxkXSAhPT0gMCkge1xyXG4gICAgICAgICAgdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3IgPSBgJHt0cmFuc2xhdGUoJ3JlcXVpcmVkJyl9YDtcclxuICAgICAgICAgIGVycm9ycy5wdXNoKGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfWApO1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIGNvbnN0IHZhbHVlID0gKGl0ZW1bY29sdW1uLmZpZWxkXSB8fCAnJykudG9TdHJpbmcoKTtcclxuICAgICAgICAgIGlmIChjb2x1bW4ubWluTGVuZ3RoICE9PSB1bmRlZmluZWQgJiYgdmFsdWUubGVuZ3RoIDwgY29sdW1uLm1pbkxlbmd0aCkge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke3RyYW5zbGF0ZSgnTWluIGxlbmd0aCcpfTogJHtjb2x1bW4ubWluTGVuZ3RofWA7XHJcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfWApO1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChjb2x1bW4ubWF4TGVuZ3RoICE9PSB1bmRlZmluZWQgJiYgdmFsdWUubGVuZ3RoID4gY29sdW1uLm1heExlbmd0aCkge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke3RyYW5zbGF0ZSgnTWF4IGxlbmd0aCcpfTogJHtjb2x1bW4ubWF4TGVuZ3RofWA7XHJcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfWApO1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGl0ZW1bY29sdW1uLmZpZWxkXSA9IHZhbHVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICBpZiAoaXRlbVtjb2x1bW4uZmllbGRdKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gK2l0ZW1bY29sdW1uLmZpZWxkXTtcclxuICAgICAgICAgICAgaWYgKE51bWJlci5pc05hTih2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke2l0ZW1bY29sdW1uLmZpZWxkXX0gJHt0cmFuc2xhdGUoJ2lzIG5vdCBhIG51bWJlcicpfWA7XHJcbiAgICAgICAgICAgICAgZXJyb3JzLnB1c2goYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9YCk7XHJcbiAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaXRlbVtjb2x1bW4uZmllbGRdID0gdmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIWl0ZW1bY29sdW1uLmZpZWxkXSAmJiBpdGVtW2NvbHVtbi5maWVsZF0gIT09IDApIHtcclxuICAgICAgICAgICAgaXRlbVtjb2x1bW4uZmllbGRdID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGNvbHVtbi5taW5WYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGl0ZW1bY29sdW1uLmZpZWxkXSA8IGNvbHVtbi5taW5WYWx1ZSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke2l0ZW1bY29sdW1uLmZpZWxkXX0gJHt0cmFuc2xhdGUoJ01pbiB2YWx1ZScpfTogJHtjb2x1bW4ubWluVmFsdWV9YDtcclxuICAgICAgICAgICAgZXJyb3JzLnB1c2goYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9YCk7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGNvbHVtbi5tYXhWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGl0ZW1bY29sdW1uLmZpZWxkXSA+IGNvbHVtbi5tYXhWYWx1ZSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke2l0ZW1bY29sdW1uLmZpZWxkXX0gJHt0cmFuc2xhdGUoJ01heCB2YWx1ZScpfTogJHtjb2x1bW4ubWF4VmFsdWV9YDtcclxuICAgICAgICAgICAgZXJyb3JzLnB1c2goYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9YCk7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdib29sJykge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29sdW1uLmZpZWxkXSA9PT0gMCB8fCBpdGVtW2NvbHVtbi5maWVsZF0gPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIGl0ZW1bY29sdW1uLmZpZWxkXSA9ICcwJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpdGVtW2NvbHVtbi5maWVsZF0gPT09IDEgfHwgaXRlbVtjb2x1bW4uZmllbGRdID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIGl0ZW1bY29sdW1uLmZpZWxkXSA9ICcxJztcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoaXRlbVtjb2x1bW4uZmllbGRdKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gK2l0ZW1bY29sdW1uLmZpZWxkXTtcclxuICAgICAgICAgICAgaWYgKE51bWJlci5pc05hTih2YWx1ZSkgfHwgKHZhbHVlICE9PSAwICYmIHZhbHVlICE9PSAxKSkge1xyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yID0gYCR7dHJhbnNsYXRlKCdWYWx1ZSBzaG91ZCBiZSAwIG9yIDEnKX1gO1xyXG4gICAgICAgICAgICAgIGVycm9ycy5wdXNoKGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfWApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChjb2x1bW4ucGFyc2VUb0Jvb2wpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW1bY29sdW1uLmZpZWxkXSA9IGl0ZW1bY29sdW1uLmZpZWxkXSA9PT0gJzEnO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICd2YWx1ZXMnKSB7XHJcbiAgICAgICAgICBpZiAoaXRlbVtjb2x1bW4uZmllbGRdICYmIHR5cGVvZiAoaXRlbVtjb2x1bW4uZmllbGRdKSAhPT0gJ251bWJlcicgJiYgdHlwZW9mIChpdGVtW2NvbHVtbi5maWVsZF0pICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke2l0ZW1bY29sdW1uLmZpZWxkXX0gJHt0cmFuc2xhdGUoJ0ludmFsaWQgZGF0YSB0eXBlJyl9YDtcclxuICAgICAgICAgICAgZXJyb3JzLnB1c2goYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9YCk7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGNvbHVtbi5jaGVja1ZhbHVlSW5BcnJheSAmJiBpdGVtW2NvbHVtbi5maWVsZF0gJiYgIWNvbHVtbi52YWx1ZXMuc29tZShlID0+IGUudG9TdHJpbmcoKSA9PT0gaXRlbVtjb2x1bW4uZmllbGRdLnRvU3RyaW5nKCkpKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yID0gYCR7aXRlbVtjb2x1bW4uZmllbGRdfSAke3RyYW5zbGF0ZSgnVmFsdWUgbm90IGluJyl9IFske2NvbHVtbi52YWx1ZXMuam9pbigpfV1gO1xyXG4gICAgICAgICAgICBlcnJvcnMucHVzaChgPHN0cm9uZz5bJHtjb2x1bW4udGl0bGUgfHwgY29sdW1uLmZpZWxkfV08L3N0cm9uZz4gJHt2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvcn1gKTtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2RhdGUnIHx8IGNvbHVtbi50eXBlID09PSAnZGF0ZXRpbWUnIHx8IGNvbHVtbi50eXBlID09PSAndGltZScpIHtcclxuICAgICAgICAgIGNvbnN0IHsgdHlwZSwgZm9ybWF0IH0gPSBjb2x1bW47XHJcbiAgICAgICAgICBjb25zdCB2YWwgPSBpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICBpZiAoZm9ybWF0ICYmIGl0ZW1bY29sdW1uLmZpZWxkXSkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mICh2YWwpICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yID0gYCR7dHJhbnNsYXRlKCdJbnZhbGlkIGZvcm1hdCcpfSAke2NvbHVtbi5mb3JtYXR9OiAke3ZhbH1gO1xyXG4gICAgICAgICAgICAgIGVycm9ycy5wdXNoKGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfWApO1xyXG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0eXBlID09PSAnZGF0ZScgJiYgIXRoaXMuI2lzVmFsaWREYXRlKGZvcm1hdCwgdmFsKSkge1xyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yID0gYCR7dHJhbnNsYXRlKCdJbnZhbGlkIGZvcm1hdCcpfSAke2NvbHVtbi5mb3JtYXR9OiAke3ZhbH1gO1xyXG4gICAgICAgICAgICAgIGVycm9ycy5wdXNoKGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfWApO1xyXG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0eXBlID09PSAndGltZScgJiYgIXRoaXMuI2lzVmFsaWRUaW1lKGZvcm1hdCwgdmFsKSkge1xyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yID0gYCR7dHJhbnNsYXRlKCdJbnZhbGlkIGZvcm1hdCcpfSAke2NvbHVtbi5mb3JtYXR9OiAke3ZhbH1gO1xyXG4gICAgICAgICAgICAgIGVycm9ycy5wdXNoKGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfWApO1xyXG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0eXBlID09PSAnZGF0ZXRpbWUnICYmICF0aGlzLiNpc1ZhbGlkRGF0ZVRpbWUoZm9ybWF0LCB2YWwpKSB7XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3IgPSBgJHt0cmFuc2xhdGUoJ0ludmFsaWQgZm9ybWF0Jyl9ICR7Y29sdW1uLmZvcm1hdH06ICR7dmFsfWA7XHJcbiAgICAgICAgICAgICAgZXJyb3JzLnB1c2goYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9YCk7XHJcbiAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaXRlbVtjb2x1bW4uZmllbGRdID0gRGF0ZS5wYXJzZUZyb20odmFsLCBjb2x1bW4uZm9ybWF0KS50b0Zvcm1hdCgnTU0vZGQveXl5eSBISDptbTpzcycpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGl0ZW1bY29sdW1uLmZpZWxkXSAmJiAhRGF0ZS5pc0RhdGUoaXRlbVtjb2x1bW4uZmllbGRdKSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke3RyYW5zbGF0ZSgnSW52YWxpZCBkYXRlJyl9OiAke2l0ZW1bY29sdW1uLmZpZWxkXX1gO1xyXG4gICAgICAgICAgICBlcnJvcnMucHVzaChgPHN0cm9uZz5bJHtjb2x1bW4udGl0bGUgfHwgY29sdW1uLmZpZWxkfV08L3N0cm9uZz4gJHt2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvcn1gKTtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIWVycm9ycy5sZW5ndGggJiYgY29sdW1uLmVycm9yVmFsaWRhdGlvbikge1xyXG4gICAgICAgICAgY29uc3QgZXJyb3IgPSBhd2FpdCBjb2x1bW4uZXJyb3JWYWxpZGF0aW9uKGl0ZW0sIGl0ZW1bY29sdW1uLmZpZWxkXSwgaWR4KTtcclxuICAgICAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke2Vycm9yfWA7XHJcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfWApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS53YXJuaW5nICYmIGNvbHVtbi53YXJuaW5nVmFsaWRhdGlvbikge1xyXG4gICAgICAgICAgY29uc3Qgd2FybmluZyA9IGF3YWl0IGNvbHVtbi53YXJuaW5nVmFsaWRhdGlvbihpdGVtLCBpdGVtW2NvbHVtbi5maWVsZF0sIGlkeCk7XHJcbiAgICAgICAgICBpZiAod2FybmluZykge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS53YXJuaW5nID0gYCR7d2FybmluZ31gO1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLndhcm5pbmcgKz0gYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7d2FybmluZ308YnI+YDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gY2F0Y2ggKGV4KSB7XHJcbiAgICAgICAgdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3IgPSBgJHtleD8ubWVzc2FnZSB8fCBleD8uZXJyb3IgfHwgZXggfHwgJ0PDsyBs4buXaSB44bqjeSByYSd9YDtcclxuICAgICAgICBlcnJvcnMucHVzaChgPHN0cm9uZz5bJHtjb2x1bW4udGl0bGUgfHwgY29sdW1uLmZpZWxkfV08L3N0cm9uZz4gJHt2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvcn1gKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdmFsaWRhdGlvbi5lcnJvciA9IGVycm9ycy5qb2luKCc8YnI+Jyk7XHJcbiAgfVxyXG5cclxuICAjcGFyc2UgPSAoaXRlbTogU2RFeGNlbEl0ZW0pID0+IHtcclxuICAgIGNvbnN0IHsgZGF0YSB9ID0gaXRlbTtcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgI21hcEl0ZW0gPSAoaXRlbTogU2RFeGNlbEl0ZW0pID0+IHtcclxuICAgIGNvbnN0IHsgZGF0YSB9ID0gaXRlbTtcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgYWNjZXB0ID0gKCkgPT4ge1xyXG4gICAgY29uc3Qgc3VjY2Vzc0l0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIodGhpcy4jaXNTdWNjZXNzKS5tYXAodGhpcy4jbWFwSXRlbSk7XHJcbiAgICBjb25zdCBlcnJvckl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIodGhpcy4jaXNFcnJvcikubWFwKHRoaXMuI21hcEl0ZW0pO1xyXG4gICAgY29uc3Qgd2FybmluZ0l0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIodGhpcy4jaXNXYXJuaW5nKS5tYXAodGhpcy4jbWFwSXRlbSk7XHJcbiAgICB0aGlzLm9wdGlvbj8ub25BY2NlcHQodGhpcy5pdGVtcy5tYXAodGhpcy4jbWFwSXRlbSksIHN1Y2Nlc3NJdGVtcywgZXJyb3JJdGVtcywgd2FybmluZ0l0ZW1zLCB0aGlzLmZpbGUpO1xyXG4gICAgdGhpcy5pc1VwbG9hZGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHNldFZhbGlkYXRpb24gPSAodmFsaWRhdGVzOiB7IGlkeDogbnVtYmVyLCBtZXNzYWdlRXJyb3I/OiBzdHJpbmcsIG1lc3NhZ2VXYXJuaW5nPzogc3RyaW5nLCBtZXNzYWdlU3VjY2Vzcz86IHN0cmluZyB9W10pID0+IHtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbGlkYXRlcykpIHtcclxuICAgICAgdmFsaWRhdGVzLmZvckVhY2godmFsaWRhdGUgPT4ge1xyXG4gICAgICAgIHRoaXMuaXRlbXNbdmFsaWRhdGUuaWR4XS5zZC52YWxpZGF0aW9uLmVycm9yID0gdmFsaWRhdGUubWVzc2FnZUVycm9yO1xyXG4gICAgICAgIHRoaXMuaXRlbXNbdmFsaWRhdGUuaWR4XS5zZC52YWxpZGF0aW9uLndhcm5pbmcgPSB2YWxpZGF0ZS5tZXNzYWdlV2FybmluZztcclxuICAgICAgICB0aGlzLml0ZW1zW3ZhbGlkYXRlLmlkeF0uc2QudmFsaWRhdGlvbi5zdWNjZXNzID0gdmFsaWRhdGUubWVzc2FnZVN1Y2Nlc3M7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy4jcmVsb2FkKCk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICB2aWV3ID0gKHNob3dpbmc6ICdBTEwnIHwgJ1NVQ0NFU1MnIHwgJ1dBUk5JTkcnIHwgJ0VSUk9SJyA9ICdBTEwnKSA9PiB7XHJcbiAgICB0aGlzLnNob3dpbmcgPSBzaG93aW5nO1xyXG4gICAgdGhpcy4jcGFnaW5hdG9yLnBhZ2VJbmRleCA9IDA7XHJcbiAgICB0aGlzLiNyZWxvYWQoKTtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkVGVtcGxhdGUgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCBzaGVldHM6IHtcclxuICAgICAgbmFtZTogc3RyaW5nLFxyXG4gICAgICBpdGVtczogYW55W10sXHJcbiAgICAgIGZpZWxkczogc3RyaW5nW11cclxuICAgIH1bXSA9IFtdO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb24/LnNoZWV0cykpIHtcclxuICAgICAgZm9yIChjb25zdCBzaGVldCBvZiB0aGlzLm9wdGlvbi5zaGVldHMpIHtcclxuICAgICAgICBpZiAoc2hlZXQubmFtZSAmJiBzaGVldC5pdGVtcyAmJiBzaGVldC5maWVsZHMpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNoZWV0Lml0ZW1zKSkge1xyXG4gICAgICAgICAgICBzaGVldHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogc2hlZXQubmFtZSxcclxuICAgICAgICAgICAgICBpdGVtczogc2hlZXQuaXRlbXMsXHJcbiAgICAgICAgICAgICAgZmllbGRzOiBzaGVldC5maWVsZHNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzaGVldHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogc2hlZXQubmFtZSxcclxuICAgICAgICAgICAgICBpdGVtczogYXdhaXQgc2hlZXQuaXRlbXMoKSxcclxuICAgICAgICAgICAgICBmaWVsZHM6IHNoZWV0LmZpZWxkc1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGNvbHVtbk5vdEhpZGRlbnMgPSB0aGlzLm9wdGlvbi5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gdGhpcy5zZENvbHVtbkhpZGRlbi50cmFuc2Zvcm0oY29sdW1uKSk7XHJcbiAgICBjb25zdCBleGNlbFRlbXBsYXRlOiBTZEV4cG9ydFRlbXBsYXRlID0ge1xyXG4gICAgICBmaWxlTmFtZTogdGhpcy5vcHRpb24uZmlsZU5hbWUgfHwgJ1RlbXBsYXRlJyxcclxuICAgICAgY29sdW1uczogY29sdW1uTm90SGlkZGVucy5tYXAoY29sdW1uID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgZmllbGQ6IGNvbHVtbi5maWVsZCxcclxuICAgICAgICAgIHRpdGxlOiBjb2x1bW4udGl0bGUsXHJcbiAgICAgICAgICB3aWR0aDogY29sdW1uLndpZHRoLFxyXG4gICAgICAgICAgcmVxdWlyZWQ6IGNvbHVtbi5yZXF1aXJlZCxcclxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBjb2x1bW4uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICBmb250Q29sb3I6IGNvbHVtbi5mb250Q29sb3IsXHJcbiAgICAgICAgICBmaWxsOiBjb2x1bW4uZmlsbFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pLFxyXG4gICAgICBzaGVldHNcclxuICAgIH07XHJcbiAgICB0aGlzLmlzRG93bmxvYWRUZW1wbGF0ZSA9IHRydWU7XHJcbiAgICBhd2FpdCB0aGlzLmV4cG9ydFNlcnZpY2UuZ2VuZXJhdGVUZW1wbGF0ZShleGNlbFRlbXBsYXRlKS5maW5hbGx5KCgpID0+IHtcclxuICAgICAgdGhpcy5pc0Rvd25sb2FkVGVtcGxhdGUgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdGFydCgpO1xyXG4gICAgY29uc3QgY29sdW1uczogU2RFeHBvcnRUZW1wYXRlQ29sdW1uW10gPSBbe1xyXG4gICAgICBmaWVsZDogJ3NkTWVzc2FnZScsXHJcbiAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdVcGxvYWQgbWVzc2FnZScpLFxyXG4gICAgICB3aWR0aDogJzI1MHB4JyxcclxuICAgICAgcmVxdWlyZWQ6IGZhbHNlXHJcbiAgICB9LCAuLi4gdGhpcy5vcHRpb24uY29sdW1ucy5maWx0ZXIoY29sdW1uID0+IHRoaXMuc2RDb2x1bW5IaWRkZW4udHJhbnNmb3JtKGNvbHVtbikpXTtcclxuICAgIGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnQoe1xyXG4gICAgICBjb2x1bW5zLFxyXG4gICAgICBpdGVtczogdGhpcy5maWx0ZXJlZEl0ZW1zLm1hcChlID0+IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0ge307XHJcbiAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICAgICAgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICAuLi5yZXN1bHQsXHJcbiAgICAgICAgICAgIFtjb2x1bW4uZmllbGRdOiBlLnNkLm9yaWdpbj8uW2NvbHVtbi5maWVsZF1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIC4uLnJlc3VsdCxcclxuICAgICAgICAgIHNkTWVzc2FnZTogKGUuc2QudmFsaWRhdGlvbj8uZXJyb3IgfHwgZS5zZC52YWxpZGF0aW9uPy53YXJuaW5nIHx8IGUuc2QudmFsaWRhdGlvbj8uc3VjY2Vzcyk/LnJlcGxhY2UoLzxzdHJvbmc+L2csICcnKVxyXG4gICAgICAgICAgICAucmVwbGFjZSgvPFxcL3N0cm9uZz4vZywgJycpXHJcbiAgICAgICAgICAgIC5yZXBsYWNlKC88YnI+L2csICdcXG4nKVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pXHJcbiAgICB9KS5maW5hbGx5KHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RvcCk7XHJcbiAgfVxyXG5cclxuICAjaW1wb3J0ID0gKCkgPT4ge1xyXG4gICAgY29uc3QgeyB0cmFuc2xhdGUgfSA9IHRoaXMudHJhbnNsYXRlU2VydmljZTtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTx7IGl0ZW1zOiBhbnlbXSwgZmlsZTogRmlsZSB9PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGlmICgkKGAjJHt0aGlzLmltcG9ydElkfWApLmxlbmd0aCkge1xyXG4gICAgICAgICQoJ2JvZHknKS5jaGlsZHJlbihgIyR7dGhpcy5pbXBvcnRJZH1gKS5yZW1vdmUoKTtcclxuICAgICAgfVxyXG4gICAgICAkKCdib2R5JykuYXBwZW5kKGA8aW5wdXQgaWQ9XCIke3RoaXMuaW1wb3J0SWR9XCIgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgdHlwZT1cImZpbGVcIiAvPmApO1xyXG5cclxuICAgICAgJChgIyR7dGhpcy5pbXBvcnRJZH1gKS5vbignY2hhbmdlJywgKGV2dDogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGNvbnN0IHRhcmdldDogRGF0YVRyYW5zZmVyID0gZXZ0LnRhcmdldDtcclxuICAgICAgICAgIGlmICh0YXJnZXQuZmlsZXMubGVuZ3RoICE9PSAxKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0cmFuc2xhdGUoJ0Nhbm5vdCB1c2UgbXVsdGlwbGUgZmlsZXMnKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBmaWxlID0gdGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgICAgICAgY29uc3QgbGFzdERvdCA9IGZpbGUubmFtZS5sYXN0SW5kZXhPZignLicpO1xyXG4gICAgICAgICAgaWYgKGxhc3REb3QgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0cmFuc2xhdGUoJ0ludmFsaWQgZmlsZSBleHRlbnNpb24nKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSBmaWxlLm5hbWUuc3Vic3RyaW5nKGxhc3REb3QgKyAxKTtcclxuICAgICAgICAgIGlmIChleHRlbnNpb24udG9Mb3dlckNhc2UoKSAhPT0gJ3hsc3gnKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0cmFuc2xhdGUoJ1BsZWFzZSB1cGxvYWQgLnhsc3ggZmlsZScpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IHJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBic3RyOiBzdHJpbmcgPSBlLnRhcmdldC5yZXN1bHQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHdiOiBYTFNYLldvcmtCb29rID0gWExTWC5yZWFkKGJzdHIsIHsgdHlwZTogJ2JpbmFyeScgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHdzbmFtZTogc3RyaW5nID0gd2IuU2hlZXROYW1lc1swXTtcclxuICAgICAgICAgICAgY29uc3Qgd3M6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW3dzbmFtZV07XHJcbiAgICAgICAgICAgIGNvbnN0IGxpbmVzOiBBT0EgPSAoWExTWC51dGlscy5zaGVldF90b19qc29uKHdzLCB7IGhlYWRlcjogMSB9KSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlY29yZHMgPSBbXTtcclxuICAgICAgICAgICAgY29uc3QgaGVhZGVycyA9IGxpbmVzWzBdO1xyXG4gICAgICAgICAgICBsaW5lcy5zcGxpY2UoMCwgMSk7XHJcbiAgICAgICAgICAgIGxpbmVzLmZvckVhY2gobGluZSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmVjb3JkID0ge307XHJcbiAgICAgICAgICAgICAgbGV0IGhhc1ZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgaGVhZGVycy5mb3JFYWNoKChoZWFkZXIsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZWNvcmRbaGVhZGVyXSA9IGxpbmVbaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxpbmVbaW5kZXhdICE9PSB1bmRlZmluZWQgJiYgbGluZVtpbmRleF0gIT09IG51bGwgJiYgbGluZVtpbmRleF0udG9TdHJpbmcoKSkge1xyXG4gICAgICAgICAgICAgICAgICBoYXNWYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIChyZWNvcmRbaGVhZGVyXSkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJlY29yZFtoZWFkZXJdID0gcmVjb3JkW2hlYWRlcl0udHJpbSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHJlY29yZFtoZWFkZXJdID09PSAnJyB8fCByZWNvcmRbaGVhZGVyXSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJlY29yZFtoZWFkZXJdID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBpZiAoaGFzVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJlY29yZHMucHVzaChyZWNvcmQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgIGl0ZW1zOiByZWNvcmRzLFxyXG4gICAgICAgICAgICAgIGZpbGU6IHRhcmdldC5maWxlc1swXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHRhcmdldC5maWxlc1swXSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgJChgIyR7dGhpcy5pbXBvcnRJZH1gKS50cmlnZ2VyKCdjbGljaycpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAjaXNWYWxpZERhdGUgPSAoZm9ybWF0OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgIGlmICh2YWx1ZT8ubGVuZ3RoICE9PSBmb3JtYXQ/Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZWdleCA9IC9eKD86KD86MzEoXFwvfC18XFwuKSg/OjA/WzEzNTc4XXwxWzAyXSkpXFwxfCg/Oig/OjI5fDMwKShcXC98LXxcXC4pKD86MD9bMTMtOV18MVswLTJdKVxcMikpKD86KD86MVs2LTldfFsyLTldXFxkKT9cXGR7Mn0pJHxeKD86MjkoXFwvfC18XFwuKTA/MlxcMyg/Oig/Oig/OjFbNi05XXxbMi05XVxcZCk/KD86MFs0OF18WzI0NjhdWzA0OF18WzEzNTc5XVsyNl0pfCg/Oig/OjE2fFsyNDY4XVswNDhdfFszNTc5XVsyNl0pMDApKSkpJHxeKD86MD9bMS05XXwxXFxkfDJbMC04XSkoXFwvfC18XFwuKSg/Oig/OjA/WzEtOV0pfCg/OjFbMC0yXSkpXFw0KD86KD86MVs2LTldfFsyLTldXFxkKT9cXGR7Mn0pJC87XHJcbiAgICByZXR1cm4gcmVnZXgudGVzdCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAjaXNWYWxpZFRpbWUgPSAoZm9ybWF0OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgIGlmICh2YWx1ZT8ubGVuZ3RoICE9PSBmb3JtYXQ/Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gICNpc1ZhbGlkRGF0ZVRpbWUgPSAoZm9ybWF0OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgIGlmICh2YWx1ZT8ubGVuZ3RoICE9PSBmb3JtYXQ/Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBkYXRlcyA9IHZhbHVlPy5zcGxpdCgnICcpO1xyXG4gICAgaWYgKGRhdGVzLmxlbmd0aCAhPT0gMikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBkYXRlID0gZGF0ZXNbMF07XHJcbiAgICBpZiAoIXRoaXMuI2lzVmFsaWREYXRlKCdkZC9NTS95eXl5JywgZGF0ZSkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGltZSA9IGRhdGVzWzFdO1xyXG4gICAgY29uc3QgcmVnZXggPSAvXigwWzAtOV18MVswLTldfDJbMC0zXSkoXFw6KSgwWzAtOV18WzAtNV1bMC05XSkkLztcclxuICAgIHJldHVybiByZWdleC50ZXN0KHRpbWUpO1xyXG4gIH1cclxufVxyXG5cclxuIl19
|
|
512
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWV4Y2VsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdXBsb2FkLWV4Y2VsLyIsInNvdXJjZXMiOlsic3JjL2xpYi91cGxvYWQtZXhjZWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFFeEIsT0FBTyxFQUNMLGVBQWUsRUFDaEIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2pCLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUNMLGtCQUFrQixFQUNuQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3BDLE9BQU8sRUFBMkMsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFRaEUsTUFBTSxPQUFPLGFBQWE7SUEwQnhCLFlBQ1UsR0FBc0IsRUFDdEIsYUFBOEIsRUFDOUIsZ0JBQW9DLEVBQ3BDLGFBQThCLEVBQzlCLGNBQWtDLEVBQ2xDLGNBQWdDO1FBTGhDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUM5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBQ3BDLGtCQUFhLEdBQWIs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QyxLQUFLLEVBQUUsQ0FBQyxDQUFDOzRCQUN6RyxTQUFTO3lCQUNWO3dCQUNELElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFOzRCQUN6RSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7NEJBQzVHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLGNBQWMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQzs0QkFDekcsU0FBUzt5QkFDVjtxQkFDRjt5QkFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO3dCQUNqQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxFQUFFOzRCQUM1RCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQzt5QkFDMUI7d0JBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRTs0QkFDM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUM7eUJBQzFCO3dCQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTs0QkFDdEIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxD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MUIsQ0FBQyxFQUFBO0lBeGRELENBQUM7SUFqQkQsSUFBNkIsU0FBUyxDQUFDLFNBQXVCO1FBQzVELElBQUksU0FBUyxJQUFJLDZDQUFvQixTQUFTLEVBQUU7WUFDOUMsdUJBQUEsSUFBSSxjQUFjLFNBQVMsRUFBQztZQUM1Qiw0Q0FBbUIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyx1Q0FBYyxDQUFDLENBQUM7U0FDaEU7SUFDSCxDQUFDO0lBY0QsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFRCxXQUFXO1FBQ1QsNENBQW1CLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7Ozs7WUE5Q0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLDI0TkFBNEM7O2FBRTdDOzs7WUE1QjZDLGlCQUFpQjtZQW9CYixlQUFlO1lBTi9ELGtCQUFrQjtZQVJsQixlQUFlO1lBZVIsa0JBQWtCO1lBWHpCLGdCQUFnQjs7O3FCQXFCZixLQUFLO29CQUNMLFNBQVMsU0FBQyxPQUFPO3dCQWFqQixTQUFTLFNBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkLCBDaGFuZ2VEZXRlY3RvclJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSAndXVpZCc7XHJcbmltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XHJcbmltcG9ydCBYTFNYIGZyb20gJ3hsc3gnO1xyXG5cclxuaW1wb3J0IHtcclxuICBTZE5vdGlmeVNlcnZpY2VcclxufSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL25vdGlmeSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIFNkTG9hZGluZ1NlcnZpY2VcclxufSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2xvYWRpbmcnO1xyXG5cclxuaW1wb3J0IHtcclxuICBTZFRyYW5zbGF0ZVNlcnZpY2VcclxufSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL3RyYW5zbGF0ZSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTZE1vZGFsIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9tb2RhbCc7XHJcbmltcG9ydCB7IFNkRXhjZWxJdGVtLCBTZFVwbG9hZEV4Y2VsT3B0aW9uLCBTZFVwbG9hZEV4Y2VsVmFsaWRhdGlvbiB9IGZyb20gJy4vdXBsb2FkLWV4Y2VsLm1vZGVsJztcclxuaW1wb3J0IHsgU2RFeHBvcnRUZW1wYXRlQ29sdW1uLCBTZEV4cG9ydFRlbXBsYXRlLCBTZEV4cG9ydFNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2V4cG9ydCc7XHJcbmltcG9ydCB7IFNkQ29sdW1uSGlkZGVuUGlwZSB9IGZyb20gJy4vcGlwZXMvY29sdW1tLWhpZGRlbi5waXBlJztcclxudHlwZSBBT0EgPSBBcnJheTxBcnJheTxhbnk+PjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtdXBsb2FkLWV4Y2VsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXBsb2FkLWV4Y2VsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi91cGxvYWQtZXhjZWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RVcGxvYWRFeGNlbCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIGltcG9ydElkID0gJ0knICsgdXVpZC52NCgpO1xyXG4gIEBJbnB1dCgpIG9wdGlvbjogU2RVcGxvYWRFeGNlbE9wdGlvbjtcclxuICBAVmlld0NoaWxkKCdtb2RhbCcpIG1vZGFsOiBTZE1vZGFsO1xyXG4gIGl0ZW1zOiBTZEV4Y2VsSXRlbVtdID0gW107XHJcbiAgLy8gb3JpZ2luSXRlbXM6IFNkRXhjZWxJdGVtW10gPSBbXTtcclxuICBoYXNEZXNjcmlwdGlvbiA9IGZhbHNlO1xyXG5cclxuICBzaG93aW5nOiAnQUxMJyB8ICdTVUNDRVNTJyB8ICdXQVJOSU5HJyB8ICdFUlJPUicgPSAnQUxMJztcclxuICBmaWx0ZXJlZEl0ZW1zOiBTZEV4Y2VsSXRlbVtdID0gW107XHJcbiAgdmlld0l0ZW1zOiBTZEV4Y2VsSXRlbVtdID0gW107XHJcbiAgbnVtYmVyT2ZTdWNjZXNzID0gMDtcclxuICBudW1iZXJPZkVycm9yID0gMDtcclxuICBudW1iZXJPZldhcm5pbmcgPSAwO1xyXG4gIGZpbGU6IEZpbGU7XHJcbiAgI3BhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xyXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yKSBzZXQgcGFnaW5hdG9yKHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yKSB7XHJcbiAgICBpZiAocGFnaW5hdG9yICYmIHRoaXMuI3BhZ2luYXRvciAhPT0gcGFnaW5hdG9yKSB7XHJcbiAgICAgIHRoaXMuI3BhZ2luYXRvciA9IHBhZ2luYXRvcjtcclxuICAgICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChwYWdpbmF0b3IucGFnZS5zdWJzY3JpYmUodGhpcy4jcmVsb2FkKSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gICNzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgdXBsb2FkaW5nOiBib29sZWFuO1xyXG4gIGlzVXBsb2FkZWQ6IGJvb2xlYW47XHJcbiAgaXNEb3dubG9hZFRlbXBsYXRlID0gZmFsc2U7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGV4cG9ydFNlcnZpY2U6IFNkRXhwb3J0U2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogU2RUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZnlTZXJ2aWNlOiBTZE5vdGlmeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNkQ29sdW1uSGlkZGVuOiBTZENvbHVtbkhpZGRlblBpcGUsXHJcbiAgICBwcml2YXRlIGxvYWRpbmdTZXJ2aWNlOiBTZExvYWRpbmdTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaXNVcGxvYWRlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG9wZW4gPSAoKSA9PiB7XHJcbiAgICB0aGlzLiNyZXNldCgpO1xyXG4gICAgdGhpcy5tb2RhbC5vcGVuKCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSA9ICgpID0+IHtcclxuICAgIHRoaXMubW9kYWwuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gICNyZXNldCA9ICgpID0+IHtcclxuICAgIHRoaXMuaXRlbXMgPSBbXTtcclxuICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IFtdO1xyXG4gICAgdGhpcy52aWV3SXRlbXMgPSBbXTtcclxuICAgIHRoaXMubnVtYmVyT2ZTdWNjZXNzID0gMDtcclxuICAgIHRoaXMubnVtYmVyT2ZFcnJvciA9IDA7XHJcbiAgICB0aGlzLm51bWJlck9mV2FybmluZyA9IDA7XHJcbiAgICB0aGlzLnNob3dpbmcgPSAnQUxMJztcclxuICB9XHJcblxyXG4gICNyZWxvYWQgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBwYWdlSW5kZXggPSB0aGlzLiNwYWdpbmF0b3IucGFnZUluZGV4O1xyXG4gICAgY29uc3QgcGFnZVNpemUgPSB0aGlzLiNwYWdpbmF0b3IucGFnZVNpemU7XHJcbiAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcigoaXRlbSkgPT4ge1xyXG4gICAgICBjb25zdCB7IHZhbGlkYXRpb24gfSA9IGl0ZW0uc2Q7XHJcbiAgICAgIGlmICh0aGlzLnNob3dpbmcgPT09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIHJldHVybiAhdmFsaWRhdGlvbj8uZXJyb3IgJiYgIXZhbGlkYXRpb24/Lndhcm5pbmc7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zaG93aW5nID09PSAnV0FSTklORycpIHtcclxuICAgICAgICByZXR1cm4gISF2YWxpZGF0aW9uPy53YXJuaW5nICYmICF2YWxpZGF0aW9uPy5lcnJvcjtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3dpbmcgPT09ICdFUlJPUicpIHtcclxuICAgICAgICByZXR1cm4gISF2YWxpZGF0aW9uPy5lcnJvcjtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy52aWV3SXRlbXMgPSB0aGlzLmZpbHRlcmVkSXRlbXNcclxuICAgICAgLmZpbHRlcigoaXRlbSwgaW5kZXgpID0+IGluZGV4ID49IHBhZ2VJbmRleCAqIHBhZ2VTaXplICYmIGluZGV4IDwgKHBhZ2VJbmRleCArIDEpICogcGFnZVNpemUpO1xyXG5cclxuICAgIHRoaXMubnVtYmVyT2ZTdWNjZXNzID0gdGhpcy5pdGVtcy5maWx0ZXIodGhpcy4jaXNTdWNjZXNzKS5sZW5ndGg7XHJcbiAgICB0aGlzLm51bWJlck9mRXJyb3IgPSB0aGlzLml0ZW1zLmZpbHRlcih0aGlzLiNpc0Vycm9yKS5sZW5ndGg7XHJcbiAgICB0aGlzLm51bWJlck9mV2FybmluZyA9IHRoaXMuaXRlbXMuZmlsdGVyKHRoaXMuI2lzV2FybmluZykubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgI2lzRXJyb3IgPSAoaXRlbTogU2RFeGNlbEl0ZW0pID0+ICEhaXRlbS5zZC52YWxpZGF0aW9uLmVycm9yO1xyXG4gICNpc1dhcm5pbmcgPSAoaXRlbTogU2RFeGNlbEl0ZW0pID0+IGl0ZW0uc2QudmFsaWRhdGlvbj8ud2FybmluZyAmJiAhaXRlbS5zZC52YWxpZGF0aW9uPy5lcnJvcjtcclxuICAjaXNTdWNjZXNzID0gKGl0ZW06IFNkRXhjZWxJdGVtKSA9PiAhaXRlbS5zZC52YWxpZGF0aW9uPy5lcnJvciAmJiAhaXRlbS5zZC52YWxpZGF0aW9uPy53YXJuaW5nO1xyXG5cclxuICB1cGxvYWQgPSBhc3luYyAoKSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB7IG1hcHBpbmdJdGVtcywgZXJyb3JWYWxpZGF0aW9uLCB3YXJuaW5nVmFsaWRhdGlvbiB9ID0gdGhpcy5vcHRpb247XHJcbiAgICAgIGNvbnN0IHsgdHJhbnNsYXRlIH0gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2U7XHJcbiAgICAgIGNvbnN0IHsgaXRlbXMsIGZpbGUgfSA9IGF3YWl0IHRoaXMuI2ltcG9ydCgpO1xyXG4gICAgICB0aGlzLmhhc0Rlc2NyaXB0aW9uID0gdGhpcy5vcHRpb24uY29sdW1ucy5zb21lKGUgPT4gISFlLmRlc2NyaXB0aW9uKTtcclxuICAgICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5oYXNEZXNjcmlwdGlvbiA/IDIgOiAxO1xyXG4gICAgICBpdGVtcy5zcGxpY2UoMCwgb2Zmc2V0KTtcclxuICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZyhgJHt0cmFuc2xhdGUoYE5vIGRhdGEgdG8gaW1wb3J0YCl9YCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpdGVtcy5sZW5ndGggPiB0aGlzLm9wdGlvbi5saW1pdCkge1xyXG4gICAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZyhgJHt0cmFuc2xhdGUoYExpbWl0IHJvd3NgKX06ICR7dGhpcy5vcHRpb24ubGltaXR9YCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuI3Jlc2V0KCk7XHJcbiAgICAgIC8vIHRoaXMub3JpZ2luSXRlbXMgPSBpdGVtcy5tYXAoZGF0YSA9PiAoe1xyXG4gICAgICAvLyAgIGRhdGEsXHJcbiAgICAgIC8vICAgc2Q6IHt9XHJcbiAgICAgIC8vIH0pKTtcclxuICAgICAgdGhpcy5pdGVtcyA9IGl0ZW1zLm1hcCgoZGF0YSwgaWR4KSA9PiAoe1xyXG4gICAgICAgIGRhdGEsXHJcbiAgICAgICAgc2Q6IHtcclxuICAgICAgICAgIGV4Y2VsSW5kZXg6IGlkeCArICh0aGlzLmhhc0Rlc2NyaXB0aW9uID8gNCA6IDMpLFxyXG4gICAgICAgICAgdmFsaWRhdGlvbjoge1xyXG4gICAgICAgICAgICBkYXRhOiB7fVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9yaWdpbjogeyAuLi5kYXRhIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pKTtcclxuXHJcbiAgICAgIGlmIChtYXBwaW5nSXRlbXMpIHtcclxuICAgICAgICBjb25zdCBtYXBwZWRJdGVtcyA9IG1hcHBpbmdJdGVtcyh0aGlzLml0ZW1zKTtcclxuICAgICAgICBpZiAobWFwcGVkSXRlbXMgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLml0ZW1zID0gKGF3YWl0IG1hcHBlZEl0ZW1zLmZpbmFsbHkoKCkgPT4gdGhpcy51cGxvYWRpbmcgPSBmYWxzZSkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLml0ZW1zID0gKG1hcHBlZEl0ZW1zIHx8IHRoaXMuaXRlbXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZpbGUgPSBmaWxlO1xyXG4gICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0YXJ0KCk7XHJcbiAgICAgIGZvciAoY29uc3QgW2lkeCwgaXRlbV0gb2YgdGhpcy5pdGVtcy5lbnRyaWVzKCkpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLnZhbGlkYXRlKGl0ZW0sIGlkeCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIE7hur91IGtow7RuZyBjw7MgZXJyb3IgdGjDrCB0aeG6v3AgdOG7pWMgdmFsaWRhdGUgdOG7qyBvcHRpb24gdmFsaWRhdGUgdHJ1eeG7gW4gdsOgb1xyXG4gICAgICBpZiAoIXRoaXMuaXRlbXMuc29tZSh0aGlzLiNpc0Vycm9yKSAmJiBlcnJvclZhbGlkYXRpb24pIHtcclxuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgZXJyb3JWYWxpZGF0aW9uKHRoaXMuaXRlbXMubWFwKGUgPT4gZS5kYXRhKSk7XHJcbiAgICAgICAgcmVzdWx0cy5mb3JFYWNoKHJlc3VsdCA9PiB0aGlzLml0ZW1zW3Jlc3VsdC5pZHhdLnNkLnZhbGlkYXRpb24uZXJyb3IgPSByZXN1bHQubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIE7hur91IGtow7RuZyBjw7Mgd2FybmluZyB0aMOsIHRp4bq/cCB04bulYyB2YWxpZGF0ZSB04burIG9wdGlvbiB2YWxpZGF0ZSB0cnV54buBbiB2w6BvXHJcbiAgICAgIGlmICghdGhpcy5pdGVtcy5zb21lKHRoaXMuI2lzV2FybmluZykgJiYgd2FybmluZ1ZhbGlkYXRpb24pIHtcclxuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgd2FybmluZ1ZhbGlkYXRpb24odGhpcy5pdGVtcy5tYXAoZSA9PiBlLmRhdGEpKTtcclxuICAgICAgICByZXN1bHRzLmZvckVhY2gocmVzdWx0ID0+IHRoaXMuaXRlbXNbcmVzdWx0LmlkeF0uc2QudmFsaWRhdGlvbi53YXJuaW5nID0gcmVzdWx0Lm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLiNwYWdpbmF0b3IucGFnZUluZGV4ID0gMDtcclxuICAgICAgdGhpcy4jcmVsb2FkKCk7XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICAgIHRoaXMuaXNVcGxvYWRlZCA9IGZhbHNlO1xyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIHRoaXMubm90aWZ5U2VydmljZS5oYW5kbGUuZXJyb3IoZXJyKTtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RvcCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUgPSBhc3luYyAoZXhjZWxJdGVtOiBTZEV4Y2VsSXRlbSwgaWR4OiBudW1iZXIpID0+IHtcclxuICAgIGNvbnN0IHsgZGF0YTogaXRlbSwgc2Q6IHsgdmFsaWRhdGlvbiB9IH0gPSBleGNlbEl0ZW07XHJcbiAgICBjb25zdCB7IHRyYW5zbGF0ZSB9ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlO1xyXG4gICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGhpcy5vcHRpb24uY29sdW1ucykge1xyXG4gICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXSA9IHt9O1xyXG4gICAgICBpZiAoIXRoaXMuc2RDb2x1bW5IaWRkZW4udHJhbnNmb3JtKGNvbHVtbikpIHtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGlmIChjb2x1bW4uZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGl0ZW1bY29sdW1uLmZpZWxkXSA9IGl0ZW1bY29sdW1uLmZpZWxkXSA/PyBjb2x1bW4uZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnJlcXVpcmVkICYmICFpdGVtW2NvbHVtbi5maWVsZF0gJiYgaXRlbVtjb2x1bW4uZmllbGRdICE9PSAwKSB7XHJcbiAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke3RyYW5zbGF0ZSgncmVxdWlyZWQnKX1gO1xyXG4gICAgICAgICAgZXJyb3JzLnB1c2goYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9YCk7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgY29uc3QgdmFsdWUgPSAoaXRlbVtjb2x1bW4uZmllbGRdIHx8ICcnKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgaWYgKGNvbHVtbi5taW5MZW5ndGggIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS5sZW5ndGggPCBjb2x1bW4ubWluTGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yID0gYCR7dHJhbnNsYXRlKCdNaW4gbGVuZ3RoJyl9OiAke2NvbHVtbi5taW5MZW5ndGh9YDtcclxuICAgICAgICAgICAgZXJyb3JzLnB1c2goYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9YCk7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGNvbHVtbi5tYXhMZW5ndGggIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS5sZW5ndGggPiBjb2x1bW4ubWF4TGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yID0gYCR7dHJhbnNsYXRlKCdNYXggbGVuZ3RoJyl9OiAke2NvbHVtbi5tYXhMZW5ndGh9YDtcclxuICAgICAgICAgICAgZXJyb3JzLnB1c2goYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9YCk7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaXRlbVtjb2x1bW4uZmllbGRdID0gdmFsdWU7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgIGlmIChpdGVtW2NvbHVtbi5maWVsZF0pIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAraXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yID0gYCR7aXRlbVtjb2x1bW4uZmllbGRdfSAke3RyYW5zbGF0ZSgnaXMgbm90IGEgbnVtYmVyJyl9YDtcclxuICAgICAgICAgICAgICBlcnJvcnMucHVzaChgPHN0cm9uZz5bJHtjb2x1bW4udGl0bGUgfHwgY29sdW1uLmZpZWxkfV08L3N0cm9uZz4gJHt2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvcn1gKTtcclxuICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpdGVtW2NvbHVtbi5maWVsZF0gPSB2YWx1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghaXRlbVtjb2x1bW4uZmllbGRdICYmIGl0ZW1bY29sdW1uLmZpZWxkXSAhPT0gMCkge1xyXG4gICAgICAgICAgICBpdGVtW2NvbHVtbi5maWVsZF0gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoY29sdW1uLm1pblZhbHVlICE9PSB1bmRlZmluZWQgJiYgaXRlbVtjb2x1bW4uZmllbGRdIDwgY29sdW1uLm1pblZhbHVlKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yID0gYCR7aXRlbVtjb2x1bW4uZmllbGRdfSAke3RyYW5zbGF0ZSgnTWluIHZhbHVlJyl9OiAke2NvbHVtbi5taW5WYWx1ZX1gO1xyXG4gICAgICAgICAgICBlcnJvcnMucHVzaChgPHN0cm9uZz5bJHtjb2x1bW4udGl0bGUgfHwgY29sdW1uLmZpZWxkfV08L3N0cm9uZz4gJHt2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvcn1gKTtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoY29sdW1uLm1heFZhbHVlICE9PSB1bmRlZmluZWQgJiYgaXRlbVtjb2x1bW4uZmllbGRdID4gY29sdW1uLm1heFZhbHVlKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yID0gYCR7aXRlbVtjb2x1bW4uZmllbGRdfSAke3RyYW5zbGF0ZSgnTWF4IHZhbHVlJyl9OiAke2NvbHVtbi5tYXhWYWx1ZX1gO1xyXG4gICAgICAgICAgICBlcnJvcnMucHVzaChgPHN0cm9uZz5bJHtjb2x1bW4udGl0bGUgfHwgY29sdW1uLmZpZWxkfV08L3N0cm9uZz4gJHt2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvcn1gKTtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Jvb2wnKSB7XHJcbiAgICAgICAgICBpZiAoaXRlbVtjb2x1bW4uZmllbGRdID09PSAwIHx8IGl0ZW1bY29sdW1uLmZpZWxkXSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgaXRlbVtjb2x1bW4uZmllbGRdID0gJzAnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGl0ZW1bY29sdW1uLmZpZWxkXSA9PT0gMSB8fCBpdGVtW2NvbHVtbi5maWVsZF0gPT09IHRydWUpIHtcclxuICAgICAgICAgICAgaXRlbVtjb2x1bW4uZmllbGRdID0gJzEnO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChpdGVtW2NvbHVtbi5maWVsZF0pIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAraXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKHZhbHVlKSB8fCAodmFsdWUgIT09IDAgJiYgdmFsdWUgIT09IDEpKSB7XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3IgPSBgJHt0cmFuc2xhdGUoJ1ZhbHVlIHNob3VkIGJlIDAgb3IgMScpfWA7XHJcbiAgICAgICAgICAgICAgZXJyb3JzLnB1c2goYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9YCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKGNvbHVtbi5wYXJzZVRvQm9vbCkge1xyXG4gICAgICAgICAgICAgICAgaXRlbVtjb2x1bW4uZmllbGRdID0gaXRlbVtjb2x1bW4uZmllbGRdID09PSAnMSc7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ3ZhbHVlcycpIHtcclxuICAgICAgICAgIGlmIChpdGVtW2NvbHVtbi5maWVsZF0gJiYgdHlwZW9mIChpdGVtW2NvbHVtbi5maWVsZF0pICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgKGl0ZW1bY29sdW1uLmZpZWxkXSkgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yID0gYCR7aXRlbVtjb2x1bW4uZmllbGRdfSAke3RyYW5zbGF0ZSgnSW52YWxpZCBkYXRhIHR5cGUnKX1gO1xyXG4gICAgICAgICAgICBlcnJvcnMucHVzaChgPHN0cm9uZz5bJHtjb2x1bW4udGl0bGUgfHwgY29sdW1uLmZpZWxkfV08L3N0cm9uZz4gJHt2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvcn1gKTtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoY29sdW1uLmNoZWNrVmFsdWVJbkFycmF5ICYmIGl0ZW1bY29sdW1uLmZpZWxkXSAmJiAhY29sdW1uLnZhbHVlcy5zb21lKGUgPT4gZS50b1N0cmluZygpID09PSBpdGVtW2NvbHVtbi5maWVsZF0udG9TdHJpbmcoKSkpIHtcclxuICAgICAgICAgICAgdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3IgPSBgJHtpdGVtW2NvbHVtbi5maWVsZF19ICR7dHJhbnNsYXRlKCdWYWx1ZSBub3QgaW4nKX0gWyR7Y29sdW1uLnZhbHVlcy5qb2luKCl9XWA7XHJcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfWApO1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnZGF0ZScgfHwgY29sdW1uLnR5cGUgPT09ICdkYXRldGltZScgfHwgY29sdW1uLnR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgICAgY29uc3QgeyB0eXBlLCBmb3JtYXQgfSA9IGNvbHVtbjtcclxuICAgICAgICAgIGNvbnN0IHZhbCA9IGl0ZW1bY29sdW1uLmZpZWxkXTtcclxuICAgICAgICAgIGlmIChmb3JtYXQgJiYgaXRlbVtjb2x1bW4uZmllbGRdKSB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgKHZhbCkgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3IgPSBgJHt0cmFuc2xhdGUoJ0ludmFsaWQgZm9ybWF0Jyl9ICR7Y29sdW1uLmZvcm1hdH06ICR7dmFsfWA7XHJcbiAgICAgICAgICAgICAgZXJyb3JzLnB1c2goYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9YCk7XHJcbiAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdkYXRlJyAmJiAhdGhpcy4jaXNWYWxpZERhdGUoZm9ybWF0LCB2YWwpKSB7XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3IgPSBgJHt0cmFuc2xhdGUoJ0ludmFsaWQgZm9ybWF0Jyl9ICR7Y29sdW1uLmZvcm1hdH06ICR7dmFsfWA7XHJcbiAgICAgICAgICAgICAgZXJyb3JzLnB1c2goYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9YCk7XHJcbiAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICd0aW1lJyAmJiAhdGhpcy4jaXNWYWxpZFRpbWUoZm9ybWF0LCB2YWwpKSB7XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3IgPSBgJHt0cmFuc2xhdGUoJ0ludmFsaWQgZm9ybWF0Jyl9ICR7Y29sdW1uLmZvcm1hdH06ICR7dmFsfWA7XHJcbiAgICAgICAgICAgICAgZXJyb3JzLnB1c2goYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9YCk7XHJcbiAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdkYXRldGltZScgJiYgIXRoaXMuI2lzVmFsaWREYXRlVGltZShmb3JtYXQsIHZhbCkpIHtcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke3RyYW5zbGF0ZSgnSW52YWxpZCBmb3JtYXQnKX0gJHtjb2x1bW4uZm9ybWF0fTogJHt2YWx9YDtcclxuICAgICAgICAgICAgICBlcnJvcnMucHVzaChgPHN0cm9uZz5bJHtjb2x1bW4udGl0bGUgfHwgY29sdW1uLmZpZWxkfV08L3N0cm9uZz4gJHt2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvcn1gKTtcclxuICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpdGVtW2NvbHVtbi5maWVsZF0gPSBEYXRlLnBhcnNlRnJvbSh2YWwsIGNvbHVtbi5mb3JtYXQpLnRvRm9ybWF0KCdNTS9kZC95eXl5IEhIOm1tOnNzJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaXRlbVtjb2x1bW4uZmllbGRdICYmICFEYXRlLmlzRGF0ZShpdGVtW2NvbHVtbi5maWVsZF0pKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yID0gYCR7dHJhbnNsYXRlKCdJbnZhbGlkIGRhdGUnKX06ICR7aXRlbVtjb2x1bW4uZmllbGRdfWA7XHJcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfWApO1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3IgJiYgY29sdW1uLmVycm9yVmFsaWRhdGlvbikge1xyXG4gICAgICAgICAgY29uc3QgZXJyb3IgPSBhd2FpdCBjb2x1bW4uZXJyb3JWYWxpZGF0aW9uKGl0ZW0sIGl0ZW1bY29sdW1uLmZpZWxkXSwgaWR4KTtcclxuICAgICAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke2Vycm9yfWA7XHJcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfWApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS53YXJuaW5nICYmIGNvbHVtbi53YXJuaW5nVmFsaWRhdGlvbikge1xyXG4gICAgICAgICAgY29uc3Qgd2FybmluZyA9IGF3YWl0IGNvbHVtbi53YXJuaW5nVmFsaWRhdGlvbihpdGVtLCBpdGVtW2NvbHVtbi5maWVsZF0sIGlkeCk7XHJcbiAgICAgICAgICBpZiAod2FybmluZykge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS53YXJuaW5nID0gYCR7d2FybmluZ31gO1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLndhcm5pbmcgKz0gYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7d2FybmluZ308YnI+YDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gY2F0Y2ggKGV4KSB7XHJcbiAgICAgICAgdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3IgPSBgJHtleD8ubWVzc2FnZSB8fCBleD8uZXJyb3IgfHwgZXggfHwgJ0PDsyBs4buXaSB44bqjeSByYSd9YDtcclxuICAgICAgICBlcnJvcnMucHVzaChgPHN0cm9uZz5bJHtjb2x1bW4udGl0bGUgfHwgY29sdW1uLmZpZWxkfV08L3N0cm9uZz4gJHt2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvcn1gKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdmFsaWRhdGlvbi5lcnJvciA9IGVycm9ycy5qb2luKCc8YnI+Jyk7XHJcbiAgfVxyXG5cclxuICAjcGFyc2UgPSAoaXRlbTogU2RFeGNlbEl0ZW0pID0+IHtcclxuICAgIGNvbnN0IHsgZGF0YSB9ID0gaXRlbTtcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgI21hcEl0ZW0gPSAoaXRlbTogU2RFeGNlbEl0ZW0pID0+IHtcclxuICAgIGNvbnN0IHsgZGF0YSB9ID0gaXRlbTtcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgYWNjZXB0ID0gKCkgPT4ge1xyXG4gICAgY29uc3Qgc3VjY2Vzc0l0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIodGhpcy4jaXNTdWNjZXNzKS5tYXAodGhpcy4jbWFwSXRlbSk7XHJcbiAgICBjb25zdCBlcnJvckl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIodGhpcy4jaXNFcnJvcikubWFwKHRoaXMuI21hcEl0ZW0pO1xyXG4gICAgY29uc3Qgd2FybmluZ0l0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIodGhpcy4jaXNXYXJuaW5nKS5tYXAodGhpcy4jbWFwSXRlbSk7XHJcbiAgICB0aGlzLm9wdGlvbj8ub25BY2NlcHQodGhpcy5pdGVtcy5tYXAodGhpcy4jbWFwSXRlbSksIHN1Y2Nlc3NJdGVtcywgZXJyb3JJdGVtcywgd2FybmluZ0l0ZW1zLCB0aGlzLmZpbGUpO1xyXG4gICAgdGhpcy5pc1VwbG9hZGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHNldFZhbGlkYXRpb24gPSAodmFsaWRhdGVzOiB7IGlkeDogbnVtYmVyLCBtZXNzYWdlRXJyb3I/OiBzdHJpbmcsIG1lc3NhZ2VXYXJuaW5nPzogc3RyaW5nLCBtZXNzYWdlU3VjY2Vzcz86IHN0cmluZyB9W10pID0+IHtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbGlkYXRlcykpIHtcclxuICAgICAgdmFsaWRhdGVzLmZvckVhY2godmFsaWRhdGUgPT4ge1xyXG4gICAgICAgIHRoaXMuaXRlbXNbdmFsaWRhdGUuaWR4XS5zZC52YWxpZGF0aW9uLmVycm9yID0gdmFsaWRhdGUubWVzc2FnZUVycm9yO1xyXG4gICAgICAgIHRoaXMuaXRlbXNbdmFsaWRhdGUuaWR4XS5zZC52YWxpZGF0aW9uLndhcm5pbmcgPSB2YWxpZGF0ZS5tZXNzYWdlV2FybmluZztcclxuICAgICAgICB0aGlzLml0ZW1zW3ZhbGlkYXRlLmlkeF0uc2QudmFsaWRhdGlvbi5zdWNjZXNzID0gdmFsaWRhdGUubWVzc2FnZVN1Y2Nlc3M7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy4jcmVsb2FkKCk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICB2aWV3ID0gKHNob3dpbmc6ICdBTEwnIHwgJ1NVQ0NFU1MnIHwgJ1dBUk5JTkcnIHwgJ0VSUk9SJyA9ICdBTEwnKSA9PiB7XHJcbiAgICB0aGlzLnNob3dpbmcgPSBzaG93aW5nO1xyXG4gICAgdGhpcy4jcGFnaW5hdG9yLnBhZ2VJbmRleCA9IDA7XHJcbiAgICB0aGlzLiNyZWxvYWQoKTtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkVGVtcGxhdGUgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCBzaGVldHM6IHtcclxuICAgICAgbmFtZTogc3RyaW5nLFxyXG4gICAgICBpdGVtczogYW55W10sXHJcbiAgICAgIGZpZWxkczogc3RyaW5nW11cclxuICAgIH1bXSA9IFtdO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb24/LnNoZWV0cykpIHtcclxuICAgICAgZm9yIChjb25zdCBzaGVldCBvZiB0aGlzLm9wdGlvbi5zaGVldHMpIHtcclxuICAgICAgICBpZiAoc2hlZXQubmFtZSAmJiBzaGVldC5pdGVtcyAmJiBzaGVldC5maWVsZHMpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNoZWV0Lml0ZW1zKSkge1xyXG4gICAgICAgICAgICBzaGVldHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogc2hlZXQubmFtZSxcclxuICAgICAgICAgICAgICBpdGVtczogc2hlZXQuaXRlbXMsXHJcbiAgICAgICAgICAgICAgZmllbGRzOiBzaGVldC5maWVsZHNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzaGVldHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogc2hlZXQubmFtZSxcclxuICAgICAgICAgICAgICBpdGVtczogYXdhaXQgc2hlZXQuaXRlbXMoKSxcclxuICAgICAgICAgICAgICBmaWVsZHM6IHNoZWV0LmZpZWxkc1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGNvbHVtbk5vdEhpZGRlbnMgPSB0aGlzLm9wdGlvbi5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gdGhpcy5zZENvbHVtbkhpZGRlbi50cmFuc2Zvcm0oY29sdW1uKSk7XHJcbiAgICBjb25zdCBleGNlbFRlbXBsYXRlOiBTZEV4cG9ydFRlbXBsYXRlID0ge1xyXG4gICAgICBmaWxlTmFtZTogdGhpcy5vcHRpb24uZmlsZU5hbWUgfHwgJ1RlbXBsYXRlJyxcclxuICAgICAgY29sdW1uczogY29sdW1uTm90SGlkZGVucy5tYXAoY29sdW1uID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgZmllbGQ6IGNvbHVtbi5maWVsZCxcclxuICAgICAgICAgIHRpdGxlOiBjb2x1bW4udGl0bGUsXHJcbiAgICAgICAgICB3aWR0aDogY29sdW1uLndpZHRoLFxyXG4gICAgICAgICAgcmVxdWlyZWQ6IGNvbHVtbi5yZXF1aXJlZCxcclxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBjb2x1bW4uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICBmb250Q29sb3I6IGNvbHVtbi5mb250Q29sb3IsXHJcbiAgICAgICAgICBmaWxsOiBjb2x1bW4uZmlsbFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pLFxyXG4gICAgICBzaGVldHNcclxuICAgIH07XHJcbiAgICB0aGlzLmlzRG93bmxvYWRUZW1wbGF0ZSA9IHRydWU7XHJcbiAgICBhd2FpdCB0aGlzLmV4cG9ydFNlcnZpY2UuZ2VuZXJhdGVUZW1wbGF0ZShleGNlbFRlbXBsYXRlKS5maW5hbGx5KCgpID0+IHtcclxuICAgICAgdGhpcy5pc0Rvd25sb2FkVGVtcGxhdGUgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdGFydCgpO1xyXG4gICAgY29uc3QgY29sdW1uczogU2RFeHBvcnRUZW1wYXRlQ29sdW1uW10gPSBbe1xyXG4gICAgICBmaWVsZDogJ3NkTWVzc2FnZScsXHJcbiAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdVcGxvYWQgbWVzc2FnZScpLFxyXG4gICAgICB3aWR0aDogJzI1MHB4JyxcclxuICAgICAgcmVxdWlyZWQ6IGZhbHNlXHJcbiAgICB9LCAuLi4gdGhpcy5vcHRpb24uY29sdW1ucy5maWx0ZXIoY29sdW1uID0+IHRoaXMuc2RDb2x1bW5IaWRkZW4udHJhbnNmb3JtKGNvbHVtbikpXTtcclxuICAgIGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnQoe1xyXG4gICAgICBjb2x1bW5zLFxyXG4gICAgICBpdGVtczogdGhpcy5maWx0ZXJlZEl0ZW1zLm1hcChlID0+IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0ge307XHJcbiAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICAgICAgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICAuLi5yZXN1bHQsXHJcbiAgICAgICAgICAgIFtjb2x1bW4uZmllbGRdOiBlLnNkLm9yaWdpbj8uW2NvbHVtbi5maWVsZF1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIC4uLnJlc3VsdCxcclxuICAgICAgICAgIHNkTWVzc2FnZTogKGUuc2QudmFsaWRhdGlvbj8uZXJyb3IgfHwgZS5zZC52YWxpZGF0aW9uPy53YXJuaW5nIHx8IGUuc2QudmFsaWRhdGlvbj8uc3VjY2Vzcyk/LnJlcGxhY2UoLzxzdHJvbmc+L2csICcnKVxyXG4gICAgICAgICAgICAucmVwbGFjZSgvPFxcL3N0cm9uZz4vZywgJycpXHJcbiAgICAgICAgICAgIC5yZXBsYWNlKC88YnI+L2csICdcXG4nKVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pXHJcbiAgICB9KS5maW5hbGx5KHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RvcCk7XHJcbiAgfVxyXG5cclxuICAjaW1wb3J0ID0gKCkgPT4ge1xyXG4gICAgY29uc3QgeyB0cmFuc2xhdGUgfSA9IHRoaXMudHJhbnNsYXRlU2VydmljZTtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTx7IGl0ZW1zOiBhbnlbXSwgZmlsZTogRmlsZSB9PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGlmICgkKGAjJHt0aGlzLmltcG9ydElkfWApLmxlbmd0aCkge1xyXG4gICAgICAgICQoJ2JvZHknKS5jaGlsZHJlbihgIyR7dGhpcy5pbXBvcnRJZH1gKS5yZW1vdmUoKTtcclxuICAgICAgfVxyXG4gICAgICAkKCdib2R5JykuYXBwZW5kKGA8aW5wdXQgaWQ9XCIke3RoaXMuaW1wb3J0SWR9XCIgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgdHlwZT1cImZpbGVcIiAvPmApO1xyXG5cclxuICAgICAgJChgIyR7dGhpcy5pbXBvcnRJZH1gKS5vbignY2hhbmdlJywgKGV2dDogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGNvbnN0IHRhcmdldDogRGF0YVRyYW5zZmVyID0gZXZ0LnRhcmdldDtcclxuICAgICAgICAgIGlmICh0YXJnZXQuZmlsZXMubGVuZ3RoICE9PSAxKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0cmFuc2xhdGUoJ0Nhbm5vdCB1c2UgbXVsdGlwbGUgZmlsZXMnKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBmaWxlID0gdGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgICAgICAgY29uc3QgbGFzdERvdCA9IGZpbGUubmFtZS5sYXN0SW5kZXhPZignLicpO1xyXG4gICAgICAgICAgaWYgKGxhc3REb3QgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0cmFuc2xhdGUoJ0ludmFsaWQgZmlsZSBleHRlbnNpb24nKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSBmaWxlLm5hbWUuc3Vic3RyaW5nKGxhc3REb3QgKyAxKTtcclxuICAgICAgICAgIGlmIChleHRlbnNpb24udG9Mb3dlckNhc2UoKSAhPT0gJ3hsc3gnKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0cmFuc2xhdGUoJ1BsZWFzZSB1cGxvYWQgLnhsc3ggZmlsZScpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IHJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBic3RyOiBzdHJpbmcgPSBlLnRhcmdldC5yZXN1bHQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHdiOiBYTFNYLldvcmtCb29rID0gWExTWC5yZWFkKGJzdHIsIHsgdHlwZTogJ2JpbmFyeScgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHdzbmFtZTogc3RyaW5nID0gd2IuU2hlZXROYW1lc1swXTtcclxuICAgICAgICAgICAgY29uc3Qgd3M6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW3dzbmFtZV07XHJcbiAgICAgICAgICAgIGNvbnN0IGxpbmVzOiBBT0EgPSAoWExTWC51dGlscy5zaGVldF90b19qc29uKHdzLCB7IGhlYWRlcjogMSB9KSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlY29yZHMgPSBbXTtcclxuICAgICAgICAgICAgY29uc3QgaGVhZGVycyA9IGxpbmVzWzBdO1xyXG4gICAgICAgICAgICBsaW5lcy5zcGxpY2UoMCwgMSk7XHJcbiAgICAgICAgICAgIGxpbmVzLmZvckVhY2gobGluZSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmVjb3JkID0ge307XHJcbiAgICAgICAgICAgICAgbGV0IGhhc1ZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgaGVhZGVycy5mb3JFYWNoKChoZWFkZXIsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZWNvcmRbaGVhZGVyXSA9IGxpbmVbaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxpbmVbaW5kZXhdICE9PSB1bmRlZmluZWQgJiYgbGluZVtpbmRleF0gIT09IG51bGwgJiYgbGluZVtpbmRleF0udG9TdHJpbmcoKSkge1xyXG4gICAgICAgICAgICAgICAgICBoYXNWYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIChyZWNvcmRbaGVhZGVyXSkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJlY29yZFtoZWFkZXJdID0gcmVjb3JkW2hlYWRlcl0udHJpbSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHJlY29yZFtoZWFkZXJdID09PSAnJyB8fCByZWNvcmRbaGVhZGVyXSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJlY29yZFtoZWFkZXJdID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBpZiAoaGFzVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJlY29yZHMucHVzaChyZWNvcmQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgIGl0ZW1zOiByZWNvcmRzLFxyXG4gICAgICAgICAgICAgIGZpbGU6IHRhcmdldC5maWxlc1swXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHRhcmdldC5maWxlc1swXSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgJChgIyR7dGhpcy5pbXBvcnRJZH1gKS50cmlnZ2VyKCdjbGljaycpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAjaXNWYWxpZERhdGUgPSAoZm9ybWF0OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgIGlmICh2YWx1ZT8ubGVuZ3RoICE9PSBmb3JtYXQ/Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZWdleCA9IC9eKD86KD86MzEoXFwvfC18XFwuKSg/OjA/WzEzNTc4XXwxWzAyXSkpXFwxfCg/Oig/OjI5fDMwKShcXC98LXxcXC4pKD86MD9bMTMtOV18MVswLTJdKVxcMikpKD86KD86MVs2LTldfFsyLTldXFxkKT9cXGR7Mn0pJHxeKD86MjkoXFwvfC18XFwuKTA/MlxcMyg/Oig/Oig/OjFbNi05XXxbMi05XVxcZCk/KD86MFs0OF18WzI0NjhdWzA0OF18WzEzNTc5XVsyNl0pfCg/Oig/OjE2fFsyNDY4XVswNDhdfFszNTc5XVsyNl0pMDApKSkpJHxeKD86MD9bMS05XXwxXFxkfDJbMC04XSkoXFwvfC18XFwuKSg/Oig/OjA/WzEtOV0pfCg/OjFbMC0yXSkpXFw0KD86KD86MVs2LTldfFsyLTldXFxkKT9cXGR7Mn0pJC87XHJcbiAgICByZXR1cm4gcmVnZXgudGVzdCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAjaXNWYWxpZFRpbWUgPSAoZm9ybWF0OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgIGlmICh2YWx1ZT8ubGVuZ3RoICE9PSBmb3JtYXQ/Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gICNpc1ZhbGlkRGF0ZVRpbWUgPSAoZm9ybWF0OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgIGlmICh2YWx1ZT8ubGVuZ3RoICE9PSBmb3JtYXQ/Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBkYXRlcyA9IHZhbHVlPy5zcGxpdCgnICcpO1xyXG4gICAgaWYgKGRhdGVzLmxlbmd0aCAhPT0gMikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBkYXRlID0gZGF0ZXNbMF07XHJcbiAgICBpZiAoIXRoaXMuI2lzVmFsaWREYXRlKCdkZC9NTS95eXl5JywgZGF0ZSkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGltZSA9IGRhdGVzWzFdO1xyXG4gICAgY29uc3QgcmVnZXggPSAvXigwWzAtOV18MVswLTldfDJbMC0zXSkoXFw6KSgwWzAtOV18WzAtNV1bMC05XSkkLztcclxuICAgIHJldHVybiByZWdleC50ZXN0KHRpbWUpO1xyXG4gIH1cclxufVxyXG5cclxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var _download
|
|
1
|
+
var _download;
|
|
2
2
|
import { __awaiter, __classPrivateFieldGet } from "tslib";
|
|
3
3
|
import { Injectable } from '@angular/core';
|
|
4
4
|
import JSZip from 'jszip';
|
|
@@ -13,30 +13,13 @@ export class SdZipService {
|
|
|
13
13
|
});
|
|
14
14
|
_download.set(this, (zip, fileName) => __awaiter(this, void 0, void 0, function* () {
|
|
15
15
|
const blob = yield zip.generateAsync({ type: 'blob' });
|
|
16
|
-
|
|
16
|
+
SdUtility.downloadBlob(blob, fileName || 'sd-zip');
|
|
17
17
|
}));
|
|
18
|
-
_blobToSaveAs.set(this, (blob, fileName = 'sd-zip') => {
|
|
19
|
-
try {
|
|
20
|
-
const url = window.URL.createObjectURL(blob);
|
|
21
|
-
const link = document.createElement('a');
|
|
22
|
-
if (link.download !== undefined) { // feature detection
|
|
23
|
-
link.setAttribute('href', url);
|
|
24
|
-
link.setAttribute('download', `${fileName}_${new Date().toFormat('yyyy_MM_dd_HH_mm')}`);
|
|
25
|
-
link.style.visibility = 'hidden';
|
|
26
|
-
document.body.appendChild(link);
|
|
27
|
-
link.click();
|
|
28
|
-
document.body.removeChild(link);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
catch (e) {
|
|
32
|
-
console.error('BlobToSaveAs error', e);
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
18
|
}
|
|
36
19
|
}
|
|
37
|
-
_download = new WeakMap()
|
|
20
|
+
_download = new WeakMap();
|
|
38
21
|
SdZipService.decorators = [
|
|
39
22
|
{ type: Injectable }
|
|
40
23
|
];
|
|
41
24
|
SdZipService.ctorParameters = () => [];
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemlwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL3ppcC8iLCJzb3VyY2VzIjpbInNyYy9saWIvemlwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixNQUFNLE9BQU8sWUFBWTtJQUN2QjtRQUdBLFFBQUcsR0FBRyxDQUFPLElBQXlDLEVBQUUsUUFBaUIsRUFBRSxFQUFFO1lBQzNFLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7WUFDMUIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDdkMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLFFBQVEsR0FBRyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN6RDtZQUNELE1BQU0sNkNBQUEsSUFBSSxFQUFXLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUEsQ0FBQTtRQUVELG9CQUFZLENBQU8sR0FBVSxFQUFFLFFBQWlCLEVBQUUsRUFBRTtZQUNsRCxNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUN2RCxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksUUFBUSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFBLEVBQUE7SUFiRCxDQUFDOzs7O1lBSEYsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IEpTWmlwIGZyb20gJ2pzemlwJztcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2RaaXBTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcblxyXG4gIHppcCA9IGFzeW5jIChhcmdzOiB7IGZpbGVOYW1lPzogc3RyaW5nLCBibG9iOiBCbG9iIH1bXSwgZmlsZU5hbWU/OiBzdHJpbmcpID0+IHtcclxuICAgIGNvbnN0IGpzemlwID0gbmV3IEpTWmlwKCk7XHJcbiAgICBmb3IgKGNvbnN0IFtpZHgsIGFyZ10gb2YgYXJncy5lbnRyaWVzKCkpIHtcclxuICAgICAganN6aXAuZmlsZShhcmcuZmlsZU5hbWUgfHwgYEZpbGUgJHtpZHggKyAxfWAsIGFyZy5ibG9iKTtcclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMuI2Rvd25sb2FkKGpzemlwLCBmaWxlTmFtZSk7XHJcbiAgfVxyXG5cclxuICAjZG93bmxvYWQgPSBhc3luYyAoemlwOiBKU1ppcCwgZmlsZU5hbWU/OiBzdHJpbmcpID0+IHtcclxuICAgIGNvbnN0IGJsb2IgPSBhd2FpdCB6aXAuZ2VuZXJhdGVBc3luYyh7IHR5cGU6ICdibG9iJyB9KTtcclxuICAgIFNkVXRpbGl0eS5kb3dubG9hZEJsb2IoYmxvYiwgZmlsZU5hbWUgfHwgJ3NkLXppcCcpO1xyXG4gIH1cclxufSJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"SdExportTemplate":{"__symbolic":"interface"},"SdExportTempateColumn":{"__symbolic":"interface"},"SdExportFile":{"__symbolic":"interface"},"SdExportColumn":{"__symbolic":"interface"},"IExportOption":{"__symbolic":"interface"},"IBigExportRequest":{"__symbolic":"interface"},"IBigExportResponse":{"__symbolic":"interface"},"GroupPermission":{"__symbolic":"interface"},"API":{"
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"SdExportTemplate":{"__symbolic":"interface"},"SdExportTempateColumn":{"__symbolic":"interface"},"SdExportFile":{"__symbolic":"interface"},"SdExportColumn":{"__symbolic":"interface"},"IExportOption":{"__symbolic":"interface"},"IBigExportRequest":{"__symbolic":"interface"},"IBigExportResponse":{"__symbolic":"interface"},"GroupPermission":{"__symbolic":"interface"},"API":{"uploadTemplate":"/excel/uploadTemplate","generateUploadTemplate":"/excel/generateUploadTemplate","filesInFolder":"/excel/filesInFolder","removeFile":"/excel/remove","sdExportByTemplate":"/excel/sd-export-by-template","sdMergePDF":"/excel/sd-merge-pdf"},"SdCellValue":{"__symbolic":"interface"},"SdExcelColor":{"__symbolic":"interface"},"SdExcelFont":{"__symbolic":"interface"},"SdExcelAlignment":{"__symbolic":"interface"},"SdExcelBorderStyle":{"__symbolic":"interface"},"SdExcelBorder":{"__symbolic":"interface"},"SdExcelBorders":{"__symbolic":"interface"},"SdExcelFillPatterns":{"__symbolic":"interface"},"SdExcelFillPattern":{"__symbolic":"interface"},"SdExcelFill":{"__symbolic":"interface"},"SdStyle":{"__symbolic":"interface"},"SdCell":{"__symbolic":"interface"},"SdSheet":{"__symbolic":"interface"},"SdExportCustomOption":{"__symbolic":"interface"},"SdExportService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":144,"character":5},"arguments":[{"__symbolic":"reference","module":"@sd-angular/core/common","name":"FIREBASE_CONFIG","line":144,"character":12}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":144,"character":30}}]],"parameters":[{"__symbolic":"reference","module":"@sd-angular/core/api","name":"SdApiService","line":142,"character":24},{"__symbolic":"reference","module":"@sd-angular/core/notify","name":"SdNotifyService","line":143,"character":27},{"__symbolic":"reference","module":"@sd-angular/core/common","name":"IFirebaseConfiguration","line":144,"character":72}]}]},"statics":{"ɵprov":{}}}},"origins":{"SdExportTemplate":"./src/lib/export.model","SdExportTempateColumn":"./src/lib/export.model","SdExportFile":"./src/lib/export.model","SdExportColumn":"./src/lib/export.model","IExportOption":"./src/lib/export.model","IBigExportRequest":"./src/lib/export.model","IBigExportResponse":"./src/lib/export.model","GroupPermission":"./src/lib/export.model","API":"./src/lib/export.model","SdCellValue":"./src/lib/excel.model","SdExcelColor":"./src/lib/excel.model","SdExcelFont":"./src/lib/excel.model","SdExcelAlignment":"./src/lib/excel.model","SdExcelBorderStyle":"./src/lib/excel.model","SdExcelBorder":"./src/lib/excel.model","SdExcelBorders":"./src/lib/excel.model","SdExcelFillPatterns":"./src/lib/excel.model","SdExcelFillPattern":"./src/lib/excel.model","SdExcelFill":"./src/lib/excel.model","SdStyle":"./src/lib/excel.model","SdCell":"./src/lib/excel.model","SdSheet":"./src/lib/excel.model","SdExportCustomOption":"./src/lib/excel.model","SdExportService":"./src/lib/export.service"},"importAs":"@sd-angular/core/export"}
|
|
@@ -57,15 +57,10 @@ export interface IBigExportResponse {
|
|
|
57
57
|
}
|
|
58
58
|
export declare type GroupPermission = 'view' | 'add' | 'delete';
|
|
59
59
|
export declare const API: {
|
|
60
|
-
generateTemplate: string;
|
|
61
60
|
uploadTemplate: string;
|
|
62
61
|
generateUploadTemplate: string;
|
|
63
|
-
export: string;
|
|
64
|
-
downloadByTemplate: string;
|
|
65
62
|
filesInFolder: string;
|
|
66
63
|
removeFile: string;
|
|
67
|
-
sdExport: string;
|
|
68
64
|
sdExportByTemplate: string;
|
|
69
65
|
sdMergePDF: string;
|
|
70
|
-
sdGenerateTemplate: string;
|
|
71
66
|
};
|
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
import { SdApiService } from '@sd-angular/core/api';
|
|
2
2
|
import { SdExportTemplate, IExportOption, SdExportFile, SdExportCustomOption } from './export.model';
|
|
3
3
|
import { SdNotifyService } from '@sd-angular/core/notify';
|
|
4
|
-
import { SdUtilityService } from '@sd-angular/core/utility';
|
|
5
4
|
import { IFirebaseConfiguration } from '@sd-angular/core/common';
|
|
6
5
|
export declare class SdExportService {
|
|
7
6
|
#private;
|
|
8
7
|
private apiService;
|
|
9
|
-
private utilityService;
|
|
10
8
|
private notifyService;
|
|
11
9
|
private firebaseConfiguration;
|
|
12
10
|
private get functionUrl();
|
|
13
11
|
private get folder();
|
|
14
12
|
private get userFolder();
|
|
15
|
-
constructor(apiService: SdApiService,
|
|
13
|
+
constructor(apiService: SdApiService, notifyService: SdNotifyService, firebaseConfiguration: IFirebaseConfiguration);
|
|
16
14
|
generateTemplate: (template: SdExportTemplate) => Promise<void>;
|
|
17
15
|
uploadTemplate: (args: {
|
|
18
16
|
key: string;
|
|
@@ -47,12 +45,4 @@ export declare class SdExportService {
|
|
|
47
45
|
export: (option: IExportOption) => Promise<void>;
|
|
48
46
|
exportCustom: (option: SdExportCustomOption) => Promise<void>;
|
|
49
47
|
mergePDF: (urls: string[]) => Promise<void>;
|
|
50
|
-
loadExportedItems: (items: (pageSize: number, pageNumber: number) => {
|
|
51
|
-
total: number;
|
|
52
|
-
}) => Promise<void>;
|
|
53
|
-
}
|
|
54
|
-
export interface IExportInfo {
|
|
55
|
-
data: any[];
|
|
56
|
-
sheetName?: string;
|
|
57
|
-
fileName?: string;
|
|
58
48
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { of, Subject } from 'rxjs';
|
|
2
|
+
import { __awaiter, __classPrivateFieldGet, __classPrivateFieldSet } from 'tslib';
|
|
2
3
|
import { InjectionToken, ɵɵdefineInjectable, Injectable, Directive, TemplateRef, ViewContainerRef, Input, ElementRef, Renderer2, HostListener, NgModule } from '@angular/core';
|
|
3
4
|
import { FormControl } from '@angular/forms';
|
|
4
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from 'tslib';
|
|
5
5
|
import { CommonModule } from '@angular/common';
|
|
6
6
|
|
|
7
7
|
Array.prototype.search = function (searchText, fields) {
|
|
@@ -332,6 +332,127 @@ String.decrypt = (encripted) => {
|
|
|
332
332
|
return JSON.parse(strs.join(''));
|
|
333
333
|
};
|
|
334
334
|
|
|
335
|
+
SdUtility.upload = (option) => {
|
|
336
|
+
const uploadId = 'U1e09c1c0-b647-437e-995e-d7a1a1b60550';
|
|
337
|
+
const promise = new Promise((resolve, reject) => {
|
|
338
|
+
var _a;
|
|
339
|
+
const body = (_a = document.getElementsByTagName('body')) === null || _a === void 0 ? void 0 : _a[0];
|
|
340
|
+
if (!body) {
|
|
341
|
+
resolve(null);
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
const existedElement = document.getElementById(uploadId);
|
|
345
|
+
if (existedElement) {
|
|
346
|
+
existedElement.remove();
|
|
347
|
+
}
|
|
348
|
+
const element = document.createElement('input');
|
|
349
|
+
element.setAttribute('id', uploadId);
|
|
350
|
+
element.setAttribute('type', 'file');
|
|
351
|
+
element.style.display = 'none';
|
|
352
|
+
body.appendChild(element);
|
|
353
|
+
element.addEventListener('change', (evt) => {
|
|
354
|
+
var _a;
|
|
355
|
+
try {
|
|
356
|
+
const target = evt.target;
|
|
357
|
+
const file = target.files.item(0);
|
|
358
|
+
if (file) {
|
|
359
|
+
const lastDot = file.name.lastIndexOf('.');
|
|
360
|
+
if (lastDot === -1) {
|
|
361
|
+
throw new Error(`File không đúng định dạng`);
|
|
362
|
+
}
|
|
363
|
+
const extension = file.name.substring(lastDot + 1);
|
|
364
|
+
if (option) {
|
|
365
|
+
if (((_a = option.extensions) === null || _a === void 0 ? void 0 : _a.length) && !option.extensions.some(e => e.toUpperCase() === extension.toUpperCase())) {
|
|
366
|
+
throw new Error(`File không đúng định dạng`);
|
|
367
|
+
}
|
|
368
|
+
if (option.maxSizeInMb && option.maxSizeInMb > 0 && option.maxSizeInMb * 1024 * 1024 < file.size) {
|
|
369
|
+
const message = `[${file.name}] Dung lượng tối đa ${option.maxSizeInMb} Mbs`;
|
|
370
|
+
throw new Error(message);
|
|
371
|
+
}
|
|
372
|
+
if (option.validator && option.validator(file.name)) {
|
|
373
|
+
const message = option.validator(file.name);
|
|
374
|
+
throw new Error(message);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
resolve(file);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
catch (error) {
|
|
381
|
+
reject(error);
|
|
382
|
+
}
|
|
383
|
+
});
|
|
384
|
+
element.click();
|
|
385
|
+
});
|
|
386
|
+
return promise;
|
|
387
|
+
};
|
|
388
|
+
SdUtility.download = (filePath, fileName) => {
|
|
389
|
+
const link = document.createElement('a');
|
|
390
|
+
link.download = `${fileName || 'File'}_${new Date().toFormat('yyyy_MM_dd_HH_mm')}`;
|
|
391
|
+
link.href = filePath;
|
|
392
|
+
link.style.visibility = 'hidden';
|
|
393
|
+
document.body.appendChild(link);
|
|
394
|
+
link.click();
|
|
395
|
+
link.remove();
|
|
396
|
+
};
|
|
397
|
+
SdUtility.downloadBlob = (blob, fileName) => {
|
|
398
|
+
try {
|
|
399
|
+
const url = window.URL.createObjectURL(blob);
|
|
400
|
+
const link = document.createElement('a');
|
|
401
|
+
if (link.download !== undefined) { // feature detection
|
|
402
|
+
link.download = `${fileName || 'File'}_${new Date().toFormat('yyyy_MM_dd_HH_mm')}`;
|
|
403
|
+
link.href = url;
|
|
404
|
+
link.style.visibility = 'hidden';
|
|
405
|
+
document.body.appendChild(link);
|
|
406
|
+
link.click();
|
|
407
|
+
window.URL.revokeObjectURL(url);
|
|
408
|
+
link.remove();
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
catch (e) {
|
|
412
|
+
console.error('BlobToSaveAs error', e);
|
|
413
|
+
}
|
|
414
|
+
};
|
|
415
|
+
SdUtility.changeAliasLowerCase = (alias) => {
|
|
416
|
+
var _a;
|
|
417
|
+
let str = (_a = alias === null || alias === void 0 ? void 0 : alias.toString()) !== null && _a !== void 0 ? _a : '';
|
|
418
|
+
str = str.toString().toLowerCase();
|
|
419
|
+
str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, 'a');
|
|
420
|
+
str = str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, 'e');
|
|
421
|
+
str = str.replace(/ì|í|ị|ỉ|ĩ/g, 'i');
|
|
422
|
+
str = str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, 'o');
|
|
423
|
+
str = str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, 'u');
|
|
424
|
+
str = str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, 'y');
|
|
425
|
+
str = str.replace(/đ/g, 'd');
|
|
426
|
+
str = str.replace(/!|@|%|\^|\*|\(|\)|\+|\=|\<|\>|\?|\/|,|\.|\:|\;|\'|\"|\&|\#|\[|\]|~|\$|_|`|-|{|}|\||\\/g, ' ');
|
|
427
|
+
str = str.replace(/ + /g, ' ');
|
|
428
|
+
str = str.trim();
|
|
429
|
+
return str;
|
|
430
|
+
};
|
|
431
|
+
SdUtility.copyToClipboard = (text) => {
|
|
432
|
+
navigator.clipboard.writeText(text);
|
|
433
|
+
};
|
|
434
|
+
SdUtility.allWithPaging = (func, defaultPageSize) => __awaiter(void 0, void 0, void 0, function* () {
|
|
435
|
+
var _a;
|
|
436
|
+
let pageSize = defaultPageSize || 1000;
|
|
437
|
+
let pageNumber = 0;
|
|
438
|
+
let count = 0;
|
|
439
|
+
let items = [];
|
|
440
|
+
while (true) {
|
|
441
|
+
const res = yield func(pageSize, pageNumber);
|
|
442
|
+
if (Array(res === null || res === void 0 ? void 0 : res.items) && (res === null || res === void 0 ? void 0 : res.total) > 0) {
|
|
443
|
+
items = [...items, ...res.items];
|
|
444
|
+
count += res.items.length;
|
|
445
|
+
pageNumber++;
|
|
446
|
+
if (count >= res.total || !((_a = res.items) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
447
|
+
return items;
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
else {
|
|
451
|
+
return [];
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
});
|
|
455
|
+
|
|
335
456
|
const FIREBASE_CONFIG = new InjectionToken('sd.firebase.configuration');
|
|
336
457
|
|
|
337
458
|
const FORM_CONFIG = new InjectionToken('sd.form.configuration');
|