@carto/kepler.gl 0.0.42 → 0.0.43

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 (30) hide show
  1. package/CHANGELOG.md +711 -0
  2. package/dist/components/common/field-selector.js +62 -17
  3. package/dist/components/common/field-token.js +4 -12
  4. package/dist/components/common/icons/chevron-right.js +69 -0
  5. package/dist/components/common/icons/index.js +9 -1
  6. package/dist/components/common/item-selector/dropdown-list.js +137 -21
  7. package/dist/components/common/item-selector/item-selector-submenu.js +133 -0
  8. package/dist/components/common/item-selector/item-selector.js +7 -4
  9. package/dist/components/common/item-selector/typeahead.js +16 -16
  10. package/dist/components/side-panel/layer-panel/layer-configurator.js +11 -4
  11. package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.js +7 -3
  12. package/dist/constants/default-settings.js +33 -3
  13. package/dist/constants/index.js +7 -1
  14. package/dist/styles/base.js +4 -4
  15. package/package.json +1 -1
  16. package/src/components/common/field-selector.js +62 -21
  17. package/src/components/common/field-token.js +13 -14
  18. package/src/components/common/icons/chevron-right.js +47 -0
  19. package/src/components/common/icons/index.js +1 -0
  20. package/src/components/common/item-selector/dropdown-list.js +135 -36
  21. package/src/components/common/item-selector/item-selector-submenu.js +88 -0
  22. package/src/components/common/item-selector/item-selector.d.ts +2 -1
  23. package/src/components/common/item-selector/item-selector.js +5 -2
  24. package/src/components/common/item-selector/typeahead.js +27 -21
  25. package/src/components/side-panel/layer-panel/layer-configurator.js +17 -1
  26. package/src/components/side-panel/layer-panel/vis-config-by-field-selector.js +5 -1
  27. package/src/constants/default-settings.js +51 -0
  28. package/src/constants/index.js +2 -1
  29. package/src/styles/base.js +4 -0
  30. package/umd/keplergl.min.js +25 -25
@@ -790,11 +790,13 @@ function ChannelByValueSelectorFactory(VisConfigByFieldSelector) {
790
790
  onChange = _ref13.onChange,
791
791
  onChangeVisConfig = _ref13.onChangeVisConfig,
792
792
  fields = _ref13.fields,
793
+ fieldsAggregated = _ref13.fieldsAggregated,
793
794
  description = _ref13.description,
794
795
  isLoading = _ref13.isLoading;
795
796
  var channelScaleType = channel.channelScaleType,
796
797
  domain = channel.domain,
797
798
  field = channel.field,
799
+ aggregation = channel.aggregation,
798
800
  key = channel.key,
799
801
  property = channel.property,
800
802
  range = channel.range,
@@ -811,11 +813,14 @@ function ChannelByValueSelectorFactory(VisConfigByFieldSelector) {
811
813
  var showScale = !showScaleCustomizable && !layer.isAggregated && layer.config[scale] && scaleOptions.length > 1;
812
814
  var defaultDescription = 'layerConfiguration.defaultDescription';
813
815
  var visRange = layer.config.visConfig[range];
816
+ var aggregator = layer.config.visConfig[aggregation];
814
817
  return /*#__PURE__*/_react["default"].createElement(VisConfigByFieldSelector, {
815
818
  channel: channel.key,
816
819
  description: description || defaultDescription,
817
820
  domain: layer.config[domain],
818
821
  fields: supportedFields,
822
+ aggregator: aggregator,
823
+ fieldsAggregated: fieldsAggregated,
819
824
  id: layer.id,
820
825
  key: "".concat(key, "-channel-selector"),
821
826
  property: property,
@@ -833,7 +838,9 @@ function ChannelByValueSelectorFactory(VisConfigByFieldSelector) {
833
838
  })));
834
839
  }
835
840
 
836
- onChange((0, _defineProperty2["default"])({}, field, val), key);
841
+ onChange(_objectSpread((0, _defineProperty2["default"])({}, field, val), fieldsAggregated && {
842
+ visConfig: _objectSpread(_objectSpread({}, layer.config.visConfig), {}, (0, _defineProperty2["default"])({}, aggregation, val === null || val === void 0 ? void 0 : val.selectedAggregator))
843
+ }), key);
837
844
  },
838
845
  updateScale: function updateScale(val) {
839
846
  return onChange((0, _defineProperty2["default"])({}, scale, val), key);
@@ -922,7 +929,7 @@ function AggrScaleSelectorFactory(ColorDimensionScaleSelector) {
922
929
  var AggregationTypeSelector = function AggregationTypeSelector(_ref15) {
923
930
  var layer = _ref15.layer,
924
931
  channel = _ref15.channel,
925
- _onChange7 = _ref15.onChange;
932
+ _onChange6 = _ref15.onChange;
926
933
  var field = channel.field,
927
934
  aggregation = channel.aggregation,
928
935
  key = channel.key;
@@ -941,7 +948,7 @@ var AggregationTypeSelector = function AggregationTypeSelector(_ref15) {
941
948
  multiSelect: false,
942
949
  searchable: false,
943
950
  onChange: function onChange(value) {
944
- return _onChange7({
951
+ return _onChange6({
945
952
  visConfig: _objectSpread(_objectSpread({}, layer.config.visConfig), {}, (0, _defineProperty2["default"])({}, aggregation, value))
946
953
  }, channel.key);
947
954
  }
@@ -951,4 +958,4 @@ var AggregationTypeSelector = function AggregationTypeSelector(_ref15) {
951
958
 
952
959
 
953
960
  exports.AggregationTypeSelector = AggregationTypeSelector;
954
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvbGF5ZXItY29uZmlndXJhdG9yLmpzIl0sIm5hbWVzIjpbIlN0eWxlZExheWVyQ29uZmlndXJhdG9yIiwic3R5bGVkIiwiZGl2IiwiYXR0cnMiLCJjbGFzc05hbWUiLCJwcm9wcyIsInRoZW1lIiwibGF5ZXJDb25maWd1cmF0b3JNYXJnaW4iLCJsYXllckNvbmZpZ3VyYXRvclBhZGRpbmciLCJsYXllckNvbmZpZ3VyYXRvckJvcmRlciIsImxheWVyQ29uZmlndXJhdG9yQm9yZGVyQ29sb3IiLCJTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvciIsImdldExheWVyRmllbGRzIiwiZGF0YXNldHMiLCJsYXllciIsImNvbmZpZyIsImRhdGFJZCIsImZpZWxkcyIsImdldExheWVyRGF0YXNldCIsImdldExheWVyQ29uZmlndXJhdG9yUHJvcHMiLCJvbkNoYW5nZSIsInVwZGF0ZUxheWVyQ29uZmlnIiwic2V0Q29sb3JVSSIsInVwZGF0ZUxheWVyQ29sb3JVSSIsImdldFZpc0NvbmZpZ3VyYXRvclByb3BzIiwidXBkYXRlTGF5ZXJWaXNDb25maWciLCJnZXRMYXllckNoYW5uZWxDb25maWdQcm9wcyIsInVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZyIsIm9uQ2hhbmdlVmlzQ29uZmlnIiwiTGF5ZXJDb25maWd1cmF0b3JGYWN0b3J5IiwiZGVwcyIsIlNvdXJjZURhdGFTZWxlY3RvckZhY3RvcnkiLCJWaXNDb25maWdTbGlkZXJGYWN0b3J5IiwiVGV4dExhYmVsUGFuZWxGYWN0b3J5IiwiTGF5ZXJDb25maWdHcm91cEZhY3RvcnkiLCJDaGFubmVsQnlWYWx1ZVNlbGVjdG9yRmFjdG9yeSIsIkxheWVyQ29sdW1uQ29uZmlnRmFjdG9yeSIsIkxheWVyVHlwZVNlbGVjdG9yRmFjdG9yeSIsIlZpc0NvbmZpZ1N3aXRjaEZhY3RvcnkiLCJBZ2dyU2NhbGVTZWxlY3RvckZhY3RvcnkiLCJMYXllclZpc2liaWxpdHlCeVpvb21GYWN0b3J5IiwiTGF5ZXJDb2xvclNlbGVjdG9yRmFjdG9yeSIsIkxheWVyQ29sb3JSYW5nZVNlbGVjdG9yRmFjdG9yeSIsIkFyY0xheWVyQ29sb3JTZWxlY3RvckZhY3RvcnkiLCJTb3VyY2VEYXRhU2VsZWN0b3IiLCJWaXNDb25maWdTbGlkZXIiLCJUZXh0TGFiZWxQYW5lbCIsIkxheWVyQ29uZmlnR3JvdXAiLCJDaGFubmVsQnlWYWx1ZVNlbGVjdG9yIiwiTGF5ZXJDb2x1bW5Db25maWciLCJMYXllclR5cGVTZWxlY3RvciIsIlZpc0NvbmZpZ1N3aXRjaCIsIkFnZ3JTY2FsZVNlbGVjdG9yIiwiTGF5ZXJWaXNpYmlsaXR5Qnlab29tIiwiTGF5ZXJDb2xvclNlbGVjdG9yIiwiTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3IiLCJBcmNMYXllckNvbG9yU2VsZWN0b3IiLCJMYXllckNvbmZpZ3VyYXRvciIsIl9yZW5kZXJTY2F0dGVycGxvdExheWVyQ29uZmlnIiwidmlzQ29uZmlndXJhdG9yUHJvcHMiLCJsYXllckNoYW5uZWxDb25maWdQcm9wcyIsImxheWVyQ29uZmlndXJhdG9yUHJvcHMiLCJ2aXNDb25maWdTZXR0aW5ncyIsImZpbGxlZCIsImxhYmVsIiwiY29sb3JGaWVsZCIsInZpc3VhbENoYW5uZWxzIiwiY29sb3IiLCJvcGFjaXR5IiwidHlwZSIsIkxBWUVSX1RZUEVTIiwicG9pbnQiLCJvdXRsaW5lIiwic3Ryb2tlQ29sb3JGaWVsZCIsInZpc0NvbmZpZyIsInN0cm9rZUNvbG9yIiwidGhpY2tuZXNzIiwic2l6ZUZpZWxkIiwicmFkaXVzIiwiQm9vbGVhbiIsInJhZGl1c1JhbmdlIiwiZml4ZWRSYWRpdXMiLCJzaXplIiwidXBkYXRlTGF5ZXJUZXh0TGFiZWwiLCJ0ZXh0TGFiZWwiLCJjb2xvclBhbGV0dGUiLCJzZXRDb2xvclBhbGV0dGVVSSIsImNvbG9yQWdncmVnYXRpb24iLCJjb25kaXRpb24iLCJjbHVzdGVyUmFkaXVzIiwid2VpZ2h0IiwiX3JlbmRlckFnZ3JlZ2F0aW9uTGF5ZXJDb25maWciLCJlbmFibGUzZCIsImVsZXZhdGlvbkJ5RGVzY3JpcHRpb24iLCJjb2xvckJ5RGVzY3JpcHRpb24iLCJwZXJjZW50aWxlIiwid29ybGRVbml0U2l6ZSIsImNvdmVyYWdlIiwiZWxldmF0aW9uU2NhbGUiLCJzaXplUmFuZ2UiLCJzaXplQWdncmVnYXRpb24iLCJlbGV2YXRpb25QZXJjZW50aWxlIiwiY292ZXJhZ2VGaWVsZCIsImNvdmVyYWdlUmFuZ2UiLCJhcmdzIiwiX3JlbmRlckxpbmVMYXllckNvbmZpZyIsInNvdXJjZUNvbG9yIiwibWV0YSIsImZlYXR1cmVUeXBlcyIsInBvbHlnb24iLCJzdHJva2VkIiwidHJhaWxMZW5ndGgiLCJzdHJva2VPcGFjaXR5IiwiaGVpZ2h0Iiwid2lyZWZyYW1lIiwicmFkaXVzRmllbGQiLCJlIiwidGFyZ2V0IiwiZmlsZXMiLCJ1cmwiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJzY2VuZWdyYXBoIiwic2l6ZVNjYWxlIiwiYW5nbGVYIiwiYW5nbGVZIiwiYW5nbGVaIiwiaGVpZ2h0UmFuZ2UiLCJsYXllclR5cGVPcHRpb25zIiwidXBkYXRlTGF5ZXJUeXBlIiwiZmllbGRQYWlycyIsInVuZGVmaW5lZCIsImRhdGFzZXQiLCJyZW5kZXJUZW1wbGF0ZSIsImxheWVySW5mb01vZGFsIiwib3Blbk1vZGFsIiwiT2JqZWN0Iiwia2V5cyIsImNvbHVtbnMiLCJsZW5ndGgiLCJoYXNBbGxDb2x1bW5zIiwiaWQiLCJ2YWx1ZSIsImNvbHVtblBhaXJzIiwiYXNzaWduQ29sdW1uUGFpcnMiLCJiaW5kIiwiYXNzaWduQ29sdW1uIiwiY29sdW1uTGFiZWxzIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsImFycmF5T2YiLCJhbnkiLCJmdW5jIiwiU3R5bGVkSG93VG9CdXR0b24iLCJIb3dUb0J1dHRvbiIsIm9uQ2xpY2siLCJDb2xvclNlbGVjdG9yRmFjdG9yeSIsIkNvbG9yU2VsZWN0b3IiLCJzZWxlY3RlZENvbG9yIiwicHJvcGVydHkiLCJzZXRDb2xvciIsInJnYlZhbHVlIiwiY29sb3JVSSIsIm5ld0NvbmZpZyIsIm9uQ2hhbmdlQ29uZmlnIiwidGFyZ2V0Q29sb3IiLCJpc1JhbmdlIiwiY29sb3JSYW5nZSIsImNvbG9yTWFwIiwiY29sb3JSYW5nZVVwZGF0ZWQiLCJ1cGRhdGVDb2xvck1hcCIsIlZpc0NvbmZpZ0J5RmllbGRTZWxlY3RvckZhY3RvcnkiLCJWaXNDb25maWdCeUZpZWxkU2VsZWN0b3IiLCJjaGFubmVsIiwiZGVzY3JpcHRpb24iLCJpc0xvYWRpbmciLCJjaGFubmVsU2NhbGVUeXBlIiwiZG9tYWluIiwiZmllbGQiLCJrZXkiLCJyYW5nZSIsInNjYWxlIiwiZGVmYXVsdE1lYXN1cmUiLCJzdXBwb3J0ZWRGaWVsZFR5cGVzIiwiY2hhbm5lbFN1cHBvcnRlZEZpZWxkVHlwZXMiLCJDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFMiLCJzdXBwb3J0ZWRGaWVsZHMiLCJmaWx0ZXIiLCJpbmNsdWRlcyIsInNjYWxlT3B0aW9ucyIsImdldFNjYWxlT3B0aW9ucyIsInNob3dTY2FsZUN1c3RvbWl6YWJsZSIsIkNIQU5ORUxfU0NBTEVTIiwic2hvd1NjYWxlIiwiaXNBZ2dyZWdhdGVkIiwiZGVmYXVsdERlc2NyaXB0aW9uIiwidmlzUmFuZ2UiLCJ2YWwiLCJDb2xvckRpbWVuc2lvblNjYWxlU2VsZWN0b3JGYWN0b3J5IiwiQ29sb3JEaW1lbnNpb25TY2FsZVNlbGVjdG9yIiwiY29sb3JBZ2dyIiwiQXJyYXkiLCJpc0FycmF5IiwiQWdncmVnYXRpb25UeXBlU2VsZWN0b3IiLCJhZ2dyZWdhdGlvbiIsInNlbGVjdGVkRmllbGQiLCJhZ2dyZWdhdGlvbk9wdGlvbnMiLCJnZXRBZ2dyZWdhdGlvbk9wdGlvbnMiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7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QkFBRDtBQUNFLElBQUEsYUFBYSxFQUFFeEksU0FBUyxDQUFDb0ksV0FBRCxDQUQxQjtBQUVFLElBQUEsT0FBTyxFQUFFRSxrQkFGWDtBQUdFLElBQUEsV0FBVyxFQUFFLEtBSGY7QUFJRSxJQUFBLFVBQVUsRUFBRSxLQUpkO0FBS0UsSUFBQSxRQUFRLEVBQUUsa0JBQUFsRSxLQUFLO0FBQUEsYUFDYjFILFVBQVEsQ0FDTjtBQUNFc0QsUUFBQUEsU0FBUyxrQ0FDSjVELEtBQUssQ0FBQ0MsTUFBTixDQUFhMkQsU0FEVCw0Q0FFTm9JLFdBRk0sRUFFUWhFLEtBRlI7QUFEWCxPQURNLEVBT05pQyxPQUFPLENBQUNNLEdBUEYsQ0FESztBQUFBO0FBTGpCLElBSkYsQ0FERjtBQXdCRCxDQWhDTTtBQWlDUCIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbi8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgRnJhZ21lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7Rm9ybWF0dGVkTWVzc2FnZX0gZnJvbSAnbG9jYWxpemF0aW9uJztcblxuaW1wb3J0IHtCdXR0b24sIElucHV0LCBQYW5lbExhYmVsLCBTaWRlUGFuZWxTZWN0aW9ufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgSXRlbVNlbGVjdG9yIGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2l0ZW0tc2VsZWN0b3IvaXRlbS1zZWxlY3Rvcic7XG5cbmltcG9ydCBWaXNDb25maWdCeUZpZWxkU2VsZWN0b3JGYWN0b3J5IGZyb20gJy4vdmlzLWNvbmZpZy1ieS1maWVsZC1zZWxlY3Rvcic7XG5pbXBvcnQgTGF5ZXJDb2x1bW5Db25maWdGYWN0b3J5IGZyb20gJy4vbGF5ZXItY29sdW1uLWNvbmZpZyc7XG5pbXBvcnQgTGF5ZXJUeXBlU2VsZWN0b3JGYWN0b3J5IGZyb20gJy4vbGF5ZXItdHlwZS1zZWxlY3Rvcic7XG5pbXBvcnQgTGF5ZXJWaXNpYmlsaXR5Qnlab29tRmFjdG9yeSBmcm9tICcuL2xheWVyLXZpc2liaWxpdHktYnktem9vbSc7XG5pbXBvcnQgRGltZW5zaW9uU2NhbGVTZWxlY3RvciBmcm9tICcuL2RpbWVuc2lvbi1zY2FsZS1zZWxlY3Rvcic7XG5pbXBvcnQgU291cmNlRGF0YVNlbGVjdG9yRmFjdG9yeSBmcm9tICdjb21wb25lbnRzL3NpZGUtcGFuZWwvY29tbW9uL3NvdXJjZS1kYXRhLXNlbGVjdG9yJztcbmltcG9ydCBWaXNDb25maWdTd2l0Y2hGYWN0b3J5IGZyb20gJy4vdmlzLWNvbmZpZy1zd2l0Y2gnO1xuaW1wb3J0IFZpc0NvbmZpZ1NsaWRlckZhY3RvcnkgZnJvbSAnLi92aXMtY29uZmlnLXNsaWRlcic7XG5pbXBvcnQgTGF5ZXJDb25maWdHcm91cEZhY3RvcnksIHtDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudH0gZnJvbSAnLi9sYXllci1jb25maWctZ3JvdXAnO1xuaW1wb3J0IFRleHRMYWJlbFBhbmVsRmFjdG9yeSBmcm9tICcuL3RleHQtbGFiZWwtcGFuZWwnO1xuXG5pbXBvcnQge2NhcGl0YWxpemVGaXJzdExldHRlcn0gZnJvbSAndXRpbHMvdXRpbHMnO1xuXG5pbXBvcnQge0NIQU5ORUxfU0NBTEVTLCBDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFN9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCB7TEFZRVJfVFlQRVN9IGZyb20gJ2xheWVycy90eXBlcyc7XG5pbXBvcnQge2luamVjdEludGx9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IENvbG9yRGltZW5zaW9uU2NhbGVTZWxlY3RvckZhY3RvcnkgZnJvbSAnLi9jb2xvci1kaW1lbnNpb24tc2NhbGUtc2VsZWN0b3InO1xuaW1wb3J0IENvbG9yU2VsZWN0b3JGYWN0b3J5IGZyb20gJy4vY29sb3Itc2VsZWN0b3InO1xuXG5jb25zdCBTdHlsZWRMYXllckNvbmZpZ3VyYXRvciA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdsYXllci1wYW5lbF9fY29uZmlnJ1xufSlgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLXRvcDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ3VyYXRvck1hcmdpbn07XG4gIHBhZGRpbmc6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGF5ZXJDb25maWd1cmF0b3JQYWRkaW5nfTtcbiAgYm9yZGVyLWxlZnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGF5ZXJDb25maWd1cmF0b3JCb3JkZXJ9IGRhc2hlZFxuICAgICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGF5ZXJDb25maWd1cmF0b3JCb3JkZXJDb2xvcn07XG5gO1xuXG5jb25zdCBTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvciA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdsYXllci1wYW5lbF9fY29uZmlnX192aXN1YWxDLWNvbmZpZydcbn0pYFxuICBtYXJnaW4tdG9wOiAxMnB4O1xuYDtcblxuZXhwb3J0IGNvbnN0IGdldExheWVyRmllbGRzID0gKGRhdGFzZXRzLCBsYXllcikgPT5cbiAgbGF5ZXIuY29uZmlnICYmIGRhdGFzZXRzW2xheWVyLmNvbmZpZy5kYXRhSWRdID8gZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF0uZmllbGRzIDogW107XG5cbmV4cG9ydCBjb25zdCBnZXRMYXllckRhdGFzZXQgPSAoZGF0YXNldHMsIGxheWVyKSA9PlxuICBsYXllci5jb25maWcgJiYgZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF0gPyBkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXSA6IG51bGw7XG5cbmV4cG9ydCBjb25zdCBnZXRMYXllckNvbmZpZ3VyYXRvclByb3BzID0gcHJvcHMgPT4gKHtcbiAgbGF5ZXI6IHByb3BzLmxheWVyLFxuICBmaWVsZHM6IGdldExheWVyRmllbGRzKHByb3BzLmRhdGFzZXRzLCBwcm9wcy5sYXllciksXG4gIG9uQ2hhbmdlOiBwcm9wcy51cGRhdGVMYXllckNvbmZpZyxcbiAgc2V0Q29sb3JVSTogcHJvcHMudXBkYXRlTGF5ZXJDb2xvclVJXG59KTtcblxuZXhwb3J0IGNvbnN0IGdldFZpc0NvbmZpZ3VyYXRvclByb3BzID0gcHJvcHMgPT4gKHtcbiAgbGF5ZXI6IHByb3BzLmxheWVyLFxuICBmaWVsZHM6IGdldExheWVyRmllbGRzKHByb3BzLmRhdGFzZXRzLCBwcm9wcy5sYXllciksXG4gIG9uQ2hhbmdlOiBwcm9wcy51cGRhdGVMYXllclZpc0NvbmZpZyxcbiAgc2V0Q29sb3JVSTogcHJvcHMudXBkYXRlTGF5ZXJDb2xvclVJXG59KTtcblxuZXhwb3J0IGNvbnN0IGdldExheWVyQ2hhbm5lbENvbmZpZ1Byb3BzID0gcHJvcHMgPT4gKHtcbiAgbGF5ZXI6IHByb3BzLmxheWVyLFxuICBmaWVsZHM6IGdldExheWVyRmllbGRzKHByb3BzLmRhdGFzZXRzLCBwcm9wcy5sYXllciksXG4gIG9uQ2hhbmdlOiBwcm9wcy51cGRhdGVMYXllclZpc3VhbENoYW5uZWxDb25maWcsXG4gIG9uQ2hhbmdlVmlzQ29uZmlnOiBwcm9wcy51cGRhdGVMYXllclZpc0NvbmZpZ1xufSk7XG5cbkxheWVyQ29uZmlndXJhdG9yRmFjdG9yeS5kZXBzID0gW1xuICBTb3VyY2VEYXRhU2VsZWN0b3JGYWN0b3J5LFxuICBWaXNDb25maWdTbGlkZXJGYWN0b3J5LFxuICBUZXh0TGFiZWxQYW5lbEZhY3RvcnksXG4gIExheWVyQ29uZmlnR3JvdXBGYWN0b3J5LFxuICBDaGFubmVsQnlWYWx1ZVNlbGVjdG9yRmFjdG9yeSxcbiAgTGF5ZXJDb2x1bW5Db25maWdGYWN0b3J5LFxuICBMYXllclR5cGVTZWxlY3RvckZhY3RvcnksXG4gIFZpc0NvbmZpZ1N3aXRjaEZhY3RvcnksXG4gIEFnZ3JTY2FsZVNlbGVjdG9yRmFjdG9yeSxcbiAgTGF5ZXJWaXNpYmlsaXR5Qnlab29tRmFjdG9yeSxcbiAgTGF5ZXJDb2xvclNlbGVjdG9yRmFjdG9yeSxcbiAgTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3JGYWN0b3J5LFxuICBBcmNMYXllckNvbG9yU2VsZWN0b3JGYWN0b3J5XG5dO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMYXllckNvbmZpZ3VyYXRvckZhY3RvcnkoXG4gIFNvdXJjZURhdGFTZWxlY3RvcixcbiAgVmlzQ29uZmlnU2xpZGVyLFxuICBUZXh0TGFiZWxQYW5lbCxcbiAgTGF5ZXJDb25maWdHcm91cCxcbiAgQ2hhbm5lbEJ5VmFsdWVTZWxlY3RvcixcbiAgTGF5ZXJDb2x1bW5Db25maWcsXG4gIExheWVyVHlwZVNlbGVjdG9yLFxuICBWaXNDb25maWdTd2l0Y2gsXG4gIEFnZ3JTY2FsZVNlbGVjdG9yLFxuICBMYXllclZpc2liaWxpdHlCeVpvb20sXG4gIExheWVyQ29sb3JTZWxlY3RvcixcbiAgTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3IsXG4gIEFyY0xheWVyQ29sb3JTZWxlY3RvclxuKSB7XG4gIGNsYXNzIExheWVyQ29uZmlndXJhdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgbGF5ZXI6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIGRhdGFzZXRzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBsYXllclR5cGVPcHRpb25zOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuICAgICAgb3Blbk1vZGFsOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgdXBkYXRlTGF5ZXJDb25maWc6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICB1cGRhdGVMYXllclR5cGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICB1cGRhdGVMYXllclZpc0NvbmZpZzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIHVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIHVwZGF0ZUxheWVyQ29sb3JVSTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxuICAgIH07XG5cbiAgICBfcmVuZGVyUG9pbnRMYXllckNvbmZpZyhwcm9wcykge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlclNjYXR0ZXJwbG90TGF5ZXJDb25maWcocHJvcHMpO1xuICAgIH1cblxuICAgIF9yZW5kZXJJY29uTGF5ZXJDb25maWcocHJvcHMpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZW5kZXJTY2F0dGVycGxvdExheWVyQ29uZmlnKHByb3BzKTtcbiAgICB9XG5cbiAgICBfcmVuZGVyU2NhdHRlcnBsb3RMYXllckNvbmZpZyh7XG4gICAgICBsYXllcixcbiAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDaGFubmVsQ29uZmlnUHJvcHMsXG4gICAgICBsYXllckNvbmZpZ3VyYXRvclByb3BzXG4gICAgfSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgICAgIHsvKiBGaWxsIENvbG9yICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICB7Li4uKGxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmZpbGxlZCB8fCB7bGFiZWw6ICdsYXllci5jb2xvcid9KX1cbiAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgPlxuICAgICAgICAgICAge2xheWVyLmNvbmZpZy5jb2xvckZpZWxkID8gKFxuICAgICAgICAgICAgICA8TGF5ZXJDb2xvclJhbmdlU2VsZWN0b3Igey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JTZWxlY3RvciB7Li4ubGF5ZXJDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5vcGFjaXR5fSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICAgIHsvKiBvdXRsaW5lIGNvbG9yICovfVxuICAgICAgICAgIHtsYXllci50eXBlID09PSBMQVlFUl9UWVBFUy5wb2ludCA/IChcbiAgICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5vdXRsaW5lfVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtsYXllci5jb25maWcuc3Ryb2tlQ29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgICAgICA8TGF5ZXJDb2xvclJhbmdlU2VsZWN0b3Igey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSBwcm9wZXJ0eT1cInN0cm9rZUNvbG9yUmFuZ2VcIiAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxMYXllckNvbG9yU2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3I9e2xheWVyLmNvbmZpZy52aXNDb25maWcuc3Ryb2tlQ29sb3J9XG4gICAgICAgICAgICAgICAgICBwcm9wZXJ0eT1cInN0cm9rZUNvbG9yXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnN0cm9rZUNvbG9yfVxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnRoaWNrbmVzc31cbiAgICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshbGF5ZXIuY29uZmlnLnZpc0NvbmZpZy5vdXRsaW5lfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICB7LyogUmFkaXVzICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIGxhYmVsPXsnbGF5ZXIucmFkaXVzJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICB7IWxheWVyLmNvbmZpZy5zaXplRmllbGQgPyAoXG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MucmFkaXVzfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e0Jvb2xlYW4obGF5ZXIuY29uZmlnLnNpemVGaWVsZCl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnJhZGl1c1JhbmdlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFsYXllci5jb25maWcuc2l6ZUZpZWxkIHx8IGxheWVyLmNvbmZpZy52aXNDb25maWcuZml4ZWRSYWRpdXN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnNpemV9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB7bGF5ZXIuY29uZmlnLnNpemVGaWVsZCA/IChcbiAgICAgICAgICAgICAgICA8VmlzQ29uZmlnU3dpdGNoXG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZml4ZWRSYWRpdXN9XG4gICAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICAgIHsvKiB0ZXh0IGxhYmVsICovfVxuICAgICAgICAgIDxUZXh0TGFiZWxQYW5lbFxuICAgICAgICAgICAgZmllbGRzPXt2aXNDb25maWd1cmF0b3JQcm9wcy5maWVsZHN9XG4gICAgICAgICAgICB1cGRhdGVMYXllclRleHRMYWJlbD17dGhpcy5wcm9wcy51cGRhdGVMYXllclRleHRMYWJlbH1cbiAgICAgICAgICAgIHRleHRMYWJlbD17bGF5ZXIuY29uZmlnLnRleHRMYWJlbH1cbiAgICAgICAgICAgIGNvbG9yUGFsZXR0ZT17dmlzQ29uZmlndXJhdG9yUHJvcHMuY29sb3JQYWxldHRlfVxuICAgICAgICAgICAgc2V0Q29sb3JQYWxldHRlVUk9e3Zpc0NvbmZpZ3VyYXRvclByb3BzLnNldENvbG9yUGFsZXR0ZVVJfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICApO1xuICAgIH1cblxuICAgIF9yZW5kZXJDbHVzdGVyTGF5ZXJDb25maWcoe1xuICAgICAgbGF5ZXIsXG4gICAgICB2aXNDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNoYW5uZWxDb25maWdQcm9wc1xuICAgIH0pIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICAgICB7LyogQ29sb3IgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYXllci5jb2xvcid9IGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPEFnZ3JTY2FsZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY29sb3J9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2VWaXNDb25maWc9e2xheWVyQ2hhbm5lbENvbmZpZ1Byb3BzLm9uQ2hhbmdlVmlzQ29uZmlnfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmNvbG9yfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAge2xheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmNvbG9yQWdncmVnYXRpb24uY29uZGl0aW9uKGxheWVyLmNvbmZpZykgPyAoXG4gICAgICAgICAgICAgICAgPEFnZ3JlZ2F0aW9uVHlwZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuY29sb3JBZ2dyZWdhdGlvbn1cbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmNvbG9yfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5vcGFjaXR5fSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICAgIHsvKiBDbHVzdGVyIFJhZGl1cyAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLnJhZGl1cyd9IGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlciB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuY2x1c3RlclJhZGl1c30gey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5yYWRpdXNSYW5nZX0gey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgIDwvU3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICApO1xuICAgIH1cblxuICAgIF9yZW5kZXJIZWF0bWFwTGF5ZXJDb25maWcoe1xuICAgICAgbGF5ZXIsXG4gICAgICB2aXNDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNoYW5uZWxDb25maWdQcm9wc1xuICAgIH0pIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICAgICB7LyogQ29sb3IgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYXllci5jb2xvcid9IGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlciB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Mub3BhY2l0eX0gey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICAgey8qIFJhZGl1cyAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLnJhZGl1cyd9PlxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MucmFkaXVzfVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgICAgIHsvKiBXZWlnaHQgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYXllci53ZWlnaHQnfT5cbiAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLndlaWdodH1cbiAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgIDwvU3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICApO1xuICAgIH1cblxuICAgIF9yZW5kZXJHcmlkTGF5ZXJDb25maWcocHJvcHMpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZW5kZXJBZ2dyZWdhdGlvbkxheWVyQ29uZmlnKHByb3BzKTtcbiAgICB9XG5cbiAgICBfcmVuZGVySGV4YWdvbkxheWVyQ29uZmlnKHByb3BzKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVuZGVyQWdncmVnYXRpb25MYXllckNvbmZpZyhwcm9wcyk7XG4gICAgfVxuXG4gICAgX3JlbmRlckFnZ3JlZ2F0aW9uTGF5ZXJDb25maWcoe1xuICAgICAgbGF5ZXIsXG4gICAgICB2aXNDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNoYW5uZWxDb25maWdQcm9wc1xuICAgIH0pIHtcbiAgICAgIGNvbnN0IHtjb25maWd9ID0gbGF5ZXI7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHZpc0NvbmZpZzoge2VuYWJsZTNkfVxuICAgICAgfSA9IGNvbmZpZztcbiAgICAgIGNvbnN0IGVsZXZhdGlvbkJ5RGVzY3JpcHRpb24gPSAnbGF5ZXIuZWxldmF0aW9uQnlEZXNjcmlwdGlvbic7XG4gICAgICBjb25zdCBjb2xvckJ5RGVzY3JpcHRpb24gPSAnbGF5ZXIuY29sb3JCeURlc2NyaXB0aW9uJztcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgICAgIHsvKiBDb2xvciAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLmNvbG9yJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICA8TGF5ZXJDb2xvclJhbmdlU2VsZWN0b3Igey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8QWdnclNjYWxlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5jb2xvcn1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZVZpc0NvbmZpZz17bGF5ZXJDaGFubmVsQ29uZmlnUHJvcHMub25DaGFuZ2VWaXNDb25maWd9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB7bGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuY29sb3JBZ2dyZWdhdGlvbi5jb25kaXRpb24obGF5ZXIuY29uZmlnKSA/IChcbiAgICAgICAgICAgICAgICA8QWdncmVnYXRpb25UeXBlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5jb2xvckFnZ3JlZ2F0aW9ufVxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249e2NvbG9yQnlEZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmNvbG9yfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICB7bGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MucGVyY2VudGlsZSAmJlxuICAgICAgICAgICAgICBsYXllci52aXNDb25maWdTZXR0aW5ncy5wZXJjZW50aWxlLmNvbmRpdGlvbihsYXllci5jb25maWcpID8gKFxuICAgICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5wZXJjZW50aWxlfVxuICAgICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5vcGFjaXR5fSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICAgIHsvKiBDZWxsIHNpemUgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYXllci5yYWRpdXMnfSBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXIgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLndvcmxkVW5pdFNpemV9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlciB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuY292ZXJhZ2V9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIEVsZXZhdGlvbiAqL31cbiAgICAgICAgICB7bGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZW5hYmxlM2QgPyAoXG4gICAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZW5hYmxlM2R9XG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5lbGV2YXRpb25TY2FsZX1cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9XCJsYXllclZpc0NvbmZpZ3MuaGVpZ2h0TXVsdGlwbGllclwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuc2l6ZX1cbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXtlbGV2YXRpb25CeURlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFlbmFibGUzZH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxBZ2dyU2NhbGVTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zaXplfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2VWaXNDb25maWc9e2xheWVyQ2hhbm5lbENvbmZpZ1Byb3BzLm9uQ2hhbmdlVmlzQ29uZmlnfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnNpemVSYW5nZX1cbiAgICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICAgIGxhYmVsPVwibGF5ZXJWaXNDb25maWdzLmhlaWdodFJhbmdlXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIHtsYXllci52aXNDb25maWdTZXR0aW5ncy5zaXplQWdncmVnYXRpb24uY29uZGl0aW9uKGxheWVyLmNvbmZpZykgPyAoXG4gICAgICAgICAgICAgICAgICA8QWdncmVnYXRpb25UeXBlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnNpemVBZ2dyZWdhdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zaXplfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICB7bGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZWxldmF0aW9uUGVyY2VudGlsZS5jb25kaXRpb24obGF5ZXIuY29uZmlnKSA/IChcbiAgICAgICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmVsZXZhdGlvblBlcmNlbnRpbGV9XG4gICAgICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvU3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFRPRE86IFNoYW4gbW92ZSB0aGVzZSBpbnRvIGxheWVyIGNsYXNzXG4gICAgX3JlbmRlckhleGFnb25JZExheWVyQ29uZmlnKHtcbiAgICAgIGxheWVyLFxuICAgICAgdmlzQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDaGFubmVsQ29uZmlnUHJvcHNcbiAgICB9KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICAgICAgey8qIENvbG9yICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIGxhYmVsPXsnbGF5ZXIuY29sb3InfSBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuY29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yU2VsZWN0b3Igey4uLmxheWVyQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmNvbG9yfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlciB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Mub3BhY2l0eX0gey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogQ292ZXJhZ2UgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYXllci5jb3ZlcmFnZSd9IGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAgeyFsYXllci5jb25maWcuY292ZXJhZ2VGaWVsZCA/IChcbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5jb3ZlcmFnZX1cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5jb3ZlcmFnZVJhbmdlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmNvdmVyYWdlfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIGhlaWdodCAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmVuYWJsZTNkfVxuICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zaXplfVxuICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmVsZXZhdGlvblNjYWxlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5zaXplUmFuZ2V9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGxhYmVsPVwibGF5ZXJWaXNDb25maWdzLmhlaWdodFJhbmdlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgICA8L1N0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBfcmVuZGVyQXJjTGF5ZXJDb25maWcoYXJncykge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlckxpbmVMYXllckNvbmZpZyhhcmdzKTtcbiAgICB9XG5cbiAgICBfcmVuZGVyTGluZUxheWVyQ29uZmlnKHtcbiAgICAgIGxheWVyLFxuICAgICAgdmlzQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDaGFubmVsQ29uZmlnUHJvcHNcbiAgICB9KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICAgICAgey8qIENvbG9yICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIGxhYmVsPXsnbGF5ZXIuY29sb3InfSBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuY29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxBcmNMYXllckNvbG9yU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBsYXllcj17bGF5ZXJ9XG4gICAgICAgICAgICAgICAgc2V0Q29sb3JVST17bGF5ZXJDb25maWd1cmF0b3JQcm9wcy5zZXRDb2xvclVJfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlQ29uZmlnPXtsYXllckNvbmZpZ3VyYXRvclByb3BzLm9uQ2hhbmdlfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlVmlzQ29uZmlnPXt2aXNDb25maWd1cmF0b3JQcm9wcy5vbkNoYW5nZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuc291cmNlQ29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5vcGFjaXR5fSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICAgIHsvKiB0aGlja25lc3MgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYXllci5zdHJva2UnfSBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuc2l6ZUZpZWxkID8gKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnNpemVSYW5nZX1cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFsYXllci5jb25maWcuc2l6ZUZpZWxkfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MudGhpY2tuZXNzfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnNpemV9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogZWxldmF0aW9uIHNjYWxlICovfVxuICAgICAgICAgIHtsYXllci52aXNDb25maWdTZXR0aW5ncy5lbGV2YXRpb25TY2FsZSA/IChcbiAgICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIGxhYmVsPVwibGF5ZXJWaXNDb25maWdzLmVsZXZhdGlvblNjYWxlXCIgY29sbGFwc2libGU+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZWxldmF0aW9uU2NhbGV9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L1N0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBfcmVuZGVyVHJpcExheWVyQ29uZmlnKHtcbiAgICAgIGxheWVyLFxuICAgICAgdmlzQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDaGFubmVsQ29uZmlnUHJvcHNcbiAgICB9KSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1ldGE6IHtmZWF0dXJlVHlwZXMgPSB7fX1cbiAgICAgIH0gPSBsYXllcjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgICAgIHsvKiBDb2xvciAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLmNvbG9yJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICB7bGF5ZXIuY29uZmlnLmNvbG9yRmllbGQgPyAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yUmFuZ2VTZWxlY3RvciB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TGF5ZXJDb2xvclNlbGVjdG9yIHsuLi5sYXllckNvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5jb2xvcn1cbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXIgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLm9wYWNpdHl9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIFN0cm9rZSBXaWR0aCAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IGxhYmVsPVwibGF5ZXIuc3Ryb2tlV2lkdGhcIiBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuc2l6ZUZpZWxkID8gKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnNpemVSYW5nZX1cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy50aGlja25lc3N9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zaXplfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIFRyYWlsIExlbmd0aCovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICB7Li4uKGZlYXR1cmVUeXBlcy5wb2x5Z29uID8gbGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc3Ryb2tlZCA6IHt9KX1cbiAgICAgICAgICAgIGxhYmVsPVwibGF5ZXIudHJhaWxMZW5ndGhcIlxuICAgICAgICAgICAgZGVzY3JpcHRpb249XCJsYXllci50cmFpbExlbmd0aERlc2NyaXB0aW9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy50cmFpbExlbmd0aH1cbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgPC9TdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgX3JlbmRlckdlb2pzb25MYXllckNvbmZpZyh7XG4gICAgICBsYXllcixcbiAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzXG4gICAgfSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBtZXRhOiB7ZmVhdHVyZVR5cGVzID0ge319LFxuICAgICAgICBjb25maWc6IHt2aXNDb25maWd9XG4gICAgICB9ID0gbGF5ZXI7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICAgICB7LyogRmlsbCBDb2xvciAqL31cbiAgICAgICAgICB7ZmVhdHVyZVR5cGVzLnBvbHlnb24gfHwgZmVhdHVyZVR5cGVzLnBvaW50ID8gKFxuICAgICAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmZpbGxlZH1cbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICBsYWJlbD1cImxheWVyLmZpbGxDb2xvclwiXG4gICAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtsYXllci5jb25maWcuY29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgICAgICA8TGF5ZXJDb2xvclJhbmdlU2VsZWN0b3Igey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxMYXllckNvbG9yU2VsZWN0b3Igey4uLmxheWVyQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY29sb3J9XG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5vcGFjaXR5fSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICB7Lyogc3Ryb2tlIGNvbG9yICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc3Ryb2tlZH1cbiAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgIGxhYmVsPVwibGF5ZXIuc3Ryb2tlQ29sb3JcIlxuICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bGF5ZXIuY29uZmlnLnN0cm9rZUNvbG9yRmllbGQgPyAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yUmFuZ2VTZWxlY3RvciB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IHByb3BlcnR5PVwic3Ryb2tlQ29sb3JSYW5nZVwiIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TGF5ZXJDb2xvclNlbGVjdG9yXG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3I9e2xheWVyLmNvbmZpZy52aXNDb25maWcuc3Ryb2tlQ29sb3J9XG4gICAgICAgICAgICAgICAgcHJvcGVydHk9XCJzdHJva2VDb2xvclwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnN0cm9rZUNvbG9yfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5zdHJva2VPcGFjaXR5fVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIFN0cm9rZSBXaWR0aCAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgey4uLihmZWF0dXJlVHlwZXMucG9seWdvbiA/IGxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnN0cm9rZWQgOiB7fSl9XG4gICAgICAgICAgICBsYWJlbD1cImxheWVyLnN0cm9rZVdpZHRoXCJcbiAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgPlxuICAgICAgICAgICAge2xheWVyLmNvbmZpZy5zaXplRmllbGQgPyAoXG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2l6ZVJhbmdlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnRoaWNrbmVzc31cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zaXplfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIEVsZXZhdGlvbiAqL31cbiAgICAgICAgICB7ZmVhdHVyZVR5cGVzLnBvbHlnb24gPyAoXG4gICAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5lbmFibGUzZH1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF2aXNDb25maWcuZmlsbGVkfVxuICAgICAgICAgICAgICBjb2xsYXBzaWJsZVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmVsZXZhdGlvblNjYWxlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuaGVpZ2h0fVxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFZpc0NvbmZpZ1N3aXRjaCB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy53aXJlZnJhbWV9IC8+XG4gICAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICB7LyogUmFkaXVzICovfVxuICAgICAgICAgIHtmZWF0dXJlVHlwZXMucG9pbnQgPyAoXG4gICAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLnJhZGl1cyd9IGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAgICB7IWxheWVyLmNvbmZpZy5yYWRpdXNGaWVsZCA/IChcbiAgICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MucmFkaXVzfVxuICAgICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e0Jvb2xlYW4obGF5ZXIuY29uZmlnLnJhZGl1c0ZpZWxkKX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5yYWRpdXNSYW5nZX1cbiAgICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshbGF5ZXIuY29uZmlnLnJhZGl1c0ZpZWxkfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMucmFkaXVzfVxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvU3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICApO1xuICAgIH1cblxuICAgIF9yZW5kZXIzRExheWVyQ29uZmlnKHtsYXllciwgdmlzQ29uZmlndXJhdG9yUHJvcHN9KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYXllci4zRE1vZGVsJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICBhY2NlcHQ9XCIuZ2xiLC5nbHRmXCJcbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2UgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC5maWxlcyAmJiBlLnRhcmdldC5maWxlc1swXSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChlLnRhcmdldC5maWxlc1swXSk7XG4gICAgICAgICAgICAgICAgICB2aXNDb25maWd1cmF0b3JQcm9wcy5vbkNoYW5nZSh7c2NlbmVncmFwaDogdXJsfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYXllci4zRE1vZGVsT3B0aW9ucyd9IGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2l6ZVNjYWxlfVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5hbmdsZVh9XG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmFuZ2xlWX1cbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuYW5nbGVafVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBfcmVuZGVyUzJMYXllckNvbmZpZyh7XG4gICAgICBsYXllcixcbiAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzXG4gICAgfSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBjb25maWc6IHt2aXNDb25maWd9XG4gICAgICB9ID0gbGF5ZXI7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICAgICB7LyogQ29sb3IgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5maWxsZWR9XG4gICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICBsYWJlbD1cImxheWVyLmZpbGxDb2xvclwiXG4gICAgICAgICAgICBjb2xsYXBzaWJsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuY29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yU2VsZWN0b3Igey4uLmxheWVyQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmNvbG9yfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlciB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Mub3BhY2l0eX0gey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogU3Ryb2tlICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc3Ryb2tlZH1cbiAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgIGxhYmVsPVwibGF5ZXIuc3Ryb2tlQ29sb3JcIlxuICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bGF5ZXIuY29uZmlnLnN0cm9rZUNvbG9yRmllbGQgPyAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yUmFuZ2VTZWxlY3RvciB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IHByb3BlcnR5PVwic3Ryb2tlQ29sb3JSYW5nZVwiIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TGF5ZXJDb2xvclNlbGVjdG9yXG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3I9e2xheWVyLmNvbmZpZy52aXNDb25maWcuc3Ryb2tlQ29sb3J9XG4gICAgICAgICAgICAgICAgcHJvcGVydHk9XCJzdHJva2VDb2xvclwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnN0cm9rZUNvbG9yfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIFN0cm9rZSBXaWR0aCAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IGxhYmVsPVwibGF5ZXIuc3Ryb2tlV2lkdGhcIiBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuc2l6ZUZpZWxkID8gKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnNpemVSYW5nZX1cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy50aGlja25lc3N9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuc2l6ZX1cbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICAgIHsvKiBFbGV2YXRpb24gKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5lbmFibGUzZH1cbiAgICAgICAgICAgIGRpc2FibGVkPXshdmlzQ29uZmlnLmZpbGxlZH1cbiAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuaGVpZ2h0fVxuICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZWxldmF0aW9uU2NhbGV9XG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgbGFiZWw9XCJsYXllclZpc0NvbmZpZ3MuZWxldmF0aW9uU2NhbGVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5oZWlnaHRSYW5nZX1cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9XCJsYXllclZpc0NvbmZpZ3MuaGVpZ2h0UmFuZ2VcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU3dpdGNoIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLndpcmVmcmFtZX0gLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgICA8L1N0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7bGF5ZXIsIGRhdGFzZXRzLCB1cGRhdGVMYXllckNvbmZpZywgbGF5ZXJUeXBlT3B0aW9ucywgdXBkYXRlTGF5ZXJUeXBlfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCB7ZmllbGRzID0gW10sIGZpZWxkUGFpcnMgPSB1bmRlZmluZWR9ID0gbGF5ZXIuY29uZmlnLmRhdGFJZFxuICAgICAgICA/IGRhdGFzZXRzW2xheWVyLmNvbmZpZy5kYXRhSWRdXG4gICAgICAgIDoge307XG4gICAgICBjb25zdCB7Y29uZmlnfSA9IGxheWVyO1xuXG4gICAgICBjb25zdCB2aXNDb25maWd1cmF0b3JQcm9wcyA9IGdldFZpc0NvbmZpZ3VyYXRvclByb3BzKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgbGF5ZXJDb25maWd1cmF0b3JQcm9wcyA9IGdldExheWVyQ29uZmlndXJhdG9yUHJvcHModGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBsYXllckNoYW5uZWxDb25maWdQcm9wcyA9IGdldExheWVyQ2hhbm5lbENvbmZpZ1Byb3BzKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgZGF0YXNldCA9IGdldExheWVyRGF0YXNldChkYXRhc2V0cywgbGF5ZXIpO1xuICAgICAgY29uc3QgcmVuZGVyVGVtcGxhdGUgPSBsYXllci50eXBlICYmIGBfcmVuZGVyJHtjYXBpdGFsaXplRmlyc3RMZXR0ZXIobGF5ZXIudHlwZSl9TGF5ZXJDb25maWdgO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkTGF5ZXJDb25maWd1cmF0b3I+XG4gICAgICAgICAge2xheWVyLmxheWVySW5mb01vZGFsID8gKFxuICAgICAgICAgICAgPEhvd1RvQnV0dG9uIG9uQ2xpY2s9eygpID0+IHRoaXMucHJvcHMub3Blbk1vZGFsKGxheWVyLmxheWVySW5mb01vZGFsKX0gLz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgbGFiZWw9eydsYXllci5iYXNpYyd9XG4gICAgICAgICAgICBjb2xsYXBzaWJsZT17T2JqZWN0LmtleXMobGF5ZXIuY29uZmlnLmNvbHVtbnMpLmxlbmd0aCA+IDB9XG4gICAgICAgICAgICBleHBhbmRlZD17IWxheWVyLmhhc0FsbENvbHVtbnMoKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8TGF5ZXJUeXBlU2VsZWN0b3JcbiAgICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgICBsYXllcj17bGF5ZXJ9XG4gICAgICAgICAgICAgIGxheWVyVHlwZU9wdGlvbnM9e2xheWVyVHlwZU9wdGlvbnN9XG4gICAgICAgICAgICAgIG9uU2VsZWN0PXt1cGRhdGVMYXllclR5cGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPExheWVyVmlzaWJpbGl0eUJ5Wm9vbSB1cGRhdGVMYXllckNvbmZpZz17dGhpcy5wcm9wcy51cGRhdGVMYXllckNvbmZpZ30gbGF5ZXI9e2xheWVyfSAvPlxuICAgICAgICAgICAge09iamVjdC5rZXlzKGRhdGFzZXRzKS5sZW5ndGggPiAxICYmIChcbiAgICAgICAgICAgICAgPFNvdXJjZURhdGFTZWxlY3RvclxuICAgICAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgICAgICBpZD17bGF5ZXIuaWR9XG4gICAgICAgICAgICAgICAgZGF0YUlkPXtjb25maWcuZGF0YUlkfVxuICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt2YWx1ZSA9PiB1cGRhdGVMYXllckNvbmZpZyh7ZGF0YUlkOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtPYmplY3Qua2V5cyhsYXllci5jb25maWcuY29sdW1ucykubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgICA8TGF5ZXJDb2x1bW5Db25maWdcbiAgICAgICAgICAgICAgICAgIGNvbHVtblBhaXJzPXtsYXllci5jb2x1bW5QYWlyc31cbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM9e2xheWVyLmNvbmZpZy5jb2x1bW5zfVxuICAgICAgICAgICAgICAgICAgYXNzaWduQ29sdW1uUGFpcnM9e2xheWVyLmFzc2lnbkNvbHVtblBhaXJzLmJpbmQobGF5ZXIpfVxuICAgICAgICAgICAgICAgICAgYXNzaWduQ29sdW1uPXtsYXllci5hc3NpZ25Db2x1bW4uYmluZChsYXllcil9XG4gICAgICAgICAgICAgICAgICBjb2x1bW5MYWJlbHM9e2xheWVyLmNvbHVtbkxhYmVsc31cbiAgICAgICAgICAgICAgICAgIGZpZWxkcz17ZmllbGRzfVxuICAgICAgICAgICAgICAgICAgZmllbGRQYWlycz17ZmllbGRQYWlyc31cbiAgICAgICAgICAgICAgICAgIHVwZGF0ZUxheWVyQ29uZmlnPXt1cGRhdGVMYXllckNvbmZpZ31cbiAgICAgICAgICAgICAgICAgIHVwZGF0ZUxheWVyVHlwZT17dGhpcy5wcm9wcy51cGRhdGVMYXllclR5cGV9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgICAgIHt0aGlzW3JlbmRlclRlbXBsYXRlXSAmJlxuICAgICAgICAgICAgdGhpc1tyZW5kZXJUZW1wbGF0ZV0oe1xuICAgICAgICAgICAgICBsYXllcixcbiAgICAgICAgICAgICAgZGF0YXNldCxcbiAgICAgICAgICAgICAgdmlzQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICAgICAgICAgIGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzLFxuICAgICAgICAgICAgICBsYXllckNvbmZpZ3VyYXRvclByb3BzXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgPC9TdHlsZWRMYXllckNvbmZpZ3VyYXRvcj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIExheWVyQ29uZmlndXJhdG9yO1xufVxuLypcbiAqIENvbXBvbmVudGl6ZSBjb25maWcgY29tcG9uZW50IGludG8gcHVyZSBmdW5jdGlvbmFsIGNvbXBvbmVudHNcbiAqL1xuXG5jb25zdCBTdHlsZWRIb3dUb0J1dHRvbiA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDEycHg7XG4gIHRvcDogLTRweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBIb3dUb0J1dHRvbiA9ICh7b25DbGlja30pID0+IChcbiAgPFN0eWxlZEhvd1RvQnV0dG9uPlxuICAgIDxCdXR0b24gbGluayBzbWFsbCBvbkNsaWNrPXtvbkNsaWNrfT5cbiAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnbGF5ZXJDb25maWd1cmF0aW9uLmhvd1RvJ30gLz5cbiAgICA8L0J1dHRvbj5cbiAgPC9TdHlsZWRIb3dUb0J1dHRvbj5cbik7XG5cbkxheWVyQ29sb3JTZWxlY3RvckZhY3RvcnkuZGVwcyA9IFtDb2xvclNlbGVjdG9yRmFjdG9yeV07XG5leHBvcnQgZnVuY3Rpb24gTGF5ZXJDb2xvclNlbGVjdG9yRmFjdG9yeShDb2xvclNlbGVjdG9yKSB7XG4gIGNsYXNzIExheWVyQ29sb3JTZWxlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge2xheWVyLCBvbkNoYW5nZSwgc2VsZWN0ZWRDb2xvciwgcHJvcGVydHkgPSAnY29sb3InLCBzZXRDb2xvclVJfSA9IHRoaXMucHJvcHM7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICA8UGFuZWxMYWJlbD5cbiAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibGF5ZXIuY29sb3JcIiAvPlxuICAgICAgICAgIDwvUGFuZWxMYWJlbD5cbiAgICAgICAgICA8Q29sb3JTZWxlY3RvclxuICAgICAgICAgICAgY29sb3JTZXRzPXtbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvbG9yOiBzZWxlY3RlZENvbG9yIHx8IGxheWVyLmNvbmZpZy5jb2xvcixcbiAgICAgICAgICAgICAgICBzZXRDb2xvcjogcmdiVmFsdWUgPT4gb25DaGFuZ2Uoe1twcm9wZXJ0eV06IHJnYlZhbHVlfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXX1cbiAgICAgICAgICAgIGNvbG9yVUk9e2xheWVyLmNvbmZpZy5jb2xvclVJW3Byb3BlcnR5XX1cbiAgICAgICAgICAgIHNldENvbG9yVUk9e25ld0NvbmZpZyA9PiBzZXRDb2xvclVJKHByb3BlcnR5LCBuZXdDb25maWcpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIExheWVyQ29sb3JTZWxlY3Rvcjtcbn1cblxuQXJjTGF5ZXJDb2xvclNlbGVjdG9yRmFjdG9yeS5kZXBzID0gW0NvbG9yU2VsZWN0b3JGYWN0b3J5XTtcbmV4cG9ydCBmdW5jdGlvbiBBcmNMYXllckNvbG9yU2VsZWN0b3JGYWN0b3J5KENvbG9yU2VsZWN0b3IpIHtcbiAgY2xhc3MgQXJjTGF5ZXJDb2xvclNlbGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7bGF5ZXIsIG9uQ2hhbmdlQ29uZmlnLCBvbkNoYW5nZVZpc0NvbmZpZywgcHJvcGVydHkgPSAnY29sb3InLCBzZXRDb2xvclVJfSA9IHRoaXMucHJvcHM7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICA8UGFuZWxMYWJlbD5cbiAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibGF5ZXIuY29sb3JSYW5nZVwiIC8+XG4gICAgICAgICAgPC9QYW5lbExhYmVsPlxuICAgICAgICAgIDxDb2xvclNlbGVjdG9yXG4gICAgICAgICAgICBjb2xvclNldHM9e1tcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3I6IGxheWVyLmNvbmZpZy5jb2xvcixcbiAgICAgICAgICAgICAgICBzZXRDb2xvcjogcmdiVmFsdWUgPT4gb25DaGFuZ2VDb25maWcoe2NvbG9yOiByZ2JWYWx1ZX0pLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnU291cmNlJ1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcjogbGF5ZXIuY29uZmlnLnZpc0NvbmZpZy50YXJnZXRDb2xvciB8fCBsYXllci5jb25maWcuY29sb3IsXG4gICAgICAgICAgICAgICAgc2V0Q29sb3I6IHJnYlZhbHVlID0+IG9uQ2hhbmdlVmlzQ29uZmlnKHt0YXJnZXRDb2xvcjogcmdiVmFsdWV9KSxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1RhcmdldCdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXX1cbiAgICAgICAgICAgIGNvbG9yVUk9e2xheWVyLmNvbmZpZy5jb2xvclVJW3Byb3BlcnR5XX1cbiAgICAgICAgICAgIHNldENvbG9yVUk9e25ld0NvbmZpZyA9PiBzZXRDb2xvclVJKHByb3BlcnR5LCBuZXdDb25maWcpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHJldHVybiBBcmNMYXllckNvbG9yU2VsZWN0b3I7XG59XG5cbkxheWVyQ29sb3JSYW5nZVNlbGVjdG9yRmFjdG9yeS5kZXBzID0gW0NvbG9yU2VsZWN0b3JGYWN0b3J5XTtcbmV4cG9ydCBmdW5jdGlvbiBMYXllckNvbG9yUmFuZ2VTZWxlY3RvckZhY3RvcnkoQ29sb3JTZWxlY3Rvcikge1xuICBjbGFzcyBMYXllckNvbG9yUmFuZ2VTZWxlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge2xheWVyLCBvbkNoYW5nZSwgcHJvcGVydHkgPSAnY29sb3JSYW5nZScsIHNldENvbG9yVUl9ID0gdGhpcy5wcm9wcztcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgIDxQYW5lbExhYmVsPlxuICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJsYXllci5jb2xvclJhbmdlXCIgLz5cbiAgICAgICAgICA8L1BhbmVsTGFiZWw+XG4gICAgICAgICAgPENvbG9yU2VsZWN0b3JcbiAgICAgICAgICAgIGNvbG9yU2V0cz17W1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcjogbGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1twcm9wZXJ0eV0sXG4gICAgICAgICAgICAgICAgaXNSYW5nZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzZXRDb2xvcjogY29sb3JSYW5nZSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCB7Y29sb3JNYXB9ID0gbGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1twcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgICBjb25zdCBjb2xvclJhbmdlVXBkYXRlZCA9IGNvbG9yTWFwXG4gICAgICAgICAgICAgICAgICAgID8gbGF5ZXIudXBkYXRlQ29sb3JNYXAocHJvcGVydHksIGNvbG9yTWFwLCBjb2xvclJhbmdlKVxuICAgICAgICAgICAgICAgICAgICA6IGNvbG9yUmFuZ2U7XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZSh7W3Byb3BlcnR5XTogY29sb3JSYW5nZVVwZGF0ZWR9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF19XG4gICAgICAgICAgICBjb2xvclVJPXtsYXllci5jb25maWcuY29sb3JVSVtwcm9wZXJ0eV19XG4gICAgICAgICAgICBzZXRDb2xvclVJPXtuZXdDb25maWcgPT4gc2V0Q29sb3JVSShwcm9wZXJ0eSwgbmV3Q29uZmlnKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3I7XG59XG5cbkNoYW5uZWxCeVZhbHVlU2VsZWN0b3JGYWN0b3J5LmRlcHMgPSBbVmlzQ29uZmlnQnlGaWVsZFNlbGVjdG9yRmFjdG9yeV07XG5leHBvcnQgZnVuY3Rpb24gQ2hhbm5lbEJ5VmFsdWVTZWxlY3RvckZhY3RvcnkoVmlzQ29uZmlnQnlGaWVsZFNlbGVjdG9yKSB7XG4gIGNvbnN0IENoYW5uZWxCeVZhbHVlU2VsZWN0b3IgPSAoe1xuICAgIGxheWVyLFxuICAgIGNoYW5uZWwsXG4gICAgb25DaGFuZ2UsXG4gICAgb25DaGFuZ2VWaXNDb25maWcsXG4gICAgZmllbGRzLFxuICAgIGRlc2NyaXB0aW9uLFxuICAgIGlzTG9hZGluZ1xuICB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgY2hhbm5lbFNjYWxlVHlwZSxcbiAgICAgIGRvbWFpbixcbiAgICAgIGZpZWxkLFxuICAgICAga2V5LFxuICAgICAgcHJvcGVydHksXG4gICAgICByYW5nZSxcbiAgICAgIHNjYWxlLFxuICAgICAgZGVmYXVsdE1lYXN1cmUsXG4gICAgICBzdXBwb3J0ZWRGaWVsZFR5cGVzXG4gICAgfSA9IGNoYW5uZWw7XG4gICAgY29uc3QgY2hhbm5lbFN1cHBvcnRlZEZpZWxkVHlwZXMgPVxuICAgICAgc3VwcG9ydGVkRmllbGRUeXBlcyB8fCBDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFNbY2hhbm5lbFNjYWxlVHlwZV07XG4gICAgY29uc3Qgc3VwcG9ydGVkRmllbGRzID0gZmllbGRzLmZpbHRlcigoe3R5cGV9KSA9PiBjaGFubmVsU3VwcG9ydGVkRmllbGRUeXBlcy5pbmNsdWRlcyh0eXBlKSk7XG4gICAgY29uc3Qgc2NhbGVPcHRpb25zID0gbGF5ZXIuZ2V0U2NhbGVPcHRpb25zKGNoYW5uZWwua2V5KTtcbiAgICBjb25zdCBzaG93U2NhbGVDdXN0b21pemFibGUgPVxuICAgICAgY2hhbm5lbFNjYWxlVHlwZSA9PT0gQ0hBTk5FTF9TQ0FMRVMuY29sb3IgJiZcbiAgICAgIGxheWVyLmNvbmZpZ1tzY2FsZV0gJiZcbiAgICAgIEJvb2xlYW4obGF5ZXIuY29uZmlnW2ZpZWxkXSkgJiZcbiAgICAgIHNjYWxlT3B0aW9ucy5sZW5ndGggPiAwO1xuICAgIGNvbnN0IHNob3dTY2FsZSA9XG4gICAgICAhc2hvd1NjYWxlQ3VzdG9taXphYmxlICYmXG4gICAgICAhbGF5ZXIuaXNBZ2dyZWdhdGVkICYmXG4gICAgICBsYXllci5jb25maWdbc2NhbGVdICYmXG4gICAgICBzY2FsZU9wdGlvbnMubGVuZ3RoID4gMTtcbiAgICBjb25zdCBkZWZhdWx0RGVzY3JpcHRpb24gPSAnbGF5ZXJDb25maWd1cmF0aW9uLmRlZmF1bHREZXNjcmlwdGlvbic7XG4gICAgY29uc3QgdmlzUmFuZ2UgPSBsYXllci5jb25maWcudmlzQ29uZmlnW3JhbmdlXTtcblxuICAgIHJldHVybiAoXG4gICAgICA8VmlzQ29uZmlnQnlGaWVsZFNlbGVjdG9yXG4gICAgICAgIGNoYW5uZWw9e2NoYW5uZWwua2V5fVxuICAgICAgICBkZXNjcmlwdGlvbj17ZGVzY3JpcHRpb24gfHwgZGVmYXVsdERlc2NyaXB0aW9ufVxuICAgICAgICBkb21haW49e2xheWVyLmNvbmZpZ1tkb21haW5dfVxuICAgICAgICBmaWVsZHM9e3N1cHBvcnRlZEZpZWxkc31cbiAgICAgICAgaWQ9e2xheWVyLmlkfVxuICAgICAgICBrZXk9e2Ake2tleX0tY2hhbm5lbC1zZWxlY3RvcmB9XG4gICAgICAgIHByb3BlcnR5PXtwcm9wZXJ0eX1cbiAgICAgICAgcGxhY2Vob2xkZXI9e2RlZmF1bHRNZWFzdXJlIHx8ICdwbGFjZWhvbGRlci5zZWxlY3RGaWVsZCd9XG4gICAgICAgIHJhbmdlPXt2aXNSYW5nZX1cbiAgICAgICAgc2NhbGVPcHRpb25zPXtzY2FsZU9wdGlvbnN9XG4gICAgICAgIHNjYWxlVHlwZT17c2NhbGUgPyBsYXllci5jb25maWdbc2NhbGVdIDogbnVsbH1cbiAgICAgICAgc2VsZWN0ZWRGaWVsZD17bGF5ZXIuY29uZmlnW2ZpZWxkXX1cbiAgICAgICAgc2hvd1NjYWxlPXtzaG93U2NhbGV9XG4gICAgICAgIHNob3dTY2FsZUN1c3RvbWl6YWJsZT17c2hvd1NjYWxlQ3VzdG9taXphYmxlfVxuICAgICAgICB1cGRhdGVGaWVsZD17dmFsID0+IHtcbiAgICAgICAgICBpZiAodmlzUmFuZ2U/LmNvbG9yTWFwKSB7XG4gICAgICAgICAgICBvbkNoYW5nZVZpc0NvbmZpZyh7W3JhbmdlXTogey4uLnZpc1JhbmdlLCBjb2xvck1hcDogdW5kZWZpbmVkfX0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvbkNoYW5nZSh7W2ZpZWxkXTogdmFsfSwga2V5KTtcbiAgICAgICAgfX1cbiAgICAgICAgdXBkYXRlU2NhbGU9e3ZhbCA9PiBvbkNoYW5nZSh7W3NjYWxlXTogdmFsfSwga2V5KX1cbiAgICAgICAgdXBkYXRlQ3VzdG9tUGFsZXR0ZT17Y29sb3JNYXAgPT4gb25DaGFuZ2VWaXNDb25maWcoe1tyYW5nZV06IHsuLi52aXNSYW5nZSwgY29sb3JNYXB9fSl9XG4gICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgLz5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBDaGFubmVsQnlWYWx1ZVNlbGVjdG9yO1xufVxuXG5BZ2dyU2NhbGVTZWxlY3RvckZhY3RvcnkuZGVwcyA9IFtDb2xvckRpbWVuc2lvblNjYWxlU2VsZWN0b3JGYWN0b3J5XTtcblxuZnVuY3Rpb24gQWdnclNjYWxlU2VsZWN0b3JGYWN0b3J5KENvbG9yRGltZW5zaW9uU2NhbGVTZWxlY3Rvcikge1xuICBjbGFzcyBBZ2dyU2NhbGVTZWxlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge2NoYW5uZWwsIGxheWVyLCBvbkNoYW5nZSwgb25DaGFuZ2VWaXNDb25maWd9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHtzY2FsZSwga2V5LCBjaGFubmVsU2NhbGVUeXBlLCBkb21haW4sIHJhbmdlfSA9IGNoYW5uZWw7XG4gICAgICBjb25zdCBzY2FsZU9wdGlvbnMgPSBsYXllci5nZXRTY2FsZU9wdGlvbnMoa2V5KTtcbiAgICAgIGNvbnN0IHZpc1JhbmdlID0gbGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1tyYW5nZV07XG4gICAgICBjb25zdCBzaG93U2NhbGVDdXN0b21pemFibGUgPVxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlID09PSBDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3IgJiZcbiAgICAgICAgQXJyYXkuaXNBcnJheShzY2FsZU9wdGlvbnMpICYmXG4gICAgICAgIHNjYWxlT3B0aW9ucy5sZW5ndGggPiAwO1xuICAgICAgY29uc3Qgc2hvd1NjYWxlID0gQXJyYXkuaXNBcnJheShzY2FsZU9wdGlvbnMpICYmIHNjYWxlT3B0aW9ucy5sZW5ndGggPiAxO1xuXG4gICAgICBpZiAoc2hvd1NjYWxlQ3VzdG9taXphYmxlKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPFNpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgICA8Q29sb3JEaW1lbnNpb25TY2FsZVNlbGVjdG9yXG4gICAgICAgICAgICAgIGxhYmVsPXtgJHtrZXl9IFNjYWxlYH1cbiAgICAgICAgICAgICAgc2NhbGVUeXBlPXtsYXllci5jb25maWdbc2NhbGVdfVxuICAgICAgICAgICAgICBvcHRpb25zPXtzY2FsZU9wdGlvbnN9XG4gICAgICAgICAgICAgIGRvbWFpbj17bGF5ZXIuY29uZmlnW2RvbWFpbl19XG4gICAgICAgICAgICAgIHJhbmdlPXt2aXNSYW5nZX1cbiAgICAgICAgICAgICAgb25TZWxlY3Q9e3ZhbCA9PiBvbkNoYW5nZSh7W3NjYWxlXTogdmFsfSwga2V5KX1cbiAgICAgICAgICAgICAgb25TZXRDdXN0b21QYWxldHRlPXtjb2xvck1hcCA9PiBvbkNoYW5nZVZpc0NvbmZpZyh7W3JhbmdlXTogey4uLnZpc1JhbmdlLCBjb2xvck1hcH19KX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2hvd1NjYWxlKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPERpbWVuc2lvblNjYWxlU2VsZWN0b3JcbiAgICAgICAgICAgIGxhYmVsPXtgJHtrZXl9IFNjYWxlYH1cbiAgICAgICAgICAgIG9wdGlvbnM9e3NjYWxlT3B0aW9uc31cbiAgICAgICAgICAgIHNjYWxlVHlwZT17bGF5ZXIuY29uZmlnW3NjYWxlXX1cbiAgICAgICAgICAgIG9uU2VsZWN0PXt2YWwgPT4gb25DaGFuZ2Uoe1tzY2FsZV06IHZhbH0sIGtleSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaW5qZWN0SW50bChBZ2dyU2NhbGVTZWxlY3Rvcik7XG59XG5cbmV4cG9ydCBjb25zdCBBZ2dyZWdhdGlvblR5cGVTZWxlY3RvciA9ICh7bGF5ZXIsIGNoYW5uZWwsIG9uQ2hhbmdlfSkgPT4ge1xuICBjb25zdCB7ZmllbGQsIGFnZ3JlZ2F0aW9uLCBrZXl9ID0gY2hhbm5lbDtcbiAgY29uc3Qgc2VsZWN0ZWRGaWVsZCA9IGxheWVyLmNvbmZpZ1tmaWVsZF07XG4gIGNvbnN0IHt2aXNDb25maWd9ID0gbGF5ZXIuY29uZmlnO1xuXG4gIC8vIGFnZ3JlZ2F0aW9uIHNob3VsZCBvbmx5IGJlIHNlbGVjdGFibGUgd2hlbiBmaWVsZCBpcyBzZWxlY3RlZFxuICBjb25zdCBhZ2dyZWdhdGlvbk9wdGlvbnMgPSBsYXllci5nZXRBZ2dyZWdhdGlvbk9wdGlvbnMoa2V5KTtcblxuICByZXR1cm4gKFxuICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgPFBhbmVsTGFiZWw+XG4gICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnbGF5ZXIuYWdncmVnYXRlQnknfSB2YWx1ZXM9e3tmaWVsZDogc2VsZWN0ZWRGaWVsZC5uYW1lfX0gLz5cbiAgICAgIDwvUGFuZWxMYWJlbD5cbiAgICAgIDxJdGVtU2VsZWN0b3JcbiAgICAgICAgc2VsZWN0ZWRJdGVtcz17dmlzQ29uZmlnW2FnZ3JlZ2F0aW9uXX1cbiAgICAgICAgb3B0aW9ucz17YWdncmVnYXRpb25PcHRpb25zfVxuICAgICAgICBtdWx0aVNlbGVjdD17ZmFsc2V9XG4gICAgICAgIHNlYXJjaGFibGU9e2ZhbHNlfVxuICAgICAgICBvbkNoYW5nZT17dmFsdWUgPT5cbiAgICAgICAgICBvbkNoYW5nZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdmlzQ29uZmlnOiB7XG4gICAgICAgICAgICAgICAgLi4ubGF5ZXIuY29uZmlnLnZpc0NvbmZpZyxcbiAgICAgICAgICAgICAgICBbYWdncmVnYXRpb25dOiB2YWx1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2hhbm5lbC5rZXlcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuICApO1xufTtcbi8qIGVzbGludC1lbmFibGUgbWF4LXBhcmFtcyAqL1xuIl19
961
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvbGF5ZXItY29uZmlndXJhdG9yLmpzIl0sIm5hbWVzIjpbIlN0eWxlZExheWVyQ29uZmlndXJhdG9yIiwic3R5bGVkIiwiZGl2IiwiYXR0cnMiLCJjbGFzc05hbWUiLCJwcm9wcyIsInRoZW1lIiwibGF5ZXJDb25maWd1cmF0b3JNYXJnaW4iLCJsYXllckNvbmZpZ3VyYXRvclBhZGRpbmciLCJsYXllckNvbmZpZ3VyYXRvckJvcmRlciIsImxheWVyQ29uZmlndXJhdG9yQm9yZGVyQ29sb3IiLCJTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvciIsImdldExheWVyRmllbGRzIiwiZGF0YXNldHMiLCJsYXllciIsImNvbmZpZyIsImRhdGFJZCIsImZpZWxkcyIsImdldExheWVyRGF0YXNldCIsImdldExheWVyQ29uZmlndXJhdG9yUHJvcHMiLCJvbkNoYW5nZSIsInVwZGF0ZUxheWVyQ29uZmlnIiwic2V0Q29sb3JVSSIsInVwZGF0ZUxheWVyQ29sb3JVSSIsImdldFZpc0NvbmZpZ3VyYXRvclByb3BzIiwidXBkYXRlTGF5ZXJWaXNDb25maWciLCJnZXRMYXllckNoYW5uZWxDb25maWdQcm9wcyIsInVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZyIsIm9uQ2hhbmdlVmlzQ29uZmlnIiwiTGF5ZXJDb25maWd1cmF0b3JGYWN0b3J5IiwiZGVwcyIsIlNvdXJjZURhdGFTZWxlY3RvckZhY3RvcnkiLCJWaXNDb25maWdTbGlkZXJGYWN0b3J5IiwiVGV4dExhYmVsUGFuZWxGYWN0b3J5IiwiTGF5ZXJDb25maWdHcm91cEZhY3RvcnkiLCJDaGFubmVsQnlWYWx1ZVNlbGVjdG9yRmFjdG9yeSIsIkxheWVyQ29sdW1uQ29uZmlnRmFjdG9yeSIsIkxheWVyVHlwZVNlbGVjdG9yRmFjdG9yeSIsIlZpc0NvbmZpZ1N3aXRjaEZhY3RvcnkiLCJBZ2dyU2NhbGVTZWxlY3RvckZhY3RvcnkiLCJMYXllclZpc2liaWxpdHlCeVpvb21GYWN0b3J5IiwiTGF5ZXJDb2xvclNlbGVjdG9yRmFjdG9yeSIsIkxheWVyQ29sb3JSYW5nZVNlbGVjdG9yRmFjdG9yeSIsIkFyY0xheWVyQ29sb3JTZWxlY3RvckZhY3RvcnkiLCJTb3VyY2VEYXRhU2VsZWN0b3IiLCJWaXNDb25maWdTbGlkZXIiLCJUZXh0TGFiZWxQYW5lbCIsIkxheWVyQ29uZmlnR3JvdXAiLCJDaGFubmVsQnlWYWx1ZVNlbGVjdG9yIiwiTGF5ZXJDb2x1bW5Db25maWciLCJMYXllclR5cGVTZWxlY3RvciIsIlZpc0NvbmZpZ1N3aXRjaCIsIkFnZ3JTY2FsZVNlbGVjdG9yIiwiTGF5ZXJWaXNpYmlsaXR5Qnlab29tIiwiTGF5ZXJDb2xvclNlbGVjdG9yIiwiTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3IiLCJBcmNMYXllckNvbG9yU2VsZWN0b3IiLCJMYXllckNvbmZpZ3VyYXRvciIsIl9yZW5kZXJTY2F0dGVycGxvdExheWVyQ29uZmlnIiwidmlzQ29uZmlndXJhdG9yUHJvcHMiLCJsYXllckNoYW5uZWxDb25maWdQcm9wcyIsImxheWVyQ29uZmlndXJhdG9yUHJvcHMiLCJ2aXNDb25maWdTZXR0aW5ncyIsImZpbGxlZCIsImxhYmVsIiwiY29sb3JGaWVsZCIsInZpc3VhbENoYW5uZWxzIiwiY29sb3IiLCJvcGFjaXR5IiwidHlwZSIsIkxBWUVSX1RZUEVTIiwicG9pbnQiLCJvdXRsaW5lIiwic3Ryb2tlQ29sb3JGaWVsZCIsInZpc0NvbmZpZyIsInN0cm9rZUNvbG9yIiwidGhpY2tuZXNzIiwic2l6ZUZpZWxkIiwicmFkaXVzIiwiQm9vbGVhbiIsInJhZGl1c1JhbmdlIiwiZml4ZWRSYWRpdXMiLCJzaXplIiwidXBkYXRlTGF5ZXJUZXh0TGFiZWwiLCJ0ZXh0TGFiZWwiLCJjb2xvclBhbGV0dGUiLCJzZXRDb2xvclBhbGV0dGVVSSIsImNvbG9yQWdncmVnYXRpb24iLCJjb25kaXRpb24iLCJjbHVzdGVyUmFkaXVzIiwid2VpZ2h0IiwiX3JlbmRlckFnZ3JlZ2F0aW9uTGF5ZXJDb25maWciLCJlbmFibGUzZCIsImVsZXZhdGlvbkJ5RGVzY3JpcHRpb24iLCJjb2xvckJ5RGVzY3JpcHRpb24iLCJwZXJjZW50aWxlIiwid29ybGRVbml0U2l6ZSIsImNvdmVyYWdlIiwiZWxldmF0aW9uU2NhbGUiLCJzaXplUmFuZ2UiLCJzaXplQWdncmVnYXRpb24iLCJlbGV2YXRpb25QZXJjZW50aWxlIiwiY292ZXJhZ2VGaWVsZCIsImNvdmVyYWdlUmFuZ2UiLCJhcmdzIiwiX3JlbmRlckxpbmVMYXllckNvbmZpZyIsInNvdXJjZUNvbG9yIiwibWV0YSIsImZlYXR1cmVUeXBlcyIsInBvbHlnb24iLCJzdHJva2VkIiwidHJhaWxMZW5ndGgiLCJzdHJva2VPcGFjaXR5IiwiaGVpZ2h0Iiwid2lyZWZyYW1lIiwicmFkaXVzRmllbGQiLCJlIiwidGFyZ2V0IiwiZmlsZXMiLCJ1cmwiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJzY2VuZWdyYXBoIiwic2l6ZVNjYWxlIiwiYW5nbGVYIiwiYW5nbGVZIiwiYW5nbGVaIiwiaGVpZ2h0UmFuZ2UiLCJsYXllclR5cGVPcHRpb25zIiwidXBkYXRlTGF5ZXJUeXBlIiwiZmllbGRQYWlycyIsInVuZGVmaW5lZCIsImRhdGFzZXQiLCJyZW5kZXJUZW1wbGF0ZSIsImxheWVySW5mb01vZGFsIiwib3Blbk1vZGFsIiwiT2JqZWN0Iiwia2V5cyIsImNvbHVtbnMiLCJsZW5ndGgiLCJoYXNBbGxDb2x1bW5zIiwiaWQiLCJ2YWx1ZSIsImNvbHVtblBhaXJzIiwiYXNzaWduQ29sdW1uUGFpcnMiLCJiaW5kIiwiYXNzaWduQ29sdW1uIiwiY29sdW1uTGFiZWxzIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsImFycmF5T2YiLCJhbnkiLCJmdW5jIiwiU3R5bGVkSG93VG9CdXR0b24iLCJIb3dUb0J1dHRvbiIsIm9uQ2xpY2siLCJDb2xvclNlbGVjdG9yRmFjdG9yeSIsIkNvbG9yU2VsZWN0b3IiLCJzZWxlY3RlZENvbG9yIiwicHJvcGVydHkiLCJzZXRDb2xvciIsInJnYlZhbHVlIiwiY29sb3JVSSIsIm5ld0NvbmZpZyIsIm9uQ2hhbmdlQ29uZmlnIiwidGFyZ2V0Q29sb3IiLCJpc1JhbmdlIiwiY29sb3JSYW5nZSIsImNvbG9yTWFwIiwiY29sb3JSYW5nZVVwZGF0ZWQiLCJ1cGRhdGVDb2xvck1hcCIsIlZpc0NvbmZpZ0J5RmllbGRTZWxlY3RvckZhY3RvcnkiLCJWaXNDb25maWdCeUZpZWxkU2VsZWN0b3IiLCJjaGFubmVsIiwiZmllbGRzQWdncmVnYXRlZCIsImRlc2NyaXB0aW9uIiwiaXNMb2FkaW5nIiwiY2hhbm5lbFNjYWxlVHlwZSIsImRvbWFpbiIsImZpZWxkIiwiYWdncmVnYXRpb24iLCJrZXkiLCJyYW5nZSIsInNjYWxlIiwiZGVmYXVsdE1lYXN1cmUiLCJzdXBwb3J0ZWRGaWVsZFR5cGVzIiwiY2hhbm5lbFN1cHBvcnRlZEZpZWxkVHlwZXMiLCJDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFMiLCJzdXBwb3J0ZWRGaWVsZHMiLCJmaWx0ZXIiLCJpbmNsdWRlcyIsInNjYWxlT3B0aW9ucyIsImdldFNjYWxlT3B0aW9ucyIsInNob3dTY2FsZUN1c3RvbWl6YWJsZSIsIkNIQU5ORUxfU0NBTEVTIiwic2hvd1NjYWxlIiwiaXNBZ2dyZWdhdGVkIiwiZGVmYXVsdERlc2NyaXB0aW9uIiwidmlzUmFuZ2UiLCJhZ2dyZWdhdG9yIiwidmFsIiwic2VsZWN0ZWRBZ2dyZWdhdG9yIiwiQ29sb3JEaW1lbnNpb25TY2FsZVNlbGVjdG9yRmFjdG9yeSIsIkNvbG9yRGltZW5zaW9uU2NhbGVTZWxlY3RvciIsImNvbG9yQWdnciIsIkFycmF5IiwiaXNBcnJheSIsIkFnZ3JlZ2F0aW9uVHlwZVNlbGVjdG9yIiwic2VsZWN0ZWRGaWVsZCIsImFnZ3JlZ2F0aW9uT3B0aW9ucyIsImdldEFnZ3JlZ2F0aW9uT3B0aW9ucyIsIm5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7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QyxHQUNuQ1IsT0FEbUMsQ0FDMUNRLEdBRDBDO0FBRXJFLE1BQU0yQixhQUFhLEdBQUdwTSxLQUFLLENBQUNDLE1BQU4sQ0FBYXNLLEtBQWIsQ0FBdEI7QUFGcUUsTUFHOUQzRyxTQUg4RCxHQUdqRDVELEtBQUssQ0FBQ0MsTUFIMkMsQ0FHOUQyRCxTQUg4RCxFQUtyRTs7QUFDQSxNQUFNeUksa0JBQWtCLEdBQUdyTSxLQUFLLENBQUNzTSxxQkFBTixDQUE0QjdCLEdBQTVCLENBQTNCO0FBRUEsc0JBQ0UsZ0NBQUMsbUNBQUQscUJBQ0UsZ0NBQUMsNkJBQUQscUJBQ0UsZ0NBQUMsOEJBQUQ7QUFBa0IsSUFBQSxFQUFFLEVBQUUsbUJBQXRCO0FBQTJDLElBQUEsTUFBTSxFQUFFO0FBQUNGLE1BQUFBLEtBQUssRUFBRTZCLGFBQWEsQ0FBQ0c7QUFBdEI7QUFBbkQsSUFERixDQURGLGVBSUUsZ0NBQUMsd0JBQUQ7QUFDRSxJQUFBLGFBQWEsRUFBRTNJLFNBQVMsQ0FBQzRHLFdBQUQsQ0FEMUI7QUFFRSxJQUFBLE9BQU8sRUFBRTZCLGtCQUZYO0FBR0UsSUFBQSxXQUFXLEVBQUUsS0FIZjtBQUlFLElBQUEsVUFBVSxFQUFFLEtBSmQ7QUFLRSxJQUFBLFFBQVEsRUFBRSxrQkFBQXJFLEtBQUs7QUFBQSxhQUNiMUgsVUFBUSxDQUNOO0FBQ0VzRCxRQUFBQSxTQUFTLGtDQUNKNUQsS0FBSyxDQUFDQyxNQUFOLENBQWEyRCxTQURULDRDQUVONEcsV0FGTSxFQUVReEMsS0FGUjtBQURYLE9BRE0sRUFPTmlDLE9BQU8sQ0FBQ1EsR0FQRixDQURLO0FBQUE7QUFMakIsSUFKRixDQURGO0FBd0JELENBaENNO0FBaUNQIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBGcmFnbWVudH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdsb2NhbGl6YXRpb24nO1xuXG5pbXBvcnQge0J1dHRvbiwgSW5wdXQsIFBhbmVsTGFiZWwsIFNpZGVQYW5lbFNlY3Rpb259IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBJdGVtU2VsZWN0b3IgZnJvbSAnY29tcG9uZW50cy9jb21tb24vaXRlbS1zZWxlY3Rvci9pdGVtLXNlbGVjdG9yJztcblxuaW1wb3J0IFZpc0NvbmZpZ0J5RmllbGRTZWxlY3RvckZhY3RvcnkgZnJvbSAnLi92aXMtY29uZmlnLWJ5LWZpZWxkLXNlbGVjdG9yJztcbmltcG9ydCBMYXllckNvbHVtbkNvbmZpZ0ZhY3RvcnkgZnJvbSAnLi9sYXllci1jb2x1bW4tY29uZmlnJztcbmltcG9ydCBMYXllclR5cGVTZWxlY3RvckZhY3RvcnkgZnJvbSAnLi9sYXllci10eXBlLXNlbGVjdG9yJztcbmltcG9ydCBMYXllclZpc2liaWxpdHlCeVpvb21GYWN0b3J5IGZyb20gJy4vbGF5ZXItdmlzaWJpbGl0eS1ieS16b29tJztcbmltcG9ydCBEaW1lbnNpb25TY2FsZVNlbGVjdG9yIGZyb20gJy4vZGltZW5zaW9uLXNjYWxlLXNlbGVjdG9yJztcbmltcG9ydCBTb3VyY2VEYXRhU2VsZWN0b3JGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvc2lkZS1wYW5lbC9jb21tb24vc291cmNlLWRhdGEtc2VsZWN0b3InO1xuaW1wb3J0IFZpc0NvbmZpZ1N3aXRjaEZhY3RvcnkgZnJvbSAnLi92aXMtY29uZmlnLXN3aXRjaCc7XG5pbXBvcnQgVmlzQ29uZmlnU2xpZGVyRmFjdG9yeSBmcm9tICcuL3Zpcy1jb25maWctc2xpZGVyJztcbmltcG9ydCBMYXllckNvbmZpZ0dyb3VwRmFjdG9yeSwge0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50fSBmcm9tICcuL2xheWVyLWNvbmZpZy1ncm91cCc7XG5pbXBvcnQgVGV4dExhYmVsUGFuZWxGYWN0b3J5IGZyb20gJy4vdGV4dC1sYWJlbC1wYW5lbCc7XG5cbmltcG9ydCB7Y2FwaXRhbGl6ZUZpcnN0TGV0dGVyfSBmcm9tICd1dGlscy91dGlscyc7XG5cbmltcG9ydCB7Q0hBTk5FTF9TQ0FMRVMsIENIQU5ORUxfU0NBTEVfU1VQUE9SVEVEX0ZJRUxEU30gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuaW1wb3J0IHtMQVlFUl9UWVBFU30gZnJvbSAnbGF5ZXJzL3R5cGVzJztcbmltcG9ydCB7aW5qZWN0SW50bH0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQgQ29sb3JEaW1lbnNpb25TY2FsZVNlbGVjdG9yRmFjdG9yeSBmcm9tICcuL2NvbG9yLWRpbWVuc2lvbi1zY2FsZS1zZWxlY3Rvcic7XG5pbXBvcnQgQ29sb3JTZWxlY3RvckZhY3RvcnkgZnJvbSAnLi9jb2xvci1zZWxlY3Rvcic7XG5cbmNvbnN0IFN0eWxlZExheWVyQ29uZmlndXJhdG9yID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2xheWVyLXBhbmVsX19jb25maWcnXG59KWBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tdG9wOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxheWVyQ29uZmlndXJhdG9yTWFyZ2lufTtcbiAgcGFkZGluZzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ3VyYXRvclBhZGRpbmd9O1xuICBib3JkZXItbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ3VyYXRvckJvcmRlcn0gZGFzaGVkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ3VyYXRvckJvcmRlckNvbG9yfTtcbmA7XG5cbmNvbnN0IFN0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2xheWVyLXBhbmVsX19jb25maWdfX3Zpc3VhbEMtY29uZmlnJ1xufSlgXG4gIG1hcmdpbi10b3A6IDEycHg7XG5gO1xuXG5leHBvcnQgY29uc3QgZ2V0TGF5ZXJGaWVsZHMgPSAoZGF0YXNldHMsIGxheWVyKSA9PlxuICBsYXllci5jb25maWcgJiYgZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF0gPyBkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXS5maWVsZHMgOiBbXTtcblxuZXhwb3J0IGNvbnN0IGdldExheWVyRGF0YXNldCA9IChkYXRhc2V0cywgbGF5ZXIpID0+XG4gIGxheWVyLmNvbmZpZyAmJiBkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXSA/IGRhdGFzZXRzW2xheWVyLmNvbmZpZy5kYXRhSWRdIDogbnVsbDtcblxuZXhwb3J0IGNvbnN0IGdldExheWVyQ29uZmlndXJhdG9yUHJvcHMgPSBwcm9wcyA9PiAoe1xuICBsYXllcjogcHJvcHMubGF5ZXIsXG4gIGZpZWxkczogZ2V0TGF5ZXJGaWVsZHMocHJvcHMuZGF0YXNldHMsIHByb3BzLmxheWVyKSxcbiAgb25DaGFuZ2U6IHByb3BzLnVwZGF0ZUxheWVyQ29uZmlnLFxuICBzZXRDb2xvclVJOiBwcm9wcy51cGRhdGVMYXllckNvbG9yVUlcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2V0VmlzQ29uZmlndXJhdG9yUHJvcHMgPSBwcm9wcyA9PiAoe1xuICBsYXllcjogcHJvcHMubGF5ZXIsXG4gIGZpZWxkczogZ2V0TGF5ZXJGaWVsZHMocHJvcHMuZGF0YXNldHMsIHByb3BzLmxheWVyKSxcbiAgb25DaGFuZ2U6IHByb3BzLnVwZGF0ZUxheWVyVmlzQ29uZmlnLFxuICBzZXRDb2xvclVJOiBwcm9wcy51cGRhdGVMYXllckNvbG9yVUlcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2V0TGF5ZXJDaGFubmVsQ29uZmlnUHJvcHMgPSBwcm9wcyA9PiAoe1xuICBsYXllcjogcHJvcHMubGF5ZXIsXG4gIGZpZWxkczogZ2V0TGF5ZXJGaWVsZHMocHJvcHMuZGF0YXNldHMsIHByb3BzLmxheWVyKSxcbiAgb25DaGFuZ2U6IHByb3BzLnVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZyxcbiAgb25DaGFuZ2VWaXNDb25maWc6IHByb3BzLnVwZGF0ZUxheWVyVmlzQ29uZmlnXG59KTtcblxuTGF5ZXJDb25maWd1cmF0b3JGYWN0b3J5LmRlcHMgPSBbXG4gIFNvdXJjZURhdGFTZWxlY3RvckZhY3RvcnksXG4gIFZpc0NvbmZpZ1NsaWRlckZhY3RvcnksXG4gIFRleHRMYWJlbFBhbmVsRmFjdG9yeSxcbiAgTGF5ZXJDb25maWdHcm91cEZhY3RvcnksXG4gIENoYW5uZWxCeVZhbHVlU2VsZWN0b3JGYWN0b3J5LFxuICBMYXllckNvbHVtbkNvbmZpZ0ZhY3RvcnksXG4gIExheWVyVHlwZVNlbGVjdG9yRmFjdG9yeSxcbiAgVmlzQ29uZmlnU3dpdGNoRmFjdG9yeSxcbiAgQWdnclNjYWxlU2VsZWN0b3JGYWN0b3J5LFxuICBMYXllclZpc2liaWxpdHlCeVpvb21GYWN0b3J5LFxuICBMYXllckNvbG9yU2VsZWN0b3JGYWN0b3J5LFxuICBMYXllckNvbG9yUmFuZ2VTZWxlY3RvckZhY3RvcnksXG4gIEFyY0xheWVyQ29sb3JTZWxlY3RvckZhY3Rvcnlcbl07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIExheWVyQ29uZmlndXJhdG9yRmFjdG9yeShcbiAgU291cmNlRGF0YVNlbGVjdG9yLFxuICBWaXNDb25maWdTbGlkZXIsXG4gIFRleHRMYWJlbFBhbmVsLFxuICBMYXllckNvbmZpZ0dyb3VwLFxuICBDaGFubmVsQnlWYWx1ZVNlbGVjdG9yLFxuICBMYXllckNvbHVtbkNvbmZpZyxcbiAgTGF5ZXJUeXBlU2VsZWN0b3IsXG4gIFZpc0NvbmZpZ1N3aXRjaCxcbiAgQWdnclNjYWxlU2VsZWN0b3IsXG4gIExheWVyVmlzaWJpbGl0eUJ5Wm9vbSxcbiAgTGF5ZXJDb2xvclNlbGVjdG9yLFxuICBMYXllckNvbG9yUmFuZ2VTZWxlY3RvcixcbiAgQXJjTGF5ZXJDb2xvclNlbGVjdG9yXG4pIHtcbiAgY2xhc3MgTGF5ZXJDb25maWd1cmF0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgICBsYXllcjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgZGF0YXNldHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIGxheWVyVHlwZU9wdGlvbnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBvcGVuTW9kYWw6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICB1cGRhdGVMYXllckNvbmZpZzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIHVwZGF0ZUxheWVyVHlwZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIHVwZGF0ZUxheWVyVmlzQ29uZmlnOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgdXBkYXRlTGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgdXBkYXRlTGF5ZXJDb2xvclVJOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG4gICAgfTtcblxuICAgIF9yZW5kZXJQb2ludExheWVyQ29uZmlnKHByb3BzKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVuZGVyU2NhdHRlcnBsb3RMYXllckNvbmZpZyhwcm9wcyk7XG4gICAgfVxuXG4gICAgX3JlbmRlckljb25MYXllckNvbmZpZyhwcm9wcykge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlclNjYXR0ZXJwbG90TGF5ZXJDb25maWcocHJvcHMpO1xuICAgIH1cblxuICAgIF9yZW5kZXJTY2F0dGVycGxvdExheWVyQ29uZmlnKHtcbiAgICAgIGxheWVyLFxuICAgICAgdmlzQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNoYW5uZWxDb25maWdQcm9wcyxcbiAgICAgIGxheWVyQ29uZmlndXJhdG9yUHJvcHNcbiAgICB9KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICAgICAgey8qIEZpbGwgQ29sb3IgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICAgIHsuLi4obGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZmlsbGVkIHx8IHtsYWJlbDogJ2xheWVyLmNvbG9yJ30pfVxuICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bGF5ZXIuY29uZmlnLmNvbG9yRmllbGQgPyAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yUmFuZ2VTZWxlY3RvciB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TGF5ZXJDb2xvclNlbGVjdG9yIHsuLi5sYXllckNvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5jb2xvcn1cbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXIgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLm9wYWNpdHl9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIG91dGxpbmUgY29sb3IgKi99XG4gICAgICAgICAge2xheWVyLnR5cGUgPT09IExBWUVSX1RZUEVTLnBvaW50ID8gKFxuICAgICAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLm91dGxpbmV9XG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2xheWVyLmNvbmZpZy5zdHJva2VDb2xvckZpZWxkID8gKFxuICAgICAgICAgICAgICAgIDxMYXllckNvbG9yUmFuZ2VTZWxlY3RvciB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IHByb3BlcnR5PVwic3Ryb2tlQ29sb3JSYW5nZVwiIC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPExheWVyQ29sb3JTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcj17bGF5ZXIuY29uZmlnLnZpc0NvbmZpZy5zdHJva2VDb2xvcn1cbiAgICAgICAgICAgICAgICAgIHByb3BlcnR5PVwic3Ryb2tlQ29sb3JcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuc3Ryb2tlQ29sb3J9XG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MudGhpY2tuZXNzfVxuICAgICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFsYXllci5jb25maWcudmlzQ29uZmlnLm91dGxpbmV9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgIHsvKiBSYWRpdXMgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYXllci5yYWRpdXMnfSBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIHshbGF5ZXIuY29uZmlnLnNpemVGaWVsZCA/IChcbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5yYWRpdXN9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17Qm9vbGVhbihsYXllci5jb25maWcuc2l6ZUZpZWxkKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MucmFkaXVzUmFuZ2V9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17IWxheWVyLmNvbmZpZy5zaXplRmllbGQgfHwgbGF5ZXIuY29uZmlnLnZpc0NvbmZpZy5maXhlZFJhZGl1c31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuc2l6ZX1cbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIHtsYXllci5jb25maWcuc2l6ZUZpZWxkID8gKFxuICAgICAgICAgICAgICAgIDxWaXNDb25maWdTd2l0Y2hcbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5maXhlZFJhZGl1c31cbiAgICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIHRleHQgbGFiZWwgKi99XG4gICAgICAgICAgPFRleHRMYWJlbFBhbmVsXG4gICAgICAgICAgICBmaWVsZHM9e3Zpc0NvbmZpZ3VyYXRvclByb3BzLmZpZWxkc31cbiAgICAgICAgICAgIHVwZGF0ZUxheWVyVGV4dExhYmVsPXt0aGlzLnByb3BzLnVwZGF0ZUxheWVyVGV4dExhYmVsfVxuICAgICAgICAgICAgdGV4dExhYmVsPXtsYXllci5jb25maWcudGV4dExhYmVsfVxuICAgICAgICAgICAgY29sb3JQYWxldHRlPXt2aXNDb25maWd1cmF0b3JQcm9wcy5jb2xvclBhbGV0dGV9XG4gICAgICAgICAgICBzZXRDb2xvclBhbGV0dGVVST17dmlzQ29uZmlndXJhdG9yUHJvcHMuc2V0Q29sb3JQYWxldHRlVUl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgX3JlbmRlckNsdXN0ZXJMYXllckNvbmZpZyh7XG4gICAgICBsYXllcixcbiAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzXG4gICAgfSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgICAgIHsvKiBDb2xvciAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLmNvbG9yJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICA8TGF5ZXJDb2xvclJhbmdlU2VsZWN0b3Igey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8QWdnclNjYWxlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5jb2xvcn1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZVZpc0NvbmZpZz17bGF5ZXJDaGFubmVsQ29uZmlnUHJvcHMub25DaGFuZ2VWaXNDb25maWd9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB7bGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuY29sb3JBZ2dyZWdhdGlvbi5jb25kaXRpb24obGF5ZXIuY29uZmlnKSA/IChcbiAgICAgICAgICAgICAgICA8QWdncmVnYXRpb25UeXBlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5jb2xvckFnZ3JlZ2F0aW9ufVxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY29sb3J9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXIgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLm9wYWNpdHl9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIENsdXN0ZXIgUmFkaXVzICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIGxhYmVsPXsnbGF5ZXIucmFkaXVzJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5jbHVzdGVyUmFkaXVzfSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXIgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnJhZGl1c1JhbmdlfSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgPC9TdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgX3JlbmRlckhlYXRtYXBMYXllckNvbmZpZyh7XG4gICAgICBsYXllcixcbiAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzXG4gICAgfSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgICAgIHsvKiBDb2xvciAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLmNvbG9yJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICA8TGF5ZXJDb2xvclJhbmdlU2VsZWN0b3Igey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5vcGFjaXR5fSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICB7LyogUmFkaXVzICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIGxhYmVsPXsnbGF5ZXIucmFkaXVzJ30+XG4gICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5yYWRpdXN9XG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICAgey8qIFdlaWdodCAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLndlaWdodCd9PlxuICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMud2VpZ2h0fVxuICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgPC9TdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgX3JlbmRlckdyaWRMYXllckNvbmZpZyhwcm9wcykge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlckFnZ3JlZ2F0aW9uTGF5ZXJDb25maWcocHJvcHMpO1xuICAgIH1cblxuICAgIF9yZW5kZXJIZXhhZ29uTGF5ZXJDb25maWcocHJvcHMpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZW5kZXJBZ2dyZWdhdGlvbkxheWVyQ29uZmlnKHByb3BzKTtcbiAgICB9XG5cbiAgICBfcmVuZGVyQWdncmVnYXRpb25MYXllckNvbmZpZyh7XG4gICAgICBsYXllcixcbiAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzXG4gICAgfSkge1xuICAgICAgY29uc3Qge2NvbmZpZ30gPSBsYXllcjtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgdmlzQ29uZmlnOiB7ZW5hYmxlM2R9XG4gICAgICB9ID0gY29uZmlnO1xuICAgICAgY29uc3QgZWxldmF0aW9uQnlEZXNjcmlwdGlvbiA9ICdsYXllci5lbGV2YXRpb25CeURlc2NyaXB0aW9uJztcbiAgICAgIGNvbnN0IGNvbG9yQnlEZXNjcmlwdGlvbiA9ICdsYXllci5jb2xvckJ5RGVzY3JpcHRpb24nO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICAgICAgey8qIENvbG9yICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIGxhYmVsPXsnbGF5ZXIuY29sb3InfSBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIDxMYXllckNvbG9yUmFuZ2VTZWxlY3RvciB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxBZ2dyU2NhbGVTZWxlY3RvclxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmNvbG9yfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlVmlzQ29uZmlnPXtsYXllckNoYW5uZWxDb25maWdQcm9wcy5vbkNoYW5nZVZpc0NvbmZpZ31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5jb2xvcn1cbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIHtsYXllci52aXNDb25maWdTZXR0aW5ncy5jb2xvckFnZ3JlZ2F0aW9uLmNvbmRpdGlvbihsYXllci5jb25maWcpID8gKFxuICAgICAgICAgICAgICAgIDxBZ2dyZWdhdGlvblR5cGVTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmNvbG9yQWdncmVnYXRpb259XG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj17Y29sb3JCeURlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY29sb3J9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIHtsYXllci52aXNDb25maWdTZXR0aW5ncy5wZXJjZW50aWxlICYmXG4gICAgICAgICAgICAgIGxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnBlcmNlbnRpbGUuY29uZGl0aW9uKGxheWVyLmNvbmZpZykgPyAoXG4gICAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnBlcmNlbnRpbGV9XG4gICAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXIgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLm9wYWNpdHl9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIENlbGwgc2l6ZSAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLnJhZGl1cyd9IGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlciB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Mud29ybGRVbml0U2l6ZX0gey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5jb3ZlcmFnZX0gey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogRWxldmF0aW9uICovfVxuICAgICAgICAgIHtsYXllci52aXNDb25maWdTZXR0aW5ncy5lbmFibGUzZCA/IChcbiAgICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5lbmFibGUzZH1cbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICBjb2xsYXBzaWJsZVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmVsZXZhdGlvblNjYWxlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD1cImxheWVyVmlzQ29uZmlncy5oZWlnaHRNdWx0aXBsaWVyXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zaXplfVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249e2VsZXZhdGlvbkJ5RGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IWVuYWJsZTNkfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEFnZ3JTY2FsZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnNpemV9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZVZpc0NvbmZpZz17bGF5ZXJDaGFubmVsQ29uZmlnUHJvcHMub25DaGFuZ2VWaXNDb25maWd9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2l6ZVJhbmdlfVxuICAgICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9XCJsYXllclZpc0NvbmZpZ3MuaGVpZ2h0UmFuZ2VcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAge2xheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnNpemVBZ2dyZWdhdGlvbi5jb25kaXRpb24obGF5ZXIuY29uZmlnKSA/IChcbiAgICAgICAgICAgICAgICAgIDxBZ2dyZWdhdGlvblR5cGVTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2l6ZUFnZ3JlZ2F0aW9ufVxuICAgICAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnNpemV9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIHtsYXllci52aXNDb25maWdTZXR0aW5ncy5lbGV2YXRpb25QZXJjZW50aWxlLmNvbmRpdGlvbihsYXllci5jb25maWcpID8gKFxuICAgICAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZWxldmF0aW9uUGVyY2VudGlsZX1cbiAgICAgICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9TdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogU2hhbiBtb3ZlIHRoZXNlIGludG8gbGF5ZXIgY2xhc3NcbiAgICBfcmVuZGVySGV4YWdvbklkTGF5ZXJDb25maWcoe1xuICAgICAgbGF5ZXIsXG4gICAgICB2aXNDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNoYW5uZWxDb25maWdQcm9wc1xuICAgIH0pIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICAgICB7LyogQ29sb3IgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYXllci5jb2xvcid9IGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAge2xheWVyLmNvbmZpZy5jb2xvckZpZWxkID8gKFxuICAgICAgICAgICAgICA8TGF5ZXJDb2xvclJhbmdlU2VsZWN0b3Igey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JTZWxlY3RvciB7Li4ubGF5ZXJDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5vcGFjaXR5fSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICAgIHsvKiBDb3ZlcmFnZSAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLmNvdmVyYWdlJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICB7IWxheWVyLmNvbmZpZy5jb3ZlcmFnZUZpZWxkID8gKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmNvdmVyYWdlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmNvdmVyYWdlUmFuZ2V9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY292ZXJhZ2V9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogaGVpZ2h0ICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZW5hYmxlM2R9XG4gICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICBjb2xsYXBzaWJsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnNpemV9XG4gICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZWxldmF0aW9uU2NhbGV9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnNpemVSYW5nZX1cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9XCJsYXllclZpc0NvbmZpZ3MuaGVpZ2h0UmFuZ2VcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgIDwvU3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICApO1xuICAgIH1cblxuICAgIF9yZW5kZXJBcmNMYXllckNvbmZpZyhhcmdzKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVuZGVyTGluZUxheWVyQ29uZmlnKGFyZ3MpO1xuICAgIH1cblxuICAgIF9yZW5kZXJMaW5lTGF5ZXJDb25maWcoe1xuICAgICAgbGF5ZXIsXG4gICAgICB2aXNDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNoYW5uZWxDb25maWdQcm9wc1xuICAgIH0pIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICAgICB7LyogQ29sb3IgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYXllci5jb2xvcid9IGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAge2xheWVyLmNvbmZpZy5jb2xvckZpZWxkID8gKFxuICAgICAgICAgICAgICA8TGF5ZXJDb2xvclJhbmdlU2VsZWN0b3Igey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPEFyY0xheWVyQ29sb3JTZWxlY3RvclxuICAgICAgICAgICAgICAgIGxheWVyPXtsYXllcn1cbiAgICAgICAgICAgICAgICBzZXRDb2xvclVJPXtsYXllckNvbmZpZ3VyYXRvclByb3BzLnNldENvbG9yVUl9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2VDb25maWc9e2xheWVyQ29uZmlndXJhdG9yUHJvcHMub25DaGFuZ2V9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2VWaXNDb25maWc9e3Zpc0NvbmZpZ3VyYXRvclByb3BzLm9uQ2hhbmdlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zb3VyY2VDb2xvcn1cbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXIgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLm9wYWNpdHl9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIHRoaWNrbmVzcyAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLnN0cm9rZSd9IGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAge2xheWVyLmNvbmZpZy5zaXplRmllbGQgPyAoXG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2l6ZVJhbmdlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17IWxheWVyLmNvbmZpZy5zaXplRmllbGR9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy50aGlja25lc3N9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuc2l6ZX1cbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICAgIHsvKiBlbGV2YXRpb24gc2NhbGUgKi99XG4gICAgICAgICAge2xheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmVsZXZhdGlvblNjYWxlID8gKFxuICAgICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9XCJsYXllclZpc0NvbmZpZ3MuZWxldmF0aW9uU2NhbGVcIiBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5lbGV2YXRpb25TY2FsZX1cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvU3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICApO1xuICAgIH1cblxuICAgIF9yZW5kZXJUcmlwTGF5ZXJDb25maWcoe1xuICAgICAgbGF5ZXIsXG4gICAgICB2aXNDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNoYW5uZWxDb25maWdQcm9wc1xuICAgIH0pIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWV0YToge2ZlYXR1cmVUeXBlcyA9IHt9fVxuICAgICAgfSA9IGxheWVyO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICAgICAgey8qIENvbG9yICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIGxhYmVsPXsnbGF5ZXIuY29sb3InfSBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuY29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yU2VsZWN0b3Igey4uLmxheWVyQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmNvbG9yfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlciB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Mub3BhY2l0eX0gey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogU3Ryb2tlIFdpZHRoICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gbGFiZWw9XCJsYXllci5zdHJva2VXaWR0aFwiIGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAge2xheWVyLmNvbmZpZy5zaXplRmllbGQgPyAoXG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2l6ZVJhbmdlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnRoaWNrbmVzc31cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnNpemV9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogVHJhaWwgTGVuZ3RoKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgIHsuLi4oZmVhdHVyZVR5cGVzLnBvbHlnb24gPyBsYXllci52aXNDb25maWdTZXR0aW5ncy5zdHJva2VkIDoge30pfVxuICAgICAgICAgICAgbGFiZWw9XCJsYXllci50cmFpbExlbmd0aFwiXG4gICAgICAgICAgICBkZXNjcmlwdGlvbj1cImxheWVyLnRyYWlsTGVuZ3RoRGVzY3JpcHRpb25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnRyYWlsTGVuZ3RofVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgICA8L1N0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBfcmVuZGVyR2VvanNvbkxheWVyQ29uZmlnKHtcbiAgICAgIGxheWVyLFxuICAgICAgdmlzQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDaGFubmVsQ29uZmlnUHJvcHNcbiAgICB9KSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1ldGE6IHtmZWF0dXJlVHlwZXMgPSB7fX0sXG4gICAgICAgIGNvbmZpZzoge3Zpc0NvbmZpZ31cbiAgICAgIH0gPSBsYXllcjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgICAgIHsvKiBGaWxsIENvbG9yICovfVxuICAgICAgICAgIHtmZWF0dXJlVHlwZXMucG9seWdvbiB8fCBmZWF0dXJlVHlwZXMucG9pbnQgPyAoXG4gICAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZmlsbGVkfVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGxhYmVsPVwibGF5ZXIuZmlsbENvbG9yXCJcbiAgICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2xheWVyLmNvbmZpZy5jb2xvckZpZWxkID8gKFxuICAgICAgICAgICAgICAgIDxMYXllckNvbG9yUmFuZ2VTZWxlY3RvciB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPExheWVyQ29sb3JTZWxlY3RvciB7Li4ubGF5ZXJDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5jb2xvcn1cbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXIgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLm9wYWNpdHl9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgIHsvKiBzdHJva2UgY29sb3IgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5zdHJva2VkfVxuICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgbGFiZWw9XCJsYXllci5zdHJva2VDb2xvclwiXG4gICAgICAgICAgICBjb2xsYXBzaWJsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuc3Ryb2tlQ29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gcHJvcGVydHk9XCJzdHJva2VDb2xvclJhbmdlXCIgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yU2VsZWN0b3JcbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcj17bGF5ZXIuY29uZmlnLnZpc0NvbmZpZy5zdHJva2VDb2xvcn1cbiAgICAgICAgICAgICAgICBwcm9wZXJ0eT1cInN0cm9rZUNvbG9yXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuc3Ryb2tlQ29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnN0cm9rZU9wYWNpdHl9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogU3Ryb2tlIFdpZHRoICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICB7Li4uKGZlYXR1cmVUeXBlcy5wb2x5Z29uID8gbGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc3Ryb2tlZCA6IHt9KX1cbiAgICAgICAgICAgIGxhYmVsPVwibGF5ZXIuc3Ryb2tlV2lkdGhcIlxuICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bGF5ZXIuY29uZmlnLnNpemVGaWVsZCA/IChcbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5zaXplUmFuZ2V9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MudGhpY2tuZXNzfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnNpemV9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogRWxldmF0aW9uICovfVxuICAgICAgICAgIHtmZWF0dXJlVHlwZXMucG9seWdvbiA/IChcbiAgICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmVuYWJsZTNkfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17IXZpc0NvbmZpZy5maWxsZWR9XG4gICAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZWxldmF0aW9uU2NhbGV9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5oZWlnaHR9XG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8VmlzQ29uZmlnU3dpdGNoIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLndpcmVmcmFtZX0gLz5cbiAgICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgIHsvKiBSYWRpdXMgKi99XG4gICAgICAgICAge2ZlYXR1cmVUeXBlcy5wb2ludCA/IChcbiAgICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIGxhYmVsPXsnbGF5ZXIucmFkaXVzJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICAgIHshbGF5ZXIuY29uZmlnLnJhZGl1c0ZpZWxkID8gKFxuICAgICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5yYWRpdXN9XG4gICAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17Qm9vbGVhbihsYXllci5jb25maWcucmFkaXVzRmllbGQpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnJhZGl1c1JhbmdlfVxuICAgICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFsYXllci5jb25maWcucmFkaXVzRmllbGR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5yYWRpdXN9XG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9TdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgX3JlbmRlcjNETGF5ZXJDb25maWcoe2xheWVyLCB2aXNDb25maWd1cmF0b3JQcm9wc30pIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLjNETW9kZWwnfSBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgIGFjY2VwdD1cIi5nbGIsLmdsdGZcIlxuICAgICAgICAgICAgICBvbkNoYW5nZT17ZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LmZpbGVzICYmIGUudGFyZ2V0LmZpbGVzWzBdKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGUudGFyZ2V0LmZpbGVzWzBdKTtcbiAgICAgICAgICAgICAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLm9uQ2hhbmdlKHtzY2VuZWdyYXBoOiB1cmx9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLjNETW9kZWxPcHRpb25zJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5zaXplU2NhbGV9XG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmFuZ2xlWH1cbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuYW5nbGVZfVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5hbmdsZVp9XG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICApO1xuICAgIH1cblxuICAgIF9yZW5kZXJTMkxheWVyQ29uZmlnKHtcbiAgICAgIGxheWVyLFxuICAgICAgdmlzQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDaGFubmVsQ29uZmlnUHJvcHNcbiAgICB9KSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGNvbmZpZzoge3Zpc0NvbmZpZ31cbiAgICAgIH0gPSBsYXllcjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgICAgIHsvKiBDb2xvciAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmZpbGxlZH1cbiAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgIGxhYmVsPVwibGF5ZXIuZmlsbENvbG9yXCJcbiAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgPlxuICAgICAgICAgICAge2xheWVyLmNvbmZpZy5jb2xvckZpZWxkID8gKFxuICAgICAgICAgICAgICA8TGF5ZXJDb2xvclJhbmdlU2VsZWN0b3Igey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JTZWxlY3RvciB7Li4ubGF5ZXJDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5vcGFjaXR5fSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICAgIHsvKiBTdHJva2UgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5zdHJva2VkfVxuICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgbGFiZWw9XCJsYXllci5zdHJva2VDb2xvclwiXG4gICAgICAgICAgICBjb2xsYXBzaWJsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuc3Ryb2tlQ29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gcHJvcGVydHk9XCJzdHJva2VDb2xvclJhbmdlXCIgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yU2VsZWN0b3JcbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcj17bGF5ZXIuY29uZmlnLnZpc0NvbmZpZy5zdHJva2VDb2xvcn1cbiAgICAgICAgICAgICAgICBwcm9wZXJ0eT1cInN0cm9rZUNvbG9yXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuc3Ryb2tlQ29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogU3Ryb2tlIFdpZHRoICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gbGFiZWw9XCJsYXllci5zdHJva2VXaWR0aFwiIGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAge2xheWVyLmNvbmZpZy5zaXplRmllbGQgPyAoXG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2l6ZVJhbmdlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnRoaWNrbmVzc31cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zaXplfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIEVsZXZhdGlvbiAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmVuYWJsZTNkfVxuICAgICAgICAgICAgZGlzYWJsZWQ9eyF2aXNDb25maWcuZmlsbGVkfVxuICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5oZWlnaHR9XG4gICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5lbGV2YXRpb25TY2FsZX1cbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICBsYWJlbD1cImxheWVyVmlzQ29uZmlncy5lbGV2YXRpb25TY2FsZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmhlaWdodFJhbmdlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD1cImxheWVyVmlzQ29uZmlncy5oZWlnaHRSYW5nZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTd2l0Y2ggey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Mud2lyZWZyYW1lfSAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgIDwvU3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtsYXllciwgZGF0YXNldHMsIHVwZGF0ZUxheWVyQ29uZmlnLCBsYXllclR5cGVPcHRpb25zLCB1cGRhdGVMYXllclR5cGV9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHtmaWVsZHMgPSBbXSwgZmllbGRQYWlycyA9IHVuZGVmaW5lZH0gPSBsYXllci5jb25maWcuZGF0YUlkXG4gICAgICAgID8gZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF1cbiAgICAgICAgOiB7fTtcbiAgICAgIGNvbnN0IHtjb25maWd9ID0gbGF5ZXI7XG5cbiAgICAgIGNvbnN0IHZpc0NvbmZpZ3VyYXRvclByb3BzID0gZ2V0VmlzQ29uZmlndXJhdG9yUHJvcHModGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBsYXllckNvbmZpZ3VyYXRvclByb3BzID0gZ2V0TGF5ZXJDb25maWd1cmF0b3JQcm9wcyh0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzID0gZ2V0TGF5ZXJDaGFubmVsQ29uZmlnUHJvcHModGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBkYXRhc2V0ID0gZ2V0TGF5ZXJEYXRhc2V0KGRhdGFzZXRzLCBsYXllcik7XG4gICAgICBjb25zdCByZW5kZXJUZW1wbGF0ZSA9IGxheWVyLnR5cGUgJiYgYF9yZW5kZXIke2NhcGl0YWxpemVGaXJzdExldHRlcihsYXllci50eXBlKX1MYXllckNvbmZpZ2A7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRMYXllckNvbmZpZ3VyYXRvcj5cbiAgICAgICAgICB7bGF5ZXIubGF5ZXJJbmZvTW9kYWwgPyAoXG4gICAgICAgICAgICA8SG93VG9CdXR0b24gb25DbGljaz17KCkgPT4gdGhpcy5wcm9wcy5vcGVuTW9kYWwobGF5ZXIubGF5ZXJJbmZvTW9kYWwpfSAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICBsYWJlbD17J2xheWVyLmJhc2ljJ31cbiAgICAgICAgICAgIGNvbGxhcHNpYmxlPXtPYmplY3Qua2V5cyhsYXllci5jb25maWcuY29sdW1ucykubGVuZ3RoID4gMH1cbiAgICAgICAgICAgIGV4cGFuZGVkPXshbGF5ZXIuaGFzQWxsQ29sdW1ucygpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxMYXllclR5cGVTZWxlY3RvclxuICAgICAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgICAgIGxheWVyPXtsYXllcn1cbiAgICAgICAgICAgICAgbGF5ZXJUeXBlT3B0aW9ucz17bGF5ZXJUeXBlT3B0aW9uc31cbiAgICAgICAgICAgICAgb25TZWxlY3Q9e3VwZGF0ZUxheWVyVHlwZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8TGF5ZXJWaXNpYmlsaXR5Qnlab29tIHVwZGF0ZUxheWVyQ29uZmlnPXt0aGlzLnByb3BzLnVwZGF0ZUxheWVyQ29uZmlnfSBsYXllcj17bGF5ZXJ9IC8+XG4gICAgICAgICAgICB7T2JqZWN0LmtleXMoZGF0YXNldHMpLmxlbmd0aCA+IDEgJiYgKFxuICAgICAgICAgICAgICA8U291cmNlRGF0YVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgICAgIGlkPXtsYXllci5pZH1cbiAgICAgICAgICAgICAgICBkYXRhSWQ9e2NvbmZpZy5kYXRhSWR9XG4gICAgICAgICAgICAgICAgb25TZWxlY3Q9e3ZhbHVlID0+IHVwZGF0ZUxheWVyQ29uZmlnKHtkYXRhSWQ6IHZhbHVlfSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge09iamVjdC5rZXlzKGxheWVyLmNvbmZpZy5jb2x1bW5zKS5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICAgIDxMYXllckNvbHVtbkNvbmZpZ1xuICAgICAgICAgICAgICAgICAgY29sdW1uUGFpcnM9e2xheWVyLmNvbHVtblBhaXJzfVxuICAgICAgICAgICAgICAgICAgY29sdW1ucz17bGF5ZXIuY29uZmlnLmNvbHVtbnN9XG4gICAgICAgICAgICAgICAgICBhc3NpZ25Db2x1bW5QYWlycz17bGF5ZXIuYXNzaWduQ29sdW1uUGFpcnMuYmluZChsYXllcil9XG4gICAgICAgICAgICAgICAgICBhc3NpZ25Db2x1bW49e2xheWVyLmFzc2lnbkNvbHVtbi5iaW5kKGxheWVyKX1cbiAgICAgICAgICAgICAgICAgIGNvbHVtbkxhYmVscz17bGF5ZXIuY29sdW1uTGFiZWxzfVxuICAgICAgICAgICAgICAgICAgZmllbGRzPXtmaWVsZHN9XG4gICAgICAgICAgICAgICAgICBmaWVsZFBhaXJzPXtmaWVsZFBhaXJzfVxuICAgICAgICAgICAgICAgICAgdXBkYXRlTGF5ZXJDb25maWc9e3VwZGF0ZUxheWVyQ29uZmlnfVxuICAgICAgICAgICAgICAgICAgdXBkYXRlTGF5ZXJUeXBlPXt0aGlzLnByb3BzLnVwZGF0ZUxheWVyVHlwZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICAge3RoaXNbcmVuZGVyVGVtcGxhdGVdICYmXG4gICAgICAgICAgICB0aGlzW3JlbmRlclRlbXBsYXRlXSh7XG4gICAgICAgICAgICAgIGxheWVyLFxuICAgICAgICAgICAgICBkYXRhc2V0LFxuICAgICAgICAgICAgICB2aXNDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgICAgICAgICAgbGF5ZXJDaGFubmVsQ29uZmlnUHJvcHMsXG4gICAgICAgICAgICAgIGxheWVyQ29uZmlndXJhdG9yUHJvcHNcbiAgICAgICAgICAgIH0pfVxuICAgICAgICA8L1N0eWxlZExheWVyQ29uZmlndXJhdG9yPlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gTGF5ZXJDb25maWd1cmF0b3I7XG59XG4vKlxuICogQ29tcG9uZW50aXplIGNvbmZpZyBjb21wb25lbnQgaW50byBwdXJlIGZ1bmN0aW9uYWwgY29tcG9uZW50c1xuICovXG5cbmNvbnN0IFN0eWxlZEhvd1RvQnV0dG9uID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMTJweDtcbiAgdG9wOiAtNHB4O1xuYDtcblxuZXhwb3J0IGNvbnN0IEhvd1RvQnV0dG9uID0gKHtvbkNsaWNrfSkgPT4gKFxuICA8U3R5bGVkSG93VG9CdXR0b24+XG4gICAgPEJ1dHRvbiBsaW5rIHNtYWxsIG9uQ2xpY2s9e29uQ2xpY2t9PlxuICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9eydsYXllckNvbmZpZ3VyYXRpb24uaG93VG8nfSAvPlxuICAgIDwvQnV0dG9uPlxuICA8L1N0eWxlZEhvd1RvQnV0dG9uPlxuKTtcblxuTGF5ZXJDb2xvclNlbGVjdG9yRmFjdG9yeS5kZXBzID0gW0NvbG9yU2VsZWN0b3JGYWN0b3J5XTtcbmV4cG9ydCBmdW5jdGlvbiBMYXllckNvbG9yU2VsZWN0b3JGYWN0b3J5KENvbG9yU2VsZWN0b3IpIHtcbiAgY2xhc3MgTGF5ZXJDb2xvclNlbGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7bGF5ZXIsIG9uQ2hhbmdlLCBzZWxlY3RlZENvbG9yLCBwcm9wZXJ0eSA9ICdjb2xvcicsIHNldENvbG9yVUl9ID0gdGhpcy5wcm9wcztcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgIDxQYW5lbExhYmVsPlxuICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJsYXllci5jb2xvclwiIC8+XG4gICAgICAgICAgPC9QYW5lbExhYmVsPlxuICAgICAgICAgIDxDb2xvclNlbGVjdG9yXG4gICAgICAgICAgICBjb2xvclNldHM9e1tcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3I6IHNlbGVjdGVkQ29sb3IgfHwgbGF5ZXIuY29uZmlnLmNvbG9yLFxuICAgICAgICAgICAgICAgIHNldENvbG9yOiByZ2JWYWx1ZSA9PiBvbkNoYW5nZSh7W3Byb3BlcnR5XTogcmdiVmFsdWV9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdfVxuICAgICAgICAgICAgY29sb3JVST17bGF5ZXIuY29uZmlnLmNvbG9yVUlbcHJvcGVydHldfVxuICAgICAgICAgICAgc2V0Q29sb3JVST17bmV3Q29uZmlnID0+IHNldENvbG9yVUkocHJvcGVydHksIG5ld0NvbmZpZyl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gTGF5ZXJDb2xvclNlbGVjdG9yO1xufVxuXG5BcmNMYXllckNvbG9yU2VsZWN0b3JGYWN0b3J5LmRlcHMgPSBbQ29sb3JTZWxlY3RvckZhY3RvcnldO1xuZXhwb3J0IGZ1bmN0aW9uIEFyY0xheWVyQ29sb3JTZWxlY3RvckZhY3RvcnkoQ29sb3JTZWxlY3Rvcikge1xuICBjbGFzcyBBcmNMYXllckNvbG9yU2VsZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtsYXllciwgb25DaGFuZ2VDb25maWcsIG9uQ2hhbmdlVmlzQ29uZmlnLCBwcm9wZXJ0eSA9ICdjb2xvcicsIHNldENvbG9yVUl9ID0gdGhpcy5wcm9wcztcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgIDxQYW5lbExhYmVsPlxuICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJsYXllci5jb2xvclJhbmdlXCIgLz5cbiAgICAgICAgICA8L1BhbmVsTGFiZWw+XG4gICAgICAgICAgPENvbG9yU2VsZWN0b3JcbiAgICAgICAgICAgIGNvbG9yU2V0cz17W1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcjogbGF5ZXIuY29uZmlnLmNvbG9yLFxuICAgICAgICAgICAgICAgIHNldENvbG9yOiByZ2JWYWx1ZSA9PiBvbkNoYW5nZUNvbmZpZyh7Y29sb3I6IHJnYlZhbHVlfSksXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdTb3VyY2UnXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvbG9yOiBsYXllci5jb25maWcudmlzQ29uZmlnLnRhcmdldENvbG9yIHx8IGxheWVyLmNvbmZpZy5jb2xvcixcbiAgICAgICAgICAgICAgICBzZXRDb2xvcjogcmdiVmFsdWUgPT4gb25DaGFuZ2VWaXNDb25maWcoe3RhcmdldENvbG9yOiByZ2JWYWx1ZX0pLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnVGFyZ2V0J1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdfVxuICAgICAgICAgICAgY29sb3JVST17bGF5ZXIuY29uZmlnLmNvbG9yVUlbcHJvcGVydHldfVxuICAgICAgICAgICAgc2V0Q29sb3JVST17bmV3Q29uZmlnID0+IHNldENvbG9yVUkocHJvcGVydHksIG5ld0NvbmZpZyl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIEFyY0xheWVyQ29sb3JTZWxlY3Rvcjtcbn1cblxuTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3JGYWN0b3J5LmRlcHMgPSBbQ29sb3JTZWxlY3RvckZhY3RvcnldO1xuZXhwb3J0IGZ1bmN0aW9uIExheWVyQ29sb3JSYW5nZVNlbGVjdG9yRmFjdG9yeShDb2xvclNlbGVjdG9yKSB7XG4gIGNsYXNzIExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7bGF5ZXIsIG9uQ2hhbmdlLCBwcm9wZXJ0eSA9ICdjb2xvclJhbmdlJywgc2V0Q29sb3JVSX0gPSB0aGlzLnByb3BzO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFNpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgPFBhbmVsTGFiZWw+XG4gICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImxheWVyLmNvbG9yUmFuZ2VcIiAvPlxuICAgICAgICAgIDwvUGFuZWxMYWJlbD5cbiAgICAgICAgICA8Q29sb3JTZWxlY3RvclxuICAgICAgICAgICAgY29sb3JTZXRzPXtbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvbG9yOiBsYXllci5jb25maWcudmlzQ29uZmlnW3Byb3BlcnR5XSxcbiAgICAgICAgICAgICAgICBpc1JhbmdlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNldENvbG9yOiBjb2xvclJhbmdlID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHtjb2xvck1hcH0gPSBsYXllci5jb25maWcudmlzQ29uZmlnW3Byb3BlcnR5XTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbG9yUmFuZ2VVcGRhdGVkID0gY29sb3JNYXBcbiAgICAgICAgICAgICAgICAgICAgPyBsYXllci51cGRhdGVDb2xvck1hcChwcm9wZXJ0eSwgY29sb3JNYXAsIGNvbG9yUmFuZ2UpXG4gICAgICAgICAgICAgICAgICAgIDogY29sb3JSYW5nZTtcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlKHtbcHJvcGVydHldOiBjb2xvclJhbmdlVXBkYXRlZH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXX1cbiAgICAgICAgICAgIGNvbG9yVUk9e2xheWVyLmNvbmZpZy5jb2xvclVJW3Byb3BlcnR5XX1cbiAgICAgICAgICAgIHNldENvbG9yVUk9e25ld0NvbmZpZyA9PiBzZXRDb2xvclVJKHByb3BlcnR5LCBuZXdDb25maWcpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHJldHVybiBMYXllckNvbG9yUmFuZ2VTZWxlY3Rvcjtcbn1cblxuQ2hhbm5lbEJ5VmFsdWVTZWxlY3RvckZhY3RvcnkuZGVwcyA9IFtWaXNDb25maWdCeUZpZWxkU2VsZWN0b3JGYWN0b3J5XTtcbmV4cG9ydCBmdW5jdGlvbiBDaGFubmVsQnlWYWx1ZVNlbGVjdG9yRmFjdG9yeShWaXNDb25maWdCeUZpZWxkU2VsZWN0b3IpIHtcbiAgY29uc3QgQ2hhbm5lbEJ5VmFsdWVTZWxlY3RvciA9ICh7XG4gICAgbGF5ZXIsXG4gICAgY2hhbm5lbCxcbiAgICBvbkNoYW5nZSxcbiAgICBvbkNoYW5nZVZpc0NvbmZpZyxcbiAgICBmaWVsZHMsXG4gICAgZmllbGRzQWdncmVnYXRlZCxcbiAgICBkZXNjcmlwdGlvbixcbiAgICBpc0xvYWRpbmdcbiAgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGNoYW5uZWxTY2FsZVR5cGUsXG4gICAgICBkb21haW4sXG4gICAgICBmaWVsZCxcbiAgICAgIGFnZ3JlZ2F0aW9uLFxuICAgICAga2V5LFxuICAgICAgcHJvcGVydHksXG4gICAgICByYW5nZSxcbiAgICAgIHNjYWxlLFxuICAgICAgZGVmYXVsdE1lYXN1cmUsXG4gICAgICBzdXBwb3J0ZWRGaWVsZFR5cGVzXG4gICAgfSA9IGNoYW5uZWw7XG4gICAgY29uc3QgY2hhbm5lbFN1cHBvcnRlZEZpZWxkVHlwZXMgPVxuICAgICAgc3VwcG9ydGVkRmllbGRUeXBlcyB8fCBDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFNbY2hhbm5lbFNjYWxlVHlwZV07XG4gICAgY29uc3Qgc3VwcG9ydGVkRmllbGRzID0gZmllbGRzLmZpbHRlcigoe3R5cGV9KSA9PiBjaGFubmVsU3VwcG9ydGVkRmllbGRUeXBlcy5pbmNsdWRlcyh0eXBlKSk7XG4gICAgY29uc3Qgc2NhbGVPcHRpb25zID0gbGF5ZXIuZ2V0U2NhbGVPcHRpb25zKGNoYW5uZWwua2V5KTtcbiAgICBjb25zdCBzaG93U2NhbGVDdXN0b21pemFibGUgPVxuICAgICAgY2hhbm5lbFNjYWxlVHlwZSA9PT0gQ0hBTk5FTF9TQ0FMRVMuY29sb3IgJiZcbiAgICAgIGxheWVyLmNvbmZpZ1tzY2FsZV0gJiZcbiAgICAgIEJvb2xlYW4obGF5ZXIuY29uZmlnW2ZpZWxkXSkgJiZcbiAgICAgIHNjYWxlT3B0aW9ucy5sZW5ndGggPiAwO1xuICAgIGNvbnN0IHNob3dTY2FsZSA9XG4gICAgICAhc2hvd1NjYWxlQ3VzdG9taXphYmxlICYmXG4gICAgICAhbGF5ZXIuaXNBZ2dyZWdhdGVkICYmXG4gICAgICBsYXllci5jb25maWdbc2NhbGVdICYmXG4gICAgICBzY2FsZU9wdGlvbnMubGVuZ3RoID4gMTtcbiAgICBjb25zdCBkZWZhdWx0RGVzY3JpcHRpb24gPSAnbGF5ZXJDb25maWd1cmF0aW9uLmRlZmF1bHREZXNjcmlwdGlvbic7XG4gICAgY29uc3QgdmlzUmFuZ2UgPSBsYXllci5jb25maWcudmlzQ29uZmlnW3JhbmdlXTtcbiAgICBjb25zdCBhZ2dyZWdhdG9yID0gbGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1thZ2dyZWdhdGlvbl07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFZpc0NvbmZpZ0J5RmllbGRTZWxlY3RvclxuICAgICAgICBjaGFubmVsPXtjaGFubmVsLmtleX1cbiAgICAgICAgZGVzY3JpcHRpb249e2Rlc2NyaXB0aW9uIHx8IGRlZmF1bHREZXNjcmlwdGlvbn1cbiAgICAgICAgZG9tYWluPXtsYXllci5jb25maWdbZG9tYWluXX1cbiAgICAgICAgZmllbGRzPXtzdXBwb3J0ZWRGaWVsZHN9XG4gICAgICAgIGFnZ3JlZ2F0b3I9e2FnZ3JlZ2F0b3J9XG4gICAgICAgIGZpZWxkc0FnZ3JlZ2F0ZWQ9e2ZpZWxkc0FnZ3JlZ2F0ZWR9XG4gICAgICAgIGlkPXtsYXllci5pZH1cbiAgICAgICAga2V5PXtgJHtrZXl9LWNoYW5uZWwtc2VsZWN0b3JgfVxuICAgICAgICBwcm9wZXJ0eT17cHJvcGVydHl9XG4gICAgICAgIHBsYWNlaG9sZGVyPXtkZWZhdWx0TWVhc3VyZSB8fCAncGxhY2Vob2xkZXIuc2VsZWN0RmllbGQnfVxuICAgICAgICByYW5nZT17dmlzUmFuZ2V9XG4gICAgICAgIHNjYWxlT3B0aW9ucz17c2NhbGVPcHRpb25zfVxuICAgICAgICBzY2FsZVR5cGU9e3NjYWxlID8gbGF5ZXIuY29uZmlnW3NjYWxlXSA6IG51bGx9XG4gICAgICAgIHNlbGVjdGVkRmllbGQ9e2xheWVyLmNvbmZpZ1tmaWVsZF19XG4gICAgICAgIHNob3dTY2FsZT17c2hvd1NjYWxlfVxuICAgICAgICBzaG93U2NhbGVDdXN0b21pemFibGU9e3Nob3dTY2FsZUN1c3RvbWl6YWJsZX1cbiAgICAgICAgdXBkYXRlRmllbGQ9e3ZhbCA9PiB7XG4gICAgICAgICAgaWYgKHZpc1JhbmdlPy5jb2xvck1hcCkge1xuICAgICAgICAgICAgb25DaGFuZ2VWaXNDb25maWcoe1tyYW5nZV06IHsuLi52aXNSYW5nZSwgY29sb3JNYXA6IHVuZGVmaW5lZH19KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb25DaGFuZ2UoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFtmaWVsZF06IHZhbCxcbiAgICAgICAgICAgICAgLi4uKGZpZWxkc0FnZ3JlZ2F0ZWQgJiYge1xuICAgICAgICAgICAgICAgIHZpc0NvbmZpZzoge1xuICAgICAgICAgICAgICAgICAgLi4ubGF5ZXIuY29uZmlnLnZpc0NvbmZpZyxcbiAgICAgICAgICAgICAgICAgIFthZ2dyZWdhdGlvbl06IHZhbD8uc2VsZWN0ZWRBZ2dyZWdhdG9yXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGtleVxuICAgICAgICAgICk7XG4gICAgICAgIH19XG4gICAgICAgIHVwZGF0ZVNjYWxlPXt2YWwgPT4gb25DaGFuZ2Uoe1tzY2FsZV06IHZhbH0sIGtleSl9XG4gICAgICAgIHVwZGF0ZUN1c3RvbVBhbGV0dGU9e2NvbG9yTWFwID0+IG9uQ2hhbmdlVmlzQ29uZmlnKHtbcmFuZ2VdOiB7Li4udmlzUmFuZ2UsIGNvbG9yTWFwfX0pfVxuICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgIC8+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gQ2hhbm5lbEJ5VmFsdWVTZWxlY3Rvcjtcbn1cblxuQWdnclNjYWxlU2VsZWN0b3JGYWN0b3J5LmRlcHMgPSBbQ29sb3JEaW1lbnNpb25TY2FsZVNlbGVjdG9yRmFjdG9yeV07XG5cbmZ1bmN0aW9uIEFnZ3JTY2FsZVNlbGVjdG9yRmFjdG9yeShDb2xvckRpbWVuc2lvblNjYWxlU2VsZWN0b3IpIHtcbiAgY2xhc3MgQWdnclNjYWxlU2VsZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtjaGFubmVsLCBsYXllciwgb25DaGFuZ2UsIG9uQ2hhbmdlVmlzQ29uZmlnfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCB7c2NhbGUsIGtleSwgY2hhbm5lbFNjYWxlVHlwZSwgZG9tYWluLCByYW5nZX0gPSBjaGFubmVsO1xuICAgICAgY29uc3Qgc2NhbGVPcHRpb25zID0gbGF5ZXIuZ2V0U2NhbGVPcHRpb25zKGtleSk7XG4gICAgICBjb25zdCB2aXNSYW5nZSA9IGxheWVyLmNvbmZpZy52aXNDb25maWdbcmFuZ2VdO1xuICAgICAgY29uc3Qgc2hvd1NjYWxlQ3VzdG9taXphYmxlID1cbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZSA9PT0gQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyICYmXG4gICAgICAgIEFycmF5LmlzQXJyYXkoc2NhbGVPcHRpb25zKSAmJlxuICAgICAgICBzY2FsZU9wdGlvbnMubGVuZ3RoID4gMDtcbiAgICAgIGNvbnN0IHNob3dTY2FsZSA9IEFycmF5LmlzQXJyYXkoc2NhbGVPcHRpb25zKSAmJiBzY2FsZU9wdGlvbnMubGVuZ3RoID4gMTtcblxuICAgICAgaWYgKHNob3dTY2FsZUN1c3RvbWl6YWJsZSkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgICAgPENvbG9yRGltZW5zaW9uU2NhbGVTZWxlY3RvclxuICAgICAgICAgICAgICBsYWJlbD17YCR7a2V5fSBTY2FsZWB9XG4gICAgICAgICAgICAgIHNjYWxlVHlwZT17bGF5ZXIuY29uZmlnW3NjYWxlXX1cbiAgICAgICAgICAgICAgb3B0aW9ucz17c2NhbGVPcHRpb25zfVxuICAgICAgICAgICAgICBkb21haW49e2xheWVyLmNvbmZpZ1tkb21haW5dfVxuICAgICAgICAgICAgICByYW5nZT17dmlzUmFuZ2V9XG4gICAgICAgICAgICAgIG9uU2VsZWN0PXt2YWwgPT4gb25DaGFuZ2Uoe1tzY2FsZV06IHZhbH0sIGtleSl9XG4gICAgICAgICAgICAgIG9uU2V0Q3VzdG9tUGFsZXR0ZT17Y29sb3JNYXAgPT4gb25DaGFuZ2VWaXNDb25maWcoe1tyYW5nZV06IHsuLi52aXNSYW5nZSwgY29sb3JNYXB9fSl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNob3dTY2FsZSkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxEaW1lbnNpb25TY2FsZVNlbGVjdG9yXG4gICAgICAgICAgICBsYWJlbD17YCR7a2V5fSBTY2FsZWB9XG4gICAgICAgICAgICBvcHRpb25zPXtzY2FsZU9wdGlvbnN9XG4gICAgICAgICAgICBzY2FsZVR5cGU9e2xheWVyLmNvbmZpZ1tzY2FsZV19XG4gICAgICAgICAgICBvblNlbGVjdD17dmFsID0+IG9uQ2hhbmdlKHtbc2NhbGVdOiB2YWx9LCBrZXkpfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluamVjdEludGwoQWdnclNjYWxlU2VsZWN0b3IpO1xufVxuXG5leHBvcnQgY29uc3QgQWdncmVnYXRpb25UeXBlU2VsZWN0b3IgPSAoe2xheWVyLCBjaGFubmVsLCBvbkNoYW5nZX0pID0+IHtcbiAgY29uc3Qge2ZpZWxkLCBhZ2dyZWdhdGlvbiwga2V5fSA9IGNoYW5uZWw7XG4gIGNvbnN0IHNlbGVjdGVkRmllbGQgPSBsYXllci5jb25maWdbZmllbGRdO1xuICBjb25zdCB7dmlzQ29uZmlnfSA9IGxheWVyLmNvbmZpZztcblxuICAvLyBhZ2dyZWdhdGlvbiBzaG91bGQgb25seSBiZSBzZWxlY3RhYmxlIHdoZW4gZmllbGQgaXMgc2VsZWN0ZWRcbiAgY29uc3QgYWdncmVnYXRpb25PcHRpb25zID0gbGF5ZXIuZ2V0QWdncmVnYXRpb25PcHRpb25zKGtleSk7XG5cbiAgcmV0dXJuIChcbiAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgIDxQYW5lbExhYmVsPlxuICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J2xheWVyLmFnZ3JlZ2F0ZUJ5J30gdmFsdWVzPXt7ZmllbGQ6IHNlbGVjdGVkRmllbGQubmFtZX19IC8+XG4gICAgICA8L1BhbmVsTGFiZWw+XG4gICAgICA8SXRlbVNlbGVjdG9yXG4gICAgICAgIHNlbGVjdGVkSXRlbXM9e3Zpc0NvbmZpZ1thZ2dyZWdhdGlvbl19XG4gICAgICAgIG9wdGlvbnM9e2FnZ3JlZ2F0aW9uT3B0aW9uc31cbiAgICAgICAgbXVsdGlTZWxlY3Q9e2ZhbHNlfVxuICAgICAgICBzZWFyY2hhYmxlPXtmYWxzZX1cbiAgICAgICAgb25DaGFuZ2U9e3ZhbHVlID0+XG4gICAgICAgICAgb25DaGFuZ2UoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHZpc0NvbmZpZzoge1xuICAgICAgICAgICAgICAgIC4uLmxheWVyLmNvbmZpZy52aXNDb25maWcsXG4gICAgICAgICAgICAgICAgW2FnZ3JlZ2F0aW9uXTogdmFsdWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNoYW5uZWwua2V5XG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAvPlxuICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgKTtcbn07XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1wYXJhbXMgKi9cbiJdfQ==