@kepler.gl/reducers 3.1.3 → 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.
@@ -15,7 +15,7 @@ var _booleanWithin = _interopRequireDefault(require("@turf/boolean-within"));
15
15
  var _bboxPolygon = _interopRequireDefault(require("@turf/bbox-polygon"));
16
16
  var _webMercator = require("@math.gl/web-mercator");
17
17
  var _deepmerge = _interopRequireDefault(require("deepmerge"));
18
- var _lodash = _interopRequireDefault(require("lodash.pick"));
18
+ var _pick = _interopRequireDefault(require("lodash/pick"));
19
19
  var _utils = require("@kepler.gl/utils");
20
20
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
21
21
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // SPDX-License-Identifier: MIT
@@ -403,7 +403,7 @@ function updateViewportBasedOnBounds(state, newMapState) {
403
403
  return newMapState;
404
404
  }
405
405
  function pickViewportPropsFromMapState(state) {
406
- return (0, _lodash["default"])(state, ['width', 'height', 'zoom', 'pitch', 'bearing', 'latitude', 'longitude', 'dragRotate', 'minZoom', 'maxZoom', 'maxBounds']);
406
+ return (0, _pick["default"])(state, ['width', 'height', 'zoom', 'pitch', 'bearing', 'latitude', 'longitude', 'dragRotate', 'minZoom', 'maxZoom', 'maxBounds']);
407
407
  }
408
408
 
409
409
  /** Select items from object whose value is not undefined */
@@ -433,4 +433,4 @@ function updateViewport(originalViewport, viewportUpdates) {
433
433
  }
434
434
  return newViewport;
435
435
  }
436
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2VvVmlld3BvcnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9ib29sZWFuV2l0aGluIiwiX2Jib3hQb2x5Z29uIiwiX3dlYk1lcmNhdG9yIiwiX2RlZXBtZXJnZSIsIl9sb2Rhc2giLCJfdXRpbHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm1hcFN0YXRlVXBkYXRlcnMiLCJJTklUSUFMX01BUF9TVEFURSIsImV4cG9ydHMiLCJwaXRjaCIsImJlYXJpbmciLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsInpvb20iLCJkcmFnUm90YXRlIiwid2lkdGgiLCJoZWlnaHQiLCJtaW5ab29tIiwidW5kZWZpbmVkIiwibWF4Wm9vbSIsIm1heEJvdW5kcyIsImlzU3BsaXQiLCJpc1ZpZXdwb3J0U3luY2VkIiwiaXNab29tTG9ja2VkIiwic3BsaXRNYXBWaWV3cG9ydHMiLCJ1cGRhdGVNYXBVcGRhdGVyIiwic3RhdGUiLCJhY3Rpb24iLCJfYWN0aW9uJHBheWxvYWQiLCJwYXlsb2FkIiwiaW5wdXRWaWV3cG9ydCIsInZpZXdwb3J0IiwiX2FjdGlvbiRwYXlsb2FkJG1hcEluIiwibWFwSW5kZXgiLCJ2YWxpZGF0ZVZpZXdQb3J0IiwidXBkYXRlVmlld3BvcnQiLCJvdGhlclZpZXdwb3J0TWFwSW5kZXgiLCJtYXAiLCJjdXJyZW50Vmlld3BvcnQiLCJpIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJmaXRCb3VuZHNVcGRhdGVyIiwiY2VudGVyQW5kWm9vbSIsImdldENlbnRlckFuZFpvb21Gcm9tQm91bmRzIiwibmV3U3RhdGUiLCJjZW50ZXIiLCJ0b2dnbGVQZXJzcGVjdGl2ZVVwZGF0ZXIiLCJyZXNldE1hcENvbmZpZ1VwZGF0ZXIiLCJpbml0aWFsU3RhdGUiLCJyZWNlaXZlTWFwQ29uZmlnVXBkYXRlciIsIl9yZWYiLCJfcmVmJHBheWxvYWQiLCJfcmVmJHBheWxvYWQkY29uZmlnIiwiY29uZmlnIiwiX3JlZiRwYXlsb2FkJG9wdGlvbnMiLCJvcHRpb25zIiwiX3JlZiRwYXlsb2FkJGJvdW5kcyIsImJvdW5kcyIsIm1hcFN0YXRlIiwibWVyZ2VkU3RhdGUiLCJkZWVwbWVyZ2UiLCJhcnJheU1lcmdlIiwiX2Rlc3RpbmF0aW9uQXJyYXkiLCJzb3VyY2VBcnJheSIsImNlbnRlck1hcCIsImdldE1hcERpbUZvclNwbGl0TWFwIiwidG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwidG9nZ2xlU3BsaXRNYXBWaWV3cG9ydFVwZGF0ZXIiLCJuZXdNYXBTdGF0ZSIsImxhc3RVcGRhdGVkVmlld3BvcnRJbmRleCIsImZpbmRJbmRleCIsInYiLCJsZWZ0Vmlld3BvcnQiLCJwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZSIsInJpZ2h0Vmlld3BvcnQiLCJ1cGRhdGVWaWV3cG9ydEJhc2VkT25Cb3VuZHMiLCJ2aWV3cG9ydEJvdW5kcyIsImdlb1ZpZXdwb3J0IiwiTUFQQk9YX1RJTEVfU0laRSIsInZpZXdwb3J0Qm91bmRzUG9seWdvbiIsImJib3hQb2x5Z29uIiwibmV3U3RhdGVNYXhCb3VuZHMiLCJtYXhCb3VuZHNQb2x5Z29uIiwiaGFzTWF4Qm91bmRzQ2hhbmdlZCIsImV2ZXJ5IiwidmFsIiwiaWR4IiwiYm9vbGVhbldpdGhpbiIsIl9maXRCb3VuZHMiLCJmaXRCb3VuZHMiLCJwaWNrIiwiZGVmaW5lZFByb3BzIiwib2JqIiwiZW50cmllcyIsInJlZHVjZSIsImFjY3UiLCJfcmVmMiIsIl9yZWYzIiwiX3NsaWNlZFRvQXJyYXkyIiwiayIsIm9yaWdpbmFsVmlld3BvcnQiLCJ2aWV3cG9ydFVwZGF0ZXMiLCJuZXdWaWV3cG9ydCIsInZhbGlkYXRlQm91bmRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL21hcC1zdGF0ZS11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgZ2VvVmlld3BvcnQgZnJvbSAnQG1hcGJveC9nZW8tdmlld3BvcnQnO1xuaW1wb3J0IGJvb2xlYW5XaXRoaW4gZnJvbSAnQHR1cmYvYm9vbGVhbi13aXRoaW4nO1xuaW1wb3J0IGJib3hQb2x5Z29uIGZyb20gJ0B0dXJmL2Jib3gtcG9seWdvbic7XG5pbXBvcnQge2ZpdEJvdW5kc30gZnJvbSAnQG1hdGguZ2wvd2ViLW1lcmNhdG9yJztcbmltcG9ydCBkZWVwbWVyZ2UgZnJvbSAnZGVlcG1lcmdlJztcbmltcG9ydCBwaWNrIGZyb20gJ2xvZGFzaC5waWNrJztcblxuaW1wb3J0IHtcbiAgZ2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHMsXG4gIHZhbGlkYXRlQm91bmRzLFxuICBNQVBCT1hfVElMRV9TSVpFLFxuICB2YWxpZGF0ZVZpZXdQb3J0XG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtNYXBTdGF0ZUFjdGlvbnMsIFJlY2VpdmVNYXBDb25maWdQYXlsb2FkLCBBY3Rpb25UeXBlc30gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7TWFwU3RhdGUsIEJvdW5kcywgVmlld3BvcnR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG4vKipcbiAqIFVwZGF0ZXJzIGZvciBgbWFwU3RhdGVgIHJlZHVjZXIuIENhbiBiZSB1c2VkIGluIHlvdXIgcm9vdCByZWR1Y2VyIHRvIGRpcmVjdGx5IG1vZGlmeSBrZXBsZXIuZ2wncyBzdGF0ZS5cbiAqIFJlYWQgbW9yZSBhYm91dCBbVXNpbmcgdXBkYXRlcnNdKC4uL2FkdmFuY2VkLXVzYWdlL3VzaW5nLXVwZGF0ZXJzLm1kKVxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyLCB7bWFwU3RhdGVVcGRhdGVyc30gZnJvbSAna2VwbGVyLmdsL3JlZHVjZXJzJztcbiAqIC8vIFJvb3QgUmVkdWNlclxuICogY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICogIGtlcGxlckdsOiBrZXBsZXJHbFJlZHVjZXIsXG4gKiAgYXBwOiBhcHBSZWR1Y2VyXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBjb21wb3NlZFJlZHVjZXIgPSAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICogIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAqICAgIC8vIGNsaWNrIGJ1dHRvbiB0byBjbG9zZSBzaWRlIHBhbmVsXG4gKiAgICBjYXNlICdDTElDS19CVVRUT04nOlxuICogICAgICByZXR1cm4ge1xuICogICAgICAgIC4uLnN0YXRlLFxuICogICAgICAgIGtlcGxlckdsOiB7XG4gKiAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbCxcbiAqICAgICAgICAgIGZvbzoge1xuICogICAgICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wuZm9vLFxuICogICAgICAgICAgICAgbWFwU3RhdGU6IG1hcFN0YXRlVXBkYXRlcnMuZml0Qm91bmRzVXBkYXRlcihcbiAqICAgICAgICAgICAgICAgbWFwU3RhdGUsIHtwYXlsb2FkOiBbMTI3LjM0LCAzMS4wOSwgMTI3LjU2LCAzMS41OV1dfVxuICogICAgICAgICAgICAgKVxuICogICAgICAgICAgfVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBtYXBTdGF0ZVVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vKipcbiAqIERlZmF1bHQgaW5pdGlhbCBgbWFwU3RhdGVgXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcGl0Y2ggRGVmYXVsdDogYDBgXG4gKiBAcHJvcGVydHkgYmVhcmluZyBEZWZhdWx0OiBgMGBcbiAqIEBwcm9wZXJ0eSBsYXRpdHVkZSBEZWZhdWx0OiBgMzcuNzUwNDNgXG4gKiBAcHJvcGVydHkgbG9uZ2l0dWRlIERlZmF1bHQ6IGAtMTIyLjM0Njc5YFxuICogQHByb3BlcnR5IHpvb20gRGVmYXVsdDogYDlgXG4gKiBAcHJvcGVydHkgZHJhZ1JvdGF0ZSBEZWZhdWx0OiBgZmFsc2VgXG4gKiBAcHJvcGVydHkgd2lkdGggRGVmYXVsdDogYDgwMGBcbiAqIEBwcm9wZXJ0eSBoZWlnaHQgRGVmYXVsdDogYDgwMGBcbiAqIEBwcm9wZXJ0eSBtaW5ab29tOiBgdW5kZWZpbmVkYCxcbiAqIEBwcm9wZXJ0eSBtYXhab29tOiBgdW5kZWZpbmVkYCxcbiAqIEBwcm9wZXJ0eSBtYXhCb3VuZHM6IGB1bmRlZmluZWRgLFxuICogQHByb3BlcnR5IGlzU3BsaXQ6IGBmYWxzZWAsXG4gKiBAcHJvcGVydHkgaXNWaWV3cG9ydFN5bmNlZDogYHRydWVgLFxuICogQHByb3BlcnR5IGlzWm9vbUxvY2tlZDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBzcGxpdE1hcFZpZXdwb3J0czogYFtdYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9NQVBfU1RBVEU6IE1hcFN0YXRlID0ge1xuICBwaXRjaDogMCxcbiAgYmVhcmluZzogMCxcbiAgbGF0aXR1ZGU6IDM3Ljc1MDQzLFxuICBsb25naXR1ZGU6IC0xMjIuMzQ2NzksXG4gIHpvb206IDksXG4gIGRyYWdSb3RhdGU6IGZhbHNlLFxuICB3aWR0aDogODAwLFxuICBoZWlnaHQ6IDgwMCxcbiAgbWluWm9vbTogdW5kZWZpbmVkLFxuICBtYXhab29tOiB1bmRlZmluZWQsXG4gIG1heEJvdW5kczogdW5kZWZpbmVkLFxuICBpc1NwbGl0OiBmYWxzZSxcbiAgaXNWaWV3cG9ydFN5bmNlZDogdHJ1ZSxcbiAgaXNab29tTG9ja2VkOiBmYWxzZSxcbiAgc3BsaXRNYXBWaWV3cG9ydHM6IFtdXG59O1xuXG4vKiBVcGRhdGVycyAqL1xuLyoqXG4gKiBVcGRhdGUgbWFwIHZpZXdwb3J0XG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdXBkYXRlTWFwVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5VcGRhdGVNYXBVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdGF0ZSA9PiB7XG4gIGNvbnN0IHt2aWV3cG9ydDogaW5wdXRWaWV3cG9ydCwgbWFwSW5kZXggPSAwfSA9IGFjdGlvbi5wYXlsb2FkO1xuICBjb25zdCB2aWV3cG9ydCA9IHZhbGlkYXRlVmlld1BvcnQoaW5wdXRWaWV3cG9ydCk7XG5cbiAgaWYgKHN0YXRlLmlzVmlld3BvcnRTeW5jZWQpIHtcbiAgICAvLyBUaGUgYHVwZGF0ZVZpZXdwb3J0YCBmdW5jdGlvbiBpcyB0eXBlZCBhcyAoVmlld3BvcnQsIFZpZXdwb3J0KSAtPiBWaWV3cG9ydCBidXQgaGVyZSB0aGVcbiAgICAvLyBleHBlY3RlZCB0eXBpbmcgaXMgKE1hcFN0YXRlLCBWaWV3cG9ydCkgLT4gTWFwU3RhdGUuXG4gICAgLy8gdGhpcyBjb3VsZCBiZSBhIHBvdGVudGlhbCBidWcgYXMgd2UgdHJlYXQgVmlld3BvcnQgYW5kIE1hcFN0YXRlIGFzIGVxdWFsIHNlZW1pbmdseVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVHlwZSAnVmlld3BvcnQnIGlzIG1pc3NpbmcgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGZyb20gdHlwZSAnTWFwU3RhdGUnOiBpc1NwbGl0LCBpc1ZpZXdwb3J0U3luY2VkLCBpc1pvb21Mb2NrZWQsIHNwbGl0TWFwVmlld3BvcnRzXG4gICAgcmV0dXJuIHVwZGF0ZVZpZXdwb3J0KHN0YXRlLCB2aWV3cG9ydCk7XG4gIH1cblxuICBsZXQgb3RoZXJWaWV3cG9ydE1hcEluZGV4ID0gLTE7XG4gIGNvbnN0IHNwbGl0TWFwVmlld3BvcnRzID0gc3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubWFwKChjdXJyZW50Vmlld3BvcnQsIGkpID0+IHtcbiAgICBpZiAoaSA9PT0gbWFwSW5kZXgpIHtcbiAgICAgIC8vIHVwZGF0ZSB0aGUgbWF0Y2hpbmcgdmlld3BvcnQgd2l0aCB0aGUgbmV3Vmlld3BvcnQgaW5mbyBpbiB0aGUgYWN0aW9uIHBheWxvYWRcbiAgICAgIHJldHVybiB1cGRhdGVWaWV3cG9ydChjdXJyZW50Vmlld3BvcnQsIHZpZXdwb3J0KTtcbiAgICB9XG5cbiAgICBvdGhlclZpZXdwb3J0TWFwSW5kZXggPSBpO1xuICAgIC8vIG1ha2Ugbm8gY2hhbmdlcyB0byB0aGUgb3RoZXIgdmlld3BvcnQgKHlldClcbiAgICByZXR1cm4gY3VycmVudFZpZXdwb3J0O1xuICB9KTtcblxuICAvLyBtYWtlIGNvbmRpdGlvbmFsIHVwZGF0ZXMgdG8gdGhlIG90aGVyIHZpZXdwb3J0IG5vdCBtYXRjaGluZyB0aGlzIHBheWxvYWQncyBgbWFwSW5kZXhgXG4gIGlmIChOdW1iZXIuaXNGaW5pdGUob3RoZXJWaWV3cG9ydE1hcEluZGV4KSAmJiBvdGhlclZpZXdwb3J0TWFwSW5kZXggPiAtMSkge1xuICAgIC8vIHdpZHRoIGFuZCBoZWlnaHQgYXJlIGEgc3BlY2lhbCBjYXNlIGFuZCBhcmUgYWx3YXlzIHVwZGF0ZWRcbiAgICBzcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdID0ge1xuICAgICAgLi4uc3BsaXRNYXBWaWV3cG9ydHNbb3RoZXJWaWV3cG9ydE1hcEluZGV4XSxcbiAgICAgIHdpZHRoOiBzcGxpdE1hcFZpZXdwb3J0c1ttYXBJbmRleF0ud2lkdGgsXG4gICAgICBoZWlnaHQ6IHNwbGl0TWFwVmlld3BvcnRzW21hcEluZGV4XS5oZWlnaHRcbiAgICB9O1xuXG4gICAgaWYgKHN0YXRlLmlzWm9vbUxvY2tlZCkge1xuICAgICAgLy8gdXBkYXRlIHRoZSBvdGhlciB2aWV3cG9ydCB3aXRoIHRoZSBuZXcgem9vbSBmcm9tIHRoZSBzcGxpdCB2aWV3cG9ydCB0aGF0IHdhcyB1cGRhdGVkIHdpdGggdGhpcyBwYXlsb2FkJ3MgYG1hcEluZGV4YFxuICAgICAgc3BsaXRNYXBWaWV3cG9ydHNbb3RoZXJWaWV3cG9ydE1hcEluZGV4XSA9IHtcbiAgICAgICAgLi4uc3BsaXRNYXBWaWV3cG9ydHNbb3RoZXJWaWV3cG9ydE1hcEluZGV4XSxcbiAgICAgICAgem9vbTogc3BsaXRNYXBWaWV3cG9ydHNbbWFwSW5kZXhdLnpvb21cbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAvLyB1cGRhdGUgdGhlIHRvcC1sZXZlbCBtYXBTdGF0ZSB2aWV3cG9ydCB3aXRoIHRoZSBtb3N0IHJlY2VudGx5IGludGVyYWN0ZWQtd2l0aCBzcGxpdCB2aWV3cG9ydFxuICAgIC8vIFdIWT8gdGhpcyBhdm9pZHMgem9vbSBhbmQgYm91bmRzIFwianVtcGluZ1wiIGR1ZSB0byBhIFwic3RhbGVcIiB0b3AtbGV2ZWwgbWFwU3RhdGUgdmlld3BvcnQgd2hlbjpcbiAgICAvLyAgMS4gdG9nZ2xpbmcgb2ZmIHRoZSB1bnN5bmNlZCB2aWV3cG9ydHMgbW9kZSB0byBzd2l0Y2ggdG8gdGhlIHN5bmNlZCB2aWV3cG9ydHMgbW9kZVxuICAgIC8vICAyLiB0b2dnbGluZyBvbiB0aGUgem9vbSBsb2NrIGR1cmluZyBhbiB1bnN5bmNlZCB2aWV3cG9ydHMgbW9kZVxuICAgIC4uLnN0YXRlLFxuICAgIC4uLnNwbGl0TWFwVmlld3BvcnRzW21hcEluZGV4XSxcbiAgICAvLyB1cGRhdGUgdGhlIG1hcFN0YXRlIHdpdGggdGhlIG5ldyBhcnJheSBvZiBzcGxpdCB2aWV3cG9ydHNcbiAgICBzcGxpdE1hcFZpZXdwb3J0c1xuICB9O1xufTtcblxuLyoqXG4gKiBGaXQgbWFwIHZpZXdwb3J0IHRvIGJvdW5kc1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGZpdEJvdW5kc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuRml0Qm91bmRzVXBkYXRlckFjdGlvblxuKTogTWFwU3RhdGUgPT4ge1xuICBjb25zdCBjZW50ZXJBbmRab29tID0gZ2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHMoYWN0aW9uLnBheWxvYWQsIHtcbiAgICB3aWR0aDogc3RhdGUud2lkdGgsXG4gICAgaGVpZ2h0OiBzdGF0ZS5oZWlnaHRcbiAgfSk7XG4gIGlmICghY2VudGVyQW5kWm9vbSkge1xuICAgIC8vIGJvdW5kcyBpcyBpbnZhbGlkXG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgbGF0aXR1ZGU6IGNlbnRlckFuZFpvb20uY2VudGVyWzFdLFxuICAgIGxvbmdpdHVkZTogY2VudGVyQW5kWm9vbS5jZW50ZXJbMF0sXG4gICAgLy8gRm9yIG1hcmdpbmFsIG9yIGludmFsaWQgYm91bmRzLCB6b29tIG1heSBiZSBOYU4uIE1ha2Ugc3VyZSB0byBwcm92aWRlIGEgdmFsaWQgdmFsdWUgaW4gb3JkZXJcbiAgICAvLyB0byBhdm9pZCBjb3JydXB0IHN0YXRlIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcyBhcyB6b29tIGlzIGV4cGVjdGVkIHRvIGJlIGEgbnVtYmVyXG4gICAgLi4uKE51bWJlci5pc0Zpbml0ZShjZW50ZXJBbmRab29tLnpvb20pID8ge3pvb206IGNlbnRlckFuZFpvb20uem9vbX0gOiB7fSlcbiAgfTtcblxuICAvLyBpZiBmaXR0aW5nIHRvIGJvdW5kcyB3aGlsZSBzcGxpdCBhbmQgdW5zeW5jZWRcbiAgLy8gY29weSB0aGUgbmV3IGxhdGl0dWRlLCBsb25naXR1ZGUsIGFuZCB6b29tIHZhbHVlcyB0byBlYWNoIHNwbGl0IHZpZXdwb3J0XG4gIGlmIChuZXdTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5sZW5ndGgpIHtcbiAgICBuZXdTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyA9IG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzLm1hcChjdXJyZW50Vmlld3BvcnQgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnRWaWV3cG9ydCxcbiAgICAgIGxhdGl0dWRlOiBuZXdTdGF0ZS5sYXRpdHVkZSxcbiAgICAgIGxvbmdpdHVkZTogbmV3U3RhdGUubG9uZ2l0dWRlLFxuICAgICAgem9vbTogbmV3U3RhdGUuem9vbVxuICAgIH0pKTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn07XG5cbi8qKlxuICogVG9nZ2xlIGJldHdlZW4gM2QgYW5kIDJkIG1hcC5cbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVQZXJzcGVjdGl2ZVVwZGF0ZXIgPSAoc3RhdGU6IE1hcFN0YXRlKTogTWFwU3RhdGUgPT4ge1xuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICAuLi57XG4gICAgICBwaXRjaDogc3RhdGUuZHJhZ1JvdGF0ZSA/IDAgOiA1MCxcbiAgICAgIGJlYXJpbmc6IHN0YXRlLmRyYWdSb3RhdGUgPyAwIDogMjRcbiAgICB9LFxuICAgIGRyYWdSb3RhdGU6ICFzdGF0ZS5kcmFnUm90YXRlXG4gIH07XG5cbiAgLy8gaWYgdG9nZ2xpbmcgM2QgYW5kIDJkIHdoaWxlIHNwbGl0IGFuZCB1bnN5bmNlZFxuICAvLyBjb3B5IHRoZSBuZXcgcGl0Y2gsIGJlYXJpbmcsIGFuZCBkcmFnUm90YXRlIHZhbHVlcyB0byBlYWNoIHNwbGl0IHZpZXdwb3J0XG4gIGlmIChuZXdTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5sZW5ndGgpIHtcbiAgICBuZXdTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyA9IG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzLm1hcChjdXJyZW50Vmlld3BvcnQgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnRWaWV3cG9ydCxcbiAgICAgIHBpdGNoOiBuZXdTdGF0ZS5waXRjaCxcbiAgICAgIGJlYXJpbmc6IG5ld1N0YXRlLmJlYXJpbmcsXG4gICAgICBkcmFnUm90YXRlOiBuZXdTdGF0ZS5kcmFnUm90YXRlXG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIG5ld1N0YXRlO1xufTtcblxuLyoqXG4gKiByZXNldCBtYXBTdGF0ZSB0byBpbml0aWFsIFN0YXRlXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVzZXRNYXBDb25maWdVcGRhdGVyID0gKHN0YXRlOiBNYXBTdGF0ZSk6IE1hcFN0YXRlID0+ICh7XG4gIC4uLklOSVRJQUxfTUFQX1NUQVRFLFxuICAuLi5zdGF0ZS5pbml0aWFsU3RhdGUsXG4gIGluaXRpYWxTdGF0ZTogc3RhdGUuaW5pdGlhbFN0YXRlXG59KTtcblxuLy8gY29uc2lkZXIgY2FzZSB3aGVyZSB5b3UgaGF2ZSBhIHNwbGl0IG1hcCBhbmQgdXNlciB3YW50cyB0byByZXNldFxuLyoqXG4gKiBVcGRhdGUgYG1hcFN0YXRlYCB0byBwcm9wYWdhdGUgYSBuZXcgY29uZmlnXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBwYXlsb2FkOiB7Y29uZmlnID0ge30sIG9wdGlvbnMgPSB7fSwgYm91bmRzID0gbnVsbH1cbiAgfToge1xuICAgIHR5cGU/OiB0eXBlb2YgQWN0aW9uVHlwZXMuUkVDRUlWRV9NQVBfQ09ORklHO1xuICAgIHBheWxvYWQ6IFJlY2VpdmVNYXBDb25maWdQYXlsb2FkO1xuICB9XG4pOiBNYXBTdGF0ZSA9PiB7XG4gIC8qKlxuICAgKiBAdHlwZSB7UGFydGlhbDxNYXBTdGF0ZT59XG4gICAqL1xuICBjb25zdCBtYXBTdGF0ZSA9IChjb25maWcgfHwge30pLm1hcFN0YXRlIHx8IHt9O1xuICAvLyBtZXJnZWQgcmVjZWl2ZWQgbWFwU3RhdGUgd2l0aCBwcmV2aW91cyBzdGF0ZVxuICAvLyBzdGF0ZSBhbHNvIG1heSBpbmNsdWRlIHByb3BlcnRpZXMgdGhhdCBhcmUgbmV3IHRvIGFuIGV4aXN0aW5nLCBzYXZlZCBwcm9qZWN0J3MgbWFwU3RhdGVcblxuICBsZXQgbWVyZ2VkU3RhdGUgPSBkZWVwbWVyZ2U8TWFwU3RhdGU+KHN0YXRlLCBtYXBTdGF0ZSwge1xuICAgIC8vIG5vdGU6IGRlZXBtZXJnZSBieSBkZWZhdWx0IHdpbGwgbWVyZ2UgYXJyYXlzIGJ5IGNvbmNhdGVuYXRpbmcgdGhlbVxuICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIG92ZXJ3cml0ZSBkZXN0aW5hdGlvbiBhcnJheXMgd2l0aCBzb3VyY2UgYXJyYXlzLCBpZiBwcmVzZW50XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL1RlaFNocmlrZS9kZWVwbWVyZ2UjYXJyYXltZXJnZS1leGFtcGxlLW92ZXJ3cml0ZS10YXJnZXQtYXJyYXlcbiAgICBhcnJheU1lcmdlOiAoX2Rlc3RpbmF0aW9uQXJyYXksIHNvdXJjZUFycmF5KSA9PiBzb3VyY2VBcnJheVxuICB9KTtcblxuICAvLyBpZiBjZW50ZXIgbWFwXG4gIC8vIGNlbnRlciBtYXAgd2lsbCBvdmVycmlkZSBtYXBTdGF0ZSBjb25maWdcbiAgaWYgKG9wdGlvbnMuY2VudGVyTWFwICYmIGJvdW5kcykge1xuICAgIG1lcmdlZFN0YXRlID0gZml0Qm91bmRzVXBkYXRlcihtZXJnZWRTdGF0ZSwge1xuICAgICAgcGF5bG9hZDogYm91bmRzXG4gICAgfSk7XG4gIH1cblxuICAvLyBtYWtlIHN1cmUgd2UgdmFsaWRhdGUgbWFwIHN0YXRlIGJlZm9yZSB3ZSBtZXJnZVxuICBtZXJnZWRTdGF0ZSA9IHZhbGlkYXRlVmlld1BvcnQobWVyZ2VkU3RhdGUpO1xuXG4gIHJldHVybiB7XG4gICAgLi4ubWVyZ2VkU3RhdGUsXG4gICAgLy8gdXBkYXRlIHdpZHRoIGlmIGBpc1NwbGl0YCBoYXMgY2hhbmdlZFxuICAgIC4uLmdldE1hcERpbUZvclNwbGl0TWFwKG1lcmdlZFN0YXRlLmlzU3BsaXQsIHN0YXRlKVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYmV0d2VlbiBvbmUgb3Igc3BsaXQgbWFwc1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVXBkYXRlciA9IChzdGF0ZTogTWFwU3RhdGUpOiBNYXBTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgLi4uZ2V0TWFwRGltRm9yU3BsaXRNYXAoIXN0YXRlLmlzU3BsaXQsIHN0YXRlKSxcbiAgaXNTcGxpdDogIXN0YXRlLmlzU3BsaXQsXG4gIC4uLighc3RhdGUuaXNTcGxpdCA9PT0gZmFsc2VcbiAgICA/IHtcbiAgICAgICAgLy8gaWYgdG9nZ2xpbmcgdG8gbm8gbG9uZ2VyIHNwbGl0IChzaW5nbGUgbW9kZSkgdGhlbiByZXNldCBhIGZldyBwcm9wZXJ0aWVzXG4gICAgICAgIGlzVmlld3BvcnRTeW5jZWQ6IHRydWUsXG4gICAgICAgIGlzWm9vbUxvY2tlZDogZmFsc2UsXG4gICAgICAgIHNwbGl0TWFwVmlld3BvcnRzOiBbXVxuICAgICAgfVxuICAgIDoge30pXG59KTtcblxuLyoqXG4gKiBUb2dnbGUgYmV0d2VlbiBsb2NrZWQgYW5kIHVubG9ja2VkIHNwbGl0IHZpZXdwb3J0c1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyQWN0aW9uXG4pID0+IHtcbiAgLy8gbmV3IG1hcCBzdGF0ZSBpbW1lZGlhdGVseSBnZXRzIHRoZSBuZXcsIG9wdGlvbmFsIHBheWxvYWQgdmFsdWVzIGZvciBpc1ZpZXdwb3J0U3luY2VkIGFuZC9vciBpc1pvb21Mb2NrZWRcbiAgY29uc3QgbmV3TWFwU3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgLi4uKGFjdGlvbi5wYXlsb2FkIHx8IHt9KVxuICB9O1xuXG4gIGlmIChuZXdNYXBTdGF0ZS5pc1ZpZXdwb3J0U3luY2VkKSB7XG4gICAgLy8gc3dpdGNoaW5nIGZyb20gdW5zeW5jZWQgdG8gc3luY2VkIHZpZXdwb3J0c1xuICAgIG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gW107XG4gIH0gZWxzZSB7XG4gICAgLy8gc3dpdGNoaW5nIGZyb20gc3luY2VkIHRvIHVuc3luY2VkIHZpZXdwb3J0c1xuICAgIC8vIG9yIGFscmVhZHkgaW4gdW5zeW5jZWQgbW9kZSBhbmQgdG9nZ2xpbmcgbG9ja2VkIHpvb21cblxuICAgIGlmIChzdGF0ZS5pc1pvb21Mb2NrZWQgJiYgIW5ld01hcFN0YXRlLmlzWm9vbUxvY2tlZCkge1xuICAgICAgLy8gc3dpdGNoaW5nIG9mZiBsb2NrZWQgem9vbSB3aGlsZSB1bnN5bmNlZFxuICAgICAgLy8gZG9uJ3QgY29weSB0aGUgbWFwU3RhdGVzIHRvIGxlZnQgYW5kIHJpZ2h0IHZpZXdwb3J0cyBiZWNhdXNlIHRoZXJlIHdpbGwgYmUgem9vbSBcImp1bXBpbmdcIlxuICAgICAgcmV0dXJuIG5ld01hcFN0YXRlO1xuICAgIH1cblxuICAgIGlmICghc3RhdGUuaXNab29tTG9ja2VkICYmIG5ld01hcFN0YXRlLmlzWm9vbUxvY2tlZCkge1xuICAgICAgLy8gc3dpdGNoaW5nIG9uIGxvY2tlZCB6b29tIHdoaWxlIHVuc3luY2VkXG4gICAgICAvLyBvbmx5IGNvcHkgem9vbSB2aWV3cG9ydCBwcm9wZXJ0eSBmcm9tIHRoZSBtb3N0IHJlY2VudGx5IGludGVyYWN0ZWQtd2l0aCB2aWV3cG9ydCB0byB0aGUgb3RoZXJcbiAgICAgIC8vIFRPRE86IGRvIHdlIHdhbnQgdG8gY2hlY2sgZm9yIGEgbWF0Y2ggYSBkaWZmZXJlbnQgd2F5LCBzdWNoIGFzIGEgY29tYm8gb2YgYGxhdGl0dWRlYCBhbmQgYGxvbmdpdHVkZWA/XG4gICAgICBjb25zdCBsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXggPSBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5maW5kSW5kZXgoXG4gICAgICAgIHYgPT4gbmV3TWFwU3RhdGUuem9vbSA9PT0gdi56b29tXG4gICAgICApO1xuXG4gICAgICBjb25zdCBzcGxpdE1hcFZpZXdwb3J0cyA9IG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzLm1hcCgoY3VycmVudFZpZXdwb3J0LCBpKSA9PiB7XG4gICAgICAgIGlmIChpID09PSBsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXgpIHtcbiAgICAgICAgICAvLyBubyB6b29tIHRvIG1vZGlmeSBoZXJlXG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnRWaWV3cG9ydDtcbiAgICAgICAgfVxuICAgICAgICAvLyB0aGUgb3RoZXIgdmlld3BvcnQgZ2V0cyB0aGUgbW9zdCByZWNlbnRseSBpbnRlcmFjdGVkLXdpdGggdmlld3BvcnQncyB6b29tXG4gICAgICAgIC8vIFdIWT8gdGhlIHZpZXdwb3J0IHRoZSB1c2VyIHdhcyBsYXN0IGludGVyYWN0aW5nIHdpdGggd2lsbCBzZXQgem9vbSBhY3Jvc3MgdGhlIGJvYXJkIGZvciBzbW9vdGggVVhcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5jdXJyZW50Vmlld3BvcnQsXG4gICAgICAgICAgem9vbTogbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHNbbGFzdFVwZGF0ZWRWaWV3cG9ydEluZGV4XS56b29tXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBzcGxpdE1hcFZpZXdwb3J0cztcblxuICAgICAgcmV0dXJuIG5ld01hcFN0YXRlO1xuICAgIH1cblxuICAgIC8vIGlmIGN1cnJlbnQgdmlld3BvcnQgaXMgc3luY2VkLCBhbmQgd2UgYXJlIHVuc3luY2luZyBpdFxuICAgIC8vIG9yIGFscmVhZHkgaW4gdW5zeW5jZWQgbW9kZSBhbmQgTk9UIHRvZ2dsaW5nIGxvY2tlZCB6b29tXG4gICAgLy8gbWFrZSBhIGZyZXNoIGNvcHkgb2YgdGhlIGN1cnJlbnQgdmlld3BvcnQgb2JqZWN0LCBhc3NpZ24gaXQgdG8gc3BsaXRNYXBWaWV3cG9ydHNbXVxuICAgIC8vIHBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlIGlzIGNhbGxlZCB0d2ljZSB0byBhdm9pZCBtZW1vcnkgYWxsb2NhdGlvbiBjb25mbGljdHNcbiAgICBjb25zdCBsZWZ0Vmlld3BvcnQgPSBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZShuZXdNYXBTdGF0ZSk7XG4gICAgY29uc3QgcmlnaHRWaWV3cG9ydCA9IHBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlKG5ld01hcFN0YXRlKTtcbiAgICBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyA9IFtsZWZ0Vmlld3BvcnQsIHJpZ2h0Vmlld3BvcnRdO1xuICB9XG5cbiAgLy8gcmV0dXJuIG5ldyBzdGF0ZVxuICByZXR1cm4gbmV3TWFwU3RhdGU7XG59O1xuXG4vLyBIZWxwZXJzXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFwRGltRm9yU3BsaXRNYXAoaXNTcGxpdCwgc3RhdGUpIHtcbiAgLy8gY2FzZXM6XG4gIC8vIDEuIHN0YXRlIHNwbGl0OiB0cnVlIC0gaXNTcGxpdDogdHJ1ZVxuICAvLyBkbyBub3RoaW5nXG4gIC8vIDIuIHN0YXRlIHNwbGl0OiBmYWxzZSAtIGlzU3BsaXQ6IGZhbHNlXG4gIC8vIGRvIG5vdGhpbmdcbiAgaWYgKHN0YXRlLmlzU3BsaXQgPT09IGlzU3BsaXQpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCB3aWR0aCA9XG4gICAgc3RhdGUuaXNTcGxpdCAmJiAhaXNTcGxpdFxuICAgICAgPyAvLyAzLiBzdGF0ZSBzcGxpdDogdHJ1ZSAtIGlzU3BsaXQ6IGZhbHNlXG4gICAgICAgIC8vIGRvdWJsZSB3aWR0aFxuICAgICAgICBzdGF0ZS53aWR0aCAqIDJcbiAgICAgIDogLy8gNC4gc3RhdGUgc3BsaXQ6IGZhbHNlIC0gaXNTcGxpdDogdHJ1ZVxuICAgICAgICAvLyBzcGxpdCB3aWR0aFxuICAgICAgICBzdGF0ZS53aWR0aCAvIDI7XG5cbiAgcmV0dXJuIHtcbiAgICB3aWR0aFxuICB9O1xufVxuXG5mdW5jdGlvbiB1cGRhdGVWaWV3cG9ydEJhc2VkT25Cb3VuZHMoc3RhdGU6IE1hcFN0YXRlLCBuZXdNYXBTdGF0ZTogTWFwU3RhdGUpIHtcbiAgLy8gR2V0IHRoZSBuZXcgdmlld3BvcnQgYm91bmRzXG4gIGNvbnN0IHZpZXdwb3J0Qm91bmRzID0gZ2VvVmlld3BvcnQuYm91bmRzKFxuICAgIFtuZXdNYXBTdGF0ZS5sb25naXR1ZGUsIG5ld01hcFN0YXRlLmxhdGl0dWRlXSxcbiAgICBuZXdNYXBTdGF0ZS56b29tLFxuICAgIFtuZXdNYXBTdGF0ZS53aWR0aCwgbmV3TWFwU3RhdGUuaGVpZ2h0XSxcbiAgICBNQVBCT1hfVElMRV9TSVpFXG4gICk7XG4gIC8vIEdlbmVyYXRlIHR1cmYgUG9seWdvbiBmcm9tIGJvdW5kcyBmb3IgY29tcGFyaXNvblxuICBjb25zdCB2aWV3cG9ydEJvdW5kc1BvbHlnb24gPSBiYm94UG9seWdvbih2aWV3cG9ydEJvdW5kcyk7XG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbmV3U3RhdGVNYXhCb3VuZHM6IEJvdW5kcyA9IG5ld01hcFN0YXRlLm1heEJvdW5kcztcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBtYXhCb3VuZHNQb2x5Z29uID0gYmJveFBvbHlnb24obmV3U3RhdGVNYXhCb3VuZHMpO1xuXG4gIC8vIElmIG1heEJvdW5kcyBoYXMgY2hhbmdlZCByZXNldCB0aGUgdmlld3BvcnQgdG8gc25hcCB0byBib3VuZHNcbiAgY29uc3QgaGFzTWF4Qm91bmRzQ2hhbmdlZCA9XG4gICAgIXN0YXRlLm1heEJvdW5kcyB8fCAhc3RhdGUubWF4Qm91bmRzLmV2ZXJ5KCh2YWwsIGlkeCkgPT4gdmFsID09PSBuZXdTdGF0ZU1heEJvdW5kc1tpZHhdKTtcbiAgaWYgKGhhc01heEJvdW5kc0NoYW5nZWQpIHtcbiAgICAvLyBDaGVjayBpZiB0aGUgbmV3TWFwU3RhdGUgdmlld3BvcnQgaXMgd2l0aGluIG1heEJvdW5kc1xuICAgIGlmICghYm9vbGVhbldpdGhpbih2aWV3cG9ydEJvdW5kc1BvbHlnb24sIG1heEJvdW5kc1BvbHlnb24pKSB7XG4gICAgICBjb25zdCB7bGF0aXR1ZGUsIGxvbmdpdHVkZSwgem9vbX0gPSBmaXRCb3VuZHMoe1xuICAgICAgICB3aWR0aDogbmV3TWFwU3RhdGUud2lkdGgsXG4gICAgICAgIGhlaWdodDogbmV3TWFwU3RhdGUud2lkdGgsXG4gICAgICAgIGJvdW5kczogW1xuICAgICAgICAgIFtuZXdTdGF0ZU1heEJvdW5kc1swXSwgbmV3U3RhdGVNYXhCb3VuZHNbMV1dLFxuICAgICAgICAgIFtuZXdTdGF0ZU1heEJvdW5kc1syXSwgbmV3U3RhdGVNYXhCb3VuZHNbM11dXG4gICAgICAgIF1cbiAgICAgIH0pO1xuXG4gICAgICBuZXdNYXBTdGF0ZSA9IHtcbiAgICAgICAgLi4ubmV3TWFwU3RhdGUsXG4gICAgICAgIGxhdGl0dWRlLFxuICAgICAgICBsb25naXR1ZGUsXG4gICAgICAgIC8vIEZvciBtYXJnaW5hbCBvciBpbnZhbGlkIGJvdW5kcywgem9vbSBtYXkgYmUgTmFOLiBNYWtlIHN1cmUgdG8gcHJvdmlkZSBhIHZhbGlkIHZhbHVlIGluIG9yZGVyXG4gICAgICAgIC8vIHRvIGF2b2lkIGNvcnJ1cHQgc3RhdGUgYW5kIHBvdGVudGlhbCBjcmFzaGVzIGFzIHpvb20gaXMgZXhwZWN0ZWQgdG8gYmUgYSBudW1iZXJcbiAgICAgICAgLi4uKE51bWJlci5pc0Zpbml0ZSh6b29tKSA/IHt6b29tfSA6IHt9KVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld01hcFN0YXRlO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIG5ld01hcFN0YXRlIHZpZXdwb3J0IGlzIHdpdGhpbiBtYXhCb3VuZHNcbiAgaWYgKCFib29sZWFuV2l0aGluKHZpZXdwb3J0Qm91bmRzUG9seWdvbiwgbWF4Qm91bmRzUG9seWdvbikpIHtcbiAgICBuZXdNYXBTdGF0ZSA9IHtcbiAgICAgIC4uLm5ld01hcFN0YXRlLFxuICAgICAgbG9uZ2l0dWRlOiBzdGF0ZS5sb25naXR1ZGUsXG4gICAgICBsYXRpdHVkZTogc3RhdGUubGF0aXR1ZGUsXG4gICAgICB6b29tOiBzdGF0ZS56b29tXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBuZXdNYXBTdGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlKHN0YXRlOiBNYXBTdGF0ZSk6IFZpZXdwb3J0IHtcbiAgcmV0dXJuIHBpY2soc3RhdGUsIFtcbiAgICAnd2lkdGgnLFxuICAgICdoZWlnaHQnLFxuICAgICd6b29tJyxcbiAgICAncGl0Y2gnLFxuICAgICdiZWFyaW5nJyxcbiAgICAnbGF0aXR1ZGUnLFxuICAgICdsb25naXR1ZGUnLFxuICAgICdkcmFnUm90YXRlJyxcbiAgICAnbWluWm9vbScsXG4gICAgJ21heFpvb20nLFxuICAgICdtYXhCb3VuZHMnXG4gIF0pO1xufVxuXG4vKiogU2VsZWN0IGl0ZW1zIGZyb20gb2JqZWN0IHdob3NlIHZhbHVlIGlzIG5vdCB1bmRlZmluZWQgKi9cbmNvbnN0IGRlZmluZWRQcm9wcyA9IG9iaiA9PlxuICBPYmplY3QuZW50cmllcyhvYmopLnJlZHVjZShcbiAgICAoYWNjdSwgW2ssIHZdKSA9PiAoey4uLmFjY3UsIC4uLih2ICE9PSB1bmRlZmluZWQgPyB7W2tdOiB2fSA6IHt9KX0pLFxuICAgIHt9XG4gICk7XG5cbmZ1bmN0aW9uIHVwZGF0ZVZpZXdwb3J0KG9yaWdpbmFsVmlld3BvcnQ6IFZpZXdwb3J0LCB2aWV3cG9ydFVwZGF0ZXM6IFZpZXdwb3J0KTogVmlld3BvcnQge1xuICBsZXQgbmV3Vmlld3BvcnQgPSB7XG4gICAgLi4ub3JpZ2luYWxWaWV3cG9ydCxcbiAgICAuLi4oZGVmaW5lZFByb3BzKHZpZXdwb3J0VXBkYXRlcykgfHwge30pXG4gIH07XG5cbiAgLy8gTWFrZSBzdXJlIHpvb20gbGV2ZWwgZG9lc24ndCBnbyBiZWxsb3cgbWluWm9vbSBpZiBkZWZpbmVkXG4gIGlmIChuZXdWaWV3cG9ydC5taW5ab29tICYmIG5ld1ZpZXdwb3J0Lnpvb20gJiYgbmV3Vmlld3BvcnQuem9vbSA8IG5ld1ZpZXdwb3J0Lm1pblpvb20pIHtcbiAgICBuZXdWaWV3cG9ydC56b29tID0gbmV3Vmlld3BvcnQubWluWm9vbTtcbiAgfVxuICAvLyBNYWtlIHN1cmUgem9vbSBsZXZlbCBkb2Vzbid0IGdvIGFib3ZlIG1heFpvb20gaWYgZGVmaW5lZFxuICBpZiAobmV3Vmlld3BvcnQubWF4Wm9vbSAmJiBuZXdWaWV3cG9ydC56b29tICYmIG5ld1ZpZXdwb3J0Lnpvb20gPiBuZXdWaWV3cG9ydC5tYXhab29tKSB7XG4gICAgbmV3Vmlld3BvcnQuem9vbSA9IG5ld1ZpZXdwb3J0Lm1heFpvb207XG4gIH1cbiAgLy8gTGltaXQgdmlld3BvcnQgdXBkYXRlIGJhc2VkIG9uIG1heEJvdW5kc1xuICBpZiAobmV3Vmlld3BvcnQubWF4Qm91bmRzICYmIHZhbGlkYXRlQm91bmRzKG5ld1ZpZXdwb3J0Lm1heEJvdW5kcykpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFR5cGUgJ1ZpZXdwb3J0JyBpcyBtaXNzaW5nIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBmcm9tIHR5cGUgJ01hcFN0YXRlJzogaXNTcGxpdCwgaXNWaWV3cG9ydFN5bmNlZCwgaXNab29tTG9ja2VkLCBzcGxpdE1hcFZpZXdwb3J0c1xuICAgIG5ld1ZpZXdwb3J0ID0gdXBkYXRlVmlld3BvcnRCYXNlZE9uQm91bmRzKG9yaWdpbmFsVmlld3BvcnQsIG5ld1ZpZXdwb3J0KTtcbiAgfVxuXG4gIHJldHVybiBuZXdWaWV3cG9ydDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsWUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsY0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsWUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsWUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksVUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssT0FBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBSzBCLFNBQUFPLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxjQUFBWixDQUFBLGFBQUFDLENBQUEsTUFBQUEsQ0FBQSxHQUFBWSxTQUFBLENBQUFDLE1BQUEsRUFBQWIsQ0FBQSxVQUFBQyxDQUFBLFdBQUFXLFNBQUEs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
436
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2VvVmlld3BvcnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9ib29sZWFuV2l0aGluIiwiX2Jib3hQb2x5Z29uIiwiX3dlYk1lcmNhdG9yIiwiX2RlZXBtZXJnZSIsIl9waWNrIiwiX3V0aWxzIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJtYXBTdGF0ZVVwZGF0ZXJzIiwiSU5JVElBTF9NQVBfU1RBVEUiLCJleHBvcnRzIiwicGl0Y2giLCJiZWFyaW5nIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJ6b29tIiwiZHJhZ1JvdGF0ZSIsIndpZHRoIiwiaGVpZ2h0IiwibWluWm9vbSIsInVuZGVmaW5lZCIsIm1heFpvb20iLCJtYXhCb3VuZHMiLCJpc1NwbGl0IiwiaXNWaWV3cG9ydFN5bmNlZCIsImlzWm9vbUxvY2tlZCIsInNwbGl0TWFwVmlld3BvcnRzIiwidXBkYXRlTWFwVXBkYXRlciIsInN0YXRlIiwiYWN0aW9uIiwiX2FjdGlvbiRwYXlsb2FkIiwicGF5bG9hZCIsImlucHV0Vmlld3BvcnQiLCJ2aWV3cG9ydCIsIl9hY3Rpb24kcGF5bG9hZCRtYXBJbiIsIm1hcEluZGV4IiwidmFsaWRhdGVWaWV3UG9ydCIsInVwZGF0ZVZpZXdwb3J0Iiwib3RoZXJWaWV3cG9ydE1hcEluZGV4IiwibWFwIiwiY3VycmVudFZpZXdwb3J0IiwiaSIsIk51bWJlciIsImlzRmluaXRlIiwiZml0Qm91bmRzVXBkYXRlciIsImNlbnRlckFuZFpvb20iLCJnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyIsIm5ld1N0YXRlIiwiY2VudGVyIiwidG9nZ2xlUGVyc3BlY3RpdmVVcGRhdGVyIiwicmVzZXRNYXBDb25maWdVcGRhdGVyIiwiaW5pdGlhbFN0YXRlIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJfcmVmIiwiX3JlZiRwYXlsb2FkIiwiX3JlZiRwYXlsb2FkJGNvbmZpZyIsImNvbmZpZyIsIl9yZWYkcGF5bG9hZCRvcHRpb25zIiwib3B0aW9ucyIsIl9yZWYkcGF5bG9hZCRib3VuZHMiLCJib3VuZHMiLCJtYXBTdGF0ZSIsIm1lcmdlZFN0YXRlIiwiZGVlcG1lcmdlIiwiYXJyYXlNZXJnZSIsIl9kZXN0aW5hdGlvbkFycmF5Iiwic291cmNlQXJyYXkiLCJjZW50ZXJNYXAiLCJnZXRNYXBEaW1Gb3JTcGxpdE1hcCIsInRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsInRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyIiwibmV3TWFwU3RhdGUiLCJsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXgiLCJmaW5kSW5kZXgiLCJ2IiwibGVmdFZpZXdwb3J0IiwicGlja1ZpZXdwb3J0UHJvcHNGcm9tTWFwU3RhdGUiLCJyaWdodFZpZXdwb3J0IiwidXBkYXRlVmlld3BvcnRCYXNlZE9uQm91bmRzIiwidmlld3BvcnRCb3VuZHMiLCJnZW9WaWV3cG9ydCIsIk1BUEJPWF9USUxFX1NJWkUiLCJ2aWV3cG9ydEJvdW5kc1BvbHlnb24iLCJiYm94UG9seWdvbiIsIm5ld1N0YXRlTWF4Qm91bmRzIiwibWF4Qm91bmRzUG9seWdvbiIsImhhc01heEJvdW5kc0NoYW5nZWQiLCJldmVyeSIsInZhbCIsImlkeCIsImJvb2xlYW5XaXRoaW4iLCJfZml0Qm91bmRzIiwiZml0Qm91bmRzIiwicGljayIsImRlZmluZWRQcm9wcyIsIm9iaiIsImVudHJpZXMiLCJyZWR1Y2UiLCJhY2N1IiwiX3JlZjIiLCJfcmVmMyIsIl9zbGljZWRUb0FycmF5MiIsImsiLCJvcmlnaW5hbFZpZXdwb3J0Iiwidmlld3BvcnRVcGRhdGVzIiwibmV3Vmlld3BvcnQiLCJ2YWxpZGF0ZUJvdW5kcyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXAtc3RhdGUtdXBkYXRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IGdlb1ZpZXdwb3J0IGZyb20gJ0BtYXBib3gvZ2VvLXZpZXdwb3J0JztcbmltcG9ydCBib29sZWFuV2l0aGluIGZyb20gJ0B0dXJmL2Jvb2xlYW4td2l0aGluJztcbmltcG9ydCBiYm94UG9seWdvbiBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IHtmaXRCb3VuZHN9IGZyb20gJ0BtYXRoLmdsL3dlYi1tZXJjYXRvcic7XG5pbXBvcnQgZGVlcG1lcmdlIGZyb20gJ2RlZXBtZXJnZSc7XG5pbXBvcnQgcGljayBmcm9tICdsb2Rhc2gvcGljayc7XG5cbmltcG9ydCB7XG4gIGdldENlbnRlckFuZFpvb21Gcm9tQm91bmRzLFxuICB2YWxpZGF0ZUJvdW5kcyxcbiAgTUFQQk9YX1RJTEVfU0laRSxcbiAgdmFsaWRhdGVWaWV3UG9ydFxufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7TWFwU3RhdGVBY3Rpb25zLCBSZWNlaXZlTWFwQ29uZmlnUGF5bG9hZCwgQWN0aW9uVHlwZXN9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge01hcFN0YXRlLCBCb3VuZHMsIFZpZXdwb3J0fSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuLyoqXG4gKiBVcGRhdGVycyBmb3IgYG1hcFN0YXRlYCByZWR1Y2VyLiBDYW4gYmUgdXNlZCBpbiB5b3VyIHJvb3QgcmVkdWNlciB0byBkaXJlY3RseSBtb2RpZnkga2VwbGVyLmdsJ3Mgc3RhdGUuXG4gKiBSZWFkIG1vcmUgYWJvdXQgW1VzaW5nIHVwZGF0ZXJzXSguLi9hZHZhbmNlZC11c2FnZS91c2luZy11cGRhdGVycy5tZClcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKlxuICogaW1wb3J0IGtlcGxlckdsUmVkdWNlciwge21hcFN0YXRlVXBkYXRlcnN9IGZyb20gJ2tlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBjbGljayBidXR0b24gdG8gY2xvc2Ugc2lkZSBwYW5lbFxuICogICAgY2FzZSAnQ0xJQ0tfQlVUVE9OJzpcbiAqICAgICAgcmV0dXJuIHtcbiAqICAgICAgICAuLi5zdGF0ZSxcbiAqICAgICAgICBrZXBsZXJHbDoge1xuICogICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wsXG4gKiAgICAgICAgICBmb286IHtcbiAqICAgICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLmZvbyxcbiAqICAgICAgICAgICAgIG1hcFN0YXRlOiBtYXBTdGF0ZVVwZGF0ZXJzLmZpdEJvdW5kc1VwZGF0ZXIoXG4gKiAgICAgICAgICAgICAgIG1hcFN0YXRlLCB7cGF5bG9hZDogWzEyNy4zNCwgMzEuMDksIDEyNy41NiwgMzEuNTldXX1cbiAqICAgICAgICAgICAgIClcbiAqICAgICAgICAgIH1cbiAqICAgICAgICB9XG4gKiAgICAgIH07XG4gKiAgfVxuICogIHJldHVybiByZWR1Y2VycyhzdGF0ZSwgYWN0aW9uKTtcbiAqIH07XG4gKlxuICogZXhwb3J0IGRlZmF1bHQgY29tcG9zZWRSZWR1Y2VyO1xuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgbWFwU3RhdGVVcGRhdGVycyA9IG51bGw7XG4vKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgYG1hcFN0YXRlYFxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBjb25zdGFudFxuICogQHByb3BlcnR5IHBpdGNoIERlZmF1bHQ6IGAwYFxuICogQHByb3BlcnR5IGJlYXJpbmcgRGVmYXVsdDogYDBgXG4gKiBAcHJvcGVydHkgbGF0aXR1ZGUgRGVmYXVsdDogYDM3Ljc1MDQzYFxuICogQHByb3BlcnR5IGxvbmdpdHVkZSBEZWZhdWx0OiBgLTEyMi4zNDY3OWBcbiAqIEBwcm9wZXJ0eSB6b29tIERlZmF1bHQ6IGA5YFxuICogQHByb3BlcnR5IGRyYWdSb3RhdGUgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IHdpZHRoIERlZmF1bHQ6IGA4MDBgXG4gKiBAcHJvcGVydHkgaGVpZ2h0IERlZmF1bHQ6IGA4MDBgXG4gKiBAcHJvcGVydHkgbWluWm9vbTogYHVuZGVmaW5lZGAsXG4gKiBAcHJvcGVydHkgbWF4Wm9vbTogYHVuZGVmaW5lZGAsXG4gKiBAcHJvcGVydHkgbWF4Qm91bmRzOiBgdW5kZWZpbmVkYCxcbiAqIEBwcm9wZXJ0eSBpc1NwbGl0OiBgZmFsc2VgLFxuICogQHByb3BlcnR5IGlzVmlld3BvcnRTeW5jZWQ6IGB0cnVlYCxcbiAqIEBwcm9wZXJ0eSBpc1pvb21Mb2NrZWQ6IGBmYWxzZWAsXG4gKiBAcHJvcGVydHkgc3BsaXRNYXBWaWV3cG9ydHM6IGBbXWBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IElOSVRJQUxfTUFQX1NUQVRFOiBNYXBTdGF0ZSA9IHtcbiAgcGl0Y2g6IDAsXG4gIGJlYXJpbmc6IDAsXG4gIGxhdGl0dWRlOiAzNy43NTA0MyxcbiAgbG9uZ2l0dWRlOiAtMTIyLjM0Njc5LFxuICB6b29tOiA5LFxuICBkcmFnUm90YXRlOiBmYWxzZSxcbiAgd2lkdGg6IDgwMCxcbiAgaGVpZ2h0OiA4MDAsXG4gIG1pblpvb206IHVuZGVmaW5lZCxcbiAgbWF4Wm9vbTogdW5kZWZpbmVkLFxuICBtYXhCb3VuZHM6IHVuZGVmaW5lZCxcbiAgaXNTcGxpdDogZmFsc2UsXG4gIGlzVmlld3BvcnRTeW5jZWQ6IHRydWUsXG4gIGlzWm9vbUxvY2tlZDogZmFsc2UsXG4gIHNwbGl0TWFwVmlld3BvcnRzOiBbXVxufTtcblxuLyogVXBkYXRlcnMgKi9cbi8qKlxuICogVXBkYXRlIG1hcCB2aWV3cG9ydFxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHVwZGF0ZU1hcFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuVXBkYXRlTWFwVXBkYXRlckFjdGlvblxuKTogTWFwU3RhdGUgPT4ge1xuICBjb25zdCB7dmlld3BvcnQ6IGlucHV0Vmlld3BvcnQsIG1hcEluZGV4ID0gMH0gPSBhY3Rpb24ucGF5bG9hZDtcbiAgY29uc3Qgdmlld3BvcnQgPSB2YWxpZGF0ZVZpZXdQb3J0KGlucHV0Vmlld3BvcnQpO1xuXG4gIGlmIChzdGF0ZS5pc1ZpZXdwb3J0U3luY2VkKSB7XG4gICAgLy8gVGhlIGB1cGRhdGVWaWV3cG9ydGAgZnVuY3Rpb24gaXMgdHlwZWQgYXMgKFZpZXdwb3J0LCBWaWV3cG9ydCkgLT4gVmlld3BvcnQgYnV0IGhlcmUgdGhlXG4gICAgLy8gZXhwZWN0ZWQgdHlwaW5nIGlzIChNYXBTdGF0ZSwgVmlld3BvcnQpIC0+IE1hcFN0YXRlLlxuICAgIC8vIHRoaXMgY291bGQgYmUgYSBwb3RlbnRpYWwgYnVnIGFzIHdlIHRyZWF0IFZpZXdwb3J0IGFuZCBNYXBTdGF0ZSBhcyBlcXVhbCBzZWVtaW5nbHlcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFR5cGUgJ1ZpZXdwb3J0JyBpcyBtaXNzaW5nIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBmcm9tIHR5cGUgJ01hcFN0YXRlJzogaXNTcGxpdCwgaXNWaWV3cG9ydFN5bmNlZCwgaXNab29tTG9ja2VkLCBzcGxpdE1hcFZpZXdwb3J0c1xuICAgIHJldHVybiB1cGRhdGVWaWV3cG9ydChzdGF0ZSwgdmlld3BvcnQpO1xuICB9XG5cbiAgbGV0IG90aGVyVmlld3BvcnRNYXBJbmRleCA9IC0xO1xuICBjb25zdCBzcGxpdE1hcFZpZXdwb3J0cyA9IHN0YXRlLnNwbGl0TWFwVmlld3BvcnRzLm1hcCgoY3VycmVudFZpZXdwb3J0LCBpKSA9PiB7XG4gICAgaWYgKGkgPT09IG1hcEluZGV4KSB7XG4gICAgICAvLyB1cGRhdGUgdGhlIG1hdGNoaW5nIHZpZXdwb3J0IHdpdGggdGhlIG5ld1ZpZXdwb3J0IGluZm8gaW4gdGhlIGFjdGlvbiBwYXlsb2FkXG4gICAgICByZXR1cm4gdXBkYXRlVmlld3BvcnQoY3VycmVudFZpZXdwb3J0LCB2aWV3cG9ydCk7XG4gICAgfVxuXG4gICAgb3RoZXJWaWV3cG9ydE1hcEluZGV4ID0gaTtcbiAgICAvLyBtYWtlIG5vIGNoYW5nZXMgdG8gdGhlIG90aGVyIHZpZXdwb3J0ICh5ZXQpXG4gICAgcmV0dXJuIGN1cnJlbnRWaWV3cG9ydDtcbiAgfSk7XG5cbiAgLy8gbWFrZSBjb25kaXRpb25hbCB1cGRhdGVzIHRvIHRoZSBvdGhlciB2aWV3cG9ydCBub3QgbWF0Y2hpbmcgdGhpcyBwYXlsb2FkJ3MgYG1hcEluZGV4YFxuICBpZiAoTnVtYmVyLmlzRmluaXRlKG90aGVyVmlld3BvcnRNYXBJbmRleCkgJiYgb3RoZXJWaWV3cG9ydE1hcEluZGV4ID4gLTEpIHtcbiAgICAvLyB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBhIHNwZWNpYWwgY2FzZSBhbmQgYXJlIGFsd2F5cyB1cGRhdGVkXG4gICAgc3BsaXRNYXBWaWV3cG9ydHNbb3RoZXJWaWV3cG9ydE1hcEluZGV4XSA9IHtcbiAgICAgIC4uLnNwbGl0TWFwVmlld3BvcnRzW290aGVyVmlld3BvcnRNYXBJbmRleF0sXG4gICAgICB3aWR0aDogc3BsaXRNYXBWaWV3cG9ydHNbbWFwSW5kZXhdLndpZHRoLFxuICAgICAgaGVpZ2h0OiBzcGxpdE1hcFZpZXdwb3J0c1ttYXBJbmRleF0uaGVpZ2h0XG4gICAgfTtcblxuICAgIGlmIChzdGF0ZS5pc1pvb21Mb2NrZWQpIHtcbiAgICAgIC8vIHVwZGF0ZSB0aGUgb3RoZXIgdmlld3BvcnQgd2l0aCB0aGUgbmV3IHpvb20gZnJvbSB0aGUgc3BsaXQgdmlld3BvcnQgdGhhdCB3YXMgdXBkYXRlZCB3aXRoIHRoaXMgcGF5bG9hZCdzIGBtYXBJbmRleGBcbiAgICAgIHNwbGl0TWFwVmlld3BvcnRzW290aGVyVmlld3BvcnRNYXBJbmRleF0gPSB7XG4gICAgICAgIC4uLnNwbGl0TWFwVmlld3BvcnRzW290aGVyVmlld3BvcnRNYXBJbmRleF0sXG4gICAgICAgIHpvb206IHNwbGl0TWFwVmlld3BvcnRzW21hcEluZGV4XS56b29tXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLy8gdXBkYXRlIHRoZSB0b3AtbGV2ZWwgbWFwU3RhdGUgdmlld3BvcnQgd2l0aCB0aGUgbW9zdCByZWNlbnRseSBpbnRlcmFjdGVkLXdpdGggc3BsaXQgdmlld3BvcnRcbiAgICAvLyBXSFk/IHRoaXMgYXZvaWRzIHpvb20gYW5kIGJvdW5kcyBcImp1bXBpbmdcIiBkdWUgdG8gYSBcInN0YWxlXCIgdG9wLWxldmVsIG1hcFN0YXRlIHZpZXdwb3J0IHdoZW46XG4gICAgLy8gIDEuIHRvZ2dsaW5nIG9mZiB0aGUgdW5zeW5jZWQgdmlld3BvcnRzIG1vZGUgdG8gc3dpdGNoIHRvIHRoZSBzeW5jZWQgdmlld3BvcnRzIG1vZGVcbiAgICAvLyAgMi4gdG9nZ2xpbmcgb24gdGhlIHpvb20gbG9jayBkdXJpbmcgYW4gdW5zeW5jZWQgdmlld3BvcnRzIG1vZGVcbiAgICAuLi5zdGF0ZSxcbiAgICAuLi5zcGxpdE1hcFZpZXdwb3J0c1ttYXBJbmRleF0sXG4gICAgLy8gdXBkYXRlIHRoZSBtYXBTdGF0ZSB3aXRoIHRoZSBuZXcgYXJyYXkgb2Ygc3BsaXQgdmlld3BvcnRzXG4gICAgc3BsaXRNYXBWaWV3cG9ydHNcbiAgfTtcbn07XG5cbi8qKlxuICogRml0IG1hcCB2aWV3cG9ydCB0byBib3VuZHNcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBmaXRCb3VuZHNVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLkZpdEJvdW5kc1VwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgY29uc3QgY2VudGVyQW5kWm9vbSA9IGdldENlbnRlckFuZFpvb21Gcm9tQm91bmRzKGFjdGlvbi5wYXlsb2FkLCB7XG4gICAgd2lkdGg6IHN0YXRlLndpZHRoLFxuICAgIGhlaWdodDogc3RhdGUuaGVpZ2h0XG4gIH0pO1xuICBpZiAoIWNlbnRlckFuZFpvb20pIHtcbiAgICAvLyBib3VuZHMgaXMgaW52YWxpZFxuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIGxhdGl0dWRlOiBjZW50ZXJBbmRab29tLmNlbnRlclsxXSxcbiAgICBsb25naXR1ZGU6IGNlbnRlckFuZFpvb20uY2VudGVyWzBdLFxuICAgIC8vIEZvciBtYXJnaW5hbCBvciBpbnZhbGlkIGJvdW5kcywgem9vbSBtYXkgYmUgTmFOLiBNYWtlIHN1cmUgdG8gcHJvdmlkZSBhIHZhbGlkIHZhbHVlIGluIG9yZGVyXG4gICAgLy8gdG8gYXZvaWQgY29ycnVwdCBzdGF0ZSBhbmQgcG90ZW50aWFsIGNyYXNoZXMgYXMgem9vbSBpcyBleHBlY3RlZCB0byBiZSBhIG51bWJlclxuICAgIC4uLihOdW1iZXIuaXNGaW5pdGUoY2VudGVyQW5kWm9vbS56b29tKSA/IHt6b29tOiBjZW50ZXJBbmRab29tLnpvb219IDoge30pXG4gIH07XG5cbiAgLy8gaWYgZml0dGluZyB0byBib3VuZHMgd2hpbGUgc3BsaXQgYW5kIHVuc3luY2VkXG4gIC8vIGNvcHkgdGhlIG5ldyBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhbmQgem9vbSB2YWx1ZXMgdG8gZWFjaCBzcGxpdCB2aWV3cG9ydFxuICBpZiAobmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubGVuZ3RoKSB7XG4gICAgbmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBuZXdTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5tYXAoY3VycmVudFZpZXdwb3J0ID0+ICh7XG4gICAgICAuLi5jdXJyZW50Vmlld3BvcnQsXG4gICAgICBsYXRpdHVkZTogbmV3U3RhdGUubGF0aXR1ZGUsXG4gICAgICBsb25naXR1ZGU6IG5ld1N0YXRlLmxvbmdpdHVkZSxcbiAgICAgIHpvb206IG5ld1N0YXRlLnpvb21cbiAgICB9KSk7XG4gIH1cblxuICByZXR1cm4gbmV3U3RhdGU7XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBiZXR3ZWVuIDNkIGFuZCAyZCBtYXAuXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlUGVyc3BlY3RpdmVVcGRhdGVyID0gKHN0YXRlOiBNYXBTdGF0ZSk6IE1hcFN0YXRlID0+IHtcbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgLi4ue1xuICAgICAgcGl0Y2g6IHN0YXRlLmRyYWdSb3RhdGUgPyAwIDogNTAsXG4gICAgICBiZWFyaW5nOiBzdGF0ZS5kcmFnUm90YXRlID8gMCA6IDI0XG4gICAgfSxcbiAgICBkcmFnUm90YXRlOiAhc3RhdGUuZHJhZ1JvdGF0ZVxuICB9O1xuXG4gIC8vIGlmIHRvZ2dsaW5nIDNkIGFuZCAyZCB3aGlsZSBzcGxpdCBhbmQgdW5zeW5jZWRcbiAgLy8gY29weSB0aGUgbmV3IHBpdGNoLCBiZWFyaW5nLCBhbmQgZHJhZ1JvdGF0ZSB2YWx1ZXMgdG8gZWFjaCBzcGxpdCB2aWV3cG9ydFxuICBpZiAobmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubGVuZ3RoKSB7XG4gICAgbmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBuZXdTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5tYXAoY3VycmVudFZpZXdwb3J0ID0+ICh7XG4gICAgICAuLi5jdXJyZW50Vmlld3BvcnQsXG4gICAgICBwaXRjaDogbmV3U3RhdGUucGl0Y2gsXG4gICAgICBiZWFyaW5nOiBuZXdTdGF0ZS5iZWFyaW5nLFxuICAgICAgZHJhZ1JvdGF0ZTogbmV3U3RhdGUuZHJhZ1JvdGF0ZVxuICAgIH0pKTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn07XG5cbi8qKlxuICogcmVzZXQgbWFwU3RhdGUgdG8gaW5pdGlhbCBTdGF0ZVxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc2V0TWFwQ29uZmlnVXBkYXRlciA9IChzdGF0ZTogTWFwU3RhdGUpOiBNYXBTdGF0ZSA9PiAoe1xuICAuLi5JTklUSUFMX01BUF9TVEFURSxcbiAgLi4uc3RhdGUuaW5pdGlhbFN0YXRlLFxuICBpbml0aWFsU3RhdGU6IHN0YXRlLmluaXRpYWxTdGF0ZVxufSk7XG5cbi8vIGNvbnNpZGVyIGNhc2Ugd2hlcmUgeW91IGhhdmUgYSBzcGxpdCBtYXAgYW5kIHVzZXIgd2FudHMgdG8gcmVzZXRcbi8qKlxuICogVXBkYXRlIGBtYXBTdGF0ZWAgdG8gcHJvcGFnYXRlIGEgbmV3IGNvbmZpZ1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlY2VpdmVNYXBDb25maWdVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgcGF5bG9hZDoge2NvbmZpZyA9IHt9LCBvcHRpb25zID0ge30sIGJvdW5kcyA9IG51bGx9XG4gIH06IHtcbiAgICB0eXBlPzogdHlwZW9mIEFjdGlvblR5cGVzLlJFQ0VJVkVfTUFQX0NPTkZJRztcbiAgICBwYXlsb2FkOiBSZWNlaXZlTWFwQ29uZmlnUGF5bG9hZDtcbiAgfVxuKTogTWFwU3RhdGUgPT4ge1xuICAvKipcbiAgICogQHR5cGUge1BhcnRpYWw8TWFwU3RhdGU+fVxuICAgKi9cbiAgY29uc3QgbWFwU3RhdGUgPSAoY29uZmlnIHx8IHt9KS5tYXBTdGF0ZSB8fCB7fTtcbiAgLy8gbWVyZ2VkIHJlY2VpdmVkIG1hcFN0YXRlIHdpdGggcHJldmlvdXMgc3RhdGVcbiAgLy8gc3RhdGUgYWxzbyBtYXkgaW5jbHVkZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5ldyB0byBhbiBleGlzdGluZywgc2F2ZWQgcHJvamVjdCdzIG1hcFN0YXRlXG5cbiAgbGV0IG1lcmdlZFN0YXRlID0gZGVlcG1lcmdlPE1hcFN0YXRlPihzdGF0ZSwgbWFwU3RhdGUsIHtcbiAgICAvLyBub3RlOiBkZWVwbWVyZ2UgYnkgZGVmYXVsdCB3aWxsIG1lcmdlIGFycmF5cyBieSBjb25jYXRlbmF0aW5nIHRoZW1cbiAgICAvLyBidXQgd2UgbmVlZCB0byBvdmVyd3JpdGUgZGVzdGluYXRpb24gYXJyYXlzIHdpdGggc291cmNlIGFycmF5cywgaWYgcHJlc2VudFxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9UZWhTaHJpa2UvZGVlcG1lcmdlI2FycmF5bWVyZ2UtZXhhbXBsZS1vdmVyd3JpdGUtdGFyZ2V0LWFycmF5XG4gICAgYXJyYXlNZXJnZTogKF9kZXN0aW5hdGlvbkFycmF5LCBzb3VyY2VBcnJheSkgPT4gc291cmNlQXJyYXlcbiAgfSk7XG5cbiAgLy8gaWYgY2VudGVyIG1hcFxuICAvLyBjZW50ZXIgbWFwIHdpbGwgb3ZlcnJpZGUgbWFwU3RhdGUgY29uZmlnXG4gIGlmIChvcHRpb25zLmNlbnRlck1hcCAmJiBib3VuZHMpIHtcbiAgICBtZXJnZWRTdGF0ZSA9IGZpdEJvdW5kc1VwZGF0ZXIobWVyZ2VkU3RhdGUsIHtcbiAgICAgIHBheWxvYWQ6IGJvdW5kc1xuICAgIH0pO1xuICB9XG5cbiAgLy8gbWFrZSBzdXJlIHdlIHZhbGlkYXRlIG1hcCBzdGF0ZSBiZWZvcmUgd2UgbWVyZ2VcbiAgbWVyZ2VkU3RhdGUgPSB2YWxpZGF0ZVZpZXdQb3J0KG1lcmdlZFN0YXRlKTtcblxuICByZXR1cm4ge1xuICAgIC4uLm1lcmdlZFN0YXRlLFxuICAgIC8vIHVwZGF0ZSB3aWR0aCBpZiBgaXNTcGxpdGAgaGFzIGNoYW5nZWRcbiAgICAuLi5nZXRNYXBEaW1Gb3JTcGxpdE1hcChtZXJnZWRTdGF0ZS5pc1NwbGl0LCBzdGF0ZSlcbiAgfTtcbn07XG5cbi8qKlxuICogVG9nZ2xlIGJldHdlZW4gb25lIG9yIHNwbGl0IG1hcHNcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTcGxpdE1hcFVwZGF0ZXIgPSAoc3RhdGU6IE1hcFN0YXRlKTogTWFwU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIC4uLmdldE1hcERpbUZvclNwbGl0TWFwKCFzdGF0ZS5pc1NwbGl0LCBzdGF0ZSksXG4gIGlzU3BsaXQ6ICFzdGF0ZS5pc1NwbGl0LFxuICAuLi4oIXN0YXRlLmlzU3BsaXQgPT09IGZhbHNlXG4gICAgPyB7XG4gICAgICAgIC8vIGlmIHRvZ2dsaW5nIHRvIG5vIGxvbmdlciBzcGxpdCAoc2luZ2xlIG1vZGUpIHRoZW4gcmVzZXQgYSBmZXcgcHJvcGVydGllc1xuICAgICAgICBpc1ZpZXdwb3J0U3luY2VkOiB0cnVlLFxuICAgICAgICBpc1pvb21Mb2NrZWQ6IGZhbHNlLFxuICAgICAgICBzcGxpdE1hcFZpZXdwb3J0czogW11cbiAgICAgIH1cbiAgICA6IHt9KVxufSk7XG5cbi8qKlxuICogVG9nZ2xlIGJldHdlZW4gbG9ja2VkIGFuZCB1bmxvY2tlZCBzcGxpdCB2aWV3cG9ydHNcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTcGxpdE1hcFZpZXdwb3J0VXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5Ub2dnbGVTcGxpdE1hcFZpZXdwb3J0VXBkYXRlckFjdGlvblxuKSA9PiB7XG4gIC8vIG5ldyBtYXAgc3RhdGUgaW1tZWRpYXRlbHkgZ2V0cyB0aGUgbmV3LCBvcHRpb25hbCBwYXlsb2FkIHZhbHVlcyBmb3IgaXNWaWV3cG9ydFN5bmNlZCBhbmQvb3IgaXNab29tTG9ja2VkXG4gIGNvbnN0IG5ld01hcFN0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIC4uLihhY3Rpb24ucGF5bG9hZCB8fCB7fSlcbiAgfTtcblxuICBpZiAobmV3TWFwU3RhdGUuaXNWaWV3cG9ydFN5bmNlZCkge1xuICAgIC8vIHN3aXRjaGluZyBmcm9tIHVuc3luY2VkIHRvIHN5bmNlZCB2aWV3cG9ydHNcbiAgICBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyA9IFtdO1xuICB9IGVsc2Uge1xuICAgIC8vIHN3aXRjaGluZyBmcm9tIHN5bmNlZCB0byB1bnN5bmNlZCB2aWV3cG9ydHNcbiAgICAvLyBvciBhbHJlYWR5IGluIHVuc3luY2VkIG1vZGUgYW5kIHRvZ2dsaW5nIGxvY2tlZCB6b29tXG5cbiAgICBpZiAoc3RhdGUuaXNab29tTG9ja2VkICYmICFuZXdNYXBTdGF0ZS5pc1pvb21Mb2NrZWQpIHtcbiAgICAgIC8vIHN3aXRjaGluZyBvZmYgbG9ja2VkIHpvb20gd2hpbGUgdW5zeW5jZWRcbiAgICAgIC8vIGRvbid0IGNvcHkgdGhlIG1hcFN0YXRlcyB0byBsZWZ0IGFuZCByaWdodCB2aWV3cG9ydHMgYmVjYXVzZSB0aGVyZSB3aWxsIGJlIHpvb20gXCJqdW1waW5nXCJcbiAgICAgIHJldHVybiBuZXdNYXBTdGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoIXN0YXRlLmlzWm9vbUxvY2tlZCAmJiBuZXdNYXBTdGF0ZS5pc1pvb21Mb2NrZWQpIHtcbiAgICAgIC8vIHN3aXRjaGluZyBvbiBsb2NrZWQgem9vbSB3aGlsZSB1bnN5bmNlZFxuICAgICAgLy8gb25seSBjb3B5IHpvb20gdmlld3BvcnQgcHJvcGVydHkgZnJvbSB0aGUgbW9zdCByZWNlbnRseSBpbnRlcmFjdGVkLXdpdGggdmlld3BvcnQgdG8gdGhlIG90aGVyXG4gICAgICAvLyBUT0RPOiBkbyB3ZSB3YW50IHRvIGNoZWNrIGZvciBhIG1hdGNoIGEgZGlmZmVyZW50IHdheSwgc3VjaCBhcyBhIGNvbWJvIG9mIGBsYXRpdHVkZWAgYW5kIGBsb25naXR1ZGVgP1xuICAgICAgY29uc3QgbGFzdFVwZGF0ZWRWaWV3cG9ydEluZGV4ID0gbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMuZmluZEluZGV4KFxuICAgICAgICB2ID0+IG5ld01hcFN0YXRlLnpvb20gPT09IHYuem9vbVxuICAgICAgKTtcblxuICAgICAgY29uc3Qgc3BsaXRNYXBWaWV3cG9ydHMgPSBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5tYXAoKGN1cnJlbnRWaWV3cG9ydCwgaSkgPT4ge1xuICAgICAgICBpZiAoaSA9PT0gbGFzdFVwZGF0ZWRWaWV3cG9ydEluZGV4KSB7XG4gICAgICAgICAgLy8gbm8gem9vbSB0byBtb2RpZnkgaGVyZVxuICAgICAgICAgIHJldHVybiBjdXJyZW50Vmlld3BvcnQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhlIG90aGVyIHZpZXdwb3J0IGdldHMgdGhlIG1vc3QgcmVjZW50bHkgaW50ZXJhY3RlZC13aXRoIHZpZXdwb3J0J3Mgem9vbVxuICAgICAgICAvLyBXSFk/IHRoZSB2aWV3cG9ydCB0aGUgdXNlciB3YXMgbGFzdCBpbnRlcmFjdGluZyB3aXRoIHdpbGwgc2V0IHpvb20gYWNyb3NzIHRoZSBib2FyZCBmb3Igc21vb3RoIFVYXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uY3VycmVudFZpZXdwb3J0LFxuICAgICAgICAgIHpvb206IG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzW2xhc3RVcGRhdGVkVmlld3BvcnRJbmRleF0uem9vbVxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gc3BsaXRNYXBWaWV3cG9ydHM7XG5cbiAgICAgIHJldHVybiBuZXdNYXBTdGF0ZTtcbiAgICB9XG5cbiAgICAvLyBpZiBjdXJyZW50IHZpZXdwb3J0IGlzIHN5bmNlZCwgYW5kIHdlIGFyZSB1bnN5bmNpbmcgaXRcbiAgICAvLyBvciBhbHJlYWR5IGluIHVuc3luY2VkIG1vZGUgYW5kIE5PVCB0b2dnbGluZyBsb2NrZWQgem9vbVxuICAgIC8vIG1ha2UgYSBmcmVzaCBjb3B5IG9mIHRoZSBjdXJyZW50IHZpZXdwb3J0IG9iamVjdCwgYXNzaWduIGl0IHRvIHNwbGl0TWFwVmlld3BvcnRzW11cbiAgICAvLyBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZSBpcyBjYWxsZWQgdHdpY2UgdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb24gY29uZmxpY3RzXG4gICAgY29uc3QgbGVmdFZpZXdwb3J0ID0gcGlja1ZpZXdwb3J0UHJvcHNGcm9tTWFwU3RhdGUobmV3TWFwU3RhdGUpO1xuICAgIGNvbnN0IHJpZ2h0Vmlld3BvcnQgPSBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZShuZXdNYXBTdGF0ZSk7XG4gICAgbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBbbGVmdFZpZXdwb3J0LCByaWdodFZpZXdwb3J0XTtcbiAgfVxuXG4gIC8vIHJldHVybiBuZXcgc3RhdGVcbiAgcmV0dXJuIG5ld01hcFN0YXRlO1xufTtcblxuLy8gSGVscGVyc1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcERpbUZvclNwbGl0TWFwKGlzU3BsaXQsIHN0YXRlKSB7XG4gIC8vIGNhc2VzOlxuICAvLyAxLiBzdGF0ZSBzcGxpdDogdHJ1ZSAtIGlzU3BsaXQ6IHRydWVcbiAgLy8gZG8gbm90aGluZ1xuICAvLyAyLiBzdGF0ZSBzcGxpdDogZmFsc2UgLSBpc1NwbGl0OiBmYWxzZVxuICAvLyBkbyBub3RoaW5nXG4gIGlmIChzdGF0ZS5pc1NwbGl0ID09PSBpc1NwbGl0KSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3Qgd2lkdGggPVxuICAgIHN0YXRlLmlzU3BsaXQgJiYgIWlzU3BsaXRcbiAgICAgID8gLy8gMy4gc3RhdGUgc3BsaXQ6IHRydWUgLSBpc1NwbGl0OiBmYWxzZVxuICAgICAgICAvLyBkb3VibGUgd2lkdGhcbiAgICAgICAgc3RhdGUud2lkdGggKiAyXG4gICAgICA6IC8vIDQuIHN0YXRlIHNwbGl0OiBmYWxzZSAtIGlzU3BsaXQ6IHRydWVcbiAgICAgICAgLy8gc3BsaXQgd2lkdGhcbiAgICAgICAgc3RhdGUud2lkdGggLyAyO1xuXG4gIHJldHVybiB7XG4gICAgd2lkdGhcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlVmlld3BvcnRCYXNlZE9uQm91bmRzKHN0YXRlOiBNYXBTdGF0ZSwgbmV3TWFwU3RhdGU6IE1hcFN0YXRlKSB7XG4gIC8vIEdldCB0aGUgbmV3IHZpZXdwb3J0IGJvdW5kc1xuICBjb25zdCB2aWV3cG9ydEJvdW5kcyA9IGdlb1ZpZXdwb3J0LmJvdW5kcyhcbiAgICBbbmV3TWFwU3RhdGUubG9uZ2l0dWRlLCBuZXdNYXBTdGF0ZS5sYXRpdHVkZV0sXG4gICAgbmV3TWFwU3RhdGUuem9vbSxcbiAgICBbbmV3TWFwU3RhdGUud2lkdGgsIG5ld01hcFN0YXRlLmhlaWdodF0sXG4gICAgTUFQQk9YX1RJTEVfU0laRVxuICApO1xuICAvLyBHZW5lcmF0ZSB0dXJmIFBvbHlnb24gZnJvbSBib3VuZHMgZm9yIGNvbXBhcmlzb25cbiAgY29uc3Qgdmlld3BvcnRCb3VuZHNQb2x5Z29uID0gYmJveFBvbHlnb24odmlld3BvcnRCb3VuZHMpO1xuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IG5ld1N0YXRlTWF4Qm91bmRzOiBCb3VuZHMgPSBuZXdNYXBTdGF0ZS5tYXhCb3VuZHM7XG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbWF4Qm91bmRzUG9seWdvbiA9IGJib3hQb2x5Z29uKG5ld1N0YXRlTWF4Qm91bmRzKTtcblxuICAvLyBJZiBtYXhCb3VuZHMgaGFzIGNoYW5nZWQgcmVzZXQgdGhlIHZpZXdwb3J0IHRvIHNuYXAgdG8gYm91bmRzXG4gIGNvbnN0IGhhc01heEJvdW5kc0NoYW5nZWQgPVxuICAgICFzdGF0ZS5tYXhCb3VuZHMgfHwgIXN0YXRlLm1heEJvdW5kcy5ldmVyeSgodmFsLCBpZHgpID0+IHZhbCA9PT0gbmV3U3RhdGVNYXhCb3VuZHNbaWR4XSk7XG4gIGlmIChoYXNNYXhCb3VuZHNDaGFuZ2VkKSB7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIG5ld01hcFN0YXRlIHZpZXdwb3J0IGlzIHdpdGhpbiBtYXhCb3VuZHNcbiAgICBpZiAoIWJvb2xlYW5XaXRoaW4odmlld3BvcnRCb3VuZHNQb2x5Z29uLCBtYXhCb3VuZHNQb2x5Z29uKSkge1xuICAgICAgY29uc3Qge2xhdGl0dWRlLCBsb25naXR1ZGUsIHpvb219ID0gZml0Qm91bmRzKHtcbiAgICAgICAgd2lkdGg6IG5ld01hcFN0YXRlLndpZHRoLFxuICAgICAgICBoZWlnaHQ6IG5ld01hcFN0YXRlLndpZHRoLFxuICAgICAgICBib3VuZHM6IFtcbiAgICAgICAgICBbbmV3U3RhdGVNYXhCb3VuZHNbMF0sIG5ld1N0YXRlTWF4Qm91bmRzWzFdXSxcbiAgICAgICAgICBbbmV3U3RhdGVNYXhCb3VuZHNbMl0sIG5ld1N0YXRlTWF4Qm91bmRzWzNdXVxuICAgICAgICBdXG4gICAgICB9KTtcblxuICAgICAgbmV3TWFwU3RhdGUgPSB7XG4gICAgICAgIC4uLm5ld01hcFN0YXRlLFxuICAgICAgICBsYXRpdHVkZSxcbiAgICAgICAgbG9uZ2l0dWRlLFxuICAgICAgICAvLyBGb3IgbWFyZ2luYWwgb3IgaW52YWxpZCBib3VuZHMsIHpvb20gbWF5IGJlIE5hTi4gTWFrZSBzdXJlIHRvIHByb3ZpZGUgYSB2YWxpZCB2YWx1ZSBpbiBvcmRlclxuICAgICAgICAvLyB0byBhdm9pZCBjb3JydXB0IHN0YXRlIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcyBhcyB6b29tIGlzIGV4cGVjdGVkIHRvIGJlIGEgbnVtYmVyXG4gICAgICAgIC4uLihOdW1iZXIuaXNGaW5pdGUoem9vbSkgPyB7em9vbX0gOiB7fSlcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXBTdGF0ZTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBuZXdNYXBTdGF0ZSB2aWV3cG9ydCBpcyB3aXRoaW4gbWF4Qm91bmRzXG4gIGlmICghYm9vbGVhbldpdGhpbih2aWV3cG9ydEJvdW5kc1BvbHlnb24sIG1heEJvdW5kc1BvbHlnb24pKSB7XG4gICAgbmV3TWFwU3RhdGUgPSB7XG4gICAgICAuLi5uZXdNYXBTdGF0ZSxcbiAgICAgIGxvbmdpdHVkZTogc3RhdGUubG9uZ2l0dWRlLFxuICAgICAgbGF0aXR1ZGU6IHN0YXRlLmxhdGl0dWRlLFxuICAgICAgem9vbTogc3RhdGUuem9vbVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbmV3TWFwU3RhdGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZShzdGF0ZTogTWFwU3RhdGUpOiBWaWV3cG9ydCB7XG4gIHJldHVybiBwaWNrKHN0YXRlLCBbXG4gICAgJ3dpZHRoJyxcbiAgICAnaGVpZ2h0JyxcbiAgICAnem9vbScsXG4gICAgJ3BpdGNoJyxcbiAgICAnYmVhcmluZycsXG4gICAgJ2xhdGl0dWRlJyxcbiAgICAnbG9uZ2l0dWRlJyxcbiAgICAnZHJhZ1JvdGF0ZScsXG4gICAgJ21pblpvb20nLFxuICAgICdtYXhab29tJyxcbiAgICAnbWF4Qm91bmRzJ1xuICBdKTtcbn1cblxuLyoqIFNlbGVjdCBpdGVtcyBmcm9tIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyBub3QgdW5kZWZpbmVkICovXG5jb25zdCBkZWZpbmVkUHJvcHMgPSBvYmogPT5cbiAgT2JqZWN0LmVudHJpZXMob2JqKS5yZWR1Y2UoXG4gICAgKGFjY3UsIFtrLCB2XSkgPT4gKHsuLi5hY2N1LCAuLi4odiAhPT0gdW5kZWZpbmVkID8ge1trXTogdn0gOiB7fSl9KSxcbiAgICB7fVxuICApO1xuXG5mdW5jdGlvbiB1cGRhdGVWaWV3cG9ydChvcmlnaW5hbFZpZXdwb3J0OiBWaWV3cG9ydCwgdmlld3BvcnRVcGRhdGVzOiBWaWV3cG9ydCk6IFZpZXdwb3J0IHtcbiAgbGV0IG5ld1ZpZXdwb3J0ID0ge1xuICAgIC4uLm9yaWdpbmFsVmlld3BvcnQsXG4gICAgLi4uKGRlZmluZWRQcm9wcyh2aWV3cG9ydFVwZGF0ZXMpIHx8IHt9KVxuICB9O1xuXG4gIC8vIE1ha2Ugc3VyZSB6b29tIGxldmVsIGRvZXNuJ3QgZ28gYmVsbG93IG1pblpvb20gaWYgZGVmaW5lZFxuICBpZiAobmV3Vmlld3BvcnQubWluWm9vbSAmJiBuZXdWaWV3cG9ydC56b29tICYmIG5ld1ZpZXdwb3J0Lnpvb20gPCBuZXdWaWV3cG9ydC5taW5ab29tKSB7XG4gICAgbmV3Vmlld3BvcnQuem9vbSA9IG5ld1ZpZXdwb3J0Lm1pblpvb207XG4gIH1cbiAgLy8gTWFrZSBzdXJlIHpvb20gbGV2ZWwgZG9lc24ndCBnbyBhYm92ZSBtYXhab29tIGlmIGRlZmluZWRcbiAgaWYgKG5ld1ZpZXdwb3J0Lm1heFpvb20gJiYgbmV3Vmlld3BvcnQuem9vbSAmJiBuZXdWaWV3cG9ydC56b29tID4gbmV3Vmlld3BvcnQubWF4Wm9vbSkge1xuICAgIG5ld1ZpZXdwb3J0Lnpvb20gPSBuZXdWaWV3cG9ydC5tYXhab29tO1xuICB9XG4gIC8vIExpbWl0IHZpZXdwb3J0IHVwZGF0ZSBiYXNlZCBvbiBtYXhCb3VuZHNcbiAgaWYgKG5ld1ZpZXdwb3J0Lm1heEJvdW5kcyAmJiB2YWxpZGF0ZUJvdW5kcyhuZXdWaWV3cG9ydC5tYXhCb3VuZHMpKSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUeXBlICdWaWV3cG9ydCcgaXMgbWlzc2luZyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgZnJvbSB0eXBlICdNYXBTdGF0ZSc6IGlzU3BsaXQsIGlzVmlld3BvcnRTeW5jZWQsIGlzWm9vbUxvY2tlZCwgc3BsaXRNYXBWaWV3cG9ydHNcbiAgICBuZXdWaWV3cG9ydCA9IHVwZGF0ZVZpZXdwb3J0QmFzZWRPbkJvdW5kcyhvcmlnaW5hbFZpZXdwb3J0LCBuZXdWaWV3cG9ydCk7XG4gIH1cblxuICByZXR1cm4gbmV3Vmlld3BvcnQ7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFlBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGNBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFlBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLFlBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFVBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLEtBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFNLE1BQUEsR0FBQU4sT0FBQTtBQUswQixTQUFBTyxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFBSixDQUFBO0FBQUEsU0FBQVUsY0FBQVosQ0FBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEsVUFBQUMsQ0FBQSxXQUFBVyxTQUFBLENB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
@@ -12,7 +12,7 @@ exports.setBackgroundColorUpdater = exports.set3dBuildingColorUpdater = exports.
12
12
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
13
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
14
  var _tasks = _interopRequireWildcard(require("react-palm/tasks"));
15
- var _lodash = _interopRequireDefault(require("lodash.clonedeep"));
15
+ var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
16
16
  var _console = _interopRequireDefault(require("global/console"));
17
17
  var _utils = require("@kepler.gl/utils");
18
18
  var _commonUtils = require("@kepler.gl/common-utils");
@@ -503,7 +503,7 @@ var loadCustomMapStyleUpdater = exports.loadCustomMapStyleUpdater = function loa
503
503
  style.id || (0, _commonUtils.generateHashId)(),
504
504
  // custom LOCAL type
505
505
  // make a copy of the style object
506
- style: (0, _lodash["default"])(style),
506
+ style: (0, _cloneDeep["default"])(style),
507
507
  // @ts-expect-error
508
508
  label: state.inputStyle.label || style.name,
509
509
  // gathering layer group info from style json
@@ -653,4 +653,4 @@ function getInitialInputStyle() {
653
653
  uploadedFile: null
654
654
  };
655
655
  }
656
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGFza3MiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb25zb2xlIiwiX3V0aWxzIiwiX2NvbW1vblV0aWxzIiwiX2NvbnN0YW50cyIsIl90YXNrczIiLCJfZDNDb2xvciIsIl9hY3Rpb25zIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImdldERlZmF1bHRTdGF0ZSIsInZpc2libGVMYXllckdyb3VwcyIsInRvcExheWVyR3JvdXBzIiwic3R5bGVUeXBlIiwiREVGQVVMVF9CQVNFX01BUF9TVFlMRSIsIm1hcFN0eWxlcyIsIkRFRkFVTFRfTUFQX1NUWUxFUyIsInJlZHVjZSIsImFjY3UiLCJjdXJyIiwiaWQiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsIkRFRkFVTFRfTUFQQk9YX0FQSV9VUkwiLCJtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCIsImlucHV0U3R5bGUiLCJnZXRJbml0aWFsSW5wdXRTdHlsZSIsInRocmVlREJ1aWxkaW5nQ29sb3IiLCJoZXhUb1JnYiIsIkRFRkFVTFRfQkxER19DT0xPUiIsImN1c3RvbTNEQnVpbGRpbmdDb2xvciIsImJhY2tncm91bmRDb2xvciIsIkRFRkFVTFRfQkFDS0dST1VORF9DT0xPUiIsImlzTG9hZGluZyIsImJvdHRvbU1hcFN0eWxlIiwidW5kZWZpbmVkIiwidG9wTWFwU3R5bGUiLCJtYXBTdHlsZVVwZGF0ZXJzIiwiSU5JVElBTF9NQVBfU1RZTEUiLCJleHBvcnRzIiwiZ2V0TWFwU3R5bGVzIiwiX3JlZiIsIm1hcFN0eWxlIiwic3R5bGUiLCJlZGl0YWJsZSIsImVkaXRCb3R0b21NYXBTdHlsZSIsImhhc1RvcExheWVyIiwidmFsdWVzIiwic29tZSIsInYiLCJ0b3BMYXllcnMiLCJrZXkiLCJlZGl0VG9wTWFwU3R5bGUiLCJmaW5kTGF5ZXJGaWxsQ29sb3IiLCJsYXllciIsInBhaW50IiwiZ2V0UGFpbnRDb2xvciIsImNvbG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiZ2V0M0RCdWlsZGluZ0NvbG9yIiwiYmFja2dyb3VuZExheWVyIiwibGF5ZXJzIiwiZmluZCIsIl9yZWYyIiwiYnVpbGRpbmdMYXllciIsIl9yZWYzIiwibWF0Y2giLCJidWlsZGluZ0NvbG9yIiwib3BlcmF0aW9uIiwiYWxwaGEiLCJyZ2JPYmoiLCJyZ2IiLCJnIiwiYiIsImdldEJhY2tncm91bmRDb2xvckZyb21TdHlsZUJhc2VMYXllciIsImJhY2t1cEJhY2tncm91bmRDb2xvciIsIl9jb2xvck1heWJlVG9SR0IiLCJjb2xvck1heWJlVG9SR0IiLCJiYXNlTGF5ZXIiLCJfcmVmNCIsIkJBU0VfTUFQX0JBQ0tHUk9VTkRfTEFZRVJfSURTIiwiaW5jbHVkZXMiLCJiYWNrZ3JvdW5kQ29sb3JPZkJhc2VMYXllciIsIm5ld0JhY2tncm91bmRDb2xvciIsIm5ld0JhY2tncm91bmRDb2xvckFzUkdCQXJyYXkiLCJtYXAiLCJjaGFubmVsTnVtYmVyIiwiTWF0aCIsInJvdW5kIiwiZ2V0QmFja2dyb3VuZENvbG9yIiwicHJldmlvdXNTdGF0ZSIsInByZXZpb3VzU3RhdGVNYXBTdHlsZSIsIk5PX01BUF9JRCIsImdldExheWVyR3JvdXBzRnJvbVN0eWxlIiwiREVGQVVMVF9MQVlFUl9HUk9VUFMiLCJsZyIsInJlcXVlc3RNYXBTdHlsZXNVcGRhdGVyIiwic3RhdGUiLCJfcmVmNSIsIl9yZWY1JHBheWxvYWQiLCJwYXlsb2FkIiwib25TdWNjZXNzIiwidG9Mb2FkIiwibG9hZE1hcFN0eWxlVGFza3MiLCJnZXRMb2FkTWFwU3R5bGVUYXNrcyIsIm5leHRTdGF0ZSIsIndpdGhUYXNrIiwiaW5pdE1hcFN0eWxlVXBkYXRlciIsIl9yZWY3IiwiX3JlZjckcGF5bG9hZCIsIm1hcENvbmZpZ0NoYW5nZVVwZGF0ZXIiLCJhY3Rpb24iLCJoYXNTdHlsZU9iamVjdCIsImlzUGxhaW5PYmplY3QiLCJtYXBTdHlsZUNoYW5nZVVwZGF0ZXIiLCJfcmVmOCIsIl9zdGF0ZSRtYXBTdHlsZXMkc3R5bCIsIl9zdGF0ZSRtYXBTdHlsZXMkc3R5bDIiLCJfcmVmOCRwYXlsb2FkIiwiY3VzdG9tIiwidXJsIiwiZGVmYXVsdExHVmlzaWJpbGl0eSIsImdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eSIsIm1lcmdlTGF5ZXJHcm91cFZpc2liaWxpdHkiLCJsb2FkTWFwU3R5bGVzVXBkYXRlciIsIl9yZWY5IiwibmV3U3R5bGVzIiwiYWRkTGF5ZXJHcm91cHMiLCJsYXllckdyb3VwcyIsIm5ld1N0YXRlIiwidGFza3MiLCJjcmVhdGVBY3Rpb25UYXNrIiwiQUNUSU9OX1RBU0siLCJsb2FkTWFwU3R5bGVFcnJVcGRhdGVyIiwiX3JlZjEyIiwiX3JlZjEyJHBheWxvYWQiLCJpZHMiLCJlcnJvciIsIkNvbnNvbGUiLCJyZWNlaXZlTWFwQ29uZmlnVXBkYXRlciIsIl9yZWYxNSIsImNvbmZpZyIsIl9yZWYxNiIsIm1lcmdlZCIsIkJvb2xlYW4iLCJUYXNrIiwiYWxsIiwiX3JlZjE3IiwiYWNjZXNzVG9rZW4iLCJnZXRTdHlsZURvd25sb2FkVXJsIiwiTE9BRF9NQVBfU1RZTEVfVEFTSyIsImJpbWFwIiwicmVzdWx0cyIsImxvYWRNYXBTdHlsZXMiLCJfcmVmMTgiLCJlcnIiLCJsb2FkTWFwU3R5bGVFcnIiLCJyZXNldE1hcENvbmZpZ01hcFN0eWxlVXBkYXRlciIsImVtcHR5Q29uZmlnIiwiaW5pdGlhbFN0YXRlIiwibG9hZEN1c3RvbU1hcFN0eWxlVXBkYXRlciIsIl9yZWYxOSIsIl9yZWYxOSRwYXlsb2FkIiwiaWNvbiIsImdlbmVyYXRlSGFzaElkIiwiY2xvbmVEZWVwIiwibGFiZWwiLCJuYW1lIiwiaW5wdXRNYXBTdHlsZVVwZGF0ZXIiLCJfcmVmMjAiLCJfdXBkYXRlZCRpY29uIiwiX3VwZGF0ZWQkdXJsIiwiX3VwZGF0ZWQkdXJsMiIsIl9yZWYyMCRwYXlsb2FkIiwibWFwU3RhdGUiLCJ1cGRhdGVkIiwiaXNVcGRhdGVkSWNvbkRhdGFVcmkiLCJzdGFydHNXaXRoIiwiaXNNYXBib3hTdHlsZVVybCIsImdldFN0eWxlSW1hZ2VJY29uIiwic3R5bGVVcmwiLCJpc1ZhbGlkIiwiYWRkQ3VzdG9tTWFwU3R5bGVVcGRhdGVyIiwic3R5bGVJZCIsImdldE5ld1N0YXRlV2l0aEN1c3RvbU1hcFN0eWxlIiwiZWRpdEN1c3RvbU1hcFN0eWxlVXBkYXRlciIsInJlbW92ZUN1c3RvbU1hcFN0eWxlVXBkYXRlciIsIl9zdGF0ZSRtYXBTdHlsZXMiLCJfIiwicmVzdE9mTWFwU3R5bGVzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsInNldDNkQnVpbGRpbmdDb2xvclVwZGF0ZXIiLCJfcmVmMjEiLCJzZXRCYWNrZ3JvdW5kQ29sb3JVcGRhdGVyIiwiX3JlZjIyIiwidXBsb2FkZWRGaWxlIl0sInNvdXJjZXMiOlsiLi4vc3JjL21hcC1zdHlsZS11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgVGFzaywge3dpdGhUYXNrfSBmcm9tICdyZWFjdC1wYWxtL3Rhc2tzJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoLmNsb25lZGVlcCc7XG5pbXBvcnQgQ29uc29sZSBmcm9tICdnbG9iYWwvY29uc29sZSc7XG5cbi8vIFV0aWxzXG5pbXBvcnQge1xuICBnZXREZWZhdWx0TGF5ZXJHcm91cFZpc2liaWxpdHksXG4gIGdldFN0eWxlRG93bmxvYWRVcmwsXG4gIG1lcmdlTGF5ZXJHcm91cFZpc2liaWxpdHksXG4gIGVkaXRUb3BNYXBTdHlsZSxcbiAgZWRpdEJvdHRvbU1hcFN0eWxlLFxuICBnZXRTdHlsZUltYWdlSWNvbixcbiAgaXNQbGFpbk9iamVjdCxcbiAgaGV4VG9SZ2IsXG4gIGNvbG9yTWF5YmVUb1JHQlxufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7Z2VuZXJhdGVIYXNoSWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7XG4gIERFRkFVTFRfTUFQX1NUWUxFUyxcbiAgREVGQVVMVF9MQVlFUl9HUk9VUFMsXG4gIERFRkFVTFRfTUFQQk9YX0FQSV9VUkwsXG4gIE5PX01BUF9JRCxcbiAgREVGQVVMVF9CTERHX0NPTE9SLFxuICBERUZBVUxUX0JBQ0tHUk9VTkRfQ09MT1IsXG4gIEJBU0VfTUFQX0JBQ0tHUk9VTkRfTEFZRVJfSURTLFxuICBERUZBVUxUX0JBU0VfTUFQX1NUWUxFXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7QUNUSU9OX1RBU0ssIExPQURfTUFQX1NUWUxFX1RBU0t9IGZyb20gJ0BrZXBsZXIuZ2wvdGFza3MnO1xuaW1wb3J0IHtyZ2J9IGZyb20gJ2QzLWNvbG9yJztcblxuaW1wb3J0IHtcbiAgUkdCQ29sb3IsXG4gIExheWVyR3JvdXAsXG4gIEJhc2VNYXBTdHlsZSxcbiAgTWFwU3R5bGVzLFxuICBJbnB1dFN0eWxlLFxuICBWaXNpYmxlTGF5ZXJHcm91cHNcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBBY3Rpb25UeXBlcyxcbiAgUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQsXG4gIEtlcGxlckdsSW5pdFBheWxvYWQsXG4gIE1hcFN0eWxlQWN0aW9ucyxcbiAgbG9hZE1hcFN0eWxlcyxcbiAgbG9hZE1hcFN0eWxlRXJyXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5cbmV4cG9ydCB0eXBlIE1hcGJveFN0eWxlVXJsID0gc3RyaW5nO1xuXG5leHBvcnQgdHlwZSBNYXBTdHlsZSA9IHtcbiAgc3R5bGVUeXBlOiBzdHJpbmc7XG4gIHZpc2libGVMYXllckdyb3VwczogVmlzaWJsZUxheWVyR3JvdXBzO1xuICB0b3BMYXllckdyb3VwczogVmlzaWJsZUxheWVyR3JvdXBzO1xuICBtYXBTdHlsZXM6IE1hcFN0eWxlcztcbiAgLy8gc2F2ZSBtYXBib3ggYWNjZXNzIHRva2VuXG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBzdHJpbmcgfCBudWxsO1xuICBtYXBib3hBcGlVcmw6IHN0cmluZztcbiAgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQ6IGJvb2xlYW47XG4gIGlucHV0U3R5bGU6IElucHV0U3R5bGU7XG4gIHRocmVlREJ1aWxkaW5nQ29sb3I6IFJHQkNvbG9yO1xuICBiYWNrZ3JvdW5kQ29sb3I6IFJHQkNvbG9yO1xuICBjdXN0b20zREJ1aWxkaW5nQ29sb3I6IGJvb2xlYW47XG4gIGJvdHRvbU1hcFN0eWxlOiBhbnk7XG4gIHRvcE1hcFN0eWxlOiBhbnk7XG4gIGluaXRpYWxTdGF0ZT86IE1hcFN0eWxlO1xuICBpc0xvYWRpbmc6IHtcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xuICB9O1xufTtcblxuY29uc3QgZ2V0RGVmYXVsdFN0YXRlID0gKCk6IE1hcFN0eWxlID0+IHtcbiAgY29uc3QgdmlzaWJsZUxheWVyR3JvdXBzID0ge307XG4gIGNvbnN0IHRvcExheWVyR3JvdXBzID0ge307XG5cbiAgcmV0dXJuIHtcbiAgICBzdHlsZVR5cGU6IERFRkFVTFRfQkFTRV9NQVBfU1RZTEUsXG4gICAgdmlzaWJsZUxheWVyR3JvdXBzLFxuICAgIHRvcExheWVyR3JvdXBzLFxuICAgIG1hcFN0eWxlczogREVGQVVMVF9NQVBfU1RZTEVTLnJlZHVjZShcbiAgICAgIChhY2N1LCBjdXJyKSA9PiAoe1xuICAgICAgICAuLi5hY2N1LFxuICAgICAgICBbY3Vyci5pZF06IGN1cnJcbiAgICAgIH0pLFxuICAgICAge31cbiAgICApLFxuICAgIC8vIHNhdmUgbWFwYm94IGFjY2VzcyB0b2tlblxuICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBudWxsLFxuICAgIG1hcGJveEFwaVVybDogREVGQVVMVF9NQVBCT1hfQVBJX1VSTCxcbiAgICBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdDogZmFsc2UsXG4gICAgaW5wdXRTdHlsZTogZ2V0SW5pdGlhbElucHV0U3R5bGUoKSxcbiAgICB0aHJlZURCdWlsZGluZ0NvbG9yOiBoZXhUb1JnYihERUZBVUxUX0JMREdfQ09MT1IpLFxuICAgIGN1c3RvbTNEQnVpbGRpbmdDb2xvcjogZmFsc2UsXG4gICAgYmFja2dyb3VuZENvbG9yOiBoZXhUb1JnYihERUZBVUxUX0JBQ0tHUk9VTkRfQ09MT1IpLFxuICAgIGlzTG9hZGluZzoge30sXG4gICAgYm90dG9tTWFwU3R5bGU6IHVuZGVmaW5lZCxcbiAgICB0b3BNYXBTdHlsZTogdW5kZWZpbmVkXG4gIH07XG59O1xuXG4vKipcbiAqIFVwZGF0ZXJzIGZvciBgbWFwU3R5bGVgLiBDYW4gYmUgdXNlZCBpbiB5b3VyIHJvb3QgcmVkdWNlciB0byBkaXJlY3RseSBtb2RpZnkga2VwbGVyLmdsJ3Mgc3RhdGUuXG4gKiBSZWFkIG1vcmUgYWJvdXQgW1VzaW5nIHVwZGF0ZXJzXSguLi9hZHZhbmNlZC11c2FnZS91c2luZy11cGRhdGVycy5tZClcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKlxuICogaW1wb3J0IGtlcGxlckdsUmVkdWNlciwge21hcFN0eWxlVXBkYXRlcnN9IGZyb20gJ2tlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBjbGljayBidXR0b24gdG8gaGlkZSBsYWJlbCBmcm9tIGJhY2tncm91bmQgbWFwXG4gKiAgICBjYXNlICdDTElDS19CVVRUT04nOlxuICogICAgICByZXR1cm4ge1xuICogICAgICAgIC4uLnN0YXRlLFxuICogICAgICAgIGtlcGxlckdsOiB7XG4gKiAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbCxcbiAqICAgICAgICAgIGZvbzoge1xuICogICAgICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wuZm9vLFxuICogICAgICAgICAgICAgbWFwU3R5bGU6IG1hcFN0eWxlVXBkYXRlcnMubWFwQ29uZmlnQ2hhbmdlVXBkYXRlcihcbiAqICAgICAgICAgICAgICAgbWFwU3R5bGUsXG4gKiAgICAgICAgICAgICAgIHtwYXlsb2FkOiB7dmlzaWJsZUxheWVyR3JvdXBzOiB7bGFiZWw6IGZhbHNlLCByb2FkOiB0cnVlLCBiYWNrZ3JvdW5kOiB0cnVlfX19XG4gKiAgICAgICAgICAgICApXG4gKiAgICAgICAgICB9XG4gKiAgICAgICAgfVxuICogICAgICB9O1xuICogIH1cbiAqICByZXR1cm4gcmVkdWNlcnMoc3RhdGUsIGFjdGlvbik7XG4gKiB9O1xuICpcbiAqIGV4cG9ydCBkZWZhdWx0IGNvbXBvc2VkUmVkdWNlcjtcbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IG1hcFN0eWxlVXBkYXRlcnMgPSBudWxsO1xuLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBtYXBTdHlsZWBcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBzdHlsZVR5cGUgLSBEZWZhdWx0OiBgJ2RhcmsnYFxuICogQHByb3BlcnR5IHZpc2libGVMYXllckdyb3VwcyAtIERlZmF1bHQ6IGB7fWBcbiAqIEBwcm9wZXJ0eSB0b3BMYXllckdyb3VwcyAtIERlZmF1bHQ6IGB7fWBcbiAqIEBwcm9wZXJ0eSBtYXBTdHlsZXMgLSBtYXBwaW5nIGZyb20gc3R5bGUga2V5IHRvIHN0eWxlIG9iamVjdFxuICogQHByb3BlcnR5IG1hcGJveEFwaUFjY2Vzc1Rva2VuIC0gRGVmYXVsdDogYG51bGxgXG4gKiBAUHJvcGVydHkgbWFwYm94QXBpVXJsIC0gRGVmYXVsdCBudWxsXG4gKiBAUHJvcGVydHkgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQgLSBEZWZhdWx0OiBgZmFsc2VgXG4gKiBAcHJvcGVydHkgaW5wdXRTdHlsZSAtIERlZmF1bHQ6IGB7fWBcbiAqIEBwcm9wZXJ0eSB0aHJlZURCdWlsZGluZ0NvbG9yIC0gRGVmYXVsdDogYFtyLCBnLCBiXWBcbiAqIEBwcm9wZXJ0eSBiYWNrZ3JvdW5kQ29sb3IgLSBEZWZhdWx0OiBgW3IsIGcsIGJdYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9NQVBfU1RZTEU6IE1hcFN0eWxlID0gZ2V0RGVmYXVsdFN0YXRlKCk7XG5cbmludGVyZmFjZSBHZXRNYXBTdHlsZXNQYXJhbSB7XG4gIHN0eWxlVHlwZTogc3RyaW5nO1xuICB2aXNpYmxlTGF5ZXJHcm91cHM6IHtbaWQ6IHN0cmluZ106IExheWVyR3JvdXAgfCBib29sZWFufTtcbiAgdG9wTGF5ZXJHcm91cHM6IHtbaWQ6IHN0cmluZ106IExheWVyR3JvdXAgfCBib29sZWFufTtcbiAgbWFwU3R5bGVzOiB7W2lkOiBzdHJpbmddOiBhbnl9O1xufVxuXG4vKipcbiAqIENyZWF0ZSB0d28gbWFwIHN0eWxlcyBmcm9tIHByZXNldCBtYXAgc3R5bGUsIG9uZSBmb3IgdG9wIG1hcCBvbmUgZm9yIGJvdHRvbVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHlsZVR5cGUgLSBjdXJyZW50IG1hcCBzdHlsZVxuICogQHBhcmFtIHtPYmplY3R9IHZpc2libGVMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIGJvdHRvbSBtYXBcbiAqIEBwYXJhbSB7T2JqZWN0fSB0b3BMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIHRvcCBtYXBcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXBTdHlsZXMgLSBhIGRpY3Rpb25hcnkgb2YgYWxsIG1hcCBzdHlsZXNcbiAqIEByZXR1cm5zIHtPYmplY3R9IGJvdHRvbU1hcFN0eWxlIHwgdG9wTWFwU3R5bGUgfCBpc1Jhc3RlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFwU3R5bGVzKHtcbiAgc3R5bGVUeXBlLFxuICB2aXNpYmxlTGF5ZXJHcm91cHMsXG4gIHRvcExheWVyR3JvdXBzLFxuICBtYXBTdHlsZXNcbn06IEdldE1hcFN0eWxlc1BhcmFtKSB7XG4gIGNvbnN0IG1hcFN0eWxlID0gbWFwU3R5bGVzW3N0eWxlVHlwZV07XG5cbiAgLy8gc3R5bGUgbWlnaHQgbm90IGJlIGxvYWRlZCB5ZXRcbiAgaWYgKCFtYXBTdHlsZSB8fCAhbWFwU3R5bGUuc3R5bGUpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBlZGl0YWJsZSA9IE9iamVjdC5rZXlzKHZpc2libGVMYXllckdyb3VwcykubGVuZ3RoO1xuXG4gIGNvbnN0IGJvdHRvbU1hcFN0eWxlID0gIWVkaXRhYmxlXG4gICAgPyBtYXBTdHlsZS5zdHlsZVxuICAgIDogZWRpdEJvdHRvbU1hcFN0eWxlKHtcbiAgICAgICAgaWQ6IHN0eWxlVHlwZSxcbiAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgIHZpc2libGVMYXllckdyb3Vwc1xuICAgICAgfSk7XG5cbiAgY29uc3QgaGFzVG9wTGF5ZXIgPSBlZGl0YWJsZSA+IDAgJiYgT2JqZWN0LnZhbHVlcyh0b3BMYXllckdyb3Vwcykuc29tZSh2ID0+IHYpO1xuXG4gIC8vIG11dGUgdG9wIGxheWVyIGlmIG5vdCB2aXNpYmxlIGluIGJvdHRvbSBsYXllclxuICBjb25zdCB0b3BMYXllcnMgPVxuICAgIGhhc1RvcExheWVyICYmXG4gICAgT2JqZWN0LmtleXModG9wTGF5ZXJHcm91cHMpLnJlZHVjZShcbiAgICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAgIC4uLmFjY3UsXG4gICAgICAgIFtrZXldOiB0b3BMYXllckdyb3Vwc1trZXldICYmIHZpc2libGVMYXllckdyb3Vwc1trZXldXG4gICAgICB9KSxcbiAgICAgIHt9IGFzIHtbaWQ6IHN0cmluZ106IExheWVyR3JvdXAgfCBib29sZWFufVxuICAgICk7XG5cbiAgY29uc3QgdG9wTWFwU3R5bGUgPSBoYXNUb3BMYXllclxuICAgID8gZWRpdFRvcE1hcFN0eWxlKHtcbiAgICAgICAgaWQ6IHN0eWxlVHlwZSxcbiAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgIHZpc2libGVMYXllckdyb3VwczogdG9wTGF5ZXJzXG4gICAgICB9KVxuICAgIDogbnVsbDtcblxuICByZXR1cm4ge2JvdHRvbU1hcFN0eWxlLCB0b3BNYXBTdHlsZSwgZWRpdGFibGV9O1xufVxuXG5mdW5jdGlvbiBmaW5kTGF5ZXJGaWxsQ29sb3IobGF5ZXIpIHtcbiAgcmV0dXJuIGxheWVyICYmIGxheWVyLnBhaW50ICYmIGxheWVyLnBhaW50WydiYWNrZ3JvdW5kLWNvbG9yJ107XG59XG5cbi8vIG5lZWQgdG8gYmUgY2FyZWZ1bCBiZWNhdXNlIHNvbWUgYmFzZW1hcCBsYXllci5wYWludFsnYmFja2dyb3VuZC1jb2xvciddIHZhbHVlcyBtYXkgYmUgYW4gaW50ZXJwb2xhdGUgYXJyYXkgZXhwcmVzc2lvbiBpbnN0ZWFkIG9mIGEgY29sb3Igc3RyaW5nXG4vLyBodHRwczovL2RvY3MubWFwYm94LmNvbS9tYXBib3gtZ2wtanMvc3R5bGUtc3BlYy9sYXllcnMvI3BhaW50LWJhY2tncm91bmQtYmFja2dyb3VuZC1jb2xvclxuLy8gaHR0cHM6Ly9kb2NzLm1hcGJveC5jb20vbWFwYm94LWdsLWpzL3N0eWxlLXNwZWMvZXhwcmVzc2lvbnMvI2ludGVycG9sYXRlXG5mdW5jdGlvbiBnZXRQYWludENvbG9yKGNvbG9yKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbG9yKSAmJiBjb2xvclswXSA9PT0gJ2ludGVycG9sYXRlJykge1xuICAgIC8vIGdldCBjb2xvciBvZiBmaXJzdCB6b29tIGJyZWFrXG4gICAgLy8gW1wiaW50ZXJwb2xhdGVcIiwgW1wibGluZWFyXCJdLCBbXCJ6b29tXCJdLCAxMSwgXCJoc2woMzUsIDMyJSwgOTElKVwiLCAxMywgXCJoc2woMzUsIDEyJSwgODklKVwiXVxuICAgIHJldHVybiBjb2xvcls0XTtcbiAgfVxuICByZXR1cm4gY29sb3I7XG59XG5cbmZ1bmN0aW9uIGdldDNEQnVpbGRpbmdDb2xvcihzdHlsZSk6IFJHQkNvbG9yIHtcbiAgLy8gc2V0IGJ1aWxkaW5nIGNvbG9yIHRvIGJlIHRoZSBzYW1lIGFzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLlxuICBpZiAoIXN0eWxlLnN0eWxlKSB7XG4gICAgcmV0dXJuIGhleFRvUmdiKERFRkFVTFRfQkxER19DT0xPUik7XG4gIH1cblxuICBjb25zdCBiYWNrZ3JvdW5kTGF5ZXIgPSAoc3R5bGUuc3R5bGUubGF5ZXJzIHx8IFtdKS5maW5kKCh7aWR9KSA9PiBpZCA9PT0gJ2JhY2tncm91bmQnKTtcblxuICBjb25zdCBidWlsZGluZ0xheWVyID0gKHN0eWxlLnN0eWxlLmxheWVycyB8fCBbXSkuZmluZCgoe2lkfSkgPT4gaWQubWF0Y2goL2J1aWxkaW5nLykpO1xuXG4gIGNvbnN0IGJ1aWxkaW5nQ29sb3IgPVxuICAgIGZpbmRMYXllckZpbGxDb2xvcihidWlsZGluZ0xheWVyKSB8fCBmaW5kTGF5ZXJGaWxsQ29sb3IoYmFja2dyb3VuZExheWVyKSB8fCBERUZBVUxUX0JMREdfQ09MT1I7XG5cbiAgLy8gYnJpZ2h0ZW4gb3IgZGFya2VuIGJ1aWxkaW5nIGJhc2VkIG9uIHN0eWxlXG4gIGNvbnN0IG9wZXJhdGlvbiA9IHN0eWxlLmlkLm1hdGNoKC8oPz0oZGFya3xuaWdodCkpLykgPyAnYnJpZ2h0ZXInIDogJ2Rhcmtlcic7XG5cbiAgY29uc3QgYWxwaGEgPSAwLjI7XG4gIGNvbnN0IHJnYk9iaiA9IHJnYihidWlsZGluZ0NvbG9yKVtvcGVyYXRpb25dKFthbHBoYV0pO1xuICByZXR1cm4gW3JnYk9iai5yLCByZ2JPYmouZywgcmdiT2JqLmJdO1xufVxuXG5mdW5jdGlvbiBnZXRCYWNrZ3JvdW5kQ29sb3JGcm9tU3R5bGVCYXNlTGF5ZXIoXG4gIHN0eWxlOiBCYXNlTWFwU3R5bGUsXG4gIGJhY2t1cEJhY2tncm91bmRDb2xvcjogUkdCQ29sb3Jcbik6IFJHQkNvbG9yIHtcbiAgaWYgKCFzdHlsZS5zdHlsZSkge1xuICAgIHJldHVybiBjb2xvck1heWJlVG9SR0IoYmFja3VwQmFja2dyb3VuZENvbG9yKSB8fCBiYWNrdXBCYWNrZ3JvdW5kQ29sb3I7XG4gIH1cblxuICAvLyBAdHMtZXhwZWN0LWVycm9yIHN0eWxlLnN0eWxlIG5vdCB0eXBlZFxuICBjb25zdCBiYXNlTGF5ZXIgPSAoc3R5bGUuc3R5bGUubGF5ZXJzIHx8IFtdKS5maW5kKCh7aWR9KSA9PlxuICAgIEJBU0VfTUFQX0JBQ0tHUk9VTkRfTEFZRVJfSURTLmluY2x1ZGVzKGlkKVxuICApO1xuXG4gIGNvbnN0IGJhY2tncm91bmRDb2xvck9mQmFzZUxheWVyID0gZ2V0UGFpbnRDb2xvcihmaW5kTGF5ZXJGaWxsQ29sb3IoYmFzZUxheWVyKSk7XG5cbiAgY29uc3QgbmV3QmFja2dyb3VuZENvbG9yID1cbiAgICB0eXBlb2YgYmFja2dyb3VuZENvbG9yT2ZCYXNlTGF5ZXIgPT09ICdzdHJpbmcnXG4gICAgICA/IGJhY2tncm91bmRDb2xvck9mQmFzZUxheWVyXG4gICAgICA6IGJhY2t1cEJhY2tncm91bmRDb2xvcjtcblxuICBjb25zdCBuZXdCYWNrZ3JvdW5kQ29sb3JBc1JHQkFycmF5ID0gY29sb3JNYXliZVRvUkdCKG5ld0JhY2tncm91bmRDb2xvcilcbiAgICAvLyBpZiBuZXdCYWNrZ3JvdW5kQ29sb3Igd2FzIGluIHN0cmluZyBIU0wgZm9ybWF0IGl0IGNhbiBpbnRyb2R1Y2UgUkdCIG51bWJlcnMgd2l0aCBkZWNpbWFscyxcbiAgICAvLyB3aGljaCBtYXkgcmVuZGVyIHRoZSBiYWNrZ3JvdW5kLWNvbG9yIENTUyBvZiB0aGUgPFN0eWxlZE1hcD4gY29udGFpbmVyIGluY29ycmVjdGx5IHdoZW4gdXNpbmcgb3VyIG93biBjb2xvciB1dGlscyBgcmdiVG9IZXgoKWBcbiAgICAvLyBzbyB3ZSBhdHRlbXB0IHRvIHJvdW5kIHRvIG5lYXJlc3QgaW50ZWdlciBoZXJlXG4gICAgPy5tYXAoY2hhbm5lbE51bWJlciA9PiBNYXRoLnJvdW5kKGNoYW5uZWxOdW1iZXIpKSBhcyBSR0JDb2xvciB8IG51bGw7XG5cbiAgcmV0dXJuIG5ld0JhY2tncm91bmRDb2xvckFzUkdCQXJyYXkgfHwgYmFja3VwQmFja2dyb3VuZENvbG9yO1xufVxuXG4vLyBkZXRlcm1pbmUgbmV3IGJhY2tncm91bmRDb2xvciBmcm9tIGVpdGhlciBwcmV2aW91cyBzdGF0ZSBiYXNlbWFwIHN0eWxlLCBwcmV2aW91cyBzdGF0ZSBiYWNrZ3JvdW5kQ29sb3IsIG9yIHRoZSBERUZBVUxUX0JBQ0tHUk9VTkRfQ09MT1JcbmZ1bmN0aW9uIGdldEJhY2tncm91bmRDb2xvcihwcmV2aW91c1N0YXRlOiBNYXBTdHlsZSwgc3R5bGVUeXBlOiBzdHJpbmcpIHtcbiAgY29uc3QgcHJldmlvdXNTdGF0ZU1hcFN0eWxlID0gcHJldmlvdXNTdGF0ZS5tYXBTdHlsZXNbcHJldmlvdXNTdGF0ZS5zdHlsZVR5cGVdO1xuICBjb25zdCBiYWNrdXBCYWNrZ3JvdW5kQ29sb3IgPSBwcmV2aW91c1N0YXRlLmJhY2tncm91bmRDb2xvciB8fCBERUZBVUxUX0JBQ0tHUk9VTkRfQ09MT1I7XG4gIGNvbnN0IGJhY2tncm91bmRDb2xvciA9XG4gICAgc3R5bGVUeXBlID09PSBOT19NQVBfSURcbiAgICAgID8gLy8gaWYgdGhlIHN0eWxlIGhhcyBzd2l0Y2hlZCB0byB0aGUgXCJubyBiYXNlbWFwXCIgc3R5bGUsXG4gICAgICAgIC8vIGF0dGVtcHQgdG8gZGV0ZWN0IGJhY2tncm91bmRDb2xvciBvZiB0aGUgcHJldmlvdXMgYmFzZW1hcCBpZiBpdCB3YXMgYSBtYXBib3ggYmFzZW1hcFxuICAgICAgICAvLyBhbmQgc2V0IGl0IGFzIHRoZSBcIm5vIGJhc2VtYXBcIiBiYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgZ2V0QmFja2dyb3VuZENvbG9yRnJvbVN0eWxlQmFzZUxheWVyKHByZXZpb3VzU3RhdGVNYXBTdHlsZSwgYmFja3VwQmFja2dyb3VuZENvbG9yKVxuICAgICAgOiAvLyBvdGhlcndpc2UgbGVhdmUgaXQgYWxvbmUgYW5kIHJlbHkgb24gdGhlIHByZXZpb3VzIHN0YXRlJ3MgcHJlZXhpc3RpbmcgYmFja2dyb3VuZENvbG9yXG4gICAgICAgIC8vIG9yIERFRkFVTFRfQkFDS0dST1VORF9DT0xPUiBhcyBhIGxhc3QgcmVzb3J0XG4gICAgICAgIGJhY2t1cEJhY2tncm91bmRDb2xvcjtcblxuICByZXR1cm4gYmFja2dyb3VuZENvbG9yO1xufVxuXG5mdW5jdGlvbiBnZXRMYXllckdyb3Vwc0Zyb21TdHlsZShzdHlsZSkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShzdHlsZT8ubGF5ZXJzKVxuICAgID8gREVGQVVMVF9MQVlFUl9HUk9VUFMuZmlsdGVyKGxnID0+IHN0eWxlLmxheWVycy5maWx0ZXIobGcuZmlsdGVyKS5sZW5ndGgpXG4gICAgOiBbXTtcbn1cblxuLy8gVXBkYXRlcnNcblxuLyoqXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVxdWVzdE1hcFN0eWxlc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge3BheWxvYWQ6IHttYXBTdHlsZXMsIG9uU3VjY2Vzc319OiBNYXBTdHlsZUFjdGlvbnMuUmVxdWVzdE1hcFN0eWxlc1VwZGF0ZXJBY3Rpb25cbik6IE1hcFN0eWxlID0+IHtcbiAgY29uc3QgdG9Mb2FkID0gT2JqZWN0LmtleXMobWFwU3R5bGVzKS5yZWR1Y2UoXG4gICAgKGFjY3UsIGlkKSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIC4uLighc3RhdGUuaXNMb2FkaW5nW2lkXSA/IHtbaWRdOiBtYXBTdHlsZXNbaWRdfSA6IHt9KVxuICAgIH0pLFxuICAgIHt9XG4gICk7XG4gIGNvbnN0IGxvYWRNYXBTdHlsZVRhc2tzID0gZ2V0TG9hZE1hcFN0eWxlVGFza3MoXG4gICAgdG9Mb2FkLFxuICAgIHN0YXRlLm1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgIHN0YXRlLm1hcGJveEFwaVVybCxcbiAgICBvblN1Y2Nlc3NcbiAgKTtcblxuICBjb25zdCBpc0xvYWRpbmcgPSBPYmplY3Qua2V5cyh0b0xvYWQpLnJlZHVjZShcbiAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIFtrZXldOiB0cnVlXG4gICAgfSksXG4gICAge31cbiAgKTtcbiAgY29uc3QgbmV4dFN0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIGlzTG9hZGluZ1xuICB9O1xuICByZXR1cm4gd2l0aFRhc2sobmV4dFN0YXRlLCBsb2FkTWFwU3R5bGVUYXNrcyk7XG59O1xuXG4vKipcbiAqIFByb3BhZ2F0ZSBgbWFwU3R5bGVgIHJlZHVjZXIgd2l0aCBgbWFwYm94QXBpQWNjZXNzVG9rZW5gIGFuZCBgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHRgLlxuICogaWYgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQgaXMgdHJ1ZSBtYXBTdHlsZXMgaXMgZW1wdGllZDsgbG9hZE1hcFN0eWxlc1VwZGF0ZXIoKSB3aWxsXG4gKiBwb3B1bGF0ZSBtYXBTdHlsZXMuXG4gKlxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGluaXRNYXBTdHlsZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge1xuICAgIHBheWxvYWQgPSB7fVxuICB9OiB7XG4gICAgdHlwZT86IHR5cGVvZiBBY3Rpb25UeXBlcy5JTklUO1xuICAgIHBheWxvYWQ6IEtlcGxlckdsSW5pdFBheWxvYWQ7XG4gIH1cbik6IE1hcFN0eWxlID0+ICh7XG4gIC4uLnN0YXRlLFxuICAvLyBzYXZlIG1hcGJveCBhY2Nlc3MgdG9rZW4gdG8gbWFwIHN0eWxlIHN0YXRlXG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBwYXlsb2FkLm1hcGJveEFwaUFjY2Vzc1Rva2VuIHx8IHN0YXRlLm1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICBtYXBib3hBcGlVcmw6IHBheWxvYWQubWFwYm94QXBpVXJsIHx8IHN0YXRlLm1hcGJveEFwaVVybCxcbiAgbWFwU3R5bGVzOiAhcGF5bG9hZC5tYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCA/IHN0YXRlLm1hcFN0eWxlcyA6IHt9LFxuICBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdDogcGF5bG9hZC5tYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCB8fCBmYWxzZVxufSk7XG4vLyB9KTtcblxuLyoqXG4gKiBVcGRhdGUgYHZpc2libGVMYXllckdyb3Vwc2B0byBjaGFuZ2UgbGF5ZXIgZ3JvdXAgdmlzaWJpbGl0eVxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IG1hcENvbmZpZ0NoYW5nZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAgYWN0aW9uOiBNYXBTdHlsZUFjdGlvbnMuTWFwQ29uZmlnQ2hhbmdlVXBkYXRlckFjdGlvblxuKTogTWFwU3R5bGUgPT4ge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIC4uLmFjdGlvbi5wYXlsb2FkLFxuICAgIC4uLmdldE1hcFN0eWxlcyh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC4uLmFjdGlvbi5wYXlsb2FkXG4gICAgfSlcbiAgfTtcbn07XG5cbmNvbnN0IGhhc1N0eWxlT2JqZWN0ID0gc3R5bGUgPT4gaXNQbGFpbk9iamVjdChzdHlsZT8uc3R5bGUpO1xuXG4vKipcbiAqIENoYW5nZSB0byBhbm90aGVyIG1hcCBzdHlsZS4gVGhlIHNlbGVjdGVkIHN0eWxlIHNob3VsZCBhbHJlYWR5IGJlZW4gbG9hZGVkIGludG8gYG1hcFN0eWxlLm1hcFN0eWxlc2BcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge3BheWxvYWQ6IHtzdHlsZVR5cGUsIG9uU3VjY2Vzc319OiBNYXBTdHlsZUFjdGlvbnMuTWFwU3R5bGVDaGFuZ2VVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiB7XG4gIGlmIChcbiAgICAvLyB3ZSBtaWdodCBub3QgaGF2ZSByZWNlaXZlZCB0aGUgc3R5bGUgeWV0XG4gICAgIXN0YXRlLm1hcFN0eWxlc1tzdHlsZVR5cGVdIHx8XG4gICAgLy8gb3IgaWYgaXQgaXMgYSBtYW5hZ2VkIGN1c3RvbSBzdHlsZSBhc3NldFxuICAgIC8vIGFuZCBpZiBpdCBoYXMgbm90IGJlZW4gaHlkcmF0ZWQgd2l0aCBVUkwgaW5mbyB5ZXQgKGR1cmluZyBhcHAgZmlyc3QgaW5pdGlhbGl6YXRpb24pXG4gICAgLy8gYW5kIGl0IGRvZXMgbm90IGhhdmUgYSBzdHlsZSBvYmplY3QgKGR1cmluZyBhZGRpbmcgYSBjdXN0b20gc3R5bGUpXG4gICAgKHN0YXRlLm1hcFN0eWxlc1tzdHlsZVR5cGVdPy5jdXN0b20gPT09ICdNQU5BR0VEJyAmJlxuICAgICAgIXN0YXRlLm1hcFN0eWxlc1tzdHlsZVR5cGVdPy51cmwgJiZcbiAgICAgICFoYXNTdHlsZU9iamVjdChzdGF0ZS5tYXBTdHlsZXNbc3R5bGVUeXBlXSkpXG4gICkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGlmICghaGFzU3R5bGVPYmplY3Qoc3RhdGUubWFwU3R5bGVzW3N0eWxlVHlwZV0pKSB7XG4gICAgLy8gc3R5bGUgaGFzbid0IGxvYWRlZCB5ZXRcbiAgICByZXR1cm4gcmVxdWVzdE1hcFN0eWxlc1VwZGF0ZXIoXG4gICAgICB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzdHlsZVR5cGVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICBtYXBTdHlsZXM6IHtcbiAgICAgICAgICAgIFtzdHlsZVR5cGVdOiBzdGF0ZS5tYXBTdHlsZXNbc3R5bGVUeXBlXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25TdWNjZXNzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgY29uc3QgZGVmYXVsdExHVmlzaWJpbGl0eSA9IGdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eShzdGF0ZS5tYXBTdHlsZXNbc3R5bGVUeXBlXSk7XG5cbiAgY29uc3QgdmlzaWJsZUxheWVyR3JvdXBzID0gbWVyZ2VMYXllckdyb3VwVmlzaWJpbGl0eShcbiAgICBkZWZhdWx0TEdWaXNpYmlsaXR5LFxuICAgIHN0YXRlLnZpc2libGVMYXllckdyb3Vwc1xuICApO1xuXG4gIGNvbnN0IHRocmVlREJ1aWxkaW5nQ29sb3I6IFJHQkNvbG9yID0gc3RhdGUuY3VzdG9tM0RCdWlsZGluZ0NvbG9yXG4gICAgPyBzdGF0ZS50aHJlZURCdWlsZGluZ0NvbG9yXG4gICAgOiBnZXQzREJ1aWxkaW5nQ29sb3Ioc3RhdGUubWFwU3R5bGVzW3N0eWxlVHlwZV0pO1xuXG4gIC8vIGRldGVybWluZSBuZXcgYmFja2dyb3VuZENvbG9yIGZyb20gZWl0aGVyIHByZXZpb3VzIHN0YXRlIGJhc2VtYXAgc3R5bGUsIHByZXZpb3VzIHN0YXRlIGJhY2tncm91bmRDb2xvciwgb3IgdGhlIERFRkFVTFRfQkFDS0dST1VORF9DT0xPUlxuICBjb25zdCBiYWNrZ3JvdW5kQ29sb3IgPSBnZXRCYWNrZ3JvdW5kQ29sb3Ioc3RhdGUsIHN0eWxlVHlwZSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBzdHlsZVR5cGUsXG4gICAgdmlzaWJsZUxheWVyR3JvdXBzLFxuICAgIHRocmVlREJ1aWxkaW5nQ29sb3IsXG4gICAgYmFja2dyb3VuZENvbG9yLFxuICAgIC4uLmdldE1hcFN0eWxlcyh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHZpc2libGVMYXllckdyb3VwcyxcbiAgICAgIHN0eWxlVHlwZVxuICAgIH0pXG4gIH07XG59O1xuXG4vKipcbiAqIENhbGxiYWNrIHdoZW4gbG9hZCBtYXAgc3R5bGUgc3VjY2Vzc1xuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRNYXBTdHlsZXNVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3R5bGUsXG4gIGFjdGlvbjogTWFwU3R5bGVBY3Rpb25zLkxvYWRNYXBTdHlsZXNVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiB7XG4gIGNvbnN0IHtuZXdTdHlsZXMsIG9uU3VjY2Vzc30gPSBhY3Rpb24ucGF5bG9hZCB8fCB7fTtcblxuICBjb25zdCBhZGRMYXllckdyb3VwcyA9IE9iamVjdC5rZXlzKG5ld1N0eWxlcykucmVkdWNlKFxuICAgIChhY2N1LCBpZCkgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICBbaWRdOiB7XG4gICAgICAgIC4uLm5ld1N0eWxlc1tpZF0sXG4gICAgICAgIGxheWVyR3JvdXBzOiBuZXdTdHlsZXNbaWRdLmxheWVyR3JvdXBzIHx8IGdldExheWVyR3JvdXBzRnJvbVN0eWxlKG5ld1N0eWxlc1tpZF0uc3R5bGUpXG4gICAgICB9XG4gICAgfSksXG4gICAge31cbiAgKTtcbiAgLy8gcmVzZXQgaXNMb2FkaW5nXG4gIGNvbnN0IGlzTG9hZGluZyA9IE9iamVjdC5rZXlzKHN0YXRlLmlzTG9hZGluZykucmVkdWNlKFxuICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgLi4uKHN0YXRlLmlzTG9hZGluZ1trZXldICYmIGhhc1N0eWxlT2JqZWN0KG5ld1N0eWxlc1trZXldKVxuICAgICAgICA/IHtba2V5XTogZmFsc2V9XG4gICAgICAgIDoge1trZXldOiBzdGF0ZS5pc0xvYWRpbmdba2V5XX0pXG4gICAgfSksXG4gICAge31cbiAgKTtcbiAgLy8gYWRkIG5ldyBzdHlsZXMgdG8gc3RhdGVcbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgaXNMb2FkaW5nLFxuICAgIG1hcFN0eWxlczoge1xuICAgICAgLi4uc3RhdGUubWFwU3R5bGVzLFxuICAgICAgLi4uYWRkTGF5ZXJHcm91cHNcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgdGFza3MgPSBjcmVhdGVBY3Rpb25UYXNrKG9uU3VjY2Vzcywge3N0eWxlVHlwZTogc3RhdGUuc3R5bGVUeXBlfSk7XG5cbiAgY29uc3QgbmV4dFN0YXRlID0gbmV3U3R5bGVzW3N0YXRlLnN0eWxlVHlwZV1cbiAgICA/IG1hcFN0eWxlQ2hhbmdlVXBkYXRlcihuZXdTdGF0ZSwge3BheWxvYWQ6IHtzdHlsZVR5cGU6IHN0YXRlLnN0eWxlVHlwZX19KVxuICAgIDogbmV3U3RhdGU7XG5cbiAgcmV0dXJuIHRhc2tzID8gd2l0aFRhc2sobmV4dFN0YXRlLCB0YXNrcykgOiBuZXh0U3RhdGU7XG59O1xuXG5mdW5jdGlvbiBjcmVhdGVBY3Rpb25UYXNrKGFjdGlvbiwgcGF5bG9hZCkge1xuICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBBQ1RJT05fVEFTSygpLm1hcCgoKSA9PiBhY3Rpb24ocGF5bG9hZCkpO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQ2FsbGJhY2sgd2hlbiBsb2FkIG1hcCBzdHlsZSBlcnJvclxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuLy8gZG8gbm90aGluZyBmb3Igbm93LCBpZiBkaWRuJ3QgbG9hZCwgc2tpcCBpdFxuZXhwb3J0IGNvbnN0IGxvYWRNYXBTdHlsZUVyclVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge3BheWxvYWQ6IHtpZHMsIGVycm9yfX06IE1hcFN0eWxlQWN0aW9ucy5Mb2FkTWFwU3R5bGVFcnJVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiB7XG4gIENvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAvLyByZXNldCBpc0xvYWRpbmdcbiAgY29uc3QgaXNMb2FkaW5nID0gT2JqZWN0LmtleXMoc3RhdGUuaXNMb2FkaW5nKS5yZWR1Y2UoXG4gICAgKGFjY3UsIGtleSkgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICAuLi4oc3RhdGUuaXNMb2FkaW5nW2tleV0gJiYgKGlkcyB8fCBbXSkuaW5jbHVkZXMoa2V5KVxuICAgICAgICA/IHtba2V5XTogZmFsc2V9XG4gICAgICAgIDoge1trZXldOiBzdGF0ZS5pc0xvYWRpbmdba2V5XX0pXG4gICAgfSksXG4gICAge31cbiAgKTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGlzTG9hZGluZ1xuICB9O1xufTtcblxuLyoqXG4gKiBMb2FkIG1hcCBzdHlsZSBvYmplY3Qgd2hlbiBwYXNzIGluIHNhdmVkIG1hcCBjb25maWdcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYG1hcFN0eWxlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIHNhdmVkIG1hcCBjb25maWcgYHttYXBTdHlsZSwgdmlzU3RhdGUsIG1hcFN0YXRlfWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZSBvciBgcmVhY3QtcGFtYCB0YXNrcyB0byBsb2FkIG1hcCBzdHlsZSBvYmplY3RcbiAqL1xuZXhwb3J0IGNvbnN0IHJlY2VpdmVNYXBDb25maWdVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3R5bGUsXG4gIHtcbiAgICBwYXlsb2FkOiB7Y29uZmlnfVxuICB9OiB7XG4gICAgdHlwZT86IHR5cGVvZiBBY3Rpb25UeXBlcy5SRUNFSVZFX01BUF9DT05GSUc7XG4gICAgcGF5bG9hZDogUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQ7XG4gIH1cbik6IE1hcFN0eWxlID0+IHtcbiAgY29uc3Qge21hcFN0eWxlfSA9IGNvbmZpZyB8fCB7fTtcblxuICBpZiAoIW1hcFN0eWxlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgLy8gbWVyZ2UgZGVmYXVsdCBtYXBTdHlsZXNcbiAgY29uc3QgbWVyZ2VkID0gbWFwU3R5bGUubWFwU3R5bGVzXG4gICAgPyB7XG4gICAgICAgIC4uLm1hcFN0eWxlLFxuICAgICAgICBtYXBTdHlsZXM6IHtcbiAgICAgICAgICAuLi5tYXBTdHlsZS5tYXBTdHlsZXMsXG4gICAgICAgICAgLi4uc3RhdGUubWFwU3R5bGVzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA6IG1hcFN0eWxlO1xuXG4gIC8vIHNldCBjdXN0b20zREJ1aWxkaW5nQ29sb3I6IHRydWUgaWYgbWFwU3R5bGUgY29udGFpbnMgdGhyZWVEQnVpbGRpbmdDb2xvclxuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIG1lcmdlZC5jdXN0b20zREJ1aWxkaW5nQ29sb3IgPVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBCb29sZWFuKG1hcFN0eWxlLnRocmVlREJ1aWxkaW5nQ29sb3IpIHx8IG1lcmdlZC5jdXN0b20zREJ1aWxkaW5nQ29sb3I7XG4gIGNvbnN0IG5ld1N0YXRlID0gbWFwQ29uZmlnQ2hhbmdlVXBkYXRlcihzdGF0ZSwge3BheWxvYWQ6IG1lcmdlZH0pO1xuXG4gIHJldHVybiBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIobmV3U3RhdGUsIHtwYXlsb2FkOiB7c3R5bGVUeXBlOiBuZXdTdGF0ZS5zdHlsZVR5cGV9fSk7XG59O1xuXG5mdW5jdGlvbiBnZXRMb2FkTWFwU3R5bGVUYXNrcyhtYXBTdHlsZXMsIG1hcGJveEFwaUFjY2Vzc1Rva2VuLCBtYXBib3hBcGlVcmwsIG9uU3VjY2Vzcykge1xuICByZXR1cm4gW1xuICAgIFRhc2suYWxsKFxuICAgICAgT2JqZWN0LnZhbHVlcyhtYXBTdHlsZXMpXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgLm1hcCgoe2lkLCB1cmwsIGFjY2Vzc1Rva2VufSkgPT4gKHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgICB1cmw6IGdldFN0eWxlRG93bmxvYWRVcmwodXJsLCBhY2Nlc3NUb2tlbiB8fCBtYXBib3hBcGlBY2Nlc3NUb2tlbiwgbWFwYm94QXBpVXJsKVxuICAgICAgICB9KSlcbiAgICAgICAgLm1hcChMT0FEX01BUF9TVFlMRV9UQVNLKVxuICAgICkuYmltYXAoXG4gICAgICAvLyBzdWNjZXNzXG4gICAgICByZXN1bHRzID0+XG4gICAgICAgIGxvYWRNYXBTdHlsZXMoXG4gICAgICAgICAgcmVzdWx0cy5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjdSwge2lkLCBzdHlsZX0pID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjY3UsXG4gICAgICAgICAgICAgIFtpZF06IHtcbiAgICAgICAgICAgICAgICAuLi5tYXBTdHlsZXNbaWRdLFxuICAgICAgICAgICAgICAgIHN0eWxlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge31cbiAgICAgICAgICApLFxuICAgICAgICAgIG9uU3VjY2Vzc1xuICAgICAgICApLFxuICAgICAgLy8gZXJyb3JcbiAgICAgIGVyciA9PiBsb2FkTWFwU3R5bGVFcnIoT2JqZWN0LmtleXMobWFwU3R5bGVzKSwgZXJyKVxuICAgIClcbiAgXTtcbn1cbi8qKlxuICogUmVzZXQgbWFwIHN0eWxlIGNvbmZpZyB0byBpbml0aWFsIHN0YXRlXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGBtYXBTdHlsZWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVzZXRNYXBDb25maWdNYXBTdHlsZVVwZGF0ZXIgPSAoc3RhdGU6IE1hcFN0eWxlKTogTWFwU3R5bGUgPT4ge1xuICBjb25zdCBlbXB0eUNvbmZpZyA9IHtcbiAgICAuLi5JTklUSUFMX01BUF9TVFlMRSxcbiAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RhdGUubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgbWFwYm94QXBpVXJsOiBzdGF0ZS5tYXBib3hBcGlVcmwsXG4gICAgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQ6IHN0YXRlLm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0LFxuICAgIC4uLnN0YXRlLmluaXRpYWxTdGF0ZSxcbiAgICBtYXBTdHlsZXM6IHN0YXRlLm1hcFN0eWxlcyxcbiAgICBpbml0aWFsU3RhdGU6IHN0YXRlLmluaXRpYWxTdGF0ZVxuICB9O1xuXG4gIHJldHVybiBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIoZW1wdHlDb25maWcsIHtwYXlsb2FkOiB7c3R5bGVUeXBlOiBlbXB0eUNvbmZpZy5zdHlsZVR5cGV9fSk7XG59O1xuXG4vKipcbiAqIENhbGxiYWNrIHdoZW4gYSBjdXN0b20gbWFwIHN0eWxlIG9iamVjdCBpcyByZWNlaXZlZFxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRDdXN0b21NYXBTdHlsZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge3BheWxvYWQ6IHtpY29uLCBzdHlsZSwgZXJyb3J9fTogTWFwU3R5bGVBY3Rpb25zLkxvYWRDdXN0b21NYXBTdHlsZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0eWxlID0+ICh7XG4gIC4uLnN0YXRlLFxuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGlucHV0U3R5bGU6IHtcbiAgICAuLi5zdGF0ZS5pbnB1dFN0eWxlLFxuICAgIC8vIHN0eWxlIGpzb24gYW5kIGljb24gd2lsbCBsb2FkIGFzeW5jaHJvbm91c2x5XG4gICAgLi4uKHN0eWxlXG4gICAgICA/IHtcbiAgICAgICAgICBpZDpcbiAgICAgICAgICAgIHN0YXRlLmlucHV0U3R5bGUuY3VzdG9tID09PSAnTUFOQUdFRCdcbiAgICAgICAgICAgICAgPyBzdGF0ZS5pbnB1dFN0eWxlLmlkIC8vIGN1c3RvbSBNQU5BR0VEIHR5cGVcbiAgICAgICAgICAgICAgOiAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgICAgICAgc3R5bGUuaWQgfHwgZ2VuZXJhdGVIYXNoSWQoKSwgLy8gY3VzdG9tIExPQ0FMIHR5cGVcbiAgICAgICAgICAvLyBtYWtlIGEgY29weSBvZiB0aGUgc3R5bGUgb2JqZWN0XG4gICAgICAgICAgc3R5bGU6IGNsb25lRGVlcChzdHlsZSksXG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICAgIGxhYmVsOiBzdGF0ZS5pbnB1dFN0eWxlLmxhYmVsIHx8IHN0eWxlLm5hbWUsXG4gICAgICAgICAgLy8gZ2F0aGVyaW5nIGxheWVyIGdyb3VwIGluZm8gZnJvbSBzdHlsZSBqc29uXG4gICAgICAgICAgbGF5ZXJHcm91cHM6IGdldExheWVyR3JvdXBzRnJvbVN0eWxlKHN0eWxlKVxuICAgICAgICB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4oaWNvbiA/IHtpY29ufSA6IHt9KSxcbiAgICAuLi4oZXJyb3IgIT09IHVuZGVmaW5lZCA/IHtlcnJvcn0gOiB7fSlcbiAgfVxufSk7XG5cbi8qKlxuICogSW5wdXQgYSBjdXN0b20gbWFwIHN0eWxlIG9iamVjdFxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGlucHV0TWFwU3R5bGVVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3R5bGUsXG4gIHtwYXlsb2FkOiB7aW5wdXRTdHlsZSwgbWFwU3RhdGV9fTogTWFwU3R5bGVBY3Rpb25zLklucHV0TWFwU3R5bGVVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiB7XG4gIGNvbnN0IHVwZGF0ZWQgPSB7XG4gICAgLi4uc3RhdGUuaW5wdXRTdHlsZSxcbiAgICAuLi5pbnB1dFN0eWxlXG4gIH07XG5cbiAgLy8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGVpdGhlciBhIHVybCB0byBob3N0ZWQgc3R5bGUganNvbiB0aGF0IG5lZWRzIGFuIGljb24gdXJsLFxuICAvLyBvciBhbiBpY29uIGFscmVhZHkgYXZhaWxhYmxlIGNsaWVudC1zaWRlIGFzIGEgZGF0YSB1cmlcbiAgY29uc3QgaXNVcGRhdGVkSWNvbkRhdGFVcmkgPSB1cGRhdGVkLmljb24/LnN0YXJ0c1dpdGgoJ2RhdGE6aW1hZ2UnKTtcbiAgY29uc3QgaXNNYXBib3hTdHlsZVVybCA9XG4gICAgdXBkYXRlZC51cmw/LnN0YXJ0c1dpdGgoJ21hcGJveDovLycpIHx8IHVwZGF0ZWQudXJsPy5pbmNsdWRlcygnbWFwYm94LmNvbScpO1xuXG4gIGNvbnN0IGljb24gPVxuICAgICFpc1VwZGF0ZWRJY29uRGF0YVVyaSAmJiBpc01hcGJveFN0eWxlVXJsXG4gICAgICA/IC8vIEdldCBpbWFnZSBpY29uIHVybHMgb25seSBmb3IgbWFwYm94IG1hcCBsaWIuXG4gICAgICAgIGdldFN0eWxlSW1hZ2VJY29uKHtcbiAgICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgICBzdHlsZVVybDogdXBkYXRlZC51cmwgfHwgJycsXG4gICAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHVwZGF0ZWQuYWNjZXNzVG9rZW4gfHwgc3RhdGUubWFwYm94QXBpQWNjZXNzVG9rZW4gfHwgJycsXG4gICAgICAgICAgbWFwYm94QXBpVXJsOiBzdGF0ZS5tYXBib3hBcGlVcmwgfHwgREVGQVVMVF9NQVBCT1hfQVBJX1VSTFxuICAgICAgICB9KVxuICAgICAgOiB1cGRhdGVkLmljb247XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBpbnB1dFN0eWxlOiB7XG4gICAgICAuLi51cGRhdGVkLFxuICAgICAgaXNWYWxpZDogdHJ1ZSxcbiAgICAgIGljb25cbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIEFkZCBtYXAgc3R5bGUgZnJvbSB1c2VyIGlucHV0IHRvIHJlZHVjZXIgYW5kIHNldCBpdCB0byBjdXJyZW50IHN0eWxlXG4gKiBUaGlzIGFjdGlvbiBpcyBjYWxsZWQgd2hlbiB1c2VyIGNsaWNrIGNvbmZpcm0gYWZ0ZXIgcHV0dGluZyBpbiBhIHZhbGlkIHN0eWxlIHVybCBpbiB0aGUgY3VzdG9tIG1hcCBzdHlsZSBkaWFsb2cuXG4gKiBJdCBzaG91bGQgbm90IGJlIGNhbGxlZCBmcm9tIG91dHNpZGUga2VwbGVyLmdsIHdpdGhvdXQgYSB2YWxpZCBgaW5wdXRTdHlsZWAgaW4gdGhlIGBtYXBTdHlsZWAgcmVkdWNlci5cbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBhZGRDdXN0b21NYXBTdHlsZVVwZGF0ZXIgPSAoc3RhdGU6IE1hcFN0eWxlKTogTWFwU3R5bGUgPT4ge1xuICBjb25zdCBzdHlsZUlkID0gc3RhdGUuaW5wdXRTdHlsZS5pZDtcbiAgaWYgKCFzdHlsZUlkKSByZXR1cm4gc3RhdGU7XG5cbiAgY29uc3QgbmV3U3RhdGUgPSBnZXROZXdTdGF0ZVdpdGhDdXN0b21NYXBTdHlsZShzdGF0ZSk7XG4gIC8vIHNldCBuZXcgc3R5bGVcbiAgcmV0dXJuIG1hcFN0eWxlQ2hhbmdlVXBkYXRlcihuZXdTdGF0ZSwge3BheWxvYWQ6IHtzdHlsZVR5cGU6IHN0eWxlSWR9fSk7XG59O1xuXG4vKipcbiAqIEVkaXQgbWFwIHN0eWxlIGZyb20gdXNlciBpbnB1dCB0byByZWR1Y2VyLlxuICogVGhpcyBhY3Rpb24gaXMgY2FsbGVkIHdoZW4gdXNlciBjbGlja3MgY29uZmlybSBhZnRlciBlZGl0aW5nIGFuIGV4aXN0aW5nIGN1c3RvbSBzdHlsZSBpbiB0aGUgY3VzdG9tIG1hcCBzdHlsZSBkaWFsb2cuXG4gKiBJdCBzaG91bGQgbm90IGJlIGNhbGxlZCBmcm9tIG91dHNpZGUga2VwbGVyLmdsIHdpdGhvdXQgYSB2YWxpZCBgaW5wdXRTdHlsZWAgaW4gdGhlIGBtYXBTdHlsZWAgcmVkdWNlci5cbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBlZGl0Q3VzdG9tTWFwU3R5bGVVcGRhdGVyID0gKHN0YXRlOiBNYXBTdHlsZSk6IE1hcFN0eWxlID0+IHtcbiAgcmV0dXJuIGdldE5ld1N0YXRlV2l0aEN1c3RvbU1hcFN0eWxlKHN0YXRlKTtcbn07XG5cbmZ1bmN0aW9uIGdldE5ld1N0YXRlV2l0aEN1c3RvbU1hcFN0eWxlKHN0YXRlOiBNYXBTdHlsZSk6IE1hcFN0eWxlIHtcbiAgY29uc3Qgc3R5bGVJZCA9IHN0YXRlLmlucHV0U3R5bGUuaWQ7XG4gIGlmICghc3R5bGVJZCkgcmV0dXJuIHN0YXRlO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBQcm9wZXJ0eSAnbGF5ZXJHcm91cHMnIGlzIG1pc3NpbmcgaW4gdHlwZSAnSW5wdXRTdHlsZScgYnV0IHJlcXVpcmVkIGluIHR5cGUgJ0Jhc2VNYXBTdHlsZScuIExlZ2FjeSBjYXNlP1xuICAgIG1hcFN0eWxlczoge1xuICAgICAgLi4uc3RhdGUubWFwU3R5bGVzLFxuICAgICAgW3N0eWxlSWRdOiB7XG4gICAgICAgIC4uLnN0YXRlLm1hcFN0eWxlc1tzdHlsZUlkXSwgLy8gZG8gbm90IHVuaW50ZW50aW9uYWxseSBkcm9wIGFueSBhZGRpdGlvbmFsIHByb3BlcnRpZXNcbiAgICAgICAgLi4uc3RhdGUuaW5wdXRTdHlsZVxuICAgICAgfVxuICAgIH0sXG4gICAgLy8gc2V0IHRvIGRlZmF1bHRcbiAgICBpbnB1dFN0eWxlOiBnZXRJbml0aWFsSW5wdXRTdHlsZSgpXG4gIH07XG59XG5cbi8qKlxuICogUmVtb3ZlIGEgY3VzdG9tIG1hcCBzdHlsZSBmcm9tIGBzdGF0ZS5tYXBTdHlsZS5tYXBTdHlsZXNgLlxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlbW92ZUN1c3RvbU1hcFN0eWxlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICBhY3Rpb246IE1hcFN0eWxlQWN0aW9ucy5SZW1vdmVDdXN0b21NYXBTdHlsZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0eWxlID0+IHtcbiAgY29uc3Qge2lkfSA9IGFjdGlvbi5wYXlsb2FkO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgY29uc3Qge1tpZF06IF8sIC4uLnJlc3RPZk1hcFN0eWxlc30gPSBzdGF0ZS5tYXBTdHlsZXM7XG5cbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgbWFwU3R5bGVzOiByZXN0T2ZNYXBTdHlsZXNcbiAgfTtcblxuICBpZiAoc3RhdGUuc3R5bGVUeXBlID09PSBpZCkge1xuICAgIC8vIGlmIHJlbW92aW5nIGEgY3VzdG9tIHN0eWxlIHRoYXQgaXMgYWxzbyB0aGUgY3VycmVudCBhY3RpdmUgYmFzZSBtYXAsXG4gICAgLy8gdGhlbiByZXNldCB0byB0aGUgZGVmYXVsdCBhY3RpdmUgYmFzZSBtYXAgKGBtYXBTdHlsZS5zdHlsZVR5cGVgKVxuICAgIHJldHVybiBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIobmV3U3RhdGUsIHtwYXlsb2FkOiB7c3R5bGVUeXBlOiBnZXREZWZhdWx0U3RhdGUoKS5zdHlsZVR5cGV9fSk7XG4gIH1cblxuICByZXR1cm4gbmV3U3RhdGU7XG59O1xuXG4vKipcbiAqIFVwZGF0ZXMgM2QgYnVpbGRpbmcgY29sb3JcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBzZXQzZEJ1aWxkaW5nQ29sb3JVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3R5bGUsXG4gIHtwYXlsb2FkOiBjb2xvcn06IE1hcFN0eWxlQWN0aW9ucy5TZXQzZEJ1aWxkaW5nQ29sb3JVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgdGhyZWVEQnVpbGRpbmdDb2xvcjogY29sb3IsXG4gIGN1c3RvbTNEQnVpbGRpbmdDb2xvcjogdHJ1ZVxufSk7XG5cbi8qKlxuICogVXBkYXRlcyBiYWNrZ3JvdW5kIGNvbG9yXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICovXG5leHBvcnQgY29uc3Qgc2V0QmFja2dyb3VuZENvbG9yVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICB7cGF5bG9hZDogY29sb3J9OiBNYXBTdHlsZUFjdGlvbnMuU2V0QmFja2dyb3VuZENvbG9yVXBkYXRlckFjdGlvblxuKTogTWFwU3R5bGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGJhY2tncm91bmRDb2xvcjogY29sb3Jcbn0pO1xuXG4vKipcbiAqIFJldHVybiB0aGUgaW5pdGlhbCBpbnB1dCBzdHlsZVxuICogQHJldHVybiBPYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEluaXRpYWxJbnB1dFN0eWxlKCk6IElucHV0U3R5bGUge1xuICByZXR1cm4ge1xuICAgIGlkOiBudWxsLFxuICAgIGFjY2Vzc1Rva2VuOiBudWxsLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICBsYWJlbDogbnVsbCxcbiAgICBzdHlsZTogbnVsbCxcbiAgICB1cmw6IG51bGwsXG4gICAgaWNvbjogbnVsbCxcbiAgICBjdXN0b206ICdMT0NBTCcsXG4gICAgdXBsb2FkZWRGaWxlOiBudWxsXG4gIH07XG59XG4iXSwibWFwcGluZ3Mi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
656
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGFza3MiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY2xvbmVEZWVwIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb25zb2xlIiwiX3V0aWxzIiwiX2NvbW1vblV0aWxzIiwiX2NvbnN0YW50cyIsIl90YXNrczIiLCJfZDNDb2xvciIsIl9hY3Rpb25zIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImdldERlZmF1bHRTdGF0ZSIsInZpc2libGVMYXllckdyb3VwcyIsInRvcExheWVyR3JvdXBzIiwic3R5bGVUeXBlIiwiREVGQVVMVF9CQVNFX01BUF9TVFlMRSIsIm1hcFN0eWxlcyIsIkRFRkFVTFRfTUFQX1NUWUxFUyIsInJlZHVjZSIsImFjY3UiLCJjdXJyIiwiaWQiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsIkRFRkFVTFRfTUFQQk9YX0FQSV9VUkwiLCJtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCIsImlucHV0U3R5bGUiLCJnZXRJbml0aWFsSW5wdXRTdHlsZSIsInRocmVlREJ1aWxkaW5nQ29sb3IiLCJoZXhUb1JnYiIsIkRFRkFVTFRfQkxER19DT0xPUiIsImN1c3RvbTNEQnVpbGRpbmdDb2xvciIsImJhY2tncm91bmRDb2xvciIsIkRFRkFVTFRfQkFDS0dST1VORF9DT0xPUiIsImlzTG9hZGluZyIsImJvdHRvbU1hcFN0eWxlIiwidW5kZWZpbmVkIiwidG9wTWFwU3R5bGUiLCJtYXBTdHlsZVVwZGF0ZXJzIiwiSU5JVElBTF9NQVBfU1RZTEUiLCJleHBvcnRzIiwiZ2V0TWFwU3R5bGVzIiwiX3JlZiIsIm1hcFN0eWxlIiwic3R5bGUiLCJlZGl0YWJsZSIsImVkaXRCb3R0b21NYXBTdHlsZSIsImhhc1RvcExheWVyIiwidmFsdWVzIiwic29tZSIsInYiLCJ0b3BMYXllcnMiLCJrZXkiLCJlZGl0VG9wTWFwU3R5bGUiLCJmaW5kTGF5ZXJGaWxsQ29sb3IiLCJsYXllciIsInBhaW50IiwiZ2V0UGFpbnRDb2xvciIsImNvbG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiZ2V0M0RCdWlsZGluZ0NvbG9yIiwiYmFja2dyb3VuZExheWVyIiwibGF5ZXJzIiwiZmluZCIsIl9yZWYyIiwiYnVpbGRpbmdMYXllciIsIl9yZWYzIiwibWF0Y2giLCJidWlsZGluZ0NvbG9yIiwib3BlcmF0aW9uIiwiYWxwaGEiLCJyZ2JPYmoiLCJyZ2IiLCJnIiwiYiIsImdldEJhY2tncm91bmRDb2xvckZyb21TdHlsZUJhc2VMYXllciIsImJhY2t1cEJhY2tncm91bmRDb2xvciIsIl9jb2xvck1heWJlVG9SR0IiLCJjb2xvck1heWJlVG9SR0IiLCJiYXNlTGF5ZXIiLCJfcmVmNCIsIkJBU0VfTUFQX0JBQ0tHUk9VTkRfTEFZRVJfSURTIiwiaW5jbHVkZXMiLCJiYWNrZ3JvdW5kQ29sb3JPZkJhc2VMYXllciIsIm5ld0JhY2tncm91bmRDb2xvciIsIm5ld0JhY2tncm91bmRDb2xvckFzUkdCQXJyYXkiLCJtYXAiLCJjaGFubmVsTnVtYmVyIiwiTWF0aCIsInJvdW5kIiwiZ2V0QmFja2dyb3VuZENvbG9yIiwicHJldmlvdXNTdGF0ZSIsInByZXZpb3VzU3RhdGVNYXBTdHlsZSIsIk5PX01BUF9JRCIsImdldExheWVyR3JvdXBzRnJvbVN0eWxlIiwiREVGQVVMVF9MQVlFUl9HUk9VUFMiLCJsZyIsInJlcXVlc3RNYXBTdHlsZXNVcGRhdGVyIiwic3RhdGUiLCJfcmVmNSIsIl9yZWY1JHBheWxvYWQiLCJwYXlsb2FkIiwib25TdWNjZXNzIiwidG9Mb2FkIiwibG9hZE1hcFN0eWxlVGFza3MiLCJnZXRMb2FkTWFwU3R5bGVUYXNrcyIsIm5leHRTdGF0ZSIsIndpdGhUYXNrIiwiaW5pdE1hcFN0eWxlVXBkYXRlciIsIl9yZWY3IiwiX3JlZjckcGF5bG9hZCIsIm1hcENvbmZpZ0NoYW5nZVVwZGF0ZXIiLCJhY3Rpb24iLCJoYXNTdHlsZU9iamVjdCIsImlzUGxhaW5PYmplY3QiLCJtYXBTdHlsZUNoYW5nZVVwZGF0ZXIiLCJfcmVmOCIsIl9zdGF0ZSRtYXBTdHlsZXMkc3R5bCIsIl9zdGF0ZSRtYXBTdHlsZXMkc3R5bDIiLCJfcmVmOCRwYXlsb2FkIiwiY3VzdG9tIiwidXJsIiwiZGVmYXVsdExHVmlzaWJpbGl0eSIsImdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eSIsIm1lcmdlTGF5ZXJHcm91cFZpc2liaWxpdHkiLCJsb2FkTWFwU3R5bGVzVXBkYXRlciIsIl9yZWY5IiwibmV3U3R5bGVzIiwiYWRkTGF5ZXJHcm91cHMiLCJsYXllckdyb3VwcyIsIm5ld1N0YXRlIiwidGFza3MiLCJjcmVhdGVBY3Rpb25UYXNrIiwiQUNUSU9OX1RBU0siLCJsb2FkTWFwU3R5bGVFcnJVcGRhdGVyIiwiX3JlZjEyIiwiX3JlZjEyJHBheWxvYWQiLCJpZHMiLCJlcnJvciIsIkNvbnNvbGUiLCJyZWNlaXZlTWFwQ29uZmlnVXBkYXRlciIsIl9yZWYxNSIsImNvbmZpZyIsIl9yZWYxNiIsIm1lcmdlZCIsIkJvb2xlYW4iLCJUYXNrIiwiYWxsIiwiX3JlZjE3IiwiYWNjZXNzVG9rZW4iLCJnZXRTdHlsZURvd25sb2FkVXJsIiwiTE9BRF9NQVBfU1RZTEVfVEFTSyIsImJpbWFwIiwicmVzdWx0cyIsImxvYWRNYXBTdHlsZXMiLCJfcmVmMTgiLCJlcnIiLCJsb2FkTWFwU3R5bGVFcnIiLCJyZXNldE1hcENvbmZpZ01hcFN0eWxlVXBkYXRlciIsImVtcHR5Q29uZmlnIiwiaW5pdGlhbFN0YXRlIiwibG9hZEN1c3RvbU1hcFN0eWxlVXBkYXRlciIsIl9yZWYxOSIsIl9yZWYxOSRwYXlsb2FkIiwiaWNvbiIsImdlbmVyYXRlSGFzaElkIiwiY2xvbmVEZWVwIiwibGFiZWwiLCJuYW1lIiwiaW5wdXRNYXBTdHlsZVVwZGF0ZXIiLCJfcmVmMjAiLCJfdXBkYXRlZCRpY29uIiwiX3VwZGF0ZWQkdXJsIiwiX3VwZGF0ZWQkdXJsMiIsIl9yZWYyMCRwYXlsb2FkIiwibWFwU3RhdGUiLCJ1cGRhdGVkIiwiaXNVcGRhdGVkSWNvbkRhdGFVcmkiLCJzdGFydHNXaXRoIiwiaXNNYXBib3hTdHlsZVVybCIsImdldFN0eWxlSW1hZ2VJY29uIiwic3R5bGVVcmwiLCJpc1ZhbGlkIiwiYWRkQ3VzdG9tTWFwU3R5bGVVcGRhdGVyIiwic3R5bGVJZCIsImdldE5ld1N0YXRlV2l0aEN1c3RvbU1hcFN0eWxlIiwiZWRpdEN1c3RvbU1hcFN0eWxlVXBkYXRlciIsInJlbW92ZUN1c3RvbU1hcFN0eWxlVXBkYXRlciIsIl9zdGF0ZSRtYXBTdHlsZXMiLCJfIiwicmVzdE9mTWFwU3R5bGVzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsInNldDNkQnVpbGRpbmdDb2xvclVwZGF0ZXIiLCJfcmVmMjEiLCJzZXRCYWNrZ3JvdW5kQ29sb3JVcGRhdGVyIiwiX3JlZjIyIiwidXBsb2FkZWRGaWxlIl0sInNvdXJjZXMiOlsiLi4vc3JjL21hcC1zdHlsZS11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgVGFzaywge3dpdGhUYXNrfSBmcm9tICdyZWFjdC1wYWxtL3Rhc2tzJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5pbXBvcnQgQ29uc29sZSBmcm9tICdnbG9iYWwvY29uc29sZSc7XG5cbi8vIFV0aWxzXG5pbXBvcnQge1xuICBnZXREZWZhdWx0TGF5ZXJHcm91cFZpc2liaWxpdHksXG4gIGdldFN0eWxlRG93bmxvYWRVcmwsXG4gIG1lcmdlTGF5ZXJHcm91cFZpc2liaWxpdHksXG4gIGVkaXRUb3BNYXBTdHlsZSxcbiAgZWRpdEJvdHRvbU1hcFN0eWxlLFxuICBnZXRTdHlsZUltYWdlSWNvbixcbiAgaXNQbGFpbk9iamVjdCxcbiAgaGV4VG9SZ2IsXG4gIGNvbG9yTWF5YmVUb1JHQlxufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7Z2VuZXJhdGVIYXNoSWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7XG4gIERFRkFVTFRfTUFQX1NUWUxFUyxcbiAgREVGQVVMVF9MQVlFUl9HUk9VUFMsXG4gIERFRkFVTFRfTUFQQk9YX0FQSV9VUkwsXG4gIE5PX01BUF9JRCxcbiAgREVGQVVMVF9CTERHX0NPTE9SLFxuICBERUZBVUxUX0JBQ0tHUk9VTkRfQ09MT1IsXG4gIEJBU0VfTUFQX0JBQ0tHUk9VTkRfTEFZRVJfSURTLFxuICBERUZBVUxUX0JBU0VfTUFQX1NUWUxFXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7QUNUSU9OX1RBU0ssIExPQURfTUFQX1NUWUxFX1RBU0t9IGZyb20gJ0BrZXBsZXIuZ2wvdGFza3MnO1xuaW1wb3J0IHtyZ2J9IGZyb20gJ2QzLWNvbG9yJztcblxuaW1wb3J0IHtcbiAgUkdCQ29sb3IsXG4gIExheWVyR3JvdXAsXG4gIEJhc2VNYXBTdHlsZSxcbiAgTWFwU3R5bGVzLFxuICBJbnB1dFN0eWxlLFxuICBWaXNpYmxlTGF5ZXJHcm91cHNcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBBY3Rpb25UeXBlcyxcbiAgUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQsXG4gIEtlcGxlckdsSW5pdFBheWxvYWQsXG4gIE1hcFN0eWxlQWN0aW9ucyxcbiAgbG9hZE1hcFN0eWxlcyxcbiAgbG9hZE1hcFN0eWxlRXJyXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5cbmV4cG9ydCB0eXBlIE1hcGJveFN0eWxlVXJsID0gc3RyaW5nO1xuXG5leHBvcnQgdHlwZSBNYXBTdHlsZSA9IHtcbiAgc3R5bGVUeXBlOiBzdHJpbmc7XG4gIHZpc2libGVMYXllckdyb3VwczogVmlzaWJsZUxheWVyR3JvdXBzO1xuICB0b3BMYXllckdyb3VwczogVmlzaWJsZUxheWVyR3JvdXBzO1xuICBtYXBTdHlsZXM6IE1hcFN0eWxlcztcbiAgLy8gc2F2ZSBtYXBib3ggYWNjZXNzIHRva2VuXG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBzdHJpbmcgfCBudWxsO1xuICBtYXBib3hBcGlVcmw6IHN0cmluZztcbiAgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQ6IGJvb2xlYW47XG4gIGlucHV0U3R5bGU6IElucHV0U3R5bGU7XG4gIHRocmVlREJ1aWxkaW5nQ29sb3I6IFJHQkNvbG9yO1xuICBiYWNrZ3JvdW5kQ29sb3I6IFJHQkNvbG9yO1xuICBjdXN0b20zREJ1aWxkaW5nQ29sb3I6IGJvb2xlYW47XG4gIGJvdHRvbU1hcFN0eWxlOiBhbnk7XG4gIHRvcE1hcFN0eWxlOiBhbnk7XG4gIGluaXRpYWxTdGF0ZT86IE1hcFN0eWxlO1xuICBpc0xvYWRpbmc6IHtcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xuICB9O1xufTtcblxuY29uc3QgZ2V0RGVmYXVsdFN0YXRlID0gKCk6IE1hcFN0eWxlID0+IHtcbiAgY29uc3QgdmlzaWJsZUxheWVyR3JvdXBzID0ge307XG4gIGNvbnN0IHRvcExheWVyR3JvdXBzID0ge307XG5cbiAgcmV0dXJuIHtcbiAgICBzdHlsZVR5cGU6IERFRkFVTFRfQkFTRV9NQVBfU1RZTEUsXG4gICAgdmlzaWJsZUxheWVyR3JvdXBzLFxuICAgIHRvcExheWVyR3JvdXBzLFxuICAgIG1hcFN0eWxlczogREVGQVVMVF9NQVBfU1RZTEVTLnJlZHVjZShcbiAgICAgIChhY2N1LCBjdXJyKSA9PiAoe1xuICAgICAgICAuLi5hY2N1LFxuICAgICAgICBbY3Vyci5pZF06IGN1cnJcbiAgICAgIH0pLFxuICAgICAge31cbiAgICApLFxuICAgIC8vIHNhdmUgbWFwYm94IGFjY2VzcyB0b2tlblxuICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBudWxsLFxuICAgIG1hcGJveEFwaVVybDogREVGQVVMVF9NQVBCT1hfQVBJX1VSTCxcbiAgICBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdDogZmFsc2UsXG4gICAgaW5wdXRTdHlsZTogZ2V0SW5pdGlhbElucHV0U3R5bGUoKSxcbiAgICB0aHJlZURCdWlsZGluZ0NvbG9yOiBoZXhUb1JnYihERUZBVUxUX0JMREdfQ09MT1IpLFxuICAgIGN1c3RvbTNEQnVpbGRpbmdDb2xvcjogZmFsc2UsXG4gICAgYmFja2dyb3VuZENvbG9yOiBoZXhUb1JnYihERUZBVUxUX0JBQ0tHUk9VTkRfQ09MT1IpLFxuICAgIGlzTG9hZGluZzoge30sXG4gICAgYm90dG9tTWFwU3R5bGU6IHVuZGVmaW5lZCxcbiAgICB0b3BNYXBTdHlsZTogdW5kZWZpbmVkXG4gIH07XG59O1xuXG4vKipcbiAqIFVwZGF0ZXJzIGZvciBgbWFwU3R5bGVgLiBDYW4gYmUgdXNlZCBpbiB5b3VyIHJvb3QgcmVkdWNlciB0byBkaXJlY3RseSBtb2RpZnkga2VwbGVyLmdsJ3Mgc3RhdGUuXG4gKiBSZWFkIG1vcmUgYWJvdXQgW1VzaW5nIHVwZGF0ZXJzXSguLi9hZHZhbmNlZC11c2FnZS91c2luZy11cGRhdGVycy5tZClcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKlxuICogaW1wb3J0IGtlcGxlckdsUmVkdWNlciwge21hcFN0eWxlVXBkYXRlcnN9IGZyb20gJ2tlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBjbGljayBidXR0b24gdG8gaGlkZSBsYWJlbCBmcm9tIGJhY2tncm91bmQgbWFwXG4gKiAgICBjYXNlICdDTElDS19CVVRUT04nOlxuICogICAgICByZXR1cm4ge1xuICogICAgICAgIC4uLnN0YXRlLFxuICogICAgICAgIGtlcGxlckdsOiB7XG4gKiAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbCxcbiAqICAgICAgICAgIGZvbzoge1xuICogICAgICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wuZm9vLFxuICogICAgICAgICAgICAgbWFwU3R5bGU6IG1hcFN0eWxlVXBkYXRlcnMubWFwQ29uZmlnQ2hhbmdlVXBkYXRlcihcbiAqICAgICAgICAgICAgICAgbWFwU3R5bGUsXG4gKiAgICAgICAgICAgICAgIHtwYXlsb2FkOiB7dmlzaWJsZUxheWVyR3JvdXBzOiB7bGFiZWw6IGZhbHNlLCByb2FkOiB0cnVlLCBiYWNrZ3JvdW5kOiB0cnVlfX19XG4gKiAgICAgICAgICAgICApXG4gKiAgICAgICAgICB9XG4gKiAgICAgICAgfVxuICogICAgICB9O1xuICogIH1cbiAqICByZXR1cm4gcmVkdWNlcnMoc3RhdGUsIGFjdGlvbik7XG4gKiB9O1xuICpcbiAqIGV4cG9ydCBkZWZhdWx0IGNvbXBvc2VkUmVkdWNlcjtcbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IG1hcFN0eWxlVXBkYXRlcnMgPSBudWxsO1xuLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBtYXBTdHlsZWBcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBzdHlsZVR5cGUgLSBEZWZhdWx0OiBgJ2RhcmsnYFxuICogQHByb3BlcnR5IHZpc2libGVMYXllckdyb3VwcyAtIERlZmF1bHQ6IGB7fWBcbiAqIEBwcm9wZXJ0eSB0b3BMYXllckdyb3VwcyAtIERlZmF1bHQ6IGB7fWBcbiAqIEBwcm9wZXJ0eSBtYXBTdHlsZXMgLSBtYXBwaW5nIGZyb20gc3R5bGUga2V5IHRvIHN0eWxlIG9iamVjdFxuICogQHByb3BlcnR5IG1hcGJveEFwaUFjY2Vzc1Rva2VuIC0gRGVmYXVsdDogYG51bGxgXG4gKiBAUHJvcGVydHkgbWFwYm94QXBpVXJsIC0gRGVmYXVsdCBudWxsXG4gKiBAUHJvcGVydHkgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQgLSBEZWZhdWx0OiBgZmFsc2VgXG4gKiBAcHJvcGVydHkgaW5wdXRTdHlsZSAtIERlZmF1bHQ6IGB7fWBcbiAqIEBwcm9wZXJ0eSB0aHJlZURCdWlsZGluZ0NvbG9yIC0gRGVmYXVsdDogYFtyLCBnLCBiXWBcbiAqIEBwcm9wZXJ0eSBiYWNrZ3JvdW5kQ29sb3IgLSBEZWZhdWx0OiBgW3IsIGcsIGJdYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9NQVBfU1RZTEU6IE1hcFN0eWxlID0gZ2V0RGVmYXVsdFN0YXRlKCk7XG5cbmludGVyZmFjZSBHZXRNYXBTdHlsZXNQYXJhbSB7XG4gIHN0eWxlVHlwZTogc3RyaW5nO1xuICB2aXNpYmxlTGF5ZXJHcm91cHM6IHtbaWQ6IHN0cmluZ106IExheWVyR3JvdXAgfCBib29sZWFufTtcbiAgdG9wTGF5ZXJHcm91cHM6IHtbaWQ6IHN0cmluZ106IExheWVyR3JvdXAgfCBib29sZWFufTtcbiAgbWFwU3R5bGVzOiB7W2lkOiBzdHJpbmddOiBhbnl9O1xufVxuXG4vKipcbiAqIENyZWF0ZSB0d28gbWFwIHN0eWxlcyBmcm9tIHByZXNldCBtYXAgc3R5bGUsIG9uZSBmb3IgdG9wIG1hcCBvbmUgZm9yIGJvdHRvbVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHlsZVR5cGUgLSBjdXJyZW50IG1hcCBzdHlsZVxuICogQHBhcmFtIHtPYmplY3R9IHZpc2libGVMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIGJvdHRvbSBtYXBcbiAqIEBwYXJhbSB7T2JqZWN0fSB0b3BMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIHRvcCBtYXBcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXBTdHlsZXMgLSBhIGRpY3Rpb25hcnkgb2YgYWxsIG1hcCBzdHlsZXNcbiAqIEByZXR1cm5zIHtPYmplY3R9IGJvdHRvbU1hcFN0eWxlIHwgdG9wTWFwU3R5bGUgfCBpc1Jhc3RlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFwU3R5bGVzKHtcbiAgc3R5bGVUeXBlLFxuICB2aXNpYmxlTGF5ZXJHcm91cHMsXG4gIHRvcExheWVyR3JvdXBzLFxuICBtYXBTdHlsZXNcbn06IEdldE1hcFN0eWxlc1BhcmFtKSB7XG4gIGNvbnN0IG1hcFN0eWxlID0gbWFwU3R5bGVzW3N0eWxlVHlwZV07XG5cbiAgLy8gc3R5bGUgbWlnaHQgbm90IGJlIGxvYWRlZCB5ZXRcbiAgaWYgKCFtYXBTdHlsZSB8fCAhbWFwU3R5bGUuc3R5bGUpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBlZGl0YWJsZSA9IE9iamVjdC5rZXlzKHZpc2libGVMYXllckdyb3VwcykubGVuZ3RoO1xuXG4gIGNvbnN0IGJvdHRvbU1hcFN0eWxlID0gIWVkaXRhYmxlXG4gICAgPyBtYXBTdHlsZS5zdHlsZVxuICAgIDogZWRpdEJvdHRvbU1hcFN0eWxlKHtcbiAgICAgICAgaWQ6IHN0eWxlVHlwZSxcbiAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgIHZpc2libGVMYXllckdyb3Vwc1xuICAgICAgfSk7XG5cbiAgY29uc3QgaGFzVG9wTGF5ZXIgPSBlZGl0YWJsZSA+IDAgJiYgT2JqZWN0LnZhbHVlcyh0b3BMYXllckdyb3Vwcykuc29tZSh2ID0+IHYpO1xuXG4gIC8vIG11dGUgdG9wIGxheWVyIGlmIG5vdCB2aXNpYmxlIGluIGJvdHRvbSBsYXllclxuICBjb25zdCB0b3BMYXllcnMgPVxuICAgIGhhc1RvcExheWVyICYmXG4gICAgT2JqZWN0LmtleXModG9wTGF5ZXJHcm91cHMpLnJlZHVjZShcbiAgICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAgIC4uLmFjY3UsXG4gICAgICAgIFtrZXldOiB0b3BMYXllckdyb3Vwc1trZXldICYmIHZpc2libGVMYXllckdyb3Vwc1trZXldXG4gICAgICB9KSxcbiAgICAgIHt9IGFzIHtbaWQ6IHN0cmluZ106IExheWVyR3JvdXAgfCBib29sZWFufVxuICAgICk7XG5cbiAgY29uc3QgdG9wTWFwU3R5bGUgPSBoYXNUb3BMYXllclxuICAgID8gZWRpdFRvcE1hcFN0eWxlKHtcbiAgICAgICAgaWQ6IHN0eWxlVHlwZSxcbiAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgIHZpc2libGVMYXllckdyb3VwczogdG9wTGF5ZXJzXG4gICAgICB9KVxuICAgIDogbnVsbDtcblxuICByZXR1cm4ge2JvdHRvbU1hcFN0eWxlLCB0b3BNYXBTdHlsZSwgZWRpdGFibGV9O1xufVxuXG5mdW5jdGlvbiBmaW5kTGF5ZXJGaWxsQ29sb3IobGF5ZXIpIHtcbiAgcmV0dXJuIGxheWVyICYmIGxheWVyLnBhaW50ICYmIGxheWVyLnBhaW50WydiYWNrZ3JvdW5kLWNvbG9yJ107XG59XG5cbi8vIG5lZWQgdG8gYmUgY2FyZWZ1bCBiZWNhdXNlIHNvbWUgYmFzZW1hcCBsYXllci5wYWludFsnYmFja2dyb3VuZC1jb2xvciddIHZhbHVlcyBtYXkgYmUgYW4gaW50ZXJwb2xhdGUgYXJyYXkgZXhwcmVzc2lvbiBpbnN0ZWFkIG9mIGEgY29sb3Igc3RyaW5nXG4vLyBodHRwczovL2RvY3MubWFwYm94LmNvbS9tYXBib3gtZ2wtanMvc3R5bGUtc3BlYy9sYXllcnMvI3BhaW50LWJhY2tncm91bmQtYmFja2dyb3VuZC1jb2xvclxuLy8gaHR0cHM6Ly9kb2NzLm1hcGJveC5jb20vbWFwYm94LWdsLWpzL3N0eWxlLXNwZWMvZXhwcmVzc2lvbnMvI2ludGVycG9sYXRlXG5mdW5jdGlvbiBnZXRQYWludENvbG9yKGNvbG9yKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbG9yKSAmJiBjb2xvclswXSA9PT0gJ2ludGVycG9sYXRlJykge1xuICAgIC8vIGdldCBjb2xvciBvZiBmaXJzdCB6b29tIGJyZWFrXG4gICAgLy8gW1wiaW50ZXJwb2xhdGVcIiwgW1wibGluZWFyXCJdLCBbXCJ6b29tXCJdLCAxMSwgXCJoc2woMzUsIDMyJSwgOTElKVwiLCAxMywgXCJoc2woMzUsIDEyJSwgODklKVwiXVxuICAgIHJldHVybiBjb2xvcls0XTtcbiAgfVxuICByZXR1cm4gY29sb3I7XG59XG5cbmZ1bmN0aW9uIGdldDNEQnVpbGRpbmdDb2xvcihzdHlsZSk6IFJHQkNvbG9yIHtcbiAgLy8gc2V0IGJ1aWxkaW5nIGNvbG9yIHRvIGJlIHRoZSBzYW1lIGFzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLlxuICBpZiAoIXN0eWxlLnN0eWxlKSB7XG4gICAgcmV0dXJuIGhleFRvUmdiKERFRkFVTFRfQkxER19DT0xPUik7XG4gIH1cblxuICBjb25zdCBiYWNrZ3JvdW5kTGF5ZXIgPSAoc3R5bGUuc3R5bGUubGF5ZXJzIHx8IFtdKS5maW5kKCh7aWR9KSA9PiBpZCA9PT0gJ2JhY2tncm91bmQnKTtcblxuICBjb25zdCBidWlsZGluZ0xheWVyID0gKHN0eWxlLnN0eWxlLmxheWVycyB8fCBbXSkuZmluZCgoe2lkfSkgPT4gaWQubWF0Y2goL2J1aWxkaW5nLykpO1xuXG4gIGNvbnN0IGJ1aWxkaW5nQ29sb3IgPVxuICAgIGZpbmRMYXllckZpbGxDb2xvcihidWlsZGluZ0xheWVyKSB8fCBmaW5kTGF5ZXJGaWxsQ29sb3IoYmFja2dyb3VuZExheWVyKSB8fCBERUZBVUxUX0JMREdfQ09MT1I7XG5cbiAgLy8gYnJpZ2h0ZW4gb3IgZGFya2VuIGJ1aWxkaW5nIGJhc2VkIG9uIHN0eWxlXG4gIGNvbnN0IG9wZXJhdGlvbiA9IHN0eWxlLmlkLm1hdGNoKC8oPz0oZGFya3xuaWdodCkpLykgPyAnYnJpZ2h0ZXInIDogJ2Rhcmtlcic7XG5cbiAgY29uc3QgYWxwaGEgPSAwLjI7XG4gIGNvbnN0IHJnYk9iaiA9IHJnYihidWlsZGluZ0NvbG9yKVtvcGVyYXRpb25dKFthbHBoYV0pO1xuICByZXR1cm4gW3JnYk9iai5yLCByZ2JPYmouZywgcmdiT2JqLmJdO1xufVxuXG5mdW5jdGlvbiBnZXRCYWNrZ3JvdW5kQ29sb3JGcm9tU3R5bGVCYXNlTGF5ZXIoXG4gIHN0eWxlOiBCYXNlTWFwU3R5bGUsXG4gIGJhY2t1cEJhY2tncm91bmRDb2xvcjogUkdCQ29sb3Jcbik6IFJHQkNvbG9yIHtcbiAgaWYgKCFzdHlsZS5zdHlsZSkge1xuICAgIHJldHVybiBjb2xvck1heWJlVG9SR0IoYmFja3VwQmFja2dyb3VuZENvbG9yKSB8fCBiYWNrdXBCYWNrZ3JvdW5kQ29sb3I7XG4gIH1cblxuICAvLyBAdHMtZXhwZWN0LWVycm9yIHN0eWxlLnN0eWxlIG5vdCB0eXBlZFxuICBjb25zdCBiYXNlTGF5ZXIgPSAoc3R5bGUuc3R5bGUubGF5ZXJzIHx8IFtdKS5maW5kKCh7aWR9KSA9PlxuICAgIEJBU0VfTUFQX0JBQ0tHUk9VTkRfTEFZRVJfSURTLmluY2x1ZGVzKGlkKVxuICApO1xuXG4gIGNvbnN0IGJhY2tncm91bmRDb2xvck9mQmFzZUxheWVyID0gZ2V0UGFpbnRDb2xvcihmaW5kTGF5ZXJGaWxsQ29sb3IoYmFzZUxheWVyKSk7XG5cbiAgY29uc3QgbmV3QmFja2dyb3VuZENvbG9yID1cbiAgICB0eXBlb2YgYmFja2dyb3VuZENvbG9yT2ZCYXNlTGF5ZXIgPT09ICdzdHJpbmcnXG4gICAgICA/IGJhY2tncm91bmRDb2xvck9mQmFzZUxheWVyXG4gICAgICA6IGJhY2t1cEJhY2tncm91bmRDb2xvcjtcblxuICBjb25zdCBuZXdCYWNrZ3JvdW5kQ29sb3JBc1JHQkFycmF5ID0gY29sb3JNYXliZVRvUkdCKG5ld0JhY2tncm91bmRDb2xvcilcbiAgICAvLyBpZiBuZXdCYWNrZ3JvdW5kQ29sb3Igd2FzIGluIHN0cmluZyBIU0wgZm9ybWF0IGl0IGNhbiBpbnRyb2R1Y2UgUkdCIG51bWJlcnMgd2l0aCBkZWNpbWFscyxcbiAgICAvLyB3aGljaCBtYXkgcmVuZGVyIHRoZSBiYWNrZ3JvdW5kLWNvbG9yIENTUyBvZiB0aGUgPFN0eWxlZE1hcD4gY29udGFpbmVyIGluY29ycmVjdGx5IHdoZW4gdXNpbmcgb3VyIG93biBjb2xvciB1dGlscyBgcmdiVG9IZXgoKWBcbiAgICAvLyBzbyB3ZSBhdHRlbXB0IHRvIHJvdW5kIHRvIG5lYXJlc3QgaW50ZWdlciBoZXJlXG4gICAgPy5tYXAoY2hhbm5lbE51bWJlciA9PiBNYXRoLnJvdW5kKGNoYW5uZWxOdW1iZXIpKSBhcyBSR0JDb2xvciB8IG51bGw7XG5cbiAgcmV0dXJuIG5ld0JhY2tncm91bmRDb2xvckFzUkdCQXJyYXkgfHwgYmFja3VwQmFja2dyb3VuZENvbG9yO1xufVxuXG4vLyBkZXRlcm1pbmUgbmV3IGJhY2tncm91bmRDb2xvciBmcm9tIGVpdGhlciBwcmV2aW91cyBzdGF0ZSBiYXNlbWFwIHN0eWxlLCBwcmV2aW91cyBzdGF0ZSBiYWNrZ3JvdW5kQ29sb3IsIG9yIHRoZSBERUZBVUxUX0JBQ0tHUk9VTkRfQ09MT1JcbmZ1bmN0aW9uIGdldEJhY2tncm91bmRDb2xvcihwcmV2aW91c1N0YXRlOiBNYXBTdHlsZSwgc3R5bGVUeXBlOiBzdHJpbmcpIHtcbiAgY29uc3QgcHJldmlvdXNTdGF0ZU1hcFN0eWxlID0gcHJldmlvdXNTdGF0ZS5tYXBTdHlsZXNbcHJldmlvdXNTdGF0ZS5zdHlsZVR5cGVdO1xuICBjb25zdCBiYWNrdXBCYWNrZ3JvdW5kQ29sb3IgPSBwcmV2aW91c1N0YXRlLmJhY2tncm91bmRDb2xvciB8fCBERUZBVUxUX0JBQ0tHUk9VTkRfQ09MT1I7XG4gIGNvbnN0IGJhY2tncm91bmRDb2xvciA9XG4gICAgc3R5bGVUeXBlID09PSBOT19NQVBfSURcbiAgICAgID8gLy8gaWYgdGhlIHN0eWxlIGhhcyBzd2l0Y2hlZCB0byB0aGUgXCJubyBiYXNlbWFwXCIgc3R5bGUsXG4gICAgICAgIC8vIGF0dGVtcHQgdG8gZGV0ZWN0IGJhY2tncm91bmRDb2xvciBvZiB0aGUgcHJldmlvdXMgYmFzZW1hcCBpZiBpdCB3YXMgYSBtYXBib3ggYmFzZW1hcFxuICAgICAgICAvLyBhbmQgc2V0IGl0IGFzIHRoZSBcIm5vIGJhc2VtYXBcIiBiYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgZ2V0QmFja2dyb3VuZENvbG9yRnJvbVN0eWxlQmFzZUxheWVyKHByZXZpb3VzU3RhdGVNYXBTdHlsZSwgYmFja3VwQmFja2dyb3VuZENvbG9yKVxuICAgICAgOiAvLyBvdGhlcndpc2UgbGVhdmUgaXQgYWxvbmUgYW5kIHJlbHkgb24gdGhlIHByZXZpb3VzIHN0YXRlJ3MgcHJlZXhpc3RpbmcgYmFja2dyb3VuZENvbG9yXG4gICAgICAgIC8vIG9yIERFRkFVTFRfQkFDS0dST1VORF9DT0xPUiBhcyBhIGxhc3QgcmVzb3J0XG4gICAgICAgIGJhY2t1cEJhY2tncm91bmRDb2xvcjtcblxuICByZXR1cm4gYmFja2dyb3VuZENvbG9yO1xufVxuXG5mdW5jdGlvbiBnZXRMYXllckdyb3Vwc0Zyb21TdHlsZShzdHlsZSkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShzdHlsZT8ubGF5ZXJzKVxuICAgID8gREVGQVVMVF9MQVlFUl9HUk9VUFMuZmlsdGVyKGxnID0+IHN0eWxlLmxheWVycy5maWx0ZXIobGcuZmlsdGVyKS5sZW5ndGgpXG4gICAgOiBbXTtcbn1cblxuLy8gVXBkYXRlcnNcblxuLyoqXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVxdWVzdE1hcFN0eWxlc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge3BheWxvYWQ6IHttYXBTdHlsZXMsIG9uU3VjY2Vzc319OiBNYXBTdHlsZUFjdGlvbnMuUmVxdWVzdE1hcFN0eWxlc1VwZGF0ZXJBY3Rpb25cbik6IE1hcFN0eWxlID0+IHtcbiAgY29uc3QgdG9Mb2FkID0gT2JqZWN0LmtleXMobWFwU3R5bGVzKS5yZWR1Y2UoXG4gICAgKGFjY3UsIGlkKSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIC4uLighc3RhdGUuaXNMb2FkaW5nW2lkXSA/IHtbaWRdOiBtYXBTdHlsZXNbaWRdfSA6IHt9KVxuICAgIH0pLFxuICAgIHt9XG4gICk7XG4gIGNvbnN0IGxvYWRNYXBTdHlsZVRhc2tzID0gZ2V0TG9hZE1hcFN0eWxlVGFza3MoXG4gICAgdG9Mb2FkLFxuICAgIHN0YXRlLm1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgIHN0YXRlLm1hcGJveEFwaVVybCxcbiAgICBvblN1Y2Nlc3NcbiAgKTtcblxuICBjb25zdCBpc0xvYWRpbmcgPSBPYmplY3Qua2V5cyh0b0xvYWQpLnJlZHVjZShcbiAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIFtrZXldOiB0cnVlXG4gICAgfSksXG4gICAge31cbiAgKTtcbiAgY29uc3QgbmV4dFN0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIGlzTG9hZGluZ1xuICB9O1xuICByZXR1cm4gd2l0aFRhc2sobmV4dFN0YXRlLCBsb2FkTWFwU3R5bGVUYXNrcyk7XG59O1xuXG4vKipcbiAqIFByb3BhZ2F0ZSBgbWFwU3R5bGVgIHJlZHVjZXIgd2l0aCBgbWFwYm94QXBpQWNjZXNzVG9rZW5gIGFuZCBgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHRgLlxuICogaWYgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQgaXMgdHJ1ZSBtYXBTdHlsZXMgaXMgZW1wdGllZDsgbG9hZE1hcFN0eWxlc1VwZGF0ZXIoKSB3aWxsXG4gKiBwb3B1bGF0ZSBtYXBTdHlsZXMuXG4gKlxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGluaXRNYXBTdHlsZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge1xuICAgIHBheWxvYWQgPSB7fVxuICB9OiB7XG4gICAgdHlwZT86IHR5cGVvZiBBY3Rpb25UeXBlcy5JTklUO1xuICAgIHBheWxvYWQ6IEtlcGxlckdsSW5pdFBheWxvYWQ7XG4gIH1cbik6IE1hcFN0eWxlID0+ICh7XG4gIC4uLnN0YXRlLFxuICAvLyBzYXZlIG1hcGJveCBhY2Nlc3MgdG9rZW4gdG8gbWFwIHN0eWxlIHN0YXRlXG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBwYXlsb2FkLm1hcGJveEFwaUFjY2Vzc1Rva2VuIHx8IHN0YXRlLm1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICBtYXBib3hBcGlVcmw6IHBheWxvYWQubWFwYm94QXBpVXJsIHx8IHN0YXRlLm1hcGJveEFwaVVybCxcbiAgbWFwU3R5bGVzOiAhcGF5bG9hZC5tYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCA/IHN0YXRlLm1hcFN0eWxlcyA6IHt9LFxuICBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdDogcGF5bG9hZC5tYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCB8fCBmYWxzZVxufSk7XG4vLyB9KTtcblxuLyoqXG4gKiBVcGRhdGUgYHZpc2libGVMYXllckdyb3Vwc2B0byBjaGFuZ2UgbGF5ZXIgZ3JvdXAgdmlzaWJpbGl0eVxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IG1hcENvbmZpZ0NoYW5nZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAgYWN0aW9uOiBNYXBTdHlsZUFjdGlvbnMuTWFwQ29uZmlnQ2hhbmdlVXBkYXRlckFjdGlvblxuKTogTWFwU3R5bGUgPT4ge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIC4uLmFjdGlvbi5wYXlsb2FkLFxuICAgIC4uLmdldE1hcFN0eWxlcyh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC4uLmFjdGlvbi5wYXlsb2FkXG4gICAgfSlcbiAgfTtcbn07XG5cbmNvbnN0IGhhc1N0eWxlT2JqZWN0ID0gc3R5bGUgPT4gaXNQbGFpbk9iamVjdChzdHlsZT8uc3R5bGUpO1xuXG4vKipcbiAqIENoYW5nZSB0byBhbm90aGVyIG1hcCBzdHlsZS4gVGhlIHNlbGVjdGVkIHN0eWxlIHNob3VsZCBhbHJlYWR5IGJlZW4gbG9hZGVkIGludG8gYG1hcFN0eWxlLm1hcFN0eWxlc2BcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge3BheWxvYWQ6IHtzdHlsZVR5cGUsIG9uU3VjY2Vzc319OiBNYXBTdHlsZUFjdGlvbnMuTWFwU3R5bGVDaGFuZ2VVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiB7XG4gIGlmIChcbiAgICAvLyB3ZSBtaWdodCBub3QgaGF2ZSByZWNlaXZlZCB0aGUgc3R5bGUgeWV0XG4gICAgIXN0YXRlLm1hcFN0eWxlc1tzdHlsZVR5cGVdIHx8XG4gICAgLy8gb3IgaWYgaXQgaXMgYSBtYW5hZ2VkIGN1c3RvbSBzdHlsZSBhc3NldFxuICAgIC8vIGFuZCBpZiBpdCBoYXMgbm90IGJlZW4gaHlkcmF0ZWQgd2l0aCBVUkwgaW5mbyB5ZXQgKGR1cmluZyBhcHAgZmlyc3QgaW5pdGlhbGl6YXRpb24pXG4gICAgLy8gYW5kIGl0IGRvZXMgbm90IGhhdmUgYSBzdHlsZSBvYmplY3QgKGR1cmluZyBhZGRpbmcgYSBjdXN0b20gc3R5bGUpXG4gICAgKHN0YXRlLm1hcFN0eWxlc1tzdHlsZVR5cGVdPy5jdXN0b20gPT09ICdNQU5BR0VEJyAmJlxuICAgICAgIXN0YXRlLm1hcFN0eWxlc1tzdHlsZVR5cGVdPy51cmwgJiZcbiAgICAgICFoYXNTdHlsZU9iamVjdChzdGF0ZS5tYXBTdHlsZXNbc3R5bGVUeXBlXSkpXG4gICkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGlmICghaGFzU3R5bGVPYmplY3Qoc3RhdGUubWFwU3R5bGVzW3N0eWxlVHlwZV0pKSB7XG4gICAgLy8gc3R5bGUgaGFzbid0IGxvYWRlZCB5ZXRcbiAgICByZXR1cm4gcmVxdWVzdE1hcFN0eWxlc1VwZGF0ZXIoXG4gICAgICB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzdHlsZVR5cGVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICBtYXBTdHlsZXM6IHtcbiAgICAgICAgICAgIFtzdHlsZVR5cGVdOiBzdGF0ZS5tYXBTdHlsZXNbc3R5bGVUeXBlXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25TdWNjZXNzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgY29uc3QgZGVmYXVsdExHVmlzaWJpbGl0eSA9IGdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eShzdGF0ZS5tYXBTdHlsZXNbc3R5bGVUeXBlXSk7XG5cbiAgY29uc3QgdmlzaWJsZUxheWVyR3JvdXBzID0gbWVyZ2VMYXllckdyb3VwVmlzaWJpbGl0eShcbiAgICBkZWZhdWx0TEdWaXNpYmlsaXR5LFxuICAgIHN0YXRlLnZpc2libGVMYXllckdyb3Vwc1xuICApO1xuXG4gIGNvbnN0IHRocmVlREJ1aWxkaW5nQ29sb3I6IFJHQkNvbG9yID0gc3RhdGUuY3VzdG9tM0RCdWlsZGluZ0NvbG9yXG4gICAgPyBzdGF0ZS50aHJlZURCdWlsZGluZ0NvbG9yXG4gICAgOiBnZXQzREJ1aWxkaW5nQ29sb3Ioc3RhdGUubWFwU3R5bGVzW3N0eWxlVHlwZV0pO1xuXG4gIC8vIGRldGVybWluZSBuZXcgYmFja2dyb3VuZENvbG9yIGZyb20gZWl0aGVyIHByZXZpb3VzIHN0YXRlIGJhc2VtYXAgc3R5bGUsIHByZXZpb3VzIHN0YXRlIGJhY2tncm91bmRDb2xvciwgb3IgdGhlIERFRkFVTFRfQkFDS0dST1VORF9DT0xPUlxuICBjb25zdCBiYWNrZ3JvdW5kQ29sb3IgPSBnZXRCYWNrZ3JvdW5kQ29sb3Ioc3RhdGUsIHN0eWxlVHlwZSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBzdHlsZVR5cGUsXG4gICAgdmlzaWJsZUxheWVyR3JvdXBzLFxuICAgIHRocmVlREJ1aWxkaW5nQ29sb3IsXG4gICAgYmFja2dyb3VuZENvbG9yLFxuICAgIC4uLmdldE1hcFN0eWxlcyh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHZpc2libGVMYXllckdyb3VwcyxcbiAgICAgIHN0eWxlVHlwZVxuICAgIH0pXG4gIH07XG59O1xuXG4vKipcbiAqIENhbGxiYWNrIHdoZW4gbG9hZCBtYXAgc3R5bGUgc3VjY2Vzc1xuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRNYXBTdHlsZXNVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3R5bGUsXG4gIGFjdGlvbjogTWFwU3R5bGVBY3Rpb25zLkxvYWRNYXBTdHlsZXNVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiB7XG4gIGNvbnN0IHtuZXdTdHlsZXMsIG9uU3VjY2Vzc30gPSBhY3Rpb24ucGF5bG9hZCB8fCB7fTtcblxuICBjb25zdCBhZGRMYXllckdyb3VwcyA9IE9iamVjdC5rZXlzKG5ld1N0eWxlcykucmVkdWNlKFxuICAgIChhY2N1LCBpZCkgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICBbaWRdOiB7XG4gICAgICAgIC4uLm5ld1N0eWxlc1tpZF0sXG4gICAgICAgIGxheWVyR3JvdXBzOiBuZXdTdHlsZXNbaWRdLmxheWVyR3JvdXBzIHx8IGdldExheWVyR3JvdXBzRnJvbVN0eWxlKG5ld1N0eWxlc1tpZF0uc3R5bGUpXG4gICAgICB9XG4gICAgfSksXG4gICAge31cbiAgKTtcbiAgLy8gcmVzZXQgaXNMb2FkaW5nXG4gIGNvbnN0IGlzTG9hZGluZyA9IE9iamVjdC5rZXlzKHN0YXRlLmlzTG9hZGluZykucmVkdWNlKFxuICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgLi4uKHN0YXRlLmlzTG9hZGluZ1trZXldICYmIGhhc1N0eWxlT2JqZWN0KG5ld1N0eWxlc1trZXldKVxuICAgICAgICA/IHtba2V5XTogZmFsc2V9XG4gICAgICAgIDoge1trZXldOiBzdGF0ZS5pc0xvYWRpbmdba2V5XX0pXG4gICAgfSksXG4gICAge31cbiAgKTtcbiAgLy8gYWRkIG5ldyBzdHlsZXMgdG8gc3RhdGVcbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgaXNMb2FkaW5nLFxuICAgIG1hcFN0eWxlczoge1xuICAgICAgLi4uc3RhdGUubWFwU3R5bGVzLFxuICAgICAgLi4uYWRkTGF5ZXJHcm91cHNcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgdGFza3MgPSBjcmVhdGVBY3Rpb25UYXNrKG9uU3VjY2Vzcywge3N0eWxlVHlwZTogc3RhdGUuc3R5bGVUeXBlfSk7XG5cbiAgY29uc3QgbmV4dFN0YXRlID0gbmV3U3R5bGVzW3N0YXRlLnN0eWxlVHlwZV1cbiAgICA/IG1hcFN0eWxlQ2hhbmdlVXBkYXRlcihuZXdTdGF0ZSwge3BheWxvYWQ6IHtzdHlsZVR5cGU6IHN0YXRlLnN0eWxlVHlwZX19KVxuICAgIDogbmV3U3RhdGU7XG5cbiAgcmV0dXJuIHRhc2tzID8gd2l0aFRhc2sobmV4dFN0YXRlLCB0YXNrcykgOiBuZXh0U3RhdGU7XG59O1xuXG5mdW5jdGlvbiBjcmVhdGVBY3Rpb25UYXNrKGFjdGlvbiwgcGF5bG9hZCkge1xuICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBBQ1RJT05fVEFTSygpLm1hcCgoKSA9PiBhY3Rpb24ocGF5bG9hZCkpO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQ2FsbGJhY2sgd2hlbiBsb2FkIG1hcCBzdHlsZSBlcnJvclxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuLy8gZG8gbm90aGluZyBmb3Igbm93LCBpZiBkaWRuJ3QgbG9hZCwgc2tpcCBpdFxuZXhwb3J0IGNvbnN0IGxvYWRNYXBTdHlsZUVyclVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge3BheWxvYWQ6IHtpZHMsIGVycm9yfX06IE1hcFN0eWxlQWN0aW9ucy5Mb2FkTWFwU3R5bGVFcnJVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiB7XG4gIENvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAvLyByZXNldCBpc0xvYWRpbmdcbiAgY29uc3QgaXNMb2FkaW5nID0gT2JqZWN0LmtleXMoc3RhdGUuaXNMb2FkaW5nKS5yZWR1Y2UoXG4gICAgKGFjY3UsIGtleSkgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICAuLi4oc3RhdGUuaXNMb2FkaW5nW2tleV0gJiYgKGlkcyB8fCBbXSkuaW5jbHVkZXMoa2V5KVxuICAgICAgICA/IHtba2V5XTogZmFsc2V9XG4gICAgICAgIDoge1trZXldOiBzdGF0ZS5pc0xvYWRpbmdba2V5XX0pXG4gICAgfSksXG4gICAge31cbiAgKTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGlzTG9hZGluZ1xuICB9O1xufTtcblxuLyoqXG4gKiBMb2FkIG1hcCBzdHlsZSBvYmplY3Qgd2hlbiBwYXNzIGluIHNhdmVkIG1hcCBjb25maWdcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYG1hcFN0eWxlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIHNhdmVkIG1hcCBjb25maWcgYHttYXBTdHlsZSwgdmlzU3RhdGUsIG1hcFN0YXRlfWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZSBvciBgcmVhY3QtcGFtYCB0YXNrcyB0byBsb2FkIG1hcCBzdHlsZSBvYmplY3RcbiAqL1xuZXhwb3J0IGNvbnN0IHJlY2VpdmVNYXBDb25maWdVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3R5bGUsXG4gIHtcbiAgICBwYXlsb2FkOiB7Y29uZmlnfVxuICB9OiB7XG4gICAgdHlwZT86IHR5cGVvZiBBY3Rpb25UeXBlcy5SRUNFSVZFX01BUF9DT05GSUc7XG4gICAgcGF5bG9hZDogUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQ7XG4gIH1cbik6IE1hcFN0eWxlID0+IHtcbiAgY29uc3Qge21hcFN0eWxlfSA9IGNvbmZpZyB8fCB7fTtcblxuICBpZiAoIW1hcFN0eWxlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgLy8gbWVyZ2UgZGVmYXVsdCBtYXBTdHlsZXNcbiAgY29uc3QgbWVyZ2VkID0gbWFwU3R5bGUubWFwU3R5bGVzXG4gICAgPyB7XG4gICAgICAgIC4uLm1hcFN0eWxlLFxuICAgICAgICBtYXBTdHlsZXM6IHtcbiAgICAgICAgICAuLi5tYXBTdHlsZS5tYXBTdHlsZXMsXG4gICAgICAgICAgLi4uc3RhdGUubWFwU3R5bGVzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA6IG1hcFN0eWxlO1xuXG4gIC8vIHNldCBjdXN0b20zREJ1aWxkaW5nQ29sb3I6IHRydWUgaWYgbWFwU3R5bGUgY29udGFpbnMgdGhyZWVEQnVpbGRpbmdDb2xvclxuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIG1lcmdlZC5jdXN0b20zREJ1aWxkaW5nQ29sb3IgPVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBCb29sZWFuKG1hcFN0eWxlLnRocmVlREJ1aWxkaW5nQ29sb3IpIHx8IG1lcmdlZC5jdXN0b20zREJ1aWxkaW5nQ29sb3I7XG4gIGNvbnN0IG5ld1N0YXRlID0gbWFwQ29uZmlnQ2hhbmdlVXBkYXRlcihzdGF0ZSwge3BheWxvYWQ6IG1lcmdlZH0pO1xuXG4gIHJldHVybiBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIobmV3U3RhdGUsIHtwYXlsb2FkOiB7c3R5bGVUeXBlOiBuZXdTdGF0ZS5zdHlsZVR5cGV9fSk7XG59O1xuXG5mdW5jdGlvbiBnZXRMb2FkTWFwU3R5bGVUYXNrcyhtYXBTdHlsZXMsIG1hcGJveEFwaUFjY2Vzc1Rva2VuLCBtYXBib3hBcGlVcmwsIG9uU3VjY2Vzcykge1xuICByZXR1cm4gW1xuICAgIFRhc2suYWxsKFxuICAgICAgT2JqZWN0LnZhbHVlcyhtYXBTdHlsZXMpXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgLm1hcCgoe2lkLCB1cmwsIGFjY2Vzc1Rva2VufSkgPT4gKHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgICB1cmw6IGdldFN0eWxlRG93bmxvYWRVcmwodXJsLCBhY2Nlc3NUb2tlbiB8fCBtYXBib3hBcGlBY2Nlc3NUb2tlbiwgbWFwYm94QXBpVXJsKVxuICAgICAgICB9KSlcbiAgICAgICAgLm1hcChMT0FEX01BUF9TVFlMRV9UQVNLKVxuICAgICkuYmltYXAoXG4gICAgICAvLyBzdWNjZXNzXG4gICAgICByZXN1bHRzID0+XG4gICAgICAgIGxvYWRNYXBTdHlsZXMoXG4gICAgICAgICAgcmVzdWx0cy5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjdSwge2lkLCBzdHlsZX0pID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjY3UsXG4gICAgICAgICAgICAgIFtpZF06IHtcbiAgICAgICAgICAgICAgICAuLi5tYXBTdHlsZXNbaWRdLFxuICAgICAgICAgICAgICAgIHN0eWxlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge31cbiAgICAgICAgICApLFxuICAgICAgICAgIG9uU3VjY2Vzc1xuICAgICAgICApLFxuICAgICAgLy8gZXJyb3JcbiAgICAgIGVyciA9PiBsb2FkTWFwU3R5bGVFcnIoT2JqZWN0LmtleXMobWFwU3R5bGVzKSwgZXJyKVxuICAgIClcbiAgXTtcbn1cbi8qKlxuICogUmVzZXQgbWFwIHN0eWxlIGNvbmZpZyB0byBpbml0aWFsIHN0YXRlXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGBtYXBTdHlsZWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVzZXRNYXBDb25maWdNYXBTdHlsZVVwZGF0ZXIgPSAoc3RhdGU6IE1hcFN0eWxlKTogTWFwU3R5bGUgPT4ge1xuICBjb25zdCBlbXB0eUNvbmZpZyA9IHtcbiAgICAuLi5JTklUSUFMX01BUF9TVFlMRSxcbiAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RhdGUubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgbWFwYm94QXBpVXJsOiBzdGF0ZS5tYXBib3hBcGlVcmwsXG4gICAgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQ6IHN0YXRlLm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0LFxuICAgIC4uLnN0YXRlLmluaXRpYWxTdGF0ZSxcbiAgICBtYXBTdHlsZXM6IHN0YXRlLm1hcFN0eWxlcyxcbiAgICBpbml0aWFsU3RhdGU6IHN0YXRlLmluaXRpYWxTdGF0ZVxuICB9O1xuXG4gIHJldHVybiBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIoZW1wdHlDb25maWcsIHtwYXlsb2FkOiB7c3R5bGVUeXBlOiBlbXB0eUNvbmZpZy5zdHlsZVR5cGV9fSk7XG59O1xuXG4vKipcbiAqIENhbGxiYWNrIHdoZW4gYSBjdXN0b20gbWFwIHN0eWxlIG9iamVjdCBpcyByZWNlaXZlZFxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRDdXN0b21NYXBTdHlsZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge3BheWxvYWQ6IHtpY29uLCBzdHlsZSwgZXJyb3J9fTogTWFwU3R5bGVBY3Rpb25zLkxvYWRDdXN0b21NYXBTdHlsZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0eWxlID0+ICh7XG4gIC4uLnN0YXRlLFxuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGlucHV0U3R5bGU6IHtcbiAgICAuLi5zdGF0ZS5pbnB1dFN0eWxlLFxuICAgIC8vIHN0eWxlIGpzb24gYW5kIGljb24gd2lsbCBsb2FkIGFzeW5jaHJvbm91c2x5XG4gICAgLi4uKHN0eWxlXG4gICAgICA/IHtcbiAgICAgICAgICBpZDpcbiAgICAgICAgICAgIHN0YXRlLmlucHV0U3R5bGUuY3VzdG9tID09PSAnTUFOQUdFRCdcbiAgICAgICAgICAgICAgPyBzdGF0ZS5pbnB1dFN0eWxlLmlkIC8vIGN1c3RvbSBNQU5BR0VEIHR5cGVcbiAgICAgICAgICAgICAgOiAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgICAgICAgc3R5bGUuaWQgfHwgZ2VuZXJhdGVIYXNoSWQoKSwgLy8gY3VzdG9tIExPQ0FMIHR5cGVcbiAgICAgICAgICAvLyBtYWtlIGEgY29weSBvZiB0aGUgc3R5bGUgb2JqZWN0XG4gICAgICAgICAgc3R5bGU6IGNsb25lRGVlcChzdHlsZSksXG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICAgIGxhYmVsOiBzdGF0ZS5pbnB1dFN0eWxlLmxhYmVsIHx8IHN0eWxlLm5hbWUsXG4gICAgICAgICAgLy8gZ2F0aGVyaW5nIGxheWVyIGdyb3VwIGluZm8gZnJvbSBzdHlsZSBqc29uXG4gICAgICAgICAgbGF5ZXJHcm91cHM6IGdldExheWVyR3JvdXBzRnJvbVN0eWxlKHN0eWxlKVxuICAgICAgICB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4oaWNvbiA/IHtpY29ufSA6IHt9KSxcbiAgICAuLi4oZXJyb3IgIT09IHVuZGVmaW5lZCA/IHtlcnJvcn0gOiB7fSlcbiAgfVxufSk7XG5cbi8qKlxuICogSW5wdXQgYSBjdXN0b20gbWFwIHN0eWxlIG9iamVjdFxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGlucHV0TWFwU3R5bGVVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3R5bGUsXG4gIHtwYXlsb2FkOiB7aW5wdXRTdHlsZSwgbWFwU3RhdGV9fTogTWFwU3R5bGVBY3Rpb25zLklucHV0TWFwU3R5bGVVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiB7XG4gIGNvbnN0IHVwZGF0ZWQgPSB7XG4gICAgLi4uc3RhdGUuaW5wdXRTdHlsZSxcbiAgICAuLi5pbnB1dFN0eWxlXG4gIH07XG5cbiAgLy8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGVpdGhlciBhIHVybCB0byBob3N0ZWQgc3R5bGUganNvbiB0aGF0IG5lZWRzIGFuIGljb24gdXJsLFxuICAvLyBvciBhbiBpY29uIGFscmVhZHkgYXZhaWxhYmxlIGNsaWVudC1zaWRlIGFzIGEgZGF0YSB1cmlcbiAgY29uc3QgaXNVcGRhdGVkSWNvbkRhdGFVcmkgPSB1cGRhdGVkLmljb24/LnN0YXJ0c1dpdGgoJ2RhdGE6aW1hZ2UnKTtcbiAgY29uc3QgaXNNYXBib3hTdHlsZVVybCA9XG4gICAgdXBkYXRlZC51cmw/LnN0YXJ0c1dpdGgoJ21hcGJveDovLycpIHx8IHVwZGF0ZWQudXJsPy5pbmNsdWRlcygnbWFwYm94LmNvbScpO1xuXG4gIGNvbnN0IGljb24gPVxuICAgICFpc1VwZGF0ZWRJY29uRGF0YVVyaSAmJiBpc01hcGJveFN0eWxlVXJsXG4gICAgICA/IC8vIEdldCBpbWFnZSBpY29uIHVybHMgb25seSBmb3IgbWFwYm94IG1hcCBsaWIuXG4gICAgICAgIGdldFN0eWxlSW1hZ2VJY29uKHtcbiAgICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgICBzdHlsZVVybDogdXBkYXRlZC51cmwgfHwgJycsXG4gICAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHVwZGF0ZWQuYWNjZXNzVG9rZW4gfHwgc3RhdGUubWFwYm94QXBpQWNjZXNzVG9rZW4gfHwgJycsXG4gICAgICAgICAgbWFwYm94QXBpVXJsOiBzdGF0ZS5tYXBib3hBcGlVcmwgfHwgREVGQVVMVF9NQVBCT1hfQVBJX1VSTFxuICAgICAgICB9KVxuICAgICAgOiB1cGRhdGVkLmljb247XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBpbnB1dFN0eWxlOiB7XG4gICAgICAuLi51cGRhdGVkLFxuICAgICAgaXNWYWxpZDogdHJ1ZSxcbiAgICAgIGljb25cbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIEFkZCBtYXAgc3R5bGUgZnJvbSB1c2VyIGlucHV0IHRvIHJlZHVjZXIgYW5kIHNldCBpdCB0byBjdXJyZW50IHN0eWxlXG4gKiBUaGlzIGFjdGlvbiBpcyBjYWxsZWQgd2hlbiB1c2VyIGNsaWNrIGNvbmZpcm0gYWZ0ZXIgcHV0dGluZyBpbiBhIHZhbGlkIHN0eWxlIHVybCBpbiB0aGUgY3VzdG9tIG1hcCBzdHlsZSBkaWFsb2cuXG4gKiBJdCBzaG91bGQgbm90IGJlIGNhbGxlZCBmcm9tIG91dHNpZGUga2VwbGVyLmdsIHdpdGhvdXQgYSB2YWxpZCBgaW5wdXRTdHlsZWAgaW4gdGhlIGBtYXBTdHlsZWAgcmVkdWNlci5cbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBhZGRDdXN0b21NYXBTdHlsZVVwZGF0ZXIgPSAoc3RhdGU6IE1hcFN0eWxlKTogTWFwU3R5bGUgPT4ge1xuICBjb25zdCBzdHlsZUlkID0gc3RhdGUuaW5wdXRTdHlsZS5pZDtcbiAgaWYgKCFzdHlsZUlkKSByZXR1cm4gc3RhdGU7XG5cbiAgY29uc3QgbmV3U3RhdGUgPSBnZXROZXdTdGF0ZVdpdGhDdXN0b21NYXBTdHlsZShzdGF0ZSk7XG4gIC8vIHNldCBuZXcgc3R5bGVcbiAgcmV0dXJuIG1hcFN0eWxlQ2hhbmdlVXBkYXRlcihuZXdTdGF0ZSwge3BheWxvYWQ6IHtzdHlsZVR5cGU6IHN0eWxlSWR9fSk7XG59O1xuXG4vKipcbiAqIEVkaXQgbWFwIHN0eWxlIGZyb20gdXNlciBpbnB1dCB0byByZWR1Y2VyLlxuICogVGhpcyBhY3Rpb24gaXMgY2FsbGVkIHdoZW4gdXNlciBjbGlja3MgY29uZmlybSBhZnRlciBlZGl0aW5nIGFuIGV4aXN0aW5nIGN1c3RvbSBzdHlsZSBpbiB0aGUgY3VzdG9tIG1hcCBzdHlsZSBkaWFsb2cuXG4gKiBJdCBzaG91bGQgbm90IGJlIGNhbGxlZCBmcm9tIG91dHNpZGUga2VwbGVyLmdsIHdpdGhvdXQgYSB2YWxpZCBgaW5wdXRTdHlsZWAgaW4gdGhlIGBtYXBTdHlsZWAgcmVkdWNlci5cbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBlZGl0Q3VzdG9tTWFwU3R5bGVVcGRhdGVyID0gKHN0YXRlOiBNYXBTdHlsZSk6IE1hcFN0eWxlID0+IHtcbiAgcmV0dXJuIGdldE5ld1N0YXRlV2l0aEN1c3RvbU1hcFN0eWxlKHN0YXRlKTtcbn07XG5cbmZ1bmN0aW9uIGdldE5ld1N0YXRlV2l0aEN1c3RvbU1hcFN0eWxlKHN0YXRlOiBNYXBTdHlsZSk6IE1hcFN0eWxlIHtcbiAgY29uc3Qgc3R5bGVJZCA9IHN0YXRlLmlucHV0U3R5bGUuaWQ7XG4gIGlmICghc3R5bGVJZCkgcmV0dXJuIHN0YXRlO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBQcm9wZXJ0eSAnbGF5ZXJHcm91cHMnIGlzIG1pc3NpbmcgaW4gdHlwZSAnSW5wdXRTdHlsZScgYnV0IHJlcXVpcmVkIGluIHR5cGUgJ0Jhc2VNYXBTdHlsZScuIExlZ2FjeSBjYXNlP1xuICAgIG1hcFN0eWxlczoge1xuICAgICAgLi4uc3RhdGUubWFwU3R5bGVzLFxuICAgICAgW3N0eWxlSWRdOiB7XG4gICAgICAgIC4uLnN0YXRlLm1hcFN0eWxlc1tzdHlsZUlkXSwgLy8gZG8gbm90IHVuaW50ZW50aW9uYWxseSBkcm9wIGFueSBhZGRpdGlvbmFsIHByb3BlcnRpZXNcbiAgICAgICAgLi4uc3RhdGUuaW5wdXRTdHlsZVxuICAgICAgfVxuICAgIH0sXG4gICAgLy8gc2V0IHRvIGRlZmF1bHRcbiAgICBpbnB1dFN0eWxlOiBnZXRJbml0aWFsSW5wdXRTdHlsZSgpXG4gIH07XG59XG5cbi8qKlxuICogUmVtb3ZlIGEgY3VzdG9tIG1hcCBzdHlsZSBmcm9tIGBzdGF0ZS5tYXBTdHlsZS5tYXBTdHlsZXNgLlxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlbW92ZUN1c3RvbU1hcFN0eWxlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICBhY3Rpb246IE1hcFN0eWxlQWN0aW9ucy5SZW1vdmVDdXN0b21NYXBTdHlsZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0eWxlID0+IHtcbiAgY29uc3Qge2lkfSA9IGFjdGlvbi5wYXlsb2FkO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgY29uc3Qge1tpZF06IF8sIC4uLnJlc3RPZk1hcFN0eWxlc30gPSBzdGF0ZS5tYXBTdHlsZXM7XG5cbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgbWFwU3R5bGVzOiByZXN0T2ZNYXBTdHlsZXNcbiAgfTtcblxuICBpZiAoc3RhdGUuc3R5bGVUeXBlID09PSBpZCkge1xuICAgIC8vIGlmIHJlbW92aW5nIGEgY3VzdG9tIHN0eWxlIHRoYXQgaXMgYWxzbyB0aGUgY3VycmVudCBhY3RpdmUgYmFzZSBtYXAsXG4gICAgLy8gdGhlbiByZXNldCB0byB0aGUgZGVmYXVsdCBhY3RpdmUgYmFzZSBtYXAgKGBtYXBTdHlsZS5zdHlsZVR5cGVgKVxuICAgIHJldHVybiBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIobmV3U3RhdGUsIHtwYXlsb2FkOiB7c3R5bGVUeXBlOiBnZXREZWZhdWx0U3RhdGUoKS5zdHlsZVR5cGV9fSk7XG4gIH1cblxuICByZXR1cm4gbmV3U3RhdGU7XG59O1xuXG4vKipcbiAqIFVwZGF0ZXMgM2QgYnVpbGRpbmcgY29sb3JcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBzZXQzZEJ1aWxkaW5nQ29sb3JVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3R5bGUsXG4gIHtwYXlsb2FkOiBjb2xvcn06IE1hcFN0eWxlQWN0aW9ucy5TZXQzZEJ1aWxkaW5nQ29sb3JVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgdGhyZWVEQnVpbGRpbmdDb2xvcjogY29sb3IsXG4gIGN1c3RvbTNEQnVpbGRpbmdDb2xvcjogdHJ1ZVxufSk7XG5cbi8qKlxuICogVXBkYXRlcyBiYWNrZ3JvdW5kIGNvbG9yXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICovXG5leHBvcnQgY29uc3Qgc2V0QmFja2dyb3VuZENvbG9yVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICB7cGF5bG9hZDogY29sb3J9OiBNYXBTdHlsZUFjdGlvbnMuU2V0QmFja2dyb3VuZENvbG9yVXBkYXRlckFjdGlvblxuKTogTWFwU3R5bGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGJhY2tncm91bmRDb2xvcjogY29sb3Jcbn0pO1xuXG4vKipcbiAqIFJldHVybiB0aGUgaW5pdGlhbCBpbnB1dCBzdHlsZVxuICogQHJldHVybiBPYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEluaXRpYWxJbnB1dFN0eWxlKCk6IElucHV0U3R5bGUge1xuICByZXR1cm4ge1xuICAgIGlkOiBudWxsLFxuICAgIGFjY2Vzc1Rva2VuOiBudWxsLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICBsYWJlbDogbnVsbCxcbiAgICBzdHlsZTogbnVsbCxcbiAgICB1cmw6IG51bGwsXG4gICAgaWNvbjogbnVsbCxcbiAgICBjdXN0b206ICdMT0NBTCcsXG4gICAgdXBsb2FkZWRGaWxlOiBudWxsXG4gIH07XG59XG4iXSwibWFwcGlu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
package/dist/map-style.js CHANGED
@@ -20,7 +20,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
20
20
  * Important: Do not rename `actionHandler` or the assignment pattern of property value.
21
21
  * It is used to generate documentation
22
22
  */
23
- var actionHandler = (_actionHandler = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_actionHandler, _actions.ActionTypes.INIT, mapStyleUpdaters.initMapStyleUpdater), _actions.ActionTypes.INPUT_MAP_STYLE, mapStyleUpdaters.inputMapStyleUpdater), _actions.ActionTypes.MAP_CONFIG_CHANGE, mapStyleUpdaters.mapConfigChangeUpdater), _actions.ActionTypes.MAP_STYLE_CHANGE, mapStyleUpdaters.mapStyleChangeUpdater), _actions.ActionTypes.REQUEST_MAP_STYLES, mapStyleUpdaters.requestMapStylesUpdater), _actions.ActionTypes.LOAD_MAP_STYLES, mapStyleUpdaters.loadMapStylesUpdater), _actions.ActionTypes.LOAD_MAP_STYLE_ERR, mapStyleUpdaters.loadMapStyleErrUpdater), _actions.ActionTypes.RECEIVE_MAP_CONFIG, mapStyleUpdaters.receiveMapConfigUpdater), _actions.ActionTypes.LOAD_CUSTOM_MAP_STYLE, mapStyleUpdaters.loadCustomMapStyleUpdater), _actions.ActionTypes.ADD_CUSTOM_MAP_STYLE, mapStyleUpdaters.addCustomMapStyleUpdater), (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_actionHandler, _actions.ActionTypes.EDIT_CUSTOM_MAP_STYLE, mapStyleUpdaters.editCustomMapStyleUpdater), _actions.ActionTypes.REMOVE_CUSTOM_MAP_STYLE, mapStyleUpdaters.removeCustomMapStyleUpdater), _actions.ActionTypes.RESET_MAP_CONFIG, mapStyleUpdaters.resetMapConfigMapStyleUpdater), _actions.ActionTypes.SET_3D_BUILDING_COLOR, mapStyleUpdaters.set3dBuildingColorUpdater), _actions.ActionTypes.SET_BACKGROUND_COLOR, mapStyleUpdaters.setBackgroundColorUpdater), _actions.ActionTypes.RESET_MAP_CONFIG, mapStyleUpdaters.resetMapConfigMapStyleUpdater));
23
+ var actionHandler = (_actionHandler = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_actionHandler, _actions.ActionTypes.INIT, mapStyleUpdaters.initMapStyleUpdater), _actions.ActionTypes.INPUT_MAP_STYLE, mapStyleUpdaters.inputMapStyleUpdater), _actions.ActionTypes.MAP_CONFIG_CHANGE, mapStyleUpdaters.mapConfigChangeUpdater), _actions.ActionTypes.MAP_STYLE_CHANGE, mapStyleUpdaters.mapStyleChangeUpdater), _actions.ActionTypes.REQUEST_MAP_STYLES, mapStyleUpdaters.requestMapStylesUpdater), _actions.ActionTypes.LOAD_MAP_STYLES, mapStyleUpdaters.loadMapStylesUpdater), _actions.ActionTypes.LOAD_MAP_STYLE_ERR, mapStyleUpdaters.loadMapStyleErrUpdater), _actions.ActionTypes.RECEIVE_MAP_CONFIG, mapStyleUpdaters.receiveMapConfigUpdater), _actions.ActionTypes.LOAD_CUSTOM_MAP_STYLE, mapStyleUpdaters.loadCustomMapStyleUpdater), _actions.ActionTypes.ADD_CUSTOM_MAP_STYLE, mapStyleUpdaters.addCustomMapStyleUpdater), (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_actionHandler, _actions.ActionTypes.EDIT_CUSTOM_MAP_STYLE, mapStyleUpdaters.editCustomMapStyleUpdater), _actions.ActionTypes.REMOVE_CUSTOM_MAP_STYLE, mapStyleUpdaters.removeCustomMapStyleUpdater), _actions.ActionTypes.RESET_MAP_CONFIG, mapStyleUpdaters.resetMapConfigMapStyleUpdater), _actions.ActionTypes.SET_3D_BUILDING_COLOR, mapStyleUpdaters.set3dBuildingColorUpdater), _actions.ActionTypes.SET_BACKGROUND_COLOR, mapStyleUpdaters.setBackgroundColorUpdater));
24
24
  var mapStyleReducerFactory = exports.mapStyleReducerFactory = function mapStyleReducerFactory() {
25
25
  var initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
26
26
  return (
@@ -31,4 +31,4 @@ var mapStyleReducerFactory = exports.mapStyleReducerFactory = function mapStyleR
31
31
  );
32
32
  };
33
33
  var _default = exports["default"] = mapStyleReducerFactory();
34
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVkdXhBY3Rpb25zIiwicmVxdWlyZSIsIl9hY3Rpb25zIiwibWFwU3R5bGVVcGRhdGVycyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2FjdGlvbkhhbmRsZXIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJhY3Rpb25IYW5kbGVyIiwiQWN0aW9uVHlwZXMiLCJJTklUIiwiaW5pdE1hcFN0eWxlVXBkYXRlciIsIklOUFVUX01BUF9TVFlMRSIsImlucHV0TWFwU3R5bGVVcGRhdGVyIiwiTUFQX0NPTkZJR19DSEFOR0UiLCJtYXBDb25maWdDaGFuZ2VVcGRhdGVyIiwiTUFQX1NUWUxFX0NIQU5HRSIsIm1hcFN0eWxlQ2hhbmdlVXBkYXRlciIsIlJFUVVFU1RfTUFQX1NUWUxFUyIsInJlcXVlc3RNYXBTdHlsZXNVcGRhdGVyIiwiTE9BRF9NQVBfU1RZTEVTIiwibG9hZE1hcFN0eWxlc1VwZGF0ZXIiLCJMT0FEX01BUF9TVFlMRV9FUlIiLCJsb2FkTWFwU3R5bGVFcnJVcGRhdGVyIiwiUkVDRUlWRV9NQVBfQ09ORklHIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJMT0FEX0NVU1RPTV9NQVBfU1RZTEUiLCJsb2FkQ3VzdG9tTWFwU3R5bGVVcGRhdGVyIiwiQUREX0NVU1RPTV9NQVBfU1RZTEUiLCJhZGRDdXN0b21NYXBTdHlsZVVwZGF0ZXIiLCJFRElUX0NVU1RPTV9NQVBfU1RZTEUiLCJlZGl0Q3VzdG9tTWFwU3R5bGVVcGRhdGVyIiwiUkVNT1ZFX0NVU1RPTV9NQVBfU1RZTEUiLCJyZW1vdmVDdXN0b21NYXBTdHlsZVVwZGF0ZXIiLCJSRVNFVF9NQVBfQ09ORklHIiwicmVzZXRNYXBDb25maWdNYXBTdHlsZVVwZGF0ZXIiLCJTRVRfM0RfQlVJTERJTkdfQ09MT1IiLCJzZXQzZEJ1aWxkaW5nQ29sb3JVcGRhdGVyIiwiU0VUX0JBQ0tHUk9VTkRfQ09MT1IiLCJzZXRCYWNrZ3JvdW5kQ29sb3JVcGRhdGVyIiwibWFwU3R5bGVSZWR1Y2VyRmFjdG9yeSIsImV4cG9ydHMiLCJpbml0aWFsU3RhdGUiLCJ1bmRlZmluZWQiLCJoYW5kbGVBY3Rpb25zIiwiSU5JVElBTF9NQVBfU1RZTEUiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXAtc3R5bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtoYW5kbGVBY3Rpb25zfSBmcm9tICdyZWR1eC1hY3Rpb25zJztcbmltcG9ydCB7QWN0aW9uVHlwZXN9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBtYXBTdHlsZVVwZGF0ZXJzIGZyb20gJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJztcblxuLyoqXG4gKiBJbXBvcnRhbnQ6IERvIG5vdCByZW5hbWUgYGFjdGlvbkhhbmRsZXJgIG9yIHRoZSBhc3NpZ25tZW50IHBhdHRlcm4gb2YgcHJvcGVydHkgdmFsdWUuXG4gKiBJdCBpcyB1c2VkIHRvIGdlbmVyYXRlIGRvY3VtZW50YXRpb25cbiAqL1xuY29uc3QgYWN0aW9uSGFuZGxlciA9IHtcbiAgW0FjdGlvblR5cGVzLklOSVRdOiBtYXBTdHlsZVVwZGF0ZXJzLmluaXRNYXBTdHlsZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5JTlBVVF9NQVBfU1RZTEVdOiBtYXBTdHlsZVVwZGF0ZXJzLmlucHV0TWFwU3R5bGVVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuTUFQX0NPTkZJR19DSEFOR0VdOiBtYXBTdHlsZVVwZGF0ZXJzLm1hcENvbmZpZ0NoYW5nZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5NQVBfU1RZTEVfQ0hBTkdFXTogbWFwU3R5bGVVcGRhdGVycy5tYXBTdHlsZUNoYW5nZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5SRVFVRVNUX01BUF9TVFlMRVNdOiBtYXBTdHlsZVVwZGF0ZXJzLnJlcXVlc3RNYXBTdHlsZXNVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuTE9BRF9NQVBfU1RZTEVTXTogbWFwU3R5bGVVcGRhdGVycy5sb2FkTWFwU3R5bGVzVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLkxPQURfTUFQX1NUWUxFX0VSUl06IG1hcFN0eWxlVXBkYXRlcnMubG9hZE1hcFN0eWxlRXJyVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlJFQ0VJVkVfTUFQX0NPTkZJR106IG1hcFN0eWxlVXBkYXRlcnMucmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5MT0FEX0NVU1RPTV9NQVBfU1RZTEVdOiBtYXBTdHlsZVVwZGF0ZXJzLmxvYWRDdXN0b21NYXBTdHlsZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5BRERfQ1VTVE9NX01BUF9TVFlMRV06IG1hcFN0eWxlVXBkYXRlcnMuYWRkQ3VzdG9tTWFwU3R5bGVVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuRURJVF9DVVNUT01fTUFQX1NUWUxFXTogbWFwU3R5bGVVcGRhdGVycy5lZGl0Q3VzdG9tTWFwU3R5bGVVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuUkVNT1ZFX0NVU1RPTV9NQVBfU1RZTEVdOiBtYXBTdHlsZVVwZGF0ZXJzLnJlbW92ZUN1c3RvbU1hcFN0eWxlVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlJFU0VUX01BUF9DT05GSUddOiBtYXBTdHlsZVVwZGF0ZXJzLnJlc2V0TWFwQ29uZmlnTWFwU3R5bGVVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuU0VUXzNEX0JVSUxESU5HX0NPTE9SXTogbWFwU3R5bGVVcGRhdGVycy5zZXQzZEJ1aWxkaW5nQ29sb3JVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuU0VUX0JBQ0tHUk9VTkRfQ09MT1JdOiBtYXBTdHlsZVVwZGF0ZXJzLnNldEJhY2tncm91bmRDb2xvclVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5SRVNFVF9NQVBfQ09ORklHXTogbWFwU3R5bGVVcGRhdGVycy5yZXNldE1hcENvbmZpZ01hcFN0eWxlVXBkYXRlclxufTtcblxuZXhwb3J0IGNvbnN0IG1hcFN0eWxlUmVkdWNlckZhY3RvcnkgPSAoaW5pdGlhbFN0YXRlID0ge30pID0+XG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgaGFuZGxlQWN0aW9ucyhhY3Rpb25IYW5kbGVyLCB7XG4gICAgLi4ubWFwU3R5bGVVcGRhdGVycy5JTklUSUFMX01BUF9TVFlMRSxcbiAgICAuLi5pbml0aWFsU3RhdGUsXG4gICAgaW5pdGlhbFN0YXRlXG4gIH0pO1xuXG5leHBvcnQgZGVmYXVsdCBtYXBTdHlsZVJlZHVjZXJGYWN0b3J5KCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUdBLElBQUFBLGFBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGdCQUFBLEdBQUFDLHVCQUFBLENBQUFILE9BQUE7QUFBeUQsSUFBQUksY0FBQSxFQUx6RDtBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FB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
34
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVkdXhBY3Rpb25zIiwicmVxdWlyZSIsIl9hY3Rpb25zIiwibWFwU3R5bGVVcGRhdGVycyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2FjdGlvbkhhbmRsZXIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJhY3Rpb25IYW5kbGVyIiwiQWN0aW9uVHlwZXMiLCJJTklUIiwiaW5pdE1hcFN0eWxlVXBkYXRlciIsIklOUFVUX01BUF9TVFlMRSIsImlucHV0TWFwU3R5bGVVcGRhdGVyIiwiTUFQX0NPTkZJR19DSEFOR0UiLCJtYXBDb25maWdDaGFuZ2VVcGRhdGVyIiwiTUFQX1NUWUxFX0NIQU5HRSIsIm1hcFN0eWxlQ2hhbmdlVXBkYXRlciIsIlJFUVVFU1RfTUFQX1NUWUxFUyIsInJlcXVlc3RNYXBTdHlsZXNVcGRhdGVyIiwiTE9BRF9NQVBfU1RZTEVTIiwibG9hZE1hcFN0eWxlc1VwZGF0ZXIiLCJMT0FEX01BUF9TVFlMRV9FUlIiLCJsb2FkTWFwU3R5bGVFcnJVcGRhdGVyIiwiUkVDRUlWRV9NQVBfQ09ORklHIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJMT0FEX0NVU1RPTV9NQVBfU1RZTEUiLCJsb2FkQ3VzdG9tTWFwU3R5bGVVcGRhdGVyIiwiQUREX0NVU1RPTV9NQVBfU1RZTEUiLCJhZGRDdXN0b21NYXBTdHlsZVVwZGF0ZXIiLCJFRElUX0NVU1RPTV9NQVBfU1RZTEUiLCJlZGl0Q3VzdG9tTWFwU3R5bGVVcGRhdGVyIiwiUkVNT1ZFX0NVU1RPTV9NQVBfU1RZTEUiLCJyZW1vdmVDdXN0b21NYXBTdHlsZVVwZGF0ZXIiLCJSRVNFVF9NQVBfQ09ORklHIiwicmVzZXRNYXBDb25maWdNYXBTdHlsZVVwZGF0ZXIiLCJTRVRfM0RfQlVJTERJTkdfQ09MT1IiLCJzZXQzZEJ1aWxkaW5nQ29sb3JVcGRhdGVyIiwiU0VUX0JBQ0tHUk9VTkRfQ09MT1IiLCJzZXRCYWNrZ3JvdW5kQ29sb3JVcGRhdGVyIiwibWFwU3R5bGVSZWR1Y2VyRmFjdG9yeSIsImV4cG9ydHMiLCJpbml0aWFsU3RhdGUiLCJ1bmRlZmluZWQiLCJoYW5kbGVBY3Rpb25zIiwiSU5JVElBTF9NQVBfU1RZTEUiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXAtc3R5bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtoYW5kbGVBY3Rpb25zfSBmcm9tICdyZWR1eC1hY3Rpb25zJztcbmltcG9ydCB7QWN0aW9uVHlwZXN9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBtYXBTdHlsZVVwZGF0ZXJzIGZyb20gJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJztcblxuLyoqXG4gKiBJbXBvcnRhbnQ6IERvIG5vdCByZW5hbWUgYGFjdGlvbkhhbmRsZXJgIG9yIHRoZSBhc3NpZ25tZW50IHBhdHRlcm4gb2YgcHJvcGVydHkgdmFsdWUuXG4gKiBJdCBpcyB1c2VkIHRvIGdlbmVyYXRlIGRvY3VtZW50YXRpb25cbiAqL1xuY29uc3QgYWN0aW9uSGFuZGxlciA9IHtcbiAgW0FjdGlvblR5cGVzLklOSVRdOiBtYXBTdHlsZVVwZGF0ZXJzLmluaXRNYXBTdHlsZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5JTlBVVF9NQVBfU1RZTEVdOiBtYXBTdHlsZVVwZGF0ZXJzLmlucHV0TWFwU3R5bGVVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuTUFQX0NPTkZJR19DSEFOR0VdOiBtYXBTdHlsZVVwZGF0ZXJzLm1hcENvbmZpZ0NoYW5nZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5NQVBfU1RZTEVfQ0hBTkdFXTogbWFwU3R5bGVVcGRhdGVycy5tYXBTdHlsZUNoYW5nZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5SRVFVRVNUX01BUF9TVFlMRVNdOiBtYXBTdHlsZVVwZGF0ZXJzLnJlcXVlc3RNYXBTdHlsZXNVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuTE9BRF9NQVBfU1RZTEVTXTogbWFwU3R5bGVVcGRhdGVycy5sb2FkTWFwU3R5bGVzVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLkxPQURfTUFQX1NUWUxFX0VSUl06IG1hcFN0eWxlVXBkYXRlcnMubG9hZE1hcFN0eWxlRXJyVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlJFQ0VJVkVfTUFQX0NPTkZJR106IG1hcFN0eWxlVXBkYXRlcnMucmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5MT0FEX0NVU1RPTV9NQVBfU1RZTEVdOiBtYXBTdHlsZVVwZGF0ZXJzLmxvYWRDdXN0b21NYXBTdHlsZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5BRERfQ1VTVE9NX01BUF9TVFlMRV06IG1hcFN0eWxlVXBkYXRlcnMuYWRkQ3VzdG9tTWFwU3R5bGVVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuRURJVF9DVVNUT01fTUFQX1NUWUxFXTogbWFwU3R5bGVVcGRhdGVycy5lZGl0Q3VzdG9tTWFwU3R5bGVVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuUkVNT1ZFX0NVU1RPTV9NQVBfU1RZTEVdOiBtYXBTdHlsZVVwZGF0ZXJzLnJlbW92ZUN1c3RvbU1hcFN0eWxlVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlJFU0VUX01BUF9DT05GSUddOiBtYXBTdHlsZVVwZGF0ZXJzLnJlc2V0TWFwQ29uZmlnTWFwU3R5bGVVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuU0VUXzNEX0JVSUxESU5HX0NPTE9SXTogbWFwU3R5bGVVcGRhdGVycy5zZXQzZEJ1aWxkaW5nQ29sb3JVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuU0VUX0JBQ0tHUk9VTkRfQ09MT1JdOiBtYXBTdHlsZVVwZGF0ZXJzLnNldEJhY2tncm91bmRDb2xvclVwZGF0ZXJcbn07XG5cbmV4cG9ydCBjb25zdCBtYXBTdHlsZVJlZHVjZXJGYWN0b3J5ID0gKGluaXRpYWxTdGF0ZSA9IHt9KSA9PlxuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGhhbmRsZUFjdGlvbnMoYWN0aW9uSGFuZGxlciwge1xuICAgIC4uLm1hcFN0eWxlVXBkYXRlcnMuSU5JVElBTF9NQVBfU1RZTEUsXG4gICAgLi4uaW5pdGlhbFN0YXRlLFxuICAgIGluaXRpYWxTdGF0ZVxuICB9KTtcblxuZXhwb3J0IGRlZmF1bHQgbWFwU3R5bGVSZWR1Y2VyRmFjdG9yeSgpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFHQSxJQUFBQSxhQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxnQkFBQSxHQUFBQyx1QkFBQSxDQUFBSCxPQUFBO0FBQXlELElBQUFJLGNBQUEsRUFMekQ7QUFDQTtBQUFBLFNBQUFDLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBSCx3QkFBQUcsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENB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