@carto/kepler.gl 0.0.32 → 0.0.34-alpha.0

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.
@@ -122,6 +122,7 @@ var ClusterLayer = /*#__PURE__*/function (_AggregationLayer) {
122
122
  clusterRadius: visConfig.clusterRadius,
123
123
  // color
124
124
  colorRange: this.getColorRange(visConfig.colorRange),
125
+ colorDomain: this.getColorDomain(visConfig.colorRange),
125
126
  colorScaleType: this.config.colorScale,
126
127
  colorAggregation: visConfig.colorAggregation,
127
128
  zoom: Math.round(mapState.zoom),
@@ -147,4 +148,4 @@ var ClusterLayer = /*#__PURE__*/function (_AggregationLayer) {
147
148
  }(_aggregationLayer["default"]);
148
149
 
149
150
  exports["default"] = ClusterLayer;
150
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvY2x1c3Rlci1sYXllci9jbHVzdGVyLWxheWVyLmpzIl0sIm5hbWVzIjpbImNsdXN0ZXJWaXNDb25maWdzIiwib3BhY2l0eSIsImNsdXN0ZXJSYWRpdXMiLCJjb2xvclJhbmdlIiwicmFkaXVzUmFuZ2UiLCJjb2xvckFnZ3JlZ2F0aW9uIiwiQ2x1c3RlckxheWVyIiwicHJvcHMiLCJyZWdpc3RlclZpc0NvbmZpZyIsIkNsdXN0ZXJMYXllckljb24iLCJjb2xvciIsImFnZ3JlZ2F0aW9uIiwiY2hhbm5lbFNjYWxlVHlwZSIsIkNIQU5ORUxfU0NBTEVTIiwiY29sb3JBZ2dyIiwiZGVmYXVsdE1lYXN1cmUiLCJkb21haW4iLCJmaWVsZCIsImtleSIsInByb3BlcnR5IiwicmFuZ2UiLCJzY2FsZSIsIm9wdHMiLCJ2aXNDb25maWciLCJjb25maWciLCJkYXRhIiwiZ3B1RmlsdGVyIiwib2JqZWN0SG92ZXJlZCIsIm1hcFN0YXRlIiwibGF5ZXJDYWxsYmFja3MiLCJ1cGRhdGVUcmlnZ2VycyIsImdldENvbG9yVmFsdWUiLCJjb2xvckZpZWxkIiwiZmlsdGVyRGF0YSIsImZpbHRlclJhbmdlIiwiZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycyIsIl9maWx0ZXJEYXRhIiwiY2x1c3RlckRhdGEiLCJob3ZlcmVkT2JqZWN0IiwiaGFzSG92ZXJlZE9iamVjdCIsIkRlY2tHTENsdXN0ZXJMYXllciIsImdldERlZmF1bHREZWNrTGF5ZXJQcm9wcyIsInJhZGl1c1NjYWxlIiwiZ2V0Q29sb3JSYW5nZSIsImNvbG9yU2NhbGVUeXBlIiwiY29sb3JTY2FsZSIsInpvb20iLCJNYXRoIiwicm91bmQiLCJ3aWR0aCIsImhlaWdodCIsIm9uU2V0Q29sb3JEb21haW4iLCJvblNldExheWVyRG9tYWluIiwiU2NhdHRlcnBsb3RMYXllciIsImlkIiwiZ2V0RmlsbENvbG9yIiwiaGlnaGxpZ2h0Q29sb3IiLCJnZXRSYWRpdXMiLCJkIiwicmFkaXVzIiwi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LGdCQWI5QjtBQWVFeUMsUUFBQUEsSUFBSSxFQUFFQyxJQUFJLENBQUNDLEtBQUwsQ0FBV3BCLFFBQVEsQ0FBQ2tCLElBQXBCLENBZlI7QUFnQkVHLFFBQUFBLEtBQUssRUFBRXJCLFFBQVEsQ0FBQ3FCLEtBaEJsQjtBQWlCRUMsUUFBQUEsTUFBTSxFQUFFdEIsUUFBUSxDQUFDc0IsTUFqQm5CO0FBbUJFO0FBQ0FwQixRQUFBQSxjQUFjLEVBQWRBLGNBcEJGO0FBc0JFO0FBQ0FxQixRQUFBQSxnQkFBZ0IsRUFBRXRCLGNBQWMsQ0FBQ3VCO0FBdkJuQyxTQURGLDZDQTJCTWQsYUFBYSxHQUNiLENBQ0UsSUFBSWUsd0JBQUosQ0FBcUI7QUFDbkJDLFFBQUFBLEVBQUUsWUFBSyxLQUFLQSxFQUFWLGFBRGlCO0FBRW5CN0IsUUFBQUEsSUFBSSxFQUFFLENBQUNhLGFBQUQsQ0FGYTtBQUduQmlCLFFBQUFBLFlBQVksRUFBRSxLQUFLL0IsTUFBTCxDQUFZZ0MsY0FIUDtBQUluQkMsUUFBQUEsU0FBUyxFQUFFLG1CQUFBQyxDQUFDO0FBQUEsaUJBQUlBLENBQUMsQ0FBQ0MsTUFBTjtBQUFBLFNBSk87QUFLbkJqQixRQUFBQSxXQUFXLEVBQUUsQ0FMTTtBQU1uQmtCLFFBQUFBLFFBQVEsRUFBRTtBQU5TLE9BQXJCLENBREYsQ0FEYSxHQVdiLEVBdENOO0FBd0NEOzs7RUF2RnVDQyw0QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBBZ2dyZWdhdGlvbkxheWVyIGZyb20gJy4uL2FnZ3JlZ2F0aW9uLWxheWVyJztcbmltcG9ydCB7U2NhdHRlcnBsb3RMYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcblxuaW1wb3J0IERlY2tHTENsdXN0ZXJMYXllciBmcm9tICdkZWNrZ2wtbGF5ZXJzL2NsdXN0ZXItbGF5ZXIvY2x1c3Rlci1sYXllcic7XG5pbXBvcnQge0NIQU5ORUxfU0NBTEVTfSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5pbXBvcnQgQ2x1c3RlckxheWVySWNvbiBmcm9tICcuL2NsdXN0ZXItbGF5ZXItaWNvbic7XG5cbmV4cG9ydCBjb25zdCBjbHVzdGVyVmlzQ29uZmlncyA9IHtcbiAgb3BhY2l0eTogJ29wYWNpdHknLFxuICBjbHVzdGVyUmFkaXVzOiAnY2x1c3RlclJhZGl1cycsXG4gIGNvbG9yUmFuZ2U6ICdjb2xvclJhbmdlJyxcbiAgcmFkaXVzUmFuZ2U6ICdjbHVzdGVyUmFkaXVzUmFuZ2UnLFxuICBjb2xvckFnZ3JlZ2F0aW9uOiAnYWdncmVnYXRpb24nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDbHVzdGVyTGF5ZXIgZXh0ZW5kcyBBZ2dyZWdhdGlvbkxheWVyIHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5yZWdpc3RlclZpc0NvbmZpZyhjbHVzdGVyVmlzQ29uZmlncyk7XG4gIH1cblxuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gJ2NsdXN0ZXInO1xuICB9XG5cbiAgZ2V0IGxheWVySWNvbigpIHtcbiAgICByZXR1cm4gQ2x1c3RlckxheWVySWNvbjtcbiAgfVxuXG4gIGdldCB2aXN1YWxDaGFubmVscygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IHtcbiAgICAgICAgYWdncmVnYXRpb246ICdjb2xvckFnZ3JlZ2F0aW9uJyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyLFxuICAgICAgICBkZWZhdWx0TWVhc3VyZTogJ3Byb3BlcnR5LnBvaW50Q291bnQnLFxuICAgICAgICBkb21haW46ICdjb2xvckRvbWFpbicsXG4gICAgICAgIGZpZWxkOiAnY29sb3JGaWVsZCcsXG4gICAgICAgIGtleTogJ2NvbG9yJyxcbiAgICAgICAgcHJvcGVydHk6ICdjb2xvcicsXG4gICAgICAgIHJhbmdlOiAnY29sb3JSYW5nZScsXG4gICAgICAgIHNjYWxlOiAnY29sb3JTY2FsZSdcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcmVuZGVyTGF5ZXIob3B0cykge1xuICAgIGNvbnN0IHt2aXNDb25maWd9ID0gdGhpcy5jb25maWc7XG4gICAgY29uc3Qge2RhdGEsIGdwdUZpbHRlciwgb2JqZWN0SG92ZXJlZCwgbWFwU3RhdGUsIGxheWVyQ2FsbGJhY2tzfSA9IG9wdHM7XG5cbiAgICBjb25zdCB1cGRhdGVUcmlnZ2VycyA9IHtcbiAgICAgIGdldENvbG9yVmFsdWU6IHtcbiAgICAgICAgY29sb3JGaWVsZDogdGhpcy5jb25maWcuY29sb3JGaWVsZCxcbiAgICAgICAgY29sb3JBZ2dyZWdhdGlvbjogdGhpcy5jb25maWcudmlzQ29uZmlnLmNvbG9yQWdncmVnYXRpb25cbiAgICAgIH0sXG4gICAgICBmaWx0ZXJEYXRhOiB7XG4gICAgICAgIGZpbHRlclJhbmdlOiBncHVGaWx0ZXIuZmlsdGVyUmFuZ2UsXG4gICAgICAgIC4uLmdwdUZpbHRlci5maWx0ZXJWYWx1ZVVwZGF0ZVRyaWdnZXJzXG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCB7X2ZpbHRlckRhdGE6IGZpbHRlckRhdGEsIC4uLmNsdXN0ZXJEYXRhfSA9IGRhdGE7XG4gICAgY29uc3QgaG92ZXJlZE9iamVjdCA9IHRoaXMuaGFzSG92ZXJlZE9iamVjdChvYmplY3RIb3ZlcmVkKTtcblxuICAgIHJldHVybiBbXG4gICAgICBuZXcgRGVja0dMQ2x1c3RlckxheWVyKHtcbiAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0RGVja0xheWVyUHJvcHMob3B0cyksXG4gICAgICAgIC4uLmNsdXN0ZXJEYXRhLFxuICAgICAgICBmaWx0ZXJEYXRhLFxuXG4gICAgICAgIC8vIHJhZGl1c1xuICAgICAgICByYWRpdXNTY2FsZTogMSxcbiAgICAgICAgcmFkaXVzUmFuZ2U6IHZpc0NvbmZpZy5yYWRpdXNSYW5nZSxcbiAgICAgICAgY2x1c3RlclJhZGl1czogdmlzQ29uZmlnLmNsdXN0ZXJSYWRpdXMsXG5cbiAgICAgICAgLy8gY29sb3JcbiAgICAgICAgY29sb3JSYW5nZTogdGhpcy5nZXRDb2xvclJhbmdlKHZpc0NvbmZpZy5jb2xvclJhbmdlKSxcbiAgICAgICAgY29sb3JTY2FsZVR5cGU6IHRoaXMuY29uZmlnLmNvbG9yU2NhbGUsXG4gICAgICAgIGNvbG9yQWdncmVnYXRpb246IHZpc0NvbmZpZy5jb2xvckFnZ3JlZ2F0aW9uLFxuXG4gICAgICAgIHpvb206IE1hdGgucm91bmQobWFwU3RhdGUuem9vbSksXG4gICAgICAgIHdpZHRoOiBtYXBTdGF0ZS53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBtYXBTdGF0ZS5oZWlnaHQsXG5cbiAgICAgICAgLy8gdXBkYXRlVHJpZ2dlcnNcbiAgICAgICAgdXBkYXRlVHJpZ2dlcnMsXG5cbiAgICAgICAgLy8gY2FsbCBiYWNrIGZyb20gbGF5ZXIgYWZ0ZXIgY2FsY3VsYXRlIGNsdXN0ZXJzXG4gICAgICAgIG9uU2V0Q29sb3JEb21haW46IGxheWVyQ2FsbGJhY2tzLm9uU2V0TGF5ZXJEb21haW5cbiAgICAgIH0pLFxuICAgICAgLy8gaG92ZXIgbGF5ZXJcbiAgICAgIC4uLihob3ZlcmVkT2JqZWN0XG4gICAgICAgID8gW1xuICAgICAgICAgICAgbmV3IFNjYXR0ZXJwbG90TGF5ZXIoe1xuICAgICAgICAgICAgICBpZDogYCR7dGhpcy5pZH0taG92ZXJlZGAsXG4gICAgICAgICAgICAgIGRhdGE6IFtob3ZlcmVkT2JqZWN0XSxcbiAgICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiB0aGlzLmNvbmZpZy5oaWdobGlnaHRDb2xvcixcbiAgICAgICAgICAgICAgZ2V0UmFkaXVzOiBkID0+IGQucmFkaXVzLFxuICAgICAgICAgICAgICByYWRpdXNTY2FsZTogMSxcbiAgICAgICAgICAgICAgcGlja2FibGU6IGZhbHNlXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXSlcbiAgICBdO1xuICB9XG59XG4iXX0=
151
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvY2x1c3Rlci1sYXllci9jbHVzdGVyLWxheWVyLmpzIl0sIm5hbWVzIjpbImNsdXN0ZXJWaXNDb25maWdzIiwib3BhY2l0eSIsImNsdXN0ZXJSYWRpdXMiLCJjb2xvclJhbmdlIiwicmFkaXVzUmFuZ2UiLCJjb2xvckFnZ3JlZ2F0aW9uIiwiQ2x1c3RlckxheWVyIiwicHJvcHMiLCJyZWdpc3RlclZpc0NvbmZpZyIsIkNsdXN0ZXJMYXllckljb24iLCJjb2xvciIsImFnZ3JlZ2F0aW9uIiwiY2hhbm5lbFNjYWxlVHlwZSIsIkNIQU5ORUxfU0NBTEVTIiwiY29sb3JBZ2dyIiwiZGVmYXVsdE1lYXN1cmUiLCJkb21haW4iLCJmaWVsZCIsImtleSIsInByb3BlcnR5IiwicmFuZ2UiLCJzY2FsZSIsIm9wdHMiLCJ2aXNDb25maWciLCJjb25maWciLCJkYXRhIiwiZ3B1RmlsdGVyIiwib2JqZWN0SG92ZXJlZCIsIm1hcFN0YXRlIiwibGF5ZXJDYWxsYmFja3MiLCJ1cGRhdGVUcmlnZ2VycyIsImdldENvbG9yVmFsdWUiLCJjb2xvckZpZWxkIiwiZmlsdGVyRGF0YSIsImZpbHRlclJhbmdlIiwiZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycyIsIl9maWx0ZXJEYXRhIiwiY2x1c3RlckRhdGEiLCJob3ZlcmVkT2JqZWN0IiwiaGFzSG92ZXJlZE9iamVjdCIsIkRlY2tHTENsdXN0ZXJMYXllciIsImdldERlZmF1bHREZWNrTGF5ZXJQcm9wcyIsInJhZGl1c1NjYWxlIiwiZ2V0Q29sb3JSYW5nZSIsImNvbG9yRG9tYWluIiwiZ2V0Q29sb3JEb21haW4iLCJjb2xvclNjYWxlVHlwZSIsImNvbG9yU2NhbGUiLCJ6b29tIiwiTWF0aCIsInJvdW5kIiwid2lkdGgiLCJoZWlnaHQiLCJvblNldENvbG9yRG9tYWluIiwib25TZXRMYXllckRvbWFpbiIsIlNjYXR0ZXJwbG90TGF5ZXIiLCJpZCIsImdldEZpbGxDb2xvciIsImhpZ2hsaWdodENvbG9yIiwiZ2V0UmFkaXVzIiwiZCIsInJhZGl1cyIsInBpY2thYmxlIiwiQWdncmVnYXRpb25MYXllciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVPLElBQU1BLGlCQUFpQixHQUFHO0FBQy9CQyxFQUFBQSxPQUFPLEVBQUUsU0FEc0I7QUFFL0JDLEVBQUFBLGFBQWEsRUFBRSxlQUZnQjtBQUcvQkMsRUFBQUEsVUFBVSxFQUFFLFlBSG1CO0FBSS9CQyxFQUFBQSxXQUFXLEVBQUUsb0JBSmtCO0FBSy9CQyxFQUFBQSxnQkFBZ0IsRUFBRTtBQUxhLENBQTFCOzs7SUFRY0MsWTs7Ozs7QUFDbkIsd0JBQVlDLEtBQVosRUFBbUI7QUFBQTs7QUFBQTtBQUNqQiw4QkFBTUEsS0FBTjs7QUFDQSxVQUFLQyxpQkFBTCxDQUF1QlIsaUJBQXZCOztBQUZpQjtBQUdsQjs7OztTQUVELGVBQVc7QUFDVCxhQUFPLFNBQVA7QUFDRDs7O1NBRUQsZUFBZ0I7QUFDZCxhQUFPUyw0QkFBUDtBQUNEOzs7U0FFRCxlQUFxQjtBQUNuQixhQUFPO0FBQ0xDLFFBQUFBLEtBQUssRUFBRTtBQUNMQyxVQUFBQSxXQUFXLEVBQUUsa0JBRFI7QUFFTEMsVUFBQUEsZ0JBQWdCLEVBQUVDLGdDQUFlQyxTQUY1QjtBQUdMQyxVQUFBQSxjQUFjLEVBQUUscUJBSFg7QUFJTEMsVUFBQUEsTUFBTSxFQUFFLGFBSkg7QUFLTEMsVUFBQUEsS0FBSyxFQUFFLFlBTEY7QUFNTEMsVUFBQUEsR0FBRyxFQUFFLE9BTkE7QUFPTEMsVUFBQUEsUUFBUSxFQUFFLE9BUEw7QUFRTEMsVUFBQUEsS0FBSyxFQUFFLFlBUkY7QUFTTEMsVUFBQUEsS0FBSyxFQUFFO0FBVEY7QUFERixPQUFQO0FBYUQ7OztXQUVELHFCQUFZQyxJQUFaLEVBQWtCO0FBQUEsVUFDVEMsU0FEUyxHQUNJLEtBQUtDLE1BRFQsQ0FDVEQsU0FEUztBQUFBLFVBRVRFLElBRlMsR0FFbURILElBRm5ELENBRVRHLElBRlM7QUFBQSxVQUVIQyxTQUZHLEdBRW1ESixJQUZuRCxDQUVISSxTQUZHO0FBQUEsVUFFUUMsYUFGUixHQUVtREwsSUFGbkQsQ0FFUUssYUFGUjtBQUFBLFVBRXVCQyxRQUZ2QixHQUVtRE4sSUFGbkQsQ0FFdUJNLFFBRnZCO0FBQUEsVUFFaUNDLGNBRmpDLEdBRW1EUCxJQUZuRCxDQUVpQ08sY0FGakM7QUFJaEIsVUFBTUMsY0FBYyxHQUFHO0FBQ3JCQyxRQUFBQSxhQUFhLEVBQUU7QUFDYkMsVUFBQUEsVUFBVSxFQUFFLEtBQUtSLE1BQUwsQ0FBWVEsVUFEWDtBQUViM0IsVUFBQUEsZ0JBQWdCLEVBQUUsS0FBS21CLE1BQUwsQ0FBWUQsU0FBWixDQUFzQmxCO0FBRjNCLFNBRE07QUFLckI0QixRQUFBQSxVQUFVO0FBQ1JDLFVBQUFBLFdBQVcsRUFBRVIsU0FBUyxDQUFDUTtBQURmLFdBRUxSLFNBQVMsQ0FBQ1MseUJBRkw7QUFMVyxPQUF2QjtBQUpnQixVQWNJRixVQWRKLEdBY2tDUixJQWRsQyxDQWNUVyxXQWRTO0FBQUEsVUFjbUJDLFdBZG5CLDZDQWNrQ1osSUFkbEM7QUFlaEIsVUFBTWEsYUFBYSxHQUFHLEtBQUtDLGdCQUFMLENBQXNCWixhQUF0QixDQUF0QjtBQUVBLGNBQ0UsSUFBSWEsd0JBQUosK0NBQ0ssS0FBS0Msd0JBQUwsQ0FBOEJuQixJQUE5QixDQURMLEdBRUtlLFdBRkw7QUFHRUosUUFBQUEsVUFBVSxFQUFWQSxVQUhGO0FBS0U7QUFDQVMsUUFBQUEsV0FBVyxFQUFFLENBTmY7QUFPRXRDLFFBQUFBLFdBQVcsRUFBRW1CLFNBQVMsQ0FBQ25CLFdBUHpCO0FBUUVGLFFBQUFBLGFBQWEsRUFBRXFCLFNBQVMsQ0FBQ3JCLGFBUjNCO0FBVUU7QUFDQUMsUUFBQUEsVUFBVSxFQUFFLEtBQUt3QyxhQUFMLENBQW1CcEIsU0FBUyxDQUFDcEIsVUFBN0IsQ0FYZDtBQVlFeUMsUUFBQUEsV0FBVyxFQUFFLEtBQUtDLGNBQUwsQ0FBb0J0QixTQUFTLENBQUNwQixVQUE5QixDQVpmO0FBYUUyQyxRQUFBQSxjQUFjLEVBQUUsS0FBS3RCLE1BQUwsQ0FBWXVCLFVBYjlCO0FBY0UxQyxRQUFBQSxnQkFBZ0IsRUFBRWtCLFNBQVMsQ0FBQ2xCLGdCQWQ5QjtBQWdCRTJDLFFBQUFBLElBQUksRUFBRUMsSUFBSSxDQUFDQyxLQUFMLENBQVd0QixRQUFRLENBQUNvQixJQUFwQixDQWhCUjtBQWlCRUcsUUFBQUEsS0FBSyxFQUFFdkIsUUFBUSxDQUFDdUIsS0FqQmxCO0FBa0JFQyxRQUFBQSxNQUFNLEVBQUV4QixRQUFRLENBQUN3QixNQWxCbkI7QUFvQkU7QUFDQXRCLFFBQUFBLGNBQWMsRUFBZEEsY0FyQkY7QUF1QkU7QUFDQXVCLFFBQUFBLGdCQUFnQixFQUFFeEIsY0FBYyxDQUFDeUI7QUF4Qm5DLFNBREYsNkNBNEJNaEIsYUFBYSxHQUNiLENBQ0UsSUFBSWlCLHdCQUFKLENBQXFCO0FBQ25CQyxRQUFBQSxFQUFFLFlBQUssS0FBS0EsRUFBVixhQURpQjtBQUVuQi9CLFFBQUFBLElBQUksRUFBRSxDQUFDYSxhQUFELENBRmE7QUFHbkJtQixRQUFBQSxZQUFZLEVBQUUsS0FBS2pDLE1BQUwsQ0FBWWtDLGNBSFA7QUFJbkJDLFFBQUFBLFNBQVMsRUFBRSxtQkFBQUMsQ0FBQztBQUFBLGlCQUFJQSxDQUFDLENBQUNDLE1BQU47QUFBQSxTQUpPO0FBS25CbkIsUUFBQUEsV0FBVyxFQUFFLENBTE07QUFNbkJvQixRQUFBQSxRQUFRLEVBQUU7QUFOUyxPQUFyQixDQURGLENBRGEsR0FXYixFQXZDTjtBQXlDRDs7O0VBeEZ1Q0MsNEIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgQWdncmVnYXRpb25MYXllciBmcm9tICcuLi9hZ2dyZWdhdGlvbi1sYXllcic7XG5pbXBvcnQge1NjYXR0ZXJwbG90TGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5cbmltcG9ydCBEZWNrR0xDbHVzdGVyTGF5ZXIgZnJvbSAnZGVja2dsLWxheWVycy9jbHVzdGVyLWxheWVyL2NsdXN0ZXItbGF5ZXInO1xuaW1wb3J0IHtDSEFOTkVMX1NDQUxFU30gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuaW1wb3J0IENsdXN0ZXJMYXllckljb24gZnJvbSAnLi9jbHVzdGVyLWxheWVyLWljb24nO1xuXG5leHBvcnQgY29uc3QgY2x1c3RlclZpc0NvbmZpZ3MgPSB7XG4gIG9wYWNpdHk6ICdvcGFjaXR5JyxcbiAgY2x1c3RlclJhZGl1czogJ2NsdXN0ZXJSYWRpdXMnLFxuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZScsXG4gIHJhZGl1c1JhbmdlOiAnY2x1c3RlclJhZGl1c1JhbmdlJyxcbiAgY29sb3JBZ2dyZWdhdGlvbjogJ2FnZ3JlZ2F0aW9uJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2x1c3RlckxheWVyIGV4dGVuZHMgQWdncmVnYXRpb25MYXllciB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMucmVnaXN0ZXJWaXNDb25maWcoY2x1c3RlclZpc0NvbmZpZ3MpO1xuICB9XG5cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuICdjbHVzdGVyJztcbiAgfVxuXG4gIGdldCBsYXllckljb24oKSB7XG4gICAgcmV0dXJuIENsdXN0ZXJMYXllckljb247XG4gIH1cblxuICBnZXQgdmlzdWFsQ2hhbm5lbHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOiB7XG4gICAgICAgIGFnZ3JlZ2F0aW9uOiAnY29sb3JBZ2dyZWdhdGlvbicsXG4gICAgICAgIGNoYW5uZWxTY2FsZVR5cGU6IENIQU5ORUxfU0NBTEVTLmNvbG9yQWdncixcbiAgICAgICAgZGVmYXVsdE1lYXN1cmU6ICdwcm9wZXJ0eS5wb2ludENvdW50JyxcbiAgICAgICAgZG9tYWluOiAnY29sb3JEb21haW4nLFxuICAgICAgICBmaWVsZDogJ2NvbG9yRmllbGQnLFxuICAgICAgICBrZXk6ICdjb2xvcicsXG4gICAgICAgIHByb3BlcnR5OiAnY29sb3InLFxuICAgICAgICByYW5nZTogJ2NvbG9yUmFuZ2UnLFxuICAgICAgICBzY2FsZTogJ2NvbG9yU2NhbGUnXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlckxheWVyKG9wdHMpIHtcbiAgICBjb25zdCB7dmlzQ29uZmlnfSA9IHRoaXMuY29uZmlnO1xuICAgIGNvbnN0IHtkYXRhLCBncHVGaWx0ZXIsIG9iamVjdEhvdmVyZWQsIG1hcFN0YXRlLCBsYXllckNhbGxiYWNrc30gPSBvcHRzO1xuXG4gICAgY29uc3QgdXBkYXRlVHJpZ2dlcnMgPSB7XG4gICAgICBnZXRDb2xvclZhbHVlOiB7XG4gICAgICAgIGNvbG9yRmllbGQ6IHRoaXMuY29uZmlnLmNvbG9yRmllbGQsXG4gICAgICAgIGNvbG9yQWdncmVnYXRpb246IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5jb2xvckFnZ3JlZ2F0aW9uXG4gICAgICB9LFxuICAgICAgZmlsdGVyRGF0YToge1xuICAgICAgICBmaWx0ZXJSYW5nZTogZ3B1RmlsdGVyLmZpbHRlclJhbmdlLFxuICAgICAgICAuLi5ncHVGaWx0ZXIuZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2Vyc1xuICAgICAgfVxuICAgIH07XG4gICAgY29uc3Qge19maWx0ZXJEYXRhOiBmaWx0ZXJEYXRhLCAuLi5jbHVzdGVyRGF0YX0gPSBkYXRhO1xuICAgIGNvbnN0IGhvdmVyZWRPYmplY3QgPSB0aGlzLmhhc0hvdmVyZWRPYmplY3Qob2JqZWN0SG92ZXJlZCk7XG5cbiAgICByZXR1cm4gW1xuICAgICAgbmV3IERlY2tHTENsdXN0ZXJMYXllcih7XG4gICAgICAgIC4uLnRoaXMuZ2V0RGVmYXVsdERlY2tMYXllclByb3BzKG9wdHMpLFxuICAgICAgICAuLi5jbHVzdGVyRGF0YSxcbiAgICAgICAgZmlsdGVyRGF0YSxcblxuICAgICAgICAvLyByYWRpdXNcbiAgICAgICAgcmFkaXVzU2NhbGU6IDEsXG4gICAgICAgIHJhZGl1c1JhbmdlOiB2aXNDb25maWcucmFkaXVzUmFuZ2UsXG4gICAgICAgIGNsdXN0ZXJSYWRpdXM6IHZpc0NvbmZpZy5jbHVzdGVyUmFkaXVzLFxuXG4gICAgICAgIC8vIGNvbG9yXG4gICAgICAgIGNvbG9yUmFuZ2U6IHRoaXMuZ2V0Q29sb3JSYW5nZSh2aXNDb25maWcuY29sb3JSYW5nZSksXG4gICAgICAgIGNvbG9yRG9tYWluOiB0aGlzLmdldENvbG9yRG9tYWluKHZpc0NvbmZpZy5jb2xvclJhbmdlKSxcbiAgICAgICAgY29sb3JTY2FsZVR5cGU6IHRoaXMuY29uZmlnLmNvbG9yU2NhbGUsXG4gICAgICAgIGNvbG9yQWdncmVnYXRpb246IHZpc0NvbmZpZy5jb2xvckFnZ3JlZ2F0aW9uLFxuXG4gICAgICAgIHpvb206IE1hdGgucm91bmQobWFwU3RhdGUuem9vbSksXG4gICAgICAgIHdpZHRoOiBtYXBTdGF0ZS53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBtYXBTdGF0ZS5oZWlnaHQsXG5cbiAgICAgICAgLy8gdXBkYXRlVHJpZ2dlcnNcbiAgICAgICAgdXBkYXRlVHJpZ2dlcnMsXG5cbiAgICAgICAgLy8gY2FsbCBiYWNrIGZyb20gbGF5ZXIgYWZ0ZXIgY2FsY3VsYXRlIGNsdXN0ZXJzXG4gICAgICAgIG9uU2V0Q29sb3JEb21haW46IGxheWVyQ2FsbGJhY2tzLm9uU2V0TGF5ZXJEb21haW5cbiAgICAgIH0pLFxuICAgICAgLy8gaG92ZXIgbGF5ZXJcbiAgICAgIC4uLihob3ZlcmVkT2JqZWN0XG4gICAgICAgID8gW1xuICAgICAgICAgICAgbmV3IFNjYXR0ZXJwbG90TGF5ZXIoe1xuICAgICAgICAgICAgICBpZDogYCR7dGhpcy5pZH0taG92ZXJlZGAsXG4gICAgICAgICAgICAgIGRhdGE6IFtob3ZlcmVkT2JqZWN0XSxcbiAgICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiB0aGlzLmNvbmZpZy5oaWdobGlnaHRDb2xvcixcbiAgICAgICAgICAgICAgZ2V0UmFkaXVzOiBkID0+IGQucmFkaXVzLFxuICAgICAgICAgICAgICByYWRpdXNTY2FsZTogMSxcbiAgICAgICAgICAgICAgcGlja2FibGU6IGZhbHNlXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXSlcbiAgICBdO1xuICB9XG59XG4iXX0=
@@ -52,7 +52,7 @@ function getQuantileDomain(data, valueAccessor, sortFunc) {
52
52
 
53
53
  function getOrdinalDomain(dataContainer, valueAccessor) {
54
54
  var values = dataContainer.mapIndex(valueAccessor);
55
- return (0, _dataUtils.unique)(values).filter(_dataUtils.notNullorUndefined).sort();
55
+ return (0, _dataUtils.uniqueSortedByFrequency)(values);
56
56
  }
57
57
  /**
58
58
  * return linear domain for an array of data
@@ -81,4 +81,4 @@ function getLogDomain(data, valueAccessor) {
81
81
 
82
82
  return [d0 === 0 ? 1e-5 : d0, d1];
83
83
  }
84
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kYXRhLXNjYWxlLXV0aWxzLmpzIl0sIm5hbWVzIjpbImdldFF1YW50aWxlRG9tYWluIiwiZGF0YSIsInZhbHVlQWNjZXNzb3IiLCJzb3J0RnVuYyIsInZhbHVlcyIsIm1hcCIsImZpbHRlciIsIm5vdE51bGxvclVuZGVmaW5lZCIsInNvcnQiLCJnZXRPcmRpbmFsRG9tYWluIiwiZGF0YUNvbnRhaW5lciIsIm1hcEluZGV4IiwiZ2V0TGluZWFyRG9tYWluIiwicmFuZ2UiLCJkIiwiaSIsInVuZGVmaW5lZCIsImdldExvZ0RvbWFpbiIsImQwIiwiZDEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQXJCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNBLGlCQUFULENBQTJCQyxJQUEzQixFQUFpQ0MsYUFBakMsRUFBZ0RDLFFBQWhELEVBQTBEO0FBQy9ELE1BQU1DLE1BQU0sR0FBRyxPQUFPRixhQUFQLEtBQXlCLFVBQXpCLEdBQXNDRCxJQUFJLENBQUNJLEdBQUwsQ0FBU0gsYUFBVCxDQUF0QyxHQUFnRUQsSUFBL0U7QUFFQSxTQUFPRyxNQUFNLENBQUNFLE1BQVAsQ0FBY0MsNkJBQWQsRUFBa0NDLElBQWxDLENBQXVDTCxRQUF2QyxDQUFQO0FBQ0Q7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sU0FBU00sZ0JBQVQsQ0FBMEJDLGFBQTFCLEVBQXlDUixhQUF6QyxFQUF3RDtBQUM3RCxNQUFNRSxNQUFNLEdBQUdNLGFBQWEsQ0FBQ0MsUUFBZCxDQUF1QlQsYUFBdkIsQ0FBZjtBQUVBLFNBQU8sdUJBQU9FLE1BQVAsRUFDSkUsTUFESSxDQUNHQyw2QkFESCxFQUVKQyxJQUZJLEVBQVA7QUFHRDtBQUVEO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxTQUFTSSxlQUFULENBQXlCWCxJQUF6QixFQUErQkMsYUFBL0IsRUFBOEM7QUFDbkQsTUFBTVcsS0FBSyxHQUFHLE9BQU9YLGFBQVAsS0FBeUIsVUFBekIsR0FBc0MscUJBQU9ELElBQVAsRUFBYUMsYUFBYixDQUF0QyxHQUFvRSxxQkFBT0QsSUFBUCxDQUFsRixDQURtRCxDQUVuRDs7QUFDQSxTQUFPWSxLQUFLLENBQUNSLEdBQU4sQ0FBVSxVQUFDUyxDQUFELEVBQUlDLENBQUo7QUFBQSxXQUFXRCxDQUFDLEtBQUtFLFNBQU4sR0FBa0JELENBQWxCLEdBQXNCRCxDQUFqQztBQUFBLEdBQVYsQ0FBUDtBQUNEO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLFNBQVNHLFlBQVQsQ0FBc0JoQixJQUF0QixFQUE0QkMsYUFBNUIsRUFBMkM7QUFBQSx5QkFDL0JVLGVBQWUsQ0FBQ1gsSUFBRCxFQUFPQyxhQUFQLENBRGdCO0FBQUE7QUFBQSxNQUN6Q2dCLEVBRHlDO0FBQUEsTUFDckNDLEVBRHFDOztBQUVoRCxTQUFPLENBQUNELEVBQUUsS0FBSyxDQUFQLEdBQVcsSUFBWCxHQUFrQkEsRUFBbkIsRUFBdUJDLEVBQXZCLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7bm90TnVsbG9yVW5kZWZpbmVkLCB1bmlxdWV9IGZyb20gJy4vZGF0YS11dGlscyc7XG5pbXBvcnQge2V4dGVudH0gZnJvbSAnZDMtYXJyYXknO1xuXG4vKipcbiAqIHJldHVybiBxdWFudGlsZSBkb21haW4gZm9yIGFuIGFycmF5IG9mIGRhdGFcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2RhdGEtc2NhbGUtdXRpbHMnKS5nZXRRdWFudGlsZURvbWFpbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFF1YW50aWxlRG9tYWluKGRhdGEsIHZhbHVlQWNjZXNzb3IsIHNvcnRGdW5jKSB7XG4gIGNvbnN0IHZhbHVlcyA9IHR5cGVvZiB2YWx1ZUFjY2Vzc29yID09PSAnZnVuY3Rpb24nID8gZGF0YS5tYXAodmFsdWVBY2Nlc3NvcikgOiBkYXRhO1xuXG4gIHJldHVybiB2YWx1ZXMuZmlsdGVyKG5vdE51bGxvclVuZGVmaW5lZCkuc29ydChzb3J0RnVuYyk7XG59XG5cbi8qKlxuICogcmV0dXJuIG9yZGluYWwgZG9tYWluIGZvciBhIGRhdGEgY29udGFpbmVyXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9kYXRhLXNjYWxlLXV0aWxzJykuZ2V0T3JkaW5hbERvbWFpbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9yZGluYWxEb21haW4oZGF0YUNvbnRhaW5lciwgdmFsdWVBY2Nlc3Nvcikge1xuICBjb25zdCB2YWx1ZXMgPSBkYXRhQ29udGFpbmVyLm1hcEluZGV4KHZhbHVlQWNjZXNzb3IpO1xuXG4gIHJldHVybiB1bmlxdWUodmFsdWVzKVxuICAgIC5maWx0ZXIobm90TnVsbG9yVW5kZWZpbmVkKVxuICAgIC5zb3J0KCk7XG59XG5cbi8qKlxuICogcmV0dXJuIGxpbmVhciBkb21haW4gZm9yIGFuIGFycmF5IG9mIGRhdGFcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2RhdGEtc2NhbGUtdXRpbHMnKS5nZXRMaW5lYXJEb21haW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5lYXJEb21haW4oZGF0YSwgdmFsdWVBY2Nlc3Nvcikge1xuICBjb25zdCByYW5nZSA9IHR5cGVvZiB2YWx1ZUFjY2Vzc29yID09PSAnZnVuY3Rpb24nID8gZXh0ZW50KGRhdGEsIHZhbHVlQWNjZXNzb3IpIDogZXh0ZW50KGRhdGEpO1xuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiByYW5nZS5tYXAoKGQsIGkpID0+IChkID09PSB1bmRlZmluZWQgPyBpIDogZCkpO1xufVxuXG4vKipcbiAqIHJldHVybiBsaW5lYXIgZG9tYWluIGZvciBhbiBhcnJheSBvZiBkYXRhLiBBIGxvZyBzY2FsZSBkb21haW4gY2Fubm90IGNvbnRhaW4gMFxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZGF0YS1zY2FsZS11dGlscycpLmdldExvZ0RvbWFpbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExvZ0RvbWFpbihkYXRhLCB2YWx1ZUFjY2Vzc29yKSB7XG4gIGNvbnN0IFtkMCwgZDFdID0gZ2V0TGluZWFyRG9tYWluKGRhdGEsIHZhbHVlQWNjZXNzb3IpO1xuICByZXR1cm4gW2QwID09PSAwID8gMWUtNSA6IGQwLCBkMV07XG59XG4iXX0=
84
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kYXRhLXNjYWxlLXV0aWxzLmpzIl0sIm5hbWVzIjpbImdldFF1YW50aWxlRG9tYWluIiwiZGF0YSIsInZhbHVlQWNjZXNzb3IiLCJzb3J0RnVuYyIsInZhbHVlcyIsIm1hcCIsImZpbHRlciIsIm5vdE51bGxvclVuZGVmaW5lZCIsInNvcnQiLCJnZXRPcmRpbmFsRG9tYWluIiwiZGF0YUNvbnRhaW5lciIsIm1hcEluZGV4IiwiZ2V0TGluZWFyRG9tYWluIiwicmFuZ2UiLCJkIiwiaSIsInVuZGVmaW5lZCIsImdldExvZ0RvbWFpbiIsImQwIiwiZDEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQXJCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNBLGlCQUFULENBQTJCQyxJQUEzQixFQUFpQ0MsYUFBakMsRUFBZ0RDLFFBQWhELEVBQTBEO0FBQy9ELE1BQU1DLE1BQU0sR0FBRyxPQUFPRixhQUFQLEtBQXlCLFVBQXpCLEdBQXNDRCxJQUFJLENBQUNJLEdBQUwsQ0FBU0gsYUFBVCxDQUF0QyxHQUFnRUQsSUFBL0U7QUFFQSxTQUFPRyxNQUFNLENBQUNFLE1BQVAsQ0FBY0MsNkJBQWQsRUFBa0NDLElBQWxDLENBQXVDTCxRQUF2QyxDQUFQO0FBQ0Q7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sU0FBU00sZ0JBQVQsQ0FBMEJDLGFBQTFCLEVBQXlDUixhQUF6QyxFQUF3RDtBQUM3RCxNQUFNRSxNQUFNLEdBQUdNLGFBQWEsQ0FBQ0MsUUFBZCxDQUF1QlQsYUFBdkIsQ0FBZjtBQUNBLFNBQU8sd0NBQXdCRSxNQUF4QixDQUFQO0FBQ0Q7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sU0FBU1EsZUFBVCxDQUF5QlgsSUFBekIsRUFBK0JDLGFBQS9CLEVBQThDO0FBQ25ELE1BQU1XLEtBQUssR0FBRyxPQUFPWCxhQUFQLEtBQXlCLFVBQXpCLEdBQXNDLHFCQUFPRCxJQUFQLEVBQWFDLGFBQWIsQ0FBdEMsR0FBb0UscUJBQU9ELElBQVAsQ0FBbEYsQ0FEbUQsQ0FFbkQ7O0FBQ0EsU0FBT1ksS0FBSyxDQUFDUixHQUFOLENBQVUsVUFBQ1MsQ0FBRCxFQUFJQyxDQUFKO0FBQUEsV0FBV0QsQ0FBQyxLQUFLRSxTQUFOLEdBQWtCRCxDQUFsQixHQUFzQkQsQ0FBakM7QUFBQSxHQUFWLENBQVA7QUFDRDtBQUVEO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxTQUFTRyxZQUFULENBQXNCaEIsSUFBdEIsRUFBNEJDLGFBQTVCLEVBQTJDO0FBQUEseUJBQy9CVSxlQUFlLENBQUNYLElBQUQsRUFBT0MsYUFBUCxDQURnQjtBQUFBO0FBQUEsTUFDekNnQixFQUR5QztBQUFBLE1BQ3JDQyxFQURxQzs7QUFFaEQsU0FBTyxDQUFDRCxFQUFFLEtBQUssQ0FBUCxHQUFXLElBQVgsR0FBa0JBLEVBQW5CLEVBQXVCQyxFQUF2QixDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQge25vdE51bGxvclVuZGVmaW5lZCwgdW5pcXVlfSBmcm9tICcuL2RhdGEtdXRpbHMnO1xuaW1wb3J0IHtleHRlbnR9IGZyb20gJ2QzLWFycmF5JztcbmltcG9ydCB7dW5pcXVlU29ydGVkQnlGcmVxdWVuY3l9IGZyb20gJy4vZGF0YS11dGlscyc7XG5cbi8qKlxuICogcmV0dXJuIHF1YW50aWxlIGRvbWFpbiBmb3IgYW4gYXJyYXkgb2YgZGF0YVxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZGF0YS1zY2FsZS11dGlscycpLmdldFF1YW50aWxlRG9tYWlufVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UXVhbnRpbGVEb21haW4oZGF0YSwgdmFsdWVBY2Nlc3Nvciwgc29ydEZ1bmMpIHtcbiAgY29uc3QgdmFsdWVzID0gdHlwZW9mIHZhbHVlQWNjZXNzb3IgPT09ICdmdW5jdGlvbicgPyBkYXRhLm1hcCh2YWx1ZUFjY2Vzc29yKSA6IGRhdGE7XG5cbiAgcmV0dXJuIHZhbHVlcy5maWx0ZXIobm90TnVsbG9yVW5kZWZpbmVkKS5zb3J0KHNvcnRGdW5jKTtcbn1cblxuLyoqXG4gKiByZXR1cm4gb3JkaW5hbCBkb21haW4gZm9yIGEgZGF0YSBjb250YWluZXJcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2RhdGEtc2NhbGUtdXRpbHMnKS5nZXRPcmRpbmFsRG9tYWlufVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3JkaW5hbERvbWFpbihkYXRhQ29udGFpbmVyLCB2YWx1ZUFjY2Vzc29yKSB7XG4gIGNvbnN0IHZhbHVlcyA9IGRhdGFDb250YWluZXIubWFwSW5kZXgodmFsdWVBY2Nlc3Nvcik7XG4gIHJldHVybiB1bmlxdWVTb3J0ZWRCeUZyZXF1ZW5jeSh2YWx1ZXMpO1xufVxuXG4vKipcbiAqIHJldHVybiBsaW5lYXIgZG9tYWluIGZvciBhbiBhcnJheSBvZiBkYXRhXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9kYXRhLXNjYWxlLXV0aWxzJykuZ2V0TGluZWFyRG9tYWlufVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGluZWFyRG9tYWluKGRhdGEsIHZhbHVlQWNjZXNzb3IpIHtcbiAgY29uc3QgcmFuZ2UgPSB0eXBlb2YgdmFsdWVBY2Nlc3NvciA9PT0gJ2Z1bmN0aW9uJyA/IGV4dGVudChkYXRhLCB2YWx1ZUFjY2Vzc29yKSA6IGV4dGVudChkYXRhKTtcbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gcmFuZ2UubWFwKChkLCBpKSA9PiAoZCA9PT0gdW5kZWZpbmVkID8gaSA6IGQpKTtcbn1cblxuLyoqXG4gKiByZXR1cm4gbGluZWFyIGRvbWFpbiBmb3IgYW4gYXJyYXkgb2YgZGF0YS4gQSBsb2cgc2NhbGUgZG9tYWluIGNhbm5vdCBjb250YWluIDBcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2RhdGEtc2NhbGUtdXRpbHMnKS5nZXRMb2dEb21haW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2dEb21haW4oZGF0YSwgdmFsdWVBY2Nlc3Nvcikge1xuICBjb25zdCBbZDAsIGQxXSA9IGdldExpbmVhckRvbWFpbihkYXRhLCB2YWx1ZUFjY2Vzc29yKTtcbiAgcmV0dXJuIFtkMCA9PT0gMCA/IDFlLTUgOiBkMCwgZDFdO1xufVxuIl19
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.unique = unique;
9
+ exports.uniqueSortedByFrequency = uniqueSortedByFrequency;
9
10
  exports.findMapBounds = findMapBounds;
10
11
  exports.getLatLngBounds = getLatLngBounds;
11
12
  exports.clamp = clamp;
@@ -68,6 +69,23 @@ function unique(values) {
68
69
  });
69
70
  return results;
70
71
  }
72
+
73
+ function uniqueSortedByFrequency(values) {
74
+ var frequency = values.reduce(function (res, value) {
75
+ if (notNullorUndefined(value)) {
76
+ if (!res[value]) {
77
+ res[value] = 0;
78
+ }
79
+
80
+ res[value] += 1;
81
+ }
82
+
83
+ return res;
84
+ }, {});
85
+ return Object.keys(frequency).sort(function (a, b) {
86
+ return frequency[b] - frequency[a];
87
+ });
88
+ }
71
89
  /* eslint-disable max-statements */
72
90
 
73
91
  /**
@@ -470,4 +488,4 @@ function datetimeFormatter(timezone) {
470
488
  };
471
489
  };
472
490
  }
473
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kYXRhLXV0aWxzLmpzIl0sIm5hbWVzIjpbIk1BWF9MQVRJVFVERSIsIk1JTl9MQVRJVFVERSIsIk1BWF9MT05HSVRVREUiLCJNSU5fTE9OR0lUVURFIiwidW5pcXVlIiwidmFsdWVzIiwicmVzdWx0cyIsInVuaXF1ZVNldCIsIlNldCIsImZvckVhY2giLCJ2Iiwibm90TnVsbG9yVW5kZWZpbmVkIiwicHVzaCIsImZpbmRNYXBCb3VuZHMiLCJsYXllcnMiLCJhdmFpbGFibGVMYXllckJvdW5kcyIsInJlZHVjZSIsInJlcyIsImwiLCJtZXRhIiwiYm91bmRzIiwibGVuZ3RoIiwibmV3Qm91bmRzIiwiYiIsIk1hdGgiLCJtaW4iLCJtYXgiLCJnZXRMYXRMbmdCb3VuZHMiLCJwb2ludHMiLCJpZHgiLCJsaW1pdCIsImxhdHMiLCJtYXAiLCJkIiwiQXJyYXkiLCJpc0FycmF5IiwiZmlsdGVyIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJzb3J0IiwibnVtYmVyU29ydCIsImNsYW1wIiwidmFsIiwiZ2V0U2FtcGxlRGF0YSIsImRhdGEiLCJzYW1wbGVTaXplIiwiZ2V0VmFsdWUiLCJzYW1wbGVTdGVwIiwiZmxvb3IiLCJvdXRwdXQiLCJpIiwidGltZVRvVW5peE1pbGxpIiwidmFsdWUiLCJmb3JtYXQiLCJtb21lbnQiLCJ1dGMiLCJ2YWx1ZU9mIiwibWF5YmVUb0RhdGUiLCJpc1RpbWUiLCJmaWVsZElkeCIsImRjIiwidmFsdWVBdCIsImluZGV4IiwidW5kZWZpbmVkIiwiaXNOdW1iZXIiLCJpc1BsYWluT2JqZWN0Iiwib2JqIiwiT2JqZWN0IiwiYSIsImdldFNvcnRpbmdGdW5jdGlvbiIsImZpZWxkVHlwZSIsIkFMTF9GSUVMRF9UWVBFUyIsInJlYWwiLCJpbnRlZ2VyIiwidGltZXN0YW1wIiwicHJlY2lzZVJvdW5kIiwibnVtIiwiZGVjaW1hbHMiLCJ0IiwicG93Iiwicm91bmQiLCJzaWduIiwidG9GaXhlZCIsImdldFJvdW5kaW5nRGVjaW1hbEZyb21TdGVwIiwic3RlcCIsImlzTmFOIiwic3BsaXRaZXJvIiwidG9TdHJpbmciLCJzcGxpdCIsInNuYXBUb01hcmtzIiwibWFya3MiLCJub3JtYWxpemVTbGlkZXJWYWx1ZSIsIm1pblZhbHVlIiwicm91bmRWYWxUb1N0ZXAiLCJkZWNpbWFsIiwic3RlcHMiLCJyZW1haW4iLCJjbG9zZXN0Iiwicm91bmRlZCIsImRlZmF1bHRGb3JtYXR0ZXIiLCJTdHJpbmciLCJGSUVMRF9ESVNQTEFZX0ZPUk1BVCIsInN0cmluZyIsImRhdGUiLCJnZW9qc29uIiwiSlNPTiIsInN0cmluZ2lmeSIsInBhcnNlRmllbGRWYWx1ZSIsInR5cGUiLCJhcnJheU1vdmVNdXRhdGUiLCJhcnJheSIsImZyb20iLCJ0byIsInNwbGljZSIsImFycmF5TW92ZSIsInNsaWNlIiwiZ2V0Rm9ybWF0dGVyIiwiZmllbGQiLCJ0b29sdGlwRm9ybWF0IiwiVE9PTFRJUF9GT1JNQVRTIiwiZmluZCIsImYiLCJUT09MVElQX0tFWSIsImFwcGx5RGVmYXVsdEZvcm1hdCIsImFwcGx5Q3VzdG9tRm9ybWF0IiwiVE9PTFRJUF9GT1JNQVRfVFlQRVMiLCJERUNJTUFMIiwiREFURSIsIkRBVEVfVElNRSIsImRhdGV0aW1lRm9ybWF0dGVyIiwiUEVSQ0VOVEFHRSIsIkRFQ0lNQUxfREVDSU1BTF9GSVhFRF8yIiwiQk9PTEVBTiIsImdldEJvb2xlYW5Gb3JtYXR0ZXIiLCJ0aW1lem9uZSIsInRzIiwidHoiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBRUEsSUFBTUEsWUFBWSxHQUFHLEVBQXJCO0FBQ0EsSUFBTUMsWUFBWSxHQUFHLENBQUMsRUFBdEI7QUFDQSxJQUFNQyxhQUFhLEdBQUcsR0FBdEI7QUFDQSxJQUFNQyxhQUFhLEdBQUcsQ0FBQyxHQUF2QjtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDTyxTQUFT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QUFLa0IsaUNBQWdCZ0MsSUFBckI7QUFDQSxTQUFLaEMsaUNBQWdCRyxTQUFyQjtBQUNFLGFBQU91RCxpQkFBaUIsQ0FBQyxJQUFELENBQWpCLENBQXdCNUUsTUFBeEIsQ0FBUDs7QUFDRjtBQUNFLGFBQU8sVUFBQTNDLENBQUM7QUFBQSxlQUFJQSxDQUFKO0FBQUEsT0FBUjtBQVJKO0FBVUQ7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sU0FBU3VILGlCQUFULENBQTJCSyxRQUEzQixFQUFxQztBQUMxQyxTQUFPQSxRQUFRLEdBQ1gsVUFBQWpGLE1BQU07QUFBQSxXQUFJLFVBQUFrRixFQUFFO0FBQUEsYUFDVmpGLDJCQUNHQyxHQURILENBQ09nRixFQURQLEVBRUdDLEVBRkgsQ0FFTUYsUUFGTixFQUdHakYsTUFISCxDQUdVQSxNQUhWLENBRFU7QUFBQSxLQUFOO0FBQUEsR0FESyxHQU1YLFVBQUFBLE1BQU07QUFBQSxXQUFJLFVBQUFrRixFQUFFO0FBQUEsYUFBSWpGLDJCQUFPQyxHQUFQLENBQVdnRixFQUFYLEVBQWVsRixNQUFmLENBQXNCQSxNQUF0QixDQUFKO0FBQUEsS0FBTjtBQUFBLEdBTlY7QUFPRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7QUxMX0ZJRUxEX1RZUEVTfSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5pbXBvcnQge1RPT0xUSVBfRk9STUFUUywgVE9PTFRJUF9GT1JNQVRfVFlQRVMsIFRPT0xUSVBfS0VZfSBmcm9tICdjb25zdGFudHMvdG9vbHRpcCc7XG5pbXBvcnQge2Zvcm1hdCBhcyBkM0Zvcm1hdH0gZnJvbSAnZDMtZm9ybWF0JztcbmltcG9ydCB7YmlzZWN0TGVmdH0gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuXG5jb25zdCBNQVhfTEFUSVRVREUgPSA5MDtcbmNvbnN0IE1JTl9MQVRJVFVERSA9IC05MDtcbmNvbnN0IE1BWF9MT05HSVRVREUgPSAxODA7XG5jb25zdCBNSU5fTE9OR0lUVURFID0gLTE4MDtcblxuLyoqXG4gKiBzaW1wbGUgZ2V0dGluZyB1bmlxdWUgdmFsdWVzIG9mIGFuIGFycmF5XG4gKlxuICogQHBhcmFtIHthcnJheX0gdmFsdWVzXG4gKiBAcmV0dXJucyB7YXJyYXl9IHVuaXF1ZSB2YWx1ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuaXF1ZSh2YWx1ZXMpIHtcbiAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICBjb25zdCB1bmlxdWVTZXQgPSBuZXcgU2V0KHZhbHVlcyk7XG4gIHVuaXF1ZVNldC5mb3JFYWNoKHYgPT4ge1xuICAgIGlmIChub3ROdWxsb3JVbmRlZmluZWQodikpIHtcbiAgICAgIHJlc3VsdHMucHVzaCh2KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0cztcbn1cblxuLyogZXNsaW50LWRpc2FibGUgbWF4LXN0YXRlbWVudHMgKi9cbi8qKlxuICogcmV0dXJuIGNlbnRlciBvZiBtYXAgZnJvbSBnaXZlbiBwb2ludHNcbiAqIEBwYXJhbSB7YXJyYXl9IGxheWVyc1xuICogQHJldHVybnMge29iamVjdH0gY29vcmRpbmF0ZXMgb2YgbWFwIGNlbnRlciwgZW1wdHkgaWYgbm90IGZvdW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTWFwQm91bmRzKGxheWVycykge1xuICAvLyBmaW5kIGJvdW5kcyBpbiBmb3JtYXR0ZWQgbGF5ZXJEYXRhXG4gIC8vIHRha2UgQUxMIGxheWVycyBpbnRvIGFjY291bnQgd2hlbiBmaW5kaW5nIG1hcCBib3VuZHNcbiAgY29uc3QgYXZhaWxhYmxlTGF5ZXJCb3VuZHMgPSBsYXllcnMucmVkdWNlKChyZXMsIGwpID0+IHtcbiAgICBpZiAobC5tZXRhICYmIGwubWV0YS5ib3VuZHMpIHtcbiAgICAgIHJlcy5wdXNoKGwubWV0YS5ib3VuZHMpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9LCBbXSk7XG4gIC8vIHJldHVybiBudWxsIGlmIG5vIGxheWVyIGlzIGF2YWlsYWJsZVxuICBpZiAoYXZhaWxhYmxlTGF5ZXJCb3VuZHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gbWVyZ2UgYm91bmRzIGluIGVhY2ggbGF5ZXJcbiAgY29uc3QgbmV3Qm91bmRzID0gYXZhaWxhYmxlTGF5ZXJCb3VuZHMucmVkdWNlKFxuICAgIChyZXMsIGIpID0+IHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIE1hdGgubWluKHJlc1swXSwgYlswXSksXG4gICAgICAgIE1hdGgubWluKHJlc1sxXSwgYlsxXSksXG4gICAgICAgIE1hdGgubWF4KHJlc1syXSwgYlsyXSksXG4gICAgICAgIE1hdGgubWF4KHJlc1szXSwgYlszXSlcbiAgICAgIF07XG4gICAgfSxcbiAgICBbTUFYX0xPTkdJVFVERSwgTUFYX0xBVElUVURFLCBNSU5fTE9OR0lUVURFLCBNSU5fTEFUSVRVREVdXG4gICk7XG4gIHJldHVybiBuZXdCb3VuZHM7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1zdGF0ZW1lbnRzICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXRMbmdCb3VuZHMocG9pbnRzLCBpZHgsIGxpbWl0KSB7XG4gIGNvbnN0IGxhdHMgPSBwb2ludHNcbiAgICAubWFwKGQgPT4gQXJyYXkuaXNBcnJheShkKSAmJiBkW2lkeF0pXG4gICAgLmZpbHRlcihOdW1iZXIuaXNGaW5pdGUpXG4gICAgLnNvcnQobnVtYmVyU29ydCk7XG5cbiAgaWYgKCFsYXRzLmxlbmd0aCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gY2xhbXAgdG8gbGltaXRcbiAgcmV0dXJuIFtNYXRoLm1heChsYXRzWzBdLCBsaW1pdFswXSksIE1hdGgubWluKGxhdHNbbGF0cy5sZW5ndGggLSAxXSwgbGltaXRbMV0pXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsYW1wKFttaW4sIG1heF0sIHZhbCkge1xuICByZXR1cm4gdmFsIDw9IG1pbiA/IG1pbiA6IHZhbCA+PSBtYXggPyBtYXggOiB2YWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTYW1wbGVEYXRhKGRhdGEsIHNhbXBsZVNpemUgPSA1MDAsIGdldFZhbHVlID0gZCA9PiBkKSB7XG4gIGNvbnN0IHNhbXBsZVN0ZXAgPSBNYXRoLm1heChNYXRoLmZsb29yKGRhdGEubGVuZ3RoIC8gc2FtcGxlU2l6ZSksIDEpO1xuICBjb25zdCBvdXRwdXQgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSArPSBzYW1wbGVTdGVwKSB7XG4gICAgb3V0cHV0LnB1c2goZ2V0VmFsdWUoZGF0YVtpXSkpO1xuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGRpZmZlcmVudCB0aW1lIGZvcm1hdCB0byB1bml4IG1pbGxpc2Vjb25kc1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZGF0YS11dGlscycpLnRpbWVUb1VuaXhNaWxsaX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRpbWVUb1VuaXhNaWxsaSh2YWx1ZSwgZm9ybWF0KSB7XG4gIGlmIChub3ROdWxsb3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgID8gbW9tZW50LnV0Yyh2YWx1ZSwgZm9ybWF0KS52YWx1ZU9mKClcbiAgICAgIDogZm9ybWF0ID09PSAneCdcbiAgICAgID8gdmFsdWUgKiAxMDAwXG4gICAgICA6IHZhbHVlO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9kYXRhLXV0aWxzJykubWF5YmVUb0RhdGV9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXliZVRvRGF0ZShpc1RpbWUsIGZpZWxkSWR4LCBmb3JtYXQsIGRjLCBkKSB7XG4gIGlmIChpc1RpbWUpIHtcbiAgICByZXR1cm4gdGltZVRvVW5peE1pbGxpKGRjLnZhbHVlQXQoZC5pbmRleCwgZmllbGRJZHgpLCBmb3JtYXQpO1xuICB9XG5cbiAgcmV0dXJuIGRjLnZhbHVlQXQoZC5pbmRleCwgZmllbGRJZHgpO1xufVxuXG4vKipcbiAqIHdoZXRoZXIgbnVsbCBvciB1bmRlZmluZWRcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2RhdGEtdXRpbHMnKS5ub3ROdWxsb3JVbmRlZmluZWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3ROdWxsb3JVbmRlZmluZWQoZCkge1xuICByZXR1cm4gZCAhPT0gdW5kZWZpbmVkICYmIGQgIT09IG51bGw7XG59XG5cbi8qKlxuICogV2hldGhlciBkIGlzIGEgbnVtYmVyLCB0aGlzIGZpbHRlcmVkIG91dCBOYU4gYXMgd2VsbFxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZGF0YS11dGlscycpLm5vdE51bGxvclVuZGVmaW5lZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKGQpIHtcbiAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShkKTtcbn1cbi8qKlxuICogd2hldGhlciBudWxsIG9yIHVuZGVmaW5lZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQbGFpbk9iamVjdChvYmopIHtcbiAgcmV0dXJuIG9iaiA9PT0gT2JqZWN0KG9iaikgJiYgdHlwZW9mIG9iaiAhPT0gJ2Z1bmN0aW9uJyAmJiAhQXJyYXkuaXNBcnJheShvYmopO1xufVxuXG4vKipcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2RhdGEtdXRpbHMnKS5udW1iZXJTb3J0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gbnVtYmVyU29ydChhLCBiKSB7XG4gIHJldHVybiBhIC0gYjtcbn1cblxuLyoqXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9kYXRhLXV0aWxzJykuZ2V0U29ydGluZ0Z1bmN0aW9ufVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U29ydGluZ0Z1bmN0aW9uKGZpZWxkVHlwZSkge1xuICBzd2l0Y2ggKGZpZWxkVHlwZSkge1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXA6XG4gICAgICByZXR1cm4gbnVtYmVyU29ydDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIHJvdW5kIG51bWJlciB3aXRoIGV4YWN0IG51bWJlciBvZiBkZWNpbWFsc1xuICogcmV0dXJuIGFzIGEgc3RyaW5nXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9kYXRhLXV0aWxzJykucHJlY2lzZVJvdW5kfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlY2lzZVJvdW5kKG51bSwgZGVjaW1hbHMpIHtcbiAgY29uc3QgdCA9IE1hdGgucG93KDEwLCBkZWNpbWFscyk7XG4gIHJldHVybiAoXG4gICAgTWF0aC5yb3VuZChcbiAgICAgIG51bSAqIHQgKyAoZGVjaW1hbHMgPiAwID8gMSA6IDApICogKE1hdGguc2lnbihudW0pICogKDEwIC8gTWF0aC5wb3coMTAwLCBkZWNpbWFscykpKVxuICAgICkgLyB0XG4gICkudG9GaXhlZChkZWNpbWFscyk7XG59XG5cbi8qKlxuICogZ2V0IG51bWJlciBvZiBkZWNpbWFscyB0byByb3VuZCB0byBmb3Igc2xpZGVyIGZyb20gc3RlcFxuICogQHBhcmFtIHtudW1iZXJ9IHN0ZXBcbiAqIEByZXR1cm5zIHtudW1iZXJ9IC0gbnVtYmVyIG9mIGRlY2ltYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdW5kaW5nRGVjaW1hbEZyb21TdGVwKHN0ZXApIHtcbiAgaWYgKGlzTmFOKHN0ZXApKSB7XG4gICAgYXNzZXJ0KCdzdGVwIGlzIG5vdCBhIG51bWJlcicpO1xuICAgIGFzc2VydChzdGVwKTtcbiAgfVxuXG4gIGNvbnN0IHNwbGl0WmVybyA9IHN0ZXAudG9TdHJpbmcoKS5zcGxpdCgnLicpO1xuICBpZiAoc3BsaXRaZXJvLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIHJldHVybiBzcGxpdFplcm9bMV0ubGVuZ3RoO1xufVxuXG4vKipcbiAqIFVzZSBpbiBzbGlkZXIsIGdpdmVuIGEgbnVtYmVyIGFuZCBhbiBhcnJheSBvZiBudW1iZXJzLCByZXR1cm4gdGhlIG5lYXJzIG51bWJlciBmcm9tIHRoZSBhcnJheVxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZGF0YS11dGlscycpLnNuYXBUb01hcmtzfVxuICogQHBhcmFtIHZhbHVlXG4gKiBAcGFyYW0gbWFya3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNuYXBUb01hcmtzKHZhbHVlLCBtYXJrcykge1xuICAvLyBhbHdheXMgdXNlIGJpbiB4MFxuICBjb25zdCBpID0gYmlzZWN0TGVmdChtYXJrcywgdmFsdWUpO1xuICBpZiAoaSA9PT0gMCkge1xuICAgIHJldHVybiBtYXJrc1tpXTtcbiAgfSBlbHNlIGlmIChpID09PSBtYXJrcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbWFya3NbaSAtIDFdO1xuICB9XG4gIGNvbnN0IGlkeCA9IG1hcmtzW2ldIC0gdmFsdWUgPCB2YWx1ZSAtIG1hcmtzW2kgLSAxXSA/IGkgOiBpIC0gMTtcbiAgcmV0dXJuIG1hcmtzW2lkeF07XG59XG5cbi8qKlxuICogSWYgbWFya3MgaXMgcHJvdmlkZWQsIHNuYXAgdG8gbWFya3MsIGlmIG5vdCBub3JtYWxpemUgdG8gc3RlcFxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZGF0YS11dGlscycpLm5vcm1hbGl6ZVNsaWRlclZhbHVlfVxuICogQHBhcmFtIHZhbFxuICogQHBhcmFtIG1pblZhbHVlXG4gKiBAcGFyYW0gc3RlcFxuICogQHBhcmFtIG1hcmtzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTbGlkZXJWYWx1ZSh2YWwsIG1pblZhbHVlLCBzdGVwLCBtYXJrcykge1xuICBpZiAobWFya3MgJiYgbWFya3MubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHNuYXBUb01hcmtzKHZhbCwgbWFya3MpO1xuICB9XG5cbiAgcmV0dXJuIHJvdW5kVmFsVG9TdGVwKG1pblZhbHVlLCBzdGVwLCB2YWwpO1xufVxuXG4vKipcbiAqIHJvdW5kIHRoZSB2YWx1ZSB0byBzdGVwIGZvciB0aGUgc2xpZGVyXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9kYXRhLXV0aWxzJykucm91bmRWYWxUb1N0ZXB9XG4gKiBAcGFyYW0gbWluVmFsdWVcbiAqIEBwYXJhbSBzdGVwXG4gKiBAcGFyYW0gdmFsXG4gKiBAcmV0dXJucyAtIHJvdW5kZWQgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb3VuZFZhbFRvU3RlcChtaW5WYWx1ZSwgc3RlcCwgdmFsKSB7XG4gIGlmICghaXNOdW1iZXIoc3RlcCkgfHwgIWlzTnVtYmVyKG1pblZhbHVlKSkge1xuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBjb25zdCBkZWNpbWFsID0gZ2V0Um91bmRpbmdEZWNpbWFsRnJvbVN0ZXAoc3RlcCk7XG4gIGNvbnN0IHN0ZXBzID0gTWF0aC5mbG9vcigodmFsIC0gbWluVmFsdWUpIC8gc3RlcCk7XG4gIGxldCByZW1haW4gPSB2YWwgLSAoc3RlcHMgKiBzdGVwICsgbWluVmFsdWUpO1xuXG4gIC8vIGhhcyB0byByb3VuZCBiZWNhdXNlIGphdmFzY3JpcHQgdHVybnMgMC4xIGludG8gMC45OTk5OTk5OTk5OTk5OTg3XG4gIHJlbWFpbiA9IE51bWJlcihwcmVjaXNlUm91bmQocmVtYWluLCA4KSk7XG5cbiAgbGV0IGNsb3Nlc3Q7XG4gIGlmIChyZW1haW4gPT09IDApIHtcbiAgICBjbG9zZXN0ID0gdmFsO1xuICB9IGVsc2UgaWYgKHJlbWFpbiA8IHN0ZXAgLyAyKSB7XG4gICAgY2xvc2VzdCA9IHN0ZXBzICogc3RlcCArIG1pblZhbHVlO1xuICB9IGVsc2Uge1xuICAgIGNsb3Nlc3QgPSAoc3RlcHMgKyAxKSAqIHN0ZXAgKyBtaW5WYWx1ZTtcbiAgfVxuXG4gIC8vIHByZWNpc2Ugcm91bmQgcmV0dXJuIGEgc3RyaW5nIHJvdW5kZWQgdG8gdGhlIGRlZmluZWQgZGVjaW1hbFxuICBjb25zdCByb3VuZGVkID0gcHJlY2lzZVJvdW5kKGNsb3Nlc3QsIGRlY2ltYWwpO1xuXG4gIHJldHVybiBOdW1iZXIocm91bmRlZCk7XG59XG5cbi8qKlxuICogR2V0IHRoZSB2YWx1ZSBmb3JtYXQgYmFzZWQgb24gZmllbGQgYW5kIGZvcm1hdCBvcHRpb25zXG4gKiBVc2VkIGluIHJlbmRlciB0b29sdGlwIHZhbHVlXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9kYXRhLXV0aWxzJykuZGVmYXVsdEZvcm1hdHRlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRGb3JtYXR0ZXIgPSB2ID0+IChub3ROdWxsb3JVbmRlZmluZWQodikgPyBTdHJpbmcodikgOiAnJyk7XG5cbmV4cG9ydCBjb25zdCBGSUVMRF9ESVNQTEFZX0ZPUk1BVCA9IHtcbiAgW0FMTF9GSUVMRF9UWVBFUy5zdHJpbmddOiBkZWZhdWx0Rm9ybWF0dGVyLFxuICBbQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcF06IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMuaW50ZWdlcl06IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMucmVhbF06IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMuYm9vbGVhbl06IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMuZGF0ZV06IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMuZ2VvanNvbl06IGQgPT5cbiAgICB0eXBlb2YgZCA9PT0gJ3N0cmluZydcbiAgICAgID8gZFxuICAgICAgOiBpc1BsYWluT2JqZWN0KGQpXG4gICAgICA/IEpTT04uc3RyaW5naWZ5KGQpXG4gICAgICA6IEFycmF5LmlzQXJyYXkoZClcbiAgICAgID8gYFske1N0cmluZyhkKX1dYFxuICAgICAgOiAnJ1xufTtcblxuLyoqXG4gKiBQYXJzZSBmaWVsZCB2YWx1ZSBhbmQgdHlwZSBhbmQgcmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9kYXRhLXV0aWxzJykucGFyc2VGaWVsZFZhbHVlfVxuICovXG5leHBvcnQgY29uc3QgcGFyc2VGaWVsZFZhbHVlID0gKHZhbHVlLCB0eXBlKSA9PiB7XG4gIGlmICghbm90TnVsbG9yVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHJldHVybiBGSUVMRF9ESVNQTEFZX0ZPUk1BVFt0eXBlXSA/IEZJRUxEX0RJU1BMQVlfRk9STUFUW3R5cGVdKHZhbHVlKSA6IFN0cmluZyh2YWx1ZSk7XG59O1xuXG5jb25zdCBhcnJheU1vdmVNdXRhdGUgPSAoYXJyYXksIGZyb20sIHRvKSA9PiB7XG4gIGFycmF5LnNwbGljZSh0byA8IDAgPyBhcnJheS5sZW5ndGggKyB0byA6IHRvLCAwLCBhcnJheS5zcGxpY2UoZnJvbSwgMSlbMF0pO1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHsqfSBhcnJheVxuICogQHBhcmFtIHsqfSBmcm9tXG4gKiBAcGFyYW0geyp9IHRvXG4gKi9cbmV4cG9ydCBjb25zdCBhcnJheU1vdmUgPSAoYXJyYXksIGZyb20sIHRvKSA9PiB7XG4gIGFycmF5ID0gYXJyYXkuc2xpY2UoKTtcbiAgYXJyYXlNb3ZlTXV0YXRlKGFycmF5LCBmcm9tLCB0byk7XG4gIHJldHVybiBhcnJheTtcbn07XG5cbi8qKlxuICogR2V0IHRoZSB2YWx1ZSBmb3JtYXQgYmFzZWQgb24gZmllbGQgYW5kIGZvcm1hdCBvcHRpb25zXG4gKiBVc2VkIGluIHJlbmRlciB0b29sdGlwIHZhbHVlXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9kYXRhLXV0aWxzJykuZ2V0Rm9ybWF0dGVyfVxuICogQHBhcmFtIGZvcm1hdFxuICogQHBhcmFtIGZpZWxkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtYXR0ZXIoZm9ybWF0LCBmaWVsZCkge1xuICBpZiAoIWZvcm1hdCkge1xuICAgIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xuICB9XG4gIGNvbnN0IHRvb2x0aXBGb3JtYXQgPSBPYmplY3QudmFsdWVzKFRPT0xUSVBfRk9STUFUUykuZmluZChmID0+IGZbVE9PTFRJUF9LRVldID09PSBmb3JtYXQpO1xuXG4gIGlmICh0b29sdGlwRm9ybWF0KSB7XG4gICAgcmV0dXJuIGFwcGx5RGVmYXVsdEZvcm1hdCh0b29sdGlwRm9ybWF0KTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZm9ybWF0ID09PSAnc3RyaW5nJyAmJiBmaWVsZCkge1xuICAgIHJldHVybiBhcHBseUN1c3RvbUZvcm1hdChmb3JtYXQsIGZpZWxkKTtcbiAgfVxuXG4gIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlEZWZhdWx0Rm9ybWF0KHRvb2x0aXBGb3JtYXQpIHtcbiAgaWYgKCF0b29sdGlwRm9ybWF0IHx8ICF0b29sdGlwRm9ybWF0LmZvcm1hdCkge1xuICAgIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xuICB9XG5cbiAgc3dpdGNoICh0b29sdGlwRm9ybWF0LnR5cGUpIHtcbiAgICBjYXNlIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRFQ0lNQUw6XG4gICAgICByZXR1cm4gZDNGb3JtYXQodG9vbHRpcEZvcm1hdC5mb3JtYXQpO1xuICAgIGNhc2UgVE9PTFRJUF9GT1JNQVRfVFlQRVMuREFURTpcbiAgICBjYXNlIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEVfVElNRTpcbiAgICAgIHJldHVybiBkYXRldGltZUZvcm1hdHRlcihudWxsKSh0b29sdGlwRm9ybWF0LmZvcm1hdCk7XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5QRVJDRU5UQUdFOlxuICAgICAgcmV0dXJuIHYgPT4gYCR7ZDNGb3JtYXQoVE9PTFRJUF9GT1JNQVRTLkRFQ0lNQUxfREVDSU1BTF9GSVhFRF8yLmZvcm1hdCkodil9JWA7XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5CT09MRUFOOlxuICAgICAgcmV0dXJuIGdldEJvb2xlYW5Gb3JtYXR0ZXIodG9vbHRpcEZvcm1hdC5mb3JtYXQpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZGVmYXVsdEZvcm1hdHRlcjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Qm9vbGVhbkZvcm1hdHRlcihmb3JtYXQpIHtcbiAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICBjYXNlICcwMSc6XG4gICAgICByZXR1cm4gdiA9PiAodiA/ICcxJyA6ICcwJyk7XG4gICAgY2FzZSAneW4nOlxuICAgICAgcmV0dXJuIHYgPT4gKHYgPyAneWVzJyA6ICdubycpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZGVmYXVsdEZvcm1hdHRlcjtcbiAgfVxufVxuLy8gQWxsb3cgdXNlciB0byBzcGVjaWZ5IGN1c3RvbSB0b29sdGlwIGZvcm1hdCB2aWEgY29uZmlnXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlDdXN0b21Gb3JtYXQoZm9ybWF0LCBmaWVsZCkge1xuICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5yZWFsOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmludGVnZXI6XG4gICAgICByZXR1cm4gZDNGb3JtYXQoZm9ybWF0KTtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5kYXRlOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcDpcbiAgICAgIHJldHVybiBkYXRldGltZUZvcm1hdHRlcihudWxsKShmb3JtYXQpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdiA9PiB2O1xuICB9XG59XG5cbi8qKlxuICogRm9ybWF0IGVwb2NoIG1pbGxpc2Vjb25kcyB3aXRoIGEgZm9ybWF0IHN0cmluZ1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZGF0YS11dGlscycpLmRhdGV0aW1lRm9ybWF0dGVyfSB0aW1lem9uZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZXRpbWVGb3JtYXR0ZXIodGltZXpvbmUpIHtcbiAgcmV0dXJuIHRpbWV6b25lXG4gICAgPyBmb3JtYXQgPT4gdHMgPT5cbiAgICAgICAgbW9tZW50XG4gICAgICAgICAgLnV0Yyh0cylcbiAgICAgICAgICAudHoodGltZXpvbmUpXG4gICAgICAgICAgLmZvcm1hdChmb3JtYXQpXG4gICAgOiBmb3JtYXQgPT4gdHMgPT4gbW9tZW50LnV0Yyh0cykuZm9ybWF0KGZvcm1hdCk7XG59XG4iXX0=
491
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kYXRhLXV0aWxzLmpzIl0sIm5hbWVzIjpbIk1BWF9MQVRJVFVERSIsIk1JTl9MQVRJVFVERSIsIk1BWF9MT05HSVRVREUiLCJNSU5fTE9OR0lUVURFIiwidW5pcXVlIiwidmFsdWVzIiwicmVzdWx0cyIsInVuaXF1ZVNldCIsIlNldCIsImZvckVhY2giLCJ2Iiwibm90TnVsbG9yVW5kZWZpbmVkIiwicHVzaCIsInVuaXF1ZVNvcnRlZEJ5RnJlcXVlbmN5IiwiZnJlcXVlbmN5IiwicmVkdWNlIiwicmVzIiwidmFsdWUiLCJPYmplY3QiLCJrZXlzIiwic29ydCIsImEiLCJiIiwiZmluZE1hcEJvdW5kcyIsImxheWVycyIsImF2YWlsYWJsZUxheWVyQm91bmRzIiwibCIsIm1ldGEiLCJib3VuZHMiLCJsZW5ndGgiLCJuZXdCb3VuZHMiLCJNYXRoIiwibWluIiwibWF4IiwiZ2V0TGF0TG5nQm91bmRzIiwicG9pbnRzIiwiaWR4IiwibGltaXQiLCJsYXRzIiwibWFwIiwiZCIsIkFycmF5IiwiaXNBcnJheSIsImZpbHRlciIsIk51bWJlciIsImlzRmluaXRlIiwibnVtYmVyU29ydCIsImNsYW1wIiwidmFsIiwiZ2V0U2FtcGxlRGF0YSIsImRhdGEiLCJzYW1wbGVTaXplIiwiZ2V0VmFsdWUiLCJzYW1wbGVTdGVwIiwiZmxvb3IiLCJvdXRwdXQiLCJpIiwidGltZVRvVW5peE1pbGxpIiwiZm9ybWF0IiwibW9tZW50IiwidXRjIiwidmFsdWVPZiIsIm1heWJlVG9EYXRlIiwiaXNUaW1lIiwiZmllbGRJZHgiLCJkYyIsInZhbHVlQXQiLCJpbmRleCIsInVuZGVmaW5lZCIsImlzTnVtYmVyIiwiaXNQbGFpbk9iamVjdCIsIm9iaiIsImdldFNvcnRpbmdGdW5jdGlvbiIsImZpZWxkVHlwZSIsIkFMTF9GSUVMRF9UWVBFUyIsInJlYWwiLCJpbnRlZ2VyIiwidGltZXN0YW1wIiwicHJlY2lzZVJvdW5kIiwibnVtIiwiZGVjaW1hbHMiLCJ0IiwicG93Iiwicm91bmQiLCJzaWduIiwidG9GaXhlZCIsImdldFJvdW5kaW5nRGVjaW1hbEZyb21TdGVwIiwic3RlcCIsImlzTmFOIiwic3BsaXRaZXJvIiwidG9TdHJpbmciLCJzcGxpdCIsInNuYXBUb01hcmtzIiwibWFya3MiLCJub3JtYWxpemVTbGlkZXJWYWx1ZSIsIm1pblZhbHVlIiwicm91bmRWYWxUb1N0ZXAiLCJkZWNpbWFsIiwic3RlcHMiLCJyZW1haW4iLCJjbG9zZXN0Iiwicm91bmRlZCIsImRlZmF1bHRGb3JtYXR0ZXIiLCJTdHJpbmciLCJGSUVMRF9ESVNQTEFZX0ZPUk1BVCIsInN0cmluZyIsImRhdGUiLCJnZW9qc29uIiwiSlNPTiIsInN0cmluZ2lmeSIsInBhcnNlRmllbGRWYWx1ZSIsInR5cGUiLCJhcnJheU1vdmVNdXRhdGUiLCJhcnJheSIsImZyb20iLCJ0byIsInNwbGljZSIsImFycmF5TW92ZSIsInNsaWNlIiwiZ2V0Rm9ybWF0dGVyIiwiZmllbGQiLCJ0b29sdGlwRm9ybWF0IiwiVE9PTFRJUF9GT1JNQVRTIiwiZmluZCIsImYiLCJUT09MVElQX0tFWSIsImFwcGx5RGVmYXVsdEZvcm1hdCIsImFwcGx5Q3VzdG9tRm9ybWF0IiwiVE9PTFRJUF9GT1JNQVRfVFlQRVMiLCJERUNJTUFMIiwiREFURSIsIkRBVEVfVElNRSIsImRhdGV0aW1lRm9ybWF0dGVyIiwiUEVSQ0VOVEFHRSIsIkRFQ0lNQUxfREVDSU1BTF9GSVhFRF8yIiwiQk9PTEVBTiIsImdldEJvb2xlYW5Gb3JtYXR0ZXIiLCJ0aW1lem9uZSIsInRzIiwidHoiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUVBLElBQU1BLFlBQVksR0FBRyxFQUFyQjtBQUNBLElBQU1DLFlBQVksR0FBRyxDQUFDLEVBQXRCO0FBQ0EsSUFBTUMsYUFBYSxHQUFHLEdBQXRCO0FBQ0EsSUFBTUMsYUFBYSxHQUFHLENBQUMsR0FBdkI7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ08sU0FBU0MsTUFBVCxDQUFnQkMsTUFBaEIsRUFBd0I7QUFDN0IsTUFBTUMsT0FBTyxHQUFHLEVBQWhCO0FBQ0EsTUFBTUMsU0FBUyxHQUFHLElBQUlDLEdBQUosQ0FBUUgsTUFBUixDQUFsQjtBQUNBRSxFQUFBQSxTQUFTLENBQUNFLE9BQVYsQ0FBa0IsVUFBQUMsQ0FBQyxFQUFJO0FBQ3JCLFFBQUlDLGtCQUFrQixDQUFDRCxDQUFELENBQXRCLEVBQTJCO0FBQ3pCSixNQUFBQSxPQUFPLENBQUNNLElBQVIsQ0FBYUYsQ0FBYjtBQUNEO0FBQ0YsR0FKRDtBQUtBLFNBQU9KLE9BQVA7QUFDRDs7QUFFTSxTQUFTTyx1QkFBVCxDQUFpQ1IsTUFBakMsRUFBeUM7QUFDOUMsTUFBTVMsU0FBUyxHQUFHVCxNQUFNLENBQUNVLE1BQVAsQ0FBYyxVQUFDQyxHQUFELEVBQU1DLEtBQU4sRUFBZ0I7QUFDOUMsUUFBSU4sa0JBQWtCLENBQUNNLEtBQUQsQ0FBdEIsRUFBK0I7QUFDN0IsVUFBSSxDQUFDRCxHQUFHLENBQUNDLEtBQUQsQ0FBUixFQUFpQjtBQUNmRCxRQUFBQSxHQUFHLENBQUNDLEtBQUQsQ0FBSCxHQUFhLENBQWI7QUFDRDs7QUFDREQsTUFBQUEsR0FBRyxDQUFDQyxLQUFELENBQUgsSUFBYyxDQUFkO0FBQ0Q7O0FBQ0QsV0FBT0QsR0FBUDtBQUNELEdBUmlCLEVBUWYsRUFSZSxDQUFsQjtBQVVBLFNBQU9FLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZTCxTQUFaLEVBQXVCTSxJQUF2QixDQUE0QixVQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQSxXQUFVUixTQUFTLENBQUNRLENBQUQsQ0FBVCxHQUFlUixTQUFTLENBQUNPLENBQUQsQ0FBbEM7QUFBQSxHQUE1QixDQUFQO0FBQ0Q7QUFFRDs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxTQUFTRSxhQUFULENBQXVCQyxNQUF2QixFQUErQjtBQUNwQztBQUNBO0FBQ0EsTUFBTUMsb0JBQW9CLEdBQUdELE1BQU0sQ0FBQ1QsTUFBUCxDQUFjLFVBQUNDLEdBQUQsRUFBTVUsQ0FBTixFQUFZO0FBQ3JELFFBQUlBLENBQUMsQ0FBQ0MsSUFBRixJQUFVRCxDQUFDLENBQUNDLElBQUYsQ0FBT0MsTUFBckIsRUFBNkI7QUFDM0JaLE1BQUFBLEdBQUcsQ0FBQ0osSUFBSixDQUFTYyxDQUFDLENBQUNDLElBQUYsQ0FBT0MsTUFBaEI7QUFDRDs7QUFDRCxXQUFPWixHQUFQO0FBQ0QsR0FMNEIsRUFLMUIsRUFMMEIsQ0FBN0IsQ0FIb0MsQ0FTcEM7O0FBQ0EsTUFBSVMsb0JBQW9CLENBQUNJLE1BQXJCLEtBQWdDLENBQXBDLEVBQXVDO0FBQ3JDLFdBQU8sSUFBUDtBQUNELEdBWm1DLENBYXBDOzs7QUFDQSxNQUFNQyxTQUFTLEdBQUdMLG9CQUFvQixDQUFDVixNQUFyQixDQUNoQixVQUFDQyxHQUFELEVBQU1NLENBQU4sRUFBWTtBQUNWLFdBQU8sQ0FDTFMsSUFBSSxDQUFDQyxHQUFMLENBQVNoQixHQUFHLENBQUMsQ0FBRCxDQUFaLEVBQWlCTSxDQUFDLENBQUMsQ0FBRCxDQUFsQixDQURLLEVBRUxTLElBQUksQ0FBQ0MsR0FBTCxDQUFTaEIsR0FBRyxDQUFDLENBQUQsQ0FBWixFQUFpQk0sQ0FBQyxDQUFDLENBQUQsQ0FBbEIsQ0FGSyxFQUdMUyxJQUFJLENBQUNFLEdBQUwsQ0FBU2pCLEdBQUcsQ0FBQyxDQUFELENBQVosRUFBaUJNLENBQUMsQ0FBQyxDQUFELENBQWxCLENBSEssRUFJTFMsSUFBSSxDQUFDRSxHQUFMLENBQVNqQixHQUFHLENBQUMsQ0FBRCxDQUFaLEVBQWlCTSxDQUFDLENBQUMsQ0FBRCxDQUFsQixDQUpLLENBQVA7QUFNRCxHQVJlLEVBU2hCLENBQUNwQixhQUFELEVBQWdCRixZQUFoQixFQUE4QkcsYUFBOUIsRUFBNkNGLFlBQTdDLENBVGdCLENBQWxCO0FBV0EsU0FBTzZCLFNBQVA7QUFDRDtBQUNEOzs7QUFFTyxTQUFTSSxlQUFULENBQXlCQyxNQUF6QixFQUFpQ0MsR0FBakMsRUFBc0NDLEtBQXRDLEVBQTZDO0FBQ2xELE1BQU1DLElBQUksR0FBR0gsTUFBTSxDQUNoQkksR0FEVSxDQUNOLFVBQUFDLENBQUM7QUFBQSxXQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0YsQ0FBZCxLQUFvQkEsQ0FBQyxDQUFDSixHQUFELENBQXpCO0FBQUEsR0FESyxFQUVWTyxNQUZVLENBRUhDLE1BQU0sQ0FBQ0MsUUFGSixFQUdWekIsSUFIVSxDQUdMMEIsVUFISyxDQUFiOztBQUtBLE1BQUksQ0FBQ1IsSUFBSSxDQUFDVCxNQUFWLEVBQWtCO0FBQ2hCLFdBQU8sSUFBUDtBQUNELEdBUmlELENBVWxEOzs7QUFDQSxTQUFPLENBQUNFLElBQUksQ0FBQ0UsR0FBTCxDQUFTSyxJQUFJLENBQUMsQ0FBRCxDQUFiLEVBQWtCRCxLQUFLLENBQUMsQ0FBRCxDQUF2QixDQUFELEVBQThCTixJQUFJLENBQUNDLEdBQUwsQ0FBU00sSUFBSSxDQUFDQSxJQUFJLENBQUNULE1BQUwsR0FBYyxDQUFmLENBQWIsRUFBZ0NRLEtBQUssQ0FBQyxDQUFELENBQXJDLENBQTlCLENBQVA7QUFDRDs7QUFFTSxTQUFTVSxLQUFULE9BQTJCQyxHQUEzQixFQUFnQztBQUFBO0FBQUEsTUFBaEJoQixHQUFnQjtBQUFBLE1BQVhDLEdBQVc7O0FBQ3JDLFNBQU9lLEdBQUcsSUFBSWhCLEdBQVAsR0FBYUEsR0FBYixHQUFtQmdCLEdBQUcsSUFBSWYsR0FBUCxHQUFhQSxHQUFiLEdBQW1CZSxHQUE3QztBQUNEOztBQUVNLFNBQVNDLGFBQVQsQ0FBdUJDLElBQXZCLEVBQWtFO0FBQUEsTUFBckNDLFVBQXFDLHVFQUF4QixHQUF3QjtBQUFBLE1BQW5CQyxRQUFtQix1RUFBUixVQUFBWixDQUFDO0FBQUEsV0FBSUEsQ0FBSjtBQUFBLEdBQU87QUFDdkUsTUFBTWEsVUFBVSxHQUFHdEIsSUFBSSxDQUFDRSxHQUFMLENBQVNGLElBQUksQ0FBQ3VCLEtBQUwsQ0FBV0osSUFBSSxDQUFDckIsTUFBTCxHQUFjc0IsVUFBekIsQ0FBVCxFQUErQyxDQUEvQyxDQUFuQjtBQUNBLE1BQU1JLE1BQU0sR0FBRyxFQUFmOztBQUNBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR04sSUFBSSxDQUFDckIsTUFBekIsRUFBaUMyQixDQUFDLElBQUlILFVBQXRDLEVBQWtEO0FBQ2hERSxJQUFBQSxNQUFNLENBQUMzQyxJQUFQLENBQVl3QyxRQUFRLENBQUNGLElBQUksQ0FBQ00sQ0FBRCxDQUFMLENBQXBCO0FBQ0Q7O0FBRUQsU0FBT0QsTUFBUDtBQUNEO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLFNBQVNFLGVBQVQsQ0FBeUJ4QyxLQUF6QixFQUFnQ3lDLE1BQWhDLEVBQXdDO0FBQzdDLE1BQUkvQyxrQkFBa0IsQ0FBQ00sS0FBRCxDQUF0QixFQUErQjtBQUM3QixXQUFPLE9BQU9BLEtBQVAsS0FBaUIsUUFBakIsR0FDSDBDLDJCQUFPQyxHQUFQLENBQVczQyxLQUFYLEVBQWtCeUMsTUFBbEIsRUFBMEJHLE9BQTFCLEVBREcsR0FFSEgsTUFBTSxLQUFLLEdBQVgsR0FDQXpDLEtBQUssR0FBRyxJQURSLEdBRUFBLEtBSko7QUFLRDs7QUFDRCxTQUFPLElBQVA7QUFDRDtBQUVEO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxTQUFTNkMsV0FBVCxDQUFxQkMsTUFBckIsRUFBNkJDLFFBQTdCLEVBQXVDTixNQUF2QyxFQUErQ08sRUFBL0MsRUFBbUR6QixDQUFuRCxFQUFzRDtBQUMzRCxNQUFJdUIsTUFBSixFQUFZO0FBQ1YsV0FBT04sZUFBZSxDQUFDUSxFQUFFLENBQUNDLE9BQUgsQ0FBVzFCLENBQUMsQ0FBQzJCLEtBQWIsRUFBb0JILFFBQXBCLENBQUQsRUFBZ0NOLE1BQWhDLENBQXRCO0FBQ0Q7O0FBRUQsU0FBT08sRUFBRSxDQUFDQyxPQUFILENBQVcxQixDQUFDLENBQUMyQixLQUFiLEVBQW9CSCxRQUFwQixDQUFQO0FBQ0Q7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sU0FBU3JELGtCQUFULENBQTRCNkIsQ0FBNUIsRUFBK0I7QUFDcEMsU0FBT0EsQ0FBQyxLQUFLNEIsU0FBTixJQUFtQjVCLENBQUMsS0FBSyxJQUFoQztBQUNEO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLFNBQVM2QixRQUFULENBQWtCN0IsQ0FBbEIsRUFBcUI7QUFDMUIsU0FBT0ksTUFBTSxDQUFDQyxRQUFQLENBQWdCTCxDQUFoQixDQUFQO0FBQ0Q7QUFDRDtBQUNBO0FBQ0E7OztBQUNPLFNBQVM4QixhQUFULENBQXVCQyxHQUF2QixFQUE0QjtBQUNqQyxTQUFPQSxHQUFHLEtBQUtyRCxNQUFNLENBQUNxRCxHQUFELENBQWQsSUFBdUIsT0FBT0EsR0FBUCxLQUFlLFVBQXRDLElBQW9ELENBQUM5QixLQUFLLENBQUNDLE9BQU4sQ0FBYzZCLEdBQWQsQ0FBNUQ7QUFDRDtBQUVEO0FBQ0E7QUFDQTs7O0FBQ08sU0FBU3pCLFVBQVQsQ0FBb0J6QixDQUFwQixFQUF1QkMsQ0FBdkIsRUFBMEI7QUFDL0IsU0FBT0QsQ0FBQyxHQUFHQyxDQUFYO0FBQ0Q7QUFFRDtBQUNBO0FBQ0E7OztBQUNPLFNBQVNrRCxrQkFBVCxDQUE0QkMsU0FBNUIsRUFBdUM7QUFDNUMsVUFBUUEsU0FBUjtBQUNFLFNBQUtDLGlDQUFnQkMsSUFBckI7QUFDQSxTQUFLRCxpQ0FBZ0JFLE9BQXJCO0FBQ0EsU0FBS0YsaUNBQWdCRyxTQUFyQjtBQUNFLGFBQU8vQixVQUFQOztBQUNGO0FBQ0UsYUFBT3NCLFNBQVA7QUFOSjtBQVFEO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sU0FBU1UsWUFBVCxDQUFzQkMsR0FBdEIsRUFBMkJDLFFBQTNCLEVBQXFDO0FBQzFDLE1BQU1DLENBQUMsR0FBR2xELElBQUksQ0FBQ21ELEdBQUwsQ0FBUyxFQUFULEVBQWFGLFFBQWIsQ0FBVjtBQUNBLFNBQU8sQ0FDTGpELElBQUksQ0FBQ29ELEtBQUwsQ0FDRUosR0FBRyxHQUFHRSxDQUFOLEdBQVUsQ0FBQ0QsUUFBUSxHQUFHLENBQVgsR0FBZSxDQUFmLEdBQW1CLENBQXBCLEtBQTBCakQsSUFBSSxDQUFDcUQsSUFBTCxDQUFVTCxHQUFWLEtBQWtCLEtBQUtoRCxJQUFJLENBQUNtRCxHQUFMLENBQVMsR0FBVCxFQUFjRixRQUFkLENBQXZCLENBQTFCLENBRFosSUFFSUMsQ0FIQyxFQUlMSSxPQUpLLENBSUdMLFFBSkgsQ0FBUDtBQUtEO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sU0FBU00sMEJBQVQsQ0FBb0NDLElBQXBDLEVBQTBDO0FBQy9DLE1BQUlDLEtBQUssQ0FBQ0QsSUFBRCxDQUFULEVBQWlCO0FBQ2YsNEJBQU8sc0JBQVA7QUFDQSw0QkFBT0EsSUFBUDtBQUNEOztBQUVELE1BQU1FLFNBQVMsR0FBR0YsSUFBSSxDQUFDRyxRQUFMLEdBQWdCQyxLQUFoQixDQUFzQixHQUF0QixDQUFsQjs7QUFDQSxNQUFJRixTQUFTLENBQUM1RCxNQUFWLEtBQXFCLENBQXpCLEVBQTRCO0FBQzFCLFdBQU8sQ0FBUDtBQUNEOztBQUNELFNBQU80RCxTQUFTLENBQUMsQ0FBRCxDQUFULENBQWE1RCxNQUFwQjtBQUNEO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxTQUFTK0QsV0FBVCxDQUFxQjNFLEtBQXJCLEVBQTRCNEUsS0FBNUIsRUFBbUM7QUFDeEM7QUFDQSxNQUFNckMsQ0FBQyxHQUFHLHlCQUFXcUMsS0FBWCxFQUFrQjVFLEtBQWxCLENBQVY7O0FBQ0EsTUFBSXVDLENBQUMsS0FBSyxDQUFWLEVBQWE7QUFDWCxXQUFPcUMsS0FBSyxDQUFDckMsQ0FBRCxDQUFaO0FBQ0QsR0FGRCxNQUVPLElBQUlBLENBQUMsS0FBS3FDLEtBQUssQ0FBQ2hFLE1BQWhCLEVBQXdCO0FBQzdCLFdBQU9nRSxLQUFLLENBQUNyQyxDQUFDLEdBQUcsQ0FBTCxDQUFaO0FBQ0Q7O0FBQ0QsTUFBTXBCLEdBQUcsR0FBR3lELEtBQUssQ0FBQ3JDLENBQUQsQ0FBTCxHQUFXdkMsS0FBWCxHQUFtQkEsS0FBSyxHQUFHNEUsS0FBSyxDQUFDckMsQ0FBQyxHQUFHLENBQUwsQ0FBaEMsR0FBMENBLENBQTFDLEdBQThDQSxDQUFDLEdBQUcsQ0FBOUQ7QUFDQSxTQUFPcUMsS0FBSyxDQUFDekQsR0FBRCxDQUFaO0FBQ0Q7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxTQUFTMEQsb0JBQVQsQ0FBOEI5QyxHQUE5QixFQUFtQytDLFFBQW5DLEVBQTZDUixJQUE3QyxFQUFtRE0sS0FBbkQsRUFBMEQ7QUFDL0QsTUFBSUEsS0FBSyxJQUFJQSxLQUFLLENBQUNoRSxNQUFuQixFQUEyQjtBQUN6QixXQUFPK0QsV0FBVyxDQUFDNUMsR0FBRCxFQUFNNkMsS0FBTixDQUFsQjtBQUNEOztBQUVELFNBQU9HLGNBQWMsQ0FBQ0QsUUFBRCxFQUFXUixJQUFYLEVBQWlCdkMsR0FBakIsQ0FBckI7QUFDRDtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLFNBQVNnRCxjQUFULENBQXdCRCxRQUF4QixFQUFrQ1IsSUFBbEMsRUFBd0N2QyxHQUF4QyxFQUE2QztBQUNsRCxNQUFJLENBQUNxQixRQUFRLENBQUNrQixJQUFELENBQVQsSUFBbUIsQ0FBQ2xCLFFBQVEsQ0FBQzBCLFFBQUQsQ0FBaEMsRUFBNEM7QUFDMUMsV0FBTy9DLEdBQVA7QUFDRDs7QUFFRCxNQUFNaUQsT0FBTyxHQUFHWCwwQkFBMEIsQ0FBQ0MsSUFBRCxDQUExQztBQUNBLE1BQU1XLEtBQUssR0FBR25FLElBQUksQ0FBQ3VCLEtBQUwsQ0FBVyxDQUFDTixHQUFHLEdBQUcrQyxRQUFQLElBQW1CUixJQUE5QixDQUFkO0FBQ0EsTUFBSVksTUFBTSxHQUFHbkQsR0FBRyxJQUFJa0QsS0FBSyxHQUFHWCxJQUFSLEdBQWVRLFFBQW5CLENBQWhCLENBUGtELENBU2xEOztBQUNBSSxFQUFBQSxNQUFNLEdBQUd2RCxNQUFNLENBQUNrQyxZQUFZLENBQUNxQixNQUFELEVBQVMsQ0FBVCxDQUFiLENBQWY7QUFFQSxNQUFJQyxPQUFKOztBQUNBLE1BQUlELE1BQU0sS0FBSyxDQUFmLEVBQWtCO0FBQ2hCQyxJQUFBQSxPQUFPLEdBQUdwRCxHQUFWO0FBQ0QsR0FGRCxNQUVPLElBQUltRCxNQUFNLEdBQUdaLElBQUksR0FBRyxDQUFwQixFQUF1QjtBQUM1QmEsSUFBQUEsT0FBTyxHQUFHRixLQUFLLEdBQUdYLElBQVIsR0FBZVEsUUFBekI7QUFDRCxHQUZNLE1BRUE7QUFDTEssSUFBQUEsT0FBTyxHQUFHLENBQUNGLEtBQUssR0FBRyxDQUFULElBQWNYLElBQWQsR0FBcUJRLFFBQS9CO0FBQ0QsR0FuQmlELENBcUJsRDs7O0FBQ0EsTUFBTU0sT0FBTyxHQUFHdkIsWUFBWSxDQUFDc0IsT0FBRCxFQUFVSCxPQUFWLENBQTVCO0FBRUEsU0FBT3JELE1BQU0sQ0FBQ3lELE9BQUQsQ0FBYjtBQUNEO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFtQixDQUFBNUYsQ0FBQztBQUFBLFNBQUtDLGtCQUFrQixDQUFDRCxDQUFELENBQWxCLEdBQXdCNkYsTUFBTSxDQUFDN0YsQ0FBRCxDQUE5QixHQUFvQyxFQUF6QztBQUFBLENBQTFCOzs7QUFFQSxJQUFNOEYsb0JBQW9CLHdGQUM5QjlCLGlDQUFnQitCLE1BRGMsRUFDTEgsZ0JBREssMkRBRTlCNUIsaUNBQWdCRyxTQUZjLEVBRUZ5QixnQkFGRSwyREFHOUI1QixpQ0FBZ0JFLE9BSGMsRUFHSjBCLGdCQUhJLDJEQUk5QjVCLGlDQUFnQkMsSUFKYyxFQUlQMkIsZ0JBSk8sMkRBSzlCNUIsMkNBTDhCLEVBS0o0QixnQkFMSSwyREFNOUI1QixpQ0FBZ0JnQyxJQU5jLEVBTVBKLGdCQU5PLDJEQU85QjVCLGlDQUFnQmlDLE9BUGMsRUFPSixVQUFBbkUsQ0FBQztBQUFBLFNBQzFCLE9BQU9BLENBQVAsS0FBYSxRQUFiLEdBQ0lBLENBREosR0FFSThCLGFBQWEsQ0FBQzlCLENBQUQsQ0FBYixHQUNBb0UsSUFBSSxDQUFDQyxTQUFMLENBQWVyRSxDQUFmLENBREEsR0FFQUMsS0FBSyxDQUFDQyxPQUFOLENBQWNGLENBQWQsZUFDSStELE1BQU0sQ0FBQy9ELENBQUQsQ0FEVixTQUVBLEVBUHNCO0FBQUEsQ0FQRyx5QkFBMUI7QUFpQlA7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFDTyxJQUFNc0UsZUFBZSxHQUFHLFNBQWxCQSxlQUFrQixDQUFDN0YsS0FBRCxFQUFROEYsSUFBUixFQUFpQjtBQUM5QyxNQUFJLENBQUNwRyxrQkFBa0IsQ0FBQ00sS0FBRCxDQUF2QixFQUFnQztBQUM5QixXQUFPLEVBQVA7QUFDRDs7QUFFRCxTQUFPdUYsb0JBQW9CLENBQUNPLElBQUQsQ0FBcEIsR0FBNkJQLG9CQUFvQixDQUFDTyxJQUFELENBQXBCLENBQTJCOUYsS0FBM0IsQ0FBN0IsR0FBaUVzRixNQUFNLENBQUN0RixLQUFELENBQTlFO0FBQ0QsQ0FOTTs7OztBQVFQLElBQU0rRixlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLENBQUNDLEtBQUQsRUFBUUMsSUFBUixFQUFjQyxFQUFkLEVBQXFCO0FBQzNDRixFQUFBQSxLQUFLLENBQUNHLE1BQU4sQ0FBYUQsRUFBRSxHQUFHLENBQUwsR0FBU0YsS0FBSyxDQUFDcEYsTUFBTixHQUFlc0YsRUFBeEIsR0FBNkJBLEVBQTFDLEVBQThDLENBQTlDLEVBQWlERixLQUFLLENBQUNHLE1BQU4sQ0FBYUYsSUFBYixFQUFtQixDQUFuQixFQUFzQixDQUF0QixDQUFqRDtBQUNELENBRkQ7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1HLFNBQVMsR0FBRyxTQUFaQSxTQUFZLENBQUNKLEtBQUQsRUFBUUMsSUFBUixFQUFjQyxFQUFkLEVBQXFCO0FBQzVDRixFQUFBQSxLQUFLLEdBQUdBLEtBQUssQ0FBQ0ssS0FBTixFQUFSO0FBQ0FOLEVBQUFBLGVBQWUsQ0FBQ0MsS0FBRCxFQUFRQyxJQUFSLEVBQWNDLEVBQWQsQ0FBZjtBQUNBLFNBQU9GLEtBQVA7QUFDRCxDQUpNO0FBTVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBQ08sU0FBU00sWUFBVCxDQUFzQjdELE1BQXRCLEVBQThCOEQsS0FBOUIsRUFBcUM7QUFDMUMsTUFBSSxDQUFDOUQsTUFBTCxFQUFhO0FBQ1gsV0FBTzRDLGdCQUFQO0FBQ0Q7O0FBQ0QsTUFBTW1CLGFBQWEsR0FBR3ZHLE1BQU0sQ0FBQ2IsTUFBUCxDQUFjcUgsd0JBQWQsRUFBK0JDLElBQS9CLENBQW9DLFVBQUFDLENBQUM7QUFBQSxXQUFJQSxDQUFDLENBQUNDLG9CQUFELENBQUQsS0FBbUJuRSxNQUF2QjtBQUFBLEdBQXJDLENBQXRCOztBQUVBLE1BQUkrRCxhQUFKLEVBQW1CO0FBQ2pCLFdBQU9LLGtCQUFrQixDQUFDTCxhQUFELENBQXpCO0FBQ0QsR0FGRCxNQUVPLElBQUksT0FBTy9ELE1BQVAsS0FBa0IsUUFBbEIsSUFBOEI4RCxLQUFsQyxFQUF5QztBQUM5QyxXQUFPTyxpQkFBaUIsQ0FBQ3JFLE1BQUQsRUFBUzhELEtBQVQsQ0FBeEI7QUFDRDs7QUFFRCxTQUFPbEIsZ0JBQVA7QUFDRDs7QUFFTSxTQUFTd0Isa0JBQVQsQ0FBNEJMLGFBQTVCLEVBQTJDO0FBQ2hELE1BQUksQ0FBQ0EsYUFBRCxJQUFrQixDQUFDQSxhQUFhLENBQUMvRCxNQUFyQyxFQUE2QztBQUMzQyxXQUFPNEMsZ0JBQVA7QUFDRDs7QUFFRCxVQUFRbUIsYUFBYSxDQUFDVixJQUF0QjtBQUNFLFNBQUtpQiw4QkFBcUJDLE9BQTFCO0FBQ0UsYUFBTyxzQkFBU1IsYUFBYSxDQUFDL0QsTUFBdkIsQ0FBUDs7QUFDRixTQUFLc0UsOEJBQXFCRSxJQUExQjtBQUNBLFNBQUtGLDhCQUFxQkcsU0FBMUI7QUFDRSxhQUFPQyxpQkFBaUIsQ0FBQyxJQUFELENBQWpCLENBQXdCWCxhQUFhLENBQUMvRCxNQUF0QyxDQUFQOztBQUNGLFNBQUtzRSw4QkFBcUJLLFVBQTFCO0FBQ0UsYUFBTyxVQUFBM0gsQ0FBQztBQUFBLHlCQUFPLHNCQUFTZ0gseUJBQWdCWSx1QkFBaEIsQ0FBd0M1RSxNQUFqRCxFQUF5RGhELENBQXpELENBQVA7QUFBQSxPQUFSOztBQUNGLFNBQUtzSCw4QkFBcUJPLE9BQTFCO0FBQ0UsYUFBT0MsbUJBQW1CLENBQUNmLGFBQWEsQ0FBQy9ELE1BQWYsQ0FBMUI7O0FBQ0Y7QUFDRSxhQUFPNEMsZ0JBQVA7QUFYSjtBQWFEOztBQUVNLFNBQVNrQyxtQkFBVCxDQUE2QjlFLE1BQTdCLEVBQXFDO0FBQzFDLFVBQVFBLE1BQVI7QUFDRSxTQUFLLElBQUw7QUFDRSxhQUFPLFVBQUFoRCxDQUFDO0FBQUEsZUFBS0EsQ0FBQyxHQUFHLEdBQUgsR0FBUyxHQUFmO0FBQUEsT0FBUjs7QUFDRixTQUFLLElBQUw7QUFDRSxhQUFPLFVBQUFBLENBQUM7QUFBQSxlQUFLQSxDQUFDLEdBQUcsS0FBSCxHQUFXLElBQWpCO0FBQUEsT0FBUjs7QUFDRjtBQUNFLGFBQU80RixnQkFBUDtBQU5KO0FBUUQsQyxDQUNEOzs7QUFDTyxTQUFTeUIsaUJBQVQsQ0FBMkJyRSxNQUEzQixFQUFtQzhELEtBQW5DLEVBQTBDO0FBQy9DLFVBQVFBLEtBQUssQ0FBQ1QsSUFBZDtBQUNFLFNBQUtyQyxpQ0FBZ0JDLElBQXJCO0FBQ0EsU0FBS0QsaUNBQWdCRSxPQUFyQjtBQUNFLGFBQU8sc0JBQVNsQixNQUFULENBQVA7O0FBQ0YsU0FBS2dCLGlDQUFnQmdDLElBQXJCO0FBQ0EsU0FBS2hDLGlDQUFnQkcsU0FBckI7QUFDRSxhQUFPdUQsaUJBQWlCLENBQUMsSUFBRCxDQUFqQixDQUF3QjFFLE1BQXhCLENBQVA7O0FBQ0Y7QUFDRSxhQUFPLFVBQUFoRCxDQUFDO0FBQUEsZUFBSUEsQ0FBSjtBQUFBLE9BQVI7QUFSSjtBQVVEO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLFNBQVMwSCxpQkFBVCxDQUEyQkssUUFBM0IsRUFBcUM7QUFDMUMsU0FBT0EsUUFBUSxHQUNYLFVBQUEvRSxNQUFNO0FBQUEsV0FBSSxVQUFBZ0YsRUFBRTtBQUFBLGFBQ1YvRSwyQkFDR0MsR0FESCxDQUNPOEUsRUFEUCxFQUVHQyxFQUZILENBRU1GLFFBRk4sRUFHRy9FLE1BSEgsQ0FHVUEsTUFIVixDQURVO0FBQUEsS0FBTjtBQUFBLEdBREssR0FNWCxVQUFBQSxNQUFNO0FBQUEsV0FBSSxVQUFBZ0YsRUFBRTtBQUFBLGFBQUkvRSwyQkFBT0MsR0FBUCxDQUFXOEUsRUFBWCxFQUFlaEYsTUFBZixDQUFzQkEsTUFBdEIsQ0FBSjtBQUFBLEtBQU47QUFBQSxHQU5WO0FBT0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQge0FMTF9GSUVMRF9UWVBFU30gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuaW1wb3J0IHtUT09MVElQX0ZPUk1BVFMsIFRPT0xUSVBfRk9STUFUX1RZUEVTLCBUT09MVElQX0tFWX0gZnJvbSAnY29uc3RhbnRzL3Rvb2x0aXAnO1xuaW1wb3J0IHtmb3JtYXQgYXMgZDNGb3JtYXR9IGZyb20gJ2QzLWZvcm1hdCc7XG5pbXBvcnQge2Jpc2VjdExlZnR9IGZyb20gJ2QzLWFycmF5JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcblxuY29uc3QgTUFYX0xBVElUVURFID0gOTA7XG5jb25zdCBNSU5fTEFUSVRVREUgPSAtOTA7XG5jb25zdCBNQVhfTE9OR0lUVURFID0gMTgwO1xuY29uc3QgTUlOX0xPTkdJVFVERSA9IC0xODA7XG5cbi8qKlxuICogc2ltcGxlIGdldHRpbmcgdW5pcXVlIHZhbHVlcyBvZiBhbiBhcnJheVxuICpcbiAqIEBwYXJhbSB7YXJyYXl9IHZhbHVlc1xuICogQHJldHVybnMge2FycmF5fSB1bmlxdWUgdmFsdWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmlxdWUodmFsdWVzKSB7XG4gIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgY29uc3QgdW5pcXVlU2V0ID0gbmV3IFNldCh2YWx1ZXMpO1xuICB1bmlxdWVTZXQuZm9yRWFjaCh2ID0+IHtcbiAgICBpZiAobm90TnVsbG9yVW5kZWZpbmVkKHYpKSB7XG4gICAgICByZXN1bHRzLnB1c2godik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlxdWVTb3J0ZWRCeUZyZXF1ZW5jeSh2YWx1ZXMpIHtcbiAgY29uc3QgZnJlcXVlbmN5ID0gdmFsdWVzLnJlZHVjZSgocmVzLCB2YWx1ZSkgPT4ge1xuICAgIGlmIChub3ROdWxsb3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICBpZiAoIXJlc1t2YWx1ZV0pIHtcbiAgICAgICAgcmVzW3ZhbHVlXSA9IDA7XG4gICAgICB9XG4gICAgICByZXNbdmFsdWVdICs9IDE7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH0sIHt9KTtcblxuICByZXR1cm4gT2JqZWN0LmtleXMoZnJlcXVlbmN5KS5zb3J0KChhLCBiKSA9PiBmcmVxdWVuY3lbYl0gLSBmcmVxdWVuY3lbYV0pO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtc3RhdGVtZW50cyAqL1xuLyoqXG4gKiByZXR1cm4gY2VudGVyIG9mIG1hcCBmcm9tIGdpdmVuIHBvaW50c1xuICogQHBhcmFtIHthcnJheX0gbGF5ZXJzXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBjb29yZGluYXRlcyBvZiBtYXAgY2VudGVyLCBlbXB0eSBpZiBub3QgZm91bmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRNYXBCb3VuZHMobGF5ZXJzKSB7XG4gIC8vIGZpbmQgYm91bmRzIGluIGZvcm1hdHRlZCBsYXllckRhdGFcbiAgLy8gdGFrZSBBTEwgbGF5ZXJzIGludG8gYWNjb3VudCB3aGVuIGZpbmRpbmcgbWFwIGJvdW5kc1xuICBjb25zdCBhdmFpbGFibGVMYXllckJvdW5kcyA9IGxheWVycy5yZWR1Y2UoKHJlcywgbCkgPT4ge1xuICAgIGlmIChsLm1ldGEgJiYgbC5tZXRhLmJvdW5kcykge1xuICAgICAgcmVzLnB1c2gobC5tZXRhLmJvdW5kcyk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH0sIFtdKTtcbiAgLy8gcmV0dXJuIG51bGwgaWYgbm8gbGF5ZXIgaXMgYXZhaWxhYmxlXG4gIGlmIChhdmFpbGFibGVMYXllckJvdW5kcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBtZXJnZSBib3VuZHMgaW4gZWFjaCBsYXllclxuICBjb25zdCBuZXdCb3VuZHMgPSBhdmFpbGFibGVMYXllckJvdW5kcy5yZWR1Y2UoXG4gICAgKHJlcywgYikgPT4ge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgTWF0aC5taW4ocmVzWzBdLCBiWzBdKSxcbiAgICAgICAgTWF0aC5taW4ocmVzWzFdLCBiWzFdKSxcbiAgICAgICAgTWF0aC5tYXgocmVzWzJdLCBiWzJdKSxcbiAgICAgICAgTWF0aC5tYXgocmVzWzNdLCBiWzNdKVxuICAgICAgXTtcbiAgICB9LFxuICAgIFtNQVhfTE9OR0lUVURFLCBNQVhfTEFUSVRVREUsIE1JTl9MT05HSVRVREUsIE1JTl9MQVRJVFVERV1cbiAgKTtcbiAgcmV0dXJuIG5ld0JvdW5kcztcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LXN0YXRlbWVudHMgKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExhdExuZ0JvdW5kcyhwb2ludHMsIGlkeCwgbGltaXQpIHtcbiAgY29uc3QgbGF0cyA9IHBvaW50c1xuICAgIC5tYXAoZCA9PiBBcnJheS5pc0FycmF5KGQpICYmIGRbaWR4XSlcbiAgICAuZmlsdGVyKE51bWJlci5pc0Zpbml0ZSlcbiAgICAuc29ydChudW1iZXJTb3J0KTtcblxuICBpZiAoIWxhdHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBjbGFtcCB0byBsaW1pdFxuICByZXR1cm4gW01hdGgubWF4KGxhdHNbMF0sIGxpbWl0WzBdKSwgTWF0aC5taW4obGF0c1tsYXRzLmxlbmd0aCAtIDFdLCBsaW1pdFsxXSldO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xhbXAoW21pbiwgbWF4XSwgdmFsKSB7XG4gIHJldHVybiB2YWwgPD0gbWluID8gbWluIDogdmFsID49IG1heCA/IG1heCA6IHZhbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNhbXBsZURhdGEoZGF0YSwgc2FtcGxlU2l6ZSA9IDUwMCwgZ2V0VmFsdWUgPSBkID0+IGQpIHtcbiAgY29uc3Qgc2FtcGxlU3RlcCA9IE1hdGgubWF4KE1hdGguZmxvb3IoZGF0YS5sZW5ndGggLyBzYW1wbGVTaXplKSwgMSk7XG4gIGNvbnN0IG91dHB1dCA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpICs9IHNhbXBsZVN0ZXApIHtcbiAgICBvdXRwdXQucHVzaChnZXRWYWx1ZShkYXRhW2ldKSk7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufVxuXG4vKipcbiAqIENvbnZlcnQgZGlmZmVyZW50IHRpbWUgZm9ybWF0IHRvIHVuaXggbWlsbGlzZWNvbmRzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9kYXRhLXV0aWxzJykudGltZVRvVW5peE1pbGxpfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdGltZVRvVW5peE1pbGxpKHZhbHVlLCBmb3JtYXQpIHtcbiAgaWYgKG5vdE51bGxvclVuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgPyBtb21lbnQudXRjKHZhbHVlLCBmb3JtYXQpLnZhbHVlT2YoKVxuICAgICAgOiBmb3JtYXQgPT09ICd4J1xuICAgICAgPyB2YWx1ZSAqIDEwMDBcbiAgICAgIDogdmFsdWU7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICpcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2RhdGEtdXRpbHMnKS5tYXliZVRvRGF0ZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1heWJlVG9EYXRlKGlzVGltZSwgZmllbGRJZHgsIGZvcm1hdCwgZGMsIGQpIHtcbiAgaWYgKGlzVGltZSkge1xuICAgIHJldHVybiB0aW1lVG9Vbml4TWlsbGkoZGMudmFsdWVBdChkLmluZGV4LCBmaWVsZElkeCksIGZvcm1hdCk7XG4gIH1cblxuICByZXR1cm4gZGMudmFsdWVBdChkLmluZGV4LCBmaWVsZElkeCk7XG59XG5cbi8qKlxuICogd2hldGhlciBudWxsIG9yIHVuZGVmaW5lZFxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZGF0YS11dGlscycpLm5vdE51bGxvclVuZGVmaW5lZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vdE51bGxvclVuZGVmaW5lZChkKSB7XG4gIHJldHVybiBkICE9PSB1bmRlZmluZWQgJiYgZCAhPT0gbnVsbDtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGQgaXMgYSBudW1iZXIsIHRoaXMgZmlsdGVyZWQgb3V0IE5hTiBhcyB3ZWxsXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9kYXRhLXV0aWxzJykubm90TnVsbG9yVW5kZWZpbmVkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOdW1iZXIoZCkge1xuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKGQpO1xufVxuLyoqXG4gKiB3aGV0aGVyIG51bGwgb3IgdW5kZWZpbmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1BsYWluT2JqZWN0KG9iaikge1xuICByZXR1cm4gb2JqID09PSBPYmplY3Qob2JqKSAmJiB0eXBlb2Ygb2JqICE9PSAnZnVuY3Rpb24nICYmICFBcnJheS5pc0FycmF5KG9iaik7XG59XG5cbi8qKlxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZGF0YS11dGlscycpLm51bWJlclNvcnR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBudW1iZXJTb3J0KGEsIGIpIHtcbiAgcmV0dXJuIGEgLSBiO1xufVxuXG4vKipcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2RhdGEtdXRpbHMnKS5nZXRTb3J0aW5nRnVuY3Rpb259XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTb3J0aW5nRnVuY3Rpb24oZmllbGRUeXBlKSB7XG4gIHN3aXRjaCAoZmllbGRUeXBlKSB7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMucmVhbDpcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcDpcbiAgICAgIHJldHVybiBudW1iZXJTb3J0O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogcm91bmQgbnVtYmVyIHdpdGggZXhhY3QgbnVtYmVyIG9mIGRlY2ltYWxzXG4gKiByZXR1cm4gYXMgYSBzdHJpbmdcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2RhdGEtdXRpbHMnKS5wcmVjaXNlUm91bmR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVjaXNlUm91bmQobnVtLCBkZWNpbWFscykge1xuICBjb25zdCB0ID0gTWF0aC5wb3coMTAsIGRlY2ltYWxzKTtcbiAgcmV0dXJuIChcbiAgICBNYXRoLnJvdW5kKFxuICAgICAgbnVtICogdCArIChkZWNpbWFscyA+IDAgPyAxIDogMCkgKiAoTWF0aC5zaWduKG51bSkgKiAoMTAgLyBNYXRoLnBvdygxMDAsIGRlY2ltYWxzKSkpXG4gICAgKSAvIHRcbiAgKS50b0ZpeGVkKGRlY2ltYWxzKTtcbn1cblxuLyoqXG4gKiBnZXQgbnVtYmVyIG9mIGRlY2ltYWxzIHRvIHJvdW5kIHRvIGZvciBzbGlkZXIgZnJvbSBzdGVwXG4gKiBAcGFyYW0ge251bWJlcn0gc3RlcFxuICogQHJldHVybnMge251bWJlcn0gLSBudW1iZXIgb2YgZGVjaW1hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um91bmRpbmdEZWNpbWFsRnJvbVN0ZXAoc3RlcCkge1xuICBpZiAoaXNOYU4oc3RlcCkpIHtcbiAgICBhc3NlcnQoJ3N0ZXAgaXMgbm90IGEgbnVtYmVyJyk7XG4gICAgYXNzZXJ0KHN0ZXApO1xuICB9XG5cbiAgY29uc3Qgc3BsaXRaZXJvID0gc3RlcC50b1N0cmluZygpLnNwbGl0KCcuJyk7XG4gIGlmIChzcGxpdFplcm8ubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgcmV0dXJuIHNwbGl0WmVyb1sxXS5sZW5ndGg7XG59XG5cbi8qKlxuICogVXNlIGluIHNsaWRlciwgZ2l2ZW4gYSBudW1iZXIgYW5kIGFuIGFycmF5IG9mIG51bWJlcnMsIHJldHVybiB0aGUgbmVhcnMgbnVtYmVyIGZyb20gdGhlIGFycmF5XG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9kYXRhLXV0aWxzJykuc25hcFRvTWFya3N9XG4gKiBAcGFyYW0gdmFsdWVcbiAqIEBwYXJhbSBtYXJrc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc25hcFRvTWFya3ModmFsdWUsIG1hcmtzKSB7XG4gIC8vIGFsd2F5cyB1c2UgYmluIHgwXG4gIGNvbnN0IGkgPSBiaXNlY3RMZWZ0KG1hcmtzLCB2YWx1ZSk7XG4gIGlmIChpID09PSAwKSB7XG4gICAgcmV0dXJuIG1hcmtzW2ldO1xuICB9IGVsc2UgaWYgKGkgPT09IG1hcmtzLmxlbmd0aCkge1xuICAgIHJldHVybiBtYXJrc1tpIC0gMV07XG4gIH1cbiAgY29uc3QgaWR4ID0gbWFya3NbaV0gLSB2YWx1ZSA8IHZhbHVlIC0gbWFya3NbaSAtIDFdID8gaSA6IGkgLSAxO1xuICByZXR1cm4gbWFya3NbaWR4XTtcbn1cblxuLyoqXG4gKiBJZiBtYXJrcyBpcyBwcm92aWRlZCwgc25hcCB0byBtYXJrcywgaWYgbm90IG5vcm1hbGl6ZSB0byBzdGVwXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9kYXRhLXV0aWxzJykubm9ybWFsaXplU2xpZGVyVmFsdWV9XG4gKiBAcGFyYW0gdmFsXG4gKiBAcGFyYW0gbWluVmFsdWVcbiAqIEBwYXJhbSBzdGVwXG4gKiBAcGFyYW0gbWFya3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVNsaWRlclZhbHVlKHZhbCwgbWluVmFsdWUsIHN0ZXAsIG1hcmtzKSB7XG4gIGlmIChtYXJrcyAmJiBtYXJrcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gc25hcFRvTWFya3ModmFsLCBtYXJrcyk7XG4gIH1cblxuICByZXR1cm4gcm91bmRWYWxUb1N0ZXAobWluVmFsdWUsIHN0ZXAsIHZhbCk7XG59XG5cbi8qKlxuICogcm91bmQgdGhlIHZhbHVlIHRvIHN0ZXAgZm9yIHRoZSBzbGlkZXJcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2RhdGEtdXRpbHMnKS5yb3VuZFZhbFRvU3RlcH1cbiAqIEBwYXJhbSBtaW5WYWx1ZVxuICogQHBhcmFtIHN0ZXBcbiAqIEBwYXJhbSB2YWxcbiAqIEByZXR1cm5zIC0gcm91bmRlZCBudW1iZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvdW5kVmFsVG9TdGVwKG1pblZhbHVlLCBzdGVwLCB2YWwpIHtcbiAgaWYgKCFpc051bWJlcihzdGVwKSB8fCAhaXNOdW1iZXIobWluVmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIGNvbnN0IGRlY2ltYWwgPSBnZXRSb3VuZGluZ0RlY2ltYWxGcm9tU3RlcChzdGVwKTtcbiAgY29uc3Qgc3RlcHMgPSBNYXRoLmZsb29yKCh2YWwgLSBtaW5WYWx1ZSkgLyBzdGVwKTtcbiAgbGV0IHJlbWFpbiA9IHZhbCAtIChzdGVwcyAqIHN0ZXAgKyBtaW5WYWx1ZSk7XG5cbiAgLy8gaGFzIHRvIHJvdW5kIGJlY2F1c2UgamF2YXNjcmlwdCB0dXJucyAwLjEgaW50byAwLjk5OTk5OTk5OTk5OTk5ODdcbiAgcmVtYWluID0gTnVtYmVyKHByZWNpc2VSb3VuZChyZW1haW4sIDgpKTtcblxuICBsZXQgY2xvc2VzdDtcbiAgaWYgKHJlbWFpbiA9PT0gMCkge1xuICAgIGNsb3Nlc3QgPSB2YWw7XG4gIH0gZWxzZSBpZiAocmVtYWluIDwgc3RlcCAvIDIpIHtcbiAgICBjbG9zZXN0ID0gc3RlcHMgKiBzdGVwICsgbWluVmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgY2xvc2VzdCA9IChzdGVwcyArIDEpICogc3RlcCArIG1pblZhbHVlO1xuICB9XG5cbiAgLy8gcHJlY2lzZSByb3VuZCByZXR1cm4gYSBzdHJpbmcgcm91bmRlZCB0byB0aGUgZGVmaW5lZCBkZWNpbWFsXG4gIGNvbnN0IHJvdW5kZWQgPSBwcmVjaXNlUm91bmQoY2xvc2VzdCwgZGVjaW1hbCk7XG5cbiAgcmV0dXJuIE51bWJlcihyb3VuZGVkKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHZhbHVlIGZvcm1hdCBiYXNlZCBvbiBmaWVsZCBhbmQgZm9ybWF0IG9wdGlvbnNcbiAqIFVzZWQgaW4gcmVuZGVyIHRvb2x0aXAgdmFsdWVcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2RhdGEtdXRpbHMnKS5kZWZhdWx0Rm9ybWF0dGVyfVxuICovXG5leHBvcnQgY29uc3QgZGVmYXVsdEZvcm1hdHRlciA9IHYgPT4gKG5vdE51bGxvclVuZGVmaW5lZCh2KSA/IFN0cmluZyh2KSA6ICcnKTtcblxuZXhwb3J0IGNvbnN0IEZJRUxEX0RJU1BMQVlfRk9STUFUID0ge1xuICBbQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ106IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMudGltZXN0YW1wXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5yZWFsXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5ib29sZWFuXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5kYXRlXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5nZW9qc29uXTogZCA9PlxuICAgIHR5cGVvZiBkID09PSAnc3RyaW5nJ1xuICAgICAgPyBkXG4gICAgICA6IGlzUGxhaW5PYmplY3QoZClcbiAgICAgID8gSlNPTi5zdHJpbmdpZnkoZClcbiAgICAgIDogQXJyYXkuaXNBcnJheShkKVxuICAgICAgPyBgWyR7U3RyaW5nKGQpfV1gXG4gICAgICA6ICcnXG59O1xuXG4vKipcbiAqIFBhcnNlIGZpZWxkIHZhbHVlIGFuZCB0eXBlIGFuZCByZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2RhdGEtdXRpbHMnKS5wYXJzZUZpZWxkVmFsdWV9XG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZUZpZWxkVmFsdWUgPSAodmFsdWUsIHR5cGUpID0+IHtcbiAgaWYgKCFub3ROdWxsb3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcmV0dXJuIEZJRUxEX0RJU1BMQVlfRk9STUFUW3R5cGVdID8gRklFTERfRElTUExBWV9GT1JNQVRbdHlwZV0odmFsdWUpIDogU3RyaW5nKHZhbHVlKTtcbn07XG5cbmNvbnN0IGFycmF5TW92ZU11dGF0ZSA9IChhcnJheSwgZnJvbSwgdG8pID0+IHtcbiAgYXJyYXkuc3BsaWNlKHRvIDwgMCA/IGFycmF5Lmxlbmd0aCArIHRvIDogdG8sIDAsIGFycmF5LnNwbGljZShmcm9tLCAxKVswXSk7XG59O1xuXG4vKipcbiAqXG4gKiBAcGFyYW0geyp9IGFycmF5XG4gKiBAcGFyYW0geyp9IGZyb21cbiAqIEBwYXJhbSB7Kn0gdG9cbiAqL1xuZXhwb3J0IGNvbnN0IGFycmF5TW92ZSA9IChhcnJheSwgZnJvbSwgdG8pID0+IHtcbiAgYXJyYXkgPSBhcnJheS5zbGljZSgpO1xuICBhcnJheU1vdmVNdXRhdGUoYXJyYXksIGZyb20sIHRvKTtcbiAgcmV0dXJuIGFycmF5O1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHZhbHVlIGZvcm1hdCBiYXNlZCBvbiBmaWVsZCBhbmQgZm9ybWF0IG9wdGlvbnNcbiAqIFVzZWQgaW4gcmVuZGVyIHRvb2x0aXAgdmFsdWVcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL2RhdGEtdXRpbHMnKS5nZXRGb3JtYXR0ZXJ9XG4gKiBAcGFyYW0gZm9ybWF0XG4gKiBAcGFyYW0gZmllbGRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1hdHRlcihmb3JtYXQsIGZpZWxkKSB7XG4gIGlmICghZm9ybWF0KSB7XG4gICAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG4gIH1cbiAgY29uc3QgdG9vbHRpcEZvcm1hdCA9IE9iamVjdC52YWx1ZXMoVE9PTFRJUF9GT1JNQVRTKS5maW5kKGYgPT4gZltUT09MVElQX0tFWV0gPT09IGZvcm1hdCk7XG5cbiAgaWYgKHRvb2x0aXBGb3JtYXQpIHtcbiAgICByZXR1cm4gYXBwbHlEZWZhdWx0Rm9ybWF0KHRvb2x0aXBGb3JtYXQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBmb3JtYXQgPT09ICdzdHJpbmcnICYmIGZpZWxkKSB7XG4gICAgcmV0dXJuIGFwcGx5Q3VzdG9tRm9ybWF0KGZvcm1hdCwgZmllbGQpO1xuICB9XG5cbiAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseURlZmF1bHRGb3JtYXQodG9vbHRpcEZvcm1hdCkge1xuICBpZiAoIXRvb2x0aXBGb3JtYXQgfHwgIXRvb2x0aXBGb3JtYXQuZm9ybWF0KSB7XG4gICAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG4gIH1cblxuICBzd2l0Y2ggKHRvb2x0aXBGb3JtYXQudHlwZSkge1xuICAgIGNhc2UgVE9PTFRJUF9GT1JNQVRfVFlQRVMuREVDSU1BTDpcbiAgICAgIHJldHVybiBkM0Zvcm1hdCh0b29sdGlwRm9ybWF0LmZvcm1hdCk7XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFOlxuICAgIGNhc2UgVE9PTFRJUF9GT1JNQVRfVFlQRVMuREFURV9USU1FOlxuICAgICAgcmV0dXJuIGRhdGV0aW1lRm9ybWF0dGVyKG51bGwpKHRvb2x0aXBGb3JtYXQuZm9ybWF0KTtcbiAgICBjYXNlIFRPT0xUSVBfRk9STUFUX1RZUEVTLlBFUkNFTlRBR0U6XG4gICAgICByZXR1cm4gdiA9PiBgJHtkM0Zvcm1hdChUT09MVElQX0ZPUk1BVFMuREVDSU1BTF9ERUNJTUFMX0ZJWEVEXzIuZm9ybWF0KSh2KX0lYDtcbiAgICBjYXNlIFRPT0xUSVBfRk9STUFUX1RZUEVTLkJPT0xFQU46XG4gICAgICByZXR1cm4gZ2V0Qm9vbGVhbkZvcm1hdHRlcih0b29sdGlwRm9ybWF0LmZvcm1hdCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCb29sZWFuRm9ybWF0dGVyKGZvcm1hdCkge1xuICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgIGNhc2UgJzAxJzpcbiAgICAgIHJldHVybiB2ID0+ICh2ID8gJzEnIDogJzAnKTtcbiAgICBjYXNlICd5bic6XG4gICAgICByZXR1cm4gdiA9PiAodiA/ICd5ZXMnIDogJ25vJyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xuICB9XG59XG4vLyBBbGxvdyB1c2VyIHRvIHNwZWNpZnkgY3VzdG9tIHRvb2x0aXAgZm9ybWF0IHZpYSBjb25maWdcbmV4cG9ydCBmdW5jdGlvbiBhcHBseUN1c3RvbUZvcm1hdChmb3JtYXQsIGZpZWxkKSB7XG4gIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICAgIHJldHVybiBkM0Zvcm1hdChmb3JtYXQpO1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmRhdGU6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wOlxuICAgICAgcmV0dXJuIGRhdGV0aW1lRm9ybWF0dGVyKG51bGwpKGZvcm1hdCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB2ID0+IHY7XG4gIH1cbn1cblxuLyoqXG4gKiBGb3JtYXQgZXBvY2ggbWlsbGlzZWNvbmRzIHdpdGggYSBmb3JtYXQgc3RyaW5nXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9kYXRhLXV0aWxzJykuZGF0ZXRpbWVGb3JtYXR0ZXJ9IHRpbWV6b25lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRldGltZUZvcm1hdHRlcih0aW1lem9uZSkge1xuICByZXR1cm4gdGltZXpvbmVcbiAgICA/IGZvcm1hdCA9PiB0cyA9PlxuICAgICAgICBtb21lbnRcbiAgICAgICAgICAudXRjKHRzKVxuICAgICAgICAgIC50eih0aW1lem9uZSlcbiAgICAgICAgICAuZm9ybWF0KGZvcm1hdClcbiAgICA6IGZvcm1hdCA9PiB0cyA9PiBtb21lbnQudXRjKHRzKS5mb3JtYXQoZm9ybWF0KTtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@carto/kepler.gl",
3
3
  "author": "CARTO",
4
4
  "homepage": "https://github.com/CartoDB/carto-kepler#readme",
5
- "version": "0.0.32",
5
+ "version": "0.0.34-alpha.0",
6
6
  "description": "kepler.gl is a webgl based application to visualize large scale location data in the browser",
7
7
  "license": "MIT",
8
8
  "main": "dist/index.js",
@@ -24,6 +24,7 @@ import VisConfigSliderFactory from './side-panel/layer-panel/vis-config-slider';
24
24
  import VisConfigSwitchFactory from './side-panel/layer-panel/vis-config-switch';
25
25
  import LayerConfigGroupFactory from './side-panel/layer-panel/layer-config-group';
26
26
  import {ChannelByValueSelectorFactory} from './side-panel/layer-panel/layer-configurator';
27
+ import ColorDimensionScaleSelectorFactory from './side-panel/layer-panel/color-dimension-scale-selector';
27
28
  import FieldSelectorFactory, {FieldListItemFactoryFactory} from './common/field-selector';
28
29
  import FieldTokenFactory from './common/field-token';
29
30
  import PanelHeaderActionFactory from './side-panel/panel-header-action';
@@ -198,6 +199,8 @@ export {
198
199
  LayerColorSelector
199
200
  } from './side-panel/layer-panel/layer-configurator';
200
201
 
202
+ export {default as ColorPalette} from './side-panel/layer-panel/color-palette';
203
+
201
204
  export * from './common/styled-components';
202
205
  import * as Icons from './common/icons';
203
206
 
@@ -210,6 +213,7 @@ export const VisConfigSlider = appInjector.get(VisConfigSliderFactory);
210
213
  export const VisConfigSwitch = appInjector.get(VisConfigSwitchFactory);
211
214
  export const LayerConfigGroup = appInjector.get(LayerConfigGroupFactory);
212
215
  export const ChannelByValueSelector = appInjector.get(ChannelByValueSelectorFactory);
216
+ export const ColorDimensionScaleSelector = appInjector.get(ColorDimensionScaleSelectorFactory);
213
217
  export const FieldSelector = appInjector.get(FieldSelectorFactory);
214
218
  export const FieldToken = appInjector.get(FieldTokenFactory);
215
219
  export const PanelHeaderAction = appInjector.get(PanelHeaderActionFactory);
@@ -224,6 +228,7 @@ export {
224
228
  VisConfigSwitchFactory,
225
229
  LayerConfigGroupFactory,
226
230
  ChannelByValueSelectorFactory,
231
+ ColorDimensionScaleSelectorFactory,
227
232
  FieldListItemFactoryFactory,
228
233
  InfoHelperFactory
229
234
  };
@@ -0,0 +1,33 @@
1
+ // Copyright (c) 2022 Uber Technologies, Inc.
2
+ //
3
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ // of this software and associated documentation files (the "Software"), to deal
5
+ // in the Software without restriction, including without limitation the rights
6
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ // copies of the Software, and to permit persons to whom the Software is
8
+ // furnished to do so, subject to the following conditions:
9
+ //
10
+ // The above copyright notice and this permission notice shall be included in
11
+ // all copies or substantial portions of the Software.
12
+ //
13
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ // THE SOFTWARE.
20
+
21
+ import React from 'react';
22
+ import {injectIntl} from 'react-intl';
23
+
24
+ ColorDimensionScaleSelectorFactory.deps = [];
25
+ function ColorDimensionScaleSelectorFactory() {
26
+ const ColorDimensionScaleSelector = () => {
27
+ return <div>Component replaced by cloud native</div>;
28
+ };
29
+
30
+ return injectIntl(ColorDimensionScaleSelector);
31
+ }
32
+
33
+ export default ColorDimensionScaleSelectorFactory;
@@ -40,8 +40,10 @@ import TextLabelPanelFactory from './text-label-panel';
40
40
 
41
41
  import {capitalizeFirstLetter} from 'utils/utils';
42
42
 
43
- import {CHANNEL_SCALE_SUPPORTED_FIELDS} from 'constants/default-settings';
43
+ import {CHANNEL_SCALES, CHANNEL_SCALE_SUPPORTED_FIELDS} from 'constants/default-settings';
44
44
  import {LAYER_TYPES} from 'layers/types';
45
+ import {injectIntl} from 'react-intl';
46
+ import ColorDimensionScaleSelectorFactory from './color-dimension-scale-selector';
45
47
 
46
48
  const StyledLayerConfigurator = styled.div.attrs({
47
49
  className: 'layer-panel__config'
@@ -82,7 +84,8 @@ export const getVisConfiguratorProps = props => ({
82
84
  export const getLayerChannelConfigProps = props => ({
83
85
  layer: props.layer,
84
86
  fields: getLayerFields(props.datasets, props.layer),
85
- onChange: props.updateLayerVisualChannelConfig
87
+ onChange: props.updateLayerVisualChannelConfig,
88
+ onChangeVisConfig: props.updateLayerVisConfig
86
89
  });
87
90
 
88
91
  LayerConfiguratorFactory.deps = [
@@ -93,7 +96,8 @@ LayerConfiguratorFactory.deps = [
93
96
  ChannelByValueSelectorFactory,
94
97
  LayerColumnConfigFactory,
95
98
  LayerTypeSelectorFactory,
96
- VisConfigSwitchFactory
99
+ VisConfigSwitchFactory,
100
+ AggrScaleSelectorFactory
97
101
  ];
98
102
 
99
103
  export default function LayerConfiguratorFactory(
@@ -104,7 +108,8 @@ export default function LayerConfiguratorFactory(
104
108
  ChannelByValueSelector,
105
109
  LayerColumnConfig,
106
110
  LayerTypeSelector,
107
- VisConfigSwitch
111
+ VisConfigSwitch,
112
+ AggrScaleSelector
108
113
  ) {
109
114
  class LayerConfigurator extends Component {
110
115
  static propTypes = {
@@ -240,7 +245,11 @@ export default function LayerConfiguratorFactory(
240
245
  <LayerConfigGroup label={'layer.color'} collapsible>
241
246
  <LayerColorRangeSelector {...visConfiguratorProps} />
242
247
  <ConfigGroupCollapsibleContent>
243
- <AggrScaleSelector {...layerConfiguratorProps} channel={layer.visualChannels.color} />
248
+ <AggrScaleSelector
249
+ {...layerConfiguratorProps}
250
+ channel={layer.visualChannels.color}
251
+ onChangeVisConfig={layerChannelConfigProps.onChangeVisConfig}
252
+ />
244
253
  <ChannelByValueSelector
245
254
  channel={layer.visualChannels.color}
246
255
  {...layerChannelConfigProps}
@@ -328,7 +337,11 @@ export default function LayerConfiguratorFactory(
328
337
  <LayerConfigGroup label={'layer.color'} collapsible>
329
338
  <LayerColorRangeSelector {...visConfiguratorProps} />
330
339
  <ConfigGroupCollapsibleContent>
331
- <AggrScaleSelector {...layerConfiguratorProps} channel={layer.visualChannels.color} />
340
+ <AggrScaleSelector
341
+ {...layerConfiguratorProps}
342
+ channel={layer.visualChannels.color}
343
+ onChangeVisConfig={layerChannelConfigProps.onChangeVisConfig}
344
+ />
332
345
  <ChannelByValueSelector
333
346
  channel={layer.visualChannels.color}
334
347
  {...layerChannelConfigProps}
@@ -382,6 +395,7 @@ export default function LayerConfiguratorFactory(
382
395
  <AggrScaleSelector
383
396
  {...layerConfiguratorProps}
384
397
  channel={layer.visualChannels.size}
398
+ onChangeVisConfig={layerChannelConfigProps.onChangeVisConfig}
385
399
  />
386
400
  <VisConfigSlider
387
401
  {...layer.visConfigSettings.sizeRange}
@@ -1067,7 +1081,13 @@ export const LayerColorRangeSelector = ({layer, onChange, property = 'colorRange
1067
1081
  {
1068
1082
  selectedColor: layer.config.visConfig[property],
1069
1083
  isRange: true,
1070
- setColor: colorRange => onChange({[property]: colorRange})
1084
+ setColor: colorRange => {
1085
+ const {colorMap} = layer.config.visConfig[property];
1086
+ const colorRangeUpdated = colorMap
1087
+ ? layer.updateColorMap(property, colorMap, colorRange)
1088
+ : colorRange;
1089
+ onChange({[property]: colorRangeUpdated});
1090
+ }
1071
1091
  }
1072
1092
  ]}
1073
1093
  colorUI={layer.config.colorUI[property]}
@@ -1078,7 +1098,15 @@ export const LayerColorRangeSelector = ({layer, onChange, property = 'colorRange
1078
1098
 
1079
1099
  ChannelByValueSelectorFactory.deps = [VisConfigByFieldSelectorFactory];
1080
1100
  export function ChannelByValueSelectorFactory(VisConfigByFieldSelector) {
1081
- const ChannelByValueSelector = ({layer, channel, onChange, fields, description, isLoading}) => {
1101
+ const ChannelByValueSelector = ({
1102
+ layer,
1103
+ channel,
1104
+ onChange,
1105
+ onChangeVisConfig,
1106
+ fields,
1107
+ description,
1108
+ isLoading
1109
+ }) => {
1082
1110
  const {
1083
1111
  channelScaleType,
1084
1112
  domain,
@@ -1094,8 +1122,18 @@ export function ChannelByValueSelectorFactory(VisConfigByFieldSelector) {
1094
1122
  supportedFieldTypes || CHANNEL_SCALE_SUPPORTED_FIELDS[channelScaleType];
1095
1123
  const supportedFields = fields.filter(({type}) => channelSupportedFieldTypes.includes(type));
1096
1124
  const scaleOptions = layer.getScaleOptions(channel.key);
1097
- const showScale = !layer.isAggregated && layer.config[scale] && scaleOptions.length > 1;
1125
+ const showScaleCustomizable =
1126
+ channelScaleType === CHANNEL_SCALES.color &&
1127
+ layer.config[scale] &&
1128
+ Boolean(layer.config[field]) &&
1129
+ scaleOptions.length > 0;
1130
+ const showScale =
1131
+ !showScaleCustomizable &&
1132
+ !layer.isAggregated &&
1133
+ layer.config[scale] &&
1134
+ scaleOptions.length > 1;
1098
1135
  const defaultDescription = 'layerConfiguration.defaultDescription';
1136
+ const visRange = layer.config.visConfig[range];
1099
1137
 
1100
1138
  return (
1101
1139
  <VisConfigByFieldSelector
@@ -1107,13 +1145,20 @@ export function ChannelByValueSelectorFactory(VisConfigByFieldSelector) {
1107
1145
  key={`${key}-channel-selector`}
1108
1146
  property={property}
1109
1147
  placeholder={defaultMeasure || 'placeholder.selectField'}
1110
- range={layer.config.visConfig[range]}
1148
+ range={visRange}
1111
1149
  scaleOptions={scaleOptions}
1112
1150
  scaleType={scale ? layer.config[scale] : null}
1113
1151
  selectedField={layer.config[field]}
1114
1152
  showScale={showScale}
1115
- updateField={val => onChange({[field]: val}, key)}
1153
+ showScaleCustomizable={showScaleCustomizable}
1154
+ updateField={val => {
1155
+ if (visRange.colorMap) {
1156
+ onChangeVisConfig({[range]: {...visRange, colorMap: undefined}});
1157
+ }
1158
+ onChange({[field]: val}, key);
1159
+ }}
1116
1160
  updateScale={val => onChange({[scale]: val}, key)}
1161
+ updateCustomPalette={colorMap => onChangeVisConfig({[range]: {...visRange, colorMap}})}
1117
1162
  isLoading={isLoading}
1118
1163
  />
1119
1164
  );
@@ -1122,19 +1167,54 @@ export function ChannelByValueSelectorFactory(VisConfigByFieldSelector) {
1122
1167
  return ChannelByValueSelector;
1123
1168
  }
1124
1169
 
1125
- export const AggrScaleSelector = ({channel, layer, onChange}) => {
1126
- const {scale, key} = channel;
1127
- const scaleOptions = layer.getScaleOptions(key);
1170
+ AggrScaleSelectorFactory.deps = [ColorDimensionScaleSelectorFactory];
1128
1171
 
1129
- return Array.isArray(scaleOptions) && scaleOptions.length > 1 ? (
1130
- <DimensionScaleSelector
1131
- label={`${key} Scale`}
1132
- options={scaleOptions}
1133
- scaleType={layer.config[scale]}
1134
- onSelect={val => onChange({[scale]: val}, key)}
1135
- />
1136
- ) : null;
1137
- };
1172
+ function AggrScaleSelectorFactory(ColorDimensionScaleSelector) {
1173
+ class AggrScaleSelector extends Component {
1174
+ render() {
1175
+ const {channel, layer, onChange, onChangeVisConfig} = this.props;
1176
+ const {scale, key, channelScaleType, domain, range} = channel;
1177
+ const scaleOptions = layer.getScaleOptions(key);
1178
+ const visRange = layer.config.visConfig[range];
1179
+ const showScaleCustomizable =
1180
+ channelScaleType === CHANNEL_SCALES.colorAggr &&
1181
+ Array.isArray(scaleOptions) &&
1182
+ scaleOptions.length > 0;
1183
+ const showScale = Array.isArray(scaleOptions) && scaleOptions.length > 1;
1184
+
1185
+ if (showScaleCustomizable) {
1186
+ return (
1187
+ <SidePanelSection>
1188
+ <ColorDimensionScaleSelector
1189
+ label={`${key} Scale`}
1190
+ scaleType={layer.config[scale]}
1191
+ options={scaleOptions}
1192
+ domain={layer.config[domain]}
1193
+ range={visRange}
1194
+ onSelect={val => onChange({[scale]: val}, key)}
1195
+ onSelectCustomPalette={colorMap =>
1196
+ onChangeVisConfig({[range]: {...visRange, colorMap}})
1197
+ }
1198
+ />
1199
+ </SidePanelSection>
1200
+ );
1201
+ }
1202
+
1203
+ if (showScale) {
1204
+ return (
1205
+ <DimensionScaleSelector
1206
+ label={`${key} Scale`}
1207
+ options={scaleOptions}
1208
+ scaleType={layer.config[scale]}
1209
+ onSelect={val => onChange({[scale]: val}, key)}
1210
+ />
1211
+ );
1212
+ }
1213
+ return null;
1214
+ }
1215
+ }
1216
+ return injectIntl(AggrScaleSelector);
1217
+ }
1138
1218
 
1139
1219
  export const AggregationTypeSelector = ({layer, channel, onChange}) => {
1140
1220
  const {field, aggregation, key} = channel;
@@ -27,9 +27,14 @@ import InfoHelperFacotry from 'components/common/info-helper';
27
27
  import DimensionScaleSelector from './dimension-scale-selector';
28
28
  import {camelize} from 'utils/utils';
29
29
  import FieldSelectorFactory from '../../common/field-selector';
30
+ import ColorDimensionScaleSelectorFactory from './color-dimension-scale-selector';
30
31
 
31
- VisConfigByFieldSelectorFactory.deps = [InfoHelperFacotry, FieldSelectorFactory];
32
- function VisConfigByFieldSelectorFactory(InfoHelper, FieldSelector) {
32
+ VisConfigByFieldSelectorFactory.deps = [
33
+ InfoHelperFacotry,
34
+ FieldSelectorFactory,
35
+ ColorDimensionScaleSelectorFactory
36
+ ];
37
+ function VisConfigByFieldSelectorFactory(InfoHelper, FieldSelector, ColorDimensionScaleSelector) {
33
38
  class VisConfigByFieldSelector extends Component {
34
39
  static propTypes = {
35
40
  channel: PropTypes.string.isRequired,
@@ -37,8 +42,10 @@ function VisConfigByFieldSelectorFactory(InfoHelper, FieldSelector) {
37
42
  id: PropTypes.string.isRequired,
38
43
  property: PropTypes.string.isRequired,
39
44
  showScale: PropTypes.bool.isRequired,
45
+ showScaleCustomizable: PropTypes.bool.isRequired,
40
46
  updateField: PropTypes.func.isRequired,
41
47
  updateScale: PropTypes.func.isRequired,
48
+ updateCustomPalette: PropTypes.func.isRequired,
42
49
 
43
50
  // optional
44
51
  scaleType: PropTypes.string,
@@ -57,11 +64,14 @@ function VisConfigByFieldSelectorFactory(InfoHelper, FieldSelector) {
57
64
  const {
58
65
  property,
59
66
  showScale,
67
+ showScaleCustomizable,
60
68
  selectedField,
61
69
  description,
62
70
  label,
63
71
  intl,
64
- scaleOptions = []
72
+ scaleOptions = [],
73
+ domain,
74
+ range
65
75
  } = this.props;
66
76
 
67
77
  return (
@@ -109,6 +119,19 @@ function VisConfigByFieldSelectorFactory(InfoHelper, FieldSelector) {
109
119
  />
110
120
  ) : null}
111
121
  </div>
122
+ <div>
123
+ {showScaleCustomizable && !this.props.isLoading && (
124
+ <ColorDimensionScaleSelector
125
+ label={`${property} scale`}
126
+ scaleType={this.props.scaleType}
127
+ options={scaleOptions}
128
+ domain={domain}
129
+ range={range}
130
+ onSelect={this.props.updateScale}
131
+ onSelectCustomPalette={this.props.updateCustomPalette}
132
+ />
133
+ )}
134
+ </div>
112
135
  </SidePanelSection>
113
136
  );
114
137
  }