UNPKG

adui

Version:

<div> <img src="https://wxa.wxs.qq.com/mpweb/delivery/legacy/wxadtouch/upload/t1/od834zef_52939fc6.png" style="margin:40px 0 0 -8px; background-color: #fcfcfc; box-shadow: none;" /> </div>

228 lines (195 loc) 27.9 kB
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } import React, { useState } from "react"; import PropTypes from "prop-types"; import classNames from "classnames"; import Icon from "../icon"; import Popover from "../popover"; import Checkbox from "../checkbox"; import Radio from "../radio"; import "./style"; var prefix = "adui-table"; var getFilteredValue = function getFilteredValue(val) { if (val === null || val === undefined || val.length === 0) { return ["all"]; } return val; }; var TableFilter = function TableFilter(_ref) { var filterSearchable = _ref.filterSearchable, filterSearchPlaceholder = _ref.filterSearchPlaceholder, filterSearchCaseSensitive = _ref.filterSearchCaseSensitive, filterSearchFunc = _ref.filterSearchFunc, filteredValueProp = _ref.filteredValue, filterMultiple = _ref.filterMultiple, filterPopoverProps = _ref.filterPopoverProps, filterVisible = _ref.filterVisible, filtersProp = _ref.filters, onFilter = _ref.onFilter, onFilterVisibleChange = _ref.onFilterVisibleChange, title = _ref.title, sortableAndFilterable = _ref.sortableAndFilterable; if (!filtersProp) { return null; } var _useState = useState(getFilteredValue(filteredValueProp)), _useState2 = _slicedToArray(_useState, 2), filteredValue = _useState2[0], setFilteredValue = _useState2[1]; var _useState3 = useState(filterVisible || false), _useState4 = _slicedToArray(_useState3, 2), visible = _useState4[0], setVisible = _useState4[1]; var _useState5 = useState(""), _useState6 = _slicedToArray(_useState5, 2), searchValue = _useState6[0], setSearchValue = _useState6[1]; if (filteredValueProp !== null && filteredValueProp !== undefined && JSON.stringify(filteredValue) !== JSON.stringify(getFilteredValue(filteredValueProp))) { setFilteredValue(getFilteredValue(filteredValueProp)); } if (typeof filterVisible === "boolean" && visible !== filterVisible) { setVisible(filterVisible); } var handleChange = function handleChange(filteredValueParam) { var newValue = filterMultiple && filteredValueParam ? filteredValueParam : [filteredValueParam]; if (newValue.includes("all")) { newValue.splice(newValue.indexOf("all"), 1); } if (filteredValueProp === null) { setFilteredValue(getFilteredValue(newValue)); } if (onFilter) { if (filteredValueParam === "all") { onFilter([]); } else { onFilter(newValue); } } if (!filterMultiple) { setTimeout(function () { if (onFilterVisibleChange) { onFilterVisibleChange(false); } setVisible(false); }, 100); } }; var popup; if (filterSearchable) { popup = React.createElement("div", null, React.createElement("div", { className: "".concat(prefix, "-filter-search") }, React.createElement("input", { value: searchValue, placeholder: filterSearchPlaceholder, onChange: function onChange(e) { var value = e.target.value; setSearchValue(value); } }), React.createElement(Icon, { icon: "search", className: "".concat(prefix, "-filter-icon") }))); } var filters = searchValue ? filtersProp.filter(function (o) { var text = o.text; if (filterSearchFunc) { return filterSearchFunc(searchValue, o); } if (!filterSearchCaseSensitive) { return String(text).toLocaleLowerCase().includes(searchValue.toLocaleLowerCase()); } return String(text).includes(searchValue); }) : filtersProp; if (filterMultiple) { popup = React.createElement(React.Fragment, null, popup, !filters.length ? React.createElement("div", { className: "".concat(prefix, "-filter-no") }, "\u65E0\u5339\u914D\u7ED3\u679C") : React.createElement(Checkbox.Group, { className: "".concat(prefix, "-filterList"), defaultValue: ["all"], value: filteredValue, onChange: handleChange }, filters.map(function (item) { return React.createElement(Checkbox, { key: item.value, value: item.value }, item.text); }))); } else { popup = React.createElement(React.Fragment, null, popup, !filters.length ? React.createElement("div", { className: "".concat(prefix, "-filter-no") }, "\u65E0\u5339\u914D\u7ED3\u679C") : React.createElement(Radio.Group, { className: "".concat(prefix, "-filterList"), defaultValue: "all", value: filteredValue ? filteredValue[0] : null, onChange: handleChange }, React.createElement(Radio, { value: "all" }, "\u5168\u90E8"), filters.map(function (item) { return React.createElement(Radio, { key: item.value, value: item.value }, item.text); }))); } return React.createElement(Popover, _extends({ arrowed: false, visible: visible, onVisibleChange: function onVisibleChange(bool) { if (typeof filterVisible !== "boolean") { setVisible(bool); } if (onFilterVisibleChange) { onFilterVisibleChange(bool); } }, popup: popup, trigger: "click", placement: "bottomLeft" }, filterPopoverProps), React.createElement("div", { "data-value": filteredValue, role: "columnheader", className: classNames("".concat(prefix, "-filter"), _defineProperty({}, "".concat(prefix, "-filtered"), filteredValue && (filteredValue.length > 1 || filteredValue[0] !== "all"))) }, !sortableAndFilterable ? title : null, React.createElement(Icon, { icon: "filter-outlined" }), !sortableAndFilterable && React.createElement("div", { className: "".concat(prefix, "-clickholder") }))); }; TableFilter.propTypes = { filterMultiple: PropTypes.bool, filterSearchable: PropTypes.bool, filterSearchCaseSensitive: PropTypes.bool, filterSearchPlaceholder: PropTypes.string, filterSearchFunc: PropTypes.func, filterPopoverProps: PropTypes.object, filteredValue: PropTypes.array, filters: PropTypes.any, filterVisible: PropTypes.bool, onFilter: PropTypes.func, onFilterVisibleChange: PropTypes.func, title: PropTypes.node, sortableAndFilterable: PropTypes.bool }; TableFilter.defaultProps = { filterMultiple: false, filterSearchable: false, filterSearchCaseSensitive: false, filterSearchPlaceholder: "在筛选项中搜索", filterSearchFunc: undefined, filterPopoverProps: {}, filteredValue: null, filterVisible: null, filters: null, onFilter: null, onFilterVisibleChange: null, title: null, sortableAndFilterable: false }; export default TableFilter; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwiUHJvcFR5cGVzIiwiY2xhc3NOYW1lcyIsIkljb24iLCJQb3BvdmVyIiwiQ2hlY2tib3giLCJSYWRpbyIsInByZWZpeCIsImdldEZpbHRlcmVkVmFsdWUiLCJ2YWwiLCJ1bmRlZmluZWQiLCJsZW5ndGgiLCJUYWJsZUZpbHRlciIsImZpbHRlclNlYXJjaGFibGUiLCJmaWx0ZXJTZWFyY2hQbGFjZWhvbGRlciIsImZpbHRlclNlYXJjaENhc2VTZW5zaXRpdmUiLCJmaWx0ZXJTZWFyY2hGdW5jIiwiZmlsdGVyZWRWYWx1ZVByb3AiLCJmaWx0ZXJlZFZhbHVlIiwiZmlsdGVyTXVsdGlwbGUiLCJmaWx0ZXJQb3BvdmVyUHJvcHMiLCJmaWx0ZXJWaXNpYmxlIiwiZmlsdGVyc1Byb3AiLCJmaWx0ZXJzIiwib25GaWx0ZXIiLCJvbkZpbHRlclZpc2libGVDaGFuZ2UiLCJ0aXRsZSIsInNvcnRhYmxlQW5kRmlsdGVyYWJsZSIsInNldEZpbHRlcmVkVmFsdWUiLCJ2aXNpYmxlIiwic2V0VmlzaWJsZSIsInNlYXJjaFZhbHVlIiwic2V0U2VhcmNoVmFsdWUiLCJKU09OIiwic3RyaW5naWZ5IiwiaGFuZGxlQ2hhbmdlIiwiZmlsdGVyZWRWYWx1ZVBhcmFtIiwibmV3VmFsdWUiLCJpbmNsdWRlcyIsInNwbGljZSIsImluZGV4T2YiLCJzZXRUaW1lb3V0IiwicG9wdXAiLCJlIiwidmFsdWUiLCJ0YXJnZXQiLCJmaWx0ZXIiLCJvIiwidGV4dCIsIlN0cmluZyIsInRvTG9jYWxlTG93ZXJDYXNlIiwibWFwIiwiaXRlbSIsImJvb2wiLCJwcm9wVHlwZXMiLCJzdHJpbmciLCJmdW5jIiwib2JqZWN0IiwiYXJyYXkiLCJhbnkiLCJub2RlIiwiZGVmYXVsdFByb3BzIl0sInNvdXJjZXMiOlsiLi4vLi4vY29tcG9uZW50cy90YWJsZS9UYWJsZUZpbHRlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IEljb24gZnJvbSBcIi4uL2ljb25cIlxuaW1wb3J0IFBvcG92ZXIsIHsgSVBvcG92ZXJQcm9wcyB9IGZyb20gXCIuLi9wb3BvdmVyXCJcbmltcG9ydCBDaGVja2JveCBmcm9tIFwiLi4vY2hlY2tib3hcIlxuaW1wb3J0IFJhZGlvIGZyb20gXCIuLi9yYWRpb1wiXG5pbXBvcnQgXCIuL3N0eWxlXCJcblxuY29uc3QgcHJlZml4ID0gXCJhZHVpLXRhYmxlXCJcbmNvbnN0IGdldEZpbHRlcmVkVmFsdWUgPSAodmFsPzogKHN0cmluZyB8IG51bWJlcilbXSB8IG51bGwpID0+IHtcbiAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCB8fCB2YWwubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtcImFsbFwiXVxuICB9XG4gIHJldHVybiB2YWxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVGaWx0ZXJQcm9wcyB7XG4gIGZpbHRlcmVkVmFsdWU/OiAoc3RyaW5nIHwgbnVtYmVyKVtdIHwgbnVsbFxuICBmaWx0ZXJNdWx0aXBsZT86IGJvb2xlYW5cbiAgZmlsdGVyU2VhcmNoYWJsZT86IGJvb2xlYW5cbiAgZmlsdGVyU2VhcmNoQ2FzZVNlbnNpdGl2ZT86IGJvb2xlYW5cbiAgZmlsdGVyU2VhcmNoUGxhY2Vob2xkZXI/OiBzdHJpbmdcbiAgZmlsdGVyU2VhcmNoRnVuYz86IChcbiAgICBpbnB1dDogc3RyaW5nLFxuICAgIGl0ZW06IHsgdGV4dDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH1cbiAgKSA9PiBib29sZWFuXG4gIGZpbHRlclBvcG92ZXJQcm9wcz86IElQb3BvdmVyUHJvcHNcbiAgZmlsdGVycz86IEFycmF5PHsgdGV4dDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH0+IHwgbnVsbFxuICBmaWx0ZXJWaXNpYmxlPzogYm9vbGVhbiB8IG51bGxcbiAgb25GaWx0ZXI/OiAoKHZhbHVlOiAoc3RyaW5nIHwgbnVtYmVyKVtdKSA9PiB2b2lkKSB8IG51bGxcbiAgb25GaWx0ZXJWaXNpYmxlQ2hhbmdlPzogKCh2aXNpYmxlOiBib29sZWFuKSA9PiB2b2lkKSB8IG51bGxcbiAgdGl0bGU/OiBSZWFjdC5SZWFjdE5vZGVcbiAgc29ydGFibGVBbmRGaWx0ZXJhYmxlPzogYm9vbGVhblxufVxuXG4vKipcbiAqIOihqOagvOetm+mAiVxuICovXG5jb25zdCBUYWJsZUZpbHRlcjogUmVhY3QuRkM8SVRhYmxlRmlsdGVyUHJvcHM+ID0gKHtcbiAgZmlsdGVyU2VhcmNoYWJsZSxcbiAgZmlsdGVyU2VhcmNoUGxhY2Vob2xkZXIsXG4gIGZpbHRlclNlYXJjaENhc2VTZW5zaXRpdmUsXG4gIGZpbHRlclNlYXJjaEZ1bmMsXG4gIGZpbHRlcmVkVmFsdWU6IGZpbHRlcmVkVmFsdWVQcm9wLFxuICBmaWx0ZXJNdWx0aXBsZSxcbiAgZmlsdGVyUG9wb3ZlclByb3BzLFxuICBmaWx0ZXJWaXNpYmxlLFxuICBmaWx0ZXJzOiBmaWx0ZXJzUHJvcCxcbiAgb25GaWx0ZXIsXG4gIG9uRmlsdGVyVmlzaWJsZUNoYW5nZSxcbiAgdGl0bGUsXG4gIHNvcnRhYmxlQW5kRmlsdGVyYWJsZSxcbn06IElUYWJsZUZpbHRlclByb3BzKSA9PiB7XG4gIGlmICghZmlsdGVyc1Byb3ApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IFtmaWx0ZXJlZFZhbHVlLCBzZXRGaWx0ZXJlZFZhbHVlXSA9IHVzZVN0YXRlKFxuICAgIGdldEZpbHRlcmVkVmFsdWUoZmlsdGVyZWRWYWx1ZVByb3ApXG4gIClcbiAgY29uc3QgW3Zpc2libGUsIHNldFZpc2libGVdID0gdXNlU3RhdGUoZmlsdGVyVmlzaWJsZSB8fCBmYWxzZSlcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZShcIlwiKVxuXG4gIC8vIOebuOW9k+S6jueUn+WRveWRqOacnyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcbiAgaWYgKFxuICAgIGZpbHRlcmVkVmFsdWVQcm9wICE9PSBudWxsICYmXG4gICAgZmlsdGVyZWRWYWx1ZVByb3AgIT09IHVuZGVmaW5lZCAmJlxuICAgIEpTT04uc3RyaW5naWZ5KGZpbHRlcmVkVmFsdWUpICE9PVxuICAgICAgSlNPTi5zdHJpbmdpZnkoZ2V0RmlsdGVyZWRWYWx1ZShmaWx0ZXJlZFZhbHVlUHJvcCkpXG4gICkge1xuICAgIHNldEZpbHRlcmVkVmFsdWUoZ2V0RmlsdGVyZWRWYWx1ZShmaWx0ZXJlZFZhbHVlUHJvcCkpXG4gIH1cblxuICBpZiAodHlwZW9mIGZpbHRlclZpc2libGUgPT09IFwiYm9vbGVhblwiICYmIHZpc2libGUgIT09IGZpbHRlclZpc2libGUpIHtcbiAgICBzZXRWaXNpYmxlKGZpbHRlclZpc2libGUpXG4gIH1cblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoXG4gICAgZmlsdGVyZWRWYWx1ZVBhcmFtOiAoc3RyaW5nIHwgbnVtYmVyKSB8IChzdHJpbmcgfCBudW1iZXIpW11cbiAgKSA9PiB7XG4gICAgY29uc3QgbmV3VmFsdWU6IGFueSA9XG4gICAgICBmaWx0ZXJNdWx0aXBsZSAmJiBmaWx0ZXJlZFZhbHVlUGFyYW1cbiAgICAgICAgPyBmaWx0ZXJlZFZhbHVlUGFyYW1cbiAgICAgICAgOiBbZmlsdGVyZWRWYWx1ZVBhcmFtXVxuICAgIGlmIChuZXdWYWx1ZS5pbmNsdWRlcyhcImFsbFwiKSkge1xuICAgICAgbmV3VmFsdWUuc3BsaWNlKG5ld1ZhbHVlLmluZGV4T2YoXCJhbGxcIiksIDEpXG4gICAgfVxuICAgIGlmIChmaWx0ZXJlZFZhbHVlUHJvcCA9PT0gbnVsbCkge1xuICAgICAgc2V0RmlsdGVyZWRWYWx1ZShnZXRGaWx0ZXJlZFZhbHVlKG5ld1ZhbHVlKSlcbiAgICB9XG4gICAgaWYgKG9uRmlsdGVyKSB7XG4gICAgICBpZiAoZmlsdGVyZWRWYWx1ZVBhcmFtID09PSBcImFsbFwiKSB7XG4gICAgICAgIG9uRmlsdGVyKFtdKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25GaWx0ZXIobmV3VmFsdWUpXG4gICAgICB9XG4gICAgfVxuICAgIGlmICghZmlsdGVyTXVsdGlwbGUpIHtcbiAgICAgIC8vIOW7tui/n+aYr+S4uuS6huiuqeeKtuaAgeeahOWPmOWMluWcqOinhuinieS4iuWFiOiiq+aOpeWPl1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChvbkZpbHRlclZpc2libGVDaGFuZ2UpIHtcbiAgICAgICAgICBvbkZpbHRlclZpc2libGVDaGFuZ2UoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgICAgc2V0VmlzaWJsZShmYWxzZSlcbiAgICAgIH0sIDEwMClcbiAgICB9XG4gIH1cblxuICBsZXQgcG9wdXBcblxuICBpZiAoZmlsdGVyU2VhcmNoYWJsZSkge1xuICAgIHBvcHVwID0gKFxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake3ByZWZpeH0tZmlsdGVyLXNlYXJjaGB9PlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdmFsdWU9e3NlYXJjaFZhbHVlfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2ZpbHRlclNlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgdmFsdWUgfSA9IGUudGFyZ2V0XG4gICAgICAgICAgICAgIHNldFNlYXJjaFZhbHVlKHZhbHVlKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxJY29uIGljb249XCJzZWFyY2hcIiBjbGFzc05hbWU9e2Ake3ByZWZpeH0tZmlsdGVyLWljb25gfSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGZpbHRlcnMgPSBzZWFyY2hWYWx1ZVxuICAgID8gZmlsdGVyc1Byb3AuZmlsdGVyKChvKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgdGV4dCB9ID0gb1xuICAgICAgICBpZiAoZmlsdGVyU2VhcmNoRnVuYykge1xuICAgICAgICAgIHJldHVybiBmaWx0ZXJTZWFyY2hGdW5jKHNlYXJjaFZhbHVlLCBvKVxuICAgICAgICB9XG4gICAgICAgIGlmICghZmlsdGVyU2VhcmNoQ2FzZVNlbnNpdGl2ZSkge1xuICAgICAgICAgIHJldHVybiBTdHJpbmcodGV4dClcbiAgICAgICAgICAgIC50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICAuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gU3RyaW5nKHRleHQpLmluY2x1ZGVzKHNlYXJjaFZhbHVlKVxuICAgICAgfSlcbiAgICA6IGZpbHRlcnNQcm9wXG5cbiAgaWYgKGZpbHRlck11bHRpcGxlKSB7XG4gICAgcG9wdXAgPSAoXG4gICAgICA8PlxuICAgICAgICB7cG9wdXB9XG4gICAgICAgIHshZmlsdGVycy5sZW5ndGggPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake3ByZWZpeH0tZmlsdGVyLW5vYH0+5peg5Yy56YWN57uT5p6cPC9kaXY+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPENoZWNrYm94Lkdyb3VwXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake3ByZWZpeH0tZmlsdGVyTGlzdGB9XG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU9e1tcImFsbFwiXX1cbiAgICAgICAgICAgIHZhbHVlPXtmaWx0ZXJlZFZhbHVlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7ZmlsdGVycy5tYXAoKGl0ZW0pID0+IChcbiAgICAgICAgICAgICAgPENoZWNrYm94IGtleT17aXRlbS52YWx1ZX0gdmFsdWU9e2l0ZW0udmFsdWV9PlxuICAgICAgICAgICAgICAgIHtpdGVtLnRleHR9XG4gICAgICAgICAgICAgIDwvQ2hlY2tib3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L0NoZWNrYm94Lkdyb3VwPlxuICAgICAgICApfVxuICAgICAgPC8+XG4gICAgKVxuICB9IGVsc2Uge1xuICAgIHBvcHVwID0gKFxuICAgICAgPD5cbiAgICAgICAge3BvcHVwfVxuICAgICAgICB7IWZpbHRlcnMubGVuZ3RoID8gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWZpbHRlci1ub2B9PuaXoOWMuemFjee7k+aenDwvZGl2PlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxSYWRpby5Hcm91cFxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWZpbHRlckxpc3RgfVxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlPVwiYWxsXCJcbiAgICAgICAgICAgIHZhbHVlPXtmaWx0ZXJlZFZhbHVlID8gZmlsdGVyZWRWYWx1ZVswXSA6IG51bGx9XG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxSYWRpbyB2YWx1ZT1cImFsbFwiPuWFqOmDqDwvUmFkaW8+XG4gICAgICAgICAgICB7ZmlsdGVycy5tYXAoKGl0ZW0pID0+IChcbiAgICAgICAgICAgICAgPFJhZGlvIGtleT17aXRlbS52YWx1ZX0gdmFsdWU9e2l0ZW0udmFsdWV9PlxuICAgICAgICAgICAgICAgIHtpdGVtLnRleHR9XG4gICAgICAgICAgICAgIDwvUmFkaW8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvLkdyb3VwPlxuICAgICAgICApfVxuICAgICAgPC8+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UG9wb3ZlclxuICAgICAgYXJyb3dlZD17ZmFsc2V9XG4gICAgICB2aXNpYmxlPXt2aXNpYmxlfVxuICAgICAgb25WaXNpYmxlQ2hhbmdlPXsoYm9vbCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGZpbHRlclZpc2libGUgIT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgc2V0VmlzaWJsZShib29sKVxuICAgICAgICB9XG4gICAgICAgIGlmIChvbkZpbHRlclZpc2libGVDaGFuZ2UpIHtcbiAgICAgICAgICBvbkZpbHRlclZpc2libGVDaGFuZ2UoYm9vbClcbiAgICAgICAgfVxuICAgICAgfX1cbiAgICAgIHBvcHVwPXtwb3B1cH1cbiAgICAgIHRyaWdnZXI9XCJjbGlja1wiXG4gICAgICBwbGFjZW1lbnQ9XCJib3R0b21MZWZ0XCJcbiAgICAgIHsuLi5maWx0ZXJQb3BvdmVyUHJvcHN9XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBkYXRhLXZhbHVlPXtmaWx0ZXJlZFZhbHVlfVxuICAgICAgICByb2xlPVwiY29sdW1uaGVhZGVyXCJcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGAke3ByZWZpeH0tZmlsdGVyYCwge1xuICAgICAgICAgIFtgJHtwcmVmaXh9LWZpbHRlcmVkYF06XG4gICAgICAgICAgICBmaWx0ZXJlZFZhbHVlICYmXG4gICAgICAgICAgICAoZmlsdGVyZWRWYWx1ZS5sZW5ndGggPiAxIHx8IGZpbHRlcmVkVmFsdWVbMF0gIT09IFwiYWxsXCIpLFxuICAgICAgICB9KX1cbiAgICAgID5cbiAgICAgICAgeyFzb3J0YWJsZUFuZEZpbHRlcmFibGUgPyB0aXRsZSA6IG51bGx9XG4gICAgICAgIDxJY29uIGljb249XCJmaWx0ZXItb3V0bGluZWRcIiAvPlxuICAgICAgICB7IXNvcnRhYmxlQW5kRmlsdGVyYWJsZSAmJiA8ZGl2IGNsYXNzTmFtZT17YCR7cHJlZml4fS1jbGlja2hvbGRlcmB9IC8+fVxuICAgICAgPC9kaXY+XG4gICAgPC9Qb3BvdmVyPlxuICApXG59XG5cblRhYmxlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIOaYr+WQpuWkmumAiVxuICAgKi9cbiAgZmlsdGVyTXVsdGlwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICog562b6YCJ5piv5ZCm5pSv5oyB5pCc57SiXG4gICAqL1xuICBmaWx0ZXJTZWFyY2hhYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOetm+mAieaQnOe0ouW8gOWQr+Wkp+Wwj+WGmeaVj+aEn+aQnOe0ou+8jOm7mOiupOS4uiBmYWxzZVxuICAgKi9cbiAgZmlsdGVyU2VhcmNoQ2FzZVNlbnNpdGl2ZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDnrZvpgInmkJzntKIgcGxhY2Vob2xkZXJcbiAgICovXG4gIGZpbHRlclNlYXJjaFBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICog562b6YCJ5pCc57Si55qE6Ieq5a6a5LmJIGZ1bmN0aW9uXG4gICAqL1xuICBmaWx0ZXJTZWFyY2hGdW5jOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIOetm+mAiSBQb3BvdmVyIHByb3Bz77yM5Lya5bCG5q2k5a+56LGh6YCP5Lyg57uZIDxQb3BvdmVyIC8+XG4gICAqL1xuICBmaWx0ZXJQb3BvdmVyUHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiDlj6/ku6Xku47lpJbpg6jkvKDlhaXnrZvpgInnmoTlgLzvvIxudWxsLCBbXSwg6YO95Lya6K+G5Yir5Li65pyq562b6YCJ54q25oCBXG4gICAqL1xuICBmaWx0ZXJlZFZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gIC8qKlxuICAgKiDnrZvpgInpobnvvIzmoLzlvI/vvJpbeyB0ZXh0OiBcIuaci+WPi+WciOW5v+WRilwiLCB2YWx1ZTogJzInIH1dXG4gICAqL1xuICBmaWx0ZXJzOiBQcm9wVHlwZXMuYW55LFxuICAvKipcbiAgICog5LuO5aSW6YOo5o6n5Yi2IGZpbHRlciBQb3BvdmVyIOeahOaYvuekulxuICAgKi9cbiAgZmlsdGVyVmlzaWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDnrZvpgInml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICog562b6YCJIHBvcHVwIHZpc2libGUg5Y+Y5YyW5pe255qEIGhhbmRsZXLvvIzlj4LmlbAgKGJvb2wsIGNvbClcbiAgICovXG4gIG9uRmlsdGVyVmlzaWJsZUNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiB0aXRsZVxuICAgKi9cbiAgdGl0bGU6IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogc29ydGFibGVBbmRGaWx0ZXJhYmxlPzogYm9vbGVhblxuICAgKi9cbiAgc29ydGFibGVBbmRGaWx0ZXJhYmxlOiBQcm9wVHlwZXMuYm9vbCxcbn1cblxuVGFibGVGaWx0ZXIuZGVmYXVsdFByb3BzID0ge1xuICBmaWx0ZXJNdWx0aXBsZTogZmFsc2UsXG4gIGZpbHRlclNlYXJjaGFibGU6IGZhbHNlLFxuICBmaWx0ZXJTZWFyY2hDYXNlU2Vuc2l0aXZlOiBmYWxzZSxcbiAgZmlsdGVyU2VhcmNoUGxhY2Vob2xkZXI6IFwi5Zyo562b6YCJ6aG55Lit5pCc57SiXCIsXG4gIGZpbHRlclNlYXJjaEZ1bmM6IHVuZGVmaW5lZCxcbiAgZmlsdGVyUG9wb3ZlclByb3BzOiB7fSxcbiAgZmlsdGVyZWRWYWx1ZTogbnVsbCxcbiAgZmlsdGVyVmlzaWJsZTogbnVsbCxcbiAgZmlsdGVyczogbnVsbCxcbiAgb25GaWx0ZXI6IG51bGwsXG4gIG9uRmlsdGVyVmlzaWJsZUNoYW5nZTogbnVsbCxcbiAgdGl0bGU6IG51bGwsXG4gIHNvcnRhYmxlQW5kRmlsdGVyYWJsZTogZmFsc2UsXG59XG5cbmV4cG9ydCBkZWZhdWx0IFRhYmxlRmlsdGVyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFQLElBQWdCQyxRQUFoQixRQUFnQyxPQUFoQztBQUNBLE9BQU9DLFNBQVAsTUFBc0IsWUFBdEI7QUFDQSxPQUFPQyxVQUFQLE1BQXVCLFlBQXZCO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixTQUFqQjtBQUNBLE9BQU9DLE9BQVAsTUFBdUMsWUFBdkM7QUFDQSxPQUFPQyxRQUFQLE1BQXFCLGFBQXJCO0FBQ0EsT0FBT0MsS0FBUCxNQUFrQixVQUFsQjtBQUNBLE9BQU8sU0FBUDtBQUVBLElBQU1DLE1BQU0sR0FBRyxZQUFmOztBQUNBLElBQU1DLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBbUIsQ0FBQ0MsR0FBRCxFQUFzQztFQUM3RCxJQUFJQSxHQUFHLEtBQUssSUFBUixJQUFnQkEsR0FBRyxLQUFLQyxTQUF4QixJQUFxQ0QsR0FBRyxDQUFDRSxNQUFKLEtBQWUsQ0FBeEQsRUFBMkQ7SUFDekQsT0FBTyxDQUFDLEtBQUQsQ0FBUDtFQUNEOztFQUNELE9BQU9GLEdBQVA7QUFDRCxDQUxEOztBQTZCQSxJQUFNRyxXQUF3QyxHQUFHLFNBQTNDQSxXQUEyQyxPQWN4QjtFQUFBLElBYnZCQyxnQkFhdUIsUUFidkJBLGdCQWF1QjtFQUFBLElBWnZCQyx1QkFZdUIsUUFadkJBLHVCQVl1QjtFQUFBLElBWHZCQyx5QkFXdUIsUUFYdkJBLHlCQVd1QjtFQUFBLElBVnZCQyxnQkFVdUIsUUFWdkJBLGdCQVV1QjtFQUFBLElBVFJDLGlCQVNRLFFBVHZCQyxhQVN1QjtFQUFBLElBUnZCQyxjQVF1QixRQVJ2QkEsY0FRdUI7RUFBQSxJQVB2QkMsa0JBT3VCLFFBUHZCQSxrQkFPdUI7RUFBQSxJQU52QkMsYUFNdUIsUUFOdkJBLGFBTXVCO0VBQUEsSUFMZEMsV0FLYyxRQUx2QkMsT0FLdUI7RUFBQSxJQUp2QkMsUUFJdUIsUUFKdkJBLFFBSXVCO0VBQUEsSUFIdkJDLHFCQUd1QixRQUh2QkEscUJBR3VCO0VBQUEsSUFGdkJDLEtBRXVCLFFBRnZCQSxLQUV1QjtFQUFBLElBRHZCQyxxQkFDdUIsUUFEdkJBLHFCQUN1Qjs7RUFDdkIsSUFBSSxDQUFDTCxXQUFMLEVBQWtCO0lBQ2hCLE9BQU8sSUFBUDtFQUNEOztFQUNELGdCQUEwQ3RCLFFBQVEsQ0FDaERRLGdCQUFnQixDQUFDUyxpQkFBRCxDQURnQyxDQUFsRDtFQUFBO0VBQUEsSUFBT0MsYUFBUDtFQUFBLElBQXNCVSxnQkFBdEI7O0VBR0EsaUJBQThCNUIsUUFBUSxDQUFDcUIsYUFBYSxJQUFJLEtBQWxCLENBQXRDO0VBQUE7RUFBQSxJQUFPUSxPQUFQO0VBQUEsSUFBZ0JDLFVBQWhCOztFQUNBLGlCQUFzQzlCLFFBQVEsQ0FBQyxFQUFELENBQTlDO0VBQUE7RUFBQSxJQUFPK0IsV0FBUDtFQUFBLElBQW9CQyxjQUFwQjs7RUFHQSxJQUNFZixpQkFBaUIsS0FBSyxJQUF0QixJQUNBQSxpQkFBaUIsS0FBS1AsU0FEdEIsSUFFQXVCLElBQUksQ0FBQ0MsU0FBTCxDQUFlaEIsYUFBZixNQUNFZSxJQUFJLENBQUNDLFNBQUwsQ0FBZTFCLGdCQUFnQixDQUFDUyxpQkFBRCxDQUEvQixDQUpKLEVBS0U7SUFDQVcsZ0JBQWdCLENBQUNwQixnQkFBZ0IsQ0FBQ1MsaUJBQUQsQ0FBakIsQ0FBaEI7RUFDRDs7RUFFRCxJQUFJLE9BQU9JLGFBQVAsS0FBeUIsU0FBekIsSUFBc0NRLE9BQU8sS0FBS1IsYUFBdEQsRUFBcUU7SUFDbkVTLFVBQVUsQ0FBQ1QsYUFBRCxDQUFWO0VBQ0Q7O0VBRUQsSUFBTWMsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FDbkJDLGtCQURtQixFQUVoQjtJQUNILElBQU1DLFFBQWEsR0FDakJsQixjQUFjLElBQUlpQixrQkFBbEIsR0FDSUEsa0JBREosR0FFSSxDQUFDQSxrQkFBRCxDQUhOOztJQUlBLElBQUlDLFFBQVEsQ0FBQ0MsUUFBVCxDQUFrQixLQUFsQixDQUFKLEVBQThCO01BQzVCRCxRQUFRLENBQUNFLE1BQVQsQ0FBZ0JGLFFBQVEsQ0FBQ0csT0FBVCxDQUFpQixLQUFqQixDQUFoQixFQUF5QyxDQUF6QztJQUNEOztJQUNELElBQUl2QixpQkFBaUIsS0FBSyxJQUExQixFQUFnQztNQUM5QlcsZ0JBQWdCLENBQUNwQixnQkFBZ0IsQ0FBQzZCLFFBQUQsQ0FBakIsQ0FBaEI7SUFDRDs7SUFDRCxJQUFJYixRQUFKLEVBQWM7TUFDWixJQUFJWSxrQkFBa0IsS0FBSyxLQUEzQixFQUFrQztRQUNoQ1osUUFBUSxDQUFDLEVBQUQsQ0FBUjtNQUNELENBRkQsTUFFTztRQUNMQSxRQUFRLENBQUNhLFFBQUQsQ0FBUjtNQUNEO0lBQ0Y7O0lBQ0QsSUFBSSxDQUFDbEIsY0FBTCxFQUFxQjtNQUVuQnNCLFVBQVUsQ0FBQyxZQUFNO1FBQ2YsSUFBSWhCLHFCQUFKLEVBQTJCO1VBQ3pCQSxxQkFBcUIsQ0FBQyxLQUFELENBQXJCO1FBQ0Q7O1FBQ0RLLFVBQVUsQ0FBQyxLQUFELENBQVY7TUFDRCxDQUxTLEVBS1AsR0FMTyxDQUFWO0lBTUQ7RUFDRixDQTdCRDs7RUErQkEsSUFBSVksS0FBSjs7RUFFQSxJQUFJN0IsZ0JBQUosRUFBc0I7SUFDcEI2QixLQUFLLEdBQ0gsaUNBQ0U7TUFBSyxTQUFTLFlBQUtuQyxNQUFMO0lBQWQsR0FDRTtNQUNFLEtBQUssRUFBRXdCLFdBRFQ7TUFFRSxXQUFXLEVBQUVqQix1QkFGZjtNQUdFLFFBQVEsRUFBRSxrQkFBQzZCLENBQUQsRUFBTztRQUNmLElBQVFDLEtBQVIsR0FBa0JELENBQUMsQ0FBQ0UsTUFBcEIsQ0FBUUQsS0FBUjtRQUNBWixjQUFjLENBQUNZLEtBQUQsQ0FBZDtNQUNEO0lBTkgsRUFERixFQVNFLG9CQUFDLElBQUQ7TUFBTSxJQUFJLEVBQUMsUUFBWDtNQUFvQixTQUFTLFlBQUtyQyxNQUFMO0lBQTdCLEVBVEYsQ0FERixDQURGO0VBZUQ7O0VBRUQsSUFBTWdCLE9BQU8sR0FBR1EsV0FBVyxHQUN2QlQsV0FBVyxDQUFDd0IsTUFBWixDQUFtQixVQUFDQyxDQUFELEVBQU87SUFDeEIsSUFBUUMsSUFBUixHQUFpQkQsQ0FBakIsQ0FBUUMsSUFBUjs7SUFDQSxJQUFJaEMsZ0JBQUosRUFBc0I7TUFDcEIsT0FBT0EsZ0JBQWdCLENBQUNlLFdBQUQsRUFBY2dCLENBQWQsQ0FBdkI7SUFDRDs7SUFDRCxJQUFJLENBQUNoQyx5QkFBTCxFQUFnQztNQUM5QixPQUFPa0MsTUFBTSxDQUFDRCxJQUFELENBQU4sQ0FDSkUsaUJBREksR0FFSlosUUFGSSxDQUVLUCxXQUFXLENBQUNtQixpQkFBWixFQUZMLENBQVA7SUFHRDs7SUFDRCxPQUFPRCxNQUFNLENBQUNELElBQUQsQ0FBTixDQUFhVixRQUFiLENBQXNCUCxXQUF0QixDQUFQO0VBQ0QsQ0FYRCxDQUR1QixHQWF2QlQsV0FiSjs7RUFlQSxJQUFJSCxjQUFKLEVBQW9CO0lBQ2xCdUIsS0FBSyxHQUNILDBDQUNHQSxLQURILEVBRUcsQ0FBQ25CLE9BQU8sQ0FBQ1osTUFBVCxHQUNDO01BQUssU0FBUyxZQUFLSixNQUFMO0lBQWQsb0NBREQsR0FHQyxvQkFBQyxRQUFELENBQVUsS0FBVjtNQUNFLFNBQVMsWUFBS0EsTUFBTCxnQkFEWDtNQUVFLFlBQVksRUFBRSxDQUFDLEtBQUQsQ0FGaEI7TUFHRSxLQUFLLEVBQUVXLGFBSFQ7TUFJRSxRQUFRLEVBQUVpQjtJQUpaLEdBTUdaLE9BQU8sQ0FBQzRCLEdBQVIsQ0FBWSxVQUFDQyxJQUFEO01BQUEsT0FDWCxvQkFBQyxRQUFEO1FBQVUsR0FBRyxFQUFFQSxJQUFJLENBQUNSLEtBQXBCO1FBQTJCLEtBQUssRUFBRVEsSUFBSSxDQUFDUjtNQUF2QyxHQUNHUSxJQUFJLENBQUNKLElBRFIsQ0FEVztJQUFBLENBQVosQ0FOSCxDQUxKLENBREY7RUFxQkQsQ0F0QkQsTUFzQk87SUFDTE4sS0FBSyxHQUNILDBDQUNHQSxLQURILEVBRUcsQ0FBQ25CLE9BQU8sQ0FBQ1osTUFBVCxHQUNDO01BQUssU0FBUyxZQUFLSixNQUFMO0lBQWQsb0NBREQsR0FHQyxvQkFBQyxLQUFELENBQU8sS0FBUDtNQUNFLFNBQVMsWUFBS0EsTUFBTCxnQkFEWDtNQUVFLFlBQVksRUFBQyxLQUZmO01BR0UsS0FBSyxFQUFFVyxhQUFhLEdBQUdBLGFBQWEsQ0FBQyxDQUFELENBQWhCLEdBQXNCLElBSDVDO01BSUUsUUFBUSxFQUFFaUI7SUFKWixHQU1FLG9CQUFDLEtBQUQ7TUFBTyxLQUFLLEVBQUM7SUFBYixrQkFORixFQU9HWixPQUFPLENBQUM0QixHQUFSLENBQVksVUFBQ0MsSUFBRDtNQUFBLE9BQ1gsb0JBQUMsS0FBRDtRQUFPLEdBQUcsRUFBRUEsSUFBSSxDQUFDUixLQUFqQjtRQUF3QixLQUFLLEVBQUVRLElBQUksQ0FBQ1I7TUFBcEMsR0FDR1EsSUFBSSxDQUFDSixJQURSLENBRFc7SUFBQSxDQUFaLENBUEgsQ0FMSixDQURGO0VBc0JEOztFQUVELE9BQ0Usb0JBQUMsT0FBRDtJQUNFLE9BQU8sRUFBRSxLQURYO0lBRUUsT0FBTyxFQUFFbkIsT0FGWDtJQUdFLGVBQWUsRUFBRSx5QkFBQ3dCLElBQUQsRUFBVTtNQUN6QixJQUFJLE9BQU9oQyxhQUFQLEtBQXlCLFNBQTdCLEVBQXdDO1FBQ3RDUyxVQUFVLENBQUN1QixJQUFELENBQVY7TUFDRDs7TUFDRCxJQUFJNUIscUJBQUosRUFBMkI7UUFDekJBLHFCQUFxQixDQUFDNEIsSUFBRCxDQUFyQjtNQUNEO0lBQ0YsQ0FWSDtJQVdFLEtBQUssRUFBRVgsS0FYVDtJQVlFLE9BQU8sRUFBQyxPQVpWO0lBYUUsU0FBUyxFQUFDO0VBYlosR0FjTXRCLGtCQWROLEdBZ0JFO0lBQ0UsY0FBWUYsYUFEZDtJQUVFLElBQUksRUFBQyxjQUZQO0lBR0UsU0FBUyxFQUFFaEIsVUFBVSxXQUFJSyxNQUFKLDRDQUNmQSxNQURlLGdCQUVqQlcsYUFBYSxLQUNaQSxhQUFhLENBQUNQLE1BQWQsR0FBdUIsQ0FBdkIsSUFBNEJPLGFBQWEsQ0FBQyxDQUFELENBQWIsS0FBcUIsS0FEckMsQ0FGSTtFQUh2QixHQVNHLENBQUNTLHFCQUFELEdBQXlCRCxLQUF6QixHQUFpQyxJQVRwQyxFQVVFLG9CQUFDLElBQUQ7SUFBTSxJQUFJLEVBQUM7RUFBWCxFQVZGLEVBV0csQ0FBQ0MscUJBQUQsSUFBMEI7SUFBSyxTQUFTLFlBQUtwQixNQUFMO0VBQWQsRUFYN0IsQ0FoQkYsQ0FERjtBQWdDRCxDQXZMRDs7QUF5TEFLLFdBQVcsQ0FBQzBDLFNBQVosR0FBd0I7RUFJdEJuQyxjQUFjLEVBQUVsQixTQUFTLENBQUNvRCxJQUpKO0VBUXRCeEMsZ0JBQWdCLEVBQUVaLFNBQVMsQ0FBQ29ELElBUk47RUFZdEJ0Qyx5QkFBeUIsRUFBRWQsU0FBUyxDQUFDb0QsSUFaZjtFQWdCdEJ2Qyx1QkFBdUIsRUFBRWIsU0FBUyxDQUFDc0QsTUFoQmI7RUFvQnRCdkMsZ0JBQWdCLEVBQUVmLFNBQVMsQ0FBQ3VELElBcEJOO0VBd0J0QnBDLGtCQUFrQixFQUFFbkIsU0FBUyxDQUFDd0QsTUF4QlI7RUE0QnRCdkMsYUFBYSxFQUFFakIsU0FBUyxDQUFDeUQsS0E1Qkg7RUFnQ3RCbkMsT0FBTyxFQUFFdEIsU0FBUyxDQUFDMEQsR0FoQ0c7RUFvQ3RCdEMsYUFBYSxFQUFFcEIsU0FBUyxDQUFDb0QsSUFwQ0g7RUF3Q3RCN0IsUUFBUSxFQUFFdkIsU0FBUyxDQUFDdUQsSUF4Q0U7RUE0Q3RCL0IscUJBQXFCLEVBQUV4QixTQUFTLENBQUN1RCxJQTVDWDtFQWdEdEI5QixLQUFLLEVBQUV6QixTQUFTLENBQUMyRCxJQWhESztFQW9EdEJqQyxxQkFBcUIsRUFBRTFCLFNBQVMsQ0FBQ29EO0FBcERYLENBQXhCO0FBdURBekMsV0FBVyxDQUFDaUQsWUFBWixHQUEyQjtFQUN6QjFDLGNBQWMsRUFBRSxLQURTO0VBRXpCTixnQkFBZ0IsRUFBRSxLQUZPO0VBR3pCRSx5QkFBeUIsRUFBRSxLQUhGO0VBSXpCRCx1QkFBdUIsRUFBRSxTQUpBO0VBS3pCRSxnQkFBZ0IsRUFBRU4sU0FMTztFQU16QlUsa0JBQWtCLEVBQUUsRUFOSztFQU96QkYsYUFBYSxFQUFFLElBUFU7RUFRekJHLGFBQWEsRUFBRSxJQVJVO0VBU3pCRSxPQUFPLEVBQUUsSUFUZ0I7RUFVekJDLFFBQVEsRUFBRSxJQVZlO0VBV3pCQyxxQkFBcUIsRUFBRSxJQVhFO0VBWXpCQyxLQUFLLEVBQUUsSUFaa0I7RUFhekJDLHFCQUFxQixFQUFFO0FBYkUsQ0FBM0I7QUFnQkEsZUFBZWYsV0FBZiJ9