kepler.gl 3.2.0 → 3.2.2

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.
Files changed (96) hide show
  1. package/dist/src/ai-assistant/src/config/models.d.ts +8 -0
  2. package/dist/src/components/src/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +3 -2
  3. package/dist/src/localization/src/translations/en.d.ts +1 -0
  4. package/dist/src/utils/src/arrow-data-container.d.ts +3 -2
  5. package/dist/src/utils/src/data-container-utils.d.ts +2 -0
  6. package/package.json +2 -2
  7. package/src/actions/package.json +8 -8
  8. package/src/ai-assistant/dist/components/ai-assistant-config.js +40 -24
  9. package/src/ai-assistant/dist/config/models.d.ts +8 -0
  10. package/src/ai-assistant/dist/config/models.js +16 -8
  11. package/src/ai-assistant/dist/localization.js +7 -7
  12. package/src/ai-assistant/dist/reducers/index.js +3 -2
  13. package/src/ai-assistant/package.json +16 -16
  14. package/src/ai-assistant/src/components/ai-assistant-config.tsx +39 -28
  15. package/src/ai-assistant/src/config/models.ts +37 -25
  16. package/src/ai-assistant/src/localization.ts +6 -6
  17. package/src/ai-assistant/src/reducers/index.ts +2 -1
  18. package/src/cloud-providers/package.json +2 -2
  19. package/src/common-utils/package.json +3 -3
  20. package/src/components/dist/common/color-legend.js +8 -8
  21. package/src/components/dist/common/data-table/index.js +13 -9
  22. package/src/components/dist/map/map-legend-panel.js +10 -4
  23. package/src/components/dist/map/map-legend.js +2 -2
  24. package/src/components/dist/plot-container.js +4 -2
  25. package/src/components/dist/side-panel/interaction-panel/interaction-panel.js +2 -2
  26. package/src/components/dist/side-panel/layer-panel/color-breaks-panel.js +11 -2
  27. package/src/components/dist/side-panel/layer-panel/color-scale-selector.js +65 -12
  28. package/src/components/dist/side-panel/layer-panel/custom-palette.js +18 -7
  29. package/src/components/dist/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +3 -2
  30. package/src/components/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +18 -4
  31. package/src/components/package.json +15 -15
  32. package/src/components/src/common/color-legend.tsx +15 -2
  33. package/src/components/src/common/data-table/index.tsx +1 -1
  34. package/src/components/src/map/map-legend-panel.tsx +21 -2
  35. package/src/components/src/map/map-legend.tsx +1 -1
  36. package/src/components/src/plot-container.tsx +2 -1
  37. package/src/components/src/side-panel/interaction-panel/interaction-panel.tsx +1 -0
  38. package/src/components/src/side-panel/layer-panel/color-breaks-panel.tsx +14 -3
  39. package/src/components/src/side-panel/layer-panel/color-scale-selector.tsx +62 -8
  40. package/src/components/src/side-panel/layer-panel/custom-palette.tsx +11 -5
  41. package/src/components/src/side-panel/layer-panel/vector-tile-layer-configurator.tsx +19 -2
  42. package/src/constants/dist/default-settings.js +1 -1
  43. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/1b/11/43d4199b6142de0b88c672f2b036c5aa4ca836cf35977bbafcdb1962b91e94f8336655a57f0742571ceb13fc69ef4ba0e3cb91dc9a8d61ef041c6eb15e7a +1 -0
  44. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/b3/bd/e4f91c7af9e320b979e29ad3b9e3a4dfcd61e4a09d6e4579104c40dcace7651b443fdd6d7ff5d947ed6c9df2c0bbbcc76a2ea86d6398e4945257eeb80dd5 +1 -0
  45. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/ac/e2/e903ec95ada0b0075fdcfb6133e2e75c9b3b0504a29ca665704aaed90b2b +2 -0
  46. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/b4/c5/a43653dff3b380f7b0793080a57c980a9a136764933e79454de0fe43a5ca +2 -0
  47. package/src/constants/package.json +2 -2
  48. package/src/constants/umd/keplergl.min.js +1 -1
  49. package/src/deckgl-arrow-layers/package.json +2 -2
  50. package/src/deckgl-layers/package.json +4 -4
  51. package/src/duckdb/dist/table/duckdb-table-utils.js +3 -2
  52. package/src/duckdb/package.json +6 -6
  53. package/src/duckdb/src/table/duckdb-table-utils.ts +5 -1
  54. package/src/effects/package.json +5 -5
  55. package/src/layers/dist/geojson-layer/geojson-utils.js +23 -5
  56. package/src/layers/dist/icon-layer/icon-layer.js +12 -2
  57. package/src/layers/dist/vector-tile/common-tile/tile-dataset.d.ts +4 -0
  58. package/src/layers/dist/vector-tile/common-tile/tile-dataset.js +10 -1
  59. package/src/layers/dist/vector-tile/vector-tile-layer.d.ts +11 -0
  60. package/src/layers/dist/vector-tile/vector-tile-layer.js +113 -7
  61. package/src/layers/package.json +9 -9
  62. package/src/layers/src/geojson-layer/geojson-utils.ts +22 -0
  63. package/src/layers/src/icon-layer/icon-layer.ts +49 -38
  64. package/src/layers/src/vector-tile/common-tile/tile-dataset.ts +7 -0
  65. package/src/layers/src/vector-tile/vector-tile-layer.ts +110 -6
  66. package/src/localization/dist/translations/en.d.ts +1 -0
  67. package/src/localization/dist/translations/en.js +2 -1
  68. package/src/localization/package.json +1 -1
  69. package/src/localization/src/translations/en.ts +1 -0
  70. package/src/processors/dist/data-processor.js +15 -5
  71. package/src/processors/package.json +7 -7
  72. package/src/processors/src/data-processor.ts +19 -4
  73. package/src/reducers/package.json +16 -16
  74. package/src/schemas/package.json +7 -7
  75. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/52/82/28cacf6fd462b779c22675964b655bf3a9f3ce9ec3c9b141a401a5bf90cb7d904ac65ab8e484570130b12771af0a0d5bab20e6976cfa773666763e046a6a +1 -0
  76. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/53/93/f8e389b6450ee0636bf336363d2d6865d8a1fe2445c15cc1e36c651e1ddf448358eb74e894f4bf6fc48ef881dc64cc221c48b133ecf0e02132f2c5fbfe11 +1 -0
  77. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/2e/45/ed6e0c1beb8bca4698a47b5feda8789a22d96978bc4839949bd26e827454 +2 -0
  78. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/56/db/b5a812c56b0d1dcdcd33da37e464062a19c8752cb2296603dc72d2c54d31 +2 -0
  79. package/src/styles/package.json +2 -2
  80. package/src/styles/umd/keplergl.min.js +1 -1
  81. package/src/table/dist/dataset-utils.js +18 -7
  82. package/src/table/dist/kepler-table.js +2 -1
  83. package/src/table/package.json +5 -5
  84. package/src/table/src/dataset-utils.ts +7 -2
  85. package/src/table/src/kepler-table.ts +1 -0
  86. package/src/tasks/package.json +2 -2
  87. package/src/types/actions.d.ts +1 -0
  88. package/src/types/package.json +1 -1
  89. package/src/utils/dist/arrow-data-container.d.ts +3 -2
  90. package/src/utils/dist/arrow-data-container.js +3 -3
  91. package/src/utils/dist/data-container-utils.d.ts +2 -0
  92. package/src/utils/dist/data-container-utils.js +3 -2
  93. package/src/utils/package.json +4 -4
  94. package/src/utils/src/arrow-data-container.ts +9 -7
  95. package/src/utils/src/data-container-utils.ts +3 -1
  96. package/umd/keplergl.min.js +1366 -1333
@@ -220,8 +220,11 @@ var EditableColorRange = exports.EditableColorRange = function EditableColorRang
220
220
  index = _ref5.index,
221
221
  editColorMap = _ref5.editColorMap,
222
222
  editable = _ref5.editable;
223
- var noMinBound = !Number.isFinite(item.inputs[0]) && index === 0;
224
- var noMaxBound = !Number.isFinite(item.inputs[1]) && isLast;
223
+ var hasInputs = Array.isArray(item === null || item === void 0 ? void 0 : item.inputs);
224
+ var leftInput = hasInputs ? item.inputs[0] : undefined;
225
+ var rightInput = hasInputs ? item.inputs[1] : undefined;
226
+ var noMinBound = !Number.isFinite(leftInput) && index === 0;
227
+ var noMaxBound = !Number.isFinite(rightInput) && isLast;
225
228
  var onChangeLeft = (0, _react.useCallback)(function (val) {
226
229
  if (editable && editColorMap) editColorMap(parseFloat(val), index - 1);
227
230
  }, [editColorMap, index, editable]);
@@ -229,14 +232,14 @@ var EditableColorRange = exports.EditableColorRange = function EditableColorRang
229
232
  if (editable && editColorMap) editColorMap(parseFloat(val), index);
230
233
  }, [editColorMap, index, editable]);
231
234
  return /*#__PURE__*/_react["default"].createElement(StyledRangeInput, null, /*#__PURE__*/_react["default"].createElement(ColorPaletteInput, {
232
- value: noMinBound ? 'Less' : item.inputs[0].toString(),
235
+ value: noMinBound ? 'Less' : String(leftInput !== null && leftInput !== void 0 ? leftInput : ''),
233
236
  id: "color-palette-input-".concat(index, "-left"),
234
237
  width: "50px",
235
238
  textAlign: "end",
236
239
  editable: noMinBound ? false : editable,
237
240
  onChange: onChangeLeft
238
241
  }), /*#__PURE__*/_react["default"].createElement(Dash, null), /*#__PURE__*/_react["default"].createElement(ColorPaletteInput, {
239
- value: noMaxBound ? 'More' : item.inputs[1].toString(),
242
+ value: noMaxBound ? 'More' : String(rightInput !== null && rightInput !== void 0 ? rightInput : ''),
240
243
  id: "color-palette-input-".concat(index, "-right"),
241
244
  width: "50px",
242
245
  textAlign: "end",
@@ -311,7 +314,7 @@ var CustomPaletteInput = exports.CustomPaletteInput = function CustomPaletteInpu
311
314
  editable: true,
312
315
  textAlign: "left",
313
316
  width: "70px"
314
- })) : null, (0, _utils.isNumericColorBreaks)(colorBreaks) ? /*#__PURE__*/_react["default"].createElement(EditableColorRange, {
317
+ })) : null, colorBreaks && index < colorBreaks.length && (0, _utils.isNumericColorBreaks)(colorBreaks) ? /*#__PURE__*/_react["default"].createElement(EditableColorRange, {
315
318
  item: colorBreaks[index],
316
319
  isLast: index === colorBreaks.length - 1,
317
320
  index: index,
@@ -478,7 +481,15 @@ var CategoricalSelector = exports.CategoricalSelector = function CategoricalSele
478
481
  listItem: 'list__item',
479
482
  listAnchor: 'list__item__anchor'
480
483
  },
481
- options: allValues,
484
+ options: allValues
485
+ // add safe string casting for the Typeahead, so fuzzy search never receives non-strings, preventing the toLowerCase crash
486
+ ,
487
+ displayOption: function displayOption(o) {
488
+ return String(o !== null && o !== void 0 ? o : '');
489
+ },
490
+ filterOption: function filterOption(input, o) {
491
+ return String(o !== null && o !== void 0 ? o : '').includes(String(input !== null && input !== void 0 ? input : ''));
492
+ },
482
493
  placeholder: 'Search',
483
494
  onOptionSelected: onOptionSelected,
484
495
  customListComponent: ModifiedDropdownList,
@@ -774,4 +785,4 @@ function CustomPaletteFactory() {
774
785
  return CustomPalette;
775
786
  }
776
787
  var _default = exports["default"] = CustomPaletteFactory;
777
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdW5pcSIsIl9jb3JlIiwiX3NvcnRhYmxlIiwiX3V0aWxpdGllcyIsIl9zdHlsZWRDb21wb25lbnRzIiwiX3BvcnRhbGVkIiwiX3N0eWxlZENvbXBvbmVudHMyIiwiX3R5cGVhaGVhZCIsIl9jaGlja2xldGVkSW5wdXQiLCJfZHJvcGRvd25MaXN0IiwiX2NvbW1vblV0aWxzIiwiX2NvbnN0YW50cyIsIl91dGlscyIsIl9pY29ucyIsIl9jdXN0b21QaWNrZXIiLCJfZXhjbHVkZWQiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiX3RlbXBsYXRlT2JqZWN0NiIsIl90ZW1wbGF0ZU9iamVjdDciLCJfdGVtcGxhdGVPYmplY3Q4IiwiX3RlbXBsYXRlT2JqZWN0OSIsIl90ZW1wbGF0ZU9iamVjdDEwIiwiX3RlbXBsYXRlT2JqZWN0MTEiLCJfdGVtcGxhdGVPYmplY3QxMiIsIl90ZW1wbGF0ZU9iamVjdDEzIiwiX3RlbXBsYXRlT2JqZWN0MTQiLCJfdGVtcGxhdGVPYmplY3QxNSIsIl90ZW1wbGF0ZU9iamVjdDE2IiwiX3RlbXBsYXRlT2JqZWN0MTciLCJfdGVtcGxhdGVPYmplY3QxOCIsIl90ZW1wbGF0ZU9iamVjdDE5IiwiX3RlbXBsYXRlT2JqZWN0MjAiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsImRlZmF1bHRBY3Rpb25JY29ucyIsIlRyYXNoIiwic29ydCIsIlZlcnREb3RzIiwiYWRkIiwiQWRkIiwiZHJhZ0hhbmRsZUFjdGl2ZSIsImNzcyIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsInRleHRDb2xvckhsIiwiQ29sb3JQYWxldHRlSXRlbSIsImV4cG9ydHMiLCJzdHlsZWQiLCJkaXYiLCJkcm9wZG93bldyYXBwZXJaIiwicGFuZWxCYWNrZ3JvdW5kSG92ZXIiLCJTdHlsZWREcmFnSGFuZGxlIiwiU3R5bGVkQWN0aW9uIiwic3VidGV4dENvbG9yIiwic3VidGV4dENvbG9yQWN0aXZlIiwiRGl2aWRlckxpbmUiLCJkcm9wZG93bkxpc3RCb3JkZXJUb3AiLCJDb2xvclN3YXRjaCIsImF0dHJzIiwiY2xhc3NOYW1lIiwiY29sb3IiLCJib3hTaGFkb3ciLCJTdHlsZWRCdXR0b25Db250YWluZXIiLCJTdHlsZWRBZGRTdGVwQ29udGFpbmVyIiwiaW5wdXRDb2xvciIsIlN0eWxlZElucHV0IiwiSW5wdXQiLCJ3aXRoQ29uZmlnIiwic2hvdWxkRm9yd2FyZFByb3AiLCJfcHJvcHMkd2lkdGgiLCJ3aWR0aCIsIl9wcm9wcyR0ZXh0QWxpZ24iLCJ0ZXh0QWxpZ24iLCJkaXNhYmxlZCIsIklucHV0VGV4dCIsImlucHV0IiwiX3Byb3BzJHdpZHRoMiIsIl9wcm9wcyR0ZXh0QWxpZ24yIiwiU29ydGFibGVJdGVtIiwiX3JlZiIsImlkIiwiY2hpbGRyZW4iLCJpc1NvcnRpbmciLCJfdXNlU29ydGFibGUiLCJ1c2VTb3J0YWJsZSIsImF0dHJpYnV0ZXMiLCJsaXN0ZW5lcnMiLCJzZXROb2RlUmVmIiwidHJhbnNmb3JtIiwidHJhbnNpdGlvbiIsImlzRHJhZ2dpbmciLCJzdHlsZSIsIkNTUyIsIlRyYW5zZm9ybSIsInRvU3RyaW5nIiwiekluZGV4IiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzMiIsInJlZiIsImNsYXNzbmFtZXMiLCJzb3J0aW5nIiwiV3JhcHBlZFNvcnRhYmxlQ29udGFpbmVyIiwiX3JlZjIiLCJvblNvcnRFbmQiLCJvblNvcnRTdGFydCIsInNlbnNvcnMiLCJ1c2VTZW5zb3JzIiwidXNlU2Vuc29yIiwiUG9pbnRlclNlbnNvciIsIktleWJvYXJkU2Vuc29yIiwiRG5kQ29udGV4dCIsImNvbGxpc2lvbkRldGVjdGlvbiIsImNsb3Nlc3RDZW50ZXIiLCJvbkRyYWdFbmQiLCJvbkRyYWdTdGFydCIsIlNvcnRhYmxlQ29udGV4dCIsIml0ZW1zIiwiUmVhY3QiLCJDaGlsZHJlbiIsIm1hcCIsIl8iLCJpbmRleCIsImNvbmNhdCIsInN0cmF0ZWd5IiwidmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwiRHJhZ0hhbmRsZSIsIl9yZWYzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsIkNvbG9yUGFsZXR0ZUlucHV0IiwiX3JlZjQiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwiZWRpdGFibGUiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzdGF0ZVZhbHVlIiwic2V0VmFsdWUiLCJpbnB1dFJlZiIsInVzZVJlZiIsInVzZUVmZmVjdCIsIm9uS2V5RG93biIsInVzZUNhbGxiYWNrIiwia2V5Q29kZSIsIktleUV2ZW50IiwiRE9NX1ZLX0VOVEVSIiwiRE9NX1ZLX1JFVFVSTiIsImN1cnJlbnQiLCJibHVyIiwiX29uQ2hhbmdlIiwidGFyZ2V0Iiwib25CbHVyIiwic2Vjb25kYXJ5IiwiRGFzaCIsIlN0eWxlZFJhbmdlSW5wdXQiLCJTdHlsZWRDb2xvckhleElucHV0IiwiRWRpdGFibGVDb2xvclJhbmdlIiwiX3JlZjUiLCJpdGVtIiwiaXNMYXN0IiwiZWRpdENvbG9yTWFwIiwibm9NaW5Cb3VuZCIsIk51bWJlciIsImlzRmluaXRlIiwiaW5wdXRzIiwibm9NYXhCb3VuZCIsIm9uQ2hhbmdlTGVmdCIsInZhbCIsInBhcnNlRmxvYXQiLCJvbkNoYW5nZVJpZ2h0IiwiQWRkQ29sb3JTdG9wIiwiX3JlZjYiLCJvbkNvbG9yQWRkIiwiSWNvbkNvbXBvbmVudCIsIm9uQ2xpY2siLCJoZWlnaHQiLCJEZWxldGVDb2xvclN0b3AiLCJfcmVmNyIsIm9uQ29sb3JEZWxldGUiLCJDdXN0b21QYWxldHRlSW5wdXQiLCJfcmVmOCIsImNvbG9yQnJlYWtzIiwiaW5wdXRDb2xvckhleCIsImVkaXRDb2xvck1hcFZhbHVlIiwiX3JlZjgkYWN0aW9uSWNvbnMiLCJhY3Rpb25JY29ucyIsImRpc2FibGVBcHBlbmQiLCJkaXNhYmxlRGVsZXRlIiwib25EZWxldGUiLCJvbkFkZCIsIm9uVG9nZ2xlU2tldGNoZXIiLCJvbkNsaWNrU3d0YWNoIiwib25Db2xvcklucHV0IiwidiIsInNob3dIZXhJbnB1dCIsIkZyYWdtZW50IiwidG9VcHBlckNhc2UiLCJpc051bWVyaWNDb2xvckJyZWFrcyIsIlN0eWxlZENhdGVnb3JpY2FsVmFsdWVQaWNrZXJXcmFwcGVyIiwiU3R5bGVkQ2F0ZWdvcmljYWxWYWx1ZVBpY2tlciIsIm5vQm9yZGVyIiwiRHJvcGRvd25WYWx1ZXNXcmFwcGVyIiwiU2VsZWN0ZWRWYWx1ZXNXcmFwcGVyIiwiU3R5bGVkRHJvcGRvd25IZWFkZXIiLCJTdHlsZWRUb29sdGlwQ29udGVudCIsIk5VTUJFUl9WQUxVRVNfSU5fVE9PTFRJUCIsIkNhdGVnb3JpY2FsU2VsZWN0b3JDb250ZXh0IiwiY3JlYXRlQ29udGV4dCIsIm9uU2VsZWN0UmVzdCIsIm9uUmVzZXQiLCJNb2RpZmllZERyb3Bkb3duTGlzdCIsIl9Ecm9wZG93bkxpc3QiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJyZW5kZXIiLCJfdGhpcyIsIkNvbnN1bWVyIiwiY29udGV4dCIsIkJ1dHRvbiIsImxpbmsiLCJzaXplIiwiRHJvcGRvd25MaXN0IiwiQ2F0ZWdvcmljYWxTZWxlY3RvciIsIl9yZWY5Iiwic2VsZWN0ZWRWYWx1ZXMiLCJhbGxWYWx1ZXMiLCJhZGRDb2xvck1hcFZhbHVlIiwicmVtb3ZlQ29sb3JNYXBWYWx1ZSIsInJlc2V0Q29sb3JNYXBWYWx1ZSIsInNlbGVjdFJlc3RDb2xvck1hcFZhbHVlIiwiX3JlZjkkZWRpdGFibGUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInNob3dUeXBlYWhlYWQiLCJzZXRTaG93VHlwZWFoZWFkIiwib25PcHRpb25TZWxlY3RlZCIsInByZXZpb3VzU2VsZWN0ZWQiLCJ0b0FycmF5IiwidW5pcSIsIm9uT3BlbkRyb3Bkb3duIiwib25DbG9zZURyb3Bkb3duIiwib25SZW1vdmVJdGVtIiwiVG9vbHRpcCIsInBsYWNlIiwiaW50ZXJhY3RpdmUiLCJzbGljZSIsImxlZnQiLCJ0b3AiLCJpc09wZW5lZCIsIm9uQ2xvc2UiLCJzZWxlY3RlZEl0ZW1zIiwicGxhY2Vob2xkZXIiLCJyZW1vdmVJdGVtIiwiQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnQiLCJwb3NpdGlvbiIsIlByb3ZpZGVyIiwiY3VzdG9tQ2xhc3NlcyIsInJlc3VsdHMiLCJsaXN0SXRlbSIsImxpc3RBbmNob3IiLCJvcHRpb25zIiwiY3VzdG9tTGlzdENvbXBvbmVudCIsImN1c3RvbUxpc3RJdGVtQ29tcG9uZW50IiwiTGlzdEl0ZW0iLCJzZWFyY2hhYmxlIiwic2hvd09wdGlvbnNXaGVuRW1wdHkiLCJDYXRlZ29yaWNhbEN1c3RvbVBhbGV0dGVJbnB1dCIsIl9yZWYxMCIsImNvbG9yTWFwIiwiX3JlZjEwJGFjdGlvbkljb25zIiwidXNlTWVtbyIsInZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsIkJvdHRvbUFjdGlvbiIsIl9yZWYxMSIsIm9uQ2FuY2VsIiwib25Db25maXJtIiwic21hbGwiLCJTdHlsZWRDdXN0b21QYWxldHRlIiwiQ3VzdG9tUGFsZXR0ZUZhY3RvcnkiLCJDdXN0b21QYWxldHRlIiwiX3JlZjEyIiwib3JkaW5hbERvbWFpbiIsImN1c3RvbVBhbGV0dGUiLCJzZXRDb2xvclBhbGV0dGVVSSIsInNob3dTa2V0Y2hlciIsIl9yZWYxMiRhY3Rpb25JY29ucyIsIm9uQXBwbHkiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNldElzU29ydGluZyIsImNvbG9ycyIsInR5cGUiLCJjb2xvck1hcFRvQ29sb3JCcmVha3MiLCJjb2xvck1hcFRvQ2F0ZWdvcmljYWxDb2xvckJyZWFrcyIsIm9uUGlja2VyVXBkYXRlIiwibmV3Q3VzdG9tUGFsZXR0ZSIsInVwZGF0ZUN1c3RvbVBhbGV0dGVDb2xvciIsImhleCIsInJlbW92ZUN1c3RvbVBhbGV0dGVDb2xvciIsImFkZEN1c3RvbVBhbGV0dGVDb2xvciIsIm9uQWRkQ2F0ZWdvcmljYWxTdGVwIiwib25Td2F0Y2hDbG9zZSIsImV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwicHJldmVudERlZmF1bHQiLCJhY3RpdmUiLCJvdmVyIiwib2xkSW5kZXgiLCJmaW5kSW5kZXgiLCJuZXdJbmRleCIsInNvcnRDdXN0b21QYWxldHRlQ29sb3IiLCJuZXdDb2xvck1hcCIsImNtIiwiYnJlYWtzIiwiYiIsInNvcnRlZE5ld0NvbG9yTWFwIiwicmVtb3ZlQ2F0ZWdvcmljYWxDb2xvck1hcFZhbHVlIiwicmVtb3ZlQ2F0ZWdvcmljYWxWYWx1ZUZyb21Db2xvck1hcCIsImFkZENhdGVnb3JpY2FsQ29sb3JNYXBWYWx1ZSIsImFkZENhdGVnb3JpY2FsVmFsdWVzVG9Db2xvck1hcCIsInJlc2V0Q2F0ZWdvcmljYWxDb2xvck1hcFZhbHVlIiwicmVzZXRDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleCIsInNlbGVjdFJlc3RDYXRlZ29yaWNhbENvbG9yTWFwIiwic2VsZWN0UmVzdENhdGVnb3JpY2FsQ29sb3JNYXBCeUluZGV4IiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2lkZS1wYW5lbC9sYXllci1wYW5lbC9jdXN0b20tcGFsZXR0ZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgUmVhY3QsIHtcbiAgRWxlbWVudFR5cGUsXG4gIFByb3BzV2l0aENoaWxkcmVuLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1bmlxIGZyb20gJ2xvZGFzaC91bmlxJztcbmltcG9ydCB7XG4gIERuZENvbnRleHQsXG4gIGNsb3Nlc3RDZW50ZXIsXG4gIEtleWJvYXJkU2Vuc29yLFxuICBQb2ludGVyU2Vuc29yLFxuICB1c2VTZW5zb3IsXG4gIHVzZVNlbnNvcnMsXG4gIERyYWdFbmRFdmVudFxufSBmcm9tICdAZG5kLWtpdC9jb3JlJztcbmltcG9ydCB7U29ydGFibGVDb250ZXh0LCB1c2VTb3J0YWJsZSwgdmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5fSBmcm9tICdAZG5kLWtpdC9zb3J0YWJsZSc7XG5pbXBvcnQge0NTU30gZnJvbSAnQGRuZC1raXQvdXRpbGl0aWVzJztcbmltcG9ydCBzdHlsZWQsIHtjc3N9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBQb3J0YWxlZCBmcm9tICcuLi8uLi9jb21tb24vcG9ydGFsZWQnO1xuaW1wb3J0IHtUb29sdGlwfSBmcm9tICcuLi8uLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IFR5cGVhaGVhZCBmcm9tICcuLi8uLi9jb21tb24vaXRlbS1zZWxlY3Rvci90eXBlYWhlYWQnO1xuaW1wb3J0IENoaWNrbGV0ZWRJbnB1dCBmcm9tICcuLi8uLi9jb21tb24vaXRlbS1zZWxlY3Rvci9jaGlja2xldGVkLWlucHV0JztcbmltcG9ydCBEcm9wZG93bkxpc3QsIHtMaXN0SXRlbX0gZnJvbSAnLi4vLi4vY29tbW9uL2l0ZW0tc2VsZWN0b3IvZHJvcGRvd24tbGlzdCc7XG5pbXBvcnQge3Nob3VsZEZvcndhcmRQcm9wfSBmcm9tICcuLi8uLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHt0b0FycmF5fSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge0tleUV2ZW50fSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0NvbG9yTWFwLCBDb2xvclVJLCBIZXhDb2xvciwgTmVzdGVkUGFydGlhbH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBhZGRDYXRlZ29yaWNhbFZhbHVlc1RvQ29sb3JNYXAsXG4gIGFkZEN1c3RvbVBhbGV0dGVDb2xvcixcbiAgY29sb3JNYXBUb0NhdGVnb3JpY2FsQ29sb3JCcmVha3MsXG4gIGNvbG9yTWFwVG9Db2xvckJyZWFrcyxcbiAgaXNOdW1lcmljQ29sb3JCcmVha3MsXG4gIHJlc2V0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgsXG4gIHJlbW92ZUNhdGVnb3JpY2FsVmFsdWVGcm9tQ29sb3JNYXAsXG4gIHJlbW92ZUN1c3RvbVBhbGV0dGVDb2xvcixcbiAgc2VsZWN0UmVzdENhdGVnb3JpY2FsQ29sb3JNYXBCeUluZGV4LFxuICBzb3J0Q3VzdG9tUGFsZXR0ZUNvbG9yLFxuICB1cGRhdGVDdXN0b21QYWxldHRlQ29sb3Jcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge0NvbG9yQnJlYWssIENvbG9yQnJlYWtPcmRpbmFsfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7QWRkLCBUcmFzaCwgVmVydERvdHN9IGZyb20gJy4uLy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQge0J1dHRvbiwgSW5wdXR9IGZyb20gJy4uLy4uL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgQ3VzdG9tUGlja2VyIGZyb20gJy4vY3VzdG9tLXBpY2tlcic7XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkljb25zID0ge1xuICBkZWxldGU6IEVsZW1lbnRUeXBlO1xuICBzb3J0OiBFbGVtZW50VHlwZTtcbiAgYWRkOiBFbGVtZW50VHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIEVkaXRDb2xvck1hcEZ1bmMgPSAodjogbnVtYmVyLCBpOiBudW1iZXIpID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBTZXRDb2xvclVJRnVuYyA9IChuZXdDb25maWc6IE5lc3RlZFBhcnRpYWw8Q29sb3JVST4pID0+IHZvaWQ7XG5cbi8qKlxuICogRWRpdGFibGVDb2xvclJhbmdlXG4gKi9cbmV4cG9ydCB0eXBlIEVkaXRhYmxlQ29sb3JSYW5nZVByb3BzID0ge1xuICBpdGVtOiBDb2xvckJyZWFrO1xuICBpc0xhc3Q6IGJvb2xlYW47XG4gIGluZGV4OiBudW1iZXI7XG4gIGVkaXRDb2xvck1hcD86IEVkaXRDb2xvck1hcEZ1bmM7XG4gIGVkaXRhYmxlOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tUGFsZXR0ZVByb3BzID0ge1xuICBjdXN0b21QYWxldHRlOiBDb2xvclVJWydjdXN0b21QYWxldHRlJ107XG4gIHNldENvbG9yUGFsZXR0ZVVJOiBTZXRDb2xvclVJRnVuYztcbiAgc2hvd1NrZXRjaGVyOiBudW1iZXIgfCBib29sZWFuO1xuICBvcmRpbmFsRG9tYWluPzogc3RyaW5nW10gfCBudW1iZXJbXTtcbiAgYWN0aW9uSWNvbnM/OiBBY3Rpb25JY29ucztcbiAgb25BcHBseTogKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gIG9uQ2FuY2VsOiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tUGFsZXR0ZUlucHV0UHJvcHMgPSB7XG4gIGluZGV4OiBudW1iZXI7XG4gIGlzU29ydGluZzogYm9vbGVhbjtcbiAgY29sb3I6IEhleENvbG9yO1xuICBjb2xvckJyZWFrczogQ29sb3JCcmVha09yZGluYWxbXSB8IENvbG9yQnJlYWtbXSB8IG51bGw7XG4gIGlucHV0Q29sb3JIZXg6IChpbmRleDogbnVtYmVyLCB2OiBIZXhDb2xvcikgPT4gdm9pZDtcbiAgZWRpdENvbG9yTWFwVmFsdWU6IEVkaXRDb2xvck1hcEZ1bmM7XG4gIGFjdGlvbkljb25zPzogQWN0aW9uSWNvbnM7XG4gIGRpc2FibGVBcHBlbmQ/OiBib29sZWFuO1xuICBkaXNhYmxlRGVsZXRlPzogYm9vbGVhbjtcbiAgb25EZWxldGU6IChpbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBvbkFkZDogKGluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gIG9uVG9nZ2xlU2tldGNoZXI6IChpbmRleDogbnVtYmVyKSA9PiB2b2lkO1xufTtcblxuY29uc3QgZGVmYXVsdEFjdGlvbkljb25zID0ge1xuICBkZWxldGU6IFRyYXNoLFxuICBzb3J0OiBWZXJ0RG90cyxcbiAgYWRkOiBBZGRcbn07XG5cbmNvbnN0IGRyYWdIYW5kbGVBY3RpdmUgPSBjc3NgXG4gIC5sYXllcl9fZHJhZy1oYW5kbGUge1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGN1cnNvcjogbW92ZTtcbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IENvbG9yUGFsZXR0ZUl0ZW0gPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nLXRvcDogMnB4O1xuICBwYWRkaW5nLWJvdHRvbTogMnB4O1xuICB6LWluZGV4OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRyb3Bkb3duV3JhcHBlclogKyAxfTtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG4gIC5jdXN0b20tcGFsZXR0ZS1pbnB1dF9fbGVmdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG5cbiAgLmN1c3RvbS1wYWxldHRlLWlucHV0X19yaWdodCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmctcmlnaHQ6IDZweDtcbiAgfVxuXG4gICY6bm90KC5zb3J0aW5nKTpub3QoLmRpc2FibGVkKSB7XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBhbmVsQmFja2dyb3VuZEhvdmVyfTtcbiAgICAgICR7ZHJhZ0hhbmRsZUFjdGl2ZX07XG4gICAgfVxuICB9XG5cbiAgJi5zb3J0aW5nLWNvbG9ycyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEJhY2tncm91bmRIb3Zlcn07XG4gICAgJHtkcmFnSGFuZGxlQWN0aXZlfTtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkRHJhZ0hhbmRsZSA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG9wYWNpdHk6IDA7XG5gO1xuXG5jb25zdCBTdHlsZWRBY3Rpb24gPSBzdHlsZWQuZGl2YFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3J9O1xuICBzdmcge1xuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yQWN0aXZlfTtcbiAgICB9XG4gIH1cblxuICBtYXJnaW4tbGVmdDogNHB4O1xuICAmOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBEaXZpZGVyTGluZSA9IHN0eWxlZC5kaXZgXG4gIGhlaWdodDogMXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJvcmRlclRvcH07XG4gIG1hcmdpbi10b3A6IDhweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBDb2xvclN3YXRjaCA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdjdXN0b20tcGFsZXR0ZV9fc3dhdGNoJ1xufSlgXG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuY29sb3J9O1xuICB3aWR0aDogMzJweDtcbiAgaGVpZ2h0OiAxOHB4O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICY6aG92ZXIge1xuICAgIGJveC1zaGFkb3c6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuYm94U2hhZG93fTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZEJ1dHRvbkNvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi10b3A6IDExcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGRpcmVjdGlvbjogcnRsO1xuICBwYWRkaW5nOiAwIDEycHg7XG5gO1xuXG5jb25zdCBTdHlsZWRBZGRTdGVwQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luLXRvcDogMTFweDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAwIDEycHg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0Q29sb3J9O1xuICAuYWRkY29sb3Ige1xuICAgIG1hcmdpbi10b3A6IDRweDtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkSW5wdXQgPSBzdHlsZWQoSW5wdXQpLndpdGhDb25maWcoe3Nob3VsZEZvcndhcmRQcm9wfSk8e1xuICB3aWR0aDogc3RyaW5nO1xuICB0ZXh0QWxpZ246IHN0cmluZztcbn0+YFxuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy53aWR0aCA/PyAnMTAwJSd9O1xuICB0ZXh0LWFsaWduOiAke3Byb3BzID0+IHByb3BzLnRleHRBbGlnbiA/PyAnZW5kJ307XG4gIHBvaW50ZXItZXZlbnRzOiAke3Byb3BzID0+IChwcm9wcy5kaXNhYmxlZCA/ICdub25lJyA6ICdhbGwnKX07XG5gO1xuXG5jb25zdCBJbnB1dFRleHQgPSBzdHlsZWQuZGl2LndpdGhDb25maWcoe3Nob3VsZEZvcndhcmRQcm9wfSk8e3dpZHRoOiBzdHJpbmc7IHRleHRBbGlnbjogc3RyaW5nfT5gXG4gICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXR9O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMud2lkdGggPz8gJzEwMCUnfTtcbiAgdGV4dC1hbGlnbjogJHtwcm9wcyA9PiBwcm9wcy50ZXh0QWxpZ24gPz8gJ2VuZCd9O1xuXG4gICY6aG92ZXIge1xuICAgIGN1cnNvcjogYXV0bztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG5gO1xuXG50eXBlIFNvcnRhYmxlSXRlbVByb3BzID0ge1xuICBpZDogc3RyaW5nO1xuICBjaGlsZHJlbjogKGxpc3RlbmVyczogYW55KSA9PiBSZWFjdC5SZWFjdE5vZGU7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaXNTb3J0aW5nOiBib29sZWFuO1xufTtcblxuY29uc3QgU29ydGFibGVJdGVtID0gKHtpZCwgY2hpbGRyZW4sIGlzU29ydGluZ306IFNvcnRhYmxlSXRlbVByb3BzKSA9PiB7XG4gIGNvbnN0IHthdHRyaWJ1dGVzLCBsaXN0ZW5lcnMsIHNldE5vZGVSZWYsIHRyYW5zZm9ybSwgdHJhbnNpdGlvbiwgaXNEcmFnZ2luZ30gPSB1c2VTb3J0YWJsZSh7aWR9KTtcbiAgY29uc3Qgc3R5bGUgPSB7XG4gICAgdHJhbnNmb3JtOiBDU1MuVHJhbnNmb3JtLnRvU3RyaW5nKHRyYW5zZm9ybSksXG4gICAgdHJhbnNpdGlvbixcbiAgICB6SW5kZXg6IGlzRHJhZ2dpbmcgPyAxIDogMFxuICB9O1xuICByZXR1cm4gKFxuICAgIDxDb2xvclBhbGV0dGVJdGVtXG4gICAgICByZWY9e3NldE5vZGVSZWZ9XG4gICAgICBzdHlsZT17c3R5bGV9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2N1c3RvbS1wYWxldHRlX19zb3J0YWJsZS1pdGVtcycsIHtzb3J0aW5nOiBpc1NvcnRpbmcgfHwgaXNEcmFnZ2luZ30pfVxuICAgICAgey4uLmF0dHJpYnV0ZXN9XG4gICAgPlxuICAgICAge2NoaWxkcmVuKGxpc3RlbmVycyl9XG4gICAgPC9Db2xvclBhbGV0dGVJdGVtPlxuICApO1xufTtcblxudHlwZSBXcmFwcGVkU29ydGFibGVDb250YWluZXJQcm9wcyA9IHtcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgb25Tb3J0RW5kOiAoZXZlbnQ6IERyYWdFbmRFdmVudCkgPT4gdm9pZDtcbiAgb25Tb3J0U3RhcnQ6ICgpID0+IHZvaWQ7XG59O1xuXG5jb25zdCBXcmFwcGVkU29ydGFibGVDb250YWluZXIgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBvblNvcnRFbmQsXG4gIG9uU29ydFN0YXJ0XG59OiBXcmFwcGVkU29ydGFibGVDb250YWluZXJQcm9wcykgPT4ge1xuICBjb25zdCBzZW5zb3JzID0gdXNlU2Vuc29ycyh1c2VTZW5zb3IoUG9pbnRlclNlbnNvciksIHVzZVNlbnNvcihLZXlib2FyZFNlbnNvcikpO1xuICByZXR1cm4gKFxuICAgIDxEbmRDb250ZXh0XG4gICAgICBzZW5zb3JzPXtzZW5zb3JzfVxuICAgICAgY29sbGlzaW9uRGV0ZWN0aW9uPXtjbG9zZXN0Q2VudGVyfVxuICAgICAgb25EcmFnRW5kPXtvblNvcnRFbmR9XG4gICAgICBvbkRyYWdTdGFydD17b25Tb3J0U3RhcnR9XG4gICAgPlxuICAgICAgPFNvcnRhYmxlQ29udGV4dFxuICAgICAgICBpdGVtcz17UmVhY3QuQ2hpbGRyZW4ubWFwKGNoaWxkcmVuLCAoXywgaW5kZXgpID0+IGAke2luZGV4fWApIHx8IFtdfVxuICAgICAgICBzdHJhdGVneT17dmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5fVxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT57Y2hpbGRyZW59PC9kaXY+XG4gICAgICA8L1NvcnRhYmxlQ29udGV4dD5cbiAgICA8L0RuZENvbnRleHQ+XG4gICk7XG59O1xuXG50eXBlIERyYWdIYW5kbGVQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPHtjbGFzc05hbWU/OiBzdHJpbmd9PjtcbmNvbnN0IERyYWdIYW5kbGUgPSAoe2NsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLmxpc3RlbmVyc306IERyYWdIYW5kbGVQcm9wcykgPT4gKFxuICA8U3R5bGVkRHJhZ0hhbmRsZSBjbGFzc05hbWU9e2NsYXNzTmFtZX0gey4uLmxpc3RlbmVyc30+XG4gICAge2NoaWxkcmVufVxuICA8L1N0eWxlZERyYWdIYW5kbGU+XG4pO1xuXG5leHBvcnQgdHlwZSBDb2xvclBhbGV0dGVJbnB1dFByb3BzID0ge1xuICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyO1xuICBvbkNoYW5nZTogKHZhbDogdW5rbm93bikgPT4gdm9pZDtcbiAgaWQ6IHN0cmluZztcbiAgd2lkdGg6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGVkaXRhYmxlOiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IENvbG9yUGFsZXR0ZUlucHV0ID0gKHtcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBpZCxcbiAgd2lkdGgsXG4gIHRleHRBbGlnbixcbiAgZWRpdGFibGVcbn06IENvbG9yUGFsZXR0ZUlucHV0UHJvcHMpID0+IHtcbiAgY29uc3QgW3N0YXRlVmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKHZhbHVlKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWYobnVsbCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0VmFsdWUodmFsdWUpO1xuICB9LCBbdmFsdWVdKTtcblxuICBjb25zdCBvbktleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICBlID0+IHtcbiAgICAgIHN3aXRjaCAoZS5rZXlDb2RlKSB7XG4gICAgICAgIGNhc2UgS2V5RXZlbnQuRE9NX1ZLX0VOVEVSOlxuICAgICAgICBjYXNlIEtleUV2ZW50LkRPTV9WS19SRVRVUk46XG4gICAgICAgICAgb25DaGFuZ2Uoc3RhdGVWYWx1ZSk7XG4gICAgICAgICAgaWYgKGlucHV0UmVmICE9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBpbnB1dFJlZj8uY3VycmVudC5ibHVyKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0sXG4gICAgW29uQ2hhbmdlLCBzdGF0ZVZhbHVlXVxuICApO1xuXG4gIGNvbnN0IF9vbkNoYW5nZSA9IHVzZUNhbGxiYWNrKGUgPT4gc2V0VmFsdWUoZS50YXJnZXQudmFsdWUpLCBbc2V0VmFsdWVdKTtcbiAgY29uc3Qgb25CbHVyID0gdXNlQ2FsbGJhY2soKCkgPT4gb25DaGFuZ2Uoc3RhdGVWYWx1ZSksIFtvbkNoYW5nZSwgc3RhdGVWYWx1ZV0pO1xuXG4gIHJldHVybiBlZGl0YWJsZSA/IChcbiAgICA8U3R5bGVkSW5wdXRcbiAgICAgIHJlZj17aW5wdXRSZWZ9XG4gICAgICBjbGFzc05hbWU9XCJjdXN0b20tcGFsZXR0ZS1oZXhfX2lucHV0XCJcbiAgICAgIHZhbHVlPXtzdGF0ZVZhbHVlfVxuICAgICAgb25DaGFuZ2U9e19vbkNoYW5nZX1cbiAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICBpZD17aWR9XG4gICAgICB3aWR0aD17d2lkdGh9XG4gICAgICB0ZXh0QWxpZ249e3RleHRBbGlnbn1cbiAgICAgIHNlY29uZGFyeVxuICAgIC8+XG4gICkgOiAoXG4gICAgPElucHV0VGV4dCBjbGFzc05hbWU9XCJjdXN0b20tcGFsZXR0ZS1oZXhfX2lucHV0X190ZXh0XCIgd2lkdGg9e3dpZHRofSB0ZXh0QWxpZ249e3RleHRBbGlnbn0+XG4gICAgICB7dmFsdWV9XG4gICAgPC9JbnB1dFRleHQ+XG4gICk7XG59O1xuXG5jb25zdCBEYXNoID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDZweDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yfTtcbiAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgbWFyZ2luLXJpZ2h0OiA0cHg7XG5gO1xuXG5jb25zdCBTdHlsZWRSYW5nZUlucHV0ID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luLWxlZnQ6IDEycHg7XG5gO1xuXG5jb25zdCBTdHlsZWRDb2xvckhleElucHV0ID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luLWxlZnQ6IDEycHg7XG5gO1xuXG5leHBvcnQgY29uc3QgRWRpdGFibGVDb2xvclJhbmdlOiBSZWFjdC5GQzxFZGl0YWJsZUNvbG9yUmFuZ2VQcm9wcz4gPSAoe1xuICBpdGVtLFxuICBpc0xhc3QsXG4gIGluZGV4LFxuICBlZGl0Q29sb3JNYXAsXG4gIGVkaXRhYmxlXG59KSA9PiB7XG4gIGNvbnN0IG5vTWluQm91bmQgPSAhTnVtYmVyLmlzRmluaXRlKGl0ZW0uaW5wdXRzWzBdKSAmJiBpbmRleCA9PT0gMDtcbiAgY29uc3Qgbm9NYXhCb3VuZCA9ICFOdW1iZXIuaXNGaW5pdGUoaXRlbS5pbnB1dHNbMV0pICYmIGlzTGFzdDtcbiAgY29uc3Qgb25DaGFuZ2VMZWZ0ID0gdXNlQ2FsbGJhY2soXG4gICAgdmFsID0+IHtcbiAgICAgIGlmIChlZGl0YWJsZSAmJiBlZGl0Q29sb3JNYXApIGVkaXRDb2xvck1hcChwYXJzZUZsb2F0KHZhbCksIGluZGV4IC0gMSk7XG4gICAgfSxcbiAgICBbZWRpdENvbG9yTWFwLCBpbmRleCwgZWRpdGFibGVdXG4gICk7XG4gIGNvbnN0IG9uQ2hhbmdlUmlnaHQgPSB1c2VDYWxsYmFjayhcbiAgICB2YWwgPT4ge1xuICAgICAgaWYgKGVkaXRhYmxlICYmIGVkaXRDb2xvck1hcCkgZWRpdENvbG9yTWFwKHBhcnNlRmxvYXQodmFsKSwgaW5kZXgpO1xuICAgIH0sXG4gICAgW2VkaXRDb2xvck1hcCwgaW5kZXgsIGVkaXRhYmxlXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFJhbmdlSW5wdXQ+XG4gICAgICA8Q29sb3JQYWxldHRlSW5wdXRcbiAgICAgICAgdmFsdWU9e25vTWluQm91bmQgPyAnTGVzcycgOiBpdGVtLmlucHV0c1swXS50b1N0cmluZygpfVxuICAgICAgICBpZD17YGNvbG9yLXBhbGV0dGUtaW5wdXQtJHtpbmRleH0tbGVmdGB9XG4gICAgICAgIHdpZHRoPVwiNTBweFwiXG4gICAgICAgIHRleHRBbGlnbj1cImVuZFwiXG4gICAgICAgIGVkaXRhYmxlPXtub01pbkJvdW5kID8gZmFsc2UgOiBlZGl0YWJsZX1cbiAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlTGVmdH1cbiAgICAgIC8+XG4gICAgICA8RGFzaCAvPlxuICAgICAgPENvbG9yUGFsZXR0ZUlucHV0XG4gICAgICAgIHZhbHVlPXtub01heEJvdW5kID8gJ01vcmUnIDogaXRlbS5pbnB1dHNbMV0udG9TdHJpbmcoKX1cbiAgICAgICAgaWQ9e2Bjb2xvci1wYWxldHRlLWlucHV0LSR7aW5kZXh9LXJpZ2h0YH1cbiAgICAgICAgd2lkdGg9XCI1MHB4XCJcbiAgICAgICAgdGV4dEFsaWduPVwiZW5kXCJcbiAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlUmlnaHR9XG4gICAgICAgIGVkaXRhYmxlPXtub01heEJvdW5kID8gZmFsc2UgOiBlZGl0YWJsZX1cbiAgICAgIC8+XG4gICAgPC9TdHlsZWRSYW5nZUlucHV0PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IEFkZENvbG9yU3RvcCA9ICh7b25Db2xvckFkZCwgSWNvbkNvbXBvbmVudH0pID0+IChcbiAgPFN0eWxlZEFjdGlvbiBvbkNsaWNrPXtvbkNvbG9yQWRkfSBjbGFzc05hbWU9XCJhZGRjb2xvclwiPlxuICAgIDxJY29uQ29tcG9uZW50IGhlaWdodD1cIjE0cHhcIiAvPlxuICA8L1N0eWxlZEFjdGlvbj5cbik7XG5cbmV4cG9ydCBjb25zdCBEZWxldGVDb2xvclN0b3AgPSAoe29uQ29sb3JEZWxldGUsIEljb25Db21wb25lbnR9KSA9PiAoXG4gIDxTdHlsZWRBY3Rpb24gb25DbGljaz17b25Db2xvckRlbGV0ZX0gY2xhc3NOYW1lPVwidHJhc2hiaW5cIj5cbiAgICA8SWNvbkNvbXBvbmVudCBoZWlnaHQ9XCIxNHB4XCIgLz5cbiAgPC9TdHlsZWRBY3Rpb24+XG4pO1xuXG5leHBvcnQgY29uc3QgQ3VzdG9tUGFsZXR0ZUlucHV0OiBSZWFjdC5GQzxDdXN0b21QYWxldHRlSW5wdXRQcm9wcz4gPSAoe1xuICBpbmRleCxcbiAgaXNTb3J0aW5nLFxuICBjb2xvcixcbiAgY29sb3JCcmVha3MsXG4gIGlucHV0Q29sb3JIZXgsXG4gIGVkaXRDb2xvck1hcFZhbHVlLFxuICBhY3Rpb25JY29ucyA9IGRlZmF1bHRBY3Rpb25JY29ucyxcbiAgZGlzYWJsZUFwcGVuZCxcbiAgZGlzYWJsZURlbGV0ZSxcbiAgb25EZWxldGUsXG4gIG9uQWRkLFxuICBvblRvZ2dsZVNrZXRjaGVyXG59KSA9PiB7XG4gIGNvbnN0IG9uQ2xpY2tTd3RhY2ggPSB1c2VDYWxsYmFjaygoKSA9PiBvblRvZ2dsZVNrZXRjaGVyKGluZGV4KSwgW29uVG9nZ2xlU2tldGNoZXIsIGluZGV4XSk7XG4gIGNvbnN0IG9uQ29sb3JJbnB1dCA9IHVzZUNhbGxiYWNrKHYgPT4gaW5wdXRDb2xvckhleChpbmRleCwgdiksIFtpbnB1dENvbG9ySGV4LCBpbmRleF0pO1xuICBjb25zdCBvbkNvbG9yRGVsZXRlID0gdXNlQ2FsbGJhY2soKCkgPT4gb25EZWxldGUoaW5kZXgpLCBbb25EZWxldGUsIGluZGV4XSk7XG4gIGNvbnN0IG9uQ29sb3JBZGQgPSB1c2VDYWxsYmFjaygoKSA9PiBvbkFkZChpbmRleCksIFtvbkFkZCwgaW5kZXhdKTtcbiAgY29uc3Qgc2hvd0hleElucHV0ID0gIWNvbG9yQnJlYWtzO1xuXG4gIHJldHVybiAoXG4gICAgPFNvcnRhYmxlSXRlbSBpZD17YCR7aW5kZXh9YH0gaXNTb3J0aW5nPXtpc1NvcnRpbmd9PlxuICAgICAge2xpc3RlbmVycyA9PiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjdXN0b20tcGFsZXR0ZS1pbnB1dF9fbGVmdFwiPlxuICAgICAgICAgICAgPERyYWdIYW5kbGUgY2xhc3NOYW1lPVwibGF5ZXJfX2RyYWctaGFuZGxlXCIgey4uLmxpc3RlbmVyc30+XG4gICAgICAgICAgICAgIDxhY3Rpb25JY29ucy5zb3J0IGhlaWdodD1cIjIwcHhcIiAvPlxuICAgICAgICAgICAgPC9EcmFnSGFuZGxlPlxuICAgICAgICAgICAgPENvbG9yU3dhdGNoIGNvbG9yPXtjb2xvcn0gb25DbGljaz17b25DbGlja1N3dGFjaH0gLz5cbiAgICAgICAgICAgIHtzaG93SGV4SW5wdXQgPyAoXG4gICAgICAgICAgICAgIDxTdHlsZWRDb2xvckhleElucHV0PlxuICAgICAgICAgICAgICAgIDxDb2xvclBhbGV0dGVJbnB1dFxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbG9yLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25Db2xvcklucHV0fVxuICAgICAgICAgICAgICAgICAgaWQ9e2BpbnB1dC1sYXllci1sYWJlbC0ke2luZGV4fWB9XG4gICAgICAgICAgICAgICAgICBlZGl0YWJsZVxuICAgICAgICAgICAgICAgICAgdGV4dEFsaWduPVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjcwcHhcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvU3R5bGVkQ29sb3JIZXhJbnB1dD5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAge2lzTnVtZXJpY0NvbG9yQnJlYWtzKGNvbG9yQnJlYWtzKSA/IChcbiAgICAgICAgICAgICAgPEVkaXRhYmxlQ29sb3JSYW5nZVxuICAgICAgICAgICAgICAgIGl0ZW09e2NvbG9yQnJlYWtzW2luZGV4XX1cbiAgICAgICAgICAgICAgICBpc0xhc3Q9e2luZGV4ID09PSBjb2xvckJyZWFrcy5sZW5ndGggLSAxfVxuICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICBlZGl0Q29sb3JNYXA9e2VkaXRDb2xvck1hcFZhbHVlfVxuICAgICAgICAgICAgICAgIGVkaXRhYmxlXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImN1c3RvbS1wYWxldHRlLWlucHV0X19yaWdodFwiPlxuICAgICAgICAgICAgeyFkaXNhYmxlQXBwZW5kID8gKFxuICAgICAgICAgICAgICA8QWRkQ29sb3JTdG9wIG9uQ29sb3JBZGQ9e29uQ29sb3JBZGR9IEljb25Db21wb25lbnQ9e2FjdGlvbkljb25zLmFkZH0gLz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgeyFkaXNhYmxlRGVsZXRlID8gKFxuICAgICAgICAgICAgICA8RGVsZXRlQ29sb3JTdG9wIG9uQ29sb3JEZWxldGU9e29uQ29sb3JEZWxldGV9IEljb25Db21wb25lbnQ9e2FjdGlvbkljb25zLmRlbGV0ZX0gLz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgPC9Tb3J0YWJsZUl0ZW0+XG4gICk7XG59O1xuXG5jb25zdCBTdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyV3JhcHBlciA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdjYXRlZ29yaWNhbC12YWx1ZS1waWNrZXInXG59KWBcbiAgd2lkdGg6IDE1MHB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dENvbG9yfTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgY29sdW1uLWdhcDogOHB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG5gO1xuXG50eXBlIFN0eWxlZENhdGVnb3JpY2FsVmFsdWVQaWNrZXJQcm9wcyA9IHtub0JvcmRlcjogYm9vbGVhbn07XG5jb25zdCBTdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyID0gc3R5bGVkLmRpdjxTdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyUHJvcHM+YFxuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgYm9yZGVyLWJvdHRvbTogJHtwcm9wcyA9PiAocHJvcHMubm9Cb3JkZXIgPyAnJyA6ICcxcHggZGFzaGVkJyl9O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBtYXgtd2lkdGg6IDEwMHB4O1xuYDtcblxudHlwZSBEcm9wZG93blZhbHVlc1dyYXBwZXJQcm9wcyA9IHt3aWR0aDogbnVtYmVyfTtcbmNvbnN0IERyb3Bkb3duVmFsdWVzV3JhcHBlciA9IHN0eWxlZC5kaXY8RHJvcGRvd25WYWx1ZXNXcmFwcGVyUHJvcHM+YFxuICBib3JkZXI6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRyb3Bkb3duV3JhcHBlclp9O1xuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy53aWR0aH1weDtcbmA7XG5cbnR5cGUgU2VsZWN0ZWRWYWx1ZXNXcmFwcGVyUHJvcHMgPSB7d2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXJ9O1xuY29uc3QgU2VsZWN0ZWRWYWx1ZXNXcmFwcGVyID0gc3R5bGVkKERyb3Bkb3duVmFsdWVzV3JhcHBlcik8U2VsZWN0ZWRWYWx1ZXNXcmFwcGVyUHJvcHM+YFxuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy53aWR0aH1weDtcbiAgbWF4LWhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy5oZWlnaHR9cHg7XG4gIG92ZXJmbG93OiBhdXRvO1xuXG4gIC5jdXN0b20tcGFsZXR0ZS1jaGlja2xldGVkLWlucHV0IHtcbiAgICBwYWRkaW5nOiA4cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bldyYXBwZXJafTtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkRHJvcGRvd25IZWFkZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0Q29sb3J9O1xuICBwYWRkaW5nOiAwIDhweDtcbiAgZm9udC1zaXplOiAxMHB4O1xuXG4gIC5idXR0b24ge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkVG9vbHRpcENvbnRlbnQgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiA4cHg7XG4gIHdpZHRoOiAxNTBweDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuXG4gIGRpdiB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB9XG5gO1xuXG5jb25zdCBOVU1CRVJfVkFMVUVTX0lOX1RPT0xUSVAgPSAxMDtcblxuY29uc3QgQ2F0ZWdvcmljYWxTZWxlY3RvckNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgb25TZWxlY3RSZXN0OiAoKSA9PiBudWxsLFxuICBvblJlc2V0OiAoKSA9PiBudWxsXG59KTtcblxuLy8gQ2F0ZWdvcmljYWwgdmFsdWVzIGRyb3Bkb3dubGlzdDpcbi8vIGV4dGVuZGluZyBEcm9wZG93bkxpc3QgYW5kIGFkZGluZyAnU2VsZWN0IHRoZSBSZXN0JyBhbmQgJ1Jlc2V0JyBidXR0b25zXG5jbGFzcyBNb2RpZmllZERyb3Bkb3duTGlzdCBleHRlbmRzIERyb3Bkb3duTGlzdCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8Q2F0ZWdvcmljYWxTZWxlY3RvckNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAge2NvbnRleHQgPT4gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPFN0eWxlZERyb3Bkb3duSGVhZGVyPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gbGluayBzaXplPVwic21hbFwiIG9uQ2xpY2s9e2NvbnRleHQub25TZWxlY3RSZXN0fT5cbiAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGUgUmVzdFxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gbGluayBzaXplPVwic21hbFwiIG9uQ2xpY2s9e2NvbnRleHQub25SZXNldH0+XG4gICAgICAgICAgICAgICAgICBSZXNldFxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8L1N0eWxlZERyb3Bkb3duSGVhZGVyPlxuICAgICAgICAgICAgICA8RGl2aWRlckxpbmUgLz5cbiAgICAgICAgICAgICAgPERyb3Bkb3duTGlzdCB7Li4udGhpcy5wcm9wc30gLz5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQ2F0ZWdvcmljYWxTZWxlY3RvckNvbnRleHQuQ29uc3VtZXI+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIENhdGVnb3JpY2FsU2VsZWN0b3JQcm9wcyA9IHtcbiAgaW5kZXg6IG51bWJlcjtcbiAgc2VsZWN0ZWRWYWx1ZXM6IChzdHJpbmcgfCBudW1iZXIgfCBudWxsKVtdO1xuICBhbGxWYWx1ZXM6IHN0cmluZ1tdIHwgbnVtYmVyW107XG4gIGFkZENvbG9yTWFwVmFsdWU/OiAodjogKG51bWJlciB8IHN0cmluZyB8IG51bGwpW10sIGk6IG51bWJlcikgPT4gdm9pZDtcbiAgcmVtb3ZlQ29sb3JNYXBWYWx1ZT86ICh2OiBudW1iZXIgfCBzdHJpbmcsIGk6IG51bWJlcikgPT4gdm9pZDtcbiAgcmVzZXRDb2xvck1hcFZhbHVlPzogKGk6IG51bWJlcikgPT4gdm9pZDtcbiAgc2VsZWN0UmVzdENvbG9yTWFwVmFsdWU/OiAoaTogbnVtYmVyKSA9PiB2b2lkO1xuICBlZGl0YWJsZT86IGJvb2xlYW47XG59O1xuXG4vLyBDYXRlZ29yaWNhbCB2YWx1ZXMgc2VsZWN0b3IgZm9yIGVkaXRpbmcgY2F0ZWdvcmljYWwgdmFsdWVzXG5leHBvcnQgY29uc3QgQ2F0ZWdvcmljYWxTZWxlY3RvcjogUmVhY3QuRkM8Q2F0ZWdvcmljYWxTZWxlY3RvclByb3BzPiA9ICh7XG4gIGluZGV4LFxuICBzZWxlY3RlZFZhbHVlcyxcbiAgYWxsVmFsdWVzLFxuICBhZGRDb2xvck1hcFZhbHVlLFxuICByZW1vdmVDb2xvck1hcFZhbHVlLFxuICByZXNldENvbG9yTWFwVmFsdWUsXG4gIHNlbGVjdFJlc3RDb2xvck1hcFZhbHVlLFxuICBlZGl0YWJsZSA9IHRydWVcbn06IENhdGVnb3JpY2FsU2VsZWN0b3JQcm9wcykgPT4ge1xuICBjb25zdCBbc2hvd1R5cGVhaGVhZCwgc2V0U2hvd1R5cGVhaGVhZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3Qgb25PcHRpb25TZWxlY3RlZCA9IHVzZUNhbGxiYWNrKFxuICAgIHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IHByZXZpb3VzU2VsZWN0ZWQgPSB0b0FycmF5KHNlbGVjdGVkVmFsdWVzKTtcbiAgICAgIGNvbnN0IGl0ZW1zID0gdW5pcShwcmV2aW91c1NlbGVjdGVkLmNvbmNhdCh0b0FycmF5KHZhbHVlKSkpO1xuICAgICAgYWRkQ29sb3JNYXBWYWx1ZT8uKGl0ZW1zLCBpbmRleCk7XG4gICAgfSxcbiAgICBbc2VsZWN0ZWRWYWx1ZXMsIGluZGV4LCBhZGRDb2xvck1hcFZhbHVlXVxuICApO1xuXG4gIGNvbnN0IG9uT3BlbkRyb3Bkb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFNob3dUeXBlYWhlYWQodHJ1ZSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvbkNsb3NlRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0U2hvd1R5cGVhaGVhZChmYWxzZSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvblJlbW92ZUl0ZW0gPSB1c2VDYWxsYmFjayhcbiAgICB2YWx1ZSA9PiB7XG4gICAgICByZW1vdmVDb2xvck1hcFZhbHVlPy4odmFsdWUsIGluZGV4KTtcbiAgICB9LFxuICAgIFtpbmRleCwgcmVtb3ZlQ29sb3JNYXBWYWx1ZV1cbiAgKTtcblxuICBjb25zdCBvblJlc2V0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHJlc2V0Q29sb3JNYXBWYWx1ZT8uKGluZGV4KTtcbiAgICBzZXRTaG93VHlwZWFoZWFkKGZhbHNlKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSwgW3Jlc2V0Q29sb3JNYXBWYWx1ZSwgaW5kZXhdKTtcblxuICBjb25zdCBvblNlbGVjdFJlc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2VsZWN0UmVzdENvbG9yTWFwVmFsdWU/LihpbmRleCk7XG4gICAgc2V0U2hvd1R5cGVhaGVhZChmYWxzZSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sIFtzZWxlY3RSZXN0Q29sb3JNYXBWYWx1ZSwgaW5kZXhdKTtcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyV3JhcHBlcj5cbiAgICAgIHtlZGl0YWJsZSAmJiA8QWRkIGhlaWdodD1cIjEycHhcIiBvbkNsaWNrPXtvbk9wZW5Ecm9wZG93bn0gLz59XG4gICAgICA8U3R5bGVkQ2F0ZWdvcmljYWxWYWx1ZVBpY2tlclxuICAgICAgICBub0JvcmRlcj17c2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID09PSAwIHx8ICFlZGl0YWJsZX1cbiAgICAgICAgb25DbGljaz17b25PcGVuRHJvcGRvd259XG4gICAgICAgIGRhdGEtdGlwXG4gICAgICAgIGRhdGEtZm9yPXtgY2F0ZWdvcnktdmFsdWVzLSR7aW5kZXh9YH1cbiAgICAgID5cbiAgICAgICAge3NlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gJ0FkZCBWYWx1ZSdcbiAgICAgICAgICA6IHNlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gMVxuICAgICAgICAgID8gc2VsZWN0ZWRWYWx1ZXNbMF1cbiAgICAgICAgICA6IGAke3NlbGVjdGVkVmFsdWVzLmxlbmd0aH0gc2VsZWN0ZWRgfVxuICAgICAgICB7c2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID4gMSAmJiAoXG4gICAgICAgICAgPFRvb2x0aXAgaWQ9e2BjYXRlZ29yeS12YWx1ZXMtJHtpbmRleH1gfSBwbGFjZT1cInRvcFwiIGludGVyYWN0aXZlPXt0cnVlfT5cbiAgICAgICAgICAgIDxTdHlsZWRUb29sdGlwQ29udGVudD5cbiAgICAgICAgICAgICAge3NlbGVjdGVkVmFsdWVzLnNsaWNlKDAsIE5VTUJFUl9WQUxVRVNfSU5fVE9PTFRJUCkubWFwKCh2YWx1ZSwgaSkgPT4gKFxuICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpfT57dmFsdWV9PC9kaXY+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICB7c2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID4gTlVNQkVSX1ZBTFVFU19JTl9UT09MVElQICYmIDxkaXY+Li4uPC9kaXY+fVxuICAgICAgICAgICAgPC9TdHlsZWRUb29sdGlwQ29udGVudD5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICl9XG4gICAgICA8L1N0eWxlZENhdGVnb3JpY2FsVmFsdWVQaWNrZXI+XG4gICAgICB7ZWRpdGFibGUgJiYgKFxuICAgICAgICA8UG9ydGFsZWQgbGVmdD17MH0gdG9wPXswfSBpc09wZW5lZD17c2hvd1R5cGVhaGVhZH0gb25DbG9zZT17b25DbG9zZURyb3Bkb3dufT5cbiAgICAgICAgICB7c2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID4gMSAmJiAoXG4gICAgICAgICAgICA8U2VsZWN0ZWRWYWx1ZXNXcmFwcGVyIHdpZHRoPXsyNTB9IGhlaWdodD17MjAwfT5cbiAgICAgICAgICAgICAgPENoaWNrbGV0ZWRJbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J2N1c3RvbS1wYWxldHRlLWNoaWNrbGV0ZWQtaW5wdXQnfVxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e3NlbGVjdGVkVmFsdWVzfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXsnJ31cbiAgICAgICAgICAgICAgICByZW1vdmVJdGVtPXtvblJlbW92ZUl0ZW19XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gbnVsbH1cbiAgICAgICAgICAgICAgICBDdXN0b21DaGlja2xldENvbXBvbmVudD17bnVsbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvU2VsZWN0ZWRWYWx1ZXNXcmFwcGVyPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPERyb3Bkb3duVmFsdWVzV3JhcHBlciB3aWR0aD17MjUwfT5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3twb3NpdGlvbjogJ3JlbGF0aXZlJ319PlxuICAgICAgICAgICAgICA8Q2F0ZWdvcmljYWxTZWxlY3RvckNvbnRleHQuUHJvdmlkZXJcbiAgICAgICAgICAgICAgICB2YWx1ZT17e1xuICAgICAgICAgICAgICAgICAgb25SZXNldCxcbiAgICAgICAgICAgICAgICAgIG9uU2VsZWN0UmVzdFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VHlwZWFoZWFkXG4gICAgICAgICAgICAgICAgICBjdXN0b21DbGFzc2VzPXt7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHM6ICdsaXN0LXNlbGVjdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQ6ICd0eXBlYWhlYWRfX2lucHV0JyxcbiAgICAgICAgICAgICAgICAgICAgbGlzdEl0ZW06ICdsaXN0X19pdGVtJyxcbiAgICAgICAgICAgICAgICAgICAgbGlzdEFuY2hvcjogJ2xpc3RfX2l0ZW1fX2FuY2hvcidcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBvcHRpb25zPXthbGxWYWx1ZXN9XG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17J1NlYXJjaCd9XG4gICAgICAgICAgICAgICAgICBvbk9wdGlvblNlbGVjdGVkPXtvbk9wdGlvblNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgY3VzdG9tTGlzdENvbXBvbmVudD17TW9kaWZpZWREcm9wZG93bkxpc3R9XG4gICAgICAgICAgICAgICAgICBjdXN0b21MaXN0SXRlbUNvbXBvbmVudD17TGlzdEl0ZW19XG4gICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgc2hvd09wdGlvbnNXaGVuRW1wdHlcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e3NlbGVjdGVkVmFsdWVzfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQ2F0ZWdvcmljYWxTZWxlY3RvckNvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L0Ryb3Bkb3duVmFsdWVzV3JhcHBlcj5cbiAgICAgICAgPC9Qb3J0YWxlZD5cbiAgICAgICl9XG4gICAgPC9TdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyV3JhcHBlcj5cbiAgKTtcbn07XG5cbmV4cG9ydCB0eXBlIENhdGVnb3JpY2FsQ3VzdG9tUGFsZXR0ZUlucHV0UHJvcHMgPSB7XG4gIGluZGV4OiBudW1iZXI7XG4gIGlzU29ydGluZzogYm9vbGVhbjtcbiAgY29sb3I6IEhleENvbG9yO1xuICBjb2xvck1hcD86IENvbG9yTWFwIHwgbnVsbDtcbiAgYWRkQ29sb3JNYXBWYWx1ZTogKHY6IChudW1iZXIgfCBzdHJpbmcgfCBudWxsKVtdLCBpOiBudW1iZXIpID0+IHZvaWQ7XG4gIHJlbW92ZUNvbG9yTWFwVmFsdWU6ICh2OiBudW1iZXIgfCBzdHJpbmcsIGk6IG51bWJlcikgPT4gdm9pZDtcbiAgcmVzZXRDb2xvck1hcFZhbHVlOiAoaTogbnVtYmVyKSA9PiB2b2lkO1xuICBzZWxlY3RSZXN0Q29sb3JNYXBWYWx1ZTogKGk6IG51bWJlcikgPT4gdm9pZDtcbiAgYWN0aW9uSWNvbnM/OiBBY3Rpb25JY29ucztcbiAgb25EZWxldGU6IChpbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBvbkFkZDogKGluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gIG9uVG9nZ2xlU2tldGNoZXI6IChpbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBhbGxWYWx1ZXM6IHN0cmluZ1tdIHwgbnVtYmVyW107XG4gIGRpc2FibGVEZWxldGU/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IENhdGVnb3JpY2FsQ3VzdG9tUGFsZXR0ZUlucHV0OiBSZWFjdC5GQzxDYXRlZ29yaWNhbEN1c3RvbVBhbGV0dGVJbnB1dFByb3BzPiA9ICh7XG4gIGluZGV4LFxuICBpc1NvcnRpbmcsXG4gIGNvbG9yLFxuICBjb2xvck1hcCxcbiAgYWN0aW9uSWNvbnMgPSBkZWZhdWx0QWN0aW9uSWNvbnMsXG4gIG9uRGVsZXRlLFxuICBkaXNhYmxlRGVsZXRlLFxuICBvblRvZ2dsZVNrZXRjaGVyLFxuICBhZGRDb2xvck1hcFZhbHVlLFxuICByZW1vdmVDb2xvck1hcFZhbHVlLFxuICByZXNldENvbG9yTWFwVmFsdWUsXG4gIHNlbGVjdFJlc3RDb2xvck1hcFZhbHVlLFxuICBhbGxWYWx1ZXNcbn06IENhdGVnb3JpY2FsQ3VzdG9tUGFsZXR0ZUlucHV0UHJvcHMpID0+IHtcbiAgY29uc3Qgc2VsZWN0ZWRWYWx1ZXM6IChudW1iZXIgfCBzdHJpbmcgfCBudWxsKVtdID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFjb2xvck1hcCB8fCAhY29sb3JNYXBbaW5kZXhdKSByZXR1cm4gW107XG4gICAgY29uc3QgdmFsdWUgPSBjb2xvck1hcFtpbmRleF1bMF07XG4gICAgY29uc3QgdmFsdWVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IHZhbHVlICE9PSBudWxsID8gW3ZhbHVlXSA6IFtdO1xuICAgIHJldHVybiB2YWx1ZXM7XG4gIH0sIFtjb2xvck1hcCwgaW5kZXhdKTtcblxuICBjb25zdCBvbkNsaWNrU3d0YWNoID0gdXNlQ2FsbGJhY2soKCkgPT4gb25Ub2dnbGVTa2V0Y2hlcihpbmRleCksIFtvblRvZ2dsZVNrZXRjaGVyLCBpbmRleF0pO1xuICBjb25zdCBvbkNvbG9yRGVsZXRlID0gdXNlQ2FsbGJhY2soKCkgPT4gb25EZWxldGUoaW5kZXgpLCBbb25EZWxldGUsIGluZGV4XSk7XG5cbiAgcmV0dXJuIChcbiAgICA8U29ydGFibGVJdGVtIGlkPXtgJHtpbmRleH1gfSBpc1NvcnRpbmc9e2lzU29ydGluZ30+XG4gICAgICB7bGlzdGVuZXJzID0+IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImN1c3RvbS1wYWxldHRlLWlucHV0X19sZWZ0XCI+XG4gICAgICAgICAgICA8RHJhZ0hhbmRsZSBjbGFzc05hbWU9XCJsYXllcl9fZHJhZy1oYW5kbGVcIiB7Li4ubGlzdGVuZXJzfT5cbiAgICAgICAgICAgICAgPGFjdGlvbkljb25zLnNvcnQgaGVpZ2h0PVwiMjBweFwiIC8+XG4gICAgICAgICAgICA8L0RyYWdIYW5kbGU+XG4gICAgICAgICAgICA8Q29sb3JTd2F0Y2ggY29sb3I9e2NvbG9yfSBvbkNsaWNrPXtvbkNsaWNrU3d0YWNofSAvPlxuICAgICAgICAgICAge2NvbG9yTWFwICYmIGNvbG9yTWFwW2luZGV4XSAmJiAoXG4gICAgICAgICAgICAgIDxDYXRlZ29yaWNhbFNlbGVjdG9yXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZXM9e3NlbGVjdGVkVmFsdWVzfVxuICAgICAgICAgICAgICAgIGFsbFZhbHVlcz17YWxsVmFsdWVzfVxuICAgICAgICAgICAgICAgIGFkZENvbG9yTWFwVmFsdWU9e2FkZENvbG9yTWFwVmFsdWV9XG4gICAgICAgICAgICAgICAgcmVtb3ZlQ29sb3JNYXBWYWx1ZT17cmVtb3ZlQ29sb3JNYXBWYWx1ZX1cbiAgICAgICAgICAgICAgICByZXNldENvbG9yTWFwVmFsdWU9e3Jlc2V0Q29sb3JNYXBWYWx1ZX1cbiAgICAgICAgICAgICAgICBzZWxlY3RSZXN0Q29sb3JNYXBWYWx1ZT17c2VsZWN0UmVzdENvbG9yTWFwVmFsdWV9XG4gICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImN1c3RvbS1wYWxldHRlLWlucHV0X19yaWdodFwiPlxuICAgICAgICAgICAgeyFkaXNhYmxlRGVsZXRlID8gKFxuICAgICAgICAgICAgICA8RGVsZXRlQ29sb3JTdG9wIG9uQ29sb3JEZWxldGU9e29uQ29sb3JEZWxldGV9IEljb25Db21wb25lbnQ9e2FjdGlvbkljb25zLmRlbGV0ZX0gLz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgPC9Tb3J0YWJsZUl0ZW0+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgQm90dG9tQWN0aW9uID0gKHtvbkNhbmNlbCwgb25Db25maXJtfSkgPT4gKFxuICA8U3R5bGVkQnV0dG9uQ29udGFpbmVyPlxuICAgIDxCdXR0b24gY2xhc3NOYW1lPVwiY29uZmlybS1hcHBseV9fYnV0dG9uXCIgc21hbGwgb25DbGljaz17b25Db25maXJtfT5cbiAgICAgIENvbmZpcm1cbiAgICA8L0J1dHRvbj5cbiAgICA8QnV0dG9uIGxpbmsgc21hbGwgb25DbGljaz17b25DYW5jZWx9PlxuICAgICAgQ2FuY2VsXG4gICAgPC9CdXR0b24+XG4gIDwvU3R5bGVkQnV0dG9uQ29udGFpbmVyPlxuKTtcblxuY29uc3QgU3R5bGVkQ3VzdG9tUGFsZXR0ZSA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdjdXN0b20tcGFsZXR0ZSdcbn0pYFxuICBtYXJnaW4tdG9wOiA4cHg7XG5gO1xuXG5mdW5jdGlvbiBDdXN0b21QYWxldHRlRmFjdG9yeSgpOiBSZWFjdC5GQzxDdXN0b21QYWxldHRlUHJvcHM+IHtcbiAgY29uc3QgQ3VzdG9tUGFsZXR0ZTogUmVhY3QuRkM8Q3VzdG9tUGFsZXR0ZVByb3BzPiA9ICh7XG4gICAgb3JkaW5hbERvbWFpbixcbiAgICBjdXN0b21QYWxldHRlLFxuICAgIHNldENvbG9yUGFsZXR0ZVVJLFxuICAgIHNob3dTa2V0Y2hlcixcbiAgICBhY3Rpb25JY29ucyA9IGRlZmF1bHRBY3Rpb25JY29ucyxcbiAgICBvbkNhbmNlbCxcbiAgICBvbkFwcGx5XG4gIH0pID0+IHtcbiAgICBjb25zdCBbaXNTb3J0aW5nLCBzZXRJc1NvcnRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHtjb2xvcnMsIGNvbG9yTWFwfSA9IGN1c3RvbVBhbGV0dGU7XG4gICAgY29uc3QgY29sb3JCcmVha3MgPSB1c2VNZW1vKFxuICAgICAgKCkgPT5cbiAgICAgICAgY29sb3JNYXBcbiAgICAgICAgICA/IGN1c3RvbVBhbGV0dGUudHlwZSA9PT0gJ2N1c3RvbSdcbiAgICAgICAgICAgID8gY29sb3JNYXBUb0NvbG9yQnJlYWtzKGNvbG9yTWFwKVxuICAgICAgICAgICAgOiBjb2xvck1hcFRvQ2F0ZWdvcmljYWxDb2xvckJyZWFrcyhjb2xvck1hcClcbiAgICAgICAgICA6IG51bGwsXG4gICAgICBbY3VzdG9tUGFsZXR0ZS50eXBlLCBjb2xvck1hcF1cbiAgICApO1xuXG4gICAgY29uc3Qgb25QaWNrZXJVcGRhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAgIGNvbG9yID0+IHtcbiAgICAgICAgaWYgKGNvbG9yICYmIE51bWJlci5pc0Zpbml0ZShzaG93U2tldGNoZXIpKSB7XG4gICAgICAgICAgY29uc3QgbmV3Q3VzdG9tUGFsZXR0ZSA9IHVwZGF0ZUN1c3RvbVBhbGV0dGVDb2xvcihcbiAgICAgICAgICAgIGN1c3RvbVBhbGV0dGUsXG4gICAgICAgICAgICBOdW1iZXIoc2hvd1NrZXRjaGVyKSxcbiAgICAgICAgICAgIGNvbG9yLmhleFxuICAgICAgICAgICk7XG4gICAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgICAgY3VzdG9tUGFsZXR0ZTogbmV3Q3VzdG9tUGFsZXR0ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW2N1c3RvbVBhbGV0dGUsIHNob3dTa2V0Y2hlciwgc2V0Q29sb3JQYWxldHRlVUldXG4gICAgKTtcbiAgICBjb25zdCBvblRvZ2dsZVNrZXRjaGVyID0gdXNlQ2FsbGJhY2soXG4gICAgICB2YWwgPT4ge1xuICAgICAgICBzZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgICAgc2hvd1NrZXRjaGVyOiB2YWxcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgW3NldENvbG9yUGFsZXR0ZVVJXVxuICAgICk7XG4gICAgY29uc3Qgb25EZWxldGUgPSB1c2VDYWxsYmFjayhcbiAgICAgIGluZGV4ID0+IHtcbiAgICAgICAgY29uc3QgbmV3Q3VzdG9tUGFsZXR0ZSA9IHJlbW92ZUN1c3RvbVBhbGV0dGVDb2xvcihjdXN0b21QYWxldHRlLCBpbmRleCk7XG4gICAgICAgIHNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgICBjdXN0b21QYWxldHRlOiBuZXdDdXN0b21QYWxldHRlXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIFtjdXN0b21QYWxldHRlLCBzZXRDb2xvclBhbGV0dGVVSV1cbiAgICApO1xuXG4gICAgY29uc3Qgb25BZGQgPSB1c2VDYWxsYmFjayhcbiAgICAgIGluZGV4ID0+IHtcbiAgICAgICAgLy8gYWRkIGNvbG9yIGF0IHRoZSBlbmRcbiAgICAgICAgY29uc3QgbmV3Q3VzdG9tUGFsZXR0ZSA9IGFkZEN1c3RvbVBhbGV0dGVDb2xvcihjdXN0b21QYWxldHRlLCBpbmRleCk7XG4gICAgICAgIHNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgICBjdXN0b21QYWxldHRlOiBuZXdDdXN0b21QYWxldHRlXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIFtjdXN0b21QYWxldHRlLCBzZXRDb2xvclBhbGV0dGVVSV1cbiAgICApO1xuXG4gICAgY29uc3Qgb25BZGRDYXRlZ29yaWNhbFN0ZXAgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBvbkFkZChjb2xvcnMubGVuZ3RoIC0gMSk7XG4gICAgfSwgW2NvbG9ycy5sZW5ndGgsIG9uQWRkXSk7XG5cbiAgICBjb25zdCBvblN3YXRjaENsb3NlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgb25Ub2dnbGVTa2V0Y2hlcihmYWxzZSk7XG4gICAgfSwgW29uVG9nZ2xlU2tldGNoZXJdKTtcblxuICAgIGNvbnN0IG9uQ29uZmlybSA9IHVzZUNhbGxiYWNrKFxuICAgICAgZXZlbnQgPT4ge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgb25DYW5jZWwoKTtcbiAgICAgICAgb25BcHBseShldmVudCk7XG4gICAgICB9LFxuICAgICAgW29uQ2FuY2VsLCBvbkFwcGx5XVxuICAgICk7XG5cbiAgICBjb25zdCBvblNvcnRFbmQgPSB1c2VDYWxsYmFjayhcbiAgICAgIChldmVudDogRHJhZ0VuZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHthY3RpdmUsIG92ZXJ9ID0gZXZlbnQ7XG4gICAgICAgIGlmIChvdmVyICYmIGFjdGl2ZS5pZCAhPT0gb3Zlci5pZCkge1xuICAgICAgICAgIGNvbnN0IG9sZEluZGV4ID0gY29sb3JzLmZpbmRJbmRleCgoXywgaW5kZXgpID0+IGAke2luZGV4fWAgPT09IGFjdGl2ZS5pZCk7XG4gICAgICAgICAgY29uc3QgbmV3SW5kZXggPSBjb2xvcnMuZmluZEluZGV4KChfLCBpbmRleCkgPT4gYCR7aW5kZXh9YCA9PT0gb3Zlci5pZCk7XG4gICAgICAgICAgY29uc3QgbmV3Q3VzdG9tUGFsZXR0ZSA9IHNvcnRDdXN0b21QYWxldHRlQ29sb3IoY3VzdG9tUGFsZXR0ZSwgb2xkSW5kZXgsIG5ld0luZGV4KTtcbiAgICAgICAgICBzZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgICAgICBjdXN0b21QYWxldHRlOiBuZXdDdXN0b21QYWxldHRlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0SXNTb3J0aW5nKGZhbHNlKTtcbiAgICAgIH0sXG4gICAgICBbY29sb3JzLCBjdXN0b21QYWxldHRlLCBzZXRJc1NvcnRpbmcsIHNldENvbG9yUGFsZXR0ZVVJXVxuICAgICk7XG5cbiAgICBjb25zdCBvblNvcnRTdGFydCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIHNldElzU29ydGluZyh0cnVlKTtcbiAgICB9LCBbc2V0SXNTb3J0aW5nXSk7XG5cbiAgICBjb25zdCBpbnB1dENvbG9ySGV4ID0gdXNlQ2FsbGJhY2soXG4gICAgICAoaW5kZXgsIHZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0N1c3RvbVBhbGV0dGUgPSB1cGRhdGVDdXN0b21QYWxldHRlQ29sb3IoY3VzdG9tUGFsZXR0ZSwgaW5kZXgsIHZhbHVlKTtcbiAgICAgICAgLy8gc2V0Q29sb3JzKG5ld0NvbG9ycyk7XG4gICAgICAgIHNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgICBjdXN0b21QYWxldHRlOiBuZXdDdXN0b21QYWxldHRlXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIFtjdXN0b21QYWxldHRlLCBzZXRDb2xvclBhbGV0dGVVSV1cbiAgICApO1xuXG4gICAgY29uc3QgZWRpdENvbG9yTWFwVmFsdWUgPSB1c2VDYWxsYmFjayhcbiAgICAgICh2YWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKCFjdXN0b21QYWxldHRlLmNvbG9yTWFwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0NvbG9yTWFwID0gY3VzdG9tUGFsZXR0ZS5jb2xvck1hcC5tYXAoXG4gICAgICAgICAgKGNtLCBpKSA9PiAoaSA9PT0gaW5kZXggPyBbdmFsdWUsIGNtWzFdXSA6IGNtKSBhcyBbc3RyaW5nLCBzdHJpbmddXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gc29ydCB0aGUgdXNlciBpbnB1dHMgaW4gY2FzZSB0aGUgYnJlYWsgdmFsdWVzIGFyZSBub3Qgb3JkZXJlZFxuICAgICAgICBjb25zdCBicmVha3MgPSBuZXdDb2xvck1hcFxuICAgICAgICAgIC5tYXAoY20gPT4gY21bMF0gYXMgc3RyaW5nIHwgbnVsbClcbiAgICAgICAgICAuc2xpY2UoMCwgLTEpXG4gICAgICAgICAgLnNvcnQoKGEsIGIpID0+IE51bWJlcihhKSAtIE51bWJlcihiKSlcbiAgICAgICAgICAuY29uY2F0KG51bGwpO1xuICAgICAgICBjb25zdCBzb3J0ZWROZXdDb2xvck1hcDogQ29sb3JNYXAgPSBuZXdDb2xvck1hcC5tYXAoKGNtLCBpKSA9PiBbYnJlYWtzW2ldLCBjbVsxXV0pO1xuXG4gICAgICAgIHNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgICBjdXN0b21QYWxldHRlOiB7XG4gICAgICAgICAgICAuLi5jdXN0b21QYWxldHRlLFxuICAgICAgICAgICAgY29sb3JNYXA6IHNvcnRlZE5ld0NvbG9yTWFwXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBbc2V0Q29sb3JQYWxldHRlVUksIGN1c3RvbVBhbGV0dGVdXG4gICAgKTtcblxuICAgIC8vIHJlbW92ZSBhIHNlbGVjdGVkIGNhdGVnb3J5IGl0ZW0gZnJvbSBhIGNvbG9yIG1hcFxuICAgIGNvbnN0IHJlbW92ZUNhdGVnb3JpY2FsQ29sb3JNYXBWYWx1ZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghY29sb3JNYXApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgIGN1c3RvbVBhbGV0dGU6IHtcbiAgICAgICAgICAgIC4uLmN1c3RvbVBhbGV0dGUsXG4gICAgICAgICAgICBjb2xvck1hcDogcmVtb3ZlQ2F0ZWdvcmljYWxWYWx1ZUZyb21Db2xvck1hcChjb2xvck1hcCwgaXRlbSwgaW5kZXgpXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBbc2V0Q29sb3JQYWxldHRlVUksIGN1c3RvbVBhbGV0dGUsIGNvbG9yTWFwXVxuICAgICk7XG5cbiAgICAvLyBhZGQgc2VsZWN0ZWQgY2F0ZWdvcmljYWwgaXRlbXMgdG8gYSBjb2xvciBtYXBcbiAgICBjb25zdCBhZGRDYXRlZ29yaWNhbENvbG9yTWFwVmFsdWUgPSB1c2VDYWxsYmFjayhcbiAgICAgIChpdGVtcywgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKCFjb2xvck1hcCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgICAgY3VzdG9tUGFsZXR0ZToge1xuICAgICAgICAgICAgLi4uY3VzdG9tUGFsZXR0ZSxcbiAgICAgICAgICAgIGNvbG9yTWFwOiBhZGRDYXRlZ29yaWNhbFZhbHVlc1RvQ29sb3JNYXAoY29sb3JNYXAsIGl0ZW1zLCBpbmRleClcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIFtzZXRDb2xvclBhbGV0dGVVSSwgY3VzdG9tUGFsZXR0ZSwgY29sb3JNYXBdXG4gICAgKTtcblxuICAgIC8vIHJlc2V0IGEgY29sb3IgbWFwXG4gICAgY29uc3QgcmVzZXRDYXRlZ29yaWNhbENvbG9yTWFwVmFsdWUgPSB1c2VDYWxsYmFjayhcbiAgICAgIGluZGV4ID0+IHtcbiAgICAgICAgaWYgKCFjb2xvck1hcCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgICAgY3VzdG9tUGFsZXR0ZToge1xuICAgICAgICAgICAgLi4uY3VzdG9tUGFsZXR0ZSxcbiAgICAgICAgICAgIGNvbG9yTWFwOiByZXNldENhdGVnb3JpY2FsQ29sb3JNYXBCeUluZGV4KGNvbG9yTWFwLCBpbmRleClcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIFtzZXRDb2xvclBhbGV0dGVVSSwgY3VzdG9tUGFsZXR0ZSwgY29sb3JNYXBdXG4gICAgKTtcblxuICAgIC8vIHNlbGVjdCB0aGUgcmVzdCB2YWx1ZXMgZm9yIGEgY29sb3IgbWFwXG4gICAgY29uc3Qgc2VsZWN0UmVzdENhdGVnb3JpY2FsQ29sb3JNYXAgPSB1c2VDYWxsYmFjayhcbiAgICAgIGluZGV4ID0+IHtcbiAgICAgICAgaWYgKCFjb2xvck1hcCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgICAgY3VzdG9tUGFsZXR0ZToge1xuICAgICAgICAgICAgLi4uY3VzdG9tUGFsZXR0ZSxcbiAgICAgICAgICAgIGNvbG9yTWFwOiBzZWxlY3RSZXN0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgoY29sb3JNYXAsIGluZGV4LCBvcmRpbmFsRG9tYWluKVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgW3NldENvbG9yUGFsZXR0ZVVJLCBjdXN0b21QYWxldHRlLCBjb2xvck1hcCwgb3JkaW5hbERvbWFpbl1cbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRDdXN0b21QYWxldHRlPlxuICAgICAgICA8V3JhcHBlZFNvcnRhYmxlQ29udGFpbmVyXG4gICAgICAgICAgY2xhc3NOYW1lPVwiY3VzdG9tLXBhbGV0dGVfX3NvcnRhYmxlLWNvbnRhaW5lclwiXG4gICAgICAgICAgb25Tb3J0RW5kPXtvblNvcnRFbmR9XG4gICAgICAgICAgb25Tb3J0U3RhcnQ9e29uU29ydFN0YXJ0fVxuICAgICAgICA+XG4gICAgICAgICAge2NvbG9ycy5tYXAoKGNvbG9yLCBpbmRleCkgPT5cbiAgICAgICAgICAgIGN1c3RvbVBhbGV0dGUudHlwZSA9PT0gJ2N1c3RvbScgPyAoXG4gICAgICAgICAgICAgIDxDdXN0b21QYWxldHRlSW5wdXRcbiAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgIGNvbG9yQnJlYWtzPXtjb2xvckJyZWFrc31cbiAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgaXNTb3J0aW5nPXtpc1NvcnRpbmd9XG4gICAgICAgICAgICAgICAgY29sb3I9e2NvbG9yfVxuICAgICAgICAgICAgICAgIGlucHV0Q29sb3JIZXg9e2lucHV0Q29sb3JIZXh9XG4gICAgICAgICAgICAgICAgZGlzYWJsZUFwcGVuZD17Y29sb3JzLmxlbmd0aCA+PSAyMH1cbiAgICAgICAgICAgICAgICBkaXNhYmxlRGVsZXRlPXtjb2xvcnMubGVuZ3RoIDw9IDJ9XG4gICAgICAgICAgICAgICAgYWN0aW9uSWNvbnM9e2FjdGlvbkljb25zfVxuICAgICAgICAgICAgICAgIG9uQWRkPXtvbkFkZH1cbiAgICAgICAgICAgICAgICBvbkRlbGV0ZT17b25EZWxldGV9XG4gICAgICAgICAgICAgICAgb25Ub2dnbGVTa2V0Y2hlcj17b25Ub2dnbGVTa2V0Y2hlcn1cbiAgICAgICAgICAgICAgICBlZGl0Q29sb3JNYXBWYWx1ZT17ZWRpdENvbG9yTWFwVmFsdWV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICBvcmRpbmFsRG9tYWluICYmIChcbiAgICAgICAgICAgICAgICA8Q2F0ZWdvcmljYWxDdXN0b21QYWxldHRlSW5wdXRcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICBjb2xvck1hcD17Y29sb3JNYXB9XG4gICAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICBpc1NvcnRpbmc9e2lzU29ydGluZ31cbiAgICAgICAgICAgICAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbkljb25zPXthY3Rpb25JY29uc31cbiAgICAgICAgICAgICAgICAgIG9uQWRkPXtvbkFkZH1cbiAgICAgICAgICAgICAgICAgIG9uRGVsZXRlPXtvbkRlbGV0ZX1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVEZWxldGU9e2NvbG9ycy5sZW5ndGggPD0gMn1cbiAgICAgICAgICAgICAgICAgIG9uVG9nZ2xlU2tldGNoZXI9e29uVG9nZ2xlU2tldGNoZXJ9XG4gICAgICAgICAgICAgICAgICBhZGRDb2xvck1hcFZhbHVlPXthZGRDYXRlZ29yaWNhbENvbG9yTWFwVmFsdWV9XG4gICAgICAgICAgICAgICAgICByZW1vdmVDb2xvck1hcFZhbHVlPXtyZW1vdmVDYXRlZ29yaWNhbENvbG9yTWFwVmFsdWV9XG4gICAgICAgICAgICAgICAgICByZXNldENvbG9yTWFwVmFsdWU9e3Jlc2V0Q2F0ZWdvcmljYWxDb2xvck1hcFZhbHVlfVxuICAgICAgICAgICAgICAgICAgc2VsZWN0UmVzdENvbG9yTWFwVmFsdWU9e3NlbGVjdFJlc3RDYXRlZ29yaWNhbENvbG9yTWFwfVxuICAgICAgICAgICAgICAgICAgYWxsVmFsdWVzPXtvcmRpbmFsRG9tYWlufVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApfVxuICAgICAgICA8L1dyYXBwZWRTb3J0YWJsZUNvbnRhaW5lcj5cbiAgICAgICAge2N1c3RvbVBhbGV0dGUudHlwZSA9PT0gJ2N1c3RvbU9yZGluYWwnICYmIChcbiAgICAgICAgICA8U3R5bGVkQWRkU3RlcENvbnRhaW5lcj5cbiAgICAgICAgICAgIDxBZGRDb2xvclN0b3Agb25Db2xvckFkZD17b25BZGRDYXRlZ29yaWNhbFN0ZXB9IEljb25Db21wb25lbnQ9e2FjdGlvbkljb25zLmFkZH0gLz5cbiAgICAgICAgICAgIDxCdXR0b24gbGluayBzaXplPVwic21hbFwiIG9uQ2xpY2s9e29uQWRkQ2F0ZWdvcmljYWxTdGVwfT5cbiAgICAgICAgICAgICAgQWRkIFN0ZXBcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvU3R5bGVkQWRkU3RlcENvbnRhaW5lcj5cbiAgICAgICAgKX1cbiAgICAgICAgPERpdmlkZXJMaW5lIC8+XG4gICAgICAgIHsvKiBDYW5jZWwgb3IgQ29uZmlybSBCdXR0b25zICovfVxuICAgICAgICA8Qm90dG9tQWN0aW9uIG9uQ2FuY2VsPXtvbkNhbmNlbH0gb25Db25maXJtPXtvbkNvbmZpcm19IC8+XG4gICAgICAgIDxQb3J0YWxlZCBpc09wZW5lZD17c2hvd1NrZXRjaGVyICE9PSBmYWxzZX0gbGVmdD17MjgwfSB0b3A9ey0zMDB9IG9uQ2xvc2U9e29uU3dhdGNoQ2xvc2V9PlxuICAgICAgICAgIDxDdXN0b21QaWNrZXIgY29sb3I9e2NvbG9yc1tOdW1iZXIoc2hvd1NrZXRjaGVyKV19IG9uQ2hhbmdlPXtvblBpY2tlclVwZGF0ZX0gLz5cbiAgICAgICAgPC9Qb3J0YWxlZD5cbiAgICAgIDwvU3R5bGVkQ3VzdG9tUGFsZXR0ZT5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBDdXN0b21QYWxldHRlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21QYWxldHRlRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsV0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBU0EsSUFBQUcsS0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksS0FBQSxHQUFBSixPQUFBO0FBU0EsSUFBQUssU0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sVUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8saUJBQUEsR0FBQUwsdUJBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFRLFNBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFTLGtCQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxVQUFBLEdBQUFYLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBVyxnQkFBQSxHQUFBWixzQkFBQSxDQUFBQyxPQUFBO0FBQ0Es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
788
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdW5pcSIsIl9jb3JlIiwiX3NvcnRhYmxlIiwiX3V0aWxpdGllcyIsIl9zdHlsZWRDb21wb25lbnRzIiwiX3BvcnRhbGVkIiwiX3N0eWxlZENvbXBvbmVudHMyIiwiX3R5cGVhaGVhZCIsIl9jaGlja2xldGVkSW5wdXQiLCJfZHJvcGRvd25MaXN0IiwiX2NvbW1vblV0aWxzIiwiX2NvbnN0YW50cyIsIl91dGlscyIsIl9pY29ucyIsIl9jdXN0b21QaWNrZXIiLCJfZXhjbHVkZWQiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiX3RlbXBsYXRlT2JqZWN0NiIsIl90ZW1wbGF0ZU9iamVjdDciLCJfdGVtcGxhdGVPYmplY3Q4IiwiX3RlbXBsYXRlT2JqZWN0OSIsIl90ZW1wbGF0ZU9iamVjdDEwIiwiX3RlbXBsYXRlT2JqZWN0MTEiLCJfdGVtcGxhdGVPYmplY3QxMiIsIl90ZW1wbGF0ZU9iamVjdDEzIiwiX3RlbXBsYXRlT2JqZWN0MTQiLCJfdGVtcGxhdGVPYmplY3QxNSIsIl90ZW1wbGF0ZU9iamVjdDE2IiwiX3RlbXBsYXRlT2JqZWN0MTciLCJfdGVtcGxhdGVPYmplY3QxOCIsIl90ZW1wbGF0ZU9iamVjdDE5IiwiX3RlbXBsYXRlT2JqZWN0MjAiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsImRlZmF1bHRBY3Rpb25JY29ucyIsIlRyYXNoIiwic29ydCIsIlZlcnREb3RzIiwiYWRkIiwiQWRkIiwiZHJhZ0hhbmRsZUFjdGl2ZSIsImNzcyIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsInRleHRDb2xvckhsIiwiQ29sb3JQYWxldHRlSXRlbSIsImV4cG9ydHMiLCJzdHlsZWQiLCJkaXYiLCJkcm9wZG93bldyYXBwZXJaIiwicGFuZWxCYWNrZ3JvdW5kSG92ZXIiLCJTdHlsZWREcmFnSGFuZGxlIiwiU3R5bGVkQWN0aW9uIiwic3VidGV4dENvbG9yIiwic3VidGV4dENvbG9yQWN0aXZlIiwiRGl2aWRlckxpbmUiLCJkcm9wZG93bkxpc3RCb3JkZXJUb3AiLCJDb2xvclN3YXRjaCIsImF0dHJzIiwiY2xhc3NOYW1lIiwiY29sb3IiLCJib3hTaGFkb3ciLCJTdHlsZWRCdXR0b25Db250YWluZXIiLCJTdHlsZWRBZGRTdGVwQ29udGFpbmVyIiwiaW5wdXRDb2xvciIsIlN0eWxlZElucHV0IiwiSW5wdXQiLCJ3aXRoQ29uZmlnIiwic2hvdWxkRm9yd2FyZFByb3AiLCJfcHJvcHMkd2lkdGgiLCJ3aWR0aCIsIl9wcm9wcyR0ZXh0QWxpZ24iLCJ0ZXh0QWxpZ24iLCJkaXNhYmxlZCIsIklucHV0VGV4dCIsImlucHV0IiwiX3Byb3BzJHdpZHRoMiIsIl9wcm9wcyR0ZXh0QWxpZ24yIiwiU29ydGFibGVJdGVtIiwiX3JlZiIsImlkIiwiY2hpbGRyZW4iLCJpc1NvcnRpbmciLCJfdXNlU29ydGFibGUiLCJ1c2VTb3J0YWJsZSIsImF0dHJpYnV0ZXMiLCJsaXN0ZW5lcnMiLCJzZXROb2RlUmVmIiwidHJhbnNmb3JtIiwidHJhbnNpdGlvbiIsImlzRHJhZ2dpbmciLCJzdHlsZSIsIkNTUyIsIlRyYW5zZm9ybSIsInRvU3RyaW5nIiwiekluZGV4IiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzMiIsInJlZiIsImNsYXNzbmFtZXMiLCJzb3J0aW5nIiwiV3JhcHBlZFNvcnRhYmxlQ29udGFpbmVyIiwiX3JlZjIiLCJvblNvcnRFbmQiLCJvblNvcnRTdGFydCIsInNlbnNvcnMiLCJ1c2VTZW5zb3JzIiwidXNlU2Vuc29yIiwiUG9pbnRlclNlbnNvciIsIktleWJvYXJkU2Vuc29yIiwiRG5kQ29udGV4dCIsImNvbGxpc2lvbkRldGVjdGlvbiIsImNsb3Nlc3RDZW50ZXIiLCJvbkRyYWdFbmQiLCJvbkRyYWdTdGFydCIsIlNvcnRhYmxlQ29udGV4dCIsIml0ZW1zIiwiUmVhY3QiLCJDaGlsZHJlbiIsIm1hcCIsIl8iLCJpbmRleCIsImNvbmNhdCIsInN0cmF0ZWd5IiwidmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwiRHJhZ0hhbmRsZSIsIl9yZWYzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsIkNvbG9yUGFsZXR0ZUlucHV0IiwiX3JlZjQiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwiZWRpdGFibGUiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzdGF0ZVZhbHVlIiwic2V0VmFsdWUiLCJpbnB1dFJlZiIsInVzZVJlZiIsInVzZUVmZmVjdCIsIm9uS2V5RG93biIsInVzZUNhbGxiYWNrIiwia2V5Q29kZSIsIktleUV2ZW50IiwiRE9NX1ZLX0VOVEVSIiwiRE9NX1ZLX1JFVFVSTiIsImN1cnJlbnQiLCJibHVyIiwiX29uQ2hhbmdlIiwidGFyZ2V0Iiwib25CbHVyIiwic2Vjb25kYXJ5IiwiRGFzaCIsIlN0eWxlZFJhbmdlSW5wdXQiLCJTdHlsZWRDb2xvckhleElucHV0IiwiRWRpdGFibGVDb2xvclJhbmdlIiwiX3JlZjUiLCJpdGVtIiwiaXNMYXN0IiwiZWRpdENvbG9yTWFwIiwiaGFzSW5wdXRzIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5wdXRzIiwibGVmdElucHV0IiwidW5kZWZpbmVkIiwicmlnaHRJbnB1dCIsIm5vTWluQm91bmQiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsIm5vTWF4Qm91bmQiLCJvbkNoYW5nZUxlZnQiLCJ2YWwiLCJwYXJzZUZsb2F0Iiwib25DaGFuZ2VSaWdodCIsIlN0cmluZyIsIkFkZENvbG9yU3RvcCIsIl9yZWY2Iiwib25Db2xvckFkZCIsIkljb25Db21wb25lbnQiLCJvbkNsaWNrIiwiaGVpZ2h0IiwiRGVsZXRlQ29sb3JTdG9wIiwiX3JlZjciLCJvbkNvbG9yRGVsZXRlIiwiQ3VzdG9tUGFsZXR0ZUlucHV0IiwiX3JlZjgiLCJjb2xvckJyZWFrcyIsImlucHV0Q29sb3JIZXgiLCJlZGl0Q29sb3JNYXBWYWx1ZSIsIl9yZWY4JGFjdGlvbkljb25zIiwiYWN0aW9uSWNvbnMiLCJkaXNhYmxlQXBwZW5kIiwiZGlzYWJsZURlbGV0ZSIsIm9uRGVsZXRlIiwib25BZGQiLCJvblRvZ2dsZVNrZXRjaGVyIiwib25DbGlja1N3dGFjaCIsIm9uQ29sb3JJbnB1dCIsInYiLCJzaG93SGV4SW5wdXQiLCJGcmFnbWVudCIsInRvVXBwZXJDYXNlIiwiaXNOdW1lcmljQ29sb3JCcmVha3MiLCJTdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyV3JhcHBlciIsIlN0eWxlZENhdGVnb3JpY2FsVmFsdWVQaWNrZXIiLCJub0JvcmRlciIsIkRyb3Bkb3duVmFsdWVzV3JhcHBlciIsIlNlbGVjdGVkVmFsdWVzV3JhcHBlciIsIlN0eWxlZERyb3Bkb3duSGVhZGVyIiwiU3R5bGVkVG9vbHRpcENvbnRlbnQiLCJOVU1CRVJfVkFMVUVTX0lOX1RPT0xUSVAiLCJDYXRlZ29yaWNhbFNlbGVjdG9yQ29udGV4dCIsImNyZWF0ZUNvbnRleHQiLCJvblNlbGVjdFJlc3QiLCJvblJlc2V0IiwiTW9kaWZpZWREcm9wZG93bkxpc3QiLCJfRHJvcGRvd25MaXN0IiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwicmVuZGVyIiwiX3RoaXMiLCJDb25zdW1lciIsImNvbnRleHQiLCJCdXR0b24iLCJsaW5rIiwic2l6ZSIsIkRyb3Bkb3duTGlzdCIsIkNhdGVnb3JpY2FsU2VsZWN0b3IiLCJfcmVmOSIsInNlbGVjdGVkVmFsdWVzIiwiYWxsVmFsdWVzIiwiYWRkQ29sb3JNYXBWYWx1ZSIsInJlbW92ZUNvbG9yTWFwVmFsdWUiLCJyZXNldENvbG9yTWFwVmFsdWUiLCJzZWxlY3RSZXN0Q29sb3JNYXBWYWx1ZSIsIl9yZWY5JGVkaXRhYmxlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJzaG93VHlwZWFoZWFkIiwic2V0U2hvd1R5cGVhaGVhZCIsIm9uT3B0aW9uU2VsZWN0ZWQiLCJwcmV2aW91c1NlbGVjdGVkIiwidG9BcnJheSIsInVuaXEiLCJvbk9wZW5Ecm9wZG93biIsIm9uQ2xvc2VEcm9wZG93biIsIm9uUmVtb3ZlSXRlbSIsIlRvb2x0aXAiLCJwbGFjZSIsImludGVyYWN0aXZlIiwic2xpY2UiLCJsZWZ0IiwidG9wIiwiaXNPcGVuZWQiLCJvbkNsb3NlIiwic2VsZWN0ZWRJdGVtcyIsInBsYWNlaG9sZGVyIiwicmVtb3ZlSXRlbSIsIkN1c3RvbUNoaWNrbGV0Q29tcG9uZW50IiwicG9zaXRpb24iLCJQcm92aWRlciIsImN1c3RvbUNsYXNzZXMiLCJyZXN1bHRzIiwibGlzdEl0ZW0iLCJsaXN0QW5jaG9yIiwib3B0aW9ucyIsImRpc3BsYXlPcHRpb24iLCJmaWx0ZXJPcHRpb24iLCJpbmNsdWRlcyIsImN1c3RvbUxpc3RDb21wb25lbnQiLCJjdXN0b21MaXN0SXRlbUNvbXBvbmVudCIsIkxpc3RJdGVtIiwic2VhcmNoYWJsZSIsInNob3dPcHRpb25zV2hlbkVtcHR5IiwiQ2F0ZWdvcmljYWxDdXN0b21QYWxldHRlSW5wdXQiLCJfcmVmMTAiLCJjb2xvck1hcCIsIl9yZWYxMCRhY3Rpb25JY29ucyIsInVzZU1lbW8iLCJ2YWx1ZXMiLCJCb3R0b21BY3Rpb24iLCJfcmVmMTEiLCJvbkNhbmNlbCIsIm9uQ29uZmlybSIsInNtYWxsIiwiU3R5bGVkQ3VzdG9tUGFsZXR0ZSIsIkN1c3RvbVBhbGV0dGVGYWN0b3J5IiwiQ3VzdG9tUGFsZXR0ZSIsIl9yZWYxMiIsIm9yZGluYWxEb21haW4iLCJjdXN0b21QYWxldHRlIiwic2V0Q29sb3JQYWxldHRlVUkiLCJzaG93U2tldGNoZXIiLCJfcmVmMTIkYWN0aW9uSWNvbnMiLCJvbkFwcGx5IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzZXRJc1NvcnRpbmciLCJjb2xvcnMiLCJ0eXBlIiwiY29sb3JNYXBUb0NvbG9yQnJlYWtzIiwiY29sb3JNYXBUb0NhdGVnb3JpY2FsQ29sb3JCcmVha3MiLCJvblBpY2tlclVwZGF0ZSIsIm5ld0N1c3RvbVBhbGV0dGUiLCJ1cGRhdGVDdXN0b21QYWxldHRlQ29sb3IiLCJoZXgiLCJyZW1vdmVDdXN0b21QYWxldHRlQ29sb3IiLCJhZGRDdXN0b21QYWxldHRlQ29sb3IiLCJvbkFkZENhdGVnb3JpY2FsU3RlcCIsIm9uU3dhdGNoQ2xvc2UiLCJldmVudCIsInN0b3BQcm9wYWdhdGlvbiIsInByZXZlbnREZWZhdWx0IiwiYWN0aXZlIiwib3ZlciIsIm9sZEluZGV4IiwiZmluZEluZGV4IiwibmV3SW5kZXgiLCJzb3J0Q3VzdG9tUGFsZXR0ZUNvbG9yIiwibmV3Q29sb3JNYXAiLCJjbSIsImJyZWFrcyIsImIiLCJzb3J0ZWROZXdDb2xvck1hcCIsInJlbW92ZUNhdGVnb3JpY2FsQ29sb3JNYXBWYWx1ZSIsInJlbW92ZUNhdGVnb3JpY2FsVmFsdWVGcm9tQ29sb3JNYXAiLCJhZGRDYXRlZ29yaWNhbENvbG9yTWFwVmFsdWUiLCJhZGRDYXRlZ29yaWNhbFZhbHVlc1RvQ29sb3JNYXAiLCJyZXNldENhdGVnb3JpY2FsQ29sb3JNYXBWYWx1ZSIsInJlc2V0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgiLCJzZWxlY3RSZXN0Q2F0ZWdvcmljYWxDb2xvck1hcCIsInNlbGVjdFJlc3RDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleCIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvY3VzdG9tLXBhbGV0dGUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFJlYWN0LCB7XG4gIEVsZW1lbnRUeXBlLFxuICBQcm9wc1dpdGhDaGlsZHJlbixcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZVxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gvdW5pcSc7XG5pbXBvcnQge1xuICBEbmRDb250ZXh0LFxuICBjbG9zZXN0Q2VudGVyLFxuICBLZXlib2FyZFNlbnNvcixcbiAgUG9pbnRlclNlbnNvcixcbiAgdXNlU2Vuc29yLFxuICB1c2VTZW5zb3JzLFxuICBEcmFnRW5kRXZlbnRcbn0gZnJvbSAnQGRuZC1raXQvY29yZSc7XG5pbXBvcnQge1NvcnRhYmxlQ29udGV4dCwgdXNlU29ydGFibGUsIHZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneX0gZnJvbSAnQGRuZC1raXQvc29ydGFibGUnO1xuaW1wb3J0IHtDU1N9IGZyb20gJ0BkbmQta2l0L3V0aWxpdGllcyc7XG5pbXBvcnQgc3R5bGVkLCB7Y3NzfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgUG9ydGFsZWQgZnJvbSAnLi4vLi4vY29tbW9uL3BvcnRhbGVkJztcbmltcG9ydCB7VG9vbHRpcH0gZnJvbSAnLi4vLi4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBUeXBlYWhlYWQgZnJvbSAnLi4vLi4vY29tbW9uL2l0ZW0tc2VsZWN0b3IvdHlwZWFoZWFkJztcbmltcG9ydCBDaGlja2xldGVkSW5wdXQgZnJvbSAnLi4vLi4vY29tbW9uL2l0ZW0tc2VsZWN0b3IvY2hpY2tsZXRlZC1pbnB1dCc7XG5pbXBvcnQgRHJvcGRvd25MaXN0LCB7TGlzdEl0ZW19IGZyb20gJy4uLy4uL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2Ryb3Bkb3duLWxpc3QnO1xuaW1wb3J0IHtzaG91bGRGb3J3YXJkUHJvcH0gZnJvbSAnLi4vLi4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7dG9BcnJheX0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtLZXlFdmVudH0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtDb2xvck1hcCwgQ29sb3JVSSwgSGV4Q29sb3IsIE5lc3RlZFBhcnRpYWx9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtcbiAgYWRkQ2F0ZWdvcmljYWxWYWx1ZXNUb0NvbG9yTWFwLFxuICBhZGRDdXN0b21QYWxldHRlQ29sb3IsXG4gIGNvbG9yTWFwVG9DYXRlZ29yaWNhbENvbG9yQnJlYWtzLFxuICBjb2xvck1hcFRvQ29sb3JCcmVha3MsXG4gIGlzTnVtZXJpY0NvbG9yQnJlYWtzLFxuICByZXNldENhdGVnb3JpY2FsQ29sb3JNYXBCeUluZGV4LFxuICByZW1vdmVDYXRlZ29yaWNhbFZhbHVlRnJvbUNvbG9yTWFwLFxuICByZW1vdmVDdXN0b21QYWxldHRlQ29sb3IsXG4gIHNlbGVjdFJlc3RDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleCxcbiAgc29ydEN1c3RvbVBhbGV0dGVDb2xvcixcbiAgdXBkYXRlQ3VzdG9tUGFsZXR0ZUNvbG9yXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtDb2xvckJyZWFrLCBDb2xvckJyZWFrT3JkaW5hbH0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge0FkZCwgVHJhc2gsIFZlcnREb3RzfSBmcm9tICcuLi8uLi9jb21tb24vaWNvbnMnO1xuaW1wb3J0IHtCdXR0b24sIElucHV0fSBmcm9tICcuLi8uLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IEN1c3RvbVBpY2tlciBmcm9tICcuL2N1c3RvbS1waWNrZXInO1xuXG5leHBvcnQgdHlwZSBBY3Rpb25JY29ucyA9IHtcbiAgZGVsZXRlOiBFbGVtZW50VHlwZTtcbiAgc29ydDogRWxlbWVudFR5cGU7XG4gIGFkZDogRWxlbWVudFR5cGU7XG59O1xuXG5leHBvcnQgdHlwZSBFZGl0Q29sb3JNYXBGdW5jID0gKHY6IG51bWJlciwgaTogbnVtYmVyKSA9PiB2b2lkO1xuZXhwb3J0IHR5cGUgU2V0Q29sb3JVSUZ1bmMgPSAobmV3Q29uZmlnOiBOZXN0ZWRQYXJ0aWFsPENvbG9yVUk+KSA9PiB2b2lkO1xuXG4vKipcbiAqIEVkaXRhYmxlQ29sb3JSYW5nZVxuICovXG5leHBvcnQgdHlwZSBFZGl0YWJsZUNvbG9yUmFuZ2VQcm9wcyA9IHtcbiAgaXRlbTogQ29sb3JCcmVhaztcbiAgaXNMYXN0OiBib29sZWFuO1xuICBpbmRleDogbnVtYmVyO1xuICBlZGl0Q29sb3JNYXA/OiBFZGl0Q29sb3JNYXBGdW5jO1xuICBlZGl0YWJsZTogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbVBhbGV0dGVQcm9wcyA9IHtcbiAgY3VzdG9tUGFsZXR0ZTogQ29sb3JVSVsnY3VzdG9tUGFsZXR0ZSddO1xuICBzZXRDb2xvclBhbGV0dGVVSTogU2V0Q29sb3JVSUZ1bmM7XG4gIHNob3dTa2V0Y2hlcjogbnVtYmVyIHwgYm9vbGVhbjtcbiAgb3JkaW5hbERvbWFpbj86IHN0cmluZ1tdIHwgbnVtYmVyW107XG4gIGFjdGlvbkljb25zPzogQWN0aW9uSWNvbnM7XG4gIG9uQXBwbHk6IChlOiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB2b2lkO1xuICBvbkNhbmNlbDogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbVBhbGV0dGVJbnB1dFByb3BzID0ge1xuICBpbmRleDogbnVtYmVyO1xuICBpc1NvcnRpbmc6IGJvb2xlYW47XG4gIGNvbG9yOiBIZXhDb2xvcjtcbiAgY29sb3JCcmVha3M6IENvbG9yQnJlYWtPcmRpbmFsW10gfCBDb2xvckJyZWFrW10gfCBudWxsO1xuICBpbnB1dENvbG9ySGV4OiAoaW5kZXg6IG51bWJlciwgdjogSGV4Q29sb3IpID0+IHZvaWQ7XG4gIGVkaXRDb2xvck1hcFZhbHVlOiBFZGl0Q29sb3JNYXBGdW5jO1xuICBhY3Rpb25JY29ucz86IEFjdGlvbkljb25zO1xuICBkaXNhYmxlQXBwZW5kPzogYm9vbGVhbjtcbiAgZGlzYWJsZURlbGV0ZT86IGJvb2xlYW47XG4gIG9uRGVsZXRlOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgb25BZGQ6IChpbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBvblRvZ2dsZVNrZXRjaGVyOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbn07XG5cbmNvbnN0IGRlZmF1bHRBY3Rpb25JY29ucyA9IHtcbiAgZGVsZXRlOiBUcmFzaCxcbiAgc29ydDogVmVydERvdHMsXG4gIGFkZDogQWRkXG59O1xuXG5jb25zdCBkcmFnSGFuZGxlQWN0aXZlID0gY3NzYFxuICAubGF5ZXJfX2RyYWctaGFuZGxlIHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gICAgb3BhY2l0eTogMTtcbiAgICBjdXJzb3I6IG1vdmU7XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBDb2xvclBhbGV0dGVJdGVtID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZy10b3A6IDJweDtcbiAgcGFkZGluZy1ib3R0b206IDJweDtcbiAgei1pbmRleDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bldyYXBwZXJaICsgMX07XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuICAuY3VzdG9tLXBhbGV0dGUtaW5wdXRfX2xlZnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuXG4gIC5jdXN0b20tcGFsZXR0ZS1pbnB1dF9fcmlnaHQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nLXJpZ2h0OiA2cHg7XG4gIH1cblxuICAmOm5vdCguc29ydGluZyk6bm90KC5kaXNhYmxlZCkge1xuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEJhY2tncm91bmRIb3Zlcn07XG4gICAgICAke2RyYWdIYW5kbGVBY3RpdmV9O1xuICAgIH1cbiAgfVxuXG4gICYuc29ydGluZy1jb2xvcnMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCYWNrZ3JvdW5kSG92ZXJ9O1xuICAgICR7ZHJhZ0hhbmRsZUFjdGl2ZX07XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZERyYWdIYW5kbGUgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBvcGFjaXR5OiAwO1xuYDtcblxuY29uc3QgU3R5bGVkQWN0aW9uID0gc3R5bGVkLmRpdmBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yfTtcbiAgc3ZnIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnN1YnRleHRDb2xvckFjdGl2ZX07XG4gICAgfVxuICB9XG5cbiAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgJjpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgRGl2aWRlckxpbmUgPSBzdHlsZWQuZGl2YFxuICBoZWlnaHQ6IDFweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCb3JkZXJUb3B9O1xuICBtYXJnaW4tdG9wOiA4cHg7XG5gO1xuXG5leHBvcnQgY29uc3QgQ29sb3JTd2F0Y2ggPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnY3VzdG9tLXBhbGV0dGVfX3N3YXRjaCdcbn0pYFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLmNvbG9yfTtcbiAgd2lkdGg6IDMycHg7XG4gIGhlaWdodDogMThweDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAmOmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmJveFNoYWRvd307XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRCdXR0b25Db250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBtYXJnaW4tdG9wOiAxMXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBkaXJlY3Rpb246IHJ0bDtcbiAgcGFkZGluZzogMCAxMnB4O1xuYDtcblxuY29uc3QgU3R5bGVkQWRkU3RlcENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi10b3A6IDExcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMCAxMnB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dENvbG9yfTtcbiAgLmFkZGNvbG9yIHtcbiAgICBtYXJnaW4tdG9wOiA0cHg7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KS53aXRoQ29uZmlnKHtzaG91bGRGb3J3YXJkUHJvcH0pPHtcbiAgd2lkdGg6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG59PmBcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMud2lkdGggPz8gJzEwMCUnfTtcbiAgdGV4dC1hbGlnbjogJHtwcm9wcyA9PiBwcm9wcy50ZXh0QWxpZ24gPz8gJ2VuZCd9O1xuICBwb2ludGVyLWV2ZW50czogJHtwcm9wcyA9PiAocHJvcHMuZGlzYWJsZWQgPyAnbm9uZScgOiAnYWxsJyl9O1xuYDtcblxuY29uc3QgSW5wdXRUZXh0ID0gc3R5bGVkLmRpdi53aXRoQ29uZmlnKHtzaG91bGRGb3J3YXJkUHJvcH0pPHt3aWR0aDogc3RyaW5nOyB0ZXh0QWxpZ246IHN0cmluZ30+YFxuICAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0fTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLndpZHRoID8/ICcxMDAlJ307XG4gIHRleHQtYWxpZ246ICR7cHJvcHMgPT4gcHJvcHMudGV4dEFsaWduID8/ICdlbmQnfTtcblxuICAmOmhvdmVyIHtcbiAgICBjdXJzb3I6IGF1dG87XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuYDtcblxudHlwZSBTb3J0YWJsZUl0ZW1Qcm9wcyA9IHtcbiAgaWQ6IHN0cmluZztcbiAgY2hpbGRyZW46IChsaXN0ZW5lcnM6IGFueSkgPT4gUmVhY3QuUmVhY3ROb2RlO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGlzU29ydGluZzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IFNvcnRhYmxlSXRlbSA9ICh7aWQsIGNoaWxkcmVuLCBpc1NvcnRpbmd9OiBTb3J0YWJsZUl0ZW1Qcm9wcykgPT4ge1xuICBjb25zdCB7YXR0cmlidXRlcywgbGlzdGVuZXJzLCBzZXROb2RlUmVmLCB0cmFuc2Zvcm0sIHRyYW5zaXRpb24sIGlzRHJhZ2dpbmd9ID0gdXNlU29ydGFibGUoe2lkfSk7XG4gIGNvbnN0IHN0eWxlID0ge1xuICAgIHRyYW5zZm9ybTogQ1NTLlRyYW5zZm9ybS50b1N0cmluZyh0cmFuc2Zvcm0pLFxuICAgIHRyYW5zaXRpb24sXG4gICAgekluZGV4OiBpc0RyYWdnaW5nID8gMSA6IDBcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Q29sb3JQYWxldHRlSXRlbVxuICAgICAgcmVmPXtzZXROb2RlUmVmfVxuICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdjdXN0b20tcGFsZXR0ZV9fc29ydGFibGUtaXRlbXMnLCB7c29ydGluZzogaXNTb3J0aW5nIHx8IGlzRHJhZ2dpbmd9KX1cbiAgICAgIHsuLi5hdHRyaWJ1dGVzfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbihsaXN0ZW5lcnMpfVxuICAgIDwvQ29sb3JQYWxldHRlSXRlbT5cbiAgKTtcbn07XG5cbnR5cGUgV3JhcHBlZFNvcnRhYmxlQ29udGFpbmVyUHJvcHMgPSB7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIG9uU29ydEVuZDogKGV2ZW50OiBEcmFnRW5kRXZlbnQpID0+IHZvaWQ7XG4gIG9uU29ydFN0YXJ0OiAoKSA9PiB2b2lkO1xufTtcblxuY29uc3QgV3JhcHBlZFNvcnRhYmxlQ29udGFpbmVyID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgb25Tb3J0RW5kLFxuICBvblNvcnRTdGFydFxufTogV3JhcHBlZFNvcnRhYmxlQ29udGFpbmVyUHJvcHMpID0+IHtcbiAgY29uc3Qgc2Vuc29ycyA9IHVzZVNlbnNvcnModXNlU2Vuc29yKFBvaW50ZXJTZW5zb3IpLCB1c2VTZW5zb3IoS2V5Ym9hcmRTZW5zb3IpKTtcbiAgcmV0dXJuIChcbiAgICA8RG5kQ29udGV4dFxuICAgICAgc2Vuc29ycz17c2Vuc29yc31cbiAgICAgIGNvbGxpc2lvbkRldGVjdGlvbj17Y2xvc2VzdENlbnRlcn1cbiAgICAgIG9uRHJhZ0VuZD17b25Tb3J0RW5kfVxuICAgICAgb25EcmFnU3RhcnQ9e29uU29ydFN0YXJ0fVxuICAgID5cbiAgICAgIDxTb3J0YWJsZUNvbnRleHRcbiAgICAgICAgaXRlbXM9e1JlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKF8sIGluZGV4KSA9PiBgJHtpbmRleH1gKSB8fCBbXX1cbiAgICAgICAgc3RyYXRlZ3k9e3ZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneX1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e2NoaWxkcmVufTwvZGl2PlxuICAgICAgPC9Tb3J0YWJsZUNvbnRleHQ+XG4gICAgPC9EbmRDb250ZXh0PlxuICApO1xufTtcblxudHlwZSBEcmFnSGFuZGxlUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7Y2xhc3NOYW1lPzogc3RyaW5nfT47XG5jb25zdCBEcmFnSGFuZGxlID0gKHtjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5saXN0ZW5lcnN9OiBEcmFnSGFuZGxlUHJvcHMpID0+IChcbiAgPFN0eWxlZERyYWdIYW5kbGUgY2xhc3NOYW1lPXtjbGFzc05hbWV9IHsuLi5saXN0ZW5lcnN9PlxuICAgIHtjaGlsZHJlbn1cbiAgPC9TdHlsZWREcmFnSGFuZGxlPlxuKTtcblxuZXhwb3J0IHR5cGUgQ29sb3JQYWxldHRlSW5wdXRQcm9wcyA9IHtcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlcjtcbiAgb25DaGFuZ2U6ICh2YWw6IHVua25vd24pID0+IHZvaWQ7XG4gIGlkOiBzdHJpbmc7XG4gIHdpZHRoOiBzdHJpbmc7XG4gIHRleHRBbGlnbjogc3RyaW5nO1xuICBlZGl0YWJsZTogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBDb2xvclBhbGV0dGVJbnB1dCA9ICh7XG4gIHZhbHVlLFxuICBvbkNoYW5nZSxcbiAgaWQsXG4gIHdpZHRoLFxuICB0ZXh0QWxpZ24sXG4gIGVkaXRhYmxlXG59OiBDb2xvclBhbGV0dGVJbnB1dFByb3BzKSA9PiB7XG4gIGNvbnN0IFtzdGF0ZVZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSh2YWx1ZSk7XG4gIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFZhbHVlKHZhbHVlKTtcbiAgfSwgW3ZhbHVlXSk7XG5cbiAgY29uc3Qgb25LZXlEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgZSA9PiB7XG4gICAgICBzd2l0Y2ggKGUua2V5Q29kZSkge1xuICAgICAgICBjYXNlIEtleUV2ZW50LkRPTV9WS19FTlRFUjpcbiAgICAgICAgY2FzZSBLZXlFdmVudC5ET01fVktfUkVUVVJOOlxuICAgICAgICAgIG9uQ2hhbmdlKHN0YXRlVmFsdWUpO1xuICAgICAgICAgIGlmIChpbnB1dFJlZiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgaW5wdXRSZWY/LmN1cnJlbnQuYmx1cigpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9LFxuICAgIFtvbkNoYW5nZSwgc3RhdGVWYWx1ZV1cbiAgKTtcblxuICBjb25zdCBfb25DaGFuZ2UgPSB1c2VDYWxsYmFjayhlID0+IHNldFZhbHVlKGUudGFyZ2V0LnZhbHVlKSwgW3NldFZhbHVlXSk7XG4gIGNvbnN0IG9uQmx1ciA9IHVzZUNhbGxiYWNrKCgpID0+IG9uQ2hhbmdlKHN0YXRlVmFsdWUpLCBbb25DaGFuZ2UsIHN0YXRlVmFsdWVdKTtcblxuICByZXR1cm4gZWRpdGFibGUgPyAoXG4gICAgPFN0eWxlZElucHV0XG4gICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgY2xhc3NOYW1lPVwiY3VzdG9tLXBhbGV0dGUtaGV4X19pbnB1dFwiXG4gICAgICB2YWx1ZT17c3RhdGVWYWx1ZX1cbiAgICAgIG9uQ2hhbmdlPXtfb25DaGFuZ2V9XG4gICAgICBvbkJsdXI9e29uQmx1cn1cbiAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgaWQ9e2lkfVxuICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgdGV4dEFsaWduPXt0ZXh0QWxpZ259XG4gICAgICBzZWNvbmRhcnlcbiAgICAvPlxuICApIDogKFxuICAgIDxJbnB1dFRleHQgY2xhc3NOYW1lPVwiY3VzdG9tLXBhbGV0dGUtaGV4X19pbnB1dF9fdGV4dFwiIHdpZHRoPXt3aWR0aH0gdGV4dEFsaWduPXt0ZXh0QWxpZ259PlxuICAgICAge3ZhbHVlfVxuICAgIDwvSW5wdXRUZXh0PlxuICApO1xufTtcblxuY29uc3QgRGFzaCA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiA2cHg7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLnN1YnRleHRDb2xvcn07XG4gIG1hcmdpbi1sZWZ0OiA0cHg7XG4gIG1hcmdpbi1yaWdodDogNHB4O1xuYDtcblxuY29uc3QgU3R5bGVkUmFuZ2VJbnB1dCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi1sZWZ0OiAxMnB4O1xuYDtcblxuY29uc3QgU3R5bGVkQ29sb3JIZXhJbnB1dCA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi1sZWZ0OiAxMnB4O1xuYDtcblxuZXhwb3J0IGNvbnN0IEVkaXRhYmxlQ29sb3JSYW5nZTogUmVhY3QuRkM8RWRpdGFibGVDb2xvclJhbmdlUHJvcHM+ID0gKHtcbiAgaXRlbSxcbiAgaXNMYXN0LFxuICBpbmRleCxcbiAgZWRpdENvbG9yTWFwLFxuICBlZGl0YWJsZVxufSkgPT4ge1xuICBjb25zdCBoYXNJbnB1dHMgPSBBcnJheS5pc0FycmF5KGl0ZW0/LmlucHV0cyk7XG4gIGNvbnN0IGxlZnRJbnB1dCA9IGhhc0lucHV0cyA/IGl0ZW0uaW5wdXRzWzBdIDogdW5kZWZpbmVkO1xuICBjb25zdCByaWdodElucHV0ID0gaGFzSW5wdXRzID8gaXRlbS5pbnB1dHNbMV0gOiB1bmRlZmluZWQ7XG4gIGNvbnN0IG5vTWluQm91bmQgPSAhTnVtYmVyLmlzRmluaXRlKGxlZnRJbnB1dCkgJiYgaW5kZXggPT09IDA7XG4gIGNvbnN0IG5vTWF4Qm91bmQgPSAhTnVtYmVyLmlzRmluaXRlKHJpZ2h0SW5wdXQpICYmIGlzTGFzdDtcbiAgY29uc3Qgb25DaGFuZ2VMZWZ0ID0gdXNlQ2FsbGJhY2soXG4gICAgdmFsID0+IHtcbiAgICAgIGlmIChlZGl0YWJsZSAmJiBlZGl0Q29sb3JNYXApIGVkaXRDb2xvck1hcChwYXJzZUZsb2F0KHZhbCksIGluZGV4IC0gMSk7XG4gICAgfSxcbiAgICBbZWRpdENvbG9yTWFwLCBpbmRleCwgZWRpdGFibGVdXG4gICk7XG4gIGNvbnN0IG9uQ2hhbmdlUmlnaHQgPSB1c2VDYWxsYmFjayhcbiAgICB2YWwgPT4ge1xuICAgICAgaWYgKGVkaXRhYmxlICYmIGVkaXRDb2xvck1hcCkgZWRpdENvbG9yTWFwKHBhcnNlRmxvYXQodmFsKSwgaW5kZXgpO1xuICAgIH0sXG4gICAgW2VkaXRDb2xvck1hcCwgaW5kZXgsIGVkaXRhYmxlXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFJhbmdlSW5wdXQ+XG4gICAgICA8Q29sb3JQYWxldHRlSW5wdXRcbiAgICAgICAgdmFsdWU9e25vTWluQm91bmQgPyAnTGVzcycgOiBTdHJpbmcobGVmdElucHV0ID8/ICcnKX1cbiAgICAgICAgaWQ9e2Bjb2xvci1wYWxldHRlLWlucHV0LSR7aW5kZXh9LWxlZnRgfVxuICAgICAgICB3aWR0aD1cIjUwcHhcIlxuICAgICAgICB0ZXh0QWxpZ249XCJlbmRcIlxuICAgICAgICBlZGl0YWJsZT17bm9NaW5Cb3VuZCA/IGZhbHNlIDogZWRpdGFibGV9XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZUxlZnR9XG4gICAgICAvPlxuICAgICAgPERhc2ggLz5cbiAgICAgIDxDb2xvclBhbGV0dGVJbnB1dFxuICAgICAgICB2YWx1ZT17bm9NYXhCb3VuZCA/ICdNb3JlJyA6IFN0cmluZyhyaWdodElucHV0ID8/ICcnKX1cbiAgICAgICAgaWQ9e2Bjb2xvci1wYWxldHRlLWlucHV0LSR7aW5kZXh9LXJpZ2h0YH1cbiAgICAgICAgd2lkdGg9XCI1MHB4XCJcbiAgICAgICAgdGV4dEFsaWduPVwiZW5kXCJcbiAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlUmlnaHR9XG4gICAgICAgIGVkaXRhYmxlPXtub01heEJvdW5kID8gZmFsc2UgOiBlZGl0YWJsZX1cbiAgICAgIC8+XG4gICAgPC9TdHlsZWRSYW5nZUlucHV0PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IEFkZENvbG9yU3RvcCA9ICh7b25Db2xvckFkZCwgSWNvbkNvbXBvbmVudH0pID0+IChcbiAgPFN0eWxlZEFjdGlvbiBvbkNsaWNrPXtvbkNvbG9yQWRkfSBjbGFzc05hbWU9XCJhZGRjb2xvclwiPlxuICAgIDxJY29uQ29tcG9uZW50IGhlaWdodD1cIjE0cHhcIiAvPlxuICA8L1N0eWxlZEFjdGlvbj5cbik7XG5cbmV4cG9ydCBjb25zdCBEZWxldGVDb2xvclN0b3AgPSAoe29uQ29sb3JEZWxldGUsIEljb25Db21wb25lbnR9KSA9PiAoXG4gIDxTdHlsZWRBY3Rpb24gb25DbGljaz17b25Db2xvckRlbGV0ZX0gY2xhc3NOYW1lPVwidHJhc2hiaW5cIj5cbiAgICA8SWNvbkNvbXBvbmVudCBoZWlnaHQ9XCIxNHB4XCIgLz5cbiAgPC9TdHlsZWRBY3Rpb24+XG4pO1xuXG5leHBvcnQgY29uc3QgQ3VzdG9tUGFsZXR0ZUlucHV0OiBSZWFjdC5GQzxDdXN0b21QYWxldHRlSW5wdXRQcm9wcz4gPSAoe1xuICBpbmRleCxcbiAgaXNTb3J0aW5nLFxuICBjb2xvcixcbiAgY29sb3JCcmVha3MsXG4gIGlucHV0Q29sb3JIZXgsXG4gIGVkaXRDb2xvck1hcFZhbHVlLFxuICBhY3Rpb25JY29ucyA9IGRlZmF1bHRBY3Rpb25JY29ucyxcbiAgZGlzYWJsZUFwcGVuZCxcbiAgZGlzYWJsZURlbGV0ZSxcbiAgb25EZWxldGUsXG4gIG9uQWRkLFxuICBvblRvZ2dsZVNrZXRjaGVyXG59KSA9PiB7XG4gIGNvbnN0IG9uQ2xpY2tTd3RhY2ggPSB1c2VDYWxsYmFjaygoKSA9PiBvblRvZ2dsZVNrZXRjaGVyKGluZGV4KSwgW29uVG9nZ2xlU2tldGNoZXIsIGluZGV4XSk7XG4gIGNvbnN0IG9uQ29sb3JJbnB1dCA9IHVzZUNhbGxiYWNrKHYgPT4gaW5wdXRDb2xvckhleChpbmRleCwgdiksIFtpbnB1dENvbG9ySGV4LCBpbmRleF0pO1xuICBjb25zdCBvbkNvbG9yRGVsZXRlID0gdXNlQ2FsbGJhY2soKCkgPT4gb25EZWxldGUoaW5kZXgpLCBbb25EZWxldGUsIGluZGV4XSk7XG4gIGNvbnN0IG9uQ29sb3JBZGQgPSB1c2VDYWxsYmFjaygoKSA9PiBvbkFkZChpbmRleCksIFtvbkFkZCwgaW5kZXhdKTtcbiAgY29uc3Qgc2hvd0hleElucHV0ID0gIWNvbG9yQnJlYWtzO1xuXG4gIHJldHVybiAoXG4gICAgPFNvcnRhYmxlSXRlbSBpZD17YCR7aW5kZXh9YH0gaXNTb3J0aW5nPXtpc1NvcnRpbmd9PlxuICAgICAge2xpc3RlbmVycyA9PiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjdXN0b20tcGFsZXR0ZS1pbnB1dF9fbGVmdFwiPlxuICAgICAgICAgICAgPERyYWdIYW5kbGUgY2xhc3NOYW1lPVwibGF5ZXJfX2RyYWctaGFuZGxlXCIgey4uLmxpc3RlbmVyc30+XG4gICAgICAgICAgICAgIDxhY3Rpb25JY29ucy5zb3J0IGhlaWdodD1cIjIwcHhcIiAvPlxuICAgICAgICAgICAgPC9EcmFnSGFuZGxlPlxuICAgICAgICAgICAgPENvbG9yU3dhdGNoIGNvbG9yPXtjb2xvcn0gb25DbGljaz17b25DbGlja1N3dGFjaH0gLz5cbiAgICAgICAgICAgIHtzaG93SGV4SW5wdXQgPyAoXG4gICAgICAgICAgICAgIDxTdHlsZWRDb2xvckhleElucHV0PlxuICAgICAgICAgICAgICAgIDxDb2xvclBhbGV0dGVJbnB1dFxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbG9yLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25Db2xvcklucHV0fVxuICAgICAgICAgICAgICAgICAgaWQ9e2BpbnB1dC1sYXllci1sYWJlbC0ke2luZGV4fWB9XG4gICAgICAgICAgICAgICAgICBlZGl0YWJsZVxuICAgICAgICAgICAgICAgICAgdGV4dEFsaWduPVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjcwcHhcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvU3R5bGVkQ29sb3JIZXhJbnB1dD5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAge2NvbG9yQnJlYWtzICYmIGluZGV4IDwgY29sb3JCcmVha3MubGVuZ3RoICYmIGlzTnVtZXJpY0NvbG9yQnJlYWtzKGNvbG9yQnJlYWtzKSA/IChcbiAgICAgICAgICAgICAgPEVkaXRhYmxlQ29sb3JSYW5nZVxuICAgICAgICAgICAgICAgIGl0ZW09e2NvbG9yQnJlYWtzW2luZGV4XX1cbiAgICAgICAgICAgICAgICBpc0xhc3Q9e2luZGV4ID09PSBjb2xvckJyZWFrcy5sZW5ndGggLSAxfVxuICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICBlZGl0Q29sb3JNYXA9e2VkaXRDb2xvck1hcFZhbHVlfVxuICAgICAgICAgICAgICAgIGVkaXRhYmxlXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImN1c3RvbS1wYWxldHRlLWlucHV0X19yaWdodFwiPlxuICAgICAgICAgICAgeyFkaXNhYmxlQXBwZW5kID8gKFxuICAgICAgICAgICAgICA8QWRkQ29sb3JTdG9wIG9uQ29sb3JBZGQ9e29uQ29sb3JBZGR9IEljb25Db21wb25lbnQ9e2FjdGlvbkljb25zLmFkZH0gLz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgeyFkaXNhYmxlRGVsZXRlID8gKFxuICAgICAgICAgICAgICA8RGVsZXRlQ29sb3JTdG9wIG9uQ29sb3JEZWxldGU9e29uQ29sb3JEZWxldGV9IEljb25Db21wb25lbnQ9e2FjdGlvbkljb25zLmRlbGV0ZX0gLz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgPC9Tb3J0YWJsZUl0ZW0+XG4gICk7XG59O1xuXG5jb25zdCBTdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyV3JhcHBlciA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdjYXRlZ29yaWNhbC12YWx1ZS1waWNrZXInXG59KWBcbiAgd2lkdGg6IDE1MHB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dENvbG9yfTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgY29sdW1uLWdhcDogOHB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG5gO1xuXG50eXBlIFN0eWxlZENhdGVnb3JpY2FsVmFsdWVQaWNrZXJQcm9wcyA9IHtub0JvcmRlcjogYm9vbGVhbn07XG5jb25zdCBTdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyID0gc3R5bGVkLmRpdjxTdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyUHJvcHM+YFxuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgYm9yZGVyLWJvdHRvbTogJHtwcm9wcyA9PiAocHJvcHMubm9Cb3JkZXIgPyAnJyA6ICcxcHggZGFzaGVkJyl9O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBtYXgtd2lkdGg6IDEwMHB4O1xuYDtcblxudHlwZSBEcm9wZG93blZhbHVlc1dyYXBwZXJQcm9wcyA9IHt3aWR0aDogbnVtYmVyfTtcbmNvbnN0IERyb3Bkb3duVmFsdWVzV3JhcHBlciA9IHN0eWxlZC5kaXY8RHJvcGRvd25WYWx1ZXNXcmFwcGVyUHJvcHM+YFxuICBib3JkZXI6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRyb3Bkb3duV3JhcHBlclp9O1xuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy53aWR0aH1weDtcbmA7XG5cbnR5cGUgU2VsZWN0ZWRWYWx1ZXNXcmFwcGVyUHJvcHMgPSB7d2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXJ9O1xuY29uc3QgU2VsZWN0ZWRWYWx1ZXNXcmFwcGVyID0gc3R5bGVkKERyb3Bkb3duVmFsdWVzV3JhcHBlcik8U2VsZWN0ZWRWYWx1ZXNXcmFwcGVyUHJvcHM+YFxuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy53aWR0aH1weDtcbiAgbWF4LWhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy5oZWlnaHR9cHg7XG4gIG92ZXJmbG93OiBhdXRvO1xuXG4gIC5jdXN0b20tcGFsZXR0ZS1jaGlja2xldGVkLWlucHV0IHtcbiAgICBwYWRkaW5nOiA4cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bldyYXBwZXJafTtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkRHJvcGRvd25IZWFkZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0Q29sb3J9O1xuICBwYWRkaW5nOiAwIDhweDtcbiAgZm9udC1zaXplOiAxMHB4O1xuXG4gIC5idXR0b24ge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkVG9vbHRpcENvbnRlbnQgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiA4cHg7XG4gIHdpZHRoOiAxNTBweDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuXG4gIGRpdiB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB9XG5gO1xuXG5jb25zdCBOVU1CRVJfVkFMVUVTX0lOX1RPT0xUSVAgPSAxMDtcblxuY29uc3QgQ2F0ZWdvcmljYWxTZWxlY3RvckNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgb25TZWxlY3RSZXN0OiAoKSA9PiBudWxsLFxuICBvblJlc2V0OiAoKSA9PiBudWxsXG59KTtcblxuLy8gQ2F0ZWdvcmljYWwgdmFsdWVzIGRyb3Bkb3dubGlzdDpcbi8vIGV4dGVuZGluZyBEcm9wZG93bkxpc3QgYW5kIGFkZGluZyAnU2VsZWN0IHRoZSBSZXN0JyBhbmQgJ1Jlc2V0JyBidXR0b25zXG5jbGFzcyBNb2RpZmllZERyb3Bkb3duTGlzdCBleHRlbmRzIERyb3Bkb3duTGlzdCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8Q2F0ZWdvcmljYWxTZWxlY3RvckNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAge2NvbnRleHQgPT4gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPFN0eWxlZERyb3Bkb3duSGVhZGVyPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gbGluayBzaXplPVwic21hbFwiIG9uQ2xpY2s9e2NvbnRleHQub25TZWxlY3RSZXN0fT5cbiAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGUgUmVzdFxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gbGluayBzaXplPVwic21hbFwiIG9uQ2xpY2s9e2NvbnRleHQub25SZXNldH0+XG4gICAgICAgICAgICAgICAgICBSZXNldFxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8L1N0eWxlZERyb3Bkb3duSGVhZGVyPlxuICAgICAgICAgICAgICA8RGl2aWRlckxpbmUgLz5cbiAgICAgICAgICAgICAgPERyb3Bkb3duTGlzdCB7Li4udGhpcy5wcm9wc30gLz5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQ2F0ZWdvcmljYWxTZWxlY3RvckNvbnRleHQuQ29uc3VtZXI+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIENhdGVnb3JpY2FsU2VsZWN0b3JQcm9wcyA9IHtcbiAgaW5kZXg6IG51bWJlcjtcbiAgc2VsZWN0ZWRWYWx1ZXM6IChzdHJpbmcgfCBudW1iZXIgfCBudWxsKVtdO1xuICBhbGxWYWx1ZXM6IHN0cmluZ1tdIHwgbnVtYmVyW107XG4gIGFkZENvbG9yTWFwVmFsdWU/OiAodjogKG51bWJlciB8IHN0cmluZyB8IG51bGwpW10sIGk6IG51bWJlcikgPT4gdm9pZDtcbiAgcmVtb3ZlQ29sb3JNYXBWYWx1ZT86ICh2OiBudW1iZXIgfCBzdHJpbmcsIGk6IG51bWJlcikgPT4gdm9pZDtcbiAgcmVzZXRDb2xvck1hcFZhbHVlPzogKGk6IG51bWJlcikgPT4gdm9pZDtcbiAgc2VsZWN0UmVzdENvbG9yTWFwVmFsdWU/OiAoaTogbnVtYmVyKSA9PiB2b2lkO1xuICBlZGl0YWJsZT86IGJvb2xlYW47XG59O1xuXG4vLyBDYXRlZ29yaWNhbCB2YWx1ZXMgc2VsZWN0b3IgZm9yIGVkaXRpbmcgY2F0ZWdvcmljYWwgdmFsdWVzXG5leHBvcnQgY29uc3QgQ2F0ZWdvcmljYWxTZWxlY3RvcjogUmVhY3QuRkM8Q2F0ZWdvcmljYWxTZWxlY3RvclByb3BzPiA9ICh7XG4gIGluZGV4LFxuICBzZWxlY3RlZFZhbHVlcyxcbiAgYWxsVmFsdWVzLFxuICBhZGRDb2xvck1hcFZhbHVlLFxuICByZW1vdmVDb2xvck1hcFZhbHVlLFxuICByZXNldENvbG9yTWFwVmFsdWUsXG4gIHNlbGVjdFJlc3RDb2xvck1hcFZhbHVlLFxuICBlZGl0YWJsZSA9IHRydWVcbn06IENhdGVnb3JpY2FsU2VsZWN0b3JQcm9wcykgPT4ge1xuICBjb25zdCBbc2hvd1R5cGVhaGVhZCwgc2V0U2hvd1R5cGVhaGVhZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3Qgb25PcHRpb25TZWxlY3RlZCA9IHVzZUNhbGxiYWNrKFxuICAgIHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IHByZXZpb3VzU2VsZWN0ZWQgPSB0b0FycmF5KHNlbGVjdGVkVmFsdWVzKTtcbiAgICAgIGNvbnN0IGl0ZW1zID0gdW5pcShwcmV2aW91c1NlbGVjdGVkLmNvbmNhdCh0b0FycmF5KHZhbHVlKSkpO1xuICAgICAgYWRkQ29sb3JNYXBWYWx1ZT8uKGl0ZW1zLCBpbmRleCk7XG4gICAgfSxcbiAgICBbc2VsZWN0ZWRWYWx1ZXMsIGluZGV4LCBhZGRDb2xvck1hcFZhbHVlXVxuICApO1xuXG4gIGNvbnN0IG9uT3BlbkRyb3Bkb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFNob3dUeXBlYWhlYWQodHJ1ZSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvbkNsb3NlRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0U2hvd1R5cGVhaGVhZChmYWxzZSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvblJlbW92ZUl0ZW0gPSB1c2VDYWxsYmFjayhcbiAgICB2YWx1ZSA9PiB7XG4gICAgICByZW1vdmVDb2xvck1hcFZhbHVlPy4odmFsdWUsIGluZGV4KTtcbiAgICB9LFxuICAgIFtpbmRleCwgcmVtb3ZlQ29sb3JNYXBWYWx1ZV1cbiAgKTtcblxuICBjb25zdCBvblJlc2V0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHJlc2V0Q29sb3JNYXBWYWx1ZT8uKGluZGV4KTtcbiAgICBzZXRTaG93VHlwZWFoZWFkKGZhbHNlKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSwgW3Jlc2V0Q29sb3JNYXBWYWx1ZSwgaW5kZXhdKTtcblxuICBjb25zdCBvblNlbGVjdFJlc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2VsZWN0UmVzdENvbG9yTWFwVmFsdWU/LihpbmRleCk7XG4gICAgc2V0U2hvd1R5cGVhaGVhZChmYWxzZSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sIFtzZWxlY3RSZXN0Q29sb3JNYXBWYWx1ZSwgaW5kZXhdKTtcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRDYXRlZ29yaWNhbFZhbHVlUGlja2VyV3JhcHBlcj5cbiAgICAgIHtlZGl0YWJsZSAmJiA8QWRkIGhlaWdodD1cIjEycHhcIiBvbkNsaWNrPXtvbk9wZW5Ecm9wZG93bn0gLz59XG4gICAgICA8U3R5bGVkQ2F0ZWdvcmljYWxWYWx1ZVBpY2tlclxuICAgICAgICBub0JvcmRlcj17c2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID09PSAwIHx8ICFlZGl0YWJsZX1cbiAgICAgICAgb25DbGljaz17b25PcGVuRHJvcGRvd259XG4gICAgICAgIGRhdGEtdGlwXG4gICAgICAgIGRhdGEtZm9yPXtgY2F0ZWdvcnktdmFsdWVzLSR7aW5kZXh9YH1cbiAgICAgID5cbiAgICAgICAge3NlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gJ0FkZCBWYWx1ZSdcbiAgICAgICAgICA6IHNlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gMVxuICAgICAgICAgID8gc2VsZWN0ZWRWYWx1ZXNbMF1cbiAgICAgICAgICA6IGAke3NlbGVjdGVkVmFsdWVzLmxlbmd0aH0gc2VsZWN0ZWRgfVxuICAgICAgICB7c2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID4gMSAmJiAoXG4gICAgICAgICAgPFRvb2x0aXAgaWQ9e2BjYXRlZ29yeS12YWx1ZXMtJHtpbmRleH1gfSBwbGFjZT1cInRvcFwiIGludGVyYWN0aXZlPXt0cnVlfT5cbiAgICAgICAgICAgIDxTdHlsZWRUb29sdGlwQ29udGVudD5cbiAgICAgICAgICAgICAge3NlbGVjdGVkVmFsdWVzLnNsaWNlKDAsIE5VTUJFUl9WQUxVRVNfSU5fVE9PTFRJUCkubWFwKCh2YWx1ZSwgaSkgPT4gKFxuICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpfT57dmFsdWV9PC9kaXY+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICB7c2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID4gTlVNQkVSX1ZBTFVFU19JTl9UT09MVElQICYmIDxkaXY+Li4uPC9kaXY+fVxuICAgICAgICAgICAgPC9TdHlsZWRUb29sdGlwQ29udGVudD5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICl9XG4gICAgICA8L1N0eWxlZENhdGVnb3JpY2FsVmFsdWVQaWNrZXI+XG4gICAgICB7ZWRpdGFibGUgJiYgKFxuICAgICAgICA8UG9ydGFsZWQgbGVmdD17MH0gdG9wPXswfSBpc09wZW5lZD17c2hvd1R5cGVhaGVhZH0gb25DbG9zZT17b25DbG9zZURyb3Bkb3dufT5cbiAgICAgICAgICB7c2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID4gMSAmJiAoXG4gICAgICAgICAgICA8U2VsZWN0ZWRWYWx1ZXNXcmFwcGVyIHdpZHRoPXsyNTB9IGhlaWdodD17MjAwfT5cbiAgICAgICAgICAgICAgPENoaWNrbGV0ZWRJbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J2N1c3RvbS1wYWxldHRlLWNoaWNrbGV0ZWQtaW5wdXQnfVxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e3NlbGVjdGVkVmFsdWVzfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXsnJ31cbiAgICAgICAgICAgICAgICByZW1vdmVJdGVtPXtvblJlbW92ZUl0ZW19XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gbnVsbH1cbiAgICAgICAgICAgICAgICBDdXN0b21DaGlja2xldENvbXBvbmVudD17bnVsbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvU2VsZWN0ZWRWYWx1ZXNXcmFwcGVyPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPERyb3Bkb3duVmFsdWVzV3JhcHBlciB3aWR0aD17MjUwfT5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3twb3NpdGlvbjogJ3JlbGF0aXZlJ319PlxuICAgICAgICAgICAgICA8Q2F0ZWdvcmljYWxTZWxlY3RvckNvbnRleHQuUHJvdmlkZXJcbiAgICAgICAgICAgICAgICB2YWx1ZT17e1xuICAgICAgICAgICAgICAgICAgb25SZXNldCxcbiAgICAgICAgICAgICAgICAgIG9uU2VsZWN0UmVzdFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VHlwZWFoZWFkXG4gICAgICAgICAgICAgICAgICBjdXN0b21DbGFzc2VzPXt7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHM6ICdsaXN0LXNlbGVjdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQ6ICd0eXBlYWhlYWRfX2lucHV0JyxcbiAgICAgICAgICAgICAgICAgICAgbGlzdEl0ZW06ICdsaXN0X19pdGVtJyxcbiAgICAgICAgICAgICAgICAgICAgbGlzdEFuY2hvcjogJ2xpc3RfX2l0ZW1fX2FuY2hvcidcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBvcHRpb25zPXthbGxWYWx1ZXN9XG4gICAgICAgICAgICAgICAgICAvLyBhZGQgc2FmZSBzdHJpbmcgY2FzdGluZyBmb3IgdGhlIFR5cGVhaGVhZCwgc28gZnV6enkgc2VhcmNoIG5ldmVyIHJlY2VpdmVzIG5vbi1zdHJpbmdzLCBwcmV2ZW50aW5nIHRoZSB0b0xvd2VyQ2FzZSBjcmFzaFxuICAgICAgICAgICAgICAgICAgZGlzcGxheU9wdGlvbj17byA9PiBTdHJpbmcobyA/PyAnJyl9XG4gICAgICAgICAgICAgICAgICBmaWx0ZXJPcHRpb249eyhpbnB1dCwgbykgPT4gU3RyaW5nKG8gPz8gJycpLmluY2x1ZGVzKFN0cmluZyhpbnB1dCA/PyAnJykpfVxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9eydTZWFyY2gnfVxuICAgICAgICAgICAgICAgICAgb25PcHRpb25TZWxlY3RlZD17b25PcHRpb25TZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGN1c3RvbUxpc3RDb21wb25lbnQ9e01vZGlmaWVkRHJvcGRvd25MaXN0fVxuICAgICAgICAgICAgICAgICAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ9e0xpc3RJdGVtfVxuICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgIHNob3dPcHRpb25zV2hlbkVtcHR5XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPXtzZWxlY3RlZFZhbHVlc31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0NhdGVnb3JpY2FsU2VsZWN0b3JDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9Ecm9wZG93blZhbHVlc1dyYXBwZXI+XG4gICAgICAgIDwvUG9ydGFsZWQ+XG4gICAgICApfVxuICAgIDwvU3R5bGVkQ2F0ZWdvcmljYWxWYWx1ZVBpY2tlcldyYXBwZXI+XG4gICk7XG59O1xuXG5leHBvcnQgdHlwZSBDYXRlZ29yaWNhbEN1c3RvbVBhbGV0dGVJbnB1dFByb3BzID0ge1xuICBpbmRleDogbnVtYmVyO1xuICBpc1NvcnRpbmc6IGJvb2xlYW47XG4gIGNvbG9yOiBIZXhDb2xvcjtcbiAgY29sb3JNYXA/OiBDb2xvck1hcCB8IG51bGw7XG4gIGFkZENvbG9yTWFwVmFsdWU6ICh2OiAobnVtYmVyIHwgc3RyaW5nIHwgbnVsbClbXSwgaTogbnVtYmVyKSA9PiB2b2lkO1xuICByZW1vdmVDb2xvck1hcFZhbHVlOiAodjogbnVtYmVyIHwgc3RyaW5nLCBpOiBudW1iZXIpID0+IHZvaWQ7XG4gIHJlc2V0Q29sb3JNYXBWYWx1ZTogKGk6IG51bWJlcikgPT4gdm9pZDtcbiAgc2VsZWN0UmVzdENvbG9yTWFwVmFsdWU6IChpOiBudW1iZXIpID0+IHZvaWQ7XG4gIGFjdGlvbkljb25zPzogQWN0aW9uSWNvbnM7XG4gIG9uRGVsZXRlOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgb25BZGQ6IChpbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBvblRvZ2dsZVNrZXRjaGVyOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgYWxsVmFsdWVzOiBzdHJpbmdbXSB8IG51bWJlcltdO1xuICBkaXNhYmxlRGVsZXRlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBDYXRlZ29yaWNhbEN1c3RvbVBhbGV0dGVJbnB1dDogUmVhY3QuRkM8Q2F0ZWdvcmljYWxDdXN0b21QYWxldHRlSW5wdXRQcm9wcz4gPSAoe1xuICBpbmRleCxcbiAgaXNTb3J0aW5nLFxuICBjb2xvcixcbiAgY29sb3JNYXAsXG4gIGFjdGlvbkljb25zID0gZGVmYXVsdEFjdGlvbkljb25zLFxuICBvbkRlbGV0ZSxcbiAgZGlzYWJsZURlbGV0ZSxcbiAgb25Ub2dnbGVTa2V0Y2hlcixcbiAgYWRkQ29sb3JNYXBWYWx1ZSxcbiAgcmVtb3ZlQ29sb3JNYXBWYWx1ZSxcbiAgcmVzZXRDb2xvck1hcFZhbHVlLFxuICBzZWxlY3RSZXN0Q29sb3JNYXBWYWx1ZSxcbiAgYWxsVmFsdWVzXG59OiBDYXRlZ29yaWNhbEN1c3RvbVBhbGV0dGVJbnB1dFByb3BzKSA9PiB7XG4gIGNvbnN0IHNlbGVjdGVkVmFsdWVzOiAobnVtYmVyIHwgc3RyaW5nIHwgbnVsbClbXSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghY29sb3JNYXAgfHwgIWNvbG9yTWFwW2luZGV4XSkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IHZhbHVlID0gY29sb3JNYXBbaW5kZXhdWzBdO1xuICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiB2YWx1ZSAhPT0gbnVsbCA/IFt2YWx1ZV0gOiBbXTtcbiAgICByZXR1cm4gdmFsdWVzO1xuICB9LCBbY29sb3JNYXAsIGluZGV4XSk7XG5cbiAgY29uc3Qgb25DbGlja1N3dGFjaCA9IHVzZUNhbGxiYWNrKCgpID0+IG9uVG9nZ2xlU2tldGNoZXIoaW5kZXgpLCBbb25Ub2dnbGVTa2V0Y2hlciwgaW5kZXhdKTtcbiAgY29uc3Qgb25Db2xvckRlbGV0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IG9uRGVsZXRlKGluZGV4KSwgW29uRGVsZXRlLCBpbmRleF0pO1xuXG4gIHJldHVybiAoXG4gICAgPFNvcnRhYmxlSXRlbSBpZD17YCR7aW5kZXh9YH0gaXNTb3J0aW5nPXtpc1NvcnRpbmd9PlxuICAgICAge2xpc3RlbmVycyA9PiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjdXN0b20tcGFsZXR0ZS1pbnB1dF9fbGVmdFwiPlxuICAgICAgICAgICAgPERyYWdIYW5kbGUgY2xhc3NOYW1lPVwibGF5ZXJfX2RyYWctaGFuZGxlXCIgey4uLmxpc3RlbmVyc30+XG4gICAgICAgICAgICAgIDxhY3Rpb25JY29ucy5zb3J0IGhlaWdodD1cIjIwcHhcIiAvPlxuICAgICAgICAgICAgPC9EcmFnSGFuZGxlPlxuICAgICAgICAgICAgPENvbG9yU3dhdGNoIGNvbG9yPXtjb2xvcn0gb25DbGljaz17b25DbGlja1N3dGFjaH0gLz5cbiAgICAgICAgICAgIHtjb2xvck1hcCAmJiBjb2xvck1hcFtpbmRleF0gJiYgKFxuICAgICAgICAgICAgICA8Q2F0ZWdvcmljYWxTZWxlY3RvclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVzPXtzZWxlY3RlZFZhbHVlc31cbiAgICAgICAgICAgICAgICBhbGxWYWx1ZXM9e2FsbFZhbHVlc31cbiAgICAgICAgICAgICAgICBhZGRDb2xvck1hcFZhbHVlPXthZGRDb2xvck1hcFZhbHVlfVxuICAgICAgICAgICAgICAgIHJlbW92ZUNvbG9yTWFwVmFsdWU9e3JlbW92ZUNvbG9yTWFwVmFsdWV9XG4gICAgICAgICAgICAgICAgcmVzZXRDb2xvck1hcFZhbHVlPXtyZXNldENvbG9yTWFwVmFsdWV9XG4gICAgICAgICAgICAgICAgc2VsZWN0UmVzdENvbG9yTWFwVmFsdWU9e3NlbGVjdFJlc3RDb2xvck1hcFZhbHVlfVxuICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjdXN0b20tcGFsZXR0ZS1pbnB1dF9fcmlnaHRcIj5cbiAgICAgICAgICAgIHshZGlzYWJsZURlbGV0ZSA/IChcbiAgICAgICAgICAgICAgPERlbGV0ZUNvbG9yU3RvcCBvbkNvbG9yRGVsZXRlPXtvbkNvbG9yRGVsZXRlfSBJY29uQ29tcG9uZW50PXthY3Rpb25JY29ucy5kZWxldGV9IC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgIDwvU29ydGFibGVJdGVtPlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IEJvdHRvbUFjdGlvbiA9ICh7b25DYW5jZWwsIG9uQ29uZmlybX0pID0+IChcbiAgPFN0eWxlZEJ1dHRvbkNvbnRhaW5lcj5cbiAgICA8QnV0dG9uIGNsYXNzTmFtZT1cImNvbmZpcm0tYXBwbHlfX2J1dHRvblwiIHNtYWxsIG9uQ2xpY2s9e29uQ29uZmlybX0+XG4gICAgICBDb25maXJtXG4gICAgPC9CdXR0b24+XG4gICAgPEJ1dHRvbiBsaW5rIHNtYWxsIG9uQ2xpY2s9e29uQ2FuY2VsfT5cbiAgICAgIENhbmNlbFxuICAgIDwvQnV0dG9uPlxuICA8L1N0eWxlZEJ1dHRvbkNvbnRhaW5lcj5cbik7XG5cbmNvbnN0IFN0eWxlZEN1c3RvbVBhbGV0dGUgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnY3VzdG9tLXBhbGV0dGUnXG59KWBcbiAgbWFyZ2luLXRvcDogOHB4O1xuYDtcblxuZnVuY3Rpb24gQ3VzdG9tUGFsZXR0ZUZhY3RvcnkoKTogUmVhY3QuRkM8Q3VzdG9tUGFsZXR0ZVByb3BzPiB7XG4gIGNvbnN0IEN1c3RvbVBhbGV0dGU6IFJlYWN0LkZDPEN1c3RvbVBhbGV0dGVQcm9wcz4gPSAoe1xuICAgIG9yZGluYWxEb21haW4sXG4gICAgY3VzdG9tUGFsZXR0ZSxcbiAgICBzZXRDb2xvclBhbGV0dGVVSSxcbiAgICBzaG93U2tldGNoZXIsXG4gICAgYWN0aW9uSWNvbnMgPSBkZWZhdWx0QWN0aW9uSWNvbnMsXG4gICAgb25DYW5jZWwsXG4gICAgb25BcHBseVxuICB9KSA9PiB7XG4gICAgY29uc3QgW2lzU29ydGluZywgc2V0SXNTb3J0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCB7Y29sb3JzLCBjb2xvck1hcH0gPSBjdXN0b21QYWxldHRlO1xuICAgIGNvbnN0IGNvbG9yQnJlYWtzID0gdXNlTWVtbyhcbiAgICAgICgpID0+XG4gICAgICAgIGNvbG9yTWFwXG4gICAgICAgICAgPyBjdXN0b21QYWxldHRlLnR5cGUgPT09ICdjdXN0b20nXG4gICAgICAgICAgICA/IGNvbG9yTWFwVG9Db2xvckJyZWFrcyhjb2xvck1hcClcbiAgICAgICAgICAgIDogY29sb3JNYXBUb0NhdGVnb3JpY2FsQ29sb3JCcmVha3MoY29sb3JNYXApXG4gICAgICAgICAgOiBudWxsLFxuICAgICAgW2N1c3RvbVBhbGV0dGUudHlwZSwgY29sb3JNYXBdXG4gICAgKTtcblxuICAgIGNvbnN0IG9uUGlja2VyVXBkYXRlID0gdXNlQ2FsbGJhY2soXG4gICAgICBjb2xvciA9PiB7XG4gICAgICAgIGlmIChjb2xvciAmJiBOdW1iZXIuaXNGaW5pdGUoc2hvd1NrZXRjaGVyKSkge1xuICAgICAgICAgIGNvbnN0IG5ld0N1c3RvbVBhbGV0dGUgPSB1cGRhdGVDdXN0b21QYWxldHRlQ29sb3IoXG4gICAgICAgICAgICBjdXN0b21QYWxldHRlLFxuICAgICAgICAgICAgTnVtYmVyKHNob3dTa2V0Y2hlciksXG4gICAgICAgICAgICBjb2xvci5oZXhcbiAgICAgICAgICApO1xuICAgICAgICAgIHNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgICAgIGN1c3RvbVBhbGV0dGU6IG5ld0N1c3RvbVBhbGV0dGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtjdXN0b21QYWxldHRlLCBzaG93U2tldGNoZXIsIHNldENvbG9yUGFsZXR0ZVVJXVxuICAgICk7XG4gICAgY29uc3Qgb25Ub2dnbGVTa2V0Y2hlciA9IHVzZUNhbGxiYWNrKFxuICAgICAgdmFsID0+IHtcbiAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgIHNob3dTa2V0Y2hlcjogdmFsXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIFtzZXRDb2xvclBhbGV0dGVVSV1cbiAgICApO1xuICAgIGNvbnN0IG9uRGVsZXRlID0gdXNlQ2FsbGJhY2soXG4gICAgICBpbmRleCA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0N1c3RvbVBhbGV0dGUgPSByZW1vdmVDdXN0b21QYWxldHRlQ29sb3IoY3VzdG9tUGFsZXR0ZSwgaW5kZXgpO1xuICAgICAgICBzZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgICAgY3VzdG9tUGFsZXR0ZTogbmV3Q3VzdG9tUGFsZXR0ZVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBbY3VzdG9tUGFsZXR0ZSwgc2V0Q29sb3JQYWxldHRlVUldXG4gICAgKTtcblxuICAgIGNvbnN0IG9uQWRkID0gdXNlQ2FsbGJhY2soXG4gICAgICBpbmRleCA9PiB7XG4gICAgICAgIC8vIGFkZCBjb2xvciBhdCB0aGUgZW5kXG4gICAgICAgIGNvbnN0IG5ld0N1c3RvbVBhbGV0dGUgPSBhZGRDdXN0b21QYWxldHRlQ29sb3IoY3VzdG9tUGFsZXR0ZSwgaW5kZXgpO1xuICAgICAgICBzZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgICAgY3VzdG9tUGFsZXR0ZTogbmV3Q3VzdG9tUGFsZXR0ZVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBbY3VzdG9tUGFsZXR0ZSwgc2V0Q29sb3JQYWxldHRlVUldXG4gICAgKTtcblxuICAgIGNvbnN0IG9uQWRkQ2F0ZWdvcmljYWxTdGVwID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgb25BZGQoY29sb3JzLmxlbmd0aCAtIDEpO1xuICAgIH0sIFtjb2xvcnMubGVuZ3RoLCBvbkFkZF0pO1xuXG4gICAgY29uc3Qgb25Td2F0Y2hDbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIG9uVG9nZ2xlU2tldGNoZXIoZmFsc2UpO1xuICAgIH0sIFtvblRvZ2dsZVNrZXRjaGVyXSk7XG5cbiAgICBjb25zdCBvbkNvbmZpcm0gPSB1c2VDYWxsYmFjayhcbiAgICAgIGV2ZW50ID0+IHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9uQ2FuY2VsKCk7XG4gICAgICAgIG9uQXBwbHkoZXZlbnQpO1xuICAgICAgfSxcbiAgICAgIFtvbkNhbmNlbCwgb25BcHBseV1cbiAgICApO1xuXG4gICAgY29uc3Qgb25Tb3J0RW5kID0gdXNlQ2FsbGJhY2soXG4gICAgICAoZXZlbnQ6IERyYWdFbmRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCB7YWN0aXZlLCBvdmVyfSA9IGV2ZW50O1xuICAgICAgICBpZiAob3ZlciAmJiBhY3RpdmUuaWQgIT09IG92ZXIuaWQpIHtcbiAgICAgICAgICBjb25zdCBvbGRJbmRleCA9IGNvbG9ycy5maW5kSW5kZXgoKF8sIGluZGV4KSA9PiBgJHtpbmRleH1gID09PSBhY3RpdmUuaWQpO1xuICAgICAgICAgIGNvbnN0IG5ld0luZGV4ID0gY29sb3JzLmZpbmRJbmRleCgoXywgaW5kZXgpID0+IGAke2luZGV4fWAgPT09IG92ZXIuaWQpO1xuICAgICAgICAgIGNvbnN0IG5ld0N1c3RvbVBhbGV0dGUgPSBzb3J0Q3VzdG9tUGFsZXR0ZUNvbG9yKGN1c3RvbVBhbGV0dGUsIG9sZEluZGV4LCBuZXdJbmRleCk7XG4gICAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgICAgY3VzdG9tUGFsZXR0ZTogbmV3Q3VzdG9tUGFsZXR0ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHNldElzU29ydGluZyhmYWxzZSk7XG4gICAgICB9LFxuICAgICAgW2NvbG9ycywgY3VzdG9tUGFsZXR0ZSwgc2V0SXNTb3J0aW5nLCBzZXRDb2xvclBhbGV0dGVVSV1cbiAgICApO1xuXG4gICAgY29uc3Qgb25Tb3J0U3RhcnQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRJc1NvcnRpbmcodHJ1ZSk7XG4gICAgfSwgW3NldElzU29ydGluZ10pO1xuXG4gICAgY29uc3QgaW5wdXRDb2xvckhleCA9IHVzZUNhbGxiYWNrKFxuICAgICAgKGluZGV4LCB2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBuZXdDdXN0b21QYWxldHRlID0gdXBkYXRlQ3VzdG9tUGFsZXR0ZUNvbG9yKGN1c3RvbVBhbGV0dGUsIGluZGV4LCB2YWx1ZSk7XG4gICAgICAgIC8vIHNldENvbG9ycyhuZXdDb2xvcnMpO1xuICAgICAgICBzZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgICAgY3VzdG9tUGFsZXR0ZTogbmV3Q3VzdG9tUGFsZXR0ZVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBbY3VzdG9tUGFsZXR0ZSwgc2V0Q29sb3JQYWxldHRlVUldXG4gICAgKTtcblxuICAgIGNvbnN0IGVkaXRDb2xvck1hcFZhbHVlID0gdXNlQ2FsbGJhY2soXG4gICAgICAodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghY3VzdG9tUGFsZXR0ZS5jb2xvck1hcCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdDb2xvck1hcCA9IGN1c3RvbVBhbGV0dGUuY29sb3JNYXAubWFwKFxuICAgICAgICAgIChjbSwgaSkgPT4gKGkgPT09IGluZGV4ID8gW3ZhbHVlLCBjbVsxXV0gOiBjbSkgYXMgW3N0cmluZywgc3RyaW5nXVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIHNvcnQgdGhlIHVzZXIgaW5wdXRzIGluIGNhc2UgdGhlIGJyZWFrIHZhbHVlcyBhcmUgbm90IG9yZGVyZWRcbiAgICAgICAgY29uc3QgYnJlYWtzID0gbmV3Q29sb3JNYXBcbiAgICAgICAgICAubWFwKGNtID0+IGNtWzBdIGFzIHN0cmluZyB8IG51bGwpXG4gICAgICAgICAgLnNsaWNlKDAsIC0xKVxuICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBOdW1iZXIoYSkgLSBOdW1iZXIoYikpXG4gICAgICAgICAgLmNvbmNhdChudWxsKTtcbiAgICAgICAgY29uc3Qgc29ydGVkTmV3Q29sb3JNYXA6IENvbG9yTWFwID0gbmV3Q29sb3JNYXAubWFwKChjbSwgaSkgPT4gW2JyZWFrc1tpXSwgY21bMV1dKTtcblxuICAgICAgICBzZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgICAgY3VzdG9tUGFsZXR0ZToge1xuICAgICAgICAgICAgLi4uY3VzdG9tUGFsZXR0ZSxcbiAgICAgICAgICAgIGNvbG9yTWFwOiBzb3J0ZWROZXdDb2xvck1hcFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgW3NldENvbG9yUGFsZXR0ZVVJLCBjdXN0b21QYWxldHRlXVxuICAgICk7XG5cbiAgICAvLyByZW1vdmUgYSBzZWxlY3RlZCBjYXRlZ29yeSBpdGVtIGZyb20gYSBjb2xvciBtYXBcbiAgICBjb25zdCByZW1vdmVDYXRlZ29yaWNhbENvbG9yTWFwVmFsdWUgPSB1c2VDYWxsYmFjayhcbiAgICAgIChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoIWNvbG9yTWFwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgICBjdXN0b21QYWxldHRlOiB7XG4gICAgICAgICAgICAuLi5jdXN0b21QYWxldHRlLFxuICAgICAgICAgICAgY29sb3JNYXA6IHJlbW92ZUNhdGVnb3JpY2FsVmFsdWVGcm9tQ29sb3JNYXAoY29sb3JNYXAsIGl0ZW0sIGluZGV4KVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgW3NldENvbG9yUGFsZXR0ZVVJLCBjdXN0b21QYWxldHRlLCBjb2xvck1hcF1cbiAgICApO1xuXG4gICAgLy8gYWRkIHNlbGVjdGVkIGNhdGVnb3JpY2FsIGl0ZW1zIHRvIGEgY29sb3IgbWFwXG4gICAgY29uc3QgYWRkQ2F0ZWdvcmljYWxDb2xvck1hcFZhbHVlID0gdXNlQ2FsbGJhY2soXG4gICAgICAoaXRlbXMsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghY29sb3JNYXApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgIGN1c3RvbVBhbGV0dGU6IHtcbiAgICAgICAgICAgIC4uLmN1c3RvbVBhbGV0dGUsXG4gICAgICAgICAgICBjb2xvck1hcDogYWRkQ2F0ZWdvcmljYWxWYWx1ZXNUb0NvbG9yTWFwKGNvbG9yTWFwLCBpdGVtcywgaW5kZXgpXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBbc2V0Q29sb3JQYWxldHRlVUksIGN1c3RvbVBhbGV0dGUsIGNvbG9yTWFwXVxuICAgICk7XG5cbiAgICAvLyByZXNldCBhIGNvbG9yIG1hcFxuICAgIGNvbnN0IHJlc2V0Q2F0ZWdvcmljYWxDb2xvck1hcFZhbHVlID0gdXNlQ2FsbGJhY2soXG4gICAgICBpbmRleCA9PiB7XG4gICAgICAgIGlmICghY29sb3JNYXApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgIGN1c3RvbVBhbGV0dGU6IHtcbiAgICAgICAgICAgIC4uLmN1c3RvbVBhbGV0dGUsXG4gICAgICAgICAgICBjb2xvck1hcDogcmVzZXRDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleChjb2xvck1hcCwgaW5kZXgpXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBbc2V0Q29sb3JQYWxldHRlVUksIGN1c3RvbVBhbGV0dGUsIGNvbG9yTWFwXVxuICAgICk7XG5cbiAgICAvLyBzZWxlY3QgdGhlIHJlc3QgdmFsdWVzIGZvciBhIGNvbG9yIG1hcFxuICAgIGNvbnN0IHNlbGVjdFJlc3RDYXRlZ29yaWNhbENvbG9yTWFwID0gdXNlQ2FsbGJhY2soXG4gICAgICBpbmRleCA9PiB7XG4gICAgICAgIGlmICghY29sb3JNYXApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICAgIGN1c3RvbVBhbGV0dGU6IHtcbiAgICAgICAgICAgIC4uLmN1c3RvbVBhbGV0dGUsXG4gICAgICAgICAgICBjb2xvck1hcDogc2VsZWN0UmVzdENhdGVnb3JpY2FsQ29sb3JNYXBCeUluZGV4KGNvbG9yTWFwLCBpbmRleCwgb3JkaW5hbERvbWFpbilcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIFtzZXRDb2xvclBhbGV0dGVVSSwgY3VzdG9tUGFsZXR0ZSwgY29sb3JNYXAsIG9yZGluYWxEb21haW5dXG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkQ3VzdG9tUGFsZXR0ZT5cbiAgICAgICAgPFdyYXBwZWRTb3J0YWJsZUNvbnRhaW5lclxuICAgICAgICAgIGNsYXNzTmFtZT1cImN1c3RvbS1wYWxldHRlX19zb3J0YWJsZS1jb250YWluZXJcIlxuICAgICAgICAgIG9uU29ydEVuZD17b25Tb3J0RW5kfVxuICAgICAgICAgIG9uU29ydFN0YXJ0PXtvblNvcnRTdGFydH1cbiAgICAgICAgPlxuICAgICAgICAgIHtjb2xvcnMubWFwKChjb2xvciwgaW5kZXgpID0+XG4gICAgICAgICAgICBjdXN0b21QYWxldHRlLnR5cGUgPT09ICdjdXN0b20nID8gKFxuICAgICAgICAgICAgICA8Q3VzdG9tUGFsZXR0ZUlucHV0XG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICBjb2xvckJyZWFrcz17Y29sb3JCcmVha3N9XG4gICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgIGlzU29ydGluZz17aXNTb3J0aW5nfVxuICAgICAgICAgICAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgICAgICAgICAgICBpbnB1dENvbG9ySGV4PXtpbnB1dENvbG9ySGV4fVxuICAgICAgICAgICAgICAgIGRpc2FibGVBcHBlbmQ9e2NvbG9ycy5sZW5ndGggPj0gMjB9XG4gICAgICAgICAgICAgICAgZGlzYWJsZURlbGV0ZT17Y29sb3JzLmxlbmd0aCA8PSAyfVxuICAgICAgICAgICAgICAgIGFjdGlvbkljb25zPXthY3Rpb25JY29uc31cbiAgICAgICAgICAgICAgICBvbkFkZD17b25BZGR9XG4gICAgICAgICAgICAgICAgb25EZWxldGU9e29uRGVsZXRlfVxuICAgICAgICAgICAgICAgIG9uVG9nZ2xlU2tldGNoZXI9e29uVG9nZ2xlU2tldGNoZXJ9XG4gICAgICAgICAgICAgICAgZWRpdENvbG9yTWFwVmFsdWU9e2VkaXRDb2xvck1hcFZhbHVlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgb3JkaW5hbERvbWFpbiAmJiAoXG4gICAgICAgICAgICAgICAgPENhdGVnb3JpY2FsQ3VzdG9tUGFsZXR0ZUlucHV0XG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgY29sb3JNYXA9e2NvbG9yTWFwfVxuICAgICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgaXNTb3J0aW5nPXtpc1NvcnRpbmd9XG4gICAgICAgICAgICAgICAgICBjb2xvcj17Y29sb3J9XG4gICAgICAgICAgICAgICAgICBhY3Rpb25JY29ucz17YWN0aW9uSWNvbnN9XG4gICAgICAgICAgICAgICAgICBvbkFkZD17b25BZGR9XG4gICAgICAgICAgICAgICAgICBvbkRlbGV0ZT17b25EZWxldGV9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlRGVsZXRlPXtjb2xvcnMubGVuZ3RoIDw9IDJ9XG4gICAgICAgICAgICAgICAgICBvblRvZ2dsZVNrZXRjaGVyPXtvblRvZ2dsZVNrZXRjaGVyfVxuICAgICAgICAgICAgICAgICAgYWRkQ29sb3JNYXBWYWx1ZT17YWRkQ2F0ZWdvcmljYWxDb2xvck1hcFZhbHVlfVxuICAgICAgICAgICAgICAgICAgcmVtb3ZlQ29sb3JNYXBWYWx1ZT17cmVtb3ZlQ2F0ZWdvcmljYWxDb2xvck1hcFZhbHVlfVxuICAgICAgICAgICAgICAgICAgcmVzZXRDb2xvck1hcFZhbHVlPXtyZXNldENhdGVnb3JpY2FsQ29sb3JNYXBWYWx1ZX1cbiAgICAgICAgICAgICAgICAgIHNlbGVjdFJlc3RDb2xvck1hcFZhbHVlPXtzZWxlY3RSZXN0Q2F0ZWdvcmljYWxDb2xvck1hcH1cbiAgICAgICAgICAgICAgICAgIGFsbFZhbHVlcz17b3JkaW5hbERvbWFpbn1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKX1cbiAgICAgICAgPC9XcmFwcGVkU29ydGFibGVDb250YWluZXI+XG4gICAgICAgIHtjdXN0b21QYWxldHRlLnR5cGUgPT09ICdjdXN0b21PcmRpbmFsJyAmJiAoXG4gICAgICAgICAgPFN0eWxlZEFkZFN0ZXBDb250YWluZXI+XG4gICAgICAgICAgICA8QWRkQ29sb3JTdG9wIG9uQ29sb3JBZGQ9e29uQWRkQ2F0ZWdvcmljYWxTdGVwfSBJY29uQ29tcG9uZW50PXthY3Rpb25JY29ucy5hZGR9IC8+XG4gICAgICAgICAgICA8QnV0dG9uIGxpbmsgc2l6ZT1cInNtYWxcIiBvbkNsaWNrPXtvbkFkZENhdGVnb3JpY2FsU3RlcH0+XG4gICAgICAgICAgICAgIEFkZCBTdGVwXG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L1N0eWxlZEFkZFN0ZXBDb250YWluZXI+XG4gICAgICAgICl9XG4gICAgICAgIDxEaXZpZGVyTGluZSAvPlxuICAgICAgICB7LyogQ2FuY2VsIG9yIENvbmZpcm0gQnV0dG9ucyAqL31cbiAgICAgICAgPEJvdHRvbUFjdGlvbiBvbkNhbmNlbD17b25DYW5jZWx9IG9uQ29uZmlybT17b25Db25maXJtfSAvPlxuICAgICAgICA8UG9ydGFsZWQgaXNPcGVuZWQ9e3Nob3dTa2V0Y2hlciAhPT0gZmFsc2V9IGxlZnQ9ezI4MH0gdG9wPXstMzAwfSBvbkNsb3NlPXtvblN3YXRjaENsb3NlfT5cbiAgICAgICAgICA8Q3VzdG9tUGlja2VyIGNvbG9yPXtjb2xvcnNbTnVtYmVyKHNob3dTa2V0Y2hlcildfSBvbkNoYW5nZT17b25QaWNrZXJVcGRhdGV9IC8+XG4gICAgICAgIDwvUG9ydGFsZWQ+XG4gICAgICA8L1N0eWxlZEN1c3RvbVBhbGV0dGU+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gQ3VzdG9tUGFsZXR0ZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tUGFsZXR0ZUZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFdBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQVNBLElBQUFHLEtBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLEtBQUEsR0FBQUosT0FBQTtBQVNBLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFVBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGlCQUFBLEdBQUFMLHVCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBUSxTQUFBLEdBQUFULHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUyxrQkFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsVUFBQSxHQUFBWCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVcsZ0JBQUEsR0FBQVosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFZLGFBQUEsR0FBQVYsdUJBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFhLFlBQUEsR0FBQWIsT0FBQTtBQUNBLElBQUFjLFVBQUEsR0FBQWQsT0FBQTtBQUVBLElBQUFlLE1BQUEsR0FBQWYsT0FBQTtBQWNBLElBQUFnQixNQUFBLEdBQUFoQixPQUFBO0FBRUEsSUFBQWlCLGFBQUEsR0FBQWxCLHNCQUFBLENBQUFDLE9BQUE7QUFBMkMsSUFBQWtCLFNBQUE7QUFBQSxJQUFBQyxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFB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
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import { VectorTileLayer } from '@kepler.gl/layers';
3
3
  import { KeplerTable as KeplerDataset } from '@kepler.gl/table';
4
4
  import SourceDataSelectorFactory from '../common/source-data-selector';
5
+ import FieldSelectorFactory from '../../common/field-selector';
5
6
  import ChannelByValueSelectorFactory from './channel-by-value-selector';
6
7
  import LayerConfigGroupFactory from './layer-config-group';
7
8
  import { LayerColorRangeSelectorFactory, LayerColorSelectorFactory } from './layer-color-selector';
@@ -15,8 +16,8 @@ declare type Props = {
15
16
  layerChannelConfigProps: GetProps<typeof ChannelByValueSelectorFactory>;
16
17
  layerConfiguratorProps: any;
17
18
  };
18
- declare function VectorTileLayerConfiguratorFactory(ChannelByValueSelector: ReturnType<typeof ChannelByValueSelectorFactory>, LayerColorRangeSelector: ReturnType<typeof LayerColorRangeSelectorFactory>, LayerColorSelector: ReturnType<typeof LayerColorSelectorFactory>, LayerConfigGroup: ReturnType<typeof LayerConfigGroupFactory>, VisConfigSlider: ReturnType<typeof VisConfigSliderFactory>, VisConfigSwitch: ReturnType<typeof VisConfigSwitchFactory>): React.FC<Props>;
19
+ declare function VectorTileLayerConfiguratorFactory(ChannelByValueSelector: ReturnType<typeof ChannelByValueSelectorFactory>, LayerColorRangeSelector: ReturnType<typeof LayerColorRangeSelectorFactory>, LayerColorSelector: ReturnType<typeof LayerColorSelectorFactory>, LayerConfigGroup: ReturnType<typeof LayerConfigGroupFactory>, VisConfigSlider: ReturnType<typeof VisConfigSliderFactory>, VisConfigSwitch: ReturnType<typeof VisConfigSwitchFactory>, _SourceDataSelector: ReturnType<typeof SourceDataSelectorFactory>, FieldSelector: ReturnType<typeof FieldSelectorFactory>): React.FC<Props>;
19
20
  declare namespace VectorTileLayerConfiguratorFactory {
20
- var deps: (typeof VisConfigSwitchFactory | typeof LayerConfigGroupFactory | typeof VisConfigSliderFactory | typeof SourceDataSelectorFactory | typeof ChannelByValueSelectorFactory | typeof LayerColorSelectorFactory | typeof LayerColorRangeSelectorFactory)[];
21
+ var deps: (typeof FieldSelectorFactory | typeof VisConfigSwitchFactory | typeof LayerConfigGroupFactory | typeof VisConfigSliderFactory | typeof SourceDataSelectorFactory | typeof ChannelByValueSelectorFactory | typeof LayerColorSelectorFactory | typeof LayerColorRangeSelectorFactory)[];
21
22
  }
22
23
  export default VectorTileLayerConfiguratorFactory;