igniteui-angular 18.2.20 → 18.2.22

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.
Files changed (37) hide show
  1. package/esm2022/lib/data-operations/filtering-strategy.mjs +2 -2
  2. package/esm2022/lib/services/csv/char-separated-value-data.mjs +5 -2
  3. package/esm2022/lib/services/csv/csv-exporter.mjs +23 -4
  4. package/esm2022/lib/services/exporter-common/base-export-service.mjs +8 -1
  5. package/esm2022/lib/splitter/splitter.component.mjs +10 -2
  6. package/fesm2022/igniteui-angular.mjs +42 -5
  7. package/fesm2022/igniteui-angular.mjs.map +1 -1
  8. package/lib/core/styles/components/icon-button/_icon-button-theme.scss +2 -2
  9. package/lib/core/styles/components/input/_input-group-theme.scss +4 -0
  10. package/lib/services/exporter-common/base-export-service.d.ts +2 -0
  11. package/package.json +1 -1
  12. package/styles/igniteui-angular-dark.css +1 -1
  13. package/styles/igniteui-angular.css +1 -1
  14. package/styles/igniteui-bootstrap-dark.css +1 -1
  15. package/styles/igniteui-bootstrap-light.css +1 -1
  16. package/styles/igniteui-dark-green.css +1 -1
  17. package/styles/igniteui-fluent-dark-excel.css +1 -1
  18. package/styles/igniteui-fluent-dark-word.css +1 -1
  19. package/styles/igniteui-fluent-dark.css +1 -1
  20. package/styles/igniteui-fluent-light-excel.css +1 -1
  21. package/styles/igniteui-fluent-light-word.css +1 -1
  22. package/styles/igniteui-fluent-light.css +1 -1
  23. package/styles/igniteui-indigo-dark.css +1 -1
  24. package/styles/igniteui-indigo-light.css +1 -1
  25. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  26. package/styles/maps/igniteui-angular.css.map +1 -1
  27. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  28. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  29. package/styles/maps/igniteui-dark-green.css.map +1 -1
  30. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  31. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  32. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  33. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  34. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  35. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  36. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  37. package/styles/maps/igniteui-indigo-light.css.map +1 -1
@@ -110,7 +110,7 @@ export class BaseFilteringStrategy {
110
110
  }
111
111
  else if (column.dataType === GridColumnDataType.Time) {
112
112
  const date = key ? new Date(key) : key;
113
- key = date ? new Date().setHours(date.getHours(), date.getMinutes(), date.getSeconds()) : key;
113
+ key = date ? new Date().setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()) : key;
114
114
  item.value = key ? new Date(key) : key;
115
115
  }
116
116
  else if (column.dataType === GridColumnDataType.Date) {
@@ -188,4 +188,4 @@ export class FormattedValuesFilteringStrategy extends FilteringStrategy {
188
188
  return !this.fields || this.fields.length === 0 || this.fields.some(f => f === column.field);
189
189
  }
190
190
  }
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyaW5nLXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBd0IsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsd0JBQXdCLEVBQTZCLE1BQU0sOEJBQThCLENBQUM7QUFDbkcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3JGLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQztBQUN4QixNQUFNLFlBQVksR0FBRyxVQUFVLENBQUM7QUFDaEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDO0FBRXhCLE1BQU0sT0FBTyxVQUFVO0lBQ1osTUFBTSxDQUFDLE1BQU0sQ0FBSSxJQUFTLEVBQUUsS0FBc0IsRUFBRSxJQUFlO1FBQ3RFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDN0MsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25HLENBQUM7Q0FDSjtBQWdCRCxnQkFBZ0I7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LFNBQVMsQ0FBQyxDQUFDO1FBRTlDLEtBQUssR0FBRyxNQUFNLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDOUIsS0FBSyxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUUzRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOztBQUVMLE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSxpQkFBaUI7SUFDbkU7Ozs7O09BS0c7SUFDSCxZQUFvQixNQUFpQjtRQUNqQyxLQUFLLEVBQUUsQ0FBQztRQURRLFdBQU0sR0FBTixNQUFNLENBQVc7SUFFckMsQ0FBQztJQUVrQix3QkFBd0IsQ0FBQyxNQUFrQjtRQUMxRCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pHLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpbHRlcmluZ0xvZ2ljLCBJRmlsdGVyaW5nRXhwcmVzc2lvbiB9IGZyb20gJy4vZmlsdGVyaW5nLWV4cHJlc3Npb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSwgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB9IGZyb20gJy4vZmlsdGVyaW5nLWV4cHJlc3Npb25zLXRyZWUnO1xuaW1wb3J0IHsgcmVzb2x2ZU5lc3RlZFBhdGgsIHBhcnNlRGF0ZSwgZm9ybWF0RGF0ZSwgZm9ybWF0Q3VycmVuY3kgfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IENvbHVtblR5cGUsIEdyaWRUeXBlIH0gZnJvbSAnLi4vZ3JpZHMvY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEdyaWRDb2x1bW5EYXRhVHlwZSB9IGZyb20gJy4vZGF0YS11dGlsJztcbmltcG9ydCB7IFNvcnRpbmdEaXJlY3Rpb24gfSBmcm9tICcuL3NvcnRpbmctc3RyYXRlZ3knO1xuaW1wb3J0IHsgZm9ybWF0TnVtYmVyLCBmb3JtYXRQZXJjZW50LCBnZXRMb2NhbGVDdXJyZW5jeUNvZGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSUZpbHRlcmluZ1N0YXRlIH0gZnJvbSAnLi9maWx0ZXJpbmctc3RhdGUuaW50ZXJmYWNlJztcblxuY29uc3QgRGF0ZVR5cGUgPSAnZGF0ZSc7XG5jb25zdCBEYXRlVGltZVR5cGUgPSAnZGF0ZVRpbWUnO1xuY29uc3QgVGltZVR5cGUgPSAndGltZSc7XG5cbmV4cG9ydCBjbGFzcyBGaWx0ZXJVdGlsIHtcbiAgICBwdWJsaWMgc3RhdGljIGZpbHRlcjxUPihkYXRhOiBUW10sIHN0YXRlOiBJRmlsdGVyaW5nU3RhdGUsIGdyaWQ/OiBHcmlkVHlwZSk6IFRbXSB7XG4gICAgICAgIGlmICghc3RhdGUuc3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIHN0YXRlLnN0cmF0ZWd5ID0gbmV3IEZpbHRlcmluZ1N0cmF0ZWd5KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0YXRlLnN0cmF0ZWd5LmZpbHRlcihkYXRhLCBzdGF0ZS5leHByZXNzaW9uc1RyZWUsIHN0YXRlLmFkdmFuY2VkRXhwcmVzc2lvbnNUcmVlLCBncmlkKTtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZpbHRlcmluZ1N0cmF0ZWd5IHtcbiAgICBmaWx0ZXIoZGF0YTogYW55W10sIGV4cHJlc3Npb25zVHJlZTogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSwgYWR2YW5jZWRFeHByZXNzaW9uc1RyZWU/OiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLFxuICAgICAgICBncmlkPzogR3JpZFR5cGUpOiBhbnlbXTtcbiAgICAvKiBjc1N1cHByZXNzICovXG4gICAgZ2V0RmlsdGVySXRlbXMoY29sdW1uOiBDb2x1bW5UeXBlLCB0cmVlOiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKSA6IFByb21pc2U8SWd4RmlsdGVySXRlbVtdPjtcbn1cblxuLyogY3NTdXBwcmVzcyAqL1xuZXhwb3J0IGludGVyZmFjZSBJZ3hGaWx0ZXJJdGVtIHtcbiAgICB2YWx1ZTogYW55O1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGNoaWxkcmVuPzogSWd4RmlsdGVySXRlbVtdO1xufVxuXG4vKiBjc1N1cHByZXNzICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUZpbHRlcmluZ1N0cmF0ZWd5IGltcGxlbWVudHMgSUZpbHRlcmluZ1N0cmF0ZWd5ICB7XG4gICAgLy8gcHJvdGVjdGVkXG4gICAgcHVibGljIGZpbmRNYXRjaEJ5RXhwcmVzc2lvbihyZWM6IGFueSwgZXhwcjogSUZpbHRlcmluZ0V4cHJlc3Npb24sIGlzRGF0ZT86IGJvb2xlYW4sIGlzVGltZT86IGJvb2xlYW4sIGdyaWQ/OiBHcmlkVHlwZSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjb25kID0gZXhwci5jb25kaXRpb247XG4gICAgICAgIGNvbnN0IHZhbCA9IHRoaXMuZ2V0RmllbGRWYWx1ZShyZWMsIGV4cHIuZmllbGROYW1lLCBpc0RhdGUsIGlzVGltZSwgZ3JpZCk7XG4gICAgICAgIHJldHVybiBjb25kLmxvZ2ljKHZhbCwgZXhwci5zZWFyY2hWYWwsIGV4cHIuaWdub3JlQ2FzZSk7XG4gICAgfVxuXG4gICAgLy8gcHJvdGVjdGVkXG4gICAgcHVibGljIG1hdGNoUmVjb3JkKHJlYzogYW55LCBleHByZXNzaW9uczogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB8IElGaWx0ZXJpbmdFeHByZXNzaW9uLCBncmlkPzogR3JpZFR5cGUpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGV4cHJlc3Npb25zKSB7XG4gICAgICAgICAgICBpZiAoZXhwcmVzc2lvbnMgaW5zdGFuY2VvZiBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uc1RyZWUgPSBleHByZXNzaW9ucyBhcyBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wZXJhdG9yID0gZXhwcmVzc2lvbnNUcmVlLm9wZXJhdG9yIGFzIEZpbHRlcmluZ0xvZ2ljO1xuICAgICAgICAgICAgICAgIGxldCBtYXRjaE9wZXJhbmQ7XG5cbiAgICAgICAgICAgICAgICBpZiAoZXhwcmVzc2lvbnNUcmVlLmZpbHRlcmluZ09wZXJhbmRzICYmIGV4cHJlc3Npb25zVHJlZS5maWx0ZXJpbmdPcGVyYW5kcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBvcGVyYW5kIG9mIGV4cHJlc3Npb25zVHJlZS5maWx0ZXJpbmdPcGVyYW5kcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hPcGVyYW5kID0gdGhpcy5tYXRjaFJlY29yZChyZWMsIG9wZXJhbmQsIGdyaWQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4gZmFsc2UgaWYgYXQgbGVhc3Qgb25lIG9wZXJhbmQgZG9lcyBub3QgbWF0Y2ggYW5kIHRoZSBmaWx0ZXJpbmcgbG9naWMgaXMgQW5kXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoT3BlcmFuZCAmJiBvcGVyYXRvciA9PT0gRmlsdGVyaW5nTG9naWMuQW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgb3BlcmFuZCBtYXRjaGVzIGFuZCB0aGUgZmlsdGVyaW5nIGxvZ2ljIGlzIE9yXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hPcGVyYW5kICYmIG9wZXJhdG9yID09PSBGaWx0ZXJpbmdMb2dpYy5Pcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoT3BlcmFuZDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25zIGFzIElGaWx0ZXJpbmdFeHByZXNzaW9uO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IGdyaWQgJiYgZ3JpZC5nZXRDb2x1bW5CeU5hbWUoZXhwcmVzc2lvbi5maWVsZE5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzRGF0ZSA9IGNvbHVtbiA/IGNvbHVtbi5kYXRhVHlwZSA9PT0gRGF0ZVR5cGUgfHwgY29sdW1uLmRhdGFUeXBlID09PSBEYXRlVGltZVR5cGUgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc1RpbWUgPSBjb2x1bW4gPyBjb2x1bW4uZGF0YVR5cGUgPT09IFRpbWVUeXBlIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZE1hdGNoQnlFeHByZXNzaW9uKHJlYywgZXhwcmVzc2lvbiwgaXNEYXRlLCBpc1RpbWUsIGdyaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpbHRlckl0ZW1zKGNvbHVtbjogQ29sdW1uVHlwZSwgdHJlZTogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSk6IFByb21pc2U8SWd4RmlsdGVySXRlbVtdPiB7XG5cbiAgICAgICAgbGV0IGRhdGEgPSBjb2x1bW4uZ3JpZC5ncmlkQVBJLmZpbHRlckRhdGFCeUV4cHJlc3Npb25zKHRyZWUpO1xuICAgICAgICBkYXRhID0gY29sdW1uLmdyaWQuZ3JpZEFQSS5zb3J0RGF0YUJ5RXhwcmVzc2lvbnMoZGF0YSxcbiAgICAgICAgICAgIFt7IGZpZWxkTmFtZTogY29sdW1uLmZpZWxkLCBkaXI6IFNvcnRpbmdEaXJlY3Rpb24uQXNjLCBpZ25vcmVDYXNlOiBjb2x1bW4uc29ydGluZ0lnbm9yZUNhc2UgfV0pO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbkZpZWxkID0gY29sdW1uLmZpZWxkO1xuICAgICAgICBsZXQgZmlsdGVySXRlbXM6IElneEZpbHRlckl0ZW1bXSA9IGRhdGEubWFwKHJlY29yZCA9PiB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSByZXNvbHZlTmVzdGVkUGF0aChyZWNvcmQsIGNvbHVtbkZpZWxkKTtcbiAgICAgICAgICAgIGNvbnN0IGFwcGx5Rm9ybWF0dGVyID0gY29sdW1uLmZvcm1hdHRlciAmJiB0aGlzLnNob3VsZEZvcm1hdEZpbHRlclZhbHVlcyhjb2x1bW4pO1xuXG4gICAgICAgICAgICB2YWx1ZSA9IGFwcGx5Rm9ybWF0dGVyID9cbiAgICAgICAgICAgICAgICBjb2x1bW4uZm9ybWF0dGVyKHZhbHVlLCByZWNvcmQpIDpcbiAgICAgICAgICAgICAgICB2YWx1ZTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5nZXRGaWx0ZXJJdGVtTGFiZWwoY29sdW1uLCB2YWx1ZSwgIWFwcGx5Rm9ybWF0dGVyLCByZWNvcmQpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgZmlsdGVySXRlbXMgPSB0aGlzLmdldFVuaXF1ZUZpbHRlckl0ZW1zKGNvbHVtbiwgZmlsdGVySXRlbXMpO1xuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmlsdGVySXRlbXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGaWx0ZXJJdGVtTGFiZWwoY29sdW1uOiBDb2x1bW5UeXBlLCB2YWx1ZTogYW55LCBhcHBseUZvcm1hdHRlcjogYm9vbGVhbiwgZGF0YTogYW55KSB7XG4gICAgICAgIGlmIChjb2x1bW4uZm9ybWF0dGVyKSB7XG4gICAgICAgICAgICBpZiAoYXBwbHlGb3JtYXR0ZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29sdW1uLmZvcm1hdHRlcih2YWx1ZSwgZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGRpc3BsYXksIGZvcm1hdCwgZGlnaXRzSW5mbywgY3VycmVuY3lDb2RlLCB0aW1lem9uZSB9ID0gY29sdW1uLnBpcGVBcmdzO1xuICAgICAgICBjb25zdCBsb2NhbGUgPSBjb2x1bW4uZ3JpZC5sb2NhbGU7XG5cbiAgICAgICAgc3dpdGNoIChjb2x1bW4uZGF0YVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLkRhdGU6XG4gICAgICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5EYXRlVGltZTpcbiAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLlRpbWU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdERhdGUodmFsdWUsIGZvcm1hdCwgbG9jYWxlLCB0aW1lem9uZSk7XG4gICAgICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5DdXJyZW5jeTpcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0Q3VycmVuY3kodmFsdWUsIGN1cnJlbmN5Q29kZSB8fCBnZXRMb2NhbGVDdXJyZW5jeUNvZGUobG9jYWxlKSwgZGlzcGxheSwgZGlnaXRzSW5mbywgbG9jYWxlKTtcbiAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLk51bWJlcjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVyKHZhbHVlLCBsb2NhbGUsIGRpZ2l0c0luZm8pO1xuICAgICAgICAgICAgY2FzZSBHcmlkQ29sdW1uRGF0YVR5cGUuUGVyY2VudDpcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0UGVyY2VudCh2YWx1ZSwgbG9jYWxlLCBkaWdpdHNJbmZvKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFVuaXF1ZUZpbHRlckl0ZW1zKGNvbHVtbjogQ29sdW1uVHlwZSwgZmlsdGVySXRlbXM6IElneEZpbHRlckl0ZW1bXSkge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZFVuaXF1ZVZhbHVlcyA9IGZpbHRlckl0ZW1zLnJlZHVjZSgobWFwLCBpdGVtKSA9PiB7XG4gICAgICAgICAgICBsZXQga2V5ID0gaXRlbS52YWx1ZTtcblxuICAgICAgICAgICAgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PT0gR3JpZENvbHVtbkRhdGFUeXBlLlN0cmluZyAmJiBjb2x1bW4uZmlsdGVyaW5nSWdub3JlQ2FzZSkge1xuICAgICAgICAgICAgICAgIGtleSA9IGtleT8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4uZGF0YVR5cGUgPT09IEdyaWRDb2x1bW5EYXRhVHlwZS5EYXRlVGltZSkge1xuICAgICAgICAgICAgICAgIGtleSA9IGl0ZW0udmFsdWU/LnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgaXRlbS52YWx1ZSA9IGtleSA/IG5ldyBEYXRlKGtleSkgOiBrZXk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PT0gR3JpZENvbHVtbkRhdGFUeXBlLlRpbWUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlID0ga2V5ID8gbmV3IERhdGUoa2V5KSA6IGtleTtcbiAgICAgICAgICAgICAgICBrZXkgPSBkYXRlID8gbmV3IERhdGUoKS5zZXRIb3VycyhkYXRlLmdldEhvdXJzKCksIGRhdGUuZ2V0TWludXRlcygpLCBkYXRlLmdldFNlY29uZHMoKSkgOiBrZXk7XG4gICAgICAgICAgICAgICAgaXRlbS52YWx1ZSA9IGtleSA/IG5ldyBEYXRlKGtleSkgOiBrZXk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PT0gR3JpZENvbHVtbkRhdGFUeXBlLkRhdGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlID0ga2V5ID8gbmV3IERhdGUoa2V5KSA6IGtleTtcbiAgICAgICAgICAgICAgICBrZXkgPSBkYXRlID8gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKS50b0lTT1N0cmluZygpIDoga2V5O1xuICAgICAgICAgICAgICAgIGl0ZW0udmFsdWUgPSBkYXRlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbWFwLmhhcyhrZXkpID8gbWFwIDogbWFwLnNldChrZXksIGl0ZW0pXG4gICAgICAgIH0sIG5ldyBNYXAoKSk7XG4gICAgICAgIGNvbnN0IHVuaXF1ZVZhbHVlcyA9IEFycmF5LmZyb20oZmlsdGVyZWRVbmlxdWVWYWx1ZXMudmFsdWVzKCkpO1xuXG4gICAgICAgIHJldHVybiB1bmlxdWVWYWx1ZXM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNob3VsZEZvcm1hdEZpbHRlclZhbHVlcyhfY29sdW1uOiBDb2x1bW5UeXBlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgZmlsdGVyKGRhdGE6IGFueVtdLCBleHByZXNzaW9uc1RyZWU6IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUsXG4gICAgICAgIGFkdmFuY2VkRXhwcmVzc2lvbnNUcmVlPzogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSwgZ3JpZD86IEdyaWRUeXBlKTogYW55W107XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0RmllbGRWYWx1ZShyZWM6IGFueSwgZmllbGROYW1lOiBzdHJpbmcsIGlzRGF0ZT86IGJvb2xlYW4sIGlzVGltZT86IGJvb2xlYW4sIGdyaWQ/OiBHcmlkVHlwZSk6IGFueTtcbn1cblxuLyogY3NTdXBwcmVzcyAqL1xuZXhwb3J0IGNsYXNzIE5vb3BGaWx0ZXJpbmdTdHJhdGVneSBleHRlbmRzIEJhc2VGaWx0ZXJpbmdTdHJhdGVneSB7XG4gICAgcHJvdGVjdGVkIGdldEZpZWxkVmFsdWUocmVjOiBhbnksIF9maWVsZE5hbWU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gcmVjO1xuICAgIH1cbiAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IE5vb3BGaWx0ZXJpbmdTdHJhdGVneSA9IG51bGw7XG5cbiAgICBwdWJsaWMgc3RhdGljIGluc3RhbmNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2UgfHwgKHRoaXMuX2luc3RhbmNlID0gbmV3IE5vb3BGaWx0ZXJpbmdTdHJhdGVneSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmlsdGVyKGRhdGE6IGFueVtdLCBfOiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLCBfXz86IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgRmlsdGVyaW5nU3RyYXRlZ3kgZXh0ZW5kcyBCYXNlRmlsdGVyaW5nU3RyYXRlZ3kge1xuICAgIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogRmlsdGVyaW5nU3RyYXRlZ3kgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpbnN0YW5jZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlIHx8ICh0aGlzLl9pbnN0YW5jZSA9IG5ldyB0aGlzKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaWx0ZXI8VD4oZGF0YTogVFtdLCBleHByZXNzaW9uc1RyZWU6IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUsIGFkdmFuY2VkRXhwcmVzc2lvbnNUcmVlOiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLFxuICAgICAgICBncmlkOiBHcmlkVHlwZSk6IFRbXSB7XG4gICAgICAgIGxldCBpO1xuICAgICAgICBsZXQgcmVjO1xuICAgICAgICBjb25zdCBsZW4gPSBkYXRhLmxlbmd0aDtcbiAgICAgICAgY29uc3QgcmVzOiBUW10gPSBbXTtcblxuICAgICAgICBpZiAoKEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZS5lbXB0eShleHByZXNzaW9uc1RyZWUpICYmIEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZS5lbXB0eShhZHZhbmNlZEV4cHJlc3Npb25zVHJlZSkpIHx8ICFsZW4pIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgcmVjID0gZGF0YVtpXTtcbiAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoUmVjb3JkKHJlYywgZXhwcmVzc2lvbnNUcmVlLCBncmlkKSAmJiB0aGlzLm1hdGNoUmVjb3JkKHJlYywgYWR2YW5jZWRFeHByZXNzaW9uc1RyZWUsIGdyaWQpKSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2gocmVjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGaWVsZFZhbHVlKHJlYzogYW55LCBmaWVsZE5hbWU6IHN0cmluZywgaXNEYXRlID0gZmFsc2UsIGlzVGltZSA9IGZhbHNlLCBncmlkPzogR3JpZFR5cGUpOiBhbnkge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBncmlkPy5nZXRDb2x1bW5CeU5hbWUoZmllbGROYW1lKTtcbiAgICAgICAgbGV0IHZhbHVlID0gcmVzb2x2ZU5lc3RlZFBhdGgocmVjLCBmaWVsZE5hbWUpO1xuXG4gICAgICAgIHZhbHVlID0gY29sdW1uPy5mb3JtYXR0ZXIgJiYgdGhpcy5zaG91bGRGb3JtYXRGaWx0ZXJWYWx1ZXMoY29sdW1uKSA/XG4gICAgICAgICAgICBjb2x1bW4uZm9ybWF0dGVyKHZhbHVlLCByZWMpIDpcbiAgICAgICAgICAgIHZhbHVlICYmIChpc0RhdGUgfHwgaXNUaW1lKSA/IHBhcnNlRGF0ZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEZvcm1hdHRlZFZhbHVlc0ZpbHRlcmluZ1N0cmF0ZWd5IGV4dGVuZHMgRmlsdGVyaW5nU3RyYXRlZ3kge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgRm9ybWF0dGVkVmFsdWVzRmlsdGVyaW5nU3RyYXRlZ3kuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmllbGRzIEFuIGFycmF5IG9mIGNvbHVtbiBmaWVsZCBuYW1lcyB0aGF0IHNob3VsZCBiZSBmb3JtYXR0ZWQuXG4gICAgICogSWYgb21pdHRlZCB0aGUgdmFsdWVzIG9mIGFsbCBjb2x1bW5zIHdoaWNoIGhhcyBmb3JtYXR0ZXIgd2lsbCBiZSBmb3JtYXR0ZWQuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmaWVsZHM/OiBzdHJpbmdbXSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzaG91bGRGb3JtYXRGaWx0ZXJWYWx1ZXMoY29sdW1uOiBDb2x1bW5UeXBlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5maWVsZHMgfHwgdGhpcy5maWVsZHMubGVuZ3RoID09PSAwIHx8IHRoaXMuZmllbGRzLnNvbWUoZiA9PiBmID09PSBjb2x1bW4uZmllbGQpO1xuICAgIH1cbn1cbiJdfQ==
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyaW5nLXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBd0IsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsd0JBQXdCLEVBQTZCLE1BQU0sOEJBQThCLENBQUM7QUFDbkcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3JGLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQztBQUN4QixNQUFNLFlBQVksR0FBRyxVQUFVLENBQUM7QUFDaEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDO0FBRXhCLE1BQU0sT0FBTyxVQUFVO0lBQ1osTUFBTSxDQUFDLE1BQU0sQ0FBSSxJQUFTLEVBQUUsS0FBc0IsRUFBRSxJQUFlO1FBQ3RFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDN0MsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25HLENBQUM7Q0FDSjtBQWdCRCxnQkFBZ0I7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QUFHLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUU5QyxLQUFLLEdBQUcsTUFBTSxFQUFFLFNBQVMsSUFBSSxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNoRSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzlCLEtBQUssSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFFM0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQzs7QUFFTCxNQUFNLE9BQU8sZ0NBQWlDLFNBQVEsaUJBQWlCO0lBQ25FOzs7OztPQUtHO0lBQ0gsWUFBb0IsTUFBaUI7UUFDakMsS0FBSyxFQUFFLENBQUM7UUFEUSxXQUFNLEdBQU4sTUFBTSxDQUFXO0lBRXJDLENBQUM7SUFFa0Isd0JBQXdCLENBQUMsTUFBa0I7UUFDMUQsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWx0ZXJpbmdMb2dpYywgSUZpbHRlcmluZ0V4cHJlc3Npb24gfSBmcm9tICcuL2ZpbHRlcmluZy1leHByZXNzaW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUsIElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgfSBmcm9tICcuL2ZpbHRlcmluZy1leHByZXNzaW9ucy10cmVlJztcbmltcG9ydCB7IHJlc29sdmVOZXN0ZWRQYXRoLCBwYXJzZURhdGUsIGZvcm1hdERhdGUsIGZvcm1hdEN1cnJlbmN5IH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBDb2x1bW5UeXBlLCBHcmlkVHlwZSB9IGZyb20gJy4uL2dyaWRzL2NvbW1vbi9ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBHcmlkQ29sdW1uRGF0YVR5cGUgfSBmcm9tICcuL2RhdGEtdXRpbCc7XG5pbXBvcnQgeyBTb3J0aW5nRGlyZWN0aW9uIH0gZnJvbSAnLi9zb3J0aW5nLXN0cmF0ZWd5JztcbmltcG9ydCB7IGZvcm1hdE51bWJlciwgZm9ybWF0UGVyY2VudCwgZ2V0TG9jYWxlQ3VycmVuY3lDb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElGaWx0ZXJpbmdTdGF0ZSB9IGZyb20gJy4vZmlsdGVyaW5nLXN0YXRlLmludGVyZmFjZSc7XG5cbmNvbnN0IERhdGVUeXBlID0gJ2RhdGUnO1xuY29uc3QgRGF0ZVRpbWVUeXBlID0gJ2RhdGVUaW1lJztcbmNvbnN0IFRpbWVUeXBlID0gJ3RpbWUnO1xuXG5leHBvcnQgY2xhc3MgRmlsdGVyVXRpbCB7XG4gICAgcHVibGljIHN0YXRpYyBmaWx0ZXI8VD4oZGF0YTogVFtdLCBzdGF0ZTogSUZpbHRlcmluZ1N0YXRlLCBncmlkPzogR3JpZFR5cGUpOiBUW10ge1xuICAgICAgICBpZiAoIXN0YXRlLnN0cmF0ZWd5KSB7XG4gICAgICAgICAgICBzdGF0ZS5zdHJhdGVneSA9IG5ldyBGaWx0ZXJpbmdTdHJhdGVneSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGF0ZS5zdHJhdGVneS5maWx0ZXIoZGF0YSwgc3RhdGUuZXhwcmVzc2lvbnNUcmVlLCBzdGF0ZS5hZHZhbmNlZEV4cHJlc3Npb25zVHJlZSwgZ3JpZCk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGaWx0ZXJpbmdTdHJhdGVneSB7XG4gICAgZmlsdGVyKGRhdGE6IGFueVtdLCBleHByZXNzaW9uc1RyZWU6IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUsIGFkdmFuY2VkRXhwcmVzc2lvbnNUcmVlPzogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSxcbiAgICAgICAgZ3JpZD86IEdyaWRUeXBlKTogYW55W107XG4gICAgLyogY3NTdXBwcmVzcyAqL1xuICAgIGdldEZpbHRlckl0ZW1zKGNvbHVtbjogQ29sdW1uVHlwZSwgdHJlZTogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSkgOiBQcm9taXNlPElneEZpbHRlckl0ZW1bXT47XG59XG5cbi8qIGNzU3VwcHJlc3MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWd4RmlsdGVySXRlbSB7XG4gICAgdmFsdWU6IGFueTtcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBjaGlsZHJlbj86IElneEZpbHRlckl0ZW1bXTtcbn1cblxuLyogY3NTdXBwcmVzcyAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VGaWx0ZXJpbmdTdHJhdGVneSBpbXBsZW1lbnRzIElGaWx0ZXJpbmdTdHJhdGVneSAge1xuICAgIC8vIHByb3RlY3RlZFxuICAgIHB1YmxpYyBmaW5kTWF0Y2hCeUV4cHJlc3Npb24ocmVjOiBhbnksIGV4cHI6IElGaWx0ZXJpbmdFeHByZXNzaW9uLCBpc0RhdGU/OiBib29sZWFuLCBpc1RpbWU/OiBib29sZWFuLCBncmlkPzogR3JpZFR5cGUpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY29uZCA9IGV4cHIuY29uZGl0aW9uO1xuICAgICAgICBjb25zdCB2YWwgPSB0aGlzLmdldEZpZWxkVmFsdWUocmVjLCBleHByLmZpZWxkTmFtZSwgaXNEYXRlLCBpc1RpbWUsIGdyaWQpO1xuICAgICAgICByZXR1cm4gY29uZC5sb2dpYyh2YWwsIGV4cHIuc2VhcmNoVmFsLCBleHByLmlnbm9yZUNhc2UpO1xuICAgIH1cblxuICAgIC8vIHByb3RlY3RlZFxuICAgIHB1YmxpYyBtYXRjaFJlY29yZChyZWM6IGFueSwgZXhwcmVzc2lvbnM6IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgfCBJRmlsdGVyaW5nRXhwcmVzc2lvbiwgZ3JpZD86IEdyaWRUeXBlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChleHByZXNzaW9ucykge1xuICAgICAgICAgICAgaWYgKGV4cHJlc3Npb25zIGluc3RhbmNlb2YgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbnNUcmVlID0gZXhwcmVzc2lvbnMgYXMgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTtcbiAgICAgICAgICAgICAgICBjb25zdCBvcGVyYXRvciA9IGV4cHJlc3Npb25zVHJlZS5vcGVyYXRvciBhcyBGaWx0ZXJpbmdMb2dpYztcbiAgICAgICAgICAgICAgICBsZXQgbWF0Y2hPcGVyYW5kO1xuXG4gICAgICAgICAgICAgICAgaWYgKGV4cHJlc3Npb25zVHJlZS5maWx0ZXJpbmdPcGVyYW5kcyAmJiBleHByZXNzaW9uc1RyZWUuZmlsdGVyaW5nT3BlcmFuZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgb3BlcmFuZCBvZiBleHByZXNzaW9uc1RyZWUuZmlsdGVyaW5nT3BlcmFuZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoT3BlcmFuZCA9IHRoaXMubWF0Y2hSZWNvcmQocmVjLCBvcGVyYW5kLCBncmlkKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV0dXJuIGZhbHNlIGlmIGF0IGxlYXN0IG9uZSBvcGVyYW5kIGRvZXMgbm90IG1hdGNoIGFuZCB0aGUgZmlsdGVyaW5nIGxvZ2ljIGlzIEFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaE9wZXJhbmQgJiYgb3BlcmF0b3IgPT09IEZpbHRlcmluZ0xvZ2ljLkFuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV0dXJuIHRydWUgaWYgYXQgbGVhc3Qgb25lIG9wZXJhbmQgbWF0Y2hlcyBhbmQgdGhlIGZpbHRlcmluZyBsb2dpYyBpcyBPclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoT3BlcmFuZCAmJiBvcGVyYXRvciA9PT0gRmlsdGVyaW5nTG9naWMuT3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaE9wZXJhbmQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSBleHByZXNzaW9ucyBhcyBJRmlsdGVyaW5nRXhwcmVzc2lvbjtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW4gPSBncmlkICYmIGdyaWQuZ2V0Q29sdW1uQnlOYW1lKGV4cHJlc3Npb24uZmllbGROYW1lKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0RhdGUgPSBjb2x1bW4gPyBjb2x1bW4uZGF0YVR5cGUgPT09IERhdGVUeXBlIHx8IGNvbHVtbi5kYXRhVHlwZSA9PT0gRGF0ZVRpbWVUeXBlIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNUaW1lID0gY29sdW1uID8gY29sdW1uLmRhdGFUeXBlID09PSBUaW1lVHlwZSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRNYXRjaEJ5RXhwcmVzc2lvbihyZWMsIGV4cHJlc3Npb24sIGlzRGF0ZSwgaXNUaW1lLCBncmlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaWx0ZXJJdGVtcyhjb2x1bW46IENvbHVtblR5cGUsIHRyZWU6IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpOiBQcm9taXNlPElneEZpbHRlckl0ZW1bXT4ge1xuXG4gICAgICAgIGxldCBkYXRhID0gY29sdW1uLmdyaWQuZ3JpZEFQSS5maWx0ZXJEYXRhQnlFeHByZXNzaW9ucyh0cmVlKTtcbiAgICAgICAgZGF0YSA9IGNvbHVtbi5ncmlkLmdyaWRBUEkuc29ydERhdGFCeUV4cHJlc3Npb25zKGRhdGEsXG4gICAgICAgICAgICBbeyBmaWVsZE5hbWU6IGNvbHVtbi5maWVsZCwgZGlyOiBTb3J0aW5nRGlyZWN0aW9uLkFzYywgaWdub3JlQ2FzZTogY29sdW1uLnNvcnRpbmdJZ25vcmVDYXNlIH1dKTtcblxuICAgICAgICBjb25zdCBjb2x1bW5GaWVsZCA9IGNvbHVtbi5maWVsZDtcbiAgICAgICAgbGV0IGZpbHRlckl0ZW1zOiBJZ3hGaWx0ZXJJdGVtW10gPSBkYXRhLm1hcChyZWNvcmQgPT4ge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gcmVzb2x2ZU5lc3RlZFBhdGgocmVjb3JkLCBjb2x1bW5GaWVsZCk7XG4gICAgICAgICAgICBjb25zdCBhcHBseUZvcm1hdHRlciA9IGNvbHVtbi5mb3JtYXR0ZXIgJiYgdGhpcy5zaG91bGRGb3JtYXRGaWx0ZXJWYWx1ZXMoY29sdW1uKTtcblxuICAgICAgICAgICAgdmFsdWUgPSBhcHBseUZvcm1hdHRlciA/XG4gICAgICAgICAgICAgICAgY29sdW1uLmZvcm1hdHRlcih2YWx1ZSwgcmVjb3JkKSA6XG4gICAgICAgICAgICAgICAgdmFsdWU7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZ2V0RmlsdGVySXRlbUxhYmVsKGNvbHVtbiwgdmFsdWUsICFhcHBseUZvcm1hdHRlciwgcmVjb3JkKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGZpbHRlckl0ZW1zID0gdGhpcy5nZXRVbmlxdWVGaWx0ZXJJdGVtcyhjb2x1bW4sIGZpbHRlckl0ZW1zKTtcblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZpbHRlckl0ZW1zKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RmlsdGVySXRlbUxhYmVsKGNvbHVtbjogQ29sdW1uVHlwZSwgdmFsdWU6IGFueSwgYXBwbHlGb3JtYXR0ZXI6IGJvb2xlYW4sIGRhdGE6IGFueSkge1xuICAgICAgICBpZiAoY29sdW1uLmZvcm1hdHRlcikge1xuICAgICAgICAgICAgaWYgKGFwcGx5Rm9ybWF0dGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbi5mb3JtYXR0ZXIodmFsdWUsIGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBkaXNwbGF5LCBmb3JtYXQsIGRpZ2l0c0luZm8sIGN1cnJlbmN5Q29kZSwgdGltZXpvbmUgfSA9IGNvbHVtbi5waXBlQXJncztcbiAgICAgICAgY29uc3QgbG9jYWxlID0gY29sdW1uLmdyaWQubG9jYWxlO1xuXG4gICAgICAgIHN3aXRjaCAoY29sdW1uLmRhdGFUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5EYXRlOlxuICAgICAgICAgICAgY2FzZSBHcmlkQ29sdW1uRGF0YVR5cGUuRGF0ZVRpbWU6XG4gICAgICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5UaW1lOlxuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXREYXRlKHZhbHVlLCBmb3JtYXQsIGxvY2FsZSwgdGltZXpvbmUpO1xuICAgICAgICAgICAgY2FzZSBHcmlkQ29sdW1uRGF0YVR5cGUuQ3VycmVuY3k6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEN1cnJlbmN5KHZhbHVlLCBjdXJyZW5jeUNvZGUgfHwgZ2V0TG9jYWxlQ3VycmVuY3lDb2RlKGxvY2FsZSksIGRpc3BsYXksIGRpZ2l0c0luZm8sIGxvY2FsZSk7XG4gICAgICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5OdW1iZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE51bWJlcih2YWx1ZSwgbG9jYWxlLCBkaWdpdHNJbmZvKTtcbiAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLlBlcmNlbnQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdFBlcmNlbnQodmFsdWUsIGxvY2FsZSwgZGlnaXRzSW5mbyk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRVbmlxdWVGaWx0ZXJJdGVtcyhjb2x1bW46IENvbHVtblR5cGUsIGZpbHRlckl0ZW1zOiBJZ3hGaWx0ZXJJdGVtW10pIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRVbmlxdWVWYWx1ZXMgPSBmaWx0ZXJJdGVtcy5yZWR1Y2UoKG1hcCwgaXRlbSkgPT4ge1xuICAgICAgICAgICAgbGV0IGtleSA9IGl0ZW0udmFsdWU7XG5cbiAgICAgICAgICAgIGlmIChjb2x1bW4uZGF0YVR5cGUgPT09IEdyaWRDb2x1bW5EYXRhVHlwZS5TdHJpbmcgJiYgY29sdW1uLmZpbHRlcmluZ0lnbm9yZUNhc2UpIHtcbiAgICAgICAgICAgICAgICBrZXkgPSBrZXk/LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLmRhdGFUeXBlID09PSBHcmlkQ29sdW1uRGF0YVR5cGUuRGF0ZVRpbWUpIHtcbiAgICAgICAgICAgICAgICBrZXkgPSBpdGVtLnZhbHVlPy50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgIGl0ZW0udmFsdWUgPSBrZXkgPyBuZXcgRGF0ZShrZXkpIDoga2V5O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4uZGF0YVR5cGUgPT09IEdyaWRDb2x1bW5EYXRhVHlwZS5UaW1lKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZSA9IGtleSA/IG5ldyBEYXRlKGtleSkgOiBrZXk7XG4gICAgICAgICAgICAgICAga2V5ID0gZGF0ZSA/IG5ldyBEYXRlKCkuc2V0SG91cnMoZGF0ZS5nZXRIb3VycygpLCBkYXRlLmdldE1pbnV0ZXMoKSwgZGF0ZS5nZXRTZWNvbmRzKCksIGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkpIDoga2V5O1xuICAgICAgICAgICAgICAgIGl0ZW0udmFsdWUgPSBrZXkgPyBuZXcgRGF0ZShrZXkpIDoga2V5O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4uZGF0YVR5cGUgPT09IEdyaWRDb2x1bW5EYXRhVHlwZS5EYXRlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZSA9IGtleSA/IG5ldyBEYXRlKGtleSkgOiBrZXk7XG4gICAgICAgICAgICAgICAga2V5ID0gZGF0ZSA/IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSkudG9JU09TdHJpbmcoKSA6IGtleTtcbiAgICAgICAgICAgICAgICBpdGVtLnZhbHVlID0gZGF0ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG1hcC5oYXMoa2V5KSA/IG1hcCA6IG1hcC5zZXQoa2V5LCBpdGVtKVxuICAgICAgICB9LCBuZXcgTWFwKCkpO1xuICAgICAgICBjb25zdCB1bmlxdWVWYWx1ZXMgPSBBcnJheS5mcm9tKGZpbHRlcmVkVW5pcXVlVmFsdWVzLnZhbHVlcygpKTtcblxuICAgICAgICByZXR1cm4gdW5pcXVlVmFsdWVzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzaG91bGRGb3JtYXRGaWx0ZXJWYWx1ZXMoX2NvbHVtbjogQ29sdW1uVHlwZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGFic3RyYWN0IGZpbHRlcihkYXRhOiBhbnlbXSwgZXhwcmVzc2lvbnNUcmVlOiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLFxuICAgICAgICBhZHZhbmNlZEV4cHJlc3Npb25zVHJlZT86IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUsIGdyaWQ/OiBHcmlkVHlwZSk6IGFueVtdO1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldEZpZWxkVmFsdWUocmVjOiBhbnksIGZpZWxkTmFtZTogc3RyaW5nLCBpc0RhdGU/OiBib29sZWFuLCBpc1RpbWU/OiBib29sZWFuLCBncmlkPzogR3JpZFR5cGUpOiBhbnk7XG59XG5cbi8qIGNzU3VwcHJlc3MgKi9cbmV4cG9ydCBjbGFzcyBOb29wRmlsdGVyaW5nU3RyYXRlZ3kgZXh0ZW5kcyBCYXNlRmlsdGVyaW5nU3RyYXRlZ3kge1xuICAgIHByb3RlY3RlZCBnZXRGaWVsZFZhbHVlKHJlYzogYW55LCBfZmllbGROYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHJlYztcbiAgICB9XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBOb29wRmlsdGVyaW5nU3RyYXRlZ3kgPSBudWxsO1xuXG4gICAgcHVibGljIHN0YXRpYyBpbnN0YW5jZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlIHx8ICh0aGlzLl9pbnN0YW5jZSA9IG5ldyBOb29wRmlsdGVyaW5nU3RyYXRlZ3koKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGZpbHRlcihkYXRhOiBhbnlbXSwgXzogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSwgX18/OiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKTogYW55W10ge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIEZpbHRlcmluZ1N0cmF0ZWd5IGV4dGVuZHMgQmFzZUZpbHRlcmluZ1N0cmF0ZWd5IHtcbiAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IEZpbHRlcmluZ1N0cmF0ZWd5ID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaW5zdGFuY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZSB8fCAodGhpcy5faW5zdGFuY2UgPSBuZXcgdGhpcygpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmlsdGVyPFQ+KGRhdGE6IFRbXSwgZXhwcmVzc2lvbnNUcmVlOiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLCBhZHZhbmNlZEV4cHJlc3Npb25zVHJlZTogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSxcbiAgICAgICAgZ3JpZDogR3JpZFR5cGUpOiBUW10ge1xuICAgICAgICBsZXQgaTtcbiAgICAgICAgbGV0IHJlYztcbiAgICAgICAgY29uc3QgbGVuID0gZGF0YS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHJlczogVFtdID0gW107XG5cbiAgICAgICAgaWYgKChGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUuZW1wdHkoZXhwcmVzc2lvbnNUcmVlKSAmJiBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUuZW1wdHkoYWR2YW5jZWRFeHByZXNzaW9uc1RyZWUpKSB8fCAhbGVuKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIHJlYyA9IGRhdGFbaV07XG4gICAgICAgICAgICBpZiAodGhpcy5tYXRjaFJlY29yZChyZWMsIGV4cHJlc3Npb25zVHJlZSwgZ3JpZCkgJiYgdGhpcy5tYXRjaFJlY29yZChyZWMsIGFkdmFuY2VkRXhwcmVzc2lvbnNUcmVlLCBncmlkKSkge1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoKHJlYyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RmllbGRWYWx1ZShyZWM6IGFueSwgZmllbGROYW1lOiBzdHJpbmcsIGlzRGF0ZSA9IGZhbHNlLCBpc1RpbWUgPSBmYWxzZSwgZ3JpZD86IEdyaWRUeXBlKTogYW55IHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gZ3JpZD8uZ2V0Q29sdW1uQnlOYW1lKGZpZWxkTmFtZSk7XG4gICAgICAgIGxldCB2YWx1ZSA9IHJlc29sdmVOZXN0ZWRQYXRoKHJlYywgZmllbGROYW1lKTtcblxuICAgICAgICB2YWx1ZSA9IGNvbHVtbj8uZm9ybWF0dGVyICYmIHRoaXMuc2hvdWxkRm9ybWF0RmlsdGVyVmFsdWVzKGNvbHVtbikgP1xuICAgICAgICAgICAgY29sdW1uLmZvcm1hdHRlcih2YWx1ZSwgcmVjKSA6XG4gICAgICAgICAgICB2YWx1ZSAmJiAoaXNEYXRlIHx8IGlzVGltZSkgPyBwYXJzZURhdGUodmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBGb3JtYXR0ZWRWYWx1ZXNGaWx0ZXJpbmdTdHJhdGVneSBleHRlbmRzIEZpbHRlcmluZ1N0cmF0ZWd5IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIEZvcm1hdHRlZFZhbHVlc0ZpbHRlcmluZ1N0cmF0ZWd5LlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpZWxkcyBBbiBhcnJheSBvZiBjb2x1bW4gZmllbGQgbmFtZXMgdGhhdCBzaG91bGQgYmUgZm9ybWF0dGVkLlxuICAgICAqIElmIG9taXR0ZWQgdGhlIHZhbHVlcyBvZiBhbGwgY29sdW1ucyB3aGljaCBoYXMgZm9ybWF0dGVyIHdpbGwgYmUgZm9ybWF0dGVkLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZmllbGRzPzogc3RyaW5nW10pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2hvdWxkRm9ybWF0RmlsdGVyVmFsdWVzKGNvbHVtbjogQ29sdW1uVHlwZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuZmllbGRzIHx8IHRoaXMuZmllbGRzLmxlbmd0aCA9PT0gMCB8fCB0aGlzLmZpZWxkcy5zb21lKGYgPT4gZiA9PT0gY29sdW1uLmZpZWxkKTtcbiAgICB9XG59XG4iXX0=
@@ -43,7 +43,10 @@ export class CharSeparatedValueData {
43
43
  this._isSpecialData = ExportUtilities.isSpecialData(this._data[0]);
44
44
  this._escapeCharacters.push(this._delimiter);
45
45
  const headers = columns && columns.length ?
46
- columns.map(c => c.header ?? c.field) :
46
+ /* When column groups are present, always use the field as it indicates the group the column belongs to.
47
+ * Otherwise, in PivotGrid scenarios we can end up with many duplicated column names without a hint what they represent.
48
+ */
49
+ columns.map(c => c.columnGroupParent ? c.field : c.header ?? c.field) :
47
50
  keys;
48
51
  this._headerRecord = this.processHeaderRecord(headers, this._data.length);
49
52
  if (keys.length === 0 || ((!this._data || this._data.length === 0) && keys.length === 0)) {
@@ -100,4 +103,4 @@ export class CharSeparatedValueData {
100
103
  this._delimiterLength = value.length;
101
104
  }
102
105
  }
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhci1zZXBhcmF0ZWQtdmFsdWUtZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9jc3YvY2hhci1zZXBhcmF0ZWQtdmFsdWUtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2hEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQVMvQixZQUFvQixLQUFZLEVBQUUsY0FBc0IsRUFBVSxVQUF5QixFQUFFO1FBQXpFLFVBQUssR0FBTCxLQUFLLENBQU87UUFBa0MsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFSckYsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsU0FBSSxHQUFHLE1BQU0sQ0FBQztRQUVkLHNCQUFpQixHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN6QyxxQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDckIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFHM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sV0FBVyxDQUFDLEdBQVc7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekMsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxHQUFHLEVBQUMsQ0FBQztZQUNMLElBQUksR0FBRyxHQUFHLENBQUM7UUFDZixDQUFDO2FBQUssQ0FBQztZQUNILElBQUks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WSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUNqQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ0YsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuRCxDQUFDLEVBQ0QsR0FBRyxFQUFFO1lBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBSztRQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUN6QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFeHBvcnRVdGlsaXRpZXMgfSBmcm9tICcuLi9leHBvcnRlci1jb21tb24vZXhwb3J0LXV0aWxpdGllcyc7XG5pbXBvcnQgeyB5aWVsZGluZ0xvb3AgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IElDb2x1bW5JbmZvIH0gZnJvbSAnLi4vZXhwb3J0ZXItY29tbW9uL2Jhc2UtZXhwb3J0LXNlcnZpY2UnO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNsYXNzIENoYXJTZXBhcmF0ZWRWYWx1ZURhdGEge1xuICAgIHByaXZhdGUgX2hlYWRlclJlY29yZCA9ICcnO1xuICAgIHByaXZhdGUgX2RhdGFSZWNvcmRzID0gJyc7XG4gICAgcHJpdmF0ZSBfZW9yID0gJ1xcclxcbic7XG4gICAgcHJpdmF0ZSBfZGVsaW1pdGVyO1xuICAgIHByaXZhdGUgX2VzY2FwZUNoYXJhY3RlcnMgPSBbJ1xccicsICdcXG4nLCAnXFxyXFxuJ107XG4gICAgcHJpdmF0ZSBfZGVsaW1pdGVyTGVuZ3RoID0gMTtcbiAgICBwcml2YXRlIF9pc1NwZWNpYWxEYXRhID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kYXRhOiBhbnlbXSwgdmFsdWVEZWxpbWl0ZXI6IHN0cmluZywgcHJpdmF0ZSBjb2x1bW5zOiBJQ29sdW1uSW5mb1tdID0gW10pICB7XG4gICAgICAgIHRoaXMuc2V0RGVsaW1pdGVyKHZhbHVlRGVsaW1pdGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcHJlcGFyZURhdGEoa2V5PzogYW55W10pIHtcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhIHx8IHRoaXMuX2RhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGtleXMgPSBbXTtcbiAgICAgICAgaWYgKGtleSl7XG4gICAgICAgICAgICBrZXlzID0ga2V5O1xuICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICBrZXlzID0gRXhwb3J0VXRpbGl0aWVzLmdldEtleXNGcm9tRGF0YSh0aGlzLl9kYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faXNTcGVjaWFsRGF0YSA9IEV4cG9ydFV0aWxpdGllcy5pc1NwZWNpYWxEYXRhKHRoaXMuX2RhdGFbMF0pO1xuICAgICAgICB0aGlzLl9lc2NhcGVDaGFyYWN0ZXJzLnB1c2godGhpcy5fZGVsaW1pdGVyKTtcblxuICAgICAgICB0aGlzLl9oZWFkZXJSZWNvcmQgPSB0aGlzLnByb2Nlc3NIZWFkZXJSZWNvcmQoa2V5cywgdGhpcy5fZGF0YS5sZW5ndGgpO1xuICAgICAgICB0aGlzLl9kYXRhUmVjb3JkcyA9IHRoaXMucHJvY2Vzc0RhdGFSZWNvcmRzKHRoaXMuX2RhdGEsIGtleXMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJSZWNvcmQgKyB0aGlzLl9kYXRhUmVjb3JkcztcbiAgICB9XG5cbiAgICBwdWJsaWMgcHJlcGFyZURhdGFBc3luYyhkb25lOiAocmVzdWx0OiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuY29sdW1ucz8uZmlsdGVyKGMgPT4gIWMuc2tpcClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLnN0YXJ0SW5kZXggLSBiLnN0YXJ0SW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5waW5uZWRJbmRleCAtIGIucGlubmVkSW5kZXgpO1xuICAgICAgICBjb25zdCBrZXlzID0gY29sdW1ucyAmJiBjb2x1bW5zLmxlbmd0aCA/IGNvbHVtbnMubWFwKGMgPT4gYy5maWVsZCkgOiBFeHBvcnRVdGlsaXRpZXMuZ2V0S2V5c0Zyb21EYXRhKHRoaXMuX2RhdGEpO1xuXG4gICAgICAgIHRoaXMuX2lzU3BlY2lhbERhdGEgPSBFeHBvcnRVdGlsaXRpZXMuaXNTcGVjaWFsRGF0YSh0aGlzLl9kYXRhWzBdKTtcbiAgICAgICAgdGhpcy5fZXNjYXBlQ2hhcmFjdGVycy5wdXNoKHRoaXMuX2RlbGltaXRlcik7XG5cbiAgICAgICAgY29uc3QgaGVhZGVycyA9IGNvbHVtbnMgJiYgY29sdW1ucy5sZW5ndGggP1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucy5tYXAoYyA9PiBjLmhlYWRlciA/PyBjLmZpZWxkKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlzO1xuXG4gICAgICAgIHRoaXMuX2hlYWRlclJlY29yZCA9IHRoaXMucHJvY2Vzc0hlYWRlclJlY29yZChoZWFkZXJzLCB0aGlzLl9kYXRhLmxlbmd0aCk7XG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCB8fCAoKCF0aGlzLl9kYXRhIHx8IHRoaXMuX2RhdGEubGVuZ3RoID09PSAwKSAmJiBrZXlzLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgICAgICAgIGRvbmUoJycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzRGF0YVJlY29yZHNBc3luYyh0aGlzLl9kYXRhLCBrZXlzLCAoZHIpID0+IHtcbiAgICAgICAgICAgICAgICBkb25lKHRoaXMuX2hlYWRlclJlY29yZCArIGRyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzRmllbGQodmFsdWUsIGVzY2FwZUNoYXJzKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHNhZmVWYWx1ZSA9IEV4cG9ydFV0aWxpdGllcy5oYXNWYWx1ZSh2YWx1ZSkgPyBTdHJpbmcodmFsdWUpIDogJyc7XG4gICAgICAgIGlmIChlc2NhcGVDaGFycy5zb21lKCh2KSA9PiBzYWZlVmFsdWUuaW5jbHVkZXModikpKSB7XG4gICAgICAgICAgICBzYWZlVmFsdWUgPSBgXCIke3NhZmVWYWx1ZX1cImA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNhZmVWYWx1ZSArIHRoaXMuX2RlbGltaXRlcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NIZWFkZXJSZWNvcmQoa2V5cywgZGF0YUxlbmd0aCk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZWNvcmREYXRhID0gJyc7XG4gICAgICAgIGZvciAoY29uc3Qga2V5TmFtZSBvZiBrZXlzKSB7XG4gICAgICAgICAgICByZWNvcmREYXRhICs9IHRoaXMucHJvY2Vzc0ZpZWxkKGtleU5hbWUsIHRoaXMuX2VzY2FwZUNoYXJhY3RlcnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVjb3JkRGF0YS5zbGljZSgwLCAtdGhpcy5fZGVsaW1pdGVyTGVuZ3RoKTtcblxuICAgICAgICByZXR1cm4gZGF0YUxlbmd0aCA+IDAgPyByZXN1bHQgKyB0aGlzLl9lb3IgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzUmVjb3JkKHJlY29yZCwga2V5cyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHJlY29yZERhdGEgPSBuZXcgQXJyYXkoa2V5cy5sZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwga2V5cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gKHJlY29yZFtrZXlzW2luZGV4XV0gIT09IHVuZGVmaW5lZCkgPyByZWNvcmRba2V5c1tpbmRleF1dIDogdGhpcy5faXNTcGVjaWFsRGF0YSA/IHJlY29yZCA6ICcnO1xuICAgICAgICAgICAgcmVjb3JkRGF0YVtpbmRleF0gPSB0aGlzLnByb2Nlc3NGaWVsZCh2YWx1ZSwgdGhpcy5fZXNjYXBlQ2hhcmFjdGVycyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVjb3JkRGF0YS5qb2luKCcnKS5zbGljZSgwLCAtdGhpcy5fZGVsaW1pdGVyTGVuZ3RoKSArIHRoaXMuX2VvcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NEYXRhUmVjb3JkcyhjdXJyZW50RGF0YSwga2V5cykge1xuICAgICAgICBjb25zdCBkYXRhUmVjb3JkcyA9IG5ldyBBcnJheShjdXJyZW50RGF0YS5sZW5ndGgpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY3VycmVudERhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IGN1cnJlbnREYXRhW2ldO1xuICAgICAgICAgICAgZGF0YVJlY29yZHNbaV0gPSB0aGlzLnByb2Nlc3NSZWNvcmQocm93LCBrZXlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXRhUmVjb3Jkcy5qb2luKCcnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NEYXRhUmVjb3Jkc0FzeW5jKGN1cnJlbnREYXRhLCBrZXlzLCBkb25lOiAocmVzdWx0OiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICAgICAgY29uc3QgZGF0YVJlY29yZHMgPSBuZXcgQXJyYXkoY3VycmVudERhdGEubGVuZ3RoKTtcblxuICAgICAgICB5aWVsZGluZ0xvb3AoY3VycmVudERhdGEubGVuZ3RoLCAxMDAwLFxuICAgICAgICAgICAgKGkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3cgPSBjdXJyZW50RGF0YVtpXTtcbiAgICAgICAgICAgICAgICBkYXRhUmVjb3Jkc1tpXSA9IHRoaXMucHJvY2Vzc1JlY29yZChyb3csIGtleXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICBkb25lKGRhdGFSZWNvcmRzLmpvaW4oJycpKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGVsaW1pdGVyKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2RlbGltaXRlciA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9kZWxpbWl0ZXJMZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG4gICAgfVxufVxuIl19
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhci1zZXBhcmF0ZWQtdmFsdWUtZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9jc3YvY2hhci1zZXBhcmF0ZWQtdmFsdWUtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2hEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQVMvQixZQUFvQixLQUFZLEVBQUUsY0FBc0IsRUFBVSxVQUF5QixFQUFFO1FBQXpFLFVBQUssR0FBTCxLQUFLLENBQU87UUFBa0MsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFSckYsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsU0FBSSxHQUFHLE1BQU0sQ0FBQztRQUVkLHNCQUFpQixHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN6QyxxQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDckIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFHM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sV0FBVyxDQUFDLEdBQVc7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekMsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxHQUFHLEVBQUMsQ0FBQztZQUNMLElBQUksR0FBRyxHQUFHLENBQUM7UUFDZixDQUFDO2FBQUssQ0FBQztZQUNILElBQUks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OEI7UUFDN0UsTUFBTSxXQUFXLEdBQUcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWxELFlBQVksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksRUFDakMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNGLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQixXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbkQsQ0FBQyxFQUNELEdBQUcsRUFBRTtZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQUs7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDekMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXhwb3J0VXRpbGl0aWVzIH0gZnJvbSAnLi4vZXhwb3J0ZXItY29tbW9uL2V4cG9ydC11dGlsaXRpZXMnO1xuaW1wb3J0IHsgeWllbGRpbmdMb29wIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBJQ29sdW1uSW5mbyB9IGZyb20gJy4uL2V4cG9ydGVyLWNvbW1vbi9iYXNlLWV4cG9ydC1zZXJ2aWNlJztcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjbGFzcyBDaGFyU2VwYXJhdGVkVmFsdWVEYXRhIHtcbiAgICBwcml2YXRlIF9oZWFkZXJSZWNvcmQgPSAnJztcbiAgICBwcml2YXRlIF9kYXRhUmVjb3JkcyA9ICcnO1xuICAgIHByaXZhdGUgX2VvciA9ICdcXHJcXG4nO1xuICAgIHByaXZhdGUgX2RlbGltaXRlcjtcbiAgICBwcml2YXRlIF9lc2NhcGVDaGFyYWN0ZXJzID0gWydcXHInLCAnXFxuJywgJ1xcclxcbiddO1xuICAgIHByaXZhdGUgX2RlbGltaXRlckxlbmd0aCA9IDE7XG4gICAgcHJpdmF0ZSBfaXNTcGVjaWFsRGF0YSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGF0YTogYW55W10sIHZhbHVlRGVsaW1pdGVyOiBzdHJpbmcsIHByaXZhdGUgY29sdW1uczogSUNvbHVtbkluZm9bXSA9IFtdKSAge1xuICAgICAgICB0aGlzLnNldERlbGltaXRlcih2YWx1ZURlbGltaXRlcik7XG4gICAgfVxuXG4gICAgcHVibGljIHByZXBhcmVEYXRhKGtleT86IGFueVtdKSB7XG4gICAgICAgIGlmICghdGhpcy5fZGF0YSB8fCB0aGlzLl9kYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGxldCBrZXlzID0gW107XG4gICAgICAgIGlmIChrZXkpe1xuICAgICAgICAgICAga2V5cyA9IGtleTtcbiAgICAgICAgfWVsc2Uge1xuICAgICAgICAgICAga2V5cyA9IEV4cG9ydFV0aWxpdGllcy5nZXRLZXlzRnJvbURhdGEodGhpcy5fZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2lzU3BlY2lhbERhdGEgPSBFeHBvcnRVdGlsaXRpZXMuaXNTcGVjaWFsRGF0YSh0aGlzLl9kYXRhWzBdKTtcbiAgICAgICAgdGhpcy5fZXNjYXBlQ2hhcmFjdGVycy5wdXNoKHRoaXMuX2RlbGltaXRlcik7XG5cbiAgICAgICAgdGhpcy5faGVhZGVyUmVjb3JkID0gdGhpcy5wcm9jZXNzSGVhZGVyUmVjb3JkKGtleXMsIHRoaXMuX2RhdGEubGVuZ3RoKTtcbiAgICAgICAgdGhpcy5fZGF0YVJlY29yZHMgPSB0aGlzLnByb2Nlc3NEYXRhUmVjb3Jkcyh0aGlzLl9kYXRhLCBrZXlzKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5faGVhZGVyUmVjb3JkICsgdGhpcy5fZGF0YVJlY29yZHM7XG4gICAgfVxuXG4gICAgcHVibGljIHByZXBhcmVEYXRhQXN5bmMoZG9uZTogKHJlc3VsdDogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmNvbHVtbnM/LmZpbHRlcihjID0+ICFjLnNraXApXG4gICAgICAgICAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5zdGFydEluZGV4IC0gYi5zdGFydEluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEucGlubmVkSW5kZXggLSBiLnBpbm5lZEluZGV4KTtcbiAgICAgICAgY29uc3Qga2V5cyA9IGNvbHVtbnMgJiYgY29sdW1ucy5sZW5ndGggPyBjb2x1bW5zLm1hcChjID0+IGMuZmllbGQpIDogRXhwb3J0VXRpbGl0aWVzLmdldEtleXNGcm9tRGF0YSh0aGlzLl9kYXRhKTtcblxuICAgICAgICB0aGlzLl9pc1NwZWNpYWxEYXRhID0gRXhwb3J0VXRpbGl0aWVzLmlzU3BlY2lhbERhdGEodGhpcy5fZGF0YVswXSk7XG4gICAgICAgIHRoaXMuX2VzY2FwZUNoYXJhY3RlcnMucHVzaCh0aGlzLl9kZWxpbWl0ZXIpO1xuXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBjb2x1bW5zICYmIGNvbHVtbnMubGVuZ3RoID9cbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIFdoZW4gY29sdW1uIGdyb3VwcyBhcmUgcHJlc2VudCwgYWx3YXlzIHVzZSB0aGUgZmllbGQgYXMgaXQgaW5kaWNhdGVzIHRoZSBncm91cCB0aGUgY29sdW1uIGJlbG9uZ3MgdG8uXG4gICAgICAgICAgICAgICAgICAgICAgICAqIE90aGVyd2lzZSwgaW4gUGl2b3RHcmlkIHNjZW5hcmlvcyB3ZSBjYW4gZW5kIHVwIHdpdGggbWFueSBkdXBsaWNhdGVkIGNvbHVtbiBuYW1lcyB3aXRob3V0IGEgaGludCB3aGF0IHRoZXkgcmVwcmVzZW50LlxuICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMubWFwKGMgPT4gYy5jb2x1bW5Hcm91cFBhcmVudCA/IGMuZmllbGQgOiBjLmhlYWRlciA/PyBjLmZpZWxkKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlzO1xuXG4gICAgICAgIHRoaXMuX2hlYWRlclJlY29yZCA9IHRoaXMucHJvY2Vzc0hlYWRlclJlY29yZChoZWFkZXJzLCB0aGlzLl9kYXRhLmxlbmd0aCk7XG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCB8fCAoKCF0aGlzLl9kYXRhIHx8IHRoaXMuX2RhdGEubGVuZ3RoID09PSAwKSAmJiBrZXlzLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgICAgICAgIGRvbmUoJycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzRGF0YVJlY29yZHNBc3luYyh0aGlzLl9kYXRhLCBrZXlzLCAoZHIpID0+IHtcbiAgICAgICAgICAgICAgICBkb25lKHRoaXMuX2hlYWRlclJlY29yZCArIGRyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzRmllbGQodmFsdWUsIGVzY2FwZUNoYXJzKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHNhZmVWYWx1ZSA9IEV4cG9ydFV0aWxpdGllcy5oYXNWYWx1ZSh2YWx1ZSkgPyBTdHJpbmcodmFsdWUpIDogJyc7XG4gICAgICAgIGlmIChlc2NhcGVDaGFycy5zb21lKCh2KSA9PiBzYWZlVmFsdWUuaW5jbHVkZXModikpKSB7XG4gICAgICAgICAgICBzYWZlVmFsdWUgPSBgXCIke3NhZmVWYWx1ZX1cImA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNhZmVWYWx1ZSArIHRoaXMuX2RlbGltaXRlcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NIZWFkZXJSZWNvcmQoa2V5cywgZGF0YUxlbmd0aCk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZWNvcmREYXRhID0gJyc7XG4gICAgICAgIGZvciAoY29uc3Qga2V5TmFtZSBvZiBrZXlzKSB7XG4gICAgICAgICAgICByZWNvcmREYXRhICs9IHRoaXMucHJvY2Vzc0ZpZWxkKGtleU5hbWUsIHRoaXMuX2VzY2FwZUNoYXJhY3RlcnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVjb3JkRGF0YS5zbGljZSgwLCAtdGhpcy5fZGVsaW1pdGVyTGVuZ3RoKTtcblxuICAgICAgICByZXR1cm4gZGF0YUxlbmd0aCA+IDAgPyByZXN1bHQgKyB0aGlzLl9lb3IgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzUmVjb3JkKHJlY29yZCwga2V5cyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHJlY29yZERhdGEgPSBuZXcgQXJyYXkoa2V5cy5sZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwga2V5cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gKHJlY29yZFtrZXlzW2luZGV4XV0gIT09IHVuZGVmaW5lZCkgPyByZWNvcmRba2V5c1tpbmRleF1dIDogdGhpcy5faXNTcGVjaWFsRGF0YSA/IHJlY29yZCA6ICcnO1xuICAgICAgICAgICAgcmVjb3JkRGF0YVtpbmRleF0gPSB0aGlzLnByb2Nlc3NGaWVsZCh2YWx1ZSwgdGhpcy5fZXNjYXBlQ2hhcmFjdGVycyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVjb3JkRGF0YS5qb2luKCcnKS5zbGljZSgwLCAtdGhpcy5fZGVsaW1pdGVyTGVuZ3RoKSArIHRoaXMuX2VvcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NEYXRhUmVjb3JkcyhjdXJyZW50RGF0YSwga2V5cykge1xuICAgICAgICBjb25zdCBkYXRhUmVjb3JkcyA9IG5ldyBBcnJheShjdXJyZW50RGF0YS5sZW5ndGgpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY3VycmVudERhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IGN1cnJlbnREYXRhW2ldO1xuICAgICAgICAgICAgZGF0YVJlY29yZHNbaV0gPSB0aGlzLnByb2Nlc3NSZWNvcmQocm93LCBrZXlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXRhUmVjb3Jkcy5qb2luKCcnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NEYXRhUmVjb3Jkc0FzeW5jKGN1cnJlbnREYXRhLCBrZXlzLCBkb25lOiAocmVzdWx0OiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICAgICAgY29uc3QgZGF0YVJlY29yZHMgPSBuZXcgQXJyYXkoY3VycmVudERhdGEubGVuZ3RoKTtcblxuICAgICAgICB5aWVsZGluZ0xvb3AoY3VycmVudERhdGEubGVuZ3RoLCAxMDAwLFxuICAgICAgICAgICAgKGkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3cgPSBjdXJyZW50RGF0YVtpXTtcbiAgICAgICAgICAgICAgICBkYXRhUmVjb3Jkc1tpXSA9IHRoaXMucHJvY2Vzc1JlY29yZChyb3csIGtleXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICBkb25lKGRhdGFSZWNvcmRzLmpvaW4oJycpKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGVsaW1pdGVyKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2RlbGltaXRlciA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9kZWxpbWl0ZXJMZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG4gICAgfVxufVxuIl19
@@ -1,5 +1,5 @@
1
1
  import { EventEmitter, Injectable } from '@angular/core';
2
- import { DEFAULT_OWNER, IgxBaseExporter } from '../exporter-common/base-export-service';
2
+ import { DEFAULT_OWNER, ExportHeaderType, IgxBaseExporter } from '../exporter-common/base-export-service';
3
3
  import { ExportUtilities } from '../exporter-common/export-utilities';
4
4
  import { CharSeparatedValueData } from './char-separated-value-data';
5
5
  import { CsvFileTypes } from './csv-exporter-options';
@@ -42,9 +42,28 @@ export class IgxCsvExporterService extends IgxBaseExporter {
42
42
  this.exportEnded = new EventEmitter();
43
43
  }
44
44
  exportDataImplementation(data, options, done) {
45
- data = data.map((item) => item.data);
45
+ const dimensionKeys = data[0]?.dimensionKeys;
46
+ data = dimensionKeys?.length ?
47
+ data.map((item) => item.rawData) :
48
+ data.map((item) => item.data);
46
49
  const columnList = this._ownersMap.get(DEFAULT_OWNER);
47
- const csvData = new CharSeparatedValueData(data, options.valueDelimiter, columnList?.columns);
50
+ const columns = columnList?.columns.filter(c => c.headerType === ExportHeaderType.ColumnHeader);
51
+ if (dimensionKeys) {
52
+ const dimensionCols = dimensionKeys.map((key) => {
53
+ const columnInfo = {
54
+ header: key,
55
+ field: key,
56
+ dataType: 'string',
57
+ skip: false,
58
+ headerType: ExportHeaderType.ColumnHeader,
59
+ columnSpan: 1,
60
+ startIndex: 0
61
+ };
62
+ return columnInfo;
63
+ });
64
+ columns.unshift(...dimensionCols);
65
+ }
66
+ const csvData = new CharSeparatedValueData(data, options.valueDelimiter, columns);
48
67
  csvData.prepareDataAsync((r) => {
49
68
  this._stringData = r;
50
69
  this.saveFile(options);
@@ -76,4 +95,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
76
95
  providedIn: 'root',
77
96
  }]
78
97
  }] });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LWV4cG9ydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL3NlcnZpY2VzL2Nzdi9jc3YtZXhwb3J0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBaUIsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQXlCLE1BQU0sd0JBQXdCLENBQUM7O0FBTzdFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFJSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsZUFBZTtJQUgxRDs7UUFJSTs7Ozs7Ozs7O1dBU0c7UUFDYSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO0tBaUM5RTtJQTdCYSx3QkFBd0IsQ0FBQyxJQUFxQixFQUFFLE9BQThCLEVBQUUsSUFBZ0I7UUFDdEcsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV0RCxNQUFNLE9BQU8sR0FBRyxJQUFJLHNCQUFzQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5RixPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELElBQUksRUFBRSxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sUUFBUSxDQUFDLE9BQThCO1FBQzNDLFFBQVEsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssWUFBWSxDQUFDLEdBQUc7Z0JBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLHlCQUF5QixDQUFDLENBQUM7Z0JBQy9FLE1BQU07WUFDVixLQUFLLFlBQVksQ0FBQyxHQUFHLENBQUM7WUFDdEIsS0FBSyxZQUFZLENBQUMsR0FBRztnQkFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsMENBQTBDLENBQUMsQ0FBQztnQkFDaEcsTUFBTTtRQUNkLENBQUM7SUFDTCxDQUFDO0lBRU8sVUFBVSxDQUFDLElBQVksRUFBRSxRQUFnQixFQUFFLFFBQWdCO1FBQy9ELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELENBQUM7OEdBM0NRLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRmxCLE1BQU07OzJGQUVULHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERFRkFVTFRfT1dORVIsIElFeHBvcnRSZWNvcmQsIElneEJhc2VFeHBvcnRlciB9IGZyb20gJy4uL2V4cG9ydGVyLWNvbW1vbi9iYXNlLWV4cG9ydC1zZXJ2aWNlJztcbmltcG9ydCB7IEV4cG9ydFV0aWxpdGllcyB9IGZyb20gJy4uL2V4cG9ydGVyLWNvbW1vbi9leHBvcnQtdXRpbGl0aWVzJztcbmltcG9ydCB7IENoYXJTZXBhcmF0ZWRWYWx1ZURhdGEgfSBmcm9tICcuL2NoYXItc2VwYXJhdGVkLXZhbHVlLWRhdGEnO1xuaW1wb3J0IHsgQ3N2RmlsZVR5cGVzLCBJZ3hDc3ZFeHBvcnRlck9wdGlvbnMgfSBmcm9tICcuL2Nzdi1leHBvcnRlci1vcHRpb25zJztcbmltcG9ydCB7IElCYXNlRXZlbnRBcmdzIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNzdkV4cG9ydEVuZGVkRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIGNzdkRhdGE/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogKipJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgQ1NWIEV4cG9ydGVyIFNlcnZpY2UqKiAtXG4gKiBbRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly93d3cuaW5mcmFnaXN0aWNzLmNvbS9wcm9kdWN0cy9pZ25pdGUtdWktYW5ndWxhci9hbmd1bGFyL2NvbXBvbmVudHMvZXhwb3J0ZXItY3N2KVxuICpcbiAqIFRoZSBJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgQ1NWIEV4cG9ydGVyIHNlcnZpY2UgY2FuIGV4cG9ydCBkYXRhIGluIGEgQ2hhcmFjdGVyIFNlcGFyYXRlZCBWYWx1ZXMgZm9ybWF0IGZyb21cbiAqIGJvdGggcmF3IGRhdGEgKGFycmF5KSBvciBmcm9tIGFuIGBJZ3hHcmlkYC5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgdHlwZXNjcmlwdFxuICogcHVibGljIGxvY2FsRGF0YSA9IFtcbiAqICAgeyBOYW1lOiBcIkVyaWMgUmlkbGV5XCIsIEFnZTogXCIyNlwiIH0sXG4gKiAgIHsgTmFtZTogXCJBbGFuaXMgQnJvb2tcIiwgQWdlOiBcIjIyXCIgfSxcbiAqICAgeyBOYW1lOiBcIkpvbmF0aGFuIE1vcnJpc1wiLCBBZ2U6IFwiMjNcIiB9XG4gKiBdO1xuICpcbiAqIGNvbnN0cnVjdG9yKHByaXZhdGUgY3N2RXhwb3J0U2VydmljZTogSWd4Q3N2RXhwb3J0ZXJTZXJ2aWNlKSB7XG4gKiB9XG4gKlxuICogY29uc3Qgb3B0OiBJZ3hDc3ZFeHBvcnRlck9wdGlvbnMgPSBuZXcgSWd4Q3N2RXhwb3J0ZXJPcHRpb25zKFwiRmlsZU5hbWVcIiwgQ3N2RmlsZVR5cGVzLkNTVik7XG4gKiB0aGlzLmNzdkV4cG9ydFNlcnZpY2UuZXhwb3J0RGF0YSh0aGlzLmxvY2FsRGF0YSwgb3B0KTtcbiAqIGBgYFxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBJZ3hDc3ZFeHBvcnRlclNlcnZpY2UgZXh0ZW5kcyBJZ3hCYXNlRXhwb3J0ZXIge1xuICAgIC8qKlxuICAgICAqIFRoaXMgZXZlbnQgaXMgZW1pdHRlZCB3aGVuIHRoZSBleHBvcnQgcHJvY2VzcyBmaW5pc2hlcy5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5leHBvcnRlclNlcnZpY2UuZXhwb3J0RW5kZWQuc3Vic2NyaWJlKChhcmdzOiBJQ3N2RXhwb3J0RW5kZWRFdmVudEFyZ3MpID0+IHtcbiAgICAgKiAvLyBwdXQgZXZlbnQgaGFuZGxlciBjb2RlIGhlcmVcbiAgICAgKiB9KTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hDc3ZFeHBvcnRlclNlcnZpY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZXhwb3J0RW5kZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElDc3ZFeHBvcnRFbmRlZEV2ZW50QXJncz4oKTtcblxuICAgIHByaXZhdGUgX3N0cmluZ0RhdGE6IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBleHBvcnREYXRhSW1wbGVtZW50YXRpb24oZGF0YTogSUV4cG9ydFJlY29yZFtdLCBvcHRpb25zOiBJZ3hDc3ZFeHBvcnRlck9wdGlvbnMsIGRvbmU6ICgpID0+IHZvaWQpIHtcbiAgICAgICAgZGF0YSA9IGRhdGEubWFwKChpdGVtKSA9PiBpdGVtLmRhdGEpO1xuICAgICAgICBjb25zdCBjb2x1bW5MaXN0ID0gdGhpcy5fb3duZXJzTWFwLmdldChERUZBVUxUX09XTkVSKTtcblxuICAgICAgICBjb25zdCBjc3ZEYXRhID0gbmV3IENoYXJTZXBhcmF0ZWRWYWx1ZURhdGEoZGF0YSwgb3B0aW9ucy52YWx1ZURlbGltaXRlciwgY29sdW1uTGlzdD8uY29sdW1ucyk7XG4gICAgICAgIGNzdkRhdGEucHJlcGFyZURhdGFBc3luYygocikgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc3RyaW5nRGF0YSA9IHI7XG4gICAgICAgICAgICB0aGlzLnNhdmVGaWxlKG9wdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy5leHBvcnRFbmRlZC5lbWl0KHsgY3N2RGF0YTogdGhpcy5fc3RyaW5nRGF0YSB9KTtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzYXZlRmlsZShvcHRpb25zOiBJZ3hDc3ZFeHBvcnRlck9wdGlvbnMpIHtcbiAgICAgICAgc3dpdGNoIChvcHRpb25zLmZpbGVUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIENzdkZpbGVUeXBlcy5DU1Y6XG4gICAgICAgICAgICAgICAgdGhpcy5leHBvcnRGaWxlKHRoaXMuX3N0cmluZ0RhdGEsIG9wdGlvbnMuZmlsZU5hbWUsICd0ZXh0L2NzdjtjaGFyc2V0PXV0Zi04OycpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDc3ZGaWxlVHlwZXMuVFNWOlxuICAgICAgICAgICAgY2FzZSBDc3ZGaWxlVHlwZXMuVEFCOlxuICAgICAgICAgICAgICAgIHRoaXMuZXhwb3J0RmlsZSh0aGlzLl9zdHJpbmdEYXRhLCBvcHRpb25zLmZpbGVOYW1lLCAndGV4dC90YWItc2VwYXJhdGVkLXZhbHVlcztjaGFyc2V0PXV0Zi04OycpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHBvcnRGaWxlKGRhdGE6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZywgZmlsZVR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2RhdGEgPyAnXFx1ZmVmZicgOiAnJywgZGF0YV0sIHsgdHlwZTogZmlsZVR5cGUgfSk7XG4gICAgICAgIEV4cG9ydFV0aWxpdGllcy5zYXZlQmxvYlRvRmlsZShibG9iLCBmaWxlTmFtZSk7XG4gICAgfVxufVxuIl19
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LWV4cG9ydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL3NlcnZpY2VzL2Nzdi9jc3YtZXhwb3J0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBOEIsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdEksT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQXlCLE1BQU0sd0JBQXdCLENBQUM7O0FBTzdFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFJSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsZUFBZTtJQUgxRDs7UUFJSTs7Ozs7Ozs7O1dBU0c7UUFDYSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO0tBb0Q5RTtJQWhEYSx3QkFBd0IsQ0FBQyxJQUFxQixFQUFFLE9BQThCLEVBQUUsSUFBZ0I7UUFDdEcsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQztRQUM3QyxJQUFJLEdBQUcsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0RCxNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEcsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNoQixNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQzVDLE1BQU0sVUFBVSxHQUFnQjtvQkFDNUIsTUFBTSxFQUFFLEdBQUc7b0JBQ1gsS0FBSyxFQUFFLEdBQUc7b0JBQ1YsUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLElBQUksRUFBRSxLQUFLO29CQUNYLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxZQUFZO29CQUN6QyxVQUFVLEVBQUUsQ0FBQztvQkFDYixVQUFVLEVBQUUsQ0FBQztpQkFDaEIsQ0FBQztnQkFDRixPQUFPLFVBQVUsQ0FBQztZQUN0QixDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsRixPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELElBQUksRUFBRSxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sUUFBUSxDQUFDLE9BQThCO1FBQzNDLFFBQVEsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssWUFBWSxDQUFDLEdBQUc7Z0JBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLHlCQUF5QixDQUFDLENBQUM7Z0JBQy9FLE1BQU07WUFDVixLQUFLLFlBQVksQ0FBQyxHQUFHLENBQUM7WUFDdEIsS0FBSyxZQUFZLENBQUMsR0FBRztnQkFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsMENBQTBDLENBQUMsQ0FBQztnQkFDaEcsTUFBTTtRQUNkLENBQUM7SUFDTCxDQUFDO0lBRU8sVUFBVSxDQUFDLElBQVksRUFBRSxRQUFnQixFQUFFLFFBQWdCO1FBQy9ELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELENBQUM7OEdBOURRLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRmxCLE1BQU07OzJGQUVULHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERFRkFVTFRfT1dORVIsIEV4cG9ydEhlYWRlclR5cGUsIElDb2x1bW5JbmZvLCBJRXhwb3J0UmVjb3JkLCBJZ3hCYXNlRXhwb3J0ZXIgfSBmcm9tICcuLi9leHBvcnRlci1jb21tb24vYmFzZS1leHBvcnQtc2VydmljZSc7XG5pbXBvcnQgeyBFeHBvcnRVdGlsaXRpZXMgfSBmcm9tICcuLi9leHBvcnRlci1jb21tb24vZXhwb3J0LXV0aWxpdGllcyc7XG5pbXBvcnQgeyBDaGFyU2VwYXJhdGVkVmFsdWVEYXRhIH0gZnJvbSAnLi9jaGFyLXNlcGFyYXRlZC12YWx1ZS1kYXRhJztcbmltcG9ydCB7IENzdkZpbGVUeXBlcywgSWd4Q3N2RXhwb3J0ZXJPcHRpb25zIH0gZnJvbSAnLi9jc3YtZXhwb3J0ZXItb3B0aW9ucyc7XG5pbXBvcnQgeyBJQmFzZUV2ZW50QXJncyB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDc3ZFeHBvcnRFbmRlZEV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICBjc3ZEYXRhPzogc3RyaW5nO1xufVxuXG4vKipcbiAqICoqSWduaXRlIFVJIGZvciBBbmd1bGFyIENTViBFeHBvcnRlciBTZXJ2aWNlKiogLVxuICogW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vd3d3LmluZnJhZ2lzdGljcy5jb20vcHJvZHVjdHMvaWduaXRlLXVpLWFuZ3VsYXIvYW5ndWxhci9jb21wb25lbnRzL2V4cG9ydGVyLWNzdilcbiAqXG4gKiBUaGUgSWduaXRlIFVJIGZvciBBbmd1bGFyIENTViBFeHBvcnRlciBzZXJ2aWNlIGNhbiBleHBvcnQgZGF0YSBpbiBhIENoYXJhY3RlciBTZXBhcmF0ZWQgVmFsdWVzIGZvcm1hdCBmcm9tXG4gKiBib3RoIHJhdyBkYXRhIChhcnJheSkgb3IgZnJvbSBhbiBgSWd4R3JpZGAuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHB1YmxpYyBsb2NhbERhdGEgPSBbXG4gKiAgIHsgTmFtZTogXCJFcmljIFJpZGxleVwiLCBBZ2U6IFwiMjZcIiB9LFxuICogICB7IE5hbWU6IFwiQWxhbmlzIEJyb29rXCIsIEFnZTogXCIyMlwiIH0sXG4gKiAgIHsgTmFtZTogXCJKb25hdGhhbiBNb3JyaXNcIiwgQWdlOiBcIjIzXCIgfVxuICogXTtcbiAqXG4gKiBjb25zdHJ1Y3Rvcihwcml2YXRlIGNzdkV4cG9ydFNlcnZpY2U6IElneENzdkV4cG9ydGVyU2VydmljZSkge1xuICogfVxuICpcbiAqIGNvbnN0IG9wdDogSWd4Q3N2RXhwb3J0ZXJPcHRpb25zID0gbmV3IElneENzdkV4cG9ydGVyT3B0aW9ucyhcIkZpbGVOYW1lXCIsIENzdkZpbGVUeXBlcy5DU1YpO1xuICogdGhpcy5jc3ZFeHBvcnRTZXJ2aWNlLmV4cG9ydERhdGEodGhpcy5sb2NhbERhdGEsIG9wdCk7XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSWd4Q3N2RXhwb3J0ZXJTZXJ2aWNlIGV4dGVuZHMgSWd4QmFzZUV4cG9ydGVyIHtcbiAgICAvKipcbiAgICAgKiBUaGlzIGV2ZW50IGlzIGVtaXR0ZWQgd2hlbiB0aGUgZXhwb3J0IHByb2Nlc3MgZmluaXNoZXMuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuZXhwb3J0ZXJTZXJ2aWNlLmV4cG9ydEVuZGVkLnN1YnNjcmliZSgoYXJnczogSUNzdkV4cG9ydEVuZGVkRXZlbnRBcmdzKSA9PiB7XG4gICAgICogLy8gcHV0IGV2ZW50IGhhbmRsZXIgY29kZSBoZXJlXG4gICAgICogfSk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4Q3N2RXhwb3J0ZXJTZXJ2aWNlXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGV4cG9ydEVuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxJQ3N2RXhwb3J0RW5kZWRFdmVudEFyZ3M+KCk7XG5cbiAgICBwcml2YXRlIF9zdHJpbmdEYXRhOiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgZXhwb3J0RGF0YUltcGxlbWVudGF0aW9uKGRhdGE6IElFeHBvcnRSZWNvcmRbXSwgb3B0aW9uczogSWd4Q3N2RXhwb3J0ZXJPcHRpb25zLCBkb25lOiAoKSA9PiB2b2lkKSB7XG4gICAgICAgIGNvbnN0IGRpbWVuc2lvbktleXMgPSBkYXRhWzBdPy5kaW1lbnNpb25LZXlzO1xuICAgICAgICBkYXRhID0gZGltZW5zaW9uS2V5cz8ubGVuZ3RoID8gXG4gICAgICAgICAgICBkYXRhLm1hcCgoaXRlbSkgPT4gaXRlbS5yYXdEYXRhKTpcbiAgICAgICAgICAgIGRhdGEubWFwKChpdGVtKSA9PiBpdGVtLmRhdGEpO1xuICAgICAgICBjb25zdCBjb2x1bW5MaXN0ID0gdGhpcy5fb3duZXJzTWFwLmdldChERUZBVUxUX09XTkVSKTtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IGNvbHVtbkxpc3Q/LmNvbHVtbnMuZmlsdGVyKGMgPT4gYy5oZWFkZXJUeXBlID09PSBFeHBvcnRIZWFkZXJUeXBlLkNvbHVtbkhlYWRlcik7XG4gICAgICAgIGlmIChkaW1lbnNpb25LZXlzKSB7XG4gICAgICAgICAgICBjb25zdCBkaW1lbnNpb25Db2xzID0gZGltZW5zaW9uS2V5cy5tYXAoKGtleSkgPT4geyAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbkluZm86IElDb2x1bW5JbmZvID0ge1xuICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IGtleSxcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGtleSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgICAgICBza2lwOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyVHlwZTogRXhwb3J0SGVhZGVyVHlwZS5Db2x1bW5IZWFkZXIsXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtblNwYW46IDEsXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXg6IDBcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBjb2x1bW5JbmZvO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb2x1bW5zLnVuc2hpZnQoLi4uZGltZW5zaW9uQ29scyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjc3ZEYXRhID0gbmV3IENoYXJTZXBhcmF0ZWRWYWx1ZURhdGEoZGF0YSwgb3B0aW9ucy52YWx1ZURlbGltaXRlciwgY29sdW1ucyk7XG4gICAgICAgIGNzdkRhdGEucHJlcGFyZURhdGFBc3luYygocikgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc3RyaW5nRGF0YSA9IHI7XG4gICAgICAgICAgICB0aGlzLnNhdmVGaWxlKG9wdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy5leHBvcnRFbmRlZC5lbWl0KHsgY3N2RGF0YTogdGhpcy5fc3RyaW5nRGF0YSB9KTtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzYXZlRmlsZShvcHRpb25zOiBJZ3hDc3ZFeHBvcnRlck9wdGlvbnMpIHtcbiAgICAgICAgc3dpdGNoIChvcHRpb25zLmZpbGVUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIENzdkZpbGVUeXBlcy5DU1Y6XG4gICAgICAgICAgICAgICAgdGhpcy5leHBvcnRGaWxlKHRoaXMuX3N0cmluZ0RhdGEsIG9wdGlvbnMuZmlsZU5hbWUsICd0ZXh0L2NzdjtjaGFyc2V0PXV0Zi04OycpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDc3ZGaWxlVHlwZXMuVFNWOlxuICAgICAgICAgICAgY2FzZSBDc3ZGaWxlVHlwZXMuVEFCOlxuICAgICAgICAgICAgICAgIHRoaXMuZXhwb3J0RmlsZSh0aGlzLl9zdHJpbmdEYXRhLCBvcHRpb25zLmZpbGVOYW1lLCAndGV4dC90YWItc2VwYXJhdGVkLXZhbHVlcztjaGFyc2V0PXV0Zi04OycpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHBvcnRGaWxlKGRhdGE6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZywgZmlsZVR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2RhdGEgPyAnXFx1ZmVmZicgOiAnJywgZGF0YV0sIHsgdHlwZTogZmlsZVR5cGUgfSk7XG4gICAgICAgIEV4cG9ydFV0aWxpdGllcy5zYXZlQmxvYlRvRmlsZShibG9iLCBmaWxlTmFtZSk7XG4gICAgfVxufVxuIl19