@firestitch/report 18.21.3 → 18.21.5

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 (31) hide show
  1. package/app/reports/components/component-list/component-list.component.d.ts +3 -0
  2. package/app/reports/export/report-export-collector.service.d.ts +2 -9
  3. package/app/reports/export/report-export.service.d.ts +0 -1
  4. package/app/reports/export/report-pdf.service.d.ts +0 -1
  5. package/app/reports/export/report-pptx.service.d.ts +0 -3
  6. package/app/reports/export/report-text-layout.service.d.ts +0 -4
  7. package/app/reports/interfaces/report-value-label.interface.d.ts +4 -0
  8. package/app/reports/interfaces/report.interface.d.ts +2 -0
  9. package/app/reports/option-builder.d.ts +1 -0
  10. package/app/reports/value-labels.d.ts +2 -0
  11. package/esm2022/app/reports/components/component-list/component-list.component.mjs +11 -3
  12. package/esm2022/app/reports/components/component-text/component-text.component.mjs +3 -3
  13. package/esm2022/app/reports/export/report-export-collector.service.mjs +21 -22
  14. package/esm2022/app/reports/export/report-export.service.mjs +7 -34
  15. package/esm2022/app/reports/export/report-pdf.service.mjs +21 -40
  16. package/esm2022/app/reports/export/report-pptx.service.mjs +68 -117
  17. package/esm2022/app/reports/export/report-text-layout.service.mjs +5 -20
  18. package/esm2022/app/reports/interfaces/report-value-label.interface.mjs +2 -0
  19. package/esm2022/app/reports/interfaces/report.interface.mjs +1 -1
  20. package/esm2022/app/reports/mark-click.mjs +9 -6
  21. package/esm2022/app/reports/option-builder.mjs +60 -10
  22. package/esm2022/app/reports/value-labels.mjs +26 -0
  23. package/esm2022/public_api.mjs +2 -1
  24. package/fesm2022/{firestitch-report-echarts-CUVOSBvJ.mjs → firestitch-report-echarts-D7WNr0Z4.mjs} +2 -2
  25. package/fesm2022/{firestitch-report-echarts-CUVOSBvJ.mjs.map → firestitch-report-echarts-D7WNr0Z4.mjs.map} +1 -1
  26. package/fesm2022/{firestitch-report-firestitch-report-CfvBTMrG.mjs → firestitch-report-firestitch-report-DWP3aywv.mjs} +218 -245
  27. package/fesm2022/firestitch-report-firestitch-report-DWP3aywv.mjs.map +1 -0
  28. package/fesm2022/firestitch-report.mjs +1 -1
  29. package/package.json +1 -1
  30. package/public_api.d.ts +1 -0
  31. package/fesm2022/firestitch-report-firestitch-report-CfvBTMrG.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
- import { chartColumns, chartDateLabel, extractChartSeries, formatPeriodLabel, partialSegmentOwner, } from './option-builder';
1
+ import { categoryLineLabels, chartColumns, chartDateLabel, extractChartSeries, formatPeriodLabel, partialSegmentOwner, } from './option-builder';
2
2
  import { isCalendarDay, isChartGranularity } from './report-state';
3
3
  // The one click model (B10): what a click on a tile's mark stands for, and
4
4
  // what the tile does with it. Pure, so the node harness runs it.
@@ -159,9 +159,10 @@ function chartPoints(component, data, context, extracted, dataIndex, series) {
159
159
  }
160
160
  return points;
161
161
  }
162
- // The category as the rows hold it and as the axis wrote it. On a time axis
163
- // it also gives the period's first day and the grain, and reads as the
164
- // tooltip names it ('January 2026'); a pie writes its slices as they come.
162
+ // The category as the rows hold it and as the axis wrote it (a labeled
163
+ // column's label). On a time axis it also gives the period's first day and
164
+ // the grain, and reads as the tooltip names it ('January 2026'); a pie's as
165
+ // its legend names the slice (categoryLineLabels).
165
166
  function categoryPoint(config, data, context, extracted, column, dataIndex) {
166
167
  const raw = extracted.rawCategories[dataIndex];
167
168
  const label = extracted.categories[dataIndex];
@@ -174,7 +175,9 @@ function categoryPoint(config, data, context, extracted, column, dataIndex) {
174
175
  return {
175
176
  column,
176
177
  raw,
177
- label: pie ? label : formatPeriodLabel(String(raw), grain, true, context.locale, chartDateLabel(config)),
178
+ label: pie
179
+ ? categoryLineLabels(extracted.categories, config, data, context.locale)[dataIndex] ?? label
180
+ : formatPeriodLabel(String(raw), grain, true, context.locale, chartDateLabel(config)),
178
181
  period,
179
182
  grain,
180
183
  };
@@ -190,4 +193,4 @@ function numeric(value) {
190
193
  function finite(value) {
191
194
  return typeof value === 'number' && Number.isFinite(value) ? value : null;
192
195
  }
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyay1jbGljay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9tYXJrLWNsaWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdCQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLGNBQWMsRUFDZCxrQkFBa0IsRUFFbEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixHQUNwQixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUduRSwyRUFBMkU7QUFDM0UsaUVBQWlFO0FBQ2pFLEVBQUU7QUFDRiw2RUFBNkU7QUFDN0UsNkVBQTZFO0FBQzdFLGlDQUFpQztBQUNqQyw0RUFBNEU7QUFDNUUsNkVBQTZFO0FBQzdFLDZFQUE2RTtBQUM3RSx1REFBdUQ7QUFFdkQscUNBQXFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFxQztJQUNsRSxLQUFLLEVBQUUsWUFBWTtJQUNuQixXQUFXLEVBQUUsb0JBQW9CO0lBQ2pDLFFBQVEsRUFBRSxXQUFXO0NBQ3RCLENBQUM7QUFFRiwwRUFBMEU7QUFDMUUsd0VBQXdFO0FBQ3hFLG9DQUFvQztBQUNwQyxNQUFNLFVBQVUsV0FBVyxDQUFDLEtBQXlDO0lBQ25FLE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxJQUFJLElBQUksR0FBdUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUV6RSxJQUFJLEtBQUssRUFBRSxXQUFXLEtBQUssT0FBTyxJQUFJLEtBQUssRUFBRSxXQUFXLEtBQUssS0FBSyxJQUFJLEtBQUssRUFBRSxXQUFXLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDckcsSUFBSSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7SUFDM0IsQ0FBQztJQUVELE9BQU87UUFDTCxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDcEQsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3BELElBQUk7S0FDTCxDQUFDO0FBQ0osQ0FBQztBQUVELDJFQUEyRTtBQUMzRSw2RUFBNkU7QUFDN0UseUVBQXlFO0FBQ3pFLDBFQUEwRTtBQUMxRSwwRUFBMEU7QUFDMUUsNEVBQTRFO0FBQzVFLE1BQU0sVUFBVSxjQUFjLENBQzVCLFNBQTBCLEVBQzFCLElBQW1CLEVBQ25CLE9BQTRCLEVBQzVCLEdBQW1CLEVBQ25CLEtBQXlDO0lBRXpDLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFxQixFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUUxRSxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7V0FDbEQsR0FBRyxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU07V0FDcEUsQ0FBQyxNQUFNLEtBQUssTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNyRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEUsT0FBTztRQUNMLFdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRTtRQUN6QixNQUFNLEVBQUUsV0FBVyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzFHLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJO1FBQ3hDLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJO1FBQzdDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLEtBQUssRUFBRSxPQUFPLENBQUM7UUFDOUMsT0FBTztLQUNSLENBQUM7QUFDSixDQUFDO0FBRUQseUVBQXlFO0FBQ3pFLE1BQU0sVUFBVSxZQUFZLENBQzFCLFNBQTBCLEVBQzFCLElBQTBCLEVBQzFCLEtBQXlDO0lBRXpDLE1BQU0sTUFBTSxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQWMsQ0FBQztJQUNyRCxNQUFNLEdBQUcsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQzVFLE1BQU0sS0FBSyxHQUFHLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTFHLE9BQU87UUFDTCxXQUFXLEVBQUUsU0FBUyxDQUFDLEVBQUU7UUFDekIsTUFBTSxFQUFFLEVBQUU7UUFDVixPQUFPO1FBQ1AsS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJO1FBQ3BCLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLEtBQUssRUFBRSxPQUFPLENBQUM7UUFDOUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUM7S0FDNUIsQ0FBQztBQUNKLENBQUM7QUFFRCx3RUFBd0U7QUFDeEUsd0VBQXdFO0FBQ3hFLGtFQUFrRTtBQUNsRSxNQUFNLFVBQVUsZUFBZSxDQUFDLE9BQTBCO0lBQ3hELE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDMUYsQ0FBQztBQUVELDZFQUE2RTtBQUM3RSw2RUFBNkU7QUFDN0UsNkJBQTZCO0FBQzdCLE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBc0IsRUFBRSxPQUEwQjtJQUM1RSxPQUFPLGVBQWUsQ0FBQyxPQUFPLENBQUM7U0FDNUIsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssT0FBTyxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztBQUMvRixDQUFDO0FBRUQsMEVBQTBFO0FBQzFFLDBFQUEwRTtBQUMxRSw0RUFBNEU7QUFDNUUsc0VBQXNFO0FBQ3RFLE1BQU0sVUFBVSxlQUFlLENBQzdCLEtBQXNCLEVBQ3RCLE9BQW9DLEVBQ3BDLE9BQXNCO0lBRXRCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDekQsQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxPQUFPLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDN0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDckUsQ0FBQztJQUVELE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ2xHLENBQUM7QUFFRCx5RUFBeUU7QUFDekUsbURBQW1EO0FBQ25ELE1BQU0sVUFBVSxPQUFPLENBQUMsS0FBc0I7SUFDNUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3BCLEtBQUssQ0FBQyxXQUFXO1FBQ2pCLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUM5RCxLQUFLLENBQUMsT0FBTztLQUNkLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCwyRUFBMkU7QUFDM0UsZ0NBQWdDO0FBQ2hDLE1BQU0sVUFBVSxVQUFVLENBQ3hCLEtBQXNCLEVBQ3RCLEtBQTRDO0lBRTVDLE9BQU8sS0FBSztRQUNWLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSTtRQUNyRixDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ1gsQ0FBQztBQUVELHlFQUF5RTtBQUN6RSwyRUFBMkU7QUFDM0UsNkVBQTZFO0FBQzdFLDJFQUEyRTtBQUMzRSx5RUFBeUU7QUFDekUsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsS0FBNEMsRUFDNUMsS0FBc0I7SUFFdEIsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUV2QyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPO1FBQ0wsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFO0tBQzVDLENBQUM7QUFDSixDQUFDO0FBRUQsdUVBQXVFO0FBQ3ZFLHNFQUFzRTtBQUN0RSx1RUFBdUU7QUFDdkUsdUVBQXVFO0FBQ3ZFLGdEQUFnRDtBQUNoRCxTQUFTLFNBQVMsQ0FBQyxNQUFtQixFQUFFLFNBQStCLEVBQUUsR0FBbUI7SUFDMUYsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUM7SUFFNUMsSUFBSSxHQUFHLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzdCLE9BQU8sU0FBUyxLQUFLLEtBQUssSUFBSSxTQUFTLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBSSxTQUFTLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDOUIsT0FBTyxHQUFHLENBQUMsV0FBVyxLQUFLLENBQUMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDckUsQ0FBQztJQUVELElBQUksR0FBRyxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RFLE9BQU8sU0FBUyxLQUFLLEtBQUssSUFBSSxTQUFTLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUM7SUFDNUUsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLFNBQVMsS0FBSyxLQUFLLElBQUksU0FBUyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFdEcsT0FBTyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDMUUsQ0FBQztBQUVELHNFQUFzRTtBQUN0RSw4RUFBOEU7QUFDOUUsU0FBUyxXQUFXLENBQ2xCLFNBQTBCLEVBQzFCLElBQW1CLEVBQ25CLE9BQTRCLEVBQzVCLFNBQStCLEVBQy9CLFNBQWlCLEVBQ2pCLE1BQXFCO0lBRXJCLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFxQixDQUFDO0lBQy9DLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1RCxNQUFNLE1BQU0sR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFFckYsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLFdBQVcsSUFBSSxXQUFXLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDOUQsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELDRFQUE0RTtBQUM1RSx1RUFBdUU7QUFDdkUsMkVBQTJFO0FBQzNFLFNBQVMsYUFBYSxDQUNwQixNQUFtQixFQUNuQixJQUFtQixFQUNuQixPQUE0QixFQUM1QixTQUErQixFQUMvQixNQUFjLEVBQ2QsU0FBaUI7SUFFakIsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sS0FBSyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdFLE1BQU0sTUFBTSxHQUFHLEtBQUssSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFMUYsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxLQUFLLEtBQUssSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQztJQUV2RSxPQUFPO1FBQ0wsTUFBTTtRQUNOLEdBQUc7UUFDSCxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hHLE1BQU07UUFDTixLQUFLO0tBQ04sQ0FBQztBQUNKLENBQUM7QUFFRCxxRUFBcUU7QUFDckUsU0FBUyxPQUFPLENBQUMsS0FBYztJQUM3QixJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDMUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUVELDhCQUE4QjtBQUM5QixTQUFTLE1BQU0sQ0FBQyxLQUFnQztJQUM5QyxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM1RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50RGF0YURyaWxsIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbXBvbmVudC1kYXRhLWRyaWxsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydEhpdCB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtY2hhcnQtaGl0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnREcmlsbFN0ZXAgfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LWRyaWxsLXN0ZXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydE1hcmtBY3Rpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LW1hcmstYWN0aW9uLnR5cGUnO1xuaW1wb3J0IHsgUmVwb3J0TWFya0NsaWNrIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcG9ydC1tYXJrLWNsaWNrLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRNYXJrQ29udGV4dCB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtbWFyay1jb250ZXh0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRNYXJrRGVjaXNpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LW1hcmstZGVjaXNpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydE1hcmtFdmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtbWFyay1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVwb3J0TWFya1BvaW50IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcG9ydC1tYXJrLXBvaW50LmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBDaGFydENvbmZpZyxcbiAgQ29tcG9uZW50RGF0YSxcbiAgS3BpQ29uZmlnLFxuICBSZXBvcnRDb21wb25lbnQsXG4gIFJlcG9ydEZvcm1hdENvbnRleHQsXG59IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIGNoYXJ0Q29sdW1ucyxcbiAgY2hhcnREYXRlTGFiZWwsXG4gIGV4dHJhY3RDaGFydFNlcmllcyxcbiAgRXh0cmFjdGVkQ2hhcnRTZXJpZXMsXG4gIGZvcm1hdFBlcmlvZExhYmVsLFxuICBwYXJ0aWFsU2VnbWVudE93bmVyLFxufSBmcm9tICcuL29wdGlvbi1idWlsZGVyJztcbmltcG9ydCB7IGlzQ2FsZW5kYXJEYXksIGlzQ2hhcnRHcmFudWxhcml0eSB9IGZyb20gJy4vcmVwb3J0LXN0YXRlJztcblxuXG4vLyBUaGUgb25lIGNsaWNrIG1vZGVsIChCMTApOiB3aGF0IGEgY2xpY2sgb24gYSB0aWxlJ3MgbWFyayBzdGFuZHMgZm9yLCBhbmRcbi8vIHdoYXQgdGhlIHRpbGUgZG9lcyB3aXRoIGl0LiBQdXJlLCBzbyB0aGUgbm9kZSBoYXJuZXNzIHJ1bnMgaXQuXG4vL1xuLy8gLSBjaGFydE1hcmtDbGljayBhbmQga3BpTWFya0NsaWNrIHR1cm4gYSBjbGljayBpbnRvIGEgUmVwb3J0TWFya0NsaWNrOiB0aGVcbi8vICAgcmF3IHZhbHVlcyBmcm9tIGRhdGEucm93cyAobmV2ZXIgdGhlIGRyYXduIHRleHQpLCB0aGUgY2xpY2tlZCBzZXJpZXMgYW5kXG4vLyAgIGl0cyBudW1iZXIsIGFuZCB0aGUgcG9pbnRlci5cbi8vIC0gbWFya0FjdGlvbnMgbGlzdHMgd2hhdCB0aGUgY2xpY2sgbWF5IGRvLCBlYWNoIG9ubHkgd2hpbGUgaXRzIGZlYXR1cmUgaXNcbi8vICAgb2ZmZXJlZDsgZGVjaWRlTWFya0NsaWNrIGFwcGxpZXMgdGhlIGFjdGlvbiBydWxlOiBub25lIGRvZXMgbm90aGluZywgb25lXG4vLyAgIHJ1bnMsIHR3byBvciBtb3JlIG9wZW4gdGhlIG1lbnUgYXQgdGhlIG1hcmssIGFuZCBhIHRvdWNoIGZpcnN0IHNob3dzIHRoZVxuLy8gICB0b29sdGlwIGFuZCBhY3RzIG9uIGEgc2Vjb25kIHRhcCBvbiB0aGUgc2FtZSBtYXJrLlxuXG4vLyBBIG1hcmsgbWVudSByb3cncyB0ZXh0LCBieSBhY3Rpb24uXG5leHBvcnQgY29uc3QgTUFSS19BQ1RJT05fTEFCRUxTOiBSZWNvcmQ8UmVwb3J0TWFya0FjdGlvbiwgc3RyaW5nPiA9IHtcbiAgZHJpbGw6ICdEcmlsbCBkb3duJyxcbiAgY3Jvc3NGaWx0ZXI6ICdGaWx0ZXIgb3RoZXIgdGlsZXMnLFxuICBzaG93Um93czogJ1Nob3cgcm93cycsXG59O1xuXG4vLyBXaGVyZSBhIGNsaWNrIHdhcyBhbmQgd2hhdCBtYWRlIGl0LiBBIFBvaW50ZXJFdmVudCBuYW1lcyBpdHMgcG9pbnRlcjsgYVxuLy8gVG91Y2hFdmVudCBpcyBhIHRvdWNoOyBhbnl0aGluZyBlbHNlIChhIHBsYWluIE1vdXNlRXZlbnQsIGEga2V5IHByZXNzXG4vLyB0aGF0IGNsaWNrZWQpIHJlYWRzIGFzIHRoZSBtb3VzZS5cbmV4cG9ydCBmdW5jdGlvbiBtYXJrUG9pbnRlcihldmVudDogUmVwb3J0TWFya0V2ZW50IHwgbnVsbCB8IHVuZGVmaW5lZCk6IFJlcG9ydE1hcmtDbGlja1sncG9pbnRlciddIHtcbiAgY29uc3QgdG91Y2ggPSBldmVudD8uY2hhbmdlZFRvdWNoZXM/LlswXTtcbiAgbGV0IHR5cGU6IFJlcG9ydE1hcmtDbGlja1sncG9pbnRlciddWyd0eXBlJ10gPSB0b3VjaCA/ICd0b3VjaCcgOiAnbW91c2UnO1xuXG4gIGlmIChldmVudD8ucG9pbnRlclR5cGUgPT09ICd0b3VjaCcgfHwgZXZlbnQ/LnBvaW50ZXJUeXBlID09PSAncGVuJyB8fCBldmVudD8ucG9pbnRlclR5cGUgPT09ICdtb3VzZScpIHtcbiAgICB0eXBlID0gZXZlbnQucG9pbnRlclR5cGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IGZpbml0ZShldmVudD8ucGFnZVgpID8/IGZpbml0ZSh0b3VjaD8ucGFnZVgpID8/IDAsXG4gICAgeTogZmluaXRlKGV2ZW50Py5wYWdlWSkgPz8gZmluaXRlKHRvdWNoPy5wYWdlWSkgPz8gMCxcbiAgICB0eXBlLFxuICB9O1xufVxuXG4vLyBBIGNsaWNrIG9uIGEgY2hhcnQ6IGEgYmFyIChhbmQgaXRzIHNwbGl0IHZhbHVlKSwgYSBsaW5lIG9yIGFyZWEgcG9pbnQgb3Jcbi8vIHRoZSBsaW5lIGl0c2VsZiwgYSBwaWUgc2xpY2UsIGEgd2F0ZXJmYWxsIHN0ZXAsIG9yIGEgY2F0ZWdvcnkncyBlbXB0eSBiYW5kXG4vLyAod2l0aCB0aGUgbW91c2Ugb25seTogYSB0YXAgdGhlcmUgaXMgaG93IGEgcGhvbmUgc2hvd3MgdGhlIHRvb2x0aXApLiBBXG4vLyBwYXJ0aWFsIHNlZ21lbnQgcmVhZHMgYXMgdGhlIHNlcmllcyBpdCBjb250aW51ZXMsIGFuZCBhIGNvbXBhcmVkIHNlcmllc1xuLy8gYXMgaXRzIGNhdGVnb3J5LCB0aGUgY3VycmVudCBwZXJpb2QuIG51bGwgZm9yIGEgcmVmZXJlbmNlIGxpbmUgb3IgYmFuZCxcbi8vIGEgd2F0ZXJmYWxsJ3MgYmFzZSBhbmQgaXRzIFRvdGFsLCBhbmQgYSBjYXRlZ29yeSB0aGUgY2hhcnQgZG9lcyBub3QgaGF2ZS5cbmV4cG9ydCBmdW5jdGlvbiBjaGFydE1hcmtDbGljayhcbiAgY29tcG9uZW50OiBSZXBvcnRDb21wb25lbnQsXG4gIGRhdGE6IENvbXBvbmVudERhdGEsXG4gIGNvbnRleHQ6IFJlcG9ydEZvcm1hdENvbnRleHQsXG4gIGhpdDogUmVwb3J0Q2hhcnRIaXQsXG4gIGV2ZW50OiBSZXBvcnRNYXJrRXZlbnQgfCBudWxsIHwgdW5kZWZpbmVkLFxuKTogUmVwb3J0TWFya0NsaWNrIHwgbnVsbCB7XG4gIGNvbnN0IHBvaW50ZXIgPSBtYXJrUG9pbnRlcihldmVudCk7XG4gIGNvbnN0IGV4dHJhY3RlZCA9IGV4dHJhY3RDaGFydFNlcmllcyhjb21wb25lbnQsIGRhdGEpO1xuICBjb25zdCBzZXJpZXMgPSBoaXRTZXJpZXMoY29tcG9uZW50LmNvbmZpZyBhcyBDaGFydENvbmZpZywgZXh0cmFjdGVkLCBoaXQpO1xuXG4gIGlmIChzZXJpZXMgPT09IG51bGwgfHwgIU51bWJlci5pc0ludGVnZXIoaGl0LmRhdGFJbmRleClcbiAgICB8fCBoaXQuZGF0YUluZGV4IDwgMCB8fCBoaXQuZGF0YUluZGV4ID49IGV4dHJhY3RlZC5yYXdDYXRlZ29yaWVzLmxlbmd0aFxuICAgIHx8IChzZXJpZXMgPT09ICdiYW5kJyAmJiBwb2ludGVyLnR5cGUgIT09ICdtb3VzZScpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjbGlja2VkID0gc2VyaWVzID09PSAnYmFuZCcgPyBudWxsIDogZXh0cmFjdGVkLnNlcmllc1tzZXJpZXNdO1xuXG4gIHJldHVybiB7XG4gICAgY29tcG9uZW50SWQ6IGNvbXBvbmVudC5pZCxcbiAgICBwb2ludHM6IGNoYXJ0UG9pbnRzKGNvbXBvbmVudCwgZGF0YSwgY29udGV4dCwgZXh0cmFjdGVkLCBoaXQuZGF0YUluZGV4LCBzZXJpZXMgPT09ICdiYW5kJyA/IG51bGwgOiBzZXJpZXMpLFxuICAgIG1lYXN1cmU6IGNsaWNrZWQ/Lm1lYXN1cmUuY29sdW1uID8/IG51bGwsXG4gICAgdmFsdWU6IGNsaWNrZWQ/LnZhbHVlc1toaXQuZGF0YUluZGV4XSA/PyBudWxsLFxuICAgIGFkZGl0aXZlOiAhIShldmVudD8uY3RybEtleSB8fCBldmVudD8ubWV0YUtleSksXG4gICAgcG9pbnRlcixcbiAgfTtcbn1cblxuLy8gQSBjbGljayBvbiBhIEtQSSdzIHZhbHVlOiBubyBwb2ludHMsIHRoZSBLUEkncyBtZWFzdXJlIGFuZCBpdHMgbnVtYmVyLlxuZXhwb3J0IGZ1bmN0aW9uIGtwaU1hcmtDbGljayhcbiAgY29tcG9uZW50OiBSZXBvcnRDb21wb25lbnQsXG4gIGRhdGE6IENvbXBvbmVudERhdGEgfCBudWxsLFxuICBldmVudDogUmVwb3J0TWFya0V2ZW50IHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IFJlcG9ydE1hcmtDbGljayB7XG4gIGNvbnN0IGNvbmZpZyA9IChjb21wb25lbnQuY29uZmlnID8/IHt9KSBhcyBLcGlDb25maWc7XG4gIGNvbnN0IHJvdyA9IGRhdGE/LnJvd3M/LlswXTtcbiAgY29uc3QgbWVhc3VyZSA9IGNvbmZpZy5tZWFzdXJlPy5jb2x1bW4gPz8gT2JqZWN0LmtleXMocm93ID8/IHt9KVswXSA/PyBudWxsO1xuICBjb25zdCB2YWx1ZSA9IGRhdGE/LmtwaSA/IGRhdGEua3BpLnZhbHVlIDogZmluaXRlKG51bWVyaWMobWVhc3VyZSA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IHJvdz8uW21lYXN1cmVdKSk7XG5cbiAgcmV0dXJuIHtcbiAgICBjb21wb25lbnRJZDogY29tcG9uZW50LmlkLFxuICAgIHBvaW50czogW10sXG4gICAgbWVhc3VyZSxcbiAgICB2YWx1ZTogdmFsdWUgPz8gbnVsbCxcbiAgICBhZGRpdGl2ZTogISEoZXZlbnQ/LmN0cmxLZXkgfHwgZXZlbnQ/Lm1ldGFLZXkpLFxuICAgIHBvaW50ZXI6IG1hcmtQb2ludGVyKGV2ZW50KSxcbiAgfTtcbn1cblxuLy8gV2hhdCBhIHRpbGUncyBtYXJrcyBtYXkgZG8gb24gaXRzIGxhc3QgYW5zd2VyLCBiZWZvcmUgYW55IG9uZSBtYXJrIGlzXG4vLyBjbGlja2VkOiB0aGUgY2hhcnQncyB0b29sdGlwIGhpbnQgYW5kIGl0cyBoYW5kIHBvaW50ZXIgcmVhZCBpdC4gRHJpbGxcbi8vIGRvd24gd2hpbGUgZHJpbGwgaXMgb2ZmZXJlZCBhbmQgdGhlIGFuc3dlciBuYW1lcyBhIGxldmVsIGJlbG93LlxuZXhwb3J0IGZ1bmN0aW9uIHRpbGVNYXJrQWN0aW9ucyhjb250ZXh0OiBSZXBvcnRNYXJrQ29udGV4dCk6IFJlcG9ydE1hcmtBY3Rpb25bXSB7XG4gIHJldHVybiBjb250ZXh0LmZlYXR1cmVzLmluY2x1ZGVzKCdkcmlsbCcpICYmIGNvbnRleHQuZGF0YT8uZHJpbGw/Lm5leHQgPyBbJ2RyaWxsJ10gOiBbXTtcbn1cblxuLy8gV2hhdCB0aGlzIGNsaWNrIG1heSBkbzogdGhlIHRpbGUncyBhY3Rpb25zIHRoYXQgYXBwbHkgdG8gdGhlIGNsaWNrZWQgbWFyay5cbi8vIERyaWxsIGRvd24gbmVlZHMgYSBwZXJpb2Qgb24gdGhlIGRyaWxsZWQgYXhpcywgc28gYSBLUEkncyB2YWx1ZSBhbmQgYSBtYXJrXG4vLyBvZmYgdGhhdCBheGlzIG5ldmVyIGRyaWxsLlxuZXhwb3J0IGZ1bmN0aW9uIG1hcmtBY3Rpb25zKGNsaWNrOiBSZXBvcnRNYXJrQ2xpY2ssIGNvbnRleHQ6IFJlcG9ydE1hcmtDb250ZXh0KTogUmVwb3J0TWFya0FjdGlvbltdIHtcbiAgcmV0dXJuIHRpbGVNYXJrQWN0aW9ucyhjb250ZXh0KVxuICAgIC5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uICE9PSAnZHJpbGwnIHx8IGRyaWxsUG9pbnQoY2xpY2ssIGNvbnRleHQuZGF0YT8uZHJpbGwpICE9PSBudWxsKTtcbn1cblxuLy8gVGhlIGFjdGlvbiBydWxlIChCMTAuMikuIE5vIGFjdGlvbjogbm90aGluZyBoYXBwZW5zLiBBIHRvdWNoIChvciBhIHBlbilcbi8vIG9uIGEgY2hhcnQncyBtYXJrIGZpcnN0IHNob3dzIGl0cyB0b29sdGlwIG9ubHksIGFuZCBhIHNlY29uZCB0YXAgb24gdGhlXG4vLyBzYW1lIG1hcmsgYWN0czsgYSBLUEkncyB2YWx1ZSBoYXMgbm8gdG9vbHRpcCwgc28gaXRzIGZpcnN0IHRhcCBhY3RzLiBUaGVuXG4vLyBvbmUgYWN0aW9uIHJ1bnMgYXQgb25jZSwgYW5kIHR3byBvciBtb3JlIG9wZW4gdGhlIG1lbnUgYXQgdGhlIG1hcmsuXG5leHBvcnQgZnVuY3Rpb24gZGVjaWRlTWFya0NsaWNrKFxuICBjbGljazogUmVwb3J0TWFya0NsaWNrLFxuICBhY3Rpb25zOiByZWFkb25seSBSZXBvcnRNYXJrQWN0aW9uW10sXG4gIHRvdWNoZWQ6IHN0cmluZyB8IG51bGwsXG4pOiBSZXBvcnRNYXJrRGVjaXNpb24ge1xuICBpZiAoIWFjdGlvbnMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHsgb3V0Y29tZTogJ25vbmUnLCBhY3Rpb25zOiBbXSwgdG91Y2hlZDogbnVsbCB9O1xuICB9XG5cbiAgY29uc3Qga2V5ID0gbWFya0tleShjbGljayk7XG4gIGlmIChjbGljay5wb2ludGVyLnR5cGUgIT09ICdtb3VzZScgJiYgY2xpY2sucG9pbnRzLmxlbmd0aCAmJiB0b3VjaGVkICE9PSBrZXkpIHtcbiAgICByZXR1cm4geyBvdXRjb21lOiAndG9vbHRpcCcsIGFjdGlvbnM6IFsuLi5hY3Rpb25zXSwgdG91Y2hlZDoga2V5IH07XG4gIH1cblxuICByZXR1cm4geyBvdXRjb21lOiBhY3Rpb25zLmxlbmd0aCA9PT0gMSA/ICdydW4nIDogJ21lbnUnLCBhY3Rpb25zOiBbLi4uYWN0aW9uc10sIHRvdWNoZWQ6IG51bGwgfTtcbn1cblxuLy8gV2hpY2ggbWFyayBhIGNsaWNrIGlzIG9uOiBpdHMgdGlsZSwgaXRzIHJhdyB2YWx1ZXMgYW5kIGl0cyBzZXJpZXMuIFR3b1xuLy8gdGFwcyBhcmUgb24gdGhlIHNhbWUgbWFyayB3aGVuIHRoZWlyIGtleXMgbWF0Y2guXG5leHBvcnQgZnVuY3Rpb24gbWFya0tleShjbGljazogUmVwb3J0TWFya0NsaWNrKTogc3RyaW5nIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFtcbiAgICBjbGljay5jb21wb25lbnRJZCxcbiAgICBjbGljay5wb2ludHMubWFwKChwb2ludCkgPT4gW3BvaW50LmNvbHVtbiwgcG9pbnQucmF3ID8/IG51bGxdKSxcbiAgICBjbGljay5tZWFzdXJlLFxuICBdKTtcbn1cblxuLy8gVGhlIHBvaW50IGEgZHJpbGwgc3RlcHMgaW50bzogdGhlIGNsaWNrZWQgcGVyaW9kIG9uIHRoZSBkcmlsbGVkIGF4aXMsIG9yXG4vLyBudWxsIHdoZW4gdGhlIGNsaWNrIGhhcyBub25lLlxuZXhwb3J0IGZ1bmN0aW9uIGRyaWxsUG9pbnQoXG4gIGNsaWNrOiBSZXBvcnRNYXJrQ2xpY2ssXG4gIGRyaWxsOiBDb21wb25lbnREYXRhRHJpbGwgfCBudWxsIHwgdW5kZWZpbmVkLFxuKTogUmVwb3J0TWFya1BvaW50IHwgbnVsbCB7XG4gIHJldHVybiBkcmlsbFxuICAgID8gY2xpY2sucG9pbnRzLmZpbmQoKHBvaW50KSA9PiBwb2ludC5jb2x1bW4gPT09IGRyaWxsLmF4aXMgJiYgISFwb2ludC5wZXJpb2QpID8/IG51bGxcbiAgICA6IG51bGw7XG59XG5cbi8vIFRoZSBkcmlsbCBwYXRoIG9uZSBsZXZlbCBkb3duIGZyb20gd2hhdCB0aGUgY2hhcnQgc2hvd3M6IHRoZSBzdGVwcyB0aGVcbi8vIHNlcnZlciBhcHBsaWVkIChkcmlsbC5wYXRoKSwgdGhlbiB0aGUgY2xpY2tlZCBwZXJpb2QgYXQgdGhlIGxldmVsIGl0IHdhc1xuLy8gY2xpY2tlZCBhdCAoZHJpbGwubGV2ZWwpLCB3aGljaCB0aGUgY2hhcnQgdGhlbiBzaG93cyBhdCBkcmlsbC5uZXh0LiBBIHN0ZXBcbi8vIG5hbWVzIHRoZSBwZXJpb2QgY2xpY2tlZCwgc28gdGhlIGZpcnN0IHN0ZXAgaXMgYXQgdGhlIGNoYXJ0J3MgdG9wIGxldmVsLlxuLy8gbnVsbCB3aGVuIHRoZSBjaGFydCBpcyBhdCBpdHMgbG93ZXN0IGxldmVsIG9yIHRoZSBjbGljayBoYXMgbm8gcGVyaW9kLlxuZXhwb3J0IGZ1bmN0aW9uIGRyaWxsRG93blBhdGgoXG4gIGRyaWxsOiBDb21wb25lbnREYXRhRHJpbGwgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBjbGljazogUmVwb3J0TWFya0NsaWNrLFxuKTogUmVwb3J0RHJpbGxTdGVwW10gfCBudWxsIHtcbiAgY29uc3QgcG9pbnQgPSBkcmlsbFBvaW50KGNsaWNrLCBkcmlsbCk7XG5cbiAgaWYgKCFkcmlsbD8ubmV4dCB8fCAhcG9pbnQ/LnBlcmlvZCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICAuLi5kcmlsbC5wYXRoLm1hcCgoY3J1bWIpID0+ICh7IGxldmVsOiBjcnVtYi5sZXZlbCwgdmFsdWU6IGNydW1iLnZhbHVlIH0pKSxcbiAgICB7IGxldmVsOiBkcmlsbC5sZXZlbCwgdmFsdWU6IHBvaW50LnBlcmlvZCB9LFxuICBdO1xufVxuXG4vLyBUaGUgZXh0cmFjdGVkIHNlcmllcyBhIGhpdCBpcyBvbjogaXRzIGluZGV4LCAnYmFuZCcgZm9yIGEgY2F0ZWdvcnknc1xuLy8gZW1wdHkgYmFuZCwgb3IgbnVsbCBmb3Igd2hhdCBpcyBub3QgYSBtYXJrLiBBbiBheGlzIGNoYXJ0J3MgcGFydGlhbFxuLy8gc2VnbWVudCBtYXBzIHRvIHRoZSBzZXJpZXMgaXQgY29udGludWVzOyBhIHJlZmVyZW5jZSBjYXJyaWVyIG1hcHMgdG9cbi8vIG5vdGhpbmcuIEEgd2F0ZXJmYWxsJ3Mgc3RlcHMgYXJlIGl0cyBzZWNvbmQgc2VyaWVzICh0aGUgZmlyc3QgaXMgdGhlXG4vLyBpbnZpc2libGUgYmFzZSk7IGEgcGllJ3Mgc2xpY2VzIGl0cyBvbmx5IG9uZS5cbmZ1bmN0aW9uIGhpdFNlcmllcyhjb25maWc6IENoYXJ0Q29uZmlnLCBleHRyYWN0ZWQ6IEV4dHJhY3RlZENoYXJ0U2VyaWVzLCBoaXQ6IFJlcG9ydENoYXJ0SGl0KTogbnVtYmVyIHwgJ2JhbmQnIHwgbnVsbCB7XG4gIGNvbnN0IGNoYXJ0VHlwZSA9IGNvbmZpZy5jaGFydFR5cGUgPz8gJ2Jhcic7XG5cbiAgaWYgKGhpdC5zZXJpZXNJbmRleCA9PT0gbnVsbCkge1xuICAgIHJldHVybiBjaGFydFR5cGUgPT09ICdwaWUnIHx8IGNoYXJ0VHlwZSA9PT0gJ2RvbnV0JyA/IG51bGwgOiAnYmFuZCc7XG4gIH1cblxuICBpZiAoY2hhcnRUeXBlID09PSAnd2F0ZXJmYWxsJykge1xuICAgIHJldHVybiBoaXQuc2VyaWVzSW5kZXggPT09IDEgJiYgZXh0cmFjdGVkLnNlcmllcy5sZW5ndGggPyAwIDogbnVsbDtcbiAgfVxuXG4gIGlmIChoaXQuc2VyaWVzSW5kZXggPj0gMCAmJiBoaXQuc2VyaWVzSW5kZXggPCBleHRyYWN0ZWQuc2VyaWVzLmxlbmd0aCkge1xuICAgIHJldHVybiBjaGFydFR5cGUgPT09ICdwaWUnIHx8IGNoYXJ0VHlwZSA9PT0gJ2RvbnV0JyA/IDAgOiBoaXQuc2VyaWVzSW5kZXg7XG4gIH1cblxuICBjb25zdCBvd25lciA9IGNoYXJ0VHlwZSA9PT0gJ3BpZScgfHwgY2hhcnRUeXBlID09PSAnZG9udXQnID8gbnVsbCA6IHBhcnRpYWxTZWdtZW50T3duZXIoaGl0LnNlcmllc0lkKTtcblxuICByZXR1cm4gb3duZXIgIT09IG51bGwgJiYgb3duZXIgPCBleHRyYWN0ZWQuc2VyaWVzLmxlbmd0aCA/IG93bmVyIDogbnVsbDtcbn1cblxuLy8gVGhlIGNsaWNrZWQgY2F0ZWdvcnksIHRoZW4gdGhlIHNwbGl0IHZhbHVlIHdoZW4gdGhlIGNoYXJ0IHNwbGl0cyBieVxuLy8gYW5vdGhlciBjb2x1bW4gdGhhbiBpdHMgYXhpcyAoYSBjb2xvckJ5IGNoYXJ0J3Mgc2VyaWVzIGFyZSBpdHMgY2F0ZWdvcmllcykuXG5mdW5jdGlvbiBjaGFydFBvaW50cyhcbiAgY29tcG9uZW50OiBSZXBvcnRDb21wb25lbnQsXG4gIGRhdGE6IENvbXBvbmVudERhdGEsXG4gIGNvbnRleHQ6IFJlcG9ydEZvcm1hdENvbnRleHQsXG4gIGV4dHJhY3RlZDogRXh0cmFjdGVkQ2hhcnRTZXJpZXMsXG4gIGRhdGFJbmRleDogbnVtYmVyLFxuICBzZXJpZXM6IG51bWJlciB8IG51bGwsXG4pOiBSZXBvcnRNYXJrUG9pbnRbXSB7XG4gIGNvbnN0IGNvbmZpZyA9IGNvbXBvbmVudC5jb25maWcgYXMgQ2hhcnRDb25maWc7XG4gIGNvbnN0IHsgeENvbHVtbiwgZ3JvdXBDb2x1bW4gfSA9IGNoYXJ0Q29sdW1ucyhjb25maWcsIGRhdGEpO1xuICBjb25zdCBwb2ludHMgPSBbY2F0ZWdvcnlQb2ludChjb25maWcsIGRhdGEsIGNvbnRleHQsIGV4dHJhY3RlZCwgeENvbHVtbiwgZGF0YUluZGV4KV07XG5cbiAgaWYgKHNlcmllcyAhPT0gbnVsbCAmJiBncm91cENvbHVtbiAmJiBncm91cENvbHVtbiAhPT0geENvbHVtbikge1xuICAgIHBvaW50cy5wdXNoKHsgY29sdW1uOiBncm91cENvbHVtbiwgcmF3OiBleHRyYWN0ZWQucmF3R3JvdXBzW3Nlcmllc10sIGxhYmVsOiBleHRyYWN0ZWQuc2VyaWVzW3Nlcmllc10ubmFtZSB9KTtcbiAgfVxuXG4gIHJldHVybiBwb2ludHM7XG59XG5cbi8vIFRoZSBjYXRlZ29yeSBhcyB0aGUgcm93cyBob2xkIGl0IGFuZCBhcyB0aGUgYXhpcyB3cm90ZSBpdC4gT24gYSB0aW1lIGF4aXNcbi8vIGl0IGFsc28gZ2l2ZXMgdGhlIHBlcmlvZCdzIGZpcnN0IGRheSBhbmQgdGhlIGdyYWluLCBhbmQgcmVhZHMgYXMgdGhlXG4vLyB0b29sdGlwIG5hbWVzIGl0ICgnSmFudWFyeSAyMDI2Jyk7IGEgcGllIHdyaXRlcyBpdHMgc2xpY2VzIGFzIHRoZXkgY29tZS5cbmZ1bmN0aW9uIGNhdGVnb3J5UG9pbnQoXG4gIGNvbmZpZzogQ2hhcnRDb25maWcsXG4gIGRhdGE6IENvbXBvbmVudERhdGEsXG4gIGNvbnRleHQ6IFJlcG9ydEZvcm1hdENvbnRleHQsXG4gIGV4dHJhY3RlZDogRXh0cmFjdGVkQ2hhcnRTZXJpZXMsXG4gIGNvbHVtbjogc3RyaW5nLFxuICBkYXRhSW5kZXg6IG51bWJlcixcbik6IFJlcG9ydE1hcmtQb2ludCB7XG4gIGNvbnN0IHJhdyA9IGV4dHJhY3RlZC5yYXdDYXRlZ29yaWVzW2RhdGFJbmRleF07XG4gIGNvbnN0IGxhYmVsID0gZXh0cmFjdGVkLmNhdGVnb3JpZXNbZGF0YUluZGV4XTtcbiAgY29uc3QgZ3JhaW4gPSBpc0NoYXJ0R3JhbnVsYXJpdHkoZGF0YS5ncmFudWxhcml0eSkgPyBkYXRhLmdyYW51bGFyaXR5IDogbnVsbDtcbiAgY29uc3QgcGVyaW9kID0gZ3JhaW4gJiYgcmF3ICE9PSBudWxsICYmIHJhdyAhPT0gdW5kZWZpbmVkID8gU3RyaW5nKHJhdykuc2xpY2UoMCwgMTApIDogJyc7XG5cbiAgaWYgKCFncmFpbiB8fCAhaXNDYWxlbmRhckRheShwZXJpb2QpKSB7XG4gICAgcmV0dXJuIHsgY29sdW1uLCByYXcsIGxhYmVsIH07XG4gIH1cblxuICBjb25zdCBwaWUgPSBjb25maWcuY2hhcnRUeXBlID09PSAncGllJyB8fCBjb25maWcuY2hhcnRUeXBlID09PSAnZG9udXQnO1xuXG4gIHJldHVybiB7XG4gICAgY29sdW1uLFxuICAgIHJhdyxcbiAgICBsYWJlbDogcGllID8gbGFiZWwgOiBmb3JtYXRQZXJpb2RMYWJlbChTdHJpbmcocmF3KSwgZ3JhaW4sIHRydWUsIGNvbnRleHQubG9jYWxlLCBjaGFydERhdGVMYWJlbChjb25maWcpKSxcbiAgICBwZXJpb2QsXG4gICAgZ3JhaW4sXG4gIH07XG59XG5cbi8vIEEgbnVtYmVyIGFzIGEgY2VsbCBob2xkcyBpdCAoYSBudW1iZXIgb3IgbnVtZXJpYyB0ZXh0KSwgZWxzZSBudWxsLlxuZnVuY3Rpb24gbnVtZXJpYyh2YWx1ZTogdW5rbm93bik6IG51bWJlciB8IG51bGwge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBOdW1iZXIodmFsdWUpO1xufVxuXG4vLyBBIGZpbml0ZSBudW1iZXIsIGVsc2UgbnVsbC5cbmZ1bmN0aW9uIGZpbml0ZSh2YWx1ZTogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCk6IG51bWJlciB8IG51bGwge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpID8gdmFsdWUgOiBudWxsO1xufVxuIl19
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyay1jbGljay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9tYXJrLWNsaWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdCQSxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixjQUFjLEVBQ2Qsa0JBQWtCLEVBRWxCLGlCQUFpQixFQUNqQixtQkFBbUIsR0FDcEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkUsMkVBQTJFO0FBQzNFLGlFQUFpRTtBQUNqRSxFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLDZFQUE2RTtBQUM3RSxpQ0FBaUM7QUFDakMsNEVBQTRFO0FBQzVFLDZFQUE2RTtBQUM3RSw2RUFBNkU7QUFDN0UsdURBQXVEO0FBRXZELHFDQUFxQztBQUNyQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBcUM7SUFDbEUsS0FBSyxFQUFFLFlBQVk7SUFDbkIsV0FBVyxFQUFFLG9CQUFvQjtJQUNqQyxRQUFRLEVBQUUsV0FBVztDQUN0QixDQUFDO0FBRUYsMEVBQTBFO0FBQzFFLHdFQUF3RTtBQUN4RSxvQ0FBb0M7QUFDcEMsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUF5QztJQUNuRSxNQUFNLEtBQUssR0FBRyxLQUFLLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsSUFBSSxJQUFJLEdBQXVDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFFekUsSUFBSSxLQUFLLEVBQUUsV0FBVyxLQUFLLE9BQU8sSUFBSSxLQUFLLEVBQUUsV0FBVyxLQUFLLEtBQUssSUFBSSxLQUFLLEVBQUUsV0FBVyxLQUFLLE9BQU8sRUFBRSxDQUFDO1FBQ3JHLElBQUksR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO0lBQzNCLENBQUM7SUFF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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnREYXRhRHJpbGwgfSBmcm9tICcuL2ludGVyZmFjZXMvY29tcG9uZW50LWRhdGEtZHJpbGwuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydENoYXJ0SGl0IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcG9ydC1jaGFydC1oaXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydERyaWxsU3RlcCB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtZHJpbGwtc3RlcC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVwb3J0TWFya0FjdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtbWFyay1hY3Rpb24udHlwZSc7XG5pbXBvcnQgeyBSZXBvcnRNYXJrQ2xpY2sgfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LW1hcmstY2xpY2suaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydE1hcmtDb250ZXh0IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcG9ydC1tYXJrLWNvbnRleHQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydE1hcmtEZWNpc2lvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtbWFyay1kZWNpc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVwb3J0TWFya0V2ZW50IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcG9ydC1tYXJrLWV2ZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRNYXJrUG9pbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LW1hcmstcG9pbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIENoYXJ0Q29uZmlnLFxuICBDb21wb25lbnREYXRhLFxuICBLcGlDb25maWcsXG4gIFJlcG9ydENvbXBvbmVudCxcbiAgUmVwb3J0Rm9ybWF0Q29udGV4dCxcbn0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgY2F0ZWdvcnlMaW5lTGFiZWxzLFxuICBjaGFydENvbHVtbnMsXG4gIGNoYXJ0RGF0ZUxhYmVsLFxuICBleHRyYWN0Q2hhcnRTZXJpZXMsXG4gIEV4dHJhY3RlZENoYXJ0U2VyaWVzLFxuICBmb3JtYXRQZXJpb2RMYWJlbCxcbiAgcGFydGlhbFNlZ21lbnRPd25lcixcbn0gZnJvbSAnLi9vcHRpb24tYnVpbGRlcic7XG5pbXBvcnQgeyBpc0NhbGVuZGFyRGF5LCBpc0NoYXJ0R3JhbnVsYXJpdHkgfSBmcm9tICcuL3JlcG9ydC1zdGF0ZSc7XG5cblxuLy8gVGhlIG9uZSBjbGljayBtb2RlbCAoQjEwKTogd2hhdCBhIGNsaWNrIG9uIGEgdGlsZSdzIG1hcmsgc3RhbmRzIGZvciwgYW5kXG4vLyB3aGF0IHRoZSB0aWxlIGRvZXMgd2l0aCBpdC4gUHVyZSwgc28gdGhlIG5vZGUgaGFybmVzcyBydW5zIGl0LlxuLy9cbi8vIC0gY2hhcnRNYXJrQ2xpY2sgYW5kIGtwaU1hcmtDbGljayB0dXJuIGEgY2xpY2sgaW50byBhIFJlcG9ydE1hcmtDbGljazogdGhlXG4vLyAgIHJhdyB2YWx1ZXMgZnJvbSBkYXRhLnJvd3MgKG5ldmVyIHRoZSBkcmF3biB0ZXh0KSwgdGhlIGNsaWNrZWQgc2VyaWVzIGFuZFxuLy8gICBpdHMgbnVtYmVyLCBhbmQgdGhlIHBvaW50ZXIuXG4vLyAtIG1hcmtBY3Rpb25zIGxpc3RzIHdoYXQgdGhlIGNsaWNrIG1heSBkbywgZWFjaCBvbmx5IHdoaWxlIGl0cyBmZWF0dXJlIGlzXG4vLyAgIG9mZmVyZWQ7IGRlY2lkZU1hcmtDbGljayBhcHBsaWVzIHRoZSBhY3Rpb24gcnVsZTogbm9uZSBkb2VzIG5vdGhpbmcsIG9uZVxuLy8gICBydW5zLCB0d28gb3IgbW9yZSBvcGVuIHRoZSBtZW51IGF0IHRoZSBtYXJrLCBhbmQgYSB0b3VjaCBmaXJzdCBzaG93cyB0aGVcbi8vICAgdG9vbHRpcCBhbmQgYWN0cyBvbiBhIHNlY29uZCB0YXAgb24gdGhlIHNhbWUgbWFyay5cblxuLy8gQSBtYXJrIG1lbnUgcm93J3MgdGV4dCwgYnkgYWN0aW9uLlxuZXhwb3J0IGNvbnN0IE1BUktfQUNUSU9OX0xBQkVMUzogUmVjb3JkPFJlcG9ydE1hcmtBY3Rpb24sIHN0cmluZz4gPSB7XG4gIGRyaWxsOiAnRHJpbGwgZG93bicsXG4gIGNyb3NzRmlsdGVyOiAnRmlsdGVyIG90aGVyIHRpbGVzJyxcbiAgc2hvd1Jvd3M6ICdTaG93IHJvd3MnLFxufTtcblxuLy8gV2hlcmUgYSBjbGljayB3YXMgYW5kIHdoYXQgbWFkZSBpdC4gQSBQb2ludGVyRXZlbnQgbmFtZXMgaXRzIHBvaW50ZXI7IGFcbi8vIFRvdWNoRXZlbnQgaXMgYSB0b3VjaDsgYW55dGhpbmcgZWxzZSAoYSBwbGFpbiBNb3VzZUV2ZW50LCBhIGtleSBwcmVzc1xuLy8gdGhhdCBjbGlja2VkKSByZWFkcyBhcyB0aGUgbW91c2UuXG5leHBvcnQgZnVuY3Rpb24gbWFya1BvaW50ZXIoZXZlbnQ6IFJlcG9ydE1hcmtFdmVudCB8IG51bGwgfCB1bmRlZmluZWQpOiBSZXBvcnRNYXJrQ2xpY2tbJ3BvaW50ZXInXSB7XG4gIGNvbnN0IHRvdWNoID0gZXZlbnQ/LmNoYW5nZWRUb3VjaGVzPy5bMF07XG4gIGxldCB0eXBlOiBSZXBvcnRNYXJrQ2xpY2tbJ3BvaW50ZXInXVsndHlwZSddID0gdG91Y2ggPyAndG91Y2gnIDogJ21vdXNlJztcblxuICBpZiAoZXZlbnQ/LnBvaW50ZXJUeXBlID09PSAndG91Y2gnIHx8IGV2ZW50Py5wb2ludGVyVHlwZSA9PT0gJ3BlbicgfHwgZXZlbnQ/LnBvaW50ZXJUeXBlID09PSAnbW91c2UnKSB7XG4gICAgdHlwZSA9IGV2ZW50LnBvaW50ZXJUeXBlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB4OiBmaW5pdGUoZXZlbnQ/LnBhZ2VYKSA/PyBmaW5pdGUodG91Y2g/LnBhZ2VYKSA/PyAwLFxuICAgIHk6IGZpbml0ZShldmVudD8ucGFnZVkpID8/IGZpbml0ZSh0b3VjaD8ucGFnZVkpID8/IDAsXG4gICAgdHlwZSxcbiAgfTtcbn1cblxuLy8gQSBjbGljayBvbiBhIGNoYXJ0OiBhIGJhciAoYW5kIGl0cyBzcGxpdCB2YWx1ZSksIGEgbGluZSBvciBhcmVhIHBvaW50IG9yXG4vLyB0aGUgbGluZSBpdHNlbGYsIGEgcGllIHNsaWNlLCBhIHdhdGVyZmFsbCBzdGVwLCBvciBhIGNhdGVnb3J5J3MgZW1wdHkgYmFuZFxuLy8gKHdpdGggdGhlIG1vdXNlIG9ubHk6IGEgdGFwIHRoZXJlIGlzIGhvdyBhIHBob25lIHNob3dzIHRoZSB0b29sdGlwKS4gQVxuLy8gcGFydGlhbCBzZWdtZW50IHJlYWRzIGFzIHRoZSBzZXJpZXMgaXQgY29udGludWVzLCBhbmQgYSBjb21wYXJlZCBzZXJpZXNcbi8vIGFzIGl0cyBjYXRlZ29yeSwgdGhlIGN1cnJlbnQgcGVyaW9kLiBudWxsIGZvciBhIHJlZmVyZW5jZSBsaW5lIG9yIGJhbmQsXG4vLyBhIHdhdGVyZmFsbCdzIGJhc2UgYW5kIGl0cyBUb3RhbCwgYW5kIGEgY2F0ZWdvcnkgdGhlIGNoYXJ0IGRvZXMgbm90IGhhdmUuXG5leHBvcnQgZnVuY3Rpb24gY2hhcnRNYXJrQ2xpY2soXG4gIGNvbXBvbmVudDogUmVwb3J0Q29tcG9uZW50LFxuICBkYXRhOiBDb21wb25lbnREYXRhLFxuICBjb250ZXh0OiBSZXBvcnRGb3JtYXRDb250ZXh0LFxuICBoaXQ6IFJlcG9ydENoYXJ0SGl0LFxuICBldmVudDogUmVwb3J0TWFya0V2ZW50IHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IFJlcG9ydE1hcmtDbGljayB8IG51bGwge1xuICBjb25zdCBwb2ludGVyID0gbWFya1BvaW50ZXIoZXZlbnQpO1xuICBjb25zdCBleHRyYWN0ZWQgPSBleHRyYWN0Q2hhcnRTZXJpZXMoY29tcG9uZW50LCBkYXRhKTtcbiAgY29uc3Qgc2VyaWVzID0gaGl0U2VyaWVzKGNvbXBvbmVudC5jb25maWcgYXMgQ2hhcnRDb25maWcsIGV4dHJhY3RlZCwgaGl0KTtcblxuICBpZiAoc2VyaWVzID09PSBudWxsIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKGhpdC5kYXRhSW5kZXgpXG4gICAgfHwgaGl0LmRhdGFJbmRleCA8IDAgfHwgaGl0LmRhdGFJbmRleCA+PSBleHRyYWN0ZWQucmF3Q2F0ZWdvcmllcy5sZW5ndGhcbiAgICB8fCAoc2VyaWVzID09PSAnYmFuZCcgJiYgcG9pbnRlci50eXBlICE9PSAnbW91c2UnKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgY2xpY2tlZCA9IHNlcmllcyA9PT0gJ2JhbmQnID8gbnVsbCA6IGV4dHJhY3RlZC5zZXJpZXNbc2VyaWVzXTtcblxuICByZXR1cm4ge1xuICAgIGNvbXBvbmVudElkOiBjb21wb25lbnQuaWQsXG4gICAgcG9pbnRzOiBjaGFydFBvaW50cyhjb21wb25lbnQsIGRhdGEsIGNvbnRleHQsIGV4dHJhY3RlZCwgaGl0LmRhdGFJbmRleCwgc2VyaWVzID09PSAnYmFuZCcgPyBudWxsIDogc2VyaWVzKSxcbiAgICBtZWFzdXJlOiBjbGlja2VkPy5tZWFzdXJlLmNvbHVtbiA/PyBudWxsLFxuICAgIHZhbHVlOiBjbGlja2VkPy52YWx1ZXNbaGl0LmRhdGFJbmRleF0gPz8gbnVsbCxcbiAgICBhZGRpdGl2ZTogISEoZXZlbnQ/LmN0cmxLZXkgfHwgZXZlbnQ/Lm1ldGFLZXkpLFxuICAgIHBvaW50ZXIsXG4gIH07XG59XG5cbi8vIEEgY2xpY2sgb24gYSBLUEkncyB2YWx1ZTogbm8gcG9pbnRzLCB0aGUgS1BJJ3MgbWVhc3VyZSBhbmQgaXRzIG51bWJlci5cbmV4cG9ydCBmdW5jdGlvbiBrcGlNYXJrQ2xpY2soXG4gIGNvbXBvbmVudDogUmVwb3J0Q29tcG9uZW50LFxuICBkYXRhOiBDb21wb25lbnREYXRhIHwgbnVsbCxcbiAgZXZlbnQ6IFJlcG9ydE1hcmtFdmVudCB8IG51bGwgfCB1bmRlZmluZWQsXG4pOiBSZXBvcnRNYXJrQ2xpY2sge1xuICBjb25zdCBjb25maWcgPSAoY29tcG9uZW50LmNvbmZpZyA/PyB7fSkgYXMgS3BpQ29uZmlnO1xuICBjb25zdCByb3cgPSBkYXRhPy5yb3dzPy5bMF07XG4gIGNvbnN0IG1lYXN1cmUgPSBjb25maWcubWVhc3VyZT8uY29sdW1uID8/IE9iamVjdC5rZXlzKHJvdyA/PyB7fSlbMF0gPz8gbnVsbDtcbiAgY29uc3QgdmFsdWUgPSBkYXRhPy5rcGkgPyBkYXRhLmtwaS52YWx1ZSA6IGZpbml0ZShudW1lcmljKG1lYXN1cmUgPT09IG51bGwgPyB1bmRlZmluZWQgOiByb3c/LlttZWFzdXJlXSkpO1xuXG4gIHJldHVybiB7XG4gICAgY29tcG9uZW50SWQ6IGNvbXBvbmVudC5pZCxcbiAgICBwb2ludHM6IFtdLFxuICAgIG1lYXN1cmUsXG4gICAgdmFsdWU6IHZhbHVlID8/IG51bGwsXG4gICAgYWRkaXRpdmU6ICEhKGV2ZW50Py5jdHJsS2V5IHx8IGV2ZW50Py5tZXRhS2V5KSxcbiAgICBwb2ludGVyOiBtYXJrUG9pbnRlcihldmVudCksXG4gIH07XG59XG5cbi8vIFdoYXQgYSB0aWxlJ3MgbWFya3MgbWF5IGRvIG9uIGl0cyBsYXN0IGFuc3dlciwgYmVmb3JlIGFueSBvbmUgbWFyayBpc1xuLy8gY2xpY2tlZDogdGhlIGNoYXJ0J3MgdG9vbHRpcCBoaW50IGFuZCBpdHMgaGFuZCBwb2ludGVyIHJlYWQgaXQuIERyaWxsXG4vLyBkb3duIHdoaWxlIGRyaWxsIGlzIG9mZmVyZWQgYW5kIHRoZSBhbnN3ZXIgbmFtZXMgYSBsZXZlbCBiZWxvdy5cbmV4cG9ydCBmdW5jdGlvbiB0aWxlTWFya0FjdGlvbnMoY29udGV4dDogUmVwb3J0TWFya0NvbnRleHQpOiBSZXBvcnRNYXJrQWN0aW9uW10ge1xuICByZXR1cm4gY29udGV4dC5mZWF0dXJlcy5pbmNsdWRlcygnZHJpbGwnKSAmJiBjb250ZXh0LmRhdGE/LmRyaWxsPy5uZXh0ID8gWydkcmlsbCddIDogW107XG59XG5cbi8vIFdoYXQgdGhpcyBjbGljayBtYXkgZG86IHRoZSB0aWxlJ3MgYWN0aW9ucyB0aGF0IGFwcGx5IHRvIHRoZSBjbGlja2VkIG1hcmsuXG4vLyBEcmlsbCBkb3duIG5lZWRzIGEgcGVyaW9kIG9uIHRoZSBkcmlsbGVkIGF4aXMsIHNvIGEgS1BJJ3MgdmFsdWUgYW5kIGEgbWFya1xuLy8gb2ZmIHRoYXQgYXhpcyBuZXZlciBkcmlsbC5cbmV4cG9ydCBmdW5jdGlvbiBtYXJrQWN0aW9ucyhjbGljazogUmVwb3J0TWFya0NsaWNrLCBjb250ZXh0OiBSZXBvcnRNYXJrQ29udGV4dCk6IFJlcG9ydE1hcmtBY3Rpb25bXSB7XG4gIHJldHVybiB0aWxlTWFya0FjdGlvbnMoY29udGV4dClcbiAgICAuZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbiAhPT0gJ2RyaWxsJyB8fCBkcmlsbFBvaW50KGNsaWNrLCBjb250ZXh0LmRhdGE/LmRyaWxsKSAhPT0gbnVsbCk7XG59XG5cbi8vIFRoZSBhY3Rpb24gcnVsZSAoQjEwLjIpLiBObyBhY3Rpb246IG5vdGhpbmcgaGFwcGVucy4gQSB0b3VjaCAob3IgYSBwZW4pXG4vLyBvbiBhIGNoYXJ0J3MgbWFyayBmaXJzdCBzaG93cyBpdHMgdG9vbHRpcCBvbmx5LCBhbmQgYSBzZWNvbmQgdGFwIG9uIHRoZVxuLy8gc2FtZSBtYXJrIGFjdHM7IGEgS1BJJ3MgdmFsdWUgaGFzIG5vIHRvb2x0aXAsIHNvIGl0cyBmaXJzdCB0YXAgYWN0cy4gVGhlblxuLy8gb25lIGFjdGlvbiBydW5zIGF0IG9uY2UsIGFuZCB0d28gb3IgbW9yZSBvcGVuIHRoZSBtZW51IGF0IHRoZSBtYXJrLlxuZXhwb3J0IGZ1bmN0aW9uIGRlY2lkZU1hcmtDbGljayhcbiAgY2xpY2s6IFJlcG9ydE1hcmtDbGljayxcbiAgYWN0aW9uczogcmVhZG9ubHkgUmVwb3J0TWFya0FjdGlvbltdLFxuICB0b3VjaGVkOiBzdHJpbmcgfCBudWxsLFxuKTogUmVwb3J0TWFya0RlY2lzaW9uIHtcbiAgaWYgKCFhY3Rpb25zLmxlbmd0aCkge1xuICAgIHJldHVybiB7IG91dGNvbWU6ICdub25lJywgYWN0aW9uczogW10sIHRvdWNoZWQ6IG51bGwgfTtcbiAgfVxuXG4gIGNvbnN0IGtleSA9IG1hcmtLZXkoY2xpY2spO1xuICBpZiAoY2xpY2sucG9pbnRlci50eXBlICE9PSAnbW91c2UnICYmIGNsaWNrLnBvaW50cy5sZW5ndGggJiYgdG91Y2hlZCAhPT0ga2V5KSB7XG4gICAgcmV0dXJuIHsgb3V0Y29tZTogJ3Rvb2x0aXAnLCBhY3Rpb25zOiBbLi4uYWN0aW9uc10sIHRvdWNoZWQ6IGtleSB9O1xuICB9XG5cbiAgcmV0dXJuIHsgb3V0Y29tZTogYWN0aW9ucy5sZW5ndGggPT09IDEgPyAncnVuJyA6ICdtZW51JywgYWN0aW9uczogWy4uLmFjdGlvbnNdLCB0b3VjaGVkOiBudWxsIH07XG59XG5cbi8vIFdoaWNoIG1hcmsgYSBjbGljayBpcyBvbjogaXRzIHRpbGUsIGl0cyByYXcgdmFsdWVzIGFuZCBpdHMgc2VyaWVzLiBUd29cbi8vIHRhcHMgYXJlIG9uIHRoZSBzYW1lIG1hcmsgd2hlbiB0aGVpciBrZXlzIG1hdGNoLlxuZXhwb3J0IGZ1bmN0aW9uIG1hcmtLZXkoY2xpY2s6IFJlcG9ydE1hcmtDbGljayk6IHN0cmluZyB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShbXG4gICAgY2xpY2suY29tcG9uZW50SWQsXG4gICAgY2xpY2sucG9pbnRzLm1hcCgocG9pbnQpID0+IFtwb2ludC5jb2x1bW4sIHBvaW50LnJhdyA/PyBudWxsXSksXG4gICAgY2xpY2subWVhc3VyZSxcbiAgXSk7XG59XG5cbi8vIFRoZSBwb2ludCBhIGRyaWxsIHN0ZXBzIGludG86IHRoZSBjbGlja2VkIHBlcmlvZCBvbiB0aGUgZHJpbGxlZCBheGlzLCBvclxuLy8gbnVsbCB3aGVuIHRoZSBjbGljayBoYXMgbm9uZS5cbmV4cG9ydCBmdW5jdGlvbiBkcmlsbFBvaW50KFxuICBjbGljazogUmVwb3J0TWFya0NsaWNrLFxuICBkcmlsbDogQ29tcG9uZW50RGF0YURyaWxsIHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IFJlcG9ydE1hcmtQb2ludCB8IG51bGwge1xuICByZXR1cm4gZHJpbGxcbiAgICA/IGNsaWNrLnBvaW50cy5maW5kKChwb2ludCkgPT4gcG9pbnQuY29sdW1uID09PSBkcmlsbC5heGlzICYmICEhcG9pbnQucGVyaW9kKSA/PyBudWxsXG4gICAgOiBudWxsO1xufVxuXG4vLyBUaGUgZHJpbGwgcGF0aCBvbmUgbGV2ZWwgZG93biBmcm9tIHdoYXQgdGhlIGNoYXJ0IHNob3dzOiB0aGUgc3RlcHMgdGhlXG4vLyBzZXJ2ZXIgYXBwbGllZCAoZHJpbGwucGF0aCksIHRoZW4gdGhlIGNsaWNrZWQgcGVyaW9kIGF0IHRoZSBsZXZlbCBpdCB3YXNcbi8vIGNsaWNrZWQgYXQgKGRyaWxsLmxldmVsKSwgd2hpY2ggdGhlIGNoYXJ0IHRoZW4gc2hvd3MgYXQgZHJpbGwubmV4dC4gQSBzdGVwXG4vLyBuYW1lcyB0aGUgcGVyaW9kIGNsaWNrZWQsIHNvIHRoZSBmaXJzdCBzdGVwIGlzIGF0IHRoZSBjaGFydCdzIHRvcCBsZXZlbC5cbi8vIG51bGwgd2hlbiB0aGUgY2hhcnQgaXMgYXQgaXRzIGxvd2VzdCBsZXZlbCBvciB0aGUgY2xpY2sgaGFzIG5vIHBlcmlvZC5cbmV4cG9ydCBmdW5jdGlvbiBkcmlsbERvd25QYXRoKFxuICBkcmlsbDogQ29tcG9uZW50RGF0YURyaWxsIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgY2xpY2s6IFJlcG9ydE1hcmtDbGljayxcbik6IFJlcG9ydERyaWxsU3RlcFtdIHwgbnVsbCB7XG4gIGNvbnN0IHBvaW50ID0gZHJpbGxQb2ludChjbGljaywgZHJpbGwpO1xuXG4gIGlmICghZHJpbGw/Lm5leHQgfHwgIXBvaW50Py5wZXJpb2QpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgLi4uZHJpbGwucGF0aC5tYXAoKGNydW1iKSA9PiAoeyBsZXZlbDogY3J1bWIubGV2ZWwsIHZhbHVlOiBjcnVtYi52YWx1ZSB9KSksXG4gICAgeyBsZXZlbDogZHJpbGwubGV2ZWwsIHZhbHVlOiBwb2ludC5wZXJpb2QgfSxcbiAgXTtcbn1cblxuLy8gVGhlIGV4dHJhY3RlZCBzZXJpZXMgYSBoaXQgaXMgb246IGl0cyBpbmRleCwgJ2JhbmQnIGZvciBhIGNhdGVnb3J5J3Ncbi8vIGVtcHR5IGJhbmQsIG9yIG51bGwgZm9yIHdoYXQgaXMgbm90IGEgbWFyay4gQW4gYXhpcyBjaGFydCdzIHBhcnRpYWxcbi8vIHNlZ21lbnQgbWFwcyB0byB0aGUgc2VyaWVzIGl0IGNvbnRpbnVlczsgYSByZWZlcmVuY2UgY2FycmllciBtYXBzIHRvXG4vLyBub3RoaW5nLiBBIHdhdGVyZmFsbCdzIHN0ZXBzIGFyZSBpdHMgc2Vjb25kIHNlcmllcyAodGhlIGZpcnN0IGlzIHRoZVxuLy8gaW52aXNpYmxlIGJhc2UpOyBhIHBpZSdzIHNsaWNlcyBpdHMgb25seSBvbmUuXG5mdW5jdGlvbiBoaXRTZXJpZXMoY29uZmlnOiBDaGFydENvbmZpZywgZXh0cmFjdGVkOiBFeHRyYWN0ZWRDaGFydFNlcmllcywgaGl0OiBSZXBvcnRDaGFydEhpdCk6IG51bWJlciB8ICdiYW5kJyB8IG51bGwge1xuICBjb25zdCBjaGFydFR5cGUgPSBjb25maWcuY2hhcnRUeXBlID8/ICdiYXInO1xuXG4gIGlmIChoaXQuc2VyaWVzSW5kZXggPT09IG51bGwpIHtcbiAgICByZXR1cm4gY2hhcnRUeXBlID09PSAncGllJyB8fCBjaGFydFR5cGUgPT09ICdkb251dCcgPyBudWxsIDogJ2JhbmQnO1xuICB9XG5cbiAgaWYgKGNoYXJ0VHlwZSA9PT0gJ3dhdGVyZmFsbCcpIHtcbiAgICByZXR1cm4gaGl0LnNlcmllc0luZGV4ID09PSAxICYmIGV4dHJhY3RlZC5zZXJpZXMubGVuZ3RoID8gMCA6IG51bGw7XG4gIH1cblxuICBpZiAoaGl0LnNlcmllc0luZGV4ID49IDAgJiYgaGl0LnNlcmllc0luZGV4IDwgZXh0cmFjdGVkLnNlcmllcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gY2hhcnRUeXBlID09PSAncGllJyB8fCBjaGFydFR5cGUgPT09ICdkb251dCcgPyAwIDogaGl0LnNlcmllc0luZGV4O1xuICB9XG5cbiAgY29uc3Qgb3duZXIgPSBjaGFydFR5cGUgPT09ICdwaWUnIHx8IGNoYXJ0VHlwZSA9PT0gJ2RvbnV0JyA/IG51bGwgOiBwYXJ0aWFsU2VnbWVudE93bmVyKGhpdC5zZXJpZXNJZCk7XG5cbiAgcmV0dXJuIG93bmVyICE9PSBudWxsICYmIG93bmVyIDwgZXh0cmFjdGVkLnNlcmllcy5sZW5ndGggPyBvd25lciA6IG51bGw7XG59XG5cbi8vIFRoZSBjbGlja2VkIGNhdGVnb3J5LCB0aGVuIHRoZSBzcGxpdCB2YWx1ZSB3aGVuIHRoZSBjaGFydCBzcGxpdHMgYnlcbi8vIGFub3RoZXIgY29sdW1uIHRoYW4gaXRzIGF4aXMgKGEgY29sb3JCeSBjaGFydCdzIHNlcmllcyBhcmUgaXRzIGNhdGVnb3JpZXMpLlxuZnVuY3Rpb24gY2hhcnRQb2ludHMoXG4gIGNvbXBvbmVudDogUmVwb3J0Q29tcG9uZW50LFxuICBkYXRhOiBDb21wb25lbnREYXRhLFxuICBjb250ZXh0OiBSZXBvcnRGb3JtYXRDb250ZXh0LFxuICBleHRyYWN0ZWQ6IEV4dHJhY3RlZENoYXJ0U2VyaWVzLFxuICBkYXRhSW5kZXg6IG51bWJlcixcbiAgc2VyaWVzOiBudW1iZXIgfCBudWxsLFxuKTogUmVwb3J0TWFya1BvaW50W10ge1xuICBjb25zdCBjb25maWcgPSBjb21wb25lbnQuY29uZmlnIGFzIENoYXJ0Q29uZmlnO1xuICBjb25zdCB7IHhDb2x1bW4sIGdyb3VwQ29sdW1uIH0gPSBjaGFydENvbHVtbnMoY29uZmlnLCBkYXRhKTtcbiAgY29uc3QgcG9pbnRzID0gW2NhdGVnb3J5UG9pbnQoY29uZmlnLCBkYXRhLCBjb250ZXh0LCBleHRyYWN0ZWQsIHhDb2x1bW4sIGRhdGFJbmRleCldO1xuXG4gIGlmIChzZXJpZXMgIT09IG51bGwgJiYgZ3JvdXBDb2x1bW4gJiYgZ3JvdXBDb2x1bW4gIT09IHhDb2x1bW4pIHtcbiAgICBwb2ludHMucHVzaCh7IGNvbHVtbjogZ3JvdXBDb2x1bW4sIHJhdzogZXh0cmFjdGVkLnJhd0dyb3Vwc1tzZXJpZXNdLCBsYWJlbDogZXh0cmFjdGVkLnNlcmllc1tzZXJpZXNdLm5hbWUgfSk7XG4gIH1cblxuICByZXR1cm4gcG9pbnRzO1xufVxuXG4vLyBUaGUgY2F0ZWdvcnkgYXMgdGhlIHJvd3MgaG9sZCBpdCBhbmQgYXMgdGhlIGF4aXMgd3JvdGUgaXQgKGEgbGFiZWxlZFxuLy8gY29sdW1uJ3MgbGFiZWwpLiBPbiBhIHRpbWUgYXhpcyBpdCBhbHNvIGdpdmVzIHRoZSBwZXJpb2QncyBmaXJzdCBkYXkgYW5kXG4vLyB0aGUgZ3JhaW4sIGFuZCByZWFkcyBhcyB0aGUgdG9vbHRpcCBuYW1lcyBpdCAoJ0phbnVhcnkgMjAyNicpOyBhIHBpZSdzIGFzXG4vLyBpdHMgbGVnZW5kIG5hbWVzIHRoZSBzbGljZSAoY2F0ZWdvcnlMaW5lTGFiZWxzKS5cbmZ1bmN0aW9uIGNhdGVnb3J5UG9pbnQoXG4gIGNvbmZpZzogQ2hhcnRDb25maWcsXG4gIGRhdGE6IENvbXBvbmVudERhdGEsXG4gIGNvbnRleHQ6IFJlcG9ydEZvcm1hdENvbnRleHQsXG4gIGV4dHJhY3RlZDogRXh0cmFjdGVkQ2hhcnRTZXJpZXMsXG4gIGNvbHVtbjogc3RyaW5nLFxuICBkYXRhSW5kZXg6IG51bWJlcixcbik6IFJlcG9ydE1hcmtQb2ludCB7XG4gIGNvbnN0IHJhdyA9IGV4dHJhY3RlZC5yYXdDYXRlZ29yaWVzW2RhdGFJbmRleF07XG4gIGNvbnN0IGxhYmVsID0gZXh0cmFjdGVkLmNhdGVnb3JpZXNbZGF0YUluZGV4XTtcbiAgY29uc3QgZ3JhaW4gPSBpc0NoYXJ0R3JhbnVsYXJpdHkoZGF0YS5ncmFudWxhcml0eSkgPyBkYXRhLmdyYW51bGFyaXR5IDogbnVsbDtcbiAgY29uc3QgcGVyaW9kID0gZ3JhaW4gJiYgcmF3ICE9PSBudWxsICYmIHJhdyAhPT0gdW5kZWZpbmVkID8gU3RyaW5nKHJhdykuc2xpY2UoMCwgMTApIDogJyc7XG5cbiAgaWYgKCFncmFpbiB8fCAhaXNDYWxlbmRhckRheShwZXJpb2QpKSB7XG4gICAgcmV0dXJuIHsgY29sdW1uLCByYXcsIGxhYmVsIH07XG4gIH1cblxuICBjb25zdCBwaWUgPSBjb25maWcuY2hhcnRUeXBlID09PSAncGllJyB8fCBjb25maWcuY2hhcnRUeXBlID09PSAnZG9udXQnO1xuXG4gIHJldHVybiB7XG4gICAgY29sdW1uLFxuICAgIHJhdyxcbiAgICBsYWJlbDogcGllXG4gICAgICA/IGNhdGVnb3J5TGluZUxhYmVscyhleHRyYWN0ZWQuY2F0ZWdvcmllcywgY29uZmlnLCBkYXRhLCBjb250ZXh0LmxvY2FsZSlbZGF0YUluZGV4XSA/PyBsYWJlbFxuICAgICAgOiBmb3JtYXRQZXJpb2RMYWJlbChTdHJpbmcocmF3KSwgZ3JhaW4sIHRydWUsIGNvbnRleHQubG9jYWxlLCBjaGFydERhdGVMYWJlbChjb25maWcpKSxcbiAgICBwZXJpb2QsXG4gICAgZ3JhaW4sXG4gIH07XG59XG5cbi8vIEEgbnVtYmVyIGFzIGEgY2VsbCBob2xkcyBpdCAoYSBudW1iZXIgb3IgbnVtZXJpYyB0ZXh0KSwgZWxzZSBudWxsLlxuZnVuY3Rpb24gbnVtZXJpYyh2YWx1ZTogdW5rbm93bik6IG51bWJlciB8IG51bGwge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBOdW1iZXIodmFsdWUpO1xufVxuXG4vLyBBIGZpbml0ZSBudW1iZXIsIGVsc2UgbnVsbC5cbmZ1bmN0aW9uIGZpbml0ZSh2YWx1ZTogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCk6IG51bWJlciB8IG51bGwge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpID8gdmFsdWUgOiBudWxsO1xufVxuIl19