@hestia-earth/ui-components 0.0.34 → 0.1.0

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 (36) hide show
  1. package/bundles/hestia-earth-ui-components.umd.js +103 -64
  2. package/bundles/hestia-earth-ui-components.umd.js.map +1 -1
  3. package/cycles/cycles-emissions-chart/cycles-emissions-chart.component.d.ts +4 -1
  4. package/cycles/cycles-result/cycles-result.component.d.ts +3 -1
  5. package/esm2015/bibliographies/bibliographies-search-confirm/bibliographies-search-confirm.component.js +5 -4
  6. package/esm2015/common/blank-node-state/blank-node-state.component.js +5 -4
  7. package/esm2015/common/blank-node-state-notice/blank-node-state-notice.component.js +5 -4
  8. package/esm2015/common/blank-node-value-delta/blank-node-value-delta.component.js +5 -4
  9. package/esm2015/common/link-key-value/link-key-value.component.js +5 -4
  10. package/esm2015/common/schema-version-link/schema-version-link.component.js +5 -4
  11. package/esm2015/common/social-tags/social-tags.component.js +5 -4
  12. package/esm2015/common/unit-converter/unit-converter.component.js +5 -4
  13. package/esm2015/cycles/cycles-completeness/cycles-completeness.component.js +5 -4
  14. package/esm2015/cycles/cycles-emissions-chart/cycles-emissions-chart.component.js +9 -5
  15. package/esm2015/cycles/cycles-functional-unit-measure/cycles-functional-unit-measure.component.js +5 -4
  16. package/esm2015/cycles/cycles-result/cycles-result.component.js +10 -8
  17. package/esm2015/engine/engine-orchestrator-edit/engine-orchestrator-edit.component.js +5 -4
  18. package/esm2015/engine/engine-requirements-form/engine-requirements-form.component.js +5 -4
  19. package/esm2015/files/files-form/files-form.component.js +5 -4
  20. package/esm2015/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.js +9 -5
  21. package/esm2015/impact-assessments/impact-assessments-indicators-chart/impact-assessments-indicators-chart.component.js +9 -5
  22. package/esm2015/node/node-csv-export-confirm/node-csv-export-confirm.component.js +5 -4
  23. package/esm2015/node/node-csv-select-headers/node-csv-select-headers.component.js +5 -4
  24. package/esm2015/node/node-diffs/node-diffs.component.js +5 -4
  25. package/esm2015/node/node-icon/node-icon.component.js +5 -4
  26. package/esm2015/node/node-link/node-link.component.js +5 -4
  27. package/esm2015/node/node-logs-file/node-logs-file.component.js +5 -4
  28. package/esm2015/node/node-missing-lookup-factors/node-missing-lookup-factors.component.js +5 -4
  29. package/esm2015/node/node-value-details/node-value-details.component.js +5 -4
  30. package/esm2015/search/search.model.js +3 -3
  31. package/esm2015/sites/sites-maps/sites-maps.component.js +5 -4
  32. package/fesm2015/hestia-earth-ui-components.js +101 -65
  33. package/fesm2015/hestia-earth-ui-components.js.map +1 -1
  34. package/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.d.ts +4 -2
  35. package/impact-assessments/impact-assessments-indicators-chart/impact-assessments-indicators-chart.component.d.ts +4 -1
  36. package/package.json +6 -6
@@ -44,7 +44,8 @@ const toCsv = (logs) => [
44
44
  .map(v => v.join(','))
45
45
  ].join('\n');
46
46
  export class ImpactAssessmentsIndicatorBreakdownChartComponent {
47
- constructor(domSanitizer, searchService, nodeService) {
47
+ constructor(ngZone, domSanitizer, searchService, nodeService) {
48
+ this.ngZone = ngZone;
48
49
  this.domSanitizer = domSanitizer;
49
50
  this.searchService = searchService;
50
51
  this.nodeService = nodeService;
@@ -90,7 +91,7 @@ export class ImpactAssessmentsIndicatorBreakdownChartComponent {
90
91
  get id() {
91
92
  return this.impactAssessment['@id'] || this.impactAssessment.id;
92
93
  }
93
- updateChart() {
94
+ initChart() {
94
95
  var _a, _b, _c;
95
96
  const logs = this.logs
96
97
  .filter(({ indicator }) => indicator === this.selectedTerm['@id'])
@@ -169,8 +170,11 @@ export class ImpactAssessmentsIndicatorBreakdownChartComponent {
169
170
  }
170
171
  });
171
172
  }
173
+ updateChart() {
174
+ this.ngZone.runOutsideAngular(() => this.initChart());
175
+ }
172
176
  }
173
- ImpactAssessmentsIndicatorBreakdownChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ImpactAssessmentsIndicatorBreakdownChartComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.HeSearchService }, { token: i3.HeNodeService }], target: i0.ɵɵFactoryTarget.Component });
177
+ ImpactAssessmentsIndicatorBreakdownChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ImpactAssessmentsIndicatorBreakdownChartComponent, deps: [{ token: i0.NgZone }, { token: i1.DomSanitizer }, { token: i2.HeSearchService }, { token: i3.HeNodeService }], target: i0.ɵɵFactoryTarget.Component });
174
178
  ImpactAssessmentsIndicatorBreakdownChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ImpactAssessmentsIndicatorBreakdownChartComponent, selector: "he-impact-assessments-indicator-breakdown-chart", inputs: { impactAssessment: "impactAssessment", indicators: "indicators" }, viewQueries: [{ propertyName: "chartRef", first: true, predicate: ["chart"], descendants: true }], ngImport: i0, template: "<div class=\"p-3\" [class.is-hidden]=\"loading || !terms?.length\">\n <div class=\"columns\">\n <div class=\"column\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <span class=\"button is-small is-static\">Select an Indicator</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small\">\n <select (change)=\"updateChart()\" [(ngModel)]=\"selectedTerm\" id=\"selectedTerm\">\n <option *ngFor=\"let term of terms\" [ngValue]=\"term\">{{term.name}} ({{term.units}})</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a class=\"button is-dark is-outlined is-small\" [href]=\"csvContent\" [download]=\"id + '-logs.csv'\">\n <fa-icon icon=\"download\"></fa-icon>\n <span class=\"pl-2\">Download All (CSV)</span>\n </a>\n </div>\n </div>\n\n <div class=\"mt-1\">\n <p *ngIf=\"noData\" class=\"has-text-centered\">No breakdown available for {{selectedTerm?.name}}.</p>\n <div class=\"chart-container h-100\">\n <canvas #chart></canvas>\n </div>\n </div>\n</div>\n\n<ng-container *ngIf=\"loading\">\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n</ng-container>\n", styles: [":host{display:block;overflow:visible}.chart-container{height:400px;position:relative}\n"], components: [{ type: i4.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }], directives: [{ type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
175
179
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ImpactAssessmentsIndicatorBreakdownChartComponent, decorators: [{
176
180
  type: Component,
@@ -179,7 +183,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
179
183
  templateUrl: './impact-assessments-indicator-breakdown-chart.component.html',
180
184
  styleUrls: ['./impact-assessments-indicator-breakdown-chart.component.scss']
181
185
  }]
182
- }], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i2.HeSearchService }, { type: i3.HeNodeService }]; }, propDecorators: { chartRef: [{
186
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.DomSanitizer }, { type: i2.HeSearchService }, { type: i3.HeNodeService }]; }, propDecorators: { chartRef: [{
183
187
  type: ViewChild,
184
188
  args: ['chart']
185
189
  }], impactAssessment: [{
@@ -187,4 +191,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
187
191
  }], indicators: [{
188
192
  type: Input
189
193
  }] } });
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvci1icmVha2Rvd24tY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltcGFjdC1hc3Nlc3NtZW50cy9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydC9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0L2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEYsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sZUFBZSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQW1ELFFBQVEsRUFBUSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNySCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUdyRSxPQUFPLEVBQUUsS0FBSyxFQUFF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R0FBRyxHQUFHLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDOzRCQUNsRCxPQUFPLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUNqRSxDQUFDO3FCQUNGO2lCQUNGO2dCQUNELE1BQU0sRUFBRTtvQkFDTixLQUFLLEVBQUUsQ0FBQzs0QkFDTixPQUFPLEVBQUUsSUFBSTt5QkFDZCxDQUFDO29CQUNGLEtBQUssRUFBRSxDQUFDOzRCQUNOLFFBQVEsRUFBRSxNQUFNO3lCQUNqQixDQUFDO2lCQUNIO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOzsrSUFuS1UsaURBQWlEO21JQUFqRCxpREFBaUQsc1FDL0Q5RCwyMkNBcUNBOzRGRDBCYSxpREFBaUQ7a0JBTDdELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlEQUFpRDtvQkFDM0QsV0FBVyxFQUFFLCtEQUErRDtvQkFDNUUsU0FBUyxFQUFFLENBQUMsK0RBQStELENBQUM7aUJBQzdFOzZKQU1TLFFBQVE7c0JBRGYsU0FBUzt1QkFBQyxPQUFPO2dCQUtYLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFHQyxVQUFVO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZVJlc291cmNlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBncm91cEJ5LCBtYXAsIG1lcmdlQWxsLCBtZXJnZU1hcCwgdG9BcnJheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENoYXJ0IH0gZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0IENoYXJ0RGF0YUxhYmVscyBmcm9tICdjaGFydGpzLXBsdWdpbi1kYXRhbGFiZWxzJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELCBJbmRpY2F0b3IsIElUZXJtSlNPTkxELCBOb2RlVHlwZSwgVGVybSwgVGVybVRlcm1UeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgdG9QcmVjaXNpb24gfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcblxuaW1wb3J0IHsgbWF0Y2hUZXJtVHlwZSwgbWF0Y2hUeXBlIH0gZnJvbSAnLi4vLi4vc2VhcmNoL3NlYXJjaC5tb2RlbCc7XG5pbXBvcnQgeyBIZVNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVOb2RlU2VydmljZSB9IGZyb20gJy4uLy4uL25vZGUvbm9kZS5zZXJ2aWNlJztcbmltcG9ydCB7IExldmVsLCBwYXJzZUxpbmVzLCBwYXJzZU1lc3NhZ2UgfSBmcm9tICcuLi8uLi9jb21tb24vbG9ncy11dGlscyc7XG5pbXBvcnQgeyBsaXN0Q29sb3IgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMnO1xuXG5pbnRlcmZhY2UgSUxvZyB7XG4gIGluZGljYXRvcjogc3RyaW5nO1xuICBlbWlzc2lvbjogc3RyaW5nO1xuICBjb2VmZmljaWVudDogbnVtYmVyO1xuICB2YWx1ZTogbnVtYmVyO1xuICAvLyBzdG9yZSBhbGwgaW5kaWNhdG9ycyB3aXRoIGlucHV0c1xuICBpbnB1dHM/OiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZhbHVlOiBudW1iZXI7XG4gIH1bXTtcbiAgaW5wdXRzVmFsdWU/OiBudW1iZXI7XG59XG5cbmNvbnN0IHBhcnNlTG9nID0gKGRhdGE6IGFueSk6IElMb2cgPT4gKHtcbiAgaW5kaWNhdG9yOiBkYXRhWydrZXkvdGVybSddIHx8IGRhdGEudGVybSB8fCBkYXRhLmluZGljYXRvcixcbiAgZW1pc3Npb246IGRhdGEubm9kZSxcbiAgY29lZmZpY2llbnQ6ICtkYXRhLmNvZWZmaWNpZW50LFxuICB2YWx1ZTogK2RhdGEudmFsdWUgKiArZGF0YS5jb2VmZmljaWVudFxufSk7XG5cbmNvbnN0IGZpbHRlclRlcm1UeXBlcyA9IFtcbiAgVGVybVRlcm1UeXBlLmVtaXNzaW9uLFxuICBUZXJtVGVybVR5cGUuY2hhcmFjdGVyaXNlZEluZGljYXRvclxuXTtcblxuY29uc3QgdG9Dc3YgPSAobG9nczogSUxvZ1tdKSA9PiBbXG4gIFtcbiAgICAnTW9kZWwnLFxuICAgICdJbXBhY3QnLFxuICAgICdWYWx1ZScsXG4gICAgJ0lucHV0cycsXG4gICAgJ0lucHV0cyB2YWx1ZSdcbiAgXS5qb2luKCcsJyksXG4gIC4uLmxvZ3NcbiAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRpY2F0b3IubG9jYWxlQ29tcGFyZShiLmluZGljYXRvcikpXG4gICAgLmZsYXRNYXAoKHsgaW5kaWNhdG9yLCBlbWlzc2lvbiwgdmFsdWUsIGlucHV0cyB9KSA9PiBbXG4gICAgICBbaW5kaWNhdG9yLCBlbWlzc2lvbiwgdmFsdWUsICcnLCAnJ10sXG4gICAgICAuLi4oaW5wdXRzLm1hcCh2ID0+IFtpbmRpY2F0b3IsIGVtaXNzaW9uLCAnJywgdi5uYW1lLCB2LnZhbHVlXSkpXG4gICAgXSlcbiAgICAubWFwKHYgPT4gdi5qb2luKCcsJykpXG5dLmpvaW4oJ1xcbicpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSW1wYWN0QXNzZXNzbWVudHNJbmRpY2F0b3JCcmVha2Rvd25DaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgbG9nczogSUxvZ1tdID0gW107XG4gIHByaXZhdGUgZW1pc3Npb25zOiBJVGVybUpTT05MRFtdID0gW107XG5cbiAgQFZpZXdDaGlsZCgnY2hhcnQnKVxuICBwcml2YXRlIGNoYXJ0UmVmPzogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBjaGFydDogYW55O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpbXBhY3RBc3Nlc3NtZW50PzogSUltcGFjdEFzc2Vzc21lbnRKU09OTEQ7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpbmRpY2F0b3JzOiBJbmRpY2F0b3JbXSA9IFtdO1xuXG4gIHB1YmxpYyBsb2FkaW5nID0gdHJ1ZTtcbiAgcHVibGljIHRlcm1zOiBUZXJtW10gPSBbXTtcbiAgcHVibGljIHNlbGVjdGVkVGVybT86IFRlcm07XG4gIHB1YmxpYyBub0RhdGEgPSBmYWxzZTtcbiAgcHVibGljIGNzdkNvbnRlbnQ/OiBTYWZlUmVzb3VyY2VVcmw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IEhlU2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIG5vZGVTZXJ2aWNlOiBIZU5vZGVTZXJ2aWNlXG4gICkgeyB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy50ZXJtcyA9IHRoaXMuaW5kaWNhdG9ycy5tYXAoKHsgdGVybSB9KSA9PiB0ZXJtISk7XG5cbiAgICB0aGlzLmxvZ3MgPSAoYXdhaXQgb2Yoe1xuICAgICAgLi4udGhpcy5pbXBhY3RBc3Nlc3NtZW50LFxuICAgICAgZGF0YVN0YXRlOiBEYXRhU3RhdGUucmVjYWxjdWxhdGVkXG4gICAgfSkucGlwZShcbiAgICAgIG1lcmdlTWFwKG5vZGUgPT4gdGhpcy5ub2RlU2VydmljZS5nZXRMb2cobm9kZSkpLFxuICAgICAgbWFwKHZhbHVlID0+IHZhbHVlID8gcGFyc2VMaW5lcyh2YWx1ZSkgOiBbXSksXG4gICAgICBtZXJnZUFsbCgpLFxuICAgICAgZmlsdGVyKCh7IGRhdGEgfSkgPT4gZGF0YS5sb2dnZXIgPT09ICdoZXN0aWFfZWFydGgubW9kZWxzJyAmJiBkYXRhLmxldmVsID09PSBMZXZlbC5kZWJ1ZyksXG4gICAgICBtYXAoKHsgZGF0YSB9KSA9PiBwYXJzZU1lc3NhZ2UoZGF0YS5tZXNzYWdlKSksXG4gICAgICBmaWx0ZXIobWVzc2FnZSA9PiAnbm9kZScgaW4gbWVzc2FnZSksXG4gICAgICBtYXAocGFyc2VMb2cpLFxuICAgICAgZmlsdGVyKGxvZyA9PiAhIWxvZy5pbmRpY2F0b3IgJiYgISFsb2cuZW1pc3Npb24gJiYgIWlzTmFOKGxvZy52YWx1ZSkgJiYgbG9nLnZhbHVlID4gMCksXG4gICAgICBncm91cEJ5KGxvZyA9PiBbbG9nLmluZGljYXRvciwgbG9nLmVtaXNzaW9uXS5qb2luKCcvJykpLFxuICAgICAgbWVyZ2VNYXAoZ3JvdXAgPT4gZ3JvdXAucGlwZSh0b0FycmF5KCkpKSxcbiAgICAgIG1hcCgodmFsdWVzOiBJTG9nW10pID0+IHtcbiAgICAgICAgY29uc3QgbG9nID0gdmFsdWVzWzBdO1xuICAgICAgICBjb25zdCB0b3RhbCA9IHZhbHVlcy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyLnZhbHVlLCAwKTtcbiAgICAgICAgY29uc3QgaW5wdXRzID0gKHRoaXMuaW1wYWN0QXNzZXNzbWVudC5lbWlzc2lvbnNSZXNvdXJjZVVzZSB8fCBbXSlcbiAgICAgICAgICAuZmlsdGVyKHYgPT4gdi50ZXJtWydAaWQnXSA9PT0gbG9nLmVtaXNzaW9uICYmIHYuaW5wdXRzPy5sZW5ndGgpXG4gICAgICAgICAgLm1hcCh2ID0+ICh7IG5hbWU6IHYuaW5wdXRzLm1hcChpID0+IGlbJ0BpZCddKS5qb2luKCc7JyksIHZhbHVlOiB2LnZhbHVlICogbG9nLmNvZWZmaWNpZW50IH0pKTtcbiAgICAgICAgY29uc3QgaW5wdXRzVmFsdWUgPSBpbnB1dHMucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2ICsgY3Vyci52YWx1ZSwgMCk7XG4gICAgICAgIHJldHVybiB7IC4uLmxvZywgdmFsdWU6IHRvdGFsLCBpbnB1dHMsIGlucHV0c1ZhbHVlIH07XG4gICAgICB9KSxcbiAgICAgIHRvQXJyYXkoKVxuICAgICkudG9Qcm9taXNlKCkpIGFzIElMb2dbXTtcbiAgICB0aGlzLmNzdkNvbnRlbnQgPSB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoXG4gICAgICBgZGF0YTp0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCwke2VuY29kZVVSSUNvbXBvbmVudCh0b0Nzdih0aGlzLmxvZ3MpKX1gXG4gICAgKTtcblxuICAgIGNvbnN0IHsgcmVzdWx0czogZW1pc3Npb25zIH0gPSBhd2FpdCB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoPElUZXJtSlNPTkxELCBOb2RlVHlwZS5UZXJtPih7XG4gICAgICBmaWVsZHM6IFsnQHR5cGUnLCAnQGlkJywgJ25hbWUnXSxcbiAgICAgIGxpbWl0OiAxMDAwLFxuICAgICAgcXVlcnk6IHtcbiAgICAgICAgYm9vbDoge1xuICAgICAgICAgIG11c3Q6IFtcbiAgICAgICAgICAgIG1hdGNoVHlwZShOb2RlVHlwZS5UZXJtKVxuICAgICAgICAgIF0sXG4gICAgICAgICAgc2hvdWxkOiBmaWx0ZXJUZXJtVHlwZXMubWFwKHRlcm1UeXBlID0+IG1hdGNoVGVybVR5cGUodGVybVR5cGUpKSxcbiAgICAgICAgICBtaW5pbXVtX3Nob3VsZF9tYXRjaDogMVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5lbWlzc2lvbnMgPSBlbWlzc2lvbnM7XG5cbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcblxuICAgIHRoaXMuc2VsZWN0ZWRUZXJtID0gdGhpcy50ZXJtc1swXTtcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLmltcGFjdEFzc2Vzc21lbnQhWydAaWQnXSB8fCAodGhpcy5pbXBhY3RBc3Nlc3NtZW50IGFzIGFueSkuaWQ7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQ2hhcnQoKSB7XG4gICAgY29uc3QgbG9ncyA9IHRoaXMubG9nc1xuICAgICAgLmZpbHRlcigoeyBpbmRpY2F0b3IgfSkgPT4gaW5kaWNhdG9yID09PSB0aGlzLnNlbGVjdGVkVGVybSFbJ0BpZCddKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGIudmFsdWUgLSBhLnZhbHVlKTtcbiAgICB0aGlzLm5vRGF0YSA9IGxvZ3MubGVuZ3RoID09PSAwO1xuXG4gICAgY29uc3QgdG90YWwgPSBsb2dzLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldiArIGN1cnIudmFsdWUsIDApO1xuICAgIGNvbnN0IGxhYmVscyA9IGxvZ3MubWFwKCh7IGVtaXNzaW9uIH0pID0+IHRoaXMuZW1pc3Npb25zLmZpbmQodiA9PiB2WydAaWQnXSA9PT0gZW1pc3Npb24pPy5uYW1lIHx8IGVtaXNzaW9uKTtcblxuICAgIC8vIGRpc3BsYXkgdGhlIGJyZWFrZG93biBieSBpbnB1dFxuICAgIC8vIGNvbnN0IGlucHV0cyA9IGxvZ3MuZmxhdE1hcCh2ID0+IHYuaW5wdXRzLm1hcChpID0+IGkubmFtZSkpO1xuICAgIC8vIGNvbnN0IGRhdGFzZXRzID0gW1xuICAgIC8vICAgLi4uaW5wdXRzLm1hcCgoaW5wdXQsIGluZGV4KSA9PiAoe1xuICAgIC8vICAgICBsYWJlbDogaW5wdXQsXG4gICAgLy8gICAgIGRhdGE6IGxvZ3MubWFwKGxvZyA9PiBsb2cuaW5wdXRzLmZpbmQoKHsgbmFtZSB9KSA9PiBuYW1lID09PSBpbnB1dCk/LnZhbHVlIHx8IDApLFxuICAgIC8vICAgICBiYWNrZ3JvdW5kQ29sb3I6IGl0ZW1Db2xvcihpbmRleCksXG4gICAgLy8gICAgIGJvcmRlckNvbG9yOiBpdGVtQ29sb3IoaW5kZXgpXG4gICAgLy8gICB9KSksXG4gICAgLy8gICAvLyBhZGQgZGF0YXNldCBmb3IgcmVzdCBub3QgbGlua2VkIHRvIGlucHV0c1xuICAgIC8vICAge1xuICAgIC8vICAgICBsYWJlbDogdGhpcy5zZWxlY3RlZFRlcm0/Lm5hbWUgPz8gJycsXG4gICAgLy8gICAgIGRhdGE6IGxvZ3MubWFwKGxvZyA9PiBsb2cudmFsdWUgLSBsb2cuaW5wdXRzVmFsdWUpLFxuICAgIC8vICAgICBiYWNrZ3JvdW5kQ29sb3I6IGl0ZW1Db2xvcigtMSksXG4gICAgLy8gICAgIGJvcmRlckNvbG9yOiBpdGVtQ29sb3IoLTEpXG4gICAgLy8gICB9XG4gICAgLy8gXTtcblxuICAgIGNvbnN0IGRhdGFzZXRzID0gW3tcbiAgICAgIGxhYmVsOiB0aGlzLnNlbGVjdGVkVGVybT8ubmFtZSA/PyAnJyxcbiAgICAgIGRhdGE6IGxvZ3MubWFwKCh7IHZhbHVlIH0pID0+IHZhbHVlKSxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogbG9ncy5tYXAobGlzdENvbG9yKSxcbiAgICAgIGJvcmRlckNvbG9yOiBsb2dzLm1hcChsaXN0Q29sb3IpXG4gICAgfV07XG5cbiAgICBpZiAodGhpcy5jaGFydCkge1xuICAgICAgdGhpcy5jaGFydC5kZXN0cm95KCk7XG4gICAgfVxuICAgIHRoaXMuY2hhcnQgPSBuZXcgQ2hhcnQodGhpcy5jaGFydFJlZj8ubmF0aXZlRWxlbWVudCwge1xuICAgICAgdHlwZTogJ2hvcml6b250YWxCYXInLFxuICAgICAgZGF0YToge1xuICAgICAgICBsYWJlbHMsXG4gICAgICAgIGRhdGFzZXRzXG4gICAgICB9LFxuICAgICAgcGx1Z2luczogW0NoYXJ0RGF0YUxhYmVsc10sXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgICBkYXRhbGFiZWxzOiB7XG4gICAgICAgICAgICBjb2xvcjogJ2JsYWNrJyxcbiAgICAgICAgICAgIGZvcm1hdHRlcjogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHJhdGlvID0gdG9QcmVjaXNpb24odmFsdWUgKiAxMDAgLyB0b3RhbCwgMik7XG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+IDAgPyBgJHt0b1ByZWNpc2lvbih2YWx1ZSwgMyl9ICgke3JhdGlvfSUpYCA6ICcnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFsaWduOiAnZW5kJ1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcbiAgICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogZmFsc2UsXG4gICAgICAgIGxlZ2VuZDoge1xuICAgICAgICAgIGRpc3BsYXk6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHRvb2x0aXBzOiB7XG4gICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgICAgICB0aXRsZTogKHRvb2x0aXBJdGVtcywgZGF0YSkgPT4gZGF0YS5kYXRhc2V0cyFbdG9vbHRpcEl0ZW1zWzBdLmRhdGFzZXRJbmRleCFdPy5sYWJlbCB8fCAnJyxcbiAgICAgICAgICAgIGxhYmVsOiAodG9vbHRpcEl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSArKHRvb2x0aXBJdGVtLnZhbHVlIHx8ICcwJyk7XG4gICAgICAgICAgICAgIGNvbnN0IHJhdGlvID0gdG9QcmVjaXNpb24odmFsdWUgKiAxMDAgLyB0b3RhbCwgMik7XG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+IDAgPyBgJHt0b1ByZWNpc2lvbih2YWx1ZSwgMyl9ICgke3JhdGlvfSUpYCA6ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc2NhbGVzOiB7XG4gICAgICAgICAgeEF4ZXM6IFt7XG4gICAgICAgICAgICBkaXNwbGF5OiB0cnVlXG4gICAgICAgICAgfV0sXG4gICAgICAgICAgeUF4ZXM6IFt7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2xlZnQnXG4gICAgICAgICAgfV1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicC0zXCIgW2NsYXNzLmlzLWhpZGRlbl09XCJsb2FkaW5nIHx8ICF0ZXJtcz8ubGVuZ3RoXCI+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW5zXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1zdGF0aWNcIj5TZWxlY3QgYW4gSW5kaWNhdG9yPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2wgaXMtZXhwYW5kZWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLWZ1bGx3aWR0aCBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgPHNlbGVjdCAoY2hhbmdlKT1cInVwZGF0ZUNoYXJ0KClcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVGVybVwiIGlkPVwic2VsZWN0ZWRUZXJtXCI+XG4gICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHRlcm0gb2YgdGVybXNcIiBbbmdWYWx1ZV09XCJ0ZXJtXCI+e3t0ZXJtLm5hbWV9fSAoe3t0ZXJtLnVuaXRzfX0pPC9vcHRpb24+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvd1wiPlxuICAgICAgPGEgY2xhc3M9XCJidXR0b24gaXMtZGFyayBpcy1vdXRsaW5lZCBpcy1zbWFsbFwiIFtocmVmXT1cImNzdkNvbnRlbnRcIiBbZG93bmxvYWRdPVwiaWQgKyAnLWxvZ3MuY3N2J1wiPlxuICAgICAgICA8ZmEtaWNvbiBpY29uPVwiZG93bmxvYWRcIj48L2ZhLWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGwtMlwiPkRvd25sb2FkIEFsbCAoQ1NWKTwvc3Bhbj5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm10LTFcIj5cbiAgICA8cCAqbmdJZj1cIm5vRGF0YVwiIGNsYXNzPVwiaGFzLXRleHQtY2VudGVyZWRcIj5ObyBicmVha2Rvd24gYXZhaWxhYmxlIGZvciB7e3NlbGVjdGVkVGVybT8ubmFtZX19LjwvcD5cbiAgICA8ZGl2IGNsYXNzPVwiY2hhcnQtY29udGFpbmVyIGgtMTAwXCI+XG4gICAgICA8Y2FudmFzICNjaGFydD48L2NhbnZhcz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdcIj5cbiAgPGRpdiBjbGFzcz1cImhhcy10ZXh0LWNlbnRlciBweS0zXCI+XG4gICAgPGZhLWljb24gaWNvbj1cInNwaW5uZXJcIiBbcHVsc2VdPVwidHJ1ZVwiIHNpemU9XCJsZ1wiPjwvZmEtaWNvbj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvci1icmVha2Rvd24tY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltcGFjdC1hc3Nlc3NtZW50cy9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydC9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0L2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBa0IsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqQyxPQUFPLGVBQWUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFtRCxRQUFRLEVBQVEsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWxELE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHckUsT0FBTyxFQUFFLEtBQUssRUFB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VUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDNUMsUUFBUSxFQUFFLEVBQ1YsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxxQkFBcUIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFDekYsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUM3QyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLEVBQ3BDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFDYixNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFDdEYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDdkQsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQ3hDLEdBQUcsQ0FBQyxDQUFDLE1BQWMsRUFBRSxFQUFFO2dCQUNyQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENB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QUMxQyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQ2xELE9BQU8sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ2pFLENBQUM7cUJBQ0Y7aUJBQ0Y7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOLEtBQUssRUFBRSxDQUFDOzRCQUNOLE9BQU8sRUFBRSxJQUFJO3lCQUNkLENBQUM7b0JBQ0YsS0FBSyxFQUFFLENBQUM7NEJBQ04sUUFBUSxFQUFFLE1BQU07eUJBQ2pCLENBQUM7aUJBQ0g7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7K0lBeEtVLGlEQUFpRDttSUFBakQsaURBQWlELHNRQy9EOUQsMjJDQXFDQTs0RkQwQmEsaURBQWlEO2tCQUw3RCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpREFBaUQ7b0JBQzNELFdBQVcsRUFBRSwrREFBK0Q7b0JBQzVFLFNBQVMsRUFBRSxDQUFDLCtEQUErRCxDQUFDO2lCQUM3RTtrTEFNUyxRQUFRO3NCQURmLFNBQVM7dUJBQUMsT0FBTztnQkFLWCxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBR0MsVUFBVTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE5nWm9uZSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZVJlc291cmNlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBncm91cEJ5LCBtYXAsIG1lcmdlQWxsLCBtZXJnZU1hcCwgdG9BcnJheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENoYXJ0IH0gZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0IENoYXJ0RGF0YUxhYmVscyBmcm9tICdjaGFydGpzLXBsdWdpbi1kYXRhbGFiZWxzJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELCBJbmRpY2F0b3IsIElUZXJtSlNPTkxELCBOb2RlVHlwZSwgVGVybSwgVGVybVRlcm1UeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgdG9QcmVjaXNpb24gfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcblxuaW1wb3J0IHsgbWF0Y2hUZXJtVHlwZSwgbWF0Y2hUeXBlIH0gZnJvbSAnLi4vLi4vc2VhcmNoL3NlYXJjaC5tb2RlbCc7XG5pbXBvcnQgeyBIZVNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVOb2RlU2VydmljZSB9IGZyb20gJy4uLy4uL25vZGUvbm9kZS5zZXJ2aWNlJztcbmltcG9ydCB7IExldmVsLCBwYXJzZUxpbmVzLCBwYXJzZU1lc3NhZ2UgfSBmcm9tICcuLi8uLi9jb21tb24vbG9ncy11dGlscyc7XG5pbXBvcnQgeyBsaXN0Q29sb3IgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMnO1xuXG5pbnRlcmZhY2UgSUxvZyB7XG4gIGluZGljYXRvcjogc3RyaW5nO1xuICBlbWlzc2lvbjogc3RyaW5nO1xuICBjb2VmZmljaWVudDogbnVtYmVyO1xuICB2YWx1ZTogbnVtYmVyO1xuICAvLyBzdG9yZSBhbGwgaW5kaWNhdG9ycyB3aXRoIGlucHV0c1xuICBpbnB1dHM/OiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZhbHVlOiBudW1iZXI7XG4gIH1bXTtcbiAgaW5wdXRzVmFsdWU/OiBudW1iZXI7XG59XG5cbmNvbnN0IHBhcnNlTG9nID0gKGRhdGE6IGFueSk6IElMb2cgPT4gKHtcbiAgaW5kaWNhdG9yOiBkYXRhWydrZXkvdGVybSddIHx8IGRhdGEudGVybSB8fCBkYXRhLmluZGljYXRvcixcbiAgZW1pc3Npb246IGRhdGEubm9kZSxcbiAgY29lZmZpY2llbnQ6ICtkYXRhLmNvZWZmaWNpZW50LFxuICB2YWx1ZTogK2RhdGEudmFsdWUgKiArZGF0YS5jb2VmZmljaWVudFxufSk7XG5cbmNvbnN0IGZpbHRlclRlcm1UeXBlcyA9IFtcbiAgVGVybVRlcm1UeXBlLmVtaXNzaW9uLFxuICBUZXJtVGVybVR5cGUuY2hhcmFjdGVyaXNlZEluZGljYXRvclxuXTtcblxuY29uc3QgdG9Dc3YgPSAobG9nczogSUxvZ1tdKSA9PiBbXG4gIFtcbiAgICAnTW9kZWwnLFxuICAgICdJbXBhY3QnLFxuICAgICdWYWx1ZScsXG4gICAgJ0lucHV0cycsXG4gICAgJ0lucHV0cyB2YWx1ZSdcbiAgXS5qb2luKCcsJyksXG4gIC4uLmxvZ3NcbiAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRpY2F0b3IubG9jYWxlQ29tcGFyZShiLmluZGljYXRvcikpXG4gICAgLmZsYXRNYXAoKHsgaW5kaWNhdG9yLCBlbWlzc2lvbiwgdmFsdWUsIGlucHV0cyB9KSA9PiBbXG4gICAgICBbaW5kaWNhdG9yLCBlbWlzc2lvbiwgdmFsdWUsICcnLCAnJ10sXG4gICAgICAuLi4oaW5wdXRzLm1hcCh2ID0+IFtpbmRpY2F0b3IsIGVtaXNzaW9uLCAnJywgdi5uYW1lLCB2LnZhbHVlXSkpXG4gICAgXSlcbiAgICAubWFwKHYgPT4gdi5qb2luKCcsJykpXG5dLmpvaW4oJ1xcbicpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSW1wYWN0QXNzZXNzbWVudHNJbmRpY2F0b3JCcmVha2Rvd25DaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgbG9nczogSUxvZ1tdID0gW107XG4gIHByaXZhdGUgZW1pc3Npb25zOiBJVGVybUpTT05MRFtdID0gW107XG5cbiAgQFZpZXdDaGlsZCgnY2hhcnQnKVxuICBwcml2YXRlIGNoYXJ0UmVmPzogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBjaGFydDogYW55O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpbXBhY3RBc3Nlc3NtZW50PzogSUltcGFjdEFzc2Vzc21lbnRKU09OTEQ7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpbmRpY2F0b3JzOiBJbmRpY2F0b3JbXSA9IFtdO1xuXG4gIHB1YmxpYyBsb2FkaW5nID0gdHJ1ZTtcbiAgcHVibGljIHRlcm1zOiBUZXJtW10gPSBbXTtcbiAgcHVibGljIHNlbGVjdGVkVGVybT86IFRlcm07XG4gIHB1YmxpYyBub0RhdGEgPSBmYWxzZTtcbiAgcHVibGljIGNzdkNvbnRlbnQ/OiBTYWZlUmVzb3VyY2VVcmw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogSGVTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgbm9kZVNlcnZpY2U6IEhlTm9kZVNlcnZpY2VcbiAgKSB7IH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnRlcm1zID0gdGhpcy5pbmRpY2F0b3JzLm1hcCgoeyB0ZXJtIH0pID0+IHRlcm0hKTtcblxuICAgIHRoaXMubG9ncyA9IChhd2FpdCBvZih7XG4gICAgICAuLi50aGlzLmltcGFjdEFzc2Vzc21lbnQsXG4gICAgICBkYXRhU3RhdGU6IERhdGFTdGF0ZS5yZWNhbGN1bGF0ZWRcbiAgICB9KS5waXBlKFxuICAgICAgbWVyZ2VNYXAobm9kZSA9PiB0aGlzLm5vZGVTZXJ2aWNlLmdldExvZyhub2RlKSksXG4gICAgICBtYXAodmFsdWUgPT4gdmFsdWUgPyBwYXJzZUxpbmVzKHZhbHVlKSA6IFtdKSxcbiAgICAgIG1lcmdlQWxsKCksXG4gICAgICBmaWx0ZXIoKHsgZGF0YSB9KSA9PiBkYXRhLmxvZ2dlciA9PT0gJ2hlc3RpYV9lYXJ0aC5tb2RlbHMnICYmIGRhdGEubGV2ZWwgPT09IExldmVsLmRlYnVnKSxcbiAgICAgIG1hcCgoeyBkYXRhIH0pID0+IHBhcnNlTWVzc2FnZShkYXRhLm1lc3NhZ2UpKSxcbiAgICAgIGZpbHRlcihtZXNzYWdlID0+ICdub2RlJyBpbiBtZXNzYWdlKSxcbiAgICAgIG1hcChwYXJzZUxvZyksXG4gICAgICBmaWx0ZXIobG9nID0+ICEhbG9nLmluZGljYXRvciAmJiAhIWxvZy5lbWlzc2lvbiAmJiAhaXNOYU4obG9nLnZhbHVlKSAmJiBsb2cudmFsdWUgPiAwKSxcbiAgICAgIGdyb3VwQnkobG9nID0+IFtsb2cuaW5kaWNhdG9yLCBsb2cuZW1pc3Npb25dLmpvaW4oJy8nKSksXG4gICAgICBtZXJnZU1hcChncm91cCA9PiBncm91cC5waXBlKHRvQXJyYXkoKSkpLFxuICAgICAgbWFwKCh2YWx1ZXM6IElMb2dbXSkgPT4ge1xuICAgICAgICBjb25zdCBsb2cgPSB2YWx1ZXNbMF07XG4gICAgICAgIGNvbnN0IHRvdGFsID0gdmFsdWVzLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldiArIGN1cnIudmFsdWUsIDApO1xuICAgICAgICBjb25zdCBpbnB1dHMgPSAodGhpcy5pbXBhY3RBc3Nlc3NtZW50LmVtaXNzaW9uc1Jlc291cmNlVXNlIHx8IFtdKVxuICAgICAgICAgIC5maWx0ZXIodiA9PiB2LnRlcm1bJ0BpZCddID09PSBsb2cuZW1pc3Npb24gJiYgdi5pbnB1dHM/Lmxlbmd0aClcbiAgICAgICAgICAubWFwKHYgPT4gKHsgbmFtZTogdi5pbnB1dHMubWFwKGkgPT4gaVsnQGlkJ10pLmpvaW4oJzsnKSwgdmFsdWU6IHYudmFsdWUgKiBsb2cuY29lZmZpY2llbnQgfSkpO1xuICAgICAgICBjb25zdCBpbnB1dHNWYWx1ZSA9IGlucHV0cy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyLnZhbHVlLCAwKTtcbiAgICAgICAgcmV0dXJuIHsgLi4ubG9nLCB2YWx1ZTogdG90YWwsIGlucHV0cywgaW5wdXRzVmFsdWUgfTtcbiAgICAgIH0pLFxuICAgICAgdG9BcnJheSgpXG4gICAgKS50b1Byb21pc2UoKSkgYXMgSUxvZ1tdO1xuICAgIHRoaXMuY3N2Q29udGVudCA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChcbiAgICAgIGBkYXRhOnRleHQvaHRtbDtjaGFyc2V0PXV0Zi04LCR7ZW5jb2RlVVJJQ29tcG9uZW50KHRvQ3N2KHRoaXMubG9ncykpfWBcbiAgICApO1xuXG4gICAgY29uc3QgeyByZXN1bHRzOiBlbWlzc2lvbnMgfSA9IGF3YWl0IHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2g8SVRlcm1KU09OTEQsIE5vZGVUeXBlLlRlcm0+KHtcbiAgICAgIGZpZWxkczogWydAdHlwZScsICdAaWQnLCAnbmFtZSddLFxuICAgICAgbGltaXQ6IDEwMDAsXG4gICAgICBxdWVyeToge1xuICAgICAgICBib29sOiB7XG4gICAgICAgICAgbXVzdDogW1xuICAgICAgICAgICAgbWF0Y2hUeXBlKE5vZGVUeXBlLlRlcm0pXG4gICAgICAgICAgXSxcbiAgICAgICAgICBzaG91bGQ6IGZpbHRlclRlcm1UeXBlcy5tYXAodGVybVR5cGUgPT4gbWF0Y2hUZXJtVHlwZSh0ZXJtVHlwZSkpLFxuICAgICAgICAgIG1pbmltdW1fc2hvdWxkX21hdGNoOiAxXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmVtaXNzaW9ucyA9IGVtaXNzaW9ucztcblxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXG4gICAgdGhpcy5zZWxlY3RlZFRlcm0gPSB0aGlzLnRlcm1zWzBdO1xuICAgIHRoaXMudXBkYXRlQ2hhcnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1wYWN0QXNzZXNzbWVudCFbJ0BpZCddIHx8ICh0aGlzLmltcGFjdEFzc2Vzc21lbnQgYXMgYW55KS5pZDtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdENoYXJ0KCkge1xuICAgIGNvbnN0IGxvZ3MgPSB0aGlzLmxvZ3NcbiAgICAgIC5maWx0ZXIoKHsgaW5kaWNhdG9yIH0pID0+IGluZGljYXRvciA9PT0gdGhpcy5zZWxlY3RlZFRlcm0hWydAaWQnXSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBiLnZhbHVlIC0gYS52YWx1ZSk7XG4gICAgdGhpcy5ub0RhdGEgPSBsb2dzLmxlbmd0aCA9PT0gMDtcblxuICAgIGNvbnN0IHRvdGFsID0gbG9ncy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyLnZhbHVlLCAwKTtcbiAgICBjb25zdCBsYWJlbHMgPSBsb2dzLm1hcCgoeyBlbWlzc2lvbiB9KSA9PiB0aGlzLmVtaXNzaW9ucy5maW5kKHYgPT4gdlsnQGlkJ10gPT09IGVtaXNzaW9uKT8ubmFtZSB8fCBlbWlzc2lvbik7XG5cbiAgICAvLyBkaXNwbGF5IHRoZSBicmVha2Rvd24gYnkgaW5wdXRcbiAgICAvLyBjb25zdCBpbnB1dHMgPSBsb2dzLmZsYXRNYXAodiA9PiB2LmlucHV0cy5tYXAoaSA9PiBpLm5hbWUpKTtcbiAgICAvLyBjb25zdCBkYXRhc2V0cyA9IFtcbiAgICAvLyAgIC4uLmlucHV0cy5tYXAoKGlucHV0LCBpbmRleCkgPT4gKHtcbiAgICAvLyAgICAgbGFiZWw6IGlucHV0LFxuICAgIC8vICAgICBkYXRhOiBsb2dzLm1hcChsb2cgPT4gbG9nLmlucHV0cy5maW5kKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gaW5wdXQpPy52YWx1ZSB8fCAwKSxcbiAgICAvLyAgICAgYmFja2dyb3VuZENvbG9yOiBpdGVtQ29sb3IoaW5kZXgpLFxuICAgIC8vICAgICBib3JkZXJDb2xvcjogaXRlbUNvbG9yKGluZGV4KVxuICAgIC8vICAgfSkpLFxuICAgIC8vICAgLy8gYWRkIGRhdGFzZXQgZm9yIHJlc3Qgbm90IGxpbmtlZCB0byBpbnB1dHNcbiAgICAvLyAgIHtcbiAgICAvLyAgICAgbGFiZWw6IHRoaXMuc2VsZWN0ZWRUZXJtPy5uYW1lID8/ICcnLFxuICAgIC8vICAgICBkYXRhOiBsb2dzLm1hcChsb2cgPT4gbG9nLnZhbHVlIC0gbG9nLmlucHV0c1ZhbHVlKSxcbiAgICAvLyAgICAgYmFja2dyb3VuZENvbG9yOiBpdGVtQ29sb3IoLTEpLFxuICAgIC8vICAgICBib3JkZXJDb2xvcjogaXRlbUNvbG9yKC0xKVxuICAgIC8vICAgfVxuICAgIC8vIF07XG5cbiAgICBjb25zdCBkYXRhc2V0cyA9IFt7XG4gICAgICBsYWJlbDogdGhpcy5zZWxlY3RlZFRlcm0/Lm5hbWUgPz8gJycsXG4gICAgICBkYXRhOiBsb2dzLm1hcCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSksXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IGxvZ3MubWFwKGxpc3RDb2xvciksXG4gICAgICBib3JkZXJDb2xvcjogbG9ncy5tYXAobGlzdENvbG9yKVxuICAgIH1dO1xuXG4gICAgaWYgKHRoaXMuY2hhcnQpIHtcbiAgICAgIHRoaXMuY2hhcnQuZGVzdHJveSgpO1xuICAgIH1cbiAgICB0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0KHRoaXMuY2hhcnRSZWY/Lm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgIHR5cGU6ICdob3Jpem9udGFsQmFyJyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbGFiZWxzLFxuICAgICAgICBkYXRhc2V0c1xuICAgICAgfSxcbiAgICAgIHBsdWdpbnM6IFtDaGFydERhdGFMYWJlbHNdLFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBwbHVnaW5zOiB7XG4gICAgICAgICAgZGF0YWxhYmVsczoge1xuICAgICAgICAgICAgY29sb3I6ICdibGFjaycsXG4gICAgICAgICAgICBmb3JtYXR0ZXI6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCByYXRpbyA9IHRvUHJlY2lzaW9uKHZhbHVlICogMTAwIC8gdG90YWwsIDIpO1xuICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPiAwID8gYCR7dG9QcmVjaXNpb24odmFsdWUsIDMpfSAoJHtyYXRpb30lKWAgOiAnJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhbGlnbjogJ2VuZCdcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlc3BvbnNpdmU6IHRydWUsXG4gICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLFxuICAgICAgICBsZWdlbmQ6IHtcbiAgICAgICAgICBkaXNwbGF5OiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICB0b29sdGlwczoge1xuICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgIGNhbGxiYWNrczoge1xuICAgICAgICAgICAgdGl0bGU6ICh0b29sdGlwSXRlbXMsIGRhdGEpID0+IGRhdGEuZGF0YXNldHMhW3Rvb2x0aXBJdGVtc1swXS5kYXRhc2V0SW5kZXghXT8ubGFiZWwgfHwgJycsXG4gICAgICAgICAgICBsYWJlbDogKHRvb2x0aXBJdGVtKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gKyh0b29sdGlwSXRlbS52YWx1ZSB8fCAnMCcpO1xuICAgICAgICAgICAgICBjb25zdCByYXRpbyA9IHRvUHJlY2lzaW9uKHZhbHVlICogMTAwIC8gdG90YWwsIDIpO1xuICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPiAwID8gYCR7dG9QcmVjaXNpb24odmFsdWUsIDMpfSAoJHtyYXRpb30lKWAgOiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHNjYWxlczoge1xuICAgICAgICAgIHhBeGVzOiBbe1xuICAgICAgICAgICAgZGlzcGxheTogdHJ1ZVxuICAgICAgICAgIH1dLFxuICAgICAgICAgIHlBeGVzOiBbe1xuICAgICAgICAgICAgcG9zaXRpb246ICdsZWZ0J1xuICAgICAgICAgIH1dXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVDaGFydCgpIHtcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB0aGlzLmluaXRDaGFydCgpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInAtM1wiIFtjbGFzcy5pcy1oaWRkZW5dPVwibG9hZGluZyB8fCAhdGVybXM/Lmxlbmd0aFwiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b24gaXMtc21hbGwgaXMtc3RhdGljXCI+U2VsZWN0IGFuIEluZGljYXRvcjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sIGlzLWV4cGFuZGVkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1mdWxsd2lkdGggaXMtc21hbGxcIj5cbiAgICAgICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJ1cGRhdGVDaGFydCgpXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRlcm1cIiBpZD1cInNlbGVjdGVkVGVybVwiPlxuICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB0ZXJtIG9mIHRlcm1zXCIgW25nVmFsdWVdPVwidGVybVwiPnt7dGVybS5uYW1lfX0gKHt7dGVybS51bml0c319KTwvb3B0aW9uPlxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3dcIj5cbiAgICAgIDxhIGNsYXNzPVwiYnV0dG9uIGlzLWRhcmsgaXMtb3V0bGluZWQgaXMtc21hbGxcIiBbaHJlZl09XCJjc3ZDb250ZW50XCIgW2Rvd25sb2FkXT1cImlkICsgJy1sb2dzLmNzdidcIj5cbiAgICAgICAgPGZhLWljb24gaWNvbj1cImRvd25sb2FkXCI+PC9mYS1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBsLTJcIj5Eb3dubG9hZCBBbGwgKENTVik8L3NwYW4+XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtdC0xXCI+XG4gICAgPHAgKm5nSWY9XCJub0RhdGFcIiBjbGFzcz1cImhhcy10ZXh0LWNlbnRlcmVkXCI+Tm8gYnJlYWtkb3duIGF2YWlsYWJsZSBmb3Ige3tzZWxlY3RlZFRlcm0/Lm5hbWV9fS48L3A+XG4gICAgPGRpdiBjbGFzcz1cImNoYXJ0LWNvbnRhaW5lciBoLTEwMFwiPlxuICAgICAgPGNhbnZhcyAjY2hhcnQ+PC9jYW52YXM+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nXCI+XG4gIDxkaXYgY2xhc3M9XCJoYXMtdGV4dC1jZW50ZXIgcHktM1wiPlxuICAgIDxmYS1pY29uIGljb249XCJzcGlubmVyXCIgW3B1bHNlXT1cInRydWVcIiBzaXplPVwibGdcIj48L2ZhLWljb24+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -21,7 +21,8 @@ const impactAssessmentDataset = (values, impact, index) => {
21
21
  };
22
22
  };
23
23
  export class ImpactAssessmentsIndicatorsChartComponent {
24
- constructor() {
24
+ constructor(ngZone) {
25
+ this.ngZone = ngZone;
25
26
  this.impactAssessments = [];
26
27
  this.selected = [];
27
28
  this.key = 'impacts';
@@ -52,7 +53,7 @@ export class ImpactAssessmentsIndicatorsChartComponent {
52
53
  this.selectedTerm = this.terms.includes(this.selectedTerm) ? this.selectedTerm : this.terms[0];
53
54
  return this.selectedTerm ? this.updateChart() : null;
54
55
  }
55
- updateChart() {
56
+ initChart() {
56
57
  var _a, _b, _c;
57
58
  const labels = [(_b = (_a = this.selectedTerm) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : ''];
58
59
  const { values } = this.indicatorPerImpactAssessment[this.selectedTerm['@id']];
@@ -88,8 +89,11 @@ export class ImpactAssessmentsIndicatorsChartComponent {
88
89
  }
89
90
  });
90
91
  }
92
+ updateChart() {
93
+ this.ngZone.runOutsideAngular(() => this.initChart());
94
+ }
91
95
  }
92
- ImpactAssessmentsIndicatorsChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ImpactAssessmentsIndicatorsChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
96
+ ImpactAssessmentsIndicatorsChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ImpactAssessmentsIndicatorsChartComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
93
97
  ImpactAssessmentsIndicatorsChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ImpactAssessmentsIndicatorsChartComponent, selector: "he-impact-assessments-indicators-chart", inputs: { impactAssessments: "impactAssessments", selected: "selected", key: "key", filterTermTypes: "filterTermTypes" }, viewQueries: [{ propertyName: "chartRef", first: true, predicate: ["chart"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"p-3\" [class.is-hidden]=\"!terms?.length\">\n <div class=\"field is-horizontal\">\n <div class=\"field-label is-normal\">\n <label class=\"label\" for=\"selectedTerm\">\n <span>Select a column</span>\n </label>\n </div>\n <div class=\"field-body\">\n <div class=\"control\">\n <div class=\"select is-small\">\n <select (change)=\"updateChart()\" [(ngModel)]=\"selectedTerm\" id=\"selectedTerm\">\n <option *ngFor=\"let term of terms\" [ngValue]=\"term\">{{term.name}}</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"mt-1\">\n <div class=\"chart-container\">\n <canvas #chart></canvas>\n </div>\n </div>\n</div>\n", styles: [":host{display:block;overflow:visible}.chart-container{height:400px;position:relative}\n"], directives: [{ type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] });
94
98
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ImpactAssessmentsIndicatorsChartComponent, decorators: [{
95
99
  type: Component,
@@ -98,7 +102,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
98
102
  templateUrl: './impact-assessments-indicators-chart.component.html',
99
103
  styleUrls: ['./impact-assessments-indicators-chart.component.scss']
100
104
  }]
101
- }], propDecorators: { chartRef: [{
105
+ }], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { chartRef: [{
102
106
  type: ViewChild,
103
107
  args: ['chart']
104
108
  }], impactAssessments: [{
@@ -110,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
110
114
  }], filterTermTypes: [{
111
115
  type: Input
112
116
  }] } });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvcnMtY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltcGFjdC1hc3Nlc3NtZW50cy9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9ycy1jaGFydC9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9ycy1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3JzLWNoYXJ0L2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3JzLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixTQUFTLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBRWpILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFakMsT0FBTyxFQUFFLGdCQUFnQixFQUFzQyxNQUFNLHlCQUF5QixDQUFDO0FBQy9GLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFFN0QsTUFBTSxVQUFVLEdBQUcsQ0FBQyxRQUFrQixFQUFFLENBQTBCLEVBQUUsRUFBRSxDQUNwRSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBRXZELE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBK0IsRUFBRSxNQUFzQyxFQUFFLEVBQUUsV0FDOUYsT0FBQSxDQUFDLENBQUEsTUFBQSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLDBDQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FB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QU8sRUFBRSxLQUFLO2lCQUNmO2dCQUNELE1BQU0sRUFBRTtvQkFDTixLQUFLLEVBQUUsQ0FBQzs0QkFDTixPQUFPLEVBQUUsS0FBSzt5QkFDZixDQUFDO29CQUNGLEtBQUssRUFBRSxDQUFDOzRCQUNOLFFBQVEsRUFBRSxNQUFNOzRCQUNoQixLQUFLLEVBQUU7Z0NBQ0wsR0FBRyxFQUFFLENBQUM7NkJBQ1A7eUJBQ0YsQ0FBQztpQkFDSDthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7dUlBcEZVLHlDQUF5QzsySEFBekMseUNBQXlDLGdVQ2pDdEQsOHVCQXdCQTs0RkRTYSx5Q0FBeUM7a0JBTHJELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdDQUF3QztvQkFDbEQsV0FBVyxFQUFFLHNEQUFzRDtvQkFDbkUsU0FBUyxFQUFFLENBQUMsc0RBQXNELENBQUM7aUJBQ3BFOzhCQUdTLFFBQVE7c0JBRGYsU0FBUzt1QkFBQyxPQUFPO2dCQUtWLGlCQUFpQjtzQkFEeEIsS0FBSztnQkFHRSxRQUFRO3NCQURmLEtBQUs7Z0JBR0UsR0FBRztzQkFEVixLQUFLO2dCQUdDLGVBQWU7c0JBRHJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIFZpZXdDaGlsZCwgU2ltcGxlQ2hhbmdlcywgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUltcGFjdEFzc2Vzc21lbnRKU09OTEQsIEluZGljYXRvciwgVGVybSwgVGVybVRlcm1UeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgQ2hhcnQgfSBmcm9tICdjaGFydC5qcyc7XG5cbmltcG9ydCB7IGdyb3VwTm9kZXNCeVRlcm0sIElHcm91cGVkTm9kZXMsIElHcm91cGVkTm9kZXNWYWx1ZXMgfSBmcm9tICcuLi8uLi9jb21tb24vbm9kZS11dGlscyc7XG5pbXBvcnQgeyBpdGVtQ29sb3IsIGRlZmF1bHRMYWJlbCB9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlscyc7XG5cbmNvbnN0IGlzU2VsZWN0ZWQgPSAoc2VsZWN0ZWQ6IHN0cmluZ1tdLCB2OiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCkgPT5cbiAgc2VsZWN0ZWQubGVuZ3RoID09PSAwIHx8IHNlbGVjdGVkLmluY2x1ZGVzKHZbJ0BpZCddKTtcblxuY29uc3QgaW1wYWN0VmFsdWUgPSAoaW1wYWN0OiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgdmFsdWVzOiBJR3JvdXBlZE5vZGVzVmFsdWVzPEluZGljYXRvcj4pID0+XG4gICh2YWx1ZXNbaW1wYWN0WydAaWQnXV0/Lm5vZGVzWzBdIHx8IHsgdmFsdWU6IDAgfSkudmFsdWU7XG5cbmNvbnN0IGltcGFjdE5hbWUgPSAoaW1wYWN0OiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgaW5kZXg6IG51bWJlcikgPT4gYCR7aW5kZXggKyAxfS4gJHtkZWZhdWx0TGFiZWwoaW1wYWN0KX1gO1xuXG5jb25zdCBpbXBhY3RBc3Nlc3NtZW50RGF0YXNldCA9ICh2YWx1ZXM6IElHcm91cGVkTm9kZXNWYWx1ZXM8SW5kaWNhdG9yPiwgaW1wYWN0OiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICBjb25zdCBsYWJlbCA9IGltcGFjdE5hbWUoaW1wYWN0LCBpbmRleCk7XG4gIGNvbnN0IGNvbG9yID0gaXRlbUNvbG9yKGluZGV4KTtcbiAgY29uc3QgZGF0YSA9IFtpbXBhY3RWYWx1ZShpbXBhY3QsIHZhbHVlcyldO1xuICByZXR1cm4ge1xuICAgIGxhYmVsLFxuICAgIGF4aXM6ICd5JyxcbiAgICBkYXRhLFxuICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IsXG4gICAgYm9yZGVyQ29sb3I6IGNvbG9yXG4gIH07XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9ycy1jaGFydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9ycy1jaGFydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3JzLWNoYXJ0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSW1wYWN0QXNzZXNzbWVudHNJbmRpY2F0b3JzQ2hhcnRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICBAVmlld0NoaWxkKCdjaGFydCcpXG4gIHByaXZhdGUgY2hhcnRSZWY/OiBFbGVtZW50UmVmO1xuICBwcml2YXRlIGNoYXJ0OiBhbnk7XG5cbiAgQElucHV0KClcbiAgcHJpdmF0ZSBpbXBhY3RBc3Nlc3NtZW50czogSUltcGFjdEFzc2Vzc21lbnRKU09OTERbXSA9IFtdO1xuICBASW5wdXQoKVxuICBwcml2YXRlIHNlbGVjdGVkOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKVxuICBwcml2YXRlIGtleTogJ2ltcGFjdHMnIHwgJ2VtaXNzaW9uc1Jlc291cmNlVXNlJyA9ICdpbXBhY3RzJztcbiAgQElucHV0KClcbiAgcHVibGljIGZpbHRlclRlcm1UeXBlcz86IFRlcm1UZXJtVHlwZVtdO1xuXG4gIHB1YmxpYyBpbmRpY2F0b3JQZXJJbXBhY3RBc3Nlc3NtZW50OiBJR3JvdXBlZE5vZGVzPEluZGljYXRvcj4gPSB7fTtcbiAgcHVibGljIHRlcm1zOiBUZXJtW10gPSBbXTtcbiAgcHVibGljIHNlbGVjdGVkVGVybT86IFRlcm07XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHJldHVybiB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoJ2ltcGFjdEFzc2Vzc21lbnRzJyBpbiBjaGFuZ2VzICYmICFjaGFuZ2VzLmltcGFjdEFzc2Vzc21lbnRzLmZpcnN0Q2hhbmdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbml0KCk7XG4gICAgfVxuICAgIGlmICgnc2VsZWN0ZWQnIGluIGNoYW5nZXMgJiYgIWNoYW5nZXMuc2VsZWN0ZWQuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmluaXQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRlcm1BbGxvd2VkKHRlcm0/OiBUZXJtKSB7XG4gICAgcmV0dXJuICF0aGlzLmZpbHRlclRlcm1UeXBlcz8ubGVuZ3RoIHx8ICh0aGlzLmZpbHRlclRlcm1UeXBlcyB8fCBbXSkuaW5jbHVkZXModGVybT8udGVybVR5cGUhKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdCgpIHtcbiAgICBjb25zdCBpbXBhY3RzID0gdGhpcy5pbXBhY3RBc3Nlc3NtZW50cy5maWx0ZXIodiA9PiBpc1NlbGVjdGVkKHRoaXMuc2VsZWN0ZWQsIHYpKTtcbiAgICB0aGlzLmluZGljYXRvclBlckltcGFjdEFzc2Vzc21lbnQgPSBncm91cE5vZGVzQnlUZXJtPElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELCBJbmRpY2F0b3I+KFxuICAgICAgaW1wYWN0cywgdGhpcy5rZXlcbiAgICApO1xuICAgIHRoaXMudGVybXMgPSBPYmplY3QudmFsdWVzKHRoaXMuaW5kaWNhdG9yUGVySW1wYWN0QXNzZXNzbWVudClcbiAgICAgIC5maWx0ZXIoKHsgdGVybSwgdmFsdWVzIH06IGFueSkgPT5cbiAgICAgICAgdGhpcy50ZXJtQWxsb3dlZCh0ZXJtKSAmJiBPYmplY3QudmFsdWVzKHZhbHVlcykuc29tZSgoeyBub2RlczogW3sgdmFsdWUgfV0gfTogYW55KSA9PiB2YWx1ZSA+PSAwKVxuICAgICAgKVxuICAgICAgLm1hcCgoeyB0ZXJtIH06IGFueSkgPT4gdGVybSk7XG4gICAgdGhpcy5zZWxlY3RlZFRlcm0gPSB0aGlzLnRlcm1zLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWRUZXJtISkgPyB0aGlzLnNlbGVjdGVkVGVybSA6IHRoaXMudGVybXNbMF07XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRUZXJtID8gdGhpcy51cGRhdGVDaGFydCgpIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVDaGFydCgpIHtcbiAgICBjb25zdCBsYWJlbHMgPSBbdGhpcy5zZWxlY3RlZFRlcm0/Lm5hbWUgPz8gJyddO1xuICAgIGNvbnN0IHsgdmFsdWVzIH0gPSB0aGlzLmluZGljYXRvclBlckltcGFjdEFzc2Vzc21lbnRbdGhpcy5zZWxlY3RlZFRlcm0hWydAaWQnXV07XG4gICAgY29uc3QgZGF0YXNldHMgPSB0aGlzLmltcGFjdEFzc2Vzc21lbnRzXG4gICAgICAubWFwKChpbXBhY3QsIGluZGV4KSA9PiBpc1NlbGVjdGVkKHRoaXMuc2VsZWN0ZWQsIGltcGFjdCkgPyBpbXBhY3RBc3Nlc3NtZW50RGF0YXNldCh2YWx1ZXMsIGltcGFjdCwgaW5kZXgpIDogbnVsbClcbiAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICBpZiAodGhpcy5jaGFydCkge1xuICAgICAgdGhpcy5jaGFydC5kZXN0cm95KCk7XG4gICAgfVxuICAgIHRoaXMuY2hhcnQgPSBuZXcgQ2hhcnQodGhpcy5jaGFydFJlZj8ubmF0aXZlRWxlbWVudCwge1xuICAgICAgdHlwZTogJ2JhcicsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGxhYmVscyxcbiAgICAgICAgZGF0YXNldHNcbiAgICAgIH0sXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIHJlc3BvbnNpdmU6IHRydWUsXG4gICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLFxuICAgICAgICBsZWdlbmQ6IHtcbiAgICAgICAgICBkaXNwbGF5OiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBzY2FsZXM6IHtcbiAgICAgICAgICB4QXhlczogW3tcbiAgICAgICAgICAgIGRpc3BsYXk6IGZhbHNlXG4gICAgICAgICAgfV0sXG4gICAgICAgICAgeUF4ZXM6IFt7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2xlZnQnLFxuICAgICAgICAgICAgdGlja3M6IHtcbiAgICAgICAgICAgICAgbWluOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfV1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicC0zXCIgW2NsYXNzLmlzLWhpZGRlbl09XCIhdGVybXM/Lmxlbmd0aFwiPlxuICA8ZGl2IGNsYXNzPVwiZmllbGQgaXMtaG9yaXpvbnRhbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1sYWJlbCBpcy1ub3JtYWxcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsXCIgZm9yPVwic2VsZWN0ZWRUZXJtXCI+XG4gICAgICAgIDxzcGFuPlNlbGVjdCBhIGNvbHVtbjwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkLWJvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgaXMtc21hbGxcIj5cbiAgICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwidXBkYXRlQ2hhcnQoKVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUZXJtXCIgaWQ9XCJzZWxlY3RlZFRlcm1cIj5cbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHRlcm0gb2YgdGVybXNcIiBbbmdWYWx1ZV09XCJ0ZXJtXCI+e3t0ZXJtLm5hbWV9fTwvb3B0aW9uPlxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibXQtMVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjaGFydC1jb250YWluZXJcIj5cbiAgICAgIDxjYW52YXMgI2NoYXJ0PjwvY2FudmFzPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvcnMtY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltcGFjdC1hc3Nlc3NtZW50cy9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9ycy1jaGFydC9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9ycy1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3JzLWNoYXJ0L2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3JzLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQUUsS0FBSyxFQUE0QixTQUFTLEVBQ3RELE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFakMsT0FBTyxFQUFFLGdCQUFnQixFQUFzQyxNQUFNLHlCQUF5QixDQUFDO0FBQy9GLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFFN0QsTUFBTSxVQUFVLEdBQUcsQ0FBQyxRQUFrQixFQUFFLENBQTBCLEVBQUUsRUFBRSxDQUNwRSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBRXZELE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBK0IsRUFBRSxNQUFzQyxFQUFFLEVBQUUsV0FDOUYsT0FBQSxDQUFDLENBQUEsTUFBQSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLDBDQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FB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QW1CLEVBQUUsS0FBSztnQkFDMUIsTUFBTSxFQUFFO29CQUNOLE9BQU8sRUFBRSxLQUFLO2lCQUNmO2dCQUNELE1BQU0sRUFBRTtvQkFDTixLQUFLLEVBQUUsQ0FBQzs0QkFDTixPQUFPLEVBQUUsS0FBSzt5QkFDZixDQUFDO29CQUNGLEtBQUssRUFBRSxDQUFDOzRCQUNOLFFBQVEsRUFBRSxNQUFNOzRCQUNoQixLQUFLLEVBQUU7Z0NBQ0wsR0FBRyxFQUFFLENBQUM7NkJBQ1A7eUJBQ0YsQ0FBQztpQkFDSDthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDOzt1SUE1RlUseUNBQXlDOzJIQUF6Qyx5Q0FBeUMsZ1VDbkN0RCw4dUJBd0JBOzRGRFdhLHlDQUF5QztrQkFMckQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0NBQXdDO29CQUNsRCxXQUFXLEVBQUUsc0RBQXNEO29CQUNuRSxTQUFTLEVBQUUsQ0FBQyxzREFBc0QsQ0FBQztpQkFDcEU7NkZBR1MsUUFBUTtzQkFEZixTQUFTO3VCQUFDLE9BQU87Z0JBS1YsaUJBQWlCO3NCQUR4QixLQUFLO2dCQUdFLFFBQVE7c0JBRGYsS0FBSztnQkFHRSxHQUFHO3NCQURWLEtBQUs7Z0JBR0MsZUFBZTtzQkFEckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgSW5wdXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgVmlld0NoaWxkLCBTaW1wbGVDaGFuZ2VzLCBFbGVtZW50UmVmLCBOZ1pvbmVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgSW5kaWNhdG9yLCBUZXJtLCBUZXJtVGVybVR5cGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyBDaGFydCB9IGZyb20gJ2NoYXJ0LmpzJztcblxuaW1wb3J0IHsgZ3JvdXBOb2Rlc0J5VGVybSwgSUdyb3VwZWROb2RlcywgSUdyb3VwZWROb2Rlc1ZhbHVlcyB9IGZyb20gJy4uLy4uL2NvbW1vbi9ub2RlLXV0aWxzJztcbmltcG9ydCB7IGl0ZW1Db2xvciwgZGVmYXVsdExhYmVsIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcblxuY29uc3QgaXNTZWxlY3RlZCA9IChzZWxlY3RlZDogc3RyaW5nW10sIHY6IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEKSA9PlxuICBzZWxlY3RlZC5sZW5ndGggPT09IDAgfHwgc2VsZWN0ZWQuaW5jbHVkZXModlsnQGlkJ10pO1xuXG5jb25zdCBpbXBhY3RWYWx1ZSA9IChpbXBhY3Q6IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELCB2YWx1ZXM6IElHcm91cGVkTm9kZXNWYWx1ZXM8SW5kaWNhdG9yPikgPT5cbiAgKHZhbHVlc1tpbXBhY3RbJ0BpZCddXT8ubm9kZXNbMF0gfHwgeyB2YWx1ZTogMCB9KS52YWx1ZTtcblxuY29uc3QgaW1wYWN0TmFtZSA9IChpbXBhY3Q6IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELCBpbmRleDogbnVtYmVyKSA9PiBgJHtpbmRleCArIDF9LiAke2RlZmF1bHRMYWJlbChpbXBhY3QpfWA7XG5cbmNvbnN0IGltcGFjdEFzc2Vzc21lbnREYXRhc2V0ID0gKHZhbHVlczogSUdyb3VwZWROb2Rlc1ZhbHVlczxJbmRpY2F0b3I+LCBpbXBhY3Q6IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELCBpbmRleDogbnVtYmVyKSA9PiB7XG4gIGNvbnN0IGxhYmVsID0gaW1wYWN0TmFtZShpbXBhY3QsIGluZGV4KTtcbiAgY29uc3QgY29sb3IgPSBpdGVtQ29sb3IoaW5kZXgpO1xuICBjb25zdCBkYXRhID0gW2ltcGFjdFZhbHVlKGltcGFjdCwgdmFsdWVzKV07XG4gIHJldHVybiB7XG4gICAgbGFiZWwsXG4gICAgYXhpczogJ3knLFxuICAgIGRhdGEsXG4gICAgYmFja2dyb3VuZENvbG9yOiBjb2xvcixcbiAgICBib3JkZXJDb2xvcjogY29sb3JcbiAgfTtcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3JzLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3JzLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvcnMtY2hhcnQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJbXBhY3RBc3Nlc3NtZW50c0luZGljYXRvcnNDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIEBWaWV3Q2hpbGQoJ2NoYXJ0JylcbiAgcHJpdmF0ZSBjaGFydFJlZj86IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgY2hhcnQ6IGFueTtcblxuICBASW5wdXQoKVxuICBwcml2YXRlIGltcGFjdEFzc2Vzc21lbnRzOiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRFtdID0gW107XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgc2VsZWN0ZWQ6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUga2V5OiAnaW1wYWN0cycgfCAnZW1pc3Npb25zUmVzb3VyY2VVc2UnID0gJ2ltcGFjdHMnO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZmlsdGVyVGVybVR5cGVzPzogVGVybVRlcm1UeXBlW107XG5cbiAgcHVibGljIGluZGljYXRvclBlckltcGFjdEFzc2Vzc21lbnQ6IElHcm91cGVkTm9kZXM8SW5kaWNhdG9yPiA9IHt9O1xuICBwdWJsaWMgdGVybXM6IFRlcm1bXSA9IFtdO1xuICBwdWJsaWMgc2VsZWN0ZWRUZXJtPzogVGVybTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXG4gICkgeyB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHJldHVybiB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoJ2ltcGFjdEFzc2Vzc21lbnRzJyBpbiBjaGFuZ2VzICYmICFjaGFuZ2VzLmltcGFjdEFzc2Vzc21lbnRzLmZpcnN0Q2hhbmdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbml0KCk7XG4gICAgfVxuICAgIGlmICgnc2VsZWN0ZWQnIGluIGNoYW5nZXMgJiYgIWNoYW5nZXMuc2VsZWN0ZWQuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmluaXQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRlcm1BbGxvd2VkKHRlcm0/OiBUZXJtKSB7XG4gICAgcmV0dXJuICF0aGlzLmZpbHRlclRlcm1UeXBlcz8ubGVuZ3RoIHx8ICh0aGlzLmZpbHRlclRlcm1UeXBlcyB8fCBbXSkuaW5jbHVkZXModGVybT8udGVybVR5cGUhKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdCgpIHtcbiAgICBjb25zdCBpbXBhY3RzID0gdGhpcy5pbXBhY3RBc3Nlc3NtZW50cy5maWx0ZXIodiA9PiBpc1NlbGVjdGVkKHRoaXMuc2VsZWN0ZWQsIHYpKTtcbiAgICB0aGlzLmluZGljYXRvclBlckltcGFjdEFzc2Vzc21lbnQgPSBncm91cE5vZGVzQnlUZXJtPElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELCBJbmRpY2F0b3I+KFxuICAgICAgaW1wYWN0cywgdGhpcy5rZXlcbiAgICApO1xuICAgIHRoaXMudGVybXMgPSBPYmplY3QudmFsdWVzKHRoaXMuaW5kaWNhdG9yUGVySW1wYWN0QXNzZXNzbWVudClcbiAgICAgIC5maWx0ZXIoKHsgdGVybSwgdmFsdWVzIH06IGFueSkgPT5cbiAgICAgICAgdGhpcy50ZXJtQWxsb3dlZCh0ZXJtKSAmJiBPYmplY3QudmFsdWVzKHZhbHVlcykuc29tZSgoeyBub2RlczogW3sgdmFsdWUgfV0gfTogYW55KSA9PiB2YWx1ZSA+PSAwKVxuICAgICAgKVxuICAgICAgLm1hcCgoeyB0ZXJtIH06IGFueSkgPT4gdGVybSk7XG4gICAgdGhpcy5zZWxlY3RlZFRlcm0gPSB0aGlzLnRlcm1zLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWRUZXJtISkgPyB0aGlzLnNlbGVjdGVkVGVybSA6IHRoaXMudGVybXNbMF07XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRUZXJtID8gdGhpcy51cGRhdGVDaGFydCgpIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdENoYXJ0KCkge1xuICAgIGNvbnN0IGxhYmVscyA9IFt0aGlzLnNlbGVjdGVkVGVybT8ubmFtZSA/PyAnJ107XG4gICAgY29uc3QgeyB2YWx1ZXMgfSA9IHRoaXMuaW5kaWNhdG9yUGVySW1wYWN0QXNzZXNzbWVudFt0aGlzLnNlbGVjdGVkVGVybSFbJ0BpZCddXTtcbiAgICBjb25zdCBkYXRhc2V0cyA9IHRoaXMuaW1wYWN0QXNzZXNzbWVudHNcbiAgICAgIC5tYXAoKGltcGFjdCwgaW5kZXgpID0+IGlzU2VsZWN0ZWQodGhpcy5zZWxlY3RlZCwgaW1wYWN0KSA/IGltcGFjdEFzc2Vzc21lbnREYXRhc2V0KHZhbHVlcywgaW1wYWN0LCBpbmRleCkgOiBudWxsKVxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcblxuICAgIGlmICh0aGlzLmNoYXJ0KSB7XG4gICAgICB0aGlzLmNoYXJ0LmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5jaGFydCA9IG5ldyBDaGFydCh0aGlzLmNoYXJ0UmVmPy5uYXRpdmVFbGVtZW50LCB7XG4gICAgICB0eXBlOiAnYmFyJyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbGFiZWxzLFxuICAgICAgICBkYXRhc2V0c1xuICAgICAgfSxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcbiAgICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogZmFsc2UsXG4gICAgICAgIGxlZ2VuZDoge1xuICAgICAgICAgIGRpc3BsYXk6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHNjYWxlczoge1xuICAgICAgICAgIHhBeGVzOiBbe1xuICAgICAgICAgICAgZGlzcGxheTogZmFsc2VcbiAgICAgICAgICB9XSxcbiAgICAgICAgICB5QXhlczogW3tcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnbGVmdCcsXG4gICAgICAgICAgICB0aWNrczoge1xuICAgICAgICAgICAgICBtaW46IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQ2hhcnQoKSB7XG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gdGhpcy5pbml0Q2hhcnQoKSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwLTNcIiBbY2xhc3MuaXMtaGlkZGVuXT1cIiF0ZXJtcz8ubGVuZ3RoXCI+XG4gIDxkaXYgY2xhc3M9XCJmaWVsZCBpcy1ob3Jpem9udGFsXCI+XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkLWxhYmVsIGlzLW5vcm1hbFwiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWxcIiBmb3I9XCJzZWxlY3RlZFRlcm1cIj5cbiAgICAgICAgPHNwYW4+U2VsZWN0IGEgY29sdW1uPC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmllbGQtYm9keVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1zbWFsbFwiPlxuICAgICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJ1cGRhdGVDaGFydCgpXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRlcm1cIiBpZD1cInNlbGVjdGVkVGVybVwiPlxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdGVybSBvZiB0ZXJtc1wiIFtuZ1ZhbHVlXT1cInRlcm1cIj57e3Rlcm0ubmFtZX19PC9vcHRpb24+XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtdC0xXCI+XG4gICAgPGRpdiBjbGFzcz1cImNoYXJ0LWNvbnRhaW5lclwiPlxuICAgICAgPGNhbnZhcyAjY2hhcnQ+PC9jYW52YXM+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { fileToExt, SupportedExtensions } from '@hestia-earth/api';
3
3
  import { toCsv } from '@hestia-earth/schema-convert';
4
4
  import * as i0 from "@angular/core";
@@ -41,13 +41,14 @@ export class NodeCsvExportConfirmComponent {
41
41
  }
42
42
  }
43
43
  NodeCsvExportConfirmComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NodeCsvExportConfirmComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
44
- NodeCsvExportConfirmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: { nodes: "nodes", filename: "filename", headerKeys: "headerKeys", extension: "extension", isUpload: "isUpload" }, outputs: { closed: "closed" }, ngImport: i0, template: "<div class=\"modal is-active\">\n <div class=\"modal-background\"></div>\n <div class=\"modal-card\">\n <header class=\"modal-card-head\">\n <p class=\"modal-card-title\">Export as CSV</p>\n <button class=\"delete\" aria-label=\"close\" (click)=\"closed.next(true)\"></button>\n </header>\n <section class=\"modal-card-body\">\n <div class=\"notification is-info\" role=\"alert\" *ngIf=\"isUpload\">\n <span>After Download, you can edit and</span>\n <a class=\"px-1\" routerLink=\"../\">upload the CSV file</a>\n <span>to submit your content on the Hestia platform, and your draft will remain unchanged.</span>\n\n <p>\n <span>Alternatively, you can import the CSV file right back by clicking on the \"Import from CSV\" button and selecting the exported file.</span>\n </p>\n </div>\n\n <ng-container *ngIf=\"!isUpload && includedNodes.length > 1\">\n <p class=\"mb-2\">\n <b>{{includedNodes.length}}</b>\n <span class=\"px-1\">Nodes will be included in your download.</span>\n <a (click)=\"showIncludeNodes = !showIncludeNodes\">\n <ng-container *ngIf=\"!showIncludeNodes\">Show list</ng-container>\n <ng-container *ngIf=\"showIncludeNodes\">Hide list</ng-container>\n </a>\n </p>\n\n <div class=\"table-container\" *ngIf=\"showIncludeNodes\">\n <table class=\"table is-fullwidth is-hoverable mb-0\">\n <thead class=\"has-background-black\">\n <tr>\n <th>\n <span class=\"has-text-white\">@type</span>\n </th>\n <th>\n <span class=\"has-text-white\">@id</span>\n </th>\n <th>\n <span class=\"has-text-white\">Name</span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let node of includedNodes\">\n <td>\n <span *bindOnce=\"node\">{{node.node['@type']}}</span>\n </td>\n <td>\n <span *bindOnce=\"node\">{{node.node['@id']}}</span>\n </td>\n <td>\n <span *bindOnce=\"node\">{{node.node.name}}</span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </ng-container>\n\n <he-node-csv-select-headers [class.is-hidden]=\"isUpload\"\n [csv]=\"csvData\" [keys]=\"headerKeys\" [includeDefaultCSV]=\"isUpload\"\n (headersChanged)=\"headersUpdated($event)\"\n ></he-node-csv-select-headers>\n </section>\n <footer class=\"modal-card-foot\">\n <a class=\"button is-success\" target=\"_blank\"\n [attr.disabled]=\"csvContent ? null : true\"\n [href]=\"csvContent\"\n [attr.download]=\"csvContent ? downloadFilename : null\"\n (click)=\"closed.next(true)\"\n >\n <fa-icon class=\"mr-2\" icon=\"download\"></fa-icon>\n <span>Download CSV</span>\n </a>\n <button class=\"button\" (click)=\"closed.next(true)\">\n <span>Cancel</span>\n </button>\n </footer>\n </div>\n</div>\n", styles: [""], components: [{ type: i2.NodeCsvSelectHeadersComponent, selector: "he-node-csv-select-headers", inputs: ["csv", "keys", "includeDefaultCSV"], outputs: ["headersChanged"] }, { type: i3.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.BindOnceDirective, selector: "[bindOnce]", inputs: ["bindOnce"] }] });
44
+ NodeCsvExportConfirmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: { nodes: "nodes", filename: "filename", headerKeys: "headerKeys", extension: "extension", isUpload: "isUpload" }, outputs: { closed: "closed" }, ngImport: i0, template: "<div class=\"modal is-active\">\n <div class=\"modal-background\"></div>\n <div class=\"modal-card\">\n <header class=\"modal-card-head\">\n <p class=\"modal-card-title\">Export as CSV</p>\n <button class=\"delete\" aria-label=\"close\" (click)=\"closed.next(true)\"></button>\n </header>\n <section class=\"modal-card-body\">\n <div class=\"notification is-info\" role=\"alert\" *ngIf=\"isUpload\">\n <span>After Download, you can edit and</span>\n <a class=\"px-1\" routerLink=\"../\">upload the CSV file</a>\n <span>to submit your content on the Hestia platform, and your draft will remain unchanged.</span>\n\n <p>\n <span>Alternatively, you can import the CSV file right back by clicking on the \"Import from CSV\" button and selecting the exported file.</span>\n </p>\n </div>\n\n <ng-container *ngIf=\"!isUpload && includedNodes.length > 1\">\n <p class=\"mb-2\">\n <b>{{includedNodes.length}}</b>\n <span class=\"px-1\">Nodes will be included in your download.</span>\n <a (click)=\"showIncludeNodes = !showIncludeNodes\">\n <ng-container *ngIf=\"!showIncludeNodes\">Show list</ng-container>\n <ng-container *ngIf=\"showIncludeNodes\">Hide list</ng-container>\n </a>\n </p>\n\n <div class=\"table-container\" *ngIf=\"showIncludeNodes\">\n <table class=\"table is-fullwidth is-hoverable mb-0\">\n <thead class=\"has-background-black\">\n <tr>\n <th>\n <span class=\"has-text-white\">@type</span>\n </th>\n <th>\n <span class=\"has-text-white\">@id</span>\n </th>\n <th>\n <span class=\"has-text-white\">Name</span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let node of includedNodes\">\n <td>\n <span *bindOnce=\"node\">{{node.node['@type']}}</span>\n </td>\n <td>\n <span *bindOnce=\"node\">{{node.node['@id']}}</span>\n </td>\n <td>\n <span *bindOnce=\"node\">{{node.node.name}}</span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </ng-container>\n\n <he-node-csv-select-headers [class.is-hidden]=\"isUpload\"\n [csv]=\"csvData\" [keys]=\"headerKeys\" [includeDefaultCSV]=\"isUpload\"\n (headersChanged)=\"headersUpdated($event)\"\n ></he-node-csv-select-headers>\n </section>\n <footer class=\"modal-card-foot\">\n <a class=\"button is-success\" target=\"_blank\"\n [attr.disabled]=\"csvContent ? null : true\"\n [href]=\"csvContent\"\n [attr.download]=\"csvContent ? downloadFilename : null\"\n (click)=\"closed.next(true)\"\n >\n <fa-icon class=\"mr-2\" icon=\"download\"></fa-icon>\n <span>Download CSV</span>\n </a>\n <button class=\"button\" (click)=\"closed.next(true)\">\n <span>Cancel</span>\n </button>\n </footer>\n </div>\n</div>\n", styles: [""], components: [{ type: i2.NodeCsvSelectHeadersComponent, selector: "he-node-csv-select-headers", inputs: ["csv", "keys", "includeDefaultCSV"], outputs: ["headersChanged"] }, { type: i3.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.BindOnceDirective, selector: "[bindOnce]", inputs: ["bindOnce"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
45
45
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NodeCsvExportConfirmComponent, decorators: [{
46
46
  type: Component,
47
47
  args: [{
48
48
  selector: 'he-node-csv-export-confirm',
49
49
  templateUrl: './node-csv-export-confirm.component.html',
50
- styleUrls: ['./node-csv-export-confirm.component.scss']
50
+ styleUrls: ['./node-csv-export-confirm.component.scss'],
51
+ changeDetection: ChangeDetectionStrategy.OnPush
51
52
  }]
52
53
  }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; }, propDecorators: { nodes: [{
53
54
  type: Input
@@ -62,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
62
63
  }], closed: [{
63
64
  type: Output
64
65
  }] } });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25vZGUvbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0vbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL25vZGUvbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0vbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRSxPQUFPLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7OztBQVlyRCxNQUFNLE9BQU8sNkJBQTZCO0lBc0J4QyxZQUNVLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBdEI1QixZQUFPLEdBQWEsRUFBRSxDQUFDO1FBR3ZCLFVBQUssR0FBc0IsRUFBRSxDQUFDO1FBRTlCLGFBQVEsR0FBRyxVQUFVLENBQUM7UUFJdkIsY0FBUyxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQztRQUVwQyxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBR2hCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBSXJDLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixrQkFBYSxHQUFvQixFQUFFLENBQUM7SUFJdkMsQ0FBQztJQUVMLFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTSxjQUFjLENBQUMsT0FBaUI7UUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLDhCQUE4QixDQUN0RixnQ0FBZ0Msa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDM0QsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsRCxDQUFDOzsySEFsRFUsNkJBQTZCOytHQUE3Qiw2QkFBNkIsMk5DaEIxQywycUdBaUZBOzRGRGpFYSw2QkFBNkI7a0JBTHpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsV0FBVyxFQUFFLDBDQUEwQztvQkFDdkQsU0FBUyxFQUFFLENBQUMsMENBQTBDLENBQUM7aUJBQ3hEO21HQUtTLEtBQUs7c0JBRFosS0FBSztnQkFHRSxRQUFRO3NCQURmLEtBQUs7Z0JBR0MsVUFBVTtzQkFEaEIsS0FBSztnQkFHQyxTQUFTO3NCQURmLEtBQUs7Z0JBR0MsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLE1BQU07c0JBRFosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZVJlc291cmNlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBmaWxlVG9FeHQsIFN1cHBvcnRlZEV4dGVuc2lvbnMgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5pbXBvcnQgeyBKU09OIGFzIEhlc3RpYUpzb24gfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyB0b0NzdiB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hLWNvbnZlcnQnO1xuXG5pbnRlcmZhY2UgSU5vZGVJbmNsdWRlZCB7XG4gIG5vZGU6IEhlc3RpYUpzb248YW55PjtcbiAgaW5jbHVkZWQ6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLW5vZGUtY3N2LWV4cG9ydC1jb25maXJtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vZGUtY3N2LWV4cG9ydC1jb25maXJtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOb2RlQ3N2RXhwb3J0Q29uZmlybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgaGVhZGVyczogc3RyaW5nW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwcml2YXRlIG5vZGVzOiBIZXN0aWFKc29uPGFueT5bXSA9IFtdO1xuICBASW5wdXQoKVxuICBwcml2YXRlIGZpbGVuYW1lID0gJ2Rvd25sb2FkJztcbiAgQElucHV0KClcbiAgcHVibGljIGhlYWRlcktleXM/OiBzdHJpbmdbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGV4dGVuc2lvbiA9IFN1cHBvcnRlZEV4dGVuc2lvbnMuY3N2O1xuICBASW5wdXQoKVxuICBwdWJsaWMgaXNVcGxvYWQgPSB0cnVlO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHB1YmxpYyBjc3ZEYXRhPzogc3RyaW5nO1xuICBwdWJsaWMgY3N2Q29udGVudD86IFNhZmVSZXNvdXJjZVVybDtcbiAgcHVibGljIHNob3dJbmNsdWRlTm9kZXMgPSBmYWxzZTtcbiAgcHVibGljIGluY2x1ZGVkTm9kZXM6IElOb2RlSW5jbHVkZWRbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluY2x1ZGVkTm9kZXMgPSB0aGlzLm5vZGVzLm1hcChub2RlID0+ICh7IG5vZGUsIGluY2x1ZGVkOiB0cnVlIH0pKTtcbiAgICB0aGlzLmNzdkRhdGEgPSB0b0Nzdih0aGlzLm5vZGVzIHx8IFtdLCAhdGhpcy5pc1VwbG9hZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluY2x1ZGVkKCkge1xuICAgIHJldHVybiB0aGlzLmluY2x1ZGVkTm9kZXMuZmlsdGVyKCh7IGluY2x1ZGVkIH0pID0+IGluY2x1ZGVkKTtcbiAgfVxuXG4gIHB1YmxpYyBoZWFkZXJzVXBkYXRlZChoZWFkZXJzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuaGVhZGVycyA9IGhlYWRlcnM7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlQ3N2Q29udGVudCgpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUNzdkNvbnRlbnQoKSB7XG4gICAgY29uc3Qgbm9kZXMgPSB0aGlzLmluY2x1ZGVkLm1hcCgoeyBub2RlIH0pID0+IG5vZGUpO1xuICAgIGNvbnN0IGRhdGEgPSB0b0Nzdihub2RlcywgIXRoaXMuaXNVcGxvYWQsIGZhbHNlLCB0aGlzLmhlYWRlcnMpO1xuICAgIHRoaXMuY3N2Q29udGVudCA9IHRoaXMuaGVhZGVycy5sZW5ndGggPyB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoXG4gICAgICBgZGF0YTp0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCwke2VuY29kZVVSSUNvbXBvbmVudChkYXRhKX1gXG4gICAgKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZG93bmxvYWRGaWxlbmFtZSgpIHtcbiAgICByZXR1cm4gZmlsZVRvRXh0KHRoaXMuZmlsZW5hbWUsIHRoaXMuZXh0ZW5zaW9uKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsIGlzLWFjdGl2ZVwiPlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYmFja2dyb3VuZFwiPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtY2FyZFwiPlxuICAgIDxoZWFkZXIgY2xhc3M9XCJtb2RhbC1jYXJkLWhlYWRcIj5cbiAgICAgIDxwIGNsYXNzPVwibW9kYWwtY2FyZC10aXRsZVwiPkV4cG9ydCBhcyBDU1Y8L3A+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZGVsZXRlXCIgYXJpYS1sYWJlbD1cImNsb3NlXCIgKGNsaWNrKT1cImNsb3NlZC5uZXh0KHRydWUpXCI+PC9idXR0b24+XG4gICAgPC9oZWFkZXI+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJtb2RhbC1jYXJkLWJvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb24gaXMtaW5mb1wiIHJvbGU9XCJhbGVydFwiICpuZ0lmPVwiaXNVcGxvYWRcIj5cbiAgICAgICAgPHNwYW4+QWZ0ZXIgRG93bmxvYWQsIHlvdSBjYW4gZWRpdCBhbmQ8L3NwYW4+XG4gICAgICAgIDxhIGNsYXNzPVwicHgtMVwiIHJvdXRlckxpbms9XCIuLi9cIj51cGxvYWQgdGhlIENTViBmaWxlPC9hPlxuICAgICAgICA8c3Bhbj50byBzdWJtaXQgeW91ciBjb250ZW50IG9uIHRoZSBIZXN0aWEgcGxhdGZvcm0sIGFuZCB5b3VyIGRyYWZ0IHdpbGwgcmVtYWluIHVuY2hhbmdlZC48L3NwYW4+XG5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPHNwYW4+QWx0ZXJuYXRpdmVseSwgeW91IGNhbiBpbXBvcnQgdGhlIENTViBmaWxlIHJpZ2h0IGJhY2sgYnkgY2xpY2tpbmcgb24gdGhlIFwiSW1wb3J0IGZyb20gQ1NWXCIgYnV0dG9uIGFuZCBzZWxlY3RpbmcgdGhlIGV4cG9ydGVkIGZpbGUuPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1VwbG9hZCAmJiBpbmNsdWRlZE5vZGVzLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgPGI+e3tpbmNsdWRlZE5vZGVzLmxlbmd0aH19PC9iPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHgtMVwiPk5vZGVzIHdpbGwgYmUgaW5jbHVkZWQgaW4geW91ciBkb3dubG9hZC48L3NwYW4+XG4gICAgICAgICAgPGEgKGNsaWNrKT1cInNob3dJbmNsdWRlTm9kZXMgPSAhc2hvd0luY2x1ZGVOb2Rlc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93SW5jbHVkZU5vZGVzXCI+U2hvdyBsaXN0PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0luY2x1ZGVOb2Rlc1wiPkhpZGUgbGlzdDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9wPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIiAqbmdJZj1cInNob3dJbmNsdWRlTm9kZXNcIj5cbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBpcy1mdWxsd2lkdGggaXMtaG92ZXJhYmxlIG1iLTBcIj5cbiAgICAgICAgICAgIDx0aGVhZCBjbGFzcz1cImhhcy1iYWNrZ3JvdW5kLWJsYWNrXCI+XG4gICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGg+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhhcy10ZXh0LXdoaXRlXCI+QHR5cGU8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICA8dGg+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhhcy10ZXh0LXdoaXRlXCI+QGlkPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgPHRoPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoYXMtdGV4dC13aGl0ZVwiPk5hbWU8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgbm9kZSBvZiBpbmNsdWRlZE5vZGVzXCI+XG4gICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKmJpbmRPbmNlPVwibm9kZVwiPnt7bm9kZS5ub2RlWydAdHlwZSddfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqYmluZE9uY2U9XCJub2RlXCI+e3tub2RlLm5vZGVbJ0BpZCddfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqYmluZE9uY2U9XCJub2RlXCI+e3tub2RlLm5vZGUubmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxoZS1ub2RlLWNzdi1zZWxlY3QtaGVhZGVycyBbY2xhc3MuaXMtaGlkZGVuXT1cImlzVXBsb2FkXCJcbiAgICAgICAgW2Nzdl09XCJjc3ZEYXRhXCIgW2tleXNdPVwiaGVhZGVyS2V5c1wiIFtpbmNsdWRlRGVmYXVsdENTVl09XCJpc1VwbG9hZFwiXG4gICAgICAgIChoZWFkZXJzQ2hhbmdlZCk9XCJoZWFkZXJzVXBkYXRlZCgkZXZlbnQpXCJcbiAgICAgID48L2hlLW5vZGUtY3N2LXNlbGVjdC1oZWFkZXJzPlxuICAgIDwvc2VjdGlvbj5cbiAgICA8Zm9vdGVyIGNsYXNzPVwibW9kYWwtY2FyZC1mb290XCI+XG4gICAgICA8YSBjbGFzcz1cImJ1dHRvbiBpcy1zdWNjZXNzXCIgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiY3N2Q29udGVudCA/IG51bGwgOiB0cnVlXCJcbiAgICAgICAgW2hyZWZdPVwiY3N2Q29udGVudFwiXG4gICAgICAgIFthdHRyLmRvd25sb2FkXT1cImNzdkNvbnRlbnQgPyBkb3dubG9hZEZpbGVuYW1lIDogbnVsbFwiXG4gICAgICAgIChjbGljayk9XCJjbG9zZWQubmV4dCh0cnVlKVwiXG4gICAgICA+XG4gICAgICAgIDxmYS1pY29uIGNsYXNzPVwibXItMlwiIGljb249XCJkb3dubG9hZFwiPjwvZmEtaWNvbj5cbiAgICAgICAgPHNwYW4+RG93bmxvYWQgQ1NWPC9zcGFuPlxuICAgICAgPC9hPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZWQubmV4dCh0cnVlKVwiPlxuICAgICAgICA8c3Bhbj5DYW5jZWw8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Zvb3Rlcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25vZGUvbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0vbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL25vZGUvbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0vbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RyxPQUFPLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7OztBQWFyRCxNQUFNLE9BQU8sNkJBQTZCO0lBc0J4QyxZQUNVLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBdEI1QixZQUFPLEdBQWEsRUFBRSxDQUFDO1FBR3ZCLFVBQUssR0FBc0IsRUFBRSxDQUFDO1FBRTlCLGFBQVEsR0FBRyxVQUFVLENBQUM7UUFJdkIsY0FBUyxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQztRQUVwQyxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBR2hCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBSXJDLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixrQkFBYSxHQUFvQixFQUFFLENBQUM7SUFJdkMsQ0FBQztJQUVMLFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTSxjQUFjLENBQUMsT0FBaUI7UUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLDhCQUE4QixDQUN0RixnQ0FBZ0Msa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDM0QsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsRCxDQUFDOzsySEFsRFUsNkJBQTZCOytHQUE3Qiw2QkFBNkIsMk5DakIxQywycUdBaUZBOzRGRGhFYSw2QkFBNkI7a0JBTnpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsV0FBVyxFQUFFLDBDQUEwQztvQkFDdkQsU0FBUyxFQUFFLENBQUMsMENBQTBDLENBQUM7b0JBQ3ZELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDttR0FLUyxLQUFLO3NCQURaLEtBQUs7Z0JBR0UsUUFBUTtzQkFEZixLQUFLO2dCQUdDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBR0MsU0FBUztzQkFEZixLQUFLO2dCQUdDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxNQUFNO3NCQURaLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGZpbGVUb0V4dCwgU3VwcG9ydGVkRXh0ZW5zaW9ucyB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IEpTT04gYXMgSGVzdGlhSnNvbiB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IHRvQ3N2IH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEtY29udmVydCc7XG5cbmludGVyZmFjZSBJTm9kZUluY2x1ZGVkIHtcbiAgbm9kZTogSGVzdGlhSnNvbjxhbnk+O1xuICBpbmNsdWRlZDogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ub2RlLWNzdi1leHBvcnQtY29uZmlybS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBOb2RlQ3N2RXhwb3J0Q29uZmlybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgaGVhZGVyczogc3RyaW5nW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwcml2YXRlIG5vZGVzOiBIZXN0aWFKc29uPGFueT5bXSA9IFtdO1xuICBASW5wdXQoKVxuICBwcml2YXRlIGZpbGVuYW1lID0gJ2Rvd25sb2FkJztcbiAgQElucHV0KClcbiAgcHVibGljIGhlYWRlcktleXM/OiBzdHJpbmdbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGV4dGVuc2lvbiA9IFN1cHBvcnRlZEV4dGVuc2lvbnMuY3N2O1xuICBASW5wdXQoKVxuICBwdWJsaWMgaXNVcGxvYWQgPSB0cnVlO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHB1YmxpYyBjc3ZEYXRhPzogc3RyaW5nO1xuICBwdWJsaWMgY3N2Q29udGVudD86IFNhZmVSZXNvdXJjZVVybDtcbiAgcHVibGljIHNob3dJbmNsdWRlTm9kZXMgPSBmYWxzZTtcbiAgcHVibGljIGluY2x1ZGVkTm9kZXM6IElOb2RlSW5jbHVkZWRbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluY2x1ZGVkTm9kZXMgPSB0aGlzLm5vZGVzLm1hcChub2RlID0+ICh7IG5vZGUsIGluY2x1ZGVkOiB0cnVlIH0pKTtcbiAgICB0aGlzLmNzdkRhdGEgPSB0b0Nzdih0aGlzLm5vZGVzIHx8IFtdLCAhdGhpcy5pc1VwbG9hZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluY2x1ZGVkKCkge1xuICAgIHJldHVybiB0aGlzLmluY2x1ZGVkTm9kZXMuZmlsdGVyKCh7IGluY2x1ZGVkIH0pID0+IGluY2x1ZGVkKTtcbiAgfVxuXG4gIHB1YmxpYyBoZWFkZXJzVXBkYXRlZChoZWFkZXJzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuaGVhZGVycyA9IGhlYWRlcnM7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlQ3N2Q29udGVudCgpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUNzdkNvbnRlbnQoKSB7XG4gICAgY29uc3Qgbm9kZXMgPSB0aGlzLmluY2x1ZGVkLm1hcCgoeyBub2RlIH0pID0+IG5vZGUpO1xuICAgIGNvbnN0IGRhdGEgPSB0b0Nzdihub2RlcywgIXRoaXMuaXNVcGxvYWQsIGZhbHNlLCB0aGlzLmhlYWRlcnMpO1xuICAgIHRoaXMuY3N2Q29udGVudCA9IHRoaXMuaGVhZGVycy5sZW5ndGggPyB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoXG4gICAgICBgZGF0YTp0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCwke2VuY29kZVVSSUNvbXBvbmVudChkYXRhKX1gXG4gICAgKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZG93bmxvYWRGaWxlbmFtZSgpIHtcbiAgICByZXR1cm4gZmlsZVRvRXh0KHRoaXMuZmlsZW5hbWUsIHRoaXMuZXh0ZW5zaW9uKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsIGlzLWFjdGl2ZVwiPlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYmFja2dyb3VuZFwiPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtY2FyZFwiPlxuICAgIDxoZWFkZXIgY2xhc3M9XCJtb2RhbC1jYXJkLWhlYWRcIj5cbiAgICAgIDxwIGNsYXNzPVwibW9kYWwtY2FyZC10aXRsZVwiPkV4cG9ydCBhcyBDU1Y8L3A+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZGVsZXRlXCIgYXJpYS1sYWJlbD1cImNsb3NlXCIgKGNsaWNrKT1cImNsb3NlZC5uZXh0KHRydWUpXCI+PC9idXR0b24+XG4gICAgPC9oZWFkZXI+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJtb2RhbC1jYXJkLWJvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb24gaXMtaW5mb1wiIHJvbGU9XCJhbGVydFwiICpuZ0lmPVwiaXNVcGxvYWRcIj5cbiAgICAgICAgPHNwYW4+QWZ0ZXIgRG93bmxvYWQsIHlvdSBjYW4gZWRpdCBhbmQ8L3NwYW4+XG4gICAgICAgIDxhIGNsYXNzPVwicHgtMVwiIHJvdXRlckxpbms9XCIuLi9cIj51cGxvYWQgdGhlIENTViBmaWxlPC9hPlxuICAgICAgICA8c3Bhbj50byBzdWJtaXQgeW91ciBjb250ZW50IG9uIHRoZSBIZXN0aWEgcGxhdGZvcm0sIGFuZCB5b3VyIGRyYWZ0IHdpbGwgcmVtYWluIHVuY2hhbmdlZC48L3NwYW4+XG5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPHNwYW4+QWx0ZXJuYXRpdmVseSwgeW91IGNhbiBpbXBvcnQgdGhlIENTViBmaWxlIHJpZ2h0IGJhY2sgYnkgY2xpY2tpbmcgb24gdGhlIFwiSW1wb3J0IGZyb20gQ1NWXCIgYnV0dG9uIGFuZCBzZWxlY3RpbmcgdGhlIGV4cG9ydGVkIGZpbGUuPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1VwbG9hZCAmJiBpbmNsdWRlZE5vZGVzLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgPGI+e3tpbmNsdWRlZE5vZGVzLmxlbmd0aH19PC9iPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHgtMVwiPk5vZGVzIHdpbGwgYmUgaW5jbHVkZWQgaW4geW91ciBkb3dubG9hZC48L3NwYW4+XG4gICAgICAgICAgPGEgKGNsaWNrKT1cInNob3dJbmNsdWRlTm9kZXMgPSAhc2hvd0luY2x1ZGVOb2Rlc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93SW5jbHVkZU5vZGVzXCI+U2hvdyBsaXN0PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0luY2x1ZGVOb2Rlc1wiPkhpZGUgbGlzdDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9wPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIiAqbmdJZj1cInNob3dJbmNsdWRlTm9kZXNcIj5cbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBpcy1mdWxsd2lkdGggaXMtaG92ZXJhYmxlIG1iLTBcIj5cbiAgICAgICAgICAgIDx0aGVhZCBjbGFzcz1cImhhcy1iYWNrZ3JvdW5kLWJsYWNrXCI+XG4gICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGg+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhhcy10ZXh0LXdoaXRlXCI+QHR5cGU8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICA8dGg+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhhcy10ZXh0LXdoaXRlXCI+QGlkPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgPHRoPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoYXMtdGV4dC13aGl0ZVwiPk5hbWU8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgbm9kZSBvZiBpbmNsdWRlZE5vZGVzXCI+XG4gICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKmJpbmRPbmNlPVwibm9kZVwiPnt7bm9kZS5ub2RlWydAdHlwZSddfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqYmluZE9uY2U9XCJub2RlXCI+e3tub2RlLm5vZGVbJ0BpZCddfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqYmluZE9uY2U9XCJub2RlXCI+e3tub2RlLm5vZGUubmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxoZS1ub2RlLWNzdi1zZWxlY3QtaGVhZGVycyBbY2xhc3MuaXMtaGlkZGVuXT1cImlzVXBsb2FkXCJcbiAgICAgICAgW2Nzdl09XCJjc3ZEYXRhXCIgW2tleXNdPVwiaGVhZGVyS2V5c1wiIFtpbmNsdWRlRGVmYXVsdENTVl09XCJpc1VwbG9hZFwiXG4gICAgICAgIChoZWFkZXJzQ2hhbmdlZCk9XCJoZWFkZXJzVXBkYXRlZCgkZXZlbnQpXCJcbiAgICAgID48L2hlLW5vZGUtY3N2LXNlbGVjdC1oZWFkZXJzPlxuICAgIDwvc2VjdGlvbj5cbiAgICA8Zm9vdGVyIGNsYXNzPVwibW9kYWwtY2FyZC1mb290XCI+XG4gICAgICA8YSBjbGFzcz1cImJ1dHRvbiBpcy1zdWNjZXNzXCIgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiY3N2Q29udGVudCA/IG51bGwgOiB0cnVlXCJcbiAgICAgICAgW2hyZWZdPVwiY3N2Q29udGVudFwiXG4gICAgICAgIFthdHRyLmRvd25sb2FkXT1cImNzdkNvbnRlbnQgPyBkb3dubG9hZEZpbGVuYW1lIDogbnVsbFwiXG4gICAgICAgIChjbGljayk9XCJjbG9zZWQubmV4dCh0cnVlKVwiXG4gICAgICA+XG4gICAgICAgIDxmYS1pY29uIGNsYXNzPVwibXItMlwiIGljb249XCJkb3dubG9hZFwiPjwvZmEtaWNvbj5cbiAgICAgICAgPHNwYW4+RG93bmxvYWQgQ1NWPC9zcGFuPlxuICAgICAgPC9hPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZWQubmV4dCh0cnVlKVwiPlxuICAgICAgICA8c3Bhbj5DYW5jZWw8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Zvb3Rlcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { __awaiter } from "tslib";
2
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
3
3
  import { moveItemInArray } from '@angular/cdk/drag-drop';
4
4
  import { isDefaultCSVSelected, isCSVIncluded } from '@hestia-earth/json-schema/schema-utils';
5
5
  import * as i0 from "@angular/core";
@@ -104,13 +104,14 @@ export class NodeCsvSelectHeadersComponent {
104
104
  }
105
105
  }
106
106
  NodeCsvSelectHeadersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NodeCsvSelectHeadersComponent, deps: [{ token: i1.HeSchemaService }], target: i0.ɵɵFactoryTarget.Component });
107
- NodeCsvSelectHeadersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: NodeCsvSelectHeadersComponent, selector: "he-node-csv-select-headers", inputs: { csv: "csv", keys: "keys", includeDefaultCSV: "includeDefaultCSV" }, outputs: { headersChanged: "headersChanged" }, ngImport: i0, template: "<p class=\"mb-2\">Please select which columns you would like to include:</p>\n\n<p class=\"my-2 is-size-7\"><i>You can drag and drop the headers to sort them as they would appear in the CSV file.</i></p>\n\n<div class=\"columns toggle-all mx-4 pb-1 mb-0\">\n <div class=\"column\">\n <label class=\"checkbox ml-1\">\n <input type=\"checkbox\" class=\"selector\"\n [(ngModel)]=\"allSelected\"\n (change)=\"toggleAll(); refresh()\"\n >\n <span class=\"ml-2\">Toggle All</span>\n </label>\n </div>\n\n <div class=\"column is-narrow has-text-right\">\n <div class=\"dropdown is-right has-text-left\"\n [class.is-active]=\"showSelectTermFields\"\n (clickOutside)=\"showSelectTermFields = false\"\n >\n <div class=\"dropdown-trigger\" (click)=\"showSelectTermFields = !showSelectTermFields\">\n <button class=\"button is-small\"\n aria-haspopup=\"true\" aria-controls=\"select-menu\"\n >\n <span>Advanced Filters</span>\n <span class=\"icon is-small\">\n <fa-icon icon=\"filter\" aria-hidden=\"true\"></fa-icon>\n </span>\n </button>\n </div>\n <div class=\"dropdown-menu\" id=\"select-menu\" role=\"menu\">\n <div class=\"dropdown-content\">\n <a class=\"dropdown-item\">\n <label class=\"checkbox ml-1\">\n <input type=\"checkbox\" class=\"selector\"\n [(ngModel)]=\"showNonIncluded\"\n (change)=\"refresh()\"\n >\n <span class=\"ml-2\">Include <code>internal</code> fields</span>\n </label>\n </a>\n <div class=\"dropdown-item\">\n <p>Toggle Term Fields</p>\n </div>\n <a class=\"dropdown-item\"\n *ngFor=\"let field of termFields\"\n >\n <label class=\"checkbox ml-1\">\n <input type=\"checkbox\" class=\"selector\"\n [(ngModel)]=\"termFieldSelected[field]\"\n (change)=\"toggleTermField(field)\"\n >\n <span class=\"ml-2\">{{field}}</span>\n </label>\n </a>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"drag-container\" *ngIf=\"!loading; else loader\">\n <div class=\"card\" *ngFor=\"let group of headers | keys\">\n <header class=\"card-header\" *ngIf=\"group.key\">\n <div class=\"card-header-title\">\n <label class=\"checkbox ml-1\">\n <input type=\"checkbox\" class=\"selector\"\n [indeterminate]=\"group.value.partialSelected\"\n [(ngModel)]=\"group.value.selected\"\n (change)=\"updateGroup(group.key); refresh()\"\n >\n <span class=\"ml-2\">{{group.key}}</span>\n </label>\n </div>\n <span class=\"card-header-icon has-text-link\" aria-label=\"open / close\"\n (click)=\"group.value.open = !group.value.open\" pointer\n >\n <span class=\"icon\">\n <fa-icon icon=\"angle-down\" [class.is-hidden]=\"!group.value.open\"></fa-icon>\n <fa-icon icon=\"angle-left\" [class.is-hidden]=\"group.value.open\"></fa-icon>\n </span>\n </span>\n </header>\n\n <div class=\"card-content p-3\" [class.is-hidden]=\"!group.value.open\">\n <ul cdkDropList (cdkDropListDropped)=\"dropHeader($event, group.key)\">\n <ng-container *ngFor=\"let header of group.value.headers\">\n <ng-container *ngIf=\"header.included || showNonIncluded\">\n <li cdkDrag>\n <label class=\"checkbox ml-2\">\n <input type=\"checkbox\" class=\"selector\"\n [(ngModel)]=\"header.selected\"\n (change)=\"updateGroupHeader(group.key); refresh()\"\n >\n <span class=\"ml-2\">{{header.header}}</span>\n </label>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n </div>\n </div>\n</div>\n\n<ng-template #loader>\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n</ng-template>\n", styles: [".toggle-all{border-bottom:1px solid #7a7a7a}.drag-container,.table-container{max-height:45vh;overflow-y:auto}.cdk-drag-preview{border-radius:2px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;list-style:none}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], components: [{ type: i2.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }], directives: [{ type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "id", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListAutoScrollDisabled", "cdkDropListOrientation", "cdkDropListLockAxis", "cdkDropListData", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragDisabled", "cdkDragStartDelay", "cdkDragLockAxis", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragBoundary", "cdkDragRootElement", "cdkDragPreviewContainer", "cdkDragData", "cdkDragFreeDragPosition"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }], pipes: { "keys": i7.KeysPipe } });
107
+ NodeCsvSelectHeadersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: NodeCsvSelectHeadersComponent, selector: "he-node-csv-select-headers", inputs: { csv: "csv", keys: "keys", includeDefaultCSV: "includeDefaultCSV" }, outputs: { headersChanged: "headersChanged" }, ngImport: i0, template: "<p class=\"mb-2\">Please select which columns you would like to include:</p>\n\n<p class=\"my-2 is-size-7\"><i>You can drag and drop the headers to sort them as they would appear in the CSV file.</i></p>\n\n<div class=\"columns toggle-all mx-4 pb-1 mb-0\">\n <div class=\"column\">\n <label class=\"checkbox ml-1\">\n <input type=\"checkbox\" class=\"selector\"\n [(ngModel)]=\"allSelected\"\n (change)=\"toggleAll(); refresh()\"\n >\n <span class=\"ml-2\">Toggle All</span>\n </label>\n </div>\n\n <div class=\"column is-narrow has-text-right\">\n <div class=\"dropdown is-right has-text-left\"\n [class.is-active]=\"showSelectTermFields\"\n (clickOutside)=\"showSelectTermFields = false\"\n >\n <div class=\"dropdown-trigger\" (click)=\"showSelectTermFields = !showSelectTermFields\">\n <button class=\"button is-small\"\n aria-haspopup=\"true\" aria-controls=\"select-menu\"\n >\n <span>Advanced Filters</span>\n <span class=\"icon is-small\">\n <fa-icon icon=\"filter\" aria-hidden=\"true\"></fa-icon>\n </span>\n </button>\n </div>\n <div class=\"dropdown-menu\" id=\"select-menu\" role=\"menu\">\n <div class=\"dropdown-content\">\n <a class=\"dropdown-item\">\n <label class=\"checkbox ml-1\">\n <input type=\"checkbox\" class=\"selector\"\n [(ngModel)]=\"showNonIncluded\"\n (change)=\"refresh()\"\n >\n <span class=\"ml-2\">Include <code>internal</code> fields</span>\n </label>\n </a>\n <div class=\"dropdown-item\">\n <p>Toggle Term Fields</p>\n </div>\n <a class=\"dropdown-item\"\n *ngFor=\"let field of termFields\"\n >\n <label class=\"checkbox ml-1\">\n <input type=\"checkbox\" class=\"selector\"\n [(ngModel)]=\"termFieldSelected[field]\"\n (change)=\"toggleTermField(field)\"\n >\n <span class=\"ml-2\">{{field}}</span>\n </label>\n </a>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"drag-container\" *ngIf=\"!loading; else loader\">\n <div class=\"card\" *ngFor=\"let group of headers | keys\">\n <header class=\"card-header\" *ngIf=\"group.key\">\n <div class=\"card-header-title\">\n <label class=\"checkbox ml-1\">\n <input type=\"checkbox\" class=\"selector\"\n [indeterminate]=\"group.value.partialSelected\"\n [(ngModel)]=\"group.value.selected\"\n (change)=\"updateGroup(group.key); refresh()\"\n >\n <span class=\"ml-2\">{{group.key}}</span>\n </label>\n </div>\n <span class=\"card-header-icon has-text-link\" aria-label=\"open / close\"\n (click)=\"group.value.open = !group.value.open\" pointer\n >\n <span class=\"icon\">\n <fa-icon icon=\"angle-down\" [class.is-hidden]=\"!group.value.open\"></fa-icon>\n <fa-icon icon=\"angle-left\" [class.is-hidden]=\"group.value.open\"></fa-icon>\n </span>\n </span>\n </header>\n\n <div class=\"card-content p-3\" [class.is-hidden]=\"!group.value.open\">\n <ul cdkDropList (cdkDropListDropped)=\"dropHeader($event, group.key)\">\n <ng-container *ngFor=\"let header of group.value.headers\">\n <ng-container *ngIf=\"header.included || showNonIncluded\">\n <li cdkDrag>\n <label class=\"checkbox ml-2\">\n <input type=\"checkbox\" class=\"selector\"\n [(ngModel)]=\"header.selected\"\n (change)=\"updateGroupHeader(group.key); refresh()\"\n >\n <span class=\"ml-2\">{{header.header}}</span>\n </label>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n </div>\n </div>\n</div>\n\n<ng-template #loader>\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n</ng-template>\n", styles: [".toggle-all{border-bottom:1px solid #7a7a7a}.drag-container,.table-container{max-height:45vh;overflow-y:auto}.cdk-drag-preview{border-radius:2px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;list-style:none}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], components: [{ type: i2.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }], directives: [{ type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "id", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListAutoScrollDisabled", "cdkDropListOrientation", "cdkDropListLockAxis", "cdkDropListData", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragDisabled", "cdkDragStartDelay", "cdkDragLockAxis", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragBoundary", "cdkDragRootElement", "cdkDragPreviewContainer", "cdkDragData", "cdkDragFreeDragPosition"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }], pipes: { "keys": i7.KeysPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
108
108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NodeCsvSelectHeadersComponent, decorators: [{
109
109
  type: Component,
110
110
  args: [{
111
111
  selector: 'he-node-csv-select-headers',
112
112
  templateUrl: './node-csv-select-headers.component.html',
113
- styleUrls: ['./node-csv-select-headers.component.scss']
113
+ styleUrls: ['./node-csv-select-headers.component.scss'],
114
+ changeDetection: ChangeDetectionStrategy.OnPush
114
115
  }]
115
116
  }], ctorParameters: function () { return [{ type: i1.HeSchemaService }]; }, propDecorators: { csv: [{
116
117
  type: Input
@@ -121,4 +122,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
121
122
  }], headersChanged: [{
122
123
  type: Output
123
124
  }] } });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jc3Ytc2VsZWN0LWhlYWRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25vZGUvbm9kZS1jc3Ytc2VsZWN0LWhlYWRlcnMvbm9kZS1jc3Ytc2VsZWN0LWhlYWRlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL25vZGUvbm9kZS1jc3Ytc2VsZWN0LWhlYWRlcnMvbm9kZS1jc3Ytc2VsZWN0LWhlYWRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXRFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7Ozs7O0FBc0I3RixNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFO0lBQ3JDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUc7SUFDakIsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVTtDQUNuQyxDQUFDO0FBRUYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQVcsRUFBRSxFQUFFLENBQUM7SUFDOUQsTUFBTSxFQUFFLGFBQWEs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RSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsY0FBYztJQUVQLGVBQWUsQ0FBQyxLQUFhO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDdkQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQztZQUNuRixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzJIQWpHVSw2QkFBNkI7K0dBQTdCLDZCQUE2QiwrTEMzQzFDLGdsSUE2R0E7NEZEbEVhLDZCQUE2QjtrQkFMekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxXQUFXLEVBQUUsMENBQTBDO29CQUN2RCxTQUFTLEVBQUUsQ0FBQywwQ0FBMEMsQ0FBQztpQkFDeEQ7c0dBR1MsR0FBRztzQkFEVixLQUFLO2dCQUdFLElBQUk7c0JBRFgsS0FBSztnQkFHRSxpQkFBaUI7c0JBRHhCLEtBQUs7Z0JBSUUsY0FBYztzQkFEckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IGRlZmluaXRpb25zIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9qc29uLXNjaGVtYSc7XG5pbXBvcnQgeyBpc0RlZmF1bHRDU1ZTZWxlY3RlZCwgaXNDU1ZJbmNsdWRlZCB9IGZyb20gJ0BoZXN0aWEtZWFydGgvanNvbi1zY2hlbWEvc2NoZW1hLXV0aWxzJztcblxuaW1wb3J0IHsgSGVTY2hlbWFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2NoZW1hL3NjaGVtYS5zZXJ2aWNlJztcblxuaW50ZXJmYWNlIElIZWFkZXIge1xuICBoZWFkZXI6IHN0cmluZztcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBgZmFsc2VgIGlmIGl0IGlzIGFuIGBpbnRlcm5hbGAgZmllbGQuXG4gICAqL1xuICBpbmNsdWRlZDogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIElHcm91cGVkSGVhZGVycyB7XG4gIFtncm91cDogc3RyaW5nXToge1xuICAgIHNlbGVjdGVkOiBib29sZWFuO1xuICAgIHBhcnRpYWxTZWxlY3RlZDogYm9vbGVhbjtcbiAgICBvcGVuOiBib29sZWFuO1xuICAgIGhlYWRlcnM6IElIZWFkZXJbXTtcbiAgfTtcbn1cblxuY29uc3QgaGVhZGVyR3JvdXAgPSAoaGVhZGVyOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgcGFydHMgPSBoZWFkZXIuc3BsaXQoJy4nKTtcbiAgcmV0dXJuIHBhcnRzLmxlbmd0aCA9PT0gMiA/ICcnIDogW3BhcnRzWzBdLCBwYXJ0c1sxXV0uam9pbignLicpO1xufTtcblxuY29uc3QgdGVybUZpZWxkcyA9IFtcbiAgJ0BpZCcsICduYW1lJywgJ3VuaXRzJywgJ3Rlcm1UeXBlJ1xuXTtcblxuY29uc3QgaXNUZXJtRmllbGQgPSAoZmllbGQ6IHN0cmluZykgPT4gKHsgaGVhZGVyIH06IElIZWFkZXIpID0+IFtcbiAgJ3Rlcm0nLCAnbWV0aG9kTW9kZWwnLCAnY291bnRyeScsICdwcm9kdWN0JywgJ29wZXJhdGlvbicsICdrZXknXG5dLnNvbWUocGFyZW50ID0+IGhlYWRlci5lbmRzV2l0aChbcGFyZW50LCBmaWVsZF0uam9pbignLicpKSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLW5vZGUtY3N2LXNlbGVjdC1oZWFkZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vZGUtY3N2LXNlbGVjdC1oZWFkZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbm9kZS1jc3Ytc2VsZWN0LWhlYWRlcnMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOb2RlQ3N2U2VsZWN0SGVhZGVyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgY3N2ID0gJyc7XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUga2V5cz86IHN0cmluZ1tdO1xuICBASW5wdXQoKVxuICBwcml2YXRlIGluY2x1ZGVEZWZhdWx0Q1NWID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpXG4gIHByaXZhdGUgaGVhZGVyc0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xuXG4gIHB1YmxpYyBsb2FkaW5nID0gdHJ1ZTtcbiAgcHVibGljIGhlYWRlcnM6IElHcm91cGVkSGVhZGVycyA9IHt9O1xuICBwdWJsaWMgYWxsU2VsZWN0ZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgc2hvd1NlbGVjdFRlcm1GaWVsZHMgPSBmYWxzZTtcbiAgcHVibGljIHRlcm1GaWVsZHMgPSB0ZXJtRmllbGRzO1xuICBwdWJsaWMgdGVybUZpZWxkU2VsZWN0ZWQ6IGFueSA9IHt9O1xuICBwdWJsaWMgc2hvd05vbkluY2x1ZGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzY2hlbWFTZXJ2aWNlOiBIZVNjaGVtYVNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IHNjaGVtYXMgPSBhd2FpdCB0aGlzLnNjaGVtYVNlcnZpY2Uuc2NoZW1hcygpO1xuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBhd2FpdCB0aGlzLmlzU2VsZWN0ZWQoc2NoZW1hcyk7XG4gICAgY29uc3QgaXNJbmNsdWRlZCA9IGlzQ1NWSW5jbHVkZWQoc2NoZW1hcyk7XG4gICAgY29uc3QgaGVhZGVycyA9IGF3YWl0IHRoaXMuc2NoZW1hU2VydmljZS5wYXJzZUhlYWRlcnModGhpcy5jc3YpO1xuICAgIHRoaXMuaGVhZGVycyA9IGhlYWRlcnMucmVkdWNlKChwcmV2LCBoZWFkZXIpID0+IHtcbiAgICAgIGNvbnN0IGdyb3VwID0gaGVhZGVyR3JvdXAoaGVhZGVyKTtcbiAgICAgIHByZXZbZ3JvdXBdID0gcHJldltncm91cF0gfHwgeyBoZWFkZXJzOiBbXSwgc2VsZWN0ZWQ6IGZhbHNlLCBwYXJ0aWFsU2VsZWN0ZWQ6IGZhbHNlLCBvcGVuOiB0cnVlIH07XG4gICAgICBwcmV2W2dyb3VwXS5oZWFkZXJzLnB1c2goeyBoZWFkZXIsIHNlbGVjdGVkOiBpc1NlbGVjdGVkKGhlYWRlciksIGluY2x1ZGVkOiBpc0luY2x1ZGVkKGhlYWRlcikgfSk7XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCB7fSBhcyBJR3JvdXBlZEhlYWRlcnMpO1xuICAgIE9iamVjdC5rZXlzKHRoaXMuaGVhZGVycykubWFwKGdyb3VwS2V5ID0+IHRoaXMudXBkYXRlR3JvdXBIZWFkZXIoZ3JvdXBLZXkpKTtcbiAgICB0aGlzLnRlcm1GaWVsZFNlbGVjdGVkID0gdGVybUZpZWxkcy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+ICh7IC4uLnByZXYsIFtjdXJyXTogY3VyciA9PT0gJ0BpZCcgfSksIHt9KTtcbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaXNTZWxlY3RlZChzY2hlbWFzOiBkZWZpbml0aW9ucykge1xuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLmluY2x1ZGVEZWZhdWx0Q1NWID8gKCkgPT4gdHJ1ZSA6IGlzRGVmYXVsdENTVlNlbGVjdGVkKHNjaGVtYXMpO1xuICAgIHJldHVybiAoa2V5OiBzdHJpbmcpID0+ICghdGhpcy5rZXlzPy5sZW5ndGggfHwgdGhpcy5rZXlzLnNvbWUodiA9PiBrZXkuc3RhcnRzV2l0aCh2KSkpICYmIGlzU2VsZWN0ZWQoa2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBkcm9wSGVhZGVyKGV2ZW50OiBDZGtEcmFnRHJvcDxJSGVhZGVyW10+LCBncm91cEtleTogc3RyaW5nKSB7XG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuaGVhZGVyc1tncm91cEtleV0uaGVhZGVycywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB0aGlzLmhlYWRlcnNDaGFuZ2VkLmVtaXQodGhpcy5zZWxlY3RlZEhlYWRlcnMpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVBbGxTZWxlY3RlZCgpIHtcbiAgICB0aGlzLmFsbFNlbGVjdGVkID0gT2JqZWN0LmtleXModGhpcy5oZWFkZXJzKS5ldmVyeShrZXkgPT4gdGhpcy5oZWFkZXJzW2tleV0uc2VsZWN0ZWQpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUFsbCgpIHtcbiAgICAvLyBzZWxlY3QgYWxsIHRlcm0gZmllbGRzXG4gICAgT2JqZWN0LmtleXModGhpcy50ZXJtRmllbGRTZWxlY3RlZCkubWFwKGtleSA9PiAodGhpcy50ZXJtRmllbGRTZWxlY3RlZFtrZXldID0gdHJ1ZSkpO1xuICAgIC8vIHNlbGVjdCBhbGwga2V5c1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLmhlYWRlcnMpLm1hcCgoW2tleSwgZ3JvdXBdKSA9PiB7XG4gICAgICBncm91cC5zZWxlY3RlZCA9IHRoaXMuYWxsU2VsZWN0ZWQ7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVHcm91cChrZXkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUdyb3VwKGdyb3VwS2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBncm91cCA9IHRoaXMuaGVhZGVyc1tncm91cEtleV07XG4gICAgZ3JvdXAuaGVhZGVycy5tYXAoaGVhZGVyID0+IGhlYWRlci5zZWxlY3RlZCA9IGdyb3VwLnNlbGVjdGVkKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVHcm91cEhlYWRlcihncm91cEtleTogc3RyaW5nKSB7XG4gICAgY29uc3QgZ3JvdXAgPSB0aGlzLmhlYWRlcnNbZ3JvdXBLZXldO1xuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gZ3JvdXAuaGVhZGVycy5ldmVyeSgoeyBzZWxlY3RlZCB9KSA9PiBzZWxlY3RlZCk7XG4gICAgZ3JvdXAuc2VsZWN0ZWQgPSBhbGxTZWxlY3RlZDtcbiAgICBncm91cC5wYXJ0aWFsU2VsZWN0ZWQgPSAhYWxsU2VsZWN0ZWQgJiYgZ3JvdXAuaGVhZGVycy5zb21lKCh7IHNlbGVjdGVkIH0pID0+IHNlbGVjdGVkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRIZWFkZXJzKCkge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMuaGVhZGVycylcbiAgICAgIC5mbGF0TWFwKCh7IGhlYWRlcnMgfSkgPT4gaGVhZGVycylcbiAgICAgIC5maWx0ZXIoKHsgc2VsZWN0ZWQsIGluY2x1ZGVkIH0pID0+IHNlbGVjdGVkICYmIChpbmNsdWRlZCB8fCB0aGlzLnNob3dOb25JbmNsdWRlZCkpXG4gICAgICAubWFwKCh7IGhlYWRlciB9KSA9PiBoZWFkZXIpO1xuICB9XG5cbiAgcHVibGljIHJlZnJlc2goKSB7XG4gICAgdGhpcy51cGRhdGVBbGxTZWxlY3RlZCgpO1xuICAgIHRoaXMuaGVhZGVyc0NoYW5nZWQuZW1pdCh0aGlzLnNlbGVjdGVkSGVhZGVycyk7XG4gIH1cblxuICAvLyBUZXJtIGZpZWxkc1xuXG4gIHB1YmxpYyB0b2dnbGVUZXJtRmllbGQoZmllbGQ6IHN0cmluZykge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy50ZXJtRmllbGRTZWxlY3RlZFtmaWVsZF07XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMuaGVhZGVycykubWFwKChba2V5LCBncm91cF0pID0+IHtcbiAgICAgIGdyb3VwLmhlYWRlcnMuZmlsdGVyKGlzVGVybUZpZWxkKGZpZWxkKSkubWFwKGhlYWRlciA9PiBoZWFkZXIuc2VsZWN0ZWQgPSBzZWxlY3RlZCk7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVHcm91cEhlYWRlcihrZXkpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8cCBjbGFzcz1cIm1iLTJcIj5QbGVhc2Ugc2VsZWN0IHdoaWNoIGNvbHVtbnMgeW91IHdvdWxkIGxpa2UgdG8gaW5jbHVkZTo8L3A+XG5cbjxwIGNsYXNzPVwibXktMiBpcy1zaXplLTdcIj48aT5Zb3UgY2FuIGRyYWcgYW5kIGRyb3AgdGhlIGhlYWRlcnMgdG8gc29ydCB0aGVtIGFzIHRoZXkgd291bGQgYXBwZWFyIGluIHRoZSBDU1YgZmlsZS48L2k+PC9wPlxuXG48ZGl2IGNsYXNzPVwiY29sdW1ucyB0b2dnbGUtYWxsIG14LTQgcGItMSBtYi0wXCI+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjaGVja2JveCBtbC0xXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJzZWxlY3RvclwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiYWxsU2VsZWN0ZWRcIlxuICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUFsbCgpOyByZWZyZXNoKClcIlxuICAgICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtbC0yXCI+VG9nZ2xlIEFsbDwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvdyBoYXMtdGV4dC1yaWdodFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93biBpcy1yaWdodCBoYXMtdGV4dC1sZWZ0XCJcbiAgICAgIFtjbGFzcy5pcy1hY3RpdmVdPVwic2hvd1NlbGVjdFRlcm1GaWVsZHNcIlxuICAgICAgKGNsaWNrT3V0c2lkZSk9XCJzaG93U2VsZWN0VGVybUZpZWxkcyA9IGZhbHNlXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tdHJpZ2dlclwiIChjbGljayk9XCJzaG93U2VsZWN0VGVybUZpZWxkcyA9ICFzaG93U2VsZWN0VGVybUZpZWxkc1wiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCJcbiAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtY29udHJvbHM9XCJzZWxlY3QtbWVudVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3Bhbj5BZHZhbmNlZCBGaWx0ZXJzPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImZpbHRlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGlkPVwic2VsZWN0LW1lbnVcIiByb2xlPVwibWVudVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGVudFwiPlxuICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlY2tib3ggbWwtMVwiPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJzZWxlY3RvclwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzaG93Tm9uSW5jbHVkZWRcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwicmVmcmVzaCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTJcIj5JbmNsdWRlIDxjb2RlPmludGVybmFsPC9jb2RlPiBmaWVsZHM8L3NwYW4+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24taXRlbVwiPlxuICAgICAgICAgICAgPHA+VG9nZ2xlIFRlcm0gRmllbGRzPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZmllbGQgb2YgdGVybUZpZWxkc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlY2tib3ggbWwtMVwiPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJzZWxlY3RvclwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0ZXJtRmllbGRTZWxlY3RlZFtmaWVsZF1cIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlVGVybUZpZWxkKGZpZWxkKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC0yXCI+e3tmaWVsZH19PC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJkcmFnLWNvbnRhaW5lclwiICpuZ0lmPVwiIWxvYWRpbmc7IGVsc2UgbG9hZGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJjYXJkXCIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGhlYWRlcnMgfCBrZXlzXCI+XG4gICAgPGhlYWRlciBjbGFzcz1cImNhcmQtaGVhZGVyXCIgKm5nSWY9XCJncm91cC5rZXlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlci10aXRsZVwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja2JveCBtbC0xXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwic2VsZWN0b3JcIlxuICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiZ3JvdXAudmFsdWUucGFydGlhbFNlbGVjdGVkXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ3JvdXAudmFsdWUuc2VsZWN0ZWRcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVHcm91cChncm91cC5rZXkpOyByZWZyZXNoKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTJcIj57e2dyb3VwLmtleX19PC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cImNhcmQtaGVhZGVyLWljb24gaGFzLXRleHQtbGlua1wiIGFyaWEtbGFiZWw9XCJvcGVuIC8gY2xvc2VcIlxuICAgICAgICAoY2xpY2spPVwiZ3JvdXAudmFsdWUub3BlbiA9ICFncm91cC52YWx1ZS5vcGVuXCIgcG9pbnRlclxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImljb25cIj5cbiAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiYW5nbGUtZG93blwiIFtjbGFzcy5pcy1oaWRkZW5dPVwiIWdyb3VwLnZhbHVlLm9wZW5cIj48L2ZhLWljb24+XG4gICAgICAgICAgPGZhLWljb24gaWNvbj1cImFuZ2xlLWxlZnRcIiBbY2xhc3MuaXMtaGlkZGVuXT1cImdyb3VwLnZhbHVlLm9wZW5cIj48L2ZhLWljb24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2hlYWRlcj5cblxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWNvbnRlbnQgcC0zXCIgW2NsYXNzLmlzLWhpZGRlbl09XCIhZ3JvdXAudmFsdWUub3BlblwiPlxuICAgICAgPHVsIGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcEhlYWRlcigkZXZlbnQsIGdyb3VwLmtleSlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIGdyb3VwLnZhbHVlLmhlYWRlcnNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmluY2x1ZGVkIHx8IHNob3dOb25JbmNsdWRlZFwiPlxuICAgICAgICAgICAgPGxpIGNka0RyYWc+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZWNrYm94IG1sLTJcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJzZWxlY3RvclwiXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImhlYWRlci5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZUdyb3VwSGVhZGVyKGdyb3VwLmtleSk7IHJlZnJlc2goKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWwtMlwiPnt7aGVhZGVyLmhlYWRlcn19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2xvYWRlcj5cbiAgPGRpdiBjbGFzcz1cImhhcy10ZXh0LWNlbnRlciBweS0zXCI+XG4gICAgPGZhLWljb24gaWNvbj1cInNwaW5uZXJcIiBbcHVsc2VdPVwidHJ1ZVwiIHNpemU9XCJsZ1wiPjwvZmEtaWNvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jc3Ytc2VsZWN0LWhlYWRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25vZGUvbm9kZS1jc3Ytc2VsZWN0LWhlYWRlcnMvbm9kZS1jc3Ytc2VsZWN0LWhlYWRlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL25vZGUvbm9kZS1jc3Ytc2VsZWN0LWhlYWRlcnMvbm9kZS1jc3Ytc2VsZWN0LWhlYWRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXRFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7Ozs7O0FBc0I3RixNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFO0lBQ3JDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUc7SUFDakIsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVTtDQUNuQyxDQUFDO0FBRUYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQVcsRUFBRSxFQUFFLENBQUM7SUFDOUQsTUFB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ZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgZGVmaW5pdGlvbnMgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2pzb24tc2NoZW1hJztcbmltcG9ydCB7IGlzRGVmYXVsdENTVlNlbGVjdGVkLCBpc0NTVkluY2x1ZGVkIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9qc29uLXNjaGVtYS9zY2hlbWEtdXRpbHMnO1xuXG5pbXBvcnQgeyBIZVNjaGVtYVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zY2hlbWEvc2NoZW1hLnNlcnZpY2UnO1xuXG5pbnRlcmZhY2UgSUhlYWRlciB7XG4gIGhlYWRlcjogc3RyaW5nO1xuICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIGBmYWxzZWAgaWYgaXQgaXMgYW4gYGludGVybmFsYCBmaWVsZC5cbiAgICovXG4gIGluY2x1ZGVkOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgSUdyb3VwZWRIZWFkZXJzIHtcbiAgW2dyb3VwOiBzdHJpbmddOiB7XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgcGFydGlhbFNlbGVjdGVkOiBib29sZWFuO1xuICAgIG9wZW46IGJvb2xlYW47XG4gICAgaGVhZGVyczogSUhlYWRlcltdO1xuICB9O1xufVxuXG5jb25zdCBoZWFkZXJHcm91cCA9IChoZWFkZXI6IHN0cmluZykgPT4ge1xuICBjb25zdCBwYXJ0cyA9IGhlYWRlci5zcGxpdCgnLicpO1xuICByZXR1cm4gcGFydHMubGVuZ3RoID09PSAyID8gJycgOiBbcGFydHNbMF0sIHBhcnRzWzFdXS5qb2luKCcuJyk7XG59O1xuXG5jb25zdCB0ZXJtRmllbGRzID0gW1xuICAnQGlkJywgJ25hbWUnLCAndW5pdHMnLCAndGVybVR5cGUnXG5dO1xuXG5jb25zdCBpc1Rlcm1GaWVsZCA9IChmaWVsZDogc3RyaW5nKSA9PiAoeyBoZWFkZXIgfTogSUhlYWRlcikgPT4gW1xuICAndGVybScsICdtZXRob2RNb2RlbCcsICdjb3VudHJ5JywgJ3Byb2R1Y3QnLCAnb3BlcmF0aW9uJywgJ2tleSdcbl0uc29tZShwYXJlbnQgPT4gaGVhZGVyLmVuZHNXaXRoKFtwYXJlbnQsIGZpZWxkXS5qb2luKCcuJykpKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtbm9kZS1jc3Ytc2VsZWN0LWhlYWRlcnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vbm9kZS1jc3Ytc2VsZWN0LWhlYWRlcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ub2RlLWNzdi1zZWxlY3QtaGVhZGVycy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBOb2RlQ3N2U2VsZWN0SGVhZGVyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgY3N2ID0gJyc7XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUga2V5cz86IHN0cmluZ1tdO1xuICBASW5wdXQoKVxuICBwcml2YXRlIGluY2x1ZGVEZWZhdWx0Q1NWID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpXG4gIHByaXZhdGUgaGVhZGVyc0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xuXG4gIHB1YmxpYyBsb2FkaW5nID0gdHJ1ZTtcbiAgcHVibGljIGhlYWRlcnM6IElHcm91cGVkSGVhZGVycyA9IHt9O1xuICBwdWJsaWMgYWxsU2VsZWN0ZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgc2hvd1NlbGVjdFRlcm1GaWVsZHMgPSBmYWxzZTtcbiAgcHVibGljIHRlcm1GaWVsZHMgPSB0ZXJtRmllbGRzO1xuICBwdWJsaWMgdGVybUZpZWxkU2VsZWN0ZWQ6IGFueSA9IHt9O1xuICBwdWJsaWMgc2hvd05vbkluY2x1ZGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzY2hlbWFTZXJ2aWNlOiBIZVNjaGVtYVNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IHNjaGVtYXMgPSBhd2FpdCB0aGlzLnNjaGVtYVNlcnZpY2Uuc2NoZW1hcygpO1xuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBhd2FpdCB0aGlzLmlzU2VsZWN0ZWQoc2NoZW1hcyk7XG4gICAgY29uc3QgaXNJbmNsdWRlZCA9IGlzQ1NWSW5jbHVkZWQoc2NoZW1hcyk7XG4gICAgY29uc3QgaGVhZGVycyA9IGF3YWl0IHRoaXMuc2NoZW1hU2VydmljZS5wYXJzZUhlYWRlcnModGhpcy5jc3YpO1xuICAgIHRoaXMuaGVhZGVycyA9IGhlYWRlcnMucmVkdWNlKChwcmV2LCBoZWFkZXIpID0+IHtcbiAgICAgIGNvbnN0IGdyb3VwID0gaGVhZGVyR3JvdXAoaGVhZGVyKTtcbiAgICAgIHByZXZbZ3JvdXBdID0gcHJldltncm91cF0gfHwgeyBoZWFkZXJzOiBbXSwgc2VsZWN0ZWQ6IGZhbHNlLCBwYXJ0aWFsU2VsZWN0ZWQ6IGZhbHNlLCBvcGVuOiB0cnVlIH07XG4gICAgICBwcmV2W2dyb3VwXS5oZWFkZXJzLnB1c2goeyBoZWFkZXIsIHNlbGVjdGVkOiBpc1NlbGVjdGVkKGhlYWRlciksIGluY2x1ZGVkOiBpc0luY2x1ZGVkKGhlYWRlcikgfSk7XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCB7fSBhcyBJR3JvdXBlZEhlYWRlcnMpO1xuICAgIE9iamVjdC5rZXlzKHRoaXMuaGVhZGVycykubWFwKGdyb3VwS2V5ID0+IHRoaXMudXBkYXRlR3JvdXBIZWFkZXIoZ3JvdXBLZXkpKTtcbiAgICB0aGlzLnRlcm1GaWVsZFNlbGVjdGVkID0gdGVybUZpZWxkcy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+ICh7IC4uLnByZXYsIFtjdXJyXTogY3VyciA9PT0gJ0BpZCcgfSksIHt9KTtcbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaXNTZWxlY3RlZChzY2hlbWFzOiBkZWZpbml0aW9ucykge1xuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLmluY2x1ZGVEZWZhdWx0Q1NWID8gKCkgPT4gdHJ1ZSA6IGlzRGVmYXVsdENTVlNlbGVjdGVkKHNjaGVtYXMpO1xuICAgIHJldHVybiAoa2V5OiBzdHJpbmcpID0+ICghdGhpcy5rZXlzPy5sZW5ndGggfHwgdGhpcy5rZXlzLnNvbWUodiA9PiBrZXkuc3RhcnRzV2l0aCh2KSkpICYmIGlzU2VsZWN0ZWQoa2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBkcm9wSGVhZGVyKGV2ZW50OiBDZGtEcmFnRHJvcDxJSGVhZGVyW10+LCBncm91cEtleTogc3RyaW5nKSB7XG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuaGVhZGVyc1tncm91cEtleV0uaGVhZGVycywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB0aGlzLmhlYWRlcnNDaGFuZ2VkLmVtaXQodGhpcy5zZWxlY3RlZEhlYWRlcnMpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVBbGxTZWxlY3RlZCgpIHtcbiAgICB0aGlzLmFsbFNlbGVjdGVkID0gT2JqZWN0LmtleXModGhpcy5oZWFkZXJzKS5ldmVyeShrZXkgPT4gdGhpcy5oZWFkZXJzW2tleV0uc2VsZWN0ZWQpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUFsbCgpIHtcbiAgICAvLyBzZWxlY3QgYWxsIHRlcm0gZmllbGRzXG4gICAgT2JqZWN0LmtleXModGhpcy50ZXJtRmllbGRTZWxlY3RlZCkubWFwKGtleSA9PiAodGhpcy50ZXJtRmllbGRTZWxlY3RlZFtrZXldID0gdHJ1ZSkpO1xuICAgIC8vIHNlbGVjdCBhbGwga2V5c1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLmhlYWRlcnMpLm1hcCgoW2tleSwgZ3JvdXBdKSA9PiB7XG4gICAgICBncm91cC5zZWxlY3RlZCA9IHRoaXMuYWxsU2VsZWN0ZWQ7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVHcm91cChrZXkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUdyb3VwKGdyb3VwS2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBncm91cCA9IHRoaXMuaGVhZGVyc1tncm91cEtleV07XG4gICAgZ3JvdXAuaGVhZGVycy5tYXAoaGVhZGVyID0+IGhlYWRlci5zZWxlY3RlZCA9IGdyb3VwLnNlbGVjdGVkKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVHcm91cEhlYWRlcihncm91cEtleTogc3RyaW5nKSB7XG4gICAgY29uc3QgZ3JvdXAgPSB0aGlzLmhlYWRlcnNbZ3JvdXBLZXldO1xuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gZ3JvdXAuaGVhZGVycy5ldmVyeSgoeyBzZWxlY3RlZCB9KSA9PiBzZWxlY3RlZCk7XG4gICAgZ3JvdXAuc2VsZWN0ZWQgPSBhbGxTZWxlY3RlZDtcbiAgICBncm91cC5wYXJ0aWFsU2VsZWN0ZWQgPSAhYWxsU2VsZWN0ZWQgJiYgZ3JvdXAuaGVhZGVycy5zb21lKCh7IHNlbGVjdGVkIH0pID0+IHNlbGVjdGVkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRIZWFkZXJzKCkge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMuaGVhZGVycylcbiAgICAgIC5mbGF0TWFwKCh7IGhlYWRlcnMgfSkgPT4gaGVhZGVycylcbiAgICAgIC5maWx0ZXIoKHsgc2VsZWN0ZWQsIGluY2x1ZGVkIH0pID0+IHNlbGVjdGVkICYmIChpbmNsdWRlZCB8fCB0aGlzLnNob3dOb25JbmNsdWRlZCkpXG4gICAgICAubWFwKCh7IGhlYWRlciB9KSA9PiBoZWFkZXIpO1xuICB9XG5cbiAgcHVibGljIHJlZnJlc2goKSB7XG4gICAgdGhpcy51cGRhdGVBbGxTZWxlY3RlZCgpO1xuICAgIHRoaXMuaGVhZGVyc0NoYW5nZWQuZW1pdCh0aGlzLnNlbGVjdGVkSGVhZGVycyk7XG4gIH1cblxuICAvLyBUZXJtIGZpZWxkc1xuXG4gIHB1YmxpYyB0b2dnbGVUZXJtRmllbGQoZmllbGQ6IHN0cmluZykge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy50ZXJtRmllbGRTZWxlY3RlZFtmaWVsZF07XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMuaGVhZGVycykubWFwKChba2V5LCBncm91cF0pID0+IHtcbiAgICAgIGdyb3VwLmhlYWRlcnMuZmlsdGVyKGlzVGVybUZpZWxkKGZpZWxkKSkubWFwKGhlYWRlciA9PiBoZWFkZXIuc2VsZWN0ZWQgPSBzZWxlY3RlZCk7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVHcm91cEhlYWRlcihrZXkpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8cCBjbGFzcz1cIm1iLTJcIj5QbGVhc2Ugc2VsZWN0IHdoaWNoIGNvbHVtbnMgeW91IHdvdWxkIGxpa2UgdG8gaW5jbHVkZTo8L3A+XG5cbjxwIGNsYXNzPVwibXktMiBpcy1zaXplLTdcIj48aT5Zb3UgY2FuIGRyYWcgYW5kIGRyb3AgdGhlIGhlYWRlcnMgdG8gc29ydCB0aGVtIGFzIHRoZXkgd291bGQgYXBwZWFyIGluIHRoZSBDU1YgZmlsZS48L2k+PC9wPlxuXG48ZGl2IGNsYXNzPVwiY29sdW1ucyB0b2dnbGUtYWxsIG14LTQgcGItMSBtYi0wXCI+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjaGVja2JveCBtbC0xXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJzZWxlY3RvclwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiYWxsU2VsZWN0ZWRcIlxuICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUFsbCgpOyByZWZyZXNoKClcIlxuICAgICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtbC0yXCI+VG9nZ2xlIEFsbDwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvdyBoYXMtdGV4dC1yaWdodFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93biBpcy1yaWdodCBoYXMtdGV4dC1sZWZ0XCJcbiAgICAgIFtjbGFzcy5pcy1hY3RpdmVdPVwic2hvd1NlbGVjdFRlcm1GaWVsZHNcIlxuICAgICAgKGNsaWNrT3V0c2lkZSk9XCJzaG93U2VsZWN0VGVybUZpZWxkcyA9IGZhbHNlXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tdHJpZ2dlclwiIChjbGljayk9XCJzaG93U2VsZWN0VGVybUZpZWxkcyA9ICFzaG93U2VsZWN0VGVybUZpZWxkc1wiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCJcbiAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtY29udHJvbHM9XCJzZWxlY3QtbWVudVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3Bhbj5BZHZhbmNlZCBGaWx0ZXJzPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImZpbHRlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGlkPVwic2VsZWN0LW1lbnVcIiByb2xlPVwibWVudVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGVudFwiPlxuICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlY2tib3ggbWwtMVwiPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJzZWxlY3RvclwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzaG93Tm9uSW5jbHVkZWRcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwicmVmcmVzaCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTJcIj5JbmNsdWRlIDxjb2RlPmludGVybmFsPC9jb2RlPiBmaWVsZHM8L3NwYW4+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24taXRlbVwiPlxuICAgICAgICAgICAgPHA+VG9nZ2xlIFRlcm0gRmllbGRzPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZmllbGQgb2YgdGVybUZpZWxkc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlY2tib3ggbWwtMVwiPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJzZWxlY3RvclwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0ZXJtRmllbGRTZWxlY3RlZFtmaWVsZF1cIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlVGVybUZpZWxkKGZpZWxkKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC0yXCI+e3tmaWVsZH19PC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJkcmFnLWNvbnRhaW5lclwiICpuZ0lmPVwiIWxvYWRpbmc7IGVsc2UgbG9hZGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJjYXJkXCIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGhlYWRlcnMgfCBrZXlzXCI+XG4gICAgPGhlYWRlciBjbGFzcz1cImNhcmQtaGVhZGVyXCIgKm5nSWY9XCJncm91cC5rZXlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlci10aXRsZVwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja2JveCBtbC0xXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwic2VsZWN0b3JcIlxuICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiZ3JvdXAudmFsdWUucGFydGlhbFNlbGVjdGVkXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ3JvdXAudmFsdWUuc2VsZWN0ZWRcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVHcm91cChncm91cC5rZXkpOyByZWZyZXNoKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTJcIj57e2dyb3VwLmtleX19PC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cImNhcmQtaGVhZGVyLWljb24gaGFzLXRleHQtbGlua1wiIGFyaWEtbGFiZWw9XCJvcGVuIC8gY2xvc2VcIlxuICAgICAgICAoY2xpY2spPVwiZ3JvdXAudmFsdWUub3BlbiA9ICFncm91cC52YWx1ZS5vcGVuXCIgcG9pbnRlclxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImljb25cIj5cbiAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiYW5nbGUtZG93blwiIFtjbGFzcy5pcy1oaWRkZW5dPVwiIWdyb3VwLnZhbHVlLm9wZW5cIj48L2ZhLWljb24+XG4gICAgICAgICAgPGZhLWljb24gaWNvbj1cImFuZ2xlLWxlZnRcIiBbY2xhc3MuaXMtaGlkZGVuXT1cImdyb3VwLnZhbHVlLm9wZW5cIj48L2ZhLWljb24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2hlYWRlcj5cblxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWNvbnRlbnQgcC0zXCIgW2NsYXNzLmlzLWhpZGRlbl09XCIhZ3JvdXAudmFsdWUub3BlblwiPlxuICAgICAgPHVsIGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcEhlYWRlcigkZXZlbnQsIGdyb3VwLmtleSlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIGdyb3VwLnZhbHVlLmhlYWRlcnNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmluY2x1ZGVkIHx8IHNob3dOb25JbmNsdWRlZFwiPlxuICAgICAgICAgICAgPGxpIGNka0RyYWc+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZWNrYm94IG1sLTJcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJzZWxlY3RvclwiXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImhlYWRlci5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZUdyb3VwSGVhZGVyKGdyb3VwLmtleSk7IHJlZnJlc2goKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWwtMlwiPnt7aGVhZGVyLmhlYWRlcn19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2xvYWRlcj5cbiAgPGRpdiBjbGFzcz1cImhhcy10ZXh0LWNlbnRlciBweS0zXCI+XG4gICAgPGZhLWljb24gaWNvbj1cInNwaW5uZXJcIiBbcHVsc2VdPVwidHJ1ZVwiIHNpemU9XCJsZ1wiPjwvZmEtaWNvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,5 +1,5 @@
1
1
  import { __awaiter } from "tslib";
2
- import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
3
3
  import { create, formatters } from 'jsondiffpatch';
4
4
  import { DiffsDisplayType } from './node-diffs.model';
5
5
  import * as i0 from "@angular/core";
@@ -45,13 +45,14 @@ export class NodeDiffsComponent {
45
45
  }
46
46
  }
47
47
  NodeDiffsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NodeDiffsComponent, deps: [{ token: i1.HeNodeService }], target: i0.ɵɵFactoryTarget.Component });
48
- NodeDiffsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: NodeDiffsComponent, selector: "he-node-diffs", inputs: { data: "data", id: "id", type: "type", displayType: "displayType" }, outputs: { diffsLoaded: "diffsLoaded" }, ngImport: i0, template: "<div *ngIf=\"loading\" class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n</div>\n\n<ng-container *ngIf=\"left && right\">\n <ng-container [ngSwitch]=\"displayType\">\n <div *ngSwitchCase=\"DiffsDisplayType.diffs\" [innerHTML]=\"diffHtml\"></div>\n\n <div *ngSwitchCase=\"DiffsDisplayType.sideBySide\" class=\"columns\">\n <div class=\"column is-6\">\n <pre class=\"has-background-black has-text-white\"><code>{{left | json}}</code></pre>\n </div>\n <div class=\"column is-6\">\n <pre class=\"has-background-black has-text-white\"><code>{{right | json}}</code></pre>\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [""], components: [{ type: i2.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], pipes: { "json": i3.JsonPipe } });
48
+ NodeDiffsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: NodeDiffsComponent, selector: "he-node-diffs", inputs: { data: "data", id: "id", type: "type", displayType: "displayType" }, outputs: { diffsLoaded: "diffsLoaded" }, ngImport: i0, template: "<div *ngIf=\"loading\" class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n</div>\n\n<ng-container *ngIf=\"left && right\">\n <ng-container [ngSwitch]=\"displayType\">\n <div *ngSwitchCase=\"DiffsDisplayType.diffs\" [innerHTML]=\"diffHtml\"></div>\n\n <div *ngSwitchCase=\"DiffsDisplayType.sideBySide\" class=\"columns\">\n <div class=\"column is-6\">\n <pre class=\"has-background-black has-text-white\"><code>{{left | json}}</code></pre>\n </div>\n <div class=\"column is-6\">\n <pre class=\"has-background-black has-text-white\"><code>{{right | json}}</code></pre>\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [""], components: [{ type: i2.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], pipes: { "json": i3.JsonPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
49
49
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NodeDiffsComponent, decorators: [{
50
50
  type: Component,
51
51
  args: [{
52
52
  selector: 'he-node-diffs',
53
53
  templateUrl: './node-diffs.component.html',
54
- styleUrls: ['./node-diffs.component.scss']
54
+ styleUrls: ['./node-diffs.component.scss'],
55
+ changeDetection: ChangeDetectionStrategy.OnPush
55
56
  }]
56
57
  }], ctorParameters: function () { return [{ type: i1.HeNodeService }]; }, propDecorators: { data: [{
57
58
  type: Input
@@ -64,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
64
65
  }], diffsLoaded: [{
65
66
  type: Output
66
67
  }] } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1kaWZmcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbm9kZS9ub2RlLWRpZmZzL25vZGUtZGlmZnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL25vZGUvbm9kZS1kaWZmcy9ub2RlLWRpZmZzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQUZ0RCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7QUFLcEMsTUFBTSxnQkFBZ0IsR0FBRztJQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJO0NBQzdCLENBQUM7QUFFRixNQUFNLGlCQUFpQixHQUFHO0lBQ3hCLDhCQUE4QjtJQUM5QixVQUFVLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGFBQWE7Q0FDekcsQ0FBQztBQUVGLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQztJQUN4QixjQUFjLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Q0FDOUYsQ0FBQyxDQUFDO0FBT0gsTUFBTSxPQUFPLGtCQUFrQjtJQW1CN0IsWUFDVSxXQUEwQjtRQUExQixnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQVo3QixnQkFBVyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUdwQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFMUMscUJBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDcEMsWUFBTyxHQUFHLElBQUksQ0FBQztJQU9sQixDQUFDO0lBRUMsUUFBUTs7O1lBQ1osSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxHQUFHLENBQUEsTUFBQSxJQUFJLENBQUMsSUFBSSwwQ0FBRSxJQUFJLEtBQUksSUFBSSxDQUFDLElBQUksQ0FBQztZQUMxQyxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQW1CLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDNUYsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDOztLQUN0QjtJQUVPLFNBQVM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssSUFBSSx1QkFBdUIsQ0FBQztJQUNuRCxDQUFDOztnSEF0Q1Usa0JBQWtCO29HQUFsQixrQkFBa0IsNEtDMUIvQiwrc0JBa0JBOzRGRFFhLGtCQUFrQjtrQkFMOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsV0FBVyxFQUFFLDZCQUE2QjtvQkFDMUMsU0FBUyxFQUFFLENBQUMsNkJBQTZCLENBQUM7aUJBQzNDO29HQUdTLElBQUk7c0JBRFgsS0FBSztnQkFHRSxFQUFFO3NCQURULEtBQUs7Z0JBR0UsSUFBSTtzQkFEWCxLQUFLO2dCQUdDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUUsV0FBVztzQkFEbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGVUeXBlLCBKU09OTEQgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyBjcmVhdGUsIGZvcm1hdHRlcnMgfSBmcm9tICdqc29uZGlmZnBhdGNoJztcbmNvbnN0IG9taXQgPSByZXF1aXJlKCdsb2Rhc2gub21pdCcpO1xuXG5pbXBvcnQgeyBEaWZmc0Rpc3BsYXlUeXBlIH0gZnJvbSAnLi9ub2RlLWRpZmZzLm1vZGVsJztcbmltcG9ydCB7IEhlTm9kZVNlcnZpY2UgfSBmcm9tICcuLi9ub2RlLnNlcnZpY2UnO1xuXG5jb25zdCBpZ25vcmVQcm9wZXJ0aWVzID0gW1xuICAnQHR5cGUnLCAnQGlkJywgJ3R5cGUnLCAnaWQnXG5dO1xuXG5jb25zdCBleGNsdWRlUHJvcGVydGllcyA9IFtcbiAgLy8gcHJvcGVydGllcyBmb3IgaW5kZXhlZCBOb2RlXG4gICdAY29udGV4dCcsICd1cGxvYWREYXRlJywgJ3ZhbGlkYXRpb25EYXRlJywgJ3ZhbGlkYXRpb25CeScsICdzY2hlbWFWZXJzaW9uJywgJ29yaWdpbmFsSWQnLCAnZGF0YVByaXZhdGUnXG5dO1xuXG5jb25zdCBjdXN0b21EaWZmID0gY3JlYXRlKHtcbiAgcHJvcGVydHlGaWx0ZXI6IG5hbWUgPT4gIWlnbm9yZVByb3BlcnRpZXMuaW5jbHVkZXMobmFtZSkgJiYgIWV4Y2x1ZGVQcm9wZXJ0aWVzLmluY2x1ZGVzKG5hbWUpXG59KTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtbm9kZS1kaWZmcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9ub2RlLWRpZmZzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbm9kZS1kaWZmcy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE5vZGVEaWZmc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgZGF0YTogYW55O1xuICBASW5wdXQoKVxuICBwcml2YXRlIGlkPzogc3RyaW5nO1xuICBASW5wdXQoKVxuICBwcml2YXRlIHR5cGU/OiBOb2RlVHlwZTtcbiAgQElucHV0KClcbiAgcHVibGljIGRpc3BsYXlUeXBlID0gRGlmZnNEaXNwbGF5VHlwZS5kaWZmcztcblxuICBAT3V0cHV0KClcbiAgcHJpdmF0ZSBkaWZmc0xvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIHB1YmxpYyBEaWZmc0Rpc3BsYXlUeXBlID0gRGlmZnNEaXNwbGF5VHlwZTtcbiAgcHVibGljIGxvYWRpbmcgPSB0cnVlO1xuICBwdWJsaWMgbGVmdD86IEpTT05MRDxOb2RlVHlwZT47XG4gIHB1YmxpYyByaWdodDogYW55O1xuICBwdWJsaWMgZGlmZkh0bWw/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBub2RlU2VydmljZTogSGVOb2RlU2VydmljZVxuICApIHsgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmlnaHQgPSB0aGlzLmRhdGE7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZGF0YT8udHlwZSB8fCB0aGlzLnR5cGU7XG4gICAgdGhpcy5sZWZ0ID0gYXdhaXQgdGhpcy5ub2RlU2VydmljZS5nZXQ8SlNPTkxEPE5vZGVUeXBlPj4oeyAnQHR5cGUnOiB0eXBlLCAnQGlkJzogdGhpcy5pZCB9KTtcbiAgICB0aGlzLmxvYWREaWZmcygpO1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkRGlmZnMoKSB7XG4gICAgdGhpcy5sZWZ0ID0gb21pdCh0aGlzLmxlZnQsIGV4Y2x1ZGVQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLnJpZ2h0ID0gb21pdCh0aGlzLnJpZ2h0LCBleGNsdWRlUHJvcGVydGllcyk7XG4gICAgY29uc3QgZGVsdGEgPSBjdXN0b21EaWZmLmRpZmYodGhpcy5sZWZ0LCB0aGlzLnJpZ2h0KTtcbiAgICBjb25zdCBkaWZmcyA9IGZvcm1hdHRlcnMuaHRtbC5mb3JtYXQoZGVsdGEhLCB0aGlzLmxlZnQpO1xuICAgIHRoaXMuZGlmZnNMb2FkZWQuZW1pdChkaWZmcyk7XG4gICAgdGhpcy5kaWZmSHRtbCA9IGRpZmZzIHx8ICc8cD5ObyBkaWZmZXJlbmNlLjwvcD4nO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwiaGFzLXRleHQtY2VudGVyIHB5LTNcIj5cbiAgPGZhLWljb24gaWNvbj1cInNwaW5uZXJcIiBbcHVsc2VdPVwidHJ1ZVwiIHNpemU9XCJsZ1wiPjwvZmEtaWNvbj5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwibGVmdCAmJiByaWdodFwiPlxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJkaXNwbGF5VHlwZVwiPlxuICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIkRpZmZzRGlzcGxheVR5cGUuZGlmZnNcIiBbaW5uZXJIVE1MXT1cImRpZmZIdG1sXCI+PC9kaXY+XG5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJEaWZmc0Rpc3BsYXlUeXBlLnNpZGVCeVNpZGVcIiBjbGFzcz1cImNvbHVtbnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtNlwiPlxuICAgICAgICA8cHJlIGNsYXNzPVwiaGFzLWJhY2tncm91bmQtYmxhY2sgaGFzLXRleHQtd2hpdGVcIj48Y29kZT57e2xlZnQgfCBqc29ufX08L2NvZGU+PC9wcmU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtNlwiPlxuICAgICAgICA8cHJlIGNsYXNzPVwiaGFzLWJhY2tncm91bmQtYmxhY2sgaGFzLXRleHQtd2hpdGVcIj48Y29kZT57e3JpZ2h0IHwganNvbn19PC9jb2RlPjwvcHJlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1kaWZmcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbm9kZS9ub2RlLWRpZmZzL25vZGUtZGlmZnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL25vZGUvbm9kZS1kaWZmcy9ub2RlLWRpZmZzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhHLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQUZ0RCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7QUFLcEMsTUFBTSxnQkFBZ0IsR0FBRztJQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJO0NBQzdCLENBQUM7QUFFRixNQUFNLGlCQUFpQixHQUFHO0lBQ3hCLDhCQUE4QjtJQUM5QixVQUFVLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGFBQWE7Q0FDekcsQ0FBQztBQUVGLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQztJQUN4QixjQUFjLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Q0FDOUYsQ0FBQyxDQUFDO0FBUUgsTUFBTSxPQUFPLGtCQUFrQjtJQW1CN0IsWUFDVSxXQUEwQjtRQUExQixnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQVo3QixnQkFBVyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUdwQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFMUMscUJBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDcEMsWUFBTyxHQUFHLElBQUksQ0FBQztJQU9sQixDQUFDO0lBRUMsUUFBUTs7O1lBQ1osSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxHQUFHLENBQUEsTUFBQSxJQUFJLENBQUMsSUFBSSwwQ0FBRSxJQUFJLEtBQUksSUFBSSxDQUFDLElBQUksQ0FBQztZQUMxQyxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQW1CLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDNUYsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDOztLQUN0QjtJQUVPLFNBQVM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssSUFBSSx1QkFBdUIsQ0FBQztJQUNuRCxDQUFDOztnSEF0Q1Usa0JBQWtCO29HQUFsQixrQkFBa0IsNEtDM0IvQiwrc0JBa0JBOzRGRFNhLGtCQUFrQjtrQkFOOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsV0FBVyxFQUFFLDZCQUE2QjtvQkFDMUMsU0FBUyxFQUFFLENBQUMsNkJBQTZCLENBQUM7b0JBQzFDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDtvR0FHUyxJQUFJO3NCQURYLEtBQUs7Z0JBR0UsRUFBRTtzQkFEVCxLQUFLO2dCQUdFLElBQUk7c0JBRFgsS0FBSztnQkFHQyxXQUFXO3NCQURqQixLQUFLO2dCQUlFLFdBQVc7c0JBRGxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm9kZVR5cGUsIEpTT05MRCB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IGNyZWF0ZSwgZm9ybWF0dGVycyB9IGZyb20gJ2pzb25kaWZmcGF0Y2gnO1xuY29uc3Qgb21pdCA9IHJlcXVpcmUoJ2xvZGFzaC5vbWl0Jyk7XG5cbmltcG9ydCB7IERpZmZzRGlzcGxheVR5cGUgfSBmcm9tICcuL25vZGUtZGlmZnMubW9kZWwnO1xuaW1wb3J0IHsgSGVOb2RlU2VydmljZSB9IGZyb20gJy4uL25vZGUuc2VydmljZSc7XG5cbmNvbnN0IGlnbm9yZVByb3BlcnRpZXMgPSBbXG4gICdAdHlwZScsICdAaWQnLCAndHlwZScsICdpZCdcbl07XG5cbmNvbnN0IGV4Y2x1ZGVQcm9wZXJ0aWVzID0gW1xuICAvLyBwcm9wZXJ0aWVzIGZvciBpbmRleGVkIE5vZGVcbiAgJ0Bjb250ZXh0JywgJ3VwbG9hZERhdGUnLCAndmFsaWRhdGlvbkRhdGUnLCAndmFsaWRhdGlvbkJ5JywgJ3NjaGVtYVZlcnNpb24nLCAnb3JpZ2luYWxJZCcsICdkYXRhUHJpdmF0ZSdcbl07XG5cbmNvbnN0IGN1c3RvbURpZmYgPSBjcmVhdGUoe1xuICBwcm9wZXJ0eUZpbHRlcjogbmFtZSA9PiAhaWdub3JlUHJvcGVydGllcy5pbmNsdWRlcyhuYW1lKSAmJiAhZXhjbHVkZVByb3BlcnRpZXMuaW5jbHVkZXMobmFtZSlcbn0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1ub2RlLWRpZmZzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vZGUtZGlmZnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ub2RlLWRpZmZzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE5vZGVEaWZmc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgZGF0YTogYW55O1xuICBASW5wdXQoKVxuICBwcml2YXRlIGlkPzogc3RyaW5nO1xuICBASW5wdXQoKVxuICBwcml2YXRlIHR5cGU/OiBOb2RlVHlwZTtcbiAgQElucHV0KClcbiAgcHVibGljIGRpc3BsYXlUeXBlID0gRGlmZnNEaXNwbGF5VHlwZS5kaWZmcztcblxuICBAT3V0cHV0KClcbiAgcHJpdmF0ZSBkaWZmc0xvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIHB1YmxpYyBEaWZmc0Rpc3BsYXlUeXBlID0gRGlmZnNEaXNwbGF5VHlwZTtcbiAgcHVibGljIGxvYWRpbmcgPSB0cnVlO1xuICBwdWJsaWMgbGVmdD86IEpTT05MRDxOb2RlVHlwZT47XG4gIHB1YmxpYyByaWdodDogYW55O1xuICBwdWJsaWMgZGlmZkh0bWw/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBub2RlU2VydmljZTogSGVOb2RlU2VydmljZVxuICApIHsgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmlnaHQgPSB0aGlzLmRhdGE7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZGF0YT8udHlwZSB8fCB0aGlzLnR5cGU7XG4gICAgdGhpcy5sZWZ0ID0gYXdhaXQgdGhpcy5ub2RlU2VydmljZS5nZXQ8SlNPTkxEPE5vZGVUeXBlPj4oeyAnQHR5cGUnOiB0eXBlLCAnQGlkJzogdGhpcy5pZCB9KTtcbiAgICB0aGlzLmxvYWREaWZmcygpO1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkRGlmZnMoKSB7XG4gICAgdGhpcy5sZWZ0ID0gb21pdCh0aGlzLmxlZnQsIGV4Y2x1ZGVQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLnJpZ2h0ID0gb21pdCh0aGlzLnJpZ2h0LCBleGNsdWRlUHJvcGVydGllcyk7XG4gICAgY29uc3QgZGVsdGEgPSBjdXN0b21EaWZmLmRpZmYodGhpcy5sZWZ0LCB0aGlzLnJpZ2h0KTtcbiAgICBjb25zdCBkaWZmcyA9IGZvcm1hdHRlcnMuaHRtbC5mb3JtYXQoZGVsdGEhLCB0aGlzLmxlZnQpO1xuICAgIHRoaXMuZGlmZnNMb2FkZWQuZW1pdChkaWZmcyk7XG4gICAgdGhpcy5kaWZmSHRtbCA9IGRpZmZzIHx8ICc8cD5ObyBkaWZmZXJlbmNlLjwvcD4nO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwiaGFzLXRleHQtY2VudGVyIHB5LTNcIj5cbiAgPGZhLWljb24gaWNvbj1cInNwaW5uZXJcIiBbcHVsc2VdPVwidHJ1ZVwiIHNpemU9XCJsZ1wiPjwvZmEtaWNvbj5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwibGVmdCAmJiByaWdodFwiPlxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJkaXNwbGF5VHlwZVwiPlxuICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIkRpZmZzRGlzcGxheVR5cGUuZGlmZnNcIiBbaW5uZXJIVE1MXT1cImRpZmZIdG1sXCI+PC9kaXY+XG5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJEaWZmc0Rpc3BsYXlUeXBlLnNpZGVCeVNpZGVcIiBjbGFzcz1cImNvbHVtbnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtNlwiPlxuICAgICAgICA8cHJlIGNsYXNzPVwiaGFzLWJhY2tncm91bmQtYmxhY2sgaGFzLXRleHQtd2hpdGVcIj48Y29kZT57e2xlZnQgfCBqc29ufX08L2NvZGU+PC9wcmU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtNlwiPlxuICAgICAgICA8cHJlIGNsYXNzPVwiaGFzLWJhY2tncm91bmQtYmxhY2sgaGFzLXRleHQtd2hpdGVcIj48Y29kZT57e3JpZ2h0IHwganNvbn19PC9jb2RlPjwvcHJlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=