kepler.gl 3.1.10 → 3.2.1
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/ai-assistant/src/config/models.d.ts +8 -0
- package/dist/src/components/src/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +3 -2
- package/dist/src/localization/src/translations/en.d.ts +1 -0
- package/package.json +2 -2
- package/src/actions/package.json +8 -8
- package/src/ai-assistant/dist/components/ai-assistant-config.js +40 -24
- package/src/ai-assistant/dist/config/models.d.ts +8 -0
- package/src/ai-assistant/dist/config/models.js +16 -8
- package/src/ai-assistant/dist/localization.js +7 -7
- package/src/ai-assistant/dist/reducers/index.js +3 -2
- package/src/ai-assistant/package.json +16 -16
- package/src/ai-assistant/src/components/ai-assistant-config.tsx +39 -28
- package/src/ai-assistant/src/config/models.ts +37 -25
- package/src/ai-assistant/src/localization.ts +6 -6
- package/src/ai-assistant/src/reducers/index.ts +2 -1
- package/src/cloud-providers/package.json +2 -2
- package/src/common-utils/package.json +3 -3
- package/src/components/dist/common/color-legend.js +8 -8
- package/src/components/dist/common/data-table/index.js +13 -9
- package/src/components/dist/map/map-legend-panel.js +10 -4
- package/src/components/dist/map/map-legend.js +2 -2
- package/src/components/dist/modal-container.js +3 -3
- package/src/components/dist/modals/tilesets-modals/tileset-raster-form.js +38 -9
- package/src/components/dist/plot-container.js +4 -2
- package/src/components/dist/side-panel/interaction-panel/interaction-panel.js +2 -2
- package/src/components/dist/side-panel/layer-panel/color-breaks-panel.js +11 -2
- package/src/components/dist/side-panel/layer-panel/color-scale-selector.js +65 -12
- package/src/components/dist/side-panel/layer-panel/custom-palette.js +18 -7
- package/src/components/dist/side-panel/layer-panel/raster-tile-layer-configurator.js +3 -3
- package/src/components/dist/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +3 -2
- package/src/components/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +18 -4
- package/src/components/package.json +15 -15
- package/src/components/src/common/color-legend.tsx +15 -2
- package/src/components/src/common/data-table/index.tsx +1 -1
- package/src/components/src/map/map-legend-panel.tsx +21 -2
- package/src/components/src/map/map-legend.tsx +1 -1
- package/src/components/src/modal-container.tsx +6 -2
- package/src/components/src/modals/tilesets-modals/tileset-raster-form.tsx +60 -4
- package/src/components/src/plot-container.tsx +2 -1
- package/src/components/src/side-panel/interaction-panel/interaction-panel.tsx +1 -0
- package/src/components/src/side-panel/layer-panel/color-breaks-panel.tsx +14 -3
- package/src/components/src/side-panel/layer-panel/color-scale-selector.tsx +62 -8
- package/src/components/src/side-panel/layer-panel/custom-palette.tsx +11 -5
- package/src/components/src/side-panel/layer-panel/raster-tile-layer-configurator.tsx +2 -1
- package/src/components/src/side-panel/layer-panel/vector-tile-layer-configurator.tsx +19 -2
- package/src/constants/dist/default-settings.js +2 -2
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/56/48/71c2c5381c01c063c164e15fa04b4b1f3faae02e6727f2f2daf483e15205feca68334bad721af0c6f31abb20b56d60504623838127764aab6883912e7f71 +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/b3/bd/e4f91c7af9e320b979e29ad3b9e3a4dfcd61e4a09d6e4579104c40dcace7651b443fdd6d7ff5d947ed6c9df2c0bbbcc76a2ea86d6398e4945257eeb80dd5 +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/b4/c5/a43653dff3b380f7b0793080a57c980a9a136764933e79454de0fe43a5ca +2 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/bf/88/ea60c7619185516464a4ae21f51394966047bfdf190a5463de651c61931c +2 -0
- package/src/constants/package.json +2 -2
- package/src/constants/umd/keplergl.min.js +1 -1
- package/src/deckgl-arrow-layers/package.json +2 -2
- package/src/deckgl-layers/package.json +4 -4
- package/src/duckdb/dist/table/duckdb-table-utils.js +3 -2
- package/src/duckdb/package.json +6 -6
- package/src/duckdb/src/table/duckdb-table-utils.ts +5 -1
- package/src/effects/package.json +5 -5
- package/src/layers/dist/icon-layer/icon-layer.js +12 -2
- package/src/layers/dist/raster-tile/gpu-utils.d.ts +11 -10
- package/src/layers/dist/raster-tile/gpu-utils.js +7 -6
- package/src/layers/dist/raster-tile/image.d.ts +4 -0
- package/src/layers/dist/raster-tile/image.js +30 -16
- package/src/layers/dist/raster-tile/raster-tile-layer.d.ts +4 -0
- package/src/layers/dist/raster-tile/raster-tile-layer.js +18 -6
- package/src/layers/dist/raster-tile/request-throttle.d.ts +1 -1
- package/src/layers/dist/raster-tile/request-throttle.js +17 -16
- package/src/layers/dist/raster-tile/types.d.ts +16 -0
- package/src/layers/dist/raster-tile/types.js +1 -1
- package/src/layers/dist/raster-tile/url.d.ts +1 -1
- package/src/layers/dist/raster-tile/url.js +5 -4
- package/src/layers/dist/vector-tile/common-tile/tile-dataset.d.ts +4 -0
- package/src/layers/dist/vector-tile/common-tile/tile-dataset.js +10 -1
- package/src/layers/dist/vector-tile/vector-tile-layer.d.ts +11 -0
- package/src/layers/dist/vector-tile/vector-tile-layer.js +113 -7
- package/src/layers/package.json +9 -9
- package/src/layers/src/icon-layer/icon-layer.ts +49 -38
- package/src/layers/src/raster-tile/gpu-utils.ts +96 -78
- package/src/layers/src/raster-tile/image.ts +35 -9
- package/src/layers/src/raster-tile/raster-tile-layer.ts +23 -5
- package/src/layers/src/raster-tile/request-throttle.ts +10 -5
- package/src/layers/src/raster-tile/types.ts +19 -1
- package/src/layers/src/raster-tile/url.ts +10 -3
- package/src/layers/src/vector-tile/common-tile/tile-dataset.ts +7 -0
- package/src/layers/src/vector-tile/vector-tile-layer.ts +110 -6
- package/src/localization/dist/translations/en.d.ts +1 -0
- package/src/localization/dist/translations/en.js +2 -1
- package/src/localization/package.json +1 -1
- package/src/localization/src/translations/en.ts +1 -0
- package/src/processors/dist/data-processor.js +15 -5
- package/src/processors/package.json +7 -7
- package/src/processors/src/data-processor.ts +19 -4
- package/src/reducers/package.json +16 -16
- package/src/schemas/package.json +7 -7
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/21/4a/50f77069dbf70c6792dd82d4e149375a888e25ddddd3209e2db013be62091f79082291fa06eb518cccb111b09a778e2946c1fb7a27bb6e32f72da0ccf250 +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/52/82/28cacf6fd462b779c22675964b655bf3a9f3ce9ec3c9b141a401a5bf90cb7d904ac65ab8e484570130b12771af0a0d5bab20e6976cfa773666763e046a6a +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/56/db/b5a812c56b0d1dcdcd33da37e464062a19c8752cb2296603dc72d2c54d31 +2 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/c5/b6/9c4bdb089acc30ac8a16a6b9b93898757537f7017b2f725ddb832b4614d6 +2 -0
- package/src/styles/package.json +2 -2
- package/src/styles/umd/keplergl.min.js +1 -1
- package/src/table/dist/tileset/vector-tile-utils.js +9 -5
- package/src/table/package.json +5 -5
- package/src/table/src/tileset/vector-tile-utils.ts +9 -6
- package/src/tasks/package.json +2 -2
- package/src/types/package.json +1 -1
- package/src/utils/dist/application-config.js +5 -5
- package/src/utils/package.json +4 -4
- package/src/utils/src/application-config.ts +4 -6
- package/umd/keplergl.min.js +1385 -1332
|
@@ -466,11 +466,15 @@ function getFilterProps(fieldType, attribute) {
|
|
|
466
466
|
}
|
|
467
467
|
case _constants.ALL_FIELD_TYPES["boolean"]:
|
|
468
468
|
{
|
|
469
|
+
// Represent boolean as numeric range [0,1] to enable GPU filtering for vector tiles
|
|
470
|
+
var _domain = [0, 1];
|
|
469
471
|
var _filterProps = {
|
|
470
|
-
domain:
|
|
471
|
-
value:
|
|
472
|
-
type: _constants.FILTER_TYPES.
|
|
473
|
-
|
|
472
|
+
domain: _domain,
|
|
473
|
+
value: _domain,
|
|
474
|
+
type: _constants.FILTER_TYPES.range,
|
|
475
|
+
typeOptions: [_constants.FILTER_TYPES.range],
|
|
476
|
+
gpu: true,
|
|
477
|
+
step: 1
|
|
474
478
|
};
|
|
475
479
|
return _filterProps;
|
|
476
480
|
}
|
|
@@ -721,4 +725,4 @@ function lonLatToTileIndex(lon, lat, zoom) {
|
|
|
721
725
|
z: zoom
|
|
722
726
|
};
|
|
723
727
|
}
|
|
724
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZUFuYWx5emVyIiwicmVxdWlyZSIsIl9kM0FycmF5IiwiX2NvbnNvbGUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3VuaXEiLCJfbXZ0IiwiX3BtdGlsZXMiLCJfY29tbW9uVXRpbHMiLCJfY29uc3RhbnRzIiwiX3V0aWxzIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJyIiwiZSIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJvd25LZXlzIiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiaXNUaWxlRGF0YXNldCIsImRhdGFzZXQiLCJCb29sZWFuIiwidHlwZSIsIkRhdGFzZXRUeXBlIiwiVkVDVE9SX1RJTEUiLCJpc0xhdCIsIm51bSIsIk51bWJlciIsImlzRmluaXRlIiwiaXNMbmciLCJpc1pvb20iLCJmcm9tQXJyYXlPclN0cmluZyIsImRhdGEiLCJzcGxpdCIsIm1hcCIsInBhcnNlRmxvYXQiLCJwYXJzZUNlbnRlciIsImNlbnRlciIsInJlc3VsdCIsInBhcnNlQm91bmRzIiwiYm91bmRzIiwiZXZlcnkiLCJYX1BBVFQiLCJZX1BBVFQiLCJaX1BBVFQiLCJpc0Z1bGx5UXVhbGlmaWVkVGlsZVVybCIsInRpbGVVcmwiLCJnZXRUaWxlVXJsIiwidmFsaWRhdGVVcmwiLCJ1bmRlZmluZWQiLCJ1cmlQYXJ0cyIsInBhcnNlVXJpIiwicHJvdG9jb2wiLCJob3N0IiwiY29uY2F0IiwicmVwbGFjZSIsIlRJTEVTRVRfRlVOQ1RJT05TIiwiZ2V0TWV0YVVybCIsImdldE1ldGFVcmxNYXBib3giLCJwYXJzZU1ldGFkYXRhIiwicGFyc2VNZXRhZGF0YVRpbGVKU09OIiwiZ2V0TWV0YVVybFRpcHBlY2Fub2UiLCJnZXRUaWxlc2V0RnVuY3Rpb25zIiwiVVJMIiwiaG9zdG5hbWUiLCJlcnJvciIsInBhcnNlVmVjdG9yTWV0YWRhdGEiLCJtZXRhZGF0YSIsIm9wdGlvbiIsIl9yZWYiLCJfcmVmJHRpbGVVcmwiLCJNQVBCT1hfVVJMX1BBVFQiLCJfcGFyc2VkJGZpZWxkcyIsInBhcnNlZCIsInBhcnNlTWV0YWRhdGFUaXBwZWNhbm9lRnJvbURhdGFTb3VyY2UiLCJtaW1lVHlwZSIsInRpbGVNSU1FVHlwZSIsInBtdGlsZXNUeXBlIiwiUE1UaWxlc1R5cGUiLCJNVlQiLCJSQVNURVIiLCJmaWVsZHMiLCJ1cmwiLCJiYXNlVXJsIiwiX3BtVGlsZU1ldGFkYXRhJHRpbGVqIiwiX3BtVGlsZU1ldGFkYXRhJHRpbGVqMiIsIl90eXBlb2YyIiwiYXR0cmlidXRpb25zIiwibWV0YUpzb24iLCJtYXhab29tIiwibWluWm9vbSIsIm12dE1ldGFkYXRhIiwicG1UaWxlTWV0YWRhdGEiLCJKU09OIiwicGFyc2UiLCJlcnIiLCJib3VuZGluZ0JveCIsImZsYXQiLCJjZW50ZXJab29tIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsInNhZmVQYXJzZUZsb2F0IiwiZGVzY3JpcHRpb24iLCJ0aWxlanNvbiIsImxheWVycyIsIl9wbVRpbGVNZXRhZGF0YSR0aWxlajMiLCJwbVRpbGVzTGF5ZXJUb1RpcHBlY2Fub2VMYXllciIsImNvbGxlY3RBdHRyaWJ1dGVzIiwiaHRtbEF0dHJpYnV0aW9uIiwicGFyc2VNZXRhSnNvbiIsImlucHV0IiwiaXNOYU4iLCJ0aWxlc3RhdHMiLCJnZXRUaW1lQW5pbWF0aW9uRG9tYWluIiwibWFwcGVkVmFsdWUiLCJ0aW1lU3RlcHMiLCJ1bmlxIiwic29ydCIsImFzY2VuZGluZyIsIm5vdE51bGxPclVuZGVmaW5lZCIsImRvbWFpbiIsImR1cmF0aW9uIiwiY2xhbXBlZCIsImNsYW1wIiwicG1UaWxlVHlwZVRvQXR0ck1hcCIsImZsb2F0MzIiLCJzdHJpbmciLCJ1dGY4Iiwib3V0TGF5ZXJzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJsYXllciIsIl9yZWYyIiwiX3JlZjIkZmllbGRzIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIl9wbUZpZWxkJHZhbHVlcyIsInBtRmllbGQiLCJhdHRyaWJ1dGUiLCJjb3VudCIsInVuaXF1ZVZhbHVlQ291bnQiLCJ2YWx1ZXMiLCJtaW4iLCJtYXgiLCJhdHRyaWJ1dGVzIiwiaW5kZXhlZEF0dHJpYnV0ZXMiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwiX3JlZjMiLCJfcmVmMyRhdHRyaWJ1dGVzIiwiX2l0ZXJhdG9yNSIsIl9zdGVwNSIsImF0dHIiLCJmbmFtZSIsImF0dHJpYnV0ZVRvRmllbGQiLCJtZXJnZUF0dHJpYnV0ZURvbWFpbiIsIl9pIiwiX09iamVjdCRlbnRyaWVzIiwiZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsIl9zbGljZWRUb0FycmF5MiIsImF0dHJzIiwiX3BhcnNlSW5kZXhlZEZpZWxkIiwicGFyc2VJbmRleGVkRmllbGQiLCJpbmRleGVkRmllbGQiLCJ1bmlkZW50aWZpZWQiLCJfaXRlcmF0b3I0IiwiX3N0ZXA0IiwidW5pZGVudGlmaWVkQXR0ciIsImdldEluZGV4S2V5RnJvbUZpZWxkTmFtZSIsImZpZWxkIiwiX2l0ZXJhdG9yNiIsIl9zdGVwNiIsImZpZWxkTmFtZSIsImluZGV4S2V5IiwiYW5hbHl6ZWRUeXBlIiwiY29udGFpblZhbGlkVGltZSIsImlkIiwiaW5kZXhCeSIsImZvcm1hdCIsImFuYWx5emVyVHlwZVRvRmllbGRUeXBlIiwiZmllbGRUcyIsImVwb2NoIiwidGltZVRvVW5peE1pbGxpIiwiQUxMX0ZJRUxEX1RZUEVTIiwidGltZXN0YW1wIiwidGltZURvbWFpbiIsImNvbXBhcmUiLCJudW0xIiwibnVtMiIsIm9wZXJhdG9yIiwiTWF0aCIsIk5hTiIsImdldEZpbHRlclByb3BzIiwiZmllbGRUeXBlIiwicmVhbCIsImludGVnZXIiLCJfZ2V0QXR0cmlidXRlRG9tYWluIiwiZ2V0QXR0cmlidXRlRG9tYWluIiwiX2dldEF0dHJpYnV0ZURvbWFpbjIiLCJkaWZmIiwic3RlcCIsImdldE51bWVyaWNTdGVwU2l6ZSIsImZvcm1hdE51bWJlckJ5U3RlcCIsImZpbHRlclByb3BzIiwiRklMVEVSX1RZUEVTIiwicmFuZ2UiLCJ0eXBlT3B0aW9ucyIsImdwdSIsInNlbGVjdCIsIm11bHRpU2VsZWN0IiwiZmllbGRUeXBlcyIsImF0dHJpYnV0ZVR5cGVUb0ZpZWxkVHlwZSIsIl9maWVsZCRtZXRhZGF0YSIsIl9maWVsZCRmaWx0ZXJQcm9wcyIsImF0dHJUeXBlTWFwIiwibnVtYmVyIiwiYW5hbHl6ZXJUeXBlIiwiREFUQV9UWVBFUyIsIkZMT0FUIiwibnVtZXJpYyIsIlNUUklORyIsInZhY2hhciIsIklOVCIsImludDQiLCJCT09MRUFOIiwiYm9vbCIsImFUeXBlIiwidG9Mb3dlckNhc2UiLCJDb25zb2xlIiwid2FybiIsIm1hdGNoRGF0YXNldFR5cGUiLCJjb25maWciLCJkYXRhSWQiLCJzdXBwb3J0ZWREYXRhc2V0VHlwZXMiLCJpbmNsdWRlcyIsImdldEZpZWxkc0Zyb21UaWxlIiwiZXhwb3J0cyIsIl9yZWY1IiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJfcmVmNCIsInJlbW90ZVRpbGVGb3JtYXQiLCJ0aWxlc2V0VXJsIiwibWV0YWRhdGFVcmwiLCJfbWV0YWRhdGEkZmllbGRzIiwiX21ldGFkYXRhJGJvdW5kcyIsImxvbiIsImxhdCIsInRpbGVJbmRpY2VzIiwidGlsZVNvdXJjZSIsInRpbGUiLCJ1cGRhdGVkRmllbGRzIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibG9uTGF0VG9UaWxlSW5kZXgiLCJSZW1vdGVUaWxlRm9ybWF0IiwiTVZUU291cmNlIiwiY3JlYXRlRGF0YVNvdXJjZSIsImRlY29kZVVSSUNvbXBvbmVudCIsIm12dCIsIlBNVGlsZXNTb3VyY2UiLCJnZXRUaWxlRGF0YSIsImluZGV4Iiwic2VudCIsInRpbGVUb0ZpZWxkcyIsInQwIiwic3RvcCIsIl94IiwiX3RpbGUkZmVhdHVyZXMiLCJmZWF0dXJlcyIsImhlYWRlciIsInByb3BlcnRpZXMiLCJvdXRwdXQiLCJvYmoiLCJjb2x1bW5OYW1lIiwiZ2V0RmllbGRzRnJvbURhdGEiLCJmb3JjZVN0cmluZyIsIkFOQUxZWkVSX0RBVEFfVFlQRVMiLCJ6b29tIiwiRXJyb3IiLCJzY2FsZSIsIngiLCJmbG9vciIsImxhdFJhZCIsIlBJIiwieSIsImxvZyIsInRhbiIsImNvcyIsInoiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGlsZXNldC92ZWN0b3ItdGlsZS11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0RBVEFfVFlQRVMgYXMgQU5BTFlaRVJfREFUQV9UWVBFU30gZnJvbSAndHlwZS1hbmFseXplcic7XG5pbXBvcnQge2FzY2VuZGluZ30gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IENvbnNvbGUgZnJvbSAnZ2xvYmFsL2NvbnNvbGUnO1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoL3VuaXEnO1xuaW1wb3J0IHtEQVRBX1RZUEVTfSBmcm9tICd0eXBlLWFuYWx5emVyJztcblxuaW1wb3J0IHtNVlRTb3VyY2UsIFRpbGVKU09OfSBmcm9tICdAbG9hZGVycy5nbC9tdnQnO1xuaW1wb3J0IHtQTVRpbGVzU291cmNlLCBQTVRpbGVzTWV0YWRhdGF9IGZyb20gJ0Bsb2FkZXJzLmdsL3BtdGlsZXMnO1xuXG5pbXBvcnQge1xuICBhbmFseXplclR5cGVUb0ZpZWxkVHlwZSxcbiAgY29udGFpblZhbGlkVGltZSxcbiAgbm90TnVsbG9yVW5kZWZpbmVkIGFzIG5vdE51bGxPclVuZGVmaW5lZCxcbiAgcGFyc2VVcmksXG4gIGdldEZpZWxkc0Zyb21EYXRhXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7XG4gIERhdGFzZXRUeXBlLFxuICBBTExfRklFTERfVFlQRVMsXG4gIEZJTFRFUl9UWVBFUyxcbiAgUE1UaWxlc1R5cGUsXG4gIFJlbW90ZVRpbGVGb3JtYXRcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5pbXBvcnQge0ZlYXR1cmUsIEZpZWxkIGFzIEtlcGxlckZpZWxkLCBLZXBsZXJMYXllcn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge2NsYW1wLCBmb3JtYXROdW1iZXJCeVN0ZXAsIGdldE51bWVyaWNTdGVwU2l6ZSwgdGltZVRvVW5peE1pbGxpfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuaW1wb3J0IHtcbiAgRmlsdGVyUHJvcHMsXG4gIE51bWVyaWNGaWVsZEZpbHRlclByb3BzLFxuICBCb29sZWFuRmllbGRGaWx0ZXJQcm9wcyxcbiAgU3RyaW5nRmllbGRGaWx0ZXJQcm9wcyxcbiAgZGVmYXVsdCBhcyBLZXBsZXJEYXRhc2V0XG59IGZyb20gJy4uL2tlcGxlci10YWJsZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RpbGVEYXRhc2V0KGRhdGFzZXQ6IEtlcGxlckRhdGFzZXQgfCB7dHlwZTogc3RyaW5nfSk6IGJvb2xlYW4ge1xuICByZXR1cm4gQm9vbGVhbihkYXRhc2V0Py50eXBlID09PSBEYXRhc2V0VHlwZS5WRUNUT1JfVElMRSk7XG59XG5cbnR5cGUgVmVjdG9yVGlsZUZpZWxkID0ge1xuICBhbmFseXplclR5cGU6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuICBmb3JtYXQ6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBmaWx0ZXJQcm9wcz86IEZpbHRlclByb3BzO1xufTtcblxuZXhwb3J0IHR5cGUgVmVjdG9yVGlsZU1ldGFkYXRhID0ge1xuICBhdHRyaWJ1dGlvbnM/OiB1bmtub3duW107XG4gIG1ldGFKc29uOiBhbnkgfCBudWxsO1xuICBib3VuZHM6IG51bWJlcltdIHwgbnVsbDtcbiAgY2VudGVyOiBudW1iZXJbXSB8IG51bGw7XG4gIG1heFpvb206IG51bWJlciB8IG51bGw7XG4gIG1pblpvb206IG51bWJlciB8IG51bGw7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBmaWVsZHM6IFZlY3RvclRpbGVGaWVsZFtdO1xuXG4gIC8vIGlmIHRoZSB0aWxlc2V0IGlzIG9mIHBtdGlsZXMgZm9ybWF0IHRoZW4gaW5jbHVkZSBpbmZvIGFib3V0IHR5cGUgb2YgcG10aWxlc1xuICBwbXRpbGVzVHlwZT86IFBNVGlsZXNUeXBlO1xufTtcblxudHlwZSBUaWxlc2V0TWV0YWRhdGEgPSBWZWN0b3JUaWxlTWV0YWRhdGE7XG5cbmV4cG9ydCB0eXBlIFRpcHBlY2Fub2VMYXllckF0dHJpYnV0ZSA9IHtcbiAgYXR0cmlidXRlPzogc3RyaW5nO1xuICB0eXBlPzogc3RyaW5nO1xuICBtaW4/OiBudW1iZXI7XG4gIG1heD86IG51bWJlcjtcbiAgdmFsdWVzOiBzdHJpbmdbXSB8IG51bWJlcltdO1xufTtcblxudHlwZSBUaXBwZWNhbm9lTGF5ZXIgPSB7XG4gIGF0dHJpYnV0ZXM/OiBUaXBwZWNhbm9lTGF5ZXJBdHRyaWJ1dGVbXTtcbn07XG50eXBlIFRpbGVzZXRGdW5jdGlvbiA9IHtcbiAgZ2V0TWV0YVVybDogKHM6IHN0cmluZykgPT4gc3RyaW5nIHwgbnVsbDtcbiAgcGFyc2VNZXRhZGF0YTogKGQ6IGFueSwgb3B0aW9ucz86IGFueSkgPT4gVGlsZXNldE1ldGFkYXRhIHwgbnVsbDtcbn07XG4vLyBodHRwczovL2dpdGh1Yi5jb20vbWFwYm94L3RpbGVqc29uLXNwZWMvdHJlZS9tYXN0ZXIvMi4yLjBcbmZ1bmN0aW9uIGlzTGF0KG51bTogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBOdW1iZXIuaXNGaW5pdGUobnVtKSAmJiBudW0gPD0gOTAgJiYgbnVtID49IC05MDtcbn1cbmZ1bmN0aW9uIGlzTG5nKG51bTogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBOdW1iZXIuaXNGaW5pdGUobnVtKSAmJiBudW0gPD0gMTgwICYmIG51bSA+PSAtMTgwO1xufVxuZnVuY3Rpb24gaXNab29tKG51bTogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBOdW1iZXIuaXNGaW5pdGUobnVtKSAmJiBudW0gPj0gMCAmJiBudW0gPD0gMjI7XG59XG5mdW5jdGlvbiBmcm9tQXJyYXlPclN0cmluZyhkYXRhOiBzdHJpbmcgfCBudW1iZXJbXSk6IG51bWJlcltdIHwgbnVsbCB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZGF0YS5zcGxpdCgnLCcpLm1hcChwYXJzZUZsb2F0KTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQ2VudGVyKGNlbnRlcjogc3RyaW5nIHwgbnVtYmVyW10pOiBudW1iZXJbXSB8IG51bGwge1xuICAvLyBzdXBwb3J0ZWQgZm9ybWF0c1xuICAvLyBzdHJpbmc6IFwiLTk2LjY1NzcxNSw0MC4xMjYxMjcsLTkwLjE0MDA2MSw0My41MTY2ODlcIixcbiAgLy8gYXJyYXk6IFstOTEuNTA1MTI3LDQxLjYxNTQ0MiwxNF1cbiAgY29uc3QgcmVzdWx0ID0gZnJvbUFycmF5T3JTdHJpbmcoY2VudGVyKTtcbiAgaWYgKFxuICAgIEFycmF5LmlzQXJyYXkocmVzdWx0KSAmJlxuICAgIHJlc3VsdC5sZW5ndGggPT09IDMgJiZcbiAgICBpc0xuZyhyZXN1bHRbMF0pICYmXG4gICAgaXNMYXQocmVzdWx0WzFdKSAmJlxuICAgIGlzWm9vbShyZXN1bHRbMl0pXG4gICkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogYm91bmRzIHNob3VsZCBiZSBbbWluTG5nLCBtaW5MYXQsIG1heExuZywgbWF4TGF0XVxuICogQHBhcmFtIHsqfSBib3VuZHNcbiAqL1xuZnVuY3Rpb24gcGFyc2VCb3VuZHMoYm91bmRzOiBzdHJpbmcgfCBudW1iZXJbXSk6IG51bWJlcltdIHwgbnVsbCB7XG4gIC8vIHN1cHBvcnRlZCBmb3JtYXRzXG4gIC8vIHN0cmluZzogXCItOTYuNjU3NzE1LDQwLjEyNjEyNywtOTAuMTQwMDYxLDQzLjUxNjY4OVwiLFxuICAvLyBhcnJheTogWyAtMTgwLCAtODUuMDUxMTI4Nzc5ODA2NTksIDE4MCwgODUuMDUxMTI4Nzc5ODA2NiBdXG4gIGNvbnN0IHJlc3VsdCA9IGZyb21BcnJheU9yU3RyaW5nKGJvdW5kcyk7XG4gIC8vIHZhbGlkYXRlIGJvdW5kc1xuICBpZiAoXG4gICAgQXJyYXkuaXNBcnJheShyZXN1bHQpICYmXG4gICAgcmVzdWx0Lmxlbmd0aCA9PT0gNCAmJlxuICAgIFtyZXN1bHRbMF0sIHJlc3VsdFsyXV0uZXZlcnkoaXNMbmcpICYmXG4gICAgW3Jlc3VsdFsxXSwgcmVzdWx0WzNdXS5ldmVyeShpc0xhdClcbiAgKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuY29uc3QgWF9QQVRUID0gL1xce3hcXH0vO1xuY29uc3QgWV9QQVRUID0gL1xce3lcXH0vO1xuY29uc3QgWl9QQVRUID0gL1xce3pcXH0vO1xuXG5mdW5jdGlvbiBpc0Z1bGx5UXVhbGlmaWVkVGlsZVVybCh0aWxlVXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIFhfUEFUVC50ZXN0KHRpbGVVcmwpICYmIFlfUEFUVC50ZXN0KHRpbGVVcmwpICYmIFpfUEFUVC50ZXN0KHRpbGVVcmwpO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSB0aWxlIFVSTFxuICogQHBhcmFtICB7c3RyaW5nfSB0aWxlVXJsIEluaXRpYWwgdGlsZSBVUkwsIHdoaWNoIG1heSBiZSBlaXRoZXIgdGhlIHJvb3QgVVJMIGZvciB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlc2V0IG9yIGEgZnVsbHkgcXVhbGlmaWVkIHRlbXBsYXRlXG4gKiBAcGFyYW0gIHtmdW5jdGlvbn0gdmFsaWRhdGVVcmwgZnVuY3Rpb24gdG8gdmFsaWRhdGUgdGlsZSBVUkxcbiAqIEByZXR1cm4ge3N0cmluZ3xudWxsfSAgICBGdWxseSBxdWFsaWZpZWQgdGlsZSBVUkwgdGVtcGxhdGUsIG9yIG51bGwgaWYgaW5wdXQgZG9lcyBub3RcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlYXIgdG8gYmUgYSB2YWxpZCBVUkxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRpbGVVcmwoXG4gIHRpbGVVcmw6IHN0cmluZyxcbiAgdmFsaWRhdGVVcmw6IChzOiBzdHJpbmcpID0+IGJvb2xlYW4gPSBpc0Z1bGx5UXVhbGlmaWVkVGlsZVVybFxuKTogc3RyaW5nIHwgbnVsbCB7XG4gIC8vIENoZWNrIGZvciBhIHZhbGlkIFVSTC4gSWRlYWxseSB3ZSdkIGhhdmUgYSBzaW1wbGUgbWV0aG9kIGhlcmUuXG4gIGNvbnN0IHVyaVBhcnRzID0gcGFyc2VVcmkodGlsZVVybCk7XG4gIGlmICghdXJpUGFydHMucHJvdG9jb2wgfHwgIXVyaVBhcnRzLmhvc3QpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAodmFsaWRhdGVVcmwodGlsZVVybCkpIHtcbiAgICByZXR1cm4gdGlsZVVybDtcbiAgfVxuICByZXR1cm4gYCR7dGlsZVVybC5yZXBsYWNlKC9cXC8kLywgJycpfS97en0ve3h9L3t5fS5wYmZgO1xufVxuXG4vKipcbiAqIE1hcCBvZiB1dGlsIGZ1bmN0aW9ucyBmb3IgZGlmZmVyZW50IHRpbGVzZXQgdHlwZXMsIGtleWVkIGJ5IGhvc3RcbiAqL1xuY29uc3QgVElMRVNFVF9GVU5DVElPTlM6IHtba2V5OiBzdHJpbmddOiBUaWxlc2V0RnVuY3Rpb259ID0ge1xuICAnYXBpLm1hcGJveC5jb20nOiB7XG4gICAgZ2V0TWV0YVVybDogZ2V0TWV0YVVybE1hcGJveCxcbiAgICBwYXJzZU1ldGFkYXRhOiBwYXJzZU1ldGFkYXRhVGlsZUpTT05cbiAgfSxcbiAgZGVmYXVsdDoge1xuICAgIGdldE1ldGFVcmw6IGdldE1ldGFVcmxUaXBwZWNhbm9lLFxuICAgIHBhcnNlTWV0YWRhdGE6IHBhcnNlTWV0YWRhdGFUaWxlSlNPTlxuICB9XG59O1xuXG5mdW5jdGlvbiBnZXRUaWxlc2V0RnVuY3Rpb25zKHRpbGVVcmw6IHN0cmluZyB8IG51bGwpOiBUaWxlc2V0RnVuY3Rpb24ge1xuICBsZXQgaG9zdCA9ICcnO1xuICB0cnkge1xuICAgIGhvc3QgPSBuZXcgVVJMKHRpbGVVcmwgfHwgJycpLmhvc3RuYW1lO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIGRvIG5vdGhpbmdcbiAgfVxuXG4gIHJldHVybiBUSUxFU0VUX0ZVTkNUSU9OU1tob3N0XSB8fCBUSUxFU0VUX0ZVTkNUSU9OUy5kZWZhdWx0O1xufVxuXG4vKipcbiAqIEdldCB0aGUgbWV0YWRhdGEgVVJMIGZvciBhIGdpdmVuIHRpbGVzZXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1ldGFVcmwodGlsZVVybDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gIHJldHVybiBnZXRUaWxlc2V0RnVuY3Rpb25zKHRpbGVVcmwpLmdldE1ldGFVcmwodGlsZVVybCk7XG59XG50eXBlIFBhcnNlTWV0YWRhdGFPcHRpb24gPSB7XG4gIHRpbGVVcmw/OiBzdHJpbmcgfCBudWxsO1xufTtcbi8qKlxuICogUGFyc2UgdGhlIG1ldGFkYXRhIGZvciBhIGdpdmVuIHRpbGVzZXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVmVjdG9yTWV0YWRhdGEoXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzXG4gIG1ldGFkYXRhOiBQTVRpbGVzTWV0YWRhdGEgfCBUaWxlSlNPTixcbiAgb3B0aW9uPzogUGFyc2VNZXRhZGF0YU9wdGlvblxuKTogVGlsZXNldE1ldGFkYXRhIHwgbnVsbCB7XG4gIGNvbnN0IHt0aWxlVXJsID0gJyd9ID0gb3B0aW9uIHx8IHt9O1xuICByZXR1cm4gZ2V0VGlsZXNldEZ1bmN0aW9ucyh0aWxlVXJsKS5wYXJzZU1ldGFkYXRhKG1ldGFkYXRhKTtcbn1cblxuY29uc3QgTUFQQk9YX1VSTF9QQVRUID0gL1xcL1xce3pcXH1cXC9cXHt4XFx9XFwvXFx7eVxcfVxcLm12dC87XG5cbmZ1bmN0aW9uIGdldE1ldGFVcmxNYXBib3godGlsZVVybCA9ICcnKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRpbGVVcmwucmVwbGFjZShNQVBCT1hfVVJMX1BBVFQsICcuanNvbicpO1xufVxuXG5mdW5jdGlvbiBwYXJzZU1ldGFkYXRhVGlsZUpTT04obWV0YWRhdGE6IFBNVGlsZXNNZXRhZGF0YSB8IFRpbGVKU09OKTogVGlsZXNldE1ldGFkYXRhIHwgbnVsbCB7XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlTWV0YWRhdGFUaXBwZWNhbm9lRnJvbURhdGFTb3VyY2UobWV0YWRhdGEpO1xuICBpZiAoIXBhcnNlZCkgcmV0dXJuIG51bGw7XG5cbiAgLy8gUE1UaWxlcyBjYW4gcG90ZW50aWFsbHkgYmUgaW4gUmFzdGVyVGlsZSBmb3JtYXRcbiAgY29uc3QgbWltZVR5cGUgPSAobWV0YWRhdGEgYXMgUE1UaWxlc01ldGFkYXRhKS50aWxlTUlNRVR5cGU7XG4gIGlmIChtaW1lVHlwZSkge1xuICAgIHBhcnNlZC5wbXRpbGVzVHlwZSA9XG4gICAgICBtaW1lVHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3ZuZC5tYXBib3gtdmVjdG9yLXRpbGUnID8gUE1UaWxlc1R5cGUuTVZUIDogUE1UaWxlc1R5cGUuUkFTVEVSO1xuICB9XG5cbiAgLy8gRmllbGRzIGFscmVhZHkgcGFyc2VkIGZyb20gYGpzb25gIHByb3BlcnR5XG4gIGlmIChwYXJzZWQuZmllbGRzPy5sZW5ndGgpIHtcbiAgICByZXR1cm4gcGFyc2VkO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn1cblxuZnVuY3Rpb24gZ2V0TWV0YVVybFRpcHBlY2Fub2UodGlsZVVybCkge1xuICBjb25zdCB1cmwgPSBnZXRUaWxlVXJsKHRpbGVVcmwpO1xuICBpZiAoIXVybCkgcmV0dXJuIG51bGw7XG4gIC8vIGFzc3VtZXMgdGhlIHN0cnVjdHVyZSA8dXJsX2Jhc2U+L3t6fS4uLlxuICBjb25zdCBiYXNlVXJsID0gdXJsLnNwbGl0KFpfUEFUVClbMF0ucmVwbGFjZSgvXFwvJC8sICcnKTtcbiAgcmV0dXJuIGAke2Jhc2VVcmx9L21ldGFkYXRhLmpzb25gO1xufVxuXG4vKipcbiAqIFNwZWNpYWwgcGFyc2luZyBmb3IgbWV0YWRhdGEgcmV0dXJuZWQgYnkgTVZUU291cmNlIGFuZCBQTVRpbGVzU291cmNlLlxuICogQHBhcmFtIG1ldGFkYXRhIFRpbGVzZXQgbWV0YWRhdGEgcGFyc2VkIGJ5IGEgRGF0YVNvdWNlXG4gKiBAcmV0dXJucyBNZXRhZGF0YSBpbiBLZXBsZXItZnJpZW5kbHkgZm9ybWF0LlxuICovXG5mdW5jdGlvbiBwYXJzZU1ldGFkYXRhVGlwcGVjYW5vZUZyb21EYXRhU291cmNlKFxuICBtZXRhZGF0YTogUE1UaWxlc01ldGFkYXRhIHwgVGlsZUpTT04gfCBudWxsXG4pOiBUaWxlc2V0TWV0YWRhdGEgfCBudWxsIHtcbiAgaWYgKCFtZXRhZGF0YSB8fCB0eXBlb2YgbWV0YWRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBsZXQgcmVzdWx0OiBUaWxlc2V0TWV0YWRhdGEgPSB7XG4gICAgYXR0cmlidXRpb25zOiBbXSxcbiAgICBtZXRhSnNvbjogbnVsbCxcbiAgICBib3VuZHM6IG51bGwsXG4gICAgY2VudGVyOiBudWxsLFxuICAgIG1heFpvb206IG51bGwsXG4gICAgbWluWm9vbTogbnVsbCxcbiAgICBmaWVsZHM6IFtdXG4gIH07XG5cbiAgY29uc3QgbXZ0TWV0YWRhdGEgPSBtZXRhZGF0YSBhcyBUaWxlSlNPTjtcbiAgY29uc3QgcG1UaWxlTWV0YWRhdGEgPSBtZXRhZGF0YSBhcyBQTVRpbGVzTWV0YWRhdGE7XG5cbiAgLy8gdHJ5IHRvIHBhcnNlIG1ldGFKc29uXG4gIGlmICh0eXBlb2YgbXZ0TWV0YWRhdGEubWV0YUpzb24gPT09ICdzdHJpbmcnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdC5tZXRhSnNvbiA9IEpTT04ucGFyc2UobXZ0TWV0YWRhdGEubWV0YUpzb24pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgbXZ0TWV0YWRhdGEubWV0YUpzb24gPT09ICdvYmplY3QnKSB7XG4gICAgcmVzdWx0Lm1ldGFKc29uID0gbXZ0TWV0YWRhdGEubWV0YUpzb247XG4gIH1cblxuICByZXN1bHQuYm91bmRzID0gcGFyc2VCb3VuZHMoXG4gICAgQXJyYXkuaXNBcnJheShtZXRhZGF0YS5ib3VuZGluZ0JveCkgPyBtZXRhZGF0YS5ib3VuZGluZ0JveC5mbGF0KCkgOiAnJ1xuICApO1xuXG4gIC8vIFBNVGlsZVNvdXJjZSBoYXMgY2VudGVyWm9vbSBhbmQgY2VudGVyIFtsb24sIGxhdF0sIE1WVFNvdXJjZSAtIFtsb24sIGxhdCwgem9vbV1cbiAgY29uc3QgY2VudGVyID1cbiAgICBwbVRpbGVNZXRhZGF0YS5jZW50ZXJab29tICE9PSB1bmRlZmluZWQgJiYgQXJyYXkuaXNBcnJheShtZXRhZGF0YS5jZW50ZXIpXG4gICAgICA/IFsuLi5tZXRhZGF0YS5jZW50ZXIsIHBtVGlsZU1ldGFkYXRhLmNlbnRlclpvb21dXG4gICAgICA6IG1ldGFkYXRhLmNlbnRlcjtcbiAgcmVzdWx0LmNlbnRlciA9IHBhcnNlQ2VudGVyKGNlbnRlciB8fCAnJyk7XG5cbiAgcmVzdWx0Lm1heFpvb20gPSBzYWZlUGFyc2VGbG9hdChtZXRhZGF0YS5tYXhab29tKTtcbiAgcmVzdWx0Lm1pblpvb20gPSBzYWZlUGFyc2VGbG9hdChtZXRhZGF0YS5taW5ab29tKTtcbiAgcmVzdWx0Lm5hbWUgPSBtZXRhZGF0YS5uYW1lIHx8ICcnO1xuICByZXN1bHQuZGVzY3JpcHRpb24gPSBtdnRNZXRhZGF0YS5kZXNjcmlwdGlvbiB8fCBwbVRpbGVNZXRhZGF0YS50aWxlanNvbj8uZGVzY3JpcHRpb24gfHwgJyc7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkocG1UaWxlTWV0YWRhdGEudGlsZWpzb24/LmxheWVycykpIHtcbiAgICBjb25zdCBsYXllcnMgPSBwbVRpbGVzTGF5ZXJUb1RpcHBlY2Fub2VMYXllcihwbVRpbGVNZXRhZGF0YS50aWxlanNvbj8ubGF5ZXJzKTtcbiAgICByZXN1bHQuZmllbGRzID0gY29sbGVjdEF0dHJpYnV0ZXMobGF5ZXJzKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG12dE1ldGFkYXRhLmxheWVycykpIHtcbiAgICBjb25zdCBsYXllcnMgPSBwbVRpbGVzTGF5ZXJUb1RpcHBlY2Fub2VMYXllcihtdnRNZXRhZGF0YS5sYXllcnMpO1xuICAgIHJlc3VsdC5maWVsZHMgPSBjb2xsZWN0QXR0cmlidXRlcyhsYXllcnMpO1xuICB9XG5cbiAgcmVzdWx0ID0ge1xuICAgIC4uLnJlc3VsdCxcbiAgICBhdHRyaWJ1dGlvbnM6XG4gICAgICBwbVRpbGVNZXRhZGF0YS5hdHRyaWJ1dGlvbnMgfHxcbiAgICAgIChtdnRNZXRhZGF0YS5odG1sQXR0cmlidXRpb24gPyBbbXZ0TWV0YWRhdGEuaHRtbEF0dHJpYnV0aW9uXSA6IHVuZGVmaW5lZCkgfHxcbiAgICAgIFtdLFxuICAgIC4uLnBhcnNlTWV0YUpzb24ocmVzdWx0Lm1ldGFKc29uKVxuICB9O1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHNhZmVQYXJzZUZsb2F0KGlucHV0OiB1bmtub3duKTogbnVtYmVyIHwgbnVsbCB7XG4gIGNvbnN0IHJlc3VsdCA9XG4gICAgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJyA/IHBhcnNlRmxvYXQoaW5wdXQpIDogdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyA/IGlucHV0IDogbnVsbDtcbiAgcmV0dXJuIHJlc3VsdCA9PT0gbnVsbCB8fCBpc05hTihyZXN1bHQpID8gbnVsbCA6IHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gcGFyc2VNZXRhSnNvbihtZXRhSnNvbjogYW55KToge2ZpZWxkczogVmVjdG9yVGlsZUZpZWxkW119IHwgbnVsbCB7XG4gIGlmICghbWV0YUpzb24gfHwgdHlwZW9mIG1ldGFKc29uICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKG1ldGFKc29uLnRpbGVzdGF0cyAmJiBBcnJheS5pc0FycmF5KG1ldGFKc29uLnRpbGVzdGF0cy5sYXllcnMpKSB7XG4gICAgLy8gd2UgYXJlIGluIGx1Y2shXG4gICAgcmV0dXJuIHtmaWVsZHM6IGNvbGxlY3RBdHRyaWJ1dGVzKG1ldGFKc29uLnRpbGVzdGF0cy5sYXllcnMpfTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0VGltZUFuaW1hdGlvbkRvbWFpbihtYXBwZWRWYWx1ZTogbnVtYmVyW10pOiB7XG4gIGRvbWFpbjogbnVtYmVyW107XG4gIHRpbWVTdGVwczogbnVtYmVyW107XG4gIG1hcHBlZFZhbHVlOiBudW1iZXJbXTtcbiAgZHVyYXRpb246IG51bWJlcjtcbn0ge1xuICBjb25zdCB0aW1lU3RlcHMgPSB1bmlxKG1hcHBlZFZhbHVlKS5zb3J0KGFzY2VuZGluZykuZmlsdGVyKG5vdE51bGxPclVuZGVmaW5lZCk7XG5cbiAgY29uc3QgZG9tYWluID0gW3RpbWVTdGVwc1swXSwgdGltZVN0ZXBzW3RpbWVTdGVwcy5sZW5ndGggLSAxXV07XG5cbiAgLy8gaWYgdGFrcyAxMCAqIDEwMDAgbXMgdG8gZmluaXNoIHRoZSBlbnRpcmUgYW5pbWF0aW9uXG4gIGNvbnN0IGR1cmF0aW9uID0gMTAwMDAgLyB0aW1lU3RlcHMubGVuZ3RoO1xuICBjb25zdCBjbGFtcGVkID0gY2xhbXAoWzEwMCwgMjAwMF0sIGR1cmF0aW9uKTtcblxuICByZXR1cm4ge2RvbWFpbiwgdGltZVN0ZXBzLCBkdXJhdGlvbjogY2xhbXBlZCwgbWFwcGVkVmFsdWV9O1xufVxuXG5jb25zdCBwbVRpbGVUeXBlVG9BdHRyTWFwID0ge1xuICBmbG9hdDMyOiAnbnVtYmVyJyxcbiAgc3RyaW5nOiAnc3RyaW5nJyxcbiAgdXRmODogJ3N0cmluZycsXG4gIGludDogJ2ludCcsXG4gIGJvb2xlYW46ICdib29sZWFuJ1xufTtcblxuLyoqXG4gKiBUcmFuc2Zvcm0gVGlsZUpTT05bJ2xheWVycyddIGJhY2sgdG8gVGlwcGVjYW5vZUxheWVyXG4gKi9cbmZ1bmN0aW9uIHBtVGlsZXNMYXllclRvVGlwcGVjYW5vZUxheWVyKGxheWVyczogVGlsZUpTT05bJ2xheWVycyddKTogVGlwcGVjYW5vZUxheWVyW10ge1xuICBpZiAoIWxheWVycykgcmV0dXJuIFtdO1xuXG4gIGNvbnN0IG91dExheWVyczogVGlwcGVjYW5vZUxheWVyW10gPSBbXTtcbiAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcbiAgICBjb25zdCB7ZmllbGRzID0gW119ID0gbGF5ZXIgfHwge307XG4gICAgZm9yIChjb25zdCBwbUZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgY29uc3QgYXR0cmlidXRlID0ge1xuICAgICAgICBhdHRyaWJ1dGU6IHBtRmllbGQubmFtZSxcbiAgICAgICAgdHlwZTogcG1UaWxlVHlwZVRvQXR0ck1hcFtwbUZpZWxkLnR5cGVdLFxuICAgICAgICBjb3VudDogcG1GaWVsZC51bmlxdWVWYWx1ZUNvdW50LFxuICAgICAgICB2YWx1ZXM6IChwbUZpZWxkLnZhbHVlcyA/PyBbXSkgYXMgbnVtYmVyW10gfCBzdHJpbmdbXSxcbiAgICAgICAgbWluOiBwbUZpZWxkLm1pbixcbiAgICAgICAgbWF4OiBwbUZpZWxkLm1heFxuICAgICAgfTtcblxuICAgICAgb3V0TGF5ZXJzLnB1c2goe1xuICAgICAgICBhdHRyaWJ1dGVzOiBbYXR0cmlidXRlXVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXRMYXllcnM7XG59XG5cbmZ1bmN0aW9uIGNvbGxlY3RBdHRyaWJ1dGVzKGxheWVyczogVGlwcGVjYW5vZUxheWVyW10gPSBbXSk6IFZlY3RvclRpbGVGaWVsZFtdIHtcbiAgY29uc3QgZmllbGRzID0ge307XG4gIGNvbnN0IGluZGV4ZWRBdHRyaWJ1dGVzOiB7W2tleTogc3RyaW5nXTogVGlwcGVjYW5vZUxheWVyQXR0cmlidXRlW119ID0ge307XG5cbiAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcbiAgICBjb25zdCB7YXR0cmlidXRlcyA9IFtdfSA9IGxheWVyIHx8IHt9O1xuICAgIGZvciAoY29uc3QgYXR0ciBvZiBhdHRyaWJ1dGVzKSB7XG4gICAgICBjb25zdCBuYW1lID0gYXR0ci5hdHRyaWJ1dGU7XG4gICAgICBpZiAodHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtZGVwdGhcbiAgICAgICAgaWYgKG5hbWUuc3BsaXQoJ3wnKS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgLy8gaW5kZXhlZCBmaWVsZFxuICAgICAgICAgIGNvbnN0IGZuYW1lID0gbmFtZS5zcGxpdCgnfCcpWzBdO1xuICAgICAgICAgIGluZGV4ZWRBdHRyaWJ1dGVzW2ZuYW1lXSA9IGluZGV4ZWRBdHRyaWJ1dGVzW2ZuYW1lXSB8fCBbXTtcbiAgICAgICAgICBpbmRleGVkQXR0cmlidXRlc1tmbmFtZV0ucHVzaChhdHRyKTtcbiAgICAgICAgfSBlbHNlIGlmICghZmllbGRzW25hbWVdKSB7XG4gICAgICAgICAgZmllbGRzW25hbWVdID0gYXR0cmlidXRlVG9GaWVsZChhdHRyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtZXJnZUF0dHJpYnV0ZURvbWFpbihmaWVsZHNbbmFtZV0sIGF0dHIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gcGFyc2UgaW5kZXhlZCBhdHRyaWJ1dGUsIGFuZCBwdXQgaW5kZXgga2V5IHVuaWRlbnRpZmllZCBiYWNrIGFzIG5vcm1hbCBmaWVsZFxuICBmb3IgKGNvbnN0IFtuYW1lLCBhdHRyc10gb2YgT2JqZWN0LmVudHJpZXMoaW5kZXhlZEF0dHJpYnV0ZXMpKSB7XG4gICAgY29uc3Qge2luZGV4ZWRGaWVsZCwgdW5pZGVudGlmaWVkfSA9IHBhcnNlSW5kZXhlZEZpZWxkKG5hbWUsIGF0dHJzKTtcbiAgICBmaWVsZHNbaW5kZXhlZEZpZWxkLm5hbWVdID0gaW5kZXhlZEZpZWxkO1xuICAgIGZvciAoY29uc3QgdW5pZGVudGlmaWVkQXR0ciBvZiB1bmlkZW50aWZpZWQpIHtcbiAgICAgIGlmICh1bmlkZW50aWZpZWRBdHRyLmF0dHJpYnV0ZSkge1xuICAgICAgICBmaWVsZHNbdW5pZGVudGlmaWVkQXR0ci5hdHRyaWJ1dGVdID1cbiAgICAgICAgICBmaWVsZHNbdW5pZGVudGlmaWVkQXR0ci5hdHRyaWJ1dGVdIHx8IGF0dHJpYnV0ZVRvRmllbGQodW5pZGVudGlmaWVkQXR0cik7XG4gICAgICAgIG1lcmdlQXR0cmlidXRlRG9tYWluKGZpZWxkc1t1bmlkZW50aWZpZWRBdHRyLmF0dHJpYnV0ZV0sIHVuaWRlbnRpZmllZEF0dHIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBPYmplY3QudmFsdWVzKGZpZWxkcyk7XG59XG5cbmZ1bmN0aW9uIGdldEluZGV4S2V5RnJvbUZpZWxkTmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgcmV0dXJuIG5hbWUgJiYgbmFtZS5zcGxpdCgnfCcpLmxlbmd0aCA+IDEgPyBuYW1lLnNwbGl0KCd8JylbMV0gOiBudWxsO1xufVxuXG5leHBvcnQgdHlwZSBGaWVsZEluZGV4QnkgPSB7XG4gIGZvcm1hdDogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIG1hcHBlZFZhbHVlOiB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xufTtcblxuZnVuY3Rpb24gcGFyc2VJbmRleGVkRmllbGQoXG4gIG5hbWU6IHN0cmluZyxcbiAgYXR0cnM6IFRpcHBlY2Fub2VMYXllckF0dHJpYnV0ZVtdXG4pOiB7XG4gIHVuaWRlbnRpZmllZDogVGlwcGVjYW5vZUxheWVyQXR0cmlidXRlW107XG4gIGluZGV4ZWRGaWVsZDogVmVjdG9yVGlsZUZpZWxkO1xufSB7XG4gIGNvbnN0IHVuaWRlbnRpZmllZDogVGlwcGVjYW5vZUxheWVyQXR0cmlidXRlW10gPSBbXTtcbiAgLy8gYW5hbHl6ZSB0aW1lIGZvcm1hdFxuICBsZXQgZmllbGQ7XG5cbiAgZm9yIChjb25zdCBhdHRyIG9mIGF0dHJzKSB7XG4gICAgY29uc3QgZmllbGROYW1lID0gYXR0ci5hdHRyaWJ1dGU7XG4gICAgY29uc3QgaW5kZXhLZXkgPSBnZXRJbmRleEtleUZyb21GaWVsZE5hbWUoZmllbGROYW1lIHx8ICcnKTtcbiAgICBjb25zdCBhbmFseXplZFR5cGUgPSBpbmRleEtleSAmJiBjb250YWluVmFsaWRUaW1lKFtpbmRleEtleV0pO1xuICAgIGlmIChhbmFseXplZFR5cGUpIHtcbiAgICAgIGZpZWxkID0gZmllbGQgfHwge1xuICAgICAgICAuLi5hdHRyaWJ1dGVUb0ZpZWxkKGF0dHIpLFxuICAgICAgICAvLyBvdmVyaWRlIG5hbWUgYW5kIGlkIHRvIHRydW5jYXRlZCBuYW1lXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGlkOiBuYW1lLFxuICAgICAgICBpbmRleEJ5OiB7XG4gICAgICAgICAgZm9ybWF0OiBhbmFseXplZFR5cGUuZm9ybWF0LFxuICAgICAgICAgIHR5cGU6IGFuYWx5emVyVHlwZVRvRmllbGRUeXBlKGFuYWx5emVkVHlwZS50eXBlKSxcbiAgICAgICAgICBtYXBwZWRWYWx1ZToge31cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIG1lcmdlQXR0cmlidXRlRG9tYWluKGZpZWxkLCBhdHRyKTtcbiAgICAgIC8vIHNhdmUgZXBvY2ggdGltZSBpbiBtYXBwZWRWYWx1ZVxuICAgICAgbGV0IGZpZWxkVHM6IHN0cmluZyB8IG51bWJlciB8IG51bGwgPSBpbmRleEtleTtcbiAgICAgIGlmIChhbmFseXplZFR5cGUuZm9ybWF0ID09PSAneCcgfHwgYW5hbHl6ZWRUeXBlLmZvcm1hdCA9PT0gJ1gnKSB7XG4gICAgICAgIGZpZWxkVHMgPSBOdW1iZXIoaW5kZXhLZXkpO1xuICAgICAgfVxuICAgICAgY29uc3QgZXBvY2ggPSB0aW1lVG9Vbml4TWlsbGkoZmllbGRUcywgYW5hbHl6ZWRUeXBlLmZvcm1hdCk7XG4gICAgICBpZiAoZXBvY2gpIHtcbiAgICAgICAgZmllbGQuaW5kZXhCeS5tYXBwZWRWYWx1ZVtlcG9jaF0gPSBmaWVsZE5hbWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGtleSBpcyBub3QgdmFsaWQgdGltZXN0YW1wXG4gICAgICB1bmlkZW50aWZpZWQucHVzaChhdHRyKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZmllbGQuaW5kZXhCeSAmJiBmaWVsZC5pbmRleEJ5LnR5cGUgPT09IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXApIHtcbiAgICBmaWVsZC5pbmRleEJ5LnRpbWVEb21haW4gPSBnZXRUaW1lQW5pbWF0aW9uRG9tYWluKFxuICAgICAgT2JqZWN0LmtleXMoZmllbGQuaW5kZXhCeS5tYXBwZWRWYWx1ZSkubWFwKE51bWJlcilcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHt1bmlkZW50aWZpZWQsIGluZGV4ZWRGaWVsZDogZmllbGR9O1xufVxuXG5mdW5jdGlvbiBjb21wYXJlKG51bTE6IG51bWJlciB8IHVuZGVmaW5lZCwgbnVtMjogbnVtYmVyIHwgdW5kZWZpbmVkLCBvcGVyYXRvcjogc3RyaW5nKTogbnVtYmVyIHtcbiAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShudW0xKSAmJiBOdW1iZXIuaXNGaW5pdGUobnVtMilcbiAgICA/IE1hdGhbb3BlcmF0b3JdKG51bTEgYXMgbnVtYmVyLCBudW0yIGFzIG51bWJlcilcbiAgICA6IE51bWJlci5pc0Zpbml0ZShudW0xKVxuICAgID8gKG51bTEgYXMgbnVtYmVyKVxuICAgIDogTnVtYmVyLmlzRmluaXRlKG51bTIpXG4gICAgPyAobnVtMiBhcyBudW1iZXIpXG4gICAgOiBOYU47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWx0ZXJQcm9wcyhcbiAgZmllbGRUeXBlOiBzdHJpbmcsXG4gIGF0dHJpYnV0ZTogVGlwcGVjYW5vZUxheWVyQXR0cmlidXRlXG4pOiBGaWx0ZXJQcm9wcyB7XG4gIHN3aXRjaCAoZmllbGRUeXBlKSB7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMucmVhbDpcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOiB7XG4gICAgICBjb25zdCBbbWluLCBtYXhdID0gZ2V0QXR0cmlidXRlRG9tYWluKGZpZWxkVHlwZSwgYXR0cmlidXRlKTtcbiAgICAgIGNvbnN0IGRpZmYgPSBtYXggLSBtaW47XG4gICAgICBjb25zdCBzdGVwID0gZ2V0TnVtZXJpY1N0ZXBTaXplKGRpZmYpIHx8IDAuMTtcbiAgICAgIGNvbnN0IGRvbWFpbiA9IFtcbiAgICAgICAgZm9ybWF0TnVtYmVyQnlTdGVwKG1pbiwgc3RlcCwgJ2Zsb29yJyksXG4gICAgICAgIGZvcm1hdE51bWJlckJ5U3RlcChtYXgsIHN0ZXAsICdjZWlsJylcbiAgICAgIF07XG4gICAgICBjb25zdCBmaWx0ZXJQcm9wczogTnVtZXJpY0ZpZWxkRmlsdGVyUHJvcHMgPSB7XG4gICAgICAgIGRvbWFpbixcbiAgICAgICAgdmFsdWU6IGRvbWFpbiBhcyBbbnVtYmVyLCBudW1iZXJdLFxuICAgICAgICB0eXBlOiBGSUxURVJfVFlQRVMucmFuZ2UsXG4gICAgICAgIHR5cGVPcHRpb25zOiBbRklMVEVSX1RZUEVTLnJhbmdlXSxcbiAgICAgICAgZ3B1OiB0cnVlLFxuICAgICAgICBzdGVwXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGZpbHRlclByb3BzO1xuICAgIH1cblxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmJvb2xlYW46IHtcbiAgICAgIGNvbnN0IGZpbHRlclByb3BzOiBCb29sZWFuRmllbGRGaWx0ZXJQcm9wcyA9IHtcbiAgICAgICAgZG9tYWluOiBbdHJ1ZSwgZmFsc2VdLFxuICAgICAgICB2YWx1ZTogdHJ1ZSxcbiAgICAgICAgdHlwZTogRklMVEVSX1RZUEVTLnNlbGVjdCxcbiAgICAgICAgZ3B1OiB0cnVlXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGZpbHRlclByb3BzO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIC8vIEFzc3VtZSBzdHJpbmcgZm9yIGFsbCBvdGhlciBmaWVsZHNcbiAgICAgIGNvbnN0IGZpbHRlclByb3BzOiBTdHJpbmdGaWVsZEZpbHRlclByb3BzID0ge1xuICAgICAgICBkb21haW46IGF0dHJpYnV0ZS52YWx1ZXMgYXMgc3RyaW5nW10sXG4gICAgICAgIHZhbHVlOiBhdHRyaWJ1dGUudmFsdWVzIGFzIHN0cmluZ1tdLFxuICAgICAgICB0eXBlOiBGSUxURVJfVFlQRVMubXVsdGlTZWxlY3QsXG4gICAgICAgIGdwdTogZmFsc2VcbiAgICAgIH07XG4gICAgICByZXR1cm4gZmlsdGVyUHJvcHM7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGF0dHJpYnV0ZVRvRmllbGQoYXR0cmlidXRlOiBUaXBwZWNhbm9lTGF5ZXJBdHRyaWJ1dGUgPSB7dmFsdWVzOiBbXX0pOiBWZWN0b3JUaWxlRmllbGQge1xuICAvLyBhdHRyaWJ1dGU6IFwiX3NlYXNvbl9wZWFrc19jb2xvclwiXG4gIC8vIGNvdW50OiAxMDAwXG4gIC8vIG1heDogMC45NVxuICAvLyBtaW46IDAuMjQzNzVcbiAgLy8gdHlwZTogXCJudW1iZXJcIlxuICBjb25zdCBmaWVsZFR5cGVzID0gYXR0cmlidXRlVHlwZVRvRmllbGRUeXBlKGF0dHJpYnV0ZS50eXBlKTtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBhdHRyaWJ1dGUuYXR0cmlidXRlIGFzIHN0cmluZyxcbiAgICBpZDogYXR0cmlidXRlLmF0dHJpYnV0ZSBhcyBzdHJpbmcsXG4gICAgZm9ybWF0OiAnJyxcbiAgICBmaWx0ZXJQcm9wczogZ2V0RmlsdGVyUHJvcHMoZmllbGRUeXBlcy50eXBlLCBhdHRyaWJ1dGUpLFxuICAgIC4uLmZpZWxkVHlwZXNcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0QXR0cmlidXRlRG9tYWluKHR5cGU6IHN0cmluZyB8IG51bGwsIGF0dHJpYnV0ZTogVGlwcGVjYW5vZUxheWVyQXR0cmlidXRlKTogbnVtYmVyW10ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5yZWFsOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmludGVnZXI6XG4gICAgICByZXR1cm4gW1xuICAgICAgICBOdW1iZXIuaXNGaW5pdGUoYXR0cmlidXRlLm1pbikgPyAoYXR0cmlidXRlLm1pbiBhcyBudW1iZXIpIDogTmFOLFxuICAgICAgICBOdW1iZXIuaXNGaW5pdGUoYXR0cmlidXRlLm1heCkgPyAoYXR0cmlidXRlLm1heCBhcyBudW1iZXIpIDogTmFOXG4gICAgICBdO1xuXG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuYm9vbGVhbjpcbiAgICAgIHJldHVybiBbMCwgMV07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBbMCwgMV07XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0gZmllbGQgVGhpcyBmdW5jdGlvbiBtdXRhdGVzIHRoZSBmaWVsZCBwYXJhbWV0ZXJcbiAqL1xuZnVuY3Rpb24gbWVyZ2VBdHRyaWJ1dGVEb21haW4oZmllbGQ6IEtlcGxlckZpZWxkLCBhdHRyaWJ1dGU6IFRpcHBlY2Fub2VMYXllckF0dHJpYnV0ZSk6IHZvaWQge1xuICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5yZWFsOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmludGVnZXI6IHtcbiAgICAgIGNvbnN0IGRvbWFpbiA9IGZpZWxkLm1ldGFkYXRhPy5kb21haW4gfHwgZmllbGQuZmlsdGVyUHJvcHM/LmRvbWFpbjtcbiAgICAgIGlmIChkb21haW4pIHtcbiAgICAgICAgZG9tYWluLm1pbiA9IGNvbXBhcmUoYXR0cmlidXRlLm1pbiwgZG9tYWluWzBdLCAnbWluJyk7XG4gICAgICAgIGRvbWFpbi5tYXggPSBjb21wYXJlKGF0dHJpYnV0ZS5tYXgsIGRvbWFpblsxXSwgJ21heCcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuO1xuICB9XG59XG5cbi8vIHBvc3NpYmxlIHR5cGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXBib3gvdGlwcGVjYW5vZSNtb2RpZnlpbmctZmVhdHVyZS1hdHRyaWJ1dGVzXG5jb25zdCBhdHRyVHlwZU1hcCA9IHtcbiAgbnVtYmVyOiB7XG4gICAgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnJlYWwsXG4gICAgYW5hbHl6ZXJUeXBlOiBEQVRBX1RZUEVTLkZMT0FUXG4gIH0sXG4gIG51bWVyaWM6IHtcbiAgICB0eXBlOiBBTExfRklFTERfVFlQRVMucmVhbCxcbiAgICBhbmFseXplclR5cGU6IERBVEFfVFlQRVMuRkxPQVRcbiAgfSxcbiAgc3RyaW5nOiB7XG4gICAgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnN0cmluZyxcbiAgICBhbmFseXplclR5cGU6IERBVEFfVFlQRVMuU1RSSU5HXG4gIH0sXG4gIHZhY2hhcjoge1xuICAgIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcsXG4gICAgYW5hbHl6ZXJUeXBlOiBEQVRBX1RZUEVTLlNUUklOR1xuICB9LFxuICBmbG9hdDoge1xuICAgIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5yZWFsLFxuICAgIGFuYWx5emVyVHlwZTogREFUQV9UWVBFUy5GTE9BVFxuICB9LFxuICBpbnQ6IHtcbiAgICB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcixcbiAgICBhbmFseXplclR5cGU6IERBVEFfVFlQRVMuSU5UXG4gIH0sXG4gIGludDQ6IHtcbiAgICB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcixcbiAgICBhbmFseXplclR5cGU6IERBVEFfVFlQRVMuSU5UXG4gIH0sXG4gIGJvb2xlYW46IHtcbiAgICB0eXBlOiBBTExfRklFTERfVFlQRVMuYm9vbGVhbixcbiAgICBhbmFseXplclR5cGU6IERBVEFfVFlQRVMuQk9PTEVBTlxuICB9LFxuICBib29sOiB7XG4gICAgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLmJvb2xlYW4sXG4gICAgYW5hbHl6ZXJUeXBlOiBEQVRBX1RZUEVTLkJPT0xFQU5cbiAgfVxufTtcblxuZnVuY3Rpb24gYXR0cmlidXRlVHlwZVRvRmllbGRUeXBlKGFUeXBlPzogc3RyaW5nKToge3R5cGU6IHN0cmluZzsgYW5hbHl6ZXJUeXBlOiBzdHJpbmd9IHtcbiAgY29uc3QgdHlwZSA9IGFUeXBlPy50b0xvd2VyQ2FzZSgpO1xuICBpZiAoIXR5cGUgfHwgIWF0dHJUeXBlTWFwW3R5cGVdKSB7XG4gICAgQ29uc29sZS53YXJuKFxuICAgICAgYGNhbm5vdCBjb252ZXJ0IGF0dHJpYnV0ZSB0eXBlICR7dHlwZX0gdG8ga2VwbGVyLmdsIGRhdGEgdHlwZSwgdXNlIHN0cmluZyBieSBkZWZhdWx0YFxuICAgICk7XG4gICAgcmV0dXJuIGF0dHJUeXBlTWFwLnN0cmluZztcbiAgfVxuXG4gIHJldHVybiBhdHRyVHlwZU1hcFt0eXBlXTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgYSBkYXRhc2V0IGNhbiBiZSB1c2VkIGFzIHNvdXJjZSBkYXRhIGZvciBhIGxheWVyLlxuICogQHBhcmFtIGRhdGFzZXQgQSBkYXRhc2V0LlxuICogQHBhcmFtIGxheWVyIEEgbGF5ZXIuXG4gKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgYSBkYXRhc2V0IGNhbiBiZSB1c2VkIGFzIHNvdXJjZSBkYXRhIGZvciBhIGxheWVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hEYXRhc2V0VHlwZShkYXRhc2V0OiBLZXBsZXJEYXRhc2V0LCBsYXllcjogS2VwbGVyTGF5ZXIpOiBib29sZWFuIHtcbiAgLy8gYWxsb3cgc2VsZWN0aW9uIGlmIHR5cGUgaXMgbm90IGFzc2lnbmVkIHlldFxuICBpZiAoIWxheWVyLnR5cGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICAvLyBhbGxvdyBzZWxlY3Rpb24gaWYgaXMgY3VycmVudCBzZWxlY3RlZCBkYXRhc2V0XG4gIGlmIChsYXllci5jb25maWcuZGF0YUlkID09PSBkYXRhc2V0LmlkKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8gYWxsb3cgc2VsZWN0aW9uIGlmIGxheWVyIGRvZXNuJ3QgaGF2ZSBzdXBwb3J0ZWREYXRhc2V0VHlwZXNcbiAgaWYgKCFsYXllci5zdXBwb3J0ZWREYXRhc2V0VHlwZXMpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgQXJyYXkuaXNBcnJheShsYXllci5zdXBwb3J0ZWREYXRhc2V0VHlwZXMpICYmXG4gICAgbGF5ZXIuc3VwcG9ydGVkRGF0YXNldFR5cGVzLmluY2x1ZGVzKGRhdGFzZXQudHlwZSB8fCAnJylcbiAgKTtcbn1cblxudHlwZSBHZXRGaWVsZHNGcm9tVGlsZVByb3BzID0ge1xuICByZW1vdGVUaWxlRm9ybWF0OiBSZW1vdGVUaWxlRm9ybWF0O1xuICB0aWxlc2V0VXJsOiBzdHJpbmcgfCBudWxsO1xuICBtZXRhZGF0YVVybDogc3RyaW5nIHwgbnVsbDtcbiAgbWV0YWRhdGE6IFZlY3RvclRpbGVNZXRhZGF0YSB8IG51bGw7XG59O1xuXG4vKipcbiAqIEV4dHJhY3RzIGZpZWxkcyBmcm9tIGEgdGlsZSBhbmQgdXBkYXRlcyB0aGUgbWV0YWRhdGEgb2JqZWN0IHdpdGggZm91bmQgZmllbGRzLlxuICogTm90ZTogdGhpcyBmdW5jdGlvbiBpcyBmb3IgdGlsZXNldHMgdGhhdCBkb24ndCBpbmNsdWRlIGZpZWxkcyBpbiBtZXRhZGF0YSAobW9zdCBsaWtlbHkgc2F2ZWQgd2l0aCBvbGRlciBzcGVjLikuXG4gKiBAcGFyYW0gcGFyYW1zLnJlbW90ZVRpbGVGb3JtYXQgVGhlIGZvcm1hdCBvZiB0aGUgcmVtb3RlIHRpbGUgKE1WVCBvciBQTVRpbGVzKS5cbiAqIEBwYXJhbSBwYXJhbXMudGlsZXNldFVybCBUaGUgVVJMIG9mIHRoZSB0aWxlc2V0LlxuICogQHBhcmFtIHBhcmFtcy5tZXRhZGF0YVVybCBUaGUgVVJMIG9mIHRoZSBtZXRhZGF0YS5cbiAqIEBwYXJhbSBwYXJhbXMubWV0YWRhdGEgVGhlIG1ldGFkYXRhIG9iamVjdCBjb250YWluaW5nIGZpZWxkcyBhbmQgdGlsZSBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgY29uc3QgZ2V0RmllbGRzRnJvbVRpbGUgPSBhc3luYyAoe1xuICByZW1vdGVUaWxlRm9ybWF0LFxuICB0aWxlc2V0VXJsLFxuICBtZXRhZGF0YVVybCxcbiAgbWV0YWRhdGFcbn06IEdldEZpZWxkc0Zyb21UaWxlUHJvcHMpID0+IHtcbiAgdHJ5IHtcbiAgICBpZiAoXG4gICAgICB0aWxlc2V0VXJsICYmXG4gICAgICBtZXRhZGF0YVVybCAmJlxuICAgICAgbWV0YWRhdGEgJiZcbiAgICAgIG1ldGFkYXRhLmZpZWxkcz8ubGVuZ3RoID09PSAwICYmXG4gICAgICBtZXRhZGF0YS5taW5ab29tICYmXG4gICAgICBtZXRhZGF0YS5ib3VuZHM/Lmxlbmd0aCA9PT0gNCAmJlxuICAgICAgKCFtZXRhZGF0YS5wbXRpbGVzVHlwZSB8fCBtZXRhZGF0YS5wbXRpbGVzVHlwZSA9PT0gUE1UaWxlc1R5cGUuTVZUKVxuICAgICkge1xuICAgICAgY29uc3QgbG9uID0gKG1ldGFkYXRhLmJvdW5kc1swXSArIG1ldGFkYXRhLmJvdW5kc1syXSkgLyAyO1xuICAgICAgY29uc3QgbGF0ID0gKG1ldGFkYXRhLmJvdW5kc1sxXSArIG1ldGFkYXRhLmJvdW5kc1szXSkgLyAyO1xuICAgICAgY29uc3QgdGlsZUluZGljZXMgPSBsb25MYXRUb1RpbGVJbmRleChsb24sIGxhdCwgbWV0YWRhdGEubWluWm9vbSk7XG5cbiAgICAgIGNvbnN0IHRpbGVTb3VyY2UgPVxuICAgICAgICByZW1vdGVUaWxlRm9ybWF0ID09PSBSZW1vdGVUaWxlRm9ybWF0Lk1WVFxuICAgICAgICAgID8gTVZUU291cmNlLmNyZWF0ZURhdGFTb3VyY2UoZGVjb2RlVVJJQ29tcG9uZW50KHRpbGVzZXRVcmwpLCB7XG4gICAgICAgICAgICAgIG12dDoge1xuICAgICAgICAgICAgICAgIG1ldGFkYXRhVXJsOiBkZWNvZGVVUklDb21wb25lbnQobWV0YWRhdGFVcmwpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgOiBQTVRpbGVzU291cmNlLmNyZWF0ZURhdGFTb3VyY2UodGlsZXNldFVybCwge30pO1xuICAgICAgY29uc3QgdGlsZSA9IGF3YWl0IHRpbGVTb3VyY2UuZ2V0VGlsZURhdGEoe2luZGV4OiB0aWxlSW5kaWNlc30gYXMgYW55KTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRGaWVsZHMgPSB0aWxlVG9GaWVsZHModGlsZSkubWFwKGYgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmYsXG4gICAgICAgICAgYW5hbHl6ZXJUeXBlOiBmLmFuYWx5emVyVHlwZSB8fCBBTExfRklFTERfVFlQRVMuc3RyaW5nLFxuICAgICAgICAgIGlkOiBmLmlkIHx8IGYubmFtZVxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIG1ldGFkYXRhLmZpZWxkcyA9IHVwZGF0ZWRGaWVsZHM7XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICAvLyBpZ25vcmUsIGFzIHRoaXMgaXMgZXhwZXJpbWVudGFsIGZhbGxiYWNrXG4gIH1cbn07XG5cbi8qKlxuICogQ29udmVydHMgdGlsZSBmZWF0dXJlcyBpbnRvIEtlcGxlciBmaWVsZHMuXG4gKiBAcGFyYW0gdGlsZSBUaGUgdGlsZSBvYmplY3QgY29udGFpbmluZyBmZWF0dXJlcy5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIEtlcGxlciBmaWVsZHMgZGVyaXZlZCBmcm9tIHRoZSB0aWxlJ3MgZmVhdHVyZXMuXG4gKi9cbmNvbnN0IHRpbGVUb0ZpZWxkcyA9ICh0aWxlOiB7ZmVhdHVyZXM6IEZlYXR1cmVbXX0pOiBLZXBsZXJGaWVsZFtdID0+IHtcbiAgaWYgKHRpbGU/LmZlYXR1cmVzPy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgaGVhZGVyID0gT2JqZWN0LmtleXModGlsZS5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzKTtcbiAgICBjb25zdCBvdXRwdXQgPSB0aWxlLmZlYXR1cmVzLm1hcChmID0+IHtcbiAgICAgIGNvbnN0IG9iaiA9IHt9O1xuICAgICAgaGVhZGVyLmZvckVhY2goY29sdW1uTmFtZSA9PiB7XG4gICAgICAgIG9ialtjb2x1bW5OYW1lXSA9IGYucHJvcGVydGllc1tjb2x1bW5OYW1lXTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9KTtcblxuICAgIGNvbnN0IGZpZWxkcyA9IGdldEZpZWxkc0Zyb21EYXRhKG91dHB1dCwgaGVhZGVyKTtcbiAgICAvLyBleHRyYSB0cmFuc2Zvcm1hdGlvbiBvZiBzdHJpbmdzIHRvIG51bWJlcnMgZm9yIHRpbGVzIGlzbid0IGltcGxlbWVudGVkLCBzbyB1c2Ugc3RyaW5nLCBub3QgY29tcHV0ZWQgdHlwZXNcbiAgICByZXR1cm4gZmllbGRzLm1hcChmID0+IHtcbiAgICAgIGNvbnN0IGZvcmNlU3RyaW5nID1cbiAgICAgICAgKGYudHlwZSA9PT0gJ2ludGVnZXInIHx8IGYudHlwZSA9PT0gJ2Zsb2F0JykgJiZcbiAgICAgICAgdHlwZW9mIHRpbGUuZmVhdHVyZXNbMF0ucHJvcGVydGllc1tmLm5hbWVdID09PSAnc3RyaW5nJztcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZixcbiAgICAgICAgYW5hbHl6ZXJUeXBlOiBmb3JjZVN0cmluZyA/IEFOQUxZWkVSX0RBVEFfVFlQRVMuU1RSSU5HIDogZi5hbmFseXplclR5cGUsXG4gICAgICAgIHR5cGU6IGZvcmNlU3RyaW5nID8gJ3N0cmluZycgOiBmLnR5cGVcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIFtdO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBsb25naXR1ZGUsIGxhdGl0dWRlLCBhbmQgem9vbSBsZXZlbCBpbnRvIHZlY3RvciB0aWxlIGluZGljZXMgKHgsIHksIHopLlxuICogQHBhcmFtIGxvbiBMb25naXR1ZGUgaW4gZGVncmVlcywgcmFuZ2luZyBmcm9tIC0xODAgdG8gMTgwLlxuICogQHBhcmFtIGxhdCBMYXRpdHVkZSBpbiBkZWdyZWVzLCByYW5naW5nIGZyb20gLTkwIHRvIDkwLlxuICogQHBhcmFtIHpvb20gWm9vbSBsZXZlbCAoaW50ZWdlciksIHdoZXJlIGhpZ2hlciB2YWx1ZXMgcHJvdmlkZSBtb3JlIGRldGFpbC5cbiAqIEByZXR1cm5zIFRpbGUgaW5kaWNlcyB3aXRoIHggYW5kIHkgY29vcmRpbmF0ZXMgYW5kIHpvb20gbGV2ZWwgei5cbiAqL1xuZnVuY3Rpb24gbG9uTGF0VG9UaWxlSW5kZXgobG9uOiBudW1iZXIsIGxhdDogbnVtYmVyLCB6b29tOiBudW1iZXIpIHtcbiAgaWYgKGxhdCA8IC04NS4wNTExIHx8IGxhdCA+IDg1LjA1MTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0xhdGl0dWRlIG91dCBvZiByYW5nZS4gTXVzdCBiZSBiZXR3ZWVuIC04NS4wNTExIGFuZCA4NS4wNTExLicpO1xuICB9XG4gIGlmICh6b29tIDwgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignWm9vbSBsZXZlbCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIuJyk7XG4gIH1cblxuICAvLyAyXnpvb20gKG51bWJlciBvZiB0aWxlcyBwZXIgYXhpcyBhdCBnaXZlbiB6b29tIGxldmVsKVxuICBjb25zdCBzY2FsZSA9IDEgPDwgem9vbTtcbiAgLy8gQ29udmVydCBsb25naXR1ZGUgdG8gdGlsZSBYXG4gIGNvbnN0IHggPSBNYXRoLmZsb29yKCgobG9uICsgMTgwKSAvIDM2MCkgKiBzY2FsZSk7XG4gIC8vIENvbnZlcnQgbGF0aXR1ZGUgdG8gdGlsZSBZXG4gIGNvbnN0IGxhdFJhZCA9IChsYXQgKiBNYXRoLlBJKSAvIDE4MDtcbiAgY29uc3QgeSA9IE1hdGguZmxvb3IoXG4gICAgKCgxIC0gTWF0aC5sb2coTWF0aC50YW4obGF0UmFkKSArIDEgLyBNYXRoLmNvcyhsYXRSYWQpKSAvIE1hdGguUEkpIC8gMikgKiBzY2FsZVxuICApO1xuXG4gIHJldHVybiB7eCwgeSwgejogem9vbX07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxhQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxLQUFBLEdBQUFELHNCQUFBLENBQUFILE9BQUE7QUFHQSxJQUFBSyxJQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxRQUFBLEdBQUFOLE9BQUE7QUFFQSxJQUFBTyxZQUFBLEdBQUFQLE9BQUE7QUFPQSxJQUFBUSxVQUFBLEdBQUFSLE9BQUE7QUFTQSxJQUFBUyxNQUFBLEdBQUFULE9BQUE7QUFBZ0csU0FBQVUsMkJBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLHlCQUFBQyxNQUFBLElBQUFILENBQUEsQ0FBQUcsTUFBQSxDQUFBQyxRQUFBLEtBQUFKLENBQUEscUJBQUFFLENBQUEsUUFBQUcsS0FBQSxDQUFBQyxPQUFBLENBQUFOLENBQUEsTUFBQUUsQ0FBQSxHQUFBSywyQkFBQSxDQUFBUCxDQUFBLE1BQUFDLENBQUEsSUFBQUQsQ0FBQSx1QkFBQUEs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
|
|
728
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZUFuYWx5emVyIiwicmVxdWlyZSIsIl9kM0FycmF5IiwiX2NvbnNvbGUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3VuaXEiLCJfbXZ0IiwiX3BtdGlsZXMiLCJfY29tbW9uVXRpbHMiLCJfY29uc3RhbnRzIiwiX3V0aWxzIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJyIiwiZSIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJvd25LZXlzIiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiaXNUaWxlRGF0YXNldCIsImRhdGFzZXQiLCJCb29sZWFuIiwidHlwZSIsIkRhdGFzZXRUeXBlIiwiVkVDVE9SX1RJTEUiLCJpc0xhdCIsIm51bSIsIk51bWJlciIsImlzRmluaXRlIiwiaXNMbmciLCJpc1pvb20iLCJmcm9tQXJyYXlPclN0cmluZyIsImRhdGEiLCJzcGxpdCIsIm1hcCIsInBhcnNlRmxvYXQiLCJwYXJzZUNlbnRlciIsImNlbnRlciIsInJlc3VsdCIsInBhcnNlQm91bmRzIiwiYm91bmRzIiwiZXZlcnkiLCJYX1BBVFQiLCJZX1BBVFQiLCJaX1BBVFQiLCJpc0Z1bGx5UXVhbGlmaWVkVGlsZVVybCIsInRpbGVVcmwiLCJnZXRUaWxlVXJsIiwidmFsaWRhdGVVcmwiLCJ1bmRlZmluZWQiLCJ1cmlQYXJ0cyIsInBhcnNlVXJpIiwicHJvdG9jb2wiLCJob3N0IiwiY29uY2F0IiwicmVwbGFjZSIsIlRJTEVTRVRfRlVOQ1RJT05TIiwiZ2V0TWV0YVVybCIsImdldE1ldGFVcmxNYXBib3giLCJwYXJzZU1ldGFkYXRhIiwicGFyc2VNZXRhZGF0YVRpbGVKU09OIiwiZ2V0TWV0YVVybFRpcHBlY2Fub2UiLCJnZXRUaWxlc2V0RnVuY3Rpb25zIiwiVVJMIiwiaG9zdG5hbWUiLCJlcnJvciIsInBhcnNlVmVjdG9yTWV0YWRhdGEiLCJtZXRhZGF0YSIsIm9wdGlvbiIsIl9yZWYiLCJfcmVmJHRpbGVVcmwiLCJNQVBCT1hfVVJMX1BBVFQiLCJfcGFyc2VkJGZpZWxkcyIsInBhcnNlZCIsInBhcnNlTWV0YWRhdGFUaXBwZWNhbm9lRnJvbURhdGFTb3VyY2UiLCJtaW1lVHlwZSIsInRpbGVNSU1FVHlwZSIsInBtdGlsZXNUeXBlIiwiUE1UaWxlc1R5cGUiLCJNVlQiLCJSQVNURVIiLCJmaWVsZHMiLCJ1cmwiLCJiYXNlVXJsIiwiX3BtVGlsZU1ldGFkYXRhJHRpbGVqIiwiX3BtVGlsZU1ldGFkYXRhJHRpbGVqMiIsIl90eXBlb2YyIiwiYXR0cmlidXRpb25zIiwibWV0YUpzb24iLCJtYXhab29tIiwibWluWm9vbSIsIm12dE1ldGFkYXRhIiwicG1UaWxlTWV0YWRhdGEiLCJKU09OIiwicGFyc2UiLCJlcnIiLCJib3VuZGluZ0JveCIsImZsYXQiLCJjZW50ZXJab29tIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsInNhZmVQYXJzZUZsb2F0IiwiZGVzY3JpcHRpb24iLCJ0aWxlanNvbiIsImxheWVycyIsIl9wbVRpbGVNZXRhZGF0YSR0aWxlajMiLCJwbVRpbGVzTGF5ZXJUb1RpcHBlY2Fub2VMYXllciIsImNvbGxlY3RBdHRyaWJ1dGVzIiwiaHRtbEF0dHJpYnV0aW9uIiwicGFyc2VNZXRhSnNvbiIsImlucHV0IiwiaXNOYU4iLCJ0aWxlc3RhdHMiLCJnZXRUaW1lQW5pbWF0aW9uRG9tYWluIiwibWFwcGVkVmFsdWUiLCJ0aW1lU3RlcHMiLCJ1bmlxIiwic29ydCIsImFzY2VuZGluZyIsIm5vdE51bGxPclVuZGVmaW5lZCIsImRvbWFpbiIsImR1cmF0aW9uIiwiY2xhbXBlZCIsImNsYW1wIiwicG1UaWxlVHlwZVRvQXR0ck1hcCIsImZsb2F0MzIiLCJzdHJpbmciLCJ1dGY4Iiwib3V0TGF5ZXJzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJsYXllciIsIl9yZWYyIiwiX3JlZjIkZmllbGRzIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIl9wbUZpZWxkJHZhbHVlcyIsInBtRmllbGQiLCJhdHRyaWJ1dGUiLCJjb3VudCIsInVuaXF1ZVZhbHVlQ291bnQiLCJ2YWx1ZXMiLCJtaW4iLCJtYXgiLCJhdHRyaWJ1dGVzIiwiaW5kZXhlZEF0dHJpYnV0ZXMiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwiX3JlZjMiLCJfcmVmMyRhdHRyaWJ1dGVzIiwiX2l0ZXJhdG9yNSIsIl9zdGVwNSIsImF0dHIiLCJmbmFtZSIsImF0dHJpYnV0ZVRvRmllbGQiLCJtZXJnZUF0dHJpYnV0ZURvbWFpbiIsIl9pIiwiX09iamVjdCRlbnRyaWVzIiwiZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsIl9zbGljZWRUb0FycmF5MiIsImF0dHJzIiwiX3BhcnNlSW5kZXhlZEZpZWxkIiwicGFyc2VJbmRleGVkRmllbGQiLCJpbmRleGVkRmllbGQiLCJ1bmlkZW50aWZpZWQiLCJfaXRlcmF0b3I0IiwiX3N0ZXA0IiwidW5pZGVudGlmaWVkQXR0ciIsImdldEluZGV4S2V5RnJvbUZpZWxkTmFtZSIsImZpZWxkIiwiX2l0ZXJhdG9yNiIsIl9zdGVwNiIsImZpZWxkTmFtZSIsImluZGV4S2V5IiwiYW5hbHl6ZWRUeXBlIiwiY29udGFpblZhbGlkVGltZSIsImlkIiwiaW5kZXhCeSIsImZvcm1hdCIsImFuYWx5emVyVHlwZVRvRmllbGRUeXBlIiwiZmllbGRUcyIsImVwb2NoIiwidGltZVRvVW5peE1pbGxpIiwiQUxMX0ZJRUxEX1RZUEVTIiwidGltZXN0YW1wIiwidGltZURvbWFpbiIsImNvbXBhcmUiLCJudW0xIiwibnVtMiIsIm9wZXJhdG9yIiwiTWF0aCIsIk5hTiIsImdldEZpbHRlclByb3BzIiwiZmllbGRUeXBlIiwicmVhbCIsImludGVnZXIiLCJfZ2V0QXR0cmlidXRlRG9tYWluIiwiZ2V0QXR0cmlidXRlRG9tYWluIiwiX2dldEF0dHJpYnV0ZURvbWFpbjIiLCJkaWZmIiwic3RlcCIsImdldE51bWVyaWNTdGVwU2l6ZSIsImZvcm1hdE51bWJlckJ5U3RlcCIsImZpbHRlclByb3BzIiwiRklMVEVSX1RZUEVTIiwicmFuZ2UiLCJ0eXBlT3B0aW9ucyIsImdwdSIsIm11bHRpU2VsZWN0IiwiZmllbGRUeXBlcyIsImF0dHJpYnV0ZVR5cGVUb0ZpZWxkVHlwZSIsIl9maWVsZCRtZXRhZGF0YSIsIl9maWVsZCRmaWx0ZXJQcm9wcyIsImF0dHJUeXBlTWFwIiwibnVtYmVyIiwiYW5hbHl6ZXJUeXBlIiwiREFUQV9UWVBFUyIsIkZMT0FUIiwibnVtZXJpYyIsIlNUUklORyIsInZhY2hhciIsIklOVCIsImludDQiLCJCT09MRUFOIiwiYm9vbCIsImFUeXBlIiwidG9Mb3dlckNhc2UiLCJDb25zb2xlIiwid2FybiIsIm1hdGNoRGF0YXNldFR5cGUiLCJjb25maWciLCJkYXRhSWQiLCJzdXBwb3J0ZWREYXRhc2V0VHlwZXMiLCJpbmNsdWRlcyIsImdldEZpZWxkc0Zyb21UaWxlIiwiZXhwb3J0cyIsIl9yZWY1IiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJfcmVmNCIsInJlbW90ZVRpbGVGb3JtYXQiLCJ0aWxlc2V0VXJsIiwibWV0YWRhdGFVcmwiLCJfbWV0YWRhdGEkZmllbGRzIiwiX21ldGFkYXRhJGJvdW5kcyIsImxvbiIsImxhdCIsInRpbGVJbmRpY2VzIiwidGlsZVNvdXJjZSIsInRpbGUiLCJ1cGRhdGVkRmllbGRzIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibG9uTGF0VG9UaWxlSW5kZXgiLCJSZW1vdGVUaWxlRm9ybWF0IiwiTVZUU291cmNlIiwiY3JlYXRlRGF0YVNvdXJjZSIsImRlY29kZVVSSUNvbXBvbmVudCIsIm12dCIsIlBNVGlsZXNTb3VyY2UiLCJnZXRUaWxlRGF0YSIsImluZGV4Iiwic2VudCIsInRpbGVUb0ZpZWxkcyIsInQwIiwic3RvcCIsIl94IiwiX3RpbGUkZmVhdHVyZXMiLCJmZWF0dXJlcyIsImhlYWRlciIsInByb3BlcnRpZXMiLCJvdXRwdXQiLCJvYmoiLCJjb2x1bW5OYW1lIiwiZ2V0RmllbGRzRnJvbURhdGEiLCJmb3JjZVN0cmluZyIsIkFOQUxZWkVSX0RBVEFfVFlQRVMiLCJ6b29tIiwiRXJyb3IiLCJzY2FsZSIsIngiLCJmbG9vciIsImxhdFJhZCIsIlBJIiwieSIsImxvZyIsInRhbiIsImNvcyIsInoiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGlsZXNldC92ZWN0b3ItdGlsZS11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0RBVEFfVFlQRVMgYXMgQU5BTFlaRVJfREFUQV9UWVBFU30gZnJvbSAndHlwZS1hbmFseXplcic7XG5pbXBvcnQge2FzY2VuZGluZ30gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IENvbnNvbGUgZnJvbSAnZ2xvYmFsL2NvbnNvbGUnO1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoL3VuaXEnO1xuaW1wb3J0IHtEQVRBX1RZUEVTfSBmcm9tICd0eXBlLWFuYWx5emVyJztcblxuaW1wb3J0IHtNVlRTb3VyY2UsIFRpbGVKU09OfSBmcm9tICdAbG9hZGVycy5nbC9tdnQnO1xuaW1wb3J0IHtQTVRpbGVzU291cmNlLCBQTVRpbGVzTWV0YWRhdGF9IGZyb20gJ0Bsb2FkZXJzLmdsL3BtdGlsZXMnO1xuXG5pbXBvcnQge1xuICBhbmFseXplclR5cGVUb0ZpZWxkVHlwZSxcbiAgY29udGFpblZhbGlkVGltZSxcbiAgbm90TnVsbG9yVW5kZWZpbmVkIGFzIG5vdE51bGxPclVuZGVmaW5lZCxcbiAgcGFyc2VVcmksXG4gIGdldEZpZWxkc0Zyb21EYXRhXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7XG4gIERhdGFzZXRUeXBlLFxuICBBTExfRklFTERfVFlQRVMsXG4gIEZJTFRFUl9UWVBFUyxcbiAgUE1UaWxlc1R5cGUsXG4gIFJlbW90ZVRpbGVGb3JtYXRcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5pbXBvcnQge0ZlYXR1cmUsIEZpZWxkIGFzIEtlcGxlckZpZWxkLCBLZXBsZXJMYXllcn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge2NsYW1wLCBmb3JtYXROdW1iZXJCeVN0ZXAsIGdldE51bWVyaWNTdGVwU2l6ZSwgdGltZVRvVW5peE1pbGxpfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuaW1wb3J0IHtcbiAgRmlsdGVyUHJvcHMsXG4gIE51bWVyaWNGaWVsZEZpbHRlclByb3BzLFxuICBTdHJpbmdGaWVsZEZpbHRlclByb3BzLFxuICBkZWZhdWx0IGFzIEtlcGxlckRhdGFzZXRcbn0gZnJvbSAnLi4va2VwbGVyLXRhYmxlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGlsZURhdGFzZXQoZGF0YXNldDogS2VwbGVyRGF0YXNldCB8IHt0eXBlOiBzdHJpbmd9KTogYm9vbGVhbiB7XG4gIHJldHVybiBCb29sZWFuKGRhdGFzZXQ/LnR5cGUgPT09IERhdGFzZXRUeXBlLlZFQ1RPUl9USUxFKTtcbn1cblxudHlwZSBWZWN0b3JUaWxlRmllbGQgPSB7XG4gIGFuYWx5emVyVHlwZTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIGZvcm1hdDogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIGZpbHRlclByb3BzPzogRmlsdGVyUHJvcHM7XG59O1xuXG5leHBvcnQgdHlwZSBWZWN0b3JUaWxlTWV0YWRhdGEgPSB7XG4gIGF0dHJpYnV0aW9ucz86IHVua25vd25bXTtcbiAgbWV0YUpzb246IGFueSB8IG51bGw7XG4gIGJvdW5kczogbnVtYmVyW10gfCBudWxsO1xuICBjZW50ZXI6IG51bWJlcltdIHwgbnVsbDtcbiAgbWF4Wm9vbTogbnVtYmVyIHwgbnVsbDtcbiAgbWluWm9vbTogbnVtYmVyIHwgbnVsbDtcbiAgbmFtZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGZpZWxkczogVmVjdG9yVGlsZUZpZWxkW107XG5cbiAgLy8gaWYgdGhlIHRpbGVzZXQgaXMgb2YgcG10aWxlcyBmb3JtYXQgdGhlbiBpbmNsdWRlIGluZm8gYWJvdXQgdHlwZSBvZiBwbXRpbGVzXG4gIHBtdGlsZXNUeXBlPzogUE1UaWxlc1R5cGU7XG59O1xuXG50eXBlIFRpbGVzZXRNZXRhZGF0YSA9IFZlY3RvclRpbGVNZXRhZGF0YTtcblxuZXhwb3J0IHR5cGUgVGlwcGVjYW5vZUxheWVyQXR0cmlidXRlID0ge1xuICBhdHRyaWJ1dGU/OiBzdHJpbmc7XG4gIHR5cGU/OiBzdHJpbmc7XG4gIG1pbj86IG51bWJlcjtcbiAgbWF4PzogbnVtYmVyO1xuICB2YWx1ZXM6IHN0cmluZ1tdIHwgbnVtYmVyW107XG59O1xuXG50eXBlIFRpcHBlY2Fub2VMYXllciA9IHtcbiAgYXR0cmlidXRlcz86IFRpcHBlY2Fub2VMYXllckF0dHJpYnV0ZVtdO1xufTtcbnR5cGUgVGlsZXNldEZ1bmN0aW9uID0ge1xuICBnZXRNZXRhVXJsOiAoczogc3RyaW5nKSA9PiBzdHJpbmcgfCBudWxsO1xuICBwYXJzZU1ldGFkYXRhOiAoZDogYW55LCBvcHRpb25zPzogYW55KSA9PiBUaWxlc2V0TWV0YWRhdGEgfCBudWxsO1xufTtcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXBib3gvdGlsZWpzb24tc3BlYy90cmVlL21hc3Rlci8yLjIuMFxuZnVuY3Rpb24gaXNMYXQobnVtOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShudW0pICYmIG51bSA8PSA5MCAmJiBudW0gPj0gLTkwO1xufVxuZnVuY3Rpb24gaXNMbmcobnVtOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShudW0pICYmIG51bSA8PSAxODAgJiYgbnVtID49IC0xODA7XG59XG5mdW5jdGlvbiBpc1pvb20obnVtOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShudW0pICYmIG51bSA+PSAwICYmIG51bSA8PSAyMjtcbn1cbmZ1bmN0aW9uIGZyb21BcnJheU9yU3RyaW5nKGRhdGE6IHN0cmluZyB8IG51bWJlcltdKTogbnVtYmVyW10gfCBudWxsIHtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBkYXRhLnNwbGl0KCcsJykubWFwKHBhcnNlRmxvYXQpO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gcGFyc2VDZW50ZXIoY2VudGVyOiBzdHJpbmcgfCBudW1iZXJbXSk6IG51bWJlcltdIHwgbnVsbCB7XG4gIC8vIHN1cHBvcnRlZCBmb3JtYXRzXG4gIC8vIHN0cmluZzogXCItOTYuNjU3NzE1LDQwLjEyNjEyNywtOTAuMTQwMDYxLDQzLjUxNjY4OVwiLFxuICAvLyBhcnJheTogWy05MS41MDUxMjcsNDEuNjE1NDQyLDE0XVxuICBjb25zdCByZXN1bHQgPSBmcm9tQXJyYXlPclN0cmluZyhjZW50ZXIpO1xuICBpZiAoXG4gICAgQXJyYXkuaXNBcnJheShyZXN1bHQpICYmXG4gICAgcmVzdWx0Lmxlbmd0aCA9PT0gMyAmJlxuICAgIGlzTG5nKHJlc3VsdFswXSkgJiZcbiAgICBpc0xhdChyZXN1bHRbMV0pICYmXG4gICAgaXNab29tKHJlc3VsdFsyXSlcbiAgKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBib3VuZHMgc2hvdWxkIGJlIFttaW5MbmcsIG1pbkxhdCwgbWF4TG5nLCBtYXhMYXRdXG4gKiBAcGFyYW0geyp9IGJvdW5kc1xuICovXG5mdW5jdGlvbiBwYXJzZUJvdW5kcyhib3VuZHM6IHN0cmluZyB8IG51bWJlcltdKTogbnVtYmVyW10gfCBudWxsIHtcbiAgLy8gc3VwcG9ydGVkIGZvcm1hdHNcbiAgLy8gc3RyaW5nOiBcIi05Ni42NTc3MTUsNDAuMTI2MTI3LC05MC4xNDAwNjEsNDMuNTE2Njg5XCIsXG4gIC8vIGFycmF5OiBbIC0xODAsIC04NS4wNTExMjg3Nzk4MDY1OSwgMTgwLCA4NS4wNTExMjg3Nzk4MDY2IF1cbiAgY29uc3QgcmVzdWx0ID0gZnJvbUFycmF5T3JTdHJpbmcoYm91bmRzKTtcbiAgLy8gdmFsaWRhdGUgYm91bmRzXG4gIGlmIChcbiAgICBBcnJheS5pc0FycmF5KHJlc3VsdCkgJiZcbiAgICByZXN1bHQubGVuZ3RoID09PSA0ICYmXG4gICAgW3Jlc3VsdFswXSwgcmVzdWx0WzJdXS5ldmVyeShpc0xuZykgJiZcbiAgICBbcmVzdWx0WzFdLCByZXN1bHRbM11dLmV2ZXJ5KGlzTGF0KVxuICApIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5jb25zdCBYX1BBVFQgPSAvXFx7eFxcfS87XG5jb25zdCBZX1BBVFQgPSAvXFx7eVxcfS87XG5jb25zdCBaX1BBVFQgPSAvXFx7elxcfS87XG5cbmZ1bmN0aW9uIGlzRnVsbHlRdWFsaWZpZWRUaWxlVXJsKHRpbGVVcmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gWF9QQVRULnRlc3QodGlsZVVybCkgJiYgWV9QQVRULnRlc3QodGlsZVVybCkgJiYgWl9QQVRULnRlc3QodGlsZVVybCk7XG59XG5cbi8qKlxuICogTm9ybWFsaXplIHRpbGUgVVJMXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHRpbGVVcmwgSW5pdGlhbCB0aWxlIFVSTCwgd2hpY2ggbWF5IGJlIGVpdGhlciB0aGUgcm9vdCBVUkwgZm9yIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVzZXQgb3IgYSBmdWxseSBxdWFsaWZpZWQgdGVtcGxhdGVcbiAqIEBwYXJhbSAge2Z1bmN0aW9ufSB2YWxpZGF0ZVVybCBmdW5jdGlvbiB0byB2YWxpZGF0ZSB0aWxlIFVSTFxuICogQHJldHVybiB7c3RyaW5nfG51bGx9ICAgIEZ1bGx5IHF1YWxpZmllZCB0aWxlIFVSTCB0ZW1wbGF0ZSwgb3IgbnVsbCBpZiBpbnB1dCBkb2VzIG5vdFxuICogICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVhciB0byBiZSBhIHZhbGlkIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGlsZVVybChcbiAgdGlsZVVybDogc3RyaW5nLFxuICB2YWxpZGF0ZVVybDogKHM6IHN0cmluZykgPT4gYm9vbGVhbiA9IGlzRnVsbHlRdWFsaWZpZWRUaWxlVXJsXG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgLy8gQ2hlY2sgZm9yIGEgdmFsaWQgVVJMLiBJZGVhbGx5IHdlJ2QgaGF2ZSBhIHNpbXBsZSBtZXRob2QgaGVyZS5cbiAgY29uc3QgdXJpUGFydHMgPSBwYXJzZVVyaSh0aWxlVXJsKTtcbiAgaWYgKCF1cmlQYXJ0cy5wcm90b2NvbCB8fCAhdXJpUGFydHMuaG9zdCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmICh2YWxpZGF0ZVVybCh0aWxlVXJsKSkge1xuICAgIHJldHVybiB0aWxlVXJsO1xuICB9XG4gIHJldHVybiBgJHt0aWxlVXJsLnJlcGxhY2UoL1xcLyQvLCAnJyl9L3t6fS97eH0ve3l9LnBiZmA7XG59XG5cbi8qKlxuICogTWFwIG9mIHV0aWwgZnVuY3Rpb25zIGZvciBkaWZmZXJlbnQgdGlsZXNldCB0eXBlcywga2V5ZWQgYnkgaG9zdFxuICovXG5jb25zdCBUSUxFU0VUX0ZVTkNUSU9OUzoge1trZXk6IHN0cmluZ106IFRpbGVzZXRGdW5jdGlvbn0gPSB7XG4gICdhcGkubWFwYm94LmNvbSc6IHtcbiAgICBnZXRNZXRhVXJsOiBnZXRNZXRhVXJsTWFwYm94LFxuICAgIHBhcnNlTWV0YWRhdGE6IHBhcnNlTWV0YWRhdGFUaWxlSlNPTlxuICB9LFxuICBkZWZhdWx0OiB7XG4gICAgZ2V0TWV0YVVybDogZ2V0TWV0YVVybFRpcHBlY2Fub2UsXG4gICAgcGFyc2VNZXRhZGF0YTogcGFyc2VNZXRhZGF0YVRpbGVKU09OXG4gIH1cbn07XG5cbmZ1bmN0aW9uIGdldFRpbGVzZXRGdW5jdGlvbnModGlsZVVybDogc3RyaW5nIHwgbnVsbCk6IFRpbGVzZXRGdW5jdGlvbiB7XG4gIGxldCBob3N0ID0gJyc7XG4gIHRyeSB7XG4gICAgaG9zdCA9IG5ldyBVUkwodGlsZVVybCB8fCAnJykuaG9zdG5hbWU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgLy8gZG8gbm90aGluZ1xuICB9XG5cbiAgcmV0dXJuIFRJTEVTRVRfRlVOQ1RJT05TW2hvc3RdIHx8IFRJTEVTRVRfRlVOQ1RJT05TLmRlZmF1bHQ7XG59XG5cbi8qKlxuICogR2V0IHRoZSBtZXRhZGF0YSBVUkwgZm9yIGEgZ2l2ZW4gdGlsZXNldFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWV0YVVybCh0aWxlVXJsOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgcmV0dXJuIGdldFRpbGVzZXRGdW5jdGlvbnModGlsZVVybCkuZ2V0TWV0YVVybCh0aWxlVXJsKTtcbn1cbnR5cGUgUGFyc2VNZXRhZGF0YU9wdGlvbiA9IHtcbiAgdGlsZVVybD86IHN0cmluZyB8IG51bGw7XG59O1xuLyoqXG4gKiBQYXJzZSB0aGUgbWV0YWRhdGEgZm9yIGEgZ2l2ZW4gdGlsZXNldFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VWZWN0b3JNZXRhZGF0YShcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXNcbiAgbWV0YWRhdGE6IFBNVGlsZXNNZXRhZGF0YSB8IFRpbGVKU09OLFxuICBvcHRpb24/OiBQYXJzZU1ldGFkYXRhT3B0aW9uXG4pOiBUaWxlc2V0TWV0YWRhdGEgfCBudWxsIHtcbiAgY29uc3Qge3RpbGVVcmwgPSAnJ30gPSBvcHRpb24gfHwge307XG4gIHJldHVybiBnZXRUaWxlc2V0RnVuY3Rpb25zKHRpbGVVcmwpLnBhcnNlTWV0YWRhdGEobWV0YWRhdGEpO1xufVxuXG5jb25zdCBNQVBCT1hfVVJMX1BBVFQgPSAvXFwvXFx7elxcfVxcL1xce3hcXH1cXC9cXHt5XFx9XFwubXZ0LztcblxuZnVuY3Rpb24gZ2V0TWV0YVVybE1hcGJveCh0aWxlVXJsID0gJycpOiBzdHJpbmcge1xuICByZXR1cm4gdGlsZVVybC5yZXBsYWNlKE1BUEJPWF9VUkxfUEFUVCwgJy5qc29uJyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlTWV0YWRhdGFUaWxlSlNPTihtZXRhZGF0YTogUE1UaWxlc01ldGFkYXRhIHwgVGlsZUpTT04pOiBUaWxlc2V0TWV0YWRhdGEgfCBudWxsIHtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2VNZXRhZGF0YVRpcHBlY2Fub2VGcm9tRGF0YVNvdXJjZShtZXRhZGF0YSk7XG4gIGlmICghcGFyc2VkKSByZXR1cm4gbnVsbDtcblxuICAvLyBQTVRpbGVzIGNhbiBwb3RlbnRpYWxseSBiZSBpbiBSYXN0ZXJUaWxlIGZvcm1hdFxuICBjb25zdCBtaW1lVHlwZSA9IChtZXRhZGF0YSBhcyBQTVRpbGVzTWV0YWRhdGEpLnRpbGVNSU1FVHlwZTtcbiAgaWYgKG1pbWVUeXBlKSB7XG4gICAgcGFyc2VkLnBtdGlsZXNUeXBlID1cbiAgICAgIG1pbWVUeXBlID09PSAnYXBwbGljYXRpb24vdm5kLm1hcGJveC12ZWN0b3ItdGlsZScgPyBQTVRpbGVzVHlwZS5NVlQgOiBQTVRpbGVzVHlwZS5SQVNURVI7XG4gIH1cblxuICAvLyBGaWVsZHMgYWxyZWFkeSBwYXJzZWQgZnJvbSBganNvbmAgcHJvcGVydHlcbiAgaWYgKHBhcnNlZC5maWVsZHM/Lmxlbmd0aCkge1xuICAgIHJldHVybiBwYXJzZWQ7XG4gIH1cblxuICByZXR1cm4gcGFyc2VkO1xufVxuXG5mdW5jdGlvbiBnZXRNZXRhVXJsVGlwcGVjYW5vZSh0aWxlVXJsKSB7XG4gIGNvbnN0IHVybCA9IGdldFRpbGVVcmwodGlsZVVybCk7XG4gIGlmICghdXJsKSByZXR1cm4gbnVsbDtcbiAgLy8gYXNzdW1lcyB0aGUgc3RydWN0dXJlIDx1cmxfYmFzZT4ve3p9Li4uXG4gIGNvbnN0IGJhc2VVcmwgPSB1cmwuc3BsaXQoWl9QQVRUKVswXS5yZXBsYWNlKC9cXC8kLywgJycpO1xuICByZXR1cm4gYCR7YmFzZVVybH0vbWV0YWRhdGEuanNvbmA7XG59XG5cbi8qKlxuICogU3BlY2lhbCBwYXJzaW5nIGZvciBtZXRhZGF0YSByZXR1cm5lZCBieSBNVlRTb3VyY2UgYW5kIFBNVGlsZXNTb3VyY2UuXG4gKiBAcGFyYW0gbWV0YWRhdGEgVGlsZXNldCBtZXRhZGF0YSBwYXJzZWQgYnkgYSBEYXRhU291Y2VcbiAqIEByZXR1cm5zIE1ldGFkYXRhIGluIEtlcGxlci1mcmllbmRseSBmb3JtYXQuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlTWV0YWRhdGFUaXBwZWNhbm9lRnJvbURhdGFTb3VyY2UoXG4gIG1ldGFkYXRhOiBQTVRpbGVzTWV0YWRhdGEgfCBUaWxlSlNPTiB8IG51bGxcbik6IFRpbGVzZXRNZXRhZGF0YSB8IG51bGwge1xuICBpZiAoIW1ldGFkYXRhIHx8IHR5cGVvZiBtZXRhZGF0YSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGxldCByZXN1bHQ6IFRpbGVzZXRNZXRhZGF0YSA9IHtcbiAgICBhdHRyaWJ1dGlvbnM6IFtdLFxuICAgIG1ldGFKc29uOiBudWxsLFxuICAgIGJvdW5kczogbnVsbCxcbiAgICBjZW50ZXI6IG51bGwsXG4gICAgbWF4Wm9vbTogbnVsbCxcbiAgICBtaW5ab29tOiBudWxsLFxuICAgIGZpZWxkczogW11cbiAgfTtcblxuICBjb25zdCBtdnRNZXRhZGF0YSA9IG1ldGFkYXRhIGFzIFRpbGVKU09OO1xuICBjb25zdCBwbVRpbGVNZXRhZGF0YSA9IG1ldGFkYXRhIGFzIFBNVGlsZXNNZXRhZGF0YTtcblxuICAvLyB0cnkgdG8gcGFyc2UgbWV0YUpzb25cbiAgaWYgKHR5cGVvZiBtdnRNZXRhZGF0YS5tZXRhSnNvbiA9PT0gJ3N0cmluZycpIHtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0Lm1ldGFKc29uID0gSlNPTi5wYXJzZShtdnRNZXRhZGF0YS5tZXRhSnNvbik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBkbyBub3RoaW5nXG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiBtdnRNZXRhZGF0YS5tZXRhSnNvbiA9PT0gJ29iamVjdCcpIHtcbiAgICByZXN1bHQubWV0YUpzb24gPSBtdnRNZXRhZGF0YS5tZXRhSnNvbjtcbiAgfVxuXG4gIHJlc3VsdC5ib3VuZHMgPSBwYXJzZUJvdW5kcyhcbiAgICBBcnJheS5pc0FycmF5KG1ldGFkYXRhLmJvdW5kaW5nQm94KSA/IG1ldGFkYXRhLmJvdW5kaW5nQm94LmZsYXQoKSA6ICcnXG4gICk7XG5cbiAgLy8gUE1UaWxlU291cmNlIGhhcyBjZW50ZXJab29tIGFuZCBjZW50ZXIgW2xvbiwgbGF0XSwgTVZUU291cmNlIC0gW2xvbiwgbGF0LCB6b29tXVxuICBjb25zdCBjZW50ZXIgPVxuICAgIHBtVGlsZU1ldGFkYXRhLmNlbnRlclpvb20gIT09IHVuZGVmaW5lZCAmJiBBcnJheS5pc0FycmF5KG1ldGFkYXRhLmNlbnRlcilcbiAgICAgID8gWy4uLm1ldGFkYXRhLmNlbnRlciwgcG1UaWxlTWV0YWRhdGEuY2VudGVyWm9vbV1cbiAgICAgIDogbWV0YWRhdGEuY2VudGVyO1xuICByZXN1bHQuY2VudGVyID0gcGFyc2VDZW50ZXIoY2VudGVyIHx8ICcnKTtcblxuICByZXN1bHQubWF4Wm9vbSA9IHNhZmVQYXJzZUZsb2F0KG1ldGFkYXRhLm1heFpvb20pO1xuICByZXN1bHQubWluWm9vbSA9IHNhZmVQYXJzZUZsb2F0KG1ldGFkYXRhLm1pblpvb20pO1xuICByZXN1bHQubmFtZSA9IG1ldGFkYXRhLm5hbWUgfHwgJyc7XG4gIHJlc3VsdC5kZXNjcmlwdGlvbiA9IG12dE1ldGFkYXRhLmRlc2NyaXB0aW9uIHx8IHBtVGlsZU1ldGFkYXRhLnRpbGVqc29uPy5kZXNjcmlwdGlvbiB8fCAnJztcblxuICBpZiAoQXJyYXkuaXNBcnJheShwbVRpbGVNZXRhZGF0YS50aWxlanNvbj8ubGF5ZXJzKSkge1xuICAgIGNvbnN0IGxheWVycyA9IHBtVGlsZXNMYXllclRvVGlwcGVjYW5vZUxheWVyKHBtVGlsZU1ldGFkYXRhLnRpbGVqc29uPy5sYXllcnMpO1xuICAgIHJlc3VsdC5maWVsZHMgPSBjb2xsZWN0QXR0cmlidXRlcyhsYXllcnMpO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobXZ0TWV0YWRhdGEubGF5ZXJzKSkge1xuICAgIGNvbnN0IGxheWVycyA9IHBtVGlsZXNMYXllclRvVGlwcGVjYW5vZUxheWVyKG12dE1ldGFkYXRhLmxheWVycyk7XG4gICAgcmVzdWx0LmZpZWxkcyA9IGNvbGxlY3RBdHRyaWJ1dGVzKGxheWVycyk7XG4gIH1cblxuICByZXN1bHQgPSB7XG4gICAgLi4ucmVzdWx0LFxuICAgIGF0dHJpYnV0aW9uczpcbiAgICAgIHBtVGlsZU1ldGFkYXRhLmF0dHJpYnV0aW9ucyB8fFxuICAgICAgKG12dE1ldGFkYXRhLmh0bWxBdHRyaWJ1dGlvbiA/IFttdnRNZXRhZGF0YS5odG1sQXR0cmlidXRpb25dIDogdW5kZWZpbmVkKSB8fFxuICAgICAgW10sXG4gICAgLi4ucGFyc2VNZXRhSnNvbihyZXN1bHQubWV0YUpzb24pXG4gIH07XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gc2FmZVBhcnNlRmxvYXQoaW5wdXQ6IHVua25vd24pOiBudW1iZXIgfCBudWxsIHtcbiAgY29uc3QgcmVzdWx0ID1cbiAgICB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnID8gcGFyc2VGbG9hdChpbnB1dCkgOiB0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInID8gaW5wdXQgOiBudWxsO1xuICByZXR1cm4gcmVzdWx0ID09PSBudWxsIHx8IGlzTmFOKHJlc3VsdCkgPyBudWxsIDogcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBwYXJzZU1ldGFKc29uKG1ldGFKc29uOiBhbnkpOiB7ZmllbGRzOiBWZWN0b3JUaWxlRmllbGRbXX0gfCBudWxsIHtcbiAgaWYgKCFtZXRhSnNvbiB8fCB0eXBlb2YgbWV0YUpzb24gIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAobWV0YUpzb24udGlsZXN0YXRzICYmIEFycmF5LmlzQXJyYXkobWV0YUpzb24udGlsZXN0YXRzLmxheWVycykpIHtcbiAgICAvLyB3ZSBhcmUgaW4gbHVjayFcbiAgICByZXR1cm4ge2ZpZWxkczogY29sbGVjdEF0dHJpYnV0ZXMobWV0YUpzb24udGlsZXN0YXRzLmxheWVycyl9O1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBnZXRUaW1lQW5pbWF0aW9uRG9tYWluKG1hcHBlZFZhbHVlOiBudW1iZXJbXSk6IHtcbiAgZG9tYWluOiBudW1iZXJbXTtcbiAgdGltZVN0ZXBzOiBudW1iZXJbXTtcbiAgbWFwcGVkVmFsdWU6IG51bWJlcltdO1xuICBkdXJhdGlvbjogbnVtYmVyO1xufSB7XG4gIGNvbnN0IHRpbWVTdGVwcyA9IHVuaXEobWFwcGVkVmFsdWUpLnNvcnQoYXNjZW5kaW5nKS5maWx0ZXIobm90TnVsbE9yVW5kZWZpbmVkKTtcblxuICBjb25zdCBkb21haW4gPSBbdGltZVN0ZXBzWzBdLCB0aW1lU3RlcHNbdGltZVN0ZXBzLmxlbmd0aCAtIDFdXTtcblxuICAvLyBpZiB0YWtzIDEwICogMTAwMCBtcyB0byBmaW5pc2ggdGhlIGVudGlyZSBhbmltYXRpb25cbiAgY29uc3QgZHVyYXRpb24gPSAxMDAwMCAvIHRpbWVTdGVwcy5sZW5ndGg7XG4gIGNvbnN0IGNsYW1wZWQgPSBjbGFtcChbMTAwLCAyMDAwXSwgZHVyYXRpb24pO1xuXG4gIHJldHVybiB7ZG9tYWluLCB0aW1lU3RlcHMsIGR1cmF0aW9uOiBjbGFtcGVkLCBtYXBwZWRWYWx1ZX07XG59XG5cbmNvbnN0IHBtVGlsZVR5cGVUb0F0dHJNYXAgPSB7XG4gIGZsb2F0MzI6ICdudW1iZXInLFxuICBzdHJpbmc6ICdzdHJpbmcnLFxuICB1dGY4OiAnc3RyaW5nJyxcbiAgaW50OiAnaW50JyxcbiAgYm9vbGVhbjogJ2Jvb2xlYW4nXG59O1xuXG4vKipcbiAqIFRyYW5zZm9ybSBUaWxlSlNPTlsnbGF5ZXJzJ10gYmFjayB0byBUaXBwZWNhbm9lTGF5ZXJcbiAqL1xuZnVuY3Rpb24gcG1UaWxlc0xheWVyVG9UaXBwZWNhbm9lTGF5ZXIobGF5ZXJzOiBUaWxlSlNPTlsnbGF5ZXJzJ10pOiBUaXBwZWNhbm9lTGF5ZXJbXSB7XG4gIGlmICghbGF5ZXJzKSByZXR1cm4gW107XG5cbiAgY29uc3Qgb3V0TGF5ZXJzOiBUaXBwZWNhbm9lTGF5ZXJbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGxheWVyIG9mIGxheWVycykge1xuICAgIGNvbnN0IHtmaWVsZHMgPSBbXX0gPSBsYXllciB8fCB7fTtcbiAgICBmb3IgKGNvbnN0IHBtRmllbGQgb2YgZmllbGRzKSB7XG4gICAgICBjb25zdCBhdHRyaWJ1dGUgPSB7XG4gICAgICAgIGF0dHJpYnV0ZTogcG1GaWVsZC5uYW1lLFxuICAgICAgICB0eXBlOiBwbVRpbGVUeXBlVG9BdHRyTWFwW3BtRmllbGQudHlwZV0sXG4gICAgICAgIGNvdW50OiBwbUZpZWxkLnVuaXF1ZVZhbHVlQ291bnQsXG4gICAgICAgIHZhbHVlczogKHBtRmllbGQudmFsdWVzID8/IFtdKSBhcyBudW1iZXJbXSB8IHN0cmluZ1tdLFxuICAgICAgICBtaW46IHBtRmllbGQubWluLFxuICAgICAgICBtYXg6IHBtRmllbGQubWF4XG4gICAgICB9O1xuXG4gICAgICBvdXRMYXllcnMucHVzaCh7XG4gICAgICAgIGF0dHJpYnV0ZXM6IFthdHRyaWJ1dGVdXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dExheWVycztcbn1cblxuZnVuY3Rpb24gY29sbGVjdEF0dHJpYnV0ZXMobGF5ZXJzOiBUaXBwZWNhbm9lTGF5ZXJbXSA9IFtdKTogVmVjdG9yVGlsZUZpZWxkW10ge1xuICBjb25zdCBmaWVsZHMgPSB7fTtcbiAgY29uc3QgaW5kZXhlZEF0dHJpYnV0ZXM6IHtba2V5OiBzdHJpbmddOiBUaXBwZWNhbm9lTGF5ZXJBdHRyaWJ1dGVbXX0gPSB7fTtcblxuICBmb3IgKGNvbnN0IGxheWVyIG9mIGxheWVycykge1xuICAgIGNvbnN0IHthdHRyaWJ1dGVzID0gW119ID0gbGF5ZXIgfHwge307XG4gICAgZm9yIChjb25zdCBhdHRyIG9mIGF0dHJpYnV0ZXMpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBhdHRyLmF0dHJpYnV0ZTtcbiAgICAgIGlmICh0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1kZXB0aFxuICAgICAgICBpZiAobmFtZS5zcGxpdCgnfCcpLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAvLyBpbmRleGVkIGZpZWxkXG4gICAgICAgICAgY29uc3QgZm5hbWUgPSBuYW1lLnNwbGl0KCd8JylbMF07XG4gICAgICAgICAgaW5kZXhlZEF0dHJpYnV0ZXNbZm5hbWVdID0gaW5kZXhlZEF0dHJpYnV0ZXNbZm5hbWVdIHx8IFtdO1xuICAgICAgICAgIGluZGV4ZWRBdHRyaWJ1dGVzW2ZuYW1lXS5wdXNoKGF0dHIpO1xuICAgICAgICB9IGVsc2UgaWYgKCFmaWVsZHNbbmFtZV0pIHtcbiAgICAgICAgICBmaWVsZHNbbmFtZV0gPSBhdHRyaWJ1dGVUb0ZpZWxkKGF0dHIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1lcmdlQXR0cmlidXRlRG9tYWluKGZpZWxkc1tuYW1lXSwgYXR0cik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBwYXJzZSBpbmRleGVkIGF0dHJpYnV0ZSwgYW5kIHB1dCBpbmRleCBrZXkgdW5pZGVudGlmaWVkIGJhY2sgYXMgbm9ybWFsIGZpZWxkXG4gIGZvciAoY29uc3QgW25hbWUsIGF0dHJzXSBvZiBPYmplY3QuZW50cmllcyhpbmRleGVkQXR0cmlidXRlcykpIHtcbiAgICBjb25zdCB7aW5kZXhlZEZpZWxkLCB1bmlkZW50aWZpZWR9ID0gcGFyc2VJbmRleGVkRmllbGQobmFtZSwgYXR0cnMpO1xuICAgIGZpZWxkc1tpbmRleGVkRmllbGQubmFtZV0gPSBpbmRleGVkRmllbGQ7XG4gICAgZm9yIChjb25zdCB1bmlkZW50aWZpZWRBdHRyIG9mIHVuaWRlbnRpZmllZCkge1xuICAgICAgaWYgKHVuaWRlbnRpZmllZEF0dHIuYXR0cmlidXRlKSB7XG4gICAgICAgIGZpZWxkc1t1bmlkZW50aWZpZWRBdHRyLmF0dHJpYnV0ZV0gPVxuICAgICAgICAgIGZpZWxkc1t1bmlkZW50aWZpZWRBdHRyLmF0dHJpYnV0ZV0gfHwgYXR0cmlidXRlVG9GaWVsZCh1bmlkZW50aWZpZWRBdHRyKTtcbiAgICAgICAgbWVyZ2VBdHRyaWJ1dGVEb21haW4oZmllbGRzW3VuaWRlbnRpZmllZEF0dHIuYXR0cmlidXRlXSwgdW5pZGVudGlmaWVkQXR0cik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZmllbGRzKTtcbn1cblxuZnVuY3Rpb24gZ2V0SW5kZXhLZXlGcm9tRmllbGROYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICByZXR1cm4gbmFtZSAmJiBuYW1lLnNwbGl0KCd8JykubGVuZ3RoID4gMSA/IG5hbWUuc3BsaXQoJ3wnKVsxXSA6IG51bGw7XG59XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5kZXhCeSA9IHtcbiAgZm9ybWF0OiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgbWFwcGVkVmFsdWU6IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG59O1xuXG5mdW5jdGlvbiBwYXJzZUluZGV4ZWRGaWVsZChcbiAgbmFtZTogc3RyaW5nLFxuICBhdHRyczogVGlwcGVjYW5vZUxheWVyQXR0cmlidXRlW11cbik6IHtcbiAgdW5pZGVudGlmaWVkOiBUaXBwZWNhbm9lTGF5ZXJBdHRyaWJ1dGVbXTtcbiAgaW5kZXhlZEZpZWxkOiBWZWN0b3JUaWxlRmllbGQ7XG59IHtcbiAgY29uc3QgdW5pZGVudGlmaWVkOiBUaXBwZWNhbm9lTGF5ZXJBdHRyaWJ1dGVbXSA9IFtdO1xuICAvLyBhbmFseXplIHRpbWUgZm9ybWF0XG4gIGxldCBmaWVsZDtcblxuICBmb3IgKGNvbnN0IGF0dHIgb2YgYXR0cnMpIHtcbiAgICBjb25zdCBmaWVsZE5hbWUgPSBhdHRyLmF0dHJpYnV0ZTtcbiAgICBjb25zdCBpbmRleEtleSA9IGdldEluZGV4S2V5RnJvbUZpZWxkTmFtZShmaWVsZE5hbWUgfHwgJycpO1xuICAgIGNvbnN0IGFuYWx5emVkVHlwZSA9IGluZGV4S2V5ICYmIGNvbnRhaW5WYWxpZFRpbWUoW2luZGV4S2V5XSk7XG4gICAgaWYgKGFuYWx5emVkVHlwZSkge1xuICAgICAgZmllbGQgPSBmaWVsZCB8fCB7XG4gICAgICAgIC4uLmF0dHJpYnV0ZVRvRmllbGQoYXR0ciksXG4gICAgICAgIC8vIG92ZXJpZGUgbmFtZSBhbmQgaWQgdG8gdHJ1bmNhdGVkIG5hbWVcbiAgICAgICAgbmFtZSxcbiAgICAgICAgaWQ6IG5hbWUsXG4gICAgICAgIGluZGV4Qnk6IHtcbiAgICAgICAgICBmb3JtYXQ6IGFuYWx5emVkVHlwZS5mb3JtYXQsXG4gICAgICAgICAgdHlwZTogYW5hbHl6ZXJUeXBlVG9GaWVsZFR5cGUoYW5hbHl6ZWRUeXBlLnR5cGUpLFxuICAgICAgICAgIG1hcHBlZFZhbHVlOiB7fVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgbWVyZ2VBdHRyaWJ1dGVEb21haW4oZmllbGQsIGF0dHIpO1xuICAgICAgLy8gc2F2ZSBlcG9jaCB0aW1lIGluIG1hcHBlZFZhbHVlXG4gICAgICBsZXQgZmllbGRUczogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCA9IGluZGV4S2V5O1xuICAgICAgaWYgKGFuYWx5emVkVHlwZS5mb3JtYXQgPT09ICd4JyB8fCBhbmFseXplZFR5cGUuZm9ybWF0ID09PSAnWCcpIHtcbiAgICAgICAgZmllbGRUcyA9IE51bWJlcihpbmRleEtleSk7XG4gICAgICB9XG4gICAgICBjb25zdCBlcG9jaCA9IHRpbWVUb1VuaXhNaWxsaShmaWVsZFRzLCBhbmFseXplZFR5cGUuZm9ybWF0KTtcbiAgICAgIGlmIChlcG9jaCkge1xuICAgICAgICBmaWVsZC5pbmRleEJ5Lm1hcHBlZFZhbHVlW2Vwb2NoXSA9IGZpZWxkTmFtZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8ga2V5IGlzIG5vdCB2YWxpZCB0aW1lc3RhbXBcbiAgICAgIHVuaWRlbnRpZmllZC5wdXNoKGF0dHIpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChmaWVsZC5pbmRleEJ5ICYmIGZpZWxkLmluZGV4QnkudHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcCkge1xuICAgIGZpZWxkLmluZGV4QnkudGltZURvbWFpbiA9IGdldFRpbWVBbmltYXRpb25Eb21haW4oXG4gICAgICBPYmplY3Qua2V5cyhmaWVsZC5pbmRleEJ5Lm1hcHBlZFZhbHVlKS5tYXAoTnVtYmVyKVxuICAgICk7XG4gIH1cblxuICByZXR1cm4ge3VuaWRlbnRpZmllZCwgaW5kZXhlZEZpZWxkOiBmaWVsZH07XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmUobnVtMTogbnVtYmVyIHwgdW5kZWZpbmVkLCBudW0yOiBudW1iZXIgfCB1bmRlZmluZWQsIG9wZXJhdG9yOiBzdHJpbmcpOiBudW1iZXIge1xuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKG51bTEpICYmIE51bWJlci5pc0Zpbml0ZShudW0yKVxuICAgID8gTWF0aFtvcGVyYXRvcl0obnVtMSBhcyBudW1iZXIsIG51bTIgYXMgbnVtYmVyKVxuICAgIDogTnVtYmVyLmlzRmluaXRlKG51bTEpXG4gICAgPyAobnVtMSBhcyBudW1iZXIpXG4gICAgOiBOdW1iZXIuaXNGaW5pdGUobnVtMilcbiAgICA/IChudW0yIGFzIG51bWJlcilcbiAgICA6IE5hTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlclByb3BzKFxuICBmaWVsZFR5cGU6IHN0cmluZyxcbiAgYXR0cmlidXRlOiBUaXBwZWNhbm9lTGF5ZXJBdHRyaWJ1dGVcbik6IEZpbHRlclByb3BzIHtcbiAgc3dpdGNoIChmaWVsZFR5cGUpIHtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5yZWFsOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmludGVnZXI6IHtcbiAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBnZXRBdHRyaWJ1dGVEb21haW4oZmllbGRUeXBlLCBhdHRyaWJ1dGUpO1xuICAgICAgY29uc3QgZGlmZiA9IG1heCAtIG1pbjtcbiAgICAgIGNvbnN0IHN0ZXAgPSBnZXROdW1lcmljU3RlcFNpemUoZGlmZikgfHwgMC4xO1xuICAgICAgY29uc3QgZG9tYWluID0gW1xuICAgICAgICBmb3JtYXROdW1iZXJCeVN0ZXAobWluLCBzdGVwLCAnZmxvb3InKSxcbiAgICAgICAgZm9ybWF0TnVtYmVyQnlTdGVwKG1heCwgc3RlcCwgJ2NlaWwnKVxuICAgICAgXTtcbiAgICAgIGNvbnN0IGZpbHRlclByb3BzOiBOdW1lcmljRmllbGRGaWx0ZXJQcm9wcyA9IHtcbiAgICAgICAgZG9tYWluLFxuICAgICAgICB2YWx1ZTogZG9tYWluIGFzIFtudW1iZXIsIG51bWJlcl0sXG4gICAgICAgIHR5cGU6IEZJTFRFUl9UWVBFUy5yYW5nZSxcbiAgICAgICAgdHlwZU9wdGlvbnM6IFtGSUxURVJfVFlQRVMucmFuZ2VdLFxuICAgICAgICBncHU6IHRydWUsXG4gICAgICAgIHN0ZXBcbiAgICAgIH07XG4gICAgICByZXR1cm4gZmlsdGVyUHJvcHM7XG4gICAgfVxuXG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuYm9vbGVhbjoge1xuICAgICAgLy8gUmVwcmVzZW50IGJvb2xlYW4gYXMgbnVtZXJpYyByYW5nZSBbMCwxXSB0byBlbmFibGUgR1BVIGZpbHRlcmluZyBmb3IgdmVjdG9yIHRpbGVzXG4gICAgICBjb25zdCBkb21haW46IFtudW1iZXIsIG51bWJlcl0gPSBbMCwgMV07XG4gICAgICBjb25zdCBmaWx0ZXJQcm9wczogTnVtZXJpY0ZpZWxkRmlsdGVyUHJvcHMgPSB7XG4gICAgICAgIGRvbWFpbixcbiAgICAgICAgdmFsdWU6IGRvbWFpbixcbiAgICAgICAgdHlwZTogRklMVEVSX1RZUEVTLnJhbmdlLFxuICAgICAgICB0eXBlT3B0aW9uczogW0ZJTFRFUl9UWVBFUy5yYW5nZV0sXG4gICAgICAgIGdwdTogdHJ1ZSxcbiAgICAgICAgc3RlcDogMVxuICAgICAgfTtcbiAgICAgIHJldHVybiBmaWx0ZXJQcm9wcztcbiAgICB9XG5cbiAgICBkZWZhdWx0OiB7XG4gICAgICAvLyBBc3N1bWUgc3RyaW5nIGZvciBhbGwgb3RoZXIgZmllbGRzXG4gICAgICBjb25zdCBmaWx0ZXJQcm9wczogU3RyaW5nRmllbGRGaWx0ZXJQcm9wcyA9IHtcbiAgICAgICAgZG9tYWluOiBhdHRyaWJ1dGUudmFsdWVzIGFzIHN0cmluZ1tdLFxuICAgICAgICB2YWx1ZTogYXR0cmlidXRlLnZhbHVlcyBhcyBzdHJpbmdbXSxcbiAgICAgICAgdHlwZTogRklMVEVSX1RZUEVTLm11bHRpU2VsZWN0LFxuICAgICAgICBncHU6IGZhbHNlXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGZpbHRlclByb3BzO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhdHRyaWJ1dGVUb0ZpZWxkKGF0dHJpYnV0ZTogVGlwcGVjYW5vZUxheWVyQXR0cmlidXRlID0ge3ZhbHVlczogW119KTogVmVjdG9yVGlsZUZpZWxkIHtcbiAgLy8gYXR0cmlidXRlOiBcIl9zZWFzb25fcGVha3NfY29sb3JcIlxuICAvLyBjb3VudDogMTAwMFxuICAvLyBtYXg6IDAuOTVcbiAgLy8gbWluOiAwLjI0Mzc1XG4gIC8vIHR5cGU6IFwibnVtYmVyXCJcbiAgY29uc3QgZmllbGRUeXBlcyA9IGF0dHJpYnV0ZVR5cGVUb0ZpZWxkVHlwZShhdHRyaWJ1dGUudHlwZSk7XG4gIHJldHVybiB7XG4gICAgbmFtZTogYXR0cmlidXRlLmF0dHJpYnV0ZSBhcyBzdHJpbmcsXG4gICAgaWQ6IGF0dHJpYnV0ZS5hdHRyaWJ1dGUgYXMgc3RyaW5nLFxuICAgIGZvcm1hdDogJycsXG4gICAgZmlsdGVyUHJvcHM6IGdldEZpbHRlclByb3BzKGZpZWxkVHlwZXMudHlwZSwgYXR0cmlidXRlKSxcbiAgICAuLi5maWVsZFR5cGVzXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldEF0dHJpYnV0ZURvbWFpbih0eXBlOiBzdHJpbmcgfCBudWxsLCBhdHRyaWJ1dGU6IFRpcHBlY2Fub2VMYXllckF0dHJpYnV0ZSk6IG51bWJlcltdIHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMucmVhbDpcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgTnVtYmVyLmlzRmluaXRlKGF0dHJpYnV0ZS5taW4pID8gKGF0dHJpYnV0ZS5taW4gYXMgbnVtYmVyKSA6IE5hTixcbiAgICAgICAgTnVtYmVyLmlzRmluaXRlKGF0dHJpYnV0ZS5tYXgpID8gKGF0dHJpYnV0ZS5tYXggYXMgbnVtYmVyKSA6IE5hTlxuICAgICAgXTtcblxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmJvb2xlYW46XG4gICAgICByZXR1cm4gWzAsIDFdO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gWzAsIDFdO1xuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIGZpZWxkIFRoaXMgZnVuY3Rpb24gbXV0YXRlcyB0aGUgZmllbGQgcGFyYW1ldGVyXG4gKi9cbmZ1bmN0aW9uIG1lcmdlQXR0cmlidXRlRG9tYWluKGZpZWxkOiBLZXBsZXJGaWVsZCwgYXR0cmlidXRlOiBUaXBwZWNhbm9lTGF5ZXJBdHRyaWJ1dGUpOiB2b2lkIHtcbiAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMucmVhbDpcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOiB7XG4gICAgICBjb25zdCBkb21haW4gPSBmaWVsZC5tZXRhZGF0YT8uZG9tYWluIHx8IGZpZWxkLmZpbHRlclByb3BzPy5kb21haW47XG4gICAgICBpZiAoZG9tYWluKSB7XG4gICAgICAgIGRvbWFpbi5taW4gPSBjb21wYXJlKGF0dHJpYnV0ZS5taW4sIGRvbWFpblswXSwgJ21pbicpO1xuICAgICAgICBkb21haW4ubWF4ID0gY29tcGFyZShhdHRyaWJ1dGUubWF4LCBkb21haW5bMV0sICdtYXgnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybjtcbiAgfVxufVxuXG4vLyBwb3NzaWJsZSB0eXBlcyBodHRwczovL2dpdGh1Yi5jb20vbWFwYm94L3RpcHBlY2Fub2UjbW9kaWZ5aW5nLWZlYXR1cmUtYXR0cmlidXRlc1xuY29uc3QgYXR0clR5cGVNYXAgPSB7XG4gIG51bWJlcjoge1xuICAgIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5yZWFsLFxuICAgIGFuYWx5emVyVHlwZTogREFUQV9UWVBFUy5GTE9BVFxuICB9LFxuICBudW1lcmljOiB7XG4gICAgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnJlYWwsXG4gICAgYW5hbHl6ZXJUeXBlOiBEQVRBX1RZUEVTLkZMT0FUXG4gIH0sXG4gIHN0cmluZzoge1xuICAgIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcsXG4gICAgYW5hbHl6ZXJUeXBlOiBEQVRBX1RZUEVTLlNUUklOR1xuICB9LFxuICB2YWNoYXI6IHtcbiAgICB0eXBlOiBBTExfRklFTERfVFlQRVMuc3RyaW5nLFxuICAgIGFuYWx5emVyVHlwZTogREFUQV9UWVBFUy5TVFJJTkdcbiAgfSxcbiAgZmxvYXQ6IHtcbiAgICB0eXBlOiBBTExfRklFTERfVFlQRVMucmVhbCxcbiAgICBhbmFseXplclR5cGU6IERBVEFfVFlQRVMuRkxPQVRcbiAgfSxcbiAgaW50OiB7XG4gICAgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLmludGVnZXIsXG4gICAgYW5hbHl6ZXJUeXBlOiBEQVRBX1RZUEVTLklOVFxuICB9LFxuICBpbnQ0OiB7XG4gICAgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLmludGVnZXIsXG4gICAgYW5hbHl6ZXJUeXBlOiBEQVRBX1RZUEVTLklOVFxuICB9LFxuICBib29sZWFuOiB7XG4gICAgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLmJvb2xlYW4sXG4gICAgYW5hbHl6ZXJUeXBlOiBEQVRBX1RZUEVTLkJPT0xFQU5cbiAgfSxcbiAgYm9vbDoge1xuICAgIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5ib29sZWFuLFxuICAgIGFuYWx5emVyVHlwZTogREFUQV9UWVBFUy5CT09MRUFOXG4gIH1cbn07XG5cbmZ1bmN0aW9uIGF0dHJpYnV0ZVR5cGVUb0ZpZWxkVHlwZShhVHlwZT86IHN0cmluZyk6IHt0eXBlOiBzdHJpbmc7IGFuYWx5emVyVHlwZTogc3RyaW5nfSB7XG4gIGNvbnN0IHR5cGUgPSBhVHlwZT8udG9Mb3dlckNhc2UoKTtcbiAgaWYgKCF0eXBlIHx8ICFhdHRyVHlwZU1hcFt0eXBlXSkge1xuICAgIENvbnNvbGUud2FybihcbiAgICAgIGBjYW5ub3QgY29udmVydCBhdHRyaWJ1dGUgdHlwZSAke3R5cGV9IHRvIGtlcGxlci5nbCBkYXRhIHR5cGUsIHVzZSBzdHJpbmcgYnkgZGVmYXVsdGBcbiAgICApO1xuICAgIHJldHVybiBhdHRyVHlwZU1hcC5zdHJpbmc7XG4gIH1cblxuICByZXR1cm4gYXR0clR5cGVNYXBbdHlwZV07XG59XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIGEgZGF0YXNldCBjYW4gYmUgdXNlZCBhcyBzb3VyY2UgZGF0YSBmb3IgYSBsYXllci5cbiAqIEBwYXJhbSBkYXRhc2V0IEEgZGF0YXNldC5cbiAqIEBwYXJhbSBsYXllciBBIGxheWVyLlxuICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIGEgZGF0YXNldCBjYW4gYmUgdXNlZCBhcyBzb3VyY2UgZGF0YSBmb3IgYSBsYXllci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoRGF0YXNldFR5cGUoZGF0YXNldDogS2VwbGVyRGF0YXNldCwgbGF5ZXI6IEtlcGxlckxheWVyKTogYm9vbGVhbiB7XG4gIC8vIGFsbG93IHNlbGVjdGlvbiBpZiB0eXBlIGlzIG5vdCBhc3NpZ25lZCB5ZXRcbiAgaWYgKCFsYXllci50eXBlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8gYWxsb3cgc2VsZWN0aW9uIGlmIGlzIGN1cnJlbnQgc2VsZWN0ZWQgZGF0YXNldFxuICBpZiAobGF5ZXIuY29uZmlnLmRhdGFJZCA9PT0gZGF0YXNldC5pZCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIC8vIGFsbG93IHNlbGVjdGlvbiBpZiBsYXllciBkb2Vzbid0IGhhdmUgc3VwcG9ydGVkRGF0YXNldFR5cGVzXG4gIGlmICghbGF5ZXIuc3VwcG9ydGVkRGF0YXNldFR5cGVzKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIEFycmF5LmlzQXJyYXkobGF5ZXIuc3VwcG9ydGVkRGF0YXNldFR5cGVzKSAmJlxuICAgIGxheWVyLnN1cHBvcnRlZERhdGFzZXRUeXBlcy5pbmNsdWRlcyhkYXRhc2V0LnR5cGUgfHwgJycpXG4gICk7XG59XG5cbnR5cGUgR2V0RmllbGRzRnJvbVRpbGVQcm9wcyA9IHtcbiAgcmVtb3RlVGlsZUZvcm1hdDogUmVtb3RlVGlsZUZvcm1hdDtcbiAgdGlsZXNldFVybDogc3RyaW5nIHwgbnVsbDtcbiAgbWV0YWRhdGFVcmw6IHN0cmluZyB8IG51bGw7XG4gIG1ldGFkYXRhOiBWZWN0b3JUaWxlTWV0YWRhdGEgfCBudWxsO1xufTtcblxuLyoqXG4gKiBFeHRyYWN0cyBmaWVsZHMgZnJvbSBhIHRpbGUgYW5kIHVwZGF0ZXMgdGhlIG1ldGFkYXRhIG9iamVjdCB3aXRoIGZvdW5kIGZpZWxkcy5cbiAqIE5vdGU6IHRoaXMgZnVuY3Rpb24gaXMgZm9yIHRpbGVzZXRzIHRoYXQgZG9uJ3QgaW5jbHVkZSBmaWVsZHMgaW4gbWV0YWRhdGEgKG1vc3QgbGlrZWx5IHNhdmVkIHdpdGggb2xkZXIgc3BlYy4pLlxuICogQHBhcmFtIHBhcmFtcy5yZW1vdGVUaWxlRm9ybWF0IFRoZSBmb3JtYXQgb2YgdGhlIHJlbW90ZSB0aWxlIChNVlQgb3IgUE1UaWxlcykuXG4gKiBAcGFyYW0gcGFyYW1zLnRpbGVzZXRVcmwgVGhlIFVSTCBvZiB0aGUgdGlsZXNldC5cbiAqIEBwYXJhbSBwYXJhbXMubWV0YWRhdGFVcmwgVGhlIFVSTCBvZiB0aGUgbWV0YWRhdGEuXG4gKiBAcGFyYW0gcGFyYW1zLm1ldGFkYXRhIFRoZSBtZXRhZGF0YSBvYmplY3QgY29udGFpbmluZyBmaWVsZHMgYW5kIHRpbGUgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEZpZWxkc0Zyb21UaWxlID0gYXN5bmMgKHtcbiAgcmVtb3RlVGlsZUZvcm1hdCxcbiAgdGlsZXNldFVybCxcbiAgbWV0YWRhdGFVcmwsXG4gIG1ldGFkYXRhXG59OiBHZXRGaWVsZHNGcm9tVGlsZVByb3BzKSA9PiB7XG4gIHRyeSB7XG4gICAgaWYgKFxuICAgICAgdGlsZXNldFVybCAmJlxuICAgICAgbWV0YWRhdGFVcmwgJiZcbiAgICAgIG1ldGFkYXRhICYmXG4gICAgICBtZXRhZGF0YS5maWVsZHM/Lmxlbmd0aCA9PT0gMCAmJlxuICAgICAgbWV0YWRhdGEubWluWm9vbSAmJlxuICAgICAgbWV0YWRhdGEuYm91bmRzPy5sZW5ndGggPT09IDQgJiZcbiAgICAgICghbWV0YWRhdGEucG10aWxlc1R5cGUgfHwgbWV0YWRhdGEucG10aWxlc1R5cGUgPT09IFBNVGlsZXNUeXBlLk1WVClcbiAgICApIHtcbiAgICAgIGNvbnN0IGxvbiA9IChtZXRhZGF0YS5ib3VuZHNbMF0gKyBtZXRhZGF0YS5ib3VuZHNbMl0pIC8gMjtcbiAgICAgIGNvbnN0IGxhdCA9IChtZXRhZGF0YS5ib3VuZHNbMV0gKyBtZXRhZGF0YS5ib3VuZHNbM10pIC8gMjtcbiAgICAgIGNvbnN0IHRpbGVJbmRpY2VzID0gbG9uTGF0VG9UaWxlSW5kZXgobG9uLCBsYXQsIG1ldGFkYXRhLm1pblpvb20pO1xuXG4gICAgICBjb25zdCB0aWxlU291cmNlID1cbiAgICAgICAgcmVtb3RlVGlsZUZvcm1hdCA9PT0gUmVtb3RlVGlsZUZvcm1hdC5NVlRcbiAgICAgICAgICA/IE1WVFNvdXJjZS5jcmVhdGVEYXRhU291cmNlKGRlY29kZVVSSUNvbXBvbmVudCh0aWxlc2V0VXJsKSwge1xuICAgICAgICAgICAgICBtdnQ6IHtcbiAgICAgICAgICAgICAgICBtZXRhZGF0YVVybDogZGVjb2RlVVJJQ29tcG9uZW50KG1ldGFkYXRhVXJsKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIDogUE1UaWxlc1NvdXJjZS5jcmVhdGVEYXRhU291cmNlKHRpbGVzZXRVcmwsIHt9KTtcbiAgICAgIGNvbnN0IHRpbGUgPSBhd2FpdCB0aWxlU291cmNlLmdldFRpbGVEYXRhKHtpbmRleDogdGlsZUluZGljZXN9IGFzIGFueSk7XG4gICAgICBjb25zdCB1cGRhdGVkRmllbGRzID0gdGlsZVRvRmllbGRzKHRpbGUpLm1hcChmID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5mLFxuICAgICAgICAgIGFuYWx5emVyVHlwZTogZi5hbmFseXplclR5cGUgfHwgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZyxcbiAgICAgICAgICBpZDogZi5pZCB8fCBmLm5hbWVcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICBtZXRhZGF0YS5maWVsZHMgPSB1cGRhdGVkRmllbGRzO1xuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgLy8gaWdub3JlLCBhcyB0aGlzIGlzIGV4cGVyaW1lbnRhbCBmYWxsYmFja1xuICB9XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIHRpbGUgZmVhdHVyZXMgaW50byBLZXBsZXIgZmllbGRzLlxuICogQHBhcmFtIHRpbGUgVGhlIHRpbGUgb2JqZWN0IGNvbnRhaW5pbmcgZmVhdHVyZXMuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBLZXBsZXIgZmllbGRzIGRlcml2ZWQgZnJvbSB0aGUgdGlsZSdzIGZlYXR1cmVzLlxuICovXG5jb25zdCB0aWxlVG9GaWVsZHMgPSAodGlsZToge2ZlYXR1cmVzOiBGZWF0dXJlW119KTogS2VwbGVyRmllbGRbXSA9PiB7XG4gIGlmICh0aWxlPy5mZWF0dXJlcz8ubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IGhlYWRlciA9IE9iamVjdC5rZXlzKHRpbGUuZmVhdHVyZXNbMF0ucHJvcGVydGllcyk7XG4gICAgY29uc3Qgb3V0cHV0ID0gdGlsZS5mZWF0dXJlcy5tYXAoZiA9PiB7XG4gICAgICBjb25zdCBvYmogPSB7fTtcbiAgICAgIGhlYWRlci5mb3JFYWNoKGNvbHVtbk5hbWUgPT4ge1xuICAgICAgICBvYmpbY29sdW1uTmFtZV0gPSBmLnByb3BlcnRpZXNbY29sdW1uTmFtZV07XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSk7XG5cbiAgICBjb25zdCBmaWVsZHMgPSBnZXRGaWVsZHNGcm9tRGF0YShvdXRwdXQsIGhlYWRlcik7XG4gICAgLy8gZXh0cmEgdHJhbnNmb3JtYXRpb24gb2Ygc3RyaW5ncyB0byBudW1iZXJzIGZvciB0aWxlcyBpc24ndCBpbXBsZW1lbnRlZCwgc28gdXNlIHN0cmluZywgbm90IGNvbXB1dGVkIHR5cGVzXG4gICAgcmV0dXJuIGZpZWxkcy5tYXAoZiA9PiB7XG4gICAgICBjb25zdCBmb3JjZVN0cmluZyA9XG4gICAgICAgIChmLnR5cGUgPT09ICdpbnRlZ2VyJyB8fCBmLnR5cGUgPT09ICdmbG9hdCcpICYmXG4gICAgICAgIHR5cGVvZiB0aWxlLmZlYXR1cmVzWzBdLnByb3BlcnRpZXNbZi5uYW1lXSA9PT0gJ3N0cmluZyc7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmYsXG4gICAgICAgIGFuYWx5emVyVHlwZTogZm9yY2VTdHJpbmcgPyBBTkFMWVpFUl9EQVRBX1RZUEVTLlNUUklORyA6IGYuYW5hbHl6ZXJUeXBlLFxuICAgICAgICB0eXBlOiBmb3JjZVN0cmluZyA/ICdzdHJpbmcnIDogZi50eXBlXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBbXTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgbG9uZ2l0dWRlLCBsYXRpdHVkZSwgYW5kIHpvb20gbGV2ZWwgaW50byB2ZWN0b3IgdGlsZSBpbmRpY2VzICh4LCB5LCB6KS5cbiAqIEBwYXJhbSBsb24gTG9uZ2l0dWRlIGluIGRlZ3JlZXMsIHJhbmdpbmcgZnJvbSAtMTgwIHRvIDE4MC5cbiAqIEBwYXJhbSBsYXQgTGF0aXR1ZGUgaW4gZGVncmVlcywgcmFuZ2luZyBmcm9tIC05MCB0byA5MC5cbiAqIEBwYXJhbSB6b29tIFpvb20gbGV2ZWwgKGludGVnZXIpLCB3aGVyZSBoaWdoZXIgdmFsdWVzIHByb3ZpZGUgbW9yZSBkZXRhaWwuXG4gKiBAcmV0dXJucyBUaWxlIGluZGljZXMgd2l0aCB4IGFuZCB5IGNvb3JkaW5hdGVzIGFuZCB6b29tIGxldmVsIHouXG4gKi9cbmZ1bmN0aW9uIGxvbkxhdFRvVGlsZUluZGV4KGxvbjogbnVtYmVyLCBsYXQ6IG51bWJlciwgem9vbTogbnVtYmVyKSB7XG4gIGlmIChsYXQgPCAtODUuMDUxMSB8fCBsYXQgPiA4NS4wNTExKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdMYXRpdHVkZSBvdXQgb2YgcmFuZ2UuIE11c3QgYmUgYmV0d2VlbiAtODUuMDUxMSBhbmQgODUuMDUxMS4nKTtcbiAgfVxuICBpZiAoem9vbSA8IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1pvb20gbGV2ZWwgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLicpO1xuICB9XG5cbiAgLy8gMl56b29tIChudW1iZXIgb2YgdGlsZXMgcGVyIGF4aXMgYXQgZ2l2ZW4gem9vbSBsZXZlbClcbiAgY29uc3Qgc2NhbGUgPSAxIDw8IHpvb207XG4gIC8vIENvbnZlcnQgbG9uZ2l0dWRlIHRvIHRpbGUgWFxuICBjb25zdCB4ID0gTWF0aC5mbG9vcigoKGxvbiArIDE4MCkgLyAzNjApICogc2NhbGUpO1xuICAvLyBDb252ZXJ0IGxhdGl0dWRlIHRvIHRpbGUgWVxuICBjb25zdCBsYXRSYWQgPSAobGF0ICogTWF0aC5QSSkgLyAxODA7XG4gIGNvbnN0IHkgPSBNYXRoLmZsb29yKFxuICAgICgoMSAtIE1hdGgubG9nKE1hdGgudGFuKGxhdFJhZCkgKyAxIC8gTWF0aC5jb3MobGF0UmFkKSkgLyBNYXRoLlBJKSAvIDIpICogc2NhbGVcbiAgKTtcblxuICByZXR1cm4ge3gsIHksIHo6IHpvb219O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsYUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksS0FBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBR0EsSUFBQUssSUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sUUFBQSxHQUFBTixPQUFBO0FBRUEsSUFBQU8sWUFBQSxHQUFBUCxPQUFBO0FBT0EsSUFBQVEsVUFBQSxHQUFBUixPQUFBO0FBU0EsSUFBQVMsTUFBQSxHQUFBVCxPQUFBO0FBQWdHLFNBQUFVLDJCQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSx5QkFBQUMsTUFBQSxJ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LElBQUlqQyxDQUFDLENBQUNpQyxJQUFJLEtBQUssT0FBTyxLQUMzQyxPQUFPcU8sSUFBSSxDQUFDcUIsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDRSxVQUFVLENBQUM3UixDQUFDLENBQUNXLElBQUksQ0FBQyxLQUFLLFFBQVE7TUFFekQsT0FBQVksYUFBQSxDQUFBQSxhQUFBLEtBQ0t2QixDQUFDO1FBQ0prTyxZQUFZLEVBQUVnRSxXQUFXLEdBQUdDLHdCQUFtQixDQUFDN0QsTUFBTSxHQUFHdE8sQ0FBQyxDQUFDa08sWUFBWTtRQUN2RWpNLElBQUksRUFBRWlRLFdBQVcsR0FBRyxRQUFRLEdBQUdsUyxDQUFDLENBQUNpQztNQUFJO0lBRXpDLENBQUMsQ0FBQztFQUNKO0VBQ0EsT0FBTyxFQUFFO0FBQ1gsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMyTyxpQkFBaUJBLENBQUNWLEdBQVcsRUFBRUMsR0FBVyxFQUFFaUMsSUFBWSxFQUFFO0VBQ2pFLElBQUlqQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLElBQUlBLEdBQUcsR0FBRyxPQUFPLEVBQUU7SUFDbkMsTUFBTSxJQUFJa0MsS0FBSyxDQUFDLDhEQUE4RCxDQUFDO0VBQ2pGO0VBQ0EsSUFBSUQsSUFBSSxHQUFHLENBQUMsRUFBRTtJQUNaLE1BQU0sSUFBSUMsS0FBSyxDQUFDLDRDQUE0QyxDQUFDO0VBQy9EOztFQUVBO0VBQ0EsSUFBTUMsS0FBSyxHQUFHLENBQUMsSUFBSUYsSUFBSTtFQUN2QjtFQUNBLElBQU1HLENBQUMsR0FBRzlGLElBQUksQ0FBQytGLEtBQUssQ0FBRSxDQUFDdEMsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUlvQyxLQUFLLENBQUM7RUFDakQ7RUFDQSxJQUFNRyxNQUFNLEdBQUl0QyxHQUFHLEdBQUcxRCxJQUFJLENBQUNpRyxFQUFFLEdBQUksR0FBRztFQUNwQyxJQUFNQyxDQUFDLEdBQUdsRyxJQUFJLENBQUMrRixLQUFLLENBQ2pCLENBQUMsQ0FBQyxHQUFHL0YsSUFBSSxDQUFDbUcsR0FBRyxDQUFDbkcsSUFBSSxDQUFDb0csR0FBRyxDQUFDSixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUdoRyxJQUFJLENBQUNxRyxHQUFHLENBQUNMLE1BQU0sQ0FBQyxDQUFDLEdBQUdoRyxJQUFJLENBQUNpRyxFQUFFLElBQUksQ0FBQyxHQUFJSixLQUM1RSxDQUFDO0VBRUQsT0FBTztJQUFDQyxDQUFDLEVBQURBLENBQUM7SUFBRUksQ0FBQyxFQUFEQSxDQUFDO0lBQUVJLENBQUMsRUFBRVg7RUFBSSxDQUFDO0FBQ3hCIiwiaWdub3JlTGlzdCI6W119
|
package/src/table/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kepler.gl/table",
|
|
3
3
|
"author": "Shan He <shan@uber.com>",
|
|
4
|
-
"version": "3.1
|
|
4
|
+
"version": "3.2.1",
|
|
5
5
|
"description": "kepler.gl constants used by kepler.gl components, actions and reducers",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -30,10 +30,10 @@
|
|
|
30
30
|
"umd"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@kepler.gl/common-utils": "3.1
|
|
34
|
-
"@kepler.gl/constants": "3.1
|
|
35
|
-
"@kepler.gl/types": "3.1
|
|
36
|
-
"@kepler.gl/utils": "3.1
|
|
33
|
+
"@kepler.gl/common-utils": "3.2.1",
|
|
34
|
+
"@kepler.gl/constants": "3.2.1",
|
|
35
|
+
"@kepler.gl/types": "3.2.1",
|
|
36
|
+
"@kepler.gl/utils": "3.2.1",
|
|
37
37
|
"@loaders.gl/mvt": "^4.3.2",
|
|
38
38
|
"@loaders.gl/pmtiles": "^4.3.2",
|
|
39
39
|
"@types/d3-array": "^2.8.0",
|
|
@@ -31,7 +31,6 @@ import {clamp, formatNumberByStep, getNumericStepSize, timeToUnixMilli} from '@k
|
|
|
31
31
|
import {
|
|
32
32
|
FilterProps,
|
|
33
33
|
NumericFieldFilterProps,
|
|
34
|
-
BooleanFieldFilterProps,
|
|
35
34
|
StringFieldFilterProps,
|
|
36
35
|
default as KeplerDataset
|
|
37
36
|
} from '../kepler-table';
|
|
@@ -530,11 +529,15 @@ export function getFilterProps(
|
|
|
530
529
|
}
|
|
531
530
|
|
|
532
531
|
case ALL_FIELD_TYPES.boolean: {
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
532
|
+
// Represent boolean as numeric range [0,1] to enable GPU filtering for vector tiles
|
|
533
|
+
const domain: [number, number] = [0, 1];
|
|
534
|
+
const filterProps: NumericFieldFilterProps = {
|
|
535
|
+
domain,
|
|
536
|
+
value: domain,
|
|
537
|
+
type: FILTER_TYPES.range,
|
|
538
|
+
typeOptions: [FILTER_TYPES.range],
|
|
539
|
+
gpu: true,
|
|
540
|
+
step: 1
|
|
538
541
|
};
|
|
539
542
|
return filterProps;
|
|
540
543
|
}
|
package/src/tasks/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kepler.gl/tasks",
|
|
3
3
|
"author": "Shan He <shan@uber.com>",
|
|
4
|
-
"version": "3.1
|
|
4
|
+
"version": "3.2.1",
|
|
5
5
|
"description": "kepler.gl constants used by kepler.gl components, actions and reducers",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"umd"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@kepler.gl/processors": "3.1
|
|
33
|
+
"@kepler.gl/processors": "3.2.1",
|
|
34
34
|
"react-palm": "^3.3.8"
|
|
35
35
|
},
|
|
36
36
|
"nyc": {
|
package/src/types/package.json
CHANGED
|
@@ -58,18 +58,18 @@ var DEFAULT_APPLICATION_CONFIG = {
|
|
|
58
58
|
showReleaseBanner: true,
|
|
59
59
|
useOnFilteredItemsChange: false,
|
|
60
60
|
// Raster Tile layer config
|
|
61
|
-
enableRasterTileLayer:
|
|
61
|
+
enableRasterTileLayer: true,
|
|
62
62
|
rasterServerUseLatestTitiler: true,
|
|
63
|
-
|
|
63
|
+
rasterServerShowServerInput: true,
|
|
64
64
|
rasterServerUrls: [],
|
|
65
|
+
// TODO: provide a default free server or leave blank
|
|
65
66
|
rasterServerSupportsElevation: true,
|
|
66
67
|
rasterServerMaxRetries: 1,
|
|
67
68
|
rasterServerRetryDelay: 10000,
|
|
68
69
|
rasterServerServerErrorsToRetry: [503],
|
|
69
70
|
rasterServerMaxPerServerRequests: 0,
|
|
70
|
-
rasterServerShowServerInput: false,
|
|
71
71
|
// WMS layer config
|
|
72
|
-
enableWMSLayer:
|
|
72
|
+
enableWMSLayer: true
|
|
73
73
|
};
|
|
74
74
|
var applicationConfig = DEFAULT_APPLICATION_CONFIG;
|
|
75
75
|
var getApplicationConfig = exports.getApplicationConfig = function getApplicationConfig() {
|
|
@@ -79,4 +79,4 @@ function initApplicationConfig() {
|
|
|
79
79
|
var appConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
80
80
|
Object.assign(applicationConfig, appConfig);
|
|
81
81
|
}
|
|
82
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mMiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkRFRkFVTFRfQVBQTElDQVRJT05fQ09ORklHIiwiZGVmYXVsdEh0bWxOYW1lIiwiZGVmYXVsdEltYWdlTmFtZSIsImRlZmF1bHRKc29uTmFtZSIsImRlZmF1bHREYXRhTmFtZSIsImRlZmF1bHRFeHBvcnRKc29uU2V0dGluZ3MiLCJoYXNEYXRhIiwiYmFzZU1hcExpYnJhcnlDb25maWciLCJtYXBsaWJyZSIsImdldE1hcExpYiIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsIm1hcExpYkNzc0NsYXNzIiwibWFwTGliQXR0cmlidXRpb25Dc3NDbGFzcyIsIm1hcExpYk5hbWUiLCJtYXBMaWJVcmwiLCJtYXBib3giLCJjZG5VcmwiLCJLRVBMRVJfVU5GT0xERURfQlVDS0VUIiwicGx1Z2lucyIsInRhYmxlIiwiZGF0YWJhc2UiLCJ1c2VBcnJvd1Byb2dyZXNzaXZlTG9hZGluZyIsInNob3dSZWxlYXNlQmFubmVyIiwidXNlT25GaWx0ZXJlZEl0ZW1zQ2hhbmdlIiwiZW5hYmxlUmFzdGVyVGlsZUxheWVyIiwicmFzdGVyU2VydmVyVXNlTGF0ZXN0VGl0aWxlciIsInJhc3RlclNlcnZlclVybHMiLCJyYXN0ZXJTZXJ2ZXJTdXBwb3J0c0VsZXZhdGlvbiIsInJhc3RlclNlcnZlck1heFJldHJpZXMiLCJyYXN0ZXJTZXJ2ZXJSZXRyeURlbGF5IiwicmFzdGVyU2VydmVyU2VydmVyRXJyb3JzVG9SZXRyeSIsInJhc3RlclNlcnZlck1heFBlclNlcnZlclJlcXVlc3RzIiwicmFzdGVyU2VydmVyU2hvd1NlcnZlcklucHV0IiwiZW5hYmxlV01TTGF5ZXIiLCJhcHBsaWNhdGlvbkNvbmZpZyIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiZXhwb3J0cyIsImluaXRBcHBsaWNhdGlvbkNvbmZpZyIsImFwcENvbmZpZyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImFzc2lnbiJdLCJzb3VyY2VzIjpbIi4uL3NyYy9hcHBsaWNhdGlvbi1jb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtNYXBMaWIsIE1hcFJlZn0gZnJvbSAncmVhY3QtbWFwLWdsJztcblxuaW1wb3J0IHtLRVBMRVJfVU5GT0xERURfQlVDS0VUfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7QmFzZU1hcExpYnJhcnlUeXBlfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmltcG9ydCB0eXBlIHtEYXRhYmFzZUFkYXB0ZXJ9IGZyb20gJy4vYXBwbGljYXRpb24tY29uZmlnLXR5cGVzJztcblxuZXhwb3J0IHR5cGUgTWFwTGliSW5zdGFuY2UgPSBNYXBMaWI8YW55PjtcbmV4cG9ydCB0eXBlIEdldE1hcFJlZiA9IFJldHVyblR5cGU8TWFwUmVmWydnZXRNYXAnXT47XG5cbmV4cG9ydCB0eXBlIEJhc2VNYXBMaWJyYXJ5Q29uZmlnID0ge1xuICBnZXRNYXBMaWI6ICgpID0+IFByb21pc2U8TWFwTGliSW5zdGFuY2U+O1xuICBtYXBMaWJBdHRyaWJ1dGlvbkNzc0NsYXNzOiBzdHJpbmc7XG4gIG1hcExpYkNzc0NsYXNzOiBzdHJpbmc7XG4gIG1hcExpYk5hbWU6IHN0cmluZztcbiAgbWFwTGliVXJsOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEEgbWVjaGFuaXNtIHRvIG92ZXJyaWRlIGRlZmF1bHQgS2VwbGVyIHZhbHVlcy9zZXR0aW5ncyBzbyB0aGF0IHdlXG4gKiB3aXRob3V0IGhhdmluZyB0byBtYWtlIGFwcGxpY2F0aW9uLXNwZWNpZmljIGNoYW5nZXMgdG8gdGhlIGtlcGxlciByZXBvLlxuICovXG5leHBvcnQgdHlwZSBLZXBsZXJBcHBsaWNhdGlvbkNvbmZpZyA9IHtcbiAgLyoqIERlZmF1bHQgbmFtZSBvZiBleHBvcnQgSFRNTCBmaWxlLCBjYW4gYmUgb3ZlcnJpZGRlbiBieSB1c2VyICovXG4gIGRlZmF1bHRIdG1sTmFtZT86IHN0cmluZztcbiAgZGVmYXVsdEltYWdlTmFtZT86IHN0cmluZztcbiAgZGVmYXVsdEpzb25OYW1lPzogc3RyaW5nO1xuICBkZWZhdWx0RGF0YU5hbWU/OiBzdHJpbmc7XG4gIGRlZmF1bHRFeHBvcnRKc29uU2V0dGluZ3M/OiB7XG4gICAgaGFzRGF0YT86IGJvb2xlYW47XG4gIH07XG4gIGJhc2VNYXBMaWJyYXJ5Q29uZmlnPzogUmVjb3JkPEJhc2VNYXBMaWJyYXJ5VHlwZSwgQmFzZU1hcExpYnJhcnlDb25maWc+O1xuICBwbHVnaW5zPzogYW55W107XG4gIC8vIEtlcGxlclRhYmxlIGFsdGVybmF0aXZlXG4gIC8vIFRPRE8gaW1wcm92ZSB0eXBpbmcgYnkgZXhwb3J0aW5nIEtlcGxlclRhYmxlIGludGVyZmFjZSB0byBAa2VwbGVyLmdsL3R5cGVzXG4gIHRhYmxlPzogYW55O1xuICBkYXRhYmFzZT86IERhdGFiYXNlQWRhcHRlciB8IG51bGw7XG5cbiAgLy8gRGlzYWJsZSBwcm9ncmVzc2l2ZSBsb2FkaW5nIGZvciBhcnJvdyBmaWxlc1xuICB1c2VBcnJvd1Byb2dyZXNzaXZlTG9hZGluZz86IGJvb2xlYW47XG4gIC8vIFNob3cgYnVpbHQtaW4gYmFubmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIEtlcGxlci5nbFxuICBzaG93UmVsZWFzZUJhbm5lcj86IGJvb2xlYW47XG4gIC8vIFVzZSB0aGUgb25GaWx0ZXJlZEl0ZW1zQ2hhbmdlIGNhbGxiYWNrIGZvciBEYXRhRmlsdGVyRXh0ZW5zaW9uLlxuICAvLyBFbmFibGluZyB0aGlzIG9wdGlvbiBtYXkgY2F1c2UgcGVyZm9ybWFuY2UgaXNzdWVzIHdoZW4gZGVhbGluZyB3aXRoIGEgbGFyZ2UgbnVtYmVyIG9mIGxheWVycyBvciBzdWJsYXllcnMsXG4gIC8vIGVzcGVjaWFsbHkgaWYgbGFyZ2UgQXJyb3cgZmlsZXMgYXJlIHNwbGl0IGludG8gcmVsYXRpdmVseSBzbWFsbCBiYXRjaGVzIChzaG91bGQgYmUgZml4ZWQgaW4gdGhlIGZ1dHVyZSkuXG4gIHVzZU9uRmlsdGVyZWRJdGVtc0NoYW5nZT86IGJvb2xlYW47XG5cbiAgLy8gQSBVUkwgdG8gdGhlIENETiB3aGVyZSB0aGUga2VwbGVyLmdsIGFzc2V0cyBhcmUgaG9zdGVkLlxuICBjZG5Vcmw/OiBzdHJpbmc7XG5cbiAgLy8gUmFzdGVyIFRpbGUgbGF5ZXIgY29uZmlnXG4gIC8vIFJhc3RlciBUaWxlIGxheWVyIGlzIHVuZGVyIGRldmVsb3BtZW50IGFuZCBub3QgcmVhZHkgZm9yIHByb2R1Y3Rpb24gdXNlLiBEaXNhYmxlZCBieSBkZWZhdWx0LlxuICBlbmFibGVSYXN0ZXJUaWxlTGF5ZXI/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0byB1c2UgVGl0aWxlciB2MC4yMSBBUEkgZW5kcG9pbnRzIGluc3RlYWQgb2YgdjAuMTEgKi9cbiAgcmFzdGVyU2VydmVyVXNlTGF0ZXN0VGl0aWxlcj86IGJvb2xlYW47XG4gIC8qKiBBbiBhcnJheSBvZiBVUkxzIHRvIHNoYXJkcyBvZiB0aGUgcmFzdGVyIHRpbGUgc2VydmVyIHRvIGJlIHVzZWQgYnkgdGhlIHJhc3RlciB0aWxlIGxheWVyLiAqL1xuICByYXN0ZXJTZXJ2ZXJVcmxzPzogc3RyaW5nW107XG4gIC8qKiBJZiB0cnVlIHRoZW4gdHJ5IHRvIGZldGNoIHF1YW50aXplZCBlbGV2YXRpb24gbWVzaGVzIGZyb20gcmFzdGVyIHNlcnZlcnMgKi9cbiAgcmFzdGVyU2VydmVyU3VwcG9ydHNFbGV2YXRpb24/OiBib29sZWFuO1xuICAvKiogSG93IG1hbnkgdGltZXMgdG8gcmV0cnkgYSByZXF1ZXN0IGlmIGNhc2Ugb2YgcmFzdGVyU2VydmVyU2VydmVyRXJyb3JzVG9SZXRyeSBlcnJvcnMgKi9cbiAgcmFzdGVyU2VydmVyTWF4UmV0cmllcz86IG51bWJlcjtcbiAgLyoqIEhvdyBsb25nIGJldHdlZW4gcmV0cmllcyAqL1xuICByYXN0ZXJTZXJ2ZXJSZXRyeURlbGF5PzogbnVtYmVyO1xuICAvKiogQW4gYXJyYXkgb2YgSFRUUCBzdGF0dXMgY29kZXMgdGhhdCBzaG91bGQgYmUgcmV0cmllZCB3aGVuIGVuY291bnRlcmVkLiAqL1xuICByYXN0ZXJTZXJ2ZXJTZXJ2ZXJFcnJvcnNUb1JldHJ5PzogbnVtYmVyW107XG4gIC8qKiBNYXhpbXVtIG51bWJlciBvZiBzaW11bHRhbmVvdXMgcmVxdWVzdHMgcGVyIHJhc3RlciBzZXJ2ZXIuIDAgLSBubyBsaW1pdCAqL1xuICByYXN0ZXJTZXJ2ZXJNYXhQZXJTZXJ2ZXJSZXF1ZXN0cz86IG51bWJlcjtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgc2VydmVyIGlucHV0IGZpZWxkIGluIHRoZSByYXN0ZXIgdGlsZSBsYXllciBzZXR1cCBmb3JtICovXG4gIHJhc3RlclNlcnZlclNob3dTZXJ2ZXJJbnB1dD86IGJvb2xlYW47XG5cbiAgLy8gV01TIGxheWVyIGNvbmZpZyAtLSBFeHBlcmltZW50YWxcbiAgLy8gV01TIGxheWVyIGlzIHVuZGVyIGRldmVsb3BtZW50IGFuZCBub3QgcmVhZHkgZm9yIHByb2R1Y3Rpb24gdXNlLiBEaXNhYmxlZCBieSBkZWZhdWx0LlxuICBlbmFibGVXTVNMYXllcj86IGJvb2xlYW47XG59O1xuXG5jb25zdCBERUZBVUxUX0FQUExJQ0FUSU9OX0NPTkZJRzogUmVxdWlyZWQ8S2VwbGVyQXBwbGljYXRpb25Db25maWc+ID0ge1xuICBkZWZhdWx0SHRtbE5hbWU6ICdrZXBsZXIuZ2wuaHRtbCcsXG4gIGRlZmF1bHRJbWFnZU5hbWU6ICdrZXBsZXIuZ2wucG5nJyxcbiAgZGVmYXVsdEpzb25OYW1lOiAna2VwbGVyLmdsLmpzb24nLFxuICBkZWZhdWx0RGF0YU5hbWU6ICdrZXBsZXIuZ2wnLFxuICBkZWZhdWx0RXhwb3J0SnNvblNldHRpbmdzOiB7XG4gICAgaGFzRGF0YTogdHJ1ZVxuICB9LFxuXG4gIGJhc2VNYXBMaWJyYXJ5Q29uZmlnOiB7XG4gICAgbWFwbGlicmU6IHtcbiAgICAgIGdldE1hcExpYjogKCkgPT4gaW1wb3J0KCdtYXBsaWJyZS1nbCcpLFxuICAgICAgbWFwTGliQ3NzQ2xhc3M6ICdtYXBsaWJyZWdsJyxcbiAgICAgIG1hcExpYkF0dHJpYnV0aW9uQ3NzQ2xhc3M6ICdtYXBsaWJyZS1hdHRyaWJ1dGlvbi1jb250YWluZXInLFxuICAgICAgbWFwTGliTmFtZTogJ01hcExpYnJlJyxcbiAgICAgIG1hcExpYlVybDogJ2h0dHBzOi8vd3d3Lm1hcGxpYnJlLm9yZy8nXG4gICAgfSxcbiAgICBtYXBib3g6IHtcbiAgICAgIGdldE1hcExpYjogKCkgPT4gaW1wb3J0KCdtYXBib3gtZ2wnKSxcbiAgICAgIG1hcExpYkNzc0NsYXNzOiAnbWFwYm94Z2wnLFxuICAgICAgbWFwTGliQXR0cmlidXRpb25Dc3NDbGFzczogJ21hcGJveC1hdHRyaWJ1dGlvbi1jb250YWluZXInLFxuICAgICAgbWFwTGliTmFtZTogJ01hcGJveCcsXG4gICAgICBtYXBMaWJVcmw6ICdodHRwczovL3d3dy5tYXBib3guY29tLydcbiAgICB9XG4gIH0sXG5cbiAgY2RuVXJsOiBLRVBMRVJfVU5GT0xERURfQlVDS0VULFxuXG4gIHBsdWdpbnM6IFtdLFxuICAvLyBUaGUgZGVmYXVsdCB0YWJsZSBjbGFzcyBpcyBLZXBsZXJUYWJsZS5cbiAgLy8gVE9ETyBpbmNsdWRlIEtlcGxlclRhYmxlIGhlcmUgd2hlbiB0aGUgY2lyY3VsYXIgZGVwZW5kZW5jeSB3aXRoIEBrZXBsZXIuZ2wvdGFibGUgYW5kIEBrZXBsZXIuZ2wvdXRpbHMgYXJlIHJlc29sdmVkLlxuICB0YWJsZTogbnVsbCxcbiAgZGF0YWJhc2U6IG51bGwsXG5cbiAgdXNlQXJyb3dQcm9ncmVzc2l2ZUxvYWRpbmc6IHRydWUsXG4gIHNob3dSZWxlYXNlQmFubmVyOiB0cnVlLFxuICB1c2VPbkZpbHRlcmVkSXRlbXNDaGFuZ2U6IGZhbHNlLFxuXG4gIC8vIFJhc3RlciBUaWxlIGxheWVyIGNvbmZpZ1xuICBlbmFibGVSYXN0ZXJUaWxlTGF5ZXI6IGZhbHNlLFxuICByYXN0ZXJTZXJ2ZXJVc2VMYXRlc3RUaXRpbGVyOiB0cnVlLFxuXG4gIC8vIFRPRE86IHByb3ZpZGUgYSBkZWZhdWx0IGZyZWUgc2VydmVyIG9yIGxlYXZlIGJsYW5rXG4gIHJhc3RlclNlcnZlclVybHM6IFtdLFxuICByYXN0ZXJTZXJ2ZXJTdXBwb3J0c0VsZXZhdGlvbjogdHJ1ZSxcbiAgcmFzdGVyU2VydmVyTWF4UmV0cmllczogMSxcbiAgcmFzdGVyU2VydmVyUmV0cnlEZWxheTogMTAwMDAsXG4gIHJhc3RlclNlcnZlclNlcnZlckVycm9yc1RvUmV0cnk6IFs1MDNdLFxuICByYXN0ZXJTZXJ2ZXJNYXhQZXJTZXJ2ZXJSZXF1ZXN0czogMCxcbiAgcmFzdGVyU2VydmVyU2hvd1NlcnZlcklucHV0OiBmYWxzZSxcblxuICAvLyBXTVMgbGF5ZXIgY29uZmlnXG4gIGVuYWJsZVdNU0xheWVyOiBmYWxzZVxufTtcblxuY29uc3QgYXBwbGljYXRpb25Db25maWc6IFJlcXVpcmVkPEtlcGxlckFwcGxpY2F0aW9uQ29uZmlnPiA9IERFRkFVTFRfQVBQTElDQVRJT05fQ09ORklHO1xuXG5leHBvcnQgY29uc3QgZ2V0QXBwbGljYXRpb25Db25maWcgPSAoKTogUmVxdWlyZWQ8S2VwbGVyQXBwbGljYXRpb25Db25maWc+ID0+IGFwcGxpY2F0aW9uQ29uZmlnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5pdEFwcGxpY2F0aW9uQ29uZmlnKGFwcENvbmZpZzogS2VwbGVyQXBwbGljYXRpb25Db25maWcgPSB7fSkge1xuICBPYmplY3QuYXNzaWduKGFwcGxpY2F0aW9uQ29uZmlnLCBhcHBDb25maWcpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFLQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFBNEQsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFJLHdCQUFBSixDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLGVBQUFBLENBQUEsb0JBQUFNLFFBQUEsYUFBQU4sQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLEdBQUEsQ0FBQVAsQ0FBQSxVQUFBRyxDQUFBLENBQUFLLEdBQUEsQ0FBQVIsQ0FBQSxPQUFBUyxDQUFBLEtBQUFDLFNBQUEsVUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxDQUFBLElBQUFmLENBQUEsb0JBQUFlLENBQUEsT0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFqQixDQUFBLEVBQUFlLENBQUEsU0FBQUcsQ0FBQSxHQUFBUCxDQUFBLEdBQUFDLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWQsQ0FBQSxFQUFBZSxDQUFBLFVBQUFHLENBQUEsS0FBQUEsQ0FBQSxDQUFBVixHQUFBLElBQUFVLENBQUEsQ0FBQUMsR0FBQSxJQUFBUCxNQUFBLENBQUFDLGNBQUEsQ0FBQUosQ0FBQSxFQUFBTSxDQUFBLEVBQUFHLENBQUEsSUFBQVQsQ0FBQSxDQUFBTSxDQUFBLElBQUFm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
|
|
82
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mMiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkRFRkFVTFRfQVBQTElDQVRJT05fQ09ORklHIiwiZGVmYXVsdEh0bWxOYW1lIiwiZGVmYXVsdEltYWdlTmFtZSIsImRlZmF1bHRKc29uTmFtZSIsImRlZmF1bHREYXRhTmFtZSIsImRlZmF1bHRFeHBvcnRKc29uU2V0dGluZ3MiLCJoYXNEYXRhIiwiYmFzZU1hcExpYnJhcnlDb25maWciLCJtYXBsaWJyZSIsImdldE1hcExpYiIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsIm1hcExpYkNzc0NsYXNzIiwibWFwTGliQXR0cmlidXRpb25Dc3NDbGFzcyIsIm1hcExpYk5hbWUiLCJtYXBMaWJVcmwiLCJtYXBib3giLCJjZG5VcmwiLCJLRVBMRVJfVU5GT0xERURfQlVDS0VUIiwicGx1Z2lucyIsInRhYmxlIiwiZGF0YWJhc2UiLCJ1c2VBcnJvd1Byb2dyZXNzaXZlTG9hZGluZyIsInNob3dSZWxlYXNlQmFubmVyIiwidXNlT25GaWx0ZXJlZEl0ZW1zQ2hhbmdlIiwiZW5hYmxlUmFzdGVyVGlsZUxheWVyIiwicmFzdGVyU2VydmVyVXNlTGF0ZXN0VGl0aWxlciIsInJhc3RlclNlcnZlclNob3dTZXJ2ZXJJbnB1dCIsInJhc3RlclNlcnZlclVybHMiLCJyYXN0ZXJTZXJ2ZXJTdXBwb3J0c0VsZXZhdGlvbiIsInJhc3RlclNlcnZlck1heFJldHJpZXMiLCJyYXN0ZXJTZXJ2ZXJSZXRyeURlbGF5IiwicmFzdGVyU2VydmVyU2VydmVyRXJyb3JzVG9SZXRyeSIsInJhc3RlclNlcnZlck1heFBlclNlcnZlclJlcXVlc3RzIiwiZW5hYmxlV01TTGF5ZXIiLCJhcHBsaWNhdGlvbkNvbmZpZyIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiZXhwb3J0cyIsImluaXRBcHBsaWNhdGlvbkNvbmZpZyIsImFwcENvbmZpZyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImFzc2lnbiJdLCJzb3VyY2VzIjpbIi4uL3NyYy9hcHBsaWNhdGlvbi1jb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtNYXBMaWIsIE1hcFJlZn0gZnJvbSAncmVhY3QtbWFwLWdsJztcblxuaW1wb3J0IHtLRVBMRVJfVU5GT0xERURfQlVDS0VUfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7QmFzZU1hcExpYnJhcnlUeXBlfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmltcG9ydCB0eXBlIHtEYXRhYmFzZUFkYXB0ZXJ9IGZyb20gJy4vYXBwbGljYXRpb24tY29uZmlnLXR5cGVzJztcblxuZXhwb3J0IHR5cGUgTWFwTGliSW5zdGFuY2UgPSBNYXBMaWI8YW55PjtcbmV4cG9ydCB0eXBlIEdldE1hcFJlZiA9IFJldHVyblR5cGU8TWFwUmVmWydnZXRNYXAnXT47XG5cbmV4cG9ydCB0eXBlIEJhc2VNYXBMaWJyYXJ5Q29uZmlnID0ge1xuICBnZXRNYXBMaWI6ICgpID0+IFByb21pc2U8TWFwTGliSW5zdGFuY2U+O1xuICBtYXBMaWJBdHRyaWJ1dGlvbkNzc0NsYXNzOiBzdHJpbmc7XG4gIG1hcExpYkNzc0NsYXNzOiBzdHJpbmc7XG4gIG1hcExpYk5hbWU6IHN0cmluZztcbiAgbWFwTGliVXJsOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEEgbWVjaGFuaXNtIHRvIG92ZXJyaWRlIGRlZmF1bHQgS2VwbGVyIHZhbHVlcy9zZXR0aW5ncyBzbyB0aGF0IHdlXG4gKiB3aXRob3V0IGhhdmluZyB0byBtYWtlIGFwcGxpY2F0aW9uLXNwZWNpZmljIGNoYW5nZXMgdG8gdGhlIGtlcGxlciByZXBvLlxuICovXG5leHBvcnQgdHlwZSBLZXBsZXJBcHBsaWNhdGlvbkNvbmZpZyA9IHtcbiAgLyoqIERlZmF1bHQgbmFtZSBvZiBleHBvcnQgSFRNTCBmaWxlLCBjYW4gYmUgb3ZlcnJpZGRlbiBieSB1c2VyICovXG4gIGRlZmF1bHRIdG1sTmFtZT86IHN0cmluZztcbiAgZGVmYXVsdEltYWdlTmFtZT86IHN0cmluZztcbiAgZGVmYXVsdEpzb25OYW1lPzogc3RyaW5nO1xuICBkZWZhdWx0RGF0YU5hbWU/OiBzdHJpbmc7XG4gIGRlZmF1bHRFeHBvcnRKc29uU2V0dGluZ3M/OiB7XG4gICAgaGFzRGF0YT86IGJvb2xlYW47XG4gIH07XG4gIGJhc2VNYXBMaWJyYXJ5Q29uZmlnPzogUmVjb3JkPEJhc2VNYXBMaWJyYXJ5VHlwZSwgQmFzZU1hcExpYnJhcnlDb25maWc+O1xuICBwbHVnaW5zPzogYW55W107XG4gIC8vIEtlcGxlclRhYmxlIGFsdGVybmF0aXZlXG4gIC8vIFRPRE8gaW1wcm92ZSB0eXBpbmcgYnkgZXhwb3J0aW5nIEtlcGxlclRhYmxlIGludGVyZmFjZSB0byBAa2VwbGVyLmdsL3R5cGVzXG4gIHRhYmxlPzogYW55O1xuICBkYXRhYmFzZT86IERhdGFiYXNlQWRhcHRlciB8IG51bGw7XG5cbiAgLy8gRGlzYWJsZSBwcm9ncmVzc2l2ZSBsb2FkaW5nIGZvciBhcnJvdyBmaWxlc1xuICB1c2VBcnJvd1Byb2dyZXNzaXZlTG9hZGluZz86IGJvb2xlYW47XG4gIC8vIFNob3cgYnVpbHQtaW4gYmFubmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIEtlcGxlci5nbFxuICBzaG93UmVsZWFzZUJhbm5lcj86IGJvb2xlYW47XG4gIC8vIFVzZSB0aGUgb25GaWx0ZXJlZEl0ZW1zQ2hhbmdlIGNhbGxiYWNrIGZvciBEYXRhRmlsdGVyRXh0ZW5zaW9uLlxuICAvLyBFbmFibGluZyB0aGlzIG9wdGlvbiBtYXkgY2F1c2UgcGVyZm9ybWFuY2UgaXNzdWVzIHdoZW4gZGVhbGluZyB3aXRoIGEgbGFyZ2UgbnVtYmVyIG9mIGxheWVycyBvciBzdWJsYXllcnMsXG4gIC8vIGVzcGVjaWFsbHkgaWYgbGFyZ2UgQXJyb3cgZmlsZXMgYXJlIHNwbGl0IGludG8gcmVsYXRpdmVseSBzbWFsbCBiYXRjaGVzIChzaG91bGQgYmUgZml4ZWQgaW4gdGhlIGZ1dHVyZSkuXG4gIHVzZU9uRmlsdGVyZWRJdGVtc0NoYW5nZT86IGJvb2xlYW47XG5cbiAgLy8gQSBVUkwgdG8gdGhlIENETiB3aGVyZSB0aGUga2VwbGVyLmdsIGFzc2V0cyBhcmUgaG9zdGVkLlxuICBjZG5Vcmw/OiBzdHJpbmc7XG5cbiAgLy8gUmFzdGVyIFRpbGUgbGF5ZXIgY29uZmlnXG4gIC8vIFJhc3RlciBUaWxlIGxheWVyIGlzIHVuZGVyIGRldmVsb3BtZW50IGFuZCBub3QgcmVhZHkgZm9yIHByb2R1Y3Rpb24gdXNlLiBEaXNhYmxlZCBieSBkZWZhdWx0LlxuICBlbmFibGVSYXN0ZXJUaWxlTGF5ZXI/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0byB1c2UgVGl0aWxlciB2MC4yMSBBUEkgZW5kcG9pbnRzIGluc3RlYWQgb2YgdjAuMTEgKi9cbiAgcmFzdGVyU2VydmVyVXNlTGF0ZXN0VGl0aWxlcj86IGJvb2xlYW47XG4gIC8qKiBBbiBhcnJheSBvZiBVUkxzIHRvIHNoYXJkcyBvZiB0aGUgcmFzdGVyIHRpbGUgc2VydmVyIHRvIGJlIHVzZWQgYnkgdGhlIHJhc3RlciB0aWxlIGxheWVyLiAqL1xuICByYXN0ZXJTZXJ2ZXJVcmxzPzogc3RyaW5nW107XG4gIC8qKiBJZiB0cnVlIHRoZW4gdHJ5IHRvIGZldGNoIHF1YW50aXplZCBlbGV2YXRpb24gbWVzaGVzIGZyb20gcmFzdGVyIHNlcnZlcnMgKi9cbiAgcmFzdGVyU2VydmVyU3VwcG9ydHNFbGV2YXRpb24/OiBib29sZWFuO1xuICAvKiogSG93IG1hbnkgdGltZXMgdG8gcmV0cnkgYSByZXF1ZXN0IGlmIGNhc2Ugb2YgcmFzdGVyU2VydmVyU2VydmVyRXJyb3JzVG9SZXRyeSBlcnJvcnMgKi9cbiAgcmFzdGVyU2VydmVyTWF4UmV0cmllcz86IG51bWJlcjtcbiAgLyoqIEhvdyBsb25nIGJldHdlZW4gcmV0cmllcyAqL1xuICByYXN0ZXJTZXJ2ZXJSZXRyeURlbGF5PzogbnVtYmVyO1xuICAvKiogQW4gYXJyYXkgb2YgSFRUUCBzdGF0dXMgY29kZXMgdGhhdCBzaG91bGQgYmUgcmV0cmllZCB3aGVuIGVuY291bnRlcmVkLiAqL1xuICByYXN0ZXJTZXJ2ZXJTZXJ2ZXJFcnJvcnNUb1JldHJ5PzogbnVtYmVyW107XG4gIC8qKiBNYXhpbXVtIG51bWJlciBvZiBzaW11bHRhbmVvdXMgcmVxdWVzdHMgcGVyIHJhc3RlciBzZXJ2ZXIuIDAgLSBubyBsaW1pdCAqL1xuICByYXN0ZXJTZXJ2ZXJNYXhQZXJTZXJ2ZXJSZXF1ZXN0cz86IG51bWJlcjtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgc2VydmVyIGlucHV0IGZpZWxkIGluIHRoZSByYXN0ZXIgdGlsZSBsYXllciBzZXR1cCBmb3JtICovXG4gIHJhc3RlclNlcnZlclNob3dTZXJ2ZXJJbnB1dD86IGJvb2xlYW47XG5cbiAgLy8gV01TIGxheWVyIGNvbmZpZyAtLSBFeHBlcmltZW50YWxcbiAgLy8gV01TIGxheWVyIGlzIHVuZGVyIGRldmVsb3BtZW50IGFuZCBub3QgcmVhZHkgZm9yIHByb2R1Y3Rpb24gdXNlLiBEaXNhYmxlZCBieSBkZWZhdWx0LlxuICBlbmFibGVXTVNMYXllcj86IGJvb2xlYW47XG59O1xuXG5jb25zdCBERUZBVUxUX0FQUExJQ0FUSU9OX0NPTkZJRzogUmVxdWlyZWQ8S2VwbGVyQXBwbGljYXRpb25Db25maWc+ID0ge1xuICBkZWZhdWx0SHRtbE5hbWU6ICdrZXBsZXIuZ2wuaHRtbCcsXG4gIGRlZmF1bHRJbWFnZU5hbWU6ICdrZXBsZXIuZ2wucG5nJyxcbiAgZGVmYXVsdEpzb25OYW1lOiAna2VwbGVyLmdsLmpzb24nLFxuICBkZWZhdWx0RGF0YU5hbWU6ICdrZXBsZXIuZ2wnLFxuICBkZWZhdWx0RXhwb3J0SnNvblNldHRpbmdzOiB7XG4gICAgaGFzRGF0YTogdHJ1ZVxuICB9LFxuXG4gIGJhc2VNYXBMaWJyYXJ5Q29uZmlnOiB7XG4gICAgbWFwbGlicmU6IHtcbiAgICAgIGdldE1hcExpYjogKCkgPT4gaW1wb3J0KCdtYXBsaWJyZS1nbCcpLFxuICAgICAgbWFwTGliQ3NzQ2xhc3M6ICdtYXBsaWJyZWdsJyxcbiAgICAgIG1hcExpYkF0dHJpYnV0aW9uQ3NzQ2xhc3M6ICdtYXBsaWJyZS1hdHRyaWJ1dGlvbi1jb250YWluZXInLFxuICAgICAgbWFwTGliTmFtZTogJ01hcExpYnJlJyxcbiAgICAgIG1hcExpYlVybDogJ2h0dHBzOi8vd3d3Lm1hcGxpYnJlLm9yZy8nXG4gICAgfSxcbiAgICBtYXBib3g6IHtcbiAgICAgIGdldE1hcExpYjogKCkgPT4gaW1wb3J0KCdtYXBib3gtZ2wnKSxcbiAgICAgIG1hcExpYkNzc0NsYXNzOiAnbWFwYm94Z2wnLFxuICAgICAgbWFwTGliQXR0cmlidXRpb25Dc3NDbGFzczogJ21hcGJveC1hdHRyaWJ1dGlvbi1jb250YWluZXInLFxuICAgICAgbWFwTGliTmFtZTogJ01hcGJveCcsXG4gICAgICBtYXBMaWJVcmw6ICdodHRwczovL3d3dy5tYXBib3guY29tLydcbiAgICB9XG4gIH0sXG5cbiAgY2RuVXJsOiBLRVBMRVJfVU5GT0xERURfQlVDS0VULFxuXG4gIHBsdWdpbnM6IFtdLFxuICAvLyBUaGUgZGVmYXVsdCB0YWJsZSBjbGFzcyBpcyBLZXBsZXJUYWJsZS5cbiAgLy8gVE9ETyBpbmNsdWRlIEtlcGxlclRhYmxlIGhlcmUgd2hlbiB0aGUgY2lyY3VsYXIgZGVwZW5kZW5jeSB3aXRoIEBrZXBsZXIuZ2wvdGFibGUgYW5kIEBrZXBsZXIuZ2wvdXRpbHMgYXJlIHJlc29sdmVkLlxuICB0YWJsZTogbnVsbCxcbiAgZGF0YWJhc2U6IG51bGwsXG5cbiAgdXNlQXJyb3dQcm9ncmVzc2l2ZUxvYWRpbmc6IHRydWUsXG4gIHNob3dSZWxlYXNlQmFubmVyOiB0cnVlLFxuICB1c2VPbkZpbHRlcmVkSXRlbXNDaGFuZ2U6IGZhbHNlLFxuXG4gIC8vIFJhc3RlciBUaWxlIGxheWVyIGNvbmZpZ1xuICBlbmFibGVSYXN0ZXJUaWxlTGF5ZXI6IHRydWUsXG4gIHJhc3RlclNlcnZlclVzZUxhdGVzdFRpdGlsZXI6IHRydWUsXG4gIHJhc3RlclNlcnZlclNob3dTZXJ2ZXJJbnB1dDogdHJ1ZSxcbiAgcmFzdGVyU2VydmVyVXJsczogW10sIC8vIFRPRE86IHByb3ZpZGUgYSBkZWZhdWx0IGZyZWUgc2VydmVyIG9yIGxlYXZlIGJsYW5rXG4gIHJhc3RlclNlcnZlclN1cHBvcnRzRWxldmF0aW9uOiB0cnVlLFxuICByYXN0ZXJTZXJ2ZXJNYXhSZXRyaWVzOiAxLFxuICByYXN0ZXJTZXJ2ZXJSZXRyeURlbGF5OiAxMDAwMCxcbiAgcmFzdGVyU2VydmVyU2VydmVyRXJyb3JzVG9SZXRyeTogWzUwM10sXG4gIHJhc3RlclNlcnZlck1heFBlclNlcnZlclJlcXVlc3RzOiAwLFxuXG4gIC8vIFdNUyBsYXllciBjb25maWdcbiAgZW5hYmxlV01TTGF5ZXI6IHRydWVcbn07XG5cbmNvbnN0IGFwcGxpY2F0aW9uQ29uZmlnOiBSZXF1aXJlZDxLZXBsZXJBcHBsaWNhdGlvbkNvbmZpZz4gPSBERUZBVUxUX0FQUExJQ0FUSU9OX0NPTkZJRztcblxuZXhwb3J0IGNvbnN0IGdldEFwcGxpY2F0aW9uQ29uZmlnID0gKCk6IFJlcXVpcmVkPEtlcGxlckFwcGxpY2F0aW9uQ29uZmlnPiA9PiBhcHBsaWNhdGlvbkNvbmZpZztcblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRBcHBsaWNhdGlvbkNvbmZpZyhhcHBDb25maWc6IEtlcGxlckFwcGxpY2F0aW9uQ29uZmlnID0ge30pIHtcbiAgT2JqZWN0LmFzc2lnbihhcHBsaWNhdGlvbkNvbmZpZywgYXBwQ29uZmlnKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBS0EsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBQTRELFNBQUFDLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBSSx3QkFBQUosQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxlQUFBQSxDQUFBLG9CQUFBTSxRQUFBLGFBQUFOLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsVUFBQUcsQ0FBQSxDQUFBSyxHQUFBLENBQUFSLENBQUEsT0FBQVMsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZixDQUFBLG9CQUFBZSxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBakIsQ0FBQSxFQUFBZSxDQUFBLFNBQUFHLENBQUEsR0FBQVAsQ0FBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFkLENBQUEsRUFBQWUsQ0FBQSxVQUFBRyxDQUFBLEtBQUFBLENBQUEsQ0FBQVYsR0FBQSxJQUFBVSxDQUFBLENBQUFDLEdBQUEsSUFBQVAsTUFBQSxDQUFBQyxjQUFBLENBQUFKLENBQUEsRUFBQU0sQ0FBQSxFQUFBRyxDQUFBLElBQUFULENBQUEsQ0FBQU0sQ0FBQSxJQUFBZixDQUFBLENB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
|
package/src/utils/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kepler.gl/utils",
|
|
3
3
|
"author": "Shan He <shan@uber.com>",
|
|
4
|
-
"version": "3.1
|
|
4
|
+
"version": "3.2.1",
|
|
5
5
|
"description": "kepler.gl constants used by kepler.gl components, actions and reducers",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@deck.gl/core": "^8.9.27",
|
|
34
|
-
"@kepler.gl/common-utils": "3.1
|
|
35
|
-
"@kepler.gl/constants": "3.1
|
|
36
|
-
"@kepler.gl/types": "3.1
|
|
34
|
+
"@kepler.gl/common-utils": "3.2.1",
|
|
35
|
+
"@kepler.gl/constants": "3.2.1",
|
|
36
|
+
"@kepler.gl/types": "3.2.1",
|
|
37
37
|
"@loaders.gl/arrow": "^4.3.2",
|
|
38
38
|
"@luma.gl/constants": "^8.5.20",
|
|
39
39
|
"@luma.gl/core": "^8.5.20",
|
|
@@ -115,20 +115,18 @@ const DEFAULT_APPLICATION_CONFIG: Required<KeplerApplicationConfig> = {
|
|
|
115
115
|
useOnFilteredItemsChange: false,
|
|
116
116
|
|
|
117
117
|
// Raster Tile layer config
|
|
118
|
-
enableRasterTileLayer:
|
|
118
|
+
enableRasterTileLayer: true,
|
|
119
119
|
rasterServerUseLatestTitiler: true,
|
|
120
|
-
|
|
121
|
-
// TODO: provide a default free server or leave blank
|
|
122
|
-
rasterServerUrls: [],
|
|
120
|
+
rasterServerShowServerInput: true,
|
|
121
|
+
rasterServerUrls: [], // TODO: provide a default free server or leave blank
|
|
123
122
|
rasterServerSupportsElevation: true,
|
|
124
123
|
rasterServerMaxRetries: 1,
|
|
125
124
|
rasterServerRetryDelay: 10000,
|
|
126
125
|
rasterServerServerErrorsToRetry: [503],
|
|
127
126
|
rasterServerMaxPerServerRequests: 0,
|
|
128
|
-
rasterServerShowServerInput: false,
|
|
129
127
|
|
|
130
128
|
// WMS layer config
|
|
131
|
-
enableWMSLayer:
|
|
129
|
+
enableWMSLayer: true
|
|
132
130
|
};
|
|
133
131
|
|
|
134
132
|
const applicationConfig: Required<KeplerApplicationConfig> = DEFAULT_APPLICATION_CONFIG;
|