kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
165 lines (164 loc) • 35.4 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _src = require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/src/localization/src");
var _react = _interopRequireWildcard(require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/node_modules/react"));
var _styledComponents = _interopRequireDefault(require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/node_modules/styled-components"));
var _icons = require("../../common/icons");
var _itemSelector = _interopRequireDefault(require("../../common/item-selector/item-selector"));
var _rangeSlider = _interopRequireDefault(require("../../common/range-slider"));
var _styledComponents2 = require("../../common/styled-components");
var _switch = _interopRequireDefault(require("../../common/switch"));
var _layerConfigGroup = _interopRequireWildcard(require("./layer-config-group"));
var _src2 = require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/src/constants/src");
var _fieldSelector = _interopRequireDefault(require("../../common/field-selector"));
var _colorSelector = _interopRequireDefault(require("./color-selector"));
var _templateObject; // SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
var SwitchWrapper = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n line-height: 11px;\n margin-bottom: 8px;\n"])));
TextLabelPanelFactory.deps = [_rangeSlider["default"], _layerConfigGroup["default"], _fieldSelector["default"], _colorSelector["default"]];
function TextLabelPanelFactory(RangeSlider, LayerConfigGroup, FieldSelector, ColorSelector) {
var TextLabelPanel = /*#__PURE__*/function (_Component) {
function TextLabelPanel() {
(0, _classCallCheck2["default"])(this, TextLabelPanel);
return _callSuper(this, TextLabelPanel, arguments);
}
(0, _inherits2["default"])(TextLabelPanel, _Component);
return (0, _createClass2["default"])(TextLabelPanel, [{
key: "render",
value: function render() {
var _this = this;
var _this$props = this.props,
updateLayerTextLabel = _this$props.updateLayerTextLabel,
textLabel = _this$props.textLabel,
fields = _this$props.fields;
var currentFields = textLabel.map(function (tl) {
return tl.field && tl.field.name;
}).filter(function (d) {
return Boolean(d);
});
return /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, {
label: 'panel.text.label',
collapsible: true
}, /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleHeader, null, /*#__PURE__*/_react["default"].createElement(FieldSelector, {
fields: fields,
value: currentFields,
onSelect: function onSelect(selected) {
return updateLayerTextLabel('all', 'fields', selected);
},
multiSelect: true
})), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, textLabel.map(function (tl, idx) {
return /*#__PURE__*/_react["default"].createElement("div", {
key: tl.field ? tl.field.name : "null-".concat(idx)
}, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabel, null, /*#__PURE__*/_react["default"].createElement(_src.FormattedMessage, {
id: 'panel.text.labelWithId',
values: {
labelId: idx + 1
}
})), /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(FieldSelector, {
fields: fields,
value: tl.field && tl.field.name || 'placeholder.selectField',
placeholder: 'placeholder.empty',
onSelect: function onSelect(v) {
return updateLayerTextLabel(idx, 'field', v);
},
erasable: true
})), /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabel, null, /*#__PURE__*/_react["default"].createElement(_src.FormattedMessage, {
id: "panel.text.fontSize"
})), /*#__PURE__*/_react["default"].createElement(RangeSlider, (0, _extends2["default"])({}, _src2.LAYER_TEXT_CONFIGS.fontSize, {
value1: tl.size,
isRanged: false,
onChange: function onChange(v) {
return updateLayerTextLabel(idx, 'size', v[1]);
}
}))), /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabel, null, /*#__PURE__*/_react["default"].createElement(_src.FormattedMessage, {
id: "panel.text.fontColor"
})), /*#__PURE__*/_react["default"].createElement(ColorSelector, {
colorSets: [{
selectedColor: tl.color,
setColor: function setColor(v) {
return updateLayerTextLabel(idx, 'color', v);
}
}]
})), /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabel, null, /*#__PURE__*/_react["default"].createElement(_src.FormattedMessage, {
id: "panel.text.outlineWidth"
})), /*#__PURE__*/_react["default"].createElement(RangeSlider, (0, _extends2["default"])({}, _src2.LAYER_TEXT_CONFIGS.outlineWidth, {
value1: tl.outlineWidth,
isRanged: false,
onChange: function onChange(v) {
return updateLayerTextLabel(idx, 'outlineWidth', v[1]);
}
}))), /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabel, null, /*#__PURE__*/_react["default"].createElement(_src.FormattedMessage, {
id: "panel.text.outlineColor"
})), /*#__PURE__*/_react["default"].createElement(ColorSelector, {
colorSets: [{
selectedColor: tl.outlineColor,
setColor: function setColor(v) {
return updateLayerTextLabel(idx, 'outlineColor', v);
}
}],
useOpacity: true
})), /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(SwitchWrapper, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabel, null, /*#__PURE__*/_react["default"].createElement(_src.FormattedMessage, {
id: "panel.text.backgroundColor"
})), /*#__PURE__*/_react["default"].createElement(_switch["default"], {
checked: tl.background,
id: "".concat(_this.props.id, "-textBackgroundEnabled-").concat(idx),
onChange: function onChange() {
return updateLayerTextLabel(idx, 'background', !tl.background);
}
})), /*#__PURE__*/_react["default"].createElement(ColorSelector, {
colorSets: [{
selectedColor: tl.backgroundColor,
setColor: function setColor(v) {
return updateLayerTextLabel(idx, 'backgroundColor', v);
}
}],
useOpacity: true,
disabled: !tl.background
})), /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.SpaceBetweenFlexbox, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.SBFlexboxItem, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabel, null, /*#__PURE__*/_react["default"].createElement(_src.FormattedMessage, {
id: "panel.text.textAnchor"
})), /*#__PURE__*/_react["default"].createElement(_itemSelector["default"], (0, _extends2["default"])({}, _src2.LAYER_TEXT_CONFIGS.textAnchor, {
selectedItems: tl.anchor,
onChange: function onChange(val) {
return updateLayerTextLabel(idx, 'anchor', val);
}
}))), /*#__PURE__*/_react["default"].createElement(_styledComponents2.SBFlexboxItem, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabel, null, /*#__PURE__*/_react["default"].createElement(_src.FormattedMessage, {
id: "panel.text.alignment"
})), /*#__PURE__*/_react["default"].createElement(_itemSelector["default"], (0, _extends2["default"])({}, _src2.LAYER_TEXT_CONFIGS.textAlignment, {
selectedItems: tl.alignment,
onChange: function onChange(val) {
return updateLayerTextLabel(idx, 'alignment', val);
}
}))))));
}), /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.Button, {
link: true,
onClick: function onClick() {
return updateLayerTextLabel(textLabel.length, '', null);
}
}, /*#__PURE__*/_react["default"].createElement(_icons.Add, {
height: "12px"
}), /*#__PURE__*/_react["default"].createElement(_src.FormattedMessage, {
id: "panel.text.addMoreLabel"
})))));
}
}]);
}(_react.Component);
return TextLabelPanel;
}
var _default = exports["default"] = TextLabelPanelFactory;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3JjIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX3N0eWxlZENvbXBvbmVudHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2ljb25zIiwiX2l0ZW1TZWxlY3RvciIsIl9yYW5nZVNsaWRlciIsIl9zdHlsZWRDb21wb25lbnRzMiIsIl9zd2l0Y2giLCJfbGF5ZXJDb25maWdHcm91cCIsIl9zcmMyIiwiX2ZpZWxkU2VsZWN0b3IiLCJfY29sb3JTZWxlY3RvciIsIl90ZW1wbGF0ZU9iamVjdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9jYWxsU3VwZXIiLCJvIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiU3dpdGNoV3JhcHBlciIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwiVGV4dExhYmVsUGFuZWxGYWN0b3J5IiwiZGVwcyIsIlJhbmdlU2xpZGVyRmFjdG9yeSIsIkxheWVyQ29uZmlnR3JvdXBGYWN0b3J5IiwiRmllbGRTZWxlY3RvckZhY3RvcnkiLCJDb2xvclNlbGVjdG9yRmFjdG9yeSIsIlJhbmdlU2xpZGVyIiwiTGF5ZXJDb25maWdHcm91cCIsIkZpZWxkU2VsZWN0b3IiLCJDb2xvclNlbGVjdG9yIiwiVGV4dExhYmVsUGFuZWwiLCJfQ29tcG9uZW50IiwiX2NsYXNzQ2FsbENoZWNrMiIsImFyZ3VtZW50cyIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJyZW5kZXIiLCJfdGhpcyIsIl90aGlzJHByb3BzIiwicHJvcHMiLCJ1cGRhdGVMYXllclRleHRMYWJlbCIsInRleHRMYWJlbCIsImZpZWxkcyIsImN1cnJlbnRGaWVsZHMiLCJtYXAiLCJ0bCIsImZpZWxkIiwibmFtZSIsImZpbHRlciIsImQiLCJjcmVhdGVFbGVtZW50IiwibGFiZWwiLCJjb2xsYXBzaWJsZSIsIkNvbmZpZ0dyb3VwQ29sbGFwc2libGVIZWFkZXIiLCJvblNlbGVjdCIsInNlbGVjdGVkIiwibXVsdGlTZWxlY3QiLCJDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudCIsImlkeCIsImNvbmNhdCIsIlBhbmVsTGFiZWwiLCJGb3JtYXR0ZWRNZXNzYWdlIiwiaWQiLCJ2YWx1ZXMiLCJsYWJlbElkIiwiU2lkZVBhbmVsU2VjdGlvbiIsInBsYWNlaG9sZGVyIiwidiIsImVyYXNhYmxlIiwiX2V4dGVuZHMyIiwiTEFZRVJfVEVYVF9DT05GSUdTIiwiZm9udFNpemUiLCJ2YWx1ZTEiLCJzaXplIiwiaXNSYW5nZWQiLCJvbkNoYW5nZSIsImNvbG9yU2V0cyIsInNlbGVjdGVkQ29sb3IiLCJjb2xvciIsInNldENvbG9yIiwib3V0bGluZVdpZHRoIiwib3V0bGluZUNvbG9yIiwidXNlT3BhY2l0eSIsImNoZWNrZWQiLCJiYWNrZ3JvdW5kIiwiYmFja2dyb3VuZENvbG9yIiwiZGlzYWJsZWQiLCJTcGFjZUJldHdlZW5GbGV4Ym94IiwiU0JGbGV4Ym94SXRlbSIsInRleHRBbmNob3IiLCJzZWxlY3RlZEl0ZW1zIiwiYW5jaG9yIiwidmFsIiwidGV4dEFsaWdubWVudCIsImFsaWdubWVudCIsIkJ1dHRvbiIsImxpbmsiLCJvbkNsaWNrIiwibGVuZ3RoIiwiQWRkIiwiaGVpZ2h0IiwiQ29tcG9uZW50IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc3JjL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvdGV4dC1sYWJlbC1wYW5lbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtDb2xvclJhbmdlfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7Rm9ybWF0dGVkTWVzc2FnZX0gZnJvbSAnQGtlcGxlci5nbC9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IHtBZGR9IGZyb20gJy4uLy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQgSXRlbVNlbGVjdG9yIGZyb20gJy4uLy4uL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2l0ZW0tc2VsZWN0b3InO1xuaW1wb3J0IFJhbmdlU2xpZGVyRmFjdG9yeSBmcm9tICcuLi8uLi9jb21tb24vcmFuZ2Utc2xpZGVyJztcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgUGFuZWxMYWJlbCxcbiAgU0JGbGV4Ym94SXRlbSxcbiAgU2lkZVBhbmVsU2VjdGlvbixcbiAgU3BhY2VCZXR3ZWVuRmxleGJveFxufSBmcm9tICcuLi8uLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IFN3aXRjaCBmcm9tICcuLi8uLi9jb21tb24vc3dpdGNoJztcbmltcG9ydCBMYXllckNvbmZpZ0dyb3VwRmFjdG9yeSwge1xuICBDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudCxcbiAgQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUhlYWRlclxufSBmcm9tICcuL2xheWVyLWNvbmZpZy1ncm91cCc7XG5cbmltcG9ydCB7TEFZRVJfVEVYVF9DT05GSUdTfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0ZpZWxkLCBMYXllclRleHRMYWJlbCwgUkdCQUNvbG9yLCBSR0JDb2xvcn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQgRmllbGRTZWxlY3RvckZhY3RvcnkgZnJvbSAnLi4vLi4vY29tbW9uL2ZpZWxkLXNlbGVjdG9yJztcbmltcG9ydCBDb2xvclNlbGVjdG9yRmFjdG9yeSBmcm9tICcuL2NvbG9yLXNlbGVjdG9yJztcblxuY29uc3QgU3dpdGNoV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgbGluZS1oZWlnaHQ6IDExcHg7XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbmA7XG5cbnR5cGUgVGV4dExhYmVsUGFuZWxQcm9wcyA9IHtcbiAgaWQ/OiBzdHJpbmc7XG4gIGZpZWxkczogRmllbGRbXTtcbiAgdGV4dExhYmVsOiBMYXllclRleHRMYWJlbFtdO1xuICB1cGRhdGVMYXllclRleHRMYWJlbDogKGlkeDogbnVtYmVyIHwgJ2FsbCcsIHByb3A6IHN0cmluZywgdmFsdWU6IGFueSkgPT4gdm9pZDtcbn07XG5cblRleHRMYWJlbFBhbmVsRmFjdG9yeS5kZXBzID0gW1xuICBSYW5nZVNsaWRlckZhY3RvcnksXG4gIExheWVyQ29uZmlnR3JvdXBGYWN0b3J5LFxuICBGaWVsZFNlbGVjdG9yRmFjdG9yeSxcbiAgQ29sb3JTZWxlY3RvckZhY3Rvcnlcbl07XG5cbmZ1bmN0aW9uIFRleHRMYWJlbFBhbmVsRmFjdG9yeShcbiAgUmFuZ2VTbGlkZXI6IFJldHVyblR5cGU8dHlwZW9mIFJhbmdlU2xpZGVyRmFjdG9yeT4sXG4gIExheWVyQ29uZmlnR3JvdXA6IFJldHVyblR5cGU8dHlwZW9mIExheWVyQ29uZmlnR3JvdXBGYWN0b3J5PixcbiAgRmllbGRTZWxlY3RvcjogUmV0dXJuVHlwZTx0eXBlb2YgRmllbGRTZWxlY3RvckZhY3Rvcnk+LFxuICBDb2xvclNlbGVjdG9yOiBSZXR1cm5UeXBlPHR5cGVvZiBDb2xvclNlbGVjdG9yRmFjdG9yeT5cbik6IFJlYWN0LkNvbXBvbmVudFR5cGU8VGV4dExhYmVsUGFuZWxQcm9wcz4ge1xuICBjbGFzcyBUZXh0TGFiZWxQYW5lbCBleHRlbmRzIENvbXBvbmVudDxUZXh0TGFiZWxQYW5lbFByb3BzPiB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge3VwZGF0ZUxheWVyVGV4dExhYmVsLCB0ZXh0TGFiZWwsIGZpZWxkc30gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3QgY3VycmVudEZpZWxkcyA9IHRleHRMYWJlbC5tYXAodGwgPT4gdGwuZmllbGQgJiYgdGwuZmllbGQubmFtZSkuZmlsdGVyKGQgPT4gQm9vbGVhbihkKSk7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIGxhYmVsPXsncGFuZWwudGV4dC5sYWJlbCd9IGNvbGxhcHNpYmxlPlxuICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlSGVhZGVyPlxuICAgICAgICAgICAgPEZpZWxkU2VsZWN0b3JcbiAgICAgICAgICAgICAgZmllbGRzPXtmaWVsZHN9XG4gICAgICAgICAgICAgIHZhbHVlPXtjdXJyZW50RmllbGRzIGFzIHN0cmluZ1tdfVxuICAgICAgICAgICAgICBvblNlbGVjdD17c2VsZWN0ZWQgPT4gdXBkYXRlTGF5ZXJUZXh0TGFiZWwoJ2FsbCcsICdmaWVsZHMnLCBzZWxlY3RlZCl9XG4gICAgICAgICAgICAgIG11bHRpU2VsZWN0XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUhlYWRlcj5cbiAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICB7dGV4dExhYmVsLm1hcCgodGwsIGlkeCkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2IGtleT17dGwuZmllbGQgPyB0bC5maWVsZC5uYW1lIDogYG51bGwtJHtpZHh9YH0+XG4gICAgICAgICAgICAgICAgPFBhbmVsTGFiZWw+XG4gICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J3BhbmVsLnRleHQubGFiZWxXaXRoSWQnfSB2YWx1ZXM9e3tsYWJlbElkOiBpZHggKyAxfX0gLz5cbiAgICAgICAgICAgICAgICA8L1BhbmVsTGFiZWw+XG4gICAgICAgICAgICAgICAgPFNpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICA8RmllbGRTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgICBmaWVsZHM9e2ZpZWxkc31cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyh0bC5maWVsZCAmJiB0bC5maWVsZC5uYW1lKSB8fCAncGxhY2Vob2xkZXIuc2VsZWN0RmllbGQnfVxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17J3BsYWNlaG9sZGVyLmVtcHR5J31cbiAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3YgPT4gdXBkYXRlTGF5ZXJUZXh0TGFiZWwoaWR4LCAnZmllbGQnLCB2KX1cbiAgICAgICAgICAgICAgICAgICAgZXJhc2FibGVcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgPFBhbmVsTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwicGFuZWwudGV4dC5mb250U2l6ZVwiIC8+XG4gICAgICAgICAgICAgICAgICA8L1BhbmVsTGFiZWw+XG4gICAgICAgICAgICAgICAgICA8UmFuZ2VTbGlkZXJcbiAgICAgICAgICAgICAgICAgICAgey4uLkxBWUVSX1RFWFRfQ09ORklHUy5mb250U2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWUxPXt0bC5zaXplfVxuICAgICAgICAgICAgICAgICAgICBpc1JhbmdlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt2ID0+IHVwZGF0ZUxheWVyVGV4dExhYmVsKGlkeCwgJ3NpemUnLCB2WzFdKX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgPFBhbmVsTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwicGFuZWwudGV4dC5mb250Q29sb3JcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9QYW5lbExhYmVsPlxuICAgICAgICAgICAgICAgICAgPENvbG9yU2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgY29sb3JTZXRzPXtbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcjogdGwuY29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRDb2xvcjogKHY6IFJHQkNvbG9yIHwgUkdCQUNvbG9yIHwgQ29sb3JSYW5nZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlTGF5ZXJUZXh0TGFiZWwoaWR4LCAnY29sb3InLCB2KVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuXG4gICAgICAgICAgICAgICAgPFNpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICA8UGFuZWxMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJwYW5lbC50ZXh0Lm91dGxpbmVXaWR0aFwiIC8+XG4gICAgICAgICAgICAgICAgICA8L1BhbmVsTGFiZWw+XG4gICAgICAgICAgICAgICAgICA8UmFuZ2VTbGlkZXJcbiAgICAgICAgICAgICAgICAgICAgey4uLkxBWUVSX1RFWFRfQ09ORklHUy5vdXRsaW5lV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlMT17dGwub3V0bGluZVdpZHRofVxuICAgICAgICAgICAgICAgICAgICBpc1JhbmdlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt2ID0+IHVwZGF0ZUxheWVyVGV4dExhYmVsKGlkeCwgJ291dGxpbmVXaWR0aCcsIHZbMV0pfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgICAgICAgPFNpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICA8UGFuZWxMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJwYW5lbC50ZXh0Lm91dGxpbmVDb2xvclwiIC8+XG4gICAgICAgICAgICAgICAgICA8L1BhbmVsTGFiZWw+XG4gICAgICAgICAgICAgICAgICA8Q29sb3JTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgICBjb2xvclNldHM9e1tcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvbG9yOiB0bC5vdXRsaW5lQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRDb2xvcjogdiA9PiB1cGRhdGVMYXllclRleHRMYWJlbChpZHgsICdvdXRsaW5lQ29sb3InLCB2KVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgICAgICAgdXNlT3BhY2l0eT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuXG4gICAgICAgICAgICAgICAgPFNpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICA8U3dpdGNoV3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJwYW5lbC50ZXh0LmJhY2tncm91bmRDb2xvclwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPFN3aXRjaFxuICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3RsLmJhY2tncm91bmR9XG4gICAgICAgICAgICAgICAgICAgICAgaWQ9e2Ake3RoaXMucHJvcHMuaWR9LXRleHRCYWNrZ3JvdW5kRW5hYmxlZC0ke2lkeH1gfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB1cGRhdGVMYXllclRleHRMYWJlbChpZHgsICdiYWNrZ3JvdW5kJywgIXRsLmJhY2tncm91bmQpfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9Td2l0Y2hXcmFwcGVyPlxuXG4gICAgICAgICAgICAgICAgICA8Q29sb3JTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgICBjb2xvclNldHM9e1tcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvbG9yOiB0bC5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRDb2xvcjogdiA9PiB1cGRhdGVMYXllclRleHRMYWJlbChpZHgsICdiYWNrZ3JvdW5kQ29sb3InLCB2KVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgICAgICAgdXNlT3BhY2l0eT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0bC5iYWNrZ3JvdW5kfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG5cbiAgICAgICAgICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgIDxTcGFjZUJldHdlZW5GbGV4Ym94PlxuICAgICAgICAgICAgICAgICAgICA8U0JGbGV4Ym94SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICA8UGFuZWxMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwicGFuZWwudGV4dC50ZXh0QW5jaG9yXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1BhbmVsTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPEl0ZW1TZWxlY3RvclxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLkxBWUVSX1RFWFRfQ09ORklHUy50ZXh0QW5jaG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz17dGwuYW5jaG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbCA9PiB1cGRhdGVMYXllclRleHRMYWJlbChpZHgsICdhbmNob3InLCB2YWwpfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvU0JGbGV4Ym94SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPFNCRmxleGJveEl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgPFBhbmVsTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cInBhbmVsLnRleHQuYWxpZ25tZW50XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1BhbmVsTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPEl0ZW1TZWxlY3RvclxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLkxBWUVSX1RFWFRfQ09ORklHUy50ZXh0QWxpZ25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz17dGwuYWxpZ25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbCA9PiB1cGRhdGVMYXllclRleHRMYWJlbChpZHgsICdhbGlnbm1lbnQnLCB2YWwpfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvU0JGbGV4Ym94SXRlbT5cbiAgICAgICAgICAgICAgICAgIDwvU3BhY2VCZXR3ZWVuRmxleGJveD5cbiAgICAgICAgICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiBsaW5rIG9uQ2xpY2s9eygpID0+IHVwZGF0ZUxheWVyVGV4dExhYmVsKHRleHRMYWJlbC5sZW5ndGgsICcnLCBudWxsKX0+XG4gICAgICAgICAgICAgICAgPEFkZCBoZWlnaHQ9XCIxMnB4XCIgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cInBhbmVsLnRleHQuYWRkTW9yZUxhYmVsXCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gVGV4dExhYmVsUGFuZWw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFRleHRMYWJlbFBhbmVsRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBSUEsSUFBQUEsSUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FB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
;