@provoly/dashboard 1.4.16 → 1.4.17
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.
|
@@ -454,7 +454,7 @@ export class DashboardEffects {
|
|
|
454
454
|
coordinates: action.coordinates,
|
|
455
455
|
properties: Object.keys(feature.properties)
|
|
456
456
|
.map((property) => ({ key: property, value: feature.properties[property] }))
|
|
457
|
-
.filter((prop) =>
|
|
457
|
+
.filter((prop) => prop.value !== undefined)
|
|
458
458
|
})),
|
|
459
459
|
componentId: action.componentId
|
|
460
460
|
})), catchError((error) => {
|
|
@@ -504,4 +504,4 @@ export class DashboardEffects {
|
|
|
504
504
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DashboardEffects, decorators: [{
|
|
505
505
|
type: Injectable
|
|
506
506
|
}], ctorParameters: () => [{ type: i1.DashboardInitService }, { type: i2.Actions }, { type: i3.Store }, { type: i4.ManifestService }, { type: i5.ItemService }, { type: i6.PryTitleService }, { type: i7.PryI18nService }, { type: i8.PrySnackbarService }, { type: i9.Router }, { type: i10.RefreshService }, { type: i11.ToolboxManifestService }, { type: i12.BusService }, { type: i13.SearchService }, { type: i14.PryDialogService }, { type: i15.WmsService }, { type: i16.WidgetFactoryService }, { type: i7.PryI18nService }] });
|
|
507
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL3N0b3JlL2Rhc2hib2FyZC5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFXLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RyxPQUFPLEVBQ0wseUJBQXlCLEVBRTFCLE1BQU0sd0RBQXdELENBQUM7QUFJaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFrQyxNQUFNLHFDQUFxQyxDQUFDO0FBSTFHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUkxRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBTTNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7Ozs7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LFFBQVE7YUFDckUsQ0FBQztZQUNGLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDO2dCQUNwQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFFBQVE7YUFDdEIsQ0FBQztZQUNGLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFO1NBQ3ZDLENBQUMsQ0FDSCxDQUNGLENBQ0YsQ0FDRixDQUFDO1FBcUJBLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDOzhHQWg3QlUsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgZGVsYXksIG1lcmdlLCBvZiwgc3RhcnRXaXRoLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBtZXJnZU1hcCwgdGFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIFByeURpYWxvZ0NvbmZpcm1Db21wb25lbnQsXG4gIFByeURpYWxvZ0NvbmZpcm1EYXRhXG59IGZyb20gJy4uLy4uL2NvcmUvY29tcG9uZW50cy9vdmVybGF5L2RpYWxvZy1jb25maXJtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcnlEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9jb21wb25lbnRzL292ZXJsYXkvZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJ5U25hY2tiYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9jb21wb25lbnRzL3NuYWNrYmFyL3NuYWNrYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJ5STE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IERhc2hib2FyZEdyaWRMYXlvdXQsIEdsb2JhbE1hbmlmZXN0LCBXaWRnZXRNYW5pZmVzdCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvbWFuaWZlc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IENoYXJ0V2lkZ2V0T3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvd2lkZ2V0LWNoYXJ0LW1hbmlmZXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBNYXBXaWRnZXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbC93aWRnZXQtbWFwLW1hbmlmZXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJdGVtU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvaXRlbS9pdGVtLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VhcmNoQWN0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvc2VhcmNoL3NlYXJjaC5hY3Rpb25zJztcbmltcG9ydCB7IERFRkFVTFRfTkFNRURfUVVFUllfSUQsIEVYUExPUkVfTkFNRURfUVVFUllfSUQgfSBmcm9tICcuLi8uLi9jb3JlL3N0b3JlL3NlYXJjaC9zZWFyY2guY29uc3RhbnRzJztcbmltcG9ydCB7IFNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3N0b3JlL3NlYXJjaC9zZWFyY2guc2VydmljZSc7XG5pbXBvcnQgeyBUb29sYm94TWFuaWZlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90b29sYm94L3Rvb2xib3gtbWFuaWZlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBCdXNTZXJ2aWNlIH0gZnJvbSAnLi4vYWN0aW9uLWJ1cy9zZXJ2aWNlL2J1cy5zZXJ2aWNlJztcbmltcG9ydCB7IFdpZGdldFBsYWNlbWVudFV0aWxzIH0gZnJvbSAnLi4vY29tcG9uZW50cy93aWRnZXRzL3dpZGdldC1wbGFjZW1lbnQvd2lkZ2V0LXBsYWNlbWVudC51dGlscyc7XG5pbXBvcnQgeyBSZXN1bHRzZXRVdGlscyB9IGZyb20gJy4uL3Jlc3VsdHNldC11dGlscyc7XG5pbXBvcnQgeyBEYXNoYm9hcmRJbml0U2VydmljZSB9IGZyb20gJy4vZGFzaGJvYXJkLWluaXQuc2VydmljZSc7XG5pbXBvcnQgeyBEYXNoYm9hcmRBY3Rpb25zLCBWaWV3TW9kZSB9IGZyb20gJy4vZGFzaGJvYXJkLmFjdGlvbnMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkU2VsZWN0b3JzIH0gZnJvbSAnLi9kYXNoYm9hcmQuc2VsZWN0b3JzJztcbmltcG9ydCB7IE1hbmlmZXN0U2VydmljZSB9IGZyb20gJy4vbWFuaWZlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBSZWZyZXNoU2VydmljZSB9IGZyb20gJy4vcmVmcmVzaC5zZXJ2aWNlJztcbmltcG9ydCB7IFByeVRpdGxlU2VydmljZSB9IGZyb20gJy4vdGl0bGUuc2VydmljZSc7XG5pbXBvcnQgeyBXbXNTZXJ2aWNlIH0gZnJvbSAnLi93bXMuc2VydmljZSc7XG5pbXBvcnQgeyBXaWRnZXRGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvd2lkZ2V0cy93aWRnZXQtaW5zdGFuY2lhdG9yL3dpZGdldC1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZVNlbGVjdG9ycyB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvZGF0YS1zb3VyY2UvZGF0YS1zb3VyY2Uuc2VsZWN0b3JzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhc2hib2FyZEVmZmVjdHMge1xuICBqb2luJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmpvaW4pLFxuICAgICAgZGVsYXkoMTAwMCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMudGVuYW50cyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yZXN1bHRTZXRzKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnNlbGVjdGVkSXRlbUlkcyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5wcmVzZW50YXRpb24pLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZGlzcGxheU9wdGlvbnMpXG4gICAgICApLFxuICAgICAgZmlsdGVyKChbYWN0aW9uLCByYW5rLCB0ZW5hbnRzLCBtYW5pZmVzdCwgcmVzdWx0U2V0cywgZGlzcGxheV0pID0+IHJhbmsgPT09IDApLFxuICAgICAgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgICBtYXAoKFthY3Rpb24sIHJhbmssIHRlbmFudHMsIG1hbmlmZXN0LCByZXN1bHRTZXRzLCBzZWxlY3RlZElkcywgcHJlc2VudGF0aW9uLCBkaXNwbGF5XSkgPT5cbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyVGVuYW50Sm9pbih7XG4gICAgICAgICAgdGVuYW50cywgLy8gd2UgYWxyZWFkeSBoYXZlIGFkZGVkIHRlbmFudCBpbiB0aGUgcmVkdWNlIG9mIHRoZSBcImpvaW5cIiBhY3Rpb25cbiAgICAgICAgICBtYW5pZmVzdDoge1xuICAgICAgICAgICAgLi4ubWFuaWZlc3QsXG4gICAgICAgICAgICB3aW5kb3dzOiBtYW5pZmVzdC53aW5kb3dzXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXN1bHRTZXRzLFxuICAgICAgICAgIHNlbGVjdGVkSWRzLFxuICAgICAgICAgIGpvaW5pbmc6IHRydWUsXG4gICAgICAgICAgcHJlc2VudGF0aW9uLFxuICAgICAgICAgIGRpc3BsYXlcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGVhdmUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMubGVhdmUpLFxuICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnRlbmFudHMpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKVxuICAgICAgKSxcbiAgICAgIGZpbHRlcigoW2FjdGlvbiwgcmFuaywgdGVuYW50cywgbWFuaWZlc3RdKSA9PiByYW5rID09PSAwIHx8ICh0ZW5hbnRzWzBdID09PSBhY3Rpb24uc2VuZGVyICYmIHJhbmsgPT09IDEpKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwgcmFuaywgdGVuYW50cywgbWFuaWZlc3QsIHNlbGVjdGVkSWRzXSkgPT4ge1xuICAgICAgICBjb25zdCBsZWF2ZXJSYW5rID0gdGVuYW50cy5pbmRleE9mKGFjdGlvbi5zZW5kZXIpO1xuICAgICAgICBjb25zdCBuZXdUZW5hbnRzTGlzdCA9IFsuLi50ZW5hbnRzXTtcbiAgICAgICAgY29uc3QgbmV3V2luZG93TGlzdCA9IFsuLi5tYW5pZmVzdC53aW5kb3dzXTtcbiAgICAgICAgaWYgKGxlYXZlclJhbmsgPiAtMSkge1xuICAgICAgICAgIG5ld1RlbmFudHNMaXN0LnNwbGljZShsZWF2ZXJSYW5rLCAxKTtcbiAgICAgICAgICBuZXdXaW5kb3dMaXN0LnNwbGljZShsZWF2ZXJSYW5rLCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJUZW5hbnRMZWF2ZSh7XG4gICAgICAgICAgdGVuYW50czogbmV3VGVuYW50c0xpc3QsXG4gICAgICAgICAgbWFuaWZlc3Q6IHtcbiAgICAgICAgICAgIC4uLm1hbmlmZXN0LFxuICAgICAgICAgICAgd2luZG93czogbmV3V2luZG93TGlzdFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZWN0ZWRJZHNcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBmZXRjaFN0YXRpY01hbmlmZXN0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmZldGNoU3RhdGljTWFuaWZlc3QpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspLCB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKSksXG4gICAgICBmaWx0ZXIoKFthY3Rpb24sIHJhbmtdKSA9PiByYW5rID09PSAwKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCByYW5rXSkgPT5cbiAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2VcbiAgICAgICAgICAuZ2V0KGFjdGlvbi5pZClcbiAgICAgICAgICAucGlwZShtYXAoKHN0YXRpY01hbmlmZXN0KSA9PiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZVN0YXRpY01hbmlmZXN0KHsgc3RhdGljTWFuaWZlc3QgfSkpKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsb2FkQW5kQWN0aXZhdGVNYW5pZmVzdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5sb2FkQW5kQWN0aXZhdGVNYW5pZmVzdCwgRGFzaGJvYXJkQWN0aW9ucy5sb2FkTWFuaWZlc3QpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspLCB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKSksXG4gICAgICBmaWx0ZXIoKFthY3Rpb24sIHJhbmtdKSA9PiByYW5rID09PSAwKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCByYW5rLCBzZWxlY3RlZElkc10pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlLmdldChhY3Rpb24uaWQpLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKG1hbmlmZXN0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYWN0aW9uLnR5cGUgPT09IERhc2hib2FyZEFjdGlvbnMubG9hZEFuZEFjdGl2YXRlTWFuaWZlc3QudHlwZVxuICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlckZldGNoKHsgbWFuaWZlc3QsIG1hbmlmZXN0SWQ6IGFjdGlvbi5pZCwgc2VsZWN0ZWRJZHMgfSksXG4gICAgICAgICAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmZvbGxvd01hbmlmZXN0Um91dGUoKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgOiBbRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdFdpdGhvdXRBY3RpdmF0aW9uKHsgbWFuaWZlc3QsIG1hbmlmZXN0SWQ6IGFjdGlvbi5pZCwgc2VsZWN0ZWRJZHMgfSldO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgY2xlYXJNYW5pZmVzdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5jbGVhck1hbmlmZXN0KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKVxuICAgICAgKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwgbWFuaWZlc3QsIHNlbGVjdGVkSWRzXSkgPT5cbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyRmV0Y2goeyBtYW5pZmVzdCwgbWFuaWZlc3RJZDogJycsIHNlbGVjdGVkSWRzIH0pXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGRvd25sb2FkTWFuaWZlc3QkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmRvd25sb2FkTWFuaWZlc3QpLFxuICAgICAgICB0YXAoKGFjdGlvbikgPT5cbiAgICAgICAgICB0aGlzLm1hbmlmZXN0U2VydmljZS5nZXQoYWN0aW9uLmlkKS5zdWJzY3JpYmUoKG1hbmlmZXN0OiBHbG9iYWxNYW5pZmVzdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9ICdkYXRhOnRleHQvanNvbjtjaGFyc2V0PXV0Zi04LCcgKyBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QpKTtcbiAgICAgICAgICAgIGNvbnN0IGRsQW5jaG9yRWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgIGRsQW5jaG9yRWxlbS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBkYXRhU3RyKTtcbiAgICAgICAgICAgIGRsQW5jaG9yRWxlbS5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgYCR7YWN0aW9uLm5hbWV9Lmpzb25gKTtcbiAgICAgICAgICAgIGRsQW5jaG9yRWxlbS5jbGljaygpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIGZvbGxvd01hbmlmZXN0Um91dGUkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmZvbGxvd01hbmlmZXN0Um91dGUpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMud2luZG93TWFuaWZlc3QpKSxcbiAgICAgICAgdGFwKChbYWN0aW9uLCBtYW5pZmVzdF0pID0+IHtcbiAgICAgICAgICBpZiAobWFuaWZlc3Qucm91dGUpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwobWFuaWZlc3Qucm91dGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIGVuZExvYWRpbmdBZnRlckZvbGxvd2luZ01hbmlmZXN0Um91dGUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZm9sbG93TWFuaWZlc3RSb3V0ZSksXG4gICAgICBtYXAoKGFjdGlvbikgPT4gRGFzaGJvYXJkQWN0aW9ucy5lbmRMb2FkaW5nKCkpXG4gICAgKVxuICApO1xuXG4gIHJlcXVlc3RNYW5pZmVzdFJvdXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnJlcXVlc3RBbGxSb3V0ZXMpLFxuICAgICAgbWFwKCgpID0+IERhc2hib2FyZEFjdGlvbnMudXBkYXRlUm91dGVNYW5pZmVzdCh7IHJvdXRlOiB0aGlzLnJvdXRlci51cmwgfSkpXG4gICAgKVxuICApO1xuXG4gIHJlcXVlc3RNYW5pZmVzdHNUb0VtaXQkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnJlcXVlc3RNYW5pZmVzdHNUb0VtaXQpLFxuICAgICAgICB0YXAoKCkgPT4gZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2VtaXQtbWFuaWZlc3QnKSkpXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBkaXNwYXRjaEZpbHRlciQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5kaXNwYXRjaEZpbHRlcnMpLFxuICAgICAgbWFwKCgpID0+IERhc2hib2FyZEFjdGlvbnMucmVxdWVzdE1hbmlmZXN0c1RvRW1pdCgpKVxuICAgIClcbiAgKTtcblxuICBhc3NlcnRSZXN1bHRTZXRzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5hc3NlcnRSZXN1bHRTZXRzLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmRpc3BhdGNoRmlsdGVycyxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5jbGVhckFsbEZpbHRlclZhbHVlc1xuICAgICAgKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmVzdWx0U2V0cyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yZXN1bHRTZXRzUGFyYW1zKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnF1aWNrT3JkZXIpXG4gICAgICApLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIG1hbmlmZXN0LCByZXN1bHRTZXRzLCByZXN1bHRTZXRzUGFyYW1zLCBxdWlja09yZGVyXSkgPT4ge1xuICAgICAgICBjb25zdCBtYW5pZmVzdFRvQ2hlY2s6IEdsb2JhbE1hbmlmZXN0ID1cbiAgICAgICAgICAoYWN0aW9uLnR5cGUgPT09IERhc2hib2FyZEFjdGlvbnMuYXNzZXJ0UmVzdWx0U2V0cy50eXBlIHx8XG4gICAgICAgICAgICBhY3Rpb24udHlwZSA9PT0gRGFzaGJvYXJkQWN0aW9ucy5kaXNwYXRjaEZpbHRlcnMudHlwZSkgJiZcbiAgICAgICAgICBhY3Rpb24uc3RhdGljTWFuaWZlc3RcbiAgICAgICAgICAgID8geyB3aW5kb3dzOiBbYWN0aW9uLnN0YXRpY01hbmlmZXN0XSB9XG4gICAgICAgICAgICA6IG1hbmlmZXN0O1xuXG4gICAgICAgIC8vIEZpcnN0IHNlbmQgYWdncmVnYXRlIHVwZGF0ZXNcbiAgICAgICAgY29uc3QgdG9BZ2dyZWdhdGVBY3Rpb25zID0gKFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIC4uLm5ldyBTZXQoXG4gICAgICAgICAgICAgIG1hbmlmZXN0VG9DaGVjay53aW5kb3dzXG4gICAgICAgICAgICAgICAgLm1hcCgod2luTWFuaWZlc3QpID0+ICh3aW5NYW5pZmVzdCA/PyB7fSkud2lkZ2V0cyA/PyBbXSlcbiAgICAgICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBbLi4ucCwgLi4uY10sIFtdKVxuICAgICAgICAgICAgICAgIC5tYXAoKHdpZE1hbmlmZXN0KSA9PiB0aGlzLndpZGdldEZhY3RvcnlTZXJ2aWNlLmFnZ3JlZ2F0ZXNUb0F1dG9Mb2FkKHdpZE1hbmlmZXN0KSlcbiAgICAgICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBbLi4ucCwgLi4uY10sIFtdIGFzIHN0cmluZ1tdKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0gYXMgc3RyaW5nW11cbiAgICAgICAgKS5tYXAoKGRzKSA9PiBEYXNoYm9hcmRBY3Rpb25zLnRyaWdnZXJBZ2dyZWdhdGUoeyBpZDogZHMgfSkpO1xuXG4gICAgICAgIGNvbnN0IHRvSXRlbXNBY3Rpb25zID0gT2JqZWN0LnZhbHVlcyhcbiAgICAgICAgICBtYW5pZmVzdFRvQ2hlY2sud2luZG93c1xuICAgICAgICAgICAgLm1hcCgod2luTWFuaWZlc3QpID0+ICh3aW5NYW5pZmVzdCA/PyB7fSkud2lkZ2V0cyA/PyBbXSlcbiAgICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IFsuLi5wLCAuLi5jXSwgW10pXG4gICAgICAgICAgICAubWFwKCh3aWRNYW5pZmVzdCkgPT4gdGhpcy53aWRnZXRGYWN0b3J5U2VydmljZS5kYXRhc291cmNlc1RvQXV0b0xvYWQod2lkTWFuaWZlc3QpKVxuICAgICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgICAgKHAsIGMpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4ucCxcbiAgICAgICAgICAgICAgICBbYy5kYXRhc2V0SWRdOiB7XG4gICAgICAgICAgICAgICAgICAuLi5wW2MuZGF0YXNldElkXSxcbiAgICAgICAgICAgICAgICAgIC4uLmMsXG4gICAgICAgICAgICAgICAgICBleGNsdWRlR2VvOiBwW2MuZGF0YXNldElkXT8uZXhjbHVkZUdlbyA9PT0gZmFsc2UgPyBwW2MuZGF0YXNldElkXS5leGNsdWRlR2VvIDogYy5leGNsdWRlR2VvXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAge30gYXMgeyBba2V5OiBzdHJpbmddOiB7IGRhdGFzZXRJZDogc3RyaW5nOyBleGNsdWRlR2VvOiBib29sZWFuIH0gfVxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgIChyZXN1bHRTZXQpID0+XG4gICAgICAgICAgICAgICEhcmVzdWx0U2V0LmRhdGFzZXRJZCAmJlxuICAgICAgICAgICAgICByZXN1bHRTZXQuZGF0YXNldElkICE9PSAnJyAmJlxuICAgICAgICAgICAgICAoIXJlc3VsdFNldHNbcmVzdWx0U2V0LmRhdGFzZXRJZF0gfHxcbiAgICAgICAgICAgICAgICByZXN1bHRTZXRzUGFyYW1zW3Jlc3VsdFNldC5kYXRhc2V0SWRdICE9PVxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmdldEl0ZW1zU2VyaWFsaXplZFBhcmFtcyhyZXN1bHRTZXQuZGF0YXNldElkLCBxdWlja09yZGVyKSlcbiAgICAgICAgICApXG4gICAgICAgICAgLm1hcCgocmVzdWx0U2V0KSA9PlxuICAgICAgICAgICAgU2VhcmNoQWN0aW9ucy5nZXREYXRhc291cmNlSXRlbXMoe1xuICAgICAgICAgICAgICBpZDogcmVzdWx0U2V0LmRhdGFzZXRJZCxcbiAgICAgICAgICAgICAgZXhjbHVkZUdlbzogcmVzdWx0U2V0LmV4Y2x1ZGVHZW8sXG4gICAgICAgICAgICAgIGZyb206ICdEYXNoYm9hcmRFZmZlY3RzLmFzc2VydFJlc3VsdFNldHMkLTEnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIFsuLi50b0l0ZW1zQWN0aW9ucywgLi4udG9BZ2dyZWdhdGVBY3Rpb25zXTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIHNlbmRBZ2dyZWdhdGVzRXZlbnQkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnRyaWdnZXJBZ2dyZWdhdGUpLFxuICAgICAgICBmaWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLmlkICE9PSBERUZBVUxUX05BTUVEX1FVRVJZX0lEICYmIGFjdGlvbi5pZCAhPT0gRVhQTE9SRV9OQU1FRF9RVUVSWV9JRCksXG4gICAgICAgIHRhcCgoYWN0aW9uKSA9PiB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2RhdGFzb3VyY2VSZWZyZXNoJywgeyBkZXRhaWw6IGFjdGlvbi5pZCB9KSkpXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBzdGFydE1pc3NpbmdWaWV3QWZ0ZXJWaWV3VXBkYXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdCxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyRmV0Y2gsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlclRlbmFudExlYXZlLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJUZW5hbnRKb2luLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmV4cGxvcmUsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuZGV0YWlsLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnJlc3RvcmVJbml0aWFsTWFuaWZlc3QsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuY3JlYXRlVGFiLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLm1vdmVXaWRnZXRcbiAgICAgICksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuaykpLFxuICAgICAgZmlsdGVyKChbYWN0aW9uLCByYW5rXSkgPT4gcmFuayA9PT0gMCksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PiBbXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuc3RhcnRpbmdNaXNzaW5nVmlld3MoKSxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5hc3NlcnRSZXN1bHRTZXRzKHt9KSxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zb2x2ZUNvbGxpc2lvbnMoKVxuICAgICAgXSlcbiAgICApXG4gICk7XG5cbiAgdXBkYXRlVGl0bGUkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0LFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlclRlbmFudEpvaW4sXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyVGVuYW50TGVhdmUsXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyRmV0Y2gsXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5kZWNsYXJlU2VuZGVySWRcbiAgICAgICAgKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspKSxcbiAgICAgICAgdGFwKChbYWN0aW9uLCByYW5rXSkgPT4ge1xuICAgICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLmNoYW5nZVRpdGxlKCk7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBvcGVuT3RoZXIkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnN0YXJ0aW5nTWlzc2luZ1ZpZXdzKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspLFxuICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy50ZW5hbnRzKSxcbiAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpXG4gICAgICAgICksXG4gICAgICAgIGRlYm91bmNlVGltZSgxMDAwKSxcbiAgICAgICAgZmlsdGVyKChbYWN0aW9uLCByYW5rLCB0ZW5hbnRzLCBtYW5pZmVzdF0pID0+IHJhbmsgPT09IDApLFxuICAgICAgICB0YXAoKFthY3Rpb24sIHJhbmssIHRlbmFudHMsIG1hbmlmZXN0XSkgPT4ge1xuICAgICAgICAgIG1hbmlmZXN0LndpbmRvd3MuZm9yRWFjaCgod2luZG93TWFuaWZlc3QsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRlbmFudHNbaW5kZXhdKSB7XG4gICAgICAgICAgICAgIC8vIElmIG5vIHdpbmRvdyBpcyBvcGVuZWQgZm9yIHRoaXMgcGFydCwgdGhlbiBvcGVuIG9uZVxuICAgICAgICAgICAgICB3aW5kb3cub3Blbih3aW5kb3dNYW5pZmVzdC5yb3V0ZSA/PyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUsICdfYmxhbmsnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIHNhdmVNYW5pZmVzdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5zYXZlTWFuaWZlc3QpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdsb2JhbE1hbmlmZXN0KSksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXRhU291cmNlU2VsZWN0b3JzLmRhdGFzZXRzKSksXG4gICAgICBtZXJnZU1hcCgoW1thY3Rpb24sIGN1cnJlbnRNYW5pZmVzdF0sIGRhdGFzZXRzXSkgPT5cbiAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2VcbiAgICAgICAgICAuc2F2ZShcbiAgICAgICAgICAgIGFjdGlvbi5uYW1lLFxuICAgICAgICAgICAgYWN0aW9uLm1hbmlmZXN0ID8/IGN1cnJlbnRNYW5pZmVzdCxcbiAgICAgICAgICAgIGFjdGlvbi5pZCxcbiAgICAgICAgICAgIGFjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGFjdGlvbi5pbWFnZSxcbiAgICAgICAgICAgIGFjdGlvbi5tZXRhZGF0YSxcbiAgICAgICAgICAgIGFjdGlvbi5hY2Nlc3NSaWdodHNCeUdyb3VwLFxuICAgICAgICAgICAgYWN0aW9uLmFkZGl0aW9uYWxJbmZvcm1hdGlvblxuICAgICAgICAgIClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRhcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQHByeS50b29sYm94Lm1hbmlmZXN0LnNhdmVkJywgeyB2aWV3SWQ6IGFjdGlvbi5uYW1lIH0pLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJ1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHJlc3BvbnNlLm1pc3NpbmdHcm91cHNCeUVudGl0eSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGE6IFByeURpYWxvZ0NvbmZpcm1EYXRhID0ge1xuICAgICAgICAgICAgICAgICAgdGl0bGU6ICdAcHJ5LnNoYXJlLmNvbmZsaWN0LnRpdGxlJyxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaTE4blNlcnZpY2UuaW5zdGFudCgnQHByeS5zaGFyZS5jb25mbGljdC5tYWluJykgK1xuICAgICAgICAgICAgICAgICAgICAnXFxyXFxuJyArXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlc3BvbnNlLm1pc3NpbmdHcm91cHNCeUVudGl0eSlcbiAgICAgICAgICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGVudGl0eSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGFzZXRzLmZpbmQoKGRzKSA9PiBkcy5pZCA9PT0gZW50aXR5KT8ubmFtZSA/PyBlbnRpdHkpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJyA6ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5taXNzaW5nR3JvdXBzQnlFbnRpdHlbZW50aXR5XS5qb2luKCcsICcpXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCdcXHJcXG4nKSxcbiAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkOiAwLFxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQHByeS50b29sYm94LmNsb3NlJ1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLnByeURpYWxvZy5vcGVuKFByeURpYWxvZ0NvbmZpcm1Db21wb25lbnQsIHsgZGF0YSB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoKCkgPT4gYWN0aW9uLm1hbmlmZXN0ID8/IGN1cnJlbnRNYW5pZmVzdCksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5zYXZlRXJyb3JDb2RlLicgKyAoZXJyb3IuZXJyb3I/LmNvZGUgPz8gJ1VOS05PV04nKSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogYWN0aW9uLm5hbWVcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcidcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpKSxcbiAgICAgIG1lcmdlTWFwKChbbWFuaWZlc3QsIHNlbGVjdGVkSWRzXSkgPT4gW1xuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmZldGNoTWFuaWZlc3RzTGlzdCgpLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnNldEluaXRpYWxQcmVzZW50YXRpb24oeyBpbml0aWFsOiBtYW5pZmVzdCB9KSxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdCh7IG1hbmlmZXN0LCBzZWxlY3RlZElkcyB9KVxuICAgICAgXSlcbiAgICApXG4gICk7XG5cbiAgbGlzdE1hbmlmZXN0cyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5mZXRjaE1hbmlmZXN0c0xpc3QpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspKSxcbiAgICAgIGZpbHRlcigoW2FjdGlvbiwgcmFua10pID0+IHJhbmsgPT09IDAgfHwgcmFuayA9PT0gLTEpLFxuICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICBtZXJnZU1hcCgoW2FjdGlvbiwgcmFua10pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlLmxpc3QoKS5waXBlKG1hcCgobWFuaWZlc3RzKSA9PiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0c0xpc3QoeyBtYW5pZmVzdHMgfSkpKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjb25maXJtTWFuaWZlc3REZWxldGlvbiQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuY29uZmlybU1hbmlmZXN0RGVsZXRpb24pLFxuICAgICAgICB0YXAoKGFjdGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGE6IFByeURpYWxvZ0NvbmZpcm1EYXRhID0ge1xuICAgICAgICAgICAgdGl0bGU6ICdAcHJ5LndpZGdldC5tb2RhbFRpdGxlJyxcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAwLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnQHByeS50b29sYm94Lm1hbmlmZXN0LnZhbGlkYXRlJyxcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbRGFzaGJvYXJkQWN0aW9ucy5kZWxldGVNYW5pZmVzdCh7IGlkOiBhY3Rpb24uaWQgfSldXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogMSxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5jbG9zZScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdzZWNvbmRhcnknXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMucHJ5RGlhbG9nLm9wZW4oUHJ5RGlhbG9nQ29uZmlybUNvbXBvbmVudCwgeyBkYXRhIH0pO1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgZGVsZXRlTWFuaWZlc3QkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZGVsZXRlTWFuaWZlc3QpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2UuZGVsZXRlKGFjdGlvbi5pZCkucGlwZShtYXAoKCkgPT4gRGFzaGJvYXJkQWN0aW9ucy5mZXRjaE1hbmlmZXN0c0xpc3QoKSkpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGZldGNoT2JqZWN0c0RldGFpbHMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZmV0Y2hPYmplY3RzRGV0YWlscyksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PiBtZXJnZSguLi5hY3Rpb24uaWRzLm1hcCgoaWQpID0+IHRoaXMuaXRlbVNlcnZpY2UuZ2V0KGlkKSkpKSxcbiAgICAgIG1hcCgoaXRlbSkgPT4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVPYmplY3RzRGV0YWlscyh7IGxpc3Q6IHsgW2l0ZW0uaWRdOiBpdGVtIH0gfSkpXG4gICAgKVxuICApO1xuXG4gIHByb3hpbWl0eVNlYXJjaCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5wcm94aW1pdHkpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJlc3VsdFNldHMpKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCByZXN1bHRTZXRzXSkgPT5cbiAgICAgICAgdGhpcy5pdGVtU2VydmljZS5wcm94aW1pdHkoYWN0aW9uLmlkKS5waXBlKFxuICAgICAgICAgIG1hcCgocHJveFJzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVSZXN1bHRTZXQoe1xuICAgICAgICAgICAgICBpZDogYWN0aW9uLnRhcmdldFJlc3VsdFNldCxcbiAgICAgICAgICAgICAgcmVzdWx0U2V0OiBSZXN1bHRzZXRVdGlscy5tZXJnZVJlc3VsdFNldHMocHJveFJzLCByZXN1bHRTZXRzW2FjdGlvbi50YXJnZXRSZXN1bHRTZXRdKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBleHBsb3JlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmV4cGxvcmUpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT4gW0Rhc2hib2FyZEFjdGlvbnMucHJveGltaXR5KHsgaWQ6IGFjdGlvbi5pZCwgdGFyZ2V0UmVzdWx0U2V0OiBFWFBMT1JFX05BTUVEX1FVRVJZX0lEIH0pXSlcbiAgICApXG4gICk7XG5cbiAgZGV0YWlsQXNMb2FkSW5XaWRnZXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZGV0YWlsKSxcbiAgICAgIG1hcCgoYWN0aW9uKSA9PlxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmFkZFdpZGdldFRvUHJlc2VudGF0aW9uKHtcbiAgICAgICAgICBpZDogJycsXG4gICAgICAgICAgd2lkZ2V0VHlwZTogJ2RldGFpbCcsXG4gICAgICAgICAgYWRkaXRpb25hbE9wdGlvbnM6IHtcbiAgICAgICAgICAgIGl0ZW1JZHM6IGFjdGlvbi5pZHNcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHVwZGF0ZVdpZGdldEluUHJlc2VudGF0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZVdpZGdldEluUHJlc2VudGF0aW9uKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCkpLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIG1hbmlmZXN0XSkgPT4ge1xuICAgICAgICAvLyBDaGVjayBpZiBhIHdpZGdldCB3aXRoIHNhbWUgZGF0YXNvdXJjZSBhbmQgdHlwZSBhbHJlYWR5IGV4aXN0IGluIGN1cnJlbnQgcHJlc2VudGF0aW9uXG4gICAgICAgIGNvbnN0IHdpZGdldFRvTWF0Y2ggPSB0aGlzLnRvb2xib3hNYW5pZmVzdFNlcnZpY2UuZ2V0KGFjdGlvbi53aWRnZXRUeXBlKTtcblxuICAgICAgICBsZXQgYWRkaXRpb25hbE1hdGNoaW5nRm46IChvcHRpb25zVG9NYXRjaDogYW55LCBvcHRpb25zOiBhbnkpID0+IGJvb2xlYW47XG4gICAgICAgIHN3aXRjaCAod2lkZ2V0VG9NYXRjaC50eXBlKSB7XG4gICAgICAgICAgY2FzZSAnY2hhcnQnOlxuICAgICAgICAgICAgYWRkaXRpb25hbE1hdGNoaW5nRm4gPSAob3B0aW9uc1RvTWF0Y2g6IENoYXJ0V2lkZ2V0T3B0aW9ucywgb3B0aW9uczogQ2hhcnRXaWRnZXRPcHRpb25zKSA9PlxuICAgICAgICAgICAgICBvcHRpb25zVG9NYXRjaC50eXBlID09PSBvcHRpb25zLnR5cGUgJiYgb3B0aW9uc1RvTWF0Y2guc3ViVHlwZSA9PT0gb3B0aW9ucy5zdWJUeXBlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgICAgIGFkZGl0aW9uYWxNYXRjaGluZ0ZuID0gKG9wdGlvbnNUb01hdGNoOiBNYXBXaWRnZXRPcHRpb25zLCBvcHRpb25zOiBNYXBXaWRnZXRPcHRpb25zKSA9PlxuICAgICAgICAgICAgICAhIW9wdGlvbnMubGF5ZXJzIS5maW5kKChsYXllcikgPT4gbGF5ZXIudHlwZSA9PT0gb3B0aW9uc1RvTWF0Y2gubGF5ZXJzIVswXS50eXBlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBhZGRpdGlvbmFsTWF0Y2hpbmdGbiA9IChvcHRpb25zVG9NYXRjaDogYW55LCBvcHRpb25zOiBhbnkpID0+IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtYXRjaGluZ1dpZGdldHMgPSBtYW5pZmVzdC53aW5kb3dzLm1hcCgod2luZG93KSA9PlxuICAgICAgICAgIHdpbmRvdy53aWRnZXRzXG4gICAgICAgICAgICAuZmlsdGVyKCh3aWRnZXQpID0+IHdpZGdldC50eXBlID09PSB3aWRnZXRUb01hdGNoLnR5cGUpXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAod2lkZ2V0KSA9PlxuICAgICAgICAgICAgICAgIHdpZGdldC5kYXRhc291cmNlID09PSBhY3Rpb24uaWQgfHxcbiAgICAgICAgICAgICAgICAod2lkZ2V0LmRhdGFzb3VyY2UhWzBdID09PSBhY3Rpb24uaWQgJiYgd2lkZ2V0LmRhdGFzb3VyY2UhLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5maW5kKCh3aWRnZXQpID0+IGFkZGl0aW9uYWxNYXRjaGluZ0ZuKHdpZGdldFRvTWF0Y2gub3B0aW9ucywgd2lkZ2V0Lm9wdGlvbnMpKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGFscmVhZHlNYXRjaGVkV2lkZ2V0ID0gbWF0Y2hpbmdXaWRnZXRzLmZpbmQoKHdpbmRvdykgPT4gISF3aW5kb3cpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICBpZiAoYWxyZWFkeU1hdGNoZWRXaWRnZXQpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChcbiAgICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMubXVsdGlTbmFja0Jhcih7XG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0Bwcnkud2lkZ2V0LnVwZGF0ZWRJblZpZXcnLCB7XG4gICAgICAgICAgICAgICAgICBpbmRleDogbWF0Y2hpbmdXaWRnZXRzLmZpbmRJbmRleCgod2lkZ2V0KSA9PiAhIXdpZGdldCkgKyAxXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKERhc2hib2FyZEFjdGlvbnMuYWRkV2lkZ2V0VG9QcmVzZW50YXRpb24oeyAuLi5hY3Rpb24gfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIGFkZFdpZGdldFRvUHJlc2VudGF0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmFkZFdpZGdldFRvUHJlc2VudGF0aW9uKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ3JpZExheW91dCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmRhc2hib2FyZENlbGxQYXJhbXMpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKVxuICAgICAgKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwgbGF5b3V0LCBfZ2xvYmFsTWFuaWZlc3QsIHJhbmssIHBhcmFtcywgc2VsZWN0ZWRJZHNdKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hbmlmZXN0R2xvYmFsID0gc3RydWN0dXJlZENsb25lKF9nbG9iYWxNYW5pZmVzdCkgYXMgR2xvYmFsTWFuaWZlc3Q7XG5cbiAgICAgICAgLy8gQ3JlYXRlIG5ldyBjb25maWd1cmF0aW9uXG4gICAgICAgIGNvbnN0IG5ld09wdGlvbnMgPSB0aGlzLnRvb2xib3hNYW5pZmVzdFNlcnZpY2UuZ2V0KGFjdGlvbi53aWRnZXRUeXBlKSA/PyB7XG4gICAgICAgICAgb3B0aW9uczoge30sXG4gICAgICAgICAgdHlwZTogYWN0aW9uLndpZGdldFR5cGVcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbmV3V2lkZ2V0TWFuaWZlc3QgPSB7XG4gICAgICAgICAgLi4ubmV3T3B0aW9ucyxcbiAgICAgICAgICBsYXlvdXQ6IHt9LFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIC4uLm5ld09wdGlvbnMub3B0aW9ucyxcbiAgICAgICAgICAgIC4uLmFjdGlvbi5hZGRpdGlvbmFsT3B0aW9uc1xuICAgICAgICAgIH1cbiAgICAgICAgfSBhcyBXaWRnZXRNYW5pZmVzdDtcblxuICAgICAgICBpZiAoISFhY3Rpb24uaWQpIHtcbiAgICAgICAgICBuZXdXaWRnZXRNYW5pZmVzdC5kYXRhc291cmNlID0gYWN0aW9uLmlkO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGZvdW5kOiB7IGFjdHVhbFJhbms6IG51bWJlcjsgd2lkZ2V0OiBXaWRnZXRNYW5pZmVzdCB9IHwgbnVsbCA9IG51bGw7XG4gICAgICAgIC8vIFRyeSB0byBmaW5kIGEgc3BvdCBpbiB3aW5kb3dzIChzdGFydGluZyBieSBjdXJyZW50IHJhbmssIHRoZW4gaW4gb3RoZXJzKVxuICAgICAgICBjb25zdCBzZXF1ZW5jZSA9IFdpZGdldFBsYWNlbWVudFV0aWxzLnN3YXBBcnJheUVsZW1lbnRzKFxuICAgICAgICAgIG5ldyBBcnJheShtYW5pZmVzdEdsb2JhbC53aW5kb3dzLmxlbmd0aCkuZmlsbCgwKS5tYXAoKF8sIGlkeCwgYXJyYXkpID0+IGlkeCksXG4gICAgICAgICAgMCxcbiAgICAgICAgICByYW5rXG4gICAgICAgICk7XG4gICAgICAgIC8vIFRyeWluZyBhbGwgcGxhY2VtZW50IG9wdGlvbnNcbiAgICAgICAgZm9yIChjb25zdCBhY3R1YWxSYW5rIG9mIHNlcXVlbmNlKSB7XG4gICAgICAgICAgY29uc3Qgd2luZG93TGF5b3V0ID0gbWFuaWZlc3RHbG9iYWwud2luZG93c1thY3R1YWxSYW5rXS5ncmlkPy5sYXlvdXQgPz8gRGFzaGJvYXJkR3JpZExheW91dC5GVUxMO1xuICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBXaWRnZXRQbGFjZW1lbnRVdGlscy5wbGFjZW1lbnRPcHRpb25zKG5ld1dpZGdldE1hbmlmZXN0LCB3aW5kb3dMYXlvdXQpO1xuICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgICAgIC8vIEFyZSB3ZSBkaXNqb2ludCBmcm9tIGFsbCBvdGhlciB3aWRnZXRzID9cbiAgICAgICAgICAgICAgICBjb25zdCBpc0Rpc2pvaW50RnJvbUFsbCA9IChtYW5pZmVzdEdsb2JhbC53aW5kb3dzW2FjdHVhbFJhbmtdLndpZGdldHMgPz8gW10pXG4gICAgICAgICAgICAgICAgICAubWFwKCh3aWRnZXQpID0+IFdpZGdldFBsYWNlbWVudFV0aWxzLmFyZURpc2pvaW50KHdpZGdldCwgb3B0aW9uKSlcbiAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IHAgJiYgYywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzRGlzam9pbnRGcm9tQWxsKSB7XG4gICAgICAgICAgICAgICAgICAvLyBGb3VuZCBhIGRpc2pvaW50IHBsYWNlbWVudCAhXG4gICAgICAgICAgICAgICAgICBmb3VuZCA9IHsgYWN0dWFsUmFuaywgd2lkZ2V0OiBvcHRpb24gfSBhcyB7IGFjdHVhbFJhbms6IG51bWJlcjsgd2lkZ2V0OiBXaWRnZXRNYW5pZmVzdCB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghIWZvdW5kKSB7XG4gICAgICAgICAgY29uc3QgcGxhY2VXZUZvdW5kID0gZm91bmQgYXMgeyBhY3R1YWxSYW5rOiBudW1iZXI7IHdpZGdldDogV2lkZ2V0TWFuaWZlc3QgfTtcbiAgICAgICAgICBtYW5pZmVzdEdsb2JhbC53aW5kb3dzW3BsYWNlV2VGb3VuZC5hY3R1YWxSYW5rXS53aWRnZXRzLnB1c2gocGxhY2VXZUZvdW5kLndpZGdldCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudFdpbmRvd0xheW91dCA9IG1hbmlmZXN0R2xvYmFsLndpbmRvd3NbcmFua10uZ3JpZD8ubGF5b3V0ID8/IERhc2hib2FyZEdyaWRMYXlvdXQuRlVMTDtcblxuICAgICAgICAgIC8vIHNpIG5vbiB0cm91dsOpIDogbm91dmVsbGUgcGFnZSwgcHJlbWnDqHJlIHBvc2l0aW9uIHN1Z2fDqXLDqWVcbiAgICAgICAgICBjb25zdCBmaXJzdFByb3Bvc2VkTGF5b3V0ID0gV2lkZ2V0UGxhY2VtZW50VXRpbHMucGxhY2VtZW50T3B0aW9ucyhuZXdXaWRnZXRNYW5pZmVzdCwgY3VycmVudFdpbmRvd0xheW91dClbMF07XG5cbiAgICAgICAgICBtYW5pZmVzdEdsb2JhbC53aW5kb3dzLnB1c2goe1xuICAgICAgICAgICAgd2lkZ2V0czogW2ZpcnN0UHJvcG9zZWRMYXlvdXQgPz8geyB4OiAxLCB5OiAxLCBoZWlnaHQ6IDEsIHdpZHRoOiAxIH1dLFxuICAgICAgICAgICAgZ3JpZDogeyBsYXlvdXQ6IGN1cnJlbnRXaW5kb3dMYXlvdXQgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFjdGlvbi5hbGVydCA9PT0gdW5kZWZpbmVkIHx8IGFjdGlvbi5hbGVydCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2VBY3Rpb24gPSBEYXNoYm9hcmRBY3Rpb25zLm11bHRpU25hY2tCYXIoe1xuICAgICAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LndpZGdldC5hZGRlZEluVmlldycsIHtcbiAgICAgICAgICAgICAgICBpbmRleDogISFmb3VuZFxuICAgICAgICAgICAgICAgICAgPyAoZm91bmQgYXMgeyBhY3R1YWxSYW5rOiBudW1iZXI7IHdpZGdldDogV2lkZ2V0TWFuaWZlc3QgfSkuYWN0dWFsUmFuayArIDFcbiAgICAgICAgICAgICAgICAgIDogbWFuaWZlc3RHbG9iYWwud2luZG93cy5sZW5ndGhcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG1lc3NhZ2VBY3Rpb24pO1xuXG4gICAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgdGhpcy5idXNTZXJ2aWNlLmJ1ZmZlclVudGlsSm9pbmVkKG1lc3NhZ2VBY3Rpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0KHsgbWFuaWZlc3Q6IG1hbmlmZXN0R2xvYmFsLCBzZWxlY3RlZElkcyB9KTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIG1vdmVXaWRnZXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMubW92ZVdpZGdldCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdyaWRMYXlvdXQpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuayksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5kYXNoYm9hcmRDZWxsUGFyYW1zKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnNlbGVjdGVkSXRlbUlkcylcbiAgICAgICksXG4gICAgICBtYXAoKFthY3Rpb24sIGxheW91dCwgX2dsb2JhbE1hbmlmZXN0LCByYW5rLCBwYXJhbXMsIHNlbGVjdGVkSWRzXSkgPT4ge1xuICAgICAgICBjb25zdCBtYW5pZmVzdEdsb2JhbCA9IHN0cnVjdHVyZWRDbG9uZShfZ2xvYmFsTWFuaWZlc3QpIGFzIEdsb2JhbE1hbmlmZXN0O1xuXG4gICAgICAgIGNvbnN0IG5ld1dpbmRvd3MgPSBbLi4ubWFuaWZlc3RHbG9iYWwud2luZG93c107XG5cbiAgICAgICAgLy8gQ3JlYXRpbmcgbmV3IGN1cnJlbnQgd2luZG93IG1hbmlmZXN0LCB3aXRob3V0IG1vdmVkIHdpZGdldFxuICAgICAgICBjb25zdCBteU5ld1dpbmRvdyA9IHtcbiAgICAgICAgICAuLi5uZXdXaW5kb3dzW3JhbmtdLFxuICAgICAgICAgIHdpZGdldHM6IFsuLi4obmV3V2luZG93c1tyYW5rXSA/PyB7IHdpZGdldHM6IFtdIH0pLndpZGdldHNdXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHdpZGdldCA9IG15TmV3V2luZG93LndpZGdldHMuc3BsaWNlKGFjdGlvbi53aWRnZXRJbmRleCwgMSlbMF07XG4gICAgICAgIG5ld1dpbmRvd3NbcmFua10gPSBteU5ld1dpbmRvdztcblxuICAgICAgICAvLyBDcmVhdGluZyBlaXRoZXIgYSBuZXcgd2luZG93IG1hbmlmZXN0IG9yIHVwZGF0ZSB0aGUgdGFyZ2V0IG9uZVxuICAgICAgICBjb25zdCB0YXJnZXRSYW5rID0gYWN0aW9uLnRhcmdldEluZGV4O1xuICAgICAgICBpZiAodGFyZ2V0UmFuayAhPT0gLTEpIHtcbiAgICAgICAgICBpZiAoIW5ld1dpbmRvd3NbdGFyZ2V0UmFua10pIHtcbiAgICAgICAgICAgIG5ld1dpbmRvd3NbdGFyZ2V0UmFua10gPSB7XG4gICAgICAgICAgICAgIC4uLm5ld1dpbmRvd3NbcmFua10sXG4gICAgICAgICAgICAgIHdpZGdldHM6IFt3aWRnZXRdXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgZm91bmQ6IHsgYWN0dWFsUmFuazogbnVtYmVyOyB3aWRnZXQ6IFdpZGdldE1hbmlmZXN0IH0gfCBudWxsID0gbnVsbDtcbiAgICAgICAgICAgIC8vIFRyeSB0byBmaW5kIGEgc3BvdCBpbiB3aW5kb3dzIChzdGFydGluZyBieSBjdXJyZW50IHJhbmssIHRoZW4gaW4gb3RoZXJzKVxuICAgICAgICAgICAgY29uc3Qgc2VxdWVuY2UgPSBXaWRnZXRQbGFjZW1lbnRVdGlscy5zd2FwQXJyYXlFbGVtZW50cyhcbiAgICAgICAgICAgICAgbmV3IEFycmF5KG1hbmlmZXN0R2xvYmFsLndpbmRvd3MubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaWR4LCBhcnJheSkgPT4gaWR4KSxcbiAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgcmFua1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8vIFRyeWluZyBhbGwgcGxhY2VtZW50IG9wdGlvbnMgaW4gdGFyZ2V0IHdpbmRvd1xuICAgICAgICAgICAgY29uc3Qgd2luZG93TGF5b3V0ID0gKG1hbmlmZXN0R2xvYmFsLndpbmRvd3NbdGFyZ2V0UmFua10gPz8ge30pLmdyaWQ/LmxheW91dCA/PyBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTDtcbiAgICAgICAgICAgIGlmICh3aW5kb3dMYXlvdXQgIT09IERhc2hib2FyZEdyaWRMYXlvdXQuTUFOVUFMKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBXaWRnZXRQbGFjZW1lbnRVdGlscy5wbGFjZW1lbnRPcHRpb25zKHdpZGdldCwgd2luZG93TGF5b3V0KTtcbiAgICAgICAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQXJlIHdlIGRpc2pvaW50IGZyb20gYWxsIG90aGVyIHdpZGdldHMgP1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0Rpc2pvaW50RnJvbUFsbCA9IChtYW5pZmVzdEdsb2JhbC53aW5kb3dzW3RhcmdldFJhbmtdLndpZGdldHMgPz8gW10pXG4gICAgICAgICAgICAgICAgICAgICAgLm1hcCgod2lkZ2V0KSA9PiBXaWRnZXRQbGFjZW1lbnRVdGlscy5hcmVEaXNqb2ludCh3aWRnZXQsIG9wdGlvbikpXG4gICAgICAgICAgICAgICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gcCAmJiBjLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzRGlzam9pbnRGcm9tQWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gRm91bmQgYSBkaXNqb2ludCBwbGFjZW1lbnQgIVxuICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0geyBhY3R1YWxSYW5rOiB0YXJnZXRSYW5rLCB3aWRnZXQ6IG9wdGlvbiB9IGFzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbFJhbms6IG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldDogV2lkZ2V0TWFuaWZlc3Q7XG4gICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gSW4gbWFudWFsIG1vZGUsIHdlIHNob3VsZCByZXNvbHZlQ29sbGlzaW9ucyBidXQgZm9yIG5vdyBpdCdzIG5vdCAoY2F1c2Ugd2Ugb25seSBoYXZlIGludmVydGVkIGNvbGxpc2lvbnMgcmlnaHQgbm93KVxuICAgICAgICAgICAgICBmb3VuZCA9IHsgYWN0dWFsUmFuazogdGFyZ2V0UmFuaywgd2lkZ2V0IH0gYXMge1xuICAgICAgICAgICAgICAgIGFjdHVhbFJhbms6IG51bWJlcjtcbiAgICAgICAgICAgICAgICB3aWRnZXQ6IFdpZGdldE1hbmlmZXN0O1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoISFmb3VuZCkge1xuICAgICAgICAgICAgICBjb25zdCBwbGFjZVdlRm91bmQgPSBmb3VuZCBhcyB7IGFjdHVhbFJhbms6IG51bWJlcjsgd2lkZ2V0OiBXaWRnZXRNYW5pZmVzdCB9O1xuICAgICAgICAgICAgICBuZXdXaW5kb3dzW3BsYWNlV2VGb3VuZC5hY3R1YWxSYW5rXS53aWRnZXRzLnB1c2gocGxhY2VXZUZvdW5kLndpZGdldCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBjdXJyZW50V2luZG93TGF5b3V0ID0gKG1hbmlmZXN0R2xvYmFsLndpbmRvd3NbcmFua10gPz8ge30pLmdyaWQ/LmxheW91dCA/PyBEYXNoYm9hcmRHcmlkTGF5b3V0LkZVTEw7XG5cbiAgICAgICAgICAgICAgLy8gc2kgbm9uIHRyb3V2w6kgOiBub3V2ZWxsZSBwYWdlLCBwcmVtacOocmUgcG9zaXRpb24gc3VnZ8OpcsOpZVxuICAgICAgICAgICAgICBjb25zdCBmaXJzdFByb3Bvc2VkTGF5b3V0ID0gV2lkZ2V0UGxhY2VtZW50VXRpbHMucGxhY2VtZW50T3B0aW9ucyh3aWRnZXQsIGN1cnJlbnRXaW5kb3dMYXlvdXQpWzBdO1xuXG4gICAgICAgICAgICAgIG5ld1dpbmRvd3MucHVzaCh7IHdpZGdldHM6IFtmaXJzdFByb3Bvc2VkTGF5b3V0ID8/IHdpZGdldF0sIGdyaWQ6IHsgbGF5b3V0OiBjdXJyZW50V2luZG93TGF5b3V0IH0gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGNyZWF0ZSBuZXcgd2luZG93IHRvIHdlbGNvbWUgdGhpcyB3aWRnZXRcbiAgICAgICAgICBuZXdXaW5kb3dzLnB1c2goe1xuICAgICAgICAgICAgLi4ubmV3V2luZG93c1tyYW5rXSxcbiAgICAgICAgICAgIHdpZGdldHM6IFt3aWRnZXRdXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdCh7IG1hbmlmZXN0OiB7IC4uLm1hbmlmZXN0R2xvYmFsLCB3aW5kb3dzOiBuZXdXaW5kb3dzIH0sIHNlbGVjdGVkSWRzIH0pO1xuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgbXVsdGlTbmFja0JhciQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMubXVsdGlTbmFja0JhciksXG4gICAgICAgIHRhcCgoYWN0aW9uKSA9PiB0aGlzLnNuYWNrQmFyLm9wZW4oYWN0aW9uLm1lc3NhZ2UpKVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgcmVsYXVuY2hBZnRlck9yZGVyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnF1aWNrT3JkZXIpLFxuICAgICAgbWFwKChhY3Rpb24pID0+XG4gICAgICAgIFNlYXJjaEFjdGlvbnMuZ2V0RGF0YXNvdXJjZUl0ZW1zKHtcbiAgICAgICAgICBpZDogYWN0aW9uLmRhdGFzb3VyY2VJZCxcbiAgICAgICAgICBleGNsdWRlR2VvOiB0cnVlLFxuICAgICAgICAgIGZyb206ICdEYXNoYm9hcmRFZmZlY3RzLnJlbGF1bmNoQWZ0ZXJPcmRlciQnXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHByb3BhZ2F0ZUdyaWRMYXlvdXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuc2V0R3JpZExheW91dCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuayksIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy53aW5kb3dNYW5pZmVzdCkpLFxuICAgICAgbWFwKChbYWN0aW9uLCByYW5rLCB3aW5kb3dNYW5pZmVzdF0pID0+IERhc2hib2FyZEFjdGlvbnMucHJvcGFnYXRlR3JpZExheW91dCh7IG1hbmlmZXN0OiB3aW5kb3dNYW5pZmVzdCwgcmFuayB9KSlcbiAgICApXG4gICk7XG5cbiAgdG9nZ2xlRWRpdGlvbk1vZGVJZk5vdE1hbnVhbCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5zZXRHcmlkTGF5b3V0KSxcbiAgICAgIGZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24ubGF5b3V0ICE9PSBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTCksXG4gICAgICBtYXAoKCkgPT4gRGFzaGJvYXJkQWN0aW9ucy50b2dnbGVFZGl0aW9uTW9kZSh7IGZvcmNlOiBmYWxzZSB9KSlcbiAgICApXG4gICk7XG5cbiAgZ2V0Q2FwYWJpbGl0eSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5nZXRDYXBhYmlsaXR5KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5jYXBhYmlsaXRpZXMpKSxcbiAgICAgIGZpbHRlcihcbiAgICAgICAgKFthY3Rpb24sIGNhcGFiaWxpdGllc10pID0+XG4gICAgICAgICAgKCEhY2FwYWJpbGl0aWVzICYmICEhYWN0aW9uLnVybCAmJiAoIWNhcGFiaWxpdGllc1thY3Rpb24udXJsXSB8fCAhY2FwYWJpbGl0aWVzW2FjdGlvbi51cmxdIS5kb2MpKSB8fFxuICAgICAgICAgICEhYWN0aW9uLmZvcmNlXG4gICAgICApLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIF9dKSA9PlxuICAgICAgICB0aGlzLndtc1NlcnZpY2UuZ2V0Q2FwYWJpbGl0aWVzKGFjdGlvbi51cmwpLnBpcGUoXG4gICAgICAgICAgbWFwKChjYXBhYmlsaXR5KSA9PiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZUNhcGFiaWxpdHkoeyB1cmw6IGFjdGlvbi51cmwsIGNhcGFiaWxpdHkgfSkpLFxuICAgICAgICAgIHN0YXJ0V2l0aChEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZUNhcGFiaWxpdHkoeyB1cmw6IGFjdGlvbi51cmwsIGNhcGFiaWxpdHk6IG51bGwgfSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZ2V0V21zRmVhdHVyZXMgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5nZXRXbXNGZWF0dXJlcyksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PiBjb21iaW5lTGF0ZXN0KFtvZihhY3Rpb24pLCB0aGlzLndtc1NlcnZpY2UuZ2V0V21zRmVhdHVyZXMoYWN0aW9uLnVybCldKSksXG4gICAgICBtYXAoKFthY3Rpb24sIGpzb25dKSA9PiB7XG4gICAgICAgIHJldHVybiBEYXNoYm9hcmRBY3Rpb25zLmFkZFdtc0ZlYXR1cmVzKHtcbiAgICAgICAgICBmZWF0dXJlczoganNvbi5mZWF0dXJlcy5tYXAoKGZlYXR1cmU6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSB7XG4gICAgICAgICAgICAgIGlkOiBmZWF0dXJlLmlkLFxuICAgICAgICAgICAgICBvQ2xhc3M6IGFjdGlvbi5vQ2xhc3MsXG4gICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBhY3Rpb24uY29vcmRpbmF0ZXMsXG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IE9iamVjdC5rZXlzKGZlYXR1cmUucHJvcGVydGllcylcbiAgICAgICAgICAgICAgICAubWFwKChwcm9wZXJ0eSkgPT4gKHsga2V5OiBwcm9wZXJ0eSwgdmFsdWU6IGZlYXR1cmUucHJvcGVydGllc1twcm9wZXJ0eV0gfSkpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigocHJvcCkgPT4gcHJvcC52YWx1ZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY29tcG9uZW50SWQ6IGFjdGlvbi5jb21wb25lbnRJZFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIGdldFdmc0ZlYXR1cmVzRm9yUG9pbnRTdGFjayA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmdldFdmc0ZlYXR1cmVzRm9yUG9pbnRTdGFja1Rvb2x0aXBzKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+IGNvbWJpbmVMYXRlc3QoW29mKGFjdGlvbiksIHRoaXMud21zU2VydmljZS5nZXRXbXNGZWF0dXJlcyhhY3Rpb24udXJsKV0pKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCB3bXNKc29uXSkgPT4ge1xuICAgICAgICAvLyBjaGVjayBpZiBkYXRhIGlzIGFjdHVhbGx5IGEgc3RhY2sgb2YgcG9pbnRzXG4gICAgICAgIGlmIChcbiAgICAgICAgICB3bXNKc29uLmZlYXR1cmVzWzBdICYmXG4gICAgICAgICAgd21zSnNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzLmNvdW50ICYmXG4gICAgICAgICAgd21zSnNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzLmNvdW50dW5pcXVlICYmXG4gICAgICAgICAgd21zSnNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzLmNvdW50ID4gMVxuICAgICAgICApIHtcbiAgICAgICAgICBsZXQgZW52QkJPWENvb3JkcyA9IFsuLi53bXNKc29uLmZlYXR1cmVzWzBdLnByb3BlcnRpZXMuZW52QkJPWC5tYXRjaEFsbCgvXFxkKy5cXGQrL2cpXS5tYXAoKG0pID0+XG4gICAgICAgICAgICBwYXJzZUZsb2F0KG1bMF0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy53bXNTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0V2ZzRmVhdHVyZXMoYWN0aW9uLnVybCwgZW52QkJPWENvb3JkcylcbiAgICAgICAgICAgIC5waXBlKG1hcCgod2ZzSnNvbikgPT4gKHsgYWN0aW9uLCBqc29uOiB3ZnNKc29uIH0pKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgZGF0YSBpcyBub3QgYSBzdGFjayBqdXN0IGFkZCBmZWF0dXJlcyB3aXRob3V0IGNhbGxpbmcgd2ZzIHNlcnZpY2VcbiAgICAgICAgcmV0dXJuIG9mKHsgYWN0aW9uLCBqc29uOiB3bXNKc29uIH0pO1xuICAgICAgfSksXG4gICAgICBtYXAoKHsgYWN0aW9uLCBqc29uIH0pID0+XG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuYWRkV21zRmVhdHVyZXMoe1xuICAgICAgICAgIGZlYXR1cmVzOiBqc29uLmZlYXR1cmVzLm1hcCgoZmVhdHVyZTogYW55KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IGZlYXR1cmUuaWQsXG4gICAgICAgICAgICBvQ2xhc3M6IGFjdGlvbi5vQ2xhc3MsXG4gICAgICAgICAgICBjb29yZGluYXRlczogYWN0aW9uLmNvb3JkaW5hdGVzLFxuICAgICAgICAgICAgcHJvcGVydGllczogT2JqZWN0LmtleXMoZmVhdHVyZS5wcm9wZXJ0aWVzKVxuICAgICAgICAgICAgICAubWFwKChwcm9wZXJ0eSkgPT4gKHsga2V5OiBwcm9wZXJ0eSwgdmFsdWU6IGZlYXR1cmUucHJvcGVydGllc1twcm9wZXJ0eV0gfSkpXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHByb3ApID0+ICEhcHJvcC52YWx1ZSlcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgY29tcG9uZW50SWQ6IGFjdGlvbi5jb21wb25lbnRJZFxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHdoaWxlIGZldGNoaW5nIFdGUyBmZWF0dXJlcycsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIG9mKERhc2hib2FyZEFjdGlvbnMuYWRkV21zRmVhdHVyZXMoeyBmZWF0dXJlczogW10sIGNvbXBvbmVudElkOiAnZXJyb3InIH0pKTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIGFkZE1hbmlmZXN0TWV0YWRhdGEgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5hZGRNYW5pZmVzdE1ldGFkYXRhKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlLmFkZE1ldGFkYXRhKGFjdGlvbi5wcmVzZW50YXRpb25JZCwgYWN0aW9uLm1ldGFkYXRhSWQsIGFjdGlvbi52YWx1ZSkucGlwZShcbiAgICAgICAgICBtYXAoKCkgPT4gRGFzaGJvYXJkQWN0aW9ucy5mZXRjaE1hbmlmZXN0c0xpc3QoKSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5zYXZlRXJyb3JDb2RlLlNBVkVfTUVUQURBVEEnLCB7XG4gICAgICAgICAgICAgICAgICBjb2RlOiBlcnJvci5zdGF0dXNcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGRlbGV0ZU1hbmlmZXN0TWV0YWRhdGEkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZGVsZXRlTWFuaWZlc3RNZXRhZGF0YSksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLm1hbmlmZXN0U2VydmljZVxuICAgICAgICAgIC5kZWxldGVNZXRhZGF0YShhY3Rpb24ucHJlc2VudGF0aW9uSWQsIGFjdGlvbi5tZXRhZGF0YUlkKVxuICAgICAgICAgIC5waXBlKG1hcCgoKSA9PiBEYXNoYm9hcmRBY3Rpb25zLmZldGNoTWFuaWZlc3RzTGlzdCgpKSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbG9hZFByZXNlbnRhdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5sb2FkUHJlc2VudGF0aW9uKSxcbiAgICAgIHRhcCgoKSA9PlxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3Qoe1xuICAgICAgICAgICAgbWFuaWZlc3Q6IHsgd2luZG93czogW10gfSxcbiAgICAgICAgICAgIHNlbGVjdGVkSWRzOiBbXVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICksXG4gICAgICB0YXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdFByZXNlbnRhdGlvbih7XG4gICAgICAgICAgICBwcmVzZW50YXRpb246IGFjdGlvbi5wcmVzZW50YXRpb24sXG4gICAgICAgICAgICB2aWV3TW9kZTogYWN0aW9uLnZpZXdNb2RlXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIHRhcCgoYWN0aW9uKSA9PiB0aGlzLnRpdGxlU2VydmljZS5jaGFuZ2VUaXRsZShhY3Rpb24ucHJlc2VudGF0aW9uLm5hbWUpKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlLmdldChhY3Rpb24ucHJlc2VudGF0aW9uLmlkKS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKChtYW5pZmVzdCkgPT4gW1xuICAgICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdCh7XG4gICAgICAgICAgICAgIG1hbmlmZXN0LFxuICAgICAgICAgICAgICBzZWxlY3RlZElkczogW10sXG4gICAgICAgICAgICAgIG1hbmlmZXN0SWQ6IGFjdGlvbi5wcmVzZW50YXRpb24uaWRcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZXRJbml0aWFsUHJlc2VudGF0aW9uKHtcbiAgICAgICAgICAgICAgaW5pdGlhbDogYWN0aW9uLnZpZXdNb2RlID09PSBWaWV3TW9kZS5DT05TVUxUID8gdW5kZWZpbmVkIDogbWFuaWZlc3RcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVEaXNwbGF5T3B0aW9ucyh7XG4gICAgICAgICAgICAgIG1vZGU6IGFjdGlvbi52aWV3TW9kZVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmZvbGxvd01hbmlmZXN0Um91dGUoKVxuICAgICAgICAgIF0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXNoYm9hcmRJbml0U2VydmljZTogRGFzaGJvYXJkSW5pdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxhbnk+LFxuICAgIHByaXZhdGUgbWFuaWZlc3RTZXJ2aWNlOiBNYW5pZmVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpdGVtU2VydmljZTogSXRlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFByeVRpdGxlU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFByeUkxOG5TZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IFByeVNuYWNrYmFyU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVmcmVzaFNlcnZpY2U6IFJlZnJlc2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9vbGJveE1hbmlmZXN0U2VydmljZTogVG9vbGJveE1hbmlmZXN0U2VydmljZSxcbiAgICBwcml2YXRlIGJ1c1NlcnZpY2U6IEJ1c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJ5RGlhbG9nOiBQcnlEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgd21zU2VydmljZTogV21zU2VydmljZSxcbiAgICBwcml2YXRlIHdpZGdldEZhY3RvcnlTZXJ2aWNlOiBXaWRnZXRGYWN0b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGkxOG5TZXJ2aWNlOiBQcnlJMThuU2VydmljZVxuICApIHtcbiAgICBkYXNoYm9hcmRJbml0U2VydmljZS5pbml0KCk7XG4gICAgcmVmcmVzaFNlcnZpY2Uuc3RhcnQoKTtcbiAgfVxufVxuIl19
|
|
507
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL3N0b3JlL2Rhc2hib2FyZC5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFXLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RyxPQUFPLEVBQ0wseUJBQXlCLEVBRTFCLE1BQU0sd0RBQXdELENBQUM7QUFJaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFrQyxNQUFNLHFDQUFxQyxDQUFDO0FBSTFHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUkxRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBTTNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7Ozs7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LFFBQVE7YUFDckUsQ0FBQztZQUNGLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDO2dCQUNwQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFFBQVE7YUFDdEIsQ0FBQztZQUNGLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFO1NBQ3ZDLENBQUMsQ0FDSCxDQUNGLENBQ0YsQ0FDRixDQUFDO1FBcUJBLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDOzhHQWg3QlUsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgZGVsYXksIG1lcmdlLCBvZiwgc3RhcnRXaXRoLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBtZXJnZU1hcCwgdGFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIFByeURpYWxvZ0NvbmZpcm1Db21wb25lbnQsXG4gIFByeURpYWxvZ0NvbmZpcm1EYXRhXG59IGZyb20gJy4uLy4uL2NvcmUvY29tcG9uZW50cy9vdmVybGF5L2RpYWxvZy1jb25maXJtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcnlEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9jb21wb25lbnRzL292ZXJsYXkvZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJ5U25hY2tiYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9jb21wb25lbnRzL3NuYWNrYmFyL3NuYWNrYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJ5STE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IERhc2hib2FyZEdyaWRMYXlvdXQsIEdsb2JhbE1hbmlmZXN0LCBXaWRnZXRNYW5pZmVzdCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvbWFuaWZlc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IENoYXJ0V2lkZ2V0T3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvd2lkZ2V0LWNoYXJ0LW1hbmlmZXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBNYXBXaWRnZXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbC93aWRnZXQtbWFwLW1hbmlmZXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJdGVtU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvaXRlbS9pdGVtLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VhcmNoQWN0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvc2VhcmNoL3NlYXJjaC5hY3Rpb25zJztcbmltcG9ydCB7IERFRkFVTFRfTkFNRURfUVVFUllfSUQsIEVYUExPUkVfTkFNRURfUVVFUllfSUQgfSBmcm9tICcuLi8uLi9jb3JlL3N0b3JlL3NlYXJjaC9zZWFyY2guY29uc3RhbnRzJztcbmltcG9ydCB7IFNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3N0b3JlL3NlYXJjaC9zZWFyY2guc2VydmljZSc7XG5pbXBvcnQgeyBUb29sYm94TWFuaWZlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90b29sYm94L3Rvb2xib3gtbWFuaWZlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBCdXNTZXJ2aWNlIH0gZnJvbSAnLi4vYWN0aW9uLWJ1cy9zZXJ2aWNlL2J1cy5zZXJ2aWNlJztcbmltcG9ydCB7IFdpZGdldFBsYWNlbWVudFV0aWxzIH0gZnJvbSAnLi4vY29tcG9uZW50cy93aWRnZXRzL3dpZGdldC1wbGFjZW1lbnQvd2lkZ2V0LXBsYWNlbWVudC51dGlscyc7XG5pbXBvcnQgeyBSZXN1bHRzZXRVdGlscyB9IGZyb20gJy4uL3Jlc3VsdHNldC11dGlscyc7XG5pbXBvcnQgeyBEYXNoYm9hcmRJbml0U2VydmljZSB9IGZyb20gJy4vZGFzaGJvYXJkLWluaXQuc2VydmljZSc7XG5pbXBvcnQgeyBEYXNoYm9hcmRBY3Rpb25zLCBWaWV3TW9kZSB9IGZyb20gJy4vZGFzaGJvYXJkLmFjdGlvbnMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkU2VsZWN0b3JzIH0gZnJvbSAnLi9kYXNoYm9hcmQuc2VsZWN0b3JzJztcbmltcG9ydCB7IE1hbmlmZXN0U2VydmljZSB9IGZyb20gJy4vbWFuaWZlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBSZWZyZXNoU2VydmljZSB9IGZyb20gJy4vcmVmcmVzaC5zZXJ2aWNlJztcbmltcG9ydCB7IFByeVRpdGxlU2VydmljZSB9IGZyb20gJy4vdGl0bGUuc2VydmljZSc7XG5pbXBvcnQgeyBXbXNTZXJ2aWNlIH0gZnJvbSAnLi93bXMuc2VydmljZSc7XG5pbXBvcnQgeyBXaWRnZXRGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvd2lkZ2V0cy93aWRnZXQtaW5zdGFuY2lhdG9yL3dpZGdldC1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZVNlbGVjdG9ycyB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvZGF0YS1zb3VyY2UvZGF0YS1zb3VyY2Uuc2VsZWN0b3JzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhc2hib2FyZEVmZmVjdHMge1xuICBqb2luJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmpvaW4pLFxuICAgICAgZGVsYXkoMTAwMCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMudGVuYW50cyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yZXN1bHRTZXRzKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnNlbGVjdGVkSXRlbUlkcyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5wcmVzZW50YXRpb24pLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZGlzcGxheU9wdGlvbnMpXG4gICAgICApLFxuICAgICAgZmlsdGVyKChbYWN0aW9uLCByYW5rLCB0ZW5hbnRzLCBtYW5pZmVzdCwgcmVzdWx0U2V0cywgZGlzcGxheV0pID0+IHJhbmsgPT09IDApLFxuICAgICAgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgICBtYXAoKFthY3Rpb24sIHJhbmssIHRlbmFudHMsIG1hbmlmZXN0LCByZXN1bHRTZXRzLCBzZWxlY3RlZElkcywgcHJlc2VudGF0aW9uLCBkaXNwbGF5XSkgPT5cbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyVGVuYW50Sm9pbih7XG4gICAgICAgICAgdGVuYW50cywgLy8gd2UgYWxyZWFkeSBoYXZlIGFkZGVkIHRlbmFudCBpbiB0aGUgcmVkdWNlIG9mIHRoZSBcImpvaW5cIiBhY3Rpb25cbiAgICAgICAgICBtYW5pZmVzdDoge1xuICAgICAgICAgICAgLi4ubWFuaWZlc3QsXG4gICAgICAgICAgICB3aW5kb3dzOiBtYW5pZmVzdC53aW5kb3dzXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXN1bHRTZXRzLFxuICAgICAgICAgIHNlbGVjdGVkSWRzLFxuICAgICAgICAgIGpvaW5pbmc6IHRydWUsXG4gICAgICAgICAgcHJlc2VudGF0aW9uLFxuICAgICAgICAgIGRpc3BsYXlcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGVhdmUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMubGVhdmUpLFxuICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnRlbmFudHMpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKVxuICAgICAgKSxcbiAgICAgIGZpbHRlcigoW2FjdGlvbiwgcmFuaywgdGVuYW50cywgbWFuaWZlc3RdKSA9PiByYW5rID09PSAwIHx8ICh0ZW5hbnRzWzBdID09PSBhY3Rpb24uc2VuZGVyICYmIHJhbmsgPT09IDEpKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwgcmFuaywgdGVuYW50cywgbWFuaWZlc3QsIHNlbGVjdGVkSWRzXSkgPT4ge1xuICAgICAgICBjb25zdCBsZWF2ZXJSYW5rID0gdGVuYW50cy5pbmRleE9mKGFjdGlvbi5zZW5kZXIpO1xuICAgICAgICBjb25zdCBuZXdUZW5hbnRzTGlzdCA9IFsuLi50ZW5hbnRzXTtcbiAgICAgICAgY29uc3QgbmV3V2luZG93TGlzdCA9IFsuLi5tYW5pZmVzdC53aW5kb3dzXTtcbiAgICAgICAgaWYgKGxlYXZlclJhbmsgPiAtMSkge1xuICAgICAgICAgIG5ld1RlbmFudHNMaXN0LnNwbGljZShsZWF2ZXJSYW5rLCAxKTtcbiAgICAgICAgICBuZXdXaW5kb3dMaXN0LnNwbGljZShsZWF2ZXJSYW5rLCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJUZW5hbnRMZWF2ZSh7XG4gICAgICAgICAgdGVuYW50czogbmV3VGVuYW50c0xpc3QsXG4gICAgICAgICAgbWFuaWZlc3Q6IHtcbiAgICAgICAgICAgIC4uLm1hbmlmZXN0LFxuICAgICAgICAgICAgd2luZG93czogbmV3V2luZG93TGlzdFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZWN0ZWRJZHNcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBmZXRjaFN0YXRpY01hbmlmZXN0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmZldGNoU3RhdGljTWFuaWZlc3QpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspLCB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKSksXG4gICAgICBmaWx0ZXIoKFthY3Rpb24sIHJhbmtdKSA9PiByYW5rID09PSAwKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCByYW5rXSkgPT5cbiAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2VcbiAgICAgICAgICAuZ2V0KGFjdGlvbi5pZClcbiAgICAgICAgICAucGlwZShtYXAoKHN0YXRpY01hbmlmZXN0KSA9PiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZVN0YXRpY01hbmlmZXN0KHsgc3RhdGljTWFuaWZlc3QgfSkpKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsb2FkQW5kQWN0aXZhdGVNYW5pZmVzdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5sb2FkQW5kQWN0aXZhdGVNYW5pZmVzdCwgRGFzaGJvYXJkQWN0aW9ucy5sb2FkTWFuaWZlc3QpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspLCB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKSksXG4gICAgICBmaWx0ZXIoKFthY3Rpb24sIHJhbmtdKSA9PiByYW5rID09PSAwKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCByYW5rLCBzZWxlY3RlZElkc10pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlLmdldChhY3Rpb24uaWQpLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKG1hbmlmZXN0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYWN0aW9uLnR5cGUgPT09IERhc2hib2FyZEFjdGlvbnMubG9hZEFuZEFjdGl2YXRlTWFuaWZlc3QudHlwZVxuICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlckZldGNoKHsgbWFuaWZlc3QsIG1hbmlmZXN0SWQ6IGFjdGlvbi5pZCwgc2VsZWN0ZWRJZHMgfSksXG4gICAgICAgICAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmZvbGxvd01hbmlmZXN0Um91dGUoKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgOiBbRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdFdpdGhvdXRBY3RpdmF0aW9uKHsgbWFuaWZlc3QsIG1hbmlmZXN0SWQ6IGFjdGlvbi5pZCwgc2VsZWN0ZWRJZHMgfSldO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgY2xlYXJNYW5pZmVzdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5jbGVhck1hbmlmZXN0KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKVxuICAgICAgKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwgbWFuaWZlc3QsIHNlbGVjdGVkSWRzXSkgPT5cbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyRmV0Y2goeyBtYW5pZmVzdCwgbWFuaWZlc3RJZDogJycsIHNlbGVjdGVkSWRzIH0pXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGRvd25sb2FkTWFuaWZlc3QkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmRvd25sb2FkTWFuaWZlc3QpLFxuICAgICAgICB0YXAoKGFjdGlvbikgPT5cbiAgICAgICAgICB0aGlzLm1hbmlmZXN0U2VydmljZS5nZXQoYWN0aW9uLmlkKS5zdWJzY3JpYmUoKG1hbmlmZXN0OiBHbG9iYWxNYW5pZmVzdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9ICdkYXRhOnRleHQvanNvbjtjaGFyc2V0PXV0Zi04LCcgKyBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QpKTtcbiAgICAgICAgICAgIGNvbnN0IGRsQW5jaG9yRWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgIGRsQW5jaG9yRWxlbS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBkYXRhU3RyKTtcbiAgICAgICAgICAgIGRsQW5jaG9yRWxlbS5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgYCR7YWN0aW9uLm5hbWV9Lmpzb25gKTtcbiAgICAgICAgICAgIGRsQW5jaG9yRWxlbS5jbGljaygpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIGZvbGxvd01hbmlmZXN0Um91dGUkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmZvbGxvd01hbmlmZXN0Um91dGUpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMud2luZG93TWFuaWZlc3QpKSxcbiAgICAgICAgdGFwKChbYWN0aW9uLCBtYW5pZmVzdF0pID0+IHtcbiAgICAgICAgICBpZiAobWFuaWZlc3Qucm91dGUpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwobWFuaWZlc3Qucm91dGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIGVuZExvYWRpbmdBZnRlckZvbGxvd2luZ01hbmlmZXN0Um91dGUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZm9sbG93TWFuaWZlc3RSb3V0ZSksXG4gICAgICBtYXAoKGFjdGlvbikgPT4gRGFzaGJvYXJkQWN0aW9ucy5lbmRMb2FkaW5nKCkpXG4gICAgKVxuICApO1xuXG4gIHJlcXVlc3RNYW5pZmVzdFJvdXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnJlcXVlc3RBbGxSb3V0ZXMpLFxuICAgICAgbWFwKCgpID0+IERhc2hib2FyZEFjdGlvbnMudXBkYXRlUm91dGVNYW5pZmVzdCh7IHJvdXRlOiB0aGlzLnJvdXRlci51cmwgfSkpXG4gICAgKVxuICApO1xuXG4gIHJlcXVlc3RNYW5pZmVzdHNUb0VtaXQkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnJlcXVlc3RNYW5pZmVzdHNUb0VtaXQpLFxuICAgICAgICB0YXAoKCkgPT4gZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2VtaXQtbWFuaWZlc3QnKSkpXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBkaXNwYXRjaEZpbHRlciQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5kaXNwYXRjaEZpbHRlcnMpLFxuICAgICAgbWFwKCgpID0+IERhc2hib2FyZEFjdGlvbnMucmVxdWVzdE1hbmlmZXN0c1RvRW1pdCgpKVxuICAgIClcbiAgKTtcblxuICBhc3NlcnRSZXN1bHRTZXRzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5hc3NlcnRSZXN1bHRTZXRzLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmRpc3BhdGNoRmlsdGVycyxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5jbGVhckFsbEZpbHRlclZhbHVlc1xuICAgICAgKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmVzdWx0U2V0cyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yZXN1bHRTZXRzUGFyYW1zKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnF1aWNrT3JkZXIpXG4gICAgICApLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIG1hbmlmZXN0LCByZXN1bHRTZXRzLCByZXN1bHRTZXRzUGFyYW1zLCBxdWlja09yZGVyXSkgPT4ge1xuICAgICAgICBjb25zdCBtYW5pZmVzdFRvQ2hlY2s6IEdsb2JhbE1hbmlmZXN0ID1cbiAgICAgICAgICAoYWN0aW9uLnR5cGUgPT09IERhc2hib2FyZEFjdGlvbnMuYXNzZXJ0UmVzdWx0U2V0cy50eXBlIHx8XG4gICAgICAgICAgICBhY3Rpb24udHlwZSA9PT0gRGFzaGJvYXJkQWN0aW9ucy5kaXNwYXRjaEZpbHRlcnMudHlwZSkgJiZcbiAgICAgICAgICBhY3Rpb24uc3RhdGljTWFuaWZlc3RcbiAgICAgICAgICAgID8geyB3aW5kb3dzOiBbYWN0aW9uLnN0YXRpY01hbmlmZXN0XSB9XG4gICAgICAgICAgICA6IG1hbmlmZXN0O1xuXG4gICAgICAgIC8vIEZpcnN0IHNlbmQgYWdncmVnYXRlIHVwZGF0ZXNcbiAgICAgICAgY29uc3QgdG9BZ2dyZWdhdGVBY3Rpb25zID0gKFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIC4uLm5ldyBTZXQoXG4gICAgICAgICAgICAgIG1hbmlmZXN0VG9DaGVjay53aW5kb3dzXG4gICAgICAgICAgICAgICAgLm1hcCgod2luTWFuaWZlc3QpID0+ICh3aW5NYW5pZmVzdCA/PyB7fSkud2lkZ2V0cyA/PyBbXSlcbiAgICAgICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBbLi4ucCwgLi4uY10sIFtdKVxuICAgICAgICAgICAgICAgIC5tYXAoKHdpZE1hbmlmZXN0KSA9PiB0aGlzLndpZGdldEZhY3RvcnlTZXJ2aWNlLmFnZ3JlZ2F0ZXNUb0F1dG9Mb2FkKHdpZE1hbmlmZXN0KSlcbiAgICAgICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBbLi4ucCwgLi4uY10sIFtdIGFzIHN0cmluZ1tdKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0gYXMgc3RyaW5nW11cbiAgICAgICAgKS5tYXAoKGRzKSA9PiBEYXNoYm9hcmRBY3Rpb25zLnRyaWdnZXJBZ2dyZWdhdGUoeyBpZDogZHMgfSkpO1xuXG4gICAgICAgIGNvbnN0IHRvSXRlbXNBY3Rpb25zID0gT2JqZWN0LnZhbHVlcyhcbiAgICAgICAgICBtYW5pZmVzdFRvQ2hlY2sud2luZG93c1xuICAgICAgICAgICAgLm1hcCgod2luTWFuaWZlc3QpID0+ICh3aW5NYW5pZmVzdCA/PyB7fSkud2lkZ2V0cyA/PyBbXSlcbiAgICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IFsuLi5wLCAuLi5jXSwgW10pXG4gICAgICAgICAgICAubWFwKCh3aWRNYW5pZmVzdCkgPT4gdGhpcy53aWRnZXRGYWN0b3J5U2VydmljZS5kYXRhc291cmNlc1RvQXV0b0xvYWQod2lkTWFuaWZlc3QpKVxuICAgICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgICAgKHAsIGMpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4ucCxcbiAgICAgICAgICAgICAgICBbYy5kYXRhc2V0SWRdOiB7XG4gICAgICAgICAgICAgICAgICAuLi5wW2MuZGF0YXNldElkXSxcbiAgICAgICAgICAgICAgICAgIC4uLmMsXG4gICAgICAgICAgICAgICAgICBleGNsdWRlR2VvOiBwW2MuZGF0YXNldElkXT8uZXhjbHVkZUdlbyA9PT0gZmFsc2UgPyBwW2MuZGF0YXNldElkXS5leGNsdWRlR2VvIDogYy5leGNsdWRlR2VvXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAge30gYXMgeyBba2V5OiBzdHJpbmddOiB7IGRhdGFzZXRJZDogc3RyaW5nOyBleGNsdWRlR2VvOiBib29sZWFuIH0gfVxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgIChyZXN1bHRTZXQpID0+XG4gICAgICAgICAgICAgICEhcmVzdWx0U2V0LmRhdGFzZXRJZCAmJlxuICAgICAgICAgICAgICByZXN1bHRTZXQuZGF0YXNldElkICE9PSAnJyAmJlxuICAgICAgICAgICAgICAoIXJlc3VsdFNldHNbcmVzdWx0U2V0LmRhdGFzZXRJZF0gfHxcbiAgICAgICAgICAgICAgICByZXN1bHRTZXRzUGFyYW1zW3Jlc3VsdFNldC5kYXRhc2V0SWRdICE9PVxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmdldEl0ZW1zU2VyaWFsaXplZFBhcmFtcyhyZXN1bHRTZXQuZGF0YXNldElkLCBxdWlja09yZGVyKSlcbiAgICAgICAgICApXG4gICAgICAgICAgLm1hcCgocmVzdWx0U2V0KSA9PlxuICAgICAgICAgICAgU2VhcmNoQWN0aW9ucy5nZXREYXRhc291cmNlSXRlbXMoe1xuICAgICAgICAgICAgICBpZDogcmVzdWx0U2V0LmRhdGFzZXRJZCxcbiAgICAgICAgICAgICAgZXhjbHVkZUdlbzogcmVzdWx0U2V0LmV4Y2x1ZGVHZW8sXG4gICAgICAgICAgICAgIGZyb206ICdEYXNoYm9hcmRFZmZlY3RzLmFzc2VydFJlc3VsdFNldHMkLTEnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIFsuLi50b0l0ZW1zQWN0aW9ucywgLi4udG9BZ2dyZWdhdGVBY3Rpb25zXTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIHNlbmRBZ2dyZWdhdGVzRXZlbnQkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnRyaWdnZXJBZ2dyZWdhdGUpLFxuICAgICAgICBmaWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLmlkICE9PSBERUZBVUxUX05BTUVEX1FVRVJZX0lEICYmIGFjdGlvbi5pZCAhPT0gRVhQTE9SRV9OQU1FRF9RVUVSWV9JRCksXG4gICAgICAgIHRhcCgoYWN0aW9uKSA9PiB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2RhdGFzb3VyY2VSZWZyZXNoJywgeyBkZXRhaWw6IGFjdGlvbi5pZCB9KSkpXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBzdGFydE1pc3NpbmdWaWV3QWZ0ZXJWaWV3VXBkYXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdCxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyRmV0Y2gsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlclRlbmFudExlYXZlLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJUZW5hbnRKb2luLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmV4cGxvcmUsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuZGV0YWlsLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnJlc3RvcmVJbml0aWFsTWFuaWZlc3QsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuY3JlYXRlVGFiLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLm1vdmVXaWRnZXRcbiAgICAgICksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuaykpLFxuICAgICAgZmlsdGVyKChbYWN0aW9uLCByYW5rXSkgPT4gcmFuayA9PT0gMCksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PiBbXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuc3RhcnRpbmdNaXNzaW5nVmlld3MoKSxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5hc3NlcnRSZXN1bHRTZXRzKHt9KSxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zb2x2ZUNvbGxpc2lvbnMoKVxuICAgICAgXSlcbiAgICApXG4gICk7XG5cbiAgdXBkYXRlVGl0bGUkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0LFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlclRlbmFudEpvaW4sXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyVGVuYW50TGVhdmUsXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyRmV0Y2gsXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5kZWNsYXJlU2VuZGVySWRcbiAgICAgICAgKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspKSxcbiAgICAgICAgdGFwKChbYWN0aW9uLCByYW5rXSkgPT4ge1xuICAgICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLmNoYW5nZVRpdGxlKCk7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBvcGVuT3RoZXIkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnN0YXJ0aW5nTWlzc2luZ1ZpZXdzKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspLFxuICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy50ZW5hbnRzKSxcbiAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpXG4gICAgICAgICksXG4gICAgICAgIGRlYm91bmNlVGltZSgxMDAwKSxcbiAgICAgICAgZmlsdGVyKChbYWN0aW9uLCByYW5rLCB0ZW5hbnRzLCBtYW5pZmVzdF0pID0+IHJhbmsgPT09IDApLFxuICAgICAgICB0YXAoKFthY3Rpb24sIHJhbmssIHRlbmFudHMsIG1hbmlmZXN0XSkgPT4ge1xuICAgICAgICAgIG1hbmlmZXN0LndpbmRvd3MuZm9yRWFjaCgod2luZG93TWFuaWZlc3QsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRlbmFudHNbaW5kZXhdKSB7XG4gICAgICAgICAgICAgIC8vIElmIG5vIHdpbmRvdyBpcyBvcGVuZWQgZm9yIHRoaXMgcGFydCwgdGhlbiBvcGVuIG9uZVxuICAgICAgICAgICAgICB3aW5kb3cub3Blbih3aW5kb3dNYW5pZmVzdC5yb3V0ZSA/PyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUsICdfYmxhbmsnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIHNhdmVNYW5pZmVzdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5zYXZlTWFuaWZlc3QpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdsb2JhbE1hbmlmZXN0KSksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXRhU291cmNlU2VsZWN0b3JzLmRhdGFzZXRzKSksXG4gICAgICBtZXJnZU1hcCgoW1thY3Rpb24sIGN1cnJlbnRNYW5pZmVzdF0sIGRhdGFzZXRzXSkgPT5cbiAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2VcbiAgICAgICAgICAuc2F2ZShcbiAgICAgICAgICAgIGFjdGlvbi5uYW1lLFxuICAgICAgICAgICAgYWN0aW9uLm1hbmlmZXN0ID8/IGN1cnJlbnRNYW5pZmVzdCxcbiAgICAgICAgICAgIGFjdGlvbi5pZCxcbiAgICAgICAgICAgIGFjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGFjdGlvbi5pbWFnZSxcbiAgICAgICAgICAgIGFjdGlvbi5tZXRhZGF0YSxcbiAgICAgICAgICAgIGFjdGlvbi5hY2Nlc3NSaWdodHNCeUdyb3VwLFxuICAgICAgICAgICAgYWN0aW9uLmFkZGl0aW9uYWxJbmZvcm1hdGlvblxuICAgICAgICAgIClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRhcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQHByeS50b29sYm94Lm1hbmlmZXN0LnNhdmVkJywgeyB2aWV3SWQ6IGFjdGlvbi5uYW1lIH0pLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJ1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHJlc3BvbnNlLm1pc3NpbmdHcm91cHNCeUVudGl0eSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGE6IFByeURpYWxvZ0NvbmZpcm1EYXRhID0ge1xuICAgICAgICAgICAgICAgICAgdGl0bGU6ICdAcHJ5LnNoYXJlLmNvbmZsaWN0LnRpdGxlJyxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaTE4blNlcnZpY2UuaW5zdGFudCgnQHByeS5zaGFyZS5jb25mbGljdC5tYWluJykgK1xuICAgICAgICAgICAgICAgICAgICAnXFxyXFxuJyArXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlc3BvbnNlLm1pc3NpbmdHcm91cHNCeUVudGl0eSlcbiAgICAgICAgICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGVudGl0eSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGFzZXRzLmZpbmQoKGRzKSA9PiBkcy5pZCA9PT0gZW50aXR5KT8ubmFtZSA/PyBlbnRpdHkpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJyA6ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5taXNzaW5nR3JvdXBzQnlFbnRpdHlbZW50aXR5XS5qb2luKCcsICcpXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCdcXHJcXG4nKSxcbiAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkOiAwLFxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQHByeS50b29sYm94LmNsb3NlJ1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLnByeURpYWxvZy5vcGVuKFByeURpYWxvZ0NvbmZpcm1Db21wb25lbnQsIHsgZGF0YSB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoKCkgPT4gYWN0aW9uLm1hbmlmZXN0ID8/IGN1cnJlbnRNYW5pZmVzdCksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5zYXZlRXJyb3JDb2RlLicgKyAoZXJyb3IuZXJyb3I/LmNvZGUgPz8gJ1VOS05PV04nKSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogYWN0aW9uLm5hbWVcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcidcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpKSxcbiAgICAgIG1lcmdlTWFwKChbbWFuaWZlc3QsIHNlbGVjdGVkSWRzXSkgPT4gW1xuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmZldGNoTWFuaWZlc3RzTGlzdCgpLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnNldEluaXRpYWxQcmVzZW50YXRpb24oeyBpbml0aWFsOiBtYW5pZmVzdCB9KSxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdCh7IG1hbmlmZXN0LCBzZWxlY3RlZElkcyB9KVxuICAgICAgXSlcbiAgICApXG4gICk7XG5cbiAgbGlzdE1hbmlmZXN0cyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5mZXRjaE1hbmlmZXN0c0xpc3QpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspKSxcbiAgICAgIGZpbHRlcigoW2FjdGlvbiwgcmFua10pID0+IHJhbmsgPT09IDAgfHwgcmFuayA9PT0gLTEpLFxuICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICBtZXJnZU1hcCgoW2FjdGlvbiwgcmFua10pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlLmxpc3QoKS5waXBlKG1hcCgobWFuaWZlc3RzKSA9PiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0c0xpc3QoeyBtYW5pZmVzdHMgfSkpKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjb25maXJtTWFuaWZlc3REZWxldGlvbiQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuY29uZmlybU1hbmlmZXN0RGVsZXRpb24pLFxuICAgICAgICB0YXAoKGFjdGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGE6IFByeURpYWxvZ0NvbmZpcm1EYXRhID0ge1xuICAgICAgICAgICAgdGl0bGU6ICdAcHJ5LndpZGdldC5tb2RhbFRpdGxlJyxcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAwLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnQHByeS50b29sYm94Lm1hbmlmZXN0LnZhbGlkYXRlJyxcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbRGFzaGJvYXJkQWN0aW9ucy5kZWxldGVNYW5pZmVzdCh7IGlkOiBhY3Rpb24uaWQgfSldXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogMSxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5jbG9zZScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdzZWNvbmRhcnknXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMucHJ5RGlhbG9nLm9wZW4oUHJ5RGlhbG9nQ29uZmlybUNvbXBvbmVudCwgeyBkYXRhIH0pO1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgZGVsZXRlTWFuaWZlc3QkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZGVsZXRlTWFuaWZlc3QpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2UuZGVsZXRlKGFjdGlvbi5pZCkucGlwZShtYXAoKCkgPT4gRGFzaGJvYXJkQWN0aW9ucy5mZXRjaE1hbmlmZXN0c0xpc3QoKSkpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGZldGNoT2JqZWN0c0RldGFpbHMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZmV0Y2hPYmplY3RzRGV0YWlscyksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PiBtZXJnZSguLi5hY3Rpb24uaWRzLm1hcCgoaWQpID0+IHRoaXMuaXRlbVNlcnZpY2UuZ2V0KGlkKSkpKSxcbiAgICAgIG1hcCgoaXRlbSkgPT4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVPYmplY3RzRGV0YWlscyh7IGxpc3Q6IHsgW2l0ZW0uaWRdOiBpdGVtIH0gfSkpXG4gICAgKVxuICApO1xuXG4gIHByb3hpbWl0eVNlYXJjaCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5wcm94aW1pdHkpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJlc3VsdFNldHMpKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCByZXN1bHRTZXRzXSkgPT5cbiAgICAgICAgdGhpcy5pdGVtU2VydmljZS5wcm94aW1pdHkoYWN0aW9uLmlkKS5waXBlKFxuICAgICAgICAgIG1hcCgocHJveFJzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVSZXN1bHRTZXQoe1xuICAgICAgICAgICAgICBpZDogYWN0aW9uLnRhcmdldFJlc3VsdFNldCxcbiAgICAgICAgICAgICAgcmVzdWx0U2V0OiBSZXN1bHRzZXRVdGlscy5tZXJnZVJlc3VsdFNldHMocHJveFJzLCByZXN1bHRTZXRzW2FjdGlvbi50YXJnZXRSZXN1bHRTZXRdKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBleHBsb3JlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmV4cGxvcmUpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT4gW0Rhc2hib2FyZEFjdGlvbnMucHJveGltaXR5KHsgaWQ6IGFjdGlvbi5pZCwgdGFyZ2V0UmVzdWx0U2V0OiBFWFBMT1JFX05BTUVEX1FVRVJZX0lEIH0pXSlcbiAgICApXG4gICk7XG5cbiAgZGV0YWlsQXNMb2FkSW5XaWRnZXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZGV0YWlsKSxcbiAgICAgIG1hcCgoYWN0aW9uKSA9PlxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmFkZFdpZGdldFRvUHJlc2VudGF0aW9uKHtcbiAgICAgICAgICBpZDogJycsXG4gICAgICAgICAgd2lkZ2V0VHlwZTogJ2RldGFpbCcsXG4gICAgICAgICAgYWRkaXRpb25hbE9wdGlvbnM6IHtcbiAgICAgICAgICAgIGl0ZW1JZHM6IGFjdGlvbi5pZHNcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHVwZGF0ZVdpZGdldEluUHJlc2VudGF0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZVdpZGdldEluUHJlc2VudGF0aW9uKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCkpLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIG1hbmlmZXN0XSkgPT4ge1xuICAgICAgICAvLyBDaGVjayBpZiBhIHdpZGdldCB3aXRoIHNhbWUgZGF0YXNvdXJjZSBhbmQgdHlwZSBhbHJlYWR5IGV4aXN0IGluIGN1cnJlbnQgcHJlc2VudGF0aW9uXG4gICAgICAgIGNvbnN0IHdpZGdldFRvTWF0Y2ggPSB0aGlzLnRvb2xib3hNYW5pZmVzdFNlcnZpY2UuZ2V0KGFjdGlvbi53aWRnZXRUeXBlKTtcblxuICAgICAgICBsZXQgYWRkaXRpb25hbE1hdGNoaW5nRm46IChvcHRpb25zVG9NYXRjaDogYW55LCBvcHRpb25zOiBhbnkpID0+IGJvb2xlYW47XG4gICAgICAgIHN3aXRjaCAod2lkZ2V0VG9NYXRjaC50eXBlKSB7XG4gICAgICAgICAgY2FzZSAnY2hhcnQnOlxuICAgICAgICAgICAgYWRkaXRpb25hbE1hdGNoaW5nRm4gPSAob3B0aW9uc1RvTWF0Y2g6IENoYXJ0V2lkZ2V0T3B0aW9ucywgb3B0aW9uczogQ2hhcnRXaWRnZXRPcHRpb25zKSA9PlxuICAgICAgICAgICAgICBvcHRpb25zVG9NYXRjaC50eXBlID09PSBvcHRpb25zLnR5cGUgJiYgb3B0aW9uc1RvTWF0Y2guc3ViVHlwZSA9PT0gb3B0aW9ucy5zdWJUeXBlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgICAgIGFkZGl0aW9uYWxNYXRjaGluZ0ZuID0gKG9wdGlvbnNUb01hdGNoOiBNYXBXaWRnZXRPcHRpb25zLCBvcHRpb25zOiBNYXBXaWRnZXRPcHRpb25zKSA9PlxuICAgICAgICAgICAgICAhIW9wdGlvbnMubGF5ZXJzIS5maW5kKChsYXllcikgPT4gbGF5ZXIudHlwZSA9PT0gb3B0aW9uc1RvTWF0Y2gubGF5ZXJzIVswXS50eXBlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBhZGRpdGlvbmFsTWF0Y2hpbmdGbiA9IChvcHRpb25zVG9NYXRjaDogYW55LCBvcHRpb25zOiBhbnkpID0+IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtYXRjaGluZ1dpZGdldHMgPSBtYW5pZmVzdC53aW5kb3dzLm1hcCgod2luZG93KSA9PlxuICAgICAgICAgIHdpbmRvdy53aWRnZXRzXG4gICAgICAgICAgICAuZmlsdGVyKCh3aWRnZXQpID0+IHdpZGdldC50eXBlID09PSB3aWRnZXRUb01hdGNoLnR5cGUpXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAod2lkZ2V0KSA9PlxuICAgICAgICAgICAgICAgIHdpZGdldC5kYXRhc291cmNlID09PSBhY3Rpb24uaWQgfHxcbiAgICAgICAgICAgICAgICAod2lkZ2V0LmRhdGFzb3VyY2UhWzBdID09PSBhY3Rpb24uaWQgJiYgd2lkZ2V0LmRhdGFzb3VyY2UhLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5maW5kKCh3aWRnZXQpID0+IGFkZGl0aW9uYWxNYXRjaGluZ0ZuKHdpZGdldFRvTWF0Y2gub3B0aW9ucywgd2lkZ2V0Lm9wdGlvbnMpKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGFscmVhZHlNYXRjaGVkV2lkZ2V0ID0gbWF0Y2hpbmdXaWRnZXRzLmZpbmQoKHdpbmRvdykgPT4gISF3aW5kb3cpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICBpZiAoYWxyZWFkeU1hdGNoZWRXaWRnZXQpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChcbiAgICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMubXVsdGlTbmFja0Jhcih7XG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0Bwcnkud2lkZ2V0LnVwZGF0ZWRJblZpZXcnLCB7XG4gICAgICAgICAgICAgICAgICBpbmRleDogbWF0Y2hpbmdXaWRnZXRzLmZpbmRJbmRleCgod2lkZ2V0KSA9PiAhIXdpZGdldCkgKyAxXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKERhc2hib2FyZEFjdGlvbnMuYWRkV2lkZ2V0VG9QcmVzZW50YXRpb24oeyAuLi5hY3Rpb24gfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIGFkZFdpZGdldFRvUHJlc2VudGF0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmFkZFdpZGdldFRvUHJlc2VudGF0aW9uKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ3JpZExheW91dCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmRhc2hib2FyZENlbGxQYXJhbXMpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKVxuICAgICAgKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwgbGF5b3V0LCBfZ2xvYmFsTWFuaWZlc3QsIHJhbmssIHBhcmFtcywgc2VsZWN0ZWRJZHNdKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hbmlmZXN0R2xvYmFsID0gc3RydWN0dXJlZENsb25lKF9nbG9iYWxNYW5pZmVzdCkgYXMgR2xvYmFsTWFuaWZlc3Q7XG5cbiAgICAgICAgLy8gQ3JlYXRlIG5ldyBjb25maWd1cmF0aW9uXG4gICAgICAgIGNvbnN0IG5ld09wdGlvbnMgPSB0aGlzLnRvb2xib3hNYW5pZmVzdFNlcnZpY2UuZ2V0KGFjdGlvbi53aWRnZXRUeXBlKSA/PyB7XG4gICAgICAgICAgb3B0aW9uczoge30sXG4gICAgICAgICAgdHlwZTogYWN0aW9uLndpZGdldFR5cGVcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbmV3V2lkZ2V0TWFuaWZlc3QgPSB7XG4gICAgICAgICAgLi4ubmV3T3B0aW9ucyxcbiAgICAgICAgICBsYXlvdXQ6IHt9LFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIC4uLm5ld09wdGlvbnMub3B0aW9ucyxcbiAgICAgICAgICAgIC4uLmFjdGlvbi5hZGRpdGlvbmFsT3B0aW9uc1xuICAgICAgICAgIH1cbiAgICAgICAgfSBhcyBXaWRnZXRNYW5pZmVzdDtcblxuICAgICAgICBpZiAoISFhY3Rpb24uaWQpIHtcbiAgICAgICAgICBuZXdXaWRnZXRNYW5pZmVzdC5kYXRhc291cmNlID0gYWN0aW9uLmlkO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGZvdW5kOiB7IGFjdHVhbFJhbms6IG51bWJlcjsgd2lkZ2V0OiBXaWRnZXRNYW5pZmVzdCB9IHwgbnVsbCA9IG51bGw7XG4gICAgICAgIC8vIFRyeSB0byBmaW5kIGEgc3BvdCBpbiB3aW5kb3dzIChzdGFydGluZyBieSBjdXJyZW50IHJhbmssIHRoZW4gaW4gb3RoZXJzKVxuICAgICAgICBjb25zdCBzZXF1ZW5jZSA9IFdpZGdldFBsYWNlbWVudFV0aWxzLnN3YXBBcnJheUVsZW1lbnRzKFxuICAgICAgICAgIG5ldyBBcnJheShtYW5pZmVzdEdsb2JhbC53aW5kb3dzLmxlbmd0aCkuZmlsbCgwKS5tYXAoKF8sIGlkeCwgYXJyYXkpID0+IGlkeCksXG4gICAgICAgICAgMCxcbiAgICAgICAgICByYW5rXG4gICAgICAgICk7XG4gICAgICAgIC8vIFRyeWluZyBhbGwgcGxhY2VtZW50IG9wdGlvbnNcbiAgICAgICAgZm9yIChjb25zdCBhY3R1YWxSYW5rIG9mIHNlcXVlbmNlKSB7XG4gICAgICAgICAgY29uc3Qgd2luZG93TGF5b3V0ID0gbWFuaWZlc3RHbG9iYWwud2luZG93c1thY3R1YWxSYW5rXS5ncmlkPy5sYXlvdXQgPz8gRGFzaGJvYXJkR3JpZExheW91dC5GVUxMO1xuICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBXaWRnZXRQbGFjZW1lbnRVdGlscy5wbGFjZW1lbnRPcHRpb25zKG5ld1dpZGdldE1hbmlmZXN0LCB3aW5kb3dMYXlvdXQpO1xuICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgICAgIC8vIEFyZSB3ZSBkaXNqb2ludCBmcm9tIGFsbCBvdGhlciB3aWRnZXRzID9cbiAgICAgICAgICAgICAgICBjb25zdCBpc0Rpc2pvaW50RnJvbUFsbCA9IChtYW5pZmVzdEdsb2JhbC53aW5kb3dzW2FjdHVhbFJhbmtdLndpZGdldHMgPz8gW10pXG4gICAgICAgICAgICAgICAgICAubWFwKCh3aWRnZXQpID0+IFdpZGdldFBsYWNlbWVudFV0aWxzLmFyZURpc2pvaW50KHdpZGdldCwgb3B0aW9uKSlcbiAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IHAgJiYgYywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzRGlzam9pbnRGcm9tQWxsKSB7XG4gICAgICAgICAgICAgICAgICAvLyBGb3VuZCBhIGRpc2pvaW50IHBsYWNlbWVudCAhXG4gICAgICAgICAgICAgICAgICBmb3VuZCA9IHsgYWN0dWFsUmFuaywgd2lkZ2V0OiBvcHRpb24gfSBhcyB7IGFjdHVhbFJhbms6IG51bWJlcjsgd2lkZ2V0OiBXaWRnZXRNYW5pZmVzdCB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghIWZvdW5kKSB7XG4gICAgICAgICAgY29uc3QgcGxhY2VXZUZvdW5kID0gZm91bmQgYXMgeyBhY3R1YWxSYW5rOiBudW1iZXI7IHdpZGdldDogV2lkZ2V0TWFuaWZlc3QgfTtcbiAgICAgICAgICBtYW5pZmVzdEdsb2JhbC53aW5kb3dzW3BsYWNlV2VGb3VuZC5hY3R1YWxSYW5rXS53aWRnZXRzLnB1c2gocGxhY2VXZUZvdW5kLndpZGdldCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudFdpbmRvd0xheW91dCA9IG1hbmlmZXN0R2xvYmFsLndpbmRvd3NbcmFua10uZ3JpZD8ubGF5b3V0ID8/IERhc2hib2FyZEdyaWRMYXlvdXQuRlVMTDtcblxuICAgICAgICAgIC8vIHNpIG5vbiB0cm91dsOpIDogbm91dmVsbGUgcGFnZSwgcHJlbWnDqHJlIHBvc2l0aW9uIHN1Z2fDqXLDqWVcbiAgICAgICAgICBjb25zdCBmaXJzdFByb3Bvc2VkTGF5b3V0ID0gV2lkZ2V0UGxhY2VtZW50VXRpbHMucGxhY2VtZW50T3B0aW9ucyhuZXdXaWRnZXRNYW5pZmVzdCwgY3VycmVudFdpbmRvd0xheW91dClbMF07XG5cbiAgICAgICAgICBtYW5pZmVzdEdsb2JhbC53aW5kb3dzLnB1c2goe1xuICAgICAgICAgICAgd2lkZ2V0czogW2ZpcnN0UHJvcG9zZWRMYXlvdXQgPz8geyB4OiAxLCB5OiAxLCBoZWlnaHQ6IDEsIHdpZHRoOiAxIH1dLFxuICAgICAgICAgICAgZ3JpZDogeyBsYXlvdXQ6IGN1cnJlbnRXaW5kb3dMYXlvdXQgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFjdGlvbi5hbGVydCA9PT0gdW5kZWZpbmVkIHx8IGFjdGlvbi5hbGVydCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2VBY3Rpb24gPSBEYXNoYm9hcmRBY3Rpb25zLm11bHRpU25hY2tCYXIoe1xuICAgICAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LndpZGdldC5hZGRlZEluVmlldycsIHtcbiAgICAgICAgICAgICAgICBpbmRleDogISFmb3VuZFxuICAgICAgICAgICAgICAgICAgPyAoZm91bmQgYXMgeyBhY3R1YWxSYW5rOiBudW1iZXI7IHdpZGdldDogV2lkZ2V0TWFuaWZlc3QgfSkuYWN0dWFsUmFuayArIDFcbiAgICAgICAgICAgICAgICAgIDogbWFuaWZlc3RHbG9iYWwud2luZG93cy5sZW5ndGhcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG1lc3NhZ2VBY3Rpb24pO1xuXG4gICAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgdGhpcy5idXNTZXJ2aWNlLmJ1ZmZlclVudGlsSm9pbmVkKG1lc3NhZ2VBY3Rpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0KHsgbWFuaWZlc3Q6IG1hbmlmZXN0R2xvYmFsLCBzZWxlY3RlZElkcyB9KTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIG1vdmVXaWRnZXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMubW92ZVdpZGdldCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdyaWRMYXlvdXQpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuayksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5kYXNoYm9hcmRDZWxsUGFyYW1zKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnNlbGVjdGVkSXRlbUlkcylcbiAgICAgICksXG4gICAgICBtYXAoKFthY3Rpb24sIGxheW91dCwgX2dsb2JhbE1hbmlmZXN0LCByYW5rLCBwYXJhbXMsIHNlbGVjdGVkSWRzXSkgPT4ge1xuICAgICAgICBjb25zdCBtYW5pZmVzdEdsb2JhbCA9IHN0cnVjdHVyZWRDbG9uZShfZ2xvYmFsTWFuaWZlc3QpIGFzIEdsb2JhbE1hbmlmZXN0O1xuXG4gICAgICAgIGNvbnN0IG5ld1dpbmRvd3MgPSBbLi4ubWFuaWZlc3RHbG9iYWwud2luZG93c107XG5cbiAgICAgICAgLy8gQ3JlYXRpbmcgbmV3IGN1cnJlbnQgd2luZG93IG1hbmlmZXN0LCB3aXRob3V0IG1vdmVkIHdpZGdldFxuICAgICAgICBjb25zdCBteU5ld1dpbmRvdyA9IHtcbiAgICAgICAgICAuLi5uZXdXaW5kb3dzW3JhbmtdLFxuICAgICAgICAgIHdpZGdldHM6IFsuLi4obmV3V2luZG93c1tyYW5rXSA/PyB7IHdpZGdldHM6IFtdIH0pLndpZGdldHNdXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHdpZGdldCA9IG15TmV3V2luZG93LndpZGdldHMuc3BsaWNlKGFjdGlvbi53aWRnZXRJbmRleCwgMSlbMF07XG4gICAgICAgIG5ld1dpbmRvd3NbcmFua10gPSBteU5ld1dpbmRvdztcblxuICAgICAgICAvLyBDcmVhdGluZyBlaXRoZXIgYSBuZXcgd2luZG93IG1hbmlmZXN0IG9yIHVwZGF0ZSB0aGUgdGFyZ2V0IG9uZVxuICAgICAgICBjb25zdCB0YXJnZXRSYW5rID0gYWN0aW9uLnRhcmdldEluZGV4O1xuICAgICAgICBpZiAodGFyZ2V0UmFuayAhPT0gLTEpIHtcbiAgICAgICAgICBpZiAoIW5ld1dpbmRvd3NbdGFyZ2V0UmFua10pIHtcbiAgICAgICAgICAgIG5ld1dpbmRvd3NbdGFyZ2V0UmFua10gPSB7XG4gICAgICAgICAgICAgIC4uLm5ld1dpbmRvd3NbcmFua10sXG4gICAgICAgICAgICAgIHdpZGdldHM6IFt3aWRnZXRdXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgZm91bmQ6IHsgYWN0dWFsUmFuazogbnVtYmVyOyB3aWRnZXQ6IFdpZGdldE1hbmlmZXN0IH0gfCBudWxsID0gbnVsbDtcbiAgICAgICAgICAgIC8vIFRyeSB0byBmaW5kIGEgc3BvdCBpbiB3aW5kb3dzIChzdGFydGluZyBieSBjdXJyZW50IHJhbmssIHRoZW4gaW4gb3RoZXJzKVxuICAgICAgICAgICAgY29uc3Qgc2VxdWVuY2UgPSBXaWRnZXRQbGFjZW1lbnRVdGlscy5zd2FwQXJyYXlFbGVtZW50cyhcbiAgICAgICAgICAgICAgbmV3IEFycmF5KG1hbmlmZXN0R2xvYmFsLndpbmRvd3MubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaWR4LCBhcnJheSkgPT4gaWR4KSxcbiAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgcmFua1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8vIFRyeWluZyBhbGwgcGxhY2VtZW50IG9wdGlvbnMgaW4gdGFyZ2V0IHdpbmRvd1xuICAgICAgICAgICAgY29uc3Qgd2luZG93TGF5b3V0ID0gKG1hbmlmZXN0R2xvYmFsLndpbmRvd3NbdGFyZ2V0UmFua10gPz8ge30pLmdyaWQ/LmxheW91dCA/PyBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTDtcbiAgICAgICAgICAgIGlmICh3aW5kb3dMYXlvdXQgIT09IERhc2hib2FyZEdyaWRMYXlvdXQuTUFOVUFMKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBXaWRnZXRQbGFjZW1lbnRVdGlscy5wbGFjZW1lbnRPcHRpb25zKHdpZGdldCwgd2luZG93TGF5b3V0KTtcbiAgICAgICAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQXJlIHdlIGRpc2pvaW50IGZyb20gYWxsIG90aGVyIHdpZGdldHMgP1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0Rpc2pvaW50RnJvbUFsbCA9IChtYW5pZmVzdEdsb2JhbC53aW5kb3dzW3RhcmdldFJhbmtdLndpZGdldHMgPz8gW10pXG4gICAgICAgICAgICAgICAgICAgICAgLm1hcCgod2lkZ2V0KSA9PiBXaWRnZXRQbGFjZW1lbnRVdGlscy5hcmVEaXNqb2ludCh3aWRnZXQsIG9wdGlvbikpXG4gICAgICAgICAgICAgICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gcCAmJiBjLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzRGlzam9pbnRGcm9tQWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gRm91bmQgYSBkaXNqb2ludCBwbGFjZW1lbnQgIVxuICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0geyBhY3R1YWxSYW5rOiB0YXJnZXRSYW5rLCB3aWRnZXQ6IG9wdGlvbiB9IGFzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbFJhbms6IG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldDogV2lkZ2V0TWFuaWZlc3Q7XG4gICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gSW4gbWFudWFsIG1vZGUsIHdlIHNob3VsZCByZXNvbHZlQ29sbGlzaW9ucyBidXQgZm9yIG5vdyBpdCdzIG5vdCAoY2F1c2Ugd2Ugb25seSBoYXZlIGludmVydGVkIGNvbGxpc2lvbnMgcmlnaHQgbm93KVxuICAgICAgICAgICAgICBmb3VuZCA9IHsgYWN0dWFsUmFuazogdGFyZ2V0UmFuaywgd2lkZ2V0IH0gYXMge1xuICAgICAgICAgICAgICAgIGFjdHVhbFJhbms6IG51bWJlcjtcbiAgICAgICAgICAgICAgICB3aWRnZXQ6IFdpZGdldE1hbmlmZXN0O1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoISFmb3VuZCkge1xuICAgICAgICAgICAgICBjb25zdCBwbGFjZVdlRm91bmQgPSBmb3VuZCBhcyB7IGFjdHVhbFJhbms6IG51bWJlcjsgd2lkZ2V0OiBXaWRnZXRNYW5pZmVzdCB9O1xuICAgICAgICAgICAgICBuZXdXaW5kb3dzW3BsYWNlV2VGb3VuZC5hY3R1YWxSYW5rXS53aWRnZXRzLnB1c2gocGxhY2VXZUZvdW5kLndpZGdldCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBjdXJyZW50V2luZG93TGF5b3V0ID0gKG1hbmlmZXN0R2xvYmFsLndpbmRvd3NbcmFua10gPz8ge30pLmdyaWQ/LmxheW91dCA/PyBEYXNoYm9hcmRHcmlkTGF5b3V0LkZVTEw7XG5cbiAgICAgICAgICAgICAgLy8gc2kgbm9uIHRyb3V2w6kgOiBub3V2ZWxsZSBwYWdlLCBwcmVtacOocmUgcG9zaXRpb24gc3VnZ8OpcsOpZVxuICAgICAgICAgICAgICBjb25zdCBmaXJzdFByb3Bvc2VkTGF5b3V0ID0gV2lkZ2V0UGxhY2VtZW50VXRpbHMucGxhY2VtZW50T3B0aW9ucyh3aWRnZXQsIGN1cnJlbnRXaW5kb3dMYXlvdXQpWzBdO1xuXG4gICAgICAgICAgICAgIG5ld1dpbmRvd3MucHVzaCh7IHdpZGdldHM6IFtmaXJzdFByb3Bvc2VkTGF5b3V0ID8/IHdpZGdldF0sIGdyaWQ6IHsgbGF5b3V0OiBjdXJyZW50V2luZG93TGF5b3V0IH0gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGNyZWF0ZSBuZXcgd2luZG93IHRvIHdlbGNvbWUgdGhpcyB3aWRnZXRcbiAgICAgICAgICBuZXdXaW5kb3dzLnB1c2goe1xuICAgICAgICAgICAgLi4ubmV3V2luZG93c1tyYW5rXSxcbiAgICAgICAgICAgIHdpZGdldHM6IFt3aWRnZXRdXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdCh7IG1hbmlmZXN0OiB7IC4uLm1hbmlmZXN0R2xvYmFsLCB3aW5kb3dzOiBuZXdXaW5kb3dzIH0sIHNlbGVjdGVkSWRzIH0pO1xuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgbXVsdGlTbmFja0JhciQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMubXVsdGlTbmFja0JhciksXG4gICAgICAgIHRhcCgoYWN0aW9uKSA9PiB0aGlzLnNuYWNrQmFyLm9wZW4oYWN0aW9uLm1lc3NhZ2UpKVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgcmVsYXVuY2hBZnRlck9yZGVyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnF1aWNrT3JkZXIpLFxuICAgICAgbWFwKChhY3Rpb24pID0+XG4gICAgICAgIFNlYXJjaEFjdGlvbnMuZ2V0RGF0YXNvdXJjZUl0ZW1zKHtcbiAgICAgICAgICBpZDogYWN0aW9uLmRhdGFzb3VyY2VJZCxcbiAgICAgICAgICBleGNsdWRlR2VvOiB0cnVlLFxuICAgICAgICAgIGZyb206ICdEYXNoYm9hcmRFZmZlY3RzLnJlbGF1bmNoQWZ0ZXJPcmRlciQnXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHByb3BhZ2F0ZUdyaWRMYXlvdXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuc2V0R3JpZExheW91dCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuayksIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy53aW5kb3dNYW5pZmVzdCkpLFxuICAgICAgbWFwKChbYWN0aW9uLCByYW5rLCB3aW5kb3dNYW5pZmVzdF0pID0+IERhc2hib2FyZEFjdGlvbnMucHJvcGFnYXRlR3JpZExheW91dCh7IG1hbmlmZXN0OiB3aW5kb3dNYW5pZmVzdCwgcmFuayB9KSlcbiAgICApXG4gICk7XG5cbiAgdG9nZ2xlRWRpdGlvbk1vZGVJZk5vdE1hbnVhbCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5zZXRHcmlkTGF5b3V0KSxcbiAgICAgIGZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24ubGF5b3V0ICE9PSBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTCksXG4gICAgICBtYXAoKCkgPT4gRGFzaGJvYXJkQWN0aW9ucy50b2dnbGVFZGl0aW9uTW9kZSh7IGZvcmNlOiBmYWxzZSB9KSlcbiAgICApXG4gICk7XG5cbiAgZ2V0Q2FwYWJpbGl0eSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5nZXRDYXBhYmlsaXR5KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5jYXBhYmlsaXRpZXMpKSxcbiAgICAgIGZpbHRlcihcbiAgICAgICAgKFthY3Rpb24sIGNhcGFiaWxpdGllc10pID0+XG4gICAgICAgICAgKCEhY2FwYWJpbGl0aWVzICYmICEhYWN0aW9uLnVybCAmJiAoIWNhcGFiaWxpdGllc1thY3Rpb24udXJsXSB8fCAhY2FwYWJpbGl0aWVzW2FjdGlvbi51cmxdIS5kb2MpKSB8fFxuICAgICAgICAgICEhYWN0aW9uLmZvcmNlXG4gICAgICApLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIF9dKSA9PlxuICAgICAgICB0aGlzLndtc1NlcnZpY2UuZ2V0Q2FwYWJpbGl0aWVzKGFjdGlvbi51cmwpLnBpcGUoXG4gICAgICAgICAgbWFwKChjYXBhYmlsaXR5KSA9PiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZUNhcGFiaWxpdHkoeyB1cmw6IGFjdGlvbi51cmwsIGNhcGFiaWxpdHkgfSkpLFxuICAgICAgICAgIHN0YXJ0V2l0aChEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZUNhcGFiaWxpdHkoeyB1cmw6IGFjdGlvbi51cmwsIGNhcGFiaWxpdHk6IG51bGwgfSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZ2V0V21zRmVhdHVyZXMgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5nZXRXbXNGZWF0dXJlcyksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PiBjb21iaW5lTGF0ZXN0KFtvZihhY3Rpb24pLCB0aGlzLndtc1NlcnZpY2UuZ2V0V21zRmVhdHVyZXMoYWN0aW9uLnVybCldKSksXG4gICAgICBtYXAoKFthY3Rpb24sIGpzb25dKSA9PiB7XG4gICAgICAgIHJldHVybiBEYXNoYm9hcmRBY3Rpb25zLmFkZFdtc0ZlYXR1cmVzKHtcbiAgICAgICAgICBmZWF0dXJlczoganNvbi5mZWF0dXJlcy5tYXAoKGZlYXR1cmU6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSB7XG4gICAgICAgICAgICAgIGlkOiBmZWF0dXJlLmlkLFxuICAgICAgICAgICAgICBvQ2xhc3M6IGFjdGlvbi5vQ2xhc3MsXG4gICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBhY3Rpb24uY29vcmRpbmF0ZXMsXG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IE9iamVjdC5rZXlzKGZlYXR1cmUucHJvcGVydGllcylcbiAgICAgICAgICAgICAgICAubWFwKChwcm9wZXJ0eSkgPT4gKHsga2V5OiBwcm9wZXJ0eSwgdmFsdWU6IGZlYXR1cmUucHJvcGVydGllc1twcm9wZXJ0eV0gfSkpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigocHJvcCkgPT4gcHJvcC52YWx1ZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY29tcG9uZW50SWQ6IGFjdGlvbi5jb21wb25lbnRJZFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIGdldFdmc0ZlYXR1cmVzRm9yUG9pbnRTdGFjayA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmdldFdmc0ZlYXR1cmVzRm9yUG9pbnRTdGFja1Rvb2x0aXBzKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+IGNvbWJpbmVMYXRlc3QoW29mKGFjdGlvbiksIHRoaXMud21zU2VydmljZS5nZXRXbXNGZWF0dXJlcyhhY3Rpb24udXJsKV0pKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCB3bXNKc29uXSkgPT4ge1xuICAgICAgICAvLyBjaGVjayBpZiBkYXRhIGlzIGFjdHVhbGx5IGEgc3RhY2sgb2YgcG9pbnRzXG4gICAgICAgIGlmIChcbiAgICAgICAgICB3bXNKc29uLmZlYXR1cmVzWzBdICYmXG4gICAgICAgICAgd21zSnNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzLmNvdW50ICYmXG4gICAgICAgICAgd21zSnNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzLmNvdW50dW5pcXVlICYmXG4gICAgICAgICAgd21zSnNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzLmNvdW50ID4gMVxuICAgICAgICApIHtcbiAgICAgICAgICBsZXQgZW52QkJPWENvb3JkcyA9IFsuLi53bXNKc29uLmZlYXR1cmVzWzBdLnByb3BlcnRpZXMuZW52QkJPWC5tYXRjaEFsbCgvXFxkKy5cXGQrL2cpXS5tYXAoKG0pID0+XG4gICAgICAgICAgICBwYXJzZUZsb2F0KG1bMF0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy53bXNTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0V2ZzRmVhdHVyZXMoYWN0aW9uLnVybCwgZW52QkJPWENvb3JkcylcbiAgICAgICAgICAgIC5waXBlKG1hcCgod2ZzSnNvbikgPT4gKHsgYWN0aW9uLCBqc29uOiB3ZnNKc29uIH0pKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgZGF0YSBpcyBub3QgYSBzdGFjayBqdXN0IGFkZCBmZWF0dXJlcyB3aXRob3V0IGNhbGxpbmcgd2ZzIHNlcnZpY2VcbiAgICAgICAgcmV0dXJuIG9mKHsgYWN0aW9uLCBqc29uOiB3bXNKc29uIH0pO1xuICAgICAgfSksXG4gICAgICBtYXAoKHsgYWN0aW9uLCBqc29uIH0pID0+XG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuYWRkV21zRmVhdHVyZXMoe1xuICAgICAgICAgIGZlYXR1cmVzOiBqc29uLmZlYXR1cmVzLm1hcCgoZmVhdHVyZTogYW55KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IGZlYXR1cmUuaWQsXG4gICAgICAgICAgICBvQ2xhc3M6IGFjdGlvbi5vQ2xhc3MsXG4gICAgICAgICAgICBjb29yZGluYXRlczogYWN0aW9uLmNvb3JkaW5hdGVzLFxuICAgICAgICAgICAgcHJvcGVydGllczogT2JqZWN0LmtleXMoZmVhdHVyZS5wcm9wZXJ0aWVzKVxuICAgICAgICAgICAgICAubWFwKChwcm9wZXJ0eSkgPT4gKHsga2V5OiBwcm9wZXJ0eSwgdmFsdWU6IGZlYXR1cmUucHJvcGVydGllc1twcm9wZXJ0eV0gfSkpXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHByb3ApID0+IHByb3AudmFsdWUgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgY29tcG9uZW50SWQ6IGFjdGlvbi5jb21wb25lbnRJZFxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHdoaWxlIGZldGNoaW5nIFdGUyBmZWF0dXJlcycsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIG9mKERhc2hib2FyZEFjdGlvbnMuYWRkV21zRmVhdHVyZXMoeyBmZWF0dXJlczogW10sIGNvbXBvbmVudElkOiAnZXJyb3InIH0pKTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIGFkZE1hbmlmZXN0TWV0YWRhdGEgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5hZGRNYW5pZmVzdE1ldGFkYXRhKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlLmFkZE1ldGFkYXRhKGFjdGlvbi5wcmVzZW50YXRpb25JZCwgYWN0aW9uLm1ldGFkYXRhSWQsIGFjdGlvbi52YWx1ZSkucGlwZShcbiAgICAgICAgICBtYXAoKCkgPT4gRGFzaGJvYXJkQWN0aW9ucy5mZXRjaE1hbmlmZXN0c0xpc3QoKSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5zYXZlRXJyb3JDb2RlLlNBVkVfTUVUQURBVEEnLCB7XG4gICAgICAgICAgICAgICAgICBjb2RlOiBlcnJvci5zdGF0dXNcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGRlbGV0ZU1hbmlmZXN0TWV0YWRhdGEkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZGVsZXRlTWFuaWZlc3RNZXRhZGF0YSksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLm1hbmlmZXN0U2VydmljZVxuICAgICAgICAgIC5kZWxldGVNZXRhZGF0YShhY3Rpb24ucHJlc2VudGF0aW9uSWQsIGFjdGlvbi5tZXRhZGF0YUlkKVxuICAgICAgICAgIC5waXBlKG1hcCgoKSA9PiBEYXNoYm9hcmRBY3Rpb25zLmZldGNoTWFuaWZlc3RzTGlzdCgpKSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbG9hZFByZXNlbnRhdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5sb2FkUHJlc2VudGF0aW9uKSxcbiAgICAgIHRhcCgoKSA9PlxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3Qoe1xuICAgICAgICAgICAgbWFuaWZlc3Q6IHsgd2luZG93czogW10gfSxcbiAgICAgICAgICAgIHNlbGVjdGVkSWRzOiBbXVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICksXG4gICAgICB0YXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdFByZXNlbnRhdGlvbih7XG4gICAgICAgICAgICBwcmVzZW50YXRpb246IGFjdGlvbi5wcmVzZW50YXRpb24sXG4gICAgICAgICAgICB2aWV3TW9kZTogYWN0aW9uLnZpZXdNb2RlXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIHRhcCgoYWN0aW9uKSA9PiB0aGlzLnRpdGxlU2VydmljZS5jaGFuZ2VUaXRsZShhY3Rpb24ucHJlc2VudGF0aW9uLm5hbWUpKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlLmdldChhY3Rpb24ucHJlc2VudGF0aW9uLmlkKS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKChtYW5pZmVzdCkgPT4gW1xuICAgICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdCh7XG4gICAgICAgICAgICAgIG1hbmlmZXN0LFxuICAgICAgICAgICAgICBzZWxlY3RlZElkczogW10sXG4gICAgICAgICAgICAgIG1hbmlmZXN0SWQ6IGFjdGlvbi5wcmVzZW50YXRpb24uaWRcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZXRJbml0aWFsUHJlc2VudGF0aW9uKHtcbiAgICAgICAgICAgICAgaW5pdGlhbDogYWN0aW9uLnZpZXdNb2RlID09PSBWaWV3TW9kZS5DT05TVUxUID8gdW5kZWZpbmVkIDogbWFuaWZlc3RcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVEaXNwbGF5T3B0aW9ucyh7XG4gICAgICAgICAgICAgIG1vZGU6IGFjdGlvbi52aWV3TW9kZVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmZvbGxvd01hbmlmZXN0Um91dGUoKVxuICAgICAgICAgIF0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXNoYm9hcmRJbml0U2VydmljZTogRGFzaGJvYXJkSW5pdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxhbnk+LFxuICAgIHByaXZhdGUgbWFuaWZlc3RTZXJ2aWNlOiBNYW5pZmVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpdGVtU2VydmljZTogSXRlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFByeVRpdGxlU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFByeUkxOG5TZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IFByeVNuYWNrYmFyU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVmcmVzaFNlcnZpY2U6IFJlZnJlc2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9vbGJveE1hbmlmZXN0U2VydmljZTogVG9vbGJveE1hbmlmZXN0U2VydmljZSxcbiAgICBwcml2YXRlIGJ1c1NlcnZpY2U6IEJ1c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJ5RGlhbG9nOiBQcnlEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgd21zU2VydmljZTogV21zU2VydmljZSxcbiAgICBwcml2YXRlIHdpZGdldEZhY3RvcnlTZXJ2aWNlOiBXaWRnZXRGYWN0b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGkxOG5TZXJ2aWNlOiBQcnlJMThuU2VydmljZVxuICApIHtcbiAgICBkYXNoYm9hcmRJbml0U2VydmljZS5pbml0KCk7XG4gICAgcmVmcmVzaFNlcnZpY2Uuc3RhcnQoKTtcbiAgfVxufVxuIl19
|
|
@@ -12524,7 +12524,7 @@ class DashboardEffects {
|
|
|
12524
12524
|
coordinates: action.coordinates,
|
|
12525
12525
|
properties: Object.keys(feature.properties)
|
|
12526
12526
|
.map((property) => ({ key: property, value: feature.properties[property] }))
|
|
12527
|
-
.filter((prop) =>
|
|
12527
|
+
.filter((prop) => prop.value !== undefined)
|
|
12528
12528
|
})),
|
|
12529
12529
|
componentId: action.componentId
|
|
12530
12530
|
})), catchError((error) => {
|