From 4efae0816cb4472dd1ac8b0719ffffe97ef64341 Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Mon, 25 Sep 2023 13:00:14 +0200 Subject: [PATCH] Settings: Add more privacy options and support (#3832) --- src/api/gramjs/apiBuilders/common.ts | 4 +- src/api/gramjs/apiBuilders/misc.ts | 2 + src/api/gramjs/gramjsBuilders/index.ts | 110 ++-- src/api/gramjs/methods/settings.ts | 45 +- src/api/gramjs/methods/stories.ts | 11 +- src/assets/font-icons/ask-support.svg | 1 + src/assets/font-icons/privacy-policy.svg | 1 + src/components/left/LeftColumn.tsx | 6 + src/components/left/settings/Settings.scss | 9 +- src/components/left/settings/Settings.tsx | 10 +- .../left/settings/SettingsHeader.tsx | 6 +- src/components/left/settings/SettingsMain.tsx | 45 ++ .../left/settings/SettingsPrivacy.tsx | 52 +- .../settings/SettingsPrivacyVisibility.tsx | 314 ++++++----- ...SettingsPrivacyVisibilityExceptionList.tsx | 24 +- .../left/settings/helpers/privacy.ts | 6 + src/components/story/Story.tsx | 6 +- src/components/story/StorySettings.tsx | 2 +- src/config.ts | 2 + src/global/actions/api/settings.ts | 92 +--- src/global/actions/api/stories.ts | 18 +- src/global/helpers/index.ts | 1 + src/global/helpers/misc.ts | 36 ++ src/global/types.ts | 2 +- src/styles/Telegram T.json | 493 ++++++++++-------- src/styles/icons.scss | 408 ++++++++------- src/styles/icons.woff | Bin 27116 -> 27392 bytes src/styles/icons.woff2 | Bin 22764 -> 22976 bytes src/types/icons/font.ts | 2 + src/types/index.ts | 31 +- 30 files changed, 945 insertions(+), 794 deletions(-) create mode 100644 src/assets/font-icons/ask-support.svg create mode 100644 src/assets/font-icons/privacy-policy.svg create mode 100644 src/global/helpers/misc.ts diff --git a/src/api/gramjs/apiBuilders/common.ts b/src/api/gramjs/apiBuilders/common.ts index 69c1aafd6..515489124 100644 --- a/src/api/gramjs/apiBuilders/common.ts +++ b/src/api/gramjs/apiBuilders/common.ts @@ -148,6 +148,7 @@ export function buildApiUsernames(mtpPeer: GramJs.User | GramJs.Channel | GramJs export function buildPrivacyRules(rules: GramJs.TypePrivacyRule[]): ApiPrivacySettings { let visibility: PrivacyVisibility | undefined; + let isUnspecified: boolean | undefined; let allowUserIds: string[] | undefined; let allowChatIds: string[] | undefined; let blockUserIds: string[] | undefined; @@ -165,7 +166,6 @@ export function buildPrivacyRules(rules: GramJs.TypePrivacyRule[]): ApiPrivacySe } else if (rule instanceof GramJs.PrivacyValueDisallowAll) { visibility ||= 'nobody'; } else if (rule instanceof GramJs.PrivacyValueAllowUsers) { - visibility ||= 'selectedContacts'; allowUserIds = rule.users.map((chatId) => buildApiPeerId(chatId, 'user')); } else if (rule instanceof GramJs.PrivacyValueDisallowUsers) { blockUserIds = rule.users.map((chatId) => buildApiPeerId(chatId, 'user')); @@ -179,10 +179,12 @@ export function buildPrivacyRules(rules: GramJs.TypePrivacyRule[]): ApiPrivacySe if (!visibility) { // Disallow by default visibility = 'nobody'; + isUnspecified = true; } return { visibility, + isUnspecified, allowUserIds: allowUserIds || [], allowChatIds: allowChatIds || [], blockUserIds: blockUserIds || [], diff --git a/src/api/gramjs/apiBuilders/misc.ts b/src/api/gramjs/apiBuilders/misc.ts index 495ae4eff..6335a4815 100644 --- a/src/api/gramjs/apiBuilders/misc.ts +++ b/src/api/gramjs/apiBuilders/misc.ts @@ -64,6 +64,8 @@ export function buildPrivacyKey(key: GramJs.TypePrivacyKey): ApiPrivacyKey | und switch (key.className) { case 'PrivacyKeyPhoneNumber': return 'phoneNumber'; + case 'PrivacyKeyAddedByPhone': + return 'addByPhone'; case 'PrivacyKeyStatusTimestamp': return 'lastSeen'; case 'PrivacyKeyProfilePhoto': diff --git a/src/api/gramjs/gramjsBuilders/index.ts b/src/api/gramjs/gramjsBuilders/index.ts index 844433abe..61260ac37 100644 --- a/src/api/gramjs/gramjsBuilders/index.ts +++ b/src/api/gramjs/gramjsBuilders/index.ts @@ -2,7 +2,7 @@ import BigInt from 'big-integer'; import { Api as GramJs } from '../../../lib/gramjs'; import { generateRandomBytes, readBigIntFromBuffer } from '../../../lib/gramjs/Helpers'; -import type { ApiPrivacyKey, PrivacyVisibility } from '../../../types'; +import type { ApiInputPrivacyRules, ApiPrivacyKey } from '../../../types'; import type { ApiBotApp, ApiChatAdminRights, @@ -25,7 +25,6 @@ import type { ApiStorySkipped, ApiThemeParameters, ApiTypeReplyTo, - ApiUser, ApiVideo, } from '../../types'; import { @@ -458,6 +457,9 @@ export function buildInputPrivacyKey(privacyKey: ApiPrivacyKey) { case 'phoneNumber': return new GramJs.InputPrivacyKeyPhoneNumber(); + case 'addByPhone': + return new GramJs.InputPrivacyKeyAddedByPhone(); + case 'lastSeen': return new GramJs.InputPrivacyKeyStatusTimestamp(); @@ -478,6 +480,9 @@ export function buildInputPrivacyKey(privacyKey: ApiPrivacyKey) { case 'voiceMessages': return new GramJs.InputPrivacyKeyVoiceMessages(); + + case 'bio': + return new GramJs.InputPrivacyKeyAbout(); } return undefined; @@ -660,63 +665,54 @@ export function buildInputReplyTo(replyingTo: ApiTypeReplyTo) { } export function buildInputPrivacyRules( - visibility: PrivacyVisibility, - allowedUserList?: ApiUser[], - deniedUserList?: ApiUser[], + rules: ApiInputPrivacyRules, ) { - const rules: GramJs.TypeInputPrivacyRule[] = []; + const privacyRules: GramJs.TypeInputPrivacyRule[] = []; - switch (visibility) { - case 'everybody': - case 'contacts': { - if (visibility === 'contacts') { - rules.push(new GramJs.InputPrivacyValueAllowContacts()); - } - - if (visibility === 'everybody') { - rules.push(new GramJs.InputPrivacyValueAllowAll()); - } - - const users = deniedUserList?.reduce((acc, { id, accessHash }) => { - acc.push(new GramJs.InputPeerUser({ - userId: buildMtpPeerId(id, 'user'), - accessHash: BigInt(accessHash!), - })); - return acc; - }, []); - - if (users?.length) { - rules.push(new GramJs.InputPrivacyValueDisallowUsers({ users })); - } - break; - } - - case 'closeFriends': - rules.push(new GramJs.InputPrivacyValueAllowCloseFriends()); - break; - - case 'nonContacts': - rules.push(new GramJs.InputPrivacyValueDisallowContacts()); - break; - - case 'selectedContacts': { - const users = (allowedUserList || []).reduce((acc, { id, accessHash }) => { - acc.push(new GramJs.InputPeerUser({ - userId: buildMtpPeerId(id, 'user'), - accessHash: BigInt(accessHash!), - })); - - return acc; - }, []); - - rules.push(new GramJs.InputPrivacyValueAllowUsers({ users })); - break; - } - - case 'nobody': - rules.push(new GramJs.InputPrivacyValueDisallowAll()); - break; + if (rules.allowedUsers?.length) { + privacyRules.push(new GramJs.InputPrivacyValueAllowUsers({ + users: rules.allowedUsers.map(({ id, accessHash }) => buildInputEntity(id, accessHash) as GramJs.InputUser), + })); + } + if (rules.allowedChats?.length) { + privacyRules.push(new GramJs.InputPrivacyValueAllowChatParticipants({ + chats: rules.allowedChats.map(({ id, type }) => ( + buildMtpPeerId(id, type === 'chatTypeBasicGroup' ? 'chat' : 'channel') + )), + })); + } + if (rules.blockedUsers?.length) { + privacyRules.push(new GramJs.InputPrivacyValueDisallowUsers({ + users: rules.blockedUsers.map(({ id, accessHash }) => buildInputEntity(id, accessHash) as GramJs.InputUser), + })); + } + if (rules.blockedChats?.length) { + privacyRules.push(new GramJs.InputPrivacyValueDisallowChatParticipants({ + chats: rules.blockedChats.map(({ id, type }) => ( + buildMtpPeerId(id, type === 'chatTypeBasicGroup' ? 'chat' : 'channel') + )), + })); } - return rules; + if (!rules.isUnspecified) { + switch (rules.visibility) { + case 'everybody': + privacyRules.push(new GramJs.InputPrivacyValueAllowAll()); + break; + + case 'contacts': + privacyRules.push(new GramJs.InputPrivacyValueAllowContacts()); + break; + + case 'nonContacts': + privacyRules.push(new GramJs.InputPrivacyValueDisallowContacts()); + break; + + case 'nobody': + privacyRules.push(new GramJs.InputPrivacyValueDisallowAll()); + break; + } + } + + return privacyRules; } diff --git a/src/api/gramjs/methods/settings.ts b/src/api/gramjs/methods/settings.ts index 3405ea981..96d6acab3 100644 --- a/src/api/gramjs/methods/settings.ts +++ b/src/api/gramjs/methods/settings.ts @@ -2,7 +2,7 @@ import BigInt from 'big-integer'; import { Api as GramJs } from '../../../lib/gramjs'; import type { LANG_PACKS } from '../../../config'; -import type { ApiPrivacyKey, InputPrivacyRules, LangCode } from '../../../types'; +import type { ApiInputPrivacyRules, ApiPrivacyKey, LangCode } from '../../../types'; import type { ApiAppConfig, ApiConfig, @@ -33,6 +33,7 @@ import { buildApiUser } from '../apiBuilders/users'; import { buildInputEntity, buildInputPeer, buildInputPhoto, buildInputPrivacyKey, + buildInputPrivacyRules, } from '../gramjsBuilders'; import { addEntitiesToLocalDb, addPhotoToLocalDb } from '../helpers'; import localDb from '../localDb'; @@ -506,48 +507,10 @@ export function unregisterDevice(token: string) { } export async function setPrivacySettings( - privacyKey: ApiPrivacyKey, rules: InputPrivacyRules, + privacyKey: ApiPrivacyKey, rules: ApiInputPrivacyRules, ) { const key = buildInputPrivacyKey(privacyKey); - const privacyRules: GramJs.TypeInputPrivacyRule[] = []; - - if (rules.allowedUsers) { - privacyRules.push(new GramJs.InputPrivacyValueAllowUsers({ - users: rules.allowedUsers.map(({ id, accessHash }) => buildInputEntity(id, accessHash) as GramJs.InputUser), - })); - } - if (rules.allowedChats) { - privacyRules.push(new GramJs.InputPrivacyValueAllowChatParticipants({ - chats: rules.allowedChats.map(({ id }) => buildInputEntity(id) as BigInt.BigInteger), - })); - } - if (rules.blockedUsers) { - privacyRules.push(new GramJs.InputPrivacyValueDisallowUsers({ - users: rules.blockedUsers.map(({ id, accessHash }) => buildInputEntity(id, accessHash) as GramJs.InputUser), - })); - } - if (rules.blockedChats) { - privacyRules.push(new GramJs.InputPrivacyValueDisallowChatParticipants({ - chats: rules.blockedChats.map(({ id }) => buildInputEntity(id) as BigInt.BigInteger), - })); - } - switch (rules.visibility) { - case 'everybody': - privacyRules.push(new GramJs.InputPrivacyValueAllowAll()); - break; - - case 'contacts': - privacyRules.push(new GramJs.InputPrivacyValueAllowContacts()); - break; - - case 'nonContacts': - privacyRules.push(new GramJs.InputPrivacyValueDisallowContacts()); - break; - - case 'nobody': - privacyRules.push(new GramJs.InputPrivacyValueDisallowAll()); - break; - } + const privacyRules = buildInputPrivacyRules(rules); const result = await invokeRequest(new GramJs.account.SetPrivacy({ key, rules: privacyRules })); diff --git a/src/api/gramjs/methods/stories.ts b/src/api/gramjs/methods/stories.ts index 3a27fc810..9a3dab5e5 100644 --- a/src/api/gramjs/methods/stories.ts +++ b/src/api/gramjs/methods/stories.ts @@ -1,6 +1,6 @@ import { Api as GramJs } from '../../../lib/gramjs'; -import type { PrivacyVisibility } from '../../../types'; +import type { ApiInputPrivacyRules } from '../../../types'; import type { ApiReaction, ApiReportReason, ApiStealthMode, ApiTypeStory, ApiUser, ApiUserStories, @@ -306,16 +306,15 @@ export function reportStory({ } export function editStoryPrivacy({ - id, visibility, allowedUserList, deniedUserList, + id, + privacy, }: { id: number; - visibility: PrivacyVisibility; - allowedUserList?: ApiUser[]; - deniedUserList?: ApiUser[]; + privacy: ApiInputPrivacyRules; }) { return invokeRequest(new GramJs.stories.EditStory({ id, - privacyRules: buildInputPrivacyRules(visibility, allowedUserList, deniedUserList), + privacyRules: buildInputPrivacyRules(privacy), }), { shouldReturnTrue: true, }); diff --git a/src/assets/font-icons/ask-support.svg b/src/assets/font-icons/ask-support.svg new file mode 100644 index 000000000..354a2b956 --- /dev/null +++ b/src/assets/font-icons/ask-support.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/font-icons/privacy-policy.svg b/src/assets/font-icons/privacy-policy.svg new file mode 100644 index 000000000..8d3adaec6 --- /dev/null +++ b/src/assets/font-icons/privacy-policy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/left/LeftColumn.tsx b/src/components/left/LeftColumn.tsx index 0de337df2..7da5e2bd5 100644 --- a/src/components/left/LeftColumn.tsx +++ b/src/components/left/LeftColumn.tsx @@ -182,8 +182,10 @@ function LeftColumn({ return; case SettingsScreens.PrivacyPhoneNumber: + case SettingsScreens.PrivacyAddByPhone: case SettingsScreens.PrivacyLastSeen: case SettingsScreens.PrivacyProfilePhoto: + case SettingsScreens.PrivacyBio: case SettingsScreens.PrivacyPhoneCall: case SettingsScreens.PrivacyPhoneP2P: case SettingsScreens.PrivacyForwarding: @@ -233,6 +235,10 @@ function LeftColumn({ case SettingsScreens.PrivacyProfilePhotoDeniedContacts: setSettingsScreen(SettingsScreens.PrivacyProfilePhoto); return; + case SettingsScreens.PrivacyBioAllowedContacts: + case SettingsScreens.PrivacyBioDeniedContacts: + setSettingsScreen(SettingsScreens.PrivacyBio); + return; case SettingsScreens.PrivacyPhoneCallAllowedContacts: case SettingsScreens.PrivacyPhoneCallDeniedContacts: setSettingsScreen(SettingsScreens.PrivacyPhoneCall); diff --git a/src/components/left/settings/Settings.scss b/src/components/left/settings/Settings.scss index daafcc465..4b592de02 100644 --- a/src/components/left/settings/Settings.scss +++ b/src/components/left/settings/Settings.scss @@ -106,8 +106,15 @@ } .settings-main-menu { - padding: 0 0.5rem 0.75rem; + padding: 0.5rem; background-color: var(--color-background); + box-shadow: inset 0 -0.0625rem 0 0 var(--color-background-secondary-accent); + border-bottom: 0.625rem solid var(--color-background-secondary); + + &:last-child { + border-bottom: none; + box-shadow: none; + } > .ChatExtra { padding: 0 0.5rem 0.3125rem; diff --git a/src/components/left/settings/Settings.tsx b/src/components/left/settings/Settings.tsx index 96bd70252..ba38ee981 100644 --- a/src/components/left/settings/Settings.tsx +++ b/src/components/left/settings/Settings.tsx @@ -99,6 +99,11 @@ const PRIVACY_PROFILE_PHOTO_SCREENS = [ SettingsScreens.PrivacyProfilePhotoDeniedContacts, ]; +const PRIVACY_BIO_SCREENS = [ + SettingsScreens.PrivacyBioAllowedContacts, + SettingsScreens.PrivacyBioDeniedContacts, +]; + const PRIVACY_PHONE_CALL_SCREENS = [ SettingsScreens.PrivacyPhoneCallAllowedContacts, SettingsScreens.PrivacyPhoneCallDeniedContacts, @@ -190,6 +195,7 @@ const Settings: FC = ({ [SettingsScreens.PrivacyPhoneNumber]: PRIVACY_PHONE_NUMBER_SCREENS.includes(screen), [SettingsScreens.PrivacyLastSeen]: PRIVACY_LAST_SEEN_PHONE_SCREENS.includes(screen), [SettingsScreens.PrivacyProfilePhoto]: PRIVACY_PROFILE_PHOTO_SCREENS.includes(screen), + [SettingsScreens.PrivacyBio]: PRIVACY_BIO_SCREENS.includes(screen), [SettingsScreens.PrivacyPhoneCall]: PRIVACY_PHONE_CALL_SCREENS.includes(screen), [SettingsScreens.PrivacyPhoneP2P]: PRIVACY_PHONE_P2P_SCREENS.includes(screen), [SettingsScreens.PrivacyForwarding]: PRIVACY_FORWARDING_SCREENS.includes(screen), @@ -314,8 +320,8 @@ const Settings: FC = ({ case SettingsScreens.PrivacyPhoneNumber: case SettingsScreens.PrivacyLastSeen: case SettingsScreens.PrivacyProfilePhoto: + case SettingsScreens.PrivacyBio: case SettingsScreens.PrivacyPhoneCall: - case SettingsScreens.PrivacyPhoneP2P: case SettingsScreens.PrivacyForwarding: case SettingsScreens.PrivacyVoiceMessages: case SettingsScreens.PrivacyGroupChats: @@ -331,6 +337,7 @@ const Settings: FC = ({ case SettingsScreens.PrivacyPhoneNumberAllowedContacts: case SettingsScreens.PrivacyLastSeenAllowedContacts: case SettingsScreens.PrivacyProfilePhotoAllowedContacts: + case SettingsScreens.PrivacyBioAllowedContacts: case SettingsScreens.PrivacyPhoneCallAllowedContacts: case SettingsScreens.PrivacyPhoneP2PAllowedContacts: case SettingsScreens.PrivacyForwardingAllowedContacts: @@ -349,6 +356,7 @@ const Settings: FC = ({ case SettingsScreens.PrivacyPhoneNumberDeniedContacts: case SettingsScreens.PrivacyLastSeenDeniedContacts: case SettingsScreens.PrivacyProfilePhotoDeniedContacts: + case SettingsScreens.PrivacyBioDeniedContacts: case SettingsScreens.PrivacyPhoneCallDeniedContacts: case SettingsScreens.PrivacyPhoneP2PDeniedContacts: case SettingsScreens.PrivacyForwardingDeniedContacts: diff --git a/src/components/left/settings/SettingsHeader.tsx b/src/components/left/settings/SettingsHeader.tsx index 82e62e20f..30ebb9390 100644 --- a/src/components/left/settings/SettingsHeader.tsx +++ b/src/components/left/settings/SettingsHeader.tsx @@ -113,20 +113,21 @@ const SettingsHeader: FC = ({ return

{lang('PrivacyLastSeen')}

; case SettingsScreens.PrivacyProfilePhoto: return

{lang('Privacy.ProfilePhoto')}

; + case SettingsScreens.PrivacyBio: + return

{lang('PrivacyBio')}

; case SettingsScreens.PrivacyForwarding: return

{lang('PrivacyForwards')}

; case SettingsScreens.PrivacyVoiceMessages: return

{lang('PrivacyVoiceMessages')}

; case SettingsScreens.PrivacyGroupChats: return

{lang('AutodownloadGroupChats')}

; - case SettingsScreens.PrivacyPhoneP2P: - return

{lang('PrivacyP2P')}

; case SettingsScreens.PrivacyPhoneCall: return

{lang('Calls')}

; case SettingsScreens.PrivacyPhoneNumberAllowedContacts: case SettingsScreens.PrivacyLastSeenAllowedContacts: case SettingsScreens.PrivacyProfilePhotoAllowedContacts: + case SettingsScreens.PrivacyBioAllowedContacts: case SettingsScreens.PrivacyForwardingAllowedContacts: case SettingsScreens.PrivacyVoiceMessagesAllowedContacts: case SettingsScreens.PrivacyGroupChatsAllowedContacts: @@ -136,6 +137,7 @@ const SettingsHeader: FC = ({ case SettingsScreens.PrivacyPhoneNumberDeniedContacts: case SettingsScreens.PrivacyLastSeenDeniedContacts: case SettingsScreens.PrivacyProfilePhotoDeniedContacts: + case SettingsScreens.PrivacyBioDeniedContacts: case SettingsScreens.PrivacyForwardingDeniedContacts: case SettingsScreens.PrivacyVoiceMessagesDeniedContacts: case SettingsScreens.PrivacyGroupChatsDeniedContacts: diff --git a/src/components/left/settings/SettingsMain.tsx b/src/components/left/settings/SettingsMain.tsx index efad7fae6..0371fdd14 100644 --- a/src/components/left/settings/SettingsMain.tsx +++ b/src/components/left/settings/SettingsMain.tsx @@ -4,14 +4,18 @@ import { getActions, withGlobal } from '../../../global'; import { SettingsScreens } from '../../../types'; +import { FAQ_URL, PRIVACY_URL } from '../../../config'; import { selectIsPremiumPurchaseBlocked } from '../../../global/selectors'; +import useFlag from '../../../hooks/useFlag'; import useHistoryBack from '../../../hooks/useHistoryBack'; import useLang from '../../../hooks/useLang'; +import useLastCallback from '../../../hooks/useLastCallback'; import ChatExtra from '../../common/ChatExtra'; import PremiumIcon from '../../common/PremiumIcon'; import ProfileInfo from '../../common/ProfileInfo'; +import ConfirmDialog from '../../ui/ConfirmDialog'; import ListItem from '../../ui/ListItem'; type OwnProps = { @@ -38,8 +42,12 @@ const SettingsMain: FC = ({ loadProfilePhotos, loadAuthorizations, openPremiumModal, + openSupportChat, + openUrl, } = getActions(); + const [isSupportDialogOpen, openSupportDialog, closeSupportDialog] = useFlag(false); + const lang = useLang(); useEffect(() => { @@ -57,6 +65,11 @@ const SettingsMain: FC = ({ loadAuthorizations(); }, []); + const handleOpenSupport = useLastCallback(() => { + openSupportChat(); + closeSupportDialog(); + }); + return (
@@ -138,6 +151,8 @@ const SettingsMain: FC = ({ > {lang('StickersName')} +
+
{canBuyPremium && ( } @@ -149,6 +164,36 @@ const SettingsMain: FC = ({ )}
+
+ + {lang('AskAQuestion')} + + openUrl({ url: FAQ_URL })} + > + {lang('TelegramFaq')} + + openUrl({ url: PRIVACY_URL })} + > + {lang('PrivacyPolicy')} + +
+
); }; diff --git a/src/components/left/settings/SettingsPrivacy.tsx b/src/components/left/settings/SettingsPrivacy.tsx index 568005878..7be17e810 100644 --- a/src/components/left/settings/SettingsPrivacy.tsx +++ b/src/components/left/settings/SettingsPrivacy.tsx @@ -38,7 +38,7 @@ type StateProps = { privacyVoiceMessages?: ApiPrivacySettings; privacyGroupChats?: ApiPrivacySettings; privacyPhoneCall?: ApiPrivacySettings; - privacyPhoneP2P?: ApiPrivacySettings; + privacyBio?: ApiPrivacySettings; }; const SettingsPrivacy: FC = ({ @@ -53,6 +53,7 @@ const SettingsPrivacy: FC = ({ canDisplayAutoarchiveSetting, shouldArchiveAndMuteNewNonContact, canDisplayChatInTitle, + canSetPasscode, privacyPhoneNumber, privacyLastSeen, privacyProfilePhoto, @@ -60,10 +61,9 @@ const SettingsPrivacy: FC = ({ privacyVoiceMessages, privacyGroupChats, privacyPhoneCall, - privacyPhoneP2P, + privacyBio, onScreenSelect, onReset, - canSetPasscode, }) => { const { loadPrivacySettings, @@ -250,25 +250,12 @@ const SettingsPrivacy: FC = ({ narrow className="no-icon" // eslint-disable-next-line react/jsx-no-bind - onClick={() => onScreenSelect(SettingsScreens.PrivacyPhoneCall)} + onClick={() => onScreenSelect(SettingsScreens.PrivacyBio)} >
- {lang('WhoCanCallMe')} + {lang('PrivacyBio')} - {getVisibilityValue(privacyPhoneCall)} - -
- - onScreenSelect(SettingsScreens.PrivacyPhoneP2P)} - > -
- {lang('PrivacyP2P')} - - {getVisibilityValue(privacyPhoneP2P)} + {getVisibilityValue(privacyBio)}
@@ -287,16 +274,14 @@ const SettingsPrivacy: FC = ({ } className="no-icon" - onClick={handleVoiceMessagesClick} + // eslint-disable-next-line react/jsx-no-bind + onClick={() => onScreenSelect(SettingsScreens.PrivacyPhoneCall)} >
- {lang('PrivacyVoiceMessagesTitle')} + {lang('WhoCanCallMe')} - {getVisibilityValue(privacyVoiceMessages)} + {getVisibilityValue(privacyPhoneCall)}
@@ -313,6 +298,21 @@ const SettingsPrivacy: FC = ({ + } + className="no-icon" + onClick={handleVoiceMessagesClick} + > +
+ {lang('PrivacyVoiceMessagesTitle')} + + {getVisibilityValue(privacyVoiceMessages)} + +
+
{canDisplayAutoarchiveSetting && ( @@ -392,7 +392,7 @@ export default memo(withGlobal( privacyVoiceMessages: privacy.voiceMessages, privacyGroupChats: privacy.chatInvite, privacyPhoneCall: privacy.phoneCall, - privacyPhoneP2P: privacy.phoneP2P, + privacyBio: privacy.bio, canDisplayChatInTitle, canSetPasscode: selectCanSetPasscode(global), }; diff --git a/src/components/left/settings/SettingsPrivacyVisibility.tsx b/src/components/left/settings/SettingsPrivacyVisibility.tsx index 0e9167cc5..dee894146 100644 --- a/src/components/left/settings/SettingsPrivacyVisibility.tsx +++ b/src/components/left/settings/SettingsPrivacyVisibility.tsx @@ -2,7 +2,7 @@ import type { FC } from '../../../lib/teact/teact'; import React, { memo, useCallback, useMemo } from '../../../lib/teact/teact'; import { getActions, withGlobal } from '../../../global'; -import type { ApiChat, ApiPhoto, ApiUser } from '../../../api/types'; +import type { ApiPhoto } from '../../../api/types'; import type { ApiPrivacySettings } from '../../../types'; import { SettingsScreens } from '../../../types'; @@ -11,6 +11,7 @@ import { getPrivacyKey } from './helpers/privacy'; import useHistoryBack from '../../../hooks/useHistoryBack'; import useLang from '../../../hooks/useLang'; +import useLastCallback from '../../../hooks/useLastCallback'; import ListItem from '../../ui/ListItem'; import RadioGroup from '../../ui/RadioGroup'; @@ -23,57 +24,131 @@ type OwnProps = { onReset: () => void; }; -type StateProps = - Partial & { - chatsById?: Record; - usersById?: Record; - currentUserId: string; - hasCurrentUserFullInfo?: boolean; - currentUserFallbackPhoto?: ApiPhoto; - }; +type StateProps = { + currentUserId: string; + hasCurrentUserFullInfo?: boolean; + currentUserFallbackPhoto?: ApiPhoto; + primaryPrivacy?: ApiPrivacySettings; + secondaryPrivacy?: ApiPrivacySettings; +}; const SettingsPrivacyVisibility: FC = ({ screen, isActive, - onScreenSelect, - onReset, - visibility, - allowUserIds, - allowChatIds, - blockUserIds, - blockChatIds, - chatsById, + primaryPrivacy, + secondaryPrivacy, currentUserId, hasCurrentUserFullInfo, currentUserFallbackPhoto, + onScreenSelect, + onReset, }) => { - const { setPrivacyVisibility } = getActions(); + useHistoryBack({ + isActive, + onBack: onReset, + }); + const secondaryScreen = useMemo(() => { + switch (screen) { + case SettingsScreens.PrivacyPhoneCall: + return SettingsScreens.PrivacyPhoneP2P; + case SettingsScreens.PrivacyPhoneNumber: { + return primaryPrivacy?.visibility === 'nobody' ? SettingsScreens.PrivacyAddByPhone : undefined; + } + default: + return undefined; + } + }, [primaryPrivacy, screen]); + + return ( +
+ + {screen === SettingsScreens.PrivacyProfilePhoto && primaryPrivacy?.visibility !== 'everybody' && ( + + )} + {secondaryScreen && ( + + )} +
+ ); +}; + +function PrivacySubsection({ + screen, + privacy, + onScreenSelect, +}: { + screen: SettingsScreens; + privacy?: ApiPrivacySettings; + onScreenSelect: (screen: SettingsScreens) => void; +}) { + const { setPrivacyVisibility } = getActions(); const lang = useLang(); const visibilityOptions = useMemo(() => { - return [ + const hasNobody = screen !== SettingsScreens.PrivacyAddByPhone; + const options = [ { value: 'everybody', label: lang('P2PEverybody') }, { value: 'contacts', label: lang('P2PContacts') }, - { value: 'nobody', label: lang('P2PNobody') }, ]; - }, [lang]); + if (hasNobody) { + options.push({ value: 'nobody', label: lang('P2PNobody') }); + } + return options; + }, [lang, screen]); - const exceptionLists = { - shouldShowDenied: visibility !== 'nobody', - shouldShowAllowed: visibility !== 'everybody', - }; + const primaryExceptionLists = useMemo(() => { + if (screen === SettingsScreens.PrivacyAddByPhone) { + return { + shouldShowDenied: false, + shouldShowAllowed: false, + }; + } + + return { + shouldShowDenied: privacy?.visibility !== 'nobody', + shouldShowAllowed: privacy?.visibility !== 'everybody', + }; + }, [privacy, screen]); const privacyKey = getPrivacyKey(screen); + const descriptionText = useMemo(() => { + switch (screen) { + case SettingsScreens.PrivacyLastSeen: + return lang('CustomHelp'); + case SettingsScreens.PrivacyAddByPhone: { + return privacy?.visibility === 'everybody' ? lang('PrivacyPhoneInfo') : lang('PrivacyPhoneInfo3'); + } + default: + return undefined; + } + }, [lang, screen, privacy]); + const headerText = useMemo(() => { switch (screen) { case SettingsScreens.PrivacyPhoneNumber: return lang('PrivacyPhoneTitle'); + case SettingsScreens.PrivacyAddByPhone: + return lang('PrivacyPhoneTitle2'); case SettingsScreens.PrivacyLastSeen: return lang('LastSeenTitle'); case SettingsScreens.PrivacyProfilePhoto: return lang('PrivacyProfilePhotoTitle'); + case SettingsScreens.PrivacyBio: + return lang('PrivacyBioTitle'); case SettingsScreens.PrivacyForwarding: return lang('PrivacyForwardsTitle'); case SettingsScreens.PrivacyVoiceMessages: @@ -89,19 +164,34 @@ const SettingsPrivacyVisibility: FC = ({ } }, [lang, screen]); - useHistoryBack({ - isActive, - onBack: onReset, + const prepareSubtitle = useLastCallback((userIds?: string[], chatIds?: string[]) => { + const userIdsCount = userIds?.length || 0; + const chatIdsCount = chatIds?.length || 0; + + if (!userIdsCount && !chatIdsCount) { + return lang('EditAdminAddUsers'); + } + + const userCountString = userIdsCount > 0 ? lang('Users', userIdsCount) : undefined; + const chatCountString = chatIdsCount > 0 ? lang('Chats', chatIdsCount) : undefined; + + return [userCountString, chatCountString].filter(Boolean).join(', '); }); - const descriptionText = useMemo(() => { - switch (screen) { - case SettingsScreens.PrivacyLastSeen: - return lang('CustomHelp'); - default: - return undefined; - } - }, [lang, screen]); + const allowedString = useMemo(() => { + return prepareSubtitle(privacy?.allowUserIds, privacy?.allowChatIds); + }, [privacy]); + + const blockString = useMemo(() => { + return prepareSubtitle(privacy?.blockUserIds, privacy?.blockChatIds); + }, [privacy]); + + const handleVisibilityChange = useCallback((value) => { + setPrivacyVisibility({ + privacyKey: privacyKey!, + visibility: value, + }); + }, [privacyKey]); const allowedContactsScreen = (() => { switch (screen) { @@ -111,6 +201,8 @@ const SettingsPrivacyVisibility: FC = ({ return SettingsScreens.PrivacyLastSeenAllowedContacts; case SettingsScreens.PrivacyProfilePhoto: return SettingsScreens.PrivacyProfilePhotoAllowedContacts; + case SettingsScreens.PrivacyBio: + return SettingsScreens.PrivacyBioAllowedContacts; case SettingsScreens.PrivacyForwarding: return SettingsScreens.PrivacyForwardingAllowedContacts; case SettingsScreens.PrivacyPhoneCall: @@ -132,6 +224,8 @@ const SettingsPrivacyVisibility: FC = ({ return SettingsScreens.PrivacyLastSeenDeniedContacts; case SettingsScreens.PrivacyProfilePhoto: return SettingsScreens.PrivacyProfilePhotoDeniedContacts; + case SettingsScreens.PrivacyBio: + return SettingsScreens.PrivacyBioDeniedContacts; case SettingsScreens.PrivacyForwarding: return SettingsScreens.PrivacyForwardingDeniedContacts; case SettingsScreens.PrivacyPhoneCall: @@ -145,105 +239,68 @@ const SettingsPrivacyVisibility: FC = ({ } })(); - const allowedCount = useMemo(() => { - if (!allowUserIds || !allowChatIds || !chatsById) { - return 0; - } - - return allowChatIds.reduce((result, chatId) => { - return result + (chatsById[chatId] ? chatsById[chatId].membersCount! : 0); - }, allowUserIds.length); - }, [allowChatIds, allowUserIds, chatsById]); - - const blockCount = useMemo(() => { - if (!blockUserIds || !blockChatIds || !chatsById) { - return 0; - } - - return blockChatIds.reduce((result, chatId) => { - return result + (chatsById[chatId] ? chatsById[chatId].membersCount! : 0); - }, blockUserIds.length); - }, [blockChatIds, blockUserIds, chatsById]); - - const handleVisibilityChange = useCallback((value) => { - setPrivacyVisibility({ - privacyKey: privacyKey!, - visibility: value, - }); - }, [privacyKey, setPrivacyVisibility]); - return ( -
+ <>

{headerText}

- - {descriptionText && (

{descriptionText}

)}
- -
-

{lang('PrivacyExceptions')}

- - {exceptionLists.shouldShowAllowed && ( - { - onScreenSelect(allowedContactsScreen); - }} - > -
- {allowedCount > 0 && +{allowedCount}} - {lang('AlwaysAllow')} - {lang('EditAdminAddUsers')} -
-
- )} - {exceptionLists.shouldShowDenied && ( - { - onScreenSelect(deniedContactsScreen); - }} - > -
- {blockCount > 0 && −{blockCount}} - {lang('NeverAllow')} - {lang('EditAdminAddUsers')} -
-
- )} -
- - {screen === SettingsScreens.PrivacyProfilePhoto && exceptionLists.shouldShowAllowed && ( - + {(primaryExceptionLists.shouldShowAllowed || primaryExceptionLists.shouldShowDenied) && ( +
+

+ {lang('PrivacyExceptions')} +

+ {primaryExceptionLists.shouldShowAllowed && ( + { + onScreenSelect(allowedContactsScreen); + }} + > +
+ {lang('AlwaysAllow')} + {allowedString} +
+
+ )} + {primaryExceptionLists.shouldShowDenied && ( + { + onScreenSelect(deniedContactsScreen); + }} + > +
+ {lang('NeverAllow')} + {blockString} +
+
+ )} +
)} -
+ ); -}; +} export default memo(withGlobal( (global, { screen }): StateProps => { - let privacySettings: ApiPrivacySettings | undefined; + let primaryPrivacy: ApiPrivacySettings | undefined; + let secondaryPrivacy: ApiPrivacySettings | undefined; const { currentUserId, - chats: { byId: chatsById }, settings: { privacy }, } = global; @@ -251,39 +308,42 @@ export default memo(withGlobal( switch (screen) { case SettingsScreens.PrivacyPhoneNumber: - privacySettings = privacy.phoneNumber; + primaryPrivacy = privacy.phoneNumber; + secondaryPrivacy = privacy.addByPhone; break; case SettingsScreens.PrivacyLastSeen: - privacySettings = privacy.lastSeen; + primaryPrivacy = privacy.lastSeen; break; case SettingsScreens.PrivacyProfilePhoto: - privacySettings = privacy.profilePhoto; + primaryPrivacy = privacy.profilePhoto; break; - case SettingsScreens.PrivacyPhoneCall: - privacySettings = privacy.phoneCall; + case SettingsScreens.PrivacyBio: + primaryPrivacy = privacy.bio; break; case SettingsScreens.PrivacyPhoneP2P: - privacySettings = privacy.phoneP2P; + case SettingsScreens.PrivacyPhoneCall: + primaryPrivacy = privacy.phoneCall; + secondaryPrivacy = privacy.phoneP2P; break; case SettingsScreens.PrivacyForwarding: - privacySettings = privacy.forwards; + primaryPrivacy = privacy.forwards; break; case SettingsScreens.PrivacyVoiceMessages: - privacySettings = privacy.voiceMessages; + primaryPrivacy = privacy.voiceMessages; break; case SettingsScreens.PrivacyGroupChats: - privacySettings = privacy.chatInvite; + primaryPrivacy = privacy.chatInvite; break; } - if (!privacySettings) { + if (!primaryPrivacy) { return { currentUserId: currentUserId!, hasCurrentUserFullInfo: Boolean(currentUserFullInfo), @@ -292,8 +352,8 @@ export default memo(withGlobal( } return { - ...privacySettings, - chatsById, + primaryPrivacy, + secondaryPrivacy, currentUserId: currentUserId!, hasCurrentUserFullInfo: Boolean(currentUserFullInfo), currentUserFallbackPhoto: currentUserFullInfo?.fallbackPhoto, diff --git a/src/components/left/settings/SettingsPrivacyVisibilityExceptionList.tsx b/src/components/left/settings/SettingsPrivacyVisibilityExceptionList.tsx index bfb648ed9..1ba8d450c 100644 --- a/src/components/left/settings/SettingsPrivacyVisibilityExceptionList.tsx +++ b/src/components/left/settings/SettingsPrivacyVisibilityExceptionList.tsx @@ -1,6 +1,6 @@ import type { FC } from '../../../lib/teact/teact'; import React, { - memo, useCallback, useMemo, useState, + memo, useCallback, useEffect, useMemo, useState, } from '../../../lib/teact/teact'; import { getActions, getGlobal, withGlobal } from '../../../global'; @@ -9,7 +9,7 @@ import type { ApiPrivacySettings } from '../../../types'; import { SettingsScreens } from '../../../types'; import { ALL_FOLDER_ID, ARCHIVED_FOLDER_ID } from '../../../config'; -import { filterChatsByName, isUserId } from '../../../global/helpers'; +import { filterChatsByName } from '../../../global/helpers'; import { unique } from '../../../util/iteratees'; import { getPrivacyKey } from './helpers/privacy'; @@ -37,10 +37,10 @@ const SettingsPrivacyVisibilityExceptionList: FC = ({ isAllowList, screen, isActive, - onScreenSelect, - onReset, currentUserId, settings, + onScreenSelect, + onReset, }) => { const { setPrivacySettings } = getActions(); @@ -61,6 +61,11 @@ const SettingsPrivacyVisibilityExceptionList: FC = ({ const [isSubmitShown, setIsSubmitShown] = useState(false); const [newSelectedContactIds, setNewSelectedContactIds] = useState(selectedContactIds); + // Reset selected contact ids on change from other client when screen is not active + useEffect(() => { + if (!isActive) setNewSelectedContactIds(selectedContactIds); + }, [isActive, selectedContactIds]); + const folderAllOrderedIds = useFolderManagerForOrderedIds(ALL_FOLDER_ID); const folderArchivedOrderedIds = useFolderManagerForOrderedIds(ARCHIVED_FOLDER_ID); const displayedIds = useMemo(() => { @@ -68,11 +73,7 @@ const SettingsPrivacyVisibilityExceptionList: FC = ({ const chatsById = getGlobal().chats.byId; const chatIds = unique([...folderAllOrderedIds || [], ...folderArchivedOrderedIds || []]) - .filter((chatId) => { - const chat = chatsById[chatId]; - - return chat && isUserId(chat.id) && chat.id !== currentUserId; - }); + .filter((chatId) => chatId !== currentUserId); return unique([ ...selectedContactIds, @@ -89,7 +90,7 @@ const SettingsPrivacyVisibilityExceptionList: FC = ({ setPrivacySettings({ privacyKey: getPrivacyKey(screen)!, isAllowList: Boolean(isAllowList), - contactsIds: newSelectedContactIds, + updatedIds: newSelectedContactIds, }); onScreenSelect(SettingsScreens.Privacy); @@ -136,6 +137,9 @@ function getCurrentPrivacySettings(global: GlobalState, screen: SettingsScreens) case SettingsScreens.PrivacyProfilePhotoAllowedContacts: case SettingsScreens.PrivacyProfilePhotoDeniedContacts: return privacy.profilePhoto; + case SettingsScreens.PrivacyBioAllowedContacts: + case SettingsScreens.PrivacyBioDeniedContacts: + return privacy.bio; case SettingsScreens.PrivacyPhoneCallAllowedContacts: case SettingsScreens.PrivacyPhoneCallDeniedContacts: return privacy.phoneCall; diff --git a/src/components/left/settings/helpers/privacy.ts b/src/components/left/settings/helpers/privacy.ts index 12bc6e2e6..6d455b327 100644 --- a/src/components/left/settings/helpers/privacy.ts +++ b/src/components/left/settings/helpers/privacy.ts @@ -15,6 +15,10 @@ export function getPrivacyKey(screen: SettingsScreens): ApiPrivacyKey | undefine case SettingsScreens.PrivacyProfilePhotoAllowedContacts: case SettingsScreens.PrivacyProfilePhotoDeniedContacts: return 'profilePhoto'; + case SettingsScreens.PrivacyBio: + case SettingsScreens.PrivacyBioAllowedContacts: + case SettingsScreens.PrivacyBioDeniedContacts: + return 'bio'; case SettingsScreens.PrivacyForwarding: case SettingsScreens.PrivacyForwardingAllowedContacts: case SettingsScreens.PrivacyForwardingDeniedContacts: @@ -35,6 +39,8 @@ export function getPrivacyKey(screen: SettingsScreens): ApiPrivacyKey | undefine case SettingsScreens.PrivacyPhoneP2PAllowedContacts: case SettingsScreens.PrivacyPhoneP2PDeniedContacts: return 'phoneP2P'; + case SettingsScreens.PrivacyAddByPhone: + return 'addByPhone'; } return undefined; diff --git a/src/components/story/Story.tsx b/src/components/story/Story.tsx index a3cea6249..6e206632a 100644 --- a/src/components/story/Story.tsx +++ b/src/components/story/Story.tsx @@ -439,12 +439,12 @@ function Story({ const handleInfoPrivacyClick = useLastCallback(() => { const visibility = !isLoadedStory || story.isPublic ? undefined - : story.isForContacts ? 'contacts' : (story.isForCloseFriends ? 'closeFriends' : 'selectedContacts'); + : story.isForContacts ? 'contacts' : (story.isForCloseFriends ? 'closeFriends' : 'nobody'); let message; const myName = getUserFirstOrLastName(user); switch (visibility) { - case 'selectedContacts': + case 'nobody': message = lang('StorySelectedContactsHint', myName); break; case 'contacts': @@ -560,7 +560,7 @@ function Story({ case 'closeFriends': privacyIcon = 'favorite-filled'; break; - case 'selectedContacts': + case 'nobody': privacyIcon = 'group-filled'; } } else { diff --git a/src/components/story/StorySettings.tsx b/src/components/story/StorySettings.tsx index 996ca407c..a0c3c6973 100644 --- a/src/components/story/StorySettings.tsx +++ b/src/components/story/StorySettings.tsx @@ -69,7 +69,7 @@ const OPTIONS: PrivacyOption[] = [{ actions: 'closeFriends', }, { name: 'StoryPrivacyOptionSelectedContacts', - value: 'selectedContacts', + value: 'nobody', color: ['#FFB743', '#F69A36'], icon: 'group-filled', actions: 'allowUserIds', diff --git a/src/config.ts b/src/config.ts index c3e40db49..ea42d037f 100644 --- a/src/config.ts +++ b/src/config.ts @@ -293,6 +293,8 @@ export const DEFAULT_LANG_CODE = 'en'; export const DEFAULT_LANG_PACK = 'android'; export const LANG_PACKS = ['android', 'ios', 'tdesktop', 'macos'] as const; export const FEEDBACK_URL = 'https://bugs.telegram.org/?tag_ids=41&sort=time'; +export const FAQ_URL = 'https://telegram.org/faq'; +export const PRIVACY_URL = 'https://telegram.org/privacy'; export const MINI_APP_TOS_URL = 'https://telegram.org/tos/mini-apps'; export const GENERAL_TOPIC_ID = 1; export const STORY_EXPIRE_PERIOD = 86400; // 1 day diff --git a/src/global/actions/api/settings.ts b/src/global/actions/api/settings.ts index 022cb8309..d2ccc4fcb 100644 --- a/src/global/actions/api/settings.ts +++ b/src/global/actions/api/settings.ts @@ -1,9 +1,8 @@ import type { ApiUser, ApiUsername } from '../../../api/types'; import type { ApiPrivacySettings, - InputPrivacyContact, InputPrivacyRules, PrivacyVisibility, } from '../../../types'; -import type { ActionReturnType, GlobalState } from '../../types'; +import type { ActionReturnType } from '../../types'; import { ProfileEditProgress, UPLOADING_WALLPAPER_SLUG, @@ -17,7 +16,7 @@ import { requestPermission, subscribe, unsubscribe } from '../../../util/notific import requestActionTimeout from '../../../util/requestActionTimeout'; import { getServerTime } from '../../../util/serverTime'; import { callApi } from '../../../api/gramjs'; -import { isUserId } from '../../helpers'; +import { buildApiInputPrivacyRules } from '../../helpers'; import { addActionHandler, getGlobal, setGlobal } from '../../index'; import { addBlockedUser, addNotifyExceptions, addUsers, removeBlockedUser, replaceSettings, updateChat, updateChats, @@ -413,6 +412,7 @@ addActionHandler('loadLanguages', async (global): Promise => { addActionHandler('loadPrivacySettings', async (global): Promise => { const result = await Promise.all([ callApi('fetchPrivacySettings', 'phoneNumber'), + callApi('fetchPrivacySettings', 'addByPhone'), callApi('fetchPrivacySettings', 'lastSeen'), callApi('fetchPrivacySettings', 'profilePhoto'), callApi('fetchPrivacySettings', 'forwards'), @@ -420,6 +420,7 @@ addActionHandler('loadPrivacySettings', async (global): Promise => { callApi('fetchPrivacySettings', 'phoneCall'), callApi('fetchPrivacySettings', 'phoneP2P'), callApi('fetchPrivacySettings', 'voiceMessages'), + callApi('fetchPrivacySettings', 'bio'), ]); if (result.some((e) => e === undefined)) { @@ -428,6 +429,7 @@ addActionHandler('loadPrivacySettings', async (global): Promise => { const [ phoneNumberSettings, + addByPhoneSettings, lastSeenSettings, profilePhotoSettings, forwardsSettings, @@ -435,6 +437,7 @@ addActionHandler('loadPrivacySettings', async (global): Promise => { phoneCallSettings, phoneP2PSettings, voiceMessagesSettings, + bioSettings, ] = result as { users: ApiUser[]; rules: ApiPrivacySettings; @@ -451,6 +454,7 @@ addActionHandler('loadPrivacySettings', async (global): Promise => { privacy: { ...global.settings.privacy, phoneNumber: phoneNumberSettings.rules, + addByPhone: addByPhoneSettings.rules, lastSeen: lastSeenSettings.rules, profilePhoto: profilePhotoSettings.rules, forwards: forwardsSettings.rules, @@ -458,6 +462,7 @@ addActionHandler('loadPrivacySettings', async (global): Promise => { phoneCall: phoneCallSettings.rules, phoneP2P: phoneP2PSettings.rules, voiceMessages: voiceMessagesSettings.rules, + bio: bioSettings.rules, }, }, }; @@ -475,10 +480,10 @@ addActionHandler('setPrivacyVisibility', async (global, actions, payload): Promi return; } - const rules = buildInputPrivacyRules(global, { + const rules = buildApiInputPrivacyRules(global, { visibility, allowedIds: [...settings.allowUserIds, ...settings.allowChatIds], - deniedIds: [...settings.blockUserIds, ...settings.blockChatIds], + blockedIds: [...settings.blockUserIds, ...settings.blockChatIds], }); const result = await callApi('setPrivacySettings', privacyKey, rules); @@ -502,7 +507,7 @@ addActionHandler('setPrivacyVisibility', async (global, actions, payload): Promi }); addActionHandler('setPrivacySettings', async (global, actions, payload): Promise => { - const { privacyKey, isAllowList, contactsIds } = payload!; + const { privacyKey, isAllowList, updatedIds } = payload!; const { privacy: { [privacyKey]: settings }, } = global.settings; @@ -511,10 +516,11 @@ addActionHandler('setPrivacySettings', async (global, actions, payload): Promise return; } - const rules = buildInputPrivacyRules(global, { + const rules = buildApiInputPrivacyRules(global, { visibility: settings.visibility, - allowedIds: isAllowList ? contactsIds : [...settings.allowUserIds, ...settings.allowChatIds], - deniedIds: !isAllowList ? contactsIds : [...settings.blockUserIds, ...settings.blockChatIds], + isUnspecified: settings.isUnspecified, + allowedIds: isAllowList ? updatedIds : [...settings.allowUserIds, ...settings.allowChatIds], + blockedIds: !isAllowList ? updatedIds : [...settings.blockUserIds, ...settings.blockChatIds], }); const result = await callApi('setPrivacySettings', privacyKey, rules); @@ -537,74 +543,6 @@ addActionHandler('setPrivacySettings', async (global, actions, payload): Promise setGlobal(global); }); -function buildInputPrivacyRules(global: GlobalState, { - visibility, - allowedIds, - deniedIds, -}: { - visibility: PrivacyVisibility; - allowedIds: string[]; - deniedIds: string[]; -}): InputPrivacyRules { - const { - users: { byId: usersById }, - chats: { byId: chatsById }, - } = global; - - const rules: InputPrivacyRules = { - visibility, - }; - let users: InputPrivacyContact[]; - let chats: InputPrivacyContact[]; - - const collectUsers = (userId: string) => { - if (!isUserId(userId)) { - return undefined; - } - const { id, accessHash } = usersById[userId] || {}; - if (!id) { - return undefined; - } - - return { id, accessHash }; - }; - - const collectChats = (userId: string) => { - if (isUserId(userId)) { - return undefined; - } - const chat = chatsById[userId]; - - return chat ? { id: chat.id } : undefined; - }; - - if (visibility === 'contacts' || visibility === 'nobody') { - users = allowedIds.map(collectUsers).filter(Boolean) as InputPrivacyContact[]; - chats = allowedIds.map(collectChats).filter(Boolean) as InputPrivacyContact[]; - - if (users.length > 0) { - rules.allowedUsers = users; - } - if (chats.length > 0) { - rules.allowedChats = chats; - } - } - - if (visibility === 'everybody' || visibility === 'contacts') { - users = deniedIds.map(collectUsers).filter(Boolean) as InputPrivacyContact[]; - chats = deniedIds.map(collectChats).filter(Boolean) as InputPrivacyContact[]; - - if (users.length > 0) { - rules.blockedUsers = users; - } - if (chats.length > 0) { - rules.blockedChats = chats; - } - } - - return rules; -} - addActionHandler('updateIsOnline', (global, actions, payload): ActionReturnType => { if (global.connectionState !== 'connectionStateReady') return; callApi('updateIsOnline', payload); diff --git a/src/global/actions/api/stories.ts b/src/global/actions/api/stories.ts index fe90baa18..6799a4fc9 100644 --- a/src/global/actions/api/stories.ts +++ b/src/global/actions/api/stories.ts @@ -6,7 +6,7 @@ import { buildCollectionByKey } from '../../../util/iteratees'; import { translate } from '../../../util/langProvider'; import { getServerTime } from '../../../util/serverTime'; import { callApi } from '../../../api/gramjs'; -import { getStoryKey } from '../../helpers'; +import { buildApiInputPrivacyRules, getStoryKey } from '../../helpers'; import { addActionHandler, getGlobal, setGlobal } from '../../index'; import { addStories, @@ -378,13 +378,19 @@ addActionHandler('editStoryPrivacy', (global, actions, payload): ActionReturnTyp privacy, } = payload; - const allowedUserList = privacy.allowUserIds?.map((userId) => selectUser(global, userId)).filter(Boolean); - const deniedUserList = privacy.blockUserIds?.map((userId) => selectUser(global, userId)).filter(Boolean); + const allowedIds = [...privacy.allowUserIds, ...privacy.allowChatIds]; + const blockedIds = [...privacy.blockUserIds, ...privacy.blockChatIds]; + + const inputPrivacy = buildApiInputPrivacyRules(global, { + visibility: privacy.visibility, + isUnspecified: privacy.isUnspecified, + allowedIds, + blockedIds, + }); + void callApi('editStoryPrivacy', { id: storyId, - visibility: privacy.visibility, - allowedUserList, - deniedUserList, + privacy: inputPrivacy, }); }); diff --git a/src/global/helpers/index.ts b/src/global/helpers/index.ts index aaee192a7..f9c672caf 100644 --- a/src/global/helpers/index.ts +++ b/src/global/helpers/index.ts @@ -9,3 +9,4 @@ export * from './reactions'; export * from './bots'; export * from './media'; export * from './symbols'; +export * from './misc'; diff --git a/src/global/helpers/misc.ts b/src/global/helpers/misc.ts new file mode 100644 index 000000000..27d0f3aba --- /dev/null +++ b/src/global/helpers/misc.ts @@ -0,0 +1,36 @@ +import type { ApiInputPrivacyRules, PrivacyVisibility } from '../../types'; +import type { GlobalState } from '../types'; + +import { partition } from '../../util/iteratees'; +import { isUserId } from './chats'; + +export function buildApiInputPrivacyRules(global: GlobalState, { + visibility, + isUnspecified, + allowedIds, + blockedIds, +}: { + visibility: PrivacyVisibility; + isUnspecified?: boolean; + allowedIds: string[]; + blockedIds: string[]; +}): ApiInputPrivacyRules { + const { + users: { byId: usersById }, + chats: { byId: chatsById }, + } = global; + + const [allowedUserIds, allowedChatIds] = partition(allowedIds, isUserId); + const [blockedUserIds, blockedChatIds] = partition(blockedIds, isUserId); + + const rules: ApiInputPrivacyRules = { + visibility, + isUnspecified, + allowedUsers: allowedUserIds.map((userId) => usersById[userId]).filter(Boolean), + allowedChats: allowedChatIds.map((chatId) => chatsById[chatId]).filter(Boolean), + blockedUsers: blockedUserIds.map((userId) => usersById[userId]).filter(Boolean), + blockedChats: blockedChatIds.map((chatId) => chatsById[chatId]).filter(Boolean), + }; + + return rules; +} diff --git a/src/global/types.ts b/src/global/types.ts index 0e42f74ec..48a4ba44e 100644 --- a/src/global/types.ts +++ b/src/global/types.ts @@ -1064,7 +1064,7 @@ export interface ActionPayloads { setPrivacySettings: { privacyKey: ApiPrivacyKey; isAllowList: boolean; - contactsIds: string[]; + updatedIds: string[]; }; loadNotificationExceptions: undefined; setThemeSettings: { theme: ThemeKey } & Partial; diff --git a/src/styles/Telegram T.json b/src/styles/Telegram T.json index a9c0aadbf..87711972e 100644 --- a/src/styles/Telegram T.json +++ b/src/styles/Telegram T.json @@ -2,11 +2,49 @@ "metadata": { "name": "Telegram T", "lastOpened": 0, - "created": 1692722562593 + "created": 1694397528170 }, "iconSets": [ { "icons": [ + { + "id": 224, + "paths": [ + "M683.643 330.395c7.196-6.903 19.833-12.5 28.625-13.727l0.555-0.032 0.169-0.001c9.089 0.125 21.844 4.459 29.676 10.288l0.435 0.333 0.231 0.235 0.161 0.16 0.032 0.033c6.259 6.445 11.748 17.54 13.397 25.365l0.077 0.544 0.013 0.173 0.005 0.063c0.535 8.263-2.337 20.463-6.295 27.901l-0.529 0.795-0.065 0.091-0.044 0.060-0.124 0.165-3.127 4.12-247.479 282.773c-6.767 6.552-18.301 12.064-26.484 13.556l-0.504 0.084-0.091 0.004-0.385 0.011c-8.555 0.288-20.853-3.076-28.415-7.64l-0.927-0.68-0.175-0.144-0.077-0.065-0.233-0.199-4.067-3.533-106.337-106.367c-6.295-7.301-11.868-19.772-11.868-29.407 0-9.749 6.035-22.628 12.284-29.829l0.339-0.38 0.248-0.217 0.045-0.041 0.127-0.113c6.853-5.828 18.297-10.576 26.211-11.703l0.453-0.039 0.199-0.008 0.115-0.001c8.315 0.016 20.361 3.735 27.48 8.167l0.125 0.076 0.109 0.089 0.539 0.421 0.269 0.227 3.889 3.397 73.728 73.731 217.688-248.736z", + "M930.568 265.299l-0.001-0.66-0.003-0.66h0.064l-0.052-2.715-0.053-2.715-0.007-0.649-0.008-0.648-0.024-2.185-0.025-2.184-0.107-0.040-0.108-0.040-0.069-0.843c-0.769-9.211-2.688-18.473-5.632-27.333-2.944-8.859-6.915-17.315-11.789-24.908-5.649-8.281-12.715-15.927-20.621-22.42-7.907-6.492-16.655-11.832-25.671-15.499l-320.159-123.612c-5.092-1.909-10.615-3.456-16.229-4.527-5.616-1.069-11.324-1.661-16.788-1.661-5.449 0-11.101 0.572-16.667 1.623-5.567 1.051-11.048 2.579-16.159 4.489l-320.024 123.561c-8.969 3.628-17.699 8.849-25.612 15.252s-15.012 13.989-20.723 22.349c-5.403 8.421-9.791 18.037-12.891 28.129-3.1 10.091-4.911 20.659-5.161 30.985-0.291 25.539 0.544 72.192 7.275 130.484s19.356 128.223 42.644 200.319c13.613 41.796 29.944 81.403 48.749 118.345 18.804 36.943 40.081 71.221 63.588 102.36 29.013 38.195 61.861 72.241 98.035 101.719 36.172 29.477 75.668 54.384 117.973 74.303 5.927 2.692 12.405 4.879 19.035 6.393 6.629 1.513 13.409 2.355 19.936 2.355 6.495 0 13.189-0.803 19.756-2.284s13.004-3.643 18.983-6.36c42.296-19.911 81.843-44.839 118.071-74.336s69.136-63.567 98.155-101.764c23.505-31.137 44.785-65.417 63.593-102.361 18.807-36.945 35.141-76.555 48.757-118.351 22.331-69.131 34.859-136.244 41.787-193.008 6.927-56.764 8.255-103.177 8.183-130.904zM517.939 901.548l-1.115 0.579-1.1 0.44-0.199 0.019-0.323 0.029c-0.211 0.017-0.443 0.023-0.745 0.024-0.304 0-0.677-0.003-1.172-0.003-0.756 0-1.307-0.021-1.901-0.156-0.593-0.135-1.231-0.383-2.155-0.835-79.007-36.481-138.599-89.059-183.788-149.032s-75.975-127.344-97.369-193.412c-21.499-65.823-32.92-129.731-38.903-182.741-5.984-53.012-6.531-95.128-6.279-117.364v-0.055l0.001-0.053-0.005-0.021 0.009-0.003 0.011-0.003c-0.131-0.611-0.045-1.281 0.025-1.944s0.125-1.316 0.397-1.888c0.256-0.473 0.332-0.989 0.725-1.589 0.393-0.601 0.152-0.312 0.661-1.123 0 0 0.541-0.697 0.58-0.831 0.039-0.135 0.504-0.637 0.567-0.801 0.169-0.279 0.431-0.503 0.683-0.747s0.611-0.576 0.743-0.647c0.005-0.003 2.405-1.068 3.213-1.377l319.648-123.528c0 0 2.212-0.679 2.453-0.675 0.24 0.004 1.791 0.227 2.288 0.319s1.028 0.263 1.809 0.579l320.619 123.765 1.417-0.087 0.208 0.349 0.209 0.349 0.161 0.272 0.163 0.272c0.327 0.373 0.683 0.848 1.095 1.429 0.412 0.58 0.881 1.265 1.437 2.060 0.345 0.339 0.681 0.749 0.964 1.231s0.512 1.035 0.647 1.659c0.061 0.461 0.079 0.992 0.080 1.635s-0.013 1.397-0.015 2.307c0.251 22.253-0.304 64.167-6.293 116.972-5.989 52.804-17.412 116.5-38.899 182.317-21.335 65.879-52.119 133.097-97.215 192.988-45.096 59.889-104.445 112.581-183.025 149.149l-0.315 0.171z" + ], + "attrs": [ + {}, + {} + ], + "grid": 24, + "tags": [ + "privacy-policy" + ], + "isMulticolor": false, + "isMulticolor2": false + }, + { + "id": 223, + "paths": [ + "M512 42.667c-257.449 0-469.333 192.199-469.333 433.659l0.221 13.895c3.701 115.213 53.485 216.033 140.585 292.181l6.349 5.355-3.088 4.267-7.117 8.461-19.641 21.936c-12.635 14.884-20.341 26.863-24.672 47.725-9.621 46.371 16.329 86.028 54.672 102.076 41.869 17.524 126.555 9.82 181.919-21.16l12.725-7.395c16.319-9.861 30.227-19.821 43.819-30.981l9.533-8.108 16.748 2.207c18.905 2.127 38.024 3.2 57.279 3.2 257.449 0 469.333-192.199 469.333-433.659s-211.884-433.657-469.333-433.657zM512 128c212.077 0 384 155.949 384 348.325s-171.923 348.325-384 348.325c-32.515 0-64.087-3.667-94.237-10.565-3.6-0.824-7.509 1.251-12.621 5.399l-8.683 7.675-11.161 10.167-9.149 7.857-10.748 8.507c-9.677 7.309-21.231 15.103-35.173 22.905-40.955 22.919-97.699 20.929-107.303 16.911-6.559-2.745-4.849-7.423 1.188-14.761l8.411-9.419 7.020-7.643 7.719-8.812c5.297-6.28 10.815-13.385 16.060-21.408 24.913-38.107 14.619-83.475 3.443-91.639-87.4-63.847-138.763-153.783-138.763-263.499 0-192.375 171.923-348.325 384-348.325z", + "M362.667 469.333c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64z", + "M576 469.333c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64z", + "M789.333 469.333c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64z" + ], + "attrs": [ + {}, + {}, + {}, + {} + ], + "isMulticolor": false, + "isMulticolor2": false, + "grid": 24, + "tags": [ + "ask-support" + ] + }, { "id": 221, "paths": [ @@ -3536,8 +3574,8 @@ "metadata": { "name": "icons", "importSize": { - "width": 24, - "height": 24 + "width": 768, + "height": 768 } }, "preferences": { @@ -3578,13 +3616,29 @@ "showGrid": true }, "selection": [ + { + "order": 1314, + "id": 190, + "name": "privacy-policy", + "prevSize": 32, + "code": 59863, + "tempChar": "" + }, + { + "order": 1313, + "id": 189, + "name": "ask-support", + "prevSize": 32, + "code": 59864, + "tempChar": "" + }, { "order": 1309, "id": 187, "name": "eye-outline", "prevSize": 32, "code": 59855, - "tempChar": "" + "tempChar": "" }, { "order": 1308, @@ -3592,7 +3646,7 @@ "name": "eye-closed-outline", "prevSize": 32, "code": 59859, - "tempChar": "" + "tempChar": "" }, { "order": 1307, @@ -3600,7 +3654,7 @@ "name": "story-caption", "prevSize": 32, "code": 59860, - "tempChar": "" + "tempChar": "" }, { "order": 1306, @@ -3608,7 +3662,7 @@ "name": "story-priority", "prevSize": 32, "code": 59854, - "tempChar": "" + "tempChar": "" }, { "order": 1302, @@ -3616,7 +3670,7 @@ "name": "stealth-past", "prevSize": 32, "code": 59856, - "tempChar": "" + "tempChar": "" }, { "order": 1301, @@ -3624,7 +3678,7 @@ "name": "stealth-future", "prevSize": 32, "code": 59857, - "tempChar": "" + "tempChar": "" }, { "order": 1303, @@ -3632,7 +3686,7 @@ "name": "timer", "prevSize": 32, "code": 59858, - "tempChar": "" + "tempChar": "" }, { "order": 1298, @@ -3640,7 +3694,7 @@ "name": "arrow-down-circle", "prevSize": 32, "code": 59861, - "tempChar": "" + "tempChar": "" }, { "order": 1297, @@ -3648,7 +3702,7 @@ "name": "story-reply", "prevSize": 32, "code": 59862, - "tempChar": "" + "tempChar": "" }, { "order": 1091, @@ -3656,7 +3710,7 @@ "prevSize": 32, "id": 168, "code": 59788, - "tempChar": "" + "tempChar": "" }, { "order": 1092, @@ -3664,7 +3718,7 @@ "prevSize": 32, "id": 169, "code": 59789, - "tempChar": "" + "tempChar": "" }, { "order": 1093, @@ -3672,7 +3726,7 @@ "prevSize": 32, "id": 170, "code": 59790, - "tempChar": "" + "tempChar": "" }, { "order": 1094, @@ -3680,7 +3734,7 @@ "prevSize": 32, "id": 171, "code": 59791, - "tempChar": "" + "tempChar": "" }, { "order": 1095, @@ -3688,7 +3742,7 @@ "prevSize": 32, "id": 172, "code": 59792, - "tempChar": "" + "tempChar": "" }, { "order": 1096, @@ -3696,7 +3750,7 @@ "prevSize": 32, "id": 173, "code": 59793, - "tempChar": "" + "tempChar": "" }, { "order": 1097, @@ -3704,7 +3758,7 @@ "name": "hand-stop", "prevSize": 32, "code": 59847, - "tempChar": "" + "tempChar": "" }, { "order": 1098, @@ -3712,7 +3766,7 @@ "name": "more-circle", "prevSize": 32, "code": 59848, - "tempChar": "" + "tempChar": "" }, { "order": 1099, @@ -3720,7 +3774,7 @@ "name": "close-circle", "prevSize": 32, "code": 59849, - "tempChar": "" + "tempChar": "" }, { "order": 1100, @@ -3728,7 +3782,7 @@ "name": "play-story", "prevSize": 32, "code": 59846, - "tempChar": "" + "tempChar": "" }, { "order": 1101, @@ -3736,7 +3790,7 @@ "name": "story-expired", "prevSize": 32, "code": 59845, - "tempChar": "" + "tempChar": "" }, { "order": 1102, @@ -3744,7 +3798,7 @@ "name": "save-story", "prevSize": 32, "code": 59843, - "tempChar": "" + "tempChar": "" }, { "order": 1103, @@ -3752,7 +3806,7 @@ "name": "settings-filled", "prevSize": 32, "code": 59841, - "tempChar": "" + "tempChar": "" }, { "order": 1104, @@ -3760,7 +3814,7 @@ "name": "share-screen-stop", "prevSize": 32, "code": 59842, - "tempChar": "" + "tempChar": "" }, { "order": 1105, @@ -3768,7 +3822,7 @@ "name": "user-online", "prevSize": 32, "code": 59840, - "tempChar": "" + "tempChar": "" }, { "order": 1106, @@ -3776,7 +3830,7 @@ "name": "forums", "prevSize": 32, "code": 59828, - "tempChar": "" + "tempChar": "" }, { "order": 1107, @@ -3784,7 +3838,7 @@ "name": "hashtag", "prevSize": 32, "code": 59825, - "tempChar": "" + "tempChar": "" }, { "order": 1108, @@ -3792,7 +3846,7 @@ "name": "reopen-topic", "prevSize": 32, "code": 59826, - "tempChar": "" + "tempChar": "" }, { "order": 1109, @@ -3800,7 +3854,7 @@ "name": "close-topic", "prevSize": 32, "code": 59827, - "tempChar": "" + "tempChar": "" }, { "order": 1110, @@ -3808,7 +3862,7 @@ "name": "open-in-new-tab", "prevSize": 32, "code": 59823, - "tempChar": "" + "tempChar": "" }, { "order": 1111, @@ -3816,7 +3870,7 @@ "name": "pip", "prevSize": 32, "code": 59822, - "tempChar": "" + "tempChar": "" }, { "order": 1112, @@ -3824,7 +3878,7 @@ "name": "gift", "prevSize": 32, "code": 59821, - "tempChar": "" + "tempChar": "" }, { "order": 1113, @@ -3832,7 +3886,7 @@ "name": "sort", "prevSize": 32, "code": 59820, - "tempChar": "" + "tempChar": "" }, { "order": 1114, @@ -3840,7 +3894,7 @@ "name": "web", "prevSize": 32, "code": 59819, - "tempChar": "" + "tempChar": "" }, { "order": 1115, @@ -3848,7 +3902,7 @@ "name": "transcribe", "prevSize": 32, "code": 59818, - "tempChar": "" + "tempChar": "" }, { "order": 1116, @@ -3856,7 +3910,7 @@ "name": "add-one-badge", "prevSize": 32, "code": 59803, - "tempChar": "" + "tempChar": "" }, { "order": 1117, @@ -3864,7 +3918,7 @@ "name": "double-badge", "prevSize": 32, "code": 59810, - "tempChar": "" + "tempChar": "" }, { "order": 1118, @@ -3872,7 +3926,7 @@ "name": "file-badge", "prevSize": 32, "code": 59811, - "tempChar": "" + "tempChar": "" }, { "order": 1119, @@ -3880,7 +3934,7 @@ "name": "folder-badge", "prevSize": 32, "code": 59812, - "tempChar": "" + "tempChar": "" }, { "order": 1120, @@ -3888,7 +3942,7 @@ "name": "link-badge", "prevSize": 32, "code": 59813, - "tempChar": "" + "tempChar": "" }, { "order": 1121, @@ -3896,7 +3950,7 @@ "name": "premium", "prevSize": 32, "code": 59815, - "tempChar": "" + "tempChar": "" }, { "order": 1122, @@ -3904,7 +3958,7 @@ "name": "heart-outline", "prevSize": 32, "code": 59806, - "tempChar": "" + "tempChar": "" }, { "order": 1123, @@ -3912,7 +3966,7 @@ "name": "heart", "prevSize": 32, "code": 59807, - "tempChar": "" + "tempChar": "" }, { "order": 1124, @@ -3920,7 +3974,7 @@ "name": "word-wrap", "prevSize": 32, "code": 59805, - "tempChar": "" + "tempChar": "" }, { "order": 1125, @@ -3928,7 +3982,7 @@ "name": "webapp", "prevSize": 32, "code": 59795, - "tempChar": "" + "tempChar": "" }, { "order": 1126, @@ -3936,7 +3990,7 @@ "name": "reload", "prevSize": 32, "code": 59796, - "tempChar": "" + "tempChar": "" }, { "order": 1127, @@ -3944,7 +3998,7 @@ "name": "install", "prevSize": 32, "code": 59801, - "tempChar": "" + "tempChar": "" }, { "order": 1128, @@ -3952,7 +4006,7 @@ "name": "favorite-filled", "prevSize": 32, "code": 59800, - "tempChar": "" + "tempChar": "" }, { "order": 1129, @@ -3960,7 +4014,7 @@ "name": "video-outlined", "prevSize": 32, "code": 59799, - "tempChar": "" + "tempChar": "" }, { "order": 1130, @@ -3968,7 +4022,7 @@ "name": "stats", "prevSize": 32, "code": 59798, - "tempChar": "" + "tempChar": "" }, { "order": 1131, @@ -3976,7 +4030,7 @@ "name": "copy-media", "prevSize": 32, "code": 59797, - "tempChar": "" + "tempChar": "" }, { "order": 1132, @@ -3984,7 +4038,7 @@ "name": "sidebar", "prevSize": 32, "code": 59794, - "tempChar": "" + "tempChar": "" }, { "order": 1133, @@ -3992,7 +4046,7 @@ "name": "microphone", "prevSize": 32, "code": 59701, - "tempChar": "" + "tempChar": "" }, { "order": 1134, @@ -4000,7 +4054,7 @@ "name": "microphone-alt", "prevSize": 32, "code": 59707, - "tempChar": "" + "tempChar": "" }, { "order": 1135, @@ -4008,7 +4062,7 @@ "name": "camera-add", "prevSize": 32, "code": 59663, - "tempChar": "" + "tempChar": "" }, { "order": 1136, @@ -4016,7 +4070,7 @@ "name": "camera", "prevSize": 32, "code": 59662, - "tempChar": "" + "tempChar": "" }, { "order": 1137, @@ -4024,7 +4078,7 @@ "name": "video-stop", "prevSize": 32, "code": 59787, - "tempChar": "" + "tempChar": "" }, { "order": 1138, @@ -4032,7 +4086,7 @@ "name": "speaker-muted-story", "prevSize": 32, "code": 59850, - "tempChar": "" + "tempChar": "" }, { "order": 1139, @@ -4040,7 +4094,7 @@ "name": "speaker-story", "prevSize": 32, "code": 59844, - "tempChar": "" + "tempChar": "" }, { "order": 1140, @@ -4048,7 +4102,7 @@ "name": "speaker", "prevSize": 32, "code": 59777, - "tempChar": "" + "tempChar": "" }, { "order": 1141, @@ -4056,7 +4110,7 @@ "name": "speaker-outline", "prevSize": 32, "code": 59778, - "tempChar": "" + "tempChar": "" }, { "order": 1142, @@ -4064,7 +4118,7 @@ "name": "phone-discard-outline", "prevSize": 32, "code": 59779, - "tempChar": "" + "tempChar": "" }, { "order": 1143, @@ -4072,7 +4126,7 @@ "name": "allow-speak", "prevSize": 32, "code": 59780, - "tempChar": "" + "tempChar": "" }, { "order": 1144, @@ -4080,7 +4134,7 @@ "name": "stop-raising-hand", "prevSize": 32, "code": 59781, - "tempChar": "" + "tempChar": "" }, { "order": 1145, @@ -4088,7 +4142,7 @@ "name": "voice-chat", "prevSize": 32, "code": 59783, - "tempChar": "" + "tempChar": "" }, { "order": 1146, @@ -4096,7 +4150,7 @@ "name": "video", "prevSize": 32, "code": 59784, - "tempChar": "" + "tempChar": "" }, { "order": 1147, @@ -4104,7 +4158,7 @@ "name": "noise-suppression", "prevSize": 32, "code": 59785, - "tempChar": "" + "tempChar": "" }, { "order": 1148, @@ -4112,7 +4166,7 @@ "name": "phone-discard", "prevSize": 32, "code": 59786, - "tempChar": "" + "tempChar": "" }, { "order": 1149, @@ -4120,7 +4174,7 @@ "name": "bot-commands-filled", "prevSize": 32, "code": 59775, - "tempChar": "" + "tempChar": "" }, { "order": 1150, @@ -4128,7 +4182,7 @@ "name": "reply-filled", "prevSize": 32, "code": 59776, - "tempChar": "" + "tempChar": "" }, { "order": 1151, @@ -4136,7 +4190,7 @@ "name": "bug", "prevSize": 32, "code": 59774, - "tempChar": "" + "tempChar": "" }, { "order": 1152, @@ -4144,7 +4198,7 @@ "name": "data", "prevSize": 32, "code": 59773, - "tempChar": "" + "tempChar": "" }, { "order": 1153, @@ -4152,7 +4206,7 @@ "name": "darkmode", "prevSize": 32, "code": 59769, - "tempChar": "" + "tempChar": "" }, { "order": 1154, @@ -4160,7 +4214,7 @@ "name": "animations", "prevSize": 32, "code": 59804, - "tempChar": "" + "tempChar": "" }, { "order": 1155, @@ -4168,7 +4222,7 @@ "name": "enter", "prevSize": 32, "code": 59771, - "tempChar": "" + "tempChar": "" }, { "order": 1156, @@ -4176,7 +4230,7 @@ "name": "fontsize", "prevSize": 32, "code": 59772, - "tempChar": "" + "tempChar": "" }, { "order": 1157, @@ -4184,7 +4238,7 @@ "name": "permissions", "prevSize": 32, "code": 59766, - "tempChar": "" + "tempChar": "" }, { "order": 1158, @@ -4192,7 +4246,7 @@ "name": "card", "prevSize": 32, "code": 59767, - "tempChar": "" + "tempChar": "" }, { "order": 1159, @@ -4200,7 +4254,7 @@ "name": "truck", "prevSize": 32, "code": 59768, - "tempChar": "" + "tempChar": "" }, { "order": 1160, @@ -4208,7 +4262,7 @@ "name": "share-filled", "prevSize": 32, "code": 59738, - "tempChar": "" + "tempChar": "" }, { "order": 1161, @@ -4216,7 +4270,7 @@ "name": "bold", "prevSize": 32, "code": 59745, - "tempChar": "" + "tempChar": "" }, { "order": 1162, @@ -4224,7 +4278,7 @@ "name": "bot-command", "prevSize": 32, "code": 59746, - "tempChar": "" + "tempChar": "" }, { "order": 1163, @@ -4232,7 +4286,7 @@ "name": "calendar-filter", "prevSize": 32, "code": 59747, - "tempChar": "" + "tempChar": "" }, { "order": 1164, @@ -4240,7 +4294,7 @@ "name": "arrow-down", "prevSize": 32, "code": 59750, - "tempChar": "" + "tempChar": "" }, { "order": 1165, @@ -4248,7 +4302,7 @@ "name": "email", "prevSize": 32, "code": 59751, - "tempChar": "" + "tempChar": "" }, { "order": 1166, @@ -4256,7 +4310,7 @@ "name": "italic", "prevSize": 32, "code": 59752, - "tempChar": "" + "tempChar": "" }, { "order": 1167, @@ -4264,7 +4318,7 @@ "name": "link", "prevSize": 32, "code": 59753, - "tempChar": "" + "tempChar": "" }, { "order": 1168, @@ -4272,7 +4326,7 @@ "name": "link-broken", "prevSize": 32, "code": 59824, - "tempChar": "" + "tempChar": "" }, { "order": 1169, @@ -4280,7 +4334,7 @@ "name": "mention", "prevSize": 32, "code": 59754, - "tempChar": "" + "tempChar": "" }, { "order": 1170, @@ -4288,7 +4342,7 @@ "name": "monospace", "prevSize": 32, "code": 59755, - "tempChar": "" + "tempChar": "" }, { "order": 1171, @@ -4296,7 +4350,7 @@ "name": "password-off", "prevSize": 32, "code": 59757, - "tempChar": "" + "tempChar": "" }, { "order": 1172, @@ -4304,7 +4358,7 @@ "name": "pin-list", "prevSize": 32, "code": 59758, - "tempChar": "" + "tempChar": "" }, { "order": 1173, @@ -4312,7 +4366,7 @@ "name": "replace", "prevSize": 32, "code": 59760, - "tempChar": "" + "tempChar": "" }, { "order": 1174, @@ -4320,7 +4374,7 @@ "name": "schedule", "prevSize": 32, "code": 59761, - "tempChar": "" + "tempChar": "" }, { "order": 1175, @@ -4328,7 +4382,7 @@ "name": "strikethrough", "prevSize": 32, "code": 59762, - "tempChar": "" + "tempChar": "" }, { "order": 1176, @@ -4336,7 +4390,7 @@ "name": "underlined", "prevSize": 32, "code": 59763, - "tempChar": "" + "tempChar": "" }, { "order": 1177, @@ -4344,7 +4398,7 @@ "name": "zoom-out", "prevSize": 32, "code": 59765, - "tempChar": "" + "tempChar": "" }, { "order": 1178, @@ -4352,7 +4406,7 @@ "name": "zoom-in", "prevSize": 32, "code": 59764, - "tempChar": "" + "tempChar": "" }, { "order": 1179, @@ -4360,7 +4414,7 @@ "name": "spoiler-disable", "prevSize": 32, "code": 59829, - "tempChar": "" + "tempChar": "" }, { "order": 1180, @@ -4368,7 +4422,7 @@ "name": "grouped", "prevSize": 32, "code": 59830, - "tempChar": "" + "tempChar": "" }, { "order": 1181, @@ -4376,7 +4430,7 @@ "name": "grouped-disable", "prevSize": 32, "code": 59831, - "tempChar": "" + "tempChar": "" }, { "order": 1182, @@ -4384,7 +4438,7 @@ "name": "spoiler", "prevSize": 32, "code": 59832, - "tempChar": "" + "tempChar": "" }, { "order": 1183, @@ -4392,7 +4446,7 @@ "name": "select", "prevSize": 32, "code": 59744, - "tempChar": "" + "tempChar": "" }, { "order": 1184, @@ -4400,7 +4454,7 @@ "name": "folder", "prevSize": 32, "code": 59667, - "tempChar": "" + "tempChar": "" }, { "order": 1185, @@ -4408,7 +4462,7 @@ "name": "bots", "prevSize": 32, "code": 59669, - "tempChar": "" + "tempChar": "" }, { "order": 1186, @@ -4416,7 +4470,7 @@ "name": "calendar", "prevSize": 32, "code": 59670, - "tempChar": "" + "tempChar": "" }, { "order": 1187, @@ -4424,7 +4478,7 @@ "name": "cloud-download", "prevSize": 32, "code": 59671, - "tempChar": "" + "tempChar": "" }, { "order": 1188, @@ -4432,7 +4486,7 @@ "name": "colorize", "prevSize": 32, "code": 59672, - "tempChar": "" + "tempChar": "" }, { "order": 1189, @@ -4440,7 +4494,7 @@ "name": "forward", "prevSize": 32, "code": 59687, - "tempChar": "" + "tempChar": "" }, { "order": 1190, @@ -4448,7 +4502,7 @@ "name": "reply", "prevSize": 32, "code": 59719, - "tempChar": "" + "tempChar": "" }, { "order": 1191, @@ -4456,7 +4510,7 @@ "name": "help", "prevSize": 32, "code": 59690, - "tempChar": "" + "tempChar": "" }, { "order": 1192, @@ -4464,7 +4518,7 @@ "name": "info", "prevSize": 32, "code": 59691, - "tempChar": "" + "tempChar": "" }, { "order": 1193, @@ -4472,7 +4526,7 @@ "name": "info-filled", "prevSize": 32, "code": 59675, - "tempChar": "" + "tempChar": "" }, { "order": 1194, @@ -4480,7 +4534,7 @@ "name": "delete-filled", "prevSize": 32, "code": 59676, - "tempChar": "" + "tempChar": "" }, { "order": 1195, @@ -4488,7 +4542,7 @@ "name": "delete", "prevSize": 32, "code": 59677, - "tempChar": "" + "tempChar": "" }, { "order": 1196, @@ -4496,7 +4550,7 @@ "name": "edit", "prevSize": 32, "code": 59683, - "tempChar": "" + "tempChar": "" }, { "order": 1197, @@ -4504,7 +4558,7 @@ "name": "new-chat-filled", "prevSize": 32, "code": 59705, - "tempChar": "" + "tempChar": "" }, { "order": 1198, @@ -4512,7 +4566,7 @@ "name": "send", "prevSize": 32, "code": 59722, - "tempChar": "" + "tempChar": "" }, { "order": 1199, @@ -4520,7 +4574,7 @@ "name": "send-outline", "prevSize": 32, "code": 59723, - "tempChar": "" + "tempChar": "" }, { "order": 1200, @@ -4528,7 +4582,7 @@ "name": "poll", "prevSize": 32, "code": 59704, - "tempChar": "" + "tempChar": "" }, { "order": 1201, @@ -4536,7 +4590,7 @@ "name": "revote", "prevSize": 32, "code": 59706, - "tempChar": "" + "tempChar": "" }, { "order": 1202, @@ -4544,7 +4598,7 @@ "name": "photo", "prevSize": 32, "code": 59712, - "tempChar": "" + "tempChar": "" }, { "order": 1203, @@ -4552,7 +4606,7 @@ "name": "document", "prevSize": 32, "code": 59679, - "tempChar": "" + "tempChar": "" }, { "order": 1204, @@ -4560,7 +4614,7 @@ "name": "logout", "prevSize": 32, "code": 59698, - "tempChar": "" + "tempChar": "" }, { "order": 1205, @@ -4568,7 +4622,7 @@ "name": "saved-messages", "prevSize": 32, "code": 59720, - "tempChar": "" + "tempChar": "" }, { "order": 1206, @@ -4576,7 +4630,7 @@ "name": "settings", "prevSize": 32, "code": 59726, - "tempChar": "" + "tempChar": "" }, { "order": 1207, @@ -4584,7 +4638,7 @@ "name": "phone", "prevSize": 32, "code": 59711, - "tempChar": "" + "tempChar": "" }, { "order": 1208, @@ -4592,7 +4646,7 @@ "name": "attach", "prevSize": 32, "code": 59657, - "tempChar": "" + "tempChar": "" }, { "order": 1209, @@ -4600,7 +4654,7 @@ "name": "copy", "prevSize": 32, "code": 59674, - "tempChar": "" + "tempChar": "" }, { "order": 1210, @@ -4608,7 +4662,7 @@ "name": "channel-filled", "prevSize": 32, "code": 59851, - "tempChar": "" + "tempChar": "" }, { "order": 1211, @@ -4616,7 +4670,7 @@ "name": "channel", "prevSize": 32, "code": 59665, - "tempChar": "" + "tempChar": "" }, { "order": 1212, @@ -4624,7 +4678,7 @@ "name": "group-filled", "prevSize": 32, "code": 59852, - "tempChar": "" + "tempChar": "" }, { "order": 1213, @@ -4632,7 +4686,7 @@ "name": "group", "prevSize": 32, "code": 59689, - "tempChar": "" + "tempChar": "" }, { "order": 1214, @@ -4640,7 +4694,7 @@ "name": "add-user-filled", "prevSize": 32, "code": 59652, - "tempChar": "" + "tempChar": "" }, { "order": 1215, @@ -4648,7 +4702,7 @@ "name": "add-user", "prevSize": 32, "code": 59653, - "tempChar": "" + "tempChar": "" }, { "order": 1216, @@ -4656,7 +4710,7 @@ "name": "delete-user", "prevSize": 32, "code": 59678, - "tempChar": "" + "tempChar": "" }, { "order": 1217, @@ -4664,7 +4718,7 @@ "name": "non-contacts", "prevSize": 32, "code": 59688, - "tempChar": "" + "tempChar": "" }, { "order": 1218, @@ -4672,7 +4726,7 @@ "name": "user", "prevSize": 32, "code": 59737, - "tempChar": "" + "tempChar": "" }, { "order": 1219, @@ -4680,7 +4734,7 @@ "name": "user-filled", "prevSize": 32, "code": 59853, - "tempChar": "" + "tempChar": "" }, { "order": 1220, @@ -4688,7 +4742,7 @@ "name": "active-sessions", "prevSize": 32, "code": 59650, - "tempChar": "" + "tempChar": "" }, { "order": 1221, @@ -4696,7 +4750,7 @@ "name": "admin", "prevSize": 32, "code": 59654, - "tempChar": "" + "tempChar": "" }, { "order": 1222, @@ -4704,7 +4758,7 @@ "name": "previous", "prevSize": 32, "code": 59759, - "tempChar": "" + "tempChar": "" }, { "order": 1223, @@ -4712,7 +4766,7 @@ "name": "next", "prevSize": 32, "code": 59756, - "tempChar": "" + "tempChar": "" }, { "order": 1224, @@ -4720,7 +4774,7 @@ "name": "expand", "prevSize": 32, "code": 59838, - "tempChar": "" + "tempChar": "" }, { "order": 1225, @@ -4728,7 +4782,7 @@ "name": "collapse", "prevSize": 32, "code": 59837, - "tempChar": "" + "tempChar": "" }, { "order": 1226, @@ -4736,7 +4790,7 @@ "name": "download", "prevSize": 32, "code": 59681, - "tempChar": "" + "tempChar": "" }, { "order": 1227, @@ -4744,7 +4798,7 @@ "name": "pinned-message", "prevSize": 32, "code": 59839, - "tempChar": "" + "tempChar": "" }, { "order": 1228, @@ -4752,7 +4806,7 @@ "name": "pin-badge", "prevSize": 32, "code": 59814, - "tempChar": "" + "tempChar": "" }, { "order": 1229, @@ -4760,7 +4814,7 @@ "name": "location", "prevSize": 32, "code": 59696, - "tempChar": "" + "tempChar": "" }, { "order": 1230, @@ -4768,7 +4822,7 @@ "name": "stop", "prevSize": 32, "code": 59730, - "tempChar": "" + "tempChar": "" }, { "order": 1231, @@ -4776,7 +4830,7 @@ "name": "archive-to-main", "prevSize": 32, "code": 59836, - "tempChar": "" + "tempChar": "" }, { "order": 1232, @@ -4784,7 +4838,7 @@ "name": "archive-from-main", "prevSize": 32, "code": 59835, - "tempChar": "" + "tempChar": "" }, { "order": 1233, @@ -4792,7 +4846,7 @@ "name": "archive-filled", "prevSize": 32, "code": 59834, - "tempChar": "" + "tempChar": "" }, { "order": 1234, @@ -4800,7 +4854,7 @@ "name": "archive", "prevSize": 32, "code": 59656, - "tempChar": "" + "tempChar": "" }, { "order": 1235, @@ -4808,7 +4862,7 @@ "name": "unarchive", "prevSize": 32, "code": 59731, - "tempChar": "" + "tempChar": "" }, { "order": 1236, @@ -4816,7 +4870,7 @@ "name": "chats-badge", "prevSize": 32, "code": 59809, - "tempChar": "" + "tempChar": "" }, { "order": 1237, @@ -4824,7 +4878,7 @@ "name": "chat-badge", "prevSize": 32, "code": 59808, - "tempChar": "" + "tempChar": "" }, { "order": 1238, @@ -4832,7 +4886,7 @@ "name": "share-screen", "prevSize": 32, "code": 59770, - "tempChar": "" + "tempChar": "" }, { "order": 1239, @@ -4840,7 +4894,7 @@ "name": "share-screen-outlined", "prevSize": 32, "code": 59782, - "tempChar": "" + "tempChar": "" }, { "order": 1240, @@ -4848,7 +4902,7 @@ "name": "replies", "prevSize": 32, "code": 59833, - "tempChar": "" + "tempChar": "" }, { "order": 1241, @@ -4856,7 +4910,7 @@ "name": "readchats", "prevSize": 32, "code": 59699, - "tempChar": "" + "tempChar": "" }, { "order": 1242, @@ -4864,7 +4918,7 @@ "name": "unread", "prevSize": 32, "code": 59735, - "tempChar": "" + "tempChar": "" }, { "order": 1243, @@ -4872,7 +4926,7 @@ "name": "message", "prevSize": 32, "code": 59700, - "tempChar": "" + "tempChar": "" }, { "order": 1244, @@ -4880,7 +4934,7 @@ "name": "comments", "prevSize": 32, "code": 59748, - "tempChar": "" + "tempChar": "" }, { "order": 1245, @@ -4888,7 +4942,7 @@ "name": "comments-sticker", "prevSize": 32, "code": 59749, - "tempChar": "" + "tempChar": "" }, { "order": 1246, @@ -4896,7 +4950,7 @@ "name": "key", "prevSize": 32, "code": 59802, - "tempChar": "" + "tempChar": "" }, { "order": 1247, @@ -4904,7 +4958,7 @@ "name": "unlock-badge", "prevSize": 32, "code": 59816, - "tempChar": "" + "tempChar": "" }, { "order": 1248, @@ -4912,7 +4966,7 @@ "name": "lock-badge", "prevSize": 32, "code": 59817, - "tempChar": "" + "tempChar": "" }, { "order": 1249, @@ -4920,7 +4974,7 @@ "name": "lock", "prevSize": 32, "code": 59697, - "tempChar": "" + "tempChar": "" }, { "order": 1250, @@ -4928,7 +4982,7 @@ "name": "unlock", "prevSize": 32, "code": 59732, - "tempChar": "" + "tempChar": "" }, { "order": 1251, @@ -4936,7 +4990,7 @@ "name": "mute", "prevSize": 32, "code": 59703, - "tempChar": "" + "tempChar": "" }, { "order": 1252, @@ -4944,7 +4998,7 @@ "name": "unmute", "prevSize": 32, "code": 59733, - "tempChar": "" + "tempChar": "" }, { "order": 1253, @@ -4952,7 +5006,7 @@ "name": "pin", "prevSize": 32, "code": 59713, - "tempChar": "" + "tempChar": "" }, { "order": 1254, @@ -4960,7 +5014,7 @@ "name": "unpin", "prevSize": 32, "code": 59734, - "tempChar": "" + "tempChar": "" }, { "order": 1255, @@ -4968,7 +5022,7 @@ "name": "smallscreen", "prevSize": 32, "code": 59742, - "tempChar": "" + "tempChar": "" }, { "order": 1256, @@ -4976,7 +5030,7 @@ "name": "fullscreen", "prevSize": 32, "code": 59743, - "tempChar": "" + "tempChar": "" }, { "order": 1257, @@ -4984,7 +5038,7 @@ "name": "large-pause", "prevSize": 32, "code": 59694, - "tempChar": "" + "tempChar": "" }, { "order": 1258, @@ -4992,7 +5046,7 @@ "name": "large-play", "prevSize": 32, "code": 59695, - "tempChar": "" + "tempChar": "" }, { "order": 1259, @@ -5000,7 +5054,7 @@ "name": "pause", "prevSize": 32, "code": 59709, - "tempChar": "" + "tempChar": "" }, { "order": 1260, @@ -5008,7 +5062,7 @@ "name": "play", "prevSize": 32, "code": 59715, - "tempChar": "" + "tempChar": "" }, { "order": 1261, @@ -5016,7 +5070,7 @@ "name": "channelviews", "prevSize": 32, "code": 59666, - "tempChar": "" + "tempChar": "" }, { "order": 1262, @@ -5024,7 +5078,7 @@ "name": "message-succeeded", "prevSize": 32, "code": 59648, - "tempChar": "" + "tempChar": "" }, { "order": 1263, @@ -5032,7 +5086,7 @@ "name": "message-read", "prevSize": 32, "code": 59649, - "tempChar": "" + "tempChar": "" }, { "order": 1264, @@ -5040,7 +5094,7 @@ "name": "message-pending", "prevSize": 32, "code": 59724, - "tempChar": "" + "tempChar": "" }, { "order": 1265, @@ -5048,7 +5102,7 @@ "name": "message-failed", "prevSize": 32, "code": 59725, - "tempChar": "" + "tempChar": "" }, { "order": 1266, @@ -5056,7 +5110,7 @@ "name": "favorite", "prevSize": 32, "code": 59710, - "tempChar": "" + "tempChar": "" }, { "order": 1267, @@ -5064,7 +5118,7 @@ "name": "keyboard", "prevSize": 32, "code": 59716, - "tempChar": "" + "tempChar": "" }, { "order": 1268, @@ -5072,7 +5126,7 @@ "name": "delete-left", "prevSize": 32, "code": 59717, - "tempChar": "" + "tempChar": "" }, { "order": 1269, @@ -5080,7 +5134,7 @@ "name": "recent", "prevSize": 32, "code": 59718, - "tempChar": "" + "tempChar": "" }, { "order": 1270, @@ -5088,7 +5142,7 @@ "name": "gifs", "prevSize": 32, "code": 59727, - "tempChar": "" + "tempChar": "" }, { "order": 1271, @@ -5096,7 +5150,7 @@ "name": "stickers", "prevSize": 32, "code": 59739, - "tempChar": "" + "tempChar": "" }, { "order": 1272, @@ -5104,7 +5158,7 @@ "name": "smile", "prevSize": 32, "code": 59728, - "tempChar": "" + "tempChar": "" }, { "order": 1273, @@ -5112,7 +5166,7 @@ "name": "animals", "prevSize": 32, "code": 59655, - "tempChar": "" + "tempChar": "" }, { "order": 1274, @@ -5120,7 +5174,7 @@ "name": "eats", "prevSize": 32, "code": 59682, - "tempChar": "" + "tempChar": "" }, { "order": 1275, @@ -5128,7 +5182,7 @@ "name": "sport", "prevSize": 32, "code": 59729, - "tempChar": "" + "tempChar": "" }, { "order": 1276, @@ -5136,7 +5190,7 @@ "name": "car", "prevSize": 32, "code": 59664, - "tempChar": "" + "tempChar": "" }, { "order": 1277, @@ -5144,7 +5198,7 @@ "name": "lamp", "prevSize": 32, "code": 59692, - "tempChar": "" + "tempChar": "" }, { "order": 1278, @@ -5152,7 +5206,7 @@ "name": "language", "prevSize": 32, "code": 59693, - "tempChar": "" + "tempChar": "" }, { "order": 1279, @@ -5160,7 +5214,7 @@ "name": "flag", "prevSize": 32, "code": 59686, - "tempChar": "" + "tempChar": "" }, { "order": 1280, @@ -5168,7 +5222,7 @@ "name": "more", "prevSize": 32, "code": 59702, - "tempChar": "" + "tempChar": "" }, { "order": 1281, @@ -5176,7 +5230,7 @@ "name": "search", "prevSize": 32, "code": 59721, - "tempChar": "" + "tempChar": "" }, { "order": 1282, @@ -5184,7 +5238,7 @@ "name": "remove", "prevSize": 32, "code": 59740, - "tempChar": "" + "tempChar": "" }, { "order": 1283, @@ -5192,7 +5246,7 @@ "name": "add", "prevSize": 32, "code": 59651, - "tempChar": "" + "tempChar": "" }, { "order": 1284, @@ -5200,7 +5254,7 @@ "name": "check", "prevSize": 32, "code": 59668, - "tempChar": "" + "tempChar": "" }, { "order": 1285, @@ -5208,7 +5262,7 @@ "name": "close", "prevSize": 32, "code": 59673, - "tempChar": "" + "tempChar": "" }, { "order": 1286, @@ -5216,7 +5270,7 @@ "name": "arrow-left", "prevSize": 32, "code": 59661, - "tempChar": "" + "tempChar": "" }, { "order": 1287, @@ -5224,7 +5278,7 @@ "name": "arrow-right", "prevSize": 32, "code": 59708, - "tempChar": "" + "tempChar": "" }, { "order": 1288, @@ -5232,7 +5286,7 @@ "name": "down", "prevSize": 32, "code": 59680, - "tempChar": "" + "tempChar": "" }, { "order": 1289, @@ -5240,7 +5294,7 @@ "name": "up", "prevSize": 32, "code": 59736, - "tempChar": "" + "tempChar": "" }, { "order": 1290, @@ -5248,7 +5302,7 @@ "name": "eye-closed", "prevSize": 32, "code": 59685, - "tempChar": "" + "tempChar": "" }, { "order": 1291, @@ -5256,7 +5310,7 @@ "name": "eye", "prevSize": 32, "code": 59684, - "tempChar": "" + "tempChar": "" }, { "order": 1292, @@ -5264,7 +5318,7 @@ "name": "muted", "prevSize": 32, "code": 59741, - "tempChar": "" + "tempChar": "" }, { "order": 1293, @@ -5272,7 +5326,7 @@ "name": "avatar-archived-chats", "prevSize": 32, "code": 59658, - "tempChar": "" + "tempChar": "" }, { "order": 1294, @@ -5280,7 +5334,7 @@ "name": "avatar-deleted-account", "prevSize": 32, "code": 59659, - "tempChar": "" + "tempChar": "" }, { "order": 1295, @@ -5288,7 +5342,7 @@ "name": "avatar-saved-messages", "prevSize": 32, "code": 59660, - "tempChar": "" + "tempChar": "" }, { "order": 1296, @@ -5296,7 +5350,7 @@ "name": "pinned-chat", "prevSize": 32, "code": 59714, - "tempChar": "" + "tempChar": "" } ], "prevSize": 32, @@ -5347,5 +5401,6 @@ "showGrid": true, "showLiga": false }, - "uid": -1 + "uid": -1, + "time": 1694400511614 } \ No newline at end of file diff --git a/src/styles/icons.scss b/src/styles/icons.scss index b9eb5a702..0386ae6eb 100644 --- a/src/styles/icons.scss +++ b/src/styles/icons.scss @@ -3,8 +3,8 @@ $icons-font: "icons"; @font-face { font-family: $icons-font; - src: url("./icons.woff2?2fc8ce731efb721947ab7acfba88eb91") format("woff2"), -url("./icons.woff?2fc8ce731efb721947ab7acfba88eb91") format("woff"); + src: url("./icons.woff2?2e8e2fec4b27141c4d298083615a0665") format("woff2"), +url("./icons.woff?2e8e2fec4b27141c4d298083615a0665") format("woff"); font-weight: normal; font-style: normal; font-display: block; @@ -52,204 +52,206 @@ $icons-map: ( "arrow-down": "\f10f", "arrow-left": "\f110", "arrow-right": "\f111", - "attach": "\f112", - "avatar-archived-chats": "\f113", - "avatar-deleted-account": "\f114", - "avatar-saved-messages": "\f115", - "bold": "\f116", - "bot-command": "\f117", - "bot-commands-filled": "\f118", - "bots": "\f119", - "bug": "\f11a", - "calendar-filter": "\f11b", - "calendar": "\f11c", - "camera-add": "\f11d", - "camera": "\f11e", - "car": "\f11f", - "card": "\f120", - "channel-filled": "\f121", - "channel": "\f122", - "channelviews": "\f123", - "chat-badge": "\f124", - "chats-badge": "\f125", - "check": "\f126", - "close-circle": "\f127", - "close-topic": "\f128", - "close": "\f129", - "cloud-download": "\f12a", - "collapse": "\f12b", - "colorize": "\f12c", - "comments-sticker": "\f12d", - "comments": "\f12e", - "copy-media": "\f12f", - "copy": "\f130", - "darkmode": "\f131", - "data": "\f132", - "delete-filled": "\f133", - "delete-left": "\f134", - "delete-user": "\f135", - "delete": "\f136", - "document": "\f137", - "double-badge": "\f138", - "down": "\f139", - "download": "\f13a", - "eats": "\f13b", - "edit": "\f13c", - "email": "\f13d", - "enter": "\f13e", - "expand": "\f13f", - "eye-closed-outline": "\f140", - "eye-closed": "\f141", - "eye-outline": "\f142", - "eye": "\f143", - "favorite-filled": "\f144", - "favorite": "\f145", - "file-badge": "\f146", - "flag": "\f147", - "folder-badge": "\f148", - "folder": "\f149", - "fontsize": "\f14a", - "forums": "\f14b", - "forward": "\f14c", - "fullscreen": "\f14d", - "gifs": "\f14e", - "gift": "\f14f", - "group-filled": "\f150", - "group": "\f151", - "grouped-disable": "\f152", - "grouped": "\f153", - "hand-stop": "\f154", - "hashtag": "\f155", - "heart-outline": "\f156", - "heart": "\f157", - "help": "\f158", - "info-filled": "\f159", - "info": "\f15a", - "install": "\f15b", - "italic": "\f15c", - "key": "\f15d", - "keyboard": "\f15e", - "lamp": "\f15f", - "language": "\f160", - "large-pause": "\f161", - "large-play": "\f162", - "link-badge": "\f163", - "link-broken": "\f164", - "link": "\f165", - "location": "\f166", - "lock-badge": "\f167", - "lock": "\f168", - "logout": "\f169", - "loop": "\f16a", - "mention": "\f16b", - "message-failed": "\f16c", - "message-pending": "\f16d", - "message-read": "\f16e", - "message-succeeded": "\f16f", - "message": "\f170", - "microphone-alt": "\f171", - "microphone": "\f172", - "monospace": "\f173", - "more-circle": "\f174", - "more": "\f175", - "mute": "\f176", - "muted": "\f177", - "new-chat-filled": "\f178", - "next": "\f179", - "noise-suppression": "\f17a", - "non-contacts": "\f17b", - "open-in-new-tab": "\f17c", - "password-off": "\f17d", - "pause": "\f17e", - "permissions": "\f17f", - "phone-discard-outline": "\f180", - "phone-discard": "\f181", - "phone": "\f182", - "photo": "\f183", - "pin-badge": "\f184", - "pin-list": "\f185", - "pin": "\f186", - "pinned-chat": "\f187", - "pinned-message": "\f188", - "pip": "\f189", - "play-story": "\f18a", - "play": "\f18b", - "poll": "\f18c", - "premium": "\f18d", - "previous": "\f18e", - "readchats": "\f18f", - "recent": "\f190", - "reload": "\f191", - "remove": "\f192", - "reopen-topic": "\f193", - "replace": "\f194", - "replies": "\f195", - "reply-filled": "\f196", - "reply": "\f197", - "revote": "\f198", - "save-story": "\f199", - "saved-messages": "\f19a", - "schedule": "\f19b", - "search": "\f19c", - "select": "\f19d", - "send-outline": "\f19e", - "send": "\f19f", - "settings-filled": "\f1a0", - "settings": "\f1a1", - "share-filled": "\f1a2", - "share-screen-outlined": "\f1a3", - "share-screen-stop": "\f1a4", - "share-screen": "\f1a5", - "sidebar": "\f1a6", - "skip-next": "\f1a7", - "skip-previous": "\f1a8", - "smallscreen": "\f1a9", - "smile": "\f1aa", - "sort": "\f1ab", - "speaker-muted-story": "\f1ac", - "speaker-outline": "\f1ad", - "speaker-story": "\f1ae", - "speaker": "\f1af", - "spoiler-disable": "\f1b0", - "spoiler": "\f1b1", - "sport": "\f1b2", - "stats": "\f1b3", - "stealth-future": "\f1b4", - "stealth-past": "\f1b5", - "stickers": "\f1b6", - "stop-raising-hand": "\f1b7", - "stop": "\f1b8", - "story-caption": "\f1b9", - "story-expired": "\f1ba", - "story-priority": "\f1bb", - "story-reply": "\f1bc", - "strikethrough": "\f1bd", - "timer": "\f1be", - "transcribe": "\f1bf", - "truck": "\f1c0", - "unarchive": "\f1c1", - "underlined": "\f1c2", - "unlock-badge": "\f1c3", - "unlock": "\f1c4", - "unmute": "\f1c5", - "unpin": "\f1c6", - "unread": "\f1c7", - "up": "\f1c8", - "user-filled": "\f1c9", - "user-online": "\f1ca", - "user": "\f1cb", - "video-outlined": "\f1cc", - "video-stop": "\f1cd", - "video": "\f1ce", - "voice-chat": "\f1cf", - "volume-1": "\f1d0", - "volume-2": "\f1d1", - "volume-3": "\f1d2", - "web": "\f1d3", - "webapp": "\f1d4", - "word-wrap": "\f1d5", - "zoom-in": "\f1d6", - "zoom-out": "\f1d7", + "ask-support": "\f112", + "attach": "\f113", + "avatar-archived-chats": "\f114", + "avatar-deleted-account": "\f115", + "avatar-saved-messages": "\f116", + "bold": "\f117", + "bot-command": "\f118", + "bot-commands-filled": "\f119", + "bots": "\f11a", + "bug": "\f11b", + "calendar-filter": "\f11c", + "calendar": "\f11d", + "camera-add": "\f11e", + "camera": "\f11f", + "car": "\f120", + "card": "\f121", + "channel-filled": "\f122", + "channel": "\f123", + "channelviews": "\f124", + "chat-badge": "\f125", + "chats-badge": "\f126", + "check": "\f127", + "close-circle": "\f128", + "close-topic": "\f129", + "close": "\f12a", + "cloud-download": "\f12b", + "collapse": "\f12c", + "colorize": "\f12d", + "comments-sticker": "\f12e", + "comments": "\f12f", + "copy-media": "\f130", + "copy": "\f131", + "darkmode": "\f132", + "data": "\f133", + "delete-filled": "\f134", + "delete-left": "\f135", + "delete-user": "\f136", + "delete": "\f137", + "document": "\f138", + "double-badge": "\f139", + "down": "\f13a", + "download": "\f13b", + "eats": "\f13c", + "edit": "\f13d", + "email": "\f13e", + "enter": "\f13f", + "expand": "\f140", + "eye-closed-outline": "\f141", + "eye-closed": "\f142", + "eye-outline": "\f143", + "eye": "\f144", + "favorite-filled": "\f145", + "favorite": "\f146", + "file-badge": "\f147", + "flag": "\f148", + "folder-badge": "\f149", + "folder": "\f14a", + "fontsize": "\f14b", + "forums": "\f14c", + "forward": "\f14d", + "fullscreen": "\f14e", + "gifs": "\f14f", + "gift": "\f150", + "group-filled": "\f151", + "group": "\f152", + "grouped-disable": "\f153", + "grouped": "\f154", + "hand-stop": "\f155", + "hashtag": "\f156", + "heart-outline": "\f157", + "heart": "\f158", + "help": "\f159", + "info-filled": "\f15a", + "info": "\f15b", + "install": "\f15c", + "italic": "\f15d", + "key": "\f15e", + "keyboard": "\f15f", + "lamp": "\f160", + "language": "\f161", + "large-pause": "\f162", + "large-play": "\f163", + "link-badge": "\f164", + "link-broken": "\f165", + "link": "\f166", + "location": "\f167", + "lock-badge": "\f168", + "lock": "\f169", + "logout": "\f16a", + "loop": "\f16b", + "mention": "\f16c", + "message-failed": "\f16d", + "message-pending": "\f16e", + "message-read": "\f16f", + "message-succeeded": "\f170", + "message": "\f171", + "microphone-alt": "\f172", + "microphone": "\f173", + "monospace": "\f174", + "more-circle": "\f175", + "more": "\f176", + "mute": "\f177", + "muted": "\f178", + "new-chat-filled": "\f179", + "next": "\f17a", + "noise-suppression": "\f17b", + "non-contacts": "\f17c", + "open-in-new-tab": "\f17d", + "password-off": "\f17e", + "pause": "\f17f", + "permissions": "\f180", + "phone-discard-outline": "\f181", + "phone-discard": "\f182", + "phone": "\f183", + "photo": "\f184", + "pin-badge": "\f185", + "pin-list": "\f186", + "pin": "\f187", + "pinned-chat": "\f188", + "pinned-message": "\f189", + "pip": "\f18a", + "play-story": "\f18b", + "play": "\f18c", + "poll": "\f18d", + "premium": "\f18e", + "previous": "\f18f", + "privacy-policy": "\f190", + "readchats": "\f191", + "recent": "\f192", + "reload": "\f193", + "remove": "\f194", + "reopen-topic": "\f195", + "replace": "\f196", + "replies": "\f197", + "reply-filled": "\f198", + "reply": "\f199", + "revote": "\f19a", + "save-story": "\f19b", + "saved-messages": "\f19c", + "schedule": "\f19d", + "search": "\f19e", + "select": "\f19f", + "send-outline": "\f1a0", + "send": "\f1a1", + "settings-filled": "\f1a2", + "settings": "\f1a3", + "share-filled": "\f1a4", + "share-screen-outlined": "\f1a5", + "share-screen-stop": "\f1a6", + "share-screen": "\f1a7", + "sidebar": "\f1a8", + "skip-next": "\f1a9", + "skip-previous": "\f1aa", + "smallscreen": "\f1ab", + "smile": "\f1ac", + "sort": "\f1ad", + "speaker-muted-story": "\f1ae", + "speaker-outline": "\f1af", + "speaker-story": "\f1b0", + "speaker": "\f1b1", + "spoiler-disable": "\f1b2", + "spoiler": "\f1b3", + "sport": "\f1b4", + "stats": "\f1b5", + "stealth-future": "\f1b6", + "stealth-past": "\f1b7", + "stickers": "\f1b8", + "stop-raising-hand": "\f1b9", + "stop": "\f1ba", + "story-caption": "\f1bb", + "story-expired": "\f1bc", + "story-priority": "\f1bd", + "story-reply": "\f1be", + "strikethrough": "\f1bf", + "timer": "\f1c0", + "transcribe": "\f1c1", + "truck": "\f1c2", + "unarchive": "\f1c3", + "underlined": "\f1c4", + "unlock-badge": "\f1c5", + "unlock": "\f1c6", + "unmute": "\f1c7", + "unpin": "\f1c8", + "unread": "\f1c9", + "up": "\f1ca", + "user-filled": "\f1cb", + "user-online": "\f1cc", + "user": "\f1cd", + "video-outlined": "\f1ce", + "video-stop": "\f1cf", + "video": "\f1d0", + "voice-chat": "\f1d1", + "volume-1": "\f1d2", + "volume-2": "\f1d3", + "volume-3": "\f1d4", + "web": "\f1d5", + "webapp": "\f1d6", + "word-wrap": "\f1d7", + "zoom-in": "\f1d8", + "zoom-out": "\f1d9", ); .icon-active-sessions::before { @@ -303,6 +305,9 @@ $icons-map: ( .icon-arrow-right::before { content: map.get($icons-map, "arrow-right"); } +.icon-ask-support::before { + content: map.get($icons-map, "ask-support"); +} .icon-attach::before { content: map.get($icons-map, "attach"); } @@ -678,6 +683,9 @@ $icons-map: ( .icon-previous::before { content: map.get($icons-map, "previous"); } +.icon-privacy-policy::before { + content: map.get($icons-map, "privacy-policy"); +} .icon-readchats::before { content: map.get($icons-map, "readchats"); } diff --git a/src/styles/icons.woff b/src/styles/icons.woff index c631e38e01c6150c6c2ca047dd642fdce4b77a12..ee339644747aac42f41375f5ddce0d4862dd2507 100644 GIT binary patch delta 26779 zcmV)GK)%21(*c0i0Tg#nMn(Vu00000YXATX00000%g~V&KYx>BZDDW#00D>q00ZIx z01ZGQDcogeYqIJgWG z3a$wK4rW8K`8X0{^WjihY)x!MH1g+9ForY+_u<%>E?655J~5sQe`F+6@V?9>l7%F) zl8x--ASb!VO&;=+kNgy%AcZJQ5sFfb;*_8yr6^4q%2JNQSEtG$ffuG$w^6G^H8MX+cX`(V8~2r5)|*Ku0>!nJ#pt8{O$aPkPatKJ=v@ z{TaYO1~Hf+3}qO@e;L6@MlqT(jAb0-nZQIQF_~1RFqLUcX9hEw#cbvq#cl3zmwVjj0S|e^e`B8TlxIBW1uuEUYu@md zcf98VANj;*zL3UOzVV$O{Nxvr;4h2k|0_{LLh`@6h<3Hb_IWx(jWeB>XxOy#qv=g& zDH?C684NX}p=L7F1k)LdW;WDB)31wWG1MeO&1$IG3^lu<<}lQphMLPza~o3?wU(jQHq<(XTGvqP8ESn)ZD6Pk4K>+N8yRY2 zLrpQ%CWhM7P@5TQb3<)ms4We(m7%sa)Ha6N)==9Se`=K4YiY@b~e;5hT7Fo zyBTVCL+xRxJq@*&q4qY^K8D)YQ2QBbe?uK$r~?gkkf9DX)FFmC)KG^R>Tp9HVW=Yw zb(EowHqRp-wl{8HPI3P-hwHY(t%6 zsB;ZTW~bW2k!#b)TW`H`D`$deBf08R}s} zJz}Uw4fU9z9yinzhI-OaPZ{cILp@`tXASk7f1#c?)C-1s(NHfL>SaT{VyIUQ^_rnx zH`E)3decyE8R~6Ay<@0%4fUR(-Z#_-hWgM@9~tUnLw#bXPYv~%p*}a%7l!)MP+uA9 zYeRiwsBaDRouR%r)DMRG(NI4b>Ssg!VyJ0``qfas8R~aK{b8s-4fU6yMvTZ`yoD5| ze*ge@oV2|OkR<1I9+>}~cUEQPQAgL^UDe&w(>>kQRW*abbk7WKvW zCG#}NTO`lUlCdtGaZPB-!2s&f?WUKZkNk z!v8eO@&8#enZkd(K7h;WEX(pHl@aL=2Rmduo!m_$877Pp!je!%`mEKnX{{trWggP{Jd|aKA-p4WCI_jS>B?LU|BHyyJF9XQf`e}la<8Sblon#kVZ9O?H42jnan?@#uicSn0!B6B#m z4_!W1P-6d(9O#bMm-=LA2X^38KU#I5eUj_?96O~e`H2;2%Z89d@&@d!a48?#6;koY zX0~EADw&GlB>#7j6y_PB3hnBJnjI*8imOlscJ-Fb4K6kC&f+;{XAk}^e<TZA@8w|&$z+^gtt{7rl zu@gqm9yS~jxmUf&Z5+Or2t{f_Nl}-A^7;PvC(Y(Yvzffm^`ep&kdvWUBTdBKY(i)yN{%mGJG~G{1{Z$UwiBCD`>XJ) znc&J+rP~vr!g2`xPcG8)r=Z%g`>N`JkVB=BiA*PG1;giW|@J2ofM<9--;yu&4#Ys}PZnIvn{#Wbs*6&)s2Qv(6uCjbO zX%U!0X`(c_seXvuqae1ySa-@OpG<+PLIIdrZ9K8peiki1Pp`uiZISr^=*B^+xVEMv~y~w6yk1&lb-&uH7ErFm2vV~PXLdXKmmdR z%Wz6%rOG7-g{=U35m0zvd0yms_t^UD5khJ!JB=`ai%^JA&y%hqjb5*z9NYH^u^mZ* zuy(3Rc_Lu)Q;09h%=#ix{$qzq4i10o!U0O3l$ zR0EDQ?r8gp3?}T=YavGw?Jt&z+$Y`gnPc5#14#T zS$CtS>zF_tbExCk`Y!7p>t5?M)+Ot;*6Xb&fHDoC<%K8*-i?%YmgGR2vnHHFhSl#y zL_4jl7zH4>={Vh0`=fK@)b3E78t~c5%~u#s{pTpnZY#>AP)lS0Y3xhJ*}ti;}y9{XT=-I`97&3X%;oC?qJXb&~6z{k7Q~vw)NsguSEF?P=i?>LGOib;L z)9ER-o1WUur^y+>(YvS4kZ+?;f7EiHz|{Lr`b6b2q+;9V+g$gFZTf^dxH zYWSvIFNDF0?cE)D&zNRK6Q(CRHe{eD{#%J1Q(CskoF)M`S|K1NCBKkik#&Z}CCe^wImdI>U&H?u%L3K~Y%7AF#Hj>5JH#WIK+o?@fAL{1 zU4E;^z_&nW5za0_PfZ@ye{^xnPXHR0;wLXcXMm9AmpEH`b`I?Zw9%VAY_h*I!->Dh zZI?gH;p5u;;!hwe{)s<9js_>V=7qO_AUR&o>2LtO*hb)~QXGASN7)|MfB3amtk5g8 zpunKW-&@vM(7qn99)lSNzmVohrX{-6LKr@IHiD6ZPEva<3PQd&f5bK+7=_CSq7WCU zLNuWK&R=2w>e}G|a0dlBN1eFigDwOLqP=#w2A}q*McSiw7!v9WVW)z5g0M>38U@1k zYymR#P&lq5ypne?J3~6XvwdDWQ3i!qxg{I$7Dv6aclNfkJrK9kofS@9&Nu~V3*0yw z<|{iZ-vjz6d_XSSe>d2h;eD56)*0xN15~$=kx10&p~-vt0F{5;_c&cZgQ1hzC1AyL zGW~J4(Q3G5QhKe|^+FPCGgncz4H~1zU+cQzFuXUg?OL}RoYG^rQ$DrR^FjBrT+egk zQ}OFPFC2tBIDFfxqG04+=eAsU(*1t7S96rVi`!Y}J|o z2DYXM+_a)NXCag6bsS`((cRuM2Z13*;WGSzn*jK;z`4f>s3*PK@8L>u+?=PJ1_1%E zQwE?ClhI9*34T8S{y%ifLfq{JfqRz_Wfvr|xQJ8yqL6(`0-wTglquXI&LX%XhF@6! zp19V?x><9+e_n`+5O9p?F6c6--{{GBKxTXTY`&Yp#Do@X)7*eVVD+<|t8u3WumSKP z1Rl&TWf zd|SfYeM`Ap3ohAsm#fT|wU|Fm>l7lVaiNm!71~+?e@#n)zJ@)mpA84fXmouE{k=c# zQ|{N@vUkxdyLBJ5GHwUbm2r<_*Nbip2LUJ02hf4!&RR5|FDypQ`aX~Q3>1f=uI&saM1 zo8}?i*;9}9UcfK?5dBCVR8YQu9sYrSx@A>B>px*ljXu^yF?a$wq*nAth;C-4#9^_o zRn?{ae^%S7*SBhKH(ysiCZrNS2E0_By>*~v~LkMsAYq3%4D8EvwwgJ+PKMaJA%R`aY_aAKwg>(yXfXQX0QyGZ)gCH;V&FzpMu^_F%PVob(!)&|T3)LW zMAwltS9w$_`-u-arA>Wc_AnwL@NdTvB&aqTRiARl#Vcq>3j!ZBQs`}8O3w|kjz`t? zQ|oySo9Y_q$eY5Wmnz|#bvfLILc$r?K7JkwDETfWOOeo!bxDux z0(DOGyw^t7d~RQbSvpwgIlm>*>%i9Q$NHo{qaS&6|Hf28;H>1e6Tw6zrbZ9MER zDmfXV+=n75;;%uWCjs+RSXOiUQEq1D%xDagFrTAxG=a@5w|@o5u_lld8-*=cgUq`6 z(F=~MBv5x4eI-&jxKLJ3e}=Vx2NKphux(i^oqnlVE;qZlDVMUWon@EtesO~be@4O+ zFX+BF#7mV}!u21;U8MexLZ8B!gL1QnPlHV@>!fKXEBXmW8gTbcfg(&7EP)?jPE#B= zC6{F$_6{!BsB4oOc`AlxWYLRI^-?8P-ud&esi4K}MU;w(1E==NlbaMHf3r?n z7pzxVk67=p-fdZHn(g+B!9*m4c%p?G04Vqf)z3i-avZVoR8EIdHwc>8B1IF6)@hU6 zbZLKx_IKb^C|mZB&JKxQno@aBjRvFx)w`0la-OM{wotZICSJxN5Bx6xHzdBzr26{~ za3K&tKMpJP@LQW>YxMHHQE3u0kfU=Nf!G(7RGT%Nzad&B)6(L zzfM4pimZy(%dQ2$0CmRj_wpC;(PjhxUN%}XZeBdvs}(jen{T>Kn?UIi(B$9g3iR{+EL%0M^eBf6VJmG#m}2|jjE3T@)ZhIC%*Z-iVz z+wA-kx$Ox@@^Hg1H99M$RU*oEXu~I0HX-(chbdBp`P0|B3(kIkSvzFTTv4mv+5sq^ayr8MQ#T83{y$o4Cw!NC@<<7Sbt(wf#Yr# z>s*D|9W*V}EB7^Qo-?93ShxxpIxbZzr8vpA7Q0#A>1=m8xmPY{f93L@xK89Z;D6+} zOS@GpvfXK5k*qw!>KO?&Rv*v7I$BTWa6Ox?N9tiU%P&~P{hTlrC{Jb2WUvjCUOF_V z@=Knr?8E~>WrIq3(?>JglZz74v$N6s6y;cwgEnQ0ne7!u4!FQWP^)5*M=w3-8JFXX z+n+D-p!vKH!#2IH8ScpZUa9W)5Mruvs{{qvhl+wa#7yl((od6E7bSnaO<6Aiy;{@3 z!p?!ll(Qn_;*fdl1vH|3;3v_Re8~9=Xg>MCGB)$AI#Ow68AmB#?gzBsep8%IfI-a~ z@z7YFaCIaiSJ%$3t)0IcH*4(?=$xa2Q5$x~3_wx857>tF`(_`j(ufrewziHXVzD>u|W7WP^iXA^54HiH7?4ss30Wf44n){O*7#V-9 z>?`me*FKGnAiq(^{eiY+UBp3w?PC8gt~+D)t=T+334GbC)}fNIy95OhmLTExhZ@;z zYulGrmt-%z>ak&*U_e7luRW?R5V<3N(E|1mA`FgdJv8;=Dn8fuM5Q+`=G%_w4gStLj z=?*#-QtOZ-DefqtIS!!sV75e1zFjXY(*ko=fCuh^jK>=5g+_ycP5Yp;hlNS>c+Wt; zlL+WwV)Ueay$UwwU%UQPlk>4&85gMRX!WPB(TeT&PL%ls{s+<7^rR}o?tM1Pbk7Q`P#Tq}b(4t_eQRDu(n^u{nP{M<(OR+o2mgd)5t<=x(@x-LON-4gflsT|foWDc^DY@b;AO z=po=JXhP&m`%4}2E_}{A<3)!MCOo+Jt;ZjQhaO7o20Ct0{=(8ze~437$e0}F#=3Q6 zz1Dg^&TUx?ya9X*f3(TWe@#z`K|U{-%!(C-_UA>CkOCPPAvJ#(W<$`Lc3TFG01q2X zrn`718yU0W?qGjss3l{0|!p;0m2Xt$EO1yHjgJH zu5Pp$D`yLJYR|I!PIFWw~HzS9Or-Y5_P6YfT z-db=GK`PuarZtD3w#D1v63_wSLT>2cZNe_((n&yti8Zipf&IQ-;ZNFH#nsCI%Y1D| z^X0R^!V`bw;|T)D+$_Qst8y?nME!NkFjvDHy^a-xm9*03SJ-b7Z?DEnO{Tb!`L}M@k*Z9>4wuy>DIbFL&>E=r5Pw2#6KV4X^Aj z_Yf-54;^=x<2=g{m%$crS(XVNNZkKco#tY`xYvI?M+RKLelccd4($PFzVR%Y!PzA} zWjHYZVN7$B^eF4Kp$%F1Idc8fdM6j3yy5Js6%uL_xT!+!xHQ*p=Eo-6jQhS#lpim6 zFR)b`Zhm~pKA2c10V6yOqn0M=eCnshX;1cb?F~h1Z%wU}jnL+V9C3(deq7Uk1t(Wc zMAv^g@C^qqV8d)r#T%OSyQ+GjYP$hoNx!%}&P{m=*j@(#tI$(aW8`-ss z^HY?Cx%0Z`NJg4|sk zy%*$x;s;!MPS18!3D~bK%YLbpd0yB4RvdtTkU5g_!GNRq+1dgv!yJK9u(b{k1GewR zti(O#qF);vOTU~&UWJ#qGxr1dqE*uV3dfu!@~f{t<~i{F_u%#t=f*{f7T8FEKD>W! zY{v%o?Hfm8?R;SrCdBu1_lv_9Q5E_O>PnY@DQ+4q=n%A^L)3y!$U_)un0Q|R@csiE zxWel2^RPXS-XxpvS<-KMqzlylkX}j0m0TQRsYVlI+&BsPx+OimzTQU?(Nx|hxLdF~ zRQ|D&hoHP`m)63>2D|c2%oSl^GZBAx0L-tHMYR+qX^Xg_Z37pu?a(FdGzlEHUTP=Y z^Eho*Lbsbso7-N3MjDy5Js;Ru+4d_+0LKnWDX9a3a?75S8A~G;^7P_u^%WN|1%nTD zn~mE$y~G2M4&1{%jK*h9+CWzv?gDJHHQg^U#5REMIbZn1ge0`eRtg%wRndPOTn_uP zSeD;Y(_uu@(eytjO8qL6YcN$lWhZWuB;_lWD?}xBVt-0YOwg8oRb7A!FUG^~mQ&Dkc!$iFQP4x`kbHS*mE!ZSc2f7g*$M@HK*|SSPNMhg5+8sPr^cWnPv5Bx z|35nA?DWho0KYnfwxCaRYFK~Z2^hbH2Mx;GBBtSxjK7SErpBu8(LR8O3}zI}(v7#w zpe)QLG?D9G+(5U#1DMwbIHNZU5d1^e>CMwu(wp;F(wlz(9y&g*BTueZoBuAT$Q5Xj z*ylz?9&`8LMryOs!F(dEwsmN|!FtMi4*CS0idz(+@s63&+s3et&|`m_piH9?t`QEW zz`x*(UY$W$g4TVEFwt|rg**@VAIO%T5eIm9YKQ3C;a(`F14|~;JtU)T3Ze%(eXtF^ z%*p>D6lZZPk_cfo_dDf$oQpLfo>^}Lz9u3liI9S_8T%pz)&u{DaI*(hNjrz~?6Bv= zl9rhhI<^|F09z|7L4tpW9Uo|Zo!TcUx_O7P1Xm&eY@qKl2NfbprJ%pZIDpkS=B1ni zzYyiRa$UM6$Ug51pD`8tJmg+r+kP3nT~RRM{P1P07>FO)?J-mkN*E*I3>D*v!14Mkty(RulmJ#WI5`Y!D_-3W>SC{6&Eire@J6g2vv%|~U=N>R7<1DK zTssOHtJU9cX2+AfVhx~0Rg0ymsZ z8nsFK1I?_FunK?cG`jdtCn#Yz&5Y1dN_xscp^vTXB^n;Uh@R*>72xK+%Jx_4t1EgQ zv`_MkpKJ@_iuMMtWHv}K+it|wlFuVAV7{k(CMC6b5O5n*c;)>mU8y;)86?)RYaSp8 znWZ$7Ej_j;Z2N>_%okl4AO|F0Q10cG(q`b$lsHm9M?Zhj0T8mZ1`GXwV|MBrt_du~ zG%PJAcHkQQrFuKQz8Nn+(T;$)R=t%i0tLl_Y};3Azpi^6tBZph}VC0#Jyf9_mp+Wx%=*A*GRD zJ@X*O7%_i#@+6R(FCRR^BvqhZ+zZ?g`uko0ts+EOx>SdA$X(F(m8aTB1#CS-?FK8L z)f<=^ee{A>ZK?~jp^gz;fQ!KYe@xKcLkb5S>ZlYI;_kZvvO{%~3xJP=fI0?BtpGZ? zV=8Is(6-N&iJIJjCbd2j_bTEl;2CEglseBUSoI+D(40Mi_~B~0uV zQE7|J)PwAMY?x(KqtP;m|Ewp>;cSuSzI?VwgG&(Q(#MJL4}1gufifH(rKJe;IYQya zUIu^2p{&s@9(I@S#pRvvov-*j&1`s#Al!|jEP}_tZ_eAASY7mhtr%}Xt(^h^Yaex` z!yd*%ZNA)7=~PDmL9wxptQhouO2+Gz2oy+Gs*ZA18pHs&usS^7KgW{ISiyCh=ch7R z9sojhV4lI}3W{l$`P?S*Iyb8dN=xfwm#jBJF}#GAAgoccnug)yJY3<{C8vM@9F#<)sBb!Pw2z+Okd?j{t4;Y7>8h z2X>I3%-kWh>2r$94H5|`FV+{3%YL8ltPpxDbPZWaK5M?tOx!4NKkEQ9aBuUR6-wWY zX!)~gG6Hd0(LljnqZq%wVS2jIKsq@Bblx0trv0UUYDa+-{uItEHANZs~)q91*xo9>O zaJTmYvl&bdbQEc!ZGVn~{>4t}g>Y1HE4R*n1dEwx-fDDPK!7U#+l8Unn)!biD(l}^ z9!SnUNQ`sVUB=tIurTyT3u^<~s}}oOM=Z3+p-~u(UX(AD+5_sbg^%{>5pJGG^U3pa z=E-qYe-nM`K$&vBP(EJM2QQhhIP(F8Nx|nx>f>9{O--qj=Gu%7f#-s*j8UH`yi*-Y zlWMX;m)DWDg^Z^90OP3W05pFljQ&7>JiwLcEQ^!)DwS?1yJv5E2o5d84#RGdABt#xd00)RTewIF$jM^VAJ`Li{@r} z&)srWs#SWb*1#28<9GZrV6C$DjJSQ_)wQ(7a2$mjAEm4aU|m4>nGS#7HyWx?1MJN` z=(PVuy9$kv#)j(G_O$Ds0qmdAUAl(jaz%*&cB$N32I=sOEBL*JH)}MnpD5RK*Dv`! zCcr1|uwG;R;ElX9DOz!iV={#iIiSY#*vz6-`^u`qoz?hM^>vdmv~7$5Y=sBlAf)Kn zJlZvl)}{(o;Fm8{(OrM8dbzq@4XfSq<;#8^yKbEOvz?0Wgd{d!+J(wdn?*C#8P5?6 z&D+v*fQ~~>bh$`6gk@1&uaizyKVAPwxmyiu%MUj@x1n#3a%|(0#&1#{Y|rZlofo#C zE($nGY|jIJVk)4*N`19n&?7)v=*6jZ(RzpVF6)=j>T?2JchP^(83S99H7Ru9MNWq1 zpR_RUp>*FLYR_(%{Qb#rqJ>Hy`gm>xO>sQt<{sVA^KkpYe&PC%sJ?cw9Bau6$Orj3 z#u6501Z1knVG*do6%quQ3oK4}jXXl_zLeKNoZHGv10WGbetkHe~PB`bm90u$bsdcuuNwrGIIrH zEDDJmJo9KCiwwHOX0!QPH%ul;=yE0AC)81=7T2=qeNhJAciWjvRm(Xc;ratiP5_ctPt8S@2!YJG}S*)#; zt){gOI>v3ld-j(t&S|m)Qqjs>RK7n}MNjO5t_@sf3e5{C=JH5M1sYJYKN5Ns8=9aS zW-9kAR@@g4=ceJh7Nd8VuZRD@)Y*yc*tA7=!yA9YiMjsJ7j;{o(@p=~TiW^w52rI6 zU;!Rq!zjq<1nXCry%(|w7l+0mk#g;`S>#JFi3whD-*8!Af!oOZ3a?=KDHV8<^CVWh zpUkGKkywXcmrHd&;K!Z)Gt!(FS7_ohM8%P2taW3YK z+Gc<4Uav%f_1S>)Y`b$8^09}}3+Z9py9@X3#l3yKm-Lb}zQ~{p=_aR=zf}k^(@m@| zTYm+J=oZa?4rfUrW})TKGo#(T44oI|(Vj@WYW7{k#iD?nj;8%LNx*9v^5(ju)0Wh1 z00Vfk?_fMNv2#4TVyC){O)#VyuSs6(+kJl+=~ZB`CxEMNa_PvmO(Cfx){1i*`e=27 z%kMfd*R9HgSyi-VtZBDeEdfmenao&sCg$7}5&3NSSQ~IiK$22YtyJQq3Oj_=n`fEL zZ*JCis-sagrM??<%gp8FxD>cPA-_{uQI6nY$bp2KmEPLM8c^ff#vt!^I{jA7FLQrT z0XU1$ELZkxbN?EwV@+#+Qp;ylvQhfZYNEc@yqVkVY_raEm6EtpDXR3|;y2cMm8P8i zxLSc9U-EH7U%b9`r$JRqKGubg8{H=TbROUjcqr2|6en=MXV!Soj@s9Y1R&-Qu5r+7 zq5qrqtpR4~yN*}MiQ_1ov%c-X7EXUD&S5B7zU-=3LsvL+^Updy-0HlgQgQ;t1v;cl zpEw}Efk`_+BGP7FFw@mAj>m@{Tf44BT9Y)Z(ZeMp)zyvL*4J;lA2-1NF>qhZEm35v zxB?r%ua9Vz{ShHg&t!vTUF$D6v_?ywjo5wH2i4Bj!lrYNslCb7<-S^S|9gMIXd~5` z&5Ni-&pfl}>fIvMkcQ>6>M#3TV%?_S$dfU@VSblFS-7zqW8D^OKwDZ57yzLGh<_z7 z#uvoA80-K64;J}bKui3Jj-x%!Aano@vXyNVYhOaGBHoWtPdKl~A>OZ;XoN3I*S=!b zyvP;U%=Pv& zF5}ZL3;UAk>b2!ivFm@ggJp}r^`C{W5$3bN_|dxzhed!W(zaVOt2I# zC2bQmPw`UdqB?FFZb9-Vhgqo>W&CV=1Wc$VRSnd^soGOh&}1qMhcr5)lP1id zsdb;Gli{dv?bXWMQa&Y+grJe3c88Ac^ALAq+tyx*AObQ2WJZNoh_+(sHIg}D|!RC_g5Qi8F@2y0`^``4aAru!M|3(+*axjCo zpm#q;NLf?enxsXJ1>obs)ady=9k#!30`(0kWYDTmF9;rJlZ^JtK_kTjoF-9YBT7u> zlW;Ixah-o4W!|rct{tZ6qRcDD3w#Vfq9BnDi@XHWi;7d2@Q!~PkXaJ0H))ul%LJ%} z?#kL)l=6GRwLzGga~p6u)v=a%9gsH6);k1-a1JSR9JWHa?XnpSWh5)w{hhU10r>A} z+w$J@J80=dS9GMe-$Cmxb4Rg#=3?fana^%VYwmwLn#<8NnJx4Uw02XlwzfveV-pBb zga9RLD^Z>dR8xl75m@I-GYZxC;_5i6YV|!IjR5!M5X^9G>XFO{H4eOB#dz zP>A*3ppo>_y(o>~GuJoJr(sj$t3A}cv|4-v=d_!NUX9ZA)I2Otr&rN_7AmtWVOIc! zBsG5wW3Jd}9#@eQ=X+TvBQ;WS%X!dtFgkQ&R$z7yo`{@wkeA&{brfZFV$FT&I@T7* z-&e!<>#AwD>{R>1=r}G_c#I8;I3}!Kizw_nP=E8jj{j)_yo38F`nA&?^s@R_LPW}B z=%K`pko!E9N=ZYTYcEV8;`UmnQmw7l$)$fwWi<<3lkfDn-lu>|{+Olc$qTv#yET)7 zEj=-G!Xx;DR;F>gLgLnXC9aWboMKi;blANmmSznBIOwbNdV;mcL6yLG+-maS6ia3% zSBpyLi#8JswOcs6v}tNo1+6d|GpmkMIXX;QI#}5~ua{#kIFVNSR+0;Pt>zPZjO+=c zFJtoo?d1dqy$12CL!}Q@R zdwW-F@6+2a4fgg1M|)Sym$jUS>n7ttS?CnnpG3+2Hq|4H_6joB^#?j@0`LKhiqVAA zU(Wnzl&7^ghGBL@7!^uE+m)3FFiNu9;cL5Pm4|MuA}F}(f0UE5leW@AcM=pB9_3`N zN#vmCmr4gHdub#FyImRwA!uNg_S)gv^KRLNPn4#MH92K{UFYfRnW&%ZgN}#2h3Ed@ z<143DR!*J9&5BV}&_&Lc@^6Z>u=%J&h$Y`7#UZ-S9SV8;w`v&6GQFYpse?LpXNf0f zsa}?UG#}>qe{dT&9n1kjnrP!TKN7)&U5k=z_n8yTWvKhmw^{=fGNMLK0 zn9BIu6)`l+C-Qrqq&5)G_rm?VOxXP0i{mmJvp0P|`mwVQFhX}3)Q4^?PL%bD0wesT z{>@{*sB;Uv@68NTnLGn+IK=?&T>r$y+(oa#qBLC<69Hf6vl*dj|`a>mvTA@AT55Vri=Rd+cWC75zws=l~L~S5%;FyUP z`NtQ4-Z-ukQedQ*_24ZTV6_qys4=+Xd&?C4dnqIJ|4H)_Yr!*7KSRqW=%tf+3X5rB z6f+rQe^5P1XDOBs+7>&KJApg0^CUW0SC+9v;0M0%xZe*=X7rpX2y%IVjnu=TR{Pj0|`-!w_6 zK4U8}SzcQ+_L5yalV-*Nke$XlVcIynK5^94B=uQJBDJLZ|Jp+JfA`FEaa!*XFY=z5 z2Z*cL4aY4DYjYcheS^IjM){2O*TwqsG5tPW+E<2&XdULo*^IrH1HeTs6MvOSrE}XAZn~4H$}wRlm6#T6pb2e%nqxLj5Q_aI zdrm?R@YXu0J%I~^CDG~fCG@83C#}vENl9(E{_5JNZN=SyFqTphKHx@s5eWpYB056t zw8yn10)P=*Uk2u)k91lx$xuqDoDJZb%0n^ zucY>n`xGwQnTcr)X9n%ufY@S2cu&P?yJ4H0Kj8P2Sk$l2aLl>PKQ{8 zeh{uSIj_K#0jkFZ{e98;3jChI^&rblgr!#7e}}X0LbvK$E*d}UUxc=OmqyjMTm(YI zTyKRP_ayPG2eqXf`LSLvC^E33e`~;AR$%D^x>qC(o|w#?d**0n6VoYL(OJYi2em)? zIDkHw1VH_oc_dufTm%wSeoSI5l?oluTBt3Uq!N^tNOFguUnqcritj2Pcs3{nu?y#w zuszUcTTaPaOG`R=a1aYA1E&*q#A@`T?*UnuoR(b=`_CRWY)td?qe1L6&hICTvKP?3BDu?kCSg+c6`91;a7vh<9!SJA zLIB!)vPij2lv(kMBJYK+e;Wik6O|u%-CC8Q8zqpXCwbKmu$x|}t+fTw32zgShaqS# zE*iFymRT)?j)QVh8qVWYD%$>Vv(9;O%=9okZl3F_zKN<K_IlNdS;1O;2qvy&-0H(EI8AH9ejAqHvmGo=($WJQm>SBZDB@kfPv z23w1sBV-l$WDOIrkR$@6@NAT&rJAsxiLw`cn1k|@Qao!5og4mt1TZEsf6+YO%DVOE zRtr$~Y2-)ffPpzmle#({e;$8)%_Cmm*4<1gy0%7@%0MBhG8R&sW&G!uVj*MIHsx<} z1Fz+F^StY};0|KPJW^Y>eFC)DSY7f{0MQ}HLIBb=K)WFvrodGev3XeUx^)J$tq0KC zSBu;6u&)y1x2cz(v`OGQZ4}H?Syq{iUYNNo%Mbw8qmTC0zy0-ume3G-4;lh!*Be>q#Mb!mr-E+|~fv6YdPf#g10WWZTol^A0B{E<$g|II?( z7i$T7=w!P2*g6%Yy|ORWK3NCyY^$nE1$U~l>cMvhl>FJ+Ln-?O)NF2h0@Rh!NhMxG z-mJvON3N25e*|{9O>{T;8?qvPH~k;?GQN{qbIU)+XeKy^!Q)Uiw^HW z*7f@^^)W4G6w|;R;*%XcBY$1G$R#ZDu+(dQp9$j7W{I7L!VSrqzCHj@9oB6MGF);M z`_IgLdLQP{Lm)(eI3pYM)sO>BTI29TGB-He#p9JdR6;72yRRchx6e%GoqY|ppP}EWSD%U=} zGoO#ISRI`?T5CO+RDZDubl#aEV`M}+_eiLdm7zbZiGLW#e?)29W^Pq9n8Q}qjTL5d zg|S)#^q-210kf9lDfI=AKpP4Z^5+C@$z-?!6Mtm`7rtz^u>!Z(8L8SLZv#DuaLP(0 zrYJPNg*m$o=EmF`JSf&QpTMiQ!Jl8`sl#}~ZP4)UvA)-OzxAW$jT_qXY+^elXd>Fp zyhUb5=P-f|U4Lt3itpsm^Y=gpf)punP4>%7Yk~@~Hif~(Ik3&p){cI*a3i!j-!1$& zi{zbCXvqmusL1IpPfGIp)jc ziV^rZTaxuqx~}%i1$cDM#uN)Sk-oybcJe%Do+|?)y-+xm?173!fe$mF4WK5ww6VR> zE`uoX1K6a4z0-Tc)TCZ1H#TINstub}g8PFCTLBJ#Kdv28hs|`#|4ag0Bdjc~5x(jZ zoPUD5E`M>J2Ce>SCglGm#j=lJ1eA9Yr2ZX64$S2^(j}uiO8cQ&b~MSC4~9DTWO1+@ zYWmq1jd@5EARL$>uF&JxW7>}y#7<>i7;dc13S)389J~*?^7{n{AL9(ZFVvvm)qvA2 zYeAPa?Tez!O4xz^Lrb`czR_>hIn+rHwZL!D!ha<=#3hj*KaB=bVl&@9zz9crtDD*x zunWm9+W7V-7}q*ew=jIc%Sh4^!9??CrCDI4ncDwaB+VV!bd-*O7 zB7ZLY?3&!(BRmUi=^Rj0VZ~5pp)J<|0a_@f*N0}w{eWmEFw7J<3n-b6K{?C%=`0=I z7Z6hb61WT0Io?Gy0dg<@5rXveI^l}fK^HO#^S3cTWyB(H56qHbyh@d;w&wyaU`G4qd^Sb*M3v^HAec$ z-j^^LFwD@yur$Zz8T^;}KKvzhYSI3wogfx@R5M zW$W+gJb~Aw>izPZXGrnM;(5fh>$tz#;2UP%TjHEIc27He6=ScWLcEes+5;m%HY1>e zCn^5!EH66p**)mj+pQ<9w_YEyj|;SkiECeExsl~+Dm`y zNhS!sc*D~aldr$57cgI?w{IhDT&nk^=pYB}Mk#T*qxngPJD)!~y0TRG(|EPuHgFZ+ zZ?(Af+|kk1SwY;Uq=O90YZTG*Nz`-=@9F~II(lij?6GUCtM989Q7yG2%UZ}M%o=@Q z9a`_PegLr#C=G0ID1e6>BY84Q3;}<-r_y@(Q0Hn!$A9Ap4qQy-%Dl=!`xzAI#N?UD zFu90E+9uzdxv2A8AfB=Tic zZZQz|<9nWVq%R#+aspSw5Ie^A2uKeU642Lx2;5|~Ve9A`x4%_$9U*1ddyaola#k?g z=4UaZ2*B}}ofyQZosj@zbP#6PtytIq@oPbBi+H#7DZuHT6U2F=nhGv}W5#JWpu%-R z0w`aiGgPglF;3bkQ()TmWI^wt^*4GQXkYt@8%cCv^491Vc1>U^{Uk^*_5|loFpzCW zO=vJ^?Kj`d{{vQsJ<2`)-Kc+f@(sF;*)jyX^{#nNsXF0+FD_!1Hq=ni4;n)YawBub zBRGQH{c(}~2Gf1y+Ny=)lj^X>CK*mY2*O8RGU>zkJwArBVFC_9w%cVX0dFz4+1@7v zUDIJO_{m1qWt$g-diXw^zVbfQ^FZ3%1=HDqx~h!TLx60c7H8vDm$!ce3`B!d~IOMI)z?16=VjjW&});rKxbKy7pB!k8@u75CZNiz;w{_ z1I?wO_n{Il(+oHtFz-opNH~JgYNLNaM%J0f%6LPQw316`F}zfmSxdM+vj!#C_>*}5 z5$A2pJ(VwEc3jiIy5E0qJz+hkJvXIJ6M$+;exUQMsBebiO+udQP<-~C!T5h1t}x!H z6XKK;$4SbLP6P7I@cT6g9w@?N-w}jA{7|LLSa}Ud)5awFcHorW|LsC}?!r%h`xyTJ zSzd3dSShYDF0wZ3=!N0fy!OiA6vNEFgmWbfthlk(i>+-TXSWLNvuEJ8?@B%cYuT)guQ;~8Zk_VWUH6e4Ck z+@HMJNcP&wELE;HZEG2LxYlkI;(te|ts)ufDTY`?6*9gwy18&dL3>SsVR~oLOBsar zHZYkJh1@yC_`QF^p6BAmyhgp_5*!71i;l8so}qIe`oGY_(k$V6>7cq^CHZ=_nV-kp zz31bw+I?}Bz@3zuZ_zI;An|!j)q6f~VwmLdyuvkWL;oVhM4-4veaypsmR-*Hu1*It z7AlSHX_;_0kbi`$3x6a7=*}|rov=hP7Fpa%OaJ03A)fOpg;6_CGSBy5 z3*1w^%JInMI|*^&z{dA_-ucEtRseIueCn9p02p|JA=c=hTP&5zZUrdpM;QANpq2`8 z<$saz0aSndpn&P=+u}jcgWknL_AY8K+J^6hyJCF=+O~@c)OU@JkNIzgyXeK%52;Eq zI173n&QMIkVJ;UbQFcvaE?zY6J3{fliw;qv1BzEQ*3W?sAf9wYC>l=hWz}FLW(m4*!p}(KBK4JYjt}Nwyv)9Q^F%(koC1{mw znp}S!#k*&FJ7o42+QK6ey?eQ~$A$PPZqD&BX zY0!l~IWnmXK;^;}mi>WFe`J0{Eyb1ocm$0^ryuS*iQr0dTEh2SvT_--`@#YGYl{R} zG5QrEp?y2WahaN^z?G^Vin5?oWTC1k=>~tG!mkvUY9Tk5qFQk!oV#`ax1czAG8iAg zZXn|HuQGI!VEC3E-hh)J2qY9iL&7zsxmYgEg)U9itaJ^~qCm7*111vr5wBFKLT#I= zMnf;kn@eE;mufCvp?2f>C4Un`!}$#F=?r_u`v5I!((H@}KsP`4-+=c}*ICgX%X5EA z8*%Mod2_44e1lQ#X1s^co}v5y?;3O0rX!+)l=%;s_BPdk=R7 z_Rfcw;r{M$DS2Twn&f{nS^z!coTF13&fg)R5fNtI$Vcd#t6x0YB3DC& z?|G#{mMXQIpCUyHOFMI4Bu>di-|v@je34Qu3+H9Betvza5*t!A~T5 z>N3}7XUS7eW4-G5c8Kn|EuYzu2U-=!HExbc9DqBhz^?5?4s(bd`Xq~?2jPGG3AN<6 z+99sBW!~vsS?x4&GrP#( z`G1AzK?|*-De~IBJy`fvgZME9o!i4@}VL-FS4^+*iV1%?tZRJ(Pg)b5 z`Q#OFmBNXpgHBLM_5SDUaENi}@GGD6AOo>qEW|E;$ z*`|8easprgwDYXO|C)$CMv_q=+8Q^Rp4i4`02sQ_bCC-QlRAG1Pl<$TD&W0zTk3R= zd8YN&oS_<*<%ol``Mf75N!h}vfZMD~+S~0$?{gpC;Oww?+u~djnS214n^GHo=QOXq zVE?5AB~&?%qhHt?gn`cmh!`$v?RHIY;qvZa(50vGwU3f-b-X>caet&fR$~B7aZG0q>E2h`xXNi9!oYDtN4(2wL+vdqF^E2CW zLZ6t&afhIDZ|cYj(%cHq%?@_0O^Mq}6(P5-}f=kyeIehGS}_0i< z$l>Wc25#{x(g@%1zL*cdwH8TKmI5@c*-_W+Om9#)B*)L>vcG^#qX|@LVx$vV-k%>i zQUdIyx}^@)TpTEZ*)sHOz$-LKnNF-R=C=AUW4M11g=rJvAEp}takQ(CU_L6_QECGF zp0Xb`Q6ziPu|wOLf)?rqjw|#kr2P>xKZuF%Y%#{LeY!PnjS0Sr6nS}Fo84MVdARH~|`dV{S_h>bCi@@YM({u4I<+GI3g*mPc6`tqXK8 zRQWtz&A_DIn(XDM`AnCVDDP?s+3tU&L{eU-q!g?uRt{TXnaO4t5sLmtq|)l_a!PAN z@;xp|4Tyh_+f4Q2Uc9`J*^U{lcnw;YqE2Z#j3j2Y5+oX?aJNu3R`X86DDl(yYOB-S zfgxk{`fymtfifxScN830)>?nbnXZ_Jn9XWpl7~%=+1r5X!YOH%j0TGm{@Z_*2K27) z{5A~xKLGuhvVDLsEB7&F15;7AqWAw6`;80eErpxBQTaTgzt7wF8r3_vQf$mv;~}_F z^4qY~+FhJCw%9Xf?#^(aAQ?!mBh0H`!PuPHLM1Ncqkp@-qWjMXcT|bfVHQQ_INr^k*Icc60i>{)?x5bt@Y|=wY5{O)CBQF zUTcnS9yRmLTG!@PB@_@R1=LT&JW_7C1(bEdi5RF3AQ+_$l*kz7^mKYSGA$~qVVQ*b z#bt_SaL$*z9r%I%nbRfi3m)w@TBBxj)M{+E#ZO8uGT@;YsDf$RUFCl{m@f@{TIBz=8m8l(8qe8Fsbl=^tGnW@Z9H7?KXmf>dF&M~Cw_|^^O>cN*{C&7 zm6IxVOjd90-8^blH|ixfWK=<~==KY$9WqV(+eGBix8DB0{mSiJ*sC+p4$m3SEbS(x z5gxv81NHX)bUCHr{5^j_I&gid*@9z?72jDdh`E5T`@9N6Ed6DG*O zU!)j39|iTTvh&yT+=5C>gG7lD>^na#*qKJL9$qDzIv(_det*^5O>O5U{W(}*I&0e^ zStkwqvgXv=J)tY`x^;TC1z5@_^ObZxd?8_N23p#5)X}IOwT&>(CfqQY_}gpNd<3 zd}hC0eyZB7!slE*C}87j>CW9H}VltqryiP)7-q0f5_ft?aul==54Dt_7Ayi++d6G5=3a<{xjB{ zfG;nbZ1*bF*(7w5xPf_-!>*PKfbyV9`L0eUu}yNBCfdlmkN8<5&Kwut4=_)Oy5{2Y z(NUz|5x`R*8jyOxP8k}w0aBGXr;^zKs7@+Q--@qc*dKpyBT@vQCOpi*eHJeK3%u~= zH_=5I!fAktOvr;0zLkwI5h;mpjuS4ZEyU&04p>Gor9JR4N_>JZk%kUnUI3Em?BdGp zi(RYm^RWIcY3tZQ%w~S1HTJ?^=l^f*+F~TB%5a@Jr|Q)Ge(jmQ%=C8m&g^XW&h+&3 zuB^+hAjE%V0nwmn2#7(2@sh=$@Sr40BtSxtF!7kx2?gaqT0i98s6HJX?hANIxQ zBTAw{AN>Dws%olt2R0aY(=}D6tGZ5I&iU`(hc-nGM~~~1BQOfMK@CF3c%LIE^a1P$ zPje{>!p0&l>yaF@OYw#!BF+_qp~z_jSH-W0B@=(klT75E$qcm8rCg^jr~@V#M6B5F zY2$;P0Bf-jJ{pu6LmgNaMhk*~+3J6qBRNYnq(mWL?HO!NIBm|?^;A$YT&f$pm?mro zI|pN}w_j4-*NI)43`{ul(C*vt^DLN!R7F550cr)K{$I*aIRHE5KCob)RKBfzPx+zp zGv$AE>2Hm^f1(~jFJ=E*{Q!TR%Ezvqj7{Q?_ zLcJ5Vwaj84409W6`QhX~`p{J`H4Jn~R}I=w$2&TZADVSlp>nNT;k|X#<|QI_J|}_$`LkB1k6P$IG4E!GLHdGcAWlqVeiRej2UJk z2UO&LX89}GR^KPlU<@+RKvSY~W*C2_<5>v?x`wF;=RkAx;PMO;L6p^V%m9m&Bgdmk zbQ>&A%VQ>pV#lE7%M9^_yDr;v{>6c5fkxC zF#cA4=1xruLveP`)A*-XJMd*U3o%*6B2fV%SDm2^FoRi(He5mf#tfUKlze|eHZE)Q zjEW2%>@U3`ffu>Df<<1~YWfitx+s%4VUqP^E$!-<`nYELBy=Bcw_{3Q{l$y0lN*>x zmsFq`L}YmxZbVkT;ac6^=(BxgP2hGaahlb0V57aF@(R7n_zlFk_&Nxk4Zi--X2+tY z4yKhW^w7?9-LfpupNj1>xF~-R9D;$>#bAZRKFz@DGvUUMVxd-jV7EtoFxj`N{b3R6 z+LYN2n2$D_BCJH!-wow2N&<8HuJpqm;kAo7K?1f5AcPu*L_P)KWBpx&x_-$~al)O0 zILl5yx<`q+kG{_JkBNKt@pUj6uGJvwy&f2QrY2F;Z{5>0eIH$=U0Hu#+NJ0tu6*js zJD^RKFqQ<8&2qR9ncH*04__@86NDhCF@2Yy&kh&!G_M=p8NFtEq>~QPE9oFBcZ#zw zNUurm3>@>7k=*#ro^QQ~9xVLa+VA%dr2#v3oU2zWu(PHv3w6;k%=WiQEEkL|9~CFy zP`nW|uJKR{Fr&RC#sYtZE(c@&p{sVnQh&@D%NL53Fv}!zUkuh2o zDTz5mRq`pF}wp(?@%O*uDA)}L=p#f zYaYQ^Z8Hq^1;xP;*YZHrS?=A4_JBj9s!~|y6?^*}C6@~07RIr@0`S1N@%swNft>8c zVJ`wPNJCrZHOO@IRB*g`F ziBx{?UYUR9i*PV<)`0Ly-9rb={M2@LiBji+rYmsnUd(T=mzD|>sTDMNMGmX^MoB`=~zmA8vChMrefNd5I zkx5_CbjZ1*_IsWpxtxz%sN;fzd4-xoWN@87V%~pnqsNc zWDK@!x6Sa48IBbZM@6K|_3y_0DC&=K@%2vpi@0Nk<><4cGBjVUnql!37^g!!a>CGw z?3RB&bEe#)+$ng6&~Km%aAQy=b&j4egf`DG7E!w$(u9vE5;`kwlTEc?w3?u^h#h;b zO8a|pXsE8cQ}z(+&`h%0;^vmaz|wAVgU;79Q!fNr*3UA8sOcvopQ<5+0qhmbv3PB( zX9;M3h|+bT!IWtTt-ggv!wg&FhDu&p$#{SEo+$Vg80%8p*cQL+Qxe~(6Cru*bYtU- zR#<$f2rX)x&za5xlWyvno%p$U&GORj4IHs=IEF1*Vx8c;XZiMtwTdgYH9m;4ubfvN z5n6!EB@xv%GFM?nZsdMydH?rt*61Te60fBKdZ})Z3UXX6?mwcFDR|_05igpT{=oo+n1LG@nb zuoV%rvROU5b&=EAS5Avusap0C$*F+<(PsxU?&QolGRb)=OT+|-`vh&_Zsn|FvjTy6s zKP~qLIy=pXp*^h|V5>OzU15OuK*Bzy;jdBN7G5D`*&^&ZSk~UR`YKi*@Dd&`!YJV5 zA5S7CnN#rudDC%xW^h-FF*I@a*KA8%0J}$bjbe2-w?2}K)F-BWkm-ZHy61o5R_oRM z-m3g(A5ks~)`)f$J=a?s!<7PiE;bf|Vd*-AkBXgXCdp_s`RuwPIE*={RqD{2G9+~< z|7d%f00*AhE{G>T?e)^vaY5E&a}?@^xr5j+rDLchDeSaaRpeI9zPk<5PJ<`3KA( zLs45?K{QR$$-4tL?Fx%QU}Pdvlf`C;)HLHqNKMaBP2zmNVFjuuQq zW>e-*CLXQrFtgSF2mT*dkPG+`QDS$nS0yD3cQ@bfg(Z}_zK=dT8bnb*8T+3vwL~D1 z&GFDvO-&8Ar`v&ejoe1=A|vfgF^*QPe6WP6Sjs4ukvp(I89!?*;cpNf4?VV3v_EFrXtT zYNk`LX@cNc8}^TW>>EKy)GnHC(75IMDh=W`j-$jUx=Ci^aaoPWqdGM*UFN@)0%vL^ z|E9{y>YJ!p3^4*jJ4~qbT&F`& z_Nr{TN2{bc_}IS9Oiow^Z)vI;ChH74OK?=3f*w*q5?%vnZT)t1^;+z>0?0;pkJpL${Y)!+MpqoxS8%QSN&w zBpV0Ijq<28rQjOIfRBzNj%Hln@12|XJ8uPjZqiLdoNF#Ub?@1^-3qxx`7gJ>ye9wv z0C=2ZU}Rum0AlNd7P6CxU>{p3atob!oMT{QU|`f?00PE2|AByUHUlFAD!2szdp8C@ z0001ZoMT{MU|`e%;s5_3G%^N>VG}166JZ8FrFKwgKPCR2LxvqnwDj*N24hnyn}LJ z57-ba5P%S_5iSvU5x^1h5>OJ-6J8Vo6nqrK6(|*+76cZa7eW_c7oHd-7*ZIF7|IzE z8QdB&8nzn(8$=tX92^{Q9Nrx=9nKy!9+DpNAC@3|AkKdwVjn8nlSb;dNI~AFfx=gEHk(?4m3zKiZxs{bT!&G zG&WW?;x~UdH-0zHH|jVjIK(-2Ii@-YI%GRCJ8C=3JOn&QJd8ZHJ#Id3KAt}OKYTy* zKqx>uKukccK@dSkLC8W(LhM6WL`p??Mes&SM(9UeN3cjrNQg-sNvuk=OIS;?ObSd` zOrlK$O+HPePA*PTDh7x%;c@c=v!55j}-5IhtQ!^80i zJQ9z>C3rL*gU8}=cswq}6YxY_h9}|4cnY41r{U>%2A+v$;n{c&o{Q(<`FH_dh!^3- zV3>oWguntztRV3ctf5dr!+)U0OJU*Q(O`ouPGN`Bco|-fSKyVn9IwKw@fuu#EAd*q z4zI@>@J74|SK(@0gE!+Xcq`t9x8ognC*Fm3<2|?*@5TG@etZBQ#C7-(K8%mxqxcv; zj!)o|_!K^k&)~E896paP;EVVYzKpNntN0qej&I`t+cdnX|}rH(sCv8vyu)fvGC&-TDe>icI(15 zb#1I4GVd8*9kC7b%og3QWx-d>y9+vLDU|ReWSpBu`+l)wVP!=wVN2nXxl!eKZhXN_ zRWV(jJO{hZFk0l@VBRceoGGD87G36r&3c}5Rtd`r^4ze61AoqJLQgp*rL-2R+iTR( zNjGn#*t$F@-bQ5{ZD?`ISAwr6Tp1@iKaE@BO)YsE@s!4+1zcAlzjC~1^@uok zdUuj(C4ad!^(u55rhI;u?pH<|S2Hfgm9c$ZCjlo_<3$>Va;C*LmUHhUEl&AEZKM;i z3D~x!O|+p7LgA!N=VpdHFIujEG5)pkw%A&Yhf$dcEh7qI|^bb(>_QC z=SkDZ!syL@OwDM|nqpBkno^TUNUUQ`JwE5&Z?Vxa$N^6` z6bW-CZh1?CNoj=n#z-z=!e<+!sO=XQ_TZu(Ts+u{`H&t~*ZZ*ux0cnT(}w;UNDZCE OnNHZ-`yY3!jpqPBt%6q00Y|q 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 SbrvO^u(R_&?QMb40001;5=JTj diff --git a/src/styles/icons.woff2 b/src/styles/icons.woff2 index 94da0a4e704877796073173810e52454a47e2064..76cbad0bffedb62184cb1d89adb43e9bd5629937 100644 GIT binary patch literal 22976 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 H_y+(0OTV~a literal 22764 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 { export interface ApiPrivacySettings { visibility: PrivacyVisibility; + isUnspecified?: boolean; allowUserIds: string[]; allowChatIds: string[]; blockUserIds: string[]; blockChatIds: string[]; } -export interface InputPrivacyContact { - id: string; - accessHash?: string; -} - -export interface InputPrivacyRules { +export interface ApiInputPrivacyRules { visibility: PrivacyVisibility; - allowedUsers?: InputPrivacyContact[]; - allowedChats?: InputPrivacyContact[]; - blockedUsers?: InputPrivacyContact[]; - blockedChats?: InputPrivacyContact[]; + isUnspecified?: boolean; + allowedUsers?: ApiUser[]; + allowedChats?: ApiChat[]; + blockedUsers?: ApiUser[]; + blockedChats?: ApiChat[]; } export type IAnchorPosition = { @@ -173,8 +171,10 @@ export enum SettingsScreens { GeneralChatBackgroundColor, Privacy, PrivacyPhoneNumber, + PrivacyAddByPhone, PrivacyLastSeen, PrivacyProfilePhoto, + PrivacyBio, PrivacyPhoneCall, PrivacyPhoneP2P, PrivacyForwarding, @@ -186,6 +186,8 @@ export enum SettingsScreens { PrivacyLastSeenDeniedContacts, PrivacyProfilePhotoAllowedContacts, PrivacyProfilePhotoDeniedContacts, + PrivacyBioAllowedContacts, + PrivacyBioDeniedContacts, PrivacyPhoneCallAllowedContacts, PrivacyPhoneCallDeniedContacts, PrivacyPhoneP2PAllowedContacts, @@ -354,10 +356,9 @@ export type ProfileTabType = ( 'members' | 'commonChats' | 'media' | 'documents' | 'links' | 'audio' | 'voice' | 'stories' | 'storiesArchive' ); export type SharedMediaType = 'media' | 'documents' | 'links' | 'audio' | 'voice'; -export type ApiPrivacyKey = 'phoneNumber' | 'lastSeen' | 'profilePhoto' | 'voiceMessages' | -'forwards' | 'chatInvite' | 'phoneCall' | 'phoneP2P'; -export type PrivacyVisibility = 'everybody' | 'contacts' | 'closeFriends' | 'selectedContacts' | 'nonContacts' | -'nobody'; +export type ApiPrivacyKey = 'phoneNumber' | 'addByPhone' | 'lastSeen' | 'profilePhoto' | 'voiceMessages' | +'forwards' | 'chatInvite' | 'phoneCall' | 'phoneP2P' | 'bio'; +export type PrivacyVisibility = 'everybody' | 'contacts' | 'closeFriends' | 'nonContacts' | 'nobody'; export enum ProfileState { Profile,