@kepler.gl/components 3.1.4 → 3.1.5
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.
- package/dist/hooks/use-fetch-raster-tile-metadata.d.ts +21 -0
- package/dist/hooks/use-fetch-raster-tile-metadata.js +120 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +16 -1
- package/dist/kepler-gl.d.ts +1 -0
- package/dist/loading-indicator.js +4 -2
- package/dist/map-container.js +2 -2
- package/dist/modals/export-data-modal.js +5 -5
- package/dist/modals/tilesets-modals/common.d.ts +3 -2
- package/dist/modals/tilesets-modals/common.js +1 -1
- package/dist/modals/tilesets-modals/load-tileset.js +45 -26
- package/dist/modals/tilesets-modals/tileset-icon.js +12 -5
- package/dist/modals/tilesets-modals/tileset-raster-form.d.ts +13 -0
- package/dist/modals/tilesets-modals/tileset-raster-form.js +174 -0
- package/dist/modals/tilesets-modals/tileset-vector-form.js +18 -9
- package/dist/side-panel/common/dataset-info.js +2 -2
- package/dist/side-panel/layer-manager.js +14 -3
- package/dist/side-panel/layer-panel/color-breaks-panel.d.ts +1 -1
- package/dist/side-panel/layer-panel/dataset-layer-section.js +13 -2
- package/dist/side-panel/layer-panel/layer-configurator.d.ts +3 -2
- package/dist/side-panel/layer-panel/layer-configurator.js +9 -3
- package/dist/side-panel/layer-panel/layer-type-list-item.js +4 -2
- package/dist/side-panel/layer-panel/raster-tile-colormap-list-item.d.ts +15 -0
- package/dist/side-panel/layer-panel/raster-tile-colormap-list-item.js +61 -0
- package/dist/side-panel/layer-panel/raster-tile-layer-configurator.d.ts +17 -0
- package/dist/side-panel/layer-panel/raster-tile-layer-configurator.js +358 -0
- package/dist/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +1 -1
- package/package.json +15 -15
package/dist/map-container.js
CHANGED
|
@@ -895,7 +895,7 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
|
|
|
895
895
|
primaryMap: false,
|
|
896
896
|
isInteractive: false
|
|
897
897
|
}) : null, this._renderMapPopover(), primary !== isSplit ? /*#__PURE__*/_react["default"].createElement(_loadingIndicator["default"], {
|
|
898
|
-
isVisible:
|
|
898
|
+
isVisible: isLoadingIndicatorVisible || (0, _layers.isRasterTilesBeingLoaded)(),
|
|
899
899
|
activeSidePanel: Boolean(activeSidePanel),
|
|
900
900
|
sidePanelWidth: sidePanelWidth
|
|
901
901
|
}, "Loading...") : null, this.props.primary ? /*#__PURE__*/_react["default"].createElement(Attribution, {
|
|
@@ -942,4 +942,4 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
|
|
|
942
942
|
});
|
|
943
943
|
return (0, _styledComponents.withTheme)(MapContainer);
|
|
944
944
|
}
|
|
945
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZWFjdE1hcEdsIiwiX3JlYWN0MiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVzZWxlY3QiLCJfY29yZSIsIl9kZWJvdW5jZSIsIl9tYXBQb3BvdmVyIiwiX21hcENvbnRyb2wiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfZWRpdG9yIiwiX2xheWVycyIsIl91dGlscyIsIl9zdHlsZXMiLCJfY29uc3RhbnRzIiwiX2RuZExheWVySXRlbXMiLCJfbWFwVmlld1N0YXRlQ29udGV4dCIsIl9lcnJvckJvdW5kYXJ5IiwiX2xvY2FsaXphdGlvbiIsIl9jb3JlMiIsIl9yZWR1Y2VycyIsIl9sb2FkaW5nSW5kaWNhdG9yIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiREVCT1VOQ0VfVklFV1BPUlRfUFJPUEFHQVRFIiwiREVCT1VOQ0VfTU9VU0VfTU9WRV9QUk9QQUdBVEUiLCJNQVBfU1RZTEUiLCJjb250YWluZXIiLCJkaXNwbGF5IiwicG9zaXRpb24iLCJ3aWR0aCIsImhlaWdodCIsInRvcCIsInBvaW50ZXJFdmVudHMiLCJMT0NBTEVfQ09ERVNfQVJSQVkiLCJMT0NBTEVfQ09ERVMiLCJTdHlsZWRNYXAiLCJzdHlsZWQiLCJTdHlsZWRNYXBDb250YWluZXIiLCJfcmVmIiwiX3JlZiQkbWl4QmxlbmRNb2RlIiwiJG1peEJsZW5kTW9kZSIsIiRtYXBMaWJDc3NDbGFzcyIsImNvbmNhdCIsIk1BUEJPWEdMX1NUWUxFX1VQREFURSIsIk1BUEJPWEdMX1JFTkRFUiIsIm5vcCIsIk1hcExpYkxvZ28iLCJfcmVmMiIsImJhc2VNYXBMaWJyYXJ5Q29uZmlnIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInN0eWxlIiwibWFyZ2luTGVmdCIsIm1hcExpYkNzc0NsYXNzIiwidGFyZ2V0IiwicmVsIiwiaHJlZiIsIm1hcExpYlVybCIsIm1hcExpYk5hbWUiLCJTdHlsZWREcm9wcGFibGUiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwiaXNPdmVyIiwidGhlbWUiLCJkbmRPdmVyQmFja2dyb3VuZENvbG9yIiwiaXNTcGxpdFNlbGVjdG9yIiwiZXhwb3J0cyIsInZpc1N0YXRlIiwic3BsaXRNYXBzIiwiRHJvcHBhYmxlIiwiX3JlZjMiLCJjb250YWluZXJJZCIsIl91c2VEcm9wcGFibGUiLCJ1c2VEcm9wcGFibGUiLCJpZCIsImRhdGEiLCJ0eXBlIiwiRFJPUFBBQkxFX01BUF9DT05UQUlORVJfVFlQRSIsImluZGV4IiwiZGlzYWJsZWQiLCJzZXROb2RlUmVmIiwicmVmIiwiU3R5bGVkRGF0YXNldEF0dHJpYnV0aW9uc0NvbnRhaW5lciIsImlzUGFsbSIsImxhYmVsQ29sb3IiLCJEYXRhc2V0QXR0cmlidXRpb25zIiwiX3JlZjQiLCJkYXRhc2V0QXR0cmlidXRpb25zIiwiRnJhZ21lbnQiLCJtYXAiLCJkcyIsImlkeCIsIl9leHRlbmRzMiIsInVybCIsImtleSIsInRpdGxlIiwiQXR0cmlidXRpb24iLCJfcmVmNSIsIl9yZWY1JHNob3dCYXNlTWFwTGliTCIsInNob3dCYXNlTWFwTGliTG9nbyIsIl9yZWY1JHNob3dPc21CYXNlbWFwQSIsInNob3dPc21CYXNlbWFwQXR0cmlidXRpb24iLCJoYXNNb2JpbGVXaWR0aCIsImJyZWFrUG9pbnRWYWx1ZXMiLCJtZW1vaXplZENvbXBvbmVudHMiLCJ1c2VNZW1vIiwiU3R5bGVkQXR0cmlidXRpb24iLCJtYXBMaWJBdHRyaWJ1dGlvbkNzc0NsYXNzIiwiRW5kSG9yaXpvbnRhbEZsZXhib3giLCJNYXBDb250YWluZXJGYWN0b3J5IiwiZGVwcyIsIk1hcFBvcG92ZXJGYWN0b3J5IiwiTWFwQ29udHJvbEZhY3RvcnkiLCJFZGl0b3JGYWN0b3J5IiwiTWFwUG9wb3ZlciIsIk1hcENvbnRyb2wiLCJFZGl0b3IiLCJNYXBDb250YWluZXIiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwic2hvd0Jhc2VNYXBBdHRyaWJ1dGlvbiIsImNyZWF0ZVJlZiIsImRpbWVuc2lvbnMiLCJfdGhpcyRwcm9wcyIsInByaW1hcnkiLCJtYXBTdGF0ZUFjdGlvbnMiLCJ1cGRhdGVNYXAiLCJsYXllcnMiLCJsYXllckRhdGEiLCJjcmVhdGVTZWxlY3RvciIsInNwbGl0TWFwU2VsZWN0b3IiLCJzcGxpdE1hcEluZGV4U2VsZWN0b3IiLCJnZXRNYXBMYXllcnNGcm9tU3BsaXRNYXBzIiwibGF5ZXJPcmRlciIsImxheWVyc1NlbGVjdG9yIiwibGF5ZXJEYXRhU2VsZWN0b3IiLCJtYXBMYXllcnNTZWxlY3RvciIsInByZXBhcmVMYXllcnNUb1JlbmRlciIsInByZXBhcmVMYXllcnNGb3JEZWNrIiwiZmlsdGVycyIsImZpbHRlcnNTZWxlY3RvciIsImYiLCJGSUxURVJfVFlQRVMiLCJwb2x5Z29uIiwiZW5hYmxlZCIsImVkaXRvciIsImZlYXR1cmVzIiwic2VsZWN0ZWRGZWF0dXJlIiwicG9seWdvbkZpbHRlcnNTZWxlY3RvciIsImZlYXR1cmVzU2VsZWN0b3IiLCJwb2x5Z29uRmlsdGVycyIsInZhbHVlIiwiZmVhdHVyZUNvbGxlY3Rpb25TZWxlY3RvciIsInNlbGVjdGVkRmVhdHVyZVNlbGVjdG9yIiwiY29sbGVjdGlvbiIsImZpbmRJbmRleCIsIl9wcm9wcyRnZW5lcmF0ZU1hcGJveCIsImdlbmVyYXRlTWFwYm94TGF5ZXJzIiwibGF5ZXJPcmRlclNlbGVjdG9yIiwibGF5ZXJzVG9SZW5kZXJTZWxlY3RvciIsImdlbmVyYXRlTWFwYm94TGF5ZXJNZXRob2RTZWxlY3RvciIsImxheWVyIiwibGF5ZXJzVG9SZW5kZXIiLCJnZW5lcmF0ZU1hcGJveExheWVyTWV0aG9kIiwibWFwU3R5bGUiLCJzdHlsZVR5cGUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJtYXBTdHlsZVR5cGVTZWxlY3RvciIsIm1hcFN0eWxlQmFja2dyb3VuZENvbG9yU2VsZWN0b3IiLCJOT19NQVBfSUQiLCJyZ2JUb0hleCIsInZpc1N0YXRlQWN0aW9ucyIsIm9uTGF5ZXJDbGljayIsIl9pZHgiLCJpbmZvIiwib25MYXllckhvdmVyIiwibGF5ZXJDb25maWdDaGFuZ2UiLCJjb2xvckRvbWFpbiIsImRvbWFpbiIsImFnZ3JlZ2F0ZWRCaW5zIiwiZXZlbnQiLCJsYXllckZpbHRlcmVkSXRlbXNDaGFuZ2UiLCJsYXllcklkIiwiX3RoaXMkcHJvcHMyIiwiX3RoaXMkcHJvcHMyJGluZGV4IiwibWFwSW5kZXgiLCJ0b2dnbGVMYXllckZvck1hcCIsInVwZGF0ZSIsInByZXZpb3VzTGF5ZXJzIiwiX3VwZGF0ZU1hcGJveExheWVycyIsInNldFN0YXRlIiwiaXNTdHlsZVVzaW5nTWFwYm94VGlsZXMiLCJpc1N0eWxlVXNpbmdPcGVuU3RyZWV0TWFwVGlsZXMiLCJvbk1hcFN0eWxlTG9hZGVkIiwiX21hcCIsIm1hcFJlZiIsImdldE1hcCIsIl90aGlzJF9tYXAiLCJfdGhpcyRfbWFwMiIsIm9mZiIsIm9uIiwiX29uTWFwYm94U3R5bGVVcGRhdGUiLCJvbk1hcFJlbmRlciIsImdldE1hcGJveFJlZiIsIl9yZWY2IiwiZ2wiLCJzZXRMYXllckJsZW5kaW5nIiwibGF5ZXJCbGVuZGluZyIsImVycm9yIiwiZXJyb3JNZXNzYWdlIiwibWVzc2FnZSIsImxheWVyTWVzc2FnZSIsImVycm9yTWVzc2FnZUZ1bGwiLCJsYXN0U2hvd24iLCJfZGVja0dMRXJyb3JzRWxhcHNlZCIsIkRhdGUiLCJub3ciLCJUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRSIsImV4dHJhTGF5ZXJNZXNzYWdlIiwiX3RvcE1vc3RMYXllciRwcm9wcyIsInRvcE1vc3RMYXllciIsInBhcmVudCIsImxheWVyU2V0SXNWYWxpZCIsInVpU3RhdGVBY3Rpb25zIiwiYWRkTm90aWZpY2F0aW9uIiwiZXJyb3JOb3RpZmljYXRpb24iLCJkZWJvdW5jZSIsIl90aGlzJGNvbnRleHQiLCJ2aWV3U3RhdGUiLCJjb250ZXh0IiwiZ2V0SW50ZXJuYWxWaWV3U3RhdGUiLCJvblZpZXdQb3J0Q2hhbmdlIiwib25WaWV3U3RhdGVDaGFuZ2UiLCJ2aWV3cG9ydCIsImlzRXhwb3J0Iiwic2V0SW50ZXJuYWxWaWV3U3RhdGUiLCJfb25WaWV3cG9ydENoYW5nZVByb3BhZ2F0ZURlYm91bmNlZCIsIm9uTW91c2VNb3ZlIiwibm9ybWFsaXplRXZlbnQiLCJwYW5lbElkIiwiX3RoaXMkcHJvcHMzIiwidG9nZ2xlTWFwQ29udHJvbCIsIk51bWJlciIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwiY29tcG9uZW50RGlkTW91bnQiLCJjdXJyZW50Iiwib2JzZXJ2ZURpbWVuc2lvbnMiLCJfaGFuZGxlUmVzaXplIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJfdGhpcyRfbWFwMyIsIl90aGlzJF9tYXA0IiwidW5vYnNlcnZlRGltZW5zaW9ucyIsIl9vbkRlY2tJbml0aWFsaXplZCIsIm9uRGVja0luaXRpYWxpemVkIiwiX2RlY2siLCJfaXNPS1RvUmVuZGVyRWZmZWN0cyIsInZpZXdJbmRleCIsIl90aGlzJF9kZWNrIiwidmlld01hbmFnZXIiLCJfdmlld3BvcnRzIiwiX3JlbmRlck1hcFBvcG92ZXIiLCJfdGhpcyRwcm9wcyR2aXNTdGF0ZSQiLCJob3ZlckluZm8iLCJfdGhpcyRwcm9wczQiLCJtYXBTdGF0ZSIsIl90aGlzJHByb3BzNCR2aXNTdGF0ZSIsImNsaWNrZWQiLCJkYXRhc2V0cyIsImludGVyYWN0aW9uQ29uZmlnIiwiYW5pbWF0aW9uQ29uZmlnIiwiX3RoaXMkcHJvcHM0JHZpc1N0YXRlMiIsIm1vdXNlUG9zIiwibW91c2VQb3NpdGlvbiIsImNvb3JkaW5hdGUiLCJwaW5uZWQiLCJ0b29sdGlwIiwibGF5ZXJIb3ZlclByb3AiLCJnZXRMYXllckhvdmVyUHJvcCIsImNvbXBhcmVNb2RlIiwiY29uZmlnIiwicGlubmVkUG9zaXRpb24iLCJ4IiwieSIsImxheWVyUGlubmVkUHJvcCIsImdldFZpZXdwb3J0RnJvbU1hcFN0YXRlIiwibG5nTGF0IiwiX2dldEhvdmVyWFkiLCJwcmltYXJ5RGF0YSIsImNvbXBhcmVUeXBlIiwiY29tbW9uUHJvcCIsIm9uQ2xvc2UiLCJfb25DbG9zZU1hcFBvcG92ZXIiLCJ6b29tIiwiY2FudmFzIiwidW5kZWZpbmVkIiwiZnJvemVuIiwiaXNCYXNlIiwib25TZXRGZWF0dXJlcyIsInNldEZlYXR1cmVzIiwic2V0U2VsZWN0ZWRGZWF0dXJlIiwiZmVhdHVyZUNvbGxlY3Rpb24iLCJzY3JlZW5Db29yZCIsInByb2plY3QiLCJfcmVuZGVyRGVja092ZXJsYXkiLCJsYXllcnNGb3JEZWNrIiwiX3RoaXMkY29udGV4dDIiLCJfdGhpczIiLCJvcHRpb25zIiwicHJpbWFyeU1hcCIsIl90aGlzJHByb3BzNSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwiZGVja0dsUHJvcHMiLCJtYXBDb250cm9scyIsImRlY2tSZW5kZXJDYWxsYmFja3MiLCJnZW5lcmF0ZURlY2tHTExheWVycyIsImlzSW50ZXJhY3RpdmUiLCJjaGlsZHJlbiIsIm1hcERyYXciLCJfcmVmNyIsIl9yZWY3JGFjdGl2ZSIsImFjdGl2ZSIsImVkaXRvck1lbnVBY3RpdmUiLCJpc0VkaXRvckRyYXdpbmdNb2RlIiwiRWRpdG9yTGF5ZXJVdGlscyIsImlzRHJhd2luZ0FjdGl2ZSIsIm1vZGUiLCJpbnRlcm5hbFZpZXdTdGF0ZSIsImludGVybmFsTWFwU3RhdGUiLCJlZGl0b3JGZWF0dXJlU2VsZWN0ZWRJbmRleCIsInNlbGVjdGVkUG9seWdvbkluZGV4U2VsZWN0b3IiLCJnZW5lcmF0ZURlY2tHTExheWVyc01ldGhvZCIsImNvbXB1dGVEZWNrTGF5ZXJzIiwiZGVja0dsTGF5ZXJzIiwiZWRpdG9ySW5mbyIsInNlbGVjdGVkRmVhdHVyZUluZGV4ZXMiLCJzZWxlY3RlZEZlYXR1cmVJbmRleEFycmF5U2VsZWN0b3IiLCJfb25MYXllckhvdmVyIiwib25TZXRMYXllckRvbWFpbiIsIl9vbkxheWVyU2V0RG9tYWluIiwib25GaWx0ZXJlZEl0ZW1zQ2hhbmdlIiwiX29uTGF5ZXJGaWx0ZXJlZEl0ZW1zQ2hhbmdlIiwiZXh0cmFEZWNrUGFyYW1zIiwiZ2V0VG9vbHRpcCIsImdldEN1cnNvciIsIl9yZWY4IiwiaXNEcmFnZ2luZyIsImVkaXRvckN1cnNvciIsImVmZmVjdHMiLCJjb21wdXRlRGVja0VmZmVjdHMiLCJ2aWV3cyIsIk1hcFZpZXciLCJsZWdhY3lNZXRlclNpemVzIiwiYWxsRGVja0dsUHJvcHMiLCJwaWNraW5nUmFkaXVzIiwiREVGQVVMVF9QSUNLSU5HX1JBRElVUyIsIm9uRGVja1JlbmRlciIsIl9vbk1vdXNlTW92ZURlYm91bmNlZCIsIm9uTG9hZCIsIm9uRGVja0xvYWQiLCJjb250cm9sbGVyIiwiZG91YmxlQ2xpY2tab29tIiwiZHJhZ1JvdGF0ZSIsImluaXRpYWxWaWV3U3RhdGUiLCJvbkJlZm9yZVJlbmRlciIsIl9vbkJlZm9yZVJlbmRlciIsIl9vblZpZXdwb3J0Q2hhbmdlIiwib25Ib3ZlciIsInJlcyIsIl9vbkxheWVySG92ZXJEZWJvdW5jZWQiLCJvbkNsaWNrIiwic3JjRXZlbnQiLCJvbkVycm9yIiwiX29uRGVja0Vycm9yIiwiY29tcCIsImRlY2siLCJvbldlYkdMSW5pdGlhbGl6ZWQiLCJvbkFmdGVyUmVuZGVyIiwib25EZWNrQWZ0ZXJSZW5kZXIiLCJtYXBib3hMYXllcnMiLCJtYXBib3hMYXllcnNTZWxlY3RvciIsInVwZGF0ZU1hcGJveExheWVycyIsIl9yZW5kZXJNYXBib3hPdmVybGF5cyIsImlzU3R5bGVMb2FkZWQiLCJfcmVuZGVyTWFwIiwiX21hcFN0eWxlJG1hcFN0eWxlcyIsIl9nZXRBcHBsaWNhdGlvbkNvbmZpZyIsIl90aGlzJGNvbnRleHQzIiwiX21hcFN0eWxlJGJvdHRvbU1hcFN0IiwiX3RoaXMkcHJvcHM2IiwiX3RoaXMkcHJvcHM2JE1hcENvbXBvIiwiTWFwQ29tcG9uZW50IiwiTWFwIiwibG9jYWxlIiwiYm90dG9tTWFwQ29udGFpbmVyUHJvcHMiLCJ0b3BNYXBDb250YWluZXJQcm9wcyIsIl90aGlzJHByb3BzNiRkYXRhc2V0QSIsIl90aGlzJHByb3BzNiRjb250YWluZSIsImlzTG9hZGluZ0luZGljYXRvclZpc2libGUiLCJhY3RpdmVTaWRlUGFuZWwiLCJzaWRlUGFuZWxXaWR0aCIsImxheWVyc0ZvckRlY2tTZWxlY3RvciIsImN1cnJlbnRTdHlsZSIsIm1hcFN0eWxlcyIsImJhc2VNYXBMaWJyYXJ5TmFtZSIsImdldEJhc2VNYXBMaWJyYXJ5IiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJtYXBQcm9wcyIsInByZXNlcnZlRHJhd2luZ0J1ZmZlciIsIm1hcGJveEFjY2Vzc1Rva2VuIiwiYWNjZXNzVG9rZW4iLCJtYXBMaWIiLCJnZXRNYXBMaWIiLCJ0cmFuc2Zvcm1SZXF1ZXN0IiwiaGFzR2VvY29kZXJMYXllciIsImZpbmQiLCJsIiwiR0VPQ09ERVJfTEFZRVJfSUQiLCJpc1NwbGl0IiwiYm90dG9tTWFwU3R5bGUiLCJFTVBUWV9NQVBCT1hfU1RZTEUiLCJfc2V0TWFwUmVmIiwiYXZhaWxhYmxlTG9jYWxlcyIsInJlYWRPbmx5Iiwic2NhbGUiLCJnZW9jb2RlciIsIm1hcENvbnRyb2xUb3AiLCJvblRvZ2dsZVBlcnNwZWN0aXZlIiwidG9nZ2xlUGVyc3BlY3RpdmUiLCJvblRvZ2dsZVNwbGl0TWFwIiwidG9nZ2xlU3BsaXRNYXAiLCJvbk1hcFRvZ2dsZUxheWVyIiwiX2hhbmRsZU1hcFRvZ2dsZUxheWVyIiwib25Ub2dnbGVNYXBDb250cm9sIiwiX3RvZ2dsZU1hcENvbnRyb2wiLCJvblRvZ2dsZVNwbGl0TWFwVmlld3BvcnQiLCJ0b2dnbGVTcGxpdE1hcFZpZXdwb3J0Iiwib25TZXRFZGl0b3JNb2RlIiwic2V0RWRpdG9yTW9kZSIsIm9uU2V0TG9jYWxlIiwic2V0TG9jYWxlIiwib25Ub2dnbGVFZGl0b3JWaXNpYmlsaXR5IiwidG9nZ2xlRWRpdG9yVmlzaWJpbGl0eSIsIm9uTGF5ZXJWaXNDb25maWdDaGFuZ2UiLCJsYXllclZpc0NvbmZpZ0NoYW5nZSIsIm1hcEhlaWdodCIsInNldE1hcENvbnRyb2xTZXR0aW5ncyIsIm9uRGVsZXRlRmVhdHVyZSIsImRlbGV0ZUZlYXR1cmUiLCJvblNlbGVjdCIsIm9uVG9nZ2xlUG9seWdvbkZpbHRlciIsInNldFBvbHlnb25GaWx0ZXJMYXllciIsInZpc2libGUiLCJ0b3BNYXBTdHlsZSIsImlzVmlzaWJsZSIsInN0YXRlIiwicmVuZGVyIiwiX21hcFN0eWxlJG1hcFN0eWxlczIiLCJfZ2V0QXBwbGljYXRpb25Db25maWcyIiwiX3RoaXMkcHJvcHM3IiwibWFwQ29udGVudCIsInN0eWxlU2VsZWN0b3IiLCJvbkNvbnRleHRNZW51IiwicHJldmVudERlZmF1bHQiLCJvdmVybGF5QmxlbmRpbmciLCJDb21wb25lbnQiLCJNYXBWaWV3U3RhdGVDb250ZXh0Iiwid2l0aFRoZW1lIl0sInNvdXJjZXMiOlsiLi4vc3JjL21hcC1jb250YWluZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbi8vIGxpYnJhcmllc1xuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWYsIHVzZU1lbW99IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQsIHt3aXRoVGhlbWV9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7TWFwLCBNYXBSZWZ9IGZyb20gJ3JlYWN0LW1hcC1nbCc7XG5pbXBvcnQge1BpY2tJbmZvfSBmcm9tICdAZGVjay5nbC9jb3JlL2xpYi9kZWNrJztcbmltcG9ydCBEZWNrR0wgZnJvbSAnQGRlY2suZ2wvcmVhY3QnO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3RvciwgU2VsZWN0b3J9IGZyb20gJ3Jlc2VsZWN0JztcbmltcG9ydCB7dXNlRHJvcHBhYmxlfSBmcm9tICdAZG5kLWtpdC9jb3JlJztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICdsb2Rhc2gvZGVib3VuY2UnO1xuXG5pbXBvcnQge1Zpc1N0YXRlQWN0aW9ucywgTWFwU3RhdGVBY3Rpb25zLCBVSVN0YXRlQWN0aW9uc30gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcblxuLy8gY29tcG9uZW50c1xuaW1wb3J0IE1hcFBvcG92ZXJGYWN0b3J5IGZyb20gJy4vbWFwL21hcC1wb3BvdmVyJztcbmltcG9ydCBNYXBDb250cm9sRmFjdG9yeSBmcm9tICcuL21hcC9tYXAtY29udHJvbCc7XG5pbXBvcnQge1xuICBTdHlsZWRNYXBDb250YWluZXIsXG4gIFN0eWxlZEF0dHJpYnV0aW9uLFxuICBFbmRIb3Jpem9udGFsRmxleGJveFxufSBmcm9tICcuL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCBFZGl0b3JGYWN0b3J5IGZyb20gJy4vZWRpdG9yL2VkaXRvcic7XG5cbi8vIHV0aWxzXG5pbXBvcnQge1xuICBnZW5lcmF0ZU1hcGJveExheWVycyxcbiAgdXBkYXRlTWFwYm94TGF5ZXJzLFxuICBMYXllckJhc2VDb25maWcsXG4gIFZpc3VhbENoYW5uZWxEb21haW4sXG4gIEVkaXRvckxheWVyVXRpbHMsXG4gIEFnZ3JlZ2F0ZWRCaW5cbn0gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuaW1wb3J0IHtcbiAgRGF0YXNldEF0dHJpYnV0aW9uLFxuICBNYXBTdGF0ZSxcbiAgTWFwQ29udHJvbHMsXG4gIFZpZXdwb3J0LFxuICBTcGxpdE1hcCxcbiAgU3BsaXRNYXBMYXllcnNcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBlcnJvck5vdGlmaWNhdGlvbixcbiAgc2V0TGF5ZXJCbGVuZGluZyxcbiAgaXNTdHlsZVVzaW5nTWFwYm94VGlsZXMsXG4gIGlzU3R5bGVVc2luZ09wZW5TdHJlZXRNYXBUaWxlcyxcbiAgZ2V0QmFzZU1hcExpYnJhcnksXG4gIEJhc2VNYXBMaWJyYXJ5Q29uZmlnLFxuICB0cmFuc2Zvcm1SZXF1ZXN0LFxuICBvYnNlcnZlRGltZW5zaW9ucyxcbiAgdW5vYnNlcnZlRGltZW5zaW9ucyxcbiAgaGFzTW9iaWxlV2lkdGgsXG4gIGdldE1hcExheWVyc0Zyb21TcGxpdE1hcHMsXG4gIG9uVmlld1BvcnRDaGFuZ2UsXG4gIGdldFZpZXdwb3J0RnJvbU1hcFN0YXRlLFxuICBub3JtYWxpemVFdmVudCxcbiAgcmdiVG9IZXgsXG4gIGNvbXB1dGVEZWNrRWZmZWN0cyxcbiAgZ2V0QXBwbGljYXRpb25Db25maWcsXG4gIEdldE1hcFJlZlxufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7YnJlYWtQb2ludFZhbHVlc30gZnJvbSAnQGtlcGxlci5nbC9zdHlsZXMnO1xuXG4vLyBkZWZhdWx0LXNldHRpbmdzXG5pbXBvcnQge1xuICBGSUxURVJfVFlQRVMsXG4gIEdFT0NPREVSX0xBWUVSX0lELFxuICBUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRSxcbiAgREVGQVVMVF9QSUNLSU5HX1JBRElVUyxcbiAgTk9fTUFQX0lELFxuICBFTVBUWV9NQVBCT1hfU1RZTEVcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5pbXBvcnQge0RST1BQQUJMRV9NQVBfQ09OVEFJTkVSX1RZUEV9IGZyb20gJy4vY29tbW9uL2RuZC1sYXllci1pdGVtcyc7XG4vLyBDb250ZXh0c1xuaW1wb3J0IHtNYXBWaWV3U3RhdGVDb250ZXh0fSBmcm9tICcuL21hcC12aWV3LXN0YXRlLWNvbnRleHQnO1xuXG5pbXBvcnQgRXJyb3JCb3VuZGFyeSBmcm9tICcuL2NvbW1vbi9lcnJvci1ib3VuZGFyeSc7XG5pbXBvcnQge0xPQ0FMRV9DT0RFU30gZnJvbSAnQGtlcGxlci5nbC9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IHtNYXBWaWV3fSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7XG4gIE1hcFN0eWxlLFxuICBjb21wdXRlRGVja0xheWVycyxcbiAgZ2V0TGF5ZXJIb3ZlclByb3AsXG4gIExheWVySG92ZXJQcm9wLFxuICBwcmVwYXJlTGF5ZXJzRm9yRGVjayxcbiAgcHJlcGFyZUxheWVyc1RvUmVuZGVyLFxuICBMYXllcnNUb1JlbmRlclxufSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbmltcG9ydCB7VmlzU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG5cbmltcG9ydCBMb2FkaW5nSW5kaWNhdG9yIGZyb20gJy4vbG9hZGluZy1pbmRpY2F0b3InO1xuXG4vLyBEZWJvdW5jZSB0aGUgcHJvcGFnYXRpb24gb2Ygdmlld3BvcnQgY2hhbmdlIGFuZCBtb3VzZSBtb3ZlcyB0byByZWR1eCBzdG9yZS5cbi8vIFRoaXMgaXMgdG8gYXZvaWQgdG9vIG1hbnkgcmVuZGVycyBvZiBvdGhlciBjb21wb25lbnRzIHdoZW4gdGhlIG1hcCBpc1xuLy8gYmVpbmcgcGFubmVkL3pvb21lZCAobGVhZGluZyB0byBsYWdneSBiYXNlbWFwL2RlY2sgc3luY2luZykuXG5jb25zdCBERUJPVU5DRV9WSUVXUE9SVF9QUk9QQUdBVEUgPSAxMDtcbmNvbnN0IERFQk9VTkNFX01PVVNFX01PVkVfUFJPUEFHQVRFID0gMTA7XG5cbmNvbnN0IE1BUF9TVFlMRToge1trZXk6IHN0cmluZ106IFJlYWN0LkNTU1Byb3BlcnRpZXN9ID0ge1xuICBjb250YWluZXI6IHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGhlaWdodDogJzEwMCUnXG4gIH0sXG4gIHRvcDoge1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHRvcDogMCxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGhlaWdodDogJzEwMCUnLFxuICAgIHBvaW50ZXJFdmVudHM6ICdub25lJ1xuICB9XG59O1xuXG5jb25zdCBMT0NBTEVfQ09ERVNfQVJSQVkgPSBPYmplY3Qua2V5cyhMT0NBTEVfQ09ERVMpO1xuXG5pbnRlcmZhY2UgU3R5bGVkTWFwQ29udGFpbmVyUHJvcHMge1xuICAkbWl4QmxlbmRNb2RlPzogc3RyaW5nO1xuICAkbWFwTGliQ3NzQ2xhc3M6IHN0cmluZztcbn1cblxuY29uc3QgU3R5bGVkTWFwID0gc3R5bGVkKFN0eWxlZE1hcENvbnRhaW5lcik8U3R5bGVkTWFwQ29udGFpbmVyUHJvcHM+KFxuICAoeyRtaXhCbGVuZE1vZGUgPSAnbm9ybWFsJywgJG1hcExpYkNzc0NsYXNzfSkgPT4gYFxuICAjZGVmYXVsdC1kZWNrZ2wtb3ZlcmxheSB7XG4gICAgbWl4LWJsZW5kLW1vZGU6ICR7JG1peEJsZW5kTW9kZX07XG4gIH07XG4gICpbJHskbWFwTGliQ3NzQ2xhc3N9LWNoaWxkcmVuXSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICB9XG5gXG4pO1xuXG5jb25zdCBNQVBCT1hHTF9TVFlMRV9VUERBVEUgPSAnc3R5bGUubG9hZCc7XG5jb25zdCBNQVBCT1hHTF9SRU5ERVIgPSAncmVuZGVyJztcbmNvbnN0IG5vcCA9ICgpID0+IHtcbiAgcmV0dXJuO1xufTtcblxudHlwZSBNYXBMaWJMb2dvUHJvcHMgPSB7XG4gIGJhc2VNYXBMaWJyYXJ5Q29uZmlnOiBCYXNlTWFwTGlicmFyeUNvbmZpZztcbn07XG5cbmNvbnN0IE1hcExpYkxvZ28gPSAoe2Jhc2VNYXBMaWJyYXJ5Q29uZmlnfTogTWFwTGliTG9nb1Byb3BzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiYXR0cml0aW9uLWxvZ29cIj5cbiAgICBCYXNlbWFwIGJ5OlxuICAgIDxhXG4gICAgICBzdHlsZT17e21hcmdpbkxlZnQ6ICc1cHgnfX1cbiAgICAgIGNsYXNzTmFtZT17YCR7YmFzZU1hcExpYnJhcnlDb25maWcubWFwTGliQ3NzQ2xhc3N9LWN0cmwtbG9nb2B9XG4gICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICBocmVmPXtiYXNlTWFwTGlicmFyeUNvbmZpZy5tYXBMaWJVcmx9XG4gICAgICBhcmlhLWxhYmVsPXtgJHtiYXNlTWFwTGlicmFyeUNvbmZpZy5tYXBMaWJOYW1lfSBsb2dvYH1cbiAgICAvPlxuICA8L2Rpdj5cbik7XG5cbmludGVyZmFjZSBTdHlsZWREcm9wcGFibGVQcm9wcyB7XG4gIGlzT3ZlcjogYm9vbGVhbjtcbn1cblxuY29uc3QgU3R5bGVkRHJvcHBhYmxlID0gc3R5bGVkLmRpdjxTdHlsZWREcm9wcGFibGVQcm9wcz5gXG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gKHByb3BzLmlzT3ZlciA/IHByb3BzLnRoZW1lLmRuZE92ZXJCYWNrZ3JvdW5kQ29sb3IgOiAnbm9uZScpfTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbmA7XG5cbmV4cG9ydCBjb25zdCBpc1NwbGl0U2VsZWN0b3IgPSBwcm9wcyA9PlxuICBwcm9wcy52aXNTdGF0ZS5zcGxpdE1hcHMgJiYgcHJvcHMudmlzU3RhdGUuc3BsaXRNYXBzLmxlbmd0aCA+IDE7XG5cbmV4cG9ydCBjb25zdCBEcm9wcGFibGUgPSAoe2NvbnRhaW5lcklkfSkgPT4ge1xuICBjb25zdCB7aXNPdmVyLCBzZXROb2RlUmVmfSA9IHVzZURyb3BwYWJsZSh7XG4gICAgaWQ6IGNvbnRhaW5lcklkLFxuICAgIGRhdGE6IHt0eXBlOiBEUk9QUEFCTEVfTUFQX0NPTlRBSU5FUl9UWVBFLCBpbmRleDogY29udGFpbmVySWR9LFxuICAgIGRpc2FibGVkOiAhY29udGFpbmVySWRcbiAgfSk7XG5cbiAgcmV0dXJuIDxTdHlsZWREcm9wcGFibGUgcmVmPXtzZXROb2RlUmVmfSBpc092ZXI9e2lzT3Zlcn0gLz47XG59O1xuXG5pbnRlcmZhY2UgU3R5bGVkRGF0YXNldEF0dHJpYnV0aW9uc0NvbnRhaW5lclByb3BzIHtcbiAgaXNQYWxtOiBib29sZWFuO1xufVxuXG5jb25zdCBTdHlsZWREYXRhc2V0QXR0cmlidXRpb25zQ29udGFpbmVyID0gc3R5bGVkLmRpdjxTdHlsZWREYXRhc2V0QXR0cmlidXRpb25zQ29udGFpbmVyUHJvcHM+YFxuICBtYXgtd2lkdGg6ICR7cHJvcHMgPT4gKHByb3BzLmlzUGFsbSA/ICcyMDBweCcgOiAnMzAwcHgnKX07XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYWJlbENvbG9yfTtcbiAgbWFyZ2luLXJpZ2h0OiAycHg7XG4gIG1hcmdpbi1ib3R0b206IDFweDtcbiAgbGluZS1oZWlnaHQ6ICR7cHJvcHMgPT4gKHByb3BzLmlzUGFsbSA/ICcxZW0nIDogJzEuNGVtJyl9O1xuXG4gICY6aG92ZXIge1xuICAgIHdoaXRlLXNwYWNlOiBpbmhlcml0O1xuICB9XG5gO1xuXG5jb25zdCBEYXRhc2V0QXR0cmlidXRpb25zID0gKHtcbiAgZGF0YXNldEF0dHJpYnV0aW9ucyxcbiAgaXNQYWxtXG59OiB7XG4gIGRhdGFzZXRBdHRyaWJ1dGlvbnM6IERhdGFzZXRBdHRyaWJ1dGlvbltdO1xuICBpc1BhbG06IGJvb2xlYW47XG59KSA9PiAoXG4gIDw+XG4gICAge2RhdGFzZXRBdHRyaWJ1dGlvbnM/Lmxlbmd0aCA/IChcbiAgICAgIDxTdHlsZWREYXRhc2V0QXR0cmlidXRpb25zQ29udGFpbmVyIGlzUGFsbT17aXNQYWxtfT5cbiAgICAgICAge2RhdGFzZXRBdHRyaWJ1dGlvbnMubWFwKChkcywgaWR4KSA9PiAoXG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIHsuLi4oZHMudXJsID8ge2hyZWY6IGRzLnVybH0gOiBudWxsKX1cbiAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgIGtleT17YCR7ZHMudGl0bGV9XyR7aWR4fWB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2RzLnRpdGxlfVxuICAgICAgICAgICAge2lkeCAhPT0gZGF0YXNldEF0dHJpYnV0aW9ucy5sZW5ndGggLSAxID8gJywgJyA6IG51bGx9XG4gICAgICAgICAgPC9hPlxuICAgICAgICApKX1cbiAgICAgIDwvU3R5bGVkRGF0YXNldEF0dHJpYnV0aW9uc0NvbnRhaW5lcj5cbiAgICApIDogbnVsbH1cbiAgPC8+XG4pO1xuXG50eXBlIEF0dHJpYnV0aW9uUHJvcHMgPSB7XG4gIHNob3dCYXNlTWFwTGliTG9nbzogYm9vbGVhbjtcbiAgc2hvd09zbUJhc2VtYXBBdHRyaWJ1dGlvbjogYm9vbGVhbjtcbiAgZGF0YXNldEF0dHJpYnV0aW9uczogRGF0YXNldEF0dHJpYnV0aW9uW107XG4gIGJhc2VNYXBMaWJyYXJ5Q29uZmlnOiBCYXNlTWFwTGlicmFyeUNvbmZpZztcbn07XG5cbmV4cG9ydCBjb25zdCBBdHRyaWJ1dGlvbjogUmVhY3QuRkM8QXR0cmlidXRpb25Qcm9wcz4gPSAoe1xuICBzaG93QmFzZU1hcExpYkxvZ28gPSB0cnVlLFxuICBzaG93T3NtQmFzZW1hcEF0dHJpYnV0aW9uID0gZmFsc2UsXG4gIGRhdGFzZXRBdHRyaWJ1dGlvbnMsXG4gIGJhc2VNYXBMaWJyYXJ5Q29uZmlnXG59OiBBdHRyaWJ1dGlvblByb3BzKSA9PiB7XG4gIGNvbnN0IGlzUGFsbSA9IGhhc01vYmlsZVdpZHRoKGJyZWFrUG9pbnRWYWx1ZXMpO1xuXG4gIGNvbnN0IG1lbW9pemVkQ29tcG9uZW50cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghc2hvd0Jhc2VNYXBMaWJMb2dvKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkQXR0cmlidXRpb25cbiAgICAgICAgICBtYXBMaWJDc3NDbGFzcz17YmFzZU1hcExpYnJhcnlDb25maWcubWFwTGliQ3NzQ2xhc3N9XG4gICAgICAgICAgbWFwTGliQXR0cmlidXRpb25Dc3NDbGFzcz17YmFzZU1hcExpYnJhcnlDb25maWcubWFwTGliQXR0cmlidXRpb25Dc3NDbGFzc31cbiAgICAgICAgPlxuICAgICAgICAgIDxFbmRIb3Jpem9udGFsRmxleGJveD5cbiAgICAgICAgICAgIDxEYXRhc2V0QXR0cmlidXRpb25zIGRhdGFzZXRBdHRyaWJ1dGlvbnM9e2RhdGFzZXRBdHRyaWJ1dGlvbnN9IGlzUGFsbT17aXNQYWxtfSAvPlxuICAgICAgICAgICAge3Nob3dPc21CYXNlbWFwQXR0cmlidXRpb24gPyAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXR0cml0aW9uLWxpbmtcIj5cbiAgICAgICAgICAgICAgICB7ZGF0YXNldEF0dHJpYnV0aW9ucz8ubGVuZ3RoID8gPHNwYW4gY2xhc3NOYW1lPVwicGlwZS1zZXBhcmF0b3JcIj58PC9zcGFuPiA6IG51bGx9XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgIGhyZWY9XCJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodFwiXG4gICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgwqkgT3BlblN0cmVldE1hcFxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L0VuZEhvcml6b250YWxGbGV4Ym94PlxuICAgICAgICA8L1N0eWxlZEF0dHJpYnV0aW9uPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZEF0dHJpYnV0aW9uXG4gICAgICAgIG1hcExpYkNzc0NsYXNzPXtiYXNlTWFwTGlicmFyeUNvbmZpZy5tYXBMaWJDc3NDbGFzc31cbiAgICAgICAgbWFwTGliQXR0cmlidXRpb25Dc3NDbGFzcz17YmFzZU1hcExpYnJhcnlDb25maWcubWFwTGliQXR0cmlidXRpb25Dc3NDbGFzc31cbiAgICAgID5cbiAgICAgICAgPEVuZEhvcml6b250YWxGbGV4Ym94PlxuICAgICAgICAgIDxEYXRhc2V0QXR0cmlidXRpb25zIGRhdGFzZXRBdHRyaWJ1dGlvbnM9e2RhdGFzZXRBdHRyaWJ1dGlvbnN9IGlzUGFsbT17aXNQYWxtfSAvPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXR0cml0aW9uLWxpbmtcIj5cbiAgICAgICAgICAgIHtkYXRhc2V0QXR0cmlidXRpb25zPy5sZW5ndGggPyA8c3BhbiBjbGFzc05hbWU9XCJwaXBlLXNlcGFyYXRvclwiPnw8L3NwYW4+IDogbnVsbH1cbiAgICAgICAgICAgIHtpc1BhbG0gPyA8TWFwTGliTG9nbyBiYXNlTWFwTGlicmFyeUNvbmZpZz17YmFzZU1hcExpYnJhcnlDb25maWd9IC8+IDogbnVsbH1cbiAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL2tlcGxlci5nbC9wb2xpY3kvXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICAgICAgICDCqSBrZXBsZXIuZ2wgfHsnICd9XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICB7IWlzUGFsbSA/IDxNYXBMaWJMb2dvIGJhc2VNYXBMaWJyYXJ5Q29uZmlnPXtiYXNlTWFwTGlicmFyeUNvbmZpZ30gLz4gOiBudWxsfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0VuZEhvcml6b250YWxGbGV4Ym94PlxuICAgICAgPC9TdHlsZWRBdHRyaWJ1dGlvbj5cbiAgICApO1xuICB9LCBbXG4gICAgc2hvd0Jhc2VNYXBMaWJMb2dvLFxuICAgIHNob3dPc21CYXNlbWFwQXR0cmlidXRpb24sXG4gICAgZGF0YXNldEF0dHJpYnV0aW9ucyxcbiAgICBpc1BhbG0sXG4gICAgYmFzZU1hcExpYnJhcnlDb25maWdcbiAgXSk7XG5cbiAgcmV0dXJuIG1lbW9pemVkQ29tcG9uZW50cztcbn07XG5cbk1hcENvbnRhaW5lckZhY3RvcnkuZGVwcyA9IFtNYXBQb3BvdmVyRmFjdG9yeSwgTWFwQ29udHJvbEZhY3RvcnksIEVkaXRvckZhY3RvcnldO1xuXG50eXBlIE1hcGJveFN0eWxlID0gc3RyaW5nIHwgb2JqZWN0IHwgdW5kZWZpbmVkO1xudHlwZSBQcm9wU2VsZWN0b3I8Uj4gPSBTZWxlY3RvcjxNYXBDb250YWluZXJQcm9wcywgUj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwQ29udGFpbmVyUHJvcHMge1xuICB2aXNTdGF0ZTogVmlzU3RhdGU7XG4gIG1hcFN0YXRlOiBNYXBTdGF0ZTtcbiAgbWFwQ29udHJvbHM6IE1hcENvbnRyb2xzO1xuICBtYXBTdHlsZToge2JvdHRvbU1hcFN0eWxlPzogTWFwYm94U3R5bGU7IHRvcE1hcFN0eWxlPzogTWFwYm94U3R5bGV9ICYgTWFwU3R5bGU7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIG1hcGJveEFwaVVybDogc3RyaW5nO1xuICB2aXNTdGF0ZUFjdGlvbnM6IHR5cGVvZiBWaXNTdGF0ZUFjdGlvbnM7XG4gIG1hcFN0YXRlQWN0aW9uczogdHlwZW9mIE1hcFN0YXRlQWN0aW9ucztcbiAgdWlTdGF0ZUFjdGlvbnM6IHR5cGVvZiBVSVN0YXRlQWN0aW9ucztcblxuICAvLyBvcHRpb25hbFxuICBwcmltYXJ5PzogYm9vbGVhbjsgLy8gcHJpbWFyeSBvbmUgd2lsbCBiZSByZXBvcnRpbmcgaXRzIHNpemUgdG8gYXBwU3RhdGVcbiAgcmVhZE9ubHk/OiBib29sZWFuO1xuICBpc0V4cG9ydD86IGJvb2xlYW47XG4gIC8vIG9uTWFwU3R5bGVMb2FkZWQ/OiAobWFwOiBtYXBsaWJyZWdsLk1hcCB8IFJldHVyblR5cGU8TWFwUmVmWydnZXRNYXAnXT4gfCBudWxsKSA9PiB2b2lkO1xuICBvbk1hcFN0eWxlTG9hZGVkPzogKG1hcDogR2V0TWFwUmVmIHwgbnVsbCkgPT4gdm9pZDtcbiAgb25NYXBSZW5kZXI/OiAobWFwOiBHZXRNYXBSZWYgfCBudWxsKSA9PiB2b2lkO1xuICBnZXRNYXBib3hSZWY/OiAobWFwYm94PzogTWFwUmVmIHwgbnVsbCwgaW5kZXg/OiBudW1iZXIpID0+IHZvaWQ7XG4gIGluZGV4PzogbnVtYmVyO1xuICBkZWxldGVNYXBMYWJlbHM/OiAoY29udGFpbmVySWQ6IHN0cmluZywgbGF5ZXJJZDogc3RyaW5nKSA9PiB2b2lkO1xuICBjb250YWluZXJJZD86IG51bWJlcjtcblxuICBpc0xvYWRpbmdJbmRpY2F0b3JWaXNpYmxlPzogYm9vbGVhbjtcbiAgYWN0aXZlU2lkZVBhbmVsOiBzdHJpbmcgfCBudWxsO1xuICBzaWRlUGFuZWxXaWR0aD86IG51bWJlcjtcblxuICBsb2NhbGU/OiBhbnk7XG4gIHRoZW1lPzogYW55O1xuICBlZGl0b3I/OiBhbnk7XG4gIE1hcENvbXBvbmVudD86IHR5cGVvZiBNYXA7XG4gIGRlY2tHbFByb3BzPzogYW55O1xuICBvbkRlY2tJbml0aWFsaXplZD86IChhOiBhbnksIGI6IGFueSkgPT4gdm9pZDtcbiAgb25WaWV3U3RhdGVDaGFuZ2U/OiAodmlld3BvcnQ6IFZpZXdwb3J0KSA9PiB2b2lkO1xuXG4gIHRvcE1hcENvbnRhaW5lclByb3BzOiBhbnk7XG4gIGJvdHRvbU1hcENvbnRhaW5lclByb3BzOiBhbnk7XG4gIHRyYW5zZm9ybVJlcXVlc3Q/OiAodXJsOiBzdHJpbmcsIHJlc291cmNlVHlwZT86IHN0cmluZykgPT4ge3VybDogc3RyaW5nfTtcblxuICBkYXRhc2V0QXR0cmlidXRpb25zPzogRGF0YXNldEF0dHJpYnV0aW9uW107XG5cbiAgZ2VuZXJhdGVNYXBib3hMYXllcnM/OiB0eXBlb2YgZ2VuZXJhdGVNYXBib3hMYXllcnM7XG4gIGdlbmVyYXRlRGVja0dMTGF5ZXJzPzogdHlwZW9mIGNvbXB1dGVEZWNrTGF5ZXJzO1xuXG4gIG9uTW91c2VNb3ZlPzogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50ICYge2xuZ0xhdD86IFtudW1iZXIsIG51bWJlcl19KSA9PiB2b2lkO1xuXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICBkZWNrUmVuZGVyQ2FsbGJhY2tzPzoge1xuICAgIG9uRGVja0xvYWQ/OiAoKSA9PiB2b2lkO1xuICAgIG9uRGVja1JlbmRlcj86IChkZWNrUHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGw7XG4gICAgb25EZWNrQWZ0ZXJSZW5kZXI/OiAoZGVja1Byb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gYW55O1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNYXBDb250YWluZXJGYWN0b3J5KFxuICBNYXBQb3BvdmVyOiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBQb3BvdmVyRmFjdG9yeT4sXG4gIE1hcENvbnRyb2w6IFJldHVyblR5cGU8dHlwZW9mIE1hcENvbnRyb2xGYWN0b3J5PixcbiAgRWRpdG9yOiBSZXR1cm5UeXBlPHR5cGVvZiBFZGl0b3JGYWN0b3J5PlxuKTogUmVhY3QuQ29tcG9uZW50VHlwZTxNYXBDb250YWluZXJQcm9wcz4ge1xuICBjbGFzcyBNYXBDb250YWluZXIgZXh0ZW5kcyBDb21wb25lbnQ8TWFwQ29udGFpbmVyUHJvcHM+IHtcbiAgICBkaXNwbGF5TmFtZSA9ICdNYXBDb250YWluZXInO1xuXG4gICAgc3RhdGljIGNvbnRleHRUeXBlID0gTWFwVmlld1N0YXRlQ29udGV4dDtcblxuICAgIGRlY2xhcmUgY29udGV4dDogUmVhY3QuQ29udGV4dFR5cGU8dHlwZW9mIE1hcFZpZXdTdGF0ZUNvbnRleHQ+O1xuXG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgIE1hcENvbXBvbmVudDogTWFwLFxuICAgICAgZGVja0dsUHJvcHM6IHt9LFxuICAgICAgaW5kZXg6IDAsXG4gICAgICBwcmltYXJ5OiB0cnVlXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICBzdXBlcihwcm9wcyk7XG4gICAgfVxuXG4gICAgc3RhdGUgPSB7XG4gICAgICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgYXR0cmlidXRpb24gc2hvdWxkIGJlIHZpc2libGUgYmFzZWQgdGhlIHJlc3VsdCBvZiBsb2FkaW5nIHRoZSBtYXAgc3R5bGVcbiAgICAgIHNob3dCYXNlTWFwQXR0cmlidXRpb246IHRydWVcbiAgICB9O1xuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICBpZiAoIXRoaXMuX3JlZi5jdXJyZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIG9ic2VydmVEaW1lbnNpb25zKHRoaXMuX3JlZi5jdXJyZW50LCB0aGlzLl9oYW5kbGVSZXNpemUpO1xuICAgIH1cblxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgLy8gdW5iaW5kIG1hcGJveGdsIGV2ZW50IGxpc3RlbmVyXG4gICAgICBpZiAodGhpcy5fbWFwKSB7XG4gICAgICAgIHRoaXMuX21hcD8ub2ZmKE1BUEJPWEdMX1NUWUxFX1VQREFURSwgbm9wKTtcbiAgICAgICAgdGhpcy5fbWFwPy5vZmYoTUFQQk9YR0xfUkVOREVSLCBub3ApO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLl9yZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB1bm9ic2VydmVEaW1lbnNpb25zKHRoaXMuX3JlZi5jdXJyZW50KTtcbiAgICB9XG5cbiAgICBfZGVjazogYW55ID0gbnVsbDtcbiAgICBfbWFwOiBHZXRNYXBSZWYgfCBudWxsID0gbnVsbDtcbiAgICBfcmVmID0gY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xuICAgIF9kZWNrR0xFcnJvcnNFbGFwc2VkOiB7W2lkOiBzdHJpbmddOiBudW1iZXJ9ID0ge307XG5cbiAgICBwcmV2aW91c0xheWVycyA9IHtcbiAgICAgIC8vIFtsYXllcnMuaWRdOiBtYXBib3hMYXllckNvbmZpZ1xuICAgIH07XG5cbiAgICBfaGFuZGxlUmVzaXplID0gZGltZW5zaW9ucyA9PiB7XG4gICAgICBjb25zdCB7cHJpbWFyeSwgaW5kZXh9ID0gdGhpcy5wcm9wcztcbiAgICAgIGlmIChwcmltYXJ5KSB7XG4gICAgICAgIGNvbnN0IHttYXBTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKGRpbWVuc2lvbnMgJiYgZGltZW5zaW9ucy53aWR0aCA+IDAgJiYgZGltZW5zaW9ucy5oZWlnaHQgPiAwKSB7XG4gICAgICAgICAgbWFwU3RhdGVBY3Rpb25zLnVwZGF0ZU1hcChkaW1lbnNpb25zLCBpbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgbGF5ZXJzU2VsZWN0b3I6IFByb3BTZWxlY3RvcjxWaXNTdGF0ZVsnbGF5ZXJzJ10+ID0gcHJvcHMgPT4gcHJvcHMudmlzU3RhdGUubGF5ZXJzO1xuICAgIGxheWVyRGF0YVNlbGVjdG9yOiBQcm9wU2VsZWN0b3I8VmlzU3RhdGVbJ2xheWVycyddPiA9IHByb3BzID0+IHByb3BzLnZpc1N0YXRlLmxheWVyRGF0YTtcbiAgICBzcGxpdE1hcFNlbGVjdG9yOiBQcm9wU2VsZWN0b3I8U3BsaXRNYXBbXT4gPSBwcm9wcyA9PiBwcm9wcy52aXNTdGF0ZS5zcGxpdE1hcHM7XG4gICAgc3BsaXRNYXBJbmRleFNlbGVjdG9yOiBQcm9wU2VsZWN0b3I8bnVtYmVyIHwgdW5kZWZpbmVkPiA9IHByb3BzID0+IHByb3BzLmluZGV4O1xuICAgIG1hcExheWVyc1NlbGVjdG9yOiBQcm9wU2VsZWN0b3I8U3BsaXRNYXBMYXllcnMgfCBudWxsIHwgdW5kZWZpbmVkPiA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5zcGxpdE1hcFNlbGVjdG9yLFxuICAgICAgdGhpcy5zcGxpdE1hcEluZGV4U2VsZWN0b3IsXG4gICAgICBnZXRNYXBMYXllcnNGcm9tU3BsaXRNYXBzXG4gICAgKTtcbiAgICBsYXllck9yZGVyU2VsZWN0b3I6IFByb3BTZWxlY3RvcjxWaXNTdGF0ZVsnbGF5ZXJPcmRlciddPiA9IHByb3BzID0+IHByb3BzLnZpc1N0YXRlLmxheWVyT3JkZXI7XG4gICAgbGF5ZXJzVG9SZW5kZXJTZWxlY3RvcjogUHJvcFNlbGVjdG9yPExheWVyc1RvUmVuZGVyPiA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5sYXllcnNTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJEYXRhU2VsZWN0b3IsXG4gICAgICB0aGlzLm1hcExheWVyc1NlbGVjdG9yLFxuICAgICAgcHJlcGFyZUxheWVyc1RvUmVuZGVyXG4gICAgKTtcbiAgICBsYXllcnNGb3JEZWNrU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMubGF5ZXJzU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyRGF0YVNlbGVjdG9yLFxuICAgICAgcHJlcGFyZUxheWVyc0ZvckRlY2tcbiAgICApO1xuICAgIGZpbHRlcnNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLnZpc1N0YXRlLmZpbHRlcnM7XG4gICAgcG9seWdvbkZpbHRlcnNTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKHRoaXMuZmlsdGVyc1NlbGVjdG9yLCBmaWx0ZXJzID0+XG4gICAgICBmaWx0ZXJzLmZpbHRlcihmID0+IGYudHlwZSA9PT0gRklMVEVSX1RZUEVTLnBvbHlnb24gJiYgZi5lbmFibGVkICE9PSBmYWxzZSlcbiAgICApO1xuICAgIGZlYXR1cmVzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy52aXNTdGF0ZS5lZGl0b3IuZmVhdHVyZXM7XG4gICAgc2VsZWN0ZWRGZWF0dXJlU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy52aXNTdGF0ZS5lZGl0b3Iuc2VsZWN0ZWRGZWF0dXJlO1xuICAgIGZlYXR1cmVDb2xsZWN0aW9uU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMucG9seWdvbkZpbHRlcnNTZWxlY3RvcixcbiAgICAgIHRoaXMuZmVhdHVyZXNTZWxlY3RvcixcbiAgICAgIChwb2x5Z29uRmlsdGVycywgZmVhdHVyZXMpID0+ICh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICAgIGZlYXR1cmVzOiBmZWF0dXJlcy5jb25jYXQocG9seWdvbkZpbHRlcnMubWFwKGYgPT4gZi52YWx1ZSkpXG4gICAgICB9KVxuICAgICk7XG4gICAgLy8gQHRzLWlnbm9yZSAtIE5vIG92ZXJsb2FkIG1hdGNoZXMgdGhpcyBjYWxsXG4gICAgc2VsZWN0ZWRQb2x5Z29uSW5kZXhTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5mZWF0dXJlQ29sbGVjdGlvblNlbGVjdG9yLFxuICAgICAgdGhpcy5zZWxlY3RlZEZlYXR1cmVTZWxlY3RvcixcbiAgICAgIChjb2xsZWN0aW9uLCBzZWxlY3RlZEZlYXR1cmUpID0+XG4gICAgICAgIGNvbGxlY3Rpb24uZmVhdHVyZXMuZmluZEluZGV4KGYgPT4gZi5pZCA9PT0gc2VsZWN0ZWRGZWF0dXJlPy5pZClcbiAgICApO1xuICAgIHNlbGVjdGVkRmVhdHVyZUluZGV4QXJyYXlTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgKHZhbHVlOiBudW1iZXIpID0+IHZhbHVlLFxuICAgICAgdmFsdWUgPT4ge1xuICAgICAgICByZXR1cm4gdmFsdWUgPCAwID8gW10gOiBbdmFsdWVdO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBnZW5lcmF0ZU1hcGJveExheWVyTWV0aG9kU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5nZW5lcmF0ZU1hcGJveExheWVycyA/PyBnZW5lcmF0ZU1hcGJveExheWVycztcblxuICAgIG1hcGJveExheWVyc1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllckRhdGFTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJPcmRlclNlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllcnNUb1JlbmRlclNlbGVjdG9yLFxuICAgICAgdGhpcy5nZW5lcmF0ZU1hcGJveExheWVyTWV0aG9kU2VsZWN0b3IsXG4gICAgICAobGF5ZXIsIGxheWVyRGF0YSwgbGF5ZXJPcmRlciwgbGF5ZXJzVG9SZW5kZXIsIGdlbmVyYXRlTWFwYm94TGF5ZXJNZXRob2QpID0+XG4gICAgICAgIGdlbmVyYXRlTWFwYm94TGF5ZXJNZXRob2QobGF5ZXIsIGxheWVyRGF0YSwgbGF5ZXJPcmRlciwgbGF5ZXJzVG9SZW5kZXIpXG4gICAgKTtcblxuICAgIC8vIG1lcmdlIGluIGEgYmFja2dyb3VuZC1jb2xvciBzdHlsZSBpZiB0aGUgYmFzZW1hcCBjaG9pY2UgaXMgTk9fTUFQX0lEXG4gICAgLy8gdXNlZCBieSA8U3R5bGVkTWFwPiBpbmxpbmUgc3R5bGUgcHJvcFxuICAgIG1hcFN0eWxlVHlwZVNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMubWFwU3R5bGUuc3R5bGVUeXBlO1xuICAgIG1hcFN0eWxlQmFja2dyb3VuZENvbG9yU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5tYXBTdHlsZS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgc3R5bGVTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5tYXBTdHlsZVR5cGVTZWxlY3RvcixcbiAgICAgIHRoaXMubWFwU3R5bGVCYWNrZ3JvdW5kQ29sb3JTZWxlY3RvcixcbiAgICAgIChzdHlsZVR5cGUsIGJhY2tncm91bmRDb2xvcikgPT4gKHtcbiAgICAgICAgLi4uTUFQX1NUWUxFLmNvbnRhaW5lcixcbiAgICAgICAgLi4uKHN0eWxlVHlwZSA9PT0gTk9fTUFQX0lEID8ge2JhY2tncm91bmRDb2xvcjogcmdiVG9IZXgoYmFja2dyb3VuZENvbG9yKX0gOiB7fSlcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8qIGNvbXBvbmVudCBwcml2YXRlIGZ1bmN0aW9ucyAqL1xuICAgIF9vbkNsb3NlTWFwUG9wb3ZlciA9ICgpID0+IHtcbiAgICAgIHRoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLm9uTGF5ZXJDbGljayhudWxsKTtcbiAgICB9O1xuXG4gICAgX29uTGF5ZXJIb3ZlciA9IChfaWR4OiBudW1iZXIsIGluZm86IFBpY2tJbmZvPGFueT4gfCBudWxsKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy5vbkxheWVySG92ZXIoaW5mbywgdGhpcy5wcm9wcy5pbmRleCk7XG4gICAgfTtcblxuICAgIF9vbkxheWVyU2V0RG9tYWluID0gKFxuICAgICAgaWR4OiBudW1iZXIsXG4gICAgICB2YWx1ZToge2RvbWFpbjogVmlzdWFsQ2hhbm5lbERvbWFpbjsgYWdncmVnYXRlZEJpbnM6IEFnZ3JlZ2F0ZWRCaW5bXX1cbiAgICApID0+IHtcbiAgICAgIHRoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLmxheWVyQ29uZmlnQ2hhbmdlKHRoaXMucHJvcHMudmlzU3RhdGUubGF5ZXJzW2lkeF0sIHtcbiAgICAgICAgY29sb3JEb21haW46IHZhbHVlLmRvbWFpbixcbiAgICAgICAgYWdncmVnYXRlZEJpbnM6IHZhbHVlLmFnZ3JlZ2F0ZWRCaW5zXG4gICAgICB9IGFzIFBhcnRpYWw8TGF5ZXJCYXNlQ29uZmlnPik7XG4gICAgfTtcblxuICAgIF9vbkxheWVyRmlsdGVyZWRJdGVtc0NoYW5nZSA9IChpZHgsIGV2ZW50KSA9PiB7XG4gICAgICB0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy5sYXllckZpbHRlcmVkSXRlbXNDaGFuZ2UodGhpcy5wcm9wcy52aXNTdGF0ZS5sYXllcnNbaWR4XSwgZXZlbnQpO1xuICAgIH07XG5cbiAgICBfaGFuZGxlTWFwVG9nZ2xlTGF5ZXIgPSBsYXllcklkID0+IHtcbiAgICAgIGNvbnN0IHtpbmRleDogbWFwSW5kZXggPSAwLCB2aXNTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgIHZpc1N0YXRlQWN0aW9ucy50b2dnbGVMYXllckZvck1hcChtYXBJbmRleCwgbGF5ZXJJZCk7XG4gICAgfTtcblxuICAgIF9vbk1hcGJveFN0eWxlVXBkYXRlID0gdXBkYXRlID0+IHtcbiAgICAgIC8vIGZvcmNlIHJlZnJlc2ggbWFwYm94Z2wgbGF5ZXJzXG4gICAgICB0aGlzLnByZXZpb3VzTGF5ZXJzID0ge307XG4gICAgICB0aGlzLl91cGRhdGVNYXBib3hMYXllcnMoKTtcblxuICAgICAgaWYgKHVwZGF0ZSAmJiB1cGRhdGUuc3R5bGUpIHtcbiAgICAgICAgLy8gTm8gYXR0cmlidXRpb25zIGFyZSBuZWVkZWQgaWYgdGhlIHN0eWxlIGRvZXNuJ3QgcmVmZXJlbmNlIE1hcGJveCBzb3VyY2VzXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIHNob3dCYXNlTWFwQXR0cmlidXRpb246XG4gICAgICAgICAgICBpc1N0eWxlVXNpbmdNYXBib3hUaWxlcyh1cGRhdGUuc3R5bGUpIHx8ICFpc1N0eWxlVXNpbmdPcGVuU3RyZWV0TWFwVGlsZXModXBkYXRlLnN0eWxlKVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uTWFwU3R5bGVMb2FkZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbk1hcFN0eWxlTG9hZGVkKHRoaXMuX21hcCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9zZXRNYXBSZWYgPSBtYXBSZWYgPT4ge1xuICAgICAgLy8gSGFuZGxlIGNoYW5nZSBvZiB0aGUgbWFwIGxpYnJhcnlcbiAgICAgIGlmICh0aGlzLl9tYXAgJiYgbWFwUmVmKSB7XG4gICAgICAgIGNvbnN0IG1hcCA9IG1hcFJlZi5nZXRNYXAoKTtcbiAgICAgICAgaWYgKG1hcCAmJiB0aGlzLl9tYXAgIT09IG1hcCkge1xuICAgICAgICAgIHRoaXMuX21hcD8ub2ZmKE1BUEJPWEdMX1NUWUxFX1VQREFURSwgbm9wKTtcbiAgICAgICAgICB0aGlzLl9tYXA/Lm9mZihNQVBCT1hHTF9SRU5ERVIsIG5vcCk7XG4gICAgICAgICAgdGhpcy5fbWFwID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuX21hcCAmJiBtYXBSZWYpIHtcbiAgICAgICAgdGhpcy5fbWFwID0gbWFwUmVmLmdldE1hcCgpO1xuICAgICAgICAvLyBpIG5vdGljZWQgaW4gY2VydGFpbiBjb250ZXh0IHdlIGRvbid0IGFjY2VzcyB0aGUgYWN0dWFsIG1hcCBlbGVtZW50XG4gICAgICAgIGlmICghdGhpcy5fbWFwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGJpbmQgbWFwYm94Z2wgZXZlbnQgbGlzdGVuZXJcbiAgICAgICAgdGhpcy5fbWFwLm9uKE1BUEJPWEdMX1NUWUxFX1VQREFURSwgdGhpcy5fb25NYXBib3hTdHlsZVVwZGF0ZSk7XG5cbiAgICAgICAgdGhpcy5fbWFwLm9uKE1BUEJPWEdMX1JFTkRFUiwgKCkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5vbk1hcFJlbmRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vbk1hcFJlbmRlcih0aGlzLl9tYXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnByb3BzLmdldE1hcGJveFJlZikge1xuICAgICAgICAvLyBUaGUgcGFyZW50IGNvbXBvbmVudCBjYW4gZ2FpbiBhY2Nlc3MgdG8gb3VyIE1hcGJveEdsTWFwIGJ5XG4gICAgICAgIC8vIHByb3ZpZGluZyB0aGlzIGNhbGxiYWNrLiBOb3RlIHRoYXQgJ21hcGJveCcgd2lsbCBiZSBudWxsIHdoZW4gdGhlXG4gICAgICAgIC8vIHJlZiBpcyB1bnNldCAoZS5nLiB3aGVuIGEgc3BsaXQgbWFwIGlzIGNsb3NlZCkuXG4gICAgICAgIHRoaXMucHJvcHMuZ2V0TWFwYm94UmVmKG1hcFJlZiwgdGhpcy5wcm9wcy5pbmRleCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9vbkRlY2tJbml0aWFsaXplZChnbCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMub25EZWNrSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbkRlY2tJbml0aWFsaXplZCh0aGlzLl9kZWNrLCBnbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMSkgQWxsb3cgZWZmZWN0cyBvbmx5IGZvciB0aGUgZmlyc3Qgdmlldy5cbiAgICAgKiAyKSBQcmV2ZW50IGVmZmVjdDpwcmVSZW5kZXIgY2FsbCB3aXRob3V0IHZhbGlkIGdlbmVyYXRlZCB2aWV3cG9ydHMuXG4gICAgICogQHBhcmFtIHZpZXdJbmRleCBWaWV3IGluZGV4LlxuICAgICAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiBlZmZlY3RzIGNhbiBiZSB1c2VkLlxuICAgICAqL1xuICAgIF9pc09LVG9SZW5kZXJFZmZlY3RzKHZpZXdJbmRleD86IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuICF2aWV3SW5kZXggJiYgQm9vbGVhbih0aGlzLl9kZWNrPy52aWV3TWFuYWdlcj8uX3ZpZXdwb3J0cz8ubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBfb25CZWZvcmVSZW5kZXIgPSAoe2dsfSkgPT4ge1xuICAgICAgc2V0TGF5ZXJCbGVuZGluZyhnbCwgdGhpcy5wcm9wcy52aXNTdGF0ZS5sYXllckJsZW5kaW5nKTtcbiAgICB9O1xuXG4gICAgX29uRGVja0Vycm9yID0gKGVycm9yLCBsYXllcikgPT4ge1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3I/Lm1lc3NhZ2UgfHwgJ3Vua25vd24tZXJyb3InO1xuICAgICAgY29uc3QgbGF5ZXJNZXNzYWdlID0gbGF5ZXI/LmlkID8gYCBpbiAke2xheWVyLmlkfSBsYXllcmAgOiAnJztcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZUZ1bGwgPVxuICAgICAgICBlcnJvck1lc3NhZ2UgPT09ICdXZWJHTCBjb250ZXh0IGlzIGxvc3QnXG4gICAgICAgICAgPyAnWW91ciBHUFUgd2FzIGRpc2Nvbm5lY3RlZC4gVGhpcyBjYW4gaGFwcGVuIGlmIHlvdXIgY29tcHV0ZXIgZ29lcyB0byBzbGVlcC4gSXQgY2FuIGFsc28gb2NjdXIgZm9yIG90aGVyIHJlYXNvbnMsIHN1Y2ggYXMgaWYgeW91IGFyZSBydW5uaW5nIHRvbyBtYW55IEdQVSBhcHBsaWNhdGlvbnMuJ1xuICAgICAgICAgIDogYEFuIGVycm9yIGluIGRlY2suZ2w6ICR7ZXJyb3JNZXNzYWdlfSR7bGF5ZXJNZXNzYWdlfS5gO1xuXG4gICAgICAvLyBUaHJvdHRsZSBlcnJvciBub3RpZmljYXRpb25zLCBhcyBSZWFjdCBkb2Vzbid0IGxpa2UgdG9vIG1hbnkgc3RhdGUgY2hhbmdlcyBmcm9tIGhlcmUuXG4gICAgICBjb25zdCBsYXN0U2hvd24gPSB0aGlzLl9kZWNrR0xFcnJvcnNFbGFwc2VkW2Vycm9yTWVzc2FnZUZ1bGxdO1xuICAgICAgaWYgKCFsYXN0U2hvd24gfHwgbGFzdFNob3duIDwgRGF0ZS5ub3coKSAtIFRIUk9UVExFX05PVElGSUNBVElPTl9USU1FKSB7XG4gICAgICAgIHRoaXMuX2RlY2tHTEVycm9yc0VsYXBzZWRbZXJyb3JNZXNzYWdlRnVsbF0gPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIC8vIE1hcmsgbGF5ZXIgYXMgaW52YWxpZFxuICAgICAgICBsZXQgZXh0cmFMYXllck1lc3NhZ2UgPSAnJztcbiAgICAgICAgY29uc3Qge3Zpc1N0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAobGF5ZXIpIHtcbiAgICAgICAgICBsZXQgdG9wTW9zdExheWVyID0gbGF5ZXI7XG4gICAgICAgICAgd2hpbGUgKHRvcE1vc3RMYXllci5wYXJlbnQpIHtcbiAgICAgICAgICAgIHRvcE1vc3RMYXllciA9IHRvcE1vc3RMYXllci5wYXJlbnQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0b3BNb3N0TGF5ZXIucHJvcHM/LmlkKSB7XG4gICAgICAgICAgICB2aXNTdGF0ZUFjdGlvbnMubGF5ZXJTZXRJc1ZhbGlkKHRvcE1vc3RMYXllciwgZmFsc2UpO1xuICAgICAgICAgICAgZXh0cmFMYXllck1lc3NhZ2UgPSAnVGhlIGxheWVyIGhhcyBiZWVuIGRpc2FibGVkIGFuZCBoaWdobGlnaHRlZC4nO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBuZXcgZXJyb3Igbm90aWZpY2F0aW9uIG9yIHVwZGF0ZSBleGlzdGluZyBvbmUgd2l0aCBzYW1lIGlkLlxuICAgICAgICAvLyBVcGRhdGUgaXMgcmVxdWlyZWQgdG8gcHJlc2VydmUgdGhlIG9yZGVyIG9mIG5vdGlmaWNhdGlvbnMgYXMgdGhleSBwcm9iYWJseSBhcmUgZ29pbmcgdG8gXCJqdW1wXCIgYmFzZWQgb24gb3JkZXIgb2YgZXJyb3JzLlxuICAgICAgICBjb25zdCB7dWlTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgdWlTdGF0ZUFjdGlvbnMuYWRkTm90aWZpY2F0aW9uKFxuICAgICAgICAgIGVycm9yTm90aWZpY2F0aW9uKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IGAke2Vycm9yTWVzc2FnZUZ1bGx9ICR7ZXh0cmFMYXllck1lc3NhZ2V9YCxcbiAgICAgICAgICAgIGlkOiBlcnJvck1lc3NhZ2VGdWxsIC8vIHRyZWF0IHRoZSBlcnJvciBtZXNzYWdlIGFzIGlkXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLyogY29tcG9uZW50IHJlbmRlciBmdW5jdGlvbnMgKi9cblxuICAgIC8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbiAgICBfcmVuZGVyTWFwUG9wb3ZlcigpIHtcbiAgICAgIC8vIHRoaXMgY2hlY2sgaXMgZm9yIGxpbWl0aW5nIHRoZSBkaXNwbGF5IG9mIHRoZSBgPE1hcFBvcG92ZXI+YCB0byB0aGUgYDxNYXBDb250YWluZXI+YCB0aGUgdXNlciBpcyBpbnRlcmFjdGluZyB3aXRoXG4gICAgICAvLyB0aGUgRGVja0dMIG9uSG92ZXIgZXZlbnQgaGFuZGxlciBhZGRzIGEgYG1hcEluZGV4YCBwcm9wZXJ0eSB3aGljaCBpcyBhdmFpbGFibGUgaW4gdGhlIGBob3ZlckluZm9gIG9iamVjdCBvZiBgdmlzU3RhdGVgXG4gICAgICBpZiAodGhpcy5wcm9wcy5pbmRleCAhPT0gdGhpcy5wcm9wcy52aXNTdGF0ZS5ob3ZlckluZm8/Lm1hcEluZGV4KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBUT0RPOiBtb3ZlIHRoaXMgaW50byByZWR1Y2VyIHNvIGl0IGNhbiBiZSB0ZXN0ZWRcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFwU3RhdGUsXG4gICAgICAgIHZpc1N0YXRlOiB7XG4gICAgICAgICAgaG92ZXJJbmZvLFxuICAgICAgICAgIGNsaWNrZWQsXG4gICAgICAgICAgZGF0YXNldHMsXG4gICAgICAgICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICAgICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgICAgICAgIGxheWVycyxcbiAgICAgICAgICBtb3VzZVBvczoge21vdXNlUG9zaXRpb24sIGNvb3JkaW5hdGUsIHBpbm5lZH1cbiAgICAgICAgfVxuICAgICAgfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCBsYXllcnNUb1JlbmRlciA9IHRoaXMubGF5ZXJzVG9SZW5kZXJTZWxlY3Rvcih0aGlzLnByb3BzKTtcblxuICAgICAgaWYgKCFtb3VzZVBvc2l0aW9uIHx8ICFpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsYXllckhvdmVyUHJvcCA9IGdldExheWVySG92ZXJQcm9wKHtcbiAgICAgICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAgICAgaG92ZXJJbmZvLFxuICAgICAgICBsYXllcnMsXG4gICAgICAgIGxheWVyc1RvUmVuZGVyLFxuICAgICAgICBkYXRhc2V0c1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGNvbXBhcmVNb2RlID0gaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcC5jb25maWdcbiAgICAgICAgPyBpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwLmNvbmZpZy5jb21wYXJlTW9kZVxuICAgICAgICA6IGZhbHNlO1xuXG4gICAgICBsZXQgcGlubmVkUG9zaXRpb24gPSB7eDogMCwgeTogMH07XG4gICAgICBsZXQgbGF5ZXJQaW5uZWRQcm9wOiBMYXllckhvdmVyUHJvcCB8IG51bGwgPSBudWxsO1xuICAgICAgaWYgKHBpbm5lZCB8fCBjbGlja2VkKSB7XG4gICAgICAgIC8vIHByb2plY3QgbG5nbGF0IHRvIHNjcmVlbiBzbyB0aGF0IHRvb2x0aXAgZm9sbG93cyB0aGUgb2JqZWN0IG9uIHpvb21cbiAgICAgICAgY29uc3Qgdmlld3BvcnQgPSBnZXRWaWV3cG9ydEZyb21NYXBTdGF0ZShtYXBTdGF0ZSk7XG4gICAgICAgIGNvbnN0IGxuZ0xhdCA9IGNsaWNrZWQgPyBjbGlja2VkLmNvb3JkaW5hdGUgOiBwaW5uZWQuY29vcmRpbmF0ZTtcbiAgICAgICAgcGlubmVkUG9zaXRpb24gPSB0aGlzLl9nZXRIb3ZlclhZKHZpZXdwb3J0LCBsbmdMYXQpO1xuICAgICAgICBsYXllclBpbm5lZFByb3AgPSBnZXRMYXllckhvdmVyUHJvcCh7XG4gICAgICAgICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgICAgICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgICAgICAgIGhvdmVySW5mbzogY2xpY2tlZCxcbiAgICAgICAgICBsYXllcnMsXG4gICAgICAgICAgbGF5ZXJzVG9SZW5kZXIsXG4gICAgICAgICAgZGF0YXNldHNcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChsYXllckhvdmVyUHJvcCAmJiBsYXllclBpbm5lZFByb3ApIHtcbiAgICAgICAgICBsYXllckhvdmVyUHJvcC5wcmltYXJ5RGF0YSA9IGxheWVyUGlubmVkUHJvcC5kYXRhO1xuICAgICAgICAgIGxheWVySG92ZXJQcm9wLmNvbXBhcmVUeXBlID0gaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcC5jb25maWcuY29tcGFyZVR5cGU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgY29tbW9uUHJvcCA9IHtcbiAgICAgICAgb25DbG9zZTogdGhpcy5fb25DbG9zZU1hcFBvcG92ZXIsXG4gICAgICAgIHpvb206IG1hcFN0YXRlLnpvb20sXG4gICAgICAgIGNvbnRhaW5lcjogdGhpcy5fZGVjayA/IHRoaXMuX2RlY2suY2FudmFzIDogdW5kZWZpbmVkXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8RXJyb3JCb3VuZGFyeT5cbiAgICAgICAgICB7bGF5ZXJQaW5uZWRQcm9wICYmIChcbiAgICAgICAgICAgIDxNYXBQb3BvdmVyXG4gICAgICAgICAgICAgIHsuLi5waW5uZWRQb3NpdGlvbn1cbiAgICAgICAgICAgICAgey4uLmNvbW1vblByb3B9XG4gICAgICAgICAgICAgIGxheWVySG92ZXJQcm9wPXtsYXllclBpbm5lZFByb3B9XG4gICAgICAgICAgICAgIGNvb3JkaW5hdGU9e2ludGVyYWN0aW9uQ29uZmlnLmNvb3JkaW5hdGUuZW5hYmxlZCAmJiAocGlubmVkIHx8IHt9KS5jb29yZGluYXRlfVxuICAgICAgICAgICAgICBmcm96ZW49e3RydWV9XG4gICAgICAgICAgICAgIGlzQmFzZT17Y29tcGFyZU1vZGV9XG4gICAgICAgICAgICAgIG9uU2V0RmVhdHVyZXM9e3RoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLnNldEZlYXR1cmVzfVxuICAgICAgICAgICAgICBzZXRTZWxlY3RlZEZlYXR1cmU9e3RoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLnNldFNlbGVjdGVkRmVhdHVyZX1cbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBBcmd1bWVudCBvZiB0eXBlICdSZWFkb25seTxNYXBDb250YWluZXJQcm9wcz4nIGlzIG5vdCBhc3NpZ25hYmxlIHRvIHBhcmFtZXRlciBvZiB0eXBlICduZXZlcidcbiAgICAgICAgICAgICAgZmVhdHVyZUNvbGxlY3Rpb249e3RoaXMuZmVhdHVyZUNvbGxlY3Rpb25TZWxlY3Rvcih0aGlzLnByb3BzKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7bGF5ZXJIb3ZlclByb3AgJiYgKCFsYXllclBpbm5lZFByb3AgfHwgY29tcGFyZU1vZGUpICYmIChcbiAgICAgICAgICAgIDxNYXBQb3BvdmVyXG4gICAgICAgICAgICAgIHg9e21vdXNlUG9zaXRpb25bMF19XG4gICAgICAgICAgICAgIHk9e21vdXNlUG9zaXRpb25bMV19XG4gICAgICAgICAgICAgIHsuLi5jb21tb25Qcm9wfVxuICAgICAgICAgICAgICBsYXllckhvdmVyUHJvcD17bGF5ZXJIb3ZlclByb3B9XG4gICAgICAgICAgICAgIGZyb3plbj17ZmFsc2V9XG4gICAgICAgICAgICAgIGNvb3JkaW5hdGU9e2ludGVyYWN0aW9uQ29uZmlnLmNvb3JkaW5hdGUuZW5hYmxlZCAmJiBjb29yZGluYXRlfVxuICAgICAgICAgICAgICBvblNldEZlYXR1cmVzPXt0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy5zZXRGZWF0dXJlc31cbiAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRGZWF0dXJlPXt0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy5zZXRTZWxlY3RlZEZlYXR1cmV9XG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgQXJndW1lbnQgb2YgdHlwZSAnUmVhZG9ubHk8TWFwQ29udGFpbmVyUHJvcHM+JyBpcyBub3QgYXNzaWduYWJsZSB0byBwYXJhbWV0ZXIgb2YgdHlwZSAnbmV2ZXInXG4gICAgICAgICAgICAgIGZlYXR1cmVDb2xsZWN0aW9uPXt0aGlzLmZlYXR1cmVDb2xsZWN0aW9uU2VsZWN0b3IodGhpcy5wcm9wcyl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvRXJyb3JCb3VuZGFyeT5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLyogZXNsaW50LWVuYWJsZSBjb21wbGV4aXR5ICovXG5cbiAgICBfZ2V0SG92ZXJYWSh2aWV3cG9ydCwgbG5nTGF0KSB7XG4gICAgICBjb25zdCBzY3JlZW5Db29yZCA9ICF2aWV3cG9ydCB8fCAhbG5nTGF0ID8gbnVsbCA6IHZpZXdwb3J0LnByb2plY3QobG5nTGF0KTtcbiAgICAgIHJldHVybiBzY3JlZW5Db29yZCAmJiB7eDogc2NyZWVuQ29vcmRbMF0sIHk6IHNjcmVlbkNvb3JkWzFdfTtcbiAgICB9XG5cbiAgICBfcmVuZGVyRGVja092ZXJsYXkoXG4gICAgICBsYXllcnNGb3JEZWNrLFxuICAgICAgb3B0aW9uczoge3ByaW1hcnlNYXA6IGJvb2xlYW47IGlzSW50ZXJhY3RpdmU/OiBib29sZWFuOyBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZX0gPSB7XG4gICAgICAgIHByaW1hcnlNYXA6IGZhbHNlXG4gICAgICB9XG4gICAgKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1hcFN0eWxlLFxuICAgICAgICB2aXNTdGF0ZSxcbiAgICAgICAgbWFwU3RhdGUsXG4gICAgICAgIHZpc1N0YXRlQWN0aW9ucyxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgZGVja0dsUHJvcHMsXG4gICAgICAgIGluZGV4LFxuICAgICAgICBtYXBDb250cm9scyxcbiAgICAgICAgZGVja1JlbmRlckNhbGxiYWNrcyxcbiAgICAgICAgdGhlbWUsXG4gICAgICAgIGdlbmVyYXRlRGVja0dMTGF5ZXJzLFxuICAgICAgICBvbk1vdXNlTW92ZVxuICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIGNvbnN0IHtob3ZlckluZm8sIGVkaXRvcn0gPSB2aXNTdGF0ZTtcbiAgICAgIGNvbnN0IHtwcmltYXJ5TWFwLCBpc0ludGVyYWN0aXZlLCBjaGlsZHJlbn0gPSBvcHRpb25zO1xuXG4gICAgICAvLyBkaXNhYmxlIGRvdWJsZSBjbGljayB6b29tIHdoZW4gZWRpdG9yIGlzIGluIGFueSBkcmF3IG1vZGVcbiAgICAgIGNvbnN0IHttYXBEcmF3fSA9IG1hcENvbnRyb2xzO1xuICAgICAgY29uc3Qge2FjdGl2ZTogZWRpdG9yTWVudUFjdGl2ZSA9IGZhbHNlfSA9IG1hcERyYXcgfHwge307XG4gICAgICBjb25zdCBpc0VkaXRvckRyYXdpbmdNb2RlID0gRWRpdG9yTGF5ZXJVdGlscy5pc0RyYXdpbmdBY3RpdmUoZWRpdG9yTWVudUFjdGl2ZSwgZWRpdG9yLm1vZGUpO1xuXG4gICAgICBjb25zdCBpbnRlcm5hbFZpZXdTdGF0ZSA9IHRoaXMuY29udGV4dD8uZ2V0SW50ZXJuYWxWaWV3U3RhdGUoaW5kZXgpO1xuICAgICAgY29uc3QgaW50ZXJuYWxNYXBTdGF0ZSA9IHsuLi5tYXBTdGF0ZSwgLi4uaW50ZXJuYWxWaWV3U3RhdGV9O1xuICAgICAgY29uc3Qgdmlld3BvcnQgPSBnZXRWaWV3cG9ydEZyb21NYXBTdGF0ZShpbnRlcm5hbE1hcFN0YXRlKTtcblxuICAgICAgY29uc3QgZWRpdG9yRmVhdHVyZVNlbGVjdGVkSW5kZXggPSB0aGlzLnNlbGVjdGVkUG9seWdvbkluZGV4U2VsZWN0b3IodGhpcy5wcm9wcyk7XG5cbiAgICAgIGNvbnN0IHtzZXRGZWF0dXJlcywgb25MYXllckNsaWNrLCBzZXRTZWxlY3RlZEZlYXR1cmV9ID0gdmlzU3RhdGVBY3Rpb25zO1xuXG4gICAgICBjb25zdCBnZW5lcmF0ZURlY2tHTExheWVyc01ldGhvZCA9IGdlbmVyYXRlRGVja0dMTGF5ZXJzID8/IGNvbXB1dGVEZWNrTGF5ZXJzO1xuICAgICAgY29uc3QgZGVja0dsTGF5ZXJzID0gZ2VuZXJhdGVEZWNrR0xMYXllcnNNZXRob2QoXG4gICAgICAgIHtcbiAgICAgICAgICB2aXNTdGF0ZSxcbiAgICAgICAgICBtYXBTdGF0ZTogaW50ZXJuYWxNYXBTdGF0ZSxcbiAgICAgICAgICBtYXBTdHlsZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbWFwSW5kZXg6IGluZGV4LFxuICAgICAgICAgIHByaW1hcnlNYXAsXG4gICAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgICAgbWFwYm94QXBpVXJsLFxuICAgICAgICAgIGxheWVyc0ZvckRlY2ssXG4gICAgICAgICAgZWRpdG9ySW5mbzogcHJpbWFyeU1hcFxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgIGVkaXRvck1lbnVBY3RpdmUsXG4gICAgICAgICAgICAgICAgb25TZXRGZWF0dXJlczogc2V0RmVhdHVyZXMsXG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRGZWF0dXJlLFxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgQXJndW1lbnQgb2YgdHlwZSAnUmVhZG9ubHk8TWFwQ29udGFpbmVyUHJvcHM+JyBpcyBub3QgYXNzaWduYWJsZSB0byBwYXJhbWV0ZXIgb2YgdHlwZSAnbmV2ZXInXG4gICAgICAgICAgICAgICAgZmVhdHVyZUNvbGxlY3Rpb246IHRoaXMuZmVhdHVyZUNvbGxlY3Rpb25TZWxlY3Rvcih0aGlzLnByb3BzKSxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEZlYXR1cmVJbmRleGVzOiB0aGlzLnNlbGVjdGVkRmVhdHVyZUluZGV4QXJyYXlTZWxlY3RvcihcbiAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgQXJndW1lbnQgb2YgdHlwZSAndW5rbm93bicgaXMgbm90IGFzc2lnbmFibGUgdG8gcGFyYW1ldGVyIG9mIHR5cGUgJ251bWJlcicuXG4gICAgICAgICAgICAgICAgICBlZGl0b3JGZWF0dXJlU2VsZWN0ZWRJbmRleFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdmlld3BvcnRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG9uTGF5ZXJIb3ZlcjogdGhpcy5fb25MYXllckhvdmVyLFxuICAgICAgICAgIG9uU2V0TGF5ZXJEb21haW46IHRoaXMuX29uTGF5ZXJTZXREb21haW4sXG4gICAgICAgICAgb25GaWx0ZXJlZEl0ZW1zQ2hhbmdlOiB0aGlzLl9vbkxheWVyRmlsdGVyZWRJdGVtc0NoYW5nZVxuICAgICAgICB9LFxuICAgICAgICBkZWNrR2xQcm9wc1xuICAgICAgKTtcblxuICAgICAgY29uc3QgZXh0cmFEZWNrUGFyYW1zOiB7XG4gICAgICAgIGdldFRvb2x0aXA/OiAoaW5mbzogYW55KSA9PiBvYmplY3QgfCBudWxsO1xuICAgICAgICBnZXRDdXJzb3I/OiAoe2lzRHJhZ2dpbmd9OiB7aXNEcmFnZ2luZzogYm9vbGVhbn0pID0+IHN0cmluZztcbiAgICAgIH0gPSB7fTtcbiAgICAgIGlmIChwcmltYXJ5TWFwKSB7XG4gICAgICAgIGV4dHJhRGVja1BhcmFtcy5nZXRUb29sdGlwID0gaW5mbyA9PlxuICAgICAgICAgIEVkaXRvckxheWVyVXRpbHMuZ2V0VG9vbHRpcChpbmZvLCB7XG4gICAgICAgICAgICBlZGl0b3JNZW51QWN0aXZlLFxuICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgdGhlbWVcbiAgICAgICAgICB9KTtcblxuICAgICAgICBleHRyYURlY2tQYXJhbXMuZ2V0Q3Vyc29yID0gKHtpc0RyYWdnaW5nfToge2lzRHJhZ2dpbmc6IGJvb2xlYW59KSA9PiB7XG4gICAgICAgICAgY29uc3QgZWRpdG9yQ3Vyc29yID0gRWRpdG9yTGF5ZXJVdGlscy5nZXRDdXJzb3Ioe1xuICAgICAgICAgICAgZWRpdG9yTWVudUFjdGl2ZSxcbiAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgIGhvdmVySW5mb1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChlZGl0b3JDdXJzb3IpIHJldHVybiBlZGl0b3JDdXJzb3I7XG5cbiAgICAgICAgICBpZiAoaXNEcmFnZ2luZykgcmV0dXJuICdncmFiYmluZyc7XG4gICAgICAgICAgaWYgKGhvdmVySW5mbz8ubGF5ZXIpIHJldHVybiAncG9pbnRlcic7XG4gICAgICAgICAgcmV0dXJuICdncmFiJztcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZWZmZWN0cyA9IHRoaXMuX2lzT0tUb1JlbmRlckVmZmVjdHMoaW5kZXgpXG4gICAgICAgID8gY29tcHV0ZURlY2tFZmZlY3RzKHt2aXNTdGF0ZSwgbWFwU3RhdGV9KVxuICAgICAgICA6IFtdO1xuXG4gICAgICBjb25zdCB2aWV3cyA9IGRlY2tHbFByb3BzPy52aWV3c1xuICAgICAgICA/IGRlY2tHbFByb3BzPy52aWV3cygpXG4gICAgICAgIDogbmV3IE1hcFZpZXcoe2xlZ2FjeU1ldGVyU2l6ZXM6IHRydWV9KTtcblxuICAgICAgbGV0IGFsbERlY2tHbFByb3BzID0ge1xuICAgICAgICAuLi5kZWNrR2xQcm9wcyxcbiAgICAgICAgcGlja2luZ1JhZGl1czogREVGQVVMVF9QSUNLSU5HX1JBRElVUyxcbiAgICAgICAgdmlld3MsXG4gICAgICAgIGxheWVyczogZGVja0dsTGF5ZXJzLFxuICAgICAgICBlZmZlY3RzXG4gICAgICB9O1xuXG4gICAgICBpZiAodHlwZW9mIGRlY2tSZW5kZXJDYWxsYmFja3M/Lm9uRGVja1JlbmRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBhbGxEZWNrR2xQcm9wcyA9IGRlY2tSZW5kZXJDYWxsYmFja3Mub25EZWNrUmVuZGVyKGFsbERlY2tHbFByb3BzKTtcbiAgICAgICAgaWYgKCFhbGxEZWNrR2xQcm9wcykge1xuICAgICAgICAgIC8vIGlmIG9uRGVja1JlbmRlciByZXR1cm5zIG51bGwsIGRvIG5vdCByZW5kZXIgZGVjay5nbFxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICB7Li4uKGlzSW50ZXJhY3RpdmVcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIG9uTW91c2VNb3ZlOiBwcmltYXJ5TWFwXG4gICAgICAgICAgICAgICAgICA/IGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlTW92ZT8uKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbk1vdXNlTW92ZURlYm91bmNlZChldmVudCwgdmlld3BvcnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHtzdHlsZToge3BvaW50ZXJFdmVudHM6ICdub25lJ319KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxEZWNrR0xcbiAgICAgICAgICAgIGlkPVwiZGVmYXVsdC1kZWNrZ2wtb3ZlcmxheVwiXG4gICAgICAgICAgICBvbkxvYWQ9eygpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZWNrUmVuZGVyQ2FsbGJhY2tzPy5vbkRlY2tMb2FkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgZGVja1JlbmRlckNhbGxiYWNrcy5vbkRlY2tMb2FkKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB7Li4uYWxsRGVja0dsUHJvcHN9XG4gICAgICAgICAgICBjb250cm9sbGVyPXtcbiAgICAgICAgICAgICAgaXNJbnRlcmFjdGl2ZVxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICBkb3VibGVDbGlja1pvb206ICFpc0VkaXRvckRyYXdpbmdNb2RlLFxuICAgICAgICAgICAgICAgICAgICBkcmFnUm90YXRlOiB0aGlzLnByb3BzLm1hcFN0YXRlLmRyYWdSb3RhdGVcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbml0aWFsVmlld1N0YXRlPXtpbnRlcm5hbFZpZXdTdGF0ZX1cbiAgICAgICAgICAgIG9uQmVmb3JlUmVuZGVyPXt0aGlzLl9vbkJlZm9yZVJlbmRlcn1cbiAgICAgICAgICAgIG9uVmlld1N0YXRlQ2hhbmdlPXtpc0ludGVyYWN0aXZlID8gdGhpcy5fb25WaWV3cG9ydENoYW5nZSA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgIHsuLi5leHRyYURlY2tQYXJhbXN9XG4gICAgICAgICAgICBvbkhvdmVyPXtcbiAgICAgICAgICAgICAgaXNJbnRlcmFjdGl2ZVxuICAgICAgICAgICAgICAgID8gZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IEVkaXRvckxheWVyVXRpbHMub25Ib3ZlcihkYXRhLCB7XG4gICAgICAgICAgICAgICAgICAgICAgZWRpdG9yTWVudUFjdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgaG92ZXJJbmZvXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25MYXllckhvdmVyRGVib3VuY2VkKGRhdGEsIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eyhkYXRhLCBldmVudCkgPT4ge1xuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIG5vcm1hbGl6ZUV2ZW50KGV2ZW50LnNyY0V2ZW50LCB2aWV3cG9ydCk7XG4gICAgICAgICAgICAgIGNvbnN0IHJlcyA9IEVkaXRvckxheWVyVXRpbHMub25DbGljayhkYXRhLCBldmVudCwge1xuICAgICAgICAgICAgICAgIGVkaXRvck1lbnVBY3RpdmUsXG4gICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgIG9uTGF5ZXJDbGljayxcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEZlYXR1cmUsXG4gICAgICAgICAgICAgICAgbWFwSW5kZXg6IGluZGV4XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpZiAocmVzKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgdmlzU3RhdGVBY3Rpb25zLm9uTGF5ZXJDbGljayhkYXRhKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbkVycm9yPXt0aGlzLl9vbkRlY2tFcnJvcn1cbiAgICAgICAgICAgIHJlZj17Y29tcCA9PiB7XG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgaWYgKGNvbXAgJiYgY29tcC5kZWNrICYmICF0aGlzLl9kZWNrKSB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIHRoaXMuX2RlY2sgPSBjb21wLmRlY2s7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbldlYkdMSW5pdGlhbGl6ZWQ9e2dsID0+IHRoaXMuX29uRGVja0luaXRpYWxpemVkKGdsKX1cbiAgICAgICAgICAgIG9uQWZ0ZXJSZW5kZXI9eygpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZWNrUmVuZGVyQ2FsbGJhY2tzPy5vbkRlY2tBZnRlclJlbmRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGRlY2tSZW5kZXJDYWxsYmFja3Mub25EZWNrQWZ0ZXJSZW5kZXIoYWxsRGVja0dsUHJvcHMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICA8L0RlY2tHTD5cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH1cblxuICAgIF91cGRhdGVNYXBib3hMYXllcnMoKSB7XG4gICAgICBjb25zdCBtYXBib3hMYXllcnMgPSB0aGlzLm1hcGJveExheWVyc1NlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgaWYgKCFPYmplY3Qua2V5cyhtYXBib3hMYXllcnMpLmxlbmd0aCAmJiAhT2JqZWN0LmtleXModGhpcy5wcmV2aW91c0xheWVycykubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdXBkYXRlTWFwYm94TGF5ZXJzKHRoaXMuX21hcCwgbWFwYm94TGF5ZXJzLCB0aGlzLnByZXZpb3VzTGF5ZXJzKTtcblxuICAgICAgdGhpcy5wcmV2aW91c0xheWVycyA9IG1hcGJveExheWVycztcbiAgICB9XG5cbiAgICBfcmVuZGVyTWFwYm94T3ZlcmxheXMoKSB7XG4gICAgICBpZiAodGhpcy5fbWFwICYmIHRoaXMuX21hcC5pc1N0eWxlTG9hZGVkKCkpIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlTWFwYm94TGF5ZXJzKCk7XG4gICAgICB9XG4gICAgfVxuICAgIF9vblZpZXdwb3J0Q2hhbmdlUHJvcGFnYXRlRGVib3VuY2VkID0gZGVib3VuY2UoKCkgPT4ge1xuICAgICAgY29uc3Qgdmlld1N0YXRlID0gdGhpcy5jb250ZXh0Py5nZXRJbnRlcm5hbFZpZXdTdGF0ZSh0aGlzLnByb3BzLmluZGV4KTtcbiAgICAgIG9uVmlld1BvcnRDaGFuZ2UoXG4gICAgICAgIHZpZXdTdGF0ZSxcbiAgICAgICAgdGhpcy5wcm9wcy5tYXBTdGF0ZUFjdGlvbnMudXBkYXRlTWFwLFxuICAgICAgICB0aGlzLnByb3BzLm9uVmlld1N0YXRlQ2hhbmdlLFxuICAgICAgICB0aGlzLnByb3BzLnByaW1hcnksXG4gICAgICAgIHRoaXMucHJvcHMuaW5kZXhcbiAgICAgICk7XG4gICAgfSwgREVCT1VOQ0VfVklFV1BPUlRfUFJPUEFHQVRFKTtcblxuICAgIF9vblZpZXdwb3J0Q2hhbmdlID0gdmlld3BvcnQgPT4ge1xuICAgICAgY29uc3Qge3ZpZXdTdGF0ZX0gPSB2aWV3cG9ydDtcbiAgICAgIGlmICh0aGlzLnByb3BzLmlzRXhwb3J0KSB7XG4gICAgICAgIC8vIEltYWdlIGV4cG9ydCBtYXAgc2hvdWxkbid0IGJlIGludGVyYWN0aXZlIChvdGhlcndpc2UgdGhpcyBjYWxsYmFjayBjYW5cbiAgICAgICAgLy8gbGVhZCB0byBpbmFkdmVydGVudCBjaGFuZ2VzIHRvIHRoZSBzdGF0ZSBvZiB0aGUgbWFpbiBtYXApXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHtzZXRJbnRlcm5hbFZpZXdTdGF0ZX0gPSB0aGlzLmNvbnRleHQ7XG4gICAgICBzZXRJbnRlcm5hbFZpZXdTdGF0ZSh2aWV3U3RhdGUsIHRoaXMucHJvcHMuaW5kZXgpO1xuICAgICAgdGhpcy5fb25WaWV3cG9ydENoYW5nZVByb3BhZ2F0ZURlYm91bmNlZCgpO1xuICAgIH07XG5cbiAgICBfb25MYXllckhvdmVyRGVib3VuY2VkID0gZGVib3VuY2UoKGRhdGEsIGluZGV4KSA9PiB7XG4gICAgICB0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy5vbkxheWVySG92ZXIoZGF0YSwgaW5kZXgpO1xuICAgIH0sIERFQk9VTkNFX01PVVNFX01PVkVfUFJPUEFHQVRFKTtcblxuICAgIF9vbk1vdXNlTW92ZURlYm91bmNlZCA9IGRlYm91bmNlKChldmVudCwgdmlld3BvcnQpID0+IHtcbiAgICAgIHRoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLm9uTW91c2VNb3ZlKG5vcm1hbGl6ZUV2ZW50KGV2ZW50LCB2aWV3cG9ydCkpO1xuICAgIH0sIERFQk9VTkNFX01PVVNFX01PVkVfUFJPUEFHQVRFKTtcblxuICAgIF90b2dnbGVNYXBDb250cm9sID0gcGFuZWxJZCA9PiB7XG4gICAgICBjb25zdCB7aW5kZXgsIHVpU3RhdGVBY3Rpb25zfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIHVpU3RhdGVBY3Rpb25zLnRvZ2dsZU1hcENvbnRyb2wocGFuZWxJZCwgTnVtYmVyKGluZGV4KSk7XG4gICAgfTtcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbiAgICBfcmVuZGVyTWFwKCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB2aXNTdGF0ZSxcbiAgICAgICAgbWFwU3RhdGUsXG4gICAgICAgIG1hcFN0eWxlLFxuICAgICAgICBtYXBTdGF0ZUFjdGlvbnMsXG4gICAgICAgIE1hcENvbXBvbmVudCA9IE1hcCxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIC8vIG1hcGJveEFwaVVybCxcbiAgICAgICAgbWFwQ29udHJvbHMsXG4gICAgICAgIGlzRXhwb3J0LFxuICAgICAgICBsb2NhbGUsXG4gICAgICAgIHVpU3RhdGVBY3Rpb25zLFxuICAgICAgICB2aXNTdGF0ZUFjdGlvbnMsXG4gICAgICAgIGluZGV4LFxuICAgICAgICBwcmltYXJ5LFxuICAgICAgICBib3R0b21NYXBDb250YWluZXJQcm9wcyxcbiAgICAgICAgdG9wTWFwQ29udGFpbmVyUHJvcHMsXG4gICAgICAgIHRoZW1lLFxuICAgICAgICBkYXRhc2V0QXR0cmlidXRpb25zID0gW10sXG4gICAgICAgIGNvbnRhaW5lcklkID0gMCxcbiAgICAgICAgaXNMb2FkaW5nSW5kaWNhdG9yVmlzaWJsZSxcbiAgICAgICAgYWN0aXZlU2lkZVBhbmVsLFxuICAgICAgICBzaWRlUGFuZWxXaWR0aFxuICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIGNvbnN0IHtsYXllcnMsIGRhdGFzZXRzLCBlZGl0b3IsIGludGVyYWN0aW9uQ29uZmlnfSA9IHZpc1N0YXRlO1xuXG4gICAgICBjb25zdCBsYXllcnNUb1JlbmRlciA9IHRoaXMubGF5ZXJzVG9SZW5kZXJTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IGxheWVyc0ZvckRlY2sgPSB0aGlzLmxheWVyc0ZvckRlY2tTZWxlY3Rvcih0aGlzLnByb3BzKTtcblxuICAgICAgLy8gQ3VycmVudCBzdHlsZSBjYW4gYmUgYSBjdXN0b20gc3R5bGUsIGZyb20gd2hpY2ggd2UgcHVsbCB0aGUgbWFwYm94IEFQSSBhY2NjZXNzIHRva2VuXG4gICAgICBjb25zdCBjdXJyZW50U3R5bGUgPSBtYXBTdHlsZS5tYXBTdHlsZXM/LlttYXBTdHlsZS5zdHlsZVR5cGVdO1xuICAgICAgY29uc3QgYmFzZU1hcExpYnJhcnlOYW1lID0gZ2V0QmFzZU1hcExpYnJhcnkoY3VycmVudFN0eWxlKTtcbiAgICAgIGNvbnN0IGJhc2VNYXBMaWJyYXJ5Q29uZmlnID1cbiAgICAgICAgZ2V0QXBwbGljYXRpb25Db25maWcoKS5iYXNlTWFwTGlicmFyeUNvbmZpZz8uW2Jhc2VNYXBMaWJyYXJ5TmFtZV07XG5cbiAgICAgIGNvbnN0IGludGVybmFsVmlld1N0YXRlID0gdGhpcy5jb250ZXh0Py5nZXRJbnRlcm5hbFZpZXdTdGF0ZShpbmRleCk7XG4gICAgICBjb25zdCBtYXBQcm9wcyA9IHtcbiAgICAgICAgLi4uaW50ZXJuYWxWaWV3U3RhdGUsXG4gICAgICAgIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogdHJ1ZSxcbiAgICAgICAgbWFwYm94QWNjZXNzVG9rZW46IGN1cnJlbnRTdHlsZT8uYWNjZXNzVG9rZW4gfHwgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIC8vIGJhc2VBcGlVcmw6IG1hcGJveEFwaVVybCxcbiAgICAgICAgbWFwTGliOiBiYXNlTWFwTGlicmFyeUNvbmZpZy5nZXRNYXBMaWIoKSxcbiAgICAgICAgdHJhbnNmb3JtUmVxdWVzdDpcbiAgICAgICAgICB0aGlzLnByb3BzLnRyYW5zZm9ybVJlcXVlc3QgfHxcbiAgICAgICAgICB0cmFuc2Zvcm1SZXF1ZXN0KGN1cnJlbnRTdHlsZT8uYWNjZXNzVG9rZW4gfHwgbWFwYm94QXBpQWNjZXNzVG9rZW4pXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBoYXNHZW9jb2RlckxheWVyID0gQm9vbGVhbihsYXllcnMuZmluZChsID0+IGwuaWQgPT09IEdFT0NPREVSX0xBWUVSX0lEKSk7XG4gICAgICBjb25zdCBpc1NwbGl0ID0gQm9vbGVhbihtYXBTdGF0ZS5pc1NwbGl0KTtcblxuICAgICAgY29uc3QgZGVjayA9IHRoaXMuX3JlbmRlckRlY2tPdmVybGF5KGxheWVyc0ZvckRlY2ssIHtcbiAgICAgICAgcHJpbWFyeU1hcDogdHJ1ZSxcbiAgICAgICAgaXNJbnRlcmFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgY2hpbGRyZW46IChcbiAgICAgICAgICA8TWFwQ29tcG9uZW50XG4gICAgICAgICAgICBrZXk9e2Bib3R0b20tJHtiYXNlTWFwTGlicmFyeU5hbWV9YH1cbiAgICAgICAgICAgIHsuLi5tYXBQcm9wc31cbiAgICAgICAgICAgIG1hcFN0eWxlPXttYXBTdHlsZS5ib3R0b21NYXBTdHlsZSA/PyBFTVBUWV9NQVBCT1hfU1RZTEV9XG4gICAgICAgICAgICB7Li4uYm90dG9tTWFwQ29udGFpbmVyUHJvcHN9XG4gICAgICAgICAgICByZWY9e3RoaXMuX3NldE1hcFJlZn1cbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICB9KTtcbiAgICAgIGlmICghZGVjaykge1xuICAgICAgICAvLyBkZWNrT3ZlcmxheSBjYW4gYmUgbnVsbCBpZiBvbkRlY2tSZW5kZXIgcmV0dXJucyBudWxsXG4gICAgICAgIC8vIGluIHRoaXMgY2FzZSB3ZSBkb24ndCB3YW50IHRvIHJlbmRlciB0aGUgbWFwXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8TWFwQ29udHJvbFxuICAgICAgICAgICAgbWFwU3RhdGU9e21hcFN0YXRlfVxuICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgYXZhaWxhYmxlTG9jYWxlcz17TE9DQUxFX0NPREVTX0FSUkFZfVxuICAgICAgICAgICAgZHJhZ1JvdGF0ZT17bWFwU3RhdGUuZHJhZ1JvdGF0ZX1cbiAgICAgICAgICAgIGlzU3BsaXQ9e2lzU3BsaXR9XG4gICAgICAgICAgICBwcmltYXJ5PXtCb29sZWFuKHByaW1hcnkpfVxuICAgICAgICAgICAgaXNFeHBvcnQ9e2lzRXhwb3J0fVxuICAgICAgICAgICAgbGF5ZXJzPXtsYXllcnN9XG4gICAgICAgICAgICBsYXllcnNUb1JlbmRlcj17bGF5ZXJzVG9SZW5kZXJ9XG4gICAgICAgICAgICBtYXBJbmRleD17aW5kZXggfHwgMH1cbiAgICAgICAgICAgIG1hcENvbnRyb2xzPXttYXBDb250cm9sc31cbiAgICAgICAgICAgIHJlYWRPbmx5PXt0aGlzLnByb3BzLnJlYWRPbmx5fVxuICAgICAgICAgICAgc2NhbGU9e21hcFN0YXRlLnNjYWxlIHx8IDF9XG4gICAgICAgICAgICB0b3A9e1xuICAgICAgICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZy5nZW9jb2RlciAmJiBpbnRlcmFjdGlvbkNvbmZpZy5nZW9jb2Rlci5lbmFibGVkXG4gICAgICAgICAgICAgICAgPyB0aGVtZS5tYXBDb250cm9sVG9wXG4gICAgICAgICAgICAgICAgOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgb25Ub2dnbGVQZXJzcGVjdGl2ZT17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVBlcnNwZWN0aXZlfVxuICAgICAgICAgICAgb25Ub2dnbGVTcGxpdE1hcD17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVNwbGl0TWFwfVxuICAgICAgICAgICAgb25NYXBUb2dnbGVMYXllcj17dGhpcy5faGFuZGxlTWFwVG9nZ2xlTGF5ZXJ9XG4gICAgICAgICAgICBvblRvZ2dsZU1hcENvbnRyb2w9e3RoaXMuX3RvZ2dsZU1hcENvbnRyb2x9XG4gICAgICAgICAgICBvblRvZ2dsZVNwbGl0TWFwVmlld3BvcnQ9e21hcFN0YXRlQWN0aW9ucy50b2dnbGVTcGxpdE1hcFZpZXdwb3J0fVxuICAgICAgICAgICAgb25TZXRFZGl0b3JNb2RlPXt2aXNTdGF0ZUFjdGlvbnMuc2V0RWRpdG9yTW9kZX1cbiAgICAgICAgICAgIG9uU2V0TG9jYWxlPXt1aVN0YXRlQWN0aW9ucy5zZXRMb2NhbGV9XG4gICAgICAgICAgICBvblRvZ2dsZUVkaXRvclZpc2liaWxpdHk9e3Zpc1N0YXRlQWN0aW9ucy50b2dnbGVFZGl0b3JWaXNpYmlsaXR5fVxuICAgICAgICAgICAgb25MYXllclZpc0NvbmZpZ0NoYW5nZT17dmlzU3RhdGVBY3Rpb25zLmxheWVyVmlzQ29uZmlnQ2hhbmdlfVxuICAgICAgICAgICAgbWFwSGVpZ2h0PXttYXBTdGF0ZS5oZWlnaHR9XG4gICAgICAgICAgICBzZXRNYXBDb250cm9sU2V0dGluZ3M9e3VpU3RhdGVBY3Rpb25zLnNldE1hcENvbnRyb2xTZXR0aW5nc31cbiAgICAgICAgICAgIGFjdGl2ZVNpZGVQYW5lbD17YWN0aXZlU2lkZVBhbmVsfVxuICAgICAgICAgIC8+XG4gICAgICAgICAge2lzU3BsaXRTZWxlY3Rvcih0aGlzLnByb3BzKSAmJiA8RHJvcHBhYmxlIGNvbnRhaW5lcklkPXtjb250YWluZXJJZH0gLz59XG5cbiAgICAgICAgICB7ZGVja31cbiAgICAgICAgICB7dGhpcy5fcmVuZGVyTWFwYm94T3ZlcmxheXMoKX1cbiAgICAgICAgICA8RWRpdG9yXG4gICAgICAgICAgICBpbmRleD17aW5kZXggfHwgMH1cbiAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAgICAgZmlsdGVycz17dGhpcy5wb2x5Z29uRmlsdGVyc1NlbGVjdG9yKHRoaXMucHJvcHMpfVxuICAgICAgICAgICAgbGF5ZXJzPXtsYXllcnN9XG4gICAgICAgICAgICBvbkRlbGV0ZUZlYXR1cmU9e3Zpc1N0YXRlQWN0aW9ucy5kZWxldGVGZWF0dXJlfVxuICAgICAgICAgICAgb25TZWxlY3Q9e3Zpc1N0YXRlQWN0aW9ucy5zZXRTZWxlY3RlZEZlYXR1cmV9XG4gICAgICAgICAgICBvblRvZ2dsZVBvbHlnb25GaWx0ZXI9e3Zpc1N0YXRlQWN0aW9ucy5zZXRQb2x5Z29uRmlsdGVyTGF5ZXJ9XG4gICAgICAgICAgICBvblNldEVkaXRvck1vZGU9e3Zpc1N0YXRlQWN0aW9ucy5zZXRFZGl0b3JNb2RlfVxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ2FsbCcsXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICBkaXNwbGF5OiBlZGl0b3IudmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZSdcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICB7bWFwU3R5bGUudG9wTWFwU3R5bGUgPyAoXG4gICAgICAgICAgICA8TWFwQ29tcG9uZW50XG4gICAgICAgICAgICAgIGtleT17YHRvcC0ke2Jhc2VNYXBMaWJyYXJ5TmFtZX1gfVxuICAgICAgICAgICAgICB2aWV3U3RhdGU9e2ludGVybmFsVmlld1N0YXRlfVxuICAgICAgICAgICAgICBtYXBTdHlsZT17bWFwU3R5bGUudG9wTWFwU3R5bGV9XG4gICAgICAgICAgICAgIHN0eWxlPXtNQVBfU1RZTEUudG9wfVxuICAgICAgICAgICAgICBtYXBib3hBY2Nlc3NUb2tlbj17bWFwUHJvcHMubWFwYm94QWNjZXNzVG9rZW59XG4gICAgICAgICAgICAgIHRyYW5zZm9ybVJlcXVlc3Q9e21hcFByb3BzLnRyYW5zZm9ybVJlcXVlc3R9XG4gICAgICAgICAgICAgIG1hcExpYj17YmFzZU1hcExpYnJhcnlDb25maWcuZ2V0TWFwTGliKCl9XG4gICAgICAgICAgICAgIHsuLi50b3BNYXBDb250YWluZXJQcm9wc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICB7aGFzR2VvY29kZXJMYXllclxuICAgICAgICAgICAgPyB0aGlzLl9yZW5kZXJEZWNrT3ZlcmxheShcbiAgICAgICAgICAgICAgICB7W0dFT0NPREVSX0xBWUVSX0lEXTogaGFzR2VvY29kZXJMYXllcn0sXG4gICAgICAgICAgICAgICAge3ByaW1hcnlNYXA6IGZhbHNlLCBpc0ludGVyYWN0aXZlOiBmYWxzZX1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBudWxsfVxuICAgICAgICAgIHt0aGlzLl9yZW5kZXJNYXBQb3BvdmVyKCl9XG4gICAgICAgICAge3ByaW1hcnkgIT09IGlzU3BsaXQgPyAoXG4gICAgICAgICAgICA8TG9hZGluZ0luZGljYXRvclxuICAgICAgICAgICAgICBpc1Zpc2libGU9e0Jvb2xlYW4oaXNMb2FkaW5nSW5kaWNhdG9yVmlzaWJsZSl9XG4gICAgICAgICAgICAgIGFjdGl2ZVNpZGVQYW5lbD17Qm9vbGVhbihhY3RpdmVTaWRlUGFuZWwpfVxuICAgICAgICAgICAgICBzaWRlUGFuZWxXaWR0aD17c2lkZVBhbmVsV2lkdGh9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIExvYWRpbmcuLi5cbiAgICAgICAgICAgIDwvTG9hZGluZ0luZGljYXRvcj5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7dGhpcy5wcm9wcy5wcmltYXJ5ID8gKFxuICAgICAgICAgICAgPEF0dHJpYnV0aW9uXG4gICAgICAgICAgICAgIHNob3dCYXNlTWFwTGliTG9nbz17dGhpcy5zdGF0ZS5zaG93QmFzZU1hcEF0dHJpYnV0aW9ufVxuICAgICAgICAgICAgICBzaG93T3NtQmFzZW1hcEF0dHJpYnV0aW9uPXt0cnVlfVxuICAgICAgICAgICAgICBkYXRhc2V0QXR0cmlidXRpb25zPXtkYXRhc2V0QXR0cmlidXRpb25zfVxuICAgICAgICAgICAgICBiYXNlTWFwTGlicmFyeUNvbmZpZz17YmFzZU1hcExpYnJhcnlDb25maWd9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge3Zpc1N0YXRlLCBtYXBTdHlsZX0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3QgbWFwQ29udGVudCA9IHRoaXMuX3JlbmRlck1hcCgpO1xuICAgICAgaWYgKCFtYXBDb250ZW50KSB7XG4gICAgICAgIC8vIG1hcENvbnRlbnQgY2FuIGJlIG51bGwgaWYgb25EZWNrUmVuZGVyIHJldHVybnMgbnVsbFxuICAgICAgICAvLyBpbiB0aGlzIGNhc2Ugd2UgZG9uJ3Qgd2FudCB0byByZW5kZXIgdGhlIG1hcFxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY3VycmVudFN0eWxlID0gbWFwU3R5bGUubWFwU3R5bGVzPy5bbWFwU3R5bGUuc3R5bGVUeXBlXTtcbiAgICAgIGNvbnN0IGJhc2VNYXBMaWJyYXJ5TmFtZSA9IGdldEJhc2VNYXBMaWJyYXJ5KGN1cnJlbnRTdHlsZSk7XG4gICAgICBjb25zdCBiYXNlTWFwTGlicmFyeUNvbmZpZyA9XG4gICAgICAgIGdldEFwcGxpY2F0aW9uQ29uZmlnKCkuYmFzZU1hcExpYnJhcnlDb25maWc/LltiYXNlTWFwTGlicmFyeU5hbWVdO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkTWFwXG4gICAgICAgICAgcmVmPXt0aGlzLl9yZWZ9XG4gICAgICAgICAgc3R5bGU9e3RoaXMuc3R5bGVTZWxlY3Rvcih0aGlzLnByb3BzKX1cbiAgICAgICAgICBvbkNvbnRleHRNZW51PXtldmVudCA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpfVxuICAgICAgICAgICRtaXhCbGVuZE1vZGU9e3Zpc1N0YXRlLm92ZXJsYXlCbGVuZGluZ31cbiAgICAgICAgICAkbWFwTGliQ3NzQ2xhc3M9e2Jhc2VNYXBMaWJyYXJ5Q29uZmlnLm1hcExpYkNzc0NsYXNzfVxuICAgICAgICA+XG4gICAgICAgICAge21hcENvbnRlbnR9XG4gICAgICAgIDwvU3R5bGVkTWFwPlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gd2l0aFRoZW1lKE1hcENvbnRhaW5lcik7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFGLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxXQUFBLEdBQUFGLE9BQUE7QUFFQSxJQUFBRyxPQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxTQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxLQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxTQUFBLEdBQUFILHNCQUFBLENBQUFKLE9BQUE7QUFLQSxJQUFBUSxXQUFBLEdBQUFKLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBUyxXQUFBLEdBQUFMLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBVSxrQkFBQSxHQUFBVixPQUFBO0FBTUEsSUFBQVcsT0FBQSxHQUFBUCxzQkFBQSxDQUFBSixPQUFBO0FBR0EsSUFBQVksT0FBQSxHQUFBWixPQUFBO0FBZ0JBLElBQUFhLE1BQUEsR0FBQWIsT0FBQTtBQW9CQSxJQUFBYyxPQUFBLEdBQUFkLE9BQUE7QUFHQSxJQUFBZSxVQUFBLEdBQUFm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
|
|
945
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZWFjdE1hcEdsIiwiX3JlYWN0MiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVzZWxlY3QiLCJfY29yZSIsIl9kZWJvdW5jZSIsIl9tYXBQb3BvdmVyIiwiX21hcENvbnRyb2wiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfZWRpdG9yIiwiX2xheWVycyIsIl91dGlscyIsIl9zdHlsZXMiLCJfY29uc3RhbnRzIiwiX2RuZExheWVySXRlbXMiLCJfbWFwVmlld1N0YXRlQ29udGV4dCIsIl9lcnJvckJvdW5kYXJ5IiwiX2xvY2FsaXphdGlvbiIsIl9jb3JlMiIsIl9yZWR1Y2VycyIsIl9sb2FkaW5nSW5kaWNhdG9yIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiREVCT1VOQ0VfVklFV1BPUlRfUFJPUEFHQVRFIiwiREVCT1VOQ0VfTU9VU0VfTU9WRV9QUk9QQUdBVEUiLCJNQVBfU1RZTEUiLCJjb250YWluZXIiLCJkaXNwbGF5IiwicG9zaXRpb24iLCJ3aWR0aCIsImhlaWdodCIsInRvcCIsInBvaW50ZXJFdmVudHMiLCJMT0NBTEVfQ09ERVNfQVJSQVkiLCJMT0NBTEVfQ09ERVMiLCJTdHlsZWRNYXAiLCJzdHlsZWQiLCJTdHlsZWRNYXBDb250YWluZXIiLCJfcmVmIiwiX3JlZiQkbWl4QmxlbmRNb2RlIiwiJG1peEJsZW5kTW9kZSIsIiRtYXBMaWJDc3NDbGFzcyIsImNvbmNhdCIsIk1BUEJPWEdMX1NUWUxFX1VQREFURSIsIk1BUEJPWEdMX1JFTkRFUiIsIm5vcCIsIk1hcExpYkxvZ28iLCJfcmVmMiIsImJhc2VNYXBMaWJyYXJ5Q29uZmlnIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInN0eWxlIiwibWFyZ2luTGVmdCIsIm1hcExpYkNzc0NsYXNzIiwidGFyZ2V0IiwicmVsIiwiaHJlZiIsIm1hcExpYlVybCIsIm1hcExpYk5hbWUiLCJTdHlsZWREcm9wcGFibGUiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwiaXNPdmVyIiwidGhlbWUiLCJkbmRPdmVyQmFja2dyb3VuZENvbG9yIiwiaXNTcGxpdFNlbGVjdG9yIiwiZXhwb3J0cyIsInZpc1N0YXRlIiwic3BsaXRNYXBzIiwiRHJvcHBhYmxlIiwiX3JlZjMiLCJjb250YWluZXJJZCIsIl91c2VEcm9wcGFibGUiLCJ1c2VEcm9wcGFibGUiLCJpZCIsImRhdGEiLCJ0eXBlIiwiRFJPUFBBQkxFX01BUF9DT05UQUlORVJfVFlQRSIsImluZGV4IiwiZGlzYWJsZWQiLCJzZXROb2RlUmVmIiwicmVmIiwiU3R5bGVkRGF0YXNldEF0dHJpYnV0aW9uc0NvbnRhaW5lciIsImlzUGFsbSIsImxhYmVsQ29sb3IiLCJEYXRhc2V0QXR0cmlidXRpb25zIiwiX3JlZjQiLCJkYXRhc2V0QXR0cmlidXRpb25zIiwiRnJhZ21lbnQiLCJtYXAiLCJkcyIsImlkeCIsIl9leHRlbmRzMiIsInVybCIsImtleSIsInRpdGxlIiwiQXR0cmlidXRpb24iLCJfcmVmNSIsIl9yZWY1JHNob3dCYXNlTWFwTGliTCIsInNob3dCYXNlTWFwTGliTG9nbyIsIl9yZWY1JHNob3dPc21CYXNlbWFwQSIsInNob3dPc21CYXNlbWFwQXR0cmlidXRpb24iLCJoYXNNb2JpbGVXaWR0aCIsImJyZWFrUG9pbnRWYWx1ZXMiLCJtZW1vaXplZENvbXBvbmVudHMiLCJ1c2VNZW1vIiwiU3R5bGVkQXR0cmlidXRpb24iLCJtYXBMaWJBdHRyaWJ1dGlvbkNzc0NsYXNzIiwiRW5kSG9yaXpvbnRhbEZsZXhib3giLCJNYXBDb250YWluZXJGYWN0b3J5IiwiZGVwcyIsIk1hcFBvcG92ZXJGYWN0b3J5IiwiTWFwQ29udHJvbEZhY3RvcnkiLCJFZGl0b3JGYWN0b3J5IiwiTWFwUG9wb3ZlciIsIk1hcENvbnRyb2wiLCJFZGl0b3IiLCJNYXBDb250YWluZXIiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwic2hvd0Jhc2VNYXBBdHRyaWJ1dGlvbiIsImNyZWF0ZVJlZiIsImRpbWVuc2lvbnMiLCJfdGhpcyRwcm9wcyIsInByaW1hcnkiLCJtYXBTdGF0ZUFjdGlvbnMiLCJ1cGRhdGVNYXAiLCJsYXllcnMiLCJsYXllckRhdGEiLCJjcmVhdGVTZWxlY3RvciIsInNwbGl0TWFwU2VsZWN0b3IiLCJzcGxpdE1hcEluZGV4U2VsZWN0b3IiLCJnZXRNYXBMYXllcnNGcm9tU3BsaXRNYXBzIiwibGF5ZXJPcmRlciIsImxheWVyc1NlbGVjdG9yIiwibGF5ZXJEYXRhU2VsZWN0b3IiLCJtYXBMYXllcnNTZWxlY3RvciIsInByZXBhcmVMYXllcnNUb1JlbmRlciIsInByZXBhcmVMYXllcnNGb3JEZWNrIiwiZmlsdGVycyIsImZpbHRlcnNTZWxlY3RvciIsImYiLCJGSUxURVJfVFlQRVMiLCJwb2x5Z29uIiwiZW5hYmxlZCIsImVkaXRvciIsImZlYXR1cmVzIiwic2VsZWN0ZWRGZWF0dXJlIiwicG9seWdvbkZpbHRlcnNTZWxlY3RvciIsImZlYXR1cmVzU2VsZWN0b3IiLCJwb2x5Z29uRmlsdGVycyIsInZhbHVlIiwiZmVhdHVyZUNvbGxlY3Rpb25TZWxlY3RvciIsInNlbGVjdGVkRmVhdHVyZVNlbGVjdG9yIiwiY29sbGVjdGlvbiIsImZpbmRJbmRleCIsIl9wcm9wcyRnZW5lcmF0ZU1hcGJveCIsImdlbmVyYXRlTWFwYm94TGF5ZXJzIiwibGF5ZXJPcmRlclNlbGVjdG9yIiwibGF5ZXJzVG9SZW5kZXJTZWxlY3RvciIsImdlbmVyYXRlTWFwYm94TGF5ZXJNZXRob2RTZWxlY3RvciIsImxheWVyIiwibGF5ZXJzVG9SZW5kZXIiLCJnZW5lcmF0ZU1hcGJveExheWVyTWV0aG9kIiwibWFwU3R5bGUiLCJzdHlsZVR5cGUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJtYXBTdHlsZVR5cGVTZWxlY3RvciIsIm1hcFN0eWxlQmFja2dyb3VuZENvbG9yU2VsZWN0b3IiLCJOT19NQVBfSUQiLCJyZ2JUb0hleCIsInZpc1N0YXRlQWN0aW9ucyIsIm9uTGF5ZXJDbGljayIsIl9pZHgiLCJpbmZvIiwib25MYXllckhvdmVyIiwibGF5ZXJDb25maWdDaGFuZ2UiLCJjb2xvckRvbWFpbiIsImRvbWFpbiIsImFnZ3JlZ2F0ZWRCaW5zIiwiZXZlbnQiLCJsYXllckZpbHRlcmVkSXRlbXNDaGFuZ2UiLCJsYXllcklkIiwiX3RoaXMkcHJvcHMyIiwiX3RoaXMkcHJvcHMyJGluZGV4IiwibWFwSW5kZXgiLCJ0b2dnbGVMYXllckZvck1hcCIsInVwZGF0ZSIsInByZXZpb3VzTGF5ZXJzIiwiX3VwZGF0ZU1hcGJveExheWVycyIsInNldFN0YXRlIiwiaXNTdHlsZVVzaW5nTWFwYm94VGlsZXMiLCJpc1N0eWxlVXNpbmdPcGVuU3RyZWV0TWFwVGlsZXMiLCJvbk1hcFN0eWxlTG9hZGVkIiwiX21hcCIsIm1hcFJlZiIsImdldE1hcCIsIl90aGlzJF9tYXAiLCJfdGhpcyRfbWFwMiIsIm9mZiIsIm9uIiwiX29uTWFwYm94U3R5bGVVcGRhdGUiLCJvbk1hcFJlbmRlciIsImdldE1hcGJveFJlZiIsIl9yZWY2IiwiZ2wiLCJzZXRMYXllckJsZW5kaW5nIiwibGF5ZXJCbGVuZGluZyIsImVycm9yIiwiZXJyb3JNZXNzYWdlIiwibWVzc2FnZSIsImxheWVyTWVzc2FnZSIsImVycm9yTWVzc2FnZUZ1bGwiLCJsYXN0U2hvd24iLCJfZGVja0dMRXJyb3JzRWxhcHNlZCIsIkRhdGUiLCJub3ciLCJUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRSIsImV4dHJhTGF5ZXJNZXNzYWdlIiwiX3RvcE1vc3RMYXllciRwcm9wcyIsInRvcE1vc3RMYXllciIsInBhcmVudCIsImxheWVyU2V0SXNWYWxpZCIsInVpU3RhdGVBY3Rpb25zIiwiYWRkTm90aWZpY2F0aW9uIiwiZXJyb3JOb3RpZmljYXRpb24iLCJkZWJvdW5jZSIsIl90aGlzJGNvbnRleHQiLCJ2aWV3U3RhdGUiLCJjb250ZXh0IiwiZ2V0SW50ZXJuYWxWaWV3U3RhdGUiLCJvblZpZXdQb3J0Q2hhbmdlIiwib25WaWV3U3RhdGVDaGFuZ2UiLCJ2aWV3cG9ydCIsImlzRXhwb3J0Iiwic2V0SW50ZXJuYWxWaWV3U3RhdGUiLCJfb25WaWV3cG9ydENoYW5nZVByb3BhZ2F0ZURlYm91bmNlZCIsIm9uTW91c2VNb3ZlIiwibm9ybWFsaXplRXZlbnQiLCJwYW5lbElkIiwiX3RoaXMkcHJvcHMzIiwidG9nZ2xlTWFwQ29udHJvbCIsIk51bWJlciIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwiY29tcG9uZW50RGlkTW91bnQiLCJjdXJyZW50Iiwib2JzZXJ2ZURpbWVuc2lvbnMiLCJfaGFuZGxlUmVzaXplIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJfdGhpcyRfbWFwMyIsIl90aGlzJF9tYXA0IiwidW5vYnNlcnZlRGltZW5zaW9ucyIsIl9vbkRlY2tJbml0aWFsaXplZCIsIm9uRGVja0luaXRpYWxpemVkIiwiX2RlY2siLCJfaXNPS1RvUmVuZGVyRWZmZWN0cyIsInZpZXdJbmRleCIsIl90aGlzJF9kZWNrIiwidmlld01hbmFnZXIiLCJfdmlld3BvcnRzIiwiX3JlbmRlck1hcFBvcG92ZXIiLCJfdGhpcyRwcm9wcyR2aXNTdGF0ZSQiLCJob3ZlckluZm8iLCJfdGhpcyRwcm9wczQiLCJtYXBTdGF0ZSIsIl90aGlzJHByb3BzNCR2aXNTdGF0ZSIsImNsaWNrZWQiLCJkYXRhc2V0cyIsImludGVyYWN0aW9uQ29uZmlnIiwiYW5pbWF0aW9uQ29uZmlnIiwiX3RoaXMkcHJvcHM0JHZpc1N0YXRlMiIsIm1vdXNlUG9zIiwibW91c2VQb3NpdGlvbiIsImNvb3JkaW5hdGUiLCJwaW5uZWQiLCJ0b29sdGlwIiwibGF5ZXJIb3ZlclByb3AiLCJnZXRMYXllckhvdmVyUHJvcCIsImNvbXBhcmVNb2RlIiwiY29uZmlnIiwicGlubmVkUG9zaXRpb24iLCJ4IiwieSIsImxheWVyUGlubmVkUHJvcCIsImdldFZpZXdwb3J0RnJvbU1hcFN0YXRlIiwibG5nTGF0IiwiX2dldEhvdmVyWFkiLCJwcmltYXJ5RGF0YSIsImNvbXBhcmVUeXBlIiwiY29tbW9uUHJvcCIsIm9uQ2xvc2UiLCJfb25DbG9zZU1hcFBvcG92ZXIiLCJ6b29tIiwiY2FudmFzIiwidW5kZWZpbmVkIiwiZnJvemVuIiwiaXNCYXNlIiwib25TZXRGZWF0dXJlcyIsInNldEZlYXR1cmVzIiwic2V0U2VsZWN0ZWRGZWF0dXJlIiwiZmVhdHVyZUNvbGxlY3Rpb24iLCJzY3JlZW5Db29yZCIsInByb2plY3QiLCJfcmVuZGVyRGVja092ZXJsYXkiLCJsYXllcnNGb3JEZWNrIiwiX3RoaXMkY29udGV4dDIiLCJfdGhpczIiLCJvcHRpb25zIiwicHJpbWFyeU1hcCIsIl90aGlzJHByb3BzNSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwiZGVja0dsUHJvcHMiLCJtYXBDb250cm9scyIsImRlY2tSZW5kZXJDYWxsYmFja3MiLCJnZW5lcmF0ZURlY2tHTExheWVycyIsImlzSW50ZXJhY3RpdmUiLCJjaGlsZHJlbiIsIm1hcERyYXciLCJfcmVmNyIsIl9yZWY3JGFjdGl2ZSIsImFjdGl2ZSIsImVkaXRvck1lbnVBY3RpdmUiLCJpc0VkaXRvckRyYXdpbmdNb2RlIiwiRWRpdG9yTGF5ZXJVdGlscyIsImlzRHJhd2luZ0FjdGl2ZSIsIm1vZGUiLCJpbnRlcm5hbFZpZXdTdGF0ZSIsImludGVybmFsTWFwU3RhdGUiLCJlZGl0b3JGZWF0dXJlU2VsZWN0ZWRJbmRleCIsInNlbGVjdGVkUG9seWdvbkluZGV4U2VsZWN0b3IiLCJnZW5lcmF0ZURlY2tHTExheWVyc01ldGhvZCIsImNvbXB1dGVEZWNrTGF5ZXJzIiwiZGVja0dsTGF5ZXJzIiwiZWRpdG9ySW5mbyIsInNlbGVjdGVkRmVhdHVyZUluZGV4ZXMiLCJzZWxlY3RlZEZlYXR1cmVJbmRleEFycmF5U2VsZWN0b3IiLCJfb25MYXllckhvdmVyIiwib25TZXRMYXllckRvbWFpbiIsIl9vbkxheWVyU2V0RG9tYWluIiwib25GaWx0ZXJlZEl0ZW1zQ2hhbmdlIiwiX29uTGF5ZXJGaWx0ZXJlZEl0ZW1zQ2hhbmdlIiwiZXh0cmFEZWNrUGFyYW1zIiwiZ2V0VG9vbHRpcCIsImdldEN1cnNvciIsIl9yZWY4IiwiaXNEcmFnZ2luZyIsImVkaXRvckN1cnNvciIsImVmZmVjdHMiLCJjb21wdXRlRGVja0VmZmVjdHMiLCJ2aWV3cyIsIk1hcFZpZXciLCJsZWdhY3lNZXRlclNpemVzIiwiYWxsRGVja0dsUHJvcHMiLCJwaWNraW5nUmFkaXVzIiwiREVGQVVMVF9QSUNLSU5HX1JBRElVUyIsIm9uRGVja1JlbmRlciIsIl9vbk1vdXNlTW92ZURlYm91bmNlZCIsIm9uTG9hZCIsIm9uRGVja0xvYWQiLCJjb250cm9sbGVyIiwiZG91YmxlQ2xpY2tab29tIiwiZHJhZ1JvdGF0ZSIsImluaXRpYWxWaWV3U3RhdGUiLCJvbkJlZm9yZVJlbmRlciIsIl9vbkJlZm9yZVJlbmRlciIsIl9vblZpZXdwb3J0Q2hhbmdlIiwib25Ib3ZlciIsInJlcyIsIl9vbkxheWVySG92ZXJEZWJvdW5jZWQiLCJvbkNsaWNrIiwic3JjRXZlbnQiLCJvbkVycm9yIiwiX29uRGVja0Vycm9yIiwiY29tcCIsImRlY2siLCJvbldlYkdMSW5pdGlhbGl6ZWQiLCJvbkFmdGVyUmVuZGVyIiwib25EZWNrQWZ0ZXJSZW5kZXIiLCJtYXBib3hMYXllcnMiLCJtYXBib3hMYXllcnNTZWxlY3RvciIsInVwZGF0ZU1hcGJveExheWVycyIsIl9yZW5kZXJNYXBib3hPdmVybGF5cyIsImlzU3R5bGVMb2FkZWQiLCJfcmVuZGVyTWFwIiwiX21hcFN0eWxlJG1hcFN0eWxlcyIsIl9nZXRBcHBsaWNhdGlvbkNvbmZpZyIsIl90aGlzJGNvbnRleHQzIiwiX21hcFN0eWxlJGJvdHRvbU1hcFN0IiwiX3RoaXMkcHJvcHM2IiwiX3RoaXMkcHJvcHM2JE1hcENvbXBvIiwiTWFwQ29tcG9uZW50IiwiTWFwIiwibG9jYWxlIiwiYm90dG9tTWFwQ29udGFpbmVyUHJvcHMiLCJ0b3BNYXBDb250YWluZXJQcm9wcyIsIl90aGlzJHByb3BzNiRkYXRhc2V0QSIsIl90aGlzJHByb3BzNiRjb250YWluZSIsImlzTG9hZGluZ0luZGljYXRvclZpc2libGUiLCJhY3RpdmVTaWRlUGFuZWwiLCJzaWRlUGFuZWxXaWR0aCIsImxheWVyc0ZvckRlY2tTZWxlY3RvciIsImN1cnJlbnRTdHlsZSIsIm1hcFN0eWxlcyIsImJhc2VNYXBMaWJyYXJ5TmFtZSIsImdldEJhc2VNYXBMaWJyYXJ5IiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJtYXBQcm9wcyIsInByZXNlcnZlRHJhd2luZ0J1ZmZlciIsIm1hcGJveEFjY2Vzc1Rva2VuIiwiYWNjZXNzVG9rZW4iLCJtYXBMaWIiLCJnZXRNYXBMaWIiLCJ0cmFuc2Zvcm1SZXF1ZXN0IiwiaGFzR2VvY29kZXJMYXllciIsImZpbmQiLCJsIiwiR0VPQ09ERVJfTEFZRVJfSUQiLCJpc1NwbGl0IiwiYm90dG9tTWFwU3R5bGUiLCJFTVBUWV9NQVBCT1hfU1RZTEUiLCJfc2V0TWFwUmVmIiwiYXZhaWxhYmxlTG9jYWxlcyIsInJlYWRPbmx5Iiwic2NhbGUiLCJnZW9jb2RlciIsIm1hcENvbnRyb2xUb3AiLCJvblRvZ2dsZVBlcnNwZWN0aXZlIiwidG9nZ2xlUGVyc3BlY3RpdmUiLCJvblRvZ2dsZVNwbGl0TWFwIiwidG9nZ2xlU3BsaXRNYXAiLCJvbk1hcFRvZ2dsZUxheWVyIiwiX2hhbmRsZU1hcFRvZ2dsZUxheWVyIiwib25Ub2dnbGVNYXBDb250cm9sIiwiX3RvZ2dsZU1hcENvbnRyb2wiLCJvblRvZ2dsZVNwbGl0TWFwVmlld3BvcnQiLCJ0b2dnbGVTcGxpdE1hcFZpZXdwb3J0Iiwib25TZXRFZGl0b3JNb2RlIiwic2V0RWRpdG9yTW9kZSIsIm9uU2V0TG9jYWxlIiwic2V0TG9jYWxlIiwib25Ub2dnbGVFZGl0b3JWaXNpYmlsaXR5IiwidG9nZ2xlRWRpdG9yVmlzaWJpbGl0eSIsIm9uTGF5ZXJWaXNDb25maWdDaGFuZ2UiLCJsYXllclZpc0NvbmZpZ0NoYW5nZSIsIm1hcEhlaWdodCIsInNldE1hcENvbnRyb2xTZXR0aW5ncyIsIm9uRGVsZXRlRmVhdHVyZSIsImRlbGV0ZUZlYXR1cmUiLCJvblNlbGVjdCIsIm9uVG9nZ2xlUG9seWdvbkZpbHRlciIsInNldFBvbHlnb25GaWx0ZXJMYXllciIsInZpc2libGUiLCJ0b3BNYXBTdHlsZSIsImlzVmlzaWJsZSIsImlzUmFzdGVyVGlsZXNCZWluZ0xvYWRlZCIsInN0YXRlIiwicmVuZGVyIiwiX21hcFN0eWxlJG1hcFN0eWxlczIiLCJfZ2V0QXBwbGljYXRpb25Db25maWcyIiwiX3RoaXMkcHJvcHM3IiwibWFwQ29udGVudCIsInN0eWxlU2VsZWN0b3IiLCJvbkNvbnRleHRNZW51IiwicHJldmVudERlZmF1bHQiLCJvdmVybGF5QmxlbmRpbmciLCJDb21wb25lbnQiLCJNYXBWaWV3U3RhdGVDb250ZXh0Iiwid2l0aFRoZW1lIl0sInNvdXJjZXMiOlsiLi4vc3JjL21hcC1jb250YWluZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbi8vIGxpYnJhcmllc1xuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWYsIHVzZU1lbW99IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQsIHt3aXRoVGhlbWV9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7TWFwLCBNYXBSZWZ9IGZyb20gJ3JlYWN0LW1hcC1nbCc7XG5pbXBvcnQge1BpY2tJbmZvfSBmcm9tICdAZGVjay5nbC9jb3JlL2xpYi9kZWNrJztcbmltcG9ydCBEZWNrR0wgZnJvbSAnQGRlY2suZ2wvcmVhY3QnO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3RvciwgU2VsZWN0b3J9IGZyb20gJ3Jlc2VsZWN0JztcbmltcG9ydCB7dXNlRHJvcHBhYmxlfSBmcm9tICdAZG5kLWtpdC9jb3JlJztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICdsb2Rhc2gvZGVib3VuY2UnO1xuXG5pbXBvcnQge1Zpc1N0YXRlQWN0aW9ucywgTWFwU3RhdGVBY3Rpb25zLCBVSVN0YXRlQWN0aW9uc30gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcblxuLy8gY29tcG9uZW50c1xuaW1wb3J0IE1hcFBvcG92ZXJGYWN0b3J5IGZyb20gJy4vbWFwL21hcC1wb3BvdmVyJztcbmltcG9ydCBNYXBDb250cm9sRmFjdG9yeSBmcm9tICcuL21hcC9tYXAtY29udHJvbCc7XG5pbXBvcnQge1xuICBTdHlsZWRNYXBDb250YWluZXIsXG4gIFN0eWxlZEF0dHJpYnV0aW9uLFxuICBFbmRIb3Jpem9udGFsRmxleGJveFxufSBmcm9tICcuL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCBFZGl0b3JGYWN0b3J5IGZyb20gJy4vZWRpdG9yL2VkaXRvcic7XG5cbi8vIHV0aWxzXG5pbXBvcnQge1xuICBnZW5lcmF0ZU1hcGJveExheWVycyxcbiAgdXBkYXRlTWFwYm94TGF5ZXJzLFxuICBMYXllckJhc2VDb25maWcsXG4gIFZpc3VhbENoYW5uZWxEb21haW4sXG4gIEVkaXRvckxheWVyVXRpbHMsXG4gIEFnZ3JlZ2F0ZWRCaW4sXG4gIGlzUmFzdGVyVGlsZXNCZWluZ0xvYWRlZFxufSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge1xuICBEYXRhc2V0QXR0cmlidXRpb24sXG4gIE1hcFN0YXRlLFxuICBNYXBDb250cm9scyxcbiAgVmlld3BvcnQsXG4gIFNwbGl0TWFwLFxuICBTcGxpdE1hcExheWVyc1xufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7XG4gIGVycm9yTm90aWZpY2F0aW9uLFxuICBzZXRMYXllckJsZW5kaW5nLFxuICBpc1N0eWxlVXNpbmdNYXBib3hUaWxlcyxcbiAgaXNTdHlsZVVzaW5nT3BlblN0cmVldE1hcFRpbGVzLFxuICBnZXRCYXNlTWFwTGlicmFyeSxcbiAgQmFzZU1hcExpYnJhcnlDb25maWcsXG4gIHRyYW5zZm9ybVJlcXVlc3QsXG4gIG9ic2VydmVEaW1lbnNpb25zLFxuICB1bm9ic2VydmVEaW1lbnNpb25zLFxuICBoYXNNb2JpbGVXaWR0aCxcbiAgZ2V0TWFwTGF5ZXJzRnJvbVNwbGl0TWFwcyxcbiAgb25WaWV3UG9ydENoYW5nZSxcbiAgZ2V0Vmlld3BvcnRGcm9tTWFwU3RhdGUsXG4gIG5vcm1hbGl6ZUV2ZW50LFxuICByZ2JUb0hleCxcbiAgY29tcHV0ZURlY2tFZmZlY3RzLFxuICBnZXRBcHBsaWNhdGlvbkNvbmZpZyxcbiAgR2V0TWFwUmVmXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHticmVha1BvaW50VmFsdWVzfSBmcm9tICdAa2VwbGVyLmdsL3N0eWxlcyc7XG5cbi8vIGRlZmF1bHQtc2V0dGluZ3NcbmltcG9ydCB7XG4gIEZJTFRFUl9UWVBFUyxcbiAgR0VPQ09ERVJfTEFZRVJfSUQsXG4gIFRIUk9UVExFX05PVElGSUNBVElPTl9USU1FLFxuICBERUZBVUxUX1BJQ0tJTkdfUkFESVVTLFxuICBOT19NQVBfSUQsXG4gIEVNUFRZX01BUEJPWF9TVFlMRVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7RFJPUFBBQkxFX01BUF9DT05UQUlORVJfVFlQRX0gZnJvbSAnLi9jb21tb24vZG5kLWxheWVyLWl0ZW1zJztcbi8vIENvbnRleHRzXG5pbXBvcnQge01hcFZpZXdTdGF0ZUNvbnRleHR9IGZyb20gJy4vbWFwLXZpZXctc3RhdGUtY29udGV4dCc7XG5cbmltcG9ydCBFcnJvckJvdW5kYXJ5IGZyb20gJy4vY29tbW9uL2Vycm9yLWJvdW5kYXJ5JztcbmltcG9ydCB7TE9DQUxFX0NPREVTfSBmcm9tICdAa2VwbGVyLmdsL2xvY2FsaXphdGlvbic7XG5pbXBvcnQge01hcFZpZXd9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtcbiAgTWFwU3R5bGUsXG4gIGNvbXB1dGVEZWNrTGF5ZXJzLFxuICBnZXRMYXllckhvdmVyUHJvcCxcbiAgTGF5ZXJIb3ZlclByb3AsXG4gIHByZXBhcmVMYXllcnNGb3JEZWNrLFxuICBwcmVwYXJlTGF5ZXJzVG9SZW5kZXIsXG4gIExheWVyc1RvUmVuZGVyXG59IGZyb20gJ0BrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuaW1wb3J0IHtWaXNTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC9zY2hlbWFzJztcblxuaW1wb3J0IExvYWRpbmdJbmRpY2F0b3IgZnJvbSAnLi9sb2FkaW5nLWluZGljYXRvcic7XG5cbi8vIERlYm91bmNlIHRoZSBwcm9wYWdhdGlvbiBvZiB2aWV3cG9ydCBjaGFuZ2UgYW5kIG1vdXNlIG1vdmVzIHRvIHJlZHV4IHN0b3JlLlxuLy8gVGhpcyBpcyB0byBhdm9pZCB0b28gbWFueSByZW5kZXJzIG9mIG90aGVyIGNvbXBvbmVudHMgd2hlbiB0aGUgbWFwIGlzXG4vLyBiZWluZyBwYW5uZWQvem9vbWVkIChsZWFkaW5nIHRvIGxhZ2d5IGJhc2VtYXAvZGVjayBzeW5jaW5nKS5cbmNvbnN0IERFQk9VTkNFX1ZJRVdQT1JUX1BST1BBR0FURSA9IDEwO1xuY29uc3QgREVCT1VOQ0VfTU9VU0VfTU9WRV9QUk9QQUdBVEUgPSAxMDtcblxuY29uc3QgTUFQX1NUWUxFOiB7W2tleTogc3RyaW5nXTogUmVhY3QuQ1NTUHJvcGVydGllc30gPSB7XG4gIGNvbnRhaW5lcjoge1xuICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgaGVpZ2h0OiAnMTAwJSdcbiAgfSxcbiAgdG9wOiB7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgdG9wOiAwLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgcG9pbnRlckV2ZW50czogJ25vbmUnXG4gIH1cbn07XG5cbmNvbnN0IExPQ0FMRV9DT0RFU19BUlJBWSA9IE9iamVjdC5rZXlzKExPQ0FMRV9DT0RFUyk7XG5cbmludGVyZmFjZSBTdHlsZWRNYXBDb250YWluZXJQcm9wcyB7XG4gICRtaXhCbGVuZE1vZGU/OiBzdHJpbmc7XG4gICRtYXBMaWJDc3NDbGFzczogc3RyaW5nO1xufVxuXG5jb25zdCBTdHlsZWRNYXAgPSBzdHlsZWQoU3R5bGVkTWFwQ29udGFpbmVyKTxTdHlsZWRNYXBDb250YWluZXJQcm9wcz4oXG4gICh7JG1peEJsZW5kTW9kZSA9ICdub3JtYWwnLCAkbWFwTGliQ3NzQ2xhc3N9KSA9PiBgXG4gICNkZWZhdWx0LWRlY2tnbC1vdmVybGF5IHtcbiAgICBtaXgtYmxlbmQtbW9kZTogJHskbWl4QmxlbmRNb2RlfTtcbiAgfTtcbiAgKlskeyRtYXBMaWJDc3NDbGFzc30tY2hpbGRyZW5dIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cbmBcbik7XG5cbmNvbnN0IE1BUEJPWEdMX1NUWUxFX1VQREFURSA9ICdzdHlsZS5sb2FkJztcbmNvbnN0IE1BUEJPWEdMX1JFTkRFUiA9ICdyZW5kZXInO1xuY29uc3Qgbm9wID0gKCkgPT4ge1xuICByZXR1cm47XG59O1xuXG50eXBlIE1hcExpYkxvZ29Qcm9wcyA9IHtcbiAgYmFzZU1hcExpYnJhcnlDb25maWc6IEJhc2VNYXBMaWJyYXJ5Q29uZmlnO1xufTtcblxuY29uc3QgTWFwTGliTG9nbyA9ICh7YmFzZU1hcExpYnJhcnlDb25maWd9OiBNYXBMaWJMb2dvUHJvcHMpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJhdHRyaXRpb24tbG9nb1wiPlxuICAgIEJhc2VtYXAgYnk6XG4gICAgPGFcbiAgICAgIHN0eWxlPXt7bWFyZ2luTGVmdDogJzVweCd9fVxuICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlTWFwTGlicmFyeUNvbmZpZy5tYXBMaWJDc3NDbGFzc30tY3RybC1sb2dvYH1cbiAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgIGhyZWY9e2Jhc2VNYXBMaWJyYXJ5Q29uZmlnLm1hcExpYlVybH1cbiAgICAgIGFyaWEtbGFiZWw9e2Ake2Jhc2VNYXBMaWJyYXJ5Q29uZmlnLm1hcExpYk5hbWV9IGxvZ29gfVxuICAgIC8+XG4gIDwvZGl2PlxuKTtcblxuaW50ZXJmYWNlIFN0eWxlZERyb3BwYWJsZVByb3BzIHtcbiAgaXNPdmVyOiBib29sZWFuO1xufVxuXG5jb25zdCBTdHlsZWREcm9wcGFibGUgPSBzdHlsZWQuZGl2PFN0eWxlZERyb3BwYWJsZVByb3BzPmBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiAocHJvcHMuaXNPdmVyID8gcHJvcHMudGhlbWUuZG5kT3ZlckJhY2tncm91bmRDb2xvciA6ICdub25lJyl9O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB6LWluZGV4OiAxO1xuYDtcblxuZXhwb3J0IGNvbnN0IGlzU3BsaXRTZWxlY3RvciA9IHByb3BzID0+XG4gIHByb3BzLnZpc1N0YXRlLnNwbGl0TWFwcyAmJiBwcm9wcy52aXNTdGF0ZS5zcGxpdE1hcHMubGVuZ3RoID4gMTtcblxuZXhwb3J0IGNvbnN0IERyb3BwYWJsZSA9ICh7Y29udGFpbmVySWR9KSA9PiB7XG4gIGNvbnN0IHtpc092ZXIsIHNldE5vZGVSZWZ9ID0gdXNlRHJvcHBhYmxlKHtcbiAgICBpZDogY29udGFpbmVySWQsXG4gICAgZGF0YToge3R5cGU6IERST1BQQUJMRV9NQVBfQ09OVEFJTkVSX1RZUEUsIGluZGV4OiBjb250YWluZXJJZH0sXG4gICAgZGlzYWJsZWQ6ICFjb250YWluZXJJZFxuICB9KTtcblxuICByZXR1cm4gPFN0eWxlZERyb3BwYWJsZSByZWY9e3NldE5vZGVSZWZ9IGlzT3Zlcj17aXNPdmVyfSAvPjtcbn07XG5cbmludGVyZmFjZSBTdHlsZWREYXRhc2V0QXR0cmlidXRpb25zQ29udGFpbmVyUHJvcHMge1xuICBpc1BhbG06IGJvb2xlYW47XG59XG5cbmNvbnN0IFN0eWxlZERhdGFzZXRBdHRyaWJ1dGlvbnNDb250YWluZXIgPSBzdHlsZWQuZGl2PFN0eWxlZERhdGFzZXRBdHRyaWJ1dGlvbnNDb250YWluZXJQcm9wcz5gXG4gIG1heC13aWR0aDogJHtwcm9wcyA9PiAocHJvcHMuaXNQYWxtID8gJzIwMHB4JyA6ICczMDBweCcpfTtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxhYmVsQ29sb3J9O1xuICBtYXJnaW4tcmlnaHQ6IDJweDtcbiAgbWFyZ2luLWJvdHRvbTogMXB4O1xuICBsaW5lLWhlaWdodDogJHtwcm9wcyA9PiAocHJvcHMuaXNQYWxtID8gJzFlbScgOiAnMS40ZW0nKX07XG5cbiAgJjpob3ZlciB7XG4gICAgd2hpdGUtc3BhY2U6IGluaGVyaXQ7XG4gIH1cbmA7XG5cbmNvbnN0IERhdGFzZXRBdHRyaWJ1dGlvbnMgPSAoe1xuICBkYXRhc2V0QXR0cmlidXRpb25zLFxuICBpc1BhbG1cbn06IHtcbiAgZGF0YXNldEF0dHJpYnV0aW9uczogRGF0YXNldEF0dHJpYnV0aW9uW107XG4gIGlzUGFsbTogYm9vbGVhbjtcbn0pID0+IChcbiAgPD5cbiAgICB7ZGF0YXNldEF0dHJpYnV0aW9ucz8ubGVuZ3RoID8gKFxuICAgICAgPFN0eWxlZERhdGFzZXRBdHRyaWJ1dGlvbnNDb250YWluZXIgaXNQYWxtPXtpc1BhbG19PlxuICAgICAgICB7ZGF0YXNldEF0dHJpYnV0aW9ucy5tYXAoKGRzLCBpZHgpID0+IChcbiAgICAgICAgICA8YVxuICAgICAgICAgICAgey4uLihkcy51cmwgPyB7aHJlZjogZHMudXJsfSA6IG51bGwpfVxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAga2V5PXtgJHtkcy50aXRsZX1fJHtpZHh9YH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7ZHMudGl0bGV9XG4gICAgICAgICAgICB7aWR4ICE9PSBkYXRhc2V0QXR0cmlidXRpb25zLmxlbmd0aCAtIDEgPyAnLCAnIDogbnVsbH1cbiAgICAgICAgICA8L2E+XG4gICAgICAgICkpfVxuICAgICAgPC9TdHlsZWREYXRhc2V0QXR0cmlidXRpb25zQ29udGFpbmVyPlxuICAgICkgOiBudWxsfVxuICA8Lz5cbik7XG5cbnR5cGUgQXR0cmlidXRpb25Qcm9wcyA9IHtcbiAgc2hvd0Jhc2VNYXBMaWJMb2dvOiBib29sZWFuO1xuICBzaG93T3NtQmFzZW1hcEF0dHJpYnV0aW9uOiBib29sZWFuO1xuICBkYXRhc2V0QXR0cmlidXRpb25zOiBEYXRhc2V0QXR0cmlidXRpb25bXTtcbiAgYmFzZU1hcExpYnJhcnlDb25maWc6IEJhc2VNYXBMaWJyYXJ5Q29uZmlnO1xufTtcblxuZXhwb3J0IGNvbnN0IEF0dHJpYnV0aW9uOiBSZWFjdC5GQzxBdHRyaWJ1dGlvblByb3BzPiA9ICh7XG4gIHNob3dCYXNlTWFwTGliTG9nbyA9IHRydWUsXG4gIHNob3dPc21CYXNlbWFwQXR0cmlidXRpb24gPSBmYWxzZSxcbiAgZGF0YXNldEF0dHJpYnV0aW9ucyxcbiAgYmFzZU1hcExpYnJhcnlDb25maWdcbn06IEF0dHJpYnV0aW9uUHJvcHMpID0+IHtcbiAgY29uc3QgaXNQYWxtID0gaGFzTW9iaWxlV2lkdGgoYnJlYWtQb2ludFZhbHVlcyk7XG5cbiAgY29uc3QgbWVtb2l6ZWRDb21wb25lbnRzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFzaG93QmFzZU1hcExpYkxvZ28pIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRBdHRyaWJ1dGlvblxuICAgICAgICAgIG1hcExpYkNzc0NsYXNzPXtiYXNlTWFwTGlicmFyeUNvbmZpZy5tYXBMaWJDc3NDbGFzc31cbiAgICAgICAgICBtYXBMaWJBdHRyaWJ1dGlvbkNzc0NsYXNzPXtiYXNlTWFwTGlicmFyeUNvbmZpZy5tYXBMaWJBdHRyaWJ1dGlvbkNzc0NsYXNzfVxuICAgICAgICA+XG4gICAgICAgICAgPEVuZEhvcml6b250YWxGbGV4Ym94PlxuICAgICAgICAgICAgPERhdGFzZXRBdHRyaWJ1dGlvbnMgZGF0YXNldEF0dHJpYnV0aW9ucz17ZGF0YXNldEF0dHJpYnV0aW9uc30gaXNQYWxtPXtpc1BhbG19IC8+XG4gICAgICAgICAgICB7c2hvd09zbUJhc2VtYXBBdHRyaWJ1dGlvbiA/IChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhdHRyaXRpb24tbGlua1wiPlxuICAgICAgICAgICAgICAgIHtkYXRhc2V0QXR0cmlidXRpb25zPy5sZW5ndGggPyA8c3BhbiBjbGFzc05hbWU9XCJwaXBlLXNlcGFyYXRvclwiPnw8L3NwYW4+IDogbnVsbH1cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgaHJlZj1cImh0dHA6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvY29weXJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICDCqSBPcGVuU3RyZWV0TWFwXG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvRW5kSG9yaXpvbnRhbEZsZXhib3g+XG4gICAgICAgIDwvU3R5bGVkQXR0cmlidXRpb24+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkQXR0cmlidXRpb25cbiAgICAgICAgbWFwTGliQ3NzQ2xhc3M9e2Jhc2VNYXBMaWJyYXJ5Q29uZmlnLm1hcExpYkNzc0NsYXNzfVxuICAgICAgICBtYXBMaWJBdHRyaWJ1dGlvbkNzc0NsYXNzPXtiYXNlTWFwTGlicmFyeUNvbmZpZy5tYXBMaWJBdHRyaWJ1dGlvbkNzc0NsYXNzfVxuICAgICAgPlxuICAgICAgICA8RW5kSG9yaXpvbnRhbEZsZXhib3g+XG4gICAgICAgICAgPERhdGFzZXRBdHRyaWJ1dGlvbnMgZGF0YXNldEF0dHJpYnV0aW9ucz17ZGF0YXNldEF0dHJpYnV0aW9uc30gaXNQYWxtPXtpc1BhbG19IC8+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhdHRyaXRpb24tbGlua1wiPlxuICAgICAgICAgICAge2RhdGFzZXRBdHRyaWJ1dGlvbnM/Lmxlbmd0aCA/IDxzcGFuIGNsYXNzTmFtZT1cInBpcGUtc2VwYXJhdG9yXCI+fDwvc3Bhbj4gOiBudWxsfVxuICAgICAgICAgICAge2lzUGFsbSA/IDxNYXBMaWJMb2dvIGJhc2VNYXBMaWJyYXJ5Q29uZmlnPXtiYXNlTWFwTGlicmFyeUNvbmZpZ30gLz4gOiBudWxsfVxuICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8va2VwbGVyLmdsL3BvbGljeS9cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgICAgICAgIMKpIGtlcGxlci5nbCB8eycgJ31cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIHshaXNQYWxtID8gPE1hcExpYkxvZ28gYmFzZU1hcExpYnJhcnlDb25maWc9e2Jhc2VNYXBMaWJyYXJ5Q29uZmlnfSAvPiA6IG51bGx9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvRW5kSG9yaXpvbnRhbEZsZXhib3g+XG4gICAgICA8L1N0eWxlZEF0dHJpYnV0aW9uPlxuICAgICk7XG4gIH0sIFtcbiAgICBzaG93QmFzZU1hcExpYkxvZ28sXG4gICAgc2hvd09zbUJhc2VtYXBBdHRyaWJ1dGlvbixcbiAgICBkYXRhc2V0QXR0cmlidXRpb25zLFxuICAgIGlzUGFsbSxcbiAgICBiYXNlTWFwTGlicmFyeUNvbmZpZ1xuICBdKTtcblxuICByZXR1cm4gbWVtb2l6ZWRDb21wb25lbnRzO1xufTtcblxuTWFwQ29udGFpbmVyRmFjdG9yeS5kZXBzID0gW01hcFBvcG92ZXJGYWN0b3J5LCBNYXBDb250cm9sRmFjdG9yeSwgRWRpdG9yRmFjdG9yeV07XG5cbnR5cGUgTWFwYm94U3R5bGUgPSBzdHJpbmcgfCBvYmplY3QgfCB1bmRlZmluZWQ7XG50eXBlIFByb3BTZWxlY3RvcjxSPiA9IFNlbGVjdG9yPE1hcENvbnRhaW5lclByb3BzLCBSPjtcblxuZXhwb3J0IGludGVyZmFjZSBNYXBDb250YWluZXJQcm9wcyB7XG4gIHZpc1N0YXRlOiBWaXNTdGF0ZTtcbiAgbWFwU3RhdGU6IE1hcFN0YXRlO1xuICBtYXBDb250cm9sczogTWFwQ29udHJvbHM7XG4gIG1hcFN0eWxlOiB7Ym90dG9tTWFwU3R5bGU/OiBNYXBib3hTdHlsZTsgdG9wTWFwU3R5bGU/OiBNYXBib3hTdHlsZX0gJiBNYXBTdHlsZTtcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHN0cmluZztcbiAgbWFwYm94QXBpVXJsOiBzdHJpbmc7XG4gIHZpc1N0YXRlQWN0aW9uczogdHlwZW9mIFZpc1N0YXRlQWN0aW9ucztcbiAgbWFwU3RhdGVBY3Rpb25zOiB0eXBlb2YgTWFwU3RhdGVBY3Rpb25zO1xuICB1aVN0YXRlQWN0aW9uczogdHlwZW9mIFVJU3RhdGVBY3Rpb25zO1xuXG4gIC8vIG9wdGlvbmFsXG4gIHByaW1hcnk/OiBib29sZWFuOyAvLyBwcmltYXJ5IG9uZSB3aWxsIGJlIHJlcG9ydGluZyBpdHMgc2l6ZSB0byBhcHBTdGF0ZVxuICByZWFkT25seT86IGJvb2xlYW47XG4gIGlzRXhwb3J0PzogYm9vbGVhbjtcbiAgLy8gb25NYXBTdHlsZUxvYWRlZD86IChtYXA6IG1hcGxpYnJlZ2wuTWFwIHwgUmV0dXJuVHlwZTxNYXBSZWZbJ2dldE1hcCddPiB8IG51bGwpID0+IHZvaWQ7XG4gIG9uTWFwU3R5bGVMb2FkZWQ/OiAobWFwOiBHZXRNYXBSZWYgfCBudWxsKSA9PiB2b2lkO1xuICBvbk1hcFJlbmRlcj86IChtYXA6IEdldE1hcFJlZiB8IG51bGwpID0+IHZvaWQ7XG4gIGdldE1hcGJveFJlZj86IChtYXBib3g/OiBNYXBSZWYgfCBudWxsLCBpbmRleD86IG51bWJlcikgPT4gdm9pZDtcbiAgaW5kZXg/OiBudW1iZXI7XG4gIGRlbGV0ZU1hcExhYmVscz86IChjb250YWluZXJJZDogc3RyaW5nLCBsYXllcklkOiBzdHJpbmcpID0+IHZvaWQ7XG4gIGNvbnRhaW5lcklkPzogbnVtYmVyO1xuXG4gIGlzTG9hZGluZ0luZGljYXRvclZpc2libGU/OiBib29sZWFuO1xuICBhY3RpdmVTaWRlUGFuZWw6IHN0cmluZyB8IG51bGw7XG4gIHNpZGVQYW5lbFdpZHRoPzogbnVtYmVyO1xuXG4gIGxvY2FsZT86IGFueTtcbiAgdGhlbWU/OiBhbnk7XG4gIGVkaXRvcj86IGFueTtcbiAgTWFwQ29tcG9uZW50PzogdHlwZW9mIE1hcDtcbiAgZGVja0dsUHJvcHM/OiBhbnk7XG4gIG9uRGVja0luaXRpYWxpemVkPzogKGE6IGFueSwgYjogYW55KSA9PiB2b2lkO1xuICBvblZpZXdTdGF0ZUNoYW5nZT86ICh2aWV3cG9ydDogVmlld3BvcnQpID0+IHZvaWQ7XG5cbiAgdG9wTWFwQ29udGFpbmVyUHJvcHM6IGFueTtcbiAgYm90dG9tTWFwQ29udGFpbmVyUHJvcHM6IGFueTtcbiAgdHJhbnNmb3JtUmVxdWVzdD86ICh1cmw6IHN0cmluZywgcmVzb3VyY2VUeXBlPzogc3RyaW5nKSA9PiB7dXJsOiBzdHJpbmd9O1xuXG4gIGRhdGFzZXRBdHRyaWJ1dGlvbnM/OiBEYXRhc2V0QXR0cmlidXRpb25bXTtcblxuICBnZW5lcmF0ZU1hcGJveExheWVycz86IHR5cGVvZiBnZW5lcmF0ZU1hcGJveExheWVycztcbiAgZ2VuZXJhdGVEZWNrR0xMYXllcnM/OiB0eXBlb2YgY29tcHV0ZURlY2tMYXllcnM7XG5cbiAgb25Nb3VzZU1vdmU/OiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQgJiB7bG5nTGF0PzogW251bWJlciwgbnVtYmVyXX0pID0+IHZvaWQ7XG5cbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIGRlY2tSZW5kZXJDYWxsYmFja3M/OiB7XG4gICAgb25EZWNrTG9hZD86ICgpID0+IHZvaWQ7XG4gICAgb25EZWNrUmVuZGVyPzogKGRlY2tQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbDtcbiAgICBvbkRlY2tBZnRlclJlbmRlcj86IChkZWNrUHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBhbnk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1hcENvbnRhaW5lckZhY3RvcnkoXG4gIE1hcFBvcG92ZXI6IFJldHVyblR5cGU8dHlwZW9mIE1hcFBvcG92ZXJGYWN0b3J5PixcbiAgTWFwQ29udHJvbDogUmV0dXJuVHlwZTx0eXBlb2YgTWFwQ29udHJvbEZhY3Rvcnk+LFxuICBFZGl0b3I6IFJldHVyblR5cGU8dHlwZW9mIEVkaXRvckZhY3Rvcnk+XG4pOiBSZWFjdC5Db21wb25lbnRUeXBlPE1hcENvbnRhaW5lclByb3BzPiB7XG4gIGNsYXNzIE1hcENvbnRhaW5lciBleHRlbmRzIENvbXBvbmVudDxNYXBDb250YWluZXJQcm9wcz4ge1xuICAgIGRpc3BsYXlOYW1lID0gJ01hcENvbnRhaW5lcic7XG5cbiAgICBzdGF0aWMgY29udGV4dFR5cGUgPSBNYXBWaWV3U3RhdGVDb250ZXh0O1xuXG4gICAgZGVjbGFyZSBjb250ZXh0OiBSZWFjdC5Db250ZXh0VHlwZTx0eXBlb2YgTWFwVmlld1N0YXRlQ29udGV4dD47XG5cbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgTWFwQ29tcG9uZW50OiBNYXAsXG4gICAgICBkZWNrR2xQcm9wczoge30sXG4gICAgICBpbmRleDogMCxcbiAgICAgIHByaW1hcnk6IHRydWVcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgIHN1cGVyKHByb3BzKTtcbiAgICB9XG5cbiAgICBzdGF0ZSA9IHtcbiAgICAgIC8vIERldGVybWluZXMgd2hldGhlciBhdHRyaWJ1dGlvbiBzaG91bGQgYmUgdmlzaWJsZSBiYXNlZCB0aGUgcmVzdWx0IG9mIGxvYWRpbmcgdGhlIG1hcCBzdHlsZVxuICAgICAgc2hvd0Jhc2VNYXBBdHRyaWJ1dGlvbjogdHJ1ZVxuICAgIH07XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIGlmICghdGhpcy5fcmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgb2JzZXJ2ZURpbWVuc2lvbnModGhpcy5fcmVmLmN1cnJlbnQsIHRoaXMuX2hhbmRsZVJlc2l6ZSk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICAvLyB1bmJpbmQgbWFwYm94Z2wgZXZlbnQgbGlzdGVuZXJcbiAgICAgIGlmICh0aGlzLl9tYXApIHtcbiAgICAgICAgdGhpcy5fbWFwPy5vZmYoTUFQQk9YR0xfU1RZTEVfVVBEQVRFLCBub3ApO1xuICAgICAgICB0aGlzLl9tYXA/Lm9mZihNQVBCT1hHTF9SRU5ERVIsIG5vcCk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuX3JlZi5jdXJyZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHVub2JzZXJ2ZURpbWVuc2lvbnModGhpcy5fcmVmLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIF9kZWNrOiBhbnkgPSBudWxsO1xuICAgIF9tYXA6IEdldE1hcFJlZiB8IG51bGwgPSBudWxsO1xuICAgIF9yZWYgPSBjcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG4gICAgX2RlY2tHTEVycm9yc0VsYXBzZWQ6IHtbaWQ6IHN0cmluZ106IG51bWJlcn0gPSB7fTtcblxuICAgIHByZXZpb3VzTGF5ZXJzID0ge1xuICAgICAgLy8gW2xheWVycy5pZF06IG1hcGJveExheWVyQ29uZmlnXG4gICAgfTtcblxuICAgIF9oYW5kbGVSZXNpemUgPSBkaW1lbnNpb25zID0+IHtcbiAgICAgIGNvbnN0IHtwcmltYXJ5LCBpbmRleH0gPSB0aGlzLnByb3BzO1xuICAgICAgaWYgKHByaW1hcnkpIHtcbiAgICAgICAgY29uc3Qge21hcFN0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAoZGltZW5zaW9ucyAmJiBkaW1lbnNpb25zLndpZHRoID4gMCAmJiBkaW1lbnNpb25zLmhlaWdodCA+IDApIHtcbiAgICAgICAgICBtYXBTdGF0ZUFjdGlvbnMudXBkYXRlTWFwKGRpbWVuc2lvbnMsIGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBsYXllcnNTZWxlY3RvcjogUHJvcFNlbGVjdG9yPFZpc1N0YXRlWydsYXllcnMnXT4gPSBwcm9wcyA9PiBwcm9wcy52aXNTdGF0ZS5sYXllcnM7XG4gICAgbGF5ZXJEYXRhU2VsZWN0b3I6IFByb3BTZWxlY3RvcjxWaXNTdGF0ZVsnbGF5ZXJzJ10+ID0gcHJvcHMgPT4gcHJvcHMudmlzU3RhdGUubGF5ZXJEYXRhO1xuICAgIHNwbGl0TWFwU2VsZWN0b3I6IFByb3BTZWxlY3RvcjxTcGxpdE1hcFtdPiA9IHByb3BzID0+IHByb3BzLnZpc1N0YXRlLnNwbGl0TWFwcztcbiAgICBzcGxpdE1hcEluZGV4U2VsZWN0b3I6IFByb3BTZWxlY3RvcjxudW1iZXIgfCB1bmRlZmluZWQ+ID0gcHJvcHMgPT4gcHJvcHMuaW5kZXg7XG4gICAgbWFwTGF5ZXJzU2VsZWN0b3I6IFByb3BTZWxlY3RvcjxTcGxpdE1hcExheWVycyB8IG51bGwgfCB1bmRlZmluZWQ+ID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLnNwbGl0TWFwU2VsZWN0b3IsXG4gICAgICB0aGlzLnNwbGl0TWFwSW5kZXhTZWxlY3RvcixcbiAgICAgIGdldE1hcExheWVyc0Zyb21TcGxpdE1hcHNcbiAgICApO1xuICAgIGxheWVyT3JkZXJTZWxlY3RvcjogUHJvcFNlbGVjdG9yPFZpc1N0YXRlWydsYXllck9yZGVyJ10+ID0gcHJvcHMgPT4gcHJvcHMudmlzU3RhdGUubGF5ZXJPcmRlcjtcbiAgICBsYXllcnNUb1JlbmRlclNlbGVjdG9yOiBQcm9wU2VsZWN0b3I8TGF5ZXJzVG9SZW5kZXI+ID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllckRhdGFTZWxlY3RvcixcbiAgICAgIHRoaXMubWFwTGF5ZXJzU2VsZWN0b3IsXG4gICAgICBwcmVwYXJlTGF5ZXJzVG9SZW5kZXJcbiAgICApO1xuICAgIGxheWVyc0ZvckRlY2tTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5sYXllcnNTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJEYXRhU2VsZWN0b3IsXG4gICAgICBwcmVwYXJlTGF5ZXJzRm9yRGVja1xuICAgICk7XG4gICAgZmlsdGVyc1NlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMudmlzU3RhdGUuZmlsdGVycztcbiAgICBwb2x5Z29uRmlsdGVyc1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IodGhpcy5maWx0ZXJzU2VsZWN0b3IsIGZpbHRlcnMgPT5cbiAgICAgIGZpbHRlcnMuZmlsdGVyKGYgPT4gZi50eXBlID09PSBGSUxURVJfVFlQRVMucG9seWdvbiAmJiBmLmVuYWJsZWQgIT09IGZhbHNlKVxuICAgICk7XG4gICAgZmVhdHVyZXNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLnZpc1N0YXRlLmVkaXRvci5mZWF0dXJlcztcbiAgICBzZWxlY3RlZEZlYXR1cmVTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLnZpc1N0YXRlLmVkaXRvci5zZWxlY3RlZEZlYXR1cmU7XG4gICAgZmVhdHVyZUNvbGxlY3Rpb25TZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5wb2x5Z29uRmlsdGVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5mZWF0dXJlc1NlbGVjdG9yLFxuICAgICAgKHBvbHlnb25GaWx0ZXJzLCBmZWF0dXJlcykgPT4gKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgICAgZmVhdHVyZXM6IGZlYXR1cmVzLmNvbmNhdChwb2x5Z29uRmlsdGVycy5tYXAoZiA9PiBmLnZhbHVlKSlcbiAgICAgIH0pXG4gICAgKTtcbiAgICAvLyBAdHMtaWdub3JlIC0gTm8gb3ZlcmxvYWQgbWF0Y2hlcyB0aGlzIGNhbGxcbiAgICBzZWxlY3RlZFBvbHlnb25JbmRleFNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uU2VsZWN0b3IsXG4gICAgICB0aGlzLnNlbGVjdGVkRmVhdHVyZVNlbGVjdG9yLFxuICAgICAgKGNvbGxlY3Rpb24sIHNlbGVjdGVkRmVhdHVyZSkgPT5cbiAgICAgICAgY29sbGVjdGlvbi5mZWF0dXJlcy5maW5kSW5kZXgoZiA9PiBmLmlkID09PSBzZWxlY3RlZEZlYXR1cmU/LmlkKVxuICAgICk7XG4gICAgc2VsZWN0ZWRGZWF0dXJlSW5kZXhBcnJheVNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICAodmFsdWU6IG51bWJlcikgPT4gdmFsdWUsXG4gICAgICB2YWx1ZSA9PiB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA8IDAgPyBbXSA6IFt2YWx1ZV07XG4gICAgICB9XG4gICAgKTtcblxuICAgIGdlbmVyYXRlTWFwYm94TGF5ZXJNZXRob2RTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmdlbmVyYXRlTWFwYm94TGF5ZXJzID8/IGdlbmVyYXRlTWFwYm94TGF5ZXJzO1xuXG4gICAgbWFwYm94TGF5ZXJzU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMubGF5ZXJzU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyRGF0YVNlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllck9yZGVyU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyc1RvUmVuZGVyU2VsZWN0b3IsXG4gICAgICB0aGlzLmdlbmVyYXRlTWFwYm94TGF5ZXJNZXRob2RTZWxlY3RvcixcbiAgICAgIChsYXllciwgbGF5ZXJEYXRhLCBsYXllck9yZGVyLCBsYXllcnNUb1JlbmRlciwgZ2VuZXJhdGVNYXBib3hMYXllck1ldGhvZCkgPT5cbiAgICAgICAgZ2VuZXJhdGVNYXBib3hMYXllck1ldGhvZChsYXllciwgbGF5ZXJEYXRhLCBsYXllck9yZGVyLCBsYXllcnNUb1JlbmRlcilcbiAgICApO1xuXG4gICAgLy8gbWVyZ2UgaW4gYSBiYWNrZ3JvdW5kLWNvbG9yIHN0eWxlIGlmIHRoZSBiYXNlbWFwIGNob2ljZSBpcyBOT19NQVBfSURcbiAgICAvLyB1c2VkIGJ5IDxTdHlsZWRNYXA+IGlubGluZSBzdHlsZSBwcm9wXG4gICAgbWFwU3R5bGVUeXBlU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5tYXBTdHlsZS5zdHlsZVR5cGU7XG4gICAgbWFwU3R5bGVCYWNrZ3JvdW5kQ29sb3JTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLm1hcFN0eWxlLmJhY2tncm91bmRDb2xvcjtcbiAgICBzdHlsZVNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLm1hcFN0eWxlVHlwZVNlbGVjdG9yLFxuICAgICAgdGhpcy5tYXBTdHlsZUJhY2tncm91bmRDb2xvclNlbGVjdG9yLFxuICAgICAgKHN0eWxlVHlwZSwgYmFja2dyb3VuZENvbG9yKSA9PiAoe1xuICAgICAgICAuLi5NQVBfU1RZTEUuY29udGFpbmVyLFxuICAgICAgICAuLi4oc3R5bGVUeXBlID09PSBOT19NQVBfSUQgPyB7YmFja2dyb3VuZENvbG9yOiByZ2JUb0hleChiYWNrZ3JvdW5kQ29sb3IpfSA6IHt9KVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgLyogY29tcG9uZW50IHByaXZhdGUgZnVuY3Rpb25zICovXG4gICAgX29uQ2xvc2VNYXBQb3BvdmVyID0gKCkgPT4ge1xuICAgICAgdGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMub25MYXllckNsaWNrKG51bGwpO1xuICAgIH07XG5cbiAgICBfb25MYXllckhvdmVyID0gKF9pZHg6IG51bWJlciwgaW5mbzogUGlja0luZm88YW55PiB8IG51bGwpID0+IHtcbiAgICAgIHRoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLm9uTGF5ZXJIb3ZlcihpbmZvLCB0aGlzLnByb3BzLmluZGV4KTtcbiAgICB9O1xuXG4gICAgX29uTGF5ZXJTZXREb21haW4gPSAoXG4gICAgICBpZHg6IG51bWJlcixcbiAgICAgIHZhbHVlOiB7ZG9tYWluOiBWaXN1YWxDaGFubmVsRG9tYWluOyBhZ2dyZWdhdGVkQmluczogQWdncmVnYXRlZEJpbltdfVxuICAgICkgPT4ge1xuICAgICAgdGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMubGF5ZXJDb25maWdDaGFuZ2UodGhpcy5wcm9wcy52aXNTdGF0ZS5sYXllcnNbaWR4XSwge1xuICAgICAgICBjb2xvckRvbWFpbjogdmFsdWUuZG9tYWluLFxuICAgICAgICBhZ2dyZWdhdGVkQmluczogdmFsdWUuYWdncmVnYXRlZEJpbnNcbiAgICAgIH0gYXMgUGFydGlhbDxMYXllckJhc2VDb25maWc+KTtcbiAgICB9O1xuXG4gICAgX29uTGF5ZXJGaWx0ZXJlZEl0ZW1zQ2hhbmdlID0gKGlkeCwgZXZlbnQpID0+IHtcbiAgICAgIHRoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLmxheWVyRmlsdGVyZWRJdGVtc0NoYW5nZSh0aGlzLnByb3BzLnZpc1N0YXRlLmxheWVyc1tpZHhdLCBldmVudCk7XG4gICAgfTtcblxuICAgIF9oYW5kbGVNYXBUb2dnbGVMYXllciA9IGxheWVySWQgPT4ge1xuICAgICAgY29uc3Qge2luZGV4OiBtYXBJbmRleCA9IDAsIHZpc1N0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuICAgICAgdmlzU3RhdGVBY3Rpb25zLnRvZ2dsZUxheWVyRm9yTWFwKG1hcEluZGV4LCBsYXllcklkKTtcbiAgICB9O1xuXG4gICAgX29uTWFwYm94U3R5bGVVcGRhdGUgPSB1cGRhdGUgPT4ge1xuICAgICAgLy8gZm9yY2UgcmVmcmVzaCBtYXBib3hnbCBsYXllcnNcbiAgICAgIHRoaXMucHJldmlvdXNMYXllcnMgPSB7fTtcbiAgICAgIHRoaXMuX3VwZGF0ZU1hcGJveExheWVycygpO1xuXG4gICAgICBpZiAodXBkYXRlICYmIHVwZGF0ZS5zdHlsZSkge1xuICAgICAgICAvLyBObyBhdHRyaWJ1dGlvbnMgYXJlIG5lZWRlZCBpZiB0aGUgc3R5bGUgZG9lc24ndCByZWZlcmVuY2UgTWFwYm94IHNvdXJjZXNcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgc2hvd0Jhc2VNYXBBdHRyaWJ1dGlvbjpcbiAgICAgICAgICAgIGlzU3R5bGVVc2luZ01hcGJveFRpbGVzKHVwZGF0ZS5zdHlsZSkgfHwgIWlzU3R5bGVVc2luZ09wZW5TdHJlZXRNYXBUaWxlcyh1cGRhdGUuc3R5bGUpXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25NYXBTdHlsZUxvYWRlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnByb3BzLm9uTWFwU3R5bGVMb2FkZWQodGhpcy5fbWFwKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3NldE1hcFJlZiA9IG1hcFJlZiA9PiB7XG4gICAgICAvLyBIYW5kbGUgY2hhbmdlIG9mIHRoZSBtYXAgbGlicmFyeVxuICAgICAgaWYgKHRoaXMuX21hcCAmJiBtYXBSZWYpIHtcbiAgICAgICAgY29uc3QgbWFwID0gbWFwUmVmLmdldE1hcCgpO1xuICAgICAgICBpZiAobWFwICYmIHRoaXMuX21hcCAhPT0gbWFwKSB7XG4gICAgICAgICAgdGhpcy5fbWFwPy5vZmYoTUFQQk9YR0xfU1RZTEVfVVBEQVRFLCBub3ApO1xuICAgICAgICAgIHRoaXMuX21hcD8ub2ZmKE1BUEJPWEdMX1JFTkRFUiwgbm9wKTtcbiAgICAgICAgICB0aGlzLl9tYXAgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5fbWFwICYmIG1hcFJlZikge1xuICAgICAgICB0aGlzLl9tYXAgPSBtYXBSZWYuZ2V0TWFwKCk7XG4gICAgICAgIC8vIGkgbm90aWNlZCBpbiBjZXJ0YWluIGNvbnRleHQgd2UgZG9uJ3QgYWNjZXNzIHRoZSBhY3R1YWwgbWFwIGVsZW1lbnRcbiAgICAgICAgaWYgKCF0aGlzLl9tYXApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gYmluZCBtYXBib3hnbCBldmVudCBsaXN0ZW5lclxuICAgICAgICB0aGlzLl9tYXAub24oTUFQQk9YR0xfU1RZTEVfVVBEQVRFLCB0aGlzLl9vbk1hcGJveFN0eWxlVXBkYXRlKTtcblxuICAgICAgICB0aGlzLl9tYXAub24oTUFQQk9YR0xfUkVOREVSLCAoKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uTWFwUmVuZGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uTWFwUmVuZGVyKHRoaXMuX21hcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucHJvcHMuZ2V0TWFwYm94UmVmKSB7XG4gICAgICAgIC8vIFRoZSBwYXJlbnQgY29tcG9uZW50IGNhbiBnYWluIGFjY2VzcyB0byBvdXIgTWFwYm94R2xNYXAgYnlcbiAgICAgICAgLy8gcHJvdmlkaW5nIHRoaXMgY2FsbGJhY2suIE5vdGUgdGhhdCAnbWFwYm94JyB3aWxsIGJlIG51bGwgd2hlbiB0aGVcbiAgICAgICAgLy8gcmVmIGlzIHVuc2V0IChlLmcuIHdoZW4gYSBzcGxpdCBtYXAgaXMgY2xvc2VkKS5cbiAgICAgICAgdGhpcy5wcm9wcy5nZXRNYXBib3hSZWYobWFwUmVmLCB0aGlzLnByb3BzLmluZGV4KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX29uRGVja0luaXRpYWxpemVkKGdsKSB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5vbkRlY2tJbml0aWFsaXplZCkge1xuICAgICAgICB0aGlzLnByb3BzLm9uRGVja0luaXRpYWxpemVkKHRoaXMuX2RlY2ssIGdsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAxKSBBbGxvdyBlZmZlY3RzIG9ubHkgZm9yIHRoZSBmaXJzdCB2aWV3LlxuICAgICAqIDIpIFByZXZlbnQgZWZmZWN0OnByZVJlbmRlciBjYWxsIHdpdGhvdXQgdmFsaWQgZ2VuZXJhdGVkIHZpZXdwb3J0cy5cbiAgICAgKiBAcGFyYW0gdmlld0luZGV4IFZpZXcgaW5kZXguXG4gICAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIGVmZmVjdHMgY2FuIGJlIHVzZWQuXG4gICAgICovXG4gICAgX2lzT0tUb1JlbmRlckVmZmVjdHModmlld0luZGV4PzogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gIXZpZXdJbmRleCAmJiBCb29sZWFuKHRoaXMuX2RlY2s/LnZpZXdNYW5hZ2VyPy5fdmlld3BvcnRzPy5sZW5ndGgpO1xuICAgIH1cblxuICAgIF9vbkJlZm9yZVJlbmRlciA9ICh7Z2x9KSA9PiB7XG4gICAgICBzZXRMYXllckJsZW5kaW5nKGdsLCB0aGlzLnByb3BzLnZpc1N0YXRlLmxheWVyQmxlbmRpbmcpO1xuICAgIH07XG5cbiAgICBfb25EZWNrRXJyb3IgPSAoZXJyb3IsIGxheWVyKSA9PiB7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvcj8ubWVzc2FnZSB8fCAndW5rbm93bi1lcnJvcic7XG4gICAgICBjb25zdCBsYXllck1lc3NhZ2UgPSBsYXllcj8uaWQgPyBgIGluICR7bGF5ZXIuaWR9IGxheWVyYCA6ICcnO1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlRnVsbCA9XG4gICAgICAgIGVycm9yTWVzc2FnZSA9PT0gJ1dlYkdMIGNvbnRleHQgaXMgbG9zdCdcbiAgICAgICAgICA/ICdZb3VyIEdQVSB3YXMgZGlzY29ubmVjdGVkLiBUaGlzIGNhbiBoYXBwZW4gaWYgeW91ciBjb21wdXRlciBnb2VzIHRvIHNsZWVwLiBJdCBjYW4gYWxzbyBvY2N1ciBmb3Igb3RoZXIgcmVhc29ucywgc3VjaCBhcyBpZiB5b3UgYXJlIHJ1bm5pbmcgdG9vIG1hbnkgR1BVIGFwcGxpY2F0aW9ucy4nXG4gICAgICAgICAgOiBgQW4gZXJyb3IgaW4gZGVjay5nbDogJHtlcnJvck1lc3NhZ2V9JHtsYXllck1lc3NhZ2V9LmA7XG5cbiAgICAgIC8vIFRocm90dGxlIGVycm9yIG5vdGlmaWNhdGlvbnMsIGFzIFJlYWN0IGRvZXNuJ3QgbGlrZSB0b28gbWFueSBzdGF0ZSBjaGFuZ2VzIGZyb20gaGVyZS5cbiAgICAgIGNvbnN0IGxhc3RTaG93biA9IHRoaXMuX2RlY2tHTEVycm9yc0VsYXBzZWRbZXJyb3JNZXNzYWdlRnVsbF07XG4gICAgICBpZiAoIWxhc3RTaG93biB8fCBsYXN0U2hvd24gPCBEYXRlLm5vdygpIC0gVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUUpIHtcbiAgICAgICAgdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZFtlcnJvck1lc3NhZ2VGdWxsXSA9IERhdGUubm93KCk7XG5cbiAgICAgICAgLy8gTWFyayBsYXllciBhcyBpbnZhbGlkXG4gICAgICAgIGxldCBleHRyYUxheWVyTWVzc2FnZSA9ICcnO1xuICAgICAgICBjb25zdCB7dmlzU3RhdGVBY3Rpb25zfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmIChsYXllcikge1xuICAgICAgICAgIGxldCB0b3BNb3N0TGF5ZXIgPSBsYXllcjtcbiAgICAgICAgICB3aGlsZSAodG9wTW9zdExheWVyLnBhcmVudCkge1xuICAgICAgICAgICAgdG9wTW9zdExheWVyID0gdG9wTW9zdExheWVyLnBhcmVudDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRvcE1vc3RMYXllci5wcm9wcz8uaWQpIHtcbiAgICAgICAgICAgIHZpc1N0YXRlQWN0aW9ucy5sYXllclNldElzVmFsaWQodG9wTW9zdExheWVyLCBmYWxzZSk7XG4gICAgICAgICAgICBleHRyYUxheWVyTWVzc2FnZSA9ICdUaGUgbGF5ZXIgaGFzIGJlZW4gZGlzYWJsZWQgYW5kIGhpZ2hsaWdodGVkLic7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIG5ldyBlcnJvciBub3RpZmljYXRpb24gb3IgdXBkYXRlIGV4aXN0aW5nIG9uZSB3aXRoIHNhbWUgaWQuXG4gICAgICAgIC8vIFVwZGF0ZSBpcyByZXF1aXJlZCB0byBwcmVzZXJ2ZSB0aGUgb3JkZXIgb2Ygbm90aWZpY2F0aW9ucyBhcyB0aGV5IHByb2JhYmx5IGFyZSBnb2luZyB0byBcImp1bXBcIiBiYXNlZCBvbiBvcmRlciBvZiBlcnJvcnMuXG4gICAgICAgIGNvbnN0IHt1aVN0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuICAgICAgICB1aVN0YXRlQWN0aW9ucy5hZGROb3RpZmljYXRpb24oXG4gICAgICAgICAgZXJyb3JOb3RpZmljYXRpb24oe1xuICAgICAgICAgICAgbWVzc2FnZTogYCR7ZXJyb3JNZXNzYWdlRnVsbH0gJHtleHRyYUxheWVyTWVzc2FnZX1gLFxuICAgICAgICAgICAgaWQ6IGVycm9yTWVzc2FnZUZ1bGwgLy8gdHJlYXQgdGhlIGVycm9yIG1lc3NhZ2UgYXMgaWRcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvKiBjb21wb25lbnQgcmVuZGVyIGZ1bmN0aW9ucyAqL1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuICAgIF9yZW5kZXJNYXBQb3BvdmVyKCkge1xuICAgICAgLy8gdGhpcyBjaGVjayBpcyBmb3IgbGltaXRpbmcgdGhlIGRpc3BsYXkgb2YgdGhlIGA8TWFwUG9wb3Zlcj5gIHRvIHRoZSBgPE1hcENvbnRhaW5lcj5gIHRoZSB1c2VyIGlzIGludGVyYWN0aW5nIHdpdGhcbiAgICAgIC8vIHRoZSBEZWNrR0wgb25Ib3ZlciBldmVudCBoYW5kbGVyIGFkZHMgYSBgbWFwSW5kZXhgIHByb3BlcnR5IHdoaWNoIGlzIGF2YWlsYWJsZSBpbiB0aGUgYGhvdmVySW5mb2Agb2JqZWN0IG9mIGB2aXNTdGF0ZWBcbiAgICAgIGlmICh0aGlzLnByb3BzLmluZGV4ICE9PSB0aGlzLnByb3BzLnZpc1N0YXRlLmhvdmVySW5mbz8ubWFwSW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIFRPRE86IG1vdmUgdGhpcyBpbnRvIHJlZHVjZXIgc28gaXQgY2FuIGJlIHRlc3RlZFxuICAgICAgY29uc3Qge1xuICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgdmlzU3RhdGU6IHtcbiAgICAgICAgICBob3ZlckluZm8sXG4gICAgICAgICAgY2xpY2tlZCxcbiAgICAgICAgICBkYXRhc2V0cyxcbiAgICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAgICAgICBhbmltYXRpb25Db25maWcsXG4gICAgICAgICAgbGF5ZXJzLFxuICAgICAgICAgIG1vdXNlUG9zOiB7bW91c2VQb3NpdGlvbiwgY29vcmRpbmF0ZSwgcGlubmVkfVxuICAgICAgICB9XG4gICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IGxheWVyc1RvUmVuZGVyID0gdGhpcy5sYXllcnNUb1JlbmRlclNlbGVjdG9yKHRoaXMucHJvcHMpO1xuXG4gICAgICBpZiAoIW1vdXNlUG9zaXRpb24gfHwgIWludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxheWVySG92ZXJQcm9wID0gZ2V0TGF5ZXJIb3ZlclByb3Aoe1xuICAgICAgICBhbmltYXRpb25Db25maWcsXG4gICAgICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgICAgICBob3ZlckluZm8sXG4gICAgICAgIGxheWVycyxcbiAgICAgICAgbGF5ZXJzVG9SZW5kZXIsXG4gICAgICAgIGRhdGFzZXRzXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgY29tcGFyZU1vZGUgPSBpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwLmNvbmZpZ1xuICAgICAgICA/IGludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAuY29uZmlnLmNvbXBhcmVNb2RlXG4gICAgICAgIDogZmFsc2U7XG5cbiAgICAgIGxldCBwaW5uZWRQb3NpdGlvbiA9IHt4OiAwLCB5OiAwfTtcbiAgICAgIGxldCBsYXllclBpbm5lZFByb3A6IExheWVySG92ZXJQcm9wIHwgbnVsbCA9IG51bGw7XG4gICAgICBpZiAocGlubmVkIHx8IGNsaWNrZWQpIHtcbiAgICAgICAgLy8gcHJvamVjdCBsbmdsYXQgdG8gc2NyZWVuIHNvIHRoYXQgdG9vbHRpcCBmb2xsb3dzIHRoZSBvYmplY3Qgb24gem9vbVxuICAgICAgICBjb25zdCB2aWV3cG9ydCA9IGdldFZpZXdwb3J0RnJvbU1hcFN0YXRlKG1hcFN0YXRlKTtcbiAgICAgICAgY29uc3QgbG5nTGF0ID0gY2xpY2tlZCA/IGNsaWNrZWQuY29vcmRpbmF0ZSA6IHBpbm5lZC5jb29yZGluYXRlO1xuICAgICAgICBwaW5uZWRQb3NpdGlvbiA9IHRoaXMuX2dldEhvdmVyWFkodmlld3BvcnQsIGxuZ0xhdCk7XG4gICAgICAgIGxheWVyUGlubmVkUHJvcCA9IGdldExheWVySG92ZXJQcm9wKHtcbiAgICAgICAgICBhbmltYXRpb25Db25maWcsXG4gICAgICAgICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICAgICAgaG92ZXJJbmZvOiBjbGlja2VkLFxuICAgICAgICAgIGxheWVycyxcbiAgICAgICAgICBsYXllcnNUb1JlbmRlcixcbiAgICAgICAgICBkYXRhc2V0c1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGxheWVySG92ZXJQcm9wICYmIGxheWVyUGlubmVkUHJvcCkge1xuICAgICAgICAgIGxheWVySG92ZXJQcm9wLnByaW1hcnlEYXRhID0gbGF5ZXJQaW5uZWRQcm9wLmRhdGE7XG4gICAgICAgICAgbGF5ZXJIb3ZlclByb3AuY29tcGFyZVR5cGUgPSBpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwLmNvbmZpZy5jb21wYXJlVHlwZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBjb21tb25Qcm9wID0ge1xuICAgICAgICBvbkNsb3NlOiB0aGlzLl9vbkNsb3NlTWFwUG9wb3ZlcixcbiAgICAgICAgem9vbTogbWFwU3RhdGUuem9vbSxcbiAgICAgICAgY29udGFpbmVyOiB0aGlzLl9kZWNrID8gdGhpcy5fZGVjay5jYW52YXMgOiB1bmRlZmluZWRcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxFcnJvckJvdW5kYXJ5PlxuICAgICAgICAgIHtsYXllclBpbm5lZFByb3AgJiYgKFxuICAgICAgICAgICAgPE1hcFBvcG92ZXJcbiAgICAgICAgICAgICAgey4uLnBpbm5lZFBvc2l0aW9ufVxuICAgICAgICAgICAgICB7Li4uY29tbW9uUHJvcH1cbiAgICAgICAgICAgICAgbGF5ZXJIb3ZlclByb3A9e2xheWVyUGlubmVkUHJvcH1cbiAgICAgICAgICAgICAgY29vcmRpbmF0ZT17aW50ZXJhY3Rpb25Db25maWcuY29vcmRpbmF0ZS5lbmFibGVkICYmIChwaW5uZWQgfHwge30pLmNvb3JkaW5hdGV9XG4gICAgICAgICAgICAgIGZyb3plbj17dHJ1ZX1cbiAgICAgICAgICAgICAgaXNCYXNlPXtjb21wYXJlTW9kZX1cbiAgICAgICAgICAgICAgb25TZXRGZWF0dXJlcz17dGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMuc2V0RmVhdHVyZXN9XG4gICAgICAgICAgICAgIHNldFNlbGVjdGVkRmVhdHVyZT17dGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMuc2V0U2VsZWN0ZWRGZWF0dXJlfVxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIEFyZ3VtZW50IG9mIHR5cGUgJ1JlYWRvbmx5PE1hcENvbnRhaW5lclByb3BzPicgaXMgbm90IGFzc2lnbmFibGUgdG8gcGFyYW1ldGVyIG9mIHR5cGUgJ25ldmVyJ1xuICAgICAgICAgICAgICBmZWF0dXJlQ29sbGVjdGlvbj17dGhpcy5mZWF0dXJlQ29sbGVjdGlvblNlbGVjdG9yKHRoaXMucHJvcHMpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtsYXllckhvdmVyUHJvcCAmJiAoIWxheWVyUGlubmVkUHJvcCB8fCBjb21wYXJlTW9kZSkgJiYgKFxuICAgICAgICAgICAgPE1hcFBvcG92ZXJcbiAgICAgICAgICAgICAgeD17bW91c2VQb3NpdGlvblswXX1cbiAgICAgICAgICAgICAgeT17bW91c2VQb3NpdGlvblsxXX1cbiAgICAgICAgICAgICAgey4uLmNvbW1vblByb3B9XG4gICAgICAgICAgICAgIGxheWVySG92ZXJQcm9wPXtsYXllckhvdmVyUHJvcH1cbiAgICAgICAgICAgICAgZnJvemVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgY29vcmRpbmF0ZT17aW50ZXJhY3Rpb25Db25maWcuY29vcmRpbmF0ZS5lbmFibGVkICYmIGNvb3JkaW5hdGV9XG4gICAgICAgICAgICAgIG9uU2V0RmVhdHVyZXM9e3RoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLnNldEZlYXR1cmVzfVxuICAgICAgICAgICAgICBzZXRTZWxlY3RlZEZlYXR1cmU9e3RoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLnNldFNlbGVjdGVkRmVhdHVyZX1cbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBBcmd1bWVudCBvZiB0eXBlICdSZWFkb25seTxNYXBDb250YWluZXJQcm9wcz4nIGlzIG5vdCBhc3NpZ25hYmxlIHRvIHBhcmFtZXRlciBvZiB0eXBlICduZXZlcidcbiAgICAgICAgICAgICAgZmVhdHVyZUNvbGxlY3Rpb249e3RoaXMuZmVhdHVyZUNvbGxlY3Rpb25TZWxlY3Rvcih0aGlzLnByb3BzKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiBlc2xpbnQtZW5hYmxlIGNvbXBsZXhpdHkgKi9cblxuICAgIF9nZXRIb3ZlclhZKHZpZXdwb3J0LCBsbmdMYXQpIHtcbiAgICAgIGNvbnN0IHNjcmVlbkNvb3JkID0gIXZpZXdwb3J0IHx8ICFsbmdMYXQgPyBudWxsIDogdmlld3BvcnQucHJvamVjdChsbmdMYXQpO1xuICAgICAgcmV0dXJuIHNjcmVlbkNvb3JkICYmIHt4OiBzY3JlZW5Db29yZFswXSwgeTogc2NyZWVuQ29vcmRbMV19O1xuICAgIH1cblxuICAgIF9yZW5kZXJEZWNrT3ZlcmxheShcbiAgICAgIGxheWVyc0ZvckRlY2ssXG4gICAgICBvcHRpb25zOiB7cHJpbWFyeU1hcDogYm9vbGVhbjsgaXNJbnRlcmFjdGl2ZT86IGJvb2xlYW47IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlfSA9IHtcbiAgICAgICAgcHJpbWFyeU1hcDogZmFsc2VcbiAgICAgIH1cbiAgICApIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgIHZpc1N0YXRlLFxuICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgdmlzU3RhdGVBY3Rpb25zLFxuICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgbWFwYm94QXBpVXJsLFxuICAgICAgICBkZWNrR2xQcm9wcyxcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIG1hcENvbnRyb2xzLFxuICAgICAgICBkZWNrUmVuZGVyQ2FsbGJhY2tzLFxuICAgICAgICB0aGVtZSxcbiAgICAgICAgZ2VuZXJhdGVEZWNrR0xMYXllcnMsXG4gICAgICAgIG9uTW91c2VNb3ZlXG4gICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgY29uc3Qge2hvdmVySW5mbywgZWRpdG9yfSA9IHZpc1N0YXRlO1xuICAgICAgY29uc3Qge3ByaW1hcnlNYXAsIGlzSW50ZXJhY3RpdmUsIGNoaWxkcmVufSA9IG9wdGlvbnM7XG5cbiAgICAgIC8vIGRpc2FibGUgZG91YmxlIGNsaWNrIHpvb20gd2hlbiBlZGl0b3IgaXMgaW4gYW55IGRyYXcgbW9kZVxuICAgICAgY29uc3Qge21hcERyYXd9ID0gbWFwQ29udHJvbHM7XG4gICAgICBjb25zdCB7YWN0aXZlOiBlZGl0b3JNZW51QWN0aXZlID0gZmFsc2V9ID0gbWFwRHJhdyB8fCB7fTtcbiAgICAgIGNvbnN0IGlzRWRpdG9yRHJhd2luZ01vZGUgPSBFZGl0b3JMYXllclV0aWxzLmlzRHJhd2luZ0FjdGl2ZShlZGl0b3JNZW51QWN0aXZlLCBlZGl0b3IubW9kZSk7XG5cbiAgICAgIGNvbnN0IGludGVybmFsVmlld1N0YXRlID0gdGhpcy5jb250ZXh0Py5nZXRJbnRlcm5hbFZpZXdTdGF0ZShpbmRleCk7XG4gICAgICBjb25zdCBpbnRlcm5hbE1hcFN0YXRlID0gey4uLm1hcFN0YXRlLCAuLi5pbnRlcm5hbFZpZXdTdGF0ZX07XG4gICAgICBjb25zdCB2aWV3cG9ydCA9IGdldFZpZXdwb3J0RnJvbU1hcFN0YXRlKGludGVybmFsTWFwU3RhdGUpO1xuXG4gICAgICBjb25zdCBlZGl0b3JGZWF0dXJlU2VsZWN0ZWRJbmRleCA9IHRoaXMuc2VsZWN0ZWRQb2x5Z29uSW5kZXhTZWxlY3Rvcih0aGlzLnByb3BzKTtcblxuICAgICAgY29uc3Qge3NldEZlYXR1cmVzLCBvbkxheWVyQ2xpY2ssIHNldFNlbGVjdGVkRmVhdHVyZX0gPSB2aXNTdGF0ZUFjdGlvbnM7XG5cbiAgICAgIGNvbnN0IGdlbmVyYXRlRGVja0dMTGF5ZXJzTWV0aG9kID0gZ2VuZXJhdGVEZWNrR0xMYXllcnMgPz8gY29tcHV0ZURlY2tMYXllcnM7XG4gICAgICBjb25zdCBkZWNrR2xMYXllcnMgPSBnZW5lcmF0ZURlY2tHTExheWVyc01ldGhvZChcbiAgICAgICAge1xuICAgICAgICAgIHZpc1N0YXRlLFxuICAgICAgICAgIG1hcFN0YXRlOiBpbnRlcm5hbE1hcFN0YXRlLFxuICAgICAgICAgIG1hcFN0eWxlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBtYXBJbmRleDogaW5kZXgsXG4gICAgICAgICAgcHJpbWFyeU1hcCxcbiAgICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgICAgbGF5ZXJzRm9yRGVjayxcbiAgICAgICAgICBlZGl0b3JJbmZvOiBwcmltYXJ5TWFwXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICAgICAgZWRpdG9yTWVudUFjdGl2ZSxcbiAgICAgICAgICAgICAgICBvblNldEZlYXR1cmVzOiBzZXRGZWF0dXJlcyxcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEZlYXR1cmUsXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBBcmd1bWVudCBvZiB0eXBlICdSZWFkb25seTxNYXBDb250YWluZXJQcm9wcz4nIGlzIG5vdCBhc3NpZ25hYmxlIHRvIHBhcmFtZXRlciBvZiB0eXBlICduZXZlcidcbiAgICAgICAgICAgICAgICBmZWF0dXJlQ29sbGVjdGlvbjogdGhpcy5mZWF0dXJlQ29sbGVjdGlvblNlbGVjdG9yKHRoaXMucHJvcHMpLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZUluZGV4ZXM6IHRoaXMuc2VsZWN0ZWRGZWF0dXJlSW5kZXhBcnJheVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBBcmd1bWVudCBvZiB0eXBlICd1bmtub3duJyBpcyBub3QgYXNzaWduYWJsZSB0byBwYXJhbWV0ZXIgb2YgdHlwZSAnbnVtYmVyJy5cbiAgICAgICAgICAgICAgICAgIGVkaXRvckZlYXR1cmVTZWxlY3RlZEluZGV4XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB2aWV3cG9ydFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgb25MYXllckhvdmVyOiB0aGlzLl9vbkxheWVySG92ZXIsXG4gICAgICAgICAgb25TZXRMYXllckRvbWFpbjogdGhpcy5fb25MYXllclNldERvbWFpbixcbiAgICAgICAgICBvbkZpbHRlcmVkSXRlbXNDaGFuZ2U6IHRoaXMuX29uTGF5ZXJGaWx0ZXJlZEl0ZW1zQ2hhbmdlXG4gICAgICAgIH0sXG4gICAgICAgIGRlY2tHbFByb3BzXG4gICAgICApO1xuXG4gICAgICBjb25zdCBleHRyYURlY2tQYXJhbXM6IHtcbiAgICAgICAgZ2V0VG9vbHRpcD86IChpbmZvOiBhbnkpID0+IG9iamVjdCB8IG51bGw7XG4gICAgICAgIGdldEN1cnNvcj86ICh7aXNEcmFnZ2luZ306IHtpc0RyYWdnaW5nOiBib29sZWFufSkgPT4gc3RyaW5nO1xuICAgICAgfSA9IHt9O1xuICAgICAgaWYgKHByaW1hcnlNYXApIHtcbiAgICAgICAgZXh0cmFEZWNrUGFyYW1zLmdldFRvb2x0aXAgPSBpbmZvID0+XG4gICAgICAgICAgRWRpdG9yTGF5ZXJVdGlscy5nZXRUb29sdGlwKGluZm8sIHtcbiAgICAgICAgICAgIGVkaXRvck1lbnVBY3RpdmUsXG4gICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICB0aGVtZVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGV4dHJhRGVja1BhcmFtcy5nZXRDdXJzb3IgPSAoe2lzRHJhZ2dpbmd9OiB7aXNEcmFnZ2luZzogYm9vbGVhbn0pID0+IHtcbiAgICAgICAgICBjb25zdCBlZGl0b3JDdXJzb3IgPSBFZGl0b3JMYXllclV0aWxzLmdldEN1cnNvcih7XG4gICAgICAgICAgICBlZGl0b3JNZW51QWN0aXZlLFxuICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgaG92ZXJJbmZvXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGVkaXRvckN1cnNvcikgcmV0dXJuIGVkaXRvckN1cnNvcjtcblxuICAgICAgICAgIGlmIChpc0RyYWdnaW5nKSByZXR1cm4gJ2dyYWJiaW5nJztcbiAgICAgICAgICBpZiAoaG92ZXJJbmZvPy5sYXllcikgcmV0dXJuICdwb2ludGVyJztcbiAgICAgICAgICByZXR1cm4gJ2dyYWInO1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlZmZlY3RzID0gdGhpcy5faXNPS1RvUmVuZGVyRWZmZWN0cyhpbmRleClcbiAgICAgICAgPyBjb21wdXRlRGVja0VmZmVjdHMoe3Zpc1N0YXRlLCBtYXBTdGF0ZX0pXG4gICAgICAgIDogW107XG5cbiAgICAgIGNvbnN0IHZpZXdzID0gZGVja0dsUHJvcHM/LnZpZXdzXG4gICAgICAgID8gZGVja0dsUHJvcHM/LnZpZXdzKClcbiAgICAgICAgOiBuZXcgTWFwVmlldyh7bGVnYWN5TWV0ZXJTaXplczogdHJ1ZX0pO1xuXG4gICAgICBsZXQgYWxsRGVja0dsUHJvcHMgPSB7XG4gICAgICAgIC4uLmRlY2tHbFByb3BzLFxuICAgICAgICBwaWNraW5nUmFkaXVzOiBERUZBVUxUX1BJQ0tJTkdfUkFESVVTLFxuICAgICAgICB2aWV3cyxcbiAgICAgICAgbGF5ZXJzOiBkZWNrR2xMYXllcnMsXG4gICAgICAgIGVmZmVjdHNcbiAgICAgIH07XG5cbiAgICAgIGlmICh0eXBlb2YgZGVja1JlbmRlckNhbGxiYWNrcz8ub25EZWNrUmVuZGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGFsbERlY2tHbFByb3BzID0gZGVja1JlbmRlckNhbGxiYWNrcy5vbkRlY2tSZW5kZXIoYWxsRGVja0dsUHJvcHMpO1xuICAgICAgICBpZiAoIWFsbERlY2tHbFByb3BzKSB7XG4gICAgICAgICAgLy8gaWYgb25EZWNrUmVuZGVyIHJldHVybnMgbnVsbCwgZG8gbm90IHJlbmRlciBkZWNrLmdsXG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIHsuLi4oaXNJbnRlcmFjdGl2ZVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgb25Nb3VzZU1vdmU6IHByaW1hcnlNYXBcbiAgICAgICAgICAgICAgICAgID8gZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VNb3ZlPy4oZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29uTW91c2VNb3ZlRGVib3VuY2VkKGV2ZW50LCB2aWV3cG9ydCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDoge3N0eWxlOiB7cG9pbnRlckV2ZW50czogJ25vbmUnfX0pfVxuICAgICAgICA+XG4gICAgICAgICAgPERlY2tHTFxuICAgICAgICAgICAgaWQ9XCJkZWZhdWx0LWRlY2tnbC1vdmVybGF5XCJcbiAgICAgICAgICAgIG9uTG9hZD17KCkgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGRlY2tSZW5kZXJDYWxsYmFja3M/Lm9uRGVja0xvYWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBkZWNrUmVuZGVyQ2FsbGJhY2tzLm9uRGVja0xvYWQoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHsuLi5hbGxEZWNrR2xQcm9wc31cbiAgICAgICAgICAgIGNvbnRyb2xsZXI9e1xuICAgICAgICAgICAgICBpc0ludGVyYWN0aXZlXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIGRvdWJsZUNsaWNrWm9vbTogIWlzRWRpdG9yRHJhd2luZ01vZGUsXG4gICAgICAgICAgICAgICAgICAgIGRyYWdSb3RhdGU6IHRoaXMucHJvcHMubWFwU3RhdGUuZHJhZ1JvdGF0ZVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluaXRpYWxWaWV3U3RhdGU9e2ludGVybmFsVmlld1N0YXRlfVxuICAgICAgICAgICAgb25CZWZvcmVSZW5kZXI9e3RoaXMuX29uQmVmb3JlUmVuZGVyfVxuICAgICAgICAgICAgb25WaWV3U3RhdGVDaGFuZ2U9e2lzSW50ZXJhY3RpdmUgPyB0aGlzLl9vblZpZXdwb3J0Q2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgey4uLmV4dHJhRGVja1BhcmFtc31cbiAgICAgICAgICAgIG9uSG92ZXI9e1xuICAgICAgICAgICAgICBpc0ludGVyYWN0aXZlXG4gICAgICAgICAgICAgICAgPyBkYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzID0gRWRpdG9yTGF5ZXJVdGlscy5vbkhvdmVyKGRhdGEsIHtcbiAgICAgICAgICAgICAgICAgICAgICBlZGl0b3JNZW51QWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgICAgICAgICAgICBob3ZlckluZm9cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMpIHJldHVybjtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkxheWVySG92ZXJEZWJvdW5jZWQoZGF0YSwgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb25DbGljaz17KGRhdGEsIGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgbm9ybWFsaXplRXZlbnQoZXZlbnQuc3JjRXZlbnQsIHZpZXdwb3J0KTtcbiAgICAgICAgICAgICAgY29uc3QgcmVzID0gRWRpdG9yTGF5ZXJVdGlscy5vbkNsaWNrKGRhdGEsIGV2ZW50LCB7XG4gICAgICAgICAgICAgICAgZWRpdG9yTWVudUFjdGl2ZSxcbiAgICAgICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICAgICAgb25MYXllckNsaWNrLFxuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkRmVhdHVyZSxcbiAgICAgICAgICAgICAgICBtYXBJbmRleDogaW5kZXhcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGlmIChyZXMpIHJldHVybjtcblxuICAgICAgICAgICAgICB2aXNTdGF0ZUFjdGlvbnMub25MYXllckNsaWNrKGRhdGEpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uRXJyb3I9e3RoaXMuX29uRGVja0Vycm9yfVxuICAgICAgICAgICAgcmVmPXtjb21wID0+IHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBpZiAoY29tcCAmJiBjb21wLmRlY2sgJiYgIXRoaXMuX2RlY2spIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgdGhpcy5fZGVjayA9IGNvbXAuZGVjaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uV2ViR0xJbml0aWFsaXplZD17Z2wgPT4gdGhpcy5fb25EZWNrSW5pdGlhbGl6ZWQoZ2wpfVxuICAgICAgICAgICAgb25BZnRlclJlbmRlcj17KCkgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGRlY2tSZW5kZXJDYWxsYmFja3M/Lm9uRGVja0FmdGVyUmVuZGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgZGVja1JlbmRlckNhbGxiYWNrcy5vbkRlY2tBZnRlclJlbmRlcihhbGxEZWNrR2xQcm9wcyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgIDwvRGVja0dMPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgX3VwZGF0ZU1hcGJveExheWVycygpIHtcbiAgICAgIGNvbnN0IG1hcGJveExheWVycyA9IHRoaXMubWFwYm94TGF5ZXJzU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBpZiAoIU9iamVjdC5rZXlzKG1hcGJveExheWVycykubGVuZ3RoICYmICFPYmplY3Qua2V5cyh0aGlzLnByZXZpb3VzTGF5ZXJzKS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGVNYXBib3hMYXllcnModGhpcy5fbWFwLCBtYXBib3hMYXllcnMsIHRoaXMucHJldmlvdXNMYXllcnMpO1xuXG4gICAgICB0aGlzLnByZXZpb3VzTGF5ZXJzID0gbWFwYm94TGF5ZXJzO1xuICAgIH1cblxuICAgIF9yZW5kZXJNYXBib3hPdmVybGF5cygpIHtcbiAgICAgIGlmICh0aGlzLl9tYXAgJiYgdGhpcy5fbWFwLmlzU3R5bGVMb2FkZWQoKSkge1xuICAgICAgICB0aGlzLl91cGRhdGVNYXBib3hMYXllcnMoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgX29uVmlld3BvcnRDaGFuZ2VQcm9wYWdhdGVEZWJvdW5jZWQgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICBjb25zdCB2aWV3U3RhdGUgPSB0aGlzLmNvbnRleHQ/LmdldEludGVybmFsVmlld1N0YXRlKHRoaXMucHJvcHMuaW5kZXgpO1xuICAgICAgb25WaWV3UG9ydENoYW5nZShcbiAgICAgICAgdmlld1N0YXRlLFxuICAgICAgICB0aGlzLnByb3BzLm1hcFN0YXRlQWN0aW9ucy51cGRhdGVNYXAsXG4gICAgICAgIHRoaXMucHJvcHMub25WaWV3U3RhdGVDaGFuZ2UsXG4gICAgICAgIHRoaXMucHJvcHMucHJpbWFyeSxcbiAgICAgICAgdGhpcy5wcm9wcy5pbmRleFxuICAgICAgKTtcbiAgICB9LCBERUJPVU5DRV9WSUVXUE9SVF9QUk9QQUdBVEUpO1xuXG4gICAgX29uVmlld3BvcnRDaGFuZ2UgPSB2aWV3cG9ydCA9PiB7XG4gICAgICBjb25zdCB7dmlld1N0YXRlfSA9IHZpZXdwb3J0O1xuICAgICAgaWYgKHRoaXMucHJvcHMuaXNFeHBvcnQpIHtcbiAgICAgICAgLy8gSW1hZ2UgZXhwb3J0IG1hcCBzaG91bGRuJ3QgYmUgaW50ZXJhY3RpdmUgKG90aGVyd2lzZSB0aGlzIGNhbGxiYWNrIGNhblxuICAgICAgICAvLyBsZWFkIHRvIGluYWR2ZXJ0ZW50IGNoYW5nZXMgdG8gdGhlIHN0YXRlIG9mIHRoZSBtYWluIG1hcClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3Qge3NldEludGVybmFsVmlld1N0YXRlfSA9IHRoaXMuY29udGV4dDtcbiAgICAgIHNldEludGVybmFsVmlld1N0YXRlKHZpZXdTdGF0ZSwgdGhpcy5wcm9wcy5pbmRleCk7XG4gICAgICB0aGlzLl9vblZpZXdwb3J0Q2hhbmdlUHJvcGFnYXRlRGVib3VuY2VkKCk7XG4gICAgfTtcblxuICAgIF9vbkxheWVySG92ZXJEZWJvdW5jZWQgPSBkZWJvdW5jZSgoZGF0YSwgaW5kZXgpID0+IHtcbiAgICAgIHRoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLm9uTGF5ZXJIb3ZlcihkYXRhLCBpbmRleCk7XG4gICAgfSwgREVCT1VOQ0VfTU9VU0VfTU9WRV9QUk9QQUdBVEUpO1xuXG4gICAgX29uTW91c2VNb3ZlRGVib3VuY2VkID0gZGVib3VuY2UoKGV2ZW50LCB2aWV3cG9ydCkgPT4ge1xuICAgICAgdGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMub25Nb3VzZU1vdmUobm9ybWFsaXplRXZlbnQoZXZlbnQsIHZpZXdwb3J0KSk7XG4gICAgfSwgREVCT1VOQ0VfTU9VU0VfTU9WRV9QUk9QQUdBVEUpO1xuXG4gICAgX3RvZ2dsZU1hcENvbnRyb2wgPSBwYW5lbElkID0+IHtcbiAgICAgIGNvbnN0IHtpbmRleCwgdWlTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcblxuICAgICAgdWlTdGF0ZUFjdGlvbnMudG9nZ2xlTWFwQ29udHJvbChwYW5lbElkLCBOdW1iZXIoaW5kZXgpKTtcbiAgICB9O1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuICAgIF9yZW5kZXJNYXAoKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHZpc1N0YXRlLFxuICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgIG1hcFN0YXRlQWN0aW9ucyxcbiAgICAgICAgTWFwQ29tcG9uZW50ID0gTWFwLFxuICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgLy8gbWFwYm94QXBpVXJsLFxuICAgICAgICBtYXBDb250cm9scyxcbiAgICAgICAgaXNFeHBvcnQsXG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgdWlTdGF0ZUFjdGlvbnMsXG4gICAgICAgIHZpc1N0YXRlQWN0aW9ucyxcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIHByaW1hcnksXG4gICAgICAgIGJvdHRvbU1hcENvbnRhaW5lclByb3BzLFxuICAgICAgICB0b3BNYXBDb250YWluZXJQcm9wcyxcbiAgICAgICAgdGhlbWUsXG4gICAgICAgIGRhdGFzZXRBdHRyaWJ1dGlvbnMgPSBbXSxcbiAgICAgICAgY29udGFpbmVySWQgPSAwLFxuICAgICAgICBpc0xvYWRpbmdJbmRpY2F0b3JWaXNpYmxlLFxuICAgICAgICBhY3RpdmVTaWRlUGFuZWwsXG4gICAgICAgIHNpZGVQYW5lbFdpZHRoXG4gICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgY29uc3Qge2xheWVycywgZGF0YXNldHMsIGVkaXRvciwgaW50ZXJhY3Rpb25Db25maWd9ID0gdmlzU3RhdGU7XG5cbiAgICAgIGNvbnN0IGxheWVyc1RvUmVuZGVyID0gdGhpcy5sYXllcnNUb1JlbmRlclNlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgbGF5ZXJzRm9yRGVjayA9IHRoaXMubGF5ZXJzRm9yRGVja1NlbGVjdG9yKHRoaXMucHJvcHMpO1xuXG4gICAgICAvLyBDdXJyZW50IHN0eWxlIGNhbiBiZSBhIGN1c3RvbSBzdHlsZSwgZnJvbSB3aGljaCB3ZSBwdWxsIHRoZSBtYXBib3ggQVBJIGFjY2Nlc3MgdG9rZW5cbiAgICAgIGNvbnN0IGN1cnJlbnRTdHlsZSA9IG1hcFN0eWxlLm1hcFN0eWxlcz8uW21hcFN0eWxlLnN0eWxlVHlwZV07XG4gICAgICBjb25zdCBiYXNlTWFwTGlicmFyeU5hbWUgPSBnZXRCYXNlTWFwTGlicmFyeShjdXJyZW50U3R5bGUpO1xuICAgICAgY29uc3QgYmFzZU1hcExpYnJhcnlDb25maWcgPVxuICAgICAgICBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmJhc2VNYXBMaWJyYXJ5Q29uZmlnPy5bYmFzZU1hcExpYnJhcnlOYW1lXTtcblxuICAgICAgY29uc3QgaW50ZXJuYWxWaWV3U3RhdGUgPSB0aGlzLmNvbnRleHQ/LmdldEludGVybmFsVmlld1N0YXRlKGluZGV4KTtcbiAgICAgIGNvbnN0IG1hcFByb3BzID0ge1xuICAgICAgICAuLi5pbnRlcm5hbFZpZXdTdGF0ZSxcbiAgICAgICAgcHJlc2VydmVEcmF3aW5nQnVmZmVyOiB0cnVlLFxuICAgICAgICBtYXBib3hBY2Nlc3NUb2tlbjogY3VycmVudFN0eWxlPy5hY2Nlc3NUb2tlbiB8fCBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgLy8gYmFzZUFwaVVybDogbWFwYm94QXBpVXJsLFxuICAgICAgICBtYXBMaWI6IGJhc2VNYXBMaWJyYXJ5Q29uZmlnLmdldE1hcExpYigpLFxuICAgICAgICB0cmFuc2Zvcm1SZXF1ZXN0OlxuICAgICAgICAgIHRoaXMucHJvcHMudHJhbnNmb3JtUmVxdWVzdCB8fFxuICAgICAgICAgIHRyYW5zZm9ybVJlcXVlc3QoY3VycmVudFN0eWxlPy5hY2Nlc3NUb2tlbiB8fCBtYXBib3hBcGlBY2Nlc3NUb2tlbilcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGhhc0dlb2NvZGVyTGF5ZXIgPSBCb29sZWFuKGxheWVycy5maW5kKGwgPT4gbC5pZCA9PT0gR0VPQ09ERVJfTEFZRVJfSUQpKTtcbiAgICAgIGNvbnN0IGlzU3BsaXQgPSBCb29sZWFuKG1hcFN0YXRlLmlzU3BsaXQpO1xuXG4gICAgICBjb25zdCBkZWNrID0gdGhpcy5fcmVuZGVyRGVja092ZXJsYXkobGF5ZXJzRm9yRGVjaywge1xuICAgICAgICBwcmltYXJ5TWFwOiB0cnVlLFxuICAgICAgICBpc0ludGVyYWN0aXZlOiB0cnVlLFxuICAgICAgICBjaGlsZHJlbjogKFxuICAgICAgICAgIDxNYXBDb21wb25lbnRcbiAgICAgICAgICAgIGtleT17YGJvdHRvbS0ke2Jhc2VNYXBMaWJyYXJ5TmFtZX1gfVxuICAgICAgICAgICAgey4uLm1hcFByb3BzfVxuICAgICAgICAgICAgbWFwU3R5bGU9e21hcFN0eWxlLmJvdHRvbU1hcFN0eWxlID8/IEVNUFRZX01BUEJPWF9TVFlMRX1cbiAgICAgICAgICAgIHsuLi5ib3R0b21NYXBDb250YWluZXJQcm9wc31cbiAgICAgICAgICAgIHJlZj17dGhpcy5fc2V0TWFwUmVmfVxuICAgICAgICAgIC8+XG4gICAgICAgIClcbiAgICAgIH0pO1xuICAgICAgaWYgKCFkZWNrKSB7XG4gICAgICAgIC8vIGRlY2tPdmVybGF5IGNhbiBiZSBudWxsIGlmIG9uRGVja1JlbmRlciByZXR1cm5zIG51bGxcbiAgICAgICAgLy8gaW4gdGhpcyBjYXNlIHdlIGRvbid0IHdhbnQgdG8gcmVuZGVyIHRoZSBtYXBcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxNYXBDb250cm9sXG4gICAgICAgICAgICBtYXBTdGF0ZT17bWFwU3RhdGV9XG4gICAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgICBhdmFpbGFibGVMb2NhbGVzPXtMT0NBTEVfQ09ERVNfQVJSQVl9XG4gICAgICAgICAgICBkcmFnUm90YXRlPXttYXBTdGF0ZS5kcmFnUm90YXRlfVxuICAgICAgICAgICAgaXNTcGxpdD17aXNTcGxpdH1cbiAgICAgICAgICAgIHByaW1hcnk9e0Jvb2xlYW4ocHJpbWFyeSl9XG4gICAgICAgICAgICBpc0V4cG9ydD17aXNFeHBvcnR9XG4gICAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICAgIGxheWVyc1RvUmVuZGVyPXtsYXllcnNUb1JlbmRlcn1cbiAgICAgICAgICAgIG1hcEluZGV4PXtpbmRleCB8fCAwfVxuICAgICAgICAgICAgbWFwQ29udHJvbHM9e21hcENvbnRyb2xzfVxuICAgICAgICAgICAgcmVhZE9ubHk9e3RoaXMucHJvcHMucmVhZE9ubHl9XG4gICAgICAgICAgICBzY2FsZT17bWFwU3RhdGUuc2NhbGUgfHwgMX1cbiAgICAgICAgICAgIHRvcD17XG4gICAgICAgICAgICAgIGludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyICYmIGludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyLmVuYWJsZWRcbiAgICAgICAgICAgICAgICA/IHRoZW1lLm1hcENvbnRyb2xUb3BcbiAgICAgICAgICAgICAgICA6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICBvblRvZ2dsZVBlcnNwZWN0aXZlPXttYXBTdGF0ZUFjdGlvbnMudG9nZ2xlUGVyc3BlY3RpdmV9XG4gICAgICAgICAgICBvblRvZ2dsZVNwbGl0TWFwPXttYXBTdGF0ZUFjdGlvbnMudG9nZ2xlU3BsaXRNYXB9XG4gICAgICAgICAgICBvbk1hcFRvZ2dsZUxheWVyPXt0aGlzLl9oYW5kbGVNYXBUb2dnbGVMYXllcn1cbiAgICAgICAgICAgIG9uVG9nZ2xlTWFwQ29udHJvbD17dGhpcy5fdG9nZ2xlTWFwQ29udHJvbH1cbiAgICAgICAgICAgIG9uVG9nZ2xlU3BsaXRNYXBWaWV3cG9ydD17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVNwbGl0TWFwVmlld3BvcnR9XG4gICAgICAgICAgICBvblNldEVkaXRvck1vZGU9e3Zpc1N0YXRlQWN0aW9ucy5zZXRFZGl0b3JNb2RlfVxuICAgICAgICAgICAgb25TZXRMb2NhbGU9e3VpU3RhdGVBY3Rpb25zLnNldExvY2FsZX1cbiAgICAgICAgICAgIG9uVG9nZ2xlRWRpdG9yVmlzaWJpbGl0eT17dmlzU3RhdGVBY3Rpb25zLnRvZ2dsZUVkaXRvclZpc2liaWxpdHl9XG4gICAgICAgICAgICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlPXt2aXNTdGF0ZUFjdGlvbnMubGF5ZXJWaXNDb25maWdDaGFuZ2V9XG4gICAgICAgICAgICBtYXBIZWlnaHQ9e21hcFN0YXRlLmhlaWdodH1cbiAgICAgICAgICAgIHNldE1hcENvbnRyb2xTZXR0aW5ncz17dWlTdGF0ZUFjdGlvbnMuc2V0TWFwQ29udHJvbFNldHRpbmdzfVxuICAgICAgICAgICAgYWN0aXZlU2lkZVBhbmVsPXthY3RpdmVTaWRlUGFuZWx9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7aXNTcGxpdFNlbGVjdG9yKHRoaXMucHJvcHMpICYmIDxEcm9wcGFibGUgY29udGFpbmVySWQ9e2NvbnRhaW5lcklkfSAvPn1cblxuICAgICAgICAgIHtkZWNrfVxuICAgICAgICAgIHt0aGlzLl9yZW5kZXJNYXBib3hPdmVybGF5cygpfVxuICAgICAgICAgIDxFZGl0b3JcbiAgICAgICAgICAgIGluZGV4PXtpbmRleCB8fCAwfVxuICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgICBmaWx0ZXJzPXt0aGlzLnBvbHlnb25GaWx0ZXJzU2VsZWN0b3IodGhpcy5wcm9wcyl9XG4gICAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICAgIG9uRGVsZXRlRmVhdHVyZT17dmlzU3RhdGVBY3Rpb25zLmRlbGV0ZUZlYXR1cmV9XG4gICAgICAgICAgICBvblNlbGVjdD17dmlzU3RhdGVBY3Rpb25zLnNldFNlbGVjdGVkRmVhdHVyZX1cbiAgICAgICAgICAgIG9uVG9nZ2xlUG9seWdvbkZpbHRlcj17dmlzU3RhdGVBY3Rpb25zLnNldFBvbHlnb25GaWx0ZXJMYXllcn1cbiAgICAgICAgICAgIG9uU2V0RWRpdG9yTW9kZT17dmlzU3RhdGVBY3Rpb25zLnNldEVkaXRvck1vZGV9XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnYWxsJyxcbiAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgIGRpc3BsYXk6IGVkaXRvci52aXNpYmxlID8gJ2Jsb2NrJyA6ICdub25lJ1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxuICAgICAgICAgIHttYXBTdHlsZS50b3BNYXBTdHlsZSA/IChcbiAgICAgICAgICAgIDxNYXBDb21wb25lbnRcbiAgICAgICAgICAgICAga2V5PXtgdG9wLSR7YmFzZU1hcExpYnJhcnlOYW1lfWB9XG4gICAgICAgICAgICAgIHZpZXdTdGF0ZT17aW50ZXJuYWxWaWV3U3RhdGV9XG4gICAgICAgICAgICAgIG1hcFN0eWxlPXttYXBTdHlsZS50b3BNYXBTdHlsZX1cbiAgICAgICAgICAgICAgc3R5bGU9e01BUF9TVFlMRS50b3B9XG4gICAgICAgICAgICAgIG1hcGJveEFjY2Vzc1Rva2VuPXttYXBQcm9wcy5tYXBib3hBY2Nlc3NUb2tlbn1cbiAgICAgICAgICAgICAgdHJhbnNmb3JtUmVxdWVzdD17bWFwUHJvcHMudHJhbnNmb3JtUmVxdWVzdH1cbiAgICAgICAgICAgICAgbWFwTGliPXtiYXNlTWFwTGlicmFyeUNvbmZpZy5nZXRNYXBMaWIoKX1cbiAgICAgICAgICAgICAgey4uLnRvcE1hcENvbnRhaW5lclByb3BzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgIHtoYXNHZW9jb2RlckxheWVyXG4gICAgICAgICAgICA/IHRoaXMuX3JlbmRlckRlY2tPdmVybGF5KFxuICAgICAgICAgICAgICAgIHtbR0VPQ09ERVJfTEFZRVJfSURdOiBoYXNHZW9jb2RlckxheWVyfSxcbiAgICAgICAgICAgICAgICB7cHJpbWFyeU1hcDogZmFsc2UsIGlzSW50ZXJhY3RpdmU6IGZhbHNlfVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IG51bGx9XG4gICAgICAgICAge3RoaXMuX3JlbmRlck1hcFBvcG92ZXIoKX1cbiAgICAgICAgICB7cHJpbWFyeSAhPT0gaXNTcGxpdCA/IChcbiAgICAgICAgICAgIDxMb2FkaW5nSW5kaWNhdG9yXG4gICAgICAgICAgICAgIGlzVmlzaWJsZT17aXNMb2FkaW5nSW5kaWNhdG9yVmlzaWJsZSB8fCBpc1Jhc3RlclRpbGVzQmVpbmdMb2FkZWQoKX1cbiAgICAgICAgICAgICAgYWN0aXZlU2lkZVBhbmVsPXtCb29sZWFuKGFjdGl2ZVNpZGVQYW5lbCl9XG4gICAgICAgICAgICAgIHNpZGVQYW5lbFdpZHRoPXtzaWRlUGFuZWxXaWR0aH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgTG9hZGluZy4uLlxuICAgICAgICAgICAgPC9Mb2FkaW5nSW5kaWNhdG9yPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIHt0aGlzLnByb3BzLnByaW1hcnkgPyAoXG4gICAgICAgICAgICA8QXR0cmlidXRpb25cbiAgICAgICAgICAgICAgc2hvd0Jhc2VNYXBMaWJMb2dvPXt0aGlzLnN0YXRlLnNob3dCYXNlTWFwQXR0cmlidXRpb259XG4gICAgICAgICAgICAgIHNob3dPc21CYXNlbWFwQXR0cmlidXRpb249e3RydWV9XG4gICAgICAgICAgICAgIGRhdGFzZXRBdHRyaWJ1dGlvbnM9e2RhdGFzZXRBdHRyaWJ1dGlvbnN9XG4gICAgICAgICAgICAgIGJhc2VNYXBMaWJyYXJ5Q29uZmlnPXtiYXNlTWFwTGlicmFyeUNvbmZpZ31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7dmlzU3RhdGUsIG1hcFN0eWxlfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCBtYXBDb250ZW50ID0gdGhpcy5fcmVuZGVyTWFwKCk7XG4gICAgICBpZiAoIW1hcENvbnRlbnQpIHtcbiAgICAgICAgLy8gbWFwQ29udGVudCBjYW4gYmUgbnVsbCBpZiBvbkRlY2tSZW5kZXIgcmV0dXJucyBudWxsXG4gICAgICAgIC8vIGluIHRoaXMgY2FzZSB3ZSBkb24ndCB3YW50IHRvIHJlbmRlciB0aGUgbWFwXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjdXJyZW50U3R5bGUgPSBtYXBTdHlsZS5tYXBTdHlsZXM/LlttYXBTdHlsZS5zdHlsZVR5cGVdO1xuICAgICAgY29uc3QgYmFzZU1hcExpYnJhcnlOYW1lID0gZ2V0QmFzZU1hcExpYnJhcnkoY3VycmVudFN0eWxlKTtcbiAgICAgIGNvbnN0IGJhc2VNYXBMaWJyYXJ5Q29uZmlnID1cbiAgICAgICAgZ2V0QXBwbGljYXRpb25Db25maWcoKS5iYXNlTWFwTGlicmFyeUNvbmZpZz8uW2Jhc2VNYXBMaWJyYXJ5TmFtZV07XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRNYXBcbiAgICAgICAgICByZWY9e3RoaXMuX3JlZn1cbiAgICAgICAgICBzdHlsZT17dGhpcy5zdHlsZVNlbGVjdG9yKHRoaXMucHJvcHMpfVxuICAgICAgICAgIG9uQ29udGV4dE1lbnU9e2V2ZW50ID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCl9XG4gICAgICAgICAgJG1peEJsZW5kTW9kZT17dmlzU3RhdGUub3ZlcmxheUJsZW5kaW5nfVxuICAgICAgICAgICRtYXBMaWJDc3NDbGFzcz17YmFzZU1hcExpYnJhcnlDb25maWcubWFwTGliQ3NzQ2xhc3N9XG4gICAgICAgID5cbiAgICAgICAgICB7bWFwQ29udGVudH1cbiAgICAgICAgPC9TdHlsZWRNYXA+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB3aXRoVGhlbWUoTWFwQ29udGFpbmVyKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUYsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLEtBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFNBQUEsR0FBQUgsc0JBQUEsQ0FBQUosT0FBQTtBQUtBLElBQUFRLFdBQUEsR0FBQUosc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFTLFdBQUEsR0FBQUwsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFVLGtCQUFBLEdBQUFWLE9BQUE7QUFNQSxJQUFBVyxPQUFBLEdBQUFQLHNCQUFBLENBQUFKLE9BQUE7QUFHQSxJQUFBWSxPQUFBLEdBQUFaLE9BQUE7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
|