@colijnit/homedecorator 258.1.13 → 258.1.14

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.
@@ -201,6 +201,7 @@ export class FurnitureManagerComponent {
201
201
  itemSelected: this.itemSelected.bind(this),
202
202
  itemUnselected: this.itemUnselected.bind(this)
203
203
  });
204
+ item.buildFinished();
204
205
  this._itemService.addItem(item);
205
206
  return item;
206
207
  });
@@ -284,6 +285,7 @@ export class FurnitureManagerComponent {
284
285
  };
285
286
  metadata.scale = model.scale;
286
287
  const item = new FloorItem(metadata, model.object, null, handlers);
288
+ item.buildFinished();
287
289
  if (object.itemGroup) {
288
290
  this._groupService.reattachToItemGroup(item, object.itemGroup, position);
289
291
  }
@@ -304,6 +306,7 @@ export class FurnitureManagerComponent {
304
306
  materials.push(material);
305
307
  }
306
308
  const item = new CustomShapeFloorItem(metadata, new Mesh(geometry, materials), object.texture);
309
+ item.buildFinished();
307
310
  if (object.itemGroup) {
308
311
  this._groupService.reattachToItemGroup(item, object.itemGroup, position);
309
312
  }
@@ -320,6 +323,7 @@ export class FurnitureManagerComponent {
320
323
  materials.push(material);
321
324
  }
322
325
  const item = new CustomShapeWallItem(metadata, new Mesh(geometry, materials), object.texture);
326
+ item.buildFinished();
323
327
  const closestWallEdge = this._roomService.getClosestWallEdge(position.x, position.z);
324
328
  item.placeOnEdge(closestWallEdge);
325
329
  if (object.itemGroup) {
@@ -338,6 +342,7 @@ export class FurnitureManagerComponent {
338
342
  materials.push(material);
339
343
  }
340
344
  const item = new CustomCylinderFloorItem(metadata, new Mesh(geometry, materials), object.texture);
345
+ item.buildFinished();
341
346
  if (object.itemGroup) {
342
347
  this._groupService.reattachToItemGroup(item, object.itemGroup, position);
343
348
  }
@@ -355,6 +360,7 @@ export class FurnitureManagerComponent {
355
360
  materials.push(material);
356
361
  }
357
362
  const item = new CustomCylinderWallItem(metadata, new Mesh(geometry, materials), object.texture);
363
+ item.buildFinished();
358
364
  const closestWallEdge = this._roomService.getClosestWallEdge(position.x, position.z);
359
365
  item.placeOnEdge(closestWallEdge);
360
366
  if (object.itemGroup) {
@@ -454,4 +460,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
454
460
  type: ViewChild,
455
461
  args: ['categoriesSidebar', { static: true }]
456
462
  }] } });
457
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVybml0dXJlLW1hbmFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvcGx1Z2lucy9mdXJuaXR1cmUtbWFuYWdlci9mdXJuaXR1cmUtbWFuYWdlci9mdXJuaXR1cmUtbWFuYWdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL2Z1cm5pdHVyZS1tYW5hZ2VyL2Z1cm5pdHVyZS1tYW5hZ2VyL2Z1cm5pdHVyZS1tYW5hZ2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFrQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHdEcsT0FBTyxFQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQVksSUFBSSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUMsTUFBTSxPQUFPLENBQUM7QUFFaEgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBZTNELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFJM0QsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDakksT0FBTyxFQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFeEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRXRELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUN4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Uzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBQ0csaUJBQWlCO3NCQUFoRSxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQge0JveEdlb21ldHJ5LCBDeWxpbmRlckdlb21ldHJ5LCBFdWxlciwgTWF0ZXJpYWwsIE1lc2gsIE1lc2hQaG9uZ01hdGVyaWFsLCBWZWN0b3IyLCBWZWN0b3IzfSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7UGx1Z2luSW50ZXJmYWNlfSBmcm9tICcuLi8uLi9wbHVnaW4taW50ZXJmYWNlJztcclxuaW1wb3J0IHtJY29uTmFtZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbnVtL2ljb24tbmFtZS5lbnVtJztcclxuaW1wb3J0IHtUaHJlZWRNb2RlbH0gZnJvbSAnLi4vLi4vY29yZTNkL21vZGVsL3RocmVlZC1tb2RlbCc7XHJcbmltcG9ydCB7Q2F0ZWdvcnl9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWwvY2F0ZWdvcnknO1xyXG5pbXBvcnQge01lc3NhZ2VCdXNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvbWVzc2FnZS1idXMuc2VydmljZSc7XHJcbmltcG9ydCB7TW9kZWxzU2VydmljZX0gZnJvbSAnLi4vLi4vY29yZTNkL3NlcnZpY2UvbW9kZWxzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JBcHBTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1hcHAuc2VydmljZSc7XHJcbmltcG9ydCB7VXRpbHNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvdXRpbHMuc2VydmljZSc7XHJcbmltcG9ydCB7U2NyZWVuU2l6ZUFuYWx5c2lzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NjcmVlbi1zaXplLWFuYWx5c2lzL3NjcmVlbi1zaXplLWFuYWx5c2lzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1ByZXNldHNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvcHJlc2V0cy5zZXJ2aWNlJztcclxuaW1wb3J0IHtJdGVtU2VydmljZX0gZnJvbSAnLi4vLi4vY29yZTNkL3NlcnZpY2UvaXRlbS5zZXJ2aWNlJztcclxuaW1wb3J0IHtTY2VuZUV2ZW50U2VydmljZX0gZnJvbSAnLi4vLi4vY29yZTNkL3NlcnZpY2Uvc2NlbmUtZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7SHVkU2VydmljZX0gZnJvbSAnLi4vLi4vY29yZTNkL3NlcnZpY2UvaHVkLnNlcnZpY2UnO1xyXG5pbXBvcnQge0l0ZW1TZXJpYWxpemF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2l0ZW0tc2VyaWFsaXphdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtSb29tU2VydmljZX0gZnJvbSAnLi4vLi4vcm9vbS1wbGFubmVyL2NvbXBvbmVudHMvZmxvb3JwbGFubmVyL3NlcnZpY2Uvcm9vbS5zZXJ2aWNlJztcclxuaW1wb3J0IHtJdGVtR3JvdXBTZXJ2aWNlfSBmcm9tICcuLi8uLi9jb3JlM2Qvc2VydmljZS9pdGVtLWdyb3VwLnNlcnZpY2UnO1xyXG5pbXBvcnQge01lc3NhZ2VUeXBlfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VudW0vbWVzc2FnZS10eXBlLmVudW0nO1xyXG5pbXBvcnQge1ZpZXdNb2RlfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VudW0vdmlldy1tb2RlLmVudW0nO1xyXG5pbXBvcnQge1NjcmVlblNpemVJbmZvfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2NyZWVuLXNpemUtYW5hbHlzaXMvc2NyZWVuLXNpemUtaW5mbyc7XHJcbmltcG9ydCB7TW9kZWxJbnRlcmZhY2V9IGZyb20gJy4uLy4uL2NvcmUzZC9pbnRlcmZhY2UvbW9kZWwuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtEcmFnZ2VkRGF0YX0gZnJvbSAnLi4vLi4vY29yZTNkL2ludGVyZmFjZS9kcmFnZ2VkLWRhdGEuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtpc0N1c3RvbVNoYXBlVHlwZSwgaXNGbG9vclR5cGUsIGlzRnVybml0dXJlVHlwZSwgaXNJdGVtR3JvdXBUeXBlLCBpc1dhbGxJdGVtR3JvdXBUeXBlfSBmcm9tICcuLi8uLi9jb3JlM2QvaXRlbXMvZmFjdG9yeSc7XHJcbmltcG9ydCB7V2FsbEl0ZW0sIFdhbGxJdGVtR3JvdXB9IGZyb20gJy4uLy4uL2NvcmUzZC9pdGVtcy93YWxsLW9iamVjdHMnO1xyXG5pbXBvcnQge0l0ZW1Hcm91cH0gZnJvbSAnLi4vLi4vY29yZTNkL2l0ZW1zL2l0ZW0tZ3JvdXAnO1xyXG5pbXBvcnQge01ldGFkYXRhfSBmcm9tICcuLi8uLi9jb3JlM2QvaXRlbXMvbWV0YWRhdGEnO1xyXG5pbXBvcnQge0l0ZW1UeXBlfSBmcm9tICcuLi8uLi9jb3JlM2QvaXRlbXMvaXRlbS10eXBlJztcclxuaW1wb3J0IHtJdGVtfSBmcm9tICcuLi8uLi9jb3JlM2QvaXRlbXMvaXRlbSc7XHJcbmltcG9ydCB7Rmxvb3JJdGVtfSBmcm9tICcuLi8uLi9jb3JlM2QvaXRlbXMvZmxvb3ItaXRlbSc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uL2NvcmUzZC9jb3JlL3V0aWxzJztcclxuaW1wb3J0IHtCb3hHZW9tZXRyeUZhY2VzLCBDeWxpbmRlckZhY2VzLCBGYWNlfSBmcm9tICcuLi8uLi9jb3JlM2QvbW9kZWwvZmFjZSc7XHJcbmltcG9ydCB7Q3VzdG9tU2hhcGVGbG9vckl0ZW19IGZyb20gJy4uLy4uL2NvcmUzZC9pdGVtcy9jdXN0b20tc2hhcGUtZmxvb3ItaXRlbSc7XHJcbmltcG9ydCB7Q3VzdG9tU2hhcGVXYWxsSXRlbX0gZnJvbSAnLi4vLi4vY29yZTNkL2l0ZW1zL2N1c3RvbS1zaGFwZS13YWxsLWl0ZW0nO1xyXG5pbXBvcnQge0N1c3RvbUN5bGluZGVyRmxvb3JJdGVtfSBmcm9tICcuLi8uLi9jb3JlM2QvaXRlbXMvY3VzdG9tLWN5bGluZGVyLWZsb29yLWl0ZW0nO1xyXG5pbXBvcnQge0N1c3RvbUN5bGluZGVyV2FsbEl0ZW19IGZyb20gJy4uLy4uL2NvcmUzZC9pdGVtcy9jdXN0b20tY3lsaW5kZXItd2FsbC1pdGVtJztcclxuaW1wb3J0IHtJbmZvRGlhbG9nQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvaW5mby1kaWFsb2cvaW5mby1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHtNYXRlcmlhbFV0aWxzfSBmcm9tICcuLi8uLi8uLi9jb3JlL3V0aWxzL21hdGVyaWFsLnV0aWxzJztcclxuaW1wb3J0IHtJbmZvRGlhbG9nRGF0YX0gZnJvbSAnLi4vLi4vLi4vY29yZS9pbnRlcmZhY2UvaW5mby1kaWFsb2ctZGF0YS5pbnRlcmZhY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdycC1mdXJuaXR1cmUtbWFuYWdlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Z1cm5pdHVyZS1tYW5hZ2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mdXJuaXR1cmUtbWFuYWdlci5jb21wb25lbnQuc2NzcyddLyosXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gqL1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRnVybml0dXJlTWFuYWdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBQbHVnaW5JbnRlcmZhY2Uge1xyXG4gIEBWaWV3Q2hpbGQoJ3Rvb2xiYXJJY29uJywge3N0YXRpYzogdHJ1ZX0pIHRvb2xiYXJJY29uOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ2Z1cm5pdHVyZVNpZGViYXInLCB7c3RhdGljOiB0cnVlfSkgZnVybml0dXJlU2lkZWJhcjogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdjYXRlZ29yaWVzU2lkZWJhcicsIHtzdGF0aWM6IHRydWV9KSBjYXRlZ29yaWVzU2lkZWJhcjogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25OYW1lOiB0eXBlb2YgSWNvbk5hbWUgPSBJY29uTmFtZTtcclxuICBwdWJsaWMgcmVhZG9ubHkgY3lsaW5kZXJHZW9tZXRyeVJhZGl1c1NlZ21lbnRzOiBudW1iZXIgPSAzMjtcclxuXHJcbiAgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbjtcclxuICBwdWJsaWMgc2VsZWN0ZWRGdXJuaXR1cmU6IGFueTtcclxuICBwdWJsaWMgZnVybml0dXJlczogVGhyZWVkTW9kZWxbXTtcclxuICBwdWJsaWMgY3VzdG9tRnVybml0dXJlczogVGhyZWVkTW9kZWxbXTtcclxuICBwdWJsaWMgbGlicmFyeUZ1cm5pdHVyZXM6IFRocmVlZE1vZGVsW107XHJcbiAgcHVibGljIGNhdGVnb3JpZXM6IENhdGVnb3J5W107XHJcbiAgcHVibGljIHNlbGVjdGVkQ2F0ZWdvcnk6IENhdGVnb3J5O1xyXG4gIHB1YmxpYyBpczJkVmlld0FjdGl2ZSA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpc1dhbGtUaHJvdWdoVmlld0FjdGl2ZSA9IGZhbHNlO1xyXG4gIHB1YmxpYyBwaG9uZVNpemVTY3JlZW46IGJvb2xlYW47XHJcblxyXG4gIHByaXZhdGUgX2NhbWVyYXM6IFRocmVlZE1vZGVsW107XHJcbiAgcHJpdmF0ZSBfaXNPdmVySXRlbSA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VCdXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbW9kZWxzU2VydmljZTogTW9kZWxzU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FwcFNlcnZpY2U6IEhvbWVkZWNvcmF0b3JBcHBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfdXRpbHNTZXJ2aWNlOiBVdGlsc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zY3JlZW5BbmFseXNpczogU2NyZWVuU2l6ZUFuYWx5c2lzU2VydmljZSxcclxuICAgIHByaXZhdGUgX3ByZXNldHNTZXJ2aWNlOiBQcmVzZXRzU2VydmljZSxcclxuICAgIHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBfaXRlbVNlcnZpY2U6IEl0ZW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2NlbmVFdmVudFNlcnZpY2U6IFNjZW5lRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaHVkU2VydmljZTogSHVkU2VydmljZSxcclxuICAgIHByaXZhdGUgX2l0ZW1TZXJpYWxpemF0aW9uU2VydmljZTogSXRlbVNlcmlhbGl6YXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcm9vbVNlcnZpY2U6IFJvb21TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZ3JvdXBTZXJ2aWNlOiBJdGVtR3JvdXBTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9wcmVzZXRzU2VydmljZS5yZWdpc3Rlcih0aGlzKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmVtaXQoTWVzc2FnZVR5cGUuUmVnaXN0ZXJUb29sYmFySWNvbiwge1xyXG4gICAgICBwb3NpdGlvbjogJ3RvcCcsXHJcbiAgICAgIHRlbXBsYXRlOiB0aGlzLnRvb2xiYXJJY29uLFxyXG4gICAgICBwcmlvcml0eTogMTAwXHJcbiAgICB9KTtcclxuICAgIHRoaXMuX3NldEZ1cm5pdHVyZXMoYXdhaXQgdGhpcy5fbW9kZWxzU2VydmljZS5nZXRGdXJuaXR1cmVzKCkpO1xyXG5cclxuICAgIHRoaXMuX3N1YnMucHVzaChcclxuICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLlZpZXdNb2RlQ2hhbmdlZCwgKG1vZGU6IFZpZXdNb2RlKSA9PiB0aGlzLl92aWV3TW9kZUNoYW5nZWQobW9kZSkpLFxyXG4gICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuU2hvd0Zsb29yQXJ0aWNsZUNhdGFsb2csIChjYXRlZ29yeU5hbWU6IHN0cmluZykgPT4gdGhpcy5zaG93RnVybml0dXJlU2lkZWJhcihjYXRlZ29yeU5hbWUpKSxcclxuICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLlJlbW92ZVNlbGVjdGVkRnVybml0dXJlLCAoKSA9PiB0aGlzLnJlbW92ZVNlbGVjdGVkRnVybml0dXJlKCkpLFxyXG4gICAgICB0aGlzLl9zY3JlZW5BbmFseXNpcy5zY3JlZW5TaXplQ2hhbmdlZC5zdWJzY3JpYmUoKGluZm86IFNjcmVlblNpemVJbmZvKSA9PiB0aGlzLnBob25lU2l6ZVNjcmVlbiA9IGluZm8uaXNQaG9uZVNpemUpLFxyXG4gICAgICB0aGlzLl9hcHBTZXJ2aWNlLmNhdGVnb3JpZXNMb2FkZWQuc3Vic2NyaWJlKChjYXRlZ29yaWVzOiBDYXRlZ29yeVtdKSA9PiB7XHJcbiAgICAgICAgaWYgKGNhdGVnb3JpZXMpIHtcclxuICAgICAgICAgIHRoaXMuY2F0ZWdvcmllcyA9IHRoaXMuX2FwcFNlcnZpY2UuZ2V0Q2F0ZWdvcmllcygnZnVybml0dXJlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLkl0ZW1TZWxlY3RlZCwgKGl0ZW0pID0+IHRoaXMuaXRlbVNlbGVjdGVkKGl0ZW0pKSxcclxuICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLkl0ZW1VbnNlbGVjdGVkLCAoaXRlbSkgPT4gdGhpcy5pdGVtVW5zZWxlY3RlZCgpKSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLnRvb2xiYXJJY29uID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5mdXJuaXR1cmVTaWRlYmFyID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5jYXRlZ29yaWVzU2lkZWJhciA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuX2NkID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdmlld01vZGVDaGFuZ2VkKG1vZGU6IFZpZXdNb2RlKSB7XHJcbiAgICB0aGlzLmlzMmRWaWV3QWN0aXZlID0gbW9kZSA9PT0gVmlld01vZGUuRmxvb3JQbGFuMkQ7XHJcbiAgICB0aGlzLmlzV2Fsa1Rocm91Z2hWaWV3QWN0aXZlID0gbW9kZSA9PT0gVmlld01vZGUuV2Fsa1Rocm91Z2g7XHJcbiAgICB0aGlzLnNlbGVjdGVkRnVybml0dXJlID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93RnVybml0dXJlU2lkZWJhcihjYXRlZ29yeU5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKGNhdGVnb3J5TmFtZSkge1xyXG4gICAgICBjb25zdCBjYXRlZ29yeSA9IHRoaXMuY2F0ZWdvcmllcy5maW5kKGMgPT4gYy5uYW1lID09PSBjYXRlZ29yeU5hbWUpO1xyXG4gICAgICBpZiAoY2F0ZWdvcnkpIHtcclxuICAgICAgICB0aGlzLnNob3dDYXRlZ29yeShjYXRlZ29yeSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93Q2F0ZWdvcmllcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRnVybml0dXJlKSB7XHJcbiAgICAgIHRoaXMuX3Vuc2VsZWN0RnVybml0dXJlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLlNldExlZnRTaWRlYmFyLCB0aGlzLmNhdGVnb3JpZXNTaWRlYmFyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoaWRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdW5zZWxlY3RGdXJuaXR1cmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Vuc2VsZWN0RnVybml0dXJlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGdXJuaXR1cmUpIHtcclxuICAgICAgdGhpcy5fc2NlbmVFdmVudFNlcnZpY2Uuc2V0U2VsZWN0ZWRPYmplY3QobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RHJhZ2dlZChvYmplY3Q6IE1vZGVsSW50ZXJmYWNlKTogdm9pZCB7XHJcbiAgICBjb25zdCBkcmFnZ2VkRGF0YTogRHJhZ2dlZERhdGEgPSB7XHJcbiAgICAgIG5hbWU6IG9iamVjdC5uYW1lLFxyXG4gICAgICB0eXBlOiArb2JqZWN0LnR5cGUsXHJcbiAgICAgIGlPbmU6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuZW1pdChNZXNzYWdlVHlwZS5TZXREcmFnLCBkcmFnZ2VkRGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVsZWFzZURyYWdnZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLkV4aXREcmFnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldEZ1cm5pdHVyZXMoZnVybml0dXJlczogVGhyZWVkTW9kZWxbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5mdXJuaXR1cmVzID0gZnVybml0dXJlcztcclxuICAgIHRoaXMuY3VzdG9tRnVybml0dXJlcyA9IHRoaXMuZnVybml0dXJlcy5maWx0ZXIoZnVybml0dXJlID0+IGZ1cm5pdHVyZS5pc0N1c3RvbSk7XHJcbiAgICB0aGlzLmxpYnJhcnlGdXJuaXR1cmVzID0gdGhpcy5mdXJuaXR1cmVzLmZpbHRlcihmdXJuaXR1cmUgPT4gIWZ1cm5pdHVyZS5pc0N1c3RvbSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXRlbVNlbGVjdGVkKGl0ZW06IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGlzRnVybml0dXJlVHlwZShpdGVtLnVzZXJEYXRhLml0ZW1UeXBlKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRnVybml0dXJlID0gaXRlbTtcclxuICAgICAgdGhpcy5fdXRpbHNTZXJ2aWNlLmZvcmNlQ2hhbmdlRGV0ZWN0aW9uKHRoaXMuX2NkLCB0aGlzLCAnc2VsZWN0ZWRGdXJuaXR1cmUnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBpdGVtVW5zZWxlY3RlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRGdXJuaXR1cmUgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG92ZXJJdGVtKG9uOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pc092ZXJJdGVtID0gb247XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlU2VsZWN0ZWRGdXJuaXR1cmUoKTogdm9pZCB7XHJcbiAgICBpZiAoVXRpbHMuaXNDYW1lcmEodGhpcy5zZWxlY3RlZEZ1cm5pdHVyZSkpIHtcclxuICAgICAgdGhpcy5fcmV0dXJuQ2FtZXJhcygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5faHVkU2VydmljZS51bnNlbGVjdEl0ZW0oKTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRnVybml0dXJlIGluc3RhbmNlb2YgSXRlbUdyb3VwKSB7XHJcbiAgICAgIHRoaXMuX2dyb3VwU2VydmljZS5yZW1vdmVHcm91cCh0aGlzLnNlbGVjdGVkRnVybml0dXJlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLnJlbW92ZUl0ZW0odGhpcy5zZWxlY3RlZEZ1cm5pdHVyZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLlNhdmVTdGF0ZSwge2FjdGlvbjogJ3JlbW92ZUZ1cm5pdHVyZSd9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzaG93Q2F0ZWdvcnkoY2F0ZWdvcnk6IENhdGVnb3J5KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoY2F0ZWdvcnkuaW9uZSkge1xyXG4gICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLlNob3dQcm9kdWN0Q2F0YWxvZyk7XHJcbiAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmVtaXQoTWVzc2FnZVR5cGUuSGlkZUxlZnRTaWRlYmFyKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5ID0gY2F0ZWdvcnk7XHJcbiAgICB0aGlzLl9zZXRGdXJuaXR1cmVzKGF3YWl0IHRoaXMuX21vZGVsc1NlcnZpY2UuZ2V0SXRlbXNGcm9tQ2F0ZWdvcnkoY2F0ZWdvcnkuaWQpKTtcclxuICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmVtaXQoTWVzc2FnZVR5cGUuU2V0TGVmdFNpZGViYXIsIHRoaXMuZnVybml0dXJlU2lkZWJhcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRDYW1lcmFzKCk6IFRocmVlZE1vZGVsW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZnVybml0dXJlcy5maWx0ZXIoKGY6IGFueSk6IGJvb2xlYW4gPT4gVXRpbHMuaXNDYW1lcmEoZikpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmV0dXJuQ2FtZXJhcygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5fZ2V0Q2FtZXJhcygpLmxlbmd0aCAmJiB0aGlzLl9jYW1lcmFzKSB7XHJcbiAgICAgIHRoaXMuX3NldEZ1cm5pdHVyZXModGhpcy5fY2FtZXJhcy5jb25jYXQodGhpcy5mdXJuaXR1cmVzKSk7XHJcbiAgICAgIHRoaXMuX2NhbWVyYXMgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVtb3ZlQ2FtZXJhKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLl9jYW1lcmFzKSB7XHJcbiAgICAgIHRoaXMuX2NhbWVyYXMgPSB0aGlzLl9nZXRDYW1lcmFzKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zZXRGdXJuaXR1cmVzKHRoaXMuZnVybml0dXJlcy5maWx0ZXIoKGY6IGFueSk6IGJvb2xlYW4gPT4gIVV0aWxzLmlzQ2FtZXJhKGYpKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9hZCgpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpID0+IDEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGNvbnN0cnVjdCh7bmFtZX06IHsgbmFtZTogc3RyaW5nIH0pOiBQcm9taXNlPEl0ZW0+IHtcclxuICAgIGNvbnN0IG1ldGFkYXRhOiBNZXRhZGF0YSA9IHtcclxuICAgICAgaXRlbU5hbWU6IG5hbWUsXHJcbiAgICAgIGl0ZW1UeXBlOiBJdGVtVHlwZS5GbG9vckdyb3VwXHJcbiAgICB9O1xyXG4gICAgY29uc3QgbW9kZWwgPSBhd2FpdCB0aGlzLl9tb2RlbHNTZXJ2aWNlLmdldChuYW1lKTtcclxuICAgIGNvbnN0IGl0ZW0gPSBuZXcgRmxvb3JJdGVtKFxyXG4gICAgICBtZXRhZGF0YSxcclxuICAgICAgbW9kZWwub2JqZWN0LFxyXG4gICAgICBudWxsLFxyXG4gICAgICB7XHJcbiAgICAgICAgbW91c2VPdmVyOiB0aGlzLm92ZXJJdGVtLmJpbmQodGhpcywgdHJ1ZSksXHJcbiAgICAgICAgbW91c2VPZmY6IHRoaXMub3Zlckl0ZW0uYmluZCh0aGlzLCBmYWxzZSksXHJcbiAgICAgICAgaXRlbVNlbGVjdGVkOiB0aGlzLml0ZW1TZWxlY3RlZC5iaW5kKHRoaXMpLFxyXG4gICAgICAgIGl0ZW1VbnNlbGVjdGVkOiB0aGlzLml0ZW1VbnNlbGVjdGVkLmJpbmQodGhpcylcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLmFkZEl0ZW0oaXRlbSk7XHJcbiAgICByZXR1cm4gaXRlbTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBsb2FkT2JqZWN0cyh7ZnVybml0dXJlfSk6IFByb21pc2U8YW55PiB7XHJcbiAgICBpZiAoIWZ1cm5pdHVyZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZ1cm5pdHVyZXMpIHtcclxuICAgICAgdGhpcy5fcmV0dXJuQ2FtZXJhcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5vbklPTkVPYmplY3RzVG9Mb2FkID0gZnVybml0dXJlLmZpbHRlcihvID0+IHRoaXMuX2lzTm9uSU9ORU9iamVjdChvKSk7XHJcblxyXG4gICAgZnVybml0dXJlXHJcbiAgICAgIC5maWx0ZXIoKG8pID0+IGlzSXRlbUdyb3VwVHlwZShvLml0ZW1fdHlwZSkpXHJcbiAgICAgIC5mb3JFYWNoKGcgPT4ge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Hcm91cCA9IGlzV2FsbEl0ZW1Hcm91cFR5cGUoZy5pdGVtX3R5cGUpID8gbmV3IFdhbGxJdGVtR3JvdXAoKSA6IG5ldyBJdGVtR3JvdXAoKTtcclxuICAgICAgICBsZXQgZ3JvdXBBZGRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgICAgIGl0ZW1Hcm91cC5sb2NrZWQgPSBnLmxvY2tlZDtcclxuICAgICAgICBpdGVtR3JvdXAucG9zaXRpb24uc2V0KGcueHBvcywgZy55cG9zLCBnLnpwb3MpO1xyXG4gICAgICAgIGl0ZW1Hcm91cC5yb3RhdGlvbi5zZXQoMCwgZy5yb3RhdGlvbiwgMCk7XHJcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBnLmNoaWxkcmVuO1xyXG4gICAgICAgIGNoaWxkcmVuLmZvckVhY2goY2ggPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuX2lzTm9uSU9ORU9iamVjdChjaCkpIHtcclxuICAgICAgICAgICAgaWYgKCFncm91cEFkZGVkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5faXRlbVNlcnZpY2UuYWRkSXRlbShpdGVtR3JvdXApO1xyXG4gICAgICAgICAgICAgIGdyb3VwQWRkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNoLml0ZW1Hcm91cCA9IGl0ZW1Hcm91cDtcclxuICAgICAgICAgICAgbm9uSU9ORU9iamVjdHNUb0xvYWQucHVzaChjaCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMubG9hZE5vbklPTkVPYmplY3RzKG5vbklPTkVPYmplY3RzVG9Mb2FkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBsb2FkTm9uSU9ORU9iamVjdHMob2JqZWN0cyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgZm9yIChjb25zdCBvYmplY3Qgb2Ygb2JqZWN0cykge1xyXG4gICAgICBjb25zdCBwb3NpdGlvbiA9IG5ldyBWZWN0b3IzKG9iamVjdC54cG9zLCBvYmplY3QueXBvcywgb2JqZWN0Lnpwb3MpO1xyXG4gICAgICBjb25zdCByb3RhdGlvbiA9IG5ldyBFdWxlcigwLCBvYmplY3Qucm90YXRpb24sIDApO1xyXG4gICAgICBjb25zdCBtZXRhZGF0YTogYW55ID0ge1xyXG4gICAgICAgIGl0ZW1OYW1lOiBvYmplY3QuaXRlbV9uYW1lLFxyXG4gICAgICAgIGl0ZW1EZXNjcmlwdGlvbjogb2JqZWN0Lml0ZW1fZGVzY3JpcHRpb24sXHJcbiAgICAgICAgaXRlbVR5cGU6IG9iamVjdC5pdGVtX3R5cGUsXHJcbiAgICAgICAgdHlwZTogb2JqZWN0Lml0ZW1fdHlwZSxcclxuICAgICAgICBpdGVtSWQ6IG9iamVjdC5pdGVtX2lkLFxyXG4gICAgICAgIGxvY2tlZDogb2JqZWN0LmxvY2tlZCxcclxuICAgICAgICBtb2RlbFVybDogb2JqZWN0Lm1vZGVsX3VybCxcclxuICAgICAgICByZXNpemFibGU6IG9iamVjdC5yZXNpemFibGUsXHJcbiAgICAgICAgdGV4dHVyZTogb2JqZWN0LnRleHR1cmUsXHJcbiAgICAgICAgc2tpbjogb2JqZWN0LnNraW4sXHJcbiAgICAgICAgZWxldmF0aW9uOiBvYmplY3QuZWxldmF0aW9uLFxyXG4gICAgICAgIG9wZW5pbmc6IG9iamVjdC5vcGVuaW5nLFxyXG4gICAgICAgIGNhbkVsZXZhdGU6IG9iamVjdC5jYW5FbGV2YXRlLFxyXG4gICAgICAgIHdpZHRoOiBvYmplY3Qud2lkdGgsXHJcbiAgICAgICAgaGVpZ2h0OiBvYmplY3QuaGVpZ2h0LFxyXG4gICAgICAgIHBvc2l0aW9uOiBwb3NpdGlvbixcclxuICAgICAgICByb3RhdGlvbjogcm90YXRpb24sXHJcbiAgICAgICAgLy8gc2NhbGU6IG9iamVjdC5zY2FsZSxcclxuICAgICAgICBmcmFtZUNvbG9yOiBvYmplY3QuZnJhbWVDb2xvcixcclxuICAgICAgICBkb29yQ29sb3I6IG9iamVjdC5kb29yQ29sb3IsXHJcbiAgICAgICAgd2luZG93Q29sb3I6IG9iamVjdC53aW5kb3dDb2xvcixcclxuICAgICAgICBzY2FsYWJsZTogb2JqZWN0LnNjYWxhYmxlLFxyXG4gICAgICAgIHNjYWxlUGVyY2VudGFnZTogb2JqZWN0LnNjYWxlUGVyY2VudGFnZSxcclxuICAgICAgICB1c2VQaXZvdDogKG9iamVjdC5pdGVtX3R5cGUgPT09IEl0ZW1UeXBlLkluV2FsbCAmJiBvYmplY3QuaXNDdXN0b20pID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICAgIGNlbnRlclBpdm90OiBpc0Zsb29yVHlwZShvYmplY3QuaXRlbV90eXBlKSxcclxuICAgICAgICBvbldhbGw6IG9iamVjdC5vbldhbGxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGNvbnN0IG1vZGVsID0gYXdhaXQgdGhpcy5fbW9kZWxzU2VydmljZS5nZXQob2JqZWN0Lml0ZW1fbmFtZSwgbWV0YWRhdGEpO1xyXG4gICAgICBjb25zdCB0eXBlOiBJdGVtVHlwZSA9IG1vZGVsID8gbW9kZWwudHlwZSA6IG9iamVjdC5pdGVtX3R5cGU7XHJcbiAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgIGNhc2UgSXRlbVR5cGUuRmxvb3JHcm91cDoge1xyXG4gICAgICAgICAgLy8gY29uc3QgbW9kZWwgPSBhd2FpdCB0aGlzLm1vZGVsc1NlcnZpY2UuZ2V0KG9iamVjdC5pdGVtX25hbWUpO1xyXG4gICAgICAgICAgaWYgKG1vZGVsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZXJzID0ge1xyXG4gICAgICAgICAgICAgIG1vdXNlT3ZlcjogdGhpcy5vdmVySXRlbS5iaW5kKHRoaXMsIHRydWUpLFxyXG4gICAgICAgICAgICAgIG1vdXNlT2ZmOiB0aGlzLm92ZXJJdGVtLmJpbmQodGhpcywgZmFsc2UpLFxyXG4gICAgICAgICAgICAgIGl0ZW1TZWxlY3RlZDogdGhpcy5pdGVtU2VsZWN0ZWQuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICBpdGVtVW5zZWxlY3RlZDogdGhpcy5pdGVtVW5zZWxlY3RlZC5iaW5kKHRoaXMpXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIG1ldGFkYXRhLnNjYWxlID0gbW9kZWwuc2NhbGU7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBuZXcgRmxvb3JJdGVtKG1ldGFkYXRhLCBtb2RlbC5vYmplY3QsIG51bGwsIGhhbmRsZXJzKTtcclxuICAgICAgICAgICAgaWYgKG9iamVjdC5pdGVtR3JvdXApIHtcclxuICAgICAgICAgICAgICB0aGlzLl9ncm91cFNlcnZpY2UucmVhdHRhY2hUb0l0ZW1Hcm91cChpdGVtLCBvYmplY3QuaXRlbUdyb3VwLCBwb3NpdGlvbik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5faXRlbVNlcnZpY2UuYWRkSXRlbShpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKGBVbmFibGUgdG8gZ2V0IG1vZGVsIGZvciAke29iamVjdC5pdGVtX25hbWV9IGZyb20gTW9kZWxzU2VydmljZWApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgSXRlbVR5cGUuQ3VzdG9tU2hhcGU6IHtcclxuICAgICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gbmV3IEJveEdlb21ldHJ5KG9iamVjdC53aWR0aCwgb2JqZWN0LmhlaWdodCwgb2JqZWN0LmRlcHRoKTtcclxuICAgICAgICAgIGNvbnN0IG1hdGVyaWFscyA9IFtdO1xyXG4gICAgICAgICAgZm9yIChjb25zdCBmYWNlIG9mIEJveEdlb21ldHJ5RmFjZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWwgPSBhd2FpdCB0aGlzLl9jcmVhdGVGYWNlTWF0ZXJpYWwob2JqZWN0LCBmYWNlKTtcclxuICAgICAgICAgICAgbWF0ZXJpYWxzLnB1c2gobWF0ZXJpYWwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgaXRlbSA9IG5ldyBDdXN0b21TaGFwZUZsb29ySXRlbShtZXRhZGF0YSwgbmV3IE1lc2goZ2VvbWV0cnksIG1hdGVyaWFscyksIG9iamVjdC50ZXh0dXJlKTtcclxuICAgICAgICAgIGlmIChvYmplY3QuaXRlbUdyb3VwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2dyb3VwU2VydmljZS5yZWF0dGFjaFRvSXRlbUdyb3VwKGl0ZW0sIG9iamVjdC5pdGVtR3JvdXAsIHBvc2l0aW9uKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLmFkZEl0ZW0oaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSBJdGVtVHlwZS5DdXN0b21TaGFwZVdhbGw6IHtcclxuICAgICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gbmV3IEJveEdlb21ldHJ5KG9iamVjdC53aWR0aCwgb2JqZWN0LmhlaWdodCwgb2JqZWN0LmRlcHRoKTtcclxuICAgICAgICAgIGNvbnN0IG1hdGVyaWFscyA9IFtdO1xyXG4gICAgICAgICAgZm9yIChjb25zdCBmYWNlIG9mIEJveEdlb21ldHJ5RmFjZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWwgPSBhd2FpdCB0aGlzLl9jcmVhdGVGYWNlTWF0ZXJpYWwob2JqZWN0LCBmYWNlKTtcclxuICAgICAgICAgICAgbWF0ZXJpYWxzLnB1c2gobWF0ZXJpYWwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgaXRlbSA9IG5ldyBDdXN0b21TaGFwZVdhbGxJdGVtKG1ldGFkYXRhLCBuZXcgTWVzaChnZW9tZXRyeSwgbWF0ZXJpYWxzKSwgb2JqZWN0LnRleHR1cmUpO1xyXG4gICAgICAgICAgY29uc3QgY2xvc2VzdFdhbGxFZGdlID0gdGhpcy5fcm9vbVNlcnZpY2UuZ2V0Q2xvc2VzdFdhbGxFZGdlKHBvc2l0aW9uLngsIHBvc2l0aW9uLnopO1xyXG4gICAgICAgICAgaXRlbS5wbGFjZU9uRWRnZShjbG9zZXN0V2FsbEVkZ2UpO1xyXG4gICAgICAgICAgaWYgKG9iamVjdC5pdGVtR3JvdXApIHtcclxuICAgICAgICAgICAgdGhpcy5fZ3JvdXBTZXJ2aWNlLnJlYXR0YWNoVG9JdGVtR3JvdXAoaXRlbSwgb2JqZWN0Lml0ZW1Hcm91cCwgcG9zaXRpb24pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5faXRlbVNlcnZpY2UuYWRkSXRlbShpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIEl0ZW1UeXBlLkN1c3RvbUN5bGluZGVyOiB7XHJcbiAgICAgICAgICBjb25zdCBnZW9tZXRyeSA9IG5ldyBDeWxpbmRlckdlb21ldHJ5KG9iamVjdC5yYWRpdXMsIG9iamVjdC5yYWRpdXMsIG9iamVjdC5oZWlnaHQsIHRoaXMuY3lsaW5kZXJHZW9tZXRyeVJhZGl1c1NlZ21lbnRzKTtcclxuICAgICAgICAgIGNvbnN0IG1hdGVyaWFscyA9IFtdO1xyXG4gICAgICAgICAgZm9yIChjb25zdCBmYWNlIG9mIEN5bGluZGVyRmFjZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWwgPSBhd2FpdCB0aGlzLl9jcmVhdGVGYWNlTWF0ZXJpYWwob2JqZWN0LCBmYWNlKTtcclxuICAgICAgICAgICAgbWF0ZXJpYWxzLnB1c2gobWF0ZXJpYWwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgaXRlbSA9IG5ldyBDdXN0b21DeWxpbmRlckZsb29ySXRlbShtZXRhZGF0YSwgbmV3IE1lc2goZ2VvbWV0cnksIG1hdGVyaWFscyksIG9iamVjdC50ZXh0dXJlKTtcclxuICAgICAgICAgIGlmIChvYmplY3QuaXRlbUdyb3VwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2dyb3VwU2VydmljZS5yZWF0dGFjaFRvSXRlbUdyb3VwKGl0ZW0sIG9iamVjdC5pdGVtR3JvdXAsIHBvc2l0aW9uKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLmFkZEl0ZW0oaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSBJdGVtVHlwZS5DdXN0b21DeWxpbmRlcldhbGw6IHtcclxuICAgICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gbmV3IEN5bGluZGVyR2VvbWV0cnkob2JqZWN0LnJhZGl1cywgb2JqZWN0LnJhZGl1cywgb2JqZWN0LmhlaWdodCwgdGhpcy5jeWxpbmRlckdlb21ldHJ5UmFkaXVzU2VnbWVudHMpO1xyXG4gICAgICAgICAgZ2VvbWV0cnkucm90YXRlWChNYXRoLlBJIC8gMik7XHJcbiAgICAgICAgICBjb25zdCBtYXRlcmlhbHMgPSBbXTtcclxuICAgICAgICAgIGZvciAoY29uc3QgZmFjZSBvZiBDeWxpbmRlckZhY2VzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFsID0gYXdhaXQgdGhpcy5fY3JlYXRlRmFjZU1hdGVyaWFsKG9iamVjdCwgZmFjZSk7XHJcbiAgICAgICAgICAgIG1hdGVyaWFscy5wdXNoKG1hdGVyaWFsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGl0ZW0gPSBuZXcgQ3VzdG9tQ3lsaW5kZXJXYWxsSXRlbShtZXRhZGF0YSwgbmV3IE1lc2goZ2VvbWV0cnksIG1hdGVyaWFscyksIG9iamVjdC50ZXh0dXJlKTtcclxuICAgICAgICAgIGNvbnN0IGNsb3Nlc3RXYWxsRWRnZSA9IHRoaXMuX3Jvb21TZXJ2aWNlLmdldENsb3Nlc3RXYWxsRWRnZShwb3NpdGlvbi54LCBwb3NpdGlvbi56KTtcclxuICAgICAgICAgIGl0ZW0ucGxhY2VPbkVkZ2UoY2xvc2VzdFdhbGxFZGdlKTtcclxuICAgICAgICAgIGlmIChvYmplY3QuaXRlbUdyb3VwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2dyb3VwU2VydmljZS5yZWF0dGFjaFRvSXRlbUdyb3VwKGl0ZW0sIG9iamVjdC5pdGVtR3JvdXAsIHBvc2l0aW9uKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLmFkZEl0ZW0oaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVmYXVsdDoge1xyXG4gICAgICAgICAgaWYgKG1vZGVsICYmIG1vZGVsLm9iamVjdCkge1xyXG4gICAgICAgICAgICBjb25zdCBhZGRlZEl0ZW0gPSB0aGlzLl9pdGVtU2VydmljZS5hZGRKc29uSXRlbShtb2RlbCwgcG9zaXRpb24pO1xyXG4gICAgICAgICAgICBpZiAob2JqZWN0Lml0ZW1Hcm91cCkge1xyXG4gICAgICAgICAgICAgIGFkZGVkSXRlbS5wb3NpdGlvbi5jb3B5KHBvc2l0aW9uKTtcclxuICAgICAgICAgICAgICB0aGlzLl9ncm91cFNlcnZpY2UucmVhdHRhY2hUb0l0ZW1Hcm91cChhZGRlZEl0ZW0sIG9iamVjdC5pdGVtR3JvdXAsIHBvc2l0aW9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYWRkZWRJdGVtIGluc3RhbmNlb2YgV2FsbEl0ZW0pIHtcclxuICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0V2FsbEVkZ2UgPSB0aGlzLl9yb29tU2VydmljZS5nZXRDbG9zZXN0V2FsbEVkZ2UocG9zaXRpb24ueCwgcG9zaXRpb24ueik7XHJcbiAgICAgICAgICAgICAgYWRkZWRJdGVtLnBsYWNlT25FZGdlKGNsb3Nlc3RXYWxsRWRnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgVW5hYmxlIHRvIGdldCBtb2RlbCBmb3IgJHtvYmplY3QuaXRlbV9uYW1lfSBmcm9tIE1vZGVsc1NlcnZpY2VgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHByaXZhdGUgbG9hZElPTkVPYmplY3RzKG9iamVjdHMpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZW1pdChNZXNzYWdlVHlwZS5Mb2FkSU9uZUZ1cm5pdHVyZUZyb21QcmVzZXQsIG9iamVjdHMpO1xyXG4gIC8vIH1cclxuXHJcbiAgcHVibGljIGNvcHlTY2VuZUluc3RhbmNlKHNhdmVBczogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbikgPT4gcmVzb2x2ZSgpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRPYmplY3RzKCk6IGFueSB7XHJcbiAgICBjb25zdCBmdXJuaXR1cmUgPSB0aGlzLl9pdGVtU2VydmljZS5nZXRGdXJuaXR1cmUoKTtcclxuICAgIGNvbnN0IGZ1cm5pdHVyZVRvU2F2ZSA9IGZ1cm5pdHVyZS5tYXAoaXRlbSA9PiB0aGlzLl9pdGVtU2VyaWFsaXphdGlvblNlcnZpY2UuZnVybml0dXJlVG9PYmplY3QoaXRlbSkpO1xyXG4gICAgcmV0dXJuIHtmdXJuaXR1cmU6IGZ1cm5pdHVyZVRvU2F2ZX07XHJcbiAgfVxyXG5cclxuICBoYXNDdXN0b21GdXJuaXR1cmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXN0b21GdXJuaXR1cmVzLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zaG93V2FybmluZyhkYXRhOiBJbmZvRGlhbG9nRGF0YSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oSW5mb0RpYWxvZ0NvbXBvbmVudCwge2RhdGF9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2lzTm9uSU9ORU9iamVjdChvKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoISFvLml0ZW1fc2NoZW1hIHx8IG8uaW9uZSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpc0hhc01vZGVsID0gby5pdGVtX25hbWUgJiYgdGhpcy5fbW9kZWxzU2VydmljZS5oYXNNb2RlbChvLml0ZW1fbmFtZSk7XHJcbiAgICBjb25zdCBpc0N1c3RvbVNoYXBlID0gaXNDdXN0b21TaGFwZVR5cGUoby5pdGVtX3R5cGUpO1xyXG4gICAgcmV0dXJuIGlzSGFzTW9kZWwgfHwgaXNDdXN0b21TaGFwZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2lzSU9ORU9iamVjdChvKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISFvLml0ZW1fc2NoZW1hIHx8IG8uaW9uZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2NyZWF0ZUZhY2VNYXRlcmlhbChvYmplY3Q6IGFueSwgZmFjZTogRmFjZSk6IFByb21pc2U8TWF0ZXJpYWw+IHtcclxuICAgIGxldCBtYXRlcmlhbDogTWF0ZXJpYWw7XHJcbiAgICBpZiAob2JqZWN0LnNraW5bZmFjZV0udGV4dHVyZSkge1xyXG4gICAgICBjb25zdCB0ZXh0dXJlID0gb2JqZWN0LnNraW5bZmFjZV0udGV4dHVyZTtcclxuICAgICAgaWYgKHRleHR1cmUuZGF0YSA9PT0gJzw8YWxsPj4nKSB7XHJcbiAgICAgICAgdGV4dHVyZS5kYXRhID0gb2JqZWN0LnNraW5bRmFjZS5BbGxdLnRleHR1cmUuZGF0YTtcclxuICAgICAgfVxyXG4gICAgICB0ZXh0dXJlLmRpbWVuc2lvbnMgPSBuZXcgVmVjdG9yMih0ZXh0dXJlLndpZHRoLCB0ZXh0dXJlLmhlaWdodCkubXVsdGlwbHlTY2FsYXIoMTAwKTtcclxuICAgICAgbWF0ZXJpYWwgPSBuZXcgTWVzaFBob25nTWF0ZXJpYWwoe1xyXG4gICAgICAgIG1hcDogYXdhaXQgTWF0ZXJpYWxVdGlscy5Gcm9tSW1hZ2UodGV4dHVyZSksXHJcbiAgICAgICAgdHJhbnNwYXJlbnQ6IHRydWVcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBtYXRlcmlhbCA9IG5ldyBNZXNoUGhvbmdNYXRlcmlhbCh7Y29sb3I6IG9iamVjdC5za2luW2ZhY2VdLmNvbG9yfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWF0ZXJpYWw7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8bmctdGVtcGxhdGUgI3Rvb2xiYXJJY29uPlxyXG4gIDxycC10b29sYmFyLWljb25cclxuICAgIG1hdEljb249XCJjb3VjaFwiXHJcbiAgICAob25DbGljayk9XCJzaG93RnVybml0dXJlU2lkZWJhcignaU9ORSBGdXJuaXR1cmUnKVwiXHJcbiAgICB0b29sdGlwPVwie3t0aGlzLmljb25OYW1lLkZ1cm5pdHVyZSB8IGxvY2FsaXplfX1cIlxyXG4gICAgW2Rpc2FibGVkXT1cImlzMmRWaWV3QWN0aXZlIHx8IGlzV2Fsa1Rocm91Z2hWaWV3QWN0aXZlXCJcclxuICAgIFtzaG93TGFiZWxdPVwicGhvbmVTaXplU2NyZWVuXCJcclxuICA+PC9ycC10b29sYmFyLWljb24+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NhdGVnb3JpZXNTaWRlYmFyPlxyXG4gIDxoZWFkZXIgY2xhc3M9XCJkcmF3ZXJfX2hlYWRlclwiPlxyXG4gICAgPGgyIGNsYXNzPVwibWF0LXRpdGxlXCI+e3snQUNDRVNTT0lSRVMnIHwgbG9jYWxpemV9fTwvaDI+XHJcbiAgPC9oZWFkZXI+XHJcbiAgPHJwLWNhdGVnb3J5LWxpYnJhcnlcclxuICAgIFtjYXRlZ29yaWVzXT1cImNhdGVnb3JpZXNcIlxyXG4gICAgKGNhdGVnb3J5Q2xpY2spPVwic2hvd0NhdGVnb3J5KCRldmVudClcIlxyXG4gID5cclxuICA8L3JwLWNhdGVnb3J5LWxpYnJhcnk+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2Z1cm5pdHVyZVNpZGViYXI+XHJcbiAgPGhlYWRlciBjbGFzcz1cImRyYXdlcl9faGVhZGVyXCI+XHJcbiAgICA8IS0tXHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic2hvd0NhdGVnb3JpZXMoKVwiPlxyXG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJob21lZGVjb3JhdG9yLW1hdGVyaWFsLWljb25zXCI+YXJyb3dfYmFja19pb3M8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICAtLT5cclxuICAgIDxoMiBjbGFzcz1cIm1hdC10aXRsZVwiPnt7c2VsZWN0ZWRDYXRlZ29yeS5uYW1lIHwgbG9jYWxpemV9fTwvaDI+XHJcbiAgPC9oZWFkZXI+XHJcbiAgPHAgY2xhc3M9XCJtYXQtYm9keVwiICpuZ0lmPVwic2VsZWN0ZWRDYXRlZ29yeS5kZXNjcmlwdGlvblwiPnt7c2VsZWN0ZWRDYXRlZ29yeS5kZXNjcmlwdGlvbiB8IGxvY2FsaXplfX08L3A+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0N1c3RvbUZ1cm5pdHVyZSgpXCI+XHJcbiAgICA8aDMgY2xhc3M9XCJtYXQtc3ViaGVhZGluZy0yXCI+e3snQ1VTVE9NJyB8IGxvY2FsaXplfX08L2gzPlxyXG4gICAgPHJwLWZ1cm5pdHVyZS1saWJyYXJ5XHJcbiAgICAgIChjbG9zZSk9XCJoaWRlKClcIlxyXG4gICAgICBbZnVybml0dXJlc109XCJjdXN0b21GdXJuaXR1cmVzXCJcclxuICAgICAgKHNldERyYWdnZWQpPVwic2V0RHJhZ2dlZCgkZXZlbnQpXCJcclxuICAgICAgKHJlbGVhc2VEcmFnZ2VkKT1cInJlbGVhc2VEcmFnZ2VkKClcIlxyXG4gICAgICBbY29uc3RydWN0Rm5dPVwiY29uc3RydWN0LmJpbmQodGhpcylcIlxyXG4gICAgPlxyXG4gICAgPC9ycC1mdXJuaXR1cmUtbGlicmFyeT5cclxuICAgIDxoci8+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPGgzIGNsYXNzPVwibWF0LXN1YmhlYWRpbmctMlwiPnt7J0xJQlJBUlknIHwgbG9jYWxpemV9fTwvaDM+XHJcbiAgPHJwLWZ1cm5pdHVyZS1saWJyYXJ5XHJcbiAgICAoY2xvc2UpPVwiaGlkZSgpXCJcclxuICAgIFtmdXJuaXR1cmVzXT1cImxpYnJhcnlGdXJuaXR1cmVzXCJcclxuICAgIChzZXREcmFnZ2VkKT1cInNldERyYWdnZWQoJGV2ZW50KVwiXHJcbiAgICAocmVsZWFzZURyYWdnZWQpPVwicmVsZWFzZURyYWdnZWQoKVwiXHJcbiAgICBbY29uc3RydWN0Rm5dPVwiY29uc3RydWN0LmJpbmQodGhpcylcIlxyXG4gID5cclxuICA8L3JwLWZ1cm5pdHVyZS1saWJyYXJ5PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
463
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVybml0dXJlLW1hbmFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvcGx1Z2lucy9mdXJuaXR1cmUtbWFuYWdlci9mdXJuaXR1cmUtbWFuYWdlci9mdXJuaXR1cmUtbWFuYWdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL2Z1cm5pdHVyZS1tYW5hZ2VyL2Z1cm5pdHVyZS1tYW5hZ2VyL2Z1cm5pdHVyZS1tYW5hZ2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFrQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHdEcsT0FBTyxFQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQVksSUFBSSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUMsTUFBTSxPQUFPLENBQUM7QUFFaEgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBZTNELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFJM0QsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDakksT0FBTyxFQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFeEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRXRELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUN4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UzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxXQUFXLEVBQUUsb0NBQW9DO29CQUNqRCxTQUFTLEVBQUUsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFBO3FFQUNBO2lCQUNsRDt5ZkFFMkMsV0FBVztzQkFBcEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUNPLGdCQUFnQjtzQkFBOUQsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBQ0csaUJBQWlCO3NCQUFoRSxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQge0JveEdlb21ldHJ5LCBDeWxpbmRlckdlb21ldHJ5LCBFdWxlciwgTWF0ZXJpYWwsIE1lc2gsIE1lc2hQaG9uZ01hdGVyaWFsLCBWZWN0b3IyLCBWZWN0b3IzfSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7UGx1Z2luSW50ZXJmYWNlfSBmcm9tICcuLi8uLi9wbHVnaW4taW50ZXJmYWNlJztcclxuaW1wb3J0IHtJY29uTmFtZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbnVtL2ljb24tbmFtZS5lbnVtJztcclxuaW1wb3J0IHtUaHJlZWRNb2RlbH0gZnJvbSAnLi4vLi4vY29yZTNkL21vZGVsL3RocmVlZC1tb2RlbCc7XHJcbmltcG9ydCB7Q2F0ZWdvcnl9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWwvY2F0ZWdvcnknO1xyXG5pbXBvcnQge01lc3NhZ2VCdXNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvbWVzc2FnZS1idXMuc2VydmljZSc7XHJcbmltcG9ydCB7TW9kZWxzU2VydmljZX0gZnJvbSAnLi4vLi4vY29yZTNkL3NlcnZpY2UvbW9kZWxzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JBcHBTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1hcHAuc2VydmljZSc7XHJcbmltcG9ydCB7VXRpbHNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvdXRpbHMuc2VydmljZSc7XHJcbmltcG9ydCB7U2NyZWVuU2l6ZUFuYWx5c2lzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NjcmVlbi1zaXplLWFuYWx5c2lzL3NjcmVlbi1zaXplLWFuYWx5c2lzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1ByZXNldHNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvcHJlc2V0cy5zZXJ2aWNlJztcclxuaW1wb3J0IHtJdGVtU2VydmljZX0gZnJvbSAnLi4vLi4vY29yZTNkL3NlcnZpY2UvaXRlbS5zZXJ2aWNlJztcclxuaW1wb3J0IHtTY2VuZUV2ZW50U2VydmljZX0gZnJvbSAnLi4vLi4vY29yZTNkL3NlcnZpY2Uvc2NlbmUtZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7SHVkU2VydmljZX0gZnJvbSAnLi4vLi4vY29yZTNkL3NlcnZpY2UvaHVkLnNlcnZpY2UnO1xyXG5pbXBvcnQge0l0ZW1TZXJpYWxpemF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2l0ZW0tc2VyaWFsaXphdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtSb29tU2VydmljZX0gZnJvbSAnLi4vLi4vcm9vbS1wbGFubmVyL2NvbXBvbmVudHMvZmxvb3JwbGFubmVyL3NlcnZpY2Uvcm9vbS5zZXJ2aWNlJztcclxuaW1wb3J0IHtJdGVtR3JvdXBTZXJ2aWNlfSBmcm9tICcuLi8uLi9jb3JlM2Qvc2VydmljZS9pdGVtLWdyb3VwLnNlcnZpY2UnO1xyXG5pbXBvcnQge01lc3NhZ2VUeXBlfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VudW0vbWVzc2FnZS10eXBlLmVudW0nO1xyXG5pbXBvcnQge1ZpZXdNb2RlfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VudW0vdmlldy1tb2RlLmVudW0nO1xyXG5pbXBvcnQge1NjcmVlblNpemVJbmZvfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2NyZWVuLXNpemUtYW5hbHlzaXMvc2NyZWVuLXNpemUtaW5mbyc7XHJcbmltcG9ydCB7TW9kZWxJbnRlcmZhY2V9IGZyb20gJy4uLy4uL2NvcmUzZC9pbnRlcmZhY2UvbW9kZWwuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtEcmFnZ2VkRGF0YX0gZnJvbSAnLi4vLi4vY29yZTNkL2ludGVyZmFjZS9kcmFnZ2VkLWRhdGEuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtpc0N1c3RvbVNoYXBlVHlwZSwgaXNGbG9vclR5cGUsIGlzRnVybml0dXJlVHlwZSwgaXNJdGVtR3JvdXBUeXBlLCBpc1dhbGxJdGVtR3JvdXBUeXBlfSBmcm9tICcuLi8uLi9jb3JlM2QvaXRlbXMvZmFjdG9yeSc7XHJcbmltcG9ydCB7V2FsbEl0ZW0sIFdhbGxJdGVtR3JvdXB9IGZyb20gJy4uLy4uL2NvcmUzZC9pdGVtcy93YWxsLW9iamVjdHMnO1xyXG5pbXBvcnQge0l0ZW1Hcm91cH0gZnJvbSAnLi4vLi4vY29yZTNkL2l0ZW1zL2l0ZW0tZ3JvdXAnO1xyXG5pbXBvcnQge01ldGFkYXRhfSBmcm9tICcuLi8uLi9jb3JlM2QvaXRlbXMvbWV0YWRhdGEnO1xyXG5pbXBvcnQge0l0ZW1UeXBlfSBmcm9tICcuLi8uLi9jb3JlM2QvaXRlbXMvaXRlbS10eXBlJztcclxuaW1wb3J0IHtJdGVtfSBmcm9tICcuLi8uLi9jb3JlM2QvaXRlbXMvaXRlbSc7XHJcbmltcG9ydCB7Rmxvb3JJdGVtfSBmcm9tICcuLi8uLi9jb3JlM2QvaXRlbXMvZmxvb3ItaXRlbSc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uL2NvcmUzZC9jb3JlL3V0aWxzJztcclxuaW1wb3J0IHtCb3hHZW9tZXRyeUZhY2VzLCBDeWxpbmRlckZhY2VzLCBGYWNlfSBmcm9tICcuLi8uLi9jb3JlM2QvbW9kZWwvZmFjZSc7XHJcbmltcG9ydCB7Q3VzdG9tU2hhcGVGbG9vckl0ZW19IGZyb20gJy4uLy4uL2NvcmUzZC9pdGVtcy9jdXN0b20tc2hhcGUtZmxvb3ItaXRlbSc7XHJcbmltcG9ydCB7Q3VzdG9tU2hhcGVXYWxsSXRlbX0gZnJvbSAnLi4vLi4vY29yZTNkL2l0ZW1zL2N1c3RvbS1zaGFwZS13YWxsLWl0ZW0nO1xyXG5pbXBvcnQge0N1c3RvbUN5bGluZGVyRmxvb3JJdGVtfSBmcm9tICcuLi8uLi9jb3JlM2QvaXRlbXMvY3VzdG9tLWN5bGluZGVyLWZsb29yLWl0ZW0nO1xyXG5pbXBvcnQge0N1c3RvbUN5bGluZGVyV2FsbEl0ZW19IGZyb20gJy4uLy4uL2NvcmUzZC9pdGVtcy9jdXN0b20tY3lsaW5kZXItd2FsbC1pdGVtJztcclxuaW1wb3J0IHtJbmZvRGlhbG9nQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvaW5mby1kaWFsb2cvaW5mby1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHtNYXRlcmlhbFV0aWxzfSBmcm9tICcuLi8uLi8uLi9jb3JlL3V0aWxzL21hdGVyaWFsLnV0aWxzJztcclxuaW1wb3J0IHtJbmZvRGlhbG9nRGF0YX0gZnJvbSAnLi4vLi4vLi4vY29yZS9pbnRlcmZhY2UvaW5mby1kaWFsb2ctZGF0YS5pbnRlcmZhY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdycC1mdXJuaXR1cmUtbWFuYWdlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Z1cm5pdHVyZS1tYW5hZ2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mdXJuaXR1cmUtbWFuYWdlci5jb21wb25lbnQuc2NzcyddLyosXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gqL1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRnVybml0dXJlTWFuYWdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBQbHVnaW5JbnRlcmZhY2Uge1xyXG4gIEBWaWV3Q2hpbGQoJ3Rvb2xiYXJJY29uJywge3N0YXRpYzogdHJ1ZX0pIHRvb2xiYXJJY29uOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ2Z1cm5pdHVyZVNpZGViYXInLCB7c3RhdGljOiB0cnVlfSkgZnVybml0dXJlU2lkZWJhcjogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdjYXRlZ29yaWVzU2lkZWJhcicsIHtzdGF0aWM6IHRydWV9KSBjYXRlZ29yaWVzU2lkZWJhcjogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25OYW1lOiB0eXBlb2YgSWNvbk5hbWUgPSBJY29uTmFtZTtcclxuICBwdWJsaWMgcmVhZG9ubHkgY3lsaW5kZXJHZW9tZXRyeVJhZGl1c1NlZ21lbnRzOiBudW1iZXIgPSAzMjtcclxuXHJcbiAgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbjtcclxuICBwdWJsaWMgc2VsZWN0ZWRGdXJuaXR1cmU6IGFueTtcclxuICBwdWJsaWMgZnVybml0dXJlczogVGhyZWVkTW9kZWxbXTtcclxuICBwdWJsaWMgY3VzdG9tRnVybml0dXJlczogVGhyZWVkTW9kZWxbXTtcclxuICBwdWJsaWMgbGlicmFyeUZ1cm5pdHVyZXM6IFRocmVlZE1vZGVsW107XHJcbiAgcHVibGljIGNhdGVnb3JpZXM6IENhdGVnb3J5W107XHJcbiAgcHVibGljIHNlbGVjdGVkQ2F0ZWdvcnk6IENhdGVnb3J5O1xyXG4gIHB1YmxpYyBpczJkVmlld0FjdGl2ZSA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpc1dhbGtUaHJvdWdoVmlld0FjdGl2ZSA9IGZhbHNlO1xyXG4gIHB1YmxpYyBwaG9uZVNpemVTY3JlZW46IGJvb2xlYW47XHJcblxyXG4gIHByaXZhdGUgX2NhbWVyYXM6IFRocmVlZE1vZGVsW107XHJcbiAgcHJpdmF0ZSBfaXNPdmVySXRlbSA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VCdXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbW9kZWxzU2VydmljZTogTW9kZWxzU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FwcFNlcnZpY2U6IEhvbWVkZWNvcmF0b3JBcHBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfdXRpbHNTZXJ2aWNlOiBVdGlsc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zY3JlZW5BbmFseXNpczogU2NyZWVuU2l6ZUFuYWx5c2lzU2VydmljZSxcclxuICAgIHByaXZhdGUgX3ByZXNldHNTZXJ2aWNlOiBQcmVzZXRzU2VydmljZSxcclxuICAgIHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBfaXRlbVNlcnZpY2U6IEl0ZW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2NlbmVFdmVudFNlcnZpY2U6IFNjZW5lRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaHVkU2VydmljZTogSHVkU2VydmljZSxcclxuICAgIHByaXZhdGUgX2l0ZW1TZXJpYWxpemF0aW9uU2VydmljZTogSXRlbVNlcmlhbGl6YXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcm9vbVNlcnZpY2U6IFJvb21TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZ3JvdXBTZXJ2aWNlOiBJdGVtR3JvdXBTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9wcmVzZXRzU2VydmljZS5yZWdpc3Rlcih0aGlzKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmVtaXQoTWVzc2FnZVR5cGUuUmVnaXN0ZXJUb29sYmFySWNvbiwge1xyXG4gICAgICBwb3NpdGlvbjogJ3RvcCcsXHJcbiAgICAgIHRlbXBsYXRlOiB0aGlzLnRvb2xiYXJJY29uLFxyXG4gICAgICBwcmlvcml0eTogMTAwXHJcbiAgICB9KTtcclxuICAgIHRoaXMuX3NldEZ1cm5pdHVyZXMoYXdhaXQgdGhpcy5fbW9kZWxzU2VydmljZS5nZXRGdXJuaXR1cmVzKCkpO1xyXG5cclxuICAgIHRoaXMuX3N1YnMucHVzaChcclxuICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLlZpZXdNb2RlQ2hhbmdlZCwgKG1vZGU6IFZpZXdNb2RlKSA9PiB0aGlzLl92aWV3TW9kZUNoYW5nZWQobW9kZSkpLFxyXG4gICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuU2hvd0Zsb29yQXJ0aWNsZUNhdGFsb2csIChjYXRlZ29yeU5hbWU6IHN0cmluZykgPT4gdGhpcy5zaG93RnVybml0dXJlU2lkZWJhcihjYXRlZ29yeU5hbWUpKSxcclxuICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLlJlbW92ZVNlbGVjdGVkRnVybml0dXJlLCAoKSA9PiB0aGlzLnJlbW92ZVNlbGVjdGVkRnVybml0dXJlKCkpLFxyXG4gICAgICB0aGlzLl9zY3JlZW5BbmFseXNpcy5zY3JlZW5TaXplQ2hhbmdlZC5zdWJzY3JpYmUoKGluZm86IFNjcmVlblNpemVJbmZvKSA9PiB0aGlzLnBob25lU2l6ZVNjcmVlbiA9IGluZm8uaXNQaG9uZVNpemUpLFxyXG4gICAgICB0aGlzLl9hcHBTZXJ2aWNlLmNhdGVnb3JpZXNMb2FkZWQuc3Vic2NyaWJlKChjYXRlZ29yaWVzOiBDYXRlZ29yeVtdKSA9PiB7XHJcbiAgICAgICAgaWYgKGNhdGVnb3JpZXMpIHtcclxuICAgICAgICAgIHRoaXMuY2F0ZWdvcmllcyA9IHRoaXMuX2FwcFNlcnZpY2UuZ2V0Q2F0ZWdvcmllcygnZnVybml0dXJlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLkl0ZW1TZWxlY3RlZCwgKGl0ZW0pID0+IHRoaXMuaXRlbVNlbGVjdGVkKGl0ZW0pKSxcclxuICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLkl0ZW1VbnNlbGVjdGVkLCAoaXRlbSkgPT4gdGhpcy5pdGVtVW5zZWxlY3RlZCgpKSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLnRvb2xiYXJJY29uID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5mdXJuaXR1cmVTaWRlYmFyID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5jYXRlZ29yaWVzU2lkZWJhciA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuX2NkID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdmlld01vZGVDaGFuZ2VkKG1vZGU6IFZpZXdNb2RlKSB7XHJcbiAgICB0aGlzLmlzMmRWaWV3QWN0aXZlID0gbW9kZSA9PT0gVmlld01vZGUuRmxvb3JQbGFuMkQ7XHJcbiAgICB0aGlzLmlzV2Fsa1Rocm91Z2hWaWV3QWN0aXZlID0gbW9kZSA9PT0gVmlld01vZGUuV2Fsa1Rocm91Z2g7XHJcbiAgICB0aGlzLnNlbGVjdGVkRnVybml0dXJlID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93RnVybml0dXJlU2lkZWJhcihjYXRlZ29yeU5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKGNhdGVnb3J5TmFtZSkge1xyXG4gICAgICBjb25zdCBjYXRlZ29yeSA9IHRoaXMuY2F0ZWdvcmllcy5maW5kKGMgPT4gYy5uYW1lID09PSBjYXRlZ29yeU5hbWUpO1xyXG4gICAgICBpZiAoY2F0ZWdvcnkpIHtcclxuICAgICAgICB0aGlzLnNob3dDYXRlZ29yeShjYXRlZ29yeSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93Q2F0ZWdvcmllcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRnVybml0dXJlKSB7XHJcbiAgICAgIHRoaXMuX3Vuc2VsZWN0RnVybml0dXJlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLlNldExlZnRTaWRlYmFyLCB0aGlzLmNhdGVnb3JpZXNTaWRlYmFyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoaWRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdW5zZWxlY3RGdXJuaXR1cmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Vuc2VsZWN0RnVybml0dXJlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGdXJuaXR1cmUpIHtcclxuICAgICAgdGhpcy5fc2NlbmVFdmVudFNlcnZpY2Uuc2V0U2VsZWN0ZWRPYmplY3QobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RHJhZ2dlZChvYmplY3Q6IE1vZGVsSW50ZXJmYWNlKTogdm9pZCB7XHJcbiAgICBjb25zdCBkcmFnZ2VkRGF0YTogRHJhZ2dlZERhdGEgPSB7XHJcbiAgICAgIG5hbWU6IG9iamVjdC5uYW1lLFxyXG4gICAgICB0eXBlOiArb2JqZWN0LnR5cGUsXHJcbiAgICAgIGlPbmU6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuZW1pdChNZXNzYWdlVHlwZS5TZXREcmFnLCBkcmFnZ2VkRGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVsZWFzZURyYWdnZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLkV4aXREcmFnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldEZ1cm5pdHVyZXMoZnVybml0dXJlczogVGhyZWVkTW9kZWxbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5mdXJuaXR1cmVzID0gZnVybml0dXJlcztcclxuICAgIHRoaXMuY3VzdG9tRnVybml0dXJlcyA9IHRoaXMuZnVybml0dXJlcy5maWx0ZXIoZnVybml0dXJlID0+IGZ1cm5pdHVyZS5pc0N1c3RvbSk7XHJcbiAgICB0aGlzLmxpYnJhcnlGdXJuaXR1cmVzID0gdGhpcy5mdXJuaXR1cmVzLmZpbHRlcihmdXJuaXR1cmUgPT4gIWZ1cm5pdHVyZS5pc0N1c3RvbSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXRlbVNlbGVjdGVkKGl0ZW06IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGlzRnVybml0dXJlVHlwZShpdGVtLnVzZXJEYXRhLml0ZW1UeXBlKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRnVybml0dXJlID0gaXRlbTtcclxuICAgICAgdGhpcy5fdXRpbHNTZXJ2aWNlLmZvcmNlQ2hhbmdlRGV0ZWN0aW9uKHRoaXMuX2NkLCB0aGlzLCAnc2VsZWN0ZWRGdXJuaXR1cmUnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBpdGVtVW5zZWxlY3RlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRGdXJuaXR1cmUgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG92ZXJJdGVtKG9uOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pc092ZXJJdGVtID0gb247XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlU2VsZWN0ZWRGdXJuaXR1cmUoKTogdm9pZCB7XHJcbiAgICBpZiAoVXRpbHMuaXNDYW1lcmEodGhpcy5zZWxlY3RlZEZ1cm5pdHVyZSkpIHtcclxuICAgICAgdGhpcy5fcmV0dXJuQ2FtZXJhcygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5faHVkU2VydmljZS51bnNlbGVjdEl0ZW0oKTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRnVybml0dXJlIGluc3RhbmNlb2YgSXRlbUdyb3VwKSB7XHJcbiAgICAgIHRoaXMuX2dyb3VwU2VydmljZS5yZW1vdmVHcm91cCh0aGlzLnNlbGVjdGVkRnVybml0dXJlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLnJlbW92ZUl0ZW0odGhpcy5zZWxlY3RlZEZ1cm5pdHVyZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLlNhdmVTdGF0ZSwge2FjdGlvbjogJ3JlbW92ZUZ1cm5pdHVyZSd9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzaG93Q2F0ZWdvcnkoY2F0ZWdvcnk6IENhdGVnb3J5KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoY2F0ZWdvcnkuaW9uZSkge1xyXG4gICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLlNob3dQcm9kdWN0Q2F0YWxvZyk7XHJcbiAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmVtaXQoTWVzc2FnZVR5cGUuSGlkZUxlZnRTaWRlYmFyKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5ID0gY2F0ZWdvcnk7XHJcbiAgICB0aGlzLl9zZXRGdXJuaXR1cmVzKGF3YWl0IHRoaXMuX21vZGVsc1NlcnZpY2UuZ2V0SXRlbXNGcm9tQ2F0ZWdvcnkoY2F0ZWdvcnkuaWQpKTtcclxuICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmVtaXQoTWVzc2FnZVR5cGUuU2V0TGVmdFNpZGViYXIsIHRoaXMuZnVybml0dXJlU2lkZWJhcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRDYW1lcmFzKCk6IFRocmVlZE1vZGVsW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZnVybml0dXJlcy5maWx0ZXIoKGY6IGFueSk6IGJvb2xlYW4gPT4gVXRpbHMuaXNDYW1lcmEoZikpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmV0dXJuQ2FtZXJhcygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5fZ2V0Q2FtZXJhcygpLmxlbmd0aCAmJiB0aGlzLl9jYW1lcmFzKSB7XHJcbiAgICAgIHRoaXMuX3NldEZ1cm5pdHVyZXModGhpcy5fY2FtZXJhcy5jb25jYXQodGhpcy5mdXJuaXR1cmVzKSk7XHJcbiAgICAgIHRoaXMuX2NhbWVyYXMgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVtb3ZlQ2FtZXJhKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLl9jYW1lcmFzKSB7XHJcbiAgICAgIHRoaXMuX2NhbWVyYXMgPSB0aGlzLl9nZXRDYW1lcmFzKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zZXRGdXJuaXR1cmVzKHRoaXMuZnVybml0dXJlcy5maWx0ZXIoKGY6IGFueSk6IGJvb2xlYW4gPT4gIVV0aWxzLmlzQ2FtZXJhKGYpKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9hZCgpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpID0+IDEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGNvbnN0cnVjdCh7bmFtZX06IHsgbmFtZTogc3RyaW5nIH0pOiBQcm9taXNlPEl0ZW0+IHtcclxuICAgIGNvbnN0IG1ldGFkYXRhOiBNZXRhZGF0YSA9IHtcclxuICAgICAgaXRlbU5hbWU6IG5hbWUsXHJcbiAgICAgIGl0ZW1UeXBlOiBJdGVtVHlwZS5GbG9vckdyb3VwXHJcbiAgICB9O1xyXG4gICAgY29uc3QgbW9kZWwgPSBhd2FpdCB0aGlzLl9tb2RlbHNTZXJ2aWNlLmdldChuYW1lKTtcclxuICAgIGNvbnN0IGl0ZW0gPSBuZXcgRmxvb3JJdGVtKFxyXG4gICAgICBtZXRhZGF0YSxcclxuICAgICAgbW9kZWwub2JqZWN0LFxyXG4gICAgICBudWxsLFxyXG4gICAgICB7XHJcbiAgICAgICAgbW91c2VPdmVyOiB0aGlzLm92ZXJJdGVtLmJpbmQodGhpcywgdHJ1ZSksXHJcbiAgICAgICAgbW91c2VPZmY6IHRoaXMub3Zlckl0ZW0uYmluZCh0aGlzLCBmYWxzZSksXHJcbiAgICAgICAgaXRlbVNlbGVjdGVkOiB0aGlzLml0ZW1TZWxlY3RlZC5iaW5kKHRoaXMpLFxyXG4gICAgICAgIGl0ZW1VbnNlbGVjdGVkOiB0aGlzLml0ZW1VbnNlbGVjdGVkLmJpbmQodGhpcylcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIGl0ZW0uYnVpbGRGaW5pc2hlZCgpO1xyXG4gICAgdGhpcy5faXRlbVNlcnZpY2UuYWRkSXRlbShpdGVtKTtcclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGxvYWRPYmplY3RzKHtmdXJuaXR1cmV9KTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGlmICghZnVybml0dXJlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZnVybml0dXJlcykge1xyXG4gICAgICB0aGlzLl9yZXR1cm5DYW1lcmFzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgbm9uSU9ORU9iamVjdHNUb0xvYWQgPSBmdXJuaXR1cmUuZmlsdGVyKG8gPT4gdGhpcy5faXNOb25JT05FT2JqZWN0KG8pKTtcclxuXHJcbiAgICBmdXJuaXR1cmVcclxuICAgICAgLmZpbHRlcigobykgPT4gaXNJdGVtR3JvdXBUeXBlKG8uaXRlbV90eXBlKSlcclxuICAgICAgLmZvckVhY2goZyA9PiB7XHJcbiAgICAgICAgY29uc3QgaXRlbUdyb3VwID0gaXNXYWxsSXRlbUdyb3VwVHlwZShnLml0ZW1fdHlwZSkgPyBuZXcgV2FsbEl0ZW1Hcm91cCgpIDogbmV3IEl0ZW1Hcm91cCgpO1xyXG4gICAgICAgIGxldCBncm91cEFkZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgICAgaXRlbUdyb3VwLmxvY2tlZCA9IGcubG9ja2VkO1xyXG4gICAgICAgIGl0ZW1Hcm91cC5wb3NpdGlvbi5zZXQoZy54cG9zLCBnLnlwb3MsIGcuenBvcyk7XHJcbiAgICAgICAgaXRlbUdyb3VwLnJvdGF0aW9uLnNldCgwLCBnLnJvdGF0aW9uLCAwKTtcclxuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGcuY2hpbGRyZW47XHJcbiAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChjaCA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5faXNOb25JT05FT2JqZWN0KGNoKSkge1xyXG4gICAgICAgICAgICBpZiAoIWdyb3VwQWRkZWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLl9pdGVtU2VydmljZS5hZGRJdGVtKGl0ZW1Hcm91cCk7XHJcbiAgICAgICAgICAgICAgZ3JvdXBBZGRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2guaXRlbUdyb3VwID0gaXRlbUdyb3VwO1xyXG4gICAgICAgICAgICBub25JT05FT2JqZWN0c1RvTG9hZC5wdXNoKGNoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5sb2FkTm9uSU9ORU9iamVjdHMobm9uSU9ORU9iamVjdHNUb0xvYWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGxvYWROb25JT05FT2JqZWN0cyhvYmplY3RzKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBmb3IgKGNvbnN0IG9iamVjdCBvZiBvYmplY3RzKSB7XHJcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gbmV3IFZlY3RvcjMob2JqZWN0Lnhwb3MsIG9iamVjdC55cG9zLCBvYmplY3QuenBvcyk7XHJcbiAgICAgIGNvbnN0IHJvdGF0aW9uID0gbmV3IEV1bGVyKDAsIG9iamVjdC5yb3RhdGlvbiwgMCk7XHJcbiAgICAgIGNvbnN0IG1ldGFkYXRhOiBhbnkgPSB7XHJcbiAgICAgICAgaXRlbU5hbWU6IG9iamVjdC5pdGVtX25hbWUsXHJcbiAgICAgICAgaXRlbURlc2NyaXB0aW9uOiBvYmplY3QuaXRlbV9kZXNjcmlwdGlvbixcclxuICAgICAgICBpdGVtVHlwZTogb2JqZWN0Lml0ZW1fdHlwZSxcclxuICAgICAgICB0eXBlOiBvYmplY3QuaXRlbV90eXBlLFxyXG4gICAgICAgIGl0ZW1JZDogb2JqZWN0Lml0ZW1faWQsXHJcbiAgICAgICAgbG9ja2VkOiBvYmplY3QubG9ja2VkLFxyXG4gICAgICAgIG1vZGVsVXJsOiBvYmplY3QubW9kZWxfdXJsLFxyXG4gICAgICAgIHJlc2l6YWJsZTogb2JqZWN0LnJlc2l6YWJsZSxcclxuICAgICAgICB0ZXh0dXJlOiBvYmplY3QudGV4dHVyZSxcclxuICAgICAgICBza2luOiBvYmplY3Quc2tpbixcclxuICAgICAgICBlbGV2YXRpb246IG9iamVjdC5lbGV2YXRpb24sXHJcbiAgICAgICAgb3BlbmluZzogb2JqZWN0Lm9wZW5pbmcsXHJcbiAgICAgICAgY2FuRWxldmF0ZTogb2JqZWN0LmNhbkVsZXZhdGUsXHJcbiAgICAgICAgd2lkdGg6IG9iamVjdC53aWR0aCxcclxuICAgICAgICBoZWlnaHQ6IG9iamVjdC5oZWlnaHQsXHJcbiAgICAgICAgcG9zaXRpb246IHBvc2l0aW9uLFxyXG4gICAgICAgIHJvdGF0aW9uOiByb3RhdGlvbixcclxuICAgICAgICAvLyBzY2FsZTogb2JqZWN0LnNjYWxlLFxyXG4gICAgICAgIGZyYW1lQ29sb3I6IG9iamVjdC5mcmFtZUNvbG9yLFxyXG4gICAgICAgIGRvb3JDb2xvcjogb2JqZWN0LmRvb3JDb2xvcixcclxuICAgICAgICB3aW5kb3dDb2xvcjogb2JqZWN0LndpbmRvd0NvbG9yLFxyXG4gICAgICAgIHNjYWxhYmxlOiBvYmplY3Quc2NhbGFibGUsXHJcbiAgICAgICAgc2NhbGVQZXJjZW50YWdlOiBvYmplY3Quc2NhbGVQZXJjZW50YWdlLFxyXG4gICAgICAgIHVzZVBpdm90OiAob2JqZWN0Lml0ZW1fdHlwZSA9PT0gSXRlbVR5cGUuSW5XYWxsICYmIG9iamVjdC5pc0N1c3RvbSkgPyBmYWxzZSA6IHRydWUsXHJcbiAgICAgICAgY2VudGVyUGl2b3Q6IGlzRmxvb3JUeXBlKG9iamVjdC5pdGVtX3R5cGUpLFxyXG4gICAgICAgIG9uV2FsbDogb2JqZWN0Lm9uV2FsbFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgY29uc3QgbW9kZWwgPSBhd2FpdCB0aGlzLl9tb2RlbHNTZXJ2aWNlLmdldChvYmplY3QuaXRlbV9uYW1lLCBtZXRhZGF0YSk7XHJcbiAgICAgIGNvbnN0IHR5cGU6IEl0ZW1UeXBlID0gbW9kZWwgPyBtb2RlbC50eXBlIDogb2JqZWN0Lml0ZW1fdHlwZTtcclxuICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgY2FzZSBJdGVtVHlwZS5GbG9vckdyb3VwOiB7XHJcbiAgICAgICAgICAvLyBjb25zdCBtb2RlbCA9IGF3YWl0IHRoaXMubW9kZWxzU2VydmljZS5nZXQob2JqZWN0Lml0ZW1fbmFtZSk7XHJcbiAgICAgICAgICBpZiAobW9kZWwpIHtcclxuICAgICAgICAgICAgY29uc3QgaGFuZGxlcnMgPSB7XHJcbiAgICAgICAgICAgICAgbW91c2VPdmVyOiB0aGlzLm92ZXJJdGVtLmJpbmQodGhpcywgdHJ1ZSksXHJcbiAgICAgICAgICAgICAgbW91c2VPZmY6IHRoaXMub3Zlckl0ZW0uYmluZCh0aGlzLCBmYWxzZSksXHJcbiAgICAgICAgICAgICAgaXRlbVNlbGVjdGVkOiB0aGlzLml0ZW1TZWxlY3RlZC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgIGl0ZW1VbnNlbGVjdGVkOiB0aGlzLml0ZW1VbnNlbGVjdGVkLmJpbmQodGhpcylcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgbWV0YWRhdGEuc2NhbGUgPSBtb2RlbC5zY2FsZTtcclxuICAgICAgICAgICAgY29uc3QgaXRlbTogRmxvb3JJdGVtID0gbmV3IEZsb29ySXRlbShtZXRhZGF0YSwgbW9kZWwub2JqZWN0LCBudWxsLCBoYW5kbGVycyk7XHJcbiAgICAgICAgICAgIGl0ZW0uYnVpbGRGaW5pc2hlZCgpO1xyXG4gICAgICAgICAgICBpZiAob2JqZWN0Lml0ZW1Hcm91cCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuX2dyb3VwU2VydmljZS5yZWF0dGFjaFRvSXRlbUdyb3VwKGl0ZW0sIG9iamVjdC5pdGVtR3JvdXAsIHBvc2l0aW9uKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLl9pdGVtU2VydmljZS5hZGRJdGVtKGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFVuYWJsZSB0byBnZXQgbW9kZWwgZm9yICR7b2JqZWN0Lml0ZW1fbmFtZX0gZnJvbSBNb2RlbHNTZXJ2aWNlYCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSBJdGVtVHlwZS5DdXN0b21TaGFwZToge1xyXG4gICAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgQm94R2VvbWV0cnkob2JqZWN0LndpZHRoLCBvYmplY3QuaGVpZ2h0LCBvYmplY3QuZGVwdGgpO1xyXG4gICAgICAgICAgY29uc3QgbWF0ZXJpYWxzID0gW107XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGZhY2Ugb2YgQm94R2VvbWV0cnlGYWNlcykge1xyXG4gICAgICAgICAgICBjb25zdCBtYXRlcmlhbCA9IGF3YWl0IHRoaXMuX2NyZWF0ZUZhY2VNYXRlcmlhbChvYmplY3QsIGZhY2UpO1xyXG4gICAgICAgICAgICBtYXRlcmlhbHMucHVzaChtYXRlcmlhbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBpdGVtOiBDdXN0b21TaGFwZUZsb29ySXRlbSA9IG5ldyBDdXN0b21TaGFwZUZsb29ySXRlbShtZXRhZGF0YSwgbmV3IE1lc2goZ2VvbWV0cnksIG1hdGVyaWFscyksIG9iamVjdC50ZXh0dXJlKTtcclxuICAgICAgICAgIGl0ZW0uYnVpbGRGaW5pc2hlZCgpO1xyXG4gICAgICAgICAgaWYgKG9iamVjdC5pdGVtR3JvdXApIHtcclxuICAgICAgICAgICAgdGhpcy5fZ3JvdXBTZXJ2aWNlLnJlYXR0YWNoVG9JdGVtR3JvdXAoaXRlbSwgb2JqZWN0Lml0ZW1Hcm91cCwgcG9zaXRpb24pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5faXRlbVNlcnZpY2UuYWRkSXRlbShpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIEl0ZW1UeXBlLkN1c3RvbVNoYXBlV2FsbDoge1xyXG4gICAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgQm94R2VvbWV0cnkob2JqZWN0LndpZHRoLCBvYmplY3QuaGVpZ2h0LCBvYmplY3QuZGVwdGgpO1xyXG4gICAgICAgICAgY29uc3QgbWF0ZXJpYWxzID0gW107XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGZhY2Ugb2YgQm94R2VvbWV0cnlGYWNlcykge1xyXG4gICAgICAgICAgICBjb25zdCBtYXRlcmlhbCA9IGF3YWl0IHRoaXMuX2NyZWF0ZUZhY2VNYXRlcmlhbChvYmplY3QsIGZhY2UpO1xyXG4gICAgICAgICAgICBtYXRlcmlhbHMucHVzaChtYXRlcmlhbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBpdGVtOiBDdXN0b21TaGFwZVdhbGxJdGVtID0gbmV3IEN1c3RvbVNoYXBlV2FsbEl0ZW0obWV0YWRhdGEsIG5ldyBNZXNoKGdlb21ldHJ5LCBtYXRlcmlhbHMpLCBvYmplY3QudGV4dHVyZSk7XHJcbiAgICAgICAgICBpdGVtLmJ1aWxkRmluaXNoZWQoKTtcclxuICAgICAgICAgIGNvbnN0IGNsb3Nlc3RXYWxsRWRnZSA9IHRoaXMuX3Jvb21TZXJ2aWNlLmdldENsb3Nlc3RXYWxsRWRnZShwb3NpdGlvbi54LCBwb3NpdGlvbi56KTtcclxuICAgICAgICAgIGl0ZW0ucGxhY2VPbkVkZ2UoY2xvc2VzdFdhbGxFZGdlKTtcclxuICAgICAgICAgIGlmIChvYmplY3QuaXRlbUdyb3VwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2dyb3VwU2VydmljZS5yZWF0dGFjaFRvSXRlbUdyb3VwKGl0ZW0sIG9iamVjdC5pdGVtR3JvdXAsIHBvc2l0aW9uKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLmFkZEl0ZW0oaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSBJdGVtVHlwZS5DdXN0b21DeWxpbmRlcjoge1xyXG4gICAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgQ3lsaW5kZXJHZW9tZXRyeShvYmplY3QucmFkaXVzLCBvYmplY3QucmFkaXVzLCBvYmplY3QuaGVpZ2h0LCB0aGlzLmN5bGluZGVyR2VvbWV0cnlSYWRpdXNTZWdtZW50cyk7XHJcbiAgICAgICAgICBjb25zdCBtYXRlcmlhbHMgPSBbXTtcclxuICAgICAgICAgIGZvciAoY29uc3QgZmFjZSBvZiBDeWxpbmRlckZhY2VzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFsID0gYXdhaXQgdGhpcy5fY3JlYXRlRmFjZU1hdGVyaWFsKG9iamVjdCwgZmFjZSk7XHJcbiAgICAgICAgICAgIG1hdGVyaWFscy5wdXNoKG1hdGVyaWFsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGl0ZW06IEN1c3RvbUN5bGluZGVyRmxvb3JJdGVtID0gbmV3IEN1c3RvbUN5bGluZGVyRmxvb3JJdGVtKG1ldGFkYXRhLCBuZXcgTWVzaChnZW9tZXRyeSwgbWF0ZXJpYWxzKSwgb2JqZWN0LnRleHR1cmUpO1xyXG4gICAgICAgICAgaXRlbS5idWlsZEZpbmlzaGVkKCk7XHJcbiAgICAgICAgICBpZiAob2JqZWN0Lml0ZW1Hcm91cCkge1xyXG4gICAgICAgICAgICB0aGlzLl9ncm91cFNlcnZpY2UucmVhdHRhY2hUb0l0ZW1Hcm91cChpdGVtLCBvYmplY3QuaXRlbUdyb3VwLCBwb3NpdGlvbik7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9pdGVtU2VydmljZS5hZGRJdGVtKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgSXRlbVR5cGUuQ3VzdG9tQ3lsaW5kZXJXYWxsOiB7XHJcbiAgICAgICAgICBjb25zdCBnZW9tZXRyeSA9IG5ldyBDeWxpbmRlckdlb21ldHJ5KG9iamVjdC5yYWRpdXMsIG9iamVjdC5yYWRpdXMsIG9iamVjdC5oZWlnaHQsIHRoaXMuY3lsaW5kZXJHZW9tZXRyeVJhZGl1c1NlZ21lbnRzKTtcclxuICAgICAgICAgIGdlb21ldHJ5LnJvdGF0ZVgoTWF0aC5QSSAvIDIpO1xyXG4gICAgICAgICAgY29uc3QgbWF0ZXJpYWxzID0gW107XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGZhY2Ugb2YgQ3lsaW5kZXJGYWNlcykge1xyXG4gICAgICAgICAgICBjb25zdCBtYXRlcmlhbCA9IGF3YWl0IHRoaXMuX2NyZWF0ZUZhY2VNYXRlcmlhbChvYmplY3QsIGZhY2UpO1xyXG4gICAgICAgICAgICBtYXRlcmlhbHMucHVzaChtYXRlcmlhbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBpdGVtOiBDdXN0b21DeWxpbmRlcldhbGxJdGVtID0gbmV3IEN1c3RvbUN5bGluZGVyV2FsbEl0ZW0obWV0YWRhdGEsIG5ldyBNZXNoKGdlb21ldHJ5LCBtYXRlcmlhbHMpLCBvYmplY3QudGV4dHVyZSk7XHJcbiAgICAgICAgICBpdGVtLmJ1aWxkRmluaXNoZWQoKTtcclxuICAgICAgICAgIGNvbnN0IGNsb3Nlc3RXYWxsRWRnZSA9IHRoaXMuX3Jvb21TZXJ2aWNlLmdldENsb3Nlc3RXYWxsRWRnZShwb3NpdGlvbi54LCBwb3NpdGlvbi56KTtcclxuICAgICAgICAgIGl0ZW0ucGxhY2VPbkVkZ2UoY2xvc2VzdFdhbGxFZGdlKTtcclxuICAgICAgICAgIGlmIChvYmplY3QuaXRlbUdyb3VwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2dyb3VwU2VydmljZS5yZWF0dGFjaFRvSXRlbUdyb3VwKGl0ZW0sIG9iamVjdC5pdGVtR3JvdXAsIHBvc2l0aW9uKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLmFkZEl0ZW0oaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVmYXVsdDoge1xyXG4gICAgICAgICAgaWYgKG1vZGVsICYmIG1vZGVsLm9iamVjdCkge1xyXG4gICAgICAgICAgICBjb25zdCBhZGRlZEl0ZW0gPSB0aGlzLl9pdGVtU2VydmljZS5hZGRKc29uSXRlbShtb2RlbCwgcG9zaXRpb24pO1xyXG4gICAgICAgICAgICBpZiAob2JqZWN0Lml0ZW1Hcm91cCkge1xyXG4gICAgICAgICAgICAgIGFkZGVkSXRlbS5wb3NpdGlvbi5jb3B5KHBvc2l0aW9uKTtcclxuICAgICAgICAgICAgICB0aGlzLl9ncm91cFNlcnZpY2UucmVhdHRhY2hUb0l0ZW1Hcm91cChhZGRlZEl0ZW0sIG9iamVjdC5pdGVtR3JvdXAsIHBvc2l0aW9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYWRkZWRJdGVtIGluc3RhbmNlb2YgV2FsbEl0ZW0pIHtcclxuICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0V2FsbEVkZ2UgPSB0aGlzLl9yb29tU2VydmljZS5nZXRDbG9zZXN0V2FsbEVkZ2UocG9zaXRpb24ueCwgcG9zaXRpb24ueik7XHJcbiAgICAgICAgICAgICAgYWRkZWRJdGVtLnBsYWNlT25FZGdlKGNsb3Nlc3RXYWxsRWRnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgVW5hYmxlIHRvIGdldCBtb2RlbCBmb3IgJHtvYmplY3QuaXRlbV9uYW1lfSBmcm9tIE1vZGVsc1NlcnZpY2VgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHByaXZhdGUgbG9hZElPTkVPYmplY3RzKG9iamVjdHMpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZW1pdChNZXNzYWdlVHlwZS5Mb2FkSU9uZUZ1cm5pdHVyZUZyb21QcmVzZXQsIG9iamVjdHMpO1xyXG4gIC8vIH1cclxuXHJcbiAgcHVibGljIGNvcHlTY2VuZUluc3RhbmNlKHNhdmVBczogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbikgPT4gcmVzb2x2ZSgpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRPYmplY3RzKCk6IGFueSB7XHJcbiAgICBjb25zdCBmdXJuaXR1cmUgPSB0aGlzLl9pdGVtU2VydmljZS5nZXRGdXJuaXR1cmUoKTtcclxuICAgIGNvbnN0IGZ1cm5pdHVyZVRvU2F2ZSA9IGZ1cm5pdHVyZS5tYXAoaXRlbSA9PiB0aGlzLl9pdGVtU2VyaWFsaXphdGlvblNlcnZpY2UuZnVybml0dXJlVG9PYmplY3QoaXRlbSkpO1xyXG4gICAgcmV0dXJuIHtmdXJuaXR1cmU6IGZ1cm5pdHVyZVRvU2F2ZX07XHJcbiAgfVxyXG5cclxuICBoYXNDdXN0b21GdXJuaXR1cmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXN0b21GdXJuaXR1cmVzLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zaG93V2FybmluZyhkYXRhOiBJbmZvRGlhbG9nRGF0YSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oSW5mb0RpYWxvZ0NvbXBvbmVudCwge2RhdGF9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2lzTm9uSU9ORU9iamVjdChvKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoISFvLml0ZW1fc2NoZW1hIHx8IG8uaW9uZSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpc0hhc01vZGVsID0gby5pdGVtX25hbWUgJiYgdGhpcy5fbW9kZWxzU2VydmljZS5oYXNNb2RlbChvLml0ZW1fbmFtZSk7XHJcbiAgICBjb25zdCBpc0N1c3RvbVNoYXBlID0gaXNDdXN0b21TaGFwZVR5cGUoby5pdGVtX3R5cGUpO1xyXG4gICAgcmV0dXJuIGlzSGFzTW9kZWwgfHwgaXNDdXN0b21TaGFwZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2lzSU9ORU9iamVjdChvKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISFvLml0ZW1fc2NoZW1hIHx8IG8uaW9uZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2NyZWF0ZUZhY2VNYXRlcmlhbChvYmplY3Q6IGFueSwgZmFjZTogRmFjZSk6IFByb21pc2U8TWF0ZXJpYWw+IHtcclxuICAgIGxldCBtYXRlcmlhbDogTWF0ZXJpYWw7XHJcbiAgICBpZiAob2JqZWN0LnNraW5bZmFjZV0udGV4dHVyZSkge1xyXG4gICAgICBjb25zdCB0ZXh0dXJlID0gb2JqZWN0LnNraW5bZmFjZV0udGV4dHVyZTtcclxuICAgICAgaWYgKHRleHR1cmUuZGF0YSA9PT0gJzw8YWxsPj4nKSB7XHJcbiAgICAgICAgdGV4dHVyZS5kYXRhID0gb2JqZWN0LnNraW5bRmFjZS5BbGxdLnRleHR1cmUuZGF0YTtcclxuICAgICAgfVxyXG4gICAgICB0ZXh0dXJlLmRpbWVuc2lvbnMgPSBuZXcgVmVjdG9yMih0ZXh0dXJlLndpZHRoLCB0ZXh0dXJlLmhlaWdodCkubXVsdGlwbHlTY2FsYXIoMTAwKTtcclxuICAgICAgbWF0ZXJpYWwgPSBuZXcgTWVzaFBob25nTWF0ZXJpYWwoe1xyXG4gICAgICAgIG1hcDogYXdhaXQgTWF0ZXJpYWxVdGlscy5Gcm9tSW1hZ2UodGV4dHVyZSksXHJcbiAgICAgICAgdHJhbnNwYXJlbnQ6IHRydWVcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBtYXRlcmlhbCA9IG5ldyBNZXNoUGhvbmdNYXRlcmlhbCh7Y29sb3I6IG9iamVjdC5za2luW2ZhY2VdLmNvbG9yfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWF0ZXJpYWw7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8bmctdGVtcGxhdGUgI3Rvb2xiYXJJY29uPlxyXG4gIDxycC10b29sYmFyLWljb25cclxuICAgIG1hdEljb249XCJjb3VjaFwiXHJcbiAgICAob25DbGljayk9XCJzaG93RnVybml0dXJlU2lkZWJhcignaU9ORSBGdXJuaXR1cmUnKVwiXHJcbiAgICB0b29sdGlwPVwie3t0aGlzLmljb25OYW1lLkZ1cm5pdHVyZSB8IGxvY2FsaXplfX1cIlxyXG4gICAgW2Rpc2FibGVkXT1cImlzMmRWaWV3QWN0aXZlIHx8IGlzV2Fsa1Rocm91Z2hWaWV3QWN0aXZlXCJcclxuICAgIFtzaG93TGFiZWxdPVwicGhvbmVTaXplU2NyZWVuXCJcclxuICA+PC9ycC10b29sYmFyLWljb24+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NhdGVnb3JpZXNTaWRlYmFyPlxyXG4gIDxoZWFkZXIgY2xhc3M9XCJkcmF3ZXJfX2hlYWRlclwiPlxyXG4gICAgPGgyIGNsYXNzPVwibWF0LXRpdGxlXCI+e3snQUNDRVNTT0lSRVMnIHwgbG9jYWxpemV9fTwvaDI+XHJcbiAgPC9oZWFkZXI+XHJcbiAgPHJwLWNhdGVnb3J5LWxpYnJhcnlcclxuICAgIFtjYXRlZ29yaWVzXT1cImNhdGVnb3JpZXNcIlxyXG4gICAgKGNhdGVnb3J5Q2xpY2spPVwic2hvd0NhdGVnb3J5KCRldmVudClcIlxyXG4gID5cclxuICA8L3JwLWNhdGVnb3J5LWxpYnJhcnk+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2Z1cm5pdHVyZVNpZGViYXI+XHJcbiAgPGhlYWRlciBjbGFzcz1cImRyYXdlcl9faGVhZGVyXCI+XHJcbiAgICA8IS0tXHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic2hvd0NhdGVnb3JpZXMoKVwiPlxyXG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJob21lZGVjb3JhdG9yLW1hdGVyaWFsLWljb25zXCI+YXJyb3dfYmFja19pb3M8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICAtLT5cclxuICAgIDxoMiBjbGFzcz1cIm1hdC10aXRsZVwiPnt7c2VsZWN0ZWRDYXRlZ29yeS5uYW1lIHwgbG9jYWxpemV9fTwvaDI+XHJcbiAgPC9oZWFkZXI+XHJcbiAgPHAgY2xhc3M9XCJtYXQtYm9keVwiICpuZ0lmPVwic2VsZWN0ZWRDYXRlZ29yeS5kZXNjcmlwdGlvblwiPnt7c2VsZWN0ZWRDYXRlZ29yeS5kZXNjcmlwdGlvbiB8IGxvY2FsaXplfX08L3A+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0N1c3RvbUZ1cm5pdHVyZSgpXCI+XHJcbiAgICA8aDMgY2xhc3M9XCJtYXQtc3ViaGVhZGluZy0yXCI+e3snQ1VTVE9NJyB8IGxvY2FsaXplfX08L2gzPlxyXG4gICAgPHJwLWZ1cm5pdHVyZS1saWJyYXJ5XHJcbiAgICAgIChjbG9zZSk9XCJoaWRlKClcIlxyXG4gICAgICBbZnVybml0dXJlc109XCJjdXN0b21GdXJuaXR1cmVzXCJcclxuICAgICAgKHNldERyYWdnZWQpPVwic2V0RHJhZ2dlZCgkZXZlbnQpXCJcclxuICAgICAgKHJlbGVhc2VEcmFnZ2VkKT1cInJlbGVhc2VEcmFnZ2VkKClcIlxyXG4gICAgICBbY29uc3RydWN0Rm5dPVwiY29uc3RydWN0LmJpbmQodGhpcylcIlxyXG4gICAgPlxyXG4gICAgPC9ycC1mdXJuaXR1cmUtbGlicmFyeT5cclxuICAgIDxoci8+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPGgzIGNsYXNzPVwibWF0LXN1YmhlYWRpbmctMlwiPnt7J0xJQlJBUlknIHwgbG9jYWxpemV9fTwvaDM+XHJcbiAgPHJwLWZ1cm5pdHVyZS1saWJyYXJ5XHJcbiAgICAoY2xvc2UpPVwiaGlkZSgpXCJcclxuICAgIFtmdXJuaXR1cmVzXT1cImxpYnJhcnlGdXJuaXR1cmVzXCJcclxuICAgIChzZXREcmFnZ2VkKT1cInNldERyYWdnZWQoJGV2ZW50KVwiXHJcbiAgICAocmVsZWFzZURyYWdnZWQpPVwicmVsZWFzZURyYWdnZWQoKVwiXHJcbiAgICBbY29uc3RydWN0Rm5dPVwiY29uc3RydWN0LmJpbmQodGhpcylcIlxyXG4gID5cclxuICA8L3JwLWZ1cm5pdHVyZS1saWJyYXJ5PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -142,6 +142,7 @@ export class CustomCylinderCreatorComponent {
142
142
  const geometry = this.shape.customMesh.geometry.clone().scale(origScale.x, origScale.y, origScale.z);
143
143
  geometry.rotateX(-Math.PI / 2);
144
144
  const shapeFloor = new CustomCylinderFloorItem(metadata, new Mesh(geometry, this.shape.customMesh.material));
145
+ shapeFloor.buildFinished();
145
146
  shapeFloor.scaleGeometry(this.shape.scale.x, this.shape.scale.y, this.shape.scale.z);
146
147
  shapeFloor.calculateHalfSize();
147
148
  shapeFloor.skin = this.shape.skin;
@@ -163,6 +164,7 @@ export class CustomCylinderCreatorComponent {
163
164
  const position = this.shape.position.clone();
164
165
  const geometry = this.shape.customMesh.geometry.clone().scale(origScale.x, origScale.y, origScale.z);
165
166
  const shapeWall = new CustomCylinderWallItem(metadata, new Mesh(geometry, this.shape.customMesh.material));
167
+ shapeWall.buildFinished();
166
168
  shapeWall.scaleGeometry(this.shape.scale.x, this.shape.scale.y, this.shape.scale.z);
167
169
  shapeWall.customMesh.geometry.rotateX(Math.PI / 2);
168
170
  shapeWall.calculateHalfSize();
@@ -218,4 +220,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
218
220
  }], ctorParameters: function () { return [{ type: i1.HudService }, { type: i2.SceneService }, { type: i3.ItemService }, { type: i4.RoomService }, { type: i5.SceneEventService }, { type: i6.MessageBusService }]; }, propDecorators: { shape: [{
219
221
  type: Input
220
222
  }] } });
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWN5bGluZGVyLWNyZWF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvcGx1Z2lucy9yb29tLXBsYW5uZXIvY29tcG9uZW50cy9jdXN0b20tY3lsaW5kZXItY3JlYXRvci9jdXN0b20tY3lsaW5kZXItY3JlYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL3Jvb20tcGxhbm5lci9jb21wb25lbnRzL2N1c3RvbS1jeWxpbmRlci1jcmVhdG9yL2N1c3RvbS1jeWxpbmRlci1jcmVhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBQyxNQUFNLE9BQU8sQ0FBQztBQUNoRSxPQUFPLEVBQUMsYUFBYSxFQUFFLElBQUksRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQ3pGLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBUWhGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUMzRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFekQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT3BFLE1BQU0sT0FBTyw4QkFBOEI7SUE2QnpDLFlBQ1UsV0FBdUIsRUFDdkIsYUFBMkIsRUFDM0IsWUFBeUIsRUFDekIsWUFBeUIsRUFDekIsa0JBQXFDLEVBQ3JDLGtCQUFxQztRQUxyQyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQixpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN6QixpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN6Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBQ3JDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFsQy9CLGdCQUFXLEdBQUcsR0FBRyxDQUFDO1FBVTNCLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixpQkFBWSxHQUFTLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDaEMsbUJBQWMsR0FBRyxvQkFBb0IsQ0FBQztRQUN0QyxTQUFJLEdBQVk7WUFDckIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUM7WUFDcEcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUM7WUFDdEcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUM7WUFDakcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUM7U0FDckcsQ0FBQztJQWtCRixDQUFDO0lBaEJELElBQUksYUFBYTtRQUNmLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBWUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxZQUFZLFNBQVMsQ0FBQztRQUNuRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUN0QyxLQUFLLE1BQU0sSUFBSSxJQUFJLGFBQWEsRUFBRTtZQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDO1NBQ3pEO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDNUQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDbEUsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFZO1FBQ2xCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRU0sU0FBUyxDQUFDLE1BQWM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTSxTQUFTLENBQUMsTUFBYztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVNLFlBQVksQ0FBQyxTQUFpQjtRQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFhO1FBQzNCLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ2xDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2FBQzlCO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBRWxDLEtBQUssTUFBTSxJQUFJLElBQUksYUFBYSxFQUFFO2dCQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzthQUNqQztZQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNyQzthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUM5QztRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUN4QyxDQUFDO0lBRVksVUFBVSxDQUFDLE9BQWdCOztZQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDMUMsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ2xDLEtBQUssTUFBTSxJQUFJLElBQUksYUFBYSxFQUFFO29CQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztpQkFDckM7Z0JBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQ3pDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQzthQUNsRDtZQUNELElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QyxDQUFDO0tBQUE7SUFFTSxjQUFjO1FBQ25CLElBQUk7WUFDRixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNyQyxNQUFNLFNBQVMsR0FBWSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFHLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsTUFBTSxRQUFRLG1DQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxLQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsY0FBYyxHQUFDLENBQUM7Z0JBQzdFLFFBQVEsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO2dCQUM5QixRQUFRLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztnQkFDNUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDL0IsTUFBTSxVQUFVLEdBQUcsSUFBSSx1QkFBdUIsQ0FDNUMsUUFBUSxFQUNSLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JGLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUMvQixVQUFVLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNsQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNyRCxJQUFJLFVBQVUsRUFBRTtvQkFDZCxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDdEM7Z0JBQ0QsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUMvQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2FBQzFDO2lCQUFNO2dCQUNMLE1BQU0sUUFBUSxtQ0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLGtCQUFrQixHQUFDLENBQUM7Z0JBQ2pGLFFBQVEsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO2dCQUM5QixRQUFRLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzdDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckcsTUFBTSxTQUFTLEdBQUcsSUFBSSxzQkFBc0IsQ0FDMUMsUUFBUSxFQUNSLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BGLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNuRCxTQUFTLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDOUIsU0FBUyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3JDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JGLFNBQVMsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekMsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FBQzthQUMxQztTQUNGO2dCQUFTO1lBQ1IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDbkU7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLElBQVUsRUFBRSxLQUFhO1FBQzdDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBQyxDQUFDO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksaUJBQWlCLENBQUMsRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRWEsZUFBZSxDQUFDLElBQVUsRUFBRSxPQUFnQjs7WUFDeEQsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMxQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3hDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4RyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksaUJBQWlCLENBQUM7b0JBQ2xGLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO29CQUMzQyxXQUFXLEVBQUUsSUFBSTtvQkFDakIsU0FBUyxFQUFFLEdBQUc7aUJBQ2YsQ0FBQyxDQUFDO2FBQ0o7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUMsQ0FBQztRQUM3QyxDQUFDO0tBQUE7SUFHTyxPQUFPO1FBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUN4QyxDQUFDOzs0SEE3TFUsOEJBQThCO2dIQUE5Qiw4QkFBOEIsMkZDeEIzQyxpMEdBc0ZBOzRGRDlEYSw4QkFBOEI7a0JBTDFDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsV0FBVyxFQUFFLDBDQUEwQztvQkFDdkQsU0FBUyxFQUFFLENBQUMsMENBQTBDLENBQUM7aUJBQ3hEO2dQQUtRLEtBQUs7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtNZXNoLCBNZXNoUGhvbmdNYXRlcmlhbCwgVmVjdG9yMiwgVmVjdG9yM30gZnJvbSAndGhyZWUnO1xyXG5pbXBvcnQge0N5bGluZGVyRmFjZXMsIEZhY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUzZC9tb2RlbC9mYWNlJztcclxuaW1wb3J0IHtDdXN0b21DeWxpbmRlckZsb29ySXRlbX0gZnJvbSAnLi4vLi4vLi4vY29yZTNkL2l0ZW1zL2N1c3RvbS1jeWxpbmRlci1mbG9vci1pdGVtJztcclxuaW1wb3J0IHtDdXN0b21DeWxpbmRlcldhbGxJdGVtfSBmcm9tICcuLi8uLi8uLi9jb3JlM2QvaXRlbXMvY3VzdG9tLWN5bGluZGVyLXdhbGwtaXRlbSc7XHJcbmltcG9ydCB7VGV4dHVyZUVkaXRvck9wdGlvbnN9IGZyb20gJy4uL3RleHR1cmUtZWRpdG9yL3RleHR1cmUtZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7Qm94U2tpbn0gZnJvbSAnLi4vLi4vLi4vY29yZTNkL21vZGVsL3NraW4nO1xyXG5pbXBvcnQge0h1ZFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUzZC9zZXJ2aWNlL2h1ZC5zZXJ2aWNlJztcclxuaW1wb3J0IHtTY2VuZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUzZC9zZXJ2aWNlL3NjZW5lLnNlcnZpY2UnO1xyXG5pbXBvcnQge0l0ZW1TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlM2Qvc2VydmljZS9pdGVtLnNlcnZpY2UnO1xyXG5pbXBvcnQge1Jvb21TZXJ2aWNlfSBmcm9tICcuLi9mbG9vcnBsYW5uZXIvc2VydmljZS9yb29tLnNlcnZpY2UnO1xyXG5pbXBvcnQge1NjZW5lRXZlbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlM2Qvc2VydmljZS9zY2VuZS1ldmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtNZXNzYWdlQnVzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlL21lc3NhZ2UtYnVzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Zsb29ySXRlbX0gZnJvbSAnLi4vLi4vLi4vY29yZTNkL2l0ZW1zL2Zsb29yLWl0ZW0nO1xyXG5pbXBvcnQge0l0ZW1UeXBlfSBmcm9tICcuLi8uLi8uLi9jb3JlM2QvaXRlbXMvaXRlbS10eXBlJztcclxuaW1wb3J0IHtUZXh0dXJlfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL21vZGVsL3RleHR1cmUnO1xyXG5pbXBvcnQge01lc3NhZ2VUeXBlfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL2VudW0vbWVzc2FnZS10eXBlLmVudW0nO1xyXG5pbXBvcnQge01hdGVyaWFsVXRpbHN9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvdXRpbHMvbWF0ZXJpYWwudXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjdXN0b20tY3lsaW5kZXItY3JlYXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1jeWxpbmRlci1jcmVhdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tY3lsaW5kZXItY3JlYXRvci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21DeWxpbmRlckNyZWF0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHB1YmxpYyByZWFkb25seSBzY2FsZUZhY3RvciA9IDEwMDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hhcGU6IEN1c3RvbUN5bGluZGVyRmxvb3JJdGVtIHwgQ3VzdG9tQ3lsaW5kZXJXYWxsSXRlbTtcclxuXHJcbiAgcHVibGljIG5hbWU6IHN0cmluZztcclxuICBwdWJsaWMgaXNGbG9vclR5cGU6IGJvb2xlYW47XHJcbiAgcHVibGljIHJhZGl1czogbnVtYmVyO1xyXG4gIHB1YmxpYyBoZWlnaHQ6IG51bWJlcjtcclxuICBwdWJsaWMgZWxldmF0aW9uOiBudW1iZXI7XHJcbiAgcHVibGljIGZhY2VSZWYgPSBGYWNlO1xyXG4gIHB1YmxpYyBzZWxlY3RlZEZhY2U6IEZhY2UgPSBGYWNlLkZyb250O1xyXG4gIHB1YmxpYyB0ZXh0dXJlT3B0aW9ucyA9IFRleHR1cmVFZGl0b3JPcHRpb25zO1xyXG4gIHB1YmxpYyBza2luOiBCb3hTa2luID0ge1xyXG4gICAgW0ZhY2UuQWxsXToge2NvbG9yOiBudWxsLCB0ZXh0dXJlOiBudWxsLCB3aWR0aDogKCkgPT4gdGhpcy5jaXJjdW1mZXJlbmNlLCBoZWlnaHQ6ICgpID0+IHRoaXMuaGVpZ2h0fSxcclxuICAgIFtGYWNlLkZyb250XToge2NvbG9yOiBudWxsLCB0ZXh0dXJlOiBudWxsLCB3aWR0aDogKCkgPT4gdGhpcy5jaXJjdW1mZXJlbmNlLCBoZWlnaHQ6ICgpID0+IHRoaXMuaGVpZ2h0fSxcclxuICAgIFtGYWNlLlRvcF06IHtjb2xvcjogbnVsbCwgdGV4dHVyZTogbnVsbCwgd2lkdGg6ICgpID0+IHRoaXMuZGlhbWV0ZXIsIGhlaWdodDogKCkgPT4gdGhpcy5kaWFtZXRlcn0sXHJcbiAgICBbRmFjZS5Cb3R0b21dOiB7Y29sb3I6IG51bGwsIHRleHR1cmU6IG51bGwsIHdpZHRoOiAoKSA9PiB0aGlzLmRpYW1ldGVyLCBoZWlnaHQ6ICgpID0+IHRoaXMuZGlhbWV0ZXJ9XHJcbiAgfTtcclxuXHJcbiAgZ2V0IGNpcmN1bWZlcmVuY2UoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiAyICogTWF0aC5QSSAqIHRoaXMucmFkaXVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRpYW1ldGVyKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gMiAqIHRoaXMucmFkaXVzO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9odWRTZXJ2aWNlOiBIdWRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2NlbmVTZXJ2aWNlOiBTY2VuZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9pdGVtU2VydmljZTogSXRlbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9yb29tU2VydmljZTogUm9vbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zY2VuZUV2ZW50U2VydmljZTogU2NlbmVFdmVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9tZXNzYWdlQnVzU2VydmljZTogTWVzc2FnZUJ1c1NlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5uYW1lID0gdGhpcy5zaGFwZS5uYW1lO1xyXG4gICAgdGhpcy5pc0Zsb29yVHlwZSA9IHRoaXMuc2hhcGUgaW5zdGFuY2VvZiBGbG9vckl0ZW07XHJcbiAgICB0aGlzLnJhZGl1cyA9IHRoaXMuc2hhcGUucmFkaXVzO1xyXG4gICAgdGhpcy5oZWlnaHQgPSB0aGlzLnNoYXBlLmhlaWdodDtcclxuICAgIHRoaXMuZWxldmF0aW9uID0gdGhpcy5zaGFwZS5lbGV2YXRpb247XHJcbiAgICBmb3IgKGNvbnN0IGZhY2Ugb2YgQ3lsaW5kZXJGYWNlcykge1xyXG4gICAgICB0aGlzLnNraW5bZmFjZV0uY29sb3IgPSB0aGlzLnNoYXBlLnNraW5bZmFjZV0uY29sb3I7XHJcbiAgICAgIHRoaXMuc2tpbltmYWNlXS50ZXh0dXJlID0gdGhpcy5zaGFwZS5za2luW2ZhY2VdLnRleHR1cmU7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNraW5bRmFjZS5BbGxdLmNvbG9yID0gdGhpcy5zaGFwZS5za2luW0ZhY2UuQWxsXS5jb2xvcjtcclxuICAgIHRoaXMuc2tpbltGYWNlLkFsbF0udGV4dHVyZSA9IHRoaXMuc2hhcGUuc2tpbltGYWNlLkFsbF0udGV4dHVyZTtcclxuICB9XHJcblxyXG4gIHNldE5hbWUobmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5zaGFwZS5uYW1lID0gbmFtZTtcclxuICAgIHRoaXMuc2hhcGUubWV0YWRhdGEuaXRlbU5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5faHVkU2VydmljZS51cGRhdGVTZWxlY3RlZEl0ZW1IdWQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRSYWRpdXMocmFkaXVzOiBudW1iZXIpIHtcclxuICAgIHRoaXMucmFkaXVzID0gcmFkaXVzO1xyXG4gICAgdGhpcy5fcmVzaXplKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0SGVpZ2h0KGhlaWdodDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcclxuICAgIHRoaXMuX3Jlc2l6ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEVsZXZhdGlvbihlbGV2YXRpb246IG51bWJlcikge1xyXG4gICAgdGhpcy5lbGV2YXRpb24gPSBlbGV2YXRpb247XHJcbiAgICB0aGlzLnNoYXBlLnNldEVsZXZhdGlvbihlbGV2YXRpb24pO1xyXG4gICAgdGhpcy5faHVkU2VydmljZS51cGRhdGVTZWxlY3RlZEl0ZW1IdWQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRDb2xvcihjb2xvcjogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZhY2UgPT09IEZhY2UuQWxsKSB7XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuc2tpbikpIHtcclxuICAgICAgICB0aGlzLnNraW5ba2V5XS50ZXh0dXJlID0gbnVsbDtcclxuICAgICAgICB0aGlzLnNraW5ba2V5XS5jb2xvciA9IGNvbG9yO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2tpbltGYWNlLkFsbF0udGV4dHVyZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2tpbltGYWNlLkFsbF0uY29sb3IgPSBjb2xvcjtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgZmFjZSBvZiBDeWxpbmRlckZhY2VzKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0U2tpbkNvbG9yKGZhY2UsIGNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9zZXRTa2luQ29sb3IoRmFjZS5BbGwsIGNvbG9yKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2tpblt0aGlzLnNlbGVjdGVkRmFjZV0udGV4dHVyZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2tpblt0aGlzLnNlbGVjdGVkRmFjZV0uY29sb3IgPSBjb2xvcjtcclxuICAgICAgdGhpcy5fc2V0U2tpbkNvbG9yKHRoaXMuc2VsZWN0ZWRGYWNlLCBjb2xvcik7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zY2VuZVNlcnZpY2UubmVlZHNSZW5kZXIgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNldFRleHR1cmUodGV4dHVyZTogVGV4dHVyZSkge1xyXG4gICAgdGhpcy5za2luW3RoaXMuc2VsZWN0ZWRGYWNlXS50ZXh0dXJlID0gdGV4dHVyZTtcclxuICAgIHRoaXMuc2tpblt0aGlzLnNlbGVjdGVkRmFjZV0uY29sb3IgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGYWNlID09PSBGYWNlLkFsbCkge1xyXG4gICAgICBmb3IgKGNvbnN0IGZhY2Ugb2YgQ3lsaW5kZXJGYWNlcykge1xyXG4gICAgICAgIHRoaXMuX3NldFNraW5UZXh0dXJlKGZhY2UsIHRleHR1cmUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX3NldFNraW5UZXh0dXJlKEZhY2UuQWxsLCB0ZXh0dXJlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3NldFNraW5UZXh0dXJlKHRoaXMuc2VsZWN0ZWRGYWNlLCB0ZXh0dXJlKTtcclxuICAgIH1cclxuICAgIHRoaXMuX3NjZW5lU2VydmljZS5uZWVkc1JlbmRlciA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9nZ2xlSXRlbVR5cGUoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLl9tZXNzYWdlQnVzU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLkJsb2NrTGVmdFNpZGViYXIsIHRydWUpO1xyXG4gICAgICB0aGlzLmlzRmxvb3JUeXBlID0gIXRoaXMuaXNGbG9vclR5cGU7XHJcbiAgICAgIGNvbnN0IG9yaWdTY2FsZTogVmVjdG9yMyA9IG5ldyBWZWN0b3IzKDEsIDEsIDEpLmRpdmlkZSh0aGlzLnNoYXBlLm1ldGFkYXRhLnNjYWxlIHx8IG5ldyBWZWN0b3IzKDEsIDEsIDEpKTtcclxuICAgICAgaWYgKHRoaXMuaXNGbG9vclR5cGUpIHtcclxuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHsuLi50aGlzLnNoYXBlLm1ldGFkYXRhLCBpdGVtVHlwZTogSXRlbVR5cGUuQ3VzdG9tQ3lsaW5kZXJ9O1xyXG4gICAgICAgIG1ldGFkYXRhLnBvc2l0aW9uID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIG1ldGFkYXRhLmNlbnRlclBpdm90ID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBnZW9tZXRyeSA9IHRoaXMuc2hhcGUuY3VzdG9tTWVzaC5nZW9tZXRyeS5jbG9uZSgpLnNjYWxlKG9yaWdTY2FsZS54LCBvcmlnU2NhbGUueSwgb3JpZ1NjYWxlLnopO1xyXG4gICAgICAgIGdlb21ldHJ5LnJvdGF0ZVgoLU1hdGguUEkgLyAyKTtcclxuICAgICAgICBjb25zdCBzaGFwZUZsb29yID0gbmV3IEN1c3RvbUN5bGluZGVyRmxvb3JJdGVtKFxyXG4gICAgICAgICAgbWV0YWRhdGEsXHJcbiAgICAgICAgICBuZXcgTWVzaChnZW9tZXRyeSwgdGhpcy5zaGFwZS5jdXN0b21NZXNoLm1hdGVyaWFsKSk7XHJcbiAgICAgICAgc2hhcGVGbG9vci5zY2FsZUdlb21ldHJ5KHRoaXMuc2hhcGUuc2NhbGUueCwgdGhpcy5zaGFwZS5zY2FsZS55LCB0aGlzLnNoYXBlLnNjYWxlLnopO1xyXG4gICAgICAgIHNoYXBlRmxvb3IuY2FsY3VsYXRlSGFsZlNpemUoKTtcclxuICAgICAgICBzaGFwZUZsb29yLnNraW4gPSB0aGlzLnNoYXBlLnNraW47XHJcbiAgICAgICAgY29uc3Qgcm9vbUNlbnRlciA9IHRoaXMuX3Jvb21TZXJ2aWNlLmdldFJvb21DZW50ZXIoKTtcclxuICAgICAgICBpZiAocm9vbUNlbnRlcikge1xyXG4gICAgICAgICAgc2hhcGVGbG9vci5wb3NpdGlvbi5jb3B5KHJvb21DZW50ZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzaGFwZUZsb29yLnBvc2l0aW9uLnkgPSBzaGFwZUZsb29yLmdldEZsb29yWSgpO1xyXG4gICAgICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLmFkZEl0ZW0oc2hhcGVGbG9vcik7XHJcbiAgICAgICAgdGhpcy5faXRlbVNlcnZpY2UucmVtb3ZlSXRlbSh0aGlzLnNoYXBlKTtcclxuICAgICAgICB0aGlzLnNoYXBlID0gc2hhcGVGbG9vcjtcclxuICAgICAgICB0aGlzLl9zY2VuZUV2ZW50U2VydmljZS5zZXRTZWxlY3RlZE9iamVjdCh0aGlzLnNoYXBlKTtcclxuICAgICAgICB0aGlzLl9odWRTZXJ2aWNlLnVwZGF0ZVNlbGVjdGVkSXRlbUh1ZCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gey4uLnRoaXMuc2hhcGUubWV0YWRhdGEsIGl0ZW1UeXBlOiBJdGVtVHlwZS5DdXN0b21DeWxpbmRlcldhbGx9O1xyXG4gICAgICAgIG1ldGFkYXRhLnBvc2l0aW9uID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIG1ldGFkYXRhLmNlbnRlclBpdm90ID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLnNoYXBlLnBvc2l0aW9uLmNsb25lKCk7XHJcbiAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSB0aGlzLnNoYXBlLmN1c3RvbU1lc2guZ2VvbWV0cnkuY2xvbmUoKS5zY2FsZShvcmlnU2NhbGUueCwgb3JpZ1NjYWxlLnksIG9yaWdTY2FsZS56KTtcclxuICAgICAgICBjb25zdCBzaGFwZVdhbGwgPSBuZXcgQ3VzdG9tQ3lsaW5kZXJXYWxsSXRlbShcclxuICAgICAgICAgIG1ldGFkYXRhLFxyXG4gICAgICAgICAgbmV3IE1lc2goZ2VvbWV0cnksIHRoaXMuc2hhcGUuY3VzdG9tTWVzaC5tYXRlcmlhbCkpO1xyXG4gICAgICAgIHNoYXBlV2FsbC5zY2FsZUdlb21ldHJ5KHRoaXMuc2hhcGUuc2NhbGUueCwgdGhpcy5zaGFwZS5zY2FsZS55LCB0aGlzLnNoYXBlLnNjYWxlLnopO1xyXG4gICAgICAgIHNoYXBlV2FsbC5jdXN0b21NZXNoLmdlb21ldHJ5LnJvdGF0ZVgoTWF0aC5QSSAvIDIpO1xyXG4gICAgICAgIHNoYXBlV2FsbC5jYWxjdWxhdGVIYWxmU2l6ZSgpO1xyXG4gICAgICAgIHNoYXBlV2FsbC5za2luID0gdGhpcy5zaGFwZS5za2luO1xyXG4gICAgICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLmFkZEl0ZW0oc2hhcGVXYWxsKTtcclxuICAgICAgICBjb25zdCBjbG9zZXN0V2FsbEVkZ2UgPSB0aGlzLl9yb29tU2VydmljZS5nZXRDbG9zZXN0V2FsbEVkZ2UocG9zaXRpb24ueCwgcG9zaXRpb24ueik7XHJcbiAgICAgICAgc2hhcGVXYWxsLnBsYWNlT25FZGdlKGNsb3Nlc3RXYWxsRWRnZSk7XHJcbiAgICAgICAgdGhpcy5faXRlbVNlcnZpY2UucmVtb3ZlSXRlbSh0aGlzLnNoYXBlKTtcclxuICAgICAgICB0aGlzLnNoYXBlID0gc2hhcGVXYWxsO1xyXG4gICAgICAgIHRoaXMuX3NjZW5lRXZlbnRTZXJ2aWNlLnNldFNlbGVjdGVkT2JqZWN0KHRoaXMuc2hhcGUpO1xyXG4gICAgICAgIHRoaXMuX2h1ZFNlcnZpY2UudXBkYXRlU2VsZWN0ZWRJdGVtSHVkKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMuX21lc3NhZ2VCdXNTZXJ2aWNlLmVtaXQoTWVzc2FnZVR5cGUuQmxvY2tMZWZ0U2lkZWJhciwgZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0U2tpbkNvbG9yKGZhY2U6IEZhY2UsIGNvbG9yOiBudW1iZXIpIHtcclxuICAgIHRoaXMuc2hhcGUuc2tpbltmYWNlXSA9IHtjb2xvcjogY29sb3J9O1xyXG4gICAgY29uc3QgaW5kZXggPSBDeWxpbmRlckZhY2VzLmluZGV4T2YoZmFjZSk7XHJcbiAgICB0aGlzLnNoYXBlLmN1c3RvbU1lc2gubWF0ZXJpYWxbaW5kZXhdID0gbmV3IE1lc2hQaG9uZ01hdGVyaWFsKHtjb2xvcjogY29sb3J9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX3NldFNraW5UZXh0dXJlKGZhY2U6IEZhY2UsIHRleHR1cmU6IFRleHR1cmUpIHtcclxuICAgIGlmICh0ZXh0dXJlKSB7XHJcbiAgICAgIHRleHR1cmUuaGVpZ2h0ID0gdGhpcy5za2luW2ZhY2VdLmhlaWdodCgpO1xyXG4gICAgICB0ZXh0dXJlLndpZHRoID0gdGhpcy5za2luW2ZhY2VdLndpZHRoKCk7XHJcbiAgICAgIHRleHR1cmUuZGltZW5zaW9ucyA9IG5ldyBWZWN0b3IyKHRoaXMuc2tpbltmYWNlXS53aWR0aCgpLCB0aGlzLnNraW5bZmFjZV0uaGVpZ2h0KCkpLm11bHRpcGx5U2NhbGFyKDEwMCk7XHJcbiAgICAgIHRoaXMuc2hhcGUuY3VzdG9tTWVzaC5tYXRlcmlhbFtDeWxpbmRlckZhY2VzLmluZGV4T2YoZmFjZSldID0gbmV3IE1lc2hQaG9uZ01hdGVyaWFsKHtcclxuICAgICAgICBtYXA6IGF3YWl0IE1hdGVyaWFsVXRpbHMuRnJvbUltYWdlKHRleHR1cmUpLFxyXG4gICAgICAgIHRyYW5zcGFyZW50OiB0cnVlLFxyXG4gICAgICAgIGFscGhhVGVzdDogMC41XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zaGFwZS5za2luW2ZhY2VdID0ge3RleHR1cmU6IHRleHR1cmV9O1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgX3Jlc2l6ZSgpIHtcclxuICAgIHRoaXMuc2hhcGUucmVzaXplKHRoaXMucmFkaXVzLCB0aGlzLmhlaWdodCk7XHJcbiAgICB0aGlzLl9odWRTZXJ2aWNlLnVwZGF0ZVNlbGVjdGVkSXRlbUh1ZCgpO1xyXG4gICAgdGhpcy5fc2NlbmVTZXJ2aWNlLm5lZWRzUmVuZGVyID0gdHJ1ZTtcclxuICB9XHJcbn1cclxuIiwiPHNlY3Rpb24+XHJcbiAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJhdXRvIGNlbnRlclwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGZ4RmxleD1cImdyb3dcIj5cclxuICAgICAgPGlucHV0IG1hdElucHV0ICNuYW1lSW5wdXRSZWZcclxuICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3snU0hBUEVTX05BTUUnIHwgbG9jYWxpemV9fVwiXHJcbiAgICAgICAgICAgICBbdmFsdWVdPVwibmFtZVwiXHJcbiAgICAgID5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibmFtZSA9PT0gbmFtZUlucHV0UmVmLnZhbHVlXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNldE5hbWUobmFtZUlucHV0UmVmLnZhbHVlKVwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnMgc2l6ZS0xNlwiPmNoZWNrPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm5hbWUgPT09IG5hbWVJbnB1dFJlZi52YWx1ZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJuYW1lSW5wdXRSZWYudmFsdWUgPSBuYW1lXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaG9tZWRlY29yYXRvci1tYXRlcmlhbC1pY29ucyBzaXplLTE2XCI+Y2FuY2VsPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCIgY2xhc3M9XCJzd2l0Y2hlclwiPlxyXG4gICAgPGgyIGNsYXNzPVwibWF0LWJvZHktMlwiPnt7aXNGbG9vclR5cGUgPyAoJ0ZMT09SJyB8IGxvY2FsaXplKSA6ICgnV0FMTCcgfCBsb2NhbGl6ZSl9fTwvaDI+XHJcbiAgICA8bWF0LXNsaWRlLXRvZ2dsZVxyXG4gICAgICBbY2hlY2tlZF09XCJpc0Zsb29yVHlwZVwiXHJcbiAgICAgIChjaGFuZ2UpPVwidG9nZ2xlSXRlbVR5cGUoKVwiXHJcbiAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcclxuICAgID5cclxuICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGgzIGNsYXNzPVwibWF0LXN1YmhlYWRpbmctMlwiPiB7eyAnTUVBU1VSRU1FTlRTJyB8IGxvY2FsaXplfX08L2gzPlxyXG4gIDxkaXY+XHJcbiAgICA8cnAtZGltZW5zaW9uLWlucHV0XHJcbiAgICAgIHRpdGxlPVwie3snUkFESVVTJyB8IGxvY2FsaXplfX1cIlxyXG4gICAgICBbc291cmNlVmFsdWVdPVwicmFkaXVzICogc2NhbGVGYWN0b3JcIlxyXG4gICAgICBbbWluVmFsdWVdPVwiMFwiXHJcbiAgICAgIChkaW1lbnNpb25DaGFuZ2VkKT1cInNldFJhZGl1cygkZXZlbnQgLyBzY2FsZUZhY3RvcilcIlxyXG4gICAgPlxyXG4gICAgPC9ycC1kaW1lbnNpb24taW5wdXQ+XHJcblxyXG4gICAgPHJwLWRpbWVuc2lvbi1pbnB1dFxyXG4gICAgICB0aXRsZT1cInt7J0hFSUdIVCcgfCBsb2NhbGl6ZX19XCJcclxuICAgICAgW3NvdXJjZVZhbHVlXT1cImhlaWdodCAqIHNjYWxlRmFjdG9yXCJcclxuICAgICAgW21pblZhbHVlXT1cIjBcIlxyXG4gICAgICAoZGltZW5zaW9uQ2hhbmdlZCk9XCJzZXRIZWlnaHQoJGV2ZW50IC8gc2NhbGVGYWN0b3IpXCJcclxuICAgID5cclxuICAgIDwvcnAtZGltZW5zaW9uLWlucHV0PlxyXG5cclxuICAgIDxycC1kaW1lbnNpb24taW5wdXRcclxuICAgICAgKm5nSWY9XCJpc0Zsb29yVHlwZVwiXHJcbiAgICAgIHRpdGxlPVwie3snRUxFVkFUSU9OJyB8IGxvY2FsaXplfX1cIlxyXG4gICAgICBbc291cmNlVmFsdWVdPVwiZWxldmF0aW9uICogc2NhbGVGYWN0b3JcIlxyXG4gICAgICBbbWluVmFsdWVdPVwiMFwiXHJcbiAgICAgIChkaW1lbnNpb25DaGFuZ2VkKT1cInNldEVsZXZhdGlvbigkZXZlbnQgLyBzY2FsZUZhY3RvcilcIlxyXG4gICAgPlxyXG4gICAgPC9ycC1kaW1lbnNpb24taW5wdXQ+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXY+XHJcbiAgICA8aDMgY2xhc3M9XCJtYXQtc3ViaGVhZGluZy0yXCI+IHt7ICdURVhUVVJFUycgfCBsb2NhbGl6ZX19PC9oMz5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZhY2Utc2VsZWN0LWZvcm1cIj5cclxuICAgICAgPG1hdC1sYWJlbD57e1wiU0VMRUNUX0ZBQ0VcIiB8IGxvY2FsaXplfX08L21hdC1sYWJlbD5cclxuICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEZhY2VcIj5cclxuICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiZmFjZVJlZi5BbGxcIj57eyAnQUxMJyB8IGxvY2FsaXplIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJmYWNlUmVmLlRvcFwiPnt7ICdUT1AnIHwgbG9jYWxpemUgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cImZhY2VSZWYuQm90dG9tXCI+e3sgJ0JPVFRPTScgfCBsb2NhbGl6ZSB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiZmFjZVJlZi5Gcm9udFwiPnt7ICdGUk9OVCcgfCBsb2NhbGl6ZSB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICA8cnAtYXBwZWFyYW5jZS1zZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlVGV4dHVyZVRhYl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInNraW5bc2VsZWN0ZWRGYWNlXS5jb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFpblRleHR1cmVdPVwic2tpbltzZWxlY3RlZEZhY2VdLnRleHR1cmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbcGhvdG9PcHRpb25zXT1cInRleHR1cmVPcHRpb25zLlRpbGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RleHR1cmVXaWR0aF09XCJza2luW3NlbGVjdGVkRmFjZV0ud2lkdGgoKSAqIDEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0dXJlSGVpZ2h0XT1cInNraW5bc2VsZWN0ZWRGYWNlXS5oZWlnaHQoKSAqIDEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRUZXh0dXJlKT1cInNldFRleHR1cmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRDb2xvcik9XCJzZXRDb2xvcigkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvcnAtYXBwZWFyYW5jZS1zZWN0aW9uPlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcbiJdfQ==
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWN5bGluZGVyLWNyZWF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvcGx1Z2lucy9yb29tLXBsYW5uZXIvY29tcG9uZW50cy9jdXN0b20tY3lsaW5kZXItY3JlYXRvci9jdXN0b20tY3lsaW5kZXItY3JlYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL3Jvb20tcGxhbm5lci9jb21wb25lbnRzL2N1c3RvbS1jeWxpbmRlci1jcmVhdG9yL2N1c3RvbS1jeWxpbmRlci1jcmVhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBQyxNQUFNLE9BQU8sQ0FBQztBQUNoRSxPQUFPLEVBQUMsYUFBYSxFQUFFLElBQUksRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQ3pGLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBUWhGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUMzRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFekQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT3BFLE1B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Q0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUN4QyxDQUFDOzs0SEEvTFUsOEJBQThCO2dIQUE5Qiw4QkFBOEIsMkZDeEIzQyxpMEdBc0ZBOzRGRDlEYSw4QkFBOEI7a0JBTDFDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsV0FBVyxFQUFFLDBDQUEwQztvQkFDdkQsU0FBUyxFQUFFLENBQUMsMENBQTBDLENBQUM7aUJBQ3hEO2dQQUtRLEtBQUs7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtNZXNoLCBNZXNoUGhvbmdNYXRlcmlhbCwgVmVjdG9yMiwgVmVjdG9yM30gZnJvbSAndGhyZWUnO1xyXG5pbXBvcnQge0N5bGluZGVyRmFjZXMsIEZhY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUzZC9tb2RlbC9mYWNlJztcclxuaW1wb3J0IHtDdXN0b21DeWxpbmRlckZsb29ySXRlbX0gZnJvbSAnLi4vLi4vLi4vY29yZTNkL2l0ZW1zL2N1c3RvbS1jeWxpbmRlci1mbG9vci1pdGVtJztcclxuaW1wb3J0IHtDdXN0b21DeWxpbmRlcldhbGxJdGVtfSBmcm9tICcuLi8uLi8uLi9jb3JlM2QvaXRlbXMvY3VzdG9tLWN5bGluZGVyLXdhbGwtaXRlbSc7XHJcbmltcG9ydCB7VGV4dHVyZUVkaXRvck9wdGlvbnN9IGZyb20gJy4uL3RleHR1cmUtZWRpdG9yL3RleHR1cmUtZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7Qm94U2tpbn0gZnJvbSAnLi4vLi4vLi4vY29yZTNkL21vZGVsL3NraW4nO1xyXG5pbXBvcnQge0h1ZFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUzZC9zZXJ2aWNlL2h1ZC5zZXJ2aWNlJztcclxuaW1wb3J0IHtTY2VuZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUzZC9zZXJ2aWNlL3NjZW5lLnNlcnZpY2UnO1xyXG5pbXBvcnQge0l0ZW1TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlM2Qvc2VydmljZS9pdGVtLnNlcnZpY2UnO1xyXG5pbXBvcnQge1Jvb21TZXJ2aWNlfSBmcm9tICcuLi9mbG9vcnBsYW5uZXIvc2VydmljZS9yb29tLnNlcnZpY2UnO1xyXG5pbXBvcnQge1NjZW5lRXZlbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlM2Qvc2VydmljZS9zY2VuZS1ldmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtNZXNzYWdlQnVzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlL21lc3NhZ2UtYnVzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Zsb29ySXRlbX0gZnJvbSAnLi4vLi4vLi4vY29yZTNkL2l0ZW1zL2Zsb29yLWl0ZW0nO1xyXG5pbXBvcnQge0l0ZW1UeXBlfSBmcm9tICcuLi8uLi8uLi9jb3JlM2QvaXRlbXMvaXRlbS10eXBlJztcclxuaW1wb3J0IHtUZXh0dXJlfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL21vZGVsL3RleHR1cmUnO1xyXG5pbXBvcnQge01lc3NhZ2VUeXBlfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL2VudW0vbWVzc2FnZS10eXBlLmVudW0nO1xyXG5pbXBvcnQge01hdGVyaWFsVXRpbHN9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvdXRpbHMvbWF0ZXJpYWwudXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjdXN0b20tY3lsaW5kZXItY3JlYXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1jeWxpbmRlci1jcmVhdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tY3lsaW5kZXItY3JlYXRvci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21DeWxpbmRlckNyZWF0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHB1YmxpYyByZWFkb25seSBzY2FsZUZhY3RvciA9IDEwMDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hhcGU6IEN1c3RvbUN5bGluZGVyRmxvb3JJdGVtIHwgQ3VzdG9tQ3lsaW5kZXJXYWxsSXRlbTtcclxuXHJcbiAgcHVibGljIG5hbWU6IHN0cmluZztcclxuICBwdWJsaWMgaXNGbG9vclR5cGU6IGJvb2xlYW47XHJcbiAgcHVibGljIHJhZGl1czogbnVtYmVyO1xyXG4gIHB1YmxpYyBoZWlnaHQ6IG51bWJlcjtcclxuICBwdWJsaWMgZWxldmF0aW9uOiBudW1iZXI7XHJcbiAgcHVibGljIGZhY2VSZWYgPSBGYWNlO1xyXG4gIHB1YmxpYyBzZWxlY3RlZEZhY2U6IEZhY2UgPSBGYWNlLkZyb250O1xyXG4gIHB1YmxpYyB0ZXh0dXJlT3B0aW9ucyA9IFRleHR1cmVFZGl0b3JPcHRpb25zO1xyXG4gIHB1YmxpYyBza2luOiBCb3hTa2luID0ge1xyXG4gICAgW0ZhY2UuQWxsXToge2NvbG9yOiBudWxsLCB0ZXh0dXJlOiBudWxsLCB3aWR0aDogKCkgPT4gdGhpcy5jaXJjdW1mZXJlbmNlLCBoZWlnaHQ6ICgpID0+IHRoaXMuaGVpZ2h0fSxcclxuICAgIFtGYWNlLkZyb250XToge2NvbG9yOiBudWxsLCB0ZXh0dXJlOiBudWxsLCB3aWR0aDogKCkgPT4gdGhpcy5jaXJjdW1mZXJlbmNlLCBoZWlnaHQ6ICgpID0+IHRoaXMuaGVpZ2h0fSxcclxuICAgIFtGYWNlLlRvcF06IHtjb2xvcjogbnVsbCwgdGV4dHVyZTogbnVsbCwgd2lkdGg6ICgpID0+IHRoaXMuZGlhbWV0ZXIsIGhlaWdodDogKCkgPT4gdGhpcy5kaWFtZXRlcn0sXHJcbiAgICBbRmFjZS5Cb3R0b21dOiB7Y29sb3I6IG51bGwsIHRleHR1cmU6IG51bGwsIHdpZHRoOiAoKSA9PiB0aGlzLmRpYW1ldGVyLCBoZWlnaHQ6ICgpID0+IHRoaXMuZGlhbWV0ZXJ9XHJcbiAgfTtcclxuXHJcbiAgZ2V0IGNpcmN1bWZlcmVuY2UoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiAyICogTWF0aC5QSSAqIHRoaXMucmFkaXVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRpYW1ldGVyKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gMiAqIHRoaXMucmFkaXVzO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9odWRTZXJ2aWNlOiBIdWRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2NlbmVTZXJ2aWNlOiBTY2VuZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9pdGVtU2VydmljZTogSXRlbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9yb29tU2VydmljZTogUm9vbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zY2VuZUV2ZW50U2VydmljZTogU2NlbmVFdmVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9tZXNzYWdlQnVzU2VydmljZTogTWVzc2FnZUJ1c1NlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5uYW1lID0gdGhpcy5zaGFwZS5uYW1lO1xyXG4gICAgdGhpcy5pc0Zsb29yVHlwZSA9IHRoaXMuc2hhcGUgaW5zdGFuY2VvZiBGbG9vckl0ZW07XHJcbiAgICB0aGlzLnJhZGl1cyA9IHRoaXMuc2hhcGUucmFkaXVzO1xyXG4gICAgdGhpcy5oZWlnaHQgPSB0aGlzLnNoYXBlLmhlaWdodDtcclxuICAgIHRoaXMuZWxldmF0aW9uID0gdGhpcy5zaGFwZS5lbGV2YXRpb247XHJcbiAgICBmb3IgKGNvbnN0IGZhY2Ugb2YgQ3lsaW5kZXJGYWNlcykge1xyXG4gICAgICB0aGlzLnNraW5bZmFjZV0uY29sb3IgPSB0aGlzLnNoYXBlLnNraW5bZmFjZV0uY29sb3I7XHJcbiAgICAgIHRoaXMuc2tpbltmYWNlXS50ZXh0dXJlID0gdGhpcy5zaGFwZS5za2luW2ZhY2VdLnRleHR1cmU7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNraW5bRmFjZS5BbGxdLmNvbG9yID0gdGhpcy5zaGFwZS5za2luW0ZhY2UuQWxsXS5jb2xvcjtcclxuICAgIHRoaXMuc2tpbltGYWNlLkFsbF0udGV4dHVyZSA9IHRoaXMuc2hhcGUuc2tpbltGYWNlLkFsbF0udGV4dHVyZTtcclxuICB9XHJcblxyXG4gIHNldE5hbWUobmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5zaGFwZS5uYW1lID0gbmFtZTtcclxuICAgIHRoaXMuc2hhcGUubWV0YWRhdGEuaXRlbU5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5faHVkU2VydmljZS51cGRhdGVTZWxlY3RlZEl0ZW1IdWQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRSYWRpdXMocmFkaXVzOiBudW1iZXIpIHtcclxuICAgIHRoaXMucmFkaXVzID0gcmFkaXVzO1xyXG4gICAgdGhpcy5fcmVzaXplKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0SGVpZ2h0KGhlaWdodDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcclxuICAgIHRoaXMuX3Jlc2l6ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEVsZXZhdGlvbihlbGV2YXRpb246IG51bWJlcikge1xyXG4gICAgdGhpcy5lbGV2YXRpb24gPSBlbGV2YXRpb247XHJcbiAgICB0aGlzLnNoYXBlLnNldEVsZXZhdGlvbihlbGV2YXRpb24pO1xyXG4gICAgdGhpcy5faHVkU2VydmljZS51cGRhdGVTZWxlY3RlZEl0ZW1IdWQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRDb2xvcihjb2xvcjogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZhY2UgPT09IEZhY2UuQWxsKSB7XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuc2tpbikpIHtcclxuICAgICAgICB0aGlzLnNraW5ba2V5XS50ZXh0dXJlID0gbnVsbDtcclxuICAgICAgICB0aGlzLnNraW5ba2V5XS5jb2xvciA9IGNvbG9yO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2tpbltGYWNlLkFsbF0udGV4dHVyZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2tpbltGYWNlLkFsbF0uY29sb3IgPSBjb2xvcjtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgZmFjZSBvZiBDeWxpbmRlckZhY2VzKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0U2tpbkNvbG9yKGZhY2UsIGNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9zZXRTa2luQ29sb3IoRmFjZS5BbGwsIGNvbG9yKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2tpblt0aGlzLnNlbGVjdGVkRmFjZV0udGV4dHVyZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2tpblt0aGlzLnNlbGVjdGVkRmFjZV0uY29sb3IgPSBjb2xvcjtcclxuICAgICAgdGhpcy5fc2V0U2tpbkNvbG9yKHRoaXMuc2VsZWN0ZWRGYWNlLCBjb2xvcik7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zY2VuZVNlcnZpY2UubmVlZHNSZW5kZXIgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNldFRleHR1cmUodGV4dHVyZTogVGV4dHVyZSkge1xyXG4gICAgdGhpcy5za2luW3RoaXMuc2VsZWN0ZWRGYWNlXS50ZXh0dXJlID0gdGV4dHVyZTtcclxuICAgIHRoaXMuc2tpblt0aGlzLnNlbGVjdGVkRmFjZV0uY29sb3IgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGYWNlID09PSBGYWNlLkFsbCkge1xyXG4gICAgICBmb3IgKGNvbnN0IGZhY2Ugb2YgQ3lsaW5kZXJGYWNlcykge1xyXG4gICAgICAgIHRoaXMuX3NldFNraW5UZXh0dXJlKGZhY2UsIHRleHR1cmUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX3NldFNraW5UZXh0dXJlKEZhY2UuQWxsLCB0ZXh0dXJlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3NldFNraW5UZXh0dXJlKHRoaXMuc2VsZWN0ZWRGYWNlLCB0ZXh0dXJlKTtcclxuICAgIH1cclxuICAgIHRoaXMuX3NjZW5lU2VydmljZS5uZWVkc1JlbmRlciA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9nZ2xlSXRlbVR5cGUoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLl9tZXNzYWdlQnVzU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLkJsb2NrTGVmdFNpZGViYXIsIHRydWUpO1xyXG4gICAgICB0aGlzLmlzRmxvb3JUeXBlID0gIXRoaXMuaXNGbG9vclR5cGU7XHJcbiAgICAgIGNvbnN0IG9yaWdTY2FsZTogVmVjdG9yMyA9IG5ldyBWZWN0b3IzKDEsIDEsIDEpLmRpdmlkZSh0aGlzLnNoYXBlLm1ldGFkYXRhLnNjYWxlIHx8IG5ldyBWZWN0b3IzKDEsIDEsIDEpKTtcclxuICAgICAgaWYgKHRoaXMuaXNGbG9vclR5cGUpIHtcclxuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHsuLi50aGlzLnNoYXBlLm1ldGFkYXRhLCBpdGVtVHlwZTogSXRlbVR5cGUuQ3VzdG9tQ3lsaW5kZXJ9O1xyXG4gICAgICAgIG1ldGFkYXRhLnBvc2l0aW9uID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIG1ldGFkYXRhLmNlbnRlclBpdm90ID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBnZW9tZXRyeSA9IHRoaXMuc2hhcGUuY3VzdG9tTWVzaC5nZW9tZXRyeS5jbG9uZSgpLnNjYWxlKG9yaWdTY2FsZS54LCBvcmlnU2NhbGUueSwgb3JpZ1NjYWxlLnopO1xyXG4gICAgICAgIGdlb21ldHJ5LnJvdGF0ZVgoLU1hdGguUEkgLyAyKTtcclxuICAgICAgICBjb25zdCBzaGFwZUZsb29yOiBDdXN0b21DeWxpbmRlckZsb29ySXRlbSA9IG5ldyBDdXN0b21DeWxpbmRlckZsb29ySXRlbShcclxuICAgICAgICAgIG1ldGFkYXRhLFxyXG4gICAgICAgICAgbmV3IE1lc2goZ2VvbWV0cnksIHRoaXMuc2hhcGUuY3VzdG9tTWVzaC5tYXRlcmlhbCkpO1xyXG4gICAgICAgIHNoYXBlRmxvb3IuYnVpbGRGaW5pc2hlZCgpO1xyXG4gICAgICAgIHNoYXBlRmxvb3Iuc2NhbGVHZW9tZXRyeSh0aGlzLnNoYXBlLnNjYWxlLngsIHRoaXMuc2hhcGUuc2NhbGUueSwgdGhpcy5zaGFwZS5zY2FsZS56KTtcclxuICAgICAgICBzaGFwZUZsb29yLmNhbGN1bGF0ZUhhbGZTaXplKCk7XHJcbiAgICAgICAgc2hhcGVGbG9vci5za2luID0gdGhpcy5zaGFwZS5za2luO1xyXG4gICAgICAgIGNvbnN0IHJvb21DZW50ZXIgPSB0aGlzLl9yb29tU2VydmljZS5nZXRSb29tQ2VudGVyKCk7XHJcbiAgICAgICAgaWYgKHJvb21DZW50ZXIpIHtcclxuICAgICAgICAgIHNoYXBlRmxvb3IucG9zaXRpb24uY29weShyb29tQ2VudGVyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2hhcGVGbG9vci5wb3NpdGlvbi55ID0gc2hhcGVGbG9vci5nZXRGbG9vclkoKTtcclxuICAgICAgICB0aGlzLl9pdGVtU2VydmljZS5hZGRJdGVtKHNoYXBlRmxvb3IpO1xyXG4gICAgICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLnJlbW92ZUl0ZW0odGhpcy5zaGFwZSk7XHJcbiAgICAgICAgdGhpcy5zaGFwZSA9IHNoYXBlRmxvb3I7XHJcbiAgICAgICAgdGhpcy5fc2NlbmVFdmVudFNlcnZpY2Uuc2V0U2VsZWN0ZWRPYmplY3QodGhpcy5zaGFwZSk7XHJcbiAgICAgICAgdGhpcy5faHVkU2VydmljZS51cGRhdGVTZWxlY3RlZEl0ZW1IdWQoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHsuLi50aGlzLnNoYXBlLm1ldGFkYXRhLCBpdGVtVHlwZTogSXRlbVR5cGUuQ3VzdG9tQ3lsaW5kZXJXYWxsfTtcclxuICAgICAgICBtZXRhZGF0YS5wb3NpdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgICAgICBtZXRhZGF0YS5jZW50ZXJQaXZvdCA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5zaGFwZS5wb3NpdGlvbi5jbG9uZSgpO1xyXG4gICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gdGhpcy5zaGFwZS5jdXN0b21NZXNoLmdlb21ldHJ5LmNsb25lKCkuc2NhbGUob3JpZ1NjYWxlLngsIG9yaWdTY2FsZS55LCBvcmlnU2NhbGUueik7XHJcbiAgICAgICAgY29uc3Qgc2hhcGVXYWxsOiBDdXN0b21DeWxpbmRlcldhbGxJdGVtID0gbmV3IEN1c3RvbUN5bGluZGVyV2FsbEl0ZW0oXHJcbiAgICAgICAgICBtZXRhZGF0YSxcclxuICAgICAgICAgIG5ldyBNZXNoKGdlb21ldHJ5LCB0aGlzLnNoYXBlLmN1c3RvbU1lc2gubWF0ZXJpYWwpKTtcclxuICAgICAgICBzaGFwZVdhbGwuYnVpbGRGaW5pc2hlZCgpO1xyXG4gICAgICAgIHNoYXBlV2FsbC5zY2FsZUdlb21ldHJ5KHRoaXMuc2hhcGUuc2NhbGUueCwgdGhpcy5zaGFwZS5zY2FsZS55LCB0aGlzLnNoYXBlLnNjYWxlLnopO1xyXG4gICAgICAgIHNoYXBlV2FsbC5jdXN0b21NZXNoLmdlb21ldHJ5LnJvdGF0ZVgoTWF0aC5QSSAvIDIpO1xyXG4gICAgICAgIHNoYXBlV2FsbC5jYWxjdWxhdGVIYWxmU2l6ZSgpO1xyXG4gICAgICAgIHNoYXBlV2FsbC5za2luID0gdGhpcy5zaGFwZS5za2luO1xyXG4gICAgICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLmFkZEl0ZW0oc2hhcGVXYWxsKTtcclxuICAgICAgICBjb25zdCBjbG9zZXN0V2FsbEVkZ2UgPSB0aGlzLl9yb29tU2VydmljZS5nZXRDbG9zZXN0V2FsbEVkZ2UocG9zaXRpb24ueCwgcG9zaXRpb24ueik7XHJcbiAgICAgICAgc2hhcGVXYWxsLnBsYWNlT25FZGdlKGNsb3Nlc3RXYWxsRWRnZSk7XHJcbiAgICAgICAgdGhpcy5faXRlbVNlcnZpY2UucmVtb3ZlSXRlbSh0aGlzLnNoYXBlKTtcclxuICAgICAgICB0aGlzLnNoYXBlID0gc2hhcGVXYWxsO1xyXG4gICAgICAgIHRoaXMuX3NjZW5lRXZlbnRTZXJ2aWNlLnNldFNlbGVjdGVkT2JqZWN0KHRoaXMuc2hhcGUpO1xyXG4gICAgICAgIHRoaXMuX2h1ZFNlcnZpY2UudXBkYXRlU2VsZWN0ZWRJdGVtSHVkKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMuX21lc3NhZ2VCdXNTZXJ2aWNlLmVtaXQoTWVzc2FnZVR5cGUuQmxvY2tMZWZ0U2lkZWJhciwgZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0U2tpbkNvbG9yKGZhY2U6IEZhY2UsIGNvbG9yOiBudW1iZXIpIHtcclxuICAgIHRoaXMuc2hhcGUuc2tpbltmYWNlXSA9IHtjb2xvcjogY29sb3J9O1xyXG4gICAgY29uc3QgaW5kZXggPSBDeWxpbmRlckZhY2VzLmluZGV4T2YoZmFjZSk7XHJcbiAgICB0aGlzLnNoYXBlLmN1c3RvbU1lc2gubWF0ZXJpYWxbaW5kZXhdID0gbmV3IE1lc2hQaG9uZ01hdGVyaWFsKHtjb2xvcjogY29sb3J9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX3NldFNraW5UZXh0dXJlKGZhY2U6IEZhY2UsIHRleHR1cmU6IFRleHR1cmUpIHtcclxuICAgIGlmICh0ZXh0dXJlKSB7XHJcbiAgICAgIHRleHR1cmUuaGVpZ2h0ID0gdGhpcy5za2luW2ZhY2VdLmhlaWdodCgpO1xyXG4gICAgICB0ZXh0dXJlLndpZHRoID0gdGhpcy5za2luW2ZhY2VdLndpZHRoKCk7XHJcbiAgICAgIHRleHR1cmUuZGltZW5zaW9ucyA9IG5ldyBWZWN0b3IyKHRoaXMuc2tpbltmYWNlXS53aWR0aCgpLCB0aGlzLnNraW5bZmFjZV0uaGVpZ2h0KCkpLm11bHRpcGx5U2NhbGFyKDEwMCk7XHJcbiAgICAgIHRoaXMuc2hhcGUuY3VzdG9tTWVzaC5tYXRlcmlhbFtDeWxpbmRlckZhY2VzLmluZGV4T2YoZmFjZSldID0gbmV3IE1lc2hQaG9uZ01hdGVyaWFsKHtcclxuICAgICAgICBtYXA6IGF3YWl0IE1hdGVyaWFsVXRpbHMuRnJvbUltYWdlKHRleHR1cmUpLFxyXG4gICAgICAgIHRyYW5zcGFyZW50OiB0cnVlLFxyXG4gICAgICAgIGFscGhhVGVzdDogMC41XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zaGFwZS5za2luW2ZhY2VdID0ge3RleHR1cmU6IHRleHR1cmV9O1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgX3Jlc2l6ZSgpIHtcclxuICAgIHRoaXMuc2hhcGUucmVzaXplKHRoaXMucmFkaXVzLCB0aGlzLmhlaWdodCk7XHJcbiAgICB0aGlzLl9odWRTZXJ2aWNlLnVwZGF0ZVNlbGVjdGVkSXRlbUh1ZCgpO1xyXG4gICAgdGhpcy5fc2NlbmVTZXJ2aWNlLm5lZWRzUmVuZGVyID0gdHJ1ZTtcclxuICB9XHJcbn1cclxuIiwiPHNlY3Rpb24+XHJcbiAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJhdXRvIGNlbnRlclwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGZ4RmxleD1cImdyb3dcIj5cclxuICAgICAgPGlucHV0IG1hdElucHV0ICNuYW1lSW5wdXRSZWZcclxuICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3snU0hBUEVTX05BTUUnIHwgbG9jYWxpemV9fVwiXHJcbiAgICAgICAgICAgICBbdmFsdWVdPVwibmFtZVwiXHJcbiAgICAgID5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibmFtZSA9PT0gbmFtZUlucHV0UmVmLnZhbHVlXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNldE5hbWUobmFtZUlucHV0UmVmLnZhbHVlKVwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnMgc2l6ZS0xNlwiPmNoZWNrPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm5hbWUgPT09IG5hbWVJbnB1dFJlZi52YWx1ZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJuYW1lSW5wdXRSZWYudmFsdWUgPSBuYW1lXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaG9tZWRlY29yYXRvci1tYXRlcmlhbC1pY29ucyBzaXplLTE2XCI+Y2FuY2VsPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCIgY2xhc3M9XCJzd2l0Y2hlclwiPlxyXG4gICAgPGgyIGNsYXNzPVwibWF0LWJvZHktMlwiPnt7aXNGbG9vclR5cGUgPyAoJ0ZMT09SJyB8IGxvY2FsaXplKSA6ICgnV0FMTCcgfCBsb2NhbGl6ZSl9fTwvaDI+XHJcbiAgICA8bWF0LXNsaWRlLXRvZ2dsZVxyXG4gICAgICBbY2hlY2tlZF09XCJpc0Zsb29yVHlwZVwiXHJcbiAgICAgIChjaGFuZ2UpPVwidG9nZ2xlSXRlbVR5cGUoKVwiXHJcbiAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcclxuICAgID5cclxuICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGgzIGNsYXNzPVwibWF0LXN1YmhlYWRpbmctMlwiPiB7eyAnTUVBU1VSRU1FTlRTJyB8IGxvY2FsaXplfX08L2gzPlxyXG4gIDxkaXY+XHJcbiAgICA8cnAtZGltZW5zaW9uLWlucHV0XHJcbiAgICAgIHRpdGxlPVwie3snUkFESVVTJyB8IGxvY2FsaXplfX1cIlxyXG4gICAgICBbc291cmNlVmFsdWVdPVwicmFkaXVzICogc2NhbGVGYWN0b3JcIlxyXG4gICAgICBbbWluVmFsdWVdPVwiMFwiXHJcbiAgICAgIChkaW1lbnNpb25DaGFuZ2VkKT1cInNldFJhZGl1cygkZXZlbnQgLyBzY2FsZUZhY3RvcilcIlxyXG4gICAgPlxyXG4gICAgPC9ycC1kaW1lbnNpb24taW5wdXQ+XHJcblxyXG4gICAgPHJwLWRpbWVuc2lvbi1pbnB1dFxyXG4gICAgICB0aXRsZT1cInt7J0hFSUdIVCcgfCBsb2NhbGl6ZX19XCJcclxuICAgICAgW3NvdXJjZVZhbHVlXT1cImhlaWdodCAqIHNjYWxlRmFjdG9yXCJcclxuICAgICAgW21pblZhbHVlXT1cIjBcIlxyXG4gICAgICAoZGltZW5zaW9uQ2hhbmdlZCk9XCJzZXRIZWlnaHQoJGV2ZW50IC8gc2NhbGVGYWN0b3IpXCJcclxuICAgID5cclxuICAgIDwvcnAtZGltZW5zaW9uLWlucHV0PlxyXG5cclxuICAgIDxycC1kaW1lbnNpb24taW5wdXRcclxuICAgICAgKm5nSWY9XCJpc0Zsb29yVHlwZVwiXHJcbiAgICAgIHRpdGxlPVwie3snRUxFVkFUSU9OJyB8IGxvY2FsaXplfX1cIlxyXG4gICAgICBbc291cmNlVmFsdWVdPVwiZWxldmF0aW9uICogc2NhbGVGYWN0b3JcIlxyXG4gICAgICBbbWluVmFsdWVdPVwiMFwiXHJcbiAgICAgIChkaW1lbnNpb25DaGFuZ2VkKT1cInNldEVsZXZhdGlvbigkZXZlbnQgLyBzY2FsZUZhY3RvcilcIlxyXG4gICAgPlxyXG4gICAgPC9ycC1kaW1lbnNpb24taW5wdXQ+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXY+XHJcbiAgICA8aDMgY2xhc3M9XCJtYXQtc3ViaGVhZGluZy0yXCI+IHt7ICdURVhUVVJFUycgfCBsb2NhbGl6ZX19PC9oMz5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZhY2Utc2VsZWN0LWZvcm1cIj5cclxuICAgICAgPG1hdC1sYWJlbD57e1wiU0VMRUNUX0ZBQ0VcIiB8IGxvY2FsaXplfX08L21hdC1sYWJlbD5cclxuICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEZhY2VcIj5cclxuICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiZmFjZVJlZi5BbGxcIj57eyAnQUxMJyB8IGxvY2FsaXplIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJmYWNlUmVmLlRvcFwiPnt7ICdUT1AnIHwgbG9jYWxpemUgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cImZhY2VSZWYuQm90dG9tXCI+e3sgJ0JPVFRPTScgfCBsb2NhbGl6ZSB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiZmFjZVJlZi5Gcm9udFwiPnt7ICdGUk9OVCcgfCBsb2NhbGl6ZSB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICA8cnAtYXBwZWFyYW5jZS1zZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlVGV4dHVyZVRhYl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInNraW5bc2VsZWN0ZWRGYWNlXS5jb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFpblRleHR1cmVdPVwic2tpbltzZWxlY3RlZEZhY2VdLnRleHR1cmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbcGhvdG9PcHRpb25zXT1cInRleHR1cmVPcHRpb25zLlRpbGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RleHR1cmVXaWR0aF09XCJza2luW3NlbGVjdGVkRmFjZV0ud2lkdGgoKSAqIDEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0dXJlSGVpZ2h0XT1cInNraW5bc2VsZWN0ZWRGYWNlXS5oZWlnaHQoKSAqIDEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRUZXh0dXJlKT1cInNldFRleHR1cmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRDb2xvcik9XCJzZXRDb2xvcigkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvcnAtYXBwZWFyYW5jZS1zZWN0aW9uPlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcbiJdfQ==