@loxia/mst-viewer 8.1.3-202511121625 → 8.1.3-202511121907

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 (153) hide show
  1. package/esm2022/generated/openapi/api/api.mjs +23 -0
  2. package/esm2022/generated/openapi/api/appConfigController.service.mjs +140 -0
  3. package/esm2022/generated/openapi/api/appConfigController.serviceInterface.mjs +2 -0
  4. package/esm2022/generated/openapi/api/bewegingController.service.mjs +155 -0
  5. package/esm2022/generated/openapi/api/bewegingController.serviceInterface.mjs +2 -0
  6. package/esm2022/generated/openapi/api/class0BuildProperties.service.mjs +140 -0
  7. package/esm2022/generated/openapi/api/class0BuildProperties.serviceInterface.mjs +2 -0
  8. package/esm2022/generated/openapi/api/connectorController.service.mjs +146 -0
  9. package/esm2022/generated/openapi/api/connectorController.serviceInterface.mjs +2 -0
  10. package/esm2022/generated/openapi/api/logController.service.mjs +150 -0
  11. package/esm2022/generated/openapi/api/logController.serviceInterface.mjs +2 -0
  12. package/esm2022/generated/openapi/api/p21Controller.service.mjs +236 -0
  13. package/esm2022/generated/openapi/api/p21Controller.serviceInterface.mjs +2 -0
  14. package/esm2022/generated/openapi/api/sbController.service.mjs +202 -0
  15. package/esm2022/generated/openapi/api/sbController.serviceInterface.mjs +2 -0
  16. package/esm2022/generated/openapi/api.module.mjs +40 -0
  17. package/esm2022/generated/openapi/configuration.mjs +99 -0
  18. package/esm2022/generated/openapi/encoder.mjs +19 -0
  19. package/esm2022/generated/openapi/index.mjs +7 -0
  20. package/esm2022/generated/openapi/model/actieDto.mjs +13 -0
  21. package/esm2022/generated/openapi/model/algemeneRitDto.mjs +13 -0
  22. package/esm2022/generated/openapi/model/bewegingDto.mjs +2 -0
  23. package/esm2022/generated/openapi/model/frontendKeycloakConfig.mjs +13 -0
  24. package/esm2022/generated/openapi/model/frontendProperties.mjs +2 -0
  25. package/esm2022/generated/openapi/model/logDto.mjs +2 -0
  26. package/esm2022/generated/openapi/model/models.mjs +10 -0
  27. package/esm2022/generated/openapi/model/ritRequestDto.mjs +2 -0
  28. package/esm2022/generated/openapi/model/signaleringsbeeldDto.mjs +13 -0
  29. package/esm2022/generated/openapi/model/signaleringsbeeldRequestDto.mjs +13 -0
  30. package/esm2022/generated/openapi/param.mjs +2 -0
  31. package/esm2022/generated/openapi/variables.mjs +9 -0
  32. package/esm2022/lib/atomic-components/message/message.component.mjs +3 -3
  33. package/esm2022/lib/model/ritdeel.mjs +4 -4
  34. package/esm2022/lib/mst-viewer.module.mjs +3 -1
  35. package/esm2022/lib/resources/mstlogging.resource.mjs +12 -145
  36. package/esm2022/lib/services/viewer-control.service.mjs +3 -4
  37. package/esm2022/lib/state/actions/actions.mjs +1 -1
  38. package/esm2022/lib/state/effect/bepaal-ongeplande-acties.effect.mjs +2 -2
  39. package/esm2022/lib/state/effect/bepaal-sb-infos.effect.mjs +2 -2
  40. package/esm2022/lib/state/effect/laad-signaleringsbeelden.effect.mjs +5 -5
  41. package/esm2022/lib/state/effect/ritdelen.effect.mjs +22 -22
  42. package/esm2022/lib/state/mst-editor-state.mjs +2 -3
  43. package/esm2022/lib/util/actie-helper.mjs +5 -5
  44. package/esm2022/lib/util/logging-helper.mjs +9 -12
  45. package/esm2022/lib/util/zone-util.mjs +2 -1
  46. package/esm2022/src/generated/openapi/api/api.mjs +23 -0
  47. package/esm2022/src/generated/openapi/api/appConfigController.service.mjs +140 -0
  48. package/esm2022/src/generated/openapi/api/appConfigController.serviceInterface.mjs +2 -0
  49. package/esm2022/src/generated/openapi/api/bewegingController.service.mjs +155 -0
  50. package/esm2022/src/generated/openapi/api/bewegingController.serviceInterface.mjs +2 -0
  51. package/esm2022/src/generated/openapi/api/class0BuildProperties.service.mjs +140 -0
  52. package/esm2022/src/generated/openapi/api/class0BuildProperties.serviceInterface.mjs +2 -0
  53. package/esm2022/src/generated/openapi/api/connectorController.service.mjs +146 -0
  54. package/esm2022/src/generated/openapi/api/connectorController.serviceInterface.mjs +2 -0
  55. package/esm2022/src/generated/openapi/api/logController.service.mjs +150 -0
  56. package/esm2022/src/generated/openapi/api/logController.serviceInterface.mjs +2 -0
  57. package/esm2022/src/generated/openapi/api/p21Controller.service.mjs +236 -0
  58. package/esm2022/src/generated/openapi/api/p21Controller.serviceInterface.mjs +2 -0
  59. package/esm2022/src/generated/openapi/api/sbController.service.mjs +202 -0
  60. package/esm2022/src/generated/openapi/api/sbController.serviceInterface.mjs +2 -0
  61. package/esm2022/src/generated/openapi/api.module.mjs +40 -0
  62. package/esm2022/src/generated/openapi/configuration.mjs +99 -0
  63. package/esm2022/src/generated/openapi/encoder.mjs +19 -0
  64. package/esm2022/src/generated/openapi/index.mjs +7 -0
  65. package/esm2022/src/generated/openapi/loxia-mst-viewer-src-generated-openapi.mjs +5 -0
  66. package/esm2022/src/generated/openapi/model/actieDto.mjs +13 -0
  67. package/esm2022/src/generated/openapi/model/algemeneRitDto.mjs +13 -0
  68. package/esm2022/src/generated/openapi/model/bewegingDto.mjs +2 -0
  69. package/esm2022/src/generated/openapi/model/frontendKeycloakConfig.mjs +13 -0
  70. package/esm2022/src/generated/openapi/model/frontendProperties.mjs +2 -0
  71. package/esm2022/src/generated/openapi/model/logDto.mjs +2 -0
  72. package/esm2022/src/generated/openapi/model/models.mjs +10 -0
  73. package/esm2022/src/generated/openapi/model/ritRequestDto.mjs +2 -0
  74. package/esm2022/src/generated/openapi/model/signaleringsbeeldDto.mjs +13 -0
  75. package/esm2022/src/generated/openapi/model/signaleringsbeeldRequestDto.mjs +13 -0
  76. package/esm2022/src/generated/openapi/param.mjs +2 -0
  77. package/esm2022/src/generated/openapi/variables.mjs +9 -0
  78. package/fesm2022/loxia-mst-viewer-src-generated-openapi.mjs +1341 -0
  79. package/fesm2022/loxia-mst-viewer-src-generated-openapi.mjs.map +1 -0
  80. package/fesm2022/loxia-mst-viewer.mjs +1410 -208
  81. package/fesm2022/loxia-mst-viewer.mjs.map +1 -1
  82. package/generated/openapi/api/api.d.ts +22 -0
  83. package/generated/openapi/api/appConfigController.service.d.ts +38 -0
  84. package/generated/openapi/api/appConfigController.serviceInterface.d.ts +24 -0
  85. package/generated/openapi/api/bewegingController.service.d.ts +40 -0
  86. package/generated/openapi/api/bewegingController.serviceInterface.d.ts +27 -0
  87. package/generated/openapi/api/class0BuildProperties.service.d.ts +36 -0
  88. package/generated/openapi/api/class0BuildProperties.serviceInterface.d.ts +23 -0
  89. package/generated/openapi/api/connectorController.service.d.ts +38 -0
  90. package/generated/openapi/api/connectorController.serviceInterface.d.ts +25 -0
  91. package/generated/openapi/api/logController.service.d.ts +38 -0
  92. package/generated/openapi/api/logController.serviceInterface.d.ts +25 -0
  93. package/generated/openapi/api/p21Controller.service.d.ts +62 -0
  94. package/generated/openapi/api/p21Controller.serviceInterface.d.ts +30 -0
  95. package/generated/openapi/api/sbController.service.d.ts +60 -0
  96. package/generated/openapi/api/sbController.serviceInterface.d.ts +32 -0
  97. package/generated/openapi/api.module.d.ts +11 -0
  98. package/generated/openapi/configuration.d.ts +104 -0
  99. package/generated/openapi/encoder.d.ts +11 -0
  100. package/generated/openapi/index.d.ts +6 -0
  101. package/generated/openapi/model/actieDto.d.ts +35 -0
  102. package/generated/openapi/model/algemeneRitDto.d.ts +28 -0
  103. package/generated/openapi/model/bewegingDto.d.ts +37 -0
  104. package/generated/openapi/model/frontendKeycloakConfig.d.ts +16 -0
  105. package/generated/openapi/model/frontendProperties.d.ts +15 -0
  106. package/generated/openapi/model/logDto.d.ts +22 -0
  107. package/generated/openapi/model/models.d.ts +9 -0
  108. package/generated/openapi/model/ritRequestDto.d.ts +17 -0
  109. package/generated/openapi/model/signaleringsbeeldDto.d.ts +16 -0
  110. package/generated/openapi/model/signaleringsbeeldRequestDto.d.ts +16 -0
  111. package/generated/openapi/param.d.ts +37 -0
  112. package/generated/openapi/variables.d.ts +8 -0
  113. package/lib/atomic-components/message/message.component.d.ts +2 -2
  114. package/lib/model/ritdeel.d.ts +6 -5
  115. package/lib/resources/mstlogging.resource.d.ts +6 -95
  116. package/lib/state/actions/actions.d.ts +4 -4
  117. package/lib/state/effect/laad-signaleringsbeelden.effect.d.ts +1 -1
  118. package/lib/state/effect/ritdelen.effect.d.ts +7 -6
  119. package/lib/state/mst-editor-state.d.ts +4 -4
  120. package/lib/util/logging-helper.d.ts +4 -6
  121. package/package.json +7 -1
  122. package/src/generated/openapi/README.md +226 -0
  123. package/src/generated/openapi/api/api.d.ts +22 -0
  124. package/src/generated/openapi/api/appConfigController.service.d.ts +38 -0
  125. package/src/generated/openapi/api/appConfigController.serviceInterface.d.ts +24 -0
  126. package/src/generated/openapi/api/bewegingController.service.d.ts +40 -0
  127. package/src/generated/openapi/api/bewegingController.serviceInterface.d.ts +27 -0
  128. package/src/generated/openapi/api/class0BuildProperties.service.d.ts +36 -0
  129. package/src/generated/openapi/api/class0BuildProperties.serviceInterface.d.ts +23 -0
  130. package/src/generated/openapi/api/connectorController.service.d.ts +38 -0
  131. package/src/generated/openapi/api/connectorController.serviceInterface.d.ts +25 -0
  132. package/src/generated/openapi/api/logController.service.d.ts +38 -0
  133. package/src/generated/openapi/api/logController.serviceInterface.d.ts +25 -0
  134. package/src/generated/openapi/api/p21Controller.service.d.ts +62 -0
  135. package/src/generated/openapi/api/p21Controller.serviceInterface.d.ts +30 -0
  136. package/src/generated/openapi/api/sbController.service.d.ts +60 -0
  137. package/src/generated/openapi/api/sbController.serviceInterface.d.ts +32 -0
  138. package/src/generated/openapi/api.module.d.ts +11 -0
  139. package/src/generated/openapi/configuration.d.ts +104 -0
  140. package/src/generated/openapi/encoder.d.ts +11 -0
  141. package/src/generated/openapi/index.d.ts +6 -0
  142. package/src/generated/openapi/model/actieDto.d.ts +35 -0
  143. package/src/generated/openapi/model/algemeneRitDto.d.ts +28 -0
  144. package/src/generated/openapi/model/bewegingDto.d.ts +37 -0
  145. package/src/generated/openapi/model/frontendKeycloakConfig.d.ts +16 -0
  146. package/src/generated/openapi/model/frontendProperties.d.ts +15 -0
  147. package/src/generated/openapi/model/logDto.d.ts +22 -0
  148. package/src/generated/openapi/model/models.d.ts +9 -0
  149. package/src/generated/openapi/model/ritRequestDto.d.ts +17 -0
  150. package/src/generated/openapi/model/signaleringsbeeldDto.d.ts +16 -0
  151. package/src/generated/openapi/model/signaleringsbeeldRequestDto.d.ts +16 -0
  152. package/src/generated/openapi/param.d.ts +37 -0
  153. package/src/generated/openapi/variables.d.ts +8 -0
@@ -135,8 +135,8 @@ export class LaadSignaleringsbeeldenEffect {
135
135
  dtos.filter(d => !visibleDtos.includes(d)).forEach(d => d.metVisualisatie = false);
136
136
  return visibleDtos;
137
137
  }
138
- distinct(value, index, self) {
139
- return self.indexOf(value) === index;
138
+ distinct(value, index, values) {
139
+ return values.indexOf(value) === index;
140
140
  }
141
141
  addPrevNonVisibleDto(firstIdx, ritdelen, loadingDtos, visibleRitPplgs, allDtos) {
142
142
  if (firstIdx >= 0) {
@@ -225,7 +225,7 @@ export class LaadSignaleringsbeeldenEffect {
225
225
  }
226
226
  }
227
227
  }
228
- this.updateZichtbaarheidAangrezendeRitdelen(min, max, ritdelen, visibleDtos);
228
+ this.updateZichtbaarheidAangrenzendeRitdelen(min, max, ritdelen, visibleDtos);
229
229
  return this.updateZichtbaarheidBuitenWindow(ritdelen, visibleDtos);
230
230
  }
231
231
  updateZichtbaarheidBuitenWindow(nieuweRitdelen, visibleDtos) {
@@ -241,7 +241,7 @@ export class LaadSignaleringsbeeldenEffect {
241
241
  }
242
242
  return nieuweRitdelen;
243
243
  }
244
- updateZichtbaarheidAangrezendeRitdelen(min, max, nieuweRitdelen, visibleDtos) {
244
+ updateZichtbaarheidAangrenzendeRitdelen(min, max, nieuweRitdelen, visibleDtos) {
245
245
  let i = min - 1;
246
246
  while (i >= 0) {
247
247
  i = this.updateZichtbaarHeid(i, 0, visibleDtos, nieuweRitdelen) - 1;
@@ -360,4 +360,4 @@ export class LaadSignaleringsbeeldenEffect {
360
360
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LaadSignaleringsbeeldenEffect, decorators: [{
361
361
  type: Injectable
362
362
  }], ctorParameters: () => [{ type: i1.Actions }, { type: i2.Store }, { type: i3.SignaleringsBeeldManagerService }, { type: i4.EditorService }, { type: i5.SignaleringsbeeldInfoResource }, { type: i6.ConnectorService }, { type: i7.MessagesService }] });
363
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFhZC1zaWduYWxlcmluZ3NiZWVsZGVuLmVmZmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9zdGF0ZS9lZmZlY3QvbGFhZC1zaWduYWxlcmluZ3NiZWVsZGVuLmVmZmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFdkUsT0FBTyxFQUFXLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkYsT0FBTyxFQUFXLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFNcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sS0FBSyxNQUFNLGtCQUFrQixDQUFDO0FBQ3JDLE9BQU8sS0FBSyxVQUFVLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLG1DQUFtQyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkcsT0FBTyxLQUFLLGVBQWUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7O0FBb0IvRCxNQUFNLE9BQU8sNkJBQTZCO0lBSXRDLFlBQW9CLFFBQWlCLEVBQ2pCLEtBQTRCLEVBQzVCLCtCQUFnRSxFQUNoRSxhQUE0QixFQUM1QixXQUEwQyxFQUMxQyxnQkFBa0MsRUFDbEMsZUFBZ0M7UUFOaEMsYUFBUSxHQUFSLFFB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QUFDLENBQUMsQ0FBQztJQUNkLENBQUM7SUFFTyxjQUFjLENBQUMsUUFBbUI7UUFDdEMsS0FBSyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDNUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxDQUFDLENBQUM7WUFDYixDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDZCxDQUFDOzhHQW5hUSw2QkFBNkI7a0hBQTdCLDZCQUE2Qjs7MkZBQTdCLDZCQUE2QjtrQkFEekMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElteFZpZXdlckNvbXBvbmVudCwgUG9pbnQsIFN2Z0luZm8gfSBmcm9tICdAbG94aWEvaW14LXZpZXdlcic7XG5pbXBvcnQgeyBzYmJsYWQgfSBmcm9tICdAbG94aWEvcmlqd2VnZW4nO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwLCB0YWtlLCB0YXAsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXRvbWljLWNvbXBvbmVudHMvc2VydmljZXMvbWVzc2FnZXMuc2VydmljZSc7XG5pbXBvcnQgeyBSaXRkZWVsLCBSaXRkZWVsWmljaHRiYWFyaGVpZCB9IGZyb20gJy4uLy4uL21vZGVsL3JpdGRlZWwnO1xuaW1wb3J0IHsgSW5mcmFNb2RlbCB9IGZyb20gJy4uLy4uL29wdGltbyc7XG5pbXBvcnQgeyBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvLCBTaWduYWxlcmluZ3NiZWVsZEluZm9SZXNvdXJjZSB9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9zaWduYWxlcmluZ3NiZWVsZGluZm8ucmVzb3VyY2UnO1xuaW1wb3J0IHsgQ29ubmVjdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Nvbm5lY3Rvci5zZXJ2aWNlJztcbmltcG9ydCB7IEVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBTaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2lnbmFsZXJpbmdzLWJlZWxkLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBNZXNzYWdlQnVpbGRlciB9IGZyb20gJy4uLy4uL3V0aWwvbWVzc2FnZS1idWlsZGVyJztcbmltcG9ydCBVdGlscyBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcbmltcG9ydCAqIGFzIE1zdEFjdGlvbnMgZnJvbSAnLi4vYWN0aW9ucy9hY3Rpb25zJztcbmltcG9ydCB7IFNldFNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3MsIFNldFZpc2libGVTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zIH0gZnJvbSAnLi4vYWN0aW9ucy9hY3Rpb25zJztcbmltcG9ydCAqIGFzIFJpdGRlbGVuQWN0aW9ucyBmcm9tICcuLi9hY3Rpb25zL3JpdGRlbGVuLmFjdGlvbnMnO1xuaW1wb3J0IHsgTXN0RWRpdG9yU3RhdGUgfSBmcm9tICcuLi9tc3QtZWRpdG9yLXN0YXRlJztcbmltcG9ydCBUb3BvbG9neUVsZW1lbnQgPSBzYmJsYWQuVG9wb2xvZ3lFbGVtZW50O1xuXG5pbnRlcmZhY2UgTmF2aWdlZXJCdWl0ZW5SaXRJbnB1dCB7XG4gICAgcmFuZDogVG9wb2xvZ3lFbGVtZW50O1xuICAgIHJhbmRQdWljOiBzdHJpbmc7XG4gICAgc3RvcmVTdGF0ZTogTXN0RWRpdG9yU3RhdGU7XG4gICAgb3RoZXJQcGxnPzogc3RyaW5nO1xuICAgIGR0b3M/OiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW107XG4gICAgc3ZnRGF0YVVybHM/OiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIFNpZ25hbGVyaW5nc2JlZWxkSW5mb0lucHV0IHtcbiAgICBkdG9zPzogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdO1xuICAgIGFjdGllOiBhbnk7XG4gICAgc3RvcmVTdGF0ZTogTXN0RWRpdG9yU3RhdGU7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBMYWFkU2lnbmFsZXJpbmdzYmVlbGRlbkVmZmVjdCB7XG5cbiAgICBwcml2YXRlIFNWR19QSVhFTF9SVUlNVEUgPSAzMDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8TXN0RWRpdG9yU3RhdGU+LFxuICAgICAgICAgICAgICAgIHByaXZhdGUgc2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZTogU2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIGVkaXRvclNlcnZpY2U6IEVkaXRvclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBzYmlSZXNvdXJjZTogU2lnbmFsZXJpbmdzYmVlbGRJbmZvUmVzb3VyY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBjb25uZWN0b3JTZXJ2aWNlOiBDb25uZWN0b3JTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgbWVzc2FnZXNTZXJpdmNlOiBNZXNzYWdlc1NlcnZpY2UpIHtcbiAgICB9XG5cbiAgICB2ZXJ3ZXJrUml0ZGVsZW4kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKFJpdGRlbGVuQWN0aW9ucy5zZXRSaXREZWxlbiwgUml0ZGVsZW5BY3Rpb25zLm5hdmlnZWVyLCBSaXRkZWxlbkFjdGlvbnMubmF2aWdlZXJWYW5hZiksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUpLFxuICAgICAgICBtYXAoKFthY3RpZSwgc3RvcmVTdGF0ZV0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTXN0QWN0aW9ucy5TZXRPbmdlcGxhbmRlQWN0aWVzQmVwYWFsZChmYWxzZSkpO1xuICAgICAgICAgICAgdGhpcy52ZXJ3ZXJrUml0ZGVsZW4oYWN0aWUsIHN0b3JlU3RhdGUpO1xuICAgICAgICB9KSksIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgICApO1xuXG4gICAgbGFhZEVuVmVyd2Vya1NpZ25hbGVyaW5nc2JlZWxkSW5mbyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoTXN0QWN0aW9ucy5sYWFkRW5WZXJ3ZXJrU2lnbmFsZXJpbmdzYmVlbGRJbmZvKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZSksXG4gICAgICAgIHN3aXRjaE1hcCgoW2FjdGllLCBzdG9yZVN0YXRlXSkgPT4gdGhpcy5oYW5kbGVTaWduYWxlcmluZ3NiZWVsZEluZm8oe2FjdGllLCBzdG9yZVN0YXRlfSkpXG4gICAgKSwgeyBkaXNwYXRjaDogZmFsc2UgfSk7XG5cbiAgICBwcml2YXRlIGhhbmRsZVNpZ25hbGVyaW5nc2JlZWxkSW5mbyh7YWN0aWUsIHN0b3JlU3RhdGV9IDogU2lnbmFsZXJpbmdzYmVlbGRJbmZvSW5wdXQpOiAgT2JzZXJ2YWJsZTxJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2JpUmVzb3VyY2UubGFhZFNpZ25hbGVyaW5nc2JlZWxkSW5mbyh0aGlzLmNyZWF0ZVNpZ25hbGVyaW5nc2JlZWxkSW5mb1F1ZXJ5RHRvKGFjdGllLnBwbGdzLCBzdG9yZVN0YXRlLmlhVmVyc2llKSkucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICB0YXAoKGR0b3MpID0+IHRoaXMucHJvY2Vzc1Jlc3BvbnNlKHtkdG9zLCBzdG9yZVN0YXRlLCBhY3RpZX0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXNTZXJpdmNlLnNob3dNZXNzYWdlKE1lc3NhZ2VCdWlsZGVyLm5pZXRHZXZvbmRlblNCSShlcnIpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NSZXNwb25zZSh7IGR0b3MsIHN0b3JlU3RhdGUsIGFjdGllIH06IFNpZ25hbGVyaW5nc2JlZWxkSW5mb0lucHV0KTogdm9pZCAge1xuICAgICAgICBpZiAoZHRvcyAmJiBkdG9zLmZpbHRlcihkdG8gPT4gZHRvLm1ldFZpc3VhbGlzYXRpZSkubGVuZ3RoID4gMTIpIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXNTZXJpdmNlLnNob3dNZXNzYWdlKE1lc3NhZ2VCdWlsZGVyLm1lZXJEYW4xMkJsYWRlbkdldm9uZGVuKGR0b3MubGVuZ3RoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zKGR0b3MsIHN0b3JlU3RhdGUuaWFWZXJzaWUsIGFjdGllLnJpdCwgYWN0aWUucGFnaW5hdGlvblNpemUsIGFjdGllLnJpdEdld2lqemlnZFRvZWdlc3RhYW4pKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRWaXNpYmxlU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcyhkdG9zKSk7XG4gICAgfVxuXG4gICAgbmF2aWdlZXJCdWl0ZW5SaXQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKE1zdEFjdGlvbnMubmF2aWdlZXJCdWl0ZW5SaXQpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlKSxcbiAgICAgICAgc3dpdGNoTWFwKChbYWN0aWUsIHN0b3JlU3RhdGVdKSA9PlxuICAgICAgICAgICAgb2Yoe1xuICAgICAgICAgICAgICAgIHJhbmQ6IHRoaXMuc2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZS5nZXRUb3BvbG9neUVsZW1lbnRCeVB1aWMoYWN0aWUucmFuZFB1aWMpLFxuICAgICAgICAgICAgICAgIHJhbmRQdWljOiBhY3RpZS5yYW5kUHVpYyxcbiAgICAgICAgICAgICAgICBzdG9yZVN0YXRlXG4gICAgICAgICAgICB9KS5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCh0aGlzLmdldE90aGVyUmFuZC5iaW5kKHRoaXMpKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAodGhpcy5sb2FkUm91dGVGaWxlc0FuZFNpZ25hbGVyaW5nc2JlZWxkSW5mby5iaW5kKHRoaXMpKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAodGhpcy5sb2FkU2lnbmFsZXJpbmdzYmVlbGRlbi5iaW5kKHRoaXMpKSxcbiAgICAgICAgICAgICAgICBtYXAodGhpcy5wcm9jZXNzU3Znc0FuZFVwZGF0ZVJpdGRlbGVuLmJpbmQodGhpcykpXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICApLCB7IGRpc3BhdGNoOiBmYWxzZSB9KTtcblxuICAgIHByaXZhdGUgZ2V0T3RoZXJSYW5kKHsgcmFuZCwgcmFuZFB1aWMsIHN0b3JlU3RhdGV9OiBOYXZpZ2VlckJ1aXRlblJpdElucHV0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3RvclNlcnZpY2UuZ2V0T3RoZXJSYW5kKHJhbmRQdWljKS5waXBlKFxuICAgICAgICAgICAgbWFwKG90aGVyUHBsZyA9PiAoeyBvdGhlclBwbGcsIHJhbmQsIHN0b3JlU3RhdGUgfSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkUm91dGVGaWxlc0FuZFNpZ25hbGVyaW5nc2JlZWxkSW5mbyh7IG90aGVyUHBsZywgcmFuZCwgc3RvcmVTdGF0ZSB9OiBOYXZpZ2VlckJ1aXRlblJpdElucHV0KSB7XG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5sYWFkUm91dGVGaWxlcyhzdG9yZVN0YXRlLmlhVmVyc2llLnZlcnNpZSwgW3JhbmQuZ2V0UFBMRygpLCBvdGhlclBwbGddKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2JpUmVzb3VyY2UubGFhZFNpZ25hbGVyaW5nc2JlZWxkSW5mbyh0aGlzLmNyZWF0ZVNpZ25hbGVyaW5nc2JlZWxkSW5mb1F1ZXJ5RHRvKFtyYW5kLmdldFBQTEcoKSwgb3RoZXJQcGxnXSwgc3RvcmVTdGF0ZS5pYVZlcnNpZSkpLnBpcGUoXG4gICAgICAgICAgICBtYXAoZHRvcyA9PiAoeyBkdG9zLCBzdG9yZVN0YXRlIH0pKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZFNpZ25hbGVyaW5nc2JlZWxkZW4oeyBkdG9zLCBzdG9yZVN0YXRlIH06IE5hdmlnZWVyQnVpdGVuUml0SW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yU2VydmljZS5sYWFkU2lnbmFsZXJpbmdzYmVlbGRlbihzdG9yZVN0YXRlLmlhVmVyc2llLnZlcnNpZSwgZHRvcykucGlwZShcbiAgICAgICAgICAgIG1hcChzdmdEYXRhVXJscyA9PiAoeyBzdmdEYXRhVXJscywgc3RvcmVTdGF0ZSwgZHRvcyB9KSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NTdmdzQW5kVXBkYXRlUml0ZGVsZW4oeyBzdmdEYXRhVXJscywgc3RvcmVTdGF0ZSwgZHRvcyB9OiBOYXZpZ2VlckJ1aXRlblJpdElucHV0KTogdm9pZCB7XG4gICAgICAgIHRoaXMudmVyd2Vya1N2Z3Moc3ZnRGF0YVVybHMpO1xuICAgICAgICBjb25zdCBuaWV1d2VSaXRkZWxlbiA9IHRoaXMudXBkYXRlUml0ZGVsZW4oc3RvcmVTdGF0ZS5yaXREZWxlbiwgZHRvcyk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTXN0QWN0aW9ucy5VcGRhdGVWaXNpYmxlU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcyhkdG9zKSk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goUml0ZGVsZW5BY3Rpb25zLnVwZGF0ZVJpdERlbGVuKG5pZXV3ZVJpdGRlbGVuKSk7XG4gICAgfVxuXG4gICAgdmVyd2Vya1JpdGRlbGVuKGFjdGllLCBzdG9yZVN0YXRlOiBNc3RFZGl0b3JTdGF0ZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpc0luaXQgPSBhY3RpZS50eXBlID09PSBSaXRkZWxlbkFjdGlvbnMuU0VUX1JJVF9ERUxFTjtcbiAgICAgICAgY29uc3Qgcml0RGVsZW46IFJpdGRlZWxbXSA9IGlzSW5pdCA/IGFjdGllLnJpdERlbGVuIDogc3RvcmVTdGF0ZS5yaXREZWxlbjtcbiAgICAgICAgY29uc3Qgc3RvcmVEdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10gPSBzdG9yZVN0YXRlLnNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3M7XG5cbiAgICAgICAgdGhpcy5uYXZpZ2VlcihyaXREZWxlbiwgYWN0aWUsIHN0b3JlRHRvcyk7XG5cbiAgICAgICAgY29uc3QgdmlzaWJsZVJpdERlbGVuID0gcml0RGVsZW4uZmlsdGVyKG4gPT4gbi5pc1ppY2h0YmFhckJpbm5lbldpbmRvdygpKTtcbiAgICAgICAgY29uc3QgdmlzaWJsZVJpdFBwbGdzOiBzdHJpbmdbXSA9IHZpc2libGVSaXREZWxlbi5tYXAociA9PiByLmdldFBwbGcoKSkuZmlsdGVyKHRoaXMuZGlzdGluY3QpO1xuXG4gICAgICAgIGNvbnN0IHZpc2libGVEdG9zID0gdGhpcy5iZXBhYWxaaWNodGJhcmVEdG9zKHZpc2libGVSaXRQcGxncywgc3RvcmVEdG9zKTtcbiAgICAgICAgY29uc3QgbG9hZGluZ0R0b3MgPSB0aGlzLmJlcGFhbFRvTG9hZER0b3ModmlzaWJsZUR0b3MsIHJpdERlbGVuLCB2aXNpYmxlUml0RGVsZW4sIHZpc2libGVSaXRQcGxncywgc3RvcmVTdGF0ZSk7XG5cbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmxhYWRTaWduYWxlcmluZ3NiZWVsZGVuKGFjdGllLmlhdmVyc2llaW5mby52ZXJzaWUsIGxvYWRpbmdEdG9zKS5waXBlKFxuICAgICAgICAgICAgdGFwKHN2Z0RhdGFVcmxzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnZlcndlcmtTdmdzKHN2Z0RhdGFVcmxzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKHJpdERlbGVuLCB2aXNpYmxlRHRvcywgc3RvcmVTdGF0ZSwgdmlzaWJsZVJpdFBwbGdzLCBsb2FkaW5nRHRvcywgaXNJbml0LCBzdG9yZUR0b3MpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlc1Nlcml2Y2Uuc2hvd01lc3NhZ2UoTWVzc2FnZUJ1aWxkZXIucndwRGF0YU5pZXRHZXZvbmRlbihVdGlscy5nZXRWYWxpZEVyb3JyTWVzc2FnZShlcnIpKSk7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKS5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVN0YXRlKHJpdERlbGVuOiBSaXRkZWVsW10sIHZpc2libGVEdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10sIHN0b3JlU3RhdGU6IE1zdEVkaXRvclN0YXRlLCB2aXNpYmxlUml0UHBsZ3M6IHN0cmluZ1tdLCBsb2FkaW5nRHRvczogYW55W10sIGlzSW5pdDogYm9vbGVhbiwgc3RvcmVEdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10pOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuaWV1d2VSaXRkZWxlbiA9IHRoaXMudXBkYXRlUml0ZGVsZW4ocml0RGVsZW4sIHZpc2libGVEdG9zKTtcbiAgICAgICAgICAgIHRoaXMuZGVidWdMb2coc3RvcmVTdGF0ZS5kZWJ1ZywgdmlzaWJsZVJpdFBwbGdzLCBsb2FkaW5nRHRvcyk7XG5cbiAgICAgICAgICAgIGlmICghaXNJbml0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNc3RBY3Rpb25zLlVwZGF0ZVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3Moc3RvcmVEdG9zKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNc3RBY3Rpb25zLlVwZGF0ZVZpc2libGVTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zKGxvYWRpbmdEdG9zKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFJpdGRlbGVuQWN0aW9ucy51cGRhdGVSaXREZWxlbihuaWV1d2VSaXRkZWxlbikpO1xuICAgICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVNpZ25hbGVyaW5nc2JlZWxkSW5mb1F1ZXJ5RHRvKHBwbGdzOiBzdHJpbmdbXSwgaWFpbmZvOiBJbmZyYU1vZGVsKTogYW55IHtcbiAgICAgICAgY29uc3QgZGF0dW0gPSBpYWluZm8uaW5nYW5nc0RhdHVtICYmICFpc05hTihpYWluZm8uaW5nYW5nc0RhdHVtLmdldFRpbWUoKSkgPyBpYWluZm8uaW5nYW5nc0RhdHVtLnRvSVNPU3RyaW5nKCkgOiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB7IHBwbGdzLCB2ZXJzaWU6IGlhaW5mby52ZXJzaWUsIGluZ2FuZ3NEYXR1bTogZGF0dW0gfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZlcndlcmtTdmdzKHN2Z0RhdGFVcmxzKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTXN0QWN0aW9ucy5TZXRTdmdJbmZvcyh0aGlzLmJlcGFhbFN2Z0luZm9zKHN2Z0RhdGFVcmxzKSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsU3ZnSW5mb3Moc3ZnRGF0YVVybHMpOiBTdmdJbmZvW10ge1xuICAgICAgICBsZXQgbmV4dENvb3JkcyA9IG5ldyBQb2ludCgwLCAwKTtcbiAgICAgICAgY29uc3QgaW5mb3M6IFN2Z0luZm9bXSA9IFtdO1xuICAgICAgICBzdmdEYXRhVXJscy5mb3JFYWNoKHN2Z0RhdGFVcmwgPT4ge1xuICAgICAgICAgICAgaWYgKHN2Z0RhdGFVcmwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWNvZGVkID0gYXRvYihzdmdEYXRhVXJsLnN1YnN0cmluZygnZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCwnLmxlbmd0aCkpO1xuICAgICAgICAgICAgICAgIGluZm9zLnB1c2gobmV3IFN2Z0luZm8oJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwnICsgZGVjb2RlZCwgbmV4dENvb3JkcykpO1xuICAgICAgICAgICAgICAgIG5leHRDb29yZHMgPSBuZXcgUG9pbnQobmV4dENvb3Jkcy54ICsgSW14Vmlld2VyQ29tcG9uZW50LmdldFhDb29yZGluYXRlKGRlY29kZWQpICsgdGhpcy5TVkdfUElYRUxfUlVJTVRFLCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpbmZvcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGJlcGFhbFRvTG9hZER0b3ModmlzaWJsZUR0b3MsIHJpdERlbGVuOiBSaXRkZWVsW10sIHZpc2libGVSaXREZWxlbiwgdmlzaWJsZVJpdFBwbGdzOiBzdHJpbmdbXSwgc3RvcmVTdGF0ZTogTXN0RWRpdG9yU3RhdGUpOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IGxvYWRpbmdEdG9zID0gWy4uLnZpc2libGVEdG9zXTtcbiAgICAgICAgY29uc3QgZmlyc3RJZHggPSByaXREZWxlbi5pbmRleE9mKHZpc2libGVSaXREZWxlblswXSkgLSAxO1xuICAgICAgICB0aGlzLmFkZFByZXZOb25WaXNpYmxlRHRvKGZpcnN0SWR4LCByaXREZWxlbiwgbG9hZGluZ0R0b3MsIHZpc2libGVSaXRQcGxncywgc3RvcmVTdGF0ZS5zaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zKTtcbiAgICAgICAgY29uc3QgbGFzdElkeCA9IHJpdERlbGVuLmluZGV4T2YodmlzaWJsZVJpdERlbGVuW3Zpc2libGVSaXREZWxlbi5sZW5ndGggLSAxXSkgKyAxO1xuICAgICAgICB0aGlzLmFkZE5leHROb25WaXNpYmxlRHRvKGxhc3RJZHgsIHJpdERlbGVuLCBsb2FkaW5nRHRvcywgdmlzaWJsZVJpdFBwbGdzLCBzdG9yZVN0YXRlLnNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3MpO1xuICAgICAgICByZXR1cm4gbG9hZGluZ0R0b3M7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZXBhYWxaaWNodGJhcmVEdG9zKHZpc2libGVSaXRQcGxnczogc3RyaW5nW10sIGR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSk6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSB7XG4gICAgICAgIGNvbnN0IHZpc2libGVEdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10gPSBbXTtcbiAgICAgICAgdmlzaWJsZVJpdFBwbGdzLmZvckVhY2gocHBsZyA9PiB7XG4gICAgICAgICAgICBkdG9zLmZpbHRlcihkdG8gPT4gZHRvLnBwbGdzLmluY2x1ZGVzKHBwbGcpKS5mb3JFYWNoKGR0byA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF2aXNpYmxlRHRvcy5pbmNsdWRlcyhkdG8pKSB7XG4gICAgICAgICAgICAgICAgICAgIHZpc2libGVEdG9zLnB1c2goZHRvKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZpc2libGVEdG9zLmZvckVhY2goZHRvID0+IGR0by5tZXRWaXN1YWxpc2F0aWUgPSB0cnVlKTtcbiAgICAgICAgZHRvcy5maWx0ZXIoZCA9PiAhdmlzaWJsZUR0b3MuaW5jbHVkZXMoZCkpLmZvckVhY2goZCA9PiBkLm1ldFZpc3VhbGlzYXRpZSA9IGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIHZpc2libGVEdG9zO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGlzdGluY3QodmFsdWUsIGluZGV4LCBzZWxmKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZFByZXZOb25WaXNpYmxlRHRvKGZpcnN0SWR4LCByaXRkZWxlbjogUml0ZGVlbFtdLCBsb2FkaW5nRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdLCB2aXNpYmxlUml0UHBsZ3M6IHN0cmluZ1tdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdKTogdm9pZCB7XG4gICAgICAgIGlmIChmaXJzdElkeCA+PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBwcGxnID0gcml0ZGVsZW5bZmlyc3RJZHhdLmdldFBwbGcoKTtcbiAgICAgICAgICAgIGNvbnN0IHJpdGRlZWxEdG9zID0gYWxsRHRvcy5maWx0ZXIoZHRvID0+IGR0by5wcGxncy5pbmNsdWRlcyhwcGxnKSkuZmlsdGVyKGR0byA9PiAhbG9hZGluZ0R0b3MuaW5jbHVkZXMoZHRvKSk7XG5cbiAgICAgICAgICAgIGlmICghdmlzaWJsZVJpdFBwbGdzLmluY2x1ZGVzKHBwbGcpICYmIHJpdGRlZWxEdG9zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByaXRkZWVsRHRvcy5maWx0ZXIoZCA9PiAhbG9hZGluZ0R0b3MuaW5jbHVkZXMoZCkpLmZvckVhY2goZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGQubWV0VmlzdWFsaXNhdGllID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmdEdG9zLnB1c2goZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkUHJldk5vblZpc2libGVEdG8oZmlyc3RJZHggLSAxLCByaXRkZWxlbiwgbG9hZGluZ0R0b3MsIHZpc2libGVSaXRQcGxncywgYWxsRHRvcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZE5leHROb25WaXNpYmxlRHRvKGxhc3RJZHgsIHJpdGRlbGVuOiBSaXRkZWVsW10sIGxvYWRpbmdEdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10sIHZpc2libGVSaXRQcGxnczogc3RyaW5nW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxEdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKGxhc3RJZHggPD0gcml0ZGVsZW4ubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgY29uc3QgcHBsZyA9IHJpdGRlbGVuW2xhc3RJZHhdLmdldFBwbGcoKTtcbiAgICAgICAgICAgIGNvbnN0IHJpdGRlZWxEdG9zID0gYWxsRHRvcy5maWx0ZXIoZHRvID0+IGR0by5wcGxncy5pbmNsdWRlcyhwcGxnKSkuZmlsdGVyKGR0byA9PiAhbG9hZGluZ0R0b3MuaW5jbHVkZXMoZHRvKSk7XG5cbiAgICAgICAgICAgIGlmICghdmlzaWJsZVJpdFBwbGdzLmluY2x1ZGVzKHBwbGcpICYmIHJpdGRlZWxEdG9zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByaXRkZWVsRHRvcy5maWx0ZXIoZCA9PiAhbG9hZGluZ0R0b3MuaW5jbHVkZXMoZCkpLmZvckVhY2goZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGQubWV0VmlzdWFsaXNhdGllID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmdEdG9zLnB1c2goZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkTmV4dE5vblZpc2libGVEdG8obGFzdElkeCArIDEsIHJpdGRlbGVuLCBsb2FkaW5nRHRvcywgdmlzaWJsZVJpdFBwbGdzLCBhbGxEdG9zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGVidWdMb2coZGVidWcsIHZpc2libGVSaXRQcGxnczogc3RyaW5nW10sIGxvYWRpbmdEdG9zKTogdm9pZCB7XG4gICAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1JJVCBQUExHczogJyArIHZpc2libGVSaXRQcGxncyk7XG4gICAgICAgICAgICBsb2FkaW5nRHRvcy5mb3JFYWNoKGR0byA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHN0ciA9ICdcXG5EVE8tYmxhZE5hYW06ICcgKyBkdG8uYmxhZE5hYW07XG4gICAgICAgICAgICAgICAgc3RyICs9ICdcXG5EVE8tUFBMR3MgICA6ICcgKyBkdG8ucHBsZ3M7XG4gICAgICAgICAgICAgICAgc3RyICs9ICdcXG5WaXNpYmxlICAgICA6ICcgKyBkdG8ubWV0VmlzdWFsaXNhdGllO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHN0cik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGFjdGllczogTmF2aWdlZXJ8TmF2aWdlZXJWYW5hZnxTZXRSaXREZWxlblxuICAgIHByaXZhdGUgbmF2aWdlZXIocml0RGVsZW46IFJpdGRlZWxbXSwgYWN0aWU6IHtcbiAgICAgICAgcGFnaW5hdGlvblNpemU6IG51bWJlcjtcbiAgICAgICAgc3RhcFNpemU6IG51bWJlcjtcbiAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICByaXRkZWVsXG4gICAgfSwgc3RvcmVEdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10pOiB2b2lkIHtcbiAgICAgICAgLy8gYWxsZSByaXRkZWxlbiBrcmlqZ2VuIHppY2h0YmFhcmhlaWRCdWl0ZW5QYWdpbmF0aWUgPT4gZmFsc2VcbiAgICAgICAgaWYgKGFjdGllLnR5cGUgPT09IFJpdGRlbGVuQWN0aW9ucy5TRVRfUklUX0RFTEVOKSB7XG4gICAgICAgICAgICB0aGlzLmJlcGFhbFppY2h0YmFhcmhlaWRSZWNodHMoMCwgcml0RGVsZW4sIGFjdGllLnBhZ2luYXRpb25TaXplLCBzdG9yZUR0b3MpO1xuICAgICAgICB9IGVsc2UgaWYgKGFjdGllLnR5cGUgPT09IFJpdGRlbGVuQWN0aW9ucy5OQVZJR0VFUikge1xuICAgICAgICAgICAgY29uc3QgaXNMaW5rcyA9IGFjdGllLnN0YXBTaXplIDwgMDtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSB0aGlzLmJlcGFhbFN0YXJ0SW5kZXgocml0RGVsZW4pO1xuICAgICAgICAgICAgY29uc3QgZW5kSW5kZXggPSB0aGlzLmJlcGFhbEVuZEluZGV4KHJpdERlbGVuKTtcbiAgICAgICAgICAgIGNvbnN0IG5hdmlnZXJlbk1vZ2VsaWprID0gIShzdGFydEluZGV4ID09PSAwICYmIGlzTGlua3MgfHwgZW5kSW5kZXggPT09IHJpdERlbGVuLmxlbmd0aCAtIDEgJiYgIWlzTGlua3MpO1xuICAgICAgICAgICAgaWYgKG5hdmlnZXJlbk1vZ2VsaWprKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzTGlua3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iZXBhYWxaaWNodGJhYXJoZWlkTGlua3Moc3RhcnRJbmRleCwgcml0RGVsZW4sIGFjdGllLnBhZ2luYXRpb25TaXplLCBzdG9yZUR0b3MpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmVwYWFsWmljaHRiYWFyaGVpZFJlY2h0cyhlbmRJbmRleCwgcml0RGVsZW4sIGFjdGllLnBhZ2luYXRpb25TaXplLCBzdG9yZUR0b3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChhY3RpZS50eXBlID09PSBSaXRkZWxlbkFjdGlvbnMuTkFWSUdFRVJfVkFOQUYpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IHJpdERlbGVuLmluZGV4T2YoYWN0aWUucml0ZGVlbCk7XG4gICAgICAgICAgICB0aGlzLmJlcGFhbFppY2h0YmFhcmhlaWRSZWNodHMoaWR4LCByaXREZWxlbiwgYWN0aWUucGFnaW5hdGlvblNpemUsIHN0b3JlRHRvcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVJpdGRlbGVuKHJpdGRlbGVuOiBSaXRkZWVsW10sIHZpc2libGVEdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10pOiBSaXRkZWVsW10ge1xuICAgICAgICBjb25zdCB2aXNpYmxlSW5kaWNlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJpdGRlbGVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAocml0ZGVsZW5baV0uaXNaaWNodGJhYXJCaW5uZW5XaW5kb3coKSkge1xuICAgICAgICAgICAgICAgIHZpc2libGVJbmRpY2VzLnB1c2goaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWluID0gTWF0aC5taW4oLi4udmlzaWJsZUluZGljZXMpO1xuICAgICAgICBjb25zdCBtYXggPSBNYXRoLm1heCguLi52aXNpYmxlSW5kaWNlcyk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByaXRkZWxlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcmQgPSByaXRkZWxlbltpXTtcblxuICAgICAgICAgICAgaWYgKHJkLmlzWmljaHRiYWFyQmlubmVuV2luZG93KCkpIHtcbiAgICAgICAgICAgICAgICByZC5iZXBhYWxUb3BvbG9naWVFbGVtZW50ZW4odGhpcy5zaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlKTtcbiAgICAgICAgICAgICAgICBpZiAocmQuZ2V0VG9wb2xvZ2llRWxlbWVudGVuKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByaXRkZWxlbltpXSA9IHJkLmlzTmlldEJlc2NoaWtiYWFyKCkgPyByZC5jb3B5TWV0WmljaHRiYWFyaGVpZChSaXRkZWVsWmljaHRiYWFyaGVpZC5aSUNIVEJBQVIpIDogcmQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcml0ZGVsZW5baV0gPSB0aGlzLm1hYWtPbnppY2h0YmFhcihyZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVaaWNodGJhYXJoZWlkQWFuZ3JlemVuZGVSaXRkZWxlbihtaW4sIG1heCwgcml0ZGVsZW4sIHZpc2libGVEdG9zKTtcblxuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVaaWNodGJhYXJoZWlkQnVpdGVuV2luZG93KHJpdGRlbGVuLCB2aXNpYmxlRHRvcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVaaWNodGJhYXJoZWlkQnVpdGVuV2luZG93KG5pZXV3ZVJpdGRlbGVuLCB2aXNpYmxlRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdKTogUml0ZGVlbFtdIHtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5pZXV3ZVJpdGRlbGVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCByZCA9IG5pZXV3ZVJpdGRlbGVuW2ldO1xuXG4gICAgICAgICAgICBpZiAoIXJkLmlzWmljaHRiYWFyKCkgJiYgdGhpcy5iZXZhdEdldmlzdWFsaXNlZXJkZVBwbGcodmlzaWJsZUR0b3MsIHJkLmdldFBwbGcoKSkpIHtcbiAgICAgICAgICAgICAgICByZC5iZXBhYWxUb3BvbG9naWVFbGVtZW50ZW4odGhpcy5zaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlKTtcbiAgICAgICAgICAgICAgICBpZiAocmQuZ2V0VG9wb2xvZ2llRWxlbWVudGVuKCkubGVuZ3RoID4gMCAmJiB0aGlzLmlzRWVyc3RlTGFhdHN0ZVB1aWNaaWNodGJhYXIocmQuZ2V0VG9wb2xvZ2llRWxlbWVudGVuKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5pZXV3ZVJpdGRlbGVuW2ldID0gcmQuaXNOaWV0QmVzY2hpa2JhYXIoKSA/IHJkLmNvcHlNZXRaaWNodGJhYXJoZWlkRW5QYWdpbmF0aWUoUml0ZGVlbFppY2h0YmFhcmhlaWQuWklDSFRCQUFSLCB0cnVlKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZC5jb3B5TWV0WmljaHRiYWFyaGVpZEJ1aXRlblBhZ2luYXRpZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5pZXV3ZVJpdGRlbGVuO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlWmljaHRiYWFyaGVpZEFhbmdyZXplbmRlUml0ZGVsZW4obWluLCBtYXgsIG5pZXV3ZVJpdGRlbGVuLCB2aXNpYmxlRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdKTogdm9pZCB7XG4gICAgICAgIGxldCBpID0gbWluIC0gMTtcbiAgICAgICAgd2hpbGUgKGkgPj0gMCkge1xuICAgICAgICAgICAgaSA9IHRoaXMudXBkYXRlWmljaHRiYWFySGVpZChpLCAwLCB2aXNpYmxlRHRvcywgbmlldXdlUml0ZGVsZW4pIC0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGkgPSBtYXggKyAxO1xuICAgICAgICB3aGlsZSAoaSA8IG5pZXV3ZVJpdGRlbGVuLmxlbmd0aCkge1xuICAgICAgICAgICAgaSA9IHRoaXMudXBkYXRlWmljaHRiYWFySGVpZChpLCBuaWV1d2VSaXRkZWxlbi5sZW5ndGgsIHZpc2libGVEdG9zLCBuaWV1d2VSaXRkZWxlbikgKyAxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVaaWNodGJhYXJIZWlkKGk6IG51bWJlciwgZW5kOiBudW1iZXIsIHZpc2libGVEdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10sIG5pZXV3ZVJpdGRlbGVuOiBSaXRkZWVsW10pOiBudW1iZXIge1xuICAgICAgICBjb25zdCByZCA9IG5pZXV3ZVJpdGRlbGVuW2ldO1xuICAgICAgICBpZiAodGhpcy5iZXZhdEdldmlzdWFsaXNlZXJkZVBwbGcodmlzaWJsZUR0b3MsIHJkLmdldFBwbGcoKSkpIHtcbiAgICAgICAgICAgIGkgPSB0aGlzLnVwZGF0ZVppY2h0YmFhcmhlaWRBYW5ncmVuemVuZGVSaXRkZWVsKHJkLCBuaWV1d2VSaXRkZWxlbiwgaSwgZW5kKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGkgPSBlbmQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0VlcnN0ZUxhYXRzdGVQdWljWmljaHRiYWFyKHRvcG9FbGVtZW50ZW46IFRvcG9sb2d5RWxlbWVudFtdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwJyArIHRvcG9FbGVtZW50ZW5bMF0uZ2V0UHVpYygpKSB8fFxuICAgICAgICAgICAgISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncCcgKyB0b3BvRWxlbWVudGVuW3RvcG9FbGVtZW50ZW4ubGVuZ3RoIC0gMV0uZ2V0UHVpYygpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVppY2h0YmFhcmhlaWRBYW5ncmVuemVuZGVSaXRkZWVsKHJkOiBSaXRkZWVsLCBuaWV1d2VSaXRkZWxlbjogUml0ZGVlbFtdLCBpOiBudW1iZXIsIGVuZDogbnVtYmVyKTogYW55IHtcbiAgICAgICAgcmQuYmVwYWFsVG9wb2xvZ2llRWxlbWVudGVuKHRoaXMuc2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSk7XG4gICAgICAgIGlmIChyZC5nZXRUb3BvbG9naWVFbGVtZW50ZW4oKS5sZW5ndGggPiAwICYmIHRoaXMuaXNFZXJzdGVMYWF0c3RlUHVpY1ppY2h0YmFhcihyZC5nZXRUb3BvbG9naWVFbGVtZW50ZW4oKSkpIHtcbiAgICAgICAgICAgIG5pZXV3ZVJpdGRlbGVuW2ldID0gcmQuaXNOaWV0QmVzY2hpa2JhYXIoKSA/IHJkLmNvcHlNZXRaaWNodGJhYXJoZWlkKFJpdGRlZWxaaWNodGJhYXJoZWlkLlpJQ0hUQkFBUikgOiByZDtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGVuZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJldmF0R2V2aXN1YWxpc2VlcmRlUHBsZyh2aXNpYmxlRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdLCBwcGxnOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgZm9yIChjb25zdCBkdG8gb2YgdmlzaWJsZUR0b3MpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZHRvcHBsZyBvZiBkdG8ucHBsZ3MpIHtcbiAgICAgICAgICAgICAgICBpZiAoZHRvcHBsZyA9PT0gcHBsZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFha09uemljaHRiYWFyKHJkKTogUml0ZGVlbCB7XG4gICAgICAgIHJldHVybiByZC5pc1ppY2h0YmFhcigpIHx8IHJkLmlzT256aWNodGJhYXJEb29yR2VicnVpa2VyKCkgP1xuICAgICAgICAgICAgcmQuY29weU1ldFppY2h0YmFhcmhlaWRFblBhZ2luYXRpZShSaXRkZWVsWmljaHRiYWFyaGVpZC5PTlpJQ0hUQkFBUl9ET09SX1NZU1RFRU0sIGZhbHNlKSA6XG4gICAgICAgICAgICByZC5jb3B5TWV0WmljaHRiYWFyaGVpZEJ1aXRlblBhZ2luYXRpZShmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZXBhYWxaaWNodGJhYXJoZWlkUmVjaHRzKGlkeDogbnVtYmVyLCBpdGVtczogUml0ZGVlbFtdLCBwYWdpbmF0aW9uU2l6ZTogbnVtYmVyLCBkdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHBsZ3NXaW5kb3cgPSBbXTtcbiAgICAgICAgY29uc3QgZHRvc1dpbmRvdyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCByZCA9IGl0ZW1zW2ldO1xuICAgICAgICAgICAgaWYgKGkgPj0gaWR4ICYmIHRoaXMudmFsdEJpbm5lblBhZ2luYXRpZVdpbmRvdyhwcGxnc1dpbmRvdywgcGFnaW5hdGlvblNpemUsIGR0b3NXaW5kb3cpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRaaWNodGJhYXIocmQsIHBwbGdzV2luZG93LCBkdG9zLCBkdG9zV2luZG93LCBpdGVtcywgaSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGl0ZW1zW2ldID0gcmQuaXNaaWNodGJhYXIoKSB8fCByZC5pc09uemljaHRiYWFyRG9vckdlYnJ1aWtlcigpID9cbiAgICAgICAgICAgICAgICAgICAgcmQuY29weU1ldFppY2h0YmFhcmhlaWRFblBhZ2luYXRpZShSaXRkZWVsWmljaHRiYWFyaGVpZC5PTlpJQ0hUQkFBUl9ET09SX1NZU1RFRU0sIGZhbHNlKSA6XG4gICAgICAgICAgICAgICAgICAgIHJkLmNvcHlNZXRaaWNodGJhYXJoZWlkQnVpdGVuUGFnaW5hdGllKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsWmljaHRiYWFyaGVpZExpbmtzKGlkeDogbnVtYmVyLCBpdGVtczogUml0ZGVlbFtdLCBwYWdpbmF0aW9uU2l6ZTogbnVtYmVyLCBkdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHBsZ3NXaW5kb3cgPSBbXTtcbiAgICAgICAgY29uc3QgZHRvc1dpbmRvdyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gaXRlbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IHJkID0gaXRlbXNbaV07XG4gICAgICAgICAgICBpZiAoaSA8PSBpZHggJiYgdGhpcy52YWx0QmlubmVuUGFnaW5hdGllV2luZG93KHBwbGdzV2luZG93LCBwYWdpbmF0aW9uU2l6ZSwgZHRvc1dpbmRvdykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFppY2h0YmFhcihyZCwgcHBsZ3NXaW5kb3csIGR0b3MsIGR0b3NXaW5kb3csIGl0ZW1zLCBpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaXRlbXNbaV0gPSByZC5pc1ppY2h0YmFhcigpIHx8IHJkLmlzT256aWNodGJhYXJEb29yR2VicnVpa2VyKCkgP1xuICAgICAgICAgICAgICAgICAgICByZC5jb3B5TWV0WmljaHRiYWFyaGVpZEVuUGFnaW5hdGllKFJpdGRlZWxaaWNodGJhYXJoZWlkLk9OWklDSFRCQUFSX0RPT1JfU1lTVEVFTSwgZmFsc2UpIDpcbiAgICAgICAgICAgICAgICAgICAgcmQuY29weU1ldFppY2h0YmFhcmhlaWRCdWl0ZW5QYWdpbmF0aWUoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWx0QmlubmVuUGFnaW5hdGllV2luZG93KHBwbGdzV2luZG93LCBwYWdpbmF0aW9uU2l6ZTogbnVtYmVyLCBkdG9zV2luZG93KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBwcGxnc1dpbmRvdy5sZW5ndGggPCBwYWdpbmF0aW9uU2l6ZSB8fCBkdG9zV2luZG93Lmxlbmd0aCA8IHBhZ2luYXRpb25TaXplO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0WmljaHRiYWFyKHJkLCBwcGxnc1dpbmRvdywgZHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdLCBkdG9zV2luZG93LCBpdGVtczogUml0ZGVlbFtdLCBpOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbVBwbGcgPSByZC5nZXRQcGxnKCk7XG4gICAgICAgIGlmICghcHBsZ3NXaW5kb3cuaW5jbHVkZXMoaXRlbVBwbGcpKSB7XG4gICAgICAgICAgICBwcGxnc1dpbmRvdy5wdXNoKGl0ZW1QcGxnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBwbGdEdG9zID0gW107XG4gICAgICAgIGR0b3MuZmlsdGVyKGR0byA9PiBkdG8ucHBsZ3MuaW5jbHVkZXMoaXRlbVBwbGcpKS5mb3JFYWNoKGR0byA9PiB7XG4gICAgICAgICAgICBpZiAoIXBwbGdEdG9zLmluY2x1ZGVzKGR0bykpIHtcbiAgICAgICAgICAgICAgICBwcGxnRHRvcy5wdXNoKGR0byk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHBwbGdEdG9zLmZpbHRlcihkID0+ICFkdG9zV2luZG93LmluY2x1ZGVzKGQpKS5mb3JFYWNoKGQgPT4gZHRvc1dpbmRvdy5wdXNoKGQpKTtcblxuICAgICAgICBpdGVtc1tpXSA9ICFyZC5pc1ppY2h0YmFhcigpID8gcmQuY29weU1ldFppY2h0YmFhcmhlaWRFblBhZ2luYXRpZShSaXRkZWVsWmljaHRiYWFyaGVpZC5aSUNIVEJBQVIsIGZhbHNlKSA6XG4gICAgICAgICAgICByZC5jb3B5TWV0WmljaHRiYWFyaGVpZEJ1aXRlblBhZ2luYXRpZShmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZXBhYWxTdGFydEluZGV4KHJpdERlbGVuOiBSaXRkZWVsW10pOiBudW1iZXIge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJpdERlbGVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAocml0RGVsZW5baV0uaXNCaW5uZW5XaW5kb3coKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJlcGFhbEVuZEluZGV4KHJpdERlbGVuOiBSaXRkZWVsW10pOiBudW1iZXIge1xuICAgICAgICBmb3IgKGxldCBpID0gcml0RGVsZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGlmIChyaXREZWxlbltpXS5pc0Jpbm5lbldpbmRvdygpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbn1cbiJdfQ==
363
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFhZC1zaWduYWxlcmluZ3NiZWVsZGVuLmVmZmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9zdGF0ZS9lZmZlY3QvbGFhZC1zaWduYWxlcmluZ3NiZWVsZGVuLmVmZmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFdkUsT0FBTyxFQUFXLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkYsT0FBTyxFQUFXLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFNcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sS0FBSyxNQUFNLGtCQUFrQixDQUFDO0FBQ3JDLE9BQU8sS0FBSyxVQUFVLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLG1DQUFtQyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkcsT0FBTyxLQUFLLGVBQWUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7O0FBb0IvRCxNQUFNLE9BQU8sNkJBQTZCO0lBSXRDLFlBQW9CLFFBQWlCLEVBQ2pCLEtBQTRCLEVBQzVCLCtCQUFnRSxFQUNoRSxhQUE0QixFQUM1QixXQUEwQyxFQUMxQyxnQkFBa0MsRUFDbEMsZUFBZ0M7UUFOaEMsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixVQUFLLEdBQUwsS0FBSyxDQUF1QjtRQUM1QixvQ0FBK0IsR0FBL0IsK0JBQStCLENBQWlDO1FBQ2hFLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUErQjtRQUMxQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQVI1QyxxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFXOUIscUJBQWdCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNwRCxNQUFNLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxhQUFhLENBQUMsRUFDNUYsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFDMUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUMzQixDQUFDO1FBRUYsd0NBQW1DLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN2RSxNQUFNLENBQUMsVUFBVSxDQUFDLGtDQUFrQyxDQUFDLEVBQ3JELGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQzFCLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQyxDQUM1RixFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFxQnhCLHVCQUFrQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDdEQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUNwQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUMxQixTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQzlCLEVBQUUsQ0FBQztZQUNDLElBQUksRUFBRSxJQUFJLENBQUMsK0JBQStCLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUNuRixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsVUFBVTtTQUNiLENBQUMsQ0FBQyxJQUFJLENBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQ3ZDLFNBQVMsQ0FBQyxJQUFJLENBQUMsc0NBQXNDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQ2pFLFNBQVMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQ2xELEdBQUcsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3BELENBQ0osQ0FDSixFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFuRHhCLENBQUM7SUFpQk8sMkJBQTJCLENBQUMsRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUE4QjtRQUNoRixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM5SCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLEVBQzlELFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3RFLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRU8sZUFBZSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQThCO1FBQzNFLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQzlELElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMxRixDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7UUFDNUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsbUNBQW1DLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBbUJPLFlBQVksQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUF5QjtRQUN0RSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUNwRCxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQ3RELENBQUM7SUFDTixDQUFDO0lBRU8sc0NBQXNDLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBMEI7UUFDbEcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUMzRixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDOUksR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQ3RDLENBQUM7SUFDTixDQUFDO0lBRU8sdUJBQXVCLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUEwQjtRQUN4RSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNwRixHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQzFELENBQUM7SUFDTixDQUFDO0lBRU8sNEJBQTRCLENBQUMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBMEI7UUFDMUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLHNDQUFzQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBVSxFQUFFLFVBQTBCO1FBQ2xELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLGFBQWEsQ0FBQztRQUM1RCxNQUFNLFFBQVEsR0FBYyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFDMUUsTUFBTSxTQUFTLEdBQWdDLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQztRQUVwRixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFMUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUM7UUFDMUUsTUFBTSxlQUFlLEdBQWEsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFOUYsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN6RSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRS9HLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUNuRixHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDekcsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEcsTUFBTSxHQUFHLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDTCxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxXQUFXLENBQUMsUUFBbUIsRUFBRSxXQUF3QyxFQUFFLFVBQTBCLEVBQUUsZUFBeUIsRUFBRSxXQUFrQixFQUFFLE1BQWUsRUFBRSxTQUFzQztRQUNqTixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDbEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLGVBQWUsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUU5RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLCtCQUErQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxzQ0FBc0MsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ3hGLENBQUM7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDeEUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVPLG1DQUFtQyxDQUFDLEtBQWUsRUFBRSxNQUFrQjtRQUMzRSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzNILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2pFLENBQUM7SUFFTyxXQUFXLENBQUMsV0FBcUI7UUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRU8sY0FBYyxDQUFDLFdBQXFCO1FBQ3hDLElBQUksVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqQyxNQUFNLEtBQUssR0FBYyxFQUFFLENBQUM7UUFDNUIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM3QixJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNiLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLDRCQUE0QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ2hGLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMscUJBQXFCLEdBQUcsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JFLFVBQVUsR0FBRyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDakgsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVPLGdCQUFnQixDQUFDLFdBQXdDLEVBQUUsUUFBbUIsRUFBRSxlQUEwQixFQUFFLGVBQXlCLEVBQUUsVUFBMEI7UUFDckssTUFBTSxXQUFXLEdBQWdDLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQztRQUNsRSxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ2xILE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxVQUFVLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUNqSCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRU8sbUJBQW1CLENBQUMsZUFBeUIsRUFBRSxJQUFpQztRQUNwRixNQUFNLFdBQVcsR0FBZ0MsRUFBRSxDQUFDO1FBQ3BELGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN2RCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUM3QixXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMxQixDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUNILFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ25GLE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxRQUFRLENBQUMsS0FBYSxFQUFFLEtBQWEsRUFBRSxNQUFnQjtRQUMzRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDO0lBQzNDLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxRQUFnQixFQUFFLFFBQW1CLEVBQUUsV0FBd0MsRUFBRSxlQUF5QixFQUMxRyxPQUFvQztRQUM3RCxJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFOUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDNUQsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDMUQsQ0FBQyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7b0JBQzFCLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzdGLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQixDQUFDLE9BQWUsRUFBRSxRQUFtQixFQUFFLFdBQXdDLEVBQUUsZUFBeUIsRUFDekcsT0FBb0M7UUFDN0QsSUFBSSxPQUFPLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFOUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDNUQsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDMUQsQ0FBQyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7b0JBQzFCLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzVGLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVPLFFBQVEsQ0FBQyxLQUFjLEVBQUUsZUFBeUIsRUFBRSxXQUF3QztRQUNoRyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsZUFBZSxDQUFDLENBQUM7WUFDN0MsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDdEIsSUFBSSxHQUFHLEdBQUcsa0JBQWtCLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztnQkFDNUMsR0FBRyxJQUFJLGtCQUFrQixHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7Z0JBQ3RDLEdBQUcsSUFBSSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDO2dCQUNoRCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7SUFFRCw2Q0FBNkM7SUFDckMsUUFBUSxDQUFDLFFBQW1CLEVBQUUsS0FLckMsRUFBRSxTQUFzQztRQUNyQyw4REFBOEQ7UUFDOUQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9DLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDLFVBQVUsS0FBSyxDQUFDLElBQUksT0FBTyxJQUFJLFFBQVEsS0FBSyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDVixJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUN6RixDQUFDO3FCQUFNLENBQUM7b0JBQ0osSUFBSSxDQUFDLHlCQUF5QixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDeEYsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2RCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25GLENBQUM7SUFDTCxDQUFDO0lBRU8sY0FBYyxDQUFDLFFBQW1CLEVBQUUsV0FBd0M7UUFDaEYsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQzFCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdkMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxDQUFDO2dCQUN4QyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQztRQUV4QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV2QixJQUFJLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLENBQUM7Z0JBQy9CLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsQ0FBQztnQkFDbEUsSUFBSSxFQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3hDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hHLENBQUM7cUJBQU0sQ0FBQztvQkFDSixRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDM0MsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxDQUFDLHVDQUF1QyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRTlFLE9BQU8sSUFBSSxDQUFDLCtCQUErQixDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRU8sK0JBQStCLENBQUMsY0FBeUIsRUFBRSxXQUF3QztRQUV2RyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdDLE1BQU0sRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUU3QixJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDaEYsRUFBRSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO2dCQUNsRSxJQUFJLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLDRCQUE0QixDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDekcsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsK0JBQStCLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ25ILEVBQUUsQ0FBQyxtQ0FBbUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckQsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDMUIsQ0FBQztJQUVPLHVDQUF1QyxDQUFDLEdBQVcsRUFBRSxHQUFXLEVBQUUsY0FBeUIsRUFBRSxXQUF3QztRQUN6SSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ1osQ0FBQyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osT0FBTyxDQUFDLEdBQUcsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQy9CLENBQUMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1RixDQUFDO0lBQ0wsQ0FBQztJQUVPLG1CQUFtQixDQUFDLENBQVMsRUFBRSxHQUFXLEVBQUUsV0FBd0MsRUFBRSxjQUF5QjtRQUNuSCxNQUFNLEVBQUUsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDM0QsQ0FBQyxHQUFHLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxFQUFFLEVBQUUsY0FBYyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNoRixDQUFDO2FBQU0sQ0FBQztZQUNKLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDWixDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRU8sNEJBQTRCLENBQUMsYUFBZ0M7UUFDakUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzlELENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEdBQUcsR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFTyxzQ0FBc0MsQ0FBQyxFQUFXLEVBQUUsY0FBeUIsRUFBRSxDQUFTLEVBQUUsR0FBVztRQUN6RyxFQUFFLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDbEUsSUFBSSxFQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDekcsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUU5RyxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sR0FBRyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVPLHdCQUF3QixDQUFDLFdBQXdDLEVBQUUsSUFBWTtRQUNuRixLQUFLLE1BQU0sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQzVCLEtBQUssTUFBTSxPQUFPLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM5QixJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDbkIsT0FBTyxJQUFJLENBQUM7Z0JBQ2hCLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxlQUFlLENBQUMsRUFBVztRQUMvQixPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELEVBQUUsQ0FBQywrQkFBK0IsQ0FBQyxvQkFBb0IsQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzFGLEVBQUUsQ0FBQyxtQ0FBbUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU8seUJBQXlCLENBQUMsR0FBVyxFQUFFLEtBQWdCLEVBQUUsY0FBc0IsRUFBRSxJQUFpQztRQUN0SCxNQUFNLFdBQVcsR0FBYSxFQUFFLENBQUM7UUFDakMsTUFBTSxVQUFVLEdBQWdDLEVBQUUsQ0FBQztRQUNuRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLHlCQUF5QixDQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDdEYsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25FLENBQUM7aUJBQU0sQ0FBQztnQkFDSixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7b0JBQzVELEVBQUUsQ0FBQywrQkFBK0IsQ0FBQyxvQkFBb0IsQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUMxRixFQUFFLENBQUMsbUNBQW1DLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEQsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRU8sd0JBQXdCLENBQUMsR0FBVyxFQUFFLEtBQWdCLEVBQUUsY0FBc0IsRUFBRSxJQUFpQztRQUNySCxNQUFNLFdBQVcsR0FBYSxFQUFFLENBQUM7UUFDakMsTUFBTSxVQUFVLEdBQWdDLEVBQUUsQ0FBQztRQUNuRCxLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN6QyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLEVBQUUsY0FBYyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RGLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuRSxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO29CQUM1RCxFQUFFLENBQUMsK0JBQStCLENBQUMsb0JBQW9CLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDMUYsRUFBRSxDQUFDLG1DQUFtQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RELENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVPLHlCQUF5QixDQUFDLFdBQXFCLEVBQUUsY0FBc0IsRUFBRSxVQUF1QztRQUNwSCxPQUFPLFdBQVcsQ0FBQyxNQUFNLEdBQUcsY0FBYyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDO0lBQ3JGLENBQUM7SUFFTyxZQUFZLENBQUMsRUFBVyxFQUFFLFdBQXFCLEVBQUUsSUFBaUMsRUFBRSxVQUF1QyxFQUFFLEtBQWdCLEVBQUUsQ0FBUztRQUM1SixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBZ0MsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMzRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQixRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFL0UsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsK0JBQStCLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdEcsRUFBRSxDQUFDLG1DQUFtQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxRQUFtQjtRQUN4QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3ZDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7Z0JBQy9CLE9BQU8sQ0FBQyxDQUFDO1lBQ2IsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUVPLGNBQWMsQ0FBQyxRQUFtQjtRQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM1QyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO2dCQUMvQixPQUFPLENBQUMsQ0FBQztZQUNiLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNkLENBQUM7OEdBbmFRLDZCQUE2QjtrSEFBN0IsNkJBQTZCOzsyRkFBN0IsNkJBQTZCO2tCQUR6QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW14Vmlld2VyQ29tcG9uZW50LCBQb2ludCwgU3ZnSW5mbyB9IGZyb20gJ0Bsb3hpYS9pbXgtdmlld2VyJztcbmltcG9ydCB7IHNiYmxhZCB9IGZyb20gJ0Bsb3hpYS9yaWp3ZWdlbic7XG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCwgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNZXNzYWdlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9hdG9taWMtY29tcG9uZW50cy9zZXJ2aWNlcy9tZXNzYWdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFJpdGRlZWwsIFJpdGRlZWxaaWNodGJhYXJoZWlkIH0gZnJvbSAnLi4vLi4vbW9kZWwvcml0ZGVlbCc7XG5pbXBvcnQgeyBJbmZyYU1vZGVsIH0gZnJvbSAnLi4vLi4vb3B0aW1vJztcbmltcG9ydCB7IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG8sIFNpZ25hbGVyaW5nc2JlZWxkSW5mb1Jlc291cmNlIH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL3NpZ25hbGVyaW5nc2JlZWxkaW5mby5yZXNvdXJjZSc7XG5pbXBvcnQgeyBDb25uZWN0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29ubmVjdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWRpdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VkaXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFNpZ25hbGVyaW5nc0JlZWxkTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zaWduYWxlcmluZ3MtYmVlbGQtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IE1lc3NhZ2VCdWlsZGVyIH0gZnJvbSAnLi4vLi4vdXRpbC9tZXNzYWdlLWJ1aWxkZXInO1xuaW1wb3J0IFV0aWxzIGZyb20gJy4uLy4uL3V0aWwvdXRpbHMnO1xuaW1wb3J0ICogYXMgTXN0QWN0aW9ucyBmcm9tICcuLi9hY3Rpb25zL2FjdGlvbnMnO1xuaW1wb3J0IHsgU2V0U2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcywgU2V0VmlzaWJsZVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3MgfSBmcm9tICcuLi9hY3Rpb25zL2FjdGlvbnMnO1xuaW1wb3J0ICogYXMgUml0ZGVsZW5BY3Rpb25zIGZyb20gJy4uL2FjdGlvbnMvcml0ZGVsZW4uYWN0aW9ucyc7XG5pbXBvcnQgeyBNc3RFZGl0b3JTdGF0ZSB9IGZyb20gJy4uL21zdC1lZGl0b3Itc3RhdGUnO1xuaW1wb3J0IFRvcG9sb2d5RWxlbWVudCA9IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnQ7XG5cbmludGVyZmFjZSBOYXZpZ2VlckJ1aXRlblJpdElucHV0IHtcbiAgICByYW5kOiBUb3BvbG9neUVsZW1lbnQ7XG4gICAgcmFuZFB1aWM6IHN0cmluZztcbiAgICBzdG9yZVN0YXRlOiBNc3RFZGl0b3JTdGF0ZTtcbiAgICBvdGhlclBwbGc/OiBzdHJpbmc7XG4gICAgZHRvcz86IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXTtcbiAgICBzdmdEYXRhVXJscz86IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgU2lnbmFsZXJpbmdzYmVlbGRJbmZvSW5wdXQge1xuICAgIGR0b3M/OiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW107XG4gICAgYWN0aWU6IGFueTtcbiAgICBzdG9yZVN0YXRlOiBNc3RFZGl0b3JTdGF0ZTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExhYWRTaWduYWxlcmluZ3NiZWVsZGVuRWZmZWN0IHtcblxuICAgIHByaXZhdGUgU1ZHX1BJWEVMX1JVSU1URSA9IDMwO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICAgICAgICAgICAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxNc3RFZGl0b3JTdGF0ZT4sXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBzaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlOiBTaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgZWRpdG9yU2VydmljZTogRWRpdG9yU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIHNiaVJlc291cmNlOiBTaWduYWxlcmluZ3NiZWVsZEluZm9SZXNvdXJjZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIGNvbm5lY3RvclNlcnZpY2U6IENvbm5lY3RvclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBtZXNzYWdlc1Nlcml2Y2U6IE1lc3NhZ2VzU2VydmljZSkge1xuICAgIH1cblxuICAgIHZlcndlcmtSaXRkZWxlbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoUml0ZGVsZW5BY3Rpb25zLnNldFJpdERlbGVuLCBSaXRkZWxlbkFjdGlvbnMubmF2aWdlZXIsIFJpdGRlbGVuQWN0aW9ucy5uYXZpZ2VlclZhbmFmKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZSksXG4gICAgICAgIG1hcCgoW2FjdGllLCBzdG9yZVN0YXRlXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNc3RBY3Rpb25zLlNldE9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkKGZhbHNlKSk7XG4gICAgICAgICAgICB0aGlzLnZlcndlcmtSaXRkZWxlbihhY3RpZSwgc3RvcmVTdGF0ZSk7XG4gICAgICAgIH0pKSwgeyBkaXNwYXRjaDogZmFsc2UgfVxuICAgICk7XG5cbiAgICBsYWFkRW5WZXJ3ZXJrU2lnbmFsZXJpbmdzYmVlbGRJbmZvJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShNc3RBY3Rpb25zLmxhYWRFblZlcndlcmtTaWduYWxlcmluZ3NiZWVsZEluZm8pLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlKSxcbiAgICAgICAgc3dpdGNoTWFwKChbYWN0aWUsIHN0b3JlU3RhdGVdKSA9PiB0aGlzLmhhbmRsZVNpZ25hbGVyaW5nc2JlZWxkSW5mbyh7YWN0aWUsIHN0b3JlU3RhdGV9KSlcbiAgICApLCB7IGRpc3BhdGNoOiBmYWxzZSB9KTtcblxuICAgIHByaXZhdGUgaGFuZGxlU2lnbmFsZXJpbmdzYmVlbGRJbmZvKHthY3RpZSwgc3RvcmVTdGF0ZX0gOiBTaWduYWxlcmluZ3NiZWVsZEluZm9JbnB1dCk6ICBPYnNlcnZhYmxlPElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zYmlSZXNvdXJjZS5sYWFkU2lnbmFsZXJpbmdzYmVlbGRJbmZvKHRoaXMuY3JlYXRlU2lnbmFsZXJpbmdzYmVlbGRJbmZvUXVlcnlEdG8oYWN0aWUucHBsZ3MsIHN0b3JlU3RhdGUuaWFWZXJzaWUpKS5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHRhcCgoZHRvcykgPT4gdGhpcy5wcm9jZXNzUmVzcG9uc2Uoe2R0b3MsIHN0b3JlU3RhdGUsIGFjdGllfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlc1Nlcml2Y2Uuc2hvd01lc3NhZ2UoTWVzc2FnZUJ1aWxkZXIubmlldEdldm9uZGVuU0JJKGVycikpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycik7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1Jlc3BvbnNlKHsgZHRvcywgc3RvcmVTdGF0ZSwgYWN0aWUgfTogU2lnbmFsZXJpbmdzYmVlbGRJbmZvSW5wdXQpOiB2b2lkICB7XG4gICAgICAgIGlmIChkdG9zICYmIGR0b3MuZmlsdGVyKGR0byA9PiBkdG8ubWV0VmlzdWFsaXNhdGllKS5sZW5ndGggPiAxMikge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlc1Nlcml2Y2Uuc2hvd01lc3NhZ2UoTWVzc2FnZUJ1aWxkZXIubWVlckRhbjEyQmxhZGVuR2V2b25kZW4oZHRvcy5sZW5ndGgpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldFNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3MoZHRvcywgc3RvcmVTdGF0ZS5pYVZlcnNpZSwgYWN0aWUucml0LCBhY3RpZS5wYWdpbmF0aW9uU2l6ZSwgYWN0aWUucml0R2V3aWp6aWdkVG9lZ2VzdGFhbikpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldFZpc2libGVTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zKGR0b3MpKTtcbiAgICB9XG5cbiAgICBuYXZpZ2VlckJ1aXRlblJpdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoTXN0QWN0aW9ucy5uYXZpZ2VlckJ1aXRlblJpdCksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUpLFxuICAgICAgICBzd2l0Y2hNYXAoKFthY3RpZSwgc3RvcmVTdGF0ZV0pID0+XG4gICAgICAgICAgICBvZih7XG4gICAgICAgICAgICAgICAgcmFuZDogdGhpcy5zaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlLmdldFRvcG9sb2d5RWxlbWVudEJ5UHVpYyhhY3RpZS5yYW5kUHVpYyksXG4gICAgICAgICAgICAgICAgcmFuZFB1aWM6IGFjdGllLnJhbmRQdWljLFxuICAgICAgICAgICAgICAgIHN0b3JlU3RhdGVcbiAgICAgICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKHRoaXMuZ2V0T3RoZXJSYW5kLmJpbmQodGhpcykpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCh0aGlzLmxvYWRSb3V0ZUZpbGVzQW5kU2lnbmFsZXJpbmdzYmVlbGRJbmZvLmJpbmQodGhpcykpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCh0aGlzLmxvYWRTaWduYWxlcmluZ3NiZWVsZGVuLmJpbmQodGhpcykpLFxuICAgICAgICAgICAgICAgIG1hcCh0aGlzLnByb2Nlc3NTdmdzQW5kVXBkYXRlUml0ZGVsZW4uYmluZCh0aGlzKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICksIHsgZGlzcGF0Y2g6IGZhbHNlIH0pO1xuXG4gICAgcHJpdmF0ZSBnZXRPdGhlclJhbmQoeyByYW5kLCByYW5kUHVpYywgc3RvcmVTdGF0ZX06IE5hdmlnZWVyQnVpdGVuUml0SW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yU2VydmljZS5nZXRPdGhlclJhbmQocmFuZFB1aWMpLnBpcGUoXG4gICAgICAgICAgICBtYXAob3RoZXJQcGxnID0+ICh7IG90aGVyUHBsZywgcmFuZCwgc3RvcmVTdGF0ZSB9KSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRSb3V0ZUZpbGVzQW5kU2lnbmFsZXJpbmdzYmVlbGRJbmZvKHsgb3RoZXJQcGxnLCByYW5kLCBzdG9yZVN0YXRlIH06IE5hdmlnZWVyQnVpdGVuUml0SW5wdXQpIHtcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmxhYWRSb3V0ZUZpbGVzKHN0b3JlU3RhdGUuaWFWZXJzaWUudmVyc2llLCBbcmFuZC5nZXRQUExHKCksIG90aGVyUHBsZ10pO1xuICAgICAgICByZXR1cm4gdGhpcy5zYmlSZXNvdXJjZS5sYWFkU2lnbmFsZXJpbmdzYmVlbGRJbmZvKHRoaXMuY3JlYXRlU2lnbmFsZXJpbmdzYmVlbGRJbmZvUXVlcnlEdG8oW3JhbmQuZ2V0UFBMRygpLCBvdGhlclBwbGddLCBzdG9yZVN0YXRlLmlhVmVyc2llKSkucGlwZShcbiAgICAgICAgICAgIG1hcChkdG9zID0+ICh7IGR0b3MsIHN0b3JlU3RhdGUgfSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkU2lnbmFsZXJpbmdzYmVlbGRlbih7IGR0b3MsIHN0b3JlU3RhdGUgfTogTmF2aWdlZXJCdWl0ZW5SaXRJbnB1dCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lZGl0b3JTZXJ2aWNlLmxhYWRTaWduYWxlcmluZ3NiZWVsZGVuKHN0b3JlU3RhdGUuaWFWZXJzaWUudmVyc2llLCBkdG9zKS5waXBlKFxuICAgICAgICAgICAgbWFwKHN2Z0RhdGFVcmxzID0+ICh7IHN2Z0RhdGFVcmxzLCBzdG9yZVN0YXRlLCBkdG9zIH0pKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1N2Z3NBbmRVcGRhdGVSaXRkZWxlbih7IHN2Z0RhdGFVcmxzLCBzdG9yZVN0YXRlLCBkdG9zIH06IE5hdmlnZWVyQnVpdGVuUml0SW5wdXQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52ZXJ3ZXJrU3ZncyhzdmdEYXRhVXJscyk7XG4gICAgICAgIGNvbnN0IG5pZXV3ZVJpdGRlbGVuID0gdGhpcy51cGRhdGVSaXRkZWxlbihzdG9yZVN0YXRlLnJpdERlbGVuLCBkdG9zKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNc3RBY3Rpb25zLlVwZGF0ZVZpc2libGVTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zKGR0b3MpKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChSaXRkZWxlbkFjdGlvbnMudXBkYXRlUml0RGVsZW4obmlldXdlUml0ZGVsZW4pKTtcbiAgICB9XG5cbiAgICB2ZXJ3ZXJrUml0ZGVsZW4oYWN0aWU6IGFueSwgc3RvcmVTdGF0ZTogTXN0RWRpdG9yU3RhdGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXNJbml0ID0gYWN0aWUudHlwZSA9PT0gUml0ZGVsZW5BY3Rpb25zLlNFVF9SSVRfREVMRU47XG4gICAgICAgIGNvbnN0IHJpdERlbGVuOiBSaXRkZWVsW10gPSBpc0luaXQgPyBhY3RpZS5yaXREZWxlbiA6IHN0b3JlU3RhdGUucml0RGVsZW47XG4gICAgICAgIGNvbnN0IHN0b3JlRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdID0gc3RvcmVTdGF0ZS5zaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zO1xuXG4gICAgICAgIHRoaXMubmF2aWdlZXIocml0RGVsZW4sIGFjdGllLCBzdG9yZUR0b3MpO1xuXG4gICAgICAgIGNvbnN0IHZpc2libGVSaXREZWxlbiA9IHJpdERlbGVuLmZpbHRlcihuID0+IG4uaXNaaWNodGJhYXJCaW5uZW5XaW5kb3coKSk7XG4gICAgICAgIGNvbnN0IHZpc2libGVSaXRQcGxnczogc3RyaW5nW10gPSB2aXNpYmxlUml0RGVsZW4ubWFwKHIgPT4gci5nZXRQcGxnKCkpLmZpbHRlcih0aGlzLmRpc3RpbmN0KTtcblxuICAgICAgICBjb25zdCB2aXNpYmxlRHRvcyA9IHRoaXMuYmVwYWFsWmljaHRiYXJlRHRvcyh2aXNpYmxlUml0UHBsZ3MsIHN0b3JlRHRvcyk7XG4gICAgICAgIGNvbnN0IGxvYWRpbmdEdG9zID0gdGhpcy5iZXBhYWxUb0xvYWREdG9zKHZpc2libGVEdG9zLCByaXREZWxlbiwgdmlzaWJsZVJpdERlbGVuLCB2aXNpYmxlUml0UHBsZ3MsIHN0b3JlU3RhdGUpO1xuXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5sYWFkU2lnbmFsZXJpbmdzYmVlbGRlbihhY3RpZS5pYXZlcnNpZWluZm8udmVyc2llLCBsb2FkaW5nRHRvcykucGlwZShcbiAgICAgICAgICAgIHRhcChzdmdEYXRhVXJscyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52ZXJ3ZXJrU3ZncyhzdmdEYXRhVXJscyk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZShyaXREZWxlbiwgdmlzaWJsZUR0b3MsIHN0b3JlU3RhdGUsIHZpc2libGVSaXRQcGxncywgbG9hZGluZ0R0b3MsIGlzSW5pdCwgc3RvcmVEdG9zKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXNTZXJpdmNlLnNob3dNZXNzYWdlKE1lc3NhZ2VCdWlsZGVyLnJ3cERhdGFOaWV0R2V2b25kZW4oVXRpbHMuZ2V0VmFsaWRFcm9yck1lc3NhZ2UoZXJyKSkpO1xuICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICkuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTdGF0ZShyaXREZWxlbjogUml0ZGVlbFtdLCB2aXNpYmxlRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdLCBzdG9yZVN0YXRlOiBNc3RFZGl0b3JTdGF0ZSwgdmlzaWJsZVJpdFBwbGdzOiBzdHJpbmdbXSwgbG9hZGluZ0R0b3M6IGFueVtdLCBpc0luaXQ6IGJvb2xlYW4sIHN0b3JlRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmlldXdlUml0ZGVsZW4gPSB0aGlzLnVwZGF0ZVJpdGRlbGVuKHJpdERlbGVuLCB2aXNpYmxlRHRvcyk7XG4gICAgICAgICAgICB0aGlzLmRlYnVnTG9nKHN0b3JlU3RhdGUuZGVidWcsIHZpc2libGVSaXRQcGxncywgbG9hZGluZ0R0b3MpO1xuXG4gICAgICAgICAgICBpZiAoIWlzSW5pdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTXN0QWN0aW9ucy5VcGRhdGVTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zKHN0b3JlRHRvcykpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTXN0QWN0aW9ucy5VcGRhdGVWaXNpYmxlU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcyhsb2FkaW5nRHRvcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChSaXRkZWxlbkFjdGlvbnMudXBkYXRlUml0RGVsZW4obmlldXdlUml0ZGVsZW4pKTtcbiAgICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVTaWduYWxlcmluZ3NiZWVsZEluZm9RdWVyeUR0byhwcGxnczogc3RyaW5nW10sIGlhaW5mbzogSW5mcmFNb2RlbCk6IGFueSB7XG4gICAgICAgIGNvbnN0IGRhdHVtID0gaWFpbmZvLmluZ2FuZ3NEYXR1bSAmJiAhaXNOYU4oaWFpbmZvLmluZ2FuZ3NEYXR1bS5nZXRUaW1lKCkpID8gaWFpbmZvLmluZ2FuZ3NEYXR1bS50b0lTT1N0cmluZygpIDogdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4geyBwcGxncywgdmVyc2llOiBpYWluZm8udmVyc2llLCBpbmdhbmdzRGF0dW06IGRhdHVtIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2ZXJ3ZXJrU3ZncyhzdmdEYXRhVXJsczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNc3RBY3Rpb25zLlNldFN2Z0luZm9zKHRoaXMuYmVwYWFsU3ZnSW5mb3Moc3ZnRGF0YVVybHMpKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZXBhYWxTdmdJbmZvcyhzdmdEYXRhVXJsczogc3RyaW5nW10pOiBTdmdJbmZvW10ge1xuICAgICAgICBsZXQgbmV4dENvb3JkcyA9IG5ldyBQb2ludCgwLCAwKTtcbiAgICAgICAgY29uc3QgaW5mb3M6IFN2Z0luZm9bXSA9IFtdO1xuICAgICAgICBzdmdEYXRhVXJscy5mb3JFYWNoKHN2Z0RhdGFVcmwgPT4ge1xuICAgICAgICAgICAgaWYgKHN2Z0RhdGFVcmwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWNvZGVkID0gYXRvYihzdmdEYXRhVXJsLnN1YnN0cmluZygnZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCwnLmxlbmd0aCkpO1xuICAgICAgICAgICAgICAgIGluZm9zLnB1c2gobmV3IFN2Z0luZm8oJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwnICsgZGVjb2RlZCwgbmV4dENvb3JkcykpO1xuICAgICAgICAgICAgICAgIG5leHRDb29yZHMgPSBuZXcgUG9pbnQobmV4dENvb3Jkcy54ICsgSW14Vmlld2VyQ29tcG9uZW50LmdldFhDb29yZGluYXRlKGRlY29kZWQpICsgdGhpcy5TVkdfUElYRUxfUlVJTVRFLCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpbmZvcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGJlcGFhbFRvTG9hZER0b3ModmlzaWJsZUR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSwgcml0RGVsZW46IFJpdGRlZWxbXSwgdmlzaWJsZVJpdERlbGVuOiBSaXRkZWVsW10sIHZpc2libGVSaXRQcGxnczogc3RyaW5nW10sIHN0b3JlU3RhdGU6IE1zdEVkaXRvclN0YXRlKTogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdIHtcbiAgICAgICAgY29uc3QgbG9hZGluZ0R0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSA9IFsuLi52aXNpYmxlRHRvc107XG4gICAgICAgIGNvbnN0IGZpcnN0SWR4ID0gcml0RGVsZW4uaW5kZXhPZih2aXNpYmxlUml0RGVsZW5bMF0pIC0gMTtcbiAgICAgICAgdGhpcy5hZGRQcmV2Tm9uVmlzaWJsZUR0byhmaXJzdElkeCwgcml0RGVsZW4sIGxvYWRpbmdEdG9zLCB2aXNpYmxlUml0UHBsZ3MsIHN0b3JlU3RhdGUuc2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcyk7XG4gICAgICAgIGNvbnN0IGxhc3RJZHggPSByaXREZWxlbi5pbmRleE9mKHZpc2libGVSaXREZWxlblt2aXNpYmxlUml0RGVsZW4ubGVuZ3RoIC0gMV0pICsgMTtcbiAgICAgICAgdGhpcy5hZGROZXh0Tm9uVmlzaWJsZUR0byhsYXN0SWR4LCByaXREZWxlbiwgbG9hZGluZ0R0b3MsIHZpc2libGVSaXRQcGxncywgc3RvcmVTdGF0ZS5zaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zKTtcbiAgICAgICAgcmV0dXJuIGxvYWRpbmdEdG9zO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsWmljaHRiYXJlRHRvcyh2aXNpYmxlUml0UHBsZ3M6IHN0cmluZ1tdLCBkdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10pOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10ge1xuICAgICAgICBjb25zdCB2aXNpYmxlRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdID0gW107XG4gICAgICAgIHZpc2libGVSaXRQcGxncy5mb3JFYWNoKHBwbGcgPT4ge1xuICAgICAgICAgICAgZHRvcy5maWx0ZXIoZHRvID0+IGR0by5wcGxncy5pbmNsdWRlcyhwcGxnKSkuZm9yRWFjaChkdG8gPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdmlzaWJsZUR0b3MuaW5jbHVkZXMoZHRvKSkge1xuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlRHRvcy5wdXNoKGR0byk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2aXNpYmxlRHRvcy5mb3JFYWNoKGR0byA9PiBkdG8ubWV0VmlzdWFsaXNhdGllID0gdHJ1ZSk7XG4gICAgICAgIGR0b3MuZmlsdGVyKGQgPT4gIXZpc2libGVEdG9zLmluY2x1ZGVzKGQpKS5mb3JFYWNoKGQgPT4gZC5tZXRWaXN1YWxpc2F0aWUgPSBmYWxzZSk7XG4gICAgICAgIHJldHVybiB2aXNpYmxlRHRvcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGRpc3RpbmN0KHZhbHVlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIHZhbHVlczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlcy5pbmRleE9mKHZhbHVlKSA9PT0gaW5kZXg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRQcmV2Tm9uVmlzaWJsZUR0byhmaXJzdElkeDogbnVtYmVyLCByaXRkZWxlbjogUml0ZGVlbFtdLCBsb2FkaW5nRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdLCB2aXNpYmxlUml0UHBsZ3M6IHN0cmluZ1tdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdKTogdm9pZCB7XG4gICAgICAgIGlmIChmaXJzdElkeCA+PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBwcGxnID0gcml0ZGVsZW5bZmlyc3RJZHhdLmdldFBwbGcoKTtcbiAgICAgICAgICAgIGNvbnN0IHJpdGRlZWxEdG9zID0gYWxsRHRvcy5maWx0ZXIoZHRvID0+IGR0by5wcGxncy5pbmNsdWRlcyhwcGxnKSkuZmlsdGVyKGR0byA9PiAhbG9hZGluZ0R0b3MuaW5jbHVkZXMoZHRvKSk7XG5cbiAgICAgICAgICAgIGlmICghdmlzaWJsZVJpdFBwbGdzLmluY2x1ZGVzKHBwbGcpICYmIHJpdGRlZWxEdG9zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByaXRkZWVsRHRvcy5maWx0ZXIoZCA9PiAhbG9hZGluZ0R0b3MuaW5jbHVkZXMoZCkpLmZvckVhY2goZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGQubWV0VmlzdWFsaXNhdGllID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmdEdG9zLnB1c2goZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkUHJldk5vblZpc2libGVEdG8oZmlyc3RJZHggLSAxLCByaXRkZWxlbiwgbG9hZGluZ0R0b3MsIHZpc2libGVSaXRQcGxncywgYWxsRHRvcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZE5leHROb25WaXNpYmxlRHRvKGxhc3RJZHg6IG51bWJlciwgcml0ZGVsZW46IFJpdGRlZWxbXSwgbG9hZGluZ0R0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSwgdmlzaWJsZVJpdFBwbGdzOiBzdHJpbmdbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbER0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSk6IHZvaWQge1xuICAgICAgICBpZiAobGFzdElkeCA8PSByaXRkZWxlbi5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBjb25zdCBwcGxnID0gcml0ZGVsZW5bbGFzdElkeF0uZ2V0UHBsZygpO1xuICAgICAgICAgICAgY29uc3Qgcml0ZGVlbER0b3MgPSBhbGxEdG9zLmZpbHRlcihkdG8gPT4gZHRvLnBwbGdzLmluY2x1ZGVzKHBwbGcpKS5maWx0ZXIoZHRvID0+ICFsb2FkaW5nRHRvcy5pbmNsdWRlcyhkdG8pKTtcblxuICAgICAgICAgICAgaWYgKCF2aXNpYmxlUml0UHBsZ3MuaW5jbHVkZXMocHBsZykgJiYgcml0ZGVlbER0b3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJpdGRlZWxEdG9zLmZpbHRlcihkID0+ICFsb2FkaW5nRHRvcy5pbmNsdWRlcyhkKSkuZm9yRWFjaChkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZC5tZXRWaXN1YWxpc2F0aWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZ0R0b3MucHVzaChkKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGROZXh0Tm9uVmlzaWJsZUR0byhsYXN0SWR4ICsgMSwgcml0ZGVsZW4sIGxvYWRpbmdEdG9zLCB2aXNpYmxlUml0UHBsZ3MsIGFsbER0b3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWJ1Z0xvZyhkZWJ1ZzogYm9vbGVhbiwgdmlzaWJsZVJpdFBwbGdzOiBzdHJpbmdbXSwgbG9hZGluZ0R0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSk6IHZvaWQge1xuICAgICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdSSVQgUFBMR3M6ICcgKyB2aXNpYmxlUml0UHBsZ3MpO1xuICAgICAgICAgICAgbG9hZGluZ0R0b3MuZm9yRWFjaChkdG8gPT4ge1xuICAgICAgICAgICAgICAgIGxldCBzdHIgPSAnXFxuRFRPLWJsYWROYWFtOiAnICsgZHRvLmJsYWROYWFtO1xuICAgICAgICAgICAgICAgIHN0ciArPSAnXFxuRFRPLVBQTEdzICAgOiAnICsgZHRvLnBwbGdzO1xuICAgICAgICAgICAgICAgIHN0ciArPSAnXFxuVmlzaWJsZSAgICAgOiAnICsgZHRvLm1ldFZpc3VhbGlzYXRpZTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhzdHIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBhY3RpZXM6IE5hdmlnZWVyfE5hdmlnZWVyVmFuYWZ8U2V0Uml0RGVsZW5cbiAgICBwcml2YXRlIG5hdmlnZWVyKHJpdERlbGVuOiBSaXRkZWVsW10sIGFjdGllOiB7XG4gICAgICAgIHBhZ2luYXRpb25TaXplOiBudW1iZXI7XG4gICAgICAgIHN0YXBTaXplOiBudW1iZXI7XG4gICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgcml0ZGVlbDogUml0ZGVlbFxuICAgIH0sIHN0b3JlRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdKTogdm9pZCB7XG4gICAgICAgIC8vIGFsbGUgcml0ZGVsZW4ga3JpamdlbiB6aWNodGJhYXJoZWlkQnVpdGVuUGFnaW5hdGllID0+IGZhbHNlXG4gICAgICAgIGlmIChhY3RpZS50eXBlID09PSBSaXRkZWxlbkFjdGlvbnMuU0VUX1JJVF9ERUxFTikge1xuICAgICAgICAgICAgdGhpcy5iZXBhYWxaaWNodGJhYXJoZWlkUmVjaHRzKDAsIHJpdERlbGVuLCBhY3RpZS5wYWdpbmF0aW9uU2l6ZSwgc3RvcmVEdG9zKTtcbiAgICAgICAgfSBlbHNlIGlmIChhY3RpZS50eXBlID09PSBSaXRkZWxlbkFjdGlvbnMuTkFWSUdFRVIpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzTGlua3MgPSBhY3RpZS5zdGFwU2l6ZSA8IDA7XG4gICAgICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gdGhpcy5iZXBhYWxTdGFydEluZGV4KHJpdERlbGVuKTtcbiAgICAgICAgICAgIGNvbnN0IGVuZEluZGV4ID0gdGhpcy5iZXBhYWxFbmRJbmRleChyaXREZWxlbik7XG4gICAgICAgICAgICBjb25zdCBuYXZpZ2VyZW5Nb2dlbGlqayA9ICEoc3RhcnRJbmRleCA9PT0gMCAmJiBpc0xpbmtzIHx8IGVuZEluZGV4ID09PSByaXREZWxlbi5sZW5ndGggLSAxICYmICFpc0xpbmtzKTtcbiAgICAgICAgICAgIGlmIChuYXZpZ2VyZW5Nb2dlbGlqaykge1xuICAgICAgICAgICAgICAgIGlmIChpc0xpbmtzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmVwYWFsWmljaHRiYWFyaGVpZExpbmtzKHN0YXJ0SW5kZXgsIHJpdERlbGVuLCBhY3RpZS5wYWdpbmF0aW9uU2l6ZSwgc3RvcmVEdG9zKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJlcGFhbFppY2h0YmFhcmhlaWRSZWNodHMoZW5kSW5kZXgsIHJpdERlbGVuLCBhY3RpZS5wYWdpbmF0aW9uU2l6ZSwgc3RvcmVEdG9zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aWUudHlwZSA9PT0gUml0ZGVsZW5BY3Rpb25zLk5BVklHRUVSX1ZBTkFGKSB7XG4gICAgICAgICAgICBjb25zdCBpZHggPSByaXREZWxlbi5pbmRleE9mKGFjdGllLnJpdGRlZWwpO1xuICAgICAgICAgICAgdGhpcy5iZXBhYWxaaWNodGJhYXJoZWlkUmVjaHRzKGlkeCwgcml0RGVsZW4sIGFjdGllLnBhZ2luYXRpb25TaXplLCBzdG9yZUR0b3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVSaXRkZWxlbihyaXRkZWxlbjogUml0ZGVlbFtdLCB2aXNpYmxlRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdKTogUml0ZGVlbFtdIHtcbiAgICAgICAgY29uc3QgdmlzaWJsZUluZGljZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByaXRkZWxlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHJpdGRlbGVuW2ldLmlzWmljaHRiYWFyQmlubmVuV2luZG93KCkpIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlSW5kaWNlcy5wdXNoKGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKC4uLnZpc2libGVJbmRpY2VzKTtcbiAgICAgICAgY29uc3QgbWF4ID0gTWF0aC5tYXgoLi4udmlzaWJsZUluZGljZXMpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcml0ZGVsZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHJkID0gcml0ZGVsZW5baV07XG5cbiAgICAgICAgICAgIGlmIChyZC5pc1ppY2h0YmFhckJpbm5lbldpbmRvdygpKSB7XG4gICAgICAgICAgICAgICAgcmQuYmVwYWFsVG9wb2xvZ2llRWxlbWVudGVuKHRoaXMuc2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSk7XG4gICAgICAgICAgICAgICAgaWYgKHJkLmdldFRvcG9sb2dpZUVsZW1lbnRlbigpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcml0ZGVsZW5baV0gPSByZC5pc05pZXRCZXNjaGlrYmFhcigpID8gcmQuY29weU1ldFppY2h0YmFhcmhlaWQoUml0ZGVlbFppY2h0YmFhcmhlaWQuWklDSFRCQUFSKSA6IHJkO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJpdGRlbGVuW2ldID0gdGhpcy5tYWFrT256aWNodGJhYXIocmQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlWmljaHRiYWFyaGVpZEFhbmdyZW56ZW5kZVJpdGRlbGVuKG1pbiwgbWF4LCByaXRkZWxlbiwgdmlzaWJsZUR0b3MpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZVppY2h0YmFhcmhlaWRCdWl0ZW5XaW5kb3cocml0ZGVsZW4sIHZpc2libGVEdG9zKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVppY2h0YmFhcmhlaWRCdWl0ZW5XaW5kb3cobmlldXdlUml0ZGVsZW46IFJpdGRlZWxbXSwgdmlzaWJsZUR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSk6IFJpdGRlZWxbXSB7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuaWV1d2VSaXRkZWxlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcmQgPSBuaWV1d2VSaXRkZWxlbltpXTtcblxuICAgICAgICAgICAgaWYgKCFyZC5pc1ppY2h0YmFhcigpICYmIHRoaXMuYmV2YXRHZXZpc3VhbGlzZWVyZGVQcGxnKHZpc2libGVEdG9zLCByZC5nZXRQcGxnKCkpKSB7XG4gICAgICAgICAgICAgICAgcmQuYmVwYWFsVG9wb2xvZ2llRWxlbWVudGVuKHRoaXMuc2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSk7XG4gICAgICAgICAgICAgICAgaWYgKHJkLmdldFRvcG9sb2dpZUVsZW1lbnRlbigpLmxlbmd0aCA+IDAgJiYgdGhpcy5pc0VlcnN0ZUxhYXRzdGVQdWljWmljaHRiYWFyKHJkLmdldFRvcG9sb2dpZUVsZW1lbnRlbigpKSkge1xuICAgICAgICAgICAgICAgICAgICBuaWV1d2VSaXRkZWxlbltpXSA9IHJkLmlzTmlldEJlc2NoaWtiYWFyKCkgPyByZC5jb3B5TWV0WmljaHRiYWFyaGVpZEVuUGFnaW5hdGllKFJpdGRlZWxaaWNodGJhYXJoZWlkLlpJQ0hUQkFBUiwgdHJ1ZSkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmQuY29weU1ldFppY2h0YmFhcmhlaWRCdWl0ZW5QYWdpbmF0aWUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuaWV1d2VSaXRkZWxlbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVppY2h0YmFhcmhlaWRBYW5ncmVuemVuZGVSaXRkZWxlbihtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIG5pZXV3ZVJpdGRlbGVuOiBSaXRkZWVsW10sIHZpc2libGVEdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10pOiB2b2lkIHtcbiAgICAgICAgbGV0IGkgPSBtaW4gLSAxO1xuICAgICAgICB3aGlsZSAoaSA+PSAwKSB7XG4gICAgICAgICAgICBpID0gdGhpcy51cGRhdGVaaWNodGJhYXJIZWlkKGksIDAsIHZpc2libGVEdG9zLCBuaWV1d2VSaXRkZWxlbikgLSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgaSA9IG1heCArIDE7XG4gICAgICAgIHdoaWxlIChpIDwgbmlldXdlUml0ZGVsZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICBpID0gdGhpcy51cGRhdGVaaWNodGJhYXJIZWlkKGksIG5pZXV3ZVJpdGRlbGVuLmxlbmd0aCwgdmlzaWJsZUR0b3MsIG5pZXV3ZVJpdGRlbGVuKSArIDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVppY2h0YmFhckhlaWQoaTogbnVtYmVyLCBlbmQ6IG51bWJlciwgdmlzaWJsZUR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSwgbmlldXdlUml0ZGVsZW46IFJpdGRlZWxbXSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHJkID0gbmlldXdlUml0ZGVsZW5baV07XG4gICAgICAgIGlmICh0aGlzLmJldmF0R2V2aXN1YWxpc2VlcmRlUHBsZyh2aXNpYmxlRHRvcywgcmQuZ2V0UHBsZygpKSkge1xuICAgICAgICAgICAgaSA9IHRoaXMudXBkYXRlWmljaHRiYWFyaGVpZEFhbmdyZW56ZW5kZVJpdGRlZWwocmQsIG5pZXV3ZVJpdGRlbGVuLCBpLCBlbmQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaSA9IGVuZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRWVyc3RlTGFhdHN0ZVB1aWNaaWNodGJhYXIodG9wb0VsZW1lbnRlbjogVG9wb2xvZ3lFbGVtZW50W10pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3AnICsgdG9wb0VsZW1lbnRlblswXS5nZXRQdWljKCkpIHx8XG4gICAgICAgICAgICAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwJyArIHRvcG9FbGVtZW50ZW5bdG9wb0VsZW1lbnRlbi5sZW5ndGggLSAxXS5nZXRQdWljKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlWmljaHRiYWFyaGVpZEFhbmdyZW56ZW5kZVJpdGRlZWwocmQ6IFJpdGRlZWwsIG5pZXV3ZVJpdGRlbGVuOiBSaXRkZWVsW10sIGk6IG51bWJlciwgZW5kOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZC5iZXBhYWxUb3BvbG9naWVFbGVtZW50ZW4odGhpcy5zaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlKTtcbiAgICAgICAgaWYgKHJkLmdldFRvcG9sb2dpZUVsZW1lbnRlbigpLmxlbmd0aCA+IDAgJiYgdGhpcy5pc0VlcnN0ZUxhYXRzdGVQdWljWmljaHRiYWFyKHJkLmdldFRvcG9sb2dpZUVsZW1lbnRlbigpKSkge1xuICAgICAgICAgICAgbmlldXdlUml0ZGVsZW5baV0gPSByZC5pc05pZXRCZXNjaGlrYmFhcigpID8gcmQuY29weU1ldFppY2h0YmFhcmhlaWQoUml0ZGVlbFppY2h0YmFhcmhlaWQuWklDSFRCQUFSKSA6IHJkO1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZW5kO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmV2YXRHZXZpc3VhbGlzZWVyZGVQcGxnKHZpc2libGVEdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10sIHBwbGc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBmb3IgKGNvbnN0IGR0byBvZiB2aXNpYmxlRHRvcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBkdG9wcGxnIG9mIGR0by5wcGxncykge1xuICAgICAgICAgICAgICAgIGlmIChkdG9wcGxnID09PSBwcGxnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYWFrT256aWNodGJhYXIocmQ6IFJpdGRlZWwpOiBSaXRkZWVsIHtcbiAgICAgICAgcmV0dXJuIHJkLmlzWmljaHRiYWFyKCkgfHwgcmQuaXNPbnppY2h0YmFhckRvb3JHZWJydWlrZXIoKSA/XG4gICAgICAgICAgICByZC5jb3B5TWV0WmljaHRiYWFyaGVpZEVuUGFnaW5hdGllKFJpdGRlZWxaaWNodGJhYXJoZWlkLk9OWklDSFRCQUFSX0RPT1JfU1lTVEVFTSwgZmFsc2UpIDpcbiAgICAgICAgICAgIHJkLmNvcHlNZXRaaWNodGJhYXJoZWlkQnVpdGVuUGFnaW5hdGllKGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJlcGFhbFppY2h0YmFhcmhlaWRSZWNodHMoaWR4OiBudW1iZXIsIGl0ZW1zOiBSaXRkZWVsW10sIHBhZ2luYXRpb25TaXplOiBudW1iZXIsIGR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcGxnc1dpbmRvdzogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY29uc3QgZHRvc1dpbmRvdzogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHJkID0gaXRlbXNbaV07XG4gICAgICAgICAgICBpZiAoaSA+PSBpZHggJiYgdGhpcy52YWx0QmlubmVuUGFnaW5hdGllV2luZG93KHBwbGdzV2luZG93LCBwYWdpbmF0aW9uU2l6ZSwgZHRvc1dpbmRvdykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFppY2h0YmFhcihyZCwgcHBsZ3NXaW5kb3csIGR0b3MsIGR0b3NXaW5kb3csIGl0ZW1zLCBpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaXRlbXNbaV0gPSByZC5pc1ppY2h0YmFhcigpIHx8IHJkLmlzT256aWNodGJhYXJEb29yR2VicnVpa2VyKCkgP1xuICAgICAgICAgICAgICAgICAgICByZC5jb3B5TWV0WmljaHRiYWFyaGVpZEVuUGFnaW5hdGllKFJpdGRlZWxaaWNodGJhYXJoZWlkLk9OWklDSFRCQUFSX0RPT1JfU1lTVEVFTSwgZmFsc2UpIDpcbiAgICAgICAgICAgICAgICAgICAgcmQuY29weU1ldFppY2h0YmFhcmhlaWRCdWl0ZW5QYWdpbmF0aWUoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZXBhYWxaaWNodGJhYXJoZWlkTGlua3MoaWR4OiBudW1iZXIsIGl0ZW1zOiBSaXRkZWVsW10sIHBhZ2luYXRpb25TaXplOiBudW1iZXIsIGR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcGxnc1dpbmRvdzogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY29uc3QgZHRvc1dpbmRvdzogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSBpdGVtcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgcmQgPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIGlmIChpIDw9IGlkeCAmJiB0aGlzLnZhbHRCaW5uZW5QYWdpbmF0aWVXaW5kb3cocHBsZ3NXaW5kb3csIHBhZ2luYXRpb25TaXplLCBkdG9zV2luZG93KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0WmljaHRiYWFyKHJkLCBwcGxnc1dpbmRvdywgZHRvcywgZHRvc1dpbmRvdywgaXRlbXMsIGkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpdGVtc1tpXSA9IHJkLmlzWmljaHRiYWFyKCkgfHwgcmQuaXNPbnppY2h0YmFhckRvb3JHZWJydWlrZXIoKSA/XG4gICAgICAgICAgICAgICAgICAgIHJkLmNvcHlNZXRaaWNodGJhYXJoZWlkRW5QYWdpbmF0aWUoUml0ZGVlbFppY2h0YmFhcmhlaWQuT05aSUNIVEJBQVJfRE9PUl9TWVNURUVNLCBmYWxzZSkgOlxuICAgICAgICAgICAgICAgICAgICByZC5jb3B5TWV0WmljaHRiYWFyaGVpZEJ1aXRlblBhZ2luYXRpZShmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbHRCaW5uZW5QYWdpbmF0aWVXaW5kb3cocHBsZ3NXaW5kb3c6IHN0cmluZ1tdLCBwYWdpbmF0aW9uU2l6ZTogbnVtYmVyLCBkdG9zV2luZG93OiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHBwbGdzV2luZG93Lmxlbmd0aCA8IHBhZ2luYXRpb25TaXplIHx8IGR0b3NXaW5kb3cubGVuZ3RoIDwgcGFnaW5hdGlvblNpemU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRaaWNodGJhYXIocmQ6IFJpdGRlZWwsIHBwbGdzV2luZG93OiBzdHJpbmdbXSwgZHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdLCBkdG9zV2luZG93OiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10sIGl0ZW1zOiBSaXRkZWVsW10sIGk6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBpdGVtUHBsZyA9IHJkLmdldFBwbGcoKTtcbiAgICAgICAgaWYgKCFwcGxnc1dpbmRvdy5pbmNsdWRlcyhpdGVtUHBsZykpIHtcbiAgICAgICAgICAgIHBwbGdzV2luZG93LnB1c2goaXRlbVBwbGcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHBsZ0R0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSA9IFtdO1xuICAgICAgICBkdG9zLmZpbHRlcihkdG8gPT4gZHRvLnBwbGdzLmluY2x1ZGVzKGl0ZW1QcGxnKSkuZm9yRWFjaChkdG8gPT4ge1xuICAgICAgICAgICAgaWYgKCFwcGxnRHRvcy5pbmNsdWRlcyhkdG8pKSB7XG4gICAgICAgICAgICAgICAgcHBsZ0R0b3MucHVzaChkdG8pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBwcGxnRHRvcy5maWx0ZXIoZCA9PiAhZHRvc1dpbmRvdy5pbmNsdWRlcyhkKSkuZm9yRWFjaChkID0+IGR0b3NXaW5kb3cucHVzaChkKSk7XG5cbiAgICAgICAgaXRlbXNbaV0gPSAhcmQuaXNaaWNodGJhYXIoKSA/IHJkLmNvcHlNZXRaaWNodGJhYXJoZWlkRW5QYWdpbmF0aWUoUml0ZGVlbFppY2h0YmFhcmhlaWQuWklDSFRCQUFSLCBmYWxzZSkgOlxuICAgICAgICAgICAgcmQuY29weU1ldFppY2h0YmFhcmhlaWRCdWl0ZW5QYWdpbmF0aWUoZmFsc2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsU3RhcnRJbmRleChyaXREZWxlbjogUml0ZGVlbFtdKTogbnVtYmVyIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByaXREZWxlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHJpdERlbGVuW2ldLmlzQmlubmVuV2luZG93KCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZXBhYWxFbmRJbmRleChyaXREZWxlbjogUml0ZGVlbFtdKTogbnVtYmVyIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHJpdERlbGVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAocml0RGVsZW5baV0uaXNCaW5uZW5XaW5kb3coKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG59XG4iXX0=
@@ -11,11 +11,11 @@ import * as i2 from "@ngrx/store";
11
11
  import * as i3 from "../../services/signalerings-beeld-manager.service";
12
12
  import * as i4 from "../../services/editor.service";
13
13
  export class RitdelenEffect {
14
- constructor(actions$, store, sbmService, rijwegPlanEditorService) {
14
+ constructor(actions$, store, sbmService, editorService) {
15
15
  this.actions$ = actions$;
16
16
  this.store = store;
17
17
  this.sbmService = sbmService;
18
- this.rijwegPlanEditorService = rijwegPlanEditorService;
18
+ this.editorService = editorService;
19
19
  this.updateRitDelen$ = createEffect(() => this.actions$.pipe(ofType(RitdelenActions.updateRitDelen), withLatestFrom(this.store), map(([actie, _storeState]) => {
20
20
  const nieuweRitDelen = actie.ritDelen.map(ritDeel => ritDeel.isZichtbaar() ?
21
21
  ritDeel.copyMetAlternatieveRoutes(this.sbmService.bepaalAlternativeRoutes(ritDeel.getRijweg())) : ritDeel);
@@ -33,25 +33,25 @@ export class RitdelenEffect {
33
33
  return RitdelenActions.setRitdelenAfterUpdate(ritDelen);
34
34
  })));
35
35
  this.ritdeelInvoegen$ = createEffect(() => this.actions$.pipe(ofType(RitdelenActions.ritdeelInvoegen), withLatestFrom(this.store), map(([actie, storeState]) => {
36
- const ritDelen = this.ritdeelInvoegenFunc(storeState.ritDelen, actie.nieuweRoute, this.rijwegPlanEditorService, this.sbmService);
36
+ const ritDelen = this.ritdeelInvoegenFunc(storeState.ritDelen, actie.nieuweRoute);
37
37
  return RitdelenActions.setRitdelenAfterUpdate(ritDelen);
38
38
  })));
39
39
  }
40
- ritdeelInvoegenFunc(ritDelen, nieuweRoute, rijwegPlanEditorService, sbmService) {
40
+ ritdeelInvoegenFunc(ritDelen, nieuweRoute) {
41
41
  const origineelRitdeel = nieuweRoute.beginSeinOpRitdeel.ritdeel;
42
42
  const beginSein = nieuweRoute.beginSeinOpRitdeel.sein;
43
- const rijwegplan = rijwegPlanEditorService.getRijwegplan(beginSein.getPPLG());
43
+ const rijwegplan = this.editorService.getRijwegplan(beginSein.getPPLG());
44
44
  const dwangen = JsJavaUtil.listToArray(rijwegplan.getOnderliggendeDwangenTotEnVanSein(origineelRitdeel.getDwang(), beginSein));
45
45
  const isSamengesteldeRoute = dwangen[0] && dwangen[1];
46
46
  let newRitdeel1 = origineelRitdeel;
47
47
  if (isSamengesteldeRoute) {
48
- newRitdeel1 = this.verwerkSamengesteldeRoute(origineelRitdeel, rijwegplan, dwangen, sbmService, ritDelen);
48
+ newRitdeel1 = this.verwerkSamengesteldeRoute(origineelRitdeel, rijwegplan, dwangen, ritDelen);
49
49
  }
50
50
  if (nieuweRoute.combinatieVoorEindsein.isVrijeBaanRijweg()) {
51
- this.extendRitdeelMetVrijebaanInfo(newRitdeel1, nieuweRoute, sbmService);
51
+ this.extendRitdeelMetVrijebaanInfo(newRitdeel1, nieuweRoute);
52
52
  }
53
53
  else {
54
- this.maakNieuwRitdeel(newRitdeel1, nieuweRoute, sbmService, ritDelen);
54
+ this.maakNieuwRitdeel(newRitdeel1, nieuweRoute, ritDelen);
55
55
  }
56
56
  if (isSamengesteldeRoute) {
57
57
  ritDelen.splice(ritDelen.indexOf(origineelRitdeel), 1);
@@ -66,38 +66,38 @@ export class RitdelenEffect {
66
66
  }
67
67
  }
68
68
  }
69
- verwerkSamengesteldeRoute(origineelRitdeel, rijwegplan, dwangen, sbmService, ritDelen) {
69
+ verwerkSamengesteldeRoute(origineelRitdeel, rijwegplan, dwangen, ritDelen) {
70
70
  // dwangen in 2 nieuwe ritdelen verwerken voor de knip
71
71
  const nieuweRijweg1 = rijwegplan.getRijwegVoorSeinen(dwangen[0].getRoute().getBeginSein(), dwangen[0].getRoute().getEindSein());
72
72
  const dwangInfo1 = new RijwegplanRijwegDwangCombinatie(rijwegplan, nieuweRijweg1, dwangen[0]);
73
- const newRitdeel1 = new Ritdeel(dwangInfo1, [], null, null, null, []);
73
+ const newRitdeel1 = new Ritdeel(dwangInfo1, [], undefined, undefined, undefined, []);
74
74
  // remove vrijbaan info uit ritdeel
75
- newRitdeel1.vrijebaanRijwegplanRijwegDwangCombi = null;
76
- newRitdeel1.vervolgSpoor = null;
77
- newRitdeel1.bepaalTopologieElementen(sbmService);
75
+ newRitdeel1.vrijebaanRijwegplanRijwegDwangCombi = undefined;
76
+ newRitdeel1.vervolgSpoor = undefined;
77
+ newRitdeel1.bepaalTopologieElementen(this.sbmService);
78
78
  this.insertRitdeel(ritDelen, origineelRitdeel, newRitdeel1);
79
79
  const nieuweRijweg2 = rijwegplan.getRijwegVoorSeinen(dwangen[1].getRoute().getBeginSein(), dwangen[1].getRoute().getEindSein());
80
80
  const dwangInfo2 = new RijwegplanRijwegDwangCombinatie(rijwegplan, nieuweRijweg2, dwangen[1]);
81
- const newRitdeel2 = new Ritdeel(dwangInfo2, [], null, null, null, []);
82
- newRitdeel2.bepaalTopologieElementen(sbmService);
81
+ const newRitdeel2 = new Ritdeel(dwangInfo2, [], undefined, undefined, undefined, []);
82
+ newRitdeel2.bepaalTopologieElementen(this.sbmService);
83
83
  this.insertRitdeel(ritDelen, newRitdeel1, newRitdeel2);
84
84
  return newRitdeel1;
85
85
  }
86
- extendRitdeelMetVrijebaanInfo(newRitdeel1, nieuweRoute, sbmService) {
86
+ extendRitdeelMetVrijebaanInfo(newRitdeel1, nieuweRoute) {
87
87
  newRitdeel1.vrijebaanRijwegplanRijwegDwangCombi = nieuweRoute.combinatieVoorEindsein;
88
88
  const vbrwp = nieuweRoute.combinatieVoorEindsein.rijwegplan;
89
89
  newRitdeel1.vervolgSpoor = vbrwp.getVervolgSpoor(nieuweRoute.combinatieVoorEindsein.rijweg);
90
- newRitdeel1.bepaalTopologieElementen(sbmService);
90
+ newRitdeel1.bepaalTopologieElementen(this.sbmService);
91
91
  }
92
- maakNieuwRitdeel(newRitdeel1, nieuweRoute, sbmService, ritDelen) {
92
+ maakNieuwRitdeel(newRitdeel1, nieuweRoute, ritDelen) {
93
93
  let newRitdeel = this.createRitdeel(nieuweRoute);
94
- const altRoutes = sbmService.bepaalAlternativeRoutes(newRitdeel.getRijweg());
94
+ const altRoutes = this.sbmService.bepaalAlternativeRoutes(newRitdeel.getRijweg());
95
95
  newRitdeel = newRitdeel.copyMetAlternatieveRoutes(altRoutes);
96
- newRitdeel.bepaalTopologieElementen(sbmService);
96
+ newRitdeel.bepaalTopologieElementen(this.sbmService);
97
97
  this.insertRitdeel(ritDelen, newRitdeel1, newRitdeel);
98
98
  }
99
99
  createRitdeel(nieuweRoute) {
100
- return new Ritdeel(nieuweRoute.combinatieVoorEindsein, [], null, null, null, []);
100
+ return new Ritdeel(nieuweRoute.combinatieVoorEindsein, [], undefined, undefined, undefined, []);
101
101
  }
102
102
  insertRitdeel(ritdelen, naRitdeelPositie, newRitdeel) {
103
103
  const idx = ritdelen.indexOf(naRitdeelPositie);
@@ -109,4 +109,4 @@ export class RitdelenEffect {
109
109
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RitdelenEffect, decorators: [{
110
110
  type: Injectable
111
111
  }], ctorParameters: () => [{ type: i1.Actions }, { type: i2.Store }, { type: i3.SignaleringsBeeldManagerService }, { type: i4.EditorService }] });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicml0ZGVsZW4uZWZmZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL3N0YXRlL2VmZmVjdC9yaXRkZWxlbi5lZmZlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFXLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHOUMsT0FBTyxLQUFLLGVBQWUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7O0FBSy9ELE1BQU0sT0FBTyxjQUFjO0lBRXZCLFlBQW9CLFFBQWlCLEVBQ2pCLEtBQTRCLEVBQzVCLFVBQTJDLEVBQzNDLHVCQUFzQztRQUh0QyxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLFVBQUssR0FBTCxLQUFLLENBQXVCO1FBQzVCLGVBQVUsR0FBVixVQUFVLENBQWlDO1FBQzNDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBZTtRQUcxRCxvQkFBZSxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDbkQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsRUFDdEMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFDMUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRTtZQUN6QixNQUFNLGNBQWMsR0FBRyxLQUFLLENB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RUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVPLGFBQWEsQ0FBQyxRQUFtQixFQUFFLGdCQUF5QixFQUFFLFVBQW1CO1FBQ3JGLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMvQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7OEdBaklRLGNBQWM7a0hBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRvbWVpbiwgSnNKYXZhVXRpbCB9IGZyb20gJ0Bsb3hpYS9yaWp3ZWdlbic7XG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBtYXAsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmluYXRpZSB9IGZyb20gJy4uLy4uL21vZGVsL3JpandlZ3BsYW4tcmlqd2VnLWR3YW5nLWNvbWJpbmF0aWUnO1xuaW1wb3J0IHsgUml0ZGVlbCB9IGZyb20gJy4uLy4uL21vZGVsL3JpdGRlZWwnO1xuaW1wb3J0IHsgRWRpdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VkaXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFNpZ25hbGVyaW5nc0JlZWxkTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zaWduYWxlcmluZ3MtYmVlbGQtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIFJpdGRlbGVuQWN0aW9ucyBmcm9tICcuLi9hY3Rpb25zL3JpdGRlbGVuLmFjdGlvbnMnO1xuaW1wb3J0IHsgTXN0RWRpdG9yU3RhdGUgfSBmcm9tICcuLi9tc3QtZWRpdG9yLXN0YXRlJztcbmltcG9ydCBWcmlqZWJhYW5SaWp3ZWdwbGFuID0gZG9tZWluLlZyaWplYmFhblJpandlZ3BsYW47XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSaXRkZWxlbkVmZmVjdCB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFjdGlvbnMkOiBBY3Rpb25zLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPE1zdEVkaXRvclN0YXRlPixcbiAgICAgICAgICAgICAgICBwcml2YXRlIHNibVNlcnZpY2U6IFNpZ25hbGVyaW5nc0JlZWxkTWFuYWdlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByaWp3ZWdQbGFuRWRpdG9yU2VydmljZTogRWRpdG9yU2VydmljZSkge1xuICAgIH1cblxuICAgIHVwZGF0ZVJpdERlbGVuJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShSaXRkZWxlbkFjdGlvbnMudXBkYXRlUml0RGVsZW4pLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlKSxcbiAgICAgICAgbWFwKChbYWN0aWUsIF9zdG9yZVN0YXRlXSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmlldXdlUml0RGVsZW4gPSBhY3RpZS5yaXREZWxlbi5tYXAocml0RGVlbCA9PiByaXREZWVsLmlzWmljaHRiYWFyKCkgP1xuICAgICAgICAgICAgICAgIHJpdERlZWwuY29weU1ldEFsdGVybmF0aWV2ZVJvdXRlcyh0aGlzLnNibVNlcnZpY2UuYmVwYWFsQWx0ZXJuYXRpdmVSb3V0ZXMocml0RGVlbC5nZXRSaWp3ZWcoKSkpIDogcml0RGVlbCk7XG4gICAgICAgICAgICByZXR1cm4gUml0ZGVsZW5BY3Rpb25zLnNldFJpdGRlbGVuQWZ0ZXJVcGRhdGUobmlldXdlUml0RGVsZW4pO1xuICAgICAgICB9KSlcbiAgICApO1xuXG4gICAgc2V0QWx0ZXJuYXRpZXZlUml0RGVsZW4kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKFJpdGRlbGVuQWN0aW9ucy5zZXRBbHRlcm5hdGlldmVSaXREZWxlbiksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUpLFxuICAgICAgICBtYXAoKFthY3RpZSwgc3RvcmVTdGF0ZV0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFsdGVybmF0aWV2ZVJpdERlZWwgPSBhY3RpZS5hbHRlcm5hdGlldmVSaXREZWVsO1xuICAgICAgICAgICAgY29uc3Qgcml0RGVsZW4gPSBzdG9yZVN0YXRlLnJpdERlbGVuO1xuICAgICAgICAgICAgY29uc3Qgb3JnUml0ZGVlbCA9IGFsdGVybmF0aWV2ZVJpdERlZWwucml0RGVlbDtcbiAgICAgICAgICAgIGxldCBuZXdSaXREZWVsID0gb3JnUml0ZGVlbC5jb3B5TWV0RHdhbmcoYWx0ZXJuYXRpZXZlUml0RGVlbC5hbHRlcm5hdGlldmVSb3V0ZS5nZXREd2FuZygpKTtcbiAgICAgICAgICAgIGNvbnN0IGFsdGVyUm91dGVzID0gdGhpcy5zYm1TZXJ2aWNlLmJlcGFhbEFsdGVybmF0aXZlUm91dGVzKGFsdGVybmF0aWV2ZVJpdERlZWwucml0RGVlbC5nZXRSaWp3ZWcoKSk7XG4gICAgICAgICAgICBuZXdSaXREZWVsID0gbmV3Uml0RGVlbC5jb3B5TWV0QWx0ZXJuYXRpZXZlUm91dGVzWm9uZGVyQWN0aWVzKGFsdGVyUm91dGVzKTtcbiAgICAgICAgICAgIG5ld1JpdERlZWwuYmVwYWFsVG9wb2xvZ2llRWxlbWVudGVuKHRoaXMuc2JtU2VydmljZSk7XG4gICAgICAgICAgICB0aGlzLnZlcnZhbmdSaXRkZWVsKHJpdERlbGVuLCBvcmdSaXRkZWVsLCBuZXdSaXREZWVsKTtcblxuICAgICAgICAgICAgcmV0dXJuIFJpdGRlbGVuQWN0aW9ucy5zZXRSaXRkZWxlbkFmdGVyVXBkYXRlKHJpdERlbGVuKTtcbiAgICAgICAgfSkpXG4gICAgKTtcblxuICAgIHJpdGRlZWxJbnZvZWdlbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoUml0ZGVsZW5BY3Rpb25zLnJpdGRlZWxJbnZvZWdlbiksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUpLFxuICAgICAgICBtYXAoKFthY3RpZSwgc3RvcmVTdGF0ZV0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJpdERlbGVuID0gdGhpcy5yaXRkZWVsSW52b2VnZW5GdW5jKHN0b3JlU3RhdGUucml0RGVsZW4sIGFjdGllLm5pZXV3ZVJvdXRlLCB0aGlzLnJpandlZ1BsYW5FZGl0b3JTZXJ2aWNlLCB0aGlzLnNibVNlcnZpY2UpO1xuICAgICAgICAgICAgcmV0dXJuIFJpdGRlbGVuQWN0aW9ucy5zZXRSaXRkZWxlbkFmdGVyVXBkYXRlKHJpdERlbGVuKTtcbiAgICAgICAgfSkpXG4gICAgKTtcblxuICAgIHByaXZhdGUgcml0ZGVlbEludm9lZ2VuRnVuYyhyaXREZWxlbjogUml0ZGVlbFtdLCAgbmlldXdlUm91dGUsIHJpandlZ1BsYW5FZGl0b3JTZXJ2aWNlLCBzYm1TZXJ2aWNlKTogUml0ZGVlbFtdIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luZWVsUml0ZGVlbCA9IG5pZXV3ZVJvdXRlLmJlZ2luU2Vpbk9wUml0ZGVlbC5yaXRkZWVsO1xuICAgICAgICBjb25zdCBiZWdpblNlaW4gPSBuaWV1d2VSb3V0ZS5iZWdpblNlaW5PcFJpdGRlZWwuc2VpbjtcbiAgICAgICAgY29uc3Qgcmlqd2VncGxhbiA9IHJpandlZ1BsYW5FZGl0b3JTZXJ2aWNlLmdldFJpandlZ3BsYW4oYmVnaW5TZWluLmdldFBQTEcoKSk7XG4gICAgICAgIGNvbnN0IGR3YW5nZW46IGRvbWVpbi5Ed2FuZ1tdID0gSnNKYXZhVXRpbC5saXN0VG9BcnJheShyaWp3ZWdwbGFuLmdldE9uZGVybGlnZ2VuZGVEd2FuZ2VuVG90RW5WYW5TZWluKG9yaWdpbmVlbFJpdGRlZWwuZ2V0RHdhbmcoKSwgYmVnaW5TZWluKSk7XG4gICAgICAgIGNvbnN0IGlzU2FtZW5nZXN0ZWxkZVJvdXRlID0gZHdhbmdlblswXSAmJiBkd2FuZ2VuWzFdO1xuXG4gICAgICAgIGxldCBuZXdSaXRkZWVsMSA9IG9yaWdpbmVlbFJpdGRlZWw7XG5cbiAgICAgICAgaWYgKGlzU2FtZW5nZXN0ZWxkZVJvdXRlKSB7XG4gICAgICAgICAgICBuZXdSaXRkZWVsMSA9IHRoaXMudmVyd2Vya1NhbWVuZ2VzdGVsZGVSb3V0ZShvcmlnaW5lZWxSaXRkZWVsLCByaWp3ZWdwbGFuLCBkd2FuZ2VuLCBzYm1TZXJ2aWNlLCByaXREZWxlbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmlldXdlUm91dGUuY29tYmluYXRpZVZvb3JFaW5kc2Vpbi5pc1ZyaWplQmFhblJpandlZygpKSB7XG4gICAgICAgICAgICB0aGlzLmV4dGVuZFJpdGRlZWxNZXRWcmlqZWJhYW5JbmZvKG5ld1JpdGRlZWwxLCBuaWV1d2VSb3V0ZSwgc2JtU2VydmljZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1hYWtOaWV1d1JpdGRlZWwobmV3Uml0ZGVlbDEsIG5pZXV3ZVJvdXRlLCBzYm1TZXJ2aWNlLCByaXREZWxlbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNTYW1lbmdlc3RlbGRlUm91dGUpIHtcbiAgICAgICAgICAgIHJpdERlbGVuLnNwbGljZShyaXREZWxlbi5pbmRleE9mKG9yaWdpbmVlbFJpdGRlZWwpLCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbLi4ucml0RGVsZW5dO1xuICAgIH1cblxuXG4gICAgcHJpdmF0ZSB2ZXJ2YW5nUml0ZGVlbChyaXRkZWxlbjogUml0ZGVlbFtdLCBvcmdSaXRkZWVsOiBSaXRkZWVsLCBuZXdSaXRkZWVsOiBSaXRkZWVsKTogdm9pZCB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcml0ZGVsZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChyaXRkZWxlbltpXSA9PT0gb3JnUml0ZGVlbCkge1xuICAgICAgICAgICAgICAgIHJpdGRlbGVuW2ldID0gbmV3Uml0ZGVlbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmVyd2Vya1NhbWVuZ2VzdGVsZGVSb3V0ZShvcmlnaW5lZWxSaXRkZWVsLCByaWp3ZWdwbGFuLCBkd2FuZ2VuLCBzYm1TZXJ2aWNlLCByaXREZWxlbik6IFJpdGRlZWwge1xuICAgICAgICAvLyBkd2FuZ2VuIGluIDIgbmlldXdlIHJpdGRlbGVuIHZlcndlcmtlbiB2b29yIGRlIGtuaXBcbiAgICAgICAgY29uc3QgbmlldXdlUmlqd2VnMSA9XG4gICAgICAgICAgICByaWp3ZWdwbGFuLmdldFJpandlZ1Zvb3JTZWluZW4oZHdhbmdlblswXS5nZXRSb3V0ZSgpLmdldEJlZ2luU2VpbigpLCBkd2FuZ2VuWzBdLmdldFJvdXRlKCkuZ2V0RWluZFNlaW4oKSk7XG4gICAgICAgIGNvbnN0IGR3YW5nSW5mbzEgPSBuZXcgUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmluYXRpZShyaWp3ZWdwbGFuLCBuaWV1d2VSaWp3ZWcxLCBkd2FuZ2VuWzBdKTtcbiAgICAgICAgY29uc3QgbmV3Uml0ZGVlbDEgPSBuZXcgUml0ZGVlbChkd2FuZ0luZm8xLCBbXSwgbnVsbCwgbnVsbCwgbnVsbCwgW10pO1xuXG4gICAgICAgIC8vIHJlbW92ZSB2cmlqYmFhbiBpbmZvIHVpdCByaXRkZWVsXG4gICAgICAgIG5ld1JpdGRlZWwxLnZyaWplYmFhblJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpID0gbnVsbDtcbiAgICAgICAgbmV3Uml0ZGVlbDEudmVydm9sZ1Nwb29yID0gbnVsbDtcblxuICAgICAgICBuZXdSaXRkZWVsMS5iZXBhYWxUb3BvbG9naWVFbGVtZW50ZW4oc2JtU2VydmljZSk7XG4gICAgICAgIHRoaXMuaW5zZXJ0Uml0ZGVlbChyaXREZWxlbiwgb3JpZ2luZWVsUml0ZGVlbCwgbmV3Uml0ZGVlbDEpO1xuXG4gICAgICAgIGNvbnN0IG5pZXV3ZVJpandlZzIgPVxuICAgICAgICAgICAgcmlqd2VncGxhbi5nZXRSaWp3ZWdWb29yU2VpbmVuKGR3YW5nZW5bMV0uZ2V0Um91dGUoKS5nZXRCZWdpblNlaW4oKSwgZHdhbmdlblsxXS5nZXRSb3V0ZSgpLmdldEVpbmRTZWluKCkpO1xuICAgICAgICBjb25zdCBkd2FuZ0luZm8yID0gbmV3IFJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpbmF0aWUocmlqd2VncGxhbiwgbmlldXdlUmlqd2VnMiwgZHdhbmdlblsxXSk7XG4gICAgICAgIGNvbnN0IG5ld1JpdGRlZWwyID0gbmV3IFJpdGRlZWwoZHdhbmdJbmZvMiwgW10sIG51bGwsIG51bGwsIG51bGwsIFtdKTtcblxuICAgICAgICBuZXdSaXRkZWVsMi5iZXBhYWxUb3BvbG9naWVFbGVtZW50ZW4oc2JtU2VydmljZSk7XG4gICAgICAgIHRoaXMuaW5zZXJ0Uml0ZGVlbChyaXREZWxlbiwgbmV3Uml0ZGVlbDEsIG5ld1JpdGRlZWwyKTtcblxuICAgICAgICByZXR1cm4gbmV3Uml0ZGVlbDE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHRlbmRSaXRkZWVsTWV0VnJpamViYWFuSW5mbyhuZXdSaXRkZWVsMSwgbmlldXdlUm91dGUsIHNibVNlcnZpY2UpOiB2b2lkIHtcbiAgICAgICAgbmV3Uml0ZGVlbDEudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkgPSBuaWV1d2VSb3V0ZS5jb21iaW5hdGllVm9vckVpbmRzZWluO1xuXG4gICAgICAgIGNvbnN0IHZicndwID0gPFZyaWplYmFhblJpandlZ3BsYW4+bmlldXdlUm91dGUuY29tYmluYXRpZVZvb3JFaW5kc2Vpbi5yaWp3ZWdwbGFuO1xuICAgICAgICBuZXdSaXRkZWVsMS52ZXJ2b2xnU3Bvb3IgPSB2YnJ3cC5nZXRWZXJ2b2xnU3Bvb3IobmlldXdlUm91dGUuY29tYmluYXRpZVZvb3JFaW5kc2Vpbi5yaWp3ZWcpO1xuXG4gICAgICAgIG5ld1JpdGRlZWwxLmJlcGFhbFRvcG9sb2dpZUVsZW1lbnRlbihzYm1TZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hYWtOaWV1d1JpdGRlZWwobmV3Uml0ZGVlbDEsIG5pZXV3ZVJvdXRlLCBzYm1TZXJ2aWNlLCByaXREZWxlbik6IHZvaWQge1xuICAgICAgICBsZXQgbmV3Uml0ZGVlbCA9IHRoaXMuY3JlYXRlUml0ZGVlbChuaWV1d2VSb3V0ZSk7XG4gICAgICAgIGNvbnN0IGFsdFJvdXRlcyA9IHNibVNlcnZpY2UuYmVwYWFsQWx0ZXJuYXRpdmVSb3V0ZXMobmV3Uml0ZGVlbC5nZXRSaWp3ZWcoKSk7XG4gICAgICAgIG5ld1JpdGRlZWwgPSBuZXdSaXRkZWVsLmNvcHlNZXRBbHRlcm5hdGlldmVSb3V0ZXMoYWx0Um91dGVzKTtcbiAgICAgICAgbmV3Uml0ZGVlbC5iZXBhYWxUb3BvbG9naWVFbGVtZW50ZW4oc2JtU2VydmljZSk7XG4gICAgICAgIHRoaXMuaW5zZXJ0Uml0ZGVlbChyaXREZWxlbiwgbmV3Uml0ZGVlbDEsIG5ld1JpdGRlZWwpO1xuICAgIH1cblxuICAgIGNyZWF0ZVJpdGRlZWwobmlldXdlUm91dGUpOiBSaXRkZWVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSaXRkZWVsKG5pZXV3ZVJvdXRlLmNvbWJpbmF0aWVWb29yRWluZHNlaW4sIFtdLCBudWxsLCBudWxsLCBudWxsLCBbXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbnNlcnRSaXRkZWVsKHJpdGRlbGVuOiBSaXRkZWVsW10sIG5hUml0ZGVlbFBvc2l0aWU6IFJpdGRlZWwsIG5ld1JpdGRlZWw6IFJpdGRlZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaWR4ID0gcml0ZGVsZW4uaW5kZXhPZihuYVJpdGRlZWxQb3NpdGllKTtcbiAgICAgICAgcml0ZGVsZW4uc3BsaWNlKGlkeCArIDEsIDAsIG5ld1JpdGRlZWwpO1xuICAgIH1cblxufVxuIl19
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicml0ZGVsZW4uZWZmZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL3N0YXRlL2VmZmVjdC9yaXRkZWxlbi5lZmZlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFXLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHOUMsT0FBTyxLQUFLLGVBQWUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7O0FBSy9ELE1BQU0sT0FBTyxjQUFjO0lBRXZCLFlBQTZCLFFBQWlCLEVBQ2pCLEtBQTRCLEVBQzVCLFVBQTJDLEVBQzNDLGFBQTRCO1FBSDVCLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBdUI7UUFDNUIsZUFBVSxHQUFWLFVBQVUsQ0FBaUM7UUFDM0Msa0JBQWEsR0FBYixhQUFhLENBQWU7UUFHekQsb0JBQWUsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ25ELE1BQU0sQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLEVBQ3RDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQzFCLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUU7WUFDekIsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLFFB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LEVBQUUsZ0JBQXlCLEVBQUUsVUFBbUI7UUFDckYsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQy9DLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDNUMsQ0FBQzs4R0FqSVEsY0FBYztrSEFBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZG9tZWluLCBKc0phdmFVdGlsIH0gZnJvbSAnQGxveGlhL3JpandlZ2VuJztcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IG1hcCwgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBOaWV1d2VSb3V0ZSB9IGZyb20gJy4uLy4uL21vZGVsL25pZXV3ZS1yb3V0ZSc7XG5pbXBvcnQgeyBSaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaW5hdGllIH0gZnJvbSAnLi4vLi4vbW9kZWwvcmlqd2VncGxhbi1yaWp3ZWctZHdhbmctY29tYmluYXRpZSc7XG5pbXBvcnQgeyBSaXRkZWVsIH0gZnJvbSAnLi4vLi4vbW9kZWwvcml0ZGVlbCc7XG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NpZ25hbGVyaW5ncy1iZWVsZC1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgUml0ZGVsZW5BY3Rpb25zIGZyb20gJy4uL2FjdGlvbnMvcml0ZGVsZW4uYWN0aW9ucyc7XG5pbXBvcnQgeyBNc3RFZGl0b3JTdGF0ZSB9IGZyb20gJy4uL21zdC1lZGl0b3Itc3RhdGUnO1xuaW1wb3J0IFZyaWplYmFhblJpandlZ3BsYW4gPSBkb21laW4uVnJpamViYWFuUmlqd2VncGxhbjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJpdGRlbGVuRWZmZWN0IHtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzdG9yZTogU3RvcmU8TXN0RWRpdG9yU3RhdGU+LFxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc2JtU2VydmljZTogU2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGVkaXRvclNlcnZpY2U6IEVkaXRvclNlcnZpY2UpIHtcbiAgICB9XG5cbiAgICB1cGRhdGVSaXREZWxlbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoUml0ZGVsZW5BY3Rpb25zLnVwZGF0ZVJpdERlbGVuKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZSksXG4gICAgICAgIG1hcCgoW2FjdGllLCBfc3RvcmVTdGF0ZV0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5pZXV3ZVJpdERlbGVuID0gYWN0aWUucml0RGVsZW4ubWFwKHJpdERlZWwgPT4gcml0RGVlbC5pc1ppY2h0YmFhcigpID9cbiAgICAgICAgICAgICAgICByaXREZWVsLmNvcHlNZXRBbHRlcm5hdGlldmVSb3V0ZXModGhpcy5zYm1TZXJ2aWNlLmJlcGFhbEFsdGVybmF0aXZlUm91dGVzKHJpdERlZWwuZ2V0Umlqd2VnKCkpKSA6IHJpdERlZWwpO1xuICAgICAgICAgICAgcmV0dXJuIFJpdGRlbGVuQWN0aW9ucy5zZXRSaXRkZWxlbkFmdGVyVXBkYXRlKG5pZXV3ZVJpdERlbGVuKTtcbiAgICAgICAgfSkpXG4gICAgKTtcblxuICAgIHNldEFsdGVybmF0aWV2ZVJpdERlbGVuJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShSaXRkZWxlbkFjdGlvbnMuc2V0QWx0ZXJuYXRpZXZlUml0RGVsZW4pLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlKSxcbiAgICAgICAgbWFwKChbYWN0aWUsIHN0b3JlU3RhdGVdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhbHRlcm5hdGlldmVSaXREZWVsID0gYWN0aWUuYWx0ZXJuYXRpZXZlUml0RGVlbDtcbiAgICAgICAgICAgIGNvbnN0IHJpdERlbGVuID0gc3RvcmVTdGF0ZS5yaXREZWxlbjtcbiAgICAgICAgICAgIGNvbnN0IG9yZ1JpdGRlZWwgPSBhbHRlcm5hdGlldmVSaXREZWVsLnJpdERlZWw7XG4gICAgICAgICAgICBsZXQgbmV3Uml0RGVlbCA9IG9yZ1JpdGRlZWwuY29weU1ldER3YW5nKGFsdGVybmF0aWV2ZVJpdERlZWwuYWx0ZXJuYXRpZXZlUm91dGUuZ2V0RHdhbmcoKSk7XG4gICAgICAgICAgICBjb25zdCBhbHRlclJvdXRlcyA9IHRoaXMuc2JtU2VydmljZS5iZXBhYWxBbHRlcm5hdGl2ZVJvdXRlcyhhbHRlcm5hdGlldmVSaXREZWVsLnJpdERlZWwuZ2V0Umlqd2VnKCkpO1xuICAgICAgICAgICAgbmV3Uml0RGVlbCA9IG5ld1JpdERlZWwuY29weU1ldEFsdGVybmF0aWV2ZVJvdXRlc1pvbmRlckFjdGllcyhhbHRlclJvdXRlcyk7XG4gICAgICAgICAgICBuZXdSaXREZWVsLmJlcGFhbFRvcG9sb2dpZUVsZW1lbnRlbih0aGlzLnNibVNlcnZpY2UpO1xuICAgICAgICAgICAgdGhpcy52ZXJ2YW5nUml0ZGVlbChyaXREZWxlbiwgb3JnUml0ZGVlbCwgbmV3Uml0RGVlbCk7XG5cbiAgICAgICAgICAgIHJldHVybiBSaXRkZWxlbkFjdGlvbnMuc2V0Uml0ZGVsZW5BZnRlclVwZGF0ZShyaXREZWxlbik7XG4gICAgICAgIH0pKVxuICAgICk7XG5cbiAgICByaXRkZWVsSW52b2VnZW4kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKFJpdGRlbGVuQWN0aW9ucy5yaXRkZWVsSW52b2VnZW4pLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlKSxcbiAgICAgICAgbWFwKChbYWN0aWUsIHN0b3JlU3RhdGVdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByaXREZWxlbiA9IHRoaXMucml0ZGVlbEludm9lZ2VuRnVuYyhzdG9yZVN0YXRlLnJpdERlbGVuLCBhY3RpZS5uaWV1d2VSb3V0ZSk7XG4gICAgICAgICAgICByZXR1cm4gUml0ZGVsZW5BY3Rpb25zLnNldFJpdGRlbGVuQWZ0ZXJVcGRhdGUocml0RGVsZW4pO1xuICAgICAgICB9KSlcbiAgICApO1xuXG4gICAgcHJpdmF0ZSByaXRkZWVsSW52b2VnZW5GdW5jKHJpdERlbGVuOiBSaXRkZWVsW10sICBuaWV1d2VSb3V0ZTogTmlldXdlUm91dGUpOiBSaXRkZWVsW10ge1xuICAgICAgICBjb25zdCBvcmlnaW5lZWxSaXRkZWVsID0gbmlldXdlUm91dGUuYmVnaW5TZWluT3BSaXRkZWVsLnJpdGRlZWw7XG4gICAgICAgIGNvbnN0IGJlZ2luU2VpbiA9IG5pZXV3ZVJvdXRlLmJlZ2luU2Vpbk9wUml0ZGVlbC5zZWluO1xuICAgICAgICBjb25zdCByaWp3ZWdwbGFuID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmdldFJpandlZ3BsYW4oYmVnaW5TZWluLmdldFBQTEcoKSk7XG4gICAgICAgIGNvbnN0IGR3YW5nZW46IGRvbWVpbi5Ed2FuZ1tdID0gSnNKYXZhVXRpbC5saXN0VG9BcnJheShyaWp3ZWdwbGFuLmdldE9uZGVybGlnZ2VuZGVEd2FuZ2VuVG90RW5WYW5TZWluKG9yaWdpbmVlbFJpdGRlZWwuZ2V0RHdhbmcoKSwgYmVnaW5TZWluKSk7XG4gICAgICAgIGNvbnN0IGlzU2FtZW5nZXN0ZWxkZVJvdXRlID0gZHdhbmdlblswXSAmJiBkd2FuZ2VuWzFdO1xuXG4gICAgICAgIGxldCBuZXdSaXRkZWVsMSA9IG9yaWdpbmVlbFJpdGRlZWw7XG5cbiAgICAgICAgaWYgKGlzU2FtZW5nZXN0ZWxkZVJvdXRlKSB7XG4gICAgICAgICAgICBuZXdSaXRkZWVsMSA9IHRoaXMudmVyd2Vya1NhbWVuZ2VzdGVsZGVSb3V0ZShvcmlnaW5lZWxSaXRkZWVsLCByaWp3ZWdwbGFuLCBkd2FuZ2VuLCByaXREZWxlbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmlldXdlUm91dGUuY29tYmluYXRpZVZvb3JFaW5kc2Vpbi5pc1ZyaWplQmFhblJpandlZygpKSB7XG4gICAgICAgICAgICB0aGlzLmV4dGVuZFJpdGRlZWxNZXRWcmlqZWJhYW5JbmZvKG5ld1JpdGRlZWwxLCBuaWV1d2VSb3V0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1hYWtOaWV1d1JpdGRlZWwobmV3Uml0ZGVlbDEsIG5pZXV3ZVJvdXRlLCByaXREZWxlbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNTYW1lbmdlc3RlbGRlUm91dGUpIHtcbiAgICAgICAgICAgIHJpdERlbGVuLnNwbGljZShyaXREZWxlbi5pbmRleE9mKG9yaWdpbmVlbFJpdGRlZWwpLCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbLi4ucml0RGVsZW5dO1xuICAgIH1cblxuXG4gICAgcHJpdmF0ZSB2ZXJ2YW5nUml0ZGVlbChyaXRkZWxlbjogUml0ZGVlbFtdLCBvcmdSaXRkZWVsOiBSaXRkZWVsLCBuZXdSaXRkZWVsOiBSaXRkZWVsKTogdm9pZCB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcml0ZGVsZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChyaXRkZWxlbltpXSA9PT0gb3JnUml0ZGVlbCkge1xuICAgICAgICAgICAgICAgIHJpdGRlbGVuW2ldID0gbmV3Uml0ZGVlbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmVyd2Vya1NhbWVuZ2VzdGVsZGVSb3V0ZShvcmlnaW5lZWxSaXRkZWVsOiBSaXRkZWVsLCByaWp3ZWdwbGFuOiBkb21laW4uUmlqd2VncGxhbiwgZHdhbmdlbjogZG9tZWluLkR3YW5nW10sIHJpdERlbGVuOiBSaXRkZWVsW10pOiBSaXRkZWVsIHtcbiAgICAgICAgLy8gZHdhbmdlbiBpbiAyIG5pZXV3ZSByaXRkZWxlbiB2ZXJ3ZXJrZW4gdm9vciBkZSBrbmlwXG4gICAgICAgIGNvbnN0IG5pZXV3ZVJpandlZzEgPVxuICAgICAgICAgICAgcmlqd2VncGxhbi5nZXRSaWp3ZWdWb29yU2VpbmVuKGR3YW5nZW5bMF0uZ2V0Um91dGUoKS5nZXRCZWdpblNlaW4oKSwgZHdhbmdlblswXS5nZXRSb3V0ZSgpLmdldEVpbmRTZWluKCkpO1xuICAgICAgICBjb25zdCBkd2FuZ0luZm8xID0gbmV3IFJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpbmF0aWUocmlqd2VncGxhbiwgbmlldXdlUmlqd2VnMSwgZHdhbmdlblswXSk7XG4gICAgICAgIGNvbnN0IG5ld1JpdGRlZWwxID0gbmV3IFJpdGRlZWwoZHdhbmdJbmZvMSwgW10sIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFtdKTtcblxuICAgICAgICAvLyByZW1vdmUgdnJpamJhYW4gaW5mbyB1aXQgcml0ZGVlbFxuICAgICAgICBuZXdSaXRkZWVsMS52cmlqZWJhYW5SaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaSA9IHVuZGVmaW5lZDtcbiAgICAgICAgbmV3Uml0ZGVlbDEudmVydm9sZ1Nwb29yID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIG5ld1JpdGRlZWwxLmJlcGFhbFRvcG9sb2dpZUVsZW1lbnRlbih0aGlzLnNibVNlcnZpY2UpO1xuICAgICAgICB0aGlzLmluc2VydFJpdGRlZWwocml0RGVsZW4sIG9yaWdpbmVlbFJpdGRlZWwsIG5ld1JpdGRlZWwxKTtcblxuICAgICAgICBjb25zdCBuaWV1d2VSaWp3ZWcyID1cbiAgICAgICAgICAgIHJpandlZ3BsYW4uZ2V0Umlqd2VnVm9vclNlaW5lbihkd2FuZ2VuWzFdLmdldFJvdXRlKCkuZ2V0QmVnaW5TZWluKCksIGR3YW5nZW5bMV0uZ2V0Um91dGUoKS5nZXRFaW5kU2VpbigpKTtcbiAgICAgICAgY29uc3QgZHdhbmdJbmZvMiA9IG5ldyBSaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaW5hdGllKHJpandlZ3BsYW4sIG5pZXV3ZVJpandlZzIsIGR3YW5nZW5bMV0pO1xuICAgICAgICBjb25zdCBuZXdSaXRkZWVsMiA9IG5ldyBSaXRkZWVsKGR3YW5nSW5mbzIsIFtdLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBbXSk7XG5cbiAgICAgICAgbmV3Uml0ZGVlbDIuYmVwYWFsVG9wb2xvZ2llRWxlbWVudGVuKHRoaXMuc2JtU2VydmljZSk7XG4gICAgICAgIHRoaXMuaW5zZXJ0Uml0ZGVlbChyaXREZWxlbiwgbmV3Uml0ZGVlbDEsIG5ld1JpdGRlZWwyKTtcblxuICAgICAgICByZXR1cm4gbmV3Uml0ZGVlbDE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHRlbmRSaXRkZWVsTWV0VnJpamViYWFuSW5mbyhuZXdSaXRkZWVsMTogUml0ZGVlbCwgbmlldXdlUm91dGU6IE5pZXV3ZVJvdXRlKTogdm9pZCB7XG4gICAgICAgIG5ld1JpdGRlZWwxLnZyaWplYmFhblJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpID0gbmlldXdlUm91dGUuY29tYmluYXRpZVZvb3JFaW5kc2VpbjtcblxuICAgICAgICBjb25zdCB2YnJ3cCA9IDxWcmlqZWJhYW5SaWp3ZWdwbGFuPm5pZXV3ZVJvdXRlLmNvbWJpbmF0aWVWb29yRWluZHNlaW4ucmlqd2VncGxhbjtcbiAgICAgICAgbmV3Uml0ZGVlbDEudmVydm9sZ1Nwb29yID0gdmJyd3AuZ2V0VmVydm9sZ1Nwb29yKG5pZXV3ZVJvdXRlLmNvbWJpbmF0aWVWb29yRWluZHNlaW4ucmlqd2VnKTtcblxuICAgICAgICBuZXdSaXRkZWVsMS5iZXBhYWxUb3BvbG9naWVFbGVtZW50ZW4odGhpcy5zYm1TZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hYWtOaWV1d1JpdGRlZWwobmV3Uml0ZGVlbDE6IFJpdGRlZWwsIG5pZXV3ZVJvdXRlOiBOaWV1d2VSb3V0ZSwgcml0RGVsZW46IFJpdGRlZWxbXSk6IHZvaWQge1xuICAgICAgICBsZXQgbmV3Uml0ZGVlbCA9IHRoaXMuY3JlYXRlUml0ZGVlbChuaWV1d2VSb3V0ZSk7XG4gICAgICAgIGNvbnN0IGFsdFJvdXRlcyA9IHRoaXMuc2JtU2VydmljZS5iZXBhYWxBbHRlcm5hdGl2ZVJvdXRlcyhuZXdSaXRkZWVsLmdldFJpandlZygpKTtcbiAgICAgICAgbmV3Uml0ZGVlbCA9IG5ld1JpdGRlZWwuY29weU1ldEFsdGVybmF0aWV2ZVJvdXRlcyhhbHRSb3V0ZXMpO1xuICAgICAgICBuZXdSaXRkZWVsLmJlcGFhbFRvcG9sb2dpZUVsZW1lbnRlbih0aGlzLnNibVNlcnZpY2UpO1xuICAgICAgICB0aGlzLmluc2VydFJpdGRlZWwocml0RGVsZW4sIG5ld1JpdGRlZWwxLCBuZXdSaXRkZWVsKTtcbiAgICB9XG5cbiAgICBjcmVhdGVSaXRkZWVsKG5pZXV3ZVJvdXRlOiBOaWV1d2VSb3V0ZSk6IFJpdGRlZWwge1xuICAgICAgICByZXR1cm4gbmV3IFJpdGRlZWwobmlldXdlUm91dGUuY29tYmluYXRpZVZvb3JFaW5kc2VpbiwgW10sIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFtdKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluc2VydFJpdGRlZWwocml0ZGVsZW46IFJpdGRlZWxbXSwgbmFSaXRkZWVsUG9zaXRpZTogUml0ZGVlbCwgbmV3Uml0ZGVlbDogUml0ZGVlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpZHggPSByaXRkZWxlbi5pbmRleE9mKG5hUml0ZGVlbFBvc2l0aWUpO1xuICAgICAgICByaXRkZWxlbi5zcGxpY2UoaWR4ICsgMSwgMCwgbmV3Uml0ZGVlbCk7XG4gICAgfVxuXG59XG4iXX0=
@@ -1,6 +1,5 @@
1
1
  import { createReducer, on } from '@ngrx/store';
2
2
  import { NieuweRoute } from '../model/nieuwe-route';
3
- import { AlgemeneRitInfoDto } from '../resources/mstlogging.resource';
4
3
  import { ArrayMultimap } from '../util/multi-map';
5
4
  import * as MstActions from './actions/actions';
6
5
  import { ritdelenReducer } from './reducer/rit-delen.reducer';
@@ -51,7 +50,7 @@ export const nieuweRouteReducer = createReducer(new NieuweRoute(null, null), on(
51
50
  export const signaleringsbeeldInfoDtosReducer = createReducer([], on(MstActions.SetSignaleringsbeeldInfoDtos, (_, { dtos }) => dtos), on(MstActions.UpdateSignaleringsbeeldInfoDtos, (_, { dtos }) => [...dtos]));
52
51
  export const visibleSbInfoDtosReducer = createReducer([], on(MstActions.SetVisibleSignaleringsbeeldInfoDtos, (_, { dtos }) => dtos), on(MstActions.UpdateVisibleSignaleringsbeeldInfoDtos, (_, { dtos }) => [...dtos]));
53
52
  export const iaVersieReducer = createReducer({}, on(MstActions.SetIaVersie, (_, { iaVersie }) => Object.assign({}, iaVersie, { versie: iaVersie.versie.toUpperCase() })));
54
- export const algemeneRitInfoDtoReducer = createReducer(new AlgemeneRitInfoDto(), on(MstActions.SetAlgemeneRitInfo, (_, { algemeneRitInfoDto }) => algemeneRitInfoDto));
53
+ export const algemeneRitInfoDtoReducer = createReducer({}, on(MstActions.SetAlgemeneRitInfo, (_, { algemeneRitInfoDto }) => algemeneRitInfoDto));
55
54
  export const ongeplandeActiesBepaaldReducer = createReducer(false, on(MstActions.SetOngeplandeActiesBepaald, (_, { bepaald }) => bepaald));
56
55
  export const nieuweBewegingReducer = createReducer({}, on(MstActions.UpdateRit, (_, { bewegingen }) => bewegingen));
57
56
  export const baseUrlReducer = createReducer(undefined, on(MstActions.SetBaseUrl, (_, { baseUrl }) => baseUrl));
@@ -87,4 +86,4 @@ export const storeReducers = {
87
86
  focusIds: focusIdsReducer,
88
87
  selectedRitdeelId: selectedRitdeelIdReducer
89
88
  };
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXN0LWVkaXRvci1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9zdGF0ZS9tc3QtZWRpdG9yLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWhELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUlwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxLQUFLLFVBQVUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUE2QzlELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakYsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQWMsRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBRS9GLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFFOUcsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsYUFBYSxDQUNqRCxTQUFTLEVBQ1QsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMs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QUF5QjtJQUM3QyxRQUFRLEVBQUUsY0FBYztJQUN4QixLQUFLLEVBQUUsWUFBWTtJQUNuQixRQUFRLEVBQUUsZUFBZTtJQUN6Qix1QkFBdUIsRUFBRSw4QkFBOEI7SUFDdkQsYUFBYSxFQUFFLHdCQUF3QjtJQUN2QyxnQkFBZ0IsRUFBRSxxQkFBcUI7SUFDdkMsT0FBTyxFQUFFLGNBQWM7SUFDdkIsUUFBUSxFQUFFLGVBQWU7SUFDekIsaUJBQWlCLEVBQUUsd0JBQXdCO0NBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdmdJbmZvIH0gZnJvbSAnQGxveGlhL2lteC12aWV3ZXInO1xuaW1wb3J0IHsgY3JlYXRlUmVkdWNlciwgb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBQcm9ncmVzc0luZGljYXRvciB9IGZyb20gJy4uL2F0b21pYy1jb21wb25lbnRzL3Byb2dyZXNzLWluZGljYXRvci9wcm9ncmVzcy1pbmRpY2F0b3IuZW50aXR5JztcbmltcG9ydCB7IE5pZXV3ZVJvdXRlIH0gZnJvbSAnLi4vbW9kZWwvbmlldXdlLXJvdXRlJztcbmltcG9ydCB7IE9uZ2VwbGFuZGVBY3RpZSB9IGZyb20gJy4uL21vZGVsL29uZ2VwbGFuZGUtYWN0aWUnO1xuaW1wb3J0IHsgUml0ZGVlbCB9IGZyb20gJy4uL21vZGVsL3JpdGRlZWwnO1xuaW1wb3J0IHsgQWN0aWUsIEJld2VnaW5nLCBJbmZyYU1vZGVsIH0gZnJvbSAnLi4vb3B0aW1vJztcbmltcG9ydCB7IEFsZ2VtZW5lUml0SW5mb0R0byB9IGZyb20gJy4uL3Jlc291cmNlcy9tc3Rsb2dnaW5nLnJlc291cmNlJztcbmltcG9ydCB7IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG8gfSBmcm9tICcuLi9yZXNvdXJjZXMvc2lnbmFsZXJpbmdzYmVlbGRpbmZvLnJlc291cmNlJztcbmltcG9ydCB7IEFycmF5TXVsdGltYXAgfSBmcm9tICcuLi91dGlsL211bHRpLW1hcCc7XG5pbXBvcnQgKiBhcyBNc3RBY3Rpb25zIGZyb20gJy4vYWN0aW9ucy9hY3Rpb25zJztcbmltcG9ydCB7IHJpdGRlbGVuUmVkdWNlciB9IGZyb20gJy4vcmVkdWNlci9yaXQtZGVsZW4ucmVkdWNlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTXN0RWRpdG9yU3RhdGUge1xuICAgIHJpdERlbGVuOiBSaXRkZWVsW107IC8vIG9ucyBtb2RlbCB2YW4gdHJlaW5wYWRcblxuICAgIC8vIHB1aWNzIHZvb3IgU2VsZWN0aWVJbmZvc1xuICAgIHJpdFNlbGVjdGllSWRzOiBzdHJpbmdbXTtcbiAgICBhY3RpZU9wUml0U2VsZWN0aWVJZHM6IHN0cmluZ1tdO1xuICAgIGdlYnJva2VuUml0U2VsZWN0aWVJZHM6IHN0cmluZ1tdO1xuICAgIGFsdGVybmF0aWV2ZW5TZWxlY3RpZUlkczogc3RyaW5nW107XG4gICAgYmVnaW5TZWluU2VsZWN0aWVJZHM6IHN0cmluZ1tdO1xuICAgIGVpbmRTZWluU2VsZWN0aWVJZHM6IHN0cmluZ1tdO1xuICAgIG9uZ2VwbGFuZGVBY3RpZVNlbGVjdGllSWRzOiBzdHJpbmdbXTtcbiAgICBvbmdlcGxhbmRlQWN0aWVzOiBBcnJheU11bHRpbWFwPHN0cmluZywgT25nZXBsYW5kZUFjdGllPjtcbiAgICBnZXBsYW5kZUFjdGllczogQXJyYXlNdWx0aW1hcDxBY3RpZSwgc3RyaW5nPjtcblxuICAgIC8vIHB1aWNzIHZvb3IgY2xpY2tzXG4gICAgYWx0ZXJuYXRpZXZlbkNsaWNrYWJsZUlkczogc3RyaW5nW107XG4gICAgZWluZFNlaW5lbkNsaWNrYWJsZUlkczogc3RyaW5nW107XG4gICAgY29ubmVjdG9yQ2xpY2thYmxlSWRzOiBzdHJpbmdbXTtcblxuICAgIC8vIHB1aWNzIHZvb3IgcmlnaHRjbGlja3NcbiAgICBiZWdpblNlaW5SaWdodENsaWNrYWJsZUlkczogc3RyaW5nW107XG5cbiAgICBuaWV1d2VSb3V0ZTogTmlldXdlUm91dGU7XG5cbiAgICBzaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW107XG4gICAgdmlzaWJsZVNiSW5mb0R0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXTtcbiAgICBhbGdlbWVuZVJpdEluZm9EdG86IEFsZ2VtZW5lUml0SW5mb0R0bztcbiAgICBpYVZlcnNpZTogSW5mcmFNb2RlbDtcbiAgICBzdmdJbmZvczogU3ZnSW5mb1tdO1xuICAgIGRlYnVnOiBib29sZWFuO1xuICAgIGVkaXRhYmxlOiBib29sZWFuO1xuICAgIG9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkOiBib29sZWFuO1xuICAgIHByb2dyZXNzU3RhdGU6IFByb2dyZXNzU3RhdGU7XG4gICAgbmlldXdlQmV3ZWdpbmdlbjogQmV3ZWdpbmdbXTtcbiAgICBiYXNlVXJsOiBzdHJpbmc7XG4gICAgZm9jdXNJZHM6IHN0cmluZ1tdO1xuICAgIHNlbGVjdGVkUml0ZGVlbElkOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBQcm9ncmVzc1N0YXRlIHtcbiAgICBwcm9ncmVzc0luZGljYXRvcj86IFByb2dyZXNzSW5kaWNhdG9yO1xufVxuXG5jb25zdCBvbklkc0FjdGlvbkhhbmRsZXIgPSAoYWN0aW9uKSA9PiBvbihhY3Rpb24sIChfOiBzdHJpbmdbXSwgeyBpZHMgfSkgPT4gaWRzKTtcbmNvbnN0IGNyZWF0ZUlkc1JlZHVjZXIgPSAoYWN0aW9uKSA9PiBjcmVhdGVSZWR1Y2VyKFtdIGFzIHN0cmluZ1tdLCBvbklkc0FjdGlvbkhhbmRsZXIoYWN0aW9uKSk7XG5cbmV4cG9ydCBjb25zdCBlZGl0YWJsZVJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKHRydWUsIG9uKE1zdEFjdGlvbnMuc2V0RWRpdGFibGUsIChfLCB7IGVkaXRhYmxlIH0pID0+IGVkaXRhYmxlKSk7XG5cbmV4cG9ydCBjb25zdCBwcm9ncmVzc0luZGljYXRvclJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKFxuICAgIHVuZGVmaW5lZCxcbiAgICBvbihNc3RBY3Rpb25zLlNob3dQcm9ncmVzcywgKCkgPT4gKHsgcHJvZ3Jlc3NJbmRpY2F0b3I6IHt9IH0pKSxcbiAgICBvbihNc3RBY3Rpb25zLkNsZWFyUHJvZ3Jlc3MsICgpID0+IHVuZGVmaW5lZClcbik7XG5cbmV4cG9ydCBjb25zdCBzdmdJbmZvUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoW10gYXMgU3ZnSW5mb1tdLCBvbihNc3RBY3Rpb25zLlNldFN2Z0luZm9zLCAoXywgeyBzdmdJbmZvcyB9KSA9PiBzdmdJbmZvcykpO1xuZXhwb3J0IGNvbnN0IGRlYnVnUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoZmFsc2UsIG9uKE1zdEFjdGlvbnMuU2V0RGVidWcsIChfLCB7IGRlYnVnIH0pID0+IGRlYnVnKSk7XG5leHBvcnQgY29uc3Qgcml0U2VsZWN0aWVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldFJpdFNlbGVjdGllSWRzKTtcblxuZXhwb3J0IGNvbnN0IGFjdGllT3BSaXRSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihcbiAgICBuZXcgQXJyYXlNdWx0aW1hcDxBY3RpZSwgc3RyaW5nPigpLFxuICAgIG9uKE1zdEFjdGlvbnMuU2V0R2VwbGFuZGVBY3RpZXMsIChfLCB7IGdlcGxhbmRlQWN0aWVzTWFwIH0pID0+IGdlcGxhbmRlQWN0aWVzTWFwKSxcbiAgICBvbihNc3RBY3Rpb25zLkFkZEdlcGxhbmRlQWN0aWUsIChnZXBsYW5kZUFjdGllcywgeyBhY3RpZSwgcHVpY3MgfSkgPT4ge1xuICAgICAgICBnZXBsYW5kZUFjdGllcy5wdXRBbGwoYWN0aWUsIHB1aWNzKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheU11bHRpbWFwKGdlcGxhbmRlQWN0aWVzKTtcbiAgICB9KSxcbiAgICBvbihNc3RBY3Rpb25zLkRlbGV0ZUdlcGxhbmRlQWN0aWUsIChnZXBsYW5kZUFjdGllcywgeyBhY3RpZSB9KSA9PiB7XG4gICAgICAgIGdlcGxhbmRlQWN0aWVzLmRlbGV0ZShhY3RpZSk7XG4gICAgICAgIHJldHVybiBuZXcgQXJyYXlNdWx0aW1hcChnZXBsYW5kZUFjdGllcyk7XG4gICAgfSlcbik7XG5cbmV4cG9ydCBjb25zdCBhY3RpZU9wUml0U2VsZWN0aWVJZHNSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihcbiAgICBbXSBhcyBzdHJpbmdbXSxcbiAgICBvbklkc0FjdGlvbkhhbmRsZXIoTXN0QWN0aW9ucy5TZXRBY3RpZU9wUml0U2VsZWN0aWVJZHMpLFxuICAgIG9uKE1zdEFjdGlvbnMuQWRkR2VwbGFuZGVBY3RpZSwgKGlkczogc3RyaW5nW10sIHsgcHVpY3MgfSkgPT4ge1xuICAgICAgICBwdWljcy5maWx0ZXIocHVpYyA9PiAhaWRzLmluY2x1ZGVzKHB1aWMpKS5mb3JFYWNoKHB1aWMgPT4gaWRzLnB1c2gocHVpYykpO1xuICAgICAgICByZXR1cm4gWy4uLmlkc107XG4gICAgfSksXG4gICAgb24oTXN0QWN0aW9ucy5EZWxldGVHZXBsYW5kZUFjdGllLCAoaWRzOiBzdHJpbmdbXSwgeyBwdWljcyB9KSA9PiB7XG4gICAgICAgIHB1aWNzLmZpbHRlcihwdWljID0+IGlkcy5pbmNsdWRlcyhwdWljKSkuZm9yRWFjaChwdWljID0+IGlkcyA9IGlkcy5maWx0ZXIocCA9PiBwICE9PSBwdWljKSk7XG4gICAgICAgIHJldHVybiBbLi4uaWRzXTtcbiAgICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IG9uZ2VwbGFuZGVBY3RpZVJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKFxuICAgIG5ldyBBcnJheU11bHRpbWFwPHN0cmluZywgT25nZXBsYW5kZUFjdGllPigpLFxuICAgIG9uKE1zdEFjdGlvbnMuU2V0T25nZXBsYW5kZUFjdGllcywgKF8sIHsgb25nZXBsYW5kZUFjdGllc01hcCB9KSA9PiBvbmdlcGxhbmRlQWN0aWVzTWFwKSxcbiAgICBvbihNc3RBY3Rpb25zLkFkZE9uZ2VwbGFuZGVBY3RpZSwgKG9uZ2VwbGFuZGVBY3RpZXMsIHsgb25nZXBsYW5kZUFjdGllIH0pID0+IHtcbiAgICAgICAgb25nZXBsYW5kZUFjdGllLnB1aWNzLmZpbHRlcihwdWljID0+ICFvbmdlcGxhbmRlQWN0aWVzLmNvbnRhaW5zRW50cnkocHVpYywgb25nZXBsYW5kZUFjdGllKSlcbiAgICAgICAgICAgICAgICAgICAgICAgLmZvckVhY2gocHVpYyA9PiBvbmdlcGxhbmRlQWN0aWVzLnB1dChwdWljLCBvbmdlcGxhbmRlQWN0aWUpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheU11bHRpbWFwKG9uZ2VwbGFuZGVBY3RpZXMpO1xuICAgIH0pLFxuICAgIG9uKE1zdEFjdGlvbnMuRGVsZXRlT25nZXBsYW5kZUFjdGllLCAob25nZXBsYW5kZUFjdGllcywgeyBvbmdlcGxhbmRlQWN0aWUgfSkgPT4ge1xuICAgICAgICBvbmdlcGxhbmRlQWN0aWUucHVpY3MuZm9yRWFjaChwdWljID0+IG9uZ2VwbGFuZGVBY3RpZXMuZGVsZXRlKHB1aWMsIG9uZ2VwbGFuZGVBY3RpZSkpO1xuICAgICAgICByZXR1cm4gbmV3IEFycmF5TXVsdGltYXAob25nZXBsYW5kZUFjdGllcyk7XG4gICAgfSlcbik7XG5cbmV4cG9ydCBjb25zdCBvbmdlcGxhbmRlQWN0aWVTZWxlY3RpZUlkc1JlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKFxuICAgIFtdIGFzIHN0cmluZ1tdLFxuICAgIC8vIG9uKE1zdEFjdGlvbnMuU2V0T25nZXBsYW5kZUFjdGllU2VsZWN0aWVJZHMsIChfLCB7IGlkcyB9KSA9PiBpZHMpLFxuICAgIG9uSWRzQWN0aW9uSGFuZGxlcihNc3RBY3Rpb25zLlNldE9uZ2VwbGFuZGVBY3RpZVNlbGVjdGllSWRzKSxcbiAgICBvbihNc3RBY3Rpb25zLkFkZE9uZ2VwbGFuZGVBY3RpZSwgKGlkczogc3RyaW5nW10sIHsgb25nZXBsYW5kZUFjdGllIH0pID0+IHtcbiAgICAgICAgb25nZXBsYW5kZUFjdGllLnB1aWNzLmZpbHRlcihwdWljID0+ICFpZHMuaW5jbHVkZXMocHVpYykpLmZvckVhY2gocHVpYyA9PiBpZHMucHVzaChwdWljKSk7XG4gICAgICAgIHJldHVybiBbLi4uaWRzXTtcbiAgICB9KSxcbiAgICBvbihNc3RBY3Rpb25zLkRlbGV0ZU9uZ2VwbGFuZGVBY3RpZVNlbGVjdGllSWQsIChpZHM6IHN0cmluZ1tdLCB7IGlkIH0pID0+IFtdLmNvbmNhdChpZHMuaW5jbHVkZXMoaWQpID8gaWRzLmZpbHRlcihfaWQgPT4gX2lkICE9PSBpZCkgOiBpZHMpKVxuKTtcblxuZXhwb3J0IGNvbnN0IGdlYnJva2VuUml0U2VsZWN0aWVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldEdlYnJva2VuUml0U2VsZWN0aWVJZHMpO1xuZXhwb3J0IGNvbnN0IGFsdGVybmF0aWV2ZW5TZWxlY3RpZUlkc1JlZHVjZXIgPSBjcmVhdGVJZHNSZWR1Y2VyKE1zdEFjdGlvbnMuU2V0QWx0ZXJuYXRpZXZlblNlbGVjdGllSWRzKTtcbmV4cG9ydCBjb25zdCBiZWdpblNlaW5TZWxlY3RpZUlkc1JlZHVjZXIgPSBjcmVhdGVJZHNSZWR1Y2VyKE1zdEFjdGlvbnMuU2V0QmVnaW5TZWluU2VsZWN0aWVJZHMpO1xuZXhwb3J0IGNvbnN0IGVpbmRTZWluU2VsZWN0aWVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldEVpbmRTZWluU2VsZWN0aWVJZHMpO1xuZXhwb3J0IGNvbnN0IGFsdGVybmF0aWV2ZW5DbGlja2FibGVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldEFsdGVybmF0aWV2ZW5DbGlja2FibGVJZHMpO1xuZXhwb3J0IGNvbnN0IGVpbmRTZWluZW5DbGlja2FibGVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldEVpbmRTZWluZW5DbGlja2FibGVJZHMpO1xuZXhwb3J0IGNvbnN0IGNvbm5lY3RvckNsaWNrYWJsZUlkc1JlZHVjZXIgPSBjcmVhdGVJZHNSZWR1Y2VyKE1zdEFjdGlvbnMuU2V0Q29ubmVjdG9yZW5DbGlja2FibGVJZHMpO1xuZXhwb3J0IGNvbnN0IGJlZ2luU2VpblJpZ2h0Q2xpY2thYmxlSWRzUmVkdWNlciA9IGNyZWF0ZUlkc1JlZHVjZXIoTXN0QWN0aW9ucy5TZXRCZWdpblNlaW5SaWdodENsaWNrYWJsZUlkcyk7XG5cbmV4cG9ydCBjb25zdCBuaWV1d2VSb3V0ZVJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKFxuICAgIG5ldyBOaWV1d2VSb3V0ZShudWxsLCBudWxsKSxcbiAgICBvbihNc3RBY3Rpb25zLlNldE5pZXV3Um91dGVCZWdpblNlaW4sIChfLCB7IHN0YXJ0U2Vpbk9wUml0ZGVlbCB9KSA9PiBuZXcgTmlldXdlUm91dGUoc3RhcnRTZWluT3BSaXRkZWVsLCBudWxsKSksXG4gICAgb24oTXN0QWN0aW9ucy5TZXROaWV1d1JvdXRlRWluZFNlaW4sIChuaWV1d2VSb3V0ZSwgeyBjb21iaW5hdGllVm9vckVpbmRzZWluIH0pID0+IG5ldyBOaWV1d2VSb3V0ZShuaWV1d2VSb3V0ZS5iZWdpblNlaW5PcFJpdGRlZWwsIGNvbWJpbmF0aWVWb29yRWluZHNlaW4pKSxcbiAgICBvbihNc3RBY3Rpb25zLlJlc2V0TmlldXdlUm91dGUsICgpID0+IG5ldyBOaWV1d2VSb3V0ZShudWxsLCBudWxsKSlcbik7XG5cbmV4cG9ydCBjb25zdCBzaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoXG4gICAgW10gYXMgSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdLFxuICAgIG9uKE1zdEFjdGlvbnMuU2V0U2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcywgKF8sIHsgZHRvcyB9KSA9PiBkdG9zKSxcbiAgICBvbihNc3RBY3Rpb25zLlVwZGF0ZVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3MsIChfLCB7IGR0b3MgfSkgPT4gWy4uLmR0b3NdKVxuKTtcblxuZXhwb3J0IGNvbnN0IHZpc2libGVTYkluZm9EdG9zUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoXG4gICAgW10gYXMgSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdLFxuICAgIG9uKE1zdEFjdGlvbnMuU2V0VmlzaWJsZVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3MsIChfLCB7IGR0b3MgfSkgPT4gZHRvcyksXG4gICAgb24oTXN0QWN0aW9ucy5VcGRhdGVWaXNpYmxlU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcywgKF8sIHsgZHRvcyB9KSA9PiBbLi4uZHRvc10pXG4pO1xuXG5leHBvcnQgY29uc3QgaWFWZXJzaWVSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcih7fSxcbiAgICBvbihNc3RBY3Rpb25zLlNldElhVmVyc2llLFxuICAgICAgICAoXywgeyBpYVZlcnNpZSB9KSA9PiBPYmplY3QuYXNzaWduKHt9LCBpYVZlcnNpZSwgeyB2ZXJzaWU6IGlhVmVyc2llLnZlcnNpZS50b1VwcGVyQ2FzZSgpIH0pKSk7XG5leHBvcnQgY29uc3QgYWxnZW1lbmVSaXRJbmZvRHRvUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIobmV3IEFsZ2VtZW5lUml0SW5mb0R0bygpLCBvbihNc3RBY3Rpb25zLlNldEFsZ2VtZW5lUml0SW5mbywgKF8sIHsgYWxnZW1lbmVSaXRJbmZvRHRvIH0pID0+IGFsZ2VtZW5lUml0SW5mb0R0bykpO1xuZXhwb3J0IGNvbnN0IG9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoZmFsc2UsIG9uKE1zdEFjdGlvbnMuU2V0T25nZXBsYW5kZUFjdGllc0JlcGFhbGQsIChfLCB7IGJlcGFhbGQgfSkgPT4gYmVwYWFsZCkpO1xuXG5leHBvcnQgY29uc3QgbmlldXdlQmV3ZWdpbmdSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcih7IH0sIG9uKE1zdEFjdGlvbnMuVXBkYXRlUml0LCAoXywgeyBiZXdlZ2luZ2VuIH0pID0+IGJld2VnaW5nZW4pKTtcblxuZXhwb3J0IGNvbnN0IGJhc2VVcmxSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcih1bmRlZmluZWQsIG9uKE1zdEFjdGlvbnMuU2V0QmFzZVVybCwgKF8sIHsgYmFzZVVybCB9KSA9PiBiYXNlVXJsKSk7XG5cbmV4cG9ydCBjb25zdCBmb2N1c0lkc1JlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKHsgfSwgb24oTXN0QWN0aW9ucy5mb2N1c09wSWRzLCAoXywgeyBwdWljcyB9KSA9PiBwdWljcykpO1xuXG5leHBvcnQgY29uc3Qgc2VsZWN0ZWRSaXRkZWVsSWRSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcih7fSwgb24oTXN0QWN0aW9ucy5TZXRTZWxlY3RlZFJpdGRlZWwsIChfLCB7IGlkIH0pID0+IGlkKSk7XG5cbmV4cG9ydCBjb25zdCBzdG9yZVJlZHVjZXJzID0ge1xuICAgIHJpdERlbGVuOiByaXRkZWxlblJlZHVjZXIsXG4gICAgcml0U2VsZWN0aWVJZHM6IHJpdFNlbGVjdGllSWRzUmVkdWNlcixcbiAgICBhY3RpZU9wUml0U2VsZWN0aWVJZHM6IGFjdGllT3BSaXRTZWxlY3RpZUlkc1JlZHVjZXIsXG4gICAgb25nZXBsYW5kZUFjdGllU2VsZWN0aWVJZHM6IG9uZ2VwbGFuZGVBY3RpZVNlbGVjdGllSWRzUmVkdWNlcixcbiAgICBvbmdlcGxhbmRlQWN0aWVzOiBvbmdlcGxhbmRlQWN0aWVSZWR1Y2VyLFxuICAgIGdlYnJva2VuUml0U2VsZWN0aWVJZHM6IGdlYnJva2VuUml0U2VsZWN0aWVJZHNSZWR1Y2VyLFxuICAgIGFsdGVybmF0aWV2ZW5TZWxlY3RpZUlkczogYWx0ZXJuYXRpZXZlblNlbGVjdGllSWRzUmVkdWNlcixcbiAgICBiZWdpblNlaW5TZWxlY3RpZUlkczogYmVnaW5TZWluU2VsZWN0aWVJZHNSZWR1Y2VyLFxuICAgIGVpbmRTZWluU2VsZWN0aWVJZHM6IGVpbmRTZWluU2VsZWN0aWVJZHNSZWR1Y2VyLFxuICAgIGFsdGVybmF0aWV2ZW5DbGlja2FibGVJZHM6IGFsdGVybmF0aWV2ZW5DbGlja2FibGVJZHNSZWR1Y2VyLFxuICAgIGVpbmRTZWluZW5DbGlja2FibGVJZHM6IGVpbmRTZWluZW5DbGlja2FibGVJZHNSZWR1Y2VyLFxuICAgIGNvbm5lY3RvckNsaWNrYWJsZUlkczogY29ubmVjdG9yQ2xpY2thYmxlSWRzUmVkdWNlcixcbiAgICBiZWdpblNlaW5SaWdodENsaWNrYWJsZUlkczogYmVnaW5TZWluUmlnaHRDbGlja2FibGVJZHNSZWR1Y2VyLFxuICAgIG5pZXV3ZVJvdXRlOiBuaWV1d2VSb3V0ZVJlZHVjZXIsXG4gICAgZ2VwbGFuZGVBY3RpZXM6IGFjdGllT3BSaXRSZWR1Y2VyLFxuICAgIHNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3M6IHNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3NSZWR1Y2VyLFxuICAgIHZpc2libGVTYkluZm9EdG9zOiB2aXNpYmxlU2JJbmZvRHRvc1JlZHVjZXIsXG4gICAgaWFWZXJzaWU6IGlhVmVyc2llUmVkdWNlcixcbiAgICBhbGdlbWVuZVJpdEluZm9EdG86IGFsZ2VtZW5lUml0SW5mb0R0b1JlZHVjZXIsXG4gICAgc3ZnSW5mb3M6IHN2Z0luZm9SZWR1Y2VyLFxuICAgIGRlYnVnOiBkZWJ1Z1JlZHVjZXIsXG4gICAgZWRpdGFibGU6IGVkaXRhYmxlUmVkdWNlcixcbiAgICBvbmdlcGxhbmRlQWN0aWVzQmVwYWFsZDogb25nZXBsYW5kZUFjdGllc0JlcGFhbGRSZWR1Y2VyLFxuICAgIHByb2dyZXNzU3RhdGU6IHByb2dyZXNzSW5kaWNhdG9yUmVkdWNlcixcbiAgICBuaWV1d2VCZXdlZ2luZ2VuOiBuaWV1d2VCZXdlZ2luZ1JlZHVjZXIsXG4gICAgYmFzZVVybDogYmFzZVVybFJlZHVjZXIsXG4gICAgZm9jdXNJZHM6IGZvY3VzSWRzUmVkdWNlcixcbiAgICBzZWxlY3RlZFJpdGRlZWxJZDogc2VsZWN0ZWRSaXRkZWVsSWRSZWR1Y2VyXG59O1xuXG4iXX0=
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXN0LWVkaXRvci1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9zdGF0ZS9tc3QtZWRpdG9yLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUtwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxLQUFLLFVBQVUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUE2QzlELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakYsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQWMsRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBRS9GLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFFOUcsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsYUFBYSxDQUNqRCxTQUFTLEVBQ1QsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFD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LEVBQUUsZUFBZTtJQUN6Qix1QkFBdUIsRUFBRSw4QkFBOEI7SUFDdkQsYUFBYSxFQUFFLHdCQUF3QjtJQUN2QyxnQkFBZ0IsRUFBRSxxQkFBcUI7SUFDdkMsT0FBTyxFQUFFLGNBQWM7SUFDdkIsUUFBUSxFQUFFLGVBQWU7SUFDekIsaUJBQWlCLEVBQUUsd0JBQXdCO0NBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdmdJbmZvIH0gZnJvbSAnQGxveGlhL2lteC12aWV3ZXInO1xuaW1wb3J0IHsgY3JlYXRlUmVkdWNlciwgb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBBbGdlbWVuZVJpdER0byB9IGZyb20gJy4uLy4uL2dlbmVyYXRlZC9vcGVuYXBpJztcbmltcG9ydCB7IFByb2dyZXNzSW5kaWNhdG9yIH0gZnJvbSAnLi4vYXRvbWljLWNvbXBvbmVudHMvcHJvZ3Jlc3MtaW5kaWNhdG9yL3Byb2dyZXNzLWluZGljYXRvci5lbnRpdHknO1xuaW1wb3J0IHsgTmlldXdlUm91dGUgfSBmcm9tICcuLi9tb2RlbC9uaWV1d2Utcm91dGUnO1xuaW1wb3J0IHsgT25nZXBsYW5kZUFjdGllIH0gZnJvbSAnLi4vbW9kZWwvb25nZXBsYW5kZS1hY3RpZSc7XG5pbXBvcnQgeyBSaXRkZWVsIH0gZnJvbSAnLi4vbW9kZWwvcml0ZGVlbCc7XG5pbXBvcnQgeyBBY3RpZSwgQmV3ZWdpbmcsIEluZnJhTW9kZWwgfSBmcm9tICcuLi9vcHRpbW8nO1xuaW1wb3J0IHsgSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0byB9IGZyb20gJy4uL3Jlc291cmNlcy9zaWduYWxlcmluZ3NiZWVsZGluZm8ucmVzb3VyY2UnO1xuaW1wb3J0IHsgQXJyYXlNdWx0aW1hcCB9IGZyb20gJy4uL3V0aWwvbXVsdGktbWFwJztcbmltcG9ydCAqIGFzIE1zdEFjdGlvbnMgZnJvbSAnLi9hY3Rpb25zL2FjdGlvbnMnO1xuaW1wb3J0IHsgcml0ZGVsZW5SZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2VyL3JpdC1kZWxlbi5yZWR1Y2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBNc3RFZGl0b3JTdGF0ZSB7XG4gICAgcml0RGVsZW46IFJpdGRlZWxbXTsgLy8gb25zIG1vZGVsIHZhbiB0cmVpbnBhZFxuXG4gICAgLy8gcHVpY3Mgdm9vciBTZWxlY3RpZUluZm9zXG4gICAgcml0U2VsZWN0aWVJZHM6IHN0cmluZ1tdO1xuICAgIGFjdGllT3BSaXRTZWxlY3RpZUlkczogc3RyaW5nW107XG4gICAgZ2Vicm9rZW5SaXRTZWxlY3RpZUlkczogc3RyaW5nW107XG4gICAgYWx0ZXJuYXRpZXZlblNlbGVjdGllSWRzOiBzdHJpbmdbXTtcbiAgICBiZWdpblNlaW5TZWxlY3RpZUlkczogc3RyaW5nW107XG4gICAgZWluZFNlaW5TZWxlY3RpZUlkczogc3RyaW5nW107XG4gICAgb25nZXBsYW5kZUFjdGllU2VsZWN0aWVJZHM6IHN0cmluZ1tdO1xuICAgIG9uZ2VwbGFuZGVBY3RpZXM6IEFycmF5TXVsdGltYXA8c3RyaW5nLCBPbmdlcGxhbmRlQWN0aWU+O1xuICAgIGdlcGxhbmRlQWN0aWVzOiBBcnJheU11bHRpbWFwPEFjdGllLCBzdHJpbmc+O1xuXG4gICAgLy8gcHVpY3Mgdm9vciBjbGlja3NcbiAgICBhbHRlcm5hdGlldmVuQ2xpY2thYmxlSWRzOiBzdHJpbmdbXTtcbiAgICBlaW5kU2VpbmVuQ2xpY2thYmxlSWRzOiBzdHJpbmdbXTtcbiAgICBjb25uZWN0b3JDbGlja2FibGVJZHM6IHN0cmluZ1tdO1xuXG4gICAgLy8gcHVpY3Mgdm9vciByaWdodGNsaWNrc1xuICAgIGJlZ2luU2VpblJpZ2h0Q2xpY2thYmxlSWRzOiBzdHJpbmdbXTtcblxuICAgIG5pZXV3ZVJvdXRlOiBOaWV1d2VSb3V0ZTtcblxuICAgIHNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXTtcbiAgICB2aXNpYmxlU2JJbmZvRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdO1xuICAgIGFsZ2VtZW5lUml0SW5mb0R0bzogQWxnZW1lbmVSaXREdG87XG4gICAgaWFWZXJzaWU6IEluZnJhTW9kZWw7XG4gICAgc3ZnSW5mb3M6IFN2Z0luZm9bXTtcbiAgICBkZWJ1ZzogYm9vbGVhbjtcbiAgICBlZGl0YWJsZTogYm9vbGVhbjtcbiAgICBvbmdlcGxhbmRlQWN0aWVzQmVwYWFsZDogYm9vbGVhbjtcbiAgICBwcm9ncmVzc1N0YXRlOiBQcm9ncmVzc1N0YXRlO1xuICAgIG5pZXV3ZUJld2VnaW5nZW46IEJld2VnaW5nW107XG4gICAgYmFzZVVybDogc3RyaW5nO1xuICAgIGZvY3VzSWRzOiBzdHJpbmdbXTtcbiAgICBzZWxlY3RlZFJpdGRlZWxJZDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgUHJvZ3Jlc3NTdGF0ZSB7XG4gICAgcHJvZ3Jlc3NJbmRpY2F0b3I/OiBQcm9ncmVzc0luZGljYXRvcjtcbn1cblxuY29uc3Qgb25JZHNBY3Rpb25IYW5kbGVyID0gKGFjdGlvbikgPT4gb24oYWN0aW9uLCAoXzogc3RyaW5nW10sIHsgaWRzIH0pID0+IGlkcyk7XG5jb25zdCBjcmVhdGVJZHNSZWR1Y2VyID0gKGFjdGlvbikgPT4gY3JlYXRlUmVkdWNlcihbXSBhcyBzdHJpbmdbXSwgb25JZHNBY3Rpb25IYW5kbGVyKGFjdGlvbikpO1xuXG5leHBvcnQgY29uc3QgZWRpdGFibGVSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcih0cnVlLCBvbihNc3RBY3Rpb25zLnNldEVkaXRhYmxlLCAoXywgeyBlZGl0YWJsZSB9KSA9PiBlZGl0YWJsZSkpO1xuXG5leHBvcnQgY29uc3QgcHJvZ3Jlc3NJbmRpY2F0b3JSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihcbiAgICB1bmRlZmluZWQsXG4gICAgb24oTXN0QWN0aW9ucy5TaG93UHJvZ3Jlc3MsICgpID0+ICh7IHByb2dyZXNzSW5kaWNhdG9yOiB7fSB9KSksXG4gICAgb24oTXN0QWN0aW9ucy5DbGVhclByb2dyZXNzLCAoKSA9PiB1bmRlZmluZWQpXG4pO1xuXG5leHBvcnQgY29uc3Qgc3ZnSW5mb1JlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKFtdIGFzIFN2Z0luZm9bXSwgb24oTXN0QWN0aW9ucy5TZXRTdmdJbmZvcywgKF8sIHsgc3ZnSW5mb3MgfSkgPT4gc3ZnSW5mb3MpKTtcbmV4cG9ydCBjb25zdCBkZWJ1Z1JlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKGZhbHNlLCBvbihNc3RBY3Rpb25zLlNldERlYnVnLCAoXywgeyBkZWJ1ZyB9KSA9PiBkZWJ1ZykpO1xuZXhwb3J0IGNvbnN0IHJpdFNlbGVjdGllSWRzUmVkdWNlciA9IGNyZWF0ZUlkc1JlZHVjZXIoTXN0QWN0aW9ucy5TZXRSaXRTZWxlY3RpZUlkcyk7XG5cbmV4cG9ydCBjb25zdCBhY3RpZU9wUml0UmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoXG4gICAgbmV3IEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz4oKSxcbiAgICBvbihNc3RBY3Rpb25zLlNldEdlcGxhbmRlQWN0aWVzLCAoXywgeyBnZXBsYW5kZUFjdGllc01hcCB9KSA9PiBnZXBsYW5kZUFjdGllc01hcCksXG4gICAgb24oTXN0QWN0aW9ucy5BZGRHZXBsYW5kZUFjdGllLCAoZ2VwbGFuZGVBY3RpZXMsIHsgYWN0aWUsIHB1aWNzIH0pID0+IHtcbiAgICAgICAgZ2VwbGFuZGVBY3RpZXMucHV0QWxsKGFjdGllLCBwdWljcyk7XG4gICAgICAgIHJldHVybiBuZXcgQXJyYXlNdWx0aW1hcChnZXBsYW5kZUFjdGllcyk7XG4gICAgfSksXG4gICAgb24oTXN0QWN0aW9ucy5EZWxldGVHZXBsYW5kZUFjdGllLCAoZ2VwbGFuZGVBY3RpZXMsIHsgYWN0aWUgfSkgPT4ge1xuICAgICAgICBnZXBsYW5kZUFjdGllcy5kZWxldGUoYWN0aWUpO1xuICAgICAgICByZXR1cm4gbmV3IEFycmF5TXVsdGltYXAoZ2VwbGFuZGVBY3RpZXMpO1xuICAgIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgYWN0aWVPcFJpdFNlbGVjdGllSWRzUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoXG4gICAgW10gYXMgc3RyaW5nW10sXG4gICAgb25JZHNBY3Rpb25IYW5kbGVyKE1zdEFjdGlvbnMuU2V0QWN0aWVPcFJpdFNlbGVjdGllSWRzKSxcbiAgICBvbihNc3RBY3Rpb25zLkFkZEdlcGxhbmRlQWN0aWUsIChpZHM6IHN0cmluZ1tdLCB7IHB1aWNzIH0pID0+IHtcbiAgICAgICAgcHVpY3MuZmlsdGVyKHB1aWMgPT4gIWlkcy5pbmNsdWRlcyhwdWljKSkuZm9yRWFjaChwdWljID0+IGlkcy5wdXNoKHB1aWMpKTtcbiAgICAgICAgcmV0dXJuIFsuLi5pZHNdO1xuICAgIH0pLFxuICAgIG9uKE1zdEFjdGlvbnMuRGVsZXRlR2VwbGFuZGVBY3RpZSwgKGlkczogc3RyaW5nW10sIHsgcHVpY3MgfSkgPT4ge1xuICAgICAgICBwdWljcy5maWx0ZXIocHVpYyA9PiBpZHMuaW5jbHVkZXMocHVpYykpLmZvckVhY2gocHVpYyA9PiBpZHMgPSBpZHMuZmlsdGVyKHAgPT4gcCAhPT0gcHVpYykpO1xuICAgICAgICByZXR1cm4gWy4uLmlkc107XG4gICAgfSlcbik7XG5cbmV4cG9ydCBjb25zdCBvbmdlcGxhbmRlQWN0aWVSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihcbiAgICBuZXcgQXJyYXlNdWx0aW1hcDxzdHJpbmcsIE9uZ2VwbGFuZGVBY3RpZT4oKSxcbiAgICBvbihNc3RBY3Rpb25zLlNldE9uZ2VwbGFuZGVBY3RpZXMsIChfLCB7IG9uZ2VwbGFuZGVBY3RpZXNNYXAgfSkgPT4gb25nZXBsYW5kZUFjdGllc01hcCksXG4gICAgb24oTXN0QWN0aW9ucy5BZGRPbmdlcGxhbmRlQWN0aWUsIChvbmdlcGxhbmRlQWN0aWVzLCB7IG9uZ2VwbGFuZGVBY3RpZSB9KSA9PiB7XG4gICAgICAgIG9uZ2VwbGFuZGVBY3RpZS5wdWljcy5maWx0ZXIocHVpYyA9PiAhb25nZXBsYW5kZUFjdGllcy5jb250YWluc0VudHJ5KHB1aWMsIG9uZ2VwbGFuZGVBY3RpZSkpXG4gICAgICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKHB1aWMgPT4gb25nZXBsYW5kZUFjdGllcy5wdXQocHVpYywgb25nZXBsYW5kZUFjdGllKSk7XG4gICAgICAgIHJldHVybiBuZXcgQXJyYXlNdWx0aW1hcChvbmdlcGxhbmRlQWN0aWVzKTtcbiAgICB9KSxcbiAgICBvbihNc3RBY3Rpb25zLkRlbGV0ZU9uZ2VwbGFuZGVBY3RpZSwgKG9uZ2VwbGFuZGVBY3RpZXMsIHsgb25nZXBsYW5kZUFjdGllIH0pID0+IHtcbiAgICAgICAgb25nZXBsYW5kZUFjdGllLnB1aWNzLmZvckVhY2gocHVpYyA9PiBvbmdlcGxhbmRlQWN0aWVzLmRlbGV0ZShwdWljLCBvbmdlcGxhbmRlQWN0aWUpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheU11bHRpbWFwKG9uZ2VwbGFuZGVBY3RpZXMpO1xuICAgIH0pXG4pO1xuXG5leHBvcnQgY29uc3Qgb25nZXBsYW5kZUFjdGllU2VsZWN0aWVJZHNSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihcbiAgICBbXSBhcyBzdHJpbmdbXSxcbiAgICAvLyBvbihNc3RBY3Rpb25zLlNldE9uZ2VwbGFuZGVBY3RpZVNlbGVjdGllSWRzLCAoXywgeyBpZHMgfSkgPT4gaWRzKSxcbiAgICBvbklkc0FjdGlvbkhhbmRsZXIoTXN0QWN0aW9ucy5TZXRPbmdlcGxhbmRlQWN0aWVTZWxlY3RpZUlkcyksXG4gICAgb24oTXN0QWN0aW9ucy5BZGRPbmdlcGxhbmRlQWN0aWUsIChpZHM6IHN0cmluZ1tdLCB7IG9uZ2VwbGFuZGVBY3RpZSB9KSA9PiB7XG4gICAgICAgIG9uZ2VwbGFuZGVBY3RpZS5wdWljcy5maWx0ZXIocHVpYyA9PiAhaWRzLmluY2x1ZGVzKHB1aWMpKS5mb3JFYWNoKHB1aWMgPT4gaWRzLnB1c2gocHVpYykpO1xuICAgICAgICByZXR1cm4gWy4uLmlkc107XG4gICAgfSksXG4gICAgb24oTXN0QWN0aW9ucy5EZWxldGVPbmdlcGxhbmRlQWN0aWVTZWxlY3RpZUlkLCAoaWRzOiBzdHJpbmdbXSwgeyBpZCB9KSA9PiBbXS5jb25jYXQoaWRzLmluY2x1ZGVzKGlkKSA/IGlkcy5maWx0ZXIoX2lkID0+IF9pZCAhPT0gaWQpIDogaWRzKSlcbik7XG5cbmV4cG9ydCBjb25zdCBnZWJyb2tlblJpdFNlbGVjdGllSWRzUmVkdWNlciA9IGNyZWF0ZUlkc1JlZHVjZXIoTXN0QWN0aW9ucy5TZXRHZWJyb2tlblJpdFNlbGVjdGllSWRzKTtcbmV4cG9ydCBjb25zdCBhbHRlcm5hdGlldmVuU2VsZWN0aWVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldEFsdGVybmF0aWV2ZW5TZWxlY3RpZUlkcyk7XG5leHBvcnQgY29uc3QgYmVnaW5TZWluU2VsZWN0aWVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldEJlZ2luU2VpblNlbGVjdGllSWRzKTtcbmV4cG9ydCBjb25zdCBlaW5kU2VpblNlbGVjdGllSWRzUmVkdWNlciA9IGNyZWF0ZUlkc1JlZHVjZXIoTXN0QWN0aW9ucy5TZXRFaW5kU2VpblNlbGVjdGllSWRzKTtcbmV4cG9ydCBjb25zdCBhbHRlcm5hdGlldmVuQ2xpY2thYmxlSWRzUmVkdWNlciA9IGNyZWF0ZUlkc1JlZHVjZXIoTXN0QWN0aW9ucy5TZXRBbHRlcm5hdGlldmVuQ2xpY2thYmxlSWRzKTtcbmV4cG9ydCBjb25zdCBlaW5kU2VpbmVuQ2xpY2thYmxlSWRzUmVkdWNlciA9IGNyZWF0ZUlkc1JlZHVjZXIoTXN0QWN0aW9ucy5TZXRFaW5kU2VpbmVuQ2xpY2thYmxlSWRzKTtcbmV4cG9ydCBjb25zdCBjb25uZWN0b3JDbGlja2FibGVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldENvbm5lY3RvcmVuQ2xpY2thYmxlSWRzKTtcbmV4cG9ydCBjb25zdCBiZWdpblNlaW5SaWdodENsaWNrYWJsZUlkc1JlZHVjZXIgPSBjcmVhdGVJZHNSZWR1Y2VyKE1zdEFjdGlvbnMuU2V0QmVnaW5TZWluUmlnaHRDbGlja2FibGVJZHMpO1xuXG5leHBvcnQgY29uc3QgbmlldXdlUm91dGVSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihcbiAgICBuZXcgTmlldXdlUm91dGUobnVsbCwgbnVsbCksXG4gICAgb24oTXN0QWN0aW9ucy5TZXROaWV1d1JvdXRlQmVnaW5TZWluLCAoXywgeyBzdGFydFNlaW5PcFJpdGRlZWwgfSkgPT4gbmV3IE5pZXV3ZVJvdXRlKHN0YXJ0U2Vpbk9wUml0ZGVlbCwgbnVsbCkpLFxuICAgIG9uKE1zdEFjdGlvbnMuU2V0TmlldXdSb3V0ZUVpbmRTZWluLCAobmlldXdlUm91dGUsIHsgY29tYmluYXRpZVZvb3JFaW5kc2VpbiB9KSA9PiBuZXcgTmlldXdlUm91dGUobmlldXdlUm91dGUuYmVnaW5TZWluT3BSaXRkZWVsLCBjb21iaW5hdGllVm9vckVpbmRzZWluKSksXG4gICAgb24oTXN0QWN0aW9ucy5SZXNldE5pZXV3ZVJvdXRlLCAoKSA9PiBuZXcgTmlldXdlUm91dGUobnVsbCwgbnVsbCkpXG4pO1xuXG5leHBvcnQgY29uc3Qgc2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvc1JlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKFxuICAgIFtdIGFzIElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSxcbiAgICBvbihNc3RBY3Rpb25zLlNldFNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3MsIChfLCB7IGR0b3MgfSkgPT4gZHRvcyksXG4gICAgb24oTXN0QWN0aW9ucy5VcGRhdGVTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zLCAoXywgeyBkdG9zIH0pID0+IFsuLi5kdG9zXSlcbik7XG5cbmV4cG9ydCBjb25zdCB2aXNpYmxlU2JJbmZvRHRvc1JlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKFxuICAgIFtdIGFzIElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSxcbiAgICBvbihNc3RBY3Rpb25zLlNldFZpc2libGVTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zLCAoXywgeyBkdG9zIH0pID0+IGR0b3MpLFxuICAgIG9uKE1zdEFjdGlvbnMuVXBkYXRlVmlzaWJsZVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3MsIChfLCB7IGR0b3MgfSkgPT4gWy4uLmR0b3NdKVxuKTtcblxuZXhwb3J0IGNvbnN0IGlhVmVyc2llUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoe30sXG4gICAgb24oTXN0QWN0aW9ucy5TZXRJYVZlcnNpZSxcbiAgICAgICAgKF8sIHsgaWFWZXJzaWUgfSkgPT4gT2JqZWN0LmFzc2lnbih7fSwgaWFWZXJzaWUsIHsgdmVyc2llOiBpYVZlcnNpZS52ZXJzaWUudG9VcHBlckNhc2UoKSB9KSkpO1xuZXhwb3J0IGNvbnN0IGFsZ2VtZW5lUml0SW5mb0R0b1JlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKHsgfSwgb24oTXN0QWN0aW9ucy5TZXRBbGdlbWVuZVJpdEluZm8sIChfLCB7IGFsZ2VtZW5lUml0SW5mb0R0byB9KSA9PiBhbGdlbWVuZVJpdEluZm9EdG8pKTtcbmV4cG9ydCBjb25zdCBvbmdlcGxhbmRlQWN0aWVzQmVwYWFsZFJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKGZhbHNlLCBvbihNc3RBY3Rpb25zLlNldE9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkLCAoXywgeyBiZXBhYWxkIH0pID0+IGJlcGFhbGQpKTtcblxuZXhwb3J0IGNvbnN0IG5pZXV3ZUJld2VnaW5nUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoeyB9LCBvbihNc3RBY3Rpb25zLlVwZGF0ZVJpdCwgKF8sIHsgYmV3ZWdpbmdlbiB9KSA9PiBiZXdlZ2luZ2VuKSk7XG5cbmV4cG9ydCBjb25zdCBiYXNlVXJsUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIodW5kZWZpbmVkLCBvbihNc3RBY3Rpb25zLlNldEJhc2VVcmwsIChfLCB7IGJhc2VVcmwgfSkgPT4gYmFzZVVybCkpO1xuXG5leHBvcnQgY29uc3QgZm9jdXNJZHNSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcih7IH0sIG9uKE1zdEFjdGlvbnMuZm9jdXNPcElkcywgKF8sIHsgcHVpY3MgfSkgPT4gcHVpY3MpKTtcblxuZXhwb3J0IGNvbnN0IHNlbGVjdGVkUml0ZGVlbElkUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoe30sIG9uKE1zdEFjdGlvbnMuU2V0U2VsZWN0ZWRSaXRkZWVsLCAoXywgeyBpZCB9KSA9PiBpZCkpO1xuXG5leHBvcnQgY29uc3Qgc3RvcmVSZWR1Y2VycyA9IHtcbiAgICByaXREZWxlbjogcml0ZGVsZW5SZWR1Y2VyLFxuICAgIHJpdFNlbGVjdGllSWRzOiByaXRTZWxlY3RpZUlkc1JlZHVjZXIsXG4gICAgYWN0aWVPcFJpdFNlbGVjdGllSWRzOiBhY3RpZU9wUml0U2VsZWN0aWVJZHNSZWR1Y2VyLFxuICAgIG9uZ2VwbGFuZGVBY3RpZVNlbGVjdGllSWRzOiBvbmdlcGxhbmRlQWN0aWVTZWxlY3RpZUlkc1JlZHVjZXIsXG4gICAgb25nZXBsYW5kZUFjdGllczogb25nZXBsYW5kZUFjdGllUmVkdWNlcixcbiAgICBnZWJyb2tlblJpdFNlbGVjdGllSWRzOiBnZWJyb2tlblJpdFNlbGVjdGllSWRzUmVkdWNlcixcbiAgICBhbHRlcm5hdGlldmVuU2VsZWN0aWVJZHM6IGFsdGVybmF0aWV2ZW5TZWxlY3RpZUlkc1JlZHVjZXIsXG4gICAgYmVnaW5TZWluU2VsZWN0aWVJZHM6IGJlZ2luU2VpblNlbGVjdGllSWRzUmVkdWNlcixcbiAgICBlaW5kU2VpblNlbGVjdGllSWRzOiBlaW5kU2VpblNlbGVjdGllSWRzUmVkdWNlcixcbiAgICBhbHRlcm5hdGlldmVuQ2xpY2thYmxlSWRzOiBhbHRlcm5hdGlldmVuQ2xpY2thYmxlSWRzUmVkdWNlcixcbiAgICBlaW5kU2VpbmVuQ2xpY2thYmxlSWRzOiBlaW5kU2VpbmVuQ2xpY2thYmxlSWRzUmVkdWNlcixcbiAgICBjb25uZWN0b3JDbGlja2FibGVJZHM6IGNvbm5lY3RvckNsaWNrYWJsZUlkc1JlZHVjZXIsXG4gICAgYmVnaW5TZWluUmlnaHRDbGlja2FibGVJZHM6IGJlZ2luU2VpblJpZ2h0Q2xpY2thYmxlSWRzUmVkdWNlcixcbiAgICBuaWV1d2VSb3V0ZTogbmlldXdlUm91dGVSZWR1Y2VyLFxuICAgIGdlcGxhbmRlQWN0aWVzOiBhY3RpZU9wUml0UmVkdWNlcixcbiAgICBzaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zOiBzaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zUmVkdWNlcixcbiAgICB2aXNpYmxlU2JJbmZvRHRvczogdmlzaWJsZVNiSW5mb0R0b3NSZWR1Y2VyLFxuICAgIGlhVmVyc2llOiBpYVZlcnNpZVJlZHVjZXIsXG4gICAgYWxnZW1lbmVSaXRJbmZvRHRvOiBhbGdlbWVuZVJpdEluZm9EdG9SZWR1Y2VyLFxuICAgIHN2Z0luZm9zOiBzdmdJbmZvUmVkdWNlcixcbiAgICBkZWJ1ZzogZGVidWdSZWR1Y2VyLFxuICAgIGVkaXRhYmxlOiBlZGl0YWJsZVJlZHVjZXIsXG4gICAgb25nZXBsYW5kZUFjdGllc0JlcGFhbGQ6IG9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkUmVkdWNlcixcbiAgICBwcm9ncmVzc1N0YXRlOiBwcm9ncmVzc0luZGljYXRvclJlZHVjZXIsXG4gICAgbmlldXdlQmV3ZWdpbmdlbjogbmlldXdlQmV3ZWdpbmdSZWR1Y2VyLFxuICAgIGJhc2VVcmw6IGJhc2VVcmxSZWR1Y2VyLFxuICAgIGZvY3VzSWRzOiBmb2N1c0lkc1JlZHVjZXIsXG4gICAgc2VsZWN0ZWRSaXRkZWVsSWQ6IHNlbGVjdGVkUml0ZGVlbElkUmVkdWNlclxufTtcblxuIl19