UNPKG

matrix-react-sdk

Version:
96 lines (94 loc) 23 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.NotificationPusherSettings = NotificationPusherSettings; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _matrix = require("matrix-js-sdk/src/matrix"); var _react = _interopRequireWildcard(require("react")); var _MatrixClientContext = require("../../../../contexts/MatrixClientContext"); var _actions = require("../../../../dispatcher/actions"); var _dispatcher = _interopRequireDefault(require("../../../../dispatcher/dispatcher")); var _usePushers = require("../../../../hooks/usePushers"); var _useThreepids = require("../../../../hooks/useThreepids"); var _languageHandler = require("../../../../languageHandler"); var _SdkConfig = _interopRequireDefault(require("../../../../SdkConfig")); var _UserTab = require("../../dialogs/UserTab"); var _AccessibleButton = _interopRequireDefault(require("../../elements/AccessibleButton")); var _LabelledCheckbox = _interopRequireDefault(require("../../elements/LabelledCheckbox")); var _SettingsIndent = require("../shared/SettingsIndent"); var _SettingsSubsection = _interopRequireWildcard(require("../shared/SettingsSubsection")); 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 ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* Copyright 2024 New Vector Ltd. Copyright 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. */ function generalTabButton(content) { return /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { kind: "link_inline", onClick: () => { _dispatcher.default.dispatch({ action: _actions.Action.ViewUserSettings, initialTabId: _UserTab.UserTab.Account }); } }, content); } function NotificationPusherSettings() { const EmailPusherTemplate = (0, _react.useMemo)(() => ({ kind: "email", app_id: "m.email", app_display_name: (0, _languageHandler._t)("notifications|email_pusher_app_display_name"), lang: navigator.language, data: { brand: _SdkConfig.default.get().brand } }), []); const cli = (0, _MatrixClientContext.useMatrixClientContext)(); const [pushers, refreshPushers] = (0, _usePushers.usePushers)(cli); const [threepids, refreshThreepids] = (0, _useThreepids.useThreepids)(cli); const setEmailEnabled = (0, _react.useCallback)((email, enabled) => { if (enabled) { cli.setPusher(_objectSpread(_objectSpread({}, EmailPusherTemplate), {}, { pushkey: email, device_display_name: email, // We always append for email pushers since we don't want to stop other // accounts notifying to the same email address append: true })).catch(err => console.error(err)); } else { const pusher = pushers.find(p => p.kind === "email" && p.pushkey === email); if (pusher) { cli.removePusher(pusher.pushkey, pusher.app_id).catch(err => console.error(err)); } } refreshThreepids(); refreshPushers(); }, [EmailPusherTemplate, cli, pushers, refreshPushers, refreshThreepids]); const notificationTargets = pushers.filter(it => it.kind !== "email"); return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_SettingsSubsection.default, { className: "mx_NotificationPusherSettings", heading: (0, _languageHandler._t)("settings|notifications|email_section") }, /*#__PURE__*/_react.default.createElement(_SettingsSubsection.SettingsSubsectionText, { className: "mx_NotificationPusherSettings_description" }, (0, _languageHandler._t)("settings|notifications|email_description")), /*#__PURE__*/_react.default.createElement("div", { className: "mx_SettingsSubsection_description mx_NotificationPusherSettings_detail" }, /*#__PURE__*/_react.default.createElement(_SettingsSubsection.SettingsSubsectionText, null, (0, _languageHandler._t)("settings|notifications|email_select", {}, { button: generalTabButton }))), /*#__PURE__*/_react.default.createElement(_SettingsIndent.SettingsIndent, null, threepids.filter(t => t.medium === _matrix.ThreepidMedium.Email).map(email => /*#__PURE__*/_react.default.createElement(_LabelledCheckbox.default, { key: email.address, label: email.address, value: pushers.find(it => it.pushkey === email.address) !== undefined, onChange: value => setEmailEnabled(email.address, value) })))), notificationTargets.length > 0 && /*#__PURE__*/_react.default.createElement(_SettingsSubsection.default, { heading: (0, _languageHandler._t)("settings|notifications|push_targets") }, /*#__PURE__*/_react.default.createElement("ul", null, pushers.filter(it => it.kind !== "email").map(pusher => /*#__PURE__*/_react.default.createElement("li", { key: pusher.pushkey }, pusher.device_display_name || pusher.app_display_name))))); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWF0cml4IiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX01hdHJpeENsaWVudENvbnRleHQiLCJfYWN0aW9ucyIsIl9kaXNwYXRjaGVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91c2VQdXNoZXJzIiwiX3VzZVRocmVlcGlkcyIsIl9sYW5ndWFnZUhhbmRsZXIiLCJfU2RrQ29uZmlnIiwiX1VzZXJUYWIiLCJfQWNjZXNzaWJsZUJ1dHRvbiIsIl9MYWJlbGxlZENoZWNrYm94IiwiX1NldHRpbmdzSW5kZW50IiwiX1NldHRpbmdzU3Vic2VjdGlvbiIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImdlbmVyYWxUYWJCdXR0b24iLCJjb250ZW50IiwiY3JlYXRlRWxlbWVudCIsImtpbmQiLCJvbkNsaWNrIiwiZGlzcGF0Y2hlciIsImRpc3BhdGNoIiwiYWN0aW9uIiwiQWN0aW9uIiwiVmlld1VzZXJTZXR0aW5ncyIsImluaXRpYWxUYWJJZCIsIlVzZXJUYWIiLCJBY2NvdW50IiwiTm90aWZpY2F0aW9uUHVzaGVyU2V0dGluZ3MiLCJFbWFpbFB1c2hlclRlbXBsYXRlIiwidXNlTWVtbyIsImFwcF9pZCIsImFwcF9kaXNwbGF5X25hbWUiLCJfdCIsImxhbmciLCJuYXZpZ2F0b3IiLCJsYW5ndWFnZSIsImRhdGEiLCJicmFuZCIsIlNka0NvbmZpZyIsImNsaSIsInVzZU1hdHJpeENsaWVudENvbnRleHQiLCJwdXNoZXJzIiwicmVmcmVzaFB1c2hlcnMiLCJ1c2VQdXNoZXJzIiwidGhyZWVwaWRzIiwicmVmcmVzaFRocmVlcGlkcyIsInVzZVRocmVlcGlkcyIsInNldEVtYWlsRW5hYmxlZCIsInVzZUNhbGxiYWNrIiwiZW1haWwiLCJlbmFibGVkIiwic2V0UHVzaGVyIiwicHVzaGtleSIsImRldmljZV9kaXNwbGF5X25hbWUiLCJhcHBlbmQiLCJjYXRjaCIsImVyciIsImNvbnNvbGUiLCJlcnJvciIsInB1c2hlciIsImZpbmQiLCJwIiwicmVtb3ZlUHVzaGVyIiwibm90aWZpY2F0aW9uVGFyZ2V0cyIsIml0IiwiRnJhZ21lbnQiLCJjbGFzc05hbWUiLCJoZWFkaW5nIiwiU2V0dGluZ3NTdWJzZWN0aW9uVGV4dCIsImJ1dHRvbiIsIlNldHRpbmdzSW5kZW50IiwibWVkaXVtIiwiVGhyZWVwaWRNZWRpdW0iLCJFbWFpbCIsIm1hcCIsImtleSIsImFkZHJlc3MiLCJsYWJlbCIsInZhbHVlIiwidW5kZWZpbmVkIiwib25DaGFuZ2UiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy92aWV3cy9zZXR0aW5ncy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblB1c2hlclNldHRpbmdzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMyBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgeyBUaHJlZXBpZE1lZGl1bSwgSVB1c2hlciB9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy9tYXRyaXhcIjtcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyB1c2VNYXRyaXhDbGllbnRDb250ZXh0IH0gZnJvbSBcIi4uLy4uLy4uLy4uL2NvbnRleHRzL01hdHJpeENsaWVudENvbnRleHRcIjtcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gXCIuLi8uLi8uLi8uLi9kaXNwYXRjaGVyL2FjdGlvbnNcIjtcbmltcG9ydCBkaXNwYXRjaGVyIGZyb20gXCIuLi8uLi8uLi8uLi9kaXNwYXRjaGVyL2Rpc3BhdGNoZXJcIjtcbmltcG9ydCB7IHVzZVB1c2hlcnMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlUHVzaGVyc1wiO1xuaW1wb3J0IHsgdXNlVGhyZWVwaWRzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2hvb2tzL3VzZVRocmVlcGlkc1wiO1xuaW1wb3J0IHsgX3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vbGFuZ3VhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgU2RrQ29uZmlnIGZyb20gXCIuLi8uLi8uLi8uLi9TZGtDb25maWdcIjtcbmltcG9ydCB7IFVzZXJUYWIgfSBmcm9tIFwiLi4vLi4vZGlhbG9ncy9Vc2VyVGFiXCI7XG5pbXBvcnQgQWNjZXNzaWJsZUJ1dHRvbiBmcm9tIFwiLi4vLi4vZWxlbWVudHMvQWNjZXNzaWJsZUJ1dHRvblwiO1xuaW1wb3J0IExhYmVsbGVkQ2hlY2tib3ggZnJvbSBcIi4uLy4uL2VsZW1lbnRzL0xhYmVsbGVkQ2hlY2tib3hcIjtcbmltcG9ydCB7IFNldHRpbmdzSW5kZW50IH0gZnJvbSBcIi4uL3NoYXJlZC9TZXR0aW5nc0luZGVudFwiO1xuaW1wb3J0IFNldHRpbmdzU3Vic2VjdGlvbiwgeyBTZXR0aW5nc1N1YnNlY3Rpb25UZXh0IH0gZnJvbSBcIi4uL3NoYXJlZC9TZXR0aW5nc1N1YnNlY3Rpb25cIjtcblxuZnVuY3Rpb24gZ2VuZXJhbFRhYkJ1dHRvbihjb250ZW50OiBzdHJpbmcpOiBKU1guRWxlbWVudCB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPEFjY2Vzc2libGVCdXR0b25cbiAgICAgICAgICAgIGtpbmQ9XCJsaW5rX2lubGluZVwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2hlci5kaXNwYXRjaCh7XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbjogQWN0aW9uLlZpZXdVc2VyU2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxUYWJJZDogVXNlclRhYi5BY2NvdW50LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgICAge2NvbnRlbnR9XG4gICAgICAgIDwvQWNjZXNzaWJsZUJ1dHRvbj5cbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTm90aWZpY2F0aW9uUHVzaGVyU2V0dGluZ3MoKTogSlNYLkVsZW1lbnQge1xuICAgIGNvbnN0IEVtYWlsUHVzaGVyVGVtcGxhdGU6IE9taXQ8SVB1c2hlciwgXCJwdXNoa2V5XCIgfCBcImRldmljZV9kaXNwbGF5X25hbWVcIiB8IFwiYXBwZW5kXCI+ID0gdXNlTWVtbyhcbiAgICAgICAgKCkgPT4gKHtcbiAgICAgICAgICAgIGtpbmQ6IFwiZW1haWxcIixcbiAgICAgICAgICAgIGFwcF9pZDogXCJtLmVtYWlsXCIsXG4gICAgICAgICAgICBhcHBfZGlzcGxheV9uYW1lOiBfdChcIm5vdGlmaWNhdGlvbnN8ZW1haWxfcHVzaGVyX2FwcF9kaXNwbGF5X25hbWVcIiksXG4gICAgICAgICAgICBsYW5nOiBuYXZpZ2F0b3IubGFuZ3VhZ2UsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgYnJhbmQ6IFNka0NvbmZpZy5nZXQoKS5icmFuZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgICBbXSxcbiAgICApO1xuXG4gICAgY29uc3QgY2xpID0gdXNlTWF0cml4Q2xpZW50Q29udGV4dCgpO1xuICAgIGNvbnN0IFtwdXNoZXJzLCByZWZyZXNoUHVzaGVyc10gPSB1c2VQdXNoZXJzKGNsaSk7XG4gICAgY29uc3QgW3RocmVlcGlkcywgcmVmcmVzaFRocmVlcGlkc10gPSB1c2VUaHJlZXBpZHMoY2xpKTtcblxuICAgIGNvbnN0IHNldEVtYWlsRW5hYmxlZCA9IHVzZUNhbGxiYWNrKFxuICAgICAgICAoZW1haWw6IHN0cmluZywgZW5hYmxlZDogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBjbGkuc2V0UHVzaGVyKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uRW1haWxQdXNoZXJUZW1wbGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgcHVzaGtleTogZW1haWwsXG4gICAgICAgICAgICAgICAgICAgIGRldmljZV9kaXNwbGF5X25hbWU6IGVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAvLyBXZSBhbHdheXMgYXBwZW5kIGZvciBlbWFpbCBwdXNoZXJzIHNpbmNlIHdlIGRvbid0IHdhbnQgdG8gc3RvcCBvdGhlclxuICAgICAgICAgICAgICAgICAgICAvLyBhY2NvdW50cyBub3RpZnlpbmcgdG8gdGhlIHNhbWUgZW1haWwgYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgICBhcHBlbmQ6IHRydWUsXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycikgPT4gY29uc29sZS5lcnJvcihlcnIpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHVzaGVyID0gcHVzaGVycy5maW5kKChwKSA9PiBwLmtpbmQgPT09IFwiZW1haWxcIiAmJiBwLnB1c2hrZXkgPT09IGVtYWlsKTtcbiAgICAgICAgICAgICAgICBpZiAocHVzaGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsaS5yZW1vdmVQdXNoZXIocHVzaGVyLnB1c2hrZXksIHB1c2hlci5hcHBfaWQpLmNhdGNoKChlcnIpID0+IGNvbnNvbGUuZXJyb3IoZXJyKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVmcmVzaFRocmVlcGlkcygpO1xuICAgICAgICAgICAgcmVmcmVzaFB1c2hlcnMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgW0VtYWlsUHVzaGVyVGVtcGxhdGUsIGNsaSwgcHVzaGVycywgcmVmcmVzaFB1c2hlcnMsIHJlZnJlc2hUaHJlZXBpZHNdLFxuICAgICk7XG5cbiAgICBjb25zdCBub3RpZmljYXRpb25UYXJnZXRzID0gcHVzaGVycy5maWx0ZXIoKGl0KSA9PiBpdC5raW5kICE9PSBcImVtYWlsXCIpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIDxTZXR0aW5nc1N1YnNlY3Rpb25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteF9Ob3RpZmljYXRpb25QdXNoZXJTZXR0aW5nc1wiXG4gICAgICAgICAgICAgICAgaGVhZGluZz17X3QoXCJzZXR0aW5nc3xub3RpZmljYXRpb25zfGVtYWlsX3NlY3Rpb25cIil9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNldHRpbmdzU3Vic2VjdGlvblRleHQgY2xhc3NOYW1lPVwibXhfTm90aWZpY2F0aW9uUHVzaGVyU2V0dGluZ3NfZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAge190KFwic2V0dGluZ3N8bm90aWZpY2F0aW9uc3xlbWFpbF9kZXNjcmlwdGlvblwiKX1cbiAgICAgICAgICAgICAgICA8L1NldHRpbmdzU3Vic2VjdGlvblRleHQ+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9TZXR0aW5nc1N1YnNlY3Rpb25fZGVzY3JpcHRpb24gbXhfTm90aWZpY2F0aW9uUHVzaGVyU2V0dGluZ3NfZGV0YWlsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxTZXR0aW5nc1N1YnNlY3Rpb25UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAge190KFwic2V0dGluZ3N8bm90aWZpY2F0aW9uc3xlbWFpbF9zZWxlY3RcIiwge30sIHsgYnV0dG9uOiBnZW5lcmFsVGFiQnV0dG9uIH0pfVxuICAgICAgICAgICAgICAgICAgICA8L1NldHRpbmdzU3Vic2VjdGlvblRleHQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPFNldHRpbmdzSW5kZW50PlxuICAgICAgICAgICAgICAgICAgICB7dGhyZWVwaWRzXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKCh0KSA9PiB0Lm1lZGl1bSA9PT0gVGhyZWVwaWRNZWRpdW0uRW1haWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKChlbWFpbCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYWJlbGxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17ZW1haWwuYWRkcmVzc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e2VtYWlsLmFkZHJlc3N9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwdXNoZXJzLmZpbmQoKGl0KSA9PiBpdC5wdXNoa2V5ID09PSBlbWFpbC5hZGRyZXNzKSAhPT0gdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRFbWFpbEVuYWJsZWQoZW1haWwuYWRkcmVzcywgdmFsdWUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L1NldHRpbmdzSW5kZW50PlxuICAgICAgICAgICAgPC9TZXR0aW5nc1N1YnNlY3Rpb24+XG4gICAgICAgICAgICB7bm90aWZpY2F0aW9uVGFyZ2V0cy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgICA8U2V0dGluZ3NTdWJzZWN0aW9uIGhlYWRpbmc9e190KFwic2V0dGluZ3N8bm90aWZpY2F0aW9uc3xwdXNoX3RhcmdldHNcIil9PlxuICAgICAgICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgICAgICAgICB7cHVzaGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0KSA9PiBpdC5raW5kICE9PSBcImVtYWlsXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgocHVzaGVyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBrZXk9e3B1c2hlci5wdXNoa2V5fT57cHVzaGVyLmRldmljZV9kaXNwbGF5X25hbWUgfHwgcHVzaGVyLmFwcF9kaXNwbGF5X25hbWV9PC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICA8L1NldHRpbmdzU3Vic2VjdGlvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBUUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsb0JBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFFBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFdBQUEsR0FBQUMsc0JBQUEsQ0FBQU4sT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGFBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLGdCQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxVQUFBLEdBQUFKLHNCQUFBLENBQUFOLE9BQUE7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