UNPKG

matrix-react-sdk

Version:
116 lines (113 loc) 20 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = RoomTopic; exports.onRoomTopicLinkClick = onRoomTopicLinkClick; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = _interopRequireWildcard(require("react")); var _matrix = require("matrix-js-sdk/src/matrix"); var _classnames = _interopRequireDefault(require("classnames")); var _compoundWeb = require("@vector-im/compound-web"); var _useTopic = require("../../../hooks/room/useTopic"); var _languageHandler = require("../../../languageHandler"); var _dispatcher = _interopRequireDefault(require("../../../dispatcher/dispatcher")); var _actions = require("../../../dispatcher/actions"); var _Modal = _interopRequireDefault(require("../../../Modal")); var _InfoDialog = _interopRequireDefault(require("../dialogs/InfoDialog")); var _useDispatcher = require("../../../hooks/useDispatcher"); var _MatrixClientContext = _interopRequireDefault(require("../../../contexts/MatrixClientContext")); var _AccessibleButton = _interopRequireDefault(require("./AccessibleButton")); var _HtmlUtils = require("../../../HtmlUtils"); var _Permalinks = require("../../../utils/permalinks/Permalinks"); const _excluded = ["room", "className"]; /* Copyright 2024 New Vector Ltd. Copyright 2021, 2022 The Matrix.org Foundation C.I.C. SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (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 onRoomTopicLinkClick(e) { const anchor = e.target; const localHref = (0, _Permalinks.tryTransformPermalinkToLocalHref)(anchor.href); if (localHref !== anchor.href) { // it could be converted to a localHref -> therefore handle locally e.preventDefault(); window.location.hash = localHref; } } function RoomTopic(_ref) { let { room, className } = _ref, props = (0, _objectWithoutProperties2.default)(_ref, _excluded); const client = (0, _react.useContext)(_MatrixClientContext.default); const [disableTooltip, setDisableTooltip] = (0, _react.useState)(false); const topic = (0, _useTopic.useTopic)(room); const body = (0, _HtmlUtils.topicToHtml)(topic?.text, topic?.html); const onClick = (0, _react.useCallback)(e => { props.onClick?.(e); const target = e.target; if (target.tagName.toUpperCase() !== "A") { _dispatcher.default.fire(_actions.Action.ShowRoomTopic); return; } onRoomTopicLinkClick(e); }, [props]); const onHover = ev => { setDisableTooltip(ev.target.tagName.toUpperCase() === "A"); }; (0, _useDispatcher.useDispatcher)(_dispatcher.default, payload => { if (payload.action === _actions.Action.ShowRoomTopic) { const canSetTopic = room.currentState.maySendStateEvent(_matrix.EventType.RoomTopic, client.getSafeUserId()); const body = (0, _HtmlUtils.topicToHtml)(topic?.text, topic?.html, undefined, true); const modal = _Modal.default.createDialog(_InfoDialog.default, { title: room.name, description: /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_HtmlUtils.Linkify, { options: { attributes: { onClick(e) { onClick(e); modal.close(); } } }, as: "p" }, body), canSetTopic && /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { kind: "primary_outline", onClick: () => { modal.close(); _dispatcher.default.dispatch({ action: "open_room_settings" }); } }, (0, _languageHandler._t)("room|edit_topic"))), hasCloseButton: true, button: false }); } }); // Do not render the tooltip if the topic is empty // We still need to have a div for the header buttons to be displayed correctly if (!body) return /*#__PURE__*/_react.default.createElement("div", { className: (0, _classnames.default)(className, "mx_RoomTopic") }); return /*#__PURE__*/_react.default.createElement(_compoundWeb.Tooltip, { description: (0, _languageHandler._t)("room|read_topic"), disabled: disableTooltip }, /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, props, { tabIndex: 0, role: "button", onClick: onClick, className: (0, _classnames.default)(className, "mx_RoomTopic"), onMouseOver: onHover, onFocus: onHover, "aria-label": (0, _languageHandler._t)("room|read_topic") }), /*#__PURE__*/_react.default.createElement(_HtmlUtils.Linkify, null, body))); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbWF0cml4IiwiX2NsYXNzbmFtZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2NvbXBvdW5kV2ViIiwiX3VzZVRvcGljIiwiX2xhbmd1YWdlSGFuZGxlciIsIl9kaXNwYXRjaGVyIiwiX2FjdGlvbnMiLCJfTW9kYWwiLCJfSW5mb0RpYWxvZyIsIl91c2VEaXNwYXRjaGVyIiwiX01hdHJpeENsaWVudENvbnRleHQiLCJfQWNjZXNzaWJsZUJ1dHRvbiIsIl9IdG1sVXRpbHMiLCJfUGVybWFsaW5rcyIsIl9leGNsdWRlZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm9uUm9vbVRvcGljTGlua0NsaWNrIiwiYW5jaG9yIiwidGFyZ2V0IiwibG9jYWxIcmVmIiwidHJ5VHJhbnNmb3JtUGVybWFsaW5rVG9Mb2NhbEhyZWYiLCJocmVmIiwicHJldmVudERlZmF1bHQiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhhc2giLCJSb29tVG9waWMiLCJfcmVmIiwicm9vbSIsImNsYXNzTmFtZSIsInByb3BzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsImNsaWVudCIsInVzZUNvbnRleHQiLCJNYXRyaXhDbGllbnRDb250ZXh0IiwiZGlzYWJsZVRvb2x0aXAiLCJzZXREaXNhYmxlVG9vbHRpcCIsInVzZVN0YXRlIiwidG9waWMiLCJ1c2VUb3BpYyIsImJvZHkiLCJ0b3BpY1RvSHRtbCIsInRleHQiLCJodG1sIiwib25DbGljayIsInVzZUNhbGxiYWNrIiwidGFnTmFtZSIsInRvVXBwZXJDYXNlIiwiZGlzIiwiZmlyZSIsIkFjdGlvbiIsIlNob3dSb29tVG9waWMiLCJvbkhvdmVyIiwiZXYiLCJ1c2VEaXNwYXRjaGVyIiwicGF5bG9hZCIsImFjdGlvbiIsImNhblNldFRvcGljIiwiY3VycmVudFN0YXRlIiwibWF5U2VuZFN0YXRlRXZlbnQiLCJFdmVudFR5cGUiLCJnZXRTYWZlVXNlcklkIiwidW5kZWZpbmVkIiwibW9kYWwiLCJNb2RhbCIsImNyZWF0ZURpYWxvZyIsIkluZm9EaWFsb2ciLCJ0aXRsZSIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsImNyZWF0ZUVsZW1lbnQiLCJMaW5raWZ5Iiwib3B0aW9ucyIsImF0dHJpYnV0ZXMiLCJjbG9zZSIsImFzIiwia2luZCIsImRpc3BhdGNoIiwiX3QiLCJoYXNDbG9zZUJ1dHRvbiIsImJ1dHRvbiIsImNsYXNzTmFtZXMiLCJUb29sdGlwIiwiZGlzYWJsZWQiLCJfZXh0ZW5kczIiLCJ0YWJJbmRleCIsInJvbGUiLCJvbk1vdXNlT3ZlciIsIm9uRm9jdXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy92aWV3cy9lbGVtZW50cy9Sb29tVG9waWMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIxLCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFJvb20sIEV2ZW50VHlwZSB9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy9tYXRyaXhcIjtcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCI7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIkB2ZWN0b3ItaW0vY29tcG91bmQtd2ViXCI7XG5cbmltcG9ydCB7IHVzZVRvcGljIH0gZnJvbSBcIi4uLy4uLy4uL2hvb2tzL3Jvb20vdXNlVG9waWNcIjtcbmltcG9ydCB7IF90IH0gZnJvbSBcIi4uLy4uLy4uL2xhbmd1YWdlSGFuZGxlclwiO1xuaW1wb3J0IGRpcyBmcm9tIFwiLi4vLi4vLi4vZGlzcGF0Y2hlci9kaXNwYXRjaGVyXCI7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tIFwiLi4vLi4vLi4vZGlzcGF0Y2hlci9hY3Rpb25zXCI7XG5pbXBvcnQgTW9kYWwgZnJvbSBcIi4uLy4uLy4uL01vZGFsXCI7XG5pbXBvcnQgSW5mb0RpYWxvZyBmcm9tIFwiLi4vZGlhbG9ncy9JbmZvRGlhbG9nXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaGVyIH0gZnJvbSBcIi4uLy4uLy4uL2hvb2tzL3VzZURpc3BhdGNoZXJcIjtcbmltcG9ydCBNYXRyaXhDbGllbnRDb250ZXh0IGZyb20gXCIuLi8uLi8uLi9jb250ZXh0cy9NYXRyaXhDbGllbnRDb250ZXh0XCI7XG5pbXBvcnQgQWNjZXNzaWJsZUJ1dHRvbiBmcm9tIFwiLi9BY2Nlc3NpYmxlQnV0dG9uXCI7XG5pbXBvcnQgeyBMaW5raWZ5LCB0b3BpY1RvSHRtbCB9IGZyb20gXCIuLi8uLi8uLi9IdG1sVXRpbHNcIjtcbmltcG9ydCB7IHRyeVRyYW5zZm9ybVBlcm1hbGlua1RvTG9jYWxIcmVmIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3Blcm1hbGlua3MvUGVybWFsaW5rc1wiO1xuXG5pbnRlcmZhY2UgSVByb3BzIGV4dGVuZHMgUmVhY3QuSFRNTFByb3BzPEhUTUxEaXZFbGVtZW50PiB7XG4gICAgcm9vbTogUm9vbTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9uUm9vbVRvcGljTGlua0NsaWNrKGU6IFJlYWN0Lk1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBhbmNob3IgPSBlLnRhcmdldCBhcyBIVE1MTGlua0VsZW1lbnQ7XG4gICAgY29uc3QgbG9jYWxIcmVmID0gdHJ5VHJhbnNmb3JtUGVybWFsaW5rVG9Mb2NhbEhyZWYoYW5jaG9yLmhyZWYpO1xuXG4gICAgaWYgKGxvY2FsSHJlZiAhPT0gYW5jaG9yLmhyZWYpIHtcbiAgICAgICAgLy8gaXQgY291bGQgYmUgY29udmVydGVkIHRvIGEgbG9jYWxIcmVmIC0+IHRoZXJlZm9yZSBoYW5kbGUgbG9jYWxseVxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gbG9jYWxIcmVmO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUm9vbVRvcGljKHsgcm9vbSwgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBJUHJvcHMpOiBKU1guRWxlbWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gdXNlQ29udGV4dChNYXRyaXhDbGllbnRDb250ZXh0KTtcbiAgICBjb25zdCBbZGlzYWJsZVRvb2x0aXAsIHNldERpc2FibGVUb29sdGlwXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICAgIGNvbnN0IHRvcGljID0gdXNlVG9waWMocm9vbSk7XG4gICAgY29uc3QgYm9keSA9IHRvcGljVG9IdG1sKHRvcGljPy50ZXh0LCB0b3BpYz8uaHRtbCk7XG5cbiAgICBjb25zdCBvbkNsaWNrID0gdXNlQ2FsbGJhY2soXG4gICAgICAgIChlOiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgICAgICAgcHJvcHMub25DbGljaz8uKGUpO1xuXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICAgICAgaWYgKHRhcmdldC50YWdOYW1lLnRvVXBwZXJDYXNlKCkgIT09IFwiQVwiKSB7XG4gICAgICAgICAgICAgICAgZGlzLmZpcmUoQWN0aW9uLlNob3dSb29tVG9waWMpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb25Sb29tVG9waWNMaW5rQ2xpY2soZSk7XG4gICAgICAgIH0sXG4gICAgICAgIFtwcm9wc10sXG4gICAgKTtcblxuICAgIGNvbnN0IG9uSG92ZXIgPSAoZXY6IFJlYWN0Lk1vdXNlRXZlbnQgfCBSZWFjdC5Gb2N1c0V2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgIHNldERpc2FibGVUb29sdGlwKChldi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnRhZ05hbWUudG9VcHBlckNhc2UoKSA9PT0gXCJBXCIpO1xuICAgIH07XG5cbiAgICB1c2VEaXNwYXRjaGVyKGRpcywgKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKHBheWxvYWQuYWN0aW9uID09PSBBY3Rpb24uU2hvd1Jvb21Ub3BpYykge1xuICAgICAgICAgICAgY29uc3QgY2FuU2V0VG9waWMgPSByb29tLmN1cnJlbnRTdGF0ZS5tYXlTZW5kU3RhdGVFdmVudChFdmVudFR5cGUuUm9vbVRvcGljLCBjbGllbnQuZ2V0U2FmZVVzZXJJZCgpKTtcbiAgICAgICAgICAgIGNvbnN0IGJvZHkgPSB0b3BpY1RvSHRtbCh0b3BpYz8udGV4dCwgdG9waWM/Lmh0bWwsIHVuZGVmaW5lZCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG1vZGFsID0gTW9kYWwuY3JlYXRlRGlhbG9nKEluZm9EaWFsb2csIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcm9vbS5uYW1lLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TGlua2lmeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljayhlOiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxEaXZFbGVtZW50Pikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2soZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcz1cInBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtib2R5fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9MaW5raWZ5PlxuICAgICAgICAgICAgICAgICAgICAgICAge2NhblNldFRvcGljICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWNjZXNzaWJsZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPVwicHJpbWFyeV9vdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcy5kaXNwYXRjaCh7IGFjdGlvbjogXCJvcGVuX3Jvb21fc2V0dGluZ3NcIiB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtfdChcInJvb218ZWRpdF90b3BpY1wiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FjY2Vzc2libGVCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGhhc0Nsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogZmFsc2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gRG8gbm90IHJlbmRlciB0aGUgdG9vbHRpcCBpZiB0aGUgdG9waWMgaXMgZW1wdHlcbiAgICAvLyBXZSBzdGlsbCBuZWVkIHRvIGhhdmUgYSBkaXYgZm9yIHRoZSBoZWFkZXIgYnV0dG9ucyB0byBiZSBkaXNwbGF5ZWQgY29ycmVjdGx5XG4gICAgaWYgKCFib2R5KSByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3NOYW1lLCBcIm14X1Jvb21Ub3BpY1wiKX0gLz47XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8VG9vbHRpcCBkZXNjcmlwdGlvbj17X3QoXCJyb29tfHJlYWRfdG9waWNcIil9IGRpc2FibGVkPXtkaXNhYmxlVG9vbHRpcH0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzTmFtZSwgXCJteF9Sb29tVG9waWNcIil9XG4gICAgICAgICAgICAgICAgb25Nb3VzZU92ZXI9e29uSG92ZXJ9XG4gICAgICAgICAgICAgICAgb25Gb2N1cz17b25Ib3Zlcn1cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtfdChcInJvb218cmVhZF90b3BpY1wiKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8TGlua2lmeT57Ym9keX08L0xpbmtpZnk+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFRQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxXQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxZQUFBLEdBQUFKLE9BQUE7QUFFQSxJQUFBSyxTQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxnQkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sV0FBQSxHQUFBSixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQVEsUUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsTUFBQSxHQUFBTixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQVUsV0FBQSxHQUFBUCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQVcsY0FBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksb0JBQUEsR0FBQVQsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFhLGlCQUFBLEdBQUFWLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBYyxVQUFBLEdBQUFkLE9BQUE7QUFDQSxJQUFBZSxXQUFBLEdBQUFmLE9BQUE7QUFBd0YsTUFBQWdCLFNBQUE7QUF2QnhGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQW5CLHdCQUFBbUIsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUos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