igniteui-angular 14.2.34 → 14.2.36

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.
@@ -264,12 +264,12 @@ export class IgxTreeGridNormalizeRecordsPipe {
264
264
  const primaryKey = this.grid.primaryKey;
265
265
  // using flattened data because origin data may be hierarchical.
266
266
  const flatData = this.grid.flatData;
267
- const res = flatData.map(rec => ({
267
+ const res = flatData ? flatData.map(rec => ({
268
268
  rowID: this.grid.primaryKey ? rec[primaryKey] : rec,
269
269
  data: rec,
270
270
  level: 0,
271
271
  children: []
272
- }));
272
+ })) : [];
273
273
  return res;
274
274
  }
275
275
  }
@@ -313,4 +313,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImpor
313
313
  type: Inject,
314
314
  args: [IGX_GRID_BASE]
315
315
  }] }]; } });
316
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ncmlkLnBpcGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL3RyZWUtZ3JpZC90cmVlLWdyaWQucGlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFM0QsT0FBTyxFQUFZLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUtuRDs7R0FFRztBQUVILE1BQU0sT0FBTyw0QkFBNEI7SUFFckMsWUFBMkMsSUFBYztRQUFkLFNBQUksR0FBSixJQUFJLENBQVU7SUFBSSxDQUFDO0lBRXZELFNBQVMsQ0FBQyxVQUFpQixFQUFFLFVBQWtCLEVBQUUsVUFBa0IsRUFBRSxZQUFvQixFQUFFLENBQVM7UUFDdkcsSUFBSSxtQkFBbUIsR0FBc0IsRUFBRSxDQUFDO1FBQ2hELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7UUFDM0QsTUFBTSxRQUFRLEdBQVUsRUFBRSxDQUFDO1FBRTNCLElBQUksWUFBWSxFQUFFO1lBQ2QsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFDM0YsUUFBUSxFQUFFLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFD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M0csSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUMzQzthQUFNO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUN4RDtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7O2tIQW5CUSxxQkFBcUIsa0JBRVYsYUFBYTtnSEFGeEIscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBRGpDLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7OzBCQUdmLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVBcnJheSwgY2xvbmVIaWVyYXJjaGljYWxBcnJheSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgRGF0YVV0aWwgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZGF0YS11dGlsJztcbmltcG9ydCB7IElUcmVlR3JpZFJlY29yZCB9IGZyb20gJy4vdHJlZS1ncmlkLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgR3JpZFR5cGUsIElHWF9HUklEX0JBU0UgfSBmcm9tICcuLi9jb21tb24vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgR3JpZFBhZ2luZ01vZGUgfSBmcm9tICcuLi9jb21tb24vZW51bXMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHVibGljX2FwaSc7XG5pbXBvcnQgeyBJZ3hBZGRSb3cgfSBmcm9tICcuLi9jb21tb24vY3J1ZC5zZXJ2aWNlJztcbmltcG9ydCB7IElTb3J0aW5nRXhwcmVzc2lvbiB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9zb3J0aW5nLXN0cmF0ZWd5JztcbmltcG9ydCB7IElHcmlkU29ydGluZ1N0cmF0ZWd5IH0gZnJvbSAnLi4vY29tbW9uL3N0cmF0ZWd5JztcbmltcG9ydCB7IElHcm91cGluZ0V4cHJlc3Npb24gfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZ3JvdXBpbmctZXhwcmVzc2lvbi5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQFBpcGUoeyBuYW1lOiAndHJlZUdyaWRIaWVyYXJjaGl6aW5nJyB9KVxuZXhwb3J0IGNsYXNzIElneFRyZWVHcmlkSGllcmFyY2hpemluZ1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoSUdYX0dSSURfQkFTRSkgcHJpdmF0ZSBncmlkOiBHcmlkVHlwZSkgeyB9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKGNvbGxlY3Rpb246IGFueVtdLCBwcmltYXJ5S2V5OiBzdHJpbmcsIGZvcmVpZ25LZXk6IHN0cmluZywgY2hpbGREYXRhS2V5OiBzdHJpbmcsIF86IG51bWJlcik6IElUcmVlR3JpZFJlY29yZFtdIHtcbiAgICAgICAgbGV0IGhpZXJhcmNoaWNhbFJlY29yZHM6IElUcmVlR3JpZFJlY29yZFtdID0gW107XG4gICAgICAgIGNvbnN0IHRyZWVHcmlkUmVjb3Jkc01hcCA9IG5ldyBNYXA8YW55LCBJVHJlZUdyaWRSZWNvcmQ+KCk7XG4gICAgICAgIGNvbnN0IGZsYXREYXRhOiBhbnlbXSA9IFtdO1xuXG4gICAgICAgIGlmIChjaGlsZERhdGFLZXkpIHtcbiAgICAgICAgICAgIGhpZXJhcmNoaWNhbFJlY29yZHMgPSB0aGlzLmhpZXJhcmNoaXplUmVjdXJzaXZlKGNvbGxlY3Rpb24sIHByaW1hcnlLZXksIGNoaWxkRGF0YUtleSwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGZsYXREYXRhLCAwLCB0cmVlR3JpZFJlY29yZHNNYXApO1xuICAgICAgICB9IGVsc2UgaWYgKHByaW1hcnlLZXkpIHtcbiAgICAgICAgICAgIGhpZXJhcmNoaWNhbFJlY29yZHMgPSB0aGlzLmhpZXJhcmNoaXplRmxhdERhdGEoY29sbGVjdGlvbiwgcHJpbWFyeUtleSwgZm9yZWlnbktleSwgdHJlZUdyaWRSZWNvcmRzTWFwLCBmbGF0RGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdyaWQuZmxhdERhdGEgPSB0aGlzLmdyaWQudHJhbnNhY3Rpb25zLmVuYWJsZWQgP1xuICAgICAgICAgICAgZmxhdERhdGEuZmlsdGVyKHJlYyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdyaWQudHJhbnNhY3Rpb25zLmdldFN0YXRlKHRoaXMuZ2V0Um93SUQocHJpbWFyeUtleSwgcmVjKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICFzdGF0ZSB8fCBzdGF0ZS50eXBlICE9PSBUcmFuc2FjdGlvblR5cGUuQUREO1xuICAgICAgICAgICAgfSkgOiBmbGF0RGF0YTtcbiAgICAgICAgdGhpcy5ncmlkLnJlY29yZHMgPSB0cmVlR3JpZFJlY29yZHNNYXA7XG4gICAgICAgIHRoaXMuZ3JpZC5yb290UmVjb3JkcyA9IGhpZXJhcmNoaWNhbFJlY29yZHM7XG4gICAgICAgIHJldHVybiBoaWVyYXJjaGljYWxSZWNvcmRzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Um93SUQocHJpbWFyeUtleTogYW55LCByb3dEYXRhOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHByaW1hcnlLZXkgPyByb3dEYXRhW3ByaW1hcnlLZXldIDogcm93RGF0YTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhpZXJhcmNoaXplRmxhdERhdGEoY29sbGVjdGlvbjogYW55W10sIHByaW1hcnlLZXk6IHN0cmluZywgZm9yZWlnbktleTogc3RyaW5nLFxuICAgICAgICBtYXA6IE1hcDxhbnksIElUcmVlR3JpZFJlY29yZD4sIGZsYXREYXRhOiBhbnlbXSk6XG4gICAgICAgIElUcmVlR3JpZFJlY29yZFtdIHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBJVHJlZUdyaWRSZWNvcmRbXSA9IFtdO1xuICAgICAgICBjb25zdCBtaXNzaW5nUGFyZW50UmVjb3JkczogSVRyZWVHcmlkUmVjb3JkW10gPSBbXTtcbiAgICAgICAgY29sbGVjdGlvbi5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgICAgICBjb25zdCByZWNvcmQ6IElUcmVlR3JpZFJlY29yZCA9IHtcbiAgICAgICAgICAgICAgICBrZXk6IHRoaXMuZ2V0Um93SUQocHJpbWFyeUtleSwgcm93KSxcbiAgICAgICAgICAgICAgICBkYXRhOiByb3csXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gbWFwLmdldChyb3dbZm9yZWlnbktleV0pO1xuICAgICAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgICAgIHJlY29yZC5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2gocmVjb3JkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbWlzc2luZ1BhcmVudFJlY29yZHMucHVzaChyZWNvcmQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtYXAuc2V0KHJvd1twcmltYXJ5S2V5XSwgcmVjb3JkKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbWlzc2luZ1BhcmVudFJlY29yZHMuZm9yRWFjaChyZWNvcmQgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gbWFwLmdldChyZWNvcmQuZGF0YVtmb3JlaWduS2V5XSk7XG4gICAgICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICAgICAgcmVjb3JkLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgICAgICAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaChyZWNvcmQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChyZWNvcmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnNldEluZGVudGF0aW9uTGV2ZWxzKHJlc3VsdCwgMCwgZmxhdERhdGEpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJbmRlbnRhdGlvbkxldmVscyhjb2xsZWN0aW9uOiBJVHJlZUdyaWRSZWNvcmRbXSwgaW5kZW50YXRpb25MZXZlbDogbnVtYmVyLCBmbGF0RGF0YTogYW55W10pIHtcbiAgICAgICAgZm9yIChjb25zdCByZWNvcmQgb2YgY29sbGVjdGlvbikge1xuICAgICAgICAgICAgcmVjb3JkLmxldmVsID0gaW5kZW50YXRpb25MZXZlbDtcbiAgICAgICAgICAgIHJlY29yZC5leHBhbmRlZCA9IHRoaXMuZ3JpZC5ncmlkQVBJLmdldF9yb3dfZXhwYW5zaW9uX3N0YXRlKHJlY29yZCk7XG4gICAgICAgICAgICBmbGF0RGF0YS5wdXNoKHJlY29yZC5kYXRhKTtcblxuICAgICAgICAgICAgaWYgKHJlY29yZC5jaGlsZHJlbiAmJiByZWNvcmQuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0SW5kZW50YXRpb25MZXZlbHMocmVjb3JkLmNoaWxkcmVuLCBpbmRlbnRhdGlvbkxldmVsICsgMSwgZmxhdERhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWVyYXJjaGl6ZVJlY3Vyc2l2ZShjb2xsZWN0aW9uOiBhbnlbXSwgcHJpbWFyeUtleTogc3RyaW5nLCBjaGlsZERhdGFLZXk6IHN0cmluZyxcbiAgICAgICAgcGFyZW50OiBJVHJlZUdyaWRSZWNvcmQsIGZsYXREYXRhOiBhbnlbXSwgaW5kZW50YXRpb25MZXZlbDogbnVtYmVyLCBtYXA6IE1hcDxhbnksIElUcmVlR3JpZFJlY29yZD4pOiBJVHJlZUdyaWRSZWNvcmRbXSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogSVRyZWVHcmlkUmVjb3JkW10gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29sbGVjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgcmVjb3JkOiBJVHJlZUdyaWRSZWNvcmQgPSB7XG4gICAgICAgICAgICAgICAga2V5OiB0aGlzLmdldFJvd0lEKHByaW1hcnlLZXksIGl0ZW0pLFxuICAgICAgICAgICAgICAgIGRhdGE6IGl0ZW0sXG4gICAgICAgICAgICAgICAgcGFyZW50LFxuICAgICAgICAgICAgICAgIGxldmVsOiBpbmRlbnRhdGlvbkxldmVsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVjb3JkLmV4cGFuZGVkID0gdGhpcy5ncmlkLmdyaWRBUEkuZ2V0X3Jvd19leHBhbnNpb25fc3RhdGUocmVjb3JkKTtcbiAgICAgICAgICAgIGZsYXREYXRhLnB1c2goaXRlbSk7XG4gICAgICAgICAgICBtYXAuc2V0KHJlY29yZC5rZXksIHJlY29yZCk7XG4gICAgICAgICAgICByZWNvcmQuY2hpbGRyZW4gPSBpdGVtW2NoaWxkRGF0YUtleV0gP1xuICAgICAgICAgICAgICAgIHRoaXMuaGllcmFyY2hpemVSZWN1cnNpdmUoaXRlbVtjaGlsZERhdGFLZXldLCBwcmltYXJ5S2V5LCBjaGlsZERhdGFLZXksIHJlY29yZCwgZmxhdERhdGEsIGluZGVudGF0aW9uTGV2ZWwgKyAxLCBtYXApIDpcbiAgICAgICAgICAgICAgICB1bmRlZmluZWQ7XG4gICAgICAgICAgICByZXN1bHQucHVzaChyZWNvcmQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5AUGlwZSh7IG5hbWU6ICd0cmVlR3JpZEZsYXR0ZW5pbmcnIH0pXG5leHBvcnQgY2xhc3MgSWd4VHJlZUdyaWRGbGF0dGVuaW5nUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChJR1hfR1JJRF9CQVNFKSBwcml2YXRlIGdyaWQ6IEdyaWRUeXBlKSB7IH1cblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oY29sbGVjdGlvbjogSVRyZWVHcmlkUmVjb3JkW10sXG4gICAgICAgIGV4cGFuZGVkTGV2ZWxzOiBudW1iZXIsIGV4cGFuZGVkU3RhdGVzOiBNYXA8YW55LCBib29sZWFuPiwgXzogbnVtYmVyKTogYW55W10ge1xuXG4gICAgICAgIGNvbnN0IGRhdGE6IElUcmVlR3JpZFJlY29yZFtdID0gW107XG5cbiAgICAgICAgdGhpcy5ncmlkLnByb2Nlc3NlZFJvb3RSZWNvcmRzID0gY29sbGVjdGlvbjtcbiAgICAgICAgdGhpcy5ncmlkLnByb2Nlc3NlZFJlY29yZHMgPSBuZXcgTWFwPGFueSwgSVRyZWVHcmlkUmVjb3JkPigpO1xuXG4gICAgICAgIHRoaXMuZ2V0RmxhdERhdGFSZWN1cnNpdmUoY29sbGVjdGlvbiwgZGF0YSwgZXhwYW5kZWRMZXZlbHMsIGV4cGFuZGVkU3RhdGVzLCB0cnVlKTtcblxuICAgICAgICB0aGlzLmdyaWQucHJvY2Vzc2VkRXhwYW5kZWRGbGF0RGF0YSA9IGRhdGEubWFwKHIgPT4gci5kYXRhKTtcblxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZsYXREYXRhUmVjdXJzaXZlKGNvbGxlY3Rpb246IElUcmVlR3JpZFJlY29yZFtdLCBkYXRhOiBJVHJlZUdyaWRSZWNvcmRbXSxcbiAgICAgICAgZXhwYW5kZWRMZXZlbHM6IG51bWJlciwgZXhwYW5kZWRTdGF0ZXM6IE1hcDxhbnksIGJvb2xlYW4+LCBwYXJlbnRFeHBhbmRlZDogYm9vbGVhbikge1xuICAgICAgICBpZiAoIWNvbGxlY3Rpb24gfHwgIWNvbGxlY3Rpb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGhpZXJhcmNoaWNhbFJlY29yZCBvZiBjb2xsZWN0aW9uKSB7XG4gICAgICAgICAgICBpZiAocGFyZW50RXhwYW5kZWQpIHtcbiAgICAgICAgICAgICAgICBkYXRhLnB1c2goaGllcmFyY2hpY2FsUmVjb3JkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaGllcmFyY2hpY2FsUmVjb3JkLmV4cGFuZGVkID0gdGhpcy5ncmlkLmdyaWRBUEkuZ2V0X3Jvd19leHBhbnNpb25fc3RhdGUoaGllcmFyY2hpY2FsUmVjb3JkKTtcblxuICAgICAgICAgICAgdGhpcy51cGRhdGVOb25Qcm9jZXNzZWRSZWNvcmRFeHBhbnNpb24odGhpcy5ncmlkLCBoaWVyYXJjaGljYWxSZWNvcmQpO1xuXG4gICAgICAgICAgICB0aGlzLmdyaWQucHJvY2Vzc2VkUmVjb3Jkcy5zZXQoaGllcmFyY2hpY2FsUmVjb3JkLmtleSwgaGllcmFyY2hpY2FsUmVjb3JkKTtcblxuICAgICAgICAgICAgdGhpcy5nZXRGbGF0RGF0YVJlY3Vyc2l2ZShoaWVyYXJjaGljYWxSZWNvcmQuY2hpbGRyZW4sIGRhdGEsIGV4cGFuZGVkTGV2ZWxzLFxuICAgICAgICAgICAgICAgIGV4cGFuZGVkU3RhdGVzLCBwYXJlbnRFeHBhbmRlZCAmJiBoaWVyYXJjaGljYWxSZWNvcmQuZXhwYW5kZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVOb25Qcm9jZXNzZWRSZWNvcmRFeHBhbnNpb24oZ3JpZDogR3JpZFR5cGUsIHJlY29yZDogSVRyZWVHcmlkUmVjb3JkKSB7XG4gICAgICAgIGNvbnN0IHJlYyA9IGdyaWQucmVjb3Jkcy5nZXQocmVjb3JkLmtleSk7XG4gICAgICAgIHJlYy5leHBhbmRlZCA9IHJlY29yZC5leHBhbmRlZDtcbiAgICB9XG59XG5cbi8qKiBAaGlkZGVuICovXG5AUGlwZSh7IG5hbWU6ICd0cmVlR3JpZFNvcnRpbmcnIH0pXG5leHBvcnQgY2xhc3MgSWd4VHJlZUdyaWRTb3J0aW5nUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChJR1hfR1JJRF9CQVNFKSBwcml2YXRlIGdyaWQ6IEdyaWRUeXBlKSB7IH1cblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oXG4gICAgICAgIGhpZXJhcmNoaWNhbERhdGE6IElUcmVlR3JpZFJlY29yZFtdLFxuICAgICAgICBzb3J0RXhwcmVzc2lvbnM6IElTb3J0aW5nRXhwcmVzc2lvbltdLFxuICAgICAgICBncm91cEV4cHJlc3Npb25zOiBJR3JvdXBpbmdFeHByZXNzaW9uW10sXG4gICAgICAgIHNvcnRpbmc6IElHcmlkU29ydGluZ1N0cmF0ZWd5LFxuICAgICAgICBfOiBudW1iZXIsXG4gICAgICAgIHBpbm5lZD86IGJvb2xlYW4pOiBJVHJlZUdyaWRSZWNvcmRbXSB7XG5cbiAgICAgICAgY29uc3QgZXhwcmVzc2lvbnMgPSBncm91cEV4cHJlc3Npb25zID8gZ3JvdXBFeHByZXNzaW9ucy5jb25jYXQoc29ydEV4cHJlc3Npb25zKSA6IHNvcnRFeHByZXNzaW9ucztcbiAgICAgICAgbGV0IHJlc3VsdDogSVRyZWVHcmlkUmVjb3JkW107XG4gICAgICAgIGlmICghZXhwcmVzc2lvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBoaWVyYXJjaGljYWxEYXRhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gRGF0YVV0aWwudHJlZUdyaWRTb3J0KGhpZXJhcmNoaWNhbERhdGEsIGV4cHJlc3Npb25zLCBzb3J0aW5nLCBudWxsLCB0aGlzLmdyaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsdGVyZWRTb3J0ZWREYXRhID0gW107XG4gICAgICAgIHRoaXMuZmxhdHRlblRyZWVHcmlkUmVjb3JkcyhyZXN1bHQsIGZpbHRlcmVkU29ydGVkRGF0YSk7XG4gICAgICAgIHRoaXMuZ3JpZC5zZXRGaWx0ZXJlZFNvcnRlZERhdGEoZmlsdGVyZWRTb3J0ZWREYXRhLCBwaW5uZWQpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmbGF0dGVuVHJlZUdyaWRSZWNvcmRzKHJlY29yZHM6IElUcmVlR3JpZFJlY29yZFtdLCBmbGF0RGF0YTogYW55W10pIHtcbiAgICAgICAgaWYgKHJlY29yZHMgJiYgcmVjb3Jkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcbiAgICAgICAgICAgICAgICBmbGF0RGF0YS5wdXNoKHJlY29yZC5kYXRhKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZsYXR0ZW5UcmVlR3JpZFJlY29yZHMocmVjb3JkLmNoaWxkcmVuLCBmbGF0RGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKiBAaGlkZGVuICovXG5AUGlwZSh7IG5hbWU6ICd0cmVlR3JpZFBhZ2luZycgfSlcbmV4cG9ydCBjbGFzcyBJZ3hUcmVlR3JpZFBhZ2luZ1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoSUdYX0dSSURfQkFTRSkgcHJpdmF0ZSBncmlkOiBHcmlkVHlwZSkgeyB9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKGNvbGxlY3Rpb246IElUcmVlR3JpZFJlY29yZFtdLCBwYWdlID0gMCwgcGVyUGFnZSA9IDE1LCBfOiBudW1iZXIpOiBJVHJlZUdyaWRSZWNvcmRbXSB7XG4gICAgICAgIGlmICghdGhpcy5ncmlkLnBhZ2luYXRvciB8fCB0aGlzLmdyaWQucGFnaW5nTW9kZSAhPT0gR3JpZFBhZ2luZ01vZGUuTG9jYWwpIHtcbiAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGVuID0gdGhpcy5ncmlkLl90b3RhbFJlY29yZHMgPj0gMCA/IHRoaXMuZ3JpZC5fdG90YWxSZWNvcmRzIDogY29sbGVjdGlvbi5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwobGVuIC8gcGVyUGFnZSk7XG5cbiAgICAgICAgY29uc3Qgc3RhdGUgPSB7XG4gICAgICAgICAgICBpbmRleDogKHRvdGFsUGFnZXMgPiAwICYmIHBhZ2UgPj0gdG90YWxQYWdlcykgPyB0b3RhbFBhZ2VzIC0gMSA6IHBhZ2UsXG4gICAgICAgICAgICByZWNvcmRzUGVyUGFnZTogcGVyUGFnZVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdDogSVRyZWVHcmlkUmVjb3JkW10gPSBEYXRhVXRpbC5wYWdlKGNsb25lQXJyYXkoY29sbGVjdGlvbiksIHN0YXRlLCBsZW4pO1xuICAgICAgICB0aGlzLmdyaWQucGFnaW5nU3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgdGhpcy5ncmlkLnBhZ2luYXRvci5wYWdlID0gc3RhdGUuaW5kZXg7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59XG4vKiogQGhpZGRlbiAqL1xuQFBpcGUoeyBuYW1lOiAndHJlZUdyaWRUcmFuc2FjdGlvbicgfSlcbmV4cG9ydCBjbGFzcyBJZ3hUcmVlR3JpZFRyYW5zYWN0aW9uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KElHWF9HUklEX0JBU0UpIHByaXZhdGUgZ3JpZDogR3JpZFR5cGUpIHsgfVxuXG4gICAgcHVibGljIHRyYW5zZm9ybShjb2xsZWN0aW9uOiBhbnlbXSwgXzogbnVtYmVyKTogYW55W10ge1xuXG4gICAgICAgIGlmICh0aGlzLmdyaWQudHJhbnNhY3Rpb25zLmVuYWJsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGFnZ3JlZ2F0ZWRDaGFuZ2VzID0gdGhpcy5ncmlkLnRyYW5zYWN0aW9ucy5nZXRBZ2dyZWdhdGVkQ2hhbmdlcyh0cnVlKTtcbiAgICAgICAgICAgIGlmIChhZ2dyZWdhdGVkQ2hhbmdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJpbWFyeUtleSA9IHRoaXMuZ3JpZC5wcmltYXJ5S2V5O1xuICAgICAgICAgICAgICAgIGlmICghcHJpbWFyeUtleSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBmb3JlaWduS2V5ID0gdGhpcy5ncmlkLmZvcmVpZ25LZXk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGREYXRhS2V5ID0gdGhpcy5ncmlkLmNoaWxkRGF0YUtleTtcblxuICAgICAgICAgICAgICAgIGlmIChjaGlsZERhdGFLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGllcmFyY2hpY2FsRGF0YUNsb25lID0gY2xvbmVIaWVyYXJjaGljYWxBcnJheShjb2xsZWN0aW9uLCBjaGlsZERhdGFLZXkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGF0YVV0aWwubWVyZ2VIaWVyYXJjaGljYWxUcmFuc2FjdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaGljYWxEYXRhQ2xvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdGVkQ2hhbmdlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkRGF0YUtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5wcmltYXJ5S2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkLmRhdGFDbG9uZVN0cmF0ZWd5XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxhdERhdGFDbG9uZSA9IGNsb25lQXJyYXkoY29sbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBEYXRhVXRpbC5tZXJnZVRyYW5zYWN0aW9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsYXREYXRhQ2xvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdGVkQ2hhbmdlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5wcmltYXJ5S2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkLmRhdGFDbG9uZVN0cmF0ZWd5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgfVxufVxuXG4vKipcbiAqIFRoaXMgcGlwZSBtYXBzIHRoZSBvcmlnaW5hbCByZWNvcmQgdG8gSVRyZWVHcmlkUmVjb3JkIGZvcm1hdCB1c2VkIGluIFRyZWVHcmlkLlxuICovXG5AUGlwZSh7IG5hbWU6ICd0cmVlR3JpZE5vcm1hbGl6ZVJlY29yZCcgfSlcbmV4cG9ydCBjbGFzcyBJZ3hUcmVlR3JpZE5vcm1hbGl6ZVJlY29yZHNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KElHWF9HUklEX0JBU0UpIHByaXZhdGUgZ3JpZDogR3JpZFR5cGUpIHsgfVxuXG4gICAgcHVibGljIHRyYW5zZm9ybShfOiBhbnlbXSwgX186IG51bWJlcik6IGFueVtdIHtcbiAgICAgICAgY29uc3QgcHJpbWFyeUtleSA9IHRoaXMuZ3JpZC5wcmltYXJ5S2V5O1xuICAgICAgICAvLyB1c2luZyBmbGF0dGVuZWQgZGF0YSBiZWNhdXNlIG9yaWdpbiBkYXRhIG1heSBiZSBoaWVyYXJjaGljYWwuXG4gICAgICAgIGNvbnN0IGZsYXREYXRhID0gdGhpcy5ncmlkLmZsYXREYXRhO1xuICAgICAgICBjb25zdCByZXMgPSBmbGF0RGF0YS5tYXAocmVjID0+XG4gICAgICAgICh7XG4gICAgICAgICAgICByb3dJRDogdGhpcy5ncmlkLnByaW1hcnlLZXkgPyByZWNbcHJpbWFyeUtleV0gOiByZWMsXG4gICAgICAgICAgICBkYXRhOiByZWMsXG4gICAgICAgICAgICBsZXZlbDogMCxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXVxuICAgICAgICB9KSk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxufVxuXG5AUGlwZSh7IG5hbWU6ICd0cmVlR3JpZEFkZFJvdycgfSlcbmV4cG9ydCBjbGFzcyBJZ3hUcmVlR3JpZEFkZFJvd1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoSUdYX0dSSURfQkFTRSkgcHJpdmF0ZSBncmlkOiBHcmlkVHlwZSkgeyB9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKGNvbGxlY3Rpb246IGFueSwgaXNQaW5uZWQgPSBmYWxzZSwgX3BpcGVUcmlnZ2VyOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKCF0aGlzLmdyaWQucm93RWRpdGFibGUgfHwgIXRoaXMuZ3JpZC5jcnVkU2VydmljZS5yb3cgfHwgdGhpcy5ncmlkLmNydWRTZXJ2aWNlLnJvdy5nZXRDbGFzc05hbWUoKSAhPT0gSWd4QWRkUm93Lm5hbWUgfHxcbiAgICAgICAgICAgICF0aGlzLmdyaWQuZ3JpZEFQSS5jcnVkU2VydmljZS5hZGRSb3dQYXJlbnQgfHwgaXNQaW5uZWQgIT09IHRoaXMuZ3JpZC5ncmlkQVBJLmNydWRTZXJ2aWNlLmFkZFJvd1BhcmVudC5pc1Bpbm5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29weSA9IGNvbGxlY3Rpb24uc2xpY2UoMCk7XG4gICAgICAgIGNvbnN0IHJlYyA9ICh0aGlzLmdyaWQuY3J1ZFNlcnZpY2Uucm93IGFzIElneEFkZFJvdykucmVjb3JkUmVmO1xuICAgICAgICBpZiAodGhpcy5ncmlkLmNydWRTZXJ2aWNlLmFkZFJvd1BhcmVudC5pc1Bpbm5lZCkge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50Um93SW5kZXggPSBjb3B5LmZpbmRJbmRleChyZWNvcmQgPT4gcmVjb3JkLnJvd0lEID09PSB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuYWRkUm93UGFyZW50LnJvd0lEKTtcbiAgICAgICAgICAgIGNvcHkuc3BsaWNlKHBhcmVudFJvd0luZGV4ICsgMSwgMCwgcmVjKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvcHkuc3BsaWNlKHRoaXMuZ3JpZC5jcnVkU2VydmljZS5yb3cuaW5kZXgsIDAsIHJlYyk7ICAgICAgICAgICAgXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmlkLnJlY29yZHMuc2V0KHJlYy5rZXksIHJlYyk7XG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cbn1cbiJdfQ==
316
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ncmlkLnBpcGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL3RyZWUtZ3JpZC90cmVlLWdyaWQucGlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFM0QsT0FBTyxFQUFZLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUtuRDs7R0FFRztBQUVILE1BQU0sT0FBTyw0QkFBNEI7SUFFckMsWUFBMkMsSUFBYztRQUFkLFNBQUksR0FBSixJQUFJLENBQVU7SUFBSSxDQUFDO0lBRXZELFNBQVMsQ0FBQyxVQUFpQixFQUFFLFVBQWtCLEVBQUUsVUFBa0IsRUFBRSxZQUFvQixFQUFFLENBQVM7UUFDdkcsSUFBSSxtQkFBbUIsR0FBc0IsRUFBRSxDQUFDO1FBQ2hELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7UUFDM0QsTUFBTSxRQUFRLEdBQVUsRUFBRSxDQUFDO1FBRTNCLElBQUksWUFBWSxFQUFFO1lBQ2QsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFDM0YsUUFBUSxFQUFFLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFD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QyxXQUFXLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDM0M7YUFBTTtZQUNILElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDeEQ7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOztrSEFuQlEscUJBQXFCLGtCQUVWLGFBQWE7Z0hBRnhCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFOzswQkFHZixNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lQXJyYXksIGNsb25lSGllcmFyY2hpY2FsQXJyYXkgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IERhdGFVdGlsIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2RhdGEtdXRpbCc7XG5pbXBvcnQgeyBJVHJlZUdyaWRSZWNvcmQgfSBmcm9tICcuL3RyZWUtZ3JpZC5pbnRlcmZhY2VzJztcbmltcG9ydCB7IEdyaWRUeXBlLCBJR1hfR1JJRF9CQVNFIH0gZnJvbSAnLi4vY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEdyaWRQYWdpbmdNb2RlIH0gZnJvbSAnLi4vY29tbW9uL2VudW1zJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3B1YmxpY19hcGknO1xuaW1wb3J0IHsgSWd4QWRkUm93IH0gZnJvbSAnLi4vY29tbW9uL2NydWQuc2VydmljZSc7XG5pbXBvcnQgeyBJU29ydGluZ0V4cHJlc3Npb24gfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvc29ydGluZy1zdHJhdGVneSc7XG5pbXBvcnQgeyBJR3JpZFNvcnRpbmdTdHJhdGVneSB9IGZyb20gJy4uL2NvbW1vbi9zdHJhdGVneSc7XG5pbXBvcnQgeyBJR3JvdXBpbmdFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2dyb3VwaW5nLWV4cHJlc3Npb24uaW50ZXJmYWNlJztcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBQaXBlKHsgbmFtZTogJ3RyZWVHcmlkSGllcmFyY2hpemluZycgfSlcbmV4cG9ydCBjbGFzcyBJZ3hUcmVlR3JpZEhpZXJhcmNoaXppbmdQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KElHWF9HUklEX0JBU0UpIHByaXZhdGUgZ3JpZDogR3JpZFR5cGUpIHsgfVxuXG4gICAgcHVibGljIHRyYW5zZm9ybShjb2xsZWN0aW9uOiBhbnlbXSwgcHJpbWFyeUtleTogc3RyaW5nLCBmb3JlaWduS2V5OiBzdHJpbmcsIGNoaWxkRGF0YUtleTogc3RyaW5nLCBfOiBudW1iZXIpOiBJVHJlZUdyaWRSZWNvcmRbXSB7XG4gICAgICAgIGxldCBoaWVyYXJjaGljYWxSZWNvcmRzOiBJVHJlZUdyaWRSZWNvcmRbXSA9IFtdO1xuICAgICAgICBjb25zdCB0cmVlR3JpZFJlY29yZHNNYXAgPSBuZXcgTWFwPGFueSwgSVRyZWVHcmlkUmVjb3JkPigpO1xuICAgICAgICBjb25zdCBmbGF0RGF0YTogYW55W10gPSBbXTtcblxuICAgICAgICBpZiAoY2hpbGREYXRhS2V5KSB7XG4gICAgICAgICAgICBoaWVyYXJjaGljYWxSZWNvcmRzID0gdGhpcy5oaWVyYXJjaGl6ZVJlY3Vyc2l2ZShjb2xsZWN0aW9uLCBwcmltYXJ5S2V5LCBjaGlsZERhdGFLZXksIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBmbGF0RGF0YSwgMCwgdHJlZUdyaWRSZWNvcmRzTWFwKTtcbiAgICAgICAgfSBlbHNlIGlmIChwcmltYXJ5S2V5KSB7XG4gICAgICAgICAgICBoaWVyYXJjaGljYWxSZWNvcmRzID0gdGhpcy5oaWVyYXJjaGl6ZUZsYXREYXRhKGNvbGxlY3Rpb24sIHByaW1hcnlLZXksIGZvcmVpZ25LZXksIHRyZWVHcmlkUmVjb3Jkc01hcCwgZmxhdERhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ncmlkLmZsYXREYXRhID0gdGhpcy5ncmlkLnRyYW5zYWN0aW9ucy5lbmFibGVkID9cbiAgICAgICAgICAgIGZsYXREYXRhLmZpbHRlcihyZWMgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5ncmlkLnRyYW5zYWN0aW9ucy5nZXRTdGF0ZSh0aGlzLmdldFJvd0lEKHByaW1hcnlLZXksIHJlYykpO1xuICAgICAgICAgICAgICAgIHJldHVybiAhc3RhdGUgfHwgc3RhdGUudHlwZSAhPT0gVHJhbnNhY3Rpb25UeXBlLkFERDtcbiAgICAgICAgICAgIH0pIDogZmxhdERhdGE7XG4gICAgICAgIHRoaXMuZ3JpZC5yZWNvcmRzID0gdHJlZUdyaWRSZWNvcmRzTWFwO1xuICAgICAgICB0aGlzLmdyaWQucm9vdFJlY29yZHMgPSBoaWVyYXJjaGljYWxSZWNvcmRzO1xuICAgICAgICByZXR1cm4gaGllcmFyY2hpY2FsUmVjb3JkcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJvd0lEKHByaW1hcnlLZXk6IGFueSwgcm93RGF0YTogYW55KSB7XG4gICAgICAgIHJldHVybiBwcmltYXJ5S2V5ID8gcm93RGF0YVtwcmltYXJ5S2V5XSA6IHJvd0RhdGE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWVyYXJjaGl6ZUZsYXREYXRhKGNvbGxlY3Rpb246IGFueVtdLCBwcmltYXJ5S2V5OiBzdHJpbmcsIGZvcmVpZ25LZXk6IHN0cmluZyxcbiAgICAgICAgbWFwOiBNYXA8YW55LCBJVHJlZUdyaWRSZWNvcmQ+LCBmbGF0RGF0YTogYW55W10pOlxuICAgICAgICBJVHJlZUdyaWRSZWNvcmRbXSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogSVRyZWVHcmlkUmVjb3JkW10gPSBbXTtcbiAgICAgICAgY29uc3QgbWlzc2luZ1BhcmVudFJlY29yZHM6IElUcmVlR3JpZFJlY29yZFtdID0gW107XG4gICAgICAgIGNvbGxlY3Rpb24uZm9yRWFjaChyb3cgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVjb3JkOiBJVHJlZUdyaWRSZWNvcmQgPSB7XG4gICAgICAgICAgICAgICAga2V5OiB0aGlzLmdldFJvd0lEKHByaW1hcnlLZXksIHJvdyksXG4gICAgICAgICAgICAgICAgZGF0YTogcm93LFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IG1hcC5nZXQocm93W2ZvcmVpZ25LZXldKTtcbiAgICAgICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICByZWNvcmQucGFyZW50ID0gcGFyZW50O1xuICAgICAgICAgICAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoKHJlY29yZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1pc3NpbmdQYXJlbnRSZWNvcmRzLnB1c2gocmVjb3JkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbWFwLnNldChyb3dbcHJpbWFyeUtleV0sIHJlY29yZCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG1pc3NpbmdQYXJlbnRSZWNvcmRzLmZvckVhY2gocmVjb3JkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IG1hcC5nZXQocmVjb3JkLmRhdGFbZm9yZWlnbktleV0pO1xuICAgICAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgICAgIHJlY29yZC5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2gocmVjb3JkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocmVjb3JkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zZXRJbmRlbnRhdGlvbkxldmVscyhyZXN1bHQsIDAsIGZsYXREYXRhKTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0SW5kZW50YXRpb25MZXZlbHMoY29sbGVjdGlvbjogSVRyZWVHcmlkUmVjb3JkW10sIGluZGVudGF0aW9uTGV2ZWw6IG51bWJlciwgZmxhdERhdGE6IGFueVtdKSB7XG4gICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgICAgIHJlY29yZC5sZXZlbCA9IGluZGVudGF0aW9uTGV2ZWw7XG4gICAgICAgICAgICByZWNvcmQuZXhwYW5kZWQgPSB0aGlzLmdyaWQuZ3JpZEFQSS5nZXRfcm93X2V4cGFuc2lvbl9zdGF0ZShyZWNvcmQpO1xuICAgICAgICAgICAgZmxhdERhdGEucHVzaChyZWNvcmQuZGF0YSk7XG5cbiAgICAgICAgICAgIGlmIChyZWNvcmQuY2hpbGRyZW4gJiYgcmVjb3JkLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEluZGVudGF0aW9uTGV2ZWxzKHJlY29yZC5jaGlsZHJlbiwgaW5kZW50YXRpb25MZXZlbCArIDEsIGZsYXREYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGllcmFyY2hpemVSZWN1cnNpdmUoY29sbGVjdGlvbjogYW55W10sIHByaW1hcnlLZXk6IHN0cmluZywgY2hpbGREYXRhS2V5OiBzdHJpbmcsXG4gICAgICAgIHBhcmVudDogSVRyZWVHcmlkUmVjb3JkLCBmbGF0RGF0YTogYW55W10sIGluZGVudGF0aW9uTGV2ZWw6IG51bWJlciwgbWFwOiBNYXA8YW55LCBJVHJlZUdyaWRSZWNvcmQ+KTogSVRyZWVHcmlkUmVjb3JkW10ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IElUcmVlR3JpZFJlY29yZFtdID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IHJlY29yZDogSVRyZWVHcmlkUmVjb3JkID0ge1xuICAgICAgICAgICAgICAgIGtleTogdGhpcy5nZXRSb3dJRChwcmltYXJ5S2V5LCBpdGVtKSxcbiAgICAgICAgICAgICAgICBkYXRhOiBpdGVtLFxuICAgICAgICAgICAgICAgIHBhcmVudCxcbiAgICAgICAgICAgICAgICBsZXZlbDogaW5kZW50YXRpb25MZXZlbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlY29yZC5leHBhbmRlZCA9IHRoaXMuZ3JpZC5ncmlkQVBJLmdldF9yb3dfZXhwYW5zaW9uX3N0YXRlKHJlY29yZCk7XG4gICAgICAgICAgICBmbGF0RGF0YS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgbWFwLnNldChyZWNvcmQua2V5LCByZWNvcmQpO1xuICAgICAgICAgICAgcmVjb3JkLmNoaWxkcmVuID0gaXRlbVtjaGlsZERhdGFLZXldID9cbiAgICAgICAgICAgICAgICB0aGlzLmhpZXJhcmNoaXplUmVjdXJzaXZlKGl0ZW1bY2hpbGREYXRhS2V5XSwgcHJpbWFyeUtleSwgY2hpbGREYXRhS2V5LCByZWNvcmQsIGZsYXREYXRhLCBpbmRlbnRhdGlvbkxldmVsICsgMSwgbWFwKSA6XG4gICAgICAgICAgICAgICAgdW5kZWZpbmVkO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2gocmVjb3JkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQFBpcGUoeyBuYW1lOiAndHJlZUdyaWRGbGF0dGVuaW5nJyB9KVxuZXhwb3J0IGNsYXNzIElneFRyZWVHcmlkRmxhdHRlbmluZ1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoSUdYX0dSSURfQkFTRSkgcHJpdmF0ZSBncmlkOiBHcmlkVHlwZSkgeyB9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKGNvbGxlY3Rpb246IElUcmVlR3JpZFJlY29yZFtdLFxuICAgICAgICBleHBhbmRlZExldmVsczogbnVtYmVyLCBleHBhbmRlZFN0YXRlczogTWFwPGFueSwgYm9vbGVhbj4sIF86IG51bWJlcik6IGFueVtdIHtcblxuICAgICAgICBjb25zdCBkYXRhOiBJVHJlZUdyaWRSZWNvcmRbXSA9IFtdO1xuXG4gICAgICAgIHRoaXMuZ3JpZC5wcm9jZXNzZWRSb290UmVjb3JkcyA9IGNvbGxlY3Rpb247XG4gICAgICAgIHRoaXMuZ3JpZC5wcm9jZXNzZWRSZWNvcmRzID0gbmV3IE1hcDxhbnksIElUcmVlR3JpZFJlY29yZD4oKTtcblxuICAgICAgICB0aGlzLmdldEZsYXREYXRhUmVjdXJzaXZlKGNvbGxlY3Rpb24sIGRhdGEsIGV4cGFuZGVkTGV2ZWxzLCBleHBhbmRlZFN0YXRlcywgdHJ1ZSk7XG5cbiAgICAgICAgdGhpcy5ncmlkLnByb2Nlc3NlZEV4cGFuZGVkRmxhdERhdGEgPSBkYXRhLm1hcChyID0+IHIuZGF0YSk7XG5cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGbGF0RGF0YVJlY3Vyc2l2ZShjb2xsZWN0aW9uOiBJVHJlZUdyaWRSZWNvcmRbXSwgZGF0YTogSVRyZWVHcmlkUmVjb3JkW10sXG4gICAgICAgIGV4cGFuZGVkTGV2ZWxzOiBudW1iZXIsIGV4cGFuZGVkU3RhdGVzOiBNYXA8YW55LCBib29sZWFuPiwgcGFyZW50RXhwYW5kZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKCFjb2xsZWN0aW9uIHx8ICFjb2xsZWN0aW9uLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBoaWVyYXJjaGljYWxSZWNvcmQgb2YgY29sbGVjdGlvbikge1xuICAgICAgICAgICAgaWYgKHBhcmVudEV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5wdXNoKGhpZXJhcmNoaWNhbFJlY29yZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGhpZXJhcmNoaWNhbFJlY29yZC5leHBhbmRlZCA9IHRoaXMuZ3JpZC5ncmlkQVBJLmdldF9yb3dfZXhwYW5zaW9uX3N0YXRlKGhpZXJhcmNoaWNhbFJlY29yZCk7XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlTm9uUHJvY2Vzc2VkUmVjb3JkRXhwYW5zaW9uKHRoaXMuZ3JpZCwgaGllcmFyY2hpY2FsUmVjb3JkKTtcblxuICAgICAgICAgICAgdGhpcy5ncmlkLnByb2Nlc3NlZFJlY29yZHMuc2V0KGhpZXJhcmNoaWNhbFJlY29yZC5rZXksIGhpZXJhcmNoaWNhbFJlY29yZCk7XG5cbiAgICAgICAgICAgIHRoaXMuZ2V0RmxhdERhdGFSZWN1cnNpdmUoaGllcmFyY2hpY2FsUmVjb3JkLmNoaWxkcmVuLCBkYXRhLCBleHBhbmRlZExldmVscyxcbiAgICAgICAgICAgICAgICBleHBhbmRlZFN0YXRlcywgcGFyZW50RXhwYW5kZWQgJiYgaGllcmFyY2hpY2FsUmVjb3JkLmV4cGFuZGVkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTm9uUHJvY2Vzc2VkUmVjb3JkRXhwYW5zaW9uKGdyaWQ6IEdyaWRUeXBlLCByZWNvcmQ6IElUcmVlR3JpZFJlY29yZCkge1xuICAgICAgICBjb25zdCByZWMgPSBncmlkLnJlY29yZHMuZ2V0KHJlY29yZC5rZXkpO1xuICAgICAgICByZWMuZXhwYW5kZWQgPSByZWNvcmQuZXhwYW5kZWQ7XG4gICAgfVxufVxuXG4vKiogQGhpZGRlbiAqL1xuQFBpcGUoeyBuYW1lOiAndHJlZUdyaWRTb3J0aW5nJyB9KVxuZXhwb3J0IGNsYXNzIElneFRyZWVHcmlkU29ydGluZ1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoSUdYX0dSSURfQkFTRSkgcHJpdmF0ZSBncmlkOiBHcmlkVHlwZSkgeyB9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKFxuICAgICAgICBoaWVyYXJjaGljYWxEYXRhOiBJVHJlZUdyaWRSZWNvcmRbXSxcbiAgICAgICAgc29ydEV4cHJlc3Npb25zOiBJU29ydGluZ0V4cHJlc3Npb25bXSxcbiAgICAgICAgZ3JvdXBFeHByZXNzaW9uczogSUdyb3VwaW5nRXhwcmVzc2lvbltdLFxuICAgICAgICBzb3J0aW5nOiBJR3JpZFNvcnRpbmdTdHJhdGVneSxcbiAgICAgICAgXzogbnVtYmVyLFxuICAgICAgICBwaW5uZWQ/OiBib29sZWFuKTogSVRyZWVHcmlkUmVjb3JkW10ge1xuXG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb25zID0gZ3JvdXBFeHByZXNzaW9ucyA/IGdyb3VwRXhwcmVzc2lvbnMuY29uY2F0KHNvcnRFeHByZXNzaW9ucykgOiBzb3J0RXhwcmVzc2lvbnM7XG4gICAgICAgIGxldCByZXN1bHQ6IElUcmVlR3JpZFJlY29yZFtdO1xuICAgICAgICBpZiAoIWV4cHJlc3Npb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gaGllcmFyY2hpY2FsRGF0YTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IERhdGFVdGlsLnRyZWVHcmlkU29ydChoaWVyYXJjaGljYWxEYXRhLCBleHByZXNzaW9ucywgc29ydGluZywgbnVsbCwgdGhpcy5ncmlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkU29ydGVkRGF0YSA9IFtdO1xuICAgICAgICB0aGlzLmZsYXR0ZW5UcmVlR3JpZFJlY29yZHMocmVzdWx0LCBmaWx0ZXJlZFNvcnRlZERhdGEpO1xuICAgICAgICB0aGlzLmdyaWQuc2V0RmlsdGVyZWRTb3J0ZWREYXRhKGZpbHRlcmVkU29ydGVkRGF0YSwgcGlubmVkKTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZmxhdHRlblRyZWVHcmlkUmVjb3JkcyhyZWNvcmRzOiBJVHJlZUdyaWRSZWNvcmRbXSwgZmxhdERhdGE6IGFueVtdKSB7XG4gICAgICAgIGlmIChyZWNvcmRzICYmIHJlY29yZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XG4gICAgICAgICAgICAgICAgZmxhdERhdGEucHVzaChyZWNvcmQuZGF0YSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mbGF0dGVuVHJlZUdyaWRSZWNvcmRzKHJlY29yZC5jaGlsZHJlbiwgZmxhdERhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiogQGhpZGRlbiAqL1xuQFBpcGUoeyBuYW1lOiAndHJlZUdyaWRQYWdpbmcnIH0pXG5leHBvcnQgY2xhc3MgSWd4VHJlZUdyaWRQYWdpbmdQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KElHWF9HUklEX0JBU0UpIHByaXZhdGUgZ3JpZDogR3JpZFR5cGUpIHsgfVxuXG4gICAgcHVibGljIHRyYW5zZm9ybShjb2xsZWN0aW9uOiBJVHJlZUdyaWRSZWNvcmRbXSwgcGFnZSA9IDAsIHBlclBhZ2UgPSAxNSwgXzogbnVtYmVyKTogSVRyZWVHcmlkUmVjb3JkW10ge1xuICAgICAgICBpZiAoIXRoaXMuZ3JpZC5wYWdpbmF0b3IgfHwgdGhpcy5ncmlkLnBhZ2luZ01vZGUgIT09IEdyaWRQYWdpbmdNb2RlLkxvY2FsKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxlbiA9IHRoaXMuZ3JpZC5fdG90YWxSZWNvcmRzID49IDAgPyB0aGlzLmdyaWQuX3RvdGFsUmVjb3JkcyA6IGNvbGxlY3Rpb24ubGVuZ3RoO1xuICAgICAgICBjb25zdCB0b3RhbFBhZ2VzID0gTWF0aC5jZWlsKGxlbiAvIHBlclBhZ2UpO1xuXG4gICAgICAgIGNvbnN0IHN0YXRlID0ge1xuICAgICAgICAgICAgaW5kZXg6ICh0b3RhbFBhZ2VzID4gMCAmJiBwYWdlID49IHRvdGFsUGFnZXMpID8gdG90YWxQYWdlcyAtIDEgOiBwYWdlLFxuICAgICAgICAgICAgcmVjb3Jkc1BlclBhZ2U6IHBlclBhZ2VcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCByZXN1bHQ6IElUcmVlR3JpZFJlY29yZFtdID0gRGF0YVV0aWwucGFnZShjbG9uZUFycmF5KGNvbGxlY3Rpb24pLCBzdGF0ZSwgbGVuKTtcbiAgICAgICAgdGhpcy5ncmlkLnBhZ2luZ1N0YXRlID0gc3RhdGU7XG4gICAgICAgIHRoaXMuZ3JpZC5wYWdpbmF0b3IucGFnZSA9IHN0YXRlLmluZGV4O1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuLyoqIEBoaWRkZW4gKi9cbkBQaXBlKHsgbmFtZTogJ3RyZWVHcmlkVHJhbnNhY3Rpb24nIH0pXG5leHBvcnQgY2xhc3MgSWd4VHJlZUdyaWRUcmFuc2FjdGlvblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChJR1hfR1JJRF9CQVNFKSBwcml2YXRlIGdyaWQ6IEdyaWRUeXBlKSB7IH1cblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oY29sbGVjdGlvbjogYW55W10sIF86IG51bWJlcik6IGFueVtdIHtcblxuICAgICAgICBpZiAodGhpcy5ncmlkLnRyYW5zYWN0aW9ucy5lbmFibGVkKSB7XG4gICAgICAgICAgICBjb25zdCBhZ2dyZWdhdGVkQ2hhbmdlcyA9IHRoaXMuZ3JpZC50cmFuc2FjdGlvbnMuZ2V0QWdncmVnYXRlZENoYW5nZXModHJ1ZSk7XG4gICAgICAgICAgICBpZiAoYWdncmVnYXRlZENoYW5nZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByaW1hcnlLZXkgPSB0aGlzLmdyaWQucHJpbWFyeUtleTtcbiAgICAgICAgICAgICAgICBpZiAoIXByaW1hcnlLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgZm9yZWlnbktleSA9IHRoaXMuZ3JpZC5mb3JlaWduS2V5O1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkRGF0YUtleSA9IHRoaXMuZ3JpZC5jaGlsZERhdGFLZXk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hpbGREYXRhS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhpZXJhcmNoaWNhbERhdGFDbG9uZSA9IGNsb25lSGllcmFyY2hpY2FsQXJyYXkoY29sbGVjdGlvbiwgY2hpbGREYXRhS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERhdGFVdGlsLm1lcmdlSGllcmFyY2hpY2FsVHJhbnNhY3Rpb25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgaGllcmFyY2hpY2FsRGF0YUNsb25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRlZENoYW5nZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZERhdGFLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWQucHJpbWFyeUtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5kYXRhQ2xvbmVTdHJhdGVneVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsYXREYXRhQ2xvbmUgPSBjbG9uZUFycmF5KGNvbGxlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGF0YVV0aWwubWVyZ2VUcmFuc2FjdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmbGF0RGF0YUNsb25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRlZENoYW5nZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWQucHJpbWFyeUtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5kYXRhQ2xvbmVTdHJhdGVneSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGlzIHBpcGUgbWFwcyB0aGUgb3JpZ2luYWwgcmVjb3JkIHRvIElUcmVlR3JpZFJlY29yZCBmb3JtYXQgdXNlZCBpbiBUcmVlR3JpZC5cbiAqL1xuQFBpcGUoeyBuYW1lOiAndHJlZUdyaWROb3JtYWxpemVSZWNvcmQnIH0pXG5leHBvcnQgY2xhc3MgSWd4VHJlZUdyaWROb3JtYWxpemVSZWNvcmRzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChJR1hfR1JJRF9CQVNFKSBwcml2YXRlIGdyaWQ6IEdyaWRUeXBlKSB7IH1cblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oXzogYW55W10sIF9fOiBudW1iZXIpOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IHByaW1hcnlLZXkgPSB0aGlzLmdyaWQucHJpbWFyeUtleTtcbiAgICAgICAgLy8gdXNpbmcgZmxhdHRlbmVkIGRhdGEgYmVjYXVzZSBvcmlnaW4gZGF0YSBtYXkgYmUgaGllcmFyY2hpY2FsLlxuICAgICAgICBjb25zdCBmbGF0RGF0YSA9IHRoaXMuZ3JpZC5mbGF0RGF0YTtcbiAgICAgICAgY29uc3QgcmVzID0gZmxhdERhdGEgPyBmbGF0RGF0YS5tYXAocmVjID0+XG4gICAgICAgICh7XG4gICAgICAgICAgICByb3dJRDogdGhpcy5ncmlkLnByaW1hcnlLZXkgPyByZWNbcHJpbWFyeUtleV0gOiByZWMsXG4gICAgICAgICAgICBkYXRhOiByZWMsXG4gICAgICAgICAgICBsZXZlbDogMCxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXVxuICAgICAgICB9KSkgOiBbXTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG59XG5cbkBQaXBlKHsgbmFtZTogJ3RyZWVHcmlkQWRkUm93JyB9KVxuZXhwb3J0IGNsYXNzIElneFRyZWVHcmlkQWRkUm93UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChJR1hfR1JJRF9CQVNFKSBwcml2YXRlIGdyaWQ6IEdyaWRUeXBlKSB7IH1cblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oY29sbGVjdGlvbjogYW55LCBpc1Bpbm5lZCA9IGZhbHNlLCBfcGlwZVRyaWdnZXI6IG51bWJlcikge1xuICAgICAgICBpZiAoIXRoaXMuZ3JpZC5yb3dFZGl0YWJsZSB8fCAhdGhpcy5ncmlkLmNydWRTZXJ2aWNlLnJvdyB8fCB0aGlzLmdyaWQuY3J1ZFNlcnZpY2Uucm93LmdldENsYXNzTmFtZSgpICE9PSBJZ3hBZGRSb3cubmFtZSB8fFxuICAgICAgICAgICAgIXRoaXMuZ3JpZC5ncmlkQVBJLmNydWRTZXJ2aWNlLmFkZFJvd1BhcmVudCB8fCBpc1Bpbm5lZCAhPT0gdGhpcy5ncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2UuYWRkUm93UGFyZW50LmlzUGlubmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb3B5ID0gY29sbGVjdGlvbi5zbGljZSgwKTtcbiAgICAgICAgY29uc3QgcmVjID0gKHRoaXMuZ3JpZC5jcnVkU2VydmljZS5yb3cgYXMgSWd4QWRkUm93KS5yZWNvcmRSZWY7XG4gICAgICAgIGlmICh0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuYWRkUm93UGFyZW50LmlzUGlubmVkKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRSb3dJbmRleCA9IGNvcHkuZmluZEluZGV4KHJlY29yZCA9PiByZWNvcmQucm93SUQgPT09IHRoaXMuZ3JpZC5jcnVkU2VydmljZS5hZGRSb3dQYXJlbnQucm93SUQpO1xuICAgICAgICAgICAgY29weS5zcGxpY2UocGFyZW50Um93SW5kZXggKyAxLCAwLCByZWMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29weS5zcGxpY2UodGhpcy5ncmlkLmNydWRTZXJ2aWNlLnJvdy5pbmRleCwgMCwgcmVjKTsgICAgICAgICAgICBcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdyaWQucmVjb3Jkcy5zZXQocmVjLmtleSwgcmVjKTtcbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxufVxuIl19
@@ -31,30 +31,29 @@ export class CharSeparatedValueData {
31
31
  }
32
32
  this._isSpecialData = ExportUtilities.isSpecialData(this._data[0]);
33
33
  this._escapeCharacters.push(this._delimiter);
34
- this._headerRecord = this.processHeaderRecord(keys);
34
+ this._headerRecord = this.processHeaderRecord(keys, this._data.length);
35
35
  this._dataRecords = this.processDataRecords(this._data, keys);
36
36
  return this._headerRecord + this._dataRecords;
37
37
  }
38
38
  prepareDataAsync(done) {
39
- if (!this._data || this._data.length === 0) {
40
- done('');
41
- }
42
39
  const columns = this.columns?.filter(c => !c.skip)
43
40
  .sort((a, b) => a.startIndex - b.startIndex)
44
41
  .sort((a, b) => a.pinnedIndex - b.pinnedIndex);
45
42
  const keys = columns && columns.length ? columns.map(c => c.field) : ExportUtilities.getKeysFromData(this._data);
46
- if (keys.length === 0) {
47
- done('');
48
- }
49
43
  this._isSpecialData = ExportUtilities.isSpecialData(this._data[0]);
50
44
  this._escapeCharacters.push(this._delimiter);
51
45
  const headers = columns && columns.length ?
52
46
  columns.map(c => c.header ?? c.field) :
53
47
  keys;
54
- this._headerRecord = this.processHeaderRecord(headers);
55
- this.processDataRecordsAsync(this._data, keys, (dr) => {
56
- done(this._headerRecord + dr);
57
- });
48
+ this._headerRecord = this.processHeaderRecord(headers, this._data.length);
49
+ if (keys.length === 0 || ((!this._data || this._data.length === 0) && keys.length === 0)) {
50
+ done('');
51
+ }
52
+ else {
53
+ this.processDataRecordsAsync(this._data, keys, (dr) => {
54
+ done(this._headerRecord + dr);
55
+ });
56
+ }
58
57
  }
59
58
  processField(value, escapeChars) {
60
59
  let safeValue = ExportUtilities.hasValue(value) ? String(value) : '';
@@ -63,12 +62,13 @@ export class CharSeparatedValueData {
63
62
  }
64
63
  return safeValue + this._delimiter;
65
64
  }
66
- processHeaderRecord(keys) {
65
+ processHeaderRecord(keys, dataLength) {
67
66
  let recordData = '';
68
67
  for (const keyName of keys) {
69
68
  recordData += this.processField(keyName, this._escapeCharacters);
70
69
  }
71
- return recordData.slice(0, -this._delimiterLength) + this._eor;
70
+ const result = recordData.slice(0, -this._delimiterLength);
71
+ return dataLength > 0 ? result + this._eor : result;
72
72
  }
73
73
  processRecord(record, keys) {
74
74
  const recordData = new Array(keys.length);
@@ -100,4 +100,4 @@ export class CharSeparatedValueData {
100
100
  this._delimiterLength = value.length;
101
101
  }
102
102
  }
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhci1zZXBhcmF0ZWQtdmFsdWUtZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9jc3YvY2hhci1zZXBhcmF0ZWQtdmFsdWUtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2hEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQVMvQixZQUFvQixLQUFZLEVBQUUsY0FBc0IsRUFBVSxVQUF5QixFQUFFO1FBQXpFLFVBQUssR0FBTCxLQUFLLENBQU87UUFBa0MsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFSckYsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsU0FBSSxHQUFHLE1BQU0sQ0FBQztRQUVkLHNCQUFpQixHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN6QyxxQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDckIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFHM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sV0FBVyxDQUFDLEdBQVc7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3hDLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFDRCxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZCxJQUFJLEdBQUcsRUFBQztZQUNKLElBQUksR0FBRyxHQUFHLENBQUM7U0FDZDthQUFLO1lBQ0YsSUFBSSxHQUFHLGVBQWUsQ0FBQyxlQUFlLENBQUMs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Q0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQUs7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDekMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXhwb3J0VXRpbGl0aWVzIH0gZnJvbSAnLi4vZXhwb3J0ZXItY29tbW9uL2V4cG9ydC11dGlsaXRpZXMnO1xuaW1wb3J0IHsgeWllbGRpbmdMb29wIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBJQ29sdW1uSW5mbyB9IGZyb20gJy4uL2V4cG9ydGVyLWNvbW1vbi9iYXNlLWV4cG9ydC1zZXJ2aWNlJztcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjbGFzcyBDaGFyU2VwYXJhdGVkVmFsdWVEYXRhIHtcbiAgICBwcml2YXRlIF9oZWFkZXJSZWNvcmQgPSAnJztcbiAgICBwcml2YXRlIF9kYXRhUmVjb3JkcyA9ICcnO1xuICAgIHByaXZhdGUgX2VvciA9ICdcXHJcXG4nO1xuICAgIHByaXZhdGUgX2RlbGltaXRlcjtcbiAgICBwcml2YXRlIF9lc2NhcGVDaGFyYWN0ZXJzID0gWydcXHInLCAnXFxuJywgJ1xcclxcbiddO1xuICAgIHByaXZhdGUgX2RlbGltaXRlckxlbmd0aCA9IDE7XG4gICAgcHJpdmF0ZSBfaXNTcGVjaWFsRGF0YSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGF0YTogYW55W10sIHZhbHVlRGVsaW1pdGVyOiBzdHJpbmcsIHByaXZhdGUgY29sdW1uczogSUNvbHVtbkluZm9bXSA9IFtdKSAge1xuICAgICAgICB0aGlzLnNldERlbGltaXRlcih2YWx1ZURlbGltaXRlcik7XG4gICAgfVxuXG4gICAgcHVibGljIHByZXBhcmVEYXRhKGtleT86IGFueVtdKSB7XG4gICAgICAgIGlmICghdGhpcy5fZGF0YSB8fCB0aGlzLl9kYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGxldCBrZXlzID0gW107XG4gICAgICAgIGlmIChrZXkpe1xuICAgICAgICAgICAga2V5cyA9IGtleTtcbiAgICAgICAgfWVsc2Uge1xuICAgICAgICAgICAga2V5cyA9IEV4cG9ydFV0aWxpdGllcy5nZXRLZXlzRnJvbURhdGEodGhpcy5fZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2lzU3BlY2lhbERhdGEgPSBFeHBvcnRVdGlsaXRpZXMuaXNTcGVjaWFsRGF0YSh0aGlzLl9kYXRhWzBdKTtcbiAgICAgICAgdGhpcy5fZXNjYXBlQ2hhcmFjdGVycy5wdXNoKHRoaXMuX2RlbGltaXRlcik7XG5cbiAgICAgICAgdGhpcy5faGVhZGVyUmVjb3JkID0gdGhpcy5wcm9jZXNzSGVhZGVyUmVjb3JkKGtleXMpO1xuICAgICAgICB0aGlzLl9kYXRhUmVjb3JkcyA9IHRoaXMucHJvY2Vzc0RhdGFSZWNvcmRzKHRoaXMuX2RhdGEsIGtleXMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJSZWNvcmQgKyB0aGlzLl9kYXRhUmVjb3JkcztcbiAgICB9XG5cbiAgICBwdWJsaWMgcHJlcGFyZURhdGFBc3luYyhkb25lOiAocmVzdWx0OiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhIHx8IHRoaXMuX2RhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBkb25lKCcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmNvbHVtbnM/LmZpbHRlcihjID0+ICFjLnNraXApXG4gICAgICAgICAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5zdGFydEluZGV4IC0gYi5zdGFydEluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEucGlubmVkSW5kZXggLSBiLnBpbm5lZEluZGV4KTtcbiAgICAgICAgY29uc3Qga2V5cyA9IGNvbHVtbnMgJiYgY29sdW1ucy5sZW5ndGggPyBjb2x1bW5zLm1hcChjID0+IGMuZmllbGQpIDogRXhwb3J0VXRpbGl0aWVzLmdldEtleXNGcm9tRGF0YSh0aGlzLl9kYXRhKTtcblxuICAgICAgICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGRvbmUoJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faXNTcGVjaWFsRGF0YSA9IEV4cG9ydFV0aWxpdGllcy5pc1NwZWNpYWxEYXRhKHRoaXMuX2RhdGFbMF0pO1xuICAgICAgICB0aGlzLl9lc2NhcGVDaGFyYWN0ZXJzLnB1c2godGhpcy5fZGVsaW1pdGVyKTtcblxuICAgICAgICBjb25zdCBoZWFkZXJzID0gY29sdW1ucyAmJiBjb2x1bW5zLmxlbmd0aCA/XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zLm1hcChjID0+IGMuaGVhZGVyID8/IGMuZmllbGQpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleXM7XG5cbiAgICAgICAgdGhpcy5faGVhZGVyUmVjb3JkID0gdGhpcy5wcm9jZXNzSGVhZGVyUmVjb3JkKGhlYWRlcnMpO1xuICAgICAgICB0aGlzLnByb2Nlc3NEYXRhUmVjb3Jkc0FzeW5jKHRoaXMuX2RhdGEsIGtleXMsIChkcikgPT4ge1xuICAgICAgICAgICAgZG9uZSh0aGlzLl9oZWFkZXJSZWNvcmQgKyBkcik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc0ZpZWxkKHZhbHVlLCBlc2NhcGVDaGFycyk6IHN0cmluZyB7XG4gICAgICAgIGxldCBzYWZlVmFsdWUgPSBFeHBvcnRVdGlsaXRpZXMuaGFzVmFsdWUodmFsdWUpID8gU3RyaW5nKHZhbHVlKSA6ICcnO1xuICAgICAgICBpZiAoZXNjYXBlQ2hhcnMuc29tZSgodikgPT4gc2FmZVZhbHVlLmluY2x1ZGVzKHYpKSkge1xuICAgICAgICAgICAgc2FmZVZhbHVlID0gYFwiJHtzYWZlVmFsdWV9XCJgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzYWZlVmFsdWUgKyB0aGlzLl9kZWxpbWl0ZXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzSGVhZGVyUmVjb3JkKGtleXMpOiBzdHJpbmcge1xuICAgICAgICBsZXQgcmVjb3JkRGF0YSA9ICcnO1xuICAgICAgICBmb3IgKGNvbnN0IGtleU5hbWUgb2Yga2V5cykge1xuICAgICAgICAgICAgcmVjb3JkRGF0YSArPSB0aGlzLnByb2Nlc3NGaWVsZChrZXlOYW1lLCB0aGlzLl9lc2NhcGVDaGFyYWN0ZXJzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZWNvcmREYXRhLnNsaWNlKDAsIC10aGlzLl9kZWxpbWl0ZXJMZW5ndGgpICsgdGhpcy5fZW9yO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1JlY29yZChyZWNvcmQsIGtleXMpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCByZWNvcmREYXRhID0gbmV3IEFycmF5KGtleXMubGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGtleXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IChyZWNvcmRba2V5c1tpbmRleF1dICE9PSB1bmRlZmluZWQpID8gcmVjb3JkW2tleXNbaW5kZXhdXSA6IHRoaXMuX2lzU3BlY2lhbERhdGEgPyByZWNvcmQgOiAnJztcbiAgICAgICAgICAgIHJlY29yZERhdGFbaW5kZXhdID0gdGhpcy5wcm9jZXNzRmllbGQodmFsdWUsIHRoaXMuX2VzY2FwZUNoYXJhY3RlcnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlY29yZERhdGEuam9pbignJykuc2xpY2UoMCwgLXRoaXMuX2RlbGltaXRlckxlbmd0aCkgKyB0aGlzLl9lb3I7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzRGF0YVJlY29yZHMoY3VycmVudERhdGEsIGtleXMpIHtcbiAgICAgICAgY29uc3QgZGF0YVJlY29yZHMgPSBuZXcgQXJyYXkoY3VycmVudERhdGEubGVuZ3RoKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGN1cnJlbnREYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCByb3cgPSBjdXJyZW50RGF0YVtpXTtcbiAgICAgICAgICAgIGRhdGFSZWNvcmRzW2ldID0gdGhpcy5wcm9jZXNzUmVjb3JkKHJvdywga2V5cyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0YVJlY29yZHMuam9pbignJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzRGF0YVJlY29yZHNBc3luYyhjdXJyZW50RGF0YSwga2V5cywgZG9uZTogKHJlc3VsdDogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgICAgIGNvbnN0IGRhdGFSZWNvcmRzID0gbmV3IEFycmF5KGN1cnJlbnREYXRhLmxlbmd0aCk7XG5cbiAgICAgICAgeWllbGRpbmdMb29wKGN1cnJlbnREYXRhLmxlbmd0aCwgMTAwMCxcbiAgICAgICAgICAgIChpKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93ID0gY3VycmVudERhdGFbaV07XG4gICAgICAgICAgICAgICAgZGF0YVJlY29yZHNbaV0gPSB0aGlzLnByb2Nlc3NSZWNvcmQocm93LCBrZXlzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgZG9uZShkYXRhUmVjb3Jkcy5qb2luKCcnKSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERlbGltaXRlcih2YWx1ZSkge1xuICAgICAgICB0aGlzLl9kZWxpbWl0ZXIgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fZGVsaW1pdGVyTGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICAgIH1cbn1cbiJdfQ==
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhci1zZXBhcmF0ZWQtdmFsdWUtZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9jc3YvY2hhci1zZXBhcmF0ZWQtdmFsdWUtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2hEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQVMvQixZQUFvQixLQUFZLEVBQUUsY0FBc0IsRUFBVSxVQUF5QixFQUFFO1FBQXpFLFVBQUssR0FBTCxLQUFLLENBQU87UUFBa0MsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFSckYsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsU0FBSSxHQUFHLE1BQU0sQ0FBQztRQUVkLHNCQUFpQixHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN6QyxxQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDckIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFHM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sV0FBVyxDQUFDLEdBQVc7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3hDLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFDRCxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZCxJQUFJLEdBQUcsRUFBQztZQUNKLElBQUksR0FBRyxHQUFHLENBQUM7U0FDZDthQUFLO1lBQ0YsSUFBSSxHQUFHLGVBQWUsQ0FBQyxlQUFlLENBQUMs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QUM7WUFDM0IsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25ELENBQUMsRUFDRCxHQUFHLEVBQUU7WUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLFlBQVksQ0FBQyxLQUFLO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3pDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV4cG9ydFV0aWxpdGllcyB9IGZyb20gJy4uL2V4cG9ydGVyLWNvbW1vbi9leHBvcnQtdXRpbGl0aWVzJztcbmltcG9ydCB7IHlpZWxkaW5nTG9vcCB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgSUNvbHVtbkluZm8gfSBmcm9tICcuLi9leHBvcnRlci1jb21tb24vYmFzZS1leHBvcnQtc2VydmljZSc7XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY2xhc3MgQ2hhclNlcGFyYXRlZFZhbHVlRGF0YSB7XG4gICAgcHJpdmF0ZSBfaGVhZGVyUmVjb3JkID0gJyc7XG4gICAgcHJpdmF0ZSBfZGF0YVJlY29yZHMgPSAnJztcbiAgICBwcml2YXRlIF9lb3IgPSAnXFxyXFxuJztcbiAgICBwcml2YXRlIF9kZWxpbWl0ZXI7XG4gICAgcHJpdmF0ZSBfZXNjYXBlQ2hhcmFjdGVycyA9IFsnXFxyJywgJ1xcbicsICdcXHJcXG4nXTtcbiAgICBwcml2YXRlIF9kZWxpbWl0ZXJMZW5ndGggPSAxO1xuICAgIHByaXZhdGUgX2lzU3BlY2lhbERhdGEgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RhdGE6IGFueVtdLCB2YWx1ZURlbGltaXRlcjogc3RyaW5nLCBwcml2YXRlIGNvbHVtbnM6IElDb2x1bW5JbmZvW10gPSBbXSkgIHtcbiAgICAgICAgdGhpcy5zZXREZWxpbWl0ZXIodmFsdWVEZWxpbWl0ZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmVwYXJlRGF0YShrZXk/OiBhbnlbXSkge1xuICAgICAgICBpZiAoIXRoaXMuX2RhdGEgfHwgdGhpcy5fZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICBsZXQga2V5cyA9IFtdO1xuICAgICAgICBpZiAoa2V5KXtcbiAgICAgICAgICAgIGtleXMgPSBrZXk7XG4gICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgIGtleXMgPSBFeHBvcnRVdGlsaXRpZXMuZ2V0S2V5c0Zyb21EYXRhKHRoaXMuX2RhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pc1NwZWNpYWxEYXRhID0gRXhwb3J0VXRpbGl0aWVzLmlzU3BlY2lhbERhdGEodGhpcy5fZGF0YVswXSk7XG4gICAgICAgIHRoaXMuX2VzY2FwZUNoYXJhY3RlcnMucHVzaCh0aGlzLl9kZWxpbWl0ZXIpO1xuXG4gICAgICAgIHRoaXMuX2hlYWRlclJlY29yZCA9IHRoaXMucHJvY2Vzc0hlYWRlclJlY29yZChrZXlzLCB0aGlzLl9kYXRhLmxlbmd0aCk7XG4gICAgICAgIHRoaXMuX2RhdGFSZWNvcmRzID0gdGhpcy5wcm9jZXNzRGF0YVJlY29yZHModGhpcy5fZGF0YSwga2V5cyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2hlYWRlclJlY29yZCArIHRoaXMuX2RhdGFSZWNvcmRzO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmVwYXJlRGF0YUFzeW5jKGRvbmU6IChyZXN1bHQ6IHN0cmluZykgPT4gdm9pZCkge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5maWx0ZXIoYyA9PiAhYy5za2lwKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuc3RhcnRJbmRleCAtIGIuc3RhcnRJbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLnBpbm5lZEluZGV4IC0gYi5waW5uZWRJbmRleCk7XG4gICAgICAgIGNvbnN0IGtleXMgPSBjb2x1bW5zICYmIGNvbHVtbnMubGVuZ3RoID8gY29sdW1ucy5tYXAoYyA9PiBjLmZpZWxkKSA6IEV4cG9ydFV0aWxpdGllcy5nZXRLZXlzRnJvbURhdGEodGhpcy5fZGF0YSk7XG5cbiAgICAgICAgdGhpcy5faXNTcGVjaWFsRGF0YSA9IEV4cG9ydFV0aWxpdGllcy5pc1NwZWNpYWxEYXRhKHRoaXMuX2RhdGFbMF0pO1xuICAgICAgICB0aGlzLl9lc2NhcGVDaGFyYWN0ZXJzLnB1c2godGhpcy5fZGVsaW1pdGVyKTtcblxuICAgICAgICBjb25zdCBoZWFkZXJzID0gY29sdW1ucyAmJiBjb2x1bW5zLmxlbmd0aCA/XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zLm1hcChjID0+IGMuaGVhZGVyID8/IGMuZmllbGQpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleXM7XG5cbiAgICAgICAgdGhpcy5faGVhZGVyUmVjb3JkID0gdGhpcy5wcm9jZXNzSGVhZGVyUmVjb3JkKGhlYWRlcnMsIHRoaXMuX2RhdGEubGVuZ3RoKTtcbiAgICAgICAgaWYgKGtleXMubGVuZ3RoID09PSAwIHx8ICgoIXRoaXMuX2RhdGEgfHwgdGhpcy5fZGF0YS5sZW5ndGggPT09IDApICYmIGtleXMubGVuZ3RoID09PSAwKSkge1xuICAgICAgICAgICAgZG9uZSgnJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NEYXRhUmVjb3Jkc0FzeW5jKHRoaXMuX2RhdGEsIGtleXMsIChkcikgPT4ge1xuICAgICAgICAgICAgICAgIGRvbmUodGhpcy5faGVhZGVyUmVjb3JkICsgZHIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NGaWVsZCh2YWx1ZSwgZXNjYXBlQ2hhcnMpOiBzdHJpbmcge1xuICAgICAgICBsZXQgc2FmZVZhbHVlID0gRXhwb3J0VXRpbGl0aWVzLmhhc1ZhbHVlKHZhbHVlKSA/IFN0cmluZyh2YWx1ZSkgOiAnJztcbiAgICAgICAgaWYgKGVzY2FwZUNoYXJzLnNvbWUoKHYpID0+IHNhZmVWYWx1ZS5pbmNsdWRlcyh2KSkpIHtcbiAgICAgICAgICAgIHNhZmVWYWx1ZSA9IGBcIiR7c2FmZVZhbHVlfVwiYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2FmZVZhbHVlICsgdGhpcy5fZGVsaW1pdGVyO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc0hlYWRlclJlY29yZChrZXlzLCBkYXRhTGVuZ3RoKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJlY29yZERhdGEgPSAnJztcbiAgICAgICAgZm9yIChjb25zdCBrZXlOYW1lIG9mIGtleXMpIHtcbiAgICAgICAgICAgIHJlY29yZERhdGEgKz0gdGhpcy5wcm9jZXNzRmllbGQoa2V5TmFtZSwgdGhpcy5fZXNjYXBlQ2hhcmFjdGVycyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSByZWNvcmREYXRhLnNsaWNlKDAsIC10aGlzLl9kZWxpbWl0ZXJMZW5ndGgpO1xuXG4gICAgICAgIHJldHVybiBkYXRhTGVuZ3RoID4gMCA/IHJlc3VsdCArIHRoaXMuX2VvciA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NSZWNvcmQocmVjb3JkLCBrZXlzKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcmVjb3JkRGF0YSA9IG5ldyBBcnJheShrZXlzLmxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBrZXlzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAocmVjb3JkW2tleXNbaW5kZXhdXSAhPT0gdW5kZWZpbmVkKSA/IHJlY29yZFtrZXlzW2luZGV4XV0gOiB0aGlzLl9pc1NwZWNpYWxEYXRhID8gcmVjb3JkIDogJyc7XG4gICAgICAgICAgICByZWNvcmREYXRhW2luZGV4XSA9IHRoaXMucHJvY2Vzc0ZpZWxkKHZhbHVlLCB0aGlzLl9lc2NhcGVDaGFyYWN0ZXJzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZWNvcmREYXRhLmpvaW4oJycpLnNsaWNlKDAsIC10aGlzLl9kZWxpbWl0ZXJMZW5ndGgpICsgdGhpcy5fZW9yO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc0RhdGFSZWNvcmRzKGN1cnJlbnREYXRhLCBrZXlzKSB7XG4gICAgICAgIGNvbnN0IGRhdGFSZWNvcmRzID0gbmV3IEFycmF5KGN1cnJlbnREYXRhLmxlbmd0aCk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJyZW50RGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qgcm93ID0gY3VycmVudERhdGFbaV07XG4gICAgICAgICAgICBkYXRhUmVjb3Jkc1tpXSA9IHRoaXMucHJvY2Vzc1JlY29yZChyb3csIGtleXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGFSZWNvcmRzLmpvaW4oJycpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc0RhdGFSZWNvcmRzQXN5bmMoY3VycmVudERhdGEsIGtleXMsIGRvbmU6IChyZXN1bHQ6IHN0cmluZykgPT4gdm9pZCkge1xuICAgICAgICBjb25zdCBkYXRhUmVjb3JkcyA9IG5ldyBBcnJheShjdXJyZW50RGF0YS5sZW5ndGgpO1xuXG4gICAgICAgIHlpZWxkaW5nTG9vcChjdXJyZW50RGF0YS5sZW5ndGgsIDEwMDAsXG4gICAgICAgICAgICAoaSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvdyA9IGN1cnJlbnREYXRhW2ldO1xuICAgICAgICAgICAgICAgIGRhdGFSZWNvcmRzW2ldID0gdGhpcy5wcm9jZXNzUmVjb3JkKHJvdywga2V5cyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGRvbmUoZGF0YVJlY29yZHMuam9pbignJykpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXREZWxpbWl0ZXIodmFsdWUpIHtcbiAgICAgICAgdGhpcy5fZGVsaW1pdGVyID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2RlbGltaXRlckxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgICB9XG59XG4iXX0=
@@ -64,7 +64,7 @@ export class IgxCsvExporterService extends IgxBaseExporter {
64
64
  }
65
65
  }
66
66
  exportFile(data, fileName, fileType) {
67
- const blob = new Blob(['\ufeff', data], { type: fileType });
67
+ const blob = new Blob([data ? '\ufeff' : '', data], { type: fileType });
68
68
  ExportUtilities.saveBlobToFile(blob, fileName);
69
69
  }
70
70
  }
@@ -76,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImpor
76
76
  providedIn: 'root',
77
77
  }]
78
78
  }] });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LWV4cG9ydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL3NlcnZpY2VzL2Nzdi9jc3YtZXhwb3J0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBaUIsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQXlCLE1BQU0sd0JBQXdCLENBQUM7O0FBTzdFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFJSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsZUFBZTtJQUgxRDs7UUFJSTs7Ozs7Ozs7O1dBU0c7UUFDSSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO0tBaUNyRTtJQTdCYSx3QkFBd0IsQ0FBQyxJQUFxQixFQUFFLE9BQThCLEVBQUUsSUFBZ0I7UUFDdEcsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV0RCxNQUFNLE9BQU8sR0FBRyxJQUFJLHNCQUFzQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5RixPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELElBQUksRUFBRSxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sUUFBUSxDQUFDLE9BQThCO1FBQzNDLFFBQVEsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUN0QixLQUFLLFlBQVksQ0FBQyxHQUFHO2dCQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO2dCQUMvRSxNQUFNO1lBQ1YsS0FBSyxZQUFZLENBQUMsR0FBRyxDQUFDO1lBQ3RCLEtBQUssWUFBWSxDQUFDLEdBQUc7Z0JBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLDBDQUEwQyxDQUFDLENBQUM7Z0JBQ2hHLE1BQU07U0FDYjtJQUNMLENBQUM7SUFFTyxVQUFVLENBQUMsSUFBWSxFQUFFLFFBQWdCLEVBQUUsUUFBZ0I7UUFDL0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM1RCxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNuRCxDQUFDOztrSEEzQ1EscUJBQXFCO3NIQUFyQixxQkFBcUIsY0FGbEIsTUFBTTsyRkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBERUZBVUxUX09XTkVSLCBJRXhwb3J0UmVjb3JkLCBJZ3hCYXNlRXhwb3J0ZXIgfSBmcm9tICcuLi9leHBvcnRlci1jb21tb24vYmFzZS1leHBvcnQtc2VydmljZSc7XG5pbXBvcnQgeyBFeHBvcnRVdGlsaXRpZXMgfSBmcm9tICcuLi9leHBvcnRlci1jb21tb24vZXhwb3J0LXV0aWxpdGllcyc7XG5pbXBvcnQgeyBDaGFyU2VwYXJhdGVkVmFsdWVEYXRhIH0gZnJvbSAnLi9jaGFyLXNlcGFyYXRlZC12YWx1ZS1kYXRhJztcbmltcG9ydCB7IENzdkZpbGVUeXBlcywgSWd4Q3N2RXhwb3J0ZXJPcHRpb25zIH0gZnJvbSAnLi9jc3YtZXhwb3J0ZXItb3B0aW9ucyc7XG5pbXBvcnQgeyBJQmFzZUV2ZW50QXJncyB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDc3ZFeHBvcnRFbmRlZEV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICBjc3ZEYXRhPzogc3RyaW5nO1xufVxuXG4vKipcbiAqICoqSWduaXRlIFVJIGZvciBBbmd1bGFyIENTViBFeHBvcnRlciBTZXJ2aWNlKiogLVxuICogW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vd3d3LmluZnJhZ2lzdGljcy5jb20vcHJvZHVjdHMvaWduaXRlLXVpLWFuZ3VsYXIvYW5ndWxhci9jb21wb25lbnRzL2V4cG9ydGVyLWNzdilcbiAqXG4gKiBUaGUgSWduaXRlIFVJIGZvciBBbmd1bGFyIENTViBFeHBvcnRlciBzZXJ2aWNlIGNhbiBleHBvcnQgZGF0YSBpbiBhIENoYXJhY3RlciBTZXBhcmF0ZWQgVmFsdWVzIGZvcm1hdCBmcm9tXG4gKiBib3RoIHJhdyBkYXRhIChhcnJheSkgb3IgZnJvbSBhbiBgSWd4R3JpZGAuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHB1YmxpYyBsb2NhbERhdGEgPSBbXG4gKiAgIHsgTmFtZTogXCJFcmljIFJpZGxleVwiLCBBZ2U6IFwiMjZcIiB9LFxuICogICB7IE5hbWU6IFwiQWxhbmlzIEJyb29rXCIsIEFnZTogXCIyMlwiIH0sXG4gKiAgIHsgTmFtZTogXCJKb25hdGhhbiBNb3JyaXNcIiwgQWdlOiBcIjIzXCIgfVxuICogXTtcbiAqXG4gKiBjb25zdHJ1Y3Rvcihwcml2YXRlIGNzdkV4cG9ydFNlcnZpY2U6IElneENzdkV4cG9ydGVyU2VydmljZSkge1xuICogfVxuICpcbiAqIGNvbnN0IG9wdDogSWd4Q3N2RXhwb3J0ZXJPcHRpb25zID0gbmV3IElneENzdkV4cG9ydGVyT3B0aW9ucyhcIkZpbGVOYW1lXCIsIENzdkZpbGVUeXBlcy5DU1YpO1xuICogdGhpcy5jc3ZFeHBvcnRTZXJ2aWNlLmV4cG9ydERhdGEodGhpcy5sb2NhbERhdGEsIG9wdCk7XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSWd4Q3N2RXhwb3J0ZXJTZXJ2aWNlIGV4dGVuZHMgSWd4QmFzZUV4cG9ydGVyIHtcbiAgICAvKipcbiAgICAgKiBUaGlzIGV2ZW50IGlzIGVtaXR0ZWQgd2hlbiB0aGUgZXhwb3J0IHByb2Nlc3MgZmluaXNoZXMuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuZXhwb3J0ZXJTZXJ2aWNlLmV4cG9ydEVuZGVkLnN1YnNjcmliZSgoYXJnczogSUNzdkV4cG9ydEVuZGVkRXZlbnRBcmdzKSA9PiB7XG4gICAgICogLy8gcHV0IGV2ZW50IGhhbmRsZXIgY29kZSBoZXJlXG4gICAgICogfSk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4Q3N2RXhwb3J0ZXJTZXJ2aWNlXG4gICAgICovXG4gICAgcHVibGljIGV4cG9ydEVuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxJQ3N2RXhwb3J0RW5kZWRFdmVudEFyZ3M+KCk7XG5cbiAgICBwcml2YXRlIF9zdHJpbmdEYXRhOiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgZXhwb3J0RGF0YUltcGxlbWVudGF0aW9uKGRhdGE6IElFeHBvcnRSZWNvcmRbXSwgb3B0aW9uczogSWd4Q3N2RXhwb3J0ZXJPcHRpb25zLCBkb25lOiAoKSA9PiB2b2lkKSB7XG4gICAgICAgIGRhdGEgPSBkYXRhLm1hcCgoaXRlbSkgPT4gaXRlbS5kYXRhKTtcbiAgICAgICAgY29uc3QgY29sdW1uTGlzdCA9IHRoaXMuX293bmVyc01hcC5nZXQoREVGQVVMVF9PV05FUik7XG5cbiAgICAgICAgY29uc3QgY3N2RGF0YSA9IG5ldyBDaGFyU2VwYXJhdGVkVmFsdWVEYXRhKGRhdGEsIG9wdGlvbnMudmFsdWVEZWxpbWl0ZXIsIGNvbHVtbkxpc3Q/LmNvbHVtbnMpO1xuICAgICAgICBjc3ZEYXRhLnByZXBhcmVEYXRhQXN5bmMoKHIpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3N0cmluZ0RhdGEgPSByO1xuICAgICAgICAgICAgdGhpcy5zYXZlRmlsZShvcHRpb25zKTtcbiAgICAgICAgICAgIHRoaXMuZXhwb3J0RW5kZWQuZW1pdCh7IGNzdkRhdGE6IHRoaXMuX3N0cmluZ0RhdGEgfSk7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2F2ZUZpbGUob3B0aW9uczogSWd4Q3N2RXhwb3J0ZXJPcHRpb25zKSB7XG4gICAgICAgIHN3aXRjaCAob3B0aW9ucy5maWxlVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBDc3ZGaWxlVHlwZXMuQ1NWOlxuICAgICAgICAgICAgICAgIHRoaXMuZXhwb3J0RmlsZSh0aGlzLl9zdHJpbmdEYXRhLCBvcHRpb25zLmZpbGVOYW1lLCAndGV4dC9jc3Y7Y2hhcnNldD11dGYtODsnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQ3N2RmlsZVR5cGVzLlRTVjpcbiAgICAgICAgICAgIGNhc2UgQ3N2RmlsZVR5cGVzLlRBQjpcbiAgICAgICAgICAgICAgICB0aGlzLmV4cG9ydEZpbGUodGhpcy5fc3RyaW5nRGF0YSwgb3B0aW9ucy5maWxlTmFtZSwgJ3RleHQvdGFiLXNlcGFyYXRlZC12YWx1ZXM7Y2hhcnNldD11dGYtODsnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZXhwb3J0RmlsZShkYXRhOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcsIGZpbGVUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFsnXFx1ZmVmZicsIGRhdGFdLCB7IHR5cGU6IGZpbGVUeXBlIH0pO1xuICAgICAgICBFeHBvcnRVdGlsaXRpZXMuc2F2ZUJsb2JUb0ZpbGUoYmxvYiwgZmlsZU5hbWUpO1xuICAgIH1cbn1cbiJdfQ==
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LWV4cG9ydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL3NlcnZpY2VzL2Nzdi9jc3YtZXhwb3J0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBaUIsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQXlCLE1BQU0sd0JBQXdCLENBQUM7O0FBTzdFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFJSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsZUFBZTtJQUgxRDs7UUFJSTs7Ozs7Ozs7O1dBU0c7UUFDSSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO0tBaUNyRTtJQTdCYSx3QkFBd0IsQ0FBQyxJQUFxQixFQUFFLE9BQThCLEVBQUUsSUFBZ0I7UUFDdEcsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV0RCxNQUFNLE9BQU8sR0FBRyxJQUFJLHNCQUFzQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5RixPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELElBQUksRUFBRSxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sUUFBUSxDQUFDLE9BQThCO1FBQzNDLFFBQVEsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUN0QixLQUFLLFlBQVksQ0FBQyxHQUFHO2dCQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO2dCQUMvRSxNQUFNO1lBQ1YsS0FBSyxZQUFZLENBQUMsR0FBRyxDQUFDO1lBQ3RCLEtBQUssWUFBWSxDQUFDLEdBQUc7Z0JBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLDBDQUEwQyxDQUFDLENBQUM7Z0JBQ2hHLE1BQU07U0FDYjtJQUNMLENBQUM7SUFFTyxVQUFVLENBQUMsSUFBWSxFQUFFLFFBQWdCLEVBQUUsUUFBZ0I7UUFDL0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDeEUsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQzs7a0hBM0NRLHFCQUFxQjtzSEFBckIscUJBQXFCLGNBRmxCLE1BQU07MkZBRVQscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgREVGQVVMVF9PV05FUiwgSUV4cG9ydFJlY29yZCwgSWd4QmFzZUV4cG9ydGVyIH0gZnJvbSAnLi4vZXhwb3J0ZXItY29tbW9uL2Jhc2UtZXhwb3J0LXNlcnZpY2UnO1xuaW1wb3J0IHsgRXhwb3J0VXRpbGl0aWVzIH0gZnJvbSAnLi4vZXhwb3J0ZXItY29tbW9uL2V4cG9ydC11dGlsaXRpZXMnO1xuaW1wb3J0IHsgQ2hhclNlcGFyYXRlZFZhbHVlRGF0YSB9IGZyb20gJy4vY2hhci1zZXBhcmF0ZWQtdmFsdWUtZGF0YSc7XG5pbXBvcnQgeyBDc3ZGaWxlVHlwZXMsIElneENzdkV4cG9ydGVyT3B0aW9ucyB9IGZyb20gJy4vY3N2LWV4cG9ydGVyLW9wdGlvbnMnO1xuaW1wb3J0IHsgSUJhc2VFdmVudEFyZ3MgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBJQ3N2RXhwb3J0RW5kZWRFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgY3N2RGF0YT86IHN0cmluZztcbn1cblxuLyoqXG4gKiAqKklnbml0ZSBVSSBmb3IgQW5ndWxhciBDU1YgRXhwb3J0ZXIgU2VydmljZSoqIC1cbiAqIFtEb2N1bWVudGF0aW9uXShodHRwczovL3d3dy5pbmZyYWdpc3RpY3MuY29tL3Byb2R1Y3RzL2lnbml0ZS11aS1hbmd1bGFyL2FuZ3VsYXIvY29tcG9uZW50cy9leHBvcnRlci1jc3YpXG4gKlxuICogVGhlIElnbml0ZSBVSSBmb3IgQW5ndWxhciBDU1YgRXhwb3J0ZXIgc2VydmljZSBjYW4gZXhwb3J0IGRhdGEgaW4gYSBDaGFyYWN0ZXIgU2VwYXJhdGVkIFZhbHVlcyBmb3JtYXQgZnJvbVxuICogYm90aCByYXcgZGF0YSAoYXJyYXkpIG9yIGZyb20gYW4gYElneEdyaWRgLlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBwdWJsaWMgbG9jYWxEYXRhID0gW1xuICogICB7IE5hbWU6IFwiRXJpYyBSaWRsZXlcIiwgQWdlOiBcIjI2XCIgfSxcbiAqICAgeyBOYW1lOiBcIkFsYW5pcyBCcm9va1wiLCBBZ2U6IFwiMjJcIiB9LFxuICogICB7IE5hbWU6IFwiSm9uYXRoYW4gTW9ycmlzXCIsIEFnZTogXCIyM1wiIH1cbiAqIF07XG4gKlxuICogY29uc3RydWN0b3IocHJpdmF0ZSBjc3ZFeHBvcnRTZXJ2aWNlOiBJZ3hDc3ZFeHBvcnRlclNlcnZpY2UpIHtcbiAqIH1cbiAqXG4gKiBjb25zdCBvcHQ6IElneENzdkV4cG9ydGVyT3B0aW9ucyA9IG5ldyBJZ3hDc3ZFeHBvcnRlck9wdGlvbnMoXCJGaWxlTmFtZVwiLCBDc3ZGaWxlVHlwZXMuQ1NWKTtcbiAqIHRoaXMuY3N2RXhwb3J0U2VydmljZS5leHBvcnREYXRhKHRoaXMubG9jYWxEYXRhLCBvcHQpO1xuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIElneENzdkV4cG9ydGVyU2VydmljZSBleHRlbmRzIElneEJhc2VFeHBvcnRlciB7XG4gICAgLyoqXG4gICAgICogVGhpcyBldmVudCBpcyBlbWl0dGVkIHdoZW4gdGhlIGV4cG9ydCBwcm9jZXNzIGZpbmlzaGVzLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmV4cG9ydGVyU2VydmljZS5leHBvcnRFbmRlZC5zdWJzY3JpYmUoKGFyZ3M6IElDc3ZFeHBvcnRFbmRlZEV2ZW50QXJncykgPT4ge1xuICAgICAqIC8vIHB1dCBldmVudCBoYW5kbGVyIGNvZGUgaGVyZVxuICAgICAqIH0pO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneENzdkV4cG9ydGVyU2VydmljZVxuICAgICAqL1xuICAgIHB1YmxpYyBleHBvcnRFbmRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SUNzdkV4cG9ydEVuZGVkRXZlbnRBcmdzPigpO1xuXG4gICAgcHJpdmF0ZSBfc3RyaW5nRGF0YTogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIGV4cG9ydERhdGFJbXBsZW1lbnRhdGlvbihkYXRhOiBJRXhwb3J0UmVjb3JkW10sIG9wdGlvbnM6IElneENzdkV4cG9ydGVyT3B0aW9ucywgZG9uZTogKCkgPT4gdm9pZCkge1xuICAgICAgICBkYXRhID0gZGF0YS5tYXAoKGl0ZW0pID0+IGl0ZW0uZGF0YSk7XG4gICAgICAgIGNvbnN0IGNvbHVtbkxpc3QgPSB0aGlzLl9vd25lcnNNYXAuZ2V0KERFRkFVTFRfT1dORVIpO1xuXG4gICAgICAgIGNvbnN0IGNzdkRhdGEgPSBuZXcgQ2hhclNlcGFyYXRlZFZhbHVlRGF0YShkYXRhLCBvcHRpb25zLnZhbHVlRGVsaW1pdGVyLCBjb2x1bW5MaXN0Py5jb2x1bW5zKTtcbiAgICAgICAgY3N2RGF0YS5wcmVwYXJlRGF0YUFzeW5jKChyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zdHJpbmdEYXRhID0gcjtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUZpbGUob3B0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLmV4cG9ydEVuZGVkLmVtaXQoeyBjc3ZEYXRhOiB0aGlzLl9zdHJpbmdEYXRhIH0pO1xuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNhdmVGaWxlKG9wdGlvbnM6IElneENzdkV4cG9ydGVyT3B0aW9ucykge1xuICAgICAgICBzd2l0Y2ggKG9wdGlvbnMuZmlsZVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQ3N2RmlsZVR5cGVzLkNTVjpcbiAgICAgICAgICAgICAgICB0aGlzLmV4cG9ydEZpbGUodGhpcy5fc3RyaW5nRGF0YSwgb3B0aW9ucy5maWxlTmFtZSwgJ3RleHQvY3N2O2NoYXJzZXQ9dXRmLTg7Jyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIENzdkZpbGVUeXBlcy5UU1Y6XG4gICAgICAgICAgICBjYXNlIENzdkZpbGVUeXBlcy5UQUI6XG4gICAgICAgICAgICAgICAgdGhpcy5leHBvcnRGaWxlKHRoaXMuX3N0cmluZ0RhdGEsIG9wdGlvbnMuZmlsZU5hbWUsICd0ZXh0L3RhYi1zZXBhcmF0ZWQtdmFsdWVzO2NoYXJzZXQ9dXRmLTg7Jyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGV4cG9ydEZpbGUoZGF0YTogc3RyaW5nLCBmaWxlTmFtZTogc3RyaW5nLCBmaWxlVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbZGF0YSA/ICdcXHVmZWZmJyA6ICcnLCBkYXRhXSwgeyB0eXBlOiBmaWxlVHlwZSB9KTtcbiAgICAgICAgRXhwb3J0VXRpbGl0aWVzLnNhdmVCbG9iVG9GaWxlKGJsb2IsIGZpbGVOYW1lKTtcbiAgICB9XG59XG4iXX0=
@@ -3477,29 +3477,28 @@ class CharSeparatedValueData {
3477
3477
  }
3478
3478
  this._isSpecialData = ExportUtilities.isSpecialData(this._data[0]);
3479
3479
  this._escapeCharacters.push(this._delimiter);
3480
- this._headerRecord = this.processHeaderRecord(keys);
3480
+ this._headerRecord = this.processHeaderRecord(keys, this._data.length);
3481
3481
  this._dataRecords = this.processDataRecords(this._data, keys);
3482
3482
  return this._headerRecord + this._dataRecords;
3483
3483
  }
3484
3484
  prepareDataAsync(done) {
3485
3485
  var _a;
3486
- if (!this._data || this._data.length === 0) {
3487
- done('');
3488
- }
3489
3486
  const columns = (_a = this.columns) === null || _a === void 0 ? void 0 : _a.filter(c => !c.skip).sort((a, b) => a.startIndex - b.startIndex).sort((a, b) => a.pinnedIndex - b.pinnedIndex);
3490
3487
  const keys = columns && columns.length ? columns.map(c => c.field) : ExportUtilities.getKeysFromData(this._data);
3491
- if (keys.length === 0) {
3492
- done('');
3493
- }
3494
3488
  this._isSpecialData = ExportUtilities.isSpecialData(this._data[0]);
3495
3489
  this._escapeCharacters.push(this._delimiter);
3496
3490
  const headers = columns && columns.length ?
3497
3491
  columns.map(c => { var _a; return (_a = c.header) !== null && _a !== void 0 ? _a : c.field; }) :
3498
3492
  keys;
3499
- this._headerRecord = this.processHeaderRecord(headers);
3500
- this.processDataRecordsAsync(this._data, keys, (dr) => {
3501
- done(this._headerRecord + dr);
3502
- });
3493
+ this._headerRecord = this.processHeaderRecord(headers, this._data.length);
3494
+ if (keys.length === 0 || ((!this._data || this._data.length === 0) && keys.length === 0)) {
3495
+ done('');
3496
+ }
3497
+ else {
3498
+ this.processDataRecordsAsync(this._data, keys, (dr) => {
3499
+ done(this._headerRecord + dr);
3500
+ });
3501
+ }
3503
3502
  }
3504
3503
  processField(value, escapeChars) {
3505
3504
  let safeValue = ExportUtilities.hasValue(value) ? String(value) : '';
@@ -3508,12 +3507,13 @@ class CharSeparatedValueData {
3508
3507
  }
3509
3508
  return safeValue + this._delimiter;
3510
3509
  }
3511
- processHeaderRecord(keys) {
3510
+ processHeaderRecord(keys, dataLength) {
3512
3511
  let recordData = '';
3513
3512
  for (const keyName of keys) {
3514
3513
  recordData += this.processField(keyName, this._escapeCharacters);
3515
3514
  }
3516
- return recordData.slice(0, -this._delimiterLength) + this._eor;
3515
+ const result = recordData.slice(0, -this._delimiterLength);
3516
+ return dataLength > 0 ? result + this._eor : result;
3517
3517
  }
3518
3518
  processRecord(record, keys) {
3519
3519
  const recordData = new Array(keys.length);
@@ -3839,7 +3839,7 @@ class IgxCsvExporterService extends IgxBaseExporter {
3839
3839
  }
3840
3840
  }
3841
3841
  exportFile(data, fileName, fileType) {
3842
- const blob = new Blob(['\ufeff', data], { type: fileType });
3842
+ const blob = new Blob([data ? '\ufeff' : '', data], { type: fileType });
3843
3843
  ExportUtilities.saveBlobToFile(blob, fileName);
3844
3844
  }
3845
3845
  }
@@ -78604,12 +78604,12 @@ class IgxTreeGridNormalizeRecordsPipe {
78604
78604
  const primaryKey = this.grid.primaryKey;
78605
78605
  // using flattened data because origin data may be hierarchical.
78606
78606
  const flatData = this.grid.flatData;
78607
- const res = flatData.map(rec => ({
78607
+ const res = flatData ? flatData.map(rec => ({
78608
78608
  rowID: this.grid.primaryKey ? rec[primaryKey] : rec,
78609
78609
  data: rec,
78610
78610
  level: 0,
78611
78611
  children: []
78612
- }));
78612
+ })) : [];
78613
78613
  return res;
78614
78614
  }
78615
78615
  }