kepler.gl 3.1.6 → 3.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/actions/src/action-types.d.ts +2 -2
- package/dist/src/actions/src/action-wrapper.d.ts +2 -2
- package/dist/src/actions/src/actions.d.ts +3 -3
- package/dist/src/actions/src/map-state-actions.d.ts +4 -4
- package/dist/src/actions/src/vis-state-actions.d.ts +2 -2
- package/dist/src/ai-assistant/src/tools/kepler-tools/index.d.ts +1 -1
- package/dist/src/ai-assistant/src/tools/tools.d.ts +1 -1
- package/dist/src/components/src/kepler-gl.d.ts +1 -1
- package/dist/src/components/src/side-panel/layer-panel/layer-configurator.d.ts +4 -4
- package/dist/src/constants/src/default-settings.d.ts +8 -6
- package/dist/src/duckdb/src/table/duckdb-table.d.ts +1 -1
- package/dist/src/effects/src/effect.d.ts +1 -0
- package/dist/src/reducers/src/index.d.ts +1 -0
- package/dist/src/reducers/src/layer-utils.d.ts +2 -0
- package/dist/src/reducers/src/map-style-updaters.d.ts +1 -0
- package/dist/src/reducers/src/vis-state.d.ts +4 -4
- package/dist/src/styles/src/base.d.ts +4 -0
- package/dist/src/table/src/kepler-table.d.ts +2 -2
- package/dist/src/utils/src/application-config.d.ts +1 -0
- package/package.json +2 -2
- package/src/actions/dist/action-types.d.ts +2 -2
- package/src/actions/dist/action-types.js +3 -3
- package/src/actions/dist/action-wrapper.d.ts +2 -2
- package/src/actions/dist/action-wrapper.js +3 -3
- package/src/actions/dist/actions.d.ts +3 -3
- package/src/actions/dist/actions.js +4 -4
- package/src/actions/dist/map-state-actions.d.ts +4 -4
- package/src/actions/dist/map-state-actions.js +5 -5
- package/src/actions/dist/vis-state-actions.d.ts +2 -2
- package/src/actions/dist/vis-state-actions.js +3 -3
- package/src/actions/package.json +8 -8
- package/src/actions/src/action-types.ts +2 -2
- package/src/actions/src/action-wrapper.ts +2 -2
- package/src/actions/src/actions.ts +3 -3
- package/src/actions/src/map-state-actions.ts +4 -4
- package/src/actions/src/vis-state-actions.ts +2 -2
- package/src/ai-assistant/dist/tools/kepler-tools/index.d.ts +1 -1
- package/src/ai-assistant/dist/tools/tools.d.ts +1 -1
- package/src/ai-assistant/package.json +7 -7
- package/src/cloud-providers/package.json +2 -2
- package/src/common-utils/package.json +3 -3
- package/src/components/dist/effects/effect-type-list-item.js +4 -8
- package/src/components/dist/kepler-gl.d.ts +1 -1
- package/src/components/dist/loading-indicator.js +7 -3
- package/src/components/dist/map-container.js +18 -3
- package/src/components/dist/modals/add-map-style-modal.js +2 -2
- package/src/components/dist/modals/export-image-modal.js +1 -2
- package/src/components/dist/plot-container.js +15 -1
- package/src/components/dist/side-panel/layer-panel/layer-configurator.d.ts +4 -4
- package/src/components/dist/side-panel/layer-panel/layer-list.js +2 -4
- package/src/components/dist/side-panel/layer-panel/layer-type-list-item.js +8 -5
- package/src/components/dist/side-panel/layer-panel/raster-tile-colormap-list-item.js +2 -3
- package/src/components/dist/side-panel/layer-panel/vis-config-slider.js +10 -5
- package/src/components/dist/side-panel/map-style-panel/map-style-selector.js +3 -2
- package/src/components/package.json +15 -15
- package/src/components/src/effects/effect-type-list-item.tsx +2 -5
- package/src/components/src/loading-indicator.tsx +13 -3
- package/src/components/src/map-container.tsx +20 -6
- package/src/components/src/modals/add-map-style-modal.tsx +1 -1
- package/src/components/src/modals/export-image-modal.tsx +0 -1
- package/src/components/src/plot-container.tsx +19 -2
- package/src/components/src/side-panel/layer-panel/layer-list.tsx +0 -1
- package/src/components/src/side-panel/layer-panel/layer-type-list-item.tsx +11 -4
- package/src/components/src/side-panel/layer-panel/raster-tile-colormap-list-item.tsx +2 -3
- package/src/components/src/side-panel/layer-panel/vis-config-slider.tsx +12 -5
- package/src/components/src/side-panel/map-style-panel/map-style-selector.tsx +7 -1
- package/src/constants/dist/default-settings.d.ts +8 -6
- package/src/constants/dist/default-settings.js +9 -13
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/14/ab/1fbe8d595eaf6f179613022ba62b99ba41fe2f6b8061293406468a705d53002cfb0ba12e6833df2aa9c4c55b7061e239395129a1515da317d57e518b1dc7 +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/37/b0/3745c4bb4b6114fa3433e4871042f7db966b48b29cde3301afe38370cecfe41f5aac801adc6fa93f6cd05411c521215e58542853414a81c0904ba4291e09 +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/68/bb/2c3d5cb60ef7b9e6d889b7d9b75b05761c58ee43b954df1a262102d3a106 +2 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/93/38/f167b214acd87fc28cf533f463b7423ce65340878809b494323fae359cb4 +2 -0
- package/src/constants/package.json +2 -2
- package/src/constants/src/default-settings.ts +5 -10
- package/src/constants/umd/keplergl.min.js +1 -1
- package/src/deckgl-arrow-layers/package.json +2 -2
- package/src/deckgl-layers/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.d.ts +1 -1
- package/src/deckgl-layers/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +2 -2
- package/src/deckgl-layers/dist/raster/raster-mesh-layer/raster-mesh-layer.js +3 -9
- package/src/deckgl-layers/package.json +4 -4
- package/src/deckgl-layers/src/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.ts +12 -33
- package/src/deckgl-layers/src/raster/raster-mesh-layer/raster-mesh-layer.ts +2 -5
- package/src/duckdb/dist/table/duckdb-table.d.ts +1 -1
- package/src/duckdb/package.json +6 -6
- package/src/effects/dist/effect.d.ts +1 -0
- package/src/effects/dist/effect.js +7 -1
- package/src/effects/package.json +5 -5
- package/src/effects/src/effect.ts +5 -0
- package/src/layers/dist/base-layer.d.ts +1 -1
- package/src/layers/dist/geojson-layer/geojson-layer.d.ts +1 -1
- package/src/layers/dist/geojson-layer/geojson-utils.d.ts +3 -3
- package/src/layers/dist/icon-layer/icon-layer.d.ts +0 -1
- package/src/layers/dist/icon-layer/icon-layer.js +3 -4
- package/src/layers/dist/index.d.ts +2 -1
- package/src/layers/dist/index.js +16 -8
- package/src/layers/dist/raster-tile/image.d.ts +6 -0
- package/src/layers/dist/raster-tile/image.js +37 -20
- package/src/layers/dist/raster-tile/raster-tile-layer.d.ts +2 -8
- package/src/layers/dist/raster-tile/raster-tile-layer.js +18 -33
- package/src/layers/dist/raster-tile/types.d.ts +1 -0
- package/src/layers/dist/raster-tile/types.js +1 -1
- package/src/layers/dist/raster-tile/url.d.ts +3 -0
- package/src/layers/dist/raster-tile/url.js +7 -1
- package/src/layers/dist/trip-layer/trip-layer.d.ts +1 -1
- package/src/layers/package.json +9 -9
- package/src/layers/src/icon-layer/icon-layer.ts +3 -5
- package/src/layers/src/index.ts +2 -1
- package/src/layers/src/raster-tile/image.ts +16 -4
- package/src/layers/src/raster-tile/raster-tile-layer.ts +17 -28
- package/src/layers/src/raster-tile/types.ts +1 -0
- package/src/layers/src/raster-tile/url.ts +6 -0
- package/src/localization/package.json +1 -1
- package/src/processors/package.json +7 -7
- package/src/reducers/dist/index.d.ts +1 -0
- package/src/reducers/dist/index.js +8 -1
- package/src/reducers/dist/layer-utils.d.ts +2 -0
- package/src/reducers/dist/layer-utils.js +23 -4
- package/src/reducers/dist/map-style-updaters.d.ts +1 -0
- package/src/reducers/dist/map-style-updaters.js +10 -5
- package/src/reducers/dist/vis-state.d.ts +4 -4
- package/src/reducers/package.json +16 -16
- package/src/reducers/src/index.ts +1 -0
- package/src/reducers/src/layer-utils.ts +22 -4
- package/src/reducers/src/map-style-updaters.ts +16 -8
- package/src/schemas/package.json +7 -7
- package/src/styles/dist/base.d.ts +4 -0
- package/src/styles/dist/base.js +10 -5
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/4b/ee/673360e4b8362fe8483486f8fa132c6b9d9abf45a240d54f76bc3d60d2b01e530c4efd92baad3479d54e7fa48474cb9d52e633ceb9dfec546588b6981cfc +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/a5/1f/7149cdcef3cb8e64025c197e3a6a47482bf1027c0991969349c7f1ec68e76f091966010bb72674850b48ed8361c1953b1b08da7dd66143642b32ce467635 +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/b7/6d/49546dbc3e903a5e6771b0ead707e4f4605454ac2bc718d0f0bf801b96a7 +2 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/c3/91/45735456a88c6ecc20a341b94971da9d02562b936da95a407f157b2f0ece +2 -0
- package/src/styles/package.json +2 -2
- package/src/styles/src/base.ts +6 -0
- package/src/styles/umd/keplergl.min.js +1 -1
- package/src/table/dist/{src/table/src/kepler-table.d.ts → kepler-table.d.ts} +2 -2
- package/src/table/dist/kepler-table.js +6 -4
- package/src/table/dist/tileset/vector-tile-utils.js +2 -2
- package/src/table/package.json +5 -5
- package/src/table/src/kepler-table.ts +4 -3
- package/src/table/src/tileset/vector-tile-utils.ts +1 -1
- package/src/table/tsconfig.production.json +2 -1
- package/src/tasks/package.json +2 -2
- package/src/types/effects.d.ts +1 -0
- package/src/types/package.json +1 -1
- package/src/utils/dist/application-config.d.ts +1 -0
- package/src/utils/dist/application-config.js +4 -4
- package/src/utils/package.json +4 -4
- package/src/utils/src/application-config.ts +6 -0
- package/umd/keplergl.min.js +1069 -1094
- package/src/table/dist/src/table/src/tileset/vector-tile-utils.spec.d.ts +0 -1
- package/src/table/dist/test/fixtures/tile-metadata.d.ts +0 -65
- /package/src/table/dist/{src/table/src/dataset-utils.d.ts → dataset-utils.d.ts} +0 -0
- /package/src/table/dist/{src/table/src/gpu-filter-utils.d.ts → gpu-filter-utils.d.ts} +0 -0
- /package/src/table/dist/{src/table/src/index.d.ts → index.d.ts} +0 -0
- /package/src/table/dist/{src/table/src/tileset → tileset}/raster-tile-utils.d.ts +0 -0
- /package/src/table/dist/{src/table/src/tileset → tileset}/tileset-utils.d.ts +0 -0
- /package/src/table/dist/{src/table/src/tileset → tileset}/vector-tile-utils.d.ts +0 -0
|
@@ -154,7 +154,7 @@ function _loadColormap() {
|
|
|
154
154
|
case 2:
|
|
155
155
|
_context2.next = 4;
|
|
156
156
|
return getAssetRequest({
|
|
157
|
-
url:
|
|
157
|
+
url: _url.RasterLayerResources.rasterColorMap(colormapId),
|
|
158
158
|
options: {}
|
|
159
159
|
});
|
|
160
160
|
case 4:
|
|
@@ -556,23 +556,40 @@ function getCategoricalColormapDataUrl(categoricalOptions) {
|
|
|
556
556
|
}
|
|
557
557
|
return getImageDataURL(bitmap, _rasterTileUtils.CATEGORICAL_TEXTURE_WIDTH, 1);
|
|
558
558
|
}
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
559
|
+
|
|
560
|
+
/**
|
|
561
|
+
* Load terrain mesh from raster tile server
|
|
562
|
+
* @param props - properties to load terrain data
|
|
563
|
+
* @returns terrain mesh data
|
|
564
|
+
*/
|
|
565
|
+
function loadTerrain(_x12) {
|
|
566
|
+
return _loadTerrain.apply(this, arguments);
|
|
567
|
+
}
|
|
568
|
+
function _loadTerrain() {
|
|
569
|
+
_loadTerrain = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10(props) {
|
|
570
|
+
var _props$index, x, y, z, boundsForGeometry, signal, rasterTileServerUrls, meshMaxError, terrainUrl, loaderOptions;
|
|
571
|
+
return _regenerator["default"].wrap(function _callee10$(_context10) {
|
|
572
|
+
while (1) switch (_context10.prev = _context10.next) {
|
|
573
|
+
case 0:
|
|
574
|
+
_props$index = props.index, x = _props$index.x, y = _props$index.y, z = _props$index.z, boundsForGeometry = props.boundsForGeometry, signal = props.signal, rasterTileServerUrls = props.rasterTileServerUrls;
|
|
575
|
+
meshMaxError = (0, _url.getMeshMaxError)(z, MESH_MULTIPLIER);
|
|
576
|
+
terrainUrl = (0, _url.getTerrainUrl)(rasterTileServerUrls, x, y, z, meshMaxError);
|
|
577
|
+
loaderOptions = (0, _constants.getLoaderOptions)();
|
|
578
|
+
return _context10.abrupt("return", (0, _core.load)(terrainUrl, _terrain.QuantizedMeshLoader, {
|
|
579
|
+
fetch: {
|
|
580
|
+
signal: signal
|
|
581
|
+
},
|
|
582
|
+
'quantized-mesh': _objectSpread(_objectSpread({}, loaderOptions['quantized-mesh']), {}, {
|
|
583
|
+
bounds: boundsForGeometry,
|
|
584
|
+
skirtHeight: meshMaxError * 2
|
|
585
|
+
})
|
|
586
|
+
}));
|
|
587
|
+
case 5:
|
|
588
|
+
case "end":
|
|
589
|
+
return _context10.stop();
|
|
590
|
+
}
|
|
591
|
+
}, _callee10);
|
|
592
|
+
}));
|
|
593
|
+
return _loadTerrain.apply(this, arguments);
|
|
577
594
|
}
|
|
578
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfdGVycmFpbiIsIl9tZW1vaXplIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb25zdGFudHMiLCJfY29uZmlnIiwiX2dwdVV0aWxzIiwiX3Jhc3RlclRpbGVVdGlscyIsIl91cmwiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImdldEltYWdlRGF0YVVSTCIsImJpdG1hcCIsIndpZHRoIiwiaGVpZ2h0IiwiY2FudmFzIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiZ2V0Q29udGV4dCIsInNldEF0dHJpYnV0ZSIsImNvbmNhdCIsImN0eCIsImkiLCJfYml0bWFwJHN1YmFycmF5Iiwic3ViYXJyYXkiLCJfYml0bWFwJHN1YmFycmF5MiIsIl9zbGljZWRUb0FycmF5MiIsImciLCJiIiwiYSIsImZpbGxTdHlsZSIsImZpbGxSZWN0IiwidG9EYXRhVVJMIiwiTUVTSF9NVUxUSVBMSUVSIiwibG9hZEltYWdlcyIsIl94IiwiX3gyIiwiX3gzIiwiX2xvYWRJbWFnZXMiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsImFzc2V0UmVxdWVzdHMiLCJjb2xvcm1hcElkIiwiY2F0ZWdvcmljYWxPcHRpb25zIiwiX3lpZWxkJFByb21pc2UkYWxsIiwiX3lpZWxkJFByb21pc2UkYWxsMiIsInN0YWNJbWFnZXMiLCJjb2xvcm1hcCIsImltYWdlQ29sb3JtYXAiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiUHJvbWlzZSIsImFsbCIsImxvYWRTVEFDSW1hZ2VEYXRhIiwiQ0FURUdPUklDQUxfQ09MT1JNQVBfSUQiLCJtZW1vaXplZExvYWRDb2xvcm1hcCIsInNlbnQiLCJnZW5lcmF0ZUNhdGVnb3JpY2FsQ29sb3JtYXBUZXh0dXJlIiwiYWJydXB0Iiwic3RvcCIsIm1lbW9pemUiLCJsb2FkQ29sb3JtYXAiLCJfeDQiLCJfbG9hZENvbG9ybWFwIiwiX2NhbGxlZTIiLCJyZXF1ZXN0IiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiZ2V0QXNzZXRSZXF1ZXN0IiwidXJsIiwiY2RuVXJscyIsInJhc3RlckNvbG9yTWFwIiwib3B0aW9ucyIsImxvYWRJbWFnZSIsIkNPTE9STUFQX1RFWFRVUkVfUEFSQU1FVEVSUyIsImdldFNUQUNJbWFnZVJlcXVlc3RzIiwiX3g1IiwiX2dldFNUQUNJbWFnZVJlcXVlc3RzIiwiX2NhbGxlZTMiLCJsb2FkQXNzZXRJZHMiLCJfY2FsbGVlMyQiLCJfY29udGV4dDMiLCJnZXRTaW5nbGVBc3NldFNUQUNSZXF1ZXN0IiwiZ2V0TXVsdGlBc3NldFNUQUNSZXF1ZXN0IiwiX3g2IiwiX2xvYWRTVEFDSW1hZ2VEYXRhIiwiX2NhbGxlZTQiLCJyZXF1ZXN0cyIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsImxvYWRTaW5nbGVBc3NldFNUQUMiLCJsb2FkTXVsdGlBc3NldFNUQUMiLCJfeDciLCJfZ2V0QXNzZXRSZXF1ZXN0IiwiX2NhbGxlZTUiLCJfcmVmIiwicGFyYW1zIiwiX3JlZiR1c2VNYXNrIiwidXNlTWFzayIsInJlc3BvbnNlUmVxdWlyZWRCYW5kSW5kaWNlcyIsInJlcXVlc3RVcmwiLCJyZXF1ZXN0UGFyYW1zIiwicmVxdWVzdE9wdGlvbnMiLCJhc3NldFVybCIsIl9jYWxsZWU1JCIsIl9jb250ZXh0NSIsIlVSTFNlYXJjaFBhcmFtcyIsInRvU3RyaW5nIiwiX3g4IiwiX2dldFNpbmdsZUFzc2V0U1RBQ1JlcXVlc3QiLCJfY2FsbGVlNiIsInN0YWMiLCJsb2FkQmFuZEluZGV4ZXMiLCJzaWduYWwiLCJ1c2VTVEFDU2VhcmNoaW5nIiwiX29wdGlvbnMkaW5kZXgiLCJ4IiwieSIsInoiLCJzdGFjU2VhcmNoUHJvdmlkZXIiLCJzdGFydERhdGUiLCJlbmREYXRlIiwiX3N0YWNRdWVyeSIsInVybFBhcmFtcyIsIl9jYWxsZWU2JCIsIl9jb250ZXh0NiIsImluZGV4IiwidHlwZSIsImdldFN0YWNBcGlVcmxQYXJhbXMiLCJtYXNrIiwiZ2V0VGl0aWxlclVybCIsImdldFNpbmdsZUNPR1VybFBhcmFtcyIsImxvYWRBc3NldElkIiwiX3g5IiwiX2dldE11bHRpQXNzZXRTVEFDUmVxdWVzdCIsIl9jYWxsZWU3IiwiX29wdGlvbnMkaW5kZXgyIiwicmVxdWVzdERhdGEiLCJyZXF1ZXN0TWFzayIsIl9jYWxsZWU3JCIsIl9jb250ZXh0NyIsIkFycmF5IiwiZmlsbCIsInppcCIsIm1hcCIsIl9yZWYyIiwiX3JlZjMiLCJhc3NldElkIiwiemlwMyIsIl9yZWY0IiwiX3JlZjUiLCJiYW5kSW5kZXgiLCJpc1ZhbGlkUmVxdWVzdERhdGEiLCJfcmVxdWVzdCRvcHRpb25zIiwiX3gxMCIsIl9sb2FkU2luZ2xlQXNzZXRTVEFDIiwiX2NhbGxlZTgiLCJpbWFnZUJhbmRzIiwiaW1hZ2VNYXNrIiwibWFwcGVkSW1hZ2VCYW5kcyIsIl9jYWxsZWU4JCIsIl9jb250ZXh0OCIsImxvYWROcHlBcnJheSIsInBvcCIsIl94MTEiLCJfbG9hZE11bHRpQXNzZXRTVEFDIiwiX2NhbGxlZTkiLCJfcmVzdWx0cyQiLCJyZXN1bHRzIiwiX2NhbGxlZTkkIiwiX2NvbnRleHQ5IiwiZmxhdCIsImJhbmQiLCJrIiwiYyIsImFyciIsImV2ZXJ5IiwiZ2V0Q2F0ZWdvcmljYWxDb2xvcm1hcERhdGFVcmwiLCJnZW5lcmF0ZUNhdGVnb3JpY2FsQml0bWFwQXJyYXkiLCJDQVRFR09SSUNBTF9URVhUVVJFX1dJRFRIIiwibG9hZFRlcnJhaW4iLCJwcm9wcyIsIl9wcm9wcyRpbmRleCIsInJhc3RlclRpbGVTZXJ2ZXJVcmxzIiwibWVzaE1heEVycm9yIiwiZ2V0TWVzaE1heEVycm9yIiwidGVycmFpblVybCIsImdldFRlcnJhaW5VcmwiLCJsb2FkZXJPcHRpb25zIiwiZ2V0TG9hZGVyT3B0aW9ucyIsImxvYWQiLCJRdWFudGl6ZWRNZXNoTG9hZGVyIiwiZmV0Y2giLCJza2lydEhlaWdodCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yYXN0ZXItdGlsZS9pbWFnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb25zIHRvIGNyZWF0ZSBvYmplY3RzIHRvIHBhc3MgdG8gZGVjay5nbC1yYXN0ZXJcbiAqL1xuXG5pbXBvcnQge2xvYWR9IGZyb20gJ0Bsb2FkZXJzLmdsL2NvcmUnO1xuaW1wb3J0IHtRdWFudGl6ZWRNZXNoTG9hZGVyfSBmcm9tICdAbG9hZGVycy5nbC90ZXJyYWluJztcbmltcG9ydCBtZW1vaXplIGZyb20gJ2xvZGFzaC9tZW1vaXplJztcblxuaW1wb3J0IHtnZXRMb2FkZXJPcHRpb25zLCBSYXN0ZXJMYXllclJlc291cmNlcyBhcyBjZG5VcmxzfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7Q0FURUdPUklDQUxfQ09MT1JNQVBfSUR9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7XG4gIGxvYWROcHlBcnJheSxcbiAgZ2VuZXJhdGVDYXRlZ29yaWNhbENvbG9ybWFwVGV4dHVyZSxcbiAgbG9hZEltYWdlLFxuICBDT0xPUk1BUF9URVhUVVJFX1BBUkFNRVRFUlNcbn0gZnJvbSAnLi9ncHUtdXRpbHMnO1xuaW1wb3J0IHtDQVRFR09SSUNBTF9URVhUVVJFX1dJRFRILCBnZW5lcmF0ZUNhdGVnb3JpY2FsQml0bWFwQXJyYXl9IGZyb20gJy4vcmFzdGVyLXRpbGUtdXRpbHMnO1xuaW1wb3J0IHtcbiAgR2V0VGlsZURhdGFQcm9wcyxcbiAgSW1hZ2VEYXRhLFxuICBUZXJyYWluRGF0YSxcbiAgQXNzZXRSZXF1ZXN0RGF0YSxcbiAgQ2F0ZWdvcmljYWxDb2xvcm1hcE9wdGlvbnMsXG4gIENvbG9ybWFwSW1hZ2VEYXRhXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgZ2V0VGl0aWxlclVybCxcbiAgZ2V0VGVycmFpblVybCxcbiAgZ2V0U2luZ2xlQ09HVXJsUGFyYW1zLFxuICBnZXRTdGFjQXBpVXJsUGFyYW1zLFxuICBnZXRNZXNoTWF4RXJyb3Jcbn0gZnJvbSAnLi91cmwnO1xuXG4vKipcbiAqIENyZWF0ZSBkYXRhVXJsIGltYWdlIGZyb20gYml0bWFwIGFycmF5XG4gKiBAcGFyYW0gYml0bWFwIC0gUkdCQSBieXRlIGJpdG1hcCBhcnJheVxuICogQHBhcmFtIHdpZHRoIC0gd2lkdGggb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gaGVpZ2h0IC0gaGVpZ2h0IG9mIHRoZSBpbWFnZVxuICogQHJldHVybnMgYmFzZTY0IGRhdGEgdXJsIG9mIHRoZSBpbWFnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1hZ2VEYXRhVVJMKGJpdG1hcDogVWludDhBcnJheSwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gIGlmICghY2FudmFzLmdldENvbnRleHQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjYW52YXMuc2V0QXR0cmlidXRlKCd3aWR0aCcsIGAke3dpZHRofWApO1xuICBjYW52YXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBgJHtoZWlnaHR9YCk7XG4gIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICBpZiAoIWN0eCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgd2lkdGg7IGkrKykge1xuICAgIGNvbnN0IFtyLCBnLCBiLCBhXSA9IGJpdG1hcC5zdWJhcnJheShpICogNCwgaSAqIDQgKyA0KTtcbiAgICBpZiAoYSAhPT0gMCkge1xuICAgICAgY3R4LmZpbGxTdHlsZSA9IGByZ2IoJHtyfSwgJHtnfSwgJHtifSlgO1xuICAgICAgY3R4LmZpbGxSZWN0KGksIDAsIDEsIDEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJyk7XG59XG5cbi8vIEdsb2JhbCBtdWx0aXBsaWVyIHRvIGJlIGFwcGxpZWQgdG8gdGVycmFpbiBtZXNoIHJlc29sdXRpb25cbi8vIEEgc21hbGxlciBudW1iZXIgdG93YXJkcyAwIHdpbGwgY2F1c2UgZ2VuZXJhdGlvbiBvZiBtZXNoIGRhdGEgd2l0aCBhIHNtYWxsZXIgbWF4IGVycm9yIGFuZCB0aHVzIGFcbi8vIGhpZ2hlciByZXNvbHV0aW9uIG1lc2hcbmNvbnN0IE1FU0hfTVVMVElQTElFUiA9IDAuODtcblxuLyoqXG4gKiBMb2FkIGltYWdlcyByZXF1aXJlZCBmb3IgcmFzdGVyIHRpbGVcbiAqIEBwYXJhbSBhc3NldFJlcXVlc3RzIC0gU1RBQyBhc3NldCByZXF1ZXN0c1xuICogQHBhcmFtIGNvbG9ybWFwSWQgLSBjb2xvcm1hcCBpZFxuICogQHBhcmFtIGNhdGVnb3JpY2FsT3B0aW9ucyAtIGNhdGVnb3JpY2FsIG9wdGlvbnMgcmVxdXJlZCBmb3IgbWFraW5nIG9mIGNhdGVnb3JpY2FsIGNvbG9ybWFwXG4gKiBAcmV0dXJucyBpbWFnZXMgbWFwXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkSW1hZ2VzKFxuICBhc3NldFJlcXVlc3RzOiBBc3NldFJlcXVlc3REYXRhW10sXG4gIGNvbG9ybWFwSWQ6IHN0cmluZyxcbiAgY2F0ZWdvcmljYWxPcHRpb25zOiBDYXRlZ29yaWNhbENvbG9ybWFwT3B0aW9uc1xuKTogUHJvbWlzZTxJbWFnZURhdGE+IHtcbiAgLy8gV2UgbG9hZCBpbWFnZSBkYXRhIChzaW5nbGUgb3IgbXVsdGkgYXNzZXQgYmFzZWQgb24gbnVtYmVyIG9mIHJlcXVlc3RzKSBhbmQgY29sb3JtYXAgaW4gcGFyYWxsZWxcbiAgY29uc3QgW3N0YWNJbWFnZXMsIGNvbG9ybWFwXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICBsb2FkU1RBQ0ltYWdlRGF0YShhc3NldFJlcXVlc3RzKSxcbiAgICAoY29sb3JtYXBJZCAhPT0gQ0FURUdPUklDQUxfQ09MT1JNQVBfSUQgJiYgbWVtb2l6ZWRMb2FkQ29sb3JtYXAoY29sb3JtYXBJZCkpIHx8IG51bGxcbiAgXSk7XG4gIGxldCBpbWFnZUNvbG9ybWFwID0gY29sb3JtYXA7XG4gIGlmIChjb2xvcm1hcElkID09PSBDQVRFR09SSUNBTF9DT0xPUk1BUF9JRCkge1xuICAgIGltYWdlQ29sb3JtYXAgPSBnZW5lcmF0ZUNhdGVnb3JpY2FsQ29sb3JtYXBUZXh0dXJlKGNhdGVnb3JpY2FsT3B0aW9ucyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGFjSW1hZ2VzLFxuICAgIGltYWdlQ29sb3JtYXBcbiAgfTtcbn1cblxuLyoqXG4gKiBDYWNoZSBsb2FkaW5nIG9mIGNvbG9ybWFwLiBFYWNoIGNvbG9ybWFwIGZpbGUgaXMgdmVyeSBzbWFsbCwgb24gdGhlIG9yZGVyIG9mIGEgZmV3IGh1bmRyZWQgYnl0ZXMsXG4gKiBzbyBhIGdsb2JhbCBjYWNoZSBsaWtlIHRoaXMgaXMgbm90IGV4cGVjdGVkIHRvIGVhdCB1cCB0b28gbXVjaCBtZW1vcnkuXG4gKiBNb3N0IGNvbG9ybWFwcyBhcmUgbG9hZGVkIGZyb20gQ0ROLiBJbiBjYXNlIGNvbG9ybWFwSWQgaXMgY2F0ZWdvcmljYWwsIHRoZSBpbWFnZSBpcyBjcmVhdGVkIGZyb21cbiAqIGNhdGVnb3JpY2FsIGNvbG9ybWFwIG9wdGlvbnMuXG4gKiBOT1RFOiB0aGlzIGltcGxlbWVudGF0aW9uIHdpbGwgY2FjaGUgcHJvbWlzZSByZWplY3Rpb25zIGFzIHdlbGwsIGJ1dCBzaW5jZSB0aGVzZSBhcmUgc21hbGwgZmlsZXNcbiAqIG9uIHRoZSBDRE4sIHRoYXQncyBhbiBhY2NlcHRhYmxlIHJpc2sgZm9yIHRoZSB0aW1lIGJlaW5nLlxuICovXG5jb25zdCBtZW1vaXplZExvYWRDb2xvcm1hcDogKGNvbG9ybWFwSWQ6IHN0cmluZykgPT4gUHJvbWlzZTxDb2xvcm1hcEltYWdlRGF0YSB8IG51bGw+IHwgbnVsbCA9XG4gIG1lbW9pemUoKGNvbG9ybWFwSWQ6IHN0cmluZykgPT4ge1xuICAgIGlmIChjb2xvcm1hcElkID09PSBDQVRFR09SSUNBTF9DT0xPUk1BUF9JRCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBsb2FkQ29sb3JtYXAoY29sb3JtYXBJZCk7XG4gICAgfVxuICB9KTtcblxuLyoqXG4gKiBMb2FkIFBORyBjb2xvcm1hcC5cbiAqIFNpbmNlIHRoZSBjb2xvcm1hcCBmaWxlcyBhcmUgc28gc21hbGwgKGNvdXBsZSBodW5kcmVkIGJ5dGVzKSwgd2UgbG9hZCB0aGVtIGFsd2F5cywgZXZlbiBmb3IgYW5cbiAqIFJHQiBjb21wb3NpdGUgd2hlcmUgdGhlIGNvbG9ybWFwIHdvbid0IGJlIHVzZWQuIEFmdGVyIHRoZSBmaXJzdCBsb2FkLCB0aGUgY29sb3JtYXAgc2hvdWxkIGJlXG4gKiBsb2FkZWQgZnJvbSB0aGUgZGlzayBjYWNoZS4gQnkgbG9hZGluZyBhbHdheXMsIHdlIGNhbiBwcmV2ZW50IHVubmVjZXNzYXJpbHkgdHJpZ2dlcmluZ1xuICogZ2V0VGlsZURhdGEsIHdoaWNoIHJlZHVjZXMgZmxhc2hpbmcgZnJvbSByZWxvYWRpbmcgdGhlIGltYWdlcyBvbiB0aGUgR1BVLlxuICpcbiAqIEBwYXJhbSBjb2xvcm1hcElkICAgICAgSUQgb2YgY29sb3JtYXAgUE5HXG4gKlxuICogQHJldHVybnMgaW1hZ2Ugb2JqZWN0IHRvIHBhc3MgdG8gVGV4dHVyZTJEIGNvbnN0cnVjdG9yXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxvYWRDb2xvcm1hcChjb2xvcm1hcElkOiBzdHJpbmcpOiBQcm9taXNlPENvbG9ybWFwSW1hZ2VEYXRhIHwgbnVsbD4ge1xuICBpZiAoIWNvbG9ybWFwSWQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCBnZXRBc3NldFJlcXVlc3Qoe3VybDogY2RuVXJscy5yYXN0ZXJDb2xvck1hcChjb2xvcm1hcElkKSwgb3B0aW9uczoge319KTtcbiAgcmV0dXJuIGxvYWRJbWFnZShyZXF1ZXN0LnVybCwgQ09MT1JNQVBfVEVYVFVSRV9QQVJBTUVURVJTLCByZXF1ZXN0Lm9wdGlvbnMpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgcmVxdWVzdCBkYXRhIGZvciBsb2FkaW5nIGEgc2luZ2xlIG9yIG11bHRpIGFzc2V0IFNUQUMgbWV0YWRhdGEgb2JqZWN0LlxuICogQHBhcmFtIG9wdGlvbnMgU1RBQyBtZXRhZGF0YSBvYmplY3QgYW5kIHVzZXItZGVmaW5lZCBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgSW1hZ2UgZGF0YSwgb3IgbnVsbCBpZiB0aGUgU1RBQyBtZXRhZGF0YSBvYmplY3QgaXMgbm90IHN1cHBvcnRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNUQUNJbWFnZVJlcXVlc3RzKFxuICBvcHRpb25zOiBHZXRUaWxlRGF0YVByb3BzXG4pOiBQcm9taXNlPEFzc2V0UmVxdWVzdERhdGFbXSB8IG51bGw+IHtcbiAgY29uc3Qge2xvYWRBc3NldElkc30gPSBvcHRpb25zO1xuXG4gIGlmIChsb2FkQXNzZXRJZHMubGVuZ3RoID09PSAxKSB7XG4gICAgY29uc3QgcmVxdWVzdCA9IGF3YWl0IGdldFNpbmdsZUFzc2V0U1RBQ1JlcXVlc3Qob3B0aW9ucyk7XG4gICAgcmV0dXJuIHJlcXVlc3QgPyBbcmVxdWVzdF0gOiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IGdldE11bHRpQXNzZXRTVEFDUmVxdWVzdChvcHRpb25zKTtcbn1cblxuLy8gVE9ETzogaW1hZ2UgbG9hZGluZyBzaG91bGQgcmVhbGx5IGJlIF9kcml2ZW4gYnkgdGhlIG1vZHVsZXNfXG4vLyBFLmcuIHRoZSB1c2VyIGNob29zZXMgd2hhdCBraW5kIG9mIHBpcGVsaW5lIHRoZXkgd2FudCBvbiB0aGUgR1BVLCB0aGVuIGZyb20gdGhvc2UgbW9kdWxlcyB3ZSBjYW5cbi8vIHNlZSB3aGV0aGVyIHRoZSB1c2VyIHdhbnRzIHRoZSBwYW5zaGFycGVuZWQgYmFuZCwgY29sb3JtYXAsIGV0Y1xuLyoqXG4gKiBMb2FkIGltYWdlcyBkZWZpbmVkIGJ5IGEgU1RBQyBtZXRhZGF0YSBvYmplY3QgcGx1cyB1c2VyLWRlZmluZWQgcGFyYW1ldGVyc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFNUQUNJbWFnZURhdGEocmVxdWVzdHM6IEFzc2V0UmVxdWVzdERhdGFbXSk6IFByb21pc2U8SW1hZ2VEYXRhPiB7XG4gIHJldHVybiByZXF1ZXN0cy5sZW5ndGggPT09IDEgPyBsb2FkU2luZ2xlQXNzZXRTVEFDKHJlcXVlc3RzWzBdKSA6IGxvYWRNdWx0aUFzc2V0U1RBQyhyZXF1ZXN0cyk7XG59XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiB0aGF0IGZvcm1zIGFuIGFzc2V0IHJlcXVlc3QgYmFzZWQgb24gZ2l2ZW4gcGFyYW1ldGVycy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEFzc2V0UmVxdWVzdCh7XG4gIHVybCxcbiAgcGFyYW1zLFxuICBvcHRpb25zLFxuICB1c2VNYXNrID0gdHJ1ZSxcbiAgcmVzcG9uc2VSZXF1aXJlZEJhbmRJbmRpY2VzXG59OiB7XG4gIHVybDogc3RyaW5nO1xuICBwYXJhbXM/OiBVUkxTZWFyY2hQYXJhbXMgfCBudWxsO1xuICBvcHRpb25zOiBSZXF1ZXN0SW5pdDtcbiAgdXNlTWFzaz86IGJvb2xlYW47XG4gIHJlc3BvbnNlUmVxdWlyZWRCYW5kSW5kaWNlcz86IG51bWJlcltdIHwgbnVsbDtcbn0pOiBQcm9taXNlPEFzc2V0UmVxdWVzdERhdGE+IHtcbiAgY29uc3QgcmVxdWVzdFVybCA9IHVybDtcbiAgY29uc3QgcmVxdWVzdFBhcmFtcyA9IHBhcmFtcyA/PyBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0gb3B0aW9ucztcblxuICBjb25zdCBhc3NldFVybCA9IHJlcXVlc3RQYXJhbXMgPyBgJHtyZXF1ZXN0VXJsfT8ke3JlcXVlc3RQYXJhbXMudG9TdHJpbmcoKX1gIDogcmVxdWVzdFVybDtcbiAgcmV0dXJuIHt1cmw6IGFzc2V0VXJsLCBvcHRpb25zOiByZXF1ZXN0T3B0aW9ucywgdXNlTWFzaywgcmVzcG9uc2VSZXF1aXJlZEJhbmRJbmRpY2VzfTtcbn1cblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIGZvciBmb3JtaW5nIGEgcmVxdWVzdCBmb3IgYSBzaW5nbGUgYXNzZXQgU1RBQyBtZXRhZGF0YSBvYmplY3QuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5LCBtYXgtc3RhdGVtZW50c1xuYXN5bmMgZnVuY3Rpb24gZ2V0U2luZ2xlQXNzZXRTVEFDUmVxdWVzdChcbiAgb3B0aW9uczogR2V0VGlsZURhdGFQcm9wc1xuKTogUHJvbWlzZTxBc3NldFJlcXVlc3REYXRhIHwgbnVsbD4ge1xuICBjb25zdCB7XG4gICAgc3RhYyxcbiAgICBsb2FkQXNzZXRJZHMsXG4gICAgbG9hZEJhbmRJbmRleGVzLFxuICAgIHNpZ25hbCxcbiAgICB1c2VTVEFDU2VhcmNoaW5nLFxuICAgIGluZGV4OiB7eCwgeSwgen0sXG4gICAgc3RhY1NlYXJjaFByb3ZpZGVyLFxuICAgIHN0YXJ0RGF0ZSxcbiAgICBlbmREYXRlLFxuICAgIF9zdGFjUXVlcnlcbiAgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3QgdXNlTWFzayA9IHRydWU7XG5cbiAgLy8gT25seSBhIHNpbmdsZSBVUkwgYmVjYXVzZSBvbmx5IGEgc2luZ2xlIGFzc2V0XG4gIGxldCB1cmw6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBsZXQgdXJsUGFyYW1zOiBVUkxTZWFyY2hQYXJhbXMgfCBudWxsID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICBsZXQgcmVzcG9uc2VSZXF1aXJlZEJhbmRJbmRpY2VzOiBudW1iZXJbXSB8IG51bGwgPSBsb2FkQmFuZEluZGV4ZXM7XG4gIGlmICh1c2VTVEFDU2VhcmNoaW5nICYmIHN0YWMudHlwZSAhPT0gJ0ZlYXR1cmUnKSB7XG4gICAgdXJsUGFyYW1zID0gZ2V0U3RhY0FwaVVybFBhcmFtcyh7XG4gICAgICBzdGFjLFxuICAgICAgc3RhY1NlYXJjaFByb3ZpZGVyLFxuICAgICAgc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZSxcbiAgICAgIG1hc2s6IHVzZU1hc2ssXG4gICAgICBsb2FkQXNzZXRJZHMsXG4gICAgICBfc3RhY1F1ZXJ5XG4gICAgfSk7XG4gICAgdXJsID0gZ2V0VGl0aWxlclVybCh7c3RhYywgdXNlU1RBQ1NlYXJjaGluZywgeCwgeSwgen0pO1xuICB9IGVsc2UgaWYgKHN0YWMudHlwZSA9PT0gJ0ZlYXR1cmUnKSB7XG4gICAgLy8gc3RhYyBpcyBhbiBJdGVtXG4gICAgdXJsUGFyYW1zID0gZ2V0U2luZ2xlQ09HVXJsUGFyYW1zKHtcbiAgICAgIHN0YWMsXG4gICAgICBsb2FkQXNzZXRJZDogbG9hZEFzc2V0SWRzWzBdLFxuICAgICAgbG9hZEJhbmRJbmRleGVzLFxuICAgICAgbWFzazogdXNlTWFza1xuICAgIH0pO1xuICAgIHVybCA9IGdldFRpdGlsZXJVcmwoe3N0YWMsIHVzZVNUQUNTZWFyY2hpbmcsIHgsIHksIHp9KTtcbiAgICByZXNwb25zZVJlcXVpcmVkQmFuZEluZGljZXMgPSBudWxsO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKCF1cmwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBnZXRBc3NldFJlcXVlc3Qoe1xuICAgIHVybCxcbiAgICBwYXJhbXM6IHVybFBhcmFtcyxcbiAgICBvcHRpb25zOiB7c2lnbmFsfSxcbiAgICB1c2VNYXNrLFxuICAgIHJlc3BvbnNlUmVxdWlyZWRCYW5kSW5kaWNlc1xuICB9KTtcbn1cblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIGZvciBmb3JtaW5nIHJlcXVlc3RzIGZvciBhIG11bHRpIGFzc2V0IFNUQUMgbWV0YWRhdGEgb2JqZWN0LlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRNdWx0aUFzc2V0U1RBQ1JlcXVlc3QoXG4gIG9wdGlvbnM6IEdldFRpbGVEYXRhUHJvcHNcbik6IFByb21pc2U8QXNzZXRSZXF1ZXN0RGF0YVtdIHwgbnVsbD4ge1xuICBjb25zdCB7XG4gICAgc3RhYyxcbiAgICBsb2FkQXNzZXRJZHMsXG4gICAgbG9hZEJhbmRJbmRleGVzLFxuICAgIHNpZ25hbCxcbiAgICB1c2VTVEFDU2VhcmNoaW5nLFxuICAgIHN0YWNTZWFyY2hQcm92aWRlcixcbiAgICBzdGFydERhdGUsXG4gICAgZW5kRGF0ZSxcbiAgICBpbmRleDoge3gsIHksIHp9LFxuICAgIF9zdGFjUXVlcnlcbiAgfSA9IG9wdGlvbnM7XG5cbiAgLy8gTXVsdGlwbGUgdXJscywgb25lIGZvciBlYWNoIGFzc2V0XG4gIGxldCByZXF1ZXN0RGF0YToge3VybDogc3RyaW5nOyBwYXJhbXM6IFVSTFNlYXJjaFBhcmFtcyB8IG51bGw7IG9wdGlvbnM/OiBSZXF1ZXN0SW5pdH1bXSA9IFtdO1xuXG4gIC8vIFdlIGFzc3VtZSB0aGF0IHRoZXJlJ3Mgb25seSBvbmUgdmFsaWRpdHkgbWFzayBmb3IgdGhlIGVudGlyZSBhc3NldCwgYW5kIHRoZXJlZm9yZSBhbnkgb2YgdGhlXG4gIC8vIHJlcXVlc3RzIHdvdWxkIHJldHVybiB0aGUgc2FtZSB2YWxpZGl0eSBiaXRtYXAuIFRoZXJlZm9yZSB3ZSBvbmx5IHJlcXVlc3QgYSBtYXNrIGZvciB0aGUgZmlyc3RcbiAgLy8gYXNzZXRcbiAgY29uc3QgcmVxdWVzdE1hc2s6IGJvb2xlYW5bXSA9IG5ldyBBcnJheShsb2FkQXNzZXRJZHMubGVuZ3RoKS5maWxsKGZhbHNlKTtcbiAgcmVxdWVzdE1hc2tbMF0gPSB0cnVlO1xuXG4gIGlmICh1c2VTVEFDU2VhcmNoaW5nICYmIHN0YWMudHlwZSAhPT0gJ0ZlYXR1cmUnKSB7XG4gICAgcmVxdWVzdERhdGEgPSB6aXAobG9hZEFzc2V0SWRzLCByZXF1ZXN0TWFzaykubWFwKChbYXNzZXRJZCwgbWFza10pID0+IHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IGdldFN0YWNBcGlVcmxQYXJhbXMoe1xuICAgICAgICBzdGFjLFxuICAgICAgICBzdGFjU2VhcmNoUHJvdmlkZXIsXG4gICAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgICAgZW5kRGF0ZSxcbiAgICAgICAgbWFzayxcbiAgICAgICAgbG9hZEFzc2V0SWRzOiBbYXNzZXRJZF0sXG4gICAgICAgIF9zdGFjUXVlcnlcbiAgICAgIH0pO1xuICAgICAgY29uc3QgdXJsID0gZ2V0VGl0aWxlclVybCh7c3RhYywgdXNlU1RBQ1NlYXJjaGluZywgeCwgeSwgen0pO1xuICAgICAgcmV0dXJuIHt1cmwsIHBhcmFtc307XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoc3RhYy50eXBlID09PSAnRmVhdHVyZScpIHtcbiAgICByZXF1ZXN0RGF0YSA9IHppcDMobG9hZEFzc2V0SWRzLCBsb2FkQmFuZEluZGV4ZXMsIHJlcXVlc3RNYXNrKS5tYXAoXG4gICAgICAoW2Fzc2V0SWQsIGJhbmRJbmRleCwgbWFza10pID0+IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gZ2V0U2luZ2xlQ09HVXJsUGFyYW1zKHtcbiAgICAgICAgICBzdGFjLFxuICAgICAgICAgIGxvYWRBc3NldElkOiBhc3NldElkLFxuICAgICAgICAgIGxvYWRCYW5kSW5kZXhlczogW2JhbmRJbmRleF0sXG4gICAgICAgICAgbWFza1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdXJsID0gZ2V0VGl0aWxlclVybCh7c3RhYywgdXNlU1RBQ1NlYXJjaGluZywgeCwgeSwgen0pO1xuICAgICAgICByZXR1cm4ge3VybCwgcGFyYW1zfTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgaWYgKGlzVmFsaWRSZXF1ZXN0RGF0YShyZXF1ZXN0RGF0YSkpIHtcbiAgICByZXR1cm4gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICByZXF1ZXN0RGF0YS5tYXAocmVxdWVzdCA9PlxuICAgICAgICBnZXRBc3NldFJlcXVlc3Qoey4uLnJlcXVlc3QsIG9wdGlvbnM6IHJlcXVlc3Qub3B0aW9ucyA/PyB7c2lnbmFsfX0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIExvYWQgaW1hZ2UgZGF0YSB3aGVuIGNvbnNvbGlkYXRlZCBpbiBiYW5kcyB3aXRoaW4gYSBzaW5nbGUgU1RBQyBBc3NldFxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkU2luZ2xlQXNzZXRTVEFDKHJlcXVlc3Q6IEFzc2V0UmVxdWVzdERhdGEpOiBQcm9taXNlPEltYWdlRGF0YT4ge1xuICBjb25zdCBpbWFnZUJhbmRzID0gYXdhaXQgbG9hZE5weUFycmF5KHJlcXVlc3QsIHRydWUpO1xuXG4gIGlmICghaW1hZ2VCYW5kcykge1xuICAgIHJldHVybiB7XG4gICAgICBpbWFnZUJhbmRzXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGltYWdlTWFzayA9IChyZXF1ZXN0LnVzZU1hc2sgJiYgaW1hZ2VCYW5kcy5wb3AoKSkgfHwgbnVsbDtcbiAgbGV0IG1hcHBlZEltYWdlQmFuZHMgPSBpbWFnZUJhbmRzO1xuICBpZiAocmVxdWVzdC5yZXNwb25zZVJlcXVpcmVkQmFuZEluZGljZXMpIHtcbiAgICBtYXBwZWRJbWFnZUJhbmRzID0gcmVxdWVzdC5yZXNwb25zZVJlcXVpcmVkQmFuZEluZGljZXMubWFwKGkgPT4gaW1hZ2VCYW5kc1tpXSk7XG4gIH1cbiAgcmV0dXJuIHtpbWFnZUJhbmRzOiBtYXBwZWRJbWFnZUJhbmRzLCBpbWFnZU1hc2t9O1xufVxuXG4vKipcbiAqIExvYWQgaW1hZ2UgZGF0YSB3aGVuIHNwbGl0IGFtb25nIG11bHRpcGxlIFNUQUMgQXNzZXRzXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxvYWRNdWx0aUFzc2V0U1RBQyhyZXF1ZXN0czogQXNzZXRSZXF1ZXN0RGF0YVtdKTogUHJvbWlzZTxJbWFnZURhdGE+IHtcbiAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKHJlcXVlc3RzLm1hcChyZXF1ZXN0ID0+IGxvYWROcHlBcnJheShyZXF1ZXN0LCB0cnVlKSkpO1xuICAvLyBUaGUgZmlyc3QgcmVxdWVzdCBpbmNsdWRlcyBhIG1hc2tcbiAgY29uc3QgaW1hZ2VNYXNrID0gcmVzdWx0c1swXT8ucG9wKCkgfHwgbnVsbDtcbiAgY29uc3QgaW1hZ2VCYW5kcyA9IHJlc3VsdHMuZmxhdCgpLmZpbHRlcihiYW5kID0+IGJhbmQgIT09IG51bGwpIGFzIEltYWdlRGF0YVsnaW1hZ2VCYW5kcyddO1xuICByZXR1cm4ge2ltYWdlQmFuZHMsIGltYWdlTWFza307XG59XG5cbi8qKlxuICogSXRlcmF0ZSBvdmVyIHR3byBhcnJheXMgc2ltdWx0YW5lb3VzbHksIHNpbWlsYXIgdG8gUHl0aG9uJ3MgemlwIGJ1aWx0aW5cbiAqL1xuZnVuY3Rpb24gemlwPFQxLCBUMj4oYTogVDFbXSwgYjogVDJbXSk6IFtUMSwgVDJdW10ge1xuICByZXR1cm4gYS5tYXAoKGssIGkpID0+IFtrLCBiW2ldXSk7XG59XG5cbi8qKlxuICogSXRlcmF0ZSBvdmVyIHRocmVlIGFycmF5cyBzaW11bHRhbmVvdXNseSwgc2ltaWxhciB0byBQeXRob24ncyB6aXAgYnVpbHRpblxuICovXG5mdW5jdGlvbiB6aXAzPFQxLCBUMiwgVDM+KGE6IFQxW10sIGI6IFQyW10sIGM6IFQzW10pOiBbVDEsIFQyLCBUM11bXSB7XG4gIHJldHVybiBhLm1hcCgoaywgaSkgPT4gW2ssIGJbaV0sIGNbaV1dKTtcbn1cblxuLyoqXG4gKiBUeXBlIGd1YXJkIHRvIGNoZWNrIGlmIGFsbCBhcnJheSBlbGVtZW50cyBhcmUgc3RyaW5nc1xuICovXG5mdW5jdGlvbiBpc1ZhbGlkUmVxdWVzdERhdGEoXG4gIGFycjoge3VybDogdW5rbm93bjsgcGFyYW1zOiB1bmtub3duOyBvcHRpb25zPzogdW5rbm93bn1bXVxuKTogYXJyIGlzIHt1cmw6IHN0cmluZzsgcGFyYW1zOiBVUkxTZWFyY2hQYXJhbXM7IG9wdGlvbnM6IHVua25vd259W10ge1xuICByZXR1cm4gYXJyLmV2ZXJ5KHggPT4gdHlwZW9mIHg/LnVybCA9PT0gJ3N0cmluZycgJiYgeD8ucGFyYW1zICE9PSBudWxsKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYmFzZTY0IGltYWdlIGRhdGEgdXJsIGZvciBjYXRlZ29yaWNhbCBjb2xvcm1hcFxuICogQHBhcmFtIGNhdGVnb3JpY2FsT3B0aW9ucyAtIGNvbG9yIG1hcCBjb25maWd1cmF0aW9uIGFuZCBtaW4tbWF4IHZhbHVlcyBvZiBjYXRlZ29yaWNhbCBiYW5kXG4gKiBAcmV0dXJucyBiYXNlNjQgaW1hZ2UgZGF0YSB1cmxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhdGVnb3JpY2FsQ29sb3JtYXBEYXRhVXJsKFxuICBjYXRlZ29yaWNhbE9wdGlvbnM6IENhdGVnb3JpY2FsQ29sb3JtYXBPcHRpb25zXG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgYml0bWFwID0gZ2VuZXJhdGVDYXRlZ29yaWNhbEJpdG1hcEFycmF5KGNhdGVnb3JpY2FsT3B0aW9ucyk7XG4gIGlmICghYml0bWFwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIGdldEltYWdlRGF0YVVSTChiaXRtYXAsIENBVEVHT1JJQ0FMX1RFWFRVUkVfV0lEVEgsIDEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFRlcnJhaW4ocHJvcHM6IHtcbiAgaW5kZXg6IHt4OiBudW1iZXI7IHk6IG51bWJlcjsgejogbnVtYmVyfTtcbiAgc2lnbmFsOiBBYm9ydFNpZ25hbDtcbiAgcmFzdGVyVGlsZVNlcnZlclVybHM6IHN0cmluZ1tdO1xufSk6IFByb21pc2U8VGVycmFpbkRhdGE+IHtcbiAgY29uc3Qge1xuICAgIGluZGV4OiB7eCwgeSwgen0sXG4gICAgc2lnbmFsLFxuICAgIHJhc3RlclRpbGVTZXJ2ZXJVcmxzXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCBtZXNoTWF4RXJyb3IgPSBnZXRNZXNoTWF4RXJyb3IoeiwgTUVTSF9NVUxUSVBMSUVSKTtcbiAgY29uc3QgdGVycmFpblVybCA9IGdldFRlcnJhaW5VcmwocmFzdGVyVGlsZVNlcnZlclVybHMsIHgsIHksIHosIG1lc2hNYXhFcnJvcik7XG4gIGNvbnN0IGxvYWRlck9wdGlvbnMgPSBnZXRMb2FkZXJPcHRpb25zKCk7XG5cbiAgcmV0dXJuIGxvYWQodGVycmFpblVybCwgUXVhbnRpemVkTWVzaExvYWRlciwge1xuICAgIGZldGNoOiB7c2lnbmFsfSxcbiAgICAncXVhbnRpemVkLW1lc2gnOiB7XG4gICAgICAuLi5sb2FkZXJPcHRpb25zWydxdWFudGl6ZWQtbWVzaCddLFxuICAgICAgc2tpcnRIZWlnaHQ6IG1lc2hNYXhFcnJvciAqIDJcbiAgICB9XG4gIH0pIGFzIFByb21pc2U8VGVycmFpbkRhdGE+O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQU9BLElBQUFBLEtBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUVBLElBQUFJLFVBQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLE9BQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFNBQUEsR0FBQU4sT0FBQTtBQU1BLElBQUFPLGdCQUFBLEdBQUFQLE9BQUE7QUFTQSxJQUFBUSxJQUFBLEdBQUFSLE9BQUE7QUFNZSxTQUFBUyxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FB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R0FBeUQsRUFDVTtFQUNuRSxPQUFPQSxHQUFHLENBQUNDLEtBQUssQ0FBQyxVQUFBNUQsQ0FBQztJQUFBLE9BQUksUUFBT0EsQ0FBQyxhQUFEQSxDQUFDLHVCQUFEQSxDQUFDLENBQUUvQyxHQUFHLE1BQUssUUFBUSxJQUFJLENBQUErQyxDQUFDLGFBQURBLENBQUMsdUJBQURBLENBQUMsQ0FBRXBCLE1BQU0sTUFBSyxJQUFJO0VBQUEsRUFBQztBQUN6RTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU2lGLDZCQUE2QkEsQ0FDM0N6SSxrQkFBOEMsRUFDL0I7RUFDZixJQUFNakMsTUFBTSxHQUFHLElBQUEySywrQ0FBOEIsRUFBQzFJLGtCQUFrQixDQUFDO0VBQ2pFLElBQUksQ0FBQ2pDLE1BQU0sRUFBRTtJQUNYLE9BQU8sSUFBSTtFQUNiO0VBQ0EsT0FBT0QsZUFBZSxDQUFDQyxNQUFNLEVBQUU0SywwQ0FBeUIsRUFBRSxDQUFDLENBQUM7QUFDOUQ7QUFFTyxTQUFTQyxXQUFXQSxDQUFDQyxLQUkzQixFQUF3QjtFQUN2QixJQUFBQyxZQUFBLEdBSUlELEtBQUssQ0FIUHZELEtBQUs7SUFBR1YsQ0FBQyxHQUFBa0UsWUFBQSxDQUFEbEUsQ0FBQztJQUFFQyxDQUFDLEdBQUFpRSxZQUFBLENBQURqRSxDQUFDO0lBQUVDLENBQUMsR0FBQWdFLFlBQUEsQ0FBRGhFLENBQUM7SUFDZkwsTUFBTSxHQUVKb0UsS0FBSyxDQUZQcEUsTUFBTTtJQUNOc0Usb0JBQW9CLEdBQ2xCRixLQUFLLENBRFBFLG9CQUFvQjtFQUd0QixJQUFNQyxZQUFZLEdBQUcsSUFBQUMsb0JBQWUsRUFBQ25FLENBQUMsRUFBRTFGLGVBQWUsQ0FBQztFQUN4RCxJQUFNOEosVUFBVSxHQUFHLElBQUFDLGtCQUFhLEVBQUNKLG9CQUFvQixFQUFFbkUsQ0FBQyxFQUFFQyxDQUFDLEVBQUVDLENBQUMsRUFBRWtFLFlBQVksQ0FBQztFQUM3RSxJQUFNSSxhQUFhLEdBQUcsSUFBQUMsMkJBQWdCLEVBQUMsQ0FBQztFQUV4QyxPQUFPLElBQUFDLFVBQUksRUFBQ0osVUFBVSxFQUFFSyw0QkFBbUIsRUFBRTtJQUMzQ0MsS0FBSyxFQUFFO01BQUMvRSxNQUFNLEVBQU5BO0lBQU0sQ0FBQztJQUNmLGdCQUFnQixFQUFBbkgsYUFBQSxDQUFBQSxhQUFBLEtBQ1g4TCxhQUFhLENBQUMsZ0JBQWdCLENBQUM7TUFDbENLLFdBQVcsRUFBRVQsWUFBWSxHQUFHO0lBQUM7RUFFakMsQ0FBQyxDQUFDO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
595
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfdGVycmFpbiIsIl9tZW1vaXplIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb25zdGFudHMiLCJfY29uZmlnIiwiX2dwdVV0aWxzIiwiX3Jhc3RlclRpbGVVdGlscyIsIl91cmwiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImdldEltYWdlRGF0YVVSTCIsImJpdG1hcCIsIndpZHRoIiwiaGVpZ2h0IiwiY2FudmFzIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiZ2V0Q29udGV4dCIsInNldEF0dHJpYnV0ZSIsImNvbmNhdCIsImN0eCIsImkiLCJfYml0bWFwJHN1YmFycmF5Iiwic3ViYXJyYXkiLCJfYml0bWFwJHN1YmFycmF5MiIsIl9zbGljZWRUb0FycmF5MiIsImciLCJiIiwiYSIsImZpbGxTdHlsZSIsImZpbGxSZWN0IiwidG9EYXRhVVJMIiwiTUVTSF9NVUxUSVBMSUVSIiwibG9hZEltYWdlcyIsIl94IiwiX3gyIiwiX3gzIiwiX2xvYWRJbWFnZXMiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsImFzc2V0UmVxdWVzdHMiLCJjb2xvcm1hcElkIiwiY2F0ZWdvcmljYWxPcHRpb25zIiwiX3lpZWxkJFByb21pc2UkYWxsIiwiX3lpZWxkJFByb21pc2UkYWxsMiIsInN0YWNJbWFnZXMiLCJjb2xvcm1hcCIsImltYWdlQ29sb3JtYXAiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiUHJvbWlzZSIsImFsbCIsImxvYWRTVEFDSW1hZ2VEYXRhIiwiQ0FURUdPUklDQUxfQ09MT1JNQVBfSUQiLCJtZW1vaXplZExvYWRDb2xvcm1hcCIsInNlbnQiLCJnZW5lcmF0ZUNhdGVnb3JpY2FsQ29sb3JtYXBUZXh0dXJlIiwiYWJydXB0Iiwic3RvcCIsIm1lbW9pemUiLCJsb2FkQ29sb3JtYXAiLCJfeDQiLCJfbG9hZENvbG9ybWFwIiwiX2NhbGxlZTIiLCJyZXF1ZXN0IiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiZ2V0QXNzZXRSZXF1ZXN0IiwidXJsIiwiUmFzdGVyTGF5ZXJSZXNvdXJjZXMiLCJyYXN0ZXJDb2xvck1hcCIsIm9wdGlvbnMiLCJsb2FkSW1hZ2UiLCJDT0xPUk1BUF9URVhUVVJFX1BBUkFNRVRFUlMiLCJnZXRTVEFDSW1hZ2VSZXF1ZXN0cyIsIl94NSIsIl9nZXRTVEFDSW1hZ2VSZXF1ZXN0cyIsIl9jYWxsZWUzIiwibG9hZEFzc2V0SWRzIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiZ2V0U2luZ2xlQXNzZXRTVEFDUmVxdWVzdCIsImdldE11bHRpQXNzZXRTVEFDUmVxdWVzdCIsIl94NiIsIl9sb2FkU1RBQ0ltYWdlRGF0YSIsIl9jYWxsZWU0IiwicmVxdWVzdHMiLCJfY2FsbGVlNCQiLCJfY29udGV4dDQiLCJsb2FkU2luZ2xlQXNzZXRTVEFDIiwibG9hZE11bHRpQXNzZXRTVEFDIiwiX3g3IiwiX2dldEFzc2V0UmVxdWVzdCIsIl9jYWxsZWU1IiwiX3JlZiIsInBhcmFtcyIsIl9yZWYkdXNlTWFzayIsInVzZU1hc2siLCJyZXNwb25zZVJlcXVpcmVkQmFuZEluZGljZXMiLCJyZXF1ZXN0VXJsIiwicmVxdWVzdFBhcmFtcyIsInJlcXVlc3RPcHRpb25zIiwiYXNzZXRVcmwiLCJfY2FsbGVlNSQiLCJfY29udGV4dDUiLCJVUkxTZWFyY2hQYXJhbXMiLCJ0b1N0cmluZyIsIl94OCIsIl9nZXRTaW5nbGVBc3NldFNUQUNSZXF1ZXN0IiwiX2NhbGxlZTYiLCJzdGFjIiwibG9hZEJhbmRJbmRleGVzIiwic2lnbmFsIiwidXNlU1RBQ1NlYXJjaGluZyIsIl9vcHRpb25zJGluZGV4IiwieCIsInkiLCJ6Iiwic3RhY1NlYXJjaFByb3ZpZGVyIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsIl9zdGFjUXVlcnkiLCJ1cmxQYXJhbXMiLCJfY2FsbGVlNiQiLCJfY29udGV4dDYiLCJpbmRleCIsInR5cGUiLCJnZXRTdGFjQXBpVXJsUGFyYW1zIiwibWFzayIsImdldFRpdGlsZXJVcmwiLCJnZXRTaW5nbGVDT0dVcmxQYXJhbXMiLCJsb2FkQXNzZXRJZCIsIl94OSIsIl9nZXRNdWx0aUFzc2V0U1RBQ1JlcXVlc3QiLCJfY2FsbGVlNyIsIl9vcHRpb25zJGluZGV4MiIsInJlcXVlc3REYXRhIiwicmVxdWVzdE1hc2siLCJfY2FsbGVlNyQiLCJfY29udGV4dDciLCJBcnJheSIsImZpbGwiLCJ6aXAiLCJtYXAiLCJfcmVmMiIsIl9yZWYzIiwiYXNzZXRJZCIsInppcDMiLCJfcmVmNCIsIl9yZWY1IiwiYmFuZEluZGV4IiwiaXNWYWxpZFJlcXVlc3REYXRhIiwiX3JlcXVlc3Qkb3B0aW9ucyIsIl94MTAiLCJfbG9hZFNpbmdsZUFzc2V0U1RBQyIsIl9jYWxsZWU4IiwiaW1hZ2VCYW5kcyIsImltYWdlTWFzayIsIm1hcHBlZEltYWdlQmFuZHMiLCJfY2FsbGVlOCQiLCJfY29udGV4dDgiLCJsb2FkTnB5QXJyYXkiLCJwb3AiLCJfeDExIiwiX2xvYWRNdWx0aUFzc2V0U1RBQyIsIl9jYWxsZWU5IiwiX3Jlc3VsdHMkIiwicmVzdWx0cyIsIl9jYWxsZWU5JCIsIl9jb250ZXh0OSIsImZsYXQiLCJiYW5kIiwiayIsImMiLCJhcnIiLCJldmVyeSIsImdldENhdGVnb3JpY2FsQ29sb3JtYXBEYXRhVXJsIiwiZ2VuZXJhdGVDYXRlZ29yaWNhbEJpdG1hcEFycmF5IiwiQ0FURUdPUklDQUxfVEVYVFVSRV9XSURUSCIsImxvYWRUZXJyYWluIiwiX3gxMiIsIl9sb2FkVGVycmFpbiIsIl9jYWxsZWUxMCIsInByb3BzIiwiX3Byb3BzJGluZGV4IiwiYm91bmRzRm9yR2VvbWV0cnkiLCJyYXN0ZXJUaWxlU2VydmVyVXJscyIsIm1lc2hNYXhFcnJvciIsInRlcnJhaW5VcmwiLCJsb2FkZXJPcHRpb25zIiwiX2NhbGxlZTEwJCIsIl9jb250ZXh0MTAiLCJnZXRNZXNoTWF4RXJyb3IiLCJnZXRUZXJyYWluVXJsIiwiZ2V0TG9hZGVyT3B0aW9ucyIsImxvYWQiLCJRdWFudGl6ZWRNZXNoTG9hZGVyIiwiZmV0Y2giLCJib3VuZHMiLCJza2lydEhlaWdodCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yYXN0ZXItdGlsZS9pbWFnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb25zIHRvIGNyZWF0ZSBvYmplY3RzIHRvIHBhc3MgdG8gZGVjay5nbC1yYXN0ZXJcbiAqL1xuXG5pbXBvcnQge2xvYWR9IGZyb20gJ0Bsb2FkZXJzLmdsL2NvcmUnO1xuaW1wb3J0IHtRdWFudGl6ZWRNZXNoTG9hZGVyfSBmcm9tICdAbG9hZGVycy5nbC90ZXJyYWluJztcbmltcG9ydCBtZW1vaXplIGZyb20gJ2xvZGFzaC9tZW1vaXplJztcblxuaW1wb3J0IHtnZXRMb2FkZXJPcHRpb25zfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7Q0FURUdPUklDQUxfQ09MT1JNQVBfSUR9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7XG4gIGxvYWROcHlBcnJheSxcbiAgZ2VuZXJhdGVDYXRlZ29yaWNhbENvbG9ybWFwVGV4dHVyZSxcbiAgbG9hZEltYWdlLFxuICBDT0xPUk1BUF9URVhUVVJFX1BBUkFNRVRFUlNcbn0gZnJvbSAnLi9ncHUtdXRpbHMnO1xuaW1wb3J0IHtDQVRFR09SSUNBTF9URVhUVVJFX1dJRFRILCBnZW5lcmF0ZUNhdGVnb3JpY2FsQml0bWFwQXJyYXl9IGZyb20gJy4vcmFzdGVyLXRpbGUtdXRpbHMnO1xuaW1wb3J0IHtcbiAgR2V0VGlsZURhdGFQcm9wcyxcbiAgSW1hZ2VEYXRhLFxuICBUZXJyYWluRGF0YSxcbiAgQXNzZXRSZXF1ZXN0RGF0YSxcbiAgQ2F0ZWdvcmljYWxDb2xvcm1hcE9wdGlvbnMsXG4gIENvbG9ybWFwSW1hZ2VEYXRhXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgZ2V0VGl0aWxlclVybCxcbiAgZ2V0VGVycmFpblVybCxcbiAgZ2V0U2luZ2xlQ09HVXJsUGFyYW1zLFxuICBnZXRTdGFjQXBpVXJsUGFyYW1zLFxuICBnZXRNZXNoTWF4RXJyb3IsXG4gIFJhc3RlckxheWVyUmVzb3VyY2VzXG59IGZyb20gJy4vdXJsJztcblxuLyoqXG4gKiBDcmVhdGUgZGF0YVVybCBpbWFnZSBmcm9tIGJpdG1hcCBhcnJheVxuICogQHBhcmFtIGJpdG1hcCAtIFJHQkEgYnl0ZSBiaXRtYXAgYXJyYXlcbiAqIEBwYXJhbSB3aWR0aCAtIHdpZHRoIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIGhlaWdodCAtIGhlaWdodCBvZiB0aGUgaW1hZ2VcbiAqIEByZXR1cm5zIGJhc2U2NCBkYXRhIHVybCBvZiB0aGUgaW1hZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEltYWdlRGF0YVVSTChiaXRtYXA6IFVpbnQ4QXJyYXksIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICBpZiAoIWNhbnZhcy5nZXRDb250ZXh0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY2FudmFzLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBgJHt3aWR0aH1gKTtcbiAgY2FudmFzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgYCR7aGVpZ2h0fWApO1xuICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgaWYgKCFjdHgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IHdpZHRoOyBpKyspIHtcbiAgICBjb25zdCBbciwgZywgYiwgYV0gPSBiaXRtYXAuc3ViYXJyYXkoaSAqIDQsIGkgKiA0ICsgNCk7XG4gICAgaWYgKGEgIT09IDApIHtcbiAgICAgIGN0eC5maWxsU3R5bGUgPSBgcmdiKCR7cn0sICR7Z30sICR7Yn0pYDtcbiAgICAgIGN0eC5maWxsUmVjdChpLCAwLCAxLCAxKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xufVxuXG4vLyBHbG9iYWwgbXVsdGlwbGllciB0byBiZSBhcHBsaWVkIHRvIHRlcnJhaW4gbWVzaCByZXNvbHV0aW9uXG4vLyBBIHNtYWxsZXIgbnVtYmVyIHRvd2FyZHMgMCB3aWxsIGNhdXNlIGdlbmVyYXRpb24gb2YgbWVzaCBkYXRhIHdpdGggYSBzbWFsbGVyIG1heCBlcnJvciBhbmQgdGh1cyBhXG4vLyBoaWdoZXIgcmVzb2x1dGlvbiBtZXNoXG5jb25zdCBNRVNIX01VTFRJUExJRVIgPSAwLjg7XG5cbi8qKlxuICogTG9hZCBpbWFnZXMgcmVxdWlyZWQgZm9yIHJhc3RlciB0aWxlXG4gKiBAcGFyYW0gYXNzZXRSZXF1ZXN0cyAtIFNUQUMgYXNzZXQgcmVxdWVzdHNcbiAqIEBwYXJhbSBjb2xvcm1hcElkIC0gY29sb3JtYXAgaWRcbiAqIEBwYXJhbSBjYXRlZ29yaWNhbE9wdGlvbnMgLSBjYXRlZ29yaWNhbCBvcHRpb25zIHJlcXVyZWQgZm9yIG1ha2luZyBvZiBjYXRlZ29yaWNhbCBjb2xvcm1hcFxuICogQHJldHVybnMgaW1hZ2VzIG1hcFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZEltYWdlcyhcbiAgYXNzZXRSZXF1ZXN0czogQXNzZXRSZXF1ZXN0RGF0YVtdLFxuICBjb2xvcm1hcElkOiBzdHJpbmcsXG4gIGNhdGVnb3JpY2FsT3B0aW9uczogQ2F0ZWdvcmljYWxDb2xvcm1hcE9wdGlvbnNcbik6IFByb21pc2U8SW1hZ2VEYXRhPiB7XG4gIC8vIFdlIGxvYWQgaW1hZ2UgZGF0YSAoc2luZ2xlIG9yIG11bHRpIGFzc2V0IGJhc2VkIG9uIG51bWJlciBvZiByZXF1ZXN0cykgYW5kIGNvbG9ybWFwIGluIHBhcmFsbGVsXG4gIGNvbnN0IFtzdGFjSW1hZ2VzLCBjb2xvcm1hcF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgbG9hZFNUQUNJbWFnZURhdGEoYXNzZXRSZXF1ZXN0cyksXG4gICAgKGNvbG9ybWFwSWQgIT09IENBVEVHT1JJQ0FMX0NPTE9STUFQX0lEICYmIG1lbW9pemVkTG9hZENvbG9ybWFwKGNvbG9ybWFwSWQpKSB8fCBudWxsXG4gIF0pO1xuICBsZXQgaW1hZ2VDb2xvcm1hcCA9IGNvbG9ybWFwO1xuICBpZiAoY29sb3JtYXBJZCA9PT0gQ0FURUdPUklDQUxfQ09MT1JNQVBfSUQpIHtcbiAgICBpbWFnZUNvbG9ybWFwID0gZ2VuZXJhdGVDYXRlZ29yaWNhbENvbG9ybWFwVGV4dHVyZShjYXRlZ29yaWNhbE9wdGlvbnMpO1xuICB9XG4gIHJldHVybiB7XG4gICAgLi4uc3RhY0ltYWdlcyxcbiAgICBpbWFnZUNvbG9ybWFwXG4gIH07XG59XG5cbi8qKlxuICogQ2FjaGUgbG9hZGluZyBvZiBjb2xvcm1hcC4gRWFjaCBjb2xvcm1hcCBmaWxlIGlzIHZlcnkgc21hbGwsIG9uIHRoZSBvcmRlciBvZiBhIGZldyBodW5kcmVkIGJ5dGVzLFxuICogc28gYSBnbG9iYWwgY2FjaGUgbGlrZSB0aGlzIGlzIG5vdCBleHBlY3RlZCB0byBlYXQgdXAgdG9vIG11Y2ggbWVtb3J5LlxuICogTW9zdCBjb2xvcm1hcHMgYXJlIGxvYWRlZCBmcm9tIENETi4gSW4gY2FzZSBjb2xvcm1hcElkIGlzIGNhdGVnb3JpY2FsLCB0aGUgaW1hZ2UgaXMgY3JlYXRlZCBmcm9tXG4gKiBjYXRlZ29yaWNhbCBjb2xvcm1hcCBvcHRpb25zLlxuICogTk9URTogdGhpcyBpbXBsZW1lbnRhdGlvbiB3aWxsIGNhY2hlIHByb21pc2UgcmVqZWN0aW9ucyBhcyB3ZWxsLCBidXQgc2luY2UgdGhlc2UgYXJlIHNtYWxsIGZpbGVzXG4gKiBvbiB0aGUgQ0ROLCB0aGF0J3MgYW4gYWNjZXB0YWJsZSByaXNrIGZvciB0aGUgdGltZSBiZWluZy5cbiAqL1xuY29uc3QgbWVtb2l6ZWRMb2FkQ29sb3JtYXA6IChjb2xvcm1hcElkOiBzdHJpbmcpID0+IFByb21pc2U8Q29sb3JtYXBJbWFnZURhdGEgfCBudWxsPiB8IG51bGwgPVxuICBtZW1vaXplKChjb2xvcm1hcElkOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoY29sb3JtYXBJZCA9PT0gQ0FURUdPUklDQUxfQ09MT1JNQVBfSUQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbG9hZENvbG9ybWFwKGNvbG9ybWFwSWQpO1xuICAgIH1cbiAgfSk7XG5cbi8qKlxuICogTG9hZCBQTkcgY29sb3JtYXAuXG4gKiBTaW5jZSB0aGUgY29sb3JtYXAgZmlsZXMgYXJlIHNvIHNtYWxsIChjb3VwbGUgaHVuZHJlZCBieXRlcyksIHdlIGxvYWQgdGhlbSBhbHdheXMsIGV2ZW4gZm9yIGFuXG4gKiBSR0IgY29tcG9zaXRlIHdoZXJlIHRoZSBjb2xvcm1hcCB3b24ndCBiZSB1c2VkLiBBZnRlciB0aGUgZmlyc3QgbG9hZCwgdGhlIGNvbG9ybWFwIHNob3VsZCBiZVxuICogbG9hZGVkIGZyb20gdGhlIGRpc2sgY2FjaGUuIEJ5IGxvYWRpbmcgYWx3YXlzLCB3ZSBjYW4gcHJldmVudCB1bm5lY2Vzc2FyaWx5IHRyaWdnZXJpbmdcbiAqIGdldFRpbGVEYXRhLCB3aGljaCByZWR1Y2VzIGZsYXNoaW5nIGZyb20gcmVsb2FkaW5nIHRoZSBpbWFnZXMgb24gdGhlIEdQVS5cbiAqXG4gKiBAcGFyYW0gY29sb3JtYXBJZCAgICAgIElEIG9mIGNvbG9ybWFwIFBOR1xuICpcbiAqIEByZXR1cm5zIGltYWdlIG9iamVjdCB0byBwYXNzIHRvIFRleHR1cmUyRCBjb25zdHJ1Y3RvclxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkQ29sb3JtYXAoY29sb3JtYXBJZDogc3RyaW5nKTogUHJvbWlzZTxDb2xvcm1hcEltYWdlRGF0YSB8IG51bGw+IHtcbiAgaWYgKCFjb2xvcm1hcElkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgZ2V0QXNzZXRSZXF1ZXN0KHtcbiAgICB1cmw6IFJhc3RlckxheWVyUmVzb3VyY2VzLnJhc3RlckNvbG9yTWFwKGNvbG9ybWFwSWQpLFxuICAgIG9wdGlvbnM6IHt9XG4gIH0pO1xuICByZXR1cm4gbG9hZEltYWdlKHJlcXVlc3QudXJsLCBDT0xPUk1BUF9URVhUVVJFX1BBUkFNRVRFUlMsIHJlcXVlc3Qub3B0aW9ucyk7XG59XG5cbi8qKlxuICogR2V0IHRoZSByZXF1ZXN0IGRhdGEgZm9yIGxvYWRpbmcgYSBzaW5nbGUgb3IgbXVsdGkgYXNzZXQgU1RBQyBtZXRhZGF0YSBvYmplY3QuXG4gKiBAcGFyYW0gb3B0aW9ucyBTVEFDIG1ldGFkYXRhIG9iamVjdCBhbmQgdXNlci1kZWZpbmVkIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBJbWFnZSBkYXRhLCBvciBudWxsIGlmIHRoZSBTVEFDIG1ldGFkYXRhIG9iamVjdCBpcyBub3Qgc3VwcG9ydGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U1RBQ0ltYWdlUmVxdWVzdHMoXG4gIG9wdGlvbnM6IEdldFRpbGVEYXRhUHJvcHNcbik6IFByb21pc2U8QXNzZXRSZXF1ZXN0RGF0YVtdIHwgbnVsbD4ge1xuICBjb25zdCB7bG9hZEFzc2V0SWRzfSA9IG9wdGlvbnM7XG5cbiAgaWYgKGxvYWRBc3NldElkcy5sZW5ndGggPT09IDEpIHtcbiAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgZ2V0U2luZ2xlQXNzZXRTVEFDUmVxdWVzdChvcHRpb25zKTtcbiAgICByZXR1cm4gcmVxdWVzdCA/IFtyZXF1ZXN0XSA6IG51bGw7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgZ2V0TXVsdGlBc3NldFNUQUNSZXF1ZXN0KG9wdGlvbnMpO1xufVxuXG4vLyBUT0RPOiBpbWFnZSBsb2FkaW5nIHNob3VsZCByZWFsbHkgYmUgX2RyaXZlbiBieSB0aGUgbW9kdWxlc19cbi8vIEUuZy4gdGhlIHVzZXIgY2hvb3NlcyB3aGF0IGtpbmQgb2YgcGlwZWxpbmUgdGhleSB3YW50IG9uIHRoZSBHUFUsIHRoZW4gZnJvbSB0aG9zZSBtb2R1bGVzIHdlIGNhblxuLy8gc2VlIHdoZXRoZXIgdGhlIHVzZXIgd2FudHMgdGhlIHBhbnNoYXJwZW5lZCBiYW5kLCBjb2xvcm1hcCwgZXRjXG4vKipcbiAqIExvYWQgaW1hZ2VzIGRlZmluZWQgYnkgYSBTVEFDIG1ldGFkYXRhIG9iamVjdCBwbHVzIHVzZXItZGVmaW5lZCBwYXJhbWV0ZXJzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkU1RBQ0ltYWdlRGF0YShyZXF1ZXN0czogQXNzZXRSZXF1ZXN0RGF0YVtdKTogUHJvbWlzZTxJbWFnZURhdGE+IHtcbiAgcmV0dXJuIHJlcXVlc3RzLmxlbmd0aCA9PT0gMSA/IGxvYWRTaW5nbGVBc3NldFNUQUMocmVxdWVzdHNbMF0pIDogbG9hZE11bHRpQXNzZXRTVEFDKHJlcXVlc3RzKTtcbn1cblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIHRoYXQgZm9ybXMgYW4gYXNzZXQgcmVxdWVzdCBiYXNlZCBvbiBnaXZlbiBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXNzZXRSZXF1ZXN0KHtcbiAgdXJsLFxuICBwYXJhbXMsXG4gIG9wdGlvbnMsXG4gIHVzZU1hc2sgPSB0cnVlLFxuICByZXNwb25zZVJlcXVpcmVkQmFuZEluZGljZXNcbn06IHtcbiAgdXJsOiBzdHJpbmc7XG4gIHBhcmFtcz86IFVSTFNlYXJjaFBhcmFtcyB8IG51bGw7XG4gIG9wdGlvbnM6IFJlcXVlc3RJbml0O1xuICB1c2VNYXNrPzogYm9vbGVhbjtcbiAgcmVzcG9uc2VSZXF1aXJlZEJhbmRJbmRpY2VzPzogbnVtYmVyW10gfCBudWxsO1xufSk6IFByb21pc2U8QXNzZXRSZXF1ZXN0RGF0YT4ge1xuICBjb25zdCByZXF1ZXN0VXJsID0gdXJsO1xuICBjb25zdCByZXF1ZXN0UGFyYW1zID0gcGFyYW1zID8/IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSBvcHRpb25zO1xuXG4gIGNvbnN0IGFzc2V0VXJsID0gcmVxdWVzdFBhcmFtcyA/IGAke3JlcXVlc3RVcmx9PyR7cmVxdWVzdFBhcmFtcy50b1N0cmluZygpfWAgOiByZXF1ZXN0VXJsO1xuICByZXR1cm4ge3VybDogYXNzZXRVcmwsIG9wdGlvbnM6IHJlcXVlc3RPcHRpb25zLCB1c2VNYXNrLCByZXNwb25zZVJlcXVpcmVkQmFuZEluZGljZXN9O1xufVxuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIGZvcm1pbmcgYSByZXF1ZXN0IGZvciBhIHNpbmdsZSBhc3NldCBTVEFDIG1ldGFkYXRhIG9iamVjdC5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHksIG1heC1zdGF0ZW1lbnRzXG5hc3luYyBmdW5jdGlvbiBnZXRTaW5nbGVBc3NldFNUQUNSZXF1ZXN0KFxuICBvcHRpb25zOiBHZXRUaWxlRGF0YVByb3BzXG4pOiBQcm9taXNlPEFzc2V0UmVxdWVzdERhdGEgfCBudWxsPiB7XG4gIGNvbnN0IHtcbiAgICBzdGFjLFxuICAgIGxvYWRBc3NldElkcyxcbiAgICBsb2FkQmFuZEluZGV4ZXMsXG4gICAgc2lnbmFsLFxuICAgIHVzZVNUQUNTZWFyY2hpbmcsXG4gICAgaW5kZXg6IHt4LCB5LCB6fSxcbiAgICBzdGFjU2VhcmNoUHJvdmlkZXIsXG4gICAgc3RhcnREYXRlLFxuICAgIGVuZERhdGUsXG4gICAgX3N0YWNRdWVyeVxuICB9ID0gb3B0aW9ucztcblxuICBjb25zdCB1c2VNYXNrID0gdHJ1ZTtcblxuICAvLyBPbmx5IGEgc2luZ2xlIFVSTCBiZWNhdXNlIG9ubHkgYSBzaW5nbGUgYXNzZXRcbiAgbGV0IHVybDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGxldCB1cmxQYXJhbXM6IFVSTFNlYXJjaFBhcmFtcyB8IG51bGwgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gIGxldCByZXNwb25zZVJlcXVpcmVkQmFuZEluZGljZXM6IG51bWJlcltdIHwgbnVsbCA9IGxvYWRCYW5kSW5kZXhlcztcbiAgaWYgKHVzZVNUQUNTZWFyY2hpbmcgJiYgc3RhYy50eXBlICE9PSAnRmVhdHVyZScpIHtcbiAgICB1cmxQYXJhbXMgPSBnZXRTdGFjQXBpVXJsUGFyYW1zKHtcbiAgICAgIHN0YWMsXG4gICAgICBzdGFjU2VhcmNoUHJvdmlkZXIsXG4gICAgICBzdGFydERhdGUsXG4gICAgICBlbmREYXRlLFxuICAgICAgbWFzazogdXNlTWFzayxcbiAgICAgIGxvYWRBc3NldElkcyxcbiAgICAgIF9zdGFjUXVlcnlcbiAgICB9KTtcbiAgICB1cmwgPSBnZXRUaXRpbGVyVXJsKHtzdGFjLCB1c2VTVEFDU2VhcmNoaW5nLCB4LCB5LCB6fSk7XG4gIH0gZWxzZSBpZiAoc3RhYy50eXBlID09PSAnRmVhdHVyZScpIHtcbiAgICAvLyBzdGFjIGlzIGFuIEl0ZW1cbiAgICB1cmxQYXJhbXMgPSBnZXRTaW5nbGVDT0dVcmxQYXJhbXMoe1xuICAgICAgc3RhYyxcbiAgICAgIGxvYWRBc3NldElkOiBsb2FkQXNzZXRJZHNbMF0sXG4gICAgICBsb2FkQmFuZEluZGV4ZXMsXG4gICAgICBtYXNrOiB1c2VNYXNrXG4gICAgfSk7XG4gICAgdXJsID0gZ2V0VGl0aWxlclVybCh7c3RhYywgdXNlU1RBQ1NlYXJjaGluZywgeCwgeSwgen0pO1xuICAgIHJlc3BvbnNlUmVxdWlyZWRCYW5kSW5kaWNlcyA9IG51bGw7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoIXVybCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IGdldEFzc2V0UmVxdWVzdCh7XG4gICAgdXJsLFxuICAgIHBhcmFtczogdXJsUGFyYW1zLFxuICAgIG9wdGlvbnM6IHtzaWduYWx9LFxuICAgIHVzZU1hc2ssXG4gICAgcmVzcG9uc2VSZXF1aXJlZEJhbmRJbmRpY2VzXG4gIH0pO1xufVxuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIGZvcm1pbmcgcmVxdWVzdHMgZm9yIGEgbXVsdGkgYXNzZXQgU1RBQyBtZXRhZGF0YSBvYmplY3QuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldE11bHRpQXNzZXRTVEFDUmVxdWVzdChcbiAgb3B0aW9uczogR2V0VGlsZURhdGFQcm9wc1xuKTogUHJvbWlzZTxBc3NldFJlcXVlc3REYXRhW10gfCBudWxsPiB7XG4gIGNvbnN0IHtcbiAgICBzdGFjLFxuICAgIGxvYWRBc3NldElkcyxcbiAgICBsb2FkQmFuZEluZGV4ZXMsXG4gICAgc2lnbmFsLFxuICAgIHVzZVNUQUNTZWFyY2hpbmcsXG4gICAgc3RhY1NlYXJjaFByb3ZpZGVyLFxuICAgIHN0YXJ0RGF0ZSxcbiAgICBlbmREYXRlLFxuICAgIGluZGV4OiB7eCwgeSwgen0sXG4gICAgX3N0YWNRdWVyeVxuICB9ID0gb3B0aW9ucztcblxuICAvLyBNdWx0aXBsZSB1cmxzLCBvbmUgZm9yIGVhY2ggYXNzZXRcbiAgbGV0IHJlcXVlc3REYXRhOiB7dXJsOiBzdHJpbmc7IHBhcmFtczogVVJMU2VhcmNoUGFyYW1zIHwgbnVsbDsgb3B0aW9ucz86IFJlcXVlc3RJbml0fVtdID0gW107XG5cbiAgLy8gV2UgYXNzdW1lIHRoYXQgdGhlcmUncyBvbmx5IG9uZSB2YWxpZGl0eSBtYXNrIGZvciB0aGUgZW50aXJlIGFzc2V0LCBhbmQgdGhlcmVmb3JlIGFueSBvZiB0aGVcbiAgLy8gcmVxdWVzdHMgd291bGQgcmV0dXJuIHRoZSBzYW1lIHZhbGlkaXR5IGJpdG1hcC4gVGhlcmVmb3JlIHdlIG9ubHkgcmVxdWVzdCBhIG1hc2sgZm9yIHRoZSBmaXJzdFxuICAvLyBhc3NldFxuICBjb25zdCByZXF1ZXN0TWFzazogYm9vbGVhbltdID0gbmV3IEFycmF5KGxvYWRBc3NldElkcy5sZW5ndGgpLmZpbGwoZmFsc2UpO1xuICByZXF1ZXN0TWFza1swXSA9IHRydWU7XG5cbiAgaWYgKHVzZVNUQUNTZWFyY2hpbmcgJiYgc3RhYy50eXBlICE9PSAnRmVhdHVyZScpIHtcbiAgICByZXF1ZXN0RGF0YSA9IHppcChsb2FkQXNzZXRJZHMsIHJlcXVlc3RNYXNrKS5tYXAoKFthc3NldElkLCBtYXNrXSkgPT4ge1xuICAgICAgY29uc3QgcGFyYW1zID0gZ2V0U3RhY0FwaVVybFBhcmFtcyh7XG4gICAgICAgIHN0YWMsXG4gICAgICAgIHN0YWNTZWFyY2hQcm92aWRlcixcbiAgICAgICAgc3RhcnREYXRlLFxuICAgICAgICBlbmREYXRlLFxuICAgICAgICBtYXNrLFxuICAgICAgICBsb2FkQXNzZXRJZHM6IFthc3NldElkXSxcbiAgICAgICAgX3N0YWNRdWVyeVxuICAgICAgfSk7XG4gICAgICBjb25zdCB1cmwgPSBnZXRUaXRpbGVyVXJsKHtzdGFjLCB1c2VTVEFDU2VhcmNoaW5nLCB4LCB5LCB6fSk7XG4gICAgICByZXR1cm4ge3VybCwgcGFyYW1zfTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChzdGFjLnR5cGUgPT09ICdGZWF0dXJlJykge1xuICAgIHJlcXVlc3REYXRhID0gemlwMyhsb2FkQXNzZXRJZHMsIGxvYWRCYW5kSW5kZXhlcywgcmVxdWVzdE1hc2spLm1hcChcbiAgICAgIChbYXNzZXRJZCwgYmFuZEluZGV4LCBtYXNrXSkgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBnZXRTaW5nbGVDT0dVcmxQYXJhbXMoe1xuICAgICAgICAgIHN0YWMsXG4gICAgICAgICAgbG9hZEFzc2V0SWQ6IGFzc2V0SWQsXG4gICAgICAgICAgbG9hZEJhbmRJbmRleGVzOiBbYmFuZEluZGV4XSxcbiAgICAgICAgICBtYXNrXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB1cmwgPSBnZXRUaXRpbGVyVXJsKHtzdGFjLCB1c2VTVEFDU2VhcmNoaW5nLCB4LCB5LCB6fSk7XG4gICAgICAgIHJldHVybiB7dXJsLCBwYXJhbXN9O1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBpZiAoaXNWYWxpZFJlcXVlc3REYXRhKHJlcXVlc3REYXRhKSkge1xuICAgIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHJlcXVlc3REYXRhLm1hcChyZXF1ZXN0ID0+XG4gICAgICAgIGdldEFzc2V0UmVxdWVzdCh7Li4ucmVxdWVzdCwgb3B0aW9uczogcmVxdWVzdC5vcHRpb25zID8/IHtzaWduYWx9fSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogTG9hZCBpbWFnZSBkYXRhIHdoZW4gY29uc29saWRhdGVkIGluIGJhbmRzIHdpdGhpbiBhIHNpbmdsZSBTVEFDIEFzc2V0XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxvYWRTaW5nbGVBc3NldFNUQUMocmVxdWVzdDogQXNzZXRSZXF1ZXN0RGF0YSk6IFByb21pc2U8SW1hZ2VEYXRhPiB7XG4gIGNvbnN0IGltYWdlQmFuZHMgPSBhd2FpdCBsb2FkTnB5QXJyYXkocmVxdWVzdCwgdHJ1ZSk7XG5cbiAgaWYgKCFpbWFnZUJhbmRzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGltYWdlQmFuZHNcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgaW1hZ2VNYXNrID0gKHJlcXVlc3QudXNlTWFzayAmJiBpbWFnZUJhbmRzLnBvcCgpKSB8fCBudWxsO1xuICBsZXQgbWFwcGVkSW1hZ2VCYW5kcyA9IGltYWdlQmFuZHM7XG4gIGlmIChyZXF1ZXN0LnJlc3BvbnNlUmVxdWlyZWRCYW5kSW5kaWNlcykge1xuICAgIG1hcHBlZEltYWdlQmFuZHMgPSByZXF1ZXN0LnJlc3BvbnNlUmVxdWlyZWRCYW5kSW5kaWNlcy5tYXAoaSA9PiBpbWFnZUJhbmRzW2ldKTtcbiAgfVxuICByZXR1cm4ge2ltYWdlQmFuZHM6IG1hcHBlZEltYWdlQmFuZHMsIGltYWdlTWFza307XG59XG5cbi8qKlxuICogTG9hZCBpbWFnZSBkYXRhIHdoZW4gc3BsaXQgYW1vbmcgbXVsdGlwbGUgU1RBQyBBc3NldHNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9hZE11bHRpQXNzZXRTVEFDKHJlcXVlc3RzOiBBc3NldFJlcXVlc3REYXRhW10pOiBQcm9taXNlPEltYWdlRGF0YT4ge1xuICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwocmVxdWVzdHMubWFwKHJlcXVlc3QgPT4gbG9hZE5weUFycmF5KHJlcXVlc3QsIHRydWUpKSk7XG4gIC8vIFRoZSBmaXJzdCByZXF1ZXN0IGluY2x1ZGVzIGEgbWFza1xuICBjb25zdCBpbWFnZU1hc2sgPSByZXN1bHRzWzBdPy5wb3AoKSB8fCBudWxsO1xuICBjb25zdCBpbWFnZUJhbmRzID0gcmVzdWx0cy5mbGF0KCkuZmlsdGVyKGJhbmQgPT4gYmFuZCAhPT0gbnVsbCkgYXMgSW1hZ2VEYXRhWydpbWFnZUJhbmRzJ107XG4gIHJldHVybiB7aW1hZ2VCYW5kcywgaW1hZ2VNYXNrfTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgdHdvIGFycmF5cyBzaW11bHRhbmVvdXNseSwgc2ltaWxhciB0byBQeXRob24ncyB6aXAgYnVpbHRpblxuICovXG5mdW5jdGlvbiB6aXA8VDEsIFQyPihhOiBUMVtdLCBiOiBUMltdKTogW1QxLCBUMl1bXSB7XG4gIHJldHVybiBhLm1hcCgoaywgaSkgPT4gW2ssIGJbaV1dKTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgdGhyZWUgYXJyYXlzIHNpbXVsdGFuZW91c2x5LCBzaW1pbGFyIHRvIFB5dGhvbidzIHppcCBidWlsdGluXG4gKi9cbmZ1bmN0aW9uIHppcDM8VDEsIFQyLCBUMz4oYTogVDFbXSwgYjogVDJbXSwgYzogVDNbXSk6IFtUMSwgVDIsIFQzXVtdIHtcbiAgcmV0dXJuIGEubWFwKChrLCBpKSA9PiBbaywgYltpXSwgY1tpXV0pO1xufVxuXG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gY2hlY2sgaWYgYWxsIGFycmF5IGVsZW1lbnRzIGFyZSBzdHJpbmdzXG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRSZXF1ZXN0RGF0YShcbiAgYXJyOiB7dXJsOiB1bmtub3duOyBwYXJhbXM6IHVua25vd247IG9wdGlvbnM/OiB1bmtub3dufVtdXG4pOiBhcnIgaXMge3VybDogc3RyaW5nOyBwYXJhbXM6IFVSTFNlYXJjaFBhcmFtczsgb3B0aW9uczogdW5rbm93bn1bXSB7XG4gIHJldHVybiBhcnIuZXZlcnkoeCA9PiB0eXBlb2YgeD8udXJsID09PSAnc3RyaW5nJyAmJiB4Py5wYXJhbXMgIT09IG51bGwpO1xufVxuXG4vKipcbiAqIENyZWF0ZSBiYXNlNjQgaW1hZ2UgZGF0YSB1cmwgZm9yIGNhdGVnb3JpY2FsIGNvbG9ybWFwXG4gKiBAcGFyYW0gY2F0ZWdvcmljYWxPcHRpb25zIC0gY29sb3IgbWFwIGNvbmZpZ3VyYXRpb24gYW5kIG1pbi1tYXggdmFsdWVzIG9mIGNhdGVnb3JpY2FsIGJhbmRcbiAqIEByZXR1cm5zIGJhc2U2NCBpbWFnZSBkYXRhIHVybFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2F0ZWdvcmljYWxDb2xvcm1hcERhdGFVcmwoXG4gIGNhdGVnb3JpY2FsT3B0aW9uczogQ2F0ZWdvcmljYWxDb2xvcm1hcE9wdGlvbnNcbik6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBiaXRtYXAgPSBnZW5lcmF0ZUNhdGVnb3JpY2FsQml0bWFwQXJyYXkoY2F0ZWdvcmljYWxPcHRpb25zKTtcbiAgaWYgKCFiaXRtYXApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gZ2V0SW1hZ2VEYXRhVVJMKGJpdG1hcCwgQ0FURUdPUklDQUxfVEVYVFVSRV9XSURUSCwgMSk7XG59XG5cbi8qKlxuICogTG9hZCB0ZXJyYWluIG1lc2ggZnJvbSByYXN0ZXIgdGlsZSBzZXJ2ZXJcbiAqIEBwYXJhbSBwcm9wcyAtIHByb3BlcnRpZXMgdG8gbG9hZCB0ZXJyYWluIGRhdGFcbiAqIEByZXR1cm5zIHRlcnJhaW4gbWVzaCBkYXRhXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkVGVycmFpbihwcm9wczoge1xuICBpbmRleDoge3g6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXJ9O1xuICBzaWduYWw6IEFib3J0U2lnbmFsO1xuICByYXN0ZXJUaWxlU2VydmVyVXJsczogc3RyaW5nW107XG4gIGJvdW5kc0Zvckdlb21ldHJ5PzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG59KTogUHJvbWlzZTxUZXJyYWluRGF0YT4ge1xuICBjb25zdCB7XG4gICAgaW5kZXg6IHt4LCB5LCB6fSxcbiAgICBib3VuZHNGb3JHZW9tZXRyeSxcbiAgICBzaWduYWwsXG4gICAgcmFzdGVyVGlsZVNlcnZlclVybHNcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IG1lc2hNYXhFcnJvciA9IGdldE1lc2hNYXhFcnJvcih6LCBNRVNIX01VTFRJUExJRVIpO1xuICBjb25zdCB0ZXJyYWluVXJsID0gZ2V0VGVycmFpblVybChyYXN0ZXJUaWxlU2VydmVyVXJscywgeCwgeSwgeiwgbWVzaE1heEVycm9yKTtcbiAgY29uc3QgbG9hZGVyT3B0aW9ucyA9IGdldExvYWRlck9wdGlvbnMoKTtcblxuICByZXR1cm4gbG9hZCh0ZXJyYWluVXJsLCBRdWFudGl6ZWRNZXNoTG9hZGVyLCB7XG4gICAgZmV0Y2g6IHtzaWduYWx9LFxuICAgICdxdWFudGl6ZWQtbWVzaCc6IHtcbiAgICAgIC4uLmxvYWRlck9wdGlvbnNbJ3F1YW50aXplZC1tZXNoJ10sXG4gICAgICBib3VuZHM6IGJvdW5kc0Zvckdlb21ldHJ5LFxuICAgICAgc2tpcnRIZWlnaHQ6IG1lc2hNYXhFcnJvciAqIDJcbiAgICB9XG4gIH0pIGFzIFByb21pc2U8VGVycmFpbkRhdGE+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
|
|
@@ -2,14 +2,13 @@
|
|
|
2
2
|
import { TileLayer } from '@deck.gl/geo-layers/typed';
|
|
3
3
|
import { PMTilesTileSource } from '@loaders.gl/pmtiles';
|
|
4
4
|
import { Texture2DProps } from '@luma.gl/webgl';
|
|
5
|
-
import { Matrix4 } from 'math.gl';
|
|
6
5
|
import { DatasetType } from '@kepler.gl/constants';
|
|
7
6
|
import { LayerBaseConfig, LayerColorConfig, LayerHeightConfig, VisualChannel, VisConfigColorRange, VisConfigSelection, VisConfigBoolean, VisConfigInput, VisConfigRange, VisConfigNumber } from '@kepler.gl/types';
|
|
8
7
|
import { Datasets, KeplerTable as KeplerDataset } from '@kepler.gl/table';
|
|
9
8
|
import { GetTileDataDefaultProps, GetTileDataProps, GetTileDataOutput, DataSourceParams, KeplerRasterDataset, Tile2DHeader, PresetOption, CompleteSTACObject } from './types';
|
|
10
9
|
import { FindDefaultLayerPropsReturnValue } from '../layer-utils';
|
|
11
10
|
import { default as KeplerLayer, LayerBaseConfigPartial } from '../base-layer';
|
|
12
|
-
export declare const
|
|
11
|
+
export declare const getNumRasterTilesBeingLoaded: () => number;
|
|
13
12
|
export declare const LOAD_ELEVATION_AFTER_ZOOM = 8.9;
|
|
14
13
|
export declare type RasterTileLayerVisConfigCommonSettings = {
|
|
15
14
|
opacity: VisConfigNumber;
|
|
@@ -62,7 +61,7 @@ export default class RasterTileLayer extends KeplerLayer {
|
|
|
62
61
|
dataset?: undefined;
|
|
63
62
|
tileSource?: undefined;
|
|
64
63
|
} | {
|
|
65
|
-
dataset:
|
|
64
|
+
dataset: KeplerDataset<import("@kepler.gl/types").Field>;
|
|
66
65
|
tileSource: PMTilesTileSource | null;
|
|
67
66
|
};
|
|
68
67
|
updateLayerMeta(dataset: KeplerRasterDataset): void;
|
|
@@ -102,9 +101,4 @@ export default class RasterTileLayer extends KeplerLayer {
|
|
|
102
101
|
globalBounds: DataSourceParams['globalBounds'];
|
|
103
102
|
}, tileSource: any): Promise<any>;
|
|
104
103
|
}
|
|
105
|
-
export declare function getMercatorModelMatrix(tile: {
|
|
106
|
-
x: number;
|
|
107
|
-
y: number;
|
|
108
|
-
z: number;
|
|
109
|
-
}): Matrix4;
|
|
110
104
|
export {};
|