UNPKG

matrix-react-sdk

Version:
140 lines (135 loc) 21 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _matrix = require("matrix-js-sdk/src/matrix"); var _logger = require("matrix-js-sdk/src/logger"); var _compoundWeb = require("@vector-im/compound-web"); var _MatrixClientPeg = require("../../../MatrixClientPeg"); var _languageHandler = require("../../../languageHandler"); var _dispatcher = _interopRequireDefault(require("../../../dispatcher/dispatcher")); var _Modal = _interopRequireDefault(require("../../../Modal")); var _RoomInvite = require("../../../RoomInvite"); var _actions = require("../../../dispatcher/actions"); var _ErrorDialog = _interopRequireDefault(require("../dialogs/ErrorDialog")); var _BaseCard = _interopRequireDefault(require("../right_panel/BaseCard")); var _Flex = require("../../utils/Flex"); /* Copyright 2024 New Vector Ltd. Copyright 2019-2023 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. */ class ThirdPartyMemberInfo extends _react.default.Component { constructor(props) { super(props); (0, _defineProperty2.default)(this, "room", void 0); (0, _defineProperty2.default)(this, "onRoomStateEvents", ev => { if (ev.getType() === _matrix.EventType.RoomThirdPartyInvite && ev.getStateKey() === this.state.stateKey) { const newDisplayName = ev.getContent().display_name; const isInvited = (0, _RoomInvite.isValid3pidInvite)(ev); const newState = { invited: isInvited }; if (newDisplayName) newState["displayName"] = newDisplayName; this.setState(newState); } }); (0, _defineProperty2.default)(this, "onCancel", () => { _dispatcher.default.dispatch({ action: _actions.Action.View3pidInvite, event: null }); }); (0, _defineProperty2.default)(this, "onKickClick", () => { _MatrixClientPeg.MatrixClientPeg.safeGet().sendStateEvent(this.state.roomId, _matrix.EventType.RoomThirdPartyInvite, {}, this.state.stateKey).catch(err => { _logger.logger.error(err); // Revert echo because of error this.setState({ invited: true }); _Modal.default.createDialog(_ErrorDialog.default, { title: (0, _languageHandler._t)("user_info|error_revoke_3pid_invite_title"), description: (0, _languageHandler._t)("user_info|error_revoke_3pid_invite_description") }); }); // Local echo this.setState({ invited: false }); }); this.room = _MatrixClientPeg.MatrixClientPeg.safeGet().getRoom(this.props.event.getRoomId()); const me = this.room?.getMember(_MatrixClientPeg.MatrixClientPeg.safeGet().getSafeUserId()); const powerLevels = this.room?.currentState.getStateEvents("m.room.power_levels", ""); const senderId = this.props.event.getSender(); let kickLevel = powerLevels ? powerLevels.getContent().kick : 50; if (typeof kickLevel !== "number") kickLevel = 50; const sender = this.room?.getMember(senderId); this.state = { stateKey: this.props.event.getStateKey(), roomId: this.props.event.getRoomId(), displayName: this.props.event.getContent().display_name, invited: true, canKick: me ? me.powerLevel > kickLevel : false, senderName: sender?.name ?? senderId }; } componentDidMount() { _MatrixClientPeg.MatrixClientPeg.safeGet().on(_matrix.RoomStateEvent.Events, this.onRoomStateEvents); } componentWillUnmount() { const client = _MatrixClientPeg.MatrixClientPeg.get(); if (client) { client.removeListener(_matrix.RoomStateEvent.Events, this.onRoomStateEvents); } } render() { let adminTools; if (this.state.canKick && this.state.invited) { adminTools = /*#__PURE__*/_react.default.createElement(_Flex.Flex, { direction: "column", as: "section", justify: "start", gap: "var(--cpd-space-2x)" }, /*#__PURE__*/_react.default.createElement(_compoundWeb.Text, { as: "span", role: "heading", size: "lg", weight: "semibold" }, (0, _languageHandler._t)("user_info|admin_tools_section")), /*#__PURE__*/_react.default.createElement(_compoundWeb.Button, { size: "sm", kind: "destructive", className: "mx_MemberInfo_field", onClick: this.onKickClick }, (0, _languageHandler._t)("user_info|revoke_invite"))); } return /*#__PURE__*/_react.default.createElement(_BaseCard.default, { onClose: this.props.onClose, header: (0, _languageHandler._t)("common|profile") }, /*#__PURE__*/_react.default.createElement(_Flex.Flex, { className: "mx_ThirdPartyMemberInfo", direction: "column", gap: "var(--cpd-space-4x)" }, /*#__PURE__*/_react.default.createElement(_Flex.Flex, { direction: "column", as: "section", justify: "start", gap: "var(--cpd-space-2x)" }, /*#__PURE__*/_react.default.createElement(_compoundWeb.Text, { as: "span", role: "heading", size: "lg", weight: "semibold" }, this.state.displayName), /*#__PURE__*/_react.default.createElement(_compoundWeb.Text, { as: "span" }, (0, _languageHandler._t)("user_info|invited_by", { sender: this.state.senderName }))), adminTools)); } } exports.default = ThirdPartyMemberInfo; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9tYXRyaXgiLCJfbG9nZ2VyIiwiX2NvbXBvdW5kV2ViIiwiX01hdHJpeENsaWVudFBlZyIsIl9sYW5ndWFnZUhhbmRsZXIiLCJfZGlzcGF0Y2hlciIsIl9Nb2RhbCIsIl9Sb29tSW52aXRlIiwiX2FjdGlvbnMiLCJfRXJyb3JEaWFsb2ciLCJfQmFzZUNhcmQiLCJfRmxleCIsIlRoaXJkUGFydHlNZW1iZXJJbmZvIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJldiIsImdldFR5cGUiLCJFdmVudFR5cGUiLCJSb29tVGhpcmRQYXJ0eUludml0ZSIsImdldFN0YXRlS2V5Iiwic3RhdGUiLCJzdGF0ZUtleSIsIm5ld0Rpc3BsYXlOYW1lIiwiZ2V0Q29udGVudCIsImRpc3BsYXlfbmFtZSIsImlzSW52aXRlZCIsImlzVmFsaWQzcGlkSW52aXRlIiwibmV3U3RhdGUiLCJpbnZpdGVkIiwic2V0U3RhdGUiLCJkaXMiLCJkaXNwYXRjaCIsImFjdGlvbiIsIkFjdGlvbiIsIlZpZXczcGlkSW52aXRlIiwiZXZlbnQiLCJNYXRyaXhDbGllbnRQZWciLCJzYWZlR2V0Iiwic2VuZFN0YXRlRXZlbnQiLCJyb29tSWQiLCJjYXRjaCIsImVyciIsImxvZ2dlciIsImVycm9yIiwiTW9kYWwiLCJjcmVhdGVEaWFsb2ciLCJFcnJvckRpYWxvZyIsInRpdGxlIiwiX3QiLCJkZXNjcmlwdGlvbiIsInJvb20iLCJnZXRSb29tIiwiZ2V0Um9vbUlkIiwibWUiLCJnZXRNZW1iZXIiLCJnZXRTYWZlVXNlcklkIiwicG93ZXJMZXZlbHMiLCJjdXJyZW50U3RhdGUiLCJnZXRTdGF0ZUV2ZW50cyIsInNlbmRlcklkIiwiZ2V0U2VuZGVyIiwia2lja0xldmVsIiwia2ljayIsInNlbmRlciIsImRpc3BsYXlOYW1lIiwiY2FuS2ljayIsInBvd2VyTGV2ZWwiLCJzZW5kZXJOYW1lIiwibmFtZSIsImNvbXBvbmVudERpZE1vdW50Iiwib24iLCJSb29tU3RhdGVFdmVudCIsIkV2ZW50cyIsIm9uUm9vbVN0YXRlRXZlbnRzIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJjbGllbnQiLCJnZXQiLCJyZW1vdmVMaXN0ZW5lciIsInJlbmRlciIsImFkbWluVG9vbHMiLCJjcmVhdGVFbGVtZW50IiwiRmxleCIsImRpcmVjdGlvbiIsImFzIiwianVzdGlmeSIsImdhcCIsIlRleHQiLCJyb2xlIiwic2l6ZSIsIndlaWdodCIsIkJ1dHRvbiIsImtpbmQiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwib25LaWNrQ2xpY2siLCJvbkNsb3NlIiwiaGVhZGVyIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL3Jvb21zL1RoaXJkUGFydHlNZW1iZXJJbmZvLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAxOS0yMDIzIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEV2ZW50VHlwZSwgTWF0cml4RXZlbnQsIFJvb20sIFJvb21TdGF0ZUV2ZW50IH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21hdHJpeFwiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL2xvZ2dlclwiO1xuaW1wb3J0IHsgQnV0dG9uLCBUZXh0IH0gZnJvbSBcIkB2ZWN0b3ItaW0vY29tcG91bmQtd2ViXCI7XG5cbmltcG9ydCB7IE1hdHJpeENsaWVudFBlZyB9IGZyb20gXCIuLi8uLi8uLi9NYXRyaXhDbGllbnRQZWdcIjtcbmltcG9ydCB7IF90IH0gZnJvbSBcIi4uLy4uLy4uL2xhbmd1YWdlSGFuZGxlclwiO1xuaW1wb3J0IGRpcyBmcm9tIFwiLi4vLi4vLi4vZGlzcGF0Y2hlci9kaXNwYXRjaGVyXCI7XG5pbXBvcnQgTW9kYWwgZnJvbSBcIi4uLy4uLy4uL01vZGFsXCI7XG5pbXBvcnQgeyBpc1ZhbGlkM3BpZEludml0ZSB9IGZyb20gXCIuLi8uLi8uLi9Sb29tSW52aXRlXCI7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tIFwiLi4vLi4vLi4vZGlzcGF0Y2hlci9hY3Rpb25zXCI7XG5pbXBvcnQgRXJyb3JEaWFsb2cgZnJvbSBcIi4uL2RpYWxvZ3MvRXJyb3JEaWFsb2dcIjtcbmltcG9ydCBCYXNlQ2FyZCBmcm9tIFwiLi4vcmlnaHRfcGFuZWwvQmFzZUNhcmRcIjtcbmltcG9ydCB7IEZsZXggfSBmcm9tIFwiLi4vLi4vdXRpbHMvRmxleFwiO1xuXG5pbnRlcmZhY2UgSVByb3BzIHtcbiAgICBldmVudDogTWF0cml4RXZlbnQ7XG4gICAgb25DbG9zZT86ICgpID0+IHZvaWQ7XG59XG5cbmludGVyZmFjZSBJU3RhdGUge1xuICAgIHN0YXRlS2V5OiBzdHJpbmc7XG4gICAgcm9vbUlkOiBzdHJpbmc7XG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICBpbnZpdGVkOiBib29sZWFuO1xuICAgIGNhbktpY2s6IGJvb2xlYW47XG4gICAgc2VuZGVyTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUaGlyZFBhcnR5TWVtYmVySW5mbyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJUHJvcHMsIElTdGF0ZT4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm9vbTogUm9vbSB8IG51bGw7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJvcHM6IElQcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgICAgdGhpcy5yb29tID0gTWF0cml4Q2xpZW50UGVnLnNhZmVHZXQoKS5nZXRSb29tKHRoaXMucHJvcHMuZXZlbnQuZ2V0Um9vbUlkKCkpO1xuICAgICAgICBjb25zdCBtZSA9IHRoaXMucm9vbT8uZ2V0TWVtYmVyKE1hdHJpeENsaWVudFBlZy5zYWZlR2V0KCkuZ2V0U2FmZVVzZXJJZCgpKTtcbiAgICAgICAgY29uc3QgcG93ZXJMZXZlbHMgPSB0aGlzLnJvb20/LmN1cnJlbnRTdGF0ZS5nZXRTdGF0ZUV2ZW50cyhcIm0ucm9vbS5wb3dlcl9sZXZlbHNcIiwgXCJcIik7XG4gICAgICAgIGNvbnN0IHNlbmRlcklkID0gdGhpcy5wcm9wcy5ldmVudC5nZXRTZW5kZXIoKSE7XG5cbiAgICAgICAgbGV0IGtpY2tMZXZlbCA9IHBvd2VyTGV2ZWxzID8gcG93ZXJMZXZlbHMuZ2V0Q29udGVudCgpLmtpY2sgOiA1MDtcbiAgICAgICAgaWYgKHR5cGVvZiBraWNrTGV2ZWwgIT09IFwibnVtYmVyXCIpIGtpY2tMZXZlbCA9IDUwO1xuXG4gICAgICAgIGNvbnN0IHNlbmRlciA9IHRoaXMucm9vbT8uZ2V0TWVtYmVyKHNlbmRlcklkKTtcblxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgc3RhdGVLZXk6IHRoaXMucHJvcHMuZXZlbnQuZ2V0U3RhdGVLZXkoKSEsXG4gICAgICAgICAgICByb29tSWQ6IHRoaXMucHJvcHMuZXZlbnQuZ2V0Um9vbUlkKCkhLFxuICAgICAgICAgICAgZGlzcGxheU5hbWU6IHRoaXMucHJvcHMuZXZlbnQuZ2V0Q29udGVudCgpLmRpc3BsYXlfbmFtZSxcbiAgICAgICAgICAgIGludml0ZWQ6IHRydWUsXG4gICAgICAgICAgICBjYW5LaWNrOiBtZSA/IG1lLnBvd2VyTGV2ZWwgPiBraWNrTGV2ZWwgOiBmYWxzZSxcbiAgICAgICAgICAgIHNlbmRlck5hbWU6IHNlbmRlcj8ubmFtZSA/PyBzZW5kZXJJZCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29tcG9uZW50RGlkTW91bnQoKTogdm9pZCB7XG4gICAgICAgIE1hdHJpeENsaWVudFBlZy5zYWZlR2V0KCkub24oUm9vbVN0YXRlRXZlbnQuRXZlbnRzLCB0aGlzLm9uUm9vbVN0YXRlRXZlbnRzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29tcG9uZW50V2lsbFVubW91bnQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IE1hdHJpeENsaWVudFBlZy5nZXQoKTtcbiAgICAgICAgaWYgKGNsaWVudCkge1xuICAgICAgICAgICAgY2xpZW50LnJlbW92ZUxpc3RlbmVyKFJvb21TdGF0ZUV2ZW50LkV2ZW50cywgdGhpcy5vblJvb21TdGF0ZUV2ZW50cyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25Sb29tU3RhdGVFdmVudHMgPSAoZXY6IE1hdHJpeEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgIGlmIChldi5nZXRUeXBlKCkgPT09IEV2ZW50VHlwZS5Sb29tVGhpcmRQYXJ0eUludml0ZSAmJiBldi5nZXRTdGF0ZUtleSgpID09PSB0aGlzLnN0YXRlLnN0YXRlS2V5KSB7XG4gICAgICAgICAgICBjb25zdCBuZXdEaXNwbGF5TmFtZSA9IGV2LmdldENvbnRlbnQoKS5kaXNwbGF5X25hbWU7XG4gICAgICAgICAgICBjb25zdCBpc0ludml0ZWQgPSBpc1ZhbGlkM3BpZEludml0ZShldik7XG5cbiAgICAgICAgICAgIGNvbnN0IG5ld1N0YXRlID0geyBpbnZpdGVkOiBpc0ludml0ZWQgfSBhcyBJU3RhdGU7XG4gICAgICAgICAgICBpZiAobmV3RGlzcGxheU5hbWUpIG5ld1N0YXRlW1wiZGlzcGxheU5hbWVcIl0gPSBuZXdEaXNwbGF5TmFtZTtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUobmV3U3RhdGUpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHB1YmxpYyBvbkNhbmNlbCA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgZGlzLmRpc3BhdGNoKHtcbiAgICAgICAgICAgIGFjdGlvbjogQWN0aW9uLlZpZXczcGlkSW52aXRlLFxuICAgICAgICAgICAgZXZlbnQ6IG51bGwsXG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBwdWJsaWMgb25LaWNrQ2xpY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIE1hdHJpeENsaWVudFBlZy5zYWZlR2V0KClcbiAgICAgICAgICAgIC5zZW5kU3RhdGVFdmVudCh0aGlzLnN0YXRlLnJvb21JZCwgRXZlbnRUeXBlLlJvb21UaGlyZFBhcnR5SW52aXRlLCB7fSwgdGhpcy5zdGF0ZS5zdGF0ZUtleSlcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGVycik7XG5cbiAgICAgICAgICAgICAgICAvLyBSZXZlcnQgZWNobyBiZWNhdXNlIG9mIGVycm9yXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGludml0ZWQ6IHRydWUgfSk7XG5cbiAgICAgICAgICAgICAgICBNb2RhbC5jcmVhdGVEaWFsb2coRXJyb3JEaWFsb2csIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF90KFwidXNlcl9pbmZvfGVycm9yX3Jldm9rZV8zcGlkX2ludml0ZV90aXRsZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IF90KFwidXNlcl9pbmZvfGVycm9yX3Jldm9rZV8zcGlkX2ludml0ZV9kZXNjcmlwdGlvblwiKSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIC8vIExvY2FsIGVjaG9cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGludml0ZWQ6IGZhbHNlIH0pO1xuICAgIH07XG5cbiAgICBwdWJsaWMgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gICAgICAgIGxldCBhZG1pblRvb2xzOiBKU1guRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuY2FuS2ljayAmJiB0aGlzLnN0YXRlLmludml0ZWQpIHtcbiAgICAgICAgICAgIGFkbWluVG9vbHMgPSAoXG4gICAgICAgICAgICAgICAgPEZsZXggZGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJzZWN0aW9uXCIganVzdGlmeT1cInN0YXJ0XCIgZ2FwPVwidmFyKC0tY3BkLXNwYWNlLTJ4KVwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiByb2xlPVwiaGVhZGluZ1wiIHNpemU9XCJsZ1wiIHdlaWdodD1cInNlbWlib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7X3QoXCJ1c2VyX2luZm98YWRtaW5fdG9vbHNfc2VjdGlvblwiKX1cbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIHNpemU9XCJzbVwiIGtpbmQ9XCJkZXN0cnVjdGl2ZVwiIGNsYXNzTmFtZT1cIm14X01lbWJlckluZm9fZmllbGRcIiBvbkNsaWNrPXt0aGlzLm9uS2lja0NsaWNrfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtfdChcInVzZXJfaW5mb3xyZXZva2VfaW52aXRlXCIpfVxuICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0ZsZXg+XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxCYXNlQ2FyZCBvbkNsb3NlPXt0aGlzLnByb3BzLm9uQ2xvc2V9IGhlYWRlcj17X3QoXCJjb21tb258cHJvZmlsZVwiKX0+XG4gICAgICAgICAgICAgICAgPEZsZXggY2xhc3NOYW1lPVwibXhfVGhpcmRQYXJ0eU1lbWJlckluZm9cIiBkaXJlY3Rpb249XCJjb2x1bW5cIiBnYXA9XCJ2YXIoLS1jcGQtc3BhY2UtNHgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4IGRpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwic2VjdGlvblwiIGp1c3RpZnk9XCJzdGFydFwiIGdhcD1cInZhcigtLWNwZC1zcGFjZS0yeClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBzYW1lIGFzIHVzZXJpbmZvIG5hbWUgc3R5bGUgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiByb2xlPVwiaGVhZGluZ1wiIHNpemU9XCJsZ1wiIHdlaWdodD1cInNlbWlib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMuc3RhdGUuZGlzcGxheU5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIj57X3QoXCJ1c2VyX2luZm98aW52aXRlZF9ieVwiLCB7IHNlbmRlcjogdGhpcy5zdGF0ZS5zZW5kZXJOYW1lIH0pfTwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4PlxuICAgICAgICAgICAgICAgICAgICB7YWRtaW5Ub29sc31cbiAgICAgICAgICAgICAgICA8L0ZsZXg+XG4gICAgICAgICAgICA8L0Jhc2VDYXJkPlxuICAgICAgICApO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFRQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxZQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxnQkFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssZ0JBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFdBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFPLE1BQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLFdBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLFFBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLFlBQUEsR0FBQVgsc0JBQUEsQ0FBQUMs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