@rocketshow/designer 1.33.0 → 1.36.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 (69) hide show
  1. package/assets/i18n/de.json +2 -1
  2. package/assets/i18n/en.json +2 -1
  3. package/esm2022/lib/designer.component.mjs +197 -130
  4. package/esm2022/lib/designer.module.mjs +5 -2
  5. package/esm2022/lib/dropzone/dropzone.component.mjs +93 -0
  6. package/esm2022/lib/effect/effect-curve/effect-curve.component.mjs +14 -6
  7. package/esm2022/lib/fixture/fixture-capability/fixture-capability.component.mjs +5 -5
  8. package/esm2022/lib/fixture/fixture-channel/fixture-channel.component.mjs +6 -4
  9. package/esm2022/lib/fixture/fixture.component.mjs +25 -15
  10. package/esm2022/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.mjs +4 -4
  11. package/esm2022/lib/fixture-pool/fixture-pool.component.mjs +73 -21
  12. package/esm2022/lib/models/cached-fixture.mjs +1 -1
  13. package/esm2022/lib/models/fixture-matrix-pixel-group-constraints.mjs +27 -0
  14. package/esm2022/lib/models/fixture-matrix-pixel-group.mjs +12 -0
  15. package/esm2022/lib/models/fixture-matrix.mjs +25 -0
  16. package/esm2022/lib/models/fixture-mode-channel.mjs +26 -0
  17. package/esm2022/lib/models/fixture-mode.mjs +5 -2
  18. package/esm2022/lib/models/fixture-physical.mjs +14 -0
  19. package/esm2022/lib/models/fixture-profile.mjs +16 -1
  20. package/esm2022/lib/models/fixture.mjs +2 -2
  21. package/esm2022/lib/models/preset-fixture.mjs +10 -0
  22. package/esm2022/lib/models/preset.mjs +10 -1
  23. package/esm2022/lib/models/project.mjs +11 -1
  24. package/esm2022/lib/preview/models/color-changer-3d.mjs +5 -108
  25. package/esm2022/lib/preview/models/fixture-3d.mjs +125 -1
  26. package/esm2022/lib/preview/models/moving-head-3d.mjs +3 -122
  27. package/esm2022/lib/preview/preview.component.mjs +21 -16
  28. package/esm2022/lib/services/config.service.mjs +2 -1
  29. package/esm2022/lib/services/fixture.service.mjs +306 -44
  30. package/esm2022/lib/services/preset.service.mjs +92 -42
  31. package/esm2022/lib/services/preview.service.mjs +29 -60
  32. package/esm2022/lib/services/project-load.service.mjs +61 -4
  33. package/esm2022/lib/services/project.service.mjs +11 -15
  34. package/esm2022/lib/timeline/composition-settings/composition-settings.component.mjs +14 -44
  35. package/fesm2022/rocketshow-designer.mjs +1319 -758
  36. package/fesm2022/rocketshow-designer.mjs.map +1 -1
  37. package/lib/designer.component.d.ts +5 -5
  38. package/lib/designer.module.d.ts +15 -14
  39. package/lib/dropzone/dropzone.component.d.ts +24 -0
  40. package/lib/fixture/fixture.component.d.ts +4 -3
  41. package/lib/models/cached-fixture.d.ts +1 -0
  42. package/lib/models/fixture-matrix-pixel-group-constraints.d.ts +8 -0
  43. package/lib/models/fixture-matrix-pixel-group.d.ts +6 -0
  44. package/lib/models/fixture-matrix.d.ts +6 -0
  45. package/lib/models/fixture-mode-channel.d.ts +8 -0
  46. package/lib/models/fixture-mode.d.ts +3 -1
  47. package/lib/models/fixture-physical.d.ts +4 -0
  48. package/lib/models/fixture-profile.d.ts +5 -0
  49. package/lib/models/preset-fixture.d.ts +5 -0
  50. package/lib/models/preset.d.ts +2 -0
  51. package/lib/models/project.d.ts +3 -0
  52. package/lib/preview/models/color-changer-3d.d.ts +1 -11
  53. package/lib/preview/models/fixture-3d.d.ts +11 -0
  54. package/lib/preview/models/moving-head-3d.d.ts +1 -11
  55. package/lib/services/config.service.d.ts +1 -0
  56. package/lib/services/fixture.service.d.ts +12 -2
  57. package/lib/services/preset.service.d.ts +5 -2
  58. package/lib/services/preview.service.d.ts +2 -5
  59. package/lib/services/project-load.service.d.ts +5 -1
  60. package/lib/services/project.service.d.ts +2 -3
  61. package/lib/services/timeline.service.d.ts +1 -1
  62. package/lib/timeline/composition-settings/composition-settings.component.d.ts +2 -1
  63. package/package.json +1 -1
  64. package/rocketshow-designer-1.36.0.tgz +0 -0
  65. package/esm2022/lib/models/universe.mjs +0 -11
  66. package/esm2022/lib/services/universe.service.mjs +0 -23
  67. package/lib/models/universe.d.ts +0 -8
  68. package/lib/services/universe.service.d.ts +0 -9
  69. package/rocketshow-designer-1.33.0.tgz +0 -0
@@ -29,11 +29,15 @@ export class PreviewComponent {
29
29
  this.projectService = projectService;
30
30
  this.fixtures3d = [];
31
31
  this.previewService.doUpdateFixtureSetup.subscribe(() => {
32
- // synchronize the 3d-fixtures to the project fixtures
33
32
  this.syncFixtures();
34
33
  });
34
+ this.syncFixtures();
35
35
  }
36
+ // synchronize the 3d-fixtures to the project fixtures
36
37
  syncFixtures() {
38
+ if (!this.previewService.scene) {
39
+ return;
40
+ }
37
41
  // remove all fixtures
38
42
  for (const fixture3d of this.fixtures3d) {
39
43
  fixture3d.destroy();
@@ -63,16 +67,18 @@ export class PreviewComponent {
63
67
  updateStagePosition(positioning, xMin, xMax, yMin, yMax, zMin, zMax) {
64
68
  let positionCount = 0; // Number of fixtures in the same position
65
69
  let positionIndex = 1;
66
- this.projectService.project.fixtures.forEach((element, index) => {
67
- if (element.positioning === positioning) {
70
+ this.projectService.project.presetFixtures.forEach((element, index) => {
71
+ const fixture = this.fixtureService.getFixtureByUuid(element.fixtureUuid);
72
+ if (fixture.positioning === positioning) {
68
73
  positionCount++;
69
74
  }
70
75
  });
71
- this.projectService.project.fixtures.forEach((element, index) => {
72
- if (element.positioning === positioning) {
73
- element.positionX = xMin + ((xMax - xMin) / (positionCount + 1)) * positionIndex;
74
- element.positionY = yMin + ((yMax - yMin) / (positionCount + 1)) * positionIndex;
75
- element.positionZ = zMin + ((zMax - zMin) / (positionCount + 1)) * positionIndex;
76
+ this.projectService.project.presetFixtures.forEach((element, index) => {
77
+ const fixture = this.fixtureService.getFixtureByUuid(element.fixtureUuid);
78
+ if (fixture.positioning === positioning) {
79
+ fixture.positionX = xMin + ((xMax - xMin) / (positionCount + 1)) * positionIndex;
80
+ fixture.positionY = yMin + ((yMax - yMin) / (positionCount + 1)) * positionIndex;
81
+ fixture.positionZ = zMin + ((zMax - zMin) / (positionCount + 1)) * positionIndex;
76
82
  positionIndex++;
77
83
  }
78
84
  });
@@ -104,11 +110,9 @@ export class PreviewComponent {
104
110
  fixture3d.isSelected = this.fixtureService.settingsFixtureIsSelected(fixture3d.fixture.fixture);
105
111
  }
106
112
  else {
107
- fixture3d.isSelected = this.previewService.fixtureIsSelected(fixture3d.fixture.fixture.uuid, presets);
113
+ fixture3d.isSelected = this.previewService.fixtureIsSelected(fixture3d.fixture.fixture.uuid, fixture3d.fixture.pixelKey, presets);
108
114
  }
109
115
  }
110
- // TODO enable for monitoring the DMX universes
111
- this.previewService.setUniverseValues(calculatedFixtures, this.projectService.project.masterDimmerValue);
112
116
  // Render the scene
113
117
  this.render();
114
118
  requestAnimationFrame(this.animate.bind(this));
@@ -160,14 +164,14 @@ export class PreviewComponent {
160
164
  // this.scene.fog = new THREE.FogExp2( 0x000000, 0.1 );
161
165
  this.previewService.scene = this.scene;
162
166
  // Add a little bit of ambient light
163
- const ambient = new THREE.AmbientLight(0xffffff, 1.5);
167
+ const ambient = new THREE.AmbientLight(0xffffff, 1.8);
164
168
  this.scene.add(ambient);
165
169
  // Create the stage dimensions
166
170
  this.previewService.updateStage();
167
171
  const lights = [];
168
- lights[0] = new THREE.PointLight(0xffffff, 1, 0, 0.1);
169
- lights[1] = new THREE.PointLight(0xffffff, 1, 0, 0.1);
170
- lights[2] = new THREE.PointLight(0xffffff, 1, 0, 0.1);
172
+ lights[0] = new THREE.PointLight(0xffffff, 2, 0, 0.1);
173
+ lights[1] = new THREE.PointLight(0xffffff, 2, 0, 0.1);
174
+ lights[2] = new THREE.PointLight(0xffffff, 2, 0, 0.1);
171
175
  lights[0].position.set(0, 2000, 0);
172
176
  lights[1].position.set(1000, 2000, 1000);
173
177
  lights[2].position.set(-1000, -2000, -1000);
@@ -177,6 +181,7 @@ export class PreviewComponent {
177
181
  this.scene.add(lights[0]);
178
182
  this.scene.add(lights[1]);
179
183
  this.scene.add(lights[2]);
184
+ this.previewService.updateFixtureSetup();
180
185
  }
181
186
  ngAfterViewInit() {
182
187
  this.setupRenderer();
@@ -209,4 +214,4 @@ export class PreviewComponent {
209
214
  args: ['window:resize']
210
215
  }] }); })();
211
216
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PreviewComponent, { className: "PreviewComponent" }); })();
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7O0FBT3ZELE1BQU0sT0FBTyxnQkFBZ0I7SUFXM0IsWUFDVSxjQUE4QixFQUM5QixrQkFBc0MsRUFDdEMsZ0JBQWtDLEVB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SUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVsQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0RCxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFdEQsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDNUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDNUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFFNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckIsQ0FBQztpRkE1UFUsZ0JBQWdCO29FQUFoQixnQkFBZ0I7Ozs7OztZQUFoQix1RkFBQSxjQUFVLCtCQUFNOztZQ3BCN0IsNEJBQTBEOzs7aUZEb0I3QyxnQkFBZ0I7Y0FMNUIsU0FBUzsyQkFDRSxpQkFBaUI7dU1BYW5CLFNBQVM7a0JBRGhCLFNBQVM7bUJBQUMsUUFBUTtZQXNLWixRQUFRO2tCQURkLFlBQVk7bUJBQUMsZUFBZTs7a0ZBN0tsQixnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBPcmJpdENvbnRyb2xzIH0gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL2NvbnRyb2xzL09yYml0Q29udHJvbHMnO1xuaW1wb3J0IHsgRml4dHVyZUNhdGVnb3J5IH0gZnJvbSAnLi4vbW9kZWxzL2ZpeHR1cmUtcHJvZmlsZSc7XG5pbXBvcnQgeyBGaXh0dXJlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZpeHR1cmUuc2VydmljZSc7XG5pbXBvcnQgeyBQcmV2aWV3TWVzaFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcmV2aWV3LW1lc2guc2VydmljZSc7XG5pbXBvcnQgeyBQcmV2aWV3U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3ByZXZpZXcuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9qZWN0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2plY3Quc2VydmljZSc7XG5pbXBvcnQgeyBUaW1lbGluZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90aW1lbGluZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvc2l0aW9uaW5nIH0gZnJvbSAnLi8uLi9tb2RlbHMvZml4dHVyZSc7XG5pbXBvcnQgeyBBbmltYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi8uLi9zZXJ2aWNlcy9hbmltYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDb2xvckNoYW5nZXIzZCB9IGZyb20gJy4vbW9kZWxzL2NvbG9yLWNoYW5nZXItM2QnO1xuaW1wb3J0IHsgRml4dHVyZTNkIH0gZnJvbSAnLi9tb2RlbHMvZml4dHVyZS0zZCc7XG5pbXBvcnQgeyBNb3ZpbmdIZWFkM2QgfSBmcm9tICcuL21vZGVscy9tb3ZpbmctaGVhZC0zZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1hcHAtcHJldmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmV2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJldmlldy5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFByZXZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgcHJpdmF0ZSByZW5kZXJlcjogVEhSRUUuV2ViR0xSZW5kZXJlcjtcbiAgcHJpdmF0ZSBzY2VuZTogVEhSRUUuU2NlbmU7XG4gIHByaXZhdGUgY2FtZXJhOiBUSFJFRS5QZXJzcGVjdGl2ZUNhbWVyYTtcbiAgcHVibGljIGNvbnRyb2xzOiBPcmJpdENvbnRyb2xzO1xuXG4gIHByaXZhdGUgZml4dHVyZXMzZDogRml4dHVyZTNkW10gPSBbXTtcblxuICBAVmlld0NoaWxkKCdjYW52YXMnKVxuICBwcml2YXRlIGNhbnZhc1JlZjogRWxlbWVudFJlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZpeHR1cmVTZXJ2aWNlOiBGaXh0dXJlU2VydmljZSxcbiAgICBwcml2YXRlIHByZXZpZXdNZXNoU2VydmljZTogUHJldmlld01lc2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgYW5pbWF0aW9uU2VydmljZTogQW5pbWF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHByZXZpZXdTZXJ2aWNlOiBQcmV2aWV3U2VydmljZSxcbiAgICBwcml2YXRlIHRpbWVsaW5lU2VydmljZTogVGltZWxpbmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJvamVjdFNlcnZpY2U6IFByb2plY3RTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMucHJldmlld1NlcnZpY2UuZG9VcGRhdGVGaXh0dXJlU2V0dXAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIC8vIHN5bmNocm9uaXplIHRoZSAzZC1maXh0dXJlcyB0byB0aGUgcHJvamVjdCBmaXh0dXJlc1xuICAgICAgdGhpcy5zeW5jRml4dHVyZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3luY0ZpeHR1cmVzKCkge1xuICAgIC8vIHJlbW92ZSBhbGwgZml4dHVyZXNcbiAgICBmb3IgKGNvbnN0IGZpeHR1cmUzZCBvZiB0aGlzLmZpeHR1cmVzM2QpIHtcbiAgICAgIGZpeHR1cmUzZC5kZXN0cm95KCk7XG4gICAgfVxuICAgIHRoaXMuZml4dHVyZXMzZCA9IFtdO1xuXG4gICAgLy8gYWRkIGFsbCBmaXh0dXJlcyBmcm9tIHRoZSBwcm9qZWN0XG4gICAgZm9yIChjb25zdCBmaXh0dXJlIG9mIHRoaXMuZml4dHVyZVNlcnZpY2UuY2FjaGVkRml4dHVyZXMpIHtcbiAgICAgIHN3aXRjaCAoZml4dHVyZS5wcm9maWxlLmNhdGVnb3JpZXNbMF0pIHtcbiAgICAgICAgY2FzZSBGaXh0dXJlQ2F0ZWdvcnlbJ01vdmluZyBIZWFkJ106XG4gICAgICAgICAgdGhpcy5maXh0dXJlczNkLnB1c2gobmV3IE1vdmluZ0hlYWQzZCh0aGlzLmZpeHR1cmVTZXJ2aWNlLCB0aGlzLnByZXZpZXdNZXNoU2VydmljZSwgZml4dHVyZSwgdGhpcy5zY2VuZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZpeHR1cmVDYXRlZ29yeVsnQ29sb3IgQ2hhbmdlciddOlxuICAgICAgICAgIHRoaXMuZml4dHVyZXMzZC5wdXNoKG5ldyBDb2xvckNoYW5nZXIzZCh0aGlzLmZpeHR1cmVTZXJ2aWNlLCB0aGlzLnByZXZpZXdNZXNoU2VydmljZSwgZml4dHVyZSwgdGhpcy5zY2VuZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZpeHR1cmVDYXRlZ29yeVsnQmxpbmRlciddOlxuICAgICAgICAgIHRoaXMuZml4dHVyZXMzZC5wdXNoKG5ldyBDb2xvckNoYW5nZXIzZCh0aGlzLmZpeHR1cmVTZXJ2aWNlLCB0aGlzLnByZXZpZXdNZXNoU2VydmljZSwgZml4dHVyZSwgdGhpcy5zY2VuZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGNhbnZhcygpOiBIVE1MQ2FudmFzRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuY2FudmFzUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlcigpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLnNjZW5lLCB0aGlzLmNhbWVyYSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0YWdlUG9zaXRpb24oXG4gICAgcG9zaXRpb25pbmc6IFBvc2l0aW9uaW5nLFxuICAgIHhNaW46IG51bWJlcixcbiAgICB4TWF4OiBudW1iZXIsXG4gICAgeU1pbjogbnVtYmVyLFxuICAgIHlNYXg6IG51bWJlcixcbiAgICB6TWluOiBudW1iZXIsXG4gICAgek1heDogbnVtYmVyXG4gICkge1xuICAgIGxldCBwb3NpdGlvbkNvdW50ID0gMDsgLy8gTnVtYmVyIG9mIGZpeHR1cmVzIGluIHRoZSBzYW1lIHBvc2l0aW9uXG4gICAgbGV0IHBvc2l0aW9uSW5kZXggPSAxO1xuXG4gICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LmZpeHR1cmVzLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoZWxlbWVudC5wb3NpdGlvbmluZyA9PT0gcG9zaXRpb25pbmcpIHtcbiAgICAgICAgcG9zaXRpb25Db3VudCsrO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LmZpeHR1cmVzLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoZWxlbWVudC5wb3NpdGlvbmluZyA9PT0gcG9zaXRpb25pbmcpIHtcbiAgICAgICAgZWxlbWVudC5wb3NpdGlvblggPSB4TWluICsgKCh4TWF4IC0geE1pbikgLyAocG9zaXRpb25Db3VudCArIDEpKSAqIHBvc2l0aW9uSW5kZXg7XG4gICAgICAgIGVsZW1lbnQucG9zaXRpb25ZID0geU1pbiArICgoeU1heCAtIHlNaW4pIC8gKHBvc2l0aW9uQ291bnQgKyAxKSkgKiBwb3NpdGlvbkluZGV4O1xuICAgICAgICBlbGVtZW50LnBvc2l0aW9uWiA9IHpNaW4gKyAoKHpNYXggLSB6TWluKSAvIChwb3NpdGlvbkNvdW50ICsgMSkpICogcG9zaXRpb25JbmRleDtcblxuICAgICAgICBwb3NpdGlvbkluZGV4Kys7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFuaW1hdGUodGltZU1pbGxpczogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMudGltZWxpbmVTZXJ2aWNlLnBsYXlTdGF0ZSA9PT0gJ3BsYXlpbmcnKSB7XG4gICAgICAvLyBPdmVyd3JpdGUgdGhlIGN1cnJlbnQgdGltZSB3aXRoIHRoZSBwbGF5aW5nIHRpbWUsIGlmIHdlJ3JlIGluIHBsYXliYWNrIG1vZGVcbiAgICAgIHRpbWVNaWxsaXMgPSB0aGlzLnRpbWVsaW5lU2VydmljZS53YXZlU3VyZmVyLmdldEN1cnJlbnRUaW1lKCkgKiAxMDAwO1xuICAgIH1cblxuICAgIHRoaXMuYW5pbWF0aW9uU2VydmljZS50aW1lTWlsbGlzID0gdGltZU1pbGxpcztcblxuICAgIC8vIFVwZGF0ZSB0aGUgY29udHJvbHNcbiAgICBpZiAodGhpcy5jb250cm9scykge1xuICAgICAgdGhpcy5jb250cm9scy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdGhlIHBvc2l0aW9uc1xuICAgIHRoaXMudXBkYXRlU3RhZ2VQb3NpdGlvbihcbiAgICAgIFBvc2l0aW9uaW5nLnRvcEZyb250LFxuICAgICAgLXRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZVdpZHRoQ20gLyAyLFxuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlV2lkdGhDbSAvIDIsXG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VIZWlnaHRDbSArIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZUZsb29ySGVpZ2h0Q20sXG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VIZWlnaHRDbSArIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZUZsb29ySGVpZ2h0Q20sXG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VEZXB0aENtIC8gMiAtIDcwLFxuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRGVwdGhDbSAvIDIgLSA3MFxuICAgICk7XG4gICAgdGhpcy51cGRhdGVTdGFnZVBvc2l0aW9uKFxuICAgICAgUG9zaXRpb25pbmcuYm90dG9tRnJvbnQsXG4gICAgICAtdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlV2lkdGhDbSAvIDIsXG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VXaWR0aENtIC8gMixcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZUZsb29ySGVpZ2h0Q20sXG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VGbG9vckhlaWdodENtLFxuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRGVwdGhDbSAvIDIgLSA3MCxcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZURlcHRoQ20gLyAyIC0gNzBcbiAgICApO1xuICAgIHRoaXMudXBkYXRlU3RhZ2VQb3NpdGlvbihcbiAgICAgIFBvc2l0aW9uaW5nLnRvcEJhY2ssXG4gICAgICAtdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlV2lkdGhDbSAvIDIsXG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VXaWR0aENtIC8gMixcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZUhlaWdodENtICsgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRmxvb3JIZWlnaHRDbSxcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZUhlaWdodENtICsgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRmxvb3JIZWlnaHRDbSxcbiAgICAgIC10aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VEZXB0aENtIC8gMiArIDcwLFxuICAgICAgLXRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZURlcHRoQ20gLyAyICsgNzBcbiAgICApO1xuICAgIHRoaXMudXBkYXRlU3RhZ2VQb3NpdGlvbihcbiAgICAgIFBvc2l0aW9uaW5nLmJvdHRvbUJhY2ssXG4gICAgICAtdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlV2lkdGhDbSAvIDIsXG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VXaWR0aENtIC8gMixcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZUZsb29ySGVpZ2h0Q20sXG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VGbG9vckhlaWdodENtLFxuICAgICAgLXRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZURlcHRoQ20gLyAyICsgNzAsXG4gICAgICAtdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRGVwdGhDbSAvIDIgKyA3MFxuICAgICk7XG5cbiAgICAvLyBVcGRhdGUgYWxsIGZpeHR1cmVzIGFuZCBhcHBseSB0aGUgcHJldmlldyBwcm9wZXJ0aWVzLCBpZiBhdmFpbGFibGVcbiAgICAvLyBUT0RPIFVwZGF0ZSB0aGUgZml4dHVyZXMgb25seSBlLmcuIDQwIHRpbWVzIHBlciBzZWNvbmQgYWNjb3JkaW5nIHRvIHRoZSBcInJlYWxcIiByZWZyZXNoIHJhdGUgb2YgdGhlIERNWCBpbnRlcmZhY2U/XG4gICAgY29uc3QgcHJlc2V0cyA9IHRoaXMucHJldmlld1NlcnZpY2UuZ2V0UHJlc2V0cyh0aW1lTWlsbGlzKTtcblxuICAgIGNvbnN0IGNhbGN1bGF0ZWRGaXh0dXJlcyA9IHRoaXMucHJldmlld1NlcnZpY2UuZ2V0Q2hhbm5lbFZhbHVlcyh0aW1lTWlsbGlzLCBwcmVzZXRzKTtcblxuICAgIGZvciAoY29uc3QgZml4dHVyZTNkIG9mIHRoaXMuZml4dHVyZXMzZCkge1xuICAgICAgLy8gVXBkYXRlIHRoZSBmaXh0dXJlIHByb3BlcnRpZXNcbiAgICAgIGZpeHR1cmUzZC51cGRhdGVQcmV2aWV3KGNhbGN1bGF0ZWRGaXh0dXJlcy5nZXQoZml4dHVyZTNkLmZpeHR1cmUpIHx8IFtdLCB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QubWFzdGVyRGltbWVyVmFsdWUpO1xuXG4gICAgICAvLyBTZWxlY3QgdGhlIGZpeHR1cmUsIGlmIHJlcXVpcmVkXG4gICAgICBpZiAodGhpcy5maXh0dXJlU2VydmljZS5zZXR0aW5nc1NlbGVjdGlvbikge1xuICAgICAgICBmaXh0dXJlM2QuaXNTZWxlY3RlZCA9IHRoaXMuZml4dHVyZVNlcnZpY2Uuc2V0dGluZ3NGaXh0dXJlSXNTZWxlY3RlZChmaXh0dXJlM2QuZml4dHVyZS5maXh0dXJlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpeHR1cmUzZC5pc1NlbGVjdGVkID0gdGhpcy5wcmV2aWV3U2VydmljZS5maXh0dXJlSXNTZWxlY3RlZChmaXh0dXJlM2QuZml4dHVyZS5maXh0dXJlLnV1aWQsIHByZXNldHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE8gZW5hYmxlIGZvciBtb25pdG9yaW5nIHRoZSBETVggdW5pdmVyc2VzXG4gICAgdGhpcy5wcmV2aWV3U2VydmljZS5zZXRVbml2ZXJzZVZhbHVlcyhjYWxjdWxhdGVkRml4dHVyZXMsIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5tYXN0ZXJEaW1tZXJWYWx1ZSk7XG5cbiAgICAvLyBSZW5kZXIgdGhlIHNjZW5lXG4gICAgdGhpcy5yZW5kZXIoKTtcblxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLmFuaW1hdGUuYmluZCh0aGlzKSk7XG4gIH1cblxuICBwcml2YXRlIGdldEFzcGVjdFJhdGlvKCk6IG51bWJlciB7XG4gICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5jYW52YXMuY2xpZW50SGVpZ2h0O1xuXG4gICAgaWYgKGhlaWdodCA9PT0gMCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY2FudmFzLmNsaWVudFdpZHRoIC8gdGhpcy5jYW52YXMuY2xpZW50SGVpZ2h0O1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gIHB1YmxpYyBvblJlc2l6ZSgpIHtcbiAgICB0aGlzLmNhbWVyYS5hc3BlY3QgPSB0aGlzLmdldEFzcGVjdFJhdGlvKCk7XG4gICAgdGhpcy5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U2l6ZSh0aGlzLmNhbnZhcy5jbGllbnRXaWR0aCwgdGhpcy5jYW52YXMuY2xpZW50SGVpZ2h0KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBSZW5kZXJlcigpIHtcbiAgICB0aGlzLnJlbmRlcmVyID0gbmV3IFRIUkVFLldlYkdMUmVuZGVyZXIoeyBhbnRpYWxpYXM6IHRydWUgfSk7XG4gICAgdGhpcy5jYW52YXMuYXBwZW5kQ2hpbGQodGhpcy5yZW5kZXJlci5kb21FbGVtZW50KTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFBpeGVsUmF0aW8oZGV2aWNlUGl4ZWxSYXRpbyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTaXplKHRoaXMuY2FudmFzLmNsaWVudFdpZHRoLCB0aGlzLmNhbnZhcy5jbGllbnRIZWlnaHQpO1xuICAgIC8vIHRoaXMucmVuZGVyZXIuc2hhZG93TWFwLmVuYWJsZWQgPSB0cnVlO1xuICAgIC8vIHRoaXMucmVuZGVyZXIuZ2FtbWFJbnB1dCA9IHRydWU7XG4gICAgLy8gdGhpcy5yZW5kZXJlci5nYW1tYU91dHB1dCA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQ2FtZXJhKCkge1xuICAgIHRoaXMuY2FtZXJhID0gbmV3IFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhKDM1LCB3aW5kb3cuaW5uZXJXaWR0aCAvIHdpbmRvdy5pbm5lckhlaWdodCwgMSwgMTAwMDApO1xuICAgIHRoaXMuY2FtZXJhLnBvc2l0aW9uLnNldCgtNjAwLCA4MCwgNzAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBDb250cm9scygpIHtcbiAgICB0aGlzLmNvbnRyb2xzID0gbmV3IE9yYml0Q29udHJvbHModGhpcy5jYW1lcmEsIHRoaXMucmVuZGVyZXIuZG9tRWxlbWVudCk7XG4gICAgdGhpcy5jb250cm9scy5lbmFibGVLZXlzID0gZmFsc2U7XG4gICAgdGhpcy5jb250cm9scy5yb3RhdGVTcGVlZCA9IDAuMDU7XG4gICAgdGhpcy5jb250cm9scy56b29tU3BlZWQgPSAxLjI7XG4gICAgdGhpcy5jb250cm9scy5lbmFibGVEYW1waW5nID0gdHJ1ZTtcbiAgICB0aGlzLmNvbnRyb2xzLmRhbXBpbmdGYWN0b3IgPSAwLjI1O1xuICAgIHRoaXMuY29udHJvbHMuc2NyZWVuU3BhY2VQYW5uaW5nID0gZmFsc2U7XG4gICAgdGhpcy5jb250cm9scy5taW5EaXN0YW5jZSA9IDcwMDtcbiAgICAvLyB0aGlzLmNvbnRyb2xzLnpvb20gPSAxMDAwO1xuICAgIHRoaXMuY29udHJvbHMubWF4RGlzdGFuY2UgPSAyMDAwO1xuICAgIHRoaXMuY29udHJvbHMubWF4UG9sYXJBbmdsZSA9IE1hdGguUEkgLyAyO1xuICAgIHRoaXMuY29udHJvbHMudGFyZ2V0ID0gbmV3IFRIUkVFLlZlY3RvcjMoMCwgMjAwLCAwKTtcbiAgICAvLyB0aGlzLmNvbnRyb2xzLnJvdGF0aW9uID0gMTAwO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFNjZW5lKCkge1xuICAgIC8vIENyZWF0ZSBhIG5ldyBzY2VuZVxuICAgIHRoaXMuc2NlbmUgPSBuZXcgVEhSRUUuU2NlbmUoKTtcbiAgICAvLyB0aGlzLnNjZW5lLmJhY2tncm91bmQgPSBuZXcgVEhSRUUuQ29sb3IoMHgwODA4MDgpO1xuICAgIC8vIHRoaXMuc2NlbmUuZm9nXHQ9IG5ldyBUSFJFRS5Gb2dFeHAyKCAweDAwMDAwMCwgMC4xICk7XG5cbiAgICB0aGlzLnByZXZpZXdTZXJ2aWNlLnNjZW5lID0gdGhpcy5zY2VuZTtcblxuICAgIC8vIEFkZCBhIGxpdHRsZSBiaXQgb2YgYW1iaWVudCBsaWdodFxuICAgIGNvbnN0IGFtYmllbnQgPSBuZXcgVEhSRUUuQW1iaWVudExpZ2h0KDB4ZmZmZmZmLCAxLjUpO1xuICAgIHRoaXMuc2NlbmUuYWRkKGFtYmllbnQpO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBzdGFnZSBkaW1lbnNpb25zXG4gICAgdGhpcy5wcmV2aWV3U2VydmljZS51cGRhdGVTdGFnZSgpO1xuXG4gICAgY29uc3QgbGlnaHRzID0gW107XG4gICAgbGlnaHRzWzBdID0gbmV3IFRIUkVFLlBvaW50TGlnaHQoMHhmZmZmZmYsIDEsIDAsIDAuMSk7XG4gICAgbGlnaHRzWzFdID0gbmV3IFRIUkVFLlBvaW50TGlnaHQoMHhmZmZmZmYsIDEsIDAsIDAuMSk7XG4gICAgbGlnaHRzWzJdID0gbmV3IFRIUkVFLlBvaW50TGlnaHQoMHhmZmZmZmYsIDEsIDAsIDAuMSk7XG5cbiAgICBsaWdodHNbMF0ucG9zaXRpb24uc2V0KDAsIDIwMDAsIDApO1xuICAgIGxpZ2h0c1sxXS5wb3NpdGlvbi5zZXQoMTAwMCwgMjAwMCwgMTAwMCk7XG4gICAgbGlnaHRzWzJdLnBvc2l0aW9uLnNldCgtMTAwMCwgLTIwMDAsIC0xMDAwKTtcblxuICAgIGxpZ2h0c1swXS5jYXN0U2hhZG93ID0gdHJ1ZTtcbiAgICBsaWdodHNbMV0uY2FzdFNoYWRvdyA9IHRydWU7XG4gICAgbGlnaHRzWzJdLmNhc3RTaGFkb3cgPSB0cnVlO1xuXG4gICAgdGhpcy5zY2VuZS5hZGQobGlnaHRzWzBdKTtcbiAgICB0aGlzLnNjZW5lLmFkZChsaWdodHNbMV0pO1xuICAgIHRoaXMuc2NlbmUuYWRkKGxpZ2h0c1syXSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXR1cFJlbmRlcmVyKCk7XG4gICAgdGhpcy5zZXR1cENhbWVyYSgpO1xuICAgIHRoaXMuc2V0dXBDb250cm9scygpO1xuICAgIHRoaXMuc2V0dXBTY2VuZSgpO1xuXG4gICAgdGhpcy5vblJlc2l6ZSgpO1xuICAgIHRoaXMuYW5pbWF0ZShudWxsKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImgtMTAwXCIgI2NhbnZhcyBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW5cIj48L2Rpdj5cbiJdfQ==
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7O0FBT3ZELE1BQU0sT0FBTyxnQkFBZ0I7SUFXM0IsWUFDVSxjQUE4QixFQUM5QixrQkFBc0MsRUFDdEMsZ0JBQWtDLEVBQ2xDLGNBQThCLEVBQzlCLGVBQWdDLEVBQ2hDLGNBQThCO1FBTDlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFYaEMsZUFBVSxHQUFnQixFQUFFLENBQUM7UUFhbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3RELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsc0RBQXNEO0lBQzlDLFlBQVk7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDL0IsT0FBTztRQUNULENBQUM7UUFFRCxzQkFBc0I7UUFDdEIsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVyQixvQ0FBb0M7UUFDcEMsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pELFFBQVEsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDdEMsS0FBSyxlQUFlLENBQUMsYUFBYSxDQUFDO29CQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQzFHLE1BQU07Z0JBQ1IsS0FBSyxlQUFlLENBQUMsZUFBZSxDQUFDO29CQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQzVHLE1BQU07Z0JBQ1IsS0FBSyxlQUFlLENBQUMsU0FBUyxDQUFDO29CQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQzVHLE1BQU07WUFDVixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFZLE1BQU07UUFDaEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztJQUN0QyxDQUFDO0lBRU8sTUFBTTtRQUNaLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTyxtQkFBbUIsQ0FDekIsV0FBd0IsRUFDeEIsSUFBWSxFQUNaLElBQVksRUFDWixJQUFZLEVBQ1osSUFBWSxFQUNaLElBQVksRUFDWixJQUFZO1FBRVosSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsMENBQTBDO1FBQ2pFLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztRQUV0QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3BFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzFFLElBQUksT0FBTyxDQUFDLFdBQVcsS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDeEMsYUFBYSxFQUFFLENBQUM7WUFDbEIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNwRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMxRSxJQUFJLE9BQU8sQ0FBQyxXQUFXLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQ3hDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUM7Z0JBQ2pGLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUM7Z0JBQ2pGLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUM7Z0JBRWpGLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxPQUFPLENBQUMsVUFBa0I7UUFDaEMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNqRCw4RUFBOEU7WUFDOUUsVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxHQUFHLElBQUksQ0FBQztRQUN2RSxDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFFOUMsc0JBQXNCO1FBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDekIsQ0FBQztRQUVELHVCQUF1QjtRQUN2QixJQUFJLENBQUMsbUJBQW1CLENBQ3RCLFdBQVcsQ0FBQyxRQUFRLEVBQ3BCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLENBQUMsRUFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLENBQUMsRUFDNUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUMxRixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQzFGLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUNqRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FDbEQsQ0FBQztRQUNGLElBQUksQ0FBQyxtQkFBbUIsQ0FDdEIsV0FBVyxDQUFDLFdBQVcsRUFDdkIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUM3QyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFDOUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQzlDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUNqRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FDbEQsQ0FBQztRQUNGLElBQUksQ0FBQyxtQkFBbUIsQ0FDdEIsV0FBVyxDQUFDLE9BQU8sRUFDbkIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUM3QyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQzFGLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFDMUYsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFDbEQsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FDbkQsQ0FBQztRQUNGLElBQUksQ0FBQyxtQkFBbUIsQ0FDdEIsV0FBVyxDQUFDLFVBQVUsRUFDdEIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUM3QyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFDOUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQzlDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQ2xELENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQ25ELENBQUM7UUFFRixxRUFBcUU7UUFDckUsb0hBQW9IO1FBQ3BILE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTNELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFckYsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEMsZ0NBQWdDO1lBQ2hDLFNBQVMsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUV4SCxrQ0FBa0M7WUFDbEMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2xHLENBQUM7aUJBQU0sQ0FBQztnQkFDTixTQUFTLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BJLENBQUM7UUFDSCxDQUFDO1FBRUQsbUJBQW1CO1FBQ25CLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVkLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVPLGNBQWM7UUFDcEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFFeEMsSUFBSSxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakIsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUM1RCxDQUFDO0lBR00sUUFBUTtRQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pFLDBDQUEwQztRQUMxQyxtQ0FBbUM7UUFDbkMsb0NBQW9DO0lBQ3RDLENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUNoQyw2QkFBNkI7UUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BELGdDQUFnQztJQUNsQyxDQUFDO0lBRU8sVUFBVTtRQUNoQixxQkFBcUI7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvQixxREFBcUQ7UUFDckQsdURBQXVEO1FBRXZELElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFdkMsb0NBQW9DO1FBQ3BDLE1BQU0sT0FBTyxHQUFHLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFeEIsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbEMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEQsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0RCxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXRELE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQzVCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQzVCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBRTVCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTFCLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQixDQUFDO2lGQWxRVSxnQkFBZ0I7b0VBQWhCLGdCQUFnQjs7Ozs7O1lBQWhCLHVGQUFBLGNBQVUsK0JBQU07O1lDcEI3Qiw0QkFBMEQ7OztpRkRvQjdDLGdCQUFnQjtjQUw1QixTQUFTOzJCQUNFLGlCQUFpQjt1TUFhbkIsU0FBUztrQkFEaEIsU0FBUzttQkFBQyxRQUFRO1lBMEtaLFFBQVE7a0JBRGQsWUFBWTttQkFBQyxlQUFlOztrRkFqTGxCLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE9yYml0Q29udHJvbHMgfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vY29udHJvbHMvT3JiaXRDb250cm9scyc7XG5pbXBvcnQgeyBGaXh0dXJlQ2F0ZWdvcnkgfSBmcm9tICcuLi9tb2RlbHMvZml4dHVyZS1wcm9maWxlJztcbmltcG9ydCB7IEZpeHR1cmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZml4dHVyZS5zZXJ2aWNlJztcbmltcG9ydCB7IFByZXZpZXdNZXNoU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3ByZXZpZXctbWVzaC5zZXJ2aWNlJztcbmltcG9ydCB7IFByZXZpZXdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJldmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2plY3RTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvamVjdC5zZXJ2aWNlJztcbmltcG9ydCB7IFRpbWVsaW5lU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RpbWVsaW5lLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9zaXRpb25pbmcgfSBmcm9tICcuLy4uL21vZGVscy9maXh0dXJlJztcbmltcG9ydCB7IEFuaW1hdGlvblNlcnZpY2UgfSBmcm9tICcuLy4uL3NlcnZpY2VzL2FuaW1hdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbG9yQ2hhbmdlcjNkIH0gZnJvbSAnLi9tb2RlbHMvY29sb3ItY2hhbmdlci0zZCc7XG5pbXBvcnQgeyBGaXh0dXJlM2QgfSBmcm9tICcuL21vZGVscy9maXh0dXJlLTNkJztcbmltcG9ydCB7IE1vdmluZ0hlYWQzZCB9IGZyb20gJy4vbW9kZWxzL21vdmluZy1oZWFkLTNkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWFwcC1wcmV2aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcmV2aWV3LmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIHJlbmRlcmVyOiBUSFJFRS5XZWJHTFJlbmRlcmVyO1xuICBwcml2YXRlIHNjZW5lOiBUSFJFRS5TY2VuZTtcbiAgcHJpdmF0ZSBjYW1lcmE6IFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhO1xuICBwdWJsaWMgY29udHJvbHM6IE9yYml0Q29udHJvbHM7XG5cbiAgcHJpdmF0ZSBmaXh0dXJlczNkOiBGaXh0dXJlM2RbXSA9IFtdO1xuXG4gIEBWaWV3Q2hpbGQoJ2NhbnZhcycpXG4gIHByaXZhdGUgY2FudmFzUmVmOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZml4dHVyZVNlcnZpY2U6IEZpeHR1cmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJldmlld01lc2hTZXJ2aWNlOiBQcmV2aWV3TWVzaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbmltYXRpb25TZXJ2aWNlOiBBbmltYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJldmlld1NlcnZpY2U6IFByZXZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGltZWxpbmVTZXJ2aWNlOiBUaW1lbGluZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm9qZWN0U2VydmljZTogUHJvamVjdFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5wcmV2aWV3U2VydmljZS5kb1VwZGF0ZUZpeHR1cmVTZXR1cC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zeW5jRml4dHVyZXMoKTtcbiAgICB9KTtcbiAgICB0aGlzLnN5bmNGaXh0dXJlcygpO1xuICB9XG5cbiAgLy8gc3luY2hyb25pemUgdGhlIDNkLWZpeHR1cmVzIHRvIHRoZSBwcm9qZWN0IGZpeHR1cmVzXG4gIHByaXZhdGUgc3luY0ZpeHR1cmVzKCkge1xuICAgIGlmICghdGhpcy5wcmV2aWV3U2VydmljZS5zY2VuZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHJlbW92ZSBhbGwgZml4dHVyZXNcbiAgICBmb3IgKGNvbnN0IGZpeHR1cmUzZCBvZiB0aGlzLmZpeHR1cmVzM2QpIHtcbiAgICAgIGZpeHR1cmUzZC5kZXN0cm95KCk7XG4gICAgfVxuICAgIHRoaXMuZml4dHVyZXMzZCA9IFtdO1xuXG4gICAgLy8gYWRkIGFsbCBmaXh0dXJlcyBmcm9tIHRoZSBwcm9qZWN0XG4gICAgZm9yIChjb25zdCBmaXh0dXJlIG9mIHRoaXMuZml4dHVyZVNlcnZpY2UuY2FjaGVkRml4dHVyZXMpIHtcbiAgICAgIHN3aXRjaCAoZml4dHVyZS5wcm9maWxlLmNhdGVnb3JpZXNbMF0pIHtcbiAgICAgICAgY2FzZSBGaXh0dXJlQ2F0ZWdvcnlbJ01vdmluZyBIZWFkJ106XG4gICAgICAgICAgdGhpcy5maXh0dXJlczNkLnB1c2gobmV3IE1vdmluZ0hlYWQzZCh0aGlzLmZpeHR1cmVTZXJ2aWNlLCB0aGlzLnByZXZpZXdNZXNoU2VydmljZSwgZml4dHVyZSwgdGhpcy5zY2VuZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZpeHR1cmVDYXRlZ29yeVsnQ29sb3IgQ2hhbmdlciddOlxuICAgICAgICAgIHRoaXMuZml4dHVyZXMzZC5wdXNoKG5ldyBDb2xvckNoYW5nZXIzZCh0aGlzLmZpeHR1cmVTZXJ2aWNlLCB0aGlzLnByZXZpZXdNZXNoU2VydmljZSwgZml4dHVyZSwgdGhpcy5zY2VuZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZpeHR1cmVDYXRlZ29yeVsnQmxpbmRlciddOlxuICAgICAgICAgIHRoaXMuZml4dHVyZXMzZC5wdXNoKG5ldyBDb2xvckNoYW5nZXIzZCh0aGlzLmZpeHR1cmVTZXJ2aWNlLCB0aGlzLnByZXZpZXdNZXNoU2VydmljZSwgZml4dHVyZSwgdGhpcy5zY2VuZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGNhbnZhcygpOiBIVE1MQ2FudmFzRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuY2FudmFzUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlcigpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLnNjZW5lLCB0aGlzLmNhbWVyYSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0YWdlUG9zaXRpb24oXG4gICAgcG9zaXRpb25pbmc6IFBvc2l0aW9uaW5nLFxuICAgIHhNaW46IG51bWJlcixcbiAgICB4TWF4OiBudW1iZXIsXG4gICAgeU1pbjogbnVtYmVyLFxuICAgIHlNYXg6IG51bWJlcixcbiAgICB6TWluOiBudW1iZXIsXG4gICAgek1heDogbnVtYmVyXG4gICkge1xuICAgIGxldCBwb3NpdGlvbkNvdW50ID0gMDsgLy8gTnVtYmVyIG9mIGZpeHR1cmVzIGluIHRoZSBzYW1lIHBvc2l0aW9uXG4gICAgbGV0IHBvc2l0aW9uSW5kZXggPSAxO1xuXG4gICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnByZXNldEZpeHR1cmVzLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBmaXh0dXJlID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRGaXh0dXJlQnlVdWlkKGVsZW1lbnQuZml4dHVyZVV1aWQpO1xuICAgICAgaWYgKGZpeHR1cmUucG9zaXRpb25pbmcgPT09IHBvc2l0aW9uaW5nKSB7XG4gICAgICAgIHBvc2l0aW9uQ291bnQrKztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5wcmVzZXRGaXh0dXJlcy5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgZml4dHVyZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0Rml4dHVyZUJ5VXVpZChlbGVtZW50LmZpeHR1cmVVdWlkKTtcbiAgICAgIGlmIChmaXh0dXJlLnBvc2l0aW9uaW5nID09PSBwb3NpdGlvbmluZykge1xuICAgICAgICBmaXh0dXJlLnBvc2l0aW9uWCA9IHhNaW4gKyAoKHhNYXggLSB4TWluKSAvIChwb3NpdGlvbkNvdW50ICsgMSkpICogcG9zaXRpb25JbmRleDtcbiAgICAgICAgZml4dHVyZS5wb3NpdGlvblkgPSB5TWluICsgKCh5TWF4IC0geU1pbikgLyAocG9zaXRpb25Db3VudCArIDEpKSAqIHBvc2l0aW9uSW5kZXg7XG4gICAgICAgIGZpeHR1cmUucG9zaXRpb25aID0gek1pbiArICgoek1heCAtIHpNaW4pIC8gKHBvc2l0aW9uQ291bnQgKyAxKSkgKiBwb3NpdGlvbkluZGV4O1xuXG4gICAgICAgIHBvc2l0aW9uSW5kZXgrKztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYW5pbWF0ZSh0aW1lTWlsbGlzOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy50aW1lbGluZVNlcnZpY2UucGxheVN0YXRlID09PSAncGxheWluZycpIHtcbiAgICAgIC8vIE92ZXJ3cml0ZSB0aGUgY3VycmVudCB0aW1lIHdpdGggdGhlIHBsYXlpbmcgdGltZSwgaWYgd2UncmUgaW4gcGxheWJhY2sgbW9kZVxuICAgICAgdGltZU1pbGxpcyA9IHRoaXMudGltZWxpbmVTZXJ2aWNlLndhdmVTdXJmZXIuZ2V0Q3VycmVudFRpbWUoKSAqIDEwMDA7XG4gICAgfVxuXG4gICAgdGhpcy5hbmltYXRpb25TZXJ2aWNlLnRpbWVNaWxsaXMgPSB0aW1lTWlsbGlzO1xuXG4gICAgLy8gVXBkYXRlIHRoZSBjb250cm9sc1xuICAgIGlmICh0aGlzLmNvbnRyb2xzKSB7XG4gICAgICB0aGlzLmNvbnRyb2xzLnVwZGF0ZSgpO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgcG9zaXRpb25zXG4gICAgdGhpcy51cGRhdGVTdGFnZVBvc2l0aW9uKFxuICAgICAgUG9zaXRpb25pbmcudG9wRnJvbnQsXG4gICAgICAtdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlV2lkdGhDbSAvIDIsXG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VXaWR0aENtIC8gMixcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZUhlaWdodENtICsgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRmxvb3JIZWlnaHRDbSxcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZUhlaWdodENtICsgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRmxvb3JIZWlnaHRDbSxcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZURlcHRoQ20gLyAyIC0gNzAsXG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VEZXB0aENtIC8gMiAtIDcwXG4gICAgKTtcbiAgICB0aGlzLnVwZGF0ZVN0YWdlUG9zaXRpb24oXG4gICAgICBQb3NpdGlvbmluZy5ib3R0b21Gcm9udCxcbiAgICAgIC10aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VXaWR0aENtIC8gMixcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZVdpZHRoQ20gLyAyLFxuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRmxvb3JIZWlnaHRDbSxcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZUZsb29ySGVpZ2h0Q20sXG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VEZXB0aENtIC8gMiAtIDcwLFxuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRGVwdGhDbSAvIDIgLSA3MFxuICAgICk7XG4gICAgdGhpcy51cGRhdGVTdGFnZVBvc2l0aW9uKFxuICAgICAgUG9zaXRpb25pbmcudG9wQmFjayxcbiAgICAgIC10aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VXaWR0aENtIC8gMixcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZVdpZHRoQ20gLyAyLFxuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlSGVpZ2h0Q20gKyB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VGbG9vckhlaWdodENtLFxuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlSGVpZ2h0Q20gKyB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VGbG9vckhlaWdodENtLFxuICAgICAgLXRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZURlcHRoQ20gLyAyICsgNzAsXG4gICAgICAtdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRGVwdGhDbSAvIDIgKyA3MFxuICAgICk7XG4gICAgdGhpcy51cGRhdGVTdGFnZVBvc2l0aW9uKFxuICAgICAgUG9zaXRpb25pbmcuYm90dG9tQmFjayxcbiAgICAgIC10aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VXaWR0aENtIC8gMixcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZVdpZHRoQ20gLyAyLFxuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRmxvb3JIZWlnaHRDbSxcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZUZsb29ySGVpZ2h0Q20sXG4gICAgICAtdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRGVwdGhDbSAvIDIgKyA3MCxcbiAgICAgIC10aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VEZXB0aENtIC8gMiArIDcwXG4gICAgKTtcblxuICAgIC8vIFVwZGF0ZSBhbGwgZml4dHVyZXMgYW5kIGFwcGx5IHRoZSBwcmV2aWV3IHByb3BlcnRpZXMsIGlmIGF2YWlsYWJsZVxuICAgIC8vIFRPRE8gVXBkYXRlIHRoZSBmaXh0dXJlcyBvbmx5IGUuZy4gNDAgdGltZXMgcGVyIHNlY29uZCBhY2NvcmRpbmcgdG8gdGhlIFwicmVhbFwiIHJlZnJlc2ggcmF0ZSBvZiB0aGUgRE1YIGludGVyZmFjZT9cbiAgICBjb25zdCBwcmVzZXRzID0gdGhpcy5wcmV2aWV3U2VydmljZS5nZXRQcmVzZXRzKHRpbWVNaWxsaXMpO1xuXG4gICAgY29uc3QgY2FsY3VsYXRlZEZpeHR1cmVzID0gdGhpcy5wcmV2aWV3U2VydmljZS5nZXRDaGFubmVsVmFsdWVzKHRpbWVNaWxsaXMsIHByZXNldHMpO1xuXG4gICAgZm9yIChjb25zdCBmaXh0dXJlM2Qgb2YgdGhpcy5maXh0dXJlczNkKSB7XG4gICAgICAvLyBVcGRhdGUgdGhlIGZpeHR1cmUgcHJvcGVydGllc1xuICAgICAgZml4dHVyZTNkLnVwZGF0ZVByZXZpZXcoY2FsY3VsYXRlZEZpeHR1cmVzLmdldChmaXh0dXJlM2QuZml4dHVyZSkgfHwgW10sIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5tYXN0ZXJEaW1tZXJWYWx1ZSk7XG5cbiAgICAgIC8vIFNlbGVjdCB0aGUgZml4dHVyZSwgaWYgcmVxdWlyZWRcbiAgICAgIGlmICh0aGlzLmZpeHR1cmVTZXJ2aWNlLnNldHRpbmdzU2VsZWN0aW9uKSB7XG4gICAgICAgIGZpeHR1cmUzZC5pc1NlbGVjdGVkID0gdGhpcy5maXh0dXJlU2VydmljZS5zZXR0aW5nc0ZpeHR1cmVJc1NlbGVjdGVkKGZpeHR1cmUzZC5maXh0dXJlLmZpeHR1cmUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZml4dHVyZTNkLmlzU2VsZWN0ZWQgPSB0aGlzLnByZXZpZXdTZXJ2aWNlLmZpeHR1cmVJc1NlbGVjdGVkKGZpeHR1cmUzZC5maXh0dXJlLmZpeHR1cmUudXVpZCwgZml4dHVyZTNkLmZpeHR1cmUucGl4ZWxLZXksIHByZXNldHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlbmRlciB0aGUgc2NlbmVcbiAgICB0aGlzLnJlbmRlcigpO1xuXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0ZS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXNwZWN0UmF0aW8oKTogbnVtYmVyIHtcbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmNhbnZhcy5jbGllbnRIZWlnaHQ7XG5cbiAgICBpZiAoaGVpZ2h0ID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jYW52YXMuY2xpZW50V2lkdGggLyB0aGlzLmNhbnZhcy5jbGllbnRIZWlnaHQ7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgcHVibGljIG9uUmVzaXplKCkge1xuICAgIHRoaXMuY2FtZXJhLmFzcGVjdCA9IHRoaXMuZ2V0QXNwZWN0UmF0aW8oKTtcbiAgICB0aGlzLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTaXplKHRoaXMuY2FudmFzLmNsaWVudFdpZHRoLCB0aGlzLmNhbnZhcy5jbGllbnRIZWlnaHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFJlbmRlcmVyKCkge1xuICAgIHRoaXMucmVuZGVyZXIgPSBuZXcgVEhSRUUuV2ViR0xSZW5kZXJlcih7IGFudGlhbGlhczogdHJ1ZSB9KTtcbiAgICB0aGlzLmNhbnZhcy5hcHBlbmRDaGlsZCh0aGlzLnJlbmRlcmVyLmRvbUVsZW1lbnQpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0UGl4ZWxSYXRpbyhkZXZpY2VQaXhlbFJhdGlvKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFNpemUodGhpcy5jYW52YXMuY2xpZW50V2lkdGgsIHRoaXMuY2FudmFzLmNsaWVudEhlaWdodCk7XG4gICAgLy8gdGhpcy5yZW5kZXJlci5zaGFkb3dNYXAuZW5hYmxlZCA9IHRydWU7XG4gICAgLy8gdGhpcy5yZW5kZXJlci5nYW1tYUlucHV0ID0gdHJ1ZTtcbiAgICAvLyB0aGlzLnJlbmRlcmVyLmdhbW1hT3V0cHV0ID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBDYW1lcmEoKSB7XG4gICAgdGhpcy5jYW1lcmEgPSBuZXcgVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEoMzUsIHdpbmRvdy5pbm5lcldpZHRoIC8gd2luZG93LmlubmVySGVpZ2h0LCAxLCAxMDAwMCk7XG4gICAgdGhpcy5jYW1lcmEucG9zaXRpb24uc2V0KC02MDAsIDgwLCA3MDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cENvbnRyb2xzKCkge1xuICAgIHRoaXMuY29udHJvbHMgPSBuZXcgT3JiaXRDb250cm9scyh0aGlzLmNhbWVyYSwgdGhpcy5yZW5kZXJlci5kb21FbGVtZW50KTtcbiAgICB0aGlzLmNvbnRyb2xzLmVuYWJsZUtleXMgPSBmYWxzZTtcbiAgICB0aGlzLmNvbnRyb2xzLnJvdGF0ZVNwZWVkID0gMC4wNTtcbiAgICB0aGlzLmNvbnRyb2xzLnpvb21TcGVlZCA9IDEuMjtcbiAgICB0aGlzLmNvbnRyb2xzLmVuYWJsZURhbXBpbmcgPSB0cnVlO1xuICAgIHRoaXMuY29udHJvbHMuZGFtcGluZ0ZhY3RvciA9IDAuMjU7XG4gICAgdGhpcy5jb250cm9scy5zY3JlZW5TcGFjZVBhbm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLmNvbnRyb2xzLm1pbkRpc3RhbmNlID0gNzAwO1xuICAgIC8vIHRoaXMuY29udHJvbHMuem9vbSA9IDEwMDA7XG4gICAgdGhpcy5jb250cm9scy5tYXhEaXN0YW5jZSA9IDIwMDA7XG4gICAgdGhpcy5jb250cm9scy5tYXhQb2xhckFuZ2xlID0gTWF0aC5QSSAvIDI7XG4gICAgdGhpcy5jb250cm9scy50YXJnZXQgPSBuZXcgVEhSRUUuVmVjdG9yMygwLCAyMDAsIDApO1xuICAgIC8vIHRoaXMuY29udHJvbHMucm90YXRpb24gPSAxMDA7XG4gIH1cblxuICBwcml2YXRlIHNldHVwU2NlbmUoKSB7XG4gICAgLy8gQ3JlYXRlIGEgbmV3IHNjZW5lXG4gICAgdGhpcy5zY2VuZSA9IG5ldyBUSFJFRS5TY2VuZSgpO1xuICAgIC8vIHRoaXMuc2NlbmUuYmFja2dyb3VuZCA9IG5ldyBUSFJFRS5Db2xvcigweDA4MDgwOCk7XG4gICAgLy8gdGhpcy5zY2VuZS5mb2dcdD0gbmV3IFRIUkVFLkZvZ0V4cDIoIDB4MDAwMDAwLCAwLjEgKTtcblxuICAgIHRoaXMucHJldmlld1NlcnZpY2Uuc2NlbmUgPSB0aGlzLnNjZW5lO1xuXG4gICAgLy8gQWRkIGEgbGl0dGxlIGJpdCBvZiBhbWJpZW50IGxpZ2h0XG4gICAgY29uc3QgYW1iaWVudCA9IG5ldyBUSFJFRS5BbWJpZW50TGlnaHQoMHhmZmZmZmYsIDEuOCk7XG4gICAgdGhpcy5zY2VuZS5hZGQoYW1iaWVudCk7XG5cbiAgICAvLyBDcmVhdGUgdGhlIHN0YWdlIGRpbWVuc2lvbnNcbiAgICB0aGlzLnByZXZpZXdTZXJ2aWNlLnVwZGF0ZVN0YWdlKCk7XG5cbiAgICBjb25zdCBsaWdodHMgPSBbXTtcbiAgICBsaWdodHNbMF0gPSBuZXcgVEhSRUUuUG9pbnRMaWdodCgweGZmZmZmZiwgMiwgMCwgMC4xKTtcbiAgICBsaWdodHNbMV0gPSBuZXcgVEhSRUUuUG9pbnRMaWdodCgweGZmZmZmZiwgMiwgMCwgMC4xKTtcbiAgICBsaWdodHNbMl0gPSBuZXcgVEhSRUUuUG9pbnRMaWdodCgweGZmZmZmZiwgMiwgMCwgMC4xKTtcblxuICAgIGxpZ2h0c1swXS5wb3NpdGlvbi5zZXQoMCwgMjAwMCwgMCk7XG4gICAgbGlnaHRzWzFdLnBvc2l0aW9uLnNldCgxMDAwLCAyMDAwLCAxMDAwKTtcbiAgICBsaWdodHNbMl0ucG9zaXRpb24uc2V0KC0xMDAwLCAtMjAwMCwgLTEwMDApO1xuXG4gICAgbGlnaHRzWzBdLmNhc3RTaGFkb3cgPSB0cnVlO1xuICAgIGxpZ2h0c1sxXS5jYXN0U2hhZG93ID0gdHJ1ZTtcbiAgICBsaWdodHNbMl0uY2FzdFNoYWRvdyA9IHRydWU7XG5cbiAgICB0aGlzLnNjZW5lLmFkZChsaWdodHNbMF0pO1xuICAgIHRoaXMuc2NlbmUuYWRkKGxpZ2h0c1sxXSk7XG4gICAgdGhpcy5zY2VuZS5hZGQobGlnaHRzWzJdKTtcblxuICAgIHRoaXMucHJldmlld1NlcnZpY2UudXBkYXRlRml4dHVyZVNldHVwKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXR1cFJlbmRlcmVyKCk7XG4gICAgdGhpcy5zZXR1cENhbWVyYSgpO1xuICAgIHRoaXMuc2V0dXBDb250cm9scygpO1xuICAgIHRoaXMuc2V0dXBTY2VuZSgpO1xuXG4gICAgdGhpcy5vblJlc2l6ZSgpO1xuICAgIHRoaXMuYW5pbWF0ZShudWxsKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImgtMTAwXCIgI2NhbnZhcyBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW5cIj48L2Rpdj5cbiJdfQ==
@@ -13,6 +13,7 @@ export class ConfigService {
13
13
  this.localProfiles = false;
14
14
  this.intro = false;
15
15
  this.uniqueProjectNames = false;
16
+ this.dropzoneChunking = true;
16
17
  this.menuHeightChanged = new Subject();
17
18
  }
18
19
  static { this.ɵfac = function ConfigService_Factory(t) { return new (t || ConfigService)(); }; }
@@ -24,4 +25,4 @@ export class ConfigService {
24
25
  providedIn: 'root',
25
26
  }]
26
27
  }], () => [], null); })();
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLL0IsTUFBTSxPQUFPLGFBQWE7SUFleEI7UUFiTyx1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0IsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCx1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFM0Isc0JBQWlCLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7SUFFL0MsQ0FBQzs4RUFmTCxhQUFhO3VFQUFiLGFBQWEsV0FBYixhQUFhLG1CQUZaLE1BQU07O2lGQUVQLGFBQWE7Y0FIekIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlnU2VydmljZSB7XG4gIHB1YmxpYyByZXN0VXJsOiBzdHJpbmc7XG4gIHB1YmxpYyBlbmFibGVNZWRpYUxpYnJhcnkgPSBmYWxzZTtcbiAgcHVibGljIGxvZ2luQXZhaWxhYmxlID0gZmFsc2U7XG4gIHB1YmxpYyBzaGFyZUF2YWlsYWJsZSA9IGZhbHNlO1xuICBwdWJsaWMgbWVudUhlaWdodFB4ID0gMDtcbiAgcHVibGljIGxhbmd1YWdlU3dpdGNoID0gZmFsc2U7XG4gIHB1YmxpYyBuZXdQcm9qZWN0VGVtcGxhdGUgPSBmYWxzZTtcbiAgcHVibGljIGxpdmVQcmV2aWV3ID0gZmFsc2U7XG4gIHB1YmxpYyBsb2NhbFByb2ZpbGVzID0gZmFsc2U7XG4gIHB1YmxpYyBpbnRybyA9IGZhbHNlO1xuICBwdWJsaWMgdW5pcXVlUHJvamVjdE5hbWVzID0gZmFsc2U7XG5cbiAgcHVibGljIG1lbnVIZWlnaHRDaGFuZ2VkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG59XG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLL0IsTUFBTSxPQUFPLGFBQWE7SUFnQnhCO1FBZE8sdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUMzQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUV4QixzQkFBaUIsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUUvQyxDQUFDOzhFQWhCTCxhQUFhO3VFQUFiLGFBQWEsV0FBYixhQUFhLG1CQUZaLE1BQU07O2lGQUVQLGFBQWE7Y0FIekIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlnU2VydmljZSB7XG4gIHB1YmxpYyByZXN0VXJsOiBzdHJpbmc7XG4gIHB1YmxpYyBlbmFibGVNZWRpYUxpYnJhcnkgPSBmYWxzZTtcbiAgcHVibGljIGxvZ2luQXZhaWxhYmxlID0gZmFsc2U7XG4gIHB1YmxpYyBzaGFyZUF2YWlsYWJsZSA9IGZhbHNlO1xuICBwdWJsaWMgbWVudUhlaWdodFB4ID0gMDtcbiAgcHVibGljIGxhbmd1YWdlU3dpdGNoID0gZmFsc2U7XG4gIHB1YmxpYyBuZXdQcm9qZWN0VGVtcGxhdGUgPSBmYWxzZTtcbiAgcHVibGljIGxpdmVQcmV2aWV3ID0gZmFsc2U7XG4gIHB1YmxpYyBsb2NhbFByb2ZpbGVzID0gZmFsc2U7XG4gIHB1YmxpYyBpbnRybyA9IGZhbHNlO1xuICBwdWJsaWMgdW5pcXVlUHJvamVjdE5hbWVzID0gZmFsc2U7XG4gIHB1YmxpYyBkcm9wem9uZUNodW5raW5nID0gdHJ1ZTtcblxuICBwdWJsaWMgbWVudUhlaWdodENoYW5nZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cbn1cbiJdfQ==