matrix-react-sdk
Version:
SDK for matrix.org using React
76 lines (73 loc) • 13.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useNotificationSettings = useNotificationSettings;
var _react = require("react");
var _reconcileNotificationSettings = require("../models/notificationsettings/reconcileNotificationSettings");
var _toNotificationSettings = require("../models/notificationsettings/toNotificationSettings");
/*
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.
*/
async function applyChanges(cli, changes) {
await Promise.all(changes.deleted.map(change => cli.deletePushRule("global", change.kind, change.rule_id)));
await Promise.all(changes.added.map(change => cli.addPushRule("global", change.kind, change.rule_id, change)));
await Promise.all(changes.updated.map(async change => {
if (change.enabled !== undefined) {
await cli.setPushRuleEnabled("global", change.kind, change.rule_id, change.enabled);
}
if (change.actions !== undefined) {
await cli.setPushRuleActions("global", change.kind, change.rule_id, change.actions);
}
}));
}
function useNotificationSettings(cli) {
const run = useLinearisedPromise();
const supportsIntentionalMentions = (0, _react.useMemo)(() => cli.supportsIntentionalMentions(), [cli]);
const pushRules = (0, _react.useRef)(null);
const [model, setModel] = (0, _react.useState)(null);
const [hasPendingChanges, setPendingChanges] = (0, _react.useState)(false);
const updatePushRules = (0, _react.useCallback)(async () => {
const rules = await cli.getPushRules();
const model = (0, _toNotificationSettings.toNotificationSettings)(rules, supportsIntentionalMentions);
const pendingChanges = (0, _reconcileNotificationSettings.reconcileNotificationSettings)(rules, model, supportsIntentionalMentions);
pushRules.current = rules;
setPendingChanges(pendingChanges.updated.length > 0 || pendingChanges.added.length > 0 || pendingChanges.deleted.length > 0);
setModel(model);
}, [cli, supportsIntentionalMentions]);
(0, _react.useEffect)(() => {
run(updatePushRules).catch(err => console.error(err));
}, [cli, run, updatePushRules]);
const reconcile = (0, _react.useCallback)(model => {
setModel(model);
run(async () => {
if (pushRules.current !== null) {
const changes = (0, _reconcileNotificationSettings.reconcileNotificationSettings)(pushRules.current, model, supportsIntentionalMentions);
await applyChanges(cli, changes);
await updatePushRules();
}
}).catch(err => console.error(err));
}, [run, supportsIntentionalMentions, cli, updatePushRules]);
return {
model,
hasPendingChanges,
reconcile
};
}
function useLinearisedPromise() {
const lastPromise = (0, _react.useRef)(null);
return (0, _react.useCallback)(fun => {
let next;
if (lastPromise.current === null) {
next = fun();
} else {
next = lastPromise.current.then(fun);
}
lastPromise.current = next;
return next;
}, []);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3JlY29uY2lsZU5vdGlmaWNhdGlvblNldHRpbmdzIiwiX3RvTm90aWZpY2F0aW9uU2V0dGluZ3MiLCJhcHBseUNoYW5nZXMiLCJjbGkiLCJjaGFuZ2VzIiwiUHJvbWlzZSIsImFsbCIsImRlbGV0ZWQiLCJtYXAiLCJjaGFuZ2UiLCJkZWxldGVQdXNoUnVsZSIsImtpbmQiLCJydWxlX2lkIiwiYWRkZWQiLCJhZGRQdXNoUnVsZSIsInVwZGF0ZWQiLCJlbmFibGVkIiwidW5kZWZpbmVkIiwic2V0UHVzaFJ1bGVFbmFibGVkIiwiYWN0aW9ucyIsInNldFB1c2hSdWxlQWN0aW9ucyIsInVzZU5vdGlmaWNhdGlvblNldHRpbmdzIiwicnVuIiwidXNlTGluZWFyaXNlZFByb21pc2UiLCJzdXBwb3J0c0ludGVudGlvbmFsTWVudGlvbnMiLCJ1c2VNZW1vIiwicHVzaFJ1bGVzIiwidXNlUmVmIiwibW9kZWwiLCJzZXRNb2RlbCIsInVzZVN0YXRlIiwiaGFzUGVuZGluZ0NoYW5nZXMiLCJzZXRQZW5kaW5nQ2hhbmdlcyIsInVwZGF0ZVB1c2hSdWxlcyIsInVzZUNhbGxiYWNrIiwicnVsZXMiLCJnZXRQdXNoUnVsZXMiLCJ0b05vdGlmaWNhdGlvblNldHRpbmdzIiwicGVuZGluZ0NoYW5nZXMiLCJyZWNvbmNpbGVOb3RpZmljYXRpb25TZXR0aW5ncyIsImN1cnJlbnQiLCJsZW5ndGgiLCJ1c2VFZmZlY3QiLCJjYXRjaCIsImVyciIsImNvbnNvbGUiLCJlcnJvciIsInJlY29uY2lsZSIsImxhc3RQcm9taXNlIiwiZnVuIiwibmV4dCIsInRoZW4iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlTm90aWZpY2F0aW9uU2V0dGluZ3MudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIzIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCB7IElQdXNoUnVsZXMsIE1hdHJpeENsaWVudCB9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy9tYXRyaXhcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2V0dGluZ3MgfSBmcm9tIFwiLi4vbW9kZWxzL25vdGlmaWNhdGlvbnNldHRpbmdzL05vdGlmaWNhdGlvblNldHRpbmdzXCI7XG5pbXBvcnQgeyBQdXNoUnVsZURpZmYgfSBmcm9tIFwiLi4vbW9kZWxzL25vdGlmaWNhdGlvbnNldHRpbmdzL1B1c2hSdWxlRGlmZlwiO1xuaW1wb3J0IHsgcmVjb25jaWxlTm90aWZpY2F0aW9uU2V0dGluZ3MgfSBmcm9tIFwiLi4vbW9kZWxzL25vdGlmaWNhdGlvbnNldHRpbmdzL3JlY29uY2lsZU5vdGlmaWNhdGlvblNldHRpbmdzXCI7XG5pbXBvcnQgeyB0b05vdGlmaWNhdGlvblNldHRpbmdzIH0gZnJvbSBcIi4uL21vZGVscy9ub3RpZmljYXRpb25zZXR0aW5ncy90b05vdGlmaWNhdGlvblNldHRpbmdzXCI7XG5cbmFzeW5jIGZ1bmN0aW9uIGFwcGx5Q2hhbmdlcyhjbGk6IE1hdHJpeENsaWVudCwgY2hhbmdlczogUHVzaFJ1bGVEaWZmKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoY2hhbmdlcy5kZWxldGVkLm1hcCgoY2hhbmdlKSA9PiBjbGkuZGVsZXRlUHVzaFJ1bGUoXCJnbG9iYWxcIiwgY2hhbmdlLmtpbmQsIGNoYW5nZS5ydWxlX2lkKSkpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKGNoYW5nZXMuYWRkZWQubWFwKChjaGFuZ2UpID0+IGNsaS5hZGRQdXNoUnVsZShcImdsb2JhbFwiLCBjaGFuZ2Uua2luZCwgY2hhbmdlLnJ1bGVfaWQsIGNoYW5nZSkpKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgY2hhbmdlcy51cGRhdGVkLm1hcChhc3luYyAoY2hhbmdlKSA9PiB7XG4gICAgICAgICAgICBpZiAoY2hhbmdlLmVuYWJsZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGNsaS5zZXRQdXNoUnVsZUVuYWJsZWQoXCJnbG9iYWxcIiwgY2hhbmdlLmtpbmQsIGNoYW5nZS5ydWxlX2lkLCBjaGFuZ2UuZW5hYmxlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hhbmdlLmFjdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGNsaS5zZXRQdXNoUnVsZUFjdGlvbnMoXCJnbG9iYWxcIiwgY2hhbmdlLmtpbmQsIGNoYW5nZS5ydWxlX2lkLCBjaGFuZ2UuYWN0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICk7XG59XG5cbnR5cGUgVXNlTm90aWZpY2F0aW9uU2V0dGluZ3MgPSB7XG4gICAgbW9kZWw6IE5vdGlmaWNhdGlvblNldHRpbmdzIHwgbnVsbDtcbiAgICBoYXNQZW5kaW5nQ2hhbmdlczogYm9vbGVhbjtcbiAgICByZWNvbmNpbGU6IChtb2RlbDogTm90aWZpY2F0aW9uU2V0dGluZ3MpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlTm90aWZpY2F0aW9uU2V0dGluZ3MoY2xpOiBNYXRyaXhDbGllbnQpOiBVc2VOb3RpZmljYXRpb25TZXR0aW5ncyB7XG4gICAgY29uc3QgcnVuID0gdXNlTGluZWFyaXNlZFByb21pc2U8dm9pZD4oKTtcbiAgICBjb25zdCBzdXBwb3J0c0ludGVudGlvbmFsTWVudGlvbnMgPSB1c2VNZW1vKCgpID0+IGNsaS5zdXBwb3J0c0ludGVudGlvbmFsTWVudGlvbnMoKSwgW2NsaV0pO1xuXG4gICAgY29uc3QgcHVzaFJ1bGVzID0gdXNlUmVmPElQdXNoUnVsZXMgfCBudWxsPihudWxsKTtcbiAgICBjb25zdCBbbW9kZWwsIHNldE1vZGVsXSA9IHVzZVN0YXRlPE5vdGlmaWNhdGlvblNldHRpbmdzIHwgbnVsbD4obnVsbCk7XG4gICAgY29uc3QgW2hhc1BlbmRpbmdDaGFuZ2VzLCBzZXRQZW5kaW5nQ2hhbmdlc10gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG4gICAgY29uc3QgdXBkYXRlUHVzaFJ1bGVzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBydWxlcyA9IGF3YWl0IGNsaS5nZXRQdXNoUnVsZXMoKTtcbiAgICAgICAgY29uc3QgbW9kZWwgPSB0b05vdGlmaWNhdGlvblNldHRpbmdzKHJ1bGVzLCBzdXBwb3J0c0ludGVudGlvbmFsTWVudGlvbnMpO1xuICAgICAgICBjb25zdCBwZW5kaW5nQ2hhbmdlcyA9IHJlY29uY2lsZU5vdGlmaWNhdGlvblNldHRpbmdzKHJ1bGVzLCBtb2RlbCwgc3VwcG9ydHNJbnRlbnRpb25hbE1lbnRpb25zKTtcbiAgICAgICAgcHVzaFJ1bGVzLmN1cnJlbnQgPSBydWxlcztcbiAgICAgICAgc2V0UGVuZGluZ0NoYW5nZXMoXG4gICAgICAgICAgICBwZW5kaW5nQ2hhbmdlcy51cGRhdGVkLmxlbmd0aCA+IDAgfHwgcGVuZGluZ0NoYW5nZXMuYWRkZWQubGVuZ3RoID4gMCB8fCBwZW5kaW5nQ2hhbmdlcy5kZWxldGVkLmxlbmd0aCA+IDAsXG4gICAgICAgICk7XG4gICAgICAgIHNldE1vZGVsKG1vZGVsKTtcbiAgICB9LCBbY2xpLCBzdXBwb3J0c0ludGVudGlvbmFsTWVudGlvbnNdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHJ1bih1cGRhdGVQdXNoUnVsZXMpLmNhdGNoKChlcnIpID0+IGNvbnNvbGUuZXJyb3IoZXJyKSk7XG4gICAgfSwgW2NsaSwgcnVuLCB1cGRhdGVQdXNoUnVsZXNdKTtcblxuICAgIGNvbnN0IHJlY29uY2lsZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgICAobW9kZWw6IE5vdGlmaWNhdGlvblNldHRpbmdzKSA9PiB7XG4gICAgICAgICAgICBzZXRNb2RlbChtb2RlbCk7XG4gICAgICAgICAgICBydW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwdXNoUnVsZXMuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFuZ2VzID0gcmVjb25jaWxlTm90aWZpY2F0aW9uU2V0dGluZ3MoXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXNoUnVsZXMuY3VycmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNJbnRlbnRpb25hbE1lbnRpb25zLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBhcHBseUNoYW5nZXMoY2xpLCBjaGFuZ2VzKTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdXBkYXRlUHVzaFJ1bGVzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkuY2F0Y2goKGVycikgPT4gY29uc29sZS5lcnJvcihlcnIpKTtcbiAgICAgICAgfSxcbiAgICAgICAgW3J1biwgc3VwcG9ydHNJbnRlbnRpb25hbE1lbnRpb25zLCBjbGksIHVwZGF0ZVB1c2hSdWxlc10sXG4gICAgKTtcblxuICAgIHJldHVybiB7IG1vZGVsLCBoYXNQZW5kaW5nQ2hhbmdlcywgcmVjb25jaWxlIH07XG59XG5cbmZ1bmN0aW9uIHVzZUxpbmVhcmlzZWRQcm9taXNlPFQ+KCk6IChmdW46ICgpID0+IFByb21pc2U8VD4pID0+IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IGxhc3RQcm9taXNlID0gdXNlUmVmPFByb21pc2U8VD4gfCBudWxsPihudWxsKTtcblxuICAgIHJldHVybiB1c2VDYWxsYmFjaygoZnVuOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiA9PiB7XG4gICAgICAgIGxldCBuZXh0OiBQcm9taXNlPFQ+O1xuICAgICAgICBpZiAobGFzdFByb21pc2UuY3VycmVudCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgbmV4dCA9IGZ1bigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV4dCA9IGxhc3RQcm9taXNlLmN1cnJlbnQudGhlbihmdW4pO1xuICAgICAgICB9XG4gICAgICAgIGxhc3RQcm9taXNlLmN1cnJlbnQgPSBuZXh0O1xuICAgICAgICByZXR1cm4gbmV4dDtcbiAgICB9LCBbXSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQVNBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUlBLElBQUFDLDhCQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSx1QkFBQSxHQUFBRixPQUFBO0FBZEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBVUEsZUFBZUcsWUFBWUEsQ0FBQ0MsR0FBaUIsRUFBRUMsT0FBcUIsRUFBaUI7RUFDakYsTUFBTUMsT0FBTyxDQUFDQyxHQUFHLENBQUNGLE9BQU8sQ0FBQ0csT0FBTyxDQUFDQyxHQUFHLENBQUVDLE1BQU0sSUFBS04sR0FBRyxDQUFDTyxjQUFjLENBQUMsUUFBUSxFQUFFRCxNQUFNLENBQUNFLElBQUksRUFBRUYsTUFBTSxDQUFDRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0VBQzdHLE1BQU1QLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDRixPQUFPLENBQUNTLEtBQUssQ0FBQ0wsR0FBRyxDQUFFQyxNQUFNLElBQUtOLEdBQUcsQ0FBQ1csV0FBVyxDQUFDLFFBQVEsRUFBRUwsTUFBTSxDQUFDRSxJQUFJLEVBQUVGLE1BQU0sQ0FBQ0csT0FBTyxFQUFFSCxNQUFNLENBQUMsQ0FBQyxDQUFDO0VBQ2hILE1BQU1KLE9BQU8sQ0FBQ0MsR0FBRyxDQUNiRixPQUFPLENBQUNXLE9BQU8sQ0FBQ1AsR0FBRyxDQUFDLE1BQU9DLE1BQU0sSUFBSztJQUNsQyxJQUFJQSxNQUFNLENBQUNPLE9BQU8sS0FBS0MsU0FBUyxFQUFFO01BQzlCLE1BQU1kLEdBQUcsQ0FBQ2Usa0JBQWtCLENBQUMsUUFBUSxFQUFFVCxNQUFNLENBQUNFLElBQUksRUFBRUYsTUFBTSxDQUFDRyxPQUFPLEVBQUVILE1BQU0sQ0FBQ08sT0FBTyxDQUFDO0lBQ3ZGO0lBQ0EsSUFBSVAsTUFBTSxDQUFDVSxPQUFPLEtBQUtGLFNBQVMsRUFBRTtNQUM5QixNQUFNZCxHQUFHLENBQUNpQixrQkFBa0IsQ0FBQyxRQUFRLEVBQUVYLE1BQU0sQ0FBQ0UsSUFBSSxFQUFFRixNQUFNLENBQUNHLE9BQU8sRUFBRUgsTUFBTSxDQUFDVSxPQUFPLENBQUM7SUFDdkY7RUFDSixDQUFDLENBQ0wsQ0FBQztBQUNMO0FBUU8sU0FBU0UsdUJBQXVCQSxDQUFDbEIsR0FBaUIsRUFBMkI7RUFDaEYsTUFBTW1CLEdBQUcsR0FBR0Msb0JBQW9CLENBQU8sQ0FBQztFQUN4QyxNQUFNQywyQkFBMkIsR0FBRyxJQUFBQyxjQUFPLEVBQUMsTUFBTXRCLEdBQUcsQ0FBQ3FCLDJCQUEyQixDQUFDLENBQUMsRUFBRSxDQUFDckIsR0FBRyxDQUFDLENBQUM7RUFFM0YsTUFBTXVCLFNBQVMsR0FBRyxJQUFBQyxhQUFNLEVBQW9CLElBQUksQ0FBQztFQUNqRCxNQUFNLENBQUNDLEtBQUssRUFBRUMsUUFBUSxDQUFDLEdBQUcsSUFBQUMsZUFBUSxFQUE4QixJQUFJLENBQUM7RUFDckUsTUFBTSxDQUFDQyxpQkFBaUIsRUFBRUMsaUJBQWlCLENBQUMsR0FBRyxJQUFBRixlQUFRLEVBQVUsS0FBSyxDQUFDO0VBQ3ZFLE1BQU1HLGVBQWUsR0FBRyxJQUFBQyxrQkFBVyxFQUFDLFlBQVk7SUFDNUMsTUFBTUMsS0FBSyxHQUFHLE1BQU1oQyxHQUFHLENBQUNpQyxZQUFZLENBQUMsQ0FBQztJQUN0QyxNQUFNUixLQUFLLEdBQUcsSUFBQVMsOENBQXNCLEVBQUNGLEtBQUssRUFBRVgsMkJBQTJCLENBQUM7SUFDeEUsTUFBTWMsY0FBYyxHQUFHLElBQUFDLDREQUE2QixFQUFDSixLQUFLLEVBQUVQLEtBQUssRUFBRUosMkJBQTJCLENBQUM7SUFDL0ZFLFNBQVMsQ0FBQ2MsT0FBTyxHQUFHTCxLQUFLO0lBQ3pCSCxpQkFBaUIsQ0FDYk0sY0FBYyxDQUFDdkIsT0FBTyxDQUFDMEIsTUFBTSxHQUFHLENBQUMsSUFBSUgsY0FBYyxDQUFDekIsS0FBSyxDQUFDNEIsTUFBTSxHQUFHLENBQUMsSUFBSUgsY0FBYyxDQUFDL0IsT0FBTyxDQUFDa0MsTUFBTSxHQUFHLENBQzVHLENBQUM7SUFDRFosUUFBUSxDQUFDRCxLQUFLLENBQUM7RUFDbkIsQ0FBQyxFQUFFLENBQUN6QixHQUFHLEVBQUVxQiwyQkFBMkIsQ0FBQyxDQUFDO0VBRXRDLElBQUFrQixnQkFBUyxFQUFDLE1BQU07SUFDWnBCLEdBQUcsQ0FBQ1csZUFBZSxDQUFDLENBQUNVLEtBQUssQ0FBRUMsR0FBRyxJQUFLQyxPQUFPLENBQUNDLEtBQUssQ0FBQ0YsR0FBRyxDQUFDLENBQUM7RUFDM0QsQ0FBQyxFQUFFLENBQUN6QyxHQUFHLEVBQUVtQixHQUFHLEVBQUVXLGVBQWUsQ0FBQyxDQUFDO0VBRS9CLE1BQU1jLFNBQVMsR0FBRyxJQUFBYixrQkFBVyxFQUN4Qk4sS0FBMkIsSUFBSztJQUM3QkMsUUFBUSxDQUFDRCxLQUFLLENBQUM7SUFDZk4sR0FBRyxDQUFDLFlBQVk7TUFDWixJQUFJSSxTQUFTLENBQUNjLE9BQU8sS0FBSyxJQUFJLEVBQUU7UUFDNUIsTUFBTXBDLE9BQU8sR0FBRyxJQUFBbUMsNERBQTZCLEVBQ3pDYixTQUFTLENBQUNjLE9BQU8sRUFDakJaLEtBQUssRUFDTEosMkJBQ0osQ0FBQztRQUNELE1BQU10QixZQUFZLENBQUNDLEdBQUcsRUFBRUMsT0FBTyxDQUFDO1FBQ2hDLE1BQU02QixlQUFlLENBQUMsQ0FBQztNQUMzQjtJQUNKLENBQUMsQ0FBQyxDQUFDVSxLQUFLLENBQUVDLEdBQUcsSUFBS0MsT0FBTyxDQUFDQyxLQUFLLENBQUNGLEdBQUcsQ0FBQyxDQUFDO0VBQ3pDLENBQUMsRUFDRCxDQUFDdEIsR0FBRyxFQUFFRSwyQkFBMkIsRUFBRXJCLEdBQUcsRUFBRThCLGVBQWUsQ0FDM0QsQ0FBQztFQUVELE9BQU87SUFBRUwsS0FBSztJQUFFRyxpQkFBaUI7SUFBRWdCO0VBQVUsQ0FBQztBQUNsRDtBQUVBLFNBQVN4QixvQkFBb0JBLENBQUEsRUFBNkM7RUFDdEUsTUFBTXlCLFdBQVcsR0FBRyxJQUFBckIsYUFBTSxFQUFvQixJQUFJLENBQUM7RUFFbkQsT0FBTyxJQUFBTyxrQkFBVyxFQUFFZSxHQUFxQixJQUFpQjtJQUN0RCxJQUFJQyxJQUFnQjtJQUNwQixJQUFJRixXQUFXLENBQUNSLE9BQU8sS0FBSyxJQUFJLEVBQUU7TUFDOUJVLElBQUksR0FBR0QsR0FBRyxDQUFDLENBQUM7SUFDaEIsQ0FBQyxNQUFNO01BQ0hDLElBQUksR0FBR0YsV0FBVyxDQUFDUixPQUFPLENBQUNXLElBQUksQ0FBQ0YsR0FBRyxDQUFDO0lBQ3hDO0lBQ0FELFdBQVcsQ0FBQ1IsT0FBTyxHQUFHVSxJQUFJO0lBQzFCLE9BQU9BLElBQUk7RUFDZixDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ1YiLCJpZ25vcmVMaXN0IjpbXX0=