@carto/kepler.gl 0.0.69-alpha.hackathon-3dtiles.6 → 0.0.69-alpha.hackathon-3dtiles.7

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.
@@ -18,8 +18,6 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
18
18
 
19
19
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
20
20
 
21
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
22
-
23
21
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
24
22
 
25
23
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -30,6 +28,8 @@ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime
30
28
 
31
29
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
32
30
 
31
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
32
+
33
33
  var _react = _interopRequireWildcard(require("react"));
34
34
 
35
35
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -119,6 +119,7 @@ var CustomTile3DLayer = /*#__PURE__*/function (_Tile3DLayer) {
119
119
  return CustomTile3DLayer;
120
120
  }(_geoLayers.Tile3DLayer);
121
121
 
122
+ (0, _defineProperty2["default"])(CustomTile3DLayer, "layerName", 'CustomTile3DLayer');
122
123
  var h = 0;
123
124
  var tiles3d = new CustomTile3DLayer({
124
125
  id: 'google-3d-tiles',
@@ -838,4 +839,4 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
838
839
  MapContainer.displayName = 'MapContainer';
839
840
  return MapContainer;
840
841
  }
841
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL21hcC1jb250YWluZXIuanMiXSwibmFtZXMiOlsiR09PR0xFX01BUFNfQVBJX0tFWSIsIkN1c3RvbVRpbGUzRExheWVyIiwibGF5ZXIiLCJ2aWV3cG9ydCIsImxvZFpvb20iLCJNYXRoIiwibG9nMiIsInByb3BzIiwidGlsZSIsImxvZE1ldHJpY1ZhbHVlIiwiem9vbSIsIlRpbGUzRExheWVyIiwiaCIsInRpbGVzM2QiLCJpZCIsImRhdGEiLCJvblRpbGVzZXRMb2FkIiwidGlsZXNldDNkIiwib3B0aW9ucyIsIm1heGltdW1TY3JlZW5TcGFjZUVycm9yIiwiX29uVGlsZUxvYWRFcnJvciIsIm9uVHJhdmVyc2FsQ29tcGxldGUiLCJzZWxlY3RlZFRpbGVzIiwibWluTG9kIiwiSW5maW5pdHkiLCJmaWx0ZXJlZCIsImZpbHRlciIsInQiLCJsZW5ndGgiLCJtYXAiLCJib3VuZGluZ0JveCIsInJlZHVjZSIsImEiLCJuIiwibG9hZE9wdGlvbnMiLCJmZXRjaCIsImhlYWRlcnMiLCJvcGVyYXRpb24iLCJ0ZXJyYWluRXh0ZW5zaW9uIiwiVGVycmFpbkV4dGVuc2lvbiIsImFtYmllbnRMaWdodCIsIkFtYmllbnRMaWdodCIsImNvbG9yIiwiaW50ZW5zaXR5Iiwic3VuTGlnaHQiLCJfU3VuTGlnaHQiLCJ0aW1lc3RhbXAiLCJfc2hhZG93IiwibGlnaHRpbmdFZmZlY3QiLCJMaWdodGluZ0VmZmVjdCIsInNoYWRvd0NvbG9yIiwiYnJpZ2h0bmVzc0NvbnRyYXN0RWZmZWN0IiwiUG9zdFByb2Nlc3NFZmZlY3QiLCJicmlnaHRuZXNzQ29udHJhc3QiLCJjb250cmFzdCIsImJyaWdodG5lc3MiLCJodWVTYXR1cmF0aW9uRWZmZWN0IiwiaHVlU2F0dXJhdGlvbiIsImh1ZSIsInNhdHVyYXRpb24iLCJ2aWJyYW5jZUVmZmVjdCIsInZpYnJhbmNlIiwiYW1vdW50IiwidHJhY2tlcnMiLCJQRVJGX0RFQlVHIiwid2luZG93IiwibG9jYXRpb24iLCJzZWFyY2giLCJpbmNsdWRlcyIsImRyYXdDb3VudCIsInZpZXdwb3J0Q2hhbmdlQ291bnQiLCJMYXllciIsIlRpbGVMYXllciIsIk1BUF9TVFlMRSIsImNvbnRhaW5lciIsImRpc3BsYXkiLCJwb3NpdGlvbiIsIndpZHRoIiwiaGVpZ2h0IiwidG9wIiwicG9pbnRlckV2ZW50cyIsIk1BUEJPWEdMX1NUWUxFX1VQREFURSIsIk1BUEJPWEdMX1JFTkRFUiIsIlRSQU5TSVRJT05fRFVSQVRJT04iLCJBdHRyaWJ1dGlvbiIsIk1hcENvbnRhaW5lckZhY3RvcnkiLCJkZXBzIiwiTWFwUG9wb3ZlckZhY3RvcnkiLCJNYXBDb250cm9sRmFjdG9yeSIsIkVkaXRvckZhY3RvcnkiLCJNYXBQb3BvdmVyIiwiTWFwQ29udHJvbCIsIkVkaXRvciIsIk1hcENvbnRhaW5lciIsImRpbWVuc2lvbnMiLCJwcmltYXJ5IiwiaXNFeHBvcnQiLCJtYXBTdGF0ZUFjdGlvbnMiLCJ1cGRhdGVNYXAiLCJza2V0Y2hWYWx1ZSIsImxheWVycyIsImxheWVyRGF0YSIsIm1hcExheWVycyIsImxheWVyT3JkZXIiLCJwb3B1cFNldHRpbmdzIiwibGF5ZXJzU2VsZWN0b3IiLCJsYXllckRhdGFTZWxlY3RvciIsIm1hcExheWVyc1NlbGVjdG9yIiwicG9wdXBTZXR0aW5nc1NlbGVjdG9yIiwicHJlcGFyZUxheWVyc1RvUmVuZGVyIiwicHJlcGFyZUxheWVyc0ZvckRlY2siLCJmaWx0ZXJzIiwiZmlsdGVyc1NlbGVjdG9yIiwiZiIsInR5cGUiLCJGSUxURVJfVFlQRVMiLCJwb2x5Z29uIiwibGF5ZXJPcmRlclNlbGVjdG9yIiwibGF5ZXJzVG9SZW5kZXJTZWxlY3RvciIsImdlbmVyYXRlTWFwYm94TGF5ZXJzIiwidmlzU3RhdGVBY3Rpb25zIiwib25MYXllckNsaWNrIiwiaWR4IiwiY29sb3JEb21haW4iLCJsYXllckNvbmZpZ0NoYW5nZSIsImxheWVySWQiLCJpbmRleCIsIm1hcEluZGV4IiwidG9nZ2xlTGF5ZXJGb3JNYXAiLCJwcmV2aW91c0xheWVycyIsIl91cGRhdGVNYXBib3hMYXllcnMiLCJvbk1hcFN0eWxlTG9hZGVkIiwiX21hcCIsIm1hcGJveCIsImdldE1hcCIsIm9uIiwiX29uTWFwYm94U3R5bGVVcGRhdGUiLCJvbk1hcFJlbmRlciIsImdldE1hcGJveFJlZiIsImdsIiwibGF5ZXJCbGVuZGluZyIsImVycm9yIiwibWVzc2FnZSIsInNldFN0YXRlIiwiY29udGV4dExvc3QiLCJlcnJvck1lc3NhZ2UiLCJub3RpZmljYXRpb25JZCIsIl9kZWNrR0xFcnJvcnNFbGFwc2VkIiwibGFzdFNob3duIiwiRGF0ZSIsIm5vdyIsIlRIUk9UVExFX05PVElGSUNBVElPTl9USU1FIiwidWlTdGF0ZUFjdGlvbnMiLCJhZGROb3RpZmljYXRpb24iLCJ2aWV3U3RhdGUiLCJpbnRlcmFjdGlvblN0YXRlIiwiaW5jcmVtZW50IiwicmVzdFZpZXdTdGF0ZSIsIm5leHQiLCJpblRyYW5zaXRpb24iLCJvblZpZXdTdGF0ZUNoYW5nZSIsInBhbmVsSWQiLCJ0b2dnbGVNYXBDb250cm9sIiwiX2RlY2siLCJfcmVmIiwiX2hhc1JlbmRlcmVkIiwiX21vdXNlUG9zaXRpb24iLCJjdXJyZW50IiwiX2hhbmRsZVJlc2l6ZSIsInN0YXRlIiwib2ZmIiwib25EZWNrSW5pdGlhbGl6ZWQiLCJsYXllcnNUb1JlbmRlciIsImxuZ0xhdCIsInNjcmVlbkNvb3JkIiwicHJvamVjdCIsIngiLCJ5IiwibGF5ZXJzRm9yRGVjayIsIm1hcFN0YXRlIiwibWFwU3R5bGUiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsIm1hc2tQb2x5Z29uIiwiZGVja0dsTGF5ZXJzIiwiZGVja0dsUHJvcHMiLCJkYXRhTGF5ZXJzIiwic2xpY2UiLCJyZXZlcnNlIiwib3ZlcmxheXMiLCJsYXllckNhbGxiYWNrcyIsIm9uU2V0TGF5ZXJEb21haW4iLCJ2YWwiLCJfb25MYXllclNldERvbWFpbiIsImxheWVyT3ZlcmxheSIsImNvbmNhdCIsImxheWVyc09uVG9wIiwicHVzaCIsIlNvbGlkUG9seWdvbkxheWVyIiwiTUFTS19MQVlFUl9JRCIsIk9QRVJBVElPTiIsIk1BU0siLCJkYXRhQ29tcGFyYXRvciIsIm9sZERhdGEiLCJnZXRQb2x5Z29uIiwiZCIsImdldEZpbGxDb2xvciIsInZpc2libGVMYXllckdyb3VwcyIsIlRocmVlREJ1aWxkaW5nTGF5ZXIiLCJ0aHJlZURCdWlsZGluZ0NvbG9yIiwidXBkYXRlVHJpZ2dlcnMiLCJlZmZlY3RzIiwiYm90dG9tTWFwU3R5bGUiLCJsIiwiQm9vbGVhbiIsImNsb25lIiwiZXh0ZW5zaW9ucyIsInN0eWxlVHlwZSIsImlua0VmZmVjdCIsImluayIsInN0cmVuZ3RoIiwiYWxsRWZmZWN0cyIsImhhc1JlbmRlcmVkIiwicmVzZXRIYXNSZW5kZXJlZCIsIl9vblZpZXdwb3J0Q2hhbmdlIiwib3B0cyIsIl9vbkJlZm9yZVJlbmRlciIsIm9uTGF5ZXJIb3ZlciIsImUiLCJfb25EZWNrRXJyb3IiLCJjb21wIiwiZGVjayIsIl9vbkRlY2tJbml0aWFsaXplZCIsImlzTmFOIiwidmlzaWJpbGl0eUJ5Wm9vbSIsIm1pbiIsIm1heCIsImN1cnJlbnRab29tUmFuZ2UiLCJyb3VuZCIsIm1hcGJveExheWVycyIsIm1hcGJveExheWVyc1NlbGVjdG9yIiwiT2JqZWN0Iiwia2V5cyIsImlzU3R5bGVMb2FkZWQiLCJNYXBDb21wb25lbnQiLCJkYXRhc2V0cyIsIm1hcENvbnRyb2xzIiwibG9jYWxlIiwiaW50ZXJhY3Rpb25Db25maWciLCJlZGl0b3IiLCJsYXllcnNGb3JEZWNrU2VsZWN0b3IiLCJtYXBQcm9wcyIsInByZXNlcnZlRHJhd2luZ0J1ZmZlciIsInRyYW5zZm9ybVJlcXVlc3QiLCJpc0VkaXQiLCJtYXBEcmF3IiwiYWN0aXZlIiwiaGFzR2VvY29kZXJMYXllciIsImZpbmQiLCJHRU9DT0RFUl9MQVlFUl9JRCIsImlzU3BsaXQiLCJtb3VzZVBvc2l0aW9uIiwibmVlZHNCYXNlbWFwIiwiTE9DQUxFX0NPREVTIiwiZHJhZ1JvdGF0ZSIsInJlYWRPbmx5Iiwic2NhbGUiLCJnZW9jb2RlciIsImVuYWJsZWQiLCJ0b2dnbGVQZXJzcGVjdGl2ZSIsInRvZ2dsZVNwbGl0TWFwIiwiX2hhbmRsZU1hcFRvZ2dsZUxheWVyIiwiX3RvZ2dsZU1hcENvbnRyb2wiLCJzZXRFZGl0b3JNb2RlIiwic2V0TG9jYWxlIiwidG9nZ2xlRWRpdG9yVmlzaWJpbGl0eSIsIl9zZXRNYXBib3hNYXAiLCJob3ZlckluZm8iLCJ1bmRlZmluZWQiLCJldnQiLCJwb2ludCIsIl9yZW5kZXJEZWNrT3ZlcmxheSIsIl9yZW5kZXJNYXBib3hPdmVybGF5cyIsInBvbHlnb25GaWx0ZXJzIiwiZGVsZXRlRmVhdHVyZSIsInNldFNlbGVjdGVkRmVhdHVyZSIsInNldEZlYXR1cmVzIiwic2V0UG9seWdvbkZpbHRlckxheWVyIiwidmlzaWJsZSIsInRvcE1hcFN0eWxlIiwiX3JlbmRlck1hcFBvcG92ZXIiLCJnbG9iZSIsIl9yZW5kZXJNYXAiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJpc1JlcXVpcmVkIiwic3RyaW5nIiwiYXJyYXlPZiIsImFueSIsIm51bWJlciIsImJvb2wiLCJjbGlja2VkIiwib25NYXBUb2dnbGVMYXllciIsImZ1bmMiLCJNYXBib3hHTE1hcCIsImRpc3BsYXlOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFRQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFPQTs7QUFDQTs7QUFHQTs7QUFtRUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWhFQSxJQUFNQSxtQkFBbUIsR0FBRyx5Q0FBNUI7O0lBRU1DLGlCOzs7Ozs7Ozs7Ozs7V0FDSiw4QkFBa0M7QUFBQSxVQUFsQkMsS0FBa0IsUUFBbEJBLEtBQWtCO0FBQUEsVUFBWEMsUUFB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SUFBQUEsU0FBUyxFQUFFZ00sc0JBQVVDLE1BekJKO0FBMEJqQlEsSUFBQUEsZ0JBQWdCLEVBQUVULHNCQUFVVSxJQTFCWDtBQTJCakI3SyxJQUFBQSxnQkFBZ0IsRUFBRW1LLHNCQUFVVSxJQTNCWDtBQTRCakJ2SyxJQUFBQSxXQUFXLEVBQUU2SixzQkFBVVUsSUE1Qk47QUE2QmpCdEssSUFBQUEsWUFBWSxFQUFFNEosc0JBQVVVLElBN0JQO0FBOEJqQmxMLElBQUFBLEtBQUssRUFBRXdLLHNCQUFVTSxNQTlCQTtBQStCakJwTSxJQUFBQSxhQUFhLEVBQUU4TCxzQkFBVUM7QUEvQlIsR0FGcUQ7QUFBQSxtQ0FDcEUxTSxZQURvRSxrQkFvQ2xEO0FBQ3BCdUosSUFBQUEsWUFBWSxFQUFFNkQsc0JBRE07QUFFcEJ4SCxJQUFBQSxXQUFXLEVBQUUsRUFGTztBQUdwQjNELElBQUFBLEtBQUssRUFBRSxDQUhhO0FBSXBCL0IsSUFBQUEsT0FBTyxFQUFFO0FBSlcsR0FwQ2tEO0FBd2lCMUVGLEVBQUFBLFlBQVksQ0FBQ3FOLFdBQWIsR0FBMkIsY0FBM0I7QUFFQSxTQUFPck4sWUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuLy8gbGlicmFyaWVzXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBNYXBib3hHTE1hcCBmcm9tICdyZWFjdC1tYXAtZ2wnO1xuaW1wb3J0IERlY2tHTCBmcm9tICdAZGVjay5nbC9yZWFjdCc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQge1xuICBPUEVSQVRJT04sXG4gIExheWVyLFxuICBBbWJpZW50TGlnaHQsXG4gIExpZ2h0aW5nRWZmZWN0LFxuICBQb3N0UHJvY2Vzc0VmZmVjdCxcbiAgX1N1bkxpZ2h0XG59IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHticmlnaHRuZXNzQ29udHJhc3QsIGh1ZVNhdHVyYXRpb24sIGluaywgdmlicmFuY2V9IGZyb20gJ0BsdW1hLmdsL3NoYWRlcnRvb2xzJztcbmltcG9ydCB7U29saWRQb2x5Z29uTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQge1RpbGVMYXllcn0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycyc7XG5pbXBvcnQge2Vycm9yTm90aWZpY2F0aW9ufSBmcm9tICd1dGlscy9ub3RpZmljYXRpb25zLXV0aWxzJztcblxuLy8gY29tcG9uZW50c1xuaW1wb3J0IE1hcFBvcG92ZXJGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvbWFwL21hcC1wb3BvdmVyJztcbmltcG9ydCBNYXBDb250cm9sRmFjdG9yeSBmcm9tICdjb21wb25lbnRzL21hcC9tYXAtY29udHJvbCc7XG5pbXBvcnQge1N0eWxlZE1hcENvbnRhaW5lciwgU3R5bGVkQXR0cmJ1dGlvbn0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgRWRpdG9yRmFjdG9yeSBmcm9tICcuL2VkaXRvci9lZGl0b3InO1xuXG4vLyB1dGlsc1xuaW1wb3J0IHtnZW5lcmF0ZU1hcGJveExheWVycywgdXBkYXRlTWFwYm94TGF5ZXJzfSBmcm9tICdsYXllcnMvbWFwYm94LXV0aWxzJztcbmltcG9ydCB7c2V0TGF5ZXJCbGVuZGluZ30gZnJvbSAndXRpbHMvZ2wtdXRpbHMnO1xuaW1wb3J0IHt0cmFuc2Zvcm1SZXF1ZXN0fSBmcm9tICd1dGlscy9tYXAtc3R5bGUtdXRpbHMvbWFwYm94LXV0aWxzJztcbmltcG9ydCB7cmVuZGVyRGVja0dsTGF5ZXIsIHByZXBhcmVMYXllcnNUb1JlbmRlciwgcHJlcGFyZUxheWVyc0ZvckRlY2t9IGZyb20gJ3V0aWxzL2xheWVyLXV0aWxzJztcblxuLy8gZGVmYXVsdC1zZXR0aW5nc1xuaW1wb3J0IFRocmVlREJ1aWxkaW5nTGF5ZXIgZnJvbSAnZGVja2dsLWxheWVycy8zZC1idWlsZGluZy1sYXllci8zZC1idWlsZGluZy1sYXllcic7XG5pbXBvcnQge1xuICBGSUxURVJfVFlQRVMsXG4gIEdFT0NPREVSX0xBWUVSX0lELFxuICBNQVNLX0xBWUVSX0lELFxuICBUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRVxufSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5cbmltcG9ydCB7b2JzZXJ2ZURpbWVuc2lvbnMsIHVub2JzZXJ2ZURpbWVuc2lvbnN9IGZyb20gJy4uL3V0aWxzL29ic2VydmUtZGltZW5zaW9ucyc7XG5pbXBvcnQge0xPQ0FMRV9DT0RFU30gZnJvbSAnbG9jYWxpemF0aW9uL2xvY2FsZXMnO1xuXG4vLyAzRCB0aWxlc1xuaW1wb3J0IHtfVGVycmFpbkV4dGVuc2lvbiBhcyBUZXJyYWluRXh0ZW5zaW9ufSBmcm9tICdAZGVjay5nbC9leHRlbnNpb25zJztcbmltcG9ydCB7VGlsZTNETGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2dlby1sYXllcnMnO1xuXG5jb25zdCBHT09HTEVfTUFQU19BUElfS0VZID0gJ0FJemFTeUNwdlF5bWM1d2pTWUlzeHkzUlYxd2lkTTNwM2g3OENBayc7XG5cbmNsYXNzIEN1c3RvbVRpbGUzRExheWVyIGV4dGVuZHMgVGlsZTNETGF5ZXIge1xuICBmaWx0ZXJTdWJMYXllcih7bGF5ZXIsIHZpZXdwb3J0fSkge1xuICAgIC8vIERvIG5vdCBzaG93IHRpbGVzIHdoaWNoIGFyZSBtYW55IGxheWVycyB0b28gbG93IGluIHJlc29sdXRpb24gKGF2b2lkcyBhcnRpZmFjdHMpXG4gICAgY29uc3QgbG9kWm9vbSA9IDIyIC0gTWF0aC5sb2cyKGxheWVyLnByb3BzLnRpbGUubG9kTWV0cmljVmFsdWUpO1xuICAgIHJldHVybiBsb2Rab29tID4gdmlld3BvcnQ/Lnpvb207XG4gIH1cbn1cblxubGV0IGggPSAwO1xuY29uc3QgdGlsZXMzZCA9IG5ldyBDdXN0b21UaWxlM0RMYXllcih7XG4gIGlkOiAnZ29vZ2xlLTNkLXRpbGVzJyxcbiAgZGF0YTogJ2h0dHBzOi8vdGlsZS5nb29nbGVhcGlzLmNvbS92MS8zZHRpbGVzL3Jvb3QuanNvbicsXG4gIG9uVGlsZXNldExvYWQ6IHRpbGVzZXQzZCA9PiB7XG4gICAgdGlsZXNldDNkLm9wdGlvbnMubWF4aW11bVNjcmVlblNwYWNlRXJyb3IgPSA1O1xuICAgIHRpbGVzZXQzZC5fb25UaWxlTG9hZEVycm9yID0gKCkgPT4ge307XG4gICAgdGlsZXNldDNkLm9wdGlvbnMub25UcmF2ZXJzYWxDb21wbGV0ZSA9IHNlbGVjdGVkVGlsZXMgPT4ge1xuICAgICAgbGV0IG1pbkxvZCA9IEluZmluaXR5O1xuICAgICAgZm9yIChjb25zdCB7bG9kTWV0cmljVmFsdWV9IG9mIHNlbGVjdGVkVGlsZXMpIHtcbiAgICAgICAgaWYgKGxvZE1ldHJpY1ZhbHVlIDwgbWluTG9kKSBtaW5Mb2QgPSBsb2RNZXRyaWNWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZpbHRlcmVkID0gc2VsZWN0ZWRUaWxlcy5maWx0ZXIodCA9PiB0LmxvZE1ldHJpY1ZhbHVlIDwgNCAqIG1pbkxvZCk7XG5cbiAgICAgIC8vIEhhY2t5IHdheSB0byBvYnRhaW4gaGVpZ2h0IGFib3ZlIHNlYSBsZXZlbCB0byBpbXByb3ZlIGNvbnRyb2xzXG4gICAgICBpZiAoZmlsdGVyZWQubGVuZ3RoKSB7XG4gICAgICAgIGggPSBmaWx0ZXJlZC5tYXAodCA9PiB0LmJvdW5kaW5nQm94WzBdWzJdKS5yZWR1Y2UoKGEsIG4pID0+IGEgKyBuKSAvIGZpbHRlcmVkLmxlbmd0aDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNlbGVjdGVkVGlsZXM7XG4gICAgfTtcbiAgfSxcbiAgbG9hZE9wdGlvbnM6IHtcbiAgICBmZXRjaDoge2hlYWRlcnM6IHsnWC1HT09HLUFQSS1LRVknOiBHT09HTEVfTUFQU19BUElfS0VZfX1cbiAgfSxcbiAgLy8gQHRzLWlnbm9yZVxuICBvcGVyYXRpb246ICd0ZXJyYWluK2RyYXcnIC8vIFJlcXVpcmVkIHRvIGVuYWJsZSBkcmFwaW5nIG9mIG90aGVyIGxheWVyc1xufSk7XG5jb25zdCB0ZXJyYWluRXh0ZW5zaW9uID0gbmV3IFRlcnJhaW5FeHRlbnNpb24oKTtcblxuLy8gRWZmZWN0c1xuY29uc3QgYW1iaWVudExpZ2h0ID0gbmV3IEFtYmllbnRMaWdodCh7Y29sb3I6IFsyNTUsIDI1NSwgMjU1XSwgaW50ZW5zaXR5OiAxfSk7XG5jb25zdCBzdW5MaWdodCA9IG5ldyBfU3VuTGlnaHQoe1xuICB0aW1lc3RhbXA6IDE2ODM4Njk5MTU3NzcsXG4gIGNvbG9yOiBbMjU1LCAyNTUsIDI1NV0sXG4gIGludGVuc2l0eTogMSxcbiAgX3NoYWRvdzogdHJ1ZVxufSk7XG5jb25zdCBsaWdodGluZ0VmZmVjdCA9IG5ldyBMaWdodGluZ0VmZmVjdCh7XG4gIGFtYmllbnRMaWdodCxcbiAgc3VuTGlnaHRcbn0pO1xubGlnaHRpbmdFZmZlY3Quc2hhZG93Q29sb3IgPSBbMCwgMCwgMCwgMF07XG5cbmNvbnN0IGJyaWdodG5lc3NDb250cmFzdEVmZmVjdCA9IG5ldyBQb3N0UHJvY2Vzc0VmZmVjdChicmlnaHRuZXNzQ29udHJhc3QsIHtcbiAgY29udHJhc3Q6IDAsXG4gIGJyaWdodG5lc3M6IDAuMlxufSk7XG5cbmNvbnN0IGh1ZVNhdHVyYXRpb25FZmZlY3QgPSBuZXcgUG9zdFByb2Nlc3NFZmZlY3QoaHVlU2F0dXJhdGlvbiwge2h1ZTogMCwgc2F0dXJhdGlvbjogMC4zfSk7XG5cbmNvbnN0IHZpYnJhbmNlRWZmZWN0ID0gbmV3IFBvc3RQcm9jZXNzRWZmZWN0KHZpYnJhbmNlLCB7YW1vdW50OiAxfSk7XG5cbi8vIFBlcmZvcm1hbmNlIGRlYnVnZ2luZ1xuaW1wb3J0IHtjcmVhdGVUcmFja2VyLCBjcmVhdGVMYXllclVwZGF0ZVRyYWNrZXIsIHJlbmRlclBlcmZvcm1hbmNlU3RhdHN9IGZyb20gJy4vcGVyZm9ybWFuY2UnO1xuY29uc3QgdHJhY2tlcnMgPSB7fTtcbmNvbnN0IFBFUkZfREVCVUcgPSB3aW5kb3c/LmxvY2F0aW9uPy5zZWFyY2g/LmluY2x1ZGVzKCdQRVJGX0RFQlVHJyk7XG5pZiAoUEVSRl9ERUJVRykge1xuICB0cmFja2Vycy5kcmF3Q291bnQgPSBjcmVhdGVUcmFja2VyKCdkcmF3cycpO1xuICB0cmFja2Vycy52aWV3cG9ydENoYW5nZUNvdW50ID0gY3JlYXRlVHJhY2tlcigndmlld3BvcnQgY2hhbmdlcycpO1xuICBjcmVhdGVMYXllclVwZGF0ZVRyYWNrZXIoJ3N0YXRlIHVwZGF0ZXMnLCBbTGF5ZXIsIFRpbGVMYXllcl0pO1xufVxuXG4vKiogQHR5cGUge3tba2V5OiBzdHJpbmddOiBSZWFjdC5DU1NQcm9wZXJ0aWVzfX0gKi9cbmNvbnN0IE1BUF9TVFlMRSA9IHtcbiAgY29udGFpbmVyOiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBoZWlnaHQ6ICcxMDAlJ1xuICB9LFxuICB0b3A6IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB0b3A6ICcwcHgnLFxuICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGhlaWdodDogJzEwMCUnXG4gIH1cbn07XG5cbmNvbnN0IE1BUEJPWEdMX1NUWUxFX1VQREFURSA9ICdzdHlsZS5sb2FkJztcbmNvbnN0IE1BUEJPWEdMX1JFTkRFUiA9ICdyZW5kZXInO1xuY29uc3QgVFJBTlNJVElPTl9EVVJBVElPTiA9IDA7XG5cbmV4cG9ydCBjb25zdCBBdHRyaWJ1dGlvbiA9ICgpID0+IChcbiAgPFN0eWxlZEF0dHJidXRpb24+XG4gICAgPGRpdiBjbGFzc05hbWU9XCJhdHRyaXRpb24tbG9nb1wiPlxuICAgICAgQmFzZW1hcCBieTpcbiAgICAgIDxhXG4gICAgICAgIGNsYXNzTmFtZT1cIm1hcGJveGdsLWN0cmwtbG9nb1wiXG4gICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICBocmVmPVwiaHR0cHM6Ly93d3cubWFwYm94LmNvbS9cIlxuICAgICAgICBhcmlhLWxhYmVsPVwiTWFwYm94IGxvZ29cIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cImF0dHJpdGlvbi1saW5rXCI+XG4gICAgICA8YSBocmVmPVwiaHR0cHM6Ly9rZXBsZXIuZ2wvcG9saWN5L1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgwqkga2VwbGVyLmdsIHx7JyAnfVxuICAgICAgPC9hPlxuICAgICAgPGEgaHJlZj1cImh0dHBzOi8vd3d3Lm1hcGJveC5jb20vYWJvdXQvbWFwcy9cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgIMKpIE1hcGJveCB8eycgJ31cbiAgICAgIDwvYT5cbiAgICAgIDxhIGhyZWY9XCJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodFwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgwqkgT3BlblN0cmVldE1hcCB8eycgJ31cbiAgICAgIDwvYT5cbiAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5tYXBib3guY29tL21hcC1mZWVkYmFjay9cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgIDxzdHJvbmc+SW1wcm92ZSB0aGlzIG1hcDwvc3Ryb25nPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L1N0eWxlZEF0dHJidXRpb24+XG4pO1xuXG5NYXBDb250YWluZXJGYWN0b3J5LmRlcHMgPSBbTWFwUG9wb3ZlckZhY3RvcnksIE1hcENvbnRyb2xGYWN0b3J5LCBFZGl0b3JGYWN0b3J5XTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTWFwQ29udGFpbmVyRmFjdG9yeShNYXBQb3BvdmVyLCBNYXBDb250cm9sLCBFZGl0b3IpIHtcbiAgY2xhc3MgTWFwQ29udGFpbmVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgLy8gcmVxdWlyZWRcbiAgICAgIGRhdGFzZXRzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgaW50ZXJhY3Rpb25Db25maWc6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIGxheWVyQmxlbmRpbmc6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIGxheWVyT3JkZXI6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBsYXllckRhdGE6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBsYXllcnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBmaWx0ZXJzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuICAgICAgbWFwU3RhdGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIG1hcENvbnRyb2xzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBtYXBTdHlsZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgc2tldGNoVmFsdWU6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgbWFwYm94QXBpVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgdmlzU3RhdGVBY3Rpb25zOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBtYXBTdGF0ZUFjdGlvbnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIHVpU3RhdGVBY3Rpb25zOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG5cbiAgICAgIC8vIG9wdGlvbmFsXG4gICAgICBwcmltYXJ5OiBQcm9wVHlwZXMuYm9vbCwgLy8gcHJpbWFyeSBvbmUgd2lsbCBiZSByZXBvcnRpbmcgaXRzIHNpemUgdG8gYXBwU3RhdGVcbiAgICAgIHJlYWRPbmx5OiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgIGlzRXhwb3J0OiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgIGNsaWNrZWQ6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICBob3ZlckluZm86IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICBtYXBMYXllcnM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICBvbk1hcFRvZ2dsZUxheWVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIG9uTWFwU3R5bGVMb2FkZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgb25NYXBSZW5kZXI6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgZ2V0TWFwYm94UmVmOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIGluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgcG9wdXBTZXR0aW5nczogUHJvcFR5cGVzLm9iamVjdFxuICAgIH07XG5cbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgTWFwQ29tcG9uZW50OiBNYXBib3hHTE1hcCxcbiAgICAgIGRlY2tHbFByb3BzOiB7fSxcbiAgICAgIGluZGV4OiAwLFxuICAgICAgcHJpbWFyeTogdHJ1ZVxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICB0aGlzLnByZXZpb3VzTGF5ZXJzID0ge1xuICAgICAgICAvLyBbbGF5ZXJzLmlkXTogbWFwYm94TGF5ZXJDb25maWdcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuX2RlY2sgPSBudWxsO1xuICAgICAgdGhpcy5fcmVmID0gY3JlYXRlUmVmKCk7XG5cbiAgICAgIC8vIFJlbmRlciBsaW1pdGluZyBtZWNoYW5pc21cbiAgICAgIHRoaXMuX2hhc1JlbmRlcmVkID0gY3JlYXRlUmVmKCk7XG4gICAgICB0aGlzLl9tb3VzZVBvc2l0aW9uID0gY3JlYXRlUmVmKCk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICBvYnNlcnZlRGltZW5zaW9ucyh0aGlzLl9yZWYuY3VycmVudCwgdGhpcy5faGFuZGxlUmVzaXplKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgICBjb25zdCBjb250ZXh0TG9zdCA9IHRoaXMuc3RhdGU/LmNvbnRleHRMb3N0O1xuXG4gICAgICBpZiAoY29udGV4dExvc3QpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWRpZC11cGRhdGUtc2V0LXN0YXRlXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2NvbnRleHRMb3N0OiBmYWxzZX0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgLy8gdW5iaW5kIG1hcGJveGdsIGV2ZW50IGxpc3RlbmVyXG4gICAgICBpZiAodGhpcy5fbWFwKSB7XG4gICAgICAgIHRoaXMuX21hcC5vZmYoTUFQQk9YR0xfU1RZTEVfVVBEQVRFKTtcbiAgICAgICAgdGhpcy5fbWFwLm9mZihNQVBCT1hHTF9SRU5ERVIpO1xuICAgICAgfVxuICAgICAgdW5vYnNlcnZlRGltZW5zaW9ucyh0aGlzLl9yZWYuY3VycmVudCk7XG4gICAgfVxuXG4gICAgX2hhbmRsZVJlc2l6ZSA9IGRpbWVuc2lvbnMgPT4ge1xuICAgICAgY29uc3Qge3ByaW1hcnksIGlzRXhwb3J0fSA9IHRoaXMucHJvcHM7XG4gICAgICBpZiAocHJpbWFyeSkge1xuICAgICAgICBjb25zdCB7bWFwU3RhdGVBY3Rpb25zfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmICghaXNFeHBvcnQgJiYgZGltZW5zaW9ucyAmJiBkaW1lbnNpb25zLndpZHRoID4gMCAmJiBkaW1lbnNpb25zLmhlaWdodCA+IDApIHtcbiAgICAgICAgICBtYXBTdGF0ZUFjdGlvbnMudXBkYXRlTWFwKGRpbWVuc2lvbnMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIHNrZXRjaFZhbHVlID0gcHJvcHMgPT4gcHJvcHM/LnNrZXRjaFZhbHVlO1xuICAgIGxheWVyc1NlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMubGF5ZXJzO1xuICAgIGxheWVyRGF0YVNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMubGF5ZXJEYXRhO1xuICAgIG1hcExheWVyc1NlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMubWFwTGF5ZXJzO1xuICAgIGxheWVyT3JkZXJTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmxheWVyT3JkZXI7XG4gICAgcG9wdXBTZXR0aW5nc1NlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMucG9wdXBTZXR0aW5ncztcblxuICAgIGxheWVyc1RvUmVuZGVyU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMubGF5ZXJzU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyRGF0YVNlbGVjdG9yLFxuICAgICAgdGhpcy5tYXBMYXllcnNTZWxlY3RvcixcbiAgICAgIHRoaXMucG9wdXBTZXR0aW5nc1NlbGVjdG9yLFxuICAgICAgcHJlcGFyZUxheWVyc1RvUmVuZGVyXG4gICAgKTtcbiAgICBsYXllcnNGb3JEZWNrU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMubGF5ZXJzU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyRGF0YVNlbGVjdG9yLFxuICAgICAgcHJlcGFyZUxheWVyc0ZvckRlY2tcbiAgICApO1xuICAgIGZpbHRlcnNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmZpbHRlcnM7XG4gICAgcG9seWdvbkZpbHRlcnMgPSBjcmVhdGVTZWxlY3Rvcih0aGlzLmZpbHRlcnNTZWxlY3RvciwgZmlsdGVycyA9PlxuICAgICAgZmlsdGVycy5maWx0ZXIoZiA9PiBmLnR5cGUgPT09IEZJTFRFUl9UWVBFUy5wb2x5Z29uKVxuICAgICk7XG5cbiAgICBtYXBib3hMYXllcnNTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5sYXllcnNTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJEYXRhU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyT3JkZXJTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJzVG9SZW5kZXJTZWxlY3RvcixcbiAgICAgIGdlbmVyYXRlTWFwYm94TGF5ZXJzXG4gICAgKTtcblxuICAgIC8qIGNvbXBvbmVudCBwcml2YXRlIGZ1bmN0aW9ucyAqL1xuICAgIF9vbkNsb3NlTWFwUG9wb3ZlciA9ICgpID0+IHtcbiAgICAgIHRoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLm9uTGF5ZXJDbGljayhudWxsKTtcbiAgICB9O1xuXG4gICAgX29uTGF5ZXJTZXREb21haW4gPSAoaWR4LCBjb2xvckRvbWFpbikgPT4ge1xuICAgICAgdGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMubGF5ZXJDb25maWdDaGFuZ2UodGhpcy5wcm9wcy5sYXllcnNbaWR4XSwge1xuICAgICAgICBjb2xvckRvbWFpblxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIF9oYW5kbGVNYXBUb2dnbGVMYXllciA9IGxheWVySWQgPT4ge1xuICAgICAgY29uc3Qge2luZGV4OiBtYXBJbmRleCA9IDAsIHZpc1N0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuICAgICAgdmlzU3RhdGVBY3Rpb25zLnRvZ2dsZUxheWVyRm9yTWFwKG1hcEluZGV4LCBsYXllcklkKTtcbiAgICB9O1xuXG4gICAgX29uTWFwYm94U3R5bGVVcGRhdGUgPSAoKSA9PiB7XG4gICAgICAvLyBmb3JjZSByZWZyZXNoIG1hcGJveGdsIGxheWVyc1xuICAgICAgdGhpcy5wcmV2aW91c0xheWVycyA9IHt9O1xuICAgICAgdGhpcy5fdXBkYXRlTWFwYm94TGF5ZXJzKCk7XG5cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5vbk1hcFN0eWxlTG9hZGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25NYXBTdHlsZUxvYWRlZCh0aGlzLl9tYXApO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfc2V0TWFwYm94TWFwID0gbWFwYm94ID0+IHtcbiAgICAgIGlmICghdGhpcy5fbWFwICYmIG1hcGJveCkge1xuICAgICAgICB0aGlzLl9tYXAgPSBtYXBib3guZ2V0TWFwKCk7XG4gICAgICAgIC8vIGkgbm90aWNlZCBpbiBjZXJ0YWluIGNvbnRleHQgd2UgZG9uJ3QgYWNjZXNzIHRoZSBhY3R1YWwgbWFwIGVsZW1lbnRcbiAgICAgICAgaWYgKCF0aGlzLl9tYXApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gYmluZCBtYXBib3hnbCBldmVudCBsaXN0ZW5lclxuICAgICAgICB0aGlzLl9tYXAub24oTUFQQk9YR0xfU1RZTEVfVVBEQVRFLCB0aGlzLl9vbk1hcGJveFN0eWxlVXBkYXRlKTtcblxuICAgICAgICB0aGlzLl9tYXAub24oTUFQQk9YR0xfUkVOREVSLCAoKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uTWFwUmVuZGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uTWFwUmVuZGVyKHRoaXMuX21hcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucHJvcHMuZ2V0TWFwYm94UmVmKSB7XG4gICAgICAgIC8vIFRoZSBwYXJlbnQgY29tcG9uZW50IGNhbiBnYWluIGFjY2VzcyB0byBvdXIgTWFwYm94R2xNYXAgYnlcbiAgICAgICAgLy8gcHJvdmlkaW5nIHRoaXMgY2FsbGJhY2suIE5vdGUgdGhhdCAnbWFwYm94JyB3aWxsIGJlIG51bGwgd2hlbiB0aGVcbiAgICAgICAgLy8gcmVmIGlzIHVuc2V0IChlLmcuIHdoZW4gYSBzcGxpdCBtYXAgaXMgY2xvc2VkKS5cbiAgICAgICAgdGhpcy5wcm9wcy5nZXRNYXBib3hSZWYobWFwYm94LCB0aGlzLnByb3BzLmluZGV4KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX29uRGVja0luaXRpYWxpemVkKGdsKSB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5vbkRlY2tJbml0aWFsaXplZCkge1xuICAgICAgICB0aGlzLnByb3BzLm9uRGVja0luaXRpYWxpemVkKHRoaXMuX2RlY2ssIGdsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfb25CZWZvcmVSZW5kZXIgPSAoe2dsfSkgPT4ge1xuICAgICAgc2V0TGF5ZXJCbGVuZGluZyhnbCwgdGhpcy5wcm9wcy5sYXllckJsZW5kaW5nKTtcbiAgICB9O1xuXG4gICAgX29uRGVja0Vycm9yID0gKGVycm9yLCBsYXllcikgPT4ge1xuICAgICAgaWYgKGVycm9yPy5tZXNzYWdlID09PSAnV2ViR0wgY29udGV4dCBpcyBsb3N0Jykge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtjb250ZXh0TG9zdDogdHJ1ZX0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGBBbiBlcnJvciBpbiBkZWNrLmdsOiAke2Vycm9yPy5tZXNzYWdlfSBpbiAke2xheWVyPy5pZH1gO1xuICAgICAgY29uc3Qgbm90aWZpY2F0aW9uSWQgPSBgJHtsYXllcj8uaWR9LSR7ZXJyb3I/Lm1lc3NhZ2V9YDtcblxuICAgICAgLy8gVGhyb3R0bGUgZXJyb3Igbm90aWZpY2F0aW9ucywgYXMgUmVhY3QgZG9lc24ndCBsaWtlIHRvbyBtYW55IHN0YXRlIGNoYW5nZXMgZnJvbSBoZXJlLlxuICAgICAgdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZCA9IHRoaXMuX2RlY2tHTEVycm9yc0VsYXBzZWQgfHwge307XG4gICAgICBjb25zdCBsYXN0U2hvd24gPSB0aGlzLl9kZWNrR0xFcnJvcnNFbGFwc2VkW25vdGlmaWNhdGlvbklkXTtcbiAgICAgIGlmICghbGFzdFNob3duIHx8IGxhc3RTaG93biA8IERhdGUubm93KCkgLSBUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRSkge1xuICAgICAgICB0aGlzLl9kZWNrR0xFcnJvcnNFbGFwc2VkW25vdGlmaWNhdGlvbklkXSA9IERhdGUubm93KCk7XG5cbiAgICAgICAgLy8gQ3JlYXRlIG5ldyBlcnJvciBub3RpZmljYXRpb24gb3IgdXBkYXRlIGV4aXN0aW5nIG9uZSB3aXRoIHNhbWUgaWQuXG4gICAgICAgIC8vIFVwZGF0ZSBpcyByZXF1aXJlZCB0byBwcmVzZXJ2ZSB0aGUgb3JkZXIgb2Ygbm90aWZpY2F0aW9ucyBhcyB0aGV5IHByb2JhYmx5IGFyZSBnb2luZyB0byBcImp1bXBcIiBiYXNlZCBvbiBvcmRlciBvZiBlcnJvcnMuXG4gICAgICAgIGNvbnN0IHt1aVN0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuICAgICAgICB1aVN0YXRlQWN0aW9ucy5hZGROb3RpZmljYXRpb24oXG4gICAgICAgICAgZXJyb3JOb3RpZmljYXRpb24oe1xuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JNZXNzYWdlLFxuICAgICAgICAgICAgaWQ6IG5vdGlmaWNhdGlvbklkXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLyogY29tcG9uZW50IHJlbmRlciBmdW5jdGlvbnMgKi9cblxuICAgIC8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbiAgICBfcmVuZGVyTWFwUG9wb3ZlcihsYXllcnNUb1JlbmRlcikge1xuICAgICAgLy8gT3ZlcnJpZGVuIGluIEJ1aWxkZXI6IGZlYXR1cmVzL2J1aWxkZXIvdWkvS2VwbGVyR2wvTWFwQ29udGFpbmVyL01hcENvbnRhaW5lci50c3hcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qIGVzbGludC1lbmFibGUgY29tcGxleGl0eSAqL1xuXG4gICAgX2dldEhvdmVyWFkodmlld3BvcnQsIGxuZ0xhdCkge1xuICAgICAgY29uc3Qgc2NyZWVuQ29vcmQgPSAhdmlld3BvcnQgfHwgIWxuZ0xhdCA/IG51bGwgOiB2aWV3cG9ydC5wcm9qZWN0KGxuZ0xhdCk7XG4gICAgICByZXR1cm4gc2NyZWVuQ29vcmQgJiYge3g6IHNjcmVlbkNvb3JkWzBdLCB5OiBzY3JlZW5Db29yZFsxXX07XG4gICAgfVxuXG4gICAgX3JlbmRlckRlY2tPdmVybGF5KGxheWVyc0ZvckRlY2spIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFwU3RhdGUsXG4gICAgICAgIG1hcFN0eWxlLFxuICAgICAgICBsYXllckRhdGEsXG4gICAgICAgIGxheWVyT3JkZXIsXG4gICAgICAgIGxheWVycyxcbiAgICAgICAgdmlzU3RhdGVBY3Rpb25zLFxuICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgbWFwYm94QXBpVXJsLFxuICAgICAgICBtYXNrUG9seWdvblxuICAgICAgfSA9IHRoaXMucHJvcHM7XG4gICAgICB0cmFja2Vycy5kcmF3Q291bnQ/LmluY3JlbWVudCgpO1xuXG4gICAgICAvLyBpbml0aWFsaXNlIGxheWVycyBmcm9tIHByb3BzIGlmIGV4aXN0c1xuICAgICAgbGV0IGRlY2tHbExheWVycyA9IHRoaXMucHJvcHMuZGVja0dsUHJvcHM/LmxheWVycyB8fCBbXTtcblxuICAgICAgLy8gd2FpdCB1bnRpbCBkYXRhIGlzIHJlYWR5IGJlZm9yZSByZW5kZXIgZGF0YSBsYXllcnNcbiAgICAgIGlmIChsYXllckRhdGEgJiYgbGF5ZXJEYXRhLmxlbmd0aCkge1xuICAgICAgICAvLyBsYXN0IGxheWVyIHJlbmRlciBmaXJzdFxuICAgICAgICBjb25zdCBkYXRhTGF5ZXJzID0gbGF5ZXJPcmRlclxuICAgICAgICAgIC5zbGljZSgpXG4gICAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAgIC5maWx0ZXIoaWR4ID0+IGxheWVyc0ZvckRlY2tbbGF5ZXJzW2lkeF0uaWRdKVxuICAgICAgICAgIC5yZWR1Y2UoKG92ZXJsYXlzLCBpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxheWVyQ2FsbGJhY2tzID0ge1xuICAgICAgICAgICAgICBvblNldExheWVyRG9tYWluOiB2YWwgPT4gdGhpcy5fb25MYXllclNldERvbWFpbihpZHgsIHZhbClcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBsYXllck92ZXJsYXkgPSByZW5kZXJEZWNrR2xMYXllcih0aGlzLnByb3BzLCBsYXllckNhbGxiYWNrcywgaWR4KTtcbiAgICAgICAgICAgIHJldHVybiBvdmVybGF5cy5jb25jYXQobGF5ZXJPdmVybGF5IHx8IFtdKTtcbiAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIGRlY2tHbExheWVycyA9IGRlY2tHbExheWVycy5jb25jYXQoZGF0YUxheWVycyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnByb3BzLmRlY2tHbFByb3BzPy5sYXllcnNPblRvcCkge1xuICAgICAgICBkZWNrR2xMYXllcnMgPSBkZWNrR2xMYXllcnMuY29uY2F0KHRoaXMucHJvcHMuZGVja0dsUHJvcHMubGF5ZXJzT25Ub3ApO1xuICAgICAgfVxuXG4gICAgICBpZiAobWFza1BvbHlnb24pIHtcbiAgICAgICAgZGVja0dsTGF5ZXJzLnB1c2goXG4gICAgICAgICAgbmV3IFNvbGlkUG9seWdvbkxheWVyKHtcbiAgICAgICAgICAgIGlkOiBNQVNLX0xBWUVSX0lELFxuICAgICAgICAgICAgb3BlcmF0aW9uOiBPUEVSQVRJT04uTUFTSyxcbiAgICAgICAgICAgIGRhdGE6IFttYXNrUG9seWdvbl0sXG4gICAgICAgICAgICBkYXRhQ29tcGFyYXRvcjogKGRhdGEsIG9sZERhdGEpID0+IGRhdGFbMF0gPT09IG9sZERhdGFbMF0sXG4gICAgICAgICAgICBnZXRQb2x5Z29uOiBkID0+IGQsXG4gICAgICAgICAgICBnZXRGaWxsQ29sb3I6IFsyNTUsIDI1NSwgMjU1LCAyNTVdXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1hcFN0eWxlLnZpc2libGVMYXllckdyb3Vwc1snM2QgYnVpbGRpbmcnXSkge1xuICAgICAgICBkZWNrR2xMYXllcnMucHVzaChcbiAgICAgICAgICBuZXcgVGhyZWVEQnVpbGRpbmdMYXllcih7XG4gICAgICAgICAgICBpZDogJ19rZXBsZXJnbF8zZC1idWlsZGluZycsXG4gICAgICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgICAgIHRocmVlREJ1aWxkaW5nQ29sb3I6IG1hcFN0eWxlLnRocmVlREJ1aWxkaW5nQ29sb3IsXG4gICAgICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgICAgICBnZXRGaWxsQ29sb3I6IG1hcFN0eWxlLnRocmVlREJ1aWxkaW5nQ29sb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBsZXQgZWZmZWN0cyA9IFtdO1xuICAgICAgaWYgKG1hcFN0eWxlLmJvdHRvbU1hcFN0eWxlPy50eXBlID09PSAnZ21hcHNfM2QnKSB7XG4gICAgICAgIC8vIEluamVjdCAzRCB0aWxlcyB3aGVuIG1hcCBzdHlsZSBpcyBWb3lhZ2VyIHdpdGhvdXQgbGF5ZXJzXG4gICAgICAgIGRlY2tHbExheWVycyA9IGRlY2tHbExheWVyc1xuICAgICAgICAgIC5maWx0ZXIobCA9PiBCb29sZWFuKGwgJiYgbC5jbG9uZSkpXG4gICAgICAgICAgLm1hcChsID0+IGwuY2xvbmUoe2V4dGVuc2lvbnM6IFsuLi5sLnByb3BzLmV4dGVuc2lvbnMsIHRlcnJhaW5FeHRlbnNpb25dfSkpO1xuICAgICAgICBkZWNrR2xMYXllcnMucHVzaCh0aWxlczNkLmNsb25lKCkpO1xuXG4gICAgICAgIGlmIChtYXBTdHlsZS5zdHlsZVR5cGUgPT09ICdnb29nbGUtM2Qtc2tldGNoJykge1xuICAgICAgICAgIGNvbnN0IGlua0VmZmVjdCA9IG5ldyBQb3N0UHJvY2Vzc0VmZmVjdChpbmssIHtzdHJlbmd0aDogbWFwU3R5bGUuc2tldGNoVmFsdWUgfHwgMC4yfSk7XG4gICAgICAgICAgY29uc3QgYWxsRWZmZWN0cyA9IFtcbiAgICAgICAgICAgIGxpZ2h0aW5nRWZmZWN0LFxuICAgICAgICAgICAgaHVlU2F0dXJhdGlvbkVmZmVjdCxcbiAgICAgICAgICAgIGJyaWdodG5lc3NDb250cmFzdEVmZmVjdCxcbiAgICAgICAgICAgIHZpYnJhbmNlRWZmZWN0LFxuICAgICAgICAgICAgaW5rRWZmZWN0XG4gICAgICAgICAgXTtcbiAgICAgICAgICBlZmZlY3RzID0gYWxsRWZmZWN0cztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBMaW1pdCByZW5kZXJzXG4gICAgICBjb25zdCBoYXNSZW5kZXJlZCA9IHRoaXMuX2hhc1JlbmRlcmVkO1xuICAgICAgY29uc3QgcmVzZXRIYXNSZW5kZXJlZCA9ICgpID0+IChoYXNSZW5kZXJlZC5jdXJyZW50ID0gZmFsc2UpO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPERlY2tHTFxuICAgICAgICAgIGNvbnRyb2xsZXI9e3RydWV9XG4gICAgICAgICAgey4uLnRoaXMucHJvcHMuZGVja0dsUHJvcHN9XG4gICAgICAgICAgdmlld1N0YXRlPXttYXBTdGF0ZX1cbiAgICAgICAgICBvblZpZXdTdGF0ZUNoYW5nZT17KHt2aWV3U3RhdGUsIGludGVyYWN0aW9uU3RhdGV9KSA9PiB7XG4gICAgICAgICAgICAvLyBMaW1pdCB1cGRhdGVzIChwcmV2ZW50cyBmcmVlemVzIHdoZW4gZGV2IHRvb2xzIG9wZW4pXG4gICAgICAgICAgICBpZiAoIWhhc1JlbmRlcmVkLmN1cnJlbnQgJiYgdmlld1N0YXRlLndpZHRoID4gMSAmJiB2aWV3U3RhdGUuaGVpZ2h0ID4gMSkge1xuICAgICAgICAgICAgICBoYXNSZW5kZXJlZC5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5fb25WaWV3cG9ydENoYW5nZSh2aWV3U3RhdGUsIGludGVyYWN0aW9uU3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgaWQ9XCJkZWZhdWx0LWRlY2tnbC1vdmVybGF5XCJcbiAgICAgICAgICBsYXllcnM9e2RlY2tHbExheWVyc31cbiAgICAgICAgICBlZmZlY3RzPXtlZmZlY3RzfVxuICAgICAgICAgIG9uQmVmb3JlUmVuZGVyPXtvcHRzID0+IHtcbiAgICAgICAgICAgIHJlc2V0SGFzUmVuZGVyZWQoKTtcbiAgICAgICAgICAgIHRoaXMuX29uQmVmb3JlUmVuZGVyKG9wdHMpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25Ib3Zlcj17dmlzU3RhdGVBY3Rpb25zLm9uTGF5ZXJIb3Zlcn1cbiAgICAgICAgICBvbkNsaWNrPXt2aXNTdGF0ZUFjdGlvbnMub25MYXllckNsaWNrfVxuICAgICAgICAgIG9uRXJyb3I9e2UgPT4ge1xuICAgICAgICAgICAgZGVidWdnZXI7XG4gICAgICAgICAgICB0aGlzLl9vbkRlY2tFcnJvcihlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIHJlZj17Y29tcCA9PiB7XG4gICAgICAgICAgICBpZiAoY29tcCAmJiBjb21wLmRlY2sgJiYgY29tcC5kZWNrICE9PSB0aGlzLl9kZWNrKSB7XG4gICAgICAgICAgICAgIHRoaXMuX2RlY2sgPSBjb21wLmRlY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbldlYkdMSW5pdGlhbGl6ZWQ9e2dsID0+IHRoaXMuX29uRGVja0luaXRpYWxpemVkKGdsKX1cbiAgICAgICAgICBsYXllckZpbHRlcj17KHtsYXllciwgdmlld3BvcnR9KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGlzTmFOKGxheWVyLnByb3BzLnZpc2liaWxpdHlCeVpvb20/Lm1pbikgfHxcbiAgICAgICAgICAgICAgaXNOYU4obGF5ZXIucHJvcHMudmlzaWJpbGl0eUJ5Wm9vbT8ubWF4KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY3VycmVudFpvb21SYW5nZSA9IE1hdGgucm91bmQobWFwU3RhdGUuem9vbSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIGxheWVyLnByb3BzLnZpc2liaWxpdHlCeVpvb20ubWluIDw9IGN1cnJlbnRab29tUmFuZ2UgJiZcbiAgICAgICAgICAgICAgbGF5ZXIucHJvcHMudmlzaWJpbGl0eUJ5Wm9vbS5tYXggPj0gY3VycmVudFpvb21SYW5nZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBfdXBkYXRlTWFwYm94TGF5ZXJzKCkge1xuICAgICAgY29uc3QgbWFwYm94TGF5ZXJzID0gdGhpcy5tYXBib3hMYXllcnNTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGlmICghT2JqZWN0LmtleXMobWFwYm94TGF5ZXJzKS5sZW5ndGggJiYgIU9iamVjdC5rZXlzKHRoaXMucHJldmlvdXNMYXllcnMpLmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZU1hcGJveExheWVycyh0aGlzLl9tYXAsIG1hcGJveExheWVycywgdGhpcy5wcmV2aW91c0xheWVycyk7XG5cbiAgICAgIHRoaXMucHJldmlvdXNMYXllcnMgPSBtYXBib3hMYXllcnM7XG4gICAgfVxuXG4gICAgX3JlbmRlck1hcGJveE92ZXJsYXlzKCkge1xuICAgICAgaWYgKHRoaXMuX21hcCAmJiB0aGlzLl9tYXAuaXNTdHlsZUxvYWRlZCgpKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZU1hcGJveExheWVycygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIF9vblZpZXdwb3J0Q2hhbmdlID0gKHZpZXdTdGF0ZSwgaW50ZXJhY3Rpb25TdGF0ZSkgPT4ge1xuICAgICAgdHJhY2tlcnMudmlld3BvcnRDaGFuZ2VDb3VudD8uaW5jcmVtZW50KCk7XG5cbiAgICAgIGNvbnN0IHt3aWR0aCwgaGVpZ2h0LCAuLi5yZXN0Vmlld1N0YXRlfSA9IHZpZXdTdGF0ZTtcbiAgICAgIGNvbnN0IHtwcmltYXJ5LCBpc0V4cG9ydH0gPSB0aGlzLnByb3BzO1xuICAgICAgLy8gcmVhY3QtbWFwLWdsIHNlbmRzIDAsMCBkaW1lbnNpb25zIGR1cmluZyBpbml0aWFsaXphdGlvblxuICAgICAgLy8gYWZ0ZXIgd2UgaGF2ZSByZWNlaXZlZCBwcm9wZXIgZGltZW5zaW9ucyBmcm9tIG9ic2VydmVEaW1lbnNpb25zXG4gICAgICBjb25zdCBuZXh0ID0ge1xuICAgICAgICAuLi4od2lkdGggPiAwICYmIGhlaWdodCA+IDAgPyB2aWV3U3RhdGUgOiByZXN0Vmlld1N0YXRlKSxcblxuICAgICAgICAvLyBBdXRvLXVwZGF0ZSB0aGUgY2FtZXJhIGhlaWdodCBhY2NvcmRpbmcgdG8gM0QgdGlsZXMsIGV4Y2VwdCB3aGVuIHRyYW5zaXRpb25pbmdcbiAgICAgICAgLi4uKGludGVyYWN0aW9uU3RhdGUgJiYgIWludGVyYWN0aW9uU3RhdGUuaW5UcmFuc2l0aW9uICYmIHtwb3NpdGlvbjogWzAsIDAsIGhdfSlcbiAgICAgICAgLy8gZW5hYmxpbmcgdHJhbnNpdGlvbiBpbiB0d28gbWFwcyBtYXkgbGVhZCB0byBlbmRsZXNzIHVwZGF0ZSBsb29wc1xuICAgICAgICAvLyB0cmFuc2l0aW9uRHVyYXRpb246IHByaW1hcnkgPyBUUkFOU0lUSU9OX0RVUkFUSU9OIDogMCAvLyBEaXNhYmxlIGZvciAzRCB0aWxlcyB0cmFuc2l0aW9uc1xuICAgICAgfTtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5vblZpZXdTdGF0ZUNoYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnByb3BzLm9uVmlld1N0YXRlQ2hhbmdlKG5leHQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzRXhwb3J0KSB7XG4gICAgICAgIHRoaXMucHJvcHMubWFwU3RhdGVBY3Rpb25zLnVwZGF0ZU1hcChuZXh0KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3RvZ2dsZU1hcENvbnRyb2wgPSBwYW5lbElkID0+IHtcbiAgICAgIGNvbnN0IHtpbmRleCwgdWlTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcblxuICAgICAgdWlTdGF0ZUFjdGlvbnMudG9nZ2xlTWFwQ29udHJvbChwYW5lbElkLCBpbmRleCk7XG4gICAgfTtcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbiAgICBfcmVuZGVyTWFwKCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgIG1hcFN0YXRlQWN0aW9ucyxcbiAgICAgICAgc2tldGNoVmFsdWUsXG4gICAgICAgIGxheWVycyxcbiAgICAgICAgTWFwQ29tcG9uZW50LFxuICAgICAgICBkYXRhc2V0cyxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgbWFwQ29udHJvbHMsXG4gICAgICAgIGlzRXhwb3J0LFxuICAgICAgICBsb2NhbGUsXG4gICAgICAgIHVpU3RhdGVBY3Rpb25zLFxuICAgICAgICB2aXNTdGF0ZUFjdGlvbnMsXG4gICAgICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgICAgICBlZGl0b3IsXG4gICAgICAgIGluZGV4LFxuICAgICAgICBwcmltYXJ5XG4gICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgY29uc3QgbGF5ZXJzVG9SZW5kZXIgPSB0aGlzLmxheWVyc1RvUmVuZGVyU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBsYXllcnNGb3JEZWNrID0gdGhpcy5sYXllcnNGb3JEZWNrU2VsZWN0b3IodGhpcy5wcm9wcyk7XG5cbiAgICAgIGNvbnN0IG1hcFByb3BzID0ge1xuICAgICAgICAuLi5tYXBTdGF0ZSxcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogdHJ1ZSxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgdHJhbnNmb3JtUmVxdWVzdFxuICAgICAgfTtcblxuICAgICAgY29uc3QgaXNFZGl0ID0gKG1hcENvbnRyb2xzLm1hcERyYXcgfHwge30pLmFjdGl2ZTtcblxuICAgICAgY29uc3QgaGFzR2VvY29kZXJMYXllciA9IGxheWVycy5maW5kKGwgPT4gbC5pZCA9PT0gR0VPQ09ERVJfTEFZRVJfSUQpO1xuICAgICAgY29uc3QgaXNTcGxpdCA9IEJvb2xlYW4obWFwU3RhdGUuaXNTcGxpdCk7XG4gICAgICBjb25zdCBtb3VzZVBvc2l0aW9uID0gdGhpcy5fbW91c2VQb3NpdGlvbjtcblxuICAgICAgY29uc3QgbmVlZHNCYXNlbWFwID0gbWFwU3R5bGUuYm90dG9tTWFwU3R5bGUudHlwZSAhPT0gJ2dtYXBzXzNkJztcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8TWFwQ29udHJvbFxuICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgYXZhaWxhYmxlTG9jYWxlcz17T2JqZWN0LmtleXMoTE9DQUxFX0NPREVTKX1cbiAgICAgICAgICAgIGRyYWdSb3RhdGU9e21hcFN0YXRlLmRyYWdSb3RhdGV9XG4gICAgICAgICAgICBpc1NwbGl0PXtpc1NwbGl0fVxuICAgICAgICAgICAgcHJpbWFyeT17cHJpbWFyeX1cbiAgICAgICAgICAgIGlzRXhwb3J0PXtpc0V4cG9ydH1cbiAgICAgICAgICAgIGxheWVycz17bGF5ZXJzfVxuICAgICAgICAgICAgbGF5ZXJzVG9SZW5kZXI9e2xheWVyc1RvUmVuZGVyfVxuICAgICAgICAgICAgbWFwSW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgbWFwQ29udHJvbHM9e21hcENvbnRyb2xzfVxuICAgICAgICAgICAgcmVhZE9ubHk9e3RoaXMucHJvcHMucmVhZE9ubHl9XG4gICAgICAgICAgICBzY2FsZT17bWFwU3RhdGUuc2NhbGUgfHwgMX1cbiAgICAgICAgICAgIHRvcD17aW50ZXJhY3Rpb25Db25maWcuZ2VvY29kZXIgJiYgaW50ZXJhY3Rpb25Db25maWcuZ2VvY29kZXIuZW5hYmxlZCA/IDUyIDogMH1cbiAgICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICBvblRvZ2dsZVBlcnNwZWN0aXZlPXttYXBTdGF0ZUFjdGlvbnMudG9nZ2xlUGVyc3BlY3RpdmV9XG4gICAgICAgICAgICBvblRvZ2dsZVNwbGl0TWFwPXttYXBTdGF0ZUFjdGlvbnMudG9nZ2xlU3BsaXRNYXB9XG4gICAgICAgICAgICBvbk1hcFRvZ2dsZUxheWVyPXt0aGlzLl9oYW5kbGVNYXBUb2dnbGVMYXllcn1cbiAgICAgICAgICAgIG9uVG9nZ2xlTWFwQ29udHJvbD17dGhpcy5fdG9nZ2xlTWFwQ29udHJvbH1cbiAgICAgICAgICAgIG9uU2V0RWRpdG9yTW9kZT17dmlzU3RhdGVBY3Rpb25zLnNldEVkaXRvck1vZGV9XG4gICAgICAgICAgICBvblNldExvY2FsZT17dWlTdGF0ZUFjdGlvbnMuc2V0TG9jYWxlfVxuICAgICAgICAgICAgb25Ub2dnbGVFZGl0b3JWaXNpYmlsaXR5PXt2aXNTdGF0ZUFjdGlvbnMudG9nZ2xlRWRpdG9yVmlzaWJpbGl0eX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtuZWVkc0Jhc2VtYXAgPyAoXG4gICAgICAgICAgICA8TWFwQ29tcG9uZW50XG4gICAgICAgICAgICAgIHsuLi5tYXBQcm9wc31cbiAgICAgICAgICAgICAga2V5PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLl9zZXRNYXBib3hNYXB9XG4gICAgICAgICAgICAgIG1hcFN0eWxlPXttYXBTdHlsZS5ib3R0b21NYXBTdHlsZX1cbiAgICAgICAgICAgICAgc2tldGNoVmFsdWU9e3NrZXRjaFZhbHVlfVxuICAgICAgICAgICAgICBnZXRDdXJzb3I9e3RoaXMucHJvcHMuaG92ZXJJbmZvID8gKCkgPT4gJ3BvaW50ZXInIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICBvbk1vdXNlTW92ZT17ZXZ0ID0+IHtcbiAgICAgICAgICAgICAgICAvLyBTZW5kaW5nIG1vdXNlIG1vdmUgdXBkYXRlcyB2aWEgUmVkdXggaXMgZXhwZW5zaXZlLiBTdG9yZVxuICAgICAgICAgICAgICAgIC8vIGxvY2FsbHkgYW5kIHJlbHkgb24gZGVjay5nbCB0byBkcml2ZSByZW5kZXIgdXBkYXRlc1xuICAgICAgICAgICAgICAgIC8vIFNlZSBCdWlsZGVyOiBmZWF0dXJlcy9idWlsZGVyL3VpL0tlcGxlckdsL01hcENvbnRhaW5lci9NYXBDb250YWluZXIudHN4XG4gICAgICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jdXJyZW50ID0ge21vdXNlUG9zaXRpb246IGV2dC5wb2ludH07XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtQRVJGX0RFQlVHICYmIHJlbmRlclBlcmZvcm1hbmNlU3RhdHMoKX1cbiAgICAgICAgICAgICAge3RoaXMuX3JlbmRlckRlY2tPdmVybGF5KGxheWVyc0ZvckRlY2spfVxuICAgICAgICAgICAgICB7dGhpcy5fcmVuZGVyTWFwYm94T3ZlcmxheXMoKX1cbiAgICAgICAgICAgICAgPEVkaXRvclxuICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgICAgICAgZmlsdGVycz17dGhpcy5wb2x5Z29uRmlsdGVycyh0aGlzLnByb3BzKX1cbiAgICAgICAgICAgICAgICBpc0VuYWJsZWQ9e2lzRWRpdH1cbiAgICAgICAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICAgICAgICBsYXllcnNUb1JlbmRlcj17bGF5ZXJzVG9SZW5kZXJ9XG4gICAgICAgICAgICAgICAgb25EZWxldGVGZWF0dXJlPXt2aXNTdGF0ZUFjdGlvbnMuZGVsZXRlRmVhdHVyZX1cbiAgICAgICAgICAgICAgICBvblNlbGVjdD17dmlzU3RhdGVBY3Rpb25zLnNldFNlbGVjdGVkRmVhdHVyZX1cbiAgICAgICAgICAgICAgICBvblVwZGF0ZT17dmlzU3RhdGVBY3Rpb25zLnNldEZlYXR1cmVzfVxuICAgICAgICAgICAgICAgIG9uVG9nZ2xlUG9seWdvbkZpbHRlcj17dmlzU3RhdGVBY3Rpb25zLnNldFBvbHlnb25GaWx0ZXJMYXllcn1cbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgcG9pbnRlckV2ZW50czogaXNFZGl0ID8gJ2FsbCcgOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGVkaXRvci52aXNpYmxlID8gJ2Jsb2NrJyA6ICdub25lJ1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L01hcENvbXBvbmVudD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAge1BFUkZfREVCVUcgJiYgcmVuZGVyUGVyZm9ybWFuY2VTdGF0cygpfVxuICAgICAgICAgICAgICB7dGhpcy5fcmVuZGVyRGVja092ZXJsYXkobGF5ZXJzRm9yRGVjayl9XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHttYXBTdHlsZS50b3BNYXBTdHlsZSB8fCBoYXNHZW9jb2RlckxheWVyID8gKFxuICAgICAgICAgICAgPGRpdiBzdHlsZT17TUFQX1NUWUxFLnRvcH0+XG4gICAgICAgICAgICAgIDxNYXBDb21wb25lbnQgey4uLm1hcFByb3BzfSBrZXk9XCJ0b3BcIiBtYXBTdHlsZT17bWFwU3R5bGUudG9wTWFwU3R5bGV9PlxuICAgICAgICAgICAgICAgIHt0aGlzLl9yZW5kZXJEZWNrT3ZlcmxheSh7W0dFT0NPREVSX0xBWUVSX0lEXTogdHJ1ZX0pfVxuICAgICAgICAgICAgICA8L01hcENvbXBvbmVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIHt0aGlzLl9yZW5kZXJNYXBQb3BvdmVyKGxheWVyc1RvUmVuZGVyKX1cbiAgICAgICAgICB7IWlzU3BsaXQgfHwgaW5kZXggPT09IDEgPyA8QXR0cmlidXRpb24gLz4gOiBudWxsfVxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge21hcFN0YXRlLCBtYXBTdHlsZX0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3QgY29udGV4dExvc3QgPSB0aGlzLnN0YXRlPy5jb250ZXh0TG9zdDtcblxuICAgICAgaWYgKGNvbnRleHRMb3N0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkTWFwQ29udGFpbmVyIHJlZj17dGhpcy5fcmVmfSBzdHlsZT17TUFQX1NUWUxFLmNvbnRhaW5lcn0gZ2xvYmU9e21hcFN0YXRlLmdsb2JlfT5cbiAgICAgICAgICB7bWFwU3R5bGUuYm90dG9tTWFwU3R5bGUgJiYgdGhpcy5fcmVuZGVyTWFwKCl9XG4gICAgICAgIDwvU3R5bGVkTWFwQ29udGFpbmVyPlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBNYXBDb250YWluZXIuZGlzcGxheU5hbWUgPSAnTWFwQ29udGFpbmVyJztcblxuICByZXR1cm4gTWFwQ29udGFpbmVyO1xufVxuIl19
842
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL21hcC1jb250YWluZXIuanMiXSwibmFtZXMiOlsiR09PR0xFX01BUFNfQVBJX0tFWSIsIkN1c3RvbVRpbGUzRExheWVyIiwibGF5ZXIiLCJ2aWV3cG9ydCIsImxvZFpvb20iLCJNYXRoIiwibG9nMiIsInByb3BzIiwidGlsZSIsImxvZE1ldHJpY1ZhbHVlIiwiem9vbSIsIlRpbGUzRExheWVyIiwiaCIsInRpbGVzM2QiLCJpZCIsImRhdGEiLCJvblRpbGVzZXRMb2FkIiwidGlsZXNldDNkIiwib3B0aW9ucyIsIm1heGltdW1TY3JlZW5TcGFjZUVycm9yIiwiX29uVGlsZUxvYWRFcnJvciIsIm9uVHJhdmVyc2FsQ29tcGxldGUiLCJzZWxlY3RlZFRpbGVzIiwibWluTG9kIiwiSW5maW5pdHkiLCJmaWx0ZXJlZCIsImZpbHRlciIsInQiLCJsZW5ndGgiLCJtYXAiLCJib3VuZGluZ0JveCIsInJlZHVjZSIsImEiLCJuIiwibG9hZE9wdGlvbnMiLCJmZXRjaCIsImhlYWRlcnMiLCJvcGVyYXRpb24iLCJ0ZXJyYWluRXh0ZW5zaW9uIiwiVGVycmFpbkV4dGVuc2lvbiIsImFtYmllbnRMaWdodCIsIkFtYmllbnRMaWdodCIsImNvbG9yIiwiaW50ZW5zaXR5Iiwic3VuTGlnaHQiLCJfU3VuTGlnaHQiLCJ0aW1lc3RhbXAiLCJfc2hhZG93IiwibGlnaHRpbmdFZmZlY3QiLCJMaWdodGluZ0VmZmVjdCIsInNoYWRvd0NvbG9yIiwiYnJpZ2h0bmVzc0NvbnRyYXN0RWZmZWN0IiwiUG9zdFByb2Nlc3NFZmZlY3QiLCJicmlnaHRuZXNzQ29udHJhc3QiLCJjb250cmFzdCIsImJyaWdodG5lc3MiLCJodWVTYXR1cmF0aW9uRWZmZWN0IiwiaHVlU2F0dXJhdGlvbiIsImh1ZSIsInNhdHVyYXRpb24iLCJ2aWJyYW5jZUVmZmVjdCIsInZpYnJhbmNlIiwiYW1vdW50IiwidHJhY2tlcnMiLCJQRVJGX0RFQlVHIiwid2luZG93IiwibG9jYXRpb24iLCJzZWFyY2giLCJpbmNsdWRlcyIsImRyYXdDb3VudCIsInZpZXdwb3J0Q2hhbmdlQ291bnQiLCJMYXllciIsIlRpbGVMYXllciIsIk1BUF9TVFlMRSIsImNvbnRhaW5lciIsImRpc3BsYXkiLCJwb3NpdGlvbiIsIndpZHRoIiwiaGVpZ2h0IiwidG9wIiwicG9pbnRlckV2ZW50cyIsIk1BUEJPWEdMX1NUWUxFX1VQREFURSIsIk1BUEJPWEdMX1JFTkRFUiIsIlRSQU5TSVRJT05fRFVSQVRJT04iLCJBdHRyaWJ1dGlvbiIsIk1hcENvbnRhaW5lckZhY3RvcnkiLCJkZXBzIiwiTWFwUG9wb3ZlckZhY3RvcnkiLCJNYXBDb250cm9sRmFjdG9yeSIsIkVkaXRvckZhY3RvcnkiLCJNYXBQb3BvdmVyIiwiTWFwQ29udHJvbCIsIkVkaXRvciIsIk1hcENvbnRhaW5lciIsImRpbWVuc2lvbnMiLCJwcmltYXJ5IiwiaXNFeHBvcnQiLCJtYXBTdGF0ZUFjdGlvbnMiLCJ1cGRhdGVNYXAiLCJza2V0Y2hWYWx1ZSIsImxheWVycyIsImxheWVyRGF0YSIsIm1hcExheWVycyIsImxheWVyT3JkZXIiLCJwb3B1cFNldHRpbmdzIiwibGF5ZXJzU2VsZWN0b3IiLCJsYXllckRhdGFTZWxlY3RvciIsIm1hcExheWVyc1NlbGVjdG9yIiwicG9wdXBTZXR0aW5nc1NlbGVjdG9yIiwicHJlcGFyZUxheWVyc1RvUmVuZGVyIiwicHJlcGFyZUxheWVyc0ZvckRlY2siLCJmaWx0ZXJzIiwiZmlsdGVyc1NlbGVjdG9yIiwiZiIsInR5cGUiLCJGSUxURVJfVFlQRVMiLCJwb2x5Z29uIiwibGF5ZXJPcmRlclNlbGVjdG9yIiwibGF5ZXJzVG9SZW5kZXJTZWxlY3RvciIsImdlbmVyYXRlTWFwYm94TGF5ZXJzIiwidmlzU3RhdGVBY3Rpb25zIiwib25MYXllckNsaWNrIiwiaWR4IiwiY29sb3JEb21haW4iLCJsYXllckNvbmZpZ0NoYW5nZSIsImxheWVySWQiLCJpbmRleCIsIm1hcEluZGV4IiwidG9nZ2xlTGF5ZXJGb3JNYXAiLCJwcmV2aW91c0xheWVycyIsIl91cGRhdGVNYXBib3hMYXllcnMiLCJvbk1hcFN0eWxlTG9hZGVkIiwiX21hcCIsIm1hcGJveCIsImdldE1hcCIsIm9uIiwiX29uTWFwYm94U3R5bGVVcGRhdGUiLCJvbk1hcFJlbmRlciIsImdldE1hcGJveFJlZiIsImdsIiwibGF5ZXJCbGVuZGluZyIsImVycm9yIiwibWVzc2FnZSIsInNldFN0YXRlIiwiY29udGV4dExvc3QiLCJlcnJvck1lc3NhZ2UiLCJub3RpZmljYXRpb25JZCIsIl9kZWNrR0xFcnJvcnNFbGFwc2VkIiwibGFzdFNob3duIiwiRGF0ZSIsIm5vdyIsIlRIUk9UVExFX05PVElGSUNBVElPTl9USU1FIiwidWlTdGF0ZUFjdGlvbnMiLCJhZGROb3RpZmljYXRpb24iLCJ2aWV3U3RhdGUiLCJpbnRlcmFjdGlvblN0YXRlIiwiaW5jcmVtZW50IiwicmVzdFZpZXdTdGF0ZSIsIm5leHQiLCJpblRyYW5zaXRpb24iLCJvblZpZXdTdGF0ZUNoYW5nZSIsInBhbmVsSWQiLCJ0b2dnbGVNYXBDb250cm9sIiwiX2RlY2siLCJfcmVmIiwiX2hhc1JlbmRlcmVkIiwiX21vdXNlUG9zaXRpb24iLCJjdXJyZW50IiwiX2hhbmRsZVJlc2l6ZSIsInN0YXRlIiwib2ZmIiwib25EZWNrSW5pdGlhbGl6ZWQiLCJsYXllcnNUb1JlbmRlciIsImxuZ0xhdCIsInNjcmVlbkNvb3JkIiwicHJvamVjdCIsIngiLCJ5IiwibGF5ZXJzRm9yRGVjayIsIm1hcFN0YXRlIiwibWFwU3R5bGUiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsIm1hc2tQb2x5Z29uIiwiZGVja0dsTGF5ZXJzIiwiZGVja0dsUHJvcHMiLCJkYXRhTGF5ZXJzIiwic2xpY2UiLCJyZXZlcnNlIiwib3ZlcmxheXMiLCJsYXllckNhbGxiYWNrcyIsIm9uU2V0TGF5ZXJEb21haW4iLCJ2YWwiLCJfb25MYXllclNldERvbWFpbiIsImxheWVyT3ZlcmxheSIsImNvbmNhdCIsImxheWVyc09uVG9wIiwicHVzaCIsIlNvbGlkUG9seWdvbkxheWVyIiwiTUFTS19MQVlFUl9JRCIsIk9QRVJBVElPTiIsIk1BU0siLCJkYXRhQ29tcGFyYXRvciIsIm9sZERhdGEiLCJnZXRQb2x5Z29uIiwiZCIsImdldEZpbGxDb2xvciIsInZpc2libGVMYXllckdyb3VwcyIsIlRocmVlREJ1aWxkaW5nTGF5ZXIiLCJ0aHJlZURCdWlsZGluZ0NvbG9yIiwidXBkYXRlVHJpZ2dlcnMiLCJlZmZlY3RzIiwiYm90dG9tTWFwU3R5bGUiLCJsIiwiQm9vbGVhbiIsImNsb25lIiwiZXh0ZW5zaW9ucyIsInN0eWxlVHlwZSIsImlua0VmZmVjdCIsImluayIsInN0cmVuZ3RoIiwiYWxsRWZmZWN0cyIsImhhc1JlbmRlcmVkIiwicmVzZXRIYXNSZW5kZXJlZCIsIl9vblZpZXdwb3J0Q2hhbmdlIiwib3B0cyIsIl9vbkJlZm9yZVJlbmRlciIsIm9uTGF5ZXJIb3ZlciIsImUiLCJfb25EZWNrRXJyb3IiLCJjb21wIiwiZGVjayIsIl9vbkRlY2tJbml0aWFsaXplZCIsImlzTmFOIiwidmlzaWJpbGl0eUJ5Wm9vbSIsIm1pbiIsIm1heCIsImN1cnJlbnRab29tUmFuZ2UiLCJyb3VuZCIsIm1hcGJveExheWVycyIsIm1hcGJveExheWVyc1NlbGVjdG9yIiwiT2JqZWN0Iiwia2V5cyIsImlzU3R5bGVMb2FkZWQiLCJNYXBDb21wb25lbnQiLCJkYXRhc2V0cyIsIm1hcENvbnRyb2xzIiwibG9jYWxlIiwiaW50ZXJhY3Rpb25Db25maWciLCJlZGl0b3IiLCJsYXllcnNGb3JEZWNrU2VsZWN0b3IiLCJtYXBQcm9wcyIsInByZXNlcnZlRHJhd2luZ0J1ZmZlciIsInRyYW5zZm9ybVJlcXVlc3QiLCJpc0VkaXQiLCJtYXBEcmF3IiwiYWN0aXZlIiwiaGFzR2VvY29kZXJMYXllciIsImZpbmQiLCJHRU9DT0RFUl9MQVlFUl9JRCIsImlzU3BsaXQiLCJtb3VzZVBvc2l0aW9uIiwibmVlZHNCYXNlbWFwIiwiTE9DQUxFX0NPREVTIiwiZHJhZ1JvdGF0ZSIsInJlYWRPbmx5Iiwic2NhbGUiLCJnZW9jb2RlciIsImVuYWJsZWQiLCJ0b2dnbGVQZXJzcGVjdGl2ZSIsInRvZ2dsZVNwbGl0TWFwIiwiX2hhbmRsZU1hcFRvZ2dsZUxheWVyIiwiX3RvZ2dsZU1hcENvbnRyb2wiLCJzZXRFZGl0b3JNb2RlIiwic2V0TG9jYWxlIiwidG9nZ2xlRWRpdG9yVmlzaWJpbGl0eSIsIl9zZXRNYXBib3hNYXAiLCJob3ZlckluZm8iLCJ1bmRlZmluZWQiLCJldnQiLCJwb2ludCIsIl9yZW5kZXJEZWNrT3ZlcmxheSIsIl9yZW5kZXJNYXBib3hPdmVybGF5cyIsInBvbHlnb25GaWx0ZXJzIiwiZGVsZXRlRmVhdHVyZSIsInNldFNlbGVjdGVkRmVhdHVyZSIsInNldEZlYXR1cmVzIiwic2V0UG9seWdvbkZpbHRlckxheWVyIiwidmlzaWJsZSIsInRvcE1hcFN0eWxlIiwiX3JlbmRlck1hcFBvcG92ZXIiLCJnbG9iZSIsIl9yZW5kZXJNYXAiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJpc1JlcXVpcmVkIiwic3RyaW5nIiwiYXJyYXlPZiIsImFueSIsIm51bWJlciIsImJvb2wiLCJjbGlja2VkIiwib25NYXBUb2dnbGVMYXllciIsImZ1bmMiLCJNYXBib3hHTE1hcCIsImRpc3BsYXlOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFRQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFPQTs7QUFDQTs7QUFHQTs7QUFxRUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWxFQSxJQUFNQSxtQkFBbUIsR0FBRyx5Q0FBNUI7O0lBRU1DLGlCOzs7Ozs7Ozs7Ozs7V0FHSiw4QkFBa0M7QUFBQSxVQUFsQkMsS0FBa0IsUUFBbEJBLEtBQWtCO0FBQUEsVUFBWEMsUUFB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QVVDLE1BeEJKO0FBeUJqQmpNLElBQUFBLFNBQVMsRUFBRWdNLHNCQUFVQyxNQXpCSjtBQTBCakJRLElBQUFBLGdCQUFnQixFQUFFVCxzQkFBVVUsSUExQlg7QUEyQmpCN0ssSUFBQUEsZ0JBQWdCLEVBQUVtSyxzQkFBVVUsSUEzQlg7QUE0QmpCdkssSUFBQUEsV0FBVyxFQUFFNkosc0JBQVVVLElBNUJOO0FBNkJqQnRLLElBQUFBLFlBQVksRUFBRTRKLHNCQUFVVSxJQTdCUDtBQThCakJsTCxJQUFBQSxLQUFLLEVBQUV3SyxzQkFBVU0sTUE5QkE7QUErQmpCcE0sSUFBQUEsYUFBYSxFQUFFOEwsc0JBQVVDO0FBL0JSLEdBRnFEO0FBQUEsbUNBQ3BFMU0sWUFEb0Usa0JBb0NsRDtBQUNwQnVKLElBQUFBLFlBQVksRUFBRTZELHNCQURNO0FBRXBCeEgsSUFBQUEsV0FBVyxFQUFFLEVBRk87QUFHcEIzRCxJQUFBQSxLQUFLLEVBQUUsQ0FIYTtBQUlwQi9CLElBQUFBLE9BQU8sRUFBRTtBQUpXLEdBcENrRDtBQXdpQjFFRixFQUFBQSxZQUFZLENBQUNxTixXQUFiLEdBQTJCLGNBQTNCO0FBRUEsU0FBT3JOLFlBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbi8vIGxpYnJhcmllc1xuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgTWFwYm94R0xNYXAgZnJvbSAncmVhY3QtbWFwLWdsJztcbmltcG9ydCBEZWNrR0wgZnJvbSAnQGRlY2suZ2wvcmVhY3QnO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3Rvcn0gZnJvbSAncmVzZWxlY3QnO1xuaW1wb3J0IHtcbiAgT1BFUkFUSU9OLFxuICBMYXllcixcbiAgQW1iaWVudExpZ2h0LFxuICBMaWdodGluZ0VmZmVjdCxcbiAgUG9zdFByb2Nlc3NFZmZlY3QsXG4gIF9TdW5MaWdodFxufSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7YnJpZ2h0bmVzc0NvbnRyYXN0LCBodWVTYXR1cmF0aW9uLCBpbmssIHZpYnJhbmNlfSBmcm9tICdAbHVtYS5nbC9zaGFkZXJ0b29scyc7XG5pbXBvcnQge1NvbGlkUG9seWdvbkxheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IHtUaWxlTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2dlby1sYXllcnMnO1xuaW1wb3J0IHtlcnJvck5vdGlmaWNhdGlvbn0gZnJvbSAndXRpbHMvbm90aWZpY2F0aW9ucy11dGlscyc7XG5cbi8vIGNvbXBvbmVudHNcbmltcG9ydCBNYXBQb3BvdmVyRmFjdG9yeSBmcm9tICdjb21wb25lbnRzL21hcC9tYXAtcG9wb3Zlcic7XG5pbXBvcnQgTWFwQ29udHJvbEZhY3RvcnkgZnJvbSAnY29tcG9uZW50cy9tYXAvbWFwLWNvbnRyb2wnO1xuaW1wb3J0IHtTdHlsZWRNYXBDb250YWluZXIsIFN0eWxlZEF0dHJidXRpb259IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IEVkaXRvckZhY3RvcnkgZnJvbSAnLi9lZGl0b3IvZWRpdG9yJztcblxuLy8gdXRpbHNcbmltcG9ydCB7Z2VuZXJhdGVNYXBib3hMYXllcnMsIHVwZGF0ZU1hcGJveExheWVyc30gZnJvbSAnbGF5ZXJzL21hcGJveC11dGlscyc7XG5pbXBvcnQge3NldExheWVyQmxlbmRpbmd9IGZyb20gJ3V0aWxzL2dsLXV0aWxzJztcbmltcG9ydCB7dHJhbnNmb3JtUmVxdWVzdH0gZnJvbSAndXRpbHMvbWFwLXN0eWxlLXV0aWxzL21hcGJveC11dGlscyc7XG5pbXBvcnQge3JlbmRlckRlY2tHbExheWVyLCBwcmVwYXJlTGF5ZXJzVG9SZW5kZXIsIHByZXBhcmVMYXllcnNGb3JEZWNrfSBmcm9tICd1dGlscy9sYXllci11dGlscyc7XG5cbi8vIGRlZmF1bHQtc2V0dGluZ3NcbmltcG9ydCBUaHJlZURCdWlsZGluZ0xheWVyIGZyb20gJ2RlY2tnbC1sYXllcnMvM2QtYnVpbGRpbmctbGF5ZXIvM2QtYnVpbGRpbmctbGF5ZXInO1xuaW1wb3J0IHtcbiAgRklMVEVSX1RZUEVTLFxuICBHRU9DT0RFUl9MQVlFUl9JRCxcbiAgTUFTS19MQVlFUl9JRCxcbiAgVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUVcbn0gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuXG5pbXBvcnQge29ic2VydmVEaW1lbnNpb25zLCB1bm9ic2VydmVEaW1lbnNpb25zfSBmcm9tICcuLi91dGlscy9vYnNlcnZlLWRpbWVuc2lvbnMnO1xuaW1wb3J0IHtMT0NBTEVfQ09ERVN9IGZyb20gJ2xvY2FsaXphdGlvbi9sb2NhbGVzJztcblxuLy8gM0QgdGlsZXNcbmltcG9ydCB7X1RlcnJhaW5FeHRlbnNpb24gYXMgVGVycmFpbkV4dGVuc2lvbn0gZnJvbSAnQGRlY2suZ2wvZXh0ZW5zaW9ucyc7XG5pbXBvcnQge1RpbGUzRExheWVyfSBmcm9tICdAZGVjay5nbC9nZW8tbGF5ZXJzJztcblxuY29uc3QgR09PR0xFX01BUFNfQVBJX0tFWSA9ICdBSXphU3lDcHZReW1jNXdqU1lJc3h5M1JWMXdpZE0zcDNoNzhDQWsnO1xuXG5jbGFzcyBDdXN0b21UaWxlM0RMYXllciBleHRlbmRzIFRpbGUzRExheWVyIHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdDdXN0b21UaWxlM0RMYXllcic7XG5cbiAgZmlsdGVyU3ViTGF5ZXIoe2xheWVyLCB2aWV3cG9ydH0pIHtcbiAgICAvLyBEbyBub3Qgc2hvdyB0aWxlcyB3aGljaCBhcmUgbWFueSBsYXllcnMgdG9vIGxvdyBpbiByZXNvbHV0aW9uIChhdm9pZHMgYXJ0aWZhY3RzKVxuICAgIGNvbnN0IGxvZFpvb20gPSAyMiAtIE1hdGgubG9nMihsYXllci5wcm9wcy50aWxlLmxvZE1ldHJpY1ZhbHVlKTtcbiAgICByZXR1cm4gbG9kWm9vbSA+IHZpZXdwb3J0Py56b29tO1xuICB9XG59XG5cbmxldCBoID0gMDtcbmNvbnN0IHRpbGVzM2QgPSBuZXcgQ3VzdG9tVGlsZTNETGF5ZXIoe1xuICBpZDogJ2dvb2dsZS0zZC10aWxlcycsXG4gIGRhdGE6ICdodHRwczovL3RpbGUuZ29vZ2xlYXBpcy5jb20vdjEvM2R0aWxlcy9yb290Lmpzb24nLFxuICBvblRpbGVzZXRMb2FkOiB0aWxlc2V0M2QgPT4ge1xuICAgIHRpbGVzZXQzZC5vcHRpb25zLm1heGltdW1TY3JlZW5TcGFjZUVycm9yID0gNTtcbiAgICB0aWxlc2V0M2QuX29uVGlsZUxvYWRFcnJvciA9ICgpID0+IHt9O1xuICAgIHRpbGVzZXQzZC5vcHRpb25zLm9uVHJhdmVyc2FsQ29tcGxldGUgPSBzZWxlY3RlZFRpbGVzID0+IHtcbiAgICAgIGxldCBtaW5Mb2QgPSBJbmZpbml0eTtcbiAgICAgIGZvciAoY29uc3Qge2xvZE1ldHJpY1ZhbHVlfSBvZiBzZWxlY3RlZFRpbGVzKSB7XG4gICAgICAgIGlmIChsb2RNZXRyaWNWYWx1ZSA8IG1pbkxvZCkgbWluTG9kID0gbG9kTWV0cmljVmFsdWU7XG4gICAgICB9XG4gICAgICBjb25zdCBmaWx0ZXJlZCA9IHNlbGVjdGVkVGlsZXMuZmlsdGVyKHQgPT4gdC5sb2RNZXRyaWNWYWx1ZSA8IDQgKiBtaW5Mb2QpO1xuXG4gICAgICAvLyBIYWNreSB3YXkgdG8gb2J0YWluIGhlaWdodCBhYm92ZSBzZWEgbGV2ZWwgdG8gaW1wcm92ZSBjb250cm9sc1xuICAgICAgaWYgKGZpbHRlcmVkLmxlbmd0aCkge1xuICAgICAgICBoID0gZmlsdGVyZWQubWFwKHQgPT4gdC5ib3VuZGluZ0JveFswXVsyXSkucmVkdWNlKChhLCBuKSA9PiBhICsgbikgLyBmaWx0ZXJlZC5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZWxlY3RlZFRpbGVzO1xuICAgIH07XG4gIH0sXG4gIGxvYWRPcHRpb25zOiB7XG4gICAgZmV0Y2g6IHtoZWFkZXJzOiB7J1gtR09PRy1BUEktS0VZJzogR09PR0xFX01BUFNfQVBJX0tFWX19XG4gIH0sXG4gIC8vIEB0cy1pZ25vcmVcbiAgb3BlcmF0aW9uOiAndGVycmFpbitkcmF3JyAvLyBSZXF1aXJlZCB0byBlbmFibGUgZHJhcGluZyBvZiBvdGhlciBsYXllcnNcbn0pO1xuY29uc3QgdGVycmFpbkV4dGVuc2lvbiA9IG5ldyBUZXJyYWluRXh0ZW5zaW9uKCk7XG5cbi8vIEVmZmVjdHNcbmNvbnN0IGFtYmllbnRMaWdodCA9IG5ldyBBbWJpZW50TGlnaHQoe2NvbG9yOiBbMjU1LCAyNTUsIDI1NV0sIGludGVuc2l0eTogMX0pO1xuY29uc3Qgc3VuTGlnaHQgPSBuZXcgX1N1bkxpZ2h0KHtcbiAgdGltZXN0YW1wOiAxNjgzODY5OTE1Nzc3LFxuICBjb2xvcjogWzI1NSwgMjU1LCAyNTVdLFxuICBpbnRlbnNpdHk6IDEsXG4gIF9zaGFkb3c6IHRydWVcbn0pO1xuY29uc3QgbGlnaHRpbmdFZmZlY3QgPSBuZXcgTGlnaHRpbmdFZmZlY3Qoe1xuICBhbWJpZW50TGlnaHQsXG4gIHN1bkxpZ2h0XG59KTtcbmxpZ2h0aW5nRWZmZWN0LnNoYWRvd0NvbG9yID0gWzAsIDAsIDAsIDBdO1xuXG5jb25zdCBicmlnaHRuZXNzQ29udHJhc3RFZmZlY3QgPSBuZXcgUG9zdFByb2Nlc3NFZmZlY3QoYnJpZ2h0bmVzc0NvbnRyYXN0LCB7XG4gIGNvbnRyYXN0OiAwLFxuICBicmlnaHRuZXNzOiAwLjJcbn0pO1xuXG5jb25zdCBodWVTYXR1cmF0aW9uRWZmZWN0ID0gbmV3IFBvc3RQcm9jZXNzRWZmZWN0KGh1ZVNhdHVyYXRpb24sIHtodWU6IDAsIHNhdHVyYXRpb246IDAuM30pO1xuXG5jb25zdCB2aWJyYW5jZUVmZmVjdCA9IG5ldyBQb3N0UHJvY2Vzc0VmZmVjdCh2aWJyYW5jZSwge2Ftb3VudDogMX0pO1xuXG4vLyBQZXJmb3JtYW5jZSBkZWJ1Z2dpbmdcbmltcG9ydCB7Y3JlYXRlVHJhY2tlciwgY3JlYXRlTGF5ZXJVcGRhdGVUcmFja2VyLCByZW5kZXJQZXJmb3JtYW5jZVN0YXRzfSBmcm9tICcuL3BlcmZvcm1hbmNlJztcbmNvbnN0IHRyYWNrZXJzID0ge307XG5jb25zdCBQRVJGX0RFQlVHID0gd2luZG93Py5sb2NhdGlvbj8uc2VhcmNoPy5pbmNsdWRlcygnUEVSRl9ERUJVRycpO1xuaWYgKFBFUkZfREVCVUcpIHtcbiAgdHJhY2tlcnMuZHJhd0NvdW50ID0gY3JlYXRlVHJhY2tlcignZHJhd3MnKTtcbiAgdHJhY2tlcnMudmlld3BvcnRDaGFuZ2VDb3VudCA9IGNyZWF0ZVRyYWNrZXIoJ3ZpZXdwb3J0IGNoYW5nZXMnKTtcbiAgY3JlYXRlTGF5ZXJVcGRhdGVUcmFja2VyKCdzdGF0ZSB1cGRhdGVzJywgW0xheWVyLCBUaWxlTGF5ZXJdKTtcbn1cblxuLyoqIEB0eXBlIHt7W2tleTogc3RyaW5nXTogUmVhY3QuQ1NTUHJvcGVydGllc319ICovXG5jb25zdCBNQVBfU1RZTEUgPSB7XG4gIGNvbnRhaW5lcjoge1xuICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgaGVpZ2h0OiAnMTAwJSdcbiAgfSxcbiAgdG9wOiB7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgdG9wOiAnMHB4JyxcbiAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBoZWlnaHQ6ICcxMDAlJ1xuICB9XG59O1xuXG5jb25zdCBNQVBCT1hHTF9TVFlMRV9VUERBVEUgPSAnc3R5bGUubG9hZCc7XG5jb25zdCBNQVBCT1hHTF9SRU5ERVIgPSAncmVuZGVyJztcbmNvbnN0IFRSQU5TSVRJT05fRFVSQVRJT04gPSAwO1xuXG5leHBvcnQgY29uc3QgQXR0cmlidXRpb24gPSAoKSA9PiAoXG4gIDxTdHlsZWRBdHRyYnV0aW9uPlxuICAgIDxkaXYgY2xhc3NOYW1lPVwiYXR0cml0aW9uLWxvZ29cIj5cbiAgICAgIEJhc2VtYXAgYnk6XG4gICAgICA8YVxuICAgICAgICBjbGFzc05hbWU9XCJtYXBib3hnbC1jdHJsLWxvZ29cIlxuICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgaHJlZj1cImh0dHBzOi8vd3d3Lm1hcGJveC5jb20vXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIk1hcGJveCBsb2dvXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzc05hbWU9XCJhdHRyaXRpb24tbGlua1wiPlxuICAgICAgPGEgaHJlZj1cImh0dHBzOi8va2VwbGVyLmdsL3BvbGljeS9cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgIMKpIGtlcGxlci5nbCB8eycgJ31cbiAgICAgIDwvYT5cbiAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5tYXBib3guY29tL2Fib3V0L21hcHMvXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICDCqSBNYXBib3ggfHsnICd9XG4gICAgICA8L2E+XG4gICAgICA8YSBocmVmPVwiaHR0cDovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHRcIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgIMKpIE9wZW5TdHJlZXRNYXAgfHsnICd9XG4gICAgICA8L2E+XG4gICAgICA8YSBocmVmPVwiaHR0cHM6Ly93d3cubWFwYm94LmNvbS9tYXAtZmVlZGJhY2svXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICA8c3Ryb25nPkltcHJvdmUgdGhpcyBtYXA8L3N0cm9uZz5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9TdHlsZWRBdHRyYnV0aW9uPlxuKTtcblxuTWFwQ29udGFpbmVyRmFjdG9yeS5kZXBzID0gW01hcFBvcG92ZXJGYWN0b3J5LCBNYXBDb250cm9sRmFjdG9yeSwgRWRpdG9yRmFjdG9yeV07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1hcENvbnRhaW5lckZhY3RvcnkoTWFwUG9wb3ZlciwgTWFwQ29udHJvbCwgRWRpdG9yKSB7XG4gIGNsYXNzIE1hcENvbnRhaW5lciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgIC8vIHJlcXVpcmVkXG4gICAgICBkYXRhc2V0czogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIGludGVyYWN0aW9uQ29uZmlnOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBsYXllckJsZW5kaW5nOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICBsYXllck9yZGVyOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuICAgICAgbGF5ZXJEYXRhOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuICAgICAgbGF5ZXJzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuICAgICAgZmlsdGVyczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSkuaXNSZXF1aXJlZCxcbiAgICAgIG1hcFN0YXRlOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBtYXBDb250cm9sczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbWFwU3R5bGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIHNrZXRjaFZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIG1hcGJveEFwaVVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIHZpc1N0YXRlQWN0aW9uczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbWFwU3RhdGVBY3Rpb25zOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICB1aVN0YXRlQWN0aW9uczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuXG4gICAgICAvLyBvcHRpb25hbFxuICAgICAgcHJpbWFyeTogUHJvcFR5cGVzLmJvb2wsIC8vIHByaW1hcnkgb25lIHdpbGwgYmUgcmVwb3J0aW5nIGl0cyBzaXplIHRvIGFwcFN0YXRlXG4gICAgICByZWFkT25seTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICBpc0V4cG9ydDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICBjbGlja2VkOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgaG92ZXJJbmZvOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgbWFwTGF5ZXJzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgb25NYXBUb2dnbGVMYXllcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBvbk1hcFN0eWxlTG9hZGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIG9uTWFwUmVuZGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIGdldE1hcGJveFJlZjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBpbmRleDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgIHBvcHVwU2V0dGluZ3M6IFByb3BUeXBlcy5vYmplY3RcbiAgICB9O1xuXG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgIE1hcENvbXBvbmVudDogTWFwYm94R0xNYXAsXG4gICAgICBkZWNrR2xQcm9wczoge30sXG4gICAgICBpbmRleDogMCxcbiAgICAgIHByaW1hcnk6IHRydWVcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgIHN1cGVyKHByb3BzKTtcblxuICAgICAgdGhpcy5wcmV2aW91c0xheWVycyA9IHtcbiAgICAgICAgLy8gW2xheWVycy5pZF06IG1hcGJveExheWVyQ29uZmlnXG4gICAgICB9O1xuXG4gICAgICB0aGlzLl9kZWNrID0gbnVsbDtcbiAgICAgIHRoaXMuX3JlZiA9IGNyZWF0ZVJlZigpO1xuXG4gICAgICAvLyBSZW5kZXIgbGltaXRpbmcgbWVjaGFuaXNtXG4gICAgICB0aGlzLl9oYXNSZW5kZXJlZCA9IGNyZWF0ZVJlZigpO1xuICAgICAgdGhpcy5fbW91c2VQb3NpdGlvbiA9IGNyZWF0ZVJlZigpO1xuICAgIH1cblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgb2JzZXJ2ZURpbWVuc2lvbnModGhpcy5fcmVmLmN1cnJlbnQsIHRoaXMuX2hhbmRsZVJlc2l6ZSk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgICAgY29uc3QgY29udGV4dExvc3QgPSB0aGlzLnN0YXRlPy5jb250ZXh0TG9zdDtcblxuICAgICAgaWYgKGNvbnRleHRMb3N0KSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1kaWQtdXBkYXRlLXNldC1zdGF0ZVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtjb250ZXh0TG9zdDogZmFsc2V9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIC8vIHVuYmluZCBtYXBib3hnbCBldmVudCBsaXN0ZW5lclxuICAgICAgaWYgKHRoaXMuX21hcCkge1xuICAgICAgICB0aGlzLl9tYXAub2ZmKE1BUEJPWEdMX1NUWUxFX1VQREFURSk7XG4gICAgICAgIHRoaXMuX21hcC5vZmYoTUFQQk9YR0xfUkVOREVSKTtcbiAgICAgIH1cbiAgICAgIHVub2JzZXJ2ZURpbWVuc2lvbnModGhpcy5fcmVmLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIF9oYW5kbGVSZXNpemUgPSBkaW1lbnNpb25zID0+IHtcbiAgICAgIGNvbnN0IHtwcmltYXJ5LCBpc0V4cG9ydH0gPSB0aGlzLnByb3BzO1xuICAgICAgaWYgKHByaW1hcnkpIHtcbiAgICAgICAgY29uc3Qge21hcFN0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAoIWlzRXhwb3J0ICYmIGRpbWVuc2lvbnMgJiYgZGltZW5zaW9ucy53aWR0aCA+IDAgJiYgZGltZW5zaW9ucy5oZWlnaHQgPiAwKSB7XG4gICAgICAgICAgbWFwU3RhdGVBY3Rpb25zLnVwZGF0ZU1hcChkaW1lbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBza2V0Y2hWYWx1ZSA9IHByb3BzID0+IHByb3BzPy5za2V0Y2hWYWx1ZTtcbiAgICBsYXllcnNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmxheWVycztcbiAgICBsYXllckRhdGFTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmxheWVyRGF0YTtcbiAgICBtYXBMYXllcnNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLm1hcExheWVycztcbiAgICBsYXllck9yZGVyU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5sYXllck9yZGVyO1xuICAgIHBvcHVwU2V0dGluZ3NTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLnBvcHVwU2V0dGluZ3M7XG5cbiAgICBsYXllcnNUb1JlbmRlclNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllckRhdGFTZWxlY3RvcixcbiAgICAgIHRoaXMubWFwTGF5ZXJzU2VsZWN0b3IsXG4gICAgICB0aGlzLnBvcHVwU2V0dGluZ3NTZWxlY3RvcixcbiAgICAgIHByZXBhcmVMYXllcnNUb1JlbmRlclxuICAgICk7XG4gICAgbGF5ZXJzRm9yRGVja1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllckRhdGFTZWxlY3RvcixcbiAgICAgIHByZXBhcmVMYXllcnNGb3JEZWNrXG4gICAgKTtcbiAgICBmaWx0ZXJzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5maWx0ZXJzO1xuICAgIHBvbHlnb25GaWx0ZXJzID0gY3JlYXRlU2VsZWN0b3IodGhpcy5maWx0ZXJzU2VsZWN0b3IsIGZpbHRlcnMgPT5cbiAgICAgIGZpbHRlcnMuZmlsdGVyKGYgPT4gZi50eXBlID09PSBGSUxURVJfVFlQRVMucG9seWdvbilcbiAgICApO1xuXG4gICAgbWFwYm94TGF5ZXJzU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMubGF5ZXJzU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyRGF0YVNlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllck9yZGVyU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyc1RvUmVuZGVyU2VsZWN0b3IsXG4gICAgICBnZW5lcmF0ZU1hcGJveExheWVyc1xuICAgICk7XG5cbiAgICAvKiBjb21wb25lbnQgcHJpdmF0ZSBmdW5jdGlvbnMgKi9cbiAgICBfb25DbG9zZU1hcFBvcG92ZXIgPSAoKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy5vbkxheWVyQ2xpY2sobnVsbCk7XG4gICAgfTtcblxuICAgIF9vbkxheWVyU2V0RG9tYWluID0gKGlkeCwgY29sb3JEb21haW4pID0+IHtcbiAgICAgIHRoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLmxheWVyQ29uZmlnQ2hhbmdlKHRoaXMucHJvcHMubGF5ZXJzW2lkeF0sIHtcbiAgICAgICAgY29sb3JEb21haW5cbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfaGFuZGxlTWFwVG9nZ2xlTGF5ZXIgPSBsYXllcklkID0+IHtcbiAgICAgIGNvbnN0IHtpbmRleDogbWFwSW5kZXggPSAwLCB2aXNTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgIHZpc1N0YXRlQWN0aW9ucy50b2dnbGVMYXllckZvck1hcChtYXBJbmRleCwgbGF5ZXJJZCk7XG4gICAgfTtcblxuICAgIF9vbk1hcGJveFN0eWxlVXBkYXRlID0gKCkgPT4ge1xuICAgICAgLy8gZm9yY2UgcmVmcmVzaCBtYXBib3hnbCBsYXllcnNcbiAgICAgIHRoaXMucHJldmlvdXNMYXllcnMgPSB7fTtcbiAgICAgIHRoaXMuX3VwZGF0ZU1hcGJveExheWVycygpO1xuXG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25NYXBTdHlsZUxvYWRlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnByb3BzLm9uTWFwU3R5bGVMb2FkZWQodGhpcy5fbWFwKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3NldE1hcGJveE1hcCA9IG1hcGJveCA9PiB7XG4gICAgICBpZiAoIXRoaXMuX21hcCAmJiBtYXBib3gpIHtcbiAgICAgICAgdGhpcy5fbWFwID0gbWFwYm94LmdldE1hcCgpO1xuICAgICAgICAvLyBpIG5vdGljZWQgaW4gY2VydGFpbiBjb250ZXh0IHdlIGRvbid0IGFjY2VzcyB0aGUgYWN0dWFsIG1hcCBlbGVtZW50XG4gICAgICAgIGlmICghdGhpcy5fbWFwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGJpbmQgbWFwYm94Z2wgZXZlbnQgbGlzdGVuZXJcbiAgICAgICAgdGhpcy5fbWFwLm9uKE1BUEJPWEdMX1NUWUxFX1VQREFURSwgdGhpcy5fb25NYXBib3hTdHlsZVVwZGF0ZSk7XG5cbiAgICAgICAgdGhpcy5fbWFwLm9uKE1BUEJPWEdMX1JFTkRFUiwgKCkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5vbk1hcFJlbmRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vbk1hcFJlbmRlcih0aGlzLl9tYXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnByb3BzLmdldE1hcGJveFJlZikge1xuICAgICAgICAvLyBUaGUgcGFyZW50IGNvbXBvbmVudCBjYW4gZ2FpbiBhY2Nlc3MgdG8gb3VyIE1hcGJveEdsTWFwIGJ5XG4gICAgICAgIC8vIHByb3ZpZGluZyB0aGlzIGNhbGxiYWNrLiBOb3RlIHRoYXQgJ21hcGJveCcgd2lsbCBiZSBudWxsIHdoZW4gdGhlXG4gICAgICAgIC8vIHJlZiBpcyB1bnNldCAoZS5nLiB3aGVuIGEgc3BsaXQgbWFwIGlzIGNsb3NlZCkuXG4gICAgICAgIHRoaXMucHJvcHMuZ2V0TWFwYm94UmVmKG1hcGJveCwgdGhpcy5wcm9wcy5pbmRleCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9vbkRlY2tJbml0aWFsaXplZChnbCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMub25EZWNrSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbkRlY2tJbml0aWFsaXplZCh0aGlzLl9kZWNrLCBnbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX29uQmVmb3JlUmVuZGVyID0gKHtnbH0pID0+IHtcbiAgICAgIHNldExheWVyQmxlbmRpbmcoZ2wsIHRoaXMucHJvcHMubGF5ZXJCbGVuZGluZyk7XG4gICAgfTtcblxuICAgIF9vbkRlY2tFcnJvciA9IChlcnJvciwgbGF5ZXIpID0+IHtcbiAgICAgIGlmIChlcnJvcj8ubWVzc2FnZSA9PT0gJ1dlYkdMIGNvbnRleHQgaXMgbG9zdCcpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7Y29udGV4dExvc3Q6IHRydWV9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgQW4gZXJyb3IgaW4gZGVjay5nbDogJHtlcnJvcj8ubWVzc2FnZX0gaW4gJHtsYXllcj8uaWR9YDtcbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbklkID0gYCR7bGF5ZXI/LmlkfS0ke2Vycm9yPy5tZXNzYWdlfWA7XG5cbiAgICAgIC8vIFRocm90dGxlIGVycm9yIG5vdGlmaWNhdGlvbnMsIGFzIFJlYWN0IGRvZXNuJ3QgbGlrZSB0b28gbWFueSBzdGF0ZSBjaGFuZ2VzIGZyb20gaGVyZS5cbiAgICAgIHRoaXMuX2RlY2tHTEVycm9yc0VsYXBzZWQgPSB0aGlzLl9kZWNrR0xFcnJvcnNFbGFwc2VkIHx8IHt9O1xuICAgICAgY29uc3QgbGFzdFNob3duID0gdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZFtub3RpZmljYXRpb25JZF07XG4gICAgICBpZiAoIWxhc3RTaG93biB8fCBsYXN0U2hvd24gPCBEYXRlLm5vdygpIC0gVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUUpIHtcbiAgICAgICAgdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZFtub3RpZmljYXRpb25JZF0gPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIC8vIENyZWF0ZSBuZXcgZXJyb3Igbm90aWZpY2F0aW9uIG9yIHVwZGF0ZSBleGlzdGluZyBvbmUgd2l0aCBzYW1lIGlkLlxuICAgICAgICAvLyBVcGRhdGUgaXMgcmVxdWlyZWQgdG8gcHJlc2VydmUgdGhlIG9yZGVyIG9mIG5vdGlmaWNhdGlvbnMgYXMgdGhleSBwcm9iYWJseSBhcmUgZ29pbmcgdG8gXCJqdW1wXCIgYmFzZWQgb24gb3JkZXIgb2YgZXJyb3JzLlxuICAgICAgICBjb25zdCB7dWlTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgdWlTdGF0ZUFjdGlvbnMuYWRkTm90aWZpY2F0aW9uKFxuICAgICAgICAgIGVycm9yTm90aWZpY2F0aW9uKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgIGlkOiBub3RpZmljYXRpb25JZFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8qIGNvbXBvbmVudCByZW5kZXIgZnVuY3Rpb25zICovXG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG4gICAgX3JlbmRlck1hcFBvcG92ZXIobGF5ZXJzVG9SZW5kZXIpIHtcbiAgICAgIC8vIE92ZXJyaWRlbiBpbiBCdWlsZGVyOiBmZWF0dXJlcy9idWlsZGVyL3VpL0tlcGxlckdsL01hcENvbnRhaW5lci9NYXBDb250YWluZXIudHN4XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKiBlc2xpbnQtZW5hYmxlIGNvbXBsZXhpdHkgKi9cblxuICAgIF9nZXRIb3ZlclhZKHZpZXdwb3J0LCBsbmdMYXQpIHtcbiAgICAgIGNvbnN0IHNjcmVlbkNvb3JkID0gIXZpZXdwb3J0IHx8ICFsbmdMYXQgPyBudWxsIDogdmlld3BvcnQucHJvamVjdChsbmdMYXQpO1xuICAgICAgcmV0dXJuIHNjcmVlbkNvb3JkICYmIHt4OiBzY3JlZW5Db29yZFswXSwgeTogc2NyZWVuQ29vcmRbMV19O1xuICAgIH1cblxuICAgIF9yZW5kZXJEZWNrT3ZlcmxheShsYXllcnNGb3JEZWNrKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1hcFN0YXRlLFxuICAgICAgICBtYXBTdHlsZSxcbiAgICAgICAgbGF5ZXJEYXRhLFxuICAgICAgICBsYXllck9yZGVyLFxuICAgICAgICBsYXllcnMsXG4gICAgICAgIHZpc1N0YXRlQWN0aW9ucyxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgbWFza1BvbHlnb25cbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgdHJhY2tlcnMuZHJhd0NvdW50Py5pbmNyZW1lbnQoKTtcblxuICAgICAgLy8gaW5pdGlhbGlzZSBsYXllcnMgZnJvbSBwcm9wcyBpZiBleGlzdHNcbiAgICAgIGxldCBkZWNrR2xMYXllcnMgPSB0aGlzLnByb3BzLmRlY2tHbFByb3BzPy5sYXllcnMgfHwgW107XG5cbiAgICAgIC8vIHdhaXQgdW50aWwgZGF0YSBpcyByZWFkeSBiZWZvcmUgcmVuZGVyIGRhdGEgbGF5ZXJzXG4gICAgICBpZiAobGF5ZXJEYXRhICYmIGxheWVyRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgLy8gbGFzdCBsYXllciByZW5kZXIgZmlyc3RcbiAgICAgICAgY29uc3QgZGF0YUxheWVycyA9IGxheWVyT3JkZXJcbiAgICAgICAgICAuc2xpY2UoKVxuICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAuZmlsdGVyKGlkeCA9PiBsYXllcnNGb3JEZWNrW2xheWVyc1tpZHhdLmlkXSlcbiAgICAgICAgICAucmVkdWNlKChvdmVybGF5cywgaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXllckNhbGxiYWNrcyA9IHtcbiAgICAgICAgICAgICAgb25TZXRMYXllckRvbWFpbjogdmFsID0+IHRoaXMuX29uTGF5ZXJTZXREb21haW4oaWR4LCB2YWwpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgbGF5ZXJPdmVybGF5ID0gcmVuZGVyRGVja0dsTGF5ZXIodGhpcy5wcm9wcywgbGF5ZXJDYWxsYmFja3MsIGlkeCk7XG4gICAgICAgICAgICByZXR1cm4gb3ZlcmxheXMuY29uY2F0KGxheWVyT3ZlcmxheSB8fCBbXSk7XG4gICAgICAgICAgfSwgW10pO1xuICAgICAgICBkZWNrR2xMYXllcnMgPSBkZWNrR2xMYXllcnMuY29uY2F0KGRhdGFMYXllcnMpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5kZWNrR2xQcm9wcz8ubGF5ZXJzT25Ub3ApIHtcbiAgICAgICAgZGVja0dsTGF5ZXJzID0gZGVja0dsTGF5ZXJzLmNvbmNhdCh0aGlzLnByb3BzLmRlY2tHbFByb3BzLmxheWVyc09uVG9wKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1hc2tQb2x5Z29uKSB7XG4gICAgICAgIGRlY2tHbExheWVycy5wdXNoKFxuICAgICAgICAgIG5ldyBTb2xpZFBvbHlnb25MYXllcih7XG4gICAgICAgICAgICBpZDogTUFTS19MQVlFUl9JRCxcbiAgICAgICAgICAgIG9wZXJhdGlvbjogT1BFUkFUSU9OLk1BU0ssXG4gICAgICAgICAgICBkYXRhOiBbbWFza1BvbHlnb25dLFxuICAgICAgICAgICAgZGF0YUNvbXBhcmF0b3I6IChkYXRhLCBvbGREYXRhKSA9PiBkYXRhWzBdID09PSBvbGREYXRhWzBdLFxuICAgICAgICAgICAgZ2V0UG9seWdvbjogZCA9PiBkLFxuICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiBbMjU1LCAyNTUsIDI1NSwgMjU1XVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXBTdHlsZS52aXNpYmxlTGF5ZXJHcm91cHNbJzNkIGJ1aWxkaW5nJ10pIHtcbiAgICAgICAgZGVja0dsTGF5ZXJzLnB1c2goXG4gICAgICAgICAgbmV3IFRocmVlREJ1aWxkaW5nTGF5ZXIoe1xuICAgICAgICAgICAgaWQ6ICdfa2VwbGVyZ2xfM2QtYnVpbGRpbmcnLFxuICAgICAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgICAgICB0aHJlZURCdWlsZGluZ0NvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yLFxuICAgICAgICAgICAgdXBkYXRlVHJpZ2dlcnM6IHtcbiAgICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGVmZmVjdHMgPSBbXTtcbiAgICAgIGlmIChtYXBTdHlsZS5ib3R0b21NYXBTdHlsZT8udHlwZSA9PT0gJ2dtYXBzXzNkJykge1xuICAgICAgICAvLyBJbmplY3QgM0QgdGlsZXMgd2hlbiBtYXAgc3R5bGUgaXMgVm95YWdlciB3aXRob3V0IGxheWVyc1xuICAgICAgICBkZWNrR2xMYXllcnMgPSBkZWNrR2xMYXllcnNcbiAgICAgICAgICAuZmlsdGVyKGwgPT4gQm9vbGVhbihsICYmIGwuY2xvbmUpKVxuICAgICAgICAgIC5tYXAobCA9PiBsLmNsb25lKHtleHRlbnNpb25zOiBbLi4ubC5wcm9wcy5leHRlbnNpb25zLCB0ZXJyYWluRXh0ZW5zaW9uXX0pKTtcbiAgICAgICAgZGVja0dsTGF5ZXJzLnB1c2godGlsZXMzZC5jbG9uZSgpKTtcblxuICAgICAgICBpZiAobWFwU3R5bGUuc3R5bGVUeXBlID09PSAnZ29vZ2xlLTNkLXNrZXRjaCcpIHtcbiAgICAgICAgICBjb25zdCBpbmtFZmZlY3QgPSBuZXcgUG9zdFByb2Nlc3NFZmZlY3QoaW5rLCB7c3RyZW5ndGg6IG1hcFN0eWxlLnNrZXRjaFZhbHVlIHx8IDAuMn0pO1xuICAgICAgICAgIGNvbnN0IGFsbEVmZmVjdHMgPSBbXG4gICAgICAgICAgICBsaWdodGluZ0VmZmVjdCxcbiAgICAgICAgICAgIGh1ZVNhdHVyYXRpb25FZmZlY3QsXG4gICAgICAgICAgICBicmlnaHRuZXNzQ29udHJhc3RFZmZlY3QsXG4gICAgICAgICAgICB2aWJyYW5jZUVmZmVjdCxcbiAgICAgICAgICAgIGlua0VmZmVjdFxuICAgICAgICAgIF07XG4gICAgICAgICAgZWZmZWN0cyA9IGFsbEVmZmVjdHM7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gTGltaXQgcmVuZGVyc1xuICAgICAgY29uc3QgaGFzUmVuZGVyZWQgPSB0aGlzLl9oYXNSZW5kZXJlZDtcbiAgICAgIGNvbnN0IHJlc2V0SGFzUmVuZGVyZWQgPSAoKSA9PiAoaGFzUmVuZGVyZWQuY3VycmVudCA9IGZhbHNlKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxEZWNrR0xcbiAgICAgICAgICBjb250cm9sbGVyPXt0cnVlfVxuICAgICAgICAgIHsuLi50aGlzLnByb3BzLmRlY2tHbFByb3BzfVxuICAgICAgICAgIHZpZXdTdGF0ZT17bWFwU3RhdGV9XG4gICAgICAgICAgb25WaWV3U3RhdGVDaGFuZ2U9eyh7dmlld1N0YXRlLCBpbnRlcmFjdGlvblN0YXRlfSkgPT4ge1xuICAgICAgICAgICAgLy8gTGltaXQgdXBkYXRlcyAocHJldmVudHMgZnJlZXplcyB3aGVuIGRldiB0b29scyBvcGVuKVxuICAgICAgICAgICAgaWYgKCFoYXNSZW5kZXJlZC5jdXJyZW50ICYmIHZpZXdTdGF0ZS53aWR0aCA+IDEgJiYgdmlld1N0YXRlLmhlaWdodCA+IDEpIHtcbiAgICAgICAgICAgICAgaGFzUmVuZGVyZWQuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICAgIHRoaXMuX29uVmlld3BvcnRDaGFuZ2Uodmlld1N0YXRlLCBpbnRlcmFjdGlvblN0YXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAgIGlkPVwiZGVmYXVsdC1kZWNrZ2wtb3ZlcmxheVwiXG4gICAgICAgICAgbGF5ZXJzPXtkZWNrR2xMYXllcnN9XG4gICAgICAgICAgZWZmZWN0cz17ZWZmZWN0c31cbiAgICAgICAgICBvbkJlZm9yZVJlbmRlcj17b3B0cyA9PiB7XG4gICAgICAgICAgICByZXNldEhhc1JlbmRlcmVkKCk7XG4gICAgICAgICAgICB0aGlzLl9vbkJlZm9yZVJlbmRlcihvcHRzKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uSG92ZXI9e3Zpc1N0YXRlQWN0aW9ucy5vbkxheWVySG92ZXJ9XG4gICAgICAgICAgb25DbGljaz17dmlzU3RhdGVBY3Rpb25zLm9uTGF5ZXJDbGlja31cbiAgICAgICAgICBvbkVycm9yPXtlID0+IHtcbiAgICAgICAgICAgIGRlYnVnZ2VyO1xuICAgICAgICAgICAgdGhpcy5fb25EZWNrRXJyb3IoZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICByZWY9e2NvbXAgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbXAgJiYgY29tcC5kZWNrICYmIGNvbXAuZGVjayAhPT0gdGhpcy5fZGVjaykge1xuICAgICAgICAgICAgICB0aGlzLl9kZWNrID0gY29tcC5kZWNrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25XZWJHTEluaXRpYWxpemVkPXtnbCA9PiB0aGlzLl9vbkRlY2tJbml0aWFsaXplZChnbCl9XG4gICAgICAgICAgbGF5ZXJGaWx0ZXI9eyh7bGF5ZXIsIHZpZXdwb3J0fSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBpc05hTihsYXllci5wcm9wcy52aXNpYmlsaXR5Qnlab29tPy5taW4pIHx8XG4gICAgICAgICAgICAgIGlzTmFOKGxheWVyLnByb3BzLnZpc2liaWxpdHlCeVpvb20/Lm1heClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRab29tUmFuZ2UgPSBNYXRoLnJvdW5kKG1hcFN0YXRlLnpvb20pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBsYXllci5wcm9wcy52aXNpYmlsaXR5Qnlab29tLm1pbiA8PSBjdXJyZW50Wm9vbVJhbmdlICYmXG4gICAgICAgICAgICAgIGxheWVyLnByb3BzLnZpc2liaWxpdHlCeVpvb20ubWF4ID49IGN1cnJlbnRab29tUmFuZ2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgX3VwZGF0ZU1hcGJveExheWVycygpIHtcbiAgICAgIGNvbnN0IG1hcGJveExheWVycyA9IHRoaXMubWFwYm94TGF5ZXJzU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBpZiAoIU9iamVjdC5rZXlzKG1hcGJveExheWVycykubGVuZ3RoICYmICFPYmplY3Qua2V5cyh0aGlzLnByZXZpb3VzTGF5ZXJzKS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGVNYXBib3hMYXllcnModGhpcy5fbWFwLCBtYXBib3hMYXllcnMsIHRoaXMucHJldmlvdXNMYXllcnMpO1xuXG4gICAgICB0aGlzLnByZXZpb3VzTGF5ZXJzID0gbWFwYm94TGF5ZXJzO1xuICAgIH1cblxuICAgIF9yZW5kZXJNYXBib3hPdmVybGF5cygpIHtcbiAgICAgIGlmICh0aGlzLl9tYXAgJiYgdGhpcy5fbWFwLmlzU3R5bGVMb2FkZWQoKSkge1xuICAgICAgICB0aGlzLl91cGRhdGVNYXBib3hMYXllcnMoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfb25WaWV3cG9ydENoYW5nZSA9ICh2aWV3U3RhdGUsIGludGVyYWN0aW9uU3RhdGUpID0+IHtcbiAgICAgIHRyYWNrZXJzLnZpZXdwb3J0Q2hhbmdlQ291bnQ/LmluY3JlbWVudCgpO1xuXG4gICAgICBjb25zdCB7d2lkdGgsIGhlaWdodCwgLi4ucmVzdFZpZXdTdGF0ZX0gPSB2aWV3U3RhdGU7XG4gICAgICBjb25zdCB7cHJpbWFyeSwgaXNFeHBvcnR9ID0gdGhpcy5wcm9wcztcbiAgICAgIC8vIHJlYWN0LW1hcC1nbCBzZW5kcyAwLDAgZGltZW5zaW9ucyBkdXJpbmcgaW5pdGlhbGl6YXRpb25cbiAgICAgIC8vIGFmdGVyIHdlIGhhdmUgcmVjZWl2ZWQgcHJvcGVyIGRpbWVuc2lvbnMgZnJvbSBvYnNlcnZlRGltZW5zaW9uc1xuICAgICAgY29uc3QgbmV4dCA9IHtcbiAgICAgICAgLi4uKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwID8gdmlld1N0YXRlIDogcmVzdFZpZXdTdGF0ZSksXG5cbiAgICAgICAgLy8gQXV0by11cGRhdGUgdGhlIGNhbWVyYSBoZWlnaHQgYWNjb3JkaW5nIHRvIDNEIHRpbGVzLCBleGNlcHQgd2hlbiB0cmFuc2l0aW9uaW5nXG4gICAgICAgIC4uLihpbnRlcmFjdGlvblN0YXRlICYmICFpbnRlcmFjdGlvblN0YXRlLmluVHJhbnNpdGlvbiAmJiB7cG9zaXRpb246IFswLCAwLCBoXX0pXG4gICAgICAgIC8vIGVuYWJsaW5nIHRyYW5zaXRpb24gaW4gdHdvIG1hcHMgbWF5IGxlYWQgdG8gZW5kbGVzcyB1cGRhdGUgbG9vcHNcbiAgICAgICAgLy8gdHJhbnNpdGlvbkR1cmF0aW9uOiBwcmltYXJ5ID8gVFJBTlNJVElPTl9EVVJBVElPTiA6IDAgLy8gRGlzYWJsZSBmb3IgM0QgdGlsZXMgdHJhbnNpdGlvbnNcbiAgICAgIH07XG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25WaWV3U3RhdGVDaGFuZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vblZpZXdTdGF0ZUNoYW5nZShuZXh0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc0V4cG9ydCkge1xuICAgICAgICB0aGlzLnByb3BzLm1hcFN0YXRlQWN0aW9ucy51cGRhdGVNYXAobmV4dCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90b2dnbGVNYXBDb250cm9sID0gcGFuZWxJZCA9PiB7XG4gICAgICBjb25zdCB7aW5kZXgsIHVpU3RhdGVBY3Rpb25zfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIHVpU3RhdGVBY3Rpb25zLnRvZ2dsZU1hcENvbnRyb2wocGFuZWxJZCwgaW5kZXgpO1xuICAgIH07XG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG4gICAgX3JlbmRlck1hcCgpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFwU3RhdGUsXG4gICAgICAgIG1hcFN0eWxlLFxuICAgICAgICBtYXBTdGF0ZUFjdGlvbnMsXG4gICAgICAgIHNrZXRjaFZhbHVlLFxuICAgICAgICBsYXllcnMsXG4gICAgICAgIE1hcENvbXBvbmVudCxcbiAgICAgICAgZGF0YXNldHMsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIG1hcENvbnRyb2xzLFxuICAgICAgICBpc0V4cG9ydCxcbiAgICAgICAgbG9jYWxlLFxuICAgICAgICB1aVN0YXRlQWN0aW9ucyxcbiAgICAgICAgdmlzU3RhdGVBY3Rpb25zLFxuICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAgICAgZWRpdG9yLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgcHJpbWFyeVxuICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIGNvbnN0IGxheWVyc1RvUmVuZGVyID0gdGhpcy5sYXllcnNUb1JlbmRlclNlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgbGF5ZXJzRm9yRGVjayA9IHRoaXMubGF5ZXJzRm9yRGVja1NlbGVjdG9yKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCBtYXBQcm9wcyA9IHtcbiAgICAgICAgLi4ubWFwU3RhdGUsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWUsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIHRyYW5zZm9ybVJlcXVlc3RcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGlzRWRpdCA9IChtYXBDb250cm9scy5tYXBEcmF3IHx8IHt9KS5hY3RpdmU7XG5cbiAgICAgIGNvbnN0IGhhc0dlb2NvZGVyTGF5ZXIgPSBsYXllcnMuZmluZChsID0+IGwuaWQgPT09IEdFT0NPREVSX0xBWUVSX0lEKTtcbiAgICAgIGNvbnN0IGlzU3BsaXQgPSBCb29sZWFuKG1hcFN0YXRlLmlzU3BsaXQpO1xuICAgICAgY29uc3QgbW91c2VQb3NpdGlvbiA9IHRoaXMuX21vdXNlUG9zaXRpb247XG5cbiAgICAgIGNvbnN0IG5lZWRzQmFzZW1hcCA9IG1hcFN0eWxlLmJvdHRvbU1hcFN0eWxlLnR5cGUgIT09ICdnbWFwc18zZCc7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPE1hcENvbnRyb2xcbiAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXM9e09iamVjdC5rZXlzKExPQ0FMRV9DT0RFUyl9XG4gICAgICAgICAgICBkcmFnUm90YXRlPXttYXBTdGF0ZS5kcmFnUm90YXRlfVxuICAgICAgICAgICAgaXNTcGxpdD17aXNTcGxpdH1cbiAgICAgICAgICAgIHByaW1hcnk9e3ByaW1hcnl9XG4gICAgICAgICAgICBpc0V4cG9ydD17aXNFeHBvcnR9XG4gICAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICAgIGxheWVyc1RvUmVuZGVyPXtsYXllcnNUb1JlbmRlcn1cbiAgICAgICAgICAgIG1hcEluZGV4PXtpbmRleH1cbiAgICAgICAgICAgIG1hcENvbnRyb2xzPXttYXBDb250cm9sc31cbiAgICAgICAgICAgIHJlYWRPbmx5PXt0aGlzLnByb3BzLnJlYWRPbmx5fVxuICAgICAgICAgICAgc2NhbGU9e21hcFN0YXRlLnNjYWxlIHx8IDF9XG4gICAgICAgICAgICB0b3A9e2ludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyICYmIGludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyLmVuYWJsZWQgPyA1MiA6IDB9XG4gICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgb25Ub2dnbGVQZXJzcGVjdGl2ZT17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVBlcnNwZWN0aXZlfVxuICAgICAgICAgICAgb25Ub2dnbGVTcGxpdE1hcD17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVNwbGl0TWFwfVxuICAgICAgICAgICAgb25NYXBUb2dnbGVMYXllcj17dGhpcy5faGFuZGxlTWFwVG9nZ2xlTGF5ZXJ9XG4gICAgICAgICAgICBvblRvZ2dsZU1hcENvbnRyb2w9e3RoaXMuX3RvZ2dsZU1hcENvbnRyb2x9XG4gICAgICAgICAgICBvblNldEVkaXRvck1vZGU9e3Zpc1N0YXRlQWN0aW9ucy5zZXRFZGl0b3JNb2RlfVxuICAgICAgICAgICAgb25TZXRMb2NhbGU9e3VpU3RhdGVBY3Rpb25zLnNldExvY2FsZX1cbiAgICAgICAgICAgIG9uVG9nZ2xlRWRpdG9yVmlzaWJpbGl0eT17dmlzU3RhdGVBY3Rpb25zLnRvZ2dsZUVkaXRvclZpc2liaWxpdHl9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7bmVlZHNCYXNlbWFwID8gKFxuICAgICAgICAgICAgPE1hcENvbXBvbmVudFxuICAgICAgICAgICAgICB7Li4ubWFwUHJvcHN9XG4gICAgICAgICAgICAgIGtleT1cImJvdHRvbVwiXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5fc2V0TWFwYm94TWFwfVxuICAgICAgICAgICAgICBtYXBTdHlsZT17bWFwU3R5bGUuYm90dG9tTWFwU3R5bGV9XG4gICAgICAgICAgICAgIHNrZXRjaFZhbHVlPXtza2V0Y2hWYWx1ZX1cbiAgICAgICAgICAgICAgZ2V0Q3Vyc29yPXt0aGlzLnByb3BzLmhvdmVySW5mbyA/ICgpID0+ICdwb2ludGVyJyA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgb25Nb3VzZU1vdmU9e2V2dCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gU2VuZGluZyBtb3VzZSBtb3ZlIHVwZGF0ZXMgdmlhIFJlZHV4IGlzIGV4cGVuc2l2ZS4gU3RvcmVcbiAgICAgICAgICAgICAgICAvLyBsb2NhbGx5IGFuZCByZWx5IG9uIGRlY2suZ2wgdG8gZHJpdmUgcmVuZGVyIHVwZGF0ZXNcbiAgICAgICAgICAgICAgICAvLyBTZWUgQnVpbGRlcjogZmVhdHVyZXMvYnVpbGRlci91aS9LZXBsZXJHbC9NYXBDb250YWluZXIvTWFwQ29udGFpbmVyLnRzeFxuICAgICAgICAgICAgICAgIG1vdXNlUG9zaXRpb24uY3VycmVudCA9IHttb3VzZVBvc2l0aW9uOiBldnQucG9pbnR9O1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7UEVSRl9ERUJVRyAmJiByZW5kZXJQZXJmb3JtYW5jZVN0YXRzKCl9XG4gICAgICAgICAgICAgIHt0aGlzLl9yZW5kZXJEZWNrT3ZlcmxheShsYXllcnNGb3JEZWNrKX1cbiAgICAgICAgICAgICAge3RoaXMuX3JlbmRlck1hcGJveE92ZXJsYXlzKCl9XG4gICAgICAgICAgICAgIDxFZGl0b3JcbiAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAgICAgICAgIGZpbHRlcnM9e3RoaXMucG9seWdvbkZpbHRlcnModGhpcy5wcm9wcyl9XG4gICAgICAgICAgICAgICAgaXNFbmFibGVkPXtpc0VkaXR9XG4gICAgICAgICAgICAgICAgbGF5ZXJzPXtsYXllcnN9XG4gICAgICAgICAgICAgICAgbGF5ZXJzVG9SZW5kZXI9e2xheWVyc1RvUmVuZGVyfVxuICAgICAgICAgICAgICAgIG9uRGVsZXRlRmVhdHVyZT17dmlzU3RhdGVBY3Rpb25zLmRlbGV0ZUZlYXR1cmV9XG4gICAgICAgICAgICAgICAgb25TZWxlY3Q9e3Zpc1N0YXRlQWN0aW9ucy5zZXRTZWxlY3RlZEZlYXR1cmV9XG4gICAgICAgICAgICAgICAgb25VcGRhdGU9e3Zpc1N0YXRlQWN0aW9ucy5zZXRGZWF0dXJlc31cbiAgICAgICAgICAgICAgICBvblRvZ2dsZVBvbHlnb25GaWx0ZXI9e3Zpc1N0YXRlQWN0aW9ucy5zZXRQb2x5Z29uRmlsdGVyTGF5ZXJ9XG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6IGlzRWRpdCA/ICdhbGwnIDogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgICBkaXNwbGF5OiBlZGl0b3IudmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZSdcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9NYXBDb21wb25lbnQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHtQRVJGX0RFQlVHICYmIHJlbmRlclBlcmZvcm1hbmNlU3RhdHMoKX1cbiAgICAgICAgICAgICAge3RoaXMuX3JlbmRlckRlY2tPdmVybGF5KGxheWVyc0ZvckRlY2spfVxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7bWFwU3R5bGUudG9wTWFwU3R5bGUgfHwgaGFzR2VvY29kZXJMYXllciA/IChcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e01BUF9TVFlMRS50b3B9PlxuICAgICAgICAgICAgICA8TWFwQ29tcG9uZW50IHsuLi5tYXBQcm9wc30ga2V5PVwidG9wXCIgbWFwU3R5bGU9e21hcFN0eWxlLnRvcE1hcFN0eWxlfT5cbiAgICAgICAgICAgICAgICB7dGhpcy5fcmVuZGVyRGVja092ZXJsYXkoe1tHRU9DT0RFUl9MQVlFUl9JRF06IHRydWV9KX1cbiAgICAgICAgICAgICAgPC9NYXBDb21wb25lbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7dGhpcy5fcmVuZGVyTWFwUG9wb3ZlcihsYXllcnNUb1JlbmRlcil9XG4gICAgICAgICAgeyFpc1NwbGl0IHx8IGluZGV4ID09PSAxID8gPEF0dHJpYnV0aW9uIC8+IDogbnVsbH1cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHttYXBTdGF0ZSwgbWFwU3R5bGV9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IGNvbnRleHRMb3N0ID0gdGhpcy5zdGF0ZT8uY29udGV4dExvc3Q7XG5cbiAgICAgIGlmIChjb250ZXh0TG9zdCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZE1hcENvbnRhaW5lciByZWY9e3RoaXMuX3JlZn0gc3R5bGU9e01BUF9TVFlMRS5jb250YWluZXJ9IGdsb2JlPXttYXBTdGF0ZS5nbG9iZX0+XG4gICAgICAgICAge21hcFN0eWxlLmJvdHRvbU1hcFN0eWxlICYmIHRoaXMuX3JlbmRlck1hcCgpfVxuICAgICAgICA8L1N0eWxlZE1hcENvbnRhaW5lcj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgTWFwQ29udGFpbmVyLmRpc3BsYXlOYW1lID0gJ01hcENvbnRhaW5lcic7XG5cbiAgcmV0dXJuIE1hcENvbnRhaW5lcjtcbn1cbiJdfQ==
@@ -134,7 +134,7 @@ var KEPLER_GL_NAME = 'kepler.gl'; // __PACKAGE_VERSION__ is automatically inject
134
134
  // an empty string which will allow us to retrieve the latest umd version
135
135
 
136
136
  exports.KEPLER_GL_NAME = KEPLER_GL_NAME;
137
- var KEPLER_GL_VERSION = "0.0.69-alpha.hackathon-3dtiles.6";
137
+ var KEPLER_GL_VERSION = "0.0.69-alpha.hackathon-3dtiles.7";
138
138
  exports.KEPLER_GL_VERSION = KEPLER_GL_VERSION;
139
139
  var KEPLER_GL_WEBSITE = 'http://kepler.gl/';
140
140
  exports.KEPLER_GL_WEBSITE = KEPLER_GL_WEBSITE;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@carto/kepler.gl",
3
3
  "author": "CARTO",
4
4
  "homepage": "https://github.com/CartoDB/carto-kepler#readme",
5
- "version": "0.0.69-alpha.hackathon-3dtiles.6",
5
+ "version": "0.0.69-alpha.hackathon-3dtiles.7",
6
6
  "description": "kepler.gl is a webgl based application to visualize large scale location data in the browser",
7
7
  "license": "MIT",
8
8
  "main": "dist/index.js",
@@ -69,6 +69,8 @@ import {Tile3DLayer} from '@deck.gl/geo-layers';
69
69
  const GOOGLE_MAPS_API_KEY = 'AIzaSyCpvQymc5wjSYIsxy3RV1widM3p3h78CAk';
70
70
 
71
71
  class CustomTile3DLayer extends Tile3DLayer {
72
+ static layerName = 'CustomTile3DLayer';
73
+
72
74
  filterSubLayer({layer, viewport}) {
73
75
  // Do not show tiles which are many layers too low in resolution (avoids artifacts)
74
76
  const lodZoom = 22 - Math.log2(layer.props.tile.lodMetricValue);